summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiep Kroonenberg <siepo@cybercomm.nl>2024-02-15 21:14:42 +0000
committerSiep Kroonenberg <siepo@cybercomm.nl>2024-02-15 21:14:42 +0000
commit2ef219d80efde1bb5ab11cbdd8bdd059556b1f89 (patch)
tree95a8cb845703f263101ea7a0842bb75d93109bef
parent40aaa4ec3407e1ab404f4d1b0547205ac561269a (diff)
Perl 5.38.2
git-svn-id: svn://tug.org/texlive/trunk@69898 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/tlpkg/tlperl/README.TEXLIVE8
-rwxr-xr-xMaster/tlpkg/tlperl/bin/libgcc_s_seh-1.dllbin76288 -> 0 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/bin/libstdc++-6.dllbin1424384 -> 0 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/bin/libwinpthread-1.dllbin52224 -> 0 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/bin/perl.exebin20480 -> 15360 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/bin/perl5.34.0.exebin20480 -> 0 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/bin/perl5.38.2.exebin0 -> 15360 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/bin/perl534.dllbin3459584 -> 0 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/bin/perl538.dllbin0 -> 3208704 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/bin/perlglob.exebin17408 -> 11264 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/bin/vcruntime140.dllbin0 -> 87888 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/bin/wperl.exebin20480 -> 15360 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/.packlist3428
-rw-r--r--Master/tlpkg/tlperl/lib/App/Cpan.pm148
-rw-r--r--Master/tlpkg/tlperl/lib/App/Prove.pm8
-rw-r--r--Master/tlpkg/tlperl/lib/App/Prove/State.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/App/Prove/State/Result.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/App/Prove/State/Result/Test.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/Archive/Tar.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Archive/Tar/Constant.pm7
-rw-r--r--Master/tlpkg/tlperl/lib/Archive/Tar/File.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Attribute/Handlers.pm94
-rw-r--r--Master/tlpkg/tlperl/lib/B.pm55
-rw-r--r--Master/tlpkg/tlperl/lib/B/Concise.pm17
-rw-r--r--Master/tlpkg/tlperl/lib/B/Deparse.pm418
-rw-r--r--Master/tlpkg/tlperl/lib/B/Op_private.pm104
-rw-r--r--Master/tlpkg/tlperl/lib/Benchmark.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/EXTERN.h11
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/INTERN.h2
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/XSUB.h202
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/av.h119
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h31784
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/config.h350
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/cop.h1045
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/cv.h67
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/dosish.h91
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/ebcdic_tables.h54
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/embed.h4202
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/embedvar.h718
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/feature.h145
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/gv.h24
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/handy.h1633
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/hv.h136
-rwxr-xr-xMaster/tlpkg/tlperl/lib/CORE/hv_func.h129
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/hv_macro.h8
-rwxr-xr-xMaster/tlpkg/tlperl/lib/CORE/inline.h1578
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/intrpvar.h154
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/invlist_inline.h137
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/iperlsys.h1878
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/keywords.h510
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h1540
-rwxr-xr-xMaster/tlpkg/tlperl/lib/CORE/libperl534.abin971944 -> 0 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/metaconfig.h3
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/mg_data.h16
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/mg_raw.h16
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/mg_vtable.h26
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/nostdio.h2
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/op.h93
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/op_reg_common.h16
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/opcode.h851
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/opnames.h823
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/overload.h4
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/pad.h116
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/parser.h4
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/patchlevel.h15
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/perl.h2614
-rwxr-xr-xMaster/tlpkg/tlperl/lib/CORE/perl538.libbin0 -> 274948 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/perl_inc_macro.h13
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/perlapi.h2
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/perlhost.h2
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/perlio.h13
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/perliol.h3
-rwxr-xr-xMaster/tlpkg/tlperl/lib/CORE/perlstatic.h33
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/perlvars.h121
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/perly.h204
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/pp.h60
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/pp_proto.h619
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/proto.h16331
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/reentr.h4
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/regcharclass.h634
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/regcomp.h986
-rwxr-xr-xMaster/tlpkg/tlperl/lib/CORE/regcomp_internal.h1261
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/regexp.h457
-rwxr-xr-xMaster/tlpkg/tlperl/lib/CORE/reginline.h64
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/regnodes.h4356
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/sbox32_hash.h81
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/scope.h228
-rwxr-xr-xMaster/tlpkg/tlperl/lib/CORE/scope_types.h151
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/sv.h1501
-rwxr-xr-xMaster/tlpkg/tlperl/lib/CORE/sv_inline.h1002
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/sys/socket.h2
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/thread.h131
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/uconfig.h434
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/uni_keywords.h15198
-rwxr-xr-xMaster/tlpkg/tlperl/lib/CORE/unicode_constants.h70
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/unixish.h40
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/utf8.h852
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/utfebcdic.h309
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/util.h15
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/vmem.h20
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/vutil.h150
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/warnings.h141
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/win32.h173
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/win32iop.h12
-rw-r--r--Master/tlpkg/tlperl/lib/CORE/zaphod32_hash.h19
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN.pm31
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Distribution.pm114
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/FTP.pm204
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/FirstTime.pm42
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/HTTP/Client.pm3
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/HandleConfig.pm28
-rw-r--r--Master/tlpkg/tlperl/lib/CPAN/Index.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/Carp.pm12
-rw-r--r--Master/tlpkg/tlperl/lib/Carp/Heavy.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Class/Struct.pm18
-rw-r--r--Master/tlpkg/tlperl/lib/Compress/Raw/Bzip2.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/Compress/Raw/Zlib.pm63
-rw-r--r--Master/tlpkg/tlperl/lib/Compress/Zlib.pm23
-rwxr-xr-x[-rw-r--r--]Master/tlpkg/tlperl/lib/Config.orig.pm (renamed from Master/tlpkg/tlperl/lib/Config.pm.orig)222
-rw-r--r--Master/tlpkg/tlperl/lib/Config.pm31
-rw-r--r--Master/tlpkg/tlperl/lib/Config.pod897
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Config/Perl/V.pm48
-rwxr-xr-x[-rw-r--r--]Master/tlpkg/tlperl/lib/Config_heavy.orig.pl (renamed from Master/tlpkg/tlperl/lib/Config_heavy.pl.orig)2977
-rw-r--r--Master/tlpkg/tlperl/lib/Config_heavy.pl364
-rw-r--r--Master/tlpkg/tlperl/lib/Cwd.pm51
-rw-r--r--Master/tlpkg/tlperl/lib/Data/Dumper.pm131
-rw-r--r--Master/tlpkg/tlperl/lib/Devel/PPPort.pm3094
-rw-r--r--Master/tlpkg/tlperl/lib/Devel/Peek.pm3
-rw-r--r--Master/tlpkg/tlperl/lib/Digest.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Digest/MD5.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Digest/SHA.pm18
-rw-r--r--Master/tlpkg/tlperl/lib/Digest/base.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Digest/file.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/DynaLoader.pm23
-rw-r--r--Master/tlpkg/tlperl/lib/Encode.pm52
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/Alias.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/GSM0338.pm52
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/JP.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/MIME/Header.pm8
-rw-r--r--Master/tlpkg/tlperl/lib/Encode/Unicode.pm16
-rw-r--r--Master/tlpkg/tlperl/lib/Env.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/Errno.pm1797
-rw-r--r--Master/tlpkg/tlperl/lib/Exporter.pm45
-rw-r--r--Master/tlpkg/tlperl/lib/Exporter/Heavy.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/CBuilder.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Base.pm18
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Unix.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/VMS.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows.pm31
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/aix.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/android.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/cygwin.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/darwin.pm19
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/dec_osf.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/os2.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Command.pm9
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Command/MM.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Constant/Base.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Install.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Installed.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Liblist.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Liblist/Kid.pm7
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_AIX.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_Any.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_BeOS.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_Cygwin.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_DOS.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_Darwin.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_MacOS.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_NW5.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_OS2.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/ExtUtils/MM_OS390.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_QNX.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_UWIN.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_Unix.pm38
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_VMS.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_VOS.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_Win32.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MM_Win95.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MY.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker.pm69
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Config.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/FAQ.pod7
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Locale.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Tutorial.pod4
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/version.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Miniperl.pm44
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Mkbootstrap.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Mksymlists.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/ExtUtils/PL2Bat.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Packlist.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/ParseXS.pm230
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/ParseXS.pod10
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Constants.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/CountLines.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Eval.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Utilities.pm81
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Typemaps.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/Cmd.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/InputMap.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/OutputMap.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/Type.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/testlib.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ExtUtils/typemap60
-rw-r--r--Master/tlpkg/tlperl/lib/Fatal.pm5
-rw-r--r--Master/tlpkg/tlperl/lib/Fcntl.pm12
-rw-r--r--Master/tlpkg/tlperl/lib/File/Basename.pm10
-rw-r--r--Master/tlpkg/tlperl/lib/File/Compare.pm22
-rw-r--r--Master/tlpkg/tlperl/lib/File/Copy.pm40
-rw-r--r--Master/tlpkg/tlperl/lib/File/Fetch.pm10
-rw-r--r--Master/tlpkg/tlperl/lib/File/Find.pm966
-rw-r--r--Master/tlpkg/tlperl/lib/File/Glob.pm12
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec.pm8
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/AmigaOS.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/Cygwin.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/Epoc.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/Functions.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/Mac.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/OS2.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/Unix.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/VMS.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/File/Spec/Win32.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/File/stat.pm8
-rw-r--r--Master/tlpkg/tlperl/lib/FileHandle.pm18
-rw-r--r--Master/tlpkg/tlperl/lib/Filter/Util/Call.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/FindBin.pm7
-rw-r--r--Master/tlpkg/tlperl/lib/Getopt/Long.pm89
-rw-r--r--Master/tlpkg/tlperl/lib/HTTP/Tiny.pm284
-rw-r--r--Master/tlpkg/tlperl/lib/Hash/Util.pm34
-rw-r--r--Master/tlpkg/tlperl/lib/Hash/Util/FieldHash.pm9
-rw-r--r--Master/tlpkg/tlperl/lib/I18N/LangTags/List.pm20
-rw-r--r--Master/tlpkg/tlperl/lib/I18N/Langinfo.pm33
-rw-r--r--Master/tlpkg/tlperl/lib/IO.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Bzip2.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Deflate.pm29
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Identity.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/Base.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/Base/Common.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/Bzip2.pm12
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/Deflate.pm114
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/FAQ.pod4
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/Gzip.pm23
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/Gzip/Constants.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/RawDeflate.pm21
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/Zip.pm91
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/Zip/Constants.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Constants.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Extra.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Dir.pm8
-rw-r--r--Master/tlpkg/tlperl/lib/IO/File.pm12
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Handle.pm10
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Pipe.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Poll.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Seekable.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Select.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Socket.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Socket/INET.pm8
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Socket/IP.pm9
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Socket/UNIX.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Bunzip2.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Identity.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Inflate.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Uncompress/AnyInflate.pm27
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Uncompress/AnyUncompress.pm48
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Uncompress/Base.pm11
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Uncompress/Bunzip2.pm14
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Uncompress/Gunzip.pm23
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Uncompress/Inflate.pm19
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Uncompress/RawInflate.pm21
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Uncompress/Unzip.pm38
-rw-r--r--Master/tlpkg/tlperl/lib/IO/Zlib.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/IPC/Open2.pm10
-rw-r--r--Master/tlpkg/tlperl/lib/IPC/Open3.pm8
-rw-r--r--Master/tlpkg/tlperl/lib/JSON/PP.pm398
-rw-r--r--Master/tlpkg/tlperl/lib/JSON/PP/Boolean.pm7
-rw-r--r--Master/tlpkg/tlperl/lib/List/Util.pm83
-rw-r--r--Master/tlpkg/tlperl/lib/List/Util/XS.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Locale/Maketext.pm49
-rw-r--r--Master/tlpkg/tlperl/lib/Locale/Maketext.pod74
-rw-r--r--Master/tlpkg/tlperl/lib/Locale/Maketext/Cookbook.pod24
-rw-r--r--Master/tlpkg/tlperl/lib/Locale/Maketext/TPJ13.pod2
-rw-r--r--Master/tlpkg/tlperl/lib/MIME/Base64.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/MIME/QuotedPrint.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Math/BigFloat.pm3873
-rw-r--r--Master/tlpkg/tlperl/lib/Math/BigFloat/Trace.pm60
-rw-r--r--Master/tlpkg/tlperl/lib/Math/BigInt.pm4335
-rw-r--r--Master/tlpkg/tlperl/lib/Math/BigInt/Calc.pm1056
-rw-r--r--Master/tlpkg/tlperl/lib/Math/BigInt/FastCalc.pm148
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Math/BigInt/Lib.pm236
-rw-r--r--Master/tlpkg/tlperl/lib/Math/BigInt/Trace.pm60
-rw-r--r--Master/tlpkg/tlperl/lib/Math/BigRat.pm902
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Math/BigRat/Trace.pm76
-rw-r--r--Master/tlpkg/tlperl/lib/Math/Complex.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/Math/Trig.pm94
-rw-r--r--Master/tlpkg/tlperl/lib/Memoize.pm401
-rw-r--r--Master/tlpkg/tlperl/lib/Memoize/AnyDBM_File.pm48
-rw-r--r--Master/tlpkg/tlperl/lib/Memoize/Expire.pm80
-rw-r--r--Master/tlpkg/tlperl/lib/Memoize/ExpireFile.pm52
-rw-r--r--Master/tlpkg/tlperl/lib/Memoize/ExpireTest.pm49
-rw-r--r--Master/tlpkg/tlperl/lib/Memoize/NDBM_File.pm85
-rw-r--r--Master/tlpkg/tlperl/lib/Memoize/SDBM_File.pm80
-rw-r--r--Master/tlpkg/tlperl/lib/Memoize/Storable.pm45
-rw-r--r--Master/tlpkg/tlperl/lib/Module/CoreList.pm3190
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Module/CoreList/Utils.pm275
-rw-r--r--Master/tlpkg/tlperl/lib/NEXT.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Net/Cmd.pm14
-rw-r--r--Master/tlpkg/tlperl/lib/Net/Config.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/Net/Domain.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/Net/FTP.pm34
-rw-r--r--Master/tlpkg/tlperl/lib/Net/FTP/A.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Net/FTP/E.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Net/FTP/I.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Net/FTP/L.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Net/FTP/dataconn.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/Net/NNTP.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/Net/Netrc.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/Net/POP3.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/Net/Ping.pm27
-rw-r--r--Master/tlpkg/tlperl/lib/Net/SMTP.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/Net/Time.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/Net/hostent.pm15
-rw-r--r--Master/tlpkg/tlperl/lib/Net/protoent.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/Net/servent.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/Opcode.pm44
-rw-r--r--Master/tlpkg/tlperl/lib/POSIX.pm12
-rw-r--r--Master/tlpkg/tlperl/lib/POSIX.pod56
-rw-r--r--Master/tlpkg/tlperl/lib/PerlIO.pm8
-rw-r--r--Master/tlpkg/tlperl/lib/PerlIO/via/QuotedPrint.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Checker.pm7
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Functions.pm12
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Html.pm820
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Pod/Html/Util.pm282
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Man.pm1576
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/ParseLink.pm12
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/BlackBox.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/Checker.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/Debug.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/DumpAsText.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/DumpAsXML.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/HTML.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/HTMLBatch.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/LinkSection.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/Methody.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/Progress.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/PullParser.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/PullParserEndToken.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/PullParserStartToken.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/PullParserTextToken.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/PullParserToken.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/RTF.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/Search.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/SimpleTree.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/Text.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/TextContent.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/TiedOutFH.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/Transcode.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/TranscodeDumb.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/TranscodeSmart.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/XHTML.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Simple/XMLOutStream.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Text.pm561
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Text/Color.pm30
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Text/Overstrike.pm27
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Text/Termcap.pm42
-rw-r--r--Master/tlpkg/tlperl/lib/Pod/Usage.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/SDBM_File.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Safe.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Scalar/Util.pm78
-rw-r--r--Master/tlpkg/tlperl/lib/Socket.pm5
-rw-r--r--Master/tlpkg/tlperl/lib/Storable.pm30
-rw-r--r--Master/tlpkg/tlperl/lib/Sub/Util.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Sys/Hostname.pm7
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Base.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Formatter/Base.pm29
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Formatter/Color.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Formatter/Console.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Formatter/Console/ParallelSession.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Formatter/Console/Session.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Formatter/File.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Formatter/File/Session.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Formatter/Session.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Harness.pm21
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Harness/Env.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Object.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Aggregator.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Grammar.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Iterator.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Array.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Process.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Stream.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/IteratorFactory.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Multiplexer.pm8
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Result.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Result/Bailout.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Result/Comment.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Result/Plan.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Result/Pragma.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Result/Test.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Result/Unknown.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Result/Version.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Result/YAML.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/ResultFactory.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler/Job.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler/Spinner.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/Source.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Executable.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/File.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Handle.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Perl.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/RawTAP.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/YAMLish/Reader.pm27
-rw-r--r--Master/tlpkg/tlperl/lib/TAP/Parser/YAMLish/Writer.pm29
-rw-r--r--Master/tlpkg/tlperl/lib/Term/Cap.pm10
-rw-r--r--Master/tlpkg/tlperl/lib/Test/Builder.pm27
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test/Builder/Formatter.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test/Builder/Module.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test/Builder/Tester.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test/Builder/Tester/Color.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test/Builder/TodoDiag.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test/Harness.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/Test/More.pm45
-rw-r--r--Master/tlpkg/tlperl/lib/Test/Simple.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test/Tester.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test/Tester/Capture.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test/Tester/CaptureRunner.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test/Tester/Delegate.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test/use/ok.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/API.pm9
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/API/Breakage.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/API/Context.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/API/Instance.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/API/InterceptResult.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/API/InterceptResult/Event.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/API/InterceptResult/Facet.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/API/InterceptResult/Hub.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/API/InterceptResult/Squasher.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/API/Stack.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Event.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Event/Bail.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Event/Diag.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Event/Encoding.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Event/Exception.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/Event/Fail.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Event/Generic.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Event/Note.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Event/Ok.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/Event/Pass.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Event/Plan.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Event/Skip.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Event/Subtest.pm9
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Event/TAP/Version.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/Event/V2.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Event/Waiting.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/EventFacet.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/EventFacet/About.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/EventFacet/Amnesty.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/EventFacet/Assert.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/EventFacet/Control.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/EventFacet/Error.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/EventFacet/Hub.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/EventFacet/Info.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/EventFacet/Info/Table.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/EventFacet/Meta.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/EventFacet/Parent.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/EventFacet/Plan.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/EventFacet/Render.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/EventFacet/Trace.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Formatter.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Formatter/TAP.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Hub.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Hub/Interceptor.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Hub/Interceptor/Terminator.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Hub/Subtest.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/IPC.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/IPC/Driver.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/IPC/Driver/Files.pm6
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Tools/Tiny.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Util.pm5
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Util/ExternalMeta.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Test2/Util/Facets2Legacy.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Util/HashBase.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Test2/Util/Trace.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Text/Balanced.pm317
-rw-r--r--Master/tlpkg/tlperl/lib/Text/ParseWords.pm74
-rw-r--r--Master/tlpkg/tlperl/lib/Text/Tabs.pm81
-rw-r--r--Master/tlpkg/tlperl/lib/Text/Wrap.pm72
-rw-r--r--Master/tlpkg/tlperl/lib/Tie/File.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Tie/Handle.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/Tie/Hash.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/Tie/Scalar.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/Tie/SubstrHash.pm200
-rw-r--r--Master/tlpkg/tlperl/lib/Time/HiRes.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Time/Piece.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/UNIVERSAL.pm27
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate.pm30
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Big5.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/GB2312.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/JISX0208.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Korean.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Pinyin.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Stroke.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Unicode/Collate/CJK/Zhuyin.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/af.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ar.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/as.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/az.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/be.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/bn.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ca.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cs.pl2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Unicode/Collate/Locale/cu.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cy.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/da.pl2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Unicode/Collate/Locale/de_at_ph.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/de_phone.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/dsb.pl2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Unicode/Collate/Locale/ee.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/eo.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/es.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/es_trad.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/et.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fa.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fi.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fi_phone.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fil.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fo.pl2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Unicode/Collate/Locale/fr_ca.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/gu.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ha.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/haw.pl2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Unicode/Collate/Locale/he.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hi.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hr.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hu.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hy.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ig.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/is.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ja.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kk.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kl.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kn.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ko.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kok.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lkt.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ln.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lt.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lv.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mk.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ml.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mr.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mt.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nb.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nn.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nso.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/om.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/or.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/pa.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/pl.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ro.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sa.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/se.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/si.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/si_dict.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sk.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sl.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sq.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sr.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sv.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sv_refo.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ta.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/te.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/th.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/tn.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/to.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/tr.pl2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Unicode/Collate/Locale/ug_cyrl.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/uk.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ur.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/vi.pl2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Unicode/Collate/Locale/vo.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/wae.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/wo.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/yo.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_big5.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_gb.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_pin.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_strk.pl2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_zhu.pl2
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/Normalize.pm69
-rw-r--r--Master/tlpkg/tlperl/lib/Unicode/UCD.pm44
-rw-r--r--Master/tlpkg/tlperl/lib/User/grent.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/User/pwent.pm10
-rw-r--r--Master/tlpkg/tlperl/lib/Win32.pm70
-rw-r--r--Master/tlpkg/tlperl/lib/XSLoader.pm13
-rw-r--r--Master/tlpkg/tlperl/lib/_charnames.pm53
-rw-r--r--Master/tlpkg/tlperl/lib/attributes.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/B/B.dllbin82432 -> 80896 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/B/B.pdbbin0 -> 741376 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Compress/Raw/Bzip2/Bzip2.dllbin107520 -> 66560 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Compress/Raw/Bzip2/Bzip2.pdbbin0 -> 774144 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Compress/Raw/Zlib/Zlib.dllbin139776 -> 97280 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Compress/Raw/Zlib/Zlib.pdbbin0 -> 790528 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Cwd/Cwd.dllbin24064 -> 18432 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Cwd/Cwd.pdbbin0 -> 577536 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.dllbin65536 -> 31744 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.pdbbin0 -> 618496 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Devel/Peek/Peek.dllbin24064 -> 18944 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Devel/Peek/Peek.pdbbin0 -> 561152 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.dllbin25088 -> 20480 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.pdbbin0 -> 577536 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Digest/SHA/SHA.dllbin47616 -> 41984 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Digest/SHA/SHA.pdbbin0 -> 602112 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.dllbin179200 -> 165376 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.pdbbin0 -> 618496 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/CN/CN.dllbin1073664 -> 1038336 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/CN/CN.pdbbin0 -> 782336 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/EBCDIC/EBCDIC.dllbin30720 -> 25600 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/EBCDIC/EBCDIC.pdbbin0 -> 528384 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/Encode.dllbin67072 -> 35840 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/Encode.pdbbin0 -> 651264 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/JP/JP.dllbin1297408 -> 1266176 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/JP/JP.pdbbin0 -> 790528 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/KR/KR.dllbin1200128 -> 1162240 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/KR/KR.pdbbin0 -> 823296 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.dllbin37376 -> 31232 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.pdbbin0 -> 544768 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/TW/TW.dllbin1062912 -> 1030144 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/TW/TW.pdbbin0 -> 782336 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.dllbin26112 -> 18432 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.pdbbin0 -> 528384 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.dllbin23552 -> 18432 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.pdbbin0 -> 544768 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/File/DosGlob/DosGlob.dllbin15872 -> 10752 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/File/DosGlob/DosGlob.pdbbin0 -> 512000 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/File/Glob/Glob.dllbin30208 -> 25088 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/File/Glob/Glob.pdbbin0 -> 626688 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Filter/Util/Call/Call.dllbin19968 -> 14848 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Filter/Util/Call/Call.pdbbin0 -> 536576 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Hash/Util/FieldHash/FieldHash.dllbin23040 -> 18944 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Hash/Util/FieldHash/FieldHash.pdbbin0 -> 561152 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Hash/Util/Util.dllbin25088 -> 22528 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Hash/Util/Util.pdbbin0 -> 577536 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/I18N/Langinfo/Langinfo.dllbin19456 -> 13824 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/I18N/Langinfo/Langinfo.pdbbin0 -> 544768 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/IO/IO.dllbin25088 -> 20480 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/IO/IO.pdbbin0 -> 593920 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/List/Util/Util.dllbin56320 -> 45568 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/List/Util/Util.pdbbin0 -> 626688 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/MIME/Base64/Base64.dllbin22016 -> 16384 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/MIME/Base64/Base64.pdbbin0 -> 536576 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Math/BigInt/FastCalc/FastCalc.dllbin22016 -> 17920 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Math/BigInt/FastCalc/FastCalc.pdbbin0 -> 536576 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Opcode/Opcode.dllbin26112 -> 21504 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Opcode/Opcode.pdbbin0 -> 577536 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/POSIX/POSIX.dllbin132096 -> 75264 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/POSIX/POSIX.pdbbin0 -> 815104 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/PerlIO/encoding/encoding.dllbin29184 -> 22016 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/PerlIO/encoding/encoding.pdbbin0 -> 569344 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/PerlIO/mmap/mmap.dllbin15360 -> 10240 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/PerlIO/mmap/mmap.pdbbin0 -> 512000 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/PerlIO/scalar/scalar.dllbin20992 -> 15360 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/PerlIO/scalar/scalar.pdbbin0 -> 536576 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/PerlIO/via/via.dllbin26112 -> 19968 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/PerlIO/via/via.pdbbin0 -> 585728 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.dllbin31744 -> 26112 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.pdbbin0 -> 634880 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Socket/Socket.dllbin35840 -> 32768 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Socket/Socket.pdbbin0 -> 618496 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Storable/Storable.dllbin125952 -> 94208 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Storable/Storable.pdbbin0 -> 724992 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Sys/Hostname/Hostname.dllbin15872 -> 10752 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Sys/Hostname/Hostname.pdbbin0 -> 520192 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.dllbin28672 -> 22016 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.pdbbin0 -> 569344 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Time/Piece/Piece.dllbin50176 -> 23552 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Time/Piece/Piece.pdbbin0 -> 634880 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Unicode/Collate/Collate.dllbin852480 -> 982016 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Unicode/Collate/Collate.pdbbin0 -> 4059136 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Unicode/Normalize/Normalize.dllbin386560 -> 386048 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Unicode/Normalize/Normalize.pdbbin0 -> 987136 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Win32.dllbin71680 -> 48128 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32/Win32.pdbbin0 -> 815104 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32API/File/File.dllbin75776 -> 65536 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/Win32API/File/File.pdbbin0 -> 659456 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/attributes/attributes.dllbin18432 -> 13312 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/attributes/attributes.pdbbin0 -> 520192 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/mro/mro.dllbin26112 -> 20480 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/mro/mro.pdbbin0 -> 552960 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/re/re.dllbin780800 -> 664576 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/re/re.pdbbin0 -> 1437696 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/threads/shared/shared.dllbin37888 -> 30720 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/threads/shared/shared.pdbbin0 -> 593920 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/threads/threads.dllbin35840 -> 28672 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/lib/auto/threads/threads.pdbbin0 -> 610304 bytes
-rw-r--r--Master/tlpkg/tlperl/lib/autodie.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/autodie/Scope/Guard.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/autodie/Scope/GuardStack.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/autodie/Util.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/autodie/exception.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/autodie/exception/system.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/autodie/hints.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/autodie/skip.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/lib/bigfloat.pm851
-rw-r--r--Master/tlpkg/tlperl/lib/bigint.pm906
-rw-r--r--Master/tlpkg/tlperl/lib/bignum.pm1111
-rw-r--r--Master/tlpkg/tlperl/lib/bigrat.pm914
-rwxr-xr-xMaster/tlpkg/tlperl/lib/builtin.pm323
-rw-r--r--Master/tlpkg/tlperl/lib/charnames.pm8
-rw-r--r--Master/tlpkg/tlperl/lib/diagnostics.pm7
-rw-r--r--Master/tlpkg/tlperl/lib/encoding/warnings.pm30
-rw-r--r--Master/tlpkg/tlperl/lib/experimental.pm70
-rw-r--r--Master/tlpkg/tlperl/lib/feature.pm715
-rw-r--r--Master/tlpkg/tlperl/lib/if.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/meta_notation.pm1
-rw-r--r--Master/tlpkg/tlperl/lib/mro.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/ok.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/open.pm21
-rw-r--r--Master/tlpkg/tlperl/lib/overload.pm731
-rw-r--r--Master/tlpkg/tlperl/lib/overload/numbers.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/parent.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/perl5db.pl163
-rw-r--r--Master/tlpkg/tlperl/lib/perlfaq.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/perllocal.pod320
-rw-r--r--Master/tlpkg/tlperl/lib/re.pm49
-rw-r--r--Master/tlpkg/tlperl/lib/sigtrap.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/sort.pm143
-rwxr-xr-xMaster/tlpkg/tlperl/lib/stable.pm159
-rw-r--r--Master/tlpkg/tlperl/lib/threads.pm6
-rw-r--r--Master/tlpkg/tlperl/lib/threads/shared.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/Blocks.txt37
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/CombiningClass.pl31
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/Decomposition.pl125
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/Name.pl3451
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/Name.pm35
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/NamedSequences.txt43
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/SpecialCasing.txt10
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/TestNorm.pl19134
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Age.pl114
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Bc.pl85
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Bmg.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Bpb.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Bpt.pl252
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Cf.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Digit.pl674
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Ea.pl33
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/To/EqUIdeo.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Fold.pl1553
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/GCB.pl47
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Gc.pl189
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Hst.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Identif2.pl160
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Identifi.pl42
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/InPC.pl27
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/InSC.pl46
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Isc.pl6
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Jg.pl13
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Jt.pl51
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Lb.pl163
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Lc.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Lower.pl1428
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/NFCQC.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/NFDQC.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/NFKCCF.pl166
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/NFKCQC.pl9
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/NFKDQC.pl9
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Na1.pl6
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/NameAlia.pl11
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Nt.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Nv.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/PerlDeci.pl9
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/SB.pl139
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Sc.pl152
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Scx.pl165
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Tc.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Title.pl1447
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Uc.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Upper.pl1520
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/Vo.pl459
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/WB.pl108
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/_PerlLB.pl152
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/To/_PerlSCX.pl165
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/UCD.pl5366
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/NA.pl212
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V100.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V11.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Age/V110.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Age/V120.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V130.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Age/V140.pl170
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Age/V150.pl78
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V20.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V30.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V31.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V32.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V40.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V41.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V50.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V51.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V52.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V60.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V61.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V70.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Age/V80.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Age/V90.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Alpha/Y.pl136
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bc/AL.pl20
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bc/AN.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bc/B.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bc/BN.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bc/CS.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bc/EN.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bc/ES.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bc/ET.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bc/L.pl88
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bc/NSM.pl56
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bc/ON.pl52
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bc/R.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bc/WS.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/BidiC/Y.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/BidiM/Y.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Blk/NB.pl50
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bpt/C.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bpt/N.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Bpt/O.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/CE/Y.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/CI/Y.pl78
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/CWCF/Y.pl24
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/CWCM/Y.pl32
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/CWKCF/Y.pl36
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/CWL/Y.pl24
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/CWT/Y.pl24
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/CWU/Y.pl24
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Cased/Y.pl56
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ccc/A.pl28
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ccc/AL.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ccc/AR.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ccc/ATAR.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ccc/B.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ccc/BR.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ccc/DB.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ccc/NK.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ccc/NR.pl32
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ccc/OV.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ccc/VR.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/CompEx/Y.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/DI/Y.pl6
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dash/Y.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dep/Y.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dia/Y.pl50
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dt/Com.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dt/Enc.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dt/Fin.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dt/Font.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dt/Init.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dt/Iso.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dt/Med.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dt/Nar.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dt/Nb.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dt/NonCanon.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sqr.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sub.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sup.pl18
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Dt/Vert.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/EBase/Y.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/EComp/Y.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/EPres/Y.pl34
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ea/A.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ea/H.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ea/N.pl48
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ea/Na.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ea/W.pl48
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Emoji/Y.pl36
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ext/Y.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/ExtPict/Y.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/GCB/CN.pl6
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/GCB/EX.pl56
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/GCB/LV.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/GCB/LVT.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/GCB/PP.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/GCB/SM.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/GCB/XX.pl60
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/C.pl210
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Cf.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Cn.pl212
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/L.pl124
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/LC.pl40
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Ll.pl34
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lm.pl26
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lo.pl78
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lu.pl24
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/M.pl58
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Mc.pl20
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Me.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Mn.pl56
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/N.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Nd.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Nl.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/No.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/P.pl22
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Gc/Pc.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pd.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pe.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pf.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pi.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Po.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Ps.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/S.pl58
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sc.pl6
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sk.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sm.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/So.pl52
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Z.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Gc/Zs.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/GrBase/Y.pl200
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/GrExt/Y.pl56
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Hex/Y.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Hst/NA.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Hyphen/T.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IDC/Y.pl152
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IDS/Y.pl124
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IdStatus/Allowed.pl66
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IdStatus/Restrict.pl66
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IdType/DefaultI.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IdType/Exclusio.pl64
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IdType/Inclusio.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IdType/LimitedU.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotChara.pl212
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotNFKC.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotXID.pl80
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IdType/Obsolete.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IdType/Recommen.pl64
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IdType/Technica.pl32
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/IdType/Uncommon.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Ideo/Y.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/10_0.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/In/11_0.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/In/12_0.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/In/12_1.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/13_0.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/In/14_0.pl1426
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/In/15_0.pl1444
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/2_0.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/2_1.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/3_0.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/3_1.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/3_2.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/4_0.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/4_1.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/5_0.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/5_1.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/5_2.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/6_0.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/6_1.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/In/6_2.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/6_3.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/7_0.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/In/8_0.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/In/9_0.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InPC/Bottom.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InPC/BottomAn.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InPC/Left.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InPC/LeftAndR.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InPC/NA.pl32
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InPC/Overstru.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InPC/Right.pl18
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InPC/Top.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndBo.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndL2.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndLe.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndRi.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InPC/VisualOr.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Avagraha.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Bindu.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Cantilla.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona2.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona3.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona4.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona5.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona6.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/InSC/Consona7.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona8.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona9.pl20
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consonan.pl20
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/InSC/Geminati.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Invisibl.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Nukta.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Number.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Other.pl40
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/PureKill.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Syllable.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/ToneMark.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Virama.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Visarga.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/Vowel.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/VowelDep.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/InSC/VowelInd.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Ain.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Alef.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Beh.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Dal.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/FarsiYeh.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Feh.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Gaf.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Hah.pl8
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Jg/HanifiRo.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Kaf.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Lam.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/NoJoinin.pl16
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Jg/Noon.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Qaf.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Reh.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Sad.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Seen.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Jg/Tah.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Waw.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jg/Yeh.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jt/C.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jt/D.pl18
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Jt/L.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jt/R.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jt/T.pl56
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Jt/U.pl64
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/AI.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/AL.pl128
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/BA.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/BB.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/CJ.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/CL.pl18
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/CM.pl60
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/EX.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/GL.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/ID.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/IN.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/IS.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/NS.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Lb/NU.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/OP.pl18
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/PO.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/PR.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/QU.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/SA.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lb/XX.pl166
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Lower/Y.pl50
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Math/Y.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/NFCQC/M.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/NFCQC/Y.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/NFDQC/N.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/NFDQC/Y.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/NFKCQC/N.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/NFKCQC/Y.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/NFKDQC/N.pl16
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/NFKDQC/Y.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nt/Di.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nt/None.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nt/Nu.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/0.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/1.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/10.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/100.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/1000.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/10000.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/100000.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/11.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/12.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/13.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/14.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/15.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/16.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/17.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/18.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/19.pl8
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/1_16.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_2.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_3.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_4.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/1_6.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_8.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/2.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/20.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/200.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/2000.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/20000.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/2_3.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/3.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/30.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/300.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/3000.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/30000.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/3_16.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/3_4.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/4.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/40.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/400.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/4000.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/40000.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/5.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/50.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/500.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/5000.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/50000.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/6.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/60.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/600.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/6000.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/60000.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/7.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/70.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/700.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/7000.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/70000.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/8.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/80.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/800.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/8000.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/80000.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/9.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/90.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Nv/900.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/9000.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Nv/90000.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/PCM/Y.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/PatSyn/Y.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/Alnum.pl142
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/Assigned.pl212
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/Blank.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/Graph.pl212
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/PerlWord.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/PosixPun.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/Print.pl212
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/SpacePer.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/Title.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/Word.pl152
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/XPosixPu.pl22
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlAny.pl32
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlCh2.pl152
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlCha.pl124
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlFol.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIDC.pl152
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIDS.pl124
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIsI.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlNch.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPat.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPr2.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPro.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlQuo.pl6
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/QMark/Y.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/SB/AT.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/SB/CL.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/SB/EX.pl58
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/SB/FO.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/SB/LE.pl90
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/SB/LO.pl50
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/SB/NU.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/SB/SC.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/SB/ST.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/SB/Sp.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/SB/UP.pl24
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/SB/XX.pl160
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/SD/Y.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/STerm/Y.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Arab.pl28
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Beng.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Cprt.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Sc/Cyrl.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Deva.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Dupl.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Geor.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Sc/Glag.pl10
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Sc/Gong.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Sc/Gonm.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gran.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Sc/Grek.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gujr.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Guru.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Han.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Hang.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Hira.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Kana.pl16
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Sc/Knda.pl8
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Sc/Latn.pl26
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Sc/Limb.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Linb.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Sc/Mlym.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mong.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mult.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Orya.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Sc/Sinh.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Syrc.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Sc/Taml.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Sc/Telu.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Zinh.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Sc/Zyyy.pl52
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Scx/Adlm.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Arab.pl26
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Armn.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Beng.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Bhks.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Bopo.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cakm.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cham.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Copt.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cprt.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cyrl.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Deva.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Diak.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Dupl.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Ethi.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Geor.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Glag.pl10
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Scx/Gong.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gonm.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gran.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Grek.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gujr.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Guru.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Han.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hang.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hebr.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hira.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hmng.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Scx/Hmnp.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Kana.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Khar.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Khmr.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Scx/Khoj.pl6
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Knda.pl8
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Scx/Kthi.pl6
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lana.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lao.pl6
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Latn.pl26
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Limb.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Scx/Lina.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Linb.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mlym.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mong.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mult.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mymr.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Scx/Nand.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Scx/Nko.pl26
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Orya.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Phlp.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Scx/Rohg.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Shrd.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Sind.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Sinh.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Syrc.pl8
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tagb.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Takr.pl6
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Talu.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Taml.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tang.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Telu.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Thaa.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tibt.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tirh.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/Scx/Vith.pl30
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Xsux.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Yezi.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Yi.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zinh.pl12
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zyyy.pl56
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zzzz.pl212
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Term/Y.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/UIdeo/Y.pl14
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Upper/Y.pl24
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/VS/Y.pl22
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Vo/R.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Vo/Tr.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Vo/Tu.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/Vo/U.pl16
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/WB/EX.pl4
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/WB/Extend.pl58
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/WB/FO.pl10
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/WB/HL.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/WB/KA.pl16
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/WB/LE.pl102
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/WB/MB.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/WB/ML.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/WB/MN.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/WB/NU.pl12
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/lib/WB/WSegSpac.pl4
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/WB/XX.pl142
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/XIDC/Y.pl152
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/lib/XIDS/Y.pl124
-rwxr-xr-xMaster/tlpkg/tlperl/lib/unicore/uni_keywords.pl2608
-rw-r--r--Master/tlpkg/tlperl/lib/unicore/version2
-rw-r--r--Master/tlpkg/tlperl/lib/utf8.pm4
-rw-r--r--Master/tlpkg/tlperl/lib/version.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/version/regex.pm2
-rw-r--r--Master/tlpkg/tlperl/lib/warnings.pm469
-rw-r--r--Master/tlpkg/tlperl/lib/warnings/register.pm5
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/App/Prove.pm817
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/App/Prove/State.pm548
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/App/Prove/State/Result.pm233
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/App/Prove/State/Result/Test.pm152
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/Cpanel/JSON/XS.pm66
-rw-r--r--Master/tlpkg/tlperl/site/lib/Digest/SHA.pm18
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/ExtUtils/Config.pm114
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/ExtUtils/Helpers.pm131
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/ExtUtils/Helpers/Unix.pm86
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/ExtUtils/Helpers/VMS.pm117
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/ExtUtils/Helpers/Windows.pm70
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/ExtUtils/InstallPaths.pm625
-rw-r--r--Master/tlpkg/tlperl/site/lib/File/Listing.pm18
-rw-r--r--Master/tlpkg/tlperl/site/lib/HTML/Entities.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/HTML/Filter.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/HTML/HeadParser.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/HTML/LinkExtor.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/HTML/Parser.pm158
-rw-r--r--Master/tlpkg/tlperl/site/lib/HTML/PullParser.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/HTML/TokeParser.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/HTTP/Cookies.pm6
-rw-r--r--Master/tlpkg/tlperl/site/lib/HTTP/Cookies/Microsoft.pm4
-rw-r--r--Master/tlpkg/tlperl/site/lib/HTTP/Cookies/Netscape.pm4
-rw-r--r--Master/tlpkg/tlperl/site/lib/HTTP/Daemon.pm78
-rw-r--r--Master/tlpkg/tlperl/site/lib/HTTP/Date.pm13
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP.pm671
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Authen/Basic.pm86
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Authen/Digest.pm80
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Authen/Ntlm.pm183
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/ConnCache.pm350
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Debug.pm112
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Debug/TraceHTTP.pm29
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/DebugFile.pm7
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/MemberMixin.pm48
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Protocol.pm313
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Protocol/cpan.pm72
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Protocol/data.pm52
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Protocol/file.pm147
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Protocol/ftp.pm555
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Protocol/gopher.pm213
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Protocol/http.pm523
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Protocol/loopback.pm27
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Protocol/mailto.pm184
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Protocol/nntp.pm150
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Protocol/nogo.pm25
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/RobotUA.pm312
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/Simple.pm267
-rw-r--r--Master/tlpkg/tlperl/site/lib/LWP/UserAgent.pm2179
-rw-r--r--Master/tlpkg/tlperl/site/lib/Math/Int64.pm22
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/Module/Build/Tiny.pm349
-rw-r--r--Master/tlpkg/tlperl/site/lib/Mozilla/CA.pm21
-rw-r--r--Master/tlpkg/tlperl/site/lib/Mozilla/CA/cacert.pem1274
-rw-r--r--Master/tlpkg/tlperl/site/lib/Mozilla/mk-ca-bundle.pl625
-rw-r--r--Master/tlpkg/tlperl/site/lib/Net/HTTP.pm4
-rw-r--r--Master/tlpkg/tlperl/site/lib/Net/HTTP/Methods.pm4
-rw-r--r--Master/tlpkg/tlperl/site/lib/Net/HTTP/NB.pm4
-rw-r--r--Master/tlpkg/tlperl/site/lib/Net/HTTPS.pm4
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/Socket.pm1143
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Base.pm133
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Formatter/Base.pm490
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Formatter/Color.pm116
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Formatter/Console.pm100
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Formatter/Console/ParallelSession.pm201
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Formatter/Console/Session.pm205
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Formatter/File.pm56
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Formatter/File/Session.pm95
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Formatter/Session.pm220
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Harness.pm1072
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Harness/Beyond.pod426
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Harness/Env.pm215
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Object.pm155
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser.pm1931
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Aggregator.pm414
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Grammar.pm590
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Iterator.pm162
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Array.pm100
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Process.pm381
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Stream.pm116
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/IteratorFactory.pm339
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Multiplexer.pm196
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Result.pm297
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Result/Bailout.pm62
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Result/Comment.pm60
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Result/Plan.pm119
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Result/Pragma.pm62
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Result/Test.pm271
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Result/Unknown.pm48
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Result/Version.pm62
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Result/YAML.pm61
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/ResultFactory.pm183
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler.pm448
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler/Job.pm127
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler/Spinner.pm61
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/Source.pm381
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler.pm191
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Executable.pm187
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/File.pm136
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Handle.pm124
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Perl.pm372
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/RawTAP.pm130
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/YAMLish/Reader.pm347
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/TAP/Parser/YAMLish/Writer.pm263
-rw-r--r--Master/tlpkg/tlperl/site/lib/Test/Fatal.pm30
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/Test/HACKING.pod264
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/Test/Harness.pm618
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/Test/Needs.pm8
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/Test/Warnings.pm587
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI.pm202
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/Escape.pm45
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/Heuristic.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/IRI.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/QueryParam.pm190
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/Split.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/URL.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/WithBase.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/_foreign.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/_generic.pm33
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/_idna.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/_ldap.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/_login.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/_punycode.pm22
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/_query.pm99
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/_segment.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/_server.pm9
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/_userpass.pm6
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/data.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/file.pm23
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/file/Base.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/file/FAT.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/file/Mac.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/file/OS2.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/file/QNX.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/file/Unix.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/file/Win32.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/ftp.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/URI/geo.pm418
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/gopher.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/http.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/https.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/URI/icap.pm76
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/URI/icaps.pm76
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/ldap.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/ldapi.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/ldaps.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/mailto.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/mms.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/news.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/nntp.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/URI/nntps.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/pop.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/rlogin.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/rsync.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/rtsp.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/rtspu.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/sftp.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/sip.pm42
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/sips.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/snews.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/ssh.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/telnet.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/tn3270.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/urn.pm6
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/urn/isbn.pm2
-rw-r--r--Master/tlpkg/tlperl/site/lib/URI/urn/oid.pm2
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/.packlist15
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.dllbin103936 -> 67072 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.expbin0 -> 909 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.libbin0 -> 1708 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.pdbbin0 -> 733184 bytes
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Date/Parse/.packlist78
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/.packlist11
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.dllbin47616 -> 41984 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.expbin0 -> 887 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.libbin0 -> 1694 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.pdbbin0 -> 602112 bytes
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Encode/Locale/.packlist2
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Encode/compat/.packlist8
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/ExtUtils/Config/.packlist1
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/ExtUtils/Helpers/.packlist4
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/ExtUtils/InstallPaths/.packlist1
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/File/Listing/.packlist2
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/File/Which/.packlist2
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/.packlist19
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.dllbin51200 -> 41472 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.expbin0 -> 902 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.libbin0 -> 1736 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.pdbbin0 -> 643072 bytes
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/HTML/Tagset/.packlist2
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/HTTP/Cookies/.packlist6
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/HTTP/Daemon/.packlist2
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/HTTP/Date/.packlist2
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/HTTP/Message/.packlist20
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/HTTP/Negotiate/.packlist2
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/IO/HTML/.packlist2
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/IO/String/.packlist2
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/JSON/MaybeXS/.packlist2
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/LWP/MediaTypes/.packlist4
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Math/Int64/.packlist13
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.dllbin61440 -> 51712 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.expbin0 -> 893 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.libbin0 -> 1718 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.pdbbin0 -> 675840 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Module/Build/Tiny/.packlist1
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Mozilla/CA/.packlist5
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Net/HTTP/.packlist8
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Socket/.packlist5
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Socket/Socket.dllbin0 -> 35840 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Socket/Socket.expbin0 -> 870 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Socket/Socket.libbin0 -> 1706 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Socket/Socket.pdbbin0 -> 618496 bytes
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Test/Fatal/.packlist2
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Test/Harness/.packlist52
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Test/Needs/.packlist2
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Test/RequiresInternet/.packlist2
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Test/Warnings/.packlist1
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Try/Tiny/.packlist2
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/URI/.packlist111
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/WWW/RobotRules/.packlist4
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Win32/API/.packlist20
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/API/API.dllbin30720 -> 17920 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/API/API.expbin0 -> 879 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/API/API.libbin0 -> 1688 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/API/API.pdbbin0 -> 331776 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.dllbin47616 -> 14848 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.expbin0 -> 959 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.libbin0 -> 1800 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.pdbbin0 -> 315392 bytes
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Win32/Console/.packlist7
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.dllbin70144 -> 42496 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.expbin0 -> 919 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.libbin0 -> 1756 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.pdbbin0 -> 675840 bytes
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/.packlist7
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.dllbin53248 -> 23040 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.expbin0 -> 928 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.libbin0 -> 1774 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.pdbbin0 -> 733184 bytes
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Win32/TieRegistry/.packlist4
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/.packlist9
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.dllbin158720 -> 134656 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.expbin0 -> 946 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.libbin0 -> 1790 bytes
-rwxr-xr-xMaster/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.pdbbin0 -> 815104 bytes
-rw-r--r--Master/tlpkg/tlperl/site/lib/auto/libwww/perl/.packlist33
-rw-r--r--Master/tlpkg/tlperl/site/lib/libwww/lwpcook.pod310
-rw-r--r--Master/tlpkg/tlperl/site/lib/libwww/lwptut.pod820
1548 files changed, 151604 insertions, 74151 deletions
diff --git a/Master/tlpkg/tlperl/README.TEXLIVE b/Master/tlpkg/tlperl/README.TEXLIVE
deleted file mode 100644
index 71ebb920bf0..00000000000
--- a/Master/tlpkg/tlperl/README.TEXLIVE
+++ /dev/null
@@ -1,8 +0,0 @@
-(This file public domain.)
-
-This directory contains Perl 5.34.0 compiled for Windows.
-
-The only purpose of this Perl is to provide support on Windows for
-Perl scripts shipped with TeX Live. It is not intended for general use.
-
-The sources and notes on compilation can be found in Master/source/tlperl.
diff --git a/Master/tlpkg/tlperl/bin/libgcc_s_seh-1.dll b/Master/tlpkg/tlperl/bin/libgcc_s_seh-1.dll
deleted file mode 100755
index f9d21c65e1a..00000000000
--- a/Master/tlpkg/tlperl/bin/libgcc_s_seh-1.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/bin/libstdc++-6.dll b/Master/tlpkg/tlperl/bin/libstdc++-6.dll
deleted file mode 100755
index d2a98f0a4dc..00000000000
--- a/Master/tlpkg/tlperl/bin/libstdc++-6.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/bin/libwinpthread-1.dll b/Master/tlpkg/tlperl/bin/libwinpthread-1.dll
deleted file mode 100755
index c4fbb7b0185..00000000000
--- a/Master/tlpkg/tlperl/bin/libwinpthread-1.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/bin/perl.exe b/Master/tlpkg/tlperl/bin/perl.exe
index b1aaf4f8dc9..3b7ed3d39fc 100755
--- a/Master/tlpkg/tlperl/bin/perl.exe
+++ b/Master/tlpkg/tlperl/bin/perl.exe
Binary files differ
diff --git a/Master/tlpkg/tlperl/bin/perl5.34.0.exe b/Master/tlpkg/tlperl/bin/perl5.34.0.exe
deleted file mode 100755
index b1aaf4f8dc9..00000000000
--- a/Master/tlpkg/tlperl/bin/perl5.34.0.exe
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/bin/perl5.38.2.exe b/Master/tlpkg/tlperl/bin/perl5.38.2.exe
new file mode 100755
index 00000000000..3b7ed3d39fc
--- /dev/null
+++ b/Master/tlpkg/tlperl/bin/perl5.38.2.exe
Binary files differ
diff --git a/Master/tlpkg/tlperl/bin/perl534.dll b/Master/tlpkg/tlperl/bin/perl534.dll
deleted file mode 100755
index 4cbabe95ae9..00000000000
--- a/Master/tlpkg/tlperl/bin/perl534.dll
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/bin/perl538.dll b/Master/tlpkg/tlperl/bin/perl538.dll
new file mode 100755
index 00000000000..06992a6bd52
--- /dev/null
+++ b/Master/tlpkg/tlperl/bin/perl538.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/bin/perlglob.exe b/Master/tlpkg/tlperl/bin/perlglob.exe
index c2b1761751a..d3eff3a3566 100755
--- a/Master/tlpkg/tlperl/bin/perlglob.exe
+++ b/Master/tlpkg/tlperl/bin/perlglob.exe
Binary files differ
diff --git a/Master/tlpkg/tlperl/bin/vcruntime140.dll b/Master/tlpkg/tlperl/bin/vcruntime140.dll
new file mode 100755
index 00000000000..52fe06bd612
--- /dev/null
+++ b/Master/tlpkg/tlperl/bin/vcruntime140.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/bin/wperl.exe b/Master/tlpkg/tlperl/bin/wperl.exe
index aa27d0d9574..0d9cb35aef0 100755
--- a/Master/tlpkg/tlperl/bin/wperl.exe
+++ b/Master/tlpkg/tlperl/bin/wperl.exe
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/.packlist b/Master/tlpkg/tlperl/lib/.packlist
index 69b1c59a574..34d93f9fa2a 100644
--- a/Master/tlpkg/tlperl/lib/.packlist
+++ b/Master/tlpkg/tlperl/lib/.packlist
@@ -1,1678 +1,1750 @@
-E:\tlperl\bin/corelist.bat type=file
-E:\tlperl\bin/cpan.bat type=file
-E:\tlperl\bin/enc2xs.bat type=file
-E:\tlperl\bin/encguess.bat type=file
-E:\tlperl\bin/h2ph.bat type=file
-E:\tlperl\bin/h2xs.bat type=file
-E:\tlperl\bin/instmodsh.bat type=file
-E:\tlperl\bin/json_pp.bat type=file
-E:\tlperl\bin/libnetcfg.bat type=file
-E:\tlperl\bin/perl.exe from=E:\tlperl\bin/perl5.34.0.exe type=link
-E:\tlperl\bin/perl5.34.0.exe type=file
-E:\tlperl\bin/perl534.dll type=file
-E:\tlperl\bin/perlbug.bat type=file
-E:\tlperl\bin/perldoc.bat type=file
-E:\tlperl\bin/perlivp.bat type=file
-E:\tlperl\bin/perlthanks.bat from=E:\tlperl\bin/perlbug.bat type=link
-E:\tlperl\bin/piconv.bat type=file
-E:\tlperl\bin/pl2pm.bat type=file
-E:\tlperl\bin/pod2html.bat type=file
-E:\tlperl\bin/pod2man.bat type=file
-E:\tlperl\bin/pod2text.bat type=file
-E:\tlperl\bin/pod2usage.bat type=file
-E:\tlperl\bin/podchecker.bat type=file
-E:\tlperl\bin/prove.bat type=file
-E:\tlperl\bin/ptar.bat type=file
-E:\tlperl\bin/ptardiff.bat type=file
-E:\tlperl\bin/ptargrep.bat type=file
-E:\tlperl\bin/shasum.bat type=file
-E:\tlperl\bin/splain.bat type=file
-E:\tlperl\bin/streamzip.bat type=file
-E:\tlperl\bin/xsubpp.bat type=file
-E:\tlperl\bin/zipdetails.bat type=file
-E:\tlperl\lib/AnyDBM_File.pm type=file
-E:\tlperl\lib/App/Cpan.pm type=file
-E:\tlperl\lib/App/Prove.pm type=file
-E:\tlperl\lib/App/Prove/State.pm type=file
-E:\tlperl\lib/App/Prove/State/Result.pm type=file
-E:\tlperl\lib/App/Prove/State/Result/Test.pm type=file
-E:\tlperl\lib/Archive/Tar.pm type=file
-E:\tlperl\lib/Archive/Tar/Constant.pm type=file
-E:\tlperl\lib/Archive/Tar/File.pm type=file
-E:\tlperl\lib/Attribute/Handlers.pm type=file
-E:\tlperl\lib/AutoLoader.pm type=file
-E:\tlperl\lib/AutoSplit.pm type=file
-E:\tlperl\lib/B.pm type=file
-E:\tlperl\lib/B/Concise.pm type=file
-E:\tlperl\lib/B/Deparse.pm type=file
-E:\tlperl\lib/B/Op_private.pm type=file
-E:\tlperl\lib/B/Showlex.pm type=file
-E:\tlperl\lib/B/Terse.pm type=file
-E:\tlperl\lib/B/Xref.pm type=file
-E:\tlperl\lib/Benchmark.pm type=file
-E:\tlperl\lib/CORE.pod type=file
-E:\tlperl\lib/CORE/EXTERN.h type=file
-E:\tlperl\lib/CORE/INTERN.h type=file
-E:\tlperl\lib/CORE/XSUB.h type=file
-E:\tlperl\lib/CORE/arpa/inet.h type=file
-E:\tlperl\lib/CORE/av.h type=file
-E:\tlperl\lib/CORE/bitcount.h type=file
-E:\tlperl\lib/CORE/charclass_invlists.h type=file
-E:\tlperl\lib/CORE/config.h type=file
-E:\tlperl\lib/CORE/cop.h type=file
-E:\tlperl\lib/CORE/cv.h type=file
-E:\tlperl\lib/CORE/dirent.h type=file
-E:\tlperl\lib/CORE/dosish.h type=file
-E:\tlperl\lib/CORE/ebcdic_tables.h type=file
-E:\tlperl\lib/CORE/embed.h type=file
-E:\tlperl\lib/CORE/embedvar.h type=file
-E:\tlperl\lib/CORE/fakesdio.h type=file
-E:\tlperl\lib/CORE/feature.h type=file
-E:\tlperl\lib/CORE/form.h type=file
-E:\tlperl\lib/CORE/git_version.h type=file
-E:\tlperl\lib/CORE/gv.h type=file
-E:\tlperl\lib/CORE/handy.h type=file
-E:\tlperl\lib/CORE/hv.h type=file
-E:\tlperl\lib/CORE/hv_func.h type=file
-E:\tlperl\lib/CORE/hv_macro.h type=file
-E:\tlperl\lib/CORE/inline.h type=file
-E:\tlperl\lib/CORE/intrpvar.h type=file
-E:\tlperl\lib/CORE/invlist_inline.h type=file
-E:\tlperl\lib/CORE/iperlsys.h type=file
-E:\tlperl\lib/CORE/keywords.h type=file
-E:\tlperl\lib/CORE/l1_char_class_tab.h type=file
-E:\tlperl\lib/CORE/libperl534.a type=file
-E:\tlperl\lib/CORE/malloc_ctl.h type=file
-E:\tlperl\lib/CORE/metaconfig.h type=file
-E:\tlperl\lib/CORE/mg.h type=file
-E:\tlperl\lib/CORE/mg_data.h type=file
-E:\tlperl\lib/CORE/mg_raw.h type=file
-E:\tlperl\lib/CORE/mg_vtable.h type=file
-E:\tlperl\lib/CORE/mydtrace.h type=file
-E:\tlperl\lib/CORE/netdb.h type=file
-E:\tlperl\lib/CORE/nostdio.h type=file
-E:\tlperl\lib/CORE/op.h type=file
-E:\tlperl\lib/CORE/op_reg_common.h type=file
-E:\tlperl\lib/CORE/opcode.h type=file
-E:\tlperl\lib/CORE/opnames.h type=file
-E:\tlperl\lib/CORE/overload.h type=file
-E:\tlperl\lib/CORE/pad.h type=file
-E:\tlperl\lib/CORE/parser.h type=file
-E:\tlperl\lib/CORE/patchlevel.h type=file
-E:\tlperl\lib/CORE/perl.h type=file
-E:\tlperl\lib/CORE/perl_inc_macro.h type=file
-E:\tlperl\lib/CORE/perl_langinfo.h type=file
-E:\tlperl\lib/CORE/perl_siphash.h type=file
-E:\tlperl\lib/CORE/perlapi.h type=file
-E:\tlperl\lib/CORE/perlhost.h type=file
-E:\tlperl\lib/CORE/perlio.h type=file
-E:\tlperl\lib/CORE/perliol.h type=file
-E:\tlperl\lib/CORE/perlsdio.h type=file
-E:\tlperl\lib/CORE/perlvars.h type=file
-E:\tlperl\lib/CORE/perly.h type=file
-E:\tlperl\lib/CORE/pp.h type=file
-E:\tlperl\lib/CORE/pp_proto.h type=file
-E:\tlperl\lib/CORE/proto.h type=file
-E:\tlperl\lib/CORE/reentr.h type=file
-E:\tlperl\lib/CORE/regcharclass.h type=file
-E:\tlperl\lib/CORE/regcomp.h type=file
-E:\tlperl\lib/CORE/regexp.h type=file
-E:\tlperl\lib/CORE/regnodes.h type=file
-E:\tlperl\lib/CORE/sbox32_hash.h type=file
-E:\tlperl\lib/CORE/scope.h type=file
-E:\tlperl\lib/CORE/sv.h type=file
-E:\tlperl\lib/CORE/sys/errno2.h type=file
-E:\tlperl\lib/CORE/sys/socket.h type=file
-E:\tlperl\lib/CORE/thread.h type=file
-E:\tlperl\lib/CORE/time64.h type=file
-E:\tlperl\lib/CORE/time64_config.h type=file
-E:\tlperl\lib/CORE/uconfig.h type=file
-E:\tlperl\lib/CORE/uni_keywords.h type=file
-E:\tlperl\lib/CORE/unicode_constants.h type=file
-E:\tlperl\lib/CORE/unixish.h type=file
-E:\tlperl\lib/CORE/utf8.h type=file
-E:\tlperl\lib/CORE/utfebcdic.h type=file
-E:\tlperl\lib/CORE/util.h type=file
-E:\tlperl\lib/CORE/uudmap.h type=file
-E:\tlperl\lib/CORE/vdir.h type=file
-E:\tlperl\lib/CORE/vmem.h type=file
-E:\tlperl\lib/CORE/vutil.h type=file
-E:\tlperl\lib/CORE/warnings.h type=file
-E:\tlperl\lib/CORE/win32.h type=file
-E:\tlperl\lib/CORE/win32iop.h type=file
-E:\tlperl\lib/CORE/win32thread.h type=file
-E:\tlperl\lib/CORE/zaphod32_hash.h type=file
-E:\tlperl\lib/CPAN.pm type=file
-E:\tlperl\lib/CPAN/API/HOWTO.pod type=file
-E:\tlperl\lib/CPAN/Author.pm type=file
-E:\tlperl\lib/CPAN/Bundle.pm type=file
-E:\tlperl\lib/CPAN/CacheMgr.pm type=file
-E:\tlperl\lib/CPAN/Complete.pm type=file
-E:\tlperl\lib/CPAN/Debug.pm type=file
-E:\tlperl\lib/CPAN/DeferredCode.pm type=file
-E:\tlperl\lib/CPAN/Distribution.pm type=file
-E:\tlperl\lib/CPAN/Distroprefs.pm type=file
-E:\tlperl\lib/CPAN/Distrostatus.pm type=file
-E:\tlperl\lib/CPAN/Exception/RecursiveDependency.pm type=file
-E:\tlperl\lib/CPAN/Exception/blocked_urllist.pm type=file
-E:\tlperl\lib/CPAN/Exception/yaml_not_installed.pm type=file
-E:\tlperl\lib/CPAN/Exception/yaml_process_error.pm type=file
-E:\tlperl\lib/CPAN/FTP.pm type=file
-E:\tlperl\lib/CPAN/FTP/netrc.pm type=file
-E:\tlperl\lib/CPAN/FirstTime.pm type=file
-E:\tlperl\lib/CPAN/HTTP/Client.pm type=file
-E:\tlperl\lib/CPAN/HTTP/Credentials.pm type=file
-E:\tlperl\lib/CPAN/HandleConfig.pm type=file
-E:\tlperl\lib/CPAN/Index.pm type=file
-E:\tlperl\lib/CPAN/InfoObj.pm type=file
-E:\tlperl\lib/CPAN/Kwalify.pm type=file
-E:\tlperl\lib/CPAN/Kwalify/distroprefs.dd type=file
-E:\tlperl\lib/CPAN/Kwalify/distroprefs.yml type=file
-E:\tlperl\lib/CPAN/LWP/UserAgent.pm type=file
-E:\tlperl\lib/CPAN/Meta.pm type=file
-E:\tlperl\lib/CPAN/Meta/Converter.pm type=file
-E:\tlperl\lib/CPAN/Meta/Feature.pm type=file
-E:\tlperl\lib/CPAN/Meta/History.pm type=file
-E:\tlperl\lib/CPAN/Meta/History/Meta_1_0.pod type=file
-E:\tlperl\lib/CPAN/Meta/History/Meta_1_1.pod type=file
-E:\tlperl\lib/CPAN/Meta/History/Meta_1_2.pod type=file
-E:\tlperl\lib/CPAN/Meta/History/Meta_1_3.pod type=file
-E:\tlperl\lib/CPAN/Meta/History/Meta_1_4.pod type=file
-E:\tlperl\lib/CPAN/Meta/Merge.pm type=file
-E:\tlperl\lib/CPAN/Meta/Prereqs.pm type=file
-E:\tlperl\lib/CPAN/Meta/Requirements.pm type=file
-E:\tlperl\lib/CPAN/Meta/Spec.pm type=file
-E:\tlperl\lib/CPAN/Meta/Validator.pm type=file
-E:\tlperl\lib/CPAN/Meta/YAML.pm type=file
-E:\tlperl\lib/CPAN/Mirrors.pm type=file
-E:\tlperl\lib/CPAN/Module.pm type=file
-E:\tlperl\lib/CPAN/Nox.pm type=file
-E:\tlperl\lib/CPAN/Plugin.pm type=file
-E:\tlperl\lib/CPAN/Plugin/Specfile.pm type=file
-E:\tlperl\lib/CPAN/Prompt.pm type=file
-E:\tlperl\lib/CPAN/Queue.pm type=file
-E:\tlperl\lib/CPAN/Shell.pm type=file
-E:\tlperl\lib/CPAN/Tarzip.pm type=file
-E:\tlperl\lib/CPAN/URL.pm type=file
-E:\tlperl\lib/CPAN/Version.pm type=file
-E:\tlperl\lib/Carp.pm type=file
-E:\tlperl\lib/Carp/Heavy.pm type=file
-E:\tlperl\lib/Class/Struct.pm type=file
-E:\tlperl\lib/Compress/Raw/Bzip2.pm type=file
-E:\tlperl\lib/Compress/Raw/Zlib.pm type=file
-E:\tlperl\lib/Compress/Zlib.pm type=file
-E:\tlperl\lib/Config.pm type=file
-E:\tlperl\lib/Config.pod type=file
-E:\tlperl\lib/Config/Extensions.pm type=file
-E:\tlperl\lib/Config/Perl/V.pm type=file
-E:\tlperl\lib/Config_git.pl type=file
-E:\tlperl\lib/Config_heavy.pl type=file
-E:\tlperl\lib/Cwd.pm type=file
-E:\tlperl\lib/DB.pm type=file
-E:\tlperl\lib/DBM_Filter.pm type=file
-E:\tlperl\lib/DBM_Filter/compress.pm type=file
-E:\tlperl\lib/DBM_Filter/encode.pm type=file
-E:\tlperl\lib/DBM_Filter/int32.pm type=file
-E:\tlperl\lib/DBM_Filter/null.pm type=file
-E:\tlperl\lib/DBM_Filter/utf8.pm type=file
-E:\tlperl\lib/Data/Dumper.pm type=file
-E:\tlperl\lib/Devel/PPPort.pm type=file
-E:\tlperl\lib/Devel/Peek.pm type=file
-E:\tlperl\lib/Devel/SelfStubber.pm type=file
-E:\tlperl\lib/Digest.pm type=file
-E:\tlperl\lib/Digest/MD5.pm type=file
-E:\tlperl\lib/Digest/SHA.pm type=file
-E:\tlperl\lib/Digest/base.pm type=file
-E:\tlperl\lib/Digest/file.pm type=file
-E:\tlperl\lib/DirHandle.pm type=file
-E:\tlperl\lib/Dumpvalue.pm type=file
-E:\tlperl\lib/DynaLoader.pm type=file
-E:\tlperl\lib/Encode.pm type=file
-E:\tlperl\lib/Encode/Alias.pm type=file
-E:\tlperl\lib/Encode/Byte.pm type=file
-E:\tlperl\lib/Encode/CJKConstants.pm type=file
-E:\tlperl\lib/Encode/CN.pm type=file
-E:\tlperl\lib/Encode/CN/HZ.pm type=file
-E:\tlperl\lib/Encode/Changes.e2x type=file
-E:\tlperl\lib/Encode/Config.pm type=file
-E:\tlperl\lib/Encode/ConfigLocal_PM.e2x type=file
-E:\tlperl\lib/Encode/EBCDIC.pm type=file
-E:\tlperl\lib/Encode/Encoder.pm type=file
-E:\tlperl\lib/Encode/Encoding.pm type=file
-E:\tlperl\lib/Encode/GSM0338.pm type=file
-E:\tlperl\lib/Encode/Guess.pm type=file
-E:\tlperl\lib/Encode/JP.pm type=file
-E:\tlperl\lib/Encode/JP/H2Z.pm type=file
-E:\tlperl\lib/Encode/JP/JIS7.pm type=file
-E:\tlperl\lib/Encode/KR.pm type=file
-E:\tlperl\lib/Encode/KR/2022_KR.pm type=file
-E:\tlperl\lib/Encode/MIME/Header.pm type=file
-E:\tlperl\lib/Encode/MIME/Header/ISO_2022_JP.pm type=file
-E:\tlperl\lib/Encode/MIME/Name.pm type=file
-E:\tlperl\lib/Encode/Makefile_PL.e2x type=file
-E:\tlperl\lib/Encode/PerlIO.pod type=file
-E:\tlperl\lib/Encode/README.e2x type=file
-E:\tlperl\lib/Encode/Supported.pod type=file
-E:\tlperl\lib/Encode/Symbol.pm type=file
-E:\tlperl\lib/Encode/TW.pm type=file
-E:\tlperl\lib/Encode/Unicode.pm type=file
-E:\tlperl\lib/Encode/Unicode/UTF7.pm type=file
-E:\tlperl\lib/Encode/_PM.e2x type=file
-E:\tlperl\lib/Encode/_T.e2x type=file
-E:\tlperl\lib/Encode/encode.h type=file
-E:\tlperl\lib/English.pm type=file
-E:\tlperl\lib/Env.pm type=file
-E:\tlperl\lib/Errno.pm type=file
-E:\tlperl\lib/Exporter.pm type=file
-E:\tlperl\lib/Exporter/Heavy.pm type=file
-E:\tlperl\lib/ExtUtils/CBuilder.pm type=file
-E:\tlperl\lib/ExtUtils/CBuilder/Base.pm type=file
-E:\tlperl\lib/ExtUtils/CBuilder/Platform/Unix.pm type=file
-E:\tlperl\lib/ExtUtils/CBuilder/Platform/VMS.pm type=file
-E:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows.pm type=file
-E:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm type=file
-E:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm type=file
-E:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm type=file
-E:\tlperl\lib/ExtUtils/CBuilder/Platform/aix.pm type=file
-E:\tlperl\lib/ExtUtils/CBuilder/Platform/android.pm type=file
-E:\tlperl\lib/ExtUtils/CBuilder/Platform/cygwin.pm type=file
-E:\tlperl\lib/ExtUtils/CBuilder/Platform/darwin.pm type=file
-E:\tlperl\lib/ExtUtils/CBuilder/Platform/dec_osf.pm type=file
-E:\tlperl\lib/ExtUtils/CBuilder/Platform/os2.pm type=file
-E:\tlperl\lib/ExtUtils/Command.pm type=file
-E:\tlperl\lib/ExtUtils/Command/MM.pm type=file
-E:\tlperl\lib/ExtUtils/Constant.pm type=file
-E:\tlperl\lib/ExtUtils/Constant/Base.pm type=file
-E:\tlperl\lib/ExtUtils/Constant/ProxySubs.pm type=file
-E:\tlperl\lib/ExtUtils/Constant/Utils.pm type=file
-E:\tlperl\lib/ExtUtils/Constant/XS.pm type=file
-E:\tlperl\lib/ExtUtils/Embed.pm type=file
-E:\tlperl\lib/ExtUtils/Install.pm type=file
-E:\tlperl\lib/ExtUtils/Installed.pm type=file
-E:\tlperl\lib/ExtUtils/Liblist.pm type=file
-E:\tlperl\lib/ExtUtils/Liblist/Kid.pm type=file
-E:\tlperl\lib/ExtUtils/MANIFEST.SKIP type=file
-E:\tlperl\lib/ExtUtils/MM.pm type=file
-E:\tlperl\lib/ExtUtils/MM_AIX.pm type=file
-E:\tlperl\lib/ExtUtils/MM_Any.pm type=file
-E:\tlperl\lib/ExtUtils/MM_BeOS.pm type=file
-E:\tlperl\lib/ExtUtils/MM_Cygwin.pm type=file
-E:\tlperl\lib/ExtUtils/MM_DOS.pm type=file
-E:\tlperl\lib/ExtUtils/MM_Darwin.pm type=file
-E:\tlperl\lib/ExtUtils/MM_MacOS.pm type=file
-E:\tlperl\lib/ExtUtils/MM_NW5.pm type=file
-E:\tlperl\lib/ExtUtils/MM_OS2.pm type=file
-E:\tlperl\lib/ExtUtils/MM_OS390.pm type=file
-E:\tlperl\lib/ExtUtils/MM_QNX.pm type=file
-E:\tlperl\lib/ExtUtils/MM_UWIN.pm type=file
-E:\tlperl\lib/ExtUtils/MM_Unix.pm type=file
-E:\tlperl\lib/ExtUtils/MM_VMS.pm type=file
-E:\tlperl\lib/ExtUtils/MM_VOS.pm type=file
-E:\tlperl\lib/ExtUtils/MM_Win32.pm type=file
-E:\tlperl\lib/ExtUtils/MM_Win95.pm type=file
-E:\tlperl\lib/ExtUtils/MY.pm type=file
-E:\tlperl\lib/ExtUtils/MakeMaker.pm type=file
-E:\tlperl\lib/ExtUtils/MakeMaker/Config.pm type=file
-E:\tlperl\lib/ExtUtils/MakeMaker/FAQ.pod type=file
-E:\tlperl\lib/ExtUtils/MakeMaker/Locale.pm type=file
-E:\tlperl\lib/ExtUtils/MakeMaker/Tutorial.pod type=file
-E:\tlperl\lib/ExtUtils/MakeMaker/version.pm type=file
-E:\tlperl\lib/ExtUtils/Manifest.pm type=file
-E:\tlperl\lib/ExtUtils/Miniperl.pm type=file
-E:\tlperl\lib/ExtUtils/Mkbootstrap.pm type=file
-E:\tlperl\lib/ExtUtils/Mksymlists.pm type=file
-E:\tlperl\lib/ExtUtils/PL2Bat.pm type=file
-E:\tlperl\lib/ExtUtils/Packlist.pm type=file
-E:\tlperl\lib/ExtUtils/ParseXS.pm type=file
-E:\tlperl\lib/ExtUtils/ParseXS.pod type=file
-E:\tlperl\lib/ExtUtils/ParseXS/Constants.pm type=file
-E:\tlperl\lib/ExtUtils/ParseXS/CountLines.pm type=file
-E:\tlperl\lib/ExtUtils/ParseXS/Eval.pm type=file
-E:\tlperl\lib/ExtUtils/ParseXS/Utilities.pm type=file
-E:\tlperl\lib/ExtUtils/Typemaps.pm type=file
-E:\tlperl\lib/ExtUtils/Typemaps/Cmd.pm type=file
-E:\tlperl\lib/ExtUtils/Typemaps/InputMap.pm type=file
-E:\tlperl\lib/ExtUtils/Typemaps/OutputMap.pm type=file
-E:\tlperl\lib/ExtUtils/Typemaps/Type.pm type=file
-E:\tlperl\lib/ExtUtils/testlib.pm type=file
-E:\tlperl\lib/ExtUtils/typemap type=file
-E:\tlperl\lib/ExtUtils/xsubpp type=file
-E:\tlperl\lib/Fatal.pm type=file
-E:\tlperl\lib/Fcntl.pm type=file
-E:\tlperl\lib/File/Basename.pm type=file
-E:\tlperl\lib/File/Compare.pm type=file
-E:\tlperl\lib/File/Copy.pm type=file
-E:\tlperl\lib/File/DosGlob.pm type=file
-E:\tlperl\lib/File/Fetch.pm type=file
-E:\tlperl\lib/File/Find.pm type=file
-E:\tlperl\lib/File/Glob.pm type=file
-E:\tlperl\lib/File/GlobMapper.pm type=file
-E:\tlperl\lib/File/Path.pm type=file
-E:\tlperl\lib/File/Spec.pm type=file
-E:\tlperl\lib/File/Spec/AmigaOS.pm type=file
-E:\tlperl\lib/File/Spec/Cygwin.pm type=file
-E:\tlperl\lib/File/Spec/Epoc.pm type=file
-E:\tlperl\lib/File/Spec/Functions.pm type=file
-E:\tlperl\lib/File/Spec/Mac.pm type=file
-E:\tlperl\lib/File/Spec/OS2.pm type=file
-E:\tlperl\lib/File/Spec/Unix.pm type=file
-E:\tlperl\lib/File/Spec/VMS.pm type=file
-E:\tlperl\lib/File/Spec/Win32.pm type=file
-E:\tlperl\lib/File/Temp.pm type=file
-E:\tlperl\lib/File/stat.pm type=file
-E:\tlperl\lib/FileCache.pm type=file
-E:\tlperl\lib/FileHandle.pm type=file
-E:\tlperl\lib/Filter/Simple.pm type=file
-E:\tlperl\lib/Filter/Util/Call.pm type=file
-E:\tlperl\lib/FindBin.pm type=file
-E:\tlperl\lib/Getopt/Long.pm type=file
-E:\tlperl\lib/Getopt/Std.pm type=file
-E:\tlperl\lib/HTTP/Tiny.pm type=file
-E:\tlperl\lib/Hash/Util.pm type=file
-E:\tlperl\lib/Hash/Util/FieldHash.pm type=file
-E:\tlperl\lib/I18N/Collate.pm type=file
-E:\tlperl\lib/I18N/LangTags.pm type=file
-E:\tlperl\lib/I18N/LangTags/Detect.pm type=file
-E:\tlperl\lib/I18N/LangTags/List.pm type=file
-E:\tlperl\lib/I18N/Langinfo.pm type=file
-E:\tlperl\lib/IO.pm type=file
-E:\tlperl\lib/IO/Compress/Adapter/Bzip2.pm type=file
-E:\tlperl\lib/IO/Compress/Adapter/Deflate.pm type=file
-E:\tlperl\lib/IO/Compress/Adapter/Identity.pm type=file
-E:\tlperl\lib/IO/Compress/Base.pm type=file
-E:\tlperl\lib/IO/Compress/Base/Common.pm type=file
-E:\tlperl\lib/IO/Compress/Bzip2.pm type=file
-E:\tlperl\lib/IO/Compress/Deflate.pm type=file
-E:\tlperl\lib/IO/Compress/FAQ.pod type=file
-E:\tlperl\lib/IO/Compress/Gzip.pm type=file
-E:\tlperl\lib/IO/Compress/Gzip/Constants.pm type=file
-E:\tlperl\lib/IO/Compress/RawDeflate.pm type=file
-E:\tlperl\lib/IO/Compress/Zip.pm type=file
-E:\tlperl\lib/IO/Compress/Zip/Constants.pm type=file
-E:\tlperl\lib/IO/Compress/Zlib/Constants.pm type=file
-E:\tlperl\lib/IO/Compress/Zlib/Extra.pm type=file
-E:\tlperl\lib/IO/Dir.pm type=file
-E:\tlperl\lib/IO/File.pm type=file
-E:\tlperl\lib/IO/Handle.pm type=file
-E:\tlperl\lib/IO/Pipe.pm type=file
-E:\tlperl\lib/IO/Poll.pm type=file
-E:\tlperl\lib/IO/Seekable.pm type=file
-E:\tlperl\lib/IO/Select.pm type=file
-E:\tlperl\lib/IO/Socket.pm type=file
-E:\tlperl\lib/IO/Socket/INET.pm type=file
-E:\tlperl\lib/IO/Socket/IP.pm type=file
-E:\tlperl\lib/IO/Socket/UNIX.pm type=file
-E:\tlperl\lib/IO/Uncompress/Adapter/Bunzip2.pm type=file
-E:\tlperl\lib/IO/Uncompress/Adapter/Identity.pm type=file
-E:\tlperl\lib/IO/Uncompress/Adapter/Inflate.pm type=file
-E:\tlperl\lib/IO/Uncompress/AnyInflate.pm type=file
-E:\tlperl\lib/IO/Uncompress/AnyUncompress.pm type=file
-E:\tlperl\lib/IO/Uncompress/Base.pm type=file
-E:\tlperl\lib/IO/Uncompress/Bunzip2.pm type=file
-E:\tlperl\lib/IO/Uncompress/Gunzip.pm type=file
-E:\tlperl\lib/IO/Uncompress/Inflate.pm type=file
-E:\tlperl\lib/IO/Uncompress/RawInflate.pm type=file
-E:\tlperl\lib/IO/Uncompress/Unzip.pm type=file
-E:\tlperl\lib/IO/Zlib.pm type=file
-E:\tlperl\lib/IPC/Cmd.pm type=file
-E:\tlperl\lib/IPC/Open2.pm type=file
-E:\tlperl\lib/IPC/Open3.pm type=file
-E:\tlperl\lib/Internals.pod type=file
-E:\tlperl\lib/JSON/PP.pm type=file
-E:\tlperl\lib/JSON/PP/Boolean.pm type=file
-E:\tlperl\lib/List/Util.pm type=file
-E:\tlperl\lib/List/Util/XS.pm type=file
-E:\tlperl\lib/Locale/Maketext.pm type=file
-E:\tlperl\lib/Locale/Maketext.pod type=file
-E:\tlperl\lib/Locale/Maketext/Cookbook.pod type=file
-E:\tlperl\lib/Locale/Maketext/Guts.pm type=file
-E:\tlperl\lib/Locale/Maketext/GutsLoader.pm type=file
-E:\tlperl\lib/Locale/Maketext/Simple.pm type=file
-E:\tlperl\lib/Locale/Maketext/TPJ13.pod type=file
-E:\tlperl\lib/MIME/Base64.pm type=file
-E:\tlperl\lib/MIME/QuotedPrint.pm type=file
-E:\tlperl\lib/Math/BigFloat.pm type=file
-E:\tlperl\lib/Math/BigFloat/Trace.pm type=file
-E:\tlperl\lib/Math/BigInt.pm type=file
-E:\tlperl\lib/Math/BigInt/Calc.pm type=file
-E:\tlperl\lib/Math/BigInt/FastCalc.pm type=file
-E:\tlperl\lib/Math/BigInt/Lib.pm type=file
-E:\tlperl\lib/Math/BigInt/Trace.pm type=file
-E:\tlperl\lib/Math/BigRat.pm type=file
-E:\tlperl\lib/Math/Complex.pm type=file
-E:\tlperl\lib/Math/Trig.pm type=file
-E:\tlperl\lib/Memoize.pm type=file
-E:\tlperl\lib/Memoize/AnyDBM_File.pm type=file
-E:\tlperl\lib/Memoize/Expire.pm type=file
-E:\tlperl\lib/Memoize/ExpireFile.pm type=file
-E:\tlperl\lib/Memoize/ExpireTest.pm type=file
-E:\tlperl\lib/Memoize/NDBM_File.pm type=file
-E:\tlperl\lib/Memoize/SDBM_File.pm type=file
-E:\tlperl\lib/Memoize/Storable.pm type=file
-E:\tlperl\lib/Module/CoreList.pm type=file
-E:\tlperl\lib/Module/CoreList.pod type=file
-E:\tlperl\lib/Module/CoreList/Utils.pm type=file
-E:\tlperl\lib/Module/Load.pm type=file
-E:\tlperl\lib/Module/Load/Conditional.pm type=file
-E:\tlperl\lib/Module/Loaded.pm type=file
-E:\tlperl\lib/Module/Metadata.pm type=file
-E:\tlperl\lib/NEXT.pm type=file
-E:\tlperl\lib/Net/Cmd.pm type=file
-E:\tlperl\lib/Net/Config.pm type=file
-E:\tlperl\lib/Net/Domain.pm type=file
-E:\tlperl\lib/Net/FTP.pm type=file
-E:\tlperl\lib/Net/FTP/A.pm type=file
-E:\tlperl\lib/Net/FTP/E.pm type=file
-E:\tlperl\lib/Net/FTP/I.pm type=file
-E:\tlperl\lib/Net/FTP/L.pm type=file
-E:\tlperl\lib/Net/FTP/dataconn.pm type=file
-E:\tlperl\lib/Net/NNTP.pm type=file
-E:\tlperl\lib/Net/Netrc.pm type=file
-E:\tlperl\lib/Net/POP3.pm type=file
-E:\tlperl\lib/Net/Ping.pm type=file
-E:\tlperl\lib/Net/SMTP.pm type=file
-E:\tlperl\lib/Net/Time.pm type=file
-E:\tlperl\lib/Net/hostent.pm type=file
-E:\tlperl\lib/Net/libnetFAQ.pod type=file
-E:\tlperl\lib/Net/netent.pm type=file
-E:\tlperl\lib/Net/protoent.pm type=file
-E:\tlperl\lib/Net/servent.pm type=file
-E:\tlperl\lib/O.pm type=file
-E:\tlperl\lib/Opcode.pm type=file
-E:\tlperl\lib/POSIX.pm type=file
-E:\tlperl\lib/POSIX.pod type=file
-E:\tlperl\lib/Params/Check.pm type=file
-E:\tlperl\lib/Parse/CPAN/Meta.pm type=file
-E:\tlperl\lib/Perl/OSType.pm type=file
-E:\tlperl\lib/PerlIO.pm type=file
-E:\tlperl\lib/PerlIO/encoding.pm type=file
-E:\tlperl\lib/PerlIO/mmap.pm type=file
-E:\tlperl\lib/PerlIO/scalar.pm type=file
-E:\tlperl\lib/PerlIO/via.pm type=file
-E:\tlperl\lib/PerlIO/via/QuotedPrint.pm type=file
-E:\tlperl\lib/Pod/Checker.pm type=file
-E:\tlperl\lib/Pod/Escapes.pm type=file
-E:\tlperl\lib/Pod/Functions.pm type=file
-E:\tlperl\lib/Pod/Html.pm type=file
-E:\tlperl\lib/Pod/Man.pm type=file
-E:\tlperl\lib/Pod/ParseLink.pm type=file
-E:\tlperl\lib/Pod/Perldoc.pm type=file
-E:\tlperl\lib/Pod/Perldoc/BaseTo.pm type=file
-E:\tlperl\lib/Pod/Perldoc/GetOptsOO.pm type=file
-E:\tlperl\lib/Pod/Perldoc/ToANSI.pm type=file
-E:\tlperl\lib/Pod/Perldoc/ToChecker.pm type=file
-E:\tlperl\lib/Pod/Perldoc/ToMan.pm type=file
-E:\tlperl\lib/Pod/Perldoc/ToNroff.pm type=file
-E:\tlperl\lib/Pod/Perldoc/ToPod.pm type=file
-E:\tlperl\lib/Pod/Perldoc/ToRtf.pm type=file
-E:\tlperl\lib/Pod/Perldoc/ToTerm.pm type=file
-E:\tlperl\lib/Pod/Perldoc/ToText.pm type=file
-E:\tlperl\lib/Pod/Perldoc/ToTk.pm type=file
-E:\tlperl\lib/Pod/Perldoc/ToXml.pm type=file
-E:\tlperl\lib/Pod/Simple.pm type=file
-E:\tlperl\lib/Pod/Simple.pod type=file
-E:\tlperl\lib/Pod/Simple/BlackBox.pm type=file
-E:\tlperl\lib/Pod/Simple/Checker.pm type=file
-E:\tlperl\lib/Pod/Simple/Debug.pm type=file
-E:\tlperl\lib/Pod/Simple/DumpAsText.pm type=file
-E:\tlperl\lib/Pod/Simple/DumpAsXML.pm type=file
-E:\tlperl\lib/Pod/Simple/HTML.pm type=file
-E:\tlperl\lib/Pod/Simple/HTMLBatch.pm type=file
-E:\tlperl\lib/Pod/Simple/HTMLLegacy.pm type=file
-E:\tlperl\lib/Pod/Simple/JustPod.pm type=file
-E:\tlperl\lib/Pod/Simple/LinkSection.pm type=file
-E:\tlperl\lib/Pod/Simple/Methody.pm type=file
-E:\tlperl\lib/Pod/Simple/Progress.pm type=file
-E:\tlperl\lib/Pod/Simple/PullParser.pm type=file
-E:\tlperl\lib/Pod/Simple/PullParserEndToken.pm type=file
-E:\tlperl\lib/Pod/Simple/PullParserStartToken.pm type=file
-E:\tlperl\lib/Pod/Simple/PullParserTextToken.pm type=file
-E:\tlperl\lib/Pod/Simple/PullParserToken.pm type=file
-E:\tlperl\lib/Pod/Simple/RTF.pm type=file
-E:\tlperl\lib/Pod/Simple/Search.pm type=file
-E:\tlperl\lib/Pod/Simple/SimpleTree.pm type=file
-E:\tlperl\lib/Pod/Simple/Subclassing.pod type=file
-E:\tlperl\lib/Pod/Simple/Text.pm type=file
-E:\tlperl\lib/Pod/Simple/TextContent.pm type=file
-E:\tlperl\lib/Pod/Simple/TiedOutFH.pm type=file
-E:\tlperl\lib/Pod/Simple/Transcode.pm type=file
-E:\tlperl\lib/Pod/Simple/TranscodeDumb.pm type=file
-E:\tlperl\lib/Pod/Simple/TranscodeSmart.pm type=file
-E:\tlperl\lib/Pod/Simple/XHTML.pm type=file
-E:\tlperl\lib/Pod/Simple/XMLOutStream.pm type=file
-E:\tlperl\lib/Pod/Text.pm type=file
-E:\tlperl\lib/Pod/Text/Color.pm type=file
-E:\tlperl\lib/Pod/Text/Overstrike.pm type=file
-E:\tlperl\lib/Pod/Text/Termcap.pm type=file
-E:\tlperl\lib/Pod/Usage.pm type=file
-E:\tlperl\lib/SDBM_File.pm type=file
-E:\tlperl\lib/Safe.pm type=file
-E:\tlperl\lib/Scalar/Util.pm type=file
-E:\tlperl\lib/Search/Dict.pm type=file
-E:\tlperl\lib/SelectSaver.pm type=file
-E:\tlperl\lib/SelfLoader.pm type=file
-E:\tlperl\lib/Socket.pm type=file
-E:\tlperl\lib/Storable.pm type=file
-E:\tlperl\lib/Sub/Util.pm type=file
-E:\tlperl\lib/Symbol.pm type=file
-E:\tlperl\lib/Sys/Hostname.pm type=file
-E:\tlperl\lib/TAP/Base.pm type=file
-E:\tlperl\lib/TAP/Formatter/Base.pm type=file
-E:\tlperl\lib/TAP/Formatter/Color.pm type=file
-E:\tlperl\lib/TAP/Formatter/Console.pm type=file
-E:\tlperl\lib/TAP/Formatter/Console/ParallelSession.pm type=file
-E:\tlperl\lib/TAP/Formatter/Console/Session.pm type=file
-E:\tlperl\lib/TAP/Formatter/File.pm type=file
-E:\tlperl\lib/TAP/Formatter/File/Session.pm type=file
-E:\tlperl\lib/TAP/Formatter/Session.pm type=file
-E:\tlperl\lib/TAP/Harness.pm type=file
-E:\tlperl\lib/TAP/Harness/Beyond.pod type=file
-E:\tlperl\lib/TAP/Harness/Env.pm type=file
-E:\tlperl\lib/TAP/Object.pm type=file
-E:\tlperl\lib/TAP/Parser.pm type=file
-E:\tlperl\lib/TAP/Parser/Aggregator.pm type=file
-E:\tlperl\lib/TAP/Parser/Grammar.pm type=file
-E:\tlperl\lib/TAP/Parser/Iterator.pm type=file
-E:\tlperl\lib/TAP/Parser/Iterator/Array.pm type=file
-E:\tlperl\lib/TAP/Parser/Iterator/Process.pm type=file
-E:\tlperl\lib/TAP/Parser/Iterator/Stream.pm type=file
-E:\tlperl\lib/TAP/Parser/IteratorFactory.pm type=file
-E:\tlperl\lib/TAP/Parser/Multiplexer.pm type=file
-E:\tlperl\lib/TAP/Parser/Result.pm type=file
-E:\tlperl\lib/TAP/Parser/Result/Bailout.pm type=file
-E:\tlperl\lib/TAP/Parser/Result/Comment.pm type=file
-E:\tlperl\lib/TAP/Parser/Result/Plan.pm type=file
-E:\tlperl\lib/TAP/Parser/Result/Pragma.pm type=file
-E:\tlperl\lib/TAP/Parser/Result/Test.pm type=file
-E:\tlperl\lib/TAP/Parser/Result/Unknown.pm type=file
-E:\tlperl\lib/TAP/Parser/Result/Version.pm type=file
-E:\tlperl\lib/TAP/Parser/Result/YAML.pm type=file
-E:\tlperl\lib/TAP/Parser/ResultFactory.pm type=file
-E:\tlperl\lib/TAP/Parser/Scheduler.pm type=file
-E:\tlperl\lib/TAP/Parser/Scheduler/Job.pm type=file
-E:\tlperl\lib/TAP/Parser/Scheduler/Spinner.pm type=file
-E:\tlperl\lib/TAP/Parser/Source.pm type=file
-E:\tlperl\lib/TAP/Parser/SourceHandler.pm type=file
-E:\tlperl\lib/TAP/Parser/SourceHandler/Executable.pm type=file
-E:\tlperl\lib/TAP/Parser/SourceHandler/File.pm type=file
-E:\tlperl\lib/TAP/Parser/SourceHandler/Handle.pm type=file
-E:\tlperl\lib/TAP/Parser/SourceHandler/Perl.pm type=file
-E:\tlperl\lib/TAP/Parser/SourceHandler/RawTAP.pm type=file
-E:\tlperl\lib/TAP/Parser/YAMLish/Reader.pm type=file
-E:\tlperl\lib/TAP/Parser/YAMLish/Writer.pm type=file
-E:\tlperl\lib/Term/ANSIColor.pm type=file
-E:\tlperl\lib/Term/Cap.pm type=file
-E:\tlperl\lib/Term/Complete.pm type=file
-E:\tlperl\lib/Term/ReadLine.pm type=file
-E:\tlperl\lib/Test.pm type=file
-E:\tlperl\lib/Test/Builder.pm type=file
-E:\tlperl\lib/Test/Builder/Formatter.pm type=file
-E:\tlperl\lib/Test/Builder/IO/Scalar.pm type=file
-E:\tlperl\lib/Test/Builder/Module.pm type=file
-E:\tlperl\lib/Test/Builder/Tester.pm type=file
-E:\tlperl\lib/Test/Builder/Tester/Color.pm type=file
-E:\tlperl\lib/Test/Builder/TodoDiag.pm type=file
-E:\tlperl\lib/Test/Harness.pm type=file
-E:\tlperl\lib/Test/More.pm type=file
-E:\tlperl\lib/Test/Simple.pm type=file
-E:\tlperl\lib/Test/Tester.pm type=file
-E:\tlperl\lib/Test/Tester/Capture.pm type=file
-E:\tlperl\lib/Test/Tester/CaptureRunner.pm type=file
-E:\tlperl\lib/Test/Tester/Delegate.pm type=file
-E:\tlperl\lib/Test/Tutorial.pod type=file
-E:\tlperl\lib/Test/use/ok.pm type=file
-E:\tlperl\lib/Test2.pm type=file
-E:\tlperl\lib/Test2/API.pm type=file
-E:\tlperl\lib/Test2/API/Breakage.pm type=file
-E:\tlperl\lib/Test2/API/Context.pm type=file
-E:\tlperl\lib/Test2/API/Instance.pm type=file
-E:\tlperl\lib/Test2/API/InterceptResult.pm type=file
-E:\tlperl\lib/Test2/API/InterceptResult/Event.pm type=file
-E:\tlperl\lib/Test2/API/InterceptResult/Facet.pm type=file
-E:\tlperl\lib/Test2/API/InterceptResult/Hub.pm type=file
-E:\tlperl\lib/Test2/API/InterceptResult/Squasher.pm type=file
-E:\tlperl\lib/Test2/API/Stack.pm type=file
-E:\tlperl\lib/Test2/Event.pm type=file
-E:\tlperl\lib/Test2/Event/Bail.pm type=file
-E:\tlperl\lib/Test2/Event/Diag.pm type=file
-E:\tlperl\lib/Test2/Event/Encoding.pm type=file
-E:\tlperl\lib/Test2/Event/Exception.pm type=file
-E:\tlperl\lib/Test2/Event/Fail.pm type=file
-E:\tlperl\lib/Test2/Event/Generic.pm type=file
-E:\tlperl\lib/Test2/Event/Note.pm type=file
-E:\tlperl\lib/Test2/Event/Ok.pm type=file
-E:\tlperl\lib/Test2/Event/Pass.pm type=file
-E:\tlperl\lib/Test2/Event/Plan.pm type=file
-E:\tlperl\lib/Test2/Event/Skip.pm type=file
-E:\tlperl\lib/Test2/Event/Subtest.pm type=file
-E:\tlperl\lib/Test2/Event/TAP/Version.pm type=file
-E:\tlperl\lib/Test2/Event/V2.pm type=file
-E:\tlperl\lib/Test2/Event/Waiting.pm type=file
-E:\tlperl\lib/Test2/EventFacet.pm type=file
-E:\tlperl\lib/Test2/EventFacet/About.pm type=file
-E:\tlperl\lib/Test2/EventFacet/Amnesty.pm type=file
-E:\tlperl\lib/Test2/EventFacet/Assert.pm type=file
-E:\tlperl\lib/Test2/EventFacet/Control.pm type=file
-E:\tlperl\lib/Test2/EventFacet/Error.pm type=file
-E:\tlperl\lib/Test2/EventFacet/Hub.pm type=file
-E:\tlperl\lib/Test2/EventFacet/Info.pm type=file
-E:\tlperl\lib/Test2/EventFacet/Info/Table.pm type=file
-E:\tlperl\lib/Test2/EventFacet/Meta.pm type=file
-E:\tlperl\lib/Test2/EventFacet/Parent.pm type=file
-E:\tlperl\lib/Test2/EventFacet/Plan.pm type=file
-E:\tlperl\lib/Test2/EventFacet/Render.pm type=file
-E:\tlperl\lib/Test2/EventFacet/Trace.pm type=file
-E:\tlperl\lib/Test2/Formatter.pm type=file
-E:\tlperl\lib/Test2/Formatter/TAP.pm type=file
-E:\tlperl\lib/Test2/Hub.pm type=file
-E:\tlperl\lib/Test2/Hub/Interceptor.pm type=file
-E:\tlperl\lib/Test2/Hub/Interceptor/Terminator.pm type=file
-E:\tlperl\lib/Test2/Hub/Subtest.pm type=file
-E:\tlperl\lib/Test2/IPC.pm type=file
-E:\tlperl\lib/Test2/IPC/Driver.pm type=file
-E:\tlperl\lib/Test2/IPC/Driver/Files.pm type=file
-E:\tlperl\lib/Test2/Tools/Tiny.pm type=file
-E:\tlperl\lib/Test2/Transition.pod type=file
-E:\tlperl\lib/Test2/Util.pm type=file
-E:\tlperl\lib/Test2/Util/ExternalMeta.pm type=file
-E:\tlperl\lib/Test2/Util/Facets2Legacy.pm type=file
-E:\tlperl\lib/Test2/Util/HashBase.pm type=file
-E:\tlperl\lib/Test2/Util/Trace.pm type=file
-E:\tlperl\lib/Text/Abbrev.pm type=file
-E:\tlperl\lib/Text/Balanced.pm type=file
-E:\tlperl\lib/Text/ParseWords.pm type=file
-E:\tlperl\lib/Text/Tabs.pm type=file
-E:\tlperl\lib/Text/Wrap.pm type=file
-E:\tlperl\lib/Thread.pm type=file
-E:\tlperl\lib/Thread/Queue.pm type=file
-E:\tlperl\lib/Thread/Semaphore.pm type=file
-E:\tlperl\lib/Tie/Array.pm type=file
-E:\tlperl\lib/Tie/File.pm type=file
-E:\tlperl\lib/Tie/Handle.pm type=file
-E:\tlperl\lib/Tie/Hash.pm type=file
-E:\tlperl\lib/Tie/Hash/NamedCapture.pm type=file
-E:\tlperl\lib/Tie/Memoize.pm type=file
-E:\tlperl\lib/Tie/RefHash.pm type=file
-E:\tlperl\lib/Tie/Scalar.pm type=file
-E:\tlperl\lib/Tie/StdHandle.pm type=file
-E:\tlperl\lib/Tie/SubstrHash.pm type=file
-E:\tlperl\lib/Time/HiRes.pm type=file
-E:\tlperl\lib/Time/Local.pm type=file
-E:\tlperl\lib/Time/Piece.pm type=file
-E:\tlperl\lib/Time/Seconds.pm type=file
-E:\tlperl\lib/Time/gmtime.pm type=file
-E:\tlperl\lib/Time/localtime.pm type=file
-E:\tlperl\lib/Time/tm.pm type=file
-E:\tlperl\lib/UNIVERSAL.pm type=file
-E:\tlperl\lib/Unicode/Collate.pm type=file
-E:\tlperl\lib/Unicode/Collate/CJK/Big5.pm type=file
-E:\tlperl\lib/Unicode/Collate/CJK/GB2312.pm type=file
-E:\tlperl\lib/Unicode/Collate/CJK/JISX0208.pm type=file
-E:\tlperl\lib/Unicode/Collate/CJK/Korean.pm type=file
-E:\tlperl\lib/Unicode/Collate/CJK/Pinyin.pm type=file
-E:\tlperl\lib/Unicode/Collate/CJK/Stroke.pm type=file
-E:\tlperl\lib/Unicode/Collate/CJK/Zhuyin.pm type=file
-E:\tlperl\lib/Unicode/Collate/Locale.pm type=file
-E:\tlperl\lib/Unicode/Collate/Locale/af.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/ar.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/as.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/az.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/be.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/bn.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/ca.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/cs.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/cu.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/cy.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/da.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/de_at_ph.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/de_phone.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/dsb.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/ee.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/eo.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/es.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/es_trad.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/et.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/fa.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/fi.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/fi_phone.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/fil.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/fo.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/fr_ca.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/gu.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/ha.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/haw.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/he.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/hi.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/hr.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/hu.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/hy.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/ig.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/is.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/ja.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/kk.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/kl.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/kn.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/ko.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/kok.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/lkt.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/ln.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/lt.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/lv.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/mk.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/ml.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/mr.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/mt.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/nb.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/nn.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/nso.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/om.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/or.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/pa.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/pl.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/ro.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/sa.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/se.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/si.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/si_dict.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/sk.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/sl.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/sq.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/sr.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/sv.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/sv_refo.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/ta.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/te.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/th.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/tn.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/to.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/tr.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/ug_cyrl.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/uk.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/ur.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/vi.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/vo.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/wae.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/wo.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/yo.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/zh.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/zh_big5.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/zh_gb.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/zh_pin.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/zh_strk.pl type=file
-E:\tlperl\lib/Unicode/Collate/Locale/zh_zhu.pl type=file
-E:\tlperl\lib/Unicode/Collate/allkeys.txt type=file
-E:\tlperl\lib/Unicode/Collate/keys.txt type=file
-E:\tlperl\lib/Unicode/Normalize.pm type=file
-E:\tlperl\lib/Unicode/UCD.pm type=file
-E:\tlperl\lib/User/grent.pm type=file
-E:\tlperl\lib/User/pwent.pm type=file
-E:\tlperl\lib/Win32.pm type=file
-E:\tlperl\lib/Win32API/File.pm type=file
-E:\tlperl\lib/Win32API/File/cFile.pc type=file
-E:\tlperl\lib/Win32CORE.pm type=file
-E:\tlperl\lib/XSLoader.pm type=file
-E:\tlperl\lib/_charnames.pm type=file
-E:\tlperl\lib/attributes.pm type=file
-E:\tlperl\lib/auto/B/B.dll type=file
-E:\tlperl\lib/auto/Compress/Raw/Bzip2/Bzip2.dll type=file
-E:\tlperl\lib/auto/Compress/Raw/Zlib/Zlib.dll type=file
-E:\tlperl\lib/auto/Cwd/Cwd.dll type=file
-E:\tlperl\lib/auto/Data/Dumper/Dumper.dll type=file
-E:\tlperl\lib/auto/Devel/Peek/Peek.dll type=file
-E:\tlperl\lib/auto/Digest/MD5/MD5.dll type=file
-E:\tlperl\lib/auto/Digest/SHA/SHA.dll type=file
-E:\tlperl\lib/auto/Encode/Byte/Byte.dll type=file
-E:\tlperl\lib/auto/Encode/CN/CN.dll type=file
-E:\tlperl\lib/auto/Encode/EBCDIC/EBCDIC.dll type=file
-E:\tlperl\lib/auto/Encode/Encode.dll type=file
-E:\tlperl\lib/auto/Encode/JP/JP.dll type=file
-E:\tlperl\lib/auto/Encode/KR/KR.dll type=file
-E:\tlperl\lib/auto/Encode/Symbol/Symbol.dll type=file
-E:\tlperl\lib/auto/Encode/TW/TW.dll type=file
-E:\tlperl\lib/auto/Encode/Unicode/Unicode.dll type=file
-E:\tlperl\lib/auto/Fcntl/Fcntl.dll type=file
-E:\tlperl\lib/auto/File/DosGlob/DosGlob.dll type=file
-E:\tlperl\lib/auto/File/Glob/Glob.dll type=file
-E:\tlperl\lib/auto/Filter/Util/Call/Call.dll type=file
-E:\tlperl\lib/auto/Hash/Util/FieldHash/FieldHash.dll type=file
-E:\tlperl\lib/auto/Hash/Util/Util.dll type=file
-E:\tlperl\lib/auto/I18N/Langinfo/Langinfo.dll type=file
-E:\tlperl\lib/auto/IO/IO.dll type=file
-E:\tlperl\lib/auto/List/Util/Util.dll type=file
-E:\tlperl\lib/auto/MIME/Base64/Base64.dll type=file
-E:\tlperl\lib/auto/Math/BigInt/FastCalc/FastCalc.dll type=file
-E:\tlperl\lib/auto/Opcode/Opcode.dll type=file
-E:\tlperl\lib/auto/POSIX/POSIX.dll type=file
-E:\tlperl\lib/auto/PerlIO/encoding/encoding.dll type=file
-E:\tlperl\lib/auto/PerlIO/mmap/mmap.dll type=file
-E:\tlperl\lib/auto/PerlIO/scalar/scalar.dll type=file
-E:\tlperl\lib/auto/PerlIO/via/via.dll type=file
-E:\tlperl\lib/auto/SDBM_File/SDBM_File.dll type=file
-E:\tlperl\lib/auto/Socket/Socket.dll type=file
-E:\tlperl\lib/auto/Storable/Storable.dll type=file
-E:\tlperl\lib/auto/Sys/Hostname/Hostname.dll type=file
-E:\tlperl\lib/auto/Time/HiRes/HiRes.dll type=file
-E:\tlperl\lib/auto/Time/Piece/Piece.dll type=file
-E:\tlperl\lib/auto/Unicode/Collate/Collate.dll type=file
-E:\tlperl\lib/auto/Unicode/Normalize/Normalize.dll type=file
-E:\tlperl\lib/auto/Win32/Win32.dll type=file
-E:\tlperl\lib/auto/Win32API/File/File.dll type=file
-E:\tlperl\lib/auto/Win32CORE/extralibs.ld type=file
-E:\tlperl\lib/auto/attributes/attributes.dll type=file
-E:\tlperl\lib/auto/mro/mro.dll type=file
-E:\tlperl\lib/auto/re/re.dll type=file
-E:\tlperl\lib/auto/threads/shared/shared.dll type=file
-E:\tlperl\lib/auto/threads/threads.dll type=file
-E:\tlperl\lib/autodie.pm type=file
-E:\tlperl\lib/autodie/Scope/Guard.pm type=file
-E:\tlperl\lib/autodie/Scope/GuardStack.pm type=file
-E:\tlperl\lib/autodie/Util.pm type=file
-E:\tlperl\lib/autodie/exception.pm type=file
-E:\tlperl\lib/autodie/exception/system.pm type=file
-E:\tlperl\lib/autodie/hints.pm type=file
-E:\tlperl\lib/autodie/skip.pm type=file
-E:\tlperl\lib/autouse.pm type=file
-E:\tlperl\lib/base.pm type=file
-E:\tlperl\lib/bigint.pm type=file
-E:\tlperl\lib/bignum.pm type=file
-E:\tlperl\lib/bigrat.pm type=file
-E:\tlperl\lib/blib.pm type=file
-E:\tlperl\lib/bytes.pm type=file
-E:\tlperl\lib/bytes_heavy.pl type=file
-E:\tlperl\lib/charnames.pm type=file
-E:\tlperl\lib/constant.pm type=file
-E:\tlperl\lib/deprecate.pm type=file
-E:\tlperl\lib/diagnostics.pm type=file
-E:\tlperl\lib/dumpvar.pl type=file
-E:\tlperl\lib/encoding.pm type=file
-E:\tlperl\lib/encoding/warnings.pm type=file
-E:\tlperl\lib/experimental.pm type=file
-E:\tlperl\lib/feature.pm type=file
-E:\tlperl\lib/fields.pm type=file
-E:\tlperl\lib/filetest.pm type=file
-E:\tlperl\lib/if.pm type=file
-E:\tlperl\lib/integer.pm type=file
-E:\tlperl\lib/less.pm type=file
-E:\tlperl\lib/lib.pm type=file
-E:\tlperl\lib/locale.pm type=file
-E:\tlperl\lib/meta_notation.pm type=file
-E:\tlperl\lib/mro.pm type=file
-E:\tlperl\lib/ok.pm type=file
-E:\tlperl\lib/open.pm type=file
-E:\tlperl\lib/ops.pm type=file
-E:\tlperl\lib/overload.pm type=file
-E:\tlperl\lib/overload/numbers.pm type=file
-E:\tlperl\lib/overloading.pm type=file
-E:\tlperl\lib/parent.pm type=file
-E:\tlperl\lib/perl5db.pl type=file
-E:\tlperl\lib/perlfaq.pm type=file
-E:\tlperl\lib/pods/perl.pod type=file
-E:\tlperl\lib/pods/perl5004delta.pod type=file
-E:\tlperl\lib/pods/perl5005delta.pod type=file
-E:\tlperl\lib/pods/perl5100delta.pod type=file
-E:\tlperl\lib/pods/perl5101delta.pod type=file
-E:\tlperl\lib/pods/perl5120delta.pod type=file
-E:\tlperl\lib/pods/perl5121delta.pod type=file
-E:\tlperl\lib/pods/perl5122delta.pod type=file
-E:\tlperl\lib/pods/perl5123delta.pod type=file
-E:\tlperl\lib/pods/perl5124delta.pod type=file
-E:\tlperl\lib/pods/perl5125delta.pod type=file
-E:\tlperl\lib/pods/perl5140delta.pod type=file
-E:\tlperl\lib/pods/perl5141delta.pod type=file
-E:\tlperl\lib/pods/perl5142delta.pod type=file
-E:\tlperl\lib/pods/perl5143delta.pod type=file
-E:\tlperl\lib/pods/perl5144delta.pod type=file
-E:\tlperl\lib/pods/perl5160delta.pod type=file
-E:\tlperl\lib/pods/perl5161delta.pod type=file
-E:\tlperl\lib/pods/perl5162delta.pod type=file
-E:\tlperl\lib/pods/perl5163delta.pod type=file
-E:\tlperl\lib/pods/perl5180delta.pod type=file
-E:\tlperl\lib/pods/perl5181delta.pod type=file
-E:\tlperl\lib/pods/perl5182delta.pod type=file
-E:\tlperl\lib/pods/perl5184delta.pod type=file
-E:\tlperl\lib/pods/perl5200delta.pod type=file
-E:\tlperl\lib/pods/perl5201delta.pod type=file
-E:\tlperl\lib/pods/perl5202delta.pod type=file
-E:\tlperl\lib/pods/perl5203delta.pod type=file
-E:\tlperl\lib/pods/perl5220delta.pod type=file
-E:\tlperl\lib/pods/perl5221delta.pod type=file
-E:\tlperl\lib/pods/perl5222delta.pod type=file
-E:\tlperl\lib/pods/perl5223delta.pod type=file
-E:\tlperl\lib/pods/perl5224delta.pod type=file
-E:\tlperl\lib/pods/perl5240delta.pod type=file
-E:\tlperl\lib/pods/perl5241delta.pod type=file
-E:\tlperl\lib/pods/perl5242delta.pod type=file
-E:\tlperl\lib/pods/perl5243delta.pod type=file
-E:\tlperl\lib/pods/perl5244delta.pod type=file
-E:\tlperl\lib/pods/perl5260delta.pod type=file
-E:\tlperl\lib/pods/perl5261delta.pod type=file
-E:\tlperl\lib/pods/perl5262delta.pod type=file
-E:\tlperl\lib/pods/perl5263delta.pod type=file
-E:\tlperl\lib/pods/perl5280delta.pod type=file
-E:\tlperl\lib/pods/perl5281delta.pod type=file
-E:\tlperl\lib/pods/perl5282delta.pod type=file
-E:\tlperl\lib/pods/perl5283delta.pod type=file
-E:\tlperl\lib/pods/perl5300delta.pod type=file
-E:\tlperl\lib/pods/perl5301delta.pod type=file
-E:\tlperl\lib/pods/perl5302delta.pod type=file
-E:\tlperl\lib/pods/perl5303delta.pod type=file
-E:\tlperl\lib/pods/perl5320delta.pod type=file
-E:\tlperl\lib/pods/perl5321delta.pod type=file
-E:\tlperl\lib/pods/perl5340delta.pod type=file
-E:\tlperl\lib/pods/perl561delta.pod type=file
-E:\tlperl\lib/pods/perl56delta.pod type=file
-E:\tlperl\lib/pods/perl581delta.pod type=file
-E:\tlperl\lib/pods/perl582delta.pod type=file
-E:\tlperl\lib/pods/perl583delta.pod type=file
-E:\tlperl\lib/pods/perl584delta.pod type=file
-E:\tlperl\lib/pods/perl585delta.pod type=file
-E:\tlperl\lib/pods/perl586delta.pod type=file
-E:\tlperl\lib/pods/perl587delta.pod type=file
-E:\tlperl\lib/pods/perl588delta.pod type=file
-E:\tlperl\lib/pods/perl589delta.pod type=file
-E:\tlperl\lib/pods/perl58delta.pod type=file
-E:\tlperl\lib/pods/perlaix.pod type=file
-E:\tlperl\lib/pods/perlamiga.pod type=file
-E:\tlperl\lib/pods/perlandroid.pod type=file
-E:\tlperl\lib/pods/perlapi.pod type=file
-E:\tlperl\lib/pods/perlapio.pod type=file
-E:\tlperl\lib/pods/perlartistic.pod type=file
-E:\tlperl\lib/pods/perlbook.pod type=file
-E:\tlperl\lib/pods/perlboot.pod type=file
-E:\tlperl\lib/pods/perlbot.pod type=file
-E:\tlperl\lib/pods/perlbs2000.pod type=file
-E:\tlperl\lib/pods/perlcall.pod type=file
-E:\tlperl\lib/pods/perlcheat.pod type=file
-E:\tlperl\lib/pods/perlclib.pod type=file
-E:\tlperl\lib/pods/perlcn.pod type=file
-E:\tlperl\lib/pods/perlcommunity.pod type=file
-E:\tlperl\lib/pods/perlcygwin.pod type=file
-E:\tlperl\lib/pods/perldata.pod type=file
-E:\tlperl\lib/pods/perldbmfilter.pod type=file
-E:\tlperl\lib/pods/perldebguts.pod type=file
-E:\tlperl\lib/pods/perldebtut.pod type=file
-E:\tlperl\lib/pods/perldebug.pod type=file
-E:\tlperl\lib/pods/perldelta.pod type=file
-E:\tlperl\lib/pods/perldeprecation.pod type=file
-E:\tlperl\lib/pods/perldiag.pod type=file
-E:\tlperl\lib/pods/perldoc.pod type=file
-E:\tlperl\lib/pods/perldocstyle.pod type=file
-E:\tlperl\lib/pods/perldos.pod type=file
-E:\tlperl\lib/pods/perldsc.pod type=file
-E:\tlperl\lib/pods/perldtrace.pod type=file
-E:\tlperl\lib/pods/perlebcdic.pod type=file
-E:\tlperl\lib/pods/perlembed.pod type=file
-E:\tlperl\lib/pods/perlexperiment.pod type=file
-E:\tlperl\lib/pods/perlfaq.pod type=file
-E:\tlperl\lib/pods/perlfaq1.pod type=file
-E:\tlperl\lib/pods/perlfaq2.pod type=file
-E:\tlperl\lib/pods/perlfaq3.pod type=file
-E:\tlperl\lib/pods/perlfaq4.pod type=file
-E:\tlperl\lib/pods/perlfaq5.pod type=file
-E:\tlperl\lib/pods/perlfaq6.pod type=file
-E:\tlperl\lib/pods/perlfaq7.pod type=file
-E:\tlperl\lib/pods/perlfaq8.pod type=file
-E:\tlperl\lib/pods/perlfaq9.pod type=file
-E:\tlperl\lib/pods/perlfilter.pod type=file
-E:\tlperl\lib/pods/perlfork.pod type=file
-E:\tlperl\lib/pods/perlform.pod type=file
-E:\tlperl\lib/pods/perlfreebsd.pod type=file
-E:\tlperl\lib/pods/perlfunc.pod type=file
-E:\tlperl\lib/pods/perlgit.pod type=file
-E:\tlperl\lib/pods/perlglossary.pod type=file
-E:\tlperl\lib/pods/perlgov.pod type=file
-E:\tlperl\lib/pods/perlgpl.pod type=file
-E:\tlperl\lib/pods/perlguts.pod type=file
-E:\tlperl\lib/pods/perlhack.pod type=file
-E:\tlperl\lib/pods/perlhacktips.pod type=file
-E:\tlperl\lib/pods/perlhacktut.pod type=file
-E:\tlperl\lib/pods/perlhaiku.pod type=file
-E:\tlperl\lib/pods/perlhist.pod type=file
-E:\tlperl\lib/pods/perlhpux.pod type=file
-E:\tlperl\lib/pods/perlhurd.pod type=file
-E:\tlperl\lib/pods/perlintern.pod type=file
-E:\tlperl\lib/pods/perlinterp.pod type=file
-E:\tlperl\lib/pods/perlintro.pod type=file
-E:\tlperl\lib/pods/perliol.pod type=file
-E:\tlperl\lib/pods/perlipc.pod type=file
-E:\tlperl\lib/pods/perlirix.pod type=file
-E:\tlperl\lib/pods/perljp.pod type=file
-E:\tlperl\lib/pods/perlko.pod type=file
-E:\tlperl\lib/pods/perllexwarn.pod type=file
-E:\tlperl\lib/pods/perllinux.pod type=file
-E:\tlperl\lib/pods/perllocale.pod type=file
-E:\tlperl\lib/pods/perllol.pod type=file
-E:\tlperl\lib/pods/perlmacos.pod type=file
-E:\tlperl\lib/pods/perlmacosx.pod type=file
-E:\tlperl\lib/pods/perlmod.pod type=file
-E:\tlperl\lib/pods/perlmodinstall.pod type=file
-E:\tlperl\lib/pods/perlmodlib.pod type=file
-E:\tlperl\lib/pods/perlmodstyle.pod type=file
-E:\tlperl\lib/pods/perlmroapi.pod type=file
-E:\tlperl\lib/pods/perlnetware.pod type=file
-E:\tlperl\lib/pods/perlnewmod.pod type=file
-E:\tlperl\lib/pods/perlnumber.pod type=file
-E:\tlperl\lib/pods/perlobj.pod type=file
-E:\tlperl\lib/pods/perlootut.pod type=file
-E:\tlperl\lib/pods/perlop.pod type=file
-E:\tlperl\lib/pods/perlopenbsd.pod type=file
-E:\tlperl\lib/pods/perlopentut.pod type=file
-E:\tlperl\lib/pods/perlos2.pod type=file
-E:\tlperl\lib/pods/perlos390.pod type=file
-E:\tlperl\lib/pods/perlos400.pod type=file
-E:\tlperl\lib/pods/perlpacktut.pod type=file
-E:\tlperl\lib/pods/perlperf.pod type=file
-E:\tlperl\lib/pods/perlplan9.pod type=file
-E:\tlperl\lib/pods/perlpod.pod type=file
-E:\tlperl\lib/pods/perlpodspec.pod type=file
-E:\tlperl\lib/pods/perlpodstyle.pod type=file
-E:\tlperl\lib/pods/perlpolicy.pod type=file
-E:\tlperl\lib/pods/perlport.pod type=file
-E:\tlperl\lib/pods/perlpragma.pod type=file
-E:\tlperl\lib/pods/perlqnx.pod type=file
-E:\tlperl\lib/pods/perlre.pod type=file
-E:\tlperl\lib/pods/perlreapi.pod type=file
-E:\tlperl\lib/pods/perlrebackslash.pod type=file
-E:\tlperl\lib/pods/perlrecharclass.pod type=file
-E:\tlperl\lib/pods/perlref.pod type=file
-E:\tlperl\lib/pods/perlreftut.pod type=file
-E:\tlperl\lib/pods/perlreguts.pod type=file
-E:\tlperl\lib/pods/perlrepository.pod type=file
-E:\tlperl\lib/pods/perlrequick.pod type=file
-E:\tlperl\lib/pods/perlreref.pod type=file
-E:\tlperl\lib/pods/perlretut.pod type=file
-E:\tlperl\lib/pods/perlriscos.pod type=file
-E:\tlperl\lib/pods/perlrun.pod type=file
-E:\tlperl\lib/pods/perlsec.pod type=file
-E:\tlperl\lib/pods/perlsecpolicy.pod type=file
-E:\tlperl\lib/pods/perlsolaris.pod type=file
-E:\tlperl\lib/pods/perlsource.pod type=file
-E:\tlperl\lib/pods/perlstyle.pod type=file
-E:\tlperl\lib/pods/perlsub.pod type=file
-E:\tlperl\lib/pods/perlsyn.pod type=file
-E:\tlperl\lib/pods/perlsynology.pod type=file
-E:\tlperl\lib/pods/perlthrtut.pod type=file
-E:\tlperl\lib/pods/perltie.pod type=file
-E:\tlperl\lib/pods/perltoc.pod type=file
-E:\tlperl\lib/pods/perltodo.pod type=file
-E:\tlperl\lib/pods/perltooc.pod type=file
-E:\tlperl\lib/pods/perltoot.pod type=file
-E:\tlperl\lib/pods/perltrap.pod type=file
-E:\tlperl\lib/pods/perltru64.pod type=file
-E:\tlperl\lib/pods/perltw.pod type=file
-E:\tlperl\lib/pods/perlunicode.pod type=file
-E:\tlperl\lib/pods/perlunicook.pod type=file
-E:\tlperl\lib/pods/perlunifaq.pod type=file
-E:\tlperl\lib/pods/perluniintro.pod type=file
-E:\tlperl\lib/pods/perluniprops.pod type=file
-E:\tlperl\lib/pods/perlunitut.pod type=file
-E:\tlperl\lib/pods/perlutil.pod type=file
-E:\tlperl\lib/pods/perlvar.pod type=file
-E:\tlperl\lib/pods/perlvms.pod type=file
-E:\tlperl\lib/pods/perlvos.pod type=file
-E:\tlperl\lib/pods/perlwin32.pod type=file
-E:\tlperl\lib/pods/perlxs.pod type=file
-E:\tlperl\lib/pods/perlxstut.pod type=file
-E:\tlperl\lib/pods/perlxstypemap.pod type=file
-E:\tlperl\lib/re.pm type=file
-E:\tlperl\lib/sigtrap.pm type=file
-E:\tlperl\lib/sort.pm type=file
-E:\tlperl\lib/strict.pm type=file
-E:\tlperl\lib/subs.pm type=file
-E:\tlperl\lib/threads.pm type=file
-E:\tlperl\lib/threads/shared.pm type=file
-E:\tlperl\lib/unicore/Blocks.txt type=file
-E:\tlperl\lib/unicore/CombiningClass.pl type=file
-E:\tlperl\lib/unicore/Decomposition.pl type=file
-E:\tlperl\lib/unicore/Name.pl type=file
-E:\tlperl\lib/unicore/Name.pm type=file
-E:\tlperl\lib/unicore/NamedSequences.txt type=file
-E:\tlperl\lib/unicore/SpecialCasing.txt type=file
-E:\tlperl\lib/unicore/To/Age.pl type=file
-E:\tlperl\lib/unicore/To/Bc.pl type=file
-E:\tlperl\lib/unicore/To/Bmg.pl type=file
-E:\tlperl\lib/unicore/To/Bpb.pl type=file
-E:\tlperl\lib/unicore/To/Bpt.pl type=file
-E:\tlperl\lib/unicore/To/Cf.pl type=file
-E:\tlperl\lib/unicore/To/Digit.pl type=file
-E:\tlperl\lib/unicore/To/Ea.pl type=file
-E:\tlperl\lib/unicore/To/EqUIdeo.pl type=file
-E:\tlperl\lib/unicore/To/Fold.pl type=file
-E:\tlperl\lib/unicore/To/GCB.pl type=file
-E:\tlperl\lib/unicore/To/Gc.pl type=file
-E:\tlperl\lib/unicore/To/Hst.pl type=file
-E:\tlperl\lib/unicore/To/Identif2.pl type=file
-E:\tlperl\lib/unicore/To/Identifi.pl type=file
-E:\tlperl\lib/unicore/To/InPC.pl type=file
-E:\tlperl\lib/unicore/To/InSC.pl type=file
-E:\tlperl\lib/unicore/To/Isc.pl type=file
-E:\tlperl\lib/unicore/To/Jg.pl type=file
-E:\tlperl\lib/unicore/To/Jt.pl type=file
-E:\tlperl\lib/unicore/To/Lb.pl type=file
-E:\tlperl\lib/unicore/To/Lc.pl type=file
-E:\tlperl\lib/unicore/To/Lower.pl type=file
-E:\tlperl\lib/unicore/To/NFCQC.pl type=file
-E:\tlperl\lib/unicore/To/NFDQC.pl type=file
-E:\tlperl\lib/unicore/To/NFKCCF.pl type=file
-E:\tlperl\lib/unicore/To/NFKCQC.pl type=file
-E:\tlperl\lib/unicore/To/NFKDQC.pl type=file
-E:\tlperl\lib/unicore/To/Na1.pl type=file
-E:\tlperl\lib/unicore/To/NameAlia.pl type=file
-E:\tlperl\lib/unicore/To/Nt.pl type=file
-E:\tlperl\lib/unicore/To/Nv.pl type=file
-E:\tlperl\lib/unicore/To/PerlDeci.pl type=file
-E:\tlperl\lib/unicore/To/SB.pl type=file
-E:\tlperl\lib/unicore/To/Sc.pl type=file
-E:\tlperl\lib/unicore/To/Scx.pl type=file
-E:\tlperl\lib/unicore/To/Tc.pl type=file
-E:\tlperl\lib/unicore/To/Title.pl type=file
-E:\tlperl\lib/unicore/To/Uc.pl type=file
-E:\tlperl\lib/unicore/To/Upper.pl type=file
-E:\tlperl\lib/unicore/To/Vo.pl type=file
-E:\tlperl\lib/unicore/To/WB.pl type=file
-E:\tlperl\lib/unicore/To/_PerlLB.pl type=file
-E:\tlperl\lib/unicore/To/_PerlSCX.pl type=file
-E:\tlperl\lib/unicore/UCD.pl type=file
-E:\tlperl\lib/unicore/lib/Age/NA.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V100.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V11.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V110.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V120.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V130.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V20.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V30.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V31.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V32.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V40.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V41.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V50.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V51.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V52.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V60.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V61.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V70.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V80.pl type=file
-E:\tlperl\lib/unicore/lib/Age/V90.pl type=file
-E:\tlperl\lib/unicore/lib/Alpha/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Bc/AL.pl type=file
-E:\tlperl\lib/unicore/lib/Bc/AN.pl type=file
-E:\tlperl\lib/unicore/lib/Bc/B.pl type=file
-E:\tlperl\lib/unicore/lib/Bc/BN.pl type=file
-E:\tlperl\lib/unicore/lib/Bc/CS.pl type=file
-E:\tlperl\lib/unicore/lib/Bc/EN.pl type=file
-E:\tlperl\lib/unicore/lib/Bc/ES.pl type=file
-E:\tlperl\lib/unicore/lib/Bc/ET.pl type=file
-E:\tlperl\lib/unicore/lib/Bc/L.pl type=file
-E:\tlperl\lib/unicore/lib/Bc/NSM.pl type=file
-E:\tlperl\lib/unicore/lib/Bc/ON.pl type=file
-E:\tlperl\lib/unicore/lib/Bc/R.pl type=file
-E:\tlperl\lib/unicore/lib/Bc/WS.pl type=file
-E:\tlperl\lib/unicore/lib/BidiC/Y.pl type=file
-E:\tlperl\lib/unicore/lib/BidiM/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Blk/NB.pl type=file
-E:\tlperl\lib/unicore/lib/Bpt/C.pl type=file
-E:\tlperl\lib/unicore/lib/Bpt/N.pl type=file
-E:\tlperl\lib/unicore/lib/Bpt/O.pl type=file
-E:\tlperl\lib/unicore/lib/CE/Y.pl type=file
-E:\tlperl\lib/unicore/lib/CI/Y.pl type=file
-E:\tlperl\lib/unicore/lib/CWCF/Y.pl type=file
-E:\tlperl\lib/unicore/lib/CWCM/Y.pl type=file
-E:\tlperl\lib/unicore/lib/CWKCF/Y.pl type=file
-E:\tlperl\lib/unicore/lib/CWL/Y.pl type=file
-E:\tlperl\lib/unicore/lib/CWT/Y.pl type=file
-E:\tlperl\lib/unicore/lib/CWU/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Cased/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Ccc/A.pl type=file
-E:\tlperl\lib/unicore/lib/Ccc/AL.pl type=file
-E:\tlperl\lib/unicore/lib/Ccc/AR.pl type=file
-E:\tlperl\lib/unicore/lib/Ccc/ATAR.pl type=file
-E:\tlperl\lib/unicore/lib/Ccc/B.pl type=file
-E:\tlperl\lib/unicore/lib/Ccc/BR.pl type=file
-E:\tlperl\lib/unicore/lib/Ccc/DB.pl type=file
-E:\tlperl\lib/unicore/lib/Ccc/NK.pl type=file
-E:\tlperl\lib/unicore/lib/Ccc/NR.pl type=file
-E:\tlperl\lib/unicore/lib/Ccc/OV.pl type=file
-E:\tlperl\lib/unicore/lib/Ccc/VR.pl type=file
-E:\tlperl\lib/unicore/lib/CompEx/Y.pl type=file
-E:\tlperl\lib/unicore/lib/DI/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Dash/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Dep/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Dia/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Dt/Com.pl type=file
-E:\tlperl\lib/unicore/lib/Dt/Enc.pl type=file
-E:\tlperl\lib/unicore/lib/Dt/Fin.pl type=file
-E:\tlperl\lib/unicore/lib/Dt/Font.pl type=file
-E:\tlperl\lib/unicore/lib/Dt/Init.pl type=file
-E:\tlperl\lib/unicore/lib/Dt/Iso.pl type=file
-E:\tlperl\lib/unicore/lib/Dt/Med.pl type=file
-E:\tlperl\lib/unicore/lib/Dt/Nar.pl type=file
-E:\tlperl\lib/unicore/lib/Dt/Nb.pl type=file
-E:\tlperl\lib/unicore/lib/Dt/NonCanon.pl type=file
-E:\tlperl\lib/unicore/lib/Dt/Sqr.pl type=file
-E:\tlperl\lib/unicore/lib/Dt/Sub.pl type=file
-E:\tlperl\lib/unicore/lib/Dt/Sup.pl type=file
-E:\tlperl\lib/unicore/lib/Dt/Vert.pl type=file
-E:\tlperl\lib/unicore/lib/EBase/Y.pl type=file
-E:\tlperl\lib/unicore/lib/EComp/Y.pl type=file
-E:\tlperl\lib/unicore/lib/EPres/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Ea/A.pl type=file
-E:\tlperl\lib/unicore/lib/Ea/H.pl type=file
-E:\tlperl\lib/unicore/lib/Ea/N.pl type=file
-E:\tlperl\lib/unicore/lib/Ea/Na.pl type=file
-E:\tlperl\lib/unicore/lib/Ea/W.pl type=file
-E:\tlperl\lib/unicore/lib/Emoji/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Ext/Y.pl type=file
-E:\tlperl\lib/unicore/lib/ExtPict/Y.pl type=file
-E:\tlperl\lib/unicore/lib/GCB/CN.pl type=file
-E:\tlperl\lib/unicore/lib/GCB/EX.pl type=file
-E:\tlperl\lib/unicore/lib/GCB/LV.pl type=file
-E:\tlperl\lib/unicore/lib/GCB/LVT.pl type=file
-E:\tlperl\lib/unicore/lib/GCB/PP.pl type=file
-E:\tlperl\lib/unicore/lib/GCB/SM.pl type=file
-E:\tlperl\lib/unicore/lib/GCB/XX.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/C.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Cf.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Cn.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/L.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/LC.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Ll.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Lm.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Lo.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Lu.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/M.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Mc.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Me.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Mn.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/N.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Nd.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Nl.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/No.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/P.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Pc.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Pd.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Pe.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Pf.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Pi.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Po.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Ps.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/S.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Sc.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Sk.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Sm.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/So.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Z.pl type=file
-E:\tlperl\lib/unicore/lib/Gc/Zs.pl type=file
-E:\tlperl\lib/unicore/lib/GrBase/Y.pl type=file
-E:\tlperl\lib/unicore/lib/GrExt/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Hex/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Hst/NA.pl type=file
-E:\tlperl\lib/unicore/lib/Hyphen/T.pl type=file
-E:\tlperl\lib/unicore/lib/IDC/Y.pl type=file
-E:\tlperl\lib/unicore/lib/IDS/Y.pl type=file
-E:\tlperl\lib/unicore/lib/IdStatus/Allowed.pl type=file
-E:\tlperl\lib/unicore/lib/IdStatus/Restrict.pl type=file
-E:\tlperl\lib/unicore/lib/IdType/DefaultI.pl type=file
-E:\tlperl\lib/unicore/lib/IdType/Exclusio.pl type=file
-E:\tlperl\lib/unicore/lib/IdType/Inclusio.pl type=file
-E:\tlperl\lib/unicore/lib/IdType/LimitedU.pl type=file
-E:\tlperl\lib/unicore/lib/IdType/NotChara.pl type=file
-E:\tlperl\lib/unicore/lib/IdType/NotNFKC.pl type=file
-E:\tlperl\lib/unicore/lib/IdType/NotXID.pl type=file
-E:\tlperl\lib/unicore/lib/IdType/Obsolete.pl type=file
-E:\tlperl\lib/unicore/lib/IdType/Recommen.pl type=file
-E:\tlperl\lib/unicore/lib/IdType/Technica.pl type=file
-E:\tlperl\lib/unicore/lib/IdType/Uncommon.pl type=file
-E:\tlperl\lib/unicore/lib/Ideo/Y.pl type=file
-E:\tlperl\lib/unicore/lib/In/10_0.pl type=file
-E:\tlperl\lib/unicore/lib/In/11_0.pl type=file
-E:\tlperl\lib/unicore/lib/In/12_0.pl type=file
-E:\tlperl\lib/unicore/lib/In/12_1.pl type=file
-E:\tlperl\lib/unicore/lib/In/13_0.pl type=file
-E:\tlperl\lib/unicore/lib/In/2_0.pl type=file
-E:\tlperl\lib/unicore/lib/In/2_1.pl type=file
-E:\tlperl\lib/unicore/lib/In/3_0.pl type=file
-E:\tlperl\lib/unicore/lib/In/3_1.pl type=file
-E:\tlperl\lib/unicore/lib/In/3_2.pl type=file
-E:\tlperl\lib/unicore/lib/In/4_0.pl type=file
-E:\tlperl\lib/unicore/lib/In/4_1.pl type=file
-E:\tlperl\lib/unicore/lib/In/5_0.pl type=file
-E:\tlperl\lib/unicore/lib/In/5_1.pl type=file
-E:\tlperl\lib/unicore/lib/In/5_2.pl type=file
-E:\tlperl\lib/unicore/lib/In/6_0.pl type=file
-E:\tlperl\lib/unicore/lib/In/6_1.pl type=file
-E:\tlperl\lib/unicore/lib/In/6_2.pl type=file
-E:\tlperl\lib/unicore/lib/In/6_3.pl type=file
-E:\tlperl\lib/unicore/lib/In/7_0.pl type=file
-E:\tlperl\lib/unicore/lib/In/8_0.pl type=file
-E:\tlperl\lib/unicore/lib/In/9_0.pl type=file
-E:\tlperl\lib/unicore/lib/InPC/Bottom.pl type=file
-E:\tlperl\lib/unicore/lib/InPC/BottomAn.pl type=file
-E:\tlperl\lib/unicore/lib/InPC/Left.pl type=file
-E:\tlperl\lib/unicore/lib/InPC/LeftAndR.pl type=file
-E:\tlperl\lib/unicore/lib/InPC/NA.pl type=file
-E:\tlperl\lib/unicore/lib/InPC/Overstru.pl type=file
-E:\tlperl\lib/unicore/lib/InPC/Right.pl type=file
-E:\tlperl\lib/unicore/lib/InPC/Top.pl type=file
-E:\tlperl\lib/unicore/lib/InPC/TopAndBo.pl type=file
-E:\tlperl\lib/unicore/lib/InPC/TopAndL2.pl type=file
-E:\tlperl\lib/unicore/lib/InPC/TopAndLe.pl type=file
-E:\tlperl\lib/unicore/lib/InPC/TopAndRi.pl type=file
-E:\tlperl\lib/unicore/lib/InPC/VisualOr.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Avagraha.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Bindu.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Cantilla.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Consona2.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Consona3.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Consona4.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Consona5.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Consona6.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Consona7.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Consona8.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Consona9.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Consonan.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Invisibl.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Nukta.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Number.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Other.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/PureKill.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Syllable.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/ToneMark.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Virama.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Visarga.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/Vowel.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/VowelDep.pl type=file
-E:\tlperl\lib/unicore/lib/InSC/VowelInd.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Ain.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Alef.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Beh.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Dal.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/FarsiYeh.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Feh.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Gaf.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Hah.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/HanifiRo.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Kaf.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Lam.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/NoJoinin.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Qaf.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Reh.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Sad.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Seen.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Waw.pl type=file
-E:\tlperl\lib/unicore/lib/Jg/Yeh.pl type=file
-E:\tlperl\lib/unicore/lib/Jt/C.pl type=file
-E:\tlperl\lib/unicore/lib/Jt/D.pl type=file
-E:\tlperl\lib/unicore/lib/Jt/L.pl type=file
-E:\tlperl\lib/unicore/lib/Jt/R.pl type=file
-E:\tlperl\lib/unicore/lib/Jt/T.pl type=file
-E:\tlperl\lib/unicore/lib/Jt/U.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/AI.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/AL.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/BA.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/BB.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/CJ.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/CL.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/CM.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/EX.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/GL.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/ID.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/IN.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/IS.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/NS.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/NU.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/OP.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/PO.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/PR.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/QU.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/SA.pl type=file
-E:\tlperl\lib/unicore/lib/Lb/XX.pl type=file
-E:\tlperl\lib/unicore/lib/Lower/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Math/Y.pl type=file
-E:\tlperl\lib/unicore/lib/NFCQC/M.pl type=file
-E:\tlperl\lib/unicore/lib/NFCQC/Y.pl type=file
-E:\tlperl\lib/unicore/lib/NFDQC/N.pl type=file
-E:\tlperl\lib/unicore/lib/NFDQC/Y.pl type=file
-E:\tlperl\lib/unicore/lib/NFKCQC/N.pl type=file
-E:\tlperl\lib/unicore/lib/NFKCQC/Y.pl type=file
-E:\tlperl\lib/unicore/lib/NFKDQC/N.pl type=file
-E:\tlperl\lib/unicore/lib/NFKDQC/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Nt/Di.pl type=file
-E:\tlperl\lib/unicore/lib/Nt/None.pl type=file
-E:\tlperl\lib/unicore/lib/Nt/Nu.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/0.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/1.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/10.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/100.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/1000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/10000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/100000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/11.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/12.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/13.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/14.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/15.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/16.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/17.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/18.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/19.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/1_16.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/1_2.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/1_3.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/1_4.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/1_6.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/1_8.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/2.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/20.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/200.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/2000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/20000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/2_3.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/3.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/30.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/300.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/3000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/30000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/3_16.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/3_4.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/4.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/40.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/400.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/4000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/40000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/5.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/50.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/500.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/5000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/50000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/6.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/60.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/600.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/6000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/60000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/7.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/70.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/700.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/7000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/70000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/8.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/80.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/800.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/8000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/80000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/9.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/90.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/900.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/9000.pl type=file
-E:\tlperl\lib/unicore/lib/Nv/90000.pl type=file
-E:\tlperl\lib/unicore/lib/PCM/Y.pl type=file
-E:\tlperl\lib/unicore/lib/PatSyn/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/Alnum.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/Assigned.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/Blank.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/Graph.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/PerlWord.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/PosixPun.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/Print.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/SpacePer.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/Title.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/Word.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/XPosixPu.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/_PerlAny.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/_PerlCh2.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/_PerlCha.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/_PerlFol.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/_PerlIDC.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/_PerlIDS.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/_PerlIsI.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/_PerlNch.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/_PerlPat.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/_PerlPr2.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/_PerlPro.pl type=file
-E:\tlperl\lib/unicore/lib/Perl/_PerlQuo.pl type=file
-E:\tlperl\lib/unicore/lib/QMark/Y.pl type=file
-E:\tlperl\lib/unicore/lib/SB/AT.pl type=file
-E:\tlperl\lib/unicore/lib/SB/CL.pl type=file
-E:\tlperl\lib/unicore/lib/SB/EX.pl type=file
-E:\tlperl\lib/unicore/lib/SB/FO.pl type=file
-E:\tlperl\lib/unicore/lib/SB/LE.pl type=file
-E:\tlperl\lib/unicore/lib/SB/LO.pl type=file
-E:\tlperl\lib/unicore/lib/SB/NU.pl type=file
-E:\tlperl\lib/unicore/lib/SB/SC.pl type=file
-E:\tlperl\lib/unicore/lib/SB/ST.pl type=file
-E:\tlperl\lib/unicore/lib/SB/Sp.pl type=file
-E:\tlperl\lib/unicore/lib/SB/UP.pl type=file
-E:\tlperl\lib/unicore/lib/SB/XX.pl type=file
-E:\tlperl\lib/unicore/lib/SD/Y.pl type=file
-E:\tlperl\lib/unicore/lib/STerm/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Arab.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Beng.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Cprt.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Cyrl.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Deva.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Dupl.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Geor.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Glag.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Gong.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Gonm.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Gran.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Grek.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Gujr.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Guru.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Han.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Hang.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Hira.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Kana.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Knda.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Latn.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Limb.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Linb.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Mlym.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Mong.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Mult.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Orya.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Sinh.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Syrc.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Taml.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Telu.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Zinh.pl type=file
-E:\tlperl\lib/unicore/lib/Sc/Zyyy.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Adlm.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Arab.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Armn.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Beng.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Bhks.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Bopo.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Cakm.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Cham.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Copt.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Cprt.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Cyrl.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Deva.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Diak.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Dupl.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Ethi.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Geor.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Glag.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Gong.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Gonm.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Gran.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Grek.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Gujr.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Guru.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Han.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Hang.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Hebr.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Hira.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Hmng.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Hmnp.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Kana.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Khar.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Khmr.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Khoj.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Knda.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Kthi.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Lana.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Lao.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Latn.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Limb.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Lina.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Linb.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Mlym.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Mong.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Mult.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Mymr.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Nand.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Orya.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Phlp.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Rohg.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Shrd.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Sind.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Sinh.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Syrc.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Tagb.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Takr.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Talu.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Taml.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Tang.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Telu.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Thaa.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Tibt.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Tirh.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Xsux.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Yezi.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Yi.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Zinh.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Zyyy.pl type=file
-E:\tlperl\lib/unicore/lib/Scx/Zzzz.pl type=file
-E:\tlperl\lib/unicore/lib/Term/Y.pl type=file
-E:\tlperl\lib/unicore/lib/UIdeo/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Upper/Y.pl type=file
-E:\tlperl\lib/unicore/lib/Vo/R.pl type=file
-E:\tlperl\lib/unicore/lib/Vo/Tr.pl type=file
-E:\tlperl\lib/unicore/lib/Vo/Tu.pl type=file
-E:\tlperl\lib/unicore/lib/Vo/U.pl type=file
-E:\tlperl\lib/unicore/lib/WB/EX.pl type=file
-E:\tlperl\lib/unicore/lib/WB/Extend.pl type=file
-E:\tlperl\lib/unicore/lib/WB/FO.pl type=file
-E:\tlperl\lib/unicore/lib/WB/HL.pl type=file
-E:\tlperl\lib/unicore/lib/WB/KA.pl type=file
-E:\tlperl\lib/unicore/lib/WB/LE.pl type=file
-E:\tlperl\lib/unicore/lib/WB/MB.pl type=file
-E:\tlperl\lib/unicore/lib/WB/ML.pl type=file
-E:\tlperl\lib/unicore/lib/WB/MN.pl type=file
-E:\tlperl\lib/unicore/lib/WB/NU.pl type=file
-E:\tlperl\lib/unicore/lib/WB/WSegSpac.pl type=file
-E:\tlperl\lib/unicore/lib/WB/XX.pl type=file
-E:\tlperl\lib/unicore/lib/XIDC/Y.pl type=file
-E:\tlperl\lib/unicore/lib/XIDS/Y.pl type=file
-E:\tlperl\lib/unicore/uni_keywords.pl type=file
-E:\tlperl\lib/unicore/version type=file
-E:\tlperl\lib/utf8.pm type=file
-E:\tlperl\lib/vars.pm type=file
-E:\tlperl\lib/version.pm type=file
-E:\tlperl\lib/version.pod type=file
-E:\tlperl\lib/version/Internals.pod type=file
-E:\tlperl\lib/version/regex.pm type=file
-E:\tlperl\lib/vmsish.pm type=file
-E:\tlperl\lib/warnings.pm type=file
-E:\tlperl\lib/warnings/register.pm type=file
+d:\tlperl\bin/corelist.bat type=file
+d:\tlperl\bin/cpan.bat type=file
+d:\tlperl\bin/enc2xs.bat type=file
+d:\tlperl\bin/encguess.bat type=file
+d:\tlperl\bin/h2ph.bat type=file
+d:\tlperl\bin/h2xs.bat type=file
+d:\tlperl\bin/instmodsh.bat type=file
+d:\tlperl\bin/json_pp.bat type=file
+d:\tlperl\bin/libnetcfg.bat type=file
+d:\tlperl\bin/perl.exe from=d:\tlperl\bin/perl5.38.2.exe type=link
+d:\tlperl\bin/perl5.38.2.exe type=file
+d:\tlperl\bin/perl538.dll type=file
+d:\tlperl\bin/perlbug.bat type=file
+d:\tlperl\bin/perldoc.bat type=file
+d:\tlperl\bin/perlivp.bat type=file
+d:\tlperl\bin/perlthanks.bat from=d:\tlperl\bin/perlbug.bat type=link
+d:\tlperl\bin/piconv.bat type=file
+d:\tlperl\bin/pl2pm.bat type=file
+d:\tlperl\bin/pod2html.bat type=file
+d:\tlperl\bin/pod2man.bat type=file
+d:\tlperl\bin/pod2text.bat type=file
+d:\tlperl\bin/pod2usage.bat type=file
+d:\tlperl\bin/podchecker.bat type=file
+d:\tlperl\bin/prove.bat type=file
+d:\tlperl\bin/ptar.bat type=file
+d:\tlperl\bin/ptardiff.bat type=file
+d:\tlperl\bin/ptargrep.bat type=file
+d:\tlperl\bin/shasum.bat type=file
+d:\tlperl\bin/splain.bat type=file
+d:\tlperl\bin/streamzip.bat type=file
+d:\tlperl\bin/xsubpp.bat type=file
+d:\tlperl\bin/zipdetails.bat type=file
+d:\tlperl\lib/AnyDBM_File.pm type=file
+d:\tlperl\lib/App/Cpan.pm type=file
+d:\tlperl\lib/App/Prove.pm type=file
+d:\tlperl\lib/App/Prove/State.pm type=file
+d:\tlperl\lib/App/Prove/State/Result.pm type=file
+d:\tlperl\lib/App/Prove/State/Result/Test.pm type=file
+d:\tlperl\lib/Archive/Tar.pm type=file
+d:\tlperl\lib/Archive/Tar/Constant.pm type=file
+d:\tlperl\lib/Archive/Tar/File.pm type=file
+d:\tlperl\lib/Attribute/Handlers.pm type=file
+d:\tlperl\lib/AutoLoader.pm type=file
+d:\tlperl\lib/AutoSplit.pm type=file
+d:\tlperl\lib/B.pm type=file
+d:\tlperl\lib/B/Concise.pm type=file
+d:\tlperl\lib/B/Deparse.pm type=file
+d:\tlperl\lib/B/Op_private.pm type=file
+d:\tlperl\lib/B/Showlex.pm type=file
+d:\tlperl\lib/B/Terse.pm type=file
+d:\tlperl\lib/B/Xref.pm type=file
+d:\tlperl\lib/Benchmark.pm type=file
+d:\tlperl\lib/CORE.pod type=file
+d:\tlperl\lib/CORE/EXTERN.h type=file
+d:\tlperl\lib/CORE/INTERN.h type=file
+d:\tlperl\lib/CORE/XSUB.h type=file
+d:\tlperl\lib/CORE/arpa/inet.h type=file
+d:\tlperl\lib/CORE/av.h type=file
+d:\tlperl\lib/CORE/bitcount.h type=file
+d:\tlperl\lib/CORE/charclass_invlists.h type=file
+d:\tlperl\lib/CORE/config.h type=file
+d:\tlperl\lib/CORE/cop.h type=file
+d:\tlperl\lib/CORE/cv.h type=file
+d:\tlperl\lib/CORE/dirent.h type=file
+d:\tlperl\lib/CORE/dosish.h type=file
+d:\tlperl\lib/CORE/ebcdic_tables.h type=file
+d:\tlperl\lib/CORE/embed.h type=file
+d:\tlperl\lib/CORE/embedvar.h type=file
+d:\tlperl\lib/CORE/fakesdio.h type=file
+d:\tlperl\lib/CORE/feature.h type=file
+d:\tlperl\lib/CORE/form.h type=file
+d:\tlperl\lib/CORE/git_version.h type=file
+d:\tlperl\lib/CORE/gv.h type=file
+d:\tlperl\lib/CORE/handy.h type=file
+d:\tlperl\lib/CORE/hv.h type=file
+d:\tlperl\lib/CORE/hv_func.h type=file
+d:\tlperl\lib/CORE/hv_macro.h type=file
+d:\tlperl\lib/CORE/inline.h type=file
+d:\tlperl\lib/CORE/intrpvar.h type=file
+d:\tlperl\lib/CORE/invlist_inline.h type=file
+d:\tlperl\lib/CORE/iperlsys.h type=file
+d:\tlperl\lib/CORE/keywords.h type=file
+d:\tlperl\lib/CORE/l1_char_class_tab.h type=file
+d:\tlperl\lib/CORE/malloc_ctl.h type=file
+d:\tlperl\lib/CORE/metaconfig.h type=file
+d:\tlperl\lib/CORE/mg.h type=file
+d:\tlperl\lib/CORE/mg_data.h type=file
+d:\tlperl\lib/CORE/mg_raw.h type=file
+d:\tlperl\lib/CORE/mg_vtable.h type=file
+d:\tlperl\lib/CORE/mydtrace.h type=file
+d:\tlperl\lib/CORE/netdb.h type=file
+d:\tlperl\lib/CORE/nostdio.h type=file
+d:\tlperl\lib/CORE/op.h type=file
+d:\tlperl\lib/CORE/op_reg_common.h type=file
+d:\tlperl\lib/CORE/opcode.h type=file
+d:\tlperl\lib/CORE/opnames.h type=file
+d:\tlperl\lib/CORE/overload.h type=file
+d:\tlperl\lib/CORE/pad.h type=file
+d:\tlperl\lib/CORE/parser.h type=file
+d:\tlperl\lib/CORE/patchlevel.h type=file
+d:\tlperl\lib/CORE/perl.h type=file
+d:\tlperl\lib/CORE/perl538.lib type=file
+d:\tlperl\lib/CORE/perl_inc_macro.h type=file
+d:\tlperl\lib/CORE/perl_langinfo.h type=file
+d:\tlperl\lib/CORE/perl_siphash.h type=file
+d:\tlperl\lib/CORE/perlapi.h type=file
+d:\tlperl\lib/CORE/perlhost.h type=file
+d:\tlperl\lib/CORE/perlio.h type=file
+d:\tlperl\lib/CORE/perliol.h type=file
+d:\tlperl\lib/CORE/perlsdio.h type=file
+d:\tlperl\lib/CORE/perlstatic.h type=file
+d:\tlperl\lib/CORE/perlvars.h type=file
+d:\tlperl\lib/CORE/perly.h type=file
+d:\tlperl\lib/CORE/pp.h type=file
+d:\tlperl\lib/CORE/pp_proto.h type=file
+d:\tlperl\lib/CORE/proto.h type=file
+d:\tlperl\lib/CORE/reentr.h type=file
+d:\tlperl\lib/CORE/regcharclass.h type=file
+d:\tlperl\lib/CORE/regcomp.h type=file
+d:\tlperl\lib/CORE/regcomp_internal.h type=file
+d:\tlperl\lib/CORE/regexp.h type=file
+d:\tlperl\lib/CORE/reginline.h type=file
+d:\tlperl\lib/CORE/regnodes.h type=file
+d:\tlperl\lib/CORE/sbox32_hash.h type=file
+d:\tlperl\lib/CORE/scope.h type=file
+d:\tlperl\lib/CORE/scope_types.h type=file
+d:\tlperl\lib/CORE/sv.h type=file
+d:\tlperl\lib/CORE/sv_inline.h type=file
+d:\tlperl\lib/CORE/sys/errno2.h type=file
+d:\tlperl\lib/CORE/sys/socket.h type=file
+d:\tlperl\lib/CORE/thread.h type=file
+d:\tlperl\lib/CORE/time64.h type=file
+d:\tlperl\lib/CORE/time64_config.h type=file
+d:\tlperl\lib/CORE/uconfig.h type=file
+d:\tlperl\lib/CORE/uni_keywords.h type=file
+d:\tlperl\lib/CORE/unicode_constants.h type=file
+d:\tlperl\lib/CORE/unixish.h type=file
+d:\tlperl\lib/CORE/utf8.h type=file
+d:\tlperl\lib/CORE/utfebcdic.h type=file
+d:\tlperl\lib/CORE/util.h type=file
+d:\tlperl\lib/CORE/uudmap.h type=file
+d:\tlperl\lib/CORE/vdir.h type=file
+d:\tlperl\lib/CORE/vmem.h type=file
+d:\tlperl\lib/CORE/vutil.h type=file
+d:\tlperl\lib/CORE/warnings.h type=file
+d:\tlperl\lib/CORE/win32.h type=file
+d:\tlperl\lib/CORE/win32iop.h type=file
+d:\tlperl\lib/CORE/win32thread.h type=file
+d:\tlperl\lib/CORE/zaphod32_hash.h type=file
+d:\tlperl\lib/CPAN.pm type=file
+d:\tlperl\lib/CPAN/API/HOWTO.pod type=file
+d:\tlperl\lib/CPAN/Author.pm type=file
+d:\tlperl\lib/CPAN/Bundle.pm type=file
+d:\tlperl\lib/CPAN/CacheMgr.pm type=file
+d:\tlperl\lib/CPAN/Complete.pm type=file
+d:\tlperl\lib/CPAN/Debug.pm type=file
+d:\tlperl\lib/CPAN/DeferredCode.pm type=file
+d:\tlperl\lib/CPAN/Distribution.pm type=file
+d:\tlperl\lib/CPAN/Distroprefs.pm type=file
+d:\tlperl\lib/CPAN/Distrostatus.pm type=file
+d:\tlperl\lib/CPAN/Exception/RecursiveDependency.pm type=file
+d:\tlperl\lib/CPAN/Exception/blocked_urllist.pm type=file
+d:\tlperl\lib/CPAN/Exception/yaml_not_installed.pm type=file
+d:\tlperl\lib/CPAN/Exception/yaml_process_error.pm type=file
+d:\tlperl\lib/CPAN/FTP.pm type=file
+d:\tlperl\lib/CPAN/FTP/netrc.pm type=file
+d:\tlperl\lib/CPAN/FirstTime.pm type=file
+d:\tlperl\lib/CPAN/HTTP/Client.pm type=file
+d:\tlperl\lib/CPAN/HTTP/Credentials.pm type=file
+d:\tlperl\lib/CPAN/HandleConfig.pm type=file
+d:\tlperl\lib/CPAN/Index.pm type=file
+d:\tlperl\lib/CPAN/InfoObj.pm type=file
+d:\tlperl\lib/CPAN/Kwalify.pm type=file
+d:\tlperl\lib/CPAN/Kwalify/distroprefs.dd type=file
+d:\tlperl\lib/CPAN/Kwalify/distroprefs.yml type=file
+d:\tlperl\lib/CPAN/LWP/UserAgent.pm type=file
+d:\tlperl\lib/CPAN/Meta.pm type=file
+d:\tlperl\lib/CPAN/Meta/Converter.pm type=file
+d:\tlperl\lib/CPAN/Meta/Feature.pm type=file
+d:\tlperl\lib/CPAN/Meta/History.pm type=file
+d:\tlperl\lib/CPAN/Meta/History/Meta_1_0.pod type=file
+d:\tlperl\lib/CPAN/Meta/History/Meta_1_1.pod type=file
+d:\tlperl\lib/CPAN/Meta/History/Meta_1_2.pod type=file
+d:\tlperl\lib/CPAN/Meta/History/Meta_1_3.pod type=file
+d:\tlperl\lib/CPAN/Meta/History/Meta_1_4.pod type=file
+d:\tlperl\lib/CPAN/Meta/Merge.pm type=file
+d:\tlperl\lib/CPAN/Meta/Prereqs.pm type=file
+d:\tlperl\lib/CPAN/Meta/Requirements.pm type=file
+d:\tlperl\lib/CPAN/Meta/Spec.pm type=file
+d:\tlperl\lib/CPAN/Meta/Validator.pm type=file
+d:\tlperl\lib/CPAN/Meta/YAML.pm type=file
+d:\tlperl\lib/CPAN/Mirrors.pm type=file
+d:\tlperl\lib/CPAN/Module.pm type=file
+d:\tlperl\lib/CPAN/Nox.pm type=file
+d:\tlperl\lib/CPAN/Plugin.pm type=file
+d:\tlperl\lib/CPAN/Plugin/Specfile.pm type=file
+d:\tlperl\lib/CPAN/Prompt.pm type=file
+d:\tlperl\lib/CPAN/Queue.pm type=file
+d:\tlperl\lib/CPAN/Shell.pm type=file
+d:\tlperl\lib/CPAN/Tarzip.pm type=file
+d:\tlperl\lib/CPAN/URL.pm type=file
+d:\tlperl\lib/CPAN/Version.pm type=file
+d:\tlperl\lib/Carp.pm type=file
+d:\tlperl\lib/Carp/Heavy.pm type=file
+d:\tlperl\lib/Class/Struct.pm type=file
+d:\tlperl\lib/Compress/Raw/Bzip2.pm type=file
+d:\tlperl\lib/Compress/Raw/Zlib.pm type=file
+d:\tlperl\lib/Compress/Zlib.pm type=file
+d:\tlperl\lib/Config.pm type=file
+d:\tlperl\lib/Config.pod type=file
+d:\tlperl\lib/Config/Extensions.pm type=file
+d:\tlperl\lib/Config/Perl/V.pm type=file
+d:\tlperl\lib/Config_git.pl type=file
+d:\tlperl\lib/Config_heavy.pl type=file
+d:\tlperl\lib/Cwd.pm type=file
+d:\tlperl\lib/DB.pm type=file
+d:\tlperl\lib/DBM_Filter.pm type=file
+d:\tlperl\lib/DBM_Filter/compress.pm type=file
+d:\tlperl\lib/DBM_Filter/encode.pm type=file
+d:\tlperl\lib/DBM_Filter/int32.pm type=file
+d:\tlperl\lib/DBM_Filter/null.pm type=file
+d:\tlperl\lib/DBM_Filter/utf8.pm type=file
+d:\tlperl\lib/Data/Dumper.pm type=file
+d:\tlperl\lib/Devel/PPPort.pm type=file
+d:\tlperl\lib/Devel/Peek.pm type=file
+d:\tlperl\lib/Devel/SelfStubber.pm type=file
+d:\tlperl\lib/Digest.pm type=file
+d:\tlperl\lib/Digest/MD5.pm type=file
+d:\tlperl\lib/Digest/SHA.pm type=file
+d:\tlperl\lib/Digest/base.pm type=file
+d:\tlperl\lib/Digest/file.pm type=file
+d:\tlperl\lib/DirHandle.pm type=file
+d:\tlperl\lib/Dumpvalue.pm type=file
+d:\tlperl\lib/DynaLoader.pm type=file
+d:\tlperl\lib/Encode.pm type=file
+d:\tlperl\lib/Encode/Alias.pm type=file
+d:\tlperl\lib/Encode/Byte.pm type=file
+d:\tlperl\lib/Encode/CJKConstants.pm type=file
+d:\tlperl\lib/Encode/CN.pm type=file
+d:\tlperl\lib/Encode/CN/HZ.pm type=file
+d:\tlperl\lib/Encode/Changes.e2x type=file
+d:\tlperl\lib/Encode/Config.pm type=file
+d:\tlperl\lib/Encode/ConfigLocal_PM.e2x type=file
+d:\tlperl\lib/Encode/EBCDIC.pm type=file
+d:\tlperl\lib/Encode/Encoder.pm type=file
+d:\tlperl\lib/Encode/Encoding.pm type=file
+d:\tlperl\lib/Encode/GSM0338.pm type=file
+d:\tlperl\lib/Encode/Guess.pm type=file
+d:\tlperl\lib/Encode/JP.pm type=file
+d:\tlperl\lib/Encode/JP/H2Z.pm type=file
+d:\tlperl\lib/Encode/JP/JIS7.pm type=file
+d:\tlperl\lib/Encode/KR.pm type=file
+d:\tlperl\lib/Encode/KR/2022_KR.pm type=file
+d:\tlperl\lib/Encode/MIME/Header.pm type=file
+d:\tlperl\lib/Encode/MIME/Header/ISO_2022_JP.pm type=file
+d:\tlperl\lib/Encode/MIME/Name.pm type=file
+d:\tlperl\lib/Encode/Makefile_PL.e2x type=file
+d:\tlperl\lib/Encode/PerlIO.pod type=file
+d:\tlperl\lib/Encode/README.e2x type=file
+d:\tlperl\lib/Encode/Supported.pod type=file
+d:\tlperl\lib/Encode/Symbol.pm type=file
+d:\tlperl\lib/Encode/TW.pm type=file
+d:\tlperl\lib/Encode/Unicode.pm type=file
+d:\tlperl\lib/Encode/Unicode/UTF7.pm type=file
+d:\tlperl\lib/Encode/_PM.e2x type=file
+d:\tlperl\lib/Encode/_T.e2x type=file
+d:\tlperl\lib/Encode/encode.h type=file
+d:\tlperl\lib/English.pm type=file
+d:\tlperl\lib/Env.pm type=file
+d:\tlperl\lib/Errno.pm type=file
+d:\tlperl\lib/Exporter.pm type=file
+d:\tlperl\lib/Exporter/Heavy.pm type=file
+d:\tlperl\lib/ExtUtils/CBuilder.pm type=file
+d:\tlperl\lib/ExtUtils/CBuilder/Base.pm type=file
+d:\tlperl\lib/ExtUtils/CBuilder/Platform/Unix.pm type=file
+d:\tlperl\lib/ExtUtils/CBuilder/Platform/VMS.pm type=file
+d:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows.pm type=file
+d:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm type=file
+d:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm type=file
+d:\tlperl\lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm type=file
+d:\tlperl\lib/ExtUtils/CBuilder/Platform/aix.pm type=file
+d:\tlperl\lib/ExtUtils/CBuilder/Platform/android.pm type=file
+d:\tlperl\lib/ExtUtils/CBuilder/Platform/cygwin.pm type=file
+d:\tlperl\lib/ExtUtils/CBuilder/Platform/darwin.pm type=file
+d:\tlperl\lib/ExtUtils/CBuilder/Platform/dec_osf.pm type=file
+d:\tlperl\lib/ExtUtils/CBuilder/Platform/os2.pm type=file
+d:\tlperl\lib/ExtUtils/Command.pm type=file
+d:\tlperl\lib/ExtUtils/Command/MM.pm type=file
+d:\tlperl\lib/ExtUtils/Constant.pm type=file
+d:\tlperl\lib/ExtUtils/Constant/Base.pm type=file
+d:\tlperl\lib/ExtUtils/Constant/ProxySubs.pm type=file
+d:\tlperl\lib/ExtUtils/Constant/Utils.pm type=file
+d:\tlperl\lib/ExtUtils/Constant/XS.pm type=file
+d:\tlperl\lib/ExtUtils/Embed.pm type=file
+d:\tlperl\lib/ExtUtils/Install.pm type=file
+d:\tlperl\lib/ExtUtils/Installed.pm type=file
+d:\tlperl\lib/ExtUtils/Liblist.pm type=file
+d:\tlperl\lib/ExtUtils/Liblist/Kid.pm type=file
+d:\tlperl\lib/ExtUtils/MANIFEST.SKIP type=file
+d:\tlperl\lib/ExtUtils/MM.pm type=file
+d:\tlperl\lib/ExtUtils/MM_AIX.pm type=file
+d:\tlperl\lib/ExtUtils/MM_Any.pm type=file
+d:\tlperl\lib/ExtUtils/MM_BeOS.pm type=file
+d:\tlperl\lib/ExtUtils/MM_Cygwin.pm type=file
+d:\tlperl\lib/ExtUtils/MM_DOS.pm type=file
+d:\tlperl\lib/ExtUtils/MM_Darwin.pm type=file
+d:\tlperl\lib/ExtUtils/MM_MacOS.pm type=file
+d:\tlperl\lib/ExtUtils/MM_NW5.pm type=file
+d:\tlperl\lib/ExtUtils/MM_OS2.pm type=file
+d:\tlperl\lib/ExtUtils/MM_OS390.pm type=file
+d:\tlperl\lib/ExtUtils/MM_QNX.pm type=file
+d:\tlperl\lib/ExtUtils/MM_UWIN.pm type=file
+d:\tlperl\lib/ExtUtils/MM_Unix.pm type=file
+d:\tlperl\lib/ExtUtils/MM_VMS.pm type=file
+d:\tlperl\lib/ExtUtils/MM_VOS.pm type=file
+d:\tlperl\lib/ExtUtils/MM_Win32.pm type=file
+d:\tlperl\lib/ExtUtils/MM_Win95.pm type=file
+d:\tlperl\lib/ExtUtils/MY.pm type=file
+d:\tlperl\lib/ExtUtils/MakeMaker.pm type=file
+d:\tlperl\lib/ExtUtils/MakeMaker/Config.pm type=file
+d:\tlperl\lib/ExtUtils/MakeMaker/FAQ.pod type=file
+d:\tlperl\lib/ExtUtils/MakeMaker/Locale.pm type=file
+d:\tlperl\lib/ExtUtils/MakeMaker/Tutorial.pod type=file
+d:\tlperl\lib/ExtUtils/MakeMaker/version.pm type=file
+d:\tlperl\lib/ExtUtils/Manifest.pm type=file
+d:\tlperl\lib/ExtUtils/Miniperl.pm type=file
+d:\tlperl\lib/ExtUtils/Mkbootstrap.pm type=file
+d:\tlperl\lib/ExtUtils/Mksymlists.pm type=file
+d:\tlperl\lib/ExtUtils/PL2Bat.pm type=file
+d:\tlperl\lib/ExtUtils/Packlist.pm type=file
+d:\tlperl\lib/ExtUtils/ParseXS.pm type=file
+d:\tlperl\lib/ExtUtils/ParseXS.pod type=file
+d:\tlperl\lib/ExtUtils/ParseXS/Constants.pm type=file
+d:\tlperl\lib/ExtUtils/ParseXS/CountLines.pm type=file
+d:\tlperl\lib/ExtUtils/ParseXS/Eval.pm type=file
+d:\tlperl\lib/ExtUtils/ParseXS/Utilities.pm type=file
+d:\tlperl\lib/ExtUtils/Typemaps.pm type=file
+d:\tlperl\lib/ExtUtils/Typemaps/Cmd.pm type=file
+d:\tlperl\lib/ExtUtils/Typemaps/InputMap.pm type=file
+d:\tlperl\lib/ExtUtils/Typemaps/OutputMap.pm type=file
+d:\tlperl\lib/ExtUtils/Typemaps/Type.pm type=file
+d:\tlperl\lib/ExtUtils/testlib.pm type=file
+d:\tlperl\lib/ExtUtils/typemap type=file
+d:\tlperl\lib/ExtUtils/xsubpp type=file
+d:\tlperl\lib/Fatal.pm type=file
+d:\tlperl\lib/Fcntl.pm type=file
+d:\tlperl\lib/File/Basename.pm type=file
+d:\tlperl\lib/File/Compare.pm type=file
+d:\tlperl\lib/File/Copy.pm type=file
+d:\tlperl\lib/File/DosGlob.pm type=file
+d:\tlperl\lib/File/Fetch.pm type=file
+d:\tlperl\lib/File/Find.pm type=file
+d:\tlperl\lib/File/Glob.pm type=file
+d:\tlperl\lib/File/GlobMapper.pm type=file
+d:\tlperl\lib/File/Path.pm type=file
+d:\tlperl\lib/File/Spec.pm type=file
+d:\tlperl\lib/File/Spec/AmigaOS.pm type=file
+d:\tlperl\lib/File/Spec/Cygwin.pm type=file
+d:\tlperl\lib/File/Spec/Epoc.pm type=file
+d:\tlperl\lib/File/Spec/Functions.pm type=file
+d:\tlperl\lib/File/Spec/Mac.pm type=file
+d:\tlperl\lib/File/Spec/OS2.pm type=file
+d:\tlperl\lib/File/Spec/Unix.pm type=file
+d:\tlperl\lib/File/Spec/VMS.pm type=file
+d:\tlperl\lib/File/Spec/Win32.pm type=file
+d:\tlperl\lib/File/Temp.pm type=file
+d:\tlperl\lib/File/stat.pm type=file
+d:\tlperl\lib/FileCache.pm type=file
+d:\tlperl\lib/FileHandle.pm type=file
+d:\tlperl\lib/Filter/Simple.pm type=file
+d:\tlperl\lib/Filter/Util/Call.pm type=file
+d:\tlperl\lib/FindBin.pm type=file
+d:\tlperl\lib/Getopt/Long.pm type=file
+d:\tlperl\lib/Getopt/Std.pm type=file
+d:\tlperl\lib/HTTP/Tiny.pm type=file
+d:\tlperl\lib/Hash/Util.pm type=file
+d:\tlperl\lib/Hash/Util/FieldHash.pm type=file
+d:\tlperl\lib/I18N/Collate.pm type=file
+d:\tlperl\lib/I18N/LangTags.pm type=file
+d:\tlperl\lib/I18N/LangTags/Detect.pm type=file
+d:\tlperl\lib/I18N/LangTags/List.pm type=file
+d:\tlperl\lib/I18N/Langinfo.pm type=file
+d:\tlperl\lib/IO.pm type=file
+d:\tlperl\lib/IO/Compress/Adapter/Bzip2.pm type=file
+d:\tlperl\lib/IO/Compress/Adapter/Deflate.pm type=file
+d:\tlperl\lib/IO/Compress/Adapter/Identity.pm type=file
+d:\tlperl\lib/IO/Compress/Base.pm type=file
+d:\tlperl\lib/IO/Compress/Base/Common.pm type=file
+d:\tlperl\lib/IO/Compress/Bzip2.pm type=file
+d:\tlperl\lib/IO/Compress/Deflate.pm type=file
+d:\tlperl\lib/IO/Compress/FAQ.pod type=file
+d:\tlperl\lib/IO/Compress/Gzip.pm type=file
+d:\tlperl\lib/IO/Compress/Gzip/Constants.pm type=file
+d:\tlperl\lib/IO/Compress/RawDeflate.pm type=file
+d:\tlperl\lib/IO/Compress/Zip.pm type=file
+d:\tlperl\lib/IO/Compress/Zip/Constants.pm type=file
+d:\tlperl\lib/IO/Compress/Zlib/Constants.pm type=file
+d:\tlperl\lib/IO/Compress/Zlib/Extra.pm type=file
+d:\tlperl\lib/IO/Dir.pm type=file
+d:\tlperl\lib/IO/File.pm type=file
+d:\tlperl\lib/IO/Handle.pm type=file
+d:\tlperl\lib/IO/Pipe.pm type=file
+d:\tlperl\lib/IO/Poll.pm type=file
+d:\tlperl\lib/IO/Seekable.pm type=file
+d:\tlperl\lib/IO/Select.pm type=file
+d:\tlperl\lib/IO/Socket.pm type=file
+d:\tlperl\lib/IO/Socket/INET.pm type=file
+d:\tlperl\lib/IO/Socket/IP.pm type=file
+d:\tlperl\lib/IO/Socket/UNIX.pm type=file
+d:\tlperl\lib/IO/Uncompress/Adapter/Bunzip2.pm type=file
+d:\tlperl\lib/IO/Uncompress/Adapter/Identity.pm type=file
+d:\tlperl\lib/IO/Uncompress/Adapter/Inflate.pm type=file
+d:\tlperl\lib/IO/Uncompress/AnyInflate.pm type=file
+d:\tlperl\lib/IO/Uncompress/AnyUncompress.pm type=file
+d:\tlperl\lib/IO/Uncompress/Base.pm type=file
+d:\tlperl\lib/IO/Uncompress/Bunzip2.pm type=file
+d:\tlperl\lib/IO/Uncompress/Gunzip.pm type=file
+d:\tlperl\lib/IO/Uncompress/Inflate.pm type=file
+d:\tlperl\lib/IO/Uncompress/RawInflate.pm type=file
+d:\tlperl\lib/IO/Uncompress/Unzip.pm type=file
+d:\tlperl\lib/IO/Zlib.pm type=file
+d:\tlperl\lib/IPC/Cmd.pm type=file
+d:\tlperl\lib/IPC/Open2.pm type=file
+d:\tlperl\lib/IPC/Open3.pm type=file
+d:\tlperl\lib/Internals.pod type=file
+d:\tlperl\lib/JSON/PP.pm type=file
+d:\tlperl\lib/JSON/PP/Boolean.pm type=file
+d:\tlperl\lib/List/Util.pm type=file
+d:\tlperl\lib/List/Util/XS.pm type=file
+d:\tlperl\lib/Locale/Maketext.pm type=file
+d:\tlperl\lib/Locale/Maketext.pod type=file
+d:\tlperl\lib/Locale/Maketext/Cookbook.pod type=file
+d:\tlperl\lib/Locale/Maketext/Guts.pm type=file
+d:\tlperl\lib/Locale/Maketext/GutsLoader.pm type=file
+d:\tlperl\lib/Locale/Maketext/Simple.pm type=file
+d:\tlperl\lib/Locale/Maketext/TPJ13.pod type=file
+d:\tlperl\lib/MIME/Base64.pm type=file
+d:\tlperl\lib/MIME/QuotedPrint.pm type=file
+d:\tlperl\lib/Math/BigFloat.pm type=file
+d:\tlperl\lib/Math/BigFloat/Trace.pm type=file
+d:\tlperl\lib/Math/BigInt.pm type=file
+d:\tlperl\lib/Math/BigInt/Calc.pm type=file
+d:\tlperl\lib/Math/BigInt/FastCalc.pm type=file
+d:\tlperl\lib/Math/BigInt/Lib.pm type=file
+d:\tlperl\lib/Math/BigInt/Trace.pm type=file
+d:\tlperl\lib/Math/BigRat.pm type=file
+d:\tlperl\lib/Math/BigRat/Trace.pm type=file
+d:\tlperl\lib/Math/Complex.pm type=file
+d:\tlperl\lib/Math/Trig.pm type=file
+d:\tlperl\lib/Memoize.pm type=file
+d:\tlperl\lib/Memoize/AnyDBM_File.pm type=file
+d:\tlperl\lib/Memoize/Expire.pm type=file
+d:\tlperl\lib/Memoize/NDBM_File.pm type=file
+d:\tlperl\lib/Memoize/SDBM_File.pm type=file
+d:\tlperl\lib/Memoize/Storable.pm type=file
+d:\tlperl\lib/Module/CoreList.pm type=file
+d:\tlperl\lib/Module/CoreList.pod type=file
+d:\tlperl\lib/Module/CoreList/Utils.pm type=file
+d:\tlperl\lib/Module/Load.pm type=file
+d:\tlperl\lib/Module/Load/Conditional.pm type=file
+d:\tlperl\lib/Module/Loaded.pm type=file
+d:\tlperl\lib/Module/Metadata.pm type=file
+d:\tlperl\lib/NEXT.pm type=file
+d:\tlperl\lib/Net/Cmd.pm type=file
+d:\tlperl\lib/Net/Config.pm type=file
+d:\tlperl\lib/Net/Domain.pm type=file
+d:\tlperl\lib/Net/FTP.pm type=file
+d:\tlperl\lib/Net/FTP/A.pm type=file
+d:\tlperl\lib/Net/FTP/E.pm type=file
+d:\tlperl\lib/Net/FTP/I.pm type=file
+d:\tlperl\lib/Net/FTP/L.pm type=file
+d:\tlperl\lib/Net/FTP/dataconn.pm type=file
+d:\tlperl\lib/Net/NNTP.pm type=file
+d:\tlperl\lib/Net/Netrc.pm type=file
+d:\tlperl\lib/Net/POP3.pm type=file
+d:\tlperl\lib/Net/Ping.pm type=file
+d:\tlperl\lib/Net/SMTP.pm type=file
+d:\tlperl\lib/Net/Time.pm type=file
+d:\tlperl\lib/Net/hostent.pm type=file
+d:\tlperl\lib/Net/libnetFAQ.pod type=file
+d:\tlperl\lib/Net/netent.pm type=file
+d:\tlperl\lib/Net/protoent.pm type=file
+d:\tlperl\lib/Net/servent.pm type=file
+d:\tlperl\lib/O.pm type=file
+d:\tlperl\lib/Opcode.pm type=file
+d:\tlperl\lib/POSIX.pm type=file
+d:\tlperl\lib/POSIX.pod type=file
+d:\tlperl\lib/Params/Check.pm type=file
+d:\tlperl\lib/Parse/CPAN/Meta.pm type=file
+d:\tlperl\lib/Perl/OSType.pm type=file
+d:\tlperl\lib/PerlIO.pm type=file
+d:\tlperl\lib/PerlIO/encoding.pm type=file
+d:\tlperl\lib/PerlIO/mmap.pm type=file
+d:\tlperl\lib/PerlIO/scalar.pm type=file
+d:\tlperl\lib/PerlIO/via.pm type=file
+d:\tlperl\lib/PerlIO/via/QuotedPrint.pm type=file
+d:\tlperl\lib/Pod/Checker.pm type=file
+d:\tlperl\lib/Pod/Escapes.pm type=file
+d:\tlperl\lib/Pod/Functions.pm type=file
+d:\tlperl\lib/Pod/Html.pm type=file
+d:\tlperl\lib/Pod/Html/Util.pm type=file
+d:\tlperl\lib/Pod/Man.pm type=file
+d:\tlperl\lib/Pod/ParseLink.pm type=file
+d:\tlperl\lib/Pod/Perldoc.pm type=file
+d:\tlperl\lib/Pod/Perldoc/BaseTo.pm type=file
+d:\tlperl\lib/Pod/Perldoc/GetOptsOO.pm type=file
+d:\tlperl\lib/Pod/Perldoc/ToANSI.pm type=file
+d:\tlperl\lib/Pod/Perldoc/ToChecker.pm type=file
+d:\tlperl\lib/Pod/Perldoc/ToMan.pm type=file
+d:\tlperl\lib/Pod/Perldoc/ToNroff.pm type=file
+d:\tlperl\lib/Pod/Perldoc/ToPod.pm type=file
+d:\tlperl\lib/Pod/Perldoc/ToRtf.pm type=file
+d:\tlperl\lib/Pod/Perldoc/ToTerm.pm type=file
+d:\tlperl\lib/Pod/Perldoc/ToText.pm type=file
+d:\tlperl\lib/Pod/Perldoc/ToTk.pm type=file
+d:\tlperl\lib/Pod/Perldoc/ToXml.pm type=file
+d:\tlperl\lib/Pod/Simple.pm type=file
+d:\tlperl\lib/Pod/Simple.pod type=file
+d:\tlperl\lib/Pod/Simple/BlackBox.pm type=file
+d:\tlperl\lib/Pod/Simple/Checker.pm type=file
+d:\tlperl\lib/Pod/Simple/Debug.pm type=file
+d:\tlperl\lib/Pod/Simple/DumpAsText.pm type=file
+d:\tlperl\lib/Pod/Simple/DumpAsXML.pm type=file
+d:\tlperl\lib/Pod/Simple/HTML.pm type=file
+d:\tlperl\lib/Pod/Simple/HTMLBatch.pm type=file
+d:\tlperl\lib/Pod/Simple/HTMLLegacy.pm type=file
+d:\tlperl\lib/Pod/Simple/JustPod.pm type=file
+d:\tlperl\lib/Pod/Simple/LinkSection.pm type=file
+d:\tlperl\lib/Pod/Simple/Methody.pm type=file
+d:\tlperl\lib/Pod/Simple/Progress.pm type=file
+d:\tlperl\lib/Pod/Simple/PullParser.pm type=file
+d:\tlperl\lib/Pod/Simple/PullParserEndToken.pm type=file
+d:\tlperl\lib/Pod/Simple/PullParserStartToken.pm type=file
+d:\tlperl\lib/Pod/Simple/PullParserTextToken.pm type=file
+d:\tlperl\lib/Pod/Simple/PullParserToken.pm type=file
+d:\tlperl\lib/Pod/Simple/RTF.pm type=file
+d:\tlperl\lib/Pod/Simple/Search.pm type=file
+d:\tlperl\lib/Pod/Simple/SimpleTree.pm type=file
+d:\tlperl\lib/Pod/Simple/Subclassing.pod type=file
+d:\tlperl\lib/Pod/Simple/Text.pm type=file
+d:\tlperl\lib/Pod/Simple/TextContent.pm type=file
+d:\tlperl\lib/Pod/Simple/TiedOutFH.pm type=file
+d:\tlperl\lib/Pod/Simple/Transcode.pm type=file
+d:\tlperl\lib/Pod/Simple/TranscodeDumb.pm type=file
+d:\tlperl\lib/Pod/Simple/TranscodeSmart.pm type=file
+d:\tlperl\lib/Pod/Simple/XHTML.pm type=file
+d:\tlperl\lib/Pod/Simple/XMLOutStream.pm type=file
+d:\tlperl\lib/Pod/Text.pm type=file
+d:\tlperl\lib/Pod/Text/Color.pm type=file
+d:\tlperl\lib/Pod/Text/Overstrike.pm type=file
+d:\tlperl\lib/Pod/Text/Termcap.pm type=file
+d:\tlperl\lib/Pod/Usage.pm type=file
+d:\tlperl\lib/SDBM_File.pm type=file
+d:\tlperl\lib/Safe.pm type=file
+d:\tlperl\lib/Scalar/Util.pm type=file
+d:\tlperl\lib/Search/Dict.pm type=file
+d:\tlperl\lib/SelectSaver.pm type=file
+d:\tlperl\lib/SelfLoader.pm type=file
+d:\tlperl\lib/Socket.pm type=file
+d:\tlperl\lib/Storable.pm type=file
+d:\tlperl\lib/Sub/Util.pm type=file
+d:\tlperl\lib/Symbol.pm type=file
+d:\tlperl\lib/Sys/Hostname.pm type=file
+d:\tlperl\lib/TAP/Base.pm type=file
+d:\tlperl\lib/TAP/Formatter/Base.pm type=file
+d:\tlperl\lib/TAP/Formatter/Color.pm type=file
+d:\tlperl\lib/TAP/Formatter/Console.pm type=file
+d:\tlperl\lib/TAP/Formatter/Console/ParallelSession.pm type=file
+d:\tlperl\lib/TAP/Formatter/Console/Session.pm type=file
+d:\tlperl\lib/TAP/Formatter/File.pm type=file
+d:\tlperl\lib/TAP/Formatter/File/Session.pm type=file
+d:\tlperl\lib/TAP/Formatter/Session.pm type=file
+d:\tlperl\lib/TAP/Harness.pm type=file
+d:\tlperl\lib/TAP/Harness/Beyond.pod type=file
+d:\tlperl\lib/TAP/Harness/Env.pm type=file
+d:\tlperl\lib/TAP/Object.pm type=file
+d:\tlperl\lib/TAP/Parser.pm type=file
+d:\tlperl\lib/TAP/Parser/Aggregator.pm type=file
+d:\tlperl\lib/TAP/Parser/Grammar.pm type=file
+d:\tlperl\lib/TAP/Parser/Iterator.pm type=file
+d:\tlperl\lib/TAP/Parser/Iterator/Array.pm type=file
+d:\tlperl\lib/TAP/Parser/Iterator/Process.pm type=file
+d:\tlperl\lib/TAP/Parser/Iterator/Stream.pm type=file
+d:\tlperl\lib/TAP/Parser/IteratorFactory.pm type=file
+d:\tlperl\lib/TAP/Parser/Multiplexer.pm type=file
+d:\tlperl\lib/TAP/Parser/Result.pm type=file
+d:\tlperl\lib/TAP/Parser/Result/Bailout.pm type=file
+d:\tlperl\lib/TAP/Parser/Result/Comment.pm type=file
+d:\tlperl\lib/TAP/Parser/Result/Plan.pm type=file
+d:\tlperl\lib/TAP/Parser/Result/Pragma.pm type=file
+d:\tlperl\lib/TAP/Parser/Result/Test.pm type=file
+d:\tlperl\lib/TAP/Parser/Result/Unknown.pm type=file
+d:\tlperl\lib/TAP/Parser/Result/Version.pm type=file
+d:\tlperl\lib/TAP/Parser/Result/YAML.pm type=file
+d:\tlperl\lib/TAP/Parser/ResultFactory.pm type=file
+d:\tlperl\lib/TAP/Parser/Scheduler.pm type=file
+d:\tlperl\lib/TAP/Parser/Scheduler/Job.pm type=file
+d:\tlperl\lib/TAP/Parser/Scheduler/Spinner.pm type=file
+d:\tlperl\lib/TAP/Parser/Source.pm type=file
+d:\tlperl\lib/TAP/Parser/SourceHandler.pm type=file
+d:\tlperl\lib/TAP/Parser/SourceHandler/Executable.pm type=file
+d:\tlperl\lib/TAP/Parser/SourceHandler/File.pm type=file
+d:\tlperl\lib/TAP/Parser/SourceHandler/Handle.pm type=file
+d:\tlperl\lib/TAP/Parser/SourceHandler/Perl.pm type=file
+d:\tlperl\lib/TAP/Parser/SourceHandler/RawTAP.pm type=file
+d:\tlperl\lib/TAP/Parser/YAMLish/Reader.pm type=file
+d:\tlperl\lib/TAP/Parser/YAMLish/Writer.pm type=file
+d:\tlperl\lib/Term/ANSIColor.pm type=file
+d:\tlperl\lib/Term/Cap.pm type=file
+d:\tlperl\lib/Term/Complete.pm type=file
+d:\tlperl\lib/Term/ReadLine.pm type=file
+d:\tlperl\lib/Test.pm type=file
+d:\tlperl\lib/Test/Builder.pm type=file
+d:\tlperl\lib/Test/Builder/Formatter.pm type=file
+d:\tlperl\lib/Test/Builder/IO/Scalar.pm type=file
+d:\tlperl\lib/Test/Builder/Module.pm type=file
+d:\tlperl\lib/Test/Builder/Tester.pm type=file
+d:\tlperl\lib/Test/Builder/Tester/Color.pm type=file
+d:\tlperl\lib/Test/Builder/TodoDiag.pm type=file
+d:\tlperl\lib/Test/Harness.pm type=file
+d:\tlperl\lib/Test/More.pm type=file
+d:\tlperl\lib/Test/Simple.pm type=file
+d:\tlperl\lib/Test/Tester.pm type=file
+d:\tlperl\lib/Test/Tester/Capture.pm type=file
+d:\tlperl\lib/Test/Tester/CaptureRunner.pm type=file
+d:\tlperl\lib/Test/Tester/Delegate.pm type=file
+d:\tlperl\lib/Test/Tutorial.pod type=file
+d:\tlperl\lib/Test/use/ok.pm type=file
+d:\tlperl\lib/Test2.pm type=file
+d:\tlperl\lib/Test2/API.pm type=file
+d:\tlperl\lib/Test2/API/Breakage.pm type=file
+d:\tlperl\lib/Test2/API/Context.pm type=file
+d:\tlperl\lib/Test2/API/Instance.pm type=file
+d:\tlperl\lib/Test2/API/InterceptResult.pm type=file
+d:\tlperl\lib/Test2/API/InterceptResult/Event.pm type=file
+d:\tlperl\lib/Test2/API/InterceptResult/Facet.pm type=file
+d:\tlperl\lib/Test2/API/InterceptResult/Hub.pm type=file
+d:\tlperl\lib/Test2/API/InterceptResult/Squasher.pm type=file
+d:\tlperl\lib/Test2/API/Stack.pm type=file
+d:\tlperl\lib/Test2/Event.pm type=file
+d:\tlperl\lib/Test2/Event/Bail.pm type=file
+d:\tlperl\lib/Test2/Event/Diag.pm type=file
+d:\tlperl\lib/Test2/Event/Encoding.pm type=file
+d:\tlperl\lib/Test2/Event/Exception.pm type=file
+d:\tlperl\lib/Test2/Event/Fail.pm type=file
+d:\tlperl\lib/Test2/Event/Generic.pm type=file
+d:\tlperl\lib/Test2/Event/Note.pm type=file
+d:\tlperl\lib/Test2/Event/Ok.pm type=file
+d:\tlperl\lib/Test2/Event/Pass.pm type=file
+d:\tlperl\lib/Test2/Event/Plan.pm type=file
+d:\tlperl\lib/Test2/Event/Skip.pm type=file
+d:\tlperl\lib/Test2/Event/Subtest.pm type=file
+d:\tlperl\lib/Test2/Event/TAP/Version.pm type=file
+d:\tlperl\lib/Test2/Event/V2.pm type=file
+d:\tlperl\lib/Test2/Event/Waiting.pm type=file
+d:\tlperl\lib/Test2/EventFacet.pm type=file
+d:\tlperl\lib/Test2/EventFacet/About.pm type=file
+d:\tlperl\lib/Test2/EventFacet/Amnesty.pm type=file
+d:\tlperl\lib/Test2/EventFacet/Assert.pm type=file
+d:\tlperl\lib/Test2/EventFacet/Control.pm type=file
+d:\tlperl\lib/Test2/EventFacet/Error.pm type=file
+d:\tlperl\lib/Test2/EventFacet/Hub.pm type=file
+d:\tlperl\lib/Test2/EventFacet/Info.pm type=file
+d:\tlperl\lib/Test2/EventFacet/Info/Table.pm type=file
+d:\tlperl\lib/Test2/EventFacet/Meta.pm type=file
+d:\tlperl\lib/Test2/EventFacet/Parent.pm type=file
+d:\tlperl\lib/Test2/EventFacet/Plan.pm type=file
+d:\tlperl\lib/Test2/EventFacet/Render.pm type=file
+d:\tlperl\lib/Test2/EventFacet/Trace.pm type=file
+d:\tlperl\lib/Test2/Formatter.pm type=file
+d:\tlperl\lib/Test2/Formatter/TAP.pm type=file
+d:\tlperl\lib/Test2/Hub.pm type=file
+d:\tlperl\lib/Test2/Hub/Interceptor.pm type=file
+d:\tlperl\lib/Test2/Hub/Interceptor/Terminator.pm type=file
+d:\tlperl\lib/Test2/Hub/Subtest.pm type=file
+d:\tlperl\lib/Test2/IPC.pm type=file
+d:\tlperl\lib/Test2/IPC/Driver.pm type=file
+d:\tlperl\lib/Test2/IPC/Driver/Files.pm type=file
+d:\tlperl\lib/Test2/Tools/Tiny.pm type=file
+d:\tlperl\lib/Test2/Transition.pod type=file
+d:\tlperl\lib/Test2/Util.pm type=file
+d:\tlperl\lib/Test2/Util/ExternalMeta.pm type=file
+d:\tlperl\lib/Test2/Util/Facets2Legacy.pm type=file
+d:\tlperl\lib/Test2/Util/HashBase.pm type=file
+d:\tlperl\lib/Test2/Util/Trace.pm type=file
+d:\tlperl\lib/Text/Abbrev.pm type=file
+d:\tlperl\lib/Text/Balanced.pm type=file
+d:\tlperl\lib/Text/ParseWords.pm type=file
+d:\tlperl\lib/Text/Tabs.pm type=file
+d:\tlperl\lib/Text/Wrap.pm type=file
+d:\tlperl\lib/Thread.pm type=file
+d:\tlperl\lib/Thread/Queue.pm type=file
+d:\tlperl\lib/Thread/Semaphore.pm type=file
+d:\tlperl\lib/Tie/Array.pm type=file
+d:\tlperl\lib/Tie/File.pm type=file
+d:\tlperl\lib/Tie/Handle.pm type=file
+d:\tlperl\lib/Tie/Hash.pm type=file
+d:\tlperl\lib/Tie/Hash/NamedCapture.pm type=file
+d:\tlperl\lib/Tie/Memoize.pm type=file
+d:\tlperl\lib/Tie/RefHash.pm type=file
+d:\tlperl\lib/Tie/Scalar.pm type=file
+d:\tlperl\lib/Tie/StdHandle.pm type=file
+d:\tlperl\lib/Tie/SubstrHash.pm type=file
+d:\tlperl\lib/Time/HiRes.pm type=file
+d:\tlperl\lib/Time/Local.pm type=file
+d:\tlperl\lib/Time/Piece.pm type=file
+d:\tlperl\lib/Time/Seconds.pm type=file
+d:\tlperl\lib/Time/gmtime.pm type=file
+d:\tlperl\lib/Time/localtime.pm type=file
+d:\tlperl\lib/Time/tm.pm type=file
+d:\tlperl\lib/UNIVERSAL.pm type=file
+d:\tlperl\lib/Unicode/Collate.pm type=file
+d:\tlperl\lib/Unicode/Collate/CJK/Big5.pm type=file
+d:\tlperl\lib/Unicode/Collate/CJK/GB2312.pm type=file
+d:\tlperl\lib/Unicode/Collate/CJK/JISX0208.pm type=file
+d:\tlperl\lib/Unicode/Collate/CJK/Korean.pm type=file
+d:\tlperl\lib/Unicode/Collate/CJK/Pinyin.pm type=file
+d:\tlperl\lib/Unicode/Collate/CJK/Stroke.pm type=file
+d:\tlperl\lib/Unicode/Collate/CJK/Zhuyin.pm type=file
+d:\tlperl\lib/Unicode/Collate/Locale.pm type=file
+d:\tlperl\lib/Unicode/Collate/Locale/af.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/ar.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/as.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/az.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/be.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/bn.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/ca.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/cs.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/cu.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/cy.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/da.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/de_at_ph.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/de_phone.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/dsb.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/ee.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/eo.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/es.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/es_trad.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/et.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/fa.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/fi.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/fi_phone.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/fil.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/fo.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/fr_ca.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/gu.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/ha.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/haw.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/he.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/hi.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/hr.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/hu.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/hy.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/ig.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/is.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/ja.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/kk.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/kl.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/kn.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/ko.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/kok.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/lkt.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/ln.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/lt.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/lv.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/mk.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/ml.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/mr.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/mt.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/nb.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/nn.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/nso.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/om.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/or.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/pa.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/pl.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/ro.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/sa.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/se.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/si.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/si_dict.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/sk.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/sl.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/sq.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/sr.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/sv.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/sv_refo.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/ta.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/te.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/th.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/tn.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/to.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/tr.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/ug_cyrl.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/uk.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/ur.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/vi.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/vo.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/wae.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/wo.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/yo.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/zh.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/zh_big5.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/zh_gb.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/zh_pin.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/zh_strk.pl type=file
+d:\tlperl\lib/Unicode/Collate/Locale/zh_zhu.pl type=file
+d:\tlperl\lib/Unicode/Collate/allkeys.txt type=file
+d:\tlperl\lib/Unicode/Collate/keys.txt type=file
+d:\tlperl\lib/Unicode/Normalize.pm type=file
+d:\tlperl\lib/Unicode/UCD.pm type=file
+d:\tlperl\lib/User/grent.pm type=file
+d:\tlperl\lib/User/pwent.pm type=file
+d:\tlperl\lib/Win32.pm type=file
+d:\tlperl\lib/Win32API/File.pm type=file
+d:\tlperl\lib/Win32API/File/cFile.pc type=file
+d:\tlperl\lib/Win32CORE.pm type=file
+d:\tlperl\lib/XSLoader.pm type=file
+d:\tlperl\lib/_charnames.pm type=file
+d:\tlperl\lib/attributes.pm type=file
+d:\tlperl\lib/auto/B/B.dll type=file
+d:\tlperl\lib/auto/B/B.pdb type=file
+d:\tlperl\lib/auto/Compress/Raw/Bzip2/Bzip2.dll type=file
+d:\tlperl\lib/auto/Compress/Raw/Bzip2/Bzip2.pdb type=file
+d:\tlperl\lib/auto/Compress/Raw/Zlib/Zlib.dll type=file
+d:\tlperl\lib/auto/Compress/Raw/Zlib/Zlib.pdb type=file
+d:\tlperl\lib/auto/Cwd/Cwd.dll type=file
+d:\tlperl\lib/auto/Cwd/Cwd.pdb type=file
+d:\tlperl\lib/auto/Data/Dumper/Dumper.dll type=file
+d:\tlperl\lib/auto/Data/Dumper/Dumper.pdb type=file
+d:\tlperl\lib/auto/Devel/Peek/Peek.dll type=file
+d:\tlperl\lib/auto/Devel/Peek/Peek.pdb type=file
+d:\tlperl\lib/auto/Digest/MD5/MD5.dll type=file
+d:\tlperl\lib/auto/Digest/MD5/MD5.pdb type=file
+d:\tlperl\lib/auto/Digest/SHA/SHA.dll type=file
+d:\tlperl\lib/auto/Digest/SHA/SHA.pdb type=file
+d:\tlperl\lib/auto/Encode/Byte/Byte.dll type=file
+d:\tlperl\lib/auto/Encode/Byte/Byte.pdb type=file
+d:\tlperl\lib/auto/Encode/CN/CN.dll type=file
+d:\tlperl\lib/auto/Encode/CN/CN.pdb type=file
+d:\tlperl\lib/auto/Encode/EBCDIC/EBCDIC.dll type=file
+d:\tlperl\lib/auto/Encode/EBCDIC/EBCDIC.pdb type=file
+d:\tlperl\lib/auto/Encode/Encode.dll type=file
+d:\tlperl\lib/auto/Encode/Encode.pdb type=file
+d:\tlperl\lib/auto/Encode/JP/JP.dll type=file
+d:\tlperl\lib/auto/Encode/JP/JP.pdb type=file
+d:\tlperl\lib/auto/Encode/KR/KR.dll type=file
+d:\tlperl\lib/auto/Encode/KR/KR.pdb type=file
+d:\tlperl\lib/auto/Encode/Symbol/Symbol.dll type=file
+d:\tlperl\lib/auto/Encode/Symbol/Symbol.pdb type=file
+d:\tlperl\lib/auto/Encode/TW/TW.dll type=file
+d:\tlperl\lib/auto/Encode/TW/TW.pdb type=file
+d:\tlperl\lib/auto/Encode/Unicode/Unicode.dll type=file
+d:\tlperl\lib/auto/Encode/Unicode/Unicode.pdb type=file
+d:\tlperl\lib/auto/Fcntl/Fcntl.dll type=file
+d:\tlperl\lib/auto/Fcntl/Fcntl.pdb type=file
+d:\tlperl\lib/auto/File/DosGlob/DosGlob.dll type=file
+d:\tlperl\lib/auto/File/DosGlob/DosGlob.pdb type=file
+d:\tlperl\lib/auto/File/Glob/Glob.dll type=file
+d:\tlperl\lib/auto/File/Glob/Glob.pdb type=file
+d:\tlperl\lib/auto/Filter/Util/Call/Call.dll type=file
+d:\tlperl\lib/auto/Filter/Util/Call/Call.pdb type=file
+d:\tlperl\lib/auto/Hash/Util/FieldHash/FieldHash.dll type=file
+d:\tlperl\lib/auto/Hash/Util/FieldHash/FieldHash.pdb type=file
+d:\tlperl\lib/auto/Hash/Util/Util.dll type=file
+d:\tlperl\lib/auto/Hash/Util/Util.pdb type=file
+d:\tlperl\lib/auto/I18N/Langinfo/Langinfo.dll type=file
+d:\tlperl\lib/auto/I18N/Langinfo/Langinfo.pdb type=file
+d:\tlperl\lib/auto/IO/IO.dll type=file
+d:\tlperl\lib/auto/IO/IO.pdb type=file
+d:\tlperl\lib/auto/List/Util/Util.dll type=file
+d:\tlperl\lib/auto/List/Util/Util.pdb type=file
+d:\tlperl\lib/auto/MIME/Base64/Base64.dll type=file
+d:\tlperl\lib/auto/MIME/Base64/Base64.pdb type=file
+d:\tlperl\lib/auto/Math/BigInt/FastCalc/FastCalc.dll type=file
+d:\tlperl\lib/auto/Math/BigInt/FastCalc/FastCalc.pdb type=file
+d:\tlperl\lib/auto/Opcode/Opcode.dll type=file
+d:\tlperl\lib/auto/Opcode/Opcode.pdb type=file
+d:\tlperl\lib/auto/POSIX/POSIX.dll type=file
+d:\tlperl\lib/auto/POSIX/POSIX.pdb type=file
+d:\tlperl\lib/auto/PerlIO/encoding/encoding.dll type=file
+d:\tlperl\lib/auto/PerlIO/encoding/encoding.pdb type=file
+d:\tlperl\lib/auto/PerlIO/mmap/mmap.dll type=file
+d:\tlperl\lib/auto/PerlIO/mmap/mmap.pdb type=file
+d:\tlperl\lib/auto/PerlIO/scalar/scalar.dll type=file
+d:\tlperl\lib/auto/PerlIO/scalar/scalar.pdb type=file
+d:\tlperl\lib/auto/PerlIO/via/via.dll type=file
+d:\tlperl\lib/auto/PerlIO/via/via.pdb type=file
+d:\tlperl\lib/auto/SDBM_File/SDBM_File.dll type=file
+d:\tlperl\lib/auto/SDBM_File/SDBM_File.pdb type=file
+d:\tlperl\lib/auto/Socket/Socket.dll type=file
+d:\tlperl\lib/auto/Socket/Socket.pdb type=file
+d:\tlperl\lib/auto/Storable/Storable.dll type=file
+d:\tlperl\lib/auto/Storable/Storable.pdb type=file
+d:\tlperl\lib/auto/Sys/Hostname/Hostname.dll type=file
+d:\tlperl\lib/auto/Sys/Hostname/Hostname.pdb type=file
+d:\tlperl\lib/auto/Time/HiRes/HiRes.dll type=file
+d:\tlperl\lib/auto/Time/HiRes/HiRes.pdb type=file
+d:\tlperl\lib/auto/Time/Piece/Piece.dll type=file
+d:\tlperl\lib/auto/Time/Piece/Piece.pdb type=file
+d:\tlperl\lib/auto/Unicode/Collate/Collate.dll type=file
+d:\tlperl\lib/auto/Unicode/Collate/Collate.pdb type=file
+d:\tlperl\lib/auto/Unicode/Normalize/Normalize.dll type=file
+d:\tlperl\lib/auto/Unicode/Normalize/Normalize.pdb type=file
+d:\tlperl\lib/auto/Win32/Win32.dll type=file
+d:\tlperl\lib/auto/Win32/Win32.pdb type=file
+d:\tlperl\lib/auto/Win32API/File/File.dll type=file
+d:\tlperl\lib/auto/Win32API/File/File.pdb type=file
+d:\tlperl\lib/auto/Win32CORE/extralibs.ld type=file
+d:\tlperl\lib/auto/attributes/attributes.dll type=file
+d:\tlperl\lib/auto/attributes/attributes.pdb type=file
+d:\tlperl\lib/auto/mro/mro.dll type=file
+d:\tlperl\lib/auto/mro/mro.pdb type=file
+d:\tlperl\lib/auto/re/re.dll type=file
+d:\tlperl\lib/auto/re/re.pdb type=file
+d:\tlperl\lib/auto/threads/shared/shared.dll type=file
+d:\tlperl\lib/auto/threads/shared/shared.pdb type=file
+d:\tlperl\lib/auto/threads/threads.dll type=file
+d:\tlperl\lib/auto/threads/threads.pdb type=file
+d:\tlperl\lib/autodie.pm type=file
+d:\tlperl\lib/autodie/Scope/Guard.pm type=file
+d:\tlperl\lib/autodie/Scope/GuardStack.pm type=file
+d:\tlperl\lib/autodie/Util.pm type=file
+d:\tlperl\lib/autodie/exception.pm type=file
+d:\tlperl\lib/autodie/exception/system.pm type=file
+d:\tlperl\lib/autodie/hints.pm type=file
+d:\tlperl\lib/autodie/skip.pm type=file
+d:\tlperl\lib/autouse.pm type=file
+d:\tlperl\lib/base.pm type=file
+d:\tlperl\lib/bigfloat.pm type=file
+d:\tlperl\lib/bigint.pm type=file
+d:\tlperl\lib/bignum.pm type=file
+d:\tlperl\lib/bigrat.pm type=file
+d:\tlperl\lib/blib.pm type=file
+d:\tlperl\lib/builtin.pm type=file
+d:\tlperl\lib/bytes.pm type=file
+d:\tlperl\lib/bytes_heavy.pl type=file
+d:\tlperl\lib/charnames.pm type=file
+d:\tlperl\lib/constant.pm type=file
+d:\tlperl\lib/deprecate.pm type=file
+d:\tlperl\lib/diagnostics.pm type=file
+d:\tlperl\lib/dumpvar.pl type=file
+d:\tlperl\lib/encoding.pm type=file
+d:\tlperl\lib/encoding/warnings.pm type=file
+d:\tlperl\lib/experimental.pm type=file
+d:\tlperl\lib/feature.pm type=file
+d:\tlperl\lib/fields.pm type=file
+d:\tlperl\lib/filetest.pm type=file
+d:\tlperl\lib/if.pm type=file
+d:\tlperl\lib/integer.pm type=file
+d:\tlperl\lib/less.pm type=file
+d:\tlperl\lib/lib.pm type=file
+d:\tlperl\lib/locale.pm type=file
+d:\tlperl\lib/meta_notation.pm type=file
+d:\tlperl\lib/mro.pm type=file
+d:\tlperl\lib/ok.pm type=file
+d:\tlperl\lib/open.pm type=file
+d:\tlperl\lib/ops.pm type=file
+d:\tlperl\lib/overload.pm type=file
+d:\tlperl\lib/overload/numbers.pm type=file
+d:\tlperl\lib/overloading.pm type=file
+d:\tlperl\lib/parent.pm type=file
+d:\tlperl\lib/perl5db.pl type=file
+d:\tlperl\lib/perlfaq.pm type=file
+d:\tlperl\lib/pods/perl.pod type=file
+d:\tlperl\lib/pods/perl5004delta.pod type=file
+d:\tlperl\lib/pods/perl5005delta.pod type=file
+d:\tlperl\lib/pods/perl5100delta.pod type=file
+d:\tlperl\lib/pods/perl5101delta.pod type=file
+d:\tlperl\lib/pods/perl5120delta.pod type=file
+d:\tlperl\lib/pods/perl5121delta.pod type=file
+d:\tlperl\lib/pods/perl5122delta.pod type=file
+d:\tlperl\lib/pods/perl5123delta.pod type=file
+d:\tlperl\lib/pods/perl5124delta.pod type=file
+d:\tlperl\lib/pods/perl5125delta.pod type=file
+d:\tlperl\lib/pods/perl5140delta.pod type=file
+d:\tlperl\lib/pods/perl5141delta.pod type=file
+d:\tlperl\lib/pods/perl5142delta.pod type=file
+d:\tlperl\lib/pods/perl5143delta.pod type=file
+d:\tlperl\lib/pods/perl5144delta.pod type=file
+d:\tlperl\lib/pods/perl5160delta.pod type=file
+d:\tlperl\lib/pods/perl5161delta.pod type=file
+d:\tlperl\lib/pods/perl5162delta.pod type=file
+d:\tlperl\lib/pods/perl5163delta.pod type=file
+d:\tlperl\lib/pods/perl5180delta.pod type=file
+d:\tlperl\lib/pods/perl5181delta.pod type=file
+d:\tlperl\lib/pods/perl5182delta.pod type=file
+d:\tlperl\lib/pods/perl5184delta.pod type=file
+d:\tlperl\lib/pods/perl5200delta.pod type=file
+d:\tlperl\lib/pods/perl5201delta.pod type=file
+d:\tlperl\lib/pods/perl5202delta.pod type=file
+d:\tlperl\lib/pods/perl5203delta.pod type=file
+d:\tlperl\lib/pods/perl5220delta.pod type=file
+d:\tlperl\lib/pods/perl5221delta.pod type=file
+d:\tlperl\lib/pods/perl5222delta.pod type=file
+d:\tlperl\lib/pods/perl5223delta.pod type=file
+d:\tlperl\lib/pods/perl5224delta.pod type=file
+d:\tlperl\lib/pods/perl5240delta.pod type=file
+d:\tlperl\lib/pods/perl5241delta.pod type=file
+d:\tlperl\lib/pods/perl5242delta.pod type=file
+d:\tlperl\lib/pods/perl5243delta.pod type=file
+d:\tlperl\lib/pods/perl5244delta.pod type=file
+d:\tlperl\lib/pods/perl5260delta.pod type=file
+d:\tlperl\lib/pods/perl5261delta.pod type=file
+d:\tlperl\lib/pods/perl5262delta.pod type=file
+d:\tlperl\lib/pods/perl5263delta.pod type=file
+d:\tlperl\lib/pods/perl5280delta.pod type=file
+d:\tlperl\lib/pods/perl5281delta.pod type=file
+d:\tlperl\lib/pods/perl5282delta.pod type=file
+d:\tlperl\lib/pods/perl5283delta.pod type=file
+d:\tlperl\lib/pods/perl5300delta.pod type=file
+d:\tlperl\lib/pods/perl5301delta.pod type=file
+d:\tlperl\lib/pods/perl5302delta.pod type=file
+d:\tlperl\lib/pods/perl5303delta.pod type=file
+d:\tlperl\lib/pods/perl5320delta.pod type=file
+d:\tlperl\lib/pods/perl5321delta.pod type=file
+d:\tlperl\lib/pods/perl5340delta.pod type=file
+d:\tlperl\lib/pods/perl5341delta.pod type=file
+d:\tlperl\lib/pods/perl5342delta.pod type=file
+d:\tlperl\lib/pods/perl5343delta.pod type=file
+d:\tlperl\lib/pods/perl5360delta.pod type=file
+d:\tlperl\lib/pods/perl5361delta.pod type=file
+d:\tlperl\lib/pods/perl5362delta.pod type=file
+d:\tlperl\lib/pods/perl5363delta.pod type=file
+d:\tlperl\lib/pods/perl5380delta.pod type=file
+d:\tlperl\lib/pods/perl5381delta.pod type=file
+d:\tlperl\lib/pods/perl5382delta.pod type=file
+d:\tlperl\lib/pods/perl561delta.pod type=file
+d:\tlperl\lib/pods/perl56delta.pod type=file
+d:\tlperl\lib/pods/perl581delta.pod type=file
+d:\tlperl\lib/pods/perl582delta.pod type=file
+d:\tlperl\lib/pods/perl583delta.pod type=file
+d:\tlperl\lib/pods/perl584delta.pod type=file
+d:\tlperl\lib/pods/perl585delta.pod type=file
+d:\tlperl\lib/pods/perl586delta.pod type=file
+d:\tlperl\lib/pods/perl587delta.pod type=file
+d:\tlperl\lib/pods/perl588delta.pod type=file
+d:\tlperl\lib/pods/perl589delta.pod type=file
+d:\tlperl\lib/pods/perl58delta.pod type=file
+d:\tlperl\lib/pods/perlaix.pod type=file
+d:\tlperl\lib/pods/perlamiga.pod type=file
+d:\tlperl\lib/pods/perlandroid.pod type=file
+d:\tlperl\lib/pods/perlapi.pod type=file
+d:\tlperl\lib/pods/perlapio.pod type=file
+d:\tlperl\lib/pods/perlartistic.pod type=file
+d:\tlperl\lib/pods/perlbook.pod type=file
+d:\tlperl\lib/pods/perlboot.pod type=file
+d:\tlperl\lib/pods/perlbot.pod type=file
+d:\tlperl\lib/pods/perlbs2000.pod type=file
+d:\tlperl\lib/pods/perlcall.pod type=file
+d:\tlperl\lib/pods/perlcheat.pod type=file
+d:\tlperl\lib/pods/perlclass.pod type=file
+d:\tlperl\lib/pods/perlclassguts.pod type=file
+d:\tlperl\lib/pods/perlclib.pod type=file
+d:\tlperl\lib/pods/perlcn.pod type=file
+d:\tlperl\lib/pods/perlcommunity.pod type=file
+d:\tlperl\lib/pods/perlcygwin.pod type=file
+d:\tlperl\lib/pods/perldata.pod type=file
+d:\tlperl\lib/pods/perldbmfilter.pod type=file
+d:\tlperl\lib/pods/perldebguts.pod type=file
+d:\tlperl\lib/pods/perldebtut.pod type=file
+d:\tlperl\lib/pods/perldebug.pod type=file
+d:\tlperl\lib/pods/perldelta.pod type=file
+d:\tlperl\lib/pods/perldeprecation.pod type=file
+d:\tlperl\lib/pods/perldiag.pod type=file
+d:\tlperl\lib/pods/perldoc.pod type=file
+d:\tlperl\lib/pods/perldocstyle.pod type=file
+d:\tlperl\lib/pods/perldsc.pod type=file
+d:\tlperl\lib/pods/perldtrace.pod type=file
+d:\tlperl\lib/pods/perlebcdic.pod type=file
+d:\tlperl\lib/pods/perlembed.pod type=file
+d:\tlperl\lib/pods/perlexperiment.pod type=file
+d:\tlperl\lib/pods/perlfaq.pod type=file
+d:\tlperl\lib/pods/perlfaq1.pod type=file
+d:\tlperl\lib/pods/perlfaq2.pod type=file
+d:\tlperl\lib/pods/perlfaq3.pod type=file
+d:\tlperl\lib/pods/perlfaq4.pod type=file
+d:\tlperl\lib/pods/perlfaq5.pod type=file
+d:\tlperl\lib/pods/perlfaq6.pod type=file
+d:\tlperl\lib/pods/perlfaq7.pod type=file
+d:\tlperl\lib/pods/perlfaq8.pod type=file
+d:\tlperl\lib/pods/perlfaq9.pod type=file
+d:\tlperl\lib/pods/perlfilter.pod type=file
+d:\tlperl\lib/pods/perlfork.pod type=file
+d:\tlperl\lib/pods/perlform.pod type=file
+d:\tlperl\lib/pods/perlfreebsd.pod type=file
+d:\tlperl\lib/pods/perlfunc.pod type=file
+d:\tlperl\lib/pods/perlgit.pod type=file
+d:\tlperl\lib/pods/perlglossary.pod type=file
+d:\tlperl\lib/pods/perlgov.pod type=file
+d:\tlperl\lib/pods/perlgpl.pod type=file
+d:\tlperl\lib/pods/perlguts.pod type=file
+d:\tlperl\lib/pods/perlhack.pod type=file
+d:\tlperl\lib/pods/perlhacktips.pod type=file
+d:\tlperl\lib/pods/perlhacktut.pod type=file
+d:\tlperl\lib/pods/perlhaiku.pod type=file
+d:\tlperl\lib/pods/perlhist.pod type=file
+d:\tlperl\lib/pods/perlhpux.pod type=file
+d:\tlperl\lib/pods/perlhurd.pod type=file
+d:\tlperl\lib/pods/perlintern.pod type=file
+d:\tlperl\lib/pods/perlinterp.pod type=file
+d:\tlperl\lib/pods/perlintro.pod type=file
+d:\tlperl\lib/pods/perliol.pod type=file
+d:\tlperl\lib/pods/perlipc.pod type=file
+d:\tlperl\lib/pods/perlirix.pod type=file
+d:\tlperl\lib/pods/perljp.pod type=file
+d:\tlperl\lib/pods/perlko.pod type=file
+d:\tlperl\lib/pods/perllexwarn.pod type=file
+d:\tlperl\lib/pods/perllinux.pod type=file
+d:\tlperl\lib/pods/perllocale.pod type=file
+d:\tlperl\lib/pods/perllol.pod type=file
+d:\tlperl\lib/pods/perlmacosx.pod type=file
+d:\tlperl\lib/pods/perlmod.pod type=file
+d:\tlperl\lib/pods/perlmodinstall.pod type=file
+d:\tlperl\lib/pods/perlmodlib.pod type=file
+d:\tlperl\lib/pods/perlmodstyle.pod type=file
+d:\tlperl\lib/pods/perlmroapi.pod type=file
+d:\tlperl\lib/pods/perlnewmod.pod type=file
+d:\tlperl\lib/pods/perlnumber.pod type=file
+d:\tlperl\lib/pods/perlobj.pod type=file
+d:\tlperl\lib/pods/perlootut.pod type=file
+d:\tlperl\lib/pods/perlop.pod type=file
+d:\tlperl\lib/pods/perlopenbsd.pod type=file
+d:\tlperl\lib/pods/perlopentut.pod type=file
+d:\tlperl\lib/pods/perlos2.pod type=file
+d:\tlperl\lib/pods/perlos390.pod type=file
+d:\tlperl\lib/pods/perlos400.pod type=file
+d:\tlperl\lib/pods/perlpacktut.pod type=file
+d:\tlperl\lib/pods/perlperf.pod type=file
+d:\tlperl\lib/pods/perlplan9.pod type=file
+d:\tlperl\lib/pods/perlpod.pod type=file
+d:\tlperl\lib/pods/perlpodspec.pod type=file
+d:\tlperl\lib/pods/perlpodstyle.pod type=file
+d:\tlperl\lib/pods/perlpolicy.pod type=file
+d:\tlperl\lib/pods/perlport.pod type=file
+d:\tlperl\lib/pods/perlpragma.pod type=file
+d:\tlperl\lib/pods/perlqnx.pod type=file
+d:\tlperl\lib/pods/perlre.pod type=file
+d:\tlperl\lib/pods/perlreapi.pod type=file
+d:\tlperl\lib/pods/perlrebackslash.pod type=file
+d:\tlperl\lib/pods/perlrecharclass.pod type=file
+d:\tlperl\lib/pods/perlref.pod type=file
+d:\tlperl\lib/pods/perlreftut.pod type=file
+d:\tlperl\lib/pods/perlreguts.pod type=file
+d:\tlperl\lib/pods/perlrepository.pod type=file
+d:\tlperl\lib/pods/perlrequick.pod type=file
+d:\tlperl\lib/pods/perlreref.pod type=file
+d:\tlperl\lib/pods/perlretut.pod type=file
+d:\tlperl\lib/pods/perlriscos.pod type=file
+d:\tlperl\lib/pods/perlrun.pod type=file
+d:\tlperl\lib/pods/perlsec.pod type=file
+d:\tlperl\lib/pods/perlsecpolicy.pod type=file
+d:\tlperl\lib/pods/perlsolaris.pod type=file
+d:\tlperl\lib/pods/perlsource.pod type=file
+d:\tlperl\lib/pods/perlstyle.pod type=file
+d:\tlperl\lib/pods/perlsub.pod type=file
+d:\tlperl\lib/pods/perlsyn.pod type=file
+d:\tlperl\lib/pods/perlsynology.pod type=file
+d:\tlperl\lib/pods/perlthrtut.pod type=file
+d:\tlperl\lib/pods/perltie.pod type=file
+d:\tlperl\lib/pods/perltoc.pod type=file
+d:\tlperl\lib/pods/perltodo.pod type=file
+d:\tlperl\lib/pods/perltooc.pod type=file
+d:\tlperl\lib/pods/perltoot.pod type=file
+d:\tlperl\lib/pods/perltrap.pod type=file
+d:\tlperl\lib/pods/perltru64.pod type=file
+d:\tlperl\lib/pods/perltw.pod type=file
+d:\tlperl\lib/pods/perlunicode.pod type=file
+d:\tlperl\lib/pods/perlunicook.pod type=file
+d:\tlperl\lib/pods/perlunifaq.pod type=file
+d:\tlperl\lib/pods/perluniintro.pod type=file
+d:\tlperl\lib/pods/perluniprops.pod type=file
+d:\tlperl\lib/pods/perlunitut.pod type=file
+d:\tlperl\lib/pods/perlutil.pod type=file
+d:\tlperl\lib/pods/perlvar.pod type=file
+d:\tlperl\lib/pods/perlvms.pod type=file
+d:\tlperl\lib/pods/perlvos.pod type=file
+d:\tlperl\lib/pods/perlwin32.pod type=file
+d:\tlperl\lib/pods/perlxs.pod type=file
+d:\tlperl\lib/pods/perlxstut.pod type=file
+d:\tlperl\lib/pods/perlxstypemap.pod type=file
+d:\tlperl\lib/re.pm type=file
+d:\tlperl\lib/sigtrap.pm type=file
+d:\tlperl\lib/sort.pm type=file
+d:\tlperl\lib/stable.pm type=file
+d:\tlperl\lib/strict.pm type=file
+d:\tlperl\lib/subs.pm type=file
+d:\tlperl\lib/threads.pm type=file
+d:\tlperl\lib/threads/shared.pm type=file
+d:\tlperl\lib/unicore/Blocks.txt type=file
+d:\tlperl\lib/unicore/CombiningClass.pl type=file
+d:\tlperl\lib/unicore/Decomposition.pl type=file
+d:\tlperl\lib/unicore/Name.pl type=file
+d:\tlperl\lib/unicore/Name.pm type=file
+d:\tlperl\lib/unicore/NamedSequences.txt type=file
+d:\tlperl\lib/unicore/SpecialCasing.txt type=file
+d:\tlperl\lib/unicore/TestNorm.pl type=file
+d:\tlperl\lib/unicore/To/Age.pl type=file
+d:\tlperl\lib/unicore/To/Bc.pl type=file
+d:\tlperl\lib/unicore/To/Bmg.pl type=file
+d:\tlperl\lib/unicore/To/Bpb.pl type=file
+d:\tlperl\lib/unicore/To/Bpt.pl type=file
+d:\tlperl\lib/unicore/To/Cf.pl type=file
+d:\tlperl\lib/unicore/To/Ea.pl type=file
+d:\tlperl\lib/unicore/To/EqUIdeo.pl type=file
+d:\tlperl\lib/unicore/To/GCB.pl type=file
+d:\tlperl\lib/unicore/To/Gc.pl type=file
+d:\tlperl\lib/unicore/To/Hst.pl type=file
+d:\tlperl\lib/unicore/To/Identif2.pl type=file
+d:\tlperl\lib/unicore/To/Identifi.pl type=file
+d:\tlperl\lib/unicore/To/InPC.pl type=file
+d:\tlperl\lib/unicore/To/InSC.pl type=file
+d:\tlperl\lib/unicore/To/Isc.pl type=file
+d:\tlperl\lib/unicore/To/Jg.pl type=file
+d:\tlperl\lib/unicore/To/Jt.pl type=file
+d:\tlperl\lib/unicore/To/Lb.pl type=file
+d:\tlperl\lib/unicore/To/Lc.pl type=file
+d:\tlperl\lib/unicore/To/NFCQC.pl type=file
+d:\tlperl\lib/unicore/To/NFDQC.pl type=file
+d:\tlperl\lib/unicore/To/NFKCCF.pl type=file
+d:\tlperl\lib/unicore/To/NFKCQC.pl type=file
+d:\tlperl\lib/unicore/To/NFKDQC.pl type=file
+d:\tlperl\lib/unicore/To/Na1.pl type=file
+d:\tlperl\lib/unicore/To/NameAlia.pl type=file
+d:\tlperl\lib/unicore/To/Nt.pl type=file
+d:\tlperl\lib/unicore/To/Nv.pl type=file
+d:\tlperl\lib/unicore/To/PerlDeci.pl type=file
+d:\tlperl\lib/unicore/To/SB.pl type=file
+d:\tlperl\lib/unicore/To/Sc.pl type=file
+d:\tlperl\lib/unicore/To/Scx.pl type=file
+d:\tlperl\lib/unicore/To/Tc.pl type=file
+d:\tlperl\lib/unicore/To/Uc.pl type=file
+d:\tlperl\lib/unicore/To/Vo.pl type=file
+d:\tlperl\lib/unicore/To/WB.pl type=file
+d:\tlperl\lib/unicore/To/_PerlLB.pl type=file
+d:\tlperl\lib/unicore/To/_PerlSCX.pl type=file
+d:\tlperl\lib/unicore/UCD.pl type=file
+d:\tlperl\lib/unicore/lib/Age/NA.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V100.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V11.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V110.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V120.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V130.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V140.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V150.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V20.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V30.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V31.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V32.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V40.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V41.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V50.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V51.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V52.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V60.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V61.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V70.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V80.pl type=file
+d:\tlperl\lib/unicore/lib/Age/V90.pl type=file
+d:\tlperl\lib/unicore/lib/Alpha/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Bc/AL.pl type=file
+d:\tlperl\lib/unicore/lib/Bc/AN.pl type=file
+d:\tlperl\lib/unicore/lib/Bc/B.pl type=file
+d:\tlperl\lib/unicore/lib/Bc/BN.pl type=file
+d:\tlperl\lib/unicore/lib/Bc/CS.pl type=file
+d:\tlperl\lib/unicore/lib/Bc/EN.pl type=file
+d:\tlperl\lib/unicore/lib/Bc/ES.pl type=file
+d:\tlperl\lib/unicore/lib/Bc/ET.pl type=file
+d:\tlperl\lib/unicore/lib/Bc/L.pl type=file
+d:\tlperl\lib/unicore/lib/Bc/NSM.pl type=file
+d:\tlperl\lib/unicore/lib/Bc/ON.pl type=file
+d:\tlperl\lib/unicore/lib/Bc/R.pl type=file
+d:\tlperl\lib/unicore/lib/Bc/WS.pl type=file
+d:\tlperl\lib/unicore/lib/BidiC/Y.pl type=file
+d:\tlperl\lib/unicore/lib/BidiM/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Blk/NB.pl type=file
+d:\tlperl\lib/unicore/lib/Bpt/C.pl type=file
+d:\tlperl\lib/unicore/lib/Bpt/N.pl type=file
+d:\tlperl\lib/unicore/lib/Bpt/O.pl type=file
+d:\tlperl\lib/unicore/lib/CE/Y.pl type=file
+d:\tlperl\lib/unicore/lib/CI/Y.pl type=file
+d:\tlperl\lib/unicore/lib/CWCF/Y.pl type=file
+d:\tlperl\lib/unicore/lib/CWCM/Y.pl type=file
+d:\tlperl\lib/unicore/lib/CWKCF/Y.pl type=file
+d:\tlperl\lib/unicore/lib/CWL/Y.pl type=file
+d:\tlperl\lib/unicore/lib/CWT/Y.pl type=file
+d:\tlperl\lib/unicore/lib/CWU/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Cased/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Ccc/A.pl type=file
+d:\tlperl\lib/unicore/lib/Ccc/AL.pl type=file
+d:\tlperl\lib/unicore/lib/Ccc/AR.pl type=file
+d:\tlperl\lib/unicore/lib/Ccc/ATAR.pl type=file
+d:\tlperl\lib/unicore/lib/Ccc/B.pl type=file
+d:\tlperl\lib/unicore/lib/Ccc/BR.pl type=file
+d:\tlperl\lib/unicore/lib/Ccc/DB.pl type=file
+d:\tlperl\lib/unicore/lib/Ccc/NK.pl type=file
+d:\tlperl\lib/unicore/lib/Ccc/NR.pl type=file
+d:\tlperl\lib/unicore/lib/Ccc/OV.pl type=file
+d:\tlperl\lib/unicore/lib/Ccc/VR.pl type=file
+d:\tlperl\lib/unicore/lib/CompEx/Y.pl type=file
+d:\tlperl\lib/unicore/lib/DI/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Dash/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Dep/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Dia/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Dt/Com.pl type=file
+d:\tlperl\lib/unicore/lib/Dt/Enc.pl type=file
+d:\tlperl\lib/unicore/lib/Dt/Fin.pl type=file
+d:\tlperl\lib/unicore/lib/Dt/Font.pl type=file
+d:\tlperl\lib/unicore/lib/Dt/Init.pl type=file
+d:\tlperl\lib/unicore/lib/Dt/Iso.pl type=file
+d:\tlperl\lib/unicore/lib/Dt/Med.pl type=file
+d:\tlperl\lib/unicore/lib/Dt/Nar.pl type=file
+d:\tlperl\lib/unicore/lib/Dt/Nb.pl type=file
+d:\tlperl\lib/unicore/lib/Dt/NonCanon.pl type=file
+d:\tlperl\lib/unicore/lib/Dt/Sqr.pl type=file
+d:\tlperl\lib/unicore/lib/Dt/Sub.pl type=file
+d:\tlperl\lib/unicore/lib/Dt/Sup.pl type=file
+d:\tlperl\lib/unicore/lib/Dt/Vert.pl type=file
+d:\tlperl\lib/unicore/lib/EBase/Y.pl type=file
+d:\tlperl\lib/unicore/lib/EComp/Y.pl type=file
+d:\tlperl\lib/unicore/lib/EPres/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Ea/A.pl type=file
+d:\tlperl\lib/unicore/lib/Ea/H.pl type=file
+d:\tlperl\lib/unicore/lib/Ea/N.pl type=file
+d:\tlperl\lib/unicore/lib/Ea/Na.pl type=file
+d:\tlperl\lib/unicore/lib/Ea/W.pl type=file
+d:\tlperl\lib/unicore/lib/Emoji/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Ext/Y.pl type=file
+d:\tlperl\lib/unicore/lib/ExtPict/Y.pl type=file
+d:\tlperl\lib/unicore/lib/GCB/CN.pl type=file
+d:\tlperl\lib/unicore/lib/GCB/EX.pl type=file
+d:\tlperl\lib/unicore/lib/GCB/LV.pl type=file
+d:\tlperl\lib/unicore/lib/GCB/LVT.pl type=file
+d:\tlperl\lib/unicore/lib/GCB/PP.pl type=file
+d:\tlperl\lib/unicore/lib/GCB/SM.pl type=file
+d:\tlperl\lib/unicore/lib/GCB/XX.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/C.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Cf.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Cn.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/L.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/LC.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Ll.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Lm.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Lo.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Lu.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/M.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Mc.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Me.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Mn.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/N.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Nd.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Nl.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/No.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/P.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Pc.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Pd.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Pe.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Pf.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Pi.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Po.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Ps.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/S.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Sc.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Sk.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Sm.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/So.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Z.pl type=file
+d:\tlperl\lib/unicore/lib/Gc/Zs.pl type=file
+d:\tlperl\lib/unicore/lib/GrBase/Y.pl type=file
+d:\tlperl\lib/unicore/lib/GrExt/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Hex/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Hst/NA.pl type=file
+d:\tlperl\lib/unicore/lib/Hyphen/T.pl type=file
+d:\tlperl\lib/unicore/lib/IDC/Y.pl type=file
+d:\tlperl\lib/unicore/lib/IDS/Y.pl type=file
+d:\tlperl\lib/unicore/lib/IdStatus/Allowed.pl type=file
+d:\tlperl\lib/unicore/lib/IdStatus/Restrict.pl type=file
+d:\tlperl\lib/unicore/lib/IdType/DefaultI.pl type=file
+d:\tlperl\lib/unicore/lib/IdType/Exclusio.pl type=file
+d:\tlperl\lib/unicore/lib/IdType/Inclusio.pl type=file
+d:\tlperl\lib/unicore/lib/IdType/LimitedU.pl type=file
+d:\tlperl\lib/unicore/lib/IdType/NotChara.pl type=file
+d:\tlperl\lib/unicore/lib/IdType/NotNFKC.pl type=file
+d:\tlperl\lib/unicore/lib/IdType/NotXID.pl type=file
+d:\tlperl\lib/unicore/lib/IdType/Obsolete.pl type=file
+d:\tlperl\lib/unicore/lib/IdType/Recommen.pl type=file
+d:\tlperl\lib/unicore/lib/IdType/Technica.pl type=file
+d:\tlperl\lib/unicore/lib/IdType/Uncommon.pl type=file
+d:\tlperl\lib/unicore/lib/Ideo/Y.pl type=file
+d:\tlperl\lib/unicore/lib/In/10_0.pl type=file
+d:\tlperl\lib/unicore/lib/In/11_0.pl type=file
+d:\tlperl\lib/unicore/lib/In/12_0.pl type=file
+d:\tlperl\lib/unicore/lib/In/12_1.pl type=file
+d:\tlperl\lib/unicore/lib/In/13_0.pl type=file
+d:\tlperl\lib/unicore/lib/In/14_0.pl type=file
+d:\tlperl\lib/unicore/lib/In/15_0.pl type=file
+d:\tlperl\lib/unicore/lib/In/2_0.pl type=file
+d:\tlperl\lib/unicore/lib/In/2_1.pl type=file
+d:\tlperl\lib/unicore/lib/In/3_0.pl type=file
+d:\tlperl\lib/unicore/lib/In/3_1.pl type=file
+d:\tlperl\lib/unicore/lib/In/3_2.pl type=file
+d:\tlperl\lib/unicore/lib/In/4_0.pl type=file
+d:\tlperl\lib/unicore/lib/In/4_1.pl type=file
+d:\tlperl\lib/unicore/lib/In/5_0.pl type=file
+d:\tlperl\lib/unicore/lib/In/5_1.pl type=file
+d:\tlperl\lib/unicore/lib/In/5_2.pl type=file
+d:\tlperl\lib/unicore/lib/In/6_0.pl type=file
+d:\tlperl\lib/unicore/lib/In/6_1.pl type=file
+d:\tlperl\lib/unicore/lib/In/6_2.pl type=file
+d:\tlperl\lib/unicore/lib/In/6_3.pl type=file
+d:\tlperl\lib/unicore/lib/In/7_0.pl type=file
+d:\tlperl\lib/unicore/lib/In/8_0.pl type=file
+d:\tlperl\lib/unicore/lib/In/9_0.pl type=file
+d:\tlperl\lib/unicore/lib/InPC/Bottom.pl type=file
+d:\tlperl\lib/unicore/lib/InPC/BottomAn.pl type=file
+d:\tlperl\lib/unicore/lib/InPC/Left.pl type=file
+d:\tlperl\lib/unicore/lib/InPC/LeftAndR.pl type=file
+d:\tlperl\lib/unicore/lib/InPC/NA.pl type=file
+d:\tlperl\lib/unicore/lib/InPC/Overstru.pl type=file
+d:\tlperl\lib/unicore/lib/InPC/Right.pl type=file
+d:\tlperl\lib/unicore/lib/InPC/Top.pl type=file
+d:\tlperl\lib/unicore/lib/InPC/TopAndBo.pl type=file
+d:\tlperl\lib/unicore/lib/InPC/TopAndL2.pl type=file
+d:\tlperl\lib/unicore/lib/InPC/TopAndLe.pl type=file
+d:\tlperl\lib/unicore/lib/InPC/TopAndRi.pl type=file
+d:\tlperl\lib/unicore/lib/InPC/VisualOr.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Avagraha.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Bindu.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Cantilla.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Consona2.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Consona3.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Consona4.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Consona5.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Consona6.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Consona7.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Consona8.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Consona9.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Consonan.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Geminati.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Invisibl.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Nukta.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Number.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Other.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/PureKill.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Syllable.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/ToneMark.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Virama.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Visarga.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/Vowel.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/VowelDep.pl type=file
+d:\tlperl\lib/unicore/lib/InSC/VowelInd.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Ain.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Alef.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Beh.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Dal.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/FarsiYeh.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Feh.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Gaf.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Hah.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/HanifiRo.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Kaf.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Lam.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/NoJoinin.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Noon.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Qaf.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Reh.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Sad.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Seen.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Tah.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Waw.pl type=file
+d:\tlperl\lib/unicore/lib/Jg/Yeh.pl type=file
+d:\tlperl\lib/unicore/lib/Jt/C.pl type=file
+d:\tlperl\lib/unicore/lib/Jt/D.pl type=file
+d:\tlperl\lib/unicore/lib/Jt/L.pl type=file
+d:\tlperl\lib/unicore/lib/Jt/R.pl type=file
+d:\tlperl\lib/unicore/lib/Jt/T.pl type=file
+d:\tlperl\lib/unicore/lib/Jt/U.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/AI.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/AL.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/BA.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/BB.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/CJ.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/CL.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/CM.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/EX.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/GL.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/ID.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/IN.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/IS.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/NS.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/NU.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/OP.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/PO.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/PR.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/QU.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/SA.pl type=file
+d:\tlperl\lib/unicore/lib/Lb/XX.pl type=file
+d:\tlperl\lib/unicore/lib/Lower/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Math/Y.pl type=file
+d:\tlperl\lib/unicore/lib/NFCQC/M.pl type=file
+d:\tlperl\lib/unicore/lib/NFCQC/Y.pl type=file
+d:\tlperl\lib/unicore/lib/NFDQC/N.pl type=file
+d:\tlperl\lib/unicore/lib/NFDQC/Y.pl type=file
+d:\tlperl\lib/unicore/lib/NFKCQC/N.pl type=file
+d:\tlperl\lib/unicore/lib/NFKCQC/Y.pl type=file
+d:\tlperl\lib/unicore/lib/NFKDQC/N.pl type=file
+d:\tlperl\lib/unicore/lib/NFKDQC/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Nt/Di.pl type=file
+d:\tlperl\lib/unicore/lib/Nt/None.pl type=file
+d:\tlperl\lib/unicore/lib/Nt/Nu.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/0.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/1.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/10.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/100.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/1000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/10000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/100000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/11.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/12.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/13.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/14.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/15.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/16.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/17.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/18.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/19.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/1_16.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/1_2.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/1_3.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/1_4.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/1_6.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/1_8.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/2.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/20.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/200.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/2000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/20000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/2_3.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/3.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/30.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/300.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/3000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/30000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/3_16.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/3_4.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/4.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/40.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/400.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/4000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/40000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/5.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/50.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/500.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/5000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/50000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/6.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/60.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/600.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/6000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/60000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/7.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/70.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/700.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/7000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/70000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/8.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/80.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/800.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/8000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/80000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/9.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/90.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/900.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/9000.pl type=file
+d:\tlperl\lib/unicore/lib/Nv/90000.pl type=file
+d:\tlperl\lib/unicore/lib/PCM/Y.pl type=file
+d:\tlperl\lib/unicore/lib/PatSyn/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/Alnum.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/Assigned.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/Blank.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/Graph.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/PerlWord.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/PosixPun.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/Print.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/SpacePer.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/Title.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/Word.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/XPosixPu.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/_PerlAny.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/_PerlCh2.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/_PerlCha.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/_PerlFol.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/_PerlIDC.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/_PerlIDS.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/_PerlIsI.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/_PerlNch.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/_PerlPat.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/_PerlPr2.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/_PerlPro.pl type=file
+d:\tlperl\lib/unicore/lib/Perl/_PerlQuo.pl type=file
+d:\tlperl\lib/unicore/lib/QMark/Y.pl type=file
+d:\tlperl\lib/unicore/lib/SB/AT.pl type=file
+d:\tlperl\lib/unicore/lib/SB/CL.pl type=file
+d:\tlperl\lib/unicore/lib/SB/EX.pl type=file
+d:\tlperl\lib/unicore/lib/SB/FO.pl type=file
+d:\tlperl\lib/unicore/lib/SB/LE.pl type=file
+d:\tlperl\lib/unicore/lib/SB/LO.pl type=file
+d:\tlperl\lib/unicore/lib/SB/NU.pl type=file
+d:\tlperl\lib/unicore/lib/SB/SC.pl type=file
+d:\tlperl\lib/unicore/lib/SB/ST.pl type=file
+d:\tlperl\lib/unicore/lib/SB/Sp.pl type=file
+d:\tlperl\lib/unicore/lib/SB/UP.pl type=file
+d:\tlperl\lib/unicore/lib/SB/XX.pl type=file
+d:\tlperl\lib/unicore/lib/SD/Y.pl type=file
+d:\tlperl\lib/unicore/lib/STerm/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Arab.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Beng.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Cprt.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Cyrl.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Deva.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Dupl.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Geor.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Glag.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Gong.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Gonm.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Gran.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Grek.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Gujr.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Guru.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Han.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Hang.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Hira.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Kana.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Knda.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Latn.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Limb.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Linb.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Mlym.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Mong.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Mult.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Orya.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Sinh.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Syrc.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Taml.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Telu.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Zinh.pl type=file
+d:\tlperl\lib/unicore/lib/Sc/Zyyy.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Adlm.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Arab.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Armn.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Beng.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Bhks.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Bopo.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Cakm.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Cham.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Copt.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Cprt.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Cyrl.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Deva.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Diak.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Dupl.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Ethi.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Geor.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Glag.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Gong.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Gonm.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Gran.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Grek.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Gujr.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Guru.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Han.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Hang.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Hebr.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Hira.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Hmng.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Hmnp.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Kana.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Khar.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Khmr.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Khoj.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Knda.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Kthi.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Lana.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Lao.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Latn.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Limb.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Lina.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Linb.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Mlym.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Mong.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Mult.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Mymr.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Nand.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Nko.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Orya.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Phlp.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Rohg.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Shrd.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Sind.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Sinh.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Syrc.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Tagb.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Takr.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Talu.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Taml.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Tang.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Telu.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Thaa.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Tibt.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Tirh.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Vith.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Xsux.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Yezi.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Yi.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Zinh.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Zyyy.pl type=file
+d:\tlperl\lib/unicore/lib/Scx/Zzzz.pl type=file
+d:\tlperl\lib/unicore/lib/Term/Y.pl type=file
+d:\tlperl\lib/unicore/lib/UIdeo/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Upper/Y.pl type=file
+d:\tlperl\lib/unicore/lib/VS/Y.pl type=file
+d:\tlperl\lib/unicore/lib/Vo/R.pl type=file
+d:\tlperl\lib/unicore/lib/Vo/Tr.pl type=file
+d:\tlperl\lib/unicore/lib/Vo/Tu.pl type=file
+d:\tlperl\lib/unicore/lib/Vo/U.pl type=file
+d:\tlperl\lib/unicore/lib/WB/EX.pl type=file
+d:\tlperl\lib/unicore/lib/WB/Extend.pl type=file
+d:\tlperl\lib/unicore/lib/WB/FO.pl type=file
+d:\tlperl\lib/unicore/lib/WB/HL.pl type=file
+d:\tlperl\lib/unicore/lib/WB/KA.pl type=file
+d:\tlperl\lib/unicore/lib/WB/LE.pl type=file
+d:\tlperl\lib/unicore/lib/WB/MB.pl type=file
+d:\tlperl\lib/unicore/lib/WB/ML.pl type=file
+d:\tlperl\lib/unicore/lib/WB/MN.pl type=file
+d:\tlperl\lib/unicore/lib/WB/NU.pl type=file
+d:\tlperl\lib/unicore/lib/WB/WSegSpac.pl type=file
+d:\tlperl\lib/unicore/lib/WB/XX.pl type=file
+d:\tlperl\lib/unicore/lib/XIDC/Y.pl type=file
+d:\tlperl\lib/unicore/lib/XIDS/Y.pl type=file
+d:\tlperl\lib/unicore/uni_keywords.pl type=file
+d:\tlperl\lib/unicore/version type=file
+d:\tlperl\lib/utf8.pm type=file
+d:\tlperl\lib/vars.pm type=file
+d:\tlperl\lib/version.pm type=file
+d:\tlperl\lib/version.pod type=file
+d:\tlperl\lib/version/Internals.pod type=file
+d:\tlperl\lib/version/regex.pm type=file
+d:\tlperl\lib/vmsish.pm type=file
+d:\tlperl\lib/warnings.pm type=file
+d:\tlperl\lib/warnings/register.pm type=file
diff --git a/Master/tlpkg/tlperl/lib/App/Cpan.pm b/Master/tlpkg/tlperl/lib/App/Cpan.pm
index efd04331c86..6358e82a036 100644
--- a/Master/tlpkg/tlperl/lib/App/Cpan.pm
+++ b/Master/tlpkg/tlperl/lib/App/Cpan.pm
@@ -6,7 +6,7 @@ use vars qw($VERSION);
use if $] < 5.008 => 'IO::Scalar';
-$VERSION = '1.676';
+$VERSION = '1.678';
=head1 NAME
@@ -244,9 +244,9 @@ The build tools, L<ExtUtils::MakeMaker> and L<Module::Build> use some,
while others matter to the levels above them. Some of these are specified
by the Perl Toolchain Gang:
-Lancaster Concensus: L<https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/lancaster-consensus.md>
+Lancaster Consensus: L<https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/lancaster-consensus.md>
-Oslo Concensus: L<https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/oslo-consensus.md>
+Oslo Consensus: L<https://github.com/Perl-Toolchain-Gang/toolchain-site/blob/master/oslo-consensus.md>
=over 4
@@ -347,10 +347,10 @@ sub GOOD_EXIT () { 0 }
# key => [ sub ref, takes args?, exit value, description ]
# options that do their thing first, then exit
- h => [ \&_print_help, NO_ARGS, GOOD_EXIT, 'Printing help' ],
- v => [ \&_print_version, NO_ARGS, GOOD_EXIT, 'Printing version' ],
- V => [ \&_print_details, NO_ARGS, GOOD_EXIT, 'Printing detailed version' ],
- X => [ \&_list_all_namespaces, NO_ARGS, GOOD_EXIT, 'Listing all namespaces' ],
+ h => [ \&_print_help, NO_ARGS, GOOD_EXIT, 'Printing help' ],
+ v => [ \&_print_version, NO_ARGS, GOOD_EXIT, 'Printing version' ],
+ V => [ \&_print_details, NO_ARGS, GOOD_EXIT, 'Printing detailed version' ],
+ X => [ \&_list_all_namespaces, NO_ARGS, GOOD_EXIT, 'Listing all namespaces' ],
# options that affect other options
j => [ \&_load_config, ARGS, GOOD_EXIT, 'Use specified config file' ],
@@ -359,7 +359,7 @@ sub GOOD_EXIT () { 0 }
I => [ \&_load_local_lib, NO_ARGS, GOOD_EXIT, 'Loading local::lib' ],
M => [ \&_use_these_mirrors, ARGS, GOOD_EXIT, 'Setting per session mirrors' ],
P => [ \&_find_good_mirrors, NO_ARGS, GOOD_EXIT, 'Finding good mirrors' ],
- w => [ \&_turn_on_warnings, NO_ARGS, GOOD_EXIT, 'Turning on warnings' ],
+ w => [ \&_turn_on_warnings, NO_ARGS, GOOD_EXIT, 'Turning on warnings' ],
# options that do their one thing
g => [ \&_download, ARGS, GOOD_EXIT, 'Download the latest distro' ],
@@ -377,13 +377,13 @@ sub GOOD_EXIT () { 0 }
r => [ \&_recompile, NO_ARGS, GOOD_EXIT, 'Recompiling' ],
u => [ \&_upgrade, NO_ARGS, GOOD_EXIT, 'Running `make test`' ],
- 's' => [ \&_shell, NO_ARGS, GOOD_EXIT, 'Running `make test`' ],
+ 's' => [ \&_shell, NO_ARGS, GOOD_EXIT, 'Drop into the CPAN.pm shell' ],
- 'x' => [ \&_guess_namespace, ARGS, GOOD_EXIT, 'Guessing namespaces' ],
+ 'x' => [ \&_guess_namespace, ARGS, GOOD_EXIT, 'Guessing namespaces' ],
c => [ \&_default, ARGS, GOOD_EXIT, 'Running `make clean`' ],
f => [ \&_default, ARGS, GOOD_EXIT, 'Installing with force' ],
i => [ \&_default, ARGS, GOOD_EXIT, 'Running `make install`' ],
- 'm' => [ \&_default, ARGS, GOOD_EXIT, 'Running `make`' ],
+ 'm' => [ \&_default, ARGS, GOOD_EXIT, 'Running `make`' ],
t => [ \&_default, ARGS, GOOD_EXIT, 'Running `make test`' ],
T => [ \&_default, ARGS, GOOD_EXIT, 'Installing with notest' ],
);
@@ -483,7 +483,7 @@ sub _setup_environment {
$ENV{PERL_MM_USE_DEFAULT} = 1 unless defined $ENV{PERL_MM_USE_DEFAULT};
}
-=item run()
+=item run( ARGS )
Just do it.
@@ -496,8 +496,8 @@ my $logger;
sub run
{
- my $class = shift;
-
+ my( $class, @args ) = @_;
+ local @ARGV = @args;
my $return_value = HEY_IT_WORKED; # assume that things will work
$logger = $class->_init_logger;
@@ -555,11 +555,11 @@ unless (defined $LL{$LEVEL}){
}
sub new { bless \ my $x, $_[0] }
sub AUTOLOAD {
- my $autoload = our $AUTOLOAD;
- $autoload =~ s/.*://;
- return if $LL{uc $autoload} < $LL{$LEVEL};
- $CPAN::Frontend->mywarn(">($autoload): $_\n")
- for split /[\r\n]+/, $_[1];
+ my $autoload = our $AUTOLOAD;
+ $autoload =~ s/.*://;
+ return if $LL{uc $autoload} < $LL{$LEVEL};
+ $CPAN::Frontend->mywarn(">($autoload): $_\n")
+ for split /[\r\n]+/, $_[1];
}
sub DESTROY { 1 }
}
@@ -567,24 +567,24 @@ sub DESTROY { 1 }
# load a module without searching the default entry for the current
# directory
sub _safe_load_module {
- my $name = shift;
+ my $name = shift;
- local @INC = @INC;
- pop @INC if $INC[-1] eq '.';
+ local @INC = @INC;
+ pop @INC if $INC[-1] eq '.';
- eval "require $name; 1";
+ eval "require $name; 1";
}
sub _init_logger
{
my $log4perl_loaded = _safe_load_module("Log::Log4perl");
- unless( $log4perl_loaded )
- {
- print STDOUT "Loading internal logger. Log::Log4perl recommended for better logging\n";
- $logger = Local::Null::Logger->new;
- return $logger;
- }
+ unless( $log4perl_loaded )
+ {
+ print STDOUT "Loading internal logger. Log::Log4perl recommended for better logging\n";
+ $logger = Local::Null::Logger->new;
+ return $logger;
+ }
Log::Log4perl::init( \ <<"HERE" );
log4perl.rootLogger=$LEVEL, A1
@@ -730,21 +730,21 @@ sub _get_cpanpm_last_line
my @lines = <$fh>;
- # This is a bit ugly. Once we examine a line, we have to
- # examine the line before it and go through all of the same
- # regexes. I could do something fancy, but this works.
- REGEXES: {
+ # This is a bit ugly. Once we examine a line, we have to
+ # examine the line before it and go through all of the same
+ # regexes. I could do something fancy, but this works.
+ REGEXES: {
foreach my $regex ( @skip_lines )
{
if( $lines[-1] =~ m/$regex/ )
- {
- pop @lines;
- redo REGEXES; # we have to go through all of them for every line!
- }
+ {
+ pop @lines;
+ redo REGEXES; # we have to go through all of them for every line!
+ }
}
}
- $logger->debug( "Last interesting line of CPAN.pm output is:\n\t$lines[-1]" );
+ $logger->debug( "Last interesting line of CPAN.pm output is:\n\t$lines[-1]" );
$lines[-1];
}
@@ -833,15 +833,15 @@ sub _print_details # -V
{
require CPAN::Mirrors;
- if ( $CPAN::Config->{connect_to_internet_ok} ) {
- $CPAN::Frontend->myprint(qq{Trying to fetch a mirror list from the Internet\n});
- eval { CPAN::FTP->localize('MIRRORED.BY',File::Spec->catfile($CPAN::Config->{keep_source_where},'MIRRORED.BY'),3,1) }
- or $CPAN::Frontend->mywarn(<<'HERE');
+ if ( $CPAN::Config->{connect_to_internet_ok} ) {
+ $CPAN::Frontend->myprint(qq{Trying to fetch a mirror list from the Internet\n});
+ eval { CPAN::FTP->localize('MIRRORED.BY',File::Spec->catfile($CPAN::Config->{keep_source_where},'MIRRORED.BY'),3,1) }
+ or $CPAN::Frontend->mywarn(<<'HERE');
We failed to get a copy of the mirror list from the Internet.
You will need to provide CPAN mirror URLs yourself.
HERE
- $CPAN::Frontend->myprint("\n");
- }
+ $CPAN::Frontend->myprint("\n");
+ }
my $mirrors = CPAN::Mirrors->new( _mirror_file() );
my @continents = $mirrors->find_best_continents;
@@ -912,21 +912,21 @@ Stolen from File::Path::Expand
sub _expand_filename
{
- my( $path ) = @_;
- no warnings 'uninitialized';
- $logger->debug( "Expanding path $path\n" );
- $path =~ s{\A~([^/]+)?}{
+ my( $path ) = @_;
+ no warnings 'uninitialized';
+ $logger->debug( "Expanding path $path\n" );
+ $path =~ s{\A~([^/]+)?}{
_home_of( $1 || $> ) || "~$1"
- }e;
- return $path;
+ }e;
+ return $path;
}
sub _home_of
{
require User::pwent;
- my( $user ) = @_;
- my $ent = User::pwent::getpw($user) or return;
- return $ent->dir;
+ my( $user ) = @_;
+ my $ent = User::pwent::getpw($user) or return;
+ return $ent->dir;
}
sub _get_default_inc
@@ -1033,19 +1033,19 @@ sub _get_ping_report
return -e $url->file;
}
- my( $port ) = $url->port;
+ my( $port ) = $url->port;
- return unless $port;
+ return unless $port;
- if ( $ping->can('port_number') ) {
- $ping->port_number($port);
- }
- else {
- $ping->{'port_num'} = $port;
- }
+ if ( $ping->can('port_number') ) {
+ $ping->port_number($port);
+ }
+ else {
+ $ping->{'port_num'} = $port;
+ }
- $ping->hires(1) if $ping->can( 'hires' );
- my( $alive, $rtt ) = eval{ $ping->ping( $url->host ) };
+ $ping->hires(1) if $ping->can( 'hires' );
+ my( $alive, $rtt ) = eval{ $ping->ping( $url->host ) };
$alive ? $rtt : undef;
}
@@ -1284,16 +1284,16 @@ sub _get_changes_file
croak "Reading Changes files requires LWP::Simple and URI\n"
unless _safe_load_module("LWP::Simple") && _safe_load_module("URI");
- my $url = shift;
+ my $url = shift;
- my $content = LWP::Simple::get( $url );
- $logger->info( "Got $url ..." ) if defined $content;
+ my $content = LWP::Simple::get( $url );
+ $logger->info( "Got $url ..." ) if defined $content;
#print $content;
my( $change_link ) = $content =~ m|<a href="(.*?)">Changes</a>|gi;
my $changes_url = URI->new_abs( $change_link, $url );
- $logger->debug( "Change link is: $changes_url" );
+ $logger->debug( "Change link is: $changes_url" );
my $changes = LWP::Simple::get( $changes_url );
@@ -1373,8 +1373,8 @@ sub _show_out_of_date
foreach my $module ( @$modules )
{
- next unless $module = _expand_module($module);
- next unless $module->inst_file;
+ next unless $module = _expand_module($module);
+ next unless $module->inst_file;
next if $module->uptodate;
printf "%-40s %.4f %.4f\n",
$module->id,
@@ -1479,7 +1479,7 @@ sub _eval_version
# split package line to hide from PAUSE
my $eval = qq{
package
- ExtUtils::MakeMaker::_version;
+ ExtUtils::MakeMaker::_version;
local $sigil$var;
\$$var=undef; do {
@@ -1519,8 +1519,8 @@ sub _expand_module
my( $module ) = @_;
my $expanded = CPAN::Shell->expandany( $module );
- return $expanded if $expanded;
- $expanded = CPAN::Shell->expand( "Module", $module );
+ return $expanded if $expanded;
+ $expanded = CPAN::Shell->expand( "Module", $module );
unless( defined $expanded ) {
$logger->error( "Could not expand [$module]. Check the module name." );
my $threshold = (
@@ -1689,7 +1689,7 @@ but the canonical source is now in the above repo.
Japheth Cleaver added the bits to allow a forced install (C<-f>).
-Jim Brandt suggest and provided the initial implementation for the
+Jim Brandt suggested and provided the initial implementation for the
up-to-date and Changes features.
Adam Kennedy pointed out that C<exit()> causes problems on Windows
@@ -1705,7 +1705,7 @@ brian d foy, C<< <bdfoy@cpan.org> >>
=head1 COPYRIGHT
-Copyright (c) 2001-2018, brian d foy, All Rights Reserved.
+Copyright (c) 2001-2021, brian d foy, All Rights Reserved.
You may redistribute this under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/App/Prove.pm b/Master/tlpkg/tlperl/lib/App/Prove.pm
index a33fe971ffa..e2785cbee70 100644
--- a/Master/tlpkg/tlperl/lib/App/Prove.pm
+++ b/Master/tlpkg/tlperl/lib/App/Prove.pm
@@ -18,11 +18,11 @@ App::Prove - Implements the C<prove> command.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
@@ -344,13 +344,13 @@ sub _get_args {
# Handle verbose, quiet, really_quiet flags
my %verb_map = ( verbose => 1, quiet => -1, really_quiet => -2, );
- my @verb_adj = grep {$_} map { $self->$_() ? $verb_map{$_} : 0 }
+ my @verb_adj = map { $self->$_() ? $verb_map{$_} : () }
keys %verb_map;
die "Only one of verbose, quiet or really_quiet should be specified\n"
if @verb_adj > 1;
- $args{verbosity} = shift @verb_adj || 0;
+ $args{verbosity} = shift @verb_adj if @verb_adj;
for my $a (qw( merge failures comments timer directives normalize )) {
$args{$a} = 1 if $self->$a();
diff --git a/Master/tlpkg/tlperl/lib/App/Prove/State.pm b/Master/tlpkg/tlperl/lib/App/Prove/State.pm
index 006d4f87123..f3f1125e6f1 100644
--- a/Master/tlpkg/tlperl/lib/App/Prove/State.pm
+++ b/Master/tlpkg/tlperl/lib/App/Prove/State.pm
@@ -25,11 +25,11 @@ App::Prove::State - State storage for the C<prove> command.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/App/Prove/State/Result.pm b/Master/tlpkg/tlperl/lib/App/Prove/State/Result.pm
index fb5e2d52d21..72b625ff9a2 100644
--- a/Master/tlpkg/tlperl/lib/App/Prove/State/Result.pm
+++ b/Master/tlpkg/tlperl/lib/App/Prove/State/Result.pm
@@ -14,11 +14,11 @@ App::Prove::State::Result - Individual test suite results.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/App/Prove/State/Result/Test.pm b/Master/tlpkg/tlperl/lib/App/Prove/State/Result/Test.pm
index f4cddace385..a45911e4611 100644
--- a/Master/tlpkg/tlperl/lib/App/Prove/State/Result/Test.pm
+++ b/Master/tlpkg/tlperl/lib/App/Prove/State/Result/Test.pm
@@ -9,11 +9,11 @@ App::Prove::State::Result::Test - Individual test results.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/Archive/Tar.pm b/Master/tlpkg/tlperl/lib/Archive/Tar.pm
index 91311619d75..476e646e44d 100644
--- a/Master/tlpkg/tlperl/lib/Archive/Tar.pm
+++ b/Master/tlpkg/tlperl/lib/Archive/Tar.pm
@@ -31,7 +31,7 @@ use vars qw[$DEBUG $error $VERSION $WARN $FOLLOW_SYMLINK $CHOWN $CHMOD
$DEBUG = 0;
$WARN = 1;
$FOLLOW_SYMLINK = 0;
-$VERSION = "2.38";
+$VERSION = "2.40";
$CHOWN = 1;
$CHMOD = 1;
$SAME_PERMISSIONS = $> == 0 ? 1 : 0;
diff --git a/Master/tlpkg/tlperl/lib/Archive/Tar/Constant.pm b/Master/tlpkg/tlperl/lib/Archive/Tar/Constant.pm
index 825f2b16568..6f293a2f498 100644
--- a/Master/tlpkg/tlperl/lib/Archive/Tar/Constant.pm
+++ b/Master/tlpkg/tlperl/lib/Archive/Tar/Constant.pm
@@ -8,7 +8,7 @@ use vars qw[$VERSION @ISA @EXPORT];
BEGIN {
require Exporter;
- $VERSION = '2.38';
+ $VERSION = '2.40';
@ISA = qw[Exporter];
require Time::Local if $^O eq "MacOS";
@@ -88,7 +88,10 @@ use constant XZ => do { !$ENV{'PERL5_AT_NO_XZ'} and
};
use constant GZIP_MAGIC_NUM => qr/^(?:\037\213|\037\235)/;
-use constant BZIP_MAGIC_NUM => qr/^BZh\d/;
+
+ # ASCII: B Z h 0 9
+use constant BZIP_MAGIC_NUM => qr/^\x42\x5A\x68[\x30-\x39]/;
+
use constant XZ_MAGIC_NUM => qr/^\xFD\x37\x7A\x58\x5A\x00/;
use constant CAN_CHOWN => sub { ($> == 0 and $^O ne "MacOS" and $^O ne "MSWin32") };
diff --git a/Master/tlpkg/tlperl/lib/Archive/Tar/File.pm b/Master/tlpkg/tlperl/lib/Archive/Tar/File.pm
index be380a5eb14..c361f046d7a 100644
--- a/Master/tlpkg/tlperl/lib/Archive/Tar/File.pm
+++ b/Master/tlpkg/tlperl/lib/Archive/Tar/File.pm
@@ -11,7 +11,7 @@ use Archive::Tar::Constant;
use vars qw[@ISA $VERSION];
#@ISA = qw[Archive::Tar];
-$VERSION = '2.38';
+$VERSION = '2.40';
### set value to 1 to oct() it during the unpack ###
diff --git a/Master/tlpkg/tlperl/lib/Attribute/Handlers.pm b/Master/tlpkg/tlperl/lib/Attribute/Handlers.pm
index f028286fb85..861ea2f8d59 100644
--- a/Master/tlpkg/tlperl/lib/Attribute/Handlers.pm
+++ b/Master/tlpkg/tlperl/lib/Attribute/Handlers.pm
@@ -4,9 +4,9 @@ use Carp;
use warnings;
use strict;
our $AUTOLOAD;
-our $VERSION = '1.01'; # remember to update version in POD!
+our $VERSION = '1.03'; # remember to update version in POD!
# $DB::single=1;
-
+my $debug= $ENV{DEBUG_ATTRIBUTE_HANDLERS} || 0;
my %symcache;
sub findsym {
my ($pkg, $ref, $type) = @_;
@@ -73,21 +73,49 @@ sub import {
local $Exporter::ExportLevel = 2;
$tieclass->import(eval $args);
}
- $attr =~ s/__CALLER__/caller(1)/e;
- $attr = caller()."::".$attr unless $attr =~ /::/;
- eval qq{
- sub $attr : ATTR(VAR) {
- my (\$ref, \$data) = \@_[2,4];
- my \$was_arrayref = ref \$data eq 'ARRAY';
- \$data = [ \$data ] unless \$was_arrayref;
- my \$type = ref(\$ref)||"value (".(\$ref||"<undef>").")";
- (\$type eq 'SCALAR')? tie \$\$ref,'$tieclass',$tiedata
- :(\$type eq 'ARRAY') ? tie \@\$ref,'$tieclass',$tiedata
- :(\$type eq 'HASH') ? tie \%\$ref,'$tieclass',$tiedata
- : die "Can't autotie a \$type\n"
- } 1
- } or die "Internal error: $@";
- }
+ my $code = qq{
+ : ATTR(VAR) {
+ my (\$ref, \$data) = \@_[2,4];
+ my \$was_arrayref = ref \$data eq 'ARRAY';
+ \$data = [ \$data ] unless \$was_arrayref;
+ my \$type = ref(\$ref)||"value (".(\$ref||"<undef>").")";
+ (\$type eq 'SCALAR')? tie \$\$ref,'$tieclass',$tiedata
+ :(\$type eq 'ARRAY') ? tie \@\$ref,'$tieclass',$tiedata
+ :(\$type eq 'HASH') ? tie \%\$ref,'$tieclass',$tiedata
+ : die "Can't autotie a \$type\n"
+ }
+ };
+
+ if ($attr =~ /\A__CALLER__::/) {
+ no strict 'refs';
+ my $add_import = caller;
+ my $next = defined &{ $add_import . '::import' } && \&{ $add_import . '::import' };
+ *{ $add_import . '::import' } = sub {
+ my $caller = caller;
+ my $full_attr = $attr;
+ $full_attr =~ s/__CALLER__/$caller/;
+ eval qq{ sub $full_attr $code 1; }
+ or die "Internal error: $@";
+
+ goto &$next
+ if $next;
+ my $uni = defined &UNIVERSAL::import && \&UNIVERSAL::import;
+ for my $isa (@{ $add_import . '::ISA' }) {
+ if (my $import = $isa->can('import')) {
+ goto &$import
+ if $import != $uni;
+ }
+ }
+ goto &$uni
+ if $uni;
+ };
+ }
+ else {
+ $attr = caller()."::".$attr unless $attr =~ /::/;
+ eval qq{ sub $attr $code 1; }
+ or die "Internal error: $@";
+ }
+ }
}
else {
croak "Can't understand $_";
@@ -213,7 +241,8 @@ sub _apply_handler_AH_ {
my ($declaration, $phase) = @_;
my ($pkg, $ref, $attr, $data, $raw, $handlerphase, $filename, $linenum) = @$declaration;
return unless $handlerphase->{$phase};
- # print STDERR "Handling $attr on $ref in $phase with [$data]\n";
+ print STDERR "Handling $attr on $ref in $phase with [$data]\n"
+ if $debug;
my $type = ref $ref;
my $handler = "_ATTR_${type}_${attr}";
my $sym = findsym($pkg, $ref);
@@ -221,12 +250,29 @@ sub _apply_handler_AH_ {
no warnings;
if (!$raw && defined($data)) {
if ($data ne '') {
- my $evaled = eval("package $pkg; no warnings; no strict;
- local \$SIG{__WARN__}=sub{die}; [$data]");
- $data = $evaled unless $@;
+ # keeping the minimum amount of code inside the eval string
+ # makes debugging perl internals issues with this logic easier.
+ my $code= "package $pkg; my \$ref= [$data]; \$data= \$ref; 1";
+ print STDERR "Evaling: '$code'\n"
+ if $debug;
+ local $SIG{__WARN__} = sub{ die };
+ no strict;
+ no warnings;
+ # Note in production we do not need to use the return value from
+ # the eval or even consult $@ after the eval - if the evaled code
+ # compiles and runs successfully then it will update $data with
+ # the compiled form, if it fails then $data stays unchanged. The
+ # return value and $@ are only used for debugging purposes.
+ # IOW we could just replace the following with eval($code);
+ eval($code) or do {
+ print STDERR "Eval failed: $@"
+ if $debug;
+ };
}
else { $data = undef }
}
+
+ # now call the handler with the $data decoded (maybe)
$pkg->$handler($sym,
(ref $sym eq 'GLOB' ? *{$sym}{ref $ref}||$ref : $ref),
$attr,
@@ -272,7 +318,7 @@ Attribute::Handlers - Simpler definition of attribute handlers
=head1 VERSION
-This document describes version 1.01 of Attribute::Handlers.
+This document describes version 1.03 of Attribute::Handlers.
=head1 SYNOPSIS
@@ -672,13 +718,13 @@ and need to export their attributes to any module that calls them. To
facilitate this, Attribute::Handlers recognizes a special "pseudo-class" --
C<__CALLER__>, which may be specified as the qualifier of an attribute:
- package Tie::Me::Kangaroo:Down::Sport;
+ package Tie::Me::Kangaroo::Down::Sport;
use Attribute::Handlers autotie =>
{ '__CALLER__::Roo' => __PACKAGE__ };
This causes Attribute::Handlers to define the C<Roo> attribute in the package
-that imports the Tie::Me::Kangaroo:Down::Sport module.
+that imports the Tie::Me::Kangaroo::Down::Sport module.
Note that it is important to quote the __CALLER__::Roo identifier because
a bug in perl 5.8 will refuse to parse it and cause an unknown error.
diff --git a/Master/tlpkg/tlperl/lib/B.pm b/Master/tlpkg/tlperl/lib/B.pm
index ef23af6baa5..d0a04c6a12f 100644
--- a/Master/tlpkg/tlperl/lib/B.pm
+++ b/Master/tlpkg/tlperl/lib/B.pm
@@ -20,7 +20,7 @@ sub import {
# walkoptree comes from B.xs
BEGIN {
- $B::VERSION = '1.82';
+ $B::VERSION = '1.88';
@B::EXPORT_OK = ();
# Our BOOT code needs $VERSION set, and will append to @EXPORT_OK.
@@ -62,6 +62,7 @@ push @B::EXPORT_OK, (qw(minus_c ppname save_BEGINs
@B::CV::ISA = 'B::PVMG';
@B::IO::ISA = 'B::PVMG';
@B::FM::ISA = 'B::CV';
+@B::OBJ::ISA = 'B::PVMG';
@B::OP::ISA = 'B::OBJECT';
@B::UNOP::ISA = 'B::OP';
@@ -88,6 +89,12 @@ our @specialsv_name = qw(Nullsv &PL_sv_undef &PL_sv_yes &PL_sv_no
(SV*)pWARN_ALL (SV*)pWARN_NONE (SV*)pWARN_STD
&PL_sv_zero);
+# Back-compat
+{
+ no warnings 'once';
+ *CVf_METHOD = \&CVf_NOWARN_AMBIGUOUS;
+}
+
{
# Stop "-w" from complaining about the lack of a real B::OBJECT class
package B::OBJECT;
@@ -299,7 +306,7 @@ B - The Perl Compiler Backend
The C<B> module supplies classes which allow a Perl program to delve
into its own innards. It is the module used to implement the
"backends" of the Perl compiler. Usage of the compiler does not
-require knowledge of this module: see the F<O> module for the
+require knowledge of this module: see the L<O> module for the
user-visible part. The C<B> module is of use to those who want to
write new compiler backends. This documentation assumes that the
reader knows a fair amount about perl's internals including such
@@ -593,6 +600,26 @@ C<REFCNT> (corresponding to the C function C<SvREFCNT>).
=item FLAGS
+=item IsBOOL
+
+Returns true if the SV is a boolean (true or false).
+You can then use C<TRUE> to check if the value is true or false.
+
+ my $something = ( 1 == 1 ) # boolean true
+ || ( 1 == 0 ) # boolean false
+ || 42 # IV true
+ || 0; # IV false
+ my $sv = B::svref_2object(\$something);
+
+ say q[Not a boolean value]
+ if ! $sv->IsBOOL;
+
+ say q[This is a boolean with value: true]
+ if $sv->IsBOOL && $sv->TRUE_nomg;
+
+ say q[This is a boolean with value: false]
+ if $sv->IsBOOL && ! $sv->TRUE_nomg;
+
=item object_2svref
Returns a reference to the regular scalar corresponding to this
@@ -601,6 +628,24 @@ to the svref_2object() subroutine. This scalar and other data it points
at should be considered read-only: modifying them is neither safe nor
guaranteed to have a sensible effect.
+=item TRUE
+
+Returns a boolean indicating hether Perl would evaluate the SV as true or
+false.
+
+B<Warning> this call performs 'get' magic. If you only want to check the
+nature of this SV use C<TRUE_nomg> helper.
+
+This is an alias for C<SvTRUE($sv)>.
+
+=item TRUE_nomg
+
+Check if the value is true (do not perform 'get' magic).
+Returns a boolean indicating whether Perl would evaluate the SV as true or
+false.
+
+This is an alias for C<SvTRUE_nomg($sv)>.
+
=back
=head2 B::IV Methods
@@ -1313,6 +1358,8 @@ pointers and B::PADNAME objects otherwise.
=item REFCNT
+=item GEN
+
=item FLAGS
For backward-compatibility, if the PADNAMEt_OUTER flag is set, the FLAGS
@@ -1349,6 +1396,10 @@ Only meaningful if PADNAMEt_OUTER is set.
Only meaningful if PADNAMEt_OUTER is set.
+=item IsUndef
+
+Returns a boolean value to check if the padname is PL_padname_undef.
+
=back
=head2 $B::overlay
diff --git a/Master/tlpkg/tlperl/lib/B/Concise.pm b/Master/tlpkg/tlperl/lib/B/Concise.pm
index 729fcd95f48..73d4045a63c 100644
--- a/Master/tlpkg/tlperl/lib/B/Concise.pm
+++ b/Master/tlpkg/tlperl/lib/B/Concise.pm
@@ -12,10 +12,9 @@ package B::Concise;
use strict; # use #2
use warnings; # uses #3 and #4, since warnings uses Carp
-use Exporter (); # use #5
+use Exporter 'import'; # use #5
-our $VERSION = "1.004";
-our @ISA = qw(Exporter);
+our $VERSION = "1.007";
our @EXPORT_OK = qw( set_style set_style_standard add_callback
concise_subref concise_cv concise_main
add_style walk_output compile reset_sequence );
@@ -853,9 +852,14 @@ sub concise_op {
# targ holds a reference count
my $refs = "ref" . ($h{targ} != 1 ? "s" : "");
$h{targarglife} = $h{targarg} = "$h{targ} $refs";
- } elsif ($h{targ}) {
+ } elsif ($h{targ} && $h{name} ne 'iter') {
+ # for my ($q, $r, $s) () {} syntax hijacks the targ of the iter op,
+ # (which is the ->next of the enteriter) hence the special cases above
+ # and just below:
my $count = $h{name} eq 'padrange'
? ($op->private & $B::Op_private::defines{'OPpPADRANGE_COUNTMASK'})
+ : $h{name} eq 'enteriter'
+ ? $op->next->targ + 1
: 1;
my (@targarg, @targarglife);
for my $i (0..$count-1) {
@@ -1485,6 +1489,11 @@ They're opcode specific, and occur less often than the public ones, so
they're represented by short mnemonics instead of single-chars; see
B::Op_private and F<regen/op_private> for more details.
+Note that a number after a '/' often indicates the number of arguments.
+In the I<sassign> example above, the OP takes 2 arguments. These values
+are sometimes used at runtime: in particular, the MAXARG macro makes use
+of them.
+
=head1 FORMATTING SPECIFICATIONS
For each line-style ('concise', 'terse', 'linenoise', etc.) there are
diff --git a/Master/tlpkg/tlperl/lib/B/Deparse.pm b/Master/tlpkg/tlperl/lib/B/Deparse.pm
index 67147f12ddf..90a36752bd7 100644
--- a/Master/tlpkg/tlperl/lib/B/Deparse.pm
+++ b/Master/tlpkg/tlperl/lib/B/Deparse.pm
@@ -7,13 +7,14 @@
# This is based on the module of the same name by Malcolm Beattie,
# but essentially none of his code remains.
-package B::Deparse;
+package B::Deparse 1.74;
+use strict;
use Carp;
use B qw(class main_root main_start main_cv svref_2object opnumber perlstring
OPf_WANT OPf_WANT_VOID OPf_WANT_SCALAR OPf_WANT_LIST
OPf_KIDS OPf_REF OPf_STACKED OPf_SPECIAL OPf_MOD OPf_PARENS
OPpLVAL_INTRO OPpOUR_INTRO OPpENTERSUB_AMPER OPpSLICE OPpKVSLICE
- OPpCONST_BARE
+ OPpCONST_BARE OPpEMPTYAVHV_IS_HV
OPpTRANS_SQUASH OPpTRANS_DELETE OPpTRANS_COMPLEMENT OPpTARGET_MY
OPpEXISTS_SUB OPpSORT_NUMERIC OPpSORT_INTEGER OPpREPEAT_DOLIST
OPpSORT_REVERSE OPpMULTIDEREF_EXISTS OPpMULTIDEREF_DELETE
@@ -21,13 +22,14 @@ use B qw(class main_root main_start main_cv svref_2object opnumber perlstring
OPpPADHV_ISKEYS OPpRV2HV_ISKEYS
OPpCONCAT_NESTED
OPpMULTICONCAT_APPEND OPpMULTICONCAT_STRINGIFY OPpMULTICONCAT_FAKE
- OPpTRUEBOOL OPpINDEX_BOOLNEG
- SVf_IOK SVf_NOK SVf_ROK SVf_POK SVpad_OUR SVf_FAKE SVs_RMG SVs_SMG
- SVs_PADTMP SVpad_TYPED
- CVf_METHOD CVf_LVALUE
+ OPpTRUEBOOL OPpINDEX_BOOLNEG OPpDEFER_FINALLY
+ OPpARG_IF_UNDEF OPpARG_IF_FALSE
+ SVf_IOK SVf_NOK SVf_ROK SVf_POK SVf_FAKE SVs_RMG SVs_SMG
+ SVs_PADTMP
+ CVf_NOWARN_AMBIGUOUS CVf_LVALUE
PMf_KEEP PMf_GLOBAL PMf_CONTINUE PMf_EVAL PMf_ONCE
PMf_MULTILINE PMf_SINGLELINE PMf_FOLD PMf_EXTENDED PMf_EXTENDED_MORE
- PADNAMEt_OUTER
+ PADNAMEf_OUTER PADNAMEf_OUR PADNAMEf_TYPED
MDEREF_reload
MDEREF_AV_pop_rv2av_aelem
MDEREF_AV_gvsv_vivify_rv2av_aelem
@@ -52,8 +54,6 @@ use B qw(class main_root main_start main_cv svref_2object opnumber perlstring
MDEREF_SHIFT
);
-$VERSION = '1.56';
-use strict;
our $AUTOLOAD;
use warnings ();
require feature;
@@ -272,7 +272,8 @@ BEGIN {
BEGIN { for (qw[ const stringify rv2sv list glob pushmark null aelem
kvaslice kvhslice padsv argcheck
- nextstate dbstate rv2av rv2hv helem custom ]) {
+ nextstate dbstate rv2av rv2hv helem pushdefer leavetrycatch
+ custom ]) {
eval "sub OP_\U$_ () { " . opnumber($_) . "}"
}}
@@ -447,14 +448,32 @@ sub next_todo {
# emit the sub.
my @text;
my $flags = $name->FLAGS;
- push @text,
+ my $category =
!$cv || $seq <= $name->COP_SEQ_RANGE_LOW
- ? $self->keyword($flags & SVpad_OUR
+ ? $self->keyword($flags & PADNAMEf_OUR
? "our"
: $flags & SVpad_STATE
? "state"
: "my") . " "
: "";
+
+ # Skip lexical 'state' subs imported from the builtin::
+ # package, since they are created automatically by
+ # use builtin "foo"
+ if ($cv && $category =~ /\bstate\b/) {
+ my $globname;
+ my $gv = $cv->GV;
+ if (
+ $gv
+ && defined (($globname = $gv->object_2svref))
+ && $$globname =~ /^\*builtin::/
+ ) {
+ return '';
+ }
+ }
+
+ push @text, $category;
+
# XXX We would do $self->keyword("sub"), but ‘my CORE::sub’
# doesn’t work and ‘my sub’ ignores a &sub in scope. I.e.,
# we have a core bug here.
@@ -822,16 +841,6 @@ sub new {
return $self;
}
-{
- # Mask out the bits that L<warnings::register> uses
- my $WARN_MASK;
- BEGIN {
- $WARN_MASK = $warnings::Bits{all} | $warnings::DeadBits{all};
- }
- sub WARN_MASK () {
- return $WARN_MASK;
- }
-}
# Initialise the contextual information, either from
# defaults provided with the ambient_pragmas method,
@@ -839,9 +848,7 @@ sub new {
sub init {
my $self = shift;
- $self->{'warnings'} = defined ($self->{'ambient_warnings'})
- ? $self->{'ambient_warnings'} & WARN_MASK
- : undef;
+ $self->{'warnings'} = $self->{'ambient_warnings'};
$self->{'hints'} = $self->{'ambient_hints'};
$self->{'hinthash'} = $self->{'ambient_hinthash'};
@@ -1114,8 +1121,8 @@ sub pad_subs {
if (defined $name && $name =~ /^&./) {
my $low = $_->COP_SEQ_RANGE_LOW;
my $flags = $_->FLAGS;
- my $outer = $flags & PADNAMEt_OUTER;
- if ($flags & SVpad_OUR) {
+ my $outer = $flags & PADNAMEf_OUTER;
+ if ($flags & PADNAMEf_OUR) {
push @todo, [$low, undef, 0, $_]
# [seq, no cv, not format, padname]
unless $outer;
@@ -1128,7 +1135,7 @@ sub pad_subs {
my $flags = $flags;
my $cv = $cv;
my $name = $_;
- while ($flags & PADNAMEt_OUTER && class ($protocv) ne 'CV')
+ while ($flags & PADNAMEf_OUTER && class ($protocv) ne 'CV')
{
$cv = $cv->OUTSIDE;
next PADENTRY if class($cv) eq 'SPECIAL'; # XXX freed?
@@ -1145,7 +1152,7 @@ sub pad_subs {
my $other = $protocv->PADLIST;
$$other && $other->outid == $padlist->id;
};
- if ($flags & PADNAMEt_OUTER) {
+ if ($flags & PADNAMEf_OUTER) {
next unless $defined_in_this_sub;
push @todo, [$protocv->OUTSIDE_SEQ, $protocv, 0, $_];
next;
@@ -1255,7 +1262,10 @@ sub deparse_argops {
return unless $$kid and $kid->name eq 'argdefelem';
my $def = $self->deparse($kid->first, 7);
$def = "($def)" if $kid->first->flags & OPf_PARENS;
- $var .= " = $def";
+ my $assign = "=";
+ $assign = "//=" if $kid->private & OPpARG_IF_UNDEF;
+ $assign = "||=" if $kid->private & OPpARG_IF_FALSE;
+ $var .= " $assign $def";
}
push @sig, $var;
}
@@ -1306,7 +1316,7 @@ Carp::confess("NULL in deparse_sub") if !defined($cv) || $cv->isa("B::NULL");
Carp::confess("SPECIAL in deparse_sub") if $cv->isa("B::SPECIAL");
local $self->{'curcop'} = $self->{'curcop'};
- my $has_sig = $self->{hinthash}{feature_signatures};
+ my $has_sig = $self->feature_enabled('signatures');
if ($cv->FLAGS & SVf_POK) {
my $myproto = $cv->PV;
if ($has_sig) {
@@ -1316,9 +1326,9 @@ Carp::confess("SPECIAL in deparse_sub") if $cv->isa("B::SPECIAL");
$proto = $myproto;
}
}
- if ($cv->CvFLAGS & (CVf_METHOD|CVf_LOCKED|CVf_LVALUE|CVf_ANONCONST)) {
+ if ($cv->CvFLAGS & (CVf_NOWARN_AMBIGUOUS|CVf_LOCKED|CVf_LVALUE|CVf_ANONCONST)) {
push @attrs, "lvalue" if $cv->CvFLAGS & CVf_LVALUE;
- push @attrs, "method" if $cv->CvFLAGS & CVf_METHOD;
+ push @attrs, "method" if $cv->CvFLAGS & CVf_NOWARN_AMBIGUOUS;
push @attrs, "const" if $cv->CvFLAGS & CVf_ANONCONST;
}
@@ -1544,7 +1554,7 @@ sub maybe_parens_func {
if ($prec <= $cx or substr($text, 0, 1) eq "(" or $self->{'parens'}) {
return "$func($text)";
} else {
- return "$func $text";
+ return $func . (length($text) ? " $text" : "");
}
}
@@ -1554,7 +1564,7 @@ sub find_our_type {
my $seq = $self->{'curcop'} ? $self->{'curcop'}->cop_seq : 0;
for my $a (@{$self->{'curcvlex'}{"o$name"}}) {
my ($st, undef, $padname) = @$a;
- if ($st >= $seq && $padname->FLAGS & SVpad_TYPED) {
+ if ($st >= $seq && $padname->FLAGS & PADNAMEf_TYPED) {
return $padname->SvSTASH->NAME;
}
}
@@ -1640,7 +1650,7 @@ sub maybe_my {
# because enteriter ops do not carry the flag.
my $my =
$self->keyword($padname->FLAGS & SVpad_STATE ? "state" : "my");
- if ($padname->FLAGS & SVpad_TYPED) {
+ if ($padname->FLAGS & PADNAMEf_TYPED) {
$my .= ' ' . $padname->SvSTASH->NAME;
}
if ($need_parens) {
@@ -1732,6 +1742,12 @@ sub scopeop {
$body = $self->deparse($body, 1);
return "$body $name $cond";
}
+ elsif($kid->type == OP_PUSHDEFER &&
+ $kid->private & OPpDEFER_FINALLY &&
+ $kid->sibling->type == OP_LEAVETRYCATCH &&
+ null($kid->sibling->sibling)) {
+ return $self->pp_leavetrycatch_with_finally($kid->sibling, $kid, $cx);
+ }
} else {
$kid = $op->first;
}
@@ -1974,7 +1990,7 @@ sub populate_curcvlex {
: ($ns[$i]->COP_SEQ_RANGE_LOW, $ns[$i]->COP_SEQ_RANGE_HIGH);
push @{$self->{'curcvlex'}{
- ($ns[$i]->FLAGS & SVpad_OUR ? 'o' : 'm') . $name
+ ($ns[$i]->FLAGS & PADNAMEf_OUR ? 'o' : 'm') . $name
}}, [$seq_st, $seq_en, $ns[$i]];
}
}
@@ -2075,7 +2091,7 @@ sub pragmata {
my $warnings = $op->warnings;
my $warning_bits;
if ($warnings->isa("B::SPECIAL") && $$warnings == 4) {
- $warning_bits = $warnings::Bits{"all"} & WARN_MASK;
+ $warning_bits = $warnings::Bits{"all"};
}
elsif ($warnings->isa("B::SPECIAL") && $$warnings == 5) {
$warning_bits = $warnings::NONE;
@@ -2084,14 +2100,24 @@ sub pragmata {
$warning_bits = undef;
}
else {
- $warning_bits = $warnings->PV & WARN_MASK;
+ $warning_bits = $warnings->PV;
}
- if (defined ($warning_bits) and
- !defined($self->{warnings}) || $self->{'warnings'} ne $warning_bits) {
- push @text,
- $self->declare_warnings($self->{'warnings'}, $warning_bits);
- $self->{'warnings'} = $warning_bits;
+ my ($w1, $w2);
+ # The number of valid bit positions may have grown (by a byte or
+ # more) since the last warnings state, by custom warnings
+ # categories being registered in the meantime. Normalise the
+ # bitmasks first so they may be fairly compared.
+ $w1 = defined($self->{warnings})
+ ? warnings::_expand_bits($self->{warnings})
+ : undef;
+ $w2 = defined($warning_bits)
+ ? warnings::_expand_bits($warning_bits)
+ : undef;
+
+ if (defined($w2) and !defined($w1) || $w1 ne $w2) {
+ push @text, $self->declare_warnings($w1, $w2);
+ $self->{'warnings'} = $w2;
}
my $hints = $op->hints;
@@ -2176,13 +2202,13 @@ sub pp_nextstate {
sub declare_warnings {
my ($self, $from, $to) = @_;
$from //= '';
- my $all = (warnings::bits("all") & WARN_MASK);
- unless ((($from & WARN_MASK) & ~$all) =~ /[^\0]/) {
+ my $all = warnings::bits("all");
+ unless (($from & ~$all) =~ /[^\0]/) {
# no FATAL bits need turning off
- if ( ($to & WARN_MASK) eq $all) {
+ if ( $to eq $all) {
return $self->keyword("use") . " warnings;\n";
}
- elsif (($to & WARN_MASK) eq ("\0"x length($to) & WARN_MASK)) {
+ elsif ($to eq ("\0"x length($to))) {
return $self->keyword("no") . " warnings;\n";
}
}
@@ -2306,6 +2332,9 @@ my %feature_keywords = (
fc => 'fc',
try => 'try',
catch => 'try',
+ finally => 'try',
+ defer => 'defer',
+ signatures => 'signatures',
);
# keywords that are strong and also have a prototype
@@ -2489,7 +2518,21 @@ sub pp_chomp { maybe_targmy(@_, \&unop, "chomp") }
sub pp_schop { maybe_targmy(@_, \&unop, "chop") }
sub pp_schomp { maybe_targmy(@_, \&unop, "chomp") }
sub pp_defined { unop(@_, "defined") }
-sub pp_undef { unop(@_, "undef") }
+sub pp_undef {
+ if ($_[1]->private & OPpTARGET_MY) {
+ my $targ = $_[1]->targ;
+ my $var = $_[0]->maybe_my($_[1], $_[2], $_[0]->padname($targ),
+ $_[0]->padname_sv($targ),
+ 1);
+ my $func = unop(@_, "undef");
+ if ($func =~ /\s/) {
+ return unop(@_, "undef").$var;
+ } else {
+ return "$var = undef";
+ }
+ }
+ unop(@_, "undef")
+}
sub pp_study { unop(@_, "study") }
sub pp_ref { unop(@_, "ref") }
sub pp_pos { maybe_local(@_, unop(@_, "pos")) }
@@ -2747,19 +2790,40 @@ sub pp_anonlist {
*pp_anonhash = \&pp_anonlist;
+sub pp_emptyavhv {
+ my $self = shift;
+ my ($op, $cx, $forbid_parens) = @_;
+ my $val = ($op->private & OPpEMPTYAVHV_IS_HV) ? '{}' : '[]';
+ if ($op->private & OPpTARGET_MY) {
+ my $targ = $op->targ;
+ my $var = $self->maybe_my($op, $cx, $self->padname($targ),
+ $self->padname_sv($targ),
+ $forbid_parens);
+ return $self->maybe_parens("$var = $val", $cx, 7);
+ } else {
+ return $val;
+ }
+}
+
sub pp_refgen {
my $self = shift;
my($op, $cx) = @_;
my $kid = $op->first;
if ($kid->name eq "null") {
my $anoncode = $kid = $kid->first;
+
+ # Perl no longer generates this, but XS modules might:
if ($anoncode->name eq "anonconst") {
$anoncode = $anoncode->first->first->sibling;
}
+
+ # Same as with `anonconst`:
if ($anoncode->name eq "anoncode"
or !null($anoncode = $kid->sibling) and
$anoncode->name eq "anoncode") {
return $self->e_anoncode({ code => $self->padval($anoncode->targ) });
+
+ # Perl still generates this:
} elsif ($kid->name eq "pushmark") {
my $sib_name = $kid->sibling->name;
if ($sib_name eq 'entersub') {
@@ -2781,6 +2845,18 @@ sub e_anoncode {
return $self->keyword("sub") . " $text";
}
+sub pp_anoncode {
+ my ($self, $anoncode) = @_;
+
+ return $self->e_anoncode( { code => $self->padval($anoncode->targ) } );
+}
+
+sub pp_anonconst {
+ my ($self, $anonconst) = @_;
+
+ return $self->pp_anoncode( $anonconst->first->first->sibling );
+}
+
sub pp_srefgen { pp_refgen(@_) }
sub pp_readline {
@@ -3068,6 +3144,18 @@ sub pp_isa { binop(@_, "isa", 15) }
sub pp_sassign { binop(@_, "=", 7, SWAP_CHILDREN) }
sub pp_aassign { binop(@_, "=", 7, SWAP_CHILDREN | LIST_CONTEXT) }
+sub pp_padsv_store {
+ my $self = shift;
+ my ($op, $cx, $forbid_parens, @args) = @_;
+ my $targ = $op->targ;
+ my $var = $self->maybe_my($op, $cx, $self->padname($targ),
+ $self->padname_sv($targ),
+ $forbid_parens);
+
+ my $val = $self->deparse($op->first, 7);
+ return $self->maybe_parens("$var = $val", $cx, 7);
+}
+
sub pp_smartmatch {
my ($self, $op, $cx) = @_;
if (($op->flags & OPf_SPECIAL) && $self->{expand} < 2) {
@@ -3669,7 +3757,7 @@ sub maybe_var_attr {
return unless $loppriv & OPpLVAL_INTRO;
my $padname = $self->padname_sv($lop->targ);
- my $thisclass = ($padname->FLAGS & SVpad_TYPED)
+ my $thisclass = ($padname->FLAGS & PADNAMEf_TYPED)
? $padname->SvSTASH->NAME : 'main';
# all pad vars must be in the same class
@@ -3788,9 +3876,12 @@ sub pp_list {
$local = "my";
}
my $padname = $self->padname_sv($lop->targ);
- if ($padname->FLAGS & SVpad_TYPED) {
+ if ($padname->FLAGS & PADNAMEf_TYPED) {
$newtype = $padname->SvSTASH->NAME;
}
+ } elsif ($lopname eq 'padsv_store') {
+ # don't interpret as my (list) if it has an implicit assign
+ $local = "";
} elsif ($lopname =~ /^(?:gv|rv2)([ash])v$/
&& $loppriv & OPpOUR_INTRO
or $lopname eq "null" && class($lop) eq 'UNOP'
@@ -3953,7 +4044,21 @@ sub loop_common {
} else {
$ary = $self->deparse($ary, 1);
}
- if (null $var) {
+
+ if ($enter->flags & OPf_PARENS) {
+ # for my ($x, $y, ...) ...
+ # for my ($foo, $bar) () stores the count (less 1) in the targ of
+ # the ITER op. For the degenerate case of 1 var ($x), the
+ # TARG is zero, so it works anyway
+ my $iter_targ = $kid->first->first->targ;
+ my @vars;
+ my $targ = $enter->targ;
+ while ($iter_targ-- >= 0) {
+ push @vars, $self->padname_sv($targ)->PVX;
+ ++$targ;
+ }
+ $var = 'my (' . join(', ', @vars) . ')';
+ } elsif (null $var) {
$var = $self->pp_padsv($enter, 1, 1);
} elsif ($var->name eq "rv2gv") {
$var = $self->pp_rv2sv($var, 1);
@@ -4057,9 +4162,9 @@ sub pp_leavetry {
return "eval {\n\t" . $self->pp_leave(@_) . "\n\b}";
}
-sub pp_leavetrycatch {
+sub pp_leavetrycatch_with_finally {
my $self = shift;
- my ($op) = @_;
+ my ($op, $finallyop) = @_;
# Expect that the first three kids should be (entertrycatch, poptry, catch)
my $entertrycatch = $op->first;
@@ -4072,14 +4177,30 @@ sub pp_leavetrycatch {
$catch->name eq "catch" or die "Expected catch as third child of leavetrycatch";
my $catchblock = $catch->first->sibling;
- $catchblock->name eq "scope" or die "Expected scope as second child of catch";
+ my $name = $catchblock->name;
+ unless ($name eq "scope" || $name eq "leave") {
+ die "Expected scope or leave as second child of catch, got $name instead";
+ }
my $trycode = scopeop(0, $self, $tryblock);
my $catchvar = $self->padname($catch->targ);
- my $catchcode = scopeop(0, $self, $catchblock);
+ my $catchcode = $name eq 'scope' ? scopeop(0, $self, $catchblock)
+ : scopeop(1, $self, $catchblock);
+
+ my $finallycode = "";
+ if($finallyop) {
+ my $body = $self->deparse($finallyop->first->first);
+ $finallycode = "\nfinally {\n\t$body\n\b}";
+ }
return "try {\n\t$trycode\n\b}\n" .
- "catch($catchvar) {\n\t$catchcode\n\b}\cK";
+ "catch($catchvar) {\n\t$catchcode\n\b}$finallycode\cK";
+}
+
+sub pp_leavetrycatch {
+ my $self = shift;
+ my ($op, @args) = @_;
+ return $self->pp_leavetrycatch_with_finally($op, undef, @args);
}
sub _op_is_or_was {
@@ -4225,6 +4346,17 @@ sub pp_gv {
return $self->maybe_qualify("", $self->gv_name($gv));
}
+sub pp_aelemfastlex_store {
+ my $self = shift;
+ my($op, $cx) = @_;
+ my $name = $self->padname($op->targ);
+ $name =~ s/^@/\$/;
+ my $i = $op->private;
+ $i -= 256 if $i > 127;
+ my $val = $self->deparse($op->first, 7);
+ return $self->maybe_parens("${name}[$i] = $val", $cx, 7);
+}
+
sub pp_aelemfast_lex {
my $self = shift;
my($op, $cx) = @_;
@@ -4922,78 +5054,92 @@ sub e_method {
sub check_proto {
my $self = shift;
return "&" if $self->{'noproto'};
- my($proto, @args) = @_;
- my($arg, $real);
+ my ($proto, @args) = @_;
my $doneok = 0;
my @reals;
- # An unbackslashed @ or % gobbles up the rest of the args
- 1 while $proto =~ s/(?<!\\)([@%])[^\]]+$/$1/;
- $proto =~ s/^\s*//;
- while ($proto) {
- $proto =~ s/^(\\?[\$\@&%*_]|\\\[[\$\@&%*]+\]|;|)\s*//;
+ $proto =~ s/^\s+//;
+ while (length $proto) {
+ $proto =~ s/^(\\?[\$\@&%*]|\\\[[\$\@&%*]+\]|[_+;])\s*//
+ or return "&"; # malformed prototype
my $chr = $1;
- if ($chr eq "") {
- return "&" if @args;
- } elsif ($chr eq ";") {
+ if ($chr eq ";") {
$doneok = 1;
- } elsif ($chr eq "@" or $chr eq "%") {
+ } elsif ($chr eq '@' or $chr eq '%') {
+ # An unbackslashed @ or % gobbles up the rest of the args
push @reals, map($self->deparse($_, 6), @args);
@args = ();
+ $proto = '';
+ } elsif (!@args) {
+ last if $doneok;
+ return "&"; # too few args and no ';'
} else {
- $arg = shift @args;
- last unless $arg;
- if ($chr eq "\$" || $chr eq "_") {
+ my $arg = shift @args;
+ if ($chr eq '$' || $chr eq '_') {
if (want_scalar $arg) {
push @reals, $self->deparse($arg, 6);
} else {
return "&";
}
} elsif ($chr eq "&") {
- if ($arg->name =~ /^(s?refgen|undef)$/) {
+ if ($arg->name =~ /^(?:s?refgen|undef)\z/) {
push @reals, $self->deparse($arg, 6);
} else {
return "&";
}
} elsif ($chr eq "*") {
- if ($arg->name =~ /^s?refgen$/
+ if ($arg->name =~ /^s?refgen\z/
and $arg->first->first->name eq "rv2gv")
- {
- $real = $arg->first->first; # skip refgen, null
- if ($real->first->name eq "gv") {
- push @reals, $self->deparse($real, 6);
- } else {
- push @reals, $self->deparse($real->first, 6);
- }
- } else {
- return "&";
- }
+ {
+ my $real = $arg->first->first; # skip refgen, null
+ if ($real->first->name eq "gv") {
+ push @reals, $self->deparse($real, 6);
+ } else {
+ push @reals, $self->deparse($real->first, 6);
+ }
+ } else {
+ return "&";
+ }
+ } elsif ($chr eq "+") {
+ my $real;
+ if ($arg->name =~ /^s?refgen\z/ and
+ !null($real = $arg->first) and
+ !null($real->first) and
+ $real->first->name =~ /^(?:rv2|pad)[ah]v\z/)
+ {
+ push @reals, $self->deparse($real, 6);
+ } elsif (want_scalar $arg) {
+ push @reals, $self->deparse($arg, 6);
+ } else {
+ return "&";
+ }
} elsif (substr($chr, 0, 1) eq "\\") {
$chr =~ tr/\\[]//d;
- if ($arg->name =~ /^s?refgen$/ and
+ my $real;
+ if ($arg->name =~ /^s?refgen\z/ and
!null($real = $arg->first) and
($chr =~ /\$/ && is_scalar($real->first)
or ($chr =~ /@/
- && class($real->first->sibling) ne 'NULL'
- && $real->first->sibling->name
- =~ /^(rv2|pad)av$/)
+ && !null($real->first)
+ && $real->first->name =~ /^(?:rv2|pad)av\z/)
or ($chr =~ /%/
- && class($real->first->sibling) ne 'NULL'
- && $real->first->sibling->name
- =~ /^(rv2|pad)hv$/)
+ && !null($real->first)
+ && $real->first->name =~ /^(?:rv2|pad)hv\z/)
#or ($chr =~ /&/ # This doesn't work
# && $real->first->name eq "rv2cv")
or ($chr =~ /\*/
&& $real->first->name eq "rv2gv")))
- {
- push @reals, $self->deparse($real, 6);
- } else {
- return "&";
- }
- }
- }
+ {
+ push @reals, $self->deparse($real, 6);
+ } else {
+ return "&";
+ }
+ } else {
+ # should not happen
+ return "&";
+ }
+ }
}
- return "&" if $proto and !$doneok; # too few args and no ';'
- return "&" if @args; # too many args
+ return "&" if @args; # too many args
return ("", join ", ", @reals);
}
@@ -5038,7 +5184,7 @@ sub retscalar {
|msgrcv|semop|semget|semctl|hintseval|shostent|snetent
|sprotoent|sservent|ehostent|enetent|eprotoent|eservent
|spwent|epwent|sgrent|egrent|getlogin|syscall|lock|runcv
- |fc)\z/x
+ |fc|padsv_store)\z/x
}
sub pp_entersub {
@@ -5049,9 +5195,7 @@ sub pp_entersub {
my $prefix = "";
my $amper = "";
my($kid, @exprs);
- if ($op->flags & OPf_SPECIAL && !($op->flags & OPf_MOD)) {
- $prefix = "do ";
- } elsif ($op->private & OPpENTERSUB_AMPER) {
+ if ($op->private & OPpENTERSUB_AMPER) {
$amper = "&";
}
$kid = $op->first;
@@ -5175,19 +5319,23 @@ sub pp_entersub {
# it back.
$kid =~ s/^CORE::GLOBAL:://;
- my $dproto = defined($proto) ? $proto : "undefined";
- my $scalar_proto = $dproto =~ /^;*(?:[\$*_+]|\\.|\\\[[^]]\])\z/;
if (!$declared) {
return "$kid(" . $args . ")";
- } elsif ($dproto =~ /^\s*\z/) {
+ }
+
+ my $dproto = defined($proto) ? $proto : "undefined";
+ if ($dproto =~ /^\s*\z/) {
return $kid;
- } elsif ($scalar_proto and is_scalar($exprs[0])) {
+ }
+
+ my $scalar_proto = $dproto =~ /^ \s* (?: ;\s* )* (?: [\$*_+] |\\ \s* (?: [\$\@%&*] | \[ [^\]]+ \] ) ) \s* \z/x;
+ if ($scalar_proto and !@exprs || is_scalar($exprs[0])) {
# is_scalar is an excessively conservative test here:
# really, we should be comparing to the precedence of the
# top operator of $exprs[0] (ala unop()), but that would
# take some major code restructuring to do right.
return $self->maybe_parens_func($kid, $args, $cx, 16);
- } elsif (not $scalar_proto and defined($proto) || $simple) { #'
+ } elsif (not $scalar_proto and defined($proto) || $simple) {
return $self->maybe_parens_func($kid, $args, $cx, 5);
} else {
return "$kid(" . $args . ")";
@@ -5295,7 +5443,7 @@ sub re_unback {
# the insane complexity here is due to the behaviour of "\c\"
$str =~ s/
# these two lines ensure that the backslash we're about to
- # remove isn't preceeded by something which makes it part
+ # remove isn't preceded by something which makes it part
# of a \c
(^ | [^\\] | \\c\\) # $1
@@ -5408,9 +5556,15 @@ sub const {
return $self->const_dumper($sv, $cx);
}
if (class($sv) eq "SPECIAL") {
- # sv_undef, sv_yes, sv_no
- return $$sv == 3 ? $self->maybe_parens("!1", $cx, 21)
- : ('undef', '1')[$$sv-1];
+ # PL_sv_undef etc
+ # return yes/no as boolean expressions rather than integers to
+ # preserve their boolean-ness
+ return
+ $$sv == 1 ? 'undef' : # PL_sv_undef
+ $$sv == 2 ? $self->maybe_parens("!0", $cx, 21) : # PL_sv_yes
+ $$sv == 3 ? $self->maybe_parens("!1", $cx, 21) : # PL_sv_no
+ $$sv == 7 ? '0' : # PL_sv_zero
+ '"???"';
}
if (class($sv) eq "NULL") {
return 'undef';
@@ -5431,10 +5585,10 @@ sub const {
if ($nv == 0) {
if (pack("F", $nv) eq pack("F", 0)) {
# positive zero
- return "0";
+ return "0.0";
} else {
# negative zero
- return $self->maybe_parens("-.0", $cx, 21);
+ return $self->maybe_parens("-0.0", $cx, 21);
}
} elsif (1/$nv == 0) {
if ($nv > 0) {
@@ -5471,6 +5625,10 @@ sub const {
return $self->maybe_parens("$mant * 2**$exp", $cx, 19);
}
}
+
+ # preserve NV-ness: output as NNN.0 rather than NNN
+ $str .= ".0" if $str =~ /^-?[0-9]+$/;
+
$str = $self->maybe_parens($str, $cx, 21) if $nv < 0;
return $str;
} elsif ($sv->FLAGS & SVf_ROK && $sv->can("RV")) {
@@ -6252,9 +6410,7 @@ sub matchop {
->sibling # entersub
->first # ex-list
->first # pushmark
- ->sibling # srefgen
- ->first # ex-list
- ->first # anoncode
+ ->sibling # anoncode
->targ
)
: undef);
@@ -6578,6 +6734,34 @@ sub pp_argdefelem {
}
+sub pp_pushdefer {
+ my $self = shift;
+ my($op, $cx) = @_;
+ # defer block body is stored in the ->first of an OP_NULL that is
+ # ->first of OP_PUSHDEFER
+ my $body = $self->deparse($op->first->first);
+ return "defer {\n\t$body\n\b}\cK";
+}
+
+sub builtin1 {
+ my $self = shift;
+ my ($op, $cx, $name) = @_;
+ my $arg = $self->deparse($op->first);
+ # TODO: work out if lexical alias is present somehow...
+ return "builtin::$name($arg)";
+}
+
+sub pp_is_bool { builtin1(@_, "is_bool"); }
+sub pp_is_weak { builtin1(@_, "is_weak"); }
+sub pp_weaken { builtin1(@_, "weaken"); }
+sub pp_unweaken { builtin1(@_, "unweaken"); }
+sub pp_blessed { builtin1(@_, "blessed"); }
+sub pp_refaddr { $_[0]->maybe_targmy(@_[1,2], \&builtin1, "refaddr"); }
+sub pp_reftype { $_[0]->maybe_targmy(@_[1,2], \&builtin1, "reftype"); }
+sub pp_ceil { $_[0]->maybe_targmy(@_[1,2], \&builtin1, "ceil"); }
+sub pp_floor { $_[0]->maybe_targmy(@_[1,2], \&builtin1, "floor"); }
+sub pp_is_tainted { builtin1(@_, "is_tainted"); }
+
1;
__END__
diff --git a/Master/tlpkg/tlperl/lib/B/Op_private.pm b/Master/tlpkg/tlperl/lib/B/Op_private.pm
index e4a9ecdc319..634cad2dd91 100644
--- a/Master/tlpkg/tlperl/lib/B/Op_private.pm
+++ b/Master/tlpkg/tlperl/lib/B/Op_private.pm
@@ -1,4 +1,4 @@
-# -*- buffer-read-only: t -*-
+# -*- mode: Perl; buffer-read-only: t -*-
#
# lib/B/Op_private.pm
#
@@ -118,7 +118,7 @@ package B::Op_private;
our %bits;
-our $VERSION = "5.034000";
+our $VERSION = "5.038002";
$bits{$_}{3} = 'OPpENTERSUB_AMPER' for qw(entersub rv2cv);
$bits{$_}{6} = 'OPpENTERSUB_DB' for qw(entersub rv2cv);
@@ -134,22 +134,22 @@ $bits{$_}{6} = 'OPpINDEX_BOOLNEG' for qw(index rindex);
$bits{$_}{1} = 'OPpITER_REVERSED' for qw(enteriter iter);
$bits{$_}{7} = 'OPpLVALUE' for qw(leave leaveloop);
$bits{$_}{6} = 'OPpLVAL_DEFER' for qw(aelem helem multideref);
-$bits{$_}{7} = 'OPpLVAL_INTRO' for qw(aelem aslice cond_expr delete enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multiconcat multideref padav padhv padrange padsv pushmark refassign rv2av rv2gv rv2hv rv2sv split);
+$bits{$_}{7} = 'OPpLVAL_INTRO' for qw(aelem aslice cond_expr delete emptyavhv enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multiconcat multideref padav padhv padrange padsv padsv_store pushmark refassign rv2av rv2gv rv2hv rv2sv split undef);
$bits{$_}{2} = 'OPpLVREF_ELEM' for qw(lvref refassign);
$bits{$_}{3} = 'OPpLVREF_ITER' for qw(lvref refassign);
$bits{$_}{3} = 'OPpMAYBE_LVSUB' for qw(aassign aelem akeys aslice av2arylen avhvswitch helem hslice keys kvaslice kvhslice multideref padav padhv pos rv2av rv2gv rv2hv substr values vec);
-$bits{$_}{4} = 'OPpMAYBE_TRUEBOOL' for qw(padhv ref rv2hv);
+$bits{$_}{4} = 'OPpMAYBE_TRUEBOOL' for qw(blessed padhv ref rv2hv);
$bits{$_}{7} = 'OPpOFFBYONE' for qw(caller runcv wantarray);
$bits{$_}{5} = 'OPpOPEN_IN_CRLF' for qw(backtick open);
$bits{$_}{4} = 'OPpOPEN_IN_RAW' for qw(backtick open);
$bits{$_}{7} = 'OPpOPEN_OUT_CRLF' for qw(backtick open);
$bits{$_}{6} = 'OPpOPEN_OUT_RAW' for qw(backtick open);
$bits{$_}{6} = 'OPpOUR_INTRO' for qw(enteriter gvsv rv2av rv2hv rv2sv split);
-$bits{$_}{6} = 'OPpPAD_STATE' for qw(lvavref lvref padav padhv padsv pushmark refassign);
+$bits{$_}{6} = 'OPpPAD_STATE' for qw(emptyavhv lvavref lvref padav padhv padsv padsv_store pushmark refassign undef);
$bits{$_}{7} = 'OPpPV_IS_UTF8' for qw(dump goto last next redo);
$bits{$_}{6} = 'OPpREFCOUNTED' for qw(leave leaveeval leavesub leavesublv leavewrite);
$bits{$_}{2} = 'OPpSLICEWARNING' for qw(aslice hslice padav padhv rv2av rv2hv);
-$bits{$_}{4} = 'OPpTARGET_MY' for qw(abs add atan2 chdir chmod chomp chown chr chroot concat cos crypt divide exec exp flock getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time unlink unshift utime wait waitpid);
+$bits{$_}{4} = 'OPpTARGET_MY' for qw(abs add atan2 ceil chdir chmod chomp chown chr chroot concat cos crypt divide emptyavhv exec exp flock floor getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand refaddr reftype rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time undef unlink unshift utime wait waitpid);
$bits{$_}{0} = 'OPpTRANS_CAN_FORCE_UTF8' for qw(trans transr);
$bits{$_}{5} = 'OPpTRANS_COMPLEMENT' for qw(trans transr);
$bits{$_}{7} = 'OPpTRANS_DELETE' for qw(trans transr);
@@ -157,7 +157,8 @@ $bits{$_}{6} = 'OPpTRANS_GROWS' for qw(trans transr);
$bits{$_}{2} = 'OPpTRANS_IDENTICAL' for qw(trans transr);
$bits{$_}{3} = 'OPpTRANS_SQUASH' for qw(trans transr);
$bits{$_}{1} = 'OPpTRANS_USE_SVOP' for qw(trans transr);
-$bits{$_}{5} = 'OPpTRUEBOOL' for qw(grepwhile index length padav padhv pos ref rindex rv2av rv2hv subst);
+$bits{$_}{5} = 'OPpTRUEBOOL' for qw(blessed grepwhile index length padav padhv pos ref rindex rv2av rv2hv subst);
+$bits{$_}{2} = 'OPpUSEINT' for qw(bit_and bit_or bit_xor complement left_shift nbit_and nbit_or nbit_xor ncomplement right_shift sbit_and sbit_or sbit_xor);
my @bf = (
{
@@ -253,6 +254,7 @@ $bits{aeach}{0} = $bf[0];
@{$bits{aelem}}{5,4,1,0} = ($bf[8], $bf[8], $bf[1], $bf[1]);
@{$bits{aelemfast}}{7,6,5,4,3,2,1,0} = ($bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6]);
@{$bits{aelemfast_lex}}{7,6,5,4,3,2,1,0} = ($bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6]);
+@{$bits{aelemfastlex_store}}{7,6,5,4,3,2,1,0} = ($bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6], $bf[6]);
$bits{akeys}{0} = $bf[0];
$bits{alarm}{0} = $bf[0];
$bits{and}{0} = $bf[0];
@@ -261,7 +263,7 @@ $bits{anonconst}{0} = $bf[0];
@{$bits{anonhash}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@{$bits{anonlist}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{argcheck}{0} = $bf[0];
-$bits{argdefelem}{0} = $bf[0];
+@{$bits{argdefelem}}{7,6,0} = ('OPpARG_IF_UNDEF', 'OPpARG_IF_FALSE', $bf[0]);
@{$bits{argelem}}{2,1,0} = ($bf[7], $bf[7], $bf[0]);
@{$bits{atan2}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{av2arylen}{0} = $bf[0];
@@ -270,12 +272,11 @@ $bits{avalues}{0} = $bf[0];
$bits{backtick}{0} = $bf[0];
@{$bits{bind}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@{$bits{binmode}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
-@{$bits{bit_and}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{bit_or}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{bit_xor}}{1,0} = ($bf[1], $bf[1]);
@{$bits{bless}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+$bits{blessed}{0} = $bf[0];
@{$bits{caller}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{catch}{0} = $bf[0];
+$bits{ceil}{0} = $bf[0];
@{$bits{chdir}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@{$bits{chmod}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{chomp}{0} = $bf[0];
@@ -287,7 +288,6 @@ $bits{chroot}{0} = $bf[0];
$bits{closedir}{0} = $bf[0];
$bits{cmpchain_and}{0} = $bf[0];
$bits{cmpchain_dup}{0} = $bf[0];
-$bits{complement}{0} = $bf[0];
@{$bits{concat}}{6,1,0} = ('OPpCONCAT_NESTED', $bf[1], $bf[1]);
$bits{cond_expr}{0} = $bf[0];
@{$bits{connect}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@@ -306,7 +306,8 @@ $bits{dor}{0} = $bf[0];
$bits{dorassign}{0} = $bf[0];
$bits{dump}{0} = $bf[0];
$bits{each}{0} = $bf[0];
-@{$bits{entereval}}{5,4,3,2,1,0} = ('OPpEVAL_RE_REPARSING', 'OPpEVAL_COPHH', 'OPpEVAL_BYTES', 'OPpEVAL_UNICODE', 'OPpEVAL_HAS_HH', $bf[0]);
+@{$bits{emptyavhv}}{5,3,2,1,0} = ('OPpEMPTYAVHV_IS_HV', $bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{entereval}}{6,5,4,3,2,1,0} = ('OPpEVAL_EVALSV', 'OPpEVAL_RE_REPARSING', 'OPpEVAL_COPHH', 'OPpEVAL_BYTES', 'OPpEVAL_UNICODE', 'OPpEVAL_HAS_HH', $bf[0]);
$bits{entergiven}{0} = $bf[0];
$bits{enteriter}{3} = 'OPpITER_DEF';
@{$bits{entersub}}{5,4,0} = ($bf[8], $bf[8], 'OPpENTERSUB_INARGS');
@@ -325,6 +326,7 @@ $bits{fc}{0} = $bf[0];
@{$bits{fileno}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{flip}{0} = $bf[0];
@{$bits{flock}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+$bits{floor}{0} = $bf[0];
$bits{flop}{0} = $bf[0];
@{$bits{formline}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{ftatime}{0} = $bf[0];
@@ -382,6 +384,7 @@ $bits{grepwhile}{0} = $bf[0];
@{$bits{gt}}{1,0} = ($bf[1], $bf[1]);
$bits{gv}{5} = 'OPpEARLY_CV';
@{$bits{helem}}{5,4,1,0} = ($bf[8], $bf[8], $bf[1], $bf[1]);
+@{$bits{helemexistsor}}{7,0} = ('OPpHELEMEXISTSOR_DELETE', $bf[0]);
$bits{hex}{0} = $bf[0];
@{$bits{i_add}}{1,0} = ($bf[1], $bf[1]);
@{$bits{i_divide}}{1,0} = ($bf[1], $bf[1]);
@@ -401,8 +404,12 @@ $bits{i_predec}{0} = $bf[0];
$bits{i_preinc}{0} = $bf[0];
@{$bits{i_subtract}}{1,0} = ($bf[1], $bf[1]);
@{$bits{index}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{initfield}}{2,1,0} = ('OPpINITFIELD_HV', 'OPpINITFIELD_AV', $bf[0]);
$bits{int}{0} = $bf[0];
@{$bits{ioctl}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+$bits{is_bool}{0} = $bf[0];
+$bits{is_tainted}{0} = $bf[0];
+$bits{is_weak}{0} = $bf[0];
@{$bits{isa}}{1,0} = ($bf[1], $bf[1]);
@{$bits{join}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{keys}{0} = $bf[0];
@@ -418,7 +425,6 @@ $bits{leavesub}{0} = $bf[0];
$bits{leavesublv}{0} = $bf[0];
$bits{leavewhen}{0} = $bf[0];
$bits{leavewrite}{0} = $bf[0];
-@{$bits{left_shift}}{1,0} = ($bf[1], $bf[1]);
$bits{length}{0} = $bf[0];
@{$bits{link}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{list}{6} = 'OPpLIST_GUESSED';
@@ -438,6 +444,7 @@ $bits{method_named}{0} = $bf[0];
$bits{method_redir}{0} = $bf[0];
$bits{method_redir_super}{0} = $bf[0];
$bits{method_super}{0} = $bf[0];
+@{$bits{methstart}}{7,0} = ('OPpINITFIELDS', $bf[0]);
@{$bits{mkdir}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@{$bits{modulo}}{1,0} = ($bf[1], $bf[1]);
@{$bits{msgctl}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@@ -447,11 +454,7 @@ $bits{method_super}{0} = $bf[0];
@{$bits{multiconcat}}{6,5,3,0} = ('OPpMULTICONCAT_APPEND', 'OPpMULTICONCAT_FAKE', 'OPpMULTICONCAT_STRINGIFY', $bf[0]);
@{$bits{multideref}}{5,4,0} = ('OPpMULTIDEREF_DELETE', 'OPpMULTIDEREF_EXISTS', $bf[0]);
@{$bits{multiply}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{nbit_and}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{nbit_or}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{nbit_xor}}{1,0} = ($bf[1], $bf[1]);
@{$bits{ncmp}}{1,0} = ($bf[1], $bf[1]);
-$bits{ncomplement}{0} = $bf[0];
@{$bits{ne}}{1,0} = ($bf[1], $bf[1]);
$bits{negate}{0} = $bf[0];
$bits{next}{0} = $bf[0];
@@ -467,6 +470,7 @@ $bits{ord}{0} = $bf[0];
$bits{padhv}{0} = 'OPpPADHV_ISKEYS';
@{$bits{padrange}}{6,5,4,3,2,1,0} = ($bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5], $bf[5]);
@{$bits{padsv}}{5,4} = ($bf[8], $bf[8]);
+$bits{padsv_store}{0} = $bf[0];
@{$bits{pipe_op}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{pop}{0} = $bf[0];
$bits{pos}{0} = $bf[0];
@@ -477,6 +481,7 @@ $bits{predec}{0} = $bf[0];
$bits{preinc}{0} = $bf[0];
$bits{prototype}{0} = $bf[0];
@{$bits{push}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+@{$bits{pushdefer}}{7,0} = ('OPpDEFER_FINALLY', $bf[0]);
$bits{quotemeta}{0} = $bf[0];
@{$bits{rand}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{range}{0} = $bf[0];
@@ -487,8 +492,10 @@ $bits{readlink}{0} = $bf[0];
@{$bits{recv}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{redo}{0} = $bf[0];
$bits{ref}{0} = $bf[0];
+$bits{refaddr}{0} = $bf[0];
@{$bits{refassign}}{5,4,1,0} = ($bf[9], $bf[9], $bf[1], $bf[1]);
$bits{refgen}{0} = $bf[0];
+$bits{reftype}{0} = $bf[0];
$bits{regcmaybe}{0} = $bf[0];
$bits{regcomp}{0} = $bf[0];
$bits{regcreset}{0} = $bf[0];
@@ -498,7 +505,6 @@ $bits{require}{0} = $bf[0];
@{$bits{reset}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@{$bits{reverse}}{3,0} = ('OPpREVERSE_INPLACE', $bf[0]);
$bits{rewinddir}{0} = $bf[0];
-@{$bits{right_shift}}{1,0} = ($bf[1], $bf[1]);
@{$bits{rindex}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{rmdir}{0} = $bf[0];
$bits{rv2av}{0} = $bf[0];
@@ -507,9 +513,6 @@ $bits{rv2av}{0} = $bf[0];
$bits{rv2hv}{0} = 'OPpRV2HV_ISKEYS';
@{$bits{rv2sv}}{5,4,0} = ($bf[8], $bf[8], $bf[0]);
@{$bits{sassign}}{7,6,1,0} = ('OPpASSIGN_CV_TO_GV', 'OPpASSIGN_BACKWARDS', $bf[1], $bf[1]);
-@{$bits{sbit_and}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{sbit_or}}{1,0} = ($bf[1], $bf[1]);
-@{$bits{sbit_xor}}{1,0} = ($bf[1], $bf[1]);
$bits{scalar}{0} = $bf[0];
$bits{schomp}{0} = $bf[0];
$bits{schop}{0} = $bf[0];
@@ -543,7 +546,7 @@ $bits{sin}{0} = $bf[0];
$bits{snetent}{0} = $bf[0];
@{$bits{socket}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@{$bits{sockpair}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
-@{$bits{sort}}{7,6,4,3,2,1,0} = ('OPpSORT_UNSTABLE', 'OPpSORT_STABLE', 'OPpSORT_DESCEND', 'OPpSORT_INPLACE', 'OPpSORT_REVERSE', 'OPpSORT_INTEGER', 'OPpSORT_NUMERIC');
+@{$bits{sort}}{4,3,2,1,0} = ('OPpSORT_DESCEND', 'OPpSORT_INPLACE', 'OPpSORT_REVERSE', 'OPpSORT_INTEGER', 'OPpSORT_NUMERIC');
@{$bits{splice}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@{$bits{split}}{4,3,2} = ('OPpSPLIT_ASSIGN', 'OPpSPLIT_LEX', 'OPpSPLIT_IMPLIM');
@{$bits{sprintf}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@@ -575,16 +578,18 @@ $bits{tied}{0} = $bf[0];
$bits{uc}{0} = $bf[0];
$bits{ucfirst}{0} = $bf[0];
@{$bits{umask}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
-$bits{undef}{0} = $bf[0];
+@{$bits{undef}}{5,0} = ('OPpUNDEF_KEEP_PV', $bf[0]);
@{$bits{unlink}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@{$bits{unpack}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@{$bits{unshift}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{untie}{0} = $bf[0];
+$bits{unweaken}{0} = $bf[0];
@{$bits{utime}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
$bits{values}{0} = $bf[0];
@{$bits{vec}}{1,0} = ($bf[1], $bf[1]);
@{$bits{waitpid}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
@{$bits{warn}}{3,2,1,0} = ($bf[4], $bf[4], $bf[4], $bf[4]);
+$bits{weaken}{0} = $bf[0];
@{$bits{xor}}{1,0} = ($bf[1], $bf[1]);
@@ -598,6 +603,8 @@ our %defines = (
OPpARGELEM_HV => 4,
OPpARGELEM_MASK => 6,
OPpARGELEM_SV => 0,
+ OPpARG_IF_FALSE => 64,
+ OPpARG_IF_UNDEF => 128,
OPpASSIGN_BACKWARDS => 64,
OPpASSIGN_COMMON_AGG => 16,
OPpASSIGN_COMMON_RC1 => 32,
@@ -615,12 +622,14 @@ our %defines = (
OPpCOREARGS_DEREF2 => 2,
OPpCOREARGS_PUSHMARK => 128,
OPpCOREARGS_SCALARMOD => 64,
+ OPpDEFER_FINALLY => 128,
OPpDEREF => 48,
OPpDEREF_AV => 16,
OPpDEREF_HV => 32,
OPpDEREF_SV => 48,
OPpDONT_INIT_GV => 4,
OPpEARLY_CV => 32,
+ OPpEMPTYAVHV_IS_HV => 32,
OPpENTERSUB_AMPER => 8,
OPpENTERSUB_DB => 64,
OPpENTERSUB_HASTARG => 4,
@@ -628,6 +637,7 @@ our %defines = (
OPpENTERSUB_NOPAREN => 128,
OPpEVAL_BYTES => 8,
OPpEVAL_COPHH => 16,
+ OPpEVAL_EVALSV => 64,
OPpEVAL_HAS_HH => 2,
OPpEVAL_RE_REPARSING => 32,
OPpEVAL_UNICODE => 4,
@@ -637,9 +647,13 @@ our %defines = (
OPpFT_AFTER_t => 16,
OPpFT_STACKED => 4,
OPpFT_STACKING => 8,
+ OPpHELEMEXISTSOR_DELETE => 128,
OPpHINT_STRICT_REFS => 2,
OPpHUSH_VMSISH => 32,
OPpINDEX_BOOLNEG => 64,
+ OPpINITFIELDS => 128,
+ OPpINITFIELD_AV => 2,
+ OPpINITFIELD_HV => 4,
OPpITER_DEF => 8,
OPpITER_REVERSED => 2,
OPpKVSLICE => 32,
@@ -684,8 +698,6 @@ our %defines = (
OPpSORT_INTEGER => 2,
OPpSORT_NUMERIC => 1,
OPpSORT_REVERSE => 4,
- OPpSORT_STABLE => 64,
- OPpSORT_UNSTABLE => 128,
OPpSPLIT_ASSIGN => 16,
OPpSPLIT_IMPLIM => 4,
OPpSPLIT_LEX => 8,
@@ -699,6 +711,8 @@ our %defines = (
OPpTRANS_SQUASH => 8,
OPpTRANS_USE_SVOP => 2,
OPpTRUEBOOL => 32,
+ OPpUNDEF_KEEP_PV => 32,
+ OPpUSEINT => 4,
);
our %labels = (
@@ -706,6 +720,8 @@ our %labels = (
OPpARGELEM_AV => 'AV',
OPpARGELEM_HV => 'HV',
OPpARGELEM_SV => 'SV',
+ OPpARG_IF_FALSE => 'IF_FALSE',
+ OPpARG_IF_UNDEF => 'IF_UNDEF',
OPpASSIGN_BACKWARDS => 'BKWARD',
OPpASSIGN_COMMON_AGG => 'COM_AGG',
OPpASSIGN_COMMON_RC1 => 'COM_RC1',
@@ -722,11 +738,13 @@ our %labels = (
OPpCOREARGS_DEREF2 => 'DEREF2',
OPpCOREARGS_PUSHMARK => 'MARK',
OPpCOREARGS_SCALARMOD => '$MOD',
+ OPpDEFER_FINALLY => 'FINALLY',
OPpDEREF_AV => 'DREFAV',
OPpDEREF_HV => 'DREFHV',
OPpDEREF_SV => 'DREFSV',
OPpDONT_INIT_GV => 'NOINIT',
OPpEARLY_CV => 'EARLYCV',
+ OPpEMPTYAVHV_IS_HV => 'ANONHASH',
OPpENTERSUB_AMPER => 'AMPER',
OPpENTERSUB_DB => 'DBG',
OPpENTERSUB_HASTARG => 'TARG',
@@ -734,6 +752,7 @@ our %labels = (
OPpENTERSUB_NOPAREN => 'NO()',
OPpEVAL_BYTES => 'BYTES',
OPpEVAL_COPHH => 'COPHH',
+ OPpEVAL_EVALSV => 'EVALSV',
OPpEVAL_HAS_HH => 'HAS_HH',
OPpEVAL_RE_REPARSING => 'REPARSE',
OPpEVAL_UNICODE => 'UNI',
@@ -743,9 +762,13 @@ our %labels = (
OPpFT_AFTER_t => 'FTAFTERt',
OPpFT_STACKED => 'FTSTACKED',
OPpFT_STACKING => 'FTSTACKING',
+ OPpHELEMEXISTSOR_DELETE => 'DELETE',
OPpHINT_STRICT_REFS => 'STRICT',
OPpHUSH_VMSISH => 'HUSH',
OPpINDEX_BOOLNEG => 'NEG',
+ OPpINITFIELDS => 'INITFIELDS',
+ OPpINITFIELD_AV => 'INITFIELD_AV',
+ OPpINITFIELD_HV => 'INITFIELD_HV',
OPpITER_DEF => 'DEF',
OPpITER_REVERSED => 'REVERSED',
OPpKVSLICE => 'KVSLICE',
@@ -787,8 +810,6 @@ our %labels = (
OPpSORT_INTEGER => 'INT',
OPpSORT_NUMERIC => 'NUM',
OPpSORT_REVERSE => 'REV',
- OPpSORT_STABLE => 'STABLE',
- OPpSORT_UNSTABLE => 'UNSTABLE',
OPpSPLIT_ASSIGN => 'ASSIGN',
OPpSPLIT_IMPLIM => 'IMPLIM',
OPpSPLIT_LEX => 'LEX',
@@ -802,17 +823,22 @@ our %labels = (
OPpTRANS_SQUASH => 'SQUASH',
OPpTRANS_USE_SVOP => 'USE_SVOP',
OPpTRUEBOOL => 'BOOL',
+ OPpUNDEF_KEEP_PV => 'KEEP_PV',
+ OPpUSEINT => 'USEINT',
);
our %ops_using = (
OPpALLOW_FAKE => [qw(rv2gv)],
+ OPpARG_IF_FALSE => [qw(argdefelem)],
OPpASSIGN_BACKWARDS => [qw(sassign)],
OPpASSIGN_COMMON_AGG => [qw(aassign)],
OPpCONCAT_NESTED => [qw(concat)],
OPpCONST_BARE => [qw(const)],
OPpCOREARGS_DEREF1 => [qw(coreargs)],
+ OPpDEFER_FINALLY => [qw(pushdefer)],
OPpEARLY_CV => [qw(gv)],
+ OPpEMPTYAVHV_IS_HV => [qw(emptyavhv)],
OPpENTERSUB_AMPER => [qw(entersub rv2cv)],
OPpENTERSUB_INARGS => [qw(entersub)],
OPpENTERSUB_NOPAREN => [qw(rv2cv)],
@@ -821,26 +847,29 @@ our %ops_using = (
OPpFLIP_LINENUM => [qw(flip flop)],
OPpFT_ACCESS => [qw(fteexec fteread ftewrite ftrexec ftrread ftrwrite)],
OPpFT_AFTER_t => [qw(ftatime ftbinary ftblk ftchr ftctime ftdir fteexec fteowned fteread ftewrite ftfile ftis ftlink ftmtime ftpipe ftrexec ftrowned ftrread ftrwrite ftsgid ftsize ftsock ftsuid ftsvtx fttext fttty ftzero)],
+ OPpHELEMEXISTSOR_DELETE => [qw(helemexistsor)],
OPpHINT_STRICT_REFS => [qw(entersub multideref rv2av rv2cv rv2gv rv2hv rv2sv)],
OPpHUSH_VMSISH => [qw(dbstate nextstate)],
OPpINDEX_BOOLNEG => [qw(index rindex)],
+ OPpINITFIELDS => [qw(methstart)],
+ OPpINITFIELD_AV => [qw(initfield)],
OPpITER_DEF => [qw(enteriter)],
OPpITER_REVERSED => [qw(enteriter iter)],
OPpKVSLICE => [qw(delete)],
OPpLIST_GUESSED => [qw(list)],
OPpLVALUE => [qw(leave leaveloop)],
OPpLVAL_DEFER => [qw(aelem helem multideref)],
- OPpLVAL_INTRO => [qw(aelem aslice cond_expr delete enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multiconcat multideref padav padhv padrange padsv pushmark refassign rv2av rv2gv rv2hv rv2sv split)],
+ OPpLVAL_INTRO => [qw(aelem aslice cond_expr delete emptyavhv enteriter entersub gvsv helem hslice list lvavref lvref lvrefslice multiconcat multideref padav padhv padrange padsv padsv_store pushmark refassign rv2av rv2gv rv2hv rv2sv split undef)],
OPpLVREF_ELEM => [qw(lvref refassign)],
OPpMAYBE_LVSUB => [qw(aassign aelem akeys aslice av2arylen avhvswitch helem hslice keys kvaslice kvhslice multideref padav padhv pos rv2av rv2gv rv2hv substr values vec)],
- OPpMAYBE_TRUEBOOL => [qw(padhv ref rv2hv)],
+ OPpMAYBE_TRUEBOOL => [qw(blessed padhv ref rv2hv)],
OPpMULTICONCAT_APPEND => [qw(multiconcat)],
OPpMULTIDEREF_DELETE => [qw(multideref)],
OPpOFFBYONE => [qw(caller runcv wantarray)],
OPpOPEN_IN_CRLF => [qw(backtick open)],
OPpOUR_INTRO => [qw(enteriter gvsv rv2av rv2hv rv2sv split)],
OPpPADHV_ISKEYS => [qw(padhv)],
- OPpPAD_STATE => [qw(lvavref lvref padav padhv padsv pushmark refassign)],
+ OPpPAD_STATE => [qw(emptyavhv lvavref lvref padav padhv padsv padsv_store pushmark refassign undef)],
OPpPV_IS_UTF8 => [qw(dump goto last next redo)],
OPpREFCOUNTED => [qw(leave leaveeval leavesub leavesublv leavewrite)],
OPpREPEAT_DOLIST => [qw(repeat)],
@@ -850,11 +879,14 @@ our %ops_using = (
OPpSORT_DESCEND => [qw(sort)],
OPpSPLIT_ASSIGN => [qw(split)],
OPpSUBSTR_REPL_FIRST => [qw(substr)],
- OPpTARGET_MY => [qw(abs add atan2 chdir chmod chomp chown chr chroot concat cos crypt divide exec exp flock getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time unlink unshift utime wait waitpid)],
+ OPpTARGET_MY => [qw(abs add atan2 ceil chdir chmod chomp chown chr chroot concat cos crypt divide emptyavhv exec exp flock floor getpgrp getppid getpriority hex i_add i_divide i_modulo i_multiply i_subtract index int kill left_shift length link log mkdir modulo multiconcat multiply nbit_and nbit_or nbit_xor ncomplement oct ord pow push rand refaddr reftype rename right_shift rindex rmdir schomp scomplement setpgrp setpriority sin sleep sqrt srand stringify subtract symlink system time undef unlink unshift utime wait waitpid)],
OPpTRANS_CAN_FORCE_UTF8 => [qw(trans transr)],
- OPpTRUEBOOL => [qw(grepwhile index length padav padhv pos ref rindex rv2av rv2hv subst)],
+ OPpTRUEBOOL => [qw(blessed grepwhile index length padav padhv pos ref rindex rv2av rv2hv subst)],
+ OPpUNDEF_KEEP_PV => [qw(undef)],
+ OPpUSEINT => [qw(bit_and bit_or bit_xor complement left_shift nbit_and nbit_or nbit_xor ncomplement right_shift sbit_and sbit_or sbit_xor)],
);
+$ops_using{OPpARG_IF_UNDEF} = $ops_using{OPpARG_IF_FALSE};
$ops_using{OPpASSIGN_COMMON_RC1} = $ops_using{OPpASSIGN_COMMON_AGG};
$ops_using{OPpASSIGN_COMMON_SCALAR} = $ops_using{OPpASSIGN_COMMON_AGG};
$ops_using{OPpASSIGN_CV_TO_GV} = $ops_using{OPpASSIGN_BACKWARDS};
@@ -870,11 +902,13 @@ $ops_using{OPpDONT_INIT_GV} = $ops_using{OPpALLOW_FAKE};
$ops_using{OPpENTERSUB_DB} = $ops_using{OPpENTERSUB_AMPER};
$ops_using{OPpENTERSUB_HASTARG} = $ops_using{OPpENTERSUB_AMPER};
$ops_using{OPpEVAL_COPHH} = $ops_using{OPpEVAL_BYTES};
+$ops_using{OPpEVAL_EVALSV} = $ops_using{OPpEVAL_BYTES};
$ops_using{OPpEVAL_HAS_HH} = $ops_using{OPpEVAL_BYTES};
$ops_using{OPpEVAL_RE_REPARSING} = $ops_using{OPpEVAL_BYTES};
$ops_using{OPpEVAL_UNICODE} = $ops_using{OPpEVAL_BYTES};
$ops_using{OPpFT_STACKED} = $ops_using{OPpFT_AFTER_t};
$ops_using{OPpFT_STACKING} = $ops_using{OPpFT_AFTER_t};
+$ops_using{OPpINITFIELD_HV} = $ops_using{OPpINITFIELD_AV};
$ops_using{OPpLVREF_ITER} = $ops_using{OPpLVREF_ELEM};
$ops_using{OPpMAY_RETURN_CONSTANT} = $ops_using{OPpENTERSUB_NOPAREN};
$ops_using{OPpMULTICONCAT_FAKE} = $ops_using{OPpMULTICONCAT_APPEND};
@@ -888,8 +922,6 @@ $ops_using{OPpSORT_INPLACE} = $ops_using{OPpSORT_DESCEND};
$ops_using{OPpSORT_INTEGER} = $ops_using{OPpSORT_DESCEND};
$ops_using{OPpSORT_NUMERIC} = $ops_using{OPpSORT_DESCEND};
$ops_using{OPpSORT_REVERSE} = $ops_using{OPpSORT_DESCEND};
-$ops_using{OPpSORT_STABLE} = $ops_using{OPpSORT_DESCEND};
-$ops_using{OPpSORT_UNSTABLE} = $ops_using{OPpSORT_DESCEND};
$ops_using{OPpSPLIT_IMPLIM} = $ops_using{OPpSPLIT_ASSIGN};
$ops_using{OPpSPLIT_LEX} = $ops_using{OPpSPLIT_ASSIGN};
$ops_using{OPpTRANS_COMPLEMENT} = $ops_using{OPpTRANS_CAN_FORCE_UTF8};
@@ -899,4 +931,4 @@ $ops_using{OPpTRANS_IDENTICAL} = $ops_using{OPpTRANS_CAN_FORCE_UTF8};
$ops_using{OPpTRANS_SQUASH} = $ops_using{OPpTRANS_CAN_FORCE_UTF8};
$ops_using{OPpTRANS_USE_SVOP} = $ops_using{OPpTRANS_CAN_FORCE_UTF8};
-# ex: set ro:
+# ex: set ro ft=perl:
diff --git a/Master/tlpkg/tlperl/lib/Benchmark.pm b/Master/tlpkg/tlperl/lib/Benchmark.pm
index 3eeba798730..b68e96ad174 100644
--- a/Master/tlpkg/tlperl/lib/Benchmark.pm
+++ b/Master/tlpkg/tlperl/lib/Benchmark.pm
@@ -482,7 +482,7 @@ our(@ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS, $VERSION);
clearcache clearallcache disablecache enablecache);
%EXPORT_TAGS=( all => [ @EXPORT, @EXPORT_OK ] ) ;
-$VERSION = 1.23;
+$VERSION = 1.24;
# --- ':hireswallclock' special handling
@@ -683,9 +683,9 @@ sub runloop {
my($t0, $t1, $td); # before, after, difference
# find package of caller so we can execute code there
- my($curpack) = caller(0);
+ my $curpack = caller(0);
my($i, $pack)= 0;
- while (($pack) = caller(++$i)) {
+ while ($pack = caller(++$i)) {
last if $pack ne $curpack;
}
diff --git a/Master/tlpkg/tlperl/lib/CORE/EXTERN.h b/Master/tlpkg/tlperl/lib/CORE/EXTERN.h
index 7946323dcec..e6d97caa44d 100644
--- a/Master/tlpkg/tlperl/lib/CORE/EXTERN.h
+++ b/Master/tlpkg/tlperl/lib/CORE/EXTERN.h
@@ -9,10 +9,11 @@
*/
/*
- * EXT designates a global var which is defined in perl.h
- * dEXT designates a global var which is defined in another
- * file, so we can't count on finding it in perl.h
- * (this practice should be avoided).
+ * EXT: designates a global var which is defined in perl.h
+ *
+ * dEXT: designates a global var which is defined in another
+ * file, so we can't count on finding it in perl.h
+ * (this practice should be avoided).
*/
#undef EXT
#undef dEXT
@@ -52,6 +53,6 @@
# endif
#undef INIT
-#define INIT(x)
+#define INIT(...)
#undef DOINIT
diff --git a/Master/tlpkg/tlperl/lib/CORE/INTERN.h b/Master/tlpkg/tlperl/lib/CORE/INTERN.h
index 4305b6bc029..6a28e6020b9 100644
--- a/Master/tlpkg/tlperl/lib/CORE/INTERN.h
+++ b/Master/tlpkg/tlperl/lib/CORE/INTERN.h
@@ -46,6 +46,6 @@
# endif
#undef INIT
-#define INIT(x) = x
+#define INIT(...) = __VA_ARGS__
#define DOINIT
diff --git a/Master/tlpkg/tlperl/lib/CORE/XSUB.h b/Master/tlpkg/tlperl/lib/CORE/XSUB.h
index c1e39598854..82cd0dc7777 100644
--- a/Master/tlpkg/tlperl/lib/CORE/XSUB.h
+++ b/Master/tlpkg/tlperl/lib/CORE/XSUB.h
@@ -23,17 +23,17 @@ Some variables below are flagged with 'u' because Devel::PPPort can't currently
readily test them as they spring into existence by compiling with xsubpp.
=for apidoc Amnu|char*|CLASS
-Variable which is setup by C<xsubpp> to indicate the
+Variable which is setup by C<xsubpp> to indicate the
class name for a C++ XS constructor. This is always a C<char*>. See
C<L</THIS>>.
=for apidoc Amnu|type|RETVAL
-Variable which is setup by C<xsubpp> to hold the return value for an
-XSUB. This is always the proper type for the XSUB. See
+Variable which is setup by C<xsubpp> to hold the return value for an
+XSUB. This is always the proper type for the XSUB. See
L<perlxs/"The RETVAL Variable">.
=for apidoc Amnu|type|THIS
-Variable which is setup by C<xsubpp> to designate the object in a C++
+Variable which is setup by C<xsubpp> to designate the object in a C++
XSUB. This is always the proper type for the C++ object. See C<L</CLASS>> and
L<perlxs/"Using XS With C++">.
@@ -43,11 +43,11 @@ used by the C<ST>, C<XSprePUSH> and C<XSRETURN> macros. The C<dMARK> macro
must be called prior to setup the C<MARK> variable.
=for apidoc Amn|I32|items
-Variable which is setup by C<xsubpp> to indicate the number of
+Variable which is setup by C<xsubpp> to indicate the number of
items on the stack. See L<perlxs/"Variable-length Parameter Lists">.
=for apidoc Amn|I32|ix
-Variable which is setup by C<xsubpp> to indicate which of an
+Variable which is setup by C<xsubpp> to indicate which of an
XSUB's aliases was used to invoke it. See L<perlxs/"The ALIAS: Keyword">.
=for apidoc Am|SV*|ST|int ix
@@ -74,28 +74,28 @@ Macro to declare an XSUB and its C parameter list explicitly exporting the symbo
Macro used by C<L</XS_INTERNAL>> and C<L</XS_EXTERNAL>> to declare a function
prototype. You probably shouldn't be using this directly yourself.
-=for apidoc Amns||dAX
+=for apidoc Amn;||dAX
Sets up the C<ax> variable.
This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
-=for apidoc Amns||dAXMARK
+=for apidoc Amn;||dAXMARK
Sets up the C<ax> variable and stack marker variable C<mark>.
This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
-=for apidoc Amns||dITEMS
+=for apidoc Amn;||dITEMS
Sets up the C<items> variable.
This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
-=for apidoc Amns||dXSARGS
+=for apidoc Amn;||dXSARGS
Sets up stack and mark pointers for an XSUB, calling C<dSP> and C<dMARK>.
Sets up the C<ax> and C<items> variables by calling C<dAX> and C<dITEMS>.
This is usually handled automatically by C<xsubpp>.
-=for apidoc Amns||dXSI32
+=for apidoc Amn;||dXSI32
Sets up the C<ix> variable for an XSUB which has aliases. This is usually
handled automatically by C<xsubpp>.
-=for apidoc Amns||dUNDERBAR
+=for apidoc Amn;||dUNDERBAR
Sets up any variable needed by the C<UNDERBAR> macro. It used to define
C<padoff_du>, but it is currently a noop. However, it is strongly advised
to still use it for ensuring past and future compatibility.
@@ -160,13 +160,13 @@ is a lexical C<$_> in scope.
#define dAX const I32 ax = (I32)(MARK - PL_stack_base + 1)
#define dAXMARK \
- I32 ax = POPMARK; \
- SV **mark = PL_stack_base + ax++
+ I32 ax = POPMARK; \
+ SV **mark = PL_stack_base + ax++
#define dITEMS I32 items = (I32)(SP - MARK)
#define dXSARGS \
- dSP; dAXMARK; dITEMS
+ dSP; dAXMARK; dITEMS
/* These 3 macros are replacements for dXSARGS macro only in bootstrap.
They factor out common code in every BOOT XSUB. Computation of vars mark
and items will optimize away in most BOOT functions. Var ax can never be
@@ -174,20 +174,20 @@ is a lexical C<$_> in scope.
Note these macros are not drop in replacements for dXSARGS since they set
PL_xsubfilename. */
#define dXSBOOTARGSXSAPIVERCHK \
- I32 ax = XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \
- SV **mark = PL_stack_base + ax - 1; dSP; dITEMS
+ I32 ax = XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \
+ SV **mark = PL_stack_base + ax - 1; dSP; dITEMS
#define dXSBOOTARGSAPIVERCHK \
- I32 ax = XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \
- SV **mark = PL_stack_base + ax - 1; dSP; dITEMS
+ I32 ax = XS_APIVERSION_SETXSUBFN_POPMARK_BOOTCHECK; \
+ SV **mark = PL_stack_base + ax - 1; dSP; dITEMS
/* dXSBOOTARGSNOVERCHK has no API in xsubpp to choose it so do
#undef dXSBOOTARGSXSAPIVERCHK
#define dXSBOOTARGSXSAPIVERCHK dXSBOOTARGSNOVERCHK */
#define dXSBOOTARGSNOVERCHK \
- I32 ax = XS_SETXSUBFN_POPMARK; \
- SV **mark = PL_stack_base + ax - 1; dSP; dITEMS
+ I32 ax = XS_SETXSUBFN_POPMARK; \
+ SV **mark = PL_stack_base + ax - 1; dSP; dITEMS
#define dXSTARG SV * const targ = ((PL_op->op_private & OPpENTERSUB_HASTARG) \
- ? PAD_SV(PL_op->op_targ) : sv_newmortal())
+ ? PAD_SV(PL_op->op_targ) : sv_newmortal())
/* Should be used before final PUSHi etc. if not in PPCODE section. */
#define XSprePUSH (sp = PL_stack_base + ax - 1)
@@ -206,7 +206,7 @@ is a lexical C<$_> in scope.
#define dXSFUNCTION(ret) XSINTERFACE_CVT(ret,XSFUNCTION)
#define XSINTERFACE_FUNC(ret,cv,f) ((XSINTERFACE_CVT_ANON(ret))(f))
#define XSINTERFACE_FUNC_SET(cv,f) \
- CvXSUBANY(cv).any_dxptr = (void (*) (pTHX_ void*))(f)
+ CvXSUBANY(cv).any_dxptr = (void (*) (pTHX_ void*))(f)
#define dUNDERBAR dNOOP
#define UNDERBAR find_rundefsv()
@@ -226,7 +226,7 @@ Place a double into the specified position C<pos> on the stack. The value
is stored in a new mortal SV.
=for apidoc Am|void|XST_mPV|int pos|char* str
-Place a copy of a string into the specified position C<pos> on the stack.
+Place a copy of a string into the specified position C<pos> on the stack.
The value is stored in a new mortal SV.
=for apidoc Am|void|XST_mUV|int pos|UV uv
@@ -261,16 +261,16 @@ Return a double from an XSUB immediately. Uses C<XST_mNV>.
=for apidoc Am|void|XSRETURN_PV|char* str
Return a copy of a string from an XSUB immediately. Uses C<XST_mPV>.
-=for apidoc Amns||XSRETURN_NO
+=for apidoc Amn;||XSRETURN_NO
Return C<&PL_sv_no> from an XSUB immediately. Uses C<XST_mNO>.
-=for apidoc Amns||XSRETURN_YES
+=for apidoc Amn;||XSRETURN_YES
Return C<&PL_sv_yes> from an XSUB immediately. Uses C<XST_mYES>.
-=for apidoc Amns||XSRETURN_UNDEF
+=for apidoc Amn;||XSRETURN_UNDEF
Return C<&PL_sv_undef> from an XSUB immediately. Uses C<XST_mUNDEF>.
-=for apidoc Amns||XSRETURN_EMPTY
+=for apidoc Amn;||XSRETURN_EMPTY
Return an empty list from an XSUB immediately.
=for apidoc AmU||newXSproto|char* name|XSUBADDR_t f|char* filename|const char *proto
@@ -282,18 +282,18 @@ The version identifier for an XS module. This is usually
handled automatically by C<ExtUtils::MakeMaker>. See
C<L</XS_VERSION_BOOTCHECK>>.
-=for apidoc Amns||XS_VERSION_BOOTCHECK
+=for apidoc Amn;||XS_VERSION_BOOTCHECK
Macro to verify that a PM module's C<$VERSION> variable matches the XS
module's C<XS_VERSION> variable. This is usually handled automatically by
C<xsubpp>. See L<perlxs/"The VERSIONCHECK: Keyword">.
-=for apidoc Amns||XS_APIVERSION_BOOTCHECK
+=for apidoc Amn;||XS_APIVERSION_BOOTCHECK
Macro to verify that the perl api version an XS module has been compiled against
matches the api version of the perl interpreter it's being loaded into.
=for apidoc_section $exceptions
-=for apidoc Amns||dXCPT
+=for apidoc Amn;||dXCPT
Set up necessary local variables for exception handling.
See L<perlguts/"Exception Handling">.
@@ -306,7 +306,7 @@ Ends a try block. See L<perlguts/"Exception Handling">.
=for apidoc AmnU||XCPT_CATCH
Introduces a catch block. See L<perlguts/"Exception Handling">.
-=for apidoc Amns||XCPT_RETHROW
+=for apidoc Amn;||XCPT_RETHROW
Rethrows a previously caught exception. See L<perlguts/"Exception Handling">.
=cut
@@ -323,21 +323,21 @@ Rethrows a previously caught exception. See L<perlguts/"Exception Handling">.
#define XSRETURN(off) \
STMT_START { \
- const IV tmpXSoff = (off); \
- assert(tmpXSoff >= 0);\
- PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); \
- return; \
+ const IV tmpXSoff = (off); \
+ assert(tmpXSoff >= 0);\
+ PL_stack_sp = PL_stack_base + ax + (tmpXSoff - 1); \
+ return; \
} STMT_END
-#define XSRETURN_IV(v) STMT_START { XST_mIV(0,v); XSRETURN(1); } STMT_END
-#define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END
-#define XSRETURN_NV(v) STMT_START { XST_mNV(0,v); XSRETURN(1); } STMT_END
-#define XSRETURN_PV(v) STMT_START { XST_mPV(0,v); XSRETURN(1); } STMT_END
-#define XSRETURN_PVN(v,n) STMT_START { XST_mPVN(0,v,n); XSRETURN(1); } STMT_END
-#define XSRETURN_NO STMT_START { XST_mNO(0); XSRETURN(1); } STMT_END
-#define XSRETURN_YES STMT_START { XST_mYES(0); XSRETURN(1); } STMT_END
-#define XSRETURN_UNDEF STMT_START { XST_mUNDEF(0); XSRETURN(1); } STMT_END
-#define XSRETURN_EMPTY STMT_START { XSRETURN(0); } STMT_END
+#define XSRETURN_IV(v) STMT_START { XST_mIV(0,v); XSRETURN(1); } STMT_END
+#define XSRETURN_UV(v) STMT_START { XST_mUV(0,v); XSRETURN(1); } STMT_END
+#define XSRETURN_NV(v) STMT_START { XST_mNV(0,v); XSRETURN(1); } STMT_END
+#define XSRETURN_PV(v) STMT_START { XST_mPV(0,v); XSRETURN(1); } STMT_END
+#define XSRETURN_PVN(v,n) STMT_START { XST_mPVN(0,v,n); XSRETURN(1); } STMT_END
+#define XSRETURN_NO STMT_START { XST_mNO(0); XSRETURN(1); } STMT_END
+#define XSRETURN_YES STMT_START { XST_mYES(0); XSRETURN(1); } STMT_END
+#define XSRETURN_UNDEF STMT_START { XST_mUNDEF(0); XSRETURN(1); } STMT_END
+#define XSRETURN_EMPTY STMT_START { XSRETURN(0); } STMT_END
#define newXSproto(a,b,c,d) newXS_flags(a,b,c,d,0)
@@ -409,48 +409,49 @@ Rethrows a previously caught exception. See L<perlguts/"Exception Handling">.
*/
#define DBM_setFilter(db_type,code) \
- STMT_START { \
- if (db_type) \
- RETVAL = sv_mortalcopy(db_type) ; \
- ST(0) = RETVAL ; \
- if (db_type && (code == &PL_sv_undef)) { \
- SvREFCNT_dec_NN(db_type) ; \
- db_type = NULL ; \
- } \
- else if (code) { \
- if (db_type) \
- sv_setsv(db_type, code) ; \
- else \
- db_type = newSVsv(code) ; \
- } \
- } STMT_END
+ STMT_START { \
+ if (db_type) \
+ RETVAL = sv_mortalcopy(db_type) ; \
+ ST(0) = RETVAL ; \
+ if (db_type && (code == &PL_sv_undef)) { \
+ SvREFCNT_dec_NN(db_type) ; \
+ db_type = NULL ; \
+ } \
+ else if (code) { \
+ if (db_type) \
+ sv_setsv(db_type, code) ; \
+ else \
+ db_type = newSVsv(code) ; \
+ } \
+ } STMT_END
#define DBM_ckFilter(arg,type,name) \
- STMT_START { \
- if (db->type) { \
- if (db->filtering) { \
- croak("recursion detected in %s", name) ; \
- } \
- ENTER ; \
- SAVETMPS ; \
- SAVEINT(db->filtering) ; \
- db->filtering = TRUE ; \
- SAVE_DEFSV ; \
+ STMT_START { \
+ if (db->type) { \
+ if (db->filtering) { \
+ croak("recursion detected in %s", name) ; \
+ } \
+ ENTER ; \
+ SAVETMPS ; \
+ SAVEINT(db->filtering) ; \
+ db->filtering = TRUE ; \
+ SAVE_DEFSV ; \
if (name[7] == 's') \
arg = newSVsv(arg); \
- DEFSV_set(arg) ; \
- SvTEMP_off(arg) ; \
- PUSHMARK(SP) ; \
- PUTBACK ; \
- (void) perl_call_sv(db->type, G_DISCARD); \
- SPAGAIN ; \
- PUTBACK ; \
- FREETMPS ; \
- LEAVE ; \
+ DEFSV_set(arg) ; \
+ SvTEMP_off(arg) ; \
+ PUSHMARK(SP) ; \
+ PUTBACK ; \
+ (void) perl_call_sv(db->type, G_DISCARD); \
+ SPAGAIN ; \
+ PUTBACK ; \
+ FREETMPS ; \
+ LEAVE ; \
if (name[7] == 's'){ \
arg = sv_2mortal(arg); \
} \
- } } STMT_END
+ } \
+ } STMT_END
#if 1 /* for compatibility */
# define VTBL_sv &PL_vtbl_sv
@@ -484,7 +485,7 @@ Rethrows a previously caught exception. See L<perlguts/"Exception Handling">.
# define VTBL_amagicelem &PL_vtbl_amagicelem
#endif
-#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_NO_GET_CONTEXT) && !defined(PERL_CORE)
+#if defined(MULTIPLICITY) && !defined(PERL_NO_GET_CONTEXT) && !defined(PERL_CORE)
# undef aTHX
# undef aTHX_
# define aTHX PERL_GET_THX
@@ -493,15 +494,6 @@ Rethrows a previously caught exception. See L<perlguts/"Exception Handling">.
#if defined(PERL_IMPLICIT_SYS) && !defined(PERL_CORE)
# ifndef NO_XSLOCKS
-# if defined (NETWARE) && defined (USE_STDIO)
-# define times PerlProc_times
-# define setuid PerlProc_setuid
-# define setgid PerlProc_setgid
-# define getpid PerlProc_getpid
-# define pause PerlProc_pause
-# define exit PerlProc_exit
-# define _exit PerlProc__exit
-# else
# undef closedir
# undef opendir
# undef stdin
@@ -517,35 +509,6 @@ Rethrows a previously caught exception. See L<perlguts/"Exception Handling">.
# undef ungetc
# undef fileno
-/* Following symbols were giving redefinition errors while building extensions - sgp 17th Oct 2000 */
-#ifdef NETWARE
-# undef readdir
-# undef fstat
-# undef stat
-# undef longjmp
-# undef endhostent
-# undef endnetent
-# undef endprotoent
-# undef endservent
-# undef gethostbyaddr
-# undef gethostbyname
-# undef gethostent
-# undef getnetbyaddr
-# undef getnetbyname
-# undef getnetent
-# undef getprotobyname
-# undef getprotobynumber
-# undef getprotoent
-# undef getservbyname
-# undef getservbyport
-# undef getservent
-# undef inet_ntoa
-# undef sethostent
-# undef setnetent
-# undef setprotoent
-# undef setservent
-#endif /* NETWARE */
-
/* to avoid warnings: "xyz" redefined */
#ifdef WIN32
# undef popen
@@ -694,7 +657,6 @@ Rethrows a previously caught exception. See L<perlguts/"Exception Handling">.
# define shutdown PerlSock_shutdown
# define socket PerlSock_socket
# define socketpair PerlSock_socketpair
-# endif /* NETWARE && USE_STDIO */
# undef fd_set
# undef FD_SET
diff --git a/Master/tlpkg/tlperl/lib/CORE/av.h b/Master/tlpkg/tlperl/lib/CORE/av.h
index 41cb6fefd89..6e0b24d7b3a 100644
--- a/Master/tlpkg/tlperl/lib/CORE/av.h
+++ b/Master/tlpkg/tlperl/lib/CORE/av.h
@@ -18,16 +18,27 @@ struct xpvav {
/* SV* xav_arylen; */
-/* SVpav_REAL is set for all AVs whose xav_array contents are refcounted.
- * Some things like "@_" and the scratchpad list do not set this, to
- * indicate that they are cheating (for efficiency) by not refcounting
- * the AV's contents.
- *
+/* SVpav_REAL is set for all AVs whose xav_array contents are refcounted
+ * and initialized such that any element can be retrieved as a SV*.
+ * Such AVs may be referred to as "real" AVs. Examples include regular
+ * perl arrays, tiedarrays (since v5.16), and padlist AVs.
+ *
+ * Some things do not set SVpav_REAL, to indicate that they are cheating
+ * (for efficiency) by not refcounting the AV's contents or ensuring that
+ * all elements are safe for arbitrary access. This type of AV may be
+ * referred to as "fake" AVs. Examples include "@_" (unless tied), the
+ * scratchpad list, and the backrefs list on an object or stash.
+ *
* SVpav_REIFY is only meaningful on such "fake" AVs (i.e. where SVpav_REAL
* is not set). It indicates that the fake AV is capable of becoming
* real if the array needs to be modified in some way. Functions that
* modify fake AVs check both flags to call av_reify() as appropriate.
*
+ * av_reify() transforms a fake AV into a real one through two actions.
+ * Allocated but unpopulated elements are initialized to make them safe for
+ * arbitrary retrieval and the reference counts of populated elements are
+ * incremented.
+ *
* Note that the Perl stack has neither flag set. (Thus,
* items that go on the stack are never refcounted.)
*
@@ -97,16 +108,110 @@ If all you need is to look up an array element, then prefer C<av_fetch>.
#define NEGATIVE_INDICES_VAR "NEGATIVE_INDICES"
/*
+
+Note that there are both real and fake AVs; see the beginning of this file and
+'av.c'
+
=for apidoc newAV
+=for apidoc_item newAV_alloc_x
+=for apidoc_item newAV_alloc_xz
+
+These all create a new AV, setting the reference count to 1. If you also know
+the initial elements of the array with, see L</C<av_make>>.
+
+As background, an array consists of three things:
+
+=over
+
+=item 1.
+
+A data structure containing information about the array as a whole, such as its
+size and reference count.
+
+=item 2.
+
+A C language array of pointers to the individual elements. These are treated
+as pointers to SVs, so all must be castable to SV*.
+
+=item 3.
+
+The individual elements themselves. These could be, for instance, SVs and/or
+AVs and/or HVs, etc.
+
+=back
+
+An empty array need only have the first data structure, and all these functions
+create that. They differ in what else they do, as follows:
+
+=over
+
+=item C<newAV> form
+
+=for comment
+'form' above and below is because otherwise have two =items with the same name,
+can't link to them.
+
+This does nothing beyond creating the whole-array data structure.
+The Perl equivalent is approximately S<C<my @array;>>
-Creates a new AV. The reference count is set to 1.
+This is useful when the minimum size of the array could be zero (perhaps there
+are likely code paths that will entirely skip using it).
-Perl equivalent: C<my @array;>.
+If the array does get used, the pointers data structure will need to be
+allocated at that time. This will end up being done by L</av_extend>>,
+either explicitly:
+
+ av_extend(av, len);
+
+or implicitly when the first element is stored:
+
+ (void)av_store(av, 0, sv);
+
+Unused array elements are typically initialized by C<av_extend>.
+
+=item C<newAV_alloc_x> form
+
+This effectively does a C<newAV> followed by also allocating (uninitialized)
+space for the pointers array. This is used when you know ahead of time the
+likely minimum size of the array. It is more efficient to do this than doing a
+plain C<newAV> followed by an C<av_extend>.
+
+Of course the array can be extended later should it become necessary.
+
+C<size> must be at least 1.
+
+=item C<newAV_alloc_xz> form
+
+This is C<newAV_alloc_x>, but initializes each pointer in it to NULL. This
+gives added safety to guard against them being read before being set.
+
+C<size> must be at least 1.
+
+=back
+
+The following examples all result in an array that can fit four elements
+(indexes 0 .. 3):
+
+ AV *av = newAV();
+ av_extend(av, 3);
+
+ AV *av = newAV_alloc_x(4);
+
+ AV *av = newAV_alloc_xz(4);
+
+In contrast, the following examples allocate an array that is only guaranteed
+to fit one element without extending:
+
+ AV *av = newAV_alloc_x(1);
+ AV *av = newAV_alloc_xz(1);
=cut
+
*/
#define newAV() MUTABLE_AV(newSV_type(SVt_PVAV))
+#define newAV_alloc_x(size) av_new_alloc(size,0)
+#define newAV_alloc_xz(size) av_new_alloc(size,1)
/*
* ex: set ts=8 sts=4 sw=4 et:
diff --git a/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h b/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h
index 18c26afae00..209681ac1aa 100644
--- a/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h
+++ b/Master/tlpkg/tlperl/lib/CORE/charclass_invlists.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
* This file is built by regen/mk_invlists.pl from Unicode::UCD.
* Any changes made here will be lost!
@@ -15,15 +15,15 @@
* encompassing all of the Unicode BMP, and thus including all the economically
* important world scripts. At 12 most of them are: including Arabic,
* Cyrillic, Greek, Hebrew, Indian subcontinent, Latin, and Thai; but not Han,
- * Japanese, nor Korean. (The regarglen structure in regnodes.h is a U8, and
- * the trie types TRIEC and AHOCORASICKC are larger than U8 for shift values
- * above 12.) Be sure to benchmark before changing, as larger sizes do
- * significantly slow down the test suite */
+ * Japanese, nor Korean. The regnode sizing data structure in regnodes.h currently
+ * uses a U8, and the trie types TRIEC and AHOCORASICKC are larger than U8 for
+ * shift values above 12.) Be sure to benchmark before changing, as larger sizes
+ * do significantly slow down the test suite. */
#define NUM_ANYOF_CODE_POINTS (1 << 8)
/* The precision to use in "%.*e" formats */
-#define PL_E_FORMAT_PRECISION 2
+#define PL_E_FORMAT_PRECISION 3
#if (defined(PERL_IN_REGCOMP_C) && ! defined(PERL_IN_XSUB_RE))
@@ -54,7 +54,7 @@ static const UV * const InBitmap_invlist = Latin1_invlist;
# if 'A' == 65 /* ASCII/Latin1 */
static const UV Case_Folding_invlist[] = { /* for ASCII/Latin1 */
- 1398, /* Number of elements */
+ 1414, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -1072,7 +1072,7 @@ static const UV Case_Folding_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -1416,6 +1416,8 @@ static const UV Case_Folding_invlist[] = { /* for ASCII/Latin1 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
@@ -1425,6 +1427,12 @@ static const UV Case_Folding_invlist[] = { /* for ASCII/Latin1 */
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xAB70,
@@ -1448,6 +1456,14 @@ static const UV Case_Folding_invlist[] = { /* for ASCII/Latin1 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -3444,6 +3460,8 @@ static const I32 Case_Folding_invmap[] = { /* for ASCII/Latin1 */
0,
0xA7BF,
0,
+ 0xA7C1,
+ 0,
0xA7C3,
0,
0xA794,
@@ -3453,6 +3471,12 @@ static const I32 Case_Folding_invmap[] = { /* for ASCII/Latin1 */
0,
0xA7CA,
0,
+ 0xA7D1,
+ 0,
+ 0xA7D7,
+ 0,
+ 0xA7D9,
+ 0,
0xA7F6,
0,
0x13A0,
@@ -3476,6 +3500,14 @@ static const I32 Case_Folding_invmap[] = { /* for ASCII/Latin1 */
0,
0x104D8,
0,
+ 0x10597,
+ 0,
+ 0x105A3,
+ 0,
+ 0x105B3,
+ 0,
+ 0x105BB,
+ 0,
0x10CC0,
0,
0x118C0,
@@ -3498,7 +3530,7 @@ static const I32 Case_Folding_invmap[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV Case_Folding_invlist[] = { /* for EBCDIC 1047 */
- 1417, /* Number of elements */
+ 1433, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -4535,7 +4567,7 @@ static const UV Case_Folding_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -4879,6 +4911,8 @@ static const UV Case_Folding_invlist[] = { /* for EBCDIC 1047 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
@@ -4888,6 +4922,12 @@ static const UV Case_Folding_invlist[] = { /* for EBCDIC 1047 */
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xAB70,
@@ -4911,6 +4951,14 @@ static const UV Case_Folding_invlist[] = { /* for EBCDIC 1047 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -6929,6 +6977,8 @@ static const I32 Case_Folding_invmap[] = { /* for EBCDIC 1047 */
0,
0xA7BF,
0,
+ 0xA7C1,
+ 0,
0xA7C3,
0,
0xA794,
@@ -6938,6 +6988,12 @@ static const I32 Case_Folding_invmap[] = { /* for EBCDIC 1047 */
0,
0xA7CA,
0,
+ 0xA7D1,
+ 0,
+ 0xA7D7,
+ 0,
+ 0xA7D9,
+ 0,
0xA7F6,
0,
0x13A0,
@@ -6961,6 +7017,14 @@ static const I32 Case_Folding_invmap[] = { /* for EBCDIC 1047 */
0,
0x104D8,
0,
+ 0x10597,
+ 0,
+ 0x105A3,
+ 0,
+ 0x105B3,
+ 0,
+ 0x105BB,
+ 0,
0x10CC0,
0,
0x118C0,
@@ -6983,7 +7047,7 @@ static const I32 Case_Folding_invmap[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV Case_Folding_invlist[] = { /* for EBCDIC 037 */
- 1413, /* Number of elements */
+ 1429, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -8016,7 +8080,7 @@ static const UV Case_Folding_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -8360,6 +8424,8 @@ static const UV Case_Folding_invlist[] = { /* for EBCDIC 037 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
@@ -8369,6 +8435,12 @@ static const UV Case_Folding_invlist[] = { /* for EBCDIC 037 */
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xAB70,
@@ -8392,6 +8464,14 @@ static const UV Case_Folding_invlist[] = { /* for EBCDIC 037 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -10406,6 +10486,8 @@ static const I32 Case_Folding_invmap[] = { /* for EBCDIC 037 */
0,
0xA7BF,
0,
+ 0xA7C1,
+ 0,
0xA7C3,
0,
0xA794,
@@ -10415,6 +10497,12 @@ static const I32 Case_Folding_invmap[] = { /* for EBCDIC 037 */
0,
0xA7CA,
0,
+ 0xA7D1,
+ 0,
+ 0xA7D7,
+ 0,
+ 0xA7D9,
+ 0,
0xA7F6,
0,
0x13A0,
@@ -10438,6 +10526,14 @@ static const I32 Case_Folding_invmap[] = { /* for EBCDIC 037 */
0,
0x104D8,
0,
+ 0x10597,
+ 0,
+ 0x105A3,
+ 0,
+ 0x105B3,
+ 0,
+ 0x105BB,
+ 0,
0x10CC0,
0,
0x118C0,
@@ -10457,7 +10553,7 @@ static const I32 Case_Folding_invmap[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV Lowercase_Mapping_invlist[] = { /* for ASCII/Latin1 */
- 1262, /* Number of elements */
+ 1278, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -11354,7 +11450,7 @@ static const UV Lowercase_Mapping_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -11698,6 +11794,8 @@ static const UV Lowercase_Mapping_invlist[] = { /* for ASCII/Latin1 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
@@ -11707,6 +11805,12 @@ static const UV Lowercase_Mapping_invlist[] = { /* for ASCII/Latin1 */
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -11715,6 +11819,14 @@ static const UV Lowercase_Mapping_invlist[] = { /* for ASCII/Latin1 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -13000,6 +13112,8 @@ static const I32 Lowercase_Mapping_invmap[] = { /* for ASCII/Latin1 */
0,
0xA7BF,
0,
+ 0xA7C1,
+ 0,
0xA7C3,
0,
0xA794,
@@ -13009,6 +13123,12 @@ static const I32 Lowercase_Mapping_invmap[] = { /* for ASCII/Latin1 */
0,
0xA7CA,
0,
+ 0xA7D1,
+ 0,
+ 0xA7D7,
+ 0,
+ 0xA7D9,
+ 0,
0xA7F6,
0,
0xFF41,
@@ -13017,6 +13137,14 @@ static const I32 Lowercase_Mapping_invmap[] = { /* for ASCII/Latin1 */
0,
0x104D8,
0,
+ 0x10597,
+ 0,
+ 0x105A3,
+ 0,
+ 0x105B3,
+ 0,
+ 0x105BB,
+ 0,
0x10CC0,
0,
0x118C0,
@@ -13039,7 +13167,7 @@ static const I32 Lowercase_Mapping_invmap[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV Lowercase_Mapping_invlist[] = { /* for EBCDIC 1047 */
- 1280, /* Number of elements */
+ 1296, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -13954,7 +14082,7 @@ static const UV Lowercase_Mapping_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -14298,6 +14426,8 @@ static const UV Lowercase_Mapping_invlist[] = { /* for EBCDIC 1047 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
@@ -14307,6 +14437,12 @@ static const UV Lowercase_Mapping_invlist[] = { /* for EBCDIC 1047 */
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -14315,6 +14451,14 @@ static const UV Lowercase_Mapping_invlist[] = { /* for EBCDIC 1047 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -15621,6 +15765,8 @@ static const I32 Lowercase_Mapping_invmap[] = { /* for EBCDIC 1047 */
0,
0xA7BF,
0,
+ 0xA7C1,
+ 0,
0xA7C3,
0,
0xA794,
@@ -15630,6 +15776,12 @@ static const I32 Lowercase_Mapping_invmap[] = { /* for EBCDIC 1047 */
0,
0xA7CA,
0,
+ 0xA7D1,
+ 0,
+ 0xA7D7,
+ 0,
+ 0xA7D9,
+ 0,
0xA7F6,
0,
0xFF41,
@@ -15638,6 +15790,14 @@ static const I32 Lowercase_Mapping_invmap[] = { /* for EBCDIC 1047 */
0,
0x104D8,
0,
+ 0x10597,
+ 0,
+ 0x105A3,
+ 0,
+ 0x105B3,
+ 0,
+ 0x105BB,
+ 0,
0x10CC0,
0,
0x118C0,
@@ -15660,7 +15820,7 @@ static const I32 Lowercase_Mapping_invmap[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV Lowercase_Mapping_invlist[] = { /* for EBCDIC 037 */
- 1276, /* Number of elements */
+ 1292, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -16571,7 +16731,7 @@ static const UV Lowercase_Mapping_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -16915,6 +17075,8 @@ static const UV Lowercase_Mapping_invlist[] = { /* for EBCDIC 037 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
@@ -16924,6 +17086,12 @@ static const UV Lowercase_Mapping_invlist[] = { /* for EBCDIC 037 */
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -16932,6 +17100,14 @@ static const UV Lowercase_Mapping_invlist[] = { /* for EBCDIC 037 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -18234,6 +18410,8 @@ static const I32 Lowercase_Mapping_invmap[] = { /* for EBCDIC 037 */
0,
0xA7BF,
0,
+ 0xA7C1,
+ 0,
0xA7C3,
0,
0xA794,
@@ -18243,6 +18421,12 @@ static const I32 Lowercase_Mapping_invmap[] = { /* for EBCDIC 037 */
0,
0xA7CA,
0,
+ 0xA7D1,
+ 0,
+ 0xA7D7,
+ 0,
+ 0xA7D9,
+ 0,
0xA7F6,
0,
0xFF41,
@@ -18251,6 +18435,14 @@ static const I32 Lowercase_Mapping_invmap[] = { /* for EBCDIC 037 */
0,
0x104D8,
0,
+ 0x10597,
+ 0,
+ 0x105A3,
+ 0,
+ 0x105B3,
+ 0,
+ 0x105BB,
+ 0,
0x10CC0,
0,
0x118C0,
@@ -18268,7 +18460,7 @@ static const I32 Lowercase_Mapping_invmap[] = { /* for EBCDIC 037 */
#if (defined(PERL_IN_REGCOMP_C) && ! defined(PERL_IN_XSUB_RE))
static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */
- 359, /* Number of elements */
+ 379, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -18353,7 +18545,9 @@ static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */
0x7FE,
0x859,
0x85C,
- 0x8D3,
+ 0x899,
+ 0x89C,
+ 0x8CF,
0x8D4,
0x8E3,
0x8E4,
@@ -18391,6 +18585,8 @@ static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */
0xB4E,
0xBCD,
0xBCE,
+ 0xC3C,
+ 0xC3D,
0xC4D,
0xC4E,
0xC55,
@@ -18440,7 +18636,7 @@ static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */
0x108D,
0x108E,
0x1714,
- 0x1715,
+ 0x1716,
0x1734,
0x1735,
0x17D2,
@@ -18463,6 +18659,10 @@ static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */
0x1ABE,
0x1ABF,
0x1AC1,
+ 0x1AC3,
+ 0x1AC5,
+ 0x1ACA,
+ 0x1ACB,
0x1B34,
0x1B35,
0x1B44,
@@ -18492,7 +18692,7 @@ static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */
0x1DCD,
0x1DD1,
0x1DF6,
- 0x1DFA,
+ 0x1DFB,
0x1DFC,
0x1DFE,
0x1DFF,
@@ -18549,14 +18749,22 @@ static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */
0x10A40,
0x10AE6,
0x10AE7,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F48,
0x10F4B,
0x10F4C,
0x10F4D,
0x10F51,
+ 0x10F83,
+ 0x10F84,
+ 0x10F85,
+ 0x10F86,
0x11046,
0x11047,
+ 0x11070,
+ 0x11071,
0x1107F,
0x11080,
0x110B9,
@@ -18613,6 +18821,8 @@ static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */
0x11D46,
0x11D97,
0x11D98,
+ 0x11F41,
+ 0x11F43,
0x16AF0,
0x16AF5,
0x16FF0,
@@ -18627,6 +18837,8 @@ static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */
0x1D183,
0x1D18A,
0x1D18C,
+ 0x1E4EC,
+ 0x1E4EF,
0x1E8D0,
0x1E8D7,
0x1E94A,
@@ -18636,7 +18848,7 @@ static const UV _Perl_CCC_non0_non230_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
- 1805, /* Number of elements */
+ 1851, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -18708,7 +18920,11 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x890,
+ 0x892,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x903,
@@ -18819,6 +19035,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC45,
@@ -18851,6 +19069,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
0xCD7,
0xCE2,
0xCE4,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD02,
0xD04,
@@ -18899,7 +19119,7 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -18954,7 +19174,9 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
0x1360,
0x1712,
0x1715,
+ 0x1716,
0x1732,
+ 0x1734,
0x1735,
0x1752,
0x1754,
@@ -18973,6 +19195,7 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
0x180B,
0x180E,
0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -19007,7 +19230,7 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B05,
@@ -19058,8 +19281,6 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200B,
0x200C,
@@ -20101,14 +20322,22 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11001,
0x11002,
0x11003,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x11083,
@@ -20119,6 +20348,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x11100,
@@ -20154,6 +20385,8 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -20317,8 +20550,23 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
0x11EF3,
0x11EF5,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -20337,6 +20585,10 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D166,
0x1D167,
@@ -20374,10 +20626,16 @@ static const UV _Perl_GCB_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -20547,6 +20805,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
GCB_Other,
GCB_Extend,
GCB_Other,
+ GCB_Prepend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
GCB_Extend,
GCB_Prepend,
GCB_Extend,
@@ -20659,6 +20921,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
GCB_Extend,
GCB_Other,
GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_SpacingMark,
GCB_Other,
GCB_Extend,
@@ -20690,6 +20954,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
GCB_Other,
GCB_Extend,
GCB_Other,
+ GCB_SpacingMark,
+ GCB_Other,
GCB_Extend,
GCB_SpacingMark,
GCB_Other,
@@ -20792,8 +21058,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
GCB_Extend,
GCB_Other,
GCB_Extend,
+ GCB_SpacingMark,
GCB_Other,
GCB_Extend,
+ GCB_SpacingMark,
GCB_Other,
GCB_Extend,
GCB_Other,
@@ -20811,6 +21079,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
GCB_Other,
GCB_Extend,
GCB_Control,
+ GCB_Extend,
GCB_Other,
GCB_Extend,
GCB_Other,
@@ -20898,8 +21167,6 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
GCB_Other,
GCB_Extend,
GCB_Other,
- GCB_Extend,
- GCB_Other,
GCB_Control,
GCB_Extend,
GCB_ZWJ,
@@ -21942,6 +22209,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
GCB_Other,
GCB_Extend,
GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
GCB_SpacingMark,
GCB_Extend,
GCB_SpacingMark,
@@ -21949,6 +22220,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
GCB_Extend,
GCB_Other,
GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_SpacingMark,
GCB_Other,
GCB_SpacingMark,
@@ -21958,6 +22233,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
GCB_Other,
GCB_Prepend,
GCB_Other,
+ GCB_Extend,
+ GCB_Other,
GCB_Prepend,
GCB_Other,
GCB_Extend,
@@ -21994,6 +22271,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
GCB_Extend,
GCB_Other,
GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_SpacingMark,
GCB_Extend,
GCB_Other,
@@ -22067,7 +22346,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
GCB_Extend,
GCB_Other,
GCB_Extend,
- GCB_SpacingMark,
+ GCB_Other,
GCB_Extend,
GCB_SpacingMark,
GCB_Extend,
@@ -22156,7 +22435,22 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
GCB_Extend,
GCB_SpacingMark,
GCB_Other,
+ GCB_Extend,
+ GCB_Prepend,
+ GCB_SpacingMark,
+ GCB_Other,
+ GCB_SpacingMark,
+ GCB_Extend,
+ GCB_Other,
+ GCB_SpacingMark,
+ GCB_Extend,
+ GCB_SpacingMark,
+ GCB_Extend,
+ GCB_Other,
GCB_Control,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_Other,
GCB_Extend,
GCB_Other,
@@ -22177,6 +22471,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
GCB_Control,
GCB_Other,
GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_SpacingMark,
GCB_Extend,
GCB_Other,
@@ -22221,6 +22519,12 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
GCB_Other,
GCB_Extend,
GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
GCB_ExtPict_XX,
GCB_Other,
GCB_ExtPict_XX,
@@ -22298,7 +22602,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
- 1806, /* Number of elements */
+ 1852, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -22371,7 +22675,11 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x890,
+ 0x892,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x903,
@@ -22482,6 +22790,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC45,
@@ -22514,6 +22824,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
0xCD7,
0xCE2,
0xCE4,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD02,
0xD04,
@@ -22562,7 +22874,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -22617,7 +22929,9 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
0x1360,
0x1712,
0x1715,
+ 0x1716,
0x1732,
+ 0x1734,
0x1735,
0x1752,
0x1754,
@@ -22636,6 +22950,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
0x180B,
0x180E,
0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -22670,7 +22985,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B05,
@@ -22721,8 +23036,6 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200B,
0x200C,
@@ -23764,14 +24077,22 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11001,
0x11002,
0x11003,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x11083,
@@ -23782,6 +24103,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x11100,
@@ -23817,6 +24140,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -23980,8 +24305,23 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
0x11EF3,
0x11EF5,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -24000,6 +24340,10 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D166,
0x1D167,
@@ -24037,10 +24381,16 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -24214,6 +24564,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
GCB_Other,
GCB_Extend,
GCB_Other,
+ GCB_Prepend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
GCB_Extend,
GCB_Prepend,
GCB_Extend,
@@ -24326,6 +24680,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
GCB_Extend,
GCB_Other,
GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_SpacingMark,
GCB_Other,
GCB_Extend,
@@ -24357,6 +24713,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
GCB_Other,
GCB_Extend,
GCB_Other,
+ GCB_SpacingMark,
+ GCB_Other,
GCB_Extend,
GCB_SpacingMark,
GCB_Other,
@@ -24459,8 +24817,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
GCB_Extend,
GCB_Other,
GCB_Extend,
+ GCB_SpacingMark,
GCB_Other,
GCB_Extend,
+ GCB_SpacingMark,
GCB_Other,
GCB_Extend,
GCB_Other,
@@ -24478,6 +24838,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
GCB_Other,
GCB_Extend,
GCB_Control,
+ GCB_Extend,
GCB_Other,
GCB_Extend,
GCB_Other,
@@ -24565,8 +24926,6 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
GCB_Other,
GCB_Extend,
GCB_Other,
- GCB_Extend,
- GCB_Other,
GCB_Control,
GCB_Extend,
GCB_ZWJ,
@@ -25609,6 +25968,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
GCB_Other,
GCB_Extend,
GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
GCB_SpacingMark,
GCB_Extend,
GCB_SpacingMark,
@@ -25616,6 +25979,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
GCB_Extend,
GCB_Other,
GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_SpacingMark,
GCB_Other,
GCB_SpacingMark,
@@ -25625,6 +25992,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
GCB_Other,
GCB_Prepend,
GCB_Other,
+ GCB_Extend,
+ GCB_Other,
GCB_Prepend,
GCB_Other,
GCB_Extend,
@@ -25661,6 +26030,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
GCB_Extend,
GCB_Other,
GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_SpacingMark,
GCB_Extend,
GCB_Other,
@@ -25734,7 +26105,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
GCB_Extend,
GCB_Other,
GCB_Extend,
- GCB_SpacingMark,
+ GCB_Other,
GCB_Extend,
GCB_SpacingMark,
GCB_Extend,
@@ -25823,7 +26194,22 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
GCB_Extend,
GCB_SpacingMark,
GCB_Other,
+ GCB_Extend,
+ GCB_Prepend,
+ GCB_SpacingMark,
+ GCB_Other,
+ GCB_SpacingMark,
+ GCB_Extend,
+ GCB_Other,
+ GCB_SpacingMark,
+ GCB_Extend,
+ GCB_SpacingMark,
+ GCB_Extend,
+ GCB_Other,
GCB_Control,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_Other,
GCB_Extend,
GCB_Other,
@@ -25844,6 +26230,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
GCB_Control,
GCB_Other,
GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_SpacingMark,
GCB_Extend,
GCB_Other,
@@ -25888,6 +26278,12 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
GCB_Other,
GCB_Extend,
GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
GCB_ExtPict_XX,
GCB_Other,
GCB_ExtPict_XX,
@@ -25965,7 +26361,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
- 1806, /* Number of elements */
+ 1852, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -26038,7 +26434,11 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x890,
+ 0x892,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x903,
@@ -26149,6 +26549,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC45,
@@ -26181,6 +26583,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
0xCD7,
0xCE2,
0xCE4,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD02,
0xD04,
@@ -26229,7 +26633,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -26284,7 +26688,9 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
0x1360,
0x1712,
0x1715,
+ 0x1716,
0x1732,
+ 0x1734,
0x1735,
0x1752,
0x1754,
@@ -26303,6 +26709,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
0x180B,
0x180E,
0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -26337,7 +26744,7 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B05,
@@ -26388,8 +26795,6 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200B,
0x200C,
@@ -27431,14 +27836,22 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11001,
0x11002,
0x11003,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x11083,
@@ -27449,6 +27862,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x11100,
@@ -27484,6 +27899,8 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -27647,8 +28064,23 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
0x11EF3,
0x11EF5,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -27667,6 +28099,10 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D166,
0x1D167,
@@ -27704,10 +28140,16 @@ static const UV _Perl_GCB_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -27881,6 +28323,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
GCB_Other,
GCB_Extend,
GCB_Other,
+ GCB_Prepend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
GCB_Extend,
GCB_Prepend,
GCB_Extend,
@@ -27993,6 +28439,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
GCB_Extend,
GCB_Other,
GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_SpacingMark,
GCB_Other,
GCB_Extend,
@@ -28024,6 +28472,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
GCB_Other,
GCB_Extend,
GCB_Other,
+ GCB_SpacingMark,
+ GCB_Other,
GCB_Extend,
GCB_SpacingMark,
GCB_Other,
@@ -28126,8 +28576,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
GCB_Extend,
GCB_Other,
GCB_Extend,
+ GCB_SpacingMark,
GCB_Other,
GCB_Extend,
+ GCB_SpacingMark,
GCB_Other,
GCB_Extend,
GCB_Other,
@@ -28145,6 +28597,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
GCB_Other,
GCB_Extend,
GCB_Control,
+ GCB_Extend,
GCB_Other,
GCB_Extend,
GCB_Other,
@@ -28232,8 +28685,6 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
GCB_Other,
GCB_Extend,
GCB_Other,
- GCB_Extend,
- GCB_Other,
GCB_Control,
GCB_Extend,
GCB_ZWJ,
@@ -29276,6 +29727,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
GCB_Other,
GCB_Extend,
GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
GCB_SpacingMark,
GCB_Extend,
GCB_SpacingMark,
@@ -29283,6 +29738,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
GCB_Extend,
GCB_Other,
GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_SpacingMark,
GCB_Other,
GCB_SpacingMark,
@@ -29292,6 +29751,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
GCB_Other,
GCB_Prepend,
GCB_Other,
+ GCB_Extend,
+ GCB_Other,
GCB_Prepend,
GCB_Other,
GCB_Extend,
@@ -29328,6 +29789,8 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
GCB_Extend,
GCB_Other,
GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_SpacingMark,
GCB_Extend,
GCB_Other,
@@ -29401,7 +29864,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
GCB_Extend,
GCB_Other,
GCB_Extend,
- GCB_SpacingMark,
+ GCB_Other,
GCB_Extend,
GCB_SpacingMark,
GCB_Extend,
@@ -29490,7 +29953,22 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
GCB_Extend,
GCB_SpacingMark,
GCB_Other,
+ GCB_Extend,
+ GCB_Prepend,
+ GCB_SpacingMark,
+ GCB_Other,
+ GCB_SpacingMark,
+ GCB_Extend,
+ GCB_Other,
+ GCB_SpacingMark,
+ GCB_Extend,
+ GCB_SpacingMark,
+ GCB_Extend,
+ GCB_Other,
GCB_Control,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_Other,
GCB_Extend,
GCB_Other,
@@ -29511,6 +29989,10 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
GCB_Control,
GCB_Other,
GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
GCB_SpacingMark,
GCB_Extend,
GCB_Other,
@@ -29555,6 +30037,12 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
GCB_Other,
GCB_Extend,
GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
+ GCB_Extend,
+ GCB_Other,
GCB_ExtPict_XX,
GCB_Other,
GCB_ExtPict_XX,
@@ -29629,7 +30117,7 @@ static const GCB_enum _Perl_GCB_invmap[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV _Perl_IVCF_invlist[] = { /* for ASCII/Latin1 */
- 1318, /* Number of elements */
+ 1334, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -30593,7 +31081,7 @@ static const UV _Perl_IVCF_invlist[] = { /* for ASCII/Latin1 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -30924,12 +31412,20 @@ static const UV _Perl_IVCF_invlist[] = { /* for ASCII/Latin1 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -30943,6 +31439,14 @@ static const UV _Perl_IVCF_invlist[] = { /* for ASCII/Latin1 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -32501,12 +33005,20 @@ static const I32 _Perl_IVCF_invmap[] = { /* for ASCII/Latin1 */
0,
0xA7BE,
0,
+ 0xA7C0,
+ 0,
0xA7C2,
0,
0xA7C7,
0,
0xA7C9,
0,
+ 0xA7D0,
+ 0,
+ 0xA7D6,
+ 0,
+ 0xA7D8,
+ 0,
0xA7F5,
0,
0xA7B3,
@@ -32520,6 +33032,14 @@ static const I32 _Perl_IVCF_invmap[] = { /* for ASCII/Latin1 */
0,
0x104B0,
0,
+ 0x10570,
+ 0,
+ 0x1057C,
+ 0,
+ 0x1058C,
+ 0,
+ 0x10594,
+ 0,
0x10C80,
0,
0x118A0,
@@ -32542,7 +33062,7 @@ static const I32 _Perl_IVCF_invmap[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV _Perl_IVCF_invlist[] = { /* for EBCDIC 1047 */
- 1333, /* Number of elements */
+ 1349, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -33521,7 +34041,7 @@ static const UV _Perl_IVCF_invlist[] = { /* for EBCDIC 1047 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -33852,12 +34372,20 @@ static const UV _Perl_IVCF_invlist[] = { /* for EBCDIC 1047 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -33871,6 +34399,14 @@ static const UV _Perl_IVCF_invlist[] = { /* for EBCDIC 1047 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -35447,12 +35983,20 @@ static const I32 _Perl_IVCF_invmap[] = { /* for EBCDIC 1047 */
0,
0xA7BE,
0,
+ 0xA7C0,
+ 0,
0xA7C2,
0,
0xA7C7,
0,
0xA7C9,
0,
+ 0xA7D0,
+ 0,
+ 0xA7D6,
+ 0,
+ 0xA7D8,
+ 0,
0xA7F5,
0,
0xA7B3,
@@ -35466,6 +36010,14 @@ static const I32 _Perl_IVCF_invmap[] = { /* for EBCDIC 1047 */
0,
0x104B0,
0,
+ 0x10570,
+ 0,
+ 0x1057C,
+ 0,
+ 0x1058C,
+ 0,
+ 0x10594,
+ 0,
0x10C80,
0,
0x118A0,
@@ -35488,7 +36040,7 @@ static const I32 _Perl_IVCF_invmap[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV _Perl_IVCF_invlist[] = { /* for EBCDIC 037 */
- 1331, /* Number of elements */
+ 1347, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -36465,7 +37017,7 @@ static const UV _Perl_IVCF_invlist[] = { /* for EBCDIC 037 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -36796,12 +37348,20 @@ static const UV _Perl_IVCF_invlist[] = { /* for EBCDIC 037 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -36815,6 +37375,14 @@ static const UV _Perl_IVCF_invlist[] = { /* for EBCDIC 037 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -38389,12 +38957,20 @@ static const I32 _Perl_IVCF_invmap[] = { /* for EBCDIC 037 */
0,
0xA7BE,
0,
+ 0xA7C0,
+ 0,
0xA7C2,
0,
0xA7C7,
0,
0xA7C9,
0,
+ 0xA7D0,
+ 0,
+ 0xA7D6,
+ 0,
+ 0xA7D8,
+ 0,
0xA7F5,
0,
0xA7B3,
@@ -38408,6 +38984,14 @@ static const I32 _Perl_IVCF_invmap[] = { /* for EBCDIC 037 */
0,
0x104B0,
0,
+ 0x10570,
+ 0,
+ 0x1057C,
+ 0,
+ 0x1058C,
+ 0,
+ 0x10594,
+ 0,
0x10C80,
0,
0x118A0,
@@ -38427,7 +39011,7 @@ static const I32 _Perl_IVCF_invmap[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
- 2416, /* Number of elements */
+ 2539, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -38529,7 +39113,6 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x61B,
0x61C,
0x61D,
- 0x61E,
0x620,
0x64B,
0x660,
@@ -38576,7 +39159,9 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -38681,6 +39266,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0xBFA,
0xC00,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC45,
0xC46,
@@ -38712,6 +39299,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0xCE4,
0xCE6,
0xCF0,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD3B,
@@ -38760,7 +39349,7 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xF01,
@@ -38850,7 +39439,7 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x16EB,
0x16EE,
0x1712,
- 0x1715,
+ 0x1716,
0x1732,
0x1735,
0x1737,
@@ -38907,7 +39496,7 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x1A90,
0x1A9A,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
@@ -38919,6 +39508,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x1B61,
0x1B6B,
0x1B74,
+ 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1B83,
0x1BA1,
@@ -38947,8 +39538,10 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x1CF7,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
+ 0x1DCD,
+ 0x1DCE,
+ 0x1DFC,
+ 0x1DFD,
0x1E00,
0x1FFD,
0x1FFE,
@@ -39010,6 +39603,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x20BC,
0x20BE,
0x20BF,
+ 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2103,
@@ -39191,6 +39786,17 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x2E4D,
0x2E4E,
0x2E50,
+ 0x2E53,
+ 0x2E55,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
+ 0x2E5D,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -40376,8 +40982,12 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x10EAB,
0x10EAD,
0x10EAE,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11003,
0x11038,
@@ -40385,12 +40995,16 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x11049,
0x11066,
0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11083,
0x110B0,
0x110BB,
0x110BE,
0x110C2,
+ 0x110C3,
0x110F0,
0x110FA,
0x11100,
@@ -40429,6 +41043,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x1123D,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112A9,
0x112AA,
0x112DF,
@@ -40539,6 +41155,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x11A9E,
0x11AA1,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C2F,
0x11C37,
0x11C38,
@@ -40576,6 +41194,17 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x11DAA,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F45,
+ 0x11F50,
+ 0x11F5A,
0x11FDD,
0x11FE1,
0x11FFF,
@@ -40599,6 +41228,14 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x13437,
0x13438,
0x13439,
+ 0x1343C,
+ 0x1343D,
+ 0x1343E,
+ 0x1343F,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x145CE,
0x145CF,
0x145D0,
@@ -40606,6 +41243,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x16A6A,
0x16A6E,
0x16A70,
+ 0x16AC0,
+ 0x16ACA,
0x16AF0,
0x16AF5,
0x16AF6,
@@ -40636,9 +41275,13 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x18D00,
0x18D09,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -40647,6 +41290,10 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -40683,15 +41330,22 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
0x1E140,
0x1E14A,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -40705,14 +41359,36 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x1ECB0,
0x1ECB1,
0x1F000,
+ 0x1F02C,
+ 0x1F030,
+ 0x1F094,
+ 0x1F0A0,
+ 0x1F0AF,
+ 0x1F0B1,
+ 0x1F0C0,
+ 0x1F0C1,
+ 0x1F0D0,
+ 0x1F0D1,
+ 0x1F0F6,
0x1F100,
0x1F10D,
0x1F110,
0x1F16D,
0x1F170,
0x1F1AD,
+ 0x1F1AE,
0x1F1E6,
0x1F200,
+ 0x1F203,
+ 0x1F210,
+ 0x1F23C,
+ 0x1F240,
+ 0x1F249,
+ 0x1F250,
+ 0x1F252,
+ 0x1F260,
+ 0x1F266,
+ 0x1F300,
0x1F385,
0x1F386,
0x1F39C,
@@ -40791,10 +41467,22 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x1F6C1,
0x1F6CC,
0x1F6CD,
+ 0x1F6D8,
+ 0x1F6DC,
+ 0x1F6ED,
+ 0x1F6F0,
+ 0x1F6FD,
0x1F700,
0x1F774,
+ 0x1F777,
+ 0x1F77B,
0x1F780,
0x1F7D5,
+ 0x1F7DA,
+ 0x1F7E0,
+ 0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -40805,6 +41493,8 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x1F888,
0x1F890,
0x1F8AE,
+ 0x1F8B0,
+ 0x1F8B2,
0x1F900,
0x1F90C,
0x1F90D,
@@ -40832,6 +41522,23 @@ static const UV _Perl_LB_invlist[] = { /* for ASCII/Latin1 */
0x1F9DE,
0x1FA00,
0x1FA54,
+ 0x1FA60,
+ 0x1FA6E,
+ 0x1FA70,
+ 0x1FA7D,
+ 0x1FA80,
+ 0x1FA89,
+ 0x1FA90,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC3,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FBF0,
0x1FBFA,
@@ -40895,10 +41602,11 @@ typedef enum {
LB_Regional_Indicator = 34,
LB_Space = 35,
LB_Break_Symbols = 36,
- LB_Word_Joiner = 37,
- LB_ZWSpace = 38,
- LB_ZWJ = 39,
- LB_East_Asian_CP = 40
+ LB_Unassigned_Extended_Pictographic_Ideographic = 37,
+ LB_Word_Joiner = 38,
+ LB_ZWSpace = 39,
+ LB_ZWJ = 40,
+ LB_East_Asian_CP = 41
} LB_enum;
static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
@@ -40999,7 +41707,6 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Combining_Mark,
LB_Exclamation,
LB_Combining_Mark,
- LB_Alphabetic,
LB_Exclamation,
LB_Alphabetic,
LB_Combining_Mark,
@@ -41058,6 +41765,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Break_After,
LB_Numeric,
LB_Alphabetic,
@@ -41162,6 +41871,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
LB_Break_Before,
@@ -41197,6 +41908,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
LB_Postfix_Numeric,
@@ -41350,7 +42063,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Glue,
- LB_Alphabetic,
+ LB_Combining_Mark,
LB_Numeric,
LB_Alphabetic,
LB_Combining_Mark,
@@ -41390,6 +42103,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Break_After,
+ LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
@@ -41418,7 +42133,9 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
- LB_Alphabetic,
+ LB_Glue,
+ LB_Combining_Mark,
+ LB_Glue,
LB_Combining_Mark,
LB_Alphabetic,
LB_Break_Before,
@@ -41458,7 +42175,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Nonstarter,
LB_Alphabetic,
LB_Break_After,
- LB_Alphabetic,
+ LB_Postfix_Numeric,
LB_Break_After,
LB_Alphabetic,
LB_Break_After,
@@ -41481,6 +42198,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Prefix_Numeric,
LB_Postfix_Numeric,
LB_Prefix_Numeric,
+ LB_Postfix_Numeric,
+ LB_Prefix_Numeric,
LB_Combining_Mark,
LB_Alphabetic,
LB_Postfix_Numeric,
@@ -41662,6 +42381,17 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Alphabetic,
LB_Break_After,
LB_Alphabetic,
+ LB_Exclamation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Break_After,
+ LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
LB_Ideographic,
@@ -42852,15 +43582,23 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Break_After,
LB_Alphabetic,
LB_Numeric,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
LB_Break_After,
+ LB_Combining_Mark,
LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
@@ -42900,6 +43638,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Break_After,
LB_Alphabetic,
LB_Combining_Mark,
@@ -43010,6 +43750,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Break_Before,
LB_Break_After,
LB_Alphabetic,
+ LB_Break_Before,
+ LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
@@ -43047,6 +43789,17 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Break_After,
+ LB_Ideographic,
+ LB_Numeric,
+ LB_Alphabetic,
LB_Postfix_Numeric,
LB_Alphabetic,
LB_Break_After,
@@ -43069,6 +43822,14 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Glue,
LB_Open_Punctuation,
LB_Close_Punctuation,
+ LB_Glue,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Alphabetic,
LB_Open_Punctuation,
LB_Close_Punctuation,
@@ -43077,6 +43838,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Alphabetic,
LB_Break_After,
LB_Alphabetic,
+ LB_Numeric,
+ LB_Alphabetic,
LB_Combining_Mark,
LB_Break_After,
LB_Alphabetic,
@@ -43112,6 +43875,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Alphabetic,
LB_Nonstarter,
LB_Alphabetic,
+ LB_Nonstarter,
+ LB_Alphabetic,
+ LB_Nonstarter,
+ LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
LB_Combining_Mark,
@@ -43128,6 +43895,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
LB_Combining_Mark,
@@ -43156,14 +43927,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Numeric,
LB_Alphabetic,
LB_Prefix_Numeric,
LB_Alphabetic,
LB_Combining_Mark,
+ LB_Numeric,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
@@ -43176,14 +43954,36 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Postfix_Numeric,
LB_Alphabetic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Regional_Indicator,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
LB_E_Base,
LB_Ideographic,
LB_Alphabetic,
@@ -43262,20 +44062,34 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_Ideographic,
LB_E_Base,
LB_Ideographic,
- LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
- LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_Ideographic,
- LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
LB_Alphabetic,
LB_Ideographic,
- LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_E_Base,
LB_Ideographic,
@@ -43302,11 +44116,28 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
LB_E_Base,
LB_Ideographic,
LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_E_Base,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_E_Base,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
- LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
@@ -43332,7 +44163,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
- 2428, /* Number of elements */
+ 2551, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -43446,7 +44277,6 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x61B,
0x61C,
0x61D,
- 0x61E,
0x620,
0x64B,
0x660,
@@ -43493,7 +44323,9 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -43598,6 +44430,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0xBFA,
0xC00,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC45,
0xC46,
@@ -43629,6 +44463,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0xCE4,
0xCE6,
0xCF0,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD3B,
@@ -43677,7 +44513,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xF01,
@@ -43767,7 +44603,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x16EB,
0x16EE,
0x1712,
- 0x1715,
+ 0x1716,
0x1732,
0x1735,
0x1737,
@@ -43824,7 +44660,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x1A90,
0x1A9A,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
@@ -43836,6 +44672,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x1B61,
0x1B6B,
0x1B74,
+ 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1B83,
0x1BA1,
@@ -43864,8 +44702,10 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x1CF7,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
+ 0x1DCD,
+ 0x1DCE,
+ 0x1DFC,
+ 0x1DFD,
0x1E00,
0x1FFD,
0x1FFE,
@@ -43927,6 +44767,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x20BC,
0x20BE,
0x20BF,
+ 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2103,
@@ -44108,6 +44950,17 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x2E4D,
0x2E4E,
0x2E50,
+ 0x2E53,
+ 0x2E55,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
+ 0x2E5D,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -45293,8 +46146,12 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x10EAB,
0x10EAD,
0x10EAE,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11003,
0x11038,
@@ -45302,12 +46159,16 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x11049,
0x11066,
0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11083,
0x110B0,
0x110BB,
0x110BE,
0x110C2,
+ 0x110C3,
0x110F0,
0x110FA,
0x11100,
@@ -45346,6 +46207,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x1123D,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112A9,
0x112AA,
0x112DF,
@@ -45456,6 +46319,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x11A9E,
0x11AA1,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C2F,
0x11C37,
0x11C38,
@@ -45493,6 +46358,17 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x11DAA,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F45,
+ 0x11F50,
+ 0x11F5A,
0x11FDD,
0x11FE1,
0x11FFF,
@@ -45516,6 +46392,14 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x13437,
0x13438,
0x13439,
+ 0x1343C,
+ 0x1343D,
+ 0x1343E,
+ 0x1343F,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x145CE,
0x145CF,
0x145D0,
@@ -45523,6 +46407,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x16A6A,
0x16A6E,
0x16A70,
+ 0x16AC0,
+ 0x16ACA,
0x16AF0,
0x16AF5,
0x16AF6,
@@ -45553,9 +46439,13 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x18D00,
0x18D09,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -45564,6 +46454,10 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -45600,15 +46494,22 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
0x1E140,
0x1E14A,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -45622,14 +46523,36 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x1ECB0,
0x1ECB1,
0x1F000,
+ 0x1F02C,
+ 0x1F030,
+ 0x1F094,
+ 0x1F0A0,
+ 0x1F0AF,
+ 0x1F0B1,
+ 0x1F0C0,
+ 0x1F0C1,
+ 0x1F0D0,
+ 0x1F0D1,
+ 0x1F0F6,
0x1F100,
0x1F10D,
0x1F110,
0x1F16D,
0x1F170,
0x1F1AD,
+ 0x1F1AE,
0x1F1E6,
0x1F200,
+ 0x1F203,
+ 0x1F210,
+ 0x1F23C,
+ 0x1F240,
+ 0x1F249,
+ 0x1F250,
+ 0x1F252,
+ 0x1F260,
+ 0x1F266,
+ 0x1F300,
0x1F385,
0x1F386,
0x1F39C,
@@ -45708,10 +46631,22 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x1F6C1,
0x1F6CC,
0x1F6CD,
+ 0x1F6D8,
+ 0x1F6DC,
+ 0x1F6ED,
+ 0x1F6F0,
+ 0x1F6FD,
0x1F700,
0x1F774,
+ 0x1F777,
+ 0x1F77B,
0x1F780,
0x1F7D5,
+ 0x1F7DA,
+ 0x1F7E0,
+ 0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -45722,6 +46657,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x1F888,
0x1F890,
0x1F8AE,
+ 0x1F8B0,
+ 0x1F8B2,
0x1F900,
0x1F90C,
0x1F90D,
@@ -45749,6 +46686,23 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 1047 */
0x1F9DE,
0x1FA00,
0x1FA54,
+ 0x1FA60,
+ 0x1FA6E,
+ 0x1FA70,
+ 0x1FA7D,
+ 0x1FA80,
+ 0x1FA89,
+ 0x1FA90,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC3,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FBF0,
0x1FBFA,
@@ -45815,10 +46769,11 @@ typedef enum {
LB_Regional_Indicator = 34,
LB_Space = 35,
LB_Break_Symbols = 36,
- LB_Word_Joiner = 37,
- LB_ZWSpace = 38,
- LB_ZWJ = 39,
- LB_East_Asian_CP = 40
+ LB_Unassigned_Extended_Pictographic_Ideographic = 37,
+ LB_Word_Joiner = 38,
+ LB_ZWSpace = 39,
+ LB_ZWJ = 40,
+ LB_East_Asian_CP = 41
} LB_enum;
static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
@@ -45931,7 +46886,6 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Combining_Mark,
LB_Exclamation,
LB_Combining_Mark,
- LB_Alphabetic,
LB_Exclamation,
LB_Alphabetic,
LB_Combining_Mark,
@@ -45990,6 +46944,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Break_After,
LB_Numeric,
LB_Alphabetic,
@@ -46094,6 +47050,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
LB_Break_Before,
@@ -46129,6 +47087,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
LB_Postfix_Numeric,
@@ -46282,7 +47242,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Glue,
- LB_Alphabetic,
+ LB_Combining_Mark,
LB_Numeric,
LB_Alphabetic,
LB_Combining_Mark,
@@ -46322,6 +47282,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Break_After,
+ LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
@@ -46350,7 +47312,9 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
- LB_Alphabetic,
+ LB_Glue,
+ LB_Combining_Mark,
+ LB_Glue,
LB_Combining_Mark,
LB_Alphabetic,
LB_Break_Before,
@@ -46390,7 +47354,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Nonstarter,
LB_Alphabetic,
LB_Break_After,
- LB_Alphabetic,
+ LB_Postfix_Numeric,
LB_Break_After,
LB_Alphabetic,
LB_Break_After,
@@ -46413,6 +47377,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Prefix_Numeric,
LB_Postfix_Numeric,
LB_Prefix_Numeric,
+ LB_Postfix_Numeric,
+ LB_Prefix_Numeric,
LB_Combining_Mark,
LB_Alphabetic,
LB_Postfix_Numeric,
@@ -46594,6 +47560,17 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Alphabetic,
LB_Break_After,
LB_Alphabetic,
+ LB_Exclamation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Break_After,
+ LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
LB_Ideographic,
@@ -47784,15 +48761,23 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Break_After,
LB_Alphabetic,
LB_Numeric,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
LB_Break_After,
+ LB_Combining_Mark,
LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
@@ -47832,6 +48817,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Break_After,
LB_Alphabetic,
LB_Combining_Mark,
@@ -47942,6 +48929,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Break_Before,
LB_Break_After,
LB_Alphabetic,
+ LB_Break_Before,
+ LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
@@ -47979,6 +48968,17 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Break_After,
+ LB_Ideographic,
+ LB_Numeric,
+ LB_Alphabetic,
LB_Postfix_Numeric,
LB_Alphabetic,
LB_Break_After,
@@ -48001,6 +49001,14 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Glue,
LB_Open_Punctuation,
LB_Close_Punctuation,
+ LB_Glue,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Alphabetic,
LB_Open_Punctuation,
LB_Close_Punctuation,
@@ -48009,6 +49017,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Alphabetic,
LB_Break_After,
LB_Alphabetic,
+ LB_Numeric,
+ LB_Alphabetic,
LB_Combining_Mark,
LB_Break_After,
LB_Alphabetic,
@@ -48044,6 +49054,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Alphabetic,
LB_Nonstarter,
LB_Alphabetic,
+ LB_Nonstarter,
+ LB_Alphabetic,
+ LB_Nonstarter,
+ LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
LB_Combining_Mark,
@@ -48060,6 +49074,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
LB_Combining_Mark,
@@ -48088,14 +49106,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Numeric,
LB_Alphabetic,
LB_Prefix_Numeric,
LB_Alphabetic,
LB_Combining_Mark,
+ LB_Numeric,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
@@ -48108,14 +49133,36 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Postfix_Numeric,
LB_Alphabetic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Regional_Indicator,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
LB_E_Base,
LB_Ideographic,
LB_Alphabetic,
@@ -48194,20 +49241,34 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_Ideographic,
LB_E_Base,
LB_Ideographic,
- LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
- LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_Ideographic,
- LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
LB_Alphabetic,
LB_Ideographic,
- LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_E_Base,
LB_Ideographic,
@@ -48234,11 +49295,28 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
LB_E_Base,
LB_Ideographic,
LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
+ LB_E_Base,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_E_Base,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
- LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
@@ -48264,7 +49342,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
- 2428, /* Number of elements */
+ 2551, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -48378,7 +49456,6 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x61B,
0x61C,
0x61D,
- 0x61E,
0x620,
0x64B,
0x660,
@@ -48425,7 +49502,9 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -48530,6 +49609,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0xBFA,
0xC00,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC45,
0xC46,
@@ -48561,6 +49642,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0xCE4,
0xCE6,
0xCF0,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD3B,
@@ -48609,7 +49692,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xF01,
@@ -48699,7 +49782,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x16EB,
0x16EE,
0x1712,
- 0x1715,
+ 0x1716,
0x1732,
0x1735,
0x1737,
@@ -48756,7 +49839,7 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x1A90,
0x1A9A,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
@@ -48768,6 +49851,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x1B61,
0x1B6B,
0x1B74,
+ 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1B83,
0x1BA1,
@@ -48796,8 +49881,10 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x1CF7,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
+ 0x1DCD,
+ 0x1DCE,
+ 0x1DFC,
+ 0x1DFD,
0x1E00,
0x1FFD,
0x1FFE,
@@ -48859,6 +49946,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x20BC,
0x20BE,
0x20BF,
+ 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2103,
@@ -49040,6 +50129,17 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x2E4D,
0x2E4E,
0x2E50,
+ 0x2E53,
+ 0x2E55,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
+ 0x2E5D,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -50225,8 +51325,12 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x10EAB,
0x10EAD,
0x10EAE,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11003,
0x11038,
@@ -50234,12 +51338,16 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x11049,
0x11066,
0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11083,
0x110B0,
0x110BB,
0x110BE,
0x110C2,
+ 0x110C3,
0x110F0,
0x110FA,
0x11100,
@@ -50278,6 +51386,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x1123D,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112A9,
0x112AA,
0x112DF,
@@ -50388,6 +51498,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x11A9E,
0x11AA1,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C2F,
0x11C37,
0x11C38,
@@ -50425,6 +51537,17 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x11DAA,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F45,
+ 0x11F50,
+ 0x11F5A,
0x11FDD,
0x11FE1,
0x11FFF,
@@ -50448,6 +51571,14 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x13437,
0x13438,
0x13439,
+ 0x1343C,
+ 0x1343D,
+ 0x1343E,
+ 0x1343F,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x145CE,
0x145CF,
0x145D0,
@@ -50455,6 +51586,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x16A6A,
0x16A6E,
0x16A70,
+ 0x16AC0,
+ 0x16ACA,
0x16AF0,
0x16AF5,
0x16AF6,
@@ -50485,9 +51618,13 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x18D00,
0x18D09,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -50496,6 +51633,10 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -50532,15 +51673,22 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
0x1E140,
0x1E14A,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -50554,14 +51702,36 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x1ECB0,
0x1ECB1,
0x1F000,
+ 0x1F02C,
+ 0x1F030,
+ 0x1F094,
+ 0x1F0A0,
+ 0x1F0AF,
+ 0x1F0B1,
+ 0x1F0C0,
+ 0x1F0C1,
+ 0x1F0D0,
+ 0x1F0D1,
+ 0x1F0F6,
0x1F100,
0x1F10D,
0x1F110,
0x1F16D,
0x1F170,
0x1F1AD,
+ 0x1F1AE,
0x1F1E6,
0x1F200,
+ 0x1F203,
+ 0x1F210,
+ 0x1F23C,
+ 0x1F240,
+ 0x1F249,
+ 0x1F250,
+ 0x1F252,
+ 0x1F260,
+ 0x1F266,
+ 0x1F300,
0x1F385,
0x1F386,
0x1F39C,
@@ -50640,10 +51810,22 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x1F6C1,
0x1F6CC,
0x1F6CD,
+ 0x1F6D8,
+ 0x1F6DC,
+ 0x1F6ED,
+ 0x1F6F0,
+ 0x1F6FD,
0x1F700,
0x1F774,
+ 0x1F777,
+ 0x1F77B,
0x1F780,
0x1F7D5,
+ 0x1F7DA,
+ 0x1F7E0,
+ 0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -50654,6 +51836,8 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x1F888,
0x1F890,
0x1F8AE,
+ 0x1F8B0,
+ 0x1F8B2,
0x1F900,
0x1F90C,
0x1F90D,
@@ -50681,6 +51865,23 @@ static const UV _Perl_LB_invlist[] = { /* for EBCDIC 037 */
0x1F9DE,
0x1FA00,
0x1FA54,
+ 0x1FA60,
+ 0x1FA6E,
+ 0x1FA70,
+ 0x1FA7D,
+ 0x1FA80,
+ 0x1FA89,
+ 0x1FA90,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC3,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FBF0,
0x1FBFA,
@@ -50747,10 +51948,11 @@ typedef enum {
LB_Regional_Indicator = 34,
LB_Space = 35,
LB_Break_Symbols = 36,
- LB_Word_Joiner = 37,
- LB_ZWSpace = 38,
- LB_ZWJ = 39,
- LB_East_Asian_CP = 40
+ LB_Unassigned_Extended_Pictographic_Ideographic = 37,
+ LB_Word_Joiner = 38,
+ LB_ZWSpace = 39,
+ LB_ZWJ = 40,
+ LB_East_Asian_CP = 41
} LB_enum;
static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
@@ -50863,7 +52065,6 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Combining_Mark,
LB_Exclamation,
LB_Combining_Mark,
- LB_Alphabetic,
LB_Exclamation,
LB_Alphabetic,
LB_Combining_Mark,
@@ -50922,6 +52123,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Break_After,
LB_Numeric,
LB_Alphabetic,
@@ -51026,6 +52229,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
LB_Break_Before,
@@ -51061,6 +52266,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
LB_Postfix_Numeric,
@@ -51214,7 +52421,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Glue,
- LB_Alphabetic,
+ LB_Combining_Mark,
LB_Numeric,
LB_Alphabetic,
LB_Combining_Mark,
@@ -51254,6 +52461,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Break_After,
+ LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
@@ -51282,7 +52491,9 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
- LB_Alphabetic,
+ LB_Glue,
+ LB_Combining_Mark,
+ LB_Glue,
LB_Combining_Mark,
LB_Alphabetic,
LB_Break_Before,
@@ -51322,7 +52533,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Nonstarter,
LB_Alphabetic,
LB_Break_After,
- LB_Alphabetic,
+ LB_Postfix_Numeric,
LB_Break_After,
LB_Alphabetic,
LB_Break_After,
@@ -51345,6 +52556,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Prefix_Numeric,
LB_Postfix_Numeric,
LB_Prefix_Numeric,
+ LB_Postfix_Numeric,
+ LB_Prefix_Numeric,
LB_Combining_Mark,
LB_Alphabetic,
LB_Postfix_Numeric,
@@ -51526,6 +52739,17 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Alphabetic,
LB_Break_After,
LB_Alphabetic,
+ LB_Exclamation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Break_After,
+ LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
LB_Ideographic,
@@ -52716,15 +53940,23 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Break_After,
LB_Alphabetic,
LB_Numeric,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
LB_Break_After,
+ LB_Combining_Mark,
LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
@@ -52764,6 +53996,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Break_After,
LB_Alphabetic,
LB_Combining_Mark,
@@ -52874,6 +54108,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Break_Before,
LB_Break_After,
LB_Alphabetic,
+ LB_Break_Before,
+ LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
@@ -52911,6 +54147,17 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Break_After,
+ LB_Ideographic,
+ LB_Numeric,
+ LB_Alphabetic,
LB_Postfix_Numeric,
LB_Alphabetic,
LB_Break_After,
@@ -52933,6 +54180,14 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Glue,
LB_Open_Punctuation,
LB_Close_Punctuation,
+ LB_Glue,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Open_Punctuation,
+ LB_Close_Punctuation,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Alphabetic,
LB_Open_Punctuation,
LB_Close_Punctuation,
@@ -52941,6 +54196,8 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Alphabetic,
LB_Break_After,
LB_Alphabetic,
+ LB_Numeric,
+ LB_Alphabetic,
LB_Combining_Mark,
LB_Break_After,
LB_Alphabetic,
@@ -52976,6 +54233,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Alphabetic,
LB_Nonstarter,
LB_Alphabetic,
+ LB_Nonstarter,
+ LB_Alphabetic,
+ LB_Nonstarter,
+ LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
LB_Combining_Mark,
@@ -52992,6 +54253,10 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
LB_Combining_Mark,
@@ -53020,14 +54285,21 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
+ LB_Combining_Mark,
+ LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
LB_Combining_Mark,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Numeric,
LB_Alphabetic,
LB_Prefix_Numeric,
LB_Alphabetic,
LB_Combining_Mark,
+ LB_Numeric,
+ LB_Alphabetic,
+ LB_Combining_Mark,
LB_Alphabetic,
LB_Combining_Mark,
LB_Alphabetic,
@@ -53040,14 +54312,36 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Postfix_Numeric,
LB_Alphabetic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Regional_Indicator,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
LB_E_Base,
LB_Ideographic,
LB_Alphabetic,
@@ -53126,20 +54420,34 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_Ideographic,
LB_E_Base,
LB_Ideographic,
- LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
- LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_Ideographic,
- LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
LB_Alphabetic,
LB_Ideographic,
- LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_E_Base,
LB_Ideographic,
@@ -53166,11 +54474,28 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
LB_E_Base,
LB_Ideographic,
LB_Alphabetic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_E_Base,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
+ LB_E_Base,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_Numeric,
LB_Alphabetic,
- LB_Ideographic,
+ LB_Unassigned_Extended_Pictographic_Ideographic,
LB_Alphabetic,
LB_Ideographic,
LB_Alphabetic,
@@ -53193,7 +54518,7 @@ static const LB_enum _Perl_LB_invmap[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
- 3146, /* Number of elements */
+ 3262, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -53839,7 +55164,6 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x61B,
0x61C,
0x61D,
- 0x61E,
0x620,
0x64B,
0x660,
@@ -53907,11 +55231,15 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x85C,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -54105,6 +55433,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0xC29,
0xC2A,
0xC3A,
+ 0xC3C,
0xC3D,
0xC3E,
0xC45,
@@ -54116,6 +55445,8 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC64,
@@ -54144,7 +55475,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -54153,6 +55484,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0xCF0,
0xCF1,
0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD0D,
@@ -54233,7 +55565,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -54297,6 +55629,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x10D0,
0x10FB,
0x10FC,
+ 0x10FD,
0x1249,
0x124A,
0x124E,
@@ -54353,11 +55686,9 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1732,
0x1735,
0x1737,
@@ -54436,12 +55767,12 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x1AA8,
0x1AAC,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B5C,
@@ -54449,6 +55780,8 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x1B60,
0x1B6B,
0x1B74,
+ 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1B83,
0x1BA1,
@@ -54487,8 +55820,6 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x1CFB,
0x1D00,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x1E01,
0x1E02,
@@ -54897,9 +56228,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x29FC,
0x29FE,
0x2C00,
- 0x2C2F,
0x2C30,
- 0x2C5F,
0x2C60,
0x2C61,
0x2C62,
@@ -55068,6 +56397,9 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x2E3D,
0x2E42,
0x2E43,
+ 0x2E53,
+ 0x2E55,
+ 0x2E5D,
0x3000,
0x3001,
0x3002,
@@ -55107,8 +56439,6 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -55346,6 +56676,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
@@ -55353,6 +56684,18 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
+ 0xA7F2,
0xA7F5,
0xA7F6,
0xA7F7,
@@ -55459,7 +56802,6 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0xAB30,
0xAB5B,
0xAB5C,
- 0xAB69,
0xAB6A,
0xAB70,
0xABC0,
@@ -55633,12 +56975,36 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10781,
+ 0x10783,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -55719,6 +57085,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x10EAD,
0x10EB0,
0x10EB2,
+ 0x10EFD,
0x10F00,
0x10F1D,
0x10F27,
@@ -55728,6 +57095,10 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x10F51,
0x10F55,
0x10F5A,
+ 0x10F70,
+ 0x10F82,
+ 0x10F86,
+ 0x10F8A,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -55739,6 +57110,10 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x11049,
0x11066,
0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x1107F,
0x11083,
0x110B0,
@@ -55746,6 +57121,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x110BD,
0x110BE,
0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -55794,6 +57170,8 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x1123D,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -55894,6 +57272,8 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x1173A,
0x1173C,
0x1173F,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x1183B,
@@ -55955,7 +57335,7 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x11A9B,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -56009,6 +57389,19 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x11EF3,
0x11EF7,
0x11EF9,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F45,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -56017,10 +57410,14 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
0x13430,
- 0x13439,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -56031,6 +57428,9 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x16A6A,
0x16A6E,
0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -56076,10 +57476,20 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -56096,6 +57506,10 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -56213,6 +57627,12 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -56223,6 +57643,10 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -56232,10 +57656,25 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2C0,
0x1E2EC,
0x1E2F0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -56324,9 +57763,9 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -56337,6 +57776,8 @@ static const UV _Perl_SB_invlist[] = { /* for ASCII/Latin1 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -57014,7 +58455,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Extend,
SB_Other,
SB_Format,
- SB_Other,
SB_STerm,
SB_OLetter,
SB_Extend,
@@ -57087,6 +58527,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Format,
+ SB_Other,
+ SB_Extend,
+ SB_OLetter,
SB_Extend,
SB_Format,
SB_Extend,
@@ -57281,6 +58725,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Extend,
SB_OLetter,
SB_Extend,
SB_Other,
@@ -57293,6 +58738,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_OLetter,
SB_Other,
SB_OLetter,
+ SB_Other,
+ SB_OLetter,
SB_Extend,
SB_Other,
SB_Numeric,
@@ -57328,6 +58775,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Numeric,
SB_Other,
SB_OLetter,
+ SB_Extend,
SB_Other,
SB_Extend,
SB_OLetter,
@@ -57472,6 +58920,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Lower,
SB_OLetter,
SB_Other,
SB_OLetter,
@@ -57529,8 +58978,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_OLetter,
SB_Other,
SB_OLetter,
- SB_Other,
- SB_OLetter,
SB_Extend,
SB_Other,
SB_OLetter,
@@ -57564,7 +59011,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_Extend,
SB_Format,
- SB_Other,
+ SB_Extend,
SB_Numeric,
SB_Other,
SB_OLetter,
@@ -57625,6 +59072,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_Extend,
SB_Other,
+ SB_STerm,
+ SB_Other,
SB_Extend,
SB_OLetter,
SB_Extend,
@@ -57663,8 +59112,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_Lower,
SB_Extend,
- SB_Other,
- SB_Extend,
SB_Upper,
SB_Lower,
SB_Upper,
@@ -58073,9 +59520,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Close,
SB_Other,
SB_Upper,
- SB_Other,
SB_Lower,
- SB_Other,
SB_Upper,
SB_Lower,
SB_Upper,
@@ -58244,6 +59689,9 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_Close,
SB_Other,
+ SB_STerm,
+ SB_Close,
+ SB_Other,
SB_Sp,
SB_SContinue,
SB_STerm,
@@ -58286,8 +59734,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_OLetter,
SB_Other,
- SB_OLetter,
- SB_Other,
SB_STerm,
SB_OLetter,
SB_Other,
@@ -58521,14 +59967,27 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Lower,
SB_Upper,
SB_Lower,
+ SB_Upper,
+ SB_Lower,
+ SB_Upper,
+ SB_Lower,
+ SB_Upper,
+ SB_Lower,
+ SB_Upper,
+ SB_Lower,
SB_Other,
SB_Upper,
SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
SB_Upper,
SB_Lower,
SB_Upper,
SB_Lower,
SB_Other,
+ SB_Lower,
SB_Upper,
SB_Lower,
SB_OLetter,
@@ -58635,7 +60094,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Lower,
SB_Other,
SB_Lower,
- SB_OLetter,
SB_Other,
SB_Lower,
SB_OLetter,
@@ -58809,11 +60267,35 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Upper,
+ SB_Other,
+ SB_Upper,
+ SB_Other,
+ SB_Upper,
+ SB_Other,
+ SB_Upper,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
SB_OLetter,
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Lower,
SB_OLetter,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
SB_Other,
SB_OLetter,
SB_Other,
@@ -58895,6 +60377,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Extend,
SB_OLetter,
SB_Other,
SB_OLetter,
@@ -58905,6 +60388,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_STerm,
SB_Other,
SB_OLetter,
+ SB_Extend,
+ SB_STerm,
+ SB_Other,
+ SB_OLetter,
SB_Other,
SB_OLetter,
SB_Other,
@@ -58914,6 +60401,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_STerm,
SB_Other,
SB_Numeric,
+ SB_Extend,
+ SB_OLetter,
+ SB_Extend,
+ SB_OLetter,
SB_Other,
SB_Extend,
SB_OLetter,
@@ -58921,6 +60412,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_Format,
SB_STerm,
+ SB_Extend,
SB_Other,
SB_Format,
SB_Other,
@@ -58969,6 +60461,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_STerm,
SB_Other,
SB_Extend,
+ SB_OLetter,
+ SB_Extend,
SB_Other,
SB_OLetter,
SB_Other,
@@ -59071,6 +60565,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_STerm,
SB_Other,
SB_OLetter,
+ SB_Other,
+ SB_OLetter,
SB_Extend,
SB_Other,
SB_Upper,
@@ -59185,9 +60681,18 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Extend,
SB_STerm,
SB_Other,
+ SB_Extend,
+ SB_OLetter,
+ SB_Extend,
SB_OLetter,
SB_Other,
SB_OLetter,
+ SB_Extend,
+ SB_Other,
+ SB_Extend,
+ SB_STerm,
+ SB_Other,
+ SB_Numeric,
SB_Other,
SB_OLetter,
SB_Other,
@@ -59195,7 +60700,15 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
SB_Format,
+ SB_Extend,
+ SB_OLetter,
+ SB_Extend,
SB_Other,
SB_OLetter,
SB_Other,
@@ -59206,6 +60719,9 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Numeric,
SB_Other,
SB_STerm,
+ SB_OLetter,
+ SB_Other,
+ SB_Numeric,
SB_Other,
SB_OLetter,
SB_Other,
@@ -59268,6 +60784,16 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
SB_Extend,
SB_STerm,
SB_Format,
@@ -59275,6 +60801,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Extend,
SB_Other,
SB_Extend,
+ SB_Other,
+ SB_Extend,
+ SB_Other,
+ SB_Extend,
SB_Format,
SB_Extend,
SB_Other,
@@ -59389,6 +60919,14 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_Extend,
SB_Other,
+ SB_Lower,
+ SB_OLetter,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Extend,
+ SB_Other,
SB_Extend,
SB_Other,
SB_Extend,
@@ -59397,6 +60935,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_Extend,
SB_Other,
+ SB_Lower,
+ SB_Other,
SB_Extend,
SB_Other,
SB_OLetter,
@@ -59410,10 +60950,25 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_OLetter,
SB_Extend,
+ SB_Other,
+ SB_OLetter,
+ SB_Extend,
+ SB_Numeric,
+ SB_Other,
+ SB_OLetter,
+ SB_Extend,
SB_Numeric,
SB_Other,
SB_OLetter,
SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
SB_Extend,
SB_Other,
SB_Upper,
@@ -59513,6 +61068,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_OLetter,
+ SB_Other,
SB_Format,
SB_Other,
SB_Extend,
@@ -59533,7 +61090,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
- 3170, /* Number of elements */
+ 3286, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -60203,7 +61760,6 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x61B,
0x61C,
0x61D,
- 0x61E,
0x620,
0x64B,
0x660,
@@ -60271,11 +61827,15 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x85C,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -60469,6 +62029,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0xC29,
0xC2A,
0xC3A,
+ 0xC3C,
0xC3D,
0xC3E,
0xC45,
@@ -60480,6 +62041,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC64,
@@ -60508,7 +62071,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -60517,6 +62080,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0xCF0,
0xCF1,
0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD0D,
@@ -60597,7 +62161,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -60661,6 +62225,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x10D0,
0x10FB,
0x10FC,
+ 0x10FD,
0x1249,
0x124A,
0x124E,
@@ -60717,11 +62282,9 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1732,
0x1735,
0x1737,
@@ -60800,12 +62363,12 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x1AA8,
0x1AAC,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B5C,
@@ -60813,6 +62376,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x1B60,
0x1B6B,
0x1B74,
+ 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1B83,
0x1BA1,
@@ -60851,8 +62416,6 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x1CFB,
0x1D00,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x1E01,
0x1E02,
@@ -61261,9 +62824,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x29FC,
0x29FE,
0x2C00,
- 0x2C2F,
0x2C30,
- 0x2C5F,
0x2C60,
0x2C61,
0x2C62,
@@ -61432,6 +62993,9 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x2E3D,
0x2E42,
0x2E43,
+ 0x2E53,
+ 0x2E55,
+ 0x2E5D,
0x3000,
0x3001,
0x3002,
@@ -61471,8 +63035,6 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -61710,6 +63272,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
@@ -61717,6 +63280,18 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
+ 0xA7F2,
0xA7F5,
0xA7F6,
0xA7F7,
@@ -61823,7 +63398,6 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0xAB30,
0xAB5B,
0xAB5C,
- 0xAB69,
0xAB6A,
0xAB70,
0xABC0,
@@ -61997,12 +63571,36 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10781,
+ 0x10783,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -62083,6 +63681,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x10EAD,
0x10EB0,
0x10EB2,
+ 0x10EFD,
0x10F00,
0x10F1D,
0x10F27,
@@ -62092,6 +63691,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x10F51,
0x10F55,
0x10F5A,
+ 0x10F70,
+ 0x10F82,
+ 0x10F86,
+ 0x10F8A,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -62103,6 +63706,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x11049,
0x11066,
0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x1107F,
0x11083,
0x110B0,
@@ -62110,6 +63717,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x110BD,
0x110BE,
0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -62158,6 +63766,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x1123D,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -62258,6 +63868,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x1173A,
0x1173C,
0x1173F,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x1183B,
@@ -62319,7 +63931,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x11A9B,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -62373,6 +63985,19 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x11EF3,
0x11EF7,
0x11EF9,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F45,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -62381,10 +64006,14 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
0x13430,
- 0x13439,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -62395,6 +64024,9 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x16A6A,
0x16A6E,
0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -62440,10 +64072,20 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -62460,6 +64102,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -62577,6 +64223,12 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -62587,6 +64239,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -62596,10 +64252,25 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2C0,
0x1E2EC,
0x1E2F0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -62688,9 +64359,9 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -62701,6 +64372,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 1047 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -63405,7 +65078,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Extend,
SB_Other,
SB_Format,
- SB_Other,
SB_STerm,
SB_OLetter,
SB_Extend,
@@ -63478,6 +65150,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Format,
+ SB_Other,
+ SB_Extend,
+ SB_OLetter,
SB_Extend,
SB_Format,
SB_Extend,
@@ -63672,6 +65348,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Extend,
SB_OLetter,
SB_Extend,
SB_Other,
@@ -63684,6 +65361,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_OLetter,
SB_Other,
SB_OLetter,
+ SB_Other,
+ SB_OLetter,
SB_Extend,
SB_Other,
SB_Numeric,
@@ -63719,6 +65398,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Numeric,
SB_Other,
SB_OLetter,
+ SB_Extend,
SB_Other,
SB_Extend,
SB_OLetter,
@@ -63863,6 +65543,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Lower,
SB_OLetter,
SB_Other,
SB_OLetter,
@@ -63920,8 +65601,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_OLetter,
SB_Other,
SB_OLetter,
- SB_Other,
- SB_OLetter,
SB_Extend,
SB_Other,
SB_OLetter,
@@ -63955,7 +65634,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_Extend,
SB_Format,
- SB_Other,
+ SB_Extend,
SB_Numeric,
SB_Other,
SB_OLetter,
@@ -64016,6 +65695,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_Extend,
SB_Other,
+ SB_STerm,
+ SB_Other,
SB_Extend,
SB_OLetter,
SB_Extend,
@@ -64054,8 +65735,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_Lower,
SB_Extend,
- SB_Other,
- SB_Extend,
SB_Upper,
SB_Lower,
SB_Upper,
@@ -64464,9 +66143,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Close,
SB_Other,
SB_Upper,
- SB_Other,
SB_Lower,
- SB_Other,
SB_Upper,
SB_Lower,
SB_Upper,
@@ -64635,6 +66312,9 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_Close,
SB_Other,
+ SB_STerm,
+ SB_Close,
+ SB_Other,
SB_Sp,
SB_SContinue,
SB_STerm,
@@ -64677,8 +66357,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_OLetter,
SB_Other,
- SB_OLetter,
- SB_Other,
SB_STerm,
SB_OLetter,
SB_Other,
@@ -64912,14 +66590,27 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Lower,
SB_Upper,
SB_Lower,
+ SB_Upper,
+ SB_Lower,
+ SB_Upper,
+ SB_Lower,
+ SB_Upper,
+ SB_Lower,
+ SB_Upper,
+ SB_Lower,
SB_Other,
SB_Upper,
SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
SB_Upper,
SB_Lower,
SB_Upper,
SB_Lower,
SB_Other,
+ SB_Lower,
SB_Upper,
SB_Lower,
SB_OLetter,
@@ -65026,7 +66717,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Lower,
SB_Other,
SB_Lower,
- SB_OLetter,
SB_Other,
SB_Lower,
SB_OLetter,
@@ -65200,11 +66890,35 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Upper,
+ SB_Other,
+ SB_Upper,
+ SB_Other,
+ SB_Upper,
+ SB_Other,
+ SB_Upper,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
SB_OLetter,
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Lower,
SB_OLetter,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
SB_Other,
SB_OLetter,
SB_Other,
@@ -65286,6 +67000,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Extend,
SB_OLetter,
SB_Other,
SB_OLetter,
@@ -65296,6 +67011,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_STerm,
SB_Other,
SB_OLetter,
+ SB_Extend,
+ SB_STerm,
+ SB_Other,
+ SB_OLetter,
SB_Other,
SB_OLetter,
SB_Other,
@@ -65305,6 +67024,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_STerm,
SB_Other,
SB_Numeric,
+ SB_Extend,
+ SB_OLetter,
+ SB_Extend,
+ SB_OLetter,
SB_Other,
SB_Extend,
SB_OLetter,
@@ -65312,6 +67035,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_Format,
SB_STerm,
+ SB_Extend,
SB_Other,
SB_Format,
SB_Other,
@@ -65360,6 +67084,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_STerm,
SB_Other,
SB_Extend,
+ SB_OLetter,
+ SB_Extend,
SB_Other,
SB_OLetter,
SB_Other,
@@ -65462,6 +67188,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_STerm,
SB_Other,
SB_OLetter,
+ SB_Other,
+ SB_OLetter,
SB_Extend,
SB_Other,
SB_Upper,
@@ -65576,9 +67304,20 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Extend,
SB_STerm,
SB_Other,
+ SB_Extend,
+ SB_OLetter,
+ SB_Extend,
SB_OLetter,
SB_Other,
SB_OLetter,
+ SB_Extend,
+ SB_Other,
+ SB_Extend,
+ SB_STerm,
+ SB_Other,
+ SB_Numeric,
+ SB_Other,
+ SB_OLetter,
SB_Other,
SB_OLetter,
SB_Other,
@@ -65586,7 +67325,13 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
SB_Format,
+ SB_Extend,
+ SB_OLetter,
+ SB_Extend,
SB_Other,
SB_OLetter,
SB_Other,
@@ -65597,6 +67342,9 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Numeric,
SB_Other,
SB_STerm,
+ SB_OLetter,
+ SB_Other,
+ SB_Numeric,
SB_Other,
SB_OLetter,
SB_Other,
@@ -65659,6 +67407,16 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
SB_Extend,
SB_STerm,
SB_Format,
@@ -65666,6 +67424,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Extend,
SB_Other,
SB_Extend,
+ SB_Other,
+ SB_Extend,
+ SB_Other,
+ SB_Extend,
SB_Format,
SB_Extend,
SB_Other,
@@ -65780,6 +67542,12 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_Extend,
SB_Other,
+ SB_Lower,
+ SB_OLetter,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
SB_Extend,
SB_Other,
SB_Extend,
@@ -65790,6 +67558,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_Extend,
SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Extend,
+ SB_Other,
SB_OLetter,
SB_Other,
SB_Extend,
@@ -65801,10 +67573,25 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_OLetter,
SB_Extend,
+ SB_Other,
+ SB_OLetter,
+ SB_Extend,
+ SB_Numeric,
+ SB_Other,
+ SB_OLetter,
+ SB_Extend,
SB_Numeric,
SB_Other,
SB_OLetter,
SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
SB_Extend,
SB_Other,
SB_Upper,
@@ -65904,6 +67691,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_OLetter,
+ SB_Other,
SB_Format,
SB_Other,
SB_Extend,
@@ -65924,7 +67713,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
- 3166, /* Number of elements */
+ 3282, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -66590,7 +68379,6 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x61B,
0x61C,
0x61D,
- 0x61E,
0x620,
0x64B,
0x660,
@@ -66658,11 +68446,15 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x85C,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -66856,6 +68648,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0xC29,
0xC2A,
0xC3A,
+ 0xC3C,
0xC3D,
0xC3E,
0xC45,
@@ -66867,6 +68660,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC64,
@@ -66895,7 +68690,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -66904,6 +68699,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0xCF0,
0xCF1,
0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD0D,
@@ -66984,7 +68780,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -67048,6 +68844,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x10D0,
0x10FB,
0x10FC,
+ 0x10FD,
0x1249,
0x124A,
0x124E,
@@ -67104,11 +68901,9 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1732,
0x1735,
0x1737,
@@ -67187,12 +68982,12 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x1AA8,
0x1AAC,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B5C,
@@ -67200,6 +68995,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x1B60,
0x1B6B,
0x1B74,
+ 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1B83,
0x1BA1,
@@ -67238,8 +69035,6 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x1CFB,
0x1D00,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x1E01,
0x1E02,
@@ -67648,9 +69443,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x29FC,
0x29FE,
0x2C00,
- 0x2C2F,
0x2C30,
- 0x2C5F,
0x2C60,
0x2C61,
0x2C62,
@@ -67819,6 +69612,9 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x2E3D,
0x2E42,
0x2E43,
+ 0x2E53,
+ 0x2E55,
+ 0x2E5D,
0x3000,
0x3001,
0x3002,
@@ -67858,8 +69654,6 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -68097,6 +69891,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
@@ -68104,6 +69899,18 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
+ 0xA7F2,
0xA7F5,
0xA7F6,
0xA7F7,
@@ -68210,7 +70017,6 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0xAB30,
0xAB5B,
0xAB5C,
- 0xAB69,
0xAB6A,
0xAB70,
0xABC0,
@@ -68384,12 +70190,36 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10781,
+ 0x10783,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -68470,6 +70300,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x10EAD,
0x10EB0,
0x10EB2,
+ 0x10EFD,
0x10F00,
0x10F1D,
0x10F27,
@@ -68479,6 +70310,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x10F51,
0x10F55,
0x10F5A,
+ 0x10F70,
+ 0x10F82,
+ 0x10F86,
+ 0x10F8A,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -68490,6 +70325,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x11049,
0x11066,
0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x1107F,
0x11083,
0x110B0,
@@ -68497,6 +70336,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x110BD,
0x110BE,
0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -68545,6 +70385,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x1123D,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -68645,6 +70487,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x1173A,
0x1173C,
0x1173F,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x1183B,
@@ -68706,7 +70550,7 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x11A9B,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -68760,6 +70604,19 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x11EF3,
0x11EF7,
0x11EF9,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F45,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -68768,10 +70625,14 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
0x13430,
- 0x13439,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -68782,6 +70643,9 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x16A6A,
0x16A6E,
0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -68827,10 +70691,20 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -68847,6 +70721,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -68964,6 +70842,12 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -68974,6 +70858,10 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -68983,10 +70871,25 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2C0,
0x1E2EC,
0x1E2F0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -69075,9 +70978,9 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -69088,6 +70991,8 @@ static const UV _Perl_SB_invlist[] = { /* for EBCDIC 037 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -69788,7 +71693,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Extend,
SB_Other,
SB_Format,
- SB_Other,
SB_STerm,
SB_OLetter,
SB_Extend,
@@ -69861,6 +71765,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Format,
+ SB_Other,
+ SB_Extend,
+ SB_OLetter,
SB_Extend,
SB_Format,
SB_Extend,
@@ -70055,6 +71963,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Extend,
SB_OLetter,
SB_Extend,
SB_Other,
@@ -70067,6 +71976,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_OLetter,
SB_Other,
SB_OLetter,
+ SB_Other,
+ SB_OLetter,
SB_Extend,
SB_Other,
SB_Numeric,
@@ -70102,6 +72013,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Numeric,
SB_Other,
SB_OLetter,
+ SB_Extend,
SB_Other,
SB_Extend,
SB_OLetter,
@@ -70246,6 +72158,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Lower,
SB_OLetter,
SB_Other,
SB_OLetter,
@@ -70303,8 +72216,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_OLetter,
SB_Other,
SB_OLetter,
- SB_Other,
- SB_OLetter,
SB_Extend,
SB_Other,
SB_OLetter,
@@ -70338,7 +72249,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_Extend,
SB_Format,
- SB_Other,
+ SB_Extend,
SB_Numeric,
SB_Other,
SB_OLetter,
@@ -70399,6 +72310,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_Extend,
SB_Other,
+ SB_STerm,
+ SB_Other,
SB_Extend,
SB_OLetter,
SB_Extend,
@@ -70437,8 +72350,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_Lower,
SB_Extend,
- SB_Other,
- SB_Extend,
SB_Upper,
SB_Lower,
SB_Upper,
@@ -70847,9 +72758,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Close,
SB_Other,
SB_Upper,
- SB_Other,
SB_Lower,
- SB_Other,
SB_Upper,
SB_Lower,
SB_Upper,
@@ -71018,6 +72927,9 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_Close,
SB_Other,
+ SB_STerm,
+ SB_Close,
+ SB_Other,
SB_Sp,
SB_SContinue,
SB_STerm,
@@ -71060,8 +72972,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_OLetter,
SB_Other,
- SB_OLetter,
- SB_Other,
SB_STerm,
SB_OLetter,
SB_Other,
@@ -71295,14 +73205,27 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Lower,
SB_Upper,
SB_Lower,
+ SB_Upper,
+ SB_Lower,
+ SB_Upper,
+ SB_Lower,
+ SB_Upper,
+ SB_Lower,
+ SB_Upper,
+ SB_Lower,
SB_Other,
SB_Upper,
SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
SB_Upper,
SB_Lower,
SB_Upper,
SB_Lower,
SB_Other,
+ SB_Lower,
SB_Upper,
SB_Lower,
SB_OLetter,
@@ -71409,7 +73332,6 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Lower,
SB_Other,
SB_Lower,
- SB_OLetter,
SB_Other,
SB_Lower,
SB_OLetter,
@@ -71583,12 +73505,36 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Upper,
+ SB_Other,
+ SB_Upper,
+ SB_Other,
+ SB_Upper,
+ SB_Other,
+ SB_Upper,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
SB_OLetter,
SB_Other,
SB_OLetter,
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Lower,
+ SB_OLetter,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
SB_OLetter,
SB_Other,
SB_OLetter,
@@ -71669,6 +73615,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_Extend,
SB_OLetter,
SB_Other,
SB_OLetter,
@@ -71679,6 +73626,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_STerm,
SB_Other,
SB_OLetter,
+ SB_Extend,
+ SB_STerm,
+ SB_Other,
+ SB_OLetter,
SB_Other,
SB_OLetter,
SB_Other,
@@ -71688,6 +73639,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_STerm,
SB_Other,
SB_Numeric,
+ SB_Extend,
+ SB_OLetter,
+ SB_Extend,
+ SB_OLetter,
SB_Other,
SB_Extend,
SB_OLetter,
@@ -71695,6 +73650,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_Format,
SB_STerm,
+ SB_Extend,
SB_Other,
SB_Format,
SB_Other,
@@ -71743,6 +73699,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_STerm,
SB_Other,
SB_Extend,
+ SB_OLetter,
+ SB_Extend,
SB_Other,
SB_OLetter,
SB_Other,
@@ -71845,6 +73803,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_STerm,
SB_Other,
SB_OLetter,
+ SB_Other,
+ SB_OLetter,
SB_Extend,
SB_Other,
SB_Upper,
@@ -71959,9 +73919,18 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Extend,
SB_STerm,
SB_Other,
+ SB_Extend,
+ SB_OLetter,
+ SB_Extend,
SB_OLetter,
SB_Other,
SB_OLetter,
+ SB_Extend,
+ SB_Other,
+ SB_Extend,
+ SB_STerm,
+ SB_Other,
+ SB_Numeric,
SB_Other,
SB_OLetter,
SB_Other,
@@ -71969,7 +73938,15 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
SB_Format,
+ SB_Extend,
+ SB_OLetter,
+ SB_Extend,
SB_Other,
SB_OLetter,
SB_Other,
@@ -71980,6 +73957,9 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Numeric,
SB_Other,
SB_STerm,
+ SB_OLetter,
+ SB_Other,
+ SB_Numeric,
SB_Other,
SB_OLetter,
SB_Other,
@@ -72042,6 +74022,16 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
SB_Extend,
SB_STerm,
SB_Format,
@@ -72049,6 +74039,10 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Extend,
SB_Other,
SB_Extend,
+ SB_Other,
+ SB_Extend,
+ SB_Other,
+ SB_Extend,
SB_Format,
SB_Extend,
SB_Other,
@@ -72163,6 +74157,14 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_Extend,
SB_Other,
+ SB_Lower,
+ SB_OLetter,
+ SB_Lower,
+ SB_Other,
+ SB_Lower,
+ SB_Other,
+ SB_Extend,
+ SB_Other,
SB_Extend,
SB_Other,
SB_Extend,
@@ -72171,6 +74173,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_Extend,
SB_Other,
+ SB_Lower,
+ SB_Other,
SB_Extend,
SB_Other,
SB_OLetter,
@@ -72184,10 +74188,25 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_OLetter,
SB_Extend,
+ SB_Other,
+ SB_OLetter,
+ SB_Extend,
+ SB_Numeric,
+ SB_Other,
+ SB_OLetter,
+ SB_Extend,
SB_Numeric,
SB_Other,
SB_OLetter,
SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
+ SB_OLetter,
+ SB_Other,
SB_Extend,
SB_Other,
SB_Upper,
@@ -72287,6 +74306,8 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
SB_Other,
SB_OLetter,
SB_Other,
+ SB_OLetter,
+ SB_Other,
SB_Format,
SB_Other,
SB_Extend,
@@ -72304,7 +74325,7 @@ static const SB_enum _Perl_SB_invmap[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
- 1673, /* Number of elements */
+ 1750, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -72381,7 +74402,6 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x61B,
0x61C,
0x61D,
- 0x61E,
0x61F,
0x620,
0x640,
@@ -72417,11 +74437,11 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x8E2,
0x8E3,
0x900,
@@ -72593,7 +74613,7 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -72603,6 +74623,8 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -72626,14 +74648,14 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -72694,7 +74716,7 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -72774,9 +74796,8 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
+ 0x1716,
+ 0x171F,
0x1720,
0x1735,
0x1737,
@@ -72799,8 +74820,6 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x1804,
0x1805,
0x1806,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -72843,11 +74862,11 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BC0,
0x1BF4,
@@ -72959,7 +74978,7 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F0,
0x20F1,
@@ -72987,9 +75006,6 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x2B96,
0x2B97,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
0x2C60,
0x2C80,
0x2CF4,
@@ -73027,7 +75043,7 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x2E00,
0x2E43,
0x2E44,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -73099,7 +75115,6 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
0xA000,
0xA48D,
0xA490,
@@ -73117,10 +75132,14 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA788,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA800,
0xA82D,
0xA830,
@@ -73215,14 +75234,15 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0xFB45,
0xFB46,
0xFB50,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
0xFD3E,
0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
0xFDF2,
0xFDF3,
@@ -73288,6 +75308,7 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x10080,
0x100FB,
0x10100,
+ 0x10102,
0x10103,
0x10107,
0x10134,
@@ -73337,12 +75358,33 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x10564,
0x1056F,
0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -73402,6 +75444,8 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x10AC0,
0x10AE7,
0x10AEB,
+ 0x10AF2,
+ 0x10AF3,
0x10AF7,
0x10B00,
0x10B36,
@@ -73437,10 +75481,13 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x10EAE,
0x10EB0,
0x10EB2,
+ 0x10EFD,
0x10F00,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -73448,10 +75495,10 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
0x11080,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -73471,7 +75518,7 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -73539,7 +75586,7 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -73547,7 +75594,7 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -73579,8 +75626,11 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x11A48,
0x11A50,
0x11AA3,
+ 0x11AB0,
0x11AC0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -73623,6 +75673,12 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -73640,10 +75696,10 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -73654,6 +75710,9 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x16A6A,
0x16A6E,
0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -73690,11 +75749,22 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
0x1B001,
- 0x1B11F,
+ 0x1B120,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -73709,6 +75779,12 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -73722,9 +75798,11 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -73779,6 +75857,10 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -73789,6 +75871,10 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -73797,10 +75883,22 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -73911,16 +76009,18 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -73934,27 +76034,23 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -73962,9 +76058,9 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -73975,6 +76071,8 @@ static const UV _Perl_SCX_invlist[] = { /* for ASCII/Latin1 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -74023,138 +76121,145 @@ typedef enum {
SCX_Coptic = 26,
SCX_Cuneiform = 27,
SCX_Cypriot = 28,
- SCX_Cyrillic = 29,
- SCX_Deseret = 30,
- SCX_Devanagari = 31,
- SCX_Dives_Akuru = 32,
- SCX_Dogra = 33,
- SCX_Duployan = 34,
- SCX_Egyptian_Hieroglyphs = 35,
- SCX_Elbasan = 36,
- SCX_Elymaic = 37,
- SCX_Ethiopic = 38,
- SCX_Georgian = 39,
- SCX_Glagolitic = 40,
- SCX_Gothic = 41,
- SCX_Grantha = 42,
- SCX_Greek = 43,
- SCX_Gujarati = 44,
- SCX_Gunjala_Gondi = 45,
- SCX_Gurmukhi = 46,
- SCX_Han = 47,
- SCX_Hanb = 48,
- SCX_Hangul = 49,
- SCX_Hanifi_Rohingya = 50,
- SCX_Hanunoo = 51,
- SCX_Hatran = 52,
- SCX_Hebrew = 53,
- SCX_Hiragana = 54,
- SCX_Imperial_Aramaic = 55,
- SCX_Inherited = 56,
- SCX_Inscriptional_Pahlavi = 57,
- SCX_Inscriptional_Parthian = 58,
- SCX_INVALID = 59,
- SCX_Javanese = 60,
- SCX_Jpan = 61,
- SCX_Kaithi = 62,
- SCX_Kannada = 63,
- SCX_Katakana = 64,
- SCX_Kayah_Li = 65,
- SCX_Kharoshthi = 66,
- SCX_Khitan_Small_Script = 67,
- SCX_Khmer = 68,
- SCX_Khojki = 69,
- SCX_Khudawadi = 70,
- SCX_Kore = 71,
- SCX_Lao = 72,
- SCX_Latin = 73,
- SCX_Lepcha = 74,
- SCX_Limbu = 75,
- SCX_Linear_A = 76,
- SCX_Linear_B = 77,
- SCX_Lisu = 78,
- SCX_Lycian = 79,
- SCX_Lydian = 80,
- SCX_Mahajani = 81,
- SCX_Makasar = 82,
- SCX_Malayalam = 83,
- SCX_Mandaic = 84,
- SCX_Manichaean = 85,
- SCX_Marchen = 86,
- SCX_Masaram_Gondi = 87,
- SCX_Medefaidrin = 88,
- SCX_Meetei_Mayek = 89,
- SCX_Mende_Kikakui = 90,
- SCX_Meroitic_Cursive = 91,
- SCX_Meroitic_Hieroglyphs = 92,
- SCX_Miao = 93,
- SCX_Modi = 94,
- SCX_Mongolian = 95,
- SCX_Mro = 96,
- SCX_Multani = 97,
- SCX_Myanmar = 98,
- SCX_Nabataean = 99,
- SCX_Nandinagari = 100,
- SCX_New_Tai_Lue = 101,
- SCX_Newa = 102,
- SCX_Nko = 103,
- SCX_Nushu = 104,
- SCX_Nyiakeng_Puachue_Hmong = 105,
- SCX_Ogham = 106,
- SCX_Ol_Chiki = 107,
- SCX_Old_Hungarian = 108,
- SCX_Old_Italic = 109,
- SCX_Old_North_Arabian = 110,
- SCX_Old_Permic = 111,
- SCX_Old_Persian = 112,
- SCX_Old_Sogdian = 113,
- SCX_Old_South_Arabian = 114,
- SCX_Old_Turkic = 115,
- SCX_Oriya = 116,
- SCX_Osage = 117,
- SCX_Osmanya = 118,
- SCX_Pahawh_Hmong = 119,
- SCX_Palmyrene = 120,
- SCX_Pau_Cin_Hau = 121,
- SCX_Phags_Pa = 122,
- SCX_Phoenician = 123,
- SCX_Psalter_Pahlavi = 124,
- SCX_Rejang = 125,
- SCX_Runic = 126,
- SCX_Samaritan = 127,
- SCX_Saurashtra = 128,
- SCX_Sharada = 129,
- SCX_Shavian = 130,
- SCX_Siddham = 131,
- SCX_SignWriting = 132,
- SCX_Sinhala = 133,
- SCX_Sogdian = 134,
- SCX_Sora_Sompeng = 135,
- SCX_Soyombo = 136,
- SCX_Sundanese = 137,
- SCX_Syloti_Nagri = 138,
- SCX_Syriac = 139,
- SCX_Tagalog = 140,
- SCX_Tagbanwa = 141,
- SCX_Tai_Le = 142,
- SCX_Tai_Tham = 143,
- SCX_Tai_Viet = 144,
- SCX_Takri = 145,
- SCX_Tamil = 146,
- SCX_Tangut = 147,
- SCX_Telugu = 148,
- SCX_Thaana = 149,
- SCX_Thai = 150,
- SCX_Tibetan = 151,
- SCX_Tifinagh = 152,
- SCX_Tirhuta = 153,
- SCX_Ugaritic = 154,
- SCX_Vai = 155,
- SCX_Wancho = 156,
- SCX_Warang_Citi = 157,
- SCX_Yezidi = 158,
- SCX_Yi = 159,
- SCX_Zanabazar_Square = 160,
+ SCX_Cypro_Minoan = 29,
+ SCX_Cyrillic = 30,
+ SCX_Deseret = 31,
+ SCX_Devanagari = 32,
+ SCX_Dives_Akuru = 33,
+ SCX_Dogra = 34,
+ SCX_Duployan = 35,
+ SCX_Egyptian_Hieroglyphs = 36,
+ SCX_Elbasan = 37,
+ SCX_Elymaic = 38,
+ SCX_Ethiopic = 39,
+ SCX_Georgian = 40,
+ SCX_Glagolitic = 41,
+ SCX_Gothic = 42,
+ SCX_Grantha = 43,
+ SCX_Greek = 44,
+ SCX_Gujarati = 45,
+ SCX_Gunjala_Gondi = 46,
+ SCX_Gurmukhi = 47,
+ SCX_Han = 48,
+ SCX_Hanb = 49,
+ SCX_Hangul = 50,
+ SCX_Hanifi_Rohingya = 51,
+ SCX_Hanunoo = 52,
+ SCX_Hatran = 53,
+ SCX_Hebrew = 54,
+ SCX_Hiragana = 55,
+ SCX_Imperial_Aramaic = 56,
+ SCX_Inherited = 57,
+ SCX_Inscriptional_Pahlavi = 58,
+ SCX_Inscriptional_Parthian = 59,
+ SCX_INVALID = 60,
+ SCX_Javanese = 61,
+ SCX_Jpan = 62,
+ SCX_Kaithi = 63,
+ SCX_Kannada = 64,
+ SCX_Katakana = 65,
+ SCX_Kawi = 66,
+ SCX_Kayah_Li = 67,
+ SCX_Kharoshthi = 68,
+ SCX_Khitan_Small_Script = 69,
+ SCX_Khmer = 70,
+ SCX_Khojki = 71,
+ SCX_Khudawadi = 72,
+ SCX_Kore = 73,
+ SCX_Lao = 74,
+ SCX_Latin = 75,
+ SCX_Lepcha = 76,
+ SCX_Limbu = 77,
+ SCX_Linear_A = 78,
+ SCX_Linear_B = 79,
+ SCX_Lisu = 80,
+ SCX_Lycian = 81,
+ SCX_Lydian = 82,
+ SCX_Mahajani = 83,
+ SCX_Makasar = 84,
+ SCX_Malayalam = 85,
+ SCX_Mandaic = 86,
+ SCX_Manichaean = 87,
+ SCX_Marchen = 88,
+ SCX_Masaram_Gondi = 89,
+ SCX_Medefaidrin = 90,
+ SCX_Meetei_Mayek = 91,
+ SCX_Mende_Kikakui = 92,
+ SCX_Meroitic_Cursive = 93,
+ SCX_Meroitic_Hieroglyphs = 94,
+ SCX_Miao = 95,
+ SCX_Modi = 96,
+ SCX_Mongolian = 97,
+ SCX_Mro = 98,
+ SCX_Multani = 99,
+ SCX_Myanmar = 100,
+ SCX_Nabataean = 101,
+ SCX_Nag_Mundari = 102,
+ SCX_Nandinagari = 103,
+ SCX_New_Tai_Lue = 104,
+ SCX_Newa = 105,
+ SCX_Nko = 106,
+ SCX_Nushu = 107,
+ SCX_Nyiakeng_Puachue_Hmong = 108,
+ SCX_Ogham = 109,
+ SCX_Ol_Chiki = 110,
+ SCX_Old_Hungarian = 111,
+ SCX_Old_Italic = 112,
+ SCX_Old_North_Arabian = 113,
+ SCX_Old_Permic = 114,
+ SCX_Old_Persian = 115,
+ SCX_Old_Sogdian = 116,
+ SCX_Old_South_Arabian = 117,
+ SCX_Old_Turkic = 118,
+ SCX_Old_Uyghur = 119,
+ SCX_Oriya = 120,
+ SCX_Osage = 121,
+ SCX_Osmanya = 122,
+ SCX_Pahawh_Hmong = 123,
+ SCX_Palmyrene = 124,
+ SCX_Pau_Cin_Hau = 125,
+ SCX_Phags_Pa = 126,
+ SCX_Phoenician = 127,
+ SCX_Psalter_Pahlavi = 128,
+ SCX_Rejang = 129,
+ SCX_Runic = 130,
+ SCX_Samaritan = 131,
+ SCX_Saurashtra = 132,
+ SCX_Sharada = 133,
+ SCX_Shavian = 134,
+ SCX_Siddham = 135,
+ SCX_SignWriting = 136,
+ SCX_Sinhala = 137,
+ SCX_Sogdian = 138,
+ SCX_Sora_Sompeng = 139,
+ SCX_Soyombo = 140,
+ SCX_Sundanese = 141,
+ SCX_Syloti_Nagri = 142,
+ SCX_Syriac = 143,
+ SCX_Tagalog = 144,
+ SCX_Tagbanwa = 145,
+ SCX_Tai_Le = 146,
+ SCX_Tai_Tham = 147,
+ SCX_Tai_Viet = 148,
+ SCX_Takri = 149,
+ SCX_Tamil = 150,
+ SCX_Tangsa = 151,
+ SCX_Tangut = 152,
+ SCX_Telugu = 153,
+ SCX_Thaana = 154,
+ SCX_Thai = 155,
+ SCX_Tibetan = 156,
+ SCX_Tifinagh = 157,
+ SCX_Tirhuta = 158,
+ SCX_Toto = 159,
+ SCX_Ugaritic = 160,
+ SCX_Vai = 161,
+ SCX_Vithkuqi = 162,
+ SCX_Wancho = 163,
+ SCX_Warang_Citi = 164,
+ SCX_Yezidi = 165,
+ SCX_Yi = 166,
+ SCX_Zanabazar_Square = 167,
SCX_use_AUX_TABLE_1 = -1,
SCX_use_AUX_TABLE_2 = -2,
SCX_use_AUX_TABLE_3 = -3,
@@ -74209,7 +76314,11 @@ typedef enum {
SCX_use_AUX_TABLE_52 = -52,
SCX_use_AUX_TABLE_53 = -53,
SCX_use_AUX_TABLE_54 = -54,
- SCX_use_AUX_TABLE_55 = -55
+ SCX_use_AUX_TABLE_55 = -55,
+ SCX_use_AUX_TABLE_56 = -56,
+ SCX_use_AUX_TABLE_57 = -57,
+ SCX_use_AUX_TABLE_58 = -58,
+ SCX_use_AUX_TABLE_59 = -59
} SCX_enum;
# endif /* ASCII/Latin1 */
@@ -74243,6 +76352,7 @@ static const SCX_enum SCX_AUX_TABLE_4[] = {
static const SCX_enum SCX_AUX_TABLE_5[] = {
SCX_Arabic,
SCX_Hanifi_Rohingya,
+ SCX_Nko,
SCX_Syriac,
SCX_Thaana,
SCX_Yezidi
@@ -74258,30 +76368,41 @@ static const SCX_enum SCX_AUX_TABLE_7[] = {
SCX_Adlam,
SCX_Arabic,
SCX_Hanifi_Rohingya,
+ SCX_Nko,
+ SCX_Syriac,
+ SCX_Thaana,
+ SCX_Yezidi
+};
+
+static const SCX_enum SCX_AUX_TABLE_8[] = {
+ SCX_Adlam,
+ SCX_Arabic,
+ SCX_Hanifi_Rohingya,
SCX_Mandaic,
SCX_Manichaean,
+ SCX_Old_Uyghur,
SCX_Psalter_Pahlavi,
SCX_Sogdian,
SCX_Syriac
};
-static const SCX_enum SCX_AUX_TABLE_8[] = {
+static const SCX_enum SCX_AUX_TABLE_9[] = {
SCX_Arabic,
SCX_Syriac
};
-static const SCX_enum SCX_AUX_TABLE_9[] = {
+static const SCX_enum SCX_AUX_TABLE_10[] = {
SCX_Arabic,
SCX_Thaana,
SCX_Yezidi
};
-static const SCX_enum SCX_AUX_TABLE_10[] = {
+static const SCX_enum SCX_AUX_TABLE_11[] = {
SCX_Arabic,
SCX_Hanifi_Rohingya
};
-static const SCX_enum SCX_AUX_TABLE_11[] = {
+static const SCX_enum SCX_AUX_TABLE_12[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Grantha,
@@ -74297,7 +76418,7 @@ static const SCX_enum SCX_AUX_TABLE_11[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_12[] = {
+static const SCX_enum SCX_AUX_TABLE_13[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Grantha,
@@ -74312,7 +76433,7 @@ static const SCX_enum SCX_AUX_TABLE_12[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_13[] = {
+static const SCX_enum SCX_AUX_TABLE_14[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Dogra,
@@ -74335,7 +76456,7 @@ static const SCX_enum SCX_AUX_TABLE_13[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_14[] = {
+static const SCX_enum SCX_AUX_TABLE_15[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Dogra,
@@ -74359,90 +76480,90 @@ static const SCX_enum SCX_AUX_TABLE_14[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_15[] = {
+static const SCX_enum SCX_AUX_TABLE_16[] = {
SCX_Devanagari,
SCX_Dogra,
SCX_Kaithi,
SCX_Mahajani
};
-static const SCX_enum SCX_AUX_TABLE_16[] = {
+static const SCX_enum SCX_AUX_TABLE_17[] = {
SCX_Bengali,
SCX_Chakma,
SCX_Syloti_Nagri
};
-static const SCX_enum SCX_AUX_TABLE_17[] = {
+static const SCX_enum SCX_AUX_TABLE_18[] = {
SCX_Gurmukhi,
SCX_Multani
};
-static const SCX_enum SCX_AUX_TABLE_18[] = {
+static const SCX_enum SCX_AUX_TABLE_19[] = {
SCX_Gujarati,
SCX_Khojki
};
-static const SCX_enum SCX_AUX_TABLE_19[] = {
+static const SCX_enum SCX_AUX_TABLE_20[] = {
SCX_Grantha,
SCX_Tamil
};
-static const SCX_enum SCX_AUX_TABLE_20[] = {
+static const SCX_enum SCX_AUX_TABLE_21[] = {
SCX_Kannada,
SCX_Nandinagari
};
-static const SCX_enum SCX_AUX_TABLE_21[] = {
+static const SCX_enum SCX_AUX_TABLE_22[] = {
SCX_Chakma,
SCX_Myanmar,
SCX_Tai_Le
};
-static const SCX_enum SCX_AUX_TABLE_22[] = {
+static const SCX_enum SCX_AUX_TABLE_23[] = {
SCX_Georgian,
SCX_Latin
};
-static const SCX_enum SCX_AUX_TABLE_23[] = {
+static const SCX_enum SCX_AUX_TABLE_24[] = {
SCX_Hangul,
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_24[] = {
+static const SCX_enum SCX_AUX_TABLE_25[] = {
SCX_Buhid,
SCX_Hanunoo,
SCX_Tagalog,
SCX_Tagbanwa
};
-static const SCX_enum SCX_AUX_TABLE_25[] = {
+static const SCX_enum SCX_AUX_TABLE_26[] = {
SCX_Mongolian,
SCX_Phags_Pa
};
-static const SCX_enum SCX_AUX_TABLE_26[] = {
+static const SCX_enum SCX_AUX_TABLE_27[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Grantha,
SCX_Kannada
};
-static const SCX_enum SCX_AUX_TABLE_27[] = {
+static const SCX_enum SCX_AUX_TABLE_28[] = {
SCX_Devanagari,
SCX_Grantha
};
-static const SCX_enum SCX_AUX_TABLE_28[] = {
+static const SCX_enum SCX_AUX_TABLE_29[] = {
SCX_Bengali,
SCX_Devanagari
};
-static const SCX_enum SCX_AUX_TABLE_29[] = {
+static const SCX_enum SCX_AUX_TABLE_30[] = {
SCX_Devanagari,
SCX_Sharada
};
-static const SCX_enum SCX_AUX_TABLE_30[] = {
+static const SCX_enum SCX_AUX_TABLE_31[] = {
SCX_Devanagari,
SCX_Kannada,
SCX_Malayalam,
@@ -74451,12 +76572,12 @@ static const SCX_enum SCX_AUX_TABLE_30[] = {
SCX_Telugu
};
-static const SCX_enum SCX_AUX_TABLE_31[] = {
+static const SCX_enum SCX_AUX_TABLE_32[] = {
SCX_Devanagari,
SCX_Nandinagari
};
-static const SCX_enum SCX_AUX_TABLE_32[] = {
+static const SCX_enum SCX_AUX_TABLE_33[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Grantha,
@@ -74467,36 +76588,36 @@ static const SCX_enum SCX_AUX_TABLE_32[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_33[] = {
+static const SCX_enum SCX_AUX_TABLE_34[] = {
SCX_Devanagari,
SCX_Grantha,
SCX_Kannada
};
-static const SCX_enum SCX_AUX_TABLE_34[] = {
+static const SCX_enum SCX_AUX_TABLE_35[] = {
SCX_Cyrillic,
SCX_Syriac
};
-static const SCX_enum SCX_AUX_TABLE_35[] = {
+static const SCX_enum SCX_AUX_TABLE_36[] = {
SCX_Latin,
SCX_Mongolian
};
-static const SCX_enum SCX_AUX_TABLE_36[] = {
+static const SCX_enum SCX_AUX_TABLE_37[] = {
SCX_Devanagari,
SCX_Grantha,
SCX_Latin
};
-static const SCX_enum SCX_AUX_TABLE_37[] = {
+static const SCX_enum SCX_AUX_TABLE_38[] = {
SCX_Han,
SCX_Hanb,
SCX_Jpan,
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_38[] = {
+static const SCX_enum SCX_AUX_TABLE_39[] = {
SCX_Bopomofo,
SCX_Han,
SCX_Hanb,
@@ -74508,7 +76629,7 @@ static const SCX_enum SCX_AUX_TABLE_38[] = {
SCX_Yi
};
-static const SCX_enum SCX_AUX_TABLE_39[] = {
+static const SCX_enum SCX_AUX_TABLE_40[] = {
SCX_Bopomofo,
SCX_Han,
SCX_Hanb,
@@ -74519,7 +76640,7 @@ static const SCX_enum SCX_AUX_TABLE_39[] = {
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_40[] = {
+static const SCX_enum SCX_AUX_TABLE_41[] = {
SCX_Bopomofo,
SCX_Han,
SCX_Hanb,
@@ -74527,13 +76648,13 @@ static const SCX_enum SCX_AUX_TABLE_40[] = {
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_41[] = {
+static const SCX_enum SCX_AUX_TABLE_42[] = {
SCX_Hiragana,
SCX_Jpan,
SCX_Katakana
};
-static const SCX_enum SCX_AUX_TABLE_42[] = {
+static const SCX_enum SCX_AUX_TABLE_43[] = {
SCX_Han,
SCX_Hanb,
SCX_Hiragana,
@@ -74542,17 +76663,17 @@ static const SCX_enum SCX_AUX_TABLE_42[] = {
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_43[] = {
+static const SCX_enum SCX_AUX_TABLE_44[] = {
SCX_Hiragana,
SCX_Jpan
};
-static const SCX_enum SCX_AUX_TABLE_44[] = {
+static const SCX_enum SCX_AUX_TABLE_45[] = {
SCX_Jpan,
SCX_Katakana
};
-static const SCX_enum SCX_AUX_TABLE_45[] = {
+static const SCX_enum SCX_AUX_TABLE_46[] = {
SCX_Han,
SCX_Hanb,
SCX_Jpan,
@@ -74560,7 +76681,7 @@ static const SCX_enum SCX_AUX_TABLE_45[] = {
SCX_Latin
};
-static const SCX_enum SCX_AUX_TABLE_46[] = {
+static const SCX_enum SCX_AUX_TABLE_47[] = {
SCX_Devanagari,
SCX_Dogra,
SCX_Gujarati,
@@ -74577,7 +76698,7 @@ static const SCX_enum SCX_AUX_TABLE_46[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_47[] = {
+static const SCX_enum SCX_AUX_TABLE_48[] = {
SCX_Devanagari,
SCX_Dogra,
SCX_Gujarati,
@@ -74593,7 +76714,7 @@ static const SCX_enum SCX_AUX_TABLE_47[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_48[] = {
+static const SCX_enum SCX_AUX_TABLE_49[] = {
SCX_Devanagari,
SCX_Dogra,
SCX_Gujarati,
@@ -74607,43 +76728,59 @@ static const SCX_enum SCX_AUX_TABLE_48[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_49[] = {
+static const SCX_enum SCX_AUX_TABLE_50[] = {
SCX_Devanagari,
SCX_Tamil
};
-static const SCX_enum SCX_AUX_TABLE_50[] = {
+static const SCX_enum SCX_AUX_TABLE_51[] = {
SCX_Kayah_Li,
SCX_Latin,
SCX_Myanmar
};
-static const SCX_enum SCX_AUX_TABLE_51[] = {
+static const SCX_enum SCX_AUX_TABLE_52[] = {
SCX_Buginese,
SCX_Javanese
};
-static const SCX_enum SCX_AUX_TABLE_52[] = {
+static const SCX_enum SCX_AUX_TABLE_53[] = {
+ SCX_Arabic,
+ SCX_Nko
+};
+
+static const SCX_enum SCX_AUX_TABLE_54[] = {
SCX_Arabic,
SCX_Thaana
};
-static const SCX_enum SCX_AUX_TABLE_53[] = {
+static const SCX_enum SCX_AUX_TABLE_55[] = {
SCX_Cypriot,
+ SCX_Cypro_Minoan,
SCX_Linear_B
};
-static const SCX_enum SCX_AUX_TABLE_54[] = {
+static const SCX_enum SCX_AUX_TABLE_56[] = {
+ SCX_Cypriot,
+ SCX_Linear_B
+};
+
+static const SCX_enum SCX_AUX_TABLE_57[] = {
SCX_Cypriot,
SCX_Linear_A,
SCX_Linear_B
};
-static const SCX_enum SCX_AUX_TABLE_55[] = {
+static const SCX_enum SCX_AUX_TABLE_58[] = {
SCX_Arabic,
SCX_Coptic
};
+static const SCX_enum SCX_AUX_TABLE_59[] = {
+ SCX_Manichaean,
+ SCX_Old_Uyghur
+};
+
static const SCX_enum * const SCX_AUX_TABLE_ptrs[] = {
NULL, /* Placeholder */
SCX_AUX_TABLE_1,
@@ -74700,7 +76837,11 @@ static const SCX_enum * const SCX_AUX_TABLE_ptrs[] = {
SCX_AUX_TABLE_52,
SCX_AUX_TABLE_53,
SCX_AUX_TABLE_54,
- SCX_AUX_TABLE_55
+ SCX_AUX_TABLE_55,
+ SCX_AUX_TABLE_56,
+ SCX_AUX_TABLE_57,
+ SCX_AUX_TABLE_58,
+ SCX_AUX_TABLE_59
};
/* Parallel table to the above, giving the number of elements in each table
@@ -74712,57 +76853,61 @@ static const U8 SCX_AUX_TABLE_lengths[] = {
2 /* SCX_AUX_TABLE_2 */,
2 /* SCX_AUX_TABLE_3 */,
2 /* SCX_AUX_TABLE_4 */,
- 5 /* SCX_AUX_TABLE_5 */,
+ 6 /* SCX_AUX_TABLE_5 */,
3 /* SCX_AUX_TABLE_6 */,
- 8 /* SCX_AUX_TABLE_7 */,
- 2 /* SCX_AUX_TABLE_8 */,
- 3 /* SCX_AUX_TABLE_9 */,
- 2 /* SCX_AUX_TABLE_10 */,
- 13 /* SCX_AUX_TABLE_11 */,
- 12 /* SCX_AUX_TABLE_12 */,
- 20 /* SCX_AUX_TABLE_13 */,
- 21 /* SCX_AUX_TABLE_14 */,
- 4 /* SCX_AUX_TABLE_15 */,
- 3 /* SCX_AUX_TABLE_16 */,
- 2 /* SCX_AUX_TABLE_17 */,
+ 7 /* SCX_AUX_TABLE_7 */,
+ 9 /* SCX_AUX_TABLE_8 */,
+ 2 /* SCX_AUX_TABLE_9 */,
+ 3 /* SCX_AUX_TABLE_10 */,
+ 2 /* SCX_AUX_TABLE_11 */,
+ 13 /* SCX_AUX_TABLE_12 */,
+ 12 /* SCX_AUX_TABLE_13 */,
+ 20 /* SCX_AUX_TABLE_14 */,
+ 21 /* SCX_AUX_TABLE_15 */,
+ 4 /* SCX_AUX_TABLE_16 */,
+ 3 /* SCX_AUX_TABLE_17 */,
2 /* SCX_AUX_TABLE_18 */,
2 /* SCX_AUX_TABLE_19 */,
2 /* SCX_AUX_TABLE_20 */,
- 3 /* SCX_AUX_TABLE_21 */,
- 2 /* SCX_AUX_TABLE_22 */,
+ 2 /* SCX_AUX_TABLE_21 */,
+ 3 /* SCX_AUX_TABLE_22 */,
2 /* SCX_AUX_TABLE_23 */,
- 4 /* SCX_AUX_TABLE_24 */,
- 2 /* SCX_AUX_TABLE_25 */,
- 4 /* SCX_AUX_TABLE_26 */,
- 2 /* SCX_AUX_TABLE_27 */,
+ 2 /* SCX_AUX_TABLE_24 */,
+ 4 /* SCX_AUX_TABLE_25 */,
+ 2 /* SCX_AUX_TABLE_26 */,
+ 4 /* SCX_AUX_TABLE_27 */,
2 /* SCX_AUX_TABLE_28 */,
2 /* SCX_AUX_TABLE_29 */,
- 6 /* SCX_AUX_TABLE_30 */,
- 2 /* SCX_AUX_TABLE_31 */,
- 8 /* SCX_AUX_TABLE_32 */,
- 3 /* SCX_AUX_TABLE_33 */,
- 2 /* SCX_AUX_TABLE_34 */,
+ 2 /* SCX_AUX_TABLE_30 */,
+ 6 /* SCX_AUX_TABLE_31 */,
+ 2 /* SCX_AUX_TABLE_32 */,
+ 8 /* SCX_AUX_TABLE_33 */,
+ 3 /* SCX_AUX_TABLE_34 */,
2 /* SCX_AUX_TABLE_35 */,
- 3 /* SCX_AUX_TABLE_36 */,
- 4 /* SCX_AUX_TABLE_37 */,
- 9 /* SCX_AUX_TABLE_38 */,
- 8 /* SCX_AUX_TABLE_39 */,
- 5 /* SCX_AUX_TABLE_40 */,
- 3 /* SCX_AUX_TABLE_41 */,
- 6 /* SCX_AUX_TABLE_42 */,
- 2 /* SCX_AUX_TABLE_43 */,
+ 2 /* SCX_AUX_TABLE_36 */,
+ 3 /* SCX_AUX_TABLE_37 */,
+ 4 /* SCX_AUX_TABLE_38 */,
+ 9 /* SCX_AUX_TABLE_39 */,
+ 8 /* SCX_AUX_TABLE_40 */,
+ 5 /* SCX_AUX_TABLE_41 */,
+ 3 /* SCX_AUX_TABLE_42 */,
+ 6 /* SCX_AUX_TABLE_43 */,
2 /* SCX_AUX_TABLE_44 */,
- 5 /* SCX_AUX_TABLE_45 */,
- 14 /* SCX_AUX_TABLE_46 */,
- 13 /* SCX_AUX_TABLE_47 */,
- 11 /* SCX_AUX_TABLE_48 */,
- 2 /* SCX_AUX_TABLE_49 */,
- 3 /* SCX_AUX_TABLE_50 */,
- 2 /* SCX_AUX_TABLE_51 */,
+ 2 /* SCX_AUX_TABLE_45 */,
+ 5 /* SCX_AUX_TABLE_46 */,
+ 14 /* SCX_AUX_TABLE_47 */,
+ 13 /* SCX_AUX_TABLE_48 */,
+ 11 /* SCX_AUX_TABLE_49 */,
+ 2 /* SCX_AUX_TABLE_50 */,
+ 3 /* SCX_AUX_TABLE_51 */,
2 /* SCX_AUX_TABLE_52 */,
2 /* SCX_AUX_TABLE_53 */,
- 3 /* SCX_AUX_TABLE_54 */,
- 2 /* SCX_AUX_TABLE_55 */
+ 2 /* SCX_AUX_TABLE_54 */,
+ 3 /* SCX_AUX_TABLE_55 */,
+ 2 /* SCX_AUX_TABLE_56 */,
+ 3 /* SCX_AUX_TABLE_57 */,
+ 2 /* SCX_AUX_TABLE_58 */,
+ 2 /* SCX_AUX_TABLE_59 */
};
/* This table, indexed by the script enum, gives the zero code point for that
@@ -74799,6 +76944,7 @@ static const UV script_zeros[] = {
'0', /* Coptic */
'0', /* Cuneiform */
'0', /* Cypriot */
+ '0', /* Cypro_Minoan */
'0', /* Cyrillic */
'0', /* Deseret */
0x966, /* Devanagari */
@@ -74835,6 +76981,7 @@ static const UV script_zeros[] = {
0x966, /* Kaithi */
0xce6, /* Kannada */
'0', /* Katakana */
+ 0x11f50, /* Kawi */
0xa900, /* Kayah_Li */
'0', /* Kharoshthi */
'0', /* Khitan_Small_Script */
@@ -74870,6 +77017,7 @@ static const UV script_zeros[] = {
0xa66, /* Multani */
0, /* Myanmar */
'0', /* Nabataean */
+ 0x1e4f0, /* Nag_Mundari */
0xce6, /* Nandinagari */
0x19d0, /* New_Tai_Lue */
0x11450, /* Newa */
@@ -74886,6 +77034,7 @@ static const UV script_zeros[] = {
'0', /* Old_Sogdian */
'0', /* Old_South_Arabian */
'0', /* Old_Turkic */
+ '0', /* Old_Uyghur */
0xb66, /* Oriya */
'0', /* Osage */
0x104a0, /* Osmanya */
@@ -74917,6 +77066,7 @@ static const UV script_zeros[] = {
'0', /* Tai_Viet */
0x116c0, /* Takri */
0xbe6, /* Tamil */
+ 0x16ac0, /* Tangsa */
'0', /* Tangut */
0xc66, /* Telugu */
0x660, /* Thaana */
@@ -74924,8 +77074,10 @@ static const UV script_zeros[] = {
0xf20, /* Tibetan */
'0', /* Tifinagh */
0x114d0, /* Tirhuta */
+ '0', /* Toto */
'0', /* Ugaritic */
0xa620, /* Vai */
+ '0', /* Vithkuqi */
0x1e2f0, /* Wancho */
0x118e0, /* Warang_Citi */
0x660 /* Yezidi */
@@ -75004,9 +77156,6 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Arabic,
SCX_use_AUX_TABLE_5,
SCX_use_AUX_TABLE_6,
- SCX_Unknown,
- SCX_Arabic,
- SCX_use_AUX_TABLE_5,
SCX_Arabic,
SCX_use_AUX_TABLE_7,
SCX_Arabic,
@@ -75014,10 +77163,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Arabic,
SCX_use_AUX_TABLE_9,
SCX_Arabic,
- SCX_use_AUX_TABLE_8,
- SCX_Arabic,
SCX_use_AUX_TABLE_10,
SCX_Arabic,
+ SCX_use_AUX_TABLE_9,
+ SCX_Arabic,
+ SCX_use_AUX_TABLE_11,
+ SCX_Arabic,
SCX_Common,
SCX_Arabic,
SCX_Syriac,
@@ -75049,13 +77200,13 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Common,
SCX_Arabic,
SCX_Devanagari,
- SCX_use_AUX_TABLE_11,
SCX_use_AUX_TABLE_12,
+ SCX_use_AUX_TABLE_13,
SCX_Inherited,
SCX_Devanagari,
- SCX_use_AUX_TABLE_13,
SCX_use_AUX_TABLE_14,
SCX_use_AUX_TABLE_15,
+ SCX_use_AUX_TABLE_16,
SCX_Devanagari,
SCX_Bengali,
SCX_Unknown,
@@ -75083,7 +77234,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Bengali,
SCX_Unknown,
- SCX_use_AUX_TABLE_16,
+ SCX_use_AUX_TABLE_17,
SCX_Bengali,
SCX_Unknown,
SCX_Gurmukhi,
@@ -75116,7 +77267,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Gurmukhi,
SCX_Unknown,
- SCX_use_AUX_TABLE_17,
+ SCX_use_AUX_TABLE_18,
SCX_Gurmukhi,
SCX_Unknown,
SCX_Gujarati,
@@ -75143,7 +77294,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Gujarati,
SCX_Unknown,
- SCX_use_AUX_TABLE_18,
+ SCX_use_AUX_TABLE_19,
SCX_Gujarati,
SCX_Unknown,
SCX_Gujarati,
@@ -75206,7 +77357,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Tamil,
SCX_Unknown,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Tamil,
SCX_Unknown,
SCX_Telugu,
@@ -75232,6 +77383,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Telugu,
SCX_Unknown,
SCX_Telugu,
+ SCX_Unknown,
+ SCX_Telugu,
SCX_Kannada,
SCX_Unknown,
SCX_Kannada,
@@ -75254,7 +77407,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Kannada,
SCX_Unknown,
- SCX_use_AUX_TABLE_20,
+ SCX_use_AUX_TABLE_21,
SCX_Unknown,
SCX_Kannada,
SCX_Unknown,
@@ -75338,7 +77491,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Tibetan,
SCX_Unknown,
SCX_Myanmar,
- SCX_use_AUX_TABLE_21,
+ SCX_use_AUX_TABLE_22,
SCX_Myanmar,
SCX_Georgian,
SCX_Unknown,
@@ -75347,9 +77500,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Georgian,
SCX_Unknown,
SCX_Georgian,
- SCX_use_AUX_TABLE_22,
- SCX_Georgian,
SCX_use_AUX_TABLE_23,
+ SCX_Georgian,
+ SCX_use_AUX_TABLE_24,
SCX_Ethiopic,
SCX_Unknown,
SCX_Ethiopic,
@@ -75400,9 +77553,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Tagalog,
SCX_Unknown,
SCX_Tagalog,
- SCX_Unknown,
SCX_Hanunoo,
- SCX_use_AUX_TABLE_24,
+ SCX_use_AUX_TABLE_25,
SCX_Unknown,
SCX_Buhid,
SCX_Unknown,
@@ -75419,11 +77571,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Khmer,
SCX_Unknown,
SCX_Mongolian,
- SCX_use_AUX_TABLE_25,
- SCX_Mongolian,
- SCX_use_AUX_TABLE_25,
+ SCX_use_AUX_TABLE_26,
SCX_Mongolian,
- SCX_Unknown,
+ SCX_use_AUX_TABLE_26,
SCX_Mongolian,
SCX_Unknown,
SCX_Mongolian,
@@ -75489,33 +77639,33 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Georgian,
SCX_Sundanese,
SCX_Unknown,
- SCX_use_AUX_TABLE_26,
- SCX_Devanagari,
- SCX_use_AUX_TABLE_26,
SCX_use_AUX_TABLE_27,
SCX_Devanagari,
+ SCX_use_AUX_TABLE_27,
SCX_use_AUX_TABLE_28,
+ SCX_Devanagari,
SCX_use_AUX_TABLE_29,
- SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_30,
SCX_use_AUX_TABLE_29,
SCX_use_AUX_TABLE_30,
+ SCX_use_AUX_TABLE_31,
SCX_Devanagari,
- SCX_use_AUX_TABLE_29,
+ SCX_use_AUX_TABLE_30,
SCX_Devanagari,
+ SCX_use_AUX_TABLE_30,
SCX_use_AUX_TABLE_29,
- SCX_use_AUX_TABLE_28,
SCX_Devanagari,
- SCX_use_AUX_TABLE_31,
- SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_32,
+ SCX_use_AUX_TABLE_29,
SCX_Devanagari,
- SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_29,
SCX_Devanagari,
- SCX_use_AUX_TABLE_32,
- SCX_use_AUX_TABLE_27,
SCX_use_AUX_TABLE_33,
SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_34,
+ SCX_use_AUX_TABLE_29,
SCX_Bengali,
- SCX_use_AUX_TABLE_27,
+ SCX_use_AUX_TABLE_28,
SCX_Nandinagari,
SCX_Unknown,
SCX_Latin,
@@ -75530,9 +77680,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Latin,
SCX_Greek,
SCX_Inherited,
- SCX_use_AUX_TABLE_34,
+ SCX_use_AUX_TABLE_35,
SCX_Inherited,
- SCX_Unknown,
+ SCX_Syriac,
SCX_Inherited,
SCX_Latin,
SCX_Greek,
@@ -75570,7 +77720,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Common,
SCX_Inherited,
SCX_Common,
- SCX_use_AUX_TABLE_35,
+ SCX_use_AUX_TABLE_36,
SCX_Common,
SCX_Unknown,
SCX_Common,
@@ -75585,7 +77735,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Common,
SCX_Unknown,
SCX_Inherited,
- SCX_use_AUX_TABLE_36,
+ SCX_use_AUX_TABLE_37,
SCX_Unknown,
SCX_Common,
SCX_Greek,
@@ -75611,9 +77761,6 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Common,
SCX_Glagolitic,
- SCX_Unknown,
- SCX_Glagolitic,
- SCX_Unknown,
SCX_Latin,
SCX_Coptic,
SCX_Unknown,
@@ -75652,78 +77799,77 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_use_AUX_TABLE_3,
SCX_Common,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
SCX_Common,
- SCX_use_AUX_TABLE_38,
SCX_use_AUX_TABLE_39,
+ SCX_use_AUX_TABLE_40,
SCX_Common,
- SCX_use_AUX_TABLE_37,
- SCX_use_AUX_TABLE_38,
- SCX_Common,
- SCX_use_AUX_TABLE_39,
SCX_use_AUX_TABLE_38,
SCX_use_AUX_TABLE_39,
SCX_Common,
- SCX_use_AUX_TABLE_37,
SCX_use_AUX_TABLE_40,
- SCX_use_AUX_TABLE_23,
SCX_use_AUX_TABLE_39,
- SCX_use_AUX_TABLE_41,
+ SCX_use_AUX_TABLE_40,
SCX_Common,
- SCX_use_AUX_TABLE_39,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
+ SCX_use_AUX_TABLE_41,
+ SCX_use_AUX_TABLE_24,
+ SCX_use_AUX_TABLE_40,
SCX_use_AUX_TABLE_42,
- SCX_use_AUX_TABLE_37,
- SCX_Unknown,
+ SCX_Common,
+ SCX_use_AUX_TABLE_40,
+ SCX_use_AUX_TABLE_38,
SCX_use_AUX_TABLE_43,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_41,
- SCX_use_AUX_TABLE_43,
- SCX_use_AUX_TABLE_41,
SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_38,
- SCX_use_AUX_TABLE_41,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_42,
SCX_use_AUX_TABLE_44,
+ SCX_use_AUX_TABLE_42,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_39,
+ SCX_use_AUX_TABLE_42,
+ SCX_use_AUX_TABLE_45,
SCX_Unknown,
SCX_use_AUX_TABLE_1,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_use_AUX_TABLE_1,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_37,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_38,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
- SCX_Unknown,
+ SCX_use_AUX_TABLE_38,
SCX_Yi,
SCX_Unknown,
SCX_Yi,
@@ -75736,7 +77882,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Cyrillic,
SCX_Bamum,
SCX_Unknown,
- SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_46,
SCX_Common,
SCX_Latin,
SCX_Common,
@@ -75745,11 +77891,15 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Latin,
SCX_Unknown,
SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
SCX_Syloti_Nagri,
SCX_Unknown,
- SCX_use_AUX_TABLE_46,
SCX_use_AUX_TABLE_47,
SCX_use_AUX_TABLE_48,
+ SCX_use_AUX_TABLE_49,
SCX_Unknown,
SCX_Phags_Pa,
SCX_Unknown,
@@ -75758,21 +77908,21 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Saurashtra,
SCX_Unknown,
SCX_Devanagari,
- SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_29,
SCX_Devanagari,
- SCX_use_AUX_TABLE_49,
+ SCX_use_AUX_TABLE_50,
SCX_Devanagari,
SCX_Kayah_Li,
- SCX_use_AUX_TABLE_50,
+ SCX_use_AUX_TABLE_51,
SCX_Kayah_Li,
SCX_Rejang,
SCX_Unknown,
SCX_Rejang,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
SCX_Javanese,
SCX_Unknown,
- SCX_use_AUX_TABLE_51,
+ SCX_use_AUX_TABLE_52,
SCX_Javanese,
SCX_Unknown,
SCX_Javanese,
@@ -75813,15 +77963,15 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Meetei_Mayek,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Latin,
SCX_Unknown,
@@ -75841,24 +77991,25 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Arabic,
SCX_Unknown,
SCX_Arabic,
- SCX_Common,
+ SCX_use_AUX_TABLE_53,
+ SCX_Arabic,
SCX_Unknown,
SCX_Arabic,
SCX_Unknown,
SCX_Arabic,
SCX_Unknown,
SCX_Arabic,
- SCX_use_AUX_TABLE_52,
+ SCX_use_AUX_TABLE_54,
+ SCX_Arabic,
+ SCX_use_AUX_TABLE_54,
SCX_Arabic,
- SCX_use_AUX_TABLE_52,
- SCX_Unknown,
SCX_Inherited,
SCX_Common,
SCX_Unknown,
SCX_Inherited,
SCX_Cyrillic,
SCX_Common,
- SCX_use_AUX_TABLE_39,
+ SCX_use_AUX_TABLE_40,
SCX_Common,
SCX_Unknown,
SCX_Common,
@@ -75876,20 +78027,20 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Common,
SCX_Latin,
SCX_Common,
- SCX_use_AUX_TABLE_38,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_41,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_41,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_39,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_42,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_42,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
@@ -75911,11 +78062,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Linear_B,
SCX_Unknown,
- SCX_use_AUX_TABLE_53,
+ SCX_use_AUX_TABLE_55,
+ SCX_use_AUX_TABLE_56,
SCX_Unknown,
- SCX_use_AUX_TABLE_54,
+ SCX_use_AUX_TABLE_57,
SCX_Unknown,
- SCX_use_AUX_TABLE_53,
+ SCX_use_AUX_TABLE_56,
SCX_Greek,
SCX_Unknown,
SCX_Common,
@@ -75929,7 +78081,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Carian,
SCX_Unknown,
- SCX_use_AUX_TABLE_55,
+ SCX_use_AUX_TABLE_58,
SCX_Unknown,
SCX_Old_Italic,
SCX_Unknown,
@@ -75960,6 +78112,21 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Caucasian_Albanian,
SCX_Unknown,
SCX_Caucasian_Albanian,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
SCX_Unknown,
SCX_Linear_A,
SCX_Unknown,
@@ -75967,6 +78134,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Linear_A,
SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
SCX_Cypriot,
SCX_Unknown,
SCX_Cypriot,
@@ -76026,6 +78199,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Manichaean,
SCX_Unknown,
SCX_Manichaean,
+ SCX_use_AUX_TABLE_59,
+ SCX_Manichaean,
SCX_Unknown,
SCX_Avestan,
SCX_Unknown,
@@ -76061,10 +78236,13 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Yezidi,
SCX_Unknown,
+ SCX_Arabic,
SCX_Old_Sogdian,
SCX_Unknown,
SCX_Sogdian,
SCX_Unknown,
+ SCX_Old_Uyghur,
+ SCX_Unknown,
SCX_Chorasmian,
SCX_Unknown,
SCX_Elymaic,
@@ -76111,9 +78289,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Khudawadi,
SCX_Unknown,
SCX_Grantha,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Grantha,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Unknown,
SCX_Grantha,
SCX_Unknown,
@@ -76127,7 +78305,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Grantha,
SCX_Unknown,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Grantha,
SCX_Unknown,
SCX_Grantha,
@@ -76203,8 +78381,11 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Soyombo,
SCX_Unknown,
+ SCX_Canadian_Aboriginal,
SCX_Pau_Cin_Hau,
SCX_Unknown,
+ SCX_Devanagari,
+ SCX_Unknown,
SCX_Bhaiksuki,
SCX_Unknown,
SCX_Bhaiksuki,
@@ -76247,12 +78428,18 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Makasar,
SCX_Unknown,
+ SCX_Kawi,
+ SCX_Unknown,
+ SCX_Kawi,
+ SCX_Unknown,
+ SCX_Kawi,
+ SCX_Unknown,
SCX_Lisu,
SCX_Unknown,
SCX_Tamil,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Tamil,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Tamil,
SCX_Unknown,
SCX_Tamil,
@@ -76264,7 +78451,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Cuneiform,
SCX_Unknown,
- SCX_Egyptian_Hieroglyphs,
+ SCX_Cypro_Minoan,
SCX_Unknown,
SCX_Egyptian_Hieroglyphs,
SCX_Unknown,
@@ -76277,6 +78464,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Mro,
SCX_Unknown,
SCX_Mro,
+ SCX_Tangsa,
+ SCX_Unknown,
+ SCX_Tangsa,
SCX_Unknown,
SCX_Bassa_Vah,
SCX_Unknown,
@@ -76302,10 +78492,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Tangut,
SCX_Nushu,
- SCX_Common,
+ SCX_use_AUX_TABLE_38,
SCX_Khitan_Small_Script,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Tangut,
SCX_Unknown,
@@ -76314,13 +78504,24 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Tangut,
SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_43,
+ SCX_use_AUX_TABLE_45,
SCX_Unknown,
- SCX_use_AUX_TABLE_43,
+ SCX_use_AUX_TABLE_44,
SCX_Unknown,
SCX_use_AUX_TABLE_44,
SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
SCX_Nushu,
SCX_Unknown,
SCX_Duployan,
@@ -76333,6 +78534,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Duployan,
SCX_Unknown,
+ SCX_Inherited,
+ SCX_Unknown,
+ SCX_Inherited,
+ SCX_Unknown,
+ SCX_Common,
+ SCX_Unknown,
SCX_Common,
SCX_Unknown,
SCX_Common,
@@ -76353,7 +78560,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Common,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_Common,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
SCX_Unknown,
SCX_Common,
@@ -76403,6 +78612,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_SignWriting,
SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
SCX_Glagolitic,
SCX_Unknown,
SCX_Glagolitic,
@@ -76413,6 +78626,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Glagolitic,
SCX_Unknown,
+ SCX_Cyrillic,
+ SCX_Unknown,
+ SCX_Cyrillic,
+ SCX_Unknown,
SCX_Nyiakeng_Puachue_Hmong,
SCX_Unknown,
SCX_Nyiakeng_Puachue_Hmong,
@@ -76421,10 +78638,22 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Nyiakeng_Puachue_Hmong,
SCX_Unknown,
+ SCX_Toto,
+ SCX_Unknown,
SCX_Wancho,
SCX_Unknown,
SCX_Wancho,
SCX_Unknown,
+ SCX_Nag_Mundari,
+ SCX_Unknown,
+ SCX_Ethiopic,
+ SCX_Unknown,
+ SCX_Ethiopic,
+ SCX_Unknown,
+ SCX_Ethiopic,
+ SCX_Unknown,
+ SCX_Ethiopic,
+ SCX_Unknown,
SCX_Mende_Kikakui,
SCX_Unknown,
SCX_Mende_Kikakui,
@@ -76522,14 +78751,14 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Common,
SCX_Unknown,
SCX_Common,
- SCX_use_AUX_TABLE_43,
+ SCX_use_AUX_TABLE_44,
SCX_Common,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
@@ -76583,21 +78812,21 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
SCX_Unknown,
SCX_Common,
SCX_Unknown,
- SCX_Common,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
@@ -76619,7 +78848,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
- 1699, /* Number of elements */
+ 1776, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -76722,7 +78951,6 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x61B,
0x61C,
0x61D,
- 0x61E,
0x61F,
0x620,
0x640,
@@ -76758,11 +78986,11 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x8E2,
0x8E3,
0x900,
@@ -76934,7 +79162,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -76944,6 +79172,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -76967,14 +79197,14 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -77035,7 +79265,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -77115,9 +79345,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
+ 0x1716,
+ 0x171F,
0x1720,
0x1735,
0x1737,
@@ -77140,8 +79369,6 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x1804,
0x1805,
0x1806,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -77184,11 +79411,11 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BC0,
0x1BF4,
@@ -77300,7 +79527,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F0,
0x20F1,
@@ -77328,9 +79555,6 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x2B96,
0x2B97,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
0x2C60,
0x2C80,
0x2CF4,
@@ -77368,7 +79592,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x2E00,
0x2E43,
0x2E44,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -77440,7 +79664,6 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
0xA000,
0xA48D,
0xA490,
@@ -77458,10 +79681,14 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA788,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA800,
0xA82D,
0xA830,
@@ -77556,14 +79783,15 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0xFB45,
0xFB46,
0xFB50,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
0xFD3E,
0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
0xFDF2,
0xFDF3,
@@ -77629,6 +79857,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x10080,
0x100FB,
0x10100,
+ 0x10102,
0x10103,
0x10107,
0x10134,
@@ -77678,12 +79907,33 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x10564,
0x1056F,
0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -77743,6 +79993,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x10AC0,
0x10AE7,
0x10AEB,
+ 0x10AF2,
+ 0x10AF3,
0x10AF7,
0x10B00,
0x10B36,
@@ -77778,10 +80030,13 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x10EAE,
0x10EB0,
0x10EB2,
+ 0x10EFD,
0x10F00,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -77789,10 +80044,10 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
0x11080,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -77812,7 +80067,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -77880,7 +80135,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -77888,7 +80143,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -77920,8 +80175,11 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x11A48,
0x11A50,
0x11AA3,
+ 0x11AB0,
0x11AC0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -77964,6 +80222,12 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -77981,10 +80245,10 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -77995,6 +80259,9 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x16A6A,
0x16A6E,
0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -78031,11 +80298,22 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
0x1B001,
- 0x1B11F,
+ 0x1B120,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -78050,6 +80328,12 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -78063,9 +80347,11 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -78120,6 +80406,10 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -78130,6 +80420,10 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -78138,10 +80432,22 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -78252,16 +80558,18 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -78275,27 +80583,23 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -78303,9 +80607,9 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -78316,6 +80620,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 1047 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -78367,138 +80673,145 @@ typedef enum {
SCX_Coptic = 26,
SCX_Cuneiform = 27,
SCX_Cypriot = 28,
- SCX_Cyrillic = 29,
- SCX_Deseret = 30,
- SCX_Devanagari = 31,
- SCX_Dives_Akuru = 32,
- SCX_Dogra = 33,
- SCX_Duployan = 34,
- SCX_Egyptian_Hieroglyphs = 35,
- SCX_Elbasan = 36,
- SCX_Elymaic = 37,
- SCX_Ethiopic = 38,
- SCX_Georgian = 39,
- SCX_Glagolitic = 40,
- SCX_Gothic = 41,
- SCX_Grantha = 42,
- SCX_Greek = 43,
- SCX_Gujarati = 44,
- SCX_Gunjala_Gondi = 45,
- SCX_Gurmukhi = 46,
- SCX_Han = 47,
- SCX_Hanb = 48,
- SCX_Hangul = 49,
- SCX_Hanifi_Rohingya = 50,
- SCX_Hanunoo = 51,
- SCX_Hatran = 52,
- SCX_Hebrew = 53,
- SCX_Hiragana = 54,
- SCX_Imperial_Aramaic = 55,
- SCX_Inherited = 56,
- SCX_Inscriptional_Pahlavi = 57,
- SCX_Inscriptional_Parthian = 58,
- SCX_INVALID = 59,
- SCX_Javanese = 60,
- SCX_Jpan = 61,
- SCX_Kaithi = 62,
- SCX_Kannada = 63,
- SCX_Katakana = 64,
- SCX_Kayah_Li = 65,
- SCX_Kharoshthi = 66,
- SCX_Khitan_Small_Script = 67,
- SCX_Khmer = 68,
- SCX_Khojki = 69,
- SCX_Khudawadi = 70,
- SCX_Kore = 71,
- SCX_Lao = 72,
- SCX_Latin = 73,
- SCX_Lepcha = 74,
- SCX_Limbu = 75,
- SCX_Linear_A = 76,
- SCX_Linear_B = 77,
- SCX_Lisu = 78,
- SCX_Lycian = 79,
- SCX_Lydian = 80,
- SCX_Mahajani = 81,
- SCX_Makasar = 82,
- SCX_Malayalam = 83,
- SCX_Mandaic = 84,
- SCX_Manichaean = 85,
- SCX_Marchen = 86,
- SCX_Masaram_Gondi = 87,
- SCX_Medefaidrin = 88,
- SCX_Meetei_Mayek = 89,
- SCX_Mende_Kikakui = 90,
- SCX_Meroitic_Cursive = 91,
- SCX_Meroitic_Hieroglyphs = 92,
- SCX_Miao = 93,
- SCX_Modi = 94,
- SCX_Mongolian = 95,
- SCX_Mro = 96,
- SCX_Multani = 97,
- SCX_Myanmar = 98,
- SCX_Nabataean = 99,
- SCX_Nandinagari = 100,
- SCX_New_Tai_Lue = 101,
- SCX_Newa = 102,
- SCX_Nko = 103,
- SCX_Nushu = 104,
- SCX_Nyiakeng_Puachue_Hmong = 105,
- SCX_Ogham = 106,
- SCX_Ol_Chiki = 107,
- SCX_Old_Hungarian = 108,
- SCX_Old_Italic = 109,
- SCX_Old_North_Arabian = 110,
- SCX_Old_Permic = 111,
- SCX_Old_Persian = 112,
- SCX_Old_Sogdian = 113,
- SCX_Old_South_Arabian = 114,
- SCX_Old_Turkic = 115,
- SCX_Oriya = 116,
- SCX_Osage = 117,
- SCX_Osmanya = 118,
- SCX_Pahawh_Hmong = 119,
- SCX_Palmyrene = 120,
- SCX_Pau_Cin_Hau = 121,
- SCX_Phags_Pa = 122,
- SCX_Phoenician = 123,
- SCX_Psalter_Pahlavi = 124,
- SCX_Rejang = 125,
- SCX_Runic = 126,
- SCX_Samaritan = 127,
- SCX_Saurashtra = 128,
- SCX_Sharada = 129,
- SCX_Shavian = 130,
- SCX_Siddham = 131,
- SCX_SignWriting = 132,
- SCX_Sinhala = 133,
- SCX_Sogdian = 134,
- SCX_Sora_Sompeng = 135,
- SCX_Soyombo = 136,
- SCX_Sundanese = 137,
- SCX_Syloti_Nagri = 138,
- SCX_Syriac = 139,
- SCX_Tagalog = 140,
- SCX_Tagbanwa = 141,
- SCX_Tai_Le = 142,
- SCX_Tai_Tham = 143,
- SCX_Tai_Viet = 144,
- SCX_Takri = 145,
- SCX_Tamil = 146,
- SCX_Tangut = 147,
- SCX_Telugu = 148,
- SCX_Thaana = 149,
- SCX_Thai = 150,
- SCX_Tibetan = 151,
- SCX_Tifinagh = 152,
- SCX_Tirhuta = 153,
- SCX_Ugaritic = 154,
- SCX_Vai = 155,
- SCX_Wancho = 156,
- SCX_Warang_Citi = 157,
- SCX_Yezidi = 158,
- SCX_Yi = 159,
- SCX_Zanabazar_Square = 160,
+ SCX_Cypro_Minoan = 29,
+ SCX_Cyrillic = 30,
+ SCX_Deseret = 31,
+ SCX_Devanagari = 32,
+ SCX_Dives_Akuru = 33,
+ SCX_Dogra = 34,
+ SCX_Duployan = 35,
+ SCX_Egyptian_Hieroglyphs = 36,
+ SCX_Elbasan = 37,
+ SCX_Elymaic = 38,
+ SCX_Ethiopic = 39,
+ SCX_Georgian = 40,
+ SCX_Glagolitic = 41,
+ SCX_Gothic = 42,
+ SCX_Grantha = 43,
+ SCX_Greek = 44,
+ SCX_Gujarati = 45,
+ SCX_Gunjala_Gondi = 46,
+ SCX_Gurmukhi = 47,
+ SCX_Han = 48,
+ SCX_Hanb = 49,
+ SCX_Hangul = 50,
+ SCX_Hanifi_Rohingya = 51,
+ SCX_Hanunoo = 52,
+ SCX_Hatran = 53,
+ SCX_Hebrew = 54,
+ SCX_Hiragana = 55,
+ SCX_Imperial_Aramaic = 56,
+ SCX_Inherited = 57,
+ SCX_Inscriptional_Pahlavi = 58,
+ SCX_Inscriptional_Parthian = 59,
+ SCX_INVALID = 60,
+ SCX_Javanese = 61,
+ SCX_Jpan = 62,
+ SCX_Kaithi = 63,
+ SCX_Kannada = 64,
+ SCX_Katakana = 65,
+ SCX_Kawi = 66,
+ SCX_Kayah_Li = 67,
+ SCX_Kharoshthi = 68,
+ SCX_Khitan_Small_Script = 69,
+ SCX_Khmer = 70,
+ SCX_Khojki = 71,
+ SCX_Khudawadi = 72,
+ SCX_Kore = 73,
+ SCX_Lao = 74,
+ SCX_Latin = 75,
+ SCX_Lepcha = 76,
+ SCX_Limbu = 77,
+ SCX_Linear_A = 78,
+ SCX_Linear_B = 79,
+ SCX_Lisu = 80,
+ SCX_Lycian = 81,
+ SCX_Lydian = 82,
+ SCX_Mahajani = 83,
+ SCX_Makasar = 84,
+ SCX_Malayalam = 85,
+ SCX_Mandaic = 86,
+ SCX_Manichaean = 87,
+ SCX_Marchen = 88,
+ SCX_Masaram_Gondi = 89,
+ SCX_Medefaidrin = 90,
+ SCX_Meetei_Mayek = 91,
+ SCX_Mende_Kikakui = 92,
+ SCX_Meroitic_Cursive = 93,
+ SCX_Meroitic_Hieroglyphs = 94,
+ SCX_Miao = 95,
+ SCX_Modi = 96,
+ SCX_Mongolian = 97,
+ SCX_Mro = 98,
+ SCX_Multani = 99,
+ SCX_Myanmar = 100,
+ SCX_Nabataean = 101,
+ SCX_Nag_Mundari = 102,
+ SCX_Nandinagari = 103,
+ SCX_New_Tai_Lue = 104,
+ SCX_Newa = 105,
+ SCX_Nko = 106,
+ SCX_Nushu = 107,
+ SCX_Nyiakeng_Puachue_Hmong = 108,
+ SCX_Ogham = 109,
+ SCX_Ol_Chiki = 110,
+ SCX_Old_Hungarian = 111,
+ SCX_Old_Italic = 112,
+ SCX_Old_North_Arabian = 113,
+ SCX_Old_Permic = 114,
+ SCX_Old_Persian = 115,
+ SCX_Old_Sogdian = 116,
+ SCX_Old_South_Arabian = 117,
+ SCX_Old_Turkic = 118,
+ SCX_Old_Uyghur = 119,
+ SCX_Oriya = 120,
+ SCX_Osage = 121,
+ SCX_Osmanya = 122,
+ SCX_Pahawh_Hmong = 123,
+ SCX_Palmyrene = 124,
+ SCX_Pau_Cin_Hau = 125,
+ SCX_Phags_Pa = 126,
+ SCX_Phoenician = 127,
+ SCX_Psalter_Pahlavi = 128,
+ SCX_Rejang = 129,
+ SCX_Runic = 130,
+ SCX_Samaritan = 131,
+ SCX_Saurashtra = 132,
+ SCX_Sharada = 133,
+ SCX_Shavian = 134,
+ SCX_Siddham = 135,
+ SCX_SignWriting = 136,
+ SCX_Sinhala = 137,
+ SCX_Sogdian = 138,
+ SCX_Sora_Sompeng = 139,
+ SCX_Soyombo = 140,
+ SCX_Sundanese = 141,
+ SCX_Syloti_Nagri = 142,
+ SCX_Syriac = 143,
+ SCX_Tagalog = 144,
+ SCX_Tagbanwa = 145,
+ SCX_Tai_Le = 146,
+ SCX_Tai_Tham = 147,
+ SCX_Tai_Viet = 148,
+ SCX_Takri = 149,
+ SCX_Tamil = 150,
+ SCX_Tangsa = 151,
+ SCX_Tangut = 152,
+ SCX_Telugu = 153,
+ SCX_Thaana = 154,
+ SCX_Thai = 155,
+ SCX_Tibetan = 156,
+ SCX_Tifinagh = 157,
+ SCX_Tirhuta = 158,
+ SCX_Toto = 159,
+ SCX_Ugaritic = 160,
+ SCX_Vai = 161,
+ SCX_Vithkuqi = 162,
+ SCX_Wancho = 163,
+ SCX_Warang_Citi = 164,
+ SCX_Yezidi = 165,
+ SCX_Yi = 166,
+ SCX_Zanabazar_Square = 167,
SCX_use_AUX_TABLE_1 = -1,
SCX_use_AUX_TABLE_2 = -2,
SCX_use_AUX_TABLE_3 = -3,
@@ -78553,7 +80866,11 @@ typedef enum {
SCX_use_AUX_TABLE_52 = -52,
SCX_use_AUX_TABLE_53 = -53,
SCX_use_AUX_TABLE_54 = -54,
- SCX_use_AUX_TABLE_55 = -55
+ SCX_use_AUX_TABLE_55 = -55,
+ SCX_use_AUX_TABLE_56 = -56,
+ SCX_use_AUX_TABLE_57 = -57,
+ SCX_use_AUX_TABLE_58 = -58,
+ SCX_use_AUX_TABLE_59 = -59
} SCX_enum;
# endif /* EBCDIC 1047 */
@@ -78590,6 +80907,7 @@ static const SCX_enum SCX_AUX_TABLE_4[] = {
static const SCX_enum SCX_AUX_TABLE_5[] = {
SCX_Arabic,
SCX_Hanifi_Rohingya,
+ SCX_Nko,
SCX_Syriac,
SCX_Thaana,
SCX_Yezidi
@@ -78605,30 +80923,41 @@ static const SCX_enum SCX_AUX_TABLE_7[] = {
SCX_Adlam,
SCX_Arabic,
SCX_Hanifi_Rohingya,
+ SCX_Nko,
+ SCX_Syriac,
+ SCX_Thaana,
+ SCX_Yezidi
+};
+
+static const SCX_enum SCX_AUX_TABLE_8[] = {
+ SCX_Adlam,
+ SCX_Arabic,
+ SCX_Hanifi_Rohingya,
SCX_Mandaic,
SCX_Manichaean,
+ SCX_Old_Uyghur,
SCX_Psalter_Pahlavi,
SCX_Sogdian,
SCX_Syriac
};
-static const SCX_enum SCX_AUX_TABLE_8[] = {
+static const SCX_enum SCX_AUX_TABLE_9[] = {
SCX_Arabic,
SCX_Syriac
};
-static const SCX_enum SCX_AUX_TABLE_9[] = {
+static const SCX_enum SCX_AUX_TABLE_10[] = {
SCX_Arabic,
SCX_Thaana,
SCX_Yezidi
};
-static const SCX_enum SCX_AUX_TABLE_10[] = {
+static const SCX_enum SCX_AUX_TABLE_11[] = {
SCX_Arabic,
SCX_Hanifi_Rohingya
};
-static const SCX_enum SCX_AUX_TABLE_11[] = {
+static const SCX_enum SCX_AUX_TABLE_12[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Grantha,
@@ -78644,7 +80973,7 @@ static const SCX_enum SCX_AUX_TABLE_11[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_12[] = {
+static const SCX_enum SCX_AUX_TABLE_13[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Grantha,
@@ -78659,7 +80988,7 @@ static const SCX_enum SCX_AUX_TABLE_12[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_13[] = {
+static const SCX_enum SCX_AUX_TABLE_14[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Dogra,
@@ -78682,7 +81011,7 @@ static const SCX_enum SCX_AUX_TABLE_13[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_14[] = {
+static const SCX_enum SCX_AUX_TABLE_15[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Dogra,
@@ -78706,90 +81035,90 @@ static const SCX_enum SCX_AUX_TABLE_14[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_15[] = {
+static const SCX_enum SCX_AUX_TABLE_16[] = {
SCX_Devanagari,
SCX_Dogra,
SCX_Kaithi,
SCX_Mahajani
};
-static const SCX_enum SCX_AUX_TABLE_16[] = {
+static const SCX_enum SCX_AUX_TABLE_17[] = {
SCX_Bengali,
SCX_Chakma,
SCX_Syloti_Nagri
};
-static const SCX_enum SCX_AUX_TABLE_17[] = {
+static const SCX_enum SCX_AUX_TABLE_18[] = {
SCX_Gurmukhi,
SCX_Multani
};
-static const SCX_enum SCX_AUX_TABLE_18[] = {
+static const SCX_enum SCX_AUX_TABLE_19[] = {
SCX_Gujarati,
SCX_Khojki
};
-static const SCX_enum SCX_AUX_TABLE_19[] = {
+static const SCX_enum SCX_AUX_TABLE_20[] = {
SCX_Grantha,
SCX_Tamil
};
-static const SCX_enum SCX_AUX_TABLE_20[] = {
+static const SCX_enum SCX_AUX_TABLE_21[] = {
SCX_Kannada,
SCX_Nandinagari
};
-static const SCX_enum SCX_AUX_TABLE_21[] = {
+static const SCX_enum SCX_AUX_TABLE_22[] = {
SCX_Chakma,
SCX_Myanmar,
SCX_Tai_Le
};
-static const SCX_enum SCX_AUX_TABLE_22[] = {
+static const SCX_enum SCX_AUX_TABLE_23[] = {
SCX_Georgian,
SCX_Latin
};
-static const SCX_enum SCX_AUX_TABLE_23[] = {
+static const SCX_enum SCX_AUX_TABLE_24[] = {
SCX_Hangul,
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_24[] = {
+static const SCX_enum SCX_AUX_TABLE_25[] = {
SCX_Buhid,
SCX_Hanunoo,
SCX_Tagalog,
SCX_Tagbanwa
};
-static const SCX_enum SCX_AUX_TABLE_25[] = {
+static const SCX_enum SCX_AUX_TABLE_26[] = {
SCX_Mongolian,
SCX_Phags_Pa
};
-static const SCX_enum SCX_AUX_TABLE_26[] = {
+static const SCX_enum SCX_AUX_TABLE_27[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Grantha,
SCX_Kannada
};
-static const SCX_enum SCX_AUX_TABLE_27[] = {
+static const SCX_enum SCX_AUX_TABLE_28[] = {
SCX_Devanagari,
SCX_Grantha
};
-static const SCX_enum SCX_AUX_TABLE_28[] = {
+static const SCX_enum SCX_AUX_TABLE_29[] = {
SCX_Bengali,
SCX_Devanagari
};
-static const SCX_enum SCX_AUX_TABLE_29[] = {
+static const SCX_enum SCX_AUX_TABLE_30[] = {
SCX_Devanagari,
SCX_Sharada
};
-static const SCX_enum SCX_AUX_TABLE_30[] = {
+static const SCX_enum SCX_AUX_TABLE_31[] = {
SCX_Devanagari,
SCX_Kannada,
SCX_Malayalam,
@@ -78798,12 +81127,12 @@ static const SCX_enum SCX_AUX_TABLE_30[] = {
SCX_Telugu
};
-static const SCX_enum SCX_AUX_TABLE_31[] = {
+static const SCX_enum SCX_AUX_TABLE_32[] = {
SCX_Devanagari,
SCX_Nandinagari
};
-static const SCX_enum SCX_AUX_TABLE_32[] = {
+static const SCX_enum SCX_AUX_TABLE_33[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Grantha,
@@ -78814,36 +81143,36 @@ static const SCX_enum SCX_AUX_TABLE_32[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_33[] = {
+static const SCX_enum SCX_AUX_TABLE_34[] = {
SCX_Devanagari,
SCX_Grantha,
SCX_Kannada
};
-static const SCX_enum SCX_AUX_TABLE_34[] = {
+static const SCX_enum SCX_AUX_TABLE_35[] = {
SCX_Cyrillic,
SCX_Syriac
};
-static const SCX_enum SCX_AUX_TABLE_35[] = {
+static const SCX_enum SCX_AUX_TABLE_36[] = {
SCX_Latin,
SCX_Mongolian
};
-static const SCX_enum SCX_AUX_TABLE_36[] = {
+static const SCX_enum SCX_AUX_TABLE_37[] = {
SCX_Devanagari,
SCX_Grantha,
SCX_Latin
};
-static const SCX_enum SCX_AUX_TABLE_37[] = {
+static const SCX_enum SCX_AUX_TABLE_38[] = {
SCX_Han,
SCX_Hanb,
SCX_Jpan,
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_38[] = {
+static const SCX_enum SCX_AUX_TABLE_39[] = {
SCX_Bopomofo,
SCX_Han,
SCX_Hanb,
@@ -78855,7 +81184,7 @@ static const SCX_enum SCX_AUX_TABLE_38[] = {
SCX_Yi
};
-static const SCX_enum SCX_AUX_TABLE_39[] = {
+static const SCX_enum SCX_AUX_TABLE_40[] = {
SCX_Bopomofo,
SCX_Han,
SCX_Hanb,
@@ -78866,7 +81195,7 @@ static const SCX_enum SCX_AUX_TABLE_39[] = {
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_40[] = {
+static const SCX_enum SCX_AUX_TABLE_41[] = {
SCX_Bopomofo,
SCX_Han,
SCX_Hanb,
@@ -78874,13 +81203,13 @@ static const SCX_enum SCX_AUX_TABLE_40[] = {
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_41[] = {
+static const SCX_enum SCX_AUX_TABLE_42[] = {
SCX_Hiragana,
SCX_Jpan,
SCX_Katakana
};
-static const SCX_enum SCX_AUX_TABLE_42[] = {
+static const SCX_enum SCX_AUX_TABLE_43[] = {
SCX_Han,
SCX_Hanb,
SCX_Hiragana,
@@ -78889,17 +81218,17 @@ static const SCX_enum SCX_AUX_TABLE_42[] = {
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_43[] = {
+static const SCX_enum SCX_AUX_TABLE_44[] = {
SCX_Hiragana,
SCX_Jpan
};
-static const SCX_enum SCX_AUX_TABLE_44[] = {
+static const SCX_enum SCX_AUX_TABLE_45[] = {
SCX_Jpan,
SCX_Katakana
};
-static const SCX_enum SCX_AUX_TABLE_45[] = {
+static const SCX_enum SCX_AUX_TABLE_46[] = {
SCX_Han,
SCX_Hanb,
SCX_Jpan,
@@ -78907,7 +81236,7 @@ static const SCX_enum SCX_AUX_TABLE_45[] = {
SCX_Latin
};
-static const SCX_enum SCX_AUX_TABLE_46[] = {
+static const SCX_enum SCX_AUX_TABLE_47[] = {
SCX_Devanagari,
SCX_Dogra,
SCX_Gujarati,
@@ -78924,7 +81253,7 @@ static const SCX_enum SCX_AUX_TABLE_46[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_47[] = {
+static const SCX_enum SCX_AUX_TABLE_48[] = {
SCX_Devanagari,
SCX_Dogra,
SCX_Gujarati,
@@ -78940,7 +81269,7 @@ static const SCX_enum SCX_AUX_TABLE_47[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_48[] = {
+static const SCX_enum SCX_AUX_TABLE_49[] = {
SCX_Devanagari,
SCX_Dogra,
SCX_Gujarati,
@@ -78954,43 +81283,59 @@ static const SCX_enum SCX_AUX_TABLE_48[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_49[] = {
+static const SCX_enum SCX_AUX_TABLE_50[] = {
SCX_Devanagari,
SCX_Tamil
};
-static const SCX_enum SCX_AUX_TABLE_50[] = {
+static const SCX_enum SCX_AUX_TABLE_51[] = {
SCX_Kayah_Li,
SCX_Latin,
SCX_Myanmar
};
-static const SCX_enum SCX_AUX_TABLE_51[] = {
+static const SCX_enum SCX_AUX_TABLE_52[] = {
SCX_Buginese,
SCX_Javanese
};
-static const SCX_enum SCX_AUX_TABLE_52[] = {
+static const SCX_enum SCX_AUX_TABLE_53[] = {
+ SCX_Arabic,
+ SCX_Nko
+};
+
+static const SCX_enum SCX_AUX_TABLE_54[] = {
SCX_Arabic,
SCX_Thaana
};
-static const SCX_enum SCX_AUX_TABLE_53[] = {
+static const SCX_enum SCX_AUX_TABLE_55[] = {
SCX_Cypriot,
+ SCX_Cypro_Minoan,
SCX_Linear_B
};
-static const SCX_enum SCX_AUX_TABLE_54[] = {
+static const SCX_enum SCX_AUX_TABLE_56[] = {
+ SCX_Cypriot,
+ SCX_Linear_B
+};
+
+static const SCX_enum SCX_AUX_TABLE_57[] = {
SCX_Cypriot,
SCX_Linear_A,
SCX_Linear_B
};
-static const SCX_enum SCX_AUX_TABLE_55[] = {
+static const SCX_enum SCX_AUX_TABLE_58[] = {
SCX_Arabic,
SCX_Coptic
};
+static const SCX_enum SCX_AUX_TABLE_59[] = {
+ SCX_Manichaean,
+ SCX_Old_Uyghur
+};
+
static const SCX_enum * const SCX_AUX_TABLE_ptrs[] = {
NULL, /* Placeholder */
SCX_AUX_TABLE_1,
@@ -79047,7 +81392,11 @@ static const SCX_enum * const SCX_AUX_TABLE_ptrs[] = {
SCX_AUX_TABLE_52,
SCX_AUX_TABLE_53,
SCX_AUX_TABLE_54,
- SCX_AUX_TABLE_55
+ SCX_AUX_TABLE_55,
+ SCX_AUX_TABLE_56,
+ SCX_AUX_TABLE_57,
+ SCX_AUX_TABLE_58,
+ SCX_AUX_TABLE_59
};
/* Parallel table to the above, giving the number of elements in each table
@@ -79059,57 +81408,61 @@ static const U8 SCX_AUX_TABLE_lengths[] = {
2 /* SCX_AUX_TABLE_2 */,
2 /* SCX_AUX_TABLE_3 */,
2 /* SCX_AUX_TABLE_4 */,
- 5 /* SCX_AUX_TABLE_5 */,
+ 6 /* SCX_AUX_TABLE_5 */,
3 /* SCX_AUX_TABLE_6 */,
- 8 /* SCX_AUX_TABLE_7 */,
- 2 /* SCX_AUX_TABLE_8 */,
- 3 /* SCX_AUX_TABLE_9 */,
- 2 /* SCX_AUX_TABLE_10 */,
- 13 /* SCX_AUX_TABLE_11 */,
- 12 /* SCX_AUX_TABLE_12 */,
- 20 /* SCX_AUX_TABLE_13 */,
- 21 /* SCX_AUX_TABLE_14 */,
- 4 /* SCX_AUX_TABLE_15 */,
- 3 /* SCX_AUX_TABLE_16 */,
- 2 /* SCX_AUX_TABLE_17 */,
+ 7 /* SCX_AUX_TABLE_7 */,
+ 9 /* SCX_AUX_TABLE_8 */,
+ 2 /* SCX_AUX_TABLE_9 */,
+ 3 /* SCX_AUX_TABLE_10 */,
+ 2 /* SCX_AUX_TABLE_11 */,
+ 13 /* SCX_AUX_TABLE_12 */,
+ 12 /* SCX_AUX_TABLE_13 */,
+ 20 /* SCX_AUX_TABLE_14 */,
+ 21 /* SCX_AUX_TABLE_15 */,
+ 4 /* SCX_AUX_TABLE_16 */,
+ 3 /* SCX_AUX_TABLE_17 */,
2 /* SCX_AUX_TABLE_18 */,
2 /* SCX_AUX_TABLE_19 */,
2 /* SCX_AUX_TABLE_20 */,
- 3 /* SCX_AUX_TABLE_21 */,
- 2 /* SCX_AUX_TABLE_22 */,
+ 2 /* SCX_AUX_TABLE_21 */,
+ 3 /* SCX_AUX_TABLE_22 */,
2 /* SCX_AUX_TABLE_23 */,
- 4 /* SCX_AUX_TABLE_24 */,
- 2 /* SCX_AUX_TABLE_25 */,
- 4 /* SCX_AUX_TABLE_26 */,
- 2 /* SCX_AUX_TABLE_27 */,
+ 2 /* SCX_AUX_TABLE_24 */,
+ 4 /* SCX_AUX_TABLE_25 */,
+ 2 /* SCX_AUX_TABLE_26 */,
+ 4 /* SCX_AUX_TABLE_27 */,
2 /* SCX_AUX_TABLE_28 */,
2 /* SCX_AUX_TABLE_29 */,
- 6 /* SCX_AUX_TABLE_30 */,
- 2 /* SCX_AUX_TABLE_31 */,
- 8 /* SCX_AUX_TABLE_32 */,
- 3 /* SCX_AUX_TABLE_33 */,
- 2 /* SCX_AUX_TABLE_34 */,
+ 2 /* SCX_AUX_TABLE_30 */,
+ 6 /* SCX_AUX_TABLE_31 */,
+ 2 /* SCX_AUX_TABLE_32 */,
+ 8 /* SCX_AUX_TABLE_33 */,
+ 3 /* SCX_AUX_TABLE_34 */,
2 /* SCX_AUX_TABLE_35 */,
- 3 /* SCX_AUX_TABLE_36 */,
- 4 /* SCX_AUX_TABLE_37 */,
- 9 /* SCX_AUX_TABLE_38 */,
- 8 /* SCX_AUX_TABLE_39 */,
- 5 /* SCX_AUX_TABLE_40 */,
- 3 /* SCX_AUX_TABLE_41 */,
- 6 /* SCX_AUX_TABLE_42 */,
- 2 /* SCX_AUX_TABLE_43 */,
+ 2 /* SCX_AUX_TABLE_36 */,
+ 3 /* SCX_AUX_TABLE_37 */,
+ 4 /* SCX_AUX_TABLE_38 */,
+ 9 /* SCX_AUX_TABLE_39 */,
+ 8 /* SCX_AUX_TABLE_40 */,
+ 5 /* SCX_AUX_TABLE_41 */,
+ 3 /* SCX_AUX_TABLE_42 */,
+ 6 /* SCX_AUX_TABLE_43 */,
2 /* SCX_AUX_TABLE_44 */,
- 5 /* SCX_AUX_TABLE_45 */,
- 14 /* SCX_AUX_TABLE_46 */,
- 13 /* SCX_AUX_TABLE_47 */,
- 11 /* SCX_AUX_TABLE_48 */,
- 2 /* SCX_AUX_TABLE_49 */,
- 3 /* SCX_AUX_TABLE_50 */,
- 2 /* SCX_AUX_TABLE_51 */,
+ 2 /* SCX_AUX_TABLE_45 */,
+ 5 /* SCX_AUX_TABLE_46 */,
+ 14 /* SCX_AUX_TABLE_47 */,
+ 13 /* SCX_AUX_TABLE_48 */,
+ 11 /* SCX_AUX_TABLE_49 */,
+ 2 /* SCX_AUX_TABLE_50 */,
+ 3 /* SCX_AUX_TABLE_51 */,
2 /* SCX_AUX_TABLE_52 */,
2 /* SCX_AUX_TABLE_53 */,
- 3 /* SCX_AUX_TABLE_54 */,
- 2 /* SCX_AUX_TABLE_55 */
+ 2 /* SCX_AUX_TABLE_54 */,
+ 3 /* SCX_AUX_TABLE_55 */,
+ 2 /* SCX_AUX_TABLE_56 */,
+ 3 /* SCX_AUX_TABLE_57 */,
+ 2 /* SCX_AUX_TABLE_58 */,
+ 2 /* SCX_AUX_TABLE_59 */
};
/* This table, indexed by the script enum, gives the zero code point for that
@@ -79146,6 +81499,7 @@ static const UV script_zeros[] = {
'0', /* Coptic */
'0', /* Cuneiform */
'0', /* Cypriot */
+ '0', /* Cypro_Minoan */
'0', /* Cyrillic */
'0', /* Deseret */
0x966, /* Devanagari */
@@ -79182,6 +81536,7 @@ static const UV script_zeros[] = {
0x966, /* Kaithi */
0xce6, /* Kannada */
'0', /* Katakana */
+ 0x11f50, /* Kawi */
0xa900, /* Kayah_Li */
'0', /* Kharoshthi */
'0', /* Khitan_Small_Script */
@@ -79217,6 +81572,7 @@ static const UV script_zeros[] = {
0xa66, /* Multani */
0, /* Myanmar */
'0', /* Nabataean */
+ 0x1e4f0, /* Nag_Mundari */
0xce6, /* Nandinagari */
0x19d0, /* New_Tai_Lue */
0x11450, /* Newa */
@@ -79233,6 +81589,7 @@ static const UV script_zeros[] = {
'0', /* Old_Sogdian */
'0', /* Old_South_Arabian */
'0', /* Old_Turkic */
+ '0', /* Old_Uyghur */
0xb66, /* Oriya */
'0', /* Osage */
0x104a0, /* Osmanya */
@@ -79264,6 +81621,7 @@ static const UV script_zeros[] = {
'0', /* Tai_Viet */
0x116c0, /* Takri */
0xbe6, /* Tamil */
+ 0x16ac0, /* Tangsa */
'0', /* Tangut */
0xc66, /* Telugu */
0x660, /* Thaana */
@@ -79271,8 +81629,10 @@ static const UV script_zeros[] = {
0xf20, /* Tibetan */
'0', /* Tifinagh */
0x114d0, /* Tirhuta */
+ '0', /* Toto */
'0', /* Ugaritic */
0xa620, /* Vai */
+ '0', /* Vithkuqi */
0x1e2f0, /* Wancho */
0x118e0, /* Warang_Citi */
0x660 /* Yezidi */
@@ -79377,9 +81737,6 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Arabic,
SCX_use_AUX_TABLE_5,
SCX_use_AUX_TABLE_6,
- SCX_Unknown,
- SCX_Arabic,
- SCX_use_AUX_TABLE_5,
SCX_Arabic,
SCX_use_AUX_TABLE_7,
SCX_Arabic,
@@ -79387,10 +81744,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Arabic,
SCX_use_AUX_TABLE_9,
SCX_Arabic,
- SCX_use_AUX_TABLE_8,
- SCX_Arabic,
SCX_use_AUX_TABLE_10,
SCX_Arabic,
+ SCX_use_AUX_TABLE_9,
+ SCX_Arabic,
+ SCX_use_AUX_TABLE_11,
+ SCX_Arabic,
SCX_Common,
SCX_Arabic,
SCX_Syriac,
@@ -79422,13 +81781,13 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Common,
SCX_Arabic,
SCX_Devanagari,
- SCX_use_AUX_TABLE_11,
SCX_use_AUX_TABLE_12,
+ SCX_use_AUX_TABLE_13,
SCX_Inherited,
SCX_Devanagari,
- SCX_use_AUX_TABLE_13,
SCX_use_AUX_TABLE_14,
SCX_use_AUX_TABLE_15,
+ SCX_use_AUX_TABLE_16,
SCX_Devanagari,
SCX_Bengali,
SCX_Unknown,
@@ -79456,7 +81815,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Bengali,
SCX_Unknown,
- SCX_use_AUX_TABLE_16,
+ SCX_use_AUX_TABLE_17,
SCX_Bengali,
SCX_Unknown,
SCX_Gurmukhi,
@@ -79489,7 +81848,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Gurmukhi,
SCX_Unknown,
- SCX_use_AUX_TABLE_17,
+ SCX_use_AUX_TABLE_18,
SCX_Gurmukhi,
SCX_Unknown,
SCX_Gujarati,
@@ -79516,7 +81875,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Gujarati,
SCX_Unknown,
- SCX_use_AUX_TABLE_18,
+ SCX_use_AUX_TABLE_19,
SCX_Gujarati,
SCX_Unknown,
SCX_Gujarati,
@@ -79579,7 +81938,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Tamil,
SCX_Unknown,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Tamil,
SCX_Unknown,
SCX_Telugu,
@@ -79605,6 +81964,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Telugu,
SCX_Unknown,
SCX_Telugu,
+ SCX_Unknown,
+ SCX_Telugu,
SCX_Kannada,
SCX_Unknown,
SCX_Kannada,
@@ -79627,7 +81988,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Kannada,
SCX_Unknown,
- SCX_use_AUX_TABLE_20,
+ SCX_use_AUX_TABLE_21,
SCX_Unknown,
SCX_Kannada,
SCX_Unknown,
@@ -79711,7 +82072,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Tibetan,
SCX_Unknown,
SCX_Myanmar,
- SCX_use_AUX_TABLE_21,
+ SCX_use_AUX_TABLE_22,
SCX_Myanmar,
SCX_Georgian,
SCX_Unknown,
@@ -79720,9 +82081,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Georgian,
SCX_Unknown,
SCX_Georgian,
- SCX_use_AUX_TABLE_22,
- SCX_Georgian,
SCX_use_AUX_TABLE_23,
+ SCX_Georgian,
+ SCX_use_AUX_TABLE_24,
SCX_Ethiopic,
SCX_Unknown,
SCX_Ethiopic,
@@ -79773,9 +82134,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Tagalog,
SCX_Unknown,
SCX_Tagalog,
- SCX_Unknown,
SCX_Hanunoo,
- SCX_use_AUX_TABLE_24,
+ SCX_use_AUX_TABLE_25,
SCX_Unknown,
SCX_Buhid,
SCX_Unknown,
@@ -79792,11 +82152,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Khmer,
SCX_Unknown,
SCX_Mongolian,
- SCX_use_AUX_TABLE_25,
- SCX_Mongolian,
- SCX_use_AUX_TABLE_25,
+ SCX_use_AUX_TABLE_26,
SCX_Mongolian,
- SCX_Unknown,
+ SCX_use_AUX_TABLE_26,
SCX_Mongolian,
SCX_Unknown,
SCX_Mongolian,
@@ -79862,33 +82220,33 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Georgian,
SCX_Sundanese,
SCX_Unknown,
- SCX_use_AUX_TABLE_26,
- SCX_Devanagari,
- SCX_use_AUX_TABLE_26,
SCX_use_AUX_TABLE_27,
SCX_Devanagari,
+ SCX_use_AUX_TABLE_27,
SCX_use_AUX_TABLE_28,
+ SCX_Devanagari,
SCX_use_AUX_TABLE_29,
- SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_30,
SCX_use_AUX_TABLE_29,
SCX_use_AUX_TABLE_30,
+ SCX_use_AUX_TABLE_31,
SCX_Devanagari,
- SCX_use_AUX_TABLE_29,
+ SCX_use_AUX_TABLE_30,
SCX_Devanagari,
+ SCX_use_AUX_TABLE_30,
SCX_use_AUX_TABLE_29,
- SCX_use_AUX_TABLE_28,
SCX_Devanagari,
- SCX_use_AUX_TABLE_31,
- SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_32,
+ SCX_use_AUX_TABLE_29,
SCX_Devanagari,
- SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_29,
SCX_Devanagari,
- SCX_use_AUX_TABLE_32,
- SCX_use_AUX_TABLE_27,
SCX_use_AUX_TABLE_33,
SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_34,
+ SCX_use_AUX_TABLE_29,
SCX_Bengali,
- SCX_use_AUX_TABLE_27,
+ SCX_use_AUX_TABLE_28,
SCX_Nandinagari,
SCX_Unknown,
SCX_Latin,
@@ -79903,9 +82261,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Latin,
SCX_Greek,
SCX_Inherited,
- SCX_use_AUX_TABLE_34,
+ SCX_use_AUX_TABLE_35,
SCX_Inherited,
- SCX_Unknown,
+ SCX_Syriac,
SCX_Inherited,
SCX_Latin,
SCX_Greek,
@@ -79943,7 +82301,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Common,
SCX_Inherited,
SCX_Common,
- SCX_use_AUX_TABLE_35,
+ SCX_use_AUX_TABLE_36,
SCX_Common,
SCX_Unknown,
SCX_Common,
@@ -79958,7 +82316,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Common,
SCX_Unknown,
SCX_Inherited,
- SCX_use_AUX_TABLE_36,
+ SCX_use_AUX_TABLE_37,
SCX_Unknown,
SCX_Common,
SCX_Greek,
@@ -79984,9 +82342,6 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Common,
SCX_Glagolitic,
- SCX_Unknown,
- SCX_Glagolitic,
- SCX_Unknown,
SCX_Latin,
SCX_Coptic,
SCX_Unknown,
@@ -80025,78 +82380,77 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_use_AUX_TABLE_3,
SCX_Common,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
SCX_Common,
- SCX_use_AUX_TABLE_38,
SCX_use_AUX_TABLE_39,
+ SCX_use_AUX_TABLE_40,
SCX_Common,
- SCX_use_AUX_TABLE_37,
- SCX_use_AUX_TABLE_38,
- SCX_Common,
- SCX_use_AUX_TABLE_39,
SCX_use_AUX_TABLE_38,
SCX_use_AUX_TABLE_39,
SCX_Common,
- SCX_use_AUX_TABLE_37,
SCX_use_AUX_TABLE_40,
- SCX_use_AUX_TABLE_23,
SCX_use_AUX_TABLE_39,
- SCX_use_AUX_TABLE_41,
+ SCX_use_AUX_TABLE_40,
SCX_Common,
- SCX_use_AUX_TABLE_39,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
+ SCX_use_AUX_TABLE_41,
+ SCX_use_AUX_TABLE_24,
+ SCX_use_AUX_TABLE_40,
SCX_use_AUX_TABLE_42,
- SCX_use_AUX_TABLE_37,
- SCX_Unknown,
+ SCX_Common,
+ SCX_use_AUX_TABLE_40,
+ SCX_use_AUX_TABLE_38,
SCX_use_AUX_TABLE_43,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_41,
- SCX_use_AUX_TABLE_43,
- SCX_use_AUX_TABLE_41,
SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_38,
- SCX_use_AUX_TABLE_41,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_42,
SCX_use_AUX_TABLE_44,
+ SCX_use_AUX_TABLE_42,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_39,
+ SCX_use_AUX_TABLE_42,
+ SCX_use_AUX_TABLE_45,
SCX_Unknown,
SCX_use_AUX_TABLE_1,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_use_AUX_TABLE_1,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_37,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_38,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
- SCX_Unknown,
+ SCX_use_AUX_TABLE_38,
SCX_Yi,
SCX_Unknown,
SCX_Yi,
@@ -80109,7 +82463,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Cyrillic,
SCX_Bamum,
SCX_Unknown,
- SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_46,
SCX_Common,
SCX_Latin,
SCX_Common,
@@ -80118,11 +82472,15 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Latin,
SCX_Unknown,
SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
SCX_Syloti_Nagri,
SCX_Unknown,
- SCX_use_AUX_TABLE_46,
SCX_use_AUX_TABLE_47,
SCX_use_AUX_TABLE_48,
+ SCX_use_AUX_TABLE_49,
SCX_Unknown,
SCX_Phags_Pa,
SCX_Unknown,
@@ -80131,21 +82489,21 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Saurashtra,
SCX_Unknown,
SCX_Devanagari,
- SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_29,
SCX_Devanagari,
- SCX_use_AUX_TABLE_49,
+ SCX_use_AUX_TABLE_50,
SCX_Devanagari,
SCX_Kayah_Li,
- SCX_use_AUX_TABLE_50,
+ SCX_use_AUX_TABLE_51,
SCX_Kayah_Li,
SCX_Rejang,
SCX_Unknown,
SCX_Rejang,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
SCX_Javanese,
SCX_Unknown,
- SCX_use_AUX_TABLE_51,
+ SCX_use_AUX_TABLE_52,
SCX_Javanese,
SCX_Unknown,
SCX_Javanese,
@@ -80186,15 +82544,15 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Meetei_Mayek,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Latin,
SCX_Unknown,
@@ -80214,24 +82572,25 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Arabic,
SCX_Unknown,
SCX_Arabic,
- SCX_Common,
+ SCX_use_AUX_TABLE_53,
+ SCX_Arabic,
SCX_Unknown,
SCX_Arabic,
SCX_Unknown,
SCX_Arabic,
SCX_Unknown,
SCX_Arabic,
- SCX_use_AUX_TABLE_52,
+ SCX_use_AUX_TABLE_54,
+ SCX_Arabic,
+ SCX_use_AUX_TABLE_54,
SCX_Arabic,
- SCX_use_AUX_TABLE_52,
- SCX_Unknown,
SCX_Inherited,
SCX_Common,
SCX_Unknown,
SCX_Inherited,
SCX_Cyrillic,
SCX_Common,
- SCX_use_AUX_TABLE_39,
+ SCX_use_AUX_TABLE_40,
SCX_Common,
SCX_Unknown,
SCX_Common,
@@ -80249,20 +82608,20 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Common,
SCX_Latin,
SCX_Common,
- SCX_use_AUX_TABLE_38,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_41,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_41,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_39,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_42,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_42,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
@@ -80284,11 +82643,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Linear_B,
SCX_Unknown,
- SCX_use_AUX_TABLE_53,
+ SCX_use_AUX_TABLE_55,
+ SCX_use_AUX_TABLE_56,
SCX_Unknown,
- SCX_use_AUX_TABLE_54,
+ SCX_use_AUX_TABLE_57,
SCX_Unknown,
- SCX_use_AUX_TABLE_53,
+ SCX_use_AUX_TABLE_56,
SCX_Greek,
SCX_Unknown,
SCX_Common,
@@ -80302,7 +82662,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Carian,
SCX_Unknown,
- SCX_use_AUX_TABLE_55,
+ SCX_use_AUX_TABLE_58,
SCX_Unknown,
SCX_Old_Italic,
SCX_Unknown,
@@ -80333,6 +82693,21 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Caucasian_Albanian,
SCX_Unknown,
SCX_Caucasian_Albanian,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
SCX_Unknown,
SCX_Linear_A,
SCX_Unknown,
@@ -80340,6 +82715,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Linear_A,
SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
SCX_Cypriot,
SCX_Unknown,
SCX_Cypriot,
@@ -80399,6 +82780,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Manichaean,
SCX_Unknown,
SCX_Manichaean,
+ SCX_use_AUX_TABLE_59,
+ SCX_Manichaean,
SCX_Unknown,
SCX_Avestan,
SCX_Unknown,
@@ -80434,10 +82817,13 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Yezidi,
SCX_Unknown,
+ SCX_Arabic,
SCX_Old_Sogdian,
SCX_Unknown,
SCX_Sogdian,
SCX_Unknown,
+ SCX_Old_Uyghur,
+ SCX_Unknown,
SCX_Chorasmian,
SCX_Unknown,
SCX_Elymaic,
@@ -80484,9 +82870,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Khudawadi,
SCX_Unknown,
SCX_Grantha,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Grantha,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Unknown,
SCX_Grantha,
SCX_Unknown,
@@ -80500,7 +82886,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Grantha,
SCX_Unknown,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Grantha,
SCX_Unknown,
SCX_Grantha,
@@ -80576,8 +82962,11 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Soyombo,
SCX_Unknown,
+ SCX_Canadian_Aboriginal,
SCX_Pau_Cin_Hau,
SCX_Unknown,
+ SCX_Devanagari,
+ SCX_Unknown,
SCX_Bhaiksuki,
SCX_Unknown,
SCX_Bhaiksuki,
@@ -80620,12 +83009,18 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Makasar,
SCX_Unknown,
+ SCX_Kawi,
+ SCX_Unknown,
+ SCX_Kawi,
+ SCX_Unknown,
+ SCX_Kawi,
+ SCX_Unknown,
SCX_Lisu,
SCX_Unknown,
SCX_Tamil,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Tamil,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Tamil,
SCX_Unknown,
SCX_Tamil,
@@ -80637,7 +83032,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Cuneiform,
SCX_Unknown,
- SCX_Egyptian_Hieroglyphs,
+ SCX_Cypro_Minoan,
SCX_Unknown,
SCX_Egyptian_Hieroglyphs,
SCX_Unknown,
@@ -80650,6 +83045,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Mro,
SCX_Unknown,
SCX_Mro,
+ SCX_Tangsa,
+ SCX_Unknown,
+ SCX_Tangsa,
SCX_Unknown,
SCX_Bassa_Vah,
SCX_Unknown,
@@ -80675,10 +83073,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Tangut,
SCX_Nushu,
- SCX_Common,
+ SCX_use_AUX_TABLE_38,
SCX_Khitan_Small_Script,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Tangut,
SCX_Unknown,
@@ -80687,13 +83085,24 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Tangut,
SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_43,
+ SCX_use_AUX_TABLE_45,
SCX_Unknown,
- SCX_use_AUX_TABLE_43,
+ SCX_use_AUX_TABLE_44,
SCX_Unknown,
SCX_use_AUX_TABLE_44,
SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
SCX_Nushu,
SCX_Unknown,
SCX_Duployan,
@@ -80706,6 +83115,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Duployan,
SCX_Unknown,
+ SCX_Inherited,
+ SCX_Unknown,
+ SCX_Inherited,
+ SCX_Unknown,
+ SCX_Common,
+ SCX_Unknown,
SCX_Common,
SCX_Unknown,
SCX_Common,
@@ -80726,7 +83141,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Common,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_Common,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
SCX_Unknown,
SCX_Common,
@@ -80776,6 +83193,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_SignWriting,
SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
SCX_Glagolitic,
SCX_Unknown,
SCX_Glagolitic,
@@ -80786,6 +83207,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Glagolitic,
SCX_Unknown,
+ SCX_Cyrillic,
+ SCX_Unknown,
+ SCX_Cyrillic,
+ SCX_Unknown,
SCX_Nyiakeng_Puachue_Hmong,
SCX_Unknown,
SCX_Nyiakeng_Puachue_Hmong,
@@ -80794,10 +83219,22 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Nyiakeng_Puachue_Hmong,
SCX_Unknown,
+ SCX_Toto,
+ SCX_Unknown,
SCX_Wancho,
SCX_Unknown,
SCX_Wancho,
SCX_Unknown,
+ SCX_Nag_Mundari,
+ SCX_Unknown,
+ SCX_Ethiopic,
+ SCX_Unknown,
+ SCX_Ethiopic,
+ SCX_Unknown,
+ SCX_Ethiopic,
+ SCX_Unknown,
+ SCX_Ethiopic,
+ SCX_Unknown,
SCX_Mende_Kikakui,
SCX_Unknown,
SCX_Mende_Kikakui,
@@ -80895,14 +83332,14 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Common,
SCX_Unknown,
SCX_Common,
- SCX_use_AUX_TABLE_43,
+ SCX_use_AUX_TABLE_44,
SCX_Common,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
@@ -80956,21 +83393,21 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
SCX_Unknown,
SCX_Common,
SCX_Unknown,
- SCX_Common,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
@@ -80992,7 +83429,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
- 1695, /* Number of elements */
+ 1772, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -81091,7 +83528,6 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x61B,
0x61C,
0x61D,
- 0x61E,
0x61F,
0x620,
0x640,
@@ -81127,11 +83563,11 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x8E2,
0x8E3,
0x900,
@@ -81303,7 +83739,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -81313,6 +83749,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -81336,14 +83774,14 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -81404,7 +83842,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -81484,9 +83922,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
+ 0x1716,
+ 0x171F,
0x1720,
0x1735,
0x1737,
@@ -81509,8 +83946,6 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x1804,
0x1805,
0x1806,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -81553,11 +83988,11 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BC0,
0x1BF4,
@@ -81669,7 +84104,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F0,
0x20F1,
@@ -81697,9 +84132,6 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x2B96,
0x2B97,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
0x2C60,
0x2C80,
0x2CF4,
@@ -81737,7 +84169,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x2E00,
0x2E43,
0x2E44,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -81809,7 +84241,6 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
0xA000,
0xA48D,
0xA490,
@@ -81827,10 +84258,14 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA788,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA800,
0xA82D,
0xA830,
@@ -81925,14 +84360,15 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0xFB45,
0xFB46,
0xFB50,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
0xFD3E,
0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
0xFDF2,
0xFDF3,
@@ -81998,6 +84434,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x10080,
0x100FB,
0x10100,
+ 0x10102,
0x10103,
0x10107,
0x10134,
@@ -82047,12 +84484,33 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x10564,
0x1056F,
0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -82112,6 +84570,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x10AC0,
0x10AE7,
0x10AEB,
+ 0x10AF2,
+ 0x10AF3,
0x10AF7,
0x10B00,
0x10B36,
@@ -82147,10 +84607,13 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x10EAE,
0x10EB0,
0x10EB2,
+ 0x10EFD,
0x10F00,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -82158,10 +84621,10 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
0x11080,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -82181,7 +84644,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -82249,7 +84712,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -82257,7 +84720,7 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -82289,8 +84752,11 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x11A48,
0x11A50,
0x11AA3,
+ 0x11AB0,
0x11AC0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -82333,6 +84799,12 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -82350,10 +84822,10 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -82364,6 +84836,9 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x16A6A,
0x16A6E,
0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -82400,11 +84875,22 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
0x1B001,
- 0x1B11F,
+ 0x1B120,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -82419,6 +84905,12 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -82432,9 +84924,11 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -82489,6 +84983,10 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -82499,6 +84997,10 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -82507,10 +85009,22 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -82621,16 +85135,18 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -82644,27 +85160,23 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -82672,9 +85184,9 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -82685,6 +85197,8 @@ static const UV _Perl_SCX_invlist[] = { /* for EBCDIC 037 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -82736,138 +85250,145 @@ typedef enum {
SCX_Coptic = 26,
SCX_Cuneiform = 27,
SCX_Cypriot = 28,
- SCX_Cyrillic = 29,
- SCX_Deseret = 30,
- SCX_Devanagari = 31,
- SCX_Dives_Akuru = 32,
- SCX_Dogra = 33,
- SCX_Duployan = 34,
- SCX_Egyptian_Hieroglyphs = 35,
- SCX_Elbasan = 36,
- SCX_Elymaic = 37,
- SCX_Ethiopic = 38,
- SCX_Georgian = 39,
- SCX_Glagolitic = 40,
- SCX_Gothic = 41,
- SCX_Grantha = 42,
- SCX_Greek = 43,
- SCX_Gujarati = 44,
- SCX_Gunjala_Gondi = 45,
- SCX_Gurmukhi = 46,
- SCX_Han = 47,
- SCX_Hanb = 48,
- SCX_Hangul = 49,
- SCX_Hanifi_Rohingya = 50,
- SCX_Hanunoo = 51,
- SCX_Hatran = 52,
- SCX_Hebrew = 53,
- SCX_Hiragana = 54,
- SCX_Imperial_Aramaic = 55,
- SCX_Inherited = 56,
- SCX_Inscriptional_Pahlavi = 57,
- SCX_Inscriptional_Parthian = 58,
- SCX_INVALID = 59,
- SCX_Javanese = 60,
- SCX_Jpan = 61,
- SCX_Kaithi = 62,
- SCX_Kannada = 63,
- SCX_Katakana = 64,
- SCX_Kayah_Li = 65,
- SCX_Kharoshthi = 66,
- SCX_Khitan_Small_Script = 67,
- SCX_Khmer = 68,
- SCX_Khojki = 69,
- SCX_Khudawadi = 70,
- SCX_Kore = 71,
- SCX_Lao = 72,
- SCX_Latin = 73,
- SCX_Lepcha = 74,
- SCX_Limbu = 75,
- SCX_Linear_A = 76,
- SCX_Linear_B = 77,
- SCX_Lisu = 78,
- SCX_Lycian = 79,
- SCX_Lydian = 80,
- SCX_Mahajani = 81,
- SCX_Makasar = 82,
- SCX_Malayalam = 83,
- SCX_Mandaic = 84,
- SCX_Manichaean = 85,
- SCX_Marchen = 86,
- SCX_Masaram_Gondi = 87,
- SCX_Medefaidrin = 88,
- SCX_Meetei_Mayek = 89,
- SCX_Mende_Kikakui = 90,
- SCX_Meroitic_Cursive = 91,
- SCX_Meroitic_Hieroglyphs = 92,
- SCX_Miao = 93,
- SCX_Modi = 94,
- SCX_Mongolian = 95,
- SCX_Mro = 96,
- SCX_Multani = 97,
- SCX_Myanmar = 98,
- SCX_Nabataean = 99,
- SCX_Nandinagari = 100,
- SCX_New_Tai_Lue = 101,
- SCX_Newa = 102,
- SCX_Nko = 103,
- SCX_Nushu = 104,
- SCX_Nyiakeng_Puachue_Hmong = 105,
- SCX_Ogham = 106,
- SCX_Ol_Chiki = 107,
- SCX_Old_Hungarian = 108,
- SCX_Old_Italic = 109,
- SCX_Old_North_Arabian = 110,
- SCX_Old_Permic = 111,
- SCX_Old_Persian = 112,
- SCX_Old_Sogdian = 113,
- SCX_Old_South_Arabian = 114,
- SCX_Old_Turkic = 115,
- SCX_Oriya = 116,
- SCX_Osage = 117,
- SCX_Osmanya = 118,
- SCX_Pahawh_Hmong = 119,
- SCX_Palmyrene = 120,
- SCX_Pau_Cin_Hau = 121,
- SCX_Phags_Pa = 122,
- SCX_Phoenician = 123,
- SCX_Psalter_Pahlavi = 124,
- SCX_Rejang = 125,
- SCX_Runic = 126,
- SCX_Samaritan = 127,
- SCX_Saurashtra = 128,
- SCX_Sharada = 129,
- SCX_Shavian = 130,
- SCX_Siddham = 131,
- SCX_SignWriting = 132,
- SCX_Sinhala = 133,
- SCX_Sogdian = 134,
- SCX_Sora_Sompeng = 135,
- SCX_Soyombo = 136,
- SCX_Sundanese = 137,
- SCX_Syloti_Nagri = 138,
- SCX_Syriac = 139,
- SCX_Tagalog = 140,
- SCX_Tagbanwa = 141,
- SCX_Tai_Le = 142,
- SCX_Tai_Tham = 143,
- SCX_Tai_Viet = 144,
- SCX_Takri = 145,
- SCX_Tamil = 146,
- SCX_Tangut = 147,
- SCX_Telugu = 148,
- SCX_Thaana = 149,
- SCX_Thai = 150,
- SCX_Tibetan = 151,
- SCX_Tifinagh = 152,
- SCX_Tirhuta = 153,
- SCX_Ugaritic = 154,
- SCX_Vai = 155,
- SCX_Wancho = 156,
- SCX_Warang_Citi = 157,
- SCX_Yezidi = 158,
- SCX_Yi = 159,
- SCX_Zanabazar_Square = 160,
+ SCX_Cypro_Minoan = 29,
+ SCX_Cyrillic = 30,
+ SCX_Deseret = 31,
+ SCX_Devanagari = 32,
+ SCX_Dives_Akuru = 33,
+ SCX_Dogra = 34,
+ SCX_Duployan = 35,
+ SCX_Egyptian_Hieroglyphs = 36,
+ SCX_Elbasan = 37,
+ SCX_Elymaic = 38,
+ SCX_Ethiopic = 39,
+ SCX_Georgian = 40,
+ SCX_Glagolitic = 41,
+ SCX_Gothic = 42,
+ SCX_Grantha = 43,
+ SCX_Greek = 44,
+ SCX_Gujarati = 45,
+ SCX_Gunjala_Gondi = 46,
+ SCX_Gurmukhi = 47,
+ SCX_Han = 48,
+ SCX_Hanb = 49,
+ SCX_Hangul = 50,
+ SCX_Hanifi_Rohingya = 51,
+ SCX_Hanunoo = 52,
+ SCX_Hatran = 53,
+ SCX_Hebrew = 54,
+ SCX_Hiragana = 55,
+ SCX_Imperial_Aramaic = 56,
+ SCX_Inherited = 57,
+ SCX_Inscriptional_Pahlavi = 58,
+ SCX_Inscriptional_Parthian = 59,
+ SCX_INVALID = 60,
+ SCX_Javanese = 61,
+ SCX_Jpan = 62,
+ SCX_Kaithi = 63,
+ SCX_Kannada = 64,
+ SCX_Katakana = 65,
+ SCX_Kawi = 66,
+ SCX_Kayah_Li = 67,
+ SCX_Kharoshthi = 68,
+ SCX_Khitan_Small_Script = 69,
+ SCX_Khmer = 70,
+ SCX_Khojki = 71,
+ SCX_Khudawadi = 72,
+ SCX_Kore = 73,
+ SCX_Lao = 74,
+ SCX_Latin = 75,
+ SCX_Lepcha = 76,
+ SCX_Limbu = 77,
+ SCX_Linear_A = 78,
+ SCX_Linear_B = 79,
+ SCX_Lisu = 80,
+ SCX_Lycian = 81,
+ SCX_Lydian = 82,
+ SCX_Mahajani = 83,
+ SCX_Makasar = 84,
+ SCX_Malayalam = 85,
+ SCX_Mandaic = 86,
+ SCX_Manichaean = 87,
+ SCX_Marchen = 88,
+ SCX_Masaram_Gondi = 89,
+ SCX_Medefaidrin = 90,
+ SCX_Meetei_Mayek = 91,
+ SCX_Mende_Kikakui = 92,
+ SCX_Meroitic_Cursive = 93,
+ SCX_Meroitic_Hieroglyphs = 94,
+ SCX_Miao = 95,
+ SCX_Modi = 96,
+ SCX_Mongolian = 97,
+ SCX_Mro = 98,
+ SCX_Multani = 99,
+ SCX_Myanmar = 100,
+ SCX_Nabataean = 101,
+ SCX_Nag_Mundari = 102,
+ SCX_Nandinagari = 103,
+ SCX_New_Tai_Lue = 104,
+ SCX_Newa = 105,
+ SCX_Nko = 106,
+ SCX_Nushu = 107,
+ SCX_Nyiakeng_Puachue_Hmong = 108,
+ SCX_Ogham = 109,
+ SCX_Ol_Chiki = 110,
+ SCX_Old_Hungarian = 111,
+ SCX_Old_Italic = 112,
+ SCX_Old_North_Arabian = 113,
+ SCX_Old_Permic = 114,
+ SCX_Old_Persian = 115,
+ SCX_Old_Sogdian = 116,
+ SCX_Old_South_Arabian = 117,
+ SCX_Old_Turkic = 118,
+ SCX_Old_Uyghur = 119,
+ SCX_Oriya = 120,
+ SCX_Osage = 121,
+ SCX_Osmanya = 122,
+ SCX_Pahawh_Hmong = 123,
+ SCX_Palmyrene = 124,
+ SCX_Pau_Cin_Hau = 125,
+ SCX_Phags_Pa = 126,
+ SCX_Phoenician = 127,
+ SCX_Psalter_Pahlavi = 128,
+ SCX_Rejang = 129,
+ SCX_Runic = 130,
+ SCX_Samaritan = 131,
+ SCX_Saurashtra = 132,
+ SCX_Sharada = 133,
+ SCX_Shavian = 134,
+ SCX_Siddham = 135,
+ SCX_SignWriting = 136,
+ SCX_Sinhala = 137,
+ SCX_Sogdian = 138,
+ SCX_Sora_Sompeng = 139,
+ SCX_Soyombo = 140,
+ SCX_Sundanese = 141,
+ SCX_Syloti_Nagri = 142,
+ SCX_Syriac = 143,
+ SCX_Tagalog = 144,
+ SCX_Tagbanwa = 145,
+ SCX_Tai_Le = 146,
+ SCX_Tai_Tham = 147,
+ SCX_Tai_Viet = 148,
+ SCX_Takri = 149,
+ SCX_Tamil = 150,
+ SCX_Tangsa = 151,
+ SCX_Tangut = 152,
+ SCX_Telugu = 153,
+ SCX_Thaana = 154,
+ SCX_Thai = 155,
+ SCX_Tibetan = 156,
+ SCX_Tifinagh = 157,
+ SCX_Tirhuta = 158,
+ SCX_Toto = 159,
+ SCX_Ugaritic = 160,
+ SCX_Vai = 161,
+ SCX_Vithkuqi = 162,
+ SCX_Wancho = 163,
+ SCX_Warang_Citi = 164,
+ SCX_Yezidi = 165,
+ SCX_Yi = 166,
+ SCX_Zanabazar_Square = 167,
SCX_use_AUX_TABLE_1 = -1,
SCX_use_AUX_TABLE_2 = -2,
SCX_use_AUX_TABLE_3 = -3,
@@ -82922,7 +85443,11 @@ typedef enum {
SCX_use_AUX_TABLE_52 = -52,
SCX_use_AUX_TABLE_53 = -53,
SCX_use_AUX_TABLE_54 = -54,
- SCX_use_AUX_TABLE_55 = -55
+ SCX_use_AUX_TABLE_55 = -55,
+ SCX_use_AUX_TABLE_56 = -56,
+ SCX_use_AUX_TABLE_57 = -57,
+ SCX_use_AUX_TABLE_58 = -58,
+ SCX_use_AUX_TABLE_59 = -59
} SCX_enum;
# endif /* EBCDIC 037 */
@@ -82959,6 +85484,7 @@ static const SCX_enum SCX_AUX_TABLE_4[] = {
static const SCX_enum SCX_AUX_TABLE_5[] = {
SCX_Arabic,
SCX_Hanifi_Rohingya,
+ SCX_Nko,
SCX_Syriac,
SCX_Thaana,
SCX_Yezidi
@@ -82974,30 +85500,41 @@ static const SCX_enum SCX_AUX_TABLE_7[] = {
SCX_Adlam,
SCX_Arabic,
SCX_Hanifi_Rohingya,
+ SCX_Nko,
+ SCX_Syriac,
+ SCX_Thaana,
+ SCX_Yezidi
+};
+
+static const SCX_enum SCX_AUX_TABLE_8[] = {
+ SCX_Adlam,
+ SCX_Arabic,
+ SCX_Hanifi_Rohingya,
SCX_Mandaic,
SCX_Manichaean,
+ SCX_Old_Uyghur,
SCX_Psalter_Pahlavi,
SCX_Sogdian,
SCX_Syriac
};
-static const SCX_enum SCX_AUX_TABLE_8[] = {
+static const SCX_enum SCX_AUX_TABLE_9[] = {
SCX_Arabic,
SCX_Syriac
};
-static const SCX_enum SCX_AUX_TABLE_9[] = {
+static const SCX_enum SCX_AUX_TABLE_10[] = {
SCX_Arabic,
SCX_Thaana,
SCX_Yezidi
};
-static const SCX_enum SCX_AUX_TABLE_10[] = {
+static const SCX_enum SCX_AUX_TABLE_11[] = {
SCX_Arabic,
SCX_Hanifi_Rohingya
};
-static const SCX_enum SCX_AUX_TABLE_11[] = {
+static const SCX_enum SCX_AUX_TABLE_12[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Grantha,
@@ -83013,7 +85550,7 @@ static const SCX_enum SCX_AUX_TABLE_11[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_12[] = {
+static const SCX_enum SCX_AUX_TABLE_13[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Grantha,
@@ -83028,7 +85565,7 @@ static const SCX_enum SCX_AUX_TABLE_12[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_13[] = {
+static const SCX_enum SCX_AUX_TABLE_14[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Dogra,
@@ -83051,7 +85588,7 @@ static const SCX_enum SCX_AUX_TABLE_13[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_14[] = {
+static const SCX_enum SCX_AUX_TABLE_15[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Dogra,
@@ -83075,90 +85612,90 @@ static const SCX_enum SCX_AUX_TABLE_14[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_15[] = {
+static const SCX_enum SCX_AUX_TABLE_16[] = {
SCX_Devanagari,
SCX_Dogra,
SCX_Kaithi,
SCX_Mahajani
};
-static const SCX_enum SCX_AUX_TABLE_16[] = {
+static const SCX_enum SCX_AUX_TABLE_17[] = {
SCX_Bengali,
SCX_Chakma,
SCX_Syloti_Nagri
};
-static const SCX_enum SCX_AUX_TABLE_17[] = {
+static const SCX_enum SCX_AUX_TABLE_18[] = {
SCX_Gurmukhi,
SCX_Multani
};
-static const SCX_enum SCX_AUX_TABLE_18[] = {
+static const SCX_enum SCX_AUX_TABLE_19[] = {
SCX_Gujarati,
SCX_Khojki
};
-static const SCX_enum SCX_AUX_TABLE_19[] = {
+static const SCX_enum SCX_AUX_TABLE_20[] = {
SCX_Grantha,
SCX_Tamil
};
-static const SCX_enum SCX_AUX_TABLE_20[] = {
+static const SCX_enum SCX_AUX_TABLE_21[] = {
SCX_Kannada,
SCX_Nandinagari
};
-static const SCX_enum SCX_AUX_TABLE_21[] = {
+static const SCX_enum SCX_AUX_TABLE_22[] = {
SCX_Chakma,
SCX_Myanmar,
SCX_Tai_Le
};
-static const SCX_enum SCX_AUX_TABLE_22[] = {
+static const SCX_enum SCX_AUX_TABLE_23[] = {
SCX_Georgian,
SCX_Latin
};
-static const SCX_enum SCX_AUX_TABLE_23[] = {
+static const SCX_enum SCX_AUX_TABLE_24[] = {
SCX_Hangul,
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_24[] = {
+static const SCX_enum SCX_AUX_TABLE_25[] = {
SCX_Buhid,
SCX_Hanunoo,
SCX_Tagalog,
SCX_Tagbanwa
};
-static const SCX_enum SCX_AUX_TABLE_25[] = {
+static const SCX_enum SCX_AUX_TABLE_26[] = {
SCX_Mongolian,
SCX_Phags_Pa
};
-static const SCX_enum SCX_AUX_TABLE_26[] = {
+static const SCX_enum SCX_AUX_TABLE_27[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Grantha,
SCX_Kannada
};
-static const SCX_enum SCX_AUX_TABLE_27[] = {
+static const SCX_enum SCX_AUX_TABLE_28[] = {
SCX_Devanagari,
SCX_Grantha
};
-static const SCX_enum SCX_AUX_TABLE_28[] = {
+static const SCX_enum SCX_AUX_TABLE_29[] = {
SCX_Bengali,
SCX_Devanagari
};
-static const SCX_enum SCX_AUX_TABLE_29[] = {
+static const SCX_enum SCX_AUX_TABLE_30[] = {
SCX_Devanagari,
SCX_Sharada
};
-static const SCX_enum SCX_AUX_TABLE_30[] = {
+static const SCX_enum SCX_AUX_TABLE_31[] = {
SCX_Devanagari,
SCX_Kannada,
SCX_Malayalam,
@@ -83167,12 +85704,12 @@ static const SCX_enum SCX_AUX_TABLE_30[] = {
SCX_Telugu
};
-static const SCX_enum SCX_AUX_TABLE_31[] = {
+static const SCX_enum SCX_AUX_TABLE_32[] = {
SCX_Devanagari,
SCX_Nandinagari
};
-static const SCX_enum SCX_AUX_TABLE_32[] = {
+static const SCX_enum SCX_AUX_TABLE_33[] = {
SCX_Bengali,
SCX_Devanagari,
SCX_Grantha,
@@ -83183,36 +85720,36 @@ static const SCX_enum SCX_AUX_TABLE_32[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_33[] = {
+static const SCX_enum SCX_AUX_TABLE_34[] = {
SCX_Devanagari,
SCX_Grantha,
SCX_Kannada
};
-static const SCX_enum SCX_AUX_TABLE_34[] = {
+static const SCX_enum SCX_AUX_TABLE_35[] = {
SCX_Cyrillic,
SCX_Syriac
};
-static const SCX_enum SCX_AUX_TABLE_35[] = {
+static const SCX_enum SCX_AUX_TABLE_36[] = {
SCX_Latin,
SCX_Mongolian
};
-static const SCX_enum SCX_AUX_TABLE_36[] = {
+static const SCX_enum SCX_AUX_TABLE_37[] = {
SCX_Devanagari,
SCX_Grantha,
SCX_Latin
};
-static const SCX_enum SCX_AUX_TABLE_37[] = {
+static const SCX_enum SCX_AUX_TABLE_38[] = {
SCX_Han,
SCX_Hanb,
SCX_Jpan,
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_38[] = {
+static const SCX_enum SCX_AUX_TABLE_39[] = {
SCX_Bopomofo,
SCX_Han,
SCX_Hanb,
@@ -83224,7 +85761,7 @@ static const SCX_enum SCX_AUX_TABLE_38[] = {
SCX_Yi
};
-static const SCX_enum SCX_AUX_TABLE_39[] = {
+static const SCX_enum SCX_AUX_TABLE_40[] = {
SCX_Bopomofo,
SCX_Han,
SCX_Hanb,
@@ -83235,7 +85772,7 @@ static const SCX_enum SCX_AUX_TABLE_39[] = {
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_40[] = {
+static const SCX_enum SCX_AUX_TABLE_41[] = {
SCX_Bopomofo,
SCX_Han,
SCX_Hanb,
@@ -83243,13 +85780,13 @@ static const SCX_enum SCX_AUX_TABLE_40[] = {
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_41[] = {
+static const SCX_enum SCX_AUX_TABLE_42[] = {
SCX_Hiragana,
SCX_Jpan,
SCX_Katakana
};
-static const SCX_enum SCX_AUX_TABLE_42[] = {
+static const SCX_enum SCX_AUX_TABLE_43[] = {
SCX_Han,
SCX_Hanb,
SCX_Hiragana,
@@ -83258,17 +85795,17 @@ static const SCX_enum SCX_AUX_TABLE_42[] = {
SCX_Kore
};
-static const SCX_enum SCX_AUX_TABLE_43[] = {
+static const SCX_enum SCX_AUX_TABLE_44[] = {
SCX_Hiragana,
SCX_Jpan
};
-static const SCX_enum SCX_AUX_TABLE_44[] = {
+static const SCX_enum SCX_AUX_TABLE_45[] = {
SCX_Jpan,
SCX_Katakana
};
-static const SCX_enum SCX_AUX_TABLE_45[] = {
+static const SCX_enum SCX_AUX_TABLE_46[] = {
SCX_Han,
SCX_Hanb,
SCX_Jpan,
@@ -83276,7 +85813,7 @@ static const SCX_enum SCX_AUX_TABLE_45[] = {
SCX_Latin
};
-static const SCX_enum SCX_AUX_TABLE_46[] = {
+static const SCX_enum SCX_AUX_TABLE_47[] = {
SCX_Devanagari,
SCX_Dogra,
SCX_Gujarati,
@@ -83293,7 +85830,7 @@ static const SCX_enum SCX_AUX_TABLE_46[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_47[] = {
+static const SCX_enum SCX_AUX_TABLE_48[] = {
SCX_Devanagari,
SCX_Dogra,
SCX_Gujarati,
@@ -83309,7 +85846,7 @@ static const SCX_enum SCX_AUX_TABLE_47[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_48[] = {
+static const SCX_enum SCX_AUX_TABLE_49[] = {
SCX_Devanagari,
SCX_Dogra,
SCX_Gujarati,
@@ -83323,43 +85860,59 @@ static const SCX_enum SCX_AUX_TABLE_48[] = {
SCX_Tirhuta
};
-static const SCX_enum SCX_AUX_TABLE_49[] = {
+static const SCX_enum SCX_AUX_TABLE_50[] = {
SCX_Devanagari,
SCX_Tamil
};
-static const SCX_enum SCX_AUX_TABLE_50[] = {
+static const SCX_enum SCX_AUX_TABLE_51[] = {
SCX_Kayah_Li,
SCX_Latin,
SCX_Myanmar
};
-static const SCX_enum SCX_AUX_TABLE_51[] = {
+static const SCX_enum SCX_AUX_TABLE_52[] = {
SCX_Buginese,
SCX_Javanese
};
-static const SCX_enum SCX_AUX_TABLE_52[] = {
+static const SCX_enum SCX_AUX_TABLE_53[] = {
+ SCX_Arabic,
+ SCX_Nko
+};
+
+static const SCX_enum SCX_AUX_TABLE_54[] = {
SCX_Arabic,
SCX_Thaana
};
-static const SCX_enum SCX_AUX_TABLE_53[] = {
+static const SCX_enum SCX_AUX_TABLE_55[] = {
SCX_Cypriot,
+ SCX_Cypro_Minoan,
SCX_Linear_B
};
-static const SCX_enum SCX_AUX_TABLE_54[] = {
+static const SCX_enum SCX_AUX_TABLE_56[] = {
+ SCX_Cypriot,
+ SCX_Linear_B
+};
+
+static const SCX_enum SCX_AUX_TABLE_57[] = {
SCX_Cypriot,
SCX_Linear_A,
SCX_Linear_B
};
-static const SCX_enum SCX_AUX_TABLE_55[] = {
+static const SCX_enum SCX_AUX_TABLE_58[] = {
SCX_Arabic,
SCX_Coptic
};
+static const SCX_enum SCX_AUX_TABLE_59[] = {
+ SCX_Manichaean,
+ SCX_Old_Uyghur
+};
+
static const SCX_enum * const SCX_AUX_TABLE_ptrs[] = {
NULL, /* Placeholder */
SCX_AUX_TABLE_1,
@@ -83416,7 +85969,11 @@ static const SCX_enum * const SCX_AUX_TABLE_ptrs[] = {
SCX_AUX_TABLE_52,
SCX_AUX_TABLE_53,
SCX_AUX_TABLE_54,
- SCX_AUX_TABLE_55
+ SCX_AUX_TABLE_55,
+ SCX_AUX_TABLE_56,
+ SCX_AUX_TABLE_57,
+ SCX_AUX_TABLE_58,
+ SCX_AUX_TABLE_59
};
/* Parallel table to the above, giving the number of elements in each table
@@ -83428,57 +85985,61 @@ static const U8 SCX_AUX_TABLE_lengths[] = {
2 /* SCX_AUX_TABLE_2 */,
2 /* SCX_AUX_TABLE_3 */,
2 /* SCX_AUX_TABLE_4 */,
- 5 /* SCX_AUX_TABLE_5 */,
+ 6 /* SCX_AUX_TABLE_5 */,
3 /* SCX_AUX_TABLE_6 */,
- 8 /* SCX_AUX_TABLE_7 */,
- 2 /* SCX_AUX_TABLE_8 */,
- 3 /* SCX_AUX_TABLE_9 */,
- 2 /* SCX_AUX_TABLE_10 */,
- 13 /* SCX_AUX_TABLE_11 */,
- 12 /* SCX_AUX_TABLE_12 */,
- 20 /* SCX_AUX_TABLE_13 */,
- 21 /* SCX_AUX_TABLE_14 */,
- 4 /* SCX_AUX_TABLE_15 */,
- 3 /* SCX_AUX_TABLE_16 */,
- 2 /* SCX_AUX_TABLE_17 */,
+ 7 /* SCX_AUX_TABLE_7 */,
+ 9 /* SCX_AUX_TABLE_8 */,
+ 2 /* SCX_AUX_TABLE_9 */,
+ 3 /* SCX_AUX_TABLE_10 */,
+ 2 /* SCX_AUX_TABLE_11 */,
+ 13 /* SCX_AUX_TABLE_12 */,
+ 12 /* SCX_AUX_TABLE_13 */,
+ 20 /* SCX_AUX_TABLE_14 */,
+ 21 /* SCX_AUX_TABLE_15 */,
+ 4 /* SCX_AUX_TABLE_16 */,
+ 3 /* SCX_AUX_TABLE_17 */,
2 /* SCX_AUX_TABLE_18 */,
2 /* SCX_AUX_TABLE_19 */,
2 /* SCX_AUX_TABLE_20 */,
- 3 /* SCX_AUX_TABLE_21 */,
- 2 /* SCX_AUX_TABLE_22 */,
+ 2 /* SCX_AUX_TABLE_21 */,
+ 3 /* SCX_AUX_TABLE_22 */,
2 /* SCX_AUX_TABLE_23 */,
- 4 /* SCX_AUX_TABLE_24 */,
- 2 /* SCX_AUX_TABLE_25 */,
- 4 /* SCX_AUX_TABLE_26 */,
- 2 /* SCX_AUX_TABLE_27 */,
+ 2 /* SCX_AUX_TABLE_24 */,
+ 4 /* SCX_AUX_TABLE_25 */,
+ 2 /* SCX_AUX_TABLE_26 */,
+ 4 /* SCX_AUX_TABLE_27 */,
2 /* SCX_AUX_TABLE_28 */,
2 /* SCX_AUX_TABLE_29 */,
- 6 /* SCX_AUX_TABLE_30 */,
- 2 /* SCX_AUX_TABLE_31 */,
- 8 /* SCX_AUX_TABLE_32 */,
- 3 /* SCX_AUX_TABLE_33 */,
- 2 /* SCX_AUX_TABLE_34 */,
+ 2 /* SCX_AUX_TABLE_30 */,
+ 6 /* SCX_AUX_TABLE_31 */,
+ 2 /* SCX_AUX_TABLE_32 */,
+ 8 /* SCX_AUX_TABLE_33 */,
+ 3 /* SCX_AUX_TABLE_34 */,
2 /* SCX_AUX_TABLE_35 */,
- 3 /* SCX_AUX_TABLE_36 */,
- 4 /* SCX_AUX_TABLE_37 */,
- 9 /* SCX_AUX_TABLE_38 */,
- 8 /* SCX_AUX_TABLE_39 */,
- 5 /* SCX_AUX_TABLE_40 */,
- 3 /* SCX_AUX_TABLE_41 */,
- 6 /* SCX_AUX_TABLE_42 */,
- 2 /* SCX_AUX_TABLE_43 */,
+ 2 /* SCX_AUX_TABLE_36 */,
+ 3 /* SCX_AUX_TABLE_37 */,
+ 4 /* SCX_AUX_TABLE_38 */,
+ 9 /* SCX_AUX_TABLE_39 */,
+ 8 /* SCX_AUX_TABLE_40 */,
+ 5 /* SCX_AUX_TABLE_41 */,
+ 3 /* SCX_AUX_TABLE_42 */,
+ 6 /* SCX_AUX_TABLE_43 */,
2 /* SCX_AUX_TABLE_44 */,
- 5 /* SCX_AUX_TABLE_45 */,
- 14 /* SCX_AUX_TABLE_46 */,
- 13 /* SCX_AUX_TABLE_47 */,
- 11 /* SCX_AUX_TABLE_48 */,
- 2 /* SCX_AUX_TABLE_49 */,
- 3 /* SCX_AUX_TABLE_50 */,
- 2 /* SCX_AUX_TABLE_51 */,
+ 2 /* SCX_AUX_TABLE_45 */,
+ 5 /* SCX_AUX_TABLE_46 */,
+ 14 /* SCX_AUX_TABLE_47 */,
+ 13 /* SCX_AUX_TABLE_48 */,
+ 11 /* SCX_AUX_TABLE_49 */,
+ 2 /* SCX_AUX_TABLE_50 */,
+ 3 /* SCX_AUX_TABLE_51 */,
2 /* SCX_AUX_TABLE_52 */,
2 /* SCX_AUX_TABLE_53 */,
- 3 /* SCX_AUX_TABLE_54 */,
- 2 /* SCX_AUX_TABLE_55 */
+ 2 /* SCX_AUX_TABLE_54 */,
+ 3 /* SCX_AUX_TABLE_55 */,
+ 2 /* SCX_AUX_TABLE_56 */,
+ 3 /* SCX_AUX_TABLE_57 */,
+ 2 /* SCX_AUX_TABLE_58 */,
+ 2 /* SCX_AUX_TABLE_59 */
};
/* This table, indexed by the script enum, gives the zero code point for that
@@ -83515,6 +86076,7 @@ static const UV script_zeros[] = {
'0', /* Coptic */
'0', /* Cuneiform */
'0', /* Cypriot */
+ '0', /* Cypro_Minoan */
'0', /* Cyrillic */
'0', /* Deseret */
0x966, /* Devanagari */
@@ -83551,6 +86113,7 @@ static const UV script_zeros[] = {
0x966, /* Kaithi */
0xce6, /* Kannada */
'0', /* Katakana */
+ 0x11f50, /* Kawi */
0xa900, /* Kayah_Li */
'0', /* Kharoshthi */
'0', /* Khitan_Small_Script */
@@ -83586,6 +86149,7 @@ static const UV script_zeros[] = {
0xa66, /* Multani */
0, /* Myanmar */
'0', /* Nabataean */
+ 0x1e4f0, /* Nag_Mundari */
0xce6, /* Nandinagari */
0x19d0, /* New_Tai_Lue */
0x11450, /* Newa */
@@ -83602,6 +86166,7 @@ static const UV script_zeros[] = {
'0', /* Old_Sogdian */
'0', /* Old_South_Arabian */
'0', /* Old_Turkic */
+ '0', /* Old_Uyghur */
0xb66, /* Oriya */
'0', /* Osage */
0x104a0, /* Osmanya */
@@ -83633,6 +86198,7 @@ static const UV script_zeros[] = {
'0', /* Tai_Viet */
0x116c0, /* Takri */
0xbe6, /* Tamil */
+ 0x16ac0, /* Tangsa */
'0', /* Tangut */
0xc66, /* Telugu */
0x660, /* Thaana */
@@ -83640,8 +86206,10 @@ static const UV script_zeros[] = {
0xf20, /* Tibetan */
'0', /* Tifinagh */
0x114d0, /* Tirhuta */
+ '0', /* Toto */
'0', /* Ugaritic */
0xa620, /* Vai */
+ '0', /* Vithkuqi */
0x1e2f0, /* Wancho */
0x118e0, /* Warang_Citi */
0x660 /* Yezidi */
@@ -83742,9 +86310,6 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Arabic,
SCX_use_AUX_TABLE_5,
SCX_use_AUX_TABLE_6,
- SCX_Unknown,
- SCX_Arabic,
- SCX_use_AUX_TABLE_5,
SCX_Arabic,
SCX_use_AUX_TABLE_7,
SCX_Arabic,
@@ -83752,10 +86317,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Arabic,
SCX_use_AUX_TABLE_9,
SCX_Arabic,
- SCX_use_AUX_TABLE_8,
- SCX_Arabic,
SCX_use_AUX_TABLE_10,
SCX_Arabic,
+ SCX_use_AUX_TABLE_9,
+ SCX_Arabic,
+ SCX_use_AUX_TABLE_11,
+ SCX_Arabic,
SCX_Common,
SCX_Arabic,
SCX_Syriac,
@@ -83787,13 +86354,13 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Common,
SCX_Arabic,
SCX_Devanagari,
- SCX_use_AUX_TABLE_11,
SCX_use_AUX_TABLE_12,
+ SCX_use_AUX_TABLE_13,
SCX_Inherited,
SCX_Devanagari,
- SCX_use_AUX_TABLE_13,
SCX_use_AUX_TABLE_14,
SCX_use_AUX_TABLE_15,
+ SCX_use_AUX_TABLE_16,
SCX_Devanagari,
SCX_Bengali,
SCX_Unknown,
@@ -83821,7 +86388,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Bengali,
SCX_Unknown,
- SCX_use_AUX_TABLE_16,
+ SCX_use_AUX_TABLE_17,
SCX_Bengali,
SCX_Unknown,
SCX_Gurmukhi,
@@ -83854,7 +86421,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Gurmukhi,
SCX_Unknown,
- SCX_use_AUX_TABLE_17,
+ SCX_use_AUX_TABLE_18,
SCX_Gurmukhi,
SCX_Unknown,
SCX_Gujarati,
@@ -83881,7 +86448,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Gujarati,
SCX_Unknown,
- SCX_use_AUX_TABLE_18,
+ SCX_use_AUX_TABLE_19,
SCX_Gujarati,
SCX_Unknown,
SCX_Gujarati,
@@ -83944,7 +86511,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Tamil,
SCX_Unknown,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Tamil,
SCX_Unknown,
SCX_Telugu,
@@ -83970,6 +86537,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Telugu,
SCX_Unknown,
SCX_Telugu,
+ SCX_Unknown,
+ SCX_Telugu,
SCX_Kannada,
SCX_Unknown,
SCX_Kannada,
@@ -83992,7 +86561,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Kannada,
SCX_Unknown,
- SCX_use_AUX_TABLE_20,
+ SCX_use_AUX_TABLE_21,
SCX_Unknown,
SCX_Kannada,
SCX_Unknown,
@@ -84076,7 +86645,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Tibetan,
SCX_Unknown,
SCX_Myanmar,
- SCX_use_AUX_TABLE_21,
+ SCX_use_AUX_TABLE_22,
SCX_Myanmar,
SCX_Georgian,
SCX_Unknown,
@@ -84085,9 +86654,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Georgian,
SCX_Unknown,
SCX_Georgian,
- SCX_use_AUX_TABLE_22,
- SCX_Georgian,
SCX_use_AUX_TABLE_23,
+ SCX_Georgian,
+ SCX_use_AUX_TABLE_24,
SCX_Ethiopic,
SCX_Unknown,
SCX_Ethiopic,
@@ -84138,9 +86707,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Tagalog,
SCX_Unknown,
SCX_Tagalog,
- SCX_Unknown,
SCX_Hanunoo,
- SCX_use_AUX_TABLE_24,
+ SCX_use_AUX_TABLE_25,
SCX_Unknown,
SCX_Buhid,
SCX_Unknown,
@@ -84157,11 +86725,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Khmer,
SCX_Unknown,
SCX_Mongolian,
- SCX_use_AUX_TABLE_25,
- SCX_Mongolian,
- SCX_use_AUX_TABLE_25,
+ SCX_use_AUX_TABLE_26,
SCX_Mongolian,
- SCX_Unknown,
+ SCX_use_AUX_TABLE_26,
SCX_Mongolian,
SCX_Unknown,
SCX_Mongolian,
@@ -84227,33 +86793,33 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Georgian,
SCX_Sundanese,
SCX_Unknown,
- SCX_use_AUX_TABLE_26,
- SCX_Devanagari,
- SCX_use_AUX_TABLE_26,
SCX_use_AUX_TABLE_27,
SCX_Devanagari,
+ SCX_use_AUX_TABLE_27,
SCX_use_AUX_TABLE_28,
+ SCX_Devanagari,
SCX_use_AUX_TABLE_29,
- SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_30,
SCX_use_AUX_TABLE_29,
SCX_use_AUX_TABLE_30,
+ SCX_use_AUX_TABLE_31,
SCX_Devanagari,
- SCX_use_AUX_TABLE_29,
+ SCX_use_AUX_TABLE_30,
SCX_Devanagari,
+ SCX_use_AUX_TABLE_30,
SCX_use_AUX_TABLE_29,
- SCX_use_AUX_TABLE_28,
SCX_Devanagari,
- SCX_use_AUX_TABLE_31,
- SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_32,
+ SCX_use_AUX_TABLE_29,
SCX_Devanagari,
- SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_29,
SCX_Devanagari,
- SCX_use_AUX_TABLE_32,
- SCX_use_AUX_TABLE_27,
SCX_use_AUX_TABLE_33,
SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_34,
+ SCX_use_AUX_TABLE_29,
SCX_Bengali,
- SCX_use_AUX_TABLE_27,
+ SCX_use_AUX_TABLE_28,
SCX_Nandinagari,
SCX_Unknown,
SCX_Latin,
@@ -84268,9 +86834,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Latin,
SCX_Greek,
SCX_Inherited,
- SCX_use_AUX_TABLE_34,
+ SCX_use_AUX_TABLE_35,
SCX_Inherited,
- SCX_Unknown,
+ SCX_Syriac,
SCX_Inherited,
SCX_Latin,
SCX_Greek,
@@ -84308,7 +86874,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Common,
SCX_Inherited,
SCX_Common,
- SCX_use_AUX_TABLE_35,
+ SCX_use_AUX_TABLE_36,
SCX_Common,
SCX_Unknown,
SCX_Common,
@@ -84323,7 +86889,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Common,
SCX_Unknown,
SCX_Inherited,
- SCX_use_AUX_TABLE_36,
+ SCX_use_AUX_TABLE_37,
SCX_Unknown,
SCX_Common,
SCX_Greek,
@@ -84349,9 +86915,6 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Common,
SCX_Glagolitic,
- SCX_Unknown,
- SCX_Glagolitic,
- SCX_Unknown,
SCX_Latin,
SCX_Coptic,
SCX_Unknown,
@@ -84390,78 +86953,77 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_use_AUX_TABLE_3,
SCX_Common,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
SCX_Common,
- SCX_use_AUX_TABLE_38,
SCX_use_AUX_TABLE_39,
+ SCX_use_AUX_TABLE_40,
SCX_Common,
- SCX_use_AUX_TABLE_37,
- SCX_use_AUX_TABLE_38,
- SCX_Common,
- SCX_use_AUX_TABLE_39,
SCX_use_AUX_TABLE_38,
SCX_use_AUX_TABLE_39,
SCX_Common,
- SCX_use_AUX_TABLE_37,
SCX_use_AUX_TABLE_40,
- SCX_use_AUX_TABLE_23,
SCX_use_AUX_TABLE_39,
- SCX_use_AUX_TABLE_41,
+ SCX_use_AUX_TABLE_40,
SCX_Common,
- SCX_use_AUX_TABLE_39,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
+ SCX_use_AUX_TABLE_41,
+ SCX_use_AUX_TABLE_24,
+ SCX_use_AUX_TABLE_40,
SCX_use_AUX_TABLE_42,
- SCX_use_AUX_TABLE_37,
- SCX_Unknown,
+ SCX_Common,
+ SCX_use_AUX_TABLE_40,
+ SCX_use_AUX_TABLE_38,
SCX_use_AUX_TABLE_43,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_41,
- SCX_use_AUX_TABLE_43,
- SCX_use_AUX_TABLE_41,
SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_38,
- SCX_use_AUX_TABLE_41,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_42,
SCX_use_AUX_TABLE_44,
+ SCX_use_AUX_TABLE_42,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_39,
+ SCX_use_AUX_TABLE_42,
+ SCX_use_AUX_TABLE_45,
SCX_Unknown,
SCX_use_AUX_TABLE_1,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_use_AUX_TABLE_1,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_37,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_38,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
- SCX_use_AUX_TABLE_37,
- SCX_Unknown,
+ SCX_use_AUX_TABLE_38,
SCX_Yi,
SCX_Unknown,
SCX_Yi,
@@ -84474,7 +87036,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Cyrillic,
SCX_Bamum,
SCX_Unknown,
- SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_46,
SCX_Common,
SCX_Latin,
SCX_Common,
@@ -84483,11 +87045,15 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Latin,
SCX_Unknown,
SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
SCX_Syloti_Nagri,
SCX_Unknown,
- SCX_use_AUX_TABLE_46,
SCX_use_AUX_TABLE_47,
SCX_use_AUX_TABLE_48,
+ SCX_use_AUX_TABLE_49,
SCX_Unknown,
SCX_Phags_Pa,
SCX_Unknown,
@@ -84496,21 +87062,21 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Saurashtra,
SCX_Unknown,
SCX_Devanagari,
- SCX_use_AUX_TABLE_28,
+ SCX_use_AUX_TABLE_29,
SCX_Devanagari,
- SCX_use_AUX_TABLE_49,
+ SCX_use_AUX_TABLE_50,
SCX_Devanagari,
SCX_Kayah_Li,
- SCX_use_AUX_TABLE_50,
+ SCX_use_AUX_TABLE_51,
SCX_Kayah_Li,
SCX_Rejang,
SCX_Unknown,
SCX_Rejang,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
SCX_Javanese,
SCX_Unknown,
- SCX_use_AUX_TABLE_51,
+ SCX_use_AUX_TABLE_52,
SCX_Javanese,
SCX_Unknown,
SCX_Javanese,
@@ -84551,15 +87117,15 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Meetei_Mayek,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Latin,
SCX_Unknown,
@@ -84579,24 +87145,25 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Arabic,
SCX_Unknown,
SCX_Arabic,
- SCX_Common,
+ SCX_use_AUX_TABLE_53,
+ SCX_Arabic,
SCX_Unknown,
SCX_Arabic,
SCX_Unknown,
SCX_Arabic,
SCX_Unknown,
SCX_Arabic,
- SCX_use_AUX_TABLE_52,
+ SCX_use_AUX_TABLE_54,
+ SCX_Arabic,
+ SCX_use_AUX_TABLE_54,
SCX_Arabic,
- SCX_use_AUX_TABLE_52,
- SCX_Unknown,
SCX_Inherited,
SCX_Common,
SCX_Unknown,
SCX_Inherited,
SCX_Cyrillic,
SCX_Common,
- SCX_use_AUX_TABLE_39,
+ SCX_use_AUX_TABLE_40,
SCX_Common,
SCX_Unknown,
SCX_Common,
@@ -84614,20 +87181,20 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Common,
SCX_Latin,
SCX_Common,
- SCX_use_AUX_TABLE_38,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_41,
- SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_41,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_39,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_42,
+ SCX_use_AUX_TABLE_45,
+ SCX_use_AUX_TABLE_42,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
- SCX_use_AUX_TABLE_23,
+ SCX_use_AUX_TABLE_24,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
@@ -84649,11 +87216,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Linear_B,
SCX_Unknown,
- SCX_use_AUX_TABLE_53,
+ SCX_use_AUX_TABLE_55,
+ SCX_use_AUX_TABLE_56,
SCX_Unknown,
- SCX_use_AUX_TABLE_54,
+ SCX_use_AUX_TABLE_57,
SCX_Unknown,
- SCX_use_AUX_TABLE_53,
+ SCX_use_AUX_TABLE_56,
SCX_Greek,
SCX_Unknown,
SCX_Common,
@@ -84667,7 +87235,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Carian,
SCX_Unknown,
- SCX_use_AUX_TABLE_55,
+ SCX_use_AUX_TABLE_58,
SCX_Unknown,
SCX_Old_Italic,
SCX_Unknown,
@@ -84698,6 +87266,21 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Caucasian_Albanian,
SCX_Unknown,
SCX_Caucasian_Albanian,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
+ SCX_Unknown,
+ SCX_Vithkuqi,
SCX_Unknown,
SCX_Linear_A,
SCX_Unknown,
@@ -84705,6 +87288,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Linear_A,
SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
SCX_Cypriot,
SCX_Unknown,
SCX_Cypriot,
@@ -84764,6 +87353,8 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Manichaean,
SCX_Unknown,
SCX_Manichaean,
+ SCX_use_AUX_TABLE_59,
+ SCX_Manichaean,
SCX_Unknown,
SCX_Avestan,
SCX_Unknown,
@@ -84799,10 +87390,13 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Yezidi,
SCX_Unknown,
+ SCX_Arabic,
SCX_Old_Sogdian,
SCX_Unknown,
SCX_Sogdian,
SCX_Unknown,
+ SCX_Old_Uyghur,
+ SCX_Unknown,
SCX_Chorasmian,
SCX_Unknown,
SCX_Elymaic,
@@ -84849,9 +87443,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Khudawadi,
SCX_Unknown,
SCX_Grantha,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Grantha,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Unknown,
SCX_Grantha,
SCX_Unknown,
@@ -84865,7 +87459,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Grantha,
SCX_Unknown,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Grantha,
SCX_Unknown,
SCX_Grantha,
@@ -84941,8 +87535,11 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Soyombo,
SCX_Unknown,
+ SCX_Canadian_Aboriginal,
SCX_Pau_Cin_Hau,
SCX_Unknown,
+ SCX_Devanagari,
+ SCX_Unknown,
SCX_Bhaiksuki,
SCX_Unknown,
SCX_Bhaiksuki,
@@ -84985,12 +87582,18 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Makasar,
SCX_Unknown,
+ SCX_Kawi,
+ SCX_Unknown,
+ SCX_Kawi,
+ SCX_Unknown,
+ SCX_Kawi,
+ SCX_Unknown,
SCX_Lisu,
SCX_Unknown,
SCX_Tamil,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Tamil,
- SCX_use_AUX_TABLE_19,
+ SCX_use_AUX_TABLE_20,
SCX_Tamil,
SCX_Unknown,
SCX_Tamil,
@@ -85002,7 +87605,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Cuneiform,
SCX_Unknown,
- SCX_Egyptian_Hieroglyphs,
+ SCX_Cypro_Minoan,
SCX_Unknown,
SCX_Egyptian_Hieroglyphs,
SCX_Unknown,
@@ -85015,6 +87618,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Mro,
SCX_Unknown,
SCX_Mro,
+ SCX_Tangsa,
+ SCX_Unknown,
+ SCX_Tangsa,
SCX_Unknown,
SCX_Bassa_Vah,
SCX_Unknown,
@@ -85040,10 +87646,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Tangut,
SCX_Nushu,
- SCX_Common,
+ SCX_use_AUX_TABLE_38,
SCX_Khitan_Small_Script,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Tangut,
SCX_Unknown,
@@ -85052,13 +87658,24 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Tangut,
SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
SCX_use_AUX_TABLE_44,
- SCX_use_AUX_TABLE_43,
+ SCX_use_AUX_TABLE_45,
SCX_Unknown,
- SCX_use_AUX_TABLE_43,
+ SCX_use_AUX_TABLE_44,
SCX_Unknown,
SCX_use_AUX_TABLE_44,
SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_45,
+ SCX_Unknown,
SCX_Nushu,
SCX_Unknown,
SCX_Duployan,
@@ -85071,6 +87688,12 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Duployan,
SCX_Unknown,
+ SCX_Inherited,
+ SCX_Unknown,
+ SCX_Inherited,
+ SCX_Unknown,
+ SCX_Common,
+ SCX_Unknown,
SCX_Common,
SCX_Unknown,
SCX_Common,
@@ -85091,7 +87714,9 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Common,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_Common,
+ SCX_Unknown,
+ SCX_use_AUX_TABLE_38,
SCX_Common,
SCX_Unknown,
SCX_Common,
@@ -85141,6 +87766,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_SignWriting,
SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
+ SCX_Latin,
+ SCX_Unknown,
SCX_Glagolitic,
SCX_Unknown,
SCX_Glagolitic,
@@ -85151,6 +87780,10 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Glagolitic,
SCX_Unknown,
+ SCX_Cyrillic,
+ SCX_Unknown,
+ SCX_Cyrillic,
+ SCX_Unknown,
SCX_Nyiakeng_Puachue_Hmong,
SCX_Unknown,
SCX_Nyiakeng_Puachue_Hmong,
@@ -85159,10 +87792,22 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Nyiakeng_Puachue_Hmong,
SCX_Unknown,
+ SCX_Toto,
+ SCX_Unknown,
SCX_Wancho,
SCX_Unknown,
SCX_Wancho,
SCX_Unknown,
+ SCX_Nag_Mundari,
+ SCX_Unknown,
+ SCX_Ethiopic,
+ SCX_Unknown,
+ SCX_Ethiopic,
+ SCX_Unknown,
+ SCX_Ethiopic,
+ SCX_Unknown,
+ SCX_Ethiopic,
+ SCX_Unknown,
SCX_Mende_Kikakui,
SCX_Unknown,
SCX_Mende_Kikakui,
@@ -85260,14 +87905,14 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Common,
SCX_Unknown,
SCX_Common,
- SCX_use_AUX_TABLE_43,
+ SCX_use_AUX_TABLE_44,
SCX_Common,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
@@ -85321,21 +87966,21 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
SCX_Unknown,
SCX_Common,
SCX_Unknown,
- SCX_Common,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
- SCX_use_AUX_TABLE_37,
+ SCX_use_AUX_TABLE_38,
SCX_Unknown,
SCX_Common,
SCX_Unknown,
@@ -85354,7 +87999,7 @@ static const SCX_enum _Perl_SCX_invmap[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
- 1884, /* Number of elements */
+ 1979, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -85526,11 +88171,15 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x85C,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -85724,6 +88373,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0xC29,
0xC2A,
0xC3A,
+ 0xC3C,
0xC3D,
0xC3E,
0xC45,
@@ -85735,6 +88385,8 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC64,
@@ -85763,7 +88415,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -85772,6 +88424,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0xCF0,
0xCF1,
0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD0D,
@@ -85834,7 +88487,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xF00,
@@ -85943,11 +88596,9 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1732,
0x1735,
0x1740,
@@ -86003,12 +88654,12 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x1A90,
0x1A9A,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -86049,8 +88700,6 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x1CFB,
0x1D00,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x1F16,
0x1F18,
@@ -86241,10 +88890,6 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x2B55,
0x2B56,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -86338,10 +88983,14 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0xA6F0,
0xA6F2,
0xA708,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -86574,12 +89223,34 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -86658,6 +89329,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x10EAD,
0x10EB0,
0x10EB2,
+ 0x10EFD,
0x10F00,
0x10F1D,
0x10F27,
@@ -86665,6 +89337,9 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x10F30,
0x10F46,
0x10F51,
+ 0x10F70,
+ 0x10F82,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -86675,12 +89350,18 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x11047,
0x11066,
0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x1107F,
0x11083,
0x110B0,
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -86722,6 +89403,8 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -86866,7 +89549,7 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -86918,6 +89601,18 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x11EE0,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -86926,10 +89621,14 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
0x13430,
- 0x13439,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -86938,6 +89637,10 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -86971,8 +89674,18 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x16FE5,
0x16FF0,
0x16FF2,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
0x1B001,
+ 0x1B120,
+ 0x1B123,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1BC00,
@@ -86987,6 +89700,10 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -87073,6 +89790,10 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -87083,6 +89804,10 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -87092,10 +89817,25 @@ static const UV _Perl_WB_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2C0,
0x1E2EC,
0x1E2F0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -87455,6 +90195,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_Format,
+ WB_Other,
+ WB_Extend,
+ WB_ALetter,
WB_Extend,
WB_Format,
WB_Extend,
@@ -87649,6 +90393,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_Extend,
WB_ALetter,
WB_Extend,
WB_Other,
@@ -87661,6 +90406,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_ALetter,
WB_Other,
WB_ALetter,
+ WB_Other,
+ WB_ALetter,
WB_Extend,
WB_Other,
WB_Numeric,
@@ -87696,6 +90443,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Numeric,
WB_Other,
WB_ALetter,
+ WB_Extend,
WB_Other,
WB_Extend,
WB_ALetter,
@@ -87868,8 +90616,6 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_ALetter,
WB_Other,
WB_ALetter,
- WB_Other,
- WB_ALetter,
WB_Extend,
WB_Other,
WB_ALetter,
@@ -87892,7 +90638,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Other,
WB_Extend,
WB_Format,
- WB_Other,
+ WB_Extend,
WB_Numeric,
WB_Other,
WB_ALetter,
@@ -87974,8 +90720,6 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Other,
WB_ALetter,
WB_Extend,
- WB_Other,
- WB_Extend,
WB_ALetter,
WB_Other,
WB_ALetter,
@@ -88168,10 +90912,6 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_ALetter,
WB_Other,
WB_ALetter,
- WB_Other,
- WB_ALetter,
- WB_Other,
- WB_ALetter,
WB_Extend,
WB_ALetter,
WB_Other,
@@ -88267,6 +91007,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_ALetter,
WB_Other,
WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
WB_Extend,
WB_ALetter,
WB_Extend,
@@ -88534,6 +91278,28 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_ALetter,
WB_Other,
WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
WB_Extend,
WB_Other,
WB_Extend,
@@ -88583,9 +91349,13 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_Extend,
+ WB_ALetter,
+ WB_Other,
WB_ALetter,
WB_Other,
WB_ALetter,
+ WB_Extend,
WB_Other,
WB_ALetter,
WB_Extend,
@@ -88599,6 +91369,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Extend,
WB_Other,
WB_Numeric,
+ WB_Extend,
+ WB_ALetter,
+ WB_Extend,
+ WB_ALetter,
WB_Other,
WB_Extend,
WB_ALetter,
@@ -88606,6 +91380,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Other,
WB_Format,
WB_Other,
+ WB_Extend,
+ WB_Other,
WB_Format,
WB_Other,
WB_ALetter,
@@ -88646,6 +91422,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Extend,
WB_Other,
WB_Extend,
+ WB_ALetter,
+ WB_Extend,
WB_Other,
WB_ALetter,
WB_Other,
@@ -88843,6 +91621,18 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_ALetter,
WB_Extend,
WB_Other,
+ WB_Extend,
+ WB_ALetter,
+ WB_Extend,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Extend,
+ WB_Other,
+ WB_Extend,
+ WB_Other,
+ WB_Numeric,
+ WB_Other,
WB_ALetter,
WB_Other,
WB_ALetter,
@@ -88853,7 +91643,11 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_ALetter,
WB_Format,
+ WB_Extend,
+ WB_ALetter,
+ WB_Extend,
WB_Other,
WB_ALetter,
WB_Other,
@@ -88865,6 +91659,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_Numeric,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
WB_Extend,
WB_Other,
WB_ALetter,
@@ -88900,6 +91698,16 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Other,
WB_Katakana,
WB_Other,
+ WB_Katakana,
+ WB_Other,
+ WB_Katakana,
+ WB_Other,
+ WB_Katakana,
+ WB_Other,
+ WB_Katakana,
+ WB_Other,
+ WB_Katakana,
+ WB_Other,
WB_ALetter,
WB_Other,
WB_ALetter,
@@ -88915,6 +91723,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Extend,
WB_Other,
WB_Extend,
+ WB_Other,
+ WB_Extend,
+ WB_Other,
+ WB_Extend,
WB_Format,
WB_Extend,
WB_Other,
@@ -88998,6 +91810,12 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Other,
WB_Extend,
WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_Extend,
+ WB_Other,
WB_Extend,
WB_Other,
WB_Extend,
@@ -89006,6 +91824,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Other,
WB_Extend,
WB_Other,
+ WB_ALetter,
+ WB_Other,
WB_Extend,
WB_Other,
WB_ALetter,
@@ -89019,9 +91839,24 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
WB_Other,
WB_ALetter,
WB_Extend,
+ WB_Other,
+ WB_ALetter,
+ WB_Extend,
WB_Numeric,
WB_Other,
WB_ALetter,
+ WB_Extend,
+ WB_Numeric,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
WB_Other,
WB_Extend,
WB_Other,
@@ -89181,7 +92016,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
- 1907, /* Number of elements */
+ 2002, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -89376,11 +92211,15 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x85C,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -89574,6 +92413,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0xC29,
0xC2A,
0xC3A,
+ 0xC3C,
0xC3D,
0xC3E,
0xC45,
@@ -89585,6 +92425,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC64,
@@ -89613,7 +92455,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -89622,6 +92464,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0xCF0,
0xCF1,
0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD0D,
@@ -89684,7 +92527,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xF00,
@@ -89793,11 +92636,9 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1732,
0x1735,
0x1740,
@@ -89853,12 +92694,12 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x1A90,
0x1A9A,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -89899,8 +92740,6 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x1CFB,
0x1D00,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x1F16,
0x1F18,
@@ -90091,10 +92930,6 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x2B55,
0x2B56,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -90188,10 +93023,14 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0xA6F0,
0xA6F2,
0xA708,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -90424,12 +93263,34 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -90508,6 +93369,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x10EAD,
0x10EB0,
0x10EB2,
+ 0x10EFD,
0x10F00,
0x10F1D,
0x10F27,
@@ -90515,6 +93377,9 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x10F30,
0x10F46,
0x10F51,
+ 0x10F70,
+ 0x10F82,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -90525,12 +93390,18 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x11047,
0x11066,
0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x1107F,
0x11083,
0x110B0,
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -90572,6 +93443,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -90716,7 +93589,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -90768,6 +93641,18 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x11EE0,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -90776,10 +93661,14 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
0x13430,
- 0x13439,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -90788,6 +93677,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -90821,8 +93714,18 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x16FE5,
0x16FF0,
0x16FF2,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
0x1B001,
+ 0x1B120,
+ 0x1B123,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1BC00,
@@ -90837,6 +93740,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -90923,6 +93830,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -90933,6 +93844,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -90942,10 +93857,25 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2C0,
0x1E2EC,
0x1E2F0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -91331,6 +94261,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_Format,
+ WB_Other,
+ WB_Extend,
+ WB_ALetter,
WB_Extend,
WB_Format,
WB_Extend,
@@ -91525,6 +94459,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_Extend,
WB_ALetter,
WB_Extend,
WB_Other,
@@ -91537,6 +94472,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_ALetter,
WB_Other,
WB_ALetter,
+ WB_Other,
+ WB_ALetter,
WB_Extend,
WB_Other,
WB_Numeric,
@@ -91572,6 +94509,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Numeric,
WB_Other,
WB_ALetter,
+ WB_Extend,
WB_Other,
WB_Extend,
WB_ALetter,
@@ -91744,8 +94682,6 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_ALetter,
WB_Other,
WB_ALetter,
- WB_Other,
- WB_ALetter,
WB_Extend,
WB_Other,
WB_ALetter,
@@ -91768,7 +94704,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Other,
WB_Extend,
WB_Format,
- WB_Other,
+ WB_Extend,
WB_Numeric,
WB_Other,
WB_ALetter,
@@ -91850,8 +94786,6 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Other,
WB_ALetter,
WB_Extend,
- WB_Other,
- WB_Extend,
WB_ALetter,
WB_Other,
WB_ALetter,
@@ -92044,10 +94978,6 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_ALetter,
WB_Other,
WB_ALetter,
- WB_Other,
- WB_ALetter,
- WB_Other,
- WB_ALetter,
WB_Extend,
WB_ALetter,
WB_Other,
@@ -92143,6 +95073,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_ALetter,
WB_Other,
WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
WB_Extend,
WB_ALetter,
WB_Extend,
@@ -92410,6 +95344,28 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_ALetter,
WB_Other,
WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
WB_Extend,
WB_Other,
WB_Extend,
@@ -92459,9 +95415,13 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_Extend,
+ WB_ALetter,
+ WB_Other,
WB_ALetter,
WB_Other,
WB_ALetter,
+ WB_Extend,
WB_Other,
WB_ALetter,
WB_Extend,
@@ -92475,6 +95435,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Extend,
WB_Other,
WB_Numeric,
+ WB_Extend,
+ WB_ALetter,
+ WB_Extend,
+ WB_ALetter,
WB_Other,
WB_Extend,
WB_ALetter,
@@ -92482,6 +95446,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Other,
WB_Format,
WB_Other,
+ WB_Extend,
+ WB_Other,
WB_Format,
WB_Other,
WB_ALetter,
@@ -92522,6 +95488,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Extend,
WB_Other,
WB_Extend,
+ WB_ALetter,
+ WB_Extend,
WB_Other,
WB_ALetter,
WB_Other,
@@ -92719,6 +95687,18 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_ALetter,
WB_Extend,
WB_Other,
+ WB_Extend,
+ WB_ALetter,
+ WB_Extend,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Extend,
+ WB_Other,
+ WB_Extend,
+ WB_Other,
+ WB_Numeric,
+ WB_Other,
WB_ALetter,
WB_Other,
WB_ALetter,
@@ -92729,7 +95709,11 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_ALetter,
WB_Format,
+ WB_Extend,
+ WB_ALetter,
+ WB_Extend,
WB_Other,
WB_ALetter,
WB_Other,
@@ -92741,6 +95725,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_Numeric,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
WB_Extend,
WB_Other,
WB_ALetter,
@@ -92776,6 +95764,16 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Other,
WB_Katakana,
WB_Other,
+ WB_Katakana,
+ WB_Other,
+ WB_Katakana,
+ WB_Other,
+ WB_Katakana,
+ WB_Other,
+ WB_Katakana,
+ WB_Other,
+ WB_Katakana,
+ WB_Other,
WB_ALetter,
WB_Other,
WB_ALetter,
@@ -92791,6 +95789,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Extend,
WB_Other,
WB_Extend,
+ WB_Other,
+ WB_Extend,
+ WB_Other,
+ WB_Extend,
WB_Format,
WB_Extend,
WB_Other,
@@ -92874,6 +95876,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Other,
WB_Extend,
WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
WB_Extend,
WB_Other,
WB_Extend,
@@ -92887,6 +95893,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_ALetter,
WB_Other,
WB_Extend,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_Extend,
WB_ALetter,
WB_Other,
WB_Numeric,
@@ -92895,10 +95905,25 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
WB_Other,
WB_ALetter,
WB_Extend,
+ WB_Other,
+ WB_ALetter,
+ WB_Extend,
+ WB_Numeric,
+ WB_Other,
+ WB_ALetter,
+ WB_Extend,
WB_Numeric,
WB_Other,
WB_ALetter,
WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
WB_Extend,
WB_Other,
WB_ALetter,
@@ -93057,7 +96082,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
- 1903, /* Number of elements */
+ 1998, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -93248,11 +96273,15 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x85C,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -93446,6 +96475,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0xC29,
0xC2A,
0xC3A,
+ 0xC3C,
0xC3D,
0xC3E,
0xC45,
@@ -93457,6 +96487,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC64,
@@ -93485,7 +96517,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -93494,6 +96526,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0xCF0,
0xCF1,
0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD0D,
@@ -93556,7 +96589,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xF00,
@@ -93665,11 +96698,9 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1732,
0x1735,
0x1740,
@@ -93725,12 +96756,12 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x1A90,
0x1A9A,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -93771,8 +96802,6 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x1CFB,
0x1D00,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x1F16,
0x1F18,
@@ -93963,10 +96992,6 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x2B55,
0x2B56,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -94060,10 +97085,14 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0xA6F0,
0xA6F2,
0xA708,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -94296,12 +97325,34 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -94380,6 +97431,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x10EAD,
0x10EB0,
0x10EB2,
+ 0x10EFD,
0x10F00,
0x10F1D,
0x10F27,
@@ -94387,6 +97439,9 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x10F30,
0x10F46,
0x10F51,
+ 0x10F70,
+ 0x10F82,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -94397,12 +97452,18 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x11047,
0x11066,
0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x1107F,
0x11083,
0x110B0,
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -94444,6 +97505,8 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -94588,7 +97651,7 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -94640,6 +97703,18 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x11EE0,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -94648,10 +97723,14 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
0x13430,
- 0x13439,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -94660,6 +97739,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -94693,8 +97776,18 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x16FE5,
0x16FF0,
0x16FF2,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
0x1B001,
+ 0x1B120,
+ 0x1B123,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1BC00,
@@ -94709,6 +97802,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -94795,6 +97892,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -94805,6 +97906,10 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -94814,10 +97919,25 @@ static const UV _Perl_WB_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2C0,
0x1E2EC,
0x1E2F0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -95199,6 +98319,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_Format,
+ WB_Other,
+ WB_Extend,
+ WB_ALetter,
WB_Extend,
WB_Format,
WB_Extend,
@@ -95393,6 +98517,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_Extend,
WB_ALetter,
WB_Extend,
WB_Other,
@@ -95405,6 +98530,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_ALetter,
WB_Other,
WB_ALetter,
+ WB_Other,
+ WB_ALetter,
WB_Extend,
WB_Other,
WB_Numeric,
@@ -95440,6 +98567,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Numeric,
WB_Other,
WB_ALetter,
+ WB_Extend,
WB_Other,
WB_Extend,
WB_ALetter,
@@ -95612,8 +98740,6 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_ALetter,
WB_Other,
WB_ALetter,
- WB_Other,
- WB_ALetter,
WB_Extend,
WB_Other,
WB_ALetter,
@@ -95636,7 +98762,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Other,
WB_Extend,
WB_Format,
- WB_Other,
+ WB_Extend,
WB_Numeric,
WB_Other,
WB_ALetter,
@@ -95718,8 +98844,6 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Other,
WB_ALetter,
WB_Extend,
- WB_Other,
- WB_Extend,
WB_ALetter,
WB_Other,
WB_ALetter,
@@ -95912,10 +99036,6 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_ALetter,
WB_Other,
WB_ALetter,
- WB_Other,
- WB_ALetter,
- WB_Other,
- WB_ALetter,
WB_Extend,
WB_ALetter,
WB_Other,
@@ -96011,6 +99131,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_ALetter,
WB_Other,
WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
WB_Extend,
WB_ALetter,
WB_Extend,
@@ -96278,6 +99402,28 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_ALetter,
WB_Other,
WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
WB_Extend,
WB_Other,
WB_Extend,
@@ -96327,9 +99473,13 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_Extend,
+ WB_ALetter,
+ WB_Other,
WB_ALetter,
WB_Other,
WB_ALetter,
+ WB_Extend,
WB_Other,
WB_ALetter,
WB_Extend,
@@ -96343,6 +99493,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Extend,
WB_Other,
WB_Numeric,
+ WB_Extend,
+ WB_ALetter,
+ WB_Extend,
+ WB_ALetter,
WB_Other,
WB_Extend,
WB_ALetter,
@@ -96350,6 +99504,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Other,
WB_Format,
WB_Other,
+ WB_Extend,
+ WB_Other,
WB_Format,
WB_Other,
WB_ALetter,
@@ -96390,6 +99546,8 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Extend,
WB_Other,
WB_Extend,
+ WB_ALetter,
+ WB_Extend,
WB_Other,
WB_ALetter,
WB_Other,
@@ -96587,6 +99745,18 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_ALetter,
WB_Extend,
WB_Other,
+ WB_Extend,
+ WB_ALetter,
+ WB_Extend,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Extend,
+ WB_Other,
+ WB_Extend,
+ WB_Other,
+ WB_Numeric,
+ WB_Other,
WB_ALetter,
WB_Other,
WB_ALetter,
@@ -96597,7 +99767,11 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_ALetter,
WB_Format,
+ WB_Extend,
+ WB_ALetter,
+ WB_Extend,
WB_Other,
WB_ALetter,
WB_Other,
@@ -96609,6 +99783,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Other,
WB_ALetter,
WB_Other,
+ WB_Numeric,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
WB_Extend,
WB_Other,
WB_ALetter,
@@ -96644,6 +99822,16 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Other,
WB_Katakana,
WB_Other,
+ WB_Katakana,
+ WB_Other,
+ WB_Katakana,
+ WB_Other,
+ WB_Katakana,
+ WB_Other,
+ WB_Katakana,
+ WB_Other,
+ WB_Katakana,
+ WB_Other,
WB_ALetter,
WB_Other,
WB_ALetter,
@@ -96659,6 +99847,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Extend,
WB_Other,
WB_Extend,
+ WB_Other,
+ WB_Extend,
+ WB_Other,
+ WB_Extend,
WB_Format,
WB_Extend,
WB_Other,
@@ -96742,6 +99934,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Other,
WB_Extend,
WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
WB_Extend,
WB_Other,
WB_Extend,
@@ -96755,6 +99951,10 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_ALetter,
WB_Other,
WB_Extend,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_Extend,
WB_ALetter,
WB_Other,
WB_Numeric,
@@ -96763,10 +99963,25 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
WB_Other,
WB_ALetter,
WB_Extend,
+ WB_Other,
+ WB_ALetter,
+ WB_Extend,
+ WB_Numeric,
+ WB_Other,
+ WB_ALetter,
+ WB_Extend,
WB_Numeric,
WB_Other,
WB_ALetter,
WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
+ WB_ALetter,
+ WB_Other,
WB_Extend,
WB_Other,
WB_ALetter,
@@ -96922,7 +100137,7 @@ static const WB_enum _Perl_WB_invmap[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV Simple_Case_Folding_invlist[] = { /* for ASCII/Latin1 */
- 1291, /* Number of elements */
+ 1307, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -97846,7 +101061,7 @@ static const UV Simple_Case_Folding_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -98190,6 +101405,8 @@ static const UV Simple_Case_Folding_invlist[] = { /* for ASCII/Latin1 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
@@ -98199,6 +101416,12 @@ static const UV Simple_Case_Folding_invlist[] = { /* for ASCII/Latin1 */
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xAB70,
@@ -98209,6 +101432,14 @@ static const UV Simple_Case_Folding_invlist[] = { /* for ASCII/Latin1 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -99492,6 +102723,8 @@ static const I32 Simple_Case_Folding_invmap[] = { /* for ASCII/Latin1 */
0,
0xA7BF,
0,
+ 0xA7C1,
+ 0,
0xA7C3,
0,
0xA794,
@@ -99501,6 +102734,12 @@ static const I32 Simple_Case_Folding_invmap[] = { /* for ASCII/Latin1 */
0,
0xA7CA,
0,
+ 0xA7D1,
+ 0,
+ 0xA7D7,
+ 0,
+ 0xA7D9,
+ 0,
0xA7F6,
0,
0x13A0,
@@ -99511,6 +102750,14 @@ static const I32 Simple_Case_Folding_invmap[] = { /* for ASCII/Latin1 */
0,
0x104D8,
0,
+ 0x10597,
+ 0,
+ 0x105A3,
+ 0,
+ 0x105B3,
+ 0,
+ 0x105BB,
+ 0,
0x10CC0,
0,
0x118C0,
@@ -99533,7 +102780,7 @@ static const I32 Simple_Case_Folding_invmap[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV Simple_Case_Folding_invlist[] = { /* for EBCDIC 1047 */
- 1309, /* Number of elements */
+ 1325, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -100475,7 +103722,7 @@ static const UV Simple_Case_Folding_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -100819,6 +104066,8 @@ static const UV Simple_Case_Folding_invlist[] = { /* for EBCDIC 1047 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
@@ -100828,6 +104077,12 @@ static const UV Simple_Case_Folding_invlist[] = { /* for EBCDIC 1047 */
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xAB70,
@@ -100838,6 +104093,14 @@ static const UV Simple_Case_Folding_invlist[] = { /* for EBCDIC 1047 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -102142,6 +105405,8 @@ static const I32 Simple_Case_Folding_invmap[] = { /* for EBCDIC 1047 */
0,
0xA7BF,
0,
+ 0xA7C1,
+ 0,
0xA7C3,
0,
0xA794,
@@ -102151,6 +105416,12 @@ static const I32 Simple_Case_Folding_invmap[] = { /* for EBCDIC 1047 */
0,
0xA7CA,
0,
+ 0xA7D1,
+ 0,
+ 0xA7D7,
+ 0,
+ 0xA7D9,
+ 0,
0xA7F6,
0,
0x13A0,
@@ -102161,6 +105432,14 @@ static const I32 Simple_Case_Folding_invmap[] = { /* for EBCDIC 1047 */
0,
0x104D8,
0,
+ 0x10597,
+ 0,
+ 0x105A3,
+ 0,
+ 0x105B3,
+ 0,
+ 0x105BB,
+ 0,
0x10CC0,
0,
0x118C0,
@@ -102183,7 +105462,7 @@ static const I32 Simple_Case_Folding_invmap[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV Simple_Case_Folding_invlist[] = { /* for EBCDIC 037 */
- 1305, /* Number of elements */
+ 1321, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -103121,7 +106400,7 @@ static const UV Simple_Case_Folding_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -103465,6 +106744,8 @@ static const UV Simple_Case_Folding_invlist[] = { /* for EBCDIC 037 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
@@ -103474,6 +106755,12 @@ static const UV Simple_Case_Folding_invlist[] = { /* for EBCDIC 037 */
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xAB70,
@@ -103484,6 +106771,14 @@ static const UV Simple_Case_Folding_invlist[] = { /* for EBCDIC 037 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -104784,6 +108079,8 @@ static const I32 Simple_Case_Folding_invmap[] = { /* for EBCDIC 037 */
0,
0xA7BF,
0,
+ 0xA7C1,
+ 0,
0xA7C3,
0,
0xA794,
@@ -104793,6 +108090,12 @@ static const I32 Simple_Case_Folding_invmap[] = { /* for EBCDIC 037 */
0,
0xA7CA,
0,
+ 0xA7D1,
+ 0,
+ 0xA7D7,
+ 0,
+ 0xA7D9,
+ 0,
0xA7F6,
0,
0x13A0,
@@ -104803,6 +108106,14 @@ static const I32 Simple_Case_Folding_invmap[] = { /* for EBCDIC 037 */
0,
0x104D8,
0,
+ 0x10597,
+ 0,
+ 0x105A3,
+ 0,
+ 0x105B3,
+ 0,
+ 0x105BB,
+ 0,
0x10CC0,
0,
0x118C0,
@@ -104822,7 +108133,7 @@ static const I32 Simple_Case_Folding_invmap[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV Titlecase_Mapping_invlist[] = { /* for ASCII/Latin1 */
- 1340, /* Number of elements */
+ 1356, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -105796,7 +109107,7 @@ static const UV Titlecase_Mapping_invlist[] = { /* for ASCII/Latin1 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -106127,12 +109438,20 @@ static const UV Titlecase_Mapping_invlist[] = { /* for ASCII/Latin1 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -106158,6 +109477,14 @@ static const UV Titlecase_Mapping_invlist[] = { /* for ASCII/Latin1 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -107873,12 +111200,20 @@ static const I32 Titlecase_Mapping_invmap[] = { /* for ASCII/Latin1 */
0,
0xA7BE,
0,
+ 0xA7C0,
+ 0,
0xA7C2,
0,
0xA7C7,
0,
0xA7C9,
0,
+ 0xA7D0,
+ 0,
+ 0xA7D6,
+ 0,
+ 0xA7D8,
+ 0,
0xA7F5,
0,
0xA7B3,
@@ -107904,6 +111239,14 @@ static const I32 Titlecase_Mapping_invmap[] = { /* for ASCII/Latin1 */
0,
0x104B0,
0,
+ 0x10570,
+ 0,
+ 0x1057C,
+ 0,
+ 0x1058C,
+ 0,
+ 0x10594,
+ 0,
0x10C80,
0,
0x118A0,
@@ -107926,7 +111269,7 @@ static const I32 Titlecase_Mapping_invmap[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV Titlecase_Mapping_invlist[] = { /* for EBCDIC 1047 */
- 1356, /* Number of elements */
+ 1372, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -108916,7 +112259,7 @@ static const UV Titlecase_Mapping_invlist[] = { /* for EBCDIC 1047 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -109247,12 +112590,20 @@ static const UV Titlecase_Mapping_invlist[] = { /* for EBCDIC 1047 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -109278,6 +112629,14 @@ static const UV Titlecase_Mapping_invlist[] = { /* for EBCDIC 1047 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -111012,12 +114371,20 @@ static const I32 Titlecase_Mapping_invmap[] = { /* for EBCDIC 1047 */
0,
0xA7BE,
0,
+ 0xA7C0,
+ 0,
0xA7C2,
0,
0xA7C7,
0,
0xA7C9,
0,
+ 0xA7D0,
+ 0,
+ 0xA7D6,
+ 0,
+ 0xA7D8,
+ 0,
0xA7F5,
0,
0xA7B3,
@@ -111043,6 +114410,14 @@ static const I32 Titlecase_Mapping_invmap[] = { /* for EBCDIC 1047 */
0,
0x104B0,
0,
+ 0x10570,
+ 0,
+ 0x1057C,
+ 0,
+ 0x1058C,
+ 0,
+ 0x10594,
+ 0,
0x10C80,
0,
0x118A0,
@@ -111065,7 +114440,7 @@ static const I32 Titlecase_Mapping_invmap[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV Titlecase_Mapping_invlist[] = { /* for EBCDIC 037 */
- 1354, /* Number of elements */
+ 1370, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -112053,7 +115428,7 @@ static const UV Titlecase_Mapping_invlist[] = { /* for EBCDIC 037 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -112384,12 +115759,20 @@ static const UV Titlecase_Mapping_invlist[] = { /* for EBCDIC 037 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -112415,6 +115798,14 @@ static const UV Titlecase_Mapping_invlist[] = { /* for EBCDIC 037 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -114147,12 +117538,20 @@ static const I32 Titlecase_Mapping_invmap[] = { /* for EBCDIC 037 */
0,
0xA7BE,
0,
+ 0xA7C0,
+ 0,
0xA7C2,
0,
0xA7C7,
0,
0xA7C9,
0,
+ 0xA7D0,
+ 0,
+ 0xA7D6,
+ 0,
+ 0xA7D8,
+ 0,
0xA7F5,
0,
0xA7B3,
@@ -114178,6 +117577,14 @@ static const I32 Titlecase_Mapping_invmap[] = { /* for EBCDIC 037 */
0,
0x104B0,
0,
+ 0x10570,
+ 0,
+ 0x1057C,
+ 0,
+ 0x1058C,
+ 0,
+ 0x10594,
+ 0,
0x10C80,
0,
0x118A0,
@@ -114197,7 +117604,7 @@ static const I32 Titlecase_Mapping_invmap[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV Uppercase_Mapping_invlist[] = { /* for ASCII/Latin1 */
- 1391, /* Number of elements */
+ 1407, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -115222,7 +118629,7 @@ static const UV Uppercase_Mapping_invlist[] = { /* for ASCII/Latin1 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -115553,12 +118960,20 @@ static const UV Uppercase_Mapping_invlist[] = { /* for ASCII/Latin1 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -115584,6 +118999,14 @@ static const UV Uppercase_Mapping_invlist[] = { /* for ASCII/Latin1 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -117566,12 +120989,20 @@ static const I32 Uppercase_Mapping_invmap[] = { /* for ASCII/Latin1 */
0,
0xA7BE,
0,
+ 0xA7C0,
+ 0,
0xA7C2,
0,
0xA7C7,
0,
0xA7C9,
0,
+ 0xA7D0,
+ 0,
+ 0xA7D6,
+ 0,
+ 0xA7D8,
+ 0,
0xA7F5,
0,
0xA7B3,
@@ -117597,6 +121028,14 @@ static const I32 Uppercase_Mapping_invmap[] = { /* for ASCII/Latin1 */
0,
0x104B0,
0,
+ 0x10570,
+ 0,
+ 0x1057C,
+ 0,
+ 0x1058C,
+ 0,
+ 0x10594,
+ 0,
0x10C80,
0,
0x118A0,
@@ -117619,7 +121058,7 @@ static const I32 Uppercase_Mapping_invmap[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV Uppercase_Mapping_invlist[] = { /* for EBCDIC 1047 */
- 1407, /* Number of elements */
+ 1423, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -118660,7 +122099,7 @@ static const UV Uppercase_Mapping_invlist[] = { /* for EBCDIC 1047 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -118991,12 +122430,20 @@ static const UV Uppercase_Mapping_invlist[] = { /* for EBCDIC 1047 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -119022,6 +122469,14 @@ static const UV Uppercase_Mapping_invlist[] = { /* for EBCDIC 1047 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -121023,12 +124478,20 @@ static const I32 Uppercase_Mapping_invmap[] = { /* for EBCDIC 1047 */
0,
0xA7BE,
0,
+ 0xA7C0,
+ 0,
0xA7C2,
0,
0xA7C7,
0,
0xA7C9,
0,
+ 0xA7D0,
+ 0,
+ 0xA7D6,
+ 0,
+ 0xA7D8,
+ 0,
0xA7F5,
0,
0xA7B3,
@@ -121054,6 +124517,14 @@ static const I32 Uppercase_Mapping_invmap[] = { /* for EBCDIC 1047 */
0,
0x104B0,
0,
+ 0x10570,
+ 0,
+ 0x1057C,
+ 0,
+ 0x1058C,
+ 0,
+ 0x10594,
+ 0,
0x10C80,
0,
0x118A0,
@@ -121076,7 +124547,7 @@ static const I32 Uppercase_Mapping_invmap[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV Uppercase_Mapping_invlist[] = { /* for EBCDIC 037 */
- 1405, /* Number of elements */
+ 1421, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -122115,7 +125586,7 @@ static const UV Uppercase_Mapping_invlist[] = { /* for EBCDIC 037 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -122446,12 +125917,20 @@ static const UV Uppercase_Mapping_invlist[] = { /* for EBCDIC 037 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -122477,6 +125956,14 @@ static const UV Uppercase_Mapping_invlist[] = { /* for EBCDIC 037 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -124476,12 +127963,20 @@ static const I32 Uppercase_Mapping_invmap[] = { /* for EBCDIC 037 */
0,
0xA7BE,
0,
+ 0xA7C0,
+ 0,
0xA7C2,
0,
0xA7C7,
0,
0xA7C9,
0,
+ 0xA7D0,
+ 0,
+ 0xA7D6,
+ 0,
+ 0xA7D8,
+ 0,
0xA7F5,
0,
0xA7B3,
@@ -124507,6 +128002,14 @@ static const I32 Uppercase_Mapping_invmap[] = { /* for EBCDIC 037 */
0,
0x104B0,
0,
+ 0x10570,
+ 0,
+ 0x1057C,
+ 0,
+ 0x1058C,
+ 0,
+ 0x10594,
+ 0,
0x10C80,
0,
0x118A0,
@@ -124829,7 +128332,7 @@ static const UV UNI_ASCII_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
- 1354, /* Number of elements */
+ 1414, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -124858,8 +128361,6 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x5EF,
0x5F5,
0x600,
- 0x61D,
- 0x61E,
0x70E,
0x70F,
0x74B,
@@ -124877,11 +128378,11 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x984,
0x985,
0x98D,
@@ -125037,7 +128538,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -125047,6 +128548,8 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -125069,14 +128572,14 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -125136,7 +128639,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -125204,10 +128707,8 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -125224,8 +128725,6 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x17F0,
0x17FA,
0x1800,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -125264,11 +128763,11 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -125284,8 +128783,6 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -125326,7 +128823,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -125340,10 +128837,6 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -125374,7 +128867,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -125398,8 +128891,6 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -125408,10 +128899,14 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -125482,16 +128977,14 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -125578,13 +129071,33 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -125667,10 +129180,12 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -125678,9 +129193,9 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -125700,7 +129215,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -125764,7 +129279,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -125772,7 +129287,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -125803,8 +129318,10 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -125847,6 +129364,12 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -125859,10 +129382,10 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -125872,7 +129395,9 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -125905,10 +129430,20 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -125923,14 +129458,22 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
0x1D127,
0x1D129,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -125983,6 +129526,10 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -125993,6 +129540,10 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -126001,10 +129552,22 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -126113,16 +129676,18 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -126136,27 +129701,23 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -126164,9 +129725,9 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -126177,6 +129738,8 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -126192,7 +129755,7 @@ static const UV UNI_ASSIGNED_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_CASED_invlist[] = { /* for ASCII/Latin1 */
- 283, /* Number of elements */
+ 315, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -126259,7 +129822,7 @@ static const UV UNI_CASED_invlist[] = { /* for ASCII/Latin1 */
0x10CE,
0x10D0,
0x10FB,
- 0x10FD,
+ 0x10FC,
0x1100,
0x13A0,
0x13F6,
@@ -126352,10 +129915,6 @@ static const UV UNI_CASED_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -126376,17 +129935,21 @@ static const UV UNI_CASED_invlist[] = { /* for ASCII/Latin1 */
0xA78B,
0xA78F,
0xA790,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA7F7,
0xA7F8,
0xA7FB,
0xAB30,
0xAB5B,
0xAB5C,
- 0xAB69,
+ 0xAB6A,
0xAB70,
0xABC0,
0xFB00,
@@ -126403,6 +129966,30 @@ static const UV UNI_CASED_invlist[] = { /* for ASCII/Latin1 */
0x104D4,
0x104D8,
0x104FC,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
+ 0x10780,
+ 0x10781,
+ 0x10783,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10C80,
0x10CB3,
0x10CC0,
@@ -126471,6 +130058,14 @@ static const UV UNI_CASED_invlist[] = { /* for ASCII/Latin1 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E900,
0x1E944,
0x1F130,
@@ -126489,7 +130084,7 @@ static const UV UNI_CASED_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_CASED_invlist[] = { /* for EBCDIC 1047 */
- 309, /* Number of elements */
+ 341, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -126582,7 +130177,7 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 1047 */
0x10CE,
0x10D0,
0x10FB,
- 0x10FD,
+ 0x10FC,
0x1100,
0x13A0,
0x13F6,
@@ -126675,10 +130270,6 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -126699,17 +130290,21 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 1047 */
0xA78B,
0xA78F,
0xA790,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA7F7,
0xA7F8,
0xA7FB,
0xAB30,
0xAB5B,
0xAB5C,
- 0xAB69,
+ 0xAB6A,
0xAB70,
0xABC0,
0xFB00,
@@ -126726,6 +130321,30 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 1047 */
0x104D4,
0x104D8,
0x104FC,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
+ 0x10780,
+ 0x10781,
+ 0x10783,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10C80,
0x10CB3,
0x10CC0,
@@ -126794,6 +130413,14 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 1047 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E900,
0x1E944,
0x1F130,
@@ -126812,7 +130439,7 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_CASED_invlist[] = { /* for EBCDIC 037 */
- 305, /* Number of elements */
+ 337, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -126901,7 +130528,7 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 037 */
0x10CE,
0x10D0,
0x10FB,
- 0x10FD,
+ 0x10FC,
0x1100,
0x13A0,
0x13F6,
@@ -126994,10 +130621,6 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -127018,17 +130641,21 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 037 */
0xA78B,
0xA78F,
0xA790,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA7F7,
0xA7F8,
0xA7FB,
0xAB30,
0xAB5B,
0xAB5C,
- 0xAB69,
+ 0xAB6A,
0xAB70,
0xABC0,
0xFB00,
@@ -127045,6 +130672,30 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 037 */
0x104D4,
0x104D8,
0x104FC,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
+ 0x10780,
+ 0x10781,
+ 0x10783,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10C80,
0x10CB3,
0x10CC0,
@@ -127113,6 +130764,14 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 037 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E900,
0x1E944,
0x1F130,
@@ -127128,7 +130787,7 @@ static const UV UNI_CASED_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_CASEDLETTER_invlist[] = { /* for ASCII/Latin1 */
- 265, /* Number of elements */
+ 287, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -127272,10 +130931,6 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for ASCII/Latin1 */
0x2183,
0x2185,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2C7C,
0x2C7E,
0x2CE5,
@@ -127300,9 +130955,13 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for ASCII/Latin1 */
0xA78B,
0xA78F,
0xA790,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
0xA7F5,
0xA7F7,
0xA7FA,
@@ -127327,6 +130986,22 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for ASCII/Latin1 */
0x104D4,
0x104D8,
0x104FC,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10C80,
0x10CB3,
0x10CC0,
@@ -127395,6 +131070,12 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for ASCII/Latin1 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E900,
0x1E944
};
@@ -127407,7 +131088,7 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 1047 */
- 297, /* Number of elements */
+ 319, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -127583,10 +131264,6 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 1047 */
0x2183,
0x2185,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2C7C,
0x2C7E,
0x2CE5,
@@ -127611,9 +131288,13 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 1047 */
0xA78B,
0xA78F,
0xA790,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
0xA7F5,
0xA7F7,
0xA7FA,
@@ -127638,6 +131319,22 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 1047 */
0x104D4,
0x104D8,
0x104FC,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10C80,
0x10CB3,
0x10CC0,
@@ -127706,6 +131403,12 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 1047 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E900,
0x1E944
};
@@ -127718,7 +131421,7 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 037 */
- 293, /* Number of elements */
+ 315, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -127890,10 +131593,6 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 037 */
0x2183,
0x2185,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2C7C,
0x2C7E,
0x2CE5,
@@ -127918,9 +131617,13 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 037 */
0xA78B,
0xA78F,
0xA790,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
0xA7F5,
0xA7F7,
0xA7FA,
@@ -127945,6 +131648,22 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 037 */
0x104D4,
0x104D8,
0x104FC,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10C80,
0x10CB3,
0x10CC0,
@@ -128013,6 +131732,12 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 037 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E900,
0x1E944
};
@@ -128022,7 +131747,7 @@ static const UV UNI_CASEDLETTER_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_LOWERCASELETTER_invlist[] = { /* for ASCII/Latin1 */
- 1291, /* Number of elements */
+ 1317, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -128890,7 +132615,7 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for ASCII/Latin1 */
0x2184,
0x2185,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -129227,12 +132952,24 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for ASCII/Latin1 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xA7FA,
@@ -129253,6 +132990,14 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for ASCII/Latin1 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -129315,6 +133060,12 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for ASCII/Latin1 */
0x1D7CA,
0x1D7CB,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E922,
0x1E944
};
@@ -129327,7 +133078,7 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 1047 */
- 1305, /* Number of elements */
+ 1331, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -130209,7 +133960,7 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 1047 */
0x2184,
0x2185,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -130546,12 +134297,24 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 1047 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xA7FA,
@@ -130572,6 +134335,14 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 1047 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -130634,6 +134405,12 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 1047 */
0x1D7CA,
0x1D7CB,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E922,
0x1E944
};
@@ -130646,7 +134423,7 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 037 */
- 1305, /* Number of elements */
+ 1331, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -131528,7 +135305,7 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 037 */
0x2184,
0x2185,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -131865,12 +135642,24 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 037 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xA7FA,
@@ -131891,6 +135680,14 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 037 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -131953,6 +135750,12 @@ static const UV UNI_LOWERCASELETTER_invlist[] = { /* for EBCDIC 037 */
0x1D7CA,
0x1D7CB,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E922,
0x1E944
};
@@ -132949,7 +136752,7 @@ static const UV UNI_TITLE_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_UPPERCASELETTER_invlist[] = { /* for ASCII/Latin1 */
- 1277, /* Number of elements */
+ 1293, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -133817,7 +137620,7 @@ static const UV UNI_UPPERCASELETTER_invlist[] = { /* for ASCII/Latin1 */
0x2183,
0x2184,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -134146,12 +137949,20 @@ static const UV UNI_UPPERCASELETTER_invlist[] = { /* for ASCII/Latin1 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -134160,6 +137971,14 @@ static const UV UNI_UPPERCASELETTER_invlist[] = { /* for ASCII/Latin1 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -134240,7 +138059,7 @@ static const UV UNI_UPPERCASELETTER_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_UPPERCASELETTER_invlist[] = { /* for EBCDIC 1047 */
- 1295, /* Number of elements */
+ 1311, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -135126,7 +138945,7 @@ static const UV UNI_UPPERCASELETTER_invlist[] = { /* for EBCDIC 1047 */
0x2183,
0x2184,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -135455,12 +139274,20 @@ static const UV UNI_UPPERCASELETTER_invlist[] = { /* for EBCDIC 1047 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -135469,6 +139296,14 @@ static const UV UNI_UPPERCASELETTER_invlist[] = { /* for EBCDIC 1047 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -135549,7 +139384,7 @@ static const UV UNI_UPPERCASELETTER_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_UPPERCASELETTER_invlist[] = { /* for EBCDIC 037 */
- 1291, /* Number of elements */
+ 1307, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -136431,7 +140266,7 @@ static const UV UNI_UPPERCASELETTER_invlist[] = { /* for EBCDIC 037 */
0x2183,
0x2184,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -136760,12 +140595,20 @@ static const UV UNI_UPPERCASELETTER_invlist[] = { /* for EBCDIC 037 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -136774,6 +140617,14 @@ static const UV UNI_UPPERCASELETTER_invlist[] = { /* for EBCDIC 037 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -136915,7 +140766,7 @@ static const UV UNI_VERTSPACE_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
- 1465, /* Number of elements */
+ 1545, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -137024,10 +140875,12 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x8D4,
0x8E0,
0x8E3,
@@ -137195,8 +141048,6 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0xBE6,
0xBF0,
0xC00,
- 0xC04,
- 0xC05,
0xC0D,
0xC0E,
0xC11,
@@ -137214,6 +141065,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -137238,14 +141091,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0xCCD,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -137331,7 +141184,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0xF49,
0xF6D,
0xF71,
- 0xF82,
+ 0xF84,
0xF88,
0xF98,
0xF99,
@@ -137401,10 +141254,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1714,
- 0x1720,
+ 0x171F,
0x1734,
0x1740,
0x1754,
@@ -137462,12 +141313,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x1AA8,
0x1ABF,
0x1AC1,
+ 0x1ACC,
+ 0x1ACF,
0x1B00,
0x1B34,
0x1B35,
0x1B44,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B80,
@@ -137575,10 +141428,6 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -137643,8 +141492,6 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -137663,10 +141510,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA806,
0xA807,
0xA828,
@@ -137836,12 +141687,34 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -137918,6 +141791,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -137926,8 +141801,12 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x11046,
0x11066,
0x11070,
- 0x11082,
+ 0x11071,
+ 0x11076,
+ 0x11080,
0x110B9,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -137957,7 +141836,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x11237,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -138042,6 +141921,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x1172B,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x11839,
0x118A0,
@@ -138082,7 +141963,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x11A98,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -138134,6 +142015,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F41,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -138142,8 +142031,12 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
@@ -138152,6 +142045,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16B00,
@@ -138184,10 +142081,20 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -138264,6 +142171,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -138274,6 +142185,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E137,
@@ -138282,10 +142197,24 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
0x1E2F0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -138371,9 +142300,9 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -138383,7 +142312,9 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* ASCII/Latin1 */
@@ -138394,7 +142325,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
- 1489, /* Number of elements */
+ 1569, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -138527,10 +142458,12 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x8D4,
0x8E0,
0x8E3,
@@ -138698,8 +142631,6 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0xBE6,
0xBF0,
0xC00,
- 0xC04,
- 0xC05,
0xC0D,
0xC0E,
0xC11,
@@ -138717,6 +142648,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -138741,14 +142674,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0xCCD,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -138834,7 +142767,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0xF49,
0xF6D,
0xF71,
- 0xF82,
+ 0xF84,
0xF88,
0xF98,
0xF99,
@@ -138904,10 +142837,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1714,
- 0x1720,
+ 0x171F,
0x1734,
0x1740,
0x1754,
@@ -138965,12 +142896,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x1AA8,
0x1ABF,
0x1AC1,
+ 0x1ACC,
+ 0x1ACF,
0x1B00,
0x1B34,
0x1B35,
0x1B44,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B80,
@@ -139078,10 +143011,6 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -139146,8 +143075,6 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -139166,10 +143093,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA806,
0xA807,
0xA828,
@@ -139339,12 +143270,34 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -139421,6 +143374,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -139429,8 +143384,12 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x11046,
0x11066,
0x11070,
- 0x11082,
+ 0x11071,
+ 0x11076,
+ 0x11080,
0x110B9,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -139460,7 +143419,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x11237,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -139545,6 +143504,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x1172B,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x11839,
0x118A0,
@@ -139585,7 +143546,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x11A98,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -139637,6 +143598,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F41,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -139645,8 +143614,12 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
@@ -139655,6 +143628,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16B00,
@@ -139687,10 +143664,20 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -139767,6 +143754,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -139777,6 +143768,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E137,
@@ -139785,10 +143780,24 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
0x1E2F0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -139874,9 +143883,9 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -139886,7 +143895,9 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 1047 */
@@ -139897,7 +143908,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
- 1485, /* Number of elements */
+ 1565, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -140026,10 +144037,12 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x8D4,
0x8E0,
0x8E3,
@@ -140197,8 +144210,6 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0xBE6,
0xBF0,
0xC00,
- 0xC04,
- 0xC05,
0xC0D,
0xC0E,
0xC11,
@@ -140216,6 +144227,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -140240,14 +144253,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0xCCD,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -140333,7 +144346,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0xF49,
0xF6D,
0xF71,
- 0xF82,
+ 0xF84,
0xF88,
0xF98,
0xF99,
@@ -140403,10 +144416,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1714,
- 0x1720,
+ 0x171F,
0x1734,
0x1740,
0x1754,
@@ -140464,12 +144475,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x1AA8,
0x1ABF,
0x1AC1,
+ 0x1ACC,
+ 0x1ACF,
0x1B00,
0x1B34,
0x1B35,
0x1B44,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B80,
@@ -140577,10 +144590,6 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -140645,8 +144654,6 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -140665,10 +144672,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA806,
0xA807,
0xA828,
@@ -140838,12 +144849,34 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -140920,6 +144953,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -140928,8 +144963,12 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x11046,
0x11066,
0x11070,
- 0x11082,
+ 0x11071,
+ 0x11076,
+ 0x11080,
0x110B9,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -140959,7 +144998,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x11237,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -141044,6 +145083,8 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x1172B,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x11839,
0x118A0,
@@ -141084,7 +145125,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x11A98,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -141136,6 +145177,14 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F41,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -141144,8 +145193,12 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
@@ -141154,6 +145207,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16B00,
@@ -141186,10 +145243,20 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -141266,6 +145333,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -141276,6 +145347,10 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E137,
@@ -141284,10 +145359,24 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
0x1E2F0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -141373,9 +145462,9 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -141385,7 +145474,9 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 037 */
@@ -141393,7 +145484,7 @@ static const UV UNI_XPOSIXALNUM_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
- 1391, /* Number of elements */
+ 1465, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -141502,10 +145593,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x8D4,
0x8E0,
0x8E3,
@@ -141665,8 +145758,6 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0xBD7,
0xBD8,
0xC00,
- 0xC04,
- 0xC05,
0xC0D,
0xC0E,
0xC11,
@@ -141684,6 +145775,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC80,
@@ -141706,12 +145799,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0xCCD,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -141787,7 +145880,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0xF49,
0xF6D,
0xF71,
- 0xF82,
+ 0xF84,
0xF88,
0xF98,
0xF99,
@@ -141859,10 +145952,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1714,
- 0x1720,
+ 0x171F,
0x1734,
0x1740,
0x1754,
@@ -141910,12 +146001,14 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x1AA8,
0x1ABF,
0x1AC1,
+ 0x1ACC,
+ 0x1ACF,
0x1B00,
0x1B34,
0x1B35,
0x1B44,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B80,
0x1BAA,
0x1BAC,
@@ -142023,10 +146116,6 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -142091,8 +146180,6 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -142113,10 +146200,14 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA806,
0xA807,
0xA828,
@@ -142280,12 +146371,34 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -142360,14 +146473,20 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11000,
0x11046,
- 0x11082,
+ 0x11071,
+ 0x11076,
+ 0x11080,
0x110B9,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x11100,
@@ -142395,7 +146514,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x11237,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -142468,6 +146587,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x1171B,
0x1171D,
0x1172B,
+ 0x11740,
+ 0x11747,
0x11800,
0x11839,
0x118A0,
@@ -142506,7 +146627,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x11A98,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -142552,6 +146673,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x11D99,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F41,
0x11FB0,
0x11FB1,
0x12000,
@@ -142560,14 +146687,20 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -142598,10 +146731,20 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -142676,6 +146819,10 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -142686,14 +146833,30 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -142775,9 +146938,9 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x1F170,
0x1F18A,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -142787,7 +146950,9 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* ASCII/Latin1 */
@@ -142798,7 +146963,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
- 1417, /* Number of elements */
+ 1491, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -142933,10 +147098,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x8D4,
0x8E0,
0x8E3,
@@ -143096,8 +147263,6 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0xBD7,
0xBD8,
0xC00,
- 0xC04,
- 0xC05,
0xC0D,
0xC0E,
0xC11,
@@ -143115,6 +147280,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC80,
@@ -143137,12 +147304,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0xCCD,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -143218,7 +147385,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0xF49,
0xF6D,
0xF71,
- 0xF82,
+ 0xF84,
0xF88,
0xF98,
0xF99,
@@ -143290,10 +147457,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1714,
- 0x1720,
+ 0x171F,
0x1734,
0x1740,
0x1754,
@@ -143341,12 +147506,14 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x1AA8,
0x1ABF,
0x1AC1,
+ 0x1ACC,
+ 0x1ACF,
0x1B00,
0x1B34,
0x1B35,
0x1B44,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B80,
0x1BAA,
0x1BAC,
@@ -143454,10 +147621,6 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -143522,8 +147685,6 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -143544,10 +147705,14 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA806,
0xA807,
0xA828,
@@ -143711,12 +147876,34 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -143791,14 +147978,20 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11000,
0x11046,
- 0x11082,
+ 0x11071,
+ 0x11076,
+ 0x11080,
0x110B9,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x11100,
@@ -143826,7 +148019,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x11237,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -143899,6 +148092,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x1171B,
0x1171D,
0x1172B,
+ 0x11740,
+ 0x11747,
0x11800,
0x11839,
0x118A0,
@@ -143937,7 +148132,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x11A98,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -143983,6 +148178,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x11D99,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F41,
0x11FB0,
0x11FB1,
0x12000,
@@ -143991,14 +148192,20 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -144029,10 +148236,20 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -144107,6 +148324,10 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -144117,14 +148338,30 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -144206,9 +148443,9 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x1F170,
0x1F18A,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -144218,7 +148455,9 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 1047 */
@@ -144229,7 +148468,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
- 1413, /* Number of elements */
+ 1487, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -144360,10 +148599,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x8D4,
0x8E0,
0x8E3,
@@ -144523,8 +148764,6 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0xBD7,
0xBD8,
0xC00,
- 0xC04,
- 0xC05,
0xC0D,
0xC0E,
0xC11,
@@ -144542,6 +148781,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC80,
@@ -144564,12 +148805,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0xCCD,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -144645,7 +148886,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0xF49,
0xF6D,
0xF71,
- 0xF82,
+ 0xF84,
0xF88,
0xF98,
0xF99,
@@ -144717,10 +148958,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1714,
- 0x1720,
+ 0x171F,
0x1734,
0x1740,
0x1754,
@@ -144768,12 +149007,14 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x1AA8,
0x1ABF,
0x1AC1,
+ 0x1ACC,
+ 0x1ACF,
0x1B00,
0x1B34,
0x1B35,
0x1B44,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B80,
0x1BAA,
0x1BAC,
@@ -144881,10 +149122,6 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -144949,8 +149186,6 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -144971,10 +149206,14 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA806,
0xA807,
0xA828,
@@ -145138,12 +149377,34 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -145218,14 +149479,20 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11000,
0x11046,
- 0x11082,
+ 0x11071,
+ 0x11076,
+ 0x11080,
0x110B9,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x11100,
@@ -145253,7 +149520,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x11237,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -145326,6 +149593,8 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x1171B,
0x1171D,
0x1172B,
+ 0x11740,
+ 0x11747,
0x11800,
0x11839,
0x118A0,
@@ -145364,7 +149633,7 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x11A98,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -145410,6 +149679,12 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x11D99,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F41,
0x11FB0,
0x11FB1,
0x12000,
@@ -145418,14 +149693,20 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -145456,10 +149737,20 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -145534,6 +149825,10 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -145544,14 +149839,30 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -145633,9 +149944,9 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x1F170,
0x1F18A,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -145645,7 +149956,9 @@ static const UV UNI_XPOSIXALPHA_invlist[] = { /* for EBCDIC 037 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 037 */
@@ -145790,7 +150103,7 @@ static const UV UNI_XPOSIXCNTRL_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for ASCII/Latin1 */
- 123, /* Number of elements */
+ 129, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -145903,8 +150216,12 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for ASCII/Latin1 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x1D7CE,
@@ -145913,6 +150230,8 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E950,
0x1E95A,
0x1FBF0,
@@ -145927,7 +150246,7 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 1047 */
- 123, /* Number of elements */
+ 129, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -146040,8 +150359,12 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 1047 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x1D7CE,
@@ -146050,6 +150373,8 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E950,
0x1E95A,
0x1FBF0,
@@ -146064,7 +150389,7 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 037 */
- 123, /* Number of elements */
+ 129, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -146177,8 +150502,12 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 037 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x1D7CE,
@@ -146187,6 +150516,8 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E950,
0x1E95A,
0x1FBF0,
@@ -146198,7 +150529,7 @@ static const UV UNI_XPOSIXDIGIT_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
- 1365, /* Number of elements */
+ 1425, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -146230,8 +150561,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x5EF,
0x5F5,
0x600,
- 0x61D,
- 0x61E,
0x70E,
0x70F,
0x74B,
@@ -146249,11 +150578,11 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x984,
0x985,
0x98D,
@@ -146409,7 +150738,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -146419,6 +150748,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -146441,14 +150772,14 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -146508,7 +150839,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -146578,10 +150909,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -146598,8 +150927,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x17F0,
0x17FA,
0x1800,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -146638,11 +150965,11 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -146658,8 +150985,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -146706,7 +151031,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -146720,10 +151045,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -146754,7 +151075,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -146778,8 +151099,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -146788,10 +151107,14 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -146862,16 +151185,14 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -146958,13 +151279,33 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -147047,10 +151388,12 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -147058,9 +151401,9 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -147080,7 +151423,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -147144,7 +151487,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -147152,7 +151495,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -147183,8 +151526,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -147227,6 +151572,12 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -147239,10 +151590,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -147252,7 +151603,9 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -147285,10 +151638,20 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -147303,14 +151666,22 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
0x1D127,
0x1D129,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -147363,6 +151734,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -147373,6 +151748,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -147381,10 +151760,22 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -147493,16 +151884,18 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -147516,27 +151909,23 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -147544,9 +151933,9 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -147557,6 +151946,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -147577,7 +151968,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
- 1365, /* Number of elements */
+ 1425, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -147609,8 +152000,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x5EF,
0x5F5,
0x600,
- 0x61D,
- 0x61E,
0x70E,
0x70F,
0x74B,
@@ -147628,11 +152017,11 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x984,
0x985,
0x98D,
@@ -147788,7 +152177,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -147798,6 +152187,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -147820,14 +152211,14 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -147887,7 +152278,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -147957,10 +152348,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -147977,8 +152366,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x17F0,
0x17FA,
0x1800,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -148017,11 +152404,11 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -148037,8 +152424,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -148085,7 +152470,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -148099,10 +152484,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -148133,7 +152514,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -148157,8 +152538,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -148167,10 +152546,14 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -148241,16 +152624,14 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -148337,13 +152718,33 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -148426,10 +152827,12 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -148437,9 +152840,9 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -148459,7 +152862,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -148523,7 +152926,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -148531,7 +152934,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -148562,8 +152965,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -148606,6 +153011,12 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -148618,10 +153029,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -148631,7 +153042,9 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -148664,10 +153077,20 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -148682,14 +153105,22 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
0x1D127,
0x1D129,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -148742,6 +153173,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -148752,6 +153187,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -148760,10 +153199,22 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -148872,16 +153323,18 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -148895,27 +153348,23 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -148923,9 +153372,9 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -148936,6 +153385,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -148956,7 +153407,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
- 1365, /* Number of elements */
+ 1425, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -148988,8 +153439,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x5EF,
0x5F5,
0x600,
- 0x61D,
- 0x61E,
0x70E,
0x70F,
0x74B,
@@ -149007,11 +153456,11 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x984,
0x985,
0x98D,
@@ -149167,7 +153616,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -149177,6 +153626,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -149199,14 +153650,14 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -149266,7 +153717,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -149336,10 +153787,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -149356,8 +153805,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x17F0,
0x17FA,
0x1800,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -149396,11 +153843,11 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -149416,8 +153863,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -149464,7 +153909,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -149478,10 +153923,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -149512,7 +153953,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -149536,8 +153977,6 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -149546,10 +153985,14 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -149620,16 +154063,14 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -149716,13 +154157,33 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -149805,10 +154266,12 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -149816,9 +154279,9 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -149838,7 +154301,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -149902,7 +154365,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -149910,7 +154373,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -149941,8 +154404,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -149985,6 +154450,12 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -149997,10 +154468,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -150010,7 +154481,9 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -150043,10 +154516,20 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -150061,14 +154544,22 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
0x1D127,
0x1D129,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -150121,6 +154612,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -150131,6 +154626,10 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -150139,10 +154638,22 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -150251,16 +154762,18 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -150274,27 +154787,23 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -150302,9 +154811,9 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -150315,6 +154824,8 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -150332,7 +154843,7 @@ static const UV UNI_XPOSIXGRAPH_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_XPOSIXLOWER_invlist[] = { /* for ASCII/Latin1 */
- 1305, /* Number of elements */
+ 1343, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -150889,7 +155400,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for ASCII/Latin1 */
0x589,
0x10D0,
0x10FB,
- 0x10FD,
+ 0x10FC,
0x1100,
0x13F8,
0x13FE,
@@ -151216,7 +155727,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for ASCII/Latin1 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -151551,12 +156062,26 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for ASCII/Latin1 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
+ 0xA7F2,
+ 0xA7F5,
0xA7F6,
0xA7F7,
0xA7F8,
@@ -151564,7 +156089,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for ASCII/Latin1 */
0xAB30,
0xAB5B,
0xAB5C,
- 0xAB69,
+ 0xAB6A,
0xAB70,
0xABC0,
0xFB00,
@@ -151577,6 +156102,22 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for ASCII/Latin1 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
+ 0x10780,
+ 0x10781,
+ 0x10783,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10CC0,
0x10CF3,
0x118C0,
@@ -151639,6 +156180,14 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for ASCII/Latin1 */
0x1D7CA,
0x1D7CB,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E922,
0x1E944
};
@@ -151651,7 +156200,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 1047 */
- 1313, /* Number of elements */
+ 1351, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -152216,7 +156765,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 1047 */
0x589,
0x10D0,
0x10FB,
- 0x10FD,
+ 0x10FC,
0x1100,
0x13F8,
0x13FE,
@@ -152543,7 +157092,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 1047 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -152878,12 +157427,26 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 1047 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
+ 0xA7F2,
+ 0xA7F5,
0xA7F6,
0xA7F7,
0xA7F8,
@@ -152891,7 +157454,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 1047 */
0xAB30,
0xAB5B,
0xAB5C,
- 0xAB69,
+ 0xAB6A,
0xAB70,
0xABC0,
0xFB00,
@@ -152904,6 +157467,22 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 1047 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
+ 0x10780,
+ 0x10781,
+ 0x10783,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10CC0,
0x10CF3,
0x118C0,
@@ -152966,6 +157545,14 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 1047 */
0x1D7CA,
0x1D7CB,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E922,
0x1E944
};
@@ -152978,7 +157565,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 037 */
- 1313, /* Number of elements */
+ 1351, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -153543,7 +158130,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 037 */
0x589,
0x10D0,
0x10FB,
- 0x10FD,
+ 0x10FC,
0x1100,
0x13F8,
0x13FE,
@@ -153870,7 +158457,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 037 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -154205,12 +158792,26 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 037 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
+ 0xA7F2,
+ 0xA7F5,
0xA7F6,
0xA7F7,
0xA7F8,
@@ -154218,7 +158819,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 037 */
0xAB30,
0xAB5B,
0xAB5C,
- 0xAB69,
+ 0xAB6A,
0xAB70,
0xABC0,
0xFB00,
@@ -154231,6 +158832,22 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 037 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
+ 0x10780,
+ 0x10781,
+ 0x10783,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10CC0,
0x10CF3,
0x118C0,
@@ -154293,6 +158910,14 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 037 */
0x1D7CA,
0x1D7CB,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E922,
0x1E944
};
@@ -154302,7 +158927,7 @@ static const UV UNI_XPOSIXLOWER_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
- 1359, /* Number of elements */
+ 1419, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -154334,8 +158959,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x5EF,
0x5F5,
0x600,
- 0x61D,
- 0x61E,
0x70E,
0x70F,
0x74B,
@@ -154353,11 +158976,11 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x984,
0x985,
0x98D,
@@ -154513,7 +159136,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -154523,6 +159146,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -154545,14 +159170,14 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -154612,7 +159237,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -154680,10 +159305,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -154700,8 +159323,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x17F0,
0x17FA,
0x1800,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -154740,11 +159361,11 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -154760,8 +159381,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -154804,7 +159423,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -154818,10 +159437,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -154852,7 +159467,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -154876,8 +159491,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -154886,10 +159499,14 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -154960,16 +159577,14 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -155056,13 +159671,33 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -155145,10 +159780,12 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -155156,9 +159793,9 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -155178,7 +159815,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -155242,7 +159879,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -155250,7 +159887,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -155281,8 +159918,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -155325,6 +159964,12 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -155337,10 +159982,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -155350,7 +159995,9 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -155383,10 +160030,20 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -155401,14 +160058,22 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
0x1D127,
0x1D129,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -155461,6 +160126,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -155471,6 +160140,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -155479,10 +160152,22 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -155591,16 +160276,18 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -155614,27 +160301,23 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -155642,9 +160325,9 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -155655,6 +160338,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -155675,7 +160360,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
- 1359, /* Number of elements */
+ 1419, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -155707,8 +160392,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x5EF,
0x5F5,
0x600,
- 0x61D,
- 0x61E,
0x70E,
0x70F,
0x74B,
@@ -155726,11 +160409,11 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x984,
0x985,
0x98D,
@@ -155886,7 +160569,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -155896,6 +160579,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -155918,14 +160603,14 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -155985,7 +160670,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -156053,10 +160738,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -156073,8 +160756,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x17F0,
0x17FA,
0x1800,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -156113,11 +160794,11 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -156133,8 +160814,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -156177,7 +160856,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -156191,10 +160870,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -156225,7 +160900,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -156249,8 +160924,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -156259,10 +160932,14 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -156333,16 +161010,14 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -156429,13 +161104,33 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -156518,10 +161213,12 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -156529,9 +161226,9 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -156551,7 +161248,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -156615,7 +161312,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -156623,7 +161320,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -156654,8 +161351,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -156698,6 +161397,12 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -156710,10 +161415,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -156723,7 +161428,9 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -156756,10 +161463,20 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -156774,14 +161491,22 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
0x1D127,
0x1D129,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -156834,6 +161559,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -156844,6 +161573,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -156852,10 +161585,22 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -156964,16 +161709,18 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -156987,27 +161734,23 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -157015,9 +161758,9 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -157028,6 +161771,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -157048,7 +161793,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
- 1359, /* Number of elements */
+ 1419, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -157080,8 +161825,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x5EF,
0x5F5,
0x600,
- 0x61D,
- 0x61E,
0x70E,
0x70F,
0x74B,
@@ -157099,11 +161842,11 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x984,
0x985,
0x98D,
@@ -157259,7 +162002,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -157269,6 +162012,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -157291,14 +162036,14 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -157358,7 +162103,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -157426,10 +162171,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -157446,8 +162189,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x17F0,
0x17FA,
0x1800,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -157486,11 +162227,11 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -157506,8 +162247,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -157550,7 +162289,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -157564,10 +162303,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -157598,7 +162333,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -157622,8 +162357,6 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -157632,10 +162365,14 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -157706,16 +162443,14 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -157802,13 +162537,33 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -157891,10 +162646,12 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -157902,9 +162659,9 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -157924,7 +162681,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -157988,7 +162745,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -157996,7 +162753,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -158027,8 +162784,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -158071,6 +162830,12 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -158083,10 +162848,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -158096,7 +162861,9 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -158129,10 +162896,20 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -158147,14 +162924,22 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
0x1D127,
0x1D129,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -158207,6 +162992,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -158217,6 +163006,10 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -158225,10 +163018,22 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -158337,16 +163142,18 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -158360,27 +163167,23 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -158388,9 +163191,9 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -158401,6 +163204,8 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -158418,7 +163223,7 @@ static const UV UNI_XPOSIXPRINT_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for ASCII/Latin1 */
- 361, /* Number of elements */
+ 373, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -158467,7 +163272,7 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for ASCII/Latin1 */
0x60E,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x66A,
0x66E,
@@ -158545,6 +163350,8 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for ASCII/Latin1 */
0x1AAE,
0x1B5A,
0x1B61,
+ 0x1B7D,
+ 0x1B7F,
0x1BFC,
0x1C00,
0x1C3B,
@@ -158594,7 +163401,7 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for ASCII/Latin1 */
0x2E30,
0x2E50,
0x2E52,
- 0x2E53,
+ 0x2E5E,
0x3001,
0x3004,
0x3008,
@@ -158705,6 +163512,8 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for ASCII/Latin1 */
0x10EAE,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x1104E,
0x110BB,
@@ -158741,6 +163550,8 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for ASCII/Latin1 */
0x11644,
0x11660,
0x1166D,
+ 0x116B9,
+ 0x116BA,
0x1173C,
0x1173F,
0x1183B,
@@ -158755,16 +163566,22 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for ASCII/Latin1 */
0x11A9D,
0x11A9E,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C41,
0x11C46,
0x11C70,
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F50,
0x11FFF,
0x12000,
0x12470,
0x12475,
+ 0x12FF1,
+ 0x12FF3,
0x16A6E,
0x16A70,
0x16AF5,
@@ -158793,7 +163610,7 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 1047 */
- 369, /* Number of elements */
+ 381, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -158850,7 +163667,7 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 1047 */
0x60E,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x66A,
0x66E,
@@ -158928,6 +163745,8 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 1047 */
0x1AAE,
0x1B5A,
0x1B61,
+ 0x1B7D,
+ 0x1B7F,
0x1BFC,
0x1C00,
0x1C3B,
@@ -158977,7 +163796,7 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 1047 */
0x2E30,
0x2E50,
0x2E52,
- 0x2E53,
+ 0x2E5E,
0x3001,
0x3004,
0x3008,
@@ -159088,6 +163907,8 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 1047 */
0x10EAE,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x1104E,
0x110BB,
@@ -159124,6 +163945,8 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 1047 */
0x11644,
0x11660,
0x1166D,
+ 0x116B9,
+ 0x116BA,
0x1173C,
0x1173F,
0x1183B,
@@ -159138,16 +163961,22 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 1047 */
0x11A9D,
0x11A9E,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C41,
0x11C46,
0x11C70,
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F50,
0x11FFF,
0x12000,
0x12470,
0x12475,
+ 0x12FF1,
+ 0x12FF3,
0x16A6E,
0x16A70,
0x16AF5,
@@ -159176,7 +164005,7 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 037 */
- 371, /* Number of elements */
+ 383, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -159235,7 +164064,7 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 037 */
0x60E,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x66A,
0x66E,
@@ -159313,6 +164142,8 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 037 */
0x1AAE,
0x1B5A,
0x1B61,
+ 0x1B7D,
+ 0x1B7F,
0x1BFC,
0x1C00,
0x1C3B,
@@ -159362,7 +164193,7 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 037 */
0x2E30,
0x2E50,
0x2E52,
- 0x2E53,
+ 0x2E5E,
0x3001,
0x3004,
0x3008,
@@ -159473,6 +164304,8 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 037 */
0x10EAE,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x1104E,
0x110BB,
@@ -159509,6 +164342,8 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 037 */
0x11644,
0x11660,
0x1166D,
+ 0x116B9,
+ 0x116BA,
0x1173C,
0x1173F,
0x1183B,
@@ -159523,16 +164358,22 @@ static const UV UNI_XPOSIXPUNCT_invlist[] = { /* for EBCDIC 037 */
0x11A9D,
0x11A9E,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C41,
0x11C46,
0x11C70,
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F50,
0x11FFF,
0x12000,
0x12470,
0x12475,
+ 0x12FF1,
+ 0x12FF3,
0x16A6E,
0x16A70,
0x16AF5,
@@ -159664,7 +164505,7 @@ static const UV UNI_XPOSIXSPACE_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_XPOSIXUPPER_invlist[] = { /* for ASCII/Latin1 */
- 1287, /* Number of elements */
+ 1303, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -160536,7 +165377,7 @@ static const UV UNI_XPOSIXUPPER_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -160865,12 +165706,20 @@ static const UV UNI_XPOSIXUPPER_invlist[] = { /* for ASCII/Latin1 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -160879,6 +165728,14 @@ static const UV UNI_XPOSIXUPPER_invlist[] = { /* for ASCII/Latin1 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -160965,7 +165822,7 @@ static const UV UNI_XPOSIXUPPER_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_XPOSIXUPPER_invlist[] = { /* for EBCDIC 1047 */
- 1305, /* Number of elements */
+ 1321, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -161855,7 +166712,7 @@ static const UV UNI_XPOSIXUPPER_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -162184,12 +167041,20 @@ static const UV UNI_XPOSIXUPPER_invlist[] = { /* for EBCDIC 1047 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -162198,6 +167063,14 @@ static const UV UNI_XPOSIXUPPER_invlist[] = { /* for EBCDIC 1047 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -162284,7 +167157,7 @@ static const UV UNI_XPOSIXUPPER_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_XPOSIXUPPER_invlist[] = { /* for EBCDIC 037 */
- 1301, /* Number of elements */
+ 1317, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -163170,7 +168043,7 @@ static const UV UNI_XPOSIXUPPER_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -163499,12 +168372,20 @@ static const UV UNI_XPOSIXUPPER_invlist[] = { /* for EBCDIC 037 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -163513,6 +168394,14 @@ static const UV UNI_XPOSIXUPPER_invlist[] = { /* for EBCDIC 037 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -163596,7 +168485,7 @@ static const UV UNI_XPOSIXUPPER_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
- 1467, /* Number of elements */
+ 1543, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -163701,11 +168590,11 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -163873,7 +168762,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -163883,6 +168772,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -163907,14 +168798,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -163980,7 +168871,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -164072,10 +168963,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -164095,7 +168984,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -164132,9 +169021,9 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x1AA7,
0x1AA8,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -164158,8 +169047,6 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -164242,10 +169129,6 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -164310,8 +169193,6 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -164330,10 +169211,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -164511,12 +169396,34 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -164591,12 +169498,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -164604,9 +169513,11 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -164634,7 +169545,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -164713,6 +169624,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -164749,7 +169662,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -164793,6 +169706,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -164801,8 +169722,12 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -164811,6 +169736,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -164845,10 +169774,20 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -164863,6 +169802,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -164949,6 +169892,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -164959,6 +169906,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -164967,8 +169918,20 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -165052,9 +170015,9 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -165065,6 +170028,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -165077,7 +170042,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
- 1491, /* Number of elements */
+ 1567, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -165206,11 +170171,11 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -165378,7 +170343,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -165388,6 +170353,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -165412,14 +170379,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -165485,7 +170452,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -165577,10 +170544,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -165600,7 +170565,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -165637,9 +170602,9 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x1AA7,
0x1AA8,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -165663,8 +170628,6 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -165747,10 +170710,6 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -165815,8 +170774,6 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -165835,10 +170792,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -166016,12 +170977,34 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -166096,12 +171079,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -166109,9 +171094,11 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -166139,7 +171126,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -166218,6 +171205,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -166254,7 +171243,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -166298,6 +171287,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -166306,8 +171303,12 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -166316,6 +171317,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -166350,10 +171355,20 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -166368,6 +171383,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -166454,6 +171473,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -166464,6 +171487,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -166472,8 +171499,20 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -166557,9 +171596,9 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -166570,6 +171609,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -166582,7 +171623,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
- 1487, /* Number of elements */
+ 1563, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -166707,11 +171748,11 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -166879,7 +171920,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -166889,6 +171930,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -166913,14 +171956,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -166986,7 +172029,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -167078,10 +172121,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -167101,7 +172142,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -167138,9 +172179,9 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x1AA7,
0x1AA8,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -167164,8 +172205,6 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -167248,10 +172287,6 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -167316,8 +172351,6 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -167336,10 +172369,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -167517,12 +172554,34 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -167597,12 +172656,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -167610,9 +172671,11 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -167640,7 +172703,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -167719,6 +172782,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -167755,7 +172820,7 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -167799,6 +172864,14 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -167807,8 +172880,12 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -167817,6 +172894,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -167851,10 +172932,20 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -167869,6 +172960,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -167955,6 +173050,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -167965,6 +173064,10 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -167973,8 +173076,20 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -168058,9 +173173,9 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -168071,6 +173186,8 @@ static const UV UNI_XPOSIXWORD_invlist[] = { /* for EBCDIC 037 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -168158,7 +173275,7 @@ static const UV UNI_XPOSIXXDIGIT_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for ASCII/Latin1 */
- 269, /* Number of elements */
+ 283, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -168360,10 +173477,6 @@ static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2C71,
0x2C72,
0x2C74,
@@ -168398,9 +173511,11 @@ static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for ASCII/Latin1 */
0xA796,
0xA7AF,
0xA7B0,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D6,
+ 0xA7DA,
0xA7F5,
0xA7F7,
0xAB53,
@@ -168421,6 +173536,22 @@ static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for ASCII/Latin1 */
0x104D4,
0x104D8,
0x104FC,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10C80,
0x10CB3,
0x10CC0,
@@ -168441,7 +173572,7 @@ static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for EBCDIC 1047 */
- 301, /* Number of elements */
+ 315, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -168675,10 +173806,6 @@ static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2C71,
0x2C72,
0x2C74,
@@ -168713,9 +173840,11 @@ static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for EBCDIC 1047 */
0xA796,
0xA7AF,
0xA7B0,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D6,
+ 0xA7DA,
0xA7F5,
0xA7F7,
0xAB53,
@@ -168736,6 +173865,22 @@ static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for EBCDIC 1047 */
0x104D4,
0x104D8,
0x104FC,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10C80,
0x10CB3,
0x10CC0,
@@ -168756,7 +173901,7 @@ static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for EBCDIC 037 */
- 297, /* Number of elements */
+ 311, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -168986,10 +174131,6 @@ static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2C71,
0x2C72,
0x2C74,
@@ -169024,9 +174165,11 @@ static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for EBCDIC 037 */
0xA796,
0xA7AF,
0xA7B0,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D6,
+ 0xA7DA,
0xA7F5,
0xA7F7,
0xAB53,
@@ -169047,6 +174190,22 @@ static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for EBCDIC 037 */
0x104D4,
0x104D8,
0x104FC,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10C80,
0x10CB3,
0x10CC0,
@@ -169064,7 +174223,7 @@ static const UV UNI__PERL_ANY_FOLDS_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
- 1257, /* Number of elements */
+ 1331, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -169167,10 +174326,12 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -169299,6 +174460,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -169315,7 +174478,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -169458,10 +174621,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x16F1,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -169504,7 +174665,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -169606,10 +174767,6 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x2183,
0x2185,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -169668,8 +174825,6 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -169690,10 +174845,14 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -169883,12 +175042,34 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -169959,12 +175140,18 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -169991,6 +175178,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -170047,6 +175236,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -170085,7 +175276,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -170113,20 +175304,32 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
0x1239A,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -170155,10 +175358,20 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -170231,14 +175444,32 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -170312,9 +175543,9 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -170324,7 +175555,9 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* ASCII/Latin1 */
@@ -170335,7 +175568,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
- 1283, /* Number of elements */
+ 1357, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -170464,10 +175697,12 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -170596,6 +175831,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -170612,7 +175849,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -170755,10 +175992,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x16F1,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -170801,7 +176036,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -170903,10 +176138,6 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x2183,
0x2185,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -170965,8 +176196,6 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -170987,10 +176216,14 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -171180,12 +176413,34 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -171256,12 +176511,18 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -171288,6 +176549,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -171344,6 +176607,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -171382,7 +176647,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -171410,20 +176675,32 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
0x1239A,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -171452,10 +176729,20 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -171528,14 +176815,32 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -171609,9 +176914,9 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -171621,7 +176926,9 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 1047 */
@@ -171632,7 +176939,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
- 1279, /* Number of elements */
+ 1353, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -171757,10 +177064,12 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -171889,6 +177198,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -171905,7 +177216,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -172048,10 +177359,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x16F1,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -172094,7 +177403,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -172196,10 +177505,6 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x2183,
0x2185,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -172258,8 +177563,6 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -172280,10 +177583,14 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -172473,12 +177780,34 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -172549,12 +177878,18 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -172581,6 +177916,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -172637,6 +177974,8 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -172675,7 +178014,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -172703,20 +178042,32 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
0x1239A,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -172745,10 +178096,20 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -172821,14 +178182,32 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -172902,9 +178281,9 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -172914,7 +178293,9 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 037 */
@@ -172922,7 +178303,7 @@ static const UV UNI__PERL_CHARNAME_BEGIN_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 */
- 1481, /* Number of elements */
+ 1557, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -173035,11 +178416,11 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -173207,7 +178588,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -173217,6 +178598,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -173241,14 +178624,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -173314,7 +178697,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -173406,10 +178789,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -173429,7 +178810,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -173468,9 +178849,9 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x1AB0,
0x1ABE,
0x1ABF,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -173494,8 +178875,6 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -173578,10 +178957,6 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -173644,8 +179019,6 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -173664,10 +179037,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -173857,12 +179234,34 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -173937,12 +179336,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -173950,9 +179351,11 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -173980,7 +179383,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -174059,6 +179462,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -174095,7 +179500,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -174139,6 +179544,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -174147,8 +179560,12 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -174157,6 +179574,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -174191,10 +179612,20 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -174209,6 +179640,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -174295,6 +179730,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -174305,6 +179744,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -174313,8 +179756,20 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -174392,9 +179847,9 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -174405,6 +179860,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -174417,7 +179874,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for ASCII/Latin1 *
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
- 1507, /* Number of elements */
+ 1583, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -174556,11 +180013,11 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -174728,7 +180185,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -174738,6 +180195,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -174762,14 +180221,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -174835,7 +180294,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -174927,10 +180386,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -174950,7 +180407,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -174989,9 +180446,9 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x1AB0,
0x1ABE,
0x1ABF,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -175015,8 +180472,6 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -175099,10 +180554,6 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -175165,8 +180616,6 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -175185,10 +180634,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -175378,12 +180831,34 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -175458,12 +180933,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -175471,9 +180948,11 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -175501,7 +180980,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -175580,6 +181059,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -175616,7 +181097,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -175660,6 +181141,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -175668,8 +181157,12 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -175678,6 +181171,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -175712,10 +181209,20 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -175730,6 +181237,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -175816,6 +181327,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -175826,6 +181341,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -175834,8 +181353,20 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -175913,9 +181444,9 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -175926,6 +181457,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -175938,7 +181471,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
- 1503, /* Number of elements */
+ 1579, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -176073,11 +181606,11 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -176245,7 +181778,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -176255,6 +181788,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -176279,14 +181814,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -176352,7 +181887,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -176444,10 +181979,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -176467,7 +182000,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -176506,9 +182039,9 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x1AB0,
0x1ABE,
0x1ABF,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -176532,8 +182065,6 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -176616,10 +182147,6 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -176682,8 +182209,6 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -176702,10 +182227,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -176895,12 +182424,34 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -176975,12 +182526,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -176988,9 +182541,11 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -177018,7 +182573,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -177097,6 +182652,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -177133,7 +182690,7 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -177177,6 +182734,14 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -177185,8 +182750,12 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -177195,6 +182764,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -177229,10 +182802,20 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -177247,6 +182830,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -177333,6 +182920,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -177343,6 +182934,10 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -177351,8 +182946,20 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -177430,9 +183037,9 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -177443,6 +183050,8 @@ static const UV UNI__PERL_CHARNAME_CONTINUE_invlist[] = { /* for EBCDIC 037 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -177668,7 +183277,7 @@ static const UV UNI__PERL_FOLDS_TO_MULTI_CHAR_invlist[] = { /* for EBCDIC 037 *
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
- 1475, /* Number of elements */
+ 1551, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -177775,11 +183384,11 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -177947,7 +183556,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -177957,6 +183566,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -177981,14 +183592,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -178054,7 +183665,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -178146,10 +183757,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -178169,7 +183778,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -178208,9 +183817,9 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x1AB0,
0x1ABE,
0x1ABF,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -178234,8 +183843,6 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -178318,10 +183925,6 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -178384,8 +183987,6 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -178404,10 +184005,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -178597,12 +184202,34 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -178677,12 +184304,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -178690,9 +184319,11 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -178720,7 +184351,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -178799,6 +184430,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -178835,7 +184468,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -178879,6 +184512,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -178887,8 +184528,12 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -178897,6 +184542,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -178931,10 +184580,20 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -178949,6 +184608,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -179035,6 +184698,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -179045,6 +184712,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -179053,8 +184724,20 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -179132,9 +184815,9 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -179145,6 +184828,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -179157,7 +184842,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
- 1499, /* Number of elements */
+ 1575, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -179288,11 +184973,11 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -179460,7 +185145,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -179470,6 +185155,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -179494,14 +185181,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -179567,7 +185254,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -179659,10 +185346,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -179682,7 +185367,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -179721,9 +185406,9 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x1AB0,
0x1ABE,
0x1ABF,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -179747,8 +185432,6 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -179831,10 +185514,6 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -179897,8 +185576,6 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -179917,10 +185594,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -180110,12 +185791,34 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -180190,12 +185893,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -180203,9 +185908,11 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -180233,7 +185940,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -180312,6 +186019,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -180348,7 +186057,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -180392,6 +186101,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -180400,8 +186117,12 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -180410,6 +186131,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -180444,10 +186169,20 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -180462,6 +186197,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -180548,6 +186287,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -180558,6 +186301,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -180566,8 +186313,20 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -180645,9 +186404,9 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -180658,6 +186417,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -180670,7 +186431,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
- 1495, /* Number of elements */
+ 1571, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -180797,11 +186558,11 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -180969,7 +186730,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -180979,6 +186740,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -181003,14 +186766,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -181076,7 +186839,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -181168,10 +186931,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -181191,7 +186952,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -181230,9 +186991,9 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x1AB0,
0x1ABE,
0x1ABF,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -181256,8 +187017,6 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -181340,10 +187099,6 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -181406,8 +187161,6 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -181426,10 +187179,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -181619,12 +187376,34 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -181699,12 +187478,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -181712,9 +187493,11 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -181742,7 +187525,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -181821,6 +187604,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -181857,7 +187642,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -181901,6 +187686,14 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -181909,8 +187702,12 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -181919,6 +187716,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -181953,10 +187754,20 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -181971,6 +187782,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -182057,6 +187872,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -182067,6 +187886,10 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -182075,8 +187898,20 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -182154,9 +187989,9 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -182167,6 +188002,8 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -182176,7 +188013,7 @@ static const UV UNI__PERL_IDCONT_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
- 1263, /* Number of elements */
+ 1337, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -182281,10 +188118,12 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -182413,6 +188252,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -182429,7 +188270,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -182572,10 +188413,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -182616,7 +188455,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -182718,10 +188557,6 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -182782,8 +188617,6 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -182804,10 +188637,14 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -182999,12 +188836,34 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -183075,12 +188934,18 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -183107,6 +188972,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -183163,6 +189030,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -183201,7 +189070,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -183229,6 +189098,12 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
@@ -183237,14 +189112,20 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -183273,10 +189154,20 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -183349,14 +189240,32 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -183430,9 +189339,9 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -183442,7 +189351,9 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* ASCII/Latin1 */
@@ -183453,7 +189364,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
- 1289, /* Number of elements */
+ 1363, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -183584,10 +189495,12 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -183716,6 +189629,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -183732,7 +189647,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -183875,10 +189790,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -183919,7 +189832,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -184021,10 +189934,6 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -184085,8 +189994,6 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -184107,10 +190014,14 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -184302,12 +190213,34 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -184378,12 +190311,18 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -184410,6 +190349,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -184466,6 +190407,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -184504,7 +190447,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -184532,6 +190475,12 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
@@ -184540,14 +190489,20 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -184576,10 +190531,20 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -184652,14 +190617,32 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -184733,9 +190716,9 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -184745,7 +190728,9 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 1047 */
@@ -184756,7 +190741,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
- 1285, /* Number of elements */
+ 1359, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -184883,10 +190868,12 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -185015,6 +191002,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -185031,7 +191020,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -185174,10 +191163,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -185218,7 +191205,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -185320,10 +191307,6 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -185384,8 +191367,6 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -185406,10 +191387,14 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -185601,12 +191586,34 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -185677,12 +191684,18 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -185709,6 +191722,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -185765,6 +191780,8 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -185803,7 +191820,7 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -185831,6 +191848,12 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
@@ -185839,14 +191862,20 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -185875,10 +191904,20 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -185951,14 +191990,32 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -186032,9 +192089,9 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -186044,7 +192101,9 @@ static const UV UNI__PERL_IDSTART_invlist[] = { /* for EBCDIC 037 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 037 */
@@ -186439,7 +192498,7 @@ static const UV UNI__PERL_QUOTEMETA_invlist[] = { /* for ASCII/Latin1 */
0x17B4,
0x17B6,
0x180B,
- 0x180F,
+ 0x1810,
0x2000,
0x203F,
0x2041,
@@ -186545,7 +192604,7 @@ static const UV UNI__PERL_QUOTEMETA_invlist[] = { /* for EBCDIC 1047 */
0x17B4,
0x17B6,
0x180B,
- 0x180F,
+ 0x1810,
0x2000,
0x203F,
0x2041,
@@ -186649,7 +192708,7 @@ static const UV UNI__PERL_QUOTEMETA_invlist[] = { /* for EBCDIC 037 */
0x17B4,
0x17B6,
0x180B,
- 0x180F,
+ 0x1810,
0x2000,
0x203F,
0x2041,
@@ -186695,11 +192754,13 @@ static const UV UNI__PERL_QUOTEMETA_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_ADLM_invlist[] = { /* for all charsets */
- 9, /* Number of elements */
+ 11, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
0x0,
+ 0x61F,
+ 0x620,
0x640,
0x641,
0x1E900,
@@ -187198,6 +193259,242 @@ static const UV UNI_AGE__13_invlist[] = { /* for all charsets */
0x3134B
};
+static const UV UNI_AGE__14_invlist[] = { /* for all charsets */
+ 157, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x61D,
+ 0x61E,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
+ 0x8A0,
+ 0x8B5,
+ 0x8B6,
+ 0x8C8,
+ 0x8D3,
+ 0xC3C,
+ 0xC3D,
+ 0xC5D,
+ 0xC5E,
+ 0xCDD,
+ 0xCDE,
+ 0x170D,
+ 0x170E,
+ 0x1715,
+ 0x1716,
+ 0x171F,
+ 0x1720,
+ 0x180F,
+ 0x1810,
+ 0x1AC1,
+ 0x1ACF,
+ 0x1B4C,
+ 0x1B4D,
+ 0x1B7D,
+ 0x1B7F,
+ 0x1DFA,
+ 0x1DFB,
+ 0x20C0,
+ 0x20C1,
+ 0x2C2F,
+ 0x2C30,
+ 0x2C5F,
+ 0x2C60,
+ 0x2E53,
+ 0x2E5E,
+ 0x9FFD,
+ 0xA000,
+ 0xA7C0,
+ 0xA7C2,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
+ 0xA7F5,
+ 0xFBC2,
+ 0xFBC3,
+ 0xFD40,
+ 0xFD50,
+ 0xFDCF,
+ 0xFDD0,
+ 0xFDFE,
+ 0xFE00,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
+ 0x10F70,
+ 0x10F8A,
+ 0x11070,
+ 0x11076,
+ 0x110C2,
+ 0x110C3,
+ 0x116B9,
+ 0x116BA,
+ 0x11740,
+ 0x11747,
+ 0x11AB0,
+ 0x11AC0,
+ 0x12F90,
+ 0x12FF3,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
+ 0x1B11F,
+ 0x1B123,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
+ 0x1D1E9,
+ 0x1D1EB,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1E290,
+ 0x1E2AF,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
+ 0x1F6DD,
+ 0x1F6E0,
+ 0x1F7F0,
+ 0x1F7F1,
+ 0x1F979,
+ 0x1F97A,
+ 0x1F9CC,
+ 0x1F9CD,
+ 0x1FA7B,
+ 0x1FA7D,
+ 0x1FAA9,
+ 0x1FAAD,
+ 0x1FAB7,
+ 0x1FABB,
+ 0x1FAC3,
+ 0x1FAC6,
+ 0x1FAD7,
+ 0x1FADA,
+ 0x1FAE0,
+ 0x1FAE8,
+ 0x1FAF0,
+ 0x1FAF7,
+ 0x2A6DE,
+ 0x2A6E0,
+ 0x2B735,
+ 0x2B739
+};
+
+static const UV UNI_AGE__15_invlist[] = { /* for all charsets */
+ 65, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0xCF3,
+ 0xCF4,
+ 0xECE,
+ 0xECF,
+ 0x10EFD,
+ 0x10F00,
+ 0x1123F,
+ 0x11242,
+ 0x11B00,
+ 0x11B0A,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
+ 0x1342F,
+ 0x13430,
+ 0x13439,
+ 0x13456,
+ 0x1B132,
+ 0x1B133,
+ 0x1B155,
+ 0x1B156,
+ 0x1D2C0,
+ 0x1D2D4,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1F6DC,
+ 0x1F6DD,
+ 0x1F774,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F780,
+ 0x1F7D9,
+ 0x1F7DA,
+ 0x1FA75,
+ 0x1FA78,
+ 0x1FA87,
+ 0x1FA89,
+ 0x1FAAD,
+ 0x1FAB0,
+ 0x1FABB,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC0,
+ 0x1FACE,
+ 0x1FAD0,
+ 0x1FADA,
+ 0x1FADC,
+ 0x1FAE8,
+ 0x1FAE9,
+ 0x1FAF7,
+ 0x1FAF9,
+ 0x2B739,
+ 0x2B73A,
+ 0x31350,
+ 0x323B0
+};
+
static const UV UNI_AGE__2_invlist[] = { /* for all charsets */
59, /* Number of elements */
148565664, /* Version and data structure type */
@@ -189482,1385 +195779,6 @@ static const UV UNI_AGE__9_invlist[] = { /* for all charsets */
0x1F992
};
-static const UV UNI_AGE__NA_invlist[] = { /* for all charsets */
- 1372, /* Number of elements */
- 148565664, /* Version and data structure type */
- 1, /* 0 if the list starts at 0;
- 1 if it starts at the element beyond 0 */
- 0x0,
- 0x378,
- 0x37A,
- 0x380,
- 0x384,
- 0x38B,
- 0x38C,
- 0x38D,
- 0x38E,
- 0x3A2,
- 0x3A3,
- 0x530,
- 0x531,
- 0x557,
- 0x559,
- 0x58B,
- 0x58D,
- 0x590,
- 0x591,
- 0x5C8,
- 0x5D0,
- 0x5EB,
- 0x5EF,
- 0x5F5,
- 0x600,
- 0x61D,
- 0x61E,
- 0x70E,
- 0x70F,
- 0x74B,
- 0x74D,
- 0x7B2,
- 0x7C0,
- 0x7FB,
- 0x7FD,
- 0x82E,
- 0x830,
- 0x83F,
- 0x840,
- 0x85C,
- 0x85E,
- 0x85F,
- 0x860,
- 0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
- 0x984,
- 0x985,
- 0x98D,
- 0x98F,
- 0x991,
- 0x993,
- 0x9A9,
- 0x9AA,
- 0x9B1,
- 0x9B2,
- 0x9B3,
- 0x9B6,
- 0x9BA,
- 0x9BC,
- 0x9C5,
- 0x9C7,
- 0x9C9,
- 0x9CB,
- 0x9CF,
- 0x9D7,
- 0x9D8,
- 0x9DC,
- 0x9DE,
- 0x9DF,
- 0x9E4,
- 0x9E6,
- 0x9FF,
- 0xA01,
- 0xA04,
- 0xA05,
- 0xA0B,
- 0xA0F,
- 0xA11,
- 0xA13,
- 0xA29,
- 0xA2A,
- 0xA31,
- 0xA32,
- 0xA34,
- 0xA35,
- 0xA37,
- 0xA38,
- 0xA3A,
- 0xA3C,
- 0xA3D,
- 0xA3E,
- 0xA43,
- 0xA47,
- 0xA49,
- 0xA4B,
- 0xA4E,
- 0xA51,
- 0xA52,
- 0xA59,
- 0xA5D,
- 0xA5E,
- 0xA5F,
- 0xA66,
- 0xA77,
- 0xA81,
- 0xA84,
- 0xA85,
- 0xA8E,
- 0xA8F,
- 0xA92,
- 0xA93,
- 0xAA9,
- 0xAAA,
- 0xAB1,
- 0xAB2,
- 0xAB4,
- 0xAB5,
- 0xABA,
- 0xABC,
- 0xAC6,
- 0xAC7,
- 0xACA,
- 0xACB,
- 0xACE,
- 0xAD0,
- 0xAD1,
- 0xAE0,
- 0xAE4,
- 0xAE6,
- 0xAF2,
- 0xAF9,
- 0xB00,
- 0xB01,
- 0xB04,
- 0xB05,
- 0xB0D,
- 0xB0F,
- 0xB11,
- 0xB13,
- 0xB29,
- 0xB2A,
- 0xB31,
- 0xB32,
- 0xB34,
- 0xB35,
- 0xB3A,
- 0xB3C,
- 0xB45,
- 0xB47,
- 0xB49,
- 0xB4B,
- 0xB4E,
- 0xB55,
- 0xB58,
- 0xB5C,
- 0xB5E,
- 0xB5F,
- 0xB64,
- 0xB66,
- 0xB78,
- 0xB82,
- 0xB84,
- 0xB85,
- 0xB8B,
- 0xB8E,
- 0xB91,
- 0xB92,
- 0xB96,
- 0xB99,
- 0xB9B,
- 0xB9C,
- 0xB9D,
- 0xB9E,
- 0xBA0,
- 0xBA3,
- 0xBA5,
- 0xBA8,
- 0xBAB,
- 0xBAE,
- 0xBBA,
- 0xBBE,
- 0xBC3,
- 0xBC6,
- 0xBC9,
- 0xBCA,
- 0xBCE,
- 0xBD0,
- 0xBD1,
- 0xBD7,
- 0xBD8,
- 0xBE6,
- 0xBFB,
- 0xC00,
- 0xC0D,
- 0xC0E,
- 0xC11,
- 0xC12,
- 0xC29,
- 0xC2A,
- 0xC3A,
- 0xC3D,
- 0xC45,
- 0xC46,
- 0xC49,
- 0xC4A,
- 0xC4E,
- 0xC55,
- 0xC57,
- 0xC58,
- 0xC5B,
- 0xC60,
- 0xC64,
- 0xC66,
- 0xC70,
- 0xC77,
- 0xC8D,
- 0xC8E,
- 0xC91,
- 0xC92,
- 0xCA9,
- 0xCAA,
- 0xCB4,
- 0xCB5,
- 0xCBA,
- 0xCBC,
- 0xCC5,
- 0xCC6,
- 0xCC9,
- 0xCCA,
- 0xCCE,
- 0xCD5,
- 0xCD7,
- 0xCDE,
- 0xCDF,
- 0xCE0,
- 0xCE4,
- 0xCE6,
- 0xCF0,
- 0xCF1,
- 0xCF3,
- 0xD00,
- 0xD0D,
- 0xD0E,
- 0xD11,
- 0xD12,
- 0xD45,
- 0xD46,
- 0xD49,
- 0xD4A,
- 0xD50,
- 0xD54,
- 0xD64,
- 0xD66,
- 0xD80,
- 0xD81,
- 0xD84,
- 0xD85,
- 0xD97,
- 0xD9A,
- 0xDB2,
- 0xDB3,
- 0xDBC,
- 0xDBD,
- 0xDBE,
- 0xDC0,
- 0xDC7,
- 0xDCA,
- 0xDCB,
- 0xDCF,
- 0xDD5,
- 0xDD6,
- 0xDD7,
- 0xDD8,
- 0xDE0,
- 0xDE6,
- 0xDF0,
- 0xDF2,
- 0xDF5,
- 0xE01,
- 0xE3B,
- 0xE3F,
- 0xE5C,
- 0xE81,
- 0xE83,
- 0xE84,
- 0xE85,
- 0xE86,
- 0xE8B,
- 0xE8C,
- 0xEA4,
- 0xEA5,
- 0xEA6,
- 0xEA7,
- 0xEBE,
- 0xEC0,
- 0xEC5,
- 0xEC6,
- 0xEC7,
- 0xEC8,
- 0xECE,
- 0xED0,
- 0xEDA,
- 0xEDC,
- 0xEE0,
- 0xF00,
- 0xF48,
- 0xF49,
- 0xF6D,
- 0xF71,
- 0xF98,
- 0xF99,
- 0xFBD,
- 0xFBE,
- 0xFCD,
- 0xFCE,
- 0xFDB,
- 0x1000,
- 0x10C6,
- 0x10C7,
- 0x10C8,
- 0x10CD,
- 0x10CE,
- 0x10D0,
- 0x1249,
- 0x124A,
- 0x124E,
- 0x1250,
- 0x1257,
- 0x1258,
- 0x1259,
- 0x125A,
- 0x125E,
- 0x1260,
- 0x1289,
- 0x128A,
- 0x128E,
- 0x1290,
- 0x12B1,
- 0x12B2,
- 0x12B6,
- 0x12B8,
- 0x12BF,
- 0x12C0,
- 0x12C1,
- 0x12C2,
- 0x12C6,
- 0x12C8,
- 0x12D7,
- 0x12D8,
- 0x1311,
- 0x1312,
- 0x1316,
- 0x1318,
- 0x135B,
- 0x135D,
- 0x137D,
- 0x1380,
- 0x139A,
- 0x13A0,
- 0x13F6,
- 0x13F8,
- 0x13FE,
- 0x1400,
- 0x169D,
- 0x16A0,
- 0x16F9,
- 0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
- 0x1737,
- 0x1740,
- 0x1754,
- 0x1760,
- 0x176D,
- 0x176E,
- 0x1771,
- 0x1772,
- 0x1774,
- 0x1780,
- 0x17DE,
- 0x17E0,
- 0x17EA,
- 0x17F0,
- 0x17FA,
- 0x1800,
- 0x180F,
- 0x1810,
- 0x181A,
- 0x1820,
- 0x1879,
- 0x1880,
- 0x18AB,
- 0x18B0,
- 0x18F6,
- 0x1900,
- 0x191F,
- 0x1920,
- 0x192C,
- 0x1930,
- 0x193C,
- 0x1940,
- 0x1941,
- 0x1944,
- 0x196E,
- 0x1970,
- 0x1975,
- 0x1980,
- 0x19AC,
- 0x19B0,
- 0x19CA,
- 0x19D0,
- 0x19DB,
- 0x19DE,
- 0x1A1C,
- 0x1A1E,
- 0x1A5F,
- 0x1A60,
- 0x1A7D,
- 0x1A7F,
- 0x1A8A,
- 0x1A90,
- 0x1A9A,
- 0x1AA0,
- 0x1AAE,
- 0x1AB0,
- 0x1AC1,
- 0x1B00,
- 0x1B4C,
- 0x1B50,
- 0x1B7D,
- 0x1B80,
- 0x1BF4,
- 0x1BFC,
- 0x1C38,
- 0x1C3B,
- 0x1C4A,
- 0x1C4D,
- 0x1C89,
- 0x1C90,
- 0x1CBB,
- 0x1CBD,
- 0x1CC8,
- 0x1CD0,
- 0x1CFB,
- 0x1D00,
- 0x1DFA,
- 0x1DFB,
- 0x1F16,
- 0x1F18,
- 0x1F1E,
- 0x1F20,
- 0x1F46,
- 0x1F48,
- 0x1F4E,
- 0x1F50,
- 0x1F58,
- 0x1F59,
- 0x1F5A,
- 0x1F5B,
- 0x1F5C,
- 0x1F5D,
- 0x1F5E,
- 0x1F5F,
- 0x1F7E,
- 0x1F80,
- 0x1FB5,
- 0x1FB6,
- 0x1FC5,
- 0x1FC6,
- 0x1FD4,
- 0x1FD6,
- 0x1FDC,
- 0x1FDD,
- 0x1FF0,
- 0x1FF2,
- 0x1FF5,
- 0x1FF6,
- 0x1FFF,
- 0x2000,
- 0x2065,
- 0x2066,
- 0x2072,
- 0x2074,
- 0x208F,
- 0x2090,
- 0x209D,
- 0x20A0,
- 0x20C0,
- 0x20D0,
- 0x20F1,
- 0x2100,
- 0x218C,
- 0x2190,
- 0x2427,
- 0x2440,
- 0x244B,
- 0x2460,
- 0x2B74,
- 0x2B76,
- 0x2B96,
- 0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
- 0x2CF4,
- 0x2CF9,
- 0x2D26,
- 0x2D27,
- 0x2D28,
- 0x2D2D,
- 0x2D2E,
- 0x2D30,
- 0x2D68,
- 0x2D6F,
- 0x2D71,
- 0x2D7F,
- 0x2D97,
- 0x2DA0,
- 0x2DA7,
- 0x2DA8,
- 0x2DAF,
- 0x2DB0,
- 0x2DB7,
- 0x2DB8,
- 0x2DBF,
- 0x2DC0,
- 0x2DC7,
- 0x2DC8,
- 0x2DCF,
- 0x2DD0,
- 0x2DD7,
- 0x2DD8,
- 0x2DDF,
- 0x2DE0,
- 0x2E53,
- 0x2E80,
- 0x2E9A,
- 0x2E9B,
- 0x2EF4,
- 0x2F00,
- 0x2FD6,
- 0x2FF0,
- 0x2FFC,
- 0x3000,
- 0x3040,
- 0x3041,
- 0x3097,
- 0x3099,
- 0x3100,
- 0x3105,
- 0x3130,
- 0x3131,
- 0x318F,
- 0x3190,
- 0x31E4,
- 0x31F0,
- 0x321F,
- 0x3220,
- 0x9FFD,
- 0xA000,
- 0xA48D,
- 0xA490,
- 0xA4C7,
- 0xA4D0,
- 0xA62C,
- 0xA640,
- 0xA6F8,
- 0xA700,
- 0xA7C0,
- 0xA7C2,
- 0xA7CB,
- 0xA7F5,
- 0xA82D,
- 0xA830,
- 0xA83A,
- 0xA840,
- 0xA878,
- 0xA880,
- 0xA8C6,
- 0xA8CE,
- 0xA8DA,
- 0xA8E0,
- 0xA954,
- 0xA95F,
- 0xA97D,
- 0xA980,
- 0xA9CE,
- 0xA9CF,
- 0xA9DA,
- 0xA9DE,
- 0xA9FF,
- 0xAA00,
- 0xAA37,
- 0xAA40,
- 0xAA4E,
- 0xAA50,
- 0xAA5A,
- 0xAA5C,
- 0xAAC3,
- 0xAADB,
- 0xAAF7,
- 0xAB01,
- 0xAB07,
- 0xAB09,
- 0xAB0F,
- 0xAB11,
- 0xAB17,
- 0xAB20,
- 0xAB27,
- 0xAB28,
- 0xAB2F,
- 0xAB30,
- 0xAB6C,
- 0xAB70,
- 0xABEE,
- 0xABF0,
- 0xABFA,
- 0xAC00,
- 0xD7A4,
- 0xD7B0,
- 0xD7C7,
- 0xD7CB,
- 0xD7FC,
- 0xD800,
- 0xFA6E,
- 0xFA70,
- 0xFADA,
- 0xFB00,
- 0xFB07,
- 0xFB13,
- 0xFB18,
- 0xFB1D,
- 0xFB37,
- 0xFB38,
- 0xFB3D,
- 0xFB3E,
- 0xFB3F,
- 0xFB40,
- 0xFB42,
- 0xFB43,
- 0xFB45,
- 0xFB46,
- 0xFBC2,
- 0xFBD3,
- 0xFD40,
- 0xFD50,
- 0xFD90,
- 0xFD92,
- 0xFDC8,
- 0xFDD0,
- 0xFDFE,
- 0xFE00,
- 0xFE1A,
- 0xFE20,
- 0xFE53,
- 0xFE54,
- 0xFE67,
- 0xFE68,
- 0xFE6C,
- 0xFE70,
- 0xFE75,
- 0xFE76,
- 0xFEFD,
- 0xFEFF,
- 0xFF00,
- 0xFF01,
- 0xFFBF,
- 0xFFC2,
- 0xFFC8,
- 0xFFCA,
- 0xFFD0,
- 0xFFD2,
- 0xFFD8,
- 0xFFDA,
- 0xFFDD,
- 0xFFE0,
- 0xFFE7,
- 0xFFE8,
- 0xFFEF,
- 0xFFF9,
- 0x1000C,
- 0x1000D,
- 0x10027,
- 0x10028,
- 0x1003B,
- 0x1003C,
- 0x1003E,
- 0x1003F,
- 0x1004E,
- 0x10050,
- 0x1005E,
- 0x10080,
- 0x100FB,
- 0x10100,
- 0x10103,
- 0x10107,
- 0x10134,
- 0x10137,
- 0x1018F,
- 0x10190,
- 0x1019D,
- 0x101A0,
- 0x101A1,
- 0x101D0,
- 0x101FE,
- 0x10280,
- 0x1029D,
- 0x102A0,
- 0x102D1,
- 0x102E0,
- 0x102FC,
- 0x10300,
- 0x10324,
- 0x1032D,
- 0x1034B,
- 0x10350,
- 0x1037B,
- 0x10380,
- 0x1039E,
- 0x1039F,
- 0x103C4,
- 0x103C8,
- 0x103D6,
- 0x10400,
- 0x1049E,
- 0x104A0,
- 0x104AA,
- 0x104B0,
- 0x104D4,
- 0x104D8,
- 0x104FC,
- 0x10500,
- 0x10528,
- 0x10530,
- 0x10564,
- 0x1056F,
- 0x10570,
- 0x10600,
- 0x10737,
- 0x10740,
- 0x10756,
- 0x10760,
- 0x10768,
- 0x10800,
- 0x10806,
- 0x10808,
- 0x10809,
- 0x1080A,
- 0x10836,
- 0x10837,
- 0x10839,
- 0x1083C,
- 0x1083D,
- 0x1083F,
- 0x10856,
- 0x10857,
- 0x1089F,
- 0x108A7,
- 0x108B0,
- 0x108E0,
- 0x108F3,
- 0x108F4,
- 0x108F6,
- 0x108FB,
- 0x1091C,
- 0x1091F,
- 0x1093A,
- 0x1093F,
- 0x10940,
- 0x10980,
- 0x109B8,
- 0x109BC,
- 0x109D0,
- 0x109D2,
- 0x10A04,
- 0x10A05,
- 0x10A07,
- 0x10A0C,
- 0x10A14,
- 0x10A15,
- 0x10A18,
- 0x10A19,
- 0x10A36,
- 0x10A38,
- 0x10A3B,
- 0x10A3F,
- 0x10A49,
- 0x10A50,
- 0x10A59,
- 0x10A60,
- 0x10AA0,
- 0x10AC0,
- 0x10AE7,
- 0x10AEB,
- 0x10AF7,
- 0x10B00,
- 0x10B36,
- 0x10B39,
- 0x10B56,
- 0x10B58,
- 0x10B73,
- 0x10B78,
- 0x10B92,
- 0x10B99,
- 0x10B9D,
- 0x10BA9,
- 0x10BB0,
- 0x10C00,
- 0x10C49,
- 0x10C80,
- 0x10CB3,
- 0x10CC0,
- 0x10CF3,
- 0x10CFA,
- 0x10D28,
- 0x10D30,
- 0x10D3A,
- 0x10E60,
- 0x10E7F,
- 0x10E80,
- 0x10EAA,
- 0x10EAB,
- 0x10EAE,
- 0x10EB0,
- 0x10EB2,
- 0x10F00,
- 0x10F28,
- 0x10F30,
- 0x10F5A,
- 0x10FB0,
- 0x10FCC,
- 0x10FE0,
- 0x10FF7,
- 0x11000,
- 0x1104E,
- 0x11052,
- 0x11070,
- 0x1107F,
- 0x110C2,
- 0x110CD,
- 0x110CE,
- 0x110D0,
- 0x110E9,
- 0x110F0,
- 0x110FA,
- 0x11100,
- 0x11135,
- 0x11136,
- 0x11148,
- 0x11150,
- 0x11177,
- 0x11180,
- 0x111E0,
- 0x111E1,
- 0x111F5,
- 0x11200,
- 0x11212,
- 0x11213,
- 0x1123F,
- 0x11280,
- 0x11287,
- 0x11288,
- 0x11289,
- 0x1128A,
- 0x1128E,
- 0x1128F,
- 0x1129E,
- 0x1129F,
- 0x112AA,
- 0x112B0,
- 0x112EB,
- 0x112F0,
- 0x112FA,
- 0x11300,
- 0x11304,
- 0x11305,
- 0x1130D,
- 0x1130F,
- 0x11311,
- 0x11313,
- 0x11329,
- 0x1132A,
- 0x11331,
- 0x11332,
- 0x11334,
- 0x11335,
- 0x1133A,
- 0x1133B,
- 0x11345,
- 0x11347,
- 0x11349,
- 0x1134B,
- 0x1134E,
- 0x11350,
- 0x11351,
- 0x11357,
- 0x11358,
- 0x1135D,
- 0x11364,
- 0x11366,
- 0x1136D,
- 0x11370,
- 0x11375,
- 0x11400,
- 0x1145C,
- 0x1145D,
- 0x11462,
- 0x11480,
- 0x114C8,
- 0x114D0,
- 0x114DA,
- 0x11580,
- 0x115B6,
- 0x115B8,
- 0x115DE,
- 0x11600,
- 0x11645,
- 0x11650,
- 0x1165A,
- 0x11660,
- 0x1166D,
- 0x11680,
- 0x116B9,
- 0x116C0,
- 0x116CA,
- 0x11700,
- 0x1171B,
- 0x1171D,
- 0x1172C,
- 0x11730,
- 0x11740,
- 0x11800,
- 0x1183C,
- 0x118A0,
- 0x118F3,
- 0x118FF,
- 0x11907,
- 0x11909,
- 0x1190A,
- 0x1190C,
- 0x11914,
- 0x11915,
- 0x11917,
- 0x11918,
- 0x11936,
- 0x11937,
- 0x11939,
- 0x1193B,
- 0x11947,
- 0x11950,
- 0x1195A,
- 0x119A0,
- 0x119A8,
- 0x119AA,
- 0x119D8,
- 0x119DA,
- 0x119E5,
- 0x11A00,
- 0x11A48,
- 0x11A50,
- 0x11AA3,
- 0x11AC0,
- 0x11AF9,
- 0x11C00,
- 0x11C09,
- 0x11C0A,
- 0x11C37,
- 0x11C38,
- 0x11C46,
- 0x11C50,
- 0x11C6D,
- 0x11C70,
- 0x11C90,
- 0x11C92,
- 0x11CA8,
- 0x11CA9,
- 0x11CB7,
- 0x11D00,
- 0x11D07,
- 0x11D08,
- 0x11D0A,
- 0x11D0B,
- 0x11D37,
- 0x11D3A,
- 0x11D3B,
- 0x11D3C,
- 0x11D3E,
- 0x11D3F,
- 0x11D48,
- 0x11D50,
- 0x11D5A,
- 0x11D60,
- 0x11D66,
- 0x11D67,
- 0x11D69,
- 0x11D6A,
- 0x11D8F,
- 0x11D90,
- 0x11D92,
- 0x11D93,
- 0x11D99,
- 0x11DA0,
- 0x11DAA,
- 0x11EE0,
- 0x11EF9,
- 0x11FB0,
- 0x11FB1,
- 0x11FC0,
- 0x11FF2,
- 0x11FFF,
- 0x1239A,
- 0x12400,
- 0x1246F,
- 0x12470,
- 0x12475,
- 0x12480,
- 0x12544,
- 0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
- 0x14400,
- 0x14647,
- 0x16800,
- 0x16A39,
- 0x16A40,
- 0x16A5F,
- 0x16A60,
- 0x16A6A,
- 0x16A6E,
- 0x16A70,
- 0x16AD0,
- 0x16AEE,
- 0x16AF0,
- 0x16AF6,
- 0x16B00,
- 0x16B46,
- 0x16B50,
- 0x16B5A,
- 0x16B5B,
- 0x16B62,
- 0x16B63,
- 0x16B78,
- 0x16B7D,
- 0x16B90,
- 0x16E40,
- 0x16E9B,
- 0x16F00,
- 0x16F4B,
- 0x16F4F,
- 0x16F88,
- 0x16F8F,
- 0x16FA0,
- 0x16FE0,
- 0x16FE5,
- 0x16FF0,
- 0x16FF2,
- 0x17000,
- 0x187F8,
- 0x18800,
- 0x18CD6,
- 0x18D00,
- 0x18D09,
- 0x1B000,
- 0x1B11F,
- 0x1B150,
- 0x1B153,
- 0x1B164,
- 0x1B168,
- 0x1B170,
- 0x1B2FC,
- 0x1BC00,
- 0x1BC6B,
- 0x1BC70,
- 0x1BC7D,
- 0x1BC80,
- 0x1BC89,
- 0x1BC90,
- 0x1BC9A,
- 0x1BC9C,
- 0x1BCA4,
- 0x1D000,
- 0x1D0F6,
- 0x1D100,
- 0x1D127,
- 0x1D129,
- 0x1D1E9,
- 0x1D200,
- 0x1D246,
- 0x1D2E0,
- 0x1D2F4,
- 0x1D300,
- 0x1D357,
- 0x1D360,
- 0x1D379,
- 0x1D400,
- 0x1D455,
- 0x1D456,
- 0x1D49D,
- 0x1D49E,
- 0x1D4A0,
- 0x1D4A2,
- 0x1D4A3,
- 0x1D4A5,
- 0x1D4A7,
- 0x1D4A9,
- 0x1D4AD,
- 0x1D4AE,
- 0x1D4BA,
- 0x1D4BB,
- 0x1D4BC,
- 0x1D4BD,
- 0x1D4C4,
- 0x1D4C5,
- 0x1D506,
- 0x1D507,
- 0x1D50B,
- 0x1D50D,
- 0x1D515,
- 0x1D516,
- 0x1D51D,
- 0x1D51E,
- 0x1D53A,
- 0x1D53B,
- 0x1D53F,
- 0x1D540,
- 0x1D545,
- 0x1D546,
- 0x1D547,
- 0x1D54A,
- 0x1D551,
- 0x1D552,
- 0x1D6A6,
- 0x1D6A8,
- 0x1D7CC,
- 0x1D7CE,
- 0x1DA8C,
- 0x1DA9B,
- 0x1DAA0,
- 0x1DAA1,
- 0x1DAB0,
- 0x1E000,
- 0x1E007,
- 0x1E008,
- 0x1E019,
- 0x1E01B,
- 0x1E022,
- 0x1E023,
- 0x1E025,
- 0x1E026,
- 0x1E02B,
- 0x1E100,
- 0x1E12D,
- 0x1E130,
- 0x1E13E,
- 0x1E140,
- 0x1E14A,
- 0x1E14E,
- 0x1E150,
- 0x1E2C0,
- 0x1E2FA,
- 0x1E2FF,
- 0x1E300,
- 0x1E800,
- 0x1E8C5,
- 0x1E8C7,
- 0x1E8D7,
- 0x1E900,
- 0x1E94C,
- 0x1E950,
- 0x1E95A,
- 0x1E95E,
- 0x1E960,
- 0x1EC71,
- 0x1ECB5,
- 0x1ED01,
- 0x1ED3E,
- 0x1EE00,
- 0x1EE04,
- 0x1EE05,
- 0x1EE20,
- 0x1EE21,
- 0x1EE23,
- 0x1EE24,
- 0x1EE25,
- 0x1EE27,
- 0x1EE28,
- 0x1EE29,
- 0x1EE33,
- 0x1EE34,
- 0x1EE38,
- 0x1EE39,
- 0x1EE3A,
- 0x1EE3B,
- 0x1EE3C,
- 0x1EE42,
- 0x1EE43,
- 0x1EE47,
- 0x1EE48,
- 0x1EE49,
- 0x1EE4A,
- 0x1EE4B,
- 0x1EE4C,
- 0x1EE4D,
- 0x1EE50,
- 0x1EE51,
- 0x1EE53,
- 0x1EE54,
- 0x1EE55,
- 0x1EE57,
- 0x1EE58,
- 0x1EE59,
- 0x1EE5A,
- 0x1EE5B,
- 0x1EE5C,
- 0x1EE5D,
- 0x1EE5E,
- 0x1EE5F,
- 0x1EE60,
- 0x1EE61,
- 0x1EE63,
- 0x1EE64,
- 0x1EE65,
- 0x1EE67,
- 0x1EE6B,
- 0x1EE6C,
- 0x1EE73,
- 0x1EE74,
- 0x1EE78,
- 0x1EE79,
- 0x1EE7D,
- 0x1EE7E,
- 0x1EE7F,
- 0x1EE80,
- 0x1EE8A,
- 0x1EE8B,
- 0x1EE9C,
- 0x1EEA1,
- 0x1EEA4,
- 0x1EEA5,
- 0x1EEAA,
- 0x1EEAB,
- 0x1EEBC,
- 0x1EEF0,
- 0x1EEF2,
- 0x1F000,
- 0x1F02C,
- 0x1F030,
- 0x1F094,
- 0x1F0A0,
- 0x1F0AF,
- 0x1F0B1,
- 0x1F0C0,
- 0x1F0C1,
- 0x1F0D0,
- 0x1F0D1,
- 0x1F0F6,
- 0x1F100,
- 0x1F1AE,
- 0x1F1E6,
- 0x1F203,
- 0x1F210,
- 0x1F23C,
- 0x1F240,
- 0x1F249,
- 0x1F250,
- 0x1F252,
- 0x1F260,
- 0x1F266,
- 0x1F300,
- 0x1F6D8,
- 0x1F6E0,
- 0x1F6ED,
- 0x1F6F0,
- 0x1F6FD,
- 0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
- 0x1F7E0,
- 0x1F7EC,
- 0x1F800,
- 0x1F80C,
- 0x1F810,
- 0x1F848,
- 0x1F850,
- 0x1F85A,
- 0x1F860,
- 0x1F888,
- 0x1F890,
- 0x1F8AE,
- 0x1F8B0,
- 0x1F8B2,
- 0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
- 0x1FA54,
- 0x1FA60,
- 0x1FA6E,
- 0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
- 0x1FA80,
- 0x1FA87,
- 0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
- 0x1FB00,
- 0x1FB93,
- 0x1FB94,
- 0x1FBCB,
- 0x1FBF0,
- 0x1FBFA,
- 0x1FFFE,
- 0x2A6DE,
- 0x2A700,
- 0x2B735,
- 0x2B740,
- 0x2B81E,
- 0x2B820,
- 0x2CEA2,
- 0x2CEB0,
- 0x2EBE1,
- 0x2F800,
- 0x2FA1E,
- 0x2FFFE,
- 0x3134B,
- 0x3FFFE,
- 0x40000,
- 0x4FFFE,
- 0x50000,
- 0x5FFFE,
- 0x60000,
- 0x6FFFE,
- 0x70000,
- 0x7FFFE,
- 0x80000,
- 0x8FFFE,
- 0x90000,
- 0x9FFFE,
- 0xA0000,
- 0xAFFFE,
- 0xB0000,
- 0xBFFFE,
- 0xC0000,
- 0xCFFFE,
- 0xD0000,
- 0xDFFFE,
- 0xE0000,
- 0xE0001,
- 0xE0002,
- 0xE0020,
- 0xE0080,
- 0xE0100,
- 0xE01F0,
- 0xEFFFE,
- 0x110000
-};
-
static const UV UNI_AGHB_invlist[] = { /* for all charsets */
5, /* Number of elements */
148565664, /* Version and data structure type */
@@ -190884,7 +195802,7 @@ static const UV UNI_AHOM_invlist[] = { /* for all charsets */
0x1171D,
0x1172C,
0x11730,
- 0x11740
+ 0x11747
};
static const UV UNI_ALCHEMICAL_invlist[] = { /* for all charsets */
@@ -190963,31 +195881,29 @@ static const UV UNI_ARAB_invlist[] = { /* for all charsets */
0x600,
0x605,
0x606,
- 0x61D,
- 0x61E,
0x6DD,
0x6DE,
0x700,
0x750,
0x780,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x8E2,
0x8E3,
0x900,
0xFB50,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD3E,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
+ 0xFE00,
0xFE70,
0xFE75,
0xFE76,
@@ -190996,6 +195912,8 @@ static const UV UNI_ARAB_invlist[] = { /* for all charsets */
0x102FC,
0x10E60,
0x10E7F,
+ 0x10EFD,
+ 0x10F00,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -191076,6 +195994,26 @@ static const UV UNI_ARABICEXTA_invlist[] = { /* for all charsets */
0x900
};
+static const UV UNI_ARABICEXTB_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x870,
+ 0x8A0
+};
+
+static const UV UNI_ARABICEXTC_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x10EC0,
+ 0x10F00
+};
+
static const UV UNI_ARABICMATH_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -191173,9 +196111,9 @@ static const UV UNI_BALI_invlist[] = { /* for all charsets */
1 if it starts at the element beyond 0 */
0x0,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D
+ 0x1B7F
};
static const UV UNI_BAMU_invlist[] = { /* for all charsets */
@@ -191225,7 +196163,7 @@ static const UV UNI_BATK_invlist[] = { /* for all charsets */
};
static const UV UNI_BC__AL_invlist[] = { /* for all charsets */
- 57, /* Number of elements */
+ 59, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -191255,17 +196193,17 @@ static const UV UNI_BC__AL_invlist[] = { /* for all charsets */
0x7B1,
0x7C0,
0x860,
- 0x870,
+ 0x890,
+ 0x892,
+ 0x898,
0x8A0,
- 0x8D3,
+ 0x8CA,
0xFB50,
0xFD3E,
- 0xFD40,
- 0xFDD0,
+ 0xFD50,
+ 0xFDCF,
0xFDF0,
0xFDFD,
- 0xFDFE,
- 0xFE00,
0xFE70,
0xFEFF,
0x10D00,
@@ -191274,6 +196212,8 @@ static const UV UNI_BC__AL_invlist[] = { /* for all charsets */
0x10D30,
0x10D3A,
0x10D40,
+ 0x10EC0,
+ 0x10EFD,
0x10F30,
0x10F46,
0x10F51,
@@ -191289,7 +196229,7 @@ static const UV UNI_BC__AL_invlist[] = { /* for all charsets */
};
static const UV UNI_BC__AN_invlist[] = { /* for all charsets */
- 15, /* Number of elements */
+ 17, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -191302,6 +196242,8 @@ static const UV UNI_BC__AN_invlist[] = { /* for all charsets */
0x66D,
0x6DD,
0x6DE,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0x10D30,
@@ -192180,7 +197122,7 @@ static const UV UNI_BC__FSI_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
- 926, /* Number of elements */
+ 956, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -192312,6 +197254,8 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -192363,7 +197307,7 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -192419,7 +197363,7 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -192439,7 +197383,7 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0x17F0,
0x17FA,
0x1800,
- 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -192477,7 +197421,7 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -192523,8 +197467,6 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x1FBD,
0x1FBE,
@@ -192607,7 +197549,7 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0x2D7F,
0x2D80,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -192780,12 +197722,18 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0x11047,
0x11052,
0x11066,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
0x110B7,
0x110B9,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -192810,6 +197758,8 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -192934,8 +197884,20 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x11FD5,
0x11FF2,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -192952,6 +197914,10 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D173,
@@ -192960,6 +197926,8 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0x1D18C,
0x1D1AA,
0x1D1AE,
+ 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
0x1D300,
@@ -192998,12 +197966,18 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
0x1E2FF,
0x1E300,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E800,
0x1F02C,
0x1F030,
@@ -193028,16 +198002,18 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -193051,27 +198027,23 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -193120,7 +198092,7 @@ static const UV UNI_BC__L_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
- 952, /* Number of elements */
+ 982, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -193278,6 +198250,8 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -193329,7 +198303,7 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -193385,7 +198359,7 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -193405,7 +198379,7 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0x17F0,
0x17FA,
0x1800,
- 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -193443,7 +198417,7 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -193489,8 +198463,6 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x1FBD,
0x1FBE,
@@ -193573,7 +198545,7 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0x2D7F,
0x2D80,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -193746,12 +198718,18 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0x11047,
0x11052,
0x11066,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
0x110B7,
0x110B9,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -193776,6 +198754,8 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -193900,8 +198880,20 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x11FD5,
0x11FF2,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -193918,6 +198910,10 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D173,
@@ -193926,6 +198922,8 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0x1D18C,
0x1D1AA,
0x1D1AE,
+ 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
0x1D300,
@@ -193964,12 +198962,18 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
0x1E2FF,
0x1E300,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E800,
0x1F02C,
0x1F030,
@@ -193994,16 +198998,18 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -194017,27 +199023,23 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -194086,7 +199088,7 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
- 948, /* Number of elements */
+ 978, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -194240,6 +199242,8 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -194291,7 +199295,7 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -194347,7 +199351,7 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -194367,7 +199371,7 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0x17F0,
0x17FA,
0x1800,
- 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -194405,7 +199409,7 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -194451,8 +199455,6 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x1FBD,
0x1FBE,
@@ -194535,7 +199537,7 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0x2D7F,
0x2D80,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -194708,12 +199710,18 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0x11047,
0x11052,
0x11066,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
0x110B7,
0x110B9,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -194738,6 +199746,8 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -194862,8 +199872,20 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x11FD5,
0x11FF2,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -194880,6 +199902,10 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D173,
@@ -194888,6 +199914,8 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0x1D18C,
0x1D1AA,
0x1D1AE,
+ 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
0x1D300,
@@ -194926,12 +199954,18 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
0x1E2FF,
0x1E300,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E800,
0x1F02C,
0x1F030,
@@ -194956,16 +199990,18 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -194979,27 +200015,23 @@ static const UV UNI_BC__L_invlist[] = { /* for EBCDIC 037 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -195073,7 +200105,7 @@ static const UV UNI_BC__LRO_invlist[] = { /* for all charsets */
};
static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */
- 645, /* Number of elements */
+ 683, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -195126,7 +200158,9 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x903,
@@ -195208,6 +200242,8 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -195255,7 +200291,7 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -195303,7 +200339,7 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -195320,6 +200356,8 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */
0x17DE,
0x180B,
0x180E,
+ 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -195351,7 +200389,7 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -195397,8 +200435,6 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x20D0,
0x20F1,
@@ -195510,18 +200546,28 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11001,
0x11002,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
0x110B7,
0x110B9,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -195546,6 +200592,8 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -195668,6 +200716,18 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -195680,6 +200740,10 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */
0x16FE5,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D17B,
@@ -195712,10 +200776,16 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -195727,7 +200797,7 @@ static const UV UNI_BC__NSM_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_BC__ON_invlist[] = { /* for ASCII/Latin1 */
- 377, /* Number of elements */
+ 379, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -195895,7 +200965,7 @@ static const UV UNI_BC__ON_invlist[] = { /* for ASCII/Latin1 */
0x2CF9,
0x2D00,
0x2E00,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -195959,9 +201029,11 @@ static const UV UNI_BC__ON_invlist[] = { /* for ASCII/Latin1 */
0xAB6A,
0xAB6C,
0xFD3E,
- 0xFD40,
+ 0xFD50,
+ 0xFDCF,
+ 0xFDD0,
0xFDFD,
- 0xFDFE,
+ 0xFE00,
0xFE10,
0xFE1A,
0xFE30,
@@ -196018,6 +201090,8 @@ static const UV UNI_BC__ON_invlist[] = { /* for ASCII/Latin1 */
0x11FF2,
0x16FE2,
0x16FE3,
+ 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
@@ -196060,16 +201134,18 @@ static const UV UNI_BC__ON_invlist[] = { /* for ASCII/Latin1 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -196083,27 +201159,23 @@ static const UV UNI_BC__ON_invlist[] = { /* for ASCII/Latin1 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -196118,7 +201190,7 @@ static const UV UNI_BC__ON_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 1047 */
- 385, /* Number of elements */
+ 387, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -196294,7 +201366,7 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 1047 */
0x2CF9,
0x2D00,
0x2E00,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -196358,9 +201430,11 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 1047 */
0xAB6A,
0xAB6C,
0xFD3E,
- 0xFD40,
+ 0xFD50,
+ 0xFDCF,
+ 0xFDD0,
0xFDFD,
- 0xFDFE,
+ 0xFE00,
0xFE10,
0xFE1A,
0xFE30,
@@ -196417,6 +201491,8 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 1047 */
0x11FF2,
0x16FE2,
0x16FE3,
+ 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
@@ -196459,16 +201535,18 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 1047 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -196482,27 +201560,23 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 1047 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -196517,7 +201591,7 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 037 */
- 381, /* Number of elements */
+ 383, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -196689,7 +201763,7 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 037 */
0x2CF9,
0x2D00,
0x2E00,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -196753,9 +201827,11 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 037 */
0xAB6A,
0xAB6C,
0xFD3E,
- 0xFD40,
+ 0xFD50,
+ 0xFDCF,
+ 0xFDD0,
0xFDFD,
- 0xFDFE,
+ 0xFE00,
0xFE10,
0xFE1A,
0xFE30,
@@ -196812,6 +201888,8 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 037 */
0x11FF2,
0x16FE2,
0x16FE3,
+ 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
@@ -196854,16 +201932,18 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 037 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -196877,27 +201957,23 @@ static const UV UNI_BC__ON_invlist[] = { /* for EBCDIC 037 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -196927,7 +202003,7 @@ static const UV UNI_BC__PDI_invlist[] = { /* for all charsets */
};
static const UV UNI_BC__R_invlist[] = { /* for all charsets */
- 79, /* Number of elements */
+ 81, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -196962,8 +202038,6 @@ static const UV UNI_BC__R_invlist[] = { /* for all charsets */
0x859,
0x85C,
0x860,
- 0x870,
- 0x8A0,
0x200F,
0x2010,
0xFB1D,
@@ -196995,8 +202069,12 @@ static const UV UNI_BC__R_invlist[] = { /* for all charsets */
0x10E7F,
0x10EAB,
0x10EAD,
+ 0x10EC0,
+ 0x10F00,
0x10F30,
0x10F70,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x1E800,
0x1E8D0,
@@ -197281,7 +202359,7 @@ static const UV UNI_BIDIC_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_BIDIM_invlist[] = { /* for ASCII/Latin1 */
- 227, /* Number of elements */
+ 229, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -197476,6 +202554,8 @@ static const UV UNI_BIDIM_invlist[] = { /* for ASCII/Latin1 */
0x2E1E,
0x2E20,
0x2E2A,
+ 0x2E55,
+ 0x2E5D,
0x3008,
0x3012,
0x3014,
@@ -197522,7 +202602,7 @@ static const UV UNI_BIDIM_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_BIDIM_invlist[] = { /* for EBCDIC 1047 */
- 225, /* Number of elements */
+ 227, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -197715,6 +202795,8 @@ static const UV UNI_BIDIM_invlist[] = { /* for EBCDIC 1047 */
0x2E1E,
0x2E20,
0x2E2A,
+ 0x2E55,
+ 0x2E5D,
0x3008,
0x3012,
0x3014,
@@ -197761,7 +202843,7 @@ static const UV UNI_BIDIM_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_BIDIM_invlist[] = { /* for EBCDIC 037 */
- 223, /* Number of elements */
+ 225, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -197952,6 +203034,8 @@ static const UV UNI_BIDIM_invlist[] = { /* for EBCDIC 037 */
0x2E1E,
0x2E20,
0x2E2A,
+ 0x2E55,
+ 0x2E5D,
0x3008,
0x3012,
0x3014,
@@ -198057,7 +203141,7 @@ static const UV UNI_BOXDRAWING_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_BPT__C_invlist[] = { /* for ASCII/Latin1 */
- 121, /* Number of elements */
+ 129, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -198148,6 +203232,14 @@ static const UV UNI_BPT__C_invlist[] = { /* for ASCII/Latin1 */
0x2E28,
0x2E29,
0x2E2A,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
+ 0x2E5D,
0x3009,
0x300A,
0x300B,
@@ -198192,7 +203284,7 @@ static const UV UNI_BPT__C_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_BPT__C_invlist[] = { /* for EBCDIC 1047 */
- 121, /* Number of elements */
+ 129, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -198283,6 +203375,14 @@ static const UV UNI_BPT__C_invlist[] = { /* for EBCDIC 1047 */
0x2E28,
0x2E29,
0x2E2A,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
+ 0x2E5D,
0x3009,
0x300A,
0x300B,
@@ -198327,7 +203427,7 @@ static const UV UNI_BPT__C_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_BPT__C_invlist[] = { /* for EBCDIC 037 */
- 121, /* Number of elements */
+ 129, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -198418,6 +203518,14 @@ static const UV UNI_BPT__C_invlist[] = { /* for EBCDIC 037 */
0x2E28,
0x2E29,
0x2E2A,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
+ 0x2E5D,
0x3009,
0x300A,
0x300B,
@@ -198459,7 +203567,7 @@ static const UV UNI_BPT__C_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_BPT__N_invlist[] = { /* for ASCII/Latin1 */
- 59, /* Number of elements */
+ 61, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -198502,6 +203610,8 @@ static const UV UNI_BPT__N_invlist[] = { /* for ASCII/Latin1 */
0x29FE,
0x2E22,
0x2E2A,
+ 0x2E55,
+ 0x2E5D,
0x3008,
0x3012,
0x3014,
@@ -198532,7 +203642,7 @@ static const UV UNI_BPT__N_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_BPT__N_invlist[] = { /* for EBCDIC 1047 */
- 61, /* Number of elements */
+ 63, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -198577,6 +203687,8 @@ static const UV UNI_BPT__N_invlist[] = { /* for EBCDIC 1047 */
0x29FE,
0x2E22,
0x2E2A,
+ 0x2E55,
+ 0x2E5D,
0x3008,
0x3012,
0x3014,
@@ -198607,7 +203719,7 @@ static const UV UNI_BPT__N_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_BPT__N_invlist[] = { /* for EBCDIC 037 */
- 59, /* Number of elements */
+ 61, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -198650,6 +203762,8 @@ static const UV UNI_BPT__N_invlist[] = { /* for EBCDIC 037 */
0x29FE,
0x2E22,
0x2E2A,
+ 0x2E55,
+ 0x2E5D,
0x3008,
0x3012,
0x3014,
@@ -198677,7 +203791,7 @@ static const UV UNI_BPT__N_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_BPT__O_invlist[] = { /* for ASCII/Latin1 */
- 121, /* Number of elements */
+ 129, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -198768,6 +203882,14 @@ static const UV UNI_BPT__O_invlist[] = { /* for ASCII/Latin1 */
0x2E27,
0x2E28,
0x2E29,
+ 0x2E55,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
0x3008,
0x3009,
0x300A,
@@ -198812,7 +203934,7 @@ static const UV UNI_BPT__O_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_BPT__O_invlist[] = { /* for EBCDIC 1047 */
- 121, /* Number of elements */
+ 129, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -198903,6 +204025,14 @@ static const UV UNI_BPT__O_invlist[] = { /* for EBCDIC 1047 */
0x2E27,
0x2E28,
0x2E29,
+ 0x2E55,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
0x3008,
0x3009,
0x300A,
@@ -198947,7 +204077,7 @@ static const UV UNI_BPT__O_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_BPT__O_invlist[] = { /* for EBCDIC 037 */
- 121, /* Number of elements */
+ 129, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -199038,6 +204168,14 @@ static const UV UNI_BPT__O_invlist[] = { /* for EBCDIC 037 */
0x2E27,
0x2E28,
0x2E29,
+ 0x2E55,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
0x3008,
0x3009,
0x300A,
@@ -199085,7 +204223,7 @@ static const UV UNI_BRAH_invlist[] = { /* for all charsets */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
0x11080
};
@@ -199139,7 +204277,7 @@ static const UV UNI_BYZANTINEMUSIC_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
- 1357, /* Number of elements */
+ 1423, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -199174,7 +204312,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x5F5,
0x606,
0x61C,
- 0x61E,
+ 0x61D,
0x6DD,
0x6DE,
0x70E,
@@ -199194,11 +204332,9 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x984,
@@ -199356,7 +204492,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -199366,6 +204502,8 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -199388,14 +204526,14 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -199455,7 +204593,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -199523,10 +204661,8 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -199544,7 +204680,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x17FA,
0x1800,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -199583,11 +204719,11 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -199603,8 +204739,6 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -199649,7 +204783,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -199663,10 +204797,6 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -199697,7 +204827,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -199721,8 +204851,6 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -199731,10 +204859,14 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -199805,16 +204937,14 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -199899,13 +205029,33 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -199988,10 +205138,12 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -199999,11 +205151,11 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BD,
0x110BE,
- 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -200021,7 +205173,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -200085,7 +205237,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -200093,7 +205245,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -200124,8 +205276,10 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -200168,6 +205322,12 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -200180,8 +205340,12 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -200191,7 +205355,9 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -200224,10 +205390,20 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -200242,6 +205418,12 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x1BC9A,
0x1BC9C,
0x1BCA0,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -200249,9 +205431,11 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x1D129,
0x1D173,
0x1D17B,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -200304,6 +205488,10 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -200314,6 +205502,10 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -200322,10 +205514,22 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -200434,16 +205638,18 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -200457,27 +205663,23 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -200485,9 +205687,9 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -200498,6 +205700,8 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -200510,7 +205714,7 @@ static const UV UNI_C_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
- 1357, /* Number of elements */
+ 1423, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -200545,7 +205749,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x5F5,
0x606,
0x61C,
- 0x61E,
+ 0x61D,
0x6DD,
0x6DE,
0x70E,
@@ -200565,11 +205769,9 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x984,
@@ -200727,7 +205929,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -200737,6 +205939,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -200759,14 +205963,14 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -200826,7 +206030,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -200894,10 +206098,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -200915,7 +206117,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x17FA,
0x1800,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -200954,11 +206156,11 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -200974,8 +206176,6 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -201020,7 +206220,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -201034,10 +206234,6 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -201068,7 +206264,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -201092,8 +206288,6 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -201102,10 +206296,14 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -201176,16 +206374,14 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -201270,13 +206466,33 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -201359,10 +206575,12 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -201370,11 +206588,11 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BD,
0x110BE,
- 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -201392,7 +206610,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -201456,7 +206674,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -201464,7 +206682,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -201495,8 +206713,10 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -201539,6 +206759,12 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -201551,8 +206777,12 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -201562,7 +206792,9 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -201595,10 +206827,20 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -201613,6 +206855,12 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x1BC9A,
0x1BC9C,
0x1BCA0,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -201620,9 +206868,11 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x1D129,
0x1D173,
0x1D17B,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -201675,6 +206925,10 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -201685,6 +206939,10 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -201693,10 +206951,22 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -201805,16 +207075,18 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -201828,27 +207100,23 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -201856,9 +207124,9 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -201869,6 +207137,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -201881,7 +207151,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
- 1357, /* Number of elements */
+ 1423, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -201916,7 +207186,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x5F5,
0x606,
0x61C,
- 0x61E,
+ 0x61D,
0x6DD,
0x6DE,
0x70E,
@@ -201936,11 +207206,9 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x984,
@@ -202098,7 +207366,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -202108,6 +207376,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -202130,14 +207400,14 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -202197,7 +207467,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -202265,10 +207535,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -202286,7 +207554,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x17FA,
0x1800,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -202325,11 +207593,11 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -202345,8 +207613,6 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -202391,7 +207657,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -202405,10 +207671,6 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -202439,7 +207701,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -202463,8 +207725,6 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -202473,10 +207733,14 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -202547,16 +207811,14 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -202641,13 +207903,33 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -202730,10 +208012,12 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -202741,11 +208025,11 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BD,
0x110BE,
- 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -202763,7 +208047,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -202827,7 +208111,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -202835,7 +208119,7 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -202866,8 +208150,10 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -202910,6 +208196,12 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -202922,8 +208214,12 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -202933,7 +208229,9 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -202966,10 +208264,20 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -202984,6 +208292,12 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x1BC9A,
0x1BC9C,
0x1BCA0,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -202991,9 +208305,11 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x1D129,
0x1D173,
0x1D17B,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -203046,6 +208362,10 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -203056,6 +208376,10 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -203064,10 +208388,22 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -203176,16 +208512,18 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -203199,27 +208537,23 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -203227,9 +208561,9 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -203240,6 +208574,8 @@ static const UV UNI_C_invlist[] = { /* for EBCDIC 037 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -203263,7 +208599,7 @@ static const UV UNI_CAKM_invlist[] = { /* for all charsets */
};
static const UV UNI_CANS_invlist[] = { /* for all charsets */
- 5, /* Number of elements */
+ 7, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -203271,7 +208607,9 @@ static const UV UNI_CANS_invlist[] = { /* for all charsets */
0x1400,
0x1680,
0x18B0,
- 0x18F6
+ 0x18F6,
+ 0x11AB0,
+ 0x11AC0
};
static const UV UNI_CARI_invlist[] = { /* for all charsets */
@@ -203285,7 +208623,7 @@ static const UV UNI_CARI_invlist[] = { /* for all charsets */
};
static const UV UNI_CCC__0_invlist[] = { /* for all charsets */
- 369, /* Number of elements */
+ 385, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -203338,7 +208676,9 @@ static const UV UNI_CCC__0_invlist[] = { /* for all charsets */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x900,
@@ -203368,6 +208708,8 @@ static const UV UNI_CCC__0_invlist[] = { /* for all charsets */
0xB4E,
0xBCD,
0xBCE,
+ 0xC3C,
+ 0xC3D,
0xC4D,
0xC4E,
0xC55,
@@ -203421,7 +208763,7 @@ static const UV UNI_CCC__0_invlist[] = { /* for all charsets */
0x135D,
0x1360,
0x1714,
- 0x1715,
+ 0x1716,
0x1734,
0x1735,
0x17D2,
@@ -203443,7 +208785,7 @@ static const UV UNI_CCC__0_invlist[] = { /* for all charsets */
0x1AB0,
0x1ABE,
0x1ABF,
- 0x1AC1,
+ 0x1ACF,
0x1B34,
0x1B35,
0x1B44,
@@ -203471,8 +208813,6 @@ static const UV UNI_CCC__0_invlist[] = { /* for all charsets */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x20D0,
0x20DD,
@@ -203552,10 +208892,16 @@ static const UV UNI_CCC__0_invlist[] = { /* for all charsets */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11046,
0x11047,
+ 0x11070,
+ 0x11071,
0x1107F,
0x11080,
0x110B9,
@@ -203620,6 +208966,8 @@ static const UV UNI_CCC__0_invlist[] = { /* for all charsets */
0x11D46,
0x11D97,
0x11D98,
+ 0x11F41,
+ 0x11F43,
0x16AF0,
0x16AF5,
0x16B30,
@@ -203650,10 +208998,16 @@ static const UV UNI_CCC__0_invlist[] = { /* for all charsets */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -204099,7 +209453,7 @@ static const UV UNI_CCC__6_invlist[] = { /* for all charsets */
};
static const UV UNI_CCC__7_invlist[] = { /* for all charsets */
- 51, /* Number of elements */
+ 53, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -204114,6 +209468,8 @@ static const UV UNI_CCC__7_invlist[] = { /* for all charsets */
0xABD,
0xB3C,
0xB3D,
+ 0xC3C,
+ 0xC3D,
0xCBC,
0xCBD,
0x1037,
@@ -204177,7 +209533,7 @@ static const UV UNI_CCC__84_invlist[] = { /* for all charsets */
};
static const UV UNI_CCC__9_invlist[] = { /* for all charsets */
- 109, /* Number of elements */
+ 113, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -204213,7 +209569,7 @@ static const UV UNI_CCC__9_invlist[] = { /* for all charsets */
0x1039,
0x103B,
0x1714,
- 0x1715,
+ 0x1716,
0x1734,
0x1735,
0x17D2,
@@ -204246,6 +209602,8 @@ static const UV UNI_CCC__9_invlist[] = { /* for all charsets */
0x10A40,
0x11046,
0x11047,
+ 0x11070,
+ 0x11071,
0x1107F,
0x11080,
0x110B9,
@@ -204289,7 +209647,9 @@ static const UV UNI_CCC__9_invlist[] = { /* for all charsets */
0x11D44,
0x11D46,
0x11D97,
- 0x11D98
+ 0x11D98,
+ 0x11F41,
+ 0x11F43
};
static const UV UNI_CCC__91_invlist[] = { /* for all charsets */
@@ -204303,7 +209663,7 @@ static const UV UNI_CCC__91_invlist[] = { /* for all charsets */
};
static const UV UNI_CCC__A_invlist[] = { /* for all charsets */
- 237, /* Number of elements */
+ 259, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -204390,6 +209750,12 @@ static const UV UNI_CCC__A_invlist[] = { /* for all charsets */
0x828,
0x829,
0x82E,
+ 0x898,
+ 0x899,
+ 0x89C,
+ 0x8A0,
+ 0x8CA,
+ 0x8CF,
0x8D4,
0x8E2,
0x8E4,
@@ -204428,6 +209794,12 @@ static const UV UNI_CCC__A_invlist[] = { /* for all charsets */
0x1AB5,
0x1ABB,
0x1ABD,
+ 0x1AC1,
+ 0x1AC3,
+ 0x1AC5,
+ 0x1ACA,
+ 0x1ACB,
+ 0x1ACF,
0x1B6B,
0x1B6C,
0x1B6D,
@@ -204512,6 +209884,10 @@ static const UV UNI_CCC__A_invlist[] = { /* for all charsets */
0x10F4B,
0x10F4C,
0x10F4D,
+ 0x10F82,
+ 0x10F83,
+ 0x10F84,
+ 0x10F85,
0x11100,
0x11103,
0x11366,
@@ -204538,10 +209914,16 @@ static const UV UNI_CCC__A_invlist[] = { /* for all charsets */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EF,
+ 0x1E4F0,
0x1E944,
0x1E94A
};
@@ -204563,7 +209945,7 @@ static const UV UNI_CCC__AL_invlist[] = { /* for all charsets */
};
static const UV UNI_CCC__AR_invlist[] = { /* for all charsets */
- 11, /* Number of elements */
+ 13, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -204577,11 +209959,13 @@ static const UV UNI_CCC__AR_invlist[] = { /* for all charsets */
0x1DF6,
0x1DF7,
0x302C,
- 0x302D
+ 0x302D,
+ 0x1E4EC,
+ 0x1E4EE
};
static const UV UNI_CCC__B_invlist[] = { /* for all charsets */
- 157, /* Number of elements */
+ 171, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -204652,7 +210036,9 @@ static const UV UNI_CCC__B_invlist[] = { /* for all charsets */
0x7FE,
0x859,
0x85C,
- 0x8D3,
+ 0x899,
+ 0x89C,
+ 0x8CF,
0x8D4,
0x8E3,
0x8E4,
@@ -204690,6 +210076,10 @@ static const UV UNI_CCC__B_invlist[] = { /* for all charsets */
0x1ABE,
0x1ABF,
0x1AC1,
+ 0x1AC3,
+ 0x1AC5,
+ 0x1ACA,
+ 0x1ACB,
0x1B6C,
0x1B6D,
0x1CD5,
@@ -204730,26 +210120,36 @@ static const UV UNI_CCC__B_invlist[] = { /* for all charsets */
0x10A3B,
0x10AE6,
0x10AE7,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F48,
0x10F4B,
0x10F4C,
0x10F4D,
0x10F51,
+ 0x10F83,
+ 0x10F84,
+ 0x10F85,
+ 0x10F86,
0x1D17B,
0x1D183,
0x1D18A,
0x1D18C,
+ 0x1E4EE,
+ 0x1E4EF,
0x1E8D0,
0x1E8D7
};
static const UV UNI_CCC__BL_invlist[] = { /* for all charsets */
- 3, /* Number of elements */
+ 5, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
0x0,
+ 0x1DFA,
+ 0x1DFB,
0x302A,
0x302B
};
@@ -204907,7 +210307,7 @@ static const UV UNI_CE_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_CF_invlist[] = { /* for ASCII/Latin1 */
- 41, /* Number of elements */
+ 43, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -204922,6 +210322,8 @@ static const UV UNI_CF_invlist[] = { /* for ASCII/Latin1 */
0x6DE,
0x70F,
0x710,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0x180E,
@@ -204943,7 +210345,7 @@ static const UV UNI_CF_invlist[] = { /* for ASCII/Latin1 */
0x110CD,
0x110CE,
0x13430,
- 0x13439,
+ 0x13440,
0x1BCA0,
0x1BCA4,
0x1D173,
@@ -204962,7 +210364,7 @@ static const UV UNI_CF_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_CF_invlist[] = { /* for EBCDIC 1047 */
- 41, /* Number of elements */
+ 43, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -204977,6 +210379,8 @@ static const UV UNI_CF_invlist[] = { /* for EBCDIC 1047 */
0x6DE,
0x70F,
0x710,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0x180E,
@@ -204998,7 +210402,7 @@ static const UV UNI_CF_invlist[] = { /* for EBCDIC 1047 */
0x110CD,
0x110CE,
0x13430,
- 0x13439,
+ 0x13440,
0x1BCA0,
0x1BCA4,
0x1D173,
@@ -205017,7 +210421,7 @@ static const UV UNI_CF_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_CF_invlist[] = { /* for EBCDIC 037 */
- 41, /* Number of elements */
+ 43, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -205032,6 +210436,8 @@ static const UV UNI_CF_invlist[] = { /* for EBCDIC 037 */
0x6DE,
0x70F,
0x710,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0x180E,
@@ -205053,7 +210459,7 @@ static const UV UNI_CF_invlist[] = { /* for EBCDIC 037 */
0x110CD,
0x110CE,
0x13430,
- 0x13439,
+ 0x13440,
0x1BCA0,
0x1BCA4,
0x1D173,
@@ -205129,7 +210535,7 @@ static const UV UNI_CHRS_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
- 821, /* Number of elements */
+ 875, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -205218,7 +210624,13 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x888,
+ 0x889,
+ 0x890,
+ 0x892,
+ 0x898,
+ 0x8A0,
+ 0x8C9,
0x903,
0x93A,
0x93B,
@@ -205300,6 +210712,8 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -205353,7 +210767,7 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -205403,7 +210817,7 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -205421,7 +210835,7 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0x17DD,
0x17DE,
0x180B,
- 0x180F,
+ 0x1810,
0x1843,
0x1844,
0x1885,
@@ -205457,7 +210871,7 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0x1AA7,
0x1AA8,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -205509,8 +210923,6 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0x1D78,
0x1D79,
0x1D9B,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x1FBD,
0x1FBE,
@@ -205592,6 +211004,8 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0xA771,
0xA788,
0xA78B,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xA802,
@@ -205671,7 +211085,7 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0xFB1E,
0xFB1F,
0xFBB2,
- 0xFBC2,
+ 0xFBC3,
0xFE00,
0xFE10,
0xFE13,
@@ -205708,6 +211122,12 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0x102E1,
0x10376,
0x1037B,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10A01,
0x10A04,
0x10A05,
@@ -205724,12 +211144,20 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11001,
0x11002,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
@@ -205738,6 +211166,8 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x11100,
@@ -205764,6 +211194,8 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -205886,8 +211318,18 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -205902,10 +211344,20 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0x16FE2,
0x16FE3,
0x16FE5,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1BC9D,
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D173,
@@ -205938,10 +211390,18 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E13E,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EB,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -205964,7 +211424,7 @@ static const UV UNI_CI_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
- 819, /* Number of elements */
+ 873, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -206051,7 +211511,13 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x888,
+ 0x889,
+ 0x890,
+ 0x892,
+ 0x898,
+ 0x8A0,
+ 0x8C9,
0x903,
0x93A,
0x93B,
@@ -206133,6 +211599,8 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -206186,7 +211654,7 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -206236,7 +211704,7 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -206254,7 +211722,7 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0x17DD,
0x17DE,
0x180B,
- 0x180F,
+ 0x1810,
0x1843,
0x1844,
0x1885,
@@ -206290,7 +211758,7 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0x1AA7,
0x1AA8,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -206342,8 +211810,6 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0x1D78,
0x1D79,
0x1D9B,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x1FBD,
0x1FBE,
@@ -206425,6 +211891,8 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0xA771,
0xA788,
0xA78B,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xA802,
@@ -206504,7 +211972,7 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0xFB1E,
0xFB1F,
0xFBB2,
- 0xFBC2,
+ 0xFBC3,
0xFE00,
0xFE10,
0xFE13,
@@ -206541,6 +212009,12 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0x102E1,
0x10376,
0x1037B,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10A01,
0x10A04,
0x10A05,
@@ -206557,12 +212031,20 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11001,
0x11002,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
@@ -206571,6 +212053,8 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x11100,
@@ -206597,6 +212081,8 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -206719,8 +212205,18 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -206735,10 +212231,20 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0x16FE2,
0x16FE3,
0x16FE5,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1BC9D,
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D173,
@@ -206771,10 +212277,18 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E13E,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EB,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -206797,7 +212311,7 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
- 817, /* Number of elements */
+ 871, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -206882,7 +212396,13 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x888,
+ 0x889,
+ 0x890,
+ 0x892,
+ 0x898,
+ 0x8A0,
+ 0x8C9,
0x903,
0x93A,
0x93B,
@@ -206964,6 +212484,8 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -207017,7 +212539,7 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -207067,7 +212589,7 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -207085,7 +212607,7 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0x17DD,
0x17DE,
0x180B,
- 0x180F,
+ 0x1810,
0x1843,
0x1844,
0x1885,
@@ -207121,7 +212643,7 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0x1AA7,
0x1AA8,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -207173,8 +212695,6 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0x1D78,
0x1D79,
0x1D9B,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x1FBD,
0x1FBE,
@@ -207256,6 +212776,8 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0xA771,
0xA788,
0xA78B,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xA802,
@@ -207335,7 +212857,7 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0xFB1E,
0xFB1F,
0xFBB2,
- 0xFBC2,
+ 0xFBC3,
0xFE00,
0xFE10,
0xFE13,
@@ -207372,6 +212894,12 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0x102E1,
0x10376,
0x1037B,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10A01,
0x10A04,
0x10A05,
@@ -207388,12 +212916,20 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11001,
0x11002,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
@@ -207402,6 +212938,8 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x11100,
@@ -207428,6 +212966,8 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -207550,8 +213090,18 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -207566,10 +213116,20 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0x16FE2,
0x16FE3,
0x16FE5,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1BC9D,
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D173,
@@ -207602,10 +213162,18 @@ static const UV UNI_CI_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E13E,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EB,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -207742,6 +213310,16 @@ static const UV UNI_CJKEXTG_invlist[] = { /* for all charsets */
0x31350
};
+static const UV UNI_CJKEXTH_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x31350,
+ 0x323B0
+};
+
static const UV UNI_CJKRADICALSSUP_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -207773,7 +213351,7 @@ static const UV UNI_CJKSYMBOLS_invlist[] = { /* for all charsets */
};
static const UV UNI_CN_invlist[] = { /* for all charsets */
- 1354, /* Number of elements */
+ 1414, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -207802,8 +213380,6 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x5EF,
0x5F5,
0x600,
- 0x61D,
- 0x61E,
0x70E,
0x70F,
0x74B,
@@ -207821,11 +213397,11 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x984,
0x985,
0x98D,
@@ -207981,7 +213557,7 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -207991,6 +213567,8 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -208013,14 +213591,14 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -208080,7 +213658,7 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -208148,10 +213726,8 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -208168,8 +213744,6 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x17F0,
0x17FA,
0x1800,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -208208,11 +213782,11 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -208228,8 +213802,6 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -208270,7 +213842,7 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -208284,10 +213856,6 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -208318,7 +213886,7 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -208342,8 +213910,6 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -208352,10 +213918,14 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -208426,16 +213996,14 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -208522,13 +214090,33 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -208611,10 +214199,12 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -208622,9 +214212,9 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -208644,7 +214234,7 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -208708,7 +214298,7 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -208716,7 +214306,7 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -208747,8 +214337,10 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -208791,6 +214383,12 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -208803,10 +214401,10 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -208816,7 +214414,9 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -208849,10 +214449,20 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -208867,14 +214477,22 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
0x1D127,
0x1D129,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -208927,6 +214545,10 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -208937,6 +214559,10 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -208945,10 +214571,22 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -209057,16 +214695,18 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -209080,27 +214720,23 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -209108,9 +214744,9 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -209121,6 +214757,8 @@ static const UV UNI_CN_invlist[] = { /* for all charsets */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -209357,6 +214995,18 @@ static const UV UNI_COUNTINGROD_invlist[] = { /* for all charsets */
0x1D380
};
+static const UV UNI_CPMN_invlist[] = { /* for all charsets */
+ 5, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x10100,
+ 0x10102,
+ 0x12F90,
+ 0x12FF3
+};
+
static const UV UNI_CPRT_invlist[] = { /* for all charsets */
19, /* Number of elements */
148565664, /* Version and data structure type */
@@ -209406,7 +215056,7 @@ static const UV UNI_CURRENCYSYMBOLS_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_CWCF_invlist[] = { /* for ASCII/Latin1 */
- 1229, /* Number of elements */
+ 1245, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -210282,7 +215932,7 @@ static const UV UNI_CWCF_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -210611,12 +216261,20 @@ static const UV UNI_CWCF_invlist[] = { /* for ASCII/Latin1 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xAB70,
@@ -210631,6 +216289,14 @@ static const UV UNI_CWCF_invlist[] = { /* for ASCII/Latin1 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -210649,7 +216315,7 @@ static const UV UNI_CWCF_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_CWCF_invlist[] = { /* for EBCDIC 1047 */
- 1249, /* Number of elements */
+ 1265, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -211545,7 +217211,7 @@ static const UV UNI_CWCF_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -211874,12 +217540,20 @@ static const UV UNI_CWCF_invlist[] = { /* for EBCDIC 1047 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xAB70,
@@ -211894,6 +217568,14 @@ static const UV UNI_CWCF_invlist[] = { /* for EBCDIC 1047 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -211912,7 +217594,7 @@ static const UV UNI_CWCF_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_CWCF_invlist[] = { /* for EBCDIC 037 */
- 1245, /* Number of elements */
+ 1261, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -212804,7 +218486,7 @@ static const UV UNI_CWCF_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -213133,12 +218815,20 @@ static const UV UNI_CWCF_invlist[] = { /* for EBCDIC 037 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xAB70,
@@ -213153,6 +218843,14 @@ static const UV UNI_CWCF_invlist[] = { /* for EBCDIC 037 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -213168,7 +218866,7 @@ static const UV UNI_CWCF_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_CWCM_invlist[] = { /* for ASCII/Latin1 */
- 249, /* Number of elements */
+ 263, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -213350,10 +219048,6 @@ static const UV UNI_CWCM_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2C71,
0x2C72,
0x2C74,
@@ -213388,9 +219082,11 @@ static const UV UNI_CWCM_invlist[] = { /* for ASCII/Latin1 */
0xA796,
0xA7AF,
0xA7B0,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D6,
+ 0xA7DA,
0xA7F5,
0xA7F7,
0xAB53,
@@ -213411,6 +219107,22 @@ static const UV UNI_CWCM_invlist[] = { /* for ASCII/Latin1 */
0x104D4,
0x104D8,
0x104FC,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10C80,
0x10CB3,
0x10CC0,
@@ -213431,7 +219143,7 @@ static const UV UNI_CWCM_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_CWCM_invlist[] = { /* for EBCDIC 1047 */
- 281, /* Number of elements */
+ 295, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -213645,10 +219357,6 @@ static const UV UNI_CWCM_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2C71,
0x2C72,
0x2C74,
@@ -213683,9 +219391,11 @@ static const UV UNI_CWCM_invlist[] = { /* for EBCDIC 1047 */
0xA796,
0xA7AF,
0xA7B0,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D6,
+ 0xA7DA,
0xA7F5,
0xA7F7,
0xAB53,
@@ -213706,6 +219416,22 @@ static const UV UNI_CWCM_invlist[] = { /* for EBCDIC 1047 */
0x104D4,
0x104D8,
0x104FC,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10C80,
0x10CB3,
0x10CC0,
@@ -213726,7 +219452,7 @@ static const UV UNI_CWCM_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_CWCM_invlist[] = { /* for EBCDIC 037 */
- 277, /* Number of elements */
+ 291, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -213936,10 +219662,6 @@ static const UV UNI_CWCM_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2C71,
0x2C72,
0x2C74,
@@ -213974,9 +219696,11 @@ static const UV UNI_CWCM_invlist[] = { /* for EBCDIC 037 */
0xA796,
0xA7AF,
0xA7B0,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D6,
+ 0xA7DA,
0xA7F5,
0xA7F7,
0xAB53,
@@ -213997,6 +219721,22 @@ static const UV UNI_CWCM_invlist[] = { /* for EBCDIC 037 */
0x104D4,
0x104D8,
0x104FC,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10C80,
0x10CB3,
0x10CC0,
@@ -214014,7 +219754,7 @@ static const UV UNI_CWCM_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_CWKCF_invlist[] = { /* for ASCII/Latin1 */
- 1655, /* Number of elements */
+ 1679, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -214660,7 +220400,7 @@ static const UV UNI_CWKCF_invlist[] = { /* for ASCII/Latin1 */
0x17B4,
0x17B6,
0x180B,
- 0x180F,
+ 0x1810,
0x1C80,
0x1C89,
0x1C90,
@@ -215062,7 +220802,7 @@ static const UV UNI_CWKCF_invlist[] = { /* for ASCII/Latin1 */
0x2ADC,
0x2ADD,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -215427,13 +221167,21 @@ static const UV UNI_CWKCF_invlist[] = { /* for ASCII/Latin1 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7F2,
0xA7F6,
0xA7F8,
0xA7FA,
@@ -215525,6 +221273,20 @@ static const UV UNI_CWKCF_invlist[] = { /* for ASCII/Latin1 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10C80,
0x10CB3,
0x118A0,
@@ -215581,6 +221343,8 @@ static const UV UNI_CWKCF_invlist[] = { /* for ASCII/Latin1 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1E900,
0x1E922,
0x1EE00,
@@ -215683,7 +221447,7 @@ static const UV UNI_CWKCF_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 1047 */
- 1665, /* Number of elements */
+ 1689, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -216339,7 +222103,7 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 1047 */
0x17B4,
0x17B6,
0x180B,
- 0x180F,
+ 0x1810,
0x1C80,
0x1C89,
0x1C90,
@@ -216741,7 +222505,7 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 1047 */
0x2ADC,
0x2ADD,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -217106,13 +222870,21 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 1047 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7F2,
0xA7F6,
0xA7F8,
0xA7FA,
@@ -217204,6 +222976,20 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 1047 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10C80,
0x10CB3,
0x118A0,
@@ -217260,6 +223046,8 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 1047 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1E900,
0x1E922,
0x1EE00,
@@ -217362,7 +223150,7 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 037 */
- 1663, /* Number of elements */
+ 1687, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -218016,7 +223804,7 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 037 */
0x17B4,
0x17B6,
0x180B,
- 0x180F,
+ 0x1810,
0x1C80,
0x1C89,
0x1C90,
@@ -218418,7 +224206,7 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 037 */
0x2ADC,
0x2ADD,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -218783,13 +224571,21 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 037 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7F2,
0xA7F6,
0xA7F8,
0xA7FA,
@@ -218881,6 +224677,20 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 037 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10C80,
0x10CB3,
0x118A0,
@@ -218937,6 +224747,8 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 037 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1E900,
0x1E922,
0x1EE00,
@@ -219036,7 +224848,7 @@ static const UV UNI_CWKCF_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_CWL_invlist[] = { /* for ASCII/Latin1 */
- 1203, /* Number of elements */
+ 1219, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -219892,7 +225704,7 @@ static const UV UNI_CWL_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -220221,12 +226033,20 @@ static const UV UNI_CWL_invlist[] = { /* for ASCII/Latin1 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -220235,6 +226055,14 @@ static const UV UNI_CWL_invlist[] = { /* for ASCII/Latin1 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -220253,7 +226081,7 @@ static const UV UNI_CWL_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_CWL_invlist[] = { /* for EBCDIC 1047 */
- 1221, /* Number of elements */
+ 1237, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -221127,7 +226955,7 @@ static const UV UNI_CWL_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -221456,12 +227284,20 @@ static const UV UNI_CWL_invlist[] = { /* for EBCDIC 1047 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -221470,6 +227306,14 @@ static const UV UNI_CWL_invlist[] = { /* for EBCDIC 1047 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -221488,7 +227332,7 @@ static const UV UNI_CWL_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_CWL_invlist[] = { /* for EBCDIC 037 */
- 1217, /* Number of elements */
+ 1233, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -222358,7 +228202,7 @@ static const UV UNI_CWL_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -222687,12 +228531,20 @@ static const UV UNI_CWL_invlist[] = { /* for EBCDIC 037 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -222701,6 +228553,14 @@ static const UV UNI_CWL_invlist[] = { /* for EBCDIC 037 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -222716,7 +228576,7 @@ static const UV UNI_CWL_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_CWT_invlist[] = { /* for ASCII/Latin1 */
- 1237, /* Number of elements */
+ 1253, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -223598,7 +229458,7 @@ static const UV UNI_CWT_invlist[] = { /* for ASCII/Latin1 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -223927,12 +229787,20 @@ static const UV UNI_CWT_invlist[] = { /* for ASCII/Latin1 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -223949,6 +229817,14 @@ static const UV UNI_CWT_invlist[] = { /* for ASCII/Latin1 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -223967,7 +229843,7 @@ static const UV UNI_CWT_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_CWT_invlist[] = { /* for EBCDIC 1047 */
- 1251, /* Number of elements */
+ 1267, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -224863,7 +230739,7 @@ static const UV UNI_CWT_invlist[] = { /* for EBCDIC 1047 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -225192,12 +231068,20 @@ static const UV UNI_CWT_invlist[] = { /* for EBCDIC 1047 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -225214,6 +231098,14 @@ static const UV UNI_CWT_invlist[] = { /* for EBCDIC 1047 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -225232,7 +231124,7 @@ static const UV UNI_CWT_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_CWT_invlist[] = { /* for EBCDIC 037 */
- 1251, /* Number of elements */
+ 1267, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -226128,7 +232020,7 @@ static const UV UNI_CWT_invlist[] = { /* for EBCDIC 037 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -226457,12 +232349,20 @@ static const UV UNI_CWT_invlist[] = { /* for EBCDIC 037 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -226479,6 +232379,14 @@ static const UV UNI_CWT_invlist[] = { /* for EBCDIC 037 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -226494,7 +232402,7 @@ static const UV UNI_CWT_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_CWU_invlist[] = { /* for ASCII/Latin1 */
- 1239, /* Number of elements */
+ 1255, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -227378,7 +233286,7 @@ static const UV UNI_CWU_invlist[] = { /* for ASCII/Latin1 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -227707,12 +233615,20 @@ static const UV UNI_CWU_invlist[] = { /* for ASCII/Latin1 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -227729,6 +233645,14 @@ static const UV UNI_CWU_invlist[] = { /* for ASCII/Latin1 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -227747,7 +233671,7 @@ static const UV UNI_CWU_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_CWU_invlist[] = { /* for EBCDIC 1047 */
- 1253, /* Number of elements */
+ 1269, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -228645,7 +234569,7 @@ static const UV UNI_CWU_invlist[] = { /* for EBCDIC 1047 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -228974,12 +234898,20 @@ static const UV UNI_CWU_invlist[] = { /* for EBCDIC 1047 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -228996,6 +234928,14 @@ static const UV UNI_CWU_invlist[] = { /* for EBCDIC 1047 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -229014,7 +234954,7 @@ static const UV UNI_CWU_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_CWU_invlist[] = { /* for EBCDIC 037 */
- 1253, /* Number of elements */
+ 1269, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -229912,7 +235852,7 @@ static const UV UNI_CWU_invlist[] = { /* for EBCDIC 037 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -230241,12 +236181,20 @@ static const UV UNI_CWU_invlist[] = { /* for EBCDIC 037 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
0xA7F6,
0xA7F7,
0xAB53,
@@ -230263,6 +236211,14 @@ static const UV UNI_CWU_invlist[] = { /* for EBCDIC 037 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10CC0,
0x10CF3,
0x118C0,
@@ -230315,6 +236271,16 @@ static const UV UNI_CYRILLICEXTC_invlist[] = { /* for all charsets */
0x1C90
};
+static const UV UNI_CYRILLICEXTD_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x1E030,
+ 0x1E090
+};
+
static const UV UNI_CYRILLICSUP_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -230326,7 +236292,7 @@ static const UV UNI_CYRILLICSUP_invlist[] = { /* for all charsets */
};
static const UV UNI_CYRL_invlist[] = { /* for all charsets */
- 19, /* Number of elements */
+ 23, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -230348,13 +236314,17 @@ static const UV UNI_CYRL_invlist[] = { /* for all charsets */
0xA640,
0xA6A0,
0xFE2E,
- 0xFE30
+ 0xFE30,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090
};
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_DASH_invlist[] = { /* for ASCII/Latin1 */
- 45, /* Number of elements */
+ 47, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -230387,6 +236357,8 @@ static const UV UNI_DASH_invlist[] = { /* for ASCII/Latin1 */
0x2E3C,
0x2E40,
0x2E41,
+ 0x2E5D,
+ 0x2E5E,
0x301C,
0x301D,
0x3030,
@@ -230413,7 +236385,7 @@ static const UV UNI_DASH_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_DASH_invlist[] = { /* for EBCDIC 1047 */
- 45, /* Number of elements */
+ 47, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -230446,6 +236418,8 @@ static const UV UNI_DASH_invlist[] = { /* for EBCDIC 1047 */
0x2E3C,
0x2E40,
0x2E41,
+ 0x2E5D,
+ 0x2E5E,
0x301C,
0x301D,
0x3030,
@@ -230472,7 +236446,7 @@ static const UV UNI_DASH_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_DASH_invlist[] = { /* for EBCDIC 037 */
- 45, /* Number of elements */
+ 47, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -230505,6 +236479,8 @@ static const UV UNI_DASH_invlist[] = { /* for EBCDIC 037 */
0x2E3C,
0x2E40,
0x2E41,
+ 0x2E5D,
+ 0x2E5E,
0x301C,
0x301D,
0x3030,
@@ -230550,7 +236526,7 @@ static const UV UNI_DEP_invlist[] = { /* for all charsets */
};
static const UV UNI_DEVA_invlist[] = { /* for all charsets */
- 15, /* Number of elements */
+ 17, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -230568,7 +236544,9 @@ static const UV UNI_DEVA_invlist[] = { /* for all charsets */
0xA830,
0xA83A,
0xA8E0,
- 0xA900
+ 0xA900,
+ 0x11B00,
+ 0x11B0A
};
static const UV UNI_DEVANAGARIEXT_invlist[] = { /* for all charsets */
@@ -230581,6 +236559,16 @@ static const UV UNI_DEVANAGARIEXT_invlist[] = { /* for all charsets */
0xA900
};
+static const UV UNI_DEVANAGARIEXTA_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x11B00,
+ 0x11B60
+};
+
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_DI_invlist[] = { /* for ASCII/Latin1 */
@@ -230600,7 +236588,7 @@ static const UV UNI_DI_invlist[] = { /* for ASCII/Latin1 */
0x17B4,
0x17B6,
0x180B,
- 0x180F,
+ 0x1810,
0x200B,
0x2010,
0x202A,
@@ -230649,7 +236637,7 @@ static const UV UNI_DI_invlist[] = { /* for EBCDIC 1047 */
0x17B4,
0x17B6,
0x180B,
- 0x180F,
+ 0x1810,
0x200B,
0x2010,
0x202A,
@@ -230698,7 +236686,7 @@ static const UV UNI_DI_invlist[] = { /* for EBCDIC 037 */
0x17B4,
0x17B6,
0x180B,
- 0x180F,
+ 0x1810,
0x200B,
0x2010,
0x202A,
@@ -230728,7 +236716,7 @@ static const UV UNI_DI_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */
- 353, /* Number of elements */
+ 391, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -230789,6 +236777,10 @@ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */
0x7F6,
0x818,
0x81A,
+ 0x898,
+ 0x8A0,
+ 0x8C9,
+ 0x8D3,
0x8E3,
0x8FF,
0x93C,
@@ -230821,6 +236813,8 @@ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */
0xB56,
0xBCD,
0xBCE,
+ 0xC3C,
+ 0xC3D,
0xC4D,
0xC4E,
0xCBC,
@@ -230873,6 +236867,8 @@ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */
0x109C,
0x135D,
0x1360,
+ 0x1714,
+ 0x1716,
0x17C9,
0x17D4,
0x17DD,
@@ -230884,7 +236880,9 @@ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1ABE,
+ 0x1ABF,
+ 0x1AC1,
+ 0x1ACC,
0x1B34,
0x1B35,
0x1B44,
@@ -230910,8 +236908,6 @@ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */
0x1DC4,
0x1DD0,
0x1DF5,
- 0x1DFA,
- 0x1DFD,
0x1E00,
0x1FBD,
0x1FBE,
@@ -230993,12 +236989,26 @@ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */
0xFFE4,
0x102E0,
0x102E1,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10AE5,
0x10AE7,
0x10D22,
0x10D28,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
+ 0x11046,
+ 0x11047,
+ 0x11070,
+ 0x11071,
0x110B9,
0x110BB,
0x11133,
@@ -231057,6 +237067,8 @@ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */
0x11D46,
0x11D97,
0x11D98,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -231065,6 +237077,16 @@ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */
0x16FA0,
0x16FF0,
0x16FF2,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D16D,
@@ -231075,8 +237097,12 @@ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */
0x1D18C,
0x1D1AA,
0x1D1AE,
+ 0x1E030,
+ 0x1E06E,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
0x1E8D0,
@@ -231095,7 +237121,7 @@ static const UV UNI_DIA_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */
- 353, /* Number of elements */
+ 391, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -231156,6 +237182,10 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */
0x7F6,
0x818,
0x81A,
+ 0x898,
+ 0x8A0,
+ 0x8C9,
+ 0x8D3,
0x8E3,
0x8FF,
0x93C,
@@ -231188,6 +237218,8 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */
0xB56,
0xBCD,
0xBCE,
+ 0xC3C,
+ 0xC3D,
0xC4D,
0xC4E,
0xCBC,
@@ -231240,6 +237272,8 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */
0x109C,
0x135D,
0x1360,
+ 0x1714,
+ 0x1716,
0x17C9,
0x17D4,
0x17DD,
@@ -231251,7 +237285,9 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1ABE,
+ 0x1ABF,
+ 0x1AC1,
+ 0x1ACC,
0x1B34,
0x1B35,
0x1B44,
@@ -231277,8 +237313,6 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */
0x1DC4,
0x1DD0,
0x1DF5,
- 0x1DFA,
- 0x1DFD,
0x1E00,
0x1FBD,
0x1FBE,
@@ -231360,12 +237394,26 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */
0xFFE4,
0x102E0,
0x102E1,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10AE5,
0x10AE7,
0x10D22,
0x10D28,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
+ 0x11046,
+ 0x11047,
+ 0x11070,
+ 0x11071,
0x110B9,
0x110BB,
0x11133,
@@ -231424,6 +237472,8 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */
0x11D46,
0x11D97,
0x11D98,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -231432,6 +237482,16 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */
0x16FA0,
0x16FF0,
0x16FF2,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D16D,
@@ -231442,8 +237502,12 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */
0x1D18C,
0x1D1AA,
0x1D1AE,
+ 0x1E030,
+ 0x1E06E,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
0x1E8D0,
@@ -231462,7 +237526,7 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_DIA_invlist[] = { /* for EBCDIC 037 */
- 351, /* Number of elements */
+ 389, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -231521,6 +237585,10 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 037 */
0x7F6,
0x818,
0x81A,
+ 0x898,
+ 0x8A0,
+ 0x8C9,
+ 0x8D3,
0x8E3,
0x8FF,
0x93C,
@@ -231553,6 +237621,8 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 037 */
0xB56,
0xBCD,
0xBCE,
+ 0xC3C,
+ 0xC3D,
0xC4D,
0xC4E,
0xCBC,
@@ -231605,6 +237675,8 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 037 */
0x109C,
0x135D,
0x1360,
+ 0x1714,
+ 0x1716,
0x17C9,
0x17D4,
0x17DD,
@@ -231616,7 +237688,9 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 037 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1ABE,
+ 0x1ABF,
+ 0x1AC1,
+ 0x1ACC,
0x1B34,
0x1B35,
0x1B44,
@@ -231642,8 +237716,6 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 037 */
0x1DC4,
0x1DD0,
0x1DF5,
- 0x1DFA,
- 0x1DFD,
0x1E00,
0x1FBD,
0x1FBE,
@@ -231725,12 +237797,26 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 037 */
0xFFE4,
0x102E0,
0x102E1,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10AE5,
0x10AE7,
0x10D22,
0x10D28,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
+ 0x11046,
+ 0x11047,
+ 0x11070,
+ 0x11071,
0x110B9,
0x110BB,
0x11133,
@@ -231789,6 +237875,8 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 037 */
0x11D46,
0x11D97,
0x11D98,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -231797,6 +237885,16 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 037 */
0x16FA0,
0x16FF0,
0x16FF2,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D16D,
@@ -231807,8 +237905,12 @@ static const UV UNI_DIA_invlist[] = { /* for EBCDIC 037 */
0x1D18C,
0x1D1AA,
0x1D1AE,
+ 0x1E030,
+ 0x1E06E,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
0x1E8D0,
@@ -234890,7 +240992,7 @@ static const UV UNI_DT__NB_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_DT__NONCANON_invlist[] = { /* for ASCII/Latin1 */
- 375, /* Number of elements */
+ 385, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -235089,6 +241191,8 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for ASCII/Latin1 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -235141,6 +241245,12 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for ASCII/Latin1 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1D400,
0x1D455,
0x1D456,
@@ -235183,6 +241293,8 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for ASCII/Latin1 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -235279,7 +241391,7 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 1047 */
- 381, /* Number of elements */
+ 391, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -235484,6 +241596,8 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 1047 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -235536,6 +241650,12 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 1047 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1D400,
0x1D455,
0x1D456,
@@ -235578,6 +241698,8 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 1047 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -235674,7 +241796,7 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 037 */
- 379, /* Number of elements */
+ 389, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -235877,6 +241999,8 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 037 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -235929,6 +242053,12 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 037 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1D400,
0x1D455,
0x1D456,
@@ -235971,6 +242101,8 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 037 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -236064,7 +242196,7 @@ static const UV UNI_DT__NONCANON_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_DT__NONE_invlist[] = { /* for ASCII/Latin1 */
- 785, /* Number of elements */
+ 795, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -236619,6 +242751,8 @@ static const UV UNI_DT__NONE_invlist[] = { /* for ASCII/Latin1 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -236701,6 +242835,12 @@ static const UV UNI_DT__NONE_invlist[] = { /* for ASCII/Latin1 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1109A,
0x1109B,
0x1109C,
@@ -236765,6 +242905,8 @@ static const UV UNI_DT__NONE_invlist[] = { /* for ASCII/Latin1 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -236863,7 +243005,7 @@ static const UV UNI_DT__NONE_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_DT__NONE_invlist[] = { /* for EBCDIC 1047 */
- 783, /* Number of elements */
+ 793, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -237416,6 +243558,8 @@ static const UV UNI_DT__NONE_invlist[] = { /* for EBCDIC 1047 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -237498,6 +243642,12 @@ static const UV UNI_DT__NONE_invlist[] = { /* for EBCDIC 1047 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1109A,
0x1109B,
0x1109C,
@@ -237562,6 +243712,8 @@ static const UV UNI_DT__NONE_invlist[] = { /* for EBCDIC 1047 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -237660,7 +243812,7 @@ static const UV UNI_DT__NONE_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_DT__NONE_invlist[] = { /* for EBCDIC 037 */
- 785, /* Number of elements */
+ 795, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -238215,6 +244367,8 @@ static const UV UNI_DT__NONE_invlist[] = { /* for EBCDIC 037 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -238297,6 +244451,12 @@ static const UV UNI_DT__NONE_invlist[] = { /* for EBCDIC 037 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1109A,
0x1109B,
0x1109C,
@@ -238361,6 +244521,8 @@ static const UV UNI_DT__NONE_invlist[] = { /* for EBCDIC 037 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -238494,7 +244656,7 @@ static const UV UNI_DT__SQR_invlist[] = { /* for all charsets */
};
static const UV UNI_DT__SUB_invlist[] = { /* for all charsets */
- 9, /* Number of elements */
+ 11, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -238506,13 +244668,15 @@ static const UV UNI_DT__SUB_invlist[] = { /* for all charsets */
0x2090,
0x209D,
0x2C7C,
- 0x2C7D
+ 0x2C7D,
+ 0x1E051,
+ 0x1E06B
};
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_DT__SUP_invlist[] = { /* for ASCII/Latin1 */
- 51, /* Number of elements */
+ 63, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -238559,12 +244723,24 @@ static const UV UNI_DT__SUP_invlist[] = { /* for ASCII/Latin1 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
0xAB60,
0xAB69,
0xAB6A,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
+ 0x1E030,
+ 0x1E051,
+ 0x1E06B,
+ 0x1E06E,
0x1F16A,
0x1F16D
};
@@ -238577,7 +244753,7 @@ static const UV UNI_DT__SUP_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_DT__SUP_invlist[] = { /* for EBCDIC 1047 */
- 53, /* Number of elements */
+ 65, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -238626,12 +244802,24 @@ static const UV UNI_DT__SUP_invlist[] = { /* for EBCDIC 1047 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
0xAB60,
0xAB69,
0xAB6A,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
+ 0x1E030,
+ 0x1E051,
+ 0x1E06B,
+ 0x1E06E,
0x1F16A,
0x1F16D
};
@@ -238644,7 +244832,7 @@ static const UV UNI_DT__SUP_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_DT__SUP_invlist[] = { /* for EBCDIC 037 */
- 53, /* Number of elements */
+ 65, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -238693,12 +244881,24 @@ static const UV UNI_DT__SUP_invlist[] = { /* for EBCDIC 037 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
0xAB60,
0xAB69,
0xAB6A,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
+ 0x1E030,
+ 0x1E051,
+ 0x1E06B,
+ 0x1E06E,
0x1F16A,
0x1F16D
};
@@ -239902,7 +246102,7 @@ static const UV UNI_EA__H_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_EA__N_invlist[] = { /* for ASCII/Latin1 */
- 553, /* Number of elements */
+ 563, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -240345,10 +246545,20 @@ static const UV UNI_EA__N_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -240419,36 +246629,36 @@ static const UV UNI_EA__N_invlist[] = { /* for ASCII/Latin1 */
0x1F6D3,
0x1F6D5,
0x1F6D8,
+ 0x1F6DC,
+ 0x1F6E0,
0x1F6EB,
0x1F6ED,
0x1F6F4,
0x1F6FD,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F90C,
0x1F93B,
0x1F93C,
0x1F946,
0x1F947,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA00,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x20000,
0x2FFFE,
0x30000,
@@ -240469,7 +246679,7 @@ static const UV UNI_EA__N_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_EA__N_invlist[] = { /* for EBCDIC 1047 */
- 551, /* Number of elements */
+ 561, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -240910,10 +247120,20 @@ static const UV UNI_EA__N_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -240984,36 +247204,36 @@ static const UV UNI_EA__N_invlist[] = { /* for EBCDIC 1047 */
0x1F6D3,
0x1F6D5,
0x1F6D8,
+ 0x1F6DC,
+ 0x1F6E0,
0x1F6EB,
0x1F6ED,
0x1F6F4,
0x1F6FD,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F90C,
0x1F93B,
0x1F93C,
0x1F946,
0x1F947,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA00,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x20000,
0x2FFFE,
0x30000,
@@ -241034,7 +247254,7 @@ static const UV UNI_EA__N_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_EA__N_invlist[] = { /* for EBCDIC 037 */
- 551, /* Number of elements */
+ 561, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -241475,10 +247695,20 @@ static const UV UNI_EA__N_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -241549,36 +247779,36 @@ static const UV UNI_EA__N_invlist[] = { /* for EBCDIC 037 */
0x1F6D3,
0x1F6D5,
0x1F6D8,
+ 0x1F6DC,
+ 0x1F6E0,
0x1F6EB,
0x1F6ED,
0x1F6F4,
0x1F6FD,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F90C,
0x1F93B,
0x1F93C,
0x1F946,
0x1F947,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA00,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x20000,
0x2FFFE,
0x30000,
@@ -241720,7 +247950,7 @@ static const UV UNI_EA__NA_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_EA__W_invlist[] = { /* for all charsets */
- 229, /* Number of elements */
+ 239, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -241849,10 +248079,20 @@ static const UV UNI_EA__W_invlist[] = { /* for all charsets */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -241919,36 +248159,36 @@ static const UV UNI_EA__W_invlist[] = { /* for all charsets */
0x1F6D3,
0x1F6D5,
0x1F6D8,
+ 0x1F6DC,
+ 0x1F6E0,
0x1F6EB,
0x1F6ED,
0x1F6F4,
0x1F6FD,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F90C,
0x1F93B,
0x1F93C,
0x1F946,
0x1F947,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA00,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x20000,
0x2FFFE,
0x30000,
@@ -241966,7 +248206,7 @@ static const UV UNI_EARLYDYNASTICCUNEIFORM_invlist[] = { /* for all charsets */
};
static const UV UNI_EBASE_invlist[] = { /* for all charsets */
- 77, /* Number of elements */
+ 81, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -242046,7 +248286,11 @@ static const UV UNI_EBASE_invlist[] = { /* for all charsets */
0x1F9CD,
0x1F9D0,
0x1F9D1,
- 0x1F9DE
+ 0x1F9DE,
+ 0x1FAC3,
+ 0x1FAC6,
+ 0x1FAF0,
+ 0x1FAF9
};
# if 'A' == 65 /* ASCII/Latin1 */
@@ -242152,15 +248396,13 @@ static const UV UNI_ECOMP_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_EGYP_invlist[] = { /* for all charsets */
- 5, /* Number of elements */
+ 3, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
0x0,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439
+ 0x13456
};
static const UV UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS_invlist[] = { /* for all charsets */
@@ -242170,7 +248412,7 @@ static const UV UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS_invlist[] = { /* for all c
1 if it starts at the element beyond 0 */
0x0,
0x13430,
- 0x13440
+ 0x13460
};
static const UV UNI_ELBA_invlist[] = { /* for all charsets */
@@ -242206,7 +248448,7 @@ static const UV UNI_EMOD_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_EMOJI_invlist[] = { /* for ASCII/Latin1 */
- 305, /* Number of elements */
+ 303, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -242479,7 +248721,7 @@ static const UV UNI_EMOJI_invlist[] = { /* for ASCII/Latin1 */
0x1F6D3,
0x1F6D5,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6E6,
0x1F6E9,
0x1F6EA,
@@ -242491,30 +248733,28 @@ static const UV UNI_EMOJI_invlist[] = { /* for ASCII/Latin1 */
0x1F6FD,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F90C,
0x1F93B,
0x1F93C,
0x1F946,
0x1F947,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA00,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9
};
# endif /* ASCII/Latin1 */
@@ -242525,7 +248765,7 @@ static const UV UNI_EMOJI_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_EMOJI_invlist[] = { /* for EBCDIC 1047 */
- 305, /* Number of elements */
+ 303, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -242798,7 +249038,7 @@ static const UV UNI_EMOJI_invlist[] = { /* for EBCDIC 1047 */
0x1F6D3,
0x1F6D5,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6E6,
0x1F6E9,
0x1F6EA,
@@ -242810,30 +249050,28 @@ static const UV UNI_EMOJI_invlist[] = { /* for EBCDIC 1047 */
0x1F6FD,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F90C,
0x1F93B,
0x1F93C,
0x1F946,
0x1F947,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA00,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9
};
# endif /* EBCDIC 1047 */
@@ -242844,7 +249082,7 @@ static const UV UNI_EMOJI_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_EMOJI_invlist[] = { /* for EBCDIC 037 */
- 305, /* Number of elements */
+ 303, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -243117,7 +249355,7 @@ static const UV UNI_EMOJI_invlist[] = { /* for EBCDIC 037 */
0x1F6D3,
0x1F6D5,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6E6,
0x1F6E9,
0x1F6EA,
@@ -243129,30 +249367,28 @@ static const UV UNI_EMOJI_invlist[] = { /* for EBCDIC 037 */
0x1F6FD,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F90C,
0x1F93B,
0x1F93C,
0x1F946,
0x1F947,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA00,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9
};
# endif /* EBCDIC 037 */
@@ -243345,40 +249581,40 @@ static const UV UNI_EPRES_invlist[] = { /* for all charsets */
0x1F6D3,
0x1F6D5,
0x1F6D8,
+ 0x1F6DC,
+ 0x1F6E0,
0x1F6EB,
0x1F6ED,
0x1F6F4,
0x1F6FD,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F90C,
0x1F93B,
0x1F93C,
0x1F946,
0x1F947,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA00,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9
};
static const UV UNI_ETHI_invlist[] = { /* for all charsets */
- 65, /* Number of elements */
+ 73, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -243446,7 +249682,15 @@ static const UV UNI_ETHI_invlist[] = { /* for all charsets */
0xAB20,
0xAB27,
0xAB28,
- 0xAB2F
+ 0xAB2F,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF
};
static const UV UNI_ETHIOPICEXT_invlist[] = { /* for all charsets */
@@ -243469,6 +249713,16 @@ static const UV UNI_ETHIOPICEXTA_invlist[] = { /* for all charsets */
0xAB30
};
+static const UV UNI_ETHIOPICEXTB_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x1E7E0,
+ 0x1E800
+};
+
static const UV UNI_ETHIOPICSUP_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -243482,7 +249736,7 @@ static const UV UNI_ETHIOPICSUP_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_EXT_invlist[] = { /* for ASCII/Latin1 */
- 65, /* Number of elements */
+ 67, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -243535,6 +249789,8 @@ static const UV UNI_EXT_invlist[] = { /* for ASCII/Latin1 */
0xAAF5,
0xFF70,
0xFF71,
+ 0x10781,
+ 0x10783,
0x1135D,
0x1135E,
0x115C6,
@@ -243561,7 +249817,7 @@ static const UV UNI_EXT_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_EXT_invlist[] = { /* for EBCDIC 1047 */
- 65, /* Number of elements */
+ 67, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -243614,6 +249870,8 @@ static const UV UNI_EXT_invlist[] = { /* for EBCDIC 1047 */
0xAAF5,
0xFF70,
0xFF71,
+ 0x10781,
+ 0x10783,
0x1135D,
0x1135E,
0x115C6,
@@ -243640,7 +249898,7 @@ static const UV UNI_EXT_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_EXT_invlist[] = { /* for EBCDIC 037 */
- 65, /* Number of elements */
+ 67, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -243693,6 +249951,8 @@ static const UV UNI_EXT_invlist[] = { /* for EBCDIC 037 */
0xAAF5,
0xFF70,
0xFF71,
+ 0x10781,
+ 0x10783,
0x1135D,
0x1135E,
0x115C6,
@@ -244257,7 +250517,7 @@ static const UV UNI_GCB__CN_invlist[] = { /* for ASCII/Latin1 */
0xFFF0,
0xFFFC,
0x13430,
- 0x13439,
+ 0x13440,
0x1BCA0,
0x1BCA4,
0x1D173,
@@ -244309,7 +250569,7 @@ static const UV UNI_GCB__CN_invlist[] = { /* for EBCDIC 1047 */
0xFFF0,
0xFFFC,
0x13430,
- 0x13439,
+ 0x13440,
0x1BCA0,
0x1BCA4,
0x1D173,
@@ -244361,7 +250621,7 @@ static const UV UNI_GCB__CN_invlist[] = { /* for EBCDIC 037 */
0xFFF0,
0xFFFC,
0x13430,
- 0x13439,
+ 0x13440,
0x1BCA0,
0x1BCA4,
0x1D173,
@@ -244377,7 +250637,7 @@ static const UV UNI_GCB__CN_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */
- 691, /* Number of elements */
+ 729, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -244430,7 +250690,9 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x903,
@@ -244520,6 +250782,8 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -244583,7 +250847,7 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -244631,7 +250895,7 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -244648,6 +250912,8 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */
0x17DE,
0x180B,
0x180E,
+ 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -244679,7 +250945,7 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -244723,8 +250989,6 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200C,
0x200D,
@@ -244840,18 +251104,28 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11001,
0x11002,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
0x110B7,
0x110B9,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -244876,6 +251150,8 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -245010,6 +251286,18 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -245022,6 +251310,10 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */
0x16FE5,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D166,
0x1D167,
@@ -245058,10 +251350,16 @@ static const UV UNI_GCB__EX_invlist[] = { /* for all charsets */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -245087,7 +251385,7 @@ static const UV UNI_GCB__L_invlist[] = { /* for all charsets */
};
static const UV UNI_GCB__PP_invlist[] = { /* for all charsets */
- 27, /* Number of elements */
+ 31, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -245098,6 +251396,8 @@ static const UV UNI_GCB__PP_invlist[] = { /* for all charsets */
0x6DE,
0x70F,
0x710,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0xD4E,
@@ -245117,11 +251417,13 @@ static const UV UNI_GCB__PP_invlist[] = { /* for all charsets */
0x11A84,
0x11A8A,
0x11D46,
- 0x11D47
+ 0x11D47,
+ 0x11F02,
+ 0x11F03
};
static const UV UNI_GCB__SM_invlist[] = { /* for all charsets */
- 319, /* Number of elements */
+ 331, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -245188,6 +251490,8 @@ static const UV UNI_GCB__SM_invlist[] = { /* for all charsets */
0xCC9,
0xCCA,
0xCCC,
+ 0xCF3,
+ 0xCF4,
0xD02,
0xD04,
0xD3F,
@@ -245220,6 +251524,10 @@ static const UV UNI_GCB__SM_invlist[] = { /* for all charsets */
0x1058,
0x1084,
0x1085,
+ 0x1715,
+ 0x1716,
+ 0x1734,
+ 0x1735,
0x17B6,
0x17B7,
0x17BE,
@@ -245388,8 +251696,6 @@ static const UV UNI_GCB__SM_invlist[] = { /* for all charsets */
0x116B0,
0x116B6,
0x116B7,
- 0x11720,
- 0x11722,
0x11726,
0x11727,
0x1182C,
@@ -245436,6 +251742,14 @@ static const UV UNI_GCB__SM_invlist[] = { /* for all charsets */
0x11D97,
0x11EF5,
0x11EF7,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F36,
+ 0x11F3E,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
0x16F51,
0x16F88,
0x16FF0,
@@ -245473,7 +251787,7 @@ static const UV UNI_GCB__V_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
- 620, /* Number of elements */
+ 658, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -245537,7 +251851,11 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x890,
+ 0x892,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -245619,6 +251937,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
0xBD8,
0xC00,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC45,
0xC46,
@@ -245643,6 +251963,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
0xCD7,
0xCE2,
0xCE4,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD3B,
@@ -245680,7 +252002,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
0xEB3,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -245724,7 +252046,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
0x135D,
0x1360,
0x1712,
- 0x1715,
+ 0x1716,
0x1732,
0x1735,
0x1752,
@@ -245736,7 +252058,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
0x17DD,
0x17DE,
0x180B,
- 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -245758,7 +252080,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
@@ -245784,8 +252106,6 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1CF7,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200B,
0x2010,
@@ -245909,18 +252229,28 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11003,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11083,
0x110B0,
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x11100,
@@ -245945,6 +252275,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112EB,
0x11300,
@@ -245982,6 +252314,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
0x116AB,
0x116B8,
0x1171D,
+ 0x11720,
+ 0x11722,
0x1172C,
0x1182C,
0x1183B,
@@ -246031,8 +252365,16 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
0x11D98,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F04,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -246051,6 +252393,10 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -246083,10 +252429,16 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -246107,7 +252459,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
- 620, /* Number of elements */
+ 658, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -246171,7 +252523,11 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x890,
+ 0x892,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -246253,6 +252609,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
0xBD8,
0xC00,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC45,
0xC46,
@@ -246277,6 +252635,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
0xCD7,
0xCE2,
0xCE4,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD3B,
@@ -246314,7 +252674,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
0xEB3,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -246358,7 +252718,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
0x135D,
0x1360,
0x1712,
- 0x1715,
+ 0x1716,
0x1732,
0x1735,
0x1752,
@@ -246370,7 +252730,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
0x17DD,
0x17DE,
0x180B,
- 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -246392,7 +252752,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
@@ -246418,8 +252778,6 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1CF7,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200B,
0x2010,
@@ -246543,18 +252901,28 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11003,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11083,
0x110B0,
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x11100,
@@ -246579,6 +252947,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112EB,
0x11300,
@@ -246616,6 +252986,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
0x116AB,
0x116B8,
0x1171D,
+ 0x11720,
+ 0x11722,
0x1172C,
0x1182C,
0x1183B,
@@ -246665,8 +253037,16 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
0x11D98,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F04,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -246685,6 +253065,10 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -246717,10 +253101,16 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -246741,7 +253131,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
- 620, /* Number of elements */
+ 658, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -246805,7 +253195,11 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x890,
+ 0x892,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -246887,6 +253281,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
0xBD8,
0xC00,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC45,
0xC46,
@@ -246911,6 +253307,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
0xCD7,
0xCE2,
0xCE4,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD3B,
@@ -246948,7 +253346,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
0xEB3,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -246992,7 +253390,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
0x135D,
0x1360,
0x1712,
- 0x1715,
+ 0x1716,
0x1732,
0x1735,
0x1752,
@@ -247004,7 +253402,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
0x17DD,
0x17DE,
0x180B,
- 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -247026,7 +253424,7 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
@@ -247052,8 +253450,6 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
0x1CF7,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200B,
0x2010,
@@ -247177,18 +253573,28 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11003,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11083,
0x110B0,
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x11100,
@@ -247213,6 +253619,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112EB,
0x11300,
@@ -247250,6 +253658,8 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
0x116AB,
0x116B8,
0x1171D,
+ 0x11720,
+ 0x11722,
0x1172C,
0x1182C,
0x1183B,
@@ -247299,8 +253709,16 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
0x11D98,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F04,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -247319,6 +253737,10 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -247351,10 +253773,16 @@ static const UV UNI_GCB__XX_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -247436,7 +253864,7 @@ static const UV UNI_GEORGIANSUP_invlist[] = { /* for all charsets */
};
static const UV UNI_GLAG_invlist[] = { /* for all charsets */
- 23, /* Number of elements */
+ 21, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -247446,9 +253874,7 @@ static const UV UNI_GLAG_invlist[] = { /* for all charsets */
0x487,
0x488,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2E43,
0x2E44,
0xA66F,
@@ -247592,7 +254018,7 @@ static const UV UNI_GRAN_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
- 1669, /* Number of elements */
+ 1751, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -247639,7 +254065,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x610,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x64B,
0x660,
0x670,
@@ -247681,10 +254107,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x85F,
0x860,
0x86B,
+ 0x870,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x903,
0x93A,
0x93B,
@@ -247861,6 +254287,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0xC45,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC66,
@@ -247887,14 +254315,14 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0xCC9,
0xCCA,
0xCCC,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD02,
0xD0D,
0xD0E,
@@ -248066,12 +254494,12 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x1715,
+ 0x1716,
+ 0x171F,
0x1732,
- 0x1735,
+ 0x1734,
0x1737,
0x1740,
0x1752,
@@ -248156,11 +254584,11 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x1B3D,
0x1B42,
0x1B43,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B6B,
0x1B74,
- 0x1B7D,
+ 0x1B7F,
0x1B82,
0x1BA2,
0x1BA6,
@@ -248248,7 +254676,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x2100,
0x218C,
0x2190,
@@ -248260,10 +254688,6 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CEF,
0x2CF2,
0x2CF4,
@@ -248296,7 +254720,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x2DD8,
0x2DDF,
0x2E00,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -248322,8 +254746,6 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -248340,10 +254762,14 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0xA6F2,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -248464,15 +254890,15 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
+ 0xFE00,
0xFE10,
0xFE1A,
0xFE30,
@@ -248560,13 +254986,33 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -248651,6 +255097,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x10F46,
0x10F51,
0x10F5A,
+ 0x10F70,
+ 0x10F82,
+ 0x10F86,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -248663,6 +255113,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x1104E,
0x11052,
0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11082,
0x110B3,
0x110B7,
@@ -248705,6 +255159,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x11236,
0x11238,
0x1123E,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -248808,7 +255264,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x116B6,
0x116B7,
0x116B8,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -248818,7 +255274,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x11726,
0x11727,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1182F,
0x11838,
@@ -248875,8 +255331,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x11A98,
0x11A9A,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -248923,6 +255381,16 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x11EF3,
0x11EF5,
0x11EF9,
+ 0x11F02,
+ 0x11F11,
+ 0x11F12,
+ 0x11F36,
+ 0x11F3E,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -248935,8 +255403,12 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
@@ -248946,7 +255418,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF5,
@@ -248981,10 +255455,20 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -249001,6 +255485,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x1BC9D,
0x1BC9F,
0x1BCA0,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -249016,11 +255502,13 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -249077,6 +255565,12 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x1DA84,
0x1DA85,
0x1DA8C,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
@@ -249085,12 +255579,26 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
0x1E2F0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -249201,16 +255709,18 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -249224,27 +255734,23 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -249252,9 +255758,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -249264,7 +255770,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* ASCII/Latin1 */
@@ -249275,7 +255783,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
- 1669, /* Number of elements */
+ 1751, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -249322,7 +255830,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x610,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x64B,
0x660,
0x670,
@@ -249364,10 +255872,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x85F,
0x860,
0x86B,
+ 0x870,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x903,
0x93A,
0x93B,
@@ -249544,6 +256052,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0xC45,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC66,
@@ -249570,14 +256080,14 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0xCC9,
0xCCA,
0xCCC,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD02,
0xD0D,
0xD0E,
@@ -249749,12 +256259,12 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x1715,
+ 0x1716,
+ 0x171F,
0x1732,
- 0x1735,
+ 0x1734,
0x1737,
0x1740,
0x1752,
@@ -249839,11 +256349,11 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x1B3D,
0x1B42,
0x1B43,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B6B,
0x1B74,
- 0x1B7D,
+ 0x1B7F,
0x1B82,
0x1BA2,
0x1BA6,
@@ -249931,7 +256441,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x2100,
0x218C,
0x2190,
@@ -249943,10 +256453,6 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CEF,
0x2CF2,
0x2CF4,
@@ -249979,7 +256485,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x2DD8,
0x2DDF,
0x2E00,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -250005,8 +256511,6 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -250023,10 +256527,14 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0xA6F2,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -250147,15 +256655,15 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
+ 0xFE00,
0xFE10,
0xFE1A,
0xFE30,
@@ -250243,13 +256751,33 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -250334,6 +256862,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x10F46,
0x10F51,
0x10F5A,
+ 0x10F70,
+ 0x10F82,
+ 0x10F86,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -250346,6 +256878,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x1104E,
0x11052,
0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11082,
0x110B3,
0x110B7,
@@ -250388,6 +256924,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x11236,
0x11238,
0x1123E,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -250491,7 +257029,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x116B6,
0x116B7,
0x116B8,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -250501,7 +257039,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x11726,
0x11727,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1182F,
0x11838,
@@ -250558,8 +257096,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x11A98,
0x11A9A,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -250606,6 +257146,16 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x11EF3,
0x11EF5,
0x11EF9,
+ 0x11F02,
+ 0x11F11,
+ 0x11F12,
+ 0x11F36,
+ 0x11F3E,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -250618,8 +257168,12 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
@@ -250629,7 +257183,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF5,
@@ -250664,10 +257220,20 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -250684,6 +257250,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x1BC9D,
0x1BC9F,
0x1BCA0,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -250699,11 +257267,13 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -250760,6 +257330,12 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x1DA84,
0x1DA85,
0x1DA8C,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
@@ -250768,12 +257344,26 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
0x1E2F0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -250884,16 +257474,18 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -250907,27 +257499,23 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -250935,9 +257523,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -250947,7 +257535,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 1047 */
@@ -250958,7 +257548,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
- 1669, /* Number of elements */
+ 1751, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -251005,7 +257595,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x610,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x64B,
0x660,
0x670,
@@ -251047,10 +257637,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x85F,
0x860,
0x86B,
+ 0x870,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x903,
0x93A,
0x93B,
@@ -251227,6 +257817,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0xC45,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC66,
@@ -251253,14 +257845,14 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0xCC9,
0xCCA,
0xCCC,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD02,
0xD0D,
0xD0E,
@@ -251432,12 +258024,12 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x1715,
+ 0x1716,
+ 0x171F,
0x1732,
- 0x1735,
+ 0x1734,
0x1737,
0x1740,
0x1752,
@@ -251522,11 +258114,11 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x1B3D,
0x1B42,
0x1B43,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B6B,
0x1B74,
- 0x1B7D,
+ 0x1B7F,
0x1B82,
0x1BA2,
0x1BA6,
@@ -251614,7 +258206,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x2100,
0x218C,
0x2190,
@@ -251626,10 +258218,6 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CEF,
0x2CF2,
0x2CF4,
@@ -251662,7 +258250,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x2DD8,
0x2DDF,
0x2E00,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -251688,8 +258276,6 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -251706,10 +258292,14 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0xA6F2,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -251830,15 +258420,15 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
+ 0xFE00,
0xFE10,
0xFE1A,
0xFE30,
@@ -251926,13 +258516,33 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -252017,6 +258627,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x10F46,
0x10F51,
0x10F5A,
+ 0x10F70,
+ 0x10F82,
+ 0x10F86,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -252029,6 +258643,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x1104E,
0x11052,
0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11082,
0x110B3,
0x110B7,
@@ -252071,6 +258689,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x11236,
0x11238,
0x1123E,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -252174,7 +258794,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x116B6,
0x116B7,
0x116B8,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -252184,7 +258804,7 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x11726,
0x11727,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1182F,
0x11838,
@@ -252241,8 +258861,10 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x11A98,
0x11A9A,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -252289,6 +258911,16 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x11EF3,
0x11EF5,
0x11EF9,
+ 0x11F02,
+ 0x11F11,
+ 0x11F12,
+ 0x11F36,
+ 0x11F3E,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -252301,8 +258933,12 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
@@ -252312,7 +258948,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF5,
@@ -252347,10 +258985,20 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -252367,6 +259015,8 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x1BC9D,
0x1BC9F,
0x1BCA0,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -252382,11 +259032,13 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -252443,6 +259095,12 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x1DA84,
0x1DA85,
0x1DA8C,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
@@ -252451,12 +259109,26 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
0x1E2F0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E4F0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -252567,16 +259239,18 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -252590,27 +259264,23 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -252618,9 +259288,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -252630,7 +259300,9 @@ static const UV UNI_GRBASE_invlist[] = { /* for EBCDIC 037 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 037 */
@@ -252730,7 +259402,7 @@ static const UV UNI_GREK_invlist[] = { /* for all charsets */
};
static const UV UNI_GREXT_invlist[] = { /* for all charsets */
- 689, /* Number of elements */
+ 727, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -252783,7 +259455,9 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x903,
@@ -252873,6 +259547,8 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -252936,7 +259612,7 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -252984,7 +259660,7 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -253001,6 +259677,8 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */
0x17DE,
0x180B,
0x180E,
+ 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -253032,7 +259710,7 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -253076,8 +259754,6 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200C,
0x200D,
@@ -253193,18 +259869,28 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11001,
0x11002,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
0x110B7,
0x110B9,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -253229,6 +259915,8 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -253363,6 +260051,18 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -253375,6 +260075,10 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */
0x16FE5,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D166,
0x1D167,
@@ -253411,10 +260115,16 @@ static const UV UNI_GREXT_invlist[] = { /* for all charsets */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -253534,7 +260244,7 @@ static const UV UNI_HALFMARKS_invlist[] = { /* for all charsets */
};
static const UV UNI_HAN_invlist[] = { /* for all charsets */
- 73, /* Number of elements */
+ 77, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -253580,7 +260290,7 @@ static const UV UNI_HAN_invlist[] = { /* for all charsets */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
+ 0xA000,
0xA700,
0xA708,
0xF900,
@@ -253591,6 +260301,8 @@ static const UV UNI_HAN_invlist[] = { /* for all charsets */
0xFE47,
0xFF61,
0xFF66,
+ 0x16FE2,
+ 0x16FE4,
0x16FF0,
0x16FF2,
0x1D360,
@@ -253598,9 +260310,9 @@ static const UV UNI_HAN_invlist[] = { /* for all charsets */
0x1F250,
0x1F252,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -253610,7 +260322,9 @@ static const UV UNI_HAN_invlist[] = { /* for all charsets */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
static const UV UNI_HANG_invlist[] = { /* for all charsets */
@@ -253734,7 +260448,7 @@ static const UV UNI_HIGHSURROGATES_invlist[] = { /* for all charsets */
};
static const UV UNI_HIRA_invlist[] = { /* for all charsets */
- 33, /* Number of elements */
+ 35, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -253766,7 +260480,9 @@ static const UV UNI_HIRA_invlist[] = { /* for all charsets */
0xFF9E,
0xFFA0,
0x1B001,
- 0x1B11F,
+ 0x1B120,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
0x1F200,
@@ -253954,7 +260670,7 @@ static const UV UNI_HYPHEN_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
- 1461, /* Number of elements */
+ 1537, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -254061,11 +260777,11 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -254233,7 +260949,7 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -254243,6 +260959,8 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -254267,14 +260985,14 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -254340,7 +261058,7 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -254434,10 +261152,8 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -254457,7 +261173,7 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -254496,9 +261212,9 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x1AB0,
0x1ABE,
0x1ABF,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -254522,8 +261238,6 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -254604,10 +261318,6 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -254668,8 +261378,6 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -254688,10 +261396,14 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -254869,12 +261581,34 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -254949,12 +261683,14 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -254962,9 +261698,11 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -254992,7 +261730,7 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -255071,6 +261809,8 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -255107,7 +261847,7 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -255151,6 +261891,14 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -255159,8 +261907,12 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -255169,6 +261921,10 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -255203,10 +261959,20 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -255221,6 +261987,10 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -255307,6 +262077,10 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -255317,6 +262091,10 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -255325,8 +262103,20 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -255404,9 +262194,9 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -255417,6 +262207,8 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -255429,7 +262221,7 @@ static const UV UNI_IDC_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
- 1485, /* Number of elements */
+ 1561, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -255560,11 +262352,11 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -255732,7 +262524,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -255742,6 +262534,8 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -255766,14 +262560,14 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -255839,7 +262633,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -255933,10 +262727,8 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -255956,7 +262748,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -255995,9 +262787,9 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x1AB0,
0x1ABE,
0x1ABF,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -256021,8 +262813,6 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -256103,10 +262893,6 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -256167,8 +262953,6 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -256187,10 +262971,14 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -256368,12 +263156,34 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -256448,12 +263258,14 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -256461,9 +263273,11 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -256491,7 +263305,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -256570,6 +263384,8 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -256606,7 +263422,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -256650,6 +263466,14 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -256658,8 +263482,12 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -256668,6 +263496,10 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -256702,10 +263534,20 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -256720,6 +263562,10 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -256806,6 +263652,10 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -256816,6 +263666,10 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -256824,8 +263678,20 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -256903,9 +263769,9 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -256916,6 +263782,8 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -256928,7 +263796,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
- 1481, /* Number of elements */
+ 1557, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -257055,11 +263923,11 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -257227,7 +264095,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -257237,6 +264105,8 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -257261,14 +264131,14 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -257334,7 +264204,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -257428,10 +264298,8 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -257451,7 +264319,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -257490,9 +264358,9 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x1AB0,
0x1ABE,
0x1ABF,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -257516,8 +264384,6 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -257598,10 +264464,6 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -257662,8 +264524,6 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -257682,10 +264542,14 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -257863,12 +264727,34 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -257943,12 +264829,14 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -257956,9 +264844,11 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -257986,7 +264876,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -258065,6 +264955,8 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -258101,7 +264993,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -258145,6 +265037,14 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -258153,8 +265053,12 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -258163,6 +265067,10 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -258197,10 +265105,20 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -258215,6 +265133,10 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -258301,6 +265223,10 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -258311,6 +265237,10 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -258319,8 +265249,20 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -258398,9 +265340,9 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -258411,6 +265353,8 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -258420,7 +265364,7 @@ static const UV UNI_IDC_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1 */
- 749, /* Number of elements */
+ 785, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -258561,12 +265505,16 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1
0x700,
0x750,
0x7B2,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
0x8AD,
0x8B2,
0x8B3,
- 0x8B6,
- 0x8C8,
+ 0x8B5,
+ 0x8CA,
0x901,
0x94E,
0x94F,
@@ -258735,7 +265683,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1
0xC34,
0xC35,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -258743,6 +265691,8 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1
0xC4E,
0xC55,
0xC57,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC66,
@@ -258769,12 +265719,14 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1
0xCCE,
0xCD5,
0xCD7,
+ 0xCDD,
+ 0xCDE,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD01,
0xD02,
@@ -258852,7 +265804,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDE,
@@ -258966,7 +265918,9 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1
0x17A9,
0x17B4,
0x17B6,
- 0x17CB,
+ 0x17CE,
+ 0x17D0,
+ 0x17D1,
0x17D2,
0x17D3,
0x17D7,
@@ -259047,8 +266001,6 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1
0x1FFB,
0x1FFC,
0x1FFD,
- 0x200C,
- 0x200E,
0x2010,
0x2011,
0x2019,
@@ -259096,7 +266048,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
+ 0xA000,
0xA67F,
0xA680,
0xA717,
@@ -259113,8 +266065,14 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1
0xA7AF,
0xA7B8,
0xA7BA,
- 0xA7C2,
+ 0xA7C0,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
0xA9E7,
0xA9FF,
0xAA60,
@@ -259157,14 +266115,34 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1
0x1133D,
0x16FF0,
0x16FF2,
+ 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E08F,
+ 0x1E090,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -259172,7 +266150,9 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1
0x2CEB0,
0x2EBE1,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* ASCII/Latin1 */
@@ -259183,7 +266163,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for ASCII/Latin1
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047 */
- 783, /* Number of elements */
+ 819, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -259358,12 +266338,16 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047
0x700,
0x750,
0x7B2,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
0x8AD,
0x8B2,
0x8B3,
- 0x8B6,
- 0x8C8,
+ 0x8B5,
+ 0x8CA,
0x901,
0x94E,
0x94F,
@@ -259532,7 +266516,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047
0xC34,
0xC35,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -259540,6 +266524,8 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047
0xC4E,
0xC55,
0xC57,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC66,
@@ -259566,12 +266552,14 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047
0xCCE,
0xCD5,
0xCD7,
+ 0xCDD,
+ 0xCDE,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD01,
0xD02,
@@ -259649,7 +266637,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDE,
@@ -259763,7 +266751,9 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047
0x17A9,
0x17B4,
0x17B6,
- 0x17CB,
+ 0x17CE,
+ 0x17D0,
+ 0x17D1,
0x17D2,
0x17D3,
0x17D7,
@@ -259844,8 +266834,6 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047
0x1FFB,
0x1FFC,
0x1FFD,
- 0x200C,
- 0x200E,
0x2010,
0x2011,
0x2019,
@@ -259893,7 +266881,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
+ 0xA000,
0xA67F,
0xA680,
0xA717,
@@ -259910,8 +266898,14 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047
0xA7AF,
0xA7B8,
0xA7BA,
- 0xA7C2,
+ 0xA7C0,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
0xA9E7,
0xA9FF,
0xAA60,
@@ -259954,14 +266948,34 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047
0x1133D,
0x16FF0,
0x16FF2,
+ 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E08F,
+ 0x1E090,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -259969,7 +266983,9 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047
0x2CEB0,
0x2EBE1,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 1047 */
@@ -259980,7 +266996,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 1047
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 */
- 779, /* Number of elements */
+ 815, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -260151,12 +267167,16 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 *
0x700,
0x750,
0x7B2,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
0x8AD,
0x8B2,
0x8B3,
- 0x8B6,
- 0x8C8,
+ 0x8B5,
+ 0x8CA,
0x901,
0x94E,
0x94F,
@@ -260325,7 +267345,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 *
0xC34,
0xC35,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -260333,6 +267353,8 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 *
0xC4E,
0xC55,
0xC57,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC66,
@@ -260359,12 +267381,14 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 *
0xCCE,
0xCD5,
0xCD7,
+ 0xCDD,
+ 0xCDE,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD01,
0xD02,
@@ -260442,7 +267466,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 *
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDE,
@@ -260556,7 +267580,9 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 *
0x17A9,
0x17B4,
0x17B6,
- 0x17CB,
+ 0x17CE,
+ 0x17D0,
+ 0x17D1,
0x17D2,
0x17D3,
0x17D7,
@@ -260637,8 +267663,6 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 *
0x1FFB,
0x1FFC,
0x1FFD,
- 0x200C,
- 0x200E,
0x2010,
0x2011,
0x2019,
@@ -260686,7 +267710,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 *
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
+ 0xA000,
0xA67F,
0xA680,
0xA717,
@@ -260703,8 +267727,14 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 *
0xA7AF,
0xA7B8,
0xA7BA,
- 0xA7C2,
+ 0xA7C0,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
0xA9E7,
0xA9FF,
0xAA60,
@@ -260747,14 +267777,34 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 *
0x1133D,
0x16FF0,
0x16FF2,
+ 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E08F,
+ 0x1E090,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -260762,7 +267812,9 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 *
0x2CEB0,
0x2EBE1,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 037 */
@@ -260770,7 +267822,7 @@ static const UV UNI_IDENTIFIERSTATUS__ALLOWED_invlist[] = { /* for EBCDIC 037 *
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Latin1 */
- 749, /* Number of elements */
+ 785, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -260911,12 +267963,16 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat
0x700,
0x750,
0x7B2,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
0x8AD,
0x8B2,
0x8B3,
- 0x8B6,
- 0x8C8,
+ 0x8B5,
+ 0x8CA,
0x901,
0x94E,
0x94F,
@@ -261085,7 +268141,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat
0xC34,
0xC35,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -261093,6 +268149,8 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat
0xC4E,
0xC55,
0xC57,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC66,
@@ -261119,12 +268177,14 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat
0xCCE,
0xCD5,
0xCD7,
+ 0xCDD,
+ 0xCDE,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD01,
0xD02,
@@ -261202,7 +268262,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDE,
@@ -261316,7 +268376,9 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat
0x17A9,
0x17B4,
0x17B6,
- 0x17CB,
+ 0x17CE,
+ 0x17D0,
+ 0x17D1,
0x17D2,
0x17D3,
0x17D7,
@@ -261397,8 +268459,6 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat
0x1FFB,
0x1FFC,
0x1FFD,
- 0x200C,
- 0x200E,
0x2010,
0x2011,
0x2019,
@@ -261446,7 +268506,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
+ 0xA000,
0xA67F,
0xA680,
0xA717,
@@ -261463,8 +268523,14 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat
0xA7AF,
0xA7B8,
0xA7BA,
- 0xA7C2,
+ 0xA7C0,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
0xA9E7,
0xA9FF,
0xAA60,
@@ -261507,14 +268573,34 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat
0x1133D,
0x16FF0,
0x16FF2,
+ 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E08F,
+ 0x1E090,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -261522,7 +268608,9 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat
0x2CEB0,
0x2EBE1,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* ASCII/Latin1 */
@@ -261533,7 +268621,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for ASCII/Lat
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 1047 */
- 783, /* Number of elements */
+ 819, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -261708,12 +268796,16 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10
0x700,
0x750,
0x7B2,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
0x8AD,
0x8B2,
0x8B3,
- 0x8B6,
- 0x8C8,
+ 0x8B5,
+ 0x8CA,
0x901,
0x94E,
0x94F,
@@ -261882,7 +268974,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10
0xC34,
0xC35,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -261890,6 +268982,8 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10
0xC4E,
0xC55,
0xC57,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC66,
@@ -261916,12 +269010,14 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10
0xCCE,
0xCD5,
0xCD7,
+ 0xCDD,
+ 0xCDE,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD01,
0xD02,
@@ -261999,7 +269095,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDE,
@@ -262113,7 +269209,9 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10
0x17A9,
0x17B4,
0x17B6,
- 0x17CB,
+ 0x17CE,
+ 0x17D0,
+ 0x17D1,
0x17D2,
0x17D3,
0x17D7,
@@ -262194,8 +269292,6 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10
0x1FFB,
0x1FFC,
0x1FFD,
- 0x200C,
- 0x200E,
0x2010,
0x2011,
0x2019,
@@ -262243,7 +269339,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
+ 0xA000,
0xA67F,
0xA680,
0xA717,
@@ -262260,8 +269356,14 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10
0xA7AF,
0xA7B8,
0xA7BA,
- 0xA7C2,
+ 0xA7C0,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
0xA9E7,
0xA9FF,
0xAA60,
@@ -262304,14 +269406,34 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10
0x1133D,
0x16FF0,
0x16FF2,
+ 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E08F,
+ 0x1E090,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -262319,7 +269441,9 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10
0x2CEB0,
0x2EBE1,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 1047 */
@@ -262330,7 +269454,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 10
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 037 */
- 779, /* Number of elements */
+ 815, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -262501,12 +269625,16 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03
0x700,
0x750,
0x7B2,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
0x8AD,
0x8B2,
0x8B3,
- 0x8B6,
- 0x8C8,
+ 0x8B5,
+ 0x8CA,
0x901,
0x94E,
0x94F,
@@ -262675,7 +269803,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03
0xC34,
0xC35,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -262683,6 +269811,8 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03
0xC4E,
0xC55,
0xC57,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC66,
@@ -262709,12 +269839,14 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03
0xCCE,
0xCD5,
0xCD7,
+ 0xCDD,
+ 0xCDE,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD01,
0xD02,
@@ -262792,7 +269924,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDE,
@@ -262906,7 +270038,9 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03
0x17A9,
0x17B4,
0x17B6,
- 0x17CB,
+ 0x17CE,
+ 0x17D0,
+ 0x17D1,
0x17D2,
0x17D3,
0x17D7,
@@ -262987,8 +270121,6 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03
0x1FFB,
0x1FFC,
0x1FFD,
- 0x200C,
- 0x200E,
0x2010,
0x2011,
0x2019,
@@ -263036,7 +270168,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
+ 0xA000,
0xA67F,
0xA680,
0xA717,
@@ -263053,8 +270185,14 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03
0xA7AF,
0xA7B8,
0xA7BA,
- 0xA7C2,
+ 0xA7C0,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
0xA9E7,
0xA9FF,
0xAA60,
@@ -263097,14 +270235,34 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03
0x1133D,
0x16FF0,
0x16FF2,
+ 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E08F,
+ 0x1E090,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -263112,7 +270270,9 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03
0x2CEB0,
0x2EBE1,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 037 */
@@ -263120,7 +270280,7 @@ static const UV UNI_IDENTIFIERSTATUS__RESTRICTED_invlist[] = { /* for EBCDIC 03
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for ASCII/Latin1 */
- 39, /* Number of elements */
+ 37, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -263136,10 +270296,8 @@ static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for ASCII
0x17B4,
0x17B6,
0x180B,
- 0x180F,
+ 0x1810,
0x200B,
- 0x200C,
- 0x200E,
0x2010,
0x202A,
0x202F,
@@ -263173,7 +270331,7 @@ static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for ASCII
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for EBCDIC 1047 */
- 39, /* Number of elements */
+ 37, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -263189,10 +270347,8 @@ static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for EBCDI
0x17B4,
0x17B6,
0x180B,
- 0x180F,
+ 0x1810,
0x200B,
- 0x200C,
- 0x200E,
0x2010,
0x202A,
0x202F,
@@ -263226,7 +270382,7 @@ static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for EBCDI
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for EBCDIC 037 */
- 39, /* Number of elements */
+ 37, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -263242,10 +270398,8 @@ static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for EBCDI
0x17B4,
0x17B6,
0x180B,
- 0x180F,
+ 0x1810,
0x200B,
- 0x200C,
- 0x200E,
0x2010,
0x202A,
0x202F,
@@ -263274,7 +270428,7 @@ static const UV UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE_invlist[] = { /* for EBCDI
# endif /* EBCDIC 037 */
static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets */
- 425, /* Number of elements */
+ 449, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -263292,10 +270446,8 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -263320,9 +270472,7 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets
0x1CFA,
0x1CFB,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C80,
0x2CF4,
0x2CF9,
@@ -263380,7 +270530,21 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
@@ -263469,6 +270633,8 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -263476,9 +270642,9 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -263492,7 +270658,7 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -263554,7 +270720,7 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -263562,7 +270728,7 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -263625,6 +270791,12 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets
0x11D5A,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x12000,
0x1239A,
0x12400,
@@ -263633,10 +270805,10 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16A40,
@@ -263644,7 +270816,9 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -263699,6 +270873,10 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E290,
+ 0x1E2AF,
+ 0x1E4D0,
+ 0x1E4FA,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -263708,7 +270886,7 @@ static const UV UNI_IDENTIFIERTYPE__EXCLUSION_invlist[] = { /* for all charsets
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for ASCII/Latin1 */
- 31, /* Number of elements */
+ 29, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -263731,8 +270909,6 @@ static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for ASCII/Latin1
0x6FF,
0xF0B,
0xF0C,
- 0x200C,
- 0x200E,
0x2010,
0x2011,
0x2019,
@@ -263753,7 +270929,7 @@ static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for ASCII/Latin1
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for EBCDIC 1047 */
- 33, /* Number of elements */
+ 31, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -263778,8 +270954,6 @@ static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for EBCDIC 1047
0x6FF,
0xF0B,
0xF0C,
- 0x200C,
- 0x200E,
0x2010,
0x2011,
0x2019,
@@ -263800,7 +270974,7 @@ static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for EBCDIC 1047
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for EBCDIC 037 */
- 33, /* Number of elements */
+ 31, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -263825,8 +270999,6 @@ static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for EBCDIC 037 *
0x6FF,
0xF0B,
0xF0C,
- 0x200C,
- 0x200E,
0x2010,
0x2011,
0x2019,
@@ -263842,7 +271014,7 @@ static const UV UNI_IDENTIFIERTYPE__INCLUSION_invlist[] = { /* for EBCDIC 037 *
# endif /* EBCDIC 037 */
static const UV UNI_IDENTIFIERTYPE__LIMITEDUSE_invlist[] = { /* for all charsets */
- 171, /* Number of elements */
+ 175, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -263902,9 +271074,9 @@ static const UV UNI_IDENTIFIERTYPE__LIMITEDUSE_invlist[] = { /* for all charset
0x1AA0,
0x1AAE,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -263915,6 +271087,8 @@ static const UV UNI_IDENTIFIERTYPE__LIMITEDUSE_invlist[] = { /* for all charset
0x1C80,
0x1CC0,
0x1CC8,
+ 0x1DFA,
+ 0x1DFB,
0x2D30,
0x2D68,
0x2D70,
@@ -263977,6 +271151,8 @@ static const UV UNI_IDENTIFIERTYPE__LIMITEDUSE_invlist[] = { /* for all charset
0x1145C,
0x1145D,
0x11462,
+ 0x11AB0,
+ 0x11AC0,
0x11D60,
0x11D66,
0x11D67,
@@ -264022,7 +271198,7 @@ static const UV UNI_IDENTIFIERTYPE__LIMITEDUSE_invlist[] = { /* for all charset
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Latin1 */
- 1357, /* Number of elements */
+ 1417, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -264058,8 +271234,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x5EF,
0x5F5,
0x600,
- 0x61D,
- 0x61E,
0x70E,
0x70F,
0x74B,
@@ -264077,11 +271251,11 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x984,
0x985,
0x98D,
@@ -264237,7 +271411,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -264247,6 +271421,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -264269,14 +271445,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -264336,7 +271512,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -264404,10 +271580,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -264424,8 +271598,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x17F0,
0x17FA,
0x1800,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -264464,11 +271636,11 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -264484,8 +271656,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -264526,7 +271696,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -264540,10 +271710,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -264574,7 +271740,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -264598,8 +271764,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -264608,10 +271772,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -264682,16 +271850,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -264778,13 +271944,33 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -264867,10 +272053,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -264878,9 +272066,9 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -264900,7 +272088,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -264964,7 +272152,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -264972,7 +272160,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -265003,8 +272191,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -265047,6 +272237,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -265059,10 +272255,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -265072,7 +272268,9 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -265105,10 +272303,20 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -265123,14 +272331,22 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
0x1D127,
0x1D129,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -265183,6 +272399,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -265193,6 +272413,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -265201,10 +272425,22 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -265313,16 +272549,18 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -265336,27 +272574,23 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -265364,9 +272598,9 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -265377,6 +272611,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -265393,7 +272629,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for ASCII/Lat
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 1047 */
- 1361, /* Number of elements */
+ 1421, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -265433,8 +272669,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x5EF,
0x5F5,
0x600,
- 0x61D,
- 0x61E,
0x70E,
0x70F,
0x74B,
@@ -265452,11 +272686,11 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x984,
0x985,
0x98D,
@@ -265612,7 +272846,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -265622,6 +272856,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -265644,14 +272880,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -265711,7 +272947,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -265779,10 +273015,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -265799,8 +273033,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x17F0,
0x17FA,
0x1800,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -265839,11 +273071,11 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -265859,8 +273091,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -265901,7 +273131,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -265915,10 +273145,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -265949,7 +273175,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -265973,8 +273199,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -265983,10 +273207,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -266057,16 +273285,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -266153,13 +273379,33 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -266242,10 +273488,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -266253,9 +273501,9 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -266275,7 +273523,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -266339,7 +273587,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -266347,7 +273595,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -266378,8 +273626,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -266422,6 +273672,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -266434,10 +273690,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -266447,7 +273703,9 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -266480,10 +273738,20 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -266498,14 +273766,22 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
0x1D127,
0x1D129,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -266558,6 +273834,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -266568,6 +273848,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -266576,10 +273860,22 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -266688,16 +273984,18 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -266711,27 +274009,23 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -266739,9 +274033,9 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -266752,6 +274046,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -266768,7 +274064,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 10
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 037 */
- 1361, /* Number of elements */
+ 1421, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -266808,8 +274104,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x5EF,
0x5F5,
0x600,
- 0x61D,
- 0x61E,
0x70E,
0x70F,
0x74B,
@@ -266827,11 +274121,11 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x984,
0x985,
0x98D,
@@ -266987,7 +274281,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -266997,6 +274291,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -267019,14 +274315,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -267086,7 +274382,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -267154,10 +274450,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -267174,8 +274468,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x17F0,
0x17FA,
0x1800,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -267214,11 +274506,11 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -267234,8 +274526,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -267276,7 +274566,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -267290,10 +274580,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -267324,7 +274610,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -267348,8 +274634,6 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -267358,10 +274642,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -267432,16 +274720,14 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -267528,13 +274814,33 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -267617,10 +274923,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -267628,9 +274936,9 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -267650,7 +274958,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -267714,7 +275022,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -267722,7 +275030,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -267753,8 +275061,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -267797,6 +275107,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -267809,10 +275125,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -267822,7 +275138,9 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -267855,10 +275173,20 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -267873,14 +275201,22 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
0x1D127,
0x1D129,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -267933,6 +275269,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -267943,6 +275283,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -267951,10 +275295,22 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -268063,16 +275419,18 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -268086,27 +275444,23 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -268114,9 +275468,9 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -268127,6 +275481,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -268140,7 +275496,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTCHARACTER_invlist[] = { /* for EBCDIC 03
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for ASCII/Latin1 */
- 503, /* Number of elements */
+ 513, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -268431,6 +275787,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for ASCII/Latin1 *
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -268513,6 +275871,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for ASCII/Latin1 *
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1D15E,
0x1D165,
0x1D1BB,
@@ -268559,6 +275923,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for ASCII/Latin1 *
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -268657,7 +276023,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for ASCII/Latin1 *
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 1047 */
- 509, /* Number of elements */
+ 519, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -268954,6 +276320,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 1047 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -269036,6 +276404,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 1047 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1D15E,
0x1D165,
0x1D1BB,
@@ -269082,6 +276456,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 1047 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -269180,7 +276556,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 037 */
- 507, /* Number of elements */
+ 517, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -269475,6 +276851,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 037 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -269557,6 +276935,12 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 037 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1D15E,
0x1D165,
0x1D1BB,
@@ -269603,6 +276987,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 037 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -269698,7 +277084,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTNFKC_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
- 691, /* Number of elements */
+ 709, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -269777,7 +277163,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
0x610,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x66A,
0x66E,
@@ -269799,6 +277185,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
0x83F,
0x85E,
0x85F,
+ 0x888,
+ 0x889,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0x964,
@@ -269908,7 +277298,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
0x1B5A,
0x1B6B,
0x1B74,
- 0x1B7D,
+ 0x1B7F,
0x1BFC,
0x1C00,
0x1C3B,
@@ -269946,7 +277336,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
0x20A0,
0x20A8,
0x20A9,
- 0x20C0,
+ 0x20C1,
0x20DD,
0x20E1,
0x20E2,
@@ -270008,7 +277398,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
0x2D70,
0x2D71,
0x2E00,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -270090,11 +277480,13 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
0xABEB,
0xABEC,
0xFBB2,
- 0xFBC2,
+ 0xFBC3,
0xFD3E,
- 0xFD40,
+ 0xFD50,
+ 0xFDCF,
+ 0xFDD0,
0xFDFD,
- 0xFDFE,
+ 0xFE00,
0xFE45,
0xFE47,
0xFFF9,
@@ -270175,6 +277567,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
0x10F27,
0x10F51,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x10FC5,
0x10FCC,
0x11047,
@@ -270217,6 +277611,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
0x11644,
0x11660,
0x1166D,
+ 0x116B9,
+ 0x116BA,
0x1173A,
0x11740,
0x1183B,
@@ -270233,6 +277629,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
0x11A9D,
0x11A9E,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C41,
0x11C46,
0x11C5A,
@@ -270241,14 +277639,18 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F50,
0x11FC0,
0x11FF2,
0x11FFF,
0x12000,
0x12470,
0x12475,
+ 0x12FF1,
+ 0x12FF3,
0x13430,
- 0x13439,
+ 0x13440,
0x16A6E,
0x16A70,
0x16AF5,
@@ -270267,6 +277669,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
0x1BC9D,
0x1BC9F,
0x1BCA0,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -270282,11 +277686,13 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
0x1D1AE,
0x1D1BB,
0x1D1C1,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -270345,16 +277751,18 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -270368,27 +277776,23 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -270403,7 +277807,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
- 705, /* Number of elements */
+ 723, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -270496,7 +277900,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
0x610,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x66A,
0x66E,
@@ -270518,6 +277922,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
0x83F,
0x85E,
0x85F,
+ 0x888,
+ 0x889,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0x964,
@@ -270627,7 +278035,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
0x1B5A,
0x1B6B,
0x1B74,
- 0x1B7D,
+ 0x1B7F,
0x1BFC,
0x1C00,
0x1C3B,
@@ -270665,7 +278073,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
0x20A0,
0x20A8,
0x20A9,
- 0x20C0,
+ 0x20C1,
0x20DD,
0x20E1,
0x20E2,
@@ -270727,7 +278135,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
0x2D70,
0x2D71,
0x2E00,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -270809,11 +278217,13 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
0xABEB,
0xABEC,
0xFBB2,
- 0xFBC2,
+ 0xFBC3,
0xFD3E,
- 0xFD40,
+ 0xFD50,
+ 0xFDCF,
+ 0xFDD0,
0xFDFD,
- 0xFDFE,
+ 0xFE00,
0xFE45,
0xFE47,
0xFFF9,
@@ -270894,6 +278304,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
0x10F27,
0x10F51,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x10FC5,
0x10FCC,
0x11047,
@@ -270936,6 +278348,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
0x11644,
0x11660,
0x1166D,
+ 0x116B9,
+ 0x116BA,
0x1173A,
0x11740,
0x1183B,
@@ -270952,6 +278366,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
0x11A9D,
0x11A9E,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C41,
0x11C46,
0x11C5A,
@@ -270960,14 +278376,18 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F50,
0x11FC0,
0x11FF2,
0x11FFF,
0x12000,
0x12470,
0x12475,
+ 0x12FF1,
+ 0x12FF3,
0x13430,
- 0x13439,
+ 0x13440,
0x16A6E,
0x16A70,
0x16AF5,
@@ -270986,6 +278406,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
0x1BC9D,
0x1BC9F,
0x1BCA0,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -271001,11 +278423,13 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
0x1D1AE,
0x1D1BB,
0x1D1C1,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -271064,16 +278488,18 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -271087,27 +278513,23 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -271122,7 +278544,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
- 703, /* Number of elements */
+ 721, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -271213,7 +278635,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
0x610,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x66A,
0x66E,
@@ -271235,6 +278657,10 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
0x83F,
0x85E,
0x85F,
+ 0x888,
+ 0x889,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0x964,
@@ -271344,7 +278770,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
0x1B5A,
0x1B6B,
0x1B74,
- 0x1B7D,
+ 0x1B7F,
0x1BFC,
0x1C00,
0x1C3B,
@@ -271382,7 +278808,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
0x20A0,
0x20A8,
0x20A9,
- 0x20C0,
+ 0x20C1,
0x20DD,
0x20E1,
0x20E2,
@@ -271444,7 +278870,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
0x2D70,
0x2D71,
0x2E00,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -271526,11 +278952,13 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
0xABEB,
0xABEC,
0xFBB2,
- 0xFBC2,
+ 0xFBC3,
0xFD3E,
- 0xFD40,
+ 0xFD50,
+ 0xFDCF,
+ 0xFDD0,
0xFDFD,
- 0xFDFE,
+ 0xFE00,
0xFE45,
0xFE47,
0xFFF9,
@@ -271611,6 +279039,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
0x10F27,
0x10F51,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x10FC5,
0x10FCC,
0x11047,
@@ -271653,6 +279083,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
0x11644,
0x11660,
0x1166D,
+ 0x116B9,
+ 0x116BA,
0x1173A,
0x11740,
0x1183B,
@@ -271669,6 +279101,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
0x11A9D,
0x11A9E,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C41,
0x11C46,
0x11C5A,
@@ -271677,14 +279111,18 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F50,
0x11FC0,
0x11FF2,
0x11FFF,
0x12000,
0x12470,
0x12475,
+ 0x12FF1,
+ 0x12FF3,
0x13430,
- 0x13439,
+ 0x13440,
0x16A6E,
0x16A70,
0x16AF5,
@@ -271703,6 +279141,8 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
0x1BC9D,
0x1BC9F,
0x1BCA0,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -271718,11 +279158,13 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
0x1D1AE,
0x1D1BB,
0x1D1C1,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -271781,16 +279223,18 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -271804,27 +279248,23 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -271834,7 +279274,7 @@ static const UV UNI_IDENTIFIERTYPE__NOTXID_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_IDENTIFIERTYPE__OBSOLETE_invlist[] = { /* for all charsets */
- 207, /* Number of elements */
+ 209, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -271989,6 +279429,8 @@ static const UV UNI_IDENTIFIERTYPE__OBSOLETE_invlist[] = { /* for all charsets
0x3030,
0x312E,
0x312F,
+ 0x31F0,
+ 0x3200,
0xA610,
0xA613,
0xA62A,
@@ -272050,7 +279492,7 @@ static const UV UNI_IDENTIFIERTYPE__OBSOLETE_invlist[] = { /* for all charsets
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Latin1 */
- 733, /* Number of elements */
+ 771, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -272183,12 +279625,16 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati
0x700,
0x750,
0x7B2,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
0x8AD,
0x8B2,
0x8B3,
- 0x8B6,
- 0x8C8,
+ 0x8B5,
+ 0x8CA,
0x901,
0x94E,
0x94F,
@@ -272357,7 +279803,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati
0xC34,
0xC35,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -272365,6 +279811,8 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati
0xC4E,
0xC55,
0xC57,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC66,
@@ -272391,12 +279839,14 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati
0xCCE,
0xCD5,
0xCD7,
+ 0xCDD,
+ 0xCDE,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD01,
0xD02,
@@ -272474,7 +279924,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDE,
@@ -272586,7 +280036,9 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati
0x17A9,
0x17B4,
0x17B6,
- 0x17CB,
+ 0x17CE,
+ 0x17D0,
+ 0x17D1,
0x17D2,
0x17D3,
0x17D7,
@@ -272710,7 +280162,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
+ 0xA000,
0xA67F,
0xA680,
0xA717,
@@ -272727,8 +280179,14 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati
0xA7AF,
0xA7B8,
0xA7BA,
- 0xA7C2,
+ 0xA7C0,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
0xA9E7,
0xA9FF,
0xAA60,
@@ -272771,14 +280229,34 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati
0x1133D,
0x16FF0,
0x16FF2,
+ 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E08F,
+ 0x1E090,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -272786,7 +280264,9 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati
0x2CEB0,
0x2EBE1,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* ASCII/Latin1 */
@@ -272797,7 +280277,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for ASCII/Lati
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 1047 */
- 763, /* Number of elements */
+ 801, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -272960,12 +280440,16 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104
0x700,
0x750,
0x7B2,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
0x8AD,
0x8B2,
0x8B3,
- 0x8B6,
- 0x8C8,
+ 0x8B5,
+ 0x8CA,
0x901,
0x94E,
0x94F,
@@ -273134,7 +280618,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104
0xC34,
0xC35,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -273142,6 +280626,8 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104
0xC4E,
0xC55,
0xC57,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC66,
@@ -273168,12 +280654,14 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104
0xCCE,
0xCD5,
0xCD7,
+ 0xCDD,
+ 0xCDE,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD01,
0xD02,
@@ -273251,7 +280739,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDE,
@@ -273363,7 +280851,9 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104
0x17A9,
0x17B4,
0x17B6,
- 0x17CB,
+ 0x17CE,
+ 0x17D0,
+ 0x17D1,
0x17D2,
0x17D3,
0x17D7,
@@ -273487,7 +280977,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
+ 0xA000,
0xA67F,
0xA680,
0xA717,
@@ -273504,8 +280994,14 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104
0xA7AF,
0xA7B8,
0xA7BA,
- 0xA7C2,
+ 0xA7C0,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
0xA9E7,
0xA9FF,
0xAA60,
@@ -273548,14 +281044,34 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104
0x1133D,
0x16FF0,
0x16FF2,
+ 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E08F,
+ 0x1E090,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -273563,7 +281079,9 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104
0x2CEB0,
0x2EBE1,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 1047 */
@@ -273574,7 +281092,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 104
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037 */
- 759, /* Number of elements */
+ 797, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -273733,12 +281251,16 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037
0x700,
0x750,
0x7B2,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
0x8AD,
0x8B2,
0x8B3,
- 0x8B6,
- 0x8C8,
+ 0x8B5,
+ 0x8CA,
0x901,
0x94E,
0x94F,
@@ -273907,7 +281429,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037
0xC34,
0xC35,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -273915,6 +281437,8 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037
0xC4E,
0xC55,
0xC57,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC66,
@@ -273941,12 +281465,14 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037
0xCCE,
0xCD5,
0xCD7,
+ 0xCDD,
+ 0xCDE,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD01,
0xD02,
@@ -274024,7 +281550,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDE,
@@ -274136,7 +281662,9 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037
0x17A9,
0x17B4,
0x17B6,
- 0x17CB,
+ 0x17CE,
+ 0x17D0,
+ 0x17D1,
0x17D2,
0x17D3,
0x17D7,
@@ -274260,7 +281788,7 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
+ 0xA000,
0xA67F,
0xA680,
0xA717,
@@ -274277,8 +281805,14 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037
0xA7AF,
0xA7B8,
0xA7BA,
- 0xA7C2,
+ 0xA7C0,
0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
0xA9E7,
0xA9FF,
0xAA60,
@@ -274321,14 +281855,34 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037
0x1133D,
0x16FF0,
0x16FF2,
+ 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E08F,
+ 0x1E090,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -274336,13 +281890,15 @@ static const UV UNI_IDENTIFIERTYPE__RECOMMENDED_invlist[] = { /* for EBCDIC 037
0x2CEB0,
0x2EBE1,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 037 */
static const UV UNI_IDENTIFIERTYPE__TECHNICAL_invlist[] = { /* for all charsets */
- 191, /* Number of elements */
+ 199, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -274431,12 +281987,16 @@ static const UV UNI_IDENTIFIERTYPE__TECHNICAL_invlist[] = { /* for all charsets
0xDF4,
0xF18,
0xF1A,
- 0x17CB,
+ 0x17CE,
+ 0x17D0,
+ 0x17D1,
0x17D2,
0x17DD,
0x17DE,
0x1ABF,
0x1AC1,
+ 0x1B6B,
+ 0x1B74,
0x1D00,
0x1D2C,
0x1D2F,
@@ -274450,8 +282010,6 @@ static const UV UNI_IDENTIFIERTYPE__TECHNICAL_invlist[] = { /* for all charsets
0x1D79,
0x1D9B,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x1E9C,
0x1E9E,
@@ -274487,8 +282045,6 @@ static const UV UNI_IDENTIFIERTYPE__TECHNICAL_invlist[] = { /* for all charsets
0x3036,
0x303B,
0x303D,
- 0x31F0,
- 0x3200,
0x327F,
0x3280,
0x4DC0,
@@ -274510,17 +282066,25 @@ static const UV UNI_IDENTIFIERTYPE__TECHNICAL_invlist[] = { /* for all charsets
0xFB1E,
0xFB1F,
0xFBB2,
- 0xFBC2,
+ 0xFBC3,
0xFD3E,
- 0xFD40,
+ 0xFD50,
+ 0xFDCF,
+ 0xFDD0,
0xFDFD,
- 0xFDFE,
+ 0xFE00,
0xFE20,
0xFE30,
0xFE45,
0xFE47,
0xFE73,
0xFE74,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -274532,7 +282096,7 @@ static const UV UNI_IDENTIFIERTYPE__TECHNICAL_invlist[] = { /* for all charsets
0x1D17B,
0x1D1BB,
0x1D1C1,
- 0x1D1E9,
+ 0x1D1EB,
0x1D242,
0x1D245,
0x1D300,
@@ -274540,7 +282104,7 @@ static const UV UNI_IDENTIFIERTYPE__TECHNICAL_invlist[] = { /* for all charsets
};
static const UV UNI_IDENTIFIERTYPE__UNCOMMONUSE_invlist[] = { /* for all charsets */
- 153, /* Number of elements */
+ 167, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -274623,9 +282187,11 @@ static const UV UNI_IDENTIFIERTYPE__UNCOMMONUSE_invlist[] = { /* for all charse
0x6E9,
0x6EA,
0x6EE,
+ 0x898,
+ 0x8A0,
0x8B3,
0x8B5,
- 0x8D3,
+ 0x8CA,
0x8E2,
0x8E3,
0x901,
@@ -274661,6 +282227,8 @@ static const UV UNI_IDENTIFIERTYPE__UNCOMMONUSE_invlist[] = { /* for all charse
0xF3A,
0x18A9,
0x18AA,
+ 0x1AC1,
+ 0x1ACF,
0x2054,
0x2055,
0x218A,
@@ -274689,10 +282257,20 @@ static const UV UNI_IDENTIFIERTYPE__UNCOMMONUSE_invlist[] = { /* for all charse
0xFB1F,
0xFE2E,
0xFE30,
+ 0x10780,
+ 0x10781,
+ 0x10EFD,
+ 0x10F00,
0x16A40,
0x16A5F,
0x16A60,
0x16A6A,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1D1DE,
0x1D1E9,
0x1F54F,
@@ -274700,7 +282278,7 @@ static const UV UNI_IDENTIFIERTYPE__UNCOMMONUSE_invlist[] = { /* for all charse
};
static const UV UNI_IDEO_invlist[] = { /* for all charsets */
- 39, /* Number of elements */
+ 41, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -274714,7 +282292,7 @@ static const UV UNI_IDEO_invlist[] = { /* for all charsets */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
+ 0xA000,
0xF900,
0xFA6E,
0xFA70,
@@ -274730,9 +282308,9 @@ static const UV UNI_IDEO_invlist[] = { /* for all charsets */
0x1B170,
0x1B2FC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -274742,7 +282320,9 @@ static const UV UNI_IDEO_invlist[] = { /* for all charsets */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
static const UV UNI_IDEOGRAPHICSYMBOLS_invlist[] = { /* for all charsets */
@@ -274758,7 +282338,7 @@ static const UV UNI_IDEOGRAPHICSYMBOLS_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
- 1245, /* Number of elements */
+ 1319, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -274861,10 +282441,12 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -274993,6 +282575,8 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -275009,7 +282593,7 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -275152,10 +282736,8 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -275196,7 +282778,7 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -275296,10 +282878,6 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -275360,8 +282938,6 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -275382,10 +282958,14 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -275563,12 +283143,34 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -275639,12 +283241,18 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -275671,6 +283279,8 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -275727,6 +283337,8 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -275765,7 +283377,7 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -275793,6 +283405,12 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
@@ -275801,14 +283419,20 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -275837,10 +283461,20 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -275913,14 +283547,32 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -275994,9 +283646,9 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -276006,7 +283658,9 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* ASCII/Latin1 */
@@ -276017,7 +283671,7 @@ static const UV UNI_IDS_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
- 1271, /* Number of elements */
+ 1345, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -276146,10 +283800,12 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -276278,6 +283934,8 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -276294,7 +283952,7 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -276437,10 +284095,8 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -276481,7 +284137,7 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -276581,10 +284237,6 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -276645,8 +284297,6 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -276667,10 +284317,14 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -276848,12 +284502,34 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -276924,12 +284600,18 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -276956,6 +284638,8 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -277012,6 +284696,8 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -277050,7 +284736,7 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -277078,6 +284764,12 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
@@ -277086,14 +284778,20 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -277122,10 +284820,20 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -277198,14 +284906,32 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -277279,9 +285005,9 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -277291,7 +285017,9 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 1047 */
@@ -277302,7 +285030,7 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
- 1267, /* Number of elements */
+ 1341, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -277427,10 +285155,12 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -277559,6 +285289,8 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -277575,7 +285307,7 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -277718,10 +285450,8 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -277762,7 +285492,7 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -277862,10 +285592,6 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -277926,8 +285652,6 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -277948,10 +285672,14 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -278129,12 +285857,34 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -278205,12 +285955,18 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -278237,6 +285993,8 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -278293,6 +286051,8 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -278331,7 +286091,7 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -278359,6 +286119,12 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
@@ -278367,14 +286133,20 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -278403,10 +286175,20 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -278479,14 +286261,32 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -278560,9 +286360,9 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -278572,7 +286372,9 @@ static const UV UNI_IDS_invlist[] = { /* for EBCDIC 037 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 037 */
@@ -285949,6 +293751,2862 @@ static const UV UNI_IN__13_invlist[] = { /* for all charsets */
0x110000
};
+static const UV UNI_IN__14_invlist[] = { /* for all charsets */
+ 1412, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 0, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x378,
+ 0x37A,
+ 0x380,
+ 0x384,
+ 0x38B,
+ 0x38C,
+ 0x38D,
+ 0x38E,
+ 0x3A2,
+ 0x3A3,
+ 0x530,
+ 0x531,
+ 0x557,
+ 0x559,
+ 0x58B,
+ 0x58D,
+ 0x590,
+ 0x591,
+ 0x5C8,
+ 0x5D0,
+ 0x5EB,
+ 0x5EF,
+ 0x5F5,
+ 0x600,
+ 0x70E,
+ 0x70F,
+ 0x74B,
+ 0x74D,
+ 0x7B2,
+ 0x7C0,
+ 0x7FB,
+ 0x7FD,
+ 0x82E,
+ 0x830,
+ 0x83F,
+ 0x840,
+ 0x85C,
+ 0x85E,
+ 0x85F,
+ 0x860,
+ 0x86B,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
+ 0x984,
+ 0x985,
+ 0x98D,
+ 0x98F,
+ 0x991,
+ 0x993,
+ 0x9A9,
+ 0x9AA,
+ 0x9B1,
+ 0x9B2,
+ 0x9B3,
+ 0x9B6,
+ 0x9BA,
+ 0x9BC,
+ 0x9C5,
+ 0x9C7,
+ 0x9C9,
+ 0x9CB,
+ 0x9CF,
+ 0x9D7,
+ 0x9D8,
+ 0x9DC,
+ 0x9DE,
+ 0x9DF,
+ 0x9E4,
+ 0x9E6,
+ 0x9FF,
+ 0xA01,
+ 0xA04,
+ 0xA05,
+ 0xA0B,
+ 0xA0F,
+ 0xA11,
+ 0xA13,
+ 0xA29,
+ 0xA2A,
+ 0xA31,
+ 0xA32,
+ 0xA34,
+ 0xA35,
+ 0xA37,
+ 0xA38,
+ 0xA3A,
+ 0xA3C,
+ 0xA3D,
+ 0xA3E,
+ 0xA43,
+ 0xA47,
+ 0xA49,
+ 0xA4B,
+ 0xA4E,
+ 0xA51,
+ 0xA52,
+ 0xA59,
+ 0xA5D,
+ 0xA5E,
+ 0xA5F,
+ 0xA66,
+ 0xA77,
+ 0xA81,
+ 0xA84,
+ 0xA85,
+ 0xA8E,
+ 0xA8F,
+ 0xA92,
+ 0xA93,
+ 0xAA9,
+ 0xAAA,
+ 0xAB1,
+ 0xAB2,
+ 0xAB4,
+ 0xAB5,
+ 0xABA,
+ 0xABC,
+ 0xAC6,
+ 0xAC7,
+ 0xACA,
+ 0xACB,
+ 0xACE,
+ 0xAD0,
+ 0xAD1,
+ 0xAE0,
+ 0xAE4,
+ 0xAE6,
+ 0xAF2,
+ 0xAF9,
+ 0xB00,
+ 0xB01,
+ 0xB04,
+ 0xB05,
+ 0xB0D,
+ 0xB0F,
+ 0xB11,
+ 0xB13,
+ 0xB29,
+ 0xB2A,
+ 0xB31,
+ 0xB32,
+ 0xB34,
+ 0xB35,
+ 0xB3A,
+ 0xB3C,
+ 0xB45,
+ 0xB47,
+ 0xB49,
+ 0xB4B,
+ 0xB4E,
+ 0xB55,
+ 0xB58,
+ 0xB5C,
+ 0xB5E,
+ 0xB5F,
+ 0xB64,
+ 0xB66,
+ 0xB78,
+ 0xB82,
+ 0xB84,
+ 0xB85,
+ 0xB8B,
+ 0xB8E,
+ 0xB91,
+ 0xB92,
+ 0xB96,
+ 0xB99,
+ 0xB9B,
+ 0xB9C,
+ 0xB9D,
+ 0xB9E,
+ 0xBA0,
+ 0xBA3,
+ 0xBA5,
+ 0xBA8,
+ 0xBAB,
+ 0xBAE,
+ 0xBBA,
+ 0xBBE,
+ 0xBC3,
+ 0xBC6,
+ 0xBC9,
+ 0xBCA,
+ 0xBCE,
+ 0xBD0,
+ 0xBD1,
+ 0xBD7,
+ 0xBD8,
+ 0xBE6,
+ 0xBFB,
+ 0xC00,
+ 0xC0D,
+ 0xC0E,
+ 0xC11,
+ 0xC12,
+ 0xC29,
+ 0xC2A,
+ 0xC3A,
+ 0xC3C,
+ 0xC45,
+ 0xC46,
+ 0xC49,
+ 0xC4A,
+ 0xC4E,
+ 0xC55,
+ 0xC57,
+ 0xC58,
+ 0xC5B,
+ 0xC5D,
+ 0xC5E,
+ 0xC60,
+ 0xC64,
+ 0xC66,
+ 0xC70,
+ 0xC77,
+ 0xC8D,
+ 0xC8E,
+ 0xC91,
+ 0xC92,
+ 0xCA9,
+ 0xCAA,
+ 0xCB4,
+ 0xCB5,
+ 0xCBA,
+ 0xCBC,
+ 0xCC5,
+ 0xCC6,
+ 0xCC9,
+ 0xCCA,
+ 0xCCE,
+ 0xCD5,
+ 0xCD7,
+ 0xCDD,
+ 0xCDF,
+ 0xCE0,
+ 0xCE4,
+ 0xCE6,
+ 0xCF0,
+ 0xCF1,
+ 0xCF3,
+ 0xD00,
+ 0xD0D,
+ 0xD0E,
+ 0xD11,
+ 0xD12,
+ 0xD45,
+ 0xD46,
+ 0xD49,
+ 0xD4A,
+ 0xD50,
+ 0xD54,
+ 0xD64,
+ 0xD66,
+ 0xD80,
+ 0xD81,
+ 0xD84,
+ 0xD85,
+ 0xD97,
+ 0xD9A,
+ 0xDB2,
+ 0xDB3,
+ 0xDBC,
+ 0xDBD,
+ 0xDBE,
+ 0xDC0,
+ 0xDC7,
+ 0xDCA,
+ 0xDCB,
+ 0xDCF,
+ 0xDD5,
+ 0xDD6,
+ 0xDD7,
+ 0xDD8,
+ 0xDE0,
+ 0xDE6,
+ 0xDF0,
+ 0xDF2,
+ 0xDF5,
+ 0xE01,
+ 0xE3B,
+ 0xE3F,
+ 0xE5C,
+ 0xE81,
+ 0xE83,
+ 0xE84,
+ 0xE85,
+ 0xE86,
+ 0xE8B,
+ 0xE8C,
+ 0xEA4,
+ 0xEA5,
+ 0xEA6,
+ 0xEA7,
+ 0xEBE,
+ 0xEC0,
+ 0xEC5,
+ 0xEC6,
+ 0xEC7,
+ 0xEC8,
+ 0xECE,
+ 0xED0,
+ 0xEDA,
+ 0xEDC,
+ 0xEE0,
+ 0xF00,
+ 0xF48,
+ 0xF49,
+ 0xF6D,
+ 0xF71,
+ 0xF98,
+ 0xF99,
+ 0xFBD,
+ 0xFBE,
+ 0xFCD,
+ 0xFCE,
+ 0xFDB,
+ 0x1000,
+ 0x10C6,
+ 0x10C7,
+ 0x10C8,
+ 0x10CD,
+ 0x10CE,
+ 0x10D0,
+ 0x1249,
+ 0x124A,
+ 0x124E,
+ 0x1250,
+ 0x1257,
+ 0x1258,
+ 0x1259,
+ 0x125A,
+ 0x125E,
+ 0x1260,
+ 0x1289,
+ 0x128A,
+ 0x128E,
+ 0x1290,
+ 0x12B1,
+ 0x12B2,
+ 0x12B6,
+ 0x12B8,
+ 0x12BF,
+ 0x12C0,
+ 0x12C1,
+ 0x12C2,
+ 0x12C6,
+ 0x12C8,
+ 0x12D7,
+ 0x12D8,
+ 0x1311,
+ 0x1312,
+ 0x1316,
+ 0x1318,
+ 0x135B,
+ 0x135D,
+ 0x137D,
+ 0x1380,
+ 0x139A,
+ 0x13A0,
+ 0x13F6,
+ 0x13F8,
+ 0x13FE,
+ 0x1400,
+ 0x169D,
+ 0x16A0,
+ 0x16F9,
+ 0x1700,
+ 0x1716,
+ 0x171F,
+ 0x1737,
+ 0x1740,
+ 0x1754,
+ 0x1760,
+ 0x176D,
+ 0x176E,
+ 0x1771,
+ 0x1772,
+ 0x1774,
+ 0x1780,
+ 0x17DE,
+ 0x17E0,
+ 0x17EA,
+ 0x17F0,
+ 0x17FA,
+ 0x1800,
+ 0x181A,
+ 0x1820,
+ 0x1879,
+ 0x1880,
+ 0x18AB,
+ 0x18B0,
+ 0x18F6,
+ 0x1900,
+ 0x191F,
+ 0x1920,
+ 0x192C,
+ 0x1930,
+ 0x193C,
+ 0x1940,
+ 0x1941,
+ 0x1944,
+ 0x196E,
+ 0x1970,
+ 0x1975,
+ 0x1980,
+ 0x19AC,
+ 0x19B0,
+ 0x19CA,
+ 0x19D0,
+ 0x19DB,
+ 0x19DE,
+ 0x1A1C,
+ 0x1A1E,
+ 0x1A5F,
+ 0x1A60,
+ 0x1A7D,
+ 0x1A7F,
+ 0x1A8A,
+ 0x1A90,
+ 0x1A9A,
+ 0x1AA0,
+ 0x1AAE,
+ 0x1AB0,
+ 0x1ACF,
+ 0x1B00,
+ 0x1B4D,
+ 0x1B50,
+ 0x1B7F,
+ 0x1B80,
+ 0x1BF4,
+ 0x1BFC,
+ 0x1C38,
+ 0x1C3B,
+ 0x1C4A,
+ 0x1C4D,
+ 0x1C89,
+ 0x1C90,
+ 0x1CBB,
+ 0x1CBD,
+ 0x1CC8,
+ 0x1CD0,
+ 0x1CFB,
+ 0x1D00,
+ 0x1F16,
+ 0x1F18,
+ 0x1F1E,
+ 0x1F20,
+ 0x1F46,
+ 0x1F48,
+ 0x1F4E,
+ 0x1F50,
+ 0x1F58,
+ 0x1F59,
+ 0x1F5A,
+ 0x1F5B,
+ 0x1F5C,
+ 0x1F5D,
+ 0x1F5E,
+ 0x1F5F,
+ 0x1F7E,
+ 0x1F80,
+ 0x1FB5,
+ 0x1FB6,
+ 0x1FC5,
+ 0x1FC6,
+ 0x1FD4,
+ 0x1FD6,
+ 0x1FDC,
+ 0x1FDD,
+ 0x1FF0,
+ 0x1FF2,
+ 0x1FF5,
+ 0x1FF6,
+ 0x1FFF,
+ 0x2000,
+ 0x2065,
+ 0x2066,
+ 0x2072,
+ 0x2074,
+ 0x208F,
+ 0x2090,
+ 0x209D,
+ 0x20A0,
+ 0x20C1,
+ 0x20D0,
+ 0x20F1,
+ 0x2100,
+ 0x218C,
+ 0x2190,
+ 0x2427,
+ 0x2440,
+ 0x244B,
+ 0x2460,
+ 0x2B74,
+ 0x2B76,
+ 0x2B96,
+ 0x2B97,
+ 0x2CF4,
+ 0x2CF9,
+ 0x2D26,
+ 0x2D27,
+ 0x2D28,
+ 0x2D2D,
+ 0x2D2E,
+ 0x2D30,
+ 0x2D68,
+ 0x2D6F,
+ 0x2D71,
+ 0x2D7F,
+ 0x2D97,
+ 0x2DA0,
+ 0x2DA7,
+ 0x2DA8,
+ 0x2DAF,
+ 0x2DB0,
+ 0x2DB7,
+ 0x2DB8,
+ 0x2DBF,
+ 0x2DC0,
+ 0x2DC7,
+ 0x2DC8,
+ 0x2DCF,
+ 0x2DD0,
+ 0x2DD7,
+ 0x2DD8,
+ 0x2DDF,
+ 0x2DE0,
+ 0x2E5E,
+ 0x2E80,
+ 0x2E9A,
+ 0x2E9B,
+ 0x2EF4,
+ 0x2F00,
+ 0x2FD6,
+ 0x2FF0,
+ 0x2FFC,
+ 0x3000,
+ 0x3040,
+ 0x3041,
+ 0x3097,
+ 0x3099,
+ 0x3100,
+ 0x3105,
+ 0x3130,
+ 0x3131,
+ 0x318F,
+ 0x3190,
+ 0x31E4,
+ 0x31F0,
+ 0x321F,
+ 0x3220,
+ 0xA48D,
+ 0xA490,
+ 0xA4C7,
+ 0xA4D0,
+ 0xA62C,
+ 0xA640,
+ 0xA6F8,
+ 0xA700,
+ 0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
+ 0xA82D,
+ 0xA830,
+ 0xA83A,
+ 0xA840,
+ 0xA878,
+ 0xA880,
+ 0xA8C6,
+ 0xA8CE,
+ 0xA8DA,
+ 0xA8E0,
+ 0xA954,
+ 0xA95F,
+ 0xA97D,
+ 0xA980,
+ 0xA9CE,
+ 0xA9CF,
+ 0xA9DA,
+ 0xA9DE,
+ 0xA9FF,
+ 0xAA00,
+ 0xAA37,
+ 0xAA40,
+ 0xAA4E,
+ 0xAA50,
+ 0xAA5A,
+ 0xAA5C,
+ 0xAAC3,
+ 0xAADB,
+ 0xAAF7,
+ 0xAB01,
+ 0xAB07,
+ 0xAB09,
+ 0xAB0F,
+ 0xAB11,
+ 0xAB17,
+ 0xAB20,
+ 0xAB27,
+ 0xAB28,
+ 0xAB2F,
+ 0xAB30,
+ 0xAB6C,
+ 0xAB70,
+ 0xABEE,
+ 0xABF0,
+ 0xABFA,
+ 0xAC00,
+ 0xD7A4,
+ 0xD7B0,
+ 0xD7C7,
+ 0xD7CB,
+ 0xD7FC,
+ 0xD800,
+ 0xFA6E,
+ 0xFA70,
+ 0xFADA,
+ 0xFB00,
+ 0xFB07,
+ 0xFB13,
+ 0xFB18,
+ 0xFB1D,
+ 0xFB37,
+ 0xFB38,
+ 0xFB3D,
+ 0xFB3E,
+ 0xFB3F,
+ 0xFB40,
+ 0xFB42,
+ 0xFB43,
+ 0xFB45,
+ 0xFB46,
+ 0xFBC3,
+ 0xFBD3,
+ 0xFD90,
+ 0xFD92,
+ 0xFDC8,
+ 0xFDCF,
+ 0xFE1A,
+ 0xFE20,
+ 0xFE53,
+ 0xFE54,
+ 0xFE67,
+ 0xFE68,
+ 0xFE6C,
+ 0xFE70,
+ 0xFE75,
+ 0xFE76,
+ 0xFEFD,
+ 0xFEFF,
+ 0xFF00,
+ 0xFF01,
+ 0xFFBF,
+ 0xFFC2,
+ 0xFFC8,
+ 0xFFCA,
+ 0xFFD0,
+ 0xFFD2,
+ 0xFFD8,
+ 0xFFDA,
+ 0xFFDD,
+ 0xFFE0,
+ 0xFFE7,
+ 0xFFE8,
+ 0xFFEF,
+ 0xFFF9,
+ 0x1000C,
+ 0x1000D,
+ 0x10027,
+ 0x10028,
+ 0x1003B,
+ 0x1003C,
+ 0x1003E,
+ 0x1003F,
+ 0x1004E,
+ 0x10050,
+ 0x1005E,
+ 0x10080,
+ 0x100FB,
+ 0x10100,
+ 0x10103,
+ 0x10107,
+ 0x10134,
+ 0x10137,
+ 0x1018F,
+ 0x10190,
+ 0x1019D,
+ 0x101A0,
+ 0x101A1,
+ 0x101D0,
+ 0x101FE,
+ 0x10280,
+ 0x1029D,
+ 0x102A0,
+ 0x102D1,
+ 0x102E0,
+ 0x102FC,
+ 0x10300,
+ 0x10324,
+ 0x1032D,
+ 0x1034B,
+ 0x10350,
+ 0x1037B,
+ 0x10380,
+ 0x1039E,
+ 0x1039F,
+ 0x103C4,
+ 0x103C8,
+ 0x103D6,
+ 0x10400,
+ 0x1049E,
+ 0x104A0,
+ 0x104AA,
+ 0x104B0,
+ 0x104D4,
+ 0x104D8,
+ 0x104FC,
+ 0x10500,
+ 0x10528,
+ 0x10530,
+ 0x10564,
+ 0x1056F,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
+ 0x10600,
+ 0x10737,
+ 0x10740,
+ 0x10756,
+ 0x10760,
+ 0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
+ 0x10800,
+ 0x10806,
+ 0x10808,
+ 0x10809,
+ 0x1080A,
+ 0x10836,
+ 0x10837,
+ 0x10839,
+ 0x1083C,
+ 0x1083D,
+ 0x1083F,
+ 0x10856,
+ 0x10857,
+ 0x1089F,
+ 0x108A7,
+ 0x108B0,
+ 0x108E0,
+ 0x108F3,
+ 0x108F4,
+ 0x108F6,
+ 0x108FB,
+ 0x1091C,
+ 0x1091F,
+ 0x1093A,
+ 0x1093F,
+ 0x10940,
+ 0x10980,
+ 0x109B8,
+ 0x109BC,
+ 0x109D0,
+ 0x109D2,
+ 0x10A04,
+ 0x10A05,
+ 0x10A07,
+ 0x10A0C,
+ 0x10A14,
+ 0x10A15,
+ 0x10A18,
+ 0x10A19,
+ 0x10A36,
+ 0x10A38,
+ 0x10A3B,
+ 0x10A3F,
+ 0x10A49,
+ 0x10A50,
+ 0x10A59,
+ 0x10A60,
+ 0x10AA0,
+ 0x10AC0,
+ 0x10AE7,
+ 0x10AEB,
+ 0x10AF7,
+ 0x10B00,
+ 0x10B36,
+ 0x10B39,
+ 0x10B56,
+ 0x10B58,
+ 0x10B73,
+ 0x10B78,
+ 0x10B92,
+ 0x10B99,
+ 0x10B9D,
+ 0x10BA9,
+ 0x10BB0,
+ 0x10C00,
+ 0x10C49,
+ 0x10C80,
+ 0x10CB3,
+ 0x10CC0,
+ 0x10CF3,
+ 0x10CFA,
+ 0x10D28,
+ 0x10D30,
+ 0x10D3A,
+ 0x10E60,
+ 0x10E7F,
+ 0x10E80,
+ 0x10EAA,
+ 0x10EAB,
+ 0x10EAE,
+ 0x10EB0,
+ 0x10EB2,
+ 0x10F00,
+ 0x10F28,
+ 0x10F30,
+ 0x10F5A,
+ 0x10F70,
+ 0x10F8A,
+ 0x10FB0,
+ 0x10FCC,
+ 0x10FE0,
+ 0x10FF7,
+ 0x11000,
+ 0x1104E,
+ 0x11052,
+ 0x11076,
+ 0x1107F,
+ 0x110C3,
+ 0x110CD,
+ 0x110CE,
+ 0x110D0,
+ 0x110E9,
+ 0x110F0,
+ 0x110FA,
+ 0x11100,
+ 0x11135,
+ 0x11136,
+ 0x11148,
+ 0x11150,
+ 0x11177,
+ 0x11180,
+ 0x111E0,
+ 0x111E1,
+ 0x111F5,
+ 0x11200,
+ 0x11212,
+ 0x11213,
+ 0x1123F,
+ 0x11280,
+ 0x11287,
+ 0x11288,
+ 0x11289,
+ 0x1128A,
+ 0x1128E,
+ 0x1128F,
+ 0x1129E,
+ 0x1129F,
+ 0x112AA,
+ 0x112B0,
+ 0x112EB,
+ 0x112F0,
+ 0x112FA,
+ 0x11300,
+ 0x11304,
+ 0x11305,
+ 0x1130D,
+ 0x1130F,
+ 0x11311,
+ 0x11313,
+ 0x11329,
+ 0x1132A,
+ 0x11331,
+ 0x11332,
+ 0x11334,
+ 0x11335,
+ 0x1133A,
+ 0x1133B,
+ 0x11345,
+ 0x11347,
+ 0x11349,
+ 0x1134B,
+ 0x1134E,
+ 0x11350,
+ 0x11351,
+ 0x11357,
+ 0x11358,
+ 0x1135D,
+ 0x11364,
+ 0x11366,
+ 0x1136D,
+ 0x11370,
+ 0x11375,
+ 0x11400,
+ 0x1145C,
+ 0x1145D,
+ 0x11462,
+ 0x11480,
+ 0x114C8,
+ 0x114D0,
+ 0x114DA,
+ 0x11580,
+ 0x115B6,
+ 0x115B8,
+ 0x115DE,
+ 0x11600,
+ 0x11645,
+ 0x11650,
+ 0x1165A,
+ 0x11660,
+ 0x1166D,
+ 0x11680,
+ 0x116BA,
+ 0x116C0,
+ 0x116CA,
+ 0x11700,
+ 0x1171B,
+ 0x1171D,
+ 0x1172C,
+ 0x11730,
+ 0x11747,
+ 0x11800,
+ 0x1183C,
+ 0x118A0,
+ 0x118F3,
+ 0x118FF,
+ 0x11907,
+ 0x11909,
+ 0x1190A,
+ 0x1190C,
+ 0x11914,
+ 0x11915,
+ 0x11917,
+ 0x11918,
+ 0x11936,
+ 0x11937,
+ 0x11939,
+ 0x1193B,
+ 0x11947,
+ 0x11950,
+ 0x1195A,
+ 0x119A0,
+ 0x119A8,
+ 0x119AA,
+ 0x119D8,
+ 0x119DA,
+ 0x119E5,
+ 0x11A00,
+ 0x11A48,
+ 0x11A50,
+ 0x11AA3,
+ 0x11AB0,
+ 0x11AF9,
+ 0x11C00,
+ 0x11C09,
+ 0x11C0A,
+ 0x11C37,
+ 0x11C38,
+ 0x11C46,
+ 0x11C50,
+ 0x11C6D,
+ 0x11C70,
+ 0x11C90,
+ 0x11C92,
+ 0x11CA8,
+ 0x11CA9,
+ 0x11CB7,
+ 0x11D00,
+ 0x11D07,
+ 0x11D08,
+ 0x11D0A,
+ 0x11D0B,
+ 0x11D37,
+ 0x11D3A,
+ 0x11D3B,
+ 0x11D3C,
+ 0x11D3E,
+ 0x11D3F,
+ 0x11D48,
+ 0x11D50,
+ 0x11D5A,
+ 0x11D60,
+ 0x11D66,
+ 0x11D67,
+ 0x11D69,
+ 0x11D6A,
+ 0x11D8F,
+ 0x11D90,
+ 0x11D92,
+ 0x11D93,
+ 0x11D99,
+ 0x11DA0,
+ 0x11DAA,
+ 0x11EE0,
+ 0x11EF9,
+ 0x11FB0,
+ 0x11FB1,
+ 0x11FC0,
+ 0x11FF2,
+ 0x11FFF,
+ 0x1239A,
+ 0x12400,
+ 0x1246F,
+ 0x12470,
+ 0x12475,
+ 0x12480,
+ 0x12544,
+ 0x12F90,
+ 0x12FF3,
+ 0x13000,
+ 0x1342F,
+ 0x13430,
+ 0x13439,
+ 0x14400,
+ 0x14647,
+ 0x16800,
+ 0x16A39,
+ 0x16A40,
+ 0x16A5F,
+ 0x16A60,
+ 0x16A6A,
+ 0x16A6E,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
+ 0x16AD0,
+ 0x16AEE,
+ 0x16AF0,
+ 0x16AF6,
+ 0x16B00,
+ 0x16B46,
+ 0x16B50,
+ 0x16B5A,
+ 0x16B5B,
+ 0x16B62,
+ 0x16B63,
+ 0x16B78,
+ 0x16B7D,
+ 0x16B90,
+ 0x16E40,
+ 0x16E9B,
+ 0x16F00,
+ 0x16F4B,
+ 0x16F4F,
+ 0x16F88,
+ 0x16F8F,
+ 0x16FA0,
+ 0x16FE0,
+ 0x16FE5,
+ 0x16FF0,
+ 0x16FF2,
+ 0x17000,
+ 0x187F8,
+ 0x18800,
+ 0x18CD6,
+ 0x18D00,
+ 0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
+ 0x1B000,
+ 0x1B123,
+ 0x1B150,
+ 0x1B153,
+ 0x1B164,
+ 0x1B168,
+ 0x1B170,
+ 0x1B2FC,
+ 0x1BC00,
+ 0x1BC6B,
+ 0x1BC70,
+ 0x1BC7D,
+ 0x1BC80,
+ 0x1BC89,
+ 0x1BC90,
+ 0x1BC9A,
+ 0x1BC9C,
+ 0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
+ 0x1D000,
+ 0x1D0F6,
+ 0x1D100,
+ 0x1D127,
+ 0x1D129,
+ 0x1D1EB,
+ 0x1D200,
+ 0x1D246,
+ 0x1D2E0,
+ 0x1D2F4,
+ 0x1D300,
+ 0x1D357,
+ 0x1D360,
+ 0x1D379,
+ 0x1D400,
+ 0x1D455,
+ 0x1D456,
+ 0x1D49D,
+ 0x1D49E,
+ 0x1D4A0,
+ 0x1D4A2,
+ 0x1D4A3,
+ 0x1D4A5,
+ 0x1D4A7,
+ 0x1D4A9,
+ 0x1D4AD,
+ 0x1D4AE,
+ 0x1D4BA,
+ 0x1D4BB,
+ 0x1D4BC,
+ 0x1D4BD,
+ 0x1D4C4,
+ 0x1D4C5,
+ 0x1D506,
+ 0x1D507,
+ 0x1D50B,
+ 0x1D50D,
+ 0x1D515,
+ 0x1D516,
+ 0x1D51D,
+ 0x1D51E,
+ 0x1D53A,
+ 0x1D53B,
+ 0x1D53F,
+ 0x1D540,
+ 0x1D545,
+ 0x1D546,
+ 0x1D547,
+ 0x1D54A,
+ 0x1D551,
+ 0x1D552,
+ 0x1D6A6,
+ 0x1D6A8,
+ 0x1D7CC,
+ 0x1D7CE,
+ 0x1DA8C,
+ 0x1DA9B,
+ 0x1DAA0,
+ 0x1DAA1,
+ 0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1E000,
+ 0x1E007,
+ 0x1E008,
+ 0x1E019,
+ 0x1E01B,
+ 0x1E022,
+ 0x1E023,
+ 0x1E025,
+ 0x1E026,
+ 0x1E02B,
+ 0x1E100,
+ 0x1E12D,
+ 0x1E130,
+ 0x1E13E,
+ 0x1E140,
+ 0x1E14A,
+ 0x1E14E,
+ 0x1E150,
+ 0x1E290,
+ 0x1E2AF,
+ 0x1E2C0,
+ 0x1E2FA,
+ 0x1E2FF,
+ 0x1E300,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
+ 0x1E800,
+ 0x1E8C5,
+ 0x1E8C7,
+ 0x1E8D7,
+ 0x1E900,
+ 0x1E94C,
+ 0x1E950,
+ 0x1E95A,
+ 0x1E95E,
+ 0x1E960,
+ 0x1EC71,
+ 0x1ECB5,
+ 0x1ED01,
+ 0x1ED3E,
+ 0x1EE00,
+ 0x1EE04,
+ 0x1EE05,
+ 0x1EE20,
+ 0x1EE21,
+ 0x1EE23,
+ 0x1EE24,
+ 0x1EE25,
+ 0x1EE27,
+ 0x1EE28,
+ 0x1EE29,
+ 0x1EE33,
+ 0x1EE34,
+ 0x1EE38,
+ 0x1EE39,
+ 0x1EE3A,
+ 0x1EE3B,
+ 0x1EE3C,
+ 0x1EE42,
+ 0x1EE43,
+ 0x1EE47,
+ 0x1EE48,
+ 0x1EE49,
+ 0x1EE4A,
+ 0x1EE4B,
+ 0x1EE4C,
+ 0x1EE4D,
+ 0x1EE50,
+ 0x1EE51,
+ 0x1EE53,
+ 0x1EE54,
+ 0x1EE55,
+ 0x1EE57,
+ 0x1EE58,
+ 0x1EE59,
+ 0x1EE5A,
+ 0x1EE5B,
+ 0x1EE5C,
+ 0x1EE5D,
+ 0x1EE5E,
+ 0x1EE5F,
+ 0x1EE60,
+ 0x1EE61,
+ 0x1EE63,
+ 0x1EE64,
+ 0x1EE65,
+ 0x1EE67,
+ 0x1EE6B,
+ 0x1EE6C,
+ 0x1EE73,
+ 0x1EE74,
+ 0x1EE78,
+ 0x1EE79,
+ 0x1EE7D,
+ 0x1EE7E,
+ 0x1EE7F,
+ 0x1EE80,
+ 0x1EE8A,
+ 0x1EE8B,
+ 0x1EE9C,
+ 0x1EEA1,
+ 0x1EEA4,
+ 0x1EEA5,
+ 0x1EEAA,
+ 0x1EEAB,
+ 0x1EEBC,
+ 0x1EEF0,
+ 0x1EEF2,
+ 0x1F000,
+ 0x1F02C,
+ 0x1F030,
+ 0x1F094,
+ 0x1F0A0,
+ 0x1F0AF,
+ 0x1F0B1,
+ 0x1F0C0,
+ 0x1F0C1,
+ 0x1F0D0,
+ 0x1F0D1,
+ 0x1F0F6,
+ 0x1F100,
+ 0x1F1AE,
+ 0x1F1E6,
+ 0x1F203,
+ 0x1F210,
+ 0x1F23C,
+ 0x1F240,
+ 0x1F249,
+ 0x1F250,
+ 0x1F252,
+ 0x1F260,
+ 0x1F266,
+ 0x1F300,
+ 0x1F6D8,
+ 0x1F6DD,
+ 0x1F6ED,
+ 0x1F6F0,
+ 0x1F6FD,
+ 0x1F700,
+ 0x1F774,
+ 0x1F780,
+ 0x1F7D9,
+ 0x1F7E0,
+ 0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
+ 0x1F800,
+ 0x1F80C,
+ 0x1F810,
+ 0x1F848,
+ 0x1F850,
+ 0x1F85A,
+ 0x1F860,
+ 0x1F888,
+ 0x1F890,
+ 0x1F8AE,
+ 0x1F8B0,
+ 0x1F8B2,
+ 0x1F900,
+ 0x1FA54,
+ 0x1FA60,
+ 0x1FA6E,
+ 0x1FA70,
+ 0x1FA75,
+ 0x1FA78,
+ 0x1FA7D,
+ 0x1FA80,
+ 0x1FA87,
+ 0x1FA90,
+ 0x1FAAD,
+ 0x1FAB0,
+ 0x1FABB,
+ 0x1FAC0,
+ 0x1FAC6,
+ 0x1FAD0,
+ 0x1FADA,
+ 0x1FAE0,
+ 0x1FAE8,
+ 0x1FAF0,
+ 0x1FAF7,
+ 0x1FB00,
+ 0x1FB93,
+ 0x1FB94,
+ 0x1FBCB,
+ 0x1FBF0,
+ 0x1FBFA,
+ 0x1FFFE,
+ 0x2A6E0,
+ 0x2A700,
+ 0x2B739,
+ 0x2B740,
+ 0x2B81E,
+ 0x2B820,
+ 0x2CEA2,
+ 0x2CEB0,
+ 0x2EBE1,
+ 0x2F800,
+ 0x2FA1E,
+ 0x2FFFE,
+ 0x3134B,
+ 0x3FFFE,
+ 0x40000,
+ 0x4FFFE,
+ 0x50000,
+ 0x5FFFE,
+ 0x60000,
+ 0x6FFFE,
+ 0x70000,
+ 0x7FFFE,
+ 0x80000,
+ 0x8FFFE,
+ 0x90000,
+ 0x9FFFE,
+ 0xA0000,
+ 0xAFFFE,
+ 0xB0000,
+ 0xBFFFE,
+ 0xC0000,
+ 0xCFFFE,
+ 0xD0000,
+ 0xDFFFE,
+ 0xE0000,
+ 0xE0001,
+ 0xE0002,
+ 0xE0020,
+ 0xE0080,
+ 0xE0100,
+ 0xE01F0,
+ 0xEFFFE,
+ 0x110000
+};
+
+static const UV UNI_IN__15_invlist[] = { /* for all charsets */
+ 1430, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 0, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x378,
+ 0x37A,
+ 0x380,
+ 0x384,
+ 0x38B,
+ 0x38C,
+ 0x38D,
+ 0x38E,
+ 0x3A2,
+ 0x3A3,
+ 0x530,
+ 0x531,
+ 0x557,
+ 0x559,
+ 0x58B,
+ 0x58D,
+ 0x590,
+ 0x591,
+ 0x5C8,
+ 0x5D0,
+ 0x5EB,
+ 0x5EF,
+ 0x5F5,
+ 0x600,
+ 0x70E,
+ 0x70F,
+ 0x74B,
+ 0x74D,
+ 0x7B2,
+ 0x7C0,
+ 0x7FB,
+ 0x7FD,
+ 0x82E,
+ 0x830,
+ 0x83F,
+ 0x840,
+ 0x85C,
+ 0x85E,
+ 0x85F,
+ 0x860,
+ 0x86B,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
+ 0x984,
+ 0x985,
+ 0x98D,
+ 0x98F,
+ 0x991,
+ 0x993,
+ 0x9A9,
+ 0x9AA,
+ 0x9B1,
+ 0x9B2,
+ 0x9B3,
+ 0x9B6,
+ 0x9BA,
+ 0x9BC,
+ 0x9C5,
+ 0x9C7,
+ 0x9C9,
+ 0x9CB,
+ 0x9CF,
+ 0x9D7,
+ 0x9D8,
+ 0x9DC,
+ 0x9DE,
+ 0x9DF,
+ 0x9E4,
+ 0x9E6,
+ 0x9FF,
+ 0xA01,
+ 0xA04,
+ 0xA05,
+ 0xA0B,
+ 0xA0F,
+ 0xA11,
+ 0xA13,
+ 0xA29,
+ 0xA2A,
+ 0xA31,
+ 0xA32,
+ 0xA34,
+ 0xA35,
+ 0xA37,
+ 0xA38,
+ 0xA3A,
+ 0xA3C,
+ 0xA3D,
+ 0xA3E,
+ 0xA43,
+ 0xA47,
+ 0xA49,
+ 0xA4B,
+ 0xA4E,
+ 0xA51,
+ 0xA52,
+ 0xA59,
+ 0xA5D,
+ 0xA5E,
+ 0xA5F,
+ 0xA66,
+ 0xA77,
+ 0xA81,
+ 0xA84,
+ 0xA85,
+ 0xA8E,
+ 0xA8F,
+ 0xA92,
+ 0xA93,
+ 0xAA9,
+ 0xAAA,
+ 0xAB1,
+ 0xAB2,
+ 0xAB4,
+ 0xAB5,
+ 0xABA,
+ 0xABC,
+ 0xAC6,
+ 0xAC7,
+ 0xACA,
+ 0xACB,
+ 0xACE,
+ 0xAD0,
+ 0xAD1,
+ 0xAE0,
+ 0xAE4,
+ 0xAE6,
+ 0xAF2,
+ 0xAF9,
+ 0xB00,
+ 0xB01,
+ 0xB04,
+ 0xB05,
+ 0xB0D,
+ 0xB0F,
+ 0xB11,
+ 0xB13,
+ 0xB29,
+ 0xB2A,
+ 0xB31,
+ 0xB32,
+ 0xB34,
+ 0xB35,
+ 0xB3A,
+ 0xB3C,
+ 0xB45,
+ 0xB47,
+ 0xB49,
+ 0xB4B,
+ 0xB4E,
+ 0xB55,
+ 0xB58,
+ 0xB5C,
+ 0xB5E,
+ 0xB5F,
+ 0xB64,
+ 0xB66,
+ 0xB78,
+ 0xB82,
+ 0xB84,
+ 0xB85,
+ 0xB8B,
+ 0xB8E,
+ 0xB91,
+ 0xB92,
+ 0xB96,
+ 0xB99,
+ 0xB9B,
+ 0xB9C,
+ 0xB9D,
+ 0xB9E,
+ 0xBA0,
+ 0xBA3,
+ 0xBA5,
+ 0xBA8,
+ 0xBAB,
+ 0xBAE,
+ 0xBBA,
+ 0xBBE,
+ 0xBC3,
+ 0xBC6,
+ 0xBC9,
+ 0xBCA,
+ 0xBCE,
+ 0xBD0,
+ 0xBD1,
+ 0xBD7,
+ 0xBD8,
+ 0xBE6,
+ 0xBFB,
+ 0xC00,
+ 0xC0D,
+ 0xC0E,
+ 0xC11,
+ 0xC12,
+ 0xC29,
+ 0xC2A,
+ 0xC3A,
+ 0xC3C,
+ 0xC45,
+ 0xC46,
+ 0xC49,
+ 0xC4A,
+ 0xC4E,
+ 0xC55,
+ 0xC57,
+ 0xC58,
+ 0xC5B,
+ 0xC5D,
+ 0xC5E,
+ 0xC60,
+ 0xC64,
+ 0xC66,
+ 0xC70,
+ 0xC77,
+ 0xC8D,
+ 0xC8E,
+ 0xC91,
+ 0xC92,
+ 0xCA9,
+ 0xCAA,
+ 0xCB4,
+ 0xCB5,
+ 0xCBA,
+ 0xCBC,
+ 0xCC5,
+ 0xCC6,
+ 0xCC9,
+ 0xCCA,
+ 0xCCE,
+ 0xCD5,
+ 0xCD7,
+ 0xCDD,
+ 0xCDF,
+ 0xCE0,
+ 0xCE4,
+ 0xCE6,
+ 0xCF0,
+ 0xCF1,
+ 0xCF4,
+ 0xD00,
+ 0xD0D,
+ 0xD0E,
+ 0xD11,
+ 0xD12,
+ 0xD45,
+ 0xD46,
+ 0xD49,
+ 0xD4A,
+ 0xD50,
+ 0xD54,
+ 0xD64,
+ 0xD66,
+ 0xD80,
+ 0xD81,
+ 0xD84,
+ 0xD85,
+ 0xD97,
+ 0xD9A,
+ 0xDB2,
+ 0xDB3,
+ 0xDBC,
+ 0xDBD,
+ 0xDBE,
+ 0xDC0,
+ 0xDC7,
+ 0xDCA,
+ 0xDCB,
+ 0xDCF,
+ 0xDD5,
+ 0xDD6,
+ 0xDD7,
+ 0xDD8,
+ 0xDE0,
+ 0xDE6,
+ 0xDF0,
+ 0xDF2,
+ 0xDF5,
+ 0xE01,
+ 0xE3B,
+ 0xE3F,
+ 0xE5C,
+ 0xE81,
+ 0xE83,
+ 0xE84,
+ 0xE85,
+ 0xE86,
+ 0xE8B,
+ 0xE8C,
+ 0xEA4,
+ 0xEA5,
+ 0xEA6,
+ 0xEA7,
+ 0xEBE,
+ 0xEC0,
+ 0xEC5,
+ 0xEC6,
+ 0xEC7,
+ 0xEC8,
+ 0xECF,
+ 0xED0,
+ 0xEDA,
+ 0xEDC,
+ 0xEE0,
+ 0xF00,
+ 0xF48,
+ 0xF49,
+ 0xF6D,
+ 0xF71,
+ 0xF98,
+ 0xF99,
+ 0xFBD,
+ 0xFBE,
+ 0xFCD,
+ 0xFCE,
+ 0xFDB,
+ 0x1000,
+ 0x10C6,
+ 0x10C7,
+ 0x10C8,
+ 0x10CD,
+ 0x10CE,
+ 0x10D0,
+ 0x1249,
+ 0x124A,
+ 0x124E,
+ 0x1250,
+ 0x1257,
+ 0x1258,
+ 0x1259,
+ 0x125A,
+ 0x125E,
+ 0x1260,
+ 0x1289,
+ 0x128A,
+ 0x128E,
+ 0x1290,
+ 0x12B1,
+ 0x12B2,
+ 0x12B6,
+ 0x12B8,
+ 0x12BF,
+ 0x12C0,
+ 0x12C1,
+ 0x12C2,
+ 0x12C6,
+ 0x12C8,
+ 0x12D7,
+ 0x12D8,
+ 0x1311,
+ 0x1312,
+ 0x1316,
+ 0x1318,
+ 0x135B,
+ 0x135D,
+ 0x137D,
+ 0x1380,
+ 0x139A,
+ 0x13A0,
+ 0x13F6,
+ 0x13F8,
+ 0x13FE,
+ 0x1400,
+ 0x169D,
+ 0x16A0,
+ 0x16F9,
+ 0x1700,
+ 0x1716,
+ 0x171F,
+ 0x1737,
+ 0x1740,
+ 0x1754,
+ 0x1760,
+ 0x176D,
+ 0x176E,
+ 0x1771,
+ 0x1772,
+ 0x1774,
+ 0x1780,
+ 0x17DE,
+ 0x17E0,
+ 0x17EA,
+ 0x17F0,
+ 0x17FA,
+ 0x1800,
+ 0x181A,
+ 0x1820,
+ 0x1879,
+ 0x1880,
+ 0x18AB,
+ 0x18B0,
+ 0x18F6,
+ 0x1900,
+ 0x191F,
+ 0x1920,
+ 0x192C,
+ 0x1930,
+ 0x193C,
+ 0x1940,
+ 0x1941,
+ 0x1944,
+ 0x196E,
+ 0x1970,
+ 0x1975,
+ 0x1980,
+ 0x19AC,
+ 0x19B0,
+ 0x19CA,
+ 0x19D0,
+ 0x19DB,
+ 0x19DE,
+ 0x1A1C,
+ 0x1A1E,
+ 0x1A5F,
+ 0x1A60,
+ 0x1A7D,
+ 0x1A7F,
+ 0x1A8A,
+ 0x1A90,
+ 0x1A9A,
+ 0x1AA0,
+ 0x1AAE,
+ 0x1AB0,
+ 0x1ACF,
+ 0x1B00,
+ 0x1B4D,
+ 0x1B50,
+ 0x1B7F,
+ 0x1B80,
+ 0x1BF4,
+ 0x1BFC,
+ 0x1C38,
+ 0x1C3B,
+ 0x1C4A,
+ 0x1C4D,
+ 0x1C89,
+ 0x1C90,
+ 0x1CBB,
+ 0x1CBD,
+ 0x1CC8,
+ 0x1CD0,
+ 0x1CFB,
+ 0x1D00,
+ 0x1F16,
+ 0x1F18,
+ 0x1F1E,
+ 0x1F20,
+ 0x1F46,
+ 0x1F48,
+ 0x1F4E,
+ 0x1F50,
+ 0x1F58,
+ 0x1F59,
+ 0x1F5A,
+ 0x1F5B,
+ 0x1F5C,
+ 0x1F5D,
+ 0x1F5E,
+ 0x1F5F,
+ 0x1F7E,
+ 0x1F80,
+ 0x1FB5,
+ 0x1FB6,
+ 0x1FC5,
+ 0x1FC6,
+ 0x1FD4,
+ 0x1FD6,
+ 0x1FDC,
+ 0x1FDD,
+ 0x1FF0,
+ 0x1FF2,
+ 0x1FF5,
+ 0x1FF6,
+ 0x1FFF,
+ 0x2000,
+ 0x2065,
+ 0x2066,
+ 0x2072,
+ 0x2074,
+ 0x208F,
+ 0x2090,
+ 0x209D,
+ 0x20A0,
+ 0x20C1,
+ 0x20D0,
+ 0x20F1,
+ 0x2100,
+ 0x218C,
+ 0x2190,
+ 0x2427,
+ 0x2440,
+ 0x244B,
+ 0x2460,
+ 0x2B74,
+ 0x2B76,
+ 0x2B96,
+ 0x2B97,
+ 0x2CF4,
+ 0x2CF9,
+ 0x2D26,
+ 0x2D27,
+ 0x2D28,
+ 0x2D2D,
+ 0x2D2E,
+ 0x2D30,
+ 0x2D68,
+ 0x2D6F,
+ 0x2D71,
+ 0x2D7F,
+ 0x2D97,
+ 0x2DA0,
+ 0x2DA7,
+ 0x2DA8,
+ 0x2DAF,
+ 0x2DB0,
+ 0x2DB7,
+ 0x2DB8,
+ 0x2DBF,
+ 0x2DC0,
+ 0x2DC7,
+ 0x2DC8,
+ 0x2DCF,
+ 0x2DD0,
+ 0x2DD7,
+ 0x2DD8,
+ 0x2DDF,
+ 0x2DE0,
+ 0x2E5E,
+ 0x2E80,
+ 0x2E9A,
+ 0x2E9B,
+ 0x2EF4,
+ 0x2F00,
+ 0x2FD6,
+ 0x2FF0,
+ 0x2FFC,
+ 0x3000,
+ 0x3040,
+ 0x3041,
+ 0x3097,
+ 0x3099,
+ 0x3100,
+ 0x3105,
+ 0x3130,
+ 0x3131,
+ 0x318F,
+ 0x3190,
+ 0x31E4,
+ 0x31F0,
+ 0x321F,
+ 0x3220,
+ 0xA48D,
+ 0xA490,
+ 0xA4C7,
+ 0xA4D0,
+ 0xA62C,
+ 0xA640,
+ 0xA6F8,
+ 0xA700,
+ 0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
+ 0xA82D,
+ 0xA830,
+ 0xA83A,
+ 0xA840,
+ 0xA878,
+ 0xA880,
+ 0xA8C6,
+ 0xA8CE,
+ 0xA8DA,
+ 0xA8E0,
+ 0xA954,
+ 0xA95F,
+ 0xA97D,
+ 0xA980,
+ 0xA9CE,
+ 0xA9CF,
+ 0xA9DA,
+ 0xA9DE,
+ 0xA9FF,
+ 0xAA00,
+ 0xAA37,
+ 0xAA40,
+ 0xAA4E,
+ 0xAA50,
+ 0xAA5A,
+ 0xAA5C,
+ 0xAAC3,
+ 0xAADB,
+ 0xAAF7,
+ 0xAB01,
+ 0xAB07,
+ 0xAB09,
+ 0xAB0F,
+ 0xAB11,
+ 0xAB17,
+ 0xAB20,
+ 0xAB27,
+ 0xAB28,
+ 0xAB2F,
+ 0xAB30,
+ 0xAB6C,
+ 0xAB70,
+ 0xABEE,
+ 0xABF0,
+ 0xABFA,
+ 0xAC00,
+ 0xD7A4,
+ 0xD7B0,
+ 0xD7C7,
+ 0xD7CB,
+ 0xD7FC,
+ 0xD800,
+ 0xFA6E,
+ 0xFA70,
+ 0xFADA,
+ 0xFB00,
+ 0xFB07,
+ 0xFB13,
+ 0xFB18,
+ 0xFB1D,
+ 0xFB37,
+ 0xFB38,
+ 0xFB3D,
+ 0xFB3E,
+ 0xFB3F,
+ 0xFB40,
+ 0xFB42,
+ 0xFB43,
+ 0xFB45,
+ 0xFB46,
+ 0xFBC3,
+ 0xFBD3,
+ 0xFD90,
+ 0xFD92,
+ 0xFDC8,
+ 0xFDCF,
+ 0xFE1A,
+ 0xFE20,
+ 0xFE53,
+ 0xFE54,
+ 0xFE67,
+ 0xFE68,
+ 0xFE6C,
+ 0xFE70,
+ 0xFE75,
+ 0xFE76,
+ 0xFEFD,
+ 0xFEFF,
+ 0xFF00,
+ 0xFF01,
+ 0xFFBF,
+ 0xFFC2,
+ 0xFFC8,
+ 0xFFCA,
+ 0xFFD0,
+ 0xFFD2,
+ 0xFFD8,
+ 0xFFDA,
+ 0xFFDD,
+ 0xFFE0,
+ 0xFFE7,
+ 0xFFE8,
+ 0xFFEF,
+ 0xFFF9,
+ 0x1000C,
+ 0x1000D,
+ 0x10027,
+ 0x10028,
+ 0x1003B,
+ 0x1003C,
+ 0x1003E,
+ 0x1003F,
+ 0x1004E,
+ 0x10050,
+ 0x1005E,
+ 0x10080,
+ 0x100FB,
+ 0x10100,
+ 0x10103,
+ 0x10107,
+ 0x10134,
+ 0x10137,
+ 0x1018F,
+ 0x10190,
+ 0x1019D,
+ 0x101A0,
+ 0x101A1,
+ 0x101D0,
+ 0x101FE,
+ 0x10280,
+ 0x1029D,
+ 0x102A0,
+ 0x102D1,
+ 0x102E0,
+ 0x102FC,
+ 0x10300,
+ 0x10324,
+ 0x1032D,
+ 0x1034B,
+ 0x10350,
+ 0x1037B,
+ 0x10380,
+ 0x1039E,
+ 0x1039F,
+ 0x103C4,
+ 0x103C8,
+ 0x103D6,
+ 0x10400,
+ 0x1049E,
+ 0x104A0,
+ 0x104AA,
+ 0x104B0,
+ 0x104D4,
+ 0x104D8,
+ 0x104FC,
+ 0x10500,
+ 0x10528,
+ 0x10530,
+ 0x10564,
+ 0x1056F,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
+ 0x10600,
+ 0x10737,
+ 0x10740,
+ 0x10756,
+ 0x10760,
+ 0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
+ 0x10800,
+ 0x10806,
+ 0x10808,
+ 0x10809,
+ 0x1080A,
+ 0x10836,
+ 0x10837,
+ 0x10839,
+ 0x1083C,
+ 0x1083D,
+ 0x1083F,
+ 0x10856,
+ 0x10857,
+ 0x1089F,
+ 0x108A7,
+ 0x108B0,
+ 0x108E0,
+ 0x108F3,
+ 0x108F4,
+ 0x108F6,
+ 0x108FB,
+ 0x1091C,
+ 0x1091F,
+ 0x1093A,
+ 0x1093F,
+ 0x10940,
+ 0x10980,
+ 0x109B8,
+ 0x109BC,
+ 0x109D0,
+ 0x109D2,
+ 0x10A04,
+ 0x10A05,
+ 0x10A07,
+ 0x10A0C,
+ 0x10A14,
+ 0x10A15,
+ 0x10A18,
+ 0x10A19,
+ 0x10A36,
+ 0x10A38,
+ 0x10A3B,
+ 0x10A3F,
+ 0x10A49,
+ 0x10A50,
+ 0x10A59,
+ 0x10A60,
+ 0x10AA0,
+ 0x10AC0,
+ 0x10AE7,
+ 0x10AEB,
+ 0x10AF7,
+ 0x10B00,
+ 0x10B36,
+ 0x10B39,
+ 0x10B56,
+ 0x10B58,
+ 0x10B73,
+ 0x10B78,
+ 0x10B92,
+ 0x10B99,
+ 0x10B9D,
+ 0x10BA9,
+ 0x10BB0,
+ 0x10C00,
+ 0x10C49,
+ 0x10C80,
+ 0x10CB3,
+ 0x10CC0,
+ 0x10CF3,
+ 0x10CFA,
+ 0x10D28,
+ 0x10D30,
+ 0x10D3A,
+ 0x10E60,
+ 0x10E7F,
+ 0x10E80,
+ 0x10EAA,
+ 0x10EAB,
+ 0x10EAE,
+ 0x10EB0,
+ 0x10EB2,
+ 0x10EFD,
+ 0x10F28,
+ 0x10F30,
+ 0x10F5A,
+ 0x10F70,
+ 0x10F8A,
+ 0x10FB0,
+ 0x10FCC,
+ 0x10FE0,
+ 0x10FF7,
+ 0x11000,
+ 0x1104E,
+ 0x11052,
+ 0x11076,
+ 0x1107F,
+ 0x110C3,
+ 0x110CD,
+ 0x110CE,
+ 0x110D0,
+ 0x110E9,
+ 0x110F0,
+ 0x110FA,
+ 0x11100,
+ 0x11135,
+ 0x11136,
+ 0x11148,
+ 0x11150,
+ 0x11177,
+ 0x11180,
+ 0x111E0,
+ 0x111E1,
+ 0x111F5,
+ 0x11200,
+ 0x11212,
+ 0x11213,
+ 0x11242,
+ 0x11280,
+ 0x11287,
+ 0x11288,
+ 0x11289,
+ 0x1128A,
+ 0x1128E,
+ 0x1128F,
+ 0x1129E,
+ 0x1129F,
+ 0x112AA,
+ 0x112B0,
+ 0x112EB,
+ 0x112F0,
+ 0x112FA,
+ 0x11300,
+ 0x11304,
+ 0x11305,
+ 0x1130D,
+ 0x1130F,
+ 0x11311,
+ 0x11313,
+ 0x11329,
+ 0x1132A,
+ 0x11331,
+ 0x11332,
+ 0x11334,
+ 0x11335,
+ 0x1133A,
+ 0x1133B,
+ 0x11345,
+ 0x11347,
+ 0x11349,
+ 0x1134B,
+ 0x1134E,
+ 0x11350,
+ 0x11351,
+ 0x11357,
+ 0x11358,
+ 0x1135D,
+ 0x11364,
+ 0x11366,
+ 0x1136D,
+ 0x11370,
+ 0x11375,
+ 0x11400,
+ 0x1145C,
+ 0x1145D,
+ 0x11462,
+ 0x11480,
+ 0x114C8,
+ 0x114D0,
+ 0x114DA,
+ 0x11580,
+ 0x115B6,
+ 0x115B8,
+ 0x115DE,
+ 0x11600,
+ 0x11645,
+ 0x11650,
+ 0x1165A,
+ 0x11660,
+ 0x1166D,
+ 0x11680,
+ 0x116BA,
+ 0x116C0,
+ 0x116CA,
+ 0x11700,
+ 0x1171B,
+ 0x1171D,
+ 0x1172C,
+ 0x11730,
+ 0x11747,
+ 0x11800,
+ 0x1183C,
+ 0x118A0,
+ 0x118F3,
+ 0x118FF,
+ 0x11907,
+ 0x11909,
+ 0x1190A,
+ 0x1190C,
+ 0x11914,
+ 0x11915,
+ 0x11917,
+ 0x11918,
+ 0x11936,
+ 0x11937,
+ 0x11939,
+ 0x1193B,
+ 0x11947,
+ 0x11950,
+ 0x1195A,
+ 0x119A0,
+ 0x119A8,
+ 0x119AA,
+ 0x119D8,
+ 0x119DA,
+ 0x119E5,
+ 0x11A00,
+ 0x11A48,
+ 0x11A50,
+ 0x11AA3,
+ 0x11AB0,
+ 0x11AF9,
+ 0x11B00,
+ 0x11B0A,
+ 0x11C00,
+ 0x11C09,
+ 0x11C0A,
+ 0x11C37,
+ 0x11C38,
+ 0x11C46,
+ 0x11C50,
+ 0x11C6D,
+ 0x11C70,
+ 0x11C90,
+ 0x11C92,
+ 0x11CA8,
+ 0x11CA9,
+ 0x11CB7,
+ 0x11D00,
+ 0x11D07,
+ 0x11D08,
+ 0x11D0A,
+ 0x11D0B,
+ 0x11D37,
+ 0x11D3A,
+ 0x11D3B,
+ 0x11D3C,
+ 0x11D3E,
+ 0x11D3F,
+ 0x11D48,
+ 0x11D50,
+ 0x11D5A,
+ 0x11D60,
+ 0x11D66,
+ 0x11D67,
+ 0x11D69,
+ 0x11D6A,
+ 0x11D8F,
+ 0x11D90,
+ 0x11D92,
+ 0x11D93,
+ 0x11D99,
+ 0x11DA0,
+ 0x11DAA,
+ 0x11EE0,
+ 0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
+ 0x11FB0,
+ 0x11FB1,
+ 0x11FC0,
+ 0x11FF2,
+ 0x11FFF,
+ 0x1239A,
+ 0x12400,
+ 0x1246F,
+ 0x12470,
+ 0x12475,
+ 0x12480,
+ 0x12544,
+ 0x12F90,
+ 0x12FF3,
+ 0x13000,
+ 0x13456,
+ 0x14400,
+ 0x14647,
+ 0x16800,
+ 0x16A39,
+ 0x16A40,
+ 0x16A5F,
+ 0x16A60,
+ 0x16A6A,
+ 0x16A6E,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
+ 0x16AD0,
+ 0x16AEE,
+ 0x16AF0,
+ 0x16AF6,
+ 0x16B00,
+ 0x16B46,
+ 0x16B50,
+ 0x16B5A,
+ 0x16B5B,
+ 0x16B62,
+ 0x16B63,
+ 0x16B78,
+ 0x16B7D,
+ 0x16B90,
+ 0x16E40,
+ 0x16E9B,
+ 0x16F00,
+ 0x16F4B,
+ 0x16F4F,
+ 0x16F88,
+ 0x16F8F,
+ 0x16FA0,
+ 0x16FE0,
+ 0x16FE5,
+ 0x16FF0,
+ 0x16FF2,
+ 0x17000,
+ 0x187F8,
+ 0x18800,
+ 0x18CD6,
+ 0x18D00,
+ 0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
+ 0x1B000,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
+ 0x1B150,
+ 0x1B153,
+ 0x1B155,
+ 0x1B156,
+ 0x1B164,
+ 0x1B168,
+ 0x1B170,
+ 0x1B2FC,
+ 0x1BC00,
+ 0x1BC6B,
+ 0x1BC70,
+ 0x1BC7D,
+ 0x1BC80,
+ 0x1BC89,
+ 0x1BC90,
+ 0x1BC9A,
+ 0x1BC9C,
+ 0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
+ 0x1D000,
+ 0x1D0F6,
+ 0x1D100,
+ 0x1D127,
+ 0x1D129,
+ 0x1D1EB,
+ 0x1D200,
+ 0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
+ 0x1D2E0,
+ 0x1D2F4,
+ 0x1D300,
+ 0x1D357,
+ 0x1D360,
+ 0x1D379,
+ 0x1D400,
+ 0x1D455,
+ 0x1D456,
+ 0x1D49D,
+ 0x1D49E,
+ 0x1D4A0,
+ 0x1D4A2,
+ 0x1D4A3,
+ 0x1D4A5,
+ 0x1D4A7,
+ 0x1D4A9,
+ 0x1D4AD,
+ 0x1D4AE,
+ 0x1D4BA,
+ 0x1D4BB,
+ 0x1D4BC,
+ 0x1D4BD,
+ 0x1D4C4,
+ 0x1D4C5,
+ 0x1D506,
+ 0x1D507,
+ 0x1D50B,
+ 0x1D50D,
+ 0x1D515,
+ 0x1D516,
+ 0x1D51D,
+ 0x1D51E,
+ 0x1D53A,
+ 0x1D53B,
+ 0x1D53F,
+ 0x1D540,
+ 0x1D545,
+ 0x1D546,
+ 0x1D547,
+ 0x1D54A,
+ 0x1D551,
+ 0x1D552,
+ 0x1D6A6,
+ 0x1D6A8,
+ 0x1D7CC,
+ 0x1D7CE,
+ 0x1DA8C,
+ 0x1DA9B,
+ 0x1DAA0,
+ 0x1DAA1,
+ 0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E000,
+ 0x1E007,
+ 0x1E008,
+ 0x1E019,
+ 0x1E01B,
+ 0x1E022,
+ 0x1E023,
+ 0x1E025,
+ 0x1E026,
+ 0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
+ 0x1E100,
+ 0x1E12D,
+ 0x1E130,
+ 0x1E13E,
+ 0x1E140,
+ 0x1E14A,
+ 0x1E14E,
+ 0x1E150,
+ 0x1E290,
+ 0x1E2AF,
+ 0x1E2C0,
+ 0x1E2FA,
+ 0x1E2FF,
+ 0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
+ 0x1E800,
+ 0x1E8C5,
+ 0x1E8C7,
+ 0x1E8D7,
+ 0x1E900,
+ 0x1E94C,
+ 0x1E950,
+ 0x1E95A,
+ 0x1E95E,
+ 0x1E960,
+ 0x1EC71,
+ 0x1ECB5,
+ 0x1ED01,
+ 0x1ED3E,
+ 0x1EE00,
+ 0x1EE04,
+ 0x1EE05,
+ 0x1EE20,
+ 0x1EE21,
+ 0x1EE23,
+ 0x1EE24,
+ 0x1EE25,
+ 0x1EE27,
+ 0x1EE28,
+ 0x1EE29,
+ 0x1EE33,
+ 0x1EE34,
+ 0x1EE38,
+ 0x1EE39,
+ 0x1EE3A,
+ 0x1EE3B,
+ 0x1EE3C,
+ 0x1EE42,
+ 0x1EE43,
+ 0x1EE47,
+ 0x1EE48,
+ 0x1EE49,
+ 0x1EE4A,
+ 0x1EE4B,
+ 0x1EE4C,
+ 0x1EE4D,
+ 0x1EE50,
+ 0x1EE51,
+ 0x1EE53,
+ 0x1EE54,
+ 0x1EE55,
+ 0x1EE57,
+ 0x1EE58,
+ 0x1EE59,
+ 0x1EE5A,
+ 0x1EE5B,
+ 0x1EE5C,
+ 0x1EE5D,
+ 0x1EE5E,
+ 0x1EE5F,
+ 0x1EE60,
+ 0x1EE61,
+ 0x1EE63,
+ 0x1EE64,
+ 0x1EE65,
+ 0x1EE67,
+ 0x1EE6B,
+ 0x1EE6C,
+ 0x1EE73,
+ 0x1EE74,
+ 0x1EE78,
+ 0x1EE79,
+ 0x1EE7D,
+ 0x1EE7E,
+ 0x1EE7F,
+ 0x1EE80,
+ 0x1EE8A,
+ 0x1EE8B,
+ 0x1EE9C,
+ 0x1EEA1,
+ 0x1EEA4,
+ 0x1EEA5,
+ 0x1EEAA,
+ 0x1EEAB,
+ 0x1EEBC,
+ 0x1EEF0,
+ 0x1EEF2,
+ 0x1F000,
+ 0x1F02C,
+ 0x1F030,
+ 0x1F094,
+ 0x1F0A0,
+ 0x1F0AF,
+ 0x1F0B1,
+ 0x1F0C0,
+ 0x1F0C1,
+ 0x1F0D0,
+ 0x1F0D1,
+ 0x1F0F6,
+ 0x1F100,
+ 0x1F1AE,
+ 0x1F1E6,
+ 0x1F203,
+ 0x1F210,
+ 0x1F23C,
+ 0x1F240,
+ 0x1F249,
+ 0x1F250,
+ 0x1F252,
+ 0x1F260,
+ 0x1F266,
+ 0x1F300,
+ 0x1F6D8,
+ 0x1F6DC,
+ 0x1F6ED,
+ 0x1F6F0,
+ 0x1F6FD,
+ 0x1F700,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
+ 0x1F7E0,
+ 0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
+ 0x1F800,
+ 0x1F80C,
+ 0x1F810,
+ 0x1F848,
+ 0x1F850,
+ 0x1F85A,
+ 0x1F860,
+ 0x1F888,
+ 0x1F890,
+ 0x1F8AE,
+ 0x1F8B0,
+ 0x1F8B2,
+ 0x1F900,
+ 0x1FA54,
+ 0x1FA60,
+ 0x1FA6E,
+ 0x1FA70,
+ 0x1FA7D,
+ 0x1FA80,
+ 0x1FA89,
+ 0x1FA90,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
+ 0x1FB00,
+ 0x1FB93,
+ 0x1FB94,
+ 0x1FBCB,
+ 0x1FBF0,
+ 0x1FBFA,
+ 0x1FFFE,
+ 0x2A6E0,
+ 0x2A700,
+ 0x2B73A,
+ 0x2B740,
+ 0x2B81E,
+ 0x2B820,
+ 0x2CEA2,
+ 0x2CEB0,
+ 0x2EBE1,
+ 0x2F800,
+ 0x2FA1E,
+ 0x2FFFE,
+ 0x3134B,
+ 0x31350,
+ 0x323B0,
+ 0x3FFFE,
+ 0x40000,
+ 0x4FFFE,
+ 0x50000,
+ 0x5FFFE,
+ 0x60000,
+ 0x6FFFE,
+ 0x70000,
+ 0x7FFFE,
+ 0x80000,
+ 0x8FFFE,
+ 0x90000,
+ 0x9FFFE,
+ 0xA0000,
+ 0xAFFFE,
+ 0xB0000,
+ 0xBFFFE,
+ 0xC0000,
+ 0xCFFFE,
+ 0xD0000,
+ 0xDFFFE,
+ 0xE0000,
+ 0xE0001,
+ 0xE0002,
+ 0xE0020,
+ 0xE0080,
+ 0xE0100,
+ 0xE01F0,
+ 0xEFFFE,
+ 0x110000
+};
+
static const UV UNI_IN__2_invlist[] = { /* for all charsets */
624, /* Number of elements */
148565664, /* Version and data structure type */
@@ -302194,6 +312852,1443 @@ static const UV UNI_IN__9_invlist[] = { /* for all charsets */
0x110000
};
+static const UV UNI_IN__NA_invlist[] = { /* for all charsets */
+ 1430, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x378,
+ 0x37A,
+ 0x380,
+ 0x384,
+ 0x38B,
+ 0x38C,
+ 0x38D,
+ 0x38E,
+ 0x3A2,
+ 0x3A3,
+ 0x530,
+ 0x531,
+ 0x557,
+ 0x559,
+ 0x58B,
+ 0x58D,
+ 0x590,
+ 0x591,
+ 0x5C8,
+ 0x5D0,
+ 0x5EB,
+ 0x5EF,
+ 0x5F5,
+ 0x600,
+ 0x70E,
+ 0x70F,
+ 0x74B,
+ 0x74D,
+ 0x7B2,
+ 0x7C0,
+ 0x7FB,
+ 0x7FD,
+ 0x82E,
+ 0x830,
+ 0x83F,
+ 0x840,
+ 0x85C,
+ 0x85E,
+ 0x85F,
+ 0x860,
+ 0x86B,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
+ 0x984,
+ 0x985,
+ 0x98D,
+ 0x98F,
+ 0x991,
+ 0x993,
+ 0x9A9,
+ 0x9AA,
+ 0x9B1,
+ 0x9B2,
+ 0x9B3,
+ 0x9B6,
+ 0x9BA,
+ 0x9BC,
+ 0x9C5,
+ 0x9C7,
+ 0x9C9,
+ 0x9CB,
+ 0x9CF,
+ 0x9D7,
+ 0x9D8,
+ 0x9DC,
+ 0x9DE,
+ 0x9DF,
+ 0x9E4,
+ 0x9E6,
+ 0x9FF,
+ 0xA01,
+ 0xA04,
+ 0xA05,
+ 0xA0B,
+ 0xA0F,
+ 0xA11,
+ 0xA13,
+ 0xA29,
+ 0xA2A,
+ 0xA31,
+ 0xA32,
+ 0xA34,
+ 0xA35,
+ 0xA37,
+ 0xA38,
+ 0xA3A,
+ 0xA3C,
+ 0xA3D,
+ 0xA3E,
+ 0xA43,
+ 0xA47,
+ 0xA49,
+ 0xA4B,
+ 0xA4E,
+ 0xA51,
+ 0xA52,
+ 0xA59,
+ 0xA5D,
+ 0xA5E,
+ 0xA5F,
+ 0xA66,
+ 0xA77,
+ 0xA81,
+ 0xA84,
+ 0xA85,
+ 0xA8E,
+ 0xA8F,
+ 0xA92,
+ 0xA93,
+ 0xAA9,
+ 0xAAA,
+ 0xAB1,
+ 0xAB2,
+ 0xAB4,
+ 0xAB5,
+ 0xABA,
+ 0xABC,
+ 0xAC6,
+ 0xAC7,
+ 0xACA,
+ 0xACB,
+ 0xACE,
+ 0xAD0,
+ 0xAD1,
+ 0xAE0,
+ 0xAE4,
+ 0xAE6,
+ 0xAF2,
+ 0xAF9,
+ 0xB00,
+ 0xB01,
+ 0xB04,
+ 0xB05,
+ 0xB0D,
+ 0xB0F,
+ 0xB11,
+ 0xB13,
+ 0xB29,
+ 0xB2A,
+ 0xB31,
+ 0xB32,
+ 0xB34,
+ 0xB35,
+ 0xB3A,
+ 0xB3C,
+ 0xB45,
+ 0xB47,
+ 0xB49,
+ 0xB4B,
+ 0xB4E,
+ 0xB55,
+ 0xB58,
+ 0xB5C,
+ 0xB5E,
+ 0xB5F,
+ 0xB64,
+ 0xB66,
+ 0xB78,
+ 0xB82,
+ 0xB84,
+ 0xB85,
+ 0xB8B,
+ 0xB8E,
+ 0xB91,
+ 0xB92,
+ 0xB96,
+ 0xB99,
+ 0xB9B,
+ 0xB9C,
+ 0xB9D,
+ 0xB9E,
+ 0xBA0,
+ 0xBA3,
+ 0xBA5,
+ 0xBA8,
+ 0xBAB,
+ 0xBAE,
+ 0xBBA,
+ 0xBBE,
+ 0xBC3,
+ 0xBC6,
+ 0xBC9,
+ 0xBCA,
+ 0xBCE,
+ 0xBD0,
+ 0xBD1,
+ 0xBD7,
+ 0xBD8,
+ 0xBE6,
+ 0xBFB,
+ 0xC00,
+ 0xC0D,
+ 0xC0E,
+ 0xC11,
+ 0xC12,
+ 0xC29,
+ 0xC2A,
+ 0xC3A,
+ 0xC3C,
+ 0xC45,
+ 0xC46,
+ 0xC49,
+ 0xC4A,
+ 0xC4E,
+ 0xC55,
+ 0xC57,
+ 0xC58,
+ 0xC5B,
+ 0xC5D,
+ 0xC5E,
+ 0xC60,
+ 0xC64,
+ 0xC66,
+ 0xC70,
+ 0xC77,
+ 0xC8D,
+ 0xC8E,
+ 0xC91,
+ 0xC92,
+ 0xCA9,
+ 0xCAA,
+ 0xCB4,
+ 0xCB5,
+ 0xCBA,
+ 0xCBC,
+ 0xCC5,
+ 0xCC6,
+ 0xCC9,
+ 0xCCA,
+ 0xCCE,
+ 0xCD5,
+ 0xCD7,
+ 0xCDD,
+ 0xCDF,
+ 0xCE0,
+ 0xCE4,
+ 0xCE6,
+ 0xCF0,
+ 0xCF1,
+ 0xCF4,
+ 0xD00,
+ 0xD0D,
+ 0xD0E,
+ 0xD11,
+ 0xD12,
+ 0xD45,
+ 0xD46,
+ 0xD49,
+ 0xD4A,
+ 0xD50,
+ 0xD54,
+ 0xD64,
+ 0xD66,
+ 0xD80,
+ 0xD81,
+ 0xD84,
+ 0xD85,
+ 0xD97,
+ 0xD9A,
+ 0xDB2,
+ 0xDB3,
+ 0xDBC,
+ 0xDBD,
+ 0xDBE,
+ 0xDC0,
+ 0xDC7,
+ 0xDCA,
+ 0xDCB,
+ 0xDCF,
+ 0xDD5,
+ 0xDD6,
+ 0xDD7,
+ 0xDD8,
+ 0xDE0,
+ 0xDE6,
+ 0xDF0,
+ 0xDF2,
+ 0xDF5,
+ 0xE01,
+ 0xE3B,
+ 0xE3F,
+ 0xE5C,
+ 0xE81,
+ 0xE83,
+ 0xE84,
+ 0xE85,
+ 0xE86,
+ 0xE8B,
+ 0xE8C,
+ 0xEA4,
+ 0xEA5,
+ 0xEA6,
+ 0xEA7,
+ 0xEBE,
+ 0xEC0,
+ 0xEC5,
+ 0xEC6,
+ 0xEC7,
+ 0xEC8,
+ 0xECF,
+ 0xED0,
+ 0xEDA,
+ 0xEDC,
+ 0xEE0,
+ 0xF00,
+ 0xF48,
+ 0xF49,
+ 0xF6D,
+ 0xF71,
+ 0xF98,
+ 0xF99,
+ 0xFBD,
+ 0xFBE,
+ 0xFCD,
+ 0xFCE,
+ 0xFDB,
+ 0x1000,
+ 0x10C6,
+ 0x10C7,
+ 0x10C8,
+ 0x10CD,
+ 0x10CE,
+ 0x10D0,
+ 0x1249,
+ 0x124A,
+ 0x124E,
+ 0x1250,
+ 0x1257,
+ 0x1258,
+ 0x1259,
+ 0x125A,
+ 0x125E,
+ 0x1260,
+ 0x1289,
+ 0x128A,
+ 0x128E,
+ 0x1290,
+ 0x12B1,
+ 0x12B2,
+ 0x12B6,
+ 0x12B8,
+ 0x12BF,
+ 0x12C0,
+ 0x12C1,
+ 0x12C2,
+ 0x12C6,
+ 0x12C8,
+ 0x12D7,
+ 0x12D8,
+ 0x1311,
+ 0x1312,
+ 0x1316,
+ 0x1318,
+ 0x135B,
+ 0x135D,
+ 0x137D,
+ 0x1380,
+ 0x139A,
+ 0x13A0,
+ 0x13F6,
+ 0x13F8,
+ 0x13FE,
+ 0x1400,
+ 0x169D,
+ 0x16A0,
+ 0x16F9,
+ 0x1700,
+ 0x1716,
+ 0x171F,
+ 0x1737,
+ 0x1740,
+ 0x1754,
+ 0x1760,
+ 0x176D,
+ 0x176E,
+ 0x1771,
+ 0x1772,
+ 0x1774,
+ 0x1780,
+ 0x17DE,
+ 0x17E0,
+ 0x17EA,
+ 0x17F0,
+ 0x17FA,
+ 0x1800,
+ 0x181A,
+ 0x1820,
+ 0x1879,
+ 0x1880,
+ 0x18AB,
+ 0x18B0,
+ 0x18F6,
+ 0x1900,
+ 0x191F,
+ 0x1920,
+ 0x192C,
+ 0x1930,
+ 0x193C,
+ 0x1940,
+ 0x1941,
+ 0x1944,
+ 0x196E,
+ 0x1970,
+ 0x1975,
+ 0x1980,
+ 0x19AC,
+ 0x19B0,
+ 0x19CA,
+ 0x19D0,
+ 0x19DB,
+ 0x19DE,
+ 0x1A1C,
+ 0x1A1E,
+ 0x1A5F,
+ 0x1A60,
+ 0x1A7D,
+ 0x1A7F,
+ 0x1A8A,
+ 0x1A90,
+ 0x1A9A,
+ 0x1AA0,
+ 0x1AAE,
+ 0x1AB0,
+ 0x1ACF,
+ 0x1B00,
+ 0x1B4D,
+ 0x1B50,
+ 0x1B7F,
+ 0x1B80,
+ 0x1BF4,
+ 0x1BFC,
+ 0x1C38,
+ 0x1C3B,
+ 0x1C4A,
+ 0x1C4D,
+ 0x1C89,
+ 0x1C90,
+ 0x1CBB,
+ 0x1CBD,
+ 0x1CC8,
+ 0x1CD0,
+ 0x1CFB,
+ 0x1D00,
+ 0x1F16,
+ 0x1F18,
+ 0x1F1E,
+ 0x1F20,
+ 0x1F46,
+ 0x1F48,
+ 0x1F4E,
+ 0x1F50,
+ 0x1F58,
+ 0x1F59,
+ 0x1F5A,
+ 0x1F5B,
+ 0x1F5C,
+ 0x1F5D,
+ 0x1F5E,
+ 0x1F5F,
+ 0x1F7E,
+ 0x1F80,
+ 0x1FB5,
+ 0x1FB6,
+ 0x1FC5,
+ 0x1FC6,
+ 0x1FD4,
+ 0x1FD6,
+ 0x1FDC,
+ 0x1FDD,
+ 0x1FF0,
+ 0x1FF2,
+ 0x1FF5,
+ 0x1FF6,
+ 0x1FFF,
+ 0x2000,
+ 0x2065,
+ 0x2066,
+ 0x2072,
+ 0x2074,
+ 0x208F,
+ 0x2090,
+ 0x209D,
+ 0x20A0,
+ 0x20C1,
+ 0x20D0,
+ 0x20F1,
+ 0x2100,
+ 0x218C,
+ 0x2190,
+ 0x2427,
+ 0x2440,
+ 0x244B,
+ 0x2460,
+ 0x2B74,
+ 0x2B76,
+ 0x2B96,
+ 0x2B97,
+ 0x2CF4,
+ 0x2CF9,
+ 0x2D26,
+ 0x2D27,
+ 0x2D28,
+ 0x2D2D,
+ 0x2D2E,
+ 0x2D30,
+ 0x2D68,
+ 0x2D6F,
+ 0x2D71,
+ 0x2D7F,
+ 0x2D97,
+ 0x2DA0,
+ 0x2DA7,
+ 0x2DA8,
+ 0x2DAF,
+ 0x2DB0,
+ 0x2DB7,
+ 0x2DB8,
+ 0x2DBF,
+ 0x2DC0,
+ 0x2DC7,
+ 0x2DC8,
+ 0x2DCF,
+ 0x2DD0,
+ 0x2DD7,
+ 0x2DD8,
+ 0x2DDF,
+ 0x2DE0,
+ 0x2E5E,
+ 0x2E80,
+ 0x2E9A,
+ 0x2E9B,
+ 0x2EF4,
+ 0x2F00,
+ 0x2FD6,
+ 0x2FF0,
+ 0x2FFC,
+ 0x3000,
+ 0x3040,
+ 0x3041,
+ 0x3097,
+ 0x3099,
+ 0x3100,
+ 0x3105,
+ 0x3130,
+ 0x3131,
+ 0x318F,
+ 0x3190,
+ 0x31E4,
+ 0x31F0,
+ 0x321F,
+ 0x3220,
+ 0xA48D,
+ 0xA490,
+ 0xA4C7,
+ 0xA4D0,
+ 0xA62C,
+ 0xA640,
+ 0xA6F8,
+ 0xA700,
+ 0xA7CB,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
+ 0xA82D,
+ 0xA830,
+ 0xA83A,
+ 0xA840,
+ 0xA878,
+ 0xA880,
+ 0xA8C6,
+ 0xA8CE,
+ 0xA8DA,
+ 0xA8E0,
+ 0xA954,
+ 0xA95F,
+ 0xA97D,
+ 0xA980,
+ 0xA9CE,
+ 0xA9CF,
+ 0xA9DA,
+ 0xA9DE,
+ 0xA9FF,
+ 0xAA00,
+ 0xAA37,
+ 0xAA40,
+ 0xAA4E,
+ 0xAA50,
+ 0xAA5A,
+ 0xAA5C,
+ 0xAAC3,
+ 0xAADB,
+ 0xAAF7,
+ 0xAB01,
+ 0xAB07,
+ 0xAB09,
+ 0xAB0F,
+ 0xAB11,
+ 0xAB17,
+ 0xAB20,
+ 0xAB27,
+ 0xAB28,
+ 0xAB2F,
+ 0xAB30,
+ 0xAB6C,
+ 0xAB70,
+ 0xABEE,
+ 0xABF0,
+ 0xABFA,
+ 0xAC00,
+ 0xD7A4,
+ 0xD7B0,
+ 0xD7C7,
+ 0xD7CB,
+ 0xD7FC,
+ 0xD800,
+ 0xFA6E,
+ 0xFA70,
+ 0xFADA,
+ 0xFB00,
+ 0xFB07,
+ 0xFB13,
+ 0xFB18,
+ 0xFB1D,
+ 0xFB37,
+ 0xFB38,
+ 0xFB3D,
+ 0xFB3E,
+ 0xFB3F,
+ 0xFB40,
+ 0xFB42,
+ 0xFB43,
+ 0xFB45,
+ 0xFB46,
+ 0xFBC3,
+ 0xFBD3,
+ 0xFD90,
+ 0xFD92,
+ 0xFDC8,
+ 0xFDCF,
+ 0xFE1A,
+ 0xFE20,
+ 0xFE53,
+ 0xFE54,
+ 0xFE67,
+ 0xFE68,
+ 0xFE6C,
+ 0xFE70,
+ 0xFE75,
+ 0xFE76,
+ 0xFEFD,
+ 0xFEFF,
+ 0xFF00,
+ 0xFF01,
+ 0xFFBF,
+ 0xFFC2,
+ 0xFFC8,
+ 0xFFCA,
+ 0xFFD0,
+ 0xFFD2,
+ 0xFFD8,
+ 0xFFDA,
+ 0xFFDD,
+ 0xFFE0,
+ 0xFFE7,
+ 0xFFE8,
+ 0xFFEF,
+ 0xFFF9,
+ 0x1000C,
+ 0x1000D,
+ 0x10027,
+ 0x10028,
+ 0x1003B,
+ 0x1003C,
+ 0x1003E,
+ 0x1003F,
+ 0x1004E,
+ 0x10050,
+ 0x1005E,
+ 0x10080,
+ 0x100FB,
+ 0x10100,
+ 0x10103,
+ 0x10107,
+ 0x10134,
+ 0x10137,
+ 0x1018F,
+ 0x10190,
+ 0x1019D,
+ 0x101A0,
+ 0x101A1,
+ 0x101D0,
+ 0x101FE,
+ 0x10280,
+ 0x1029D,
+ 0x102A0,
+ 0x102D1,
+ 0x102E0,
+ 0x102FC,
+ 0x10300,
+ 0x10324,
+ 0x1032D,
+ 0x1034B,
+ 0x10350,
+ 0x1037B,
+ 0x10380,
+ 0x1039E,
+ 0x1039F,
+ 0x103C4,
+ 0x103C8,
+ 0x103D6,
+ 0x10400,
+ 0x1049E,
+ 0x104A0,
+ 0x104AA,
+ 0x104B0,
+ 0x104D4,
+ 0x104D8,
+ 0x104FC,
+ 0x10500,
+ 0x10528,
+ 0x10530,
+ 0x10564,
+ 0x1056F,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
+ 0x10600,
+ 0x10737,
+ 0x10740,
+ 0x10756,
+ 0x10760,
+ 0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
+ 0x10800,
+ 0x10806,
+ 0x10808,
+ 0x10809,
+ 0x1080A,
+ 0x10836,
+ 0x10837,
+ 0x10839,
+ 0x1083C,
+ 0x1083D,
+ 0x1083F,
+ 0x10856,
+ 0x10857,
+ 0x1089F,
+ 0x108A7,
+ 0x108B0,
+ 0x108E0,
+ 0x108F3,
+ 0x108F4,
+ 0x108F6,
+ 0x108FB,
+ 0x1091C,
+ 0x1091F,
+ 0x1093A,
+ 0x1093F,
+ 0x10940,
+ 0x10980,
+ 0x109B8,
+ 0x109BC,
+ 0x109D0,
+ 0x109D2,
+ 0x10A04,
+ 0x10A05,
+ 0x10A07,
+ 0x10A0C,
+ 0x10A14,
+ 0x10A15,
+ 0x10A18,
+ 0x10A19,
+ 0x10A36,
+ 0x10A38,
+ 0x10A3B,
+ 0x10A3F,
+ 0x10A49,
+ 0x10A50,
+ 0x10A59,
+ 0x10A60,
+ 0x10AA0,
+ 0x10AC0,
+ 0x10AE7,
+ 0x10AEB,
+ 0x10AF7,
+ 0x10B00,
+ 0x10B36,
+ 0x10B39,
+ 0x10B56,
+ 0x10B58,
+ 0x10B73,
+ 0x10B78,
+ 0x10B92,
+ 0x10B99,
+ 0x10B9D,
+ 0x10BA9,
+ 0x10BB0,
+ 0x10C00,
+ 0x10C49,
+ 0x10C80,
+ 0x10CB3,
+ 0x10CC0,
+ 0x10CF3,
+ 0x10CFA,
+ 0x10D28,
+ 0x10D30,
+ 0x10D3A,
+ 0x10E60,
+ 0x10E7F,
+ 0x10E80,
+ 0x10EAA,
+ 0x10EAB,
+ 0x10EAE,
+ 0x10EB0,
+ 0x10EB2,
+ 0x10EFD,
+ 0x10F28,
+ 0x10F30,
+ 0x10F5A,
+ 0x10F70,
+ 0x10F8A,
+ 0x10FB0,
+ 0x10FCC,
+ 0x10FE0,
+ 0x10FF7,
+ 0x11000,
+ 0x1104E,
+ 0x11052,
+ 0x11076,
+ 0x1107F,
+ 0x110C3,
+ 0x110CD,
+ 0x110CE,
+ 0x110D0,
+ 0x110E9,
+ 0x110F0,
+ 0x110FA,
+ 0x11100,
+ 0x11135,
+ 0x11136,
+ 0x11148,
+ 0x11150,
+ 0x11177,
+ 0x11180,
+ 0x111E0,
+ 0x111E1,
+ 0x111F5,
+ 0x11200,
+ 0x11212,
+ 0x11213,
+ 0x11242,
+ 0x11280,
+ 0x11287,
+ 0x11288,
+ 0x11289,
+ 0x1128A,
+ 0x1128E,
+ 0x1128F,
+ 0x1129E,
+ 0x1129F,
+ 0x112AA,
+ 0x112B0,
+ 0x112EB,
+ 0x112F0,
+ 0x112FA,
+ 0x11300,
+ 0x11304,
+ 0x11305,
+ 0x1130D,
+ 0x1130F,
+ 0x11311,
+ 0x11313,
+ 0x11329,
+ 0x1132A,
+ 0x11331,
+ 0x11332,
+ 0x11334,
+ 0x11335,
+ 0x1133A,
+ 0x1133B,
+ 0x11345,
+ 0x11347,
+ 0x11349,
+ 0x1134B,
+ 0x1134E,
+ 0x11350,
+ 0x11351,
+ 0x11357,
+ 0x11358,
+ 0x1135D,
+ 0x11364,
+ 0x11366,
+ 0x1136D,
+ 0x11370,
+ 0x11375,
+ 0x11400,
+ 0x1145C,
+ 0x1145D,
+ 0x11462,
+ 0x11480,
+ 0x114C8,
+ 0x114D0,
+ 0x114DA,
+ 0x11580,
+ 0x115B6,
+ 0x115B8,
+ 0x115DE,
+ 0x11600,
+ 0x11645,
+ 0x11650,
+ 0x1165A,
+ 0x11660,
+ 0x1166D,
+ 0x11680,
+ 0x116BA,
+ 0x116C0,
+ 0x116CA,
+ 0x11700,
+ 0x1171B,
+ 0x1171D,
+ 0x1172C,
+ 0x11730,
+ 0x11747,
+ 0x11800,
+ 0x1183C,
+ 0x118A0,
+ 0x118F3,
+ 0x118FF,
+ 0x11907,
+ 0x11909,
+ 0x1190A,
+ 0x1190C,
+ 0x11914,
+ 0x11915,
+ 0x11917,
+ 0x11918,
+ 0x11936,
+ 0x11937,
+ 0x11939,
+ 0x1193B,
+ 0x11947,
+ 0x11950,
+ 0x1195A,
+ 0x119A0,
+ 0x119A8,
+ 0x119AA,
+ 0x119D8,
+ 0x119DA,
+ 0x119E5,
+ 0x11A00,
+ 0x11A48,
+ 0x11A50,
+ 0x11AA3,
+ 0x11AB0,
+ 0x11AF9,
+ 0x11B00,
+ 0x11B0A,
+ 0x11C00,
+ 0x11C09,
+ 0x11C0A,
+ 0x11C37,
+ 0x11C38,
+ 0x11C46,
+ 0x11C50,
+ 0x11C6D,
+ 0x11C70,
+ 0x11C90,
+ 0x11C92,
+ 0x11CA8,
+ 0x11CA9,
+ 0x11CB7,
+ 0x11D00,
+ 0x11D07,
+ 0x11D08,
+ 0x11D0A,
+ 0x11D0B,
+ 0x11D37,
+ 0x11D3A,
+ 0x11D3B,
+ 0x11D3C,
+ 0x11D3E,
+ 0x11D3F,
+ 0x11D48,
+ 0x11D50,
+ 0x11D5A,
+ 0x11D60,
+ 0x11D66,
+ 0x11D67,
+ 0x11D69,
+ 0x11D6A,
+ 0x11D8F,
+ 0x11D90,
+ 0x11D92,
+ 0x11D93,
+ 0x11D99,
+ 0x11DA0,
+ 0x11DAA,
+ 0x11EE0,
+ 0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
+ 0x11FB0,
+ 0x11FB1,
+ 0x11FC0,
+ 0x11FF2,
+ 0x11FFF,
+ 0x1239A,
+ 0x12400,
+ 0x1246F,
+ 0x12470,
+ 0x12475,
+ 0x12480,
+ 0x12544,
+ 0x12F90,
+ 0x12FF3,
+ 0x13000,
+ 0x13456,
+ 0x14400,
+ 0x14647,
+ 0x16800,
+ 0x16A39,
+ 0x16A40,
+ 0x16A5F,
+ 0x16A60,
+ 0x16A6A,
+ 0x16A6E,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
+ 0x16AD0,
+ 0x16AEE,
+ 0x16AF0,
+ 0x16AF6,
+ 0x16B00,
+ 0x16B46,
+ 0x16B50,
+ 0x16B5A,
+ 0x16B5B,
+ 0x16B62,
+ 0x16B63,
+ 0x16B78,
+ 0x16B7D,
+ 0x16B90,
+ 0x16E40,
+ 0x16E9B,
+ 0x16F00,
+ 0x16F4B,
+ 0x16F4F,
+ 0x16F88,
+ 0x16F8F,
+ 0x16FA0,
+ 0x16FE0,
+ 0x16FE5,
+ 0x16FF0,
+ 0x16FF2,
+ 0x17000,
+ 0x187F8,
+ 0x18800,
+ 0x18CD6,
+ 0x18D00,
+ 0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
+ 0x1B000,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
+ 0x1B150,
+ 0x1B153,
+ 0x1B155,
+ 0x1B156,
+ 0x1B164,
+ 0x1B168,
+ 0x1B170,
+ 0x1B2FC,
+ 0x1BC00,
+ 0x1BC6B,
+ 0x1BC70,
+ 0x1BC7D,
+ 0x1BC80,
+ 0x1BC89,
+ 0x1BC90,
+ 0x1BC9A,
+ 0x1BC9C,
+ 0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
+ 0x1D000,
+ 0x1D0F6,
+ 0x1D100,
+ 0x1D127,
+ 0x1D129,
+ 0x1D1EB,
+ 0x1D200,
+ 0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
+ 0x1D2E0,
+ 0x1D2F4,
+ 0x1D300,
+ 0x1D357,
+ 0x1D360,
+ 0x1D379,
+ 0x1D400,
+ 0x1D455,
+ 0x1D456,
+ 0x1D49D,
+ 0x1D49E,
+ 0x1D4A0,
+ 0x1D4A2,
+ 0x1D4A3,
+ 0x1D4A5,
+ 0x1D4A7,
+ 0x1D4A9,
+ 0x1D4AD,
+ 0x1D4AE,
+ 0x1D4BA,
+ 0x1D4BB,
+ 0x1D4BC,
+ 0x1D4BD,
+ 0x1D4C4,
+ 0x1D4C5,
+ 0x1D506,
+ 0x1D507,
+ 0x1D50B,
+ 0x1D50D,
+ 0x1D515,
+ 0x1D516,
+ 0x1D51D,
+ 0x1D51E,
+ 0x1D53A,
+ 0x1D53B,
+ 0x1D53F,
+ 0x1D540,
+ 0x1D545,
+ 0x1D546,
+ 0x1D547,
+ 0x1D54A,
+ 0x1D551,
+ 0x1D552,
+ 0x1D6A6,
+ 0x1D6A8,
+ 0x1D7CC,
+ 0x1D7CE,
+ 0x1DA8C,
+ 0x1DA9B,
+ 0x1DAA0,
+ 0x1DAA1,
+ 0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E000,
+ 0x1E007,
+ 0x1E008,
+ 0x1E019,
+ 0x1E01B,
+ 0x1E022,
+ 0x1E023,
+ 0x1E025,
+ 0x1E026,
+ 0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
+ 0x1E100,
+ 0x1E12D,
+ 0x1E130,
+ 0x1E13E,
+ 0x1E140,
+ 0x1E14A,
+ 0x1E14E,
+ 0x1E150,
+ 0x1E290,
+ 0x1E2AF,
+ 0x1E2C0,
+ 0x1E2FA,
+ 0x1E2FF,
+ 0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
+ 0x1E800,
+ 0x1E8C5,
+ 0x1E8C7,
+ 0x1E8D7,
+ 0x1E900,
+ 0x1E94C,
+ 0x1E950,
+ 0x1E95A,
+ 0x1E95E,
+ 0x1E960,
+ 0x1EC71,
+ 0x1ECB5,
+ 0x1ED01,
+ 0x1ED3E,
+ 0x1EE00,
+ 0x1EE04,
+ 0x1EE05,
+ 0x1EE20,
+ 0x1EE21,
+ 0x1EE23,
+ 0x1EE24,
+ 0x1EE25,
+ 0x1EE27,
+ 0x1EE28,
+ 0x1EE29,
+ 0x1EE33,
+ 0x1EE34,
+ 0x1EE38,
+ 0x1EE39,
+ 0x1EE3A,
+ 0x1EE3B,
+ 0x1EE3C,
+ 0x1EE42,
+ 0x1EE43,
+ 0x1EE47,
+ 0x1EE48,
+ 0x1EE49,
+ 0x1EE4A,
+ 0x1EE4B,
+ 0x1EE4C,
+ 0x1EE4D,
+ 0x1EE50,
+ 0x1EE51,
+ 0x1EE53,
+ 0x1EE54,
+ 0x1EE55,
+ 0x1EE57,
+ 0x1EE58,
+ 0x1EE59,
+ 0x1EE5A,
+ 0x1EE5B,
+ 0x1EE5C,
+ 0x1EE5D,
+ 0x1EE5E,
+ 0x1EE5F,
+ 0x1EE60,
+ 0x1EE61,
+ 0x1EE63,
+ 0x1EE64,
+ 0x1EE65,
+ 0x1EE67,
+ 0x1EE6B,
+ 0x1EE6C,
+ 0x1EE73,
+ 0x1EE74,
+ 0x1EE78,
+ 0x1EE79,
+ 0x1EE7D,
+ 0x1EE7E,
+ 0x1EE7F,
+ 0x1EE80,
+ 0x1EE8A,
+ 0x1EE8B,
+ 0x1EE9C,
+ 0x1EEA1,
+ 0x1EEA4,
+ 0x1EEA5,
+ 0x1EEAA,
+ 0x1EEAB,
+ 0x1EEBC,
+ 0x1EEF0,
+ 0x1EEF2,
+ 0x1F000,
+ 0x1F02C,
+ 0x1F030,
+ 0x1F094,
+ 0x1F0A0,
+ 0x1F0AF,
+ 0x1F0B1,
+ 0x1F0C0,
+ 0x1F0C1,
+ 0x1F0D0,
+ 0x1F0D1,
+ 0x1F0F6,
+ 0x1F100,
+ 0x1F1AE,
+ 0x1F1E6,
+ 0x1F203,
+ 0x1F210,
+ 0x1F23C,
+ 0x1F240,
+ 0x1F249,
+ 0x1F250,
+ 0x1F252,
+ 0x1F260,
+ 0x1F266,
+ 0x1F300,
+ 0x1F6D8,
+ 0x1F6DC,
+ 0x1F6ED,
+ 0x1F6F0,
+ 0x1F6FD,
+ 0x1F700,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
+ 0x1F7E0,
+ 0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
+ 0x1F800,
+ 0x1F80C,
+ 0x1F810,
+ 0x1F848,
+ 0x1F850,
+ 0x1F85A,
+ 0x1F860,
+ 0x1F888,
+ 0x1F890,
+ 0x1F8AE,
+ 0x1F8B0,
+ 0x1F8B2,
+ 0x1F900,
+ 0x1FA54,
+ 0x1FA60,
+ 0x1FA6E,
+ 0x1FA70,
+ 0x1FA7D,
+ 0x1FA80,
+ 0x1FA89,
+ 0x1FA90,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
+ 0x1FB00,
+ 0x1FB93,
+ 0x1FB94,
+ 0x1FBCB,
+ 0x1FBF0,
+ 0x1FBFA,
+ 0x1FFFE,
+ 0x2A6E0,
+ 0x2A700,
+ 0x2B73A,
+ 0x2B740,
+ 0x2B81E,
+ 0x2B820,
+ 0x2CEA2,
+ 0x2CEB0,
+ 0x2EBE1,
+ 0x2F800,
+ 0x2FA1E,
+ 0x2FFFE,
+ 0x3134B,
+ 0x31350,
+ 0x323B0,
+ 0x3FFFE,
+ 0x40000,
+ 0x4FFFE,
+ 0x50000,
+ 0x5FFFE,
+ 0x60000,
+ 0x6FFFE,
+ 0x70000,
+ 0x7FFFE,
+ 0x80000,
+ 0x8FFFE,
+ 0x90000,
+ 0x9FFFE,
+ 0xA0000,
+ 0xAFFFE,
+ 0xB0000,
+ 0xBFFFE,
+ 0xC0000,
+ 0xCFFFE,
+ 0xD0000,
+ 0xDFFFE,
+ 0xE0000,
+ 0xE0001,
+ 0xE0002,
+ 0xE0020,
+ 0xE0080,
+ 0xE0100,
+ 0xE01F0,
+ 0xEFFFE,
+ 0x110000
+};
+
static const UV UNI_INADLAM_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -302211,7 +314306,7 @@ static const UV UNI_INAHOM_invlist[] = { /* for all charsets */
1 if it starts at the element beyond 0 */
0x0,
0x11700,
- 0x11740
+ 0x11750
};
static const UV UNI_INANATOLIANHIEROGLYPHS_invlist[] = { /* for all charsets */
@@ -302434,6 +314529,16 @@ static const UV UNI_INCUNEIFORM_invlist[] = { /* for all charsets */
0x12400
};
+static const UV UNI_INCYPROMINOAN_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x12F90,
+ 0x13000
+};
+
static const UV UNI_INCYRILLIC_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -302764,6 +314869,16 @@ static const UV UNI_INKATAKANA_invlist[] = { /* for all charsets */
0x3100
};
+static const UV UNI_INKAWI_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x11F00,
+ 0x11F60
+};
+
static const UV UNI_INKHAROSHTHI_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -303064,6 +315179,16 @@ static const UV UNI_INNABATAEAN_invlist[] = { /* for all charsets */
0x108B0
};
+static const UV UNI_INNAGMUNDARI_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x1E4D0,
+ 0x1E500
+};
+
static const UV UNI_INNANDINAGARI_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -303194,6 +315319,16 @@ static const UV UNI_INOLDTURKIC_invlist[] = { /* for all charsets */
0x10C50
};
+static const UV UNI_INOLDUYGHUR_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x10F70,
+ 0x10FB0
+};
+
static const UV UNI_INORIYA_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -303245,7 +315380,7 @@ static const UV UNI_INPAUCINHAU_invlist[] = { /* for all charsets */
};
static const UV UNI_INPC__BOTTOM_invlist[] = { /* for all charsets */
- 287, /* Number of elements */
+ 295, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -303296,6 +315431,8 @@ static const UV UNI_INPC__BOTTOM_invlist[] = { /* for all charsets */
0xB4E,
0xB62,
0xB64,
+ 0xC3C,
+ 0xC3D,
0xC56,
0xC57,
0xC62,
@@ -303353,7 +315490,7 @@ static const UV UNI_INPC__BOTTOM_invlist[] = { /* for all charsets */
0x1713,
0x1715,
0x1733,
- 0x1735,
+ 0x1734,
0x1753,
0x1754,
0x1773,
@@ -303442,6 +315579,8 @@ static const UV UNI_INPC__BOTTOM_invlist[] = { /* for all charsets */
0x110B5,
0x110B9,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x1112A,
0x1112C,
0x11131,
@@ -303456,6 +315595,8 @@ static const UV UNI_INPC__BOTTOM_invlist[] = { /* for all charsets */
0x111CD,
0x1122F,
0x11230,
+ 0x11241,
+ 0x11242,
0x112E3,
0x112E5,
0x112E9,
@@ -303535,7 +315676,9 @@ static const UV UNI_INPC__BOTTOM_invlist[] = { /* for all charsets */
0x11D47,
0x11D48,
0x11EF4,
- 0x11EF5
+ 0x11EF5,
+ 0x11F38,
+ 0x11F3B
};
static const UV UNI_INPC__BOTTOMANDLEFT_invlist[] = { /* for all charsets */
@@ -303565,7 +315708,7 @@ static const UV UNI_INPC__BOTTOMANDRIGHT_invlist[] = { /* for all charsets */
};
static const UV UNI_INPC__LEFT_invlist[] = { /* for all charsets */
- 95, /* Number of elements */
+ 97, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -303663,7 +315806,9 @@ static const UV UNI_INPC__LEFT_invlist[] = { /* for all charsets */
0x11CB1,
0x11CB2,
0x11EF5,
- 0x11EF6
+ 0x11EF6,
+ 0x11F3E,
+ 0x11F40
};
static const UV UNI_INPC__LEFTANDRIGHT_invlist[] = { /* for all charsets */
@@ -303703,7 +315848,7 @@ static const UV UNI_INPC__LEFTANDRIGHT_invlist[] = { /* for all charsets */
};
static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */
- 421, /* Number of elements */
+ 441, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -303715,6 +315860,8 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */
0x93E,
0x950,
0x951,
+ 0x953,
+ 0x955,
0x958,
0x962,
0x964,
@@ -303790,6 +315937,8 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */
0xBD8,
0xC00,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC45,
0xC46,
@@ -303814,6 +315963,8 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */
0xCD7,
0xCE2,
0xCE4,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD3B,
@@ -303851,7 +316002,7 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */
0xEC0,
0xEC5,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -303893,7 +316044,7 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */
0x109A,
0x109E,
0x1712,
- 0x1715,
+ 0x1716,
0x1732,
0x1735,
0x1752,
@@ -303970,7 +316121,7 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */
0xA8F2,
0xA8FF,
0xA900,
- 0xA92B,
+ 0xA926,
0xA92E,
0xA947,
0xA954,
@@ -304012,10 +316163,16 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */
0x11003,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x11080,
0x11083,
0x110B0,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -304040,6 +316197,8 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112EB,
0x11300,
@@ -304127,7 +316286,13 @@ static const UV UNI_INPC__NA_invlist[] = { /* for all charsets */
0x11D93,
0x11D97,
0x11EF3,
- 0x11EF7
+ 0x11EF7,
+ 0x11F00,
+ 0x11F04,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F42
};
static const UV UNI_INPC__OVERSTRUCK_invlist[] = { /* for all charsets */
@@ -304147,7 +316312,7 @@ static const UV UNI_INPC__OVERSTRUCK_invlist[] = { /* for all charsets */
};
static const UV UNI_INPC__RIGHT_invlist[] = { /* for all charsets */
- 329, /* Number of elements */
+ 341, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -304210,6 +316375,8 @@ static const UV UNI_INPC__RIGHT_invlist[] = { /* for all charsets */
0xCC5,
0xCD5,
0xCD7,
+ 0xCF3,
+ 0xCF4,
0xD02,
0xD04,
0xD3E,
@@ -304260,6 +316427,10 @@ static const UV UNI_INPC__RIGHT_invlist[] = { /* for all charsets */
0x1090,
0x109A,
0x109D,
+ 0x1715,
+ 0x1716,
+ 0x1734,
+ 0x1735,
0x17B6,
0x17B7,
0x17C7,
@@ -304479,11 +316650,17 @@ static const UV UNI_INPC__RIGHT_invlist[] = { /* for all charsets */
0x11D96,
0x11D97,
0x11EF6,
- 0x11EF7
+ 0x11EF7,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F36,
+ 0x11F41,
+ 0x11F42
};
static const UV UNI_INPC__TOP_invlist[] = { /* for all charsets */
- 387, /* Number of elements */
+ 399, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -304496,7 +316673,7 @@ static const UV UNI_INPC__TOP_invlist[] = { /* for all charsets */
0x949,
0x951,
0x952,
- 0x953,
+ 0x955,
0x956,
0x981,
0x982,
@@ -304575,7 +316752,7 @@ static const UV UNI_INPC__TOP_invlist[] = { /* for all charsets */
0xEBB,
0xEBC,
0xEC8,
- 0xECE,
+ 0xECF,
0xF39,
0xF3A,
0xF72,
@@ -304694,6 +316871,8 @@ static const UV UNI_INPC__TOP_invlist[] = { /* for all charsets */
0xA8F2,
0xA8FF,
0xA900,
+ 0xA926,
+ 0xA92B,
0xA94A,
0xA94B,
0xA94F,
@@ -304746,6 +316925,10 @@ static const UV UNI_INPC__TOP_invlist[] = { /* for all charsets */
0x1103C,
0x11042,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x11080,
0x11082,
0x110B5,
@@ -304873,7 +317056,13 @@ static const UV UNI_INPC__TOP_invlist[] = { /* for all charsets */
0x11D95,
0x11D96,
0x11EF3,
- 0x11EF4
+ 0x11EF4,
+ 0x11F00,
+ 0x11F03,
+ 0x11F36,
+ 0x11F38,
+ 0x11F40,
+ 0x11F41
};
static const UV UNI_INPC__TOPANDBOTTOM_invlist[] = { /* for all charsets */
@@ -305103,7 +317292,7 @@ static const UV UNI_INSC__AVAGRAHA_invlist[] = { /* for all charsets */
};
static const UV UNI_INSC__BINDU_invlist[] = { /* for all charsets */
- 113, /* Number of elements */
+ 117, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -305130,6 +317319,8 @@ static const UV UNI_INSC__BINDU_invlist[] = { /* for all charsets */
0xC05,
0xC80,
0xC83,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD03,
0xD04,
@@ -305219,7 +317410,9 @@ static const UV UNI_INSC__BINDU_invlist[] = { /* for all charsets */
0x11D40,
0x11D41,
0x11D95,
- 0x11D96
+ 0x11D96,
+ 0x11F00,
+ 0x11F02
};
static const UV UNI_INSC__BRAHMIJOININGNUMBER_invlist[] = { /* for all charsets */
@@ -305233,7 +317426,7 @@ static const UV UNI_INSC__BRAHMIJOININGNUMBER_invlist[] = { /* for all charsets
};
static const UV UNI_INSC__CANTILLATIONMARK_invlist[] = { /* for all charsets */
- 25, /* Number of elements */
+ 27, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -305243,6 +317436,8 @@ static const UV UNI_INSC__CANTILLATIONMARK_invlist[] = { /* for all charsets */
0xA51,
0xA52,
0xAFA,
+ 0xAFB,
+ 0xAFC,
0xAFD,
0x1CD0,
0x1CD3,
@@ -305265,7 +317460,7 @@ static const UV UNI_INSC__CANTILLATIONMARK_invlist[] = { /* for all charsets */
};
static const UV UNI_INSC__CONSONANT_invlist[] = { /* for all charsets */
- 307, /* Number of elements */
+ 315, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -305405,9 +317600,9 @@ static const UV UNI_INSC__CONSONANT_invlist[] = { /* for all charsets */
0x108E,
0x108F,
0x1703,
- 0x170D,
- 0x170E,
0x1712,
+ 0x171F,
+ 0x1720,
0x1723,
0x1732,
0x1743,
@@ -305433,7 +317628,7 @@ static const UV UNI_INSC__CONSONANT_invlist[] = { /* for all charsets */
0x1B13,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B8A,
0x1BA1,
0x1BAE,
@@ -305502,6 +317697,8 @@ static const UV UNI_INSC__CONSONANT_invlist[] = { /* for all charsets */
0x10A36,
0x11013,
0x11038,
+ 0x11075,
+ 0x11076,
0x1108D,
0x110B0,
0x11107,
@@ -305518,6 +317715,8 @@ static const UV UNI_INSC__CONSONANT_invlist[] = { /* for all charsets */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11240,
0x11284,
0x11287,
0x11288,
@@ -305552,6 +317751,8 @@ static const UV UNI_INSC__CONSONANT_invlist[] = { /* for all charsets */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x1180A,
0x1182C,
0x1190C,
@@ -305575,17 +317776,23 @@ static const UV UNI_INSC__CONSONANT_invlist[] = { /* for all charsets */
0x11D6C,
0x11D8A,
0x11EE0,
- 0x11EF2
+ 0x11EF2,
+ 0x11F12,
+ 0x11F34
};
static const UV UNI_INSC__CONSONANTDEAD_invlist[] = { /* for all charsets */
- 9, /* Number of elements */
+ 13, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
0x0,
0x9CE,
0x9CF,
+ 0xC5D,
+ 0xC5E,
+ 0xCDD,
+ 0xCDE,
0xD54,
0xD57,
0xD7A,
@@ -305595,7 +317802,7 @@ static const UV UNI_INSC__CONSONANTDEAD_invlist[] = { /* for all charsets */
};
static const UV UNI_INSC__CONSONANTFINAL_invlist[] = { /* for all charsets */
- 23, /* Number of elements */
+ 29, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -305608,6 +317815,10 @@ static const UV UNI_INSC__CONSONANTFINAL_invlist[] = { /* for all charsets */
0x19C8,
0x1A58,
0x1A5A,
+ 0x1B03,
+ 0x1B04,
+ 0x1B81,
+ 0x1B82,
0x1BBE,
0x1BC0,
0x1BF0,
@@ -305616,6 +317827,8 @@ static const UV UNI_INSC__CONSONANTFINAL_invlist[] = { /* for all charsets */
0x1C34,
0xA94F,
0xA953,
+ 0xA982,
+ 0xA983,
0xAA40,
0xAA4E,
0xABDB,
@@ -305825,7 +318038,7 @@ static const UV UNI_INSC__CONSONANTPLACEHOLDER_invlist[] = { /* for EBCDIC 037
# endif /* EBCDIC 037 */
static const UV UNI_INSC__CONSONANTPRECEDINGREPHA_invlist[] = { /* for all charsets */
- 7, /* Number of elements */
+ 9, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -305835,7 +318048,9 @@ static const UV UNI_INSC__CONSONANTPRECEDINGREPHA_invlist[] = { /* for all char
0x11941,
0x11942,
0x11D46,
- 0x11D47
+ 0x11D47,
+ 0x11F02,
+ 0x11F03
};
static const UV UNI_INSC__CONSONANTPREFIXED_invlist[] = { /* for all charsets */
@@ -305887,19 +318102,13 @@ static const UV UNI_INSC__CONSONANTSUBJOINED_invlist[] = { /* for all charsets
};
static const UV UNI_INSC__CONSONANTSUCCEEDINGREPHA_invlist[] = { /* for all charsets */
- 9, /* Number of elements */
+ 3, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
0x0,
0x17CC,
- 0x17CD,
- 0x1B03,
- 0x1B04,
- 0x1B81,
- 0x1B82,
- 0xA982,
- 0xA983
+ 0x17CD
};
static const UV UNI_INSC__CONSONANTWITHSTACKER_invlist[] = { /* for all charsets */
@@ -305919,13 +318128,15 @@ static const UV UNI_INSC__CONSONANTWITHSTACKER_invlist[] = { /* for all charset
};
static const UV UNI_INSC__GEMINATIONMARK_invlist[] = { /* for all charsets */
- 7, /* Number of elements */
+ 9, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
0x0,
0xA71,
0xA72,
+ 0xAFB,
+ 0xAFC,
0x11237,
0x11238,
0x11A98,
@@ -305933,7 +318144,7 @@ static const UV UNI_INSC__GEMINATIONMARK_invlist[] = { /* for all charsets */
};
static const UV UNI_INSC__INVISIBLESTACKER_invlist[] = { /* for all charsets */
- 25, /* Number of elements */
+ 27, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -305961,7 +318172,9 @@ static const UV UNI_INSC__INVISIBLESTACKER_invlist[] = { /* for all charsets */
0x11D45,
0x11D46,
0x11D97,
- 0x11D98
+ 0x11D98,
+ 0x11F42,
+ 0x11F43
};
static const UV UNI_INSC__MODIFYINGLETTER_invlist[] = { /* for all charsets */
@@ -305985,7 +318198,7 @@ static const UV UNI_INSC__NONJOINER_invlist[] = { /* for all charsets */
};
static const UV UNI_INSC__NUKTA_invlist[] = { /* for all charsets */
- 53, /* Number of elements */
+ 55, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -306002,6 +318215,8 @@ static const UV UNI_INSC__NUKTA_invlist[] = { /* for all charsets */
0xB00,
0xB3C,
0xB3D,
+ 0xC3C,
+ 0xC3D,
0xCBC,
0xCBD,
0xF39,
@@ -306047,7 +318262,7 @@ static const UV UNI_INSC__NUKTA_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_INSC__NUMBER_invlist[] = { /* for ASCII/Latin1 */
- 91, /* Number of elements */
+ 93, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -306141,7 +318356,9 @@ static const UV UNI_INSC__NUMBER_invlist[] = { /* for ASCII/Latin1 */
0x11D50,
0x11D5A,
0x11DA0,
- 0x11DAA
+ 0x11DAA,
+ 0x11F50,
+ 0x11F5A
};
# endif /* ASCII/Latin1 */
@@ -306152,7 +318369,7 @@ static const UV UNI_INSC__NUMBER_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_INSC__NUMBER_invlist[] = { /* for EBCDIC 1047 */
- 91, /* Number of elements */
+ 93, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -306246,7 +318463,9 @@ static const UV UNI_INSC__NUMBER_invlist[] = { /* for EBCDIC 1047 */
0x11D50,
0x11D5A,
0x11DA0,
- 0x11DAA
+ 0x11DAA,
+ 0x11F50,
+ 0x11F5A
};
# endif /* EBCDIC 1047 */
@@ -306257,7 +318476,7 @@ static const UV UNI_INSC__NUMBER_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_INSC__NUMBER_invlist[] = { /* for EBCDIC 037 */
- 91, /* Number of elements */
+ 93, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -306351,7 +318570,9 @@ static const UV UNI_INSC__NUMBER_invlist[] = { /* for EBCDIC 037 */
0x11D50,
0x11D5A,
0x11DA0,
- 0x11DAA
+ 0x11DAA,
+ 0x11F50,
+ 0x11F5A
};
# endif /* EBCDIC 037 */
@@ -306369,7 +318590,7 @@ static const UV UNI_INSC__NUMBERJOINER_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */
- 643, /* Number of elements */
+ 655, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -306552,7 +318773,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -306562,6 +318783,8 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -306586,14 +318809,14 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -306665,7 +318888,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */
0xEC8,
0xECC,
0xECD,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -306699,10 +318922,8 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */
0x1050,
0x109E,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -306747,7 +318968,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */
0x1A90,
0x1A9A,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B80,
@@ -306841,9 +319062,11 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */
0x11000,
0x11047,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11135,
0x11136,
@@ -306865,7 +319088,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -306938,6 +319161,8 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */
0x1172C,
0x11730,
0x1173C,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x11900,
@@ -307015,7 +319240,15 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */
0x11DA0,
0x11DAA,
0x11EE0,
- 0x11EF7
+ 0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A
};
# endif /* ASCII/Latin1 */
@@ -307026,7 +319259,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */
- 643, /* Number of elements */
+ 655, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -307209,7 +319442,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -307219,6 +319452,8 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -307243,14 +319478,14 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -307322,7 +319557,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */
0xEC8,
0xECC,
0xECD,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -307356,10 +319591,8 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */
0x1050,
0x109E,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -307404,7 +319637,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */
0x1A90,
0x1A9A,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B80,
@@ -307498,9 +319731,11 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */
0x11000,
0x11047,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11135,
0x11136,
@@ -307522,7 +319757,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -307595,6 +319830,8 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */
0x1172C,
0x11730,
0x1173C,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x11900,
@@ -307672,7 +319909,15 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */
0x11DA0,
0x11DAA,
0x11EE0,
- 0x11EF7
+ 0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A
};
# endif /* EBCDIC 1047 */
@@ -307683,7 +319928,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */
- 643, /* Number of elements */
+ 655, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -307866,7 +320111,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -307876,6 +320121,8 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -307900,14 +320147,14 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -307979,7 +320226,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */
0xEC8,
0xECC,
0xECD,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -308013,10 +320260,8 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */
0x1050,
0x109E,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -308061,7 +320306,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */
0x1A90,
0x1A9A,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B80,
@@ -308155,9 +320400,11 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */
0x11000,
0x11047,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11135,
0x11136,
@@ -308179,7 +320426,7 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -308252,6 +320499,8 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */
0x1172C,
0x11730,
0x1173C,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x11900,
@@ -308329,13 +320578,21 @@ static const UV UNI_INSC__OTHER_invlist[] = { /* for EBCDIC 037 */
0x11DA0,
0x11DAA,
0x11EE0,
- 0x11EF7
+ 0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A
};
# endif /* EBCDIC 037 */
static const UV UNI_INSC__PUREKILLER_invlist[] = { /* for all charsets */
- 43, /* Number of elements */
+ 47, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -308353,7 +320610,7 @@ static const UV UNI_INSC__PUREKILLER_invlist[] = { /* for all charsets */
0x103A,
0x103B,
0x1714,
- 0x1715,
+ 0x1716,
0x1734,
0x1735,
0x17D1,
@@ -308370,6 +320627,8 @@ static const UV UNI_INSC__PUREKILLER_invlist[] = { /* for all charsets */
0xA954,
0xABED,
0xABEE,
+ 0x11070,
+ 0x11071,
0x11134,
0x11135,
0x112EA,
@@ -308381,7 +320640,9 @@ static const UV UNI_INSC__PUREKILLER_invlist[] = { /* for all charsets */
0x11A34,
0x11A35,
0x11D44,
- 0x11D45
+ 0x11D45,
+ 0x11F41,
+ 0x11F42
};
static const UV UNI_INSC__REGISTERSHIFTER_invlist[] = { /* for all charsets */
@@ -308397,7 +320658,7 @@ static const UV UNI_INSC__REGISTERSHIFTER_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for ASCII/Latin1 */
- 39, /* Number of elements */
+ 41, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -308406,6 +320667,8 @@ static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for ASCII/Latin1 */
0xB4,
0x9FE,
0x9FF,
+ 0xECE,
+ 0xECF,
0xF35,
0xF36,
0xF37,
@@ -308450,7 +320713,7 @@ static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for EBCDIC 1047 */
- 41, /* Number of elements */
+ 43, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -308461,6 +320724,8 @@ static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for EBCDIC 1047 */
0xFB,
0x9FE,
0x9FF,
+ 0xECE,
+ 0xECF,
0xF35,
0xF36,
0xF37,
@@ -308505,7 +320770,7 @@ static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for EBCDIC 037 */
- 41, /* Number of elements */
+ 43, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -308516,6 +320781,8 @@ static const UV UNI_INSC__SYLLABLEMODIFIER_invlist[] = { /* for EBCDIC 037 */
0xFB,
0x9FE,
0x9FF,
+ 0xECE,
+ 0xECF,
0xF35,
0xF36,
0xF37,
@@ -308669,7 +320936,7 @@ static const UV UNI_INSC__VIRAMA_invlist[] = { /* for all charsets */
};
static const UV UNI_INSC__VISARGA_invlist[] = { /* for all charsets */
- 71, /* Number of elements */
+ 73, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -308743,7 +321010,9 @@ static const UV UNI_INSC__VISARGA_invlist[] = { /* for all charsets */
0x11D41,
0x11D42,
0x11D96,
- 0x11D97
+ 0x11D97,
+ 0x11F03,
+ 0x11F04
};
static const UV UNI_INSC__VOWEL_invlist[] = { /* for all charsets */
@@ -308765,7 +321034,7 @@ static const UV UNI_INSC__VOWEL_invlist[] = { /* for all charsets */
};
static const UV UNI_INSC__VOWELDEPENDENT_invlist[] = { /* for all charsets */
- 265, /* Number of elements */
+ 275, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -308950,8 +321219,12 @@ static const UV UNI_INSC__VOWELDEPENDENT_invlist[] = { /* for all charsets */
0x10A0E,
0x11038,
0x11046,
+ 0x11073,
+ 0x11075,
0x110B0,
0x110B9,
+ 0x110C2,
+ 0x110C3,
0x11127,
0x11133,
0x11145,
@@ -308964,6 +321237,8 @@ static const UV UNI_INSC__VOWELDEPENDENT_invlist[] = { /* for all charsets */
0x111CF,
0x1122C,
0x11234,
+ 0x11241,
+ 0x11242,
0x112E0,
0x112E9,
0x1133E,
@@ -309033,11 +321308,15 @@ static const UV UNI_INSC__VOWELDEPENDENT_invlist[] = { /* for all charsets */
0x11D93,
0x11D95,
0x11EF3,
- 0x11EF7
+ 0x11EF7,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F41
};
static const UV UNI_INSC__VOWELINDEPENDENT_invlist[] = { /* for all charsets */
- 175, /* Number of elements */
+ 181, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -309154,6 +321433,8 @@ static const UV UNI_INSC__VOWELINDEPENDENT_invlist[] = { /* for all charsets */
0xABD2,
0x11005,
0x11013,
+ 0x11071,
+ 0x11073,
0x11083,
0x1108D,
0x11103,
@@ -309162,6 +321443,8 @@ static const UV UNI_INSC__VOWELINDEPENDENT_invlist[] = { /* for all charsets */
0x11191,
0x11200,
0x11208,
+ 0x11240,
+ 0x11241,
0x11280,
0x11284,
0x112B0,
@@ -309215,7 +321498,9 @@ static const UV UNI_INSC__VOWELINDEPENDENT_invlist[] = { /* for all charsets */
0x11D67,
0x11D69,
0x11D6A,
- 0x11D6C
+ 0x11D6C,
+ 0x11F04,
+ 0x11F11
};
static const UV UNI_INSIDDHAM_invlist[] = { /* for all charsets */
@@ -309368,6 +321653,16 @@ static const UV UNI_INTAMIL_invlist[] = { /* for all charsets */
0xC00
};
+static const UV UNI_INTANGSA_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x16A70,
+ 0x16AD0
+};
+
static const UV UNI_INTANGUT_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -309438,6 +321733,16 @@ static const UV UNI_INTIRHUTA_invlist[] = { /* for all charsets */
0x114E0
};
+static const UV UNI_INTOTO_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x1E290,
+ 0x1E2C0
+};
+
static const UV UNI_INUGARITIC_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -309458,6 +321763,16 @@ static const UV UNI_INVAI_invlist[] = { /* for all charsets */
0xA640
};
+static const UV UNI_INVITHKUQI_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x10570,
+ 0x105C0
+};
+
static const UV UNI_INVS_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -309637,7 +321952,7 @@ static const UV UNI_JG__ALAPH_invlist[] = { /* for all charsets */
};
static const UV UNI_JG__ALEF_invlist[] = { /* for all charsets */
- 13, /* Number of elements */
+ 15, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -309653,7 +321968,9 @@ static const UV UNI_JG__ALEF_invlist[] = { /* for all charsets */
0x675,
0x676,
0x773,
- 0x775
+ 0x775,
+ 0x870,
+ 0x883
};
static const UV UNI_JG__BEH_invlist[] = { /* for all charsets */
@@ -309797,7 +322114,7 @@ static const UV UNI_JG__FINALSEMKATH_invlist[] = { /* for all charsets */
};
static const UV UNI_JG__GAF_invlist[] = { /* for all charsets */
- 15, /* Number of elements */
+ 19, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -309812,10 +322129,14 @@ static const UV UNI_JG__GAF_invlist[] = { /* for all charsets */
0x6B5,
0x762,
0x765,
+ 0x88D,
+ 0x88E,
0x8B0,
0x8B1,
0x8C2,
- 0x8C3
+ 0x8C3,
+ 0x8C8,
+ 0x8C9
};
static const UV UNI_JG__GAMAL_invlist[] = { /* for all charsets */
@@ -309831,7 +322152,7 @@ static const UV UNI_JG__GAMAL_invlist[] = { /* for all charsets */
};
static const UV UNI_JG__HAH_invlist[] = { /* for all charsets */
- 21, /* Number of elements */
+ 23, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -309850,6 +322171,8 @@ static const UV UNI_JG__HAH_invlist[] = { /* for all charsets */
0x773,
0x77C,
0x77D,
+ 0x88A,
+ 0x88B,
0x8A2,
0x8A3,
0x8C1,
@@ -310419,7 +322742,7 @@ static const UV UNI_JG__MIM_invlist[] = { /* for all charsets */
};
static const UV UNI_JG__NOJOININGGROUP_invlist[] = { /* for all charsets */
- 61, /* Number of elements */
+ 65, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -310452,12 +322775,16 @@ static const UV UNI_JG__NOJOININGGROUP_invlist[] = { /* for all charsets */
0x780,
0x860,
0x86B,
+ 0x870,
+ 0x883,
+ 0x886,
+ 0x887,
+ 0x889,
+ 0x88F,
0x8A0,
0x8AD,
0x8AE,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8C9,
0x10AC0,
0x10AC6,
0x10AC7,
@@ -310487,7 +322814,7 @@ static const UV UNI_JG__NOJOININGGROUP_invlist[] = { /* for all charsets */
};
static const UV UNI_JG__NOON_invlist[] = { /* for all charsets */
- 7, /* Number of elements */
+ 9, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -310497,7 +322824,9 @@ static const UV UNI_JG__NOON_invlist[] = { /* for all charsets */
0x6B9,
0x6BD,
0x767,
- 0x76A
+ 0x76A,
+ 0x889,
+ 0x88A
};
static const UV UNI_JG__NUN_invlist[] = { /* for all charsets */
@@ -310531,7 +322860,7 @@ static const UV UNI_JG__PE_invlist[] = { /* for all charsets */
};
static const UV UNI_JG__QAF_invlist[] = { /* for all charsets */
- 9, /* Number of elements */
+ 11, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -310543,7 +322872,9 @@ static const UV UNI_JG__QAF_invlist[] = { /* for all charsets */
0x6A7,
0x6A9,
0x8A5,
- 0x8A6
+ 0x8A6,
+ 0x8B5,
+ 0x8B6
};
static const UV UNI_JG__QAPH_invlist[] = { /* for all charsets */
@@ -310701,7 +323032,7 @@ static const UV UNI_JG__SYRIACWAW_invlist[] = { /* for all charsets */
};
static const UV UNI_JG__TAH_invlist[] = { /* for all charsets */
- 7, /* Number of elements */
+ 9, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -310710,6 +323041,8 @@ static const UV UNI_JG__TAH_invlist[] = { /* for all charsets */
0x639,
0x69F,
0x6A0,
+ 0x88B,
+ 0x88D,
0x8A3,
0x8A4
};
@@ -310748,6 +323081,26 @@ static const UV UNI_JG__TETH_invlist[] = { /* for all charsets */
0x71D
};
+static const UV UNI_JG__THINYEH_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x886,
+ 0x887
+};
+
+static const UV UNI_JG__VERTICALTAIL_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x88E,
+ 0x88F
+};
+
static const UV UNI_JG__WAW_invlist[] = { /* for all charsets */
15, /* Number of elements */
148565664, /* Version and data structure type */
@@ -310865,7 +323218,7 @@ static const UV UNI_JOINC_invlist[] = { /* for all charsets */
};
static const UV UNI_JT__C_invlist[] = { /* for all charsets */
- 9, /* Number of elements */
+ 11, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -310874,6 +323227,8 @@ static const UV UNI_JT__C_invlist[] = { /* for all charsets */
0x641,
0x7FA,
0x7FB,
+ 0x883,
+ 0x886,
0x180A,
0x180B,
0x200D,
@@ -310881,7 +323236,7 @@ static const UV UNI_JT__C_invlist[] = { /* for all charsets */
};
static const UV UNI_JT__D_invlist[] = { /* for all charsets */
- 145, /* Number of elements */
+ 151, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -310958,16 +323313,18 @@ static const UV UNI_JT__D_invlist[] = { /* for all charsets */
0x866,
0x868,
0x869,
+ 0x886,
+ 0x887,
+ 0x889,
+ 0x88E,
0x8A0,
0x8AA,
0x8AF,
0x8B1,
0x8B3,
- 0x8B5,
- 0x8B6,
0x8B9,
0x8BA,
- 0x8C8,
+ 0x8C9,
0x1807,
0x1808,
0x1820,
@@ -311012,6 +323369,10 @@ static const UV UNI_JT__D_invlist[] = { /* for all charsets */
0x10F45,
0x10F51,
0x10F54,
+ 0x10F70,
+ 0x10F74,
+ 0x10F76,
+ 0x10F82,
0x10FB0,
0x10FB1,
0x10FB2,
@@ -311051,7 +323412,7 @@ static const UV UNI_JT__L_invlist[] = { /* for all charsets */
};
static const UV UNI_JT__R_invlist[] = { /* for all charsets */
- 125, /* Number of elements */
+ 131, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -311126,6 +323487,10 @@ static const UV UNI_JT__R_invlist[] = { /* for all charsets */
0x868,
0x869,
0x86B,
+ 0x870,
+ 0x883,
+ 0x88E,
+ 0x88F,
0x8AA,
0x8AD,
0x8AE,
@@ -311170,6 +323535,8 @@ static const UV UNI_JT__R_invlist[] = { /* for all charsets */
0x10F34,
0x10F54,
0x10F55,
+ 0x10F74,
+ 0x10F76,
0x10FB4,
0x10FB7,
0x10FB9,
@@ -311185,7 +323552,7 @@ static const UV UNI_JT__R_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */
- 677, /* Number of elements */
+ 713, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -311244,7 +323611,9 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x903,
@@ -311326,6 +323695,8 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -311377,7 +323748,7 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -311425,7 +323796,7 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -311442,6 +323813,8 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */
0x17DE,
0x180B,
0x180E,
+ 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -311473,7 +323846,7 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -311519,8 +323892,6 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200B,
0x200C,
@@ -311646,18 +324017,28 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11001,
0x11002,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
0x110B7,
0x110B9,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -311682,6 +324063,8 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -311804,8 +324187,18 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -311820,6 +324213,10 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D173,
@@ -311852,10 +324249,16 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -311876,7 +324279,7 @@ static const UV UNI_JT__T_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */
- 677, /* Number of elements */
+ 713, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -311935,7 +324338,9 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x903,
@@ -312017,6 +324422,8 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -312068,7 +324475,7 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -312116,7 +324523,7 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -312133,6 +324540,8 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */
0x17DE,
0x180B,
0x180E,
+ 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -312164,7 +324573,7 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -312210,8 +324619,6 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200B,
0x200C,
@@ -312337,18 +324744,28 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11001,
0x11002,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
0x110B7,
0x110B9,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -312373,6 +324790,8 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -312495,8 +324914,18 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -312511,6 +324940,10 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D173,
@@ -312543,10 +324976,16 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -312567,7 +325006,7 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */
- 677, /* Number of elements */
+ 713, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -312626,7 +325065,9 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x903,
@@ -312708,6 +325149,8 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -312759,7 +325202,7 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -312807,7 +325250,7 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -312824,6 +325267,8 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */
0x17DE,
0x180B,
0x180E,
+ 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -312855,7 +325300,7 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -312901,8 +325346,6 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200B,
0x200C,
@@ -313028,18 +325471,28 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11001,
0x11002,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
0x110B7,
0x110B9,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -313064,6 +325517,8 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -313186,8 +325641,18 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -313202,6 +325667,10 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D173,
@@ -313234,10 +325703,16 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -313255,7 +325730,7 @@ static const UV UNI_JT__T_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
- 727, /* Number of elements */
+ 763, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -313328,13 +325803,15 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
0x866,
0x867,
0x86B,
- 0x8A0,
+ 0x870,
+ 0x887,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8AD,
0x8AE,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x8C9,
+ 0x8CA,
0x8E2,
0x8E3,
0x903,
@@ -313416,6 +325893,8 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -313467,7 +325946,7 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -313515,7 +325994,7 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -313534,6 +326013,8 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
0x1808,
0x180A,
0x180E,
+ 0x180F,
+ 0x1810,
0x1820,
0x1879,
0x1885,
@@ -313565,7 +326046,7 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -313611,8 +326092,6 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200B,
0x200C,
@@ -313754,10 +326233,14 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F30,
0x10F45,
0x10F46,
0x10F55,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FB1,
0x10FB2,
@@ -313772,12 +326255,18 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
0x11002,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
0x110B7,
0x110B9,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -313802,6 +326291,8 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -313924,8 +326415,18 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -313940,6 +326441,10 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D173,
@@ -313972,10 +326477,16 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E900,
@@ -313996,7 +326507,7 @@ static const UV UNI_JT__U_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
- 727, /* Number of elements */
+ 763, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -314069,13 +326580,15 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
0x866,
0x867,
0x86B,
- 0x8A0,
+ 0x870,
+ 0x887,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8AD,
0x8AE,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x8C9,
+ 0x8CA,
0x8E2,
0x8E3,
0x903,
@@ -314157,6 +326670,8 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -314208,7 +326723,7 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -314256,7 +326771,7 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -314275,6 +326790,8 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
0x1808,
0x180A,
0x180E,
+ 0x180F,
+ 0x1810,
0x1820,
0x1879,
0x1885,
@@ -314306,7 +326823,7 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -314352,8 +326869,6 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200B,
0x200C,
@@ -314495,10 +327010,14 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F30,
0x10F45,
0x10F46,
0x10F55,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FB1,
0x10FB2,
@@ -314513,12 +327032,18 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
0x11002,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
0x110B7,
0x110B9,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -314543,6 +327068,8 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -314665,8 +327192,18 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -314681,6 +327218,10 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D173,
@@ -314713,10 +327254,16 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E900,
@@ -314737,7 +327284,7 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
- 727, /* Number of elements */
+ 763, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -314810,13 +327357,15 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
0x866,
0x867,
0x86B,
- 0x8A0,
+ 0x870,
+ 0x887,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8AD,
0x8AE,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x8C9,
+ 0x8CA,
0x8E2,
0x8E3,
0x903,
@@ -314898,6 +327447,8 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -314949,7 +327500,7 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -314997,7 +327548,7 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -315016,6 +327567,8 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
0x1808,
0x180A,
0x180E,
+ 0x180F,
+ 0x1810,
0x1820,
0x1879,
0x1885,
@@ -315047,7 +327600,7 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -315093,8 +327646,6 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200B,
0x200C,
@@ -315236,10 +327787,14 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F30,
0x10F45,
0x10F46,
0x10F55,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FB1,
0x10FB2,
@@ -315254,12 +327809,18 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
0x11002,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
0x110B7,
0x110B9,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -315284,6 +327845,8 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -315406,8 +327969,18 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
0x13430,
- 0x13439,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -315422,6 +327995,10 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D173,
@@ -315454,10 +328031,16 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E900,
@@ -315472,6 +328055,16 @@ static const UV UNI_JT__U_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
+static const UV UNI_KAKTOVIKNUMERALS_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x1D2C0,
+ 0x1D2E0
+};
+
static const UV UNI_KALI_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -315483,7 +328076,7 @@ static const UV UNI_KALI_invlist[] = { /* for all charsets */
};
static const UV UNI_KANA_invlist[] = { /* for all charsets */
- 31, /* Number of elements */
+ 41, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -315514,8 +328107,18 @@ static const UV UNI_KANA_invlist[] = { /* for all charsets */
0xFE47,
0xFF61,
0xFFA0,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
0x1B001,
+ 0x1B120,
+ 0x1B123,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168
};
@@ -315530,6 +328133,16 @@ static const UV UNI_KANAEXTA_invlist[] = { /* for all charsets */
0x1B130
};
+static const UV UNI_KANAEXTB_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x1AFF0,
+ 0x1B000
+};
+
static const UV UNI_KANASUP_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -315570,6 +328183,20 @@ static const UV UNI_KATAKANAEXT_invlist[] = { /* for all charsets */
0x3200
};
+static const UV UNI_KAWI_invlist[] = { /* for all charsets */
+ 7, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A
+};
+
static const UV UNI_KHAR_invlist[] = { /* for all charsets */
17, /* Number of elements */
148565664, /* Version and data structure type */
@@ -315633,7 +328260,7 @@ static const UV UNI_KHOJ_invlist[] = { /* for all charsets */
0x11200,
0x11212,
0x11213,
- 0x1123F
+ 0x11242
};
static const UV UNI_KITS_invlist[] = { /* for all charsets */
@@ -315676,14 +328303,14 @@ static const UV UNI_KNDA_invlist[] = { /* for all charsets */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0x1CD0,
0x1CD1,
0x1CD2,
@@ -315709,7 +328336,7 @@ static const UV UNI_KTHI_invlist[] = { /* for all charsets */
0xA830,
0xA83A,
0x11080,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE
};
@@ -315717,7 +328344,7 @@ static const UV UNI_KTHI_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
- 1245, /* Number of elements */
+ 1319, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -315820,10 +328447,12 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -315952,6 +328581,8 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -315968,7 +328599,7 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -316111,10 +328742,8 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x16F1,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -316157,7 +328786,7 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -316259,10 +328888,6 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x2183,
0x2185,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -316323,8 +328948,6 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -316345,10 +328968,14 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -316524,12 +329151,34 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -316600,12 +329249,18 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -316632,6 +329287,8 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -316688,6 +329345,8 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -316726,7 +329385,7 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -316754,20 +329413,32 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
0x1239A,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -316796,10 +329467,20 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -316872,14 +329553,32 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -316953,9 +329652,9 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -316965,7 +329664,9 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* ASCII/Latin1 */
@@ -316976,7 +329677,7 @@ static const UV UNI_L_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
- 1271, /* Number of elements */
+ 1345, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -317105,10 +329806,12 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -317237,6 +329940,8 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -317253,7 +329958,7 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -317396,10 +330101,8 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x16F1,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -317442,7 +330145,7 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -317544,10 +330247,6 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x2183,
0x2185,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -317608,8 +330307,6 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -317630,10 +330327,14 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -317809,12 +330510,34 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -317885,12 +330608,18 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -317917,6 +330646,8 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -317973,6 +330704,8 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -318011,7 +330744,7 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -318039,20 +330772,32 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
0x1239A,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -318081,10 +330826,20 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -318157,14 +330912,32 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -318238,9 +331011,9 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -318250,7 +331023,9 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 1047 */
@@ -318261,7 +331036,7 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
- 1267, /* Number of elements */
+ 1341, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -318386,10 +331161,12 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -318518,6 +331295,8 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -318534,7 +331313,7 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -318677,10 +331456,8 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x16F1,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -318723,7 +331500,7 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -318825,10 +331602,6 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x2183,
0x2185,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -318889,8 +331662,6 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -318911,10 +331682,14 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -319090,12 +331865,34 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -319166,12 +331963,18 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -319198,6 +332001,8 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -319254,6 +332059,8 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -319292,7 +332099,7 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -319320,20 +332127,32 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
0x1239A,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -319362,10 +332181,20 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -319438,14 +332267,32 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -319519,9 +332366,9 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -319531,7 +332378,9 @@ static const UV UNI_L_invlist[] = { /* for EBCDIC 037 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 037 */
@@ -319577,7 +332426,7 @@ static const UV UNI_LAO_invlist[] = { /* for all charsets */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -319798,10 +332647,30 @@ static const UV UNI_LATINEXTE_invlist[] = { /* for all charsets */
0xAB70
};
+static const UV UNI_LATINEXTF_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x10780,
+ 0x107C0
+};
+
+static const UV UNI_LATINEXTG_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x1DF00,
+ 0x1E000
+};
+
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_LATN_invlist[] = { /* for ASCII/Latin1 */
- 81, /* Number of elements */
+ 95, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -319867,10 +332736,14 @@ static const UV UNI_LATN_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA788,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA800,
0xA92E,
0xA92F,
@@ -319885,7 +332758,17 @@ static const UV UNI_LATN_invlist[] = { /* for ASCII/Latin1 */
0xFF21,
0xFF3B,
0xFF41,
- 0xFF5B
+ 0xFF5B,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B
};
# endif /* ASCII/Latin1 */
@@ -319896,7 +332779,7 @@ static const UV UNI_LATN_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_LATN_invlist[] = { /* for EBCDIC 1047 */
- 107, /* Number of elements */
+ 121, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -319988,10 +332871,14 @@ static const UV UNI_LATN_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA788,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA800,
0xA92E,
0xA92F,
@@ -320006,7 +332893,17 @@ static const UV UNI_LATN_invlist[] = { /* for EBCDIC 1047 */
0xFF21,
0xFF3B,
0xFF41,
- 0xFF5B
+ 0xFF5B,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B
};
# endif /* EBCDIC 1047 */
@@ -320017,7 +332914,7 @@ static const UV UNI_LATN_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_LATN_invlist[] = { /* for EBCDIC 037 */
- 103, /* Number of elements */
+ 117, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -320105,10 +333002,14 @@ static const UV UNI_LATN_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA788,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA800,
0xA92E,
0xA92F,
@@ -320123,7 +333024,17 @@ static const UV UNI_LATN_invlist[] = { /* for EBCDIC 037 */
0xFF21,
0xFF3B,
0xFF41,
- 0xFF5B
+ 0xFF5B,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B
};
# endif /* EBCDIC 037 */
@@ -320839,7 +333750,7 @@ static const UV UNI_LB__AI_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
- 1541, /* Number of elements */
+ 1613, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -320964,10 +333875,12 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x85F,
0x860,
0x86B,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -321110,6 +334023,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC78,
@@ -321126,7 +334041,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -321255,10 +334170,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -321297,7 +334210,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B5C,
0x1B5D,
0x1B61,
@@ -321378,8 +334291,6 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x2044,
0x204A,
0x2056,
- 0x2057,
- 0x2058,
0x205C,
0x205D,
0x2061,
@@ -321595,10 +334506,6 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CEF,
0x2CF2,
0x2CF4,
@@ -321673,10 +334580,14 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0xA6F2,
0xA6F3,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -321747,17 +334658,19 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0xFB29,
0xFB2A,
0xFB50,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
0xFD3E,
- 0xFD50,
+ 0xFD40,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
0xFDFC,
0xFDFD,
- 0xFDFE,
+ 0xFE00,
0xFE70,
0xFE75,
0xFE76,
@@ -321819,13 +334732,33 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -321906,6 +334839,10 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x10F46,
0x10F51,
0x10F5A,
+ 0x10F70,
+ 0x10F82,
+ 0x10F86,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -321916,6 +334853,10 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x1104E,
0x11052,
0x11066,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110BB,
@@ -321958,6 +334899,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x1123B,
0x1123D,
0x1123E,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -322015,7 +334958,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x11680,
0x116AB,
0x116B8,
- 0x116B9,
+ 0x116BA,
0x11800,
0x1182C,
0x1183B,
@@ -322062,7 +335005,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -322094,6 +335037,12 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x11EF3,
0x11EF7,
0x11EF9,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -322106,6 +335055,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
0x13258,
0x1325E,
@@ -322115,7 +335066,9 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x1328A,
0x13379,
0x1337C,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x145CE,
0x145D0,
@@ -322124,6 +335077,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -322150,6 +335105,12 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x16FA0,
0x18B00,
0x18CD6,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1BC00,
0x1BC6B,
0x1BC70,
@@ -322160,6 +335121,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x1BC9A,
0x1BC9C,
0x1BC9D,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -322173,11 +335136,13 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -322236,14 +335201,32 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
0x1DA87,
0x1DA8B,
0x1DA8C,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -322394,7 +335377,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
- 1569, /* Number of elements */
+ 1641, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -322547,10 +335530,12 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x85F,
0x860,
0x86B,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -322693,6 +335678,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC78,
@@ -322709,7 +335696,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -322838,10 +335825,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -322880,7 +335865,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B5C,
0x1B5D,
0x1B61,
@@ -322961,8 +335946,6 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x2044,
0x204A,
0x2056,
- 0x2057,
- 0x2058,
0x205C,
0x205D,
0x2061,
@@ -323178,10 +336161,6 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CEF,
0x2CF2,
0x2CF4,
@@ -323256,10 +336235,14 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0xA6F2,
0xA6F3,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -323330,17 +336313,19 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0xFB29,
0xFB2A,
0xFB50,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
0xFD3E,
- 0xFD50,
+ 0xFD40,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
0xFDFC,
0xFDFD,
- 0xFDFE,
+ 0xFE00,
0xFE70,
0xFE75,
0xFE76,
@@ -323402,13 +336387,33 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -323489,6 +336494,10 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x10F46,
0x10F51,
0x10F5A,
+ 0x10F70,
+ 0x10F82,
+ 0x10F86,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -323499,6 +336508,10 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x1104E,
0x11052,
0x11066,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110BB,
@@ -323541,6 +336554,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x1123B,
0x1123D,
0x1123E,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -323598,7 +336613,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x11680,
0x116AB,
0x116B8,
- 0x116B9,
+ 0x116BA,
0x11800,
0x1182C,
0x1183B,
@@ -323645,7 +336660,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -323677,6 +336692,12 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x11EF3,
0x11EF7,
0x11EF9,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -323689,6 +336710,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
0x13258,
0x1325E,
@@ -323698,7 +336721,9 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x1328A,
0x13379,
0x1337C,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x145CE,
0x145D0,
@@ -323707,6 +336732,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -323733,6 +336760,12 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x16FA0,
0x18B00,
0x18CD6,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1BC00,
0x1BC6B,
0x1BC70,
@@ -323743,6 +336776,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x1BC9A,
0x1BC9C,
0x1BC9D,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -323756,11 +336791,13 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -323819,14 +336856,32 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
0x1DA87,
0x1DA8B,
0x1DA8C,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -323977,7 +337032,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
- 1565, /* Number of elements */
+ 1637, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -324126,10 +337181,12 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x85F,
0x860,
0x86B,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -324272,6 +337329,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC78,
@@ -324288,7 +337347,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -324417,10 +337476,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -324459,7 +337516,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B5C,
0x1B5D,
0x1B61,
@@ -324540,8 +337597,6 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x2044,
0x204A,
0x2056,
- 0x2057,
- 0x2058,
0x205C,
0x205D,
0x2061,
@@ -324757,10 +337812,6 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CEF,
0x2CF2,
0x2CF4,
@@ -324835,10 +337886,14 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0xA6F2,
0xA6F3,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -324909,17 +337964,19 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0xFB29,
0xFB2A,
0xFB50,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
0xFD3E,
- 0xFD50,
+ 0xFD40,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
0xFDFC,
0xFDFD,
- 0xFDFE,
+ 0xFE00,
0xFE70,
0xFE75,
0xFE76,
@@ -324981,13 +338038,33 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -325068,6 +338145,10 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x10F46,
0x10F51,
0x10F5A,
+ 0x10F70,
+ 0x10F82,
+ 0x10F86,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -325078,6 +338159,10 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x1104E,
0x11052,
0x11066,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110BB,
@@ -325120,6 +338205,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x1123B,
0x1123D,
0x1123E,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -325177,7 +338264,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x11680,
0x116AB,
0x116B8,
- 0x116B9,
+ 0x116BA,
0x11800,
0x1182C,
0x1183B,
@@ -325224,7 +338311,7 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -325256,6 +338343,12 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x11EF3,
0x11EF7,
0x11EF9,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -325268,6 +338361,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
0x13258,
0x1325E,
@@ -325277,7 +338372,9 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x1328A,
0x13379,
0x1337C,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x145CE,
0x145D0,
@@ -325286,6 +338383,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -325312,6 +338411,12 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x16FA0,
0x18B00,
0x18CD6,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1BC00,
0x1BC6B,
0x1BC70,
@@ -325322,6 +338427,8 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x1BC9A,
0x1BC9C,
0x1BC9D,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -325335,11 +338442,13 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -325398,14 +338507,32 @@ static const UV UNI_LB__AL_invlist[] = { /* for EBCDIC 037 */
0x1DA87,
0x1DA8B,
0x1DA8C,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -325565,7 +338692,7 @@ static const UV UNI_LB__B2_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_LB__BA_invlist[] = { /* for ASCII/Latin1 */
- 197, /* Number of elements */
+ 203, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -325620,6 +338747,8 @@ static const UV UNI_LB__BA_invlist[] = { /* for ASCII/Latin1 */
0x1B5C,
0x1B5D,
0x1B61,
+ 0x1B7D,
+ 0x1B7F,
0x1C3B,
0x1C40,
0x1C7E,
@@ -325668,6 +338797,8 @@ static const UV UNI_LB__BA_invlist[] = { /* for ASCII/Latin1 */
0x2E4D,
0x2E4E,
0x2E50,
+ 0x2E5D,
+ 0x2E5E,
0x3000,
0x3001,
0xA4FE,
@@ -325748,6 +338879,8 @@ static const UV UNI_LB__BA_invlist[] = { /* for ASCII/Latin1 */
0x11AA3,
0x11C41,
0x11C46,
+ 0x11F43,
+ 0x11F45,
0x11FFF,
0x12000,
0x12470,
@@ -325776,7 +338909,7 @@ static const UV UNI_LB__BA_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 1047 */
- 197, /* Number of elements */
+ 203, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -325831,6 +338964,8 @@ static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 1047 */
0x1B5C,
0x1B5D,
0x1B61,
+ 0x1B7D,
+ 0x1B7F,
0x1C3B,
0x1C40,
0x1C7E,
@@ -325879,6 +339014,8 @@ static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 1047 */
0x2E4D,
0x2E4E,
0x2E50,
+ 0x2E5D,
+ 0x2E5E,
0x3000,
0x3001,
0xA4FE,
@@ -325959,6 +339096,8 @@ static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 1047 */
0x11AA3,
0x11C41,
0x11C46,
+ 0x11F43,
+ 0x11F45,
0x11FFF,
0x12000,
0x12470,
@@ -325987,7 +339126,7 @@ static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 037 */
- 197, /* Number of elements */
+ 203, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -326042,6 +339181,8 @@ static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 037 */
0x1B5C,
0x1B5D,
0x1B61,
+ 0x1B7D,
+ 0x1B7F,
0x1C3B,
0x1C40,
0x1C7E,
@@ -326090,6 +339231,8 @@ static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 037 */
0x2E4D,
0x2E4E,
0x2E50,
+ 0x2E5D,
+ 0x2E5E,
0x3000,
0x3001,
0xA4FE,
@@ -326170,6 +339313,8 @@ static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 037 */
0x11AA3,
0x11C41,
0x11C46,
+ 0x11F43,
+ 0x11F45,
0x11FFF,
0x12000,
0x12470,
@@ -326195,7 +339340,7 @@ static const UV UNI_LB__BA_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_LB__BB_invlist[] = { /* for ASCII/Latin1 */
- 49, /* Number of elements */
+ 51, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -326246,6 +339391,8 @@ static const UV UNI_LB__BB_invlist[] = { /* for ASCII/Latin1 */
0x11A46,
0x11A9E,
0x11AA1,
+ 0x11B00,
+ 0x11B0A,
0x11C70,
0x11C71
};
@@ -326258,7 +339405,7 @@ static const UV UNI_LB__BB_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_LB__BB_invlist[] = { /* for EBCDIC 1047 */
- 49, /* Number of elements */
+ 51, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -326309,6 +339456,8 @@ static const UV UNI_LB__BB_invlist[] = { /* for EBCDIC 1047 */
0x11A46,
0x11A9E,
0x11AA1,
+ 0x11B00,
+ 0x11B0A,
0x11C70,
0x11C71
};
@@ -326321,7 +339470,7 @@ static const UV UNI_LB__BB_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_LB__BB_invlist[] = { /* for EBCDIC 037 */
- 49, /* Number of elements */
+ 51, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -326372,6 +339521,8 @@ static const UV UNI_LB__BB_invlist[] = { /* for EBCDIC 037 */
0x11A46,
0x11A9E,
0x11AA1,
+ 0x11B00,
+ 0x11B0A,
0x11C70,
0x11C71
};
@@ -326443,7 +339594,7 @@ static const UV UNI_LB__CB_invlist[] = { /* for all charsets */
};
static const UV UNI_LB__CJ_invlist[] = { /* for all charsets */
- 55, /* Number of elements */
+ 59, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -326498,8 +339649,12 @@ static const UV UNI_LB__CJ_invlist[] = { /* for all charsets */
0x3200,
0xFF67,
0xFF71,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168
};
@@ -326507,7 +339662,7 @@ static const UV UNI_LB__CJ_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_LB__CL_invlist[] = { /* for ASCII/Latin1 */
- 167, /* Number of elements */
+ 179, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -326594,6 +339749,14 @@ static const UV UNI_LB__CL_invlist[] = { /* for ASCII/Latin1 */
0x2E28,
0x2E29,
0x2E2A,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
+ 0x2E5D,
0x3001,
0x3003,
0x3009,
@@ -326676,6 +339839,10 @@ static const UV UNI_LB__CL_invlist[] = { /* for ASCII/Latin1 */
0x1337C,
0x13438,
0x13439,
+ 0x1343D,
+ 0x1343E,
+ 0x1343F,
+ 0x13440,
0x145CF,
0x145D0
};
@@ -326688,7 +339855,7 @@ static const UV UNI_LB__CL_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_LB__CL_invlist[] = { /* for EBCDIC 1047 */
- 167, /* Number of elements */
+ 179, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -326775,6 +339942,14 @@ static const UV UNI_LB__CL_invlist[] = { /* for EBCDIC 1047 */
0x2E28,
0x2E29,
0x2E2A,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
+ 0x2E5D,
0x3001,
0x3003,
0x3009,
@@ -326857,6 +340032,10 @@ static const UV UNI_LB__CL_invlist[] = { /* for EBCDIC 1047 */
0x1337C,
0x13438,
0x13439,
+ 0x1343D,
+ 0x1343E,
+ 0x1343F,
+ 0x13440,
0x145CF,
0x145D0
};
@@ -326869,7 +340048,7 @@ static const UV UNI_LB__CL_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_LB__CL_invlist[] = { /* for EBCDIC 037 */
- 167, /* Number of elements */
+ 179, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -326956,6 +340135,14 @@ static const UV UNI_LB__CL_invlist[] = { /* for EBCDIC 037 */
0x2E28,
0x2E29,
0x2E2A,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
+ 0x2E5D,
0x3001,
0x3003,
0x3009,
@@ -327038,6 +340225,10 @@ static const UV UNI_LB__CL_invlist[] = { /* for EBCDIC 037 */
0x1337C,
0x13438,
0x13439,
+ 0x1343D,
+ 0x1343E,
+ 0x1343F,
+ 0x13440,
0x145CF,
0x145D0
};
@@ -327047,7 +340238,7 @@ static const UV UNI_LB__CL_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */
- 556, /* Number of elements */
+ 600, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -327113,7 +340304,9 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -327197,6 +340390,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */
0xBD8,
0xC00,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC45,
0xC46,
@@ -327221,6 +340416,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */
0xCD7,
0xCE2,
0xCE4,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD3B,
@@ -327272,7 +340469,7 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */
0x135D,
0x1360,
0x1712,
- 0x1715,
+ 0x1716,
0x1732,
0x1735,
0x1752,
@@ -327281,6 +340478,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */
0x1774,
0x180B,
0x180E,
+ 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -327294,7 +340493,7 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
@@ -327320,8 +340519,10 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */
0x1CF7,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
+ 0x1DCD,
+ 0x1DCE,
+ 0x1DFC,
+ 0x1DFD,
0x1E00,
0x200C,
0x200D,
@@ -327423,16 +340624,26 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11003,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11083,
0x110B0,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -327453,6 +340664,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112EB,
0x11300,
@@ -327545,6 +340758,18 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */
0x11D98,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -327561,6 +340786,10 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -327593,10 +340822,16 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -327617,7 +340852,7 @@ static const UV UNI_LB__CM_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */
- 560, /* Number of elements */
+ 604, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -327687,7 +340922,9 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -327771,6 +341008,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */
0xBD8,
0xC00,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC45,
0xC46,
@@ -327795,6 +341034,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */
0xCD7,
0xCE2,
0xCE4,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD3B,
@@ -327846,7 +341087,7 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */
0x135D,
0x1360,
0x1712,
- 0x1715,
+ 0x1716,
0x1732,
0x1735,
0x1752,
@@ -327855,6 +341096,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */
0x1774,
0x180B,
0x180E,
+ 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -327868,7 +341111,7 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
@@ -327894,8 +341137,10 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */
0x1CF7,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
+ 0x1DCD,
+ 0x1DCE,
+ 0x1DFC,
+ 0x1DFD,
0x1E00,
0x200C,
0x200D,
@@ -327997,16 +341242,26 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11003,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11083,
0x110B0,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -328027,6 +341282,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112EB,
0x11300,
@@ -328119,6 +341376,18 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */
0x11D98,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -328135,6 +341404,10 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -328167,10 +341440,16 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -328191,7 +341470,7 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */
- 560, /* Number of elements */
+ 604, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -328261,7 +341540,9 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -328345,6 +341626,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */
0xBD8,
0xC00,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC45,
0xC46,
@@ -328369,6 +341652,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */
0xCD7,
0xCE2,
0xCE4,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD3B,
@@ -328420,7 +341705,7 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */
0x135D,
0x1360,
0x1712,
- 0x1715,
+ 0x1716,
0x1732,
0x1735,
0x1752,
@@ -328429,6 +341714,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */
0x1774,
0x180B,
0x180E,
+ 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -328442,7 +341729,7 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
@@ -328468,8 +341755,10 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */
0x1CF7,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
+ 0x1DCD,
+ 0x1DCE,
+ 0x1DFC,
+ 0x1DFD,
0x1E00,
0x200C,
0x200D,
@@ -328571,16 +341860,26 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11003,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11083,
0x110B0,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -328601,6 +341900,8 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112EB,
0x11300,
@@ -328693,6 +341994,18 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */
0x11D98,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -328709,6 +342022,10 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -328741,10 +342058,16 @@ static const UV UNI_LB__CM_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -328864,7 +342187,7 @@ static const UV UNI_LB__CR_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_LB__EX_invlist[] = { /* for ASCII/Latin1 */
- 49, /* Number of elements */
+ 51, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -328877,7 +342200,7 @@ static const UV UNI_LB__EX_invlist[] = { /* for ASCII/Latin1 */
0x5C7,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x6D4,
0x6D5,
@@ -328901,6 +342224,8 @@ static const UV UNI_LB__EX_invlist[] = { /* for ASCII/Latin1 */
0x2CFF,
0x2E2E,
0x2E2F,
+ 0x2E53,
+ 0x2E55,
0xA60E,
0xA60F,
0xA876,
@@ -328927,7 +342252,7 @@ static const UV UNI_LB__EX_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_LB__EX_invlist[] = { /* for EBCDIC 1047 */
- 49, /* Number of elements */
+ 51, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -328940,7 +342265,7 @@ static const UV UNI_LB__EX_invlist[] = { /* for EBCDIC 1047 */
0x5C7,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x6D4,
0x6D5,
@@ -328964,6 +342289,8 @@ static const UV UNI_LB__EX_invlist[] = { /* for EBCDIC 1047 */
0x2CFF,
0x2E2E,
0x2E2F,
+ 0x2E53,
+ 0x2E55,
0xA60E,
0xA60F,
0xA876,
@@ -328990,7 +342317,7 @@ static const UV UNI_LB__EX_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_LB__EX_invlist[] = { /* for EBCDIC 037 */
- 49, /* Number of elements */
+ 51, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -329003,7 +342330,7 @@ static const UV UNI_LB__EX_invlist[] = { /* for EBCDIC 037 */
0x5C7,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x6D4,
0x6D5,
@@ -329027,6 +342354,8 @@ static const UV UNI_LB__EX_invlist[] = { /* for EBCDIC 037 */
0x2CFF,
0x2E2E,
0x2E2F,
+ 0x2E53,
+ 0x2E55,
0xA60E,
0xA60F,
0xA876,
@@ -329050,7 +342379,7 @@ static const UV UNI_LB__EX_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_LB__GL_invlist[] = { /* for ASCII/Latin1 */
- 27, /* Number of elements */
+ 33, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -329071,6 +342400,10 @@ static const UV UNI_LB__GL_invlist[] = { /* for ASCII/Latin1 */
0xFDB,
0x180E,
0x180F,
+ 0x1DCD,
+ 0x1DCE,
+ 0x1DFC,
+ 0x1DFD,
0x2007,
0x2008,
0x2011,
@@ -329079,6 +342412,8 @@ static const UV UNI_LB__GL_invlist[] = { /* for ASCII/Latin1 */
0x2030,
0x13430,
0x13437,
+ 0x13439,
+ 0x1343C,
0x16FE4,
0x16FE5
};
@@ -329091,7 +342426,7 @@ static const UV UNI_LB__GL_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_LB__GL_invlist[] = { /* for EBCDIC 1047 */
- 27, /* Number of elements */
+ 33, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -329112,6 +342447,10 @@ static const UV UNI_LB__GL_invlist[] = { /* for EBCDIC 1047 */
0xFDB,
0x180E,
0x180F,
+ 0x1DCD,
+ 0x1DCE,
+ 0x1DFC,
+ 0x1DFD,
0x2007,
0x2008,
0x2011,
@@ -329120,6 +342459,8 @@ static const UV UNI_LB__GL_invlist[] = { /* for EBCDIC 1047 */
0x2030,
0x13430,
0x13437,
+ 0x13439,
+ 0x1343C,
0x16FE4,
0x16FE5
};
@@ -329132,7 +342473,7 @@ static const UV UNI_LB__GL_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_LB__GL_invlist[] = { /* for EBCDIC 037 */
- 27, /* Number of elements */
+ 33, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -329153,6 +342494,10 @@ static const UV UNI_LB__GL_invlist[] = { /* for EBCDIC 037 */
0xFDB,
0x180E,
0x180F,
+ 0x1DCD,
+ 0x1DCE,
+ 0x1DFC,
+ 0x1DFD,
0x2007,
0x2008,
0x2011,
@@ -329161,6 +342506,8 @@ static const UV UNI_LB__GL_invlist[] = { /* for EBCDIC 037 */
0x2030,
0x13430,
0x13437,
+ 0x13439,
+ 0x1343C,
0x16FE4,
0x16FE5
};
@@ -330856,7 +344203,7 @@ static const UV UNI_LB__HY_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_LB__ID_invlist[] = { /* for all charsets */
- 331, /* Number of elements */
+ 337, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -331051,6 +344398,8 @@ static const UV UNI_LB__ID_invlist[] = { /* for all charsets */
0xFFDD,
0xFFE2,
0xFFE5,
+ 0x11F45,
+ 0x11F50,
0x17000,
0x187F8,
0x18800,
@@ -331058,7 +344407,7 @@ static const UV UNI_LB__ID_invlist[] = { /* for all charsets */
0x18D00,
0x18D09,
0x1B000,
- 0x1B11F,
+ 0x1B123,
0x1B170,
0x1B2FC,
0x1F000,
@@ -331184,6 +344533,10 @@ static const UV UNI_LB__ID_invlist[] = { /* for all charsets */
0x1F9DE,
0x1FA00,
0x1FA54,
+ 0x1FAC3,
+ 0x1FAC6,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FC00,
0x1FFFE,
@@ -331456,7 +344809,7 @@ static const UV UNI_LB__NS_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_LB__NU_invlist[] = { /* for ASCII/Latin1 */
- 123, /* Number of elements */
+ 129, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -331569,8 +344922,12 @@ static const UV UNI_LB__NU_invlist[] = { /* for ASCII/Latin1 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x1D7CE,
@@ -331579,6 +344936,8 @@ static const UV UNI_LB__NU_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E950,
0x1E95A,
0x1FBF0,
@@ -331593,7 +344952,7 @@ static const UV UNI_LB__NU_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 1047 */
- 123, /* Number of elements */
+ 129, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -331706,8 +345065,12 @@ static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 1047 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x1D7CE,
@@ -331716,6 +345079,8 @@ static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E950,
0x1E95A,
0x1FBF0,
@@ -331730,7 +345095,7 @@ static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 037 */
- 123, /* Number of elements */
+ 129, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -331843,8 +345208,12 @@ static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 037 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x1D7CE,
@@ -331853,6 +345222,8 @@ static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E950,
0x1E95A,
0x1FBF0,
@@ -331864,7 +345235,7 @@ static const UV UNI_LB__NU_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_LB__OP_invlist[] = { /* for ASCII/Latin1 */
- 171, /* Number of elements */
+ 183, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -331967,6 +345338,14 @@ static const UV UNI_LB__OP_invlist[] = { /* for ASCII/Latin1 */
0x2E29,
0x2E42,
0x2E43,
+ 0x2E55,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
0x3008,
0x3009,
0x300A,
@@ -332035,6 +345414,10 @@ static const UV UNI_LB__OP_invlist[] = { /* for ASCII/Latin1 */
0x1337A,
0x13437,
0x13438,
+ 0x1343C,
+ 0x1343D,
+ 0x1343E,
+ 0x1343F,
0x145CE,
0x145CF,
0x1E95E,
@@ -332049,7 +345432,7 @@ static const UV UNI_LB__OP_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_LB__OP_invlist[] = { /* for EBCDIC 1047 */
- 169, /* Number of elements */
+ 181, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -332150,6 +345533,14 @@ static const UV UNI_LB__OP_invlist[] = { /* for EBCDIC 1047 */
0x2E29,
0x2E42,
0x2E43,
+ 0x2E55,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
0x3008,
0x3009,
0x300A,
@@ -332218,6 +345609,10 @@ static const UV UNI_LB__OP_invlist[] = { /* for EBCDIC 1047 */
0x1337A,
0x13437,
0x13438,
+ 0x1343C,
+ 0x1343D,
+ 0x1343E,
+ 0x1343F,
0x145CE,
0x145CF,
0x1E95E,
@@ -332232,7 +345627,7 @@ static const UV UNI_LB__OP_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_LB__OP_invlist[] = { /* for EBCDIC 037 */
- 169, /* Number of elements */
+ 181, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -332333,6 +345728,14 @@ static const UV UNI_LB__OP_invlist[] = { /* for EBCDIC 037 */
0x2E29,
0x2E42,
0x2E43,
+ 0x2E55,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
0x3008,
0x3009,
0x300A,
@@ -332401,6 +345804,10 @@ static const UV UNI_LB__OP_invlist[] = { /* for EBCDIC 037 */
0x1337A,
0x13437,
0x13438,
+ 0x1343C,
+ 0x1343D,
+ 0x1343E,
+ 0x1343F,
0x145CE,
0x145CF,
0x1E95E,
@@ -332412,7 +345819,7 @@ static const UV UNI_LB__OP_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_LB__PO_invlist[] = { /* for ASCII/Latin1 */
- 47, /* Number of elements */
+ 51, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -332435,6 +345842,8 @@ static const UV UNI_LB__PO_invlist[] = { /* for ASCII/Latin1 */
0xD7A,
0x2030,
0x2038,
+ 0x2057,
+ 0x2058,
0x20A7,
0x20A8,
0x20B6,
@@ -332443,6 +345852,8 @@ static const UV UNI_LB__PO_invlist[] = { /* for ASCII/Latin1 */
0x20BC,
0x20BE,
0x20BF,
+ 0x20C0,
+ 0x20C1,
0x2103,
0x2104,
0x2109,
@@ -332473,7 +345884,7 @@ static const UV UNI_LB__PO_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_LB__PO_invlist[] = { /* for EBCDIC 1047 */
- 47, /* Number of elements */
+ 51, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -332496,6 +345907,8 @@ static const UV UNI_LB__PO_invlist[] = { /* for EBCDIC 1047 */
0xD7A,
0x2030,
0x2038,
+ 0x2057,
+ 0x2058,
0x20A7,
0x20A8,
0x20B6,
@@ -332504,6 +345917,8 @@ static const UV UNI_LB__PO_invlist[] = { /* for EBCDIC 1047 */
0x20BC,
0x20BE,
0x20BF,
+ 0x20C0,
+ 0x20C1,
0x2103,
0x2104,
0x2109,
@@ -332534,7 +345949,7 @@ static const UV UNI_LB__PO_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_LB__PO_invlist[] = { /* for EBCDIC 037 */
- 47, /* Number of elements */
+ 51, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -332557,6 +345972,8 @@ static const UV UNI_LB__PO_invlist[] = { /* for EBCDIC 037 */
0xD7A,
0x2030,
0x2038,
+ 0x2057,
+ 0x2058,
0x20A7,
0x20A8,
0x20B6,
@@ -332565,6 +345982,8 @@ static const UV UNI_LB__PO_invlist[] = { /* for EBCDIC 037 */
0x20BC,
0x20BE,
0x20BF,
+ 0x20C0,
+ 0x20C1,
0x2103,
0x2104,
0x2109,
@@ -332592,7 +346011,7 @@ static const UV UNI_LB__PO_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_LB__PR_invlist[] = { /* for ASCII/Latin1 */
- 49, /* Number of elements */
+ 51, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -332630,6 +346049,8 @@ static const UV UNI_LB__PR_invlist[] = { /* for ASCII/Latin1 */
0x20BC,
0x20BE,
0x20BF,
+ 0x20C0,
+ 0x20C1,
0x20D0,
0x2116,
0x2117,
@@ -332655,7 +346076,7 @@ static const UV UNI_LB__PR_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_LB__PR_invlist[] = { /* for EBCDIC 1047 */
- 51, /* Number of elements */
+ 53, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -332695,6 +346116,8 @@ static const UV UNI_LB__PR_invlist[] = { /* for EBCDIC 1047 */
0x20BC,
0x20BE,
0x20BF,
+ 0x20C0,
+ 0x20C1,
0x20D0,
0x2116,
0x2117,
@@ -332720,7 +346143,7 @@ static const UV UNI_LB__PR_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_LB__PR_invlist[] = { /* for EBCDIC 037 */
- 51, /* Number of elements */
+ 53, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -332760,6 +346183,8 @@ static const UV UNI_LB__PR_invlist[] = { /* for EBCDIC 037 */
0x20BC,
0x20BE,
0x20BF,
+ 0x20C0,
+ 0x20C1,
0x20D0,
0x2116,
0x2117,
@@ -332922,7 +346347,7 @@ static const UV UNI_LB__SA_invlist[] = { /* for all charsets */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xEDC,
0xEE0,
0x1000,
@@ -332970,7 +346395,7 @@ static const UV UNI_LB__SA_invlist[] = { /* for all charsets */
0x1173A,
0x1173C,
0x1173F,
- 0x11740
+ 0x11747
};
static const UV UNI_LB__SG_invlist[] = { /* for all charsets */
@@ -333092,7 +346517,7 @@ static const UV UNI_LB__WJ_invlist[] = { /* for all charsets */
};
static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
- 1266, /* Number of elements */
+ 1328, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -333121,8 +346546,6 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x5EF,
0x5F5,
0x600,
- 0x61D,
- 0x61E,
0x70E,
0x70F,
0x74B,
@@ -333140,11 +346563,11 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x984,
0x985,
0x98D,
@@ -333300,7 +346723,7 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -333310,6 +346733,8 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -333332,14 +346757,14 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -333399,7 +346824,7 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -333467,10 +346892,8 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -333487,8 +346910,6 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x17F0,
0x17FA,
0x1800,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -333527,11 +346948,11 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -333547,8 +346968,6 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -333601,10 +347020,6 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -333635,7 +347050,7 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -333667,10 +347082,14 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -333739,16 +347158,14 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -333835,13 +347252,33 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -333924,10 +347361,12 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -333935,9 +347374,9 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -333957,7 +347396,7 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -334021,7 +347460,7 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -334029,7 +347468,7 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -334060,8 +347499,10 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -334104,6 +347545,12 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -334116,10 +347563,10 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -334129,7 +347576,9 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -334162,10 +347611,20 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -334180,14 +347639,22 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
0x1D127,
0x1D129,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -334240,6 +347707,10 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -334250,6 +347721,10 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -334258,10 +347733,22 @@ static const UV UNI_LB__XX_invlist[] = { /* for all charsets */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -334515,7 +348002,7 @@ static const UV UNI_LISUSUP_invlist[] = { /* for all charsets */
};
static const UV UNI_LM_invlist[] = { /* for all charsets */
- 123, /* Number of elements */
+ 143, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -334550,6 +348037,8 @@ static const UV UNI_LM_invlist[] = { /* for all charsets */
0x825,
0x828,
0x829,
+ 0x8C9,
+ 0x8CA,
0x971,
0x972,
0xE46,
@@ -334610,6 +348099,8 @@ static const UV UNI_LM_invlist[] = { /* for all charsets */
0xA771,
0xA788,
0xA789,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xA9CF,
@@ -334630,6 +348121,12 @@ static const UV UNI_LM_invlist[] = { /* for all charsets */
0xFF71,
0xFF9E,
0xFFA0,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x16B40,
0x16B44,
0x16F93,
@@ -334638,8 +348135,18 @@ static const UV UNI_LM_invlist[] = { /* for all charsets */
0x16FE2,
0x16FE3,
0x16FE4,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
+ 0x1E030,
+ 0x1E06E,
0x1E137,
0x1E13E,
+ 0x1E4EB,
+ 0x1E4EC,
0x1E94B,
0x1E94C
};
@@ -334647,7 +348154,7 @@ static const UV UNI_LM_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
- 979, /* Number of elements */
+ 1021, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -334698,10 +348205,12 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8C9,
0x904,
0x93A,
0x93D,
@@ -334830,6 +348339,8 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -334846,7 +348357,7 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -334975,10 +348486,8 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0x16F1,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -335019,7 +348528,7 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -335085,8 +348594,6 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA015,
0xA016,
0xA48D,
@@ -335342,12 +348849,18 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -335374,6 +348887,8 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -335430,6 +348945,8 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118FF,
@@ -335466,7 +348983,7 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -335494,20 +349011,32 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
0x1239A,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -335527,9 +349056,13 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0x18D00,
0x18D09,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -335542,12 +349075,26 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0x1BC89,
0x1BC90,
0x1BC9A,
+ 0x1DF0A,
+ 0x1DF0B,
0x1E100,
0x1E12D,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EB,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1EE00,
@@ -335617,9 +349164,9 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -335629,7 +349176,9 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* ASCII/Latin1 */
@@ -335640,7 +349189,7 @@ static const UV UNI_LO_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
- 977, /* Number of elements */
+ 1019, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -335689,10 +349238,12 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8C9,
0x904,
0x93A,
0x93D,
@@ -335821,6 +349372,8 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -335837,7 +349390,7 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -335966,10 +349519,8 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0x16F1,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -336010,7 +349561,7 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -336076,8 +349627,6 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA015,
0xA016,
0xA48D,
@@ -336333,12 +349882,18 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -336365,6 +349920,8 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -336421,6 +349978,8 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118FF,
@@ -336457,7 +350016,7 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -336485,20 +350044,32 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
0x1239A,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -336518,9 +350089,13 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0x18D00,
0x18D09,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -336533,12 +350108,26 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0x1BC89,
0x1BC90,
0x1BC9A,
+ 0x1DF0A,
+ 0x1DF0B,
0x1E100,
0x1E12D,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EB,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1EE00,
@@ -336608,9 +350197,9 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -336620,7 +350209,9 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 1047 */
@@ -336631,7 +350222,7 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
- 977, /* Number of elements */
+ 1019, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -336680,10 +350271,12 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8C9,
0x904,
0x93A,
0x93D,
@@ -336812,6 +350405,8 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -336828,7 +350423,7 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -336957,10 +350552,8 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0x16F1,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -337001,7 +350594,7 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -337067,8 +350660,6 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA015,
0xA016,
0xA48D,
@@ -337324,12 +350915,18 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -337356,6 +350953,8 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -337412,6 +351011,8 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118FF,
@@ -337448,7 +351049,7 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -337476,20 +351077,32 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
0x1239A,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -337509,9 +351122,13 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0x18D00,
0x18D09,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -337524,12 +351141,26 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0x1BC89,
0x1BC90,
0x1BC9A,
+ 0x1DF0A,
+ 0x1DF0B,
0x1E100,
0x1E12D,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EB,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1EE00,
@@ -337599,9 +351230,9 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -337611,7 +351242,9 @@ static const UV UNI_LO_invlist[] = { /* for EBCDIC 037 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 037 */
@@ -337671,7 +351304,7 @@ static const UV UNI_LYDI_invlist[] = { /* for all charsets */
};
static const UV UNI_M_invlist[] = { /* for all charsets */
- 581, /* Number of elements */
+ 621, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -337724,7 +351357,9 @@ static const UV UNI_M_invlist[] = { /* for all charsets */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -337808,6 +351443,8 @@ static const UV UNI_M_invlist[] = { /* for all charsets */
0xBD8,
0xC00,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC45,
0xC46,
@@ -337832,6 +351469,8 @@ static const UV UNI_M_invlist[] = { /* for all charsets */
0xCD7,
0xCE2,
0xCE4,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD3B,
@@ -337869,7 +351508,7 @@ static const UV UNI_M_invlist[] = { /* for all charsets */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -337911,7 +351550,7 @@ static const UV UNI_M_invlist[] = { /* for all charsets */
0x135D,
0x1360,
0x1712,
- 0x1715,
+ 0x1716,
0x1732,
0x1735,
0x1752,
@@ -337924,6 +351563,8 @@ static const UV UNI_M_invlist[] = { /* for all charsets */
0x17DE,
0x180B,
0x180E,
+ 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -337941,7 +351582,7 @@ static const UV UNI_M_invlist[] = { /* for all charsets */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
@@ -337967,8 +351608,6 @@ static const UV UNI_M_invlist[] = { /* for all charsets */
0x1CF7,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x20D0,
0x20F1,
@@ -338072,16 +351711,26 @@ static const UV UNI_M_invlist[] = { /* for all charsets */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11003,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11083,
0x110B0,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -338102,6 +351751,8 @@ static const UV UNI_M_invlist[] = { /* for all charsets */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112EB,
0x11300,
@@ -338196,6 +351847,18 @@ static const UV UNI_M_invlist[] = { /* for all charsets */
0x11D98,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -338212,6 +351875,10 @@ static const UV UNI_M_invlist[] = { /* for all charsets */
0x16FF2,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -338246,10 +351913,16 @@ static const UV UNI_M_invlist[] = { /* for all charsets */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -339239,7 +352912,7 @@ static const UV UNI_MAYANNUMERALS_invlist[] = { /* for all charsets */
};
static const UV UNI_MC_invlist[] = { /* for all charsets */
- 351, /* Number of elements */
+ 365, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -339314,6 +352987,8 @@ static const UV UNI_MC_invlist[] = { /* for all charsets */
0xCCC,
0xCD5,
0xCD7,
+ 0xCF3,
+ 0xCF4,
0xD02,
0xD04,
0xD3E,
@@ -339358,6 +353033,10 @@ static const UV UNI_MC_invlist[] = { /* for all charsets */
0x1090,
0x109A,
0x109D,
+ 0x1715,
+ 0x1716,
+ 0x1734,
+ 0x1735,
0x17B6,
0x17B7,
0x17BE,
@@ -339586,6 +353265,14 @@ static const UV UNI_MC_invlist[] = { /* for all charsets */
0x11D97,
0x11EF5,
0x11EF7,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F36,
+ 0x11F3E,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
0x16F51,
0x16F88,
0x16FF0,
@@ -339775,7 +353462,7 @@ static const UV UNI_MLYM_invlist[] = { /* for all charsets */
};
static const UV UNI_MN_invlist[] = { /* for all charsets */
- 655, /* Number of elements */
+ 693, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -339828,7 +353515,9 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x903,
@@ -339910,6 +353599,8 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */
0xC01,
0xC04,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC41,
0xC46,
@@ -339961,7 +353652,7 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -340009,7 +353700,7 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */
0x1712,
0x1715,
0x1732,
- 0x1735,
+ 0x1734,
0x1752,
0x1754,
0x1772,
@@ -340026,6 +353717,8 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */
0x17DE,
0x180B,
0x180E,
+ 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -340059,7 +353752,7 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */
0x1AB0,
0x1ABE,
0x1ABF,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B04,
0x1B34,
@@ -340105,8 +353798,6 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x20D0,
0x20DD,
@@ -340222,18 +353913,28 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11001,
0x11002,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11082,
0x110B3,
0x110B7,
0x110B9,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -340258,6 +353959,8 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112E0,
0x112E3,
@@ -340380,6 +354083,18 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */
0x11D98,
0x11EF3,
0x11EF5,
+ 0x11F00,
+ 0x11F02,
+ 0x11F36,
+ 0x11F3B,
+ 0x11F40,
+ 0x11F41,
+ 0x11F42,
+ 0x11F43,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -340392,6 +354107,10 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */
0x16FE5,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D17B,
@@ -340424,10 +354143,16 @@ static const UV UNI_MN_invlist[] = { /* for all charsets */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -340471,14 +354196,12 @@ static const UV UNI_MODIFIERTONELETTERS_invlist[] = { /* for all charsets */
};
static const UV UNI_MONG_invlist[] = { /* for all charsets */
- 13, /* Number of elements */
+ 11, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
0x0,
0x1800,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -340597,7 +354320,7 @@ static const UV UNI_MYMR_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_N_invlist[] = { /* for ASCII/Latin1 */
- 267, /* Number of elements */
+ 275, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -340828,18 +354551,24 @@ static const UV UNI_N_invlist[] = { /* for ASCII/Latin1 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x11FC0,
0x11FD5,
0x12400,
0x1246F,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x16B5B,
0x16B62,
0x16E80,
0x16E97,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D360,
@@ -340850,6 +354579,8 @@ static const UV UNI_N_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E8C7,
0x1E8D0,
0x1E950,
@@ -340878,7 +354609,7 @@ static const UV UNI_N_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_N_invlist[] = { /* for EBCDIC 1047 */
- 267, /* Number of elements */
+ 275, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -341109,18 +354840,24 @@ static const UV UNI_N_invlist[] = { /* for EBCDIC 1047 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x11FC0,
0x11FD5,
0x12400,
0x1246F,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x16B5B,
0x16B62,
0x16E80,
0x16E97,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D360,
@@ -341131,6 +354868,8 @@ static const UV UNI_N_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E8C7,
0x1E8D0,
0x1E950,
@@ -341159,7 +354898,7 @@ static const UV UNI_N_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_N_invlist[] = { /* for EBCDIC 037 */
- 267, /* Number of elements */
+ 275, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -341390,18 +355129,24 @@ static const UV UNI_N_invlist[] = { /* for EBCDIC 037 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x11FC0,
0x11FD5,
0x12400,
0x1246F,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x16B5B,
0x16B62,
0x16E80,
0x16E97,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D360,
@@ -341412,6 +355157,8 @@ static const UV UNI_N_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E8C7,
0x1E8D0,
0x1E950,
@@ -341434,6 +355181,16 @@ static const UV UNI_N_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
+static const UV UNI_NAGM_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x1E4D0,
+ 0x1E4FA
+};
+
static const UV UNI_NAND_invlist[] = { /* for all charsets */
19, /* Number of elements */
148565664, /* Version and data structure type */
@@ -341471,22 +355228,20 @@ static const UV UNI_NARB_invlist[] = { /* for all charsets */
};
static const UV UNI_NB_invlist[] = { /* for all charsets */
- 110, /* Number of elements */
+ 104, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
0x0,
- 0x870,
- 0x8A0,
0x2FE0,
0x2FF0,
0x10200,
0x10280,
0x103E0,
0x10400,
- 0x10570,
+ 0x105C0,
0x10600,
- 0x10780,
+ 0x107C0,
0x10800,
0x108B0,
0x108E0,
@@ -341500,10 +355255,6 @@ static const UV UNI_NB_invlist[] = { /* for all charsets */
0x10C80,
0x10D40,
0x10E60,
- 0x10EC0,
- 0x10F00,
- 0x10F70,
- 0x10FB0,
0x11250,
0x11280,
0x11380,
@@ -341512,54 +355263,54 @@ static const UV UNI_NB_invlist[] = { /* for all charsets */
0x11580,
0x116D0,
0x11700,
- 0x11740,
+ 0x11750,
0x11800,
0x11850,
0x118A0,
0x11960,
0x119A0,
- 0x11AB0,
- 0x11AC0,
- 0x11B00,
+ 0x11B60,
0x11C00,
0x11CC0,
0x11D00,
0x11DB0,
0x11EE0,
- 0x11F00,
+ 0x11F60,
0x11FB0,
0x12550,
- 0x13000,
- 0x13440,
+ 0x12F90,
+ 0x13460,
0x14400,
0x14680,
0x16800,
- 0x16A70,
- 0x16AD0,
0x16B90,
0x16E40,
0x16EA0,
0x16F00,
0x16FA0,
0x16FE0,
- 0x18D90,
- 0x1B000,
+ 0x18D80,
+ 0x1AFF0,
0x1B300,
0x1BC00,
0x1BCB0,
+ 0x1CF00,
+ 0x1CFD0,
0x1D000,
0x1D250,
- 0x1D2E0,
+ 0x1D2C0,
0x1D380,
0x1D400,
0x1DAB0,
- 0x1E000,
- 0x1E030,
+ 0x1DF00,
+ 0x1E090,
0x1E100,
0x1E150,
- 0x1E2C0,
+ 0x1E290,
0x1E300,
- 0x1E800,
+ 0x1E4D0,
+ 0x1E500,
+ 0x1E7E0,
0x1E8E0,
0x1E900,
0x1E960,
@@ -341578,7 +355329,7 @@ static const UV UNI_NB_invlist[] = { /* for all charsets */
0x2F800,
0x2FA20,
0x30000,
- 0x31350,
+ 0x323B0,
0xE0000,
0xE0080,
0xE0100,
@@ -343380,7 +357131,7 @@ static const UV UNI_NFDQC__Y_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NFKCQC__N_invlist[] = { /* for ASCII/Latin1 */
- 501, /* Number of elements */
+ 511, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -343671,6 +357422,8 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for ASCII/Latin1 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -343751,6 +357504,12 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for ASCII/Latin1 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1D15E,
0x1D165,
0x1D1BB,
@@ -343797,6 +357556,8 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for ASCII/Latin1 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -343895,7 +357656,7 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 1047 */
- 507, /* Number of elements */
+ 517, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -344192,6 +357953,8 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 1047 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -344272,6 +358035,12 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 1047 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1D15E,
0x1D165,
0x1D1BB,
@@ -344318,6 +358087,8 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 1047 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -344416,7 +358187,7 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 037 */
- 505, /* Number of elements */
+ 515, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -344711,6 +358482,8 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 037 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -344791,6 +358564,12 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 037 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1D15E,
0x1D165,
0x1D1BB,
@@ -344837,6 +358616,8 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 037 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -344932,7 +358713,7 @@ static const UV UNI_NFKCQC__N_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NFKCQC__Y_invlist[] = { /* for ASCII/Latin1 */
- 577, /* Number of elements */
+ 587, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -345281,6 +359062,8 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for ASCII/Latin1 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -345361,6 +359144,12 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for ASCII/Latin1 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x110BA,
0x110BB,
0x11127,
@@ -345425,6 +359214,8 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for ASCII/Latin1 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -345523,7 +359314,7 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 1047 */
- 583, /* Number of elements */
+ 593, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -345878,6 +359669,8 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 1047 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -345958,6 +359751,12 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 1047 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x110BA,
0x110BB,
0x11127,
@@ -346022,6 +359821,8 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 1047 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -346120,7 +359921,7 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 037 */
- 581, /* Number of elements */
+ 591, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -346473,6 +360274,8 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 037 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -346553,6 +360356,12 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 037 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x110BA,
0x110BB,
0x11127,
@@ -346617,6 +360426,8 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 037 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -346712,7 +360523,7 @@ static const UV UNI_NFKCQC__Y_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NFKDQC__N_invlist[] = { /* for ASCII/Latin1 */
- 785, /* Number of elements */
+ 795, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -347267,6 +361078,8 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for ASCII/Latin1 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -347349,6 +361162,12 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for ASCII/Latin1 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1109A,
0x1109B,
0x1109C,
@@ -347413,6 +361232,8 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for ASCII/Latin1 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -347511,7 +361332,7 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 1047 */
- 783, /* Number of elements */
+ 793, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -348064,6 +361885,8 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 1047 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -348146,6 +361969,12 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 1047 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1109A,
0x1109B,
0x1109C,
@@ -348210,6 +362039,8 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 1047 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -348308,7 +362139,7 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 037 */
- 785, /* Number of elements */
+ 795, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -348863,6 +362694,8 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 037 */
0xA69E,
0xA770,
0xA771,
+ 0xA7F2,
+ 0xA7F5,
0xA7F8,
0xA7FA,
0xAB5C,
@@ -348945,6 +362778,12 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 037 */
0xFFE7,
0xFFE8,
0xFFEF,
+ 0x10781,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x1109A,
0x1109B,
0x1109C,
@@ -349009,6 +362848,8 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 037 */
0x1D7CC,
0x1D7CE,
0x1D800,
+ 0x1E030,
+ 0x1E06E,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -349102,15 +362943,23 @@ static const UV UNI_NFKDQC__N_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_NKO_invlist[] = { /* for all charsets */
- 5, /* Number of elements */
+ 13, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
0x0,
+ 0x60C,
+ 0x60D,
+ 0x61B,
+ 0x61C,
+ 0x61F,
+ 0x620,
0x7C0,
0x7FB,
0x7FD,
- 0x800
+ 0x800,
+ 0xFD3E,
+ 0xFD40
};
static const UV UNI_NL_invlist[] = { /* for all charsets */
@@ -349148,7 +362997,7 @@ static const UV UNI_NL_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NO_invlist[] = { /* for ASCII/Latin1 */
- 143, /* Number of elements */
+ 145, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -349277,6 +363126,8 @@ static const UV UNI_NO_invlist[] = { /* for ASCII/Latin1 */
0x16B62,
0x16E80,
0x16E97,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D360,
@@ -349305,7 +363156,7 @@ static const UV UNI_NO_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NO_invlist[] = { /* for EBCDIC 1047 */
- 145, /* Number of elements */
+ 147, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -349436,6 +363287,8 @@ static const UV UNI_NO_invlist[] = { /* for EBCDIC 1047 */
0x16B62,
0x16E80,
0x16E97,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D360,
@@ -349464,7 +363317,7 @@ static const UV UNI_NO_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NO_invlist[] = { /* for EBCDIC 037 */
- 145, /* Number of elements */
+ 147, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -349595,6 +363448,8 @@ static const UV UNI_NO_invlist[] = { /* for EBCDIC 037 */
0x16B62,
0x16E80,
0x16E97,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D360,
@@ -349798,7 +363653,7 @@ static const UV UNI_NT__DI_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NT__NU_invlist[] = { /* for ASCII/Latin1 */
- 303, /* Number of elements */
+ 305, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -350055,6 +363910,8 @@ static const UV UNI_NT__NU_invlist[] = { /* for ASCII/Latin1 */
0x16B62,
0x16E80,
0x16E97,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D360,
@@ -350115,7 +363972,7 @@ static const UV UNI_NT__NU_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NT__NU_invlist[] = { /* for EBCDIC 1047 */
- 303, /* Number of elements */
+ 305, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -350372,6 +364229,8 @@ static const UV UNI_NT__NU_invlist[] = { /* for EBCDIC 1047 */
0x16B62,
0x16E80,
0x16E97,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D360,
@@ -350432,7 +364291,7 @@ static const UV UNI_NT__NU_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NT__NU_invlist[] = { /* for EBCDIC 037 */
- 303, /* Number of elements */
+ 305, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -350689,6 +364548,8 @@ static const UV UNI_NT__NU_invlist[] = { /* for EBCDIC 037 */
0x16B62,
0x16E80,
0x16E97,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D360,
@@ -350766,7 +364627,7 @@ static const UV UNI_NV___MINUS_1_SLASH_2_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NV__0_invlist[] = { /* for ASCII/Latin1 */
- 163, /* Number of elements */
+ 171, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -350903,12 +364764,18 @@ static const UV UNI_NV__0_invlist[] = { /* for ASCII/Latin1 */
0x11D51,
0x11DA0,
0x11DA1,
+ 0x11F50,
+ 0x11F51,
0x16A60,
0x16A61,
+ 0x16AC0,
+ 0x16AC1,
0x16B50,
0x16B51,
0x16E80,
0x16E81,
+ 0x1D2C0,
+ 0x1D2C1,
0x1D2E0,
0x1D2E1,
0x1D7CE,
@@ -350925,6 +364792,8 @@ static const UV UNI_NV__0_invlist[] = { /* for ASCII/Latin1 */
0x1E141,
0x1E2F0,
0x1E2F1,
+ 0x1E4F0,
+ 0x1E4F1,
0x1E950,
0x1E951,
0x1F100,
@@ -350943,7 +364812,7 @@ static const UV UNI_NV__0_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 1047 */
- 163, /* Number of elements */
+ 171, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -351080,12 +364949,18 @@ static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 1047 */
0x11D51,
0x11DA0,
0x11DA1,
+ 0x11F50,
+ 0x11F51,
0x16A60,
0x16A61,
+ 0x16AC0,
+ 0x16AC1,
0x16B50,
0x16B51,
0x16E80,
0x16E81,
+ 0x1D2C0,
+ 0x1D2C1,
0x1D2E0,
0x1D2E1,
0x1D7CE,
@@ -351102,6 +364977,8 @@ static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 1047 */
0x1E141,
0x1E2F0,
0x1E2F1,
+ 0x1E4F0,
+ 0x1E4F1,
0x1E950,
0x1E951,
0x1F100,
@@ -351120,7 +364997,7 @@ static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 037 */
- 163, /* Number of elements */
+ 171, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -351257,12 +365134,18 @@ static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 037 */
0x11D51,
0x11DA0,
0x11DA1,
+ 0x11F50,
+ 0x11F51,
0x16A60,
0x16A61,
+ 0x16AC0,
+ 0x16AC1,
0x16B50,
0x16B51,
0x16E80,
0x16E81,
+ 0x1D2C0,
+ 0x1D2C1,
0x1D2E0,
0x1D2E1,
0x1D7CE,
@@ -351279,6 +365162,8 @@ static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 037 */
0x1E141,
0x1E2F0,
0x1E2F1,
+ 0x1E4F0,
+ 0x1E4F1,
0x1E950,
0x1E951,
0x1F100,
@@ -351294,7 +365179,7 @@ static const UV UNI_NV__0_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NV__1_invlist[] = { /* for ASCII/Latin1 */
- 275, /* Number of elements */
+ 283, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -351513,6 +365398,8 @@ static const UV UNI_NV__1_invlist[] = { /* for ASCII/Latin1 */
0x11D52,
0x11DA1,
0x11DA2,
+ 0x11F51,
+ 0x11F52,
0x12415,
0x12416,
0x1241E,
@@ -351527,12 +365414,16 @@ static const UV UNI_NV__1_invlist[] = { /* for ASCII/Latin1 */
0x12459,
0x16A61,
0x16A62,
+ 0x16AC1,
+ 0x16AC2,
0x16B51,
0x16B52,
0x16E81,
0x16E82,
0x16E94,
0x16E95,
+ 0x1D2C1,
+ 0x1D2C2,
0x1D2E1,
0x1D2E2,
0x1D360,
@@ -351555,6 +365446,8 @@ static const UV UNI_NV__1_invlist[] = { /* for ASCII/Latin1 */
0x1E142,
0x1E2F1,
0x1E2F2,
+ 0x1E4F1,
+ 0x1E4F2,
0x1E8C7,
0x1E8C8,
0x1E951,
@@ -351583,7 +365476,7 @@ static const UV UNI_NV__1_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 1047 */
- 275, /* Number of elements */
+ 283, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -351802,6 +365695,8 @@ static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 1047 */
0x11D52,
0x11DA1,
0x11DA2,
+ 0x11F51,
+ 0x11F52,
0x12415,
0x12416,
0x1241E,
@@ -351816,12 +365711,16 @@ static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 1047 */
0x12459,
0x16A61,
0x16A62,
+ 0x16AC1,
+ 0x16AC2,
0x16B51,
0x16B52,
0x16E81,
0x16E82,
0x16E94,
0x16E95,
+ 0x1D2C1,
+ 0x1D2C2,
0x1D2E1,
0x1D2E2,
0x1D360,
@@ -351844,6 +365743,8 @@ static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 1047 */
0x1E142,
0x1E2F1,
0x1E2F2,
+ 0x1E4F1,
+ 0x1E4F2,
0x1E8C7,
0x1E8C8,
0x1E951,
@@ -351872,7 +365773,7 @@ static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 037 */
- 275, /* Number of elements */
+ 283, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -352091,6 +365992,8 @@ static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 037 */
0x11D52,
0x11DA1,
0x11DA2,
+ 0x11F51,
+ 0x11F52,
0x12415,
0x12416,
0x1241E,
@@ -352105,12 +366008,16 @@ static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 037 */
0x12459,
0x16A61,
0x16A62,
+ 0x16AC1,
+ 0x16AC2,
0x16B51,
0x16B52,
0x16E81,
0x16E82,
0x16E94,
0x16E95,
+ 0x1D2C1,
+ 0x1D2C2,
0x1D2E1,
0x1D2E2,
0x1D360,
@@ -352133,6 +366040,8 @@ static const UV UNI_NV__1_invlist[] = { /* for EBCDIC 037 */
0x1E142,
0x1E2F1,
0x1E2F2,
+ 0x1E4F1,
+ 0x1E4F2,
0x1E8C7,
0x1E8C8,
0x1E951,
@@ -352632,7 +366541,7 @@ static const UV UNI_NV__1_SLASH_9_invlist[] = { /* for all charsets */
};
static const UV UNI_NV__10_invlist[] = { /* for all charsets */
- 117, /* Number of elements */
+ 119, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -352743,6 +366652,8 @@ static const UV UNI_NV__10_invlist[] = { /* for all charsets */
0x16B5C,
0x16E8A,
0x16E8B,
+ 0x1D2CA,
+ 0x1D2CB,
0x1D2EA,
0x1D2EB,
0x1D369,
@@ -352992,7 +366903,7 @@ static const UV UNI_NV__1000000000000_invlist[] = { /* for all charsets */
};
static const UV UNI_NV__11_invlist[] = { /* for all charsets */
- 17, /* Number of elements */
+ 19, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -353011,6 +366922,8 @@ static const UV UNI_NV__11_invlist[] = { /* for all charsets */
0x24EC,
0x16E8B,
0x16E8C,
+ 0x1D2CB,
+ 0x1D2CC,
0x1D2EB,
0x1D2EC
};
@@ -353036,7 +366949,7 @@ static const UV UNI_NV__11_SLASH_2_invlist[] = { /* for all charsets */
};
static const UV UNI_NV__12_invlist[] = { /* for all charsets */
- 17, /* Number of elements */
+ 19, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -353055,12 +366968,14 @@ static const UV UNI_NV__12_invlist[] = { /* for all charsets */
0x24ED,
0x16E8C,
0x16E8D,
+ 0x1D2CC,
+ 0x1D2CD,
0x1D2EC,
0x1D2ED
};
static const UV UNI_NV__13_invlist[] = { /* for all charsets */
- 13, /* Number of elements */
+ 15, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -353075,6 +366990,8 @@ static const UV UNI_NV__13_invlist[] = { /* for all charsets */
0x24EE,
0x16E8D,
0x16E8E,
+ 0x1D2CD,
+ 0x1D2CE,
0x1D2ED,
0x1D2EE
};
@@ -353090,7 +367007,7 @@ static const UV UNI_NV__13_SLASH_2_invlist[] = { /* for all charsets */
};
static const UV UNI_NV__14_invlist[] = { /* for all charsets */
- 13, /* Number of elements */
+ 15, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -353105,12 +367022,14 @@ static const UV UNI_NV__14_invlist[] = { /* for all charsets */
0x24EF,
0x16E8E,
0x16E8F,
+ 0x1D2CE,
+ 0x1D2CF,
0x1D2EE,
0x1D2EF
};
static const UV UNI_NV__15_invlist[] = { /* for all charsets */
- 13, /* Number of elements */
+ 15, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -353125,6 +367044,8 @@ static const UV UNI_NV__15_invlist[] = { /* for all charsets */
0x24F0,
0x16E8F,
0x16E90,
+ 0x1D2CF,
+ 0x1D2D0,
0x1D2EF,
0x1D2F0
};
@@ -353140,7 +367061,7 @@ static const UV UNI_NV__15_SLASH_2_invlist[] = { /* for all charsets */
};
static const UV UNI_NV__16_invlist[] = { /* for all charsets */
- 15, /* Number of elements */
+ 17, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -353157,12 +367078,14 @@ static const UV UNI_NV__16_invlist[] = { /* for all charsets */
0x24F1,
0x16E90,
0x16E91,
+ 0x1D2D0,
+ 0x1D2D1,
0x1D2F0,
0x1D2F1
};
static const UV UNI_NV__17_invlist[] = { /* for all charsets */
- 15, /* Number of elements */
+ 17, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -353179,6 +367102,8 @@ static const UV UNI_NV__17_invlist[] = { /* for all charsets */
0x24F2,
0x16E91,
0x16E92,
+ 0x1D2D1,
+ 0x1D2D2,
0x1D2F1,
0x1D2F2
};
@@ -353194,7 +367119,7 @@ static const UV UNI_NV__17_SLASH_2_invlist[] = { /* for all charsets */
};
static const UV UNI_NV__18_invlist[] = { /* for all charsets */
- 15, /* Number of elements */
+ 17, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -353211,12 +367136,14 @@ static const UV UNI_NV__18_invlist[] = { /* for all charsets */
0x24F3,
0x16E92,
0x16E93,
+ 0x1D2D2,
+ 0x1D2D3,
0x1D2F2,
0x1D2F3
};
static const UV UNI_NV__19_invlist[] = { /* for all charsets */
- 15, /* Number of elements */
+ 17, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -353233,6 +367160,8 @@ static const UV UNI_NV__19_invlist[] = { /* for all charsets */
0x24F4,
0x16E93,
0x16E94,
+ 0x1D2D3,
+ 0x1D2D4,
0x1D2F3,
0x1D2F4
};
@@ -353240,7 +367169,7 @@ static const UV UNI_NV__19_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NV__2_invlist[] = { /* for ASCII/Latin1 */
- 273, /* Number of elements */
+ 281, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -353449,6 +367378,8 @@ static const UV UNI_NV__2_invlist[] = { /* for ASCII/Latin1 */
0x11D53,
0x11DA2,
0x11DA3,
+ 0x11F52,
+ 0x11F53,
0x12400,
0x12401,
0x12416,
@@ -353471,12 +367402,16 @@ static const UV UNI_NV__2_invlist[] = { /* for ASCII/Latin1 */
0x1245A,
0x16A62,
0x16A63,
+ 0x16AC2,
+ 0x16AC3,
0x16B52,
0x16B53,
0x16E82,
0x16E83,
0x16E95,
0x16E96,
+ 0x1D2C2,
+ 0x1D2C3,
0x1D2E2,
0x1D2E3,
0x1D361,
@@ -353497,6 +367432,8 @@ static const UV UNI_NV__2_invlist[] = { /* for ASCII/Latin1 */
0x1E143,
0x1E2F2,
0x1E2F3,
+ 0x1E4F2,
+ 0x1E4F3,
0x1E8C8,
0x1E8C9,
0x1E952,
@@ -353527,7 +367464,7 @@ static const UV UNI_NV__2_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 1047 */
- 273, /* Number of elements */
+ 281, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -353736,6 +367673,8 @@ static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 1047 */
0x11D53,
0x11DA2,
0x11DA3,
+ 0x11F52,
+ 0x11F53,
0x12400,
0x12401,
0x12416,
@@ -353758,12 +367697,16 @@ static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 1047 */
0x1245A,
0x16A62,
0x16A63,
+ 0x16AC2,
+ 0x16AC3,
0x16B52,
0x16B53,
0x16E82,
0x16E83,
0x16E95,
0x16E96,
+ 0x1D2C2,
+ 0x1D2C3,
0x1D2E2,
0x1D2E3,
0x1D361,
@@ -353784,6 +367727,8 @@ static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 1047 */
0x1E143,
0x1E2F2,
0x1E2F3,
+ 0x1E4F2,
+ 0x1E4F3,
0x1E8C8,
0x1E8C9,
0x1E952,
@@ -353814,7 +367759,7 @@ static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 037 */
- 273, /* Number of elements */
+ 281, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -354023,6 +367968,8 @@ static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 037 */
0x11D53,
0x11DA2,
0x11DA3,
+ 0x11F52,
+ 0x11F53,
0x12400,
0x12401,
0x12416,
@@ -354045,12 +367992,16 @@ static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 037 */
0x1245A,
0x16A62,
0x16A63,
+ 0x16AC2,
+ 0x16AC3,
0x16B52,
0x16B53,
0x16E82,
0x16E83,
0x16E95,
0x16E96,
+ 0x1D2C2,
+ 0x1D2C3,
0x1D2E2,
0x1D2E3,
0x1D361,
@@ -354071,6 +368022,8 @@ static const UV UNI_NV__2_invlist[] = { /* for EBCDIC 037 */
0x1E143,
0x1E2F2,
0x1E2F3,
+ 0x1E4F2,
+ 0x1E4F3,
0x1E8C8,
0x1E8C9,
0x1E952,
@@ -354386,7 +368339,7 @@ static const UV UNI_NV__29_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NV__3_invlist[] = { /* for ASCII/Latin1 */
- 267, /* Number of elements */
+ 275, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -354583,6 +368536,8 @@ static const UV UNI_NV__3_invlist[] = { /* for ASCII/Latin1 */
0x11D54,
0x11DA3,
0x11DA4,
+ 0x11F53,
+ 0x11F54,
0x12401,
0x12402,
0x12408,
@@ -354607,12 +368562,16 @@ static const UV UNI_NV__3_invlist[] = { /* for ASCII/Latin1 */
0x12458,
0x16A63,
0x16A64,
+ 0x16AC3,
+ 0x16AC4,
0x16B53,
0x16B54,
0x16E83,
0x16E84,
0x16E96,
0x16E97,
+ 0x1D2C3,
+ 0x1D2C4,
0x1D2E3,
0x1D2E4,
0x1D362,
@@ -354633,6 +368592,8 @@ static const UV UNI_NV__3_invlist[] = { /* for ASCII/Latin1 */
0x1E144,
0x1E2F3,
0x1E2F4,
+ 0x1E4F3,
+ 0x1E4F4,
0x1E8C9,
0x1E8CA,
0x1E953,
@@ -354667,7 +368628,7 @@ static const UV UNI_NV__3_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 1047 */
- 267, /* Number of elements */
+ 275, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -354864,6 +368825,8 @@ static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 1047 */
0x11D54,
0x11DA3,
0x11DA4,
+ 0x11F53,
+ 0x11F54,
0x12401,
0x12402,
0x12408,
@@ -354888,12 +368851,16 @@ static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 1047 */
0x12458,
0x16A63,
0x16A64,
+ 0x16AC3,
+ 0x16AC4,
0x16B53,
0x16B54,
0x16E83,
0x16E84,
0x16E96,
0x16E97,
+ 0x1D2C3,
+ 0x1D2C4,
0x1D2E3,
0x1D2E4,
0x1D362,
@@ -354914,6 +368881,8 @@ static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 1047 */
0x1E144,
0x1E2F3,
0x1E2F4,
+ 0x1E4F3,
+ 0x1E4F4,
0x1E8C9,
0x1E8CA,
0x1E953,
@@ -354948,7 +368917,7 @@ static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 037 */
- 267, /* Number of elements */
+ 275, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -355145,6 +369114,8 @@ static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 037 */
0x11D54,
0x11DA3,
0x11DA4,
+ 0x11F53,
+ 0x11F54,
0x12401,
0x12402,
0x12408,
@@ -355169,12 +369140,16 @@ static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 037 */
0x12458,
0x16A63,
0x16A64,
+ 0x16AC3,
+ 0x16AC4,
0x16B53,
0x16B54,
0x16E83,
0x16E84,
0x16E96,
0x16E97,
+ 0x1D2C3,
+ 0x1D2C4,
0x1D2E3,
0x1D2E4,
0x1D362,
@@ -355195,6 +369170,8 @@ static const UV UNI_NV__3_invlist[] = { /* for EBCDIC 037 */
0x1E144,
0x1E2F3,
0x1E2F4,
+ 0x1E4F3,
+ 0x1E4F4,
0x1E8C9,
0x1E8CA,
0x1E953,
@@ -355604,7 +369581,7 @@ static const UV UNI_NV__39_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NV__4_invlist[] = { /* for ASCII/Latin1 */
- 253, /* Number of elements */
+ 261, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -355789,6 +369766,8 @@ static const UV UNI_NV__4_invlist[] = { /* for ASCII/Latin1 */
0x11D55,
0x11DA4,
0x11DA5,
+ 0x11F54,
+ 0x11F55,
0x12402,
0x12403,
0x12409,
@@ -355815,10 +369794,14 @@ static const UV UNI_NV__4_invlist[] = { /* for ASCII/Latin1 */
0x1246A,
0x16A64,
0x16A65,
+ 0x16AC4,
+ 0x16AC5,
0x16B54,
0x16B55,
0x16E84,
0x16E85,
+ 0x1D2C4,
+ 0x1D2C5,
0x1D2E4,
0x1D2E5,
0x1D363,
@@ -355839,6 +369822,8 @@ static const UV UNI_NV__4_invlist[] = { /* for ASCII/Latin1 */
0x1E145,
0x1E2F4,
0x1E2F5,
+ 0x1E4F4,
+ 0x1E4F5,
0x1E8CA,
0x1E8CB,
0x1E954,
@@ -355871,7 +369856,7 @@ static const UV UNI_NV__4_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 1047 */
- 253, /* Number of elements */
+ 261, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -356056,6 +370041,8 @@ static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 1047 */
0x11D55,
0x11DA4,
0x11DA5,
+ 0x11F54,
+ 0x11F55,
0x12402,
0x12403,
0x12409,
@@ -356082,10 +370069,14 @@ static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 1047 */
0x1246A,
0x16A64,
0x16A65,
+ 0x16AC4,
+ 0x16AC5,
0x16B54,
0x16B55,
0x16E84,
0x16E85,
+ 0x1D2C4,
+ 0x1D2C5,
0x1D2E4,
0x1D2E5,
0x1D363,
@@ -356106,6 +370097,8 @@ static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 1047 */
0x1E145,
0x1E2F4,
0x1E2F5,
+ 0x1E4F4,
+ 0x1E4F5,
0x1E8CA,
0x1E8CB,
0x1E954,
@@ -356138,7 +370131,7 @@ static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 037 */
- 253, /* Number of elements */
+ 261, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -356323,6 +370316,8 @@ static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 037 */
0x11D55,
0x11DA4,
0x11DA5,
+ 0x11F54,
+ 0x11F55,
0x12402,
0x12403,
0x12409,
@@ -356349,10 +370344,14 @@ static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 037 */
0x1246A,
0x16A64,
0x16A65,
+ 0x16AC4,
+ 0x16AC5,
0x16B54,
0x16B55,
0x16E84,
0x16E85,
+ 0x1D2C4,
+ 0x1D2C5,
0x1D2E4,
0x1D2E5,
0x1D363,
@@ -356373,6 +370372,8 @@ static const UV UNI_NV__4_invlist[] = { /* for EBCDIC 037 */
0x1E145,
0x1E2F4,
0x1E2F5,
+ 0x1E4F4,
+ 0x1E4F5,
0x1E8CA,
0x1E8CB,
0x1E954,
@@ -356620,7 +370621,7 @@ static const UV UNI_NV__49_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NV__5_invlist[] = { /* for ASCII/Latin1 */
- 257, /* Number of elements */
+ 265, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -356813,6 +370814,8 @@ static const UV UNI_NV__5_invlist[] = { /* for ASCII/Latin1 */
0x11D56,
0x11DA5,
0x11DA6,
+ 0x11F55,
+ 0x11F56,
0x12403,
0x12404,
0x1240A,
@@ -356837,10 +370840,14 @@ static const UV UNI_NV__5_invlist[] = { /* for ASCII/Latin1 */
0x1246B,
0x16A65,
0x16A66,
+ 0x16AC5,
+ 0x16AC6,
0x16B55,
0x16B56,
0x16E85,
0x16E86,
+ 0x1D2C5,
+ 0x1D2C6,
0x1D2E5,
0x1D2E6,
0x1D364,
@@ -356863,6 +370870,8 @@ static const UV UNI_NV__5_invlist[] = { /* for ASCII/Latin1 */
0x1E146,
0x1E2F5,
0x1E2F6,
+ 0x1E4F5,
+ 0x1E4F6,
0x1E8CB,
0x1E8CC,
0x1E955,
@@ -356891,7 +370900,7 @@ static const UV UNI_NV__5_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 1047 */
- 257, /* Number of elements */
+ 265, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -357084,6 +371093,8 @@ static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 1047 */
0x11D56,
0x11DA5,
0x11DA6,
+ 0x11F55,
+ 0x11F56,
0x12403,
0x12404,
0x1240A,
@@ -357108,10 +371119,14 @@ static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 1047 */
0x1246B,
0x16A65,
0x16A66,
+ 0x16AC5,
+ 0x16AC6,
0x16B55,
0x16B56,
0x16E85,
0x16E86,
+ 0x1D2C5,
+ 0x1D2C6,
0x1D2E5,
0x1D2E6,
0x1D364,
@@ -357134,6 +371149,8 @@ static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 1047 */
0x1E146,
0x1E2F5,
0x1E2F6,
+ 0x1E4F5,
+ 0x1E4F6,
0x1E8CB,
0x1E8CC,
0x1E955,
@@ -357162,7 +371179,7 @@ static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 037 */
- 257, /* Number of elements */
+ 265, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -357355,6 +371372,8 @@ static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 037 */
0x11D56,
0x11DA5,
0x11DA6,
+ 0x11F55,
+ 0x11F56,
0x12403,
0x12404,
0x1240A,
@@ -357379,10 +371398,14 @@ static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 037 */
0x1246B,
0x16A65,
0x16A66,
+ 0x16AC5,
+ 0x16AC6,
0x16B55,
0x16B56,
0x16E85,
0x16E86,
+ 0x1D2C5,
+ 0x1D2C6,
0x1D2E5,
0x1D2E6,
0x1D364,
@@ -357405,6 +371428,8 @@ static const UV UNI_NV__5_invlist[] = { /* for EBCDIC 037 */
0x1E146,
0x1E2F5,
0x1E2F6,
+ 0x1E4F5,
+ 0x1E4F6,
0x1E8CB,
0x1E8CC,
0x1E955,
@@ -357622,7 +371647,7 @@ static const UV UNI_NV__500000_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NV__6_invlist[] = { /* for ASCII/Latin1 */
- 227, /* Number of elements */
+ 235, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -357795,6 +371820,8 @@ static const UV UNI_NV__6_invlist[] = { /* for ASCII/Latin1 */
0x11D57,
0x11DA6,
0x11DA7,
+ 0x11F56,
+ 0x11F57,
0x12404,
0x12405,
0x1240B,
@@ -357813,10 +371840,14 @@ static const UV UNI_NV__6_invlist[] = { /* for ASCII/Latin1 */
0x1246C,
0x16A66,
0x16A67,
+ 0x16AC6,
+ 0x16AC7,
0x16B56,
0x16B57,
0x16E86,
0x16E87,
+ 0x1D2C6,
+ 0x1D2C7,
0x1D2E6,
0x1D2E7,
0x1D365,
@@ -357835,6 +371866,8 @@ static const UV UNI_NV__6_invlist[] = { /* for ASCII/Latin1 */
0x1E147,
0x1E2F6,
0x1E2F7,
+ 0x1E4F6,
+ 0x1E4F7,
0x1E8CC,
0x1E8CD,
0x1E956,
@@ -357863,7 +371896,7 @@ static const UV UNI_NV__6_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 1047 */
- 227, /* Number of elements */
+ 235, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -358036,6 +372069,8 @@ static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 1047 */
0x11D57,
0x11DA6,
0x11DA7,
+ 0x11F56,
+ 0x11F57,
0x12404,
0x12405,
0x1240B,
@@ -358054,10 +372089,14 @@ static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 1047 */
0x1246C,
0x16A66,
0x16A67,
+ 0x16AC6,
+ 0x16AC7,
0x16B56,
0x16B57,
0x16E86,
0x16E87,
+ 0x1D2C6,
+ 0x1D2C7,
0x1D2E6,
0x1D2E7,
0x1D365,
@@ -358076,6 +372115,8 @@ static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 1047 */
0x1E147,
0x1E2F6,
0x1E2F7,
+ 0x1E4F6,
+ 0x1E4F7,
0x1E8CC,
0x1E8CD,
0x1E956,
@@ -358104,7 +372145,7 @@ static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 037 */
- 227, /* Number of elements */
+ 235, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -358277,6 +372318,8 @@ static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 037 */
0x11D57,
0x11DA6,
0x11DA7,
+ 0x11F56,
+ 0x11F57,
0x12404,
0x12405,
0x1240B,
@@ -358295,10 +372338,14 @@ static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 037 */
0x1246C,
0x16A66,
0x16A67,
+ 0x16AC6,
+ 0x16AC7,
0x16B56,
0x16B57,
0x16E86,
0x16E87,
+ 0x1D2C6,
+ 0x1D2C7,
0x1D2E6,
0x1D2E7,
0x1D365,
@@ -358317,6 +372364,8 @@ static const UV UNI_NV__6_invlist[] = { /* for EBCDIC 037 */
0x1E147,
0x1E2F6,
0x1E2F7,
+ 0x1E4F6,
+ 0x1E4F7,
0x1E8CC,
0x1E8CD,
0x1E956,
@@ -358440,7 +372489,7 @@ static const UV UNI_NV__600000_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NV__7_invlist[] = { /* for ASCII/Latin1 */
- 221, /* Number of elements */
+ 229, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -358609,6 +372658,8 @@ static const UV UNI_NV__7_invlist[] = { /* for ASCII/Latin1 */
0x11D58,
0x11DA7,
0x11DA8,
+ 0x11F57,
+ 0x11F58,
0x12405,
0x12406,
0x1240C,
@@ -358625,10 +372676,14 @@ static const UV UNI_NV__7_invlist[] = { /* for ASCII/Latin1 */
0x1246D,
0x16A67,
0x16A68,
+ 0x16AC7,
+ 0x16AC8,
0x16B57,
0x16B58,
0x16E87,
0x16E88,
+ 0x1D2C7,
+ 0x1D2C8,
0x1D2E7,
0x1D2E8,
0x1D366,
@@ -358647,6 +372702,8 @@ static const UV UNI_NV__7_invlist[] = { /* for ASCII/Latin1 */
0x1E148,
0x1E2F7,
0x1E2F8,
+ 0x1E4F7,
+ 0x1E4F8,
0x1E8CD,
0x1E8CE,
0x1E957,
@@ -358675,7 +372732,7 @@ static const UV UNI_NV__7_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 1047 */
- 221, /* Number of elements */
+ 229, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -358844,6 +372901,8 @@ static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 1047 */
0x11D58,
0x11DA7,
0x11DA8,
+ 0x11F57,
+ 0x11F58,
0x12405,
0x12406,
0x1240C,
@@ -358860,10 +372919,14 @@ static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 1047 */
0x1246D,
0x16A67,
0x16A68,
+ 0x16AC7,
+ 0x16AC8,
0x16B57,
0x16B58,
0x16E87,
0x16E88,
+ 0x1D2C7,
+ 0x1D2C8,
0x1D2E7,
0x1D2E8,
0x1D366,
@@ -358882,6 +372945,8 @@ static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 1047 */
0x1E148,
0x1E2F7,
0x1E2F8,
+ 0x1E4F7,
+ 0x1E4F8,
0x1E8CD,
0x1E8CE,
0x1E957,
@@ -358910,7 +372975,7 @@ static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 037 */
- 221, /* Number of elements */
+ 229, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -359079,6 +373144,8 @@ static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 037 */
0x11D58,
0x11DA7,
0x11DA8,
+ 0x11F57,
+ 0x11F58,
0x12405,
0x12406,
0x1240C,
@@ -359095,10 +373162,14 @@ static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 037 */
0x1246D,
0x16A67,
0x16A68,
+ 0x16AC7,
+ 0x16AC8,
0x16B57,
0x16B58,
0x16E87,
0x16E88,
+ 0x1D2C7,
+ 0x1D2C8,
0x1D2E7,
0x1D2E8,
0x1D366,
@@ -359117,6 +373188,8 @@ static const UV UNI_NV__7_invlist[] = { /* for EBCDIC 037 */
0x1E148,
0x1E2F7,
0x1E2F8,
+ 0x1E4F7,
+ 0x1E4F8,
0x1E8CD,
0x1E8CE,
0x1E957,
@@ -359268,7 +373341,7 @@ static const UV UNI_NV__700000_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NV__8_invlist[] = { /* for ASCII/Latin1 */
- 215, /* Number of elements */
+ 223, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -359433,6 +373506,8 @@ static const UV UNI_NV__8_invlist[] = { /* for ASCII/Latin1 */
0x11D59,
0x11DA8,
0x11DA9,
+ 0x11F58,
+ 0x11F59,
0x12406,
0x12407,
0x1240D,
@@ -359449,10 +373524,14 @@ static const UV UNI_NV__8_invlist[] = { /* for ASCII/Latin1 */
0x1246E,
0x16A68,
0x16A69,
+ 0x16AC8,
+ 0x16AC9,
0x16B58,
0x16B59,
0x16E88,
0x16E89,
+ 0x1D2C8,
+ 0x1D2C9,
0x1D2E8,
0x1D2E9,
0x1D367,
@@ -359471,6 +373550,8 @@ static const UV UNI_NV__8_invlist[] = { /* for ASCII/Latin1 */
0x1E149,
0x1E2F8,
0x1E2F9,
+ 0x1E4F8,
+ 0x1E4F9,
0x1E8CE,
0x1E8CF,
0x1E958,
@@ -359497,7 +373578,7 @@ static const UV UNI_NV__8_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 1047 */
- 215, /* Number of elements */
+ 223, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -359662,6 +373743,8 @@ static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 1047 */
0x11D59,
0x11DA8,
0x11DA9,
+ 0x11F58,
+ 0x11F59,
0x12406,
0x12407,
0x1240D,
@@ -359678,10 +373761,14 @@ static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 1047 */
0x1246E,
0x16A68,
0x16A69,
+ 0x16AC8,
+ 0x16AC9,
0x16B58,
0x16B59,
0x16E88,
0x16E89,
+ 0x1D2C8,
+ 0x1D2C9,
0x1D2E8,
0x1D2E9,
0x1D367,
@@ -359700,6 +373787,8 @@ static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 1047 */
0x1E149,
0x1E2F8,
0x1E2F9,
+ 0x1E4F8,
+ 0x1E4F9,
0x1E8CE,
0x1E8CF,
0x1E958,
@@ -359726,7 +373815,7 @@ static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 037 */
- 215, /* Number of elements */
+ 223, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -359891,6 +373980,8 @@ static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 037 */
0x11D59,
0x11DA8,
0x11DA9,
+ 0x11F58,
+ 0x11F59,
0x12406,
0x12407,
0x1240D,
@@ -359907,10 +373998,14 @@ static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 037 */
0x1246E,
0x16A68,
0x16A69,
+ 0x16AC8,
+ 0x16AC9,
0x16B58,
0x16B59,
0x16E88,
0x16E89,
+ 0x1D2C8,
+ 0x1D2C9,
0x1D2E8,
0x1D2E9,
0x1D367,
@@ -359929,6 +374024,8 @@ static const UV UNI_NV__8_invlist[] = { /* for EBCDIC 037 */
0x1E149,
0x1E2F8,
0x1E2F9,
+ 0x1E4F8,
+ 0x1E4F9,
0x1E8CE,
0x1E8CF,
0x1E958,
@@ -360046,7 +374143,7 @@ static const UV UNI_NV__800000_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NV__9_invlist[] = { /* for ASCII/Latin1 */
- 219, /* Number of elements */
+ 227, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -360213,6 +374310,8 @@ static const UV UNI_NV__9_invlist[] = { /* for ASCII/Latin1 */
0x11D5A,
0x11DA9,
0x11DAA,
+ 0x11F59,
+ 0x11F5A,
0x12407,
0x12408,
0x1240E,
@@ -360229,10 +374328,14 @@ static const UV UNI_NV__9_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x16A69,
0x16A6A,
+ 0x16AC9,
+ 0x16ACA,
0x16B59,
0x16B5A,
0x16E89,
0x16E8A,
+ 0x1D2C9,
+ 0x1D2CA,
0x1D2E9,
0x1D2EA,
0x1D368,
@@ -360251,6 +374354,8 @@ static const UV UNI_NV__9_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E2F9,
0x1E2FA,
+ 0x1E4F9,
+ 0x1E4FA,
0x1E8CF,
0x1E8D0,
0x1E959,
@@ -360279,7 +374384,7 @@ static const UV UNI_NV__9_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 1047 */
- 219, /* Number of elements */
+ 227, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -360446,6 +374551,8 @@ static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 1047 */
0x11D5A,
0x11DA9,
0x11DAA,
+ 0x11F59,
+ 0x11F5A,
0x12407,
0x12408,
0x1240E,
@@ -360462,10 +374569,14 @@ static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x16A69,
0x16A6A,
+ 0x16AC9,
+ 0x16ACA,
0x16B59,
0x16B5A,
0x16E89,
0x16E8A,
+ 0x1D2C9,
+ 0x1D2CA,
0x1D2E9,
0x1D2EA,
0x1D368,
@@ -360484,6 +374595,8 @@ static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E2F9,
0x1E2FA,
+ 0x1E4F9,
+ 0x1E4FA,
0x1E8CF,
0x1E8D0,
0x1E959,
@@ -360512,7 +374625,7 @@ static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 037 */
- 219, /* Number of elements */
+ 227, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -360679,6 +374792,8 @@ static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 037 */
0x11D5A,
0x11DA9,
0x11DAA,
+ 0x11F59,
+ 0x11F5A,
0x12407,
0x12408,
0x1240E,
@@ -360695,10 +374810,14 @@ static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x16A69,
0x16A6A,
+ 0x16AC9,
+ 0x16ACA,
0x16B59,
0x16B5A,
0x16E89,
0x16E8A,
+ 0x1D2C9,
+ 0x1D2CA,
0x1D2E9,
0x1D2EA,
0x1D368,
@@ -360717,6 +374836,8 @@ static const UV UNI_NV__9_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E2F9,
0x1E2FA,
+ 0x1E4F9,
+ 0x1E4FA,
0x1E8CF,
0x1E8D0,
0x1E959,
@@ -360848,7 +374969,7 @@ static const UV UNI_NV__900000_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_NV__NAN_invlist[] = { /* for ASCII/Latin1 */
- 411, /* Number of elements */
+ 419, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -361191,18 +375312,24 @@ static const UV UNI_NV__NAN_invlist[] = { /* for ASCII/Latin1 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x11FC0,
0x11FD5,
0x12400,
0x1246F,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x16B5B,
0x16B62,
0x16E80,
0x16E97,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D360,
@@ -361213,6 +375340,8 @@ static const UV UNI_NV__NAN_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E8C7,
0x1E8D0,
0x1E950,
@@ -361273,7 +375402,7 @@ static const UV UNI_NV__NAN_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 1047 */
- 411, /* Number of elements */
+ 419, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -361616,18 +375745,24 @@ static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 1047 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x11FC0,
0x11FD5,
0x12400,
0x1246F,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x16B5B,
0x16B62,
0x16E80,
0x16E97,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D360,
@@ -361638,6 +375773,8 @@ static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E8C7,
0x1E8D0,
0x1E950,
@@ -361698,7 +375835,7 @@ static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 037 */
- 411, /* Number of elements */
+ 419, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -362041,18 +376178,24 @@ static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 037 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x11FC0,
0x11FD5,
0x12400,
0x1246F,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x16B5B,
0x16B62,
0x16E80,
0x16E97,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D360,
@@ -362063,6 +376206,8 @@ static const UV UNI_NV__NAN_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E8C7,
0x1E8D0,
0x1E950,
@@ -362245,10 +376390,24 @@ static const UV UNI_OTTOMANSIYAQNUMBERS_invlist[] = { /* for all charsets */
0x1ED50
};
+static const UV UNI_OUGR_invlist[] = { /* for all charsets */
+ 7, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x640,
+ 0x641,
+ 0x10AF2,
+ 0x10AF3,
+ 0x10F70,
+ 0x10F8A
+};
+
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_P_invlist[] = { /* for ASCII/Latin1 */
- 371, /* Number of elements */
+ 383, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -362307,7 +376466,7 @@ static const UV UNI_P_invlist[] = { /* for ASCII/Latin1 */
0x60E,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x66A,
0x66E,
@@ -362385,6 +376544,8 @@ static const UV UNI_P_invlist[] = { /* for ASCII/Latin1 */
0x1AAE,
0x1B5A,
0x1B61,
+ 0x1B7D,
+ 0x1B7F,
0x1BFC,
0x1C00,
0x1C3B,
@@ -362434,7 +376595,7 @@ static const UV UNI_P_invlist[] = { /* for ASCII/Latin1 */
0x2E30,
0x2E50,
0x2E52,
- 0x2E53,
+ 0x2E5E,
0x3001,
0x3004,
0x3008,
@@ -362545,6 +376706,8 @@ static const UV UNI_P_invlist[] = { /* for ASCII/Latin1 */
0x10EAE,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x1104E,
0x110BB,
@@ -362581,6 +376744,8 @@ static const UV UNI_P_invlist[] = { /* for ASCII/Latin1 */
0x11644,
0x11660,
0x1166D,
+ 0x116B9,
+ 0x116BA,
0x1173C,
0x1173F,
0x1183B,
@@ -362595,16 +376760,22 @@ static const UV UNI_P_invlist[] = { /* for ASCII/Latin1 */
0x11A9D,
0x11A9E,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C41,
0x11C46,
0x11C70,
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F50,
0x11FFF,
0x12000,
0x12470,
0x12475,
+ 0x12FF1,
+ 0x12FF3,
0x16A6E,
0x16A70,
0x16AF5,
@@ -362633,7 +376804,7 @@ static const UV UNI_P_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_P_invlist[] = { /* for EBCDIC 1047 */
- 379, /* Number of elements */
+ 391, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -362700,7 +376871,7 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 1047 */
0x60E,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x66A,
0x66E,
@@ -362778,6 +376949,8 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 1047 */
0x1AAE,
0x1B5A,
0x1B61,
+ 0x1B7D,
+ 0x1B7F,
0x1BFC,
0x1C00,
0x1C3B,
@@ -362827,7 +377000,7 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 1047 */
0x2E30,
0x2E50,
0x2E52,
- 0x2E53,
+ 0x2E5E,
0x3001,
0x3004,
0x3008,
@@ -362938,6 +377111,8 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 1047 */
0x10EAE,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x1104E,
0x110BB,
@@ -362974,6 +377149,8 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 1047 */
0x11644,
0x11660,
0x1166D,
+ 0x116B9,
+ 0x116BA,
0x1173C,
0x1173F,
0x1183B,
@@ -362988,16 +377165,22 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 1047 */
0x11A9D,
0x11A9E,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C41,
0x11C46,
0x11C70,
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F50,
0x11FFF,
0x12000,
0x12470,
0x12475,
+ 0x12FF1,
+ 0x12FF3,
0x16A6E,
0x16A70,
0x16AF5,
@@ -363026,7 +377209,7 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_P_invlist[] = { /* for EBCDIC 037 */
- 377, /* Number of elements */
+ 389, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -363091,7 +377274,7 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 037 */
0x60E,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x66A,
0x66E,
@@ -363169,6 +377352,8 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 037 */
0x1AAE,
0x1B5A,
0x1B61,
+ 0x1B7D,
+ 0x1B7F,
0x1BFC,
0x1C00,
0x1C3B,
@@ -363218,7 +377403,7 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 037 */
0x2E30,
0x2E50,
0x2E52,
- 0x2E53,
+ 0x2E5E,
0x3001,
0x3004,
0x3008,
@@ -363329,6 +377514,8 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 037 */
0x10EAE,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x1104E,
0x110BB,
@@ -363365,6 +377552,8 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 037 */
0x11644,
0x11660,
0x1166D,
+ 0x116B9,
+ 0x116BA,
0x1173C,
0x1173F,
0x1183B,
@@ -363379,16 +377568,22 @@ static const UV UNI_P_invlist[] = { /* for EBCDIC 037 */
0x11A9D,
0x11A9E,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C41,
0x11C46,
0x11C70,
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F50,
0x11FFF,
0x12000,
0x12470,
0x12475,
+ 0x12FF1,
+ 0x12FF3,
0x16A6E,
0x16A70,
0x16AF5,
@@ -363726,7 +377921,7 @@ static const UV UNI_PC_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_PCM_invlist[] = { /* for all charsets */
- 13, /* Number of elements */
+ 15, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -363737,6 +377932,8 @@ static const UV UNI_PCM_invlist[] = { /* for all charsets */
0x6DE,
0x70F,
0x710,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0x110BD,
@@ -363748,7 +377945,7 @@ static const UV UNI_PCM_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_PD_invlist[] = { /* for ASCII/Latin1 */
- 37, /* Number of elements */
+ 39, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -363773,6 +377970,8 @@ static const UV UNI_PD_invlist[] = { /* for ASCII/Latin1 */
0x2E3C,
0x2E40,
0x2E41,
+ 0x2E5D,
+ 0x2E5E,
0x301C,
0x301D,
0x3030,
@@ -363799,7 +377998,7 @@ static const UV UNI_PD_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_PD_invlist[] = { /* for EBCDIC 1047 */
- 37, /* Number of elements */
+ 39, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -363824,6 +378023,8 @@ static const UV UNI_PD_invlist[] = { /* for EBCDIC 1047 */
0x2E3C,
0x2E40,
0x2E41,
+ 0x2E5D,
+ 0x2E5E,
0x301C,
0x301D,
0x3030,
@@ -363850,7 +378051,7 @@ static const UV UNI_PD_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_PD_invlist[] = { /* for EBCDIC 037 */
- 37, /* Number of elements */
+ 39, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -363875,6 +378076,8 @@ static const UV UNI_PD_invlist[] = { /* for EBCDIC 037 */
0x2E3C,
0x2E40,
0x2E41,
+ 0x2E5D,
+ 0x2E5E,
0x301C,
0x301D,
0x3030,
@@ -363898,7 +378101,7 @@ static const UV UNI_PD_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_PE_invlist[] = { /* for ASCII/Latin1 */
- 145, /* Number of elements */
+ 153, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -363989,6 +378192,14 @@ static const UV UNI_PE_invlist[] = { /* for ASCII/Latin1 */
0x2E28,
0x2E29,
0x2E2A,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
+ 0x2E5D,
0x3009,
0x300A,
0x300B,
@@ -364057,7 +378268,7 @@ static const UV UNI_PE_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_PE_invlist[] = { /* for EBCDIC 1047 */
- 145, /* Number of elements */
+ 153, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -364148,6 +378359,14 @@ static const UV UNI_PE_invlist[] = { /* for EBCDIC 1047 */
0x2E28,
0x2E29,
0x2E2A,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
+ 0x2E5D,
0x3009,
0x300A,
0x300B,
@@ -364216,7 +378435,7 @@ static const UV UNI_PE_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_PE_invlist[] = { /* for EBCDIC 037 */
- 145, /* Number of elements */
+ 153, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -364307,6 +378526,14 @@ static const UV UNI_PE_invlist[] = { /* for EBCDIC 037 */
0x2E28,
0x2E29,
0x2E2A,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
+ 0x2E5D,
0x3009,
0x300A,
0x300B,
@@ -364688,7 +378915,7 @@ static const UV UNI_PLAYINGCARDS_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_PO_invlist[] = { /* for ASCII/Latin1 */
- 363, /* Number of elements */
+ 375, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -364739,7 +378966,7 @@ static const UV UNI_PO_invlist[] = { /* for ASCII/Latin1 */
0x60E,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x66A,
0x66E,
@@ -364813,6 +379040,8 @@ static const UV UNI_PO_invlist[] = { /* for ASCII/Latin1 */
0x1AAE,
0x1B5A,
0x1B61,
+ 0x1B7D,
+ 0x1B7F,
0x1BFC,
0x1C00,
0x1C3B,
@@ -364870,7 +379099,7 @@ static const UV UNI_PO_invlist[] = { /* for ASCII/Latin1 */
0x2E43,
0x2E50,
0x2E52,
- 0x2E53,
+ 0x2E55,
0x3001,
0x3004,
0x303D,
@@ -364977,6 +379206,8 @@ static const UV UNI_PO_invlist[] = { /* for ASCII/Latin1 */
0x10B9D,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x1104E,
0x110BB,
@@ -365013,6 +379244,8 @@ static const UV UNI_PO_invlist[] = { /* for ASCII/Latin1 */
0x11644,
0x11660,
0x1166D,
+ 0x116B9,
+ 0x116BA,
0x1173C,
0x1173F,
0x1183B,
@@ -365027,16 +379260,22 @@ static const UV UNI_PO_invlist[] = { /* for ASCII/Latin1 */
0x11A9D,
0x11A9E,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C41,
0x11C46,
0x11C70,
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F50,
0x11FFF,
0x12000,
0x12470,
0x12475,
+ 0x12FF1,
+ 0x12FF3,
0x16A6E,
0x16A70,
0x16AF5,
@@ -365065,7 +379304,7 @@ static const UV UNI_PO_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_PO_invlist[] = { /* for EBCDIC 1047 */
- 367, /* Number of elements */
+ 379, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -365120,7 +379359,7 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 1047 */
0x60E,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x66A,
0x66E,
@@ -365194,6 +379433,8 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 1047 */
0x1AAE,
0x1B5A,
0x1B61,
+ 0x1B7D,
+ 0x1B7F,
0x1BFC,
0x1C00,
0x1C3B,
@@ -365251,7 +379492,7 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 1047 */
0x2E43,
0x2E50,
0x2E52,
- 0x2E53,
+ 0x2E55,
0x3001,
0x3004,
0x303D,
@@ -365358,6 +379599,8 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 1047 */
0x10B9D,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x1104E,
0x110BB,
@@ -365394,6 +379637,8 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 1047 */
0x11644,
0x11660,
0x1166D,
+ 0x116B9,
+ 0x116BA,
0x1173C,
0x1173F,
0x1183B,
@@ -365408,16 +379653,22 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 1047 */
0x11A9D,
0x11A9E,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C41,
0x11C46,
0x11C70,
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F50,
0x11FFF,
0x12000,
0x12470,
0x12475,
+ 0x12FF1,
+ 0x12FF3,
0x16A6E,
0x16A70,
0x16AF5,
@@ -365446,7 +379697,7 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_PO_invlist[] = { /* for EBCDIC 037 */
- 367, /* Number of elements */
+ 379, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -365501,7 +379752,7 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 037 */
0x60E,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x66A,
0x66E,
@@ -365575,6 +379826,8 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 037 */
0x1AAE,
0x1B5A,
0x1B61,
+ 0x1B7D,
+ 0x1B7F,
0x1BFC,
0x1C00,
0x1C3B,
@@ -365632,7 +379885,7 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 037 */
0x2E43,
0x2E50,
0x2E52,
- 0x2E53,
+ 0x2E55,
0x3001,
0x3004,
0x303D,
@@ -365739,6 +379992,8 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 037 */
0x10B9D,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x1104E,
0x110BB,
@@ -365775,6 +380030,8 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 037 */
0x11644,
0x11660,
0x1166D,
+ 0x116B9,
+ 0x116BA,
0x1173C,
0x1173F,
0x1183B,
@@ -365789,16 +380046,22 @@ static const UV UNI_PO_invlist[] = { /* for EBCDIC 037 */
0x11A9D,
0x11A9E,
0x11AA3,
+ 0x11B00,
+ 0x11B0A,
0x11C41,
0x11C46,
0x11C70,
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F50,
0x11FFF,
0x12000,
0x12470,
0x12475,
+ 0x12FF1,
+ 0x12FF3,
0x16A6E,
0x16A70,
0x16AF5,
@@ -365836,7 +380099,7 @@ static const UV UNI_PRTI_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_PS_invlist[] = { /* for ASCII/Latin1 */
- 151, /* Number of elements */
+ 159, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -365933,6 +380196,14 @@ static const UV UNI_PS_invlist[] = { /* for ASCII/Latin1 */
0x2E29,
0x2E42,
0x2E43,
+ 0x2E55,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
0x3008,
0x3009,
0x300A,
@@ -366001,7 +380272,7 @@ static const UV UNI_PS_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_PS_invlist[] = { /* for EBCDIC 1047 */
- 151, /* Number of elements */
+ 159, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -366098,6 +380369,14 @@ static const UV UNI_PS_invlist[] = { /* for EBCDIC 1047 */
0x2E29,
0x2E42,
0x2E43,
+ 0x2E55,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
0x3008,
0x3009,
0x300A,
@@ -366166,7 +380445,7 @@ static const UV UNI_PS_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_PS_invlist[] = { /* for EBCDIC 037 */
- 151, /* Number of elements */
+ 159, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -366263,6 +380542,14 @@ static const UV UNI_PS_invlist[] = { /* for EBCDIC 037 */
0x2E29,
0x2E42,
0x2E43,
+ 0x2E55,
+ 0x2E56,
+ 0x2E57,
+ 0x2E58,
+ 0x2E59,
+ 0x2E5A,
+ 0x2E5B,
+ 0x2E5C,
0x3008,
0x3009,
0x300A,
@@ -366336,7 +380623,7 @@ static const UV UNI_PUA_invlist[] = { /* for all charsets */
};
static const UV UNI_QAAI_invlist[] = { /* for all charsets */
- 37, /* Number of elements */
+ 41, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -366350,7 +380637,7 @@ static const UV UNI_QAAI_invlist[] = { /* for all charsets */
0x953,
0x955,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1DC2,
0x1DF8,
0x1DF9,
@@ -366367,6 +380654,10 @@ static const UV UNI_QAAI_invlist[] = { /* for all charsets */
0xFE2E,
0x101FD,
0x101FE,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D17B,
@@ -366578,7 +380869,7 @@ static const UV UNI_RUNR_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_S_invlist[] = { /* for ASCII/Latin1 */
- 459, /* Number of elements */
+ 465, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -366649,6 +380940,8 @@ static const UV UNI_S_invlist[] = { /* for ASCII/Latin1 */
0x7F7,
0x7FE,
0x800,
+ 0x888,
+ 0x889,
0x9F2,
0x9F4,
0x9FA,
@@ -366726,7 +381019,7 @@ static const UV UNI_S_invlist[] = { /* for ASCII/Latin1 */
0x208A,
0x208D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x2100,
0x2102,
0x2103,
@@ -366850,9 +381143,13 @@ static const UV UNI_S_invlist[] = { /* for ASCII/Latin1 */
0xFB29,
0xFB2A,
0xFBB2,
- 0xFBC2,
+ 0xFBC3,
+ 0xFD40,
+ 0xFD50,
+ 0xFDCF,
+ 0xFDD0,
0xFDFC,
- 0xFDFE,
+ 0xFE00,
0xFE62,
0xFE63,
0xFE64,
@@ -366905,6 +381202,8 @@ static const UV UNI_S_invlist[] = { /* for ASCII/Latin1 */
0x16B46,
0x1BC9C,
0x1BC9D,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -366918,7 +381217,7 @@ static const UV UNI_S_invlist[] = { /* for ASCII/Latin1 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
@@ -366993,16 +381292,18 @@ static const UV UNI_S_invlist[] = { /* for ASCII/Latin1 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -367016,27 +381317,23 @@ static const UV UNI_S_invlist[] = { /* for ASCII/Latin1 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -367051,7 +381348,7 @@ static const UV UNI_S_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_S_invlist[] = { /* for EBCDIC 1047 */
- 465, /* Number of elements */
+ 471, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -367128,6 +381425,8 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 1047 */
0x7F7,
0x7FE,
0x800,
+ 0x888,
+ 0x889,
0x9F2,
0x9F4,
0x9FA,
@@ -367205,7 +381504,7 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 1047 */
0x208A,
0x208D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x2100,
0x2102,
0x2103,
@@ -367329,9 +381628,13 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 1047 */
0xFB29,
0xFB2A,
0xFBB2,
- 0xFBC2,
+ 0xFBC3,
+ 0xFD40,
+ 0xFD50,
+ 0xFDCF,
+ 0xFDD0,
0xFDFC,
- 0xFDFE,
+ 0xFE00,
0xFE62,
0xFE63,
0xFE64,
@@ -367384,6 +381687,8 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 1047 */
0x16B46,
0x1BC9C,
0x1BC9D,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -367397,7 +381702,7 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 1047 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
@@ -367472,16 +381777,18 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 1047 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -367495,27 +381802,23 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 1047 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -367530,7 +381833,7 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_S_invlist[] = { /* for EBCDIC 037 */
- 463, /* Number of elements */
+ 469, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -367605,6 +381908,8 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 037 */
0x7F7,
0x7FE,
0x800,
+ 0x888,
+ 0x889,
0x9F2,
0x9F4,
0x9FA,
@@ -367682,7 +381987,7 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 037 */
0x208A,
0x208D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x2100,
0x2102,
0x2103,
@@ -367806,9 +382111,13 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 037 */
0xFB29,
0xFB2A,
0xFBB2,
- 0xFBC2,
+ 0xFBC3,
+ 0xFD40,
+ 0xFD50,
+ 0xFDCF,
+ 0xFDD0,
0xFDFC,
- 0xFDFE,
+ 0xFE00,
0xFE62,
0xFE63,
0xFE64,
@@ -367861,6 +382170,8 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 037 */
0x16B46,
0x1BC9C,
0x1BC9D,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -367874,7 +382185,7 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 037 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
@@ -367949,16 +382260,18 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 037 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -367972,27 +382285,23 @@ static const UV UNI_S_invlist[] = { /* for EBCDIC 037 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -368104,7 +382413,7 @@ static const UV UNI_SB__AT_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_SB__CL_invlist[] = { /* for ASCII/Latin1 */
- 89, /* Number of elements */
+ 91, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -368165,6 +382474,8 @@ static const UV UNI_SB__CL_invlist[] = { /* for ASCII/Latin1 */
0x2E2A,
0x2E42,
0x2E43,
+ 0x2E55,
+ 0x2E5D,
0x3008,
0x3012,
0x3014,
@@ -368207,7 +382518,7 @@ static const UV UNI_SB__CL_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_SB__CL_invlist[] = { /* for EBCDIC 1047 */
- 91, /* Number of elements */
+ 93, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -368270,6 +382581,8 @@ static const UV UNI_SB__CL_invlist[] = { /* for EBCDIC 1047 */
0x2E2A,
0x2E42,
0x2E43,
+ 0x2E55,
+ 0x2E5D,
0x3008,
0x3012,
0x3014,
@@ -368312,7 +382625,7 @@ static const UV UNI_SB__CL_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_SB__CL_invlist[] = { /* for EBCDIC 037 */
- 89, /* Number of elements */
+ 91, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -368373,6 +382686,8 @@ static const UV UNI_SB__CL_invlist[] = { /* for EBCDIC 037 */
0x2E2A,
0x2E42,
0x2E43,
+ 0x2E55,
+ 0x2E5D,
0x3008,
0x3012,
0x3014,
@@ -368410,7 +382725,7 @@ static const UV UNI_SB__CL_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
- 587, /* Number of elements */
+ 627, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -368463,7 +382778,9 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -368547,6 +382864,8 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
0xBD8,
0xC00,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC45,
0xC46,
@@ -368571,6 +382890,8 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
0xCD7,
0xCE2,
0xCE4,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD3B,
@@ -368608,7 +382929,7 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -368650,7 +382971,7 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
0x135D,
0x1360,
0x1712,
- 0x1715,
+ 0x1716,
0x1732,
0x1735,
0x1752,
@@ -368663,6 +382984,8 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
0x17DE,
0x180B,
0x180E,
+ 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -368680,7 +383003,7 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
@@ -368706,8 +383029,6 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
0x1CF7,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200C,
0x200E,
@@ -368815,16 +383136,26 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11003,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11083,
0x110B0,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -368845,6 +383176,8 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112EB,
0x11300,
@@ -368939,6 +383272,18 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
0x11D98,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -368955,6 +383300,10 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
0x16FF2,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -368989,10 +383338,16 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -369006,7 +383361,7 @@ static const UV UNI_SB__EX_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_SB__FO_invlist[] = { /* for ASCII/Latin1 */
- 41, /* Number of elements */
+ 43, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -369021,6 +383376,8 @@ static const UV UNI_SB__FO_invlist[] = { /* for ASCII/Latin1 */
0x6DE,
0x70F,
0x710,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0x180E,
@@ -369044,7 +383401,7 @@ static const UV UNI_SB__FO_invlist[] = { /* for ASCII/Latin1 */
0x110CD,
0x110CE,
0x13430,
- 0x13439,
+ 0x13440,
0x1BCA0,
0x1BCA4,
0x1D173,
@@ -369061,7 +383418,7 @@ static const UV UNI_SB__FO_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_SB__FO_invlist[] = { /* for EBCDIC 1047 */
- 41, /* Number of elements */
+ 43, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -369076,6 +383433,8 @@ static const UV UNI_SB__FO_invlist[] = { /* for EBCDIC 1047 */
0x6DE,
0x70F,
0x710,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0x180E,
@@ -369099,7 +383458,7 @@ static const UV UNI_SB__FO_invlist[] = { /* for EBCDIC 1047 */
0x110CD,
0x110CE,
0x13430,
- 0x13439,
+ 0x13440,
0x1BCA0,
0x1BCA4,
0x1D173,
@@ -369116,7 +383475,7 @@ static const UV UNI_SB__FO_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_SB__FO_invlist[] = { /* for EBCDIC 037 */
- 41, /* Number of elements */
+ 43, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -369131,6 +383490,8 @@ static const UV UNI_SB__FO_invlist[] = { /* for EBCDIC 037 */
0x6DE,
0x70F,
0x710,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0x180E,
@@ -369154,7 +383515,7 @@ static const UV UNI_SB__FO_invlist[] = { /* for EBCDIC 037 */
0x110CD,
0x110CE,
0x13430,
- 0x13439,
+ 0x13440,
0x1BCA0,
0x1BCA4,
0x1D173,
@@ -369166,7 +383527,7 @@ static const UV UNI_SB__FO_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
- 1039, /* Number of elements */
+ 1087, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -369235,10 +383596,12 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -369367,6 +383730,8 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -369383,7 +383748,7 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -369471,7 +383836,7 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x108F,
0x10D0,
0x10FB,
- 0x10FC,
+ 0x10FD,
0x1249,
0x124A,
0x124E,
@@ -369516,10 +383881,8 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -369562,7 +383925,7 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -369644,8 +384007,6 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -369741,8 +384102,6 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0xAB27,
0xAB28,
0xAB2F,
- 0xAB69,
- 0xAB6A,
0xABC0,
0xABE3,
0xAC00,
@@ -369841,6 +384200,8 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x10756,
0x10760,
0x10768,
+ 0x10781,
+ 0x10783,
0x10800,
0x10806,
0x10808,
@@ -369907,12 +384268,18 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -369939,6 +384306,8 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -369995,6 +384364,8 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118FF,
@@ -370031,7 +384402,7 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -370059,6 +384430,12 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
@@ -370067,14 +384444,20 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -370101,10 +384484,20 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -370117,14 +384510,28 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x1BC89,
0x1BC90,
0x1BC9A,
+ 0x1DF0A,
+ 0x1DF0B,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E94B,
@@ -370196,9 +384603,9 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -370208,13 +384615,15 @@ static const UV UNI_SB__LE_invlist[] = { /* for all charsets */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_SB__LO_invlist[] = { /* for ASCII/Latin1 */
- 1299, /* Number of elements */
+ 1339, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -370767,6 +385176,8 @@ static const UV UNI_SB__LO_invlist[] = { /* for ASCII/Latin1 */
0x530,
0x560,
0x589,
+ 0x10FC,
+ 0x10FD,
0x13F8,
0x13FE,
0x1C80,
@@ -371092,7 +385503,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for ASCII/Latin1 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -371427,12 +385838,26 @@ static const UV UNI_SB__LO_invlist[] = { /* for ASCII/Latin1 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
+ 0xA7F2,
+ 0xA7F5,
0xA7F6,
0xA7F7,
0xA7F8,
@@ -371440,7 +385865,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for ASCII/Latin1 */
0xAB30,
0xAB5B,
0xAB5C,
- 0xAB69,
+ 0xAB6A,
0xAB70,
0xABC0,
0xFB00,
@@ -371453,6 +385878,22 @@ static const UV UNI_SB__LO_invlist[] = { /* for ASCII/Latin1 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
+ 0x10780,
+ 0x10781,
+ 0x10783,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10CC0,
0x10CF3,
0x118C0,
@@ -371515,6 +385956,14 @@ static const UV UNI_SB__LO_invlist[] = { /* for ASCII/Latin1 */
0x1D7CA,
0x1D7CB,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E922,
0x1E944
};
@@ -371527,7 +385976,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 1047 */
- 1307, /* Number of elements */
+ 1347, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -372088,6 +386537,8 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 1047 */
0x530,
0x560,
0x589,
+ 0x10FC,
+ 0x10FD,
0x13F8,
0x13FE,
0x1C80,
@@ -372413,7 +386864,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 1047 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -372748,12 +387199,26 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 1047 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
+ 0xA7F2,
+ 0xA7F5,
0xA7F6,
0xA7F7,
0xA7F8,
@@ -372761,7 +387226,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 1047 */
0xAB30,
0xAB5B,
0xAB5C,
- 0xAB69,
+ 0xAB6A,
0xAB70,
0xABC0,
0xFB00,
@@ -372774,6 +387239,22 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 1047 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
+ 0x10780,
+ 0x10781,
+ 0x10783,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10CC0,
0x10CF3,
0x118C0,
@@ -372836,6 +387317,14 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 1047 */
0x1D7CA,
0x1D7CB,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E922,
0x1E944
};
@@ -372848,7 +387337,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 037 */
- 1307, /* Number of elements */
+ 1347, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -373409,6 +387898,8 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 037 */
0x530,
0x560,
0x589,
+ 0x10FC,
+ 0x10FD,
0x13F8,
0x13FE,
0x1C80,
@@ -373734,7 +388225,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 037 */
0x24D0,
0x24EA,
0x2C30,
- 0x2C5F,
+ 0x2C60,
0x2C61,
0x2C62,
0x2C65,
@@ -374069,12 +388560,26 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 037 */
0xA7BE,
0xA7BF,
0xA7C0,
+ 0xA7C1,
+ 0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
0xA7CB,
+ 0xA7D1,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
+ 0xA7DA,
+ 0xA7F2,
+ 0xA7F5,
0xA7F6,
0xA7F7,
0xA7F8,
@@ -374082,7 +388587,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 037 */
0xAB30,
0xAB5B,
0xAB5C,
- 0xAB69,
+ 0xAB6A,
0xAB70,
0xABC0,
0xFB00,
@@ -374095,6 +388600,22 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 037 */
0x10450,
0x104D8,
0x104FC,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
+ 0x10780,
+ 0x10781,
+ 0x10783,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10CC0,
0x10CF3,
0x118C0,
@@ -374157,6 +388678,14 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 037 */
0x1D7CA,
0x1D7CB,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF0A,
+ 0x1DF0B,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E922,
0x1E944
};
@@ -374166,7 +388695,7 @@ static const UV UNI_SB__LO_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_SB__NU_invlist[] = { /* for ASCII/Latin1 */
- 125, /* Number of elements */
+ 131, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -374281,8 +388810,12 @@ static const UV UNI_SB__NU_invlist[] = { /* for ASCII/Latin1 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x1D7CE,
@@ -374291,6 +388824,8 @@ static const UV UNI_SB__NU_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E950,
0x1E95A,
0x1FBF0,
@@ -374305,7 +388840,7 @@ static const UV UNI_SB__NU_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_SB__NU_invlist[] = { /* for EBCDIC 1047 */
- 125, /* Number of elements */
+ 131, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -374420,8 +388955,12 @@ static const UV UNI_SB__NU_invlist[] = { /* for EBCDIC 1047 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x1D7CE,
@@ -374430,6 +388969,8 @@ static const UV UNI_SB__NU_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E950,
0x1E95A,
0x1FBF0,
@@ -374444,7 +388985,7 @@ static const UV UNI_SB__NU_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_SB__NU_invlist[] = { /* for EBCDIC 037 */
- 125, /* Number of elements */
+ 131, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -374559,8 +389100,12 @@ static const UV UNI_SB__NU_invlist[] = { /* for EBCDIC 037 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x1D7CE,
@@ -374569,6 +389114,8 @@ static const UV UNI_SB__NU_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E950,
0x1E95A,
0x1FBF0,
@@ -374886,7 +389433,7 @@ static const UV UNI_SB__SP_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_SB__ST_invlist[] = { /* for ASCII/Latin1 */
- 147, /* Number of elements */
+ 155, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -374897,7 +389444,7 @@ static const UV UNI_SB__ST_invlist[] = { /* for ASCII/Latin1 */
0x40,
0x589,
0x58A,
- 0x61E,
+ 0x61D,
0x620,
0x6D4,
0x6D5,
@@ -374935,6 +389482,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for ASCII/Latin1 */
0x1B5C,
0x1B5E,
0x1B60,
+ 0x1B7D,
+ 0x1B7F,
0x1C3B,
0x1C3D,
0x1C7E,
@@ -374947,6 +389496,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for ASCII/Latin1 */
0x2E2F,
0x2E3C,
0x2E3D,
+ 0x2E53,
+ 0x2E55,
0x3002,
0x3003,
0xA4FF,
@@ -374983,6 +389534,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for ASCII/Latin1 */
0x10A58,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x11049,
0x110BE,
@@ -375023,6 +389576,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for ASCII/Latin1 */
0x11C43,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F45,
0x16A6E,
0x16A70,
0x16AF5,
@@ -375047,7 +389602,7 @@ static const UV UNI_SB__ST_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 1047 */
- 147, /* Number of elements */
+ 155, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -375058,7 +389613,7 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 1047 */
0x70,
0x589,
0x58A,
- 0x61E,
+ 0x61D,
0x620,
0x6D4,
0x6D5,
@@ -375096,6 +389651,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 1047 */
0x1B5C,
0x1B5E,
0x1B60,
+ 0x1B7D,
+ 0x1B7F,
0x1C3B,
0x1C3D,
0x1C7E,
@@ -375108,6 +389665,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 1047 */
0x2E2F,
0x2E3C,
0x2E3D,
+ 0x2E53,
+ 0x2E55,
0x3002,
0x3003,
0xA4FF,
@@ -375144,6 +389703,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 1047 */
0x10A58,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x11049,
0x110BE,
@@ -375184,6 +389745,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 1047 */
0x11C43,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F45,
0x16A6E,
0x16A70,
0x16AF5,
@@ -375208,7 +389771,7 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 037 */
- 147, /* Number of elements */
+ 155, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -375219,7 +389782,7 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 037 */
0x70,
0x589,
0x58A,
- 0x61E,
+ 0x61D,
0x620,
0x6D4,
0x6D5,
@@ -375257,6 +389820,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 037 */
0x1B5C,
0x1B5E,
0x1B60,
+ 0x1B7D,
+ 0x1B7F,
0x1C3B,
0x1C3D,
0x1C7E,
@@ -375269,6 +389834,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 037 */
0x2E2F,
0x2E3C,
0x2E3D,
+ 0x2E53,
+ 0x2E55,
0x3002,
0x3003,
0xA4FF,
@@ -375305,6 +389872,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 037 */
0x10A58,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x11049,
0x110BE,
@@ -375345,6 +389914,8 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 037 */
0x11C43,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F45,
0x16A6E,
0x16A70,
0x16AF5,
@@ -375366,7 +389937,7 @@ static const UV UNI_SB__ST_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_SB__UP_invlist[] = { /* for ASCII/Latin1 */
- 1289, /* Number of elements */
+ 1305, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -376240,7 +390811,7 @@ static const UV UNI_SB__UP_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -376569,12 +391140,20 @@ static const UV UNI_SB__UP_invlist[] = { /* for ASCII/Latin1 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -376583,6 +391162,14 @@ static const UV UNI_SB__UP_invlist[] = { /* for ASCII/Latin1 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -376669,7 +391256,7 @@ static const UV UNI_SB__UP_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_SB__UP_invlist[] = { /* for EBCDIC 1047 */
- 1307, /* Number of elements */
+ 1323, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -377561,7 +392148,7 @@ static const UV UNI_SB__UP_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -377890,12 +392477,20 @@ static const UV UNI_SB__UP_invlist[] = { /* for EBCDIC 1047 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -377904,6 +392499,14 @@ static const UV UNI_SB__UP_invlist[] = { /* for EBCDIC 1047 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -377990,7 +392593,7 @@ static const UV UNI_SB__UP_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_SB__UP_invlist[] = { /* for EBCDIC 037 */
- 1303, /* Number of elements */
+ 1319, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -378878,7 +393481,7 @@ static const UV UNI_SB__UP_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24D0,
0x2C00,
- 0x2C2F,
+ 0x2C30,
0x2C60,
0x2C61,
0x2C62,
@@ -379207,12 +393810,20 @@ static const UV UNI_SB__UP_invlist[] = { /* for EBCDIC 037 */
0xA7BD,
0xA7BE,
0xA7BF,
+ 0xA7C0,
+ 0xA7C1,
0xA7C2,
0xA7C3,
0xA7C4,
0xA7C8,
0xA7C9,
0xA7CA,
+ 0xA7D0,
+ 0xA7D1,
+ 0xA7D6,
+ 0xA7D7,
+ 0xA7D8,
+ 0xA7D9,
0xA7F5,
0xA7F6,
0xFF21,
@@ -379221,6 +393832,14 @@ static const UV UNI_SB__UP_invlist[] = { /* for EBCDIC 037 */
0x10428,
0x104B0,
0x104D4,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
0x10C80,
0x10CB3,
0x118A0,
@@ -379304,7 +393923,7 @@ static const UV UNI_SB__UP_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
- 1611, /* Number of elements */
+ 1681, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -379406,8 +394025,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x610,
0x61B,
0x61C,
- 0x61D,
- 0x61E,
0x66A,
0x66B,
0x66D,
@@ -379441,11 +394058,13 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x970,
0x971,
0x984,
@@ -379609,7 +394228,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -379619,6 +394238,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -379643,14 +394264,14 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -379716,7 +394337,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -379808,10 +394429,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -379834,8 +394453,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1808,
0x180A,
0x180B,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -379872,15 +394489,17 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1AA7,
0x1AAC,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5C,
0x1B5E,
0x1B60,
0x1B6B,
0x1B74,
+ 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1C00,
@@ -379900,8 +394519,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -380018,10 +394635,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x29FC,
0x29FE,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -380065,6 +394678,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x2E3D,
0x2E42,
0x2E43,
+ 0x2E53,
+ 0x2E5D,
0x3000,
0x3003,
0x3005,
@@ -380100,8 +394715,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -380124,10 +394737,14 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -380333,12 +394950,34 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -380415,7 +395054,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
@@ -380423,6 +395062,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x10F51,
0x10F55,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -380430,11 +395071,11 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x11000,
0x11049,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
0x110BD,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -380466,7 +395107,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1123B,
0x1123D,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -380549,6 +395190,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1173A,
0x1173C,
0x1173F,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -380589,7 +395232,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x11A9A,
0x11A9B,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -380633,6 +395276,14 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F45,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -380641,10 +395292,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -380654,7 +395305,9 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -380691,10 +395344,20 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -380709,6 +395372,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1BC9A,
0x1BC9D,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -380795,6 +395462,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -380805,6 +395476,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -380813,8 +395488,20 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -380900,9 +395587,9 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -380913,6 +395600,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -380929,7 +395618,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
- 1631, /* Number of elements */
+ 1701, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -381051,8 +395740,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x610,
0x61B,
0x61C,
- 0x61D,
- 0x61E,
0x66A,
0x66B,
0x66D,
@@ -381086,11 +395773,13 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x970,
0x971,
0x984,
@@ -381254,7 +395943,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -381264,6 +395953,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -381288,14 +395979,14 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -381361,7 +396052,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -381453,10 +396144,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -381479,8 +396168,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1808,
0x180A,
0x180B,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -381517,15 +396204,17 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1AA7,
0x1AAC,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5C,
0x1B5E,
0x1B60,
0x1B6B,
0x1B74,
+ 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1C00,
@@ -381545,8 +396234,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -381663,10 +396350,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x29FC,
0x29FE,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -381710,6 +396393,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x2E3D,
0x2E42,
0x2E43,
+ 0x2E53,
+ 0x2E5D,
0x3000,
0x3003,
0x3005,
@@ -381745,8 +396430,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -381769,10 +396452,14 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -381978,12 +396665,34 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -382060,7 +396769,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
@@ -382068,6 +396777,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x10F51,
0x10F55,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -382075,11 +396786,11 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x11000,
0x11049,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
0x110BD,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -382111,7 +396822,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1123B,
0x1123D,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -382194,6 +396905,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1173A,
0x1173C,
0x1173F,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -382234,7 +396947,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x11A9A,
0x11A9B,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -382278,6 +396991,14 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F45,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -382286,10 +397007,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -382299,7 +397020,9 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -382336,10 +397059,20 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -382354,6 +397087,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1BC9A,
0x1BC9D,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -382440,6 +397177,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -382450,6 +397191,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -382458,8 +397203,20 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -382545,9 +397302,9 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -382558,6 +397315,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -382574,7 +397333,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
- 1629, /* Number of elements */
+ 1699, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -382694,8 +397453,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x610,
0x61B,
0x61C,
- 0x61D,
- 0x61E,
0x66A,
0x66B,
0x66D,
@@ -382729,11 +397486,13 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x970,
0x971,
0x984,
@@ -382897,7 +397656,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -382907,6 +397666,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -382931,14 +397692,14 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -383004,7 +397765,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -383096,10 +397857,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -383122,8 +397881,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x1808,
0x180A,
0x180B,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -383160,15 +397917,17 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x1AA7,
0x1AAC,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5C,
0x1B5E,
0x1B60,
0x1B6B,
0x1B74,
+ 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1C00,
@@ -383188,8 +397947,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -383306,10 +398063,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x29FC,
0x29FE,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -383353,6 +398106,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x2E3D,
0x2E42,
0x2E43,
+ 0x2E53,
+ 0x2E5D,
0x3000,
0x3003,
0x3005,
@@ -383388,8 +398143,6 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -383412,10 +398165,14 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -383621,12 +398378,34 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -383703,7 +398482,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
@@ -383711,6 +398490,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x10F51,
0x10F55,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -383718,11 +398499,11 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x11000,
0x11049,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
0x110BD,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -383754,7 +398535,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x1123B,
0x1123D,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -383837,6 +398618,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x1173A,
0x1173C,
0x1173F,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -383877,7 +398660,7 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x11A9A,
0x11A9B,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -383921,6 +398704,14 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F45,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -383929,10 +398720,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -383942,7 +398733,9 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -383979,10 +398772,20 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -383997,6 +398800,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x1BC9A,
0x1BC9D,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -384083,6 +398890,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -384093,6 +398904,10 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -384101,8 +398916,20 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -384188,9 +399015,9 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -384201,6 +399028,8 @@ static const UV UNI_SB__XX_invlist[] = { /* for EBCDIC 037 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -384242,7 +399071,7 @@ static const UV UNI_SC_invlist[] = { /* for ASCII/Latin1 */
0x17DB,
0x17DC,
0x20A0,
- 0x20C0,
+ 0x20C1,
0xA838,
0xA839,
0xFDFC,
@@ -384303,7 +399132,7 @@ static const UV UNI_SC_invlist[] = { /* for EBCDIC 1047 */
0x17DB,
0x17DC,
0x20A0,
- 0x20C0,
+ 0x20C1,
0xA838,
0xA839,
0xFDFC,
@@ -384364,7 +399193,7 @@ static const UV UNI_SC_invlist[] = { /* for EBCDIC 037 */
0x17DB,
0x17DC,
0x20A0,
- 0x20C0,
+ 0x20C1,
0xA838,
0xA839,
0xFDFC,
@@ -384402,7 +399231,7 @@ static const UV UNI_SC__ADLM_invlist[] = { /* for all charsets */
};
static const UV UNI_SC__ARAB_invlist[] = { /* for all charsets */
- 115, /* Number of elements */
+ 117, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -384414,8 +399243,6 @@ static const UV UNI_SC__ARAB_invlist[] = { /* for all charsets */
0x60D,
0x61B,
0x61C,
- 0x61D,
- 0x61E,
0x61F,
0x620,
0x640,
@@ -384429,30 +399256,34 @@ static const UV UNI_SC__ARAB_invlist[] = { /* for all charsets */
0x700,
0x750,
0x780,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x8E2,
0x8E3,
0x900,
0xFB50,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
0xFD3E,
- 0xFD50,
+ 0xFD40,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
+ 0xFE00,
0xFE70,
0xFE75,
0xFE76,
0xFEFD,
0x10E60,
0x10E7F,
+ 0x10EFD,
+ 0x10F00,
0x1EE00,
0x1EE04,
0x1EE05,
@@ -384621,6 +399452,16 @@ static const UV UNI_SC__COPT_invlist[] = { /* for all charsets */
0x2D00
};
+static const UV UNI_SC__CPMN_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x12F90,
+ 0x12FF3
+};
+
static const UV UNI_SC__CPRT_invlist[] = { /* for all charsets */
13, /* Number of elements */
148565664, /* Version and data structure type */
@@ -384642,7 +399483,7 @@ static const UV UNI_SC__CPRT_invlist[] = { /* for all charsets */
};
static const UV UNI_SC__CYRL_invlist[] = { /* for all charsets */
- 17, /* Number of elements */
+ 21, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -384662,11 +399503,15 @@ static const UV UNI_SC__CYRL_invlist[] = { /* for all charsets */
0xA640,
0xA6A0,
0xFE2E,
- 0xFE30
+ 0xFE30,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090
};
static const UV UNI_SC__DEVA_invlist[] = { /* for all charsets */
- 9, /* Number of elements */
+ 11, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -384678,7 +399523,9 @@ static const UV UNI_SC__DEVA_invlist[] = { /* for all charsets */
0x966,
0x980,
0xA8E0,
- 0xA900
+ 0xA900,
+ 0x11B00,
+ 0x11B0A
};
static const UV UNI_SC__DOGR_invlist[] = { /* for all charsets */
@@ -384738,15 +399585,13 @@ static const UV UNI_SC__GEOR_invlist[] = { /* for all charsets */
};
static const UV UNI_SC__GLAG_invlist[] = { /* for all charsets */
- 15, /* Number of elements */
+ 13, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
0x0,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
+ 0x2C60,
0x1E000,
0x1E007,
0x1E008,
@@ -384996,7 +399841,7 @@ static const UV UNI_SC__GURU_invlist[] = { /* for all charsets */
};
static const UV UNI_SC__HAN_invlist[] = { /* for all charsets */
- 39, /* Number of elements */
+ 43, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -385018,17 +399863,19 @@ static const UV UNI_SC__HAN_invlist[] = { /* for all charsets */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
+ 0xA000,
0xF900,
0xFA6E,
0xFA70,
0xFADA,
+ 0x16FE2,
+ 0x16FE4,
0x16FF0,
0x16FF2,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -385038,7 +399885,9 @@ static const UV UNI_SC__HAN_invlist[] = { /* for all charsets */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
static const UV UNI_SC__HANG_invlist[] = { /* for all charsets */
@@ -385088,7 +399937,7 @@ static const UV UNI_SC__HANO_invlist[] = { /* for all charsets */
};
static const UV UNI_SC__HIRA_invlist[] = { /* for all charsets */
- 11, /* Number of elements */
+ 13, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -385098,7 +399947,9 @@ static const UV UNI_SC__HIRA_invlist[] = { /* for all charsets */
0x309D,
0x30A0,
0x1B001,
- 0x1B11F,
+ 0x1B120,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
0x1F200,
@@ -385132,7 +399983,7 @@ static const UV UNI_SC__KALI_invlist[] = { /* for all charsets */
};
static const UV UNI_SC__KANA_invlist[] = { /* for all charsets */
- 19, /* Number of elements */
+ 29, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -385151,8 +400002,18 @@ static const UV UNI_SC__KANA_invlist[] = { /* for all charsets */
0xFF70,
0xFF71,
0xFF9E,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
0x1B001,
+ 0x1B120,
+ 0x1B123,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168
};
@@ -385166,7 +400027,7 @@ static const UV UNI_SC__KHOJ_invlist[] = { /* for all charsets */
0x11200,
0x11212,
0x11213,
- 0x1123F
+ 0x11242
};
static const UV UNI_SC__KNDA_invlist[] = { /* for all charsets */
@@ -385193,14 +400054,14 @@ static const UV UNI_SC__KNDA_invlist[] = { /* for all charsets */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3
+ 0xCF4
};
static const UV UNI_SC__KTHI_invlist[] = { /* for all charsets */
@@ -385210,7 +400071,7 @@ static const UV UNI_SC__KTHI_invlist[] = { /* for all charsets */
1 if it starts at the element beyond 0 */
0x0,
0x11080,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE
};
@@ -385218,7 +400079,7 @@ static const UV UNI_SC__KTHI_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_SC__LATN_invlist[] = { /* for ASCII/Latin1 */
- 65, /* Number of elements */
+ 79, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -385270,10 +400131,14 @@ static const UV UNI_SC__LATN_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA788,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA800,
0xAB30,
0xAB5B,
@@ -385286,7 +400151,17 @@ static const UV UNI_SC__LATN_invlist[] = { /* for ASCII/Latin1 */
0xFF21,
0xFF3B,
0xFF41,
- 0xFF5B
+ 0xFF5B,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B
};
# endif /* ASCII/Latin1 */
@@ -385297,7 +400172,7 @@ static const UV UNI_SC__LATN_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_SC__LATN_invlist[] = { /* for EBCDIC 1047 */
- 91, /* Number of elements */
+ 105, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -385375,10 +400250,14 @@ static const UV UNI_SC__LATN_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA788,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA800,
0xAB30,
0xAB5B,
@@ -385391,7 +400270,17 @@ static const UV UNI_SC__LATN_invlist[] = { /* for EBCDIC 1047 */
0xFF21,
0xFF3B,
0xFF41,
- 0xFF5B
+ 0xFF5B,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B
};
# endif /* EBCDIC 1047 */
@@ -385402,7 +400291,7 @@ static const UV UNI_SC__LATN_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_SC__LATN_invlist[] = { /* for EBCDIC 037 */
- 87, /* Number of elements */
+ 101, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -385476,10 +400365,14 @@ static const UV UNI_SC__LATN_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA788,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA800,
0xAB30,
0xAB5B,
@@ -385492,7 +400385,17 @@ static const UV UNI_SC__LATN_invlist[] = { /* for EBCDIC 037 */
0xFF21,
0xFF3B,
0xFF41,
- 0xFF5B
+ 0xFF5B,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B
};
# endif /* EBCDIC 037 */
@@ -385620,7 +400523,7 @@ static const UV UNI_SC__MODI_invlist[] = { /* for all charsets */
};
static const UV UNI_SC__MONG_invlist[] = { /* for all charsets */
- 15, /* Number of elements */
+ 13, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -385630,8 +400533,6 @@ static const UV UNI_SC__MONG_invlist[] = { /* for all charsets */
0x1804,
0x1805,
0x1806,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -385687,6 +400588,18 @@ static const UV UNI_SC__NAND_invlist[] = { /* for all charsets */
0x119E5
};
+static const UV UNI_SC__NKO_invlist[] = { /* for all charsets */
+ 5, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x7C0,
+ 0x7FB,
+ 0x7FD,
+ 0x800
+};
+
static const UV UNI_SC__ORYA_invlist[] = { /* for all charsets */
29, /* Number of elements */
148565664, /* Version and data structure type */
@@ -385723,6 +400636,16 @@ static const UV UNI_SC__ORYA_invlist[] = { /* for all charsets */
0xB78
};
+static const UV UNI_SC__OUGR_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x10F70,
+ 0x10F8A
+};
+
static const UV UNI_SC__PERM_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -385758,7 +400681,7 @@ static const UV UNI_SC__PHLP_invlist[] = { /* for all charsets */
};
static const UV UNI_SC__QAAI_invlist[] = { /* for all charsets */
- 57, /* Number of elements */
+ 59, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -385774,7 +400697,7 @@ static const UV UNI_SC__QAAI_invlist[] = { /* for all charsets */
0x951,
0x955,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1CD0,
0x1CD3,
0x1CD4,
@@ -385788,8 +400711,6 @@ static const UV UNI_SC__QAAI_invlist[] = { /* for all charsets */
0x1CF8,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200C,
0x200E,
@@ -385809,6 +400730,10 @@ static const UV UNI_SC__QAAI_invlist[] = { /* for all charsets */
0x102E1,
0x1133B,
0x1133C,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D167,
0x1D16A,
0x1D17B,
@@ -385946,7 +400871,7 @@ static const UV UNI_SC__TAKR_invlist[] = { /* for all charsets */
1 if it starts at the element beyond 0 */
0x0,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA
};
@@ -386008,7 +400933,7 @@ static const UV UNI_SC__TAML_invlist[] = { /* for all charsets */
};
static const UV UNI_SC__TELU_invlist[] = { /* for all charsets */
- 25, /* Number of elements */
+ 27, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -386021,7 +400946,7 @@ static const UV UNI_SC__TELU_invlist[] = { /* for all charsets */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -386031,6 +400956,8 @@ static const UV UNI_SC__TELU_invlist[] = { /* for all charsets */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -386046,9 +400973,9 @@ static const UV UNI_SC__TGLG_invlist[] = { /* for all charsets */
1 if it starts at the element beyond 0 */
0x0,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715
+ 0x1716,
+ 0x171F,
+ 0x1720
};
static const UV UNI_SC__THAA_invlist[] = { /* for all charsets */
@@ -386187,7 +401114,7 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for ASCII/Latin1 */
0x2080,
0x208F,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x2100,
0x2126,
0x2127,
@@ -386213,7 +401140,7 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for ASCII/Latin1 */
0x2B97,
0x2C00,
0x2E00,
- 0x2E53,
+ 0x2E5E,
0x2FF0,
0x2FFC,
0x3000,
@@ -386300,10 +401227,10 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for ASCII/Latin1 */
0x101FD,
0x102E1,
0x102FC,
- 0x16FE2,
- 0x16FE4,
0x1BCA0,
0x1BCA4,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -386317,7 +401244,9 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for ASCII/Latin1 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -386398,16 +401327,18 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for ASCII/Latin1 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -386421,27 +401352,23 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for ASCII/Latin1 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -386573,7 +401500,7 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 1047 */
0x2080,
0x208F,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x2100,
0x2126,
0x2127,
@@ -386599,7 +401526,7 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 1047 */
0x2B97,
0x2C00,
0x2E00,
- 0x2E53,
+ 0x2E5E,
0x2FF0,
0x2FFC,
0x3000,
@@ -386686,10 +401613,10 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 1047 */
0x101FD,
0x102E1,
0x102FC,
- 0x16FE2,
- 0x16FE4,
0x1BCA0,
0x1BCA4,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -386703,7 +401630,9 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 1047 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -386784,16 +401713,18 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 1047 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -386807,27 +401738,23 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 1047 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -386955,7 +401882,7 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 037 */
0x2080,
0x208F,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x2100,
0x2126,
0x2127,
@@ -386981,7 +401908,7 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 037 */
0x2B97,
0x2C00,
0x2E00,
- 0x2E53,
+ 0x2E5E,
0x2FF0,
0x2FFC,
0x3000,
@@ -387068,10 +401995,10 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 037 */
0x101FD,
0x102E1,
0x102FC,
- 0x16FE2,
- 0x16FE4,
0x1BCA0,
0x1BCA4,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -387085,7 +402012,9 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 037 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -387166,16 +402095,18 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 037 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -387189,27 +402120,23 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 037 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -387227,7 +402154,7 @@ static const UV UNI_SC__ZYYY_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_SD_invlist[] = { /* for ASCII/Latin1 */
- 63, /* Number of elements */
+ 69, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -387293,7 +402220,13 @@ static const UV UNI_SD_invlist[] = { /* for ASCII/Latin1 */
0x1D65E,
0x1D660,
0x1D692,
- 0x1D694
+ 0x1D694,
+ 0x1DF1A,
+ 0x1DF1B,
+ 0x1E04C,
+ 0x1E04E,
+ 0x1E068,
+ 0x1E069
};
# endif /* ASCII/Latin1 */
@@ -387304,7 +402237,7 @@ static const UV UNI_SD_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_SD_invlist[] = { /* for EBCDIC 1047 */
- 65, /* Number of elements */
+ 71, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -387372,7 +402305,13 @@ static const UV UNI_SD_invlist[] = { /* for EBCDIC 1047 */
0x1D65E,
0x1D660,
0x1D692,
- 0x1D694
+ 0x1D694,
+ 0x1DF1A,
+ 0x1DF1B,
+ 0x1E04C,
+ 0x1E04E,
+ 0x1E068,
+ 0x1E069
};
# endif /* EBCDIC 1047 */
@@ -387383,7 +402322,7 @@ static const UV UNI_SD_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_SD_invlist[] = { /* for EBCDIC 037 */
- 65, /* Number of elements */
+ 71, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -387451,7 +402390,13 @@ static const UV UNI_SD_invlist[] = { /* for EBCDIC 037 */
0x1D65E,
0x1D660,
0x1D692,
- 0x1D694
+ 0x1D694,
+ 0x1DF1A,
+ 0x1DF1B,
+ 0x1E04C,
+ 0x1E04E,
+ 0x1E068,
+ 0x1E069
};
# endif /* EBCDIC 037 */
@@ -387587,7 +402532,7 @@ static const UV UNI_SINHALAARCHAICNUMBERS_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_SK_invlist[] = { /* for ASCII/Latin1 */
- 61, /* Number of elements */
+ 63, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -387618,6 +402563,8 @@ static const UV UNI_SK_invlist[] = { /* for ASCII/Latin1 */
0x376,
0x384,
0x386,
+ 0x888,
+ 0x889,
0x1FBD,
0x1FBE,
0x1FBF,
@@ -387643,7 +402590,7 @@ static const UV UNI_SK_invlist[] = { /* for ASCII/Latin1 */
0xAB6A,
0xAB6C,
0xFBB2,
- 0xFBC2,
+ 0xFBC3,
0xFF3E,
0xFF3F,
0xFF40,
@@ -387662,7 +402609,7 @@ static const UV UNI_SK_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_SK_invlist[] = { /* for EBCDIC 1047 */
- 59, /* Number of elements */
+ 61, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -387691,6 +402638,8 @@ static const UV UNI_SK_invlist[] = { /* for EBCDIC 1047 */
0x376,
0x384,
0x386,
+ 0x888,
+ 0x889,
0x1FBD,
0x1FBE,
0x1FBF,
@@ -387716,7 +402665,7 @@ static const UV UNI_SK_invlist[] = { /* for EBCDIC 1047 */
0xAB6A,
0xAB6C,
0xFBB2,
- 0xFBC2,
+ 0xFBC3,
0xFF3E,
0xFF3F,
0xFF40,
@@ -387735,7 +402684,7 @@ static const UV UNI_SK_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_SK_invlist[] = { /* for EBCDIC 037 */
- 57, /* Number of elements */
+ 59, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -387762,6 +402711,8 @@ static const UV UNI_SK_invlist[] = { /* for EBCDIC 037 */
0x376,
0x384,
0x386,
+ 0x888,
+ 0x889,
0x1FBD,
0x1FBE,
0x1FBF,
@@ -387787,7 +402738,7 @@ static const UV UNI_SK_invlist[] = { /* for EBCDIC 037 */
0xAB6A,
0xAB6C,
0xFBB2,
- 0xFBC2,
+ 0xFBC3,
0xFF3E,
0xFF3F,
0xFF40,
@@ -388253,7 +403204,7 @@ static const UV UNI_SMALLKANAEXT_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_SO_invlist[] = { /* for ASCII/Latin1 */
- 365, /* Number of elements */
+ 369, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -388472,8 +403423,12 @@ static const UV UNI_SO_invlist[] = { /* for ASCII/Latin1 */
0xA83A,
0xAA77,
0xAA7A,
+ 0xFD40,
+ 0xFD50,
+ 0xFDCF,
+ 0xFDD0,
0xFDFD,
- 0xFDFE,
+ 0xFE00,
0xFFE4,
0xFFE5,
0xFFE8,
@@ -388510,6 +403465,8 @@ static const UV UNI_SO_invlist[] = { /* for ASCII/Latin1 */
0x16B46,
0x1BC9C,
0x1BC9D,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -388523,7 +403480,7 @@ static const UV UNI_SO_invlist[] = { /* for ASCII/Latin1 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
@@ -388574,16 +403531,18 @@ static const UV UNI_SO_invlist[] = { /* for ASCII/Latin1 */
0x1F3FB,
0x1F400,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -388597,27 +403556,23 @@ static const UV UNI_SO_invlist[] = { /* for ASCII/Latin1 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -388632,7 +403587,7 @@ static const UV UNI_SO_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_SO_invlist[] = { /* for EBCDIC 1047 */
- 365, /* Number of elements */
+ 369, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -388851,8 +403806,12 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 1047 */
0xA83A,
0xAA77,
0xAA7A,
+ 0xFD40,
+ 0xFD50,
+ 0xFDCF,
+ 0xFDD0,
0xFDFD,
- 0xFDFE,
+ 0xFE00,
0xFFE4,
0xFFE5,
0xFFE8,
@@ -388889,6 +403848,8 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 1047 */
0x16B46,
0x1BC9C,
0x1BC9D,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -388902,7 +403863,7 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 1047 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
@@ -388953,16 +403914,18 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 1047 */
0x1F3FB,
0x1F400,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -388976,27 +403939,23 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 1047 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -389011,7 +403970,7 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_SO_invlist[] = { /* for EBCDIC 037 */
- 365, /* Number of elements */
+ 369, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -389230,8 +404189,12 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 037 */
0xA83A,
0xAA77,
0xAA7A,
+ 0xFD40,
+ 0xFD50,
+ 0xFDCF,
+ 0xFDD0,
0xFDFD,
- 0xFDFE,
+ 0xFE00,
0xFFE4,
0xFFE5,
0xFFE8,
@@ -389268,6 +404231,8 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 037 */
0x16B46,
0x1BC9C,
0x1BC9D,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -389281,7 +404246,7 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 037 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D242,
0x1D245,
@@ -389332,16 +404297,18 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 037 */
0x1F3FB,
0x1F400,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -389355,27 +404322,23 @@ static const UV UNI_SO_invlist[] = { /* for EBCDIC 037 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -389441,7 +404404,7 @@ static const UV UNI_SPECIALS_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_STERM_invlist[] = { /* for ASCII/Latin1 */
- 153, /* Number of elements */
+ 161, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -389454,7 +404417,7 @@ static const UV UNI_STERM_invlist[] = { /* for ASCII/Latin1 */
0x40,
0x589,
0x58A,
- 0x61E,
+ 0x61D,
0x620,
0x6D4,
0x6D5,
@@ -389492,6 +404455,8 @@ static const UV UNI_STERM_invlist[] = { /* for ASCII/Latin1 */
0x1B5C,
0x1B5E,
0x1B60,
+ 0x1B7D,
+ 0x1B7F,
0x1C3B,
0x1C3D,
0x1C7E,
@@ -389504,6 +404469,8 @@ static const UV UNI_STERM_invlist[] = { /* for ASCII/Latin1 */
0x2E2F,
0x2E3C,
0x2E3D,
+ 0x2E53,
+ 0x2E55,
0x3002,
0x3003,
0xA4FF,
@@ -389544,6 +404511,8 @@ static const UV UNI_STERM_invlist[] = { /* for ASCII/Latin1 */
0x10A58,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x11049,
0x110BE,
@@ -389584,6 +404553,8 @@ static const UV UNI_STERM_invlist[] = { /* for ASCII/Latin1 */
0x11C43,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F45,
0x16A6E,
0x16A70,
0x16AF5,
@@ -389608,7 +404579,7 @@ static const UV UNI_STERM_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_STERM_invlist[] = { /* for EBCDIC 1047 */
- 153, /* Number of elements */
+ 161, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -389621,7 +404592,7 @@ static const UV UNI_STERM_invlist[] = { /* for EBCDIC 1047 */
0x70,
0x589,
0x58A,
- 0x61E,
+ 0x61D,
0x620,
0x6D4,
0x6D5,
@@ -389659,6 +404630,8 @@ static const UV UNI_STERM_invlist[] = { /* for EBCDIC 1047 */
0x1B5C,
0x1B5E,
0x1B60,
+ 0x1B7D,
+ 0x1B7F,
0x1C3B,
0x1C3D,
0x1C7E,
@@ -389671,6 +404644,8 @@ static const UV UNI_STERM_invlist[] = { /* for EBCDIC 1047 */
0x2E2F,
0x2E3C,
0x2E3D,
+ 0x2E53,
+ 0x2E55,
0x3002,
0x3003,
0xA4FF,
@@ -389711,6 +404686,8 @@ static const UV UNI_STERM_invlist[] = { /* for EBCDIC 1047 */
0x10A58,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x11049,
0x110BE,
@@ -389751,6 +404728,8 @@ static const UV UNI_STERM_invlist[] = { /* for EBCDIC 1047 */
0x11C43,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F45,
0x16A6E,
0x16A70,
0x16AF5,
@@ -389775,7 +404754,7 @@ static const UV UNI_STERM_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_STERM_invlist[] = { /* for EBCDIC 037 */
- 153, /* Number of elements */
+ 161, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -389788,7 +404767,7 @@ static const UV UNI_STERM_invlist[] = { /* for EBCDIC 037 */
0x70,
0x589,
0x58A,
- 0x61E,
+ 0x61D,
0x620,
0x6D4,
0x6D5,
@@ -389826,6 +404805,8 @@ static const UV UNI_STERM_invlist[] = { /* for EBCDIC 037 */
0x1B5C,
0x1B5E,
0x1B60,
+ 0x1B7D,
+ 0x1B7F,
0x1C3B,
0x1C3D,
0x1C7E,
@@ -389838,6 +404819,8 @@ static const UV UNI_STERM_invlist[] = { /* for EBCDIC 037 */
0x2E2F,
0x2E3C,
0x2E3D,
+ 0x2E53,
+ 0x2E55,
0x3002,
0x3003,
0xA4FF,
@@ -389878,6 +404861,8 @@ static const UV UNI_STERM_invlist[] = { /* for EBCDIC 037 */
0x10A58,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x11049,
0x110BE,
@@ -389918,6 +404903,8 @@ static const UV UNI_STERM_invlist[] = { /* for EBCDIC 037 */
0x11C43,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F45,
0x16A6E,
0x16A70,
0x16AF5,
@@ -390093,7 +405080,7 @@ static const UV UNI_SYMBOLSFORLEGACYCOMPUTING_invlist[] = { /* for all charsets
};
static const UV UNI_SYRC_invlist[] = { /* for all charsets */
- 23, /* Number of elements */
+ 25, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -390119,7 +405106,9 @@ static const UV UNI_SYRC_invlist[] = { /* for all charsets */
0x860,
0x86B,
0x1DF8,
- 0x1DF9
+ 0x1DF9,
+ 0x1DFA,
+ 0x1DFB
};
static const UV UNI_SYRIACSUP_invlist[] = { /* for all charsets */
@@ -390179,7 +405168,7 @@ static const UV UNI_TAKR_invlist[] = { /* for all charsets */
0xA830,
0xA83A,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA
};
@@ -390315,7 +405304,7 @@ static const UV UNI_TANGUTSUP_invlist[] = { /* for all charsets */
1 if it starts at the element beyond 0 */
0x0,
0x18D00,
- 0x18D90
+ 0x18D80
};
static const UV UNI_TAVT_invlist[] = { /* for all charsets */
@@ -390331,7 +405320,7 @@ static const UV UNI_TAVT_invlist[] = { /* for all charsets */
};
static const UV UNI_TELU_invlist[] = { /* for all charsets */
- 33, /* Number of elements */
+ 35, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -390348,7 +405337,7 @@ static const UV UNI_TELU_invlist[] = { /* for all charsets */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -390358,6 +405347,8 @@ static const UV UNI_TELU_invlist[] = { /* for all charsets */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -390373,7 +405364,7 @@ static const UV UNI_TELU_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_TERM_invlist[] = { /* for ASCII/Latin1 */
- 209, /* Number of elements */
+ 217, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -390400,7 +405391,7 @@ static const UV UNI_TERM_invlist[] = { /* for ASCII/Latin1 */
0x60D,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x6D4,
0x6D5,
@@ -390448,6 +405439,8 @@ static const UV UNI_TERM_invlist[] = { /* for ASCII/Latin1 */
0x1B5C,
0x1B5D,
0x1B60,
+ 0x1B7D,
+ 0x1B7F,
0x1C3B,
0x1C40,
0x1C7E,
@@ -390466,6 +405459,8 @@ static const UV UNI_TERM_invlist[] = { /* for ASCII/Latin1 */
0x2E4D,
0x2E4E,
0x2E50,
+ 0x2E53,
+ 0x2E55,
0x3001,
0x3003,
0xA4FE,
@@ -390526,6 +405521,8 @@ static const UV UNI_TERM_invlist[] = { /* for ASCII/Latin1 */
0x10B9D,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x1104E,
0x110BE,
@@ -390570,6 +405567,8 @@ static const UV UNI_TERM_invlist[] = { /* for ASCII/Latin1 */
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F45,
0x12470,
0x12475,
0x16A6E,
@@ -390596,7 +405595,7 @@ static const UV UNI_TERM_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_TERM_invlist[] = { /* for EBCDIC 1047 */
- 211, /* Number of elements */
+ 219, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -390625,7 +405624,7 @@ static const UV UNI_TERM_invlist[] = { /* for EBCDIC 1047 */
0x60D,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x6D4,
0x6D5,
@@ -390673,6 +405672,8 @@ static const UV UNI_TERM_invlist[] = { /* for EBCDIC 1047 */
0x1B5C,
0x1B5D,
0x1B60,
+ 0x1B7D,
+ 0x1B7F,
0x1C3B,
0x1C40,
0x1C7E,
@@ -390691,6 +405692,8 @@ static const UV UNI_TERM_invlist[] = { /* for EBCDIC 1047 */
0x2E4D,
0x2E4E,
0x2E50,
+ 0x2E53,
+ 0x2E55,
0x3001,
0x3003,
0xA4FE,
@@ -390751,6 +405754,8 @@ static const UV UNI_TERM_invlist[] = { /* for EBCDIC 1047 */
0x10B9D,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x1104E,
0x110BE,
@@ -390795,6 +405800,8 @@ static const UV UNI_TERM_invlist[] = { /* for EBCDIC 1047 */
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F45,
0x12470,
0x12475,
0x16A6E,
@@ -390821,7 +405828,7 @@ static const UV UNI_TERM_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_TERM_invlist[] = { /* for EBCDIC 037 */
- 211, /* Number of elements */
+ 219, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -390850,7 +405857,7 @@ static const UV UNI_TERM_invlist[] = { /* for EBCDIC 037 */
0x60D,
0x61B,
0x61C,
- 0x61E,
+ 0x61D,
0x620,
0x6D4,
0x6D5,
@@ -390898,6 +405905,8 @@ static const UV UNI_TERM_invlist[] = { /* for EBCDIC 037 */
0x1B5C,
0x1B5D,
0x1B60,
+ 0x1B7D,
+ 0x1B7F,
0x1C3B,
0x1C40,
0x1C7E,
@@ -390916,6 +405925,8 @@ static const UV UNI_TERM_invlist[] = { /* for EBCDIC 037 */
0x2E4D,
0x2E4E,
0x2E50,
+ 0x2E53,
+ 0x2E55,
0x3001,
0x3003,
0xA4FE,
@@ -390976,6 +405987,8 @@ static const UV UNI_TERM_invlist[] = { /* for EBCDIC 037 */
0x10B9D,
0x10F55,
0x10F5A,
+ 0x10F86,
+ 0x10F8A,
0x11047,
0x1104E,
0x110BE,
@@ -391020,6 +406033,8 @@ static const UV UNI_TERM_invlist[] = { /* for EBCDIC 037 */
0x11C72,
0x11EF7,
0x11EF9,
+ 0x11F43,
+ 0x11F45,
0x12470,
0x12475,
0x16A6E,
@@ -391061,9 +406076,9 @@ static const UV UNI_TGLG_invlist[] = { /* for all charsets */
1 if it starts at the element beyond 0 */
0x0,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
+ 0x1716,
+ 0x171F,
+ 0x1720,
0x1735,
0x1737
};
@@ -391144,6 +406159,28 @@ static const UV UNI_TIRH_invlist[] = { /* for all charsets */
0x114DA
};
+static const UV UNI_TNSA_invlist[] = { /* for all charsets */
+ 5, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA
+};
+
+static const UV UNI_TOTO_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x1E290,
+ 0x1E2AF
+};
+
static const UV UNI_TRANSPORTANDMAP_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -391174,6 +406211,16 @@ static const UV UNI_UCASEXT_invlist[] = { /* for all charsets */
0x1900
};
+static const UV UNI_UCASEXTA_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x11AB0,
+ 0x11AC0
+};
+
static const UV UNI_UGAR_invlist[] = { /* for all charsets */
5, /* Number of elements */
148565664, /* Version and data structure type */
@@ -391187,7 +406234,7 @@ static const UV UNI_UGAR_invlist[] = { /* for all charsets */
};
static const UV UNI_UIDEO_invlist[] = { /* for all charsets */
- 31, /* Number of elements */
+ 33, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -391195,7 +406242,7 @@ static const UV UNI_UIDEO_invlist[] = { /* for all charsets */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
+ 0xA000,
0xFA0E,
0xFA10,
0xFA11,
@@ -391211,9 +406258,9 @@ static const UV UNI_UIDEO_invlist[] = { /* for all charsets */
0xFA27,
0xFA2A,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -391221,7 +406268,9 @@ static const UV UNI_UIDEO_invlist[] = { /* for all charsets */
0x2CEB0,
0x2EBE1,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
static const UV UNI_VAI_invlist[] = { /* for all charsets */
@@ -391254,10 +406303,34 @@ static const UV UNI_VERTICALFORMS_invlist[] = { /* for all charsets */
0xFE20
};
+static const UV UNI_VITH_invlist[] = { /* for all charsets */
+ 17, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD
+};
+
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_VO__R_invlist[] = { /* for ASCII/Latin1 */
- 177, /* Number of elements */
+ 179, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -391411,15 +406484,17 @@ static const UV UNI_VO__R_invlist[] = { /* for ASCII/Latin1 */
0x11580,
0x11600,
0x11A00,
- 0x11AB0,
+ 0x11AC0,
0x13000,
- 0x13440,
+ 0x13460,
0x14400,
0x14680,
0x16FE0,
- 0x18D90,
- 0x1B000,
+ 0x18D80,
+ 0x1AFF0,
0x1B300,
+ 0x1CF00,
+ 0x1CFD0,
0x1D000,
0x1D200,
0x1D2E0,
@@ -391448,7 +406523,7 @@ static const UV UNI_VO__R_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_VO__R_invlist[] = { /* for EBCDIC 1047 */
- 175, /* Number of elements */
+ 177, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -391600,15 +406675,17 @@ static const UV UNI_VO__R_invlist[] = { /* for EBCDIC 1047 */
0x11580,
0x11600,
0x11A00,
- 0x11AB0,
+ 0x11AC0,
0x13000,
- 0x13440,
+ 0x13460,
0x14400,
0x14680,
0x16FE0,
- 0x18D90,
- 0x1B000,
+ 0x18D80,
+ 0x1AFF0,
0x1B300,
+ 0x1CF00,
+ 0x1CFD0,
0x1D000,
0x1D200,
0x1D2E0,
@@ -391637,7 +406714,7 @@ static const UV UNI_VO__R_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_VO__R_invlist[] = { /* for EBCDIC 037 */
- 175, /* Number of elements */
+ 177, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -391789,15 +406866,17 @@ static const UV UNI_VO__R_invlist[] = { /* for EBCDIC 037 */
0x11580,
0x11600,
0x11A00,
- 0x11AB0,
+ 0x11AC0,
0x13000,
- 0x13440,
+ 0x13460,
0x14400,
0x14680,
0x16FE0,
- 0x18D90,
- 0x1B000,
+ 0x18D80,
+ 0x1AFF0,
0x1B300,
+ 0x1CF00,
+ 0x1CFD0,
0x1D000,
0x1D200,
0x1D2E0,
@@ -391935,7 +407014,7 @@ static const UV UNI_VO__TU_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_VO__U_invlist[] = { /* for ASCII/Latin1 */
- 255, /* Number of elements */
+ 257, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -392165,15 +407244,17 @@ static const UV UNI_VO__U_invlist[] = { /* for ASCII/Latin1 */
0x11580,
0x11600,
0x11A00,
- 0x11AB0,
+ 0x11AC0,
0x13000,
- 0x13440,
+ 0x13460,
0x14400,
0x14680,
0x16FE0,
- 0x18D90,
- 0x1B000,
+ 0x18D80,
+ 0x1AFF0,
0x1B300,
+ 0x1CF00,
+ 0x1CFD0,
0x1D000,
0x1D200,
0x1D2E0,
@@ -392204,7 +407285,7 @@ static const UV UNI_VO__U_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_VO__U_invlist[] = { /* for EBCDIC 1047 */
- 253, /* Number of elements */
+ 255, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -392432,15 +407513,17 @@ static const UV UNI_VO__U_invlist[] = { /* for EBCDIC 1047 */
0x11580,
0x11600,
0x11A00,
- 0x11AB0,
+ 0x11AC0,
0x13000,
- 0x13440,
+ 0x13460,
0x14400,
0x14680,
0x16FE0,
- 0x18D90,
- 0x1B000,
+ 0x18D80,
+ 0x1AFF0,
0x1B300,
+ 0x1CF00,
+ 0x1CFD0,
0x1D000,
0x1D200,
0x1D2E0,
@@ -392471,7 +407554,7 @@ static const UV UNI_VO__U_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_VO__U_invlist[] = { /* for EBCDIC 037 */
- 253, /* Number of elements */
+ 255, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -392699,15 +407782,17 @@ static const UV UNI_VO__U_invlist[] = { /* for EBCDIC 037 */
0x11580,
0x11600,
0x11A00,
- 0x11AB0,
+ 0x11AC0,
0x13000,
- 0x13440,
+ 0x13460,
0x14400,
0x14680,
0x16FE0,
- 0x18D90,
- 0x1B000,
+ 0x18D80,
+ 0x1AFF0,
0x1B300,
+ 0x1CF00,
+ 0x1CFD0,
0x1D000,
0x1D200,
0x1D2E0,
@@ -392733,13 +407818,15 @@ static const UV UNI_VO__U_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_VS_invlist[] = { /* for all charsets */
- 7, /* Number of elements */
+ 9, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
0x0,
0x180B,
0x180E,
+ 0x180F,
+ 0x1810,
0xFE00,
0xFE10,
0xE0100,
@@ -392908,7 +407995,7 @@ static const UV UNI_WB__EX_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
- 589, /* Number of elements */
+ 629, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -392961,7 +408048,9 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
0x82E,
0x859,
0x85C,
- 0x8D3,
+ 0x898,
+ 0x8A0,
+ 0x8CA,
0x8E2,
0x8E3,
0x904,
@@ -393045,6 +408134,8 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
0xBD8,
0xC00,
0xC05,
+ 0xC3C,
+ 0xC3D,
0xC3E,
0xC45,
0xC46,
@@ -393069,6 +408160,8 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
0xCD7,
0xCE2,
0xCE4,
+ 0xCF3,
+ 0xCF4,
0xD00,
0xD04,
0xD3B,
@@ -393106,7 +408199,7 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xF18,
0xF1A,
0xF35,
@@ -393148,7 +408241,7 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
0x135D,
0x1360,
0x1712,
- 0x1715,
+ 0x1716,
0x1732,
0x1735,
0x1752,
@@ -393161,6 +408254,8 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
0x17DE,
0x180B,
0x180E,
+ 0x180F,
+ 0x1810,
0x1885,
0x1887,
0x18A9,
@@ -393178,7 +408273,7 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
0x1A7F,
0x1A80,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
0x1B05,
0x1B34,
@@ -393204,8 +408299,6 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
0x1CF7,
0x1CFA,
0x1DC0,
- 0x1DFA,
- 0x1DFB,
0x1E00,
0x200C,
0x200D,
@@ -393313,16 +408406,26 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
0x10D28,
0x10EAB,
0x10EAD,
+ 0x10EFD,
+ 0x10F00,
0x10F46,
0x10F51,
+ 0x10F82,
+ 0x10F86,
0x11000,
0x11003,
0x11038,
0x11047,
+ 0x11070,
+ 0x11071,
+ 0x11073,
+ 0x11075,
0x1107F,
0x11083,
0x110B0,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x11100,
0x11103,
0x11127,
@@ -393343,6 +408446,8 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
0x11238,
0x1123E,
0x1123F,
+ 0x11241,
+ 0x11242,
0x112DF,
0x112EB,
0x11300,
@@ -393437,6 +408542,18 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
0x11D98,
0x11EF3,
0x11EF7,
+ 0x11F00,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F34,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x13440,
+ 0x13441,
+ 0x13447,
+ 0x13456,
0x16AF0,
0x16AF5,
0x16B30,
@@ -393453,6 +408570,10 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
0x16FF2,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -393487,10 +408608,16 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E08F,
+ 0x1E090,
0x1E130,
0x1E137,
+ 0x1E2AE,
+ 0x1E2AF,
0x1E2EC,
0x1E2F0,
+ 0x1E4EC,
+ 0x1E4F0,
0x1E8D0,
0x1E8D7,
0x1E944,
@@ -393506,7 +408633,7 @@ static const UV UNI_WB__EXTEND_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_WB__FO_invlist[] = { /* for ASCII/Latin1 */
- 39, /* Number of elements */
+ 41, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -393521,6 +408648,8 @@ static const UV UNI_WB__FO_invlist[] = { /* for ASCII/Latin1 */
0x6DE,
0x70F,
0x710,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0x180E,
@@ -393542,7 +408671,7 @@ static const UV UNI_WB__FO_invlist[] = { /* for ASCII/Latin1 */
0x110CD,
0x110CE,
0x13430,
- 0x13439,
+ 0x13440,
0x1BCA0,
0x1BCA4,
0x1D173,
@@ -393559,7 +408688,7 @@ static const UV UNI_WB__FO_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_WB__FO_invlist[] = { /* for EBCDIC 1047 */
- 39, /* Number of elements */
+ 41, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -393574,6 +408703,8 @@ static const UV UNI_WB__FO_invlist[] = { /* for EBCDIC 1047 */
0x6DE,
0x70F,
0x710,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0x180E,
@@ -393595,7 +408726,7 @@ static const UV UNI_WB__FO_invlist[] = { /* for EBCDIC 1047 */
0x110CD,
0x110CE,
0x13430,
- 0x13439,
+ 0x13440,
0x1BCA0,
0x1BCA4,
0x1D173,
@@ -393612,7 +408743,7 @@ static const UV UNI_WB__FO_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_WB__FO_invlist[] = { /* for EBCDIC 037 */
- 39, /* Number of elements */
+ 41, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -393627,6 +408758,8 @@ static const UV UNI_WB__FO_invlist[] = { /* for EBCDIC 037 */
0x6DE,
0x70F,
0x710,
+ 0x890,
+ 0x892,
0x8E2,
0x8E3,
0x180E,
@@ -393648,7 +408781,7 @@ static const UV UNI_WB__FO_invlist[] = { /* for EBCDIC 037 */
0x110CD,
0x110CE,
0x13430,
- 0x13439,
+ 0x13440,
0x1BCA0,
0x1BCA4,
0x1D173,
@@ -393660,7 +408793,7 @@ static const UV UNI_WB__FO_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_WB__KA_invlist[] = { /* for all charsets */
- 21, /* Number of elements */
+ 31, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -393681,8 +408814,18 @@ static const UV UNI_WB__KA_invlist[] = { /* for all charsets */
0x3358,
0xFF66,
0xFF9E,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
0x1B001,
+ 0x1B120,
+ 0x1B123,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168
};
@@ -393690,7 +408833,7 @@ static const UV UNI_WB__KA_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
- 1095, /* Number of elements */
+ 1157, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -393789,10 +408932,12 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -393921,6 +409066,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -393937,7 +409084,7 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -394034,10 +409181,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -394062,7 +409207,7 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -394166,10 +409311,6 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -394232,10 +409373,14 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
0xA6A0,
0xA6F0,
0xA708,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -394369,12 +409514,34 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -394445,12 +409612,18 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -394477,6 +409650,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -394569,7 +409744,7 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -394597,6 +409772,12 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
@@ -394605,14 +409786,20 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -394703,14 +409890,32 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -394799,7 +410004,7 @@ static const UV UNI_WB__LE_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
- 1121, /* Number of elements */
+ 1183, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -394924,10 +410129,12 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -395056,6 +410263,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -395072,7 +410281,7 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -395169,10 +410378,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -395197,7 +410404,7 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -395301,10 +410508,6 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -395367,10 +410570,14 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
0xA6A0,
0xA6F0,
0xA708,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -395504,12 +410711,34 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -395580,12 +410809,18 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -395612,6 +410847,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -395704,7 +410941,7 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -395732,6 +410969,12 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
@@ -395740,14 +410983,20 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -395838,14 +411087,32 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -395934,7 +411201,7 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
- 1117, /* Number of elements */
+ 1179, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -396055,10 +411322,12 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -396187,6 +411456,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -396203,7 +411474,7 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -396300,10 +411571,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -396328,7 +411597,7 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -396432,10 +411701,6 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -396498,10 +411763,14 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
0xA6A0,
0xA6F0,
0xA708,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -396635,12 +411904,34 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -396711,12 +412002,18 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -396743,6 +412040,8 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -396835,7 +412134,7 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -396863,6 +412162,12 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
@@ -396871,14 +412176,20 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -396969,14 +412280,32 @@ static const UV UNI_WB__LE_invlist[] = { /* for EBCDIC 037 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -397422,7 +412751,7 @@ static const UV UNI_WB__NL_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_WB__NU_invlist[] = { /* for ASCII/Latin1 */
- 125, /* Number of elements */
+ 131, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -397537,8 +412866,12 @@ static const UV UNI_WB__NU_invlist[] = { /* for ASCII/Latin1 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x1D7CE,
@@ -397547,6 +412880,8 @@ static const UV UNI_WB__NU_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E950,
0x1E95A,
0x1FBF0,
@@ -397561,7 +412896,7 @@ static const UV UNI_WB__NU_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_WB__NU_invlist[] = { /* for EBCDIC 1047 */
- 125, /* Number of elements */
+ 131, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -397676,8 +413011,12 @@ static const UV UNI_WB__NU_invlist[] = { /* for EBCDIC 1047 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x1D7CE,
@@ -397686,6 +413025,8 @@ static const UV UNI_WB__NU_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E950,
0x1E95A,
0x1FBF0,
@@ -397700,7 +413041,7 @@ static const UV UNI_WB__NU_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_WB__NU_invlist[] = { /* for EBCDIC 037 */
- 125, /* Number of elements */
+ 131, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -397815,8 +413156,12 @@ static const UV UNI_WB__NU_invlist[] = { /* for EBCDIC 037 */
0x11D5A,
0x11DA0,
0x11DAA,
+ 0x11F50,
+ 0x11F5A,
0x16A60,
0x16A6A,
+ 0x16AC0,
+ 0x16ACA,
0x16B50,
0x16B5A,
0x1D7CE,
@@ -397825,6 +413170,8 @@ static const UV UNI_WB__NU_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E2F0,
0x1E2FA,
+ 0x1E4F0,
+ 0x1E4FA,
0x1E950,
0x1E95A,
0x1FBF0,
@@ -397962,7 +413309,7 @@ static const UV UNI_WB__WSEGSPACE_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
- 1487, /* Number of elements */
+ 1557, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -398083,11 +413430,13 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x964,
0x966,
0x970,
@@ -398253,7 +413602,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -398263,6 +413612,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -398287,14 +413638,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -398350,7 +413701,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xF00,
@@ -398452,10 +413803,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -398472,8 +413821,6 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x17E0,
0x17EA,
0x180B,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -398502,9 +413849,9 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1A90,
0x1A9A,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -398528,8 +413875,6 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -398628,10 +413973,6 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -398710,10 +414051,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0xA67F,
0xA6F2,
0xA708,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -398909,12 +414254,34 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -398989,12 +414356,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -399002,11 +414371,13 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -399036,7 +414407,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -399149,7 +414520,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -399193,6 +414564,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -399201,10 +414580,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -399213,6 +414592,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -399241,8 +414624,18 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x16FE5,
0x16FF0,
0x16FF2,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
0x1B001,
+ 0x1B120,
+ 0x1B123,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1BC00,
@@ -399257,6 +414650,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -399341,6 +414738,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -399351,6 +414752,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -399359,8 +414764,20 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -399463,7 +414880,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
- 1511, /* Number of elements */
+ 1581, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -399608,11 +415025,13 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x964,
0x966,
0x970,
@@ -399778,7 +415197,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -399788,6 +415207,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -399812,14 +415233,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -399875,7 +415296,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xF00,
@@ -399977,10 +415398,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -399997,8 +415416,6 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x17E0,
0x17EA,
0x180B,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -400027,9 +415444,9 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1A90,
0x1A9A,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -400053,8 +415470,6 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -400153,10 +415568,6 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -400235,10 +415646,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0xA67F,
0xA6F2,
0xA708,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -400434,12 +415849,34 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -400514,12 +415951,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -400527,11 +415966,13 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -400561,7 +416002,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -400674,7 +416115,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -400718,6 +416159,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -400726,10 +416175,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -400738,6 +416187,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -400766,8 +416219,18 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x16FE5,
0x16FF0,
0x16FF2,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
0x1B001,
+ 0x1B120,
+ 0x1B123,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1BC00,
@@ -400782,6 +416245,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -400866,6 +416333,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -400876,6 +416347,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -400884,8 +416359,20 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -400988,7 +416475,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
- 1507, /* Number of elements */
+ 1577, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -401129,11 +416616,13 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x964,
0x966,
0x970,
@@ -401299,7 +416788,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -401309,6 +416798,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -401333,14 +416824,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -401396,7 +416887,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0xEB4,
0xEBD,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xF00,
@@ -401498,10 +416989,8 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -401518,8 +417007,6 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x17E0,
0x17EA,
0x180B,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -401548,9 +417035,9 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x1A90,
0x1A9A,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -401574,8 +417061,6 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -401674,10 +417159,6 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x24B6,
0x24EA,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -401756,10 +417237,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0xA67F,
0xA6F2,
0xA708,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -401955,12 +417440,34 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -402035,12 +417542,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -402048,11 +417557,13 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
0x110BD,
0x110BE,
+ 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -402082,7 +417593,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -402195,7 +417706,7 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -402239,6 +417750,14 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -402247,10 +417766,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -402259,6 +417778,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -402287,8 +417810,18 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x16FE5,
0x16FF0,
0x16FF2,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
0x1B001,
+ 0x1B120,
+ 0x1B123,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1BC00,
@@ -402303,6 +417836,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x1BC9F,
0x1BCA0,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -402387,6 +417924,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -402397,6 +417938,10 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -402405,8 +417950,20 @@ static const UV UNI_WB__XX_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -402518,7 +418075,7 @@ static const UV UNI_WCHO_invlist[] = { /* for all charsets */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
- 1475, /* Number of elements */
+ 1551, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -402625,11 +418182,11 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -402797,7 +418354,7 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -402807,6 +418364,8 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -402831,14 +418390,14 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -402904,7 +418463,7 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -402998,10 +418557,8 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -403021,7 +418578,7 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -403060,9 +418617,9 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x1AB0,
0x1ABE,
0x1ABF,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -403086,8 +418643,6 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -403168,10 +418723,6 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -403234,8 +418785,6 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -403254,10 +418803,14 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -403447,12 +419000,34 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -403527,12 +419102,14 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -403540,9 +419117,11 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -403570,7 +419149,7 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -403649,6 +419228,8 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -403685,7 +419266,7 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -403729,6 +419310,14 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -403737,8 +419326,12 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -403747,6 +419340,10 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -403781,10 +419378,20 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -403799,6 +419406,10 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -403885,6 +419496,10 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -403895,6 +419510,10 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -403903,8 +419522,20 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -403982,9 +419613,9 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -403995,6 +419626,8 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -404007,7 +419640,7 @@ static const UV UNI_XIDC_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
- 1499, /* Number of elements */
+ 1575, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -404138,11 +419771,11 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -404310,7 +419943,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -404320,6 +419953,8 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -404344,14 +419979,14 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -404417,7 +420052,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -404511,10 +420146,8 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -404534,7 +420167,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -404573,9 +420206,9 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x1AB0,
0x1ABE,
0x1ABF,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -404599,8 +420232,6 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -404681,10 +420312,6 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -404747,8 +420374,6 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -404767,10 +420392,14 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -404960,12 +420589,34 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -405040,12 +420691,14 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -405053,9 +420706,11 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -405083,7 +420738,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -405162,6 +420817,8 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -405198,7 +420855,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -405242,6 +420899,14 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -405250,8 +420915,12 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -405260,6 +420929,10 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -405294,10 +420967,20 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -405312,6 +420995,10 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -405398,6 +421085,10 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -405408,6 +421099,10 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -405416,8 +421111,20 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -405495,9 +421202,9 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -405508,6 +421215,8 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -405520,7 +421229,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
- 1495, /* Number of elements */
+ 1571, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -405647,11 +421356,11 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x85C,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
+ 0x898,
0x8E2,
0x8E3,
0x964,
@@ -405819,7 +421528,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -405829,6 +421538,8 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -405853,14 +421564,14 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -405926,7 +421637,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -406020,10 +421731,8 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1735,
0x1740,
0x1754,
@@ -406043,7 +421752,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x17EA,
0x180B,
0x180E,
- 0x1810,
+ 0x180F,
0x181A,
0x1820,
0x1879,
@@ -406082,9 +421791,9 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x1AB0,
0x1ABE,
0x1ABF,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
0x1B5A,
0x1B6B,
@@ -406108,8 +421817,6 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x1CD4,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -406190,10 +421897,6 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CF4,
@@ -406256,8 +421959,6 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -406276,10 +421977,14 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA828,
0xA82C,
0xA82D,
@@ -406469,12 +422174,34 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -406549,12 +422276,14 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x10EAD,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F1D,
0x10F27,
0x10F28,
0x10F30,
0x10F51,
+ 0x10F70,
+ 0x10F86,
0x10FB0,
0x10FC5,
0x10FE0,
@@ -406562,9 +422291,11 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x11000,
0x11047,
0x11066,
- 0x11070,
+ 0x11076,
0x1107F,
0x110BB,
+ 0x110C2,
+ 0x110C3,
0x110D0,
0x110E9,
0x110F0,
@@ -406592,7 +422323,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x11213,
0x11238,
0x1123E,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -406671,6 +422402,8 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x1172C,
0x11730,
0x1173A,
+ 0x11740,
+ 0x11747,
0x11800,
0x1183B,
0x118A0,
@@ -406707,7 +422440,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x11A9A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -406751,6 +422484,14 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x11DAA,
0x11EE0,
0x11EF7,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F43,
+ 0x11F50,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x12000,
@@ -406759,8 +422500,12 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13440,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -406769,6 +422514,10 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x16A5F,
0x16A60,
0x16A6A,
+ 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -406803,10 +422552,20 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -406821,6 +422580,10 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x1BC9A,
0x1BC9D,
0x1BC9F,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
0x1D165,
0x1D16A,
0x1D16D,
@@ -406907,6 +422670,10 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -406917,6 +422684,10 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -406925,8 +422696,20 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x1E14A,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8D0,
@@ -407004,9 +422787,9 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -407017,6 +422800,8 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0100,
0xE01F0
};
@@ -407026,7 +422811,7 @@ static const UV UNI_XIDC_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
- 1259, /* Number of elements */
+ 1333, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -407129,10 +422914,12 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -407261,6 +423048,8 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -407277,7 +423066,7 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -407420,10 +423209,8 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -407464,7 +423251,7 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -407564,10 +423351,6 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -407628,8 +423411,6 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -407650,10 +423431,14 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -407845,12 +423630,34 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -407921,12 +423728,18 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -407953,6 +423766,8 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -408009,6 +423824,8 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -408047,7 +423864,7 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -408075,6 +423892,12 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
@@ -408083,14 +423906,20 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -408119,10 +423948,20 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -408195,14 +424034,32 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -408276,9 +424133,9 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -408288,7 +424145,9 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* ASCII/Latin1 */
@@ -408299,7 +424158,7 @@ static const UV UNI_XIDS_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
- 1285, /* Number of elements */
+ 1359, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -408428,10 +424287,12 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -408560,6 +424421,8 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -408576,7 +424439,7 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -408719,10 +424582,8 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -408763,7 +424624,7 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -408863,10 +424724,6 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -408927,8 +424784,6 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -408949,10 +424804,14 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -409144,12 +425003,34 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -409220,12 +425101,18 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -409252,6 +425139,8 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -409308,6 +425197,8 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -409346,7 +425237,7 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -409374,6 +425265,12 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
@@ -409382,14 +425279,20 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -409418,10 +425321,20 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -409494,14 +425407,32 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -409575,9 +425506,9 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -409587,7 +425518,9 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 1047 */
@@ -409598,7 +425531,7 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
- 1281, /* Number of elements */
+ 1355, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -409723,10 +425656,12 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x859,
0x860,
0x86B,
+ 0x870,
+ 0x888,
+ 0x889,
+ 0x88F,
0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
+ 0x8CA,
0x904,
0x93A,
0x93D,
@@ -409855,6 +425790,8 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0xC3E,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC62,
0xC80,
@@ -409871,7 +425808,7 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0xCBA,
0xCBD,
0xCBE,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE2,
@@ -410014,10 +425951,8 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x16EE,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
0x1712,
- 0x1720,
+ 0x171F,
0x1732,
0x1740,
0x1752,
@@ -410058,7 +425993,7 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x1B05,
0x1B34,
0x1B45,
- 0x1B4C,
+ 0x1B4D,
0x1B83,
0x1BA1,
0x1BAE,
@@ -410158,10 +426093,6 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x2160,
0x2189,
0x2C00,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CE5,
0x2CEB,
0x2CEF,
@@ -410222,8 +426153,6 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x3400,
0x4DC0,
0x4E00,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA4D0,
0xA4FE,
@@ -410244,10 +426173,14 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0xA722,
0xA789,
0xA78B,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA802,
0xA803,
0xA806,
@@ -410439,12 +426372,34 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x10528,
0x10530,
0x10564,
+ 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -410515,12 +426470,18 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x10F28,
0x10F30,
0x10F46,
+ 0x10F70,
+ 0x10F82,
0x10FB0,
0x10FC5,
0x10FE0,
0x10FF7,
0x11003,
0x11038,
+ 0x11071,
+ 0x11073,
+ 0x11075,
+ 0x11076,
0x11083,
0x110B0,
0x110D0,
@@ -410547,6 +426508,8 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x11212,
0x11213,
0x1122C,
+ 0x1123F,
+ 0x11241,
0x11280,
0x11287,
0x11288,
@@ -410603,6 +426566,8 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x116B9,
0x11700,
0x1171B,
+ 0x11740,
+ 0x11747,
0x11800,
0x1182C,
0x118A0,
@@ -410641,7 +426606,7 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x11A8A,
0x11A9D,
0x11A9E,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
0x11C00,
0x11C09,
@@ -410669,6 +426634,12 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x11D99,
0x11EE0,
0x11EF3,
+ 0x11F02,
+ 0x11F03,
+ 0x11F04,
+ 0x11F11,
+ 0x11F12,
+ 0x11F34,
0x11FB0,
0x11FB1,
0x12000,
@@ -410677,14 +426648,20 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x1246F,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF1,
0x13000,
- 0x1342F,
+ 0x13430,
+ 0x13441,
+ 0x13447,
0x14400,
0x14647,
0x16800,
0x16A39,
0x16A40,
0x16A5F,
+ 0x16A70,
+ 0x16ABF,
0x16AD0,
0x16AEE,
0x16B00,
@@ -410713,10 +426690,20 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -410789,14 +426776,32 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x1D7C3,
0x1D7C4,
0x1D7CC,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
+ 0x1E030,
+ 0x1E06E,
0x1E100,
0x1E12D,
0x1E137,
0x1E13E,
0x1E14E,
0x1E14F,
+ 0x1E290,
+ 0x1E2AE,
0x1E2C0,
0x1E2EC,
+ 0x1E4D0,
+ 0x1E4EC,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E900,
@@ -410870,9 +426875,9 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x1EEAB,
0x1EEBC,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -410882,7 +426887,9 @@ static const UV UNI_XIDS_invlist[] = { /* for EBCDIC 037 */
0x2F800,
0x2FA1E,
0x30000,
- 0x3134B
+ 0x3134B,
+ 0x31350,
+ 0x323B0
};
# endif /* EBCDIC 037 */
@@ -411095,6 +427102,16 @@ static const UV UNI_ZL_invlist[] = { /* for all charsets */
0x2029
};
+static const UV UNI_ZNAMENNYMUSIC_invlist[] = { /* for all charsets */
+ 3, /* Number of elements */
+ 148565664, /* Version and data structure type */
+ 1, /* 0 if the list starts at 0;
+ 1 if it starts at the element beyond 0 */
+ 0x0,
+ 0x1CF00,
+ 0x1CFD0
+};
+
static const UV UNI_ZP_invlist[] = { /* for all charsets */
3, /* Number of elements */
148565664, /* Version and data structure type */
@@ -411188,7 +427205,7 @@ static const UV UNI_ZS_invlist[] = { /* for EBCDIC 037 */
# if 'A' == 65 /* ASCII/Latin1 */
static const UV UNI_ZYYY_invlist[] = { /* for ASCII/Latin1 */
- 296, /* Number of elements */
+ 294, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -411245,7 +427262,7 @@ static const UV UNI_ZYYY_invlist[] = { /* for ASCII/Latin1 */
0x2080,
0x208F,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x2100,
0x2126,
0x2127,
@@ -411273,7 +427290,7 @@ static const UV UNI_ZYYY_invlist[] = { /* for ASCII/Latin1 */
0x2E00,
0x2E43,
0x2E44,
- 0x2E53,
+ 0x2E5E,
0x2FF0,
0x2FFC,
0x3000,
@@ -411310,8 +427327,6 @@ static const UV UNI_ZYYY_invlist[] = { /* for ASCII/Latin1 */
0xAB5C,
0xAB6A,
0xAB6C,
- 0xFD3E,
- 0xFD40,
0xFE10,
0xFE1A,
0xFE30,
@@ -411340,8 +427355,8 @@ static const UV UNI_ZYYY_invlist[] = { /* for ASCII/Latin1 */
0x1019D,
0x101D0,
0x101FD,
- 0x16FE2,
- 0x16FE4,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -411355,7 +427370,9 @@ static const UV UNI_ZYYY_invlist[] = { /* for ASCII/Latin1 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -411434,16 +427451,18 @@ static const UV UNI_ZYYY_invlist[] = { /* for ASCII/Latin1 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -411457,27 +427476,23 @@ static const UV UNI_ZYYY_invlist[] = { /* for ASCII/Latin1 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -411498,7 +427513,7 @@ static const UV UNI_ZYYY_invlist[] = { /* for ASCII/Latin1 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 1047 */
- 322, /* Number of elements */
+ 320, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -411581,7 +427596,7 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 1047 */
0x2080,
0x208F,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x2100,
0x2126,
0x2127,
@@ -411609,7 +427624,7 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 1047 */
0x2E00,
0x2E43,
0x2E44,
- 0x2E53,
+ 0x2E5E,
0x2FF0,
0x2FFC,
0x3000,
@@ -411646,8 +427661,6 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 1047 */
0xAB5C,
0xAB6A,
0xAB6C,
- 0xFD3E,
- 0xFD40,
0xFE10,
0xFE1A,
0xFE30,
@@ -411676,8 +427689,8 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 1047 */
0x1019D,
0x101D0,
0x101FD,
- 0x16FE2,
- 0x16FE4,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -411691,7 +427704,9 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 1047 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -411770,16 +427785,18 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 1047 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -411793,27 +427810,23 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 1047 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -411834,7 +427847,7 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 1047 */
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 037 */
- 318, /* Number of elements */
+ 316, /* Number of elements */
148565664, /* Version and data structure type */
0, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -411913,7 +427926,7 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 037 */
0x2080,
0x208F,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x2100,
0x2126,
0x2127,
@@ -411941,7 +427954,7 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 037 */
0x2E00,
0x2E43,
0x2E44,
- 0x2E53,
+ 0x2E5E,
0x2FF0,
0x2FFC,
0x3000,
@@ -411978,8 +427991,6 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 037 */
0xAB5C,
0xAB6A,
0xAB6C,
- 0xFD3E,
- 0xFD40,
0xFE10,
0xFE1A,
0xFE30,
@@ -412008,8 +428019,8 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 037 */
0x1019D,
0x101D0,
0x101FD,
- 0x16FE2,
- 0x16FE4,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
@@ -412023,7 +428034,9 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 037 */
0x1D18C,
0x1D1AA,
0x1D1AE,
- 0x1D1E9,
+ 0x1D1EB,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -412102,16 +428115,18 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 037 */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -412125,27 +428140,23 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 037 */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -412161,7 +428172,7 @@ static const UV UNI_ZYYY_invlist[] = { /* for EBCDIC 037 */
# endif /* EBCDIC 037 */
static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
- 1350, /* Number of elements */
+ 1410, /* Number of elements */
148565664, /* Version and data structure type */
1, /* 0 if the list starts at 0;
1 if it starts at the element beyond 0 */
@@ -412190,8 +428201,6 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x5EF,
0x5F5,
0x600,
- 0x61D,
- 0x61E,
0x70E,
0x70F,
0x74B,
@@ -412209,11 +428218,11 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x85F,
0x860,
0x86B,
- 0x8A0,
- 0x8B5,
- 0x8B6,
- 0x8C8,
- 0x8D3,
+ 0x870,
+ 0x88F,
+ 0x890,
+ 0x892,
+ 0x898,
0x984,
0x985,
0x98D,
@@ -412369,7 +428378,7 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0xC29,
0xC2A,
0xC3A,
- 0xC3D,
+ 0xC3C,
0xC45,
0xC46,
0xC49,
@@ -412379,6 +428388,8 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0xC57,
0xC58,
0xC5B,
+ 0xC5D,
+ 0xC5E,
0xC60,
0xC64,
0xC66,
@@ -412401,14 +428412,14 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0xCCE,
0xCD5,
0xCD7,
- 0xCDE,
+ 0xCDD,
0xCDF,
0xCE0,
0xCE4,
0xCE6,
0xCF0,
0xCF1,
- 0xCF3,
+ 0xCF4,
0xD00,
0xD0D,
0xD0E,
@@ -412468,7 +428479,7 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0xEC6,
0xEC7,
0xEC8,
- 0xECE,
+ 0xECF,
0xED0,
0xEDA,
0xEDC,
@@ -412536,10 +428547,8 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x16A0,
0x16F9,
0x1700,
- 0x170D,
- 0x170E,
- 0x1715,
- 0x1720,
+ 0x1716,
+ 0x171F,
0x1737,
0x1740,
0x1754,
@@ -412556,8 +428565,6 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x17F0,
0x17FA,
0x1800,
- 0x180F,
- 0x1810,
0x181A,
0x1820,
0x1879,
@@ -412596,11 +428603,11 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x1AA0,
0x1AAE,
0x1AB0,
- 0x1AC1,
+ 0x1ACF,
0x1B00,
- 0x1B4C,
+ 0x1B4D,
0x1B50,
- 0x1B7D,
+ 0x1B7F,
0x1B80,
0x1BF4,
0x1BFC,
@@ -412616,8 +428623,6 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x1CD0,
0x1CFB,
0x1D00,
- 0x1DFA,
- 0x1DFB,
0x1F16,
0x1F18,
0x1F1E,
@@ -412658,7 +428663,7 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x2090,
0x209D,
0x20A0,
- 0x20C0,
+ 0x20C1,
0x20D0,
0x20F1,
0x2100,
@@ -412672,10 +428677,6 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x2B76,
0x2B96,
0x2B97,
- 0x2C2F,
- 0x2C30,
- 0x2C5F,
- 0x2C60,
0x2CF4,
0x2CF9,
0x2D26,
@@ -412706,7 +428707,7 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x2DD8,
0x2DDF,
0x2DE0,
- 0x2E53,
+ 0x2E5E,
0x2E80,
0x2E9A,
0x2E9B,
@@ -412730,8 +428731,6 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x31F0,
0x321F,
0x3220,
- 0x9FFD,
- 0xA000,
0xA48D,
0xA490,
0xA4C7,
@@ -412740,10 +428739,14 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0xA640,
0xA6F8,
0xA700,
- 0xA7C0,
- 0xA7C2,
0xA7CB,
- 0xA7F5,
+ 0xA7D0,
+ 0xA7D2,
+ 0xA7D3,
+ 0xA7D4,
+ 0xA7D5,
+ 0xA7DA,
+ 0xA7F2,
0xA82D,
0xA830,
0xA83A,
@@ -412814,16 +428817,14 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0xFB43,
0xFB45,
0xFB46,
- 0xFBC2,
+ 0xFBC3,
0xFBD3,
- 0xFD40,
- 0xFD50,
0xFD90,
0xFD92,
0xFDC8,
+ 0xFDCF,
+ 0xFDD0,
0xFDF0,
- 0xFDFE,
- 0xFE00,
0xFE1A,
0xFE20,
0xFE53,
@@ -412910,13 +428911,33 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x10530,
0x10564,
0x1056F,
- 0x10570,
+ 0x1057B,
+ 0x1057C,
+ 0x1058B,
+ 0x1058C,
+ 0x10593,
+ 0x10594,
+ 0x10596,
+ 0x10597,
+ 0x105A2,
+ 0x105A3,
+ 0x105B2,
+ 0x105B3,
+ 0x105BA,
+ 0x105BB,
+ 0x105BD,
0x10600,
0x10737,
0x10740,
0x10756,
0x10760,
0x10768,
+ 0x10780,
+ 0x10786,
+ 0x10787,
+ 0x107B1,
+ 0x107B2,
+ 0x107BB,
0x10800,
0x10806,
0x10808,
@@ -412999,10 +429020,12 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x10EAE,
0x10EB0,
0x10EB2,
- 0x10F00,
+ 0x10EFD,
0x10F28,
0x10F30,
0x10F5A,
+ 0x10F70,
+ 0x10F8A,
0x10FB0,
0x10FCC,
0x10FE0,
@@ -413010,9 +429033,9 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x11000,
0x1104E,
0x11052,
- 0x11070,
+ 0x11076,
0x1107F,
- 0x110C2,
+ 0x110C3,
0x110CD,
0x110CE,
0x110D0,
@@ -413032,7 +429055,7 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x11200,
0x11212,
0x11213,
- 0x1123F,
+ 0x11242,
0x11280,
0x11287,
0x11288,
@@ -413096,7 +429119,7 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x11660,
0x1166D,
0x11680,
- 0x116B9,
+ 0x116BA,
0x116C0,
0x116CA,
0x11700,
@@ -413104,7 +429127,7 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x1171D,
0x1172C,
0x11730,
- 0x11740,
+ 0x11747,
0x11800,
0x1183C,
0x118A0,
@@ -413135,8 +429158,10 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x11A48,
0x11A50,
0x11AA3,
- 0x11AC0,
+ 0x11AB0,
0x11AF9,
+ 0x11B00,
+ 0x11B0A,
0x11C00,
0x11C09,
0x11C0A,
@@ -413179,6 +429204,12 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x11DAA,
0x11EE0,
0x11EF9,
+ 0x11F00,
+ 0x11F11,
+ 0x11F12,
+ 0x11F3B,
+ 0x11F3E,
+ 0x11F5A,
0x11FB0,
0x11FB1,
0x11FC0,
@@ -413191,10 +429222,10 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x12475,
0x12480,
0x12544,
+ 0x12F90,
+ 0x12FF3,
0x13000,
- 0x1342F,
- 0x13430,
- 0x13439,
+ 0x13456,
0x14400,
0x14647,
0x16800,
@@ -413204,7 +429235,9 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x16A60,
0x16A6A,
0x16A6E,
- 0x16A70,
+ 0x16ABF,
+ 0x16AC0,
+ 0x16ACA,
0x16AD0,
0x16AEE,
0x16AF0,
@@ -413237,10 +429270,20 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x18CD6,
0x18D00,
0x18D09,
+ 0x1AFF0,
+ 0x1AFF4,
+ 0x1AFF5,
+ 0x1AFFC,
+ 0x1AFFD,
+ 0x1AFFF,
0x1B000,
- 0x1B11F,
+ 0x1B123,
+ 0x1B132,
+ 0x1B133,
0x1B150,
0x1B153,
+ 0x1B155,
+ 0x1B156,
0x1B164,
0x1B168,
0x1B170,
@@ -413255,14 +429298,22 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x1BC9A,
0x1BC9C,
0x1BCA4,
+ 0x1CF00,
+ 0x1CF2E,
+ 0x1CF30,
+ 0x1CF47,
+ 0x1CF50,
+ 0x1CFC4,
0x1D000,
0x1D0F6,
0x1D100,
0x1D127,
0x1D129,
- 0x1D1E9,
+ 0x1D1EB,
0x1D200,
0x1D246,
+ 0x1D2C0,
+ 0x1D2D4,
0x1D2E0,
0x1D2F4,
0x1D300,
@@ -413315,6 +429366,10 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x1DAA0,
0x1DAA1,
0x1DAB0,
+ 0x1DF00,
+ 0x1DF1F,
+ 0x1DF25,
+ 0x1DF2B,
0x1E000,
0x1E007,
0x1E008,
@@ -413325,6 +429380,10 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x1E025,
0x1E026,
0x1E02B,
+ 0x1E030,
+ 0x1E06E,
+ 0x1E08F,
+ 0x1E090,
0x1E100,
0x1E12D,
0x1E130,
@@ -413333,10 +429392,22 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x1E14A,
0x1E14E,
0x1E150,
+ 0x1E290,
+ 0x1E2AF,
0x1E2C0,
0x1E2FA,
0x1E2FF,
0x1E300,
+ 0x1E4D0,
+ 0x1E4FA,
+ 0x1E7E0,
+ 0x1E7E7,
+ 0x1E7E8,
+ 0x1E7EC,
+ 0x1E7ED,
+ 0x1E7EF,
+ 0x1E7F0,
+ 0x1E7FF,
0x1E800,
0x1E8C5,
0x1E8C7,
@@ -413445,16 +429516,18 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x1F266,
0x1F300,
0x1F6D8,
- 0x1F6E0,
+ 0x1F6DC,
0x1F6ED,
0x1F6F0,
0x1F6FD,
0x1F700,
- 0x1F774,
- 0x1F780,
- 0x1F7D9,
+ 0x1F777,
+ 0x1F77B,
+ 0x1F7DA,
0x1F7E0,
0x1F7EC,
+ 0x1F7F0,
+ 0x1F7F1,
0x1F800,
0x1F80C,
0x1F810,
@@ -413468,27 +429541,23 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x1F8B0,
0x1F8B2,
0x1F900,
- 0x1F979,
- 0x1F97A,
- 0x1F9CC,
- 0x1F9CD,
0x1FA54,
0x1FA60,
0x1FA6E,
0x1FA70,
- 0x1FA75,
- 0x1FA78,
- 0x1FA7B,
+ 0x1FA7D,
0x1FA80,
- 0x1FA87,
+ 0x1FA89,
0x1FA90,
- 0x1FAA9,
- 0x1FAB0,
- 0x1FAB7,
- 0x1FAC0,
- 0x1FAC3,
- 0x1FAD0,
- 0x1FAD7,
+ 0x1FABE,
+ 0x1FABF,
+ 0x1FAC6,
+ 0x1FACE,
+ 0x1FADC,
+ 0x1FAE0,
+ 0x1FAE9,
+ 0x1FAF0,
+ 0x1FAF9,
0x1FB00,
0x1FB93,
0x1FB94,
@@ -413496,9 +429565,9 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x1FBF0,
0x1FBFA,
0x20000,
- 0x2A6DE,
+ 0x2A6E0,
0x2A700,
- 0x2B735,
+ 0x2B73A,
0x2B740,
0x2B81E,
0x2B820,
@@ -413509,6 +429578,8 @@ static const UV UNI_ZZZZ_invlist[] = { /* for all charsets */
0x2FA1E,
0x30000,
0x3134B,
+ 0x31350,
+ 0x323B0,
0xE0001,
0xE0002,
0xE0020,
@@ -413673,6 +429744,8 @@ typedef enum {
UNI_AGE__12,
UNI_AGE__12_DOT_1,
UNI_AGE__13,
+ UNI_AGE__14,
+ UNI_AGE__15,
UNI_AGE__2,
UNI_AGE__2_DOT_1,
UNI_AGE__3,
@@ -413690,7 +429763,6 @@ typedef enum {
UNI_AGE__7,
UNI_AGE__8,
UNI_AGE__9,
- UNI_AGE__NA,
UNI_AGHB,
UNI_AHOM,
UNI_ALCHEMICAL,
@@ -413702,6 +429774,8 @@ typedef enum {
UNI_ANY,
UNI_ARAB,
UNI_ARABICEXTA,
+ UNI_ARABICEXTB,
+ UNI_ARABICEXTC,
UNI_ARABICMATH,
UNI_ARABICPFA,
UNI_ARABICPFB,
@@ -413838,6 +429912,7 @@ typedef enum {
UNI_CJKEXTE,
UNI_CJKEXTF,
UNI_CJKEXTG,
+ UNI_CJKEXTH,
UNI_CJKRADICALSSUP,
UNI_CJKSTROKES,
UNI_CJKSYMBOLS,
@@ -413849,6 +429924,7 @@ typedef enum {
UNI_COPT,
UNI_COPTICEPACTNUMBERS,
UNI_COUNTINGROD,
+ UNI_CPMN,
UNI_CPRT,
UNI_CUNEIFORMNUMBERS,
UNI_CURRENCYSYMBOLS,
@@ -413862,12 +429938,14 @@ typedef enum {
UNI_CYRILLICEXTA,
UNI_CYRILLICEXTB,
UNI_CYRILLICEXTC,
+ UNI_CYRILLICEXTD,
UNI_CYRILLICSUP,
UNI_CYRL,
UNI_DASH,
UNI_DEP,
UNI_DEVA,
UNI_DEVANAGARIEXT,
+ UNI_DEVANAGARIEXTA,
UNI_DI,
UNI_DIA,
UNI_DIACRITICALS,
@@ -413922,6 +430000,7 @@ typedef enum {
UNI_ETHI,
UNI_ETHIOPICEXT,
UNI_ETHIOPICEXTA,
+ UNI_ETHIOPICEXTB,
UNI_ETHIOPICSUP,
UNI_EXT,
UNI_EXTPICT,
@@ -414009,6 +430088,7 @@ typedef enum {
UNI_INCHORASMIAN,
UNI_INCOPTIC,
UNI_INCUNEIFORM,
+ UNI_INCYPROMINOAN,
UNI_INCYRILLIC,
UNI_INDEVANAGARI,
UNI_INDICNUMBERFORMS,
@@ -414042,6 +430122,7 @@ typedef enum {
UNI_INKAITHI,
UNI_INKANNADA,
UNI_INKATAKANA,
+ UNI_INKAWI,
UNI_INKHAROSHTHI,
UNI_INKHITANSMALLSCRIPT,
UNI_INKHMER,
@@ -414072,6 +430153,7 @@ typedef enum {
UNI_INMULTANI,
UNI_INMYANMAR,
UNI_INNABATAEAN,
+ UNI_INNAGMUNDARI,
UNI_INNANDINAGARI,
UNI_INNEWA,
UNI_INNEWTAILUE,
@@ -414085,6 +430167,7 @@ typedef enum {
UNI_INOLDPERSIAN,
UNI_INOLDSOGDIAN,
UNI_INOLDTURKIC,
+ UNI_INOLDUYGHUR,
UNI_INORIYA,
UNI_INOSAGE,
UNI_INOSMANYA,
@@ -414163,6 +430246,7 @@ typedef enum {
UNI_INTAIVIET,
UNI_INTAKRI,
UNI_INTAMIL,
+ UNI_INTANGSA,
UNI_INTANGUT,
UNI_INTELUGU,
UNI_INTHAANA,
@@ -414170,8 +430254,10 @@ typedef enum {
UNI_INTIBETAN,
UNI_INTIFINAGH,
UNI_INTIRHUTA,
+ UNI_INTOTO,
UNI_INUGARITIC,
UNI_INVAI,
+ UNI_INVITHKUQI,
UNI_INVS,
UNI_INWANCHO,
UNI_INWARANGCITI,
@@ -414182,6 +430268,8 @@ typedef enum {
UNI_IN__12,
UNI_IN__12_DOT_1,
UNI_IN__13,
+ UNI_IN__14,
+ UNI_IN__15,
UNI_IN__1_DOT_1,
UNI_IN__2,
UNI_IN__2_DOT_1,
@@ -414200,6 +430288,7 @@ typedef enum {
UNI_IN__7,
UNI_IN__8,
UNI_IN__9,
+ UNI_IN__NA,
UNI_IPAEXT,
UNI_ITAL,
UNI_JAMO,
@@ -414300,6 +430389,8 @@ typedef enum {
UNI_JG__TAW,
UNI_JG__TEHMARBUTA,
UNI_JG__TETH,
+ UNI_JG__THINYEH,
+ UNI_JG__VERTICALTAIL,
UNI_JG__WAW,
UNI_JG__YEH,
UNI_JG__YEHBARREE,
@@ -414315,13 +430406,16 @@ typedef enum {
UNI_JT__R,
UNI_JT__T,
UNI_JT__U,
+ UNI_KAKTOVIKNUMERALS,
UNI_KALI,
UNI_KANA,
UNI_KANAEXTA,
+ UNI_KANAEXTB,
UNI_KANASUP,
UNI_KANBUN,
UNI_KANGXI,
UNI_KATAKANAEXT,
+ UNI_KAWI,
UNI_KHAR,
UNI_KHMERSYMBOLS,
UNI_KHMR,
@@ -414339,6 +430433,8 @@ typedef enum {
UNI_LATINEXTC,
UNI_LATINEXTD,
UNI_LATINEXTE,
+ UNI_LATINEXTF,
+ UNI_LATINEXTG,
UNI_LATN,
UNI_LB__AI,
UNI_LB__AL,
@@ -414433,6 +430529,7 @@ typedef enum {
UNI_MYANMAREXTB,
UNI_MYMR,
UNI_N,
+ UNI_NAGM,
UNI_NAND,
UNI_NARB,
UNI_NB,
@@ -414603,6 +430700,7 @@ typedef enum {
UNI_OSGE,
UNI_OSMA,
UNI_OTTOMANSIYAQNUMBERS,
+ UNI_OUGR,
UNI_P,
UNI_PALM,
UNI_PATSYN,
@@ -414673,6 +430771,7 @@ typedef enum {
UNI_SC__BUHD,
UNI_SC__CAKM,
UNI_SC__COPT,
+ UNI_SC__CPMN,
UNI_SC__CPRT,
UNI_SC__CYRL,
UNI_SC__DEVA,
@@ -414709,7 +430808,9 @@ typedef enum {
UNI_SC__MULT,
UNI_SC__MYMR,
UNI_SC__NAND,
+ UNI_SC__NKO,
UNI_SC__ORYA,
+ UNI_SC__OUGR,
UNI_SC__PERM,
UNI_SC__PHAG,
UNI_SC__PHLP,
@@ -414790,9 +430891,12 @@ typedef enum {
UNI_TIBT,
UNI_TIRH,
UNI_TITLE,
+ UNI_TNSA,
+ UNI_TOTO,
UNI_TRANSPORTANDMAP,
UNI_UCAS,
UNI_UCASEXT,
+ UNI_UCASEXTA,
UNI_UGAR,
UNI_UIDEO,
UNI_UPPERCASELETTER,
@@ -414800,6 +430904,7 @@ typedef enum {
UNI_VEDICEXT,
UNI_VERTICALFORMS,
UNI_VERTSPACE,
+ UNI_VITH,
UNI_VO__R,
UNI_VO__TR,
UNI_VO__TU,
@@ -414848,6 +430953,7 @@ typedef enum {
UNI_Z,
UNI_ZANB,
UNI_ZL,
+ UNI_ZNAMENNYMUSIC,
UNI_ZP,
UNI_ZS,
UNI_ZYYY,
@@ -414882,6 +430988,8 @@ static const UV * const uni_prop_ptrs[] = {
UNI_AGE__12_invlist,
UNI_AGE__12_DOT_1_invlist,
UNI_AGE__13_invlist,
+ UNI_AGE__14_invlist,
+ UNI_AGE__15_invlist,
UNI_AGE__2_invlist,
UNI_AGE__2_DOT_1_invlist,
UNI_AGE__3_invlist,
@@ -414899,7 +431007,6 @@ static const UV * const uni_prop_ptrs[] = {
UNI_AGE__7_invlist,
UNI_AGE__8_invlist,
UNI_AGE__9_invlist,
- UNI_AGE__NA_invlist,
UNI_AGHB_invlist,
UNI_AHOM_invlist,
UNI_ALCHEMICAL_invlist,
@@ -414911,6 +431018,8 @@ static const UV * const uni_prop_ptrs[] = {
UNI_ANY_invlist,
UNI_ARAB_invlist,
UNI_ARABICEXTA_invlist,
+ UNI_ARABICEXTB_invlist,
+ UNI_ARABICEXTC_invlist,
UNI_ARABICMATH_invlist,
UNI_ARABICPFA_invlist,
UNI_ARABICPFB_invlist,
@@ -415047,6 +431156,7 @@ static const UV * const uni_prop_ptrs[] = {
UNI_CJKEXTE_invlist,
UNI_CJKEXTF_invlist,
UNI_CJKEXTG_invlist,
+ UNI_CJKEXTH_invlist,
UNI_CJKRADICALSSUP_invlist,
UNI_CJKSTROKES_invlist,
UNI_CJKSYMBOLS_invlist,
@@ -415058,6 +431168,7 @@ static const UV * const uni_prop_ptrs[] = {
UNI_COPT_invlist,
UNI_COPTICEPACTNUMBERS_invlist,
UNI_COUNTINGROD_invlist,
+ UNI_CPMN_invlist,
UNI_CPRT_invlist,
UNI_CUNEIFORMNUMBERS_invlist,
UNI_CURRENCYSYMBOLS_invlist,
@@ -415071,12 +431182,14 @@ static const UV * const uni_prop_ptrs[] = {
UNI_CYRILLICEXTA_invlist,
UNI_CYRILLICEXTB_invlist,
UNI_CYRILLICEXTC_invlist,
+ UNI_CYRILLICEXTD_invlist,
UNI_CYRILLICSUP_invlist,
UNI_CYRL_invlist,
UNI_DASH_invlist,
UNI_DEP_invlist,
UNI_DEVA_invlist,
UNI_DEVANAGARIEXT_invlist,
+ UNI_DEVANAGARIEXTA_invlist,
UNI_DI_invlist,
UNI_DIA_invlist,
UNI_DIACRITICALS_invlist,
@@ -415131,6 +431244,7 @@ static const UV * const uni_prop_ptrs[] = {
UNI_ETHI_invlist,
UNI_ETHIOPICEXT_invlist,
UNI_ETHIOPICEXTA_invlist,
+ UNI_ETHIOPICEXTB_invlist,
UNI_ETHIOPICSUP_invlist,
UNI_EXT_invlist,
UNI_EXTPICT_invlist,
@@ -415218,6 +431332,7 @@ static const UV * const uni_prop_ptrs[] = {
UNI_INCHORASMIAN_invlist,
UNI_INCOPTIC_invlist,
UNI_INCUNEIFORM_invlist,
+ UNI_INCYPROMINOAN_invlist,
UNI_INCYRILLIC_invlist,
UNI_INDEVANAGARI_invlist,
UNI_INDICNUMBERFORMS_invlist,
@@ -415251,6 +431366,7 @@ static const UV * const uni_prop_ptrs[] = {
UNI_INKAITHI_invlist,
UNI_INKANNADA_invlist,
UNI_INKATAKANA_invlist,
+ UNI_INKAWI_invlist,
UNI_INKHAROSHTHI_invlist,
UNI_INKHITANSMALLSCRIPT_invlist,
UNI_INKHMER_invlist,
@@ -415281,6 +431397,7 @@ static const UV * const uni_prop_ptrs[] = {
UNI_INMULTANI_invlist,
UNI_INMYANMAR_invlist,
UNI_INNABATAEAN_invlist,
+ UNI_INNAGMUNDARI_invlist,
UNI_INNANDINAGARI_invlist,
UNI_INNEWA_invlist,
UNI_INNEWTAILUE_invlist,
@@ -415294,6 +431411,7 @@ static const UV * const uni_prop_ptrs[] = {
UNI_INOLDPERSIAN_invlist,
UNI_INOLDSOGDIAN_invlist,
UNI_INOLDTURKIC_invlist,
+ UNI_INOLDUYGHUR_invlist,
UNI_INORIYA_invlist,
UNI_INOSAGE_invlist,
UNI_INOSMANYA_invlist,
@@ -415372,6 +431490,7 @@ static const UV * const uni_prop_ptrs[] = {
UNI_INTAIVIET_invlist,
UNI_INTAKRI_invlist,
UNI_INTAMIL_invlist,
+ UNI_INTANGSA_invlist,
UNI_INTANGUT_invlist,
UNI_INTELUGU_invlist,
UNI_INTHAANA_invlist,
@@ -415379,8 +431498,10 @@ static const UV * const uni_prop_ptrs[] = {
UNI_INTIBETAN_invlist,
UNI_INTIFINAGH_invlist,
UNI_INTIRHUTA_invlist,
+ UNI_INTOTO_invlist,
UNI_INUGARITIC_invlist,
UNI_INVAI_invlist,
+ UNI_INVITHKUQI_invlist,
UNI_INVS_invlist,
UNI_INWANCHO_invlist,
UNI_INWARANGCITI_invlist,
@@ -415391,6 +431512,8 @@ static const UV * const uni_prop_ptrs[] = {
UNI_IN__12_invlist,
UNI_IN__12_DOT_1_invlist,
UNI_IN__13_invlist,
+ UNI_IN__14_invlist,
+ UNI_IN__15_invlist,
UNI_IN__1_DOT_1_invlist,
UNI_IN__2_invlist,
UNI_IN__2_DOT_1_invlist,
@@ -415409,6 +431532,7 @@ static const UV * const uni_prop_ptrs[] = {
UNI_IN__7_invlist,
UNI_IN__8_invlist,
UNI_IN__9_invlist,
+ UNI_IN__NA_invlist,
UNI_IPAEXT_invlist,
UNI_ITAL_invlist,
UNI_JAMO_invlist,
@@ -415509,6 +431633,8 @@ static const UV * const uni_prop_ptrs[] = {
UNI_JG__TAW_invlist,
UNI_JG__TEHMARBUTA_invlist,
UNI_JG__TETH_invlist,
+ UNI_JG__THINYEH_invlist,
+ UNI_JG__VERTICALTAIL_invlist,
UNI_JG__WAW_invlist,
UNI_JG__YEH_invlist,
UNI_JG__YEHBARREE_invlist,
@@ -415524,13 +431650,16 @@ static const UV * const uni_prop_ptrs[] = {
UNI_JT__R_invlist,
UNI_JT__T_invlist,
UNI_JT__U_invlist,
+ UNI_KAKTOVIKNUMERALS_invlist,
UNI_KALI_invlist,
UNI_KANA_invlist,
UNI_KANAEXTA_invlist,
+ UNI_KANAEXTB_invlist,
UNI_KANASUP_invlist,
UNI_KANBUN_invlist,
UNI_KANGXI_invlist,
UNI_KATAKANAEXT_invlist,
+ UNI_KAWI_invlist,
UNI_KHAR_invlist,
UNI_KHMERSYMBOLS_invlist,
UNI_KHMR_invlist,
@@ -415548,6 +431677,8 @@ static const UV * const uni_prop_ptrs[] = {
UNI_LATINEXTC_invlist,
UNI_LATINEXTD_invlist,
UNI_LATINEXTE_invlist,
+ UNI_LATINEXTF_invlist,
+ UNI_LATINEXTG_invlist,
UNI_LATN_invlist,
UNI_LB__AI_invlist,
UNI_LB__AL_invlist,
@@ -415642,6 +431773,7 @@ static const UV * const uni_prop_ptrs[] = {
UNI_MYANMAREXTB_invlist,
UNI_MYMR_invlist,
UNI_N_invlist,
+ UNI_NAGM_invlist,
UNI_NAND_invlist,
UNI_NARB_invlist,
UNI_NB_invlist,
@@ -415812,6 +431944,7 @@ static const UV * const uni_prop_ptrs[] = {
UNI_OSGE_invlist,
UNI_OSMA_invlist,
UNI_OTTOMANSIYAQNUMBERS_invlist,
+ UNI_OUGR_invlist,
UNI_P_invlist,
UNI_PALM_invlist,
UNI_PATSYN_invlist,
@@ -415882,6 +432015,7 @@ static const UV * const uni_prop_ptrs[] = {
UNI_SC__BUHD_invlist,
UNI_SC__CAKM_invlist,
UNI_SC__COPT_invlist,
+ UNI_SC__CPMN_invlist,
UNI_SC__CPRT_invlist,
UNI_SC__CYRL_invlist,
UNI_SC__DEVA_invlist,
@@ -415918,7 +432052,9 @@ static const UV * const uni_prop_ptrs[] = {
UNI_SC__MULT_invlist,
UNI_SC__MYMR_invlist,
UNI_SC__NAND_invlist,
+ UNI_SC__NKO_invlist,
UNI_SC__ORYA_invlist,
+ UNI_SC__OUGR_invlist,
UNI_SC__PERM_invlist,
UNI_SC__PHAG_invlist,
UNI_SC__PHLP_invlist,
@@ -415999,9 +432135,12 @@ static const UV * const uni_prop_ptrs[] = {
UNI_TIBT_invlist,
UNI_TIRH_invlist,
UNI_TITLE_invlist,
+ UNI_TNSA_invlist,
+ UNI_TOTO_invlist,
UNI_TRANSPORTANDMAP_invlist,
UNI_UCAS_invlist,
UNI_UCASEXT_invlist,
+ UNI_UCASEXTA_invlist,
UNI_UGAR_invlist,
UNI_UIDEO_invlist,
UNI_UPPERCASELETTER_invlist,
@@ -416009,6 +432148,7 @@ static const UV * const uni_prop_ptrs[] = {
UNI_VEDICEXT_invlist,
UNI_VERTICALFORMS_invlist,
UNI_VERTSPACE_invlist,
+ UNI_VITH_invlist,
UNI_VO__R_invlist,
UNI_VO__TR_invlist,
UNI_VO__TU_invlist,
@@ -416057,6 +432197,7 @@ static const UV * const uni_prop_ptrs[] = {
UNI_Z_invlist,
UNI_ZANB_invlist,
UNI_ZL_invlist,
+ UNI_ZNAMENNYMUSIC_invlist,
UNI_ZP_invlist,
UNI_ZS_invlist,
UNI_ZYYY_invlist,
@@ -416151,6 +432292,8 @@ static const char * const UNI_age_values[] = {
"12.0",
"12.1",
"13.0",
+ "14.0",
+ "15.0",
"NA",
"na",
"Unassigned",
@@ -416160,6 +432303,8 @@ static const char * const UNI_age_values[] = {
"V12_0",
"V12_1",
"V13_0",
+ "V14_0",
+ "V15_0",
"V1_1",
"V2_0",
"V2_1",
@@ -416184,6 +432329,8 @@ static const char * const UNI_age_values[] = {
"v120",
"v121",
"v130",
+ "v140",
+ "v150",
"v20",
"v21",
"v30",
@@ -416356,9 +432503,19 @@ static const char * const UNI_blk_values[] = {
"arabic",
"Arabic_Ext_A",
"arabicexta",
+ "Arabic_Ext_B",
+ "arabicextb",
+ "Arabic_Ext_C",
+ "arabicextc",
"Arabic Extended-A",
"Arabic_Extended_A",
"arabicextendeda",
+ "Arabic Extended-B",
+ "Arabic_Extended_B",
+ "arabicextendedb",
+ "Arabic Extended-C",
+ "Arabic_Extended_C",
+ "arabicextendedc",
"Arabic_Math",
"arabicmath",
"Arabic Mathematical Alphabetic Symbols",
@@ -416496,6 +432653,8 @@ static const char * const UNI_blk_values[] = {
"cjkextf",
"CJK_Ext_G",
"cjkextg",
+ "CJK_Ext_H",
+ "cjkexth",
"CJK_Radicals_Sup",
"cjkradicalssup",
"CJK Radicals Supplement",
@@ -416533,6 +432692,9 @@ static const char * const UNI_blk_values[] = {
"CJK Unified Ideographs Extension G",
"CJK_Unified_Ideographs_Extension_G",
"cjkunifiedideographsextensiong",
+ "CJK Unified Ideographs Extension H",
+ "CJK_Unified_Ideographs_Extension_H",
+ "cjkunifiedideographsextensionh",
"Combining Diacritical Marks",
"Combining_Diacritical_Marks",
"combiningdiacriticalmarks",
@@ -416581,6 +432743,9 @@ static const char * const UNI_blk_values[] = {
"Cypriot Syllabary",
"Cypriot_Syllabary",
"cypriotsyllabary",
+ "Cypro-Minoan",
+ "Cypro_Minoan",
+ "cyprominoan",
"Cyrillic",
"cyrillic",
"Cyrillic_Ext_A",
@@ -416589,6 +432754,8 @@ static const char * const UNI_blk_values[] = {
"cyrillicextb",
"Cyrillic_Ext_C",
"cyrillicextc",
+ "Cyrillic_Ext_D",
+ "cyrillicextd",
"Cyrillic Extended-A",
"Cyrillic_Extended_A",
"cyrillicextendeda",
@@ -416598,6 +432765,9 @@ static const char * const UNI_blk_values[] = {
"Cyrillic Extended-C",
"Cyrillic_Extended_C",
"cyrillicextendedc",
+ "Cyrillic Extended-D",
+ "Cyrillic_Extended_D",
+ "cyrillicextendedd",
"Cyrillic_Sup",
"cyrillicsup",
"Cyrillic Supplement",
@@ -416611,9 +432781,14 @@ static const char * const UNI_blk_values[] = {
"devanagari",
"Devanagari_Ext",
"devanagariext",
+ "Devanagari_Ext_A",
+ "devanagariexta",
"Devanagari Extended",
"Devanagari_Extended",
"devanagariextended",
+ "Devanagari Extended-A",
+ "Devanagari_Extended_A",
+ "devanagariextendeda",
"Diacriticals",
"diacriticals",
"Diacriticals_Ext",
@@ -416677,12 +432852,17 @@ static const char * const UNI_blk_values[] = {
"ethiopicext",
"Ethiopic_Ext_A",
"ethiopicexta",
+ "Ethiopic_Ext_B",
+ "ethiopicextb",
"Ethiopic Extended",
"Ethiopic_Extended",
"ethiopicextended",
"Ethiopic Extended-A",
"Ethiopic_Extended_A",
"ethiopicextendeda",
+ "Ethiopic Extended-B",
+ "Ethiopic_Extended_B",
+ "ethiopicextendedb",
"Ethiopic_Sup",
"ethiopicsup",
"Ethiopic Supplement",
@@ -416821,11 +433001,19 @@ static const char * const UNI_blk_values[] = {
"javanese",
"Kaithi",
"kaithi",
+ "Kaktovik Numerals",
+ "Kaktovik_Numerals",
+ "kaktoviknumerals",
"Kana_Ext_A",
"kanaexta",
+ "Kana_Ext_B",
+ "kanaextb",
"Kana Extended-A",
"Kana_Extended_A",
"kanaextendeda",
+ "Kana Extended-B",
+ "Kana_Extended_B",
+ "kanaextendedb",
"Kana_Sup",
"kanasup",
"Kana Supplement",
@@ -416847,6 +433035,8 @@ static const char * const UNI_blk_values[] = {
"Katakana Phonetic Extensions",
"Katakana_Phonetic_Extensions",
"katakanaphoneticextensions",
+ "Kawi",
+ "kawi",
"Kayah Li",
"Kayah_Li",
"kayahli",
@@ -416898,6 +433088,16 @@ static const char * const UNI_blk_values[] = {
"Latin Extended-E",
"Latin_Extended_E",
"latinextendede",
+ "Latin Extended-F",
+ "Latin_Extended_F",
+ "latinextendedf",
+ "Latin Extended-G",
+ "Latin_Extended_G",
+ "latinextendedg",
+ "Latin_Ext_F",
+ "latinextf",
+ "Latin_Ext_G",
+ "latinextg",
"Latin_1_Sup",
"latin1sup",
"Latin-1 Supplement",
@@ -417054,6 +433254,9 @@ static const char * const UNI_blk_values[] = {
"myanmarextendedb",
"Nabataean",
"nabataean",
+ "Nag Mundari",
+ "Nag_Mundari",
+ "nagmundari",
"Nandinagari",
"nandinagari",
"NB",
@@ -417106,6 +433309,9 @@ static const char * const UNI_blk_values[] = {
"Old Turkic",
"Old_Turkic",
"oldturkic",
+ "Old Uyghur",
+ "Old_Uyghur",
+ "olduyghur",
"Optical Character Recognition",
"Optical_Character_Recognition",
"opticalcharacterrecognition",
@@ -417315,6 +433521,8 @@ static const char * const UNI_blk_values[] = {
"Tamil Supplement",
"Tamil_Supplement",
"tamilsupplement",
+ "Tangsa",
+ "tangsa",
"Tangut",
"tangut",
"Tangut Components",
@@ -417337,6 +433545,8 @@ static const char * const UNI_blk_values[] = {
"tifinagh",
"Tirhuta",
"tirhuta",
+ "Toto",
+ "toto",
"Transport_And_Map",
"transportandmap",
"Transport and Map Symbols",
@@ -417346,6 +433556,8 @@ static const char * const UNI_blk_values[] = {
"ucas",
"UCAS_Ext",
"ucasext",
+ "UCAS_Ext_A",
+ "ucasexta",
"Ugaritic",
"ugaritic",
"Unified Canadian Aboriginal Syllabics",
@@ -417354,6 +433566,9 @@ static const char * const UNI_blk_values[] = {
"Unified Canadian Aboriginal Syllabics Extended",
"Unified_Canadian_Aboriginal_Syllabics_Extended",
"unifiedcanadianaboriginalsyllabicsextended",
+ "Unified Canadian Aboriginal Syllabics Extended-A",
+ "Unified_Canadian_Aboriginal_Syllabics_Extended_A",
+ "unifiedcanadianaboriginalsyllabicsextendeda",
"Vai",
"vai",
"Variation Selectors",
@@ -417370,6 +433585,8 @@ static const char * const UNI_blk_values[] = {
"Vertical Forms",
"Vertical_Forms",
"verticalforms",
+ "Vithkuqi",
+ "vithkuqi",
"VS",
"vs",
"VS_Sup",
@@ -417395,6 +433612,11 @@ static const char * const UNI_blk_values[] = {
"Zanabazar Square",
"Zanabazar_Square",
"zanabazarsquare",
+ "Znamenny_Music",
+ "znamennymusic",
+ "Znamenny Musical Notation",
+ "Znamenny_Musical_Notation",
+ "znamennymusicalnotation",
NULL
};
@@ -418019,79 +434241,6 @@ static const char * const UNI_identifiertype_values[] = {
NULL
};
-static const char * const UNI_in_values[] = {
- "1.1",
- "2.0",
- "2.1",
- "3.0",
- "3.1",
- "3.2",
- "4.0",
- "4.1",
- "5.0",
- "5.1",
- "5.2",
- "6.0",
- "6.1",
- "6.2",
- "6.3",
- "7.0",
- "8.0",
- "9.0",
- "10.0",
- "11.0",
- "12.0",
- "12.1",
- "13.0",
- "Unassigned",
- "unassigned",
- "V10_0",
- "V11_0",
- "V12_0",
- "V12_1",
- "V13_0",
- "V2_0",
- "V2_1",
- "V3_0",
- "V3_1",
- "V3_2",
- "V4_0",
- "V4_1",
- "V5_0",
- "V5_1",
- "V5_2",
- "V6_0",
- "V6_1",
- "V6_2",
- "V6_3",
- "V7_0",
- "V8_0",
- "V9_0",
- "v100",
- "v110",
- "v120",
- "v121",
- "v130",
- "v20",
- "v21",
- "v30",
- "v31",
- "v32",
- "v40",
- "v41",
- "v50",
- "v51",
- "v52",
- "v60",
- "v61",
- "v62",
- "v63",
- "v70",
- "v80",
- "v90",
- NULL
-};
-
static const char * const UNI_inpc_values[] = {
"Bottom",
"bottom",
@@ -418395,6 +434544,10 @@ static const char * const UNI_jg_values[] = {
"tehmarbutagoal",
"Teth",
"teth",
+ "Thin_Yeh",
+ "thinyeh",
+ "Vertical_Tail",
+ "verticaltail",
"Waw",
"waw",
"Yeh",
@@ -418960,12 +435113,16 @@ static const char * const UNI_sc_values[] = {
"copt",
"Coptic",
"coptic",
+ "Cpmn",
+ "cpmn",
"Cprt",
"cprt",
"Cuneiform",
"cuneiform",
"Cypriot",
"cypriot",
+ "Cypro_Minoan",
+ "cyprominoan",
"Cyrillic",
"cyrillic",
"Cyrl",
@@ -419098,6 +435255,8 @@ static const char * const UNI_sc_values[] = {
"kannada",
"Katakana",
"katakana",
+ "Kawi",
+ "kawi",
"Kayah_Li",
"kayahli",
"Khar",
@@ -419226,6 +435385,10 @@ static const char * const UNI_sc_values[] = {
"mymr",
"Nabataean",
"nabataean",
+ "Nagm",
+ "nagm",
+ "Nag_Mundari",
+ "nagmundari",
"Nand",
"nand",
"Nandinagari",
@@ -419272,6 +435435,8 @@ static const char * const UNI_sc_values[] = {
"oldsoutharabian",
"Old_Turkic",
"oldturkic",
+ "Old_Uyghur",
+ "olduyghur",
"Oriya",
"oriya",
"Orkh",
@@ -419286,6 +435451,8 @@ static const char * const UNI_sc_values[] = {
"osma",
"Osmanya",
"osmanya",
+ "Ougr",
+ "ougr",
"Pahawh_Hmong",
"pahawhhmong",
"Palm",
@@ -419414,6 +435581,8 @@ static const char * const UNI_sc_values[] = {
"taml",
"Tang",
"tang",
+ "Tangsa",
+ "tangsa",
"Tangut",
"tangut",
"Tavt",
@@ -419442,6 +435611,10 @@ static const char * const UNI_sc_values[] = {
"tirh",
"Tirhuta",
"tirhuta",
+ "Tnsa",
+ "tnsa",
+ "Toto",
+ "toto",
"Ugar",
"ugar",
"Ugaritic",
@@ -419452,6 +435625,10 @@ static const char * const UNI_sc_values[] = {
"vai",
"Vaii",
"vaii",
+ "Vith",
+ "vith",
+ "Vithkuqi",
+ "vithkuqi",
"Wancho",
"wancho",
"Wara",
@@ -419606,7 +435783,6 @@ UNI_gcb_values,
UNI_hst_values,
UNI_identifierstatus_values,
UNI_identifiertype_values,
-UNI_in_values,
UNI_inpc_values,
UNI_insc_values,
UNI_jg_values,
@@ -419669,40 +435845,40 @@ UNI_wb_values
#define UNI_ids_values_index UNI_ahex_values_index
#define UNI_idsb_values_index UNI_ahex_values_index
#define UNI_idst_values_index UNI_ahex_values_index
-#define UNI_in_values_index 14
-#define UNI_inpc_values_index 15
-#define UNI_insc_values_index 16
-#define UNI_jg_values_index 17
+#define UNI_in_values_index UNI_age_values_index
+#define UNI_inpc_values_index 14
+#define UNI_insc_values_index 15
+#define UNI_jg_values_index 16
#define UNI_joinc_values_index UNI_ahex_values_index
-#define UNI_jt_values_index 18
-#define UNI_lb_values_index 19
+#define UNI_jt_values_index 17
+#define UNI_lb_values_index 18
#define UNI_loe_values_index UNI_ahex_values_index
#define UNI_lower_values_index UNI_ahex_values_index
#define UNI_math_values_index UNI_ahex_values_index
#define UNI_nchar_values_index UNI_ahex_values_index
-#define UNI_nfcqc_values_index 20
-#define UNI_nfdqc_values_index 21
+#define UNI_nfcqc_values_index 19
+#define UNI_nfdqc_values_index 20
#define UNI_nfkcqc_values_index UNI_nfcqc_values_index
#define UNI_nfkdqc_values_index UNI_nfdqc_values_index
-#define UNI_nt_values_index 22
-#define UNI_nv_values_index 23
+#define UNI_nt_values_index 21
+#define UNI_nv_values_index 22
#define UNI_patsyn_values_index UNI_ahex_values_index
#define UNI_patws_values_index UNI_ahex_values_index
#define UNI_pcm_values_index UNI_ahex_values_index
#define UNI_qmark_values_index UNI_ahex_values_index
#define UNI_radical_values_index UNI_ahex_values_index
#define UNI_ri_values_index UNI_ahex_values_index
-#define UNI_sb_values_index 24
-#define UNI_sc_values_index 25
+#define UNI_sb_values_index 23
+#define UNI_sc_values_index 24
#define UNI_scx_values_index UNI_sc_values_index
#define UNI_sd_values_index UNI_ahex_values_index
#define UNI_sterm_values_index UNI_ahex_values_index
#define UNI_term_values_index UNI_ahex_values_index
#define UNI_uideo_values_index UNI_ahex_values_index
#define UNI_upper_values_index UNI_ahex_values_index
-#define UNI_vo_values_index 26
+#define UNI_vo_values_index 25
#define UNI_vs_values_index UNI_ahex_values_index
-#define UNI_wb_values_index 27
+#define UNI_wb_values_index 26
#define UNI_wspace_values_index UNI_ahex_values_index
#define UNI_xidc_values_index UNI_ahex_values_index
#define UNI_xids_values_index UNI_ahex_values_index
@@ -419752,51 +435928,52 @@ static const U8 GCB_table[17][17] = {
#define LB_RI_then_RI 15
#define LB_various_then_PO_or_PR 32
-static const U8 LB_table[41][41] = {
- /* 'EAO' stands for 'East_Asian_OP'; 'edg' stands for 'EDGE'; u stands for 'unused in this Unicode release (and the data in its row and
- * column are garbage) */
-/* AL B2 BA BB BK CB CL CM CP CR EAO EB edg EM EX GL H2 H3 HL HY ID IN IS JL JT JV LF NL NS NU OP PO PR QU RI SP SY WJ ZW ZWJ u */
-/* AL */ { 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* B2 */ { 1, 2, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* BA */ {14,14, 0,14, 0, 1, 2, 0, 2, 0, 14,14, 1,14, 2,14,14,14,14, 0,14,13, 2,14,14,14, 0, 0, 0,14,14,14,14, 0,14, 0, 2, 0, 0, 0, 2 },
-/* BB */ { 0, 0, 0, 0, 0, 1, 2, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2 },
-/* BK */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-/* CB */ { 1, 1, 1, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* CL */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 2, 1, 1,33,33, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* CM */ { 3, 3, 3, 3, 0, 3, 3, 0, 3, 0, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 0, 3, 3 },
-/* CP */ { 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 2, 1, 1, 1, 0, 0, 2, 0, 1,33,33, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* CR */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-/* EAO*/ { 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2 },
-/* EB */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 0, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* edg*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
-/* EM */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* EX */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* GL */ { 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2 },
-/* H2 */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* H3 */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* HL */ { 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* HY */ {14,14, 0,14, 0, 1, 2, 0, 2, 0, 14,14, 1,14, 2,14,14,14,14, 0,14,13, 2,14,14,14, 0, 0, 0,13,14,14,14, 0,14, 0, 2, 0, 0, 0, 2 },
-/* ID */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* IN */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* IS */ { 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0,12, 1,33,33, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* JL */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 0, 0, 1, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* JT */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* JV */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* LF */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-/* NL */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
-/* NS */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* NU */ { 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 },
-/* OP */ { 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 0, 2, 2 },
-/* PO */ { 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* PR */ { 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, 10, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* QU */ { 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2 },
-/* RI */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,15, 0, 2, 0, 0, 0, 2 },
-/* SP */ { 7, 7, 7, 7, 0, 7, 8, 7, 8, 0, 7, 7, 1, 7, 8, 7, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 0, 8, 8, 0, 7, 8 },
-/* SY */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0,12, 1,33,33, 0, 1, 0, 2, 0, 0, 0, 2 },
-/* WJ */ { 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2 },
-/* ZW */ { 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1 },
-/* ZWJ*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
-/* u */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 2, 1, 1,33,33, 0, 1, 0, 2, 0, 0, 0, 2 }
+static const U8 LB_table[42][42] = {
+ /* 'EAO' stands for 'East_Asian_OP'; 'edg' stands for 'EDGE'; 'UEP' stands for 'Unassigned_Extended_Pictographic_Ideographic'; u stands for
+ * 'unused in this Unicode release (and the data in its row and column are garbage) */
+/* AL B2 BA BB BK CB CL CM CP CR EAO EB edg EM EX GL H2 H3 HL HY ID IN IS JL JT JV LF NL NS NU OP PO PR QU RI SP SY UEP WJ ZW ZWJ u */
+/* AL */ { 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* B2 */ { 1, 2, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* BA */ {14,14, 0,14, 0, 1, 2, 0, 2, 0, 14,14, 1,14, 2,14,14,14,14, 0,14,13, 2,14,14,14, 0, 0, 0,14,14,14,14, 0,14, 0, 2, 14, 0, 0, 0, 2 },
+/* BB */ { 0, 0, 0, 0, 0, 1, 2, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2 },
+/* BK */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
+/* CB */ { 1, 1, 1, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* CL */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 2, 1, 1,33,33, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* CM */ { 3, 3, 3, 3, 0, 3, 3, 0, 3, 0, 3, 3, 1, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 0, 3, 3 },
+/* CP */ { 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 2, 1, 1, 1, 0, 0, 2, 0, 1,33,33, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* CR */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
+/* EAO*/ { 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2 },
+/* EB */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 0, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* edg*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+/* EM */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* EX */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* GL */ { 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2 },
+/* H2 */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* H3 */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* HL */ { 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* HY */ {14,14, 0,14, 0, 1, 2, 0, 2, 0, 14,14, 1,14, 2,14,14,14,14, 0,14,13, 2,14,14,14, 0, 0, 0,13,14,14,14, 0,14, 0, 2, 14, 0, 0, 0, 2 },
+/* ID */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* IN */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* IS */ { 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0,12, 1,33,33, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* JL */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 0, 0, 1, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* JT */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* JV */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* LF */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
+/* NL */ { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
+/* NS */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* NU */ { 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0 },
+/* OP */ { 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 0, 2, 2 },
+/* PO */ { 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* PR */ { 0, 1, 0, 1, 0, 1, 2, 0, 2, 0, 10, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0,10, 1, 1, 0, 1, 0, 2, 0, 0, 0, 0, 2 },
+/* QU */ { 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2 },
+/* RI */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,15, 0, 2, 1, 0, 0, 0, 2 },
+/* SP */ { 7, 7, 7, 7, 0, 7, 8, 7, 8, 0, 7, 7, 1, 7, 8, 7, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 0, 0, 7, 7, 7, 7, 7, 7, 7, 0, 8, 7, 8, 0, 7, 8 },
+/* SY */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 0, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0,12, 1,33,33, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* UEP*/ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 0, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 2, 1, 0, 0, 0, 2 },
+/* WJ */ { 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2 },
+/* ZW */ { 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1 },
+/* ZWJ*/ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+/* u */ { 1, 1, 0, 1, 0, 1, 2, 0, 2, 0, 1, 1, 1, 1, 2, 0, 1, 1, 1, 0, 1, 0, 2, 1, 1, 1, 0, 0, 2, 1, 1,33,33, 0, 1, 0, 2, 1, 0, 0, 0, 2 }
};
#define WB_NOBREAK 0
@@ -419852,57 +436029,58 @@ static const U8 WB_table[23][23] = {
#define MAX_FOLD_FROMS 3
/* Generated from:
- * d60b1a3dffe16c4aaaf3f00d21993bb320d05e9828b106182214764d4c69935c lib/Unicode/UCD.pm
- * ce96627d4fc91b4fd886c409caeb9b76cf7bd345e12f05c6701add7f233f6437 lib/unicore/ArabicShaping.txt
- * 0e69eef3da722cc104522d8372e86d5b86bb7afcc761b0c991e39e832294946d lib/unicore/BidiBrackets.txt
- * a00d9d21585106a52113fb7b1d3d0373a5835be72e76862fb559ebddd474d70e lib/unicore/BidiMirroring.txt
- * 81a82b6a9fcf1a9c12f588d7a1decd73a9afdc4cac95b0eb7e576e7942d6c19f lib/unicore/Blocks.txt
- * 99d231d7c91688bbe8ca8ccebcc2f46b5b222f844babe4827295bae11e2abe5f lib/unicore/CaseFolding.txt
- * 38badafd818d8405324fe298c0676be0c95186368c84b5368375fd871a645144 lib/unicore/CompositionExclusions.txt
- * e779a443d3aa2a3166a15becaa2b737c922480e32c0453d5956093633555078f lib/unicore/DAge.txt
- * a5d45f59b39deaab3c72ce8c1a2e212a5e086dff11b1f9d5bb0e352642e82248 lib/unicore/DCoreProperties.txt
- * 3ac44e11c84bdaf6b207d2c2c20eed857ae17052393fc7f71b0fe951186ba906 lib/unicore/DNormalizationProps.txt
- * 4f822ec7a9ebbb3138ad29bade8b9688d25b39c7a3c0b7431f01e7229e4fcb6e lib/unicore/EastAsianWidth.txt
- * fc535aa1047a70105ab9a22c2b4c3f363a2ff02fe48ebbc5eeb9873b2752ff0b lib/unicore/EquivalentUnifiedIdeograph.txt
- * b9c5158ce944d2fec57e0e4ecb716bdabfc3bdde73525f1772fe03f61a30d473 lib/unicore/HangulSyllableType.txt
- * 36c1b2a626ff1fb23b8b21e6ea8712698f8ce668dded1cb48b8ddf6a6a1b04e9 lib/unicore/IdStatus.txt
- * 4857c4ffa3898e6128b2d46b0a02e499a663fb91464a69ef3611096f01293acc lib/unicore/IdType.txt
- * 69197b019fa5f2fb0d8c6ed1ed8acb9f2e8b5b8f45a947953ffa652f3bf54983 lib/unicore/IndicPositionalCategory.txt
- * 6604e2f0fde7428675364aa0006bc686b79488dcc60ae8cb29800af2be3352e8 lib/unicore/IndicSyllabicCategory.txt
- * 84ead63924aaa74b988b2eaf254a8733276ed108633ce2ef77a9ee1de7818162 lib/unicore/Jamo.txt
- * d5abcd8f54c8a2aa912924c485ccf7f968ad98feaa303d8e9a29ad89172f1faf lib/unicore/LineBreak.txt
- * 985128e8c8b2540233331d9b27d897d2c23bd5bcf1d05da960befce6efc59542 lib/unicore/NameAliases.txt
- * 27282b8aa01d4d0c44aef436cb74195ae8639ffa187aeee4e6247af76febea76 lib/unicore/NamedSequences.txt
- * 485b5a3ed25dbf1f94dfa5a9b69d8b4550ffd0c33045ccc55ccfd7c80b2a40cf lib/unicore/PropList.txt
- * 6b3902e9268cd843fe65cbdea992108c9528343ec0679f800b96f356bb553e5a lib/unicore/PropValueAliases.txt
- * 2bd5777847e3d6add3c7e5c0d1393ddcab89e5a0ac3ff498cb0c53041f0b86e4 lib/unicore/PropertyAliases.txt
- * 03a61dc89422e44cc2b73e8e893321007880ab69e2a4d281c0f1bc29c602b9d0 lib/unicore/ScriptExtensions.txt
- * 9a5ed1ec9b5f0d7147e9371ad792ab39203611af7637cff2aa4a5c663b172cde lib/unicore/Scripts.txt
- * 6424312f1dc39b22e0ff9c0ffb13dfad424d9b03e6a6dc6bca941f6bf5ef1ffd lib/unicore/SpecialCasing.txt
- * bdbffbbfc8ad4d3a6d01b5891510458f3d36f7170422af4ea2bed3211a73e8bb lib/unicore/UnicodeData.txt
- * 160f41816234addb511901d5f21febd69574578dd93de6ef8153e35693325575 lib/unicore/VerticalOrientation.txt
- * 32dfb37d21db530529a6ec3dc13d96f21f8e7c7faf7ff3db8a9760cd76cec81d lib/unicore/auxiliary/GCBTest.txt
- * 2bd3c5e2d62701ff81fb3ec318e179a4618cabb1493b1e0dd2b4e7e56c5437c4 lib/unicore/auxiliary/GraphemeBreakProperty.txt
- * c51fbebfa82a0f36473b44bfd71d5ef6cb6a1f81fb313375dc9a1910d79bb2b6 lib/unicore/auxiliary/LBTest.txt
- * 80b0107750818d8f370bd120b6fe56b6855b60581f72affe8b60409a469b4b65 lib/unicore/auxiliary/SBTest.txt
- * 09e3166ebab166ac630a227f77f4e794ebd433271abd5588f5a67e7f199c71ee lib/unicore/auxiliary/SentenceBreakProperty.txt
- * bf5373ce28a5df06796c93dc159dd15a997bb2950c92704b40ae8190cfc3716d lib/unicore/auxiliary/WBTest.txt
- * a2b7373cf2fe3fa3b26dbb53405ca849985f771ff47f1c61743978003ff80499 lib/unicore/auxiliary/WordBreakProperty.txt
- * d2686f400a638c80775d7c662556fb8fa8dd3bbe4aa548d9d31624264c6e1bb1 lib/unicore/emoji/emoji.txt
- * b827ae5da8c2b08947cc9a120a7b7fd2f1676fb160b508df78075381635b127c lib/unicore/extracted/DBidiClass.txt
- * 6fdc5b5ef40444a8f0c772e6b67c00498d4216fe0c0fdf76744ce338f2ad3810 lib/unicore/extracted/DBinaryProperties.txt
- * e14928a5bf6ad5958a80332bd42e96e14420080a95c660e5da29384e496755d0 lib/unicore/extracted/DCombiningClass.txt
- * 579a03281fbe87b78d5d9a8523de4d255edd7e4ca6eab0e4c7729de97e9b89b1 lib/unicore/extracted/DDecompositionType.txt
- * ad83c59b257e9d480ffd3001d4ac240c5fed7cb1919453e1c4e8877035256bcd lib/unicore/extracted/DEastAsianWidth.txt
- * 4502f0969e4e6558c4b4c6ca4c23dad70b863d61dd3d5eed1a62a6c3c99fd570 lib/unicore/extracted/DGeneralCategory.txt
- * 00bb88b89e2adb646f3177f9444e2d3192386b81a5de9556104b338274b253e1 lib/unicore/extracted/DJoinGroup.txt
- * ac835b6e11a60c9820d3cf2d1cb0558dd68efb8f53f404a51632e4726690a6d7 lib/unicore/extracted/DJoinType.txt
- * baba9dfc133e3cb770a89aaf0973b1341fa61c2da6c176baf6428898b3b568d8 lib/unicore/extracted/DLineBreak.txt
- * 6d4a8c945dd7db83ed617cbb7d937de7f4ecf016ff22970d846e996a7c9a2a5d lib/unicore/extracted/DNumType.txt
- * 5b7c14380d5cceeaffcfbc18db1ed936391d2af2d51f5a41f1a17b692c77e59b lib/unicore/extracted/DNumValues.txt
- * 28076ceb3f4e2514ea9db243f4b918b9a7c2807b036237e2276b99b2659d9474 lib/unicore/mktables
- * 50b85a67451145545a65cea370dab8d3444fbfe07e9c34cef560c5b7da9d3eef lib/unicore/version
- * 24120d5e0c9685c442c93bc1dbea9b85ef973bf8e9474baf0e55b160c288226b regen/charset_translations.pl
- * 9f74e34278592ddf58fef8c32236b294e94ea5e12627f911f4563e8040a07292 regen/mk_PL_charclass.pl
- * 5eb9e6c825496cc9aa705e3cd33bc6d5a9657dcca16d4c4acc4824ff30b34a26 regen/mk_invlists.pl
- * ex: set ro: */
+ * 688d673ec947f7ccf898b4eae9848139d4d33676b688dee54f449f8bf9d3bbd2 lib/Unicode/UCD.pm
+ * eb840f36e0a7446293578c684a54c6d83d249abde7bdd4dfa89794af1d7fe9e9 lib/unicore/ArabicShaping.txt
+ * 333ae1e99db0504ca8a046a07dc45b5e7aa91869c685e6bf955ebe674804827a lib/unicore/BidiBrackets.txt
+ * b4b9e1d87d8ea273613880de9d2b2f0b0b696244b42152bfa0a3106e7d983a20 lib/unicore/BidiMirroring.txt
+ * 529dc5d0f6386d52f2f56e004bbfab48ce2d587eea9d38ba546c4052491bd820 lib/unicore/Blocks.txt
+ * cdd49e55eae3bbf1f0a3f6580c974a0263cb86a6a08daa10fbf705b4808a56f7 lib/unicore/CaseFolding.txt
+ * 3b019c0a33c3140cbc920c078f4f9af2680ba4f71869c8d4de5190667c70b6a3 lib/unicore/CompositionExclusions.txt
+ * 7570877e0fa197c45338f7c41a02636da4e14c8dba6a3611a01cd30bf329d5ca lib/unicore/DAge.txt
+ * d367290bc0867e6b484c68370530bdd1a08b6b32404601b8c7accaf83e05628d lib/unicore/DCoreProperties.txt
+ * d5687a48c95c7d6e1ec59cb29c0f2e8b052018eb069a4371b7368d0561e12a29 lib/unicore/DNormalizationProps.txt
+ * 743e7bc435c04ab1a8459710b1c3cad56eedced5b806b4659b6e69b85d0adf2a lib/unicore/EastAsianWidth.txt
+ * f2e04bae8c856fad3a16353a99d4cc2de6c72770260379f5e4974a97548aad2a lib/unicore/EquivalentUnifiedIdeograph.txt
+ * 9a3ab36d36a22bdb84de7a17b17e9b9c242134f0080f0a8b4b28d209465a8fc8 lib/unicore/HangulSyllableType.txt
+ * 790bc9595795c0e0a3860a21a7f97157a134b61a4fc4ab03c7d315d07c9a6eb7 lib/unicore/IdStatus.txt
+ * 71d3ed8f15cd5d8cd00cdebe62015ff26356462774b261b4a2b83d3bf46b1639 lib/unicore/IdType.txt
+ * 0ce56c1294da405c0a0a0071582ac839fd229bbf97bdd260462ee571309d4ec4 lib/unicore/IndicPositionalCategory.txt
+ * ffae561a51b47ddbbe267fdd8505ac3776b85b2932268809127acee84200b573 lib/unicore/IndicSyllabicCategory.txt
+ * 14733bcb6731ae0c07485bf59a41cb3db08785a50bd2b46b836b4341eab7ee46 lib/unicore/Jamo.txt
+ * 012bca868e2c4e59a5a10a7546baf0c6fb1b2ef458c277f054915c8a49d292bf lib/unicore/LineBreak.txt
+ * 3e39509e8fae3e5d50ba73759d0b97194501d14a9c63107a6372a46b38be18e8 lib/unicore/NameAliases.txt
+ * 1d5202155f14841973aa540b1625f4befbde185ac77ce5aceaaaa0501a68bd66 lib/unicore/NamedSequences.txt
+ * fb9ac8cc154a80cad6caac9897af55a4e75176af6f4e2bb6edc2bf8b1d57f326 lib/unicore/NormTest.txt
+ * e05c0a2811d113dae4abd832884199a3ea8d187ee1b872d8240a788a96540bfd lib/unicore/PropList.txt
+ * 13a7666843abea5c6b7eb8c057c57ab9bb2ba96cfc936e204224dd67d71cafad lib/unicore/PropValueAliases.txt
+ * e4935149af407fa455901832b710bccb63d2453e46d09190e234d019bcfbba45 lib/unicore/PropertyAliases.txt
+ * 7e07313d9d0bee42220c476b64485995130ae30917bbcf7780b602d677d7e33f lib/unicore/ScriptExtensions.txt
+ * cca85d830f46aece2e7c1459ef1249993dca8f2e46d51e869255be140d7ea4b0 lib/unicore/Scripts.txt
+ * 78b29c64b5840d25c11a9f31b665ee551b8a499eca6c70d770fcad7dd710f494 lib/unicore/SpecialCasing.txt
+ * 806e9aed65037197f1ec85e12be6e8cd870fc5608b4de0fffd990f689f376a73 lib/unicore/UnicodeData.txt
+ * ca6d332f485a6f5f452b29b4a74146af0f2c17b7577aa4c821d597210f70611a lib/unicore/VerticalOrientation.txt
+ * 0d2080d0def294a4b7660801cc03ddfe5866ff300c789c2cc1b50fd7802b2d97 lib/unicore/auxiliary/GCBTest.txt
+ * 5a0f8748575432f8ff95e1dd5bfaa27bda1a844809e17d6939ee912bba6568a1 lib/unicore/auxiliary/GraphemeBreakProperty.txt
+ * 371bde4052aa593b108684ae292d8ea2dbb93c19990e0cdf416fa7239557aac3 lib/unicore/auxiliary/LBTest.txt
+ * f62279d8fd10935ba0cf0d8417a1dcbe7ab0d4e62f59c17e02cbe40f580c4162 lib/unicore/auxiliary/SBTest.txt
+ * 61e4ba975b0a5bc1a76ee931b94914395d7289ef624e3c0d4d6b9460ee387bea lib/unicore/auxiliary/SentenceBreakProperty.txt
+ * 2a676130c71194245e7c74a837e58330f202600d8ddcf4518129dd476f26e18e lib/unicore/auxiliary/WBTest.txt
+ * 5188a56e91593467c2e912601ebc78750e6adc9b04541b8c5becb5441e388ce2 lib/unicore/auxiliary/WordBreakProperty.txt
+ * 29071dba22c72c27783a73016afb8ffaeb025866740791f9c2d0b55cc45a3470 lib/unicore/emoji/emoji.txt
+ * 4841f2090c2dbc592d3ce43bb74c2191b3da50fb9a0d00274f1448c202851b02 lib/unicore/extracted/DBidiClass.txt
+ * f10a35451429137f7348825f22d624b6390c526ead3d8e756d2af9e5ed5b2b67 lib/unicore/extracted/DBinaryProperties.txt
+ * ca54f6360cd288ad92113415bf1f77749015abe11cbd6798d21f7fa81f04205d lib/unicore/extracted/DCombiningClass.txt
+ * db059ce45e3cec49bfda56e262fa658b3a5561b1648de266c818d2a08a85b78a lib/unicore/extracted/DDecompositionType.txt
+ * d62e6950f086e53f47c593a38342621f8838f48c49a1de070cf83d3959bd1688 lib/unicore/extracted/DEastAsianWidth.txt
+ * fe29a45c0882500e591140aaa5c4f5067e6a5d746806148af34400c48b9c06f9 lib/unicore/extracted/DGeneralCategory.txt
+ * e13ca1344b16023aa38c6ada39f9658536fc6bb7c3c24d579f0bc316a4f4f1e0 lib/unicore/extracted/DJoinGroup.txt
+ * c4870b11e2b8b7d0eb70b99ce85608e5c28a399efa316cca97238a58ae160e5e lib/unicore/extracted/DJoinType.txt
+ * 3f4f32ed2a577344a508114527e721d7a8b633d32f38945d47fe0c743650c585 lib/unicore/extracted/DLineBreak.txt
+ * 710abf2d581ac9c57f244c0834f9d9969d9781e0396adccd330eaae658ac7d6b lib/unicore/extracted/DNumType.txt
+ * 6bd30f385f3baf3ab5d5308c111a81de87bea5f494ba0ba69e8ab45263b8c34d lib/unicore/extracted/DNumValues.txt
+ * f7265069b38ba9a0675a18600e241b1ec6fc8c55fd806fe4c13bc5d8cb0dc508 lib/unicore/mktables
+ * 55d90fdc3f902e5c0b16b3378f9eaa36e970a1c09723c33de7d47d0370044012 lib/unicore/version
+ * 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl
+ * c7ff8e0d207d3538c7feb4a1a152b159e5e902d20293b303569ea8323e84633e regen/mk_PL_charclass.pl
+ * cdbafee25193032242e77f2a6332b731d8392ce342fa616dbabc2c14c7b44eb6 regen/mk_invlists.pl
+ * ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/config.h b/Master/tlpkg/tlperl/lib/CORE/config.h
index ef80bde93ba..4776f840c5a 100644
--- a/Master/tlpkg/tlperl/lib/CORE/config.h
+++ b/Master/tlpkg/tlperl/lib/CORE/config.h
@@ -9,7 +9,7 @@
/* Package name : perl5
* Source directory :
- * Configuration time: Mon Jul 11 03:22:33 2022
+ * Configuration time: Mon Feb 12 11:14:47 2024
* Configured by : siepo
* Target system :
*/
@@ -32,7 +32,7 @@
* This symbol, if defined, indicates that the cbrt() (cube root)
* function is available.
*/
-#define HAS_CBRT /**/
+/*#define HAS_CBRT / **/
/* HAS_CHOWN:
* This symbol, if defined, indicates that the chown routine is
@@ -779,9 +779,9 @@
*/
#define HAS_QUAD /**/
#ifdef HAS_QUAD
-# define Quad_t long long /**/
-# define Uquad_t unsigned long long /**/
-# define QUADKIND 3 /**/
+# define Quad_t __int64 /**/
+# define Uquad_t unsigned __int64 /**/
+# define QUADKIND 5 /**/
# define QUAD_IS_INT 1
# define QUAD_IS_LONG 2
# define QUAD_IS_LONG_LONG 3
@@ -862,7 +862,7 @@
* This symbol is defined if the C compiler can cast negative
* or large floating point numbers to 32-bit ints.
*/
-#define CASTI32 /**/
+/*#define CASTI32 / **/
/* CASTNEGFLOAT:
* This symbol is defined if the C compiler can cast negative
@@ -1036,7 +1036,7 @@
* static (c89 compilers)
*/
#define HAS_STATIC_INLINE /**/
-#define PERL_STATIC_INLINE static __inline__ /**/
+#define PERL_STATIC_INLINE static __inline /**/
/* USE_STDIO_PTR:
* This symbol is defined if the _ptr and _cnt fields (or similar)
@@ -1074,9 +1074,9 @@
*/
#define USE_STDIO_PTR /**/
#ifdef USE_STDIO_PTR
-#define FILE_ptr(fp) ((fp)->_ptr)
+#define FILE_ptr(fp) PERLIO_FILE_ptr(fp)
#define STDIO_PTR_LVALUE /**/
-#define FILE_cnt(fp) ((fp)->_cnt)
+#define FILE_cnt(fp) PERLIO_FILE_cnt(fp)
#define STDIO_CNT_LVALUE /**/
/*#define STDIO_PTR_LVAL_SETS_CNT / **/
#define STDIO_PTR_LVAL_NOCHANGE_CNT /**/
@@ -1104,8 +1104,8 @@
*/
#define USE_STDIO_BASE /**/
#ifdef USE_STDIO_BASE
-#define FILE_base(fp) ((fp)->_base)
-#define FILE_bufsiz(fp) ((fp)->_cnt + (fp)->_ptr - (fp)->_base)
+#define FILE_base(fp) PERLIO_FILE_base(fp)
+#define FILE_bufsiz(fp) (PERLIO_FILE_cnt(fp) + PERLIO_FILE_ptr(fp) - PERLIO_FILE_base(fp))
#endif
/* DOUBLESIZE:
@@ -1208,7 +1208,7 @@
* to get any typedef'ed information.
* We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
*/
-#define SSize_t long long /* signed count of bytes */
+#define SSize_t __int64 /* signed count of bytes */
/* EBCDIC:
* This symbol, if defined, indicates that this system uses
@@ -1229,7 +1229,7 @@
* This symbol contains the ~name expanded version of ARCHLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define ARCHLIB "E:\\tlperl\\lib" /**/
+#define ARCHLIB "d:\\tlperl\\lib" /**/
/*#define ARCHLIB_EXP "" / **/
/* BIN:
@@ -1244,8 +1244,8 @@
* This symbol, if defined, indicates that we'd like to relocate entries
* in @INC at run time based on the location of the perl binary.
*/
-#define BIN "E:\\tlperl\\bin" /**/
-#define BIN_EXP "E:\\tlperl\\bin" /**/
+#define BIN "d:\\tlperl\\bin" /**/
+#define BIN_EXP "d:\\tlperl\\bin" /**/
#define PERL_RELOCATABLE_INC "undef" /**/
/* PERL_INC_VERSION_LIST:
@@ -1283,7 +1283,7 @@
* This symbol contains the ~name expanded version of PRIVLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define PRIVLIB "E:\\tlperl\\lib" /**/
+#define PRIVLIB "d:\\tlperl\\lib" /**/
#define PRIVLIB_EXP (PerlEnv_lib_path(PERL_VERSION_STRING, NULL)) /**/
/* SITEARCH:
@@ -1301,7 +1301,7 @@
* This symbol contains the ~name expanded version of SITEARCH, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define SITEARCH "E:\\tlperl\\site\\lib" /**/
+#define SITEARCH "d:\\tlperl\\site\\lib" /**/
/*#define SITEARCH_EXP "" / **/
/* SITELIB:
@@ -1324,7 +1324,7 @@
* removed. The elements in inc_version_list (inc_version_list.U) can
* be tacked onto this variable to generate a list of directories to search.
*/
-#define SITELIB "E:\\tlperl\\site\\lib" /**/
+#define SITELIB "d:\\tlperl\\site\\lib" /**/
#define SITELIB_EXP (PerlEnv_sitelib_path(PERL_VERSION_STRING, NULL)) /**/
#define SITELIB_STEM "" /**/
@@ -1369,7 +1369,7 @@
* feature tests from Configure are generally more reliable.
*/
#define OSNAME "MSWin32" /**/
-#define OSVERS "10.0.19042.508" /**/
+#define OSVERS "10.0.22631.3085" /**/
/* CAT2:
* This macro concatenates 2 tokens together.
@@ -1417,9 +1417,9 @@
* This symbol is intended to be used along with CPPRUN in the same manner
* symbol CPPMINUS is used with CPPSTDIN. It contains either "-" or "".
*/
-#define CPPSTDIN "gcc -E"
-#define CPPMINUS "-"
-#define CPPRUN "gcc -E"
+#define CPPSTDIN "cppstdin"
+#define CPPMINUS ""
+#define CPPRUN "cl -nologo -E"
#define CPPLAST ""
/* HAS_ACCESS:
@@ -1460,6 +1460,10 @@
* Can we handle GCC attribute for functions that should always be
* inlined.
*/
+/* HASATTRIBUTE_VISIBILITY:
+ * Can we handle GCC attribute for functions that should have a
+ * different visibility.
+ */
/*#define HASATTRIBUTE_DEPRECATED / **/
/*#define HASATTRIBUTE_FORMAT / **/
/*#define PRINTF_FORMAT_NULL_OK / **/
@@ -1470,6 +1474,7 @@
/*#define HASATTRIBUTE_UNUSED / **/
/*#define HASATTRIBUTE_WARN_UNUSED_RESULT / **/
/*#define HASATTRIBUTE_ALWAYS_INLINE / **/
+/*#define HASATTRIBUTE_VISIBILITY / **/
/* HAS_BACKTRACE:
* This symbol, if defined, indicates that the backtrace() routine is
@@ -1541,7 +1546,7 @@
/*#define HAS_ENDPROTOENT / **/
/* HAS_ENDPWENT:
- * This symbol, if defined, indicates that the getgrent routine is
+ * This symbol, if defined, indicates that the endpwent routine is
* available for finalizing sequential access of the passwd database.
*/
/*#define HAS_ENDPWENT / **/
@@ -1762,11 +1767,11 @@
* This symbol, if defined, indicates that the long double is
* the 128-bit VAX format H.
*/
-#define HAS_LDEXPL /**/
+/*#define HAS_LDEXPL / **/
#define HAS_LONG_DOUBLE /**/
#ifdef HAS_LONG_DOUBLE
-#define LONG_DOUBLESIZE 16 /**/
-#define LONG_DOUBLEKIND 3 /**/
+#define LONG_DOUBLESIZE 8 /**/
+#define LONG_DOUBLEKIND 0 /**/
#define LONG_DOUBLE_IS_DOUBLE 0
#define LONG_DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN 1
#define LONG_DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN 2
@@ -1795,7 +1800,7 @@
* C preprocessor can make decisions based on it. It is only
* defined if the system supports long long.
*/
-#define HAS_LONG_LONG /**/
+/*#define HAS_LONG_LONG / **/
#ifdef HAS_LONG_LONG
#define LONGLONGSIZE 8 /**/
#endif
@@ -2246,7 +2251,7 @@
*/
#ifndef USE_CROSS_COMPILE
/*#define USE_CROSS_COMPILE / **/
-#define PERL_TARGETARCH "" /**/
+#define PERL_TARGETARCH "" /**/
#endif
/* PERL_USE_DEVEL:
@@ -2284,7 +2289,7 @@
* This symbol, if defined, indicates that the acosh routine is
* available to do the inverse hyperbolic cosine function.
*/
-#define HAS_ACOSH /**/
+/*#define HAS_ACOSH / **/
/* HAS_AINTL:
* This symbol, if defined, indicates that the aintl routine is
@@ -2296,13 +2301,20 @@
* This symbol, if defined, indicates that the asinh routine is
* available to do the inverse hyperbolic sine function.
*/
-#define HAS_ASINH /**/
+/*#define HAS_ASINH / **/
/* HAS_ATANH:
* This symbol, if defined, indicates that the atanh routine is
* available to do the inverse hyperbolic tangent function.
*/
-#define HAS_ATANH /**/
+/*#define HAS_ATANH / **/
+
+/* HAS_NON_INT_BITFIELDS:
+ * This symbol, if defined, indicates that the C compiler accepts, without
+ * error or warning, struct bitfields that are declared with sizes other
+ * than plain 'int'; for example 'unsigned char' is accepted.
+ */
+#define HAS_NON_INT_BITFIELDS /**/
/* HAS_BUILTIN_CHOOSE_EXPR:
* Can we handle GCC builtin for compile-time ternary-like expressions
@@ -2369,13 +2381,13 @@
* This symbol, if defined, indicates that the copysign routine is
* available to do the copysign function.
*/
-#define HAS_COPYSIGN /**/
+/*#define HAS_COPYSIGN / **/
/* HAS_COPYSIGNL:
* This symbol, if defined, indicates that the copysignl routine is
* available. If aintl is also present we can emulate modfl.
*/
-#define HAS_COPYSIGNL /**/
+/*#define HAS_COPYSIGNL / **/
/* USE_CPLUSPLUS:
* This symbol, if defined, indicates that a C++ compiler was
@@ -2392,7 +2404,7 @@
/*#define HAS_DBMINIT_PROTO / **/
/* HAS_DIR_DD_FD:
- * This symbol, if defined, indicates that the the DIR* dirstream
+ * This symbol, if defined, indicates that the DIR* dirstream
* structure contains a member variable named dd_fd.
*/
/*#define HAS_DIR_DD_FD / **/
@@ -2421,7 +2433,7 @@
* This symbol, if defined, indicates that the erf routine is
* available to do the error function.
*/
-#define HAS_ERF /**/
+/*#define HAS_ERF / **/
/* HAS_ERFC:
* This symbol, if defined, indicates that the erfc routine is
@@ -2433,13 +2445,13 @@
* This symbol, if defined, indicates that the exp2 routine is
* available to do the 2**x function.
*/
-#define HAS_EXP2 /**/
+/*#define HAS_EXP2 / **/
/* HAS_EXPM1:
* This symbol, if defined, indicates that the expm1 routine is
* available to do the exp(x) - 1 when x is near 1 function.
*/
-#define HAS_EXPM1 /**/
+/*#define HAS_EXPM1 / **/
/* HAS_FAST_STDIO:
* This symbol, if defined, indicates that the "fast stdio"
@@ -2480,11 +2492,24 @@
*/
/*#define HAS_FEGETROUND / **/
+/* HAS_FFS:
+ * This symbol, if defined, indicates that the ffs routine is available
+ * to find the first bit set in its argument. If it's not available,
+ * roll your own.
+ */
+/* HAS_FFSL:
+ * This symbol, if defined, indicates that the ffsl routine is available
+ * to find the first bit set in its argument. If it's not available,
+ * roll your own.
+ */
+/*#define HAS_FFS / **/
+/*#define HAS_FFSL / **/
+
/* HAS_FINITE:
* This symbol, if defined, indicates that the finite routine is
* available to check whether a double is finite (non-infinity non-NaN).
*/
-#define HAS_FINITE /**/
+/*#define HAS_FINITE / **/
/* HAS_FINITEL:
* This symbol, if defined, indicates that the finitel routine is
@@ -2511,13 +2536,13 @@
* This symbol, if defined, indicates that the fmax routine is
* available to do the maximum function.
*/
-#define HAS_FMAX /**/
+/*#define HAS_FMAX / **/
/* HAS_FMIN:
* This symbol, if defined, indicates that the fmin routine is
* available to do the minimum function.
*/
-#define HAS_FMIN /**/
+/*#define HAS_FMIN / **/
/* HAS_FP_CLASS:
* This symbol, if defined, indicates that the fp_class routine is
@@ -2622,7 +2647,7 @@
* available to break a long double floating-point number into
* a normalized fraction and an integral power of 2.
*/
-#define HAS_FREXPL /**/
+/*#define HAS_FREXPL / **/
/* HAS_STRUCT_FS_DATA:
* This symbol, if defined, indicates that the struct fs_data
@@ -2759,19 +2784,19 @@
* This symbol, if defined, indicates that the hypot routine is
* available to do the hypotenuse function.
*/
-#define HAS_HYPOT /**/
+/*#define HAS_HYPOT / **/
/* HAS_ILOGB:
* This symbol, if defined, indicates that the ilogb routine is
* available to get integer exponent of a floating-point value.
*/
-#define HAS_ILOGB /**/
+/*#define HAS_ILOGB / **/
/* HAS_ILOGBL:
* This symbol, if defined, indicates that the ilogbl routine is
* available. If scalbnl is also present we can emulate frexpl.
*/
-#define HAS_ILOGBL /**/
+/*#define HAS_ILOGBL / **/
/* HAS_INETNTOP:
* This symbol, if defined, indicates that the inet_ntop() function
@@ -2815,7 +2840,7 @@
* This symbol, if defined, indicates that the isinf routine is
* available to check whether a double is an infinity.
*/
-#define HAS_ISINF /**/
+/*#define HAS_ISINF / **/
/* HAS_ISINFL:
* This symbol, if defined, indicates that the isinfl routine is
@@ -2827,7 +2852,7 @@
* This symbol, if defined, indicates that the isless routine is
* available to do the isless function.
*/
-#define HAS_ISLESS /**/
+/*#define HAS_ISLESS / **/
/* HAS_ISNAN:
* This symbol, if defined, indicates that the isnan routine is
@@ -2839,13 +2864,13 @@
* This symbol, if defined, indicates that the isnanl routine is
* available to check whether a long double is a NaN.
*/
-#define HAS_ISNANL /**/
+/*#define HAS_ISNANL / **/
/* HAS_ISNORMAL:
* This symbol, if defined, indicates that the isnormal routine is
* available to check whether a double is normal (non-zero normalized).
*/
-#define HAS_ISNORMAL /**/
+/*#define HAS_ISNORMAL / **/
/* HAS_J0:
* This symbol, if defined, indicates to the C program that the
@@ -2857,7 +2882,7 @@
* j0l() function is available for Bessel functions of the first
* kind of the order zero, for long doubles.
*/
-#define HAS_J0 /**/
+/*#define HAS_J0 / **/
/*#define HAS_J0L / **/
/* HAS_LC_MONETARY_2008:
@@ -2879,7 +2904,7 @@
* available to do the log gamma function. See also HAS_TGAMMA and
* HAS_LGAMMA_R.
*/
-#define HAS_LGAMMA /**/
+/*#define HAS_LGAMMA / **/
/* HAS_LGAMMA_R:
* This symbol, if defined, indicates that the lgamma_r routine is
@@ -2899,72 +2924,72 @@
* available to return the long long value closest to a double
* (according to the current rounding mode).
*/
-#define HAS_LLRINT /**/
+/*#define HAS_LLRINT / **/
/* HAS_LLRINTL:
* This symbol, if defined, indicates that the llrintl routine is
* available to return the long long value closest to a long double
* (according to the current rounding mode).
*/
-#define HAS_LLRINTL /**/
+/*#define HAS_LLRINTL / **/
/* HAS_LLROUND:
* This symbol, if defined, indicates that the llround routine is
* available to return the nearest long long value.
*/
-#define HAS_LLROUND /**/
+/*#define HAS_LLROUND / **/
/* HAS_LLROUNDL:
* This symbol, if defined, indicates that the llroundl routine is
* available to return the nearest long long value away from zero of
* the long double argument value.
*/
-#define HAS_LLROUNDL /**/
+/*#define HAS_LLROUNDL / **/
/* HAS_LOG1P:
* This symbol, if defined, indicates that the log1p routine is
* available to do the logarithm of 1 plus argument function.
*/
-#define HAS_LOG1P /**/
+/*#define HAS_LOG1P / **/
/* HAS_LOG2:
* This symbol, if defined, indicates that the log2 routine is
* available to do the log2 function.
*/
-#define HAS_LOG2 /**/
+/*#define HAS_LOG2 / **/
/* HAS_LOGB:
* This symbol, if defined, indicates that the logb routine is
* available to do the logb function.
*/
-#define HAS_LOGB /**/
+/*#define HAS_LOGB / **/
/* HAS_LRINT:
* This symbol, if defined, indicates that the lrint routine is
* available to return the integral value closest to a double
* (according to the current rounding mode).
*/
-#define HAS_LRINT /**/
+/*#define HAS_LRINT / **/
/* HAS_LRINTL:
* This symbol, if defined, indicates that the lrintl routine is
* available to return the integral value closest to a long double
* (according to the current rounding mode).
*/
-#define HAS_LRINTL /**/
+/*#define HAS_LRINTL / **/
/* HAS_LROUND:
* This symbol, if defined, indicates that the lround routine is
* available to return the nearest integral value.
*/
-#define HAS_LROUND /**/
+/*#define HAS_LROUND / **/
/* HAS_LROUNDL:
* This symbol, if defined, indicates that the lroundl routine is
* available to return the nearest integral value away from zero of
* the long double argument value.
*/
-#define HAS_LROUNDL /**/
+/*#define HAS_LROUNDL / **/
/* HAS_MADVISE:
* This symbol, if defined, indicates that the madvise system call is
@@ -3031,8 +3056,8 @@
* a prototype for the modfl() function. Otherwise, it is up
* to the program to supply one.
*/
-#define HAS_MODFL /**/
-#define HAS_MODFL_PROTO /**/
+/*#define HAS_MODFL / **/
+/*#define HAS_MODFL_PROTO / **/
/* HAS_MPROTECT:
* This symbol, if defined, indicates that the mprotect system call is
@@ -3050,7 +3075,7 @@
* This symbol, if defined, indicates that the nan routine is
* available to generate NaN.
*/
-#define HAS_NAN /**/
+/*#define HAS_NAN / **/
/* HAS_NANOSLEEP:
* This symbol, if defined, indicates that the nanosleep
@@ -3063,7 +3088,7 @@
* available to return the integral value closest to (according to
* the current rounding mode) to x.
*/
-#define HAS_NEARBYINT /**/
+/*#define HAS_NEARBYINT / **/
/* HAS_NEWLOCALE:
* This symbol, if defined, indicates that the newlocale routine is
@@ -3087,14 +3112,19 @@
* available to return the name of the locale for a category mask.
*/
/* I_XLOCALE:
- * This symbol, if defined, indicates to the C program that it should
- * include <xlocale.h> to get uselocale() and its friends.
+ * This symbol, if defined, indicates to the C program that the
+ * header xlocale.h is available. See also NEED_XLOCALE_H
+ */
+/* NEED_XLOCALE_H:
+ * This symbol, if defined, indicates that the C program should
+ * include <xlocale.h> to get newlocale() and its friends.
*/
/*#define HAS_NEWLOCALE / **/
/*#define HAS_FREELOCALE / **/
/*#define HAS_USELOCALE / **/
/*#define HAS_DUPLOCALE / **/
/*#define HAS_QUERYLOCALE / **/
+/*#define NEED_XLOCALE_H / **/
/*#define I_XLOCALE / **/
/* HAS_NEXTAFTER:
@@ -3102,14 +3132,14 @@
* available to return the next machine representable double from
* x in direction y.
*/
-#define HAS_NEXTAFTER /**/
+/*#define HAS_NEXTAFTER / **/
/* HAS_NEXTTOWARD:
* This symbol, if defined, indicates that the nexttoward routine is
* available to return the next machine representable long double from
* x in direction y.
*/
-#define HAS_NEXTTOWARD /**/
+/*#define HAS_NEXTTOWARD / **/
/* HAS_NL_LANGINFO:
* This symbol, if defined, indicates that the nl_langinfo routine is
@@ -3185,26 +3215,26 @@
* This symbol, if defined, indicates that the remainder routine is
* available to return the floating-point remainder.
*/
-#define HAS_REMAINDER /**/
+/*#define HAS_REMAINDER / **/
/* HAS_REMQUO:
* This symbol, if defined, indicates that the remquo routine is
* available to return the remainder and part of quotient.
*/
-#define HAS_REMQUO /**/
+/*#define HAS_REMQUO / **/
/* HAS_RINT:
* This symbol, if defined, indicates that the rint routine is
* available to return the nearest integral value to x as double
* using the current rounding mode.
*/
-#define HAS_RINT /**/
+/*#define HAS_RINT / **/
/* HAS_ROUND:
* This symbol, if defined, indicates that the round routine is
* available to round to nearest integer, away from zero.
*/
-#define HAS_ROUND /**/
+/*#define HAS_ROUND / **/
/* HAS_SBRK_PROTO:
* This symbol, if defined, indicates that the system provides
@@ -3220,13 +3250,13 @@
* available to multiply floating-point number by integral power
* of radix.
*/
-#define HAS_SCALBN /**/
+/*#define HAS_SCALBN / **/
/* HAS_SCALBNL:
* This symbol, if defined, indicates that the scalbnl routine is
* available. If ilogbl is also present we can emulate frexpl.
*/
-#define HAS_SCALBNL /**/
+/*#define HAS_SCALBNL / **/
/* HAS_SENDMSG:
* This symbol, if defined, indicates that the sendmsg routine is
@@ -3234,6 +3264,12 @@
*/
/*#define HAS_SENDMSG / **/
+/* HAS_SETENV:
+ * This symbol, if defined, indicates that the setenv routine is
+ * available for use.
+ */
+/*#define HAS_SETENV / **/
+
/* HAS_SETITIMER:
* This symbol, if defined, indicates that the setitimer routine is
* available to set interval timers.
@@ -3265,7 +3301,7 @@
* in perl. Users should call Perl_signbit(), which will be #defined to
* the system's signbit() function or macro if this symbol is defined.
*/
-#define HAS_SIGNBIT /**/
+/*#define HAS_SIGNBIT / **/
/* HAS_SIGPROCMASK:
* This symbol, if defined, indicates that the sigprocmask
@@ -3317,7 +3353,7 @@
* This symbol, if defined, indicates that the sqrtl routine is
* available to do long double square roots.
*/
-#define HAS_SQRTL /**/
+/*#define HAS_SQRTL / **/
/* HAS_SETRESGID_PROTO:
* This symbol, if defined, indicates that the system provides
@@ -3419,6 +3455,12 @@
*/
/*#define HAS_STRTOUQ / **/
+/* HAS_STRXFRM_L:
+ * This symbol, if defined, indicates that the strxfrm_l() routine is
+ * available to transform strings.
+ */
+/*#define HAS_STRXFRM_L / **/
+
/* HAS_SYSCALL_PROTO:
* This symbol, if defined, indicates that the system provides
* a prototype for the syscall() function. Otherwise, it is up
@@ -3440,7 +3482,7 @@
* This symbol, if defined, indicates that the tgamma routine is
* available to do the gamma function. See also HAS_LGAMMA.
*/
-#define HAS_TGAMMA /**/
+/*#define HAS_TGAMMA / **/
/* HAS_CTIME64:
* This symbol, if defined, indicates that the ctime64 () routine is
@@ -3495,13 +3537,13 @@
* This symbol, if defined, indicates that the trunc routine is
* available to round doubles towards zero.
*/
-#define HAS_TRUNC /**/
+/*#define HAS_TRUNC / **/
/* HAS_TRUNCL:
* This symbol, if defined, indicates that the truncl routine is
* available. If copysignl is also present we can emulate modfl.
*/
-#define HAS_TRUNCL /**/
+/*#define HAS_TRUNCL / **/
/* U32_ALIGNMENT_REQUIRED:
* This symbol, if defined, indicates that you must access
@@ -3552,7 +3594,7 @@
/* HAS_WCSXFRM:
* This symbol, if defined, indicates that the wcsxfrm routine is
- * available to tranform a wide character string for wcscmp().
+ * available to transform a wide character string for wcscmp().
*/
#define HAS_WCSXFRM /**/
@@ -3769,6 +3811,11 @@
*/
/*#define I_SYS_STATVFS / **/
+/* I_SYS_SYSCALL:
+ * This symbol, if defined, indicates that <sys/syscall.h> exists.
+ */
+/*#define I_SYS_SYSCALL / **/
+
/* I_SYSUTSNAME:
* This symbol, if defined, indicates that <sys/utsname.h> exists and
* should be included.
@@ -3816,8 +3863,8 @@
*/
#define DOUBLEINFBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f /**/
#define DOUBLENANBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f /**/
-#define LONGDBLINFBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /**/
-#define LONGDBLNANBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /**/
+#define LONGDBLINFBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f /**/
+#define LONGDBLNANBYTES 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f /**/
/* PERL_PRIfldbl:
* This symbol, if defined, contains the string used by stdio to
@@ -3901,10 +3948,10 @@
#define DOUBLE_IS_IBM_DOUBLE_64_BIT 13
#define DOUBLE_IS_CRAY_SINGLE_64_BIT 14
#define DOUBLE_IS_UNKNOWN_FORMAT -1
-/*#define PERL_PRIfldbl "Lf" / **/
-/*#define PERL_PRIgldbl "Lg" / **/
-/*#define PERL_PRIeldbl "Le" / **/
-/*#define PERL_SCNfldbl "Lf" / **/
+/*#define PERL_PRIfldbl "f" / **/
+/*#define PERL_PRIgldbl "g" / **/
+/*#define PERL_PRIeldbl "e" / **/
+/*#define PERL_SCNfldbl "f" / **/
#define DOUBLE_HAS_INF
#define DOUBLE_HAS_NAN
#define DOUBLE_HAS_NEGATIVE_ZERO
@@ -3935,7 +3982,7 @@
* This depends on which floating point type was chosen.
*/
#define DOUBLEMANTBITS 52
-#define LONGDBLMANTBITS 64
+#define LONGDBLMANTBITS 52
#define NVMANTBITS 52
/* NEED_VA_COPY:
@@ -3949,6 +3996,32 @@
*/
/*#define NEED_VA_COPY / **/
+/* I32df:
+ * This symbol defines the format string used for printing a Perl I32
+ * as a signed decimal integer.
+ */
+/* U32uf:
+ * This symbol defines the format string used for printing a Perl U32
+ * as an unsigned decimal integer.
+ */
+/* U32of:
+ * This symbol defines the format string used for printing a Perl U32
+ * as an unsigned octal integer.
+ */
+/* U32xf:
+ * This symbol defines the format string used for printing a Perl U32
+ * as an unsigned hexadecimal integer in lowercase abcdef.
+ */
+/* U32Xf:
+ * This symbol defines the format string used for printing a Perl U32
+ * as an unsigned hexadecimal integer in uppercase ABCDEF.
+ */
+#define I32df "ld" /**/
+#define U32of "lo" /**/
+#define U32uf "lu" /**/
+#define U32xf "lx" /**/
+#define U32Xf "lX" /**/
+
/* IVTYPE:
* This symbol defines the C type used for Perl's IV.
*/
@@ -4038,35 +4111,35 @@
* This symbol, if defined, indicates that a variable of type NVTYPE
* stores 0.0 in memory as all bits zero.
*/
-#define IVTYPE long long /**/
-#define UVTYPE unsigned long long /**/
-#define I8TYPE char /**/
-#define U8TYPE unsigned char /**/
-#define I16TYPE short /**/
-#define U16TYPE unsigned short /**/
-#define I32TYPE long /**/
-#define U32TYPE unsigned long /**/
+#define IVTYPE __int64 /**/
+#define UVTYPE unsigned __int64 /**/
+#define I8TYPE char /**/
+#define U8TYPE unsigned char /**/
+#define I16TYPE short /**/
+#define U16TYPE unsigned short /**/
+#define I32TYPE long /**/
+#define U32TYPE unsigned long /**/
#ifdef HAS_QUAD
-#define I64TYPE long long /**/
-#define U64TYPE unsigned long long /**/
+#define I64TYPE __int64 /**/
+#define U64TYPE unsigned __int64 /**/
#endif
-#define NVTYPE double /**/
-#define IVSIZE 8 /**/
-#define UVSIZE 8 /**/
-#define I8SIZE 1 /**/
-#define U8SIZE 1 /**/
-#define I16SIZE 2 /**/
-#define U16SIZE 2 /**/
-#define I32SIZE 4 /**/
-#define U32SIZE 4 /**/
+#define NVTYPE double /**/
+#define IVSIZE 8 /**/
+#define UVSIZE 8 /**/
+#define I8SIZE 1 /**/
+#define U8SIZE 1 /**/
+#define I16SIZE 2 /**/
+#define U16SIZE 2 /**/
+#define I32SIZE 4 /**/
+#define U32SIZE 4 /**/
#ifdef HAS_QUAD
-#define I64SIZE 8 /**/
-#define U64SIZE 8 /**/
+#define I64SIZE 8 /**/
+#define U64SIZE 8 /**/
#endif
-#define NVSIZE 8 /**/
+#define NVSIZE 8 /**/
#undef NV_PRESERVES_UV
-#define NV_PRESERVES_UV_BITS 53
-#define NV_OVERFLOWS_INTEGERS_AT (256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0)
+#define NV_PRESERVES_UV_BITS 53
+#define NV_OVERFLOWS_INTEGERS_AT (256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0)
#define NV_ZERO_IS_ALLBITS_ZERO
#if UVSIZE == 8
# ifdef BYTEORDER
@@ -4114,14 +4187,14 @@
* This symbol defines the format string used for printing a Perl NV
* using %g-ish floating point format.
*/
-#define IVdf "I64d" /**/
-#define UVuf "I64u" /**/
-#define UVof "I64o" /**/
-#define UVxf "I64x" /**/
-#define UVXf "I64X" /**/
-#define NVef "e" /**/
-#define NVff "f" /**/
-#define NVgf "g" /**/
+#define IVdf "I64d" /**/
+#define UVuf "I64u" /**/
+#define UVof "I64o" /**/
+#define UVxf "I64x" /**/
+#define UVXf "I64X" /**/
+#define NVef "e" /**/
+#define NVff "f" /**/
+#define NVgf "g" /**/
/* SELECT_MIN_BITS:
* This symbol holds the minimum number of bits operated by select.
@@ -4132,6 +4205,16 @@
*/
#define SELECT_MIN_BITS 32 /**/
+/* ST_DEV_SIZE:
+ * This variable contains the size of struct stat's st_dev in bytes.
+ */
+/* ST_DEV_SIGN:
+ * This symbol holds the signedness of struct stat's st_dev.
+ * 1 for unsigned, -1 for signed.
+ */
+#define ST_DEV_SIGN 1 /* st_dev sign */
+#define ST_DEV_SIZE 4 /* st_dev size */
+
/* ST_INO_SIZE:
* This variable contains the size of struct stat's st_ino in bytes.
*/
@@ -4178,9 +4261,9 @@
* This symbol contains the minimum value for the time_t offset that
* the system function localtime () accepts, and defaults to 0
*/
-#define GMTIME_MAX 2147483647 /**/
+#define GMTIME_MAX 32535291599 /**/
#define GMTIME_MIN 0 /**/
-#define LOCALTIME_MAX 2147483647 /**/
+#define LOCALTIME_MAX 32535244799 /**/
#define LOCALTIME_MIN 0 /**/
/* USE_64_BIT_INT:
@@ -4873,10 +4956,15 @@
*/
/*#define HAS_MBRTOWC / **/
+/* HAS_NL_LANGINFO_L:
+ * This symbol, when defined, indicates presence of the nl_langinfo_l()
+ * function
+ */
/* HAS_THREAD_SAFE_NL_LANGINFO_L:
* This symbol, when defined, indicates presence of the nl_langinfo_l()
* function, and that it is thread-safe.
*/
+/*#define HAS_NL_LANGINFO_L / **/
/*#define HAS_THREAD_SAFE_NL_LANGINFO_L / **/
/* OLD_PTHREAD_CREATE_JOINABLE:
@@ -5095,6 +5183,18 @@
*/
/*#define HAS_STRTOLD_L / **/
+/* PERL_THREAD_LOCAL:
+ * This symbol, if defined, gives a linkage specification for thread-local
+ * storage. For example, for a C11 compiler this will be _Thread_local.
+ * Beware, some compilers are sensitive to the C language standard they are
+ * told to parse. For example, suncc defaults to C11, so our probe will
+ * report that _Thread_local can be used. However, if the -std=c99 is later
+ * added to the compiler flags, then _Thread_local will become a syntax
+ * error. Hence it is important for these flags to be consistent between
+ * probing and use.
+ */
+/*#define PERL_THREAD_LOCAL / **/
+
/* HAS_TMPNAM_R:
* This symbol, if defined, indicates that the tmpnam_r routine
* is available to tmpnam re-entrantly.
@@ -5191,7 +5291,7 @@
/* Gid_t_f:
* This symbol defines the format string used for printing a Gid_t.
*/
-#define Gid_t_f "ld" /**/
+#define Gid_t_f "ld" /**/
/* Gid_t_sign:
* This symbol holds the signedness of a Gid_t.
@@ -5224,7 +5324,7 @@
/* Off_t_size:
* This symbol holds the number of bytes used by the Off_t.
*/
-#define Off_t long long /* <offset> type */
+#define Off_t __int64 /* <offset> type */
#define LSEEKSIZE 8 /* <offset> size */
#define Off_t_size 8 /* <offset> size */
@@ -5259,7 +5359,7 @@
/* Uid_t_f:
* This symbol defines the format string used for printing a Uid_t.
*/
-#define Uid_t_f "ld" /**/
+#define Uid_t_f "ld" /**/
/* Uid_t_sign:
* This symbol holds the signedness of a Uid_t.
diff --git a/Master/tlpkg/tlperl/lib/CORE/cop.h b/Master/tlpkg/tlperl/lib/CORE/cop.h
index b5f30bd0415..1b2b7947e1c 100644
--- a/Master/tlpkg/tlperl/lib/CORE/cop.h
+++ b/Master/tlpkg/tlperl/lib/CORE/cop.h
@@ -33,7 +33,7 @@ struct jmpenv {
struct jmpenv * je_prev;
Sigjmp_buf je_buf; /* uninit if je_prev is NULL */
int je_ret; /* last exception thrown */
- bool je_mustcatch; /* need to call longjmp()? */
+ bool je_mustcatch; /* longjmp()s must be caught locally */
U16 je_old_delaymagic; /* saved PL_delaymagic */
SSize_t je_old_stack_hwm;
};
@@ -65,12 +65,12 @@ typedef struct jmpenv JMPENV;
#define JMPENV_BOOTSTRAP \
STMT_START { \
- PERL_POISON_EXPR(PoisonNew(&PL_start_env, 1, JMPENV));\
- PL_top_env = &PL_start_env; \
- PL_start_env.je_prev = NULL; \
- PL_start_env.je_ret = -1; \
- PL_start_env.je_mustcatch = TRUE; \
- PL_start_env.je_old_delaymagic = 0; \
+ PERL_POISON_EXPR(PoisonNew(&PL_start_env, 1, JMPENV));\
+ PL_top_env = &PL_start_env; \
+ PL_start_env.je_prev = NULL; \
+ PL_start_env.je_ret = -1; \
+ PL_start_env.je_mustcatch = TRUE; \
+ PL_start_env.je_old_delaymagic = 0; \
JE_OLD_STACK_HWM_zero; \
} STMT_END
@@ -110,59 +110,78 @@ typedef struct jmpenv JMPENV;
#define dJMPENV JMPENV cur_env
-#define JMPENV_PUSH(v) \
+#define JMPENV_PUSH(v) \
STMT_START { \
- DEBUG_l({ \
- int i = 0; JMPENV *p = PL_top_env; \
- while (p) { i++; p = p->je_prev; } \
- Perl_deb(aTHX_ "JUMPENV_PUSH level=%d at %s:%d\n", \
- i, __FILE__, __LINE__);}) \
- cur_env.je_prev = PL_top_env; \
+ DEBUG_l({ \
+ int i = 0; \
+ JMPENV *p = PL_top_env; \
+ while (p) { i++; p = p->je_prev; } \
+ Perl_deb(aTHX_ "JMPENV_PUSH pre level=%d in %s at %s:%d\n", \
+ i, SAFE_FUNCTION__, __FILE__, __LINE__); \
+ }); \
+ cur_env.je_prev = PL_top_env; \
JE_OLD_STACK_HWM_save(cur_env); \
- cur_env.je_ret = PerlProc_setjmp(cur_env.je_buf, SCOPE_SAVES_SIGNAL_MASK); \
+ /* setjmp() is callable in limited contexts which does not */ \
+ /* include assignment, so switch() instead */ \
+ switch (PerlProc_setjmp(cur_env.je_buf, SCOPE_SAVES_SIGNAL_MASK)) { \
+ case 0: cur_env.je_ret = 0; break; \
+ case 1: cur_env.je_ret = 1; break; \
+ case 2: cur_env.je_ret = 2; break; \
+ case 3: cur_env.je_ret = 3; break; \
+ default: Perl_croak(aTHX_ "panic: unexpected setjmp() result\n"); \
+ } \
JE_OLD_STACK_HWM_restore(cur_env); \
- PL_top_env = &cur_env; \
- cur_env.je_mustcatch = FALSE; \
- cur_env.je_old_delaymagic = PL_delaymagic; \
- (v) = cur_env.je_ret; \
+ PL_top_env = &cur_env; \
+ cur_env.je_mustcatch = FALSE; \
+ cur_env.je_old_delaymagic = PL_delaymagic; \
+ DEBUG_l({ \
+ int i = 0; \
+ JMPENV *p = PL_top_env; \
+ while (p) { i++; p = p->je_prev; } \
+ Perl_deb(aTHX_ "JMPENV_PUSH level=%d ret=%d in %s at %s:%d\n", \
+ i, cur_env.je_ret, SAFE_FUNCTION__, __FILE__, __LINE__); \
+ }); \
+ (v) = cur_env.je_ret; \
} STMT_END
#define JMPENV_POP \
STMT_START { \
- DEBUG_l({ \
- int i = -1; JMPENV *p = PL_top_env; \
- while (p) { i++; p = p->je_prev; } \
- Perl_deb(aTHX_ "JUMPENV_POP level=%d at %s:%d\n", \
- i, __FILE__, __LINE__);}) \
- assert(PL_top_env == &cur_env); \
- PL_delaymagic = cur_env.je_old_delaymagic; \
- PL_top_env = cur_env.je_prev; \
+ DEBUG_l({ \
+ int i = -1; JMPENV *p = PL_top_env; \
+ while (p) { i++; p = p->je_prev; } \
+ Perl_deb(aTHX_ "JMPENV_POP level=%d in %s at %s:%d\n", \
+ i, SAFE_FUNCTION__, __FILE__, __LINE__);}) \
+ assert(PL_top_env == &cur_env); \
+ PL_delaymagic = cur_env.je_old_delaymagic; \
+ PL_top_env = cur_env.je_prev; \
} STMT_END
#define JMPENV_JUMP(v) \
STMT_START { \
- DEBUG_l({ \
- int i = -1; JMPENV *p = PL_top_env; \
- while (p) { i++; p = p->je_prev; } \
- Perl_deb(aTHX_ "JUMPENV_JUMP(%d) level=%d at %s:%d\n", \
- (int)v, i, __FILE__, __LINE__);}) \
- if (PL_top_env->je_prev) \
- PerlProc_longjmp(PL_top_env->je_buf, (v)); \
- if ((v) == 2) \
- PerlProc_exit(STATUS_EXIT); \
- PerlIO_printf(PerlIO_stderr(), "panic: top_env, v=%d\n", (int)v); \
- PerlProc_exit(1); \
+ DEBUG_l({ \
+ int i = -1; JMPENV *p = PL_top_env; \
+ while (p) { i++; p = p->je_prev; } \
+ Perl_deb(aTHX_ "JMPENV_JUMP(%d) level=%d in %s at %s:%d\n", \
+ (int)(v), i, SAFE_FUNCTION__, __FILE__, __LINE__);}) \
+ if (PL_top_env->je_prev) { \
+ assert((v) >= 0 && (v) <= 3); \
+ PerlProc_longjmp(PL_top_env->je_buf, (v)); \
+ } \
+ if ((v) == 2) \
+ PerlProc_exit(STATUS_EXIT); \
+ PerlIO_printf(PerlIO_stderr(), "panic: top_env, v=%d\n", (int)(v)); \
+ PerlProc_exit(1); \
} STMT_END
#define CATCH_GET (PL_top_env->je_mustcatch)
#define CATCH_SET(v) \
STMT_START { \
- DEBUG_l( \
- Perl_deb(aTHX_ \
- "JUMPLEVEL set catch %d => %d (for %p) at %s:%d\n", \
- PL_top_env->je_mustcatch, v, (void*)PL_top_env, \
- __FILE__, __LINE__);) \
- PL_top_env->je_mustcatch = (v); \
+ DEBUG_l( \
+ Perl_deb(aTHX_ \
+ "JUMPLEVEL set catch %d => %d (for %p) in %s at %s:%d\n", \
+ PL_top_env->je_mustcatch, (v), (void*)PL_top_env, \
+ SAFE_FUNCTION__, __FILE__, __LINE__);) \
+ PL_top_env->je_mustcatch = (v); \
} STMT_END
/*
@@ -175,109 +194,93 @@ typedef struct refcounted_he COPHH;
#define COPHH_EXISTS REFCOUNTED_HE_EXISTS
/*
-=for apidoc Amx|SV *|cophh_fetch_pvn|const COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|U32 flags
-
-Look up the entry in the cop hints hash C<cophh> with the key specified by
-C<keypv> and C<keylen>. If C<flags> has the C<COPHH_KEY_UTF8> bit set,
-the key octets are interpreted as UTF-8, otherwise they are interpreted
-as Latin-1. C<hash> is a precomputed hash of the key string, or zero if
-it has not been precomputed. Returns a mortal scalar copy of the value
-associated with the key, or C<&PL_sv_placeholder> if there is no value
-associated with the key.
+=for apidoc Amx|SV *|cophh_fetch_pv |const COPHH *cophh|const char *key |U32 hash|U32 flags
+=for apidoc_item|SV *|cophh_fetch_pvn|const COPHH *cophh|const char *key|STRLEN keylen|U32 hash|U32 flags
+=for apidoc_item|SV *|cophh_fetch_pvs|const COPHH *cophh| "key" |U32 flags
+=for apidoc_item|SV *|cophh_fetch_sv |const COPHH *cophh| SV *key |U32 hash|U32 flags
+
+These look up the entry in the cop hints hash C<cophh> with the key specified by
+C<key> (and C<keylen> in the C<pvn> form), returning that value as a mortal
+scalar copy, or C<&PL_sv_placeholder> if there is no value associated with the
+key.
+
+The forms differ in how the key is specified.
+In the plain C<pv> form, the key is a C language NUL-terminated string.
+In the C<pvs> form, the key is a C language string literal.
+In the C<pvn> form, an additional parameter, C<keylen>, specifies the length of
+the string, which hence, may contain embedded-NUL characters.
+In the C<sv> form, C<*key> is an SV, and the key is the PV extracted from that.
+using C<L</SvPV_const>>.
+
+C<hash> is a precomputed hash of the key string, or zero if it has not been
+precomputed. This parameter is omitted from the C<pvs> form, as it is computed
+automatically at compile time.
+
+The only flag currently used from the C<flags> parameter is C<COPHH_KEY_UTF8>.
+It is illegal to set this in the C<sv> form. In the C<pv*> forms, it specifies
+whether the key octets are interpreted as UTF-8 (if set) or as Latin-1 (if
+cleared). The C<sv> form uses the underlying SV to determine the UTF-8ness of
+the octets.
=for apidoc Amnh||COPHH_KEY_UTF8
=cut
-*/
-
-#define cophh_fetch_pvn(cophh, keypv, keylen, hash, flags) \
- Perl_refcounted_he_fetch_pvn(aTHX_ cophh, keypv, keylen, hash, flags)
-
-/*
-=for apidoc Amx|SV *|cophh_fetch_pvs|const COPHH *cophh|"key"|U32 flags
-Like L</cophh_fetch_pvn>, but takes a literal string instead
-of a string/length pair, and no precomputed hash.
-
-=cut
*/
-#define cophh_fetch_pvs(cophh, key, flags) \
- Perl_refcounted_he_fetch_pvn(aTHX_ cophh, STR_WITH_LEN(key), 0, flags)
+#define cophh_fetch_pvn(cophh, key, keylen, hash, flags) \
+ Perl_refcounted_he_fetch_pvn(aTHX_ cophh, key, keylen, hash, \
+ (flags & COPHH_KEY_UTF8))
-/*
-=for apidoc Amx|SV *|cophh_fetch_pv|const COPHH *cophh|const char *key|U32 hash|U32 flags
+#define cophh_fetch_pvs(cophh, key, flags) \
+ Perl_refcounted_he_fetch_pvn(aTHX_ cophh, STR_WITH_LEN(key), 0, \
+ (flags & COPHH_KEY_UTF8))
-Like L</cophh_fetch_pvn>, but takes a nul-terminated string instead of
-a string/length pair.
+#define cophh_fetch_pv(cophh, key, hash, flags) \
+ Perl_refcounted_he_fetch_pv(aTHX_ cophh, key, hash, \
+ (flags & COPHH_KEY_UTF8))
-=cut
-*/
-
-#define cophh_fetch_pv(cophh, key, hash, flags) \
- Perl_refcounted_he_fetch_pv(aTHX_ cophh, key, hash, flags)
+#define cophh_fetch_sv(cophh, key, hash, flags) \
+ Perl_refcounted_he_fetch_sv(aTHX_ cophh, key, hash, \
+ (flags & COPHH_KEY_UTF8))
/*
-=for apidoc Amx|SV *|cophh_fetch_sv|const COPHH *cophh|SV *key|U32 hash|U32 flags
-
-Like L</cophh_fetch_pvn>, but takes a Perl scalar instead of a
-string/length pair.
-
-=cut
-*/
-
-#define cophh_fetch_sv(cophh, key, hash, flags) \
- Perl_refcounted_he_fetch_sv(aTHX_ cophh, key, hash, flags)
-
-/*
-=for apidoc Amx|bool|cophh_exists_pvn|const COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|U32 flags
-
-Look up the entry in the cop hints hash C<cophh> with the key specified by
-C<keypv> and C<keylen>. If C<flags> has the C<COPHH_KEY_UTF8> bit set,
-the key octets are interpreted as UTF-8, otherwise they are interpreted
-as Latin-1. C<hash> is a precomputed hash of the key string, or zero if
-it has not been precomputed. Returns true if a value exists, and false
-otherwise.
+=for apidoc Amx|bool|cophh_exists_pvn|const COPHH *cophh|const char *key|STRLEN keylen|U32 hash|U32 flags
+
+These look up the hint entry in the cop C<cop> with the key specified by
+C<key> (and C<keylen> in the C<pvn> form), returning true if a value exists,
+and false otherwise.
+
+The forms differ in how the key is specified.
+In the plain C<pv> form, the key is a C language NUL-terminated string.
+In the C<pvs> form, the key is a C language string literal.
+In the C<pvn> form, an additional parameter, C<keylen>, specifies the length of
+the string, which hence, may contain embedded-NUL characters.
+In the C<sv> form, C<*key> is an SV, and the key is the PV extracted from that.
+using C<L</SvPV_const>>.
+
+C<hash> is a precomputed hash of the key string, or zero if it has not been
+precomputed. This parameter is omitted from the C<pvs> form, as it is computed
+automatically at compile time.
+
+The only flag currently used from the C<flags> parameter is C<COPHH_KEY_UTF8>.
+It is illegal to set this in the C<sv> form. In the C<pv*> forms, it specifies
+whether the key octets are interpreted as UTF-8 (if set) or as Latin-1 (if
+cleared). The C<sv> form uses the underlying SV to determine the UTF-8ness of
+the octets.
=cut
*/
-#define cophh_exists_pvn(cophh, keypv, keylen, hash, flags) \
- cBOOL(Perl_refcounted_he_fetch_pvn(aTHX_ cophh, keypv, keylen, hash, flags | COPHH_EXISTS))
-
-/*
-=for apidoc Amx|bool|cophh_exists_pvs|const COPHH *cophh|"key"|U32 flags
-
-Like L</cophh_exists_pvn>, but takes a literal string instead
-of a string/length pair, and no precomputed hash.
-
-=cut
-*/
+#define cophh_exists_pvn(cophh, key, keylen, hash, flags) \
+ cBOOL(Perl_refcounted_he_fetch_pvn(aTHX_ cophh, key, keylen, hash, flags | COPHH_EXISTS))
#define cophh_exists_pvs(cophh, key, flags) \
cBOOL(Perl_refcounted_he_fetch_pvn(aTHX_ cophh, STR_WITH_LEN(key), 0, flags | COPHH_EXISTS))
-/*
-=for apidoc Amx|bool|cophh_exists_pv|const COPHH *cophh|const char *key|U32 hash|U32 flags
-
-Like L</cophh_exists_pvn>, but takes a nul-terminated string instead of
-a string/length pair.
-
-=cut
-*/
-
#define cophh_exists_pv(cophh, key, hash, flags) \
cBOOL(Perl_refcounted_he_fetch_pv(aTHX_ cophh, key, hash, flags | COPHH_EXISTS))
-/*
-=for apidoc Amx|bool|cophh_exists_sv|const COPHH *cophh|SV *key|U32 hash|U32 flags
-
-Like L</cophh_exists_pvn>, but takes a Perl scalar instead of a
-string/length pair.
-
-=cut
-*/
-
#define cophh_exists_sv(cophh, key, hash, flags) \
cBOOL(Perl_refcounted_he_fetch_sv(aTHX_ cophh, key, hash, flags | COPHH_EXISTS))
@@ -326,122 +329,102 @@ Generate and return a fresh cop hints hash containing no entries.
#define cophh_new_empty() ((COPHH *)NULL)
/*
-=for apidoc Amx|COPHH *|cophh_store_pvn|COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|SV *value|U32 flags
+=for apidoc Amx|COPHH *|cophh_store_pv |COPHH *cophh|const char *key |U32 hash|SV *value|U32 flags
+=for apidoc_item|COPHH *|cophh_store_pvn|COPHH *cophh|const char *key|STRLEN keylen|U32 hash|SV *value|U32 flags
+=for apidoc_item|COPHH *|cophh_store_pvs|COPHH *cophh| "key" |SV *value|U32 flags
+=for apidoc_item|COPHH *|cophh_store_sv |COPHH *cophh| SV *key |U32 hash|SV *value|U32 flags
-Stores a value, associated with a key, in the cop hints hash C<cophh>,
-and returns the modified hash. The returned hash pointer is in general
+These store a value, associated with a key, in the cop hints hash C<cophh>,
+and return the modified hash. The returned hash pointer is in general
not the same as the hash pointer that was passed in. The input hash is
consumed by the function, and the pointer to it must not be subsequently
used. Use L</cophh_copy> if you need both hashes.
-The key is specified by C<keypv> and C<keylen>. If C<flags> has the
-C<COPHH_KEY_UTF8> bit set, the key octets are interpreted as UTF-8,
-otherwise they are interpreted as Latin-1. C<hash> is a precomputed
-hash of the key string, or zero if it has not been precomputed.
-
C<value> is the scalar value to store for this key. C<value> is copied
-by this function, which thus does not take ownership of any reference
-to it, and later changes to the scalar will not be reflected in the
-value visible in the cop hints hash. Complex types of scalar will not
-be stored with referential integrity, but will be coerced to strings.
+by these functions, which thus do not take ownership of any reference
+to it, and hence later changes to the scalar will not be reflected in the value
+visible in the cop hints hash. Complex types of scalar will not be stored with
+referential integrity, but will be coerced to strings.
+
+The forms differ in how the key is specified. In all forms, the key is pointed
+to by C<key>.
+In the plain C<pv> form, the key is a C language NUL-terminated string.
+In the C<pvs> form, the key is a C language string literal.
+In the C<pvn> form, an additional parameter, C<keylen>, specifies the length of
+the string, which hence, may contain embedded-NUL characters.
+In the C<sv> form, C<*key> is an SV, and the key is the PV extracted from that.
+using C<L</SvPV_const>>.
+
+C<hash> is a precomputed hash of the key string, or zero if it has not been
+precomputed. This parameter is omitted from the C<pvs> form, as it is computed
+automatically at compile time.
+
+The only flag currently used from the C<flags> parameter is C<COPHH_KEY_UTF8>.
+It is illegal to set this in the C<sv> form. In the C<pv*> forms, it specifies
+whether the key octets are interpreted as UTF-8 (if set) or as Latin-1 (if
+cleared). The C<sv> form uses the underlying SV to determine the UTF-8ness of
+the octets.
=cut
*/
-#define cophh_store_pvn(cophh, keypv, keylen, hash, value, flags) \
- Perl_refcounted_he_new_pvn(aTHX_ cophh, keypv, keylen, hash, value, flags)
-
-/*
-=for apidoc Amx|COPHH *|cophh_store_pvs|COPHH *cophh|"key"|SV *value|U32 flags
-
-Like L</cophh_store_pvn>, but takes a literal string instead
-of a string/length pair, and no precomputed hash.
-
-=cut
-*/
+#define cophh_store_pvn(cophh, key, keylen, hash, value, flags) \
+ Perl_refcounted_he_new_pvn(aTHX_ cophh, key, keylen, hash, value, flags)
#define cophh_store_pvs(cophh, key, value, flags) \
Perl_refcounted_he_new_pvn(aTHX_ cophh, STR_WITH_LEN(key), 0, value, flags)
-/*
-=for apidoc Amx|COPHH *|cophh_store_pv|COPHH *cophh|const char *key|U32 hash|SV *value|U32 flags
-
-Like L</cophh_store_pvn>, but takes a nul-terminated string instead of
-a string/length pair.
-
-=cut
-*/
-
#define cophh_store_pv(cophh, key, hash, value, flags) \
Perl_refcounted_he_new_pv(aTHX_ cophh, key, hash, value, flags)
-/*
-=for apidoc Amx|COPHH *|cophh_store_sv|COPHH *cophh|SV *key|U32 hash|SV *value|U32 flags
-
-Like L</cophh_store_pvn>, but takes a Perl scalar instead of a
-string/length pair.
-
-=cut
-*/
-
#define cophh_store_sv(cophh, key, hash, value, flags) \
Perl_refcounted_he_new_sv(aTHX_ cophh, key, hash, value, flags)
/*
-=for apidoc Amx|COPHH *|cophh_delete_pvn|COPHH *cophh|const char *keypv|STRLEN keylen|U32 hash|U32 flags
+=for apidoc Amx|COPHH *|cophh_delete_pv |COPHH *cophh|const char *key |U32 hash|U32 flags
+=for apidoc_item|COPHH *|cophh_delete_pvn|COPHH *cophh|const char *key|STRLEN keylen|U32 hash|U32 flags
+=for apidoc_item|COPHH *|cophh_delete_pvs|COPHH *cophh| "key" |U32 flags
+=for apidoc_item|COPHH *|cophh_delete_sv |COPHH *cophh| SV *key |U32 hash|U32 flags
-Delete a key and its associated value from the cop hints hash C<cophh>,
-and returns the modified hash. The returned hash pointer is in general
+These delete a key and its associated value from the cop hints hash C<cophh>,
+and return the modified hash. The returned hash pointer is in general
not the same as the hash pointer that was passed in. The input hash is
consumed by the function, and the pointer to it must not be subsequently
used. Use L</cophh_copy> if you need both hashes.
-The key is specified by C<keypv> and C<keylen>. If C<flags> has the
-C<COPHH_KEY_UTF8> bit set, the key octets are interpreted as UTF-8,
-otherwise they are interpreted as Latin-1. C<hash> is a precomputed
-hash of the key string, or zero if it has not been precomputed.
+The forms differ in how the key is specified. In all forms, the key is pointed
+to by C<key>.
+In the plain C<pv> form, the key is a C language NUL-terminated string.
+In the C<pvs> form, the key is a C language string literal.
+In the C<pvn> form, an additional parameter, C<keylen>, specifies the length of
+the string, which hence, may contain embedded-NUL characters.
+In the C<sv> form, C<*key> is an SV, and the key is the PV extracted from that.
+using C<L</SvPV_const>>.
+
+C<hash> is a precomputed hash of the key string, or zero if it has not been
+precomputed. This parameter is omitted from the C<pvs> form, as it is computed
+automatically at compile time.
+
+The only flag currently used from the C<flags> parameter is C<COPHH_KEY_UTF8>.
+It is illegal to set this in the C<sv> form. In the C<pv*> forms, it specifies
+whether the key octets are interpreted as UTF-8 (if set) or as Latin-1 (if
+cleared). The C<sv> form uses the underlying SV to determine the UTF-8ness of
+the octets.
=cut
*/
-#define cophh_delete_pvn(cophh, keypv, keylen, hash, flags) \
- Perl_refcounted_he_new_pvn(aTHX_ cophh, keypv, keylen, hash, \
- (SV *)NULL, flags)
-
-/*
-=for apidoc Amx|COPHH *|cophh_delete_pvs|COPHH *cophh|"key"|U32 flags
-
-Like L</cophh_delete_pvn>, but takes a literal string instead
-of a string/length pair, and no precomputed hash.
-
-=cut
-*/
+#define cophh_delete_pvn(cophh, key, keylen, hash, flags) \
+ Perl_refcounted_he_new_pvn(aTHX_ cophh, key, keylen, hash, \
+ (SV *)NULL, flags)
#define cophh_delete_pvs(cophh, key, flags) \
Perl_refcounted_he_new_pvn(aTHX_ cophh, STR_WITH_LEN(key), 0, \
- (SV *)NULL, flags)
-
-/*
-=for apidoc Amx|COPHH *|cophh_delete_pv|COPHH *cophh|char *key|U32 hash|U32 flags
-
-Like L</cophh_delete_pvn>, but takes a nul-terminated string instead of
-a string/length pair.
-
-=cut
-*/
+ (SV *)NULL, flags)
#define cophh_delete_pv(cophh, key, hash, flags) \
Perl_refcounted_he_new_pv(aTHX_ cophh, key, hash, (SV *)NULL, flags)
-/*
-=for apidoc Amx|COPHH *|cophh_delete_sv|COPHH *cophh|SV *key|U32 hash|U32 flags
-
-Like L</cophh_delete_pvn>, but takes a Perl scalar instead of a
-string/length pair.
-
-=cut
-*/
-
#define cophh_delete_sv(cophh, key, hash, flags) \
Perl_refcounted_he_new_sv(aTHX_ cophh, key, hash, (SV *)NULL, flags)
@@ -455,16 +438,21 @@ struct cop {
/* label for this construct is now stored in cop_hints_hash */
#ifdef USE_ITHREADS
PADOFFSET cop_stashoff; /* offset into PL_stashpad, for the
- package the line was compiled in */
- char * cop_file; /* name of file this command is from */
+ package the line was compiled in */
+ char * cop_file; /* rcpv containing name of file this command is from */
#else
HV * cop_stash; /* package line was compiled in */
GV * cop_filegv; /* name of GV file this command is from */
#endif
U32 cop_hints; /* hints bits from pragmata */
U32 cop_seq; /* parse sequence number */
- /* Beware. mg.c and warnings.pl assume the type of this is STRLEN *: */
- STRLEN * cop_warnings; /* lexical warnings bitmask */
+ char * cop_warnings; /* Lexical warnings bitmask vector.
+ Refcounted shared copy of ${^WARNING_BITS}.
+ This pointer either points at one of the
+ magic values for warnings, or it points
+ at a buffer constructed with rcpv_new().
+ Use the RCPV_LEN() macro to get its length.
+ */
/* compile time state of %^H. See the comment in op.c for how this is
used to recreate a hash to return from caller. */
COPHH * cop_hints_hash;
@@ -480,11 +468,18 @@ struct cop {
=for apidoc Am|const char *|CopFILE|const COP * c
Returns the name of the file associated with the C<COP> C<c>
-=for apidoc Am|STRLEN|CopLINE|const COP * c
+=for apidoc Am|const char *|CopFILE_LEN|const COP * c
+Returns the length of the file associated with the C<COP> C<c>
+
+=for apidoc Am|line_t|CopLINE|const COP * c
Returns the line number in the source code associated with the C<COP> C<c>
=for apidoc Am|AV *|CopFILEAV|const COP * c
-Returns the AV associated with the C<COP> C<c>
+Returns the AV associated with the C<COP> C<c>, creating it if necessary.
+
+=for apidoc Am|AV *|CopFILEAVn|const COP * c
+Returns the AV associated with the C<COP> C<c>, returning NULL if it
+doesn't already exist.
=for apidoc Am|SV *|CopFILESV|const COP * c
Returns the SV associated with the C<COP> C<c>
@@ -492,6 +487,17 @@ Returns the SV associated with the C<COP> C<c>
=for apidoc Am|void|CopFILE_set|COP * c|const char * pv
Makes C<pv> the name of the file associated with the C<COP> C<c>
+=for apidoc Am|void|CopFILE_setn|COP * c|const char * pv|STRLEN len
+Makes C<pv> the name of the file associated with the C<COP> C<c>
+
+=for apidoc Am|void|CopFILE_copy|COP * dst|COP * src
+Efficiently copies the cop file name from one COP to another. Wraps
+the required logic to do a refcounted copy under threads or not.
+
+=for apidoc Am|void|CopFILE_free|COP * c
+Frees the file data in a cop. Under the hood this is a refcounting
+operation.
+
=for apidoc Am|GV *|CopFILEGV|const COP * c
Returns the GV associated with the C<COP> C<c>
@@ -519,39 +525,132 @@ string C<p>, creating the package if necessary.
=cut
*/
+/*
+=for apidoc Am|RCPV *|RCPVx|char *pv
+Returns the RCPV structure (struct rcpv) for a refcounted
+string pv created with C<rcpv_new()>.
+No checks are performed to ensure that C<pv> was actually allocated
+with C<rcpv_new()>, it is the callers responsibility to ensure that
+this is the case.
+
+=for apidoc Am|RCPV *|RCPV_REFCOUNT|char *pv
+Returns the refcount for a pv created with C<rcpv_new()>.
+No checks are performed to ensure that C<pv> was actually allocated
+with C<rcpv_new()>, it is the callers responsibility to ensure that
+this is the case.
+
+=for apidoc Am|RCPV *|RCPV_REFCNT_inc|char *pv
+Increments the refcount for a C<char *> pointer which was created
+with a call to C<rcpv_new()>. Same as calling rcpv_copy().
+No checks are performed to ensure that C<pv> was actually allocated
+with C<rcpv_new()>, it is the callers responsibility to ensure that
+this is the case.
+
+=for apidoc Am|RCPV *|RCPV_REFCNT_dec|char *pv
+Decrements the refcount for a C<char *> pointer which was created
+with a call to C<rcpv_new()>. Same as calling rcpv_free().
+No checks are performed to ensure that C<pv> was actually allocated
+with C<rcpv_new()>, it is the callers responsibility to ensure that
+this is the case.
+
+=for apidoc Am|RCPV *|RCPV_LEN|char *pv
+Returns the length of a pv created with C<rcpv_new()>.
+Note that this reflects the length of the string from the callers
+point of view, it does not include the mandatory null which is
+always injected at the end of the string by rcpv_new().
+No checks are performed to ensure that C<pv> was actually allocated
+with C<rcpv_new()>, it is the callers responsibility to ensure that
+this is the case.
+
+=cut
+*/
+
+struct rcpv {
+ STRLEN refcount; /* UV would mean a 64 refcnt on
+ 32 bit builds with -Duse64bitint */
+ STRLEN len; /* length of string including mandatory
+ null byte at end */
+ char pv[1];
+};
+typedef struct rcpv RCPV;
+
+#define RCPVf_USE_STRLEN (1 << 0)
+#define RCPVf_NO_COPY (1 << 1)
+#define RCPVf_ALLOW_EMPTY (1 << 2)
+
+#define RCPVx(pv_arg) ((RCPV *)((pv_arg) - STRUCT_OFFSET(struct rcpv, pv)))
+#define RCPV_REFCOUNT(pv) (RCPVx(pv)->refcount)
+#define RCPV_LEN(pv) (RCPVx(pv)->len-1) /* len always includes space for a null */
+#define RCPV_REFCNT_inc(pv) rcpv_copy(pv)
+#define RCPV_REFCNT_dec(pv) rcpv_free(pv)
+
#ifdef USE_ITHREADS
-# define CopFILE(c) ((c)->cop_file)
+
+# define CopFILE(c) ((c)->cop_file)
+# define CopFILE_LEN(c) (CopFILE(c) ? RCPV_LEN(CopFILE(c)) : 0)
# define CopFILEGV(c) (CopFILE(c) \
- ? gv_fetchfile(CopFILE(c)) : NULL)
+ ? gv_fetchfile(CopFILE(c)) : NULL)
+
+# define CopFILE_set_x(c,pv) ((c)->cop_file = rcpv_new((pv),0,RCPVf_USE_STRLEN))
+# define CopFILE_setn_x(c,pv,l) ((c)->cop_file = rcpv_new((pv),(l),0))
+# define CopFILE_free_x(c) ((c)->cop_file = rcpv_free((c)->cop_file))
+# define CopFILE_copy_x(dst,src) ((dst)->cop_file = rcpv_copy((src)->cop_file))
+
+/* change condition to 1 && to enable this debugging */
+# define CopFILE_debug(c,t,rk) \
+ if (0 && (c)->cop_file) \
+ PerlIO_printf(Perl_debug_log, \
+ "%-14s THX:%p OP:%p PV:%p rc: " \
+ "%6zu fn: '%.*s' at %s line %d\n", \
+ (t), aTHX, (c), (c)->cop_file, \
+ RCPV_REFCOUNT((c)->cop_file)-rk, \
+ (int)RCPV_LEN((c)->cop_file), \
+ (c)->cop_file,__FILE__,__LINE__) \
+
+
+# define CopFILE_set(c,pv) \
+ STMT_START { \
+ CopFILE_set_x(c,pv); \
+ CopFILE_debug(c,"CopFILE_set", 0); \
+ } STMT_END
+
+# define CopFILE_setn(c,pv,l) \
+ STMT_START { \
+ CopFILE_setn_x(c,pv,l); \
+ CopFILE_debug(c,"CopFILE_setn", 0); \
+ } STMT_END
+
+# define CopFILE_copy(dst,src) \
+ STMT_START { \
+ CopFILE_copy_x((dst),(src)); \
+ CopFILE_debug((dst),"CopFILE_copy", 0); \
+ } STMT_END
+
+# define CopFILE_free(c) \
+ STMT_START { \
+ CopFILE_debug((c),"CopFILE_free", 1); \
+ CopFILE_free_x(c); \
+ } STMT_END
-# ifdef NETWARE
-# define CopFILE_set(c,pv) ((c)->cop_file = savepv(pv))
-# define CopFILE_setn(c,pv,l) ((c)->cop_file = savepvn((pv),(l)))
-# else
-# define CopFILE_set(c,pv) ((c)->cop_file = savesharedpv(pv))
-# define CopFILE_setn(c,pv,l) ((c)->cop_file = savesharedpvn((pv),(l)))
-# endif
# define CopFILESV(c) (CopFILE(c) \
- ? GvSV(gv_fetchfile(CopFILE(c))) : NULL)
+ ? GvSV(gv_fetchfile(CopFILE(c))) : NULL)
# define CopFILEAV(c) (CopFILE(c) \
- ? GvAV(gv_fetchfile(CopFILE(c))) : NULL)
+ ? GvAV(gv_fetchfile(CopFILE(c))) : NULL)
# define CopFILEAVx(c) (assert_(CopFILE(c)) \
- GvAV(gv_fetchfile(CopFILE(c))))
-
+ GvAV(gv_fetchfile(CopFILE(c))))
+# define CopFILEAVn(c) (cop_file_avn(c))
# define CopSTASH(c) PL_stashpad[(c)->cop_stashoff]
# define CopSTASH_set(c,hv) ((c)->cop_stashoff = (hv) \
- ? alloccopstash(hv) \
- : 0)
-# ifdef NETWARE
-# define CopFILE_free(c) SAVECOPFILE_FREE(c)
-# else
-# define CopFILE_free(c) (PerlMemShared_free(CopFILE(c)),(CopFILE(c) = NULL))
-# endif
-#else /* Above: no threads; Below yes threads */
+ ? alloccopstash(hv) \
+ : 0)
+
+#else /* Above: yes threads; Below no threads */
+
# define CopFILEGV(c) ((c)->cop_filegv)
# define CopFILEGV_set(c,gv) ((c)->cop_filegv = (GV*)SvREFCNT_inc(gv))
# define CopFILE_set(c,pv) CopFILEGV_set((c), gv_fetchfile(pv))
+# define CopFILE_copy(dst,src) CopFILEGV_set((dst),CopFILEGV(src))
# define CopFILE_setn(c,pv,l) CopFILEGV_set((c), gv_fetchfile_flags((pv),(l),0))
# define CopFILESV(c) (CopFILEGV(c) ? GvSV(CopFILEGV(c)) : NULL)
# define CopFILEAV(c) (CopFILEGV(c) ? GvAV(CopFILEGV(c)) : NULL)
@@ -560,8 +659,11 @@ string C<p>, creating the package if necessary.
# else
# define CopFILEAVx(c) (GvAV(CopFILEGV(c)))
# endif
+# define CopFILEAVn(c) (CopFILEGV(c) ? GvAVn(CopFILEGV(c)) : NULL)
# define CopFILE(c) (CopFILEGV(c) /* +2 for '_<' */ \
- ? GvNAME(CopFILEGV(c))+2 : NULL)
+ ? GvNAME(CopFILEGV(c))+2 : NULL)
+# define CopFILE_LEN(c) (CopFILEGV(c) /* -2 for '_<' */ \
+ ? GvNAMELEN(CopFILEGV(c))-2 : 0)
# define CopSTASH(c) ((c)->cop_stash)
# define CopSTASH_set(c,hv) ((c)->cop_stash = (hv))
# define CopFILE_free(c) (SvREFCNT_dec(CopFILEGV(c)),(CopFILEGV(c) = NULL))
@@ -576,108 +678,93 @@ string C<p>, creating the package if necessary.
#define CopHINTHASH_get(c) ((COPHH*)((c)->cop_hints_hash))
#define CopHINTHASH_set(c,h) ((c)->cop_hints_hash = (h))
-/*
-=for apidoc Am|SV *|cop_hints_fetch_pvn|const COP *cop|const char *keypv|STRLEN keylen|U32 hash|U32 flags
-
-Look up the hint entry in the cop C<cop> with the key specified by
-C<keypv> and C<keylen>. If C<flags> has the C<COPHH_KEY_UTF8> bit set,
-the key octets are interpreted as UTF-8, otherwise they are interpreted
-as Latin-1. C<hash> is a precomputed hash of the key string, or zero if
-it has not been precomputed. Returns a mortal scalar copy of the value
-associated with the key, or C<&PL_sv_placeholder> if there is no value
-associated with the key.
-
-=cut
-*/
-
-#define cop_hints_fetch_pvn(cop, keypv, keylen, hash, flags) \
- cophh_fetch_pvn(CopHINTHASH_get(cop), keypv, keylen, hash, flags)
+#define CopFEATURES_setfrom(dst, src) ((dst)->cop_features = (src)->cop_features)
/*
-=for apidoc Am|SV *|cop_hints_fetch_pvs|const COP *cop|"key"|U32 flags
-
-Like L</cop_hints_fetch_pvn>, but takes a literal string
-instead of a string/length pair, and no precomputed hash.
+=for apidoc Am|SV *|cop_hints_fetch_pv |const COP *cop|const char *key |U32 hash|U32 flags
+=for apidoc_item|SV *|cop_hints_fetch_pvn|const COP *cop|const char *key|STRLEN keylen|U32 hash|U32 flags
+=for apidoc_item|SV *|cop_hints_fetch_pvs|const COP *cop| "key" |U32 flags
+=for apidoc_item|SV *|cop_hints_fetch_sv |const COP *cop| SV *key |U32 hash|U32 flags
+
+These look up the hint entry in the cop C<cop> with the key specified by
+C<key> (and C<keylen> in the C<pvn> form), returning that value as a mortal
+scalar copy, or C<&PL_sv_placeholder> if there is no value associated with the
+key.
+
+The forms differ in how the key is specified.
+In the plain C<pv> form, the key is a C language NUL-terminated string.
+In the C<pvs> form, the key is a C language string literal.
+In the C<pvn> form, an additional parameter, C<keylen>, specifies the length of
+the string, which hence, may contain embedded-NUL characters.
+In the C<sv> form, C<*key> is an SV, and the key is the PV extracted from that.
+using C<L</SvPV_const>>.
+
+C<hash> is a precomputed hash of the key string, or zero if it has not been
+precomputed. This parameter is omitted from the C<pvs> form, as it is computed
+automatically at compile time.
+
+The only flag currently used from the C<flags> parameter is C<COPHH_KEY_UTF8>.
+It is illegal to set this in the C<sv> form. In the C<pv*> forms, it specifies
+whether the key octets are interpreted as UTF-8 (if set) or as Latin-1 (if
+cleared). The C<sv> form uses the underlying SV to determine the UTF-8ness of
+the octets.
=cut
*/
+#define cop_hints_fetch_pvn(cop, key, keylen, hash, flags) \
+ cophh_fetch_pvn(CopHINTHASH_get(cop), key, keylen, hash, flags)
+
#define cop_hints_fetch_pvs(cop, key, flags) \
cophh_fetch_pvs(CopHINTHASH_get(cop), key, flags)
-/*
-=for apidoc Am|SV *|cop_hints_fetch_pv|const COP *cop|const char *key|U32 hash|U32 flags
-
-Like L</cop_hints_fetch_pvn>, but takes a nul-terminated string instead
-of a string/length pair.
-
-=cut
-*/
-
#define cop_hints_fetch_pv(cop, key, hash, flags) \
cophh_fetch_pv(CopHINTHASH_get(cop), key, hash, flags)
-/*
-=for apidoc Am|SV *|cop_hints_fetch_sv|const COP *cop|SV *key|U32 hash|U32 flags
-
-Like L</cop_hints_fetch_pvn>, but takes a Perl scalar instead of a
-string/length pair.
-
-=cut
-*/
-
#define cop_hints_fetch_sv(cop, key, hash, flags) \
cophh_fetch_sv(CopHINTHASH_get(cop), key, hash, flags)
/*
-=for apidoc Am|bool|cop_hints_exists_pvn|const COP *cop|const char *keypv|STRLEN keylen|U32 hash|U32 flags
-
-Look up the hint entry in the cop C<cop> with the key specified by
-C<keypv> and C<keylen>. If C<flags> has the C<COPHH_KEY_UTF8> bit set,
-the key octets are interpreted as UTF-8, otherwise they are interpreted
-as Latin-1. C<hash> is a precomputed hash of the key string, or zero if
-it has not been precomputed. Returns true if a value exists, and false
-otherwise.
+=for apidoc Am|bool|cop_hints_exists_pv |const COP *cop|const char *key|U32 hash |U32 flags
+=for apidoc_item|bool|cop_hints_exists_pvn|const COP *cop|const char *key|STRLEN keylen|U32 hash|U32 flags
+=for apidoc_item|bool|cop_hints_exists_pvs|const COP *cop| "key" |U32 flags
+=for apidoc_item|bool|cop_hints_exists_sv |const COP *cop| SV *key |U32 hash|U32 flags
+
+These look up the hint entry in the cop C<cop> with the key specified by
+C<key> (and C<keylen> in the C<pvn> form), returning true if a value exists,
+and false otherwise.
+
+The forms differ in how the key is specified. In all forms, the key is pointed
+to by C<key>.
+In the plain C<pv> form, the key is a C language NUL-terminated string.
+In the C<pvs> form, the key is a C language string literal.
+In the C<pvn> form, an additional parameter, C<keylen>, specifies the length of
+the string, which hence, may contain embedded-NUL characters.
+In the C<sv> form, C<*key> is an SV, and the key is the PV extracted from that.
+using C<L</SvPV_const>>.
+
+C<hash> is a precomputed hash of the key string, or zero if it has not been
+precomputed. This parameter is omitted from the C<pvs> form, as it is computed
+automatically at compile time.
+
+The only flag currently used from the C<flags> parameter is C<COPHH_KEY_UTF8>.
+It is illegal to set this in the C<sv> form. In the C<pv*> forms, it specifies
+whether the key octets are interpreted as UTF-8 (if set) or as Latin-1 (if
+cleared). The C<sv> form uses the underlying SV to determine the UTF-8ness of
+the octets.
=cut
*/
-#define cop_hints_exists_pvn(cop, keypv, keylen, hash, flags) \
- cophh_exists_pvn(CopHINTHASH_get(cop), keypv, keylen, hash, flags)
-
-/*
-=for apidoc Am|bool|cop_hints_exists_pvs|const COP *cop|"key"|U32 flags
-
-Like L</cop_hints_exists_pvn>, but takes a literal string
-instead of a string/length pair, and no precomputed hash.
-
-=cut
-*/
+#define cop_hints_exists_pvn(cop, key, keylen, hash, flags) \
+ cophh_exists_pvn(CopHINTHASH_get(cop), key, keylen, hash, flags)
#define cop_hints_exists_pvs(cop, key, flags) \
cophh_exists_pvs(CopHINTHASH_get(cop), key, flags)
-/*
-=for apidoc Am|bool|cop_hints_exists_pv|const COP *cop|const char *key|U32 hash|U32 flags
-
-Like L</cop_hints_exists_pvn>, but takes a nul-terminated string instead
-of a string/length pair.
-
-=cut
-*/
-
#define cop_hints_exists_pv(cop, key, hash, flags) \
cophh_exists_pv(CopHINTHASH_get(cop), key, hash, flags)
-/*
-=for apidoc Am|bool|cop_hints_exists_sv|const COP *cop|SV *key|U32 hash|U32 flags
-
-Like L</cop_hints_exists_pvn>, but takes a Perl scalar instead of a
-string/length pair.
-
-=cut
-*/
-
#define cop_hints_exists_sv(cop, key, hash, flags) \
cophh_exists_sv(CopHINTHASH_get(cop), key, hash, flags)
@@ -695,19 +782,17 @@ be zero.
cophh_2hv(CopHINTHASH_get(cop), flags)
/*
-=for apidoc Am|const char *|CopLABEL|COP *const cop
-
-Returns the label attached to a cop.
+=for apidoc Am|const char *|CopLABEL |COP *const cop
+=for apidoc_item|const char *|CopLABEL_len |COP *const cop|STRLEN *len
+=for apidoc_item|const char *|CopLABEL_len_flags|COP *const cop|STRLEN *len|U32 *flags
-=for apidoc Am|const char *|CopLABEL_len|COP *const cop|STRLEN *len
+These return the label attached to a cop.
-Returns the label attached to a cop, and stores its length in bytes into
-C<*len>.
+C<CopLABEL_len> and C<CopLABEL_len_flags> additionally store the number of
+bytes comprising the returned label into C<*len>.
-=for apidoc Am|const char *|CopLABEL_len_flags|COP *const cop|STRLEN *len|U32 *flags
-
-Returns the label attached to a cop, and stores its length in bytes into
-C<*len>. Upon return, C<*flags> will be set to either C<SVf_UTF8> or 0.
+C<CopLABEL_len_flags> additionally returns the UTF-8ness of the returned label,
+by setting C<*flags> to 0 or C<SVf_UTF8>.
=cut
*/
@@ -728,8 +813,8 @@ C<*len>. Upon return, C<*flags> will be set to either C<SVf_UTF8> or 0.
#define CopHINTS_get(c) ((c)->cop_hints + 0)
#define CopHINTS_set(c, h) STMT_START { \
- (c)->cop_hints = (h); \
- } STMT_END
+ (c)->cop_hints = (h); \
+ } STMT_END
/*
* Here we have some enormously heavy (or at least ponderous) wizardry.
@@ -781,20 +866,20 @@ struct block_format {
#endif
#define CX_PUSHSUB_GET_LVALUE_MASK(func) \
- /* If the context is indeterminate, then only the lvalue */ \
- /* flags that the caller also has are applicable. */ \
- ( \
- (PL_op->op_flags & OPf_WANT) \
- ? OPpENTERSUB_LVAL_MASK \
- : !(PL_op->op_private & OPpENTERSUB_LVAL_MASK) \
- ? 0 : (U8)func(aTHX) \
- )
+ /* If the context is indeterminate, then only the lvalue */ \
+ /* flags that the caller also has are applicable. */ \
+ ( \
+ (PL_op->op_flags & OPf_WANT) \
+ ? OPpENTERSUB_LVAL_MASK \
+ : !(PL_op->op_private & OPpENTERSUB_LVAL_MASK) \
+ ? 0 : (U8)func(aTHX) \
+ )
/* Restore old @_ */
#define CX_POP_SAVEARRAY(cx) \
STMT_START { \
AV *cx_pop_savearray_av = GvAV(PL_defgv); \
- GvAV(PL_defgv) = cx->blk_sub.savearray; \
+ GvAV(PL_defgv) = cx->blk_sub.savearray; \
cx->blk_sub.savearray = NULL; \
SvREFCNT_dec(cx_pop_savearray_av); \
} STMT_END
@@ -803,9 +888,9 @@ struct block_format {
* leave any (a fast av_clear(ary), basically) */
#define CLEAR_ARGARRAY(ary) \
STMT_START { \
- AvMAX(ary) += AvARRAY(ary) - AvALLOC(ary); \
- AvARRAY(ary) = AvALLOC(ary); \
- AvFILLp(ary) = -1; \
+ AvMAX(ary) += AvARRAY(ary) - AvALLOC(ary); \
+ AvARRAY(ary) = AvALLOC(ary); \
+ AvFILLp(ary) = -1; \
} STMT_END
@@ -827,7 +912,7 @@ struct block_eval {
/* blk_u16 bit usage for eval contexts: */
-#define CxOLD_IN_EVAL(cx) (((cx)->blk_u16) & 0x3F) /* saved PL in_eval */
+#define CxOLD_IN_EVAL(cx) (((cx)->blk_u16) & 0x3F) /* saved PL_in_eval */
#define CxEVAL_TXT_REFCNTED(cx) (((cx)->blk_u16) & 0x40) /* cur_text rc++ */
#define CxOLD_OP_TYPE(cx) (((cx)->blk_u16) >> 7) /* type of eval op */
@@ -835,27 +920,27 @@ struct block_eval {
struct block_loop {
LOOP * my_op; /* My op, that contains redo, next and last ops. */
union { /* different ways of locating the iteration variable */
- SV **svp; /* for lexicals: address of pad slot */
- GV *gv; /* for package vars */
+ SV **svp; /* for lexicals: address of pad slot */
+ GV *gv; /* for package vars */
} itervar_u;
SV *itersave; /* the original iteration var */
union {
- struct { /* CXt_LOOP_ARY, C<for (@ary)> */
- AV *ary; /* array being iterated over */
- IV ix; /* index relative to base of array */
- } ary;
- struct { /* CXt_LOOP_LIST, C<for (list)> */
- I32 basesp; /* first element of list on stack */
- IV ix; /* index relative to basesp */
- } stack;
- struct { /* CXt_LOOP_LAZYIV, C<for (1..9)> */
- IV cur;
- IV end;
- } lazyiv;
- struct { /* CXt_LOOP_LAZYSV C<for ('a'..'z')> */
- SV * cur;
- SV * end; /* maxiumum value (or minimum in reverse) */
- } lazysv;
+ struct { /* CXt_LOOP_ARY, C<for (@ary)> */
+ AV *ary; /* array being iterated over */
+ IV ix; /* index relative to base of array */
+ } ary;
+ struct { /* CXt_LOOP_LIST, C<for (list)> */
+ I32 basesp; /* first element of list on stack */
+ IV ix; /* index relative to basesp */
+ } stack;
+ struct { /* CXt_LOOP_LAZYIV, C<for (1..9)> */
+ IV cur;
+ IV end;
+ } lazyiv;
+ struct { /* CXt_LOOP_LAZYSV C<for ('a'..'z')> */
+ SV * cur;
+ SV * end; /* maximum value (or minimum in reverse) */
+ } lazysv;
} state_u;
#ifdef USE_ITHREADS
PAD *oldcomppad; /* needed to map itervar_u.svp during thread clone */
@@ -869,9 +954,9 @@ struct block_loop {
? &GvSV((c)->blk_loop.itervar_u.gv) \
: (SV **)&(c)->blk_loop.itervar_u.gv)
-#define CxLABEL(c) (0 + CopLABEL((c)->blk_oldcop))
-#define CxLABEL_len(c,len) (0 + CopLABEL_len((c)->blk_oldcop, len))
-#define CxLABEL_len_flags(c,len,flags) (0 + CopLABEL_len_flags((c)->blk_oldcop, len, flags))
+#define CxLABEL(c) (CopLABEL((c)->blk_oldcop))
+#define CxLABEL_len(c,len) (CopLABEL_len((c)->blk_oldcop, len))
+#define CxLABEL_len_flags(c,len,flags) ((const char *)CopLABEL_len_flags((c)->blk_oldcop, len, flags))
#define CxHASARGS(c) (((c)->cx_type & CXp_HASARGS) == CXp_HASARGS)
/* CxLVAL(): the lval flags of the call site: the relevant flag bits from
@@ -885,13 +970,13 @@ struct block_loop {
* Note the contrast with CvLVALUE(), which is a property of the sub
* rather than the call site.
*/
-#define CxLVAL(c) (0 + ((c)->blk_u16 & 0xff))
+#define CxLVAL(c) (0 + ((U8)((c)->blk_u16)))
/* given/when context */
struct block_givwhen {
- OP *leave_op;
+ OP *leave_op;
SV *defsv_save; /* the original $_ */
};
@@ -912,11 +997,11 @@ struct block {
I32 blku_oldscopesp; /* scope stack index */
union {
- struct block_sub blku_sub;
- struct block_format blku_format;
- struct block_eval blku_eval;
- struct block_loop blku_loop;
- struct block_givwhen blku_givwhen;
+ struct block_sub blku_sub;
+ struct block_format blku_format;
+ struct block_eval blku_eval;
+ struct block_loop blku_loop;
+ struct block_givwhen blku_givwhen;
} blk_u;
};
#define blk_oldsp cx_u.cx_blk.blku_oldsp
@@ -936,15 +1021,15 @@ struct block {
#define CX_DEBUG(cx, action) \
DEBUG_l( \
- Perl_deb(aTHX_ "CX %ld %s %s (scope %ld,%ld) (save %ld,%ld) at %s:%d\n",\
- (long)cxstack_ix, \
- action, \
- PL_block_type[CxTYPE(cx)], \
- (long)PL_scopestack_ix, \
- (long)(cx->blk_oldscopesp), \
- (long)PL_savestack_ix, \
- (long)(cx->blk_oldsaveix), \
- __FILE__, __LINE__));
+ Perl_deb(aTHX_ "CX %ld %s %s (scope %ld,%ld) (save %ld,%ld) in %s at %s:%d\n",\
+ (long)cxstack_ix, \
+ action, \
+ PL_block_type[CxTYPE(cx)], \
+ (long)PL_scopestack_ix, \
+ (long)(cx->blk_oldscopesp), \
+ (long)PL_savestack_ix, \
+ (long)(cx->blk_oldsaveix), \
+ SAFE_FUNCTION__, __FILE__, __LINE__));
@@ -983,32 +1068,32 @@ struct subst {
#define sb_rx cx_u.cx_subst.sbu_rx
# define CX_PUSHSUBST(cx) CXINC, cx = CX_CUR(), \
- cx->blk_oldsaveix = oldsave, \
- cx->sb_iters = iters, \
- cx->sb_maxiters = maxiters, \
- cx->sb_rflags = r_flags, \
- cx->sb_rxtainted = rxtainted, \
- cx->sb_orig = orig, \
- cx->sb_dstr = dstr, \
- cx->sb_targ = targ, \
- cx->sb_s = s, \
- cx->sb_m = m, \
- cx->sb_strend = strend, \
- cx->sb_rxres = NULL, \
- cx->sb_rx = rx, \
- cx->cx_type = CXt_SUBST | (once ? CXp_ONCE : 0); \
- rxres_save(&cx->sb_rxres, rx); \
- (void)ReREFCNT_inc(rx); \
+ cx->blk_oldsaveix = oldsave, \
+ cx->sb_iters = iters, \
+ cx->sb_maxiters = maxiters, \
+ cx->sb_rflags = r_flags, \
+ cx->sb_rxtainted = rxtainted, \
+ cx->sb_orig = orig, \
+ cx->sb_dstr = dstr, \
+ cx->sb_targ = targ, \
+ cx->sb_s = s, \
+ cx->sb_m = m, \
+ cx->sb_strend = strend, \
+ cx->sb_rxres = NULL, \
+ cx->sb_rx = rx, \
+ cx->cx_type = CXt_SUBST | (once ? CXp_ONCE : 0); \
+ rxres_save(&cx->sb_rxres, rx); \
+ (void)ReREFCNT_inc(rx); \
SvREFCNT_inc_void_NN(targ)
# define CX_POPSUBST(cx) \
STMT_START { \
REGEXP *re; \
assert(CxTYPE(cx) == CXt_SUBST); \
- rxres_free(&cx->sb_rxres); \
- re = cx->sb_rx; \
- cx->sb_rx = NULL; \
- ReREFCNT_dec(re); \
+ rxres_free(&cx->sb_rxres); \
+ re = cx->sb_rx; \
+ cx->sb_rx = NULL; \
+ ReREFCNT_dec(re); \
SvREFCNT_dec_NN(cx->sb_targ); \
} STMT_END
#endif
@@ -1017,8 +1102,8 @@ struct subst {
struct context {
union {
- struct block cx_blk;
- struct subst cx_subst;
+ struct block cx_blk;
+ struct subst cx_subst;
} cx_u;
};
#define cx_type cx_u.cx_subst.sbu_type
@@ -1047,6 +1132,7 @@ struct context {
#define CXt_FORMAT 10
#define CXt_EVAL 11 /* eval'', eval{}, try{} */
#define CXt_SUBST 12
+#define CXt_DEFER 13
/* SUBST doesn't feature in all switch statements. */
/* private flags for CXt_SUB and CXt_FORMAT */
@@ -1080,41 +1166,50 @@ struct context {
&& CxTYPE(cx) <= CXt_LOOP_PLAIN)
#define CxMULTICALL(c) ((c)->cx_type & CXp_MULTICALL)
#define CxREALEVAL(c) (((c)->cx_type & (CXTYPEMASK|CXp_REAL)) \
- == (CXt_EVAL|CXp_REAL))
+ == (CXt_EVAL|CXp_REAL))
#define CxEVALBLOCK(c) (((c)->cx_type & (CXTYPEMASK|CXp_EVALBLOCK)) \
- == (CXt_EVAL|CXp_EVALBLOCK))
+ == (CXt_EVAL|CXp_EVALBLOCK))
#define CxTRY(c) (((c)->cx_type & (CXTYPEMASK|CXp_TRY)) \
== (CXt_EVAL|CXp_TRY))
#define CxFOREACH(c) ( CxTYPE(cx) >= CXt_LOOP_ARY \
&& CxTYPE(cx) <= CXt_LOOP_LIST)
+/* private flags for CXt_DEFER */
+#define CXp_FINALLY 0x20 /* `finally` block; semantically identical
+ * but matters for diagnostic messages */
+
/* deprecated old name before real try/catch was added */
#define CXp_TRYBLOCK CXp_EVALBLOCK
#define CxTRYBLOCK(c) CxEVALBLOCK(c)
#define CXINC (cxstack_ix < cxstack_max ? ++cxstack_ix : (cxstack_ix = cxinc()))
-#define G_SCALAR 2
-#define G_ARRAY 3
-#define G_VOID 1
-#define G_WANT 3
+#define G_SCALAR 2
+#define G_LIST 3
+#define G_VOID 1
+#define G_WANT 3
+
+#ifndef PERL_CORE
+ /* name prior to 5.31.1 */
+# define G_ARRAY G_LIST
+#endif
/* extra flags for Perl_call_* routines */
#define G_DISCARD 0x4 /* Call FREETMPS.
- Don't change this without consulting the
- hash actions codes defined in hv.h */
+ Don't change this without consulting the
+ hash actions codes defined in hv.h */
#define G_EVAL 0x8 /* Assume eval {} around subroutine call. */
#define G_NOARGS 0x10 /* Don't construct a @_ array. */
#define G_KEEPERR 0x20 /* Warn for errors, don't overwrite $@ */
#define G_NODEBUG 0x40 /* Disable debugging at toplevel. */
#define G_METHOD 0x80 /* Calling method. */
#define G_FAKINGEVAL 0x100 /* Faking an eval context for call_sv or
- fold_constants. */
+ fold_constants. */
#define G_UNDEF_FILL 0x200 /* Fill the stack with &PL_sv_undef
- A special case for UNSHIFT in
- Perl_magic_methcall(). */
+ A special case for UNSHIFT in
+ Perl_magic_methcall(). */
#define G_WRITING_TO_STDERR 0x400 /* Perl_write_to_stderr() is calling
- Perl_magic_methcall(). */
+ Perl_magic_methcall(). */
#define G_RE_REPARSING 0x800 /* compiling a run-time /(?{..})/ */
#define G_METHOD_NAMED 0x1000 /* calling named method, eg without :: or ' */
#define G_RETHROW 0x2000 /* eval_sv(): re-throw any error */
@@ -1158,8 +1253,8 @@ struct stackinfo {
I32 si_cxsubix; /* topmost sub/eval/format */
I32 si_type; /* type of runlevel */
I32 si_markoff; /* offset where markstack begins for us.
- * currently used only with DEBUGGING,
- * but not #ifdef-ed for bincompat */
+ * currently used only with DEBUGGING,
+ * but not #ifdef-ed for bincompat */
#if defined DEBUGGING && !defined DEBUGGING_RE_ONLY
/* high water mark: for checking if the stack was correctly extended /
* tested for extension by each pp function */
@@ -1181,10 +1276,10 @@ typedef struct stackinfo PERL_SI;
#define cxstack_max (PL_curstackinfo->si_cxmax)
#ifdef DEBUGGING
-# define SET_MARK_OFFSET \
+# define SET_MARK_OFFSET \
PL_curstackinfo->si_markoff = PL_markstack_ptr - PL_markstack
#else
-# define SET_MARK_OFFSET NOOP
+# define SET_MARK_OFFSET NOOP
#endif
#if defined DEBUGGING && !defined DEBUGGING_RE_ONLY
@@ -1195,25 +1290,25 @@ typedef struct stackinfo PERL_SI;
#define PUSHSTACKi(type) \
STMT_START { \
- PERL_SI *next = PL_curstackinfo->si_next; \
- DEBUG_l({ \
- int i = 0; PERL_SI *p = PL_curstackinfo; \
- while (p) { i++; p = p->si_prev; } \
- Perl_deb(aTHX_ "push STACKINFO %d at %s:%d\n", \
- i, __FILE__, __LINE__);}) \
- if (!next) { \
- next = new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1); \
- next->si_prev = PL_curstackinfo; \
- PL_curstackinfo->si_next = next; \
- } \
- next->si_type = type; \
- next->si_cxix = -1; \
- next->si_cxsubix = -1; \
+ PERL_SI *next = PL_curstackinfo->si_next; \
+ DEBUG_l({ \
+ int i = 0; PERL_SI *p = PL_curstackinfo; \
+ while (p) { i++; p = p->si_prev; } \
+ Perl_deb(aTHX_ "push STACKINFO %d in %s at %s:%d\n", \
+ i, SAFE_FUNCTION__, __FILE__, __LINE__);}) \
+ if (!next) { \
+ next = new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1); \
+ next->si_prev = PL_curstackinfo; \
+ PL_curstackinfo->si_next = next; \
+ } \
+ next->si_type = type; \
+ next->si_cxix = -1; \
+ next->si_cxsubix = -1; \
PUSHSTACK_INIT_HWM(next); \
- AvFILLp(next->si_stack) = 0; \
- SWITCHSTACK(PL_curstack,next->si_stack); \
- PL_curstackinfo = next; \
- SET_MARK_OFFSET; \
+ AvFILLp(next->si_stack) = 0; \
+ SWITCHSTACK(PL_curstack,next->si_stack); \
+ PL_curstackinfo = next; \
+ SET_MARK_OFFSET; \
} STMT_END
#define PUSHSTACK PUSHSTACKi(PERLSI_UNKNOWN)
@@ -1222,27 +1317,27 @@ typedef struct stackinfo PERL_SI;
* PUTBACK/SPAGAIN to flush/refresh any local SP that may be active */
#define POPSTACK \
STMT_START { \
- dSP; \
- PERL_SI * const prev = PL_curstackinfo->si_prev; \
- DEBUG_l({ \
- int i = -1; PERL_SI *p = PL_curstackinfo; \
- while (p) { i++; p = p->si_prev; } \
- Perl_deb(aTHX_ "pop STACKINFO %d at %s:%d\n", \
- i, __FILE__, __LINE__);}) \
- if (!prev) { \
- Perl_croak_popstack(); \
- } \
- SWITCHSTACK(PL_curstack,prev->si_stack); \
- /* don't free prev here, free them all at the END{} */ \
- PL_curstackinfo = prev; \
+ dSP; \
+ PERL_SI * const prev = PL_curstackinfo->si_prev; \
+ DEBUG_l({ \
+ int i = -1; PERL_SI *p = PL_curstackinfo; \
+ while (p) { i++; p = p->si_prev; } \
+ Perl_deb(aTHX_ "pop STACKINFO %d in %s at %s:%d\n", \
+ i, SAFE_FUNCTION__, __FILE__, __LINE__);}) \
+ if (!prev) { \
+ Perl_croak_popstack(); \
+ } \
+ SWITCHSTACK(PL_curstack,prev->si_stack); \
+ /* don't free prev here, free them all at the END{} */ \
+ PL_curstackinfo = prev; \
} STMT_END
#define POPSTACK_TO(s) \
STMT_START { \
- while (PL_curstack != s) { \
- dounwind(-1); \
- POPSTACK; \
- } \
+ while (PL_curstack != s) { \
+ dounwind(-1); \
+ POPSTACK; \
+ } \
} STMT_END
/*
@@ -1263,17 +1358,17 @@ program; otherwise 0;
/*
=for apidoc_section $multicall
-=for apidoc Amns||dMULTICALL
+=for apidoc Amn;||dMULTICALL
Declare local variables for a multicall. See L<perlcall/LIGHTWEIGHT CALLBACKS>.
-=for apidoc Ams||PUSH_MULTICALL|CV* the_cv
+=for apidoc Am;||PUSH_MULTICALL|CV* the_cv
Opening bracket for a lightweight callback.
See L<perlcall/LIGHTWEIGHT CALLBACKS>.
-=for apidoc Amns||MULTICALL
+=for apidoc Amn;||MULTICALL
Make a lightweight callback. See L<perlcall/LIGHTWEIGHT CALLBACKS>.
-=for apidoc Amns||POP_MULTICALL
+=for apidoc Amn;||POP_MULTICALL
Closing bracket for a lightweight callback.
See L<perlcall/LIGHTWEIGHT CALLBACKS>.
@@ -1293,43 +1388,43 @@ See L<perlcall/LIGHTWEIGHT CALLBACKS>.
#define PUSH_MULTICALL_FLAGS(the_cv, flags) \
STMT_START { \
PERL_CONTEXT *cx; \
- CV * const _nOnclAshIngNamE_ = the_cv; \
- CV * const cv = _nOnclAshIngNamE_; \
- PADLIST * const padlist = CvPADLIST(cv); \
- multicall_oldcatch = CATCH_GET; \
- CATCH_SET(TRUE); \
- PUSHSTACKi(PERLSI_MULTICALL); \
- cx = cx_pushblock((CXt_SUB|CXp_MULTICALL|flags), (U8)gimme, \
+ CV * const _nOnclAshIngNamE_ = the_cv; \
+ CV * const cv = _nOnclAshIngNamE_; \
+ PADLIST * const padlist = CvPADLIST(cv); \
+ multicall_oldcatch = CATCH_GET; \
+ CATCH_SET(TRUE); \
+ PUSHSTACKi(PERLSI_MULTICALL); \
+ cx = cx_pushblock((CXt_SUB|CXp_MULTICALL|flags), (U8)gimme, \
PL_stack_sp, PL_savestack_ix); \
cx_pushsub(cx, cv, NULL, 0); \
- SAVEOP(); \
+ SAVEOP(); \
if (!(flags & CXp_SUB_RE_FAKE)) \
CvDEPTH(cv)++; \
- if (CvDEPTH(cv) >= 2) \
- Perl_pad_push(aTHX_ padlist, CvDEPTH(cv)); \
- PAD_SET_CUR_NOSAVE(padlist, CvDEPTH(cv)); \
- multicall_cop = CvSTART(cv); \
+ if (CvDEPTH(cv) >= 2) \
+ Perl_pad_push(aTHX_ padlist, CvDEPTH(cv)); \
+ PAD_SET_CUR_NOSAVE(padlist, CvDEPTH(cv)); \
+ multicall_cop = CvSTART(cv); \
} STMT_END
#define MULTICALL \
STMT_START { \
- PL_op = multicall_cop; \
- CALLRUNOPS(aTHX); \
+ PL_op = multicall_cop; \
+ CALLRUNOPS(aTHX); \
} STMT_END
#define POP_MULTICALL \
STMT_START { \
PERL_CONTEXT *cx; \
- cx = CX_CUR(); \
- CX_LEAVE_SCOPE(cx); \
+ cx = CX_CUR(); \
+ CX_LEAVE_SCOPE(cx); \
cx_popsub_common(cx); \
gimme = cx->blk_gimme; \
PERL_UNUSED_VAR(gimme); /* for API */ \
- cx_popblock(cx); \
- CX_POP(cx); \
- POPSTACK; \
- CATCH_SET(multicall_oldcatch); \
- SPAGAIN; \
+ cx_popblock(cx); \
+ CX_POP(cx); \
+ POPSTACK; \
+ CATCH_SET(multicall_oldcatch); \
+ SPAGAIN; \
} STMT_END
/* Change the CV of an already-pushed MULTICALL CxSUB block.
@@ -1337,20 +1432,20 @@ See L<perlcall/LIGHTWEIGHT CALLBACKS>.
#define CHANGE_MULTICALL_FLAGS(the_cv, flags) \
STMT_START { \
- CV * const _nOnclAshIngNamE_ = the_cv; \
- CV * const cv = _nOnclAshIngNamE_; \
- PADLIST * const padlist = CvPADLIST(cv); \
+ CV * const _nOnclAshIngNamE_ = the_cv; \
+ CV * const cv = _nOnclAshIngNamE_; \
+ PADLIST * const padlist = CvPADLIST(cv); \
PERL_CONTEXT *cx = CX_CUR(); \
- assert(CxMULTICALL(cx)); \
+ assert(CxMULTICALL(cx)); \
cx_popsub_common(cx); \
- cx->cx_type = (CXt_SUB|CXp_MULTICALL|flags); \
+ cx->cx_type = (CXt_SUB|CXp_MULTICALL|flags); \
cx_pushsub(cx, cv, NULL, 0); \
if (!(flags & CXp_SUB_RE_FAKE)) \
CvDEPTH(cv)++; \
- if (CvDEPTH(cv) >= 2) \
- Perl_pad_push(aTHX_ padlist, CvDEPTH(cv)); \
- PAD_SET_CUR_NOSAVE(padlist, CvDEPTH(cv)); \
- multicall_cop = CvSTART(cv); \
+ if (CvDEPTH(cv) >= 2) \
+ Perl_pad_push(aTHX_ padlist, CvDEPTH(cv)); \
+ PAD_SET_CUR_NOSAVE(padlist, CvDEPTH(cv)); \
+ multicall_cop = CvSTART(cv); \
} STMT_END
/*
* ex: set ts=8 sts=4 sw=4 et:
diff --git a/Master/tlpkg/tlperl/lib/CORE/cv.h b/Master/tlpkg/tlperl/lib/CORE/cv.h
index 435dee62612..7a813f6fa19 100644
--- a/Master/tlpkg/tlperl/lib/CORE/cv.h
+++ b/Master/tlpkg/tlperl/lib/CORE/cv.h
@@ -38,7 +38,7 @@ See L<perlguts/Autoloading with XSUBs>.
# define Nullcv Null(CV*)
#endif
-#define CvSTASH(sv) (0+((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_stash)
+#define CvSTASH(sv) (MUTABLE_HV(((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_stash))
#define CvSTASH_set(cv,st) Perl_cvstash_set(aTHX_ cv, st)
#define CvSTART(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_start_u.xcv_start
#define CvROOT(sv) ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_root_u.xcv_root
@@ -107,7 +107,10 @@ See L<perlguts/Autoloading with XSUBs>.
: 0 \
)
-#define CVf_METHOD 0x0001 /* CV is explicitly marked as a method */
+/* CV has the `:method` attribute. This used to be called CVf_METHOD but is
+ * renamed to avoid collision with CVf_IsMETHOD */
+#define CVf_NOWARN_AMBIGUOUS 0x0001
+
#define CVf_LVALUE 0x0002 /* CV return value can be used as lvalue */
#define CVf_CONST 0x0004 /* inlinable sub */
#define CVf_ISXSUB 0x0008 /* CV is an XSUB, not pure perl. */
@@ -117,7 +120,7 @@ See L<perlguts/Autoloading with XSUBs>.
#define CVf_CLONED 0x0040 /* a clone of one of those */
#define CVf_ANON 0x0080 /* CV is not pointed to by a GV */
#define CVf_UNIQUE 0x0100 /* sub is only called once (eg PL_main_cv,
- * require, eval). */
+ require, eval). */
#define CVf_NODEBUG 0x0200 /* no DB::sub indirection for this CV
(esp. useful for special XSUBs) */
#define CVf_CVGV_RC 0x0400 /* CvGV is reference counted */
@@ -130,9 +133,14 @@ See L<perlguts/Autoloading with XSUBs>.
#define CVf_NAMED 0x8000 /* Has a name HEK */
#define CVf_LEXICAL 0x10000 /* Omit package from name */
#define CVf_ANONCONST 0x20000 /* :const - create anonconst op */
+#define CVf_SIGNATURE 0x40000 /* CV uses a signature */
+#define CVf_REFCOUNTED_ANYSV 0x80000 /* CvXSUBANY().any_sv is refcounted */
+#define CVf_IsMETHOD 0x100000 /* CV is a (real) method of a real class. Not
+ to be confused with what used to be called
+ CVf_METHOD; now CVf_NOWARN_AMBIGUOUS */
/* This symbol for optimised communication between toke.c and op.c: */
-#define CVf_BUILTIN_ATTRS (CVf_METHOD|CVf_LVALUE|CVf_ANONCONST)
+#define CVf_BUILTIN_ATTRS (CVf_NOWARN_AMBIGUOUS|CVf_LVALUE|CVf_ANONCONST)
#define CvCLONE(cv) (CvFLAGS(cv) & CVf_CLONE)
#define CvCLONE_on(cv) (CvFLAGS(cv) |= CVf_CLONE)
@@ -155,9 +163,9 @@ See L<perlguts/Autoloading with XSUBs>.
#define CvNODEBUG_on(cv) (CvFLAGS(cv) |= CVf_NODEBUG)
#define CvNODEBUG_off(cv) (CvFLAGS(cv) &= ~CVf_NODEBUG)
-#define CvMETHOD(cv) (CvFLAGS(cv) & CVf_METHOD)
-#define CvMETHOD_on(cv) (CvFLAGS(cv) |= CVf_METHOD)
-#define CvMETHOD_off(cv) (CvFLAGS(cv) &= ~CVf_METHOD)
+#define CvNOWARN_AMBIGUOUS(cv) (CvFLAGS(cv) & CVf_NOWARN_AMBIGUOUS)
+#define CvNOWARN_AMBIGUOUS_on(cv) (CvFLAGS(cv) |= CVf_NOWARN_AMBIGUOUS)
+#define CvNOWARN_AMBIGUOUS_off(cv) (CvFLAGS(cv) &= ~CVf_NOWARN_AMBIGUOUS)
#define CvLVALUE(cv) (CvFLAGS(cv) & CVf_LVALUE)
#define CvLVALUE_on(cv) (CvFLAGS(cv) |= CVf_LVALUE)
@@ -219,6 +227,51 @@ See L<perlguts/Autoloading with XSUBs>.
#define CvANONCONST_on(cv) (CvFLAGS(cv) |= CVf_ANONCONST)
#define CvANONCONST_off(cv) (CvFLAGS(cv) &= ~CVf_ANONCONST)
+#define CvSIGNATURE(cv) (CvFLAGS(cv) & CVf_SIGNATURE)
+#define CvSIGNATURE_on(cv) (CvFLAGS(cv) |= CVf_SIGNATURE)
+#define CvSIGNATURE_off(cv) (CvFLAGS(cv) &= ~CVf_SIGNATURE)
+
+/*
+
+=for apidoc m|bool|CvREFCOUNTED_ANYSV|CV *cv
+
+If true, indicates that the C<CvXSUBANY(cv).any_sv> member contains an SV
+pointer whose reference count should be decremented when the CV itself is
+freed. In addition, C<cv_clone()> will increment the reference count, and
+C<sv_dup()> will duplicate the entire pointed-to SV if this flag is set.
+
+Any CV that wraps an XSUB has an C<ANY> union that the XSUB function is free
+to use for its own purposes. It may be the case that the code wishes to store
+an SV in the C<any_sv> member of this union. By setting this flag, this SV
+reference will be properly reclaimed or duplicated when the CV itself is.
+
+=for apidoc m|void|CvREFCOUNTED_ANYSV_on|CV *cv
+
+Helper macro to turn on the C<CvREFCOUNTED_ANYSV> flag.
+
+=for apidoc m|void|CvREFCOUNTED_ANYSV_off|CV *cv
+
+Helper macro to turn off the C<CvREFCOUNTED_ANYSV> flag.
+
+=cut
+*/
+
+#define CvREFCOUNTED_ANYSV(cv) (CvFLAGS(cv) & CVf_REFCOUNTED_ANYSV)
+#define CvREFCOUNTED_ANYSV_on(cv) (CvFLAGS(cv) |= CVf_REFCOUNTED_ANYSV)
+#define CvREFCOUNTED_ANYSV_off(cv) (CvFLAGS(cv) &= ~CVf_REFCOUNTED_ANYSV)
+
+#define CvIsMETHOD(cv) (CvFLAGS(cv) & CVf_IsMETHOD)
+#define CvIsMETHOD_on(cv) (CvFLAGS(cv) |= CVf_IsMETHOD)
+#define CvIsMETHOD_off(cv) (CvFLAGS(cv) &= ~CVf_IsMETHOD)
+
+/* Back-compat */
+#ifndef PERL_CORE
+# define CVf_METHOD CVf_NOWARN_AMBIGUOUS
+# define CvMETHOD(cv) CvNOWARN_AMBIGUOUS(cv)
+# define CvMETHOD_on(cv) CvNOWARN_AMBIGUOUS_on(cv)
+# define CvMETHOD_off(cv) CvNOWARN_AMBIGUOUS_off(cv)
+#endif
+
/* Flags for newXS_flags */
#define XS_DYNAMIC_FILENAME 0x01 /* The filename isn't static */
diff --git a/Master/tlpkg/tlperl/lib/CORE/dosish.h b/Master/tlpkg/tlperl/lib/CORE/dosish.h
index 74aa1270556..8a1ce980484 100644
--- a/Master/tlpkg/tlperl/lib/CORE/dosish.h
+++ b/Master/tlpkg/tlperl/lib/CORE/dosish.h
@@ -13,46 +13,28 @@
#define SH_PATH "/bin/sh"
#endif
-#ifdef DJGPP
-# define BIT_BUCKET "nul"
-# define OP_BINARY O_BINARY
-# define PERL_SYS_INIT_BODY(c,v) \
- MALLOC_CHECK_TAINT2(*c,*v) Perl_DJGPP_init(c,v); PERLIO_INIT
-# define init_os_extras Perl_init_os_extras
-# define HAS_UTIME
-# define HAS_KILL
- char *djgpp_pathexp (const char*);
- void Perl_DJGPP_init (int *argcp,char ***argvp);
-# if (DJGPP==2 && DJGPP_MINOR < 2)
-# define NO_LOCALECONV_MON_THOUSANDS_SEP
-# endif
-# ifndef PERL_CORE
-# define PERL_FS_VER_FMT "%d_%d_%d"
-# endif
-# define PERL_FS_VERSION STRINGIFY(PERL_REVISION) "_" \
- STRINGIFY(PERL_VERSION) "_" \
- STRINGIFY(PERL_SUBVERSION)
-#elif defined(WIN32)
+#ifdef WIN32
# define PERL_SYS_INIT_BODY(c,v) \
MALLOC_CHECK_TAINT2(*c,*v) Perl_win32_init(c,v); PERLIO_INIT
# define PERL_SYS_TERM_BODY() Perl_win32_term()
# define BIT_BUCKET "nul"
-#elif defined(NETWARE)
-# define PERL_SYS_INIT_BODY(c,v) \
- MALLOC_CHECK_TAINT2(*c,*v) Perl_nw5_init(c,v); PERLIO_INIT
-# define BIT_BUCKET "nwnul"
#else
# define PERL_SYS_INIT_BODY(c,v) \
MALLOC_CHECK_TAINT2(*c,*v); PERLIO_INIT
# define BIT_BUCKET "\\dev\\nul" /* "wanna be like, umm, Newlined, or somethin?" */
#endif
+/* Generally add things last-in first-terminated. IO and memory terminations
+ * need to be generally last
+ *
+ * BEWARE that using PerlIO in these will be using freed memory, so may appear
+ * to work, but must NOT be retained in production code. */
#ifndef PERL_SYS_TERM_BODY
# define PERL_SYS_TERM_BODY() \
+ ENV_TERM; USER_PROP_MUTEX_TERM; LOCALE_TERM; \
HINTS_REFCNT_TERM; KEYWORD_PLUGIN_MUTEX_TERM; \
- OP_CHECK_MUTEX_TERM; OP_REFCNT_TERM; PERLIO_TERM; \
- MALLOC_TERM; LOCALE_TERM; USER_PROP_MUTEX_TERM; \
- ENV_TERM;
+ OP_CHECK_MUTEX_TERM; OP_REFCNT_TERM; \
+ PERLIO_TERM; MALLOC_TERM;
#endif
#define dXSUB_SYS dNOOP
@@ -112,11 +94,7 @@
#define fwrite1 fwrite
#define Fstat(fd,bufptr) fstat((fd),(bufptr))
-#ifdef DJGPP
-# define Fflush(fp) djgpp_fflush(fp)
-#else
-# define Fflush(fp) fflush(fp)
-#endif
+#define Fflush(fp) fflush(fp)
#define Mkdir(path,mode) mkdir((path),(mode))
#ifndef WIN32
@@ -129,54 +107,13 @@
# define HAS_CHOWN
#endif /* WIN32 */
-/*
- * <rich@phekda.freeserve.co.uk>: The DJGPP port has code that converts
- * the return code of system() into the form that Unixy wait usually
- * returns:
- *
- * - signal number in bits 0-6;
- * - core dump flag in bit 7;
- * - exit code in bits 8-15.
- *
- * Bits 0-7 are always zero for DJGPP, because it uses system().
- * See djgpp.c.
- *
- * POSIX::W* use the W* macros from <sys/wait.h> to decode
- * the return code. Unfortunately the W* macros for DJGPP use
- * a different format than Unixy wait does. So there's a mismatch
- * and, say, WEXITSTATUS($?) will return bogus values.
- *
- * So here we add hack to redefine the W* macros from DJGPP's <sys/wait.h>
- * to work with our return-code conversion.
- */
-
-#ifdef DJGPP
-
-#include <sys/wait.h>
-
-#undef WEXITSTATUS
-#undef WIFEXITED
-#undef WIFSIGNALED
-#undef WIFSTOPPED
-#undef WNOHANG
-#undef WSTOPSIG
-#undef WTERMSIG
-#undef WUNTRACED
-
-#define WEXITSTATUS(stat_val) ((stat_val) >> 8)
-#define WIFEXITED(stat_val) 0
-#define WIFSIGNALED(stat_val) 0
-#define WIFSTOPPED(stat_val) 0
-#define WNOHANG 0
-#define WSTOPSIG(stat_val) 0
-#define WTERMSIG(stat_val) 0
-#define WUNTRACED 0
-
-#endif
-
/* Don't go reading from /dev/urandom */
#define PERL_NO_DEV_RANDOM
+#ifdef WIN32
+# define NO_ENVIRON_ARRAY
+#endif
+
/*
* ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/Master/tlpkg/tlperl/lib/CORE/ebcdic_tables.h b/Master/tlpkg/tlperl/lib/CORE/ebcdic_tables.h
index 9182d504f23..fe0075920bf 100644
--- a/Master/tlpkg/tlperl/lib/CORE/ebcdic_tables.h
+++ b/Master/tlpkg/tlperl/lib/CORE/ebcdic_tables.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
* This file is built by regen/ebcdic.pl.
* Any changes made here will be lost!
@@ -258,31 +258,6 @@ SOFTWARE.
};
# endif
-# ifndef DOINIT
- EXT U8 PL_fold_locale[256];
-# else
- EXT U8 PL_fold_locale[256] = {
-/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
-/*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
-/*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
-/*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
-/*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
-/*4_*/0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
-/*5_*/0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
-/*6_*/0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
-/*7_*/0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
-/*8_*/0x80,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
-/*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,
-/*A_*/0xA0,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
-/*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
-/*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
-/*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,
-/*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
-/*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF
-/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
-};
-# endif
-
/* Index is EBCDIC 1047 code point; value is its other fold-pair equivalent
* (A => a; a => A, etc) in the 0-255 range. If no such equivalent, value is
* the code point itself */
@@ -661,31 +636,6 @@ SOFTWARE.
};
# endif
-# ifndef DOINIT
- EXT U8 PL_fold_locale[256];
-# else
- EXT U8 PL_fold_locale[256] = {
-/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
-/*0_*/0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F,
-/*1_*/0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,
-/*2_*/0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F,
-/*3_*/0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F,
-/*4_*/0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F,
-/*5_*/0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F,
-/*6_*/0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F,
-/*7_*/0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F,
-/*8_*/0x80,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F,
-/*9_*/0x90,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F,
-/*A_*/0xA0,0xA1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF,
-/*B_*/0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF,
-/*C_*/0xC0,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF,
-/*D_*/0xD0,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF,
-/*E_*/0xE0,0xE1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,
-/*F_*/0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF
-/* _0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F*/
-};
-# endif
-
/* Index is EBCDIC 037 code point; value is its other fold-pair equivalent
* (A => a; a => A, etc) in the 0-255 range. If no such equivalent, value is
* the code point itself */
@@ -845,4 +795,4 @@ SOFTWARE.
#endif /* PERL_EBCDIC_TABLES_H_ */
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/embed.h b/Master/tlpkg/tlperl/lib/CORE/embed.h
index 10214db1fb0..d3d9740fd3f 100644
--- a/Master/tlpkg/tlperl/lib/CORE/embed.h
+++ b/Master/tlpkg/tlperl/lib/CORE/embed.h
@@ -1,16 +1,19 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
*
* embed.h
*
* Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- * 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others
+ * 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
+ * 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022
+ * by Larry Wall and others
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
*
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
- * This file is built by regen/embed.pl from data in embed.fnc,
- * regen/embed.pl, regen/opcodes, intrpvar.h and perlvars.h.
+ * This file is built by regen/embed.pl from embed.fnc, intrpvar.h,
+ * perlvars.h, regen/opcodes, regen/embed.pl, regen/embed_lib.pl and
+ * regen/HeaderParser.pm.
* Any changes made here will be lost!
*
* Edit those files and run 'make regen_headers' to effect changes.
@@ -24,2032 +27,29 @@
* BEWARE that a bunch of macros don't have long names, so either must be
* added or don't use them if you define this symbol */
-#ifndef PERL_NO_SHORT_NAMES
-
-/* Hide global symbols */
-
-#define Gv_AMupdate(a,b) Perl_Gv_AMupdate(aTHX_ a,b)
-#define SvAMAGIC_off Perl_SvAMAGIC_off
-#define SvAMAGIC_on Perl_SvAMAGIC_on
-#define SvTRUE(a) Perl_SvTRUE(aTHX_ a)
-#define SvTRUE_NN(a) Perl_SvTRUE_NN(aTHX_ a)
-#define SvTRUE_common(a,b) Perl_SvTRUE_common(aTHX_ a,b)
-#define SvTRUE_nomg(a) Perl_SvTRUE_nomg(aTHX_ a)
-#define _force_out_malformed_utf8_message(a,b,c,d) Perl__force_out_malformed_utf8_message(aTHX_ a,b,c,d)
-#define _is_uni_FOO(a,b) Perl__is_uni_FOO(aTHX_ a,b)
-#define _is_uni_perl_idcont(a) Perl__is_uni_perl_idcont(aTHX_ a)
-#define _is_uni_perl_idstart(a) Perl__is_uni_perl_idstart(aTHX_ a)
-#define _is_utf8_FOO(a,b,c) Perl__is_utf8_FOO(aTHX_ a,b,c)
-#define _is_utf8_perl_idcont(a,b) Perl__is_utf8_perl_idcont(aTHX_ a,b)
-#define _is_utf8_perl_idstart(a,b) Perl__is_utf8_perl_idstart(aTHX_ a,b)
-#define _to_uni_fold_flags(a,b,c,d) Perl__to_uni_fold_flags(aTHX_ a,b,c,d)
-#define _to_utf8_fold_flags(a,b,c,d,e) Perl__to_utf8_fold_flags(aTHX_ a,b,c,d,e)
-#define _to_utf8_lower_flags(a,b,c,d,e) Perl__to_utf8_lower_flags(aTHX_ a,b,c,d,e)
-#define _to_utf8_title_flags(a,b,c,d,e) Perl__to_utf8_title_flags(aTHX_ a,b,c,d,e)
-#define _to_utf8_upper_flags(a,b,c,d,e) Perl__to_utf8_upper_flags(aTHX_ a,b,c,d,e)
-#define _utf8n_to_uvchr_msgs_helper Perl__utf8n_to_uvchr_msgs_helper
-#define amagic_call(a,b,c,d) Perl_amagic_call(aTHX_ a,b,c,d)
-#define amagic_deref_call(a,b) Perl_amagic_deref_call(aTHX_ a,b)
-#define apply_attrs_string(a,b,c,d) Perl_apply_attrs_string(aTHX_ a,b,c,d)
-#define atfork_lock Perl_atfork_lock
-#define atfork_unlock Perl_atfork_unlock
-#define av_clear(a) Perl_av_clear(aTHX_ a)
-#define av_count(a) Perl_av_count(aTHX_ a)
-#define av_delete(a,b,c) Perl_av_delete(aTHX_ a,b,c)
-#define av_exists(a,b) Perl_av_exists(aTHX_ a,b)
-#define av_extend(a,b) Perl_av_extend(aTHX_ a,b)
-#define av_fetch(a,b,c) Perl_av_fetch(aTHX_ a,b,c)
-#define av_fill(a,b) Perl_av_fill(aTHX_ a,b)
-#define av_len(a) Perl_av_len(aTHX_ a)
-#define av_make(a,b) Perl_av_make(aTHX_ a,b)
-#define av_pop(a) Perl_av_pop(aTHX_ a)
-#define av_push(a,b) Perl_av_push(aTHX_ a,b)
-#define av_shift(a) Perl_av_shift(aTHX_ a)
-#define av_store(a,b,c) Perl_av_store(aTHX_ a,b,c)
-#define av_undef(a) Perl_av_undef(aTHX_ a)
-#define av_unshift(a,b) Perl_av_unshift(aTHX_ a,b)
-#define block_end(a,b) Perl_block_end(aTHX_ a,b)
-#define block_gimme() Perl_block_gimme(aTHX)
-#define block_start(a) Perl_block_start(aTHX_ a)
-#define bytes_cmp_utf8(a,b,c,d) Perl_bytes_cmp_utf8(aTHX_ a,b,c,d)
-#define bytes_from_utf8_loc Perl_bytes_from_utf8_loc
-#define bytes_to_utf8(a,b) Perl_bytes_to_utf8(aTHX_ a,b)
-#define call_argv(a,b,c) Perl_call_argv(aTHX_ a,b,c)
-#define call_atexit(a,b) Perl_call_atexit(aTHX_ a,b)
-#define call_list(a,b) Perl_call_list(aTHX_ a,b)
-#define call_method(a,b) Perl_call_method(aTHX_ a,b)
-#define call_pv(a,b) Perl_call_pv(aTHX_ a,b)
-#define call_sv(a,b) Perl_call_sv(aTHX_ a,b)
-#define caller_cx(a,b) Perl_caller_cx(aTHX_ a,b)
-#define cast_i32 Perl_cast_i32
-#define cast_iv Perl_cast_iv
-#define cast_ulong Perl_cast_ulong
-#define cast_uv Perl_cast_uv
-#define ck_entersub_args_list(a) Perl_ck_entersub_args_list(aTHX_ a)
-#define ck_entersub_args_proto(a,b,c) Perl_ck_entersub_args_proto(aTHX_ a,b,c)
-#define ck_entersub_args_proto_or_list(a,b,c) Perl_ck_entersub_args_proto_or_list(aTHX_ a,b,c)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define ck_warner Perl_ck_warner
-#define ck_warner_d Perl_ck_warner_d
-#endif
-#define clear_defarray(a,b) Perl_clear_defarray(aTHX_ a,b)
-#define cop_fetch_label(a,b,c) Perl_cop_fetch_label(aTHX_ a,b,c)
-#define cop_store_label(a,b,c,d) Perl_cop_store_label(aTHX_ a,b,c,d)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define croak Perl_croak
-#endif
-#define croak_memory_wrap Perl_croak_memory_wrap
-#define croak_no_modify Perl_croak_no_modify
-#define croak_sv(a) Perl_croak_sv(aTHX_ a)
-#define croak_xs_usage Perl_croak_xs_usage
-#define csighandler1 Perl_csighandler1
-#define csighandler3 Perl_csighandler3
-#ifndef NO_MATHOMS
-#define custom_op_desc(a) Perl_custom_op_desc(aTHX_ a)
-#endif
-#ifndef NO_MATHOMS
-#define custom_op_name(a) Perl_custom_op_name(aTHX_ a)
-#endif
-#define cv_clone(a) Perl_cv_clone(aTHX_ a)
-#define cv_const_sv Perl_cv_const_sv
-#define cv_get_call_checker(a,b,c) Perl_cv_get_call_checker(aTHX_ a,b,c)
-#define cv_get_call_checker_flags(a,b,c,d,e) Perl_cv_get_call_checker_flags(aTHX_ a,b,c,d,e)
-#define cv_name(a,b,c) Perl_cv_name(aTHX_ a,b,c)
-#define cv_set_call_checker(a,b,c) Perl_cv_set_call_checker(aTHX_ a,b,c)
-#define cv_set_call_checker_flags(a,b,c,d) Perl_cv_set_call_checker_flags(aTHX_ a,b,c,d)
-#define cv_undef(a) Perl_cv_undef(aTHX_ a)
-#define cx_dump(a) Perl_cx_dump(aTHX_ a)
-#define cxinc() Perl_cxinc(aTHX)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define deb Perl_deb
-#endif
-#define debop(a) Perl_debop(aTHX_ a)
-#define debprofdump() Perl_debprofdump(aTHX)
-#define debstack() Perl_debstack(aTHX)
-#define debstackptrs() Perl_debstackptrs(aTHX)
-#define delimcpy Perl_delimcpy
-#define despatch_signals() Perl_despatch_signals(aTHX)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define die Perl_die
-#endif
-#define die_sv(a) Perl_die_sv(aTHX_ a)
-#ifndef NO_MATHOMS
-#define do_binmode(a,b,c) Perl_do_binmode(aTHX_ a,b,c)
-#endif
-#define do_close(a,b) Perl_do_close(aTHX_ a,b)
-#define do_gv_dump(a,b,c,d) Perl_do_gv_dump(aTHX_ a,b,c,d)
-#define do_gvgv_dump(a,b,c,d) Perl_do_gvgv_dump(aTHX_ a,b,c,d)
-#define do_hv_dump(a,b,c,d) Perl_do_hv_dump(aTHX_ a,b,c,d)
-#define do_join(a,b,c,d) Perl_do_join(aTHX_ a,b,c,d)
-#define do_magic_dump(a,b,c,d,e,f,g) Perl_do_magic_dump(aTHX_ a,b,c,d,e,f,g)
-#define do_op_dump(a,b,c) Perl_do_op_dump(aTHX_ a,b,c)
-#ifndef NO_MATHOMS
-#define do_open9(a,b,c,d,e,f,g,h,i) Perl_do_open9(aTHX_ a,b,c,d,e,f,g,h,i)
-#endif
-#define do_openn(a,b,c,d,e,f,g,h,i) Perl_do_openn(aTHX_ a,b,c,d,e,f,g,h,i)
-#define do_pmop_dump(a,b,c) Perl_do_pmop_dump(aTHX_ a,b,c)
-#define do_sprintf(a,b,c) Perl_do_sprintf(aTHX_ a,b,c)
-#define do_sv_dump(a,b,c,d,e,f,g) Perl_do_sv_dump(aTHX_ a,b,c,d,e,f,g)
-#define doing_taint Perl_doing_taint
-#define doref(a,b,c) Perl_doref(aTHX_ a,b,c)
-#define dounwind(a) Perl_dounwind(aTHX_ a)
-#define dowantarray() Perl_dowantarray(aTHX)
-#define dump_all() Perl_dump_all(aTHX)
-#define dump_eval() Perl_dump_eval(aTHX)
-#define dump_form(a) Perl_dump_form(aTHX_ a)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define dump_indent Perl_dump_indent
-#endif
-#define dump_packsubs(a) Perl_dump_packsubs(aTHX_ a)
-#define dump_sub(a) Perl_dump_sub(aTHX_ a)
-#define dump_vindent(a,b,c,d) Perl_dump_vindent(aTHX_ a,b,c,d)
-#define eval_pv(a,b) Perl_eval_pv(aTHX_ a,b)
-#define eval_sv(a,b) Perl_eval_sv(aTHX_ a,b)
-#define fbm_compile(a,b) Perl_fbm_compile(aTHX_ a,b)
-#define fbm_instr(a,b,c,d) Perl_fbm_instr(aTHX_ a,b,c,d)
-#define filter_add(a,b) Perl_filter_add(aTHX_ a,b)
-#define filter_del(a) Perl_filter_del(aTHX_ a)
-#define filter_read(a,b,c) Perl_filter_read(aTHX_ a,b,c)
-#define find_runcv(a) Perl_find_runcv(aTHX_ a)
-#define find_rundefsv() Perl_find_rundefsv(aTHX)
-#define find_rundefsvoffset() Perl_find_rundefsvoffset(aTHX)
-#define foldEQ Perl_foldEQ
-#define foldEQ_latin1 Perl_foldEQ_latin1
-#define foldEQ_locale Perl_foldEQ_locale
-#define foldEQ_utf8_flags(a,b,c,d,e,f,g,h,i) Perl_foldEQ_utf8_flags(aTHX_ a,b,c,d,e,f,g,h,i)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define form Perl_form
-#endif
-#define free_tmps() Perl_free_tmps(aTHX)
-#define get_av(a,b) Perl_get_av(aTHX_ a,b)
-#define get_context Perl_get_context
-#define get_cv(a,b) Perl_get_cv(aTHX_ a,b)
-#define get_cvn_flags(a,b,c) Perl_get_cvn_flags(aTHX_ a,b,c)
-#define get_hv(a,b) Perl_get_hv(aTHX_ a,b)
-#define get_op_descs() Perl_get_op_descs(aTHX)
-#define get_op_names() Perl_get_op_names(aTHX)
-#define get_ppaddr() Perl_get_ppaddr(aTHX)
-#define get_sv(a,b) Perl_get_sv(aTHX_ a,b)
-#define get_vtbl(a) Perl_get_vtbl(aTHX_ a)
-#define getcwd_sv(a) Perl_getcwd_sv(aTHX_ a)
-#define gp_free(a) Perl_gp_free(aTHX_ a)
-#define gp_ref(a) Perl_gp_ref(aTHX_ a)
-#define grok_bin_oct_hex(a,b,c,d,e,f,g) Perl_grok_bin_oct_hex(aTHX_ a,b,c,d,e,f,g)
-#define grok_infnan(a,b) Perl_grok_infnan(aTHX_ a,b)
-#define grok_number(a,b,c) Perl_grok_number(aTHX_ a,b,c)
-#define grok_number_flags(a,b,c,d) Perl_grok_number_flags(aTHX_ a,b,c,d)
-#define grok_numeric_radix(a,b) Perl_grok_numeric_radix(aTHX_ a,b)
-#define gv_add_by_type(a,b) Perl_gv_add_by_type(aTHX_ a,b)
-#define gv_autoload_pv(a,b,c) Perl_gv_autoload_pv(aTHX_ a,b,c)
-#define gv_autoload_pvn(a,b,c,d) Perl_gv_autoload_pvn(aTHX_ a,b,c,d)
-#define gv_autoload_sv(a,b,c) Perl_gv_autoload_sv(aTHX_ a,b,c)
-#define gv_check(a) Perl_gv_check(aTHX_ a)
-#define gv_const_sv(a) Perl_gv_const_sv(aTHX_ a)
-#define gv_dump(a) Perl_gv_dump(aTHX_ a)
-#ifndef NO_MATHOMS
-#define gv_efullname(a,b) Perl_gv_efullname(aTHX_ a,b)
-#endif
-#define gv_efullname4(a,b,c,d) Perl_gv_efullname4(aTHX_ a,b,c,d)
-#define gv_fetchfile(a) Perl_gv_fetchfile(aTHX_ a)
-#define gv_fetchfile_flags(a,b,c) Perl_gv_fetchfile_flags(aTHX_ a,b,c)
-#define gv_fetchmeth_pv(a,b,c,d) Perl_gv_fetchmeth_pv(aTHX_ a,b,c,d)
-#define gv_fetchmeth_pv_autoload(a,b,c,d) Perl_gv_fetchmeth_pv_autoload(aTHX_ a,b,c,d)
-#define gv_fetchmeth_pvn(a,b,c,d,e) Perl_gv_fetchmeth_pvn(aTHX_ a,b,c,d,e)
-#define gv_fetchmeth_pvn_autoload(a,b,c,d,e) Perl_gv_fetchmeth_pvn_autoload(aTHX_ a,b,c,d,e)
-#define gv_fetchmeth_sv(a,b,c,d) Perl_gv_fetchmeth_sv(aTHX_ a,b,c,d)
-#define gv_fetchmeth_sv_autoload(a,b,c,d) Perl_gv_fetchmeth_sv_autoload(aTHX_ a,b,c,d)
-#define gv_fetchmethod_autoload(a,b,c) Perl_gv_fetchmethod_autoload(aTHX_ a,b,c)
-#define gv_fetchmethod_pv_flags(a,b,c) Perl_gv_fetchmethod_pv_flags(aTHX_ a,b,c)
-#define gv_fetchmethod_pvn_flags(a,b,c,d) Perl_gv_fetchmethod_pvn_flags(aTHX_ a,b,c,d)
-#define gv_fetchmethod_sv_flags(a,b,c) Perl_gv_fetchmethod_sv_flags(aTHX_ a,b,c)
-#define gv_fetchpv(a,b,c) Perl_gv_fetchpv(aTHX_ a,b,c)
-#define gv_fetchpvn_flags(a,b,c,d) Perl_gv_fetchpvn_flags(aTHX_ a,b,c,d)
-#define gv_fetchsv(a,b,c) Perl_gv_fetchsv(aTHX_ a,b,c)
-#ifndef NO_MATHOMS
-#define gv_fullname(a,b) Perl_gv_fullname(aTHX_ a,b)
-#endif
-#define gv_fullname4(a,b,c,d) Perl_gv_fullname4(aTHX_ a,b,c,d)
-#define gv_handler(a,b) Perl_gv_handler(aTHX_ a,b)
-#define gv_init_pv(a,b,c,d) Perl_gv_init_pv(aTHX_ a,b,c,d)
-#define gv_init_pvn(a,b,c,d,e) Perl_gv_init_pvn(aTHX_ a,b,c,d,e)
-#define gv_init_sv(a,b,c,d) Perl_gv_init_sv(aTHX_ a,b,c,d)
-#define gv_name_set(a,b,c,d) Perl_gv_name_set(aTHX_ a,b,c,d)
-#define gv_stashpv(a,b) Perl_gv_stashpv(aTHX_ a,b)
-#define gv_stashpvn(a,b,c) Perl_gv_stashpvn(aTHX_ a,b,c)
-#define gv_stashsv(a,b) Perl_gv_stashsv(aTHX_ a,b)
-#define hv_bucket_ratio(a) Perl_hv_bucket_ratio(aTHX_ a)
-#define hv_clear(a) Perl_hv_clear(aTHX_ a)
-#define hv_clear_placeholders(a) Perl_hv_clear_placeholders(aTHX_ a)
-#define hv_common(a,b,c,d,e,f,g,h) Perl_hv_common(aTHX_ a,b,c,d,e,f,g,h)
-#define hv_common_key_len(a,b,c,d,e,f) Perl_hv_common_key_len(aTHX_ a,b,c,d,e,f)
-#define hv_copy_hints_hv(a) Perl_hv_copy_hints_hv(aTHX_ a)
-#define hv_delayfree_ent(a,b) Perl_hv_delayfree_ent(aTHX_ a,b)
-#define hv_free_ent(a,b) Perl_hv_free_ent(aTHX_ a,b)
-#define hv_iterinit(a) Perl_hv_iterinit(aTHX_ a)
-#define hv_iterkey(a,b) Perl_hv_iterkey(aTHX_ a,b)
-#define hv_iterkeysv(a) Perl_hv_iterkeysv(aTHX_ a)
-#define hv_iternext_flags(a,b) Perl_hv_iternext_flags(aTHX_ a,b)
-#define hv_iternextsv(a,b,c) Perl_hv_iternextsv(aTHX_ a,b,c)
-#define hv_iterval(a,b) Perl_hv_iterval(aTHX_ a,b)
-#define hv_ksplit(a,b) Perl_hv_ksplit(aTHX_ a,b)
-#define hv_name_set(a,b,c,d) Perl_hv_name_set(aTHX_ a,b,c,d)
-#define hv_rand_set(a,b) Perl_hv_rand_set(aTHX_ a,b)
-#define hv_scalar(a) Perl_hv_scalar(aTHX_ a)
-#define init_i18nl10n(a) Perl_init_i18nl10n(aTHX_ a)
-#ifndef NO_MATHOMS
-#define init_i18nl14n(a) Perl_init_i18nl14n(aTHX_ a)
-#endif
-#define init_stacks() Perl_init_stacks(aTHX)
-#define init_tm(a) Perl_init_tm(aTHX_ a)
-#define intro_my() Perl_intro_my(aTHX)
-#define isC9_STRICT_UTF8_CHAR Perl_isC9_STRICT_UTF8_CHAR
-#define isSTRICT_UTF8_CHAR Perl_isSTRICT_UTF8_CHAR
-#define isUTF8_CHAR Perl_isUTF8_CHAR
-#define is_c9strict_utf8_string_loclen Perl_is_c9strict_utf8_string_loclen
-#define is_lvalue_sub() Perl_is_lvalue_sub(aTHX)
-#define is_safe_syscall(a,b,c,d) Perl_is_safe_syscall(aTHX_ a,b,c,d)
-#define is_strict_utf8_string_loclen Perl_is_strict_utf8_string_loclen
-#ifndef NO_MATHOMS
-#define is_utf8_char Perl_is_utf8_char
-#endif
-#define is_utf8_char_helper Perl_is_utf8_char_helper
-#define is_utf8_fixed_width_buf_loclen_flags Perl_is_utf8_fixed_width_buf_loclen_flags
-#define is_utf8_invariant_string_loc Perl_is_utf8_invariant_string_loc
-#define is_utf8_string_flags Perl_is_utf8_string_flags
-#define is_utf8_string_loclen Perl_is_utf8_string_loclen
-#define is_utf8_string_loclen_flags Perl_is_utf8_string_loclen_flags
-#define is_utf8_valid_partial_char_flags Perl_is_utf8_valid_partial_char_flags
-#define isinfnan Perl_isinfnan
-#define leave_adjust_stacks(a,b,c,d) Perl_leave_adjust_stacks(aTHX_ a,b,c,d)
-#define leave_scope(a) Perl_leave_scope(aTHX_ a)
-#define lex_bufutf8() Perl_lex_bufutf8(aTHX)
-#define lex_discard_to(a) Perl_lex_discard_to(aTHX_ a)
-#define lex_grow_linestr(a) Perl_lex_grow_linestr(aTHX_ a)
-#define lex_next_chunk(a) Perl_lex_next_chunk(aTHX_ a)
-#define lex_peek_unichar(a) Perl_lex_peek_unichar(aTHX_ a)
-#define lex_read_space(a) Perl_lex_read_space(aTHX_ a)
-#define lex_read_to(a) Perl_lex_read_to(aTHX_ a)
-#define lex_read_unichar(a) Perl_lex_read_unichar(aTHX_ a)
-#define lex_start(a,b,c) Perl_lex_start(aTHX_ a,b,c)
-#define lex_stuff_pv(a,b) Perl_lex_stuff_pv(aTHX_ a,b)
-#define lex_stuff_pvn(a,b,c) Perl_lex_stuff_pvn(aTHX_ a,b,c)
-#define lex_stuff_sv(a,b) Perl_lex_stuff_sv(aTHX_ a,b)
-#define lex_unstuff(a) Perl_lex_unstuff(aTHX_ a)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define load_module Perl_load_module
-#endif
-#define looks_like_number(a) Perl_looks_like_number(aTHX_ a)
-#define magic_dump(a) Perl_magic_dump(aTHX_ a)
-#define markstack_grow() Perl_markstack_grow(aTHX)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define mess Perl_mess
-#endif
-#define mess_sv(a,b) Perl_mess_sv(aTHX_ a,b)
-#define mg_clear(a) Perl_mg_clear(aTHX_ a)
-#define mg_copy(a,b,c,d) Perl_mg_copy(aTHX_ a,b,c,d)
-#define mg_find Perl_mg_find
-#define mg_findext Perl_mg_findext
-#define mg_free(a) Perl_mg_free(aTHX_ a)
-#define mg_free_type(a,b) Perl_mg_free_type(aTHX_ a,b)
-#define mg_freeext(a,b,c) Perl_mg_freeext(aTHX_ a,b,c)
-#define mg_get(a) Perl_mg_get(aTHX_ a)
-#define mg_length(a) Perl_mg_length(aTHX_ a)
-#define mg_magical Perl_mg_magical
-#define mg_set(a) Perl_mg_set(aTHX_ a)
-#define mg_size(a) Perl_mg_size(aTHX_ a)
-#define mini_mktime Perl_mini_mktime
-#define moreswitches(a) Perl_moreswitches(aTHX_ a)
-#define mortal_getenv Perl_mortal_getenv
-#define mro_get_linear_isa(a) Perl_mro_get_linear_isa(aTHX_ a)
-#define mro_method_changed_in(a) Perl_mro_method_changed_in(aTHX_ a)
-#define my_atof(a) Perl_my_atof(aTHX_ a)
-#define my_atof3(a,b,c) Perl_my_atof3(aTHX_ a,b,c)
-#define my_dirfd Perl_my_dirfd
-#define my_exit(a) Perl_my_exit(aTHX_ a)
-#define my_failure_exit() Perl_my_failure_exit(aTHX)
-#define my_fflush_all() Perl_my_fflush_all(aTHX)
-#define my_fork Perl_my_fork
-#define my_popen_list(a,b,c) Perl_my_popen_list(aTHX_ a,b,c)
-#define my_setenv(a,b) Perl_my_setenv(aTHX_ a,b)
-#define my_socketpair Perl_my_socketpair
-#define my_strftime(a,b,c,d,e,f,g,h,i,j) Perl_my_strftime(aTHX_ a,b,c,d,e,f,g,h,i,j)
-#define my_strtod Perl_my_strtod
-#define newANONATTRSUB(a,b,c,d) Perl_newANONATTRSUB(aTHX_ a,b,c,d)
-#define newANONHASH(a) Perl_newANONHASH(aTHX_ a)
-#define newANONLIST(a) Perl_newANONLIST(aTHX_ a)
-#define newANONSUB(a,b,c) Perl_newANONSUB(aTHX_ a,b,c)
-#define newASSIGNOP(a,b,c,d) Perl_newASSIGNOP(aTHX_ a,b,c,d)
-#define newAVREF(a) Perl_newAVREF(aTHX_ a)
-#define newBINOP(a,b,c,d) Perl_newBINOP(aTHX_ a,b,c,d)
-#define newCONDOP(a,b,c,d) Perl_newCONDOP(aTHX_ a,b,c,d)
-#define newCONSTSUB(a,b,c) Perl_newCONSTSUB(aTHX_ a,b,c)
-#define newCONSTSUB_flags(a,b,c,d,e) Perl_newCONSTSUB_flags(aTHX_ a,b,c,d,e)
-#define newCVREF(a,b) Perl_newCVREF(aTHX_ a,b)
-#define newDEFSVOP() Perl_newDEFSVOP(aTHX)
-#define newFORM(a,b,c) Perl_newFORM(aTHX_ a,b,c)
-#define newFOROP(a,b,c,d,e) Perl_newFOROP(aTHX_ a,b,c,d,e)
-#define newGIVENOP(a,b,c) Perl_newGIVENOP(aTHX_ a,b,c)
-#define newGVOP(a,b,c) Perl_newGVOP(aTHX_ a,b,c)
-#define newGVREF(a,b) Perl_newGVREF(aTHX_ a,b)
-#define newGVgen_flags(a,b) Perl_newGVgen_flags(aTHX_ a,b)
-#define newHVREF(a) Perl_newHVREF(aTHX_ a)
-#define newHVhv(a) Perl_newHVhv(aTHX_ a)
-#define newLISTOP(a,b,c,d) Perl_newLISTOP(aTHX_ a,b,c,d)
-#define newLOGOP(a,b,c,d) Perl_newLOGOP(aTHX_ a,b,c,d)
-#define newLOOPEX(a,b) Perl_newLOOPEX(aTHX_ a,b)
-#define newLOOPOP(a,b,c,d) Perl_newLOOPOP(aTHX_ a,b,c,d)
-#define newMETHOP(a,b,c) Perl_newMETHOP(aTHX_ a,b,c)
-#define newMETHOP_named(a,b,c) Perl_newMETHOP_named(aTHX_ a,b,c)
-#define newMYSUB(a,b,c,d,e) Perl_newMYSUB(aTHX_ a,b,c,d,e)
-#define newNULLLIST() Perl_newNULLLIST(aTHX)
-#define newOP(a,b) Perl_newOP(aTHX_ a,b)
-#define newPADNAMELIST Perl_newPADNAMELIST
-#define newPADNAMEouter Perl_newPADNAMEouter
-#define newPADNAMEpvn Perl_newPADNAMEpvn
-#define newPMOP(a,b) Perl_newPMOP(aTHX_ a,b)
-#define newPROG(a) Perl_newPROG(aTHX_ a)
-#define newPVOP(a,b,c) Perl_newPVOP(aTHX_ a,b,c)
-#define newRANGE(a,b,c) Perl_newRANGE(aTHX_ a,b,c)
-#define newRV(a) Perl_newRV(aTHX_ a)
-#define newRV_noinc(a) Perl_newRV_noinc(aTHX_ a)
-#define newSLICEOP(a,b,c) Perl_newSLICEOP(aTHX_ a,b,c)
-#define newSTATEOP(a,b,c) Perl_newSTATEOP(aTHX_ a,b,c)
-#define newSV(a) Perl_newSV(aTHX_ a)
-#define newSVOP(a,b,c) Perl_newSVOP(aTHX_ a,b,c)
-#define newSVREF(a) Perl_newSVREF(aTHX_ a)
-#define newSV_type(a) Perl_newSV_type(aTHX_ a)
-#define newSVhek(a) Perl_newSVhek(aTHX_ a)
-#define newSViv(a) Perl_newSViv(aTHX_ a)
-#define newSVnv(a) Perl_newSVnv(aTHX_ a)
-#define newSVpv(a,b) Perl_newSVpv(aTHX_ a,b)
-#define newSVpv_share(a,b) Perl_newSVpv_share(aTHX_ a,b)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define newSVpvf Perl_newSVpvf
-#endif
-#define newSVpvn(a,b) Perl_newSVpvn(aTHX_ a,b)
-#define newSVpvn_flags(a,b,c) Perl_newSVpvn_flags(aTHX_ a,b,c)
-#define newSVpvn_share(a,b,c) Perl_newSVpvn_share(aTHX_ a,b,c)
-#define newSVrv(a,b) Perl_newSVrv(aTHX_ a,b)
-#define newSVsv_flags(a,b) Perl_newSVsv_flags(aTHX_ a,b)
-#define newSVuv(a) Perl_newSVuv(aTHX_ a)
-#define newTRYCATCHOP(a,b,c,d) Perl_newTRYCATCHOP(aTHX_ a,b,c,d)
-#define newUNOP(a,b,c) Perl_newUNOP(aTHX_ a,b,c)
-#define newUNOP_AUX(a,b,c,d) Perl_newUNOP_AUX(aTHX_ a,b,c,d)
-#define newWHENOP(a,b) Perl_newWHENOP(aTHX_ a,b)
-#define newWHILEOP(a,b,c,d,e,f,g) Perl_newWHILEOP(aTHX_ a,b,c,d,e,f,g)
-#define newXS(a,b,c) Perl_newXS(aTHX_ a,b,c)
-#define newXS_flags(a,b,c,d,e) Perl_newXS_flags(aTHX_ a,b,c,d,e)
-#define new_stackinfo(a,b) Perl_new_stackinfo(aTHX_ a,b)
-#define new_version(a) Perl_new_version(aTHX_ a)
-#define nothreadhook() Perl_nothreadhook(aTHX)
-#define op_append_elem(a,b,c) Perl_op_append_elem(aTHX_ a,b,c)
-#define op_append_list(a,b,c) Perl_op_append_list(aTHX_ a,b,c)
-#define op_class(a) Perl_op_class(aTHX_ a)
-#define op_contextualize(a,b) Perl_op_contextualize(aTHX_ a,b)
-#define op_convert_list(a,b,c) Perl_op_convert_list(aTHX_ a,b,c)
-#define op_dump(a) Perl_op_dump(aTHX_ a)
-#define op_free(a) Perl_op_free(aTHX_ a)
-#define op_linklist(a) Perl_op_linklist(aTHX_ a)
-#define op_null(a) Perl_op_null(aTHX_ a)
-#define op_parent Perl_op_parent
-#define op_prepend_elem(a,b,c) Perl_op_prepend_elem(aTHX_ a,b,c)
-#define op_refcnt_lock() Perl_op_refcnt_lock(aTHX)
-#define op_refcnt_unlock() Perl_op_refcnt_unlock(aTHX)
-#define op_scope(a) Perl_op_scope(aTHX_ a)
-#define op_sibling_splice Perl_op_sibling_splice
-#ifndef NO_MATHOMS
-#define pack_cat(a,b,c,d,e,f,g) Perl_pack_cat(aTHX_ a,b,c,d,e,f,g)
-#endif
-#define packlist(a,b,c,d,e) Perl_packlist(aTHX_ a,b,c,d,e)
-#define pad_add_anon(a,b) Perl_pad_add_anon(aTHX_ a,b)
-#define pad_add_name_pv(a,b,c,d) Perl_pad_add_name_pv(aTHX_ a,b,c,d)
-#define pad_add_name_pvn(a,b,c,d,e) Perl_pad_add_name_pvn(aTHX_ a,b,c,d,e)
-#define pad_add_name_sv(a,b,c,d) Perl_pad_add_name_sv(aTHX_ a,b,c,d)
-#define pad_alloc(a,b) Perl_pad_alloc(aTHX_ a,b)
-#ifndef NO_MATHOMS
-#define pad_compname_type(a) Perl_pad_compname_type(aTHX_ a)
-#endif
-#define pad_findmy_pv(a,b) Perl_pad_findmy_pv(aTHX_ a,b)
-#define pad_findmy_pvn(a,b,c) Perl_pad_findmy_pvn(aTHX_ a,b,c)
-#define pad_findmy_sv(a,b) Perl_pad_findmy_sv(aTHX_ a,b)
-#define pad_new(a) Perl_pad_new(aTHX_ a)
-#define pad_tidy(a) Perl_pad_tidy(aTHX_ a)
-#define padnamelist_fetch Perl_padnamelist_fetch
-#define padnamelist_store(a,b,c) Perl_padnamelist_store(aTHX_ a,b,c)
-#define parse_arithexpr(a) Perl_parse_arithexpr(aTHX_ a)
-#define parse_barestmt(a) Perl_parse_barestmt(aTHX_ a)
-#define parse_block(a) Perl_parse_block(aTHX_ a)
-#define parse_fullexpr(a) Perl_parse_fullexpr(aTHX_ a)
-#define parse_fullstmt(a) Perl_parse_fullstmt(aTHX_ a)
-#define parse_label(a) Perl_parse_label(aTHX_ a)
-#define parse_listexpr(a) Perl_parse_listexpr(aTHX_ a)
-#define parse_stmtseq(a) Perl_parse_stmtseq(aTHX_ a)
-#define parse_subsignature(a) Perl_parse_subsignature(aTHX_ a)
-#define parse_termexpr(a) Perl_parse_termexpr(aTHX_ a)
-#define perly_sighandler Perl_perly_sighandler
-#define pmop_dump(a) Perl_pmop_dump(aTHX_ a)
-#define pop_scope() Perl_pop_scope(aTHX)
-#define pregcomp(a,b) Perl_pregcomp(aTHX_ a,b)
-#define pregexec(a,b,c,d,e,f,g) Perl_pregexec(aTHX_ a,b,c,d,e,f,g)
-#define pregfree(a) Perl_pregfree(aTHX_ a)
-#define pregfree2(a) Perl_pregfree2(aTHX_ a)
-#define prescan_version(a,b,c,d,e,f,g) Perl_prescan_version(aTHX_ a,b,c,d,e,f,g)
-#define ptr_table_clear(a) Perl_ptr_table_clear(aTHX_ a)
-#define ptr_table_fetch(a,b) Perl_ptr_table_fetch(aTHX_ a,b)
-#define ptr_table_free(a) Perl_ptr_table_free(aTHX_ a)
-#define ptr_table_new() Perl_ptr_table_new(aTHX)
-#define ptr_table_split(a) Perl_ptr_table_split(aTHX_ a)
-#define ptr_table_store(a,b,c) Perl_ptr_table_store(aTHX_ a,b,c)
-#define push_scope() Perl_push_scope(aTHX)
-#define pv_display(a,b,c,d,e) Perl_pv_display(aTHX_ a,b,c,d,e)
-#define pv_escape(a,b,c,d,e,f) Perl_pv_escape(aTHX_ a,b,c,d,e,f)
-#define pv_pretty(a,b,c,d,e,f,g) Perl_pv_pretty(aTHX_ a,b,c,d,e,f,g)
-#define pv_uni_display(a,b,c,d,e) Perl_pv_uni_display(aTHX_ a,b,c,d,e)
-#define re_compile(a,b) Perl_re_compile(aTHX_ a,b)
-#define re_intuit_start(a,b,c,d,e,f,g) Perl_re_intuit_start(aTHX_ a,b,c,d,e,f,g)
-#define re_intuit_string(a) Perl_re_intuit_string(aTHX_ a)
-#define reentrant_free() Perl_reentrant_free(aTHX)
-#define reentrant_init() Perl_reentrant_init(aTHX)
-#define reentrant_retry Perl_reentrant_retry
-#define reentrant_size() Perl_reentrant_size(aTHX)
-#define reg_named_buff_all(a,b) Perl_reg_named_buff_all(aTHX_ a,b)
-#define reg_named_buff_exists(a,b,c) Perl_reg_named_buff_exists(aTHX_ a,b,c)
-#define reg_named_buff_fetch(a,b,c) Perl_reg_named_buff_fetch(aTHX_ a,b,c)
-#define reg_named_buff_firstkey(a,b) Perl_reg_named_buff_firstkey(aTHX_ a,b)
-#define reg_named_buff_nextkey(a,b) Perl_reg_named_buff_nextkey(aTHX_ a,b)
-#define reg_named_buff_scalar(a,b) Perl_reg_named_buff_scalar(aTHX_ a,b)
-#define regdump(a) Perl_regdump(aTHX_ a)
-#define regexec_flags(a,b,c,d,e,f,g,h) Perl_regexec_flags(aTHX_ a,b,c,d,e,f,g,h)
-#define regfree_internal(a) Perl_regfree_internal(aTHX_ a)
-#define reginitcolors() Perl_reginitcolors(aTHX)
-#define regnext(a) Perl_regnext(aTHX_ a)
-#define repeatcpy Perl_repeatcpy
-#define require_pv(a) Perl_require_pv(aTHX_ a)
-#define rninstr Perl_rninstr
-#define rsignal(a,b) Perl_rsignal(aTHX_ a,b)
-#define rsignal_state(a) Perl_rsignal_state(aTHX_ a)
-#define runops_debug() Perl_runops_debug(aTHX)
-#define runops_standard() Perl_runops_standard(aTHX)
-#define rv2cv_op_cv(a,b) Perl_rv2cv_op_cv(aTHX_ a,b)
-#define safesyscalloc Perl_safesyscalloc
-#define safesysfree Perl_safesysfree
-#define safesysmalloc Perl_safesysmalloc
-#define safesysrealloc Perl_safesysrealloc
-#define save_I16(a) Perl_save_I16(aTHX_ a)
-#define save_I32(a) Perl_save_I32(aTHX_ a)
-#define save_I8(a) Perl_save_I8(aTHX_ a)
-#define save_adelete(a,b) Perl_save_adelete(aTHX_ a,b)
-#define save_aelem_flags(a,b,c,d) Perl_save_aelem_flags(aTHX_ a,b,c,d)
-#define save_alloc(a,b) Perl_save_alloc(aTHX_ a,b)
-#define save_aptr(a) Perl_save_aptr(aTHX_ a)
-#define save_ary(a) Perl_save_ary(aTHX_ a)
-#define save_bool(a) Perl_save_bool(aTHX_ a)
-#define save_clearsv(a) Perl_save_clearsv(aTHX_ a)
-#define save_delete(a,b,c) Perl_save_delete(aTHX_ a,b,c)
-#define save_destructor(a,b) Perl_save_destructor(aTHX_ a,b)
-#define save_destructor_x(a,b) Perl_save_destructor_x(aTHX_ a,b)
-#define save_generic_pvref(a) Perl_save_generic_pvref(aTHX_ a)
-#define save_generic_svref(a) Perl_save_generic_svref(aTHX_ a)
-#define save_gp(a,b) Perl_save_gp(aTHX_ a,b)
-#define save_hash(a) Perl_save_hash(aTHX_ a)
-#define save_hdelete(a,b) Perl_save_hdelete(aTHX_ a,b)
-#define save_helem_flags(a,b,c,d) Perl_save_helem_flags(aTHX_ a,b,c,d)
-#define save_hints() Perl_save_hints(aTHX)
-#define save_hptr(a) Perl_save_hptr(aTHX_ a)
-#define save_int(a) Perl_save_int(aTHX_ a)
-#define save_item(a) Perl_save_item(aTHX_ a)
-#define save_iv(a) Perl_save_iv(aTHX_ a)
-#ifndef NO_MATHOMS
-#define save_list(a,b) Perl_save_list(aTHX_ a,b)
-#endif
-#ifndef NO_MATHOMS
-#define save_long(a) Perl_save_long(aTHX_ a)
-#endif
-#ifndef NO_MATHOMS
-#define save_nogv(a) Perl_save_nogv(aTHX_ a)
-#endif
-#define save_padsv_and_mortalize(a) Perl_save_padsv_and_mortalize(aTHX_ a)
-#define save_pptr(a) Perl_save_pptr(aTHX_ a)
-#define save_pushi32ptr(a,b,c) Perl_save_pushi32ptr(aTHX_ a,b,c)
-#define save_pushptr(a,b) Perl_save_pushptr(aTHX_ a,b)
-#define save_pushptrptr(a,b,c) Perl_save_pushptrptr(aTHX_ a,b,c)
-#define save_re_context() Perl_save_re_context(aTHX)
-#define save_scalar(a) Perl_save_scalar(aTHX_ a)
-#define save_set_svflags(a,b,c) Perl_save_set_svflags(aTHX_ a,b,c)
-#define save_shared_pvref(a) Perl_save_shared_pvref(aTHX_ a)
-#define save_sptr(a) Perl_save_sptr(aTHX_ a)
-#define save_svref(a) Perl_save_svref(aTHX_ a)
-#define save_vptr(a) Perl_save_vptr(aTHX_ a)
-#define savepv(a) Perl_savepv(aTHX_ a)
-#define savepvn(a,b) Perl_savepvn(aTHX_ a,b)
-#define savesharedpv(a) Perl_savesharedpv(aTHX_ a)
-#define savesharedpvn(a,b) Perl_savesharedpvn(aTHX_ a,b)
-#define savesharedsvpv(a) Perl_savesharedsvpv(aTHX_ a)
-#define savestack_grow() Perl_savestack_grow(aTHX)
-#define savestack_grow_cnt(a) Perl_savestack_grow_cnt(aTHX_ a)
-#define savesvpv(a) Perl_savesvpv(aTHX_ a)
-#define scan_bin(a,b,c) Perl_scan_bin(aTHX_ a,b,c)
-#define scan_hex(a,b,c) Perl_scan_hex(aTHX_ a,b,c)
-#define scan_num(a,b) Perl_scan_num(aTHX_ a,b)
-#define scan_oct(a,b,c) Perl_scan_oct(aTHX_ a,b,c)
-#define scan_version(a,b,c) Perl_scan_version(aTHX_ a,b,c)
-#define scan_vstring(a,b,c) Perl_scan_vstring(aTHX_ a,b,c)
-#define seed() Perl_seed(aTHX)
-#define set_context Perl_set_context
-#define setdefout(a) Perl_setdefout(aTHX_ a)
-#define share_hek(a,b,c) Perl_share_hek(aTHX_ a,b,c)
-#define sortsv(a,b,c) Perl_sortsv(aTHX_ a,b,c)
-#define sortsv_flags(a,b,c,d) Perl_sortsv_flags(aTHX_ a,b,c,d)
-#define stack_grow(a,b,c) Perl_stack_grow(aTHX_ a,b,c)
-#define start_subparse(a,b) Perl_start_subparse(aTHX_ a,b)
-#define str_to_version(a) Perl_str_to_version(aTHX_ a)
-#define sv_2bool_flags(a,b) Perl_sv_2bool_flags(aTHX_ a,b)
-#define sv_2cv(a,b,c,d) Perl_sv_2cv(aTHX_ a,b,c,d)
-#define sv_2io(a) Perl_sv_2io(aTHX_ a)
-#define sv_2iv_flags(a,b) Perl_sv_2iv_flags(aTHX_ a,b)
-#define sv_2mortal(a) Perl_sv_2mortal(aTHX_ a)
-#define sv_2nv_flags(a,b) Perl_sv_2nv_flags(aTHX_ a,b)
-#define sv_2pv_flags(a,b,c) Perl_sv_2pv_flags(aTHX_ a,b,c)
-#define sv_2pvbyte_flags(a,b,c) Perl_sv_2pvbyte_flags(aTHX_ a,b,c)
-#define sv_2pvutf8_flags(a,b,c) Perl_sv_2pvutf8_flags(aTHX_ a,b,c)
-#define sv_2uv_flags(a,b) Perl_sv_2uv_flags(aTHX_ a,b)
-#define sv_backoff Perl_sv_backoff
-#define sv_bless(a,b) Perl_sv_bless(aTHX_ a,b)
-#define sv_cat_decode(a,b,c,d,e,f) Perl_sv_cat_decode(aTHX_ a,b,c,d,e,f)
-#define sv_catpv(a,b) Perl_sv_catpv(aTHX_ a,b)
-#define sv_catpv_flags(a,b,c) Perl_sv_catpv_flags(aTHX_ a,b,c)
-#define sv_catpv_mg(a,b) Perl_sv_catpv_mg(aTHX_ a,b)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define sv_catpvf Perl_sv_catpvf
-#define sv_catpvf_mg Perl_sv_catpvf_mg
-#endif
-#define sv_catpvn_flags(a,b,c,d) Perl_sv_catpvn_flags(aTHX_ a,b,c,d)
-#define sv_catsv_flags(a,b,c) Perl_sv_catsv_flags(aTHX_ a,b,c)
-#define sv_chop(a,b) Perl_sv_chop(aTHX_ a,b)
-#define sv_clear(a) Perl_sv_clear(aTHX_ a)
-#define sv_cmp_flags(a,b,c) Perl_sv_cmp_flags(aTHX_ a,b,c)
-#define sv_cmp_locale_flags(a,b,c) Perl_sv_cmp_locale_flags(aTHX_ a,b,c)
-#define sv_copypv_flags(a,b,c) Perl_sv_copypv_flags(aTHX_ a,b,c)
-#define sv_dec(a) Perl_sv_dec(aTHX_ a)
-#define sv_dec_nomg(a) Perl_sv_dec_nomg(aTHX_ a)
-#define sv_derived_from(a,b) Perl_sv_derived_from(aTHX_ a,b)
-#define sv_derived_from_pv(a,b,c) Perl_sv_derived_from_pv(aTHX_ a,b,c)
-#define sv_derived_from_pvn(a,b,c,d) Perl_sv_derived_from_pvn(aTHX_ a,b,c,d)
-#define sv_derived_from_sv(a,b,c) Perl_sv_derived_from_sv(aTHX_ a,b,c)
-#define sv_destroyable(a) Perl_sv_destroyable(aTHX_ a)
-#define sv_does(a,b) Perl_sv_does(aTHX_ a,b)
-#define sv_does_pv(a,b,c) Perl_sv_does_pv(aTHX_ a,b,c)
-#define sv_does_pvn(a,b,c,d) Perl_sv_does_pvn(aTHX_ a,b,c,d)
-#define sv_does_sv(a,b,c) Perl_sv_does_sv(aTHX_ a,b,c)
-#define sv_dump(a) Perl_sv_dump(aTHX_ a)
-#define sv_eq_flags(a,b,c) Perl_sv_eq_flags(aTHX_ a,b,c)
-#define sv_force_normal_flags(a,b) Perl_sv_force_normal_flags(aTHX_ a,b)
-#define sv_free(a) Perl_sv_free(aTHX_ a)
-#define sv_get_backrefs Perl_sv_get_backrefs
-#define sv_gets(a,b,c) Perl_sv_gets(aTHX_ a,b,c)
-#define sv_grow(a,b) Perl_sv_grow(aTHX_ a,b)
-#define sv_inc(a) Perl_sv_inc(aTHX_ a)
-#define sv_inc_nomg(a) Perl_sv_inc_nomg(aTHX_ a)
-#define sv_insert_flags(a,b,c,d,e,f) Perl_sv_insert_flags(aTHX_ a,b,c,d,e,f)
-#define sv_isa(a,b) Perl_sv_isa(aTHX_ a,b)
-#define sv_isa_sv(a,b) Perl_sv_isa_sv(aTHX_ a,b)
-#define sv_isobject(a) Perl_sv_isobject(aTHX_ a)
-#ifndef NO_MATHOMS
-#define sv_iv(a) Perl_sv_iv(aTHX_ a)
-#endif
-#define sv_len(a) Perl_sv_len(aTHX_ a)
-#define sv_len_utf8(a) Perl_sv_len_utf8(aTHX_ a)
-#define sv_magic(a,b,c,d,e) Perl_sv_magic(aTHX_ a,b,c,d,e)
-#define sv_magicext(a,b,c,d,e,f) Perl_sv_magicext(aTHX_ a,b,c,d,e,f)
-#define sv_mortalcopy_flags(a,b) Perl_sv_mortalcopy_flags(aTHX_ a,b)
-#define sv_newmortal() Perl_sv_newmortal(aTHX)
-#define sv_newref(a) Perl_sv_newref(aTHX_ a)
-#ifndef NO_MATHOMS
-#define sv_nolocking(a) Perl_sv_nolocking(aTHX_ a)
-#endif
-#define sv_nosharing(a) Perl_sv_nosharing(aTHX_ a)
-#ifndef NO_MATHOMS
-#define sv_nounlocking(a) Perl_sv_nounlocking(aTHX_ a)
-#endif
-#ifndef NO_MATHOMS
-#define sv_nv(a) Perl_sv_nv(aTHX_ a)
-#endif
-#define sv_peek(a) Perl_sv_peek(aTHX_ a)
-#define sv_pos_b2u(a,b) Perl_sv_pos_b2u(aTHX_ a,b)
-#define sv_pos_b2u_flags(a,b,c) Perl_sv_pos_b2u_flags(aTHX_ a,b,c)
-#define sv_pos_u2b(a,b,c) Perl_sv_pos_u2b(aTHX_ a,b,c)
-#define sv_pos_u2b_flags(a,b,c,d) Perl_sv_pos_u2b_flags(aTHX_ a,b,c,d)
-#ifndef NO_MATHOMS
-#define sv_pvbyten(a,b) Perl_sv_pvbyten(aTHX_ a,b)
-#endif
-#define sv_pvbyten_force(a,b) Perl_sv_pvbyten_force(aTHX_ a,b)
-#ifndef NO_MATHOMS
-#define sv_pvn(a,b) Perl_sv_pvn(aTHX_ a,b)
-#endif
-#define sv_pvn_force_flags(a,b,c) Perl_sv_pvn_force_flags(aTHX_ a,b,c)
-#ifndef NO_MATHOMS
-#define sv_pvn_nomg(a,b) Perl_sv_pvn_nomg(aTHX_ a,b)
-#endif
-#ifndef NO_MATHOMS
-#define sv_pvutf8n(a,b) Perl_sv_pvutf8n(aTHX_ a,b)
-#endif
-#define sv_pvutf8n_force(a,b) Perl_sv_pvutf8n_force(aTHX_ a,b)
-#define sv_recode_to_utf8(a,b) Perl_sv_recode_to_utf8(aTHX_ a,b)
-#define sv_ref(a,b,c) Perl_sv_ref(aTHX_ a,b,c)
-#define sv_reftype(a,b) Perl_sv_reftype(aTHX_ a,b)
-#define sv_replace(a,b) Perl_sv_replace(aTHX_ a,b)
-#define sv_report_used() Perl_sv_report_used(aTHX)
-#define sv_reset(a,b) Perl_sv_reset(aTHX_ a,b)
-#define sv_rvunweaken(a) Perl_sv_rvunweaken(aTHX_ a)
-#define sv_rvweaken(a) Perl_sv_rvweaken(aTHX_ a)
-#define sv_set_undef(a) Perl_sv_set_undef(aTHX_ a)
-#define sv_setiv(a,b) Perl_sv_setiv(aTHX_ a,b)
-#define sv_setiv_mg(a,b) Perl_sv_setiv_mg(aTHX_ a,b)
-#define sv_setnv(a,b) Perl_sv_setnv(aTHX_ a,b)
-#define sv_setnv_mg(a,b) Perl_sv_setnv_mg(aTHX_ a,b)
-#define sv_setpv(a,b) Perl_sv_setpv(aTHX_ a,b)
-#define sv_setpv_bufsize(a,b,c) Perl_sv_setpv_bufsize(aTHX_ a,b,c)
-#define sv_setpv_mg(a,b) Perl_sv_setpv_mg(aTHX_ a,b)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define sv_setpvf Perl_sv_setpvf
-#define sv_setpvf_mg Perl_sv_setpvf_mg
-#endif
-#ifndef NO_MATHOMS
-#define sv_setpviv(a,b) Perl_sv_setpviv(aTHX_ a,b)
-#endif
-#ifndef NO_MATHOMS
-#define sv_setpviv_mg(a,b) Perl_sv_setpviv_mg(aTHX_ a,b)
-#endif
-#define sv_setpvn(a,b,c) Perl_sv_setpvn(aTHX_ a,b,c)
-#define sv_setpvn_mg(a,b,c) Perl_sv_setpvn_mg(aTHX_ a,b,c)
-#define sv_setref_iv(a,b,c) Perl_sv_setref_iv(aTHX_ a,b,c)
-#define sv_setref_nv(a,b,c) Perl_sv_setref_nv(aTHX_ a,b,c)
-#define sv_setref_pv(a,b,c) Perl_sv_setref_pv(aTHX_ a,b,c)
-#define sv_setref_pvn(a,b,c,d) Perl_sv_setref_pvn(aTHX_ a,b,c,d)
-#define sv_setref_uv(a,b,c) Perl_sv_setref_uv(aTHX_ a,b,c)
-#define sv_setsv_flags(a,b,c) Perl_sv_setsv_flags(aTHX_ a,b,c)
-#define sv_setsv_mg(a,b) Perl_sv_setsv_mg(aTHX_ a,b)
-#define sv_setuv(a,b) Perl_sv_setuv(aTHX_ a,b)
-#define sv_setuv_mg(a,b) Perl_sv_setuv_mg(aTHX_ a,b)
-#define sv_string_from_errnum(a,b) Perl_sv_string_from_errnum(aTHX_ a,b)
-#define sv_tainted(a) Perl_sv_tainted(aTHX_ a)
-#define sv_true(a) Perl_sv_true(aTHX_ a)
-#define sv_uni_display(a,b,c,d) Perl_sv_uni_display(aTHX_ a,b,c,d)
-#define sv_unmagic(a,b) Perl_sv_unmagic(aTHX_ a,b)
-#define sv_unmagicext(a,b,c) Perl_sv_unmagicext(aTHX_ a,b,c)
-#define sv_unref_flags(a,b) Perl_sv_unref_flags(aTHX_ a,b)
-#define sv_untaint(a) Perl_sv_untaint(aTHX_ a)
-#define sv_upgrade(a,b) Perl_sv_upgrade(aTHX_ a,b)
-#define sv_usepvn_flags(a,b,c,d) Perl_sv_usepvn_flags(aTHX_ a,b,c,d)
-#define sv_utf8_decode(a) Perl_sv_utf8_decode(aTHX_ a)
-#define sv_utf8_downgrade_flags(a,b,c) Perl_sv_utf8_downgrade_flags(aTHX_ a,b,c)
-#define sv_utf8_encode(a) Perl_sv_utf8_encode(aTHX_ a)
-#define sv_utf8_upgrade_flags_grow(a,b,c) Perl_sv_utf8_upgrade_flags_grow(aTHX_ a,b,c)
-#ifndef NO_MATHOMS
-#define sv_uv(a) Perl_sv_uv(aTHX_ a)
-#endif
-#define sv_vcatpvf(a,b,c) Perl_sv_vcatpvf(aTHX_ a,b,c)
-#define sv_vcatpvf_mg(a,b,c) Perl_sv_vcatpvf_mg(aTHX_ a,b,c)
-#define sv_vcatpvfn(a,b,c,d,e,f,g) Perl_sv_vcatpvfn(aTHX_ a,b,c,d,e,f,g)
-#define sv_vcatpvfn_flags(a,b,c,d,e,f,g,h) Perl_sv_vcatpvfn_flags(aTHX_ a,b,c,d,e,f,g,h)
-#define sv_vsetpvf(a,b,c) Perl_sv_vsetpvf(aTHX_ a,b,c)
-#define sv_vsetpvf_mg(a,b,c) Perl_sv_vsetpvf_mg(aTHX_ a,b,c)
-#define sv_vsetpvfn(a,b,c,d,e,f,g) Perl_sv_vsetpvfn(aTHX_ a,b,c,d,e,f,g)
-#define switch_to_global_locale Perl_switch_to_global_locale
-#define sync_locale Perl_sync_locale
-#define taint_env() Perl_taint_env(aTHX)
-#define taint_proper(a,b) Perl_taint_proper(aTHX_ a,b)
-#define thread_locale_init Perl_thread_locale_init
-#define thread_locale_term Perl_thread_locale_term
-#define to_uni_lower(a,b,c) Perl_to_uni_lower(aTHX_ a,b,c)
-#define to_uni_title(a,b,c) Perl_to_uni_title(aTHX_ a,b,c)
-#define to_uni_upper(a,b,c) Perl_to_uni_upper(aTHX_ a,b,c)
-#ifndef NO_MATHOMS
-#define unpack_str(a,b,c,d,e,f,g,h) Perl_unpack_str(aTHX_ a,b,c,d,e,f,g,h)
-#endif
-#define unpackstring(a,b,c,d,e) Perl_unpackstring(aTHX_ a,b,c,d,e)
-#define unsharepvn(a,b,c) Perl_unsharepvn(aTHX_ a,b,c)
-#define upg_version(a,b) Perl_upg_version(aTHX_ a,b)
-#define utf8_distance(a,b) Perl_utf8_distance(aTHX_ a,b)
-#define utf8_hop Perl_utf8_hop
-#define utf8_hop_back Perl_utf8_hop_back
-#define utf8_hop_forward Perl_utf8_hop_forward
-#define utf8_hop_safe Perl_utf8_hop_safe
-#define utf8_length(a,b) Perl_utf8_length(aTHX_ a,b)
-#define utf8_to_bytes(a,b) Perl_utf8_to_bytes(aTHX_ a,b)
-#ifndef NO_MATHOMS
-#define utf8_to_uvchr(a,b) Perl_utf8_to_uvchr(aTHX_ a,b)
-#endif
-#define utf8_to_uvchr_buf_helper(a,b,c) Perl_utf8_to_uvchr_buf_helper(aTHX_ a,b,c)
-#ifndef NO_MATHOMS
-#define utf8_to_uvuni(a,b) Perl_utf8_to_uvuni(aTHX_ a,b)
-#endif
-#define utf8_to_uvuni_buf(a,b,c) Perl_utf8_to_uvuni_buf(aTHX_ a,b,c)
-#define utf8n_to_uvchr_msgs Perl_utf8n_to_uvchr_msgs
-#ifndef NO_MATHOMS
-#define utf8n_to_uvuni(a,b,c,d) Perl_utf8n_to_uvuni(aTHX_ a,b,c,d)
-#endif
-#define uvoffuni_to_utf8_flags_msgs(a,b,c,d) Perl_uvoffuni_to_utf8_flags_msgs(aTHX_ a,b,c,d)
-#define uvuni_to_utf8(a,b) Perl_uvuni_to_utf8(aTHX_ a,b)
-#ifndef NO_MATHOMS
-#define uvuni_to_utf8_flags(a,b,c) Perl_uvuni_to_utf8_flags(aTHX_ a,b,c)
-#endif
-#define valid_utf8_to_uvchr Perl_valid_utf8_to_uvchr
-#ifndef NO_MATHOMS
-#define valid_utf8_to_uvuni(a,b) Perl_valid_utf8_to_uvuni(aTHX_ a,b)
-#endif
-#define vcmp(a,b) Perl_vcmp(aTHX_ a,b)
-#define vcroak(a,b) Perl_vcroak(aTHX_ a,b)
-#define vdeb(a,b) Perl_vdeb(aTHX_ a,b)
-#define vform(a,b) Perl_vform(aTHX_ a,b)
-#define vload_module(a,b,c,d) Perl_vload_module(aTHX_ a,b,c,d)
-#define vmess(a,b) Perl_vmess(aTHX_ a,b)
-#define vnewSVpvf(a,b) Perl_vnewSVpvf(aTHX_ a,b)
-#define vnormal(a) Perl_vnormal(aTHX_ a)
-#define vnumify(a) Perl_vnumify(aTHX_ a)
-#define vstringify(a) Perl_vstringify(aTHX_ a)
-#define vverify(a) Perl_vverify(aTHX_ a)
-#define vwarn(a,b) Perl_vwarn(aTHX_ a,b)
-#define vwarner(a,b,c) Perl_vwarner(aTHX_ a,b,c)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define warn Perl_warn
-#endif
-#define warn_sv(a) Perl_warn_sv(aTHX_ a)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define warner Perl_warner
-#endif
-#define whichsig_pv(a) Perl_whichsig_pv(aTHX_ a)
-#define whichsig_pvn(a,b) Perl_whichsig_pvn(aTHX_ a,b)
-#define whichsig_sv(a) Perl_whichsig_sv(aTHX_ a)
-#define wrap_keyword_plugin(a,b) Perl_wrap_keyword_plugin(aTHX_ a,b)
-#define wrap_op_checker(a,b,c) Perl_wrap_op_checker(aTHX_ a,b,c)
-#if !(defined(PERL_USE_3ARG_SIGHANDLER))
-#define csighandler Perl_csighandler
-#endif
-#if !defined(EBCDIC)
-#define variant_byte_number Perl_variant_byte_number
-#endif
-#if !defined(HAS_STRLCAT)
-#define my_strlcat Perl_my_strlcat
-#endif
-#if !defined(HAS_STRLCPY)
-#define my_strlcpy Perl_my_strlcpy
-#endif
-#if !defined(HAS_STRNLEN)
-#define my_strnlen Perl_my_strnlen
-#endif
-#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
-#define my_chsize(a,b) Perl_my_chsize(aTHX_ a,b)
-#endif
-#if !defined(PERL_IMPLICIT_SYS)
-#define my_pclose(a) Perl_my_pclose(aTHX_ a)
-#define my_popen(a,b) Perl_my_popen(aTHX_ a,b)
-#endif
-#if !defined(PERL_NO_INLINE_FUNCTIONS)
-#define cx_popblock(a) Perl_cx_popblock(aTHX_ a)
-#define cx_popeval(a) Perl_cx_popeval(aTHX_ a)
-#define cx_popformat(a) Perl_cx_popformat(aTHX_ a)
-#define cx_popgiven(a) Perl_cx_popgiven(aTHX_ a)
-#define cx_poploop(a) Perl_cx_poploop(aTHX_ a)
-#define cx_popsub(a) Perl_cx_popsub(aTHX_ a)
-#define cx_popsub_args(a) Perl_cx_popsub_args(aTHX_ a)
-#define cx_popsub_common(a) Perl_cx_popsub_common(aTHX_ a)
-#define cx_popwhen(a) Perl_cx_popwhen(aTHX_ a)
-#define cx_pushblock(a,b,c,d) Perl_cx_pushblock(aTHX_ a,b,c,d)
-#define cx_pusheval(a,b,c) Perl_cx_pusheval(aTHX_ a,b,c)
-#define cx_pushformat(a,b,c,d) Perl_cx_pushformat(aTHX_ a,b,c,d)
-#define cx_pushgiven(a,b) Perl_cx_pushgiven(aTHX_ a,b)
-#define cx_pushloop_for(a,b,c) Perl_cx_pushloop_for(aTHX_ a,b,c)
-#define cx_pushloop_plain(a) Perl_cx_pushloop_plain(aTHX_ a)
-#define cx_pushsub(a,b,c,d) Perl_cx_pushsub(aTHX_ a,b,c,d)
-#define cx_pushtry(a,b) Perl_cx_pushtry(aTHX_ a,b)
-#define cx_pushwhen(a) Perl_cx_pushwhen(aTHX_ a)
-#define cx_topblock(a) Perl_cx_topblock(aTHX_ a)
-#define gimme_V() Perl_gimme_V(aTHX)
-#endif
-#if defined(DEBUGGING)
-#define pad_setsv(a,b) Perl_pad_setsv(aTHX_ a,b)
-#define pad_sv(a) Perl_pad_sv(aTHX_ a)
-#endif
-#if defined(HAVE_INTERP_INTERN)
-#define sys_intern_clear() Perl_sys_intern_clear(aTHX)
-#define sys_intern_init() Perl_sys_intern_init(aTHX)
-# if defined(USE_ITHREADS)
-#define sys_intern_dup(a,b) Perl_sys_intern_dup(aTHX_ a,b)
-# endif
-#endif
-#if defined(MYMALLOC)
-#define dump_mstats(a) Perl_dump_mstats(aTHX_ a)
-#define get_mstats(a,b,c) Perl_get_mstats(aTHX_ a,b,c)
-#endif
-#if defined(PERL_IMPLICIT_CONTEXT)
-#define croak_nocontext Perl_croak_nocontext
-#define deb_nocontext Perl_deb_nocontext
-#define die_nocontext Perl_die_nocontext
-#define form_nocontext Perl_form_nocontext
-#ifndef NO_MATHOMS
-#define fprintf_nocontext Perl_fprintf_nocontext
-#endif
-#define load_module_nocontext Perl_load_module_nocontext
-#define mess_nocontext Perl_mess_nocontext
-#define newSVpvf_nocontext Perl_newSVpvf_nocontext
-#ifndef NO_MATHOMS
-#define printf_nocontext Perl_printf_nocontext
-#endif
-#define sv_catpvf_mg_nocontext Perl_sv_catpvf_mg_nocontext
-#define sv_catpvf_nocontext Perl_sv_catpvf_nocontext
-#define sv_setpvf_mg_nocontext Perl_sv_setpvf_mg_nocontext
-#define sv_setpvf_nocontext Perl_sv_setpvf_nocontext
-#define warn_nocontext Perl_warn_nocontext
-#define warner_nocontext Perl_warner_nocontext
-#endif
-#if defined(PERL_USE_3ARG_SIGHANDLER)
-#define csighandler Perl_csighandler
-#endif
-#if defined(UNLINK_ALL_VERSIONS)
-#define unlnk(a) Perl_unlnk(aTHX_ a)
-#endif
-#if defined(USE_C_BACKTRACE)
-#define dump_c_backtrace(a,b,c) Perl_dump_c_backtrace(aTHX_ a,b,c)
-#define get_c_backtrace_dump(a,b) Perl_get_c_backtrace_dump(aTHX_ a,b)
-#endif
-#if defined(USE_ITHREADS)
-#define alloccopstash(a) Perl_alloccopstash(aTHX_ a)
-#define any_dup(a,b) Perl_any_dup(aTHX_ a,b)
-#define cx_dup(a,b,c,d) Perl_cx_dup(aTHX_ a,b,c,d)
-#define dirp_dup(a,b) Perl_dirp_dup(aTHX_ a,b)
-#define fp_dup(a,b,c) Perl_fp_dup(aTHX_ a,b,c)
-#define gp_dup(a,b) Perl_gp_dup(aTHX_ a,b)
-#define he_dup(a,b,c) Perl_he_dup(aTHX_ a,b,c)
-#define hek_dup(a,b) Perl_hek_dup(aTHX_ a,b)
-#define mg_dup(a,b) Perl_mg_dup(aTHX_ a,b)
-#define newPADOP(a,b,c) Perl_newPADOP(aTHX_ a,b,c)
-#define parser_dup(a,b) Perl_parser_dup(aTHX_ a,b)
-#define re_dup_guts(a,b,c) Perl_re_dup_guts(aTHX_ a,b,c)
-#define regdupe_internal(a,b) Perl_regdupe_internal(aTHX_ a,b)
-#define rvpv_dup(a,b,c) Perl_rvpv_dup(aTHX_ a,b,c)
-#define si_dup(a,b) Perl_si_dup(aTHX_ a,b)
-#define ss_dup(a,b) Perl_ss_dup(aTHX_ a,b)
-#define sv_dup(a,b) Perl_sv_dup(aTHX_ a,b)
-#define sv_dup_inc(a,b) Perl_sv_dup_inc(aTHX_ a,b)
-#endif
-#if defined(USE_LOCALE) && ( defined(PERL_IN_LOCALE_C) || defined(PERL_IN_MG_C) || defined (PERL_EXT_POSIX) || defined (PERL_EXT_LANGINFO))
-#define _is_cur_LC_category_utf8(a) Perl__is_cur_LC_category_utf8(aTHX_ a)
-#endif
-#if defined(USE_LOCALE_COLLATE)
-#define sv_collxfrm_flags(a,b,c) Perl_sv_collxfrm_flags(aTHX_ a,b,c)
-#endif
-#if defined(USE_PERLIO)
-#define PerlIO_clearerr(a) Perl_PerlIO_clearerr(aTHX_ a)
-#define PerlIO_close(a) Perl_PerlIO_close(aTHX_ a)
-#define PerlIO_eof(a) Perl_PerlIO_eof(aTHX_ a)
-#define PerlIO_error(a) Perl_PerlIO_error(aTHX_ a)
-#define PerlIO_fileno(a) Perl_PerlIO_fileno(aTHX_ a)
-#define PerlIO_fill(a) Perl_PerlIO_fill(aTHX_ a)
-#define PerlIO_flush(a) Perl_PerlIO_flush(aTHX_ a)
-#define PerlIO_get_base(a) Perl_PerlIO_get_base(aTHX_ a)
-#define PerlIO_get_bufsiz(a) Perl_PerlIO_get_bufsiz(aTHX_ a)
-#define PerlIO_get_cnt(a) Perl_PerlIO_get_cnt(aTHX_ a)
-#define PerlIO_get_ptr(a) Perl_PerlIO_get_ptr(aTHX_ a)
-#define PerlIO_read(a,b,c) Perl_PerlIO_read(aTHX_ a,b,c)
-#define PerlIO_seek(a,b,c) Perl_PerlIO_seek(aTHX_ a,b,c)
-#define PerlIO_set_cnt(a,b) Perl_PerlIO_set_cnt(aTHX_ a,b)
-#define PerlIO_set_ptrcnt(a,b,c) Perl_PerlIO_set_ptrcnt(aTHX_ a,b,c)
-#define PerlIO_setlinebuf(a) Perl_PerlIO_setlinebuf(aTHX_ a)
-#define PerlIO_stderr() Perl_PerlIO_stderr(aTHX)
-#define PerlIO_stdin() Perl_PerlIO_stdin(aTHX)
-#define PerlIO_stdout() Perl_PerlIO_stdout(aTHX)
-#define PerlIO_tell(a) Perl_PerlIO_tell(aTHX_ a)
-#define PerlIO_unread(a,b,c) Perl_PerlIO_unread(aTHX_ a,b,c)
-#define PerlIO_write(a,b,c) Perl_PerlIO_write(aTHX_ a,b,c)
-#endif
-#if defined(WIN32) || defined(VMS)
-#define do_aspawn(a,b,c) Perl_do_aspawn(aTHX_ a,b,c)
-#define do_spawn(a) Perl_do_spawn(aTHX_ a)
-#define do_spawn_nowait(a) Perl_do_spawn_nowait(aTHX_ a)
-#endif
-#if defined(PERL_CORE) || defined(PERL_EXT)
-#define _byte_dump_string(a,b,c) Perl__byte_dump_string(aTHX_ a,b,c)
-#define _inverse_folds(a,b,c) Perl__inverse_folds(aTHX_ a,b,c)
-#define append_utf8_from_native_byte Perl_append_utf8_from_native_byte
-#define av_reify(a) Perl_av_reify(aTHX_ a)
-#define cntrl_to_mnemonic Perl_cntrl_to_mnemonic
-#define current_re_engine() Perl_current_re_engine(aTHX)
-#define cv_ckproto_len_flags(a,b,c,d,e) Perl_cv_ckproto_len_flags(aTHX_ a,b,c,d,e)
-#define delimcpy_no_escape Perl_delimcpy_no_escape
-#define do_uniprop_match Perl_do_uniprop_match
-#define get_and_check_backslash_N_name(a,b,c,d) Perl_get_and_check_backslash_N_name(aTHX_ a,b,c,d)
-#define get_deprecated_property_msg Perl_get_deprecated_property_msg
-#define get_prop_definition(a) Perl_get_prop_definition(aTHX_ a)
-#define get_prop_values Perl_get_prop_values
-#define grok_atoUV Perl_grok_atoUV
-#define load_charnames(a,b,c,d) Perl_load_charnames(aTHX_ a,b,c,d)
-#define mg_find_mglob(a) Perl_mg_find_mglob(aTHX_ a)
-#define multiconcat_stringify(a) Perl_multiconcat_stringify(aTHX_ a)
-#define multideref_stringify(a,b) Perl_multideref_stringify(aTHX_ a,b)
-#define op_clear(a) Perl_op_clear(aTHX_ a)
-#define qerror(a) Perl_qerror(aTHX_ a)
-#define reg_named_buff(a,b,c,d) Perl_reg_named_buff(aTHX_ a,b,c,d)
-#define reg_named_buff_iter(a,b,c) Perl_reg_named_buff_iter(aTHX_ a,b,c)
-#define reg_numbered_buff_fetch(a,b,c) Perl_reg_numbered_buff_fetch(aTHX_ a,b,c)
-#define reg_numbered_buff_length(a,b,c) Perl_reg_numbered_buff_length(aTHX_ a,b,c)
-#define reg_numbered_buff_store(a,b,c) Perl_reg_numbered_buff_store(aTHX_ a,b,c)
-#define reg_qr_package(a) Perl_reg_qr_package(aTHX_ a)
-#define reg_temp_copy(a,b) Perl_reg_temp_copy(aTHX_ a,b)
-#define report_uninit(a) Perl_report_uninit(aTHX_ a)
-#define scan_str(a,b,c,d,e) Perl_scan_str(aTHX_ a,b,c,d,e)
-#define scan_word(a,b,c,d,e) Perl_scan_word(aTHX_ a,b,c,d,e)
-#define skipspace_flags(a,b) Perl_skipspace_flags(aTHX_ a,b)
-#define sv_magicext_mglob(a) Perl_sv_magicext_mglob(aTHX_ a)
-#define sv_only_taint_gmagic Perl_sv_only_taint_gmagic
-#define utf16_to_utf8(a,b,c,d) Perl_utf16_to_utf8(aTHX_ a,b,c,d)
-#define utf16_to_utf8_reversed(a,b,c,d) Perl_utf16_to_utf8_reversed(aTHX_ a,b,c,d)
-#define validate_proto(a,b,c,d) Perl_validate_proto(aTHX_ a,b,c,d)
-#define vivify_defelem(a) Perl_vivify_defelem(aTHX_ a)
-#define yylex() Perl_yylex(aTHX)
-# if ! defined(HAS_MEMRCHR) && (defined(PERL_CORE) || defined(PERL_EXT))
-#define my_memrchr S_my_memrchr
-# endif
-# if !(!defined(PERL_EXT_RE_BUILD))
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
-#define get_re_gclass_nonbitmap_data(a,b,c,d,e,f) Perl_get_re_gclass_nonbitmap_data(aTHX_ a,b,c,d,e,f)
-# endif
-# endif
-# if !defined(PERL_EXT_RE_BUILD)
-# if defined(PERL_IN_REGCOMP_C)
-#define _append_range_to_invlist(a,b,c) S__append_range_to_invlist(aTHX_ a,b,c)
-#define _invlist_array_init S__invlist_array_init
-#define get_invlist_previous_index_addr S_get_invlist_previous_index_addr
-#define invlist_clear(a) S_invlist_clear(aTHX_ a)
-#define invlist_max S_invlist_max
-#define invlist_previous_index S_invlist_previous_index
-#define invlist_replace_list_destroys_src(a,b) S_invlist_replace_list_destroys_src(aTHX_ a,b)
-#define invlist_set_previous_index S_invlist_set_previous_index
-#define invlist_trim S_invlist_trim
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
-#define get_regclass_nonbitmap_data(a,b,c,d,e,f) Perl_get_regclass_nonbitmap_data(aTHX_ a,b,c,d,e,f)
-# endif
-# endif
-# if defined(DEBUGGING)
-# if defined(PERL_IN_REGCOMP_C)
-#define dump_trie(a,b,c,d) S_dump_trie(aTHX_ a,b,c,d)
-#define dump_trie_interim_list(a,b,c,d,e) S_dump_trie_interim_list(aTHX_ a,b,c,d,e)
-#define dump_trie_interim_table(a,b,c,d,e) S_dump_trie_interim_table(aTHX_ a,b,c,d,e)
-#define dumpuntil(a,b,c,d,e,f,g,h) S_dumpuntil(aTHX_ a,b,c,d,e,f,g,h)
-#define put_charclass_bitmap_innards(a,b,c,d,e,f,g) S_put_charclass_bitmap_innards(aTHX_ a,b,c,d,e,f,g)
-#define put_charclass_bitmap_innards_common(a,b,c,d,e,f) S_put_charclass_bitmap_innards_common(aTHX_ a,b,c,d,e,f)
-#define put_charclass_bitmap_innards_invlist(a,b) S_put_charclass_bitmap_innards_invlist(aTHX_ a,b)
-#define put_code_point(a,b) S_put_code_point(aTHX_ a,b)
-#define put_range(a,b,c,d) S_put_range(aTHX_ a,b,c,d)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define re_indentf Perl_re_indentf
-#endif
-#define regdump_extflags(a,b) S_regdump_extflags(aTHX_ a,b)
-#define regdump_intflags(a,b) S_regdump_intflags(aTHX_ a,b)
-#define regtail_study(a,b,c,d) S_regtail_study(aTHX_ a,b,c,d)
-# endif
-# if defined(PERL_IN_REGEXEC_C)
-#define debug_start_match(a,b,c,d,e) S_debug_start_match(aTHX_ a,b,c,d,e)
-#define dump_exec_pos(a,b,c,d,e,f,g) S_dump_exec_pos(aTHX_ a,b,c,d,e,f,g)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define re_exec_indentf Perl_re_exec_indentf
-#endif
-# endif
-# endif
-# if defined(DEBUGGING) && defined(ENABLE_REGEX_SETS_DEBUGGING)
-# if defined(PERL_IN_REGCOMP_C)
-#define dump_regex_sets_structures(a,b,c,d) S_dump_regex_sets_structures(aTHX_ a,b,c,d)
-# endif
-# endif
-# if defined(PERL_ANY_COW)
-#define sv_setsv_cow(a,b) Perl_sv_setsv_cow(aTHX_ a,b)
-# endif
-# if defined(PERL_CORE) || defined (PERL_EXT)
-#define is_utf8_non_invariant_string Perl_is_utf8_non_invariant_string
-#define sv_or_pv_pos_u2b(a,b,c,d) S_sv_or_pv_pos_u2b(aTHX_ a,b,c,d)
-# endif
-# if defined(PERL_CORE) || defined(PERL_EXT)
-#define isSCRIPT_RUN(a,b,c) Perl_isSCRIPT_RUN(aTHX_ a,b,c)
-#define variant_under_utf8_count S_variant_under_utf8_count
-# endif
-# if defined(PERL_IN_GV_C) || defined(PERL_IN_UNIVERSAL_C)
-#define gv_stashsvpvn_cached(a,b,c,d) Perl_gv_stashsvpvn_cached(aTHX_ a,b,c,d)
-# endif
-# if defined(PERL_IN_REGCOMP_C)
-#define add_above_Latin1_folds(a,b,c) S_add_above_Latin1_folds(aTHX_ a,b,c)
-#define add_data S_add_data
-#define add_multi_match(a,b,c) S_add_multi_match(aTHX_ a,b,c)
-#define change_engine_size(a,b) S_change_engine_size(aTHX_ a,b)
-#define compile_wildcard(a,b,c) S_compile_wildcard(aTHX_ a,b,c)
-#define compute_EXACTish S_compute_EXACTish
-#define construct_ahocorasick_from_trie(a,b,c) S_construct_ahocorasick_from_trie(aTHX_ a,b,c)
-#define edit_distance S_edit_distance
-#define execute_wildcard(a,b,c,d,e,f,g) S_execute_wildcard(aTHX_ a,b,c,d,e,f,g)
-#define find_first_differing_byte_pos S_find_first_differing_byte_pos
-#define get_ANYOFM_contents(a) S_get_ANYOFM_contents(aTHX_ a)
-#define get_ANYOF_cp_list_for_ssc(a,b) S_get_ANYOF_cp_list_for_ssc(aTHX_ a,b)
-#define get_quantifier_value(a,b,c) S_get_quantifier_value(aTHX_ a,b,c)
-#define grok_bslash_N(a,b,c,d,e,f,g) S_grok_bslash_N(aTHX_ a,b,c,d,e,f,g)
-#define handle_named_backref(a,b,c,d) S_handle_named_backref(aTHX_ a,b,c,d)
-#define handle_names_wildcard(a,b,c,d) S_handle_names_wildcard(aTHX_ a,b,c,d)
-#define handle_possible_posix(a,b,c,d,e) S_handle_possible_posix(aTHX_ a,b,c,d,e)
-#define handle_regex_sets(a,b,c,d,e) S_handle_regex_sets(aTHX_ a,b,c,d,e)
-#define handle_user_defined_property(a,b,c,d,e,f,g,h,i,j) S_handle_user_defined_property(aTHX_ a,b,c,d,e,f,g,h,i,j)
-#define invlist_contents(a,b) S_invlist_contents(aTHX_ a,b)
-#define invlist_is_iterating S_invlist_is_iterating
-#define invlist_lowest S_invlist_lowest
-#define is_ssc_worth_it S_is_ssc_worth_it
-#define join_exact(a,b,c,d,e,f,g) S_join_exact(aTHX_ a,b,c,d,e,f,g)
-#define make_exactf_invlist(a,b) S_make_exactf_invlist(aTHX_ a,b)
-#define make_trie(a,b,c,d,e,f,g,h) S_make_trie(aTHX_ a,b,c,d,e,f,g,h)
-#define nextchar(a) S_nextchar(aTHX_ a)
-#define output_posix_warnings(a,b) S_output_posix_warnings(aTHX_ a,b)
-#define parse_lparen_question_flags(a) S_parse_lparen_question_flags(aTHX_ a)
-#define parse_uniprop_string(a,b,c,d,e,f,g,h,i,j) S_parse_uniprop_string(aTHX_ a,b,c,d,e,f,g,h,i,j)
-#define populate_ANYOF_from_invlist(a,b) S_populate_ANYOF_from_invlist(aTHX_ a,b)
-#define rck_elide_nothing(a) S_rck_elide_nothing(aTHX_ a)
-#define reg(a,b,c,d) S_reg(aTHX_ a,b,c,d)
-#define reg2Lanode(a,b,c,d) S_reg2Lanode(aTHX_ a,b,c,d)
-#define reg_node(a,b) S_reg_node(aTHX_ a,b)
-#define reg_scan_name(a,b) S_reg_scan_name(aTHX_ a,b)
-#define reg_skipcomment S_reg_skipcomment
-#define reganode(a,b,c) S_reganode(aTHX_ a,b,c)
-#define regatom(a,b,c) S_regatom(aTHX_ a,b,c)
-#define regbranch(a,b,c,d) S_regbranch(aTHX_ a,b,c,d)
-#define regclass(a,b,c,d,e,f,g,h,i) S_regclass(aTHX_ a,b,c,d,e,f,g,h,i)
-#define regex_set_precedence S_regex_set_precedence
-#define reginsert(a,b,c,d) S_reginsert(aTHX_ a,b,c,d)
-#define regnode_guts(a,b,c,d) S_regnode_guts(aTHX_ a,b,c,d)
-#define regpiece(a,b,c) S_regpiece(aTHX_ a,b,c)
-#define regpnode(a,b,c) S_regpnode(aTHX_ a,b,c)
-#define regtail(a,b,c,d) S_regtail(aTHX_ a,b,c,d)
-#define scan_commit(a,b,c,d) S_scan_commit(aTHX_ a,b,c,d)
-#define set_ANYOF_arg(a,b,c,d,e) S_set_ANYOF_arg(aTHX_ a,b,c,d,e)
-#define set_regex_pv(a,b) S_set_regex_pv(aTHX_ a,b)
-#define skip_to_be_ignored_text(a,b,c) S_skip_to_be_ignored_text(aTHX_ a,b,c)
-#define ssc_add_range(a,b,c) S_ssc_add_range(aTHX_ a,b,c)
-#define ssc_and(a,b,c) S_ssc_and(aTHX_ a,b,c)
-#define ssc_anything(a) S_ssc_anything(aTHX_ a)
-#define ssc_clear_locale S_ssc_clear_locale
-#define ssc_cp_and(a,b) S_ssc_cp_and(aTHX_ a,b)
-#define ssc_finalize(a,b) S_ssc_finalize(aTHX_ a,b)
-#define ssc_init(a,b) S_ssc_init(aTHX_ a,b)
-#define ssc_intersection(a,b,c) S_ssc_intersection(aTHX_ a,b,c)
-#define ssc_is_anything S_ssc_is_anything
-#define ssc_is_cp_posixl_init S_ssc_is_cp_posixl_init
-#define ssc_or(a,b,c) S_ssc_or(aTHX_ a,b,c)
-#define ssc_union(a,b,c) S_ssc_union(aTHX_ a,b,c)
-#define study_chunk(a,b,c,d,e,f,g,h,i,j,k,l) S_study_chunk(aTHX_ a,b,c,d,e,f,g,h,i,j,k,l)
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C) || defined(PERL_IN_OP_C)
-#define _invlist_dump(a,b,c,d) Perl__invlist_dump(aTHX_ a,b,c,d)
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C)
-#define add_cp_to_invlist(a,b) S_add_cp_to_invlist(aTHX_ a,b)
-#define invlist_extend(a,b) S_invlist_extend(aTHX_ a,b)
-#define invlist_highest S_invlist_highest
-#define invlist_set_len(a,b,c) S_invlist_set_len(aTHX_ a,b,c)
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_UTF8_C)
-#define _add_range_to_invlist(a,b,c) Perl__add_range_to_invlist(aTHX_ a,b,c)
-#define _invlist_intersection_maybe_complement_2nd(a,b,c,d) Perl__invlist_intersection_maybe_complement_2nd(aTHX_ a,b,c,d)
-#define _invlist_invert(a) Perl__invlist_invert(aTHX_ a)
-#define _invlist_union_maybe_complement_2nd(a,b,c,d) Perl__invlist_union_maybe_complement_2nd(aTHX_ a,b,c,d)
-#define _new_invlist(a) Perl__new_invlist(aTHX_ a)
-#define _setup_canned_invlist(a,b,c) Perl__setup_canned_invlist(aTHX_ a,b,c)
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_TOKE_C)
-#define form_alien_digit_msg(a,b,c,d,e,f) Perl_form_alien_digit_msg(aTHX_ a,b,c,d,e,f)
-#define grok_bslash_c(a,b,c,d) Perl_grok_bslash_c(aTHX_ a,b,c,d)
-#define grok_bslash_o(a,b,c,d,e,f,g,h) Perl_grok_bslash_o(aTHX_ a,b,c,d,e,f,g,h)
-#define grok_bslash_x(a,b,c,d,e,f,g,h) Perl_grok_bslash_x(aTHX_ a,b,c,d,e,f,g,h)
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C)
-#define form_cp_too_large_msg(a,b,c,d) Perl_form_cp_too_large_msg(aTHX_ a,b,c,d)
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C)
-#define get_invlist_iter_addr S_get_invlist_iter_addr
-#define invlist_iterfinish S_invlist_iterfinish
-#define invlist_iterinit S_invlist_iterinit
-#define invlist_iternext S_invlist_iternext
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C)
-#define _invlistEQ(a,b,c) Perl__invlistEQ(aTHX_ a,b,c)
-#define _new_invlist_C_array(a) Perl__new_invlist_C_array(aTHX_ a)
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C)
-#define get_regex_charset_name S_get_regex_charset_name
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define re_printf Perl_re_printf
-#endif
-#define regprop(a,b,c,d,e) Perl_regprop(aTHX_ a,b,c,d,e)
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_PP_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_DOOP_C)
-#define _invlist_contains_cp S__invlist_contains_cp
-#define _invlist_len S__invlist_len
-#define _invlist_search Perl__invlist_search
-#define get_invlist_offset_addr S_get_invlist_offset_addr
-#define invlist_array S_invlist_array
-#define is_invlist S_is_invlist
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C)
-#define is_grapheme(a,b,c,d) Perl_is_grapheme(aTHX_ a,b,c,d)
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C)
-#define _to_fold_latin1 Perl__to_fold_latin1
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_SV_C)
-#define invlist_clone(a,b) Perl_invlist_clone(aTHX_ a,b)
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C)
-#define regcurly Perl_regcurly
-# endif
-# if defined(PERL_IN_REGEXEC_C)
-#define advance_one_LB(a,b,c) S_advance_one_LB(aTHX_ a,b,c)
-#define advance_one_SB(a,b,c) S_advance_one_SB(aTHX_ a,b,c)
-#define advance_one_WB(a,b,c,d) S_advance_one_WB(aTHX_ a,b,c,d)
-#define backup_one_GCB(a,b,c) S_backup_one_GCB(aTHX_ a,b,c)
-#define backup_one_LB(a,b,c) S_backup_one_LB(aTHX_ a,b,c)
-#define backup_one_SB(a,b,c) S_backup_one_SB(aTHX_ a,b,c)
-#define backup_one_WB(a,b,c,d) S_backup_one_WB(aTHX_ a,b,c,d)
-#define find_byclass(a,b,c,d,e) S_find_byclass(aTHX_ a,b,c,d,e)
-#define find_next_masked S_find_next_masked
-#define find_span_end S_find_span_end
-#define find_span_end_mask S_find_span_end_mask
-#define foldEQ_latin1_s2_folded S_foldEQ_latin1_s2_folded
-#define isFOO_lc(a,b) S_isFOO_lc(aTHX_ a,b)
-#define isFOO_utf8_lc(a,b,c) S_isFOO_utf8_lc(aTHX_ a,b,c)
-#define isGCB(a,b,c,d,e) S_isGCB(aTHX_ a,b,c,d,e)
-#define isLB(a,b,c,d,e,f) S_isLB(aTHX_ a,b,c,d,e,f)
-#define isSB(a,b,c,d,e,f) S_isSB(aTHX_ a,b,c,d,e,f)
-#define isWB(a,b,c,d,e,f,g) S_isWB(aTHX_ a,b,c,d,e,f,g)
-#define reg_check_named_buff_matched S_reg_check_named_buff_matched
-#define regcp_restore(a,b,c) S_regcp_restore(aTHX_ a,b,c _aDEPTH)
-#define regcppop(a,b) S_regcppop(aTHX_ a,b _aDEPTH)
-#define regcppush(a,b,c) S_regcppush(aTHX_ a,b,c _aDEPTH)
-#define reghop3 S_reghop3
-#define reghop4 S_reghop4
-#define reghopmaybe3 S_reghopmaybe3
-#define reginclass(a,b,c,d,e) S_reginclass(aTHX_ a,b,c,d,e)
-#define regmatch(a,b,c) S_regmatch(aTHX_ a,b,c)
-#define regrepeat(a,b,c,d,e,f) S_regrepeat(aTHX_ a,b,c,d,e,f _aDEPTH)
-#define regtry(a,b) S_regtry(aTHX_ a,b)
-#define to_byte_substr(a) S_to_byte_substr(aTHX_ a)
-#define to_utf8_substr(a) S_to_utf8_substr(aTHX_ a)
-# endif
-#endif
-#ifdef PERL_CORE
-#define PerlLIO_dup2_cloexec(a,b) Perl_PerlLIO_dup2_cloexec(aTHX_ a,b)
-#define PerlLIO_dup_cloexec(a) Perl_PerlLIO_dup_cloexec(aTHX_ a)
-#define PerlLIO_open3_cloexec(a,b,c) Perl_PerlLIO_open3_cloexec(aTHX_ a,b,c)
-#define PerlLIO_open_cloexec(a,b) Perl_PerlLIO_open_cloexec(aTHX_ a,b)
-#define Slab_Alloc(a) Perl_Slab_Alloc(aTHX_ a)
-#define Slab_Free(a) Perl_Slab_Free(aTHX_ a)
-#define _is_in_locale_category(a,b) Perl__is_in_locale_category(aTHX_ a,b)
-#define _warn_problematic_locale Perl__warn_problematic_locale
-#define abort_execution(a,b) Perl_abort_execution(aTHX_ a,b)
-#define alloc_LOGOP(a,b,c) Perl_alloc_LOGOP(aTHX_ a,b,c)
-#define allocmy(a,b,c) Perl_allocmy(aTHX_ a,b,c)
-#define amagic_is_enabled(a) Perl_amagic_is_enabled(aTHX_ a)
-#define apply(a,b,c) Perl_apply(aTHX_ a,b,c)
-#define av_extend_guts(a,b,c,d,e) Perl_av_extend_guts(aTHX_ a,b,c,d,e)
-#define av_nonelem(a,b) Perl_av_nonelem(aTHX_ a,b)
-#define bind_match(a,b,c) Perl_bind_match(aTHX_ a,b,c)
-#define boot_core_PerlIO() Perl_boot_core_PerlIO(aTHX)
-#define boot_core_UNIVERSAL() Perl_boot_core_UNIVERSAL(aTHX)
-#define boot_core_mro() Perl_boot_core_mro(aTHX)
-#define cando(a,b,c) Perl_cando(aTHX_ a,b,c)
-#define check_utf8_print(a,b) Perl_check_utf8_print(aTHX_ a,b)
-#define ck_anoncode(a) Perl_ck_anoncode(aTHX_ a)
-#define ck_backtick(a) Perl_ck_backtick(aTHX_ a)
-#define ck_bitop(a) Perl_ck_bitop(aTHX_ a)
-#define ck_cmp(a) Perl_ck_cmp(aTHX_ a)
-#define ck_concat(a) Perl_ck_concat(aTHX_ a)
-#define ck_defined(a) Perl_ck_defined(aTHX_ a)
-#define ck_delete(a) Perl_ck_delete(aTHX_ a)
-#define ck_each(a) Perl_ck_each(aTHX_ a)
-#define ck_eof(a) Perl_ck_eof(aTHX_ a)
-#define ck_eval(a) Perl_ck_eval(aTHX_ a)
-#define ck_exec(a) Perl_ck_exec(aTHX_ a)
-#define ck_exists(a) Perl_ck_exists(aTHX_ a)
-#define ck_ftst(a) Perl_ck_ftst(aTHX_ a)
-#define ck_fun(a) Perl_ck_fun(aTHX_ a)
-#define ck_glob(a) Perl_ck_glob(aTHX_ a)
-#define ck_grep(a) Perl_ck_grep(aTHX_ a)
-#define ck_index(a) Perl_ck_index(aTHX_ a)
-#define ck_isa(a) Perl_ck_isa(aTHX_ a)
-#define ck_join(a) Perl_ck_join(aTHX_ a)
-#define ck_length(a) Perl_ck_length(aTHX_ a)
-#define ck_lfun(a) Perl_ck_lfun(aTHX_ a)
-#define ck_listiob(a) Perl_ck_listiob(aTHX_ a)
-#define ck_match(a) Perl_ck_match(aTHX_ a)
-#define ck_method(a) Perl_ck_method(aTHX_ a)
-#define ck_null(a) Perl_ck_null(aTHX_ a)
-#define ck_open(a) Perl_ck_open(aTHX_ a)
-#define ck_prototype(a) Perl_ck_prototype(aTHX_ a)
-#define ck_readline(a) Perl_ck_readline(aTHX_ a)
-#define ck_refassign(a) Perl_ck_refassign(aTHX_ a)
-#define ck_repeat(a) Perl_ck_repeat(aTHX_ a)
-#define ck_require(a) Perl_ck_require(aTHX_ a)
-#define ck_return(a) Perl_ck_return(aTHX_ a)
-#define ck_rfun(a) Perl_ck_rfun(aTHX_ a)
-#define ck_rvconst(a) Perl_ck_rvconst(aTHX_ a)
-#define ck_sassign(a) Perl_ck_sassign(aTHX_ a)
-#define ck_select(a) Perl_ck_select(aTHX_ a)
-#define ck_shift(a) Perl_ck_shift(aTHX_ a)
-#define ck_smartmatch(a) Perl_ck_smartmatch(aTHX_ a)
-#define ck_sort(a) Perl_ck_sort(aTHX_ a)
-#define ck_spair(a) Perl_ck_spair(aTHX_ a)
-#define ck_split(a) Perl_ck_split(aTHX_ a)
-#define ck_stringify(a) Perl_ck_stringify(aTHX_ a)
-#define ck_subr(a) Perl_ck_subr(aTHX_ a)
-#define ck_substr(a) Perl_ck_substr(aTHX_ a)
-#define ck_svconst(a) Perl_ck_svconst(aTHX_ a)
-#define ck_tell(a) Perl_ck_tell(aTHX_ a)
-#define ck_trunc(a) Perl_ck_trunc(aTHX_ a)
-#define ck_trycatch(a) Perl_ck_trycatch(aTHX_ a)
-#define closest_cop(a,b,c,d) Perl_closest_cop(aTHX_ a,b,c,d)
-#define cmpchain_extend(a,b,c) Perl_cmpchain_extend(aTHX_ a,b,c)
-#define cmpchain_finish(a) Perl_cmpchain_finish(aTHX_ a)
-#define cmpchain_start(a,b,c) Perl_cmpchain_start(aTHX_ a,b,c)
-#define core_prototype(a,b,c,d) Perl_core_prototype(aTHX_ a,b,c,d)
-#define coresub_op(a,b,c) Perl_coresub_op(aTHX_ a,b,c)
-#define create_eval_scope(a,b) Perl_create_eval_scope(aTHX_ a,b)
-#define croak_caller Perl_croak_caller
-#define croak_no_mem Perl_croak_no_mem
-#define croak_popstack Perl_croak_popstack
-#define custom_op_get_field(a,b) Perl_custom_op_get_field(aTHX_ a,b)
-#define cv_clone_into(a,b) Perl_cv_clone_into(aTHX_ a,b)
-#define cv_const_sv_or_av Perl_cv_const_sv_or_av
-#define cv_forget_slab(a) Perl_cv_forget_slab(aTHX_ a)
-#define cv_undef_flags(a,b) Perl_cv_undef_flags(aTHX_ a,b)
-#define cvgv_set(a,b) Perl_cvgv_set(aTHX_ a,b)
-#define cvstash_set(a,b) Perl_cvstash_set(aTHX_ a,b)
-#define deb_stack_all() Perl_deb_stack_all(aTHX)
-#define defelem_target(a,b) Perl_defelem_target(aTHX_ a,b)
-#define delete_eval_scope() Perl_delete_eval_scope(aTHX)
-#define die_unwind(a) Perl_die_unwind(aTHX_ a)
-#define do_aexec5(a,b,c,d,e) Perl_do_aexec5(aTHX_ a,b,c,d,e)
-#define do_dump_pad(a,b,c,d) Perl_do_dump_pad(aTHX_ a,b,c,d)
-#define do_eof(a) Perl_do_eof(aTHX_ a)
-#define do_ncmp(a,b) Perl_do_ncmp(aTHX_ a,b)
-#define do_open6(a,b,c,d,e,f) Perl_do_open6(aTHX_ a,b,c,d,e,f)
-#define do_open_raw(a,b,c,d,e,f) Perl_do_open_raw(aTHX_ a,b,c,d,e,f)
-#define do_print(a,b) Perl_do_print(aTHX_ a,b)
-#define do_readline() Perl_do_readline(aTHX)
-#define do_seek(a,b,c) Perl_do_seek(aTHX_ a,b,c)
-#define do_sysseek(a,b,c) Perl_do_sysseek(aTHX_ a,b,c)
-#define do_tell(a) Perl_do_tell(aTHX_ a)
-#define do_trans(a) Perl_do_trans(aTHX_ a)
-#define do_vecget(a,b,c) Perl_do_vecget(aTHX_ a,b,c)
-#define do_vecset(a) Perl_do_vecset(aTHX_ a)
-#define do_vop(a,b,c,d) Perl_do_vop(aTHX_ a,b,c,d)
-#define dofile(a,b) Perl_dofile(aTHX_ a,b)
-#define dump_all_perl(a) Perl_dump_all_perl(aTHX_ a)
-#define dump_packsubs_perl(a,b) Perl_dump_packsubs_perl(aTHX_ a,b)
-#define dump_sub_perl(a,b) Perl_dump_sub_perl(aTHX_ a,b)
-#define finalize_optree(a) Perl_finalize_optree(aTHX_ a)
-#define find_lexical_cv(a) Perl_find_lexical_cv(aTHX_ a)
-#define find_runcv_where(a,b,c) Perl_find_runcv_where(aTHX_ a,b,c)
-#define find_script(a,b,c,d) Perl_find_script(aTHX_ a,b,c,d)
-#define free_tied_hv_pool() Perl_free_tied_hv_pool(aTHX)
-#define get_hash_seed(a) Perl_get_hash_seed(aTHX_ a)
-#define get_no_modify() Perl_get_no_modify(aTHX)
-#define get_opargs() Perl_get_opargs(aTHX)
-#define gv_override(a,b) Perl_gv_override(aTHX_ a,b)
-#define gv_setref(a,b) Perl_gv_setref(aTHX_ a,b)
-#define gv_try_downgrade(a) Perl_gv_try_downgrade(aTHX_ a)
-#define hv_ename_add(a,b,c,d) Perl_hv_ename_add(aTHX_ a,b,c,d)
-#define hv_ename_delete(a,b,c,d) Perl_hv_ename_delete(aTHX_ a,b,c,d)
-#define hv_pushkv(a,b) Perl_hv_pushkv(aTHX_ a,b)
-#define init_argv_symbols(a,b) Perl_init_argv_symbols(aTHX_ a,b)
-#define init_constants() Perl_init_constants(aTHX)
-#define init_debugger() Perl_init_debugger(aTHX)
-#define init_named_cv(a,b) Perl_init_named_cv(aTHX_ a,b)
-#define init_uniprops() Perl_init_uniprops(aTHX)
-#define invert(a) Perl_invert(aTHX_ a)
-#define invmap_dump(a,b) Perl_invmap_dump(aTHX_ a,b)
-#define io_close(a,b,c,d) Perl_io_close(aTHX_ a,b,c,d)
-#define isinfnansv(a) Perl_isinfnansv(aTHX_ a)
-#define jmaybe(a) Perl_jmaybe(aTHX_ a)
-#define keyword(a,b,c) Perl_keyword(aTHX_ a,b,c)
-#define list(a) Perl_list(aTHX_ a)
-#define localize(a,b) Perl_localize(aTHX_ a,b)
-#define magic_clear_all_env(a,b) Perl_magic_clear_all_env(aTHX_ a,b)
-#define magic_cleararylen_p(a,b) Perl_magic_cleararylen_p(aTHX_ a,b)
-#define magic_clearenv(a,b) Perl_magic_clearenv(aTHX_ a,b)
-#define magic_clearhint(a,b) Perl_magic_clearhint(aTHX_ a,b)
-#define magic_clearhints(a,b) Perl_magic_clearhints(aTHX_ a,b)
-#define magic_clearisa(a,b) Perl_magic_clearisa(aTHX_ a,b)
-#define magic_clearpack(a,b) Perl_magic_clearpack(aTHX_ a,b)
-#define magic_clearsig(a,b) Perl_magic_clearsig(aTHX_ a,b)
-#define magic_copycallchecker(a,b,c,d,e) Perl_magic_copycallchecker(aTHX_ a,b,c,d,e)
-#define magic_existspack(a,b) Perl_magic_existspack(aTHX_ a,b)
-#define magic_freearylen_p(a,b) Perl_magic_freearylen_p(aTHX_ a,b)
-#define magic_freemglob(a,b) Perl_magic_freemglob(aTHX_ a,b)
-#define magic_freeovrld(a,b) Perl_magic_freeovrld(aTHX_ a,b)
-#define magic_freeutf8(a,b) Perl_magic_freeutf8(aTHX_ a,b)
-#define magic_get(a,b) Perl_magic_get(aTHX_ a,b)
-#define magic_getarylen(a,b) Perl_magic_getarylen(aTHX_ a,b)
-#define magic_getdebugvar(a,b) Perl_magic_getdebugvar(aTHX_ a,b)
-#define magic_getdefelem(a,b) Perl_magic_getdefelem(aTHX_ a,b)
-#define magic_getnkeys(a,b) Perl_magic_getnkeys(aTHX_ a,b)
-#define magic_getpack(a,b) Perl_magic_getpack(aTHX_ a,b)
-#define magic_getpos(a,b) Perl_magic_getpos(aTHX_ a,b)
-#define magic_getsig(a,b) Perl_magic_getsig(aTHX_ a,b)
-#define magic_getsubstr(a,b) Perl_magic_getsubstr(aTHX_ a,b)
-#define magic_gettaint(a,b) Perl_magic_gettaint(aTHX_ a,b)
-#define magic_getuvar(a,b) Perl_magic_getuvar(aTHX_ a,b)
-#define magic_getvec(a,b) Perl_magic_getvec(aTHX_ a,b)
-#define magic_killbackrefs(a,b) Perl_magic_killbackrefs(aTHX_ a,b)
-#define magic_nextpack(a,b,c) Perl_magic_nextpack(aTHX_ a,b,c)
-#define magic_regdata_cnt(a,b) Perl_magic_regdata_cnt(aTHX_ a,b)
-#define magic_regdatum_get(a,b) Perl_magic_regdatum_get(aTHX_ a,b)
-#define magic_scalarpack(a,b) Perl_magic_scalarpack(aTHX_ a,b)
-#define magic_set(a,b) Perl_magic_set(aTHX_ a,b)
-#define magic_set_all_env(a,b) Perl_magic_set_all_env(aTHX_ a,b)
-#define magic_setarylen(a,b) Perl_magic_setarylen(aTHX_ a,b)
-#define magic_setdbline(a,b) Perl_magic_setdbline(aTHX_ a,b)
-#define magic_setdebugvar(a,b) Perl_magic_setdebugvar(aTHX_ a,b)
-#define magic_setdefelem(a,b) Perl_magic_setdefelem(aTHX_ a,b)
-#define magic_setenv(a,b) Perl_magic_setenv(aTHX_ a,b)
-#define magic_sethint(a,b) Perl_magic_sethint(aTHX_ a,b)
-#define magic_setisa(a,b) Perl_magic_setisa(aTHX_ a,b)
-#define magic_setlvref(a,b) Perl_magic_setlvref(aTHX_ a,b)
-#define magic_setmglob(a,b) Perl_magic_setmglob(aTHX_ a,b)
-#define magic_setnkeys(a,b) Perl_magic_setnkeys(aTHX_ a,b)
-#define magic_setnonelem(a,b) Perl_magic_setnonelem(aTHX_ a,b)
-#define magic_setpack(a,b) Perl_magic_setpack(aTHX_ a,b)
-#define magic_setpos(a,b) Perl_magic_setpos(aTHX_ a,b)
-#define magic_setregexp(a,b) Perl_magic_setregexp(aTHX_ a,b)
-#define magic_setsig(a,b) Perl_magic_setsig(aTHX_ a,b)
-#define magic_setsubstr(a,b) Perl_magic_setsubstr(aTHX_ a,b)
-#define magic_settaint(a,b) Perl_magic_settaint(aTHX_ a,b)
-#define magic_setutf8(a,b) Perl_magic_setutf8(aTHX_ a,b)
-#define magic_setuvar(a,b) Perl_magic_setuvar(aTHX_ a,b)
-#define magic_setvec(a,b) Perl_magic_setvec(aTHX_ a,b)
-#define magic_sizepack(a,b) Perl_magic_sizepack(aTHX_ a,b)
-#define magic_wipepack(a,b) Perl_magic_wipepack(aTHX_ a,b)
-#define mg_localize(a,b,c) Perl_mg_localize(aTHX_ a,b,c)
-#define mode_from_discipline(a,b) Perl_mode_from_discipline(aTHX_ a,b)
-#define mro_isa_changed_in(a) Perl_mro_isa_changed_in(aTHX_ a)
-#define mro_package_moved(a,b,c,d) Perl_mro_package_moved(aTHX_ a,b,c,d)
-#define my_attrs(a,b) Perl_my_attrs(aTHX_ a,b)
-#define my_clearenv() Perl_my_clearenv(aTHX)
-#define my_lstat_flags(a) Perl_my_lstat_flags(aTHX_ a)
-#define my_stat_flags(a) Perl_my_stat_flags(aTHX_ a)
-#define my_strerror(a) Perl_my_strerror(aTHX_ a)
-#define my_unexec() Perl_my_unexec(aTHX)
-#define newATTRSUB_x(a,b,c,d,e,f) Perl_newATTRSUB_x(aTHX_ a,b,c,d,e,f)
-#define newSTUB(a,b) Perl_newSTUB(aTHX_ a,b)
-#define newSVavdefelem(a,b,c) Perl_newSVavdefelem(aTHX_ a,b,c)
-#define newXS_deffile(a,b) Perl_newXS_deffile(aTHX_ a,b)
-#define newXS_len_flags(a,b,c,d,e,f,g) Perl_newXS_len_flags(aTHX_ a,b,c,d,e,f,g)
-#define nextargv(a,b) Perl_nextargv(aTHX_ a,b)
-#define no_bareword_filehandle(a) Perl_no_bareword_filehandle(aTHX_ a)
-#define noperl_die Perl_noperl_die
-#define notify_parser_that_changed_to_utf8() Perl_notify_parser_that_changed_to_utf8(aTHX)
-#define oopsAV(a) Perl_oopsAV(aTHX_ a)
-#define oopsHV(a) Perl_oopsHV(aTHX_ a)
-#define op_unscope(a) Perl_op_unscope(aTHX_ a)
-#define optimize_optree(a) Perl_optimize_optree(aTHX_ a)
-#define package(a) Perl_package(aTHX_ a)
-#define package_version(a) Perl_package_version(aTHX_ a)
-#define pad_add_weakref(a) Perl_pad_add_weakref(aTHX_ a)
-#define pad_block_start(a) Perl_pad_block_start(aTHX_ a)
-#define pad_fixup_inner_anons(a,b,c) Perl_pad_fixup_inner_anons(aTHX_ a,b,c)
-#define pad_free(a) Perl_pad_free(aTHX_ a)
-#define pad_leavemy() Perl_pad_leavemy(aTHX)
-#define pad_push(a,b) Perl_pad_push(aTHX_ a,b)
-#define pad_swipe(a,b) Perl_pad_swipe(aTHX_ a,b)
-#define padlist_store(a,b,c) Perl_padlist_store(aTHX_ a,b,c)
-#define parse_unicode_opts(a) Perl_parse_unicode_opts(aTHX_ a)
-#define parser_free(a) Perl_parser_free(aTHX_ a)
-#define peep(a) Perl_peep(aTHX_ a)
-#define pmruntime(a,b,c,d,e) Perl_pmruntime(aTHX_ a,b,c,d,e)
-#define re_op_compile(a,b,c,d,e,f,g,h) Perl_re_op_compile(aTHX_ a,b,c,d,e,f,g,h)
-#define refcounted_he_chain_2hv(a,b) Perl_refcounted_he_chain_2hv(aTHX_ a,b)
-#define refcounted_he_fetch_pv(a,b,c,d) Perl_refcounted_he_fetch_pv(aTHX_ a,b,c,d)
-#define refcounted_he_fetch_pvn(a,b,c,d,e) Perl_refcounted_he_fetch_pvn(aTHX_ a,b,c,d,e)
-#define refcounted_he_fetch_sv(a,b,c,d) Perl_refcounted_he_fetch_sv(aTHX_ a,b,c,d)
-#define refcounted_he_free(a) Perl_refcounted_he_free(aTHX_ a)
-#define refcounted_he_inc(a) Perl_refcounted_he_inc(aTHX_ a)
-#define refcounted_he_new_pv(a,b,c,d,e) Perl_refcounted_he_new_pv(aTHX_ a,b,c,d,e)
-#define refcounted_he_new_pvn(a,b,c,d,e,f) Perl_refcounted_he_new_pvn(aTHX_ a,b,c,d,e,f)
-#define refcounted_he_new_sv(a,b,c,d,e) Perl_refcounted_he_new_sv(aTHX_ a,b,c,d,e)
-#define report_evil_fh(a) Perl_report_evil_fh(aTHX_ a)
-#define report_wrongway_fh(a,b) Perl_report_wrongway_fh(aTHX_ a,b)
-#define rpeep(a) Perl_rpeep(aTHX_ a)
-#define rsignal_restore(a,b) Perl_rsignal_restore(aTHX_ a,b)
-#define rsignal_save(a,b,c) Perl_rsignal_save(aTHX_ a,b,c)
-#define rxres_save(a,b) Perl_rxres_save(aTHX_ a,b)
-#define save_strlen(a) Perl_save_strlen(aTHX_ a)
-#define sawparens(a) Perl_sawparens(aTHX_ a)
-#define scalar(a) Perl_scalar(aTHX_ a)
-#define scalarvoid(a) Perl_scalarvoid(aTHX_ a)
-#define set_caret_X() Perl_set_caret_X(aTHX)
-#define set_numeric_standard() Perl_set_numeric_standard(aTHX)
-#define set_numeric_underlying() Perl_set_numeric_underlying(aTHX)
-#define setfd_cloexec Perl_setfd_cloexec
-#define setfd_cloexec_for_nonsysfd(a) Perl_setfd_cloexec_for_nonsysfd(aTHX_ a)
-#define setfd_cloexec_or_inhexec_by_sysfdness(a) Perl_setfd_cloexec_or_inhexec_by_sysfdness(aTHX_ a)
-#define setfd_inhexec Perl_setfd_inhexec
-#define setfd_inhexec_for_sysfd(a) Perl_setfd_inhexec_for_sysfd(aTHX_ a)
-#define sighandler1 Perl_sighandler1
-#define sighandler3 Perl_sighandler3
-#define sub_crush_depth(a) Perl_sub_crush_depth(aTHX_ a)
-#define sv_2num(a) Perl_sv_2num(aTHX_ a)
-#define sv_clean_all() Perl_sv_clean_all(aTHX)
-#define sv_clean_objs() Perl_sv_clean_objs(aTHX)
-#define sv_del_backref(a,b) Perl_sv_del_backref(aTHX_ a,b)
-#define sv_free_arenas() Perl_sv_free_arenas(aTHX)
-#define sv_len_utf8_nomg(a) Perl_sv_len_utf8_nomg(aTHX_ a)
-#define sv_resetpvn(a,b,c) Perl_sv_resetpvn(aTHX_ a,b,c)
-#define sv_sethek(a,b) Perl_sv_sethek(aTHX_ a,b)
-#ifndef PERL_IMPLICIT_CONTEXT
-#define tied_method Perl_tied_method
-#endif
-#define tmps_grow_p(a) Perl_tmps_grow_p(aTHX_ a)
-#define unshare_hek(a) Perl_unshare_hek(aTHX_ a)
-#define utilize(a,b,c,d,e) Perl_utilize(aTHX_ a,b,c,d,e)
-#define vivify_ref(a,b) Perl_vivify_ref(aTHX_ a,b)
-#define wait4pid(a,b,c) Perl_wait4pid(aTHX_ a,b,c)
-#define watch(a) Perl_watch(aTHX_ a)
-#define write_to_stderr(a) Perl_write_to_stderr(aTHX_ a)
-#define xs_boot_epilog(a) Perl_xs_boot_epilog(aTHX_ a)
-#define yyerror(a) Perl_yyerror(aTHX_ a)
-#define yyerror_pv(a,b) Perl_yyerror_pv(aTHX_ a,b)
-#define yyerror_pvn(a,b,c) Perl_yyerror_pvn(aTHX_ a,b,c)
-#define yyparse(a) Perl_yyparse(aTHX_ a)
-#define yyquit() Perl_yyquit(aTHX)
-#define yyunlex() Perl_yyunlex(aTHX)
-# if !(defined(DEBUGGING))
-# if !defined(NV_PRESERVES_UV)
-# if defined(PERL_IN_SV_C)
-#define sv_2iuv_non_preserve(a) S_sv_2iuv_non_preserve(aTHX_ a)
-# endif
-# endif
-# endif
-# if !(defined(HAS_NL_LANGINFO))
-# if defined(PERL_IN_LOCALE_C)
-#define my_nl_langinfo S_my_nl_langinfo
-# endif
-# endif
-# if !(defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION))
-#define do_exec(a) Perl_do_exec(aTHX_ a)
-# endif
-# if !(defined(PERL_USE_3ARG_SIGHANDLER))
-#define sighandler Perl_sighandler
-# endif
-# if !(defined(_MSC_VER))
-#define magic_regdatum_set(a,b) Perl_magic_regdatum_set(aTHX_ a,b)
-# endif
-# if !defined(HAS_GETENV_LEN)
-#define getenv_len(a,b) Perl_getenv_len(aTHX_ a,b)
-# endif
-# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
-# if defined(PERL_IN_PP_SYS_C)
-#define dooneliner(a,b) S_dooneliner(aTHX_ a,b)
-# endif
-# endif
-# if !defined(HAS_RENAME)
-#define same_dirent(a,b) Perl_same_dirent(aTHX_ a,b)
-# endif
-# if !defined(NV_PRESERVES_UV)
-# if defined(DEBUGGING)
-# if defined(PERL_IN_SV_C)
-#define sv_2iuv_non_preserve(a,b) S_sv_2iuv_non_preserve(aTHX_ a,b)
-# endif
-# endif
-# endif
-# if !defined(PERL_DISABLE_PMC)
-# if defined(PERL_IN_PP_CTL_C)
-#define doopen_pm(a) S_doopen_pm(aTHX_ a)
-# endif
-# endif
-# if !defined(PERL_EXT_RE_BUILD)
-# if defined(PERL_IN_REGCOMP_C)
-#define initialize_invlist_guts(a,b) S_initialize_invlist_guts(aTHX_ a,b)
-# endif
-# endif
-# if !defined(PERL_IS_MINIPERL)
-# if defined(PERL_IN_PERL_C)
-#define incpush_if_exists(a,b,c) S_incpush_if_exists(aTHX_ a,b,c)
-# endif
-# endif
-# if !defined(PERL_NO_UTF16_FILTER)
-# if defined(PERL_IN_TOKE_C)
-#define add_utf16_textfilter(a,b) S_add_utf16_textfilter(aTHX_ a,b)
-#define utf16_textfilter(a,b,c) S_utf16_textfilter(aTHX_ a,b,c)
-# endif
-# endif
-# if !defined(UV_IS_QUAD)
-# if defined(PERL_IN_UTF8_C)
-#define is_utf8_cp_above_31_bits S_is_utf8_cp_above_31_bits
-# endif
-# endif
-# if !defined(WIN32)
-#define do_exec3(a,b,c) Perl_do_exec3(aTHX_ a,b,c)
-# endif
-# if 0 /* Not currently used, but may be needed in the future */
-# if defined(PERL_IN_UTF8_C)
-#define warn_on_first_deprecated_use(a,b,c,d,e) S_warn_on_first_deprecated_use(aTHX_ a,b,c,d,e)
-# endif
-# endif
-# if defined (HAS_SOCKETPAIR) || (defined (HAS_SOCKET) && defined(SOCK_DGRAM) && defined(AF_INET) && defined(PF_INET))
-#define PerlSock_socketpair_cloexec(a,b,c,d) Perl_PerlSock_socketpair_cloexec(aTHX_ a,b,c,d)
-# endif
-# if defined(DEBUGGING)
-#define get_debug_opts(a,b) Perl_get_debug_opts(aTHX_ a,b)
-#define set_padlist Perl_set_padlist
-# if defined(PERL_IN_LOCALE_C)
-# if defined(USE_LOCALE)
-#define print_bytes_for_locale(a,b,c) S_print_bytes_for_locale(aTHX_ a,b,c)
-#define print_collxfrm_input_and_return(a,b,c,d) S_print_collxfrm_input_and_return(aTHX_ a,b,c,d)
-#define setlocale_debug_string S_setlocale_debug_string
-# endif
-# endif
-# if defined(PERL_IN_PAD_C)
-#define cv_dump(a,b) S_cv_dump(aTHX_ a,b)
-# endif
-# if defined(PERL_IN_SV_C)
-#define del_sv(a) S_del_sv(aTHX_ a)
-# endif
-# if defined(PERL_IN_TOKE_C)
-#define printbuf(a,b) S_printbuf(aTHX_ a,b)
-#define tokereport(a,b) S_tokereport(aTHX_ a,b)
-# endif
-# endif
-# if defined(DEBUG_LEAKING_SCALARS_FORK_DUMP)
-#define dump_sv_child(a) Perl_dump_sv_child(aTHX_ a)
-# endif
-# if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
-#define do_ipcctl(a,b,c) Perl_do_ipcctl(aTHX_ a,b,c)
-#define do_ipcget(a,b,c) Perl_do_ipcget(aTHX_ a,b,c)
-#define do_msgrcv(a,b) Perl_do_msgrcv(aTHX_ a,b)
-#define do_msgsnd(a,b) Perl_do_msgsnd(aTHX_ a,b)
-#define do_semop(a,b) Perl_do_semop(aTHX_ a,b)
-#define do_shmio(a,b,c) Perl_do_shmio(aTHX_ a,b,c)
-# endif
-# if defined(HAS_NL_LANGINFO)
-# if defined(PERL_IN_LOCALE_C)
-#define my_nl_langinfo S_my_nl_langinfo
-# endif
-# endif
-# if defined(HAS_PIPE)
-#define PerlProc_pipe_cloexec(a) Perl_PerlProc_pipe_cloexec(aTHX_ a)
-# endif
-# if defined(HAS_SOCKET)
-#define PerlSock_accept_cloexec(a,b,c) Perl_PerlSock_accept_cloexec(aTHX_ a,b,c)
-#define PerlSock_socket_cloexec(a,b,c) Perl_PerlSock_socket_cloexec(aTHX_ a,b,c)
-# endif
-# if defined(MYMALLOC)
-#define malloc_good_size Perl_malloc_good_size
-#define malloced_size Perl_malloced_size
-# endif
-# if defined(PERL_CORE)
-#define opslab_force_free(a) Perl_opslab_force_free(aTHX_ a)
-#define opslab_free(a) Perl_opslab_free(aTHX_ a)
-#define opslab_free_nopad(a) Perl_opslab_free_nopad(aTHX_ a)
-#define parser_free_nexttoke_ops(a,b) Perl_parser_free_nexttoke_ops(aTHX_ a,b)
-#define should_warn_nl S_should_warn_nl
-# if defined(PERL_DEBUG_READONLY_OPS)
-#define Slab_to_ro(a) Perl_Slab_to_ro(aTHX_ a)
-#define Slab_to_rw(a) Perl_Slab_to_rw(aTHX_ a)
-# endif
-# endif
-# if defined(PERL_CR_FILTER)
-# if defined(PERL_IN_TOKE_C)
-#define cr_textfilter(a,b,c) S_cr_textfilter(aTHX_ a,b,c)
-#define strip_return(a) S_strip_return(aTHX_ a)
-# endif
-# endif
-# if defined(PERL_DEBUG_READONLY_COW)
-#define sv_buf_to_ro(a) Perl_sv_buf_to_ro(aTHX_ a)
-# if defined(PERL_IN_SV_C)
-#define sv_buf_to_rw(a) S_sv_buf_to_rw(aTHX_ a)
-# endif
-# endif
-# if defined(PERL_IN_AV_C)
-#define get_aux_mg(a) S_get_aux_mg(aTHX_ a)
-# endif
-# if defined(PERL_IN_DEB_C)
-#define deb_stack_n(a,b,c,d,e) S_deb_stack_n(aTHX_ a,b,c,d,e)
-# endif
-# if defined(PERL_IN_DOIO_C)
-#define argvout_final(a,b,c) S_argvout_final(aTHX_ a,b,c)
-#define exec_failed(a,b,c) S_exec_failed(aTHX_ a,b,c)
-#define ingroup(a,b) S_ingroup(aTHX_ a,b)
-#define openn_cleanup(a,b,c,d,e,f,g,h,i,j,k,l,m) S_openn_cleanup(aTHX_ a,b,c,d,e,f,g,h,i,j,k,l,m)
-#define openn_setup(a,b,c,d,e,f) S_openn_setup(aTHX_ a,b,c,d,e,f)
-# endif
-# if defined(PERL_IN_DOOP_C)
-#define do_trans_complex(a,b) S_do_trans_complex(aTHX_ a,b)
-#define do_trans_count(a,b) S_do_trans_count(aTHX_ a,b)
-#define do_trans_count_invmap(a,b) S_do_trans_count_invmap(aTHX_ a,b)
-#define do_trans_invmap(a,b) S_do_trans_invmap(aTHX_ a,b)
-#define do_trans_simple(a,b) S_do_trans_simple(aTHX_ a,b)
-# endif
-# if defined(PERL_IN_DUMP_C)
-#define deb_curcv(a) S_deb_curcv(aTHX_ a)
-#define debprof(a) S_debprof(aTHX_ a)
-#define pm_description(a) S_pm_description(aTHX_ a)
-#define sequence_num(a) S_sequence_num(aTHX_ a)
-# endif
-# if defined(PERL_IN_GV_C)
-#define find_default_stash(a,b,c,d,e,f) S_find_default_stash(aTHX_ a,b,c,d,e,f)
-#define gv_fetchmeth_internal(a,b,c,d,e,f) S_gv_fetchmeth_internal(aTHX_ a,b,c,d,e,f)
-#define gv_init_svtype(a,b) S_gv_init_svtype(aTHX_ a,b)
-#define gv_is_in_main(a,b,c) S_gv_is_in_main(aTHX_ a,b,c)
-#define gv_magicalize(a,b,c,d,e) S_gv_magicalize(aTHX_ a,b,c,d,e)
-#define gv_magicalize_isa(a) S_gv_magicalize_isa(aTHX_ a)
-#define gv_stashpvn_internal(a,b,c) S_gv_stashpvn_internal(aTHX_ a,b,c)
-#define maybe_multimagic_gv(a,b,c) S_maybe_multimagic_gv(aTHX_ a,b,c)
-#define parse_gv_stash_name(a,b,c,d,e,f,g,h) S_parse_gv_stash_name(aTHX_ a,b,c,d,e,f,g,h)
-#define require_tie_mod(a,b,c,d,e) S_require_tie_mod(aTHX_ a,b,c,d,e)
-# endif
-# if defined(PERL_IN_HV_C)
-#define clear_placeholders(a,b) S_clear_placeholders(aTHX_ a,b)
-#define hsplit(a,b,c) S_hsplit(aTHX_ a,b,c)
-#define hv_auxinit(a) S_hv_auxinit(aTHX_ a)
-#define hv_auxinit_internal S_hv_auxinit_internal
-#define hv_delete_common(a,b,c,d,e,f,g) S_hv_delete_common(aTHX_ a,b,c,d,e,f,g)
-#define hv_free_ent_ret(a,b) S_hv_free_ent_ret(aTHX_ a,b)
-#define hv_free_entries(a) S_hv_free_entries(aTHX_ a)
-#define hv_magic_check S_hv_magic_check
-#define hv_notallowed(a,b,c,d) S_hv_notallowed(aTHX_ a,b,c,d)
-#define new_he() S_new_he(aTHX)
-#define ptr_hash S_ptr_hash
-#define refcounted_he_value(a) S_refcounted_he_value(aTHX_ a)
-#define save_hek_flags S_save_hek_flags
-#define share_hek_flags(a,b,c,d) S_share_hek_flags(aTHX_ a,b,c,d)
-#define unshare_hek_or_pvn(a,b,c,d) S_unshare_hek_or_pvn(aTHX_ a,b,c,d)
-# endif
-# if defined(PERL_IN_LOCALE_C)
-#define save_to_buffer S_save_to_buffer
-# if defined(USE_LOCALE)
-#define category_name S_category_name
-#define new_collate(a) S_new_collate(aTHX_ a)
-#define new_ctype(a) S_new_ctype(aTHX_ a)
-#define new_numeric(a) S_new_numeric(aTHX_ a)
-#define restore_switched_locale(a,b) S_restore_switched_locale(aTHX_ a,b)
-#define set_numeric_radix(a) S_set_numeric_radix(aTHX_ a)
-#define stdize_locale(a) S_stdize_locale(aTHX_ a)
-#define switch_category_locale_to_template(a,b,c) S_switch_category_locale_to_template(aTHX_ a,b,c)
-# if defined(USE_POSIX_2008_LOCALE)
-#define emulate_setlocale S_emulate_setlocale
-# endif
-# if defined(WIN32)
-#define win32_setlocale(a,b) S_win32_setlocale(aTHX_ a,b)
-# endif
-# endif
-# endif
-# if defined(PERL_IN_LOCALE_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_MATHOMS_C)
-# if defined(USE_LOCALE_COLLATE)
-#define _mem_collxfrm(a,b,c,d) Perl__mem_collxfrm(aTHX_ a,b,c,d)
-# endif
-# endif
-# if defined(PERL_IN_MALLOC_C)
-#define adjust_size_and_find_bucket S_adjust_size_and_find_bucket
-# endif
-# if defined(PERL_IN_MG_C)
-#define fixup_errno_string(a) S_fixup_errno_string(aTHX_ a)
-#define magic_methcall1(a,b,c,d,e,f) S_magic_methcall1(aTHX_ a,b,c,d,e,f)
-#define magic_methpack(a,b,c) S_magic_methpack(aTHX_ a,b,c)
-#define restore_magic(a) S_restore_magic(aTHX_ a)
-#define save_magic_flags(a,b,c) S_save_magic_flags(aTHX_ a,b,c)
-#define unwind_handler_stack(a) S_unwind_handler_stack(aTHX_ a)
-# endif
-# if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C)
-#define translate_substr_offsets Perl_translate_substr_offsets
-# endif
-# if defined(PERL_IN_MRO_C)
-#define mro_clean_isarev(a,b,c,d,e,f) S_mro_clean_isarev(aTHX_ a,b,c,d,e,f)
-#define mro_gather_and_rename(a,b,c,d,e) S_mro_gather_and_rename(aTHX_ a,b,c,d,e)
-#define mro_get_linear_isa_dfs(a,b) S_mro_get_linear_isa_dfs(aTHX_ a,b)
-# endif
-# if defined(PERL_IN_NUMERIC_C)
-#define output_non_portable(a) S_output_non_portable(aTHX_ a)
-# endif
-# if defined(PERL_IN_OP_C)
-#define apply_attrs(a,b,c) S_apply_attrs(aTHX_ a,b,c)
-#define apply_attrs_my(a,b,c,d) S_apply_attrs_my(aTHX_ a,b,c,d)
-#define assignment_type(a) S_assignment_type(aTHX_ a)
-#define bad_type_gv(a,b,c,d) S_bad_type_gv(aTHX_ a,b,c,d)
-#define bad_type_pv(a,b,c,d) S_bad_type_pv(aTHX_ a,b,c,d)
-#define clear_special_blocks(a,b,c) S_clear_special_blocks(aTHX_ a,b,c)
-#define cop_free(a) S_cop_free(aTHX_ a)
-#define dup_attrlist(a) S_dup_attrlist(aTHX_ a)
-#define finalize_op(a) S_finalize_op(aTHX_ a)
-#define find_and_forget_pmops(a) S_find_and_forget_pmops(aTHX_ a)
-#define fold_constants(a) S_fold_constants(aTHX_ a)
-#define force_list(a,b) S_force_list(aTHX_ a,b)
-#define forget_pmop(a) S_forget_pmop(aTHX_ a)
-#define gen_constant_list(a) S_gen_constant_list(aTHX_ a)
-#define inplace_aassign(a) S_inplace_aassign(aTHX_ a)
-#define is_handle_constructor S_is_handle_constructor
-#define listkids(a) S_listkids(aTHX_ a)
-#define looks_like_bool(a) S_looks_like_bool(aTHX_ a)
-#define modkids(a,b) S_modkids(aTHX_ a,b)
-#define move_proto_attr(a,b,c,d) S_move_proto_attr(aTHX_ a,b,c,d)
-#define my_kid(a,b,c) S_my_kid(aTHX_ a,b,c)
-#define newGIVWHENOP(a,b,c,d,e) S_newGIVWHENOP(aTHX_ a,b,c,d,e)
-#define newMETHOP_internal(a,b,c,d) S_newMETHOP_internal(aTHX_ a,b,c,d)
-#define new_logop(a,b,c,d) S_new_logop(aTHX_ a,b,c,d)
-#define no_bareword_allowed(a) S_no_bareword_allowed(aTHX_ a)
-#define no_fh_allowed(a) S_no_fh_allowed(aTHX_ a)
-#define op_integerize(a) S_op_integerize(aTHX_ a)
-#define op_std_init(a) S_op_std_init(aTHX_ a)
-#define optimize_op(a) S_optimize_op(aTHX_ a)
-#define pmtrans(a,b,c) S_pmtrans(aTHX_ a,b,c)
-#define process_special_blocks(a,b,c,d) S_process_special_blocks(aTHX_ a,b,c,d)
-#define ref_array_or_hash(a) S_ref_array_or_hash(aTHX_ a)
-#define refkids(a,b) S_refkids(aTHX_ a,b)
-#define scalar_mod_type S_scalar_mod_type
-#define scalarboolean(a) S_scalarboolean(aTHX_ a)
-#define scalarkids(a) S_scalarkids(aTHX_ a)
-#define scalarseq(a) S_scalarseq(aTHX_ a)
-#define search_const(a) S_search_const(aTHX_ a)
-#define simplify_sort(a) S_simplify_sort(aTHX_ a)
-#define too_few_arguments_pv(a,b,c) S_too_few_arguments_pv(aTHX_ a,b,c)
-#define too_many_arguments_pv(a,b,c) S_too_many_arguments_pv(aTHX_ a,b,c)
-#define traverse_op_tree(a,b) S_traverse_op_tree(aTHX_ a,b)
-# if defined(USE_ITHREADS)
-#define op_relocate_sv(a,b) S_op_relocate_sv(aTHX_ a,b)
-# endif
-# endif
-# if defined(PERL_IN_OP_C) || defined(PERL_IN_SV_C)
-#define report_redefined_cv(a,b,c) Perl_report_redefined_cv(aTHX_ a,b,c)
-# endif
-# if defined(PERL_IN_PAD_C)
-#define pad_alloc_name(a,b,c,d) S_pad_alloc_name(aTHX_ a,b,c,d)
-#define pad_check_dup(a,b,c) S_pad_check_dup(aTHX_ a,b,c)
-#define pad_findlex(a,b,c,d,e,f,g,h,i) S_pad_findlex(aTHX_ a,b,c,d,e,f,g,h,i)
-#define pad_reset() S_pad_reset(aTHX)
-# endif
-# if defined(PERL_IN_PAD_C) || defined(PERL_IN_OP_C)
-#define PadnameIN_SCOPE S_PadnameIN_SCOPE
-# endif
-# if defined(PERL_IN_PERL_C)
-#define find_beginning(a,b) S_find_beginning(aTHX_ a,b)
-#define forbid_setid(a,b) S_forbid_setid(aTHX_ a,b)
-#define incpush(a,b,c) S_incpush(aTHX_ a,b,c)
-#define incpush_use_sep(a,b,c) S_incpush_use_sep(aTHX_ a,b,c)
-#define init_ids() S_init_ids(aTHX)
-#define init_interp() S_init_interp(aTHX)
-#define init_main_stash() S_init_main_stash(aTHX)
-#define init_perllib() S_init_perllib(aTHX)
-#define init_postdump_symbols(a,b,c) S_init_postdump_symbols(aTHX_ a,b,c)
-#define init_predump_symbols() S_init_predump_symbols(aTHX)
-#define mayberelocate(a,b,c) S_mayberelocate(aTHX_ a,b,c)
-#define minus_v() S_minus_v(aTHX)
-#define my_exit_jump() S_my_exit_jump(aTHX)
-#define nuke_stacks() S_nuke_stacks(aTHX)
-#define open_script(a,b,c) S_open_script(aTHX_ a,b,c)
-#define parse_body(a,b) S_parse_body(aTHX_ a,b)
-#define run_body(a) S_run_body(aTHX_ a)
-#define usage() S_usage(aTHX)
-# endif
-# if defined(PERL_IN_PP_C)
-#define do_chomp(a,b,c) S_do_chomp(aTHX_ a,b,c)
-#define do_delete_local() S_do_delete_local(aTHX)
-#define refto(a) S_refto(aTHX_ a)
-# endif
-# if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C)
-#define lossless_NV_to_IV S_lossless_NV_to_IV
-# endif
-# if defined(PERL_IN_PP_CTL_C)
-#define check_type_and_open(a) S_check_type_and_open(aTHX_ a)
-#define destroy_matcher(a) S_destroy_matcher(aTHX_ a)
-#define do_smartmatch(a,b,c) S_do_smartmatch(aTHX_ a,b,c)
-#define docatch(a) S_docatch(aTHX_ a)
-#define doeval_compile(a,b,c,d) S_doeval_compile(aTHX_ a,b,c,d)
-#define dofindlabel(a,b,c,d,e,f) S_dofindlabel(aTHX_ a,b,c,d,e,f)
-#define doparseform(a) S_doparseform(aTHX_ a)
-#define dopoptoeval(a) S_dopoptoeval(aTHX_ a)
-#define dopoptogivenfor(a) S_dopoptogivenfor(aTHX_ a)
-#define dopoptolabel(a,b,c) S_dopoptolabel(aTHX_ a,b,c)
-#define dopoptoloop(a) S_dopoptoloop(aTHX_ a)
-#define dopoptosub_at(a,b) S_dopoptosub_at(aTHX_ a,b)
-#define dopoptowhen(a) S_dopoptowhen(aTHX_ a)
-#define make_matcher(a) S_make_matcher(aTHX_ a)
-#define matcher_matches_sv(a,b) S_matcher_matches_sv(aTHX_ a,b)
-#define num_overflow S_num_overflow
-#define path_is_searchable S_path_is_searchable
-#define run_user_filter(a,b,c) S_run_user_filter(aTHX_ a,b,c)
-#define rxres_free(a) S_rxres_free(aTHX_ a)
-#define rxres_restore(a,b) S_rxres_restore(aTHX_ a,b)
-#define save_lines(a,b) S_save_lines(aTHX_ a,b)
-# endif
-# if defined(PERL_IN_PP_HOT_C)
-#define do_oddball(a,b) S_do_oddball(aTHX_ a,b)
-#define opmethod_stash(a) S_opmethod_stash(aTHX_ a)
-#define should_we_output_Debug_r(a) S_should_we_output_Debug_r(aTHX_ a)
-# endif
-# if defined(PERL_IN_PP_PACK_C)
-#define div128(a,b) S_div128(aTHX_ a,b)
-#define first_symbol S_first_symbol
-#define get_num(a,b) S_get_num(aTHX_ a,b)
-#define group_end(a,b,c) S_group_end(aTHX_ a,b,c)
-#define is_an_int(a,b) S_is_an_int(aTHX_ a,b)
-#define measure_struct(a) S_measure_struct(aTHX_ a)
-#define mul128(a,b) S_mul128(aTHX_ a,b)
-#define my_bytes_to_utf8 S_my_bytes_to_utf8
-#define need_utf8 S_need_utf8
-#define next_symbol(a) S_next_symbol(aTHX_ a)
-#define pack_rec(a,b,c,d) S_pack_rec(aTHX_ a,b,c,d)
-#define sv_exp_grow(a,b) S_sv_exp_grow(aTHX_ a,b)
-#define unpack_rec(a,b,c,d,e) S_unpack_rec(aTHX_ a,b,c,d,e)
-# endif
-# if defined(PERL_IN_PP_SORT_C)
-#define amagic_cmp(a,b) S_amagic_cmp(aTHX_ a,b)
-#define amagic_cmp_desc(a,b) S_amagic_cmp_desc(aTHX_ a,b)
-#define amagic_i_ncmp(a,b) S_amagic_i_ncmp(aTHX_ a,b)
-#define amagic_i_ncmp_desc(a,b) S_amagic_i_ncmp_desc(aTHX_ a,b)
-#define amagic_ncmp(a,b) S_amagic_ncmp(aTHX_ a,b)
-#define amagic_ncmp_desc(a,b) S_amagic_ncmp_desc(aTHX_ a,b)
-#define cmp_desc(a,b) S_cmp_desc(aTHX_ a,b)
-#define sortcv(a,b) S_sortcv(aTHX_ a,b)
-#define sortcv_stacked(a,b) S_sortcv_stacked(aTHX_ a,b)
-#define sortcv_xsub(a,b) S_sortcv_xsub(aTHX_ a,b)
-#define sortsv_flags_impl(a,b,c,d) S_sortsv_flags_impl(aTHX_ a,b,c,d)
-#define sv_i_ncmp(a,b) S_sv_i_ncmp(aTHX_ a,b)
-#define sv_i_ncmp_desc(a,b) S_sv_i_ncmp_desc(aTHX_ a,b)
-#define sv_ncmp(a,b) S_sv_ncmp(aTHX_ a,b)
-#define sv_ncmp_desc(a,b) S_sv_ncmp_desc(aTHX_ a,b)
-# if defined(USE_LOCALE_COLLATE)
-#define amagic_cmp_locale(a,b) S_amagic_cmp_locale(aTHX_ a,b)
-#define amagic_cmp_locale_desc(a,b) S_amagic_cmp_locale_desc(aTHX_ a,b)
-#define cmp_locale_desc(a,b) S_cmp_locale_desc(aTHX_ a,b)
-# endif
-# endif
-# if defined(PERL_IN_PP_SYS_C)
-#define doform(a,b,c) S_doform(aTHX_ a,b,c)
-#define space_join_names_mortal(a) S_space_join_names_mortal(aTHX_ a)
-# endif
-# if defined(PERL_IN_SCOPE_C)
-#define save_pushptri32ptr(a,b,c,d) S_save_pushptri32ptr(aTHX_ a,b,c,d)
-#define save_scalar_at(a,b) S_save_scalar_at(aTHX_ a,b)
-# endif
-# if defined(PERL_IN_SV_C)
-#define F0convert S_F0convert
-#define anonymise_cv_maybe(a,b) S_anonymise_cv_maybe(aTHX_ a,b)
-#define assert_uft8_cache_coherent(a,b,c,d) S_assert_uft8_cache_coherent(aTHX_ a,b,c,d)
-#define curse(a,b) S_curse(aTHX_ a,b)
-#define expect_number(a) S_expect_number(aTHX_ a)
-#define find_array_subscript(a,b) S_find_array_subscript(aTHX_ a,b)
-#define find_hash_subscript(a,b) S_find_hash_subscript(aTHX_ a,b)
-#define find_uninit_var(a,b,c,d) S_find_uninit_var(aTHX_ a,b,c,d)
-#define glob_2number(a) S_glob_2number(aTHX_ a)
-#define glob_assign_glob(a,b,c) S_glob_assign_glob(aTHX_ a,b,c)
-#define more_sv() S_more_sv(aTHX)
-#define not_a_number(a) S_not_a_number(aTHX_ a)
-#define not_incrementable(a) S_not_incrementable(aTHX_ a)
-#define ptr_table_find S_ptr_table_find
-#define sv_2iuv_common(a) S_sv_2iuv_common(aTHX_ a)
-#define sv_add_arena(a,b,c) S_sv_add_arena(aTHX_ a,b,c)
-#define sv_display(a,b,c) S_sv_display(aTHX_ a,b,c)
-#define sv_pos_b2u_midway(a,b,c,d) S_sv_pos_b2u_midway(aTHX_ a,b,c,d)
-#define sv_pos_u2b_cached(a,b,c,d,e,f,g) S_sv_pos_u2b_cached(aTHX_ a,b,c,d,e,f,g)
-#define sv_pos_u2b_forwards S_sv_pos_u2b_forwards
-#define sv_pos_u2b_midway S_sv_pos_u2b_midway
-#define sv_unglob(a,b) S_sv_unglob(aTHX_ a,b)
-#define uiv_2buf S_uiv_2buf
-#define utf8_mg_len_cache_update(a,b,c) S_utf8_mg_len_cache_update(aTHX_ a,b,c)
-#define utf8_mg_pos_cache_update(a,b,c,d,e) S_utf8_mg_pos_cache_update(aTHX_ a,b,c,d,e)
-#define visit(a,b,c) S_visit(aTHX_ a,b,c)
-# if defined(USE_ITHREADS)
-#define sv_dup_common(a,b) S_sv_dup_common(aTHX_ a,b)
-#define sv_dup_inc_multiple(a,b,c,d) S_sv_dup_inc_multiple(aTHX_ a,b,c,d)
-#define unreferenced_to_tmp_stack(a) S_unreferenced_to_tmp_stack(aTHX_ a)
-# endif
-# endif
-# if defined(PERL_IN_SV_C) || defined (PERL_IN_OP_C)
-#define varname(a,b,c,d,e,f) Perl_varname(aTHX_ a,b,c,d,e,f)
-# endif
-# if defined(PERL_IN_TOKE_C)
-#define ao(a) S_ao(aTHX_ a)
-#define check_uni() S_check_uni(aTHX)
-#define checkcomma(a,b,c) S_checkcomma(aTHX_ a,b,c)
-#define filter_gets(a,b) S_filter_gets(aTHX_ a,b)
-#define find_in_my_stash(a,b) S_find_in_my_stash(aTHX_ a,b)
-#define force_ident(a,b) S_force_ident(aTHX_ a,b)
-#define force_ident_maybe_lex(a) S_force_ident_maybe_lex(aTHX_ a)
-#define force_next(a) S_force_next(aTHX_ a)
-#define force_strict_version(a) S_force_strict_version(aTHX_ a)
-#define force_version(a,b) S_force_version(aTHX_ a,b)
-#define force_word(a,b,c,d) S_force_word(aTHX_ a,b,c,d)
-#define get_and_check_backslash_N_name_wrapper(a,b) S_get_and_check_backslash_N_name_wrapper(aTHX_ a,b)
-#define incline(a,b) S_incline(aTHX_ a,b)
-#define intuit_method(a,b,c) S_intuit_method(aTHX_ a,b,c)
-#define intuit_more(a,b) S_intuit_more(aTHX_ a,b)
-#define lop(a,b,c) S_lop(aTHX_ a,b,c)
-#define missingterm(a,b) S_missingterm(aTHX_ a,b)
-#define no_op(a,b) S_no_op(aTHX_ a,b)
-#define parse_ident(a,b,c,d,e,f,g) S_parse_ident(aTHX_ a,b,c,d,e,f,g)
-#define pending_ident() S_pending_ident(aTHX)
-#define scan_const(a) S_scan_const(aTHX_ a)
-#define scan_formline(a) S_scan_formline(aTHX_ a)
-#define scan_heredoc(a) S_scan_heredoc(aTHX_ a)
-#define scan_ident(a,b,c,d) S_scan_ident(aTHX_ a,b,c,d)
-#define scan_inputsymbol(a) S_scan_inputsymbol(aTHX_ a)
-#define scan_pat(a,b) S_scan_pat(aTHX_ a,b)
-#define scan_subst(a) S_scan_subst(aTHX_ a)
-#define scan_trans(a) S_scan_trans(aTHX_ a)
-#define sublex_done() S_sublex_done(aTHX)
-#define sublex_push() S_sublex_push(aTHX)
-#define sublex_start() S_sublex_start(aTHX)
-#define swallow_bom(a) S_swallow_bom(aTHX_ a)
-#define tokenize_use(a,b) S_tokenize_use(aTHX_ a,b)
-#define tokeq(a) S_tokeq(aTHX_ a)
-#define update_debugger_info(a,b,c) S_update_debugger_info(aTHX_ a,b,c)
-#define yywarn(a,b) S_yywarn(aTHX_ a,b)
-# endif
-# if defined(PERL_IN_UNIVERSAL_C)
-#define isa_lookup(a,b,c,d,e) S_isa_lookup(aTHX_ a,b,c,d,e)
-#define sv_derived_from_svpvn(a,b,c,d,e) S_sv_derived_from_svpvn(aTHX_ a,b,c,d,e)
-# endif
-# if defined(PERL_IN_UTF8_C)
-#define _to_utf8_case(a,b,c,d,e,f,g,h,i) S__to_utf8_case(aTHX_ a,b,c,d,e,f,g,h,i)
-#define check_locale_boundary_crossing(a,b,c,d) S_check_locale_boundary_crossing(aTHX_ a,b,c,d)
-#define does_utf8_overflow S_does_utf8_overflow
-#define isFF_OVERLONG S_isFF_OVERLONG
-#define is_utf8_common(a,b,c) S_is_utf8_common(aTHX_ a,b,c)
-#define is_utf8_overlong_given_start_byte_ok S_is_utf8_overlong_given_start_byte_ok
-#define new_msg_hv(a,b,c) S_new_msg_hv(aTHX_ a,b,c)
-#define to_lower_latin1 S_to_lower_latin1
-#define turkic_fc(a,b,c,d) S_turkic_fc(aTHX_ a,b,c,d)
-#define turkic_lc(a,b,c,d) S_turkic_lc(aTHX_ a,b,c,d)
-#define turkic_uc(a,b,c,d) S_turkic_uc(aTHX_ a,b,c,d)
-#define unexpected_non_continuation_text(a,b,c,d) S_unexpected_non_continuation_text(aTHX_ a,b,c,d)
-# endif
-# if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
-#define _to_upper_title_latin1(a,b,c,d) Perl__to_upper_title_latin1(aTHX_ a,b,c,d)
-# endif
-# if defined(PERL_IN_UTIL_C)
-#define ckwarn_common(a) S_ckwarn_common(aTHX_ a)
-#define invoke_exception_hook(a,b) S_invoke_exception_hook(aTHX_ a,b)
-#define mess_alloc() S_mess_alloc(aTHX)
-#define with_queued_errors(a) S_with_queued_errors(aTHX_ a)
-# if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL)
-#define mem_log_common S_mem_log_common
-# endif
-# endif
-# if defined(PERL_MEM_LOG)
-#define mem_log_alloc Perl_mem_log_alloc
-#define mem_log_free Perl_mem_log_free
-#define mem_log_realloc Perl_mem_log_realloc
-# endif
-# if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C)
-#define pidgone(a,b) S_pidgone(aTHX_ a,b)
-# endif
-# if defined(PERL_USE_3ARG_SIGHANDLER)
-#define sighandler Perl_sighandler
-# endif
-# if defined(USE_C_BACKTRACE)
-#define get_c_backtrace(a,b) Perl_get_c_backtrace(aTHX_ a,b)
-# endif
-# if defined(USE_ITHREADS)
-#define mro_meta_dup(a,b) Perl_mro_meta_dup(aTHX_ a,b)
-#define padlist_dup(a,b) Perl_padlist_dup(aTHX_ a,b)
-#define padname_dup(a,b) Perl_padname_dup(aTHX_ a,b)
-#define padnamelist_dup(a,b) Perl_padnamelist_dup(aTHX_ a,b)
-# endif
-# if defined(USE_LOCALE_COLLATE)
-#define magic_freecollxfrm(a,b) Perl_magic_freecollxfrm(aTHX_ a,b)
-#define magic_setcollxfrm(a,b) Perl_magic_setcollxfrm(aTHX_ a,b)
-#ifndef NO_MATHOMS
-#define mem_collxfrm(a,b,c) Perl_mem_collxfrm(aTHX_ a,b,c)
-#endif
-# endif
-# if defined(USE_PERLIO)
-#define PerlIO_restore_errno(a) Perl_PerlIO_restore_errno(aTHX_ a)
-#define PerlIO_save_errno(a) Perl_PerlIO_save_errno(aTHX_ a)
-# endif
-# if defined(USE_QUADMATH)
-#define quadmath_format_needed Perl_quadmath_format_needed
-#define quadmath_format_valid Perl_quadmath_format_valid
-# endif
-# if defined(_MSC_VER)
-#define magic_regdatum_set(a,b) Perl_magic_regdatum_set(aTHX_ a,b)
-# endif
-#endif
-
-#endif /* #ifndef PERL_NO_SHORT_NAMES */
-
+#if !defined(MULTIPLICITY)
+/* undefined symbols, point them back at the usual ones */
+# define Perl_croak_nocontext Perl_croak
+# define Perl_deb_nocontext Perl_deb
+# define Perl_die_nocontext Perl_die
+# define Perl_form_nocontext Perl_form
+# define Perl_load_module_nocontext Perl_load_module
+# define Perl_mess_nocontext Perl_mess
+# define Perl_newSVpvf_nocontext Perl_newSVpvf
+# define Perl_sv_catpvf_nocontext Perl_sv_catpvf
+# define Perl_sv_catpvf_mg_nocontext Perl_sv_catpvf_mg
+# define Perl_sv_setpvf_nocontext Perl_sv_setpvf
+# define Perl_sv_setpvf_mg_nocontext Perl_sv_setpvf_mg
+# define Perl_warn_nocontext Perl_warn
+# define Perl_warner_nocontext Perl_warner
+#endif /* !defined(MULTIPLICITY) */
+#if !defined(PERL_CORE)
/* Compatibility stubs. Compile extensions with -DPERL_NOCOMPAT to
- disable them.
+ * disable them.
*/
-
-#if !defined(PERL_CORE)
-# define sv_setptrobj(rv,ptr,name) sv_setref_iv(rv,name,PTR2IV(ptr))
-# define sv_setptrref(rv,ptr) sv_setref_iv(rv,NULL,PTR2IV(ptr))
-#endif
-
-#if !defined(PERL_CORE) && !defined(PERL_NOCOMPAT)
+# define sv_setptrobj(rv,ptr,name) sv_setref_iv(rv,name,PTR2IV(ptr))
+# define sv_setptrref(rv,ptr) sv_setref_iv(rv,NULL,PTR2IV(ptr))
+# if !defined(PERL_NOCOMPAT)
/* Compatibility for various misnamed functions. All functions
in the API that begin with "perl_" (not "Perl_") take an explicit
@@ -2057,59 +57,2111 @@
The following are not like that, but since they had a "perl_"
prefix in previous versions, we provide compatibility macros.
*/
-# define perl_atexit(a,b) call_atexit(a,b)
-# define perl_call_argv(a,b,c) call_argv(a,b,c)
-# define perl_call_method(a,b) call_method(a,b)
-# define perl_call_pv(a,b) call_pv(a,b)
-# define perl_call_sv(a,b) call_sv(a,b)
-# define perl_eval_pv(a,b) eval_pv(a,b)
-# define perl_eval_sv(a,b) eval_sv(a,b)
-# define perl_get_av(a,b) get_av(a,b)
-# define perl_get_cv(a,b) get_cv(a,b)
-# define perl_get_hv(a,b) get_hv(a,b)
-# define perl_get_sv(a,b) get_sv(a,b)
-# define perl_init_i18nl10n(a) init_i18nl10n(a)
-# define perl_init_i18nl14n(a) init_i18nl14n(a)
-# define perl_require_pv(a) require_pv(a)
+# define perl_atexit(a,b) call_atexit(a,b)
+# define perl_call_argv(a,b,c) call_argv(a,b,c)
+# define perl_call_method(a,b) call_method(a,b)
+# define perl_call_pv(a,b) call_pv(a,b)
+# define perl_call_sv(a,b) call_sv(a,b)
+# define perl_eval_pv(a,b) eval_pv(a,b)
+# define perl_eval_sv(a,b) eval_sv(a,b)
+# define perl_get_av(a,b) get_av(a,b)
+# define perl_get_cv(a,b) get_cv(a,b)
+# define perl_get_hv(a,b) get_hv(a,b)
+# define perl_get_sv(a,b) get_sv(a,b)
+# define perl_init_i18nl10n(a) init_i18nl10n(a)
+# define perl_require_pv(a) require_pv(a)
/* varargs functions can't be handled with CPP macros. :-(
This provides a set of compatibility functions that don't take
an extra argument but grab the context pointer using the macro
dTHX.
*/
-#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_NO_SHORT_NAMES)
-# define croak Perl_croak_nocontext
-# define deb Perl_deb_nocontext
-# define die Perl_die_nocontext
-# define form Perl_form_nocontext
-# define load_module Perl_load_module_nocontext
-# define mess Perl_mess_nocontext
-# define newSVpvf Perl_newSVpvf_nocontext
-# define sv_catpvf Perl_sv_catpvf_nocontext
-# define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext
-# define sv_setpvf Perl_sv_setpvf_nocontext
-# define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext
-# define warn Perl_warn_nocontext
-# define warner Perl_warner_nocontext
-#endif
-#endif /* !defined(PERL_CORE) && !defined(PERL_NOCOMPAT) */
+# if defined(MULTIPLICITY) && !defined(PERL_NO_SHORT_NAMES)
+# define croak Perl_croak_nocontext
+# define deb Perl_deb_nocontext
+# define die Perl_die_nocontext
+# define form Perl_form_nocontext
+# define load_module Perl_load_module_nocontext
+# define mess Perl_mess_nocontext
+# define newSVpvf Perl_newSVpvf_nocontext
+# define sv_catpvf Perl_sv_catpvf_nocontext
+# define sv_catpvf_mg Perl_sv_catpvf_mg_nocontext
+# define sv_setpvf Perl_sv_setpvf_nocontext
+# define sv_setpvf_mg Perl_sv_setpvf_mg_nocontext
+# define warn Perl_warn_nocontext
+# define warner Perl_warner_nocontext
+# endif /* defined(MULTIPLICITY) && !defined(PERL_NO_SHORT_NAMES) */
+# endif /* !defined(PERL_NOCOMPAT) */
+#endif /* !defined(PERL_CORE) */
+#if !defined(PERL_NO_SHORT_NAMES)
-#if !defined(PERL_IMPLICIT_CONTEXT)
-/* undefined symbols, point them back at the usual ones */
-# define Perl_croak_nocontext Perl_croak
-# define Perl_deb_nocontext Perl_deb
-# define Perl_die_nocontext Perl_die
-# define Perl_form_nocontext Perl_form
-# define Perl_load_module_nocontext Perl_load_module
-# define Perl_mess_nocontext Perl_mess
-# define Perl_newSVpvf_nocontext Perl_newSVpvf
-# define Perl_sv_catpvf_nocontext Perl_sv_catpvf
-# define Perl_sv_catpvf_mg_nocontext Perl_sv_catpvf_mg
-# define Perl_sv_setpvf_nocontext Perl_sv_setpvf
-# define Perl_sv_setpvf_mg_nocontext Perl_sv_setpvf_mg
-# define Perl_warn_nocontext Perl_warn
-# define Perl_warner_nocontext Perl_warner
-#endif
+/* Hide global symbols */
+
+# define Gv_AMupdate(a,b) Perl_Gv_AMupdate(aTHX_ a,b)
+# define SvAMAGIC_off Perl_SvAMAGIC_off
+# define SvAMAGIC_on Perl_SvAMAGIC_on
+# define SvGETMAGIC(a) Perl_SvGETMAGIC(aTHX_ a)
+# define SvIV(a) Perl_SvIV(aTHX_ a)
+# define SvIV_nomg(a) Perl_SvIV_nomg(aTHX_ a)
+# define SvNV(a) Perl_SvNV(aTHX_ a)
+# define SvNV_nomg(a) Perl_SvNV_nomg(aTHX_ a)
+# define SvPVXtrue(a) Perl_SvPVXtrue(aTHX_ a)
+# define SvREFCNT_dec_ret_NULL(a) Perl_SvREFCNT_dec_ret_NULL(aTHX_ a)
+# define SvTRUE(a) Perl_SvTRUE(aTHX_ a)
+# define SvTRUE_NN(a) Perl_SvTRUE_NN(aTHX_ a)
+# define SvTRUE_common(a,b) Perl_SvTRUE_common(aTHX_ a,b)
+# define SvTRUE_nomg(a) Perl_SvTRUE_nomg(aTHX_ a)
+# define SvUV(a) Perl_SvUV(aTHX_ a)
+# define SvUV_nomg(a) Perl_SvUV_nomg(aTHX_ a)
+# define _force_out_malformed_utf8_message(a,b,c,d) Perl__force_out_malformed_utf8_message(aTHX_ a,b,c,d)
+# define _is_in_locale_category(a,b) Perl__is_in_locale_category(aTHX_ a,b)
+# define _is_uni_FOO(a,b) Perl__is_uni_FOO(aTHX_ a,b)
+# define _is_uni_perl_idcont(a) Perl__is_uni_perl_idcont(aTHX_ a)
+# define _is_uni_perl_idstart(a) Perl__is_uni_perl_idstart(aTHX_ a)
+# define _is_utf8_FOO(a,b,c) Perl__is_utf8_FOO(aTHX_ a,b,c)
+# define _is_utf8_perl_idcont(a,b) Perl__is_utf8_perl_idcont(aTHX_ a,b)
+# define _is_utf8_perl_idstart(a,b) Perl__is_utf8_perl_idstart(aTHX_ a,b)
+# define _to_uni_fold_flags(a,b,c,d) Perl__to_uni_fold_flags(aTHX_ a,b,c,d)
+# define _to_utf8_fold_flags(a,b,c,d,e) Perl__to_utf8_fold_flags(aTHX_ a,b,c,d,e)
+# define _to_utf8_lower_flags(a,b,c,d,e) Perl__to_utf8_lower_flags(aTHX_ a,b,c,d,e)
+# define _to_utf8_title_flags(a,b,c,d,e) Perl__to_utf8_title_flags(aTHX_ a,b,c,d,e)
+# define _to_utf8_upper_flags(a,b,c,d,e) Perl__to_utf8_upper_flags(aTHX_ a,b,c,d,e)
+# define _utf8n_to_uvchr_msgs_helper Perl__utf8n_to_uvchr_msgs_helper
+# define amagic_call(a,b,c,d) Perl_amagic_call(aTHX_ a,b,c,d)
+# define amagic_deref_call(a,b) Perl_amagic_deref_call(aTHX_ a,b)
+# define apply_attrs_string(a,b,c,d) Perl_apply_attrs_string(aTHX_ a,b,c,d)
+# define apply_builtin_cv_attributes(a,b) Perl_apply_builtin_cv_attributes(aTHX_ a,b)
+# define atfork_lock Perl_atfork_lock
+# define atfork_unlock Perl_atfork_unlock
+# define av_clear(a) Perl_av_clear(aTHX_ a)
+# define av_count(a) Perl_av_count(aTHX_ a)
+# define av_delete(a,b,c) Perl_av_delete(aTHX_ a,b,c)
+# define av_dump(a) Perl_av_dump(aTHX_ a)
+# define av_exists(a,b) Perl_av_exists(aTHX_ a,b)
+# define av_extend(a,b) Perl_av_extend(aTHX_ a,b)
+# define av_fetch(a,b,c) Perl_av_fetch(aTHX_ a,b,c)
+# define av_fetch_simple(a,b,c) Perl_av_fetch_simple(aTHX_ a,b,c)
+# define av_fill(a,b) Perl_av_fill(aTHX_ a,b)
+# define av_len(a) Perl_av_len(aTHX_ a)
+# define av_make(a,b) Perl_av_make(aTHX_ a,b)
+# define av_new_alloc(a,b) Perl_av_new_alloc(aTHX_ a,b)
+# define av_pop(a) Perl_av_pop(aTHX_ a)
+# define av_push(a,b) Perl_av_push(aTHX_ a,b)
+# define av_push_simple(a,b) Perl_av_push_simple(aTHX_ a,b)
+# define av_shift(a) Perl_av_shift(aTHX_ a)
+# define av_store(a,b,c) Perl_av_store(aTHX_ a,b,c)
+# define av_store_simple(a,b,c) Perl_av_store_simple(aTHX_ a,b,c)
+# define av_undef(a) Perl_av_undef(aTHX_ a)
+# define av_unshift(a,b) Perl_av_unshift(aTHX_ a,b)
+# define block_end(a,b) Perl_block_end(aTHX_ a,b)
+# define block_gimme() Perl_block_gimme(aTHX)
+# define block_start(a) Perl_block_start(aTHX_ a)
+# define bytes_cmp_utf8(a,b,c,d) Perl_bytes_cmp_utf8(aTHX_ a,b,c,d)
+# define bytes_from_utf8_loc Perl_bytes_from_utf8_loc
+# define bytes_to_utf8(a,b) Perl_bytes_to_utf8(aTHX_ a,b)
+# define call_argv(a,b,c) Perl_call_argv(aTHX_ a,b,c)
+# define call_atexit(a,b) Perl_call_atexit(aTHX_ a,b)
+# define call_list(a,b) Perl_call_list(aTHX_ a,b)
+# define call_method(a,b) Perl_call_method(aTHX_ a,b)
+# define call_pv(a,b) Perl_call_pv(aTHX_ a,b)
+# define call_sv(a,b) Perl_call_sv(aTHX_ a,b)
+# define caller_cx(a,b) Perl_caller_cx(aTHX_ a,b)
+# define cast_i32 Perl_cast_i32
+# define cast_iv Perl_cast_iv
+# define cast_ulong Perl_cast_ulong
+# define cast_uv Perl_cast_uv
+# define ck_entersub_args_list(a) Perl_ck_entersub_args_list(aTHX_ a)
+# define ck_entersub_args_proto(a,b,c) Perl_ck_entersub_args_proto(aTHX_ a,b,c)
+# define ck_entersub_args_proto_or_list(a,b,c) Perl_ck_entersub_args_proto_or_list(aTHX_ a,b,c)
+# define clear_defarray(a,b) Perl_clear_defarray(aTHX_ a,b)
+# define cop_fetch_label(a,b,c) Perl_cop_fetch_label(aTHX_ a,b,c)
+# define cop_store_label(a,b,c,d) Perl_cop_store_label(aTHX_ a,b,c,d)
+# define croak_memory_wrap Perl_croak_memory_wrap
+# define croak_no_modify Perl_croak_no_modify
+# define croak_sv(a) Perl_croak_sv(aTHX_ a)
+# define croak_xs_usage Perl_croak_xs_usage
+# define csighandler1 Perl_csighandler1
+# define csighandler3 Perl_csighandler3
+# define cv_clone(a) Perl_cv_clone(aTHX_ a)
+# define cv_const_sv Perl_cv_const_sv
+# define cv_get_call_checker(a,b,c) Perl_cv_get_call_checker(aTHX_ a,b,c)
+# define cv_get_call_checker_flags(a,b,c,d,e) Perl_cv_get_call_checker_flags(aTHX_ a,b,c,d,e)
+# define cv_name(a,b,c) Perl_cv_name(aTHX_ a,b,c)
+# define cv_set_call_checker(a,b,c) Perl_cv_set_call_checker(aTHX_ a,b,c)
+# define cv_set_call_checker_flags(a,b,c,d) Perl_cv_set_call_checker_flags(aTHX_ a,b,c,d)
+# define cv_undef(a) Perl_cv_undef(aTHX_ a)
+# define cx_dump(a) Perl_cx_dump(aTHX_ a)
+# define cxinc() Perl_cxinc(aTHX)
+# define debop(a) Perl_debop(aTHX_ a)
+# define debprofdump() Perl_debprofdump(aTHX)
+# define debstack() Perl_debstack(aTHX)
+# define debstackptrs() Perl_debstackptrs(aTHX)
+# define delimcpy Perl_delimcpy
+# define despatch_signals() Perl_despatch_signals(aTHX)
+# define die_sv(a) Perl_die_sv(aTHX_ a)
+# define do_close(a,b) Perl_do_close(aTHX_ a,b)
+# define do_gv_dump(a,b,c,d) Perl_do_gv_dump(aTHX_ a,b,c,d)
+# define do_gvgv_dump(a,b,c,d) Perl_do_gvgv_dump(aTHX_ a,b,c,d)
+# define do_hv_dump(a,b,c,d) Perl_do_hv_dump(aTHX_ a,b,c,d)
+# define do_join(a,b,c,d) Perl_do_join(aTHX_ a,b,c,d)
+# define do_magic_dump(a,b,c,d,e,f,g) Perl_do_magic_dump(aTHX_ a,b,c,d,e,f,g)
+# define do_op_dump(a,b,c) Perl_do_op_dump(aTHX_ a,b,c)
+# define do_openn(a,b,c,d,e,f,g,h,i) Perl_do_openn(aTHX_ a,b,c,d,e,f,g,h,i)
+# define do_pmop_dump(a,b,c) Perl_do_pmop_dump(aTHX_ a,b,c)
+# define do_sprintf(a,b,c) Perl_do_sprintf(aTHX_ a,b,c)
+# define do_sv_dump(a,b,c,d,e,f,g) Perl_do_sv_dump(aTHX_ a,b,c,d,e,f,g)
+# define doing_taint Perl_doing_taint
+# define doref(a,b,c) Perl_doref(aTHX_ a,b,c)
+# define dounwind(a) Perl_dounwind(aTHX_ a)
+# define dowantarray() Perl_dowantarray(aTHX)
+# define dump_all() Perl_dump_all(aTHX)
+# define dump_eval() Perl_dump_eval(aTHX)
+# define dump_form(a) Perl_dump_form(aTHX_ a)
+# define dump_packsubs(a) Perl_dump_packsubs(aTHX_ a)
+# define dump_sub(a) Perl_dump_sub(aTHX_ a)
+# define dump_vindent(a,b,c,d) Perl_dump_vindent(aTHX_ a,b,c,d)
+# define eval_pv(a,b) Perl_eval_pv(aTHX_ a,b)
+# define eval_sv(a,b) Perl_eval_sv(aTHX_ a,b)
+# define fbm_compile(a,b) Perl_fbm_compile(aTHX_ a,b)
+# define fbm_instr(a,b,c,d) Perl_fbm_instr(aTHX_ a,b,c,d)
+# define filter_add(a,b) Perl_filter_add(aTHX_ a,b)
+# define filter_del(a) Perl_filter_del(aTHX_ a)
+# define filter_read(a,b,c) Perl_filter_read(aTHX_ a,b,c)
+# define find_runcv(a) Perl_find_runcv(aTHX_ a)
+# define find_rundefsv() Perl_find_rundefsv(aTHX)
+# define foldEQ(a,b,c) Perl_foldEQ(aTHX_ a,b,c)
+# define foldEQ_latin1(a,b,c) Perl_foldEQ_latin1(aTHX_ a,b,c)
+# define foldEQ_locale(a,b,c) Perl_foldEQ_locale(aTHX_ a,b,c)
+# define foldEQ_utf8_flags(a,b,c,d,e,f,g,h,i) Perl_foldEQ_utf8_flags(aTHX_ a,b,c,d,e,f,g,h,i)
+# define forbid_outofblock_ops(a,b) Perl_forbid_outofblock_ops(aTHX_ a,b)
+# define free_tmps() Perl_free_tmps(aTHX)
+# define get_av(a,b) Perl_get_av(aTHX_ a,b)
+# define get_cv(a,b) Perl_get_cv(aTHX_ a,b)
+# define get_cvn_flags(a,b,c) Perl_get_cvn_flags(aTHX_ a,b,c)
+# define get_hv(a,b) Perl_get_hv(aTHX_ a,b)
+# define get_op_descs() Perl_get_op_descs(aTHX)
+# define get_op_names() Perl_get_op_names(aTHX)
+# define get_ppaddr() Perl_get_ppaddr(aTHX)
+# define get_sv(a,b) Perl_get_sv(aTHX_ a,b)
+# define get_vtbl(a) Perl_get_vtbl(aTHX_ a)
+# define getcwd_sv(a) Perl_getcwd_sv(aTHX_ a)
+# define gp_free(a) Perl_gp_free(aTHX_ a)
+# define gp_ref(a) Perl_gp_ref(aTHX_ a)
+# define grok_atoUV Perl_grok_atoUV
+# define grok_bin_oct_hex(a,b,c,d,e,f,g) Perl_grok_bin_oct_hex(aTHX_ a,b,c,d,e,f,g)
+# define grok_infnan(a,b) Perl_grok_infnan(aTHX_ a,b)
+# define grok_number(a,b,c) Perl_grok_number(aTHX_ a,b,c)
+# define grok_number_flags(a,b,c,d) Perl_grok_number_flags(aTHX_ a,b,c,d)
+# define grok_numeric_radix(a,b) Perl_grok_numeric_radix(aTHX_ a,b)
+# define gv_add_by_type(a,b) Perl_gv_add_by_type(aTHX_ a,b)
+# define gv_autoload_pv(a,b,c) Perl_gv_autoload_pv(aTHX_ a,b,c)
+# define gv_autoload_pvn(a,b,c,d) Perl_gv_autoload_pvn(aTHX_ a,b,c,d)
+# define gv_autoload_sv(a,b,c) Perl_gv_autoload_sv(aTHX_ a,b,c)
+# define gv_check(a) Perl_gv_check(aTHX_ a)
+# define gv_const_sv(a) Perl_gv_const_sv(aTHX_ a)
+# define gv_dump(a) Perl_gv_dump(aTHX_ a)
+# define gv_efullname4(a,b,c,d) Perl_gv_efullname4(aTHX_ a,b,c,d)
+# define gv_fetchfile(a) Perl_gv_fetchfile(aTHX_ a)
+# define gv_fetchfile_flags(a,b,c) Perl_gv_fetchfile_flags(aTHX_ a,b,c)
+# define gv_fetchmeth_pv(a,b,c,d) Perl_gv_fetchmeth_pv(aTHX_ a,b,c,d)
+# define gv_fetchmeth_pv_autoload(a,b,c,d) Perl_gv_fetchmeth_pv_autoload(aTHX_ a,b,c,d)
+# define gv_fetchmeth_pvn(a,b,c,d,e) Perl_gv_fetchmeth_pvn(aTHX_ a,b,c,d,e)
+# define gv_fetchmeth_pvn_autoload(a,b,c,d,e) Perl_gv_fetchmeth_pvn_autoload(aTHX_ a,b,c,d,e)
+# define gv_fetchmeth_sv(a,b,c,d) Perl_gv_fetchmeth_sv(aTHX_ a,b,c,d)
+# define gv_fetchmeth_sv_autoload(a,b,c,d) Perl_gv_fetchmeth_sv_autoload(aTHX_ a,b,c,d)
+# define gv_fetchmethod_autoload(a,b,c) Perl_gv_fetchmethod_autoload(aTHX_ a,b,c)
+# define gv_fetchmethod_pv_flags(a,b,c) Perl_gv_fetchmethod_pv_flags(aTHX_ a,b,c)
+# define gv_fetchmethod_pvn_flags(a,b,c,d) Perl_gv_fetchmethod_pvn_flags(aTHX_ a,b,c,d)
+# define gv_fetchmethod_sv_flags(a,b,c) Perl_gv_fetchmethod_sv_flags(aTHX_ a,b,c)
+# define gv_fetchpv(a,b,c) Perl_gv_fetchpv(aTHX_ a,b,c)
+# define gv_fetchpvn_flags(a,b,c,d) Perl_gv_fetchpvn_flags(aTHX_ a,b,c,d)
+# define gv_fetchsv(a,b,c) Perl_gv_fetchsv(aTHX_ a,b,c)
+# define gv_fullname4(a,b,c,d) Perl_gv_fullname4(aTHX_ a,b,c,d)
+# define gv_handler(a,b) Perl_gv_handler(aTHX_ a,b)
+# define gv_init_pv(a,b,c,d) Perl_gv_init_pv(aTHX_ a,b,c,d)
+# define gv_init_pvn(a,b,c,d,e) Perl_gv_init_pvn(aTHX_ a,b,c,d,e)
+# define gv_init_sv(a,b,c,d) Perl_gv_init_sv(aTHX_ a,b,c,d)
+# define gv_name_set(a,b,c,d) Perl_gv_name_set(aTHX_ a,b,c,d)
+# define gv_stashpv(a,b) Perl_gv_stashpv(aTHX_ a,b)
+# define gv_stashpvn(a,b,c) Perl_gv_stashpvn(aTHX_ a,b,c)
+# define gv_stashsv(a,b) Perl_gv_stashsv(aTHX_ a,b)
+# define hv_bucket_ratio(a) Perl_hv_bucket_ratio(aTHX_ a)
+# define hv_clear(a) Perl_hv_clear(aTHX_ a)
+# define hv_clear_placeholders(a) Perl_hv_clear_placeholders(aTHX_ a)
+# define hv_common(a,b,c,d,e,f,g,h) Perl_hv_common(aTHX_ a,b,c,d,e,f,g,h)
+# define hv_common_key_len(a,b,c,d,e,f) Perl_hv_common_key_len(aTHX_ a,b,c,d,e,f)
+# define hv_copy_hints_hv(a) Perl_hv_copy_hints_hv(aTHX_ a)
+# define hv_delayfree_ent(a,b) Perl_hv_delayfree_ent(aTHX_ a,b)
+# define hv_dump(a) Perl_hv_dump(aTHX_ a)
+# define hv_free_ent(a,b) Perl_hv_free_ent(aTHX_ a,b)
+# define hv_iterinit(a) Perl_hv_iterinit(aTHX_ a)
+# define hv_iterkey(a,b) Perl_hv_iterkey(aTHX_ a,b)
+# define hv_iterkeysv(a) Perl_hv_iterkeysv(aTHX_ a)
+# define hv_iternext_flags(a,b) Perl_hv_iternext_flags(aTHX_ a,b)
+# define hv_iternextsv(a,b,c) Perl_hv_iternextsv(aTHX_ a,b,c)
+# define hv_iterval(a,b) Perl_hv_iterval(aTHX_ a,b)
+# define hv_ksplit(a,b) Perl_hv_ksplit(aTHX_ a,b)
+# define hv_name_set(a,b,c,d) Perl_hv_name_set(aTHX_ a,b,c,d)
+# define hv_rand_set(a,b) Perl_hv_rand_set(aTHX_ a,b)
+# define hv_scalar(a) Perl_hv_scalar(aTHX_ a)
+# define init_i18nl10n(a) Perl_init_i18nl10n(aTHX_ a)
+# define init_stacks() Perl_init_stacks(aTHX)
+# define init_tm(a) Perl_init_tm(aTHX_ a)
+# define intro_my() Perl_intro_my(aTHX)
+# define isC9_STRICT_UTF8_CHAR Perl_isC9_STRICT_UTF8_CHAR
+# define isSTRICT_UTF8_CHAR Perl_isSTRICT_UTF8_CHAR
+# define isUTF8_CHAR Perl_isUTF8_CHAR
+# define isUTF8_CHAR_flags Perl_isUTF8_CHAR_flags
+# define is_c9strict_utf8_string_loclen Perl_is_c9strict_utf8_string_loclen
+# define is_lvalue_sub() Perl_is_lvalue_sub(aTHX)
+# define is_safe_syscall(a,b,c,d) Perl_is_safe_syscall(aTHX_ a,b,c,d)
+# define is_strict_utf8_string_loclen Perl_is_strict_utf8_string_loclen
+# define is_utf8_FF_helper_ Perl_is_utf8_FF_helper_
+# define is_utf8_char_helper_ Perl_is_utf8_char_helper_
+# define is_utf8_fixed_width_buf_loclen_flags Perl_is_utf8_fixed_width_buf_loclen_flags
+# define is_utf8_invariant_string_loc Perl_is_utf8_invariant_string_loc
+# define is_utf8_string_flags Perl_is_utf8_string_flags
+# define is_utf8_string_loclen Perl_is_utf8_string_loclen
+# define is_utf8_string_loclen_flags Perl_is_utf8_string_loclen_flags
+# define is_utf8_valid_partial_char_flags Perl_is_utf8_valid_partial_char_flags
+# define isinfnan Perl_isinfnan
+# define leave_adjust_stacks(a,b,c,d) Perl_leave_adjust_stacks(aTHX_ a,b,c,d)
+# define leave_scope(a) Perl_leave_scope(aTHX_ a)
+# define lex_bufutf8() Perl_lex_bufutf8(aTHX)
+# define lex_discard_to(a) Perl_lex_discard_to(aTHX_ a)
+# define lex_grow_linestr(a) Perl_lex_grow_linestr(aTHX_ a)
+# define lex_next_chunk(a) Perl_lex_next_chunk(aTHX_ a)
+# define lex_peek_unichar(a) Perl_lex_peek_unichar(aTHX_ a)
+# define lex_read_space(a) Perl_lex_read_space(aTHX_ a)
+# define lex_read_to(a) Perl_lex_read_to(aTHX_ a)
+# define lex_read_unichar(a) Perl_lex_read_unichar(aTHX_ a)
+# define lex_start(a,b,c) Perl_lex_start(aTHX_ a,b,c)
+# define lex_stuff_pv(a,b) Perl_lex_stuff_pv(aTHX_ a,b)
+# define lex_stuff_pvn(a,b,c) Perl_lex_stuff_pvn(aTHX_ a,b,c)
+# define lex_stuff_sv(a,b) Perl_lex_stuff_sv(aTHX_ a,b)
+# define lex_unstuff(a) Perl_lex_unstuff(aTHX_ a)
+# define looks_like_number(a) Perl_looks_like_number(aTHX_ a)
+# define lsbit_pos32 Perl_lsbit_pos32
+# define magic_dump(a) Perl_magic_dump(aTHX_ a)
+# define markstack_grow() Perl_markstack_grow(aTHX)
+# define mess_sv(a,b) Perl_mess_sv(aTHX_ a,b)
+# define mg_clear(a) Perl_mg_clear(aTHX_ a)
+# define mg_copy(a,b,c,d) Perl_mg_copy(aTHX_ a,b,c,d)
+# define mg_find Perl_mg_find
+# define mg_findext Perl_mg_findext
+# define mg_free(a) Perl_mg_free(aTHX_ a)
+# define mg_free_type(a,b) Perl_mg_free_type(aTHX_ a,b)
+# define mg_freeext(a,b,c) Perl_mg_freeext(aTHX_ a,b,c)
+# define mg_get(a) Perl_mg_get(aTHX_ a)
+# define mg_magical Perl_mg_magical
+# define mg_set(a) Perl_mg_set(aTHX_ a)
+# define mg_size(a) Perl_mg_size(aTHX_ a)
+# define mini_mktime Perl_mini_mktime
+# define moreswitches(a) Perl_moreswitches(aTHX_ a)
+# define mortal_destructor_sv(a,b) Perl_mortal_destructor_sv(aTHX_ a,b)
+# define mortal_getenv Perl_mortal_getenv
+# define mortal_svfunc_x(a,b) Perl_mortal_svfunc_x(aTHX_ a,b)
+# define mro_get_linear_isa(a) Perl_mro_get_linear_isa(aTHX_ a)
+# define mro_method_changed_in(a) Perl_mro_method_changed_in(aTHX_ a)
+# define msbit_pos32 Perl_msbit_pos32
+# define my_atof(a) Perl_my_atof(aTHX_ a)
+# define my_atof3(a,b,c) Perl_my_atof3(aTHX_ a,b,c)
+# define my_dirfd Perl_my_dirfd
+# define my_exit(a) Perl_my_exit(aTHX_ a)
+# define my_failure_exit() Perl_my_failure_exit(aTHX)
+# define my_fflush_all() Perl_my_fflush_all(aTHX)
+# define my_fork Perl_my_fork
+# define my_popen_list(a,b,c) Perl_my_popen_list(aTHX_ a,b,c)
+# define my_setenv(a,b) Perl_my_setenv(aTHX_ a,b)
+# define my_socketpair Perl_my_socketpair
+# define my_strftime(a,b,c,d,e,f,g,h,i,j) Perl_my_strftime(aTHX_ a,b,c,d,e,f,g,h,i,j)
+# define my_strtod Perl_my_strtod
+# define newANONATTRSUB(a,b,c,d) Perl_newANONATTRSUB(aTHX_ a,b,c,d)
+# define newANONHASH(a) Perl_newANONHASH(aTHX_ a)
+# define newANONLIST(a) Perl_newANONLIST(aTHX_ a)
+# define newANONSUB(a,b,c) Perl_newANONSUB(aTHX_ a,b,c)
+# define newARGDEFELEMOP(a,b,c) Perl_newARGDEFELEMOP(aTHX_ a,b,c)
+# define newASSIGNOP(a,b,c,d) Perl_newASSIGNOP(aTHX_ a,b,c,d)
+# define newAVREF(a) Perl_newAVREF(aTHX_ a)
+# define newAVav(a) Perl_newAVav(aTHX_ a)
+# define newAVhv(a) Perl_newAVhv(aTHX_ a)
+# define newBINOP(a,b,c,d) Perl_newBINOP(aTHX_ a,b,c,d)
+# define newCONDOP(a,b,c,d) Perl_newCONDOP(aTHX_ a,b,c,d)
+# define newCONSTSUB(a,b,c) Perl_newCONSTSUB(aTHX_ a,b,c)
+# define newCONSTSUB_flags(a,b,c,d,e) Perl_newCONSTSUB_flags(aTHX_ a,b,c,d,e)
+# define newCVREF(a,b) Perl_newCVREF(aTHX_ a,b)
+# define newDEFEROP(a,b) Perl_newDEFEROP(aTHX_ a,b)
+# define newDEFSVOP() Perl_newDEFSVOP(aTHX)
+# define newFORM(a,b,c) Perl_newFORM(aTHX_ a,b,c)
+# define newFOROP(a,b,c,d,e) Perl_newFOROP(aTHX_ a,b,c,d,e)
+# define newGIVENOP(a,b,c) Perl_newGIVENOP(aTHX_ a,b,c)
+# define newGVOP(a,b,c) Perl_newGVOP(aTHX_ a,b,c)
+# define newGVREF(a,b) Perl_newGVREF(aTHX_ a,b)
+# define newGVgen_flags(a,b) Perl_newGVgen_flags(aTHX_ a,b)
+# define newHVREF(a) Perl_newHVREF(aTHX_ a)
+# define newHVhv(a) Perl_newHVhv(aTHX_ a)
+# define newLISTOP(a,b,c,d) Perl_newLISTOP(aTHX_ a,b,c,d)
+# define newLOGOP(a,b,c,d) Perl_newLOGOP(aTHX_ a,b,c,d)
+# define newLOOPEX(a,b) Perl_newLOOPEX(aTHX_ a,b)
+# define newLOOPOP(a,b,c,d) Perl_newLOOPOP(aTHX_ a,b,c,d)
+# define newMETHOP(a,b,c) Perl_newMETHOP(aTHX_ a,b,c)
+# define newMETHOP_named(a,b,c) Perl_newMETHOP_named(aTHX_ a,b,c)
+# define newMYSUB(a,b,c,d,e) Perl_newMYSUB(aTHX_ a,b,c,d,e)
+# define newNULLLIST() Perl_newNULLLIST(aTHX)
+# define newOP(a,b) Perl_newOP(aTHX_ a,b)
+# define newPADNAMELIST Perl_newPADNAMELIST
+# define newPADNAMEouter Perl_newPADNAMEouter
+# define newPADNAMEpvn Perl_newPADNAMEpvn
+# define newPADxVOP(a,b,c) Perl_newPADxVOP(aTHX_ a,b,c)
+# define newPMOP(a,b) Perl_newPMOP(aTHX_ a,b)
+# define newPROG(a) Perl_newPROG(aTHX_ a)
+# define newPVOP(a,b,c) Perl_newPVOP(aTHX_ a,b,c)
+# define newRANGE(a,b,c) Perl_newRANGE(aTHX_ a,b,c)
+# define newRV(a) Perl_newRV(aTHX_ a)
+# define newRV_noinc(a) Perl_newRV_noinc(aTHX_ a)
+# define newSLICEOP(a,b,c) Perl_newSLICEOP(aTHX_ a,b,c)
+# define newSTATEOP(a,b,c) Perl_newSTATEOP(aTHX_ a,b,c)
+# define newSV(a) Perl_newSV(aTHX_ a)
+# define newSVOP(a,b,c) Perl_newSVOP(aTHX_ a,b,c)
+# define newSVREF(a) Perl_newSVREF(aTHX_ a)
+# define newSV_false() Perl_newSV_false(aTHX)
+# define newSV_true() Perl_newSV_true(aTHX)
+# define newSV_type(a) Perl_newSV_type(aTHX_ a)
+# define newSV_type_mortal(a) Perl_newSV_type_mortal(aTHX_ a)
+# define newSVbool(a) Perl_newSVbool(aTHX_ a)
+# define newSVhek(a) Perl_newSVhek(aTHX_ a)
+# define newSVhek_mortal(a) Perl_newSVhek_mortal(aTHX_ a)
+# define newSViv(a) Perl_newSViv(aTHX_ a)
+# define newSVnv(a) Perl_newSVnv(aTHX_ a)
+# define newSVpv(a,b) Perl_newSVpv(aTHX_ a,b)
+# define newSVpv_share(a,b) Perl_newSVpv_share(aTHX_ a,b)
+# define newSVpvn(a,b) Perl_newSVpvn(aTHX_ a,b)
+# define newSVpvn_flags(a,b,c) Perl_newSVpvn_flags(aTHX_ a,b,c)
+# define newSVpvn_share(a,b,c) Perl_newSVpvn_share(aTHX_ a,b,c)
+# define newSVrv(a,b) Perl_newSVrv(aTHX_ a,b)
+# define newSVsv_flags(a,b) Perl_newSVsv_flags(aTHX_ a,b)
+# define newSVuv(a) Perl_newSVuv(aTHX_ a)
+# define newTRYCATCHOP(a,b,c,d) Perl_newTRYCATCHOP(aTHX_ a,b,c,d)
+# define newUNOP(a,b,c) Perl_newUNOP(aTHX_ a,b,c)
+# define newUNOP_AUX(a,b,c,d) Perl_newUNOP_AUX(aTHX_ a,b,c,d)
+# define newWHENOP(a,b) Perl_newWHENOP(aTHX_ a,b)
+# define newWHILEOP(a,b,c,d,e,f,g) Perl_newWHILEOP(aTHX_ a,b,c,d,e,f,g)
+# define newXS(a,b,c) Perl_newXS(aTHX_ a,b,c)
+# define newXS_flags(a,b,c,d,e) Perl_newXS_flags(aTHX_ a,b,c,d,e)
+# define new_stackinfo(a,b) Perl_new_stackinfo(aTHX_ a,b)
+# define new_version(a) Perl_new_version(aTHX_ a)
+# define nothreadhook() Perl_nothreadhook(aTHX)
+# define op_append_elem(a,b,c) Perl_op_append_elem(aTHX_ a,b,c)
+# define op_append_list(a,b,c) Perl_op_append_list(aTHX_ a,b,c)
+# define op_class(a) Perl_op_class(aTHX_ a)
+# define op_contextualize(a,b) Perl_op_contextualize(aTHX_ a,b)
+# define op_convert_list(a,b,c) Perl_op_convert_list(aTHX_ a,b,c)
+# define op_dump(a) Perl_op_dump(aTHX_ a)
+# define op_force_list(a) Perl_op_force_list(aTHX_ a)
+# define op_free(a) Perl_op_free(aTHX_ a)
+# define op_linklist(a) Perl_op_linklist(aTHX_ a)
+# define op_null(a) Perl_op_null(aTHX_ a)
+# define op_parent Perl_op_parent
+# define op_prepend_elem(a,b,c) Perl_op_prepend_elem(aTHX_ a,b,c)
+# define op_refcnt_lock() Perl_op_refcnt_lock(aTHX)
+# define op_refcnt_unlock() Perl_op_refcnt_unlock(aTHX)
+# define op_scope(a) Perl_op_scope(aTHX_ a)
+# define op_sibling_splice Perl_op_sibling_splice
+# define op_wrap_finally(a,b) Perl_op_wrap_finally(aTHX_ a,b)
+# define packlist(a,b,c,d,e) Perl_packlist(aTHX_ a,b,c,d,e)
+# define pad_add_anon(a,b) Perl_pad_add_anon(aTHX_ a,b)
+# define pad_add_name_pv(a,b,c,d) Perl_pad_add_name_pv(aTHX_ a,b,c,d)
+# define pad_add_name_pvn(a,b,c,d,e) Perl_pad_add_name_pvn(aTHX_ a,b,c,d,e)
+# define pad_add_name_sv(a,b,c,d) Perl_pad_add_name_sv(aTHX_ a,b,c,d)
+# define pad_alloc(a,b) Perl_pad_alloc(aTHX_ a,b)
+# define pad_findmy_pv(a,b) Perl_pad_findmy_pv(aTHX_ a,b)
+# define pad_findmy_pvn(a,b,c) Perl_pad_findmy_pvn(aTHX_ a,b,c)
+# define pad_findmy_sv(a,b) Perl_pad_findmy_sv(aTHX_ a,b)
+# define pad_new(a) Perl_pad_new(aTHX_ a)
+# define pad_tidy(a) Perl_pad_tidy(aTHX_ a)
+# define padnamelist_fetch Perl_padnamelist_fetch
+# define padnamelist_store(a,b,c) Perl_padnamelist_store(aTHX_ a,b,c)
+# define parse_arithexpr(a) Perl_parse_arithexpr(aTHX_ a)
+# define parse_barestmt(a) Perl_parse_barestmt(aTHX_ a)
+# define parse_block(a) Perl_parse_block(aTHX_ a)
+# define parse_fullexpr(a) Perl_parse_fullexpr(aTHX_ a)
+# define parse_fullstmt(a) Perl_parse_fullstmt(aTHX_ a)
+# define parse_label(a) Perl_parse_label(aTHX_ a)
+# define parse_listexpr(a) Perl_parse_listexpr(aTHX_ a)
+# define parse_stmtseq(a) Perl_parse_stmtseq(aTHX_ a)
+# define parse_subsignature(a) Perl_parse_subsignature(aTHX_ a)
+# define parse_termexpr(a) Perl_parse_termexpr(aTHX_ a)
+# define perly_sighandler Perl_perly_sighandler
+# define pmop_dump(a) Perl_pmop_dump(aTHX_ a)
+# define pop_scope() Perl_pop_scope(aTHX)
+# define pregcomp(a,b) Perl_pregcomp(aTHX_ a,b)
+# define pregexec(a,b,c,d,e,f,g) Perl_pregexec(aTHX_ a,b,c,d,e,f,g)
+# define pregfree(a) Perl_pregfree(aTHX_ a)
+# define pregfree2(a) Perl_pregfree2(aTHX_ a)
+# define prescan_version(a,b,c,d,e,f,g) Perl_prescan_version(aTHX_ a,b,c,d,e,f,g)
+# define ptr_table_fetch(a,b) Perl_ptr_table_fetch(aTHX_ a,b)
+# define ptr_table_free(a) Perl_ptr_table_free(aTHX_ a)
+# define ptr_table_new() Perl_ptr_table_new(aTHX)
+# define ptr_table_split(a) Perl_ptr_table_split(aTHX_ a)
+# define ptr_table_store(a,b,c) Perl_ptr_table_store(aTHX_ a,b,c)
+# define push_scope() Perl_push_scope(aTHX)
+# define pv_display(a,b,c,d,e) Perl_pv_display(aTHX_ a,b,c,d,e)
+# define pv_escape(a,b,c,d,e,f) Perl_pv_escape(aTHX_ a,b,c,d,e,f)
+# define pv_pretty(a,b,c,d,e,f,g) Perl_pv_pretty(aTHX_ a,b,c,d,e,f,g)
+# define pv_uni_display(a,b,c,d,e) Perl_pv_uni_display(aTHX_ a,b,c,d,e)
+# define rcpv_copy(a) Perl_rcpv_copy(aTHX_ a)
+# define rcpv_free(a) Perl_rcpv_free(aTHX_ a)
+# define rcpv_new(a,b,c) Perl_rcpv_new(aTHX_ a,b,c)
+# define re_compile(a,b) Perl_re_compile(aTHX_ a,b)
+# define re_intuit_start(a,b,c,d,e,f,g) Perl_re_intuit_start(aTHX_ a,b,c,d,e,f,g)
+# define re_intuit_string(a) Perl_re_intuit_string(aTHX_ a)
+# define reentrant_free() Perl_reentrant_free(aTHX)
+# define reentrant_init() Perl_reentrant_init(aTHX)
+# define reentrant_retry Perl_reentrant_retry
+# define reentrant_size() Perl_reentrant_size(aTHX)
+# define reg_named_buff_all(a,b) Perl_reg_named_buff_all(aTHX_ a,b)
+# define reg_named_buff_exists(a,b,c) Perl_reg_named_buff_exists(aTHX_ a,b,c)
+# define reg_named_buff_fetch(a,b,c) Perl_reg_named_buff_fetch(aTHX_ a,b,c)
+# define reg_named_buff_firstkey(a,b) Perl_reg_named_buff_firstkey(aTHX_ a,b)
+# define reg_named_buff_nextkey(a,b) Perl_reg_named_buff_nextkey(aTHX_ a,b)
+# define reg_named_buff_scalar(a,b) Perl_reg_named_buff_scalar(aTHX_ a,b)
+# define regdump(a) Perl_regdump(aTHX_ a)
+# define regexec_flags(a,b,c,d,e,f,g,h) Perl_regexec_flags(aTHX_ a,b,c,d,e,f,g,h)
+# define regfree_internal(a) Perl_regfree_internal(aTHX_ a)
+# define reginitcolors() Perl_reginitcolors(aTHX)
+# define repeatcpy Perl_repeatcpy
+# define require_pv(a) Perl_require_pv(aTHX_ a)
+# define rninstr Perl_rninstr
+# define rsignal(a,b) Perl_rsignal(aTHX_ a,b)
+# define rsignal_state(a) Perl_rsignal_state(aTHX_ a)
+# define runops_debug() Perl_runops_debug(aTHX)
+# define runops_standard() Perl_runops_standard(aTHX)
+# define rv2cv_op_cv(a,b) Perl_rv2cv_op_cv(aTHX_ a,b)
+# define safesyscalloc Perl_safesyscalloc
+# define safesysfree Perl_safesysfree
+# define safesysmalloc Perl_safesysmalloc
+# define safesysrealloc Perl_safesysrealloc
+# define save_I16(a) Perl_save_I16(aTHX_ a)
+# define save_I32(a) Perl_save_I32(aTHX_ a)
+# define save_I8(a) Perl_save_I8(aTHX_ a)
+# define save_adelete(a,b) Perl_save_adelete(aTHX_ a,b)
+# define save_aelem_flags(a,b,c,d) Perl_save_aelem_flags(aTHX_ a,b,c,d)
+# define save_alloc(a,b) Perl_save_alloc(aTHX_ a,b)
+# define save_aptr(a) Perl_save_aptr(aTHX_ a)
+# define save_ary(a) Perl_save_ary(aTHX_ a)
+# define save_bool(a) Perl_save_bool(aTHX_ a)
+# define save_clearsv(a) Perl_save_clearsv(aTHX_ a)
+# define save_delete(a,b,c) Perl_save_delete(aTHX_ a,b,c)
+# define save_destructor(a,b) Perl_save_destructor(aTHX_ a,b)
+# define save_destructor_x(a,b) Perl_save_destructor_x(aTHX_ a,b)
+# define save_freercpv(a) Perl_save_freercpv(aTHX_ a)
+# define save_generic_pvref(a) Perl_save_generic_pvref(aTHX_ a)
+# define save_generic_svref(a) Perl_save_generic_svref(aTHX_ a)
+# define save_gp(a,b) Perl_save_gp(aTHX_ a,b)
+# define save_hash(a) Perl_save_hash(aTHX_ a)
+# define save_hdelete(a,b) Perl_save_hdelete(aTHX_ a,b)
+# define save_helem_flags(a,b,c,d) Perl_save_helem_flags(aTHX_ a,b,c,d)
+# define save_hints() Perl_save_hints(aTHX)
+# define save_hptr(a) Perl_save_hptr(aTHX_ a)
+# define save_int(a) Perl_save_int(aTHX_ a)
+# define save_item(a) Perl_save_item(aTHX_ a)
+# define save_iv(a) Perl_save_iv(aTHX_ a)
+# define save_padsv_and_mortalize(a) Perl_save_padsv_and_mortalize(aTHX_ a)
+# define save_pptr(a) Perl_save_pptr(aTHX_ a)
+# define save_pushi32ptr(a,b,c) Perl_save_pushi32ptr(aTHX_ a,b,c)
+# define save_pushptr(a,b) Perl_save_pushptr(aTHX_ a,b)
+# define save_pushptrptr(a,b,c) Perl_save_pushptrptr(aTHX_ a,b,c)
+# define save_rcpv(a) Perl_save_rcpv(aTHX_ a)
+# define save_re_context() Perl_save_re_context(aTHX)
+# define save_scalar(a) Perl_save_scalar(aTHX_ a)
+# define save_set_svflags(a,b,c) Perl_save_set_svflags(aTHX_ a,b,c)
+# define save_shared_pvref(a) Perl_save_shared_pvref(aTHX_ a)
+# define save_sptr(a) Perl_save_sptr(aTHX_ a)
+# define save_svref(a) Perl_save_svref(aTHX_ a)
+# define save_vptr(a) Perl_save_vptr(aTHX_ a)
+# define savepv(a) Perl_savepv(aTHX_ a)
+# define savepvn(a,b) Perl_savepvn(aTHX_ a,b)
+# define savesharedpv(a) Perl_savesharedpv(aTHX_ a)
+# define savesharedpvn(a,b) Perl_savesharedpvn(aTHX_ a,b)
+# define savesharedsvpv(a) Perl_savesharedsvpv(aTHX_ a)
+# define savestack_grow() Perl_savestack_grow(aTHX)
+# define savestack_grow_cnt(a) Perl_savestack_grow_cnt(aTHX_ a)
+# define savesvpv(a) Perl_savesvpv(aTHX_ a)
+# define scan_bin(a,b,c) Perl_scan_bin(aTHX_ a,b,c)
+# define scan_hex(a,b,c) Perl_scan_hex(aTHX_ a,b,c)
+# define scan_num(a,b) Perl_scan_num(aTHX_ a,b)
+# define scan_oct(a,b,c) Perl_scan_oct(aTHX_ a,b,c)
+# define scan_version(a,b,c) Perl_scan_version(aTHX_ a,b,c)
+# define scan_vstring(a,b,c) Perl_scan_vstring(aTHX_ a,b,c)
+# define seed() Perl_seed(aTHX)
+# define set_context Perl_set_context
+# define setdefout(a) Perl_setdefout(aTHX_ a)
+# define share_hek(a,b,c) Perl_share_hek(aTHX_ a,b,c)
+# define single_1bit_pos32 Perl_single_1bit_pos32
+# define sortsv(a,b,c) Perl_sortsv(aTHX_ a,b,c)
+# define sortsv_flags(a,b,c,d) Perl_sortsv_flags(aTHX_ a,b,c,d)
+# define stack_grow(a,b,c) Perl_stack_grow(aTHX_ a,b,c)
+# define start_subparse(a,b) Perl_start_subparse(aTHX_ a,b)
+# define str_to_version(a) Perl_str_to_version(aTHX_ a)
+# define suspend_compcv(a) Perl_suspend_compcv(aTHX_ a)
+# define sv_2bool_flags(a,b) Perl_sv_2bool_flags(aTHX_ a,b)
+# define sv_2cv(a,b,c,d) Perl_sv_2cv(aTHX_ a,b,c,d)
+# define sv_2io(a) Perl_sv_2io(aTHX_ a)
+# define sv_2iv_flags(a,b) Perl_sv_2iv_flags(aTHX_ a,b)
+# define sv_2mortal(a) Perl_sv_2mortal(aTHX_ a)
+# define sv_2nv_flags(a,b) Perl_sv_2nv_flags(aTHX_ a,b)
+# define sv_2pv_flags(a,b,c) Perl_sv_2pv_flags(aTHX_ a,b,c)
+# define sv_2pvbyte_flags(a,b,c) Perl_sv_2pvbyte_flags(aTHX_ a,b,c)
+# define sv_2pvutf8_flags(a,b,c) Perl_sv_2pvutf8_flags(aTHX_ a,b,c)
+# define sv_2uv_flags(a,b) Perl_sv_2uv_flags(aTHX_ a,b)
+# define sv_backoff Perl_sv_backoff
+# define sv_bless(a,b) Perl_sv_bless(aTHX_ a,b)
+# define sv_cat_decode(a,b,c,d,e,f) Perl_sv_cat_decode(aTHX_ a,b,c,d,e,f)
+# define sv_catpv(a,b) Perl_sv_catpv(aTHX_ a,b)
+# define sv_catpv_flags(a,b,c) Perl_sv_catpv_flags(aTHX_ a,b,c)
+# define sv_catpv_mg(a,b) Perl_sv_catpv_mg(aTHX_ a,b)
+# define sv_catpvn_flags(a,b,c,d) Perl_sv_catpvn_flags(aTHX_ a,b,c,d)
+# define sv_catsv_flags(a,b,c) Perl_sv_catsv_flags(aTHX_ a,b,c)
+# define sv_chop(a,b) Perl_sv_chop(aTHX_ a,b)
+# define sv_clear(a) Perl_sv_clear(aTHX_ a)
+# define sv_cmp_flags(a,b,c) Perl_sv_cmp_flags(aTHX_ a,b,c)
+# define sv_cmp_locale_flags(a,b,c) Perl_sv_cmp_locale_flags(aTHX_ a,b,c)
+# define sv_copypv_flags(a,b,c) Perl_sv_copypv_flags(aTHX_ a,b,c)
+# define sv_dec(a) Perl_sv_dec(aTHX_ a)
+# define sv_dec_nomg(a) Perl_sv_dec_nomg(aTHX_ a)
+# define sv_derived_from(a,b) Perl_sv_derived_from(aTHX_ a,b)
+# define sv_derived_from_hv(a,b) Perl_sv_derived_from_hv(aTHX_ a,b)
+# define sv_derived_from_pv(a,b,c) Perl_sv_derived_from_pv(aTHX_ a,b,c)
+# define sv_derived_from_pvn(a,b,c,d) Perl_sv_derived_from_pvn(aTHX_ a,b,c,d)
+# define sv_derived_from_sv(a,b,c) Perl_sv_derived_from_sv(aTHX_ a,b,c)
+# define sv_destroyable(a) Perl_sv_destroyable(aTHX_ a)
+# define sv_does(a,b) Perl_sv_does(aTHX_ a,b)
+# define sv_does_pv(a,b,c) Perl_sv_does_pv(aTHX_ a,b,c)
+# define sv_does_pvn(a,b,c,d) Perl_sv_does_pvn(aTHX_ a,b,c,d)
+# define sv_does_sv(a,b,c) Perl_sv_does_sv(aTHX_ a,b,c)
+# define sv_dump(a) Perl_sv_dump(aTHX_ a)
+# define sv_dump_depth(a,b) Perl_sv_dump_depth(aTHX_ a,b)
+# define sv_eq_flags(a,b,c) Perl_sv_eq_flags(aTHX_ a,b,c)
+# define sv_force_normal_flags(a,b) Perl_sv_force_normal_flags(aTHX_ a,b)
+# define sv_free(a) Perl_sv_free(aTHX_ a)
+# define sv_get_backrefs Perl_sv_get_backrefs
+# define sv_gets(a,b,c) Perl_sv_gets(aTHX_ a,b,c)
+# define sv_grow(a,b) Perl_sv_grow(aTHX_ a,b)
+# define sv_grow_fresh(a,b) Perl_sv_grow_fresh(aTHX_ a,b)
+# define sv_inc(a) Perl_sv_inc(aTHX_ a)
+# define sv_inc_nomg(a) Perl_sv_inc_nomg(aTHX_ a)
+# define sv_insert_flags(a,b,c,d,e,f) Perl_sv_insert_flags(aTHX_ a,b,c,d,e,f)
+# define sv_isa(a,b) Perl_sv_isa(aTHX_ a,b)
+# define sv_isa_sv(a,b) Perl_sv_isa_sv(aTHX_ a,b)
+# define sv_isobject(a) Perl_sv_isobject(aTHX_ a)
+# define sv_len(a) Perl_sv_len(aTHX_ a)
+# define sv_len_utf8(a) Perl_sv_len_utf8(aTHX_ a)
+# define sv_len_utf8_nomg(a) Perl_sv_len_utf8_nomg(aTHX_ a)
+# define sv_magic(a,b,c,d,e) Perl_sv_magic(aTHX_ a,b,c,d,e)
+# define sv_magicext(a,b,c,d,e,f) Perl_sv_magicext(aTHX_ a,b,c,d,e,f)
+# define sv_mortalcopy_flags(a,b) Perl_sv_mortalcopy_flags(aTHX_ a,b)
+# define sv_newmortal() Perl_sv_newmortal(aTHX)
+# define sv_newref(a) Perl_sv_newref(aTHX_ a)
+# define sv_nosharing(a) Perl_sv_nosharing(aTHX_ a)
+# define sv_numeq_flags(a,b,c) Perl_sv_numeq_flags(aTHX_ a,b,c)
+# define sv_peek(a) Perl_sv_peek(aTHX_ a)
+# define sv_pos_b2u(a,b) Perl_sv_pos_b2u(aTHX_ a,b)
+# define sv_pos_b2u_flags(a,b,c) Perl_sv_pos_b2u_flags(aTHX_ a,b,c)
+# define sv_pos_u2b(a,b,c) Perl_sv_pos_u2b(aTHX_ a,b,c)
+# define sv_pos_u2b_flags(a,b,c,d) Perl_sv_pos_u2b_flags(aTHX_ a,b,c,d)
+# define sv_pvbyten_force(a,b) Perl_sv_pvbyten_force(aTHX_ a,b)
+# define sv_pvn_force_flags(a,b,c) Perl_sv_pvn_force_flags(aTHX_ a,b,c)
+# define sv_pvutf8n_force(a,b) Perl_sv_pvutf8n_force(aTHX_ a,b)
+# define sv_recode_to_utf8(a,b) Perl_sv_recode_to_utf8(aTHX_ a,b)
+# define sv_ref(a,b,c) Perl_sv_ref(aTHX_ a,b,c)
+# define sv_reftype(a,b) Perl_sv_reftype(aTHX_ a,b)
+# define sv_replace(a,b) Perl_sv_replace(aTHX_ a,b)
+# define sv_report_used() Perl_sv_report_used(aTHX)
+# define sv_reset(a,b) Perl_sv_reset(aTHX_ a,b)
+# define sv_rvunweaken(a) Perl_sv_rvunweaken(aTHX_ a)
+# define sv_rvweaken(a) Perl_sv_rvweaken(aTHX_ a)
+# define sv_set_bool(a,b) Perl_sv_set_bool(aTHX_ a,b)
+# define sv_set_false(a) Perl_sv_set_false(aTHX_ a)
+# define sv_set_true(a) Perl_sv_set_true(aTHX_ a)
+# define sv_set_undef(a) Perl_sv_set_undef(aTHX_ a)
+# define sv_setiv(a,b) Perl_sv_setiv(aTHX_ a,b)
+# define sv_setiv_mg(a,b) Perl_sv_setiv_mg(aTHX_ a,b)
+# define sv_setnv(a,b) Perl_sv_setnv(aTHX_ a,b)
+# define sv_setnv_mg(a,b) Perl_sv_setnv_mg(aTHX_ a,b)
+# define sv_setpv(a,b) Perl_sv_setpv(aTHX_ a,b)
+# define sv_setpv_bufsize(a,b,c) Perl_sv_setpv_bufsize(aTHX_ a,b,c)
+# define sv_setpv_freshbuf(a) Perl_sv_setpv_freshbuf(aTHX_ a)
+# define sv_setpv_mg(a,b) Perl_sv_setpv_mg(aTHX_ a,b)
+# define sv_setpvn(a,b,c) Perl_sv_setpvn(aTHX_ a,b,c)
+# define sv_setpvn_fresh(a,b,c) Perl_sv_setpvn_fresh(aTHX_ a,b,c)
+# define sv_setpvn_mg(a,b,c) Perl_sv_setpvn_mg(aTHX_ a,b,c)
+# define sv_setref_iv(a,b,c) Perl_sv_setref_iv(aTHX_ a,b,c)
+# define sv_setref_nv(a,b,c) Perl_sv_setref_nv(aTHX_ a,b,c)
+# define sv_setref_pv(a,b,c) Perl_sv_setref_pv(aTHX_ a,b,c)
+# define sv_setref_pvn(a,b,c,d) Perl_sv_setref_pvn(aTHX_ a,b,c,d)
+# define sv_setref_uv(a,b,c) Perl_sv_setref_uv(aTHX_ a,b,c)
+# define sv_setrv_inc(a,b) Perl_sv_setrv_inc(aTHX_ a,b)
+# define sv_setrv_inc_mg(a,b) Perl_sv_setrv_inc_mg(aTHX_ a,b)
+# define sv_setrv_noinc(a,b) Perl_sv_setrv_noinc(aTHX_ a,b)
+# define sv_setrv_noinc_mg(a,b) Perl_sv_setrv_noinc_mg(aTHX_ a,b)
+# define sv_setsv_flags(a,b,c) Perl_sv_setsv_flags(aTHX_ a,b,c)
+# define sv_setsv_mg(a,b) Perl_sv_setsv_mg(aTHX_ a,b)
+# define sv_setuv(a,b) Perl_sv_setuv(aTHX_ a,b)
+# define sv_setuv_mg(a,b) Perl_sv_setuv_mg(aTHX_ a,b)
+# define sv_streq_flags(a,b,c) Perl_sv_streq_flags(aTHX_ a,b,c)
+# define sv_string_from_errnum(a,b) Perl_sv_string_from_errnum(aTHX_ a,b)
+# define sv_tainted(a) Perl_sv_tainted(aTHX_ a)
+# define sv_true(a) Perl_sv_true(aTHX_ a)
+# define sv_uni_display(a,b,c,d) Perl_sv_uni_display(aTHX_ a,b,c,d)
+# define sv_unmagic(a,b) Perl_sv_unmagic(aTHX_ a,b)
+# define sv_unmagicext(a,b,c) Perl_sv_unmagicext(aTHX_ a,b,c)
+# define sv_unref_flags(a,b) Perl_sv_unref_flags(aTHX_ a,b)
+# define sv_untaint(a) Perl_sv_untaint(aTHX_ a)
+# define sv_upgrade(a,b) Perl_sv_upgrade(aTHX_ a,b)
+# define sv_usepvn_flags(a,b,c,d) Perl_sv_usepvn_flags(aTHX_ a,b,c,d)
+# define sv_utf8_decode(a) Perl_sv_utf8_decode(aTHX_ a)
+# define sv_utf8_downgrade_flags(a,b,c) Perl_sv_utf8_downgrade_flags(aTHX_ a,b,c)
+# define sv_utf8_encode(a) Perl_sv_utf8_encode(aTHX_ a)
+# define sv_utf8_upgrade_flags_grow(a,b,c) Perl_sv_utf8_upgrade_flags_grow(aTHX_ a,b,c)
+# define sv_vcatpvf(a,b,c) Perl_sv_vcatpvf(aTHX_ a,b,c)
+# define sv_vcatpvf_mg(a,b,c) Perl_sv_vcatpvf_mg(aTHX_ a,b,c)
+# define sv_vcatpvfn(a,b,c,d,e,f,g) Perl_sv_vcatpvfn(aTHX_ a,b,c,d,e,f,g)
+# define sv_vcatpvfn_flags(a,b,c,d,e,f,g,h) Perl_sv_vcatpvfn_flags(aTHX_ a,b,c,d,e,f,g,h)
+# define sv_vsetpvf(a,b,c) Perl_sv_vsetpvf(aTHX_ a,b,c)
+# define sv_vsetpvf_mg(a,b,c) Perl_sv_vsetpvf_mg(aTHX_ a,b,c)
+# define sv_vsetpvfn(a,b,c,d,e,f,g) Perl_sv_vsetpvfn(aTHX_ a,b,c,d,e,f,g)
+# define switch_to_global_locale() Perl_switch_to_global_locale(aTHX)
+# define sync_locale() Perl_sync_locale(aTHX)
+# define taint_env() Perl_taint_env(aTHX)
+# define taint_proper(a,b) Perl_taint_proper(aTHX_ a,b)
+# define thread_locale_init() Perl_thread_locale_init(aTHX)
+# define thread_locale_term() Perl_thread_locale_term(aTHX)
+# define to_uni_lower(a,b,c) Perl_to_uni_lower(aTHX_ a,b,c)
+# define to_uni_title(a,b,c) Perl_to_uni_title(aTHX_ a,b,c)
+# define to_uni_upper(a,b,c) Perl_to_uni_upper(aTHX_ a,b,c)
+# define unpackstring(a,b,c,d,e) Perl_unpackstring(aTHX_ a,b,c,d,e)
+# define unshare_hek(a) Perl_unshare_hek(aTHX_ a)
+# define unsharepvn(a,b,c) Perl_unsharepvn(aTHX_ a,b,c)
+# define upg_version(a,b) Perl_upg_version(aTHX_ a,b)
+# define utf8_distance(a,b) Perl_utf8_distance(aTHX_ a,b)
+# define utf8_hop Perl_utf8_hop
+# define utf8_hop_back Perl_utf8_hop_back
+# define utf8_hop_forward Perl_utf8_hop_forward
+# define utf8_hop_safe Perl_utf8_hop_safe
+# define utf8_length(a,b) Perl_utf8_length(aTHX_ a,b)
+# define utf8_to_bytes(a,b) Perl_utf8_to_bytes(aTHX_ a,b)
+# define utf8_to_uvchr_buf_helper(a,b,c) Perl_utf8_to_uvchr_buf_helper(aTHX_ a,b,c)
+# define utf8n_to_uvchr_msgs Perl_utf8n_to_uvchr_msgs
+# define uvoffuni_to_utf8_flags_msgs(a,b,c,d) Perl_uvoffuni_to_utf8_flags_msgs(aTHX_ a,b,c,d)
+# define uvuni_to_utf8(a,b) Perl_uvuni_to_utf8(aTHX_ a,b)
+# define valid_utf8_to_uvchr Perl_valid_utf8_to_uvchr
+# define vcmp(a,b) Perl_vcmp(aTHX_ a,b)
+# define vcroak(a,b) Perl_vcroak(aTHX_ a,b)
+# define vdeb(a,b) Perl_vdeb(aTHX_ a,b)
+# define vform(a,b) Perl_vform(aTHX_ a,b)
+# define vload_module(a,b,c,d) Perl_vload_module(aTHX_ a,b,c,d)
+# define vmess(a,b) Perl_vmess(aTHX_ a,b)
+# define vnewSVpvf(a,b) Perl_vnewSVpvf(aTHX_ a,b)
+# define vnormal(a) Perl_vnormal(aTHX_ a)
+# define vnumify(a) Perl_vnumify(aTHX_ a)
+# define vstringify(a) Perl_vstringify(aTHX_ a)
+# define vverify(a) Perl_vverify(aTHX_ a)
+# define vwarn(a,b) Perl_vwarn(aTHX_ a,b)
+# define vwarner(a,b,c) Perl_vwarner(aTHX_ a,b,c)
+# define warn_sv(a) Perl_warn_sv(aTHX_ a)
+# define whichsig_pv(a) Perl_whichsig_pv(aTHX_ a)
+# define whichsig_pvn(a,b) Perl_whichsig_pvn(aTHX_ a,b)
+# define whichsig_sv(a) Perl_whichsig_sv(aTHX_ a)
+# define wrap_infix_plugin(a,b) Perl_wrap_infix_plugin(aTHX_ a,b)
+# define wrap_keyword_plugin(a,b) Perl_wrap_keyword_plugin(aTHX_ a,b)
+# define wrap_op_checker(a,b,c) Perl_wrap_op_checker(aTHX_ a,b,c)
+
+# if defined(DEBUGGING)
+# define pad_setsv(a,b) Perl_pad_setsv(aTHX_ a,b)
+# define pad_sv(a) Perl_pad_sv(aTHX_ a)
+# endif
+# if !defined(EBCDIC)
+# define variant_byte_number Perl_variant_byte_number
+# endif
+# if defined(F_FREESP) && !defined(HAS_CHSIZE) && !defined(HAS_TRUNCATE)
+# define my_chsize(a,b) Perl_my_chsize(aTHX_ a,b)
+# endif
+# if !defined(HAS_STRLCAT)
+# define my_strlcat Perl_my_strlcat
+# endif
+# if !defined(HAS_STRLCPY)
+# define my_strlcpy Perl_my_strlcpy
+# endif
+# if !defined(HAS_STRNLEN)
+# define my_strnlen Perl_my_strnlen
+# endif
+# if defined(HAVE_INTERP_INTERN)
+# define sys_intern_clear() Perl_sys_intern_clear(aTHX)
+# define sys_intern_init() Perl_sys_intern_init(aTHX)
+# if defined(USE_ITHREADS)
+# define sys_intern_dup(a,b) Perl_sys_intern_dup(aTHX_ a,b)
+# endif
+# endif
+# if defined(MULTIPLICITY)
+# define croak_nocontext Perl_croak_nocontext
+# define deb_nocontext Perl_deb_nocontext
+# define die_nocontext Perl_die_nocontext
+# define form_nocontext Perl_form_nocontext
+# define load_module_nocontext Perl_load_module_nocontext
+# define mess_nocontext Perl_mess_nocontext
+# define newSVpvf_nocontext Perl_newSVpvf_nocontext
+# define sv_catpvf_mg_nocontext Perl_sv_catpvf_mg_nocontext
+# define sv_catpvf_nocontext Perl_sv_catpvf_nocontext
+# define sv_setpvf_mg_nocontext Perl_sv_setpvf_mg_nocontext
+# define sv_setpvf_nocontext Perl_sv_setpvf_nocontext
+# define warn_nocontext Perl_warn_nocontext
+# define warner_nocontext Perl_warner_nocontext
+# endif /* defined(MULTIPLICITY) */
+# if !defined(MULTIPLICITY) || defined(PERL_CORE)
+# define ck_warner(a,...) Perl_ck_warner(aTHX_ a,__VA_ARGS__)
+# define ck_warner_d(a,...) Perl_ck_warner_d(aTHX_ a,__VA_ARGS__)
+# define croak(...) Perl_croak(aTHX_ __VA_ARGS__)
+# define deb(...) Perl_deb(aTHX_ __VA_ARGS__)
+# define die(...) Perl_die(aTHX_ __VA_ARGS__)
+# define dump_indent(a,b,...) Perl_dump_indent(aTHX_ a,b,__VA_ARGS__)
+# define form(...) Perl_form(aTHX_ __VA_ARGS__)
+# define load_module(a,b,...) Perl_load_module(aTHX_ a,b,__VA_ARGS__)
+# define mess(...) Perl_mess(aTHX_ __VA_ARGS__)
+# define newSVpvf(...) Perl_newSVpvf(aTHX_ __VA_ARGS__)
+# define sv_catpvf(a,...) Perl_sv_catpvf(aTHX_ a,__VA_ARGS__)
+# define sv_catpvf_mg(a,...) Perl_sv_catpvf_mg(aTHX_ a,__VA_ARGS__)
+# define sv_setpvf(a,...) Perl_sv_setpvf(aTHX_ a,__VA_ARGS__)
+# define sv_setpvf_mg(a,...) Perl_sv_setpvf_mg(aTHX_ a,__VA_ARGS__)
+# define warn(...) Perl_warn(aTHX_ __VA_ARGS__)
+# define warner(a,...) Perl_warner(aTHX_ a,__VA_ARGS__)
+# endif /* !defined(MULTIPLICITY) || defined(PERL_CORE) */
+# if defined(MYMALLOC)
+# define dump_mstats(a) Perl_dump_mstats(aTHX_ a)
+# define get_mstats(a,b,c) Perl_get_mstats(aTHX_ a,b,c)
+# if defined(PERL_CORE)
+# define malloc_good_size Perl_malloc_good_size
+# define malloced_size Perl_malloced_size
+# endif
+# endif
+# if !defined(NO_MATHOMS)
+# define sv_nolocking(a) Perl_sv_nolocking(aTHX_ a)
+# define sv_nounlocking(a) Perl_sv_nounlocking(aTHX_ a)
+# define utf8_to_uvchr(a,b) Perl_utf8_to_uvchr(aTHX_ a,b)
+# define utf8_to_uvuni(a,b) Perl_utf8_to_uvuni(aTHX_ a,b)
+# define utf8n_to_uvuni(a,b,c,d) Perl_utf8n_to_uvuni(aTHX_ a,b,c,d)
+# endif
+# if defined(PERL_CORE)
+# define PerlLIO_dup2_cloexec(a,b) Perl_PerlLIO_dup2_cloexec(aTHX_ a,b)
+# define PerlLIO_dup_cloexec(a) Perl_PerlLIO_dup_cloexec(aTHX_ a)
+# define PerlLIO_open3_cloexec(a,b,c) Perl_PerlLIO_open3_cloexec(aTHX_ a,b,c)
+# define PerlLIO_open_cloexec(a,b) Perl_PerlLIO_open_cloexec(aTHX_ a,b)
+# define Slab_Alloc(a) Perl_Slab_Alloc(aTHX_ a)
+# define Slab_Free(a) Perl_Slab_Free(aTHX_ a)
+# define _warn_problematic_locale Perl__warn_problematic_locale
+# define abort_execution(a,b) Perl_abort_execution(aTHX_ a,b)
+# define alloc_LOGOP(a,b,c) Perl_alloc_LOGOP(aTHX_ a,b,c)
+# define allocmy(a,b,c) Perl_allocmy(aTHX_ a,b,c)
+# define amagic_applies(a,b,c) Perl_amagic_applies(aTHX_ a,b,c)
+# define amagic_is_enabled(a) Perl_amagic_is_enabled(aTHX_ a)
+# define apply(a,b,c) Perl_apply(aTHX_ a,b,c)
+# define av_extend_guts(a,b,c,d,e) Perl_av_extend_guts(aTHX_ a,b,c,d,e)
+# define av_nonelem(a,b) Perl_av_nonelem(aTHX_ a,b)
+# define bind_match(a,b,c) Perl_bind_match(aTHX_ a,b,c)
+# define boot_core_PerlIO() Perl_boot_core_PerlIO(aTHX)
+# define boot_core_UNIVERSAL() Perl_boot_core_UNIVERSAL(aTHX)
+# define boot_core_builtin() Perl_boot_core_builtin(aTHX)
+# define boot_core_mro() Perl_boot_core_mro(aTHX)
+# define build_infix_plugin(a,b,c) Perl_build_infix_plugin(aTHX_ a,b,c)
+# define cando(a,b,c) Perl_cando(aTHX_ a,b,c)
+# define check_utf8_print(a,b) Perl_check_utf8_print(aTHX_ a,b)
+# define closest_cop(a,b,c,d) Perl_closest_cop(aTHX_ a,b,c,d)
+# define cmpchain_extend(a,b,c) Perl_cmpchain_extend(aTHX_ a,b,c)
+# define cmpchain_finish(a) Perl_cmpchain_finish(aTHX_ a)
+# define cmpchain_start(a,b,c) Perl_cmpchain_start(aTHX_ a,b,c)
+# define core_prototype(a,b,c,d) Perl_core_prototype(aTHX_ a,b,c,d)
+# define coresub_op(a,b,c) Perl_coresub_op(aTHX_ a,b,c)
+# define create_eval_scope(a,b) Perl_create_eval_scope(aTHX_ a,b)
+# define croak_caller Perl_croak_caller
+# define croak_no_mem Perl_croak_no_mem
+# define croak_popstack Perl_croak_popstack
+# define custom_op_get_field(a,b) Perl_custom_op_get_field(aTHX_ a,b)
+# define cv_clone_into(a,b) Perl_cv_clone_into(aTHX_ a,b)
+# define cv_const_sv_or_av Perl_cv_const_sv_or_av
+# define cv_forget_slab(a) Perl_cv_forget_slab(aTHX_ a)
+# define cv_undef_flags(a,b) Perl_cv_undef_flags(aTHX_ a,b)
+# define cvgv_set(a,b) Perl_cvgv_set(aTHX_ a,b)
+# define cvstash_set(a,b) Perl_cvstash_set(aTHX_ a,b)
+# define deb_stack_all() Perl_deb_stack_all(aTHX)
+# define debug_hash_seed(a) Perl_debug_hash_seed(aTHX_ a)
+# define defelem_target(a,b) Perl_defelem_target(aTHX_ a,b)
+# define delete_eval_scope() Perl_delete_eval_scope(aTHX)
+# define die_unwind(a) Perl_die_unwind(aTHX_ a)
+# define do_aexec5(a,b,c,d,e) Perl_do_aexec5(aTHX_ a,b,c,d,e)
+# define do_dump_pad(a,b,c,d) Perl_do_dump_pad(aTHX_ a,b,c,d)
+# define do_eof(a) Perl_do_eof(aTHX_ a)
+# define do_ncmp(a,b) Perl_do_ncmp(aTHX_ a,b)
+# define do_open6(a,b,c,d,e,f) Perl_do_open6(aTHX_ a,b,c,d,e,f)
+# define do_open_raw(a,b,c,d,e,f) Perl_do_open_raw(aTHX_ a,b,c,d,e,f)
+# define do_print(a,b) Perl_do_print(aTHX_ a,b)
+# define do_readline() Perl_do_readline(aTHX)
+# define do_seek(a,b,c) Perl_do_seek(aTHX_ a,b,c)
+# define do_sysseek(a,b,c) Perl_do_sysseek(aTHX_ a,b,c)
+# define do_tell(a) Perl_do_tell(aTHX_ a)
+# define do_trans(a) Perl_do_trans(aTHX_ a)
+# define do_vecget(a,b,c) Perl_do_vecget(aTHX_ a,b,c)
+# define do_vecset(a) Perl_do_vecset(aTHX_ a)
+# define do_vop(a,b,c,d) Perl_do_vop(aTHX_ a,b,c,d)
+# define dofile(a,b) Perl_dofile(aTHX_ a,b)
+# define dump_all_perl(a) Perl_dump_all_perl(aTHX_ a)
+# define dump_packsubs_perl(a,b) Perl_dump_packsubs_perl(aTHX_ a,b)
+# define dump_sub_perl(a,b) Perl_dump_sub_perl(aTHX_ a,b)
+# define find_lexical_cv(a) Perl_find_lexical_cv(aTHX_ a)
+# define find_runcv_where(a,b,c) Perl_find_runcv_where(aTHX_ a,b,c)
+# define find_script(a,b,c,d) Perl_find_script(aTHX_ a,b,c,d)
+# define force_locale_unlock Perl_force_locale_unlock
+# define free_tied_hv_pool() Perl_free_tied_hv_pool(aTHX)
+# define get_extended_os_errno Perl_get_extended_os_errno
+# define get_hash_seed(a) Perl_get_hash_seed(aTHX_ a)
+# define get_no_modify() Perl_get_no_modify(aTHX)
+# define get_opargs() Perl_get_opargs(aTHX)
+# define gv_override(a,b) Perl_gv_override(aTHX_ a,b)
+# define gv_setref(a,b) Perl_gv_setref(aTHX_ a,b)
+# define gv_try_downgrade(a) Perl_gv_try_downgrade(aTHX_ a)
+# define hv_ename_add(a,b,c,d) Perl_hv_ename_add(aTHX_ a,b,c,d)
+# define hv_ename_delete(a,b,c,d) Perl_hv_ename_delete(aTHX_ a,b,c,d)
+# define hv_pushkv(a,b) Perl_hv_pushkv(aTHX_ a,b)
+# define init_argv_symbols(a,b) Perl_init_argv_symbols(aTHX_ a,b)
+# define init_constants() Perl_init_constants(aTHX)
+# define init_debugger() Perl_init_debugger(aTHX)
+# define init_named_cv(a,b) Perl_init_named_cv(aTHX_ a,b)
+# define init_uniprops() Perl_init_uniprops(aTHX)
+# define invert(a) Perl_invert(aTHX_ a)
+# define invmap_dump(a,b) Perl_invmap_dump(aTHX_ a,b)
+# define io_close(a,b,c,d) Perl_io_close(aTHX_ a,b,c,d)
+# define isinfnansv(a) Perl_isinfnansv(aTHX_ a)
+# define jmaybe(a) Perl_jmaybe(aTHX_ a)
+# define keyword(a,b,c) Perl_keyword(aTHX_ a,b,c)
+# define list(a) Perl_list(aTHX_ a)
+# define localize(a,b) Perl_localize(aTHX_ a,b)
+# define magic_clear_all_env(a,b) Perl_magic_clear_all_env(aTHX_ a,b)
+# define magic_cleararylen_p(a,b) Perl_magic_cleararylen_p(aTHX_ a,b)
+# define magic_clearenv(a,b) Perl_magic_clearenv(aTHX_ a,b)
+# define magic_clearhint(a,b) Perl_magic_clearhint(aTHX_ a,b)
+# define magic_clearhints(a,b) Perl_magic_clearhints(aTHX_ a,b)
+# define magic_clearhook(a,b) Perl_magic_clearhook(aTHX_ a,b)
+# define magic_clearhookall(a,b) Perl_magic_clearhookall(aTHX_ a,b)
+# define magic_clearisa(a,b) Perl_magic_clearisa(aTHX_ a,b)
+# define magic_clearpack(a,b) Perl_magic_clearpack(aTHX_ a,b)
+# define magic_clearsig(a,b) Perl_magic_clearsig(aTHX_ a,b)
+# define magic_copycallchecker(a,b,c,d,e) Perl_magic_copycallchecker(aTHX_ a,b,c,d,e)
+# define magic_existspack(a,b) Perl_magic_existspack(aTHX_ a,b)
+# define magic_freearylen_p(a,b) Perl_magic_freearylen_p(aTHX_ a,b)
+# define magic_freedestruct(a,b) Perl_magic_freedestruct(aTHX_ a,b)
+# define magic_freemglob(a,b) Perl_magic_freemglob(aTHX_ a,b)
+# define magic_freeovrld(a,b) Perl_magic_freeovrld(aTHX_ a,b)
+# define magic_freeutf8(a,b) Perl_magic_freeutf8(aTHX_ a,b)
+# define magic_get(a,b) Perl_magic_get(aTHX_ a,b)
+# define magic_getarylen(a,b) Perl_magic_getarylen(aTHX_ a,b)
+# define magic_getdebugvar(a,b) Perl_magic_getdebugvar(aTHX_ a,b)
+# define magic_getdefelem(a,b) Perl_magic_getdefelem(aTHX_ a,b)
+# define magic_getnkeys(a,b) Perl_magic_getnkeys(aTHX_ a,b)
+# define magic_getpack(a,b) Perl_magic_getpack(aTHX_ a,b)
+# define magic_getpos(a,b) Perl_magic_getpos(aTHX_ a,b)
+# define magic_getsig(a,b) Perl_magic_getsig(aTHX_ a,b)
+# define magic_getsubstr(a,b) Perl_magic_getsubstr(aTHX_ a,b)
+# define magic_gettaint(a,b) Perl_magic_gettaint(aTHX_ a,b)
+# define magic_getuvar(a,b) Perl_magic_getuvar(aTHX_ a,b)
+# define magic_getvec(a,b) Perl_magic_getvec(aTHX_ a,b)
+# define magic_killbackrefs(a,b) Perl_magic_killbackrefs(aTHX_ a,b)
+# define magic_nextpack(a,b,c) Perl_magic_nextpack(aTHX_ a,b,c)
+# define magic_regdata_cnt(a,b) Perl_magic_regdata_cnt(aTHX_ a,b)
+# define magic_regdatum_get(a,b) Perl_magic_regdatum_get(aTHX_ a,b)
+# define magic_scalarpack(a,b) Perl_magic_scalarpack(aTHX_ a,b)
+# define magic_set(a,b) Perl_magic_set(aTHX_ a,b)
+# define magic_set_all_env(a,b) Perl_magic_set_all_env(aTHX_ a,b)
+# define magic_setarylen(a,b) Perl_magic_setarylen(aTHX_ a,b)
+# define magic_setdbline(a,b) Perl_magic_setdbline(aTHX_ a,b)
+# define magic_setdebugvar(a,b) Perl_magic_setdebugvar(aTHX_ a,b)
+# define magic_setdefelem(a,b) Perl_magic_setdefelem(aTHX_ a,b)
+# define magic_setenv(a,b) Perl_magic_setenv(aTHX_ a,b)
+# define magic_sethint(a,b) Perl_magic_sethint(aTHX_ a,b)
+# define magic_sethook(a,b) Perl_magic_sethook(aTHX_ a,b)
+# define magic_sethookall(a,b) Perl_magic_sethookall(aTHX_ a,b)
+# define magic_setisa(a,b) Perl_magic_setisa(aTHX_ a,b)
+# define magic_setlvref(a,b) Perl_magic_setlvref(aTHX_ a,b)
+# define magic_setmglob(a,b) Perl_magic_setmglob(aTHX_ a,b)
+# define magic_setnkeys(a,b) Perl_magic_setnkeys(aTHX_ a,b)
+# define magic_setnonelem(a,b) Perl_magic_setnonelem(aTHX_ a,b)
+# define magic_setpack(a,b) Perl_magic_setpack(aTHX_ a,b)
+# define magic_setpos(a,b) Perl_magic_setpos(aTHX_ a,b)
+# define magic_setregexp(a,b) Perl_magic_setregexp(aTHX_ a,b)
+# define magic_setsig(a,b) Perl_magic_setsig(aTHX_ a,b)
+# define magic_setsigall(a,b) Perl_magic_setsigall(aTHX_ a,b)
+# define magic_setsubstr(a,b) Perl_magic_setsubstr(aTHX_ a,b)
+# define magic_settaint(a,b) Perl_magic_settaint(aTHX_ a,b)
+# define magic_setutf8(a,b) Perl_magic_setutf8(aTHX_ a,b)
+# define magic_setuvar(a,b) Perl_magic_setuvar(aTHX_ a,b)
+# define magic_setvec(a,b) Perl_magic_setvec(aTHX_ a,b)
+# define magic_sizepack(a,b) Perl_magic_sizepack(aTHX_ a,b)
+# define magic_wipepack(a,b) Perl_magic_wipepack(aTHX_ a,b)
+# define mg_localize(a,b,c) Perl_mg_localize(aTHX_ a,b,c)
+# define mode_from_discipline(a,b) Perl_mode_from_discipline(aTHX_ a,b)
+# define mro_isa_changed_in(a) Perl_mro_isa_changed_in(aTHX_ a)
+# define mro_package_moved(a,b,c,d) Perl_mro_package_moved(aTHX_ a,b,c,d)
+# define my_attrs(a,b) Perl_my_attrs(aTHX_ a,b)
+# define my_clearenv() Perl_my_clearenv(aTHX)
+# define my_lstat_flags(a) Perl_my_lstat_flags(aTHX_ a)
+# define my_stat_flags(a) Perl_my_stat_flags(aTHX_ a)
+# define my_strerror(a,b) Perl_my_strerror(aTHX_ a,b)
+# define my_unexec() Perl_my_unexec(aTHX)
+# define newATTRSUB_x(a,b,c,d,e,f) Perl_newATTRSUB_x(aTHX_ a,b,c,d,e,f)
+# define newSTUB(a,b) Perl_newSTUB(aTHX_ a,b)
+# define newSVavdefelem(a,b,c) Perl_newSVavdefelem(aTHX_ a,b,c)
+# define newXS_deffile(a,b) Perl_newXS_deffile(aTHX_ a,b)
+# define newXS_len_flags(a,b,c,d,e,f,g) Perl_newXS_len_flags(aTHX_ a,b,c,d,e,f,g)
+# define nextargv(a,b) Perl_nextargv(aTHX_ a,b)
+# define no_bareword_filehandle(a) Perl_no_bareword_filehandle(aTHX_ a)
+# define noperl_die Perl_noperl_die
+# define notify_parser_that_changed_to_utf8() Perl_notify_parser_that_changed_to_utf8(aTHX)
+# define oopsAV(a) Perl_oopsAV(aTHX_ a)
+# define oopsHV(a) Perl_oopsHV(aTHX_ a)
+# define op_unscope(a) Perl_op_unscope(aTHX_ a)
+# define package(a) Perl_package(aTHX_ a)
+# define package_version(a) Perl_package_version(aTHX_ a)
+# define pad_add_weakref(a) Perl_pad_add_weakref(aTHX_ a)
+# define pad_block_start(a) Perl_pad_block_start(aTHX_ a)
+# define pad_fixup_inner_anons(a,b,c) Perl_pad_fixup_inner_anons(aTHX_ a,b,c)
+# define pad_free(a) Perl_pad_free(aTHX_ a)
+# define pad_leavemy() Perl_pad_leavemy(aTHX)
+# define pad_push(a,b) Perl_pad_push(aTHX_ a,b)
+# define pad_swipe(a,b) Perl_pad_swipe(aTHX_ a,b)
+# define padlist_store(a,b,c) Perl_padlist_store(aTHX_ a,b,c)
+# define parse_unicode_opts(a) Perl_parse_unicode_opts(aTHX_ a)
+# define parser_free(a) Perl_parser_free(aTHX_ a)
+# define peep(a) Perl_peep(aTHX_ a)
+# define pmruntime(a,b,c,d,e) Perl_pmruntime(aTHX_ a,b,c,d,e)
+# define re_op_compile(a,b,c,d,e,f,g,h) Perl_re_op_compile(aTHX_ a,b,c,d,e,f,g,h)
+# define refcounted_he_chain_2hv(a,b) Perl_refcounted_he_chain_2hv(aTHX_ a,b)
+# define refcounted_he_fetch_pv(a,b,c,d) Perl_refcounted_he_fetch_pv(aTHX_ a,b,c,d)
+# define refcounted_he_fetch_pvn(a,b,c,d,e) Perl_refcounted_he_fetch_pvn(aTHX_ a,b,c,d,e)
+# define refcounted_he_fetch_sv(a,b,c,d) Perl_refcounted_he_fetch_sv(aTHX_ a,b,c,d)
+# define refcounted_he_free(a) Perl_refcounted_he_free(aTHX_ a)
+# define refcounted_he_inc(a) Perl_refcounted_he_inc(aTHX_ a)
+# define refcounted_he_new_pv(a,b,c,d,e) Perl_refcounted_he_new_pv(aTHX_ a,b,c,d,e)
+# define refcounted_he_new_pvn(a,b,c,d,e,f) Perl_refcounted_he_new_pvn(aTHX_ a,b,c,d,e,f)
+# define refcounted_he_new_sv(a,b,c,d,e) Perl_refcounted_he_new_sv(aTHX_ a,b,c,d,e)
+# define report_evil_fh(a) Perl_report_evil_fh(aTHX_ a)
+# define report_wrongway_fh(a,b) Perl_report_wrongway_fh(aTHX_ a,b)
+# define rpeep(a) Perl_rpeep(aTHX_ a)
+# define rsignal_restore(a,b) Perl_rsignal_restore(aTHX_ a,b)
+# define rsignal_save(a,b,c) Perl_rsignal_save(aTHX_ a,b,c)
+# define rxres_save(a,b) Perl_rxres_save(aTHX_ a,b)
+# define save_strlen(a) Perl_save_strlen(aTHX_ a)
+# define sawparens(a) Perl_sawparens(aTHX_ a)
+# define scalar(a) Perl_scalar(aTHX_ a)
+# define scalarvoid(a) Perl_scalarvoid(aTHX_ a)
+# define set_caret_X() Perl_set_caret_X(aTHX)
+# define set_numeric_standard() Perl_set_numeric_standard(aTHX)
+# define set_numeric_underlying() Perl_set_numeric_underlying(aTHX)
+# define setfd_cloexec Perl_setfd_cloexec
+# define setfd_cloexec_for_nonsysfd(a) Perl_setfd_cloexec_for_nonsysfd(aTHX_ a)
+# define setfd_cloexec_or_inhexec_by_sysfdness(a) Perl_setfd_cloexec_or_inhexec_by_sysfdness(aTHX_ a)
+# define setfd_inhexec Perl_setfd_inhexec
+# define setfd_inhexec_for_sysfd(a) Perl_setfd_inhexec_for_sysfd(aTHX_ a)
+# define sighandler1 Perl_sighandler1
+# define sighandler3 Perl_sighandler3
+# define sub_crush_depth(a) Perl_sub_crush_depth(aTHX_ a)
+# define sv_2num(a) Perl_sv_2num(aTHX_ a)
+# define sv_clean_all() Perl_sv_clean_all(aTHX)
+# define sv_clean_objs() Perl_sv_clean_objs(aTHX)
+# define sv_del_backref(a,b) Perl_sv_del_backref(aTHX_ a,b)
+# define sv_free_arenas() Perl_sv_free_arenas(aTHX)
+# define sv_pvbyten_force_wrapper(a,b,c) Perl_sv_pvbyten_force_wrapper(aTHX_ a,b,c)
+# define sv_pvutf8n_force_wrapper(a,b,c) Perl_sv_pvutf8n_force_wrapper(aTHX_ a,b,c)
+# define sv_resetpvn(a,b,c) Perl_sv_resetpvn(aTHX_ a,b,c)
+# define sv_sethek(a,b) Perl_sv_sethek(aTHX_ a,b)
+# define tmps_grow_p(a) Perl_tmps_grow_p(aTHX_ a)
+# define utilize(a,b,c,d,e) Perl_utilize(aTHX_ a,b,c,d,e)
+# define vivify_ref(a,b) Perl_vivify_ref(aTHX_ a,b)
+# define wait4pid(a,b,c) Perl_wait4pid(aTHX_ a,b,c)
+# define watch(a) Perl_watch(aTHX_ a)
+# define write_to_stderr(a) Perl_write_to_stderr(aTHX_ a)
+# define xs_boot_epilog(a) Perl_xs_boot_epilog(aTHX_ a)
+# define yyerror(a) Perl_yyerror(aTHX_ a)
+# define yyerror_pv(a,b) Perl_yyerror_pv(aTHX_ a,b)
+# define yyerror_pvn(a,b,c) Perl_yyerror_pvn(aTHX_ a,b,c)
+# define yyparse(a) Perl_yyparse(aTHX_ a)
+# define yyquit() Perl_yyquit(aTHX)
+# define yyunlex() Perl_yyunlex(aTHX)
+# define opslab_force_free(a) Perl_opslab_force_free(aTHX_ a)
+# define opslab_free(a) Perl_opslab_free(aTHX_ a)
+# define opslab_free_nopad(a) Perl_opslab_free_nopad(aTHX_ a)
+# define parser_free_nexttoke_ops(a,b) Perl_parser_free_nexttoke_ops(aTHX_ a,b)
+# define should_warn_nl S_should_warn_nl
+# if defined(DEBUGGING)
+# define get_debug_opts(a,b) Perl_get_debug_opts(aTHX_ a,b)
+# define set_padlist Perl_set_padlist
+# endif
+# if defined(DEBUG_LEAKING_SCALARS_FORK_DUMP)
+# define dump_sv_child(a) Perl_dump_sv_child(aTHX_ a)
+# endif
+# if !defined(HAS_GETENV_LEN)
+# define getenv_len(a,b) Perl_getenv_len(aTHX_ a,b)
+# endif
+# if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
+# define do_ipcctl(a,b,c) Perl_do_ipcctl(aTHX_ a,b,c)
+# define do_ipcget(a,b,c) Perl_do_ipcget(aTHX_ a,b,c)
+# define do_msgrcv(a,b) Perl_do_msgrcv(aTHX_ a,b)
+# define do_msgsnd(a,b) Perl_do_msgsnd(aTHX_ a,b)
+# define do_semop(a,b) Perl_do_semop(aTHX_ a,b)
+# define do_shmio(a,b,c) Perl_do_shmio(aTHX_ a,b,c)
+# endif
+# if defined(HAS_PIPE)
+# define PerlProc_pipe_cloexec(a) Perl_PerlProc_pipe_cloexec(aTHX_ a)
+# endif
+# if !defined(HAS_RENAME)
+# define same_dirent(a,b) Perl_same_dirent(aTHX_ a,b)
+# endif
+# if defined(HAS_SOCKET)
+# define PerlSock_accept_cloexec(a,b,c) Perl_PerlSock_accept_cloexec(aTHX_ a,b,c)
+# define PerlSock_socket_cloexec(a,b,c) Perl_PerlSock_socket_cloexec(aTHX_ a,b,c)
+# endif
+# if defined(HAS_SOCKETPAIR) || \
+ ( defined(AF_INET) && defined(HAS_SOCKET) && defined(PF_INET) && \
+ defined(SOCK_DGRAM) )
+# define PerlSock_socketpair_cloexec(a,b,c,d) Perl_PerlSock_socketpair_cloexec(aTHX_ a,b,c,d)
+# endif
+# if defined(_MSC_VER)
+# define magic_regdatum_set(a,b) Perl_magic_regdatum_set(aTHX_ a,b)
+# else
+# define magic_regdatum_set(a,b) Perl_magic_regdatum_set(aTHX_ a,b)
+# endif
+# if !defined(MULTIPLICITY) || defined(PERL_CORE)
+# define tied_method(a,b,c,d,e,...) Perl_tied_method(aTHX_ a,b,c,d,e,__VA_ARGS__)
+# if defined(PERL_IN_REGCOMP_C)
+# define re_croak(a,...) S_re_croak(aTHX_ a,__VA_ARGS__)
+# endif
+# endif
+# if defined(PERL_DEBUG_READONLY_COW)
+# define sv_buf_to_ro(a) Perl_sv_buf_to_ro(aTHX_ a)
+# endif
+# if defined(PERL_DEBUG_READONLY_OPS)
+# define Slab_to_ro(a) Perl_Slab_to_ro(aTHX_ a)
+# define Slab_to_rw(a) Perl_Slab_to_rw(aTHX_ a)
+# endif
+# if !defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION)
+# define do_exec(a) Perl_do_exec(aTHX_ a)
+# endif
+# if defined(PERL_IN_AV_C)
+# define get_aux_mg(a) S_get_aux_mg(aTHX_ a)
+# endif
+# if defined(PERL_IN_DEB_C)
+# define deb_stack_n(a,b,c,d,e) S_deb_stack_n(aTHX_ a,b,c,d,e)
+# endif
+# if defined(PERL_IN_DOIO_C)
+# define argvout_final(a,b,c) S_argvout_final(aTHX_ a,b,c)
+# define exec_failed(a,b,c) S_exec_failed(aTHX_ a,b,c)
+# define ingroup(a,b) S_ingroup(aTHX_ a,b)
+# define openn_cleanup(a,b,c,d,e,f,g,h,i,j,k,l,m) S_openn_cleanup(aTHX_ a,b,c,d,e,f,g,h,i,j,k,l,m)
+# define openn_setup(a,b,c,d,e,f) S_openn_setup(aTHX_ a,b,c,d,e,f)
+# endif
+# if defined(PERL_IN_DOOP_C)
+# define do_trans_complex(a,b) S_do_trans_complex(aTHX_ a,b)
+# define do_trans_count(a,b) S_do_trans_count(aTHX_ a,b)
+# define do_trans_count_invmap(a,b) S_do_trans_count_invmap(aTHX_ a,b)
+# define do_trans_invmap(a,b) S_do_trans_invmap(aTHX_ a,b)
+# define do_trans_simple(a,b) S_do_trans_simple(aTHX_ a,b)
+# endif
+# if defined(PERL_IN_DUMP_C)
+# define deb_curcv(a) S_deb_curcv(aTHX_ a)
+# define debprof(a) S_debprof(aTHX_ a)
+# define pm_description(a) S_pm_description(aTHX_ a)
+# define sequence_num(a) S_sequence_num(aTHX_ a)
+# endif
+# if defined(PERL_IN_GLOBALS_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_PEEP_C)
+# define ck_anoncode(a) Perl_ck_anoncode(aTHX_ a)
+# define ck_backtick(a) Perl_ck_backtick(aTHX_ a)
+# define ck_bitop(a) Perl_ck_bitop(aTHX_ a)
+# define ck_cmp(a) Perl_ck_cmp(aTHX_ a)
+# define ck_concat(a) Perl_ck_concat(aTHX_ a)
+# define ck_defined(a) Perl_ck_defined(aTHX_ a)
+# define ck_delete(a) Perl_ck_delete(aTHX_ a)
+# define ck_each(a) Perl_ck_each(aTHX_ a)
+# define ck_eof(a) Perl_ck_eof(aTHX_ a)
+# define ck_eval(a) Perl_ck_eval(aTHX_ a)
+# define ck_exec(a) Perl_ck_exec(aTHX_ a)
+# define ck_exists(a) Perl_ck_exists(aTHX_ a)
+# define ck_ftst(a) Perl_ck_ftst(aTHX_ a)
+# define ck_fun(a) Perl_ck_fun(aTHX_ a)
+# define ck_glob(a) Perl_ck_glob(aTHX_ a)
+# define ck_grep(a) Perl_ck_grep(aTHX_ a)
+# define ck_helemexistsor(a) Perl_ck_helemexistsor(aTHX_ a)
+# define ck_index(a) Perl_ck_index(aTHX_ a)
+# define ck_isa(a) Perl_ck_isa(aTHX_ a)
+# define ck_join(a) Perl_ck_join(aTHX_ a)
+# define ck_length(a) Perl_ck_length(aTHX_ a)
+# define ck_lfun(a) Perl_ck_lfun(aTHX_ a)
+# define ck_listiob(a) Perl_ck_listiob(aTHX_ a)
+# define ck_match(a) Perl_ck_match(aTHX_ a)
+# define ck_method(a) Perl_ck_method(aTHX_ a)
+# define ck_null(a) Perl_ck_null(aTHX_ a)
+# define ck_open(a) Perl_ck_open(aTHX_ a)
+# define ck_prototype(a) Perl_ck_prototype(aTHX_ a)
+# define ck_readline(a) Perl_ck_readline(aTHX_ a)
+# define ck_refassign(a) Perl_ck_refassign(aTHX_ a)
+# define ck_repeat(a) Perl_ck_repeat(aTHX_ a)
+# define ck_require(a) Perl_ck_require(aTHX_ a)
+# define ck_return(a) Perl_ck_return(aTHX_ a)
+# define ck_rfun(a) Perl_ck_rfun(aTHX_ a)
+# define ck_rvconst(a) Perl_ck_rvconst(aTHX_ a)
+# define ck_sassign(a) Perl_ck_sassign(aTHX_ a)
+# define ck_select(a) Perl_ck_select(aTHX_ a)
+# define ck_shift(a) Perl_ck_shift(aTHX_ a)
+# define ck_smartmatch(a) Perl_ck_smartmatch(aTHX_ a)
+# define ck_sort(a) Perl_ck_sort(aTHX_ a)
+# define ck_spair(a) Perl_ck_spair(aTHX_ a)
+# define ck_split(a) Perl_ck_split(aTHX_ a)
+# define ck_stringify(a) Perl_ck_stringify(aTHX_ a)
+# define ck_subr(a) Perl_ck_subr(aTHX_ a)
+# define ck_substr(a) Perl_ck_substr(aTHX_ a)
+# define ck_svconst(a) Perl_ck_svconst(aTHX_ a)
+# define ck_tell(a) Perl_ck_tell(aTHX_ a)
+# define ck_trunc(a) Perl_ck_trunc(aTHX_ a)
+# define ck_trycatch(a) Perl_ck_trycatch(aTHX_ a)
+# endif /* defined(PERL_IN_GLOBALS_C) || defined(PERL_IN_OP_C) ||
+ defined(PERL_IN_PEEP_C) */
+# if defined(PERL_IN_GV_C)
+# define find_default_stash(a,b,c,d,e,f) S_find_default_stash(aTHX_ a,b,c,d,e,f)
+# define gv_fetchmeth_internal(a,b,c,d,e,f) S_gv_fetchmeth_internal(aTHX_ a,b,c,d,e,f)
+# define gv_init_svtype(a,b) S_gv_init_svtype(aTHX_ a,b)
+# define gv_is_in_main(a,b,c) S_gv_is_in_main(aTHX_ a,b,c)
+# define gv_magicalize(a,b,c,d,e) S_gv_magicalize(aTHX_ a,b,c,d,e)
+# define gv_magicalize_isa(a) S_gv_magicalize_isa(aTHX_ a)
+# define gv_stashpvn_internal(a,b,c) S_gv_stashpvn_internal(aTHX_ a,b,c)
+# define maybe_multimagic_gv(a,b,c) S_maybe_multimagic_gv(aTHX_ a,b,c)
+# define parse_gv_stash_name(a,b,c,d,e,f,g,h) S_parse_gv_stash_name(aTHX_ a,b,c,d,e,f,g,h)
+# define require_tie_mod(a,b,c,d,e) S_require_tie_mod(aTHX_ a,b,c,d,e)
+# endif /* defined(PERL_IN_GV_C) */
+# if defined(PERL_IN_HV_C)
+# define clear_placeholders(a,b) S_clear_placeholders(aTHX_ a,b)
+# define hsplit(a,b,c) S_hsplit(aTHX_ a,b,c)
+# define hv_auxinit(a) S_hv_auxinit(aTHX_ a)
+# define hv_delete_common(a,b,c,d,e,f,g) S_hv_delete_common(aTHX_ a,b,c,d,e,f,g)
+# define hv_free_ent_ret(a) S_hv_free_ent_ret(aTHX_ a)
+# define hv_free_entries(a) S_hv_free_entries(aTHX_ a)
+# define hv_magic_check S_hv_magic_check
+# define hv_notallowed(a,b,c,d) S_hv_notallowed(aTHX_ a,b,c,d)
+# define refcounted_he_value(a) S_refcounted_he_value(aTHX_ a)
+# define save_hek_flags S_save_hek_flags
+# define share_hek_flags(a,b,c,d) S_share_hek_flags(aTHX_ a,b,c,d)
+# define unshare_hek_or_pvn(a,b,c,d) S_unshare_hek_or_pvn(aTHX_ a,b,c,d)
+# if !defined(PURIFY)
+# define new_he() S_new_he(aTHX)
+# endif
+# endif /* defined(PERL_IN_HV_C) */
+# if defined(PERL_IN_LOCALE_C)
+# define get_locale_string_utf8ness_i(a,b,c,d) S_get_locale_string_utf8ness_i(aTHX_ a,b,c,d)
+# define is_locale_utf8(a) S_is_locale_utf8(aTHX_ a)
+# if defined(HAS_LOCALECONV)
+# define my_localeconv(a) S_my_localeconv(aTHX_ a)
+# define populate_hash_from_localeconv(a,b,c,d,e) S_populate_hash_from_localeconv(aTHX_ a,b,c,d,e)
+# endif
+# if defined(USE_LOCALE)
+# define get_category_index S_get_category_index
+# define get_category_index_nowarn S_get_category_index_nowarn
+# define mortalized_pv_copy(a) S_mortalized_pv_copy(aTHX_ a)
+# define new_LC_ALL(a,b) S_new_LC_ALL(aTHX_ a,b)
+# define save_to_buffer S_save_to_buffer
+# define setlocale_failure_panic_i(a,b,c,d,e) S_setlocale_failure_panic_i(aTHX_ a,b,c,d,e)
+# define stdize_locale(a,b,c,d,e) S_stdize_locale(aTHX_ a,b,c,d,e)
+# if defined(DEBUGGING)
+# define my_setlocale_debug_string_i(a,b,c,d) S_my_setlocale_debug_string_i(aTHX_ a,b,c,d)
+# endif
+# if defined(HAS_NL_LANGINFO) || defined(HAS_NL_LANGINFO_L)
+# define my_langinfo_i(a,b,c,d,e,f) S_my_langinfo_i(aTHX_ a,b,c,d,e,f)
+# else
+# define my_langinfo_i(a,b,c,d,e,f) S_my_langinfo_i(aTHX_ a,b,c,d,e,f)
+# endif
+# if defined(USE_LOCALE_COLLATE)
+# define new_collate(a,b) S_new_collate(aTHX_ a,b)
+# if defined(DEBUGGING)
+# define print_collxfrm_input_and_return(a,b,c,d,e) S_print_collxfrm_input_and_return(aTHX_ a,b,c,d,e)
+# endif
+# endif
+# if defined(USE_LOCALE_CTYPE)
+# define is_codeset_name_UTF8 S_is_codeset_name_UTF8
+# define new_ctype(a,b) S_new_ctype(aTHX_ a,b)
+# endif
+# if defined(USE_LOCALE_NUMERIC)
+# define new_numeric(a,b) S_new_numeric(aTHX_ a,b)
+# endif
+# if defined(USE_PERL_SWITCH_LOCALE_CONTEXT) || defined(DEBUGGING)
+# define get_LC_ALL_display() S_get_LC_ALL_display(aTHX)
+# endif
+# if defined(USE_POSIX_2008_LOCALE)
+# define emulate_setlocale_i(a,b,c,d) S_emulate_setlocale_i(aTHX_ a,b,c,d)
+# define my_querylocale_i(a) S_my_querylocale_i(aTHX_ a)
+# define setlocale_from_aggregate_LC_ALL(a,b) S_setlocale_from_aggregate_LC_ALL(aTHX_ a,b)
+# define use_curlocale_scratch() S_use_curlocale_scratch(aTHX)
+# if defined(USE_QUERYLOCALE)
+# define calculate_LC_ALL(a) S_calculate_LC_ALL(aTHX_ a)
+# else
+# define update_PL_curlocales_i(a,b,c) S_update_PL_curlocales_i(aTHX_ a,b,c)
+# endif
+# elif defined(USE_LOCALE_THREADS) && \
+ !defined(USE_THREAD_SAFE_LOCALE) && \
+ !defined(USE_THREAD_SAFE_LOCALE_EMULATION) /* &&
+ !defined(USE_POSIX_2008_LOCALE) */
+# define less_dicey_setlocale_r(a,b) S_less_dicey_setlocale_r(aTHX_ a,b)
+# define less_dicey_void_setlocale_i(a,b,c) S_less_dicey_void_setlocale_i(aTHX_ a,b,c)
+# if 0
+# define less_dicey_bool_setlocale_r(a,b) S_less_dicey_bool_setlocale_r(aTHX_ a,b)
+# endif
+# endif
+# if !( defined(USE_POSIX_2008_LOCALE) && defined(USE_QUERYLOCALE) ) && \
+ ( !defined(LC_ALL) || defined(USE_POSIX_2008_LOCALE) || \
+ defined(WIN32) )
+# define calculate_LC_ALL(a) S_calculate_LC_ALL(aTHX_ a)
+# endif
+# if defined(WIN32)
+# define Win_byte_string_to_wstring S_Win_byte_string_to_wstring
+# define Win_wstring_to_byte_string S_Win_wstring_to_byte_string
+# define win32_setlocale(a,b) S_win32_setlocale(aTHX_ a,b)
+# define wrap_wsetlocale(a,b) S_wrap_wsetlocale(aTHX_ a,b)
+# endif
+# if defined(WIN32) || \
+ ( defined(USE_POSIX_2008_LOCALE) && !defined(USE_QUERYLOCALE) )
+# define find_locale_from_environment(a) S_find_locale_from_environment(aTHX_ a)
+# endif
+# endif /* defined(USE_LOCALE) */
+# if defined(USE_POSIX_2008_LOCALE) || defined(DEBUGGING)
+# define get_displayable_string(a,b,c) S_get_displayable_string(aTHX_ a,b,c)
+# endif
+# endif /* defined(PERL_IN_LOCALE_C) */
+# if defined(PERL_IN_MALLOC_C)
+# define adjust_size_and_find_bucket S_adjust_size_and_find_bucket
+# endif
+# if defined(PERL_IN_MG_C)
+# define fixup_errno_string(a) S_fixup_errno_string(aTHX_ a)
+# define magic_methcall1(a,b,c,d,e,f) S_magic_methcall1(aTHX_ a,b,c,d,e,f)
+# define magic_methpack(a,b,c) S_magic_methpack(aTHX_ a,b,c)
+# define restore_magic(a) S_restore_magic(aTHX_ a)
+# define save_magic_flags(a,b,c) S_save_magic_flags(aTHX_ a,b,c)
+# define unwind_handler_stack(a) S_unwind_handler_stack(aTHX_ a)
+# endif
+# if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C)
+# define translate_substr_offsets Perl_translate_substr_offsets
+# endif
+# if defined(PERL_IN_MRO_C)
+# define mro_clean_isarev(a,b,c,d,e,f) S_mro_clean_isarev(aTHX_ a,b,c,d,e,f)
+# define mro_gather_and_rename(a,b,c,d,e) S_mro_gather_and_rename(aTHX_ a,b,c,d,e)
+# define mro_get_linear_isa_dfs(a,b) S_mro_get_linear_isa_dfs(aTHX_ a,b)
+# endif
+# if defined(PERL_IN_NUMERIC_C)
+# define output_non_portable(a) S_output_non_portable(aTHX_ a)
+# endif
+# if defined(PERL_IN_OP_C)
+# define apply_attrs(a,b,c) S_apply_attrs(aTHX_ a,b,c)
+# define apply_attrs_my(a,b,c,d) S_apply_attrs_my(aTHX_ a,b,c,d)
+# define assignment_type(a) S_assignment_type(aTHX_ a)
+# define bad_type_gv(a,b,c,d) S_bad_type_gv(aTHX_ a,b,c,d)
+# define bad_type_pv(a,b,c,d) S_bad_type_pv(aTHX_ a,b,c,d)
+# define clear_special_blocks(a,b,c) S_clear_special_blocks(aTHX_ a,b,c)
+# define cop_free(a) S_cop_free(aTHX_ a)
+# define dup_attrlist(a) S_dup_attrlist(aTHX_ a)
+# define find_and_forget_pmops(a) S_find_and_forget_pmops(aTHX_ a)
+# define fold_constants(a) S_fold_constants(aTHX_ a)
+# define force_list(a,b) S_force_list(aTHX_ a,b)
+# define forget_pmop(a) S_forget_pmop(aTHX_ a)
+# define gen_constant_list(a) S_gen_constant_list(aTHX_ a)
+# define inplace_aassign(a) S_inplace_aassign(aTHX_ a)
+# define is_handle_constructor S_is_handle_constructor
+# define listkids(a) S_listkids(aTHX_ a)
+# define looks_like_bool(a) S_looks_like_bool(aTHX_ a)
+# define modkids(a,b) S_modkids(aTHX_ a,b)
+# define move_proto_attr(a,b,c,d) S_move_proto_attr(aTHX_ a,b,c,d)
+# define my_kid(a,b,c) S_my_kid(aTHX_ a,b,c)
+# define newGIVWHENOP(a,b,c,d,e) S_newGIVWHENOP(aTHX_ a,b,c,d,e)
+# define newMETHOP_internal(a,b,c,d) S_newMETHOP_internal(aTHX_ a,b,c,d)
+# define new_logop(a,b,c,d) S_new_logop(aTHX_ a,b,c,d)
+# define no_fh_allowed(a) S_no_fh_allowed(aTHX_ a)
+# define op_integerize(a) S_op_integerize(aTHX_ a)
+# define op_std_init(a) S_op_std_init(aTHX_ a)
+# define pmtrans(a,b,c) S_pmtrans(aTHX_ a,b,c)
+# define process_special_blocks(a,b,c,d) S_process_special_blocks(aTHX_ a,b,c,d)
+# define ref_array_or_hash(a) S_ref_array_or_hash(aTHX_ a)
+# define refkids(a,b) S_refkids(aTHX_ a,b)
+# define scalar_mod_type S_scalar_mod_type
+# define scalarboolean(a) S_scalarboolean(aTHX_ a)
+# define scalarkids(a) S_scalarkids(aTHX_ a)
+# define search_const(a) S_search_const(aTHX_ a)
+# define simplify_sort(a) S_simplify_sort(aTHX_ a)
+# define too_few_arguments_pv(a,b,c) S_too_few_arguments_pv(aTHX_ a,b,c)
+# define too_many_arguments_pv(a,b,c) S_too_many_arguments_pv(aTHX_ a,b,c)
+# define voidnonfinal(a) S_voidnonfinal(aTHX_ a)
+# endif /* defined(PERL_IN_OP_C) */
+# if defined(PERL_IN_OP_C) || defined(PERL_IN_PAD_C)
+# define PadnameIN_SCOPE S_PadnameIN_SCOPE
+# endif
+# if defined(PERL_IN_OP_C) || defined(PERL_IN_PEEP_C)
+# define check_hash_fields_and_hekify(a,b,c) Perl_check_hash_fields_and_hekify(aTHX_ a,b,c)
+# define no_bareword_allowed(a) Perl_no_bareword_allowed(aTHX_ a)
+# define op_prune_chain_head Perl_op_prune_chain_head
+# define op_varname(a) Perl_op_varname(aTHX_ a)
+# define warn_elem_scalar_context(a,b,c,d) Perl_warn_elem_scalar_context(aTHX_ a,b,c,d)
+# endif
+# if defined(PERL_IN_OP_C) || defined(PERL_IN_SV_C)
+# define report_redefined_cv(a,b,c) Perl_report_redefined_cv(aTHX_ a,b,c)
+# define varname(a,b,c,d,e,f) Perl_varname(aTHX_ a,b,c,d,e,f)
+# endif
+# if defined(PERL_IN_PAD_C)
+# define pad_alloc_name(a,b,c,d) S_pad_alloc_name(aTHX_ a,b,c,d)
+# define pad_check_dup(a,b,c) S_pad_check_dup(aTHX_ a,b,c)
+# define pad_findlex(a,b,c,d,e,f,g,h,i) S_pad_findlex(aTHX_ a,b,c,d,e,f,g,h,i)
+# define pad_reset() S_pad_reset(aTHX)
+# if defined(DEBUGGING)
+# define cv_dump(a,b) S_cv_dump(aTHX_ a,b)
+# endif
+# endif
+# if defined(PERL_IN_PEEP_C)
+# define finalize_op(a) S_finalize_op(aTHX_ a)
+# define optimize_op(a) S_optimize_op(aTHX_ a)
+# define traverse_op_tree(a,b) S_traverse_op_tree(aTHX_ a,b)
+# endif
+# if defined(PERL_IN_PERL_C)
+# define find_beginning(a,b) S_find_beginning(aTHX_ a,b)
+# define forbid_setid(a,b) S_forbid_setid(aTHX_ a,b)
+# define incpush(a,b,c) S_incpush(aTHX_ a,b,c)
+# define incpush_use_sep(a,b,c) S_incpush_use_sep(aTHX_ a,b,c)
+# define init_ids() S_init_ids(aTHX)
+# define init_interp() S_init_interp(aTHX)
+# define init_main_stash() S_init_main_stash(aTHX)
+# define init_perllib() S_init_perllib(aTHX)
+# define init_postdump_symbols(a,b,c) S_init_postdump_symbols(aTHX_ a,b,c)
+# define init_predump_symbols() S_init_predump_symbols(aTHX)
+# define mayberelocate(a,b,c) S_mayberelocate(aTHX_ a,b,c)
+# define minus_v() S_minus_v(aTHX)
+# define my_exit_jump() S_my_exit_jump(aTHX)
+# define nuke_stacks() S_nuke_stacks(aTHX)
+# define open_script(a,b,c) S_open_script(aTHX_ a,b,c)
+# define parse_body(a,b) S_parse_body(aTHX_ a,b)
+# define run_body(a) S_run_body(aTHX_ a)
+# define usage() S_usage(aTHX)
+# if !defined(PERL_IS_MINIPERL)
+# define incpush_if_exists(a,b,c) S_incpush_if_exists(aTHX_ a,b,c)
+# endif
+# endif /* defined(PERL_IN_PERL_C) */
+# if defined(PERL_IN_PP_C)
+# define do_chomp(a,b,c) S_do_chomp(aTHX_ a,b,c)
+# define do_delete_local() S_do_delete_local(aTHX)
+# define refto(a) S_refto(aTHX_ a)
+# endif
+# if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C)
+# define lossless_NV_to_IV S_lossless_NV_to_IV
+# endif
+# if defined(PERL_IN_PP_C) || defined(PERL_IN_UTF8_C)
+# define _to_upper_title_latin1(a,b,c,d) Perl__to_upper_title_latin1(aTHX_ a,b,c,d)
+# endif
+# if defined(PERL_IN_PP_CTL_C)
+# define check_type_and_open(a) S_check_type_and_open(aTHX_ a)
+# define destroy_matcher(a) S_destroy_matcher(aTHX_ a)
+# define do_smartmatch(a,b,c) S_do_smartmatch(aTHX_ a,b,c)
+# define docatch(a) S_docatch(aTHX_ a)
+# define doeval_compile(a,b,c,d) S_doeval_compile(aTHX_ a,b,c,d)
+# define dofindlabel(a,b,c,d,e,f) S_dofindlabel(aTHX_ a,b,c,d,e,f)
+# define doparseform(a) S_doparseform(aTHX_ a)
+# define dopoptoeval(a) S_dopoptoeval(aTHX_ a)
+# define dopoptogivenfor(a) S_dopoptogivenfor(aTHX_ a)
+# define dopoptolabel(a,b,c) S_dopoptolabel(aTHX_ a,b,c)
+# define dopoptoloop(a) S_dopoptoloop(aTHX_ a)
+# define dopoptosub_at(a,b) S_dopoptosub_at(aTHX_ a,b)
+# define dopoptowhen(a) S_dopoptowhen(aTHX_ a)
+# define make_matcher(a) S_make_matcher(aTHX_ a)
+# define matcher_matches_sv(a,b) S_matcher_matches_sv(aTHX_ a,b)
+# define num_overflow S_num_overflow
+# define path_is_searchable S_path_is_searchable
+# define run_user_filter(a,b,c) S_run_user_filter(aTHX_ a,b,c)
+# define rxres_free(a) S_rxres_free(aTHX_ a)
+# define rxres_restore(a,b) S_rxres_restore(aTHX_ a,b)
+# define save_lines(a,b) S_save_lines(aTHX_ a,b)
+# if !defined(PERL_DISABLE_PMC)
+# define doopen_pm(a) S_doopen_pm(aTHX_ a)
+# endif
+# endif /* defined(PERL_IN_PP_CTL_C) */
+# if defined(PERL_IN_PP_CTL_C) || defined(PERL_IN_UTIL_C)
+# define invoke_exception_hook(a,b) Perl_invoke_exception_hook(aTHX_ a,b)
+# endif
+# if defined(PERL_IN_PP_HOT_C)
+# define do_oddball(a,b) S_do_oddball(aTHX_ a,b)
+# define opmethod_stash(a) S_opmethod_stash(aTHX_ a)
+# define should_we_output_Debug_r(a) S_should_we_output_Debug_r(aTHX_ a)
+# endif
+# if defined(PERL_IN_PP_PACK_C)
+# define div128(a,b) S_div128(aTHX_ a,b)
+# define first_symbol S_first_symbol
+# define get_num(a,b) S_get_num(aTHX_ a,b)
+# define group_end(a,b,c) S_group_end(aTHX_ a,b,c)
+# define is_an_int(a,b) S_is_an_int(aTHX_ a,b)
+# define measure_struct(a) S_measure_struct(aTHX_ a)
+# define mul128(a,b) S_mul128(aTHX_ a,b)
+# define my_bytes_to_utf8 S_my_bytes_to_utf8
+# define need_utf8 S_need_utf8
+# define next_symbol(a) S_next_symbol(aTHX_ a)
+# define pack_rec(a,b,c,d) S_pack_rec(aTHX_ a,b,c,d)
+# define sv_exp_grow(a,b) S_sv_exp_grow(aTHX_ a,b)
+# define unpack_rec(a,b,c,d,e) S_unpack_rec(aTHX_ a,b,c,d,e)
+# endif /* defined(PERL_IN_PP_PACK_C) */
+# if defined(PERL_IN_PP_SORT_C)
+# define amagic_cmp(a,b) S_amagic_cmp(aTHX_ a,b)
+# define amagic_cmp_desc(a,b) S_amagic_cmp_desc(aTHX_ a,b)
+# define amagic_i_ncmp(a,b) S_amagic_i_ncmp(aTHX_ a,b)
+# define amagic_i_ncmp_desc(a,b) S_amagic_i_ncmp_desc(aTHX_ a,b)
+# define amagic_ncmp(a,b) S_amagic_ncmp(aTHX_ a,b)
+# define amagic_ncmp_desc(a,b) S_amagic_ncmp_desc(aTHX_ a,b)
+# define cmp_desc(a,b) S_cmp_desc(aTHX_ a,b)
+# define sortcv(a,b) S_sortcv(aTHX_ a,b)
+# define sortcv_stacked(a,b) S_sortcv_stacked(aTHX_ a,b)
+# define sortcv_xsub(a,b) S_sortcv_xsub(aTHX_ a,b)
+# define sortsv_flags_impl(a,b,c,d) S_sortsv_flags_impl(aTHX_ a,b,c,d)
+# define sv_i_ncmp(a,b) S_sv_i_ncmp(aTHX_ a,b)
+# define sv_i_ncmp_desc(a,b) S_sv_i_ncmp_desc(aTHX_ a,b)
+# define sv_ncmp(a,b) S_sv_ncmp(aTHX_ a,b)
+# define sv_ncmp_desc(a,b) S_sv_ncmp_desc(aTHX_ a,b)
+# if defined(USE_LOCALE_COLLATE)
+# define amagic_cmp_locale(a,b) S_amagic_cmp_locale(aTHX_ a,b)
+# define amagic_cmp_locale_desc(a,b) S_amagic_cmp_locale_desc(aTHX_ a,b)
+# define cmp_locale_desc(a,b) S_cmp_locale_desc(aTHX_ a,b)
+# endif
+# endif /* defined(PERL_IN_PP_SORT_C) */
+# if defined(PERL_IN_PP_SYS_C)
+# define doform(a,b,c) S_doform(aTHX_ a,b,c)
+# define space_join_names_mortal(a) S_space_join_names_mortal(aTHX_ a)
+# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
+# define dooneliner(a,b) S_dooneliner(aTHX_ a,b)
+# endif
+# endif
+# if defined(PERL_IN_REGCOMP_INVLIST_C) && !defined(PERL_EXT_RE_BUILD)
+# define initialize_invlist_guts(a,b) S_initialize_invlist_guts(aTHX_ a,b)
+# endif
+# if defined(PERL_IN_SCOPE_C)
+# define save_pushptri32ptr(a,b,c,d) S_save_pushptri32ptr(aTHX_ a,b,c,d)
+# define save_scalar_at(a,b) S_save_scalar_at(aTHX_ a,b)
+# endif
+# if defined(PERL_IN_TOKE_C)
+# define ao(a) S_ao(aTHX_ a)
+# define check_uni() S_check_uni(aTHX)
+# define checkcomma(a,b,c) S_checkcomma(aTHX_ a,b,c)
+# define filter_gets(a,b) S_filter_gets(aTHX_ a,b)
+# define find_in_my_stash(a,b) S_find_in_my_stash(aTHX_ a,b)
+# define force_ident(a,b) S_force_ident(aTHX_ a,b)
+# define force_ident_maybe_lex(a) S_force_ident_maybe_lex(aTHX_ a)
+# define force_next(a) S_force_next(aTHX_ a)
+# define force_strict_version(a) S_force_strict_version(aTHX_ a)
+# define force_version(a,b) S_force_version(aTHX_ a,b)
+# define force_word(a,b,c,d) S_force_word(aTHX_ a,b,c,d)
+# define get_and_check_backslash_N_name_wrapper(a,b) S_get_and_check_backslash_N_name_wrapper(aTHX_ a,b)
+# define incline(a,b) S_incline(aTHX_ a,b)
+# define intuit_method(a,b,c) S_intuit_method(aTHX_ a,b,c)
+# define intuit_more(a,b) S_intuit_more(aTHX_ a,b)
+# define lop(a,b,c) S_lop(aTHX_ a,b,c)
+# define missingterm(a,b) S_missingterm(aTHX_ a,b)
+# define no_op(a,b) S_no_op(aTHX_ a,b)
+# define parse_ident(a,b,c,d,e,f,g) S_parse_ident(aTHX_ a,b,c,d,e,f,g)
+# define pending_ident() S_pending_ident(aTHX)
+# define scan_const(a) S_scan_const(aTHX_ a)
+# define scan_formline(a) S_scan_formline(aTHX_ a)
+# define scan_heredoc(a) S_scan_heredoc(aTHX_ a)
+# define scan_ident(a,b,c,d) S_scan_ident(aTHX_ a,b,c,d)
+# define scan_inputsymbol(a) S_scan_inputsymbol(aTHX_ a)
+# define scan_pat(a,b) S_scan_pat(aTHX_ a,b)
+# define scan_subst(a) S_scan_subst(aTHX_ a)
+# define scan_trans(a) S_scan_trans(aTHX_ a)
+# define sublex_done() S_sublex_done(aTHX)
+# define sublex_push() S_sublex_push(aTHX)
+# define sublex_start() S_sublex_start(aTHX)
+# define swallow_bom(a) S_swallow_bom(aTHX_ a)
+# define tokenize_use(a,b) S_tokenize_use(aTHX_ a,b)
+# define tokeq(a) S_tokeq(aTHX_ a)
+# define update_debugger_info(a,b,c) S_update_debugger_info(aTHX_ a,b,c)
+# define yywarn(a,b) S_yywarn(aTHX_ a,b)
+# if defined(DEBUGGING)
+# define printbuf(a,b) S_printbuf(aTHX_ a,b)
+# define tokereport(a,b) S_tokereport(aTHX_ a,b)
+# endif
+# if defined(PERL_CR_FILTER)
+# define cr_textfilter(a,b,c) S_cr_textfilter(aTHX_ a,b,c)
+# define strip_return(a) S_strip_return(aTHX_ a)
+# endif
+# if !defined(PERL_NO_UTF16_FILTER)
+# define add_utf16_textfilter(a,b) S_add_utf16_textfilter(aTHX_ a,b)
+# define utf16_textfilter(a,b,c) S_utf16_textfilter(aTHX_ a,b,c)
+# endif
+# endif /* defined(PERL_IN_TOKE_C) */
+# if defined(PERL_IN_UNIVERSAL_C)
+# define isa_lookup(a,b,c,d,e) S_isa_lookup(aTHX_ a,b,c,d,e)
+# define sv_derived_from_svpvn(a,b,c,d,e) S_sv_derived_from_svpvn(aTHX_ a,b,c,d,e)
+# endif
+# if defined(PERL_IN_UTF8_C)
+# define _to_utf8_case(a,b,c,d,e,f,g,h,i) S__to_utf8_case(aTHX_ a,b,c,d,e,f,g,h,i)
+# define check_locale_boundary_crossing(a,b,c,d) S_check_locale_boundary_crossing(aTHX_ a,b,c,d)
+# define does_utf8_overflow S_does_utf8_overflow
+# define isFF_overlong S_isFF_overlong
+# define is_utf8_common(a,b,c) S_is_utf8_common(aTHX_ a,b,c)
+# define is_utf8_overlong S_is_utf8_overlong
+# define new_msg_hv(a,b,c) S_new_msg_hv(aTHX_ a,b,c)
+# define to_case_cp_list(a,b,c,d,e,f,g,h) S_to_case_cp_list(aTHX_ a,b,c,d,e,f,g,h)
+# define to_lower_latin1 S_to_lower_latin1
+# define turkic_fc(a,b,c,d) S_turkic_fc(aTHX_ a,b,c,d)
+# define turkic_lc(a,b,c,d) S_turkic_lc(aTHX_ a,b,c,d)
+# define turkic_uc(a,b,c,d) S_turkic_uc(aTHX_ a,b,c,d)
+# define unexpected_non_continuation_text(a,b,c,d) S_unexpected_non_continuation_text(aTHX_ a,b,c,d)
+# if 0
+# define warn_on_first_deprecated_use(a,b,c,d,e,f) S_warn_on_first_deprecated_use(aTHX_ a,b,c,d,e,f)
+# endif
+# endif /* defined(PERL_IN_UTF8_C) */
+# if defined(PERL_IN_UTIL_C)
+# define ckwarn_common(a) S_ckwarn_common(aTHX_ a)
+# define mess_alloc() S_mess_alloc(aTHX)
+# define ptr_hash S_ptr_hash
+# define with_queued_errors(a) S_with_queued_errors(aTHX_ a)
+# if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL)
+# define mem_log_common S_mem_log_common
+# endif
+# if defined(PERL_USES_PL_PIDSTATUS)
+# define pidgone(a,b) S_pidgone(aTHX_ a,b)
+# endif
+# endif /* defined(PERL_IN_UTIL_C) */
+# if defined(PERL_USE_3ARG_SIGHANDLER)
+# define sighandler Perl_sighandler
+# else
+# define sighandler Perl_sighandler
+# endif
+# if defined(USE_C_BACKTRACE)
+# define get_c_backtrace(a,b) Perl_get_c_backtrace(aTHX_ a,b)
+# endif
+# if defined(USE_ITHREADS)
+# define mro_meta_dup(a,b) Perl_mro_meta_dup(aTHX_ a,b)
+# define padlist_dup(a,b) Perl_padlist_dup(aTHX_ a,b)
+# define padname_dup(a,b) Perl_padname_dup(aTHX_ a,b)
+# define padnamelist_dup(a,b) Perl_padnamelist_dup(aTHX_ a,b)
+# if !defined(PERL_IMPLICIT_SYS)
+# define PerlEnv_putenv(a) S_PerlEnv_putenv(aTHX_ a)
+# endif
+# if defined(PERL_IN_OP_C) || defined(PERL_IN_PEEP_C)
+# define op_relocate_sv(a,b) Perl_op_relocate_sv(aTHX_ a,b)
+# endif
+# endif /* defined(USE_ITHREADS) */
+# if defined(USE_LOCALE_COLLATE)
+# define magic_freecollxfrm(a,b) Perl_magic_freecollxfrm(aTHX_ a,b)
+# define magic_setcollxfrm(a,b) Perl_magic_setcollxfrm(aTHX_ a,b)
+# endif
+# if defined(USE_PERLIO)
+# define PerlIO_restore_errno(a) Perl_PerlIO_restore_errno(aTHX_ a)
+# define PerlIO_save_errno(a) Perl_PerlIO_save_errno(aTHX_ a)
+# endif
+# if defined(USE_QUADMATH)
+# define quadmath_format_needed Perl_quadmath_format_needed
+# define quadmath_format_valid Perl_quadmath_format_valid
+# endif
+# if defined(WIN32)
+# define get_win32_message_utf8ness(a) Perl_get_win32_message_utf8ness(aTHX_ a)
+# else
+# define do_exec3(a,b,c) Perl_do_exec3(aTHX_ a,b,c)
+# endif
+# endif /* defined(PERL_CORE) */
+# if defined(PERL_CORE) || defined(PERL_EXT)
+# define _byte_dump_string(a,b,c) Perl__byte_dump_string(aTHX_ a,b,c)
+# define _inverse_folds(a,b,c) Perl__inverse_folds(aTHX_ a,b,c)
+# define append_utf8_from_native_byte Perl_append_utf8_from_native_byte
+# define av_reify(a) Perl_av_reify(aTHX_ a)
+# define cntrl_to_mnemonic Perl_cntrl_to_mnemonic
+# define current_re_engine() Perl_current_re_engine(aTHX)
+# define cv_ckproto_len_flags(a,b,c,d,e) Perl_cv_ckproto_len_flags(aTHX_ a,b,c,d,e)
+# define delimcpy_no_escape Perl_delimcpy_no_escape
+# define do_uniprop_match Perl_do_uniprop_match
+# define get_and_check_backslash_N_name(a,b,c,d) Perl_get_and_check_backslash_N_name(aTHX_ a,b,c,d)
+# define get_deprecated_property_msg Perl_get_deprecated_property_msg
+# define get_prop_definition(a) Perl_get_prop_definition(aTHX_ a)
+# define get_prop_values Perl_get_prop_values
+# define load_charnames(a,b,c,d) Perl_load_charnames(aTHX_ a,b,c,d)
+# define mbtowc_(a,b,c) Perl_mbtowc_(aTHX_ a,b,c)
+# define mg_find_mglob(a) Perl_mg_find_mglob(aTHX_ a)
+# define multiconcat_stringify(a) Perl_multiconcat_stringify(aTHX_ a)
+# define multideref_stringify(a,b) Perl_multideref_stringify(aTHX_ a,b)
+# define my_strftime8_temp(a,b,c,d,e,f,g,h,i,j,k) Perl_my_strftime8_temp(aTHX_ a,b,c,d,e,f,g,h,i,j,k)
+# define op_clear(a) Perl_op_clear(aTHX_ a)
+# define qerror(a) Perl_qerror(aTHX_ a)
+# define reg_named_buff(a,b,c,d) Perl_reg_named_buff(aTHX_ a,b,c,d)
+# define reg_named_buff_iter(a,b,c) Perl_reg_named_buff_iter(aTHX_ a,b,c)
+# define reg_numbered_buff_fetch(a,b,c) Perl_reg_numbered_buff_fetch(aTHX_ a,b,c)
+# define reg_numbered_buff_fetch_flags(a,b,c,d) Perl_reg_numbered_buff_fetch_flags(aTHX_ a,b,c,d)
+# define reg_numbered_buff_length(a,b,c) Perl_reg_numbered_buff_length(aTHX_ a,b,c)
+# define reg_numbered_buff_store(a,b,c) Perl_reg_numbered_buff_store(aTHX_ a,b,c)
+# define reg_qr_package(a) Perl_reg_qr_package(aTHX_ a)
+# define reg_temp_copy(a,b) Perl_reg_temp_copy(aTHX_ a,b)
+# define report_uninit(a) Perl_report_uninit(aTHX_ a)
+# define scan_str(a,b,c,d,e) Perl_scan_str(aTHX_ a,b,c,d,e)
+# define scan_word(a,b,c,d,e) Perl_scan_word(aTHX_ a,b,c,d,e)
+# define scan_word6(a,b,c,d,e,f) Perl_scan_word6(aTHX_ a,b,c,d,e,f)
+# define skipspace_flags(a,b) Perl_skipspace_flags(aTHX_ a,b)
+# define sv_magicext_mglob(a) Perl_sv_magicext_mglob(aTHX_ a)
+# define sv_only_taint_gmagic Perl_sv_only_taint_gmagic
+# define utf16_to_utf8_base(a,b,c,d,e,f) Perl_utf16_to_utf8_base(aTHX_ a,b,c,d,e,f)
+# define utf8_to_utf16_base(a,b,c,d,e,f) Perl_utf8_to_utf16_base(aTHX_ a,b,c,d,e,f)
+# define validate_proto(a,b,c,d) Perl_validate_proto(aTHX_ a,b,c,d)
+# define vivify_defelem(a) Perl_vivify_defelem(aTHX_ a)
+# define yylex() Perl_yylex(aTHX)
+# define isSCRIPT_RUN(a,b,c) Perl_isSCRIPT_RUN(aTHX_ a,b,c)
+# define is_utf8_non_invariant_string Perl_is_utf8_non_invariant_string
+# define sv_or_pv_pos_u2b(a,b,c,d) S_sv_or_pv_pos_u2b(aTHX_ a,b,c,d)
+# define variant_under_utf8_count S_variant_under_utf8_count
+# if !defined(HAS_MEMRCHR)
+# define my_memrchr S_my_memrchr
+# endif
+# if defined(PERL_ANY_COW)
+# define sv_setsv_cow(a,b) Perl_sv_setsv_cow(aTHX_ a,b)
+# endif
+# if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_ANY) || \
+ defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) || \
+ defined(PERL_IN_UTF8_C)
+# define _invlist_contains_cp S__invlist_contains_cp
+# define _invlist_len S__invlist_len
+# define _invlist_search Perl__invlist_search
+# define get_invlist_offset_addr S_get_invlist_offset_addr
+# define invlist_array S_invlist_array
+# define is_invlist S_is_invlist
+# endif
+# if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_REGCOMP_ANY)
+# define add_cp_to_invlist(a,b) S_add_cp_to_invlist(aTHX_ a,b)
+# define invlist_extend(a,b) S_invlist_extend(aTHX_ a,b)
+# define invlist_highest S_invlist_highest
+# define invlist_set_len(a,b,c) S_invlist_set_len(aTHX_ a,b,c)
+# endif
+# if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_UTF8_C)
+# define _add_range_to_invlist(a,b,c) Perl__add_range_to_invlist(aTHX_ a,b,c)
+# define _invlist_intersection_maybe_complement_2nd(a,b,c,d) Perl__invlist_intersection_maybe_complement_2nd(aTHX_ a,b,c,d)
+# define _invlist_invert(a) Perl__invlist_invert(aTHX_ a)
+# define _invlist_union_maybe_complement_2nd(a,b,c,d) Perl__invlist_union_maybe_complement_2nd(aTHX_ a,b,c,d)
+# define _new_invlist(a) Perl__new_invlist(aTHX_ a)
+# define _setup_canned_invlist(a,b,c) Perl__setup_canned_invlist(aTHX_ a,b,c)
+# endif
+# if defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) || \
+ defined(PERL_IN_TOKE_C)
+# define form_alien_digit_msg(a,b,c,d,e,f) Perl_form_alien_digit_msg(aTHX_ a,b,c,d,e,f)
+# define grok_bslash_c(a,b,c,d) Perl_grok_bslash_c(aTHX_ a,b,c,d)
+# define grok_bslash_o(a,b,c,d,e,f,g,h) Perl_grok_bslash_o(aTHX_ a,b,c,d,e,f,g,h)
+# define grok_bslash_x(a,b,c,d,e,f,g,h) Perl_grok_bslash_x(aTHX_ a,b,c,d,e,f,g,h)
+# endif
+# if defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) || \
+ defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C)
+# define form_cp_too_large_msg(a,b,c,d) Perl_form_cp_too_large_msg(aTHX_ a,b,c,d)
+# endif
+# if defined(PERL_IN_DUMP_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_REGCOMP_ANY)
+# define _invlist_dump(a,b,c,d) Perl__invlist_dump(aTHX_ a,b,c,d)
+# endif
+# if defined(PERL_IN_GV_C) || defined(PERL_IN_UNIVERSAL_C)
+# define gv_stashsvpvn_cached(a,b,c,d) Perl_gv_stashsvpvn_cached(aTHX_ a,b,c,d)
+# endif
+# if defined(PERL_IN_OP_C) || defined(PERL_IN_REGCOMP_ANY)
+# define get_invlist_iter_addr S_get_invlist_iter_addr
+# define invlist_iterfinish S_invlist_iterfinish
+# define invlist_iterinit S_invlist_iterinit
+# define invlist_iternext S_invlist_iternext
+# endif
+# if defined(PERL_IN_PERL_C) || defined(PERL_IN_REGCOMP_ANY) || \
+ defined(PERL_IN_UTF8_C)
+# define _invlistEQ(a,b,c) Perl__invlistEQ(aTHX_ a,b,c)
+# define _new_invlist_C_array(a) Perl__new_invlist_C_array(aTHX_ a)
+# endif
+# if defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_ANY) || \
+ defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C)
+# define get_regex_charset_name S_get_regex_charset_name
+# endif
+# if defined(PERL_IN_REGCOMP_ANY)
+# define add_above_Latin1_folds(a,b,c) Perl_add_above_Latin1_folds(aTHX_ a,b,c)
+# define construct_ahocorasick_from_trie(a,b,c) Perl_construct_ahocorasick_from_trie(aTHX_ a,b,c)
+# define get_ANYOFHbbm_contents(a) Perl_get_ANYOFHbbm_contents(aTHX_ a)
+# define get_ANYOFM_contents(a) Perl_get_ANYOFM_contents(aTHX_ a)
+# define invlist_contents(a,b) S_invlist_contents(aTHX_ a,b)
+# define invlist_highest_range_start S_invlist_highest_range_start
+# define invlist_is_iterating S_invlist_is_iterating
+# define invlist_lowest S_invlist_lowest
+# define is_ssc_worth_it Perl_is_ssc_worth_it
+# define join_exact(a,b,c,d,e,f,g) Perl_join_exact(aTHX_ a,b,c,d,e,f,g)
+# define make_trie(a,b,c,d,e,f,g,h) Perl_make_trie(aTHX_ a,b,c,d,e,f,g,h)
+# define populate_anyof_bitmap_from_invlist(a,b) Perl_populate_anyof_bitmap_from_invlist(aTHX_ a,b)
+# define reg_add_data Perl_reg_add_data
+# define scan_commit(a,b,c,d) Perl_scan_commit(aTHX_ a,b,c,d)
+# define set_ANYOF_arg(a,b,c,d,e) Perl_set_ANYOF_arg(aTHX_ a,b,c,d,e)
+# define ssc_finalize(a,b) Perl_ssc_finalize(aTHX_ a,b)
+# define ssc_init(a,b) Perl_ssc_init(aTHX_ a,b)
+# define study_chunk(a,b,c,d,e,f,g,h,i,j,k,l) Perl_study_chunk(aTHX_ a,b,c,d,e,f,g,h,i,j,k,l)
+# if defined(PERL_IN_REGCOMP_TRIE_C) && defined(DEBUGGING)
+# define dump_trie(a,b,c,d) S_dump_trie(aTHX_ a,b,c,d)
+# define dump_trie_interim_list(a,b,c,d,e) S_dump_trie_interim_list(aTHX_ a,b,c,d,e)
+# define dump_trie_interim_table(a,b,c,d,e) S_dump_trie_interim_table(aTHX_ a,b,c,d,e)
+# endif
+# endif /* defined(PERL_IN_REGCOMP_ANY) */
+# if defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_SV_C)
+# define invlist_clone(a,b) Perl_invlist_clone(aTHX_ a,b)
+# endif
+# if defined(PERL_IN_REGCOMP_C)
+# define add_multi_match(a,b,c) S_add_multi_match(aTHX_ a,b,c)
+# define change_engine_size(a,b) S_change_engine_size(aTHX_ a,b)
+# define compile_wildcard(a,b,c) S_compile_wildcard(aTHX_ a,b,c)
+# define compute_EXACTish S_compute_EXACTish
+# define edit_distance S_edit_distance
+# define execute_wildcard(a,b,c,d,e,f,g) S_execute_wildcard(aTHX_ a,b,c,d,e,f,g)
+# define find_first_differing_byte_pos S_find_first_differing_byte_pos
+# define get_quantifier_value(a,b,c) S_get_quantifier_value(aTHX_ a,b,c)
+# define grok_bslash_N(a,b,c,d,e,f,g) S_grok_bslash_N(aTHX_ a,b,c,d,e,f,g)
+# define handle_named_backref(a,b,c,d) S_handle_named_backref(aTHX_ a,b,c,d)
+# define handle_names_wildcard(a,b,c,d) S_handle_names_wildcard(aTHX_ a,b,c,d)
+# define handle_possible_posix(a,b,c,d,e) S_handle_possible_posix(aTHX_ a,b,c,d,e)
+# define handle_regex_sets(a,b,c,d) S_handle_regex_sets(aTHX_ a,b,c,d)
+# define handle_user_defined_property(a,b,c,d,e,f,g,h,i,j) S_handle_user_defined_property(aTHX_ a,b,c,d,e,f,g,h,i,j)
+# define nextchar(a) S_nextchar(aTHX_ a)
+# define optimize_regclass(a,b,c,d,e,f,g,h,i,j) S_optimize_regclass(aTHX_ a,b,c,d,e,f,g,h,i,j)
+# define output_posix_warnings(a,b) S_output_posix_warnings(aTHX_ a,b)
+# define parse_lparen_question_flags(a) S_parse_lparen_question_flags(aTHX_ a)
+# define parse_uniprop_string(a,b,c,d,e,f,g,h,i,j) S_parse_uniprop_string(aTHX_ a,b,c,d,e,f,g,h,i,j)
+# define reg(a,b,c,d) S_reg(aTHX_ a,b,c,d)
+# define reg1node(a,b,c) S_reg1node(aTHX_ a,b,c)
+# define reg2node(a,b,c,d) S_reg2node(aTHX_ a,b,c,d)
+# define reg_la_NOTHING(a,b,c) S_reg_la_NOTHING(aTHX_ a,b,c)
+# define reg_la_OPFAIL(a,b,c) S_reg_la_OPFAIL(aTHX_ a,b,c)
+# define reg_node(a,b) S_reg_node(aTHX_ a,b)
+# define reg_scan_name(a,b) S_reg_scan_name(aTHX_ a,b)
+# define reg_skipcomment S_reg_skipcomment
+# define regatom(a,b,c) S_regatom(aTHX_ a,b,c)
+# define regbranch(a,b,c,d) S_regbranch(aTHX_ a,b,c,d)
+# define regclass(a,b,c,d,e,f,g,h,i) S_regclass(aTHX_ a,b,c,d,e,f,g,h,i)
+# define regex_set_precedence S_regex_set_precedence
+# define reginsert(a,b,c,d) S_reginsert(aTHX_ a,b,c,d)
+# define regnode_guts(a,b) S_regnode_guts(aTHX_ a,b)
+# define regpiece(a,b,c) S_regpiece(aTHX_ a,b,c)
+# define regpnode(a,b,c) S_regpnode(aTHX_ a,b,c)
+# define regtail(a,b,c,d) S_regtail(aTHX_ a,b,c,d)
+# define set_regex_pv(a,b) S_set_regex_pv(aTHX_ a,b)
+# define skip_to_be_ignored_text(a,b,c) S_skip_to_be_ignored_text(aTHX_ a,b,c)
+# if defined(DEBUGGING)
+# define regnode_guts_debug(a,b,c) S_regnode_guts_debug(aTHX_ a,b,c)
+# define regtail_study(a,b,c,d) S_regtail_study(aTHX_ a,b,c,d)
+# if defined(ENABLE_REGEX_SETS_DEBUGGING)
+# define dump_regex_sets_structures(a,b,c,d) S_dump_regex_sets_structures(aTHX_ a,b,c,d)
+# endif
+# endif
+# endif /* defined(PERL_IN_REGCOMP_C) */
+# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGCOMP_INVLIST_C)
+# define populate_bitmap_from_invlist(a,b,c,d) Perl_populate_bitmap_from_invlist(aTHX_ a,b,c,d)
+# define populate_invlist_from_bitmap(a,b,c,d) Perl_populate_invlist_from_bitmap(aTHX_ a,b,c,d)
+# endif
+# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || \
+ defined(PERL_IN_TOKE_C)
+# define is_grapheme(a,b,c,d) Perl_is_grapheme(aTHX_ a,b,c,d)
+# endif
+# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || \
+ defined(PERL_IN_UTF8_C)
+# define _to_fold_latin1 Perl__to_fold_latin1
+# endif
+# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C)
+# define regcurly Perl_regcurly
+# endif
+# if defined(PERL_IN_REGCOMP_DEBUG_C) && defined(DEBUGGING)
+# define put_charclass_bitmap_innards(a,b,c,d,e,f,g) S_put_charclass_bitmap_innards(aTHX_ a,b,c,d,e,f,g)
+# define put_charclass_bitmap_innards_common(a,b,c,d,e,f) S_put_charclass_bitmap_innards_common(aTHX_ a,b,c,d,e,f)
+# define put_charclass_bitmap_innards_invlist(a,b) S_put_charclass_bitmap_innards_invlist(aTHX_ a,b)
+# define put_code_point(a,b) S_put_code_point(aTHX_ a,b)
+# define put_range(a,b,c,d) S_put_range(aTHX_ a,b,c,d)
+# define regdump_extflags(a,b) S_regdump_extflags(aTHX_ a,b)
+# define regdump_intflags(a,b) S_regdump_intflags(aTHX_ a,b)
+# endif
+# if defined(PERL_IN_REGCOMP_INVLIST_C) && !defined(PERL_EXT_RE_BUILD)
+# define _append_range_to_invlist(a,b,c) S__append_range_to_invlist(aTHX_ a,b,c)
+# define _invlist_array_init S__invlist_array_init
+# define get_invlist_previous_index_addr S_get_invlist_previous_index_addr
+# define invlist_clear(a) S_invlist_clear(aTHX_ a)
+# define invlist_max S_invlist_max
+# define invlist_previous_index S_invlist_previous_index
+# define invlist_replace_list_destroys_src(a,b) S_invlist_replace_list_destroys_src(aTHX_ a,b)
+# define invlist_set_previous_index S_invlist_set_previous_index
+# define invlist_trim S_invlist_trim
+# endif /* defined(PERL_IN_REGCOMP_INVLIST_C) &&
+ !defined(PERL_EXT_RE_BUILD) */
+# if defined(PERL_IN_REGCOMP_STUDY_C)
+# define get_ANYOF_cp_list_for_ssc(a,b) S_get_ANYOF_cp_list_for_ssc(aTHX_ a,b)
+# define make_exactf_invlist(a,b) S_make_exactf_invlist(aTHX_ a,b)
+# define rck_elide_nothing(a) S_rck_elide_nothing(aTHX_ a)
+# define ssc_add_range(a,b,c) S_ssc_add_range(aTHX_ a,b,c)
+# define ssc_and(a,b,c) S_ssc_and(aTHX_ a,b,c)
+# define ssc_anything(a) S_ssc_anything(aTHX_ a)
+# define ssc_clear_locale S_ssc_clear_locale
+# define ssc_cp_and(a,b) S_ssc_cp_and(aTHX_ a,b)
+# define ssc_intersection(a,b,c) S_ssc_intersection(aTHX_ a,b,c)
+# define ssc_is_anything S_ssc_is_anything
+# define ssc_is_cp_posixl_init S_ssc_is_cp_posixl_init
+# define ssc_or(a,b,c) S_ssc_or(aTHX_ a,b,c)
+# define ssc_union(a,b,c) S_ssc_union(aTHX_ a,b,c)
+# define unwind_scan_frames(a) S_unwind_scan_frames(aTHX_ a)
+# endif /* defined(PERL_IN_REGCOMP_STUDY_C) */
+# if defined(PERL_IN_REGEXEC_C)
+# define advance_one_LB(a,b,c) S_advance_one_LB(aTHX_ a,b,c)
+# define advance_one_SB(a,b,c) S_advance_one_SB(aTHX_ a,b,c)
+# define advance_one_WB(a,b,c,d) S_advance_one_WB(aTHX_ a,b,c,d)
+# define backup_one_GCB(a,b,c) S_backup_one_GCB(aTHX_ a,b,c)
+# define backup_one_LB(a,b,c) S_backup_one_LB(aTHX_ a,b,c)
+# define backup_one_SB(a,b,c) S_backup_one_SB(aTHX_ a,b,c)
+# define backup_one_WB(a,b,c,d) S_backup_one_WB(aTHX_ a,b,c,d)
+# define capture_clear(a,b,c,d) S_capture_clear(aTHX_ a,b,c,d comma_aDEPTH)
+# define find_byclass(a,b,c,d,e) S_find_byclass(aTHX_ a,b,c,d,e)
+# define find_next_masked S_find_next_masked
+# define find_span_end S_find_span_end
+# define find_span_end_mask S_find_span_end_mask
+# define foldEQ_latin1_s2_folded(a,b,c) S_foldEQ_latin1_s2_folded(aTHX_ a,b,c)
+# define isFOO_lc(a,b) S_isFOO_lc(aTHX_ a,b)
+# define isFOO_utf8_lc(a,b,c) S_isFOO_utf8_lc(aTHX_ a,b,c)
+# define isGCB(a,b,c,d,e) S_isGCB(aTHX_ a,b,c,d,e)
+# define isLB(a,b,c,d,e,f) S_isLB(aTHX_ a,b,c,d,e,f)
+# define isSB(a,b,c,d,e,f) S_isSB(aTHX_ a,b,c,d,e,f)
+# define isWB(a,b,c,d,e,f,g) S_isWB(aTHX_ a,b,c,d,e,f,g)
+# define reg_check_named_buff_matched S_reg_check_named_buff_matched
+# define regcp_restore(a,b,c) S_regcp_restore(aTHX_ a,b,c comma_aDEPTH)
+# define regcppop(a,b) S_regcppop(aTHX_ a,b comma_aDEPTH)
+# define regcppush(a,b,c) S_regcppush(aTHX_ a,b,c comma_aDEPTH)
+# define reghop3 S_reghop3
+# define reghop4 S_reghop4
+# define reghopmaybe3 S_reghopmaybe3
+# define reginclass(a,b,c,d,e) S_reginclass(aTHX_ a,b,c,d,e)
+# define regmatch(a,b,c) S_regmatch(aTHX_ a,b,c)
+# define regrepeat(a,b,c,d,e,f) S_regrepeat(aTHX_ a,b,c,d,e,f comma_aDEPTH)
+# define regtry(a,b) S_regtry(aTHX_ a,b)
+# define to_byte_substr(a) S_to_byte_substr(aTHX_ a)
+# define to_utf8_substr(a) S_to_utf8_substr(aTHX_ a)
+# define unwind_paren(a,b,c) S_unwind_paren(aTHX_ a,b,c comma_aDEPTH)
+# if defined(DEBUGGING)
+# define debug_start_match(a,b,c,d,e) S_debug_start_match(aTHX_ a,b,c,d,e)
+# define dump_exec_pos(a,b,c,d,e,f,g) S_dump_exec_pos(aTHX_ a,b,c,d,e,f,g)
+# if !defined(MULTIPLICITY) || defined(PERL_CORE)
+# define re_exec_indentf(a,...) Perl_re_exec_indentf(aTHX_ a,__VA_ARGS__)
+# endif
+# endif
+# endif /* defined(PERL_IN_REGEXEC_C) */
+# endif /* defined(PERL_CORE) || defined(PERL_EXT) */
+# if defined(PERL_CORE) || defined(PERL_USE_VOLATILE_API)
+# define finalize_optree(a) Perl_finalize_optree(aTHX_ a)
+# define optimize_optree(a) Perl_optimize_optree(aTHX_ a)
+# endif
+# if !defined(PERL_IMPLICIT_SYS)
+# define my_pclose(a) Perl_my_pclose(aTHX_ a)
+# define my_popen(a,b) Perl_my_popen(aTHX_ a,b)
+# endif
+# if defined(PERL_IN_CLASS_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_PAD_C) || defined(PERL_IN_PERLY_C) || \
+ defined(PERL_IN_TOKE_C)
+# define class_add_ADJUST(a,b) Perl_class_add_ADJUST(aTHX_ a,b)
+# define class_add_field(a,b) Perl_class_add_field(aTHX_ a,b)
+# define class_apply_attributes(a,b) Perl_class_apply_attributes(aTHX_ a,b)
+# define class_apply_field_attributes(a,b) Perl_class_apply_field_attributes(aTHX_ a,b)
+# define class_prepare_initfield_parse() Perl_class_prepare_initfield_parse(aTHX)
+# define class_prepare_method_parse(a) Perl_class_prepare_method_parse(aTHX_ a)
+# define class_seal_stash(a) Perl_class_seal_stash(aTHX_ a)
+# define class_set_field_defop(a,b,c) Perl_class_set_field_defop(aTHX_ a,b,c)
+# define class_setup_stash(a) Perl_class_setup_stash(aTHX_ a)
+# define class_wrap_method_body(a) Perl_class_wrap_method_body(aTHX_ a)
+# define croak_kw_unless_class(a) Perl_croak_kw_unless_class(aTHX_ a)
+# endif /* defined(PERL_IN_CLASS_C) || defined(PERL_IN_OP_C) ||
+ defined(PERL_IN_PAD_C) || defined(PERL_IN_PERLY_C) ||
+ defined(PERL_IN_TOKE_C) */
+# if defined(PERL_IN_REGEX_ENGINE)
+# define check_regnode_after(a,b) Perl_check_regnode_after(aTHX_ a,b)
+# define regnext(a) Perl_regnext(aTHX_ a)
+# define regnode_after(a,b) Perl_regnode_after(aTHX_ a,b)
+# if defined(DEBUGGING)
+# if ( !defined(MULTIPLICITY) || defined(PERL_CORE) ) && \
+ ( defined(PERL_CORE) || defined(PERL_EXT) )
+# define re_indentf(a,...) Perl_re_indentf(aTHX_ a,__VA_ARGS__)
+# define re_printf(...) Perl_re_printf(aTHX_ __VA_ARGS__)
+# endif
+# if defined(PERL_CORE) || defined(PERL_EXT)
+# define debug_peep(a,b,c,d,e) Perl_debug_peep(aTHX_ a,b,c,d,e)
+# define debug_show_study_flags(a,b,c) Perl_debug_show_study_flags(aTHX_ a,b,c)
+# define debug_studydata(a,b,c,d,e,f,g) Perl_debug_studydata(aTHX_ a,b,c,d,e,f,g)
+# define dumpuntil(a,b,c,d,e,f,g,h) Perl_dumpuntil(aTHX_ a,b,c,d,e,f,g,h)
+# define regprop(a,b,c,d,e) Perl_regprop(aTHX_ a,b,c,d,e)
+# endif
+# endif /* defined(DEBUGGING) */
+# if defined(PERL_EXT_RE_BUILD)
+# if defined(PERL_CORE) || defined(PERL_EXT)
+# define get_re_gclass_aux_data(a,b,c,d,e,f) Perl_get_re_gclass_aux_data(aTHX_ a,b,c,d,e,f)
+# endif
+# elif defined(PERL_CORE) || defined(PERL_EXT)
+# define get_regclass_aux_data(a,b,c,d,e,f) Perl_get_regclass_aux_data(aTHX_ a,b,c,d,e,f)
+# endif
+# endif /* defined(PERL_IN_REGEX_ENGINE) */
+# if defined(PERL_IN_SV_C)
+# define more_sv() Perl_more_sv(aTHX)
+# if defined(PERL_CORE)
+# define F0convert S_F0convert
+# define anonymise_cv_maybe(a,b) S_anonymise_cv_maybe(aTHX_ a,b)
+# define assert_uft8_cache_coherent(a,b,c,d) S_assert_uft8_cache_coherent(aTHX_ a,b,c,d)
+# define curse(a,b) S_curse(aTHX_ a,b)
+# define expect_number(a) S_expect_number(aTHX_ a)
+# define find_array_subscript(a,b) S_find_array_subscript(aTHX_ a,b)
+# define find_hash_subscript(a,b) S_find_hash_subscript(aTHX_ a,b)
+# define find_uninit_var(a,b,c,d) S_find_uninit_var(aTHX_ a,b,c,d)
+# define glob_2number(a) S_glob_2number(aTHX_ a)
+# define glob_assign_glob(a,b,c) S_glob_assign_glob(aTHX_ a,b,c)
+# define not_a_number(a) S_not_a_number(aTHX_ a)
+# define not_incrementable(a) S_not_incrementable(aTHX_ a)
+# define ptr_table_find S_ptr_table_find
+# define sv_2iuv_common(a) S_sv_2iuv_common(aTHX_ a)
+# define sv_add_arena(a,b,c) S_sv_add_arena(aTHX_ a,b,c)
+# define sv_display(a,b,c) S_sv_display(aTHX_ a,b,c)
+# define sv_pos_b2u_midway(a,b,c,d) S_sv_pos_b2u_midway(aTHX_ a,b,c,d)
+# define sv_pos_u2b_cached(a,b,c,d,e,f,g) S_sv_pos_u2b_cached(aTHX_ a,b,c,d,e,f,g)
+# define sv_pos_u2b_forwards S_sv_pos_u2b_forwards
+# define sv_pos_u2b_midway S_sv_pos_u2b_midway
+# define sv_unglob(a,b) S_sv_unglob(aTHX_ a,b)
+# define uiv_2buf S_uiv_2buf
+# define utf8_mg_len_cache_update(a,b,c) S_utf8_mg_len_cache_update(aTHX_ a,b,c)
+# define utf8_mg_pos_cache_update(a,b,c,d,e) S_utf8_mg_pos_cache_update(aTHX_ a,b,c,d,e)
+# define visit(a,b,c) S_visit(aTHX_ a,b,c)
+# if defined(DEBUGGING)
+# define del_sv(a) S_del_sv(aTHX_ a)
+# endif
+# if !defined(NV_PRESERVES_UV)
+# if defined(DEBUGGING)
+# define sv_2iuv_non_preserve(a,b) S_sv_2iuv_non_preserve(aTHX_ a,b)
+# else
+# define sv_2iuv_non_preserve(a) S_sv_2iuv_non_preserve(aTHX_ a)
+# endif
+# endif
+# if defined(PERL_DEBUG_READONLY_COW)
+# define sv_buf_to_rw(a) S_sv_buf_to_rw(aTHX_ a)
+# endif
+# if defined(USE_ITHREADS)
+# define sv_dup_common(a,b) S_sv_dup_common(aTHX_ a,b)
+# define sv_dup_hvaux(a,b,c) S_sv_dup_hvaux(aTHX_ a,b,c)
+# define sv_dup_inc_multiple(a,b,c,d) S_sv_dup_inc_multiple(aTHX_ a,b,c,d)
+# define unreferenced_to_tmp_stack(a) S_unreferenced_to_tmp_stack(aTHX_ a)
+# endif
+# endif /* defined(PERL_CORE) */
+# endif /* defined(PERL_IN_SV_C) */
+# if defined(PERL_MEM_LOG)
+# define mem_log_alloc Perl_mem_log_alloc
+# define mem_log_del_sv Perl_mem_log_del_sv
+# define mem_log_free Perl_mem_log_free
+# define mem_log_new_sv Perl_mem_log_new_sv
+# define mem_log_realloc Perl_mem_log_realloc
+# endif
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+# define cx_popblock(a) Perl_cx_popblock(aTHX_ a)
+# define cx_popeval(a) Perl_cx_popeval(aTHX_ a)
+# define cx_popformat(a) Perl_cx_popformat(aTHX_ a)
+# define cx_popgiven(a) Perl_cx_popgiven(aTHX_ a)
+# define cx_poploop(a) Perl_cx_poploop(aTHX_ a)
+# define cx_popsub(a) Perl_cx_popsub(aTHX_ a)
+# define cx_popsub_args(a) Perl_cx_popsub_args(aTHX_ a)
+# define cx_popsub_common(a) Perl_cx_popsub_common(aTHX_ a)
+# define cx_popwhen(a) Perl_cx_popwhen(aTHX_ a)
+# define cx_pushblock(a,b,c,d) Perl_cx_pushblock(aTHX_ a,b,c,d)
+# define cx_pusheval(a,b,c) Perl_cx_pusheval(aTHX_ a,b,c)
+# define cx_pushformat(a,b,c,d) Perl_cx_pushformat(aTHX_ a,b,c,d)
+# define cx_pushgiven(a,b) Perl_cx_pushgiven(aTHX_ a,b)
+# define cx_pushloop_for(a,b,c) Perl_cx_pushloop_for(aTHX_ a,b,c)
+# define cx_pushloop_plain(a) Perl_cx_pushloop_plain(aTHX_ a)
+# define cx_pushsub(a,b,c,d) Perl_cx_pushsub(aTHX_ a,b,c,d)
+# define cx_pushtry(a,b) Perl_cx_pushtry(aTHX_ a,b)
+# define cx_pushwhen(a) Perl_cx_pushwhen(aTHX_ a)
+# define cx_topblock(a) Perl_cx_topblock(aTHX_ a)
+# define gimme_V() Perl_gimme_V(aTHX)
+# endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+# if defined(PERL_USE_3ARG_SIGHANDLER)
+# define csighandler Perl_csighandler
+# else
+# define csighandler Perl_csighandler
+# endif
+# if defined(U64TYPE)
+# define lsbit_pos64 Perl_lsbit_pos64
+# define msbit_pos64 Perl_msbit_pos64
+# define single_1bit_pos64 Perl_single_1bit_pos64
+# endif
+# if defined(UNLINK_ALL_VERSIONS)
+# define unlnk(a) Perl_unlnk(aTHX_ a)
+# endif
+# if defined(USE_C_BACKTRACE)
+# define dump_c_backtrace(a,b,c) Perl_dump_c_backtrace(aTHX_ a,b,c)
+# define get_c_backtrace_dump(a,b) Perl_get_c_backtrace_dump(aTHX_ a,b)
+# endif
+# if defined(USE_ITHREADS)
+# define alloccopstash(a) Perl_alloccopstash(aTHX_ a)
+# define any_dup(a,b) Perl_any_dup(aTHX_ a,b)
+# define cop_file_avn(a) Perl_cop_file_avn(aTHX_ a)
+# define cx_dup(a,b,c,d) Perl_cx_dup(aTHX_ a,b,c,d)
+# define dirp_dup(a,b) Perl_dirp_dup(aTHX_ a,b)
+# define fp_dup(a,b,c) Perl_fp_dup(aTHX_ a,b,c)
+# define gp_dup(a,b) Perl_gp_dup(aTHX_ a,b)
+# define he_dup(a,b,c) Perl_he_dup(aTHX_ a,b,c)
+# define hek_dup(a,b) Perl_hek_dup(aTHX_ a,b)
+# define mg_dup(a,b) Perl_mg_dup(aTHX_ a,b)
+# define newPADOP(a,b,c) Perl_newPADOP(aTHX_ a,b,c)
+# define parser_dup(a,b) Perl_parser_dup(aTHX_ a,b)
+# define re_dup_guts(a,b,c) Perl_re_dup_guts(aTHX_ a,b,c)
+# define regdupe_internal(a,b) Perl_regdupe_internal(aTHX_ a,b)
+# define rvpv_dup(a,b,c) Perl_rvpv_dup(aTHX_ a,b,c)
+# define si_dup(a,b) Perl_si_dup(aTHX_ a,b)
+# define ss_dup(a,b) Perl_ss_dup(aTHX_ a,b)
+# define sv_dup(a,b) Perl_sv_dup(aTHX_ a,b)
+# define sv_dup_inc(a,b) Perl_sv_dup_inc(aTHX_ a,b)
+# endif /* defined(USE_ITHREADS) */
+# if defined(USE_LOCALE_COLLATE)
+# define sv_collxfrm_flags(a,b,c) Perl_sv_collxfrm_flags(aTHX_ a,b,c)
+# if ( defined(PERL_CORE) || defined(PERL_EXT) ) && \
+ ( defined(PERL_IN_LOCALE_C) || defined(PERL_IN_MATHOMS_C) || \
+ defined(PERL_IN_SV_C) )
+# define mem_collxfrm_(a,b,c,d) Perl_mem_collxfrm_(aTHX_ a,b,c,d)
+# endif
+# endif
+# if defined(USE_PERLIO)
+# define PerlIO_clearerr(a) Perl_PerlIO_clearerr(aTHX_ a)
+# define PerlIO_close(a) Perl_PerlIO_close(aTHX_ a)
+# define PerlIO_eof(a) Perl_PerlIO_eof(aTHX_ a)
+# define PerlIO_error(a) Perl_PerlIO_error(aTHX_ a)
+# define PerlIO_fileno(a) Perl_PerlIO_fileno(aTHX_ a)
+# define PerlIO_fill(a) Perl_PerlIO_fill(aTHX_ a)
+# define PerlIO_flush(a) Perl_PerlIO_flush(aTHX_ a)
+# define PerlIO_get_base(a) Perl_PerlIO_get_base(aTHX_ a)
+# define PerlIO_get_bufsiz(a) Perl_PerlIO_get_bufsiz(aTHX_ a)
+# define PerlIO_get_cnt(a) Perl_PerlIO_get_cnt(aTHX_ a)
+# define PerlIO_get_ptr(a) Perl_PerlIO_get_ptr(aTHX_ a)
+# define PerlIO_read(a,b,c) Perl_PerlIO_read(aTHX_ a,b,c)
+# define PerlIO_seek(a,b,c) Perl_PerlIO_seek(aTHX_ a,b,c)
+# define PerlIO_set_cnt(a,b) Perl_PerlIO_set_cnt(aTHX_ a,b)
+# define PerlIO_set_ptrcnt(a,b,c) Perl_PerlIO_set_ptrcnt(aTHX_ a,b,c)
+# define PerlIO_setlinebuf(a) Perl_PerlIO_setlinebuf(aTHX_ a)
+# define PerlIO_stderr() Perl_PerlIO_stderr(aTHX)
+# define PerlIO_stdin() Perl_PerlIO_stdin(aTHX)
+# define PerlIO_stdout() Perl_PerlIO_stdout(aTHX)
+# define PerlIO_tell(a) Perl_PerlIO_tell(aTHX_ a)
+# define PerlIO_unread(a,b,c) Perl_PerlIO_unread(aTHX_ a,b,c)
+# define PerlIO_write(a,b,c) Perl_PerlIO_write(aTHX_ a,b,c)
+# endif /* defined(USE_PERLIO) */
+# if defined(VMS) || defined(WIN32)
+# define do_aspawn(a,b,c) Perl_do_aspawn(aTHX_ a,b,c)
+# define do_spawn(a) Perl_do_spawn(aTHX_ a)
+# define do_spawn_nowait(a) Perl_do_spawn_nowait(aTHX_ a)
+# endif
+# if defined(WIN32)
+# define get_context Perl_get_context
+# else
+# define get_context Perl_get_context
+# endif
+#endif /* !defined(PERL_NO_SHORT_NAMES) */
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/embedvar.h b/Master/tlpkg/tlperl/lib/CORE/embedvar.h
index 67ccd6b7230..b2f7da6b675 100644
--- a/Master/tlpkg/tlperl/lib/CORE/embedvar.h
+++ b/Master/tlpkg/tlperl/lib/CORE/embedvar.h
@@ -1,379 +1,371 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
*
* embedvar.h
*
* Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- * 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others
+ * 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
+ * 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022
+ * by Larry Wall and others
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
*
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
- * This file is built by regen/embed.pl from data in embed.fnc,
- * regen/embed.pl, regen/opcodes, intrpvar.h and perlvars.h.
+ * This file is built by regen/embed.pl from embed.fnc, intrpvar.h,
+ * perlvars.h, regen/opcodes, regen/embed.pl, regen/embed_lib.pl and
+ * regen/HeaderParser.pm.
* Any changes made here will be lost!
*
* Edit those files and run 'make regen_headers' to effect changes.
*/
-/* (Doing namespace management portably in C is really gross.) */
-
-/*
- The following combinations of MULTIPLICITY and PERL_IMPLICIT_CONTEXT
- are supported:
- 1) none
- 2) MULTIPLICITY # supported for compatibility
- 3) MULTIPLICITY && PERL_IMPLICIT_CONTEXT
-
- All other combinations of these flags are errors.
-
- only #3 is supported directly, while #2 is a special
- case of #3 (supported by redefining vTHX appropriately).
-*/
-
#if defined(MULTIPLICITY)
-/* cases 2 and 3 above */
-
-# if defined(PERL_IMPLICIT_CONTEXT)
-# define vTHX aTHX
-# else
-# define vTHX PERL_GET_INTERP
-# endif
-
-#define PL_AboveLatin1 (vTHX->IAboveLatin1)
-#define PL_Assigned_invlist (vTHX->IAssigned_invlist)
-#define PL_CCC_non0_non230 (vTHX->ICCC_non0_non230)
-#define PL_DBcontrol (vTHX->IDBcontrol)
-#define PL_DBcv (vTHX->IDBcv)
-#define PL_DBgv (vTHX->IDBgv)
-#define PL_DBline (vTHX->IDBline)
-#define PL_DBsignal (vTHX->IDBsignal)
-#define PL_DBsingle (vTHX->IDBsingle)
-#define PL_DBsub (vTHX->IDBsub)
-#define PL_DBtrace (vTHX->IDBtrace)
-#define PL_Dir (vTHX->IDir)
-#define PL_Env (vTHX->IEnv)
-#define PL_GCB_invlist (vTHX->IGCB_invlist)
-#define PL_HasMultiCharFold (vTHX->IHasMultiCharFold)
-#define PL_InBitmap (vTHX->IInBitmap)
-#define PL_InMultiCharFold (vTHX->IInMultiCharFold)
-#define PL_LB_invlist (vTHX->ILB_invlist)
-#define PL_LIO (vTHX->ILIO)
-#define PL_Latin1 (vTHX->ILatin1)
-#define PL_Mem (vTHX->IMem)
-#define PL_MemParse (vTHX->IMemParse)
-#define PL_MemShared (vTHX->IMemShared)
-#define PL_Posix_ptrs (vTHX->IPosix_ptrs)
-#define PL_Private_Use (vTHX->IPrivate_Use)
-#define PL_Proc (vTHX->IProc)
-#define PL_SB_invlist (vTHX->ISB_invlist)
-#define PL_SCX_invlist (vTHX->ISCX_invlist)
-#define PL_Sock (vTHX->ISock)
-#define PL_StdIO (vTHX->IStdIO)
-#define PL_Sv (vTHX->ISv)
-#define PL_TR_SPECIAL_HANDLING_UTF8 (vTHX->ITR_SPECIAL_HANDLING_UTF8)
-#define PL_UpperLatin1 (vTHX->IUpperLatin1)
-#define PL_WB_invlist (vTHX->IWB_invlist)
-#define PL_XPosix_ptrs (vTHX->IXPosix_ptrs)
-#define PL_Xpv (vTHX->IXpv)
-#define PL_an (vTHX->Ian)
-#define PL_argvgv (vTHX->Iargvgv)
-#define PL_argvout_stack (vTHX->Iargvout_stack)
-#define PL_argvoutgv (vTHX->Iargvoutgv)
-#define PL_basetime (vTHX->Ibasetime)
-#define PL_beginav (vTHX->Ibeginav)
-#define PL_beginav_save (vTHX->Ibeginav_save)
-#define PL_blockhooks (vTHX->Iblockhooks)
-#define PL_body_arenas (vTHX->Ibody_arenas)
-#define PL_body_roots (vTHX->Ibody_roots)
-#define PL_bodytarget (vTHX->Ibodytarget)
-#define PL_breakable_sub_gen (vTHX->Ibreakable_sub_gen)
-#define PL_checkav (vTHX->Icheckav)
-#define PL_checkav_save (vTHX->Icheckav_save)
-#define PL_chopset (vTHX->Ichopset)
-#define PL_clocktick (vTHX->Iclocktick)
-#define PL_collation_ix (vTHX->Icollation_ix)
-#define PL_collation_name (vTHX->Icollation_name)
-#define PL_collation_standard (vTHX->Icollation_standard)
-#define PL_collxfrm_base (vTHX->Icollxfrm_base)
-#define PL_collxfrm_mult (vTHX->Icollxfrm_mult)
-#define PL_colors (vTHX->Icolors)
-#define PL_colorset (vTHX->Icolorset)
-#define PL_compcv (vTHX->Icompcv)
-#define PL_compiling (vTHX->Icompiling)
-#define PL_comppad (vTHX->Icomppad)
-#define PL_comppad_name (vTHX->Icomppad_name)
-#define PL_comppad_name_fill (vTHX->Icomppad_name_fill)
-#define PL_comppad_name_floor (vTHX->Icomppad_name_floor)
-#define PL_constpadix (vTHX->Iconstpadix)
-#define PL_cop_seqmax (vTHX->Icop_seqmax)
-#define PL_curcop (vTHX->Icurcop)
-#define PL_curcopdb (vTHX->Icurcopdb)
-#define PL_curlocales (vTHX->Icurlocales)
-#define PL_curpad (vTHX->Icurpad)
-#define PL_curpm (vTHX->Icurpm)
-#define PL_curpm_under (vTHX->Icurpm_under)
-#define PL_curstack (vTHX->Icurstack)
-#define PL_curstackinfo (vTHX->Icurstackinfo)
-#define PL_curstash (vTHX->Icurstash)
-#define PL_curstname (vTHX->Icurstname)
-#define PL_custom_op_descs (vTHX->Icustom_op_descs)
-#define PL_custom_op_names (vTHX->Icustom_op_names)
-#define PL_custom_ops (vTHX->Icustom_ops)
-#define PL_cv_has_eval (vTHX->Icv_has_eval)
-#define PL_dbargs (vTHX->Idbargs)
-#define PL_debstash (vTHX->Idebstash)
-#define PL_debug (vTHX->Idebug)
-#define PL_debug_pad (vTHX->Idebug_pad)
-#define PL_def_layerlist (vTHX->Idef_layerlist)
-#define PL_defgv (vTHX->Idefgv)
-#define PL_defoutgv (vTHX->Idefoutgv)
-#define PL_defstash (vTHX->Idefstash)
-#define PL_delaymagic (vTHX->Idelaymagic)
-#define PL_delaymagic_egid (vTHX->Idelaymagic_egid)
-#define PL_delaymagic_euid (vTHX->Idelaymagic_euid)
-#define PL_delaymagic_gid (vTHX->Idelaymagic_gid)
-#define PL_delaymagic_uid (vTHX->Idelaymagic_uid)
-#define PL_destroyhook (vTHX->Idestroyhook)
-#define PL_diehook (vTHX->Idiehook)
-#define PL_doswitches (vTHX->Idoswitches)
-#define PL_dowarn (vTHX->Idowarn)
-#define PL_dump_re_max_len (vTHX->Idump_re_max_len)
-#define PL_dumper_fd (vTHX->Idumper_fd)
-#define PL_dumpindent (vTHX->Idumpindent)
-#define PL_e_script (vTHX->Ie_script)
-#define PL_efloatbuf (vTHX->Iefloatbuf)
-#define PL_efloatsize (vTHX->Iefloatsize)
-#define PL_endav (vTHX->Iendav)
-#define PL_envgv (vTHX->Ienvgv)
-#define PL_errgv (vTHX->Ierrgv)
-#define PL_errors (vTHX->Ierrors)
-#define PL_eval_root (vTHX->Ieval_root)
-#define PL_eval_start (vTHX->Ieval_start)
-#define PL_evalseq (vTHX->Ievalseq)
-#define PL_exit_flags (vTHX->Iexit_flags)
-#define PL_exitlist (vTHX->Iexitlist)
-#define PL_exitlistlen (vTHX->Iexitlistlen)
-#define PL_fdpid (vTHX->Ifdpid)
-#define PL_filemode (vTHX->Ifilemode)
-#define PL_firstgv (vTHX->Ifirstgv)
-#define PL_forkprocess (vTHX->Iforkprocess)
-#define PL_formtarget (vTHX->Iformtarget)
-#define PL_generation (vTHX->Igeneration)
-#define PL_gensym (vTHX->Igensym)
-#define PL_globalstash (vTHX->Iglobalstash)
-#define PL_globhook (vTHX->Iglobhook)
-#define PL_hash_rand_bits (vTHX->Ihash_rand_bits)
-#define PL_hash_rand_bits_enabled (vTHX->Ihash_rand_bits_enabled)
-#define PL_hintgv (vTHX->Ihintgv)
-#define PL_hv_fetch_ent_mh (vTHX->Ihv_fetch_ent_mh)
-#define PL_in_clean_all (vTHX->Iin_clean_all)
-#define PL_in_clean_objs (vTHX->Iin_clean_objs)
-#define PL_in_eval (vTHX->Iin_eval)
-#define PL_in_load_module (vTHX->Iin_load_module)
-#define PL_in_some_fold (vTHX->Iin_some_fold)
-#define PL_in_utf8_COLLATE_locale (vTHX->Iin_utf8_COLLATE_locale)
-#define PL_in_utf8_CTYPE_locale (vTHX->Iin_utf8_CTYPE_locale)
-#define PL_in_utf8_turkic_locale (vTHX->Iin_utf8_turkic_locale)
-#define PL_incgv (vTHX->Iincgv)
-#define PL_initav (vTHX->Iinitav)
-#define PL_inplace (vTHX->Iinplace)
-#define PL_internal_random_state (vTHX->Iinternal_random_state)
-#define PL_isarev (vTHX->Iisarev)
-#define PL_known_layers (vTHX->Iknown_layers)
-#define PL_langinfo_buf (vTHX->Ilanginfo_buf)
-#define PL_langinfo_bufsize (vTHX->Ilanginfo_bufsize)
-#define PL_last_in_gv (vTHX->Ilast_in_gv)
-#define PL_lastfd (vTHX->Ilastfd)
-#define PL_lastgotoprobe (vTHX->Ilastgotoprobe)
-#define PL_laststatval (vTHX->Ilaststatval)
-#define PL_laststype (vTHX->Ilaststype)
-#define PL_lc_numeric_mutex_depth (vTHX->Ilc_numeric_mutex_depth)
-#define PL_locale_utf8ness (vTHX->Ilocale_utf8ness)
-#define PL_localizing (vTHX->Ilocalizing)
-#define PL_localpatches (vTHX->Ilocalpatches)
-#define PL_lockhook (vTHX->Ilockhook)
-#define PL_main_cv (vTHX->Imain_cv)
-#define PL_main_root (vTHX->Imain_root)
-#define PL_main_start (vTHX->Imain_start)
-#define PL_mainstack (vTHX->Imainstack)
-#define PL_markstack (vTHX->Imarkstack)
-#define PL_markstack_max (vTHX->Imarkstack_max)
-#define PL_markstack_ptr (vTHX->Imarkstack_ptr)
-#define PL_max_intro_pending (vTHX->Imax_intro_pending)
-#define PL_maxsysfd (vTHX->Imaxsysfd)
-#define PL_mbrlen_ps (vTHX->Imbrlen_ps)
-#define PL_mbrtowc_ps (vTHX->Imbrtowc_ps)
-#define PL_mem_log (vTHX->Imem_log)
-#define PL_memory_debug_header (vTHX->Imemory_debug_header)
-#define PL_mess_sv (vTHX->Imess_sv)
-#define PL_min_intro_pending (vTHX->Imin_intro_pending)
-#define PL_minus_E (vTHX->Iminus_E)
-#define PL_minus_F (vTHX->Iminus_F)
-#define PL_minus_a (vTHX->Iminus_a)
-#define PL_minus_c (vTHX->Iminus_c)
-#define PL_minus_l (vTHX->Iminus_l)
-#define PL_minus_n (vTHX->Iminus_n)
-#define PL_minus_p (vTHX->Iminus_p)
-#define PL_modcount (vTHX->Imodcount)
-#define PL_modglobal (vTHX->Imodglobal)
-#define PL_multideref_pc (vTHX->Imultideref_pc)
-#define PL_my_cxt_list (vTHX->Imy_cxt_list)
-#define PL_my_cxt_size (vTHX->Imy_cxt_size)
-#define PL_na (vTHX->Ina)
-#define PL_nomemok (vTHX->Inomemok)
-#define PL_numeric_name (vTHX->Inumeric_name)
-#define PL_numeric_radix_sv (vTHX->Inumeric_radix_sv)
-#define PL_numeric_standard (vTHX->Inumeric_standard)
-#define PL_numeric_underlying (vTHX->Inumeric_underlying)
-#define PL_numeric_underlying_is_standard (vTHX->Inumeric_underlying_is_standard)
-#define PL_ofsgv (vTHX->Iofsgv)
-#define PL_oldname (vTHX->Ioldname)
-#define PL_op (vTHX->Iop)
-#define PL_op_exec_cnt (vTHX->Iop_exec_cnt)
-#define PL_op_mask (vTHX->Iop_mask)
-#define PL_opfreehook (vTHX->Iopfreehook)
-#define PL_origalen (vTHX->Iorigalen)
-#define PL_origargc (vTHX->Iorigargc)
-#define PL_origargv (vTHX->Iorigargv)
-#define PL_origenviron (vTHX->Iorigenviron)
-#define PL_origfilename (vTHX->Iorigfilename)
-#define PL_ors_sv (vTHX->Iors_sv)
-#define PL_osname (vTHX->Iosname)
-#define PL_pad_reset_pending (vTHX->Ipad_reset_pending)
-#define PL_padix (vTHX->Ipadix)
-#define PL_padix_floor (vTHX->Ipadix_floor)
-#define PL_padlist_generation (vTHX->Ipadlist_generation)
-#define PL_padname_const (vTHX->Ipadname_const)
-#define PL_padname_undef (vTHX->Ipadname_undef)
-#define PL_parser (vTHX->Iparser)
-#define PL_patchlevel (vTHX->Ipatchlevel)
-#define PL_peepp (vTHX->Ipeepp)
-#define PL_perl_destruct_level (vTHX->Iperl_destruct_level)
-#define PL_perldb (vTHX->Iperldb)
-#define PL_perlio (vTHX->Iperlio)
-#define PL_phase (vTHX->Iphase)
-#define PL_pidstatus (vTHX->Ipidstatus)
-#define PL_preambleav (vTHX->Ipreambleav)
-#define PL_profiledata (vTHX->Iprofiledata)
-#define PL_psig_name (vTHX->Ipsig_name)
-#define PL_psig_pend (vTHX->Ipsig_pend)
-#define PL_psig_ptr (vTHX->Ipsig_ptr)
-#define PL_ptr_table (vTHX->Iptr_table)
-#define PL_random_state (vTHX->Irandom_state)
-#define PL_reentrant_buffer (vTHX->Ireentrant_buffer)
-#define PL_reentrant_retint (vTHX->Ireentrant_retint)
-#define PL_reg_curpm (vTHX->Ireg_curpm)
-#define PL_regex_pad (vTHX->Iregex_pad)
-#define PL_regex_padav (vTHX->Iregex_padav)
-#define PL_registered_mros (vTHX->Iregistered_mros)
-#define PL_regmatch_slab (vTHX->Iregmatch_slab)
-#define PL_regmatch_state (vTHX->Iregmatch_state)
-#define PL_replgv (vTHX->Ireplgv)
-#define PL_restartjmpenv (vTHX->Irestartjmpenv)
-#define PL_restartop (vTHX->Irestartop)
-#define PL_rpeepp (vTHX->Irpeepp)
-#define PL_rs (vTHX->Irs)
-#define PL_runops (vTHX->Irunops)
-#define PL_savebegin (vTHX->Isavebegin)
-#define PL_savestack (vTHX->Isavestack)
-#define PL_savestack_ix (vTHX->Isavestack_ix)
-#define PL_savestack_max (vTHX->Isavestack_max)
-#ifndef PL_sawampersand
-#define PL_sawampersand (vTHX->Isawampersand)
-#endif
-#define PL_scopestack (vTHX->Iscopestack)
-#define PL_scopestack_ix (vTHX->Iscopestack_ix)
-#define PL_scopestack_max (vTHX->Iscopestack_max)
-#define PL_scopestack_name (vTHX->Iscopestack_name)
-#define PL_secondgv (vTHX->Isecondgv)
-#define PL_setlocale_buf (vTHX->Isetlocale_buf)
-#define PL_setlocale_bufsize (vTHX->Isetlocale_bufsize)
-#define PL_sharehook (vTHX->Isharehook)
-#define PL_sig_pending (vTHX->Isig_pending)
-#define PL_sighandler1p (vTHX->Isighandler1p)
-#define PL_sighandler3p (vTHX->Isighandler3p)
-#define PL_sighandlerp (vTHX->Isighandlerp)
-#define PL_signalhook (vTHX->Isignalhook)
-#define PL_signals (vTHX->Isignals)
-#define PL_sortcop (vTHX->Isortcop)
-#define PL_sortstash (vTHX->Isortstash)
-#define PL_splitstr (vTHX->Isplitstr)
-#define PL_srand_called (vTHX->Isrand_called)
-#define PL_stack_base (vTHX->Istack_base)
-#define PL_stack_max (vTHX->Istack_max)
-#define PL_stack_sp (vTHX->Istack_sp)
-#define PL_start_env (vTHX->Istart_env)
-#define PL_stashcache (vTHX->Istashcache)
-#define PL_stashpad (vTHX->Istashpad)
-#define PL_stashpadix (vTHX->Istashpadix)
-#define PL_stashpadmax (vTHX->Istashpadmax)
-#define PL_statcache (vTHX->Istatcache)
-#define PL_statgv (vTHX->Istatgv)
-#define PL_statname (vTHX->Istatname)
-#define PL_statusvalue (vTHX->Istatusvalue)
-#define PL_statusvalue_posix (vTHX->Istatusvalue_posix)
-#define PL_statusvalue_vms (vTHX->Istatusvalue_vms)
-#define PL_stderrgv (vTHX->Istderrgv)
-#define PL_stdingv (vTHX->Istdingv)
-#define PL_strtab (vTHX->Istrtab)
-#define PL_strxfrm_NUL_replacement (vTHX->Istrxfrm_NUL_replacement)
-#define PL_strxfrm_is_behaved (vTHX->Istrxfrm_is_behaved)
-#define PL_strxfrm_max_cp (vTHX->Istrxfrm_max_cp)
-#define PL_sub_generation (vTHX->Isub_generation)
-#define PL_subline (vTHX->Isubline)
-#define PL_subname (vTHX->Isubname)
-#define PL_sv_arenaroot (vTHX->Isv_arenaroot)
-#define PL_sv_consts (vTHX->Isv_consts)
-#define PL_sv_count (vTHX->Isv_count)
-#define PL_sv_immortals (vTHX->Isv_immortals)
-#define PL_sv_no (vTHX->Isv_no)
-#define PL_sv_root (vTHX->Isv_root)
-#define PL_sv_serial (vTHX->Isv_serial)
-#define PL_sv_undef (vTHX->Isv_undef)
-#define PL_sv_yes (vTHX->Isv_yes)
-#define PL_sv_zero (vTHX->Isv_zero)
-#define PL_sys_intern (vTHX->Isys_intern)
-#define PL_taint_warn (vTHX->Itaint_warn)
-#define PL_tainted (vTHX->Itainted)
-#define PL_tainting (vTHX->Itainting)
-#define PL_threadhook (vTHX->Ithreadhook)
-#define PL_tmps_floor (vTHX->Itmps_floor)
-#define PL_tmps_ix (vTHX->Itmps_ix)
-#define PL_tmps_max (vTHX->Itmps_max)
-#define PL_tmps_stack (vTHX->Itmps_stack)
-#define PL_top_env (vTHX->Itop_env)
-#define PL_toptarget (vTHX->Itoptarget)
-#define PL_underlying_numeric_obj (vTHX->Iunderlying_numeric_obj)
-#define PL_unicode (vTHX->Iunicode)
-#define PL_unitcheckav (vTHX->Iunitcheckav)
-#define PL_unitcheckav_save (vTHX->Iunitcheckav_save)
-#define PL_unlockhook (vTHX->Iunlockhook)
-#define PL_unsafe (vTHX->Iunsafe)
-#define PL_utf8_charname_begin (vTHX->Iutf8_charname_begin)
-#define PL_utf8_charname_continue (vTHX->Iutf8_charname_continue)
-#define PL_utf8_foldclosures (vTHX->Iutf8_foldclosures)
-#define PL_utf8_idcont (vTHX->Iutf8_idcont)
-#define PL_utf8_idstart (vTHX->Iutf8_idstart)
-#define PL_utf8_mark (vTHX->Iutf8_mark)
-#define PL_utf8_perl_idcont (vTHX->Iutf8_perl_idcont)
-#define PL_utf8_perl_idstart (vTHX->Iutf8_perl_idstart)
-#define PL_utf8_tofold (vTHX->Iutf8_tofold)
-#define PL_utf8_tolower (vTHX->Iutf8_tolower)
-#define PL_utf8_tosimplefold (vTHX->Iutf8_tosimplefold)
-#define PL_utf8_totitle (vTHX->Iutf8_totitle)
-#define PL_utf8_toupper (vTHX->Iutf8_toupper)
-#define PL_utf8_xidcont (vTHX->Iutf8_xidcont)
-#define PL_utf8_xidstart (vTHX->Iutf8_xidstart)
-#define PL_utf8cache (vTHX->Iutf8cache)
-#define PL_utf8locale (vTHX->Iutf8locale)
-#define PL_warn_locale (vTHX->Iwarn_locale)
-#define PL_warnhook (vTHX->Iwarnhook)
-#define PL_watchaddr (vTHX->Iwatchaddr)
-#define PL_watchok (vTHX->Iwatchok)
-#define PL_wcrtomb_ps (vTHX->Iwcrtomb_ps)
-#define PL_xsubfilename (vTHX->Ixsubfilename)
-
-#endif /* MULTIPLICITY */
+# define vTHX aTHX
+# define PL_AboveLatin1 (vTHX->IAboveLatin1)
+# define PL_an (vTHX->Ian)
+# define PL_argvgv (vTHX->Iargvgv)
+# define PL_argvout_stack (vTHX->Iargvout_stack)
+# define PL_argvoutgv (vTHX->Iargvoutgv)
+# define PL_Assigned_invlist (vTHX->IAssigned_invlist)
+# define PL_basetime (vTHX->Ibasetime)
+# define PL_beginav (vTHX->Ibeginav)
+# define PL_beginav_save (vTHX->Ibeginav_save)
+# define PL_blockhooks (vTHX->Iblockhooks)
+# define PL_body_arenas (vTHX->Ibody_arenas)
+# define PL_body_roots (vTHX->Ibody_roots)
+# define PL_bodytarget (vTHX->Ibodytarget)
+# define PL_breakable_sub_gen (vTHX->Ibreakable_sub_gen)
+# define PL_CCC_non0_non230 (vTHX->ICCC_non0_non230)
+# define PL_checkav (vTHX->Icheckav)
+# define PL_checkav_save (vTHX->Icheckav_save)
+# define PL_chopset (vTHX->Ichopset)
+# define PL_clocktick (vTHX->Iclocktick)
+# define PL_collation_ix (vTHX->Icollation_ix)
+# define PL_collation_name (vTHX->Icollation_name)
+# define PL_collation_standard (vTHX->Icollation_standard)
+# define PL_collxfrm_base (vTHX->Icollxfrm_base)
+# define PL_collxfrm_mult (vTHX->Icollxfrm_mult)
+# define PL_colors (vTHX->Icolors)
+# define PL_colorset (vTHX->Icolorset)
+# define PL_compcv (vTHX->Icompcv)
+# define PL_compiling (vTHX->Icompiling)
+# define PL_comppad (vTHX->Icomppad)
+# define PL_comppad_name (vTHX->Icomppad_name)
+# define PL_comppad_name_fill (vTHX->Icomppad_name_fill)
+# define PL_comppad_name_floor (vTHX->Icomppad_name_floor)
+# define PL_constpadix (vTHX->Iconstpadix)
+# define PL_cop_seqmax (vTHX->Icop_seqmax)
+# define PL_ctype_name (vTHX->Ictype_name)
+# define PL_cur_LC_ALL (vTHX->Icur_LC_ALL)
+# define PL_cur_locale_obj (vTHX->Icur_locale_obj)
+# define PL_curcop (vTHX->Icurcop)
+# define PL_curcopdb (vTHX->Icurcopdb)
+# define PL_curlocales (vTHX->Icurlocales)
+# define PL_curpad (vTHX->Icurpad)
+# define PL_curpm (vTHX->Icurpm)
+# define PL_curpm_under (vTHX->Icurpm_under)
+# define PL_curstack (vTHX->Icurstack)
+# define PL_curstackinfo (vTHX->Icurstackinfo)
+# define PL_curstash (vTHX->Icurstash)
+# define PL_curstname (vTHX->Icurstname)
+# define PL_custom_op_descs (vTHX->Icustom_op_descs)
+# define PL_custom_op_names (vTHX->Icustom_op_names)
+# define PL_custom_ops (vTHX->Icustom_ops)
+# define PL_cv_has_eval (vTHX->Icv_has_eval)
+# define PL_dbargs (vTHX->Idbargs)
+# define PL_DBcontrol (vTHX->IDBcontrol)
+# define PL_DBcv (vTHX->IDBcv)
+# define PL_DBgv (vTHX->IDBgv)
+# define PL_DBline (vTHX->IDBline)
+# define PL_DBsignal (vTHX->IDBsignal)
+# define PL_DBsingle (vTHX->IDBsingle)
+# define PL_DBsub (vTHX->IDBsub)
+# define PL_DBtrace (vTHX->IDBtrace)
+# define PL_debstash (vTHX->Idebstash)
+# define PL_debug (vTHX->Idebug)
+# define PL_debug_pad (vTHX->Idebug_pad)
+# define PL_def_layerlist (vTHX->Idef_layerlist)
+# define PL_defgv (vTHX->Idefgv)
+# define PL_defoutgv (vTHX->Idefoutgv)
+# define PL_defstash (vTHX->Idefstash)
+# define PL_delaymagic (vTHX->Idelaymagic)
+# define PL_delaymagic_egid (vTHX->Idelaymagic_egid)
+# define PL_delaymagic_euid (vTHX->Idelaymagic_euid)
+# define PL_delaymagic_gid (vTHX->Idelaymagic_gid)
+# define PL_delaymagic_uid (vTHX->Idelaymagic_uid)
+# define PL_destroyhook (vTHX->Idestroyhook)
+# define PL_diehook (vTHX->Idiehook)
+# define PL_Dir (vTHX->IDir)
+# define PL_doswitches (vTHX->Idoswitches)
+# define PL_dowarn (vTHX->Idowarn)
+# define PL_dump_re_max_len (vTHX->Idump_re_max_len)
+# define PL_dumper_fd (vTHX->Idumper_fd)
+# define PL_dumpindent (vTHX->Idumpindent)
+# define PL_e_script (vTHX->Ie_script)
+# define PL_efloatbuf (vTHX->Iefloatbuf)
+# define PL_efloatsize (vTHX->Iefloatsize)
+# define PL_endav (vTHX->Iendav)
+# define PL_Env (vTHX->IEnv)
+# define PL_envgv (vTHX->Ienvgv)
+# define PL_errgv (vTHX->Ierrgv)
+# define PL_errors (vTHX->Ierrors)
+# define PL_eval_begin_nest_depth (vTHX->Ieval_begin_nest_depth)
+# define PL_eval_root (vTHX->Ieval_root)
+# define PL_eval_start (vTHX->Ieval_start)
+# define PL_evalseq (vTHX->Ievalseq)
+# define PL_exit_flags (vTHX->Iexit_flags)
+# define PL_exitlist (vTHX->Iexitlist)
+# define PL_exitlistlen (vTHX->Iexitlistlen)
+# define PL_fdpid (vTHX->Ifdpid)
+# define PL_filemode (vTHX->Ifilemode)
+# define PL_firstgv (vTHX->Ifirstgv)
+# define PL_fold_locale (vTHX->Ifold_locale)
+# define PL_forkprocess (vTHX->Iforkprocess)
+# define PL_formtarget (vTHX->Iformtarget)
+# define PL_GCB_invlist (vTHX->IGCB_invlist)
+# define PL_generation (vTHX->Igeneration)
+# define PL_gensym (vTHX->Igensym)
+# define PL_globalstash (vTHX->Iglobalstash)
+# define PL_globhook (vTHX->Iglobhook)
+# define PL_hash_rand_bits (vTHX->Ihash_rand_bits)
+# define PL_hash_rand_bits_enabled (vTHX->Ihash_rand_bits_enabled)
+# define PL_HasMultiCharFold (vTHX->IHasMultiCharFold)
+# define PL_hintgv (vTHX->Ihintgv)
+# define PL_hook__require__after (vTHX->Ihook__require__after)
+# define PL_hook__require__before (vTHX->Ihook__require__before)
+# define PL_hv_fetch_ent_mh (vTHX->Ihv_fetch_ent_mh)
+# define PL_in_clean_all (vTHX->Iin_clean_all)
+# define PL_in_clean_objs (vTHX->Iin_clean_objs)
+# define PL_in_eval (vTHX->Iin_eval)
+# define PL_in_load_module (vTHX->Iin_load_module)
+# define PL_in_some_fold (vTHX->Iin_some_fold)
+# define PL_in_utf8_COLLATE_locale (vTHX->Iin_utf8_COLLATE_locale)
+# define PL_in_utf8_CTYPE_locale (vTHX->Iin_utf8_CTYPE_locale)
+# define PL_in_utf8_turkic_locale (vTHX->Iin_utf8_turkic_locale)
+# define PL_InBitmap (vTHX->IInBitmap)
+# define PL_incgv (vTHX->Iincgv)
+# define PL_initav (vTHX->Iinitav)
+# define PL_InMultiCharFold (vTHX->IInMultiCharFold)
+# define PL_inplace (vTHX->Iinplace)
+# define PL_internal_random_state (vTHX->Iinternal_random_state)
+# define PL_isarev (vTHX->Iisarev)
+# define PL_known_layers (vTHX->Iknown_layers)
+# define PL_langinfo_buf (vTHX->Ilanginfo_buf)
+# define PL_langinfo_bufsize (vTHX->Ilanginfo_bufsize)
+# define PL_last_in_gv (vTHX->Ilast_in_gv)
+# define PL_lastfd (vTHX->Ilastfd)
+# define PL_lastgotoprobe (vTHX->Ilastgotoprobe)
+# define PL_laststatval (vTHX->Ilaststatval)
+# define PL_laststype (vTHX->Ilaststype)
+# define PL_Latin1 (vTHX->ILatin1)
+# define PL_LB_invlist (vTHX->ILB_invlist)
+# define PL_LIO (vTHX->ILIO)
+# define PL_locale_mutex_depth (vTHX->Ilocale_mutex_depth)
+# define PL_localizing (vTHX->Ilocalizing)
+# define PL_localpatches (vTHX->Ilocalpatches)
+# define PL_lockhook (vTHX->Ilockhook)
+# define PL_main_cv (vTHX->Imain_cv)
+# define PL_main_root (vTHX->Imain_root)
+# define PL_main_start (vTHX->Imain_start)
+# define PL_mainstack (vTHX->Imainstack)
+# define PL_markstack (vTHX->Imarkstack)
+# define PL_markstack_max (vTHX->Imarkstack_max)
+# define PL_markstack_ptr (vTHX->Imarkstack_ptr)
+# define PL_max_intro_pending (vTHX->Imax_intro_pending)
+# define PL_maxsysfd (vTHX->Imaxsysfd)
+# define PL_mbrlen_ps (vTHX->Imbrlen_ps)
+# define PL_mbrtowc_ps (vTHX->Imbrtowc_ps)
+# define PL_Mem (vTHX->IMem)
+# define PL_mem_log (vTHX->Imem_log)
+# define PL_memory_debug_header (vTHX->Imemory_debug_header)
+# define PL_MemParse (vTHX->IMemParse)
+# define PL_MemShared (vTHX->IMemShared)
+# define PL_mess_sv (vTHX->Imess_sv)
+# define PL_min_intro_pending (vTHX->Imin_intro_pending)
+# define PL_minus_a (vTHX->Iminus_a)
+# define PL_minus_c (vTHX->Iminus_c)
+# define PL_minus_E (vTHX->Iminus_E)
+# define PL_minus_F (vTHX->Iminus_F)
+# define PL_minus_l (vTHX->Iminus_l)
+# define PL_minus_n (vTHX->Iminus_n)
+# define PL_minus_p (vTHX->Iminus_p)
+# define PL_modcount (vTHX->Imodcount)
+# define PL_modglobal (vTHX->Imodglobal)
+# define PL_multideref_pc (vTHX->Imultideref_pc)
+# define PL_my_cxt_list (vTHX->Imy_cxt_list)
+# define PL_my_cxt_size (vTHX->Imy_cxt_size)
+# define PL_na (vTHX->Ina)
+# define PL_nomemok (vTHX->Inomemok)
+# define PL_numeric_name (vTHX->Inumeric_name)
+# define PL_numeric_radix_sv (vTHX->Inumeric_radix_sv)
+# define PL_numeric_standard (vTHX->Inumeric_standard)
+# define PL_numeric_underlying (vTHX->Inumeric_underlying)
+# define PL_numeric_underlying_is_standard (vTHX->Inumeric_underlying_is_standard)
+# define PL_ofsgv (vTHX->Iofsgv)
+# define PL_oldname (vTHX->Ioldname)
+# define PL_op (vTHX->Iop)
+# define PL_op_exec_cnt (vTHX->Iop_exec_cnt)
+# define PL_op_mask (vTHX->Iop_mask)
+# define PL_opfreehook (vTHX->Iopfreehook)
+# define PL_origalen (vTHX->Iorigalen)
+# define PL_origargc (vTHX->Iorigargc)
+# define PL_origargv (vTHX->Iorigargv)
+# define PL_origfilename (vTHX->Iorigfilename)
+# define PL_ors_sv (vTHX->Iors_sv)
+# define PL_osname (vTHX->Iosname)
+# define PL_pad_reset_pending (vTHX->Ipad_reset_pending)
+# define PL_padix (vTHX->Ipadix)
+# define PL_padix_floor (vTHX->Ipadix_floor)
+# define PL_padlist_generation (vTHX->Ipadlist_generation)
+# define PL_padname_const (vTHX->Ipadname_const)
+# define PL_padname_undef (vTHX->Ipadname_undef)
+# define PL_parser (vTHX->Iparser)
+# define PL_patchlevel (vTHX->Ipatchlevel)
+# define PL_peepp (vTHX->Ipeepp)
+# define PL_perl_destruct_level (vTHX->Iperl_destruct_level)
+# define PL_perldb (vTHX->Iperldb)
+# define PL_perlio (vTHX->Iperlio)
+# define PL_phase (vTHX->Iphase)
+# define PL_pidstatus (vTHX->Ipidstatus)
+# define PL_Posix_ptrs (vTHX->IPosix_ptrs)
+# define PL_preambleav (vTHX->Ipreambleav)
+# define PL_prevailing_version (vTHX->Iprevailing_version)
+# define PL_Private_Use (vTHX->IPrivate_Use)
+# define PL_Proc (vTHX->IProc)
+# define PL_profiledata (vTHX->Iprofiledata)
+# define PL_psig_name (vTHX->Ipsig_name)
+# define PL_psig_pend (vTHX->Ipsig_pend)
+# define PL_psig_ptr (vTHX->Ipsig_ptr)
+# define PL_ptr_table (vTHX->Iptr_table)
+# define PL_random_state (vTHX->Irandom_state)
+# define PL_reentrant_buffer (vTHX->Ireentrant_buffer)
+# define PL_reentrant_retint (vTHX->Ireentrant_retint)
+# define PL_reg_curpm (vTHX->Ireg_curpm)
+# define PL_regex_pad (vTHX->Iregex_pad)
+# define PL_regex_padav (vTHX->Iregex_padav)
+# define PL_registered_mros (vTHX->Iregistered_mros)
+# define PL_regmatch_slab (vTHX->Iregmatch_slab)
+# define PL_regmatch_state (vTHX->Iregmatch_state)
+# define PL_replgv (vTHX->Ireplgv)
+# define PL_restartjmpenv (vTHX->Irestartjmpenv)
+# define PL_restartop (vTHX->Irestartop)
+# define PL_rpeepp (vTHX->Irpeepp)
+# define PL_rs (vTHX->Irs)
+# define PL_runops (vTHX->Irunops)
+# define PL_savebegin (vTHX->Isavebegin)
+# define PL_savestack (vTHX->Isavestack)
+# define PL_savestack_ix (vTHX->Isavestack_ix)
+# define PL_savestack_max (vTHX->Isavestack_max)
+# define PL_SB_invlist (vTHX->ISB_invlist)
+# define PL_scopestack (vTHX->Iscopestack)
+# define PL_scopestack_ix (vTHX->Iscopestack_ix)
+# define PL_scopestack_max (vTHX->Iscopestack_max)
+# define PL_scopestack_name (vTHX->Iscopestack_name)
+# define PL_scratch_locale_obj (vTHX->Iscratch_locale_obj)
+# define PL_SCX_invlist (vTHX->ISCX_invlist)
+# define PL_secondgv (vTHX->Isecondgv)
+# define PL_setlocale_buf (vTHX->Isetlocale_buf)
+# define PL_setlocale_bufsize (vTHX->Isetlocale_bufsize)
+# define PL_sharehook (vTHX->Isharehook)
+# define PL_sig_pending (vTHX->Isig_pending)
+# define PL_sighandler1p (vTHX->Isighandler1p)
+# define PL_sighandler3p (vTHX->Isighandler3p)
+# define PL_sighandlerp (vTHX->Isighandlerp)
+# define PL_signalhook (vTHX->Isignalhook)
+# define PL_signals (vTHX->Isignals)
+# define PL_Sock (vTHX->ISock)
+# define PL_sortcop (vTHX->Isortcop)
+# define PL_sortstash (vTHX->Isortstash)
+# define PL_splitstr (vTHX->Isplitstr)
+# define PL_srand_called (vTHX->Isrand_called)
+# define PL_srand_override (vTHX->Isrand_override)
+# define PL_srand_override_next (vTHX->Isrand_override_next)
+# define PL_stack_base (vTHX->Istack_base)
+# define PL_stack_max (vTHX->Istack_max)
+# define PL_stack_sp (vTHX->Istack_sp)
+# define PL_start_env (vTHX->Istart_env)
+# define PL_stashcache (vTHX->Istashcache)
+# define PL_stashpad (vTHX->Istashpad)
+# define PL_stashpadix (vTHX->Istashpadix)
+# define PL_stashpadmax (vTHX->Istashpadmax)
+# define PL_statcache (vTHX->Istatcache)
+# define PL_statgv (vTHX->Istatgv)
+# define PL_statname (vTHX->Istatname)
+# define PL_statusvalue (vTHX->Istatusvalue)
+# define PL_statusvalue_posix (vTHX->Istatusvalue_posix)
+# define PL_statusvalue_vms (vTHX->Istatusvalue_vms)
+# define PL_stderrgv (vTHX->Istderrgv)
+# define PL_stdingv (vTHX->Istdingv)
+# define PL_StdIO (vTHX->IStdIO)
+# define PL_stdize_locale_buf (vTHX->Istdize_locale_buf)
+# define PL_stdize_locale_bufsize (vTHX->Istdize_locale_bufsize)
+# define PL_strtab (vTHX->Istrtab)
+# define PL_strxfrm_is_behaved (vTHX->Istrxfrm_is_behaved)
+# define PL_strxfrm_max_cp (vTHX->Istrxfrm_max_cp)
+# define PL_strxfrm_NUL_replacement (vTHX->Istrxfrm_NUL_replacement)
+# define PL_sub_generation (vTHX->Isub_generation)
+# define PL_subline (vTHX->Isubline)
+# define PL_subname (vTHX->Isubname)
+# define PL_Sv (vTHX->ISv)
+# define PL_sv_arenaroot (vTHX->Isv_arenaroot)
+# define PL_sv_consts (vTHX->Isv_consts)
+# define PL_sv_count (vTHX->Isv_count)
+# define PL_sv_immortals (vTHX->Isv_immortals)
+# define PL_sv_no (vTHX->Isv_no)
+# define PL_sv_root (vTHX->Isv_root)
+# define PL_sv_serial (vTHX->Isv_serial)
+# define PL_sv_undef (vTHX->Isv_undef)
+# define PL_sv_yes (vTHX->Isv_yes)
+# define PL_sv_zero (vTHX->Isv_zero)
+# define PL_sys_intern (vTHX->Isys_intern)
+# define PL_taint_warn (vTHX->Itaint_warn)
+# define PL_tainted (vTHX->Itainted)
+# define PL_tainting (vTHX->Itainting)
+# define PL_threadhook (vTHX->Ithreadhook)
+# define PL_tmps_floor (vTHX->Itmps_floor)
+# define PL_tmps_ix (vTHX->Itmps_ix)
+# define PL_tmps_max (vTHX->Itmps_max)
+# define PL_tmps_stack (vTHX->Itmps_stack)
+# define PL_top_env (vTHX->Itop_env)
+# define PL_toptarget (vTHX->Itoptarget)
+# define PL_TR_SPECIAL_HANDLING_UTF8 (vTHX->ITR_SPECIAL_HANDLING_UTF8)
+# define PL_underlying_numeric_obj (vTHX->Iunderlying_numeric_obj)
+# define PL_underlying_radix_sv (vTHX->Iunderlying_radix_sv)
+# define PL_unicode (vTHX->Iunicode)
+# define PL_unitcheckav (vTHX->Iunitcheckav)
+# define PL_unitcheckav_save (vTHX->Iunitcheckav_save)
+# define PL_unlockhook (vTHX->Iunlockhook)
+# define PL_unsafe (vTHX->Iunsafe)
+# define PL_UpperLatin1 (vTHX->IUpperLatin1)
+# define PL_utf8_charname_begin (vTHX->Iutf8_charname_begin)
+# define PL_utf8_charname_continue (vTHX->Iutf8_charname_continue)
+# define PL_utf8_foldclosures (vTHX->Iutf8_foldclosures)
+# define PL_utf8_idcont (vTHX->Iutf8_idcont)
+# define PL_utf8_idstart (vTHX->Iutf8_idstart)
+# define PL_utf8_mark (vTHX->Iutf8_mark)
+# define PL_utf8_perl_idcont (vTHX->Iutf8_perl_idcont)
+# define PL_utf8_perl_idstart (vTHX->Iutf8_perl_idstart)
+# define PL_utf8_tofold (vTHX->Iutf8_tofold)
+# define PL_utf8_tolower (vTHX->Iutf8_tolower)
+# define PL_utf8_tosimplefold (vTHX->Iutf8_tosimplefold)
+# define PL_utf8_totitle (vTHX->Iutf8_totitle)
+# define PL_utf8_toupper (vTHX->Iutf8_toupper)
+# define PL_utf8_xidcont (vTHX->Iutf8_xidcont)
+# define PL_utf8_xidstart (vTHX->Iutf8_xidstart)
+# define PL_utf8cache (vTHX->Iutf8cache)
+# define PL_utf8locale (vTHX->Iutf8locale)
+# define PL_warn_locale (vTHX->Iwarn_locale)
+# define PL_warnhook (vTHX->Iwarnhook)
+# define PL_watchaddr (vTHX->Iwatchaddr)
+# define PL_watchok (vTHX->Iwatchok)
+# define PL_WB_invlist (vTHX->IWB_invlist)
+# define PL_wcrtomb_ps (vTHX->Iwcrtomb_ps)
+# define PL_XPosix_ptrs (vTHX->IXPosix_ptrs)
+# define PL_Xpv (vTHX->IXpv)
+# define PL_xsubfilename (vTHX->Ixsubfilename)
+# if !defined(PL_sawampersand)
+# define PL_sawampersand (vTHX->Isawampersand)
+# endif
+#endif /* defined(MULTIPLICITY) */
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/feature.h b/Master/tlpkg/tlperl/lib/CORE/feature.h
index 501bc3a3b18..c862864a063 100644
--- a/Master/tlpkg/tlperl/lib/CORE/feature.h
+++ b/Master/tlpkg/tlperl/lib/CORE/feature.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
!!!!!!! DO NOT EDIT THIS FILE !!!!!!!
This file is built by regen/feature.pl.
Any changes made here will be lost!
@@ -12,24 +12,28 @@
#define HINT_FEATURE_SHIFT 26
-#define FEATURE_BAREWORD_FILEHANDLES_BIT 0x0001
-#define FEATURE_BITWISE_BIT 0x0002
-#define FEATURE___SUB___BIT 0x0004
-#define FEATURE_MYREF_BIT 0x0008
-#define FEATURE_EVALBYTES_BIT 0x0010
-#define FEATURE_FC_BIT 0x0020
-#define FEATURE_INDIRECT_BIT 0x0040
-#define FEATURE_ISA_BIT 0x0080
-#define FEATURE_MULTIDIMENSIONAL_BIT 0x0100
-#define FEATURE_POSTDEREF_QQ_BIT 0x0200
-#define FEATURE_REFALIASING_BIT 0x0400
-#define FEATURE_SAY_BIT 0x0800
-#define FEATURE_SIGNATURES_BIT 0x1000
-#define FEATURE_STATE_BIT 0x2000
-#define FEATURE_SWITCH_BIT 0x4000
-#define FEATURE_TRY_BIT 0x8000
-#define FEATURE_UNIEVAL_BIT 0x10000
-#define FEATURE_UNICODE_BIT 0x20000
+#define FEATURE_BAREWORD_FILEHANDLES_BIT 0x0001
+#define FEATURE_BITWISE_BIT 0x0002
+#define FEATURE_CLASS_BIT 0x0004
+#define FEATURE___SUB___BIT 0x0008
+#define FEATURE_MYREF_BIT 0x0010
+#define FEATURE_DEFER_BIT 0x0020
+#define FEATURE_EVALBYTES_BIT 0x0040
+#define FEATURE_MORE_DELIMS_BIT 0x0080
+#define FEATURE_FC_BIT 0x0100
+#define FEATURE_INDIRECT_BIT 0x0200
+#define FEATURE_ISA_BIT 0x0400
+#define FEATURE_MODULE_TRUE_BIT 0x0800
+#define FEATURE_MULTIDIMENSIONAL_BIT 0x1000
+#define FEATURE_POSTDEREF_QQ_BIT 0x2000
+#define FEATURE_REFALIASING_BIT 0x4000
+#define FEATURE_SAY_BIT 0x8000
+#define FEATURE_SIGNATURES_BIT 0x10000
+#define FEATURE_STATE_BIT 0x20000
+#define FEATURE_SWITCH_BIT 0x40000
+#define FEATURE_TRY_BIT 0x80000
+#define FEATURE_UNIEVAL_BIT 0x100000
+#define FEATURE_UNICODE_BIT 0x200000
#define FEATURE_BUNDLE_DEFAULT 0
#define FEATURE_BUNDLE_510 1
@@ -37,10 +41,17 @@
#define FEATURE_BUNDLE_515 3
#define FEATURE_BUNDLE_523 4
#define FEATURE_BUNDLE_527 5
+#define FEATURE_BUNDLE_535 6
+#define FEATURE_BUNDLE_537 7
#define FEATURE_BUNDLE_CUSTOM (HINT_FEATURE_MASK >> HINT_FEATURE_SHIFT)
-#define CURRENT_HINTS \
+/* this is preserved for testing and asserts */
+#define OLD_CURRENT_HINTS \
(PL_curcop == &PL_compiling ? PL_hints : PL_curcop->cop_hints)
+/* this is the same thing, but simpler (no if) as PL_hints expands
+ to PL_compiling.cop_hints */
+#define CURRENT_HINTS \
+ PL_curcop->cop_hints
#define CURRENT_FEATURE_BUNDLE \
((CURRENT_HINTS & HINT_FEATURE_MASK) >> HINT_FEATURE_SHIFT)
@@ -54,21 +65,23 @@
#define FEATURE_FC_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_FC_BIT)) \
)
#define FEATURE_ISA_IS_ENABLED \
( \
- CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
- FEATURE_IS_ENABLED_MASK(FEATURE_ISA_BIT) \
+ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_535 && \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED_MASK(FEATURE_ISA_BIT)) \
)
#define FEATURE_SAY_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_SAY_BIT)) \
)
@@ -79,10 +92,22 @@
FEATURE_IS_ENABLED_MASK(FEATURE_TRY_BIT) \
)
+#define FEATURE_CLASS_IS_ENABLED \
+ ( \
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED_MASK(FEATURE_CLASS_BIT) \
+ )
+
+#define FEATURE_DEFER_IS_ENABLED \
+ ( \
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED_MASK(FEATURE_DEFER_BIT) \
+ )
+
#define FEATURE_STATE_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_STATE_BIT)) \
)
@@ -97,7 +122,8 @@
#define FEATURE_BITWISE_IS_ENABLED \
( \
- CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_527 \
+ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_527 && \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_BITWISE_BIT)) \
)
@@ -112,25 +138,34 @@
#define FEATURE_EVALBYTES_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_EVALBYTES_BIT)) \
)
#define FEATURE_SIGNATURES_IS_ENABLED \
( \
- CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
- FEATURE_IS_ENABLED_MASK(FEATURE_SIGNATURES_BIT) \
+ (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_535 && \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED_MASK(FEATURE_SIGNATURES_BIT)) \
)
#define FEATURE___SUB___IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE___SUB___BIT)) \
)
+#define FEATURE_MODULE_TRUE_IS_ENABLED \
+ ( \
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_537 \
+ || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED_MASK(FEATURE_MODULE_TRUE_BIT)) \
+ )
+
#define FEATURE_REFALIASING_IS_ENABLED \
( \
CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
@@ -140,7 +175,7 @@
#define FEATURE_POSTDEREF_QQ_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_523 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_POSTDEREF_QQ_BIT)) \
)
@@ -148,7 +183,7 @@
#define FEATURE_UNIEVAL_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_UNIEVAL_BIT)) \
)
@@ -162,7 +197,7 @@
#define FEATURE_UNICODE_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_511 && \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_537) \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_UNICODE_BIT)) \
)
@@ -176,11 +211,17 @@
#define FEATURE_BAREWORD_FILEHANDLES_IS_ENABLED \
( \
- CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527 \
+ CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_535 \
|| (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
FEATURE_IS_ENABLED_MASK(FEATURE_BAREWORD_FILEHANDLES_BIT)) \
)
+#define FEATURE_MORE_DELIMS_IS_ENABLED \
+ ( \
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED_MASK(FEATURE_MORE_DELIMS_BIT) \
+ )
+
#define SAVEFEATUREBITS() SAVEI32(PL_compiling.cop_features)
@@ -204,6 +245,12 @@ S_enable_feature_bundle(pTHX_ SV *ver)
SV *comp_ver = sv_newmortal();
PL_hints = (PL_hints &~ HINT_FEATURE_MASK)
| (
+ (sv_setnv(comp_ver, 5.037),
+ vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
+ ? FEATURE_BUNDLE_537 :
+ (sv_setnv(comp_ver, 5.035),
+ vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
+ ? FEATURE_BUNDLE_535 :
(sv_setnv(comp_ver, 5.027),
vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
? FEATURE_BUNDLE_527 :
@@ -263,6 +310,22 @@ S_magic_sethint_feature(pTHX_ SV *keysv, const char *keypv, STRLEN keylen,
}
return;
+ case 'c':
+ if (keylen == sizeof("feature_class")-1
+ && memcmp(subf+1, "lass", keylen - sizeof("feature_")) == 0) {
+ mask = FEATURE_CLASS_BIT;
+ break;
+ }
+ return;
+
+ case 'd':
+ if (keylen == sizeof("feature_defer")-1
+ && memcmp(subf+1, "efer", keylen - sizeof("feature_")) == 0) {
+ mask = FEATURE_DEFER_BIT;
+ break;
+ }
+ return;
+
case 'e':
if (keylen == sizeof("feature_evalbytes")-1
&& memcmp(subf+1, "valbytes", keylen - sizeof("feature_")) == 0) {
@@ -293,7 +356,17 @@ S_magic_sethint_feature(pTHX_ SV *keysv, const char *keypv, STRLEN keylen,
return;
case 'm':
- if (keylen == sizeof("feature_multidimensional")-1
+ if (keylen == sizeof("feature_module_true")-1
+ && memcmp(subf+1, "odule_true", keylen - sizeof("feature_")) == 0) {
+ mask = FEATURE_MODULE_TRUE_BIT;
+ break;
+ }
+ else if (keylen == sizeof("feature_more_delims")-1
+ && memcmp(subf+1, "ore_delims", keylen - sizeof("feature_")) == 0) {
+ mask = FEATURE_MORE_DELIMS_BIT;
+ break;
+ }
+ else if (keylen == sizeof("feature_multidimensional")-1
&& memcmp(subf+1, "ultidimensional", keylen - sizeof("feature_")) == 0) {
mask = FEATURE_MULTIDIMENSIONAL_BIT;
break;
@@ -378,4 +451,4 @@ S_magic_sethint_feature(pTHX_ SV *keysv, const char *keypv, STRLEN keylen,
#endif /* PERL_FEATURE_H_ */
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/gv.h b/Master/tlpkg/tlperl/lib/CORE/gv.h
index 9b465a069d4..68865b99916 100644
--- a/Master/tlpkg/tlperl/lib/CORE/gv.h
+++ b/Master/tlpkg/tlperl/lib/CORE/gv.h
@@ -28,7 +28,7 @@ struct gp {
#if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS) && !defined(__INTEL_COMPILER)
# define GvGP(gv) \
- (0+(*({GV *const _gvgp = (GV *) (gv); \
+ ((GP *)(*({GV *const _gvgp = (GV *) (gv); \
assert(SvTYPE(_gvgp) == SVt_PVGV || SvTYPE(_gvgp) == SVt_PVLV); \
assert(isGV_with_GP(_gvgp)); \
&((_gvgp)->sv_u.svu_gp);})))
@@ -134,7 +134,7 @@ Return the CV from the GV.
GvGP(gv)->gp_hv : \
GvGP(gv_HVadd(gv))->gp_hv)
-#define GvCV(gv) (0+GvGP(gv)->gp_cv)
+#define GvCV(gv) ((CV*)GvGP(gv)->gp_cv)
#define GvCV_set(gv,cv) (GvGP(gv)->gp_cv = (cv))
#define GvCVGEN(gv) (GvGP(gv)->gp_cvgen)
#define GvCVu(gv) (GvGP(gv)->gp_cvgen ? NULL : GvGP(gv)->gp_cv)
@@ -162,7 +162,7 @@ Return the CV from the GV.
#define GVf_INTRO 0x01
#define GVf_MULTI 0x02
#define GVf_ASSUMECV 0x04
-/* UNUSED 0x08 */
+#define GVf_RESERVED 0x08 /* unused */
#define GVf_IMPORTED 0xF0
#define GVf_IMPORTED_SV 0x10
#define GVf_IMPORTED_AV 0x20
@@ -261,12 +261,15 @@ Return the CV from the GV.
found (with the exception GV_ADDMG, which *might* cause the symbol
to be added) */
+/* gv_fetchfile_flags() */
+#define GVF_NOADD 0x01 /* don't add the glob if it doesn't exist */
+
#define gv_fullname3(sv,gv,prefix) gv_fullname4(sv,gv,prefix,TRUE)
#define gv_efullname3(sv,gv,prefix) gv_efullname4(sv,gv,prefix,TRUE)
#define gv_fetchmethod(stash, name) gv_fetchmethod_autoload(stash, name, TRUE)
#define gv_fetchsv_nomg(n,f,t) gv_fetchsv(n,(f)|GV_NO_SVGMAGIC,t)
#define gv_init(gv,stash,name,len,multi) \
- gv_init_pvn(gv,stash,name,len,GV_ADDMULTI*!!(multi))
+ gv_init_pvn(gv,stash,name,len,GV_ADDMULTI*cBOOL(multi))
#define gv_fetchmeth(stash,name,len,level) gv_fetchmeth_pvn(stash, name, len, level, 0)
#define gv_fetchmeth_autoload(stash,name,len,level) gv_fetchmeth_pvn_autoload(stash, name, len, level, 0)
#define gv_fetchmethod_flags(stash,name,flags) gv_fetchmethod_pv_flags(stash, name, flags)
@@ -278,7 +281,7 @@ Equivalent to C<L</gv_autoload_pvn>>.
=cut
*/
#define gv_autoload4(stash, name, len, autoload) \
- gv_autoload_pvn(stash, name, len, !!(autoload))
+ gv_autoload_pvn(stash, name, len, cBOOL(autoload))
#define newGVgen(pack) newGVgen_flags(pack, 0)
#define gv_method_changed(gv) \
( \
@@ -288,6 +291,17 @@ Equivalent to C<L</gv_autoload_pvn>>.
: mro_method_changed_in(GvSTASH(gv)) \
)
+/*
+=for apidoc gv_AVadd
+=for apidoc_item gv_HVadd
+=for apidoc_item gv_IOadd
+=for apidoc_item gv_SVadd
+
+Make sure there is a slot of the given type (AV, HV, IO, SV) in the GV C<gv>.
+
+=cut
+*/
+
#define gv_AVadd(gv) gv_add_by_type((gv), SVt_PVAV)
#define gv_HVadd(gv) gv_add_by_type((gv), SVt_PVHV)
#define gv_IOadd(gv) gv_add_by_type((gv), SVt_PVIO)
diff --git a/Master/tlpkg/tlperl/lib/CORE/handy.h b/Master/tlpkg/tlperl/lib/CORE/handy.h
index 63441e2a224..1714584d4fd 100644
--- a/Master/tlpkg/tlperl/lib/CORE/handy.h
+++ b/Master/tlpkg/tlperl/lib/CORE/handy.h
@@ -70,13 +70,13 @@ from it, and are very unlikely to change
/*
=for apidoc_section $SV
-=for apidoc Am|void *|MUTABLE_PTR|void * p
-=for apidoc_item |AV *|MUTABLE_AV|AV * p
-=for apidoc_item |CV *|MUTABLE_CV|CV * p
-=for apidoc_item |GV *|MUTABLE_GV|GV * p
-=for apidoc_item |HV *|MUTABLE_HV|HV * p
-=for apidoc_item |IO *|MUTABLE_IO|IO * p
-=for apidoc_item |SV *|MUTABLE_SV|SV * p
+=for apidoc Am |AV * |MUTABLE_AV |AV * p
+=for apidoc_item |CV * |MUTABLE_CV |CV * p
+=for apidoc_item |GV * |MUTABLE_GV |GV * p
+=for apidoc_item |HV * |MUTABLE_HV |HV * p
+=for apidoc_item |IO * |MUTABLE_IO |IO * p
+=for apidoc_item |void *|MUTABLE_PTR|void * p
+=for apidoc_item |SV * |MUTABLE_SV |SV * p
The C<MUTABLE_I<*>>() macros cast pointers to the types shown, in such a way
(compiler permitting) that casting away const-ness will give a warning;
@@ -91,8 +91,10 @@ C<MUTABLE_PTR> is the base macro used to derive new casts. The other
already-built-in ones return pointers to what their names indicate.
=cut
- */
+The brace group version will raise a diagnostic if 'p' is const; the other
+blindly casts away const.
+ */
#if defined(PERL_USE_GCC_BRACE_GROUPS)
# define MUTABLE_PTR(p) ({ void *p_ = (p); p_; })
#else
@@ -106,50 +108,51 @@ already-built-in ones return pointers to what their names indicate.
#define MUTABLE_IO(p) ((IO *)MUTABLE_PTR(p))
#define MUTABLE_SV(p) ((SV *)MUTABLE_PTR(p))
-#if defined(I_STDBOOL) && !defined(PERL_BOOL_AS_CHAR)
-# include <stdbool.h>
-# ifndef HAS_BOOL
-# define HAS_BOOL 1
-# endif
-#endif
+/*
+=for apidoc_section $SV
+=for apidoc Am |AV *|AV_FROM_REF|SV * ref
+=for apidoc_item |CV *|CV_FROM_REF|SV * ref
+=for apidoc_item |HV *|HV_FROM_REF|SV * ref
+
+The C<I<*>V_FROM_REF> macros extract the C<SvRV()> from a given reference SV
+and return a suitably-cast to pointer to the referenced SV. When running
+under C<-DDEBUGGING>, assertions are also applied that check that I<ref> is
+definitely a reference SV that refers to an SV of the right type.
-/* bool is built-in for g++-2.6.3 and later, which might be used
- for extensions. <_G_config.h> defines _G_HAVE_BOOL, but we can't
- be sure _G_config.h will be included before this file. _G_config.h
- also defines _G_HAVE_BOOL for both gcc and g++, but only g++
- actually has bool. Hence, _G_HAVE_BOOL is pretty useless for us.
- g++ can be identified by __GNUG__.
- Andy Dougherty February 2000
+=cut
*/
-#ifdef __GNUG__ /* GNU g++ has bool built-in */
-# ifndef PERL_BOOL_AS_CHAR
-# ifndef HAS_BOOL
-# define HAS_BOOL 1
-# endif
-# endif
+
+#if defined(DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS)
+# define xV_FROM_REF(XV, ref) \
+ ({ SV *_ref = ref; \
+ assert(SvROK(_ref)); \
+ assert(SvTYPE(SvRV(_ref)) == SVt_PV ## XV); \
+ (XV *)(SvRV(_ref)); })
+#else
+# define xV_FROM_REF(XV, ref) ((XV *)(SvRV(ref)))
#endif
-#ifndef HAS_BOOL
-# ifdef bool
-# undef bool
-# endif
-# define bool char
-# define HAS_BOOL 1
+#define AV_FROM_REF(ref) xV_FROM_REF(AV, ref)
+#define CV_FROM_REF(ref) xV_FROM_REF(CV, ref)
+#define HV_FROM_REF(ref) xV_FROM_REF(HV, ref)
+
+#ifndef __cplusplus
+# include <stdbool.h>
#endif
/*
=for apidoc_section $casting
=for apidoc Am|bool|cBOOL|bool expr
-Cast-to-bool. A simple S<C<(bool) I<expr>>> cast may not do the right thing:
-if C<bool> is defined as C<char>, for example, then the cast from C<int> is
-implementation-defined.
-
-C<(bool)!!(cbool)> in a ternary triggers a bug in xlc on AIX
+Cast-to-bool. When Perl was able to be compiled on pre-C99 compilers, a
+C<(bool)> cast didn't necessarily do the right thing, so this macro was
+created (and made somewhat complicated to work around bugs in old
+compilers). Now, many years later, and C99 is used, this is no longer
+required, but is kept for backwards compatibility.
=cut
*/
-#define cBOOL(cbool) ((cbool) ? (bool)1 : (bool)0)
+#define cBOOL(cbool) ((bool) (cbool))
/* Try to figure out __func__ or __FUNCTION__ equivalent, if any.
* XXX Should really be a Configure probe, with HAS__FUNCTION__
@@ -157,10 +160,13 @@ C<(bool)!!(cbool)> in a ternary triggers a bug in xlc on AIX
* XXX Similarly, a Configure probe for __FILE__ and __LINE__ is needed. */
#if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || (defined(__SUNPRO_C)) /* C99 or close enough. */
# define FUNCTION__ __func__
-#elif (defined(__DECC_VER)) /* Tru64 or VMS, and strict C89 being used, but not modern enough cc (in Tur64, -c99 not known, only -std1). */
-# define FUNCTION__ ""
+# define SAFE_FUNCTION__ __func__
+#elif (defined(__DECC_VER)) /* Tru64 or VMS, and strict C89 being used, but not modern enough cc (in Tru64, -c99 not known, only -std1). */
+# define FUNCTION__ ("")
+# define SAFE_FUNCTION__ ("UNKNOWN")
#else
# define FUNCTION__ __FUNCTION__ /* Common extension. */
+# define SAFE_FUNCTION__ __FUNCTION__ /* Common extension. */
#endif
/* XXX A note on the perl source internal type system. The
@@ -297,17 +303,17 @@ don't, so that you can portably take advantage of this C99 feature.
=cut
*/
-# ifdef I_STDINT
+#ifdef I_STDINT
typedef int_fast8_t PERL_INT_FAST8_T;
typedef uint_fast8_t PERL_UINT_FAST8_T;
typedef int_fast16_t PERL_INT_FAST16_T;
typedef uint_fast16_t PERL_UINT_FAST16_T;
-# else
+#else
typedef int PERL_INT_FAST8_T;
typedef unsigned int PERL_UINT_FAST8_T;
typedef int PERL_INT_FAST16_T;
typedef unsigned int PERL_UINT_FAST16_T;
-# endif
+#endif
/* log(2) (i.e., log base 10 of 2) is pretty close to 0.30103, just in case
* anyone is grepping for it. So BIT_DIGITS gives the number of decimal digits
@@ -397,14 +403,6 @@ string/length pair.
Like C<sv_catpvn_mg>, but takes a literal string instead of a
string/length pair.
-=for apidoc Am|void|sv_setpvs|SV* sv|"literal string"
-Like C<sv_setpvn>, but takes a literal string instead of a
-string/length pair.
-
-=for apidoc Am|void|sv_setpvs_mg|SV* sv|"literal string"
-Like C<sv_setpvn_mg>, but takes a literal string instead of a
-string/length pair.
-
=for apidoc Am|SV *|sv_setref_pvs|SV *const rv|const char *const classname|"literal string"
Like C<sv_setref_pvn>, but takes a literal string instead of
a string/length pair.
@@ -430,12 +428,6 @@ string/length pair.
=for apidoc Am|SV**|hv_fetchs|HV* tb|"key"|I32 lval
Like C<hv_fetch>, but takes a literal string instead of a
string/length pair.
-
-=for apidoc Am|SV**|hv_stores|HV* tb|"key"|SV* val
-Like C<hv_store>, but takes a literal string instead of a
-string/length pair
-and omits the hash parameter.
-
=for apidoc_section $lexer
=for apidoc Amx|void|lex_stuff_pvs|"pv"|U32 flags
@@ -446,6 +438,8 @@ a string/length pair.
=cut
*/
+#define ASSERT_IS_LITERAL(s) ("" s "")
+
/*
=for apidoc_section $string
@@ -460,7 +454,7 @@ Perl_xxx(aTHX_ ...) form for any API calls where it's used.
=cut
*/
-#define STR_WITH_LEN(s) ("" s ""), (sizeof(s)-1)
+#define STR_WITH_LEN(s) ASSERT_IS_LITERAL(s), (sizeof(s)-1)
/* STR_WITH_LEN() shortcuts */
#define newSVpvs(str) Perl_newSVpvn(aTHX_ STR_WITH_LEN(str))
@@ -487,8 +481,6 @@ Perl_xxx(aTHX_ ...) form for any API calls where it's used.
#define gv_fetchpvs(namebeg, flags, sv_type) \
Perl_gv_fetchpvn_flags(aTHX_ STR_WITH_LEN(namebeg), flags, sv_type)
#define gv_fetchpvn gv_fetchpvn_flags
-#define sv_catxmlpvs(dsv, str, utf8) \
- Perl_sv_catxmlpvn(aTHX_ dsv, STR_WITH_LEN(str), utf8)
#define lex_stuff_pvs(pv,flags) Perl_lex_stuff_pvn(aTHX_ STR_WITH_LEN(pv), flags)
@@ -524,11 +516,11 @@ Perl_xxx(aTHX_ ...) form for any API calls where it's used.
/*
=for apidoc_section $versioning
=for apidoc AmR|bool|PERL_VERSION_EQ|const U8 major|const U8 minor|const U8 patch
-=for apidoc_item PERL_VERSION_NE
-=for apidoc_item PERL_VERSION_LT
-=for apidoc_item PERL_VERSION_LE
-=for apidoc_item PERL_VERSION_GT
=for apidoc_item PERL_VERSION_GE
+=for apidoc_item PERL_VERSION_GT
+=for apidoc_item PERL_VERSION_LE
+=for apidoc_item PERL_VERSION_LT
+=for apidoc_item PERL_VERSION_NE
Returns whether or not the perl currently being compiled has the specified
relationship to the perl given by the parameters. For example,
@@ -651,7 +643,7 @@ C<l1> gives the number of bytes in C<s1>.
Returns true or false.
=for apidoc Am|bool|memCHRs|"list"|char c
-Returns the position of the first occurence of the byte C<c> in the literal
+Returns the position of the first occurrence of the byte C<c> in the literal
string C<"list">, or NULL if C<c> doesn't appear in C<"list">. All bytes are
treated as unsigned char. Thus this macro can be used to determine if C<c> is
in a set of particular characters. Unlike L<strchr(3)>, it works even if C<c>
@@ -721,26 +713,26 @@ based on the underlying C library functions):
/* memEQ and memNE where second comparand is a string constant */
#define memEQs(s1, l, s2) \
- (((sizeof(s2)-1) == (l)) && memEQ((s1), ("" s2 ""), (sizeof(s2)-1)))
+ (((sizeof(s2)-1) == (l)) && memEQ((s1), ASSERT_IS_LITERAL(s2), (sizeof(s2)-1)))
#define memNEs(s1, l, s2) (! memEQs(s1, l, s2))
/* Keep these private until we decide it was a good idea */
#if defined(PERL_CORE) || defined(PERL_EXT) || defined(PERL_EXT_POSIX)
-#define strBEGINs(s1,s2) (strncmp(s1,"" s2 "", sizeof(s2)-1) == 0)
+#define strBEGINs(s1,s2) (strncmp(s1,ASSERT_IS_LITERAL(s2), sizeof(s2)-1) == 0)
#define memBEGINs(s1, l, s2) \
( (Ptrdiff_t) (l) >= (Ptrdiff_t) sizeof(s2) - 1 \
- && memEQ(s1, "" s2 "", sizeof(s2)-1))
+ && memEQ(s1, ASSERT_IS_LITERAL(s2), sizeof(s2)-1))
#define memBEGINPs(s1, l, s2) \
( (Ptrdiff_t) (l) > (Ptrdiff_t) sizeof(s2) - 1 \
- && memEQ(s1, "" s2 "", sizeof(s2)-1))
+ && memEQ(s1, ASSERT_IS_LITERAL(s2), sizeof(s2)-1))
#define memENDs(s1, l, s2) \
( (Ptrdiff_t) (l) >= (Ptrdiff_t) sizeof(s2) - 1 \
- && memEQ(s1 + (l) - (sizeof(s2) - 1), "" s2 "", sizeof(s2)-1))
+ && memEQ(s1 + (l) - (sizeof(s2) - 1), ASSERT_IS_LITERAL(s2), sizeof(s2)-1))
#define memENDPs(s1, l, s2) \
( (Ptrdiff_t) (l) > (Ptrdiff_t) sizeof(s2) \
- && memEQ(s1 + (l) - (sizeof(s2) - 1), "" s2 "", sizeof(s2)-1))
+ && memEQ(s1 + (l) - (sizeof(s2) - 1), ASSERT_IS_LITERAL(s2), sizeof(s2)-1))
#endif /* End of making macros private */
#define memLT(s1,s2,l) (memcmp(s1,s2,l) < 0)
@@ -748,7 +740,7 @@ based on the underlying C library functions):
#define memGT(s1,s2,l) (memcmp(s1,s2,l) > 0)
#define memGE(s1,s2,l) (memcmp(s1,s2,l) >= 0)
-#define memCHRs(s1,c) ((const char *) memchr("" s1 "" , c, sizeof(s1)-1))
+#define memCHRs(s1,c) ((const char *) memchr(ASSERT_IS_LITERAL(s1) , c, sizeof(s1)-1))
/*
* Character classes.
@@ -758,12 +750,12 @@ based on the underlying C library functions):
* it comes to /\w+/ with tainting enabled, we *must* be able
* to trust our character classes.
*
- * Therefore, the default tests in the text of Perl will be
- * independent of locale. Any code that wants to depend on
- * the current locale will use the tests that begin with "lc".
+ * Therefore, the default tests in the text of Perl will be independent of
+ * locale. Any code that wants to depend on the current locale will use the
+ * macros that contain _LC in their names
*/
-#ifdef USE_LOCALE
+#ifdef USE_LOCALE_CTYPE
# ifndef CTYPE256
# define CTYPE256
# endif
@@ -847,13 +839,13 @@ future releases.
=for apidoc Am|bool|isALPHA|UV ch
=for apidoc_item ||isALPHA_A|UV ch
-=for apidoc_item ||isALPHA_L1|UV ch
-=for apidoc_item ||isALPHA_uvchr|UV ch
-=for apidoc_item ||isALPHA_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isALPHA_utf8|U8 * s|U8 * end
=for apidoc_item ||isALPHA_LC|UV ch
-=for apidoc_item ||isALPHA_LC_uvchr|UV ch
=for apidoc_item ||isALPHA_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isALPHA_LC_uvchr|UV ch
+=for apidoc_item ||isALPHA_L1|UV ch
+=for apidoc_item ||isALPHA_utf8|U8 * s|U8 * end
+=for apidoc_item ||isALPHA_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isALPHA_uvchr|UV ch
Returns a boolean indicating whether the specified input is one of C<[A-Za-z]>,
analogous to C<m/[[:alpha:]]/>.
See the L<top of this section|/Character classification> for an explanation of
@@ -866,38 +858,39 @@ that would be interested in them, such as Devel::PPPort
=for apidoc Am|bool|isALPHANUMERIC|UV ch
=for apidoc_item ||isALPHANUMERIC_A|UV ch
-=for apidoc_item ||isALPHANUMERIC_L1|UV ch
-=for apidoc_item ||isALPHANUMERIC_uvchr|UV ch
-=for apidoc_item ||isALPHANUMERIC_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isALPHANUMERIC_utf8|U8 * s|U8 * end
=for apidoc_item ||isALPHANUMERIC_LC|UV ch
-=for apidoc_item ||isALPHANUMERIC_LC_uvchr|UV ch
=for apidoc_item ||isALPHANUMERIC_LC_utf8_safe|U8 * s| U8 *end
-=for apidoc_item ||isALNUMC|UV ch
-=for apidoc_item ||isALNUMC_A|UV ch
-=for apidoc_item ||isALNUMC_L1|UV ch
-=for apidoc_item ||isALNUMC_LC|UV ch
-=for apidoc_item ||isALNUMC_LC_uvchr|UV ch
+=for apidoc_item ||isALPHANUMERIC_LC_uvchr|UV ch
+=for apidoc_item ||isALPHANUMERIC_L1|UV ch
+=for apidoc_item ||isALPHANUMERIC_utf8|U8 * s|U8 * end
+=for apidoc_item ||isALPHANUMERIC_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isALPHANUMERIC_uvchr|UV ch
Returns a boolean indicating whether the specified character is one of
C<[A-Za-z0-9]>, analogous to C<m/[[:alnum:]]/>.
See the L<top of this section|/Character classification> for an explanation of
the variants.
-A (discouraged from use) synonym is C<isALNUMC> (where the C<C> suffix means
-this corresponds to the C language alphanumeric definition). Also
-there are the variants
-C<isALNUMC_A>, C<isALNUMC_L1>
-C<isALNUMC_LC>, and C<isALNUMC_LC_uvchr>.
+=for apidoc Am|bool|isALNUMC|UV ch
+=for apidoc_item ||isALNUMC_A|UV ch
+=for apidoc_item ||isALNUMC_LC|UV ch
+=for apidoc_item ||isALNUMC_LC_uvchr|UV ch
+=for apidoc_item ||isALNUMC_L1|UV ch
+These are discouraged, backward compatibility macros for L</C<isALPHANUMERIC>>.
+That is, each returns a boolean indicating whether the specified character is
+one of C<[A-Za-z0-9]>, analogous to C<m/[[:alnum:]]/>.
+
+The C<C> suffix in the names was meant to indicate that they correspond to the
+C language L<C<isalnum(3)>>.
=for apidoc Am|bool|isASCII|UV ch
=for apidoc_item ||isASCII_A|UV ch
-=for apidoc_item ||isASCII_L1|UV ch
-=for apidoc_item ||isASCII_uvchr|UV ch
-=for apidoc_item ||isASCII_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isASCII_utf8|U8 * s|U8 * end
=for apidoc_item ||isASCII_LC|UV ch
-=for apidoc_item ||isASCII_LC_uvchr|UV ch
=for apidoc_item ||isASCII_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isASCII_LC_uvchr|UV ch
+=for apidoc_item ||isASCII_L1|UV ch
+=for apidoc_item ||isASCII_utf8|U8 * s|U8 * end
+=for apidoc_item ||isASCII_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isASCII_uvchr|UV ch
Returns a boolean indicating whether the specified character is one of the 128
characters in the ASCII character set, analogous to C<m/[[:ascii:]]/>.
On non-ASCII platforms, it returns TRUE iff this
@@ -917,13 +910,13 @@ C<isASCII_utf8_safe> will work properly on any string encoded or not in UTF-8.
=for apidoc Am|bool|isBLANK|UV ch
=for apidoc_item ||isBLANK_A|UV ch
-=for apidoc_item ||isBLANK_L1|UV ch
-=for apidoc_item ||isBLANK_uvchr|UV ch
-=for apidoc_item ||isBLANK_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isBLANK_utf8|U8 * s|U8 * end
=for apidoc_item ||isBLANK_LC|UV ch
-=for apidoc_item ||isBLANK_LC_uvchr|UV ch
=for apidoc_item ||isBLANK_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isBLANK_LC_uvchr|UV ch
+=for apidoc_item ||isBLANK_L1|UV ch
+=for apidoc_item ||isBLANK_utf8|U8 * s|U8 * end
+=for apidoc_item ||isBLANK_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isBLANK_uvchr|UV ch
Returns a boolean indicating whether the specified character is a
character considered to be a blank, analogous to C<m/[[:blank:]]/>.
See the L<top of this section|/Character classification> for an explanation of
@@ -935,13 +928,13 @@ the same as the corresponding ones without.
=for apidoc Am|bool|isCNTRL|UV ch
=for apidoc_item ||isCNTRL_A|UV ch
-=for apidoc_item ||isCNTRL_L1|UV ch
-=for apidoc_item ||isCNTRL_uvchr|UV ch
-=for apidoc_item ||isCNTRL_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isCNTRL_utf8|U8 * s|U8 * end
=for apidoc_item ||isCNTRL_LC|UV ch
-=for apidoc_item ||isCNTRL_LC_uvchr|UV ch
=for apidoc_item ||isCNTRL_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isCNTRL_LC_uvchr|UV ch
+=for apidoc_item ||isCNTRL_L1|UV ch
+=for apidoc_item ||isCNTRL_utf8|U8 * s|U8 * end
+=for apidoc_item ||isCNTRL_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isCNTRL_uvchr|UV ch
Returns a boolean indicating whether the specified character is a
control character, analogous to C<m/[[:cntrl:]]/>.
@@ -951,13 +944,13 @@ On EBCDIC platforms, you almost always want to use the C<isCNTRL_L1> variant.
=for apidoc Am|bool|isDIGIT|UV ch
=for apidoc_item ||isDIGIT_A|UV ch
-=for apidoc_item ||isDIGIT_L1|UV ch
-=for apidoc_item ||isDIGIT_uvchr|UV ch
-=for apidoc_item ||isDIGIT_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isDIGIT_utf8|U8 * s|U8 * end
=for apidoc_item ||isDIGIT_LC|UV ch
-=for apidoc_item ||isDIGIT_LC_uvchr|UV ch
=for apidoc_item ||isDIGIT_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isDIGIT_LC_uvchr|UV ch
+=for apidoc_item ||isDIGIT_L1|UV ch
+=for apidoc_item ||isDIGIT_utf8|U8 * s|U8 * end
+=for apidoc_item ||isDIGIT_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isDIGIT_uvchr|UV ch
Returns a boolean indicating whether the specified character is a
digit, analogous to C<m/[[:digit:]]/>.
@@ -967,13 +960,13 @@ the variants.
=for apidoc Am|bool|isGRAPH|UV ch
=for apidoc_item ||isGRAPH_A|UV ch
-=for apidoc_item ||isGRAPH_L1|UV ch
-=for apidoc_item ||isGRAPH_uvchr|UV ch
-=for apidoc_item ||isGRAPH_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isGRAPH_utf8|U8 * s|U8 * end
=for apidoc_item ||isGRAPH_LC|UV ch
-=for apidoc_item ||isGRAPH_LC_uvchr|UV ch
=for apidoc_item ||isGRAPH_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isGRAPH_LC_uvchr|UV ch
+=for apidoc_item ||isGRAPH_L1|UV ch
+=for apidoc_item ||isGRAPH_utf8|U8 * s|U8 * end
+=for apidoc_item ||isGRAPH_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isGRAPH_uvchr|UV ch
Returns a boolean indicating whether the specified character is a
graphic character, analogous to C<m/[[:graph:]]/>.
See the L<top of this section|/Character classification> for an explanation of
@@ -981,13 +974,13 @@ the variants.
=for apidoc Am|bool|isLOWER|UV ch
=for apidoc_item ||isLOWER_A|UV ch
-=for apidoc_item ||isLOWER_L1|UV ch
-=for apidoc_item ||isLOWER_uvchr|UV ch
-=for apidoc_item ||isLOWER_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isLOWER_utf8|U8 * s|U8 * end
=for apidoc_item ||isLOWER_LC|UV ch
-=for apidoc_item ||isLOWER_LC_uvchr|UV ch
=for apidoc_item ||isLOWER_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isLOWER_LC_uvchr|UV ch
+=for apidoc_item ||isLOWER_L1|UV ch
+=for apidoc_item ||isLOWER_utf8|U8 * s|U8 * end
+=for apidoc_item ||isLOWER_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isLOWER_uvchr|UV ch
Returns a boolean indicating whether the specified character is a
lowercase character, analogous to C<m/[[:lower:]]/>.
See the L<top of this section|/Character classification> for an explanation of
@@ -1003,13 +996,13 @@ C<isOCTAL>.
=for apidoc Am|bool|isPUNCT|UV ch
=for apidoc_item ||isPUNCT_A|UV ch
-=for apidoc_item ||isPUNCT_L1|UV ch
-=for apidoc_item ||isPUNCT_uvchr|UV ch
-=for apidoc_item ||isPUNCT_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isPUNCT_utf8|U8 * s|U8 * end
=for apidoc_item ||isPUNCT_LC|UV ch
-=for apidoc_item ||isPUNCT_LC_uvchr|UV ch
=for apidoc_item ||isPUNCT_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isPUNCT_LC_uvchr|UV ch
+=for apidoc_item ||isPUNCT_L1|UV ch
+=for apidoc_item ||isPUNCT_utf8|U8 * s|U8 * end
+=for apidoc_item ||isPUNCT_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isPUNCT_uvchr|UV ch
Returns a boolean indicating whether the specified character is a
punctuation character, analogous to C<m/[[:punct:]]/>.
Note that the definition of what is punctuation isn't as
@@ -1020,13 +1013,13 @@ the variants.
=for apidoc Am|bool|isSPACE|UV ch
=for apidoc_item ||isSPACE_A|UV ch
-=for apidoc_item ||isSPACE_L1|UV ch
-=for apidoc_item ||isSPACE_uvchr|UV ch
-=for apidoc_item ||isSPACE_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isSPACE_utf8|U8 * s|U8 * end
=for apidoc_item ||isSPACE_LC|UV ch
-=for apidoc_item ||isSPACE_LC_uvchr|UV ch
=for apidoc_item ||isSPACE_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isSPACE_LC_uvchr|UV ch
+=for apidoc_item ||isSPACE_L1|UV ch
+=for apidoc_item ||isSPACE_utf8|U8 * s|U8 * end
+=for apidoc_item ||isSPACE_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isSPACE_uvchr|UV ch
Returns a boolean indicating whether the specified character is a
whitespace character. This is analogous
to what C<m/\s/> matches in a regular expression. Starting in Perl 5.18
@@ -1040,13 +1033,13 @@ the variants.
=for apidoc Am|bool|isPSXSPC|UV ch
=for apidoc_item ||isPSXSPC_A|UV ch
-=for apidoc_item ||isPSXSPC_L1|UV ch
-=for apidoc_item ||isPSXSPC_uvchr|UV ch
-=for apidoc_item ||isPSXSPC_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isPSXSPC_utf8|U8 * s|U8 * end
=for apidoc_item ||isPSXSPC_LC|UV ch
-=for apidoc_item ||isPSXSPC_LC_uvchr|UV ch
=for apidoc_item ||isPSXSPC_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isPSXSPC_LC_uvchr|UV ch
+=for apidoc_item ||isPSXSPC_L1|UV ch
+=for apidoc_item ||isPSXSPC_utf8|U8 * s|U8 * end
+=for apidoc_item ||isPSXSPC_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isPSXSPC_uvchr|UV ch
(short for Posix Space)
Starting in 5.18, this is identical in all its forms to the
corresponding C<isSPACE()> macros.
@@ -1061,13 +1054,13 @@ the variants.
=for apidoc Am|bool|isUPPER|UV ch
=for apidoc_item ||isUPPER_A|UV ch
-=for apidoc_item ||isUPPER_L1|UV ch
-=for apidoc_item ||isUPPER_uvchr|UV ch
-=for apidoc_item ||isUPPER_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isUPPER_utf8|U8 * s|U8 * end
=for apidoc_item ||isUPPER_LC|UV ch
-=for apidoc_item ||isUPPER_LC_uvchr|UV ch
=for apidoc_item ||isUPPER_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isUPPER_LC_uvchr|UV ch
+=for apidoc_item ||isUPPER_L1|UV ch
+=for apidoc_item ||isUPPER_utf8|U8 * s|U8 * end
+=for apidoc_item ||isUPPER_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isUPPER_uvchr|UV ch
Returns a boolean indicating whether the specified character is an
uppercase character, analogous to C<m/[[:upper:]]/>.
See the L<top of this section|/Character classification> for an explanation of
@@ -1075,13 +1068,13 @@ the variants.
=for apidoc Am|bool|isPRINT|UV ch
=for apidoc_item ||isPRINT_A|UV ch
-=for apidoc_item ||isPRINT_L1|UV ch
-=for apidoc_item ||isPRINT_uvchr|UV ch
-=for apidoc_item ||isPRINT_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isPRINT_utf8|U8 * s|U8 * end
=for apidoc_item ||isPRINT_LC|UV ch
-=for apidoc_item ||isPRINT_LC_uvchr|UV ch
=for apidoc_item ||isPRINT_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isPRINT_LC_uvchr|UV ch
+=for apidoc_item ||isPRINT_L1|UV ch
+=for apidoc_item ||isPRINT_utf8|U8 * s|U8 * end
+=for apidoc_item ||isPRINT_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isPRINT_uvchr|UV ch
Returns a boolean indicating whether the specified character is a
printable character, analogous to C<m/[[:print:]]/>.
See the L<top of this section|/Character classification> for an explanation of
@@ -1089,41 +1082,48 @@ the variants.
=for apidoc Am|bool|isWORDCHAR|UV ch
=for apidoc_item ||isWORDCHAR_A|UV ch
-=for apidoc_item ||isWORDCHAR_L1|UV ch
-=for apidoc_item ||isWORDCHAR_uvchr|UV ch
-=for apidoc_item ||isWORDCHAR_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isWORDCHAR_utf8|U8 * s|U8 * end
=for apidoc_item ||isWORDCHAR_LC|UV ch
-=for apidoc_item ||isWORDCHAR_LC_uvchr|UV ch
=for apidoc_item ||isWORDCHAR_LC_utf8_safe|U8 * s| U8 *end
-=for apidoc_item ||isALNUM|UV ch
-=for apidoc_item ||isALNUM_A|UV ch
-=for apidoc_item ||isALNUM_LC|UV ch
-=for apidoc_item ||isALNUM_LC_uvchr|UV ch
+=for apidoc_item ||isWORDCHAR_LC_uvchr|UV ch
+=for apidoc_item ||isWORDCHAR_L1|UV ch
+=for apidoc_item ||isWORDCHAR_utf8|U8 * s|U8 * end
+=for apidoc_item ||isWORDCHAR_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isWORDCHAR_uvchr|UV ch
Returns a boolean indicating whether the specified character is a character
that is a word character, analogous to what C<m/\w/> and C<m/[[:word:]]/> match
in a regular expression. A word character is an alphabetic character, a
decimal digit, a connecting punctuation character (such as an underscore), or
a "mark" character that attaches to one of those (like some sort of accent).
-C<isALNUM()> is a synonym provided for backward compatibility, even though a
-word character includes more than the standard C language meaning of
-alphanumeric.
+
See the L<top of this section|/Character classification> for an explanation of
the variants.
+
C<isWORDCHAR_A>, C<isWORDCHAR_L1>, C<isWORDCHAR_uvchr>,
C<isWORDCHAR_LC>, C<isWORDCHAR_LC_uvchr>, C<isWORDCHAR_LC_utf8>, and
C<isWORDCHAR_LC_utf8_safe> are also as described there, but additionally
include the platform's native underscore.
+=for apidoc Am|bool|isALNUM |UV ch
+=for apidoc_item ||isALNUM_A |UV ch
+=for apidoc_item ||isALNUM_LC |UV ch
+=for apidoc_item ||isALNUM_LC_uvchr|UV ch
+These are each a synonym for their respectively named L</C<isWORDCHAR>>
+variant.
+
+They are provided for backward compatibility, even though a word character
+includes more than the standard C language meaning of alphanumeric.
+To get the C language definition, use the corresponding L</C<isALPHANUMERIC>>
+variant.
+
=for apidoc Am|bool|isXDIGIT|UV ch
=for apidoc_item ||isXDIGIT_A|UV ch
-=for apidoc_item ||isXDIGIT_L1|UV ch
-=for apidoc_item ||isXDIGIT_uvchr|UV ch
-=for apidoc_item ||isXDIGIT_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isXDIGIT_utf8|U8 * s|U8 * end
=for apidoc_item ||isXDIGIT_LC|UV ch
-=for apidoc_item ||isXDIGIT_LC_uvchr|UV ch
=for apidoc_item ||isXDIGIT_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isXDIGIT_LC_uvchr|UV ch
+=for apidoc_item ||isXDIGIT_L1|UV ch
+=for apidoc_item ||isXDIGIT_utf8|U8 * s|U8 * end
+=for apidoc_item ||isXDIGIT_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isXDIGIT_uvchr|UV ch
Returns a boolean indicating whether the specified character is a hexadecimal
digit. In the ASCII range these are C<[0-9A-Fa-f]>. Variants C<isXDIGIT_A()>
and C<isXDIGIT_L1()> are identical to C<isXDIGIT()>.
@@ -1132,13 +1132,13 @@ the variants.
=for apidoc Am|bool|isIDFIRST|UV ch
=for apidoc_item ||isIDFIRST_A|UV ch
-=for apidoc_item ||isIDFIRST_L1|UV ch
-=for apidoc_item ||isIDFIRST_uvchr|UV ch
-=for apidoc_item ||isIDFIRST_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isIDFIRST_utf8|U8 * s|U8 * end
=for apidoc_item ||isIDFIRST_LC|UV ch
-=for apidoc_item ||isIDFIRST_LC_uvchr|UV ch
=for apidoc_item ||isIDFIRST_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isIDFIRST_LC_uvchr|UV ch
+=for apidoc_item ||isIDFIRST_L1|UV ch
+=for apidoc_item ||isIDFIRST_utf8|U8 * s|U8 * end
+=for apidoc_item ||isIDFIRST_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isIDFIRST_uvchr|UV ch
Returns a boolean indicating whether the specified character can be the first
character of an identifier. This is very close to, but not quite the same as
the official Unicode property C<XID_Start>. The difference is that this
@@ -1148,13 +1148,13 @@ the variants.
=for apidoc Am|bool|isIDCONT|UV ch
=for apidoc_item ||isIDCONT_A|UV ch
-=for apidoc_item ||isIDCONT_L1|UV ch
-=for apidoc_item ||isIDCONT_uvchr|UV ch
-=for apidoc_item ||isIDCONT_utf8_safe|U8 * s|U8 * end
-=for apidoc_item ||isIDCONT_utf8|U8 * s|U8 * end
=for apidoc_item ||isIDCONT_LC|UV ch
-=for apidoc_item ||isIDCONT_LC_uvchr|UV ch
=for apidoc_item ||isIDCONT_LC_utf8_safe|U8 * s| U8 *end
+=for apidoc_item ||isIDCONT_LC_uvchr|UV ch
+=for apidoc_item ||isIDCONT_L1|UV ch
+=for apidoc_item ||isIDCONT_utf8|U8 * s|U8 * end
+=for apidoc_item ||isIDCONT_utf8_safe|U8 * s|U8 * end
+=for apidoc_item ||isIDCONT_uvchr|UV ch
Returns a boolean indicating whether the specified character can be the
second or succeeding character of an identifier. This is very close to, but
not quite the same as the official Unicode property C<XID_Continue>. The
@@ -1180,88 +1180,117 @@ an API that does allow every possible legal result to be returned.) Likewise
no other function that is crippled by not being able to give the correct
results for the full range of possible inputs has been implemented here.
-=for apidoc Am|U8|toUPPER|int ch
-Converts the specified character to uppercase. If the input is anything but an
-ASCII lowercase character, that input character itself is returned. Variant
-C<toUPPER_A> is equivalent.
-
-=for apidoc Am|UV|toUPPER_uvchr|UV cp|U8* s|STRLEN* lenp
-Converts the code point C<cp> to its uppercase version, and
-stores that in UTF-8 in C<s>, and its length in bytes in C<lenp>. The code
-point is interpreted as native if less than 256; otherwise as Unicode. Note
-that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1>
-bytes since the uppercase version may be longer than the original character.
-
-The first code point of the uppercased version is returned
-(but note, as explained at L<the top of this section|/Character case
-changing>, that there may be more.)
-
-=for apidoc Am|UV|toUPPER_utf8|U8* p|U8* e|U8* s|STRLEN* lenp
-=for apidoc_item toUPPER_utf8_safe
-Converts the first UTF-8 encoded character in the sequence starting at C<p> and
-extending no further than S<C<e - 1>> to its uppercase version, and
-stores that in UTF-8 in C<s>, and its length in bytes in C<lenp>. Note
-that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1>
-bytes since the uppercase version may be longer than the original character.
-
-The first code point of the uppercased version is returned
-(but note, as explained at L<the top of this section|/Character case
-changing>, that there may be more).
-
-It will not attempt to read beyond S<C<e - 1>>, provided that the constraint
-S<C<s E<lt> e>> is true (this is asserted for in C<-DDEBUGGING> builds). If
-the UTF-8 for the input character is malformed in some way, the program may
-croak, or the function may return the REPLACEMENT CHARACTER, at the discretion
-of the implementation, and subject to change in future releases.
-
-C<toUPPER_utf8_safe> is now just a different spelling of plain C<toUPPER_utf8>
-
-=for apidoc Am|U8|toFOLD|U8 ch
-Converts the specified character to foldcase. If the input is anything but an
-ASCII uppercase character, that input character itself is returned. Variant
-C<toFOLD_A> is equivalent. (There is no equivalent C<to_FOLD_L1> for the full
-Latin1 range, as the full generality of L</toFOLD_uvchr> is needed there.)
-
-=for apidoc Am|UV|toFOLD_uvchr|UV cp|U8* s|STRLEN* lenp
-Converts the code point C<cp> to its foldcase version, and
-stores that in UTF-8 in C<s>, and its length in bytes in C<lenp>. The code
-point is interpreted as native if less than 256; otherwise as Unicode. Note
-that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1>
-bytes since the foldcase version may be longer than the original character.
-
-The first code point of the foldcased version is returned
-(but note, as explained at L<the top of this section|/Character case
-changing>, that there may be more).
-
-=for apidoc Am|UV|toFOLD_utf8|U8* p|U8* e|U8* s|STRLEN* lenp
-=for apidoc_item toFOLD_utf8_safe
-Converts the first UTF-8 encoded character in the sequence starting at C<p> and
-extending no further than S<C<e - 1>> to its foldcase version, and
-stores that in UTF-8 in C<s>, and its length in bytes in C<lenp>. Note
-that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1>
-bytes since the foldcase version may be longer than the original character.
-
-The first code point of the foldcased version is returned
-(but note, as explained at L<the top of this section|/Character case
-changing>, that there may be more).
-
-It will not attempt
-to read beyond S<C<e - 1>>, provided that the constraint S<C<s E<lt> e>> is
-true (this is asserted for in C<-DDEBUGGING> builds). If the UTF-8 for the
-input character is malformed in some way, the program may croak, or the
-function may return the REPLACEMENT CHARACTER, at the discretion of the
-implementation, and subject to change in future releases.
-
-C<toFOLD_utf8_safe> is now just a different spelling of plain C<toFOLD_utf8>
+=for apidoc Am|UV|toUPPER|UV cp
+=for apidoc_item |UV|toUPPER_A|UV cp
+=for apidoc_item |UV|toUPPER_utf8|U8* p|U8* e|U8* s|STRLEN* lenp
+=for apidoc_item |UV|toUPPER_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp
+=for apidoc_item |UV|toUPPER_uvchr|UV cp|U8* s|STRLEN* lenp
+
+These all return the uppercase of a character. The differences are what domain
+they operate on, and whether the input is specified as a code point (those
+forms with a C<cp> parameter) or as a UTF-8 string (the others). In the latter
+case, the code point to use is the first one in the buffer of UTF-8 encoded
+code points, delineated by the arguments S<C<p .. e - 1>>.
+
+C<toUPPER> and C<toUPPER_A> are synonyms of each other. They return the
+uppercase of any lowercase ASCII-range code point. All other inputs are
+returned unchanged. Since these are macros, the input type may be any integral
+one, and the output will occupy the same number of bits as the input.
+
+There is no C<toUPPER_L1> nor C<toUPPER_LATIN1> as the uppercase of some code
+points in the 0..255 range is above that range or consists of multiple
+characters. Instead use C<toUPPER_uvchr>.
+
+C<toUPPER_uvchr> returns the uppercase of any Unicode code point. The return
+value is identical to that of C<toUPPER_A> for input code points in the ASCII
+range. The uppercase of the vast majority of Unicode code points is the same
+as the code point itself. For these, and for code points above the legal
+Unicode maximum, this returns the input code point unchanged. It additionally
+stores the UTF-8 of the result into the buffer beginning at C<s>, and its
+length in bytes into C<*lenp>. The caller must have made C<s> large enough to
+contain at least C<UTF8_MAXBYTES_CASE+1> bytes to avoid possible overflow.
+
+NOTE: the uppercase of a code point may be more than one code point. The
+return value of this function is only the first of these. The entire uppercase
+is returned in C<s>. To determine if the result is more than a single code
+point, you can do something like this:
+
+ uc = toUPPER_uvchr(cp, s, &len);
+ if (len > UTF8SKIP(s)) { is multiple code points }
+ else { is a single code point }
+
+C<toUPPER_utf8> and C<toUPPER_utf8_safe> are synonyms of each other. The only
+difference between these and C<toUPPER_uvchr> is that the source for these is
+encoded in UTF-8, instead of being a code point. It is passed as a buffer
+starting at C<p>, with C<e> pointing to one byte beyond its end. The C<p>
+buffer may certainly contain more than one code point; but only the first one
+(up through S<C<e - 1>>) is examined. If the UTF-8 for the input character is
+malformed in some way, the program may croak, or the function may return the
+REPLACEMENT CHARACTER, at the discretion of the implementation, and subject to
+change in future releases.
+
+=for apidoc Am|UV|toFOLD|UV cp
+=for apidoc_item |UV|toFOLD_A|UV cp
+=for apidoc_item |UV|toFOLD_utf8|U8* p|U8* e|U8* s|STRLEN* lenp
+=for apidoc_item |UV|toFOLD_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp
+=for apidoc_item |UV|toFOLD_uvchr|UV cp|U8* s|STRLEN* lenp
+
+These all return the foldcase of a character. "foldcase" is an internal case
+for C</i> pattern matching. If the foldcase of character A and the foldcase of
+character B are the same, they match caselessly; otherwise they don't.
+
+The differences in the forms are what domain they operate on, and whether the
+input is specified as a code point (those forms with a C<cp> parameter) or as a
+UTF-8 string (the others). In the latter case, the code point to use is the
+first one in the buffer of UTF-8 encoded code points, delineated by the
+arguments S<C<p .. e - 1>>.
+
+C<toFOLD> and C<toFOLD_A> are synonyms of each other. They return the
+foldcase of any ASCII-range code point. In this range, the foldcase is
+identical to the lowercase. All other inputs are returned unchanged. Since
+these are macros, the input type may be any integral one, and the output will
+occupy the same number of bits as the input.
+
+There is no C<toFOLD_L1> nor C<toFOLD_LATIN1> as the foldcase of some code
+points in the 0..255 range is above that range or consists of multiple
+characters. Instead use C<toFOLD_uvchr>.
+
+C<toFOLD_uvchr> returns the foldcase of any Unicode code point. The return
+value is identical to that of C<toFOLD_A> for input code points in the ASCII
+range. The foldcase of the vast majority of Unicode code points is the same
+as the code point itself. For these, and for code points above the legal
+Unicode maximum, this returns the input code point unchanged. It additionally
+stores the UTF-8 of the result into the buffer beginning at C<s>, and its
+length in bytes into C<*lenp>. The caller must have made C<s> large enough to
+contain at least C<UTF8_MAXBYTES_CASE+1> bytes to avoid possible overflow.
+
+NOTE: the foldcase of a code point may be more than one code point. The
+return value of this function is only the first of these. The entire foldcase
+is returned in C<s>. To determine if the result is more than a single code
+point, you can do something like this:
+
+ uc = toFOLD_uvchr(cp, s, &len);
+ if (len > UTF8SKIP(s)) { is multiple code points }
+ else { is a single code point }
+
+C<toFOLD_utf8> and C<toFOLD_utf8_safe> are synonyms of each other. The only
+difference between these and C<toFOLD_uvchr> is that the source for these is
+encoded in UTF-8, instead of being a code point. It is passed as a buffer
+starting at C<p>, with C<e> pointing to one byte beyond its end. The C<p>
+buffer may certainly contain more than one code point; but only the first one
+(up through S<C<e - 1>>) is examined. If the UTF-8 for the input character is
+malformed in some way, the program may croak, or the function may return the
+REPLACEMENT CHARACTER, at the discretion of the implementation, and subject to
+change in future releases.
=for apidoc Am|UV|toLOWER|UV cp
=for apidoc_item |UV|toLOWER_A|UV cp
-=for apidoc_item |UV|toLOWER_L1|UV cp
=for apidoc_item |UV|toLOWER_LATIN1|UV cp
=for apidoc_item |UV|toLOWER_LC|UV cp
-=for apidoc_item |UV|toLOWER_uvchr|UV cp|U8* s|STRLEN* lenp
+=for apidoc_item |UV|toLOWER_L1|UV cp
=for apidoc_item |UV|toLOWER_utf8|U8* p|U8* e|U8* s|STRLEN* lenp
=for apidoc_item |UV|toLOWER_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp
+=for apidoc_item |UV|toLOWER_uvchr|UV cp|U8* s|STRLEN* lenp
These all return the lowercase of a character. The differences are what domain
they operate on, and whether the input is specified as a code point (those
@@ -1311,50 +1340,62 @@ malformed in some way, the program may croak, or the function may return the
REPLACEMENT CHARACTER, at the discretion of the implementation, and subject to
change in future releases.
-=for apidoc Am|U8|toTITLE|U8 ch
-Converts the specified character to titlecase. If the input is anything but an
-ASCII lowercase character, that input character itself is returned. Variant
-C<toTITLE_A> is equivalent. (There is no C<toTITLE_L1> for the full Latin1
-range, as the full generality of L</toTITLE_uvchr> is needed there. Titlecase is
-not a concept used in locale handling, so there is no functionality for that.)
-
-=for apidoc Am|UV|toTITLE_uvchr|UV cp|U8* s|STRLEN* lenp
-Converts the code point C<cp> to its titlecase version, and
-stores that in UTF-8 in C<s>, and its length in bytes in C<lenp>. The code
-point is interpreted as native if less than 256; otherwise as Unicode. Note
-that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1>
-bytes since the titlecase version may be longer than the original character.
-
-The first code point of the titlecased version is returned
-(but note, as explained at L<the top of this section|/Character case
-changing>, that there may be more).
-
-=for apidoc Am|UV|toTITLE_utf8|U8* p|U8* e|U8* s|STRLEN* lenp
-=for apidoc_item toTITLE_utf8_safe
-Convert the first UTF-8 encoded character in the sequence starting at C<p> and
-extending no further than S<C<e - 1>> to its titlecase version, and
-stores that in UTF-8 in C<s>, and its length in bytes in C<lenp>. Note
-that the buffer pointed to by C<s> needs to be at least C<UTF8_MAXBYTES_CASE+1>
-bytes since the titlecase version may be longer than the original character.
-
-The first code point of the titlecased version is returned
-(but note, as explained at L<the top of this section|/Character case
-changing>, that there may be more).
-
-It will not attempt
-to read beyond S<C<e - 1>>, provided that the constraint S<C<s E<lt> e>> is
-true (this is asserted for in C<-DDEBUGGING> builds). If the UTF-8 for the
-input character is malformed in some way, the program may croak, or the
-function may return the REPLACEMENT CHARACTER, at the discretion of the
-implementation, and subject to change in future releases.
-
-C<toTITLE_utf8_safe> is now just a different spelling of plain C<toTITLE_utf8>
+=for apidoc Am|UV|toTITLE|UV cp
+=for apidoc_item |UV|toTITLE_A|UV cp
+=for apidoc_item |UV|toTITLE_utf8|U8* p|U8* e|U8* s|STRLEN* lenp
+=for apidoc_item |UV|toTITLE_utf8_safe|U8* p|U8* e|U8* s|STRLEN* lenp
+=for apidoc_item |UV|toTITLE_uvchr|UV cp|U8* s|STRLEN* lenp
+
+These all return the titlecase of a character. The differences are what domain
+they operate on, and whether the input is specified as a code point (those
+forms with a C<cp> parameter) or as a UTF-8 string (the others). In the latter
+case, the code point to use is the first one in the buffer of UTF-8 encoded
+code points, delineated by the arguments S<C<p .. e - 1>>.
+
+C<toTITLE> and C<toTITLE_A> are synonyms of each other. They return the
+titlecase of any lowercase ASCII-range code point. In this range, the
+titlecase is identical to the uppercase. All other inputs are returned
+unchanged. Since these are macros, the input type may be any integral one, and
+the output will occupy the same number of bits as the input.
+
+There is no C<toTITLE_L1> nor C<toTITLE_LATIN1> as the titlecase of some code
+points in the 0..255 range is above that range or consists of multiple
+characters. Instead use C<toTITLE_uvchr>.
+
+C<toTITLE_uvchr> returns the titlecase of any Unicode code point. The return
+value is identical to that of C<toTITLE_A> for input code points in the ASCII
+range. The titlecase of the vast majority of Unicode code points is the same
+as the code point itself. For these, and for code points above the legal
+Unicode maximum, this returns the input code point unchanged. It additionally
+stores the UTF-8 of the result into the buffer beginning at C<s>, and its
+length in bytes into C<*lenp>. The caller must have made C<s> large enough to
+contain at least C<UTF8_MAXBYTES_CASE+1> bytes to avoid possible overflow.
+
+NOTE: the titlecase of a code point may be more than one code point. The
+return value of this function is only the first of these. The entire titlecase
+is returned in C<s>. To determine if the result is more than a single code
+point, you can do something like this:
+
+ uc = toTITLE_uvchr(cp, s, &len);
+ if (len > UTF8SKIP(s)) { is multiple code points }
+ else { is a single code point }
+
+C<toTITLE_utf8> and C<toTITLE_utf8_safe> are synonyms of each other. The only
+difference between these and C<toTITLE_uvchr> is that the source for these is
+encoded in UTF-8, instead of being a code point. It is passed as a buffer
+starting at C<p>, with C<e> pointing to one byte beyond its end. The C<p>
+buffer may certainly contain more than one code point; but only the first one
+(up through S<C<e - 1>>) is examined. If the UTF-8 for the input character is
+malformed in some way, the program may croak, or the function may return the
+REPLACEMENT CHARACTER, at the discretion of the implementation, and subject to
+change in future releases.
=cut
XXX Still undocumented isVERTWS_uvchr and _utf8; it's unclear what their names
really should be. Also toUPPER_LC and toFOLD_LC, which are subject to change,
and aren't general purpose as they don't work on U+DF, and assert against that.
+and isCASED_LC, as it really is more of an internal thing.
Note that these macros are repeated in Devel::PPPort, so should also be
patched there. The file as of this writing is cpan/Devel-PPPort/parts/inc/misc
@@ -1378,12 +1419,26 @@ or casts
=cut
*/
-#ifdef QUADKIND
-# define WIDEST_UTYPE U64
+#define WIDEST_UTYPE PERL_UINTMAX_T
+
+/* Where there could be some confusion, use this as a static assert in macros
+ * to make sure that a parameter isn't a pointer. But some compilers can't
+ * handle this. The only one known so far that doesn't is gcc 3.3.6; the check
+ * below isn't thorough for such an old compiler, so may have to be revised if
+ * experience so dictates. */
+#if ! PERL_IS_GCC || PERL_GCC_VERSION_GT(3,3,6)
+# define ASSERT_NOT_PTR(x) ((x) | 0)
#else
-# define WIDEST_UTYPE U32
+# define ASSERT_NOT_PTR(x) (x)
#endif
+/* Likewise, this is effectively a static assert to be used to guarantee the
+ * parameter is a pointer
+ *
+ * NOT suitable for void*
+ */
+#define ASSERT_IS_PTR(x) (__ASSERT_(sizeof(*(x))) (x))
+
/* FITS_IN_8_BITS(c) returns true if c doesn't have a bit set other than in
* the lower 8. It is designed to be hopefully bomb-proof, making sure that no
* bits of information are lost even on a 64-bit machine, but to get the
@@ -1396,12 +1451,12 @@ or casts
* of operands. Well, they are, but that is kind of the point.
*/
#ifndef __COVERITY__
- /* The '| 0' part ensures a compiler error if c is not integer (like e.g., a
- * pointer) */
-#define FITS_IN_8_BITS(c) ( (sizeof(c) == 1) \
- || !(((WIDEST_UTYPE)((c) | 0)) & ~0xFF))
+ /* The '| 0' part in ASSERT_NOT_PTR ensures a compiler error if c is not
+ * integer (like e.g., a pointer) */
+# define FITS_IN_8_BITS(c) ( (sizeof(c) == 1) \
+ || (((WIDEST_UTYPE) ASSERT_NOT_PTR(c)) >> 8) == 0)
#else
-#define FITS_IN_8_BITS(c) (1)
+# define FITS_IN_8_BITS(c) (1)
#endif
/* Returns true if l <= c <= (l + n), where 'l' and 'n' are non-negative
@@ -1419,7 +1474,8 @@ or casts
* asserts itself, once. The reason that this is necessary is that the
* duplicate asserts were exceeding the internal limits of some compilers */
#define withinCOUNT_KNOWN_VALID_(c, l, n) \
- (((WIDEST_UTYPE) (((c)) - ((l) | 0))) <= (((WIDEST_UTYPE) ((n) | 0))))
+ ((((WIDEST_UTYPE) (c)) - ASSERT_NOT_PTR(l)) \
+ <= ((WIDEST_UTYPE) ASSERT_NOT_PTR(n)))
/* Returns true if c is in the range l..u, where 'l' is non-negative
* Written this way so that after optimization, only one conditional test is
@@ -1453,23 +1509,20 @@ or casts
* unsigned type. khw supposes that it could be written as
* && ((c) == '\0' || (c) > 0)
* to avoid the message, but the cast will likely avoid extra branches even
- * with stupid compilers.
- *
- * The '| 0' part ensures a compiler error if c is not integer (like e.g.,
- * a pointer) */
-# define isASCII(c) ((WIDEST_UTYPE)((c) | 0) < 128)
+ * with stupid compilers. */
+# define isASCII(c) (((WIDEST_UTYPE) ASSERT_NOT_PTR(c)) < 128)
#endif
/* Take the eight possible bit patterns of the lower 3 bits and you get the
* lower 3 bits of the 8 octal digits, in both ASCII and EBCDIC, so those bits
* can be ignored. If the rest match '0', we have an octal */
-#define isOCTAL_A(c) (((WIDEST_UTYPE)((c) | 0) & ~7) == '0')
+#define isOCTAL_A(c) ((((WIDEST_UTYPE) ASSERT_NOT_PTR(c)) & ~7) == '0')
#ifdef H_PERL /* If have access to perl.h, lookup in its table */
/* Character class numbers. For internal core Perl use only. The ones less
* than 32 are used in PL_charclass[] and the ones up through the one that
- * corresponds to <_HIGHEST_REGCOMP_DOT_H_SYNC> are used by regcomp.h and
+ * corresponds to <HIGHEST_REGCOMP_DOT_H_SYNC_> are used by regcomp.h and
* related files. PL_charclass ones use names used in l1_char_class_tab.h but
* their actual definitions are here. If that file has a name not used here,
* it won't compile.
@@ -1483,42 +1536,39 @@ or casts
* to group these which have no members that match above Latin1, (or above
* ASCII in the latter case) */
-# define _CC_WORDCHAR 0 /* \w and [:word:] */
-# define _CC_DIGIT 1 /* \d and [:digit:] */
-# define _CC_ALPHA 2 /* [:alpha:] */
-# define _CC_LOWER 3 /* [:lower:] */
-# define _CC_UPPER 4 /* [:upper:] */
-# define _CC_PUNCT 5 /* [:punct:] */
-# define _CC_PRINT 6 /* [:print:] */
-# define _CC_ALPHANUMERIC 7 /* [:alnum:] */
-# define _CC_GRAPH 8 /* [:graph:] */
-# define _CC_CASED 9 /* [:lower:] or [:upper:] under /i */
-# define _CC_SPACE 10 /* \s, [:space:] */
-# define _CC_BLANK 11 /* [:blank:] */
-# define _CC_XDIGIT 12 /* [:xdigit:] */
-# define _CC_CNTRL 13 /* [:cntrl:] */
-# define _CC_ASCII 14 /* [:ascii:] */
-# define _CC_VERTSPACE 15 /* \v */
-
-# define _HIGHEST_REGCOMP_DOT_H_SYNC _CC_VERTSPACE
+# define CC_WORDCHAR_ 0 /* \w and [:word:] */
+# define CC_DIGIT_ 1 /* \d and [:digit:] */
+# define CC_ALPHA_ 2 /* [:alpha:] */
+# define CC_LOWER_ 3 /* [:lower:] */
+# define CC_UPPER_ 4 /* [:upper:] */
+# define CC_PUNCT_ 5 /* [:punct:] */
+# define CC_PRINT_ 6 /* [:print:] */
+# define CC_ALPHANUMERIC_ 7 /* [:alnum:] */
+# define CC_GRAPH_ 8 /* [:graph:] */
+# define CC_CASED_ 9 /* [:lower:] or [:upper:] under /i */
+# define CC_SPACE_ 10 /* \s, [:space:] */
+# define CC_BLANK_ 11 /* [:blank:] */
+# define CC_XDIGIT_ 12 /* [:xdigit:] */
+# define CC_CNTRL_ 13 /* [:cntrl:] */
+# define CC_ASCII_ 14 /* [:ascii:] */
+# define CC_VERTSPACE_ 15 /* \v */
+
+# define HIGHEST_REGCOMP_DOT_H_SYNC_ CC_VERTSPACE_
/* The members of the third group below do not need to be coordinated with data
* structures in regcomp.[ch] and regexec.c. */
-# define _CC_IDFIRST 16
-# define _CC_CHARNAME_CONT 17
-# define _CC_NONLATIN1_FOLD 18
-# define _CC_NONLATIN1_SIMPLE_FOLD 19
-# define _CC_QUOTEMETA 20
-# define _CC_NON_FINAL_FOLD 21
-# define _CC_IS_IN_SOME_FOLD 22
-# define _CC_BINDIGIT 23
-# define _CC_OCTDIGIT 24
-# define _CC_MNEMONIC_CNTRL 25
-
-/* This next group is only used on EBCDIC platforms, so theoretically could be
- * shared with something entirely different that's only on ASCII platforms */
-# define _CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE 31
-/* Unused: 26-30
+# define CC_IDFIRST_ 16
+# define CC_CHARNAME_CONT_ 17
+# define CC_NONLATIN1_FOLD_ 18
+# define CC_NONLATIN1_SIMPLE_FOLD_ 19
+# define CC_QUOTEMETA_ 20
+# define CC_NON_FINAL_FOLD_ 21
+# define CC_IS_IN_SOME_FOLD_ 22
+# define CC_BINDIGIT_ 23
+# define CC_OCTDIGIT_ 24
+# define CC_MNEMONIC_CNTRL_ 25
+
+/* Unused: 26-31
* If more bits are needed, one could add a second word for non-64bit
* QUAD_IS_INT systems, using some #ifdefs to distinguish between having a 2nd
* word or not. The IS_IN_SOME_FOLD bit is the most easily expendable, as it
@@ -1533,26 +1583,26 @@ or casts
/* An enum version of the character class numbers, to help compilers
* optimize */
typedef enum {
- _CC_ENUM_ALPHA = _CC_ALPHA,
- _CC_ENUM_ALPHANUMERIC = _CC_ALPHANUMERIC,
- _CC_ENUM_ASCII = _CC_ASCII,
- _CC_ENUM_BLANK = _CC_BLANK,
- _CC_ENUM_CASED = _CC_CASED,
- _CC_ENUM_CNTRL = _CC_CNTRL,
- _CC_ENUM_DIGIT = _CC_DIGIT,
- _CC_ENUM_GRAPH = _CC_GRAPH,
- _CC_ENUM_LOWER = _CC_LOWER,
- _CC_ENUM_PRINT = _CC_PRINT,
- _CC_ENUM_PUNCT = _CC_PUNCT,
- _CC_ENUM_SPACE = _CC_SPACE,
- _CC_ENUM_UPPER = _CC_UPPER,
- _CC_ENUM_VERTSPACE = _CC_VERTSPACE,
- _CC_ENUM_WORDCHAR = _CC_WORDCHAR,
- _CC_ENUM_XDIGIT = _CC_XDIGIT
-} _char_class_number;
+ CC_ENUM_ALPHA_ = CC_ALPHA_,
+ CC_ENUM_ALPHANUMERIC_ = CC_ALPHANUMERIC_,
+ CC_ENUM_ASCII_ = CC_ASCII_,
+ CC_ENUM_BLANK_ = CC_BLANK_,
+ CC_ENUM_CASED_ = CC_CASED_,
+ CC_ENUM_CNTRL_ = CC_CNTRL_,
+ CC_ENUM_DIGIT_ = CC_DIGIT_,
+ CC_ENUM_GRAPH_ = CC_GRAPH_,
+ CC_ENUM_LOWER_ = CC_LOWER_,
+ CC_ENUM_PRINT_ = CC_PRINT_,
+ CC_ENUM_PUNCT_ = CC_PUNCT_,
+ CC_ENUM_SPACE_ = CC_SPACE_,
+ CC_ENUM_UPPER_ = CC_UPPER_,
+ CC_ENUM_VERTSPACE_ = CC_VERTSPACE_,
+ CC_ENUM_WORDCHAR_ = CC_WORDCHAR_,
+ CC_ENUM_XDIGIT_ = CC_XDIGIT_
+} char_class_number_;
#endif
-#define POSIX_CC_COUNT (_HIGHEST_REGCOMP_DOT_H_SYNC + 1)
+#define POSIX_CC_COUNT (HIGHEST_REGCOMP_DOT_H_SYNC_ + 1)
START_EXTERN_C
# ifdef DOINIT
@@ -1566,32 +1616,32 @@ EXTCONST U32 PL_charclass[];
END_EXTERN_C
/* The 1U keeps Solaris from griping when shifting sets the uppermost bit */
-# define _CC_mask(classnum) (1U << (classnum))
+# define CC_mask_(classnum) (1U << (classnum))
/* For internal core Perl use only: the base macro for defining macros like
* isALPHA */
-# define _generic_isCC(c, classnum) cBOOL(FITS_IN_8_BITS(c) \
- && (PL_charclass[(U8) (c)] & _CC_mask(classnum)))
+# define generic_isCC_(c, classnum) cBOOL(FITS_IN_8_BITS(c) \
+ && (PL_charclass[(U8) (c)] & CC_mask_(classnum)))
/* The mask for the _A versions of the macros; it just adds in the bit for
* ASCII. */
-# define _CC_mask_A(classnum) (_CC_mask(classnum) | _CC_mask(_CC_ASCII))
+# define CC_mask_A_(classnum) (CC_mask_(classnum) | CC_mask_(CC_ASCII_))
/* For internal core Perl use only: the base macro for defining macros like
* isALPHA_A. The foo_A version makes sure that both the desired bit and
* the ASCII bit are present */
-# define _generic_isCC_A(c, classnum) (FITS_IN_8_BITS(c) \
- && ((PL_charclass[(U8) (c)] & _CC_mask_A(classnum)) \
- == _CC_mask_A(classnum)))
+# define generic_isCC_A_(c, classnum) (FITS_IN_8_BITS(c) \
+ && ((PL_charclass[(U8) (c)] & CC_mask_A_(classnum)) \
+ == CC_mask_A_(classnum)))
/* On ASCII platforms certain classes form a single range. It's faster to
* special case these. isDIGIT is a single range on all platforms */
# ifdef EBCDIC
-# define isALPHA_A(c) _generic_isCC_A(c, _CC_ALPHA)
-# define isGRAPH_A(c) _generic_isCC_A(c, _CC_GRAPH)
-# define isLOWER_A(c) _generic_isCC_A(c, _CC_LOWER)
-# define isPRINT_A(c) _generic_isCC_A(c, _CC_PRINT)
-# define isUPPER_A(c) _generic_isCC_A(c, _CC_UPPER)
+# define isALPHA_A(c) generic_isCC_A_(c, CC_ALPHA_)
+# define isGRAPH_A(c) generic_isCC_A_(c, CC_GRAPH_)
+# define isLOWER_A(c) generic_isCC_A_(c, CC_LOWER_)
+# define isPRINT_A(c) generic_isCC_A_(c, CC_PRINT_)
+# define isUPPER_A(c) generic_isCC_A_(c, CC_UPPER_)
# else
/* By folding the upper and lowercase, we can use a single range */
# define isALPHA_A(c) inRANGE((~('A' ^ 'a') & (c)), 'A', 'Z')
@@ -1600,58 +1650,57 @@ END_EXTERN_C
# define isPRINT_A(c) inRANGE(c, ' ', 0x7e)
# define isUPPER_A(c) inRANGE(c, 'A', 'Z')
# endif
-# define isALPHANUMERIC_A(c) _generic_isCC_A(c, _CC_ALPHANUMERIC)
-# define isBLANK_A(c) _generic_isCC_A(c, _CC_BLANK)
-# define isCNTRL_A(c) _generic_isCC_A(c, _CC_CNTRL)
+# define isALPHANUMERIC_A(c) generic_isCC_A_(c, CC_ALPHANUMERIC_)
+# define isBLANK_A(c) generic_isCC_A_(c, CC_BLANK_)
+# define isCNTRL_A(c) generic_isCC_A_(c, CC_CNTRL_)
# define isDIGIT_A(c) inRANGE(c, '0', '9')
-# define isPUNCT_A(c) _generic_isCC_A(c, _CC_PUNCT)
-# define isSPACE_A(c) _generic_isCC_A(c, _CC_SPACE)
-# define isWORDCHAR_A(c) _generic_isCC_A(c, _CC_WORDCHAR)
-# define isXDIGIT_A(c) _generic_isCC(c, _CC_XDIGIT) /* No non-ASCII xdigits
- */
-# define isIDFIRST_A(c) _generic_isCC_A(c, _CC_IDFIRST)
-# define isALPHA_L1(c) _generic_isCC(c, _CC_ALPHA)
-# define isALPHANUMERIC_L1(c) _generic_isCC(c, _CC_ALPHANUMERIC)
-# define isBLANK_L1(c) _generic_isCC(c, _CC_BLANK)
+# define isPUNCT_A(c) generic_isCC_A_(c, CC_PUNCT_)
+# define isSPACE_A(c) generic_isCC_A_(c, CC_SPACE_)
+# define isWORDCHAR_A(c) generic_isCC_A_(c, CC_WORDCHAR_)
+# define isXDIGIT_A(c) generic_isCC_(c, CC_XDIGIT_) /* No non-ASCII xdigits */
+# define isIDFIRST_A(c) generic_isCC_A_(c, CC_IDFIRST_)
+# define isALPHA_L1(c) generic_isCC_(c, CC_ALPHA_)
+# define isALPHANUMERIC_L1(c) generic_isCC_(c, CC_ALPHANUMERIC_)
+# define isBLANK_L1(c) generic_isCC_(c, CC_BLANK_)
/* continuation character for legal NAME in \N{NAME} */
-# define isCHARNAME_CONT(c) _generic_isCC(c, _CC_CHARNAME_CONT)
+# define isCHARNAME_CONT(c) generic_isCC_(c, CC_CHARNAME_CONT_)
-# define isCNTRL_L1(c) _generic_isCC(c, _CC_CNTRL)
-# define isGRAPH_L1(c) _generic_isCC(c, _CC_GRAPH)
-# define isLOWER_L1(c) _generic_isCC(c, _CC_LOWER)
-# define isPRINT_L1(c) _generic_isCC(c, _CC_PRINT)
+# define isCNTRL_L1(c) generic_isCC_(c, CC_CNTRL_)
+# define isGRAPH_L1(c) generic_isCC_(c, CC_GRAPH_)
+# define isLOWER_L1(c) generic_isCC_(c, CC_LOWER_)
+# define isPRINT_L1(c) generic_isCC_(c, CC_PRINT_)
# define isPSXSPC_L1(c) isSPACE_L1(c)
-# define isPUNCT_L1(c) _generic_isCC(c, _CC_PUNCT)
-# define isSPACE_L1(c) _generic_isCC(c, _CC_SPACE)
-# define isUPPER_L1(c) _generic_isCC(c, _CC_UPPER)
-# define isWORDCHAR_L1(c) _generic_isCC(c, _CC_WORDCHAR)
-# define isIDFIRST_L1(c) _generic_isCC(c, _CC_IDFIRST)
+# define isPUNCT_L1(c) generic_isCC_(c, CC_PUNCT_)
+# define isSPACE_L1(c) generic_isCC_(c, CC_SPACE_)
+# define isUPPER_L1(c) generic_isCC_(c, CC_UPPER_)
+# define isWORDCHAR_L1(c) generic_isCC_(c, CC_WORDCHAR_)
+# define isIDFIRST_L1(c) generic_isCC_(c, CC_IDFIRST_)
# ifdef EBCDIC
-# define isASCII(c) _generic_isCC(c, _CC_ASCII)
+# define isASCII(c) generic_isCC_(c, CC_ASCII_)
# endif
/* Participates in a single-character fold with a character above 255 */
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
-# define HAS_NONLATIN1_SIMPLE_FOLD_CLOSURE(c) \
+# if defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_REGEXEC_C)
+# define HAS_NONLATIN1_SIMPLE_FOLD_CLOSURE(c) \
(( ! cBOOL(FITS_IN_8_BITS(c))) \
- || (PL_charclass[(U8) (c)] & _CC_mask(_CC_NONLATIN1_SIMPLE_FOLD)))
+ || (PL_charclass[(U8) (c)] & CC_mask_(CC_NONLATIN1_SIMPLE_FOLD_)))
-# define IS_NON_FINAL_FOLD(c) _generic_isCC(c, _CC_NON_FINAL_FOLD)
-# define IS_IN_SOME_FOLD_L1(c) _generic_isCC(c, _CC_IS_IN_SOME_FOLD)
+# define IS_NON_FINAL_FOLD(c) generic_isCC_(c, CC_NON_FINAL_FOLD_)
+# define IS_IN_SOME_FOLD_L1(c) generic_isCC_(c, CC_IS_IN_SOME_FOLD_)
# endif
/* Like the above, but also can be part of a multi-char fold */
# define HAS_NONLATIN1_FOLD_CLOSURE(c) \
( (! cBOOL(FITS_IN_8_BITS(c))) \
- || (PL_charclass[(U8) (c)] & _CC_mask(_CC_NONLATIN1_FOLD)))
+ || (PL_charclass[(U8) (c)] & CC_mask_(CC_NONLATIN1_FOLD_)))
-# define _isQUOTEMETA(c) _generic_isCC(c, _CC_QUOTEMETA)
+# define _isQUOTEMETA(c) generic_isCC_(c, CC_QUOTEMETA_)
/* is c a control character for which we have a mnemonic? */
# if defined(PERL_CORE) || defined(PERL_EXT)
-# define isMNEMONIC_CNTRL(c) _generic_isCC(c, _CC_MNEMONIC_CNTRL)
+# define isMNEMONIC_CNTRL(c) generic_isCC_(c, CC_MNEMONIC_CNTRL_)
# endif
#else /* else we don't have perl.h H_PERL */
@@ -1778,14 +1827,7 @@ END_EXTERN_C
/* The following are not fully accurate in the above-ASCII range. I (khw)
* don't think it's necessary to be so for the purposes where this gets
* compiled */
-# define _isQUOTEMETA(c) (FITS_IN_8_BITS(c) && ! isWORDCHAR_L1(c))
-# define _IS_IN_SOME_FOLD_ONLY_FOR_USE_BY_REGCOMP_DOT_C(c) isALPHA_L1(c)
-
- /* And these aren't accurate at all. They are useful only for above
- * Latin1, which utilities and bootstrapping don't deal with */
-# define _IS_NON_FINAL_FOLD_ONLY_FOR_USE_BY_REGCOMP_DOT_C(c) 0
-# define _HAS_NONLATIN1_SIMPLE_FOLD_CLOSURE_ONLY_FOR_USE_BY_REGCOMP_DOT_C_AND_REGEXEC_DOT_C(c) 0
-# define _HAS_NONLATIN1_FOLD_CLOSURE_ONLY_FOR_USE_BY_REGCOMP_DOT_C_AND_REGEXEC_DOT_C(c) 0
+# define isQUOTEMETA_(c) (FITS_IN_8_BITS(c) && ! isWORDCHAR_L1(c))
/* Many of the macros later in this file are defined in terms of these. By
* implementing them with a function, which converts the class number into
@@ -1794,9 +1836,9 @@ END_EXTERN_C
* perl.h), and so a compiler error will be generated if one is attempted
* to be used. And the above-Latin1 code points require Unicode tables to
* be present, something unlikely to be the case when bootstrapping */
-# define _generic_isCC(c, classnum) \
+# define generic_isCC_(c, classnum) \
(FITS_IN_8_BITS(c) && S_bootstrap_ctype((U8) (c), (classnum), TRUE))
-# define _generic_isCC_A(c, classnum) \
+# define generic_isCC_A_(c, classnum) \
(FITS_IN_8_BITS(c) && S_bootstrap_ctype((U8) (c), (classnum), FALSE))
#endif /* End of no perl.h H_PERL */
@@ -1856,176 +1898,242 @@ END_EXTERN_C
#define toUPPER_LATIN1_MOD(c) ((! FITS_IN_8_BITS(c)) \
? (c) \
: PL_mod_latin1_uc[ (U8) (c) ])
-#define IN_UTF8_CTYPE_LOCALE PL_in_utf8_CTYPE_locale
+#ifdef USE_LOCALE_CTYPE
+# define IN_UTF8_CTYPE_LOCALE PL_in_utf8_CTYPE_locale
+# define IN_UTF8_TURKIC_LOCALE PL_in_utf8_turkic_locale
+#else
+# define IN_UTF8_CTYPE_LOCALE false
+# define IN_UTF8_TURKIC_LOCALE false
+#endif
/* Use foo_LC_uvchr() instead of these for beyond the Latin1 range */
/* For internal core Perl use only: the base macro for defining macros like
* isALPHA_LC, which uses the current LC_CTYPE locale. 'c' is the code point
* (0-255) to check. In a UTF-8 locale, the result is the same as calling
- * isFOO_L1(); the 'utf8_locale_classnum' parameter is something like
- * _CC_UPPER, which gives the class number for doing this. For non-UTF-8
- * locales, the code to actually do the test this is passed in 'non_utf8'. If
- * 'c' is above 255, 0 is returned. For accessing the full range of possible
- * code points under locale rules, use the macros based on _generic_LC_uvchr
- * instead of this. */
-#define _generic_LC_base(c, utf8_locale_classnum, non_utf8) \
- (! FITS_IN_8_BITS(c) \
- ? 0 \
- : IN_UTF8_CTYPE_LOCALE \
- ? cBOOL(PL_charclass[(U8) (c)] & _CC_mask(utf8_locale_classnum)) \
- : cBOOL(non_utf8))
-
-/* For internal core Perl use only: a helper macro for defining macros like
- * isALPHA_LC. 'c' is the code point (0-255) to check. The function name to
- * actually do this test is passed in 'non_utf8_func', which is called on 'c',
- * casting 'c' to the macro _LC_CAST, which should not be parenthesized. See
- * _generic_LC_base for more info */
-#define _generic_LC(c, utf8_locale_classnum, non_utf8_func) \
- _generic_LC_base(c,utf8_locale_classnum, \
- non_utf8_func( (_LC_CAST) (c)))
-
-/* For internal core Perl use only: like _generic_LC, but also returns TRUE if
- * 'c' is the platform's native underscore character */
-#define _generic_LC_underscore(c,utf8_locale_classnum,non_utf8_func) \
- _generic_LC_base(c, utf8_locale_classnum, \
- (non_utf8_func( (_LC_CAST) (c)) \
- || (char)(c) == '_'))
-
-/* These next three are also for internal core Perl use only: case-change
- * helper macros. The reason for using the PL_latin arrays is in case the
- * system function is defective; it ensures uniform results that conform to the
- * Unicod standard. It does not handle the anomalies in UTF-8 Turkic locales */
-#define _generic_toLOWER_LC(c, function, cast) (! FITS_IN_8_BITS(c) \
- ? (c) \
- : (IN_UTF8_CTYPE_LOCALE) \
- ? PL_latin1_lc[ (U8) (c) ] \
- : (cast)function((cast)(c)))
-
-/* Note that the result can be larger than a byte in a UTF-8 locale. It
- * returns a single value, so can't adequately return the upper case of LATIN
- * SMALL LETTER SHARP S in a UTF-8 locale (which should be a string of two
- * values "SS"); instead it asserts against that under DEBUGGING, and
- * otherwise returns its input. It does not handle the anomalies in UTF-8
- * Turkic locales. */
-#define _generic_toUPPER_LC(c, function, cast) \
- (! FITS_IN_8_BITS(c) \
- ? (c) \
- : ((! IN_UTF8_CTYPE_LOCALE) \
- ? (cast)function((cast)(c)) \
- : ((((U8)(c)) == MICRO_SIGN) \
- ? GREEK_CAPITAL_LETTER_MU \
- : ((((U8)(c)) == LATIN_SMALL_LETTER_Y_WITH_DIAERESIS) \
- ? LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS \
- : ((((U8)(c)) == LATIN_SMALL_LETTER_SHARP_S) \
- ? (__ASSERT_(0) (c)) \
- : PL_mod_latin1_uc[ (U8) (c) ])))))
-
-/* Note that the result can be larger than a byte in a UTF-8 locale. It
- * returns a single value, so can't adequately return the fold case of LATIN
- * SMALL LETTER SHARP S in a UTF-8 locale (which should be a string of two
- * values "ss"); instead it asserts against that under DEBUGGING, and
- * otherwise returns its input. It does not handle the anomalies in UTF-8
- * Turkic locales */
-#define _generic_toFOLD_LC(c, function, cast) \
- ((UNLIKELY((c) == MICRO_SIGN) && IN_UTF8_CTYPE_LOCALE) \
- ? GREEK_SMALL_LETTER_MU \
- : (__ASSERT_(! IN_UTF8_CTYPE_LOCALE \
- || (c) != LATIN_SMALL_LETTER_SHARP_S) \
- _generic_toLOWER_LC(c, function, cast)))
-
-/* Use the libc versions for these if available. */
+ * isFOO_L1(); 'classnum' is something like CC_UPPER_, which gives the class
+ * number for doing this. For non-UTF-8 locales, the code to actually do the
+ * test this is passed in 'non_utf8'. If 'c' is above 255, 0 is returned. For
+ * accessing the full range of possible code points under locale rules, use the
+ * macros based on generic_LC_uvchr_ instead of this. */
+#define generic_LC_base_(c, classnum, non_utf8_func) \
+ (! FITS_IN_8_BITS(c) \
+ ? 0 \
+ : IN_UTF8_CTYPE_LOCALE \
+ ? cBOOL(PL_charclass[(U8) (c)] & CC_mask_(classnum)) \
+ : cBOOL(non_utf8_func(c)))
+
+/* A helper macro for defining macros like isALPHA_LC. On systems without
+ * proper locales, these reduce to, e.g., isALPHA_A */
+#ifdef CTYPE256
+# define generic_LC_(c, classnum, non_utf8_func) \
+ generic_LC_base_(c, classnum, non_utf8_func)
+#else
+# define generic_LC_(c, classnum, non_utf8_func) \
+ generic_isCC_A_(c, classnum)
+#endif
+
+/* Below are the definitions for the locale-sensitive character classification
+ * macros whose input domain is a byte, and the locale isn't UTF-8. These are
+ * as close as possible to the bare versions on the platform and still yield
+ * POSIX Standard-compliant results.
+ *
+ * There is currently only one place these definitions should be used, in
+ * certain function calls like Perl_iswordchar_() in inline.h.
+ *
+ * Most likely you want to use the macros a ways below with names like
+ * isALPHA_LC(). Rarely, you may want isU8_ALPHA_LC(), somewhat below.
+ *
+ * The first two aren't in C89, so the fallback is to use the non-locale
+ * sensitive versions; these are the same for all platforms */
#if defined(HAS_ISASCII)
-# define isASCII_LC(c) (FITS_IN_8_BITS(c) && isascii( (U8) (c)))
+# define is_posix_ASCII(c) isascii((U8) (c))
#else
-# define isASCII_LC(c) isASCII(c)
+# define is_posix_ASCII(c) isASCII(c)
#endif
#if defined(HAS_ISBLANK)
-# define isBLANK_LC(c) _generic_LC(c, _CC_BLANK, isblank)
-#else /* Unlike isASCII, varies if in a UTF-8 locale */
-# define isBLANK_LC(c) ((IN_UTF8_CTYPE_LOCALE) ? isBLANK_L1(c) : isBLANK(c))
+# define is_posix_BLANK(c) isblank((U8) (c))
+#else
+# define is_posix_BLANK(c) isBLANK(c)
#endif
-#define _LC_CAST U8
+/* The next few are the same in all platforms. */
+#define is_posix_CNTRL(c) iscntrl((U8) (c))
+#define is_posix_IDFIRST(c) (UNLIKELY((c) == '_') || is_posix_ALPHA(c))
+#define is_posix_SPACE(c) isspace((U8) (c))
+#define is_posix_WORDCHAR(c) (UNLIKELY((c) == '_') || is_posix_ALPHANUMERIC(c))
+
+/* The base-level case changing macros are also the same in all platforms */
+#define to_posix_LOWER(c) tolower((U8) (c))
+#define to_posix_UPPER(c) toupper((U8) (c))
+#define to_posix_FOLD(c) to_posix_LOWER(c)
#ifdef WIN32
- /* The Windows functions don't bother to follow the POSIX standard, which
- * for example says that something can't both be a printable and a control.
- * But Windows treats the \t control as a printable, and does such things
- * as making superscripts into both digits and punctuation. This tames
- * these flaws by assuming that the definitions of both controls and space
- * are correct, and then making sure that other definitions don't have
- * weirdnesses, by making sure that isalnum() isn't also ispunct(), etc.
- * Not all possible weirdnesses are checked for, just the ones that were
- * detected on actual Microsoft code pages */
-
-# define isCNTRL_LC(c) _generic_LC(c, _CC_CNTRL, iscntrl)
-# define isSPACE_LC(c) _generic_LC(c, _CC_SPACE, isspace)
-
-# define isALPHA_LC(c) (_generic_LC(c, _CC_ALPHA, isalpha) \
- && isALPHANUMERIC_LC(c))
-# define isALPHANUMERIC_LC(c) (_generic_LC(c, _CC_ALPHANUMERIC, isalnum) && \
- ! isPUNCT_LC(c))
-# define isDIGIT_LC(c) (_generic_LC(c, _CC_DIGIT, isdigit) && \
- isALPHANUMERIC_LC(c))
-# define isGRAPH_LC(c) (_generic_LC(c, _CC_GRAPH, isgraph) && isPRINT_LC(c))
-# define isIDFIRST_LC(c) (((c) == '_') \
- || (_generic_LC(c, _CC_IDFIRST, isalpha) && ! isPUNCT_LC(c)))
-# define isLOWER_LC(c) (_generic_LC(c, _CC_LOWER, islower) && isALPHA_LC(c))
-# define isPRINT_LC(c) (_generic_LC(c, _CC_PRINT, isprint) && ! isCNTRL_LC(c))
-# define isPUNCT_LC(c) (_generic_LC(c, _CC_PUNCT, ispunct) && ! isCNTRL_LC(c))
-# define isUPPER_LC(c) (_generic_LC(c, _CC_UPPER, isupper) && isALPHA_LC(c))
-# define isWORDCHAR_LC(c) (((c) == '_') || isALPHANUMERIC_LC(c))
-# define isXDIGIT_LC(c) (_generic_LC(c, _CC_XDIGIT, isxdigit) \
- && isALPHANUMERIC_LC(c))
-
-# define toLOWER_LC(c) _generic_toLOWER_LC((c), tolower, U8)
-# define toUPPER_LC(c) _generic_toUPPER_LC((c), toupper, U8)
-# define toFOLD_LC(c) _generic_toFOLD_LC((c), tolower, U8)
-
-#elif defined(CTYPE256) || (!defined(isascii) && !defined(HAS_ISASCII))
- /* For most other platforms */
-
-# define isALPHA_LC(c) _generic_LC(c, _CC_ALPHA, isalpha)
-# define isALPHANUMERIC_LC(c) _generic_LC(c, _CC_ALPHANUMERIC, isalnum)
-# define isCNTRL_LC(c) _generic_LC(c, _CC_CNTRL, iscntrl)
-# define isDIGIT_LC(c) _generic_LC(c, _CC_DIGIT, isdigit)
-# define isGRAPH_LC(c) _generic_LC(c, _CC_GRAPH, isgraph)
-# define isIDFIRST_LC(c) _generic_LC_underscore(c, _CC_IDFIRST, isalpha)
-# define isLOWER_LC(c) _generic_LC(c, _CC_LOWER, islower)
-# define isPRINT_LC(c) _generic_LC(c, _CC_PRINT, isprint)
-# define isPUNCT_LC(c) _generic_LC(c, _CC_PUNCT, ispunct)
-# define isSPACE_LC(c) _generic_LC(c, _CC_SPACE, isspace)
-# define isUPPER_LC(c) _generic_LC(c, _CC_UPPER, isupper)
-# define isWORDCHAR_LC(c) _generic_LC_underscore(c, _CC_WORDCHAR, isalnum)
-# define isXDIGIT_LC(c) _generic_LC(c, _CC_XDIGIT, isxdigit)
-
-
-# define toLOWER_LC(c) _generic_toLOWER_LC((c), tolower, U8)
-# define toUPPER_LC(c) _generic_toUPPER_LC((c), toupper, U8)
-# define toFOLD_LC(c) _generic_toFOLD_LC((c), tolower, U8)
-
-#else /* The final fallback position */
-
-# define isALPHA_LC(c) (isascii(c) && isalpha(c))
-# define isALPHANUMERIC_LC(c) (isascii(c) && isalnum(c))
-# define isCNTRL_LC(c) (isascii(c) && iscntrl(c))
-# define isDIGIT_LC(c) (isascii(c) && isdigit(c))
-# define isGRAPH_LC(c) (isascii(c) && isgraph(c))
-# define isIDFIRST_LC(c) (isascii(c) && (isalpha(c) || (c) == '_'))
-# define isLOWER_LC(c) (isascii(c) && islower(c))
-# define isPRINT_LC(c) (isascii(c) && isprint(c))
-# define isPUNCT_LC(c) (isascii(c) && ispunct(c))
-# define isSPACE_LC(c) (isascii(c) && isspace(c))
-# define isUPPER_LC(c) (isascii(c) && isupper(c))
-# define isWORDCHAR_LC(c) (isascii(c) && (isalnum(c) || (c) == '_'))
-# define isXDIGIT_LC(c) (isascii(c) && isxdigit(c))
-
-# define toLOWER_LC(c) (isascii(c) ? tolower(c) : (c))
-# define toUPPER_LC(c) (isascii(c) ? toupper(c) : (c))
-# define toFOLD_LC(c) (isascii(c) ? tolower(c) : (c))
+/* The Windows functions don't bother to follow the POSIX standard, which for
+ * example says that something can't both be a printable and a control. But
+ * Windows treats \t as both a control and a printable, and does such things as
+ * making superscripts into both digits and punctuation. These #defines tame
+ * these flaws by assuming that the definitions of controls (and the other few
+ * ones defined above) are correct, and then making sure that other definitions
+ * don't have weirdnesses, by adding a check that \w and its subsets aren't
+ * ispunct(), and things that are \W, like ispunct(), arent't controls. Not
+ * all possible weirdnesses are checked for, just ones that were detected on
+ * actual Microsoft code pages */
+# define is_posix_ALPHA(c) \
+ (isalpha((U8) (c)) && ! is_posix_PUNCT(c))
+# define is_posix_ALPHANUMERIC(c) \
+ (isalnum((U8) (c)) && ! is_posix_PUNCT(c))
+# define is_posix_CASED(c) \
+ ((isupper((U8) (c)) || islower((U8) (c))) && ! is_posix_PUNCT(c))
+# define is_posix_DIGIT(c) \
+ (isdigit((U8) (c)) && ! is_posix_PUNCT(c))
+# define is_posix_GRAPH(c) \
+ (isgraph((U8) (c)) && ! is_posix_CNTRL(c))
+# define is_posix_LOWER(c) \
+ (islower((U8) (c)) && ! is_posix_PUNCT(c))
+# define is_posix_PRINT(c) \
+ (isprint((U8) (c)) && ! is_posix_CNTRL(c))
+# define is_posix_PUNCT(c) \
+ (ispunct((U8) (c)) && ! is_posix_CNTRL(c))
+# define is_posix_UPPER(c) \
+ (isupper((U8) (c)) && ! is_posix_PUNCT(c))
+# define is_posix_XDIGIT(c) \
+ (isxdigit((U8) (c)) && ! is_posix_PUNCT(c))
+#else
+
+/* For all other platforms, as far as we know, isdigit(), etc. work sanely
+ * enough */
+# define is_posix_ALPHA(c) isalpha((U8) (c))
+# define is_posix_ALPHANUMERIC(c) isalnum((U8) (c))
+# define is_posix_CASED(c) (islower((U8) (c)) || isupper((U8) (c)))
+# define is_posix_DIGIT(c) isdigit((U8) (c))
+
+ /* ... But it seems that IBM products treat NBSP as both a space and a
+ * graphic; these are the two platforms that we have active test beds for.
+ */
+# if defined(OS390) || defined(_AIX)
+# define is_posix_GRAPH(c) (isgraph((U8) (c)) && ! isspace((U8) (c)))
+# else
+# define is_posix_GRAPH(c) isgraph((U8) (c))
+# endif
+# define is_posix_LOWER(c) islower((U8) (c))
+# define is_posix_PRINT(c) isprint((U8) (c))
+# define is_posix_PUNCT(c) ispunct((U8) (c))
+# define is_posix_UPPER(c) isupper((U8) (c))
+# define is_posix_XDIGIT(c) isxdigit((U8) (c))
+#endif
+
+/* Below is the next level up, which currently expands to nothing more
+ * than the previous layer. These are the macros to use if you really need
+ * something whose input domain is a byte, and the locale isn't UTF-8; that is,
+ * where you normally would have to use things like bare isalnum().
+ *
+ * But most likely you should instead use the layer defined further below which
+ * has names like isALPHA_LC. They deal with larger-than-byte inputs, and
+ * UTF-8 locales.
+ *
+ * (Note, proper general operation of the bare libc functions requires you to
+ * cast to U8. These do that for you automatically.) */
+
+# define WRAP_U8_LC_(c, classnum, posix) posix(c)
+
+#define isU8_ALPHANUMERIC_LC(c) \
+ WRAP_U8_LC_((c), CC_ALPHANUMERIC_, is_posix_ALPHANUMERIC)
+#define isU8_ALPHA_LC(c) WRAP_U8_LC_((c), CC_ALPHA_, is_posix_ALPHA)
+#define isU8_ASCII_LC(c) WRAP_U8_LC_((c), CC_ASCII_, is_posix_ASCII)
+#define isU8_BLANK_LC(c) WRAP_U8_LC_((c), CC_BLANK_, is_posix_BLANK)
+#define isU8_CASED_LC(c) WRAP_U8_LC_((c), CC_CASED_, is_posix_CASED)
+#define isU8_CNTRL_LC(c) WRAP_U8_LC_((c), CC_CNTRL_, is_posix_CNTRL)
+#define isU8_DIGIT_LC(c) WRAP_U8_LC_((c), CC_DIGIT_, is_posix_DIGIT)
+#define isU8_GRAPH_LC(c) WRAP_U8_LC_((c), CC_GRAPH_, is_posix_GRAPH)
+#define isU8_IDFIRST_LC(c) WRAP_U8_LC_((c), CC_IDFIRST_, is_posix_IDFIRST)
+#define isU8_LOWER_LC(c) WRAP_U8_LC_((c), CC_LOWER_, is_posix_LOWER)
+#define isU8_PRINT_LC(c) WRAP_U8_LC_((c), CC_PRINT_, is_posix_PRINT)
+#define isU8_PUNCT_LC(c) WRAP_U8_LC_((c), CC_PUNCT_, is_posix_PUNCT)
+#define isU8_SPACE_LC(c) WRAP_U8_LC_((c), CC_SPACE_, is_posix_SPACE)
+#define isU8_UPPER_LC(c) WRAP_U8_LC_((c), CC_UPPER_, is_posix_UPPER)
+#define isU8_WORDCHAR_LC(c) WRAP_U8_LC_((c), CC_WORDCHAR_, is_posix_WORDCHAR)
+#define isU8_XDIGIT_LC(c) WRAP_U8_LC_((c), CC_XDIGIT_, is_posix_XDIGIT)
+
+#define toU8_LOWER_LC(c) WRAP_U8_LC_((c), CC_TOLOWER_, to_posix_LOWER)
+#define toU8_UPPER_LC(c) WRAP_U8_LC_((c), CC_TOUPPER_, to_posix_UPPER)
+#define toU8_FOLD_LC(c) toU8_LOWER_LC(c)
+
+/* The definitions below use the ones above to create versions in which the
+ * input domain isn't restricted to bytes (though always returning false if the
+ * input doesn't fit in a byte), and to behave properly should the locale be
+ * UTF-8. These are the documented ones, suitable for general use (though
+ * toUPPER_LC and toFOLD_LC aren't documented because they need special
+ * handling to deal with SHARP S expanding to two characters). */
+
+#define isASCII_LC(c) (FITS_IN_8_BITS(c) && isU8_ASCII_LC(c))
+#define isALPHA_LC(c) generic_LC_(c, CC_ALPHA_, isU8_ALPHA_LC)
+#define isALPHANUMERIC_LC(c) \
+ generic_LC_(c, CC_ALPHANUMERIC_, isU8_ALPHANUMERIC_LC)
+#define isBLANK_LC(c) generic_LC_(c, CC_BLANK_, isU8_BLANK_LC)
+#define isCASED_LC(c) generic_LC_(c, CC_CASED_, isU8_CASED_LC)
+#define isCNTRL_LC(c) generic_LC_(c, CC_CNTRL_, isU8_CNTRL_LC)
+#define isDIGIT_LC(c) generic_LC_(c, CC_DIGIT_, isU8_DIGIT_LC)
+#define isGRAPH_LC(c) generic_LC_(c, CC_GRAPH_, isU8_GRAPH_LC)
+#define isIDFIRST_LC(c) generic_LC_(c, CC_IDFIRST_, isU8_IDFIRST_LC)
+#define isLOWER_LC(c) generic_LC_(c, CC_LOWER_, isU8_LOWER_LC)
+#define isPRINT_LC(c) generic_LC_(c, CC_PRINT_, isU8_PRINT_LC)
+#define isPUNCT_LC(c) generic_LC_(c, CC_PUNCT_, isU8_PUNCT_LC)
+#define isSPACE_LC(c) generic_LC_(c, CC_SPACE_, isU8_SPACE_LC)
+#define isUPPER_LC(c) generic_LC_(c, CC_UPPER_, isU8_UPPER_LC)
+#define isWORDCHAR_LC(c) generic_LC_(c, CC_WORDCHAR_, isU8_WORDCHAR_LC)
+#define isXDIGIT_LC(c) generic_LC_(c, CC_XDIGIT_, isU8_XDIGIT_LC)
+
+#ifndef CTYPE256
+# define toLOWER_LC(c) toLOWER_A(c)
+# define toUPPER_LC(c) toUPPER_A(c)
+# define toFOLD_LC(c) toFOLD_A(c)
+#else
+
+/* In the next three macros, the reason for using the PL_latin arrays is in
+ * case the system function is defective; it ensures uniform results that
+ * conform to the Unicode standard. */
+
+/* This does not handle the anomalies in UTF-8 Turkic locales. */
+# define toLOWER_LC(c) ((! FITS_IN_8_BITS(c)) \
+ ? (c) \
+ : ((IN_UTF8_CTYPE_LOCALE) \
+ ? PL_latin1_lc[ (U8) (c) ] \
+ : ((U8) toU8_LOWER_LC(c))))
+
+/* In this macro, note that the result can be larger than a byte in a UTF-8
+ * locale. It returns a single value, so can't adequately return the upper
+ * case of LATIN SMALL LETTER SHARP S in a UTF-8 locale (which should be a
+ * string of two values "SS"); instead it asserts against that under
+ * DEBUGGING, and otherwise returns its input. It does not handle the
+ * anomalies in UTF-8 Turkic locales. */
+# define toUPPER_LC(c) \
+ ((! FITS_IN_8_BITS(c)) \
+ ? (c) \
+ : ((! IN_UTF8_CTYPE_LOCALE) \
+ ? ((U8) toU8_UPPER_LC(c)) \
+ : (UNLIKELY(((U8)(c)) == MICRO_SIGN) \
+ ? GREEK_CAPITAL_LETTER_MU \
+ : ((UNLIKELY(((U8) (c)) == LATIN_SMALL_LETTER_Y_WITH_DIAERESIS) \
+ ? LATIN_CAPITAL_LETTER_Y_WITH_DIAERESIS \
+ : (UNLIKELY(((U8)(c)) == LATIN_SMALL_LETTER_SHARP_S) \
+ ? (__ASSERT_(0) (c)) /* Fail on Sharp S in DEBUGGING */ \
+ : PL_mod_latin1_uc[ (U8) (c) ]))))))
+
+/* In this macro, note that the result can be larger than a byte in a UTF-8
+ * locale. It returns a single value, so can't adequately return the fold case
+ * of LATIN SMALL LETTER SHARP S in a UTF-8 locale (which should be a string of
+ * two values "ss"); instead it asserts against that under DEBUGGING, and
+ * otherwise returns its input. It does not handle the anomalies in UTF-8
+ * Turkic locales */
+# define toFOLD_LC(c) \
+ ((UNLIKELY((c) == MICRO_SIGN) && IN_UTF8_CTYPE_LOCALE) \
+ ? GREEK_SMALL_LETTER_MU \
+ : (__ASSERT_( ! IN_UTF8_CTYPE_LOCALE \
+ || LIKELY((c) != LATIN_SMALL_LETTER_SHARP_S)) \
+ toLOWER_LC(c)))
#endif
#define isIDCONT(c) isWORDCHAR(c)
@@ -2036,46 +2144,46 @@ END_EXTERN_C
/* For internal core Perl use only: the base macros for defining macros like
* isALPHA_uvchr. 'c' is the code point to check. 'classnum' is the POSIX class
- * number defined earlier in this file. _generic_uvchr() is used for POSIX
+ * number defined earlier in this file. generic_uvchr_() is used for POSIX
* classes where there is a macro or function 'above_latin1' that takes the
* single argument 'c' and returns the desired value. These exist for those
* classes which have simple definitions, avoiding the overhead of an inversion
- * list binary search. _generic_invlist_uvchr() can be used
+ * list binary search. generic_invlist_uvchr_() can be used
* for classes where that overhead is faster than a direct lookup.
- * _generic_uvchr() won't compile if 'c' isn't unsigned, as it won't match the
- * 'above_latin1' prototype. _generic_isCC() macro does bounds checking, so
+ * generic_uvchr_() won't compile if 'c' isn't unsigned, as it won't match the
+ * 'above_latin1' prototype. generic_isCC_() macro does bounds checking, so
* have duplicate checks here, so could create versions of the macros that
* don't, but experiments show that gcc optimizes them out anyway. */
/* Note that all ignore 'use bytes' */
-#define _generic_uvchr(classnum, above_latin1, c) ((c) < 256 \
- ? _generic_isCC(c, classnum) \
+#define generic_uvchr_(classnum, above_latin1, c) ((c) < 256 \
+ ? generic_isCC_(c, classnum) \
: above_latin1(c))
-#define _generic_invlist_uvchr(classnum, c) ((c) < 256 \
- ? _generic_isCC(c, classnum) \
+#define generic_invlist_uvchr_(classnum, c) ((c) < 256 \
+ ? generic_isCC_(c, classnum) \
: _is_uni_FOO(classnum, c))
-#define isALPHA_uvchr(c) _generic_invlist_uvchr(_CC_ALPHA, c)
-#define isALPHANUMERIC_uvchr(c) _generic_invlist_uvchr(_CC_ALPHANUMERIC, c)
+#define isALPHA_uvchr(c) generic_invlist_uvchr_(CC_ALPHA_, c)
+#define isALPHANUMERIC_uvchr(c) generic_invlist_uvchr_(CC_ALPHANUMERIC_, c)
#define isASCII_uvchr(c) isASCII(c)
-#define isBLANK_uvchr(c) _generic_uvchr(_CC_BLANK, is_HORIZWS_cp_high, c)
+#define isBLANK_uvchr(c) generic_uvchr_(CC_BLANK_, is_HORIZWS_cp_high, c)
#define isCNTRL_uvchr(c) isCNTRL_L1(c) /* All controls are in Latin1 */
-#define isDIGIT_uvchr(c) _generic_invlist_uvchr(_CC_DIGIT, c)
-#define isGRAPH_uvchr(c) _generic_invlist_uvchr(_CC_GRAPH, c)
+#define isDIGIT_uvchr(c) generic_invlist_uvchr_(CC_DIGIT_, c)
+#define isGRAPH_uvchr(c) generic_invlist_uvchr_(CC_GRAPH_, c)
#define isIDCONT_uvchr(c) \
- _generic_uvchr(_CC_WORDCHAR, _is_uni_perl_idcont, c)
+ generic_uvchr_(CC_WORDCHAR_, _is_uni_perl_idcont, c)
#define isIDFIRST_uvchr(c) \
- _generic_uvchr(_CC_IDFIRST, _is_uni_perl_idstart, c)
-#define isLOWER_uvchr(c) _generic_invlist_uvchr(_CC_LOWER, c)
-#define isPRINT_uvchr(c) _generic_invlist_uvchr(_CC_PRINT, c)
+ generic_uvchr_(CC_IDFIRST_, _is_uni_perl_idstart, c)
+#define isLOWER_uvchr(c) generic_invlist_uvchr_(CC_LOWER_, c)
+#define isPRINT_uvchr(c) generic_invlist_uvchr_(CC_PRINT_, c)
-#define isPUNCT_uvchr(c) _generic_invlist_uvchr(_CC_PUNCT, c)
-#define isSPACE_uvchr(c) _generic_uvchr(_CC_SPACE, is_XPERLSPACE_cp_high, c)
+#define isPUNCT_uvchr(c) generic_invlist_uvchr_(CC_PUNCT_, c)
+#define isSPACE_uvchr(c) generic_uvchr_(CC_SPACE_, is_XPERLSPACE_cp_high, c)
#define isPSXSPC_uvchr(c) isSPACE_uvchr(c)
-#define isUPPER_uvchr(c) _generic_invlist_uvchr(_CC_UPPER, c)
-#define isVERTWS_uvchr(c) _generic_uvchr(_CC_VERTSPACE, is_VERTWS_cp_high, c)
-#define isWORDCHAR_uvchr(c) _generic_invlist_uvchr(_CC_WORDCHAR, c)
-#define isXDIGIT_uvchr(c) _generic_uvchr(_CC_XDIGIT, is_XDIGIT_cp_high, c)
+#define isUPPER_uvchr(c) generic_invlist_uvchr_(CC_UPPER_, c)
+#define isVERTWS_uvchr(c) generic_uvchr_(CC_VERTSPACE_, is_VERTWS_cp_high, c)
+#define isWORDCHAR_uvchr(c) generic_invlist_uvchr_(CC_WORDCHAR_, c)
+#define isXDIGIT_uvchr(c) generic_uvchr_(CC_XDIGIT_, is_XDIGIT_cp_high, c)
#define toFOLD_uvchr(c,s,l) to_uni_fold(c,s,l)
#define toLOWER_uvchr(c,s,l) to_uni_lower(c,s,l)
@@ -2109,37 +2217,37 @@ END_EXTERN_C
/* For internal core Perl use only: the base macros for defining macros like
* isALPHA_LC_uvchr. These are like isALPHA_LC, but the input can be any code
- * point, not just 0-255. Like _generic_uvchr, there are two versions, one for
+ * point, not just 0-255. Like generic_uvchr_, there are two versions, one for
* simple class definitions; the other for more complex. These are like
- * _generic_uvchr, so see it for more info. */
-#define _generic_LC_uvchr(latin1, above_latin1, c) \
+ * generic_uvchr_, so see it for more info. */
+#define generic_LC_uvchr_(latin1, above_latin1, c) \
(c < 256 ? latin1(c) : above_latin1(c))
-#define _generic_LC_invlist_uvchr(latin1, classnum, c) \
+#define generic_LC_invlist_uvchr_(latin1, classnum, c) \
(c < 256 ? latin1(c) : _is_uni_FOO(classnum, c))
-#define isALPHA_LC_uvchr(c) _generic_LC_invlist_uvchr(isALPHA_LC, _CC_ALPHA, c)
-#define isALPHANUMERIC_LC_uvchr(c) _generic_LC_invlist_uvchr(isALPHANUMERIC_LC, \
- _CC_ALPHANUMERIC, c)
+#define isALPHA_LC_uvchr(c) generic_LC_invlist_uvchr_(isALPHA_LC, CC_ALPHA_, c)
+#define isALPHANUMERIC_LC_uvchr(c) generic_LC_invlist_uvchr_(isALPHANUMERIC_LC, \
+ CC_ALPHANUMERIC_, c)
#define isASCII_LC_uvchr(c) isASCII_LC(c)
-#define isBLANK_LC_uvchr(c) _generic_LC_uvchr(isBLANK_LC, \
+#define isBLANK_LC_uvchr(c) generic_LC_uvchr_(isBLANK_LC, \
is_HORIZWS_cp_high, c)
#define isCNTRL_LC_uvchr(c) (c < 256 ? isCNTRL_LC(c) : 0)
-#define isDIGIT_LC_uvchr(c) _generic_LC_invlist_uvchr(isDIGIT_LC, _CC_DIGIT, c)
-#define isGRAPH_LC_uvchr(c) _generic_LC_invlist_uvchr(isGRAPH_LC, _CC_GRAPH, c)
-#define isIDCONT_LC_uvchr(c) _generic_LC_uvchr(isIDCONT_LC, \
+#define isDIGIT_LC_uvchr(c) generic_LC_invlist_uvchr_(isDIGIT_LC, CC_DIGIT_, c)
+#define isGRAPH_LC_uvchr(c) generic_LC_invlist_uvchr_(isGRAPH_LC, CC_GRAPH_, c)
+#define isIDCONT_LC_uvchr(c) generic_LC_uvchr_(isIDCONT_LC, \
_is_uni_perl_idcont, c)
-#define isIDFIRST_LC_uvchr(c) _generic_LC_uvchr(isIDFIRST_LC, \
+#define isIDFIRST_LC_uvchr(c) generic_LC_uvchr_(isIDFIRST_LC, \
_is_uni_perl_idstart, c)
-#define isLOWER_LC_uvchr(c) _generic_LC_invlist_uvchr(isLOWER_LC, _CC_LOWER, c)
-#define isPRINT_LC_uvchr(c) _generic_LC_invlist_uvchr(isPRINT_LC, _CC_PRINT, c)
+#define isLOWER_LC_uvchr(c) generic_LC_invlist_uvchr_(isLOWER_LC, CC_LOWER_, c)
+#define isPRINT_LC_uvchr(c) generic_LC_invlist_uvchr_(isPRINT_LC, CC_PRINT_, c)
#define isPSXSPC_LC_uvchr(c) isSPACE_LC_uvchr(c)
-#define isPUNCT_LC_uvchr(c) _generic_LC_invlist_uvchr(isPUNCT_LC, _CC_PUNCT, c)
-#define isSPACE_LC_uvchr(c) _generic_LC_uvchr(isSPACE_LC, \
+#define isPUNCT_LC_uvchr(c) generic_LC_invlist_uvchr_(isPUNCT_LC, CC_PUNCT_, c)
+#define isSPACE_LC_uvchr(c) generic_LC_uvchr_(isSPACE_LC, \
is_XPERLSPACE_cp_high, c)
-#define isUPPER_LC_uvchr(c) _generic_LC_invlist_uvchr(isUPPER_LC, _CC_UPPER, c)
-#define isWORDCHAR_LC_uvchr(c) _generic_LC_invlist_uvchr(isWORDCHAR_LC, \
- _CC_WORDCHAR, c)
-#define isXDIGIT_LC_uvchr(c) _generic_LC_uvchr(isXDIGIT_LC, \
+#define isUPPER_LC_uvchr(c) generic_LC_invlist_uvchr_(isUPPER_LC, CC_UPPER_, c)
+#define isWORDCHAR_LC_uvchr(c) generic_LC_invlist_uvchr_(isWORDCHAR_LC, \
+ CC_WORDCHAR_, c)
+#define isXDIGIT_LC_uvchr(c) generic_LC_uvchr_(isXDIGIT_LC, \
is_XDIGIT_cp_high, c)
#define isBLANK_LC_uni(c) isBLANK_LC_uvchr(UNI_TO_NATIVE(c))
@@ -2167,41 +2275,41 @@ END_EXTERN_C
# define _utf8_safe_assert(p,e) ((e) > (p))
#endif
-#define _generic_utf8_safe(classnum, p, e, above_latin1) \
+#define generic_utf8_safe_(classnum, p, e, above_latin1) \
((! _utf8_safe_assert(p, e)) \
? (_force_out_malformed_utf8_message((U8 *) (p), (U8 *) (e), 0, 1), 0)\
: (UTF8_IS_INVARIANT(*(p))) \
- ? _generic_isCC(*(p), classnum) \
+ ? generic_isCC_(*(p), classnum) \
: (UTF8_IS_DOWNGRADEABLE_START(*(p)) \
? ((LIKELY((e) - (p) > 1 && UTF8_IS_CONTINUATION(*((p)+1)))) \
- ? _generic_isCC(EIGHT_BIT_UTF8_TO_NATIVE(*(p), *((p)+1 )), \
+ ? generic_isCC_(EIGHT_BIT_UTF8_TO_NATIVE(*(p), *((p)+1 )), \
classnum) \
: (_force_out_malformed_utf8_message( \
(U8 *) (p), (U8 *) (e), 0, 1), 0)) \
: above_latin1))
/* Like the above, but calls 'above_latin1(p)' to get the utf8 value.
* 'above_latin1' can be a macro */
-#define _generic_func_utf8_safe(classnum, above_latin1, p, e) \
- _generic_utf8_safe(classnum, p, e, above_latin1(p, e))
-#define _generic_non_invlist_utf8_safe(classnum, above_latin1, p, e) \
- _generic_utf8_safe(classnum, p, e, \
+#define generic_func_utf8_safe_(classnum, above_latin1, p, e) \
+ generic_utf8_safe_(classnum, p, e, above_latin1(p, e))
+#define generic_non_invlist_utf8_safe_(classnum, above_latin1, p, e) \
+ generic_utf8_safe_(classnum, p, e, \
(UNLIKELY((e) - (p) < UTF8SKIP(p)) \
? (_force_out_malformed_utf8_message( \
(U8 *) (p), (U8 *) (e), 0, 1), 0) \
: above_latin1(p)))
/* Like the above, but passes classnum to _isFOO_utf8(), instead of having an
* 'above_latin1' parameter */
-#define _generic_invlist_utf8_safe(classnum, p, e) \
- _generic_utf8_safe(classnum, p, e, _is_utf8_FOO(classnum, p, e))
+#define generic_invlist_utf8_safe_(classnum, p, e) \
+ generic_utf8_safe_(classnum, p, e, _is_utf8_FOO(classnum, p, e))
/* Like the above, but should be used only when it is known that there are no
* characters in the upper-Latin1 range (128-255 on ASCII platforms) which the
* class is TRUE for. Hence it can skip the tests for this range.
* 'above_latin1' should include its arguments */
-#define _generic_utf8_safe_no_upper_latin1(classnum, p, e, above_latin1) \
+#define generic_utf8_safe_no_upper_latin1_(classnum, p, e, above_latin1) \
(__ASSERT_(_utf8_safe_assert(p, e)) \
- (UTF8_IS_INVARIANT(*(p))) \
- ? _generic_isCC(*(p), classnum) \
+ (isASCII(*(p))) \
+ ? generic_isCC_(*(p), classnum) \
: (UTF8_IS_DOWNGRADEABLE_START(*(p))) \
? 0 /* Note that doesn't check validity for latin1 */ \
: above_latin1)
@@ -2226,15 +2334,15 @@ END_EXTERN_C
#define isWORDCHAR_utf8(p, e) isWORDCHAR_utf8_safe(p, e)
#define isXDIGIT_utf8(p, e) isXDIGIT_utf8_safe(p, e)
-#define isALPHA_utf8_safe(p, e) _generic_invlist_utf8_safe(_CC_ALPHA, p, e)
+#define isALPHA_utf8_safe(p, e) generic_invlist_utf8_safe_(CC_ALPHA_, p, e)
#define isALPHANUMERIC_utf8_safe(p, e) \
- _generic_invlist_utf8_safe(_CC_ALPHANUMERIC, p, e)
+ generic_invlist_utf8_safe_(CC_ALPHANUMERIC_, p, e)
#define isASCII_utf8_safe(p, e) \
/* Because ASCII is invariant under utf8, the non-utf8 macro \
* works */ \
(__ASSERT_(_utf8_safe_assert(p, e)) isASCII(*(p)))
#define isBLANK_utf8_safe(p, e) \
- _generic_non_invlist_utf8_safe(_CC_BLANK, is_HORIZWS_high, p, e)
+ generic_non_invlist_utf8_safe_(CC_BLANK_, is_HORIZWS_high, p, e)
#ifdef EBCDIC
/* Because all controls are UTF-8 invariants in EBCDIC, we can use this
@@ -2242,14 +2350,14 @@ END_EXTERN_C
# define isCNTRL_utf8_safe(p, e) \
(__ASSERT_(_utf8_safe_assert(p, e)) isCNTRL_L1(*(p)))
#else
-# define isCNTRL_utf8_safe(p, e) _generic_utf8_safe(_CC_CNTRL, p, e, 0)
+# define isCNTRL_utf8_safe(p, e) generic_utf8_safe_(CC_CNTRL_, p, e, 0)
#endif
#define isDIGIT_utf8_safe(p, e) \
- _generic_utf8_safe_no_upper_latin1(_CC_DIGIT, p, e, \
- _is_utf8_FOO(_CC_DIGIT, p, e))
-#define isGRAPH_utf8_safe(p, e) _generic_invlist_utf8_safe(_CC_GRAPH, p, e)
-#define isIDCONT_utf8_safe(p, e) _generic_func_utf8_safe(_CC_WORDCHAR, \
+ generic_utf8_safe_no_upper_latin1_(CC_DIGIT_, p, e, \
+ _is_utf8_FOO(CC_DIGIT_, p, e))
+#define isGRAPH_utf8_safe(p, e) generic_invlist_utf8_safe_(CC_GRAPH_, p, e)
+#define isIDCONT_utf8_safe(p, e) generic_func_utf8_safe_(CC_WORDCHAR_, \
_is_utf8_perl_idcont, p, e)
/* To prevent S_scan_word in toke.c from hanging, we have to make sure that
@@ -2259,22 +2367,22 @@ END_EXTERN_C
* This used to be not the XID version, but we decided to go with the more
* modern Unicode definition */
#define isIDFIRST_utf8_safe(p, e) \
- _generic_func_utf8_safe(_CC_IDFIRST, \
+ generic_func_utf8_safe_(CC_IDFIRST_, \
_is_utf8_perl_idstart, (U8 *) (p), (U8 *) (e))
-#define isLOWER_utf8_safe(p, e) _generic_invlist_utf8_safe(_CC_LOWER, p, e)
-#define isPRINT_utf8_safe(p, e) _generic_invlist_utf8_safe(_CC_PRINT, p, e)
+#define isLOWER_utf8_safe(p, e) generic_invlist_utf8_safe_(CC_LOWER_, p, e)
+#define isPRINT_utf8_safe(p, e) generic_invlist_utf8_safe_(CC_PRINT_, p, e)
#define isPSXSPC_utf8_safe(p, e) isSPACE_utf8_safe(p, e)
-#define isPUNCT_utf8_safe(p, e) _generic_invlist_utf8_safe(_CC_PUNCT, p, e)
+#define isPUNCT_utf8_safe(p, e) generic_invlist_utf8_safe_(CC_PUNCT_, p, e)
#define isSPACE_utf8_safe(p, e) \
- _generic_non_invlist_utf8_safe(_CC_SPACE, is_XPERLSPACE_high, p, e)
-#define isUPPER_utf8_safe(p, e) _generic_invlist_utf8_safe(_CC_UPPER, p, e)
+ generic_non_invlist_utf8_safe_(CC_SPACE_, is_XPERLSPACE_high, p, e)
+#define isUPPER_utf8_safe(p, e) generic_invlist_utf8_safe_(CC_UPPER_, p, e)
#define isVERTWS_utf8_safe(p, e) \
- _generic_non_invlist_utf8_safe(_CC_VERTSPACE, is_VERTWS_high, p, e)
+ generic_non_invlist_utf8_safe_(CC_VERTSPACE_, is_VERTWS_high, p, e)
#define isWORDCHAR_utf8_safe(p, e) \
- _generic_invlist_utf8_safe(_CC_WORDCHAR, p, e)
+ generic_invlist_utf8_safe_(CC_WORDCHAR_, p, e)
#define isXDIGIT_utf8_safe(p, e) \
- _generic_utf8_safe_no_upper_latin1(_CC_XDIGIT, p, e, \
+ generic_utf8_safe_no_upper_latin1_(CC_XDIGIT_, p, e, \
(UNLIKELY((e) - (p) < UTF8SKIP(p)) \
? (_force_out_malformed_utf8_message( \
(U8 *) (p), (U8 *) (e), 0, 1), 0) \
@@ -2315,10 +2423,10 @@ END_EXTERN_C
#define isXDIGIT_LC_utf8(p, e) isXDIGIT_LC_utf8_safe(p, e)
/* For internal core Perl use only: the base macros for defining macros like
- * isALPHA_LC_utf8_safe. These are like _generic_utf8, but if the first code
+ * isALPHA_LC_utf8_safe. These are like generic_utf8_, but if the first code
* point in 'p' is within the 0-255 range, it uses locale rules from the
* passed-in 'macro' parameter */
-#define _generic_LC_utf8_safe(macro, p, e, above_latin1) \
+#define generic_LC_utf8_safe_(macro, p, e, above_latin1) \
(__ASSERT_(_utf8_safe_assert(p, e)) \
(UTF8_IS_INVARIANT(*(p))) \
? macro(*(p)) \
@@ -2329,56 +2437,56 @@ END_EXTERN_C
(U8 *) (p), (U8 *) (e), 0, 1), 0)) \
: above_latin1))
-#define _generic_LC_invlist_utf8_safe(macro, classnum, p, e) \
- _generic_LC_utf8_safe(macro, p, e, \
+#define generic_LC_invlist_utf8_safe_(macro, classnum, p, e) \
+ generic_LC_utf8_safe_(macro, p, e, \
_is_utf8_FOO(classnum, p, e))
-#define _generic_LC_func_utf8_safe(macro, above_latin1, p, e) \
- _generic_LC_utf8_safe(macro, p, e, above_latin1(p, e))
+#define generic_LC_func_utf8_safe_(macro, above_latin1, p, e) \
+ generic_LC_utf8_safe_(macro, p, e, above_latin1(p, e))
-#define _generic_LC_non_invlist_utf8_safe(classnum, above_latin1, p, e) \
- _generic_LC_utf8_safe(classnum, p, e, \
+#define generic_LC_non_invlist_utf8_safe_(classnum, above_latin1, p, e) \
+ generic_LC_utf8_safe_(classnum, p, e, \
(UNLIKELY((e) - (p) < UTF8SKIP(p)) \
? (_force_out_malformed_utf8_message( \
(U8 *) (p), (U8 *) (e), 0, 1), 0) \
: above_latin1(p)))
#define isALPHANUMERIC_LC_utf8_safe(p, e) \
- _generic_LC_invlist_utf8_safe(isALPHANUMERIC_LC, \
- _CC_ALPHANUMERIC, p, e)
+ generic_LC_invlist_utf8_safe_(isALPHANUMERIC_LC, \
+ CC_ALPHANUMERIC_, p, e)
#define isALPHA_LC_utf8_safe(p, e) \
- _generic_LC_invlist_utf8_safe(isALPHA_LC, _CC_ALPHA, p, e)
+ generic_LC_invlist_utf8_safe_(isALPHA_LC, CC_ALPHA_, p, e)
#define isASCII_LC_utf8_safe(p, e) \
(__ASSERT_(_utf8_safe_assert(p, e)) isASCII_LC(*(p)))
#define isBLANK_LC_utf8_safe(p, e) \
- _generic_LC_non_invlist_utf8_safe(isBLANK_LC, is_HORIZWS_high, p, e)
+ generic_LC_non_invlist_utf8_safe_(isBLANK_LC, is_HORIZWS_high, p, e)
#define isCNTRL_LC_utf8_safe(p, e) \
- _generic_LC_utf8_safe(isCNTRL_LC, p, e, 0)
+ generic_LC_utf8_safe_(isCNTRL_LC, p, e, 0)
#define isDIGIT_LC_utf8_safe(p, e) \
- _generic_LC_invlist_utf8_safe(isDIGIT_LC, _CC_DIGIT, p, e)
+ generic_LC_invlist_utf8_safe_(isDIGIT_LC, CC_DIGIT_, p, e)
#define isGRAPH_LC_utf8_safe(p, e) \
- _generic_LC_invlist_utf8_safe(isGRAPH_LC, _CC_GRAPH, p, e)
+ generic_LC_invlist_utf8_safe_(isGRAPH_LC, CC_GRAPH_, p, e)
#define isIDCONT_LC_utf8_safe(p, e) \
- _generic_LC_func_utf8_safe(isIDCONT_LC, \
+ generic_LC_func_utf8_safe_(isIDCONT_LC, \
_is_utf8_perl_idcont, p, e)
#define isIDFIRST_LC_utf8_safe(p, e) \
- _generic_LC_func_utf8_safe(isIDFIRST_LC, \
+ generic_LC_func_utf8_safe_(isIDFIRST_LC, \
_is_utf8_perl_idstart, p, e)
#define isLOWER_LC_utf8_safe(p, e) \
- _generic_LC_invlist_utf8_safe(isLOWER_LC, _CC_LOWER, p, e)
+ generic_LC_invlist_utf8_safe_(isLOWER_LC, CC_LOWER_, p, e)
#define isPRINT_LC_utf8_safe(p, e) \
- _generic_LC_invlist_utf8_safe(isPRINT_LC, _CC_PRINT, p, e)
+ generic_LC_invlist_utf8_safe_(isPRINT_LC, CC_PRINT_, p, e)
#define isPSXSPC_LC_utf8_safe(p, e) isSPACE_LC_utf8_safe(p, e)
#define isPUNCT_LC_utf8_safe(p, e) \
- _generic_LC_invlist_utf8_safe(isPUNCT_LC, _CC_PUNCT, p, e)
+ generic_LC_invlist_utf8_safe_(isPUNCT_LC, CC_PUNCT_, p, e)
#define isSPACE_LC_utf8_safe(p, e) \
- _generic_LC_non_invlist_utf8_safe(isSPACE_LC, is_XPERLSPACE_high, p, e)
+ generic_LC_non_invlist_utf8_safe_(isSPACE_LC, is_XPERLSPACE_high, p, e)
#define isUPPER_LC_utf8_safe(p, e) \
- _generic_LC_invlist_utf8_safe(isUPPER_LC, _CC_UPPER, p, e)
+ generic_LC_invlist_utf8_safe_(isUPPER_LC, CC_UPPER_, p, e)
#define isWORDCHAR_LC_utf8_safe(p, e) \
- _generic_LC_invlist_utf8_safe(isWORDCHAR_LC, _CC_WORDCHAR, p, e)
+ generic_LC_invlist_utf8_safe_(isWORDCHAR_LC, CC_WORDCHAR_, p, e)
#define isXDIGIT_LC_utf8_safe(p, e) \
- _generic_LC_non_invlist_utf8_safe(isXDIGIT_LC, is_XDIGIT_high, p, e)
+ generic_LC_non_invlist_utf8_safe_(isXDIGIT_LC, is_XDIGIT_high, p, e)
/* Macros for backwards compatibility and for completeness when the ASCII and
* Latin1 values are identical */
@@ -2438,6 +2546,7 @@ The typedef to use to declare variables that are to hold line numbers.
Line numbers are unsigned, 32 bits.
*/
typedef U32 line_t;
+#define LINE_Tf U32uf
#define NOLINE ((line_t) 4294967295UL) /* = FFFFFFFF */
/* Helpful alias for version prescan */
@@ -2498,6 +2607,8 @@ typedef U32 line_t;
=for apidoc_section $memory
=for apidoc Am|void|Newx|void* ptr|int nitems|type
+=for apidoc_item |void*|safemalloc|size_t size
+
The XSUB-writer's interface to the C C<malloc> function.
Memory obtained by this should B<ONLY> be freed with L</"Safefree">.
@@ -2515,12 +2626,16 @@ cast. See also C<L</Newx>>.
Memory obtained by this should B<ONLY> be freed with L</"Safefree">.
=for apidoc Am|void|Newxz|void* ptr|int nitems|type
+=for apidoc_item |void*|safecalloc|size_t nitems|size_t item_size
+
The XSUB-writer's interface to the C C<malloc> function. The allocated
memory is zeroed with C<memzero>. See also C<L</Newx>>.
Memory obtained by this should B<ONLY> be freed with L</"Safefree">.
=for apidoc Am|void|Renew|void* ptr|int nitems|type
+=for apidoc_item |void*|saferealloc|void *ptr|size_t size
+
The XSUB-writer's interface to the C C<realloc> function.
Memory obtained by this should B<ONLY> be freed with L</"Safefree">.
@@ -2537,35 +2652,37 @@ The XSUB-writer's interface to the C C<free> function.
This should B<ONLY> be used on memory obtained using L</"Newx"> and friends.
=for apidoc_section $string
-=for apidoc Am|void|Move|void* src|void* dest|int nitems|type
+=for apidoc Am|void |Move |void* src|void* dest|int nitems|type
+=for apidoc_item |void *|MoveD|void* src|void* dest|int nitems|type
The XSUB-writer's interface to the C C<memmove> function. The C<src> is the
source, C<dest> is the destination, C<nitems> is the number of items, and
C<type> is the type. Can do overlapping moves. See also C<L</Copy>>.
-=for apidoc Am|void *|MoveD|void* src|void* dest|int nitems|type
-Like C<Move> but returns C<dest>. Useful
+C<MoveD> is like C<Move> but returns C<dest>. Useful
for encouraging compilers to tail-call
optimise.
-=for apidoc Am|void|Copy|void* src|void* dest|int nitems|type
+=for apidoc Am|void |Copy |void* src|void* dest|int nitems|type
+=for apidoc_item |void *|CopyD|void* src|void* dest|int nitems|type
The XSUB-writer's interface to the C C<memcpy> function. The C<src> is the
source, C<dest> is the destination, C<nitems> is the number of items, and
C<type> is the type. May fail on overlapping copies. See also C<L</Move>>.
-=for apidoc Am|void *|CopyD|void* src|void* dest|int nitems|type
-
-Like C<Copy> but returns C<dest>. Useful
+C<CopyD> is like C<Copy> but returns C<dest>. Useful
for encouraging compilers to tail-call
optimise.
-=for apidoc Am|void|Zero|void* dest|int nitems|type
+=for apidoc Am|void |NewCopy |void* src|void* dest|int nitems|type
+Combines Newx() and Copy() into a single macro. Dest will be allocated
+using Newx() and then src will be copied into it.
+
+=for apidoc Am|void |Zero |void* dest|int nitems|type
+=for apidoc_item |void *|ZeroD|void* dest|int nitems|type
The XSUB-writer's interface to the C C<memzero> function. The C<dest> is the
destination, C<nitems> is the number of items, and C<type> is the type.
-=for apidoc Am|void *|ZeroD|void* dest|int nitems|type
-
-Like C<Zero> but returns dest. Useful
+C<ZeroD> is like C<Zero> but returns C<dest>. Useful
for encouraging compilers to tail-call
optimise.
@@ -2613,6 +2730,7 @@ PoisonWith(0xEF) for catching access to freed memory.
* max(n) * sizeof(t) > MEM_SIZE_MAX
*/
+
# define _MEM_WRAP_NEEDS_RUNTIME_CHECK(n,t) \
( sizeof(MEM_SIZE) < sizeof(n) \
|| sizeof(t) > ((MEM_SIZE)1 << 8*(sizeof(MEM_SIZE) - sizeof(n))))
@@ -2648,20 +2766,20 @@ PoisonWith(0xEF) for catching access to freed memory.
/* "a" arg must be a string literal */
# define MEM_WRAP_CHECK_s(n,t,a) \
- (void)(UNLIKELY(_MEM_WRAP_WILL_WRAP(n,t)) \
- && (Perl_croak_nocontext("" a ""),0))
+ ( (void) (UNLIKELY(_MEM_WRAP_WILL_WRAP(n,t)) \
+ && (Perl_croak_nocontext(ASSERT_IS_LITERAL(a)), 0)))
-#define MEM_WRAP_CHECK_(n,t) MEM_WRAP_CHECK(n,t),
+# define MEM_WRAP_CHECK_(n,t) MEM_WRAP_CHECK(n,t),
-#define PERL_STRLEN_ROUNDUP(n) ((void)(((n) > MEM_SIZE_MAX - 2 * PERL_STRLEN_ROUNDUP_QUANTUM) ? (croak_memory_wrap(),0) : 0), _PERL_STRLEN_ROUNDUP_UNCHECKED(n))
+# define PERL_STRLEN_ROUNDUP(n) ((void)(((n) > MEM_SIZE_MAX - 2 * PERL_STRLEN_ROUNDUP_QUANTUM) ? (croak_memory_wrap(),0) : 0), _PERL_STRLEN_ROUNDUP_UNCHECKED(n))
#else
-#define MEM_WRAP_CHECK(n,t)
-#define MEM_WRAP_CHECK_1(n,t,a)
-#define MEM_WRAP_CHECK_s(n,t,a)
-#define MEM_WRAP_CHECK_(n,t)
+# define MEM_WRAP_CHECK(n,t)
+# define MEM_WRAP_CHECK_1(n,t,a)
+# define MEM_WRAP_CHECK_s(n,t,a)
+# define MEM_WRAP_CHECK_(n,t)
-#define PERL_STRLEN_ROUNDUP(n) _PERL_STRLEN_ROUNDUP_UNCHECKED(n)
+# define PERL_STRLEN_ROUNDUP(n) _PERL_STRLEN_ROUNDUP_UNCHECKED(n)
#endif
@@ -2708,10 +2826,6 @@ enum mem_log_type {
MLT_DEL_SV
};
# endif
-# if defined(PERL_IN_SV_C) /* those are only used in sv.c */
-void Perl_mem_log_new_sv(const SV *sv, const char *filename, const int linenumber, const char *funcname);
-void Perl_mem_log_del_sv(const SV *sv, const char *filename, const int linenumber, const char *funcname);
-# endif
# endif
#endif
@@ -2770,6 +2884,11 @@ void Perl_mem_log_del_sv(const SV *sv, const char *filename, const int linenumbe
#define CopyD(s,d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), perl_assert_ptr(s), memcpy((char*)(d),(const char*)(s), (n) * sizeof(t)))
#define ZeroD(d,n,t) (MEM_WRAP_CHECK_(n,t) perl_assert_ptr(d), memzero((char*)(d), (n) * sizeof(t)))
+#define NewCopy(s,d,n,t) STMT_START { \
+ Newx(d,n,t); \
+ Copy(s,d,n,t); \
+} STMT_END
+
#define PoisonWith(d,n,t,b) (MEM_WRAP_CHECK_(n,t) (void)memset((char*)(d), (U8)(b), (n) * sizeof(t)))
#define PoisonNew(d,n,t) PoisonWith(d,n,t,0xAB)
#define PoisonFree(d,n,t) PoisonWith(d,n,t,0xEF)
@@ -2804,6 +2923,12 @@ last-inclusive range.
#define C_ARRAY_LENGTH(a) (sizeof(a)/sizeof((a)[0]))
#define C_ARRAY_END(a) ((a) + C_ARRAY_LENGTH(a))
+#if defined(PERL_CORE) || defined(PERL_EXT_RE_BUILD)
+/* strlen() of a literal string constant. Restricting this to core, in part
+ * because it can generate compiler warnings about comparing unlike signs */
+# define STRLENs(s) (sizeof("" s "") - 1)
+#endif
+
#ifdef NEED_VA_COPY
# ifdef va_copy
# define Perl_va_copy(s, d) va_copy(d, s)
@@ -2831,18 +2956,53 @@ last-inclusive range.
#define pTHX__VALUE
#endif /* USE_ITHREADS */
-/* Perl_deprecate was not part of the public API, and did not have a deprecate()
- shortcut macro defined without -DPERL_CORE. Neither codesearch.google.com nor
- CPAN::Unpack show any users outside the core. */
+/*
+ Perl_deprecate was not part of the public API, and did not have a deprecate()
+ shortcut macro defined without -DPERL_CORE. Neither codesearch.google.com nor
+ CPAN::Unpack show any users outside the core.
+
+=for apidoc_section $warning
+=for apidoc Cdm||deprecate|U32 category|"message"
+Wrapper around Perl_ck_warner_d() to produce a deprecated warning in the
+given category with an appropriate message. The C<message> argument must
+be a C string. The string " is deprecated" will automatically be added
+to the end of the C<message>.
+
+=for apidoc Cdm||deprecate_disappears_in|U32 category|"when"|"message"
+Wrapper around Perl_ck_warner_d() to produce a deprecated warning in the
+given category with an appropriate message that the construct referred
+to by the message will disappear in a specific release. The C<when> and
+C<message> arguments must be a C string. The C<when> string is expected
+to be of the form "5.40", with no minor element in the version. The actual
+message output will be the result of the following expression C<message
+" is deprecated, and will disappear in Perl " when> which is why C<message>
+and C<when> must be literal C strings.
+
+=for apidoc Cdm||deprecate_fatal_in|U32 category|"when"|"message"
+Wrapper around Perl_ck_warner_d() to produce a deprecated warning in the
+given category with an appropriate message that the construct referred
+to by the message will become fatal in a specific release. The C<when>
+and C<message> arguments must be a C string. The C<when> string is expected
+to be of the form "5.40", with no minor element in the version. The actual
+message output will be the result of the following expression C<message " is
+deprecated, and will become fatal in Perl " when> which is why C<message>
+and C<when> must be literal C strings.
+
+=cut
+*/
+
#ifdef PERL_CORE
-# define deprecate(s) Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED), \
- "Use of " s " is deprecated")
-# define deprecate_disappears_in(when,message) \
- Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED), \
- message ", and will disappear in Perl " when)
-# define deprecate_fatal_in(when,message) \
- Perl_ck_warner_d(aTHX_ packWARN(WARN_DEPRECATED), \
- message ". Its use will be fatal in Perl " when)
+# define deprecate(category,message) \
+ Perl_ck_warner_d(aTHX_ packWARN(category), \
+ message " is deprecated")
+
+# define deprecate_disappears_in(category,when,message) \
+ Perl_ck_warner_d(aTHX_ packWARN(category), \
+ message " is deprecated, and will disappear in Perl " when)
+
+# define deprecate_fatal_in(category,when,message) \
+ Perl_ck_warner_d(aTHX_ packWARN(category), \
+ message " is deprecated, and will become fatal in Perl " when)
#endif
/* Internal macros to deal with gids and uids */
@@ -2872,6 +3032,85 @@ last-inclusive range.
#endif
+/* These are simple Marsaglia XOR-SHIFT RNG's for 64 and 32 bits. These
+ * RNG's are of reasonable quality, very fast, and have the interesting
+ * property that provided 'x' is non-zero they create a cycle of 2^32-1
+ * or 2^64-1 "random" like numbers, with the exception of 0. Thus they
+ * are very useful when you want an integer to "dance" in a random way,
+ * but you also never want it to become 0 and thus false.
+ *
+ * Obviously they leave x unchanged if it starts out as 0.
+ *
+ * We have two variants just because that can be helpful in certain
+ * places. There is no advantage to either, they are equally bad as each
+ * other as far RNG's go. Sufficiently random for many purposes, but
+ * insufficiently random for serious use as they fail important tests in
+ * the Test01 BigCrush RNG test suite by L’Ecuyer and Simard. (Note
+ * that Drand48 also fails BigCrush). The main point is they produce
+ * different sequences and in places where we want some randomlike
+ * behavior they are cheap and easy.
+ *
+ * Marsaglia was one of the early researchers into RNG testing and wrote
+ * the Diehard RNG test suite, which after his death become the
+ * Dieharder RNG suite, and was generally supplanted by the Test01 suite
+ * by L'Ecruyer and associates.
+ *
+ * There are dozens of shift parameters that create a pseudo random ring
+ * of integers 1..2^N-1, if you need a different sequence just read the
+ * paper and select a set of parameters. In fact, simply reversing the
+ * shift order from L/R/L to R/L/R should result in another valid
+ * example, but read the paper before you do that.
+ *
+ * PDF of the original paper:
+ * https://www.jstatsoft.org/article/download/v008i14/916
+ * Wikipedia:
+ * https://en.wikipedia.org/wiki/Xorshift
+ * Criticism:
+ * https://www.iro.umontreal.ca/~lecuyer/myftp/papers/xorshift.pdf
+ * Test01:
+ * http://simul.iro.umontreal.ca/testu01/tu01.html
+ * Diehard:
+ * https://en.wikipedia.org/wiki/Diehard_tests
+ * Dieharder:
+ * https://webhome.phy.duke.edu/~rgb/General/rand_rate/rand_rate.abs
+ *
+ */
+
+/* 32 bit version */
+#define PERL_XORSHIFT32_A(x) \
+STMT_START { \
+ (x) ^= ((x) << 13); \
+ (x) ^= ((x) >> 17); \
+ (x) ^= ((x) << 5); \
+} STMT_END
+
+/* 64 bit version */
+#define PERL_XORSHIFT64_A(x) \
+STMT_START { \
+ (x) ^= ((x) << 13); \
+ (x) ^= ((x) >> 7); \
+ (x) ^= ((x) << 17); \
+} STMT_END
+
+/* 32 bit version */
+#define PERL_XORSHIFT32_B(x) \
+STMT_START { \
+ (x) ^= ((x) << 5); \
+ (x) ^= ((x) >> 27); \
+ (x) ^= ((x) << 8); \
+} STMT_END
+
+/* 64 bit version - currently this is unused,
+ * it is provided here to complement the 32 bit _B
+ * variant which IS used. */
+#define PERL_XORSHIFT64_B(x) \
+STMT_START { \
+ (x) ^= ((x) << 15); \
+ (x) ^= ((x) >> 49); \
+ (x) ^= ((x) << 26); \
+} STMT_END
+
+
#endif /* PERL_HANDY_H_ */
/*
diff --git a/Master/tlpkg/tlperl/lib/CORE/hv.h b/Master/tlpkg/tlperl/lib/CORE/hv.h
index 119cf8c9662..ba9f9e4dbc5 100644
--- a/Master/tlpkg/tlperl/lib/CORE/hv.h
+++ b/Master/tlpkg/tlperl/lib/CORE/hv.h
@@ -28,6 +28,13 @@
# define PERL_HASH_ITER_BUCKET(iter) (((iter)->xhv_riter) ^ ((iter)->xhv_rand))
#endif
+#ifdef PERL_USE_UNSHARED_KEYS_IN_LARGE_HASHES
+#define LARGE_HASH_HEURISTIC(hv,new_max) S_large_hash_heuristic(aTHX_ (hv), (new_max))
+#else
+#define LARGE_HASH_HEURISTIC(hv,new_max) 0
+#endif
+
+
/* entry in hash value chain */
struct he {
/* Keep hent_next first in this structure, because sv_free_arenas take
@@ -105,6 +112,9 @@ union _xhvnameu {
HEK **xhvnameu_names; /* When xhv_name_count is non-0 */
};
+/* A struct defined by pad.h and used within class.c */
+struct suspended_compcv;
+
struct xpvhv_aux {
union _xhvnameu xhv_name_u; /* name, if a symbol table */
AV *xhv_backreferences; /* back references for weak references */
@@ -125,10 +135,25 @@ struct xpvhv_aux {
used to detect each() after insert for warnings */
#endif
U32 xhv_aux_flags; /* assorted extra flags */
+
+ /* The following fields are only valid if we have the flag HvAUXf_IS_CLASS */
+ HV *xhv_class_superclass; /* STASH of the :isa() base class */
+ CV *xhv_class_initfields_cv; /* CV for running initfields */
+ AV *xhv_class_adjust_blocks; /* CVs containing the ADJUST blocks */
+ PADNAMELIST *xhv_class_fields; /* PADNAMEs with PadnameIsFIELD() */
+ PADOFFSET xhv_class_next_fieldix;
+ HV *xhv_class_param_map; /* Maps param names to field index stored in UV */
+
+ struct suspended_compcv
+ *xhv_class_suspended_initfields_compcv;
};
#define HvAUXf_SCAN_STASH 0x1 /* stash is being scanned by gv_check */
#define HvAUXf_NO_DEREF 0x2 /* @{}, %{} etc (and nomethod) not present */
+#define HvAUXf_IS_CLASS 0x4 /* the package is a 'class' */
+
+#define HvSTASH_IS_CLASS(hv) \
+ (HvHasAUX(hv) && HvAUX(hv)->xhv_aux_flags & HvAUXf_IS_CLASS)
/* hash structure: */
/* This structure must match the beginning of struct xpvmg in sv.h. */
@@ -139,6 +164,14 @@ struct xpvhv {
STRLEN xhv_max; /* subscript of last element of xhv_array */
};
+struct xpvhv_with_aux {
+ HV *xmg_stash; /* class package */
+ union _xmgu xmg_u;
+ STRLEN xhv_keys; /* total keys, including placeholders */
+ STRLEN xhv_max; /* subscript of last element of xhv_array */
+ struct xpvhv_aux xhv_aux;
+};
+
/*
=for apidoc AmnU||HEf_SVKEY
This flag, used in the length slot of hash entries and magic structures,
@@ -242,18 +275,6 @@ C<SV*>.
#define PERL_HASH_DEFAULT_HvMAX 7
-/* During hsplit(), if HvMAX(hv)+1 (the new bucket count) is >= this value,
- * we preallocate the HvAUX() struct.
- * The assumption being that we are using so much space anyway we might
- * as well allocate the extra bytes and speed up later keys()
- * or each() operations. We don't do this to small hashes as we assume
- * that a) it will be easy/fast to resize them to add the iterator, and b) that
- * many of them will be objects which won't be traversed. Larger hashes however
- * will take longer to extend, and the size of the aux struct is swamped by the
- * overall length of the bucket array.
- * */
-#define PERL_HV_ALLOC_AUX_SIZE (1 << 9)
-
/* these hash entry flags ride on hent_klen (for use only in magic/tied HVs) */
#define HEf_SVKEY -2 /* hent_key is an SV* */
@@ -266,24 +287,44 @@ C<SV*>.
=for apidoc Am|STRLEN|HvFILL|HV *const hv
-See L</hv_fill>.
+Returns the number of hash buckets that happen to be in use.
+
+As of perl 5.25 this function is used only for debugging
+purposes, and the number of used hash buckets is not
+in any way cached, thus this function can be costly
+to execute as it must iterate over all the buckets in the
+hash.
=cut
*/
+
#define HvFILL(hv) Perl_hv_fill(aTHX_ MUTABLE_HV(hv))
#define HvMAX(hv) ((XPVHV*) SvANY(hv))->xhv_max
+
+/*
+
+=for apidoc Am|bool|HvHasAUX|HV *const hv
+
+Returns true if the HV has a C<struct xpvhv_aux> extension. Use this to check
+whether it is valid to call C<HvAUX()>.
+
+=cut
+
+*/
+#define HvHasAUX(hv) (SvFLAGS(hv) & SVphv_HasAUX)
+
/* This quite intentionally does no flag checking first. That's your
- responsibility. */
-#define HvAUX(hv) ((struct xpvhv_aux*)&(HvARRAY(hv)[HvMAX(hv)+1]))
+ responsibility. Use HvHasAUX() first */
+#define HvAUX(hv) (&(((struct xpvhv_with_aux*) SvANY(hv))->xhv_aux))
#define HvRITER(hv) (*Perl_hv_riter_p(aTHX_ MUTABLE_HV(hv)))
#define HvEITER(hv) (*Perl_hv_eiter_p(aTHX_ MUTABLE_HV(hv)))
#define HvRITER_set(hv,r) Perl_hv_riter_set(aTHX_ MUTABLE_HV(hv), r)
#define HvEITER_set(hv,e) Perl_hv_eiter_set(aTHX_ MUTABLE_HV(hv), e)
-#define HvRITER_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_riter : -1)
-#define HvEITER_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_eiter : NULL)
-#define HvRAND_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_rand : 0)
-#define HvLASTRAND_get(hv) (SvOOK(hv) ? HvAUX(hv)->xhv_last_rand : 0)
+#define HvRITER_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_riter : -1)
+#define HvEITER_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_eiter : NULL)
+#define HvRAND_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_rand : 0)
+#define HvLASTRAND_get(hv) (HvHasAUX(hv) ? HvAUX(hv)->xhv_last_rand : 0)
#define HvNAME(hv) HvNAME_get(hv)
#define HvNAMELEN(hv) HvNAMELEN_get(hv)
@@ -304,15 +345,16 @@ See L</hv_fill>.
)
/* This macro may go away without notice. */
#define HvNAME_HEK(hv) \
- (SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvNAME_HEK_NN(hv) : NULL)
+ (HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvNAME_HEK_NN(hv) : NULL)
+#define HvHasNAME(hv) \
+ (HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv))
#define HvNAME_get(hv) \
- ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \
- ? HEK_KEY(HvNAME_HEK_NN(hv)) : NULL)
+ (HvHasNAME(hv) ? HEK_KEY(HvNAME_HEK_NN(hv)) : NULL)
#define HvNAMELEN_get(hv) \
- ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \
+ ((HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \
? HEK_LEN(HvNAME_HEK_NN(hv)) : 0)
#define HvNAMEUTF8(hv) \
- ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \
+ ((HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvNAME_HEK_NN(hv)) \
? HEK_UTF8(HvNAME_HEK_NN(hv)) : 0)
#define HvENAME_HEK_NN(hv) \
( \
@@ -321,20 +363,18 @@ See L</hv_fill>.
HvAUX(hv)->xhv_name_count == -1 ? NULL : \
HvAUX(hv)->xhv_name_u.xhvnameu_name \
)
+#define HvHasENAME_HEK(hv) \
+ (HvHasAUX(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name)
#define HvENAME_HEK(hv) \
- (SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name ? HvENAME_HEK_NN(hv) : NULL)
+ (HvHasENAME_HEK(hv) ? HvENAME_HEK_NN(hv) : NULL)
+#define HvHasENAME(hv) \
+ (HvHasENAME_HEK(hv) && HvAUX(hv)->xhv_name_count != -1)
#define HvENAME_get(hv) \
- ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \
- ? HEK_KEY(HvENAME_HEK_NN(hv)) : NULL)
+ (HvHasENAME(hv) ? HEK_KEY(HvENAME_HEK_NN(hv)) : NULL)
#define HvENAMELEN_get(hv) \
- ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \
- ? HEK_LEN(HvENAME_HEK_NN(hv)) : 0)
+ (HvHasENAME(hv) ? HEK_LEN(HvENAME_HEK_NN(hv)) : 0)
#define HvENAMEUTF8(hv) \
- ((SvOOK(hv) && HvAUX(hv)->xhv_name_u.xhvnameu_name && HvAUX(hv)->xhv_name_count != -1) \
- ? HEK_UTF8(HvENAME_HEK_NN(hv)) : 0)
-
-/* the number of keys (including any placeholders) - NOT PART OF THE API */
-#define XHvTOTALKEYS(xhv) ((xhv)->xhv_keys)
+ (HvHasENAME(hv) ? HEK_UTF8(HvENAME_HEK_NN(hv)) : 0)
/*
* HvKEYS gets the number of keys that actually exist(), and is provided
@@ -343,11 +383,18 @@ See L</hv_fill>.
*/
#define HvKEYS(hv) HvUSEDKEYS(hv)
#define HvUSEDKEYS(hv) (HvTOTALKEYS(hv) - HvPLACEHOLDERS_get(hv))
-#define HvTOTALKEYS(hv) XHvTOTALKEYS((XPVHV*) SvANY(hv))
+#define HvTOTALKEYS(hv) (((XPVHV*) SvANY(hv))->xhv_keys)
#define HvPLACEHOLDERS(hv) (*Perl_hv_placeholders_p(aTHX_ MUTABLE_HV(hv)))
#define HvPLACEHOLDERS_get(hv) (SvMAGIC(hv) ? Perl_hv_placeholders_get(aTHX_ (const HV *)hv) : 0)
#define HvPLACEHOLDERS_set(hv,p) Perl_hv_placeholders_set(aTHX_ MUTABLE_HV(hv), p)
+/* This (now) flags whether *new* keys in the hash will be allocated from the
+ * shared string table. We have a heuristic to call HvSHAREKEYS_off() if a hash
+ * is "getting large". After which, the first keys in that hash will be from
+ * the shared string table, but subsequent keys will not be.
+ *
+ * If we didn't do this, we'd have to reallocate all keys when we switched this
+ * flag, which would be work for no real gain. */
#define HvSHAREKEYS(hv) (SvFLAGS(hv) & SVphv_SHAREKEYS)
#define HvSHAREKEYS_on(hv) (SvFLAGS(hv) |= SVphv_SHAREKEYS)
#define HvSHAREKEYS_off(hv) (SvFLAGS(hv) &= ~SVphv_SHAREKEYS)
@@ -414,7 +461,7 @@ See L</hv_fill>.
#define HVhek_UTF8 0x01 /* Key is utf8 encoded. */
#define HVhek_WASUTF8 0x02 /* Key is bytes here, but was supplied as utf8. */
-#define HVhek_UNSHARED 0x08 /* This key isn't a shared hash key. */
+#define HVhek_NOTSHARED 0x04 /* This key isn't a shared hash key. */
/* the following flags are options for functions, they are not stored in heks */
#define HVhek_FREEKEY 0x100 /* Internal flag to say key is Newx()ed. */
#define HVhek_PLACEHOLD 0x200 /* Internal flag to create placeholder.
@@ -422,9 +469,7 @@ See L</hv_fill>.
#define HVhek_KEYCANONICAL 0x400 /* Internal flag - key is in canonical form.
If the string is UTF-8, it cannot be
converted to bytes. */
-#define HVhek_MASK 0xFF
-
-#define HVhek_ENABLEHVKFLAGS (HVhek_MASK & ~(HVhek_UNSHARED))
+#define HVhek_ENABLEHVKFLAGS (HVhek_UTF8|HVhek_WASUTF8)
#define HEK_UTF8(hek) (HEK_FLAGS(hek) & HVhek_UTF8)
#define HEK_UTF8_on(hek) (HEK_FLAGS(hek) |= HVhek_UTF8)
@@ -505,19 +550,19 @@ See L</hv_fill>.
* chars). See STR_WITH_LEN in handy.h - because these are macros we cant use
* STR_WITH_LEN to do the work, we have to unroll it. */
#define hv_existss(hv, key) \
- hv_exists((hv), ("" key ""), (sizeof(key)-1))
+ hv_exists((hv), ASSERT_IS_LITERAL(key), (sizeof(key)-1))
#define hv_fetchs(hv, key, lval) \
- hv_fetch((hv), ("" key ""), (sizeof(key)-1), (lval))
+ hv_fetch((hv), ASSERT_IS_LITERAL(key), (sizeof(key)-1), (lval))
#define hv_deletes(hv, key, flags) \
- hv_delete((hv), ("" key ""), (sizeof(key)-1), (flags))
+ hv_delete((hv), ASSERT_IS_LITERAL(key), (sizeof(key)-1), (flags))
#define hv_name_sets(hv, name, flags) \
- hv_name_set((hv),("" name ""),(sizeof(name)-1), flags)
+ hv_name_set((hv),ASSERT_IS_LITERAL(name),(sizeof(name)-1), flags)
#define hv_stores(hv, key, val) \
- hv_store((hv), ("" key ""), (sizeof(key)-1), (val), 0)
+ hv_store((hv), ASSERT_IS_LITERAL(key), (sizeof(key)-1), (val), 0)
#ifdef PERL_CORE
# define hv_storehek(hv, hek, val) \
@@ -533,6 +578,9 @@ See L</hv_fill>.
# define hv_deletehek(hv, hek, flags) \
hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \
(flags)|HV_DELETE, NULL, HEK_HASH(hek))
+#define hv_existshek(hv, hek) \
+ cBOOL(hv_common((hv), NULL, HEK_KEY(hek), HEK_LEN(hek), HEK_UTF8(hek), \
+ HV_FETCH_ISEXISTS, NULL, HEK_HASH(hek)))
#endif
/* This refcounted he structure is used for storing the hints used for lexical
diff --git a/Master/tlpkg/tlperl/lib/CORE/hv_func.h b/Master/tlpkg/tlperl/lib/CORE/hv_func.h
index 7d8b01b0d4e..a4e70d52bc6 100755
--- a/Master/tlpkg/tlperl/lib/CORE/hv_func.h
+++ b/Master/tlpkg/tlperl/lib/CORE/hv_func.h
@@ -23,7 +23,19 @@
#endif
#ifndef PERL_HASH_USE_SBOX32_ALSO
-#define PERL_HASH_USE_SBOX32_ALSO 1
+# if defined(PERL_HASH_USE_SBOX32) || !defined(PERL_HASH_NO_SBOX32)
+# define PERL_HASH_USE_SBOX32_ALSO 1
+# else
+# define PERL_HASH_USE_SBOX32_ALSO 0
+# endif
+#endif
+
+#undef PERL_HASH_USE_SBOX32
+#undef PERL_HASH_NO_SBOX32
+#if PERL_HASH_USE_SBOX32_ALSO != 0
+# define PERL_HASH_USE_SBOX32
+#else
+# define PERL_HASH_NO_SBOX32
#endif
#ifndef SBOX32_MAX_LEN
@@ -34,40 +46,43 @@
#include "sbox32_hash.h"
#if defined(PERL_HASH_FUNC_SIPHASH)
-# define __PERL_HASH_FUNC "SIPHASH_2_4"
-# define __PERL_HASH_WORD_TYPE U64
-# define __PERL_HASH_WORD_SIZE sizeof(__PERL_HASH_WORD_TYPE)
-# define __PERL_HASH_SEED_BYTES (__PERL_HASH_WORD_SIZE * 2)
-# define __PERL_HASH_STATE_BYTES (__PERL_HASH_WORD_SIZE * 4)
-# define __PERL_HASH_SEED_STATE(seed,state) S_perl_siphash_seed_state(seed,state)
-# define __PERL_HASH_WITH_STATE(state,str,len) S_perl_hash_siphash_2_4_with_state((state),(U8*)(str),(len))
+# define PERL_HASH_FUNC_DEFINE "PERL_HASH_FUNC_SIPHASH"
+# define PVT__PERL_HASH_FUNC "SIPHASH_2_4"
+# define PVT__PERL_HASH_WORD_TYPE U64
+# define PVT__PERL_HASH_WORD_SIZE sizeof(PVT__PERL_HASH_WORD_TYPE)
+# define PVT__PERL_HASH_SEED_BYTES (PVT__PERL_HASH_WORD_SIZE * 2)
+# define PVT__PERL_HASH_STATE_BYTES (PVT__PERL_HASH_WORD_SIZE * 4)
+# define PVT__PERL_HASH_SEED_STATE(seed,state) S_perl_siphash_seed_state(seed,state)
+# define PVT__PERL_HASH_WITH_STATE(state,str,len) S_perl_hash_siphash_2_4_with_state((state),(U8*)(str),(len))
#elif defined(PERL_HASH_FUNC_SIPHASH13)
-# define __PERL_HASH_FUNC "SIPHASH_1_3"
-# define __PERL_HASH_WORD_TYPE U64
-# define __PERL_HASH_WORD_SIZE sizeof(__PERL_HASH_WORD_TYPE)
-# define __PERL_HASH_SEED_BYTES (__PERL_HASH_WORD_SIZE * 2)
-# define __PERL_HASH_STATE_BYTES (__PERL_HASH_WORD_SIZE * 4)
-# define __PERL_HASH_SEED_STATE(seed,state) S_perl_siphash_seed_state(seed,state)
-# define __PERL_HASH_WITH_STATE(state,str,len) S_perl_hash_siphash_1_3_with_state((state),(U8*)(str),(len))
+# define PERL_HASH_FUNC_DEFINE "PERL_HASH_FUNC_SIPHASH13"
+# define PVT__PERL_HASH_FUNC "SIPHASH_1_3"
+# define PVT__PERL_HASH_WORD_TYPE U64
+# define PVT__PERL_HASH_WORD_SIZE sizeof(PVT__PERL_HASH_WORD_TYPE)
+# define PVT__PERL_HASH_SEED_BYTES (PVT__PERL_HASH_WORD_SIZE * 2)
+# define PVT__PERL_HASH_STATE_BYTES (PVT__PERL_HASH_WORD_SIZE * 4)
+# define PVT__PERL_HASH_SEED_STATE(seed,state) S_perl_siphash_seed_state(seed,state)
+# define PVT__PERL_HASH_WITH_STATE(state,str,len) S_perl_hash_siphash_1_3_with_state((state),(const U8*)(str),(len))
#elif defined(PERL_HASH_FUNC_ZAPHOD32)
-# define __PERL_HASH_FUNC "ZAPHOD32"
-# define __PERL_HASH_WORD_TYPE U32
-# define __PERL_HASH_WORD_SIZE sizeof(__PERL_HASH_WORD_TYPE)
-# define __PERL_HASH_SEED_BYTES (__PERL_HASH_WORD_SIZE * 3)
-# define __PERL_HASH_STATE_BYTES (__PERL_HASH_WORD_SIZE * 3)
-# define __PERL_HASH_SEED_STATE(seed,state) zaphod32_seed_state(seed,state)
-# define __PERL_HASH_WITH_STATE(state,str,len) (U32)zaphod32_hash_with_state((state),(U8*)(str),(len))
+# define PERL_HASH_FUNC_DEFINE "PERL_HASH_FUNC_ZAPHOD32"
+# define PVT__PERL_HASH_FUNC "ZAPHOD32"
+# define PVT__PERL_HASH_WORD_TYPE U32
+# define PVT__PERL_HASH_WORD_SIZE sizeof(PVT__PERL_HASH_WORD_TYPE)
+# define PVT__PERL_HASH_SEED_BYTES (PVT__PERL_HASH_WORD_SIZE * 3)
+# define PVT__PERL_HASH_STATE_BYTES (PVT__PERL_HASH_WORD_SIZE * 3)
+# define PVT__PERL_HASH_SEED_STATE(seed,state) zaphod32_seed_state(seed,state)
+# define PVT__PERL_HASH_WITH_STATE(state,str,len) (U32)zaphod32_hash_with_state((state),(U8*)(str),(len))
# include "zaphod32_hash.h"
#endif
-#ifndef __PERL_HASH_WITH_STATE
+#ifndef PVT__PERL_HASH_WITH_STATE
#error "No hash function defined!"
#endif
-#ifndef __PERL_HASH_SEED_BYTES
-#error "__PERL_HASH_SEED_BYTES not defined"
+#ifndef PVT__PERL_HASH_SEED_BYTES
+#error "PVT__PERL_HASH_SEED_BYTES not defined"
#endif
-#ifndef __PERL_HASH_FUNC
-#error "__PERL_HASH_FUNC not defined"
+#ifndef PVT__PERL_HASH_FUNC
+#error "PVT__PERL_HASH_FUNC not defined"
#endif
/* Some siphash static functions are needed by XS::APItest even when
@@ -76,56 +91,56 @@
*/
#include "perl_siphash.h"
-#define __PERL_HASH_SEED_roundup(x, y) ( ( ( (x) + ( (y) - 1 ) ) / (y) ) * (y) )
-#define _PERL_HASH_SEED_roundup(x) __PERL_HASH_SEED_roundup(x,__PERL_HASH_WORD_SIZE)
+#define PVT__PERL_HASH_SEED_roundup(x, y) ( ( ( (x) + ( (y) - 1 ) ) / (y) ) * (y) )
+#define PVT_PERL_HASH_SEED_roundup(x) PVT__PERL_HASH_SEED_roundup(x,PVT__PERL_HASH_WORD_SIZE)
#define PL_hash_seed ((U8 *)PL_hash_seed_w)
#define PL_hash_state ((U8 *)PL_hash_state_w)
-#if PERL_HASH_USE_SBOX32_ALSO != 1
-# define _PERL_HASH_FUNC __PERL_HASH_FUNC
-# define _PERL_HASH_SEED_BYTES __PERL_HASH_SEED_BYTES
-# define _PERL_HASH_STATE_BYTES __PERL_HASH_STATE_BYTES
-# define _PERL_HASH_SEED_STATE(seed,state) __PERL_HASH_SEED_STATE(seed,state)
-# define _PERL_HASH_WITH_STATE(state,str,len) __PERL_HASH_WITH_STATE(state,str,len)
+#if PERL_HASH_USE_SBOX32_ALSO == 0
+# define PVT_PERL_HASH_FUNC PVT__PERL_HASH_FUNC
+# define PVT_PERL_HASH_SEED_BYTES PVT__PERL_HASH_SEED_BYTES
+# define PVT_PERL_HASH_STATE_BYTES PVT__PERL_HASH_STATE_BYTES
+# define PVT_PERL_HASH_SEED_STATE(seed,state) PVT__PERL_HASH_SEED_STATE(seed,state)
+# define PVT_PERL_HASH_WITH_STATE(state,str,len) PVT__PERL_HASH_WITH_STATE(state,str,len)
#else
-#define _PERL_HASH_FUNC "SBOX32_WITH_" __PERL_HASH_FUNC
-/* note the 3 in the below code comes from the fact the seed to initialize the SBOX is 96 bits */
-#define _PERL_HASH_SEED_BYTES ( __PERL_HASH_SEED_BYTES + (int)( 3 * sizeof(U32)) )
+#define PVT_PERL_HASH_FUNC "SBOX32_WITH_" PVT__PERL_HASH_FUNC
+/* note the 4 in the below code comes from the fact the seed to initialize the SBOX is 128 bits */
+#define PVT_PERL_HASH_SEED_BYTES ( PVT__PERL_HASH_SEED_BYTES + (int)( 4 * sizeof(U32)) )
-#define _PERL_HASH_STATE_BYTES \
- ( __PERL_HASH_STATE_BYTES + ( ( 1 + ( 256 * SBOX32_MAX_LEN ) ) * sizeof(U32) ) )
+#define PVT_PERL_HASH_STATE_BYTES \
+ ( PVT__PERL_HASH_STATE_BYTES + ( ( 1 + ( 256 * SBOX32_MAX_LEN ) ) * sizeof(U32) ) )
-#define _PERL_HASH_SEED_STATE(seed,state) STMT_START { \
- __PERL_HASH_SEED_STATE(seed,state); \
- sbox32_seed_state96(seed + __PERL_HASH_SEED_BYTES, state + __PERL_HASH_STATE_BYTES); \
+#define PVT_PERL_HASH_SEED_STATE(seed,state) STMT_START { \
+ PVT__PERL_HASH_SEED_STATE(seed,state); \
+ sbox32_seed_state128(seed + PVT__PERL_HASH_SEED_BYTES, state + PVT__PERL_HASH_STATE_BYTES); \
} STMT_END
-#define _PERL_HASH_WITH_STATE(state,str,len) \
+#define PVT_PERL_HASH_WITH_STATE(state,str,len) \
(LIKELY(len <= SBOX32_MAX_LEN) \
- ? sbox32_hash_with_state((state + __PERL_HASH_STATE_BYTES),(U8*)(str),(len)) \
- : __PERL_HASH_WITH_STATE((state),(str),(len)))
+ ? sbox32_hash_with_state((state + PVT__PERL_HASH_STATE_BYTES),(const U8*)(str),(len)) \
+ : PVT__PERL_HASH_WITH_STATE((state),(str),(len)))
#endif
#define PERL_HASH_WITH_SEED(seed,hash,str,len) \
(hash) = S_perl_hash_with_seed((const U8 *) seed, (const U8 *) str,len)
#define PERL_HASH_WITH_STATE(state,hash,str,len) \
- (hash) = _PERL_HASH_WITH_STATE((state),(U8*)(str),(len))
+ (hash) = PVT_PERL_HASH_WITH_STATE((state),(const U8*)(str),(len))
-#define PERL_HASH_SEED_STATE(seed,state) _PERL_HASH_SEED_STATE(seed,state)
-#define PERL_HASH_SEED_BYTES _PERL_HASH_SEED_roundup(_PERL_HASH_SEED_BYTES)
-#define PERL_HASH_STATE_BYTES _PERL_HASH_SEED_roundup(_PERL_HASH_STATE_BYTES)
-#define PERL_HASH_FUNC _PERL_HASH_FUNC
+#define PERL_HASH_SEED_STATE(seed,state) PVT_PERL_HASH_SEED_STATE(seed,state)
+#define PERL_HASH_SEED_BYTES PVT_PERL_HASH_SEED_roundup(PVT_PERL_HASH_SEED_BYTES)
+#define PERL_HASH_STATE_BYTES PVT_PERL_HASH_SEED_roundup(PVT_PERL_HASH_STATE_BYTES)
+#define PERL_HASH_FUNC PVT_PERL_HASH_FUNC
-#define PERL_HASH_SEED_WORDS (PERL_HASH_SEED_BYTES/__PERL_HASH_WORD_SIZE)
-#define PERL_HASH_STATE_WORDS (PERL_HASH_STATE_BYTES/__PERL_HASH_WORD_SIZE)
+#define PERL_HASH_SEED_WORDS (PERL_HASH_SEED_BYTES/PVT__PERL_HASH_WORD_SIZE)
+#define PERL_HASH_STATE_WORDS (PERL_HASH_STATE_BYTES/PVT__PERL_HASH_WORD_SIZE)
#ifdef PERL_USE_SINGLE_CHAR_HASH_CACHE
#define PERL_HASH(state,str,len) \
(hash) = ((len) < 2 ? ( (len) == 0 ? PL_hash_chars[256] : PL_hash_chars[(U8)(str)[0]] ) \
- : _PERL_HASH_WITH_STATE(PL_hash_state,(U8*)(str),(len)))
+ : PVT_PERL_HASH_WITH_STATE(PL_hash_state,(U8*)(str),(len)))
#else
#define PERL_HASH(hash,str,len) \
PERL_HASH_WITH_STATE(PL_hash_state,hash,(U8*)(str),(len))
@@ -162,9 +177,9 @@
PERL_STATIC_INLINE U32
S_perl_hash_with_seed(const U8 * seed, const U8 *str, STRLEN len) {
- __PERL_HASH_WORD_TYPE state[PERL_HASH_STATE_WORDS];
- _PERL_HASH_SEED_STATE(seed,(U8*)state);
- return _PERL_HASH_WITH_STATE((U8*)state,str,len);
+ PVT__PERL_HASH_WORD_TYPE state[PERL_HASH_STATE_WORDS];
+ PVT_PERL_HASH_SEED_STATE(seed,(U8*)state);
+ return PVT_PERL_HASH_WITH_STATE((U8*)state,str,len);
}
#endif /*compile once*/
diff --git a/Master/tlpkg/tlperl/lib/CORE/hv_macro.h b/Master/tlpkg/tlperl/lib/CORE/hv_macro.h
index a494ad1f556..5bf02a80ed2 100644
--- a/Master/tlpkg/tlperl/lib/CORE/hv_macro.h
+++ b/Master/tlpkg/tlperl/lib/CORE/hv_macro.h
@@ -20,9 +20,9 @@
* The following 3 macros are defined in this section. The other macros defined
* are only needed to help derive these 3.
*
- * U8TO16_LE(x) Read a little endian unsigned 32-bit int
+ * U8TO16_LE(x) Read a little endian unsigned 16-bit int
* U8TO32_LE(x) Read a little endian unsigned 32-bit int
- * U8TO28_LE(x) Read a little endian unsigned 32-bit int
+ * U8TO64_LE(x) Read a little endian unsigned 64-bit int
* ROTL32(x,r) Rotate x left by r bits
* ROTL64(x,r) Rotate x left by r bits
* ROTR32(x,r) Rotate x right by r bits
@@ -30,8 +30,8 @@
*/
#ifndef U8TO16_LE
- #define _shifted_octet(type,ptr,idx,shift) (((type)(((U8*)(ptr))[(idx)]))<<(shift))
- #ifdef USE_UNALIGNED_PTR_DEREF
+ #define _shifted_octet(type,ptr,idx,shift) (((type)(((const U8*)(ptr))[(idx)]))<<(shift))
+ #if defined(USE_UNALIGNED_PTR_DEREF) && (BYTEORDER == 0x1234 || BYTEORDER == 0x12345678)
#define U8TO16_LE(ptr) (*((const U16*)(ptr)))
#define U8TO32_LE(ptr) (*((const U32*)(ptr)))
#define U8TO64_LE(ptr) (*((const U64*)(ptr)))
diff --git a/Master/tlpkg/tlperl/lib/CORE/inline.h b/Master/tlpkg/tlperl/lib/CORE/inline.h
index bbf27da6f58..90930184dac 100755
--- a/Master/tlpkg/tlperl/lib/CORE/inline.h
+++ b/Master/tlpkg/tlperl/lib/CORE/inline.h
@@ -34,6 +34,10 @@ SOFTWARE.
* header files, because they depend on proto.h (included after most other
* headers) or struct definitions.
*
+ * Note also perlstatic.h for functions that can't or shouldn't be inlined, but
+ * whose details should be exposed to the compiler, for such things as tail
+ * call optimization.
+ *
* Each section names the header file that the functions "belong" to.
*/
@@ -57,6 +61,161 @@ Perl_av_count(pTHX_ AV *av)
return AvFILL(av) + 1;
}
+/* ------------------------------- av.c ------------------------------- */
+
+/*
+=for apidoc av_store_simple
+
+This is a cut-down version of av_store that assumes that the array is
+very straightforward - no magic, not readonly, and AvREAL - and that
+C<key> is not negative. This function MUST NOT be used in situations
+where any of those assumptions may not hold.
+
+Stores an SV in an array. The array index is specified as C<key>. It
+can be dereferenced to get the C<SV*> that was stored there (= C<val>)).
+
+Note that the caller is responsible for suitably incrementing the reference
+count of C<val> before the call.
+
+Approximate Perl equivalent: C<splice(@myarray, $key, 1, $val)>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE SV**
+Perl_av_store_simple(pTHX_ AV *av, SSize_t key, SV *val)
+{
+ SV** ary;
+
+ PERL_ARGS_ASSERT_AV_STORE_SIMPLE;
+ assert(SvTYPE(av) == SVt_PVAV);
+ assert(!SvMAGICAL(av));
+ assert(!SvREADONLY(av));
+ assert(AvREAL(av));
+ assert(key > -1);
+
+ ary = AvARRAY(av);
+
+ if (AvFILLp(av) < key) {
+ if (key > AvMAX(av)) {
+ av_extend(av,key);
+ ary = AvARRAY(av);
+ }
+ AvFILLp(av) = key;
+ } else
+ SvREFCNT_dec(ary[key]);
+
+ ary[key] = val;
+ return &ary[key];
+}
+
+/*
+=for apidoc av_fetch_simple
+
+This is a cut-down version of av_fetch that assumes that the array is
+very straightforward - no magic, not readonly, and AvREAL - and that
+C<key> is not negative. This function MUST NOT be used in situations
+where any of those assumptions may not hold.
+
+Returns the SV at the specified index in the array. The C<key> is the
+index. If lval is true, you are guaranteed to get a real SV back (in case
+it wasn't real before), which you can then modify. Check that the return
+value is non-null before dereferencing it to a C<SV*>.
+
+The rough perl equivalent is C<$myarray[$key]>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE SV**
+Perl_av_fetch_simple(pTHX_ AV *av, SSize_t key, I32 lval)
+{
+ PERL_ARGS_ASSERT_AV_FETCH_SIMPLE;
+ assert(SvTYPE(av) == SVt_PVAV);
+ assert(!SvMAGICAL(av));
+ assert(!SvREADONLY(av));
+ assert(AvREAL(av));
+ assert(key > -1);
+
+ if ( (key > AvFILLp(av)) || !AvARRAY(av)[key]) {
+ return lval ? av_store_simple(av,key,newSV_type(SVt_NULL)) : NULL;
+ } else {
+ return &AvARRAY(av)[key];
+ }
+}
+
+/*
+=for apidoc av_push_simple
+
+This is a cut-down version of av_push that assumes that the array is very
+straightforward - no magic, not readonly, and AvREAL - and that C<key> is
+not less than -1. This function MUST NOT be used in situations where any
+of those assumptions may not hold.
+
+Pushes an SV (transferring control of one reference count) onto the end of the
+array. The array will grow automatically to accommodate the addition.
+
+Perl equivalent: C<push @myarray, $val;>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_av_push_simple(pTHX_ AV *av, SV *val)
+{
+ PERL_ARGS_ASSERT_AV_PUSH_SIMPLE;
+ assert(SvTYPE(av) == SVt_PVAV);
+ assert(!SvMAGICAL(av));
+ assert(!SvREADONLY(av));
+ assert(AvREAL(av));
+ assert(AvFILLp(av) > -2);
+
+ (void)av_store_simple(av,AvFILLp(av)+1,val);
+}
+
+/*
+=for apidoc av_new_alloc
+
+This implements L<perlapi/C<newAV_alloc_x>>
+and L<perlapi/C<newAV_alloc_xz>>, which are the public API for this
+functionality.
+
+Creates a new AV and allocates its SV* array.
+
+This is similar to, but more efficient than doing:
+
+ AV *av = newAV();
+ av_extend(av, key);
+
+The size parameter is used to pre-allocate a SV* array large enough to
+hold at least elements C<0..(size-1)>. C<size> must be at least 1.
+
+The C<zeroflag> parameter controls whether or not the array is NULL
+initialized.
+
+=cut
+*/
+
+PERL_STATIC_INLINE AV *
+Perl_av_new_alloc(pTHX_ SSize_t size, bool zeroflag)
+{
+ AV * const av = newAV();
+ SV** ary;
+ PERL_ARGS_ASSERT_AV_NEW_ALLOC;
+ assert(size > 0);
+
+ Newx(ary, size, SV*); /* Newx performs the memwrap check */
+ AvALLOC(av) = ary;
+ AvARRAY(av) = ary;
+ AvMAX(av) = size - 1;
+
+ if (zeroflag)
+ Zero(ary, size, SV*);
+
+ return av;
+}
+
+
/* ------------------------------- cv.h ------------------------------- */
/*
@@ -76,6 +235,13 @@ Perl_CvGV(pTHX_ CV *sv)
: ((XPVCV*)MUTABLE_PTR(SvANY(sv)))->xcv_gv_u.xcv_gv;
}
+/*
+=for apidoc CvDEPTH
+Returns the recursion level of the CV C<sv>. Hence >= 2 indicates we are in a
+recursive call.
+
+=cut
+*/
PERL_STATIC_INLINE I32 *
Perl_CvDEPTH(const CV * const sv)
{
@@ -115,6 +281,25 @@ S_strip_spaces(pTHX_ const char * orig, STRLEN * const len)
}
#endif
+/* ------------------------------- iperlsys.h ------------------------------- */
+#if ! defined(PERL_IMPLICIT_SYS) && defined(USE_ITHREADS)
+
+/* Otherwise this function is implemented as macros in iperlsys.h */
+
+PERL_STATIC_INLINE bool
+S_PerlEnv_putenv(pTHX_ char * str)
+{
+ PERL_ARGS_ASSERT_PERLENV_PUTENV;
+
+ ENV_LOCK;
+ bool retval = putenv(str);
+ ENV_UNLOCK;
+
+ return retval;
+}
+
+#endif
+
/* ------------------------------- mg.h ------------------------------- */
#if defined(PERL_CORE) || defined(PERL_EXT)
@@ -197,6 +382,21 @@ Perl_POPMARK(pTHX)
/* ----------------------------- regexp.h ----------------------------- */
+/* PVLVs need to act as a superset of all scalar types - they are basically
+ * PVMGs with a few extra fields.
+ * REGEXPs are first class scalars, but have many fields that can't be copied
+ * into a PVLV body.
+ *
+ * Hence we take a different approach - instead of a copy, PVLVs store a pointer
+ * back to the original body. To avoid increasing the size of PVLVs just for the
+ * rare case of REGEXP assignment, this pointer is stored in the memory usually
+ * used for SvLEN(). Hence the check for SVt_PVLV below, and the ? : ternary to
+ * read the pointer from the two possible locations. The macro SvLEN() wraps the
+ * access to the union's member xpvlenu_len, but there is no equivalent macro
+ * for wrapping the union's member xpvlenu_rx, hence the direct reference here.
+ *
+ * See commit df6b4bd56551f2d3 for more details. */
+
PERL_STATIC_INLINE struct regexp *
Perl_ReANY(const REGEXP * const re)
{
@@ -209,154 +409,6 @@ Perl_ReANY(const REGEXP * const re)
: (struct regexp *)p;
}
-/* ------------------------------- sv.h ------------------------------- */
-
-PERL_STATIC_INLINE bool
-Perl_SvTRUE(pTHX_ SV *sv)
-{
- PERL_ARGS_ASSERT_SVTRUE;
-
- if (UNLIKELY(sv == NULL))
- return FALSE;
- SvGETMAGIC(sv);
- return SvTRUE_nomg_NN(sv);
-}
-
-PERL_STATIC_INLINE bool
-Perl_SvTRUE_nomg(pTHX_ SV *sv)
-{
- PERL_ARGS_ASSERT_SVTRUE_NOMG;
-
- if (UNLIKELY(sv == NULL))
- return FALSE;
- return SvTRUE_nomg_NN(sv);
-}
-
-PERL_STATIC_INLINE bool
-Perl_SvTRUE_NN(pTHX_ SV *sv)
-{
- PERL_ARGS_ASSERT_SVTRUE_NN;
-
- SvGETMAGIC(sv);
- return SvTRUE_nomg_NN(sv);
-}
-
-PERL_STATIC_INLINE bool
-Perl_SvTRUE_common(pTHX_ SV * sv, const bool sv_2bool_is_fallback)
-{
- PERL_ARGS_ASSERT_SVTRUE_COMMON;
-
- if (UNLIKELY(SvIMMORTAL_INTERP(sv)))
- return SvIMMORTAL_TRUE(sv);
-
- if (! SvOK(sv))
- return FALSE;
-
- if (SvPOK(sv))
- return SvPVXtrue(sv);
-
- if (SvIOK(sv))
- return SvIVX(sv) != 0; /* casts to bool */
-
- if (SvROK(sv) && !(SvOBJECT(SvRV(sv)) && HvAMAGIC(SvSTASH(SvRV(sv)))))
- return TRUE;
-
- if (sv_2bool_is_fallback)
- return sv_2bool_nomg(sv);
-
- return isGV_with_GP(sv);
-}
-
-
-PERL_STATIC_INLINE SV *
-Perl_SvREFCNT_inc(SV *sv)
-{
- if (LIKELY(sv != NULL))
- SvREFCNT(sv)++;
- return sv;
-}
-PERL_STATIC_INLINE SV *
-Perl_SvREFCNT_inc_NN(SV *sv)
-{
- PERL_ARGS_ASSERT_SVREFCNT_INC_NN;
-
- SvREFCNT(sv)++;
- return sv;
-}
-PERL_STATIC_INLINE void
-Perl_SvREFCNT_inc_void(SV *sv)
-{
- if (LIKELY(sv != NULL))
- SvREFCNT(sv)++;
-}
-PERL_STATIC_INLINE void
-Perl_SvREFCNT_dec(pTHX_ SV *sv)
-{
- if (LIKELY(sv != NULL)) {
- U32 rc = SvREFCNT(sv);
- if (LIKELY(rc > 1))
- SvREFCNT(sv) = rc - 1;
- else
- Perl_sv_free2(aTHX_ sv, rc);
- }
-}
-
-PERL_STATIC_INLINE void
-Perl_SvREFCNT_dec_NN(pTHX_ SV *sv)
-{
- U32 rc = SvREFCNT(sv);
-
- PERL_ARGS_ASSERT_SVREFCNT_DEC_NN;
-
- if (LIKELY(rc > 1))
- SvREFCNT(sv) = rc - 1;
- else
- Perl_sv_free2(aTHX_ sv, rc);
-}
-
-PERL_STATIC_INLINE void
-Perl_SvAMAGIC_on(SV *sv)
-{
- PERL_ARGS_ASSERT_SVAMAGIC_ON;
- assert(SvROK(sv));
-
- if (SvOBJECT(SvRV(sv))) HvAMAGIC_on(SvSTASH(SvRV(sv)));
-}
-PERL_STATIC_INLINE void
-Perl_SvAMAGIC_off(SV *sv)
-{
- PERL_ARGS_ASSERT_SVAMAGIC_OFF;
-
- if (SvROK(sv) && SvOBJECT(SvRV(sv)))
- HvAMAGIC_off(SvSTASH(SvRV(sv)));
-}
-
-PERL_STATIC_INLINE U32
-Perl_SvPADSTALE_on(SV *sv)
-{
- assert(!(SvFLAGS(sv) & SVs_PADTMP));
- return SvFLAGS(sv) |= SVs_PADSTALE;
-}
-PERL_STATIC_INLINE U32
-Perl_SvPADSTALE_off(SV *sv)
-{
- assert(!(SvFLAGS(sv) & SVs_PADTMP));
- return SvFLAGS(sv) &= ~SVs_PADSTALE;
-}
-#if defined(PERL_CORE) || defined (PERL_EXT)
-PERL_STATIC_INLINE STRLEN
-S_sv_or_pv_pos_u2b(pTHX_ SV *sv, const char *pv, STRLEN pos, STRLEN *lenp)
-{
- PERL_ARGS_ASSERT_SV_OR_PV_POS_U2B;
- if (SvGAMAGIC(sv)) {
- U8 *hopped = utf8_hop((U8 *)pv, pos);
- if (lenp) *lenp = (STRLEN)(utf8_hop(hopped, *lenp) - hopped);
- return (STRLEN)(hopped - (U8 *)pv);
- }
- return sv_pos_u2b_flags(sv,pos,lenp,SV_CONST_RETURN);
-}
-#endif
-
/* ------------------------------- utf8.h ------------------------------- */
/*
@@ -535,7 +587,7 @@ Perl_is_utf8_invariant_string_loc(const U8* const s, STRLEN len, const U8 ** ep)
/* Here, we know we have at least one full word to process. Process
* per-word as long as we have at least a full word left */
do {
- if ((* (PERL_UINTMAX_T *) x) & PERL_VARIANTS_WORD_MASK) {
+ if ((* (const PERL_UINTMAX_T *) x) & PERL_VARIANTS_WORD_MASK) {
/* Found a variant. Just return if caller doesn't want its
* exact position */
@@ -546,7 +598,7 @@ Perl_is_utf8_invariant_string_loc(const U8* const s, STRLEN len, const U8 ** ep)
# if BYTEORDER == 0x1234 || BYTEORDER == 0x12345678 \
|| BYTEORDER == 0x4321 || BYTEORDER == 0x87654321
- *ep = x + variant_byte_number(* (PERL_UINTMAX_T *) x);
+ *ep = x + variant_byte_number(* (const PERL_UINTMAX_T *) x);
assert(*ep >= s && *ep < send);
return FALSE;
@@ -581,96 +633,420 @@ Perl_is_utf8_invariant_string_loc(const U8* const s, STRLEN len, const U8 ** ep)
return TRUE;
}
-#ifndef EBCDIC
+/* See if the platform has builtins for finding the most/least significant bit,
+ * and which one is right for using on 32 and 64 bit operands */
+#if (__has_builtin(__builtin_clz) || PERL_GCC_VERSION_GE(3,4,0))
+# if U32SIZE == INTSIZE
+# define PERL_CLZ_32 __builtin_clz
+# endif
+# if defined(U64TYPE) && U64SIZE == INTSIZE
+# define PERL_CLZ_64 __builtin_clz
+# endif
+#endif
+#if (__has_builtin(__builtin_ctz) || PERL_GCC_VERSION_GE(3,4,0))
+# if U32SIZE == INTSIZE
+# define PERL_CTZ_32 __builtin_ctz
+# endif
+# if defined(U64TYPE) && U64SIZE == INTSIZE
+# define PERL_CTZ_64 __builtin_ctz
+# endif
+#endif
-PERL_STATIC_INLINE unsigned int
-Perl_variant_byte_number(PERL_UINTMAX_T word)
+#if (__has_builtin(__builtin_clzl) || PERL_GCC_VERSION_GE(3,4,0))
+# if U32SIZE == LONGSIZE && ! defined(PERL_CLZ_32)
+# define PERL_CLZ_32 __builtin_clzl
+# endif
+# if defined(U64TYPE) && U64SIZE == LONGSIZE && ! defined(PERL_CLZ_64)
+# define PERL_CLZ_64 __builtin_clzl
+# endif
+#endif
+#if (__has_builtin(__builtin_ctzl) || PERL_GCC_VERSION_GE(3,4,0))
+# if U32SIZE == LONGSIZE && ! defined(PERL_CTZ_32)
+# define PERL_CTZ_32 __builtin_ctzl
+# endif
+# if defined(U64TYPE) && U64SIZE == LONGSIZE && ! defined(PERL_CTZ_64)
+# define PERL_CTZ_64 __builtin_ctzl
+# endif
+#endif
+
+#if (__has_builtin(__builtin_clzll) || PERL_GCC_VERSION_GE(3,4,0))
+# if U32SIZE == LONGLONGSIZE && ! defined(PERL_CLZ_32)
+# define PERL_CLZ_32 __builtin_clzll
+# endif
+# if defined(U64TYPE) && U64SIZE == LONGLONGSIZE && ! defined(PERL_CLZ_64)
+# define PERL_CLZ_64 __builtin_clzll
+# endif
+#endif
+#if (__has_builtin(__builtin_ctzll) || PERL_GCC_VERSION_GE(3,4,0))
+# if U32SIZE == LONGLONGSIZE && ! defined(PERL_CTZ_32)
+# define PERL_CTZ_32 __builtin_ctzll
+# endif
+# if defined(U64TYPE) && U64SIZE == LONGLONGSIZE && ! defined(PERL_CTZ_64)
+# define PERL_CTZ_64 __builtin_ctzll
+# endif
+#endif
+
+#if defined(_MSC_VER)
+# include <intrin.h>
+# pragma intrinsic(_BitScanForward)
+# pragma intrinsic(_BitScanReverse)
+# ifdef _WIN64
+# pragma intrinsic(_BitScanForward64)
+# pragma intrinsic(_BitScanReverse64)
+# endif
+#endif
+
+/* The reason there are not checks to see if ffs() and ffsl() are available for
+ * determining the lsb, is because these don't improve on the deBruijn method
+ * fallback, which is just a branchless integer multiply, array element
+ * retrieval, and shift. The others, even if the function call overhead is
+ * optimized out, have to cope with the possibility of the input being all
+ * zeroes, and almost certainly will have conditionals for this eventuality.
+ * khw, at the time of this commit, looked at the source for both gcc and clang
+ * to verify this. (gcc used a method inferior to deBruijn.) */
+
+/* Below are functions to find the first, last, or only set bit in a word. On
+ * platforms with 64-bit capability, there is a pair for each operation; the
+ * first taking a 64 bit operand, and the second a 32 bit one. The logic is
+ * the same in each pair, so the second is stripped of most comments. */
+
+#ifdef U64TYPE /* HAS_QUAD not usable outside the core */
+
+PERL_STATIC_INLINE unsigned
+Perl_lsbit_pos64(U64 word)
{
+ /* Find the position (0..63) of the least significant set bit in the input
+ * word */
- /* This returns the position in a word (0..7) of the first variant byte in
- * it. This is a helper function. Note that there are no branches */
+ ASSUME(word != 0);
- assert(word);
+ /* If we can determine that the platform has a usable fast method to get
+ * this info, use that */
- /* Get just the msb bits of each byte */
- word &= PERL_VARIANTS_WORD_MASK;
+# if defined(PERL_CTZ_64)
+# define PERL_HAS_FAST_GET_LSB_POS64
-# if BYTEORDER == 0x1234 || BYTEORDER == 0x12345678
+ return (unsigned) PERL_CTZ_64(word);
- /* Bytes are stored like
- * Byte8 ... Byte2 Byte1
- * 63..56...15...8 7...0
+# elif U64SIZE == 8 && defined(_WIN64) && defined(_MSC_VER)
+# define PERL_HAS_FAST_GET_LSB_POS64
+
+ {
+ unsigned long index;
+ _BitScanForward64(&index, word);
+ return (unsigned)index;
+ }
+
+# else
+
+ /* Here, we didn't find a fast method for finding the lsb. Fall back to
+ * making the lsb the only set bit in the word, and use our function that
+ * works on words with a single bit set.
*
- * Isolate the lsb;
+ * Isolate the lsb;
* https://stackoverflow.com/questions/757059/position-of-least-significant-bit-that-is-set
*
* The word will look like this, with a rightmost set bit in position 's':
- * ('x's are don't cares)
+ * ('x's are don't cares, and 'y's are their complements)
* s
- * x..x100..0
- * x..xx10..0 Right shift (rightmost 0 is shifted off)
- * x..xx01..1 Subtract 1, turns all the trailing zeros into 1's and
- * the 1 just to their left into a 0; the remainder is
- * untouched
- * 0..0011..1 The xor with the original, x..xx10..0, clears that
- * remainder, sets the bottom to all 1
- * 0..0100..0 Add 1 to clear the word except for the bit in 's'
+ * x..x100..00
+ * y..y011..11 Complement
+ * y..y100..00 Add 1
+ * 0..0100..00 And with the original
*
- * Another method is to do 'word &= -word'; but it generates a compiler
- * message on some platforms about taking the negative of an unsigned */
+ * (Yes, complementing and adding 1 is just taking the negative on 2's
+ * complement machines, but not on 1's complement ones, and some compilers
+ * complain about negating an unsigned.)
+ */
+ return single_1bit_pos64(word & (~word + 1));
- word >>= 1;
- word = 1 + (word ^ (word - 1));
+# endif
-# elif BYTEORDER == 0x4321 || BYTEORDER == 0x87654321
+}
- /* Bytes are stored like
- * Byte1 Byte2 ... Byte8
- * 63..56 55..47 ... 7...0
+# define lsbit_pos_uintmax_(word) lsbit_pos64(word)
+#else /* ! QUAD */
+# define lsbit_pos_uintmax_(word) lsbit_pos32(word)
+#endif
+
+PERL_STATIC_INLINE unsigned /* Like above for 32 bit word */
+Perl_lsbit_pos32(U32 word)
+{
+ /* Find the position (0..31) of the least significant set bit in the input
+ * word */
+
+ ASSUME(word != 0);
+
+#if defined(PERL_CTZ_32)
+# define PERL_HAS_FAST_GET_LSB_POS32
+
+ return (unsigned) PERL_CTZ_32(word);
+
+#elif U32SIZE == 4 && defined(_MSC_VER)
+# define PERL_HAS_FAST_GET_LSB_POS32
+
+ {
+ unsigned long index;
+ _BitScanForward(&index, word);
+ return (unsigned)index;
+ }
+
+#else
+
+ return single_1bit_pos32(word & (~word + 1));
+
+#endif
+
+}
+
+
+/* Convert the leading zeros count to the bit position of the first set bit.
+ * This just subtracts from the highest position, 31 or 63. But some compilers
+ * don't optimize this optimally, and so a bit of bit twiddling encourages them
+ * to do the right thing. It turns out that subtracting a smaller non-negative
+ * number 'x' from 2**n-1 for any n is the same as taking the exclusive-or of
+ * the two numbers. To see why, first note that the sum of any number, x, and
+ * its complement, x', is all ones. So all ones minus x is x'. Then note that
+ * the xor of x and all ones is x'. */
+#define LZC_TO_MSBIT_POS_(size, lzc) ((size##SIZE * CHARBITS - 1) ^ (lzc))
+
+#ifdef U64TYPE /* HAS_QUAD not usable outside the core */
+
+PERL_STATIC_INLINE unsigned
+Perl_msbit_pos64(U64 word)
+{
+ /* Find the position (0..63) of the most significant set bit in the input
+ * word */
+
+ ASSUME(word != 0);
+
+ /* If we can determine that the platform has a usable fast method to get
+ * this, use that */
+
+# if defined(PERL_CLZ_64)
+# define PERL_HAS_FAST_GET_MSB_POS64
+
+ return (unsigned) LZC_TO_MSBIT_POS_(U64, PERL_CLZ_64(word));
+
+# elif U64SIZE == 8 && defined(_WIN64) && defined(_MSC_VER)
+# define PERL_HAS_FAST_GET_MSB_POS64
+
+ {
+ unsigned long index;
+ _BitScanReverse64(&index, word);
+ return (unsigned)index;
+ }
+
+# else
+
+ /* Here, we didn't find a fast method for finding the msb. Fall back to
+ * making the msb the only set bit in the word, and use our function that
+ * works on words with a single bit set.
*
* Isolate the msb; http://codeforces.com/blog/entry/10330
*
* Only the most significant set bit matters. Or'ing word with its right
- * shift of 1 makes that bit and the next one to its right both 1. Then
- * right shifting by 2 makes for 4 1-bits in a row. ... We end with the
- * msb and all to the right being 1. */
- word |= word >> 1;
- word |= word >> 2;
- word |= word >> 4;
- word |= word >> 8;
- word |= word >> 16;
- word |= word >> 32; /* This should get optimized out on 32-bit systems. */
+ * shift of 1 makes that bit and the next one to its right both 1.
+ * Repeating that with the right shift of 2 makes for 4 1-bits in a row.
+ * ... We end with the msb and all to the right being 1. */
+ word |= (word >> 1);
+ word |= (word >> 2);
+ word |= (word >> 4);
+ word |= (word >> 8);
+ word |= (word >> 16);
+ word |= (word >> 32);
/* Then subtracting the right shift by 1 clears all but the left-most of
* the 1 bits, which is our desired result */
word -= (word >> 1);
+ /* Now we have a single bit set */
+ return single_1bit_pos64(word);
+
+# endif
+
+}
+
+# define msbit_pos_uintmax_(word) msbit_pos64(word)
+#else /* ! QUAD */
+# define msbit_pos_uintmax_(word) msbit_pos32(word)
+#endif
+
+PERL_STATIC_INLINE unsigned
+Perl_msbit_pos32(U32 word)
+{
+ /* Find the position (0..31) of the most significant set bit in the input
+ * word */
+
+ ASSUME(word != 0);
+
+#if defined(PERL_CLZ_32)
+# define PERL_HAS_FAST_GET_MSB_POS32
+
+ return (unsigned) LZC_TO_MSBIT_POS_(U32, PERL_CLZ_32(word));
+
+#elif U32SIZE == 4 && defined(_MSC_VER)
+# define PERL_HAS_FAST_GET_MSB_POS32
+
+ {
+ unsigned long index;
+ _BitScanReverse(&index, word);
+ return (unsigned)index;
+ }
+
+#else
+
+ word |= (word >> 1);
+ word |= (word >> 2);
+ word |= (word >> 4);
+ word |= (word >> 8);
+ word |= (word >> 16);
+ word -= (word >> 1);
+ return single_1bit_pos32(word);
+
+#endif
+
+}
+
+#if UVSIZE == U64SIZE
+# define msbit_pos(word) msbit_pos64(word)
+# define lsbit_pos(word) lsbit_pos64(word)
+#elif UVSIZE == U32SIZE
+# define msbit_pos(word) msbit_pos32(word)
+# define lsbit_pos(word) lsbit_pos32(word)
+#endif
+
+#ifdef U64TYPE /* HAS_QUAD not usable outside the core */
+
+PERL_STATIC_INLINE unsigned
+Perl_single_1bit_pos64(U64 word)
+{
+ /* Given a 64-bit word known to contain all zero bits except one 1 bit,
+ * find and return the 1's position: 0..63 */
+
+# ifdef PERL_CORE /* macro not exported */
+ ASSUME(isPOWER_OF_2(word));
# else
-# error Unexpected byte order
+ ASSUME(word && (word & (word-1)) == 0);
# endif
- /* Here 'word' has a single bit set: the msb of the first byte in which it
- * is set. Calculate that position in the word. We can use this
- * specialized solution: https://stackoverflow.com/a/32339674/1626653,
- * assumes an 8-bit byte. (On a 32-bit machine, the larger numbers should
- * just get shifted off at compile time) */
- word = (word >> 7) * ((UINTMAX_C( 7) << 56) | (UINTMAX_C(15) << 48)
- | (UINTMAX_C(23) << 40) | (UINTMAX_C(31) << 32)
- | (39 << 24) | (47 << 16)
- | (55 << 8) | (63 << 0));
- word >>= PERL_WORDSIZE * 7; /* >> by either 56 or 24 */
-
- /* Here, word contains the position 7..63 of that bit. Convert to 0..7 */
- word = ((word + 1) >> 3) - 1;
+ /* The only set bit is both the most and least significant bit. If we have
+ * a fast way of finding either one, use that.
+ *
+ * It may appear at first glance that those functions call this one, but
+ * they don't if the corresponding #define is set */
-# if BYTEORDER == 0x4321 || BYTEORDER == 0x87654321
+# ifdef PERL_HAS_FAST_GET_MSB_POS64
- /* And invert the result */
- word = CHARBITS - word - 1;
+ return msbit_pos64(word);
+
+# elif defined(PERL_HAS_FAST_GET_LSB_POS64)
+
+ return lsbit_pos64(word);
+
+# else
+ /* The position of the only set bit in a word can be quickly calculated
+ * using deBruijn sequences. See for example
+ * https://en.wikipedia.org/wiki/De_Bruijn_sequence */
+ return PL_deBruijn_bitpos_tab64[(word * PERL_deBruijnMagic64_)
+ >> PERL_deBruijnShift64_];
# endif
+}
+
+#endif
+
+PERL_STATIC_INLINE unsigned
+Perl_single_1bit_pos32(U32 word)
+{
+ /* Given a 32-bit word known to contain all zero bits except one 1 bit,
+ * find and return the 1's position: 0..31 */
+
+#ifdef PERL_CORE /* macro not exported */
+ ASSUME(isPOWER_OF_2(word));
+#else
+ ASSUME(word && (word & (word-1)) == 0);
+#endif
+#ifdef PERL_HAS_FAST_GET_MSB_POS32
+
+ return msbit_pos32(word);
+
+#elif defined(PERL_HAS_FAST_GET_LSB_POS32)
+
+ return lsbit_pos32(word);
+
+/* Unlikely, but possible for the platform to have a wider fast operation but
+ * not a narrower one. But easy enough to handle the case by widening the
+ * parameter size. (Going the other way, emulating 64 bit by two 32 bit ops
+ * would be slower than the deBruijn method.) */
+#elif defined(PERL_HAS_FAST_GET_MSB_POS64)
+
+ return msbit_pos64(word);
+
+#elif defined(PERL_HAS_FAST_GET_LSB_POS64)
+
+ return lsbit_pos64(word);
+
+#else
+
+ return PL_deBruijn_bitpos_tab32[(word * PERL_deBruijnMagic32_)
+ >> PERL_deBruijnShift32_];
+#endif
+
+}
+
+#ifndef EBCDIC
+
+PERL_STATIC_INLINE unsigned int
+Perl_variant_byte_number(PERL_UINTMAX_T word)
+{
+ /* This returns the position in a word (0..7) of the first variant byte in
+ * it. This is a helper function. Note that there are no branches */
+
+ /* Get just the msb bits of each byte */
+ word &= PERL_VARIANTS_WORD_MASK;
+
+ /* This should only be called if we know there is a variant byte in the
+ * word */
+ assert(word);
+
+# if BYTEORDER == 0x1234 || BYTEORDER == 0x12345678
+
+ /* Bytes are stored like
+ * Byte8 ... Byte2 Byte1
+ * 63..56...15...8 7...0
+ * so getting the lsb of the whole modified word is getting the msb of the
+ * first byte that has its msb set */
+ word = lsbit_pos_uintmax_(word);
+
+ /* Here, word contains the position 7,15,23,...55,63 of that bit. Convert
+ * to 0..7 */
+ return (unsigned int) ((word + 1) >> 3) - 1;
+
+# elif BYTEORDER == 0x4321 || BYTEORDER == 0x87654321
+
+ /* Bytes are stored like
+ * Byte1 Byte2 ... Byte8
+ * 63..56 55..47 ... 7...0
+ * so getting the msb of the whole modified word is getting the msb of the
+ * first byte that has its msb set */
+ word = msbit_pos_uintmax_(word);
+
+ /* Here, word contains the position 63,55,...,23,15,7 of that bit. Convert
+ * to 0..7 */
+ word = ((word + 1) >> 3) - 1;
+
+ /* And invert the result because of the reversed byte order on this
+ * platform */
+ word = CHARBITS - word - 1;
+
return (unsigned int) word;
+
+# else
+# error Unexpected byte order
+# endif
+
}
#endif
@@ -754,7 +1130,8 @@ S_variant_under_utf8_count(const U8* const s, const U8* const e)
#endif
-#ifndef PERL_IN_REGEXEC_C /* Keep these around for that file */
+ /* Keep these around for these files */
+#if ! defined(PERL_IN_REGEXEC_C) && ! defined(PERL_IN_UTF8_C)
# undef PERL_WORDSIZE
# undef PERL_COUNT_MULTIPLIER
# undef PERL_WORD_BOUNDARY_MASK
@@ -1074,6 +1451,108 @@ Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el)
}
}
+/* The perl core arranges to never call the DFA below without there being at
+ * least one byte available to look at. This allows the DFA to use a do {}
+ * while loop which means that calling it with a UTF-8 invariant has a single
+ * conditional, same as the calling code checking for invariance ahead of time.
+ * And having the calling code remove that conditional speeds up by that
+ * conditional, the case where it wasn't invariant. So there's no reason to
+ * check before caling this.
+ *
+ * But we don't know this for non-core calls, so have to retain the check for
+ * them. */
+#ifdef PERL_CORE
+# define PERL_NON_CORE_CHECK_EMPTY(s,e) assert((e) > (s))
+#else
+# define PERL_NON_CORE_CHECK_EMPTY(s,e) if ((e) <= (s)) return FALSE
+#endif
+
+/*
+ * DFA for checking input is valid UTF-8 syntax.
+ *
+ * This uses adaptations of the table and algorithm given in
+ * https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides comprehensive
+ * documentation of the original version. A copyright notice for the original
+ * version is given at the beginning of this file. The Perl adaptations are
+ * documented at the definition of PL_extended_utf8_dfa_tab[].
+ *
+ * This dfa is fast. There are three exit conditions:
+ * 1) a well-formed code point, acceptable to the table
+ * 2) the beginning bytes of an incomplete character, whose completion might
+ * or might not be acceptable
+ * 3) unacceptable to the table. Some of the adaptations have certain,
+ * hopefully less likely to occur, legal inputs be unacceptable to the
+ * table, so these must be sorted out afterwards.
+ *
+ * This macro is a complete implementation of the code executing the DFA. It
+ * is passed the input sequence bounds and the table to use, and what to do
+ * for each of the exit conditions. There are three canned actions, likely to
+ * be the ones you want:
+ * DFA_RETURN_SUCCESS_
+ * DFA_RETURN_FAILURE_
+ * DFA_GOTO_TEASE_APART_FF_
+ *
+ * You pass a parameter giving the action to take for each of the three
+ * possible exit conditions:
+ *
+ * 'accept_action' This is executed when the DFA accepts the input.
+ * DFA_RETURN_SUCCESS_ is the most likely candidate.
+ * 'reject_action' This is executed when the DFA rejects the input.
+ * DFA_RETURN_FAILURE_ is a candidate, or 'goto label' where
+ * you have written code to distinguish the rejecting state
+ * results. Because it happens in several places, and
+ * involves #ifdefs, the special action
+ * DFA_GOTO_TEASE_APART_FF_ is what you want with
+ * PL_extended_utf8_dfa_tab. On platforms without
+ * EXTRA_LONG_UTF8, there is no need to tease anything apart,
+ * so this evaluates to DFA_RETURN_FAILURE_; otherwise you
+ * need to have a label 'tease_apart_FF' that it will transfer
+ * to.
+ * 'incomplete_char_action' This is executed when the DFA ran off the end
+ * before accepting or rejecting the input.
+ * DFA_RETURN_FAILURE_ is the likely action, but you could
+ * have a 'goto', or NOOP. In the latter case the DFA drops
+ * off the end, and you place your code to handle this case
+ * immediately after it.
+ */
+
+#define DFA_RETURN_SUCCESS_ return s - s0
+#define DFA_RETURN_FAILURE_ return 0
+#ifdef HAS_EXTRA_LONG_UTF8
+# define DFA_TEASE_APART_FF_ goto tease_apart_FF
+#else
+# define DFA_TEASE_APART_FF_ DFA_RETURN_FAILURE_
+#endif
+
+#define PERL_IS_UTF8_CHAR_DFA(s0, e, dfa_tab, \
+ accept_action, \
+ reject_action, \
+ incomplete_char_action) \
+ STMT_START { \
+ const U8 * s = s0; \
+ const U8 * e_ = e; \
+ UV state = 0; \
+ \
+ PERL_NON_CORE_CHECK_EMPTY(s, e_); \
+ \
+ do { \
+ state = dfa_tab[256 + state + dfa_tab[*s]]; \
+ s++; \
+ \
+ if (state == 0) { /* Accepting state */ \
+ accept_action; \
+ } \
+ \
+ if (UNLIKELY(state == 1)) { /* Rejecting state */ \
+ reject_action; \
+ } \
+ } while (s < e_); \
+ \
+ /* Here, dropped out of loop before end-of-char */ \
+ incomplete_char_action; \
+ } STMT_END
+
+
/*
=for apidoc isUTF8_CHAR
@@ -1107,46 +1586,41 @@ machines) is a valid UTF-8 character.
This uses an adaptation of the table and algorithm given in
https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides comprehensive
documentation of the original version. A copyright notice for the original
-version is given at the beginning of this file. The Perl adapation is
+version is given at the beginning of this file. The Perl adaptation is
documented at the definition of PL_extended_utf8_dfa_tab[].
-
*/
PERL_STATIC_INLINE Size_t
Perl_isUTF8_CHAR(const U8 * const s0, const U8 * const e)
{
- const U8 * s = s0;
- UV state = 0;
-
PERL_ARGS_ASSERT_ISUTF8_CHAR;
- /* This dfa is fast. If it accepts the input, it was for a well-formed,
- * code point, which can be returned immediately. Otherwise, it is either
- * malformed, or for the start byte FF which the dfa doesn't handle (except
- * on 32-bit ASCII platforms where it trivially is an error). Call a
- * helper function for the other platforms. */
-
- while (s < e && LIKELY(state != 1)) {
- state = PL_extended_utf8_dfa_tab[256
- + state
- + PL_extended_utf8_dfa_tab[*s]];
- if (state != 0) {
- s++;
- continue;
- }
+ PERL_IS_UTF8_CHAR_DFA(s0, e, PL_extended_utf8_dfa_tab,
+ DFA_RETURN_SUCCESS_,
+ DFA_TEASE_APART_FF_,
+ DFA_RETURN_FAILURE_);
- return s - s0 + 1;
- }
+ /* Here, we didn't return success, but dropped out of the loop. In the
+ * case of PL_extended_utf8_dfa_tab, this means the input is either
+ * malformed, or the start byte was FF on a platform that the dfa doesn't
+ * handle FF's. Call a helper function. */
+
+#ifdef HAS_EXTRA_LONG_UTF8
-#if defined(UV_IS_QUAD) || defined(EBCDIC)
+ tease_apart_FF:
- if (NATIVE_UTF8_TO_I8(*s0) == 0xFF && e - s0 >= UTF8_MAXBYTES) {
- return is_utf8_char_helper(s0, e, 0);
+ /* In the case of PL_extended_utf8_dfa_tab, getting here means the input is
+ * either malformed, or was for the largest possible start byte, which we
+ * now check, not inline */
+ if (*s0 != I8_TO_NATIVE_UTF8(0xFF)) {
+ return 0;
}
+ return is_utf8_FF_helper_(s0, e,
+ FALSE /* require full, not partial char */
+ );
#endif
- return 0;
}
/*
@@ -1181,7 +1655,7 @@ C<L</is_strict_utf8_string_loclen>> to check entire strings.
This uses an adaptation of the tables and algorithm given in
https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides comprehensive
documentation of the original version. A copyright notice for the original
-version is given at the beginning of this file. The Perl adapation is
+version is given at the beginning of this file. The Perl adaptation is
documented at the definition of strict_extended_utf8_dfa_tab[].
*/
@@ -1189,32 +1663,21 @@ documented at the definition of strict_extended_utf8_dfa_tab[].
PERL_STATIC_INLINE Size_t
Perl_isSTRICT_UTF8_CHAR(const U8 * const s0, const U8 * const e)
{
- const U8 * s = s0;
- UV state = 0;
-
PERL_ARGS_ASSERT_ISSTRICT_UTF8_CHAR;
- while (s < e && LIKELY(state != 1)) {
- state = PL_strict_utf8_dfa_tab[256 + state + PL_strict_utf8_dfa_tab[*s]];
-
- if (state != 0) {
- s++;
- continue;
- }
-
- return s - s0 + 1;
- }
-
-#ifndef EBCDIC
-
- /* The dfa above drops out for certain Hanguls; handle them specially */
- if (is_HANGUL_ED_utf8_safe(s0, e)) {
- return 3;
- }
+ PERL_IS_UTF8_CHAR_DFA(s0, e, PL_strict_utf8_dfa_tab,
+ DFA_RETURN_SUCCESS_,
+ goto check_hanguls,
+ DFA_RETURN_FAILURE_);
+ check_hanguls:
-#endif
+ /* Here, we didn't return success, but dropped out of the loop. In the
+ * case of PL_strict_utf8_dfa_tab, this means the input is either
+ * malformed, or was for certain Hanguls; handle them specially */
- return 0;
+ /* The dfa above drops out for incomplete or illegal inputs, and certain
+ * legal Hanguls; check and return accordingly */
+ return is_HANGUL_ED_utf8_safe(s0, e);
}
/*
@@ -1247,7 +1710,7 @@ C<L</is_c9strict_utf8_string_loclen>> to check entire strings.
This uses an adaptation of the tables and algorithm given in
https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides comprehensive
documentation of the original version. A copyright notice for the original
-version is given at the beginning of this file. The Perl adapation is
+version is given at the beginning of this file. The Perl adaptation is
documented at the definition of PL_c9_utf8_dfa_tab[].
*/
@@ -1255,23 +1718,12 @@ documented at the definition of PL_c9_utf8_dfa_tab[].
PERL_STATIC_INLINE Size_t
Perl_isC9_STRICT_UTF8_CHAR(const U8 * const s0, const U8 * const e)
{
- const U8 * s = s0;
- UV state = 0;
-
PERL_ARGS_ASSERT_ISC9_STRICT_UTF8_CHAR;
- while (s < e && LIKELY(state != 1)) {
- state = PL_c9_utf8_dfa_tab[256 + state + PL_c9_utf8_dfa_tab[*s]];
-
- if (state != 0) {
- s++;
- continue;
- }
-
- return s - s0 + 1;
- }
-
- return 0;
+ PERL_IS_UTF8_CHAR_DFA(s0, e, PL_c9_utf8_dfa_tab,
+ DFA_RETURN_SUCCESS_,
+ DFA_RETURN_FAILURE_,
+ DFA_RETURN_FAILURE_);
}
/*
@@ -1552,11 +2004,16 @@ Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b)
=for apidoc utf8_hop
Return the UTF-8 pointer C<s> displaced by C<off> characters, either
-forward or backward.
+forward (if C<off> is positive) or backward (if negative). C<s> does not need
+to be pointing to the starting byte of a character. If it isn't, one count of
+C<off> will be used up to get to the start of the next character for forward
+hops, and to the start of the current character for negative ones.
-WARNING: do not use the following unless you *know* C<off> is within
-the UTF-8 data pointed to by C<s> *and* that on entry C<s> is aligned
-on the first byte of character or just after the last byte of a character.
+WARNING: Prefer L</utf8_hop_safe> to this one.
+
+Do NOT use this function unless you B<know> C<off> is within
+the UTF-8 data pointed to by C<s> B<and> that on entry C<s> is aligned
+on the first byte of a character or just after the last byte of a character.
=cut
*/
@@ -1567,10 +2024,20 @@ Perl_utf8_hop(const U8 *s, SSize_t off)
PERL_ARGS_ASSERT_UTF8_HOP;
/* Note: cannot use UTF8_IS_...() too eagerly here since e.g
- * the bitops (especially ~) can create illegal UTF-8.
+ * the XXX bitops (especially ~) can create illegal UTF-8.
* In other words: in Perl UTF-8 is not just for Unicode. */
- if (off >= 0) {
+ if (off > 0) {
+
+ /* Get to next non-continuation byte */
+ if (UNLIKELY(UTF8_IS_CONTINUATION(*s))) {
+ do {
+ s++;
+ }
+ while (UTF8_IS_CONTINUATION(*s));
+ off--;
+ }
+
while (off--)
s += UTF8SKIP(s);
}
@@ -1581,6 +2048,7 @@ Perl_utf8_hop(const U8 *s, SSize_t off)
s--;
}
}
+
GCC_DIAG_IGNORE(-Wcast-qual)
return (U8 *)s;
GCC_DIAG_RESTORE
@@ -1590,7 +2058,9 @@ Perl_utf8_hop(const U8 *s, SSize_t off)
=for apidoc utf8_hop_forward
Return the UTF-8 pointer C<s> displaced by up to C<off> characters,
-forward.
+forward. C<s> does not need to be pointing to the starting byte of a
+character. If it isn't, one count of C<off> will be used up to get to the
+start of the next character.
C<off> must be non-negative.
@@ -1615,6 +2085,15 @@ Perl_utf8_hop_forward(const U8 *s, SSize_t off, const U8 *end)
assert(s <= end);
assert(off >= 0);
+ if (off && UNLIKELY(UTF8_IS_CONTINUATION(*s))) {
+ /* Get to next non-continuation byte */
+ do {
+ s++;
+ }
+ while (UTF8_IS_CONTINUATION(*s));
+ off--;
+ }
+
while (off--) {
STRLEN skip = UTF8SKIP(s);
if ((STRLEN)(end - s) <= skip) {
@@ -1634,7 +2113,9 @@ Perl_utf8_hop_forward(const U8 *s, SSize_t off, const U8 *end)
=for apidoc utf8_hop_back
Return the UTF-8 pointer C<s> displaced by up to C<off> characters,
-backward.
+backward. C<s> does not need to be pointing to the starting byte of a
+character. If it isn't, one count of C<off> will be used up to get to that
+start.
C<off> must be non-positive.
@@ -1659,6 +2140,13 @@ Perl_utf8_hop_back(const U8 *s, SSize_t off, const U8 *start)
assert(start <= s);
assert(off <= 0);
+ /* Note: if we know that the input is well-formed, we can do per-word
+ * hop-back. Commit d6ad3b72778369a84a215b498d8d60d5b03aa1af implemented
+ * that. But it was reverted because doing per-word has some
+ * start-up/tear-down overhead, so only makes sense if the distance to be
+ * moved is large, and core perl doesn't currently move more than a few
+ * characters at a time. You can reinstate it if it does become
+ * advantageous. */
while (off++ && s > start) {
do {
s--;
@@ -1674,7 +2162,10 @@ Perl_utf8_hop_back(const U8 *s, SSize_t off, const U8 *start)
=for apidoc utf8_hop_safe
Return the UTF-8 pointer C<s> displaced by up to C<off> characters,
-either forward or backward.
+either forward or backward. C<s> does not need to be pointing to the starting
+byte of a character. If it isn't, one count of C<off> will be used up to get
+to the start of the next character for forward hops, and to the start of the
+current character for negative ones.
When moving backward it will not move before C<start>.
@@ -1706,6 +2197,73 @@ Perl_utf8_hop_safe(const U8 *s, SSize_t off, const U8 *start, const U8 *end)
/*
+=for apidoc isUTF8_CHAR_flags
+
+Evaluates to non-zero if the first few bytes of the string starting at C<s> and
+looking no further than S<C<e - 1>> are well-formed UTF-8, as extended by Perl,
+that represents some code point, subject to the restrictions given by C<flags>;
+otherwise it evaluates to 0. If non-zero, the value gives how many bytes
+starting at C<s> comprise the code point's representation. Any bytes remaining
+before C<e>, but beyond the ones needed to form the first code point in C<s>,
+are not examined.
+
+If C<flags> is 0, this gives the same results as C<L</isUTF8_CHAR>>;
+if C<flags> is C<UTF8_DISALLOW_ILLEGAL_INTERCHANGE>, this gives the same results
+as C<L</isSTRICT_UTF8_CHAR>>;
+and if C<flags> is C<UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE>, this gives
+the same results as C<L</isC9_STRICT_UTF8_CHAR>>.
+Otherwise C<flags> may be any combination of the C<UTF8_DISALLOW_I<foo>> flags
+understood by C<L</utf8n_to_uvchr>>, with the same meanings.
+
+The three alternative macros are for the most commonly needed validations; they
+are likely to run somewhat faster than this more general one, as they can be
+inlined into your code.
+
+Use L</is_utf8_string_flags>, L</is_utf8_string_loc_flags>, and
+L</is_utf8_string_loclen_flags> to check entire strings.
+
+=cut
+*/
+
+PERL_STATIC_INLINE STRLEN
+Perl_isUTF8_CHAR_flags(const U8 * const s0, const U8 * const e, const U32 flags)
+{
+ PERL_ARGS_ASSERT_ISUTF8_CHAR_FLAGS;
+ assert(0 == (flags & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE
+ |UTF8_DISALLOW_PERL_EXTENDED)));
+
+ PERL_IS_UTF8_CHAR_DFA(s0, e, PL_extended_utf8_dfa_tab,
+ goto check_success,
+ DFA_TEASE_APART_FF_,
+ DFA_RETURN_FAILURE_);
+
+ check_success:
+
+ return is_utf8_char_helper_(s0, e, flags);
+
+#ifdef HAS_EXTRA_LONG_UTF8
+
+ tease_apart_FF:
+
+ /* In the case of PL_extended_utf8_dfa_tab, getting here means the input is
+ * either malformed, or was for the largest possible start byte, which
+ * indicates perl extended UTF-8, well above the Unicode maximum */
+ if ( *s0 != I8_TO_NATIVE_UTF8(0xFF)
+ || (flags & (UTF8_DISALLOW_SUPER|UTF8_DISALLOW_PERL_EXTENDED)))
+ {
+ return 0;
+ }
+
+ /* Otherwise examine the sequence not inline */
+ return is_utf8_FF_helper_(s0, e,
+ FALSE /* require full, not partial char */
+ );
+#endif
+
+}
+
+/*
+
=for apidoc is_utf8_valid_partial_char
Returns 0 if the sequence of bytes starting at C<s> and looking no further than
@@ -1754,18 +2312,47 @@ determined from just the first one or two bytes.
*/
PERL_STATIC_INLINE bool
-Perl_is_utf8_valid_partial_char_flags(const U8 * const s, const U8 * const e, const U32 flags)
+Perl_is_utf8_valid_partial_char_flags(const U8 * const s0, const U8 * const e, const U32 flags)
{
PERL_ARGS_ASSERT_IS_UTF8_VALID_PARTIAL_CHAR_FLAGS;
-
assert(0 == (flags & ~(UTF8_DISALLOW_ILLEGAL_INTERCHANGE
|UTF8_DISALLOW_PERL_EXTENDED)));
- if (s >= e || s + UTF8SKIP(s) <= e) {
- return FALSE;
+ PERL_IS_UTF8_CHAR_DFA(s0, e, PL_extended_utf8_dfa_tab,
+ DFA_RETURN_FAILURE_,
+ DFA_TEASE_APART_FF_,
+ NOOP);
+
+ /* The NOOP above causes the DFA to drop down here iff the input was a
+ * partial character. flags=0 => can return TRUE immediately; otherwise we
+ * need to check (not inline) if the partial character is the beginning of
+ * a disallowed one */
+ if (flags == 0) {
+ return TRUE;
}
- return cBOOL(is_utf8_char_helper(s, e, flags));
+ return cBOOL(is_utf8_char_helper_(s0, e, flags));
+
+#ifdef HAS_EXTRA_LONG_UTF8
+
+ tease_apart_FF:
+
+ /* Getting here means the input is either malformed, or, in the case of
+ * PL_extended_utf8_dfa_tab, was for the largest possible start byte. The
+ * latter case has to be extended UTF-8, so can fail immediately if that is
+ * forbidden */
+
+ if ( *s0 != I8_TO_NATIVE_UTF8(0xFF)
+ || (flags & (UTF8_DISALLOW_SUPER|UTF8_DISALLOW_PERL_EXTENDED)))
+ {
+ return 0;
+ }
+
+ return is_utf8_FF_helper_(s0, e,
+ TRUE /* Require to be a partial character */
+ );
+#endif
+
}
/*
@@ -1844,11 +2431,11 @@ Perl_is_utf8_fixed_width_buf_loclen_flags(const U8 * const s,
PERL_STATIC_INLINE UV
Perl_utf8n_to_uvchr_msgs(const U8 *s,
- STRLEN curlen,
- STRLEN *retlen,
- const U32 flags,
- U32 * errors,
- AV ** msgs)
+ STRLEN curlen,
+ STRLEN *retlen,
+ const U32 flags,
+ U32 * errors,
+ AV ** msgs)
{
/* This is the inlined portion of utf8n_to_uvchr_msgs. It handles the
* simple cases, and, if necessary calls a helper function to deal with the
@@ -1860,13 +2447,13 @@ Perl_utf8n_to_uvchr_msgs(const U8 *s,
* https://bjoern.hoehrmann.de/utf-8/decoder/dfa/, which provides
* comprehensive documentation of the original version. A copyright notice
* for the original version is given at the beginning of this file. The
- * Perl adapation is documented at the definition of PL_strict_utf8_dfa_tab[].
+ * Perl adaptation is documented at the definition of PL_strict_utf8_dfa_tab[].
*/
const U8 * const s0 = s;
const U8 * send = s0 + curlen;
- UV uv = 0; /* The 0 silences some stupid compilers */
- UV state = 0;
+ UV type;
+ UV uv;
PERL_ARGS_ASSERT_UTF8N_TO_UVCHR_MSGS;
@@ -1875,34 +2462,60 @@ Perl_utf8n_to_uvchr_msgs(const U8 *s,
* Otherwise we call a helper function to figure out the more complicated
* cases. */
- while (s < send && LIKELY(state != 1)) {
- UV type = PL_strict_utf8_dfa_tab[*s];
+ /* No calls from core pass in an empty string; non-core need a check */
+#ifdef PERL_CORE
+ assert(curlen > 0);
+#else
+ if (curlen == 0) return _utf8n_to_uvchr_msgs_helper(s0, 0, retlen,
+ flags, errors, msgs);
+#endif
- uv = (state == 0)
- ? ((0xff >> type) & NATIVE_UTF8_TO_I8(*s))
- : UTF8_ACCUMULATE(uv, *s);
- state = PL_strict_utf8_dfa_tab[256 + state + type];
+ type = PL_strict_utf8_dfa_tab[*s];
- if (state != 0) {
- s++;
- continue;
- }
+ /* The table is structured so that 'type' is 0 iff the input byte is
+ * represented identically regardless of the UTF-8ness of the string */
+ if (type == 0) { /* UTF-8 invariants are returned unchanged */
+ uv = *s;
+ }
+ else {
+ UV state = PL_strict_utf8_dfa_tab[256 + type];
+ uv = (0xff >> type) & NATIVE_UTF8_TO_I8(*s);
- if (retlen) {
- *retlen = s - s0 + 1;
- }
- if (errors) {
- *errors = 0;
- }
- if (msgs) {
- *msgs = NULL;
+ while (++s < send) {
+ type = PL_strict_utf8_dfa_tab[*s];
+ state = PL_strict_utf8_dfa_tab[256 + state + type];
+
+ uv = UTF8_ACCUMULATE(uv, *s);
+
+ if (state == 0) {
+#ifdef EBCDIC
+ uv = UNI_TO_NATIVE(uv);
+#endif
+ goto success;
+ }
+
+ if (UNLIKELY(state == 1)) {
+ break;
+ }
}
- return UNI_TO_NATIVE(uv);
+ /* Here is potentially problematic. Use the full mechanism */
+ return _utf8n_to_uvchr_msgs_helper(s0, curlen, retlen, flags,
+ errors, msgs);
+ }
+
+ success:
+ if (retlen) {
+ *retlen = s - s0 + 1;
+ }
+ if (errors) {
+ *errors = 0;
+ }
+ if (msgs) {
+ *msgs = NULL;
}
- /* Here is potentially problematic. Use the full mechanism */
- return _utf8n_to_uvchr_msgs_helper(s0, curlen, retlen, flags, errors, msgs);
+ return uv;
}
PERL_STATIC_INLINE UV
@@ -1922,7 +2535,7 @@ Perl_utf8_to_uvchr_buf_helper(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
}
else {
UV ret = utf8n_to_uvchr(s, send - s, retlen, 0);
- if (retlen && ret == 0 && *s != '\0') {
+ if (retlen && ret == 0 && (send <= s || *s != '\0')) {
*retlen = (STRLEN) -1;
}
@@ -2045,7 +2658,7 @@ S_lossless_NV_to_IV(const NV nv, IV *ivp)
/* ------------------ pp.c, regcomp.c, toke.c, universal.c ------------ */
-#if defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C)
+#if defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C)
#define MAX_CHARSET_NAME_LENGTH 2
@@ -2444,6 +3057,8 @@ Perl_cx_poploop(pTHX_ PERL_CONTEXT *cx)
cx->blk_loop.itersave = NULL;
SvREFCNT_dec(cursv);
}
+ if (cx->cx_type & (CXp_FOR_GV|CXp_FOR_LVREF))
+ SvREFCNT_dec(cx->blk_loop.itervar_u.svp);
}
@@ -2492,6 +3107,36 @@ Perl_cx_popgiven(pTHX_ PERL_CONTEXT *cx)
SvREFCNT_dec(sv);
}
+/*
+=for apidoc newPADxVOP
+
+Constructs, checks and returns an op containing a pad offset. C<type> is
+the opcode, which should be one of C<OP_PADSV>, C<OP_PADAV>, C<OP_PADHV>
+or C<OP_PADCV>. The returned op will have the C<op_targ> field set by
+the C<padix> argument.
+
+This is convenient when constructing a large optree in nested function
+calls, as it avoids needing to store the pad op directly to set the
+C<op_targ> field as a side-effect. For example
+
+ o = op_append_elem(OP_LINESEQ, o,
+ newPADxVOP(OP_PADSV, 0, padix));
+
+=cut
+*/
+
+PERL_STATIC_INLINE OP *
+Perl_newPADxVOP(pTHX_ I32 type, I32 flags, PADOFFSET padix)
+{
+ PERL_ARGS_ASSERT_NEWPADXVOP;
+
+ assert(type == OP_PADSV || type == OP_PADAV || type == OP_PADHV
+ || type == OP_PADCV);
+ OP *o = newOP(type, flags);
+ o->op_targ = padix;
+ return o;
+}
+
/* ------------------ util.h ------------------------------------------- */
/*
@@ -2509,7 +3154,7 @@ range bytes match only themselves.
*/
PERL_STATIC_INLINE I32
-Perl_foldEQ(const char *s1, const char *s2, I32 len)
+Perl_foldEQ(pTHX_ const char *s1, const char *s2, I32 len)
{
const U8 *a = (const U8 *)s1;
const U8 *b = (const U8 *)s2;
@@ -2527,7 +3172,7 @@ Perl_foldEQ(const char *s1, const char *s2, I32 len)
}
PERL_STATIC_INLINE I32
-Perl_foldEQ_latin1(const char *s1, const char *s2, I32 len)
+Perl_foldEQ_latin1(pTHX_ const char *s1, const char *s2, I32 len)
{
/* Compare non-UTF-8 using Unicode (Latin1) semantics. Works on all folds
* representable without UTF-8, except for LATIN_SMALL_LETTER_SHARP_S, and
@@ -2561,7 +3206,7 @@ same case-insensitively in the current locale; false otherwise.
*/
PERL_STATIC_INLINE I32
-Perl_foldEQ_locale(const char *s1, const char *s2, I32 len)
+Perl_foldEQ_locale(pTHX_ const char *s1, const char *s2, I32 len)
{
const U8 *a = (const U8 *)s1;
const U8 *b = (const U8 *)s2;
@@ -2571,8 +3216,14 @@ Perl_foldEQ_locale(const char *s1, const char *s2, I32 len)
assert(len >= 0);
while (len--) {
- if (*a != *b && *a != PL_fold_locale[*b])
+ if (*a != *b && *a != PL_fold_locale[*b]) {
+ DEBUG_Lv(PerlIO_printf(Perl_debug_log,
+ "%s:%d: Our records indicate %02x is not a fold of %02x"
+ " or its mate %02x\n",
+ __FILE__, __LINE__, *a, *b, PL_fold_locale[*b]));
+
return 0;
+ }
a++,b++;
}
return 1;
@@ -2661,7 +3312,7 @@ Perl_mortal_getenv(const char * str)
* mutex is defined accordingly.
*
* But in all cases, using the mutex prevents these problems, as long as
- * all code uses the same mutex..
+ * all code uses the same mutex.
*
* A complication is that this can be called during phases where the
* mortalization process isn't available. These are in interpreter
@@ -2699,7 +3350,7 @@ Perl_mortal_getenv(const char * str)
* the recursive calls and calls from the logger, and treat them specially.
* Let's say we want to do getenv("foo"). We first find
* getenv(PERL_MEM_LOG) and save it to a fixed-length per-interpreter
- * variable, so no temporary is required. Then we do getenv(foo}, and in
+ * variable, so no temporary is required. Then we do getenv(foo), and in
* the process of creating a temporary to save it, this function will be
* called recursively to do a getenv(PERL_MEM_LOG). On the recursed call,
* we detect that it is such a call and return our saved value instead of
@@ -2779,7 +3430,7 @@ Perl_mortal_getenv(const char * str)
}
}
- /* Then each of the three significant characters */
+ /* Then each of the four significant characters */
if (strchr(ret, 'm')) {
*mem_log_meat++ = 'm';
}
@@ -2789,6 +3440,9 @@ Perl_mortal_getenv(const char * str)
if (strchr(ret, 't')) {
*mem_log_meat++ = 't';
}
+ if (strchr(ret, 'c')) {
+ *mem_log_meat++ = 'c';
+ }
*mem_log_meat = '\0';
assert(mem_log_meat < PL_mem_log + sizeof(PL_mem_log));
@@ -2815,7 +3469,7 @@ Perl_mortal_getenv(const char * str)
ret = getenv(str);
if (ret != NULL) {
- ret = SvPVX(sv_2mortal(newSVpv(ret, 0)));
+ ret = SvPVX( newSVpvn_flags(ret, strlen(ret) ,SVs_TEMP) );
}
GETENV_UNLOCK;
@@ -2830,6 +3484,282 @@ Perl_mortal_getenv(const char * str)
return ret;
}
+PERL_STATIC_INLINE bool
+Perl_sv_isbool(pTHX_ const SV *sv)
+{
+ return SvBoolFlagsOK(sv) && BOOL_INTERNALS_sv_isbool(sv);
+}
+
+#ifdef USE_ITHREADS
+
+PERL_STATIC_INLINE AV *
+Perl_cop_file_avn(pTHX_ const COP *cop) {
+
+ PERL_ARGS_ASSERT_COP_FILE_AVN;
+
+ const char *file = CopFILE(cop);
+ if (file) {
+ GV *gv = gv_fetchfile_flags(file, strlen(file), GVF_NOADD);
+ if (gv) {
+ return GvAVn(gv);
+ }
+ else
+ return NULL;
+ }
+ else
+ return NULL;
+}
+
+#endif
+
+PERL_STATIC_INLINE PADNAME *
+Perl_padname_refcnt_inc(PADNAME *pn)
+{
+ PadnameREFCNT(pn)++;
+ return pn;
+}
+
+PERL_STATIC_INLINE PADNAMELIST *
+Perl_padnamelist_refcnt_inc(PADNAMELIST *pnl)
+{
+ PadnamelistREFCNT(pnl)++;
+ return pnl;
+}
+
+/* copy a string to a safe spot */
+
+/*
+=for apidoc_section $string
+=for apidoc savepv
+
+Perl's version of C<strdup()>. Returns a pointer to a newly allocated
+string which is a duplicate of C<pv>. The size of the string is
+determined by C<strlen()>, which means it may not contain embedded C<NUL>
+characters and must have a trailing C<NUL>. To prevent memory leaks, the
+memory allocated for the new string needs to be freed when no longer needed.
+This can be done with the C<L</Safefree>> function, or
+L<C<SAVEFREEPV>|perlguts/SAVEFREEPV(p)>.
+
+On some platforms, Windows for example, all allocated memory owned by a thread
+is deallocated when that thread ends. So if you need that not to happen, you
+need to use the shared memory functions, such as C<L</savesharedpv>>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE char *
+Perl_savepv(pTHX_ const char *pv)
+{
+ PERL_UNUSED_CONTEXT;
+ if (!pv)
+ return NULL;
+ else {
+ char *newaddr;
+ const STRLEN pvlen = strlen(pv)+1;
+ Newx(newaddr, pvlen, char);
+ return (char*)memcpy(newaddr, pv, pvlen);
+ }
+}
+
+/* same thing but with a known length */
+
+/*
+=for apidoc savepvn
+
+Perl's version of what C<strndup()> would be if it existed. Returns a
+pointer to a newly allocated string which is a duplicate of the first
+C<len> bytes from C<pv>, plus a trailing
+C<NUL> byte. The memory allocated for
+the new string can be freed with the C<Safefree()> function.
+
+On some platforms, Windows for example, all allocated memory owned by a thread
+is deallocated when that thread ends. So if you need that not to happen, you
+need to use the shared memory functions, such as C<L</savesharedpvn>>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE char *
+Perl_savepvn(pTHX_ const char *pv, Size_t len)
+{
+ char *newaddr;
+ PERL_UNUSED_CONTEXT;
+
+ Newx(newaddr,len+1,char);
+ /* Give a meaning to NULL pointer mainly for the use in sv_magic() */
+ if (pv) {
+ /* might not be null terminated */
+ newaddr[len] = '\0';
+ return (char *) CopyD(pv,newaddr,len,char);
+ }
+ else {
+ return (char *) ZeroD(newaddr,len+1,char);
+ }
+}
+
+/*
+=for apidoc savesvpv
+
+A version of C<savepv()>/C<savepvn()> which gets the string to duplicate from
+the passed in SV using C<SvPV()>
+
+On some platforms, Windows for example, all allocated memory owned by a thread
+is deallocated when that thread ends. So if you need that not to happen, you
+need to use the shared memory functions, such as C<L</savesharedsvpv>>.
+
+=cut
+*/
+
+PERL_STATIC_INLINE char *
+Perl_savesvpv(pTHX_ SV *sv)
+{
+ STRLEN len;
+ const char * const pv = SvPV_const(sv, len);
+ char *newaddr;
+
+ PERL_ARGS_ASSERT_SAVESVPV;
+
+ ++len;
+ Newx(newaddr,len,char);
+ return (char *) CopyD(pv,newaddr,len,char);
+}
+
+/*
+=for apidoc savesharedsvpv
+
+A version of C<savesharedpv()> which allocates the duplicate string in
+memory which is shared between threads.
+
+=cut
+*/
+
+PERL_STATIC_INLINE char *
+Perl_savesharedsvpv(pTHX_ SV *sv)
+{
+ STRLEN len;
+ const char * const pv = SvPV_const(sv, len);
+
+ PERL_ARGS_ASSERT_SAVESHAREDSVPV;
+
+ return savesharedpvn(pv, len);
+}
+
+#ifndef PERL_GET_CONTEXT_DEFINED
+
+/*
+=for apidoc_section $embedding
+=for apidoc get_context
+
+Implements L<perlapi/C<PERL_GET_CONTEXT>>, which you should use instead.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void *
+Perl_get_context(void)
+{
+# if defined(USE_ITHREADS)
+# ifdef OLD_PTHREADS_API
+ pthread_addr_t t;
+ int error = pthread_getspecific(PL_thr_key, &t);
+ if (error)
+ Perl_croak_nocontext("panic: pthread_getspecific, error=%d", error);
+ return (void*)t;
+# elif defined(I_MACH_CTHREADS)
+ return (void*)cthread_data(cthread_self());
+# else
+ return (void*)PTHREAD_GETSPECIFIC(PL_thr_key);
+# endif
+# else
+ return (void*)NULL;
+# endif
+}
+
+#endif
+
+PERL_STATIC_INLINE MGVTBL*
+Perl_get_vtbl(pTHX_ int vtbl_id)
+{
+ PERL_UNUSED_CONTEXT;
+
+ return (vtbl_id < 0 || vtbl_id >= magic_vtable_max)
+ ? NULL : (MGVTBL*)PL_magic_vtables + vtbl_id;
+}
+
+/*
+=for apidoc my_strlcat
+
+The C library C<strlcat> if available, or a Perl implementation of it.
+This operates on C C<NUL>-terminated strings.
+
+C<my_strlcat()> appends string C<src> to the end of C<dst>. It will append at
+most S<C<size - strlen(dst) - 1>> characters. It will then C<NUL>-terminate,
+unless C<size> is 0 or the original C<dst> string was longer than C<size> (in
+practice this should not happen as it means that either C<size> is incorrect or
+that C<dst> is not a proper C<NUL>-terminated string).
+
+Note that C<size> is the full size of the destination buffer and
+the result is guaranteed to be C<NUL>-terminated if there is room. Note that
+room for the C<NUL> should be included in C<size>.
+
+The return value is the total length that C<dst> would have if C<size> is
+sufficiently large. Thus it is the initial length of C<dst> plus the length of
+C<src>. If C<size> is smaller than the return, the excess was not appended.
+
+=cut
+
+Description stolen from http://man.openbsd.org/strlcat.3
+*/
+#ifndef HAS_STRLCAT
+PERL_STATIC_INLINE Size_t
+Perl_my_strlcat(char *dst, const char *src, Size_t size)
+{
+ Size_t used, length, copy;
+
+ used = strlen(dst);
+ length = strlen(src);
+ if (size > 0 && used < size - 1) {
+ copy = (length >= size - used) ? size - used - 1 : length;
+ memcpy(dst + used, src, copy);
+ dst[used + copy] = '\0';
+ }
+ return used + length;
+}
+#endif
+
+
+/*
+=for apidoc my_strlcpy
+
+The C library C<strlcpy> if available, or a Perl implementation of it.
+This operates on C C<NUL>-terminated strings.
+
+C<my_strlcpy()> copies up to S<C<size - 1>> characters from the string C<src>
+to C<dst>, C<NUL>-terminating the result if C<size> is not 0.
+
+The return value is the total length C<src> would be if the copy completely
+succeeded. If it is larger than C<size>, the excess was not copied.
+
+=cut
+
+Description stolen from http://man.openbsd.org/strlcpy.3
+*/
+#ifndef HAS_STRLCPY
+PERL_STATIC_INLINE Size_t
+Perl_my_strlcpy(char *dst, const char *src, Size_t size)
+{
+ Size_t length, copy;
+
+ length = strlen(src);
+ if (size > 0) {
+ copy = (length >= size) ? size - 1 : length;
+ memcpy(dst, src, copy);
+ dst[copy] = '\0';
+ }
+ return length;
+}
+#endif
+
/*
* ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/Master/tlpkg/tlperl/lib/CORE/intrpvar.h b/Master/tlpkg/tlperl/lib/CORE/intrpvar.h
index 5c49d31528a..f08de2f0d07 100644
--- a/Master/tlpkg/tlperl/lib/CORE/intrpvar.h
+++ b/Master/tlpkg/tlperl/lib/CORE/intrpvar.h
@@ -58,7 +58,10 @@ PERLVARI(I, sub_generation, U32, 1) /* incr to invalidate method cache */
#ifdef PERL_HASH_RANDOMIZE_KEYS
#ifdef USE_PERL_PERTURB_KEYS
-PERLVARI(I, hash_rand_bits_enabled, U8, 1) /* used to randomize hash stuff 0 == no-random, 1 == random, 2 == determinsitic */
+PERLVARI(I, hash_rand_bits_enabled, U8, 1) /* used to randomize hash stuff
+ 0. no-random
+ 1. random
+ 2. deterministic */
#endif
PERLVARI(I, hash_rand_bits, UV, 0) /* used to randomize hash stuff */
#endif
@@ -83,7 +86,7 @@ PERLVARI(I, tainted, bool, FALSE) /* using variables controlled by $< */
* control returns to pp_push or whatever, it sees if any of those flags
* have been set, and if so finally calls mg_set().
*
- * NB: PL_delaymagic is automatically saved and restored by JUMPENV_PUSH
+ * NB: PL_delaymagic is automatically saved and restored by JMPENV_PUSH
* / POP. This removes the need to do ENTER/SAVEI16(PL_delaymagic)/LEAVE
* in hot code like pp_push.
*/
@@ -115,6 +118,7 @@ PERLVARI(I, utf8cache, I8, PERL___I) /* Is the utf8 caching code enabled? */
#undef PERL___I
/*
+=for apidoc_section $GV
=for apidoc Amn|GV *|PL_defgv
The GV representing C<*_>. Useful for access to C<$_>.
@@ -126,11 +130,13 @@ thread's copy.
=cut
*/
-PERLVAR(I, localizing, U8) /* are we processing a local() list? */
+PERLVAR(I, localizing, U8) /* are we processing a local() list?
+ 0 = no, 1 = localizing, 2 = delocalizing */
PERLVAR(I, in_eval, U8) /* trap "fatal" errors? */
PERLVAR(I, defgv, GV *) /* the *_ glob */
/*
+=for apidoc_section $GV
=for apidoc Amn|HV*|PL_curstash
The stash for the package code will be compiled into.
@@ -147,6 +153,7 @@ PERLVAR(I, defstash, HV *) /* main symbol table */
PERLVAR(I, curstash, HV *) /* symbol table for current package */
/*
+=for apidoc_section $COP
=for apidoc Amn|COP*|PL_curcop
The currently active COP (control op) roughly representing the current
@@ -221,6 +228,7 @@ PERLVAR(I, padname_undef, PADNAME)
PERLVAR(I, padname_const, PADNAME)
/*
+=for apidoc_section $SV
=for apidoc Cmn||PL_Sv
A scratch pad SV for whatever temporary use you need. Chiefly used as a
@@ -228,6 +236,10 @@ fallback by macros on platforms where L<perlapi/PERL_USE_GCC_BRACE_GROUPS>> is
unavailable, and which would otherwise evaluate their SV parameter more than
once.
+B<BUT BEWARE>, if this is used in a situation where something that is using it
+is in a call stack with something else that is using it, this variable would
+get zapped, leading to hard-to-diagnose errors.
+
=cut
*/
PERLVAR(I, Sv, SV *)
@@ -238,12 +250,22 @@ PERLVAR(I, stashcache, HV *) /* Cache to speed up S_method_common */
/*
+=for apidoc_section $string
=for apidoc Amn|STRLEN|PL_na
-A convenience variable which is typically used with C<SvPV> when one
-doesn't care about the length of the string. It is usually more efficient
-to either declare a local variable and use that instead or to use the
-C<SvPV_nolen> macro.
+A scratch pad variable in which to store a C<STRLEN> value. If would have been
+better named something like C<PL_temp_strlen>.
+
+It is is typically used with C<SvPV> when one is actually planning to discard
+the returned length, (hence the length is "Not Applicable", which is how this
+variable got its name).
+
+B<BUT BEWARE>, if this is used in a situation where something that is using it
+is in a call stack with something else that is using it, this variable would
+get zapped, leading to hard-to-diagnose errors.
+
+It is usually more efficient to either declare a local variable and use that
+instead, or to use the C<SvPV_nolen> macro.
=cut
*/
@@ -266,6 +288,7 @@ On threaded perls, each thread has an independent copy of this variable;
each initialized at creation time with the current value of the creating
thread's copy.
+=for apidoc_section $io
=for apidoc mn|GV*|PL_last_in_gv
The GV which was last used for a filehandle input operation. (C<< <FH> >>)
@@ -274,6 +297,7 @@ On threaded perls, each thread has an independent copy of this variable;
each initialized at creation time with the current value of the creating
thread's copy.
+=for apidoc_section $io
=for apidoc mn|GV*|PL_ofsgv
The glob containing the output field separator - C<*,> in Perl space.
@@ -364,16 +388,15 @@ thread's copy.
PERLVAR(I, exit_flags, U8) /* was exit() unexpected, etc. */
PERLVAR(I, utf8locale, bool) /* utf8 locale detected */
-PERLVAR(I, in_utf8_CTYPE_locale, bool)
-PERLVAR(I, in_utf8_COLLATE_locale, bool)
-PERLVAR(I, in_utf8_turkic_locale, bool)
-#if defined(USE_ITHREADS) && ! defined(USE_THREAD_SAFE_LOCALE)
-PERLVARI(I, lc_numeric_mutex_depth, int, 0) /* Emulate general semaphore */
+
+#if defined(USE_LOCALE) && defined(USE_LOCALE_THREADS)
+PERLVARI(I, locale_mutex_depth, int, 0) /* Emulate general semaphore */
#endif
-PERLVARA(I, locale_utf8ness, 256, char)
#ifdef USE_LOCALE_CTYPE
- PERLVAR(I, warn_locale, SV *)
+PERLVAR(I, warn_locale, SV *)
+PERLVAR(I, in_utf8_CTYPE_locale, bool)
+PERLVAR(I, in_utf8_turkic_locale, bool)
#endif
PERLVARA(I, colors,6, char *) /* values from PERL_RE_COLORS env var */
@@ -407,6 +430,7 @@ thread's copy.
PERLVARI(I, peepp, peep_t, Perl_peep)
/*
+=for apidoc_section $optree_construction
=for apidoc Amn|peep_t|PL_rpeepp
Pointer to the recursive peephole optimiser. This is a function
@@ -435,6 +459,7 @@ thread's copy.
PERLVARI(I, rpeepp, peep_t, Perl_rpeep)
/*
+=for apidoc_section $optrees
=for apidoc Amn|Perl_ophook_t|PL_opfreehook
When non-C<NULL>, the function pointed by this variable will be called each time an OP is freed with the corresponding OP as the argument.
@@ -471,11 +496,14 @@ PERLVAR(I, origfilename, char *)
PERLVARI(I, xsubfilename, const char *, NULL)
PERLVAR(I, diehook, SV *)
PERLVAR(I, warnhook, SV *)
+/* keyword hooks*/
+PERLVARI(I, hook__require__before, SV *,NULL)
+PERLVARI(I, hook__require__after, SV *,NULL)
/* switches */
PERLVAR(I, patchlevel, SV *)
PERLVAR(I, localpatches, const char * const *)
-PERLVARI(I, splitstr, const char *, " ")
+PERLVARI(I, splitstr, char *, NULL)
PERLVAR(I, minus_c, bool)
PERLVAR(I, minus_n, bool)
@@ -686,7 +714,6 @@ PERLVARI(I, cop_seqmax, U32, PERL_COP_SEQMAX) /* statement sequence number */
PERLVARI(I, evalseq, U32, 0) /* eval sequence number */
PERLVAR(I, origalen, U32)
-PERLVAR(I, origenviron, char **)
#ifdef PERL_USES_PL_PIDSTATUS
PERLVAR(I, pidstatus, HV *) /* pid-to-status mappings for waitpid */
#endif
@@ -718,20 +745,33 @@ PERLVAR(I, constpadix, PADOFFSET) /* lowest unused for constants */
PERLVAR(I, padix_floor, PADOFFSET) /* how low may inner block reset padix */
-#if defined(USE_POSIX_2008_LOCALE) \
- && defined(USE_THREAD_SAFE_LOCALE) \
- && ! defined(HAS_QUERYLOCALE)
+#if defined(USE_POSIX_2008_LOCALE) && defined(MULTIPLICITY)
+PERLVARI(I, cur_locale_obj, locale_t, NULL)
+#endif
+#ifdef USE_PL_CURLOCALES
/* This is the most number of categories we've encountered so far on any
- * platform */
-PERLVARA(I, curlocales, 12, char *)
+ * platform, doesn't include LC_ALL */
+PERLVARA(I, curlocales, 12, const char *)
+
+#endif
+#ifdef USE_PL_CUR_LC_ALL
+
+PERLVARI(I, cur_LC_ALL, const char *, NULL)
#endif
#ifdef USE_LOCALE_COLLATE
+/* The emory needed to store the collxfrm transformation of a string with
+ * length 'x' is predicted by the linear equation mx+b; m=mult, b=base */
+PERLVARI(I, collxfrm_mult,Size_t, 0) /* Expansion factor in *xfrm();
+ 0 => unknown or bad, depending on
+ base */
+PERLVAR(I, collxfrm_base, Size_t) /* Basic overhead in *xfrm();
+ mult == 0, base == 0 => need to compute
+ mult == 0, base != 0 => ill-formed;
+ */
PERLVAR(I, collation_name, char *) /* Name of current collation */
-PERLVAR(I, collxfrm_base, Size_t) /* Basic overhead in *xfrm() */
-PERLVARI(I, collxfrm_mult,Size_t, 2) /* Expansion factor in *xfrm() */
PERLVARI(I, collation_ix, U32, 0) /* Collation generation index */
PERLVARI(I, strxfrm_NUL_replacement, U8, 0) /* Code point to replace NULs */
PERLVARI(I, strxfrm_is_behaved, bool, TRUE)
@@ -739,12 +779,15 @@ PERLVARI(I, strxfrm_is_behaved, bool, TRUE)
PERLVARI(I, strxfrm_max_cp, U8, 0) /* Highest collating cp in locale */
PERLVARI(I, collation_standard, bool, TRUE)
/* Assume simple collation */
+PERLVAR(I, in_utf8_COLLATE_locale, bool)
#endif /* USE_LOCALE_COLLATE */
-PERLVARI(I, langinfo_buf, char *, NULL)
+PERLVARI(I, langinfo_buf, const char *, NULL)
PERLVARI(I, langinfo_bufsize, Size_t, 0)
-PERLVARI(I, setlocale_buf, char *, NULL)
+PERLVARI(I, setlocale_buf, const char *, NULL)
PERLVARI(I, setlocale_bufsize, Size_t, 0)
+PERLVARI(I, stdize_locale_buf, const char *, NULL)
+PERLVARI(I, stdize_locale_bufsize, Size_t, 0)
#ifdef PERL_SAWAMPERSAND
PERLVAR(I, sawampersand, U8) /* must save all match strings */
@@ -757,6 +800,8 @@ PERLVARI(I, phase, enum perl_phase, PERL_PHASE_CONSTRUCT)
PERLVARI(I, in_load_module, bool, FALSE) /* to prevent recursions in PerlIO_find_layer */
+PERLVARI(I, eval_begin_nest_depth, U32, 0)
+
PERLVAR(I, unsafe, bool)
PERLVAR(I, colorset, bool) /* PERL_RE_COLORS env var is in use */
@@ -792,25 +837,33 @@ PERLVARI(I, perl_destruct_level, signed char, 0)
PERLVAR(I, pad_reset_pending, bool) /* reset pad on next attempted alloc */
-PERLVAR(I, srand_called, bool)
-
-#ifdef USE_LOCALE_NUMERIC
+PERLVARI(I, srand_called, bool, false) /* has random_state been initialized yet? */
+PERLVARI(I, srand_override, U32, 0) /* Should we use a deterministic sequence? */
+PERLVARI(I, srand_override_next, U32, 0) /* Next item in the sequence */
PERLVARI(I, numeric_underlying, bool, TRUE)
/* Assume underlying locale numerics */
PERLVARI(I, numeric_underlying_is_standard, bool, TRUE)
-PERLVARI(I, numeric_standard, int, TRUE)
- /* Assume C locale numerics */
-PERLVAR(I, numeric_name, char *) /* Name of current numeric locale */
-PERLVAR(I, numeric_radix_sv, SV *) /* The radix separator if not '.' */
+PERLVARI(I, numeric_standard, int, TRUE) /* Assume C locale numerics */
+PERLVAR(I, numeric_name, char *) /* Name of current numeric locale */
+PERLVAR(I, numeric_radix_sv, SV *) /* The radix separator */
+PERLVAR(I, underlying_radix_sv, SV *) /* The radix in the program's current underlying locale */
-# ifdef HAS_POSIX_2008_LOCALE
+#if defined(USE_LOCALE_NUMERIC) && defined(USE_POSIX_2008_LOCALE)
PERLVARI(I, underlying_numeric_obj, locale_t, NULL)
+#endif
+#ifdef USE_POSIX_2008_LOCALE
+PERLVARI(I, scratch_locale_obj, locale_t, 0)
+#endif
+
+#ifdef USE_LOCALE_CTYPE
+
+PERLVARI(I, ctype_name, const char *, NULL) /* Name of current ctype locale */
+
# endif
-#endif /* !USE_LOCALE_NUMERIC */
/* Array of signal handlers, indexed by signal number, through which the C
signal handler dispatches. */
@@ -874,7 +927,12 @@ PERLVARI(I, clocktick, long, 0) /* this many times() ticks in a second */
PERLVARI(I, sharehook, share_proc_t, Perl_sv_nosharing)
PERLVARI(I, lockhook, share_proc_t, Perl_sv_nosharing)
+#if defined(__HP_cc) || defined(__HP_aCC)
+#pragma diag_suppress 3215
+#endif
GCC_DIAG_IGNORE(-Wdeprecated-declarations)
+MSVC_DIAG_IGNORE(4996)
+
#ifdef NO_MATHOMS
# define PERL_UNLOCK_HOOK Perl_sv_nosharing
#else
@@ -883,7 +941,11 @@ GCC_DIAG_IGNORE(-Wdeprecated-declarations)
#endif
PERLVARI(I, unlockhook, share_proc_t, PERL_UNLOCK_HOOK)
+MSVC_DIAG_RESTORE
GCC_DIAG_RESTORE
+#if defined(__HP_cc) || defined(__HP_aCC)
+#pragma diag_default 3215
+#endif
PERLVARI(I, threadhook, thrhook_proc_t, Perl_nothreadhook)
@@ -911,7 +973,7 @@ PERLVAR(I, Xpv, XPV *) /* (unused) held temporary value */
/* name of the scopes we've ENTERed. Only used with -DDEBUGGING, but needs to be
present always, as -DDEBUGGING must be binary compatible with non. */
-PERLVARI(I, scopestack_name, const char * *, NULL)
+PERLVARI(I, scopestack_name, const char **, NULL)
PERLVAR(I, debug_pad, struct perl_debug_pad) /* always needed because of the re extension */
@@ -926,12 +988,12 @@ PERLVARI(I, globhook, globhook_t, NULL)
# define PERL_LAST_5_18_0_INTERP_MEMBER Iglobhook
#endif
-#ifdef PERL_IMPLICIT_CONTEXT
+#ifdef MULTIPLICITY
PERLVARI(I, my_cxt_list, void **, NULL) /* per-module array of MY_CXT pointers */
PERLVARI(I, my_cxt_size, int, 0) /* size of PL_my_cxt_list */
#endif
-#if defined(PERL_IMPLICIT_CONTEXT) || defined(PERL_DEBUG_READONLY_COW)
+#if defined(MULTIPLICITY) || defined(PERL_DEBUG_READONLY_COW)
/* For use with the memory debugging code in util.c. This is used only in
* DEBUGGING builds (as long as the relevant structure is defined), but
* defining it in non-debug builds too means that we retain binary
@@ -952,12 +1014,11 @@ PERLVARI(I, sv_serial, U32, 0) /* SV serial number, used in sv.c */
PERLVARA(I, sv_consts, SV_CONSTS_COUNT, SV*) /* constant SVs with precomputed hash value */
#ifdef PERL_TRACE_OPS
-PERLVARA(I, op_exec_cnt, OP_max+2, UV) /* Counts of executed OPs of the given type.
+PERLVARA(I, op_exec_cnt, OP_max+2, UV) /* Counts of executed OPs of the given type.
If PERL_TRACE_OPS is enabled, we'll dump
a summary count of all ops executed in the
- program at perl_destruct time. For
- profiling/debugging only. Works only if
- DEBUGGING is enabled, too. */
+ program at perl_destruct time. Used only
+ for profiling in DEBUGGING mode. */
#endif
PERLVAR(I, random_state, PL_RANDOM_STATE_TYPE)
@@ -985,6 +1046,8 @@ PERLVAR(I, SB_invlist, SV *)
PERLVAR(I, SCX_invlist, SV *)
PERLVAR(I, UpperLatin1, SV *) /* Code points 128 - 255 */
+PERLVARA(I, fold_locale, 256, U8)
+
/* List of characters that participate in any fold defined by Unicode */
PERLVAR(I, in_some_fold, SV *)
@@ -1026,9 +1089,16 @@ PERLVAR(I, wcrtomb_ps, mbstate_t)
/* Enough space for the reserved byte, 1 for a potential leading 0, then enough
* for the longest representable integer plus an extra, the 3 flag characters,
* and NUL */
-PERLVARA(I, mem_log, 1 + 1 + TYPE_DIGITS(UV) + 1 + 3 + 1, char);
+#define PERL_MEM_LOG_ARYLEN (1 + 1 + TYPE_DIGITS(UV) + 1 + 3 + 1)
+PERLVARA(I, mem_log, PERL_MEM_LOG_ARYLEN, char)
#endif
+/* The most recently seen `use VERSION` declaration, encoded in a single
+ * U16 as (major << 8) | minor. We do this rather than store an entire SV
+ * version object so we can fit the U16 into the uv of a SAVEHINTS and not
+ * have to worry about SV refcounts during scope enter/exit. */
+PERLVAR(I, prevailing_version, U16)
+
/* If you are adding a U8 or U16, check to see if there are 'Space' comments
* above on where there are gaps which currently will be structure padding. */
diff --git a/Master/tlpkg/tlperl/lib/CORE/invlist_inline.h b/Master/tlpkg/tlperl/lib/CORE/invlist_inline.h
index 0f24f3d5036..8b28c218852 100644
--- a/Master/tlpkg/tlperl/lib/CORE/invlist_inline.h
+++ b/Master/tlpkg/tlperl/lib/CORE/invlist_inline.h
@@ -10,7 +10,7 @@
#define PERL_INVLIST_INLINE_H_
#if defined(PERL_IN_UTF8_C) \
- || defined(PERL_IN_REGCOMP_C) \
+ || defined(PERL_IN_REGCOMP_ANY) \
|| defined(PERL_IN_REGEXEC_C) \
|| defined(PERL_IN_TOKE_C) \
|| defined(PERL_IN_PP_C) \
@@ -27,7 +27,7 @@
#define FROM_INTERNAL_SIZE(x) ((x)/ sizeof(UV))
PERL_STATIC_INLINE bool
-S_is_invlist(SV* const invlist)
+S_is_invlist(const SV* const invlist)
{
return invlist != NULL && SvTYPE(invlist) == SVt_INVLIST;
}
@@ -93,7 +93,7 @@ S_invlist_array(SV* const invlist)
}
#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C)
+#if defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_OP_C) || defined(PERL_IN_DOOP_C)
PERL_STATIC_INLINE void
S_invlist_extend(pTHX_ SV* const invlist, const UV new_max)
@@ -161,8 +161,45 @@ S_invlist_highest(SV* const invlist)
: array[len - 1] - 1;
}
+# if defined(PERL_IN_REGCOMP_ANY)
+
+PERL_STATIC_INLINE UV
+S_invlist_highest_range_start(SV* const invlist)
+{
+ /* Returns the lowest code point of the highest range in the inversion
+ * list parameter. This API has an ambiguity: it returns 0 either when
+ * the lowest such point is actually 0 or when the list is empty. If this
+ * distinction matters to you, check for emptiness before calling this
+ * function. */
+
+ UV len = _invlist_len(invlist);
+ UV *array;
+
+ PERL_ARGS_ASSERT_INVLIST_HIGHEST_RANGE_START;
+
+ if (len == 0) {
+ return 0;
+ }
+
+ array = invlist_array(invlist);
+
+ /* The last element in the array in the inversion list always starts a
+ * range that goes to infinity. That range may be for code points that are
+ * matched in the inversion list, or it may be for ones that aren't
+ * matched. In the first case, the lowest code point in the matching range
+ * is that the one that started the range. If the other case, the final
+ * matching range begins at the next element down (which may be 0 in the
+ * edge case). */
+ return (ELEMENT_RANGE_MATCHES_INVLIST(len - 1))
+ ? array[len - 1]
+ : len == 1
+ ? 0
+ : array[len - 2];
+}
+
+# endif
#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C)
+#if defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_OP_C)
PERL_STATIC_INLINE STRLEN*
S_get_invlist_iter_addr(SV* invlist)
@@ -238,11 +275,101 @@ S_invlist_iternext(SV* invlist, UV* start, UV* end)
#endif
-#ifndef PERL_IN_REGCOMP_C
+#ifndef PERL_IN_REGCOMP_ANY
/* These symbols are only needed later in regcomp.c */
# undef TO_INTERNAL_SIZE
# undef FROM_INTERNAL_SIZE
#endif
+#ifdef PERL_IN_REGCOMP_ANY
+PERL_STATIC_INLINE
+bool
+S_invlist_is_iterating(const SV* const invlist)
+{
+ PERL_ARGS_ASSERT_INVLIST_IS_ITERATING;
+
+ /* get_invlist_iter_addr()'s sv is non-const only because it returns a
+ * value that can be used to modify the invlist, it doesn't modify the
+ * invlist itself */
+ return *(get_invlist_iter_addr((SV*)invlist)) < (STRLEN) UV_MAX;
+}
+
+PERL_STATIC_INLINE
+SV *
+S_invlist_contents(pTHX_ SV* const invlist, const bool traditional_style)
+{
+ /* Get the contents of an inversion list into a string SV so that they can
+ * be printed out. If 'traditional_style' is TRUE, it uses the format
+ * traditionally done for debug tracing; otherwise it uses a format
+ * suitable for just copying to the output, with blanks between ranges and
+ * a dash between range components */
+
+ UV start, end;
+ SV* output;
+ const char intra_range_delimiter = (traditional_style ? '\t' : '-');
+ const char inter_range_delimiter = (traditional_style ? '\n' : ' ');
+
+ if (traditional_style) {
+ output = newSVpvs("\n");
+ }
+ else {
+ output = newSVpvs("");
+ }
+
+ PERL_ARGS_ASSERT_INVLIST_CONTENTS;
+
+ assert(! invlist_is_iterating(invlist));
+
+ invlist_iterinit(invlist);
+ while (invlist_iternext(invlist, &start, &end)) {
+ if (end == UV_MAX) {
+ Perl_sv_catpvf(aTHX_ output, "%04" UVXf "%cINFTY%c",
+ start, intra_range_delimiter,
+ inter_range_delimiter);
+ }
+ else if (end != start) {
+ Perl_sv_catpvf(aTHX_ output, "%04" UVXf "%c%04" UVXf "%c",
+ start,
+ intra_range_delimiter,
+ end, inter_range_delimiter);
+ }
+ else {
+ Perl_sv_catpvf(aTHX_ output, "%04" UVXf "%c",
+ start, inter_range_delimiter);
+ }
+ }
+
+ if (SvCUR(output) && ! traditional_style) {/* Get rid of trailing blank */
+ SvCUR_set(output, SvCUR(output) - 1);
+ }
+
+ return output;
+}
+
+PERL_STATIC_INLINE
+UV
+S_invlist_lowest(SV* const invlist)
+{
+ /* Returns the lowest code point that matches an inversion list. This API
+ * has an ambiguity, as it returns 0 under either the lowest is actually
+ * 0, or if the list is empty. If this distinction matters to you, check
+ * for emptiness before calling this function */
+
+ UV len = _invlist_len(invlist);
+ UV *array;
+
+ PERL_ARGS_ASSERT_INVLIST_LOWEST;
+
+ if (len == 0) {
+ return 0;
+ }
+
+ array = invlist_array(invlist);
+
+ return array[0];
+}
+
+#endif
+
#endif /* PERL_INVLIST_INLINE_H_ */
diff --git a/Master/tlpkg/tlperl/lib/CORE/iperlsys.h b/Master/tlpkg/tlperl/lib/CORE/iperlsys.h
index 5ef7f23542d..40ff8a31039 100644
--- a/Master/tlpkg/tlperl/lib/CORE/iperlsys.h
+++ b/Master/tlpkg/tlperl/lib/CORE/iperlsys.h
@@ -13,7 +13,7 @@
#define __Inc__IPerl___
/*
- * PerlXXX_YYY explained - DickH and DougL @ ActiveState.com
+ * PerlXXX_YYY explained - DickH and DougL @ ActiveState.com
*
* XXX := functional group
* YYY := stdlib/OS function name
@@ -49,6 +49,7 @@
*/
#include "perlio.h"
+
typedef Signal_t (*Sighandler1_t) (int);
typedef Signal_t (*Sighandler3_t) (int, Siginfo_t*, void*);
@@ -62,304 +63,300 @@ typedef Sighandler1_t Sighandler_t;
#if defined(PERL_IMPLICIT_SYS)
-/* IPerlStdIO */
+/* IPerlStdIO */
struct IPerlStdIO;
struct IPerlStdIOInfo;
typedef FILE* (*LPStdin)(struct IPerlStdIO*);
-typedef FILE* (*LPStdout)(struct IPerlStdIO*);
-typedef FILE* (*LPStderr)(struct IPerlStdIO*);
-typedef FILE* (*LPOpen)(struct IPerlStdIO*, const char*,
+typedef FILE* (*LPStdout)(struct IPerlStdIO*);
+typedef FILE* (*LPStderr)(struct IPerlStdIO*);
+typedef FILE* (*LPOpen)(struct IPerlStdIO*, const char*,
const char*);
-typedef int (*LPClose)(struct IPerlStdIO*, FILE*);
-typedef int (*LPEof)(struct IPerlStdIO*, FILE*);
-typedef int (*LPError)(struct IPerlStdIO*, FILE*);
-typedef void (*LPClearerr)(struct IPerlStdIO*, FILE*);
-typedef int (*LPGetc)(struct IPerlStdIO*, FILE*);
-typedef STDCHAR* (*LPGetBase)(struct IPerlStdIO*, FILE*);
-typedef int (*LPGetBufsiz)(struct IPerlStdIO*, FILE*);
-typedef int (*LPGetCnt)(struct IPerlStdIO*, FILE*);
-typedef STDCHAR* (*LPGetPtr)(struct IPerlStdIO*, FILE*);
-typedef char* (*LPGets)(struct IPerlStdIO*, char*, int, FILE*);
-typedef int (*LPPutc)(struct IPerlStdIO*, int, FILE*);
-typedef int (*LPPuts)(struct IPerlStdIO*, const char *, FILE*);
-typedef int (*LPFlush)(struct IPerlStdIO*, FILE*);
-typedef int (*LPUngetc)(struct IPerlStdIO*, int,FILE*);
-typedef int (*LPFileno)(struct IPerlStdIO*, FILE*);
-typedef FILE* (*LPFdopen)(struct IPerlStdIO*, int, const char*);
-typedef FILE* (*LPReopen)(struct IPerlStdIO*, const char*,
+typedef int (*LPClose)(struct IPerlStdIO*, FILE*);
+typedef int (*LPEof)(struct IPerlStdIO*, FILE*);
+typedef int (*LPError)(struct IPerlStdIO*, FILE*);
+typedef void (*LPClearerr)(struct IPerlStdIO*, FILE*);
+typedef int (*LPGetc)(struct IPerlStdIO*, FILE*);
+typedef STDCHAR* (*LPGetBase)(struct IPerlStdIO*, FILE*);
+typedef int (*LPGetBufsiz)(struct IPerlStdIO*, FILE*);
+typedef int (*LPGetCnt)(struct IPerlStdIO*, FILE*);
+typedef STDCHAR* (*LPGetPtr)(struct IPerlStdIO*, FILE*);
+typedef char* (*LPGets)(struct IPerlStdIO*, char*, int, FILE*);
+typedef int (*LPPutc)(struct IPerlStdIO*, int, FILE*);
+typedef int (*LPPuts)(struct IPerlStdIO*, const char *, FILE*);
+typedef int (*LPFlush)(struct IPerlStdIO*, FILE*);
+typedef int (*LPUngetc)(struct IPerlStdIO*, int,FILE*);
+typedef int (*LPFileno)(struct IPerlStdIO*, FILE*);
+typedef FILE* (*LPFdopen)(struct IPerlStdIO*, int, const char*);
+typedef FILE* (*LPReopen)(struct IPerlStdIO*, const char*,
const char*, FILE*);
-typedef SSize_t (*LPRead)(struct IPerlStdIO*, void*, Size_t, Size_t, FILE *);
-typedef SSize_t (*LPWrite)(struct IPerlStdIO*, const void*, Size_t, Size_t, FILE *);
-typedef void (*LPSetBuf)(struct IPerlStdIO*, FILE*, char*);
-typedef int (*LPSetVBuf)(struct IPerlStdIO*, FILE*, char*, int,
+typedef SSize_t (*LPRead)(struct IPerlStdIO*, void*, Size_t, Size_t, FILE *);
+typedef SSize_t (*LPWrite)(struct IPerlStdIO*, const void*, Size_t, Size_t, FILE *);
+typedef void (*LPSetBuf)(struct IPerlStdIO*, FILE*, char*);
+typedef int (*LPSetVBuf)(struct IPerlStdIO*, FILE*, char*, int,
Size_t);
-typedef void (*LPSetCnt)(struct IPerlStdIO*, FILE*, int);
+typedef void (*LPSetCnt)(struct IPerlStdIO*, FILE*, int);
-#ifndef NETWARE
-typedef void (*LPSetPtr)(struct IPerlStdIO*, FILE*, STDCHAR*);
-#elif defined(NETWARE)
-typedef void (*LPSetPtr)(struct IPerlStdIO*, FILE*, STDCHAR*, int);
-#endif
+typedef void (*LPSetPtr)(struct IPerlStdIO*, FILE*, STDCHAR*);
-typedef void (*LPSetlinebuf)(struct IPerlStdIO*, FILE*);
-typedef int (*LPPrintf)(struct IPerlStdIO*, FILE*, const char*,
+typedef void (*LPSetlinebuf)(struct IPerlStdIO*, FILE*);
+typedef int (*LPPrintf)(struct IPerlStdIO*, FILE*, const char*,
...);
-typedef int (*LPVprintf)(struct IPerlStdIO*, FILE*, const char*,
+typedef int (*LPVprintf)(struct IPerlStdIO*, FILE*, const char*,
va_list);
-typedef Off_t (*LPTell)(struct IPerlStdIO*, FILE*);
-typedef int (*LPSeek)(struct IPerlStdIO*, FILE*, Off_t, int);
-typedef void (*LPRewind)(struct IPerlStdIO*, FILE*);
-typedef FILE* (*LPTmpfile)(struct IPerlStdIO*);
-typedef int (*LPGetpos)(struct IPerlStdIO*, FILE*, Fpos_t*);
-typedef int (*LPSetpos)(struct IPerlStdIO*, FILE*,
+typedef Off_t (*LPTell)(struct IPerlStdIO*, FILE*);
+typedef int (*LPSeek)(struct IPerlStdIO*, FILE*, Off_t, int);
+typedef void (*LPRewind)(struct IPerlStdIO*, FILE*);
+typedef FILE* (*LPTmpfile)(struct IPerlStdIO*);
+typedef int (*LPGetpos)(struct IPerlStdIO*, FILE*, Fpos_t*);
+typedef int (*LPSetpos)(struct IPerlStdIO*, FILE*,
const Fpos_t*);
-typedef void (*LPInit)(struct IPerlStdIO*);
-typedef void (*LPInitOSExtras)(struct IPerlStdIO*);
-typedef FILE* (*LPFdupopen)(struct IPerlStdIO*, FILE*);
+typedef void (*LPInit)(struct IPerlStdIO*);
+typedef void (*LPInitOSExtras)(struct IPerlStdIO*);
+typedef FILE* (*LPFdupopen)(struct IPerlStdIO*, FILE*);
struct IPerlStdIO
{
- LPStdin pStdin;
- LPStdout pStdout;
- LPStderr pStderr;
- LPOpen pOpen;
- LPClose pClose;
- LPEof pEof;
- LPError pError;
- LPClearerr pClearerr;
- LPGetc pGetc;
- LPGetBase pGetBase;
- LPGetBufsiz pGetBufsiz;
- LPGetCnt pGetCnt;
- LPGetPtr pGetPtr;
- LPGets pGets;
- LPPutc pPutc;
- LPPuts pPuts;
- LPFlush pFlush;
- LPUngetc pUngetc;
- LPFileno pFileno;
- LPFdopen pFdopen;
- LPReopen pReopen;
- LPRead pRead;
- LPWrite pWrite;
- LPSetBuf pSetBuf;
- LPSetVBuf pSetVBuf;
- LPSetCnt pSetCnt;
- LPSetPtr pSetPtr;
- LPSetlinebuf pSetlinebuf;
- LPPrintf pPrintf;
- LPVprintf pVprintf;
- LPTell pTell;
- LPSeek pSeek;
- LPRewind pRewind;
- LPTmpfile pTmpfile;
- LPGetpos pGetpos;
- LPSetpos pSetpos;
- LPInit pInit;
- LPInitOSExtras pInitOSExtras;
- LPFdupopen pFdupopen;
+ LPStdin pStdin;
+ LPStdout pStdout;
+ LPStderr pStderr;
+ LPOpen pOpen;
+ LPClose pClose;
+ LPEof pEof;
+ LPError pError;
+ LPClearerr pClearerr;
+ LPGetc pGetc;
+ LPGetBase pGetBase;
+ LPGetBufsiz pGetBufsiz;
+ LPGetCnt pGetCnt;
+ LPGetPtr pGetPtr;
+ LPGets pGets;
+ LPPutc pPutc;
+ LPPuts pPuts;
+ LPFlush pFlush;
+ LPUngetc pUngetc;
+ LPFileno pFileno;
+ LPFdopen pFdopen;
+ LPReopen pReopen;
+ LPRead pRead;
+ LPWrite pWrite;
+ LPSetBuf pSetBuf;
+ LPSetVBuf pSetVBuf;
+ LPSetCnt pSetCnt;
+ LPSetPtr pSetPtr;
+ LPSetlinebuf pSetlinebuf;
+ LPPrintf pPrintf;
+ LPVprintf pVprintf;
+ LPTell pTell;
+ LPSeek pSeek;
+ LPRewind pRewind;
+ LPTmpfile pTmpfile;
+ LPGetpos pGetpos;
+ LPSetpos pSetpos;
+ LPInit pInit;
+ LPInitOSExtras pInitOSExtras;
+ LPFdupopen pFdupopen;
};
struct IPerlStdIOInfo
{
- unsigned long nCount; /* number of entries expected */
- struct IPerlStdIO perlStdIOList;
+ unsigned long nCount; /* number of entries expected */
+ struct IPerlStdIO perlStdIOList;
};
/* These do not belong here ... NI-S, 14 Nov 2000 */
-#ifdef USE_STDIO_PTR
-# define PerlSIO_has_cntptr(f) 1
-# ifdef STDIO_PTR_LVALUE
-# ifdef STDIO_CNT_LVALUE
-# define PerlSIO_canset_cnt(f) 1
-# ifdef STDIO_PTR_LVAL_NOCHANGE_CNT
-# define PerlSIO_fast_gets(f) 1
+# ifdef USE_STDIO_PTR
+# define PerlSIO_has_cntptr(f) 1
+# ifdef STDIO_PTR_LVALUE
+# ifdef STDIO_CNT_LVALUE
+# define PerlSIO_canset_cnt(f) 1
+# ifdef STDIO_PTR_LVAL_NOCHANGE_CNT
+# define PerlSIO_fast_gets(f) 1
+# endif
+# else /* STDIO_CNT_LVALUE */
+# define PerlSIO_canset_cnt(f) 0
+# endif
+# else /* STDIO_PTR_LVALUE */
+# ifdef STDIO_PTR_LVAL_SETS_CNT
+# define PerlSIO_fast_gets(f) 1
# endif
-# else /* STDIO_CNT_LVALUE */
-# define PerlSIO_canset_cnt(f) 0
-# endif
-# else /* STDIO_PTR_LVALUE */
-# ifdef STDIO_PTR_LVAL_SETS_CNT
-# define PerlSIO_fast_gets(f) 1
# endif
-# endif
-#else /* USE_STDIO_PTR */
-# define PerlSIO_has_cntptr(f) 0
-# define PerlSIO_canset_cnt(f) 0
-#endif /* USE_STDIO_PTR */
+# else /* USE_STDIO_PTR */
+# define PerlSIO_has_cntptr(f) 0
+# define PerlSIO_canset_cnt(f) 0
+# endif /* USE_STDIO_PTR */
-#ifndef PerlSIO_fast_gets
-#define PerlSIO_fast_gets(f) 0
-#endif
+# ifndef PerlSIO_fast_gets
+# define PerlSIO_fast_gets(f) 0
+# endif
-#ifdef FILE_base
-#define PerlSIO_has_base(f) 1
-#else
-#define PerlSIO_has_base(f) 0
-#endif
+# ifdef FILE_base
+# define PerlSIO_has_base(f) 1
+# else
+# define PerlSIO_has_base(f) 0
+# endif
/* Now take FILE * via function table */
-#define PerlSIO_stdin \
+# define PerlSIO_stdin \
(*PL_StdIO->pStdin)(PL_StdIO)
-#define PerlSIO_stdout \
+# define PerlSIO_stdout \
(*PL_StdIO->pStdout)(PL_StdIO)
-#define PerlSIO_stderr \
+# define PerlSIO_stderr \
(*PL_StdIO->pStderr)(PL_StdIO)
-#define PerlSIO_fopen(x,y) \
+# define PerlSIO_fopen(x,y) \
(*PL_StdIO->pOpen)(PL_StdIO, (x),(y))
-#define PerlSIO_fclose(f) \
+# define PerlSIO_fclose(f) \
(*PL_StdIO->pClose)(PL_StdIO, (f))
-#define PerlSIO_feof(f) \
+# define PerlSIO_feof(f) \
(*PL_StdIO->pEof)(PL_StdIO, (f))
-#define PerlSIO_ferror(f) \
+# define PerlSIO_ferror(f) \
(*PL_StdIO->pError)(PL_StdIO, (f))
-#define PerlSIO_clearerr(f) \
+# define PerlSIO_clearerr(f) \
(*PL_StdIO->pClearerr)(PL_StdIO, (f))
-#define PerlSIO_fgetc(f) \
+# define PerlSIO_fgetc(f) \
(*PL_StdIO->pGetc)(PL_StdIO, (f))
-#define PerlSIO_get_base(f) \
+# define PerlSIO_get_base(f) \
(*PL_StdIO->pGetBase)(PL_StdIO, (f))
-#define PerlSIO_get_bufsiz(f) \
+# define PerlSIO_get_bufsiz(f) \
(*PL_StdIO->pGetBufsiz)(PL_StdIO, (f))
-#define PerlSIO_get_cnt(f) \
+# define PerlSIO_get_cnt(f) \
(*PL_StdIO->pGetCnt)(PL_StdIO, (f))
-#define PerlSIO_get_ptr(f) \
+# define PerlSIO_get_ptr(f) \
(*PL_StdIO->pGetPtr)(PL_StdIO, (f))
-#define PerlSIO_fputc(c,f) \
+# define PerlSIO_fputc(c,f) \
(*PL_StdIO->pPutc)(PL_StdIO, (c),(f))
-#define PerlSIO_fputs(s,f) \
+# define PerlSIO_fputs(s,f) \
(*PL_StdIO->pPuts)(PL_StdIO, (s),(f))
-#define PerlSIO_fflush(f) \
+# define PerlSIO_fflush(f) \
(*PL_StdIO->pFlush)(PL_StdIO, (f))
-#define PerlSIO_fgets(s, n, f) \
+# define PerlSIO_fgets(s, n, f) \
(*PL_StdIO->pGets)(PL_StdIO, s, n, (f))
-#define PerlSIO_ungetc(c,f) \
+# define PerlSIO_ungetc(c,f) \
(*PL_StdIO->pUngetc)(PL_StdIO, (c),(f))
-#define PerlSIO_fileno(f) \
+# define PerlSIO_fileno(f) \
(*PL_StdIO->pFileno)(PL_StdIO, (f))
-#define PerlSIO_fdopen(f, s) \
+# define PerlSIO_fdopen(f, s) \
(*PL_StdIO->pFdopen)(PL_StdIO, (f),(s))
-#define PerlSIO_freopen(p, m, f) \
+# define PerlSIO_freopen(p, m, f) \
(*PL_StdIO->pReopen)(PL_StdIO, (p), (m), (f))
-#define PerlSIO_fread(buf,sz,count,f) \
+# define PerlSIO_fread(buf,sz,count,f) \
(*PL_StdIO->pRead)(PL_StdIO, (buf), (sz), (count), (f))
-#define PerlSIO_fwrite(buf,sz,count,f) \
+# define PerlSIO_fwrite(buf,sz,count,f) \
(*PL_StdIO->pWrite)(PL_StdIO, (buf), (sz), (count), (f))
-#define PerlSIO_setbuf(f,b) \
+# define PerlSIO_setbuf(f,b) \
(*PL_StdIO->pSetBuf)(PL_StdIO, (f), (b))
-#define PerlSIO_setvbuf(f,b,t,s) \
+# define PerlSIO_setvbuf(f,b,t,s) \
(*PL_StdIO->pSetVBuf)(PL_StdIO, (f),(b),(t),(s))
-#define PerlSIO_set_cnt(f,c) \
+# define PerlSIO_set_cnt(f,c) \
(*PL_StdIO->pSetCnt)(PL_StdIO, (f), (c))
-#define PerlSIO_set_ptr(f,p) \
+# define PerlSIO_set_ptr(f,p) \
(*PL_StdIO->pSetPtr)(PL_StdIO, (f), (p))
-#define PerlSIO_setlinebuf(f) \
+# define PerlSIO_setlinebuf(f) \
(*PL_StdIO->pSetlinebuf)(PL_StdIO, (f))
-#define PerlSIO_printf Perl_fprintf_nocontext
-#define PerlSIO_stdoutf Perl_printf_nocontext
-#define PerlSIO_vprintf(f,fmt,a) \
+# define PerlSIO_printf Perl_fprintf_nocontext
+# define PerlSIO_stdoutf Perl_printf_nocontext
+# define PerlSIO_vprintf(f,fmt,a) \
(*PL_StdIO->pVprintf)(PL_StdIO, (f),(fmt),a)
-#define PerlSIO_ftell(f) \
+# define PerlSIO_ftell(f) \
(*PL_StdIO->pTell)(PL_StdIO, (f))
-#define PerlSIO_fseek(f,o,w) \
+# define PerlSIO_fseek(f,o,w) \
(*PL_StdIO->pSeek)(PL_StdIO, (f),(o),(w))
-#define PerlSIO_fgetpos(f,p) \
+# define PerlSIO_fgetpos(f,p) \
(*PL_StdIO->pGetpos)(PL_StdIO, (f),(p))
-#define PerlSIO_fsetpos(f,p) \
+# define PerlSIO_fsetpos(f,p) \
(*PL_StdIO->pSetpos)(PL_StdIO, (f),(p))
-#define PerlSIO_rewind(f) \
+# define PerlSIO_rewind(f) \
(*PL_StdIO->pRewind)(PL_StdIO, (f))
-#define PerlSIO_tmpfile() \
+# define PerlSIO_tmpfile() \
(*PL_StdIO->pTmpfile)(PL_StdIO)
-#define PerlSIO_init() \
+# define PerlSIO_init() \
(*PL_StdIO->pInit)(PL_StdIO)
-#undef init_os_extras
-#define init_os_extras() \
+# undef init_os_extras
+# define init_os_extras() \
(*PL_StdIO->pInitOSExtras)(PL_StdIO)
-#define PerlSIO_fdupopen(f) \
+# define PerlSIO_fdupopen(f) \
(*PL_StdIO->pFdupopen)(PL_StdIO, (f))
-#else /* PERL_IMPLICIT_SYS */
-
-#define PerlSIO_stdin stdin
-#define PerlSIO_stdout stdout
-#define PerlSIO_stderr stderr
-#define PerlSIO_fopen(x,y) fopen(x,y)
-#ifdef __VOS__
-/* Work around VOS bug posix-979, wrongly setting errno when at end of file. */
-#define PerlSIO_fclose(f) (((errno==1025)?errno=0:0),fclose(f))
-#define PerlSIO_feof(f) (((errno==1025)?errno=0:0),feof(f))
-#define PerlSIO_ferror(f) (((errno==1025)?errno=0:0),ferror(f))
-#else
-#define PerlSIO_fclose(f) fclose(f)
-#define PerlSIO_feof(f) feof(f)
-#define PerlSIO_ferror(f) ferror(f)
-#endif
-#define PerlSIO_clearerr(f) clearerr(f)
-#define PerlSIO_fgetc(f) fgetc(f)
-#ifdef FILE_base
-#define PerlSIO_get_base(f) FILE_base(f)
-#define PerlSIO_get_bufsiz(f) FILE_bufsiz(f)
-#else
-#define PerlSIO_get_base(f) NULL
-#define PerlSIO_get_bufsiz(f) 0
-#endif
-#ifdef USE_STDIO_PTR
-#define PerlSIO_get_cnt(f) FILE_cnt(f)
-#define PerlSIO_get_ptr(f) FILE_ptr(f)
-#else
-#define PerlSIO_get_cnt(f) 0
-#define PerlSIO_get_ptr(f) NULL
-#endif
-#define PerlSIO_fputc(c,f) fputc(c,f)
-#define PerlSIO_fputs(s,f) fputs(s,f)
-#define PerlSIO_fflush(f) Fflush(f)
-#define PerlSIO_fgets(s, n, f) fgets(s,n,f)
-#if defined(__VMS)
+#else /* ! PERL_IMPLICIT_SYS */
+
+# define PerlSIO_stdin stdin
+# define PerlSIO_stdout stdout
+# define PerlSIO_stderr stderr
+# define PerlSIO_fopen(x,y) fopen(x,y)
+# ifdef __VOS__
+ /* Work around VOS bug posix-979, wrongly setting errno when at end of file. */
+# define PerlSIO_fclose(f) (((errno==1025)?errno=0:0),fclose(f))
+# define PerlSIO_feof(f) (((errno==1025)?errno=0:0),feof(f))
+# define PerlSIO_ferror(f) (((errno==1025)?errno=0:0),ferror(f))
+# else
+# define PerlSIO_fclose(f) fclose(f)
+# define PerlSIO_feof(f) feof(f)
+# define PerlSIO_ferror(f) ferror(f)
+# endif
+# define PerlSIO_clearerr(f) clearerr(f)
+# define PerlSIO_fgetc(f) fgetc(f)
+# ifdef FILE_base
+# define PerlSIO_get_base(f) FILE_base(f)
+# define PerlSIO_get_bufsiz(f) FILE_bufsiz(f)
+# else
+# define PerlSIO_get_base(f) NULL
+# define PerlSIO_get_bufsiz(f) 0
+# endif
+# ifdef USE_STDIO_PTR
+# define PerlSIO_get_cnt(f) FILE_cnt(f)
+# define PerlSIO_get_ptr(f) FILE_ptr(f)
+# else
+# define PerlSIO_get_cnt(f) 0
+# define PerlSIO_get_ptr(f) NULL
+# endif
+# define PerlSIO_fputc(c,f) fputc(c,f)
+# define PerlSIO_fputs(s,f) fputs(s,f)
+# define PerlSIO_fflush(f) Fflush(f)
+# define PerlSIO_fgets(s, n, f) fgets(s,n,f)
+# if defined(__VMS)
/* Unusual definition of ungetc() here to accommodate fast_sv_gets()'
* belief that it can mix getc/ungetc with reads from stdio buffer */
START_EXTERN_C
int decc$ungetc(int __c, FILE *__stream);
END_EXTERN_C
-# define PerlSIO_ungetc(c,f) ((c) == EOF ? EOF : \
- ((*(f) && !((*(f))->_flag & _IONBF) && \
- ((*(f))->_ptr > (*(f))->_base)) ? \
+# define PerlSIO_ungetc(c,f) ((c) == EOF ? EOF : \
+ ((*(f) && !((*(f))->_flag & _IONBF) && \
+ ((*(f))->_ptr > (*(f))->_base)) ? \
((*(f))->_cnt++, *(--(*(f))->_ptr) = (c)) : decc$ungetc(c,f)))
-#else
-# define PerlSIO_ungetc(c,f) ungetc(c,f)
-#endif
-#define PerlSIO_fileno(f) fileno(f)
-#define PerlSIO_fdopen(f, s) fdopen(f,s)
-#define PerlSIO_freopen(p, m, f) freopen(p,m,f)
-#define PerlSIO_fread(buf,sz,count,f) fread(buf,sz,count,f)
-#define PerlSIO_fwrite(buf,sz,count,f) fwrite(buf,sz,count,f)
-#define PerlSIO_setbuf(f,b) setbuf(f,b)
-#define PerlSIO_setvbuf(f,b,t,s) setvbuf(f,b,t,s)
-#if defined(USE_STDIO_PTR) && defined(STDIO_CNT_LVALUE)
-#define PerlSIO_set_cnt(f,c) FILE_cnt(f) = (c)
-#else
-#define PerlSIO_set_cnt(f,c) PerlIOProc_abort()
-#endif
-#if defined(USE_STDIO_PTR) && defined(STDIO_PTR_LVALUE)
-#define PerlSIO_set_ptr(f,p) (FILE_ptr(f) = (p))
-#else
-#define PerlSIO_set_ptr(f,p) PerlIOProc_abort()
-#endif
-#define PerlSIO_setlinebuf(f) setlinebuf(f)
-#define PerlSIO_printf fprintf
-#define PerlSIO_stdoutf printf
-#define PerlSIO_vprintf(f,fmt,a) vfprintf(f,fmt,a)
-#define PerlSIO_ftell(f) ftell(f)
-#define PerlSIO_fseek(f,o,w) fseek(f,o,w)
-#define PerlSIO_fgetpos(f,p) fgetpos(f,p)
-#define PerlSIO_fsetpos(f,p) fsetpos(f,p)
-#define PerlSIO_rewind(f) rewind(f)
-#define PerlSIO_tmpfile() tmpfile()
-#define PerlSIO_fdupopen(f) (f)
-
-#endif /* PERL_IMPLICIT_SYS */
+# else
+# define PerlSIO_ungetc(c,f) ungetc(c,f)
+# endif
+# define PerlSIO_fileno(f) fileno(f)
+# define PerlSIO_fdopen(f, s) fdopen(f,s)
+# define PerlSIO_freopen(p, m, f) freopen(p,m,f)
+# define PerlSIO_fread(buf,sz,count,f) fread(buf,sz,count,f)
+# define PerlSIO_fwrite(buf,sz,count,f) fwrite(buf,sz,count,f)
+# define PerlSIO_setbuf(f,b) setbuf(f,b)
+# define PerlSIO_setvbuf(f,b,t,s) setvbuf(f,b,t,s)
+# if defined(USE_STDIO_PTR) && defined(STDIO_CNT_LVALUE)
+# define PerlSIO_set_cnt(f,c) FILE_cnt(f) = (c)
+# else
+# define PerlSIO_set_cnt(f,c) PerlIOProc_abort()
+# endif
+# if defined(USE_STDIO_PTR) && defined(STDIO_PTR_LVALUE)
+# define PerlSIO_set_ptr(f,p) (FILE_ptr(f) = (p))
+# else
+# define PerlSIO_set_ptr(f,p) PerlIOProc_abort()
+# endif
+# define PerlSIO_setlinebuf(f) setlinebuf(f)
+# define PerlSIO_printf fprintf
+# define PerlSIO_stdoutf printf
+# define PerlSIO_vprintf(f,fmt,a) vfprintf(f,fmt,a)
+# define PerlSIO_ftell(f) ftell(f)
+# define PerlSIO_fseek(f,o,w) fseek(f,o,w)
+# define PerlSIO_fgetpos(f,p) fgetpos(f,p)
+# define PerlSIO_fsetpos(f,p) fsetpos(f,p)
+# define PerlSIO_rewind(f) rewind(f)
+# define PerlSIO_tmpfile() tmpfile()
+# define PerlSIO_fdupopen(f) (f)
+
+#endif /* PERL_IMPLICIT_SYS */
/*
* Interface for directory functions
@@ -367,92 +364,92 @@ END_EXTERN_C
#if defined(PERL_IMPLICIT_SYS)
-/* IPerlDir */
+/* IPerlDir */
struct IPerlDir;
struct IPerlDirInfo;
-typedef int (*LPMakedir)(struct IPerlDir*, const char*, int);
-typedef int (*LPChdir)(struct IPerlDir*, const char*);
-typedef int (*LPRmdir)(struct IPerlDir*, const char*);
-typedef int (*LPDirClose)(struct IPerlDir*, DIR*);
-typedef DIR* (*LPDirOpen)(struct IPerlDir*, const char*);
-typedef struct direct* (*LPDirRead)(struct IPerlDir*, DIR*);
-typedef void (*LPDirRewind)(struct IPerlDir*, DIR*);
-typedef void (*LPDirSeek)(struct IPerlDir*, DIR*, long);
-typedef long (*LPDirTell)(struct IPerlDir*, DIR*);
-#ifdef WIN32
-typedef char* (*LPDirMapPathA)(struct IPerlDir*, const char*);
-typedef WCHAR* (*LPDirMapPathW)(struct IPerlDir*, const WCHAR*);
-#endif
+typedef int (*LPMakedir)(struct IPerlDir*, const char*, int);
+typedef int (*LPChdir)(struct IPerlDir*, const char*);
+typedef int (*LPRmdir)(struct IPerlDir*, const char*);
+typedef int (*LPDirClose)(struct IPerlDir*, DIR*);
+typedef DIR* (*LPDirOpen)(struct IPerlDir*, const char*);
+typedef struct direct* (*LPDirRead)(struct IPerlDir*, DIR*);
+typedef void (*LPDirRewind)(struct IPerlDir*, DIR*);
+typedef void (*LPDirSeek)(struct IPerlDir*, DIR*, long);
+typedef long (*LPDirTell)(struct IPerlDir*, DIR*);
+# ifdef WIN32
+typedef char* (*LPDirMapPathA)(struct IPerlDir*, const char*);
+typedef WCHAR* (*LPDirMapPathW)(struct IPerlDir*, const WCHAR*);
+# endif
struct IPerlDir
{
- LPMakedir pMakedir;
- LPChdir pChdir;
- LPRmdir pRmdir;
- LPDirClose pClose;
- LPDirOpen pOpen;
- LPDirRead pRead;
- LPDirRewind pRewind;
- LPDirSeek pSeek;
- LPDirTell pTell;
-#ifdef WIN32
- LPDirMapPathA pMapPathA;
- LPDirMapPathW pMapPathW;
-#endif
+ LPMakedir pMakedir;
+ LPChdir pChdir;
+ LPRmdir pRmdir;
+ LPDirClose pClose;
+ LPDirOpen pOpen;
+ LPDirRead pRead;
+ LPDirRewind pRewind;
+ LPDirSeek pSeek;
+ LPDirTell pTell;
+# ifdef WIN32
+ LPDirMapPathA pMapPathA;
+ LPDirMapPathW pMapPathW;
+# endif
};
struct IPerlDirInfo
{
- unsigned long nCount; /* number of entries expected */
- struct IPerlDir perlDirList;
+ unsigned long nCount; /* number of entries expected */
+ struct IPerlDir perlDirList;
};
-#define PerlDir_mkdir(name, mode) \
+# define PerlDir_mkdir(name, mode) \
(*PL_Dir->pMakedir)(PL_Dir, (name), (mode))
-#define PerlDir_chdir(name) \
+# define PerlDir_chdir(name) \
(*PL_Dir->pChdir)(PL_Dir, (name))
-#define PerlDir_rmdir(name) \
+# define PerlDir_rmdir(name) \
(*PL_Dir->pRmdir)(PL_Dir, (name))
-#define PerlDir_close(dir) \
+# define PerlDir_close(dir) \
(*PL_Dir->pClose)(PL_Dir, (dir))
-#define PerlDir_open(name) \
+# define PerlDir_open(name) \
(*PL_Dir->pOpen)(PL_Dir, (name))
-#define PerlDir_read(dir) \
+# define PerlDir_read(dir) \
(*PL_Dir->pRead)(PL_Dir, (dir))
-#define PerlDir_rewind(dir) \
+# define PerlDir_rewind(dir) \
(*PL_Dir->pRewind)(PL_Dir, (dir))
-#define PerlDir_seek(dir, loc) \
+# define PerlDir_seek(dir, loc) \
(*PL_Dir->pSeek)(PL_Dir, (dir), (loc))
-#define PerlDir_tell(dir) \
+# define PerlDir_tell(dir) \
(*PL_Dir->pTell)(PL_Dir, (dir))
-#ifdef WIN32
-#define PerlDir_mapA(dir) \
+# ifdef WIN32
+# define PerlDir_mapA(dir) \
(*PL_Dir->pMapPathA)(PL_Dir, (dir))
-#define PerlDir_mapW(dir) \
+# define PerlDir_mapW(dir) \
(*PL_Dir->pMapPathW)(PL_Dir, (dir))
-#endif
+# endif
-#else /* PERL_IMPLICIT_SYS */
+# else /* ! PERL_IMPLICIT_SYS */
-#define PerlDir_mkdir(name, mode) Mkdir((name), (mode))
-#ifdef VMS
-# define PerlDir_chdir(n) Chdir((n))
-#else
-# define PerlDir_chdir(name) chdir((name))
-#endif
-#define PerlDir_rmdir(name) rmdir((name))
-#define PerlDir_close(dir) closedir((dir))
-#define PerlDir_open(name) opendir((name))
-#define PerlDir_read(dir) readdir((dir))
-#define PerlDir_rewind(dir) rewinddir((dir))
-#define PerlDir_seek(dir, loc) seekdir((dir), (loc))
-#define PerlDir_tell(dir) telldir((dir))
-#ifdef WIN32
-#define PerlDir_mapA(dir) dir
-#define PerlDir_mapW(dir) dir
-#endif
+# define PerlDir_mkdir(name, mode) Mkdir((name), (mode))
+# ifdef VMS
+# define PerlDir_chdir(n) Chdir((n))
+# else
+# define PerlDir_chdir(name) chdir((name))
+# endif
+# define PerlDir_rmdir(name) rmdir((name))
+# define PerlDir_close(dir) closedir((dir))
+# define PerlDir_open(name) opendir((name))
+# define PerlDir_read(dir) readdir((dir))
+# define PerlDir_rewind(dir) rewinddir((dir))
+# define PerlDir_seek(dir, loc) seekdir((dir), (loc))
+# define PerlDir_tell(dir) telldir((dir))
+# ifdef WIN32
+# define PerlDir_mapA(dir) dir
+# define PerlDir_mapW(dir) dir
+# endif
-#endif /* PERL_IMPLICIT_SYS */
+#endif /* PERL_IMPLICIT_SYS */
/*
Interface for perl environment functions
@@ -460,151 +457,144 @@ struct IPerlDirInfo
#if defined(PERL_IMPLICIT_SYS)
-/* IPerlEnv */
+/* IPerlEnv */
struct IPerlEnv;
struct IPerlEnvInfo;
-typedef char* (*LPEnvGetenv)(struct IPerlEnv*, const char*);
-typedef int (*LPEnvPutenv)(struct IPerlEnv*, const char*);
-typedef char* (*LPEnvGetenv_len)(struct IPerlEnv*,
+typedef char* (*LPEnvGetenv)(struct IPerlEnv*, const char*);
+typedef int (*LPEnvPutenv)(struct IPerlEnv*, const char*);
+typedef char* (*LPEnvGetenv_len)(struct IPerlEnv*,
const char *varname, unsigned long *len);
-typedef int (*LPEnvUname)(struct IPerlEnv*, struct utsname *name);
-typedef void (*LPEnvClearenv)(struct IPerlEnv*);
-typedef void* (*LPEnvGetChildenv)(struct IPerlEnv*);
-typedef void (*LPEnvFreeChildenv)(struct IPerlEnv*, void* env);
-typedef char* (*LPEnvGetChilddir)(struct IPerlEnv*);
-typedef void (*LPEnvFreeChilddir)(struct IPerlEnv*, char* dir);
-#ifdef HAS_ENVGETENV
-typedef char* (*LPENVGetenv)(struct IPerlEnv*, const char *varname);
-typedef char* (*LPENVGetenv_len)(struct IPerlEnv*,
+typedef int (*LPEnvUname)(struct IPerlEnv*, struct utsname *name);
+typedef void (*LPEnvClearenv)(struct IPerlEnv*);
+typedef void* (*LPEnvGetChildenv)(struct IPerlEnv*);
+typedef void (*LPEnvFreeChildenv)(struct IPerlEnv*, void* env);
+typedef char* (*LPEnvGetChilddir)(struct IPerlEnv*);
+typedef void (*LPEnvFreeChilddir)(struct IPerlEnv*, char* dir);
+# ifdef HAS_ENVGETENV
+typedef char* (*LPENVGetenv)(struct IPerlEnv*, const char *varname);
+typedef char* (*LPENVGetenv_len)(struct IPerlEnv*,
const char *varname, unsigned long *len);
-#endif
-#ifdef WIN32
-typedef unsigned long (*LPEnvOsID)(struct IPerlEnv*);
-typedef char* (*LPEnvLibPath)(struct IPerlEnv*, WIN32_NO_REGISTRY_M_(const char*)
+# endif
+# ifdef WIN32
+typedef unsigned long (*LPEnvOsID)(struct IPerlEnv*);
+typedef char* (*LPEnvLibPath)(struct IPerlEnv*, WIN32_NO_REGISTRY_M_(const char*)
STRLEN *const len);
-typedef char* (*LPEnvSiteLibPath)(struct IPerlEnv*, const char*,
+typedef char* (*LPEnvSiteLibPath)(struct IPerlEnv*, const char*,
STRLEN *const len);
-typedef char* (*LPEnvVendorLibPath)(struct IPerlEnv*, const char*,
+typedef char* (*LPEnvVendorLibPath)(struct IPerlEnv*, const char*,
STRLEN *const len);
-typedef void (*LPEnvGetChildIO)(struct IPerlEnv*, child_IO_table*);
-#endif
+typedef void (*LPEnvGetChildIO)(struct IPerlEnv*, child_IO_table*);
+# endif
struct IPerlEnv
{
- LPEnvGetenv pGetenv;
- LPEnvPutenv pPutenv;
- LPEnvGetenv_len pGetenv_len;
- LPEnvUname pEnvUname;
- LPEnvClearenv pClearenv;
- LPEnvGetChildenv pGetChildenv;
- LPEnvFreeChildenv pFreeChildenv;
- LPEnvGetChilddir pGetChilddir;
- LPEnvFreeChilddir pFreeChilddir;
-#ifdef HAS_ENVGETENV
- LPENVGetenv pENVGetenv;
- LPENVGetenv_len pENVGetenv_len;
-#endif
-#ifdef WIN32
- LPEnvOsID pEnvOsID;
- LPEnvLibPath pLibPath;
- LPEnvSiteLibPath pSiteLibPath;
- LPEnvVendorLibPath pVendorLibPath;
- LPEnvGetChildIO pGetChildIO;
-#endif
+ LPEnvGetenv pGetenv;
+ LPEnvPutenv pPutenv;
+ LPEnvGetenv_len pGetenv_len;
+ LPEnvUname pEnvUname;
+ LPEnvClearenv pClearenv;
+ LPEnvGetChildenv pGetChildenv;
+ LPEnvFreeChildenv pFreeChildenv;
+ LPEnvGetChilddir pGetChilddir;
+ LPEnvFreeChilddir pFreeChilddir;
+# ifdef HAS_ENVGETENV
+ LPENVGetenv pENVGetenv;
+ LPENVGetenv_len pENVGetenv_len;
+# endif
+# ifdef WIN32
+ LPEnvOsID pEnvOsID;
+ LPEnvLibPath pLibPath;
+ LPEnvSiteLibPath pSiteLibPath;
+ LPEnvVendorLibPath pVendorLibPath;
+ LPEnvGetChildIO pGetChildIO;
+# endif
};
struct IPerlEnvInfo
{
- unsigned long nCount; /* number of entries expected */
- struct IPerlEnv perlEnvList;
+ unsigned long nCount; /* number of entries expected */
+ struct IPerlEnv perlEnvList;
};
-#define PerlEnv_putenv(str) \
+# define PerlEnv_putenv(str) \
(*PL_Env->pPutenv)(PL_Env,(str))
-#define PerlEnv_getenv(str) \
+# define PerlEnv_getenv(str) \
(*PL_Env->pGetenv)(PL_Env,(str))
-#define PerlEnv_getenv_len(str,l) \
+# define PerlEnv_getenv_len(str,l) \
(*PL_Env->pGetenv_len)(PL_Env,(str), (l))
-#define PerlEnv_clearenv() \
+# define PerlEnv_clearenv() \
(*PL_Env->pClearenv)(PL_Env)
-#define PerlEnv_get_childenv() \
+# define PerlEnv_get_childenv() \
(*PL_Env->pGetChildenv)(PL_Env)
-#define PerlEnv_free_childenv(e) \
+# define PerlEnv_free_childenv(e) \
(*PL_Env->pFreeChildenv)(PL_Env, (e))
-#define PerlEnv_get_childdir() \
+# define PerlEnv_get_childdir() \
(*PL_Env->pGetChilddir)(PL_Env)
-#define PerlEnv_free_childdir(d) \
+# define PerlEnv_free_childdir(d) \
(*PL_Env->pFreeChilddir)(PL_Env, (d))
-#ifdef HAS_ENVGETENV
-# define PerlEnv_ENVgetenv(str) \
+# ifdef HAS_ENVGETENV
+# define PerlEnv_ENVgetenv(str) \
(*PL_Env->pENVGetenv)(PL_Env,(str))
-# define PerlEnv_ENVgetenv_len(str,l) \
+# define PerlEnv_ENVgetenv_len(str,l) \
(*PL_Env->pENVGetenv_len)(PL_Env,(str), (l))
-#else
-# define PerlEnv_ENVgetenv(str) \
+# else
+# define PerlEnv_ENVgetenv(str) \
PerlEnv_getenv((str))
-# define PerlEnv_ENVgetenv_len(str,l) \
+# define PerlEnv_ENVgetenv_len(str,l) \
PerlEnv_getenv_len((str),(l))
-#endif
-#define PerlEnv_uname(name) \
+# endif
+# define PerlEnv_uname(name) \
(*PL_Env->pEnvUname)(PL_Env,(name))
-#ifdef WIN32
-#define PerlEnv_os_id() \
+# ifdef WIN32
+# define PerlEnv_os_id() \
(*PL_Env->pEnvOsID)(PL_Env)
-#define PerlEnv_lib_path(str, lenp) \
+# define PerlEnv_lib_path(str, lenp) \
(*PL_Env->pLibPath)(PL_Env,WIN32_NO_REGISTRY_M_(str)(lenp))
-#define PerlEnv_sitelib_path(str, lenp) \
+# define PerlEnv_sitelib_path(str, lenp) \
(*PL_Env->pSiteLibPath)(PL_Env,(str),(lenp))
-#define PerlEnv_vendorlib_path(str, lenp) \
+# define PerlEnv_vendorlib_path(str, lenp) \
(*PL_Env->pVendorLibPath)(PL_Env,(str),(lenp))
-#define PerlEnv_get_child_IO(ptr) \
+# define PerlEnv_get_child_IO(ptr) \
(*PL_Env->pGetChildIO)(PL_Env, ptr)
-#endif
-
-#else /* below is ! PERL_IMPLICIT_SYS */
-# ifdef USE_ITHREADS
+# endif
- /* Use the comma operator to return 0/non-zero, while avoiding putting
- * this in an inline function */
-# define PerlEnv_putenv(str) (ENV_LOCK, (putenv(str) \
- ? (ENV_UNLOCK, 1) \
- : (ENV_UNLOCK, 0)))
+#else /* below is ! PERL_IMPLICIT_SYS */
+# ifndef USE_ITHREADS /* Threaded is an inline function in inline.h */
+# define PerlEnv_putenv(str) putenv(str)
+# endif
+# define PerlEnv_getenv(str) mortal_getenv(str)
+# define PerlEnv_getenv_len(str,l) getenv_len((str), (l))
+# ifdef HAS_ENVGETENV
+# define PerlEnv_ENVgetenv(str) ENVgetenv((str))
+# define PerlEnv_ENVgetenv_len(str,l) ENVgetenv_len((str), (l))
# else
-# define PerlEnv_putenv(str) putenv(str)
+# define PerlEnv_ENVgetenv(str) PerlEnv_getenv((str))
+# define PerlEnv_ENVgetenv_len(str,l) PerlEnv_getenv_len((str), (l))
# endif
-#define PerlEnv_getenv(str) mortal_getenv(str)
-#define PerlEnv_getenv_len(str,l) getenv_len((str), (l))
-#ifdef HAS_ENVGETENV
-# define PerlEnv_ENVgetenv(str) ENVgetenv((str))
-# define PerlEnv_ENVgetenv_len(str,l) ENVgetenv_len((str), (l))
-#else
-# define PerlEnv_ENVgetenv(str) PerlEnv_getenv((str))
-# define PerlEnv_ENVgetenv_len(str,l) PerlEnv_getenv_len((str), (l))
-#endif
-#define PerlEnv_uname(name) uname((name))
-
-#ifdef WIN32
-#define PerlEnv_os_id() win32_os_id()
-#define PerlEnv_lib_path(str, lenp) win32_get_privlib(WIN32_NO_REGISTRY_M_(str) lenp)
-#define PerlEnv_sitelib_path(str, lenp) win32_get_sitelib(str, lenp)
-#define PerlEnv_vendorlib_path(str, lenp) win32_get_vendorlib(str, lenp)
-#define PerlEnv_get_child_IO(ptr) win32_get_child_IO(ptr)
-#define PerlEnv_clearenv() win32_clearenv()
-#define PerlEnv_get_childenv() win32_get_childenv()
-#define PerlEnv_free_childenv(e) win32_free_childenv((e))
-#define PerlEnv_get_childdir() win32_get_childdir()
-#define PerlEnv_free_childdir(d) win32_free_childdir((d))
-#else
-#define PerlEnv_clearenv(str) (ENV_LOCK, (clearenv(str) \
+# define PerlEnv_uname(name) uname((name))
+
+# ifdef WIN32
+# define PerlEnv_os_id() win32_os_id()
+# define PerlEnv_lib_path(str, lenp) win32_get_privlib(WIN32_NO_REGISTRY_M_(str) lenp)
+# define PerlEnv_sitelib_path(str, lenp) win32_get_sitelib(str, lenp)
+# define PerlEnv_vendorlib_path(str, lenp) win32_get_vendorlib(str, lenp)
+# define PerlEnv_get_child_IO(ptr) win32_get_child_IO(ptr)
+# define PerlEnv_clearenv() win32_clearenv()
+# define PerlEnv_get_childenv() win32_get_childenv()
+# define PerlEnv_free_childenv(e) win32_free_childenv((e))
+# define PerlEnv_get_childdir() win32_get_childdir()
+# define PerlEnv_free_childdir(d) win32_free_childdir((d))
+# else
+# define PerlEnv_clearenv(str) (ENV_LOCK, (clearenv(str) \
? (ENV_UNLOCK, 1) \
: (ENV_UNLOCK, 0)))
-#define PerlEnv_get_childenv() get_childenv()
-#define PerlEnv_free_childenv(e) free_childenv((e))
-#define PerlEnv_get_childdir() get_childdir()
-#define PerlEnv_free_childdir(d) free_childdir((d))
-#endif
+# define PerlEnv_get_childenv() get_childenv()
+# define PerlEnv_free_childenv(e) free_childenv((e))
+# define PerlEnv_get_childdir() get_childdir()
+# define PerlEnv_free_childdir(d) free_childdir((d))
+# endif
-#endif /* PERL_IMPLICIT_SYS */
+#endif /* PERL_IMPLICIT_SYS */
/*
Interface for perl low-level IO functions
@@ -614,188 +604,197 @@ struct IPerlEnvInfo
struct utimbuf; /* prevent gcc warning about the use below */
-/* IPerlLIO */
+/* IPerlLIO */
struct IPerlLIO;
struct IPerlLIOInfo;
-typedef int (*LPLIOAccess)(struct IPerlLIO*, const char*, int);
-typedef int (*LPLIOChmod)(struct IPerlLIO*, const char*, int);
-typedef int (*LPLIOChown)(struct IPerlLIO*, const char*, uid_t,
+typedef int (*LPLIOAccess)(struct IPerlLIO*, const char*, int);
+typedef int (*LPLIOChmod)(struct IPerlLIO*, const char*, int);
+typedef int (*LPLIOChown)(struct IPerlLIO*, const char*, uid_t,
gid_t);
-typedef int (*LPLIOChsize)(struct IPerlLIO*, int, Off_t);
-typedef int (*LPLIOClose)(struct IPerlLIO*, int);
-typedef int (*LPLIODup)(struct IPerlLIO*, int);
-typedef int (*LPLIODup2)(struct IPerlLIO*, int, int);
-typedef int (*LPLIOFlock)(struct IPerlLIO*, int, int);
-typedef int (*LPLIOFileStat)(struct IPerlLIO*, int, Stat_t*);
-typedef int (*LPLIOIOCtl)(struct IPerlLIO*, int, unsigned int,
+typedef int (*LPLIOChsize)(struct IPerlLIO*, int, Off_t);
+typedef int (*LPLIOClose)(struct IPerlLIO*, int);
+typedef int (*LPLIODup)(struct IPerlLIO*, int);
+typedef int (*LPLIODup2)(struct IPerlLIO*, int, int);
+typedef int (*LPLIOFlock)(struct IPerlLIO*, int, int);
+typedef int (*LPLIOFileStat)(struct IPerlLIO*, int, Stat_t*);
+typedef int (*LPLIOIOCtl)(struct IPerlLIO*, int, unsigned int,
char*);
-typedef int (*LPLIOIsatty)(struct IPerlLIO*, int);
-typedef int (*LPLIOLink)(struct IPerlLIO*, const char*,
+typedef int (*LPLIOIsatty)(struct IPerlLIO*, int);
+typedef int (*LPLIOLink)(struct IPerlLIO*, const char*,
const char *);
-typedef Off_t (*LPLIOLseek)(struct IPerlLIO*, int, Off_t, int);
-typedef int (*LPLIOLstat)(struct IPerlLIO*, const char*,
+typedef Off_t (*LPLIOLseek)(struct IPerlLIO*, int, Off_t, int);
+typedef int (*LPLIOLstat)(struct IPerlLIO*, const char*,
Stat_t*);
-typedef char* (*LPLIOMktemp)(struct IPerlLIO*, char*);
-typedef int (*LPLIOOpen)(struct IPerlLIO*, const char*, int);
-typedef int (*LPLIOOpen3)(struct IPerlLIO*, const char*, int, int);
-typedef int (*LPLIORead)(struct IPerlLIO*, int, void*, unsigned int);
-typedef int (*LPLIORename)(struct IPerlLIO*, const char*,
+typedef char* (*LPLIOMktemp)(struct IPerlLIO*, char*);
+typedef int (*LPLIOOpen)(struct IPerlLIO*, const char*, int);
+typedef int (*LPLIOOpen3)(struct IPerlLIO*, const char*, int, int);
+typedef int (*LPLIORead)(struct IPerlLIO*, int, void*, unsigned int);
+typedef int (*LPLIORename)(struct IPerlLIO*, const char*,
const char*);
-#ifdef NETWARE
-typedef int (*LPLIOSetmode)(struct IPerlLIO*, FILE*, int);
-#else
-typedef int (*LPLIOSetmode)(struct IPerlLIO*, int, int);
-#endif /* NETWARE */
-typedef int (*LPLIONameStat)(struct IPerlLIO*, const char*,
+typedef int (*LPLIOSetmode)(struct IPerlLIO*, int, int);
+typedef int (*LPLIONameStat)(struct IPerlLIO*, const char*,
Stat_t*);
-typedef char* (*LPLIOTmpnam)(struct IPerlLIO*, char*);
-typedef int (*LPLIOUmask)(struct IPerlLIO*, int);
-typedef int (*LPLIOUnlink)(struct IPerlLIO*, const char*);
-typedef int (*LPLIOUtime)(struct IPerlLIO*, const char*, struct utimbuf*);
-typedef int (*LPLIOWrite)(struct IPerlLIO*, int, const void*,
+typedef char* (*LPLIOTmpnam)(struct IPerlLIO*, char*);
+typedef int (*LPLIOUmask)(struct IPerlLIO*, int);
+typedef int (*LPLIOUnlink)(struct IPerlLIO*, const char*);
+typedef int (*LPLIOUtime)(struct IPerlLIO*, const char*, struct utimbuf*);
+typedef int (*LPLIOWrite)(struct IPerlLIO*, int, const void*,
unsigned int);
-typedef int (*LPLIOSymLink)(struct IPerlLIO*, const char*,
+typedef int (*LPLIOSymLink)(struct IPerlLIO*, const char*,
const char *);
-typedef int (*LPLIOReadLink)(struct IPerlLIO*, const char*,
+typedef int (*LPLIOReadLink)(struct IPerlLIO*, const char*,
char *, size_t);
struct IPerlLIO
{
- LPLIOAccess pAccess;
- LPLIOChmod pChmod;
- LPLIOChown pChown;
- LPLIOChsize pChsize;
- LPLIOClose pClose;
- LPLIODup pDup;
- LPLIODup2 pDup2;
- LPLIOFlock pFlock;
- LPLIOFileStat pFileStat;
- LPLIOIOCtl pIOCtl;
- LPLIOIsatty pIsatty;
- LPLIOLink pLink;
- LPLIOLseek pLseek;
- LPLIOLstat pLstat;
- LPLIOMktemp pMktemp;
- LPLIOOpen pOpen;
- LPLIOOpen3 pOpen3;
- LPLIORead pRead;
- LPLIORename pRename;
- LPLIOSetmode pSetmode;
- LPLIONameStat pNameStat;
- LPLIOTmpnam pTmpnam;
- LPLIOUmask pUmask;
- LPLIOUnlink pUnlink;
- LPLIOUtime pUtime;
- LPLIOWrite pWrite;
+ LPLIOAccess pAccess;
+ LPLIOChmod pChmod;
+ LPLIOChown pChown;
+ LPLIOChsize pChsize;
+ LPLIOClose pClose;
+ LPLIODup pDup;
+ LPLIODup2 pDup2;
+ LPLIOFlock pFlock;
+ LPLIOFileStat pFileStat;
+ LPLIOIOCtl pIOCtl;
+ LPLIOIsatty pIsatty;
+ LPLIOLink pLink;
+ LPLIOLseek pLseek;
+ LPLIOLstat pLstat;
+ LPLIOMktemp pMktemp;
+ LPLIOOpen pOpen;
+ LPLIOOpen3 pOpen3;
+ LPLIORead pRead;
+ LPLIORename pRename;
+ LPLIOSetmode pSetmode;
+ LPLIONameStat pNameStat;
+ LPLIOTmpnam pTmpnam;
+ LPLIOUmask pUmask;
+ LPLIOUnlink pUnlink;
+ LPLIOUtime pUtime;
+ LPLIOWrite pWrite;
LPLIOSymLink pSymLink;
LPLIOReadLink pReadLink;
};
struct IPerlLIOInfo
{
- unsigned long nCount; /* number of entries expected */
- struct IPerlLIO perlLIOList;
+ unsigned long nCount; /* number of entries expected */
+ struct IPerlLIO perlLIOList;
};
-#define PerlLIO_access(file, mode) \
+# define PerlLIO_access(file, mode) \
(*PL_LIO->pAccess)(PL_LIO, (file), (mode))
-#define PerlLIO_chmod(file, mode) \
+# define PerlLIO_chmod(file, mode) \
(*PL_LIO->pChmod)(PL_LIO, (file), (mode))
-#define PerlLIO_chown(file, owner, group) \
+# define PerlLIO_chown(file, owner, group) \
(*PL_LIO->pChown)(PL_LIO, (file), (owner), (group))
-#define PerlLIO_chsize(fd, size) \
+# define PerlLIO_chsize(fd, size) \
(*PL_LIO->pChsize)(PL_LIO, (fd), (size))
-#define PerlLIO_close(fd) \
+# define PerlLIO_close(fd) \
(*PL_LIO->pClose)(PL_LIO, (fd))
-#define PerlLIO_dup(fd) \
+# define PerlLIO_dup(fd) \
(*PL_LIO->pDup)(PL_LIO, (fd))
-#define PerlLIO_dup2(fd1, fd2) \
+# define PerlLIO_dup2(fd1, fd2) \
(*PL_LIO->pDup2)(PL_LIO, (fd1), (fd2))
-#define PerlLIO_flock(fd, op) \
+# define PerlLIO_flock(fd, op) \
(*PL_LIO->pFlock)(PL_LIO, (fd), (op))
-#define PerlLIO_fstat(fd, buf) \
+# define PerlLIO_fstat(fd, buf) \
(*PL_LIO->pFileStat)(PL_LIO, (fd), (buf))
-#define PerlLIO_ioctl(fd, u, buf) \
+# define PerlLIO_ioctl(fd, u, buf) \
(*PL_LIO->pIOCtl)(PL_LIO, (fd), (u), (buf))
-#define PerlLIO_isatty(fd) \
+# define PerlLIO_isatty(fd) \
(*PL_LIO->pIsatty)(PL_LIO, (fd))
-#define PerlLIO_link(oldname, newname) \
+# define PerlLIO_link(oldname, newname) \
(*PL_LIO->pLink)(PL_LIO, (oldname), (newname))
-#define PerlLIO_symlink(oldname, newname) \
+# define PerlLIO_symlink(oldname, newname) \
(*PL_LIO->pSymLink)(PL_LIO, (oldname), (newname))
-#define PerlLIO_readlink(path, buf, bufsiz) \
+# define PerlLIO_readlink(path, buf, bufsiz) \
(*PL_LIO->pReadLink)(PL_LIO, (path), (buf), (bufsiz))
-#define PerlLIO_lseek(fd, offset, mode) \
+# define PerlLIO_lseek(fd, offset, mode) \
(*PL_LIO->pLseek)(PL_LIO, (fd), (offset), (mode))
-#define PerlLIO_lstat(name, buf) \
+# define PerlLIO_lstat(name, buf) \
(*PL_LIO->pLstat)(PL_LIO, (name), (buf))
-#define PerlLIO_mktemp(file) \
+# define PerlLIO_mktemp(file) \
(*PL_LIO->pMktemp)(PL_LIO, (file))
-#define PerlLIO_open(file, flag) \
+# define PerlLIO_open(file, flag) \
(*PL_LIO->pOpen)(PL_LIO, (file), (flag))
-#define PerlLIO_open3(file, flag, perm) \
+# define PerlLIO_open3(file, flag, perm) \
(*PL_LIO->pOpen3)(PL_LIO, (file), (flag), (perm))
-#define PerlLIO_read(fd, buf, count) \
+# define PerlLIO_read(fd, buf, count) \
(*PL_LIO->pRead)(PL_LIO, (fd), (buf), (count))
-#define PerlLIO_rename(oname, newname) \
+# define PerlLIO_rename(oname, newname) \
(*PL_LIO->pRename)(PL_LIO, (oname), (newname))
-#define PerlLIO_setmode(fd, mode) \
+# define PerlLIO_setmode(fd, mode) \
(*PL_LIO->pSetmode)(PL_LIO, (fd), (mode))
-#define PerlLIO_stat(name, buf) \
+# define PerlLIO_stat(name, buf) \
(*PL_LIO->pNameStat)(PL_LIO, (name), (buf))
-#define PerlLIO_tmpnam(str) \
+# define PerlLIO_tmpnam(str) \
(*PL_LIO->pTmpnam)(PL_LIO, (str))
-#define PerlLIO_umask(mode) \
+# define PerlLIO_umask(mode) \
(*PL_LIO->pUmask)(PL_LIO, (mode))
-#define PerlLIO_unlink(file) \
+# define PerlLIO_unlink(file) \
(*PL_LIO->pUnlink)(PL_LIO, (file))
-#define PerlLIO_utime(file, time) \
+# define PerlLIO_utime(file, time) \
(*PL_LIO->pUtime)(PL_LIO, (file), (time))
-#define PerlLIO_write(fd, buf, count) \
+# define PerlLIO_write(fd, buf, count) \
(*PL_LIO->pWrite)(PL_LIO, (fd), (buf), (count))
-#else /* PERL_IMPLICIT_SYS */
-
-#define PerlLIO_access(file, mode) access((file), (mode))
-#define PerlLIO_chmod(file, mode) chmod((file), (mode))
-#define PerlLIO_chown(file, owner, grp) chown((file), (owner), (grp))
-#if defined(HAS_TRUNCATE)
-# define PerlLIO_chsize(fd, size) ftruncate((fd), (size))
-#elif defined(HAS_CHSIZE)
-# define PerlLIO_chsize(fd, size) chsize((fd), (size))
-#else
-# define PerlLIO_chsize(fd, size) my_chsize((fd), (size))
-#endif
-#define PerlLIO_close(fd) close((fd))
-#define PerlLIO_dup(fd) dup((fd))
-#define PerlLIO_dup2(fd1, fd2) dup2((fd1), (fd2))
-#define PerlLIO_flock(fd, op) FLOCK((fd), (op))
-#define PerlLIO_fstat(fd, buf) Fstat((fd), (buf))
-#define PerlLIO_ioctl(fd, u, buf) ioctl((fd), (u), (buf))
-#define PerlLIO_isatty(fd) isatty((fd))
-#define PerlLIO_link(oldname, newname) link((oldname), (newname))
-#define PerlLIO_symlink(oldname, newname) symlink((oldname), (newname))
-#define PerlLIO_readlink(path, buf, bufsiz) readlink((path), (buf), (bufsiz))
-#define PerlLIO_lseek(fd, offset, mode) lseek((fd), (offset), (mode))
-#define PerlLIO_stat(name, buf) Stat((name), (buf))
-#ifdef HAS_LSTAT
-# define PerlLIO_lstat(name, buf) lstat((name), (buf))
-#else
-# define PerlLIO_lstat(name, buf) PerlLIO_stat((name), (buf))
-#endif
-#define PerlLIO_mktemp(file) mktemp((file))
-#define PerlLIO_open(file, flag) open((file), (flag))
-#define PerlLIO_open3(file, flag, perm) open((file), (flag), (perm))
-#define PerlLIO_read(fd, buf, count) read((fd), (buf), (count))
-#define PerlLIO_rename(old, new) rename((old), (new))
-#define PerlLIO_setmode(fd, mode) setmode((fd), (mode))
-#define PerlLIO_tmpnam(str) tmpnam((str))
-#define PerlLIO_umask(mode) umask((mode))
-#define PerlLIO_unlink(file) unlink((file))
-#define PerlLIO_utime(file, time) utime((file), (time))
-#define PerlLIO_write(fd, buf, count) write((fd), (buf), (count))
-
-#endif /* PERL_IMPLICIT_SYS */
+#else /* ! PERL_IMPLICIT_SYS */
+
+# define PerlLIO_access(file, mode) access((file), (mode))
+# define PerlLIO_chmod(file, mode) chmod((file), (mode))
+# define PerlLIO_chown(file, owner, grp) chown((file), (owner), (grp))
+# if defined(HAS_TRUNCATE)
+# define PerlLIO_chsize(fd, size) ftruncate((fd), (size))
+# elif defined(HAS_CHSIZE)
+# define PerlLIO_chsize(fd, size) chsize((fd), (size))
+# else
+# define PerlLIO_chsize(fd, size) my_chsize((fd), (size))
+# endif
+# define PerlLIO_close(fd) close((fd))
+# define PerlLIO_dup(fd) dup((fd))
+# define PerlLIO_dup2(fd1, fd2) dup2((fd1), (fd2))
+# define PerlLIO_flock(fd, op) FLOCK((fd), (op))
+# define PerlLIO_fstat(fd, buf) Fstat((fd), (buf))
+# define PerlLIO_ioctl(fd, u, buf) ioctl((fd), (u), (buf))
+# define PerlLIO_isatty(fd) isatty((fd))
+# define PerlLIO_link(oldname, newname) link((oldname), (newname))
+# define PerlLIO_symlink(oldname, newname) symlink((oldname), (newname))
+# define PerlLIO_readlink(path, buf, bufsiz) readlink((path), (buf), (bufsiz))
+# define PerlLIO_lseek(fd, offset, mode) lseek((fd), (offset), (mode))
+# define PerlLIO_stat(name, buf) Stat((name), (buf))
+# ifdef HAS_LSTAT
+# define PerlLIO_lstat(name, buf) lstat((name), (buf))
+# else
+# define PerlLIO_lstat(name, buf) PerlLIO_stat((name), (buf))
+# endif
+# define PerlLIO_mktemp(file) mktemp((file))
+# if defined(OEMVS)
+# if (__CHARSET_LIB == 1)
+ int asciiopen(const char* path, int oflag);
+ int asciiopen3(const char* path, int oflag, int perm);
+
+# define PerlLIO_open(file, flag) asciiopen((file), (flag))
+# define PerlLIO_open3(file, flag, perm) asciiopen3((file), (flag), (perm))
+# else
+# define PerlLIO_open(file, flag) open((file), (flag))
+# define PerlLIO_open3(file, flag, perm) open((file), (flag), (perm))
+# endif
+# else
+# define PerlLIO_open(file, flag) open((file), (flag))
+# define PerlLIO_open3(file, flag, perm) open((file), (flag), (perm))
+# endif
+# define PerlLIO_read(fd, buf, count) read((fd), (buf), (count))
+# define PerlLIO_rename(old, new) rename((old), (new))
+# define PerlLIO_setmode(fd, mode) setmode((fd), (mode))
+# define PerlLIO_tmpnam(str) tmpnam((str))
+# define PerlLIO_umask(mode) umask((mode))
+# define PerlLIO_unlink(file) unlink((file))
+# define PerlLIO_utime(file, time) utime((file), (time))
+# define PerlLIO_write(fd, buf, count) write((fd), (buf), (count))
+
+#endif /* PERL_IMPLICIT_SYS */
/*
Interface for perl memory allocation
@@ -803,134 +802,113 @@ struct IPerlLIOInfo
#if defined(PERL_IMPLICIT_SYS)
-/* IPerlMem */
+/* IPerlMem */
struct IPerlMem;
struct IPerlMemInfo;
-typedef void* (*LPMemMalloc)(struct IPerlMem*, size_t);
-typedef void* (*LPMemRealloc)(struct IPerlMem*, void*, size_t);
-typedef void (*LPMemFree)(struct IPerlMem*, void*);
-typedef void* (*LPMemCalloc)(struct IPerlMem*, size_t, size_t);
-typedef void (*LPMemGetLock)(struct IPerlMem*);
-typedef void (*LPMemFreeLock)(struct IPerlMem*);
-typedef int (*LPMemIsLocked)(struct IPerlMem*);
+typedef void* (*LPMemMalloc)(struct IPerlMem*, size_t);
+typedef void* (*LPMemRealloc)(struct IPerlMem*, void*, size_t);
+typedef void (*LPMemFree)(struct IPerlMem*, void*);
+typedef void* (*LPMemCalloc)(struct IPerlMem*, size_t, size_t);
+typedef void (*LPMemGetLock)(struct IPerlMem*);
+typedef void (*LPMemFreeLock)(struct IPerlMem*);
+typedef int (*LPMemIsLocked)(struct IPerlMem*);
struct IPerlMem
{
- LPMemMalloc pMalloc;
- LPMemRealloc pRealloc;
- LPMemFree pFree;
- LPMemCalloc pCalloc;
- LPMemGetLock pGetLock;
- LPMemFreeLock pFreeLock;
- LPMemIsLocked pIsLocked;
+ LPMemMalloc pMalloc;
+ LPMemRealloc pRealloc;
+ LPMemFree pFree;
+ LPMemCalloc pCalloc;
+ LPMemGetLock pGetLock;
+ LPMemFreeLock pFreeLock;
+ LPMemIsLocked pIsLocked;
};
struct IPerlMemInfo
{
- unsigned long nCount; /* number of entries expected */
- struct IPerlMem perlMemList;
+ unsigned long nCount; /* number of entries expected */
+ struct IPerlMem perlMemList;
};
/* Interpreter specific memory macros */
-#define PerlMem_malloc(size) \
+# define PerlMem_malloc(size) \
(*PL_Mem->pMalloc)(PL_Mem, (size))
-#define PerlMem_realloc(buf, size) \
+# define PerlMem_realloc(buf, size) \
(*PL_Mem->pRealloc)(PL_Mem, (buf), (size))
-#define PerlMem_free(buf) \
+# define PerlMem_free(buf) \
(*PL_Mem->pFree)(PL_Mem, (buf))
-#define PerlMem_calloc(num, size) \
+# define PerlMem_calloc(num, size) \
(*PL_Mem->pCalloc)(PL_Mem, (num), (size))
-#define PerlMem_get_lock() \
+# define PerlMem_get_lock() \
(*PL_Mem->pGetLock)(PL_Mem)
-#define PerlMem_free_lock() \
+# define PerlMem_free_lock() \
(*PL_Mem->pFreeLock)(PL_Mem)
-#define PerlMem_is_locked() \
+# define PerlMem_is_locked() \
(*PL_Mem->pIsLocked)(PL_Mem)
/* Shared memory macros */
-#ifdef NETWARE
-
-#define PerlMemShared_malloc(size) \
- (*PL_Mem->pMalloc)(PL_Mem, (size))
-#define PerlMemShared_realloc(buf, size) \
- (*PL_Mem->pRealloc)(PL_Mem, (buf), (size))
-#define PerlMemShared_free(buf) \
- (*PL_Mem->pFree)(PL_Mem, (buf))
-#define PerlMemShared_calloc(num, size) \
- (*PL_Mem->pCalloc)(PL_Mem, (num), (size))
-#define PerlMemShared_get_lock() \
- (*PL_Mem->pGetLock)(PL_Mem)
-#define PerlMemShared_free_lock() \
- (*PL_Mem->pFreeLock)(PL_Mem)
-#define PerlMemShared_is_locked() \
- (*PL_Mem->pIsLocked)(PL_Mem)
-
-#else
-
-#define PerlMemShared_malloc(size) \
+# define PerlMemShared_malloc(size) \
(*PL_MemShared->pMalloc)(PL_MemShared, (size))
-#define PerlMemShared_realloc(buf, size) \
+# define PerlMemShared_realloc(buf, size) \
(*PL_MemShared->pRealloc)(PL_MemShared, (buf), (size))
-#define PerlMemShared_free(buf) \
+# define PerlMemShared_free(buf) \
(*PL_MemShared->pFree)(PL_MemShared, (buf))
-#define PerlMemShared_calloc(num, size) \
+# define PerlMemShared_calloc(num, size) \
(*PL_MemShared->pCalloc)(PL_MemShared, (num), (size))
-#define PerlMemShared_get_lock() \
+# define PerlMemShared_get_lock() \
(*PL_MemShared->pGetLock)(PL_MemShared)
-#define PerlMemShared_free_lock() \
+# define PerlMemShared_free_lock() \
(*PL_MemShared->pFreeLock)(PL_MemShared)
-#define PerlMemShared_is_locked() \
+# define PerlMemShared_is_locked() \
(*PL_MemShared->pIsLocked)(PL_MemShared)
-#endif
-
/* Parse tree memory macros */
-#define PerlMemParse_malloc(size) \
+# define PerlMemParse_malloc(size) \
(*PL_MemParse->pMalloc)(PL_MemParse, (size))
-#define PerlMemParse_realloc(buf, size) \
+# define PerlMemParse_realloc(buf, size) \
(*PL_MemParse->pRealloc)(PL_MemParse, (buf), (size))
-#define PerlMemParse_free(buf) \
+# define PerlMemParse_free(buf) \
(*PL_MemParse->pFree)(PL_MemParse, (buf))
-#define PerlMemParse_calloc(num, size) \
+# define PerlMemParse_calloc(num, size) \
(*PL_MemParse->pCalloc)(PL_MemParse, (num), (size))
-#define PerlMemParse_get_lock() \
+# define PerlMemParse_get_lock() \
(*PL_MemParse->pGetLock)(PL_MemParse)
-#define PerlMemParse_free_lock() \
+# define PerlMemParse_free_lock() \
(*PL_MemParse->pFreeLock)(PL_MemParse)
-#define PerlMemParse_is_locked() \
+# define PerlMemParse_is_locked() \
(*PL_MemParse->pIsLocked)(PL_MemParse)
-#else /* PERL_IMPLICIT_SYS */
+#else /* ! PERL_IMPLICIT_SYS */
/* Interpreter specific memory macros */
-#define PerlMem_malloc(size) malloc((size))
-#define PerlMem_realloc(buf, size) realloc((buf), (size))
-#define PerlMem_free(buf) free((buf))
-#define PerlMem_calloc(num, size) calloc((num), (size))
-#define PerlMem_get_lock()
-#define PerlMem_free_lock()
-#define PerlMem_is_locked() 0
+# define PerlMem_malloc(size) malloc((size))
+# define PerlMem_realloc(buf, size) realloc((buf), (size))
+# define PerlMem_free(buf) free((buf))
+# define PerlMem_calloc(num, size) calloc((num), (size))
+# define PerlMem_get_lock()
+# define PerlMem_free_lock()
+# define PerlMem_is_locked() 0
/* Shared memory macros */
-#define PerlMemShared_malloc(size) malloc((size))
-#define PerlMemShared_realloc(buf, size) realloc((buf), (size))
-#define PerlMemShared_free(buf) free((buf))
-#define PerlMemShared_calloc(num, size) calloc((num), (size))
-#define PerlMemShared_get_lock()
-#define PerlMemShared_free_lock()
-#define PerlMemShared_is_locked() 0
+# define PerlMemShared_malloc(size) malloc((size))
+# define PerlMemShared_realloc(buf, size) realloc((buf), (size))
+# define PerlMemShared_free(buf) free((buf))
+# define PerlMemShared_calloc(num, size) calloc((num), (size))
+# define PerlMemShared_get_lock()
+# define PerlMemShared_free_lock()
+# define PerlMemShared_is_locked() 0
/* Parse tree memory macros */
-#define PerlMemParse_malloc(size) malloc((size))
-#define PerlMemParse_realloc(buf, size) realloc((buf), (size))
-#define PerlMemParse_free(buf) free((buf))
-#define PerlMemParse_calloc(num, size) calloc((num), (size))
-#define PerlMemParse_get_lock()
-#define PerlMemParse_free_lock()
-#define PerlMemParse_is_locked() 0
+# define PerlMemParse_malloc(size) malloc((size))
+# define PerlMemParse_realloc(buf, size) realloc((buf), (size))
+# define PerlMemParse_free(buf) free((buf))
+# define PerlMemParse_calloc(num, size) calloc((num), (size))
+# define PerlMemParse_get_lock()
+# define PerlMemParse_free_lock()
+# define PerlMemParse_is_locked() 0
-#endif /* PERL_IMPLICIT_SYS */
+#endif /* PERL_IMPLICIT_SYS */
/*
Interface for perl process functions
@@ -939,224 +917,224 @@ struct IPerlMemInfo
#if defined(PERL_IMPLICIT_SYS)
-#ifndef jmp_buf
-#include <setjmp.h>
-#endif
+# ifndef jmp_buf
+# include <setjmp.h>
+# endif
-/* IPerlProc */
+/* IPerlProc */
struct IPerlProc;
struct IPerlProcInfo;
-typedef void (*LPProcAbort)(struct IPerlProc*);
-typedef char* (*LPProcCrypt)(struct IPerlProc*, const char*,
+typedef void (*LPProcAbort)(struct IPerlProc*);
+typedef char* (*LPProcCrypt)(struct IPerlProc*, const char*,
const char*);
-typedef void (*LPProcExit)(struct IPerlProc*, int)
+typedef void (*LPProcExit)(struct IPerlProc*, int)
__attribute__noreturn__;
-typedef void (*LPProc_Exit)(struct IPerlProc*, int)
+typedef void (*LPProc_Exit)(struct IPerlProc*, int)
__attribute__noreturn__;
-typedef int (*LPProcExecl)(struct IPerlProc*, const char*,
+typedef int (*LPProcExecl)(struct IPerlProc*, const char*,
const char*, const char*, const char*,
const char*);
-typedef int (*LPProcExecv)(struct IPerlProc*, const char*,
+typedef int (*LPProcExecv)(struct IPerlProc*, const char*,
const char*const*);
-typedef int (*LPProcExecvp)(struct IPerlProc*, const char*,
+typedef int (*LPProcExecvp)(struct IPerlProc*, const char*,
const char*const*);
-typedef Uid_t (*LPProcGetuid)(struct IPerlProc*);
-typedef Uid_t (*LPProcGeteuid)(struct IPerlProc*);
-typedef Gid_t (*LPProcGetgid)(struct IPerlProc*);
-typedef Gid_t (*LPProcGetegid)(struct IPerlProc*);
-typedef char* (*LPProcGetlogin)(struct IPerlProc*);
-typedef int (*LPProcKill)(struct IPerlProc*, int, int);
-typedef int (*LPProcKillpg)(struct IPerlProc*, int, int);
-typedef int (*LPProcPauseProc)(struct IPerlProc*);
-typedef PerlIO* (*LPProcPopen)(struct IPerlProc*, const char*,
+typedef Uid_t (*LPProcGetuid)(struct IPerlProc*);
+typedef Uid_t (*LPProcGeteuid)(struct IPerlProc*);
+typedef Gid_t (*LPProcGetgid)(struct IPerlProc*);
+typedef Gid_t (*LPProcGetegid)(struct IPerlProc*);
+typedef char* (*LPProcGetlogin)(struct IPerlProc*);
+typedef int (*LPProcKill)(struct IPerlProc*, int, int);
+typedef int (*LPProcKillpg)(struct IPerlProc*, int, int);
+typedef int (*LPProcPauseProc)(struct IPerlProc*);
+typedef PerlIO* (*LPProcPopen)(struct IPerlProc*, const char*,
const char*);
-typedef PerlIO* (*LPProcPopenList)(struct IPerlProc*, const char*,
+typedef PerlIO* (*LPProcPopenList)(struct IPerlProc*, const char*,
IV narg, SV **args);
-typedef int (*LPProcPclose)(struct IPerlProc*, PerlIO*);
-typedef int (*LPProcPipe)(struct IPerlProc*, int*);
-typedef int (*LPProcSetuid)(struct IPerlProc*, uid_t);
-typedef int (*LPProcSetgid)(struct IPerlProc*, gid_t);
-typedef int (*LPProcSleep)(struct IPerlProc*, unsigned int);
-typedef int (*LPProcTimes)(struct IPerlProc*, struct tms*);
-typedef int (*LPProcWait)(struct IPerlProc*, int*);
-typedef int (*LPProcWaitpid)(struct IPerlProc*, int, int*, int);
-typedef Sighandler_t (*LPProcSignal)(struct IPerlProc*, int, Sighandler_t);
-typedef int (*LPProcFork)(struct IPerlProc*);
-typedef int (*LPProcGetpid)(struct IPerlProc*);
-#ifdef WIN32
-typedef void* (*LPProcDynaLoader)(struct IPerlProc*, const char*);
-typedef void (*LPProcGetOSError)(struct IPerlProc*,
+typedef int (*LPProcPclose)(struct IPerlProc*, PerlIO*);
+typedef int (*LPProcPipe)(struct IPerlProc*, int*);
+typedef int (*LPProcSetuid)(struct IPerlProc*, uid_t);
+typedef int (*LPProcSetgid)(struct IPerlProc*, gid_t);
+typedef int (*LPProcSleep)(struct IPerlProc*, unsigned int);
+typedef int (*LPProcTimes)(struct IPerlProc*, struct tms*);
+typedef int (*LPProcWait)(struct IPerlProc*, int*);
+typedef int (*LPProcWaitpid)(struct IPerlProc*, int, int*, int);
+typedef Sighandler_t (*LPProcSignal)(struct IPerlProc*, int, Sighandler_t);
+typedef int (*LPProcFork)(struct IPerlProc*);
+typedef int (*LPProcGetpid)(struct IPerlProc*);
+# ifdef WIN32
+typedef void* (*LPProcDynaLoader)(struct IPerlProc*, const char*);
+typedef void (*LPProcGetOSError)(struct IPerlProc*,
SV* sv, DWORD dwErr);
-typedef int (*LPProcSpawnvp)(struct IPerlProc*, int, const char*,
+typedef int (*LPProcSpawnvp)(struct IPerlProc*, int, const char*,
const char*const*);
-#endif
-typedef int (*LPProcLastHost)(struct IPerlProc*);
-typedef int (*LPProcGetTimeOfDay)(struct IPerlProc*,
+# endif
+typedef int (*LPProcLastHost)(struct IPerlProc*);
+typedef int (*LPProcGetTimeOfDay)(struct IPerlProc*,
struct timeval*, void*);
struct IPerlProc
{
- LPProcAbort pAbort;
- LPProcCrypt pCrypt;
- LPProcExit pExit;
- LPProc_Exit p_Exit;
- LPProcExecl pExecl;
- LPProcExecv pExecv;
- LPProcExecvp pExecvp;
- LPProcGetuid pGetuid;
- LPProcGeteuid pGeteuid;
- LPProcGetgid pGetgid;
- LPProcGetegid pGetegid;
- LPProcGetlogin pGetlogin;
- LPProcKill pKill;
- LPProcKillpg pKillpg;
- LPProcPauseProc pPauseProc;
- LPProcPopen pPopen;
- LPProcPclose pPclose;
- LPProcPipe pPipe;
- LPProcSetuid pSetuid;
- LPProcSetgid pSetgid;
- LPProcSleep pSleep;
- LPProcTimes pTimes;
- LPProcWait pWait;
- LPProcWaitpid pWaitpid;
- LPProcSignal pSignal;
- LPProcFork pFork;
- LPProcGetpid pGetpid;
-#ifdef WIN32
- LPProcDynaLoader pDynaLoader;
- LPProcGetOSError pGetOSError;
- LPProcSpawnvp pSpawnvp;
-#endif
+ LPProcAbort pAbort;
+ LPProcCrypt pCrypt;
+ LPProcExit pExit;
+ LPProc_Exit p_Exit;
+ LPProcExecl pExecl;
+ LPProcExecv pExecv;
+ LPProcExecvp pExecvp;
+ LPProcGetuid pGetuid;
+ LPProcGeteuid pGeteuid;
+ LPProcGetgid pGetgid;
+ LPProcGetegid pGetegid;
+ LPProcGetlogin pGetlogin;
+ LPProcKill pKill;
+ LPProcKillpg pKillpg;
+ LPProcPauseProc pPauseProc;
+ LPProcPopen pPopen;
+ LPProcPclose pPclose;
+ LPProcPipe pPipe;
+ LPProcSetuid pSetuid;
+ LPProcSetgid pSetgid;
+ LPProcSleep pSleep;
+ LPProcTimes pTimes;
+ LPProcWait pWait;
+ LPProcWaitpid pWaitpid;
+ LPProcSignal pSignal;
+ LPProcFork pFork;
+ LPProcGetpid pGetpid;
+# ifdef WIN32
+ LPProcDynaLoader pDynaLoader;
+ LPProcGetOSError pGetOSError;
+ LPProcSpawnvp pSpawnvp;
+# endif
LPProcLastHost pLastHost;
- LPProcPopenList pPopenList;
- LPProcGetTimeOfDay pGetTimeOfDay;
+ LPProcPopenList pPopenList;
+ LPProcGetTimeOfDay pGetTimeOfDay;
};
struct IPerlProcInfo
{
- unsigned long nCount; /* number of entries expected */
- struct IPerlProc perlProcList;
+ unsigned long nCount; /* number of entries expected */
+ struct IPerlProc perlProcList;
};
-#define PerlProc_abort() \
+# define PerlProc_abort() \
(*PL_Proc->pAbort)(PL_Proc)
-#define PerlProc_crypt(c,s) \
+# define PerlProc_crypt(c,s) \
(*PL_Proc->pCrypt)(PL_Proc, (c), (s))
-#define PerlProc_exit(s) \
+# define PerlProc_exit(s) \
(*PL_Proc->pExit)(PL_Proc, (s))
-#define PerlProc__exit(s) \
+# define PerlProc__exit(s) \
(*PL_Proc->p_Exit)(PL_Proc, (s))
-#define PerlProc_execl(c, w, x, y, z) \
+# define PerlProc_execl(c, w, x, y, z) \
(*PL_Proc->pExecl)(PL_Proc, (c), (w), (x), (y), (z))
-#define PerlProc_execv(c, a) \
+# define PerlProc_execv(c, a) \
(*PL_Proc->pExecv)(PL_Proc, (c), (a))
-#define PerlProc_execvp(c, a) \
+# define PerlProc_execvp(c, a) \
(*PL_Proc->pExecvp)(PL_Proc, (c), (a))
-#define PerlProc_getuid() \
+# define PerlProc_getuid() \
(*PL_Proc->pGetuid)(PL_Proc)
-#define PerlProc_geteuid() \
+# define PerlProc_geteuid() \
(*PL_Proc->pGeteuid)(PL_Proc)
-#define PerlProc_getgid() \
+# define PerlProc_getgid() \
(*PL_Proc->pGetgid)(PL_Proc)
-#define PerlProc_getegid() \
+# define PerlProc_getegid() \
(*PL_Proc->pGetegid)(PL_Proc)
-#define PerlProc_getlogin() \
+# define PerlProc_getlogin() \
(*PL_Proc->pGetlogin)(PL_Proc)
-#define PerlProc_kill(i, a) \
+# define PerlProc_kill(i, a) \
(*PL_Proc->pKill)(PL_Proc, (i), (a))
-#define PerlProc_killpg(i, a) \
+# define PerlProc_killpg(i, a) \
(*PL_Proc->pKillpg)(PL_Proc, (i), (a))
-#define PerlProc_pause() \
+# define PerlProc_pause() \
(*PL_Proc->pPauseProc)(PL_Proc)
-#define PerlProc_popen(c, m) \
+# define PerlProc_popen(c, m) \
(*PL_Proc->pPopen)(PL_Proc, (c), (m))
-#define PerlProc_popen_list(m, n, a) \
+# define PerlProc_popen_list(m, n, a) \
(*PL_Proc->pPopenList)(PL_Proc, (m), (n), (a))
-#define PerlProc_pclose(f) \
+# define PerlProc_pclose(f) \
(*PL_Proc->pPclose)(PL_Proc, (f))
-#define PerlProc_pipe(fd) \
+# define PerlProc_pipe(fd) \
(*PL_Proc->pPipe)(PL_Proc, (fd))
-#define PerlProc_setuid(u) \
+# define PerlProc_setuid(u) \
(*PL_Proc->pSetuid)(PL_Proc, (u))
-#define PerlProc_setgid(g) \
+# define PerlProc_setgid(g) \
(*PL_Proc->pSetgid)(PL_Proc, (g))
-#define PerlProc_sleep(t) \
+# define PerlProc_sleep(t) \
(*PL_Proc->pSleep)(PL_Proc, (t))
-#define PerlProc_times(t) \
+# define PerlProc_times(t) \
(*PL_Proc->pTimes)(PL_Proc, (t))
-#define PerlProc_wait(t) \
+# define PerlProc_wait(t) \
(*PL_Proc->pWait)(PL_Proc, (t))
-#define PerlProc_waitpid(p,s,f) \
+# define PerlProc_waitpid(p,s,f) \
(*PL_Proc->pWaitpid)(PL_Proc, (p), (s), (f))
-#define PerlProc_signal(n, h) \
+# define PerlProc_signal(n, h) \
(*PL_Proc->pSignal)(PL_Proc, (n), (h))
-#define PerlProc_fork() \
+# define PerlProc_fork() \
(*PL_Proc->pFork)(PL_Proc)
-#define PerlProc_getpid() \
+# define PerlProc_getpid() \
(*PL_Proc->pGetpid)(PL_Proc)
-#define PerlProc_setjmp(b, n) Sigsetjmp((b), (n))
-#define PerlProc_longjmp(b, n) Siglongjmp((b), (n))
+# define PerlProc_setjmp(b, n) Sigsetjmp((b), (n))
+# define PerlProc_longjmp(b, n) Siglongjmp((b), (n))
-#ifdef WIN32
-#define PerlProc_DynaLoad(f) \
+# ifdef WIN32
+# define PerlProc_DynaLoad(f) \
(*PL_Proc->pDynaLoader)(PL_Proc, (f))
-#define PerlProc_GetOSError(s,e) \
+# define PerlProc_GetOSError(s,e) \
(*PL_Proc->pGetOSError)(PL_Proc, (s), (e))
-#define PerlProc_spawnvp(m, c, a) \
+# define PerlProc_spawnvp(m, c, a) \
(*PL_Proc->pSpawnvp)(PL_Proc, (m), (c), (a))
-#endif
-#define PerlProc_lasthost() \
+# endif
+# define PerlProc_lasthost() \
(*PL_Proc->pLastHost)(PL_Proc)
-#define PerlProc_gettimeofday(t,z) \
+# define PerlProc_gettimeofday(t,z) \
(*PL_Proc->pGetTimeOfDay)(PL_Proc,(t),(z))
-#else /* PERL_IMPLICIT_SYS */
+#else /* ! PERL_IMPLICIT_SYS */
-#define PerlProc_abort() abort()
-#define PerlProc_crypt(c,s) crypt((c), (s))
-#define PerlProc_exit(s) exit((s))
-#define PerlProc__exit(s) _exit((s))
-#define PerlProc_execl(c,w,x,y,z) \
+# define PerlProc_abort() abort()
+# define PerlProc_crypt(c,s) crypt((c), (s))
+# define PerlProc_exit(s) exit((s))
+# define PerlProc__exit(s) _exit((s))
+# define PerlProc_execl(c,w,x,y,z) \
execl((c), (w), (x), (y), (z))
-#define PerlProc_execv(c, a) execv((c), (a))
-#define PerlProc_execvp(c, a) execvp((c), (a))
-#define PerlProc_getuid() getuid()
-#define PerlProc_geteuid() geteuid()
-#define PerlProc_getgid() getgid()
-#define PerlProc_getegid() getegid()
-#define PerlProc_getlogin() getlogin()
-#define PerlProc_kill(i, a) kill((i), (a))
-#define PerlProc_killpg(i, a) killpg((i), (a))
-#define PerlProc_pause() Pause()
-#define PerlProc_popen(c, m) my_popen((c), (m))
-#define PerlProc_popen_list(m,n,a) my_popen_list((m),(n),(a))
-#define PerlProc_pclose(f) my_pclose((f))
-#define PerlProc_pipe(fd) pipe((fd))
-#define PerlProc_setuid(u) setuid((u))
-#define PerlProc_setgid(g) setgid((g))
-#define PerlProc_sleep(t) sleep((t))
-#define PerlProc_times(t) times((t))
-#define PerlProc_wait(t) wait((t))
-#define PerlProc_waitpid(p,s,f) waitpid((p), (s), (f))
-#define PerlProc_setjmp(b, n) Sigsetjmp((b), (n))
-#define PerlProc_longjmp(b, n) Siglongjmp((b), (n))
-#define PerlProc_signal(n, h) signal((n), (h))
-#define PerlProc_fork() my_fork()
-#define PerlProc_getpid() getpid()
-#define PerlProc_gettimeofday(t,z) gettimeofday((t),(z))
-
-#ifdef WIN32
-#define PerlProc_DynaLoad(f) \
+# define PerlProc_execv(c, a) execv((c), (a))
+# define PerlProc_execvp(c, a) execvp((c), (a))
+# define PerlProc_getuid() getuid()
+# define PerlProc_geteuid() geteuid()
+# define PerlProc_getgid() getgid()
+# define PerlProc_getegid() getegid()
+# define PerlProc_getlogin() getlogin()
+# define PerlProc_kill(i, a) kill((i), (a))
+# define PerlProc_killpg(i, a) killpg((i), (a))
+# define PerlProc_pause() Pause()
+# define PerlProc_popen(c, m) my_popen((c), (m))
+# define PerlProc_popen_list(m,n,a) my_popen_list((m),(n),(a))
+# define PerlProc_pclose(f) my_pclose((f))
+# define PerlProc_pipe(fd) pipe((fd))
+# define PerlProc_setuid(u) setuid((u))
+# define PerlProc_setgid(g) setgid((g))
+# define PerlProc_sleep(t) sleep((t))
+# define PerlProc_times(t) times((t))
+# define PerlProc_wait(t) wait((t))
+# define PerlProc_waitpid(p,s,f) waitpid((p), (s), (f))
+# define PerlProc_setjmp(b, n) Sigsetjmp((b), (n))
+# define PerlProc_longjmp(b, n)Siglongjmp((b), (n))
+# define PerlProc_signal(n, h) signal((n), (h))
+# define PerlProc_fork() my_fork()
+# define PerlProc_getpid() getpid()
+# define PerlProc_gettimeofday(t,z) gettimeofday((t),(z))
+
+# ifdef WIN32
+# define PerlProc_DynaLoad(f) \
win32_dynaload((f))
-#define PerlProc_GetOSError(s,e) \
+# define PerlProc_GetOSError(s,e) \
win32_str_os_error((s), (e))
-#define PerlProc_spawnvp(m, c, a) \
+# define PerlProc_spawnvp(m, c, a) \
win32_spawnvp((m), (c), (a))
-#undef PerlProc_signal
-#define PerlProc_signal(n, h) win32_signal((n), (h))
-#endif
-#endif /* PERL_IMPLICIT_SYS */
+# undef PerlProc_signal
+# define PerlProc_signal(n, h) win32_signal((n), (h))
+# endif
+#endif /* PERL_IMPLICIT_SYS */
/*
Interface for perl socket functions
@@ -1164,280 +1142,280 @@ struct IPerlProcInfo
#if defined(PERL_IMPLICIT_SYS)
-/* PerlSock */
+/* PerlSock */
struct IPerlSock;
struct IPerlSockInfo;
-typedef u_long (*LPHtonl)(struct IPerlSock*, u_long);
-typedef u_short (*LPHtons)(struct IPerlSock*, u_short);
-typedef u_long (*LPNtohl)(struct IPerlSock*, u_long);
-typedef u_short (*LPNtohs)(struct IPerlSock*, u_short);
-typedef SOCKET (*LPAccept)(struct IPerlSock*, SOCKET,
+typedef u_long (*LPHtonl)(struct IPerlSock*, u_long);
+typedef u_short (*LPHtons)(struct IPerlSock*, u_short);
+typedef u_long (*LPNtohl)(struct IPerlSock*, u_long);
+typedef u_short (*LPNtohs)(struct IPerlSock*, u_short);
+typedef SOCKET (*LPAccept)(struct IPerlSock*, SOCKET,
struct sockaddr*, int*);
-typedef int (*LPBind)(struct IPerlSock*, SOCKET,
+typedef int (*LPBind)(struct IPerlSock*, SOCKET,
const struct sockaddr*, int);
-typedef int (*LPConnect)(struct IPerlSock*, SOCKET,
+typedef int (*LPConnect)(struct IPerlSock*, SOCKET,
const struct sockaddr*, int);
-typedef void (*LPEndhostent)(struct IPerlSock*);
-typedef void (*LPEndnetent)(struct IPerlSock*);
-typedef void (*LPEndprotoent)(struct IPerlSock*);
-typedef void (*LPEndservent)(struct IPerlSock*);
-typedef int (*LPGethostname)(struct IPerlSock*, char*, int);
-typedef int (*LPGetpeername)(struct IPerlSock*, SOCKET,
+typedef void (*LPEndhostent)(struct IPerlSock*);
+typedef void (*LPEndnetent)(struct IPerlSock*);
+typedef void (*LPEndprotoent)(struct IPerlSock*);
+typedef void (*LPEndservent)(struct IPerlSock*);
+typedef int (*LPGethostname)(struct IPerlSock*, char*, int);
+typedef int (*LPGetpeername)(struct IPerlSock*, SOCKET,
struct sockaddr*, int*);
-typedef struct hostent* (*LPGethostbyaddr)(struct IPerlSock*, const char*,
+typedef struct hostent* (*LPGethostbyaddr)(struct IPerlSock*, const char*,
int, int);
-typedef struct hostent* (*LPGethostbyname)(struct IPerlSock*, const char*);
-typedef struct hostent* (*LPGethostent)(struct IPerlSock*);
-typedef struct netent* (*LPGetnetbyaddr)(struct IPerlSock*, long, int);
-typedef struct netent* (*LPGetnetbyname)(struct IPerlSock*, const char*);
-typedef struct netent* (*LPGetnetent)(struct IPerlSock*);
+typedef struct hostent* (*LPGethostbyname)(struct IPerlSock*, const char*);
+typedef struct hostent* (*LPGethostent)(struct IPerlSock*);
+typedef struct netent* (*LPGetnetbyaddr)(struct IPerlSock*, long, int);
+typedef struct netent* (*LPGetnetbyname)(struct IPerlSock*, const char*);
+typedef struct netent* (*LPGetnetent)(struct IPerlSock*);
typedef struct protoent*(*LPGetprotobyname)(struct IPerlSock*, const char*);
typedef struct protoent*(*LPGetprotobynumber)(struct IPerlSock*, int);
typedef struct protoent*(*LPGetprotoent)(struct IPerlSock*);
-typedef struct servent* (*LPGetservbyname)(struct IPerlSock*, const char*,
+typedef struct servent* (*LPGetservbyname)(struct IPerlSock*, const char*,
const char*);
-typedef struct servent* (*LPGetservbyport)(struct IPerlSock*, int,
+typedef struct servent* (*LPGetservbyport)(struct IPerlSock*, int,
const char*);
-typedef struct servent* (*LPGetservent)(struct IPerlSock*);
-typedef int (*LPGetsockname)(struct IPerlSock*, SOCKET,
+typedef struct servent* (*LPGetservent)(struct IPerlSock*);
+typedef int (*LPGetsockname)(struct IPerlSock*, SOCKET,
struct sockaddr*, int*);
-typedef int (*LPGetsockopt)(struct IPerlSock*, SOCKET, int, int,
+typedef int (*LPGetsockopt)(struct IPerlSock*, SOCKET, int, int,
char*, int*);
-typedef unsigned long (*LPInetAddr)(struct IPerlSock*, const char*);
-typedef char* (*LPInetNtoa)(struct IPerlSock*, struct in_addr);
-typedef int (*LPListen)(struct IPerlSock*, SOCKET, int);
-typedef int (*LPRecv)(struct IPerlSock*, SOCKET, char*, int, int);
-typedef int (*LPRecvfrom)(struct IPerlSock*, SOCKET, char*, int,
+typedef unsigned long (*LPInetAddr)(struct IPerlSock*, const char*);
+typedef char* (*LPInetNtoa)(struct IPerlSock*, struct in_addr);
+typedef int (*LPListen)(struct IPerlSock*, SOCKET, int);
+typedef int (*LPRecv)(struct IPerlSock*, SOCKET, char*, int, int);
+typedef int (*LPRecvfrom)(struct IPerlSock*, SOCKET, char*, int,
int, struct sockaddr*, int*);
-typedef int (*LPSelect)(struct IPerlSock*, int, char*, char*,
+typedef int (*LPSelect)(struct IPerlSock*, int, char*, char*,
char*, const struct timeval*);
-typedef int (*LPSend)(struct IPerlSock*, SOCKET, const char*, int,
+typedef int (*LPSend)(struct IPerlSock*, SOCKET, const char*, int,
int);
-typedef int (*LPSendto)(struct IPerlSock*, SOCKET, const char*,
+typedef int (*LPSendto)(struct IPerlSock*, SOCKET, const char*,
int, int, const struct sockaddr*, int);
-typedef void (*LPSethostent)(struct IPerlSock*, int);
-typedef void (*LPSetnetent)(struct IPerlSock*, int);
-typedef void (*LPSetprotoent)(struct IPerlSock*, int);
-typedef void (*LPSetservent)(struct IPerlSock*, int);
-typedef int (*LPSetsockopt)(struct IPerlSock*, SOCKET, int, int,
+typedef void (*LPSethostent)(struct IPerlSock*, int);
+typedef void (*LPSetnetent)(struct IPerlSock*, int);
+typedef void (*LPSetprotoent)(struct IPerlSock*, int);
+typedef void (*LPSetservent)(struct IPerlSock*, int);
+typedef int (*LPSetsockopt)(struct IPerlSock*, SOCKET, int, int,
const char*, int);
-typedef int (*LPShutdown)(struct IPerlSock*, SOCKET, int);
-typedef SOCKET (*LPSocket)(struct IPerlSock*, int, int, int);
-typedef int (*LPSocketpair)(struct IPerlSock*, int, int, int,
+typedef int (*LPShutdown)(struct IPerlSock*, SOCKET, int);
+typedef SOCKET (*LPSocket)(struct IPerlSock*, int, int, int);
+typedef int (*LPSocketpair)(struct IPerlSock*, int, int, int,
int*);
-#ifdef WIN32
-typedef int (*LPClosesocket)(struct IPerlSock*, SOCKET s);
-#endif
+# ifdef WIN32
+typedef int (*LPClosesocket)(struct IPerlSock*, SOCKET s);
+# endif
struct IPerlSock
{
- LPHtonl pHtonl;
- LPHtons pHtons;
- LPNtohl pNtohl;
- LPNtohs pNtohs;
- LPAccept pAccept;
- LPBind pBind;
- LPConnect pConnect;
- LPEndhostent pEndhostent;
- LPEndnetent pEndnetent;
- LPEndprotoent pEndprotoent;
- LPEndservent pEndservent;
- LPGethostname pGethostname;
- LPGetpeername pGetpeername;
- LPGethostbyaddr pGethostbyaddr;
- LPGethostbyname pGethostbyname;
- LPGethostent pGethostent;
- LPGetnetbyaddr pGetnetbyaddr;
- LPGetnetbyname pGetnetbyname;
- LPGetnetent pGetnetent;
- LPGetprotobyname pGetprotobyname;
- LPGetprotobynumber pGetprotobynumber;
- LPGetprotoent pGetprotoent;
- LPGetservbyname pGetservbyname;
- LPGetservbyport pGetservbyport;
- LPGetservent pGetservent;
- LPGetsockname pGetsockname;
- LPGetsockopt pGetsockopt;
- LPInetAddr pInetAddr;
- LPInetNtoa pInetNtoa;
- LPListen pListen;
- LPRecv pRecv;
- LPRecvfrom pRecvfrom;
- LPSelect pSelect;
- LPSend pSend;
- LPSendto pSendto;
- LPSethostent pSethostent;
- LPSetnetent pSetnetent;
- LPSetprotoent pSetprotoent;
- LPSetservent pSetservent;
- LPSetsockopt pSetsockopt;
- LPShutdown pShutdown;
- LPSocket pSocket;
- LPSocketpair pSocketpair;
-#ifdef WIN32
- LPClosesocket pClosesocket;
-#endif
+ LPHtonl pHtonl;
+ LPHtons pHtons;
+ LPNtohl pNtohl;
+ LPNtohs pNtohs;
+ LPAccept pAccept;
+ LPBind pBind;
+ LPConnect pConnect;
+ LPEndhostent pEndhostent;
+ LPEndnetent pEndnetent;
+ LPEndprotoent pEndprotoent;
+ LPEndservent pEndservent;
+ LPGethostname pGethostname;
+ LPGetpeername pGetpeername;
+ LPGethostbyaddr pGethostbyaddr;
+ LPGethostbyname pGethostbyname;
+ LPGethostent pGethostent;
+ LPGetnetbyaddr pGetnetbyaddr;
+ LPGetnetbyname pGetnetbyname;
+ LPGetnetent pGetnetent;
+ LPGetprotobyname pGetprotobyname;
+ LPGetprotobynumber pGetprotobynumber;
+ LPGetprotoent pGetprotoent;
+ LPGetservbyname pGetservbyname;
+ LPGetservbyport pGetservbyport;
+ LPGetservent pGetservent;
+ LPGetsockname pGetsockname;
+ LPGetsockopt pGetsockopt;
+ LPInetAddr pInetAddr;
+ LPInetNtoa pInetNtoa;
+ LPListen pListen;
+ LPRecv pRecv;
+ LPRecvfrom pRecvfrom;
+ LPSelect pSelect;
+ LPSend pSend;
+ LPSendto pSendto;
+ LPSethostent pSethostent;
+ LPSetnetent pSetnetent;
+ LPSetprotoent pSetprotoent;
+ LPSetservent pSetservent;
+ LPSetsockopt pSetsockopt;
+ LPShutdown pShutdown;
+ LPSocket pSocket;
+ LPSocketpair pSocketpair;
+# ifdef WIN32
+ LPClosesocket pClosesocket;
+# endif
};
struct IPerlSockInfo
{
- unsigned long nCount; /* number of entries expected */
- struct IPerlSock perlSockList;
+ unsigned long nCount; /* number of entries expected */
+ struct IPerlSock perlSockList;
};
-#define PerlSock_htonl(x) \
+# define PerlSock_htonl(x) \
(*PL_Sock->pHtonl)(PL_Sock, x)
-#define PerlSock_htons(x) \
+# define PerlSock_htons(x) \
(*PL_Sock->pHtons)(PL_Sock, x)
-#define PerlSock_ntohl(x) \
+# define PerlSock_ntohl(x) \
(*PL_Sock->pNtohl)(PL_Sock, x)
-#define PerlSock_ntohs(x) \
+# define PerlSock_ntohs(x) \
(*PL_Sock->pNtohs)(PL_Sock, x)
-#define PerlSock_accept(s, a, l) \
+# define PerlSock_accept(s, a, l) \
(*PL_Sock->pAccept)(PL_Sock, s, a, l)
-#define PerlSock_bind(s, n, l) \
+# define PerlSock_bind(s, n, l) \
(*PL_Sock->pBind)(PL_Sock, s, n, l)
-#define PerlSock_connect(s, n, l) \
+# define PerlSock_connect(s, n, l) \
(*PL_Sock->pConnect)(PL_Sock, s, n, l)
-#define PerlSock_endhostent() \
+# define PerlSock_endhostent() \
(*PL_Sock->pEndhostent)(PL_Sock)
-#define PerlSock_endnetent() \
+# define PerlSock_endnetent() \
(*PL_Sock->pEndnetent)(PL_Sock)
-#define PerlSock_endprotoent() \
+# define PerlSock_endprotoent() \
(*PL_Sock->pEndprotoent)(PL_Sock)
-#define PerlSock_endservent() \
+# define PerlSock_endservent() \
(*PL_Sock->pEndservent)(PL_Sock)
-#define PerlSock_gethostbyaddr(a, l, t) \
+# define PerlSock_gethostbyaddr(a, l, t) \
(*PL_Sock->pGethostbyaddr)(PL_Sock, a, l, t)
-#define PerlSock_gethostbyname(n) \
+# define PerlSock_gethostbyname(n) \
(*PL_Sock->pGethostbyname)(PL_Sock, n)
-#define PerlSock_gethostent() \
+# define PerlSock_gethostent() \
(*PL_Sock->pGethostent)(PL_Sock)
-#define PerlSock_gethostname(n, l) \
+# define PerlSock_gethostname(n, l) \
(*PL_Sock->pGethostname)(PL_Sock, n, l)
-#define PerlSock_getnetbyaddr(n, t) \
+# define PerlSock_getnetbyaddr(n, t) \
(*PL_Sock->pGetnetbyaddr)(PL_Sock, n, t)
-#define PerlSock_getnetbyname(c) \
+# define PerlSock_getnetbyname(c) \
(*PL_Sock->pGetnetbyname)(PL_Sock, c)
-#define PerlSock_getnetent() \
+# define PerlSock_getnetent() \
(*PL_Sock->pGetnetent)(PL_Sock)
-#define PerlSock_getpeername(s, n, l) \
+# define PerlSock_getpeername(s, n, l) \
(*PL_Sock->pGetpeername)(PL_Sock, s, n, l)
-#define PerlSock_getprotobyname(n) \
+# define PerlSock_getprotobyname(n) \
(*PL_Sock->pGetprotobyname)(PL_Sock, n)
-#define PerlSock_getprotobynumber(n) \
+# define PerlSock_getprotobynumber(n) \
(*PL_Sock->pGetprotobynumber)(PL_Sock, n)
-#define PerlSock_getprotoent() \
+# define PerlSock_getprotoent() \
(*PL_Sock->pGetprotoent)(PL_Sock)
-#define PerlSock_getservbyname(n, p) \
+# define PerlSock_getservbyname(n, p) \
(*PL_Sock->pGetservbyname)(PL_Sock, n, p)
-#define PerlSock_getservbyport(port, p) \
+# define PerlSock_getservbyport(port, p) \
(*PL_Sock->pGetservbyport)(PL_Sock, port, p)
-#define PerlSock_getservent() \
+# define PerlSock_getservent() \
(*PL_Sock->pGetservent)(PL_Sock)
-#define PerlSock_getsockname(s, n, l) \
+# define PerlSock_getsockname(s, n, l) \
(*PL_Sock->pGetsockname)(PL_Sock, s, n, l)
-#define PerlSock_getsockopt(s,l,n,v,i) \
+# define PerlSock_getsockopt(s,l,n,v,i) \
(*PL_Sock->pGetsockopt)(PL_Sock, s, l, n, v, i)
-#define PerlSock_inet_addr(c) \
+# define PerlSock_inet_addr(c) \
(*PL_Sock->pInetAddr)(PL_Sock, c)
-#define PerlSock_inet_ntoa(i) \
+# define PerlSock_inet_ntoa(i) \
(*PL_Sock->pInetNtoa)(PL_Sock, i)
-#define PerlSock_listen(s, b) \
+# define PerlSock_listen(s, b) \
(*PL_Sock->pListen)(PL_Sock, s, b)
-#define PerlSock_recv(s, b, l, f) \
+# define PerlSock_recv(s, b, l, f) \
(*PL_Sock->pRecv)(PL_Sock, s, b, l, f)
-#define PerlSock_recvfrom(s,b,l,f,from,fromlen) \
+# define PerlSock_recvfrom(s,b,l,f,from,fromlen) \
(*PL_Sock->pRecvfrom)(PL_Sock, s, b, l, f, from, fromlen)
-#define PerlSock_select(n, r, w, e, t) \
+# define PerlSock_select(n, r, w, e, t) \
(*PL_Sock->pSelect)(PL_Sock, n, (char*)r, (char*)w, (char*)e, t)
-#define PerlSock_send(s, b, l, f) \
+# define PerlSock_send(s, b, l, f) \
(*PL_Sock->pSend)(PL_Sock, s, b, l, f)
-#define PerlSock_sendto(s, b, l, f, t, tlen) \
+# define PerlSock_sendto(s, b, l, f, t, tlen) \
(*PL_Sock->pSendto)(PL_Sock, s, b, l, f, t, tlen)
-#define PerlSock_sethostent(f) \
+# define PerlSock_sethostent(f) \
(*PL_Sock->pSethostent)(PL_Sock, f)
-#define PerlSock_setnetent(f) \
+# define PerlSock_setnetent(f) \
(*PL_Sock->pSetnetent)(PL_Sock, f)
-#define PerlSock_setprotoent(f) \
+# define PerlSock_setprotoent(f) \
(*PL_Sock->pSetprotoent)(PL_Sock, f)
-#define PerlSock_setservent(f) \
+# define PerlSock_setservent(f) \
(*PL_Sock->pSetservent)(PL_Sock, f)
-#define PerlSock_setsockopt(s, l, n, v, len) \
+# define PerlSock_setsockopt(s, l, n, v, len) \
(*PL_Sock->pSetsockopt)(PL_Sock, s, l, n, v, len)
-#define PerlSock_shutdown(s, h) \
+# define PerlSock_shutdown(s, h) \
(*PL_Sock->pShutdown)(PL_Sock, s, h)
-#define PerlSock_socket(a, t, p) \
+# define PerlSock_socket(a, t, p) \
(*PL_Sock->pSocket)(PL_Sock, a, t, p)
-#define PerlSock_socketpair(a, t, p, f) \
+# define PerlSock_socketpair(a, t, p, f) \
(*PL_Sock->pSocketpair)(PL_Sock, a, t, p, f)
-#ifdef WIN32
-#define PerlSock_closesocket(s) \
+# ifdef WIN32
+# define PerlSock_closesocket(s) \
(*PL_Sock->pClosesocket)(PL_Sock, s)
-#endif
+# endif
-#else /* ! PERL_IMPLICIT_SYS below */
-
-#define PerlSock_htonl(x) htonl(x)
-#define PerlSock_htons(x) htons(x)
-#define PerlSock_ntohl(x) ntohl(x)
-#define PerlSock_ntohs(x) ntohs(x)
-#define PerlSock_accept(s, a, l) accept(s, a, l)
-#define PerlSock_bind(s, n, l) bind(s, n, l)
-#define PerlSock_connect(s, n, l) connect(s, n, l)
-
-#define PerlSock_gethostbyaddr(a, l, t) gethostbyaddr(a, l, t)
-#define PerlSock_gethostbyname(n) gethostbyname(n)
-#define PerlSock_gethostent gethostent
-#define PerlSock_endhostent endhostent
-#define PerlSock_gethostname(n, l) gethostname(n, l)
-
-#define PerlSock_getnetbyaddr(n, t) getnetbyaddr(n, t)
-#define PerlSock_getnetbyname(n) getnetbyname(n)
-#define PerlSock_getnetent getnetent
-#define PerlSock_endnetent endnetent
-#define PerlSock_getpeername(s, n, l) getpeername(s, n, l)
-
-#define PerlSock_getprotobyname(n) getprotobyname(n)
-#define PerlSock_getprotobynumber(n) getprotobynumber(n)
-#define PerlSock_getprotoent getprotoent
-#define PerlSock_endprotoent endprotoent
-
-#define PerlSock_getservbyname(n, p) getservbyname(n, p)
-#define PerlSock_getservbyport(port, p) getservbyport(port, p)
-#define PerlSock_getservent getservent
-#define PerlSock_endservent endservent
-
-#define PerlSock_getsockname(s, n, l) getsockname(s, n, l)
-#define PerlSock_getsockopt(s,l,n,v,i) getsockopt(s, l, n, v, i)
-#define PerlSock_inet_addr(c) inet_addr(c)
-#define PerlSock_inet_ntoa(i) inet_ntoa(i)
-#define PerlSock_listen(s, b) listen(s, b)
-#define PerlSock_recv(s, b, l, f) recv(s, b, l, f)
-#define PerlSock_recvfrom(s, b, l, f, from, fromlen) \
+#else /* ! PERL_IMPLICIT_SYS below */
+
+# define PerlSock_htonl(x) htonl(x)
+# define PerlSock_htons(x) htons(x)
+# define PerlSock_ntohl(x) ntohl(x)
+# define PerlSock_ntohs(x) ntohs(x)
+# define PerlSock_accept(s, a, l) accept(s, a, l)
+# define PerlSock_bind(s, n, l) bind(s, n, l)
+# define PerlSock_connect(s, n, l) connect(s, n, l)
+
+# define PerlSock_gethostbyaddr(a, l, t) gethostbyaddr(a, l, t)
+# define PerlSock_gethostbyname(n) gethostbyname(n)
+# define PerlSock_gethostent gethostent
+# define PerlSock_endhostent endhostent
+# define PerlSock_gethostname(n, l) gethostname(n, l)
+
+# define PerlSock_getnetbyaddr(n, t) getnetbyaddr(n, t)
+# define PerlSock_getnetbyname(n) getnetbyname(n)
+# define PerlSock_getnetent getnetent
+# define PerlSock_endnetent endnetent
+# define PerlSock_getpeername(s, n, l) getpeername(s, n, l)
+
+# define PerlSock_getprotobyname(n) getprotobyname(n)
+# define PerlSock_getprotobynumber(n) getprotobynumber(n)
+# define PerlSock_getprotoent getprotoent
+# define PerlSock_endprotoent endprotoent
+
+# define PerlSock_getservbyname(n, p) getservbyname(n, p)
+# define PerlSock_getservbyport(port, p) getservbyport(port, p)
+# define PerlSock_getservent getservent
+# define PerlSock_endservent endservent
+
+# define PerlSock_getsockname(s, n, l) getsockname(s, n, l)
+# define PerlSock_getsockopt(s,l,n,v,i) getsockopt(s, l, n, v, i)
+# define PerlSock_inet_addr(c) inet_addr(c)
+# define PerlSock_inet_ntoa(i) inet_ntoa(i)
+# define PerlSock_listen(s, b) listen(s, b)
+# define PerlSock_recv(s, b, l, f) recv(s, b, l, f)
+# define PerlSock_recvfrom(s, b, l, f, from, fromlen) \
recvfrom(s, b, l, f, from, fromlen)
-#define PerlSock_select(n, r, w, e, t) select(n, r, w, e, t)
-#define PerlSock_send(s, b, l, f) send(s, b, l, f)
-#define PerlSock_sendto(s, b, l, f, t, tlen) \
+# define PerlSock_select(n, r, w, e, t) select(n, r, w, e, t)
+# define PerlSock_send(s, b, l, f) send(s, b, l, f)
+# define PerlSock_sendto(s, b, l, f, t, tlen) \
sendto(s, b, l, f, t, tlen)
-#define PerlSock_sethostent(f) sethostent(f)
-#define PerlSock_setnetent(f) setnetent(f)
-#define PerlSock_setprotoent(f) setprotoent(f)
-#define PerlSock_setservent(f) setservent(f)
-#define PerlSock_setsockopt(s, l, n, v, len) \
+# define PerlSock_sethostent(f) sethostent(f)
+# define PerlSock_setnetent(f) setnetent(f)
+# define PerlSock_setprotoent(f) setprotoent(f)
+# define PerlSock_setservent(f) setservent(f)
+# define PerlSock_setsockopt(s, l, n, v, len) \
setsockopt(s, l, n, v, len)
-#define PerlSock_shutdown(s, h) shutdown(s, h)
-#define PerlSock_socket(a, t, p) socket(a, t, p)
-#define PerlSock_socketpair(a, t, p, f) socketpair(a, t, p, f)
+# define PerlSock_shutdown(s, h) shutdown(s, h)
+# define PerlSock_socket(a, t, p) socket(a, t, p)
+# define PerlSock_socketpair(a, t, p, f) socketpair(a, t, p, f)
-#ifdef WIN32
-#define PerlSock_closesocket(s) closesocket(s)
-#endif
+# ifdef WIN32
+# define PerlSock_closesocket(s) closesocket(s)
+# endif
-#endif /* PERL_IMPLICIT_SYS */
+#endif /* PERL_IMPLICIT_SYS */
-#endif /* __Inc__IPerl___ */
+#endif /* __Inc__IPerl___ */
/*
* ex: set ts=8 sts=4 sw=4 et:
diff --git a/Master/tlpkg/tlperl/lib/CORE/keywords.h b/Master/tlpkg/tlperl/lib/CORE/keywords.h
index 82694905cb8..feae6f6dce7 100644
--- a/Master/tlpkg/tlperl/lib/CORE/keywords.h
+++ b/Master/tlpkg/tlperl/lib/CORE/keywords.h
@@ -20,258 +20,264 @@
#define KEY___DATA__ 4
#define KEY___END__ 5
#define KEY___SUB__ 6
-#define KEY_AUTOLOAD 7
-#define KEY_BEGIN 8
-#define KEY_UNITCHECK 9
-#define KEY_DESTROY 10
-#define KEY_END 11
-#define KEY_INIT 12
-#define KEY_CHECK 13
-#define KEY_abs 14
-#define KEY_accept 15
-#define KEY_alarm 16
-#define KEY_and 17
-#define KEY_atan2 18
-#define KEY_bind 19
-#define KEY_binmode 20
-#define KEY_bless 21
-#define KEY_break 22
-#define KEY_caller 23
-#define KEY_catch 24
-#define KEY_chdir 25
-#define KEY_chmod 26
-#define KEY_chomp 27
-#define KEY_chop 28
-#define KEY_chown 29
-#define KEY_chr 30
-#define KEY_chroot 31
-#define KEY_close 32
-#define KEY_closedir 33
-#define KEY_cmp 34
-#define KEY_connect 35
-#define KEY_continue 36
-#define KEY_cos 37
-#define KEY_crypt 38
-#define KEY_dbmclose 39
-#define KEY_dbmopen 40
-#define KEY_default 41
-#define KEY_defined 42
-#define KEY_delete 43
-#define KEY_die 44
-#define KEY_do 45
-#define KEY_dump 46
-#define KEY_each 47
-#define KEY_else 48
-#define KEY_elsif 49
-#define KEY_endgrent 50
-#define KEY_endhostent 51
-#define KEY_endnetent 52
-#define KEY_endprotoent 53
-#define KEY_endpwent 54
-#define KEY_endservent 55
-#define KEY_eof 56
-#define KEY_eq 57
-#define KEY_eval 58
-#define KEY_evalbytes 59
-#define KEY_exec 60
-#define KEY_exists 61
-#define KEY_exit 62
-#define KEY_exp 63
-#define KEY_fc 64
-#define KEY_fcntl 65
-#define KEY_fileno 66
-#define KEY_flock 67
-#define KEY_for 68
-#define KEY_foreach 69
-#define KEY_fork 70
-#define KEY_format 71
-#define KEY_formline 72
-#define KEY_ge 73
-#define KEY_getc 74
-#define KEY_getgrent 75
-#define KEY_getgrgid 76
-#define KEY_getgrnam 77
-#define KEY_gethostbyaddr 78
-#define KEY_gethostbyname 79
-#define KEY_gethostent 80
-#define KEY_getlogin 81
-#define KEY_getnetbyaddr 82
-#define KEY_getnetbyname 83
-#define KEY_getnetent 84
-#define KEY_getpeername 85
-#define KEY_getpgrp 86
-#define KEY_getppid 87
-#define KEY_getpriority 88
-#define KEY_getprotobyname 89
-#define KEY_getprotobynumber 90
-#define KEY_getprotoent 91
-#define KEY_getpwent 92
-#define KEY_getpwnam 93
-#define KEY_getpwuid 94
-#define KEY_getservbyname 95
-#define KEY_getservbyport 96
-#define KEY_getservent 97
-#define KEY_getsockname 98
-#define KEY_getsockopt 99
-#define KEY_given 100
-#define KEY_glob 101
-#define KEY_gmtime 102
-#define KEY_goto 103
-#define KEY_grep 104
-#define KEY_gt 105
-#define KEY_hex 106
-#define KEY_if 107
-#define KEY_index 108
-#define KEY_int 109
-#define KEY_ioctl 110
-#define KEY_isa 111
-#define KEY_join 112
-#define KEY_keys 113
-#define KEY_kill 114
-#define KEY_last 115
-#define KEY_lc 116
-#define KEY_lcfirst 117
-#define KEY_le 118
-#define KEY_length 119
-#define KEY_link 120
-#define KEY_listen 121
-#define KEY_local 122
-#define KEY_localtime 123
-#define KEY_lock 124
-#define KEY_log 125
-#define KEY_lstat 126
-#define KEY_lt 127
-#define KEY_m 128
-#define KEY_map 129
-#define KEY_mkdir 130
-#define KEY_msgctl 131
-#define KEY_msgget 132
-#define KEY_msgrcv 133
-#define KEY_msgsnd 134
-#define KEY_my 135
-#define KEY_ne 136
-#define KEY_next 137
-#define KEY_no 138
-#define KEY_not 139
-#define KEY_oct 140
-#define KEY_open 141
-#define KEY_opendir 142
-#define KEY_or 143
-#define KEY_ord 144
-#define KEY_our 145
-#define KEY_pack 146
-#define KEY_package 147
-#define KEY_pipe 148
-#define KEY_pop 149
-#define KEY_pos 150
-#define KEY_print 151
-#define KEY_printf 152
-#define KEY_prototype 153
-#define KEY_push 154
-#define KEY_q 155
-#define KEY_qq 156
-#define KEY_qr 157
-#define KEY_quotemeta 158
-#define KEY_qw 159
-#define KEY_qx 160
-#define KEY_rand 161
-#define KEY_read 162
-#define KEY_readdir 163
-#define KEY_readline 164
-#define KEY_readlink 165
-#define KEY_readpipe 166
-#define KEY_recv 167
-#define KEY_redo 168
-#define KEY_ref 169
-#define KEY_rename 170
-#define KEY_require 171
-#define KEY_reset 172
-#define KEY_return 173
-#define KEY_reverse 174
-#define KEY_rewinddir 175
-#define KEY_rindex 176
-#define KEY_rmdir 177
-#define KEY_s 178
-#define KEY_say 179
-#define KEY_scalar 180
-#define KEY_seek 181
-#define KEY_seekdir 182
-#define KEY_select 183
-#define KEY_semctl 184
-#define KEY_semget 185
-#define KEY_semop 186
-#define KEY_send 187
-#define KEY_setgrent 188
-#define KEY_sethostent 189
-#define KEY_setnetent 190
-#define KEY_setpgrp 191
-#define KEY_setpriority 192
-#define KEY_setprotoent 193
-#define KEY_setpwent 194
-#define KEY_setservent 195
-#define KEY_setsockopt 196
-#define KEY_shift 197
-#define KEY_shmctl 198
-#define KEY_shmget 199
-#define KEY_shmread 200
-#define KEY_shmwrite 201
-#define KEY_shutdown 202
-#define KEY_sin 203
-#define KEY_sleep 204
-#define KEY_socket 205
-#define KEY_socketpair 206
-#define KEY_sort 207
-#define KEY_splice 208
-#define KEY_split 209
-#define KEY_sprintf 210
-#define KEY_sqrt 211
-#define KEY_srand 212
-#define KEY_stat 213
-#define KEY_state 214
-#define KEY_study 215
-#define KEY_sub 216
-#define KEY_substr 217
-#define KEY_symlink 218
-#define KEY_syscall 219
-#define KEY_sysopen 220
-#define KEY_sysread 221
-#define KEY_sysseek 222
-#define KEY_system 223
-#define KEY_syswrite 224
-#define KEY_tell 225
-#define KEY_telldir 226
-#define KEY_tie 227
-#define KEY_tied 228
-#define KEY_time 229
-#define KEY_times 230
-#define KEY_tr 231
-#define KEY_try 232
-#define KEY_truncate 233
-#define KEY_uc 234
-#define KEY_ucfirst 235
-#define KEY_umask 236
-#define KEY_undef 237
-#define KEY_unless 238
-#define KEY_unlink 239
-#define KEY_unpack 240
-#define KEY_unshift 241
-#define KEY_untie 242
-#define KEY_until 243
-#define KEY_use 244
-#define KEY_utime 245
-#define KEY_values 246
-#define KEY_vec 247
-#define KEY_wait 248
-#define KEY_waitpid 249
-#define KEY_wantarray 250
-#define KEY_warn 251
-#define KEY_when 252
-#define KEY_while 253
-#define KEY_write 254
-#define KEY_x 255
-#define KEY_xor 256
-#define KEY_y 257
+#define KEY_ADJUST 7
+#define KEY_AUTOLOAD 8
+#define KEY_BEGIN 9
+#define KEY_UNITCHECK 10
+#define KEY_DESTROY 11
+#define KEY_END 12
+#define KEY_INIT 13
+#define KEY_CHECK 14
+#define KEY_abs 15
+#define KEY_accept 16
+#define KEY_alarm 17
+#define KEY_and 18
+#define KEY_atan2 19
+#define KEY_bind 20
+#define KEY_binmode 21
+#define KEY_bless 22
+#define KEY_break 23
+#define KEY_caller 24
+#define KEY_catch 25
+#define KEY_chdir 26
+#define KEY_chmod 27
+#define KEY_chomp 28
+#define KEY_chop 29
+#define KEY_chown 30
+#define KEY_chr 31
+#define KEY_chroot 32
+#define KEY_class 33
+#define KEY_close 34
+#define KEY_closedir 35
+#define KEY_cmp 36
+#define KEY_connect 37
+#define KEY_continue 38
+#define KEY_cos 39
+#define KEY_crypt 40
+#define KEY_dbmclose 41
+#define KEY_dbmopen 42
+#define KEY_default 43
+#define KEY_defer 44
+#define KEY_defined 45
+#define KEY_delete 46
+#define KEY_die 47
+#define KEY_do 48
+#define KEY_dump 49
+#define KEY_each 50
+#define KEY_else 51
+#define KEY_elsif 52
+#define KEY_endgrent 53
+#define KEY_endhostent 54
+#define KEY_endnetent 55
+#define KEY_endprotoent 56
+#define KEY_endpwent 57
+#define KEY_endservent 58
+#define KEY_eof 59
+#define KEY_eq 60
+#define KEY_eval 61
+#define KEY_evalbytes 62
+#define KEY_exec 63
+#define KEY_exists 64
+#define KEY_exit 65
+#define KEY_exp 66
+#define KEY_fc 67
+#define KEY_fcntl 68
+#define KEY_field 69
+#define KEY_fileno 70
+#define KEY_finally 71
+#define KEY_flock 72
+#define KEY_for 73
+#define KEY_foreach 74
+#define KEY_fork 75
+#define KEY_format 76
+#define KEY_formline 77
+#define KEY_ge 78
+#define KEY_getc 79
+#define KEY_getgrent 80
+#define KEY_getgrgid 81
+#define KEY_getgrnam 82
+#define KEY_gethostbyaddr 83
+#define KEY_gethostbyname 84
+#define KEY_gethostent 85
+#define KEY_getlogin 86
+#define KEY_getnetbyaddr 87
+#define KEY_getnetbyname 88
+#define KEY_getnetent 89
+#define KEY_getpeername 90
+#define KEY_getpgrp 91
+#define KEY_getppid 92
+#define KEY_getpriority 93
+#define KEY_getprotobyname 94
+#define KEY_getprotobynumber 95
+#define KEY_getprotoent 96
+#define KEY_getpwent 97
+#define KEY_getpwnam 98
+#define KEY_getpwuid 99
+#define KEY_getservbyname 100
+#define KEY_getservbyport 101
+#define KEY_getservent 102
+#define KEY_getsockname 103
+#define KEY_getsockopt 104
+#define KEY_given 105
+#define KEY_glob 106
+#define KEY_gmtime 107
+#define KEY_goto 108
+#define KEY_grep 109
+#define KEY_gt 110
+#define KEY_hex 111
+#define KEY_if 112
+#define KEY_index 113
+#define KEY_int 114
+#define KEY_ioctl 115
+#define KEY_isa 116
+#define KEY_join 117
+#define KEY_keys 118
+#define KEY_kill 119
+#define KEY_last 120
+#define KEY_lc 121
+#define KEY_lcfirst 122
+#define KEY_le 123
+#define KEY_length 124
+#define KEY_link 125
+#define KEY_listen 126
+#define KEY_local 127
+#define KEY_localtime 128
+#define KEY_lock 129
+#define KEY_log 130
+#define KEY_lstat 131
+#define KEY_lt 132
+#define KEY_m 133
+#define KEY_map 134
+#define KEY_method 135
+#define KEY_mkdir 136
+#define KEY_msgctl 137
+#define KEY_msgget 138
+#define KEY_msgrcv 139
+#define KEY_msgsnd 140
+#define KEY_my 141
+#define KEY_ne 142
+#define KEY_next 143
+#define KEY_no 144
+#define KEY_not 145
+#define KEY_oct 146
+#define KEY_open 147
+#define KEY_opendir 148
+#define KEY_or 149
+#define KEY_ord 150
+#define KEY_our 151
+#define KEY_pack 152
+#define KEY_package 153
+#define KEY_pipe 154
+#define KEY_pop 155
+#define KEY_pos 156
+#define KEY_print 157
+#define KEY_printf 158
+#define KEY_prototype 159
+#define KEY_push 160
+#define KEY_q 161
+#define KEY_qq 162
+#define KEY_qr 163
+#define KEY_quotemeta 164
+#define KEY_qw 165
+#define KEY_qx 166
+#define KEY_rand 167
+#define KEY_read 168
+#define KEY_readdir 169
+#define KEY_readline 170
+#define KEY_readlink 171
+#define KEY_readpipe 172
+#define KEY_recv 173
+#define KEY_redo 174
+#define KEY_ref 175
+#define KEY_rename 176
+#define KEY_require 177
+#define KEY_reset 178
+#define KEY_return 179
+#define KEY_reverse 180
+#define KEY_rewinddir 181
+#define KEY_rindex 182
+#define KEY_rmdir 183
+#define KEY_s 184
+#define KEY_say 185
+#define KEY_scalar 186
+#define KEY_seek 187
+#define KEY_seekdir 188
+#define KEY_select 189
+#define KEY_semctl 190
+#define KEY_semget 191
+#define KEY_semop 192
+#define KEY_send 193
+#define KEY_setgrent 194
+#define KEY_sethostent 195
+#define KEY_setnetent 196
+#define KEY_setpgrp 197
+#define KEY_setpriority 198
+#define KEY_setprotoent 199
+#define KEY_setpwent 200
+#define KEY_setservent 201
+#define KEY_setsockopt 202
+#define KEY_shift 203
+#define KEY_shmctl 204
+#define KEY_shmget 205
+#define KEY_shmread 206
+#define KEY_shmwrite 207
+#define KEY_shutdown 208
+#define KEY_sin 209
+#define KEY_sleep 210
+#define KEY_socket 211
+#define KEY_socketpair 212
+#define KEY_sort 213
+#define KEY_splice 214
+#define KEY_split 215
+#define KEY_sprintf 216
+#define KEY_sqrt 217
+#define KEY_srand 218
+#define KEY_stat 219
+#define KEY_state 220
+#define KEY_study 221
+#define KEY_sub 222
+#define KEY_substr 223
+#define KEY_symlink 224
+#define KEY_syscall 225
+#define KEY_sysopen 226
+#define KEY_sysread 227
+#define KEY_sysseek 228
+#define KEY_system 229
+#define KEY_syswrite 230
+#define KEY_tell 231
+#define KEY_telldir 232
+#define KEY_tie 233
+#define KEY_tied 234
+#define KEY_time 235
+#define KEY_times 236
+#define KEY_tr 237
+#define KEY_try 238
+#define KEY_truncate 239
+#define KEY_uc 240
+#define KEY_ucfirst 241
+#define KEY_umask 242
+#define KEY_undef 243
+#define KEY_unless 244
+#define KEY_unlink 245
+#define KEY_unpack 246
+#define KEY_unshift 247
+#define KEY_untie 248
+#define KEY_until 249
+#define KEY_use 250
+#define KEY_utime 251
+#define KEY_values 252
+#define KEY_vec 253
+#define KEY_wait 254
+#define KEY_waitpid 255
+#define KEY_wantarray 256
+#define KEY_warn 257
+#define KEY_when 258
+#define KEY_while 259
+#define KEY_write 260
+#define KEY_x 261
+#define KEY_xor 262
+#define KEY_y 263
/* Generated from:
- * 3a4f2004642b00b871c01cbdc018f6ca5ead6b4e0b2b184120c60b0b62a229dd regen/keywords.pl
+ * eb67e851da14ede1aad67aec4a387fa250c1345407fad0a02988d2d8d3cc27f2 regen/keywords.pl
* ex: set ro: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h b/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h
index 83469a0ba17..01d77639171 100644
--- a/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h
+++ b/Master/tlpkg/tlperl/lib/CORE/l1_char_class_tab.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
* This file is built by regen/mk_PL_charclass.pl from Unicode::UCD.
* Any changes made here will be lost!
@@ -8,262 +8,262 @@
* in the comment*/
#if 'A' == 65 /* ASCII/Latin1 */
-/* U+00 NUL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+01 SOH */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+02 STX */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+03 ETX */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+04 EOT */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+05 ENQ */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+06 ACK */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+07 BEL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+08 BS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+09 HT */ (1U<<_CC_ASCII)|(1U<<_CC_BLANK)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
-/* U+0A LF */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* U+0B VT */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* U+0C FF */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* U+0D CR */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* U+0E SO */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+0F SI */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+10 DLE */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+11 DC1 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+12 DC2 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+13 DC3 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+14 DC4 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+15 NAK */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+16 SYN */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+17 ETB */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+18 CAN */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+19 EOM */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+1A SUB */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+1B ESC */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+1C FS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+1D GS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+1E RS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+1F US */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+20 SP */ (1U<<_CC_ASCII)|(1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
-/* U+21 '!' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+22 '"' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+23 '#' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+24 '$' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+25 '%' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+26 '&' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+27 "'" */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+28 '(' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+29 ')' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+2A '*' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+2B '+' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+2C ',' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+2D '-' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+2E '.' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+2F '/' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+30 '0' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_BINDIGIT)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+31 '1' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_BINDIGIT)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+32 '2' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+33 '3' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+34 '4' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+35 '5' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+36 '6' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+37 '7' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+38 '8' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+39 '9' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+3A ':' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+3B ';' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+3C '<' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+3D '=' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+3E '>' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+3F '?' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+40 '@' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+41 'A' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+42 'B' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+43 'C' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+44 'D' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+45 'E' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+46 'F' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+47 'G' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+48 'H' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+49 'I' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+4A 'J' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+4B 'K' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+4C 'L' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+4D 'M' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+4E 'N' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+4F 'O' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+50 'P' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+51 'Q' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+52 'R' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+53 'S' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+54 'T' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+55 'U' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+56 'V' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+57 'W' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+58 'X' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+59 'Y' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+5A 'Z' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+5B '[' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+5C '\' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+5D ']' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+5E '^' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+5F '_' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_WORDCHAR),
-/* U+60 '`' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+61 'a' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+62 'b' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+63 'c' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+64 'd' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+65 'e' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+66 'f' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* U+67 'g' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+68 'h' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+69 'i' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+6A 'j' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+6B 'k' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+6C 'l' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+6D 'm' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+6E 'n' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+6F 'o' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+70 'p' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+71 'q' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+72 'r' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+73 's' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+74 't' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+75 'u' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+76 'v' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+77 'w' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+78 'x' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+79 'y' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+7A 'z' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+7B '{' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+7C '|' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+7D '}' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+7E '~' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+7F DEL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+80 PAD */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+81 HOP */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+82 BPH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+83 NBH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+84 IND */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+85 NEL */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* U+86 SSA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+87 ESA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+88 HTS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+89 HTJ */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+8A VTS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+8B PLD */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+8C PLU */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+8D RI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+8E SS2 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+8F SS3 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+90 DCS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+91 PU1 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+92 PU2 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+93 STS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+94 CCH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+95 MW */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+96 SPA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+97 EPA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+98 SOS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+99 SGC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+9A SCI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+9B CSI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+9C ST */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+9D OSC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+9E PM */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+9F APC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
-/* U+A1 INVERTED '!' */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+A2 CENT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* U+A3 POUND */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* U+A4 CURRENCY */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* U+A5 YEN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* U+A6 BROKEN BAR */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* U+A7 SECTION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+A8 DIAERESIS */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* U+A9 COPYRIGHT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* U+AA FEMININE ORDINAL */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+AB LEFT-POINTING DOUBLE ANGLE QUOTE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+AC NOT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* U+AD SOFT HYPHEN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* U+AE REGISTERED */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* U+AF MACRON */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* U+B0 DEGREE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* U+B1 PLUS-MINUS */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* U+B2 SUPERSCRIPT 2 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* U+B3 SUPERSCRIPT 3 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* U+B4 ACUTE ACCENT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* U+B5 MICRO */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+B6 PILCROW */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+B7 MIDDLE DOT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT),
-/* U+B8 CEDILLA */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* U+B9 SUPERSCRIPT 1 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* U+BA MASCULINE ORDINAL */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+BB RIGHT-POINTING DOUBLE ANGLE QUOTE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+BC 1/4 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* U+BD 1/2 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* U+BE 3/4 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* U+BF INVERTED '?' */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+C0 A with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+C1 A with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+C2 A with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+C3 A with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+C4 A with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+C5 A with RING */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+C6 AE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+C7 C with CEDILLA */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+C8 E with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+C9 E with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+CA E with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+CB E with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+CC I with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+CD I with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+CE I with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+CF I with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+D0 ETH */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+D1 N with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+D2 O with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+D3 O with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+D4 O with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+D5 O with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+D6 O with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+D7 MULTIPLICATION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* U+D8 O with '/' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+D9 U with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+DA U with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+DB U with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+DC U with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+DD Y with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+DE THORN */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* U+DF sharp s */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+E0 a with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+E1 a with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+E2 a with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+E3 a with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+E4 a with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+E5 a with ring */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+E6 ae */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+E7 c with cedilla */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+E8 e with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+E9 e with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+EA e with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+EB e with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+EC i with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+ED i with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+EE i with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+EF i with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+F0 eth */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+F1 n with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+F2 o with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+F3 o with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+F4 o with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+F5 o with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+F6 o with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+F7 DIVISION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* U+F8 o with '/' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+F9 u with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+FA u with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+FB u with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+FC u with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+FD y with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+FE thorn */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* U+FF y with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)
+/* U+00 NUL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+01 SOH */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+02 STX */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+03 ETX */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+04 EOT */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+05 ENQ */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+06 ACK */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+07 BEL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+08 BS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+09 HT */ (1U<<CC_ASCII_)|(1U<<CC_BLANK_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
+/* U+0A LF */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* U+0B VT */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* U+0C FF */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* U+0D CR */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* U+0E SO */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+0F SI */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+10 DLE */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+11 DC1 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+12 DC2 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+13 DC3 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+14 DC4 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+15 NAK */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+16 SYN */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+17 ETB */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+18 CAN */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+19 EOM */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+1A SUB */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+1B ESC */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+1C FS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+1D GS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+1E RS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+1F US */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+20 SP */ (1U<<CC_ASCII_)|(1U<<CC_BLANK_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
+/* U+21 '!' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+22 '"' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+23 '#' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+24 '$' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+25 '%' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+26 '&' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+27 "'" */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+28 '(' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+29 ')' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+2A '*' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+2B '+' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+2C ',' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+2D '-' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+2E '.' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+2F '/' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+30 '0' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_BINDIGIT_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+31 '1' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_BINDIGIT_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+32 '2' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+33 '3' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+34 '4' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+35 '5' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+36 '6' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+37 '7' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+38 '8' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+39 '9' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+3A ':' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+3B ';' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+3C '<' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+3D '=' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+3E '>' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+3F '?' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+40 '@' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+41 'A' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+42 'B' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+43 'C' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+44 'D' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+45 'E' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+46 'F' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+47 'G' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+48 'H' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+49 'I' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+4A 'J' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+4B 'K' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+4C 'L' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+4D 'M' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+4E 'N' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+4F 'O' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+50 'P' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+51 'Q' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+52 'R' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+53 'S' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+54 'T' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+55 'U' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+56 'V' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+57 'W' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+58 'X' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+59 'Y' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+5A 'Z' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+5B '[' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+5C '\' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+5D ']' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+5E '^' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+5F '_' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_WORDCHAR_),
+/* U+60 '`' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+61 'a' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+62 'b' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+63 'c' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+64 'd' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+65 'e' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+66 'f' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* U+67 'g' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+68 'h' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+69 'i' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+6A 'j' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+6B 'k' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+6C 'l' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+6D 'm' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+6E 'n' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+6F 'o' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+70 'p' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+71 'q' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+72 'r' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+73 's' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+74 't' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+75 'u' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+76 'v' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+77 'w' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+78 'x' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+79 'y' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+7A 'z' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+7B '{' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+7C '|' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+7D '}' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+7E '~' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+7F DEL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+80 PAD */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+81 HOP */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+82 BPH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+83 NBH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+84 IND */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+85 NEL */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* U+86 SSA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+87 ESA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+88 HTS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+89 HTJ */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+8A VTS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+8B PLD */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+8C PLU */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+8D RI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+8E SS2 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+8F SS3 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+90 DCS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+91 PU1 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+92 PU2 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+93 STS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+94 CCH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+95 MW */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+96 SPA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+97 EPA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+98 SOS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+99 SGC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+9A SCI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+9B CSI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+9C ST */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+9D OSC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+9E PM */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+9F APC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+A0 NBSP */ (1U<<CC_BLANK_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
+/* U+A1 INVERTED '!' */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+A2 CENT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* U+A3 POUND */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* U+A4 CURRENCY */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* U+A5 YEN */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* U+A6 BROKEN BAR */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* U+A7 SECTION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+A8 DIAERESIS */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* U+A9 COPYRIGHT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* U+AA FEMININE ORDINAL */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+AB LEFT-POINTING DOUBLE ANGLE QUOTE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+AC NOT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* U+AD SOFT HYPHEN */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* U+AE REGISTERED */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* U+AF MACRON */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* U+B0 DEGREE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* U+B1 PLUS-MINUS */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* U+B2 SUPERSCRIPT 2 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* U+B3 SUPERSCRIPT 3 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* U+B4 ACUTE ACCENT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* U+B5 MICRO */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+B6 PILCROW */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+B7 MIDDLE DOT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_),
+/* U+B8 CEDILLA */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* U+B9 SUPERSCRIPT 1 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* U+BA MASCULINE ORDINAL */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+BB RIGHT-POINTING DOUBLE ANGLE QUOTE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+BC 1/4 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* U+BD 1/2 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* U+BE 3/4 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* U+BF INVERTED '?' */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+C0 A with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+C1 A with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+C2 A with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+C3 A with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+C4 A with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+C5 A with RING */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+C6 AE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+C7 C with CEDILLA */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+C8 E with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+C9 E with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+CA E with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+CB E with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+CC I with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+CD I with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+CE I with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+CF I with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+D0 ETH */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+D1 N with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+D2 O with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+D3 O with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+D4 O with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+D5 O with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+D6 O with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+D7 MULTIPLICATION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* U+D8 O with '/' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+D9 U with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+DA U with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+DB U with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+DC U with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+DD Y with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+DE THORN */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* U+DF sharp s */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+E0 a with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+E1 a with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+E2 a with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+E3 a with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+E4 a with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+E5 a with ring */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+E6 ae */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+E7 c with cedilla */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+E8 e with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+E9 e with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+EA e with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+EB e with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+EC i with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+ED i with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+EE i with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+EF i with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+F0 eth */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+F1 n with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+F2 o with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+F3 o with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+F4 o with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+F5 o with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+F6 o with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+F7 DIVISION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* U+F8 o with '/' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+F9 u with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+FA u with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+FB u with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+FC u with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+FD y with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+FE thorn */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* U+FF y with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)
#endif /* ASCII/Latin1 */
@@ -271,262 +271,262 @@
&& '\\' == 224 && '[' == 173 && ']' == 189 && '{' == 192 && '}' == 208 \
&& '^' == 95 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 21
-/* U+00 NUL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+01 SOH */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+02 STX */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+03 ETX */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x04 U+9C ST */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x05 U+09 HT */ (1U<<_CC_ASCII)|(1U<<_CC_BLANK)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
-/* 0x06 U+86 SSA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x07 U+7F DEL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x08 U+97 EPA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x09 U+8D RI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x0A U+8E SS2 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+0B VT */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* U+0C FF */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* U+0D CR */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* U+0E SO */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+0F SI */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+10 DLE */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+11 DC1 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+12 DC2 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+13 DC3 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x14 U+9D OSC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x15 U+0A LF */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* 0x16 U+08 BS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x17 U+87 ESA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+18 CAN */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+19 EOM */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x1A U+92 PU2 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x1B U+8F SS3 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+1C FS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+1D GS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+1E RS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+1F US */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x20 U+80 PAD */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x21 U+81 HOP */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x22 U+82 BPH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x23 U+83 NBH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x24 U+84 IND */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x25 U+85 NEL */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* 0x26 U+17 ETB */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x27 U+1B ESC */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x28 U+88 HTS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x29 U+89 HTJ */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x2A U+8A VTS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x2B U+8B PLD */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x2C U+8C PLU */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x2D U+05 ENQ */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x2E U+06 ACK */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x2F U+07 BEL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x30 U+90 DCS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x31 U+91 PU1 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x32 U+16 SYN */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x33 U+93 STS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x34 U+94 CCH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x35 U+95 MW */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x36 U+96 SPA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x37 U+04 EOT */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x38 U+98 SOS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x39 U+99 SGC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x3A U+9A SCI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x3B U+9B CSI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x3C U+14 DC4 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x3D U+15 NAK */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x3E U+9E PM */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x3F U+1A SUB */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x40 U+20 SP */ (1U<<_CC_ASCII)|(1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
-/* 0x41 U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
-/* 0x42 U+E2 I8=A1 a with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x43 U+E4 I8=A2 a with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x44 U+E0 I8=A3 a with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x45 U+E1 I8=A4 a with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x46 U+E3 I8=A5 a with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x47 U+E5 I8=A6 a with ring */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x48 U+E7 I8=A7 c with cedilla */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x49 U+F1 I8=A8 n with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x4A U+A2 I8=A9 CENT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0x4B U+2E '.' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x4C U+3C '<' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x4D U+28 '(' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x4E U+2B '+' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x4F U+7C '|' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x50 U+26 '&' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x51 U+E9 I8=AA e with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x52 U+EA I8=AB e with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x53 U+EB I8=AC e with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x54 U+E8 I8=AD e with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x55 U+ED I8=AE i with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x56 U+EE I8=AF i with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x57 U+EF I8=B0 i with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x58 U+EC I8=B1 i with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x59 U+DF I8=B2 sharp s */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x5A U+21 '!' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x5B U+24 '$' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x5C U+2A '*' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x5D U+29 ')' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x5E U+3B ';' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x5F U+5E '^' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x60 U+2D '-' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x61 U+2F '/' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x62 U+C2 I8=B3 A with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x63 U+C4 I8=B4 A with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x64 U+C0 I8=B5 A with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x65 U+C1 I8=B6 A with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x66 U+C3 I8=B7 A with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x67 U+C5 I8=B8 A with RING */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x68 U+C7 I8=B9 C with CEDILLA */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x69 U+D1 I8=BA N with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x6A U+A6 I8=BB BROKEN BAR */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0x6B U+2C ',' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x6C U+25 '%' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x6D U+5F '_' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_WORDCHAR),
-/* 0x6E U+3E '>' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x6F U+3F '?' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x70 U+F8 I8=BC o with '/' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x71 U+C9 I8=BD E with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x72 U+CA I8=BE E with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x73 U+CB I8=BF E with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x74 U+C8 I8=C0 E with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x75 U+CD I8=C1 I with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x76 U+CE I8=C2 I with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x77 U+CF I8=C3 I with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x78 U+CC I8=C4 I with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x79 U+60 '`' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x7A U+3A ':' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x7B U+23 '#' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x7C U+40 '@' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x7D U+27 "'" */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x7E U+3D '=' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x7F U+22 '"' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x80 U+D8 I8=C5 O with '/' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x81 U+61 'a' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0x82 U+62 'b' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0x83 U+63 'c' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0x84 U+64 'd' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0x85 U+65 'e' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0x86 U+66 'f' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0x87 U+67 'g' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x88 U+68 'h' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x89 U+69 'i' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x8A U+AB I8=C6 LEFT-POINTING DOUBLE ANGLE QUOTE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x8B U+BB I8=C7 RIGHT-POINTING DOUBLE ANGLE QUOTE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x8C U+F0 I8=C8 eth */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x8D U+FD I8=C9 y with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x8E U+FE I8=CA thorn */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x8F U+B1 I8=CB PLUS-MINUS */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0x90 U+B0 I8=CC DEGREE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0x91 U+6A 'j' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x92 U+6B 'k' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x93 U+6C 'l' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x94 U+6D 'm' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x95 U+6E 'n' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x96 U+6F 'o' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x97 U+70 'p' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x98 U+71 'q' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x99 U+72 'r' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x9A U+AA I8=CD FEMININE ORDINAL */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x9B U+BA I8=CE MASCULINE ORDINAL */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x9C U+E6 I8=CF ae */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x9D U+B8 I8=D0 CEDILLA */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0x9E U+C6 I8=D1 AE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x9F U+A4 I8=D2 CURRENCY */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xA0 U+B5 I8=D3 MICRO */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA1 U+7E '~' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xA2 U+73 's' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA3 U+74 't' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA4 U+75 'u' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA5 U+76 'v' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA6 U+77 'w' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA7 U+78 'x' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA8 U+79 'y' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA9 U+7A 'z' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xAA U+A1 I8=D4 INVERTED '!' */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xAB U+BF I8=D5 INVERTED '?' */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xAC U+D0 I8=D6 ETH */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xAD U+5B '[' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xAE U+DE I8=D7 THORN */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xAF U+AE I8=D8 REGISTERED */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xB0 U+AC I8=D9 NOT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xB1 U+A3 I8=DA POUND */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xB2 U+A5 I8=DB YEN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xB3 U+B7 I8=DC MIDDLE DOT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT),
-/* 0xB4 U+A9 I8=DD COPYRIGHT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xB5 U+A7 I8=DE SECTION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+B6 I8=DF PILCROW */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xB7 U+BC I8=E0 1/4 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0xB8 U+BD I8=E1 1/2 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0xB9 U+BE I8=E2 3/4 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0xBA U+DD I8=E3 Y with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xBB U+A8 I8=E4 DIAERESIS */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0xBC U+AF I8=E5 MACRON */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0xBD U+5D ']' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xBE U+B4 I8=E6 ACUTE ACCENT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0xBF U+D7 I8=E7 MULTIPLICATION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xC0 U+7B '{' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xC1 U+41 'A' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xC2 U+42 'B' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xC3 U+43 'C' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xC4 U+44 'D' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xC5 U+45 'E' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xC6 U+46 'F' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xC7 U+47 'G' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xC8 U+48 'H' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xC9 U+49 'I' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xCA U+AD I8=E8 SOFT HYPHEN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xCB U+F4 I8=E9 o with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xCC U+F6 I8=EA o with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xCD U+F2 I8=EB o with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xCE U+F3 I8=EC o with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xCF U+F5 I8=ED o with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xD0 U+7D '}' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xD1 U+4A 'J' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD2 U+4B 'K' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD3 U+4C 'L' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD4 U+4D 'M' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD5 U+4E 'N' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD6 U+4F 'O' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD7 U+50 'P' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD8 U+51 'Q' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD9 U+52 'R' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xDA U+B9 I8=EE SUPERSCRIPT 1 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0xDB U+FB I8=EF u with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xDC U+FC I8=F0 u with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xDD U+F9 I8=F1 u with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xDE U+FA I8=F2 u with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xDF U+FF I8=F3 y with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xE0 U+5C '\' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xE1 U+F7 I8=F4 DIVISION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xE2 U+53 'S' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xE3 U+54 'T' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xE4 U+55 'U' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xE5 U+56 'V' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xE6 U+57 'W' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xE7 U+58 'X' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xE8 U+59 'Y' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xE9 U+5A 'Z' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xEA U+B2 I8=F5 SUPERSCRIPT 2 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xEB U+D4 I8=F6 O with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xEC U+D6 I8=F7 O with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xED U+D2 I8=F8 O with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xEE U+D3 I8=F9 O with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xEF U+D5 I8=FA O with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xF0 U+30 '0' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_BINDIGIT)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF1 U+31 '1' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_BINDIGIT)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF2 U+32 '2' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF3 U+33 '3' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF4 U+34 '4' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF5 U+35 '5' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF6 U+36 '6' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF7 U+37 '7' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF8 U+38 '8' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF9 U+39 '9' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xFA U+B3 I8=FB SUPERSCRIPT 3 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xFB U+DB I8=FC U with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xFC U+DC I8=FD U with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xFD U+D9 I8=FE U with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xFE U+DA I8=FF U with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xFF U+9F APC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA)
+/* U+00 NUL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+01 SOH */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+02 STX */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+03 ETX */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x04 U+9C ST */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x05 U+09 HT */ (1U<<CC_ASCII_)|(1U<<CC_BLANK_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
+/* 0x06 U+86 SSA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x07 U+7F DEL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x08 U+97 EPA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x09 U+8D RI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x0A U+8E SS2 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+0B VT */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* U+0C FF */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* U+0D CR */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* U+0E SO */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+0F SI */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+10 DLE */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+11 DC1 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+12 DC2 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+13 DC3 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x14 U+9D OSC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x15 U+0A LF */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* 0x16 U+08 BS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x17 U+87 ESA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+18 CAN */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+19 EOM */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x1A U+92 PU2 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x1B U+8F SS3 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+1C FS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+1D GS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+1E RS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+1F US */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x20 U+80 PAD */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x21 U+81 HOP */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x22 U+82 BPH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x23 U+83 NBH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x24 U+84 IND */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x25 U+85 NEL */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* 0x26 U+17 ETB */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x27 U+1B ESC */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x28 U+88 HTS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x29 U+89 HTJ */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x2A U+8A VTS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x2B U+8B PLD */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x2C U+8C PLU */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x2D U+05 ENQ */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x2E U+06 ACK */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x2F U+07 BEL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x30 U+90 DCS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x31 U+91 PU1 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x32 U+16 SYN */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x33 U+93 STS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x34 U+94 CCH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x35 U+95 MW */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x36 U+96 SPA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x37 U+04 EOT */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x38 U+98 SOS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x39 U+99 SGC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x3A U+9A SCI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x3B U+9B CSI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x3C U+14 DC4 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x3D U+15 NAK */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x3E U+9E PM */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x3F U+1A SUB */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x40 U+20 SP */ (1U<<CC_ASCII_)|(1U<<CC_BLANK_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
+/* 0x41 U+A0 NBSP */ (1U<<CC_BLANK_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
+/* 0x42 U+E2 I8=A1 a with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x43 U+E4 I8=A2 a with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x44 U+E0 I8=A3 a with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x45 U+E1 I8=A4 a with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x46 U+E3 I8=A5 a with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x47 U+E5 I8=A6 a with ring */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x48 U+E7 I8=A7 c with cedilla */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x49 U+F1 I8=A8 n with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x4A U+A2 I8=A9 CENT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0x4B U+2E '.' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x4C U+3C '<' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x4D U+28 '(' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x4E U+2B '+' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x4F U+7C '|' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x50 U+26 '&' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x51 U+E9 I8=AA e with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x52 U+EA I8=AB e with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x53 U+EB I8=AC e with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x54 U+E8 I8=AD e with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x55 U+ED I8=AE i with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x56 U+EE I8=AF i with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x57 U+EF I8=B0 i with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x58 U+EC I8=B1 i with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x59 U+DF I8=B2 sharp s */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x5A U+21 '!' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x5B U+24 '$' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x5C U+2A '*' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x5D U+29 ')' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x5E U+3B ';' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x5F U+5E '^' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x60 U+2D '-' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x61 U+2F '/' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x62 U+C2 I8=B3 A with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x63 U+C4 I8=B4 A with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x64 U+C0 I8=B5 A with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x65 U+C1 I8=B6 A with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x66 U+C3 I8=B7 A with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x67 U+C5 I8=B8 A with RING */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x68 U+C7 I8=B9 C with CEDILLA */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x69 U+D1 I8=BA N with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x6A U+A6 I8=BB BROKEN BAR */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0x6B U+2C ',' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x6C U+25 '%' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x6D U+5F '_' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_WORDCHAR_),
+/* 0x6E U+3E '>' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x6F U+3F '?' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x70 U+F8 I8=BC o with '/' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x71 U+C9 I8=BD E with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x72 U+CA I8=BE E with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x73 U+CB I8=BF E with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x74 U+C8 I8=C0 E with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x75 U+CD I8=C1 I with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x76 U+CE I8=C2 I with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x77 U+CF I8=C3 I with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x78 U+CC I8=C4 I with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x79 U+60 '`' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x7A U+3A ':' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x7B U+23 '#' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x7C U+40 '@' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x7D U+27 "'" */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x7E U+3D '=' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x7F U+22 '"' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x80 U+D8 I8=C5 O with '/' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x81 U+61 'a' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0x82 U+62 'b' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0x83 U+63 'c' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0x84 U+64 'd' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0x85 U+65 'e' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0x86 U+66 'f' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0x87 U+67 'g' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x88 U+68 'h' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x89 U+69 'i' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x8A U+AB I8=C6 LEFT-POINTING DOUBLE ANGLE QUOTE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x8B U+BB I8=C7 RIGHT-POINTING DOUBLE ANGLE QUOTE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x8C U+F0 I8=C8 eth */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x8D U+FD I8=C9 y with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x8E U+FE I8=CA thorn */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x8F U+B1 I8=CB PLUS-MINUS */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0x90 U+B0 I8=CC DEGREE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0x91 U+6A 'j' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x92 U+6B 'k' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x93 U+6C 'l' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x94 U+6D 'm' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x95 U+6E 'n' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x96 U+6F 'o' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x97 U+70 'p' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x98 U+71 'q' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x99 U+72 'r' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x9A U+AA I8=CD FEMININE ORDINAL */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x9B U+BA I8=CE MASCULINE ORDINAL */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x9C U+E6 I8=CF ae */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x9D U+B8 I8=D0 CEDILLA */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0x9E U+C6 I8=D1 AE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x9F U+A4 I8=D2 CURRENCY */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xA0 U+B5 I8=D3 MICRO */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA1 U+7E '~' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xA2 U+73 's' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA3 U+74 't' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA4 U+75 'u' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA5 U+76 'v' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA6 U+77 'w' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA7 U+78 'x' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA8 U+79 'y' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA9 U+7A 'z' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xAA U+A1 I8=D4 INVERTED '!' */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xAB U+BF I8=D5 INVERTED '?' */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xAC U+D0 I8=D6 ETH */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xAD U+5B '[' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xAE U+DE I8=D7 THORN */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xAF U+AE I8=D8 REGISTERED */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xB0 U+AC I8=D9 NOT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xB1 U+A3 I8=DA POUND */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xB2 U+A5 I8=DB YEN */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xB3 U+B7 I8=DC MIDDLE DOT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_),
+/* 0xB4 U+A9 I8=DD COPYRIGHT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xB5 U+A7 I8=DE SECTION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+B6 I8=DF PILCROW */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xB7 U+BC I8=E0 1/4 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xB8 U+BD I8=E1 1/2 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xB9 U+BE I8=E2 3/4 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xBA U+DD I8=E3 Y with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xBB U+A8 I8=E4 DIAERESIS */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xBC U+AF I8=E5 MACRON */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xBD U+5D ']' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xBE U+B4 I8=E6 ACUTE ACCENT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xBF U+D7 I8=E7 MULTIPLICATION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xC0 U+7B '{' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xC1 U+41 'A' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xC2 U+42 'B' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xC3 U+43 'C' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xC4 U+44 'D' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xC5 U+45 'E' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xC6 U+46 'F' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xC7 U+47 'G' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xC8 U+48 'H' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xC9 U+49 'I' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xCA U+AD I8=E8 SOFT HYPHEN */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xCB U+F4 I8=E9 o with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xCC U+F6 I8=EA o with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xCD U+F2 I8=EB o with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xCE U+F3 I8=EC o with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xCF U+F5 I8=ED o with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xD0 U+7D '}' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xD1 U+4A 'J' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD2 U+4B 'K' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD3 U+4C 'L' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD4 U+4D 'M' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD5 U+4E 'N' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD6 U+4F 'O' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD7 U+50 'P' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD8 U+51 'Q' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD9 U+52 'R' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xDA U+B9 I8=EE SUPERSCRIPT 1 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xDB U+FB I8=EF u with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xDC U+FC I8=F0 u with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xDD U+F9 I8=F1 u with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xDE U+FA I8=F2 u with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xDF U+FF I8=F3 y with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xE0 U+5C '\' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xE1 U+F7 I8=F4 DIVISION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xE2 U+53 'S' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xE3 U+54 'T' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xE4 U+55 'U' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xE5 U+56 'V' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xE6 U+57 'W' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xE7 U+58 'X' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xE8 U+59 'Y' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xE9 U+5A 'Z' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xEA U+B2 I8=F5 SUPERSCRIPT 2 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xEB U+D4 I8=F6 O with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xEC U+D6 I8=F7 O with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xED U+D2 I8=F8 O with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xEE U+D3 I8=F9 O with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xEF U+D5 I8=FA O with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xF0 U+30 '0' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_BINDIGIT_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF1 U+31 '1' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_BINDIGIT_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF2 U+32 '2' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF3 U+33 '3' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF4 U+34 '4' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF5 U+35 '5' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF6 U+36 '6' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF7 U+37 '7' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF8 U+38 '8' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF9 U+39 '9' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xFA U+B3 I8=FB SUPERSCRIPT 3 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xFB U+DB I8=FC U with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xFC U+DC I8=FD U with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xFD U+D9 I8=FE U with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xFE U+DA I8=FF U with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xFF U+9F APC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)
#endif /* EBCDIC 1047 */
@@ -534,263 +534,263 @@
&& '\\' == 224 && '[' == 186 && ']' == 187 && '{' == 192 && '}' == 208 \
&& '^' == 176 && '~' == 161 && '!' == 90 && '#' == 123 && '|' == 79 \
&& '$' == 91 && '@' == 124 && '`' == 121 && '\n' == 37
-/* U+00 NUL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+01 SOH */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+02 STX */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+03 ETX */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x04 U+9C ST */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x05 U+09 HT */ (1U<<_CC_ASCII)|(1U<<_CC_BLANK)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
-/* 0x06 U+86 SSA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x07 U+7F DEL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x08 U+97 EPA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x09 U+8D RI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x0A U+8E SS2 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+0B VT */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* U+0C FF */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* U+0D CR */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* U+0E SO */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+0F SI */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+10 DLE */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+11 DC1 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+12 DC2 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+13 DC3 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x14 U+9D OSC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x15 U+85 NEL */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* 0x16 U+08 BS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x17 U+87 ESA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+18 CAN */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+19 EOM */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x1A U+92 PU2 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x1B U+8F SS3 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+1C FS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+1D GS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+1E RS */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* U+1F US */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x20 U+80 PAD */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x21 U+81 HOP */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x22 U+82 BPH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x23 U+83 NBH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x24 U+84 IND */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x25 U+0A LF */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE)|(1U<<_CC_VERTSPACE),
-/* 0x26 U+17 ETB */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x27 U+1B ESC */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x28 U+88 HTS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x29 U+89 HTJ */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x2A U+8A VTS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x2B U+8B PLD */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x2C U+8C PLU */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x2D U+05 ENQ */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x2E U+06 ACK */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x2F U+07 BEL */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_MNEMONIC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x30 U+90 DCS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x31 U+91 PU1 */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x32 U+16 SYN */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x33 U+93 STS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x34 U+94 CCH */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x35 U+95 MW */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x36 U+96 SPA */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x37 U+04 EOT */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x38 U+98 SOS */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x39 U+99 SGC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x3A U+9A SCI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x3B U+9B CSI */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x3C U+14 DC4 */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x3D U+15 NAK */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x3E U+9E PM */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x3F U+1A SUB */ (1U<<_CC_ASCII)|(1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA),
-/* 0x40 U+20 SP */ (1U<<_CC_ASCII)|(1U<<_CC_BLANK)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
-/* 0x41 U+A0 NBSP */ (1U<<_CC_BLANK)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_SPACE),
-/* 0x42 U+E2 I8=A1 a with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x43 U+E4 I8=A2 a with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x44 U+E0 I8=A3 a with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x45 U+E1 I8=A4 a with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x46 U+E3 I8=A5 a with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x47 U+E5 I8=A6 a with ring */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x48 U+E7 I8=A7 c with cedilla */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x49 U+F1 I8=A8 n with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x4A U+A2 I8=A9 CENT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0x4B U+2E '.' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x4C U+3C '<' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x4D U+28 '(' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x4E U+2B '+' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x4F U+7C '|' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x50 U+26 '&' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x51 U+E9 I8=AA e with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x52 U+EA I8=AB e with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x53 U+EB I8=AC e with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x54 U+E8 I8=AD e with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x55 U+ED I8=AE i with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x56 U+EE I8=AF i with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x57 U+EF I8=B0 i with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x58 U+EC I8=B1 i with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x59 U+DF I8=B2 sharp s */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x5A U+21 '!' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x5B U+24 '$' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x5C U+2A '*' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x5D U+29 ')' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x5E U+3B ';' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x5F U+AC I8=B3 NOT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0x60 U+2D '-' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x61 U+2F '/' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x62 U+C2 I8=B4 A with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x63 U+C4 I8=B5 A with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x64 U+C0 I8=B6 A with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x65 U+C1 I8=B7 A with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x66 U+C3 I8=B8 A with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x67 U+C5 I8=B9 A with RING */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x68 U+C7 I8=BA C with CEDILLA */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x69 U+D1 I8=BB N with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x6A U+A6 I8=BC BROKEN BAR */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0x6B U+2C ',' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x6C U+25 '%' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x6D U+5F '_' */ (1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_WORDCHAR),
-/* 0x6E U+3E '>' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x6F U+3F '?' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x70 U+F8 I8=BD o with '/' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x71 U+C9 I8=BE E with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x72 U+CA I8=BF E with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x73 U+CB I8=C0 E with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x74 U+C8 I8=C1 E with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x75 U+CD I8=C2 I with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x76 U+CE I8=C3 I with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x77 U+CF I8=C4 I with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x78 U+CC I8=C5 I with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x79 U+60 '`' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x7A U+3A ':' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x7B U+23 '#' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x7C U+40 '@' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x7D U+27 "'" */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x7E U+3D '=' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x7F U+22 '"' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x80 U+D8 I8=C6 O with '/' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x81 U+61 'a' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0x82 U+62 'b' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0x83 U+63 'c' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0x84 U+64 'd' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0x85 U+65 'e' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0x86 U+66 'f' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0x87 U+67 'g' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x88 U+68 'h' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x89 U+69 'i' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x8A U+AB I8=C7 LEFT-POINTING DOUBLE ANGLE QUOTE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x8B U+BB I8=C8 RIGHT-POINTING DOUBLE ANGLE QUOTE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0x8C U+F0 I8=C9 eth */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x8D U+FD I8=CA y with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x8E U+FE I8=CB thorn */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x8F U+B1 I8=CC PLUS-MINUS */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0x90 U+B0 I8=CD DEGREE */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0x91 U+6A 'j' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x92 U+6B 'k' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x93 U+6C 'l' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x94 U+6D 'm' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x95 U+6E 'n' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x96 U+6F 'o' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x97 U+70 'p' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x98 U+71 'q' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x99 U+72 'r' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x9A U+AA I8=CE FEMININE ORDINAL */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x9B U+BA I8=CF MASCULINE ORDINAL */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x9C U+E6 I8=D0 ae */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0x9D U+B8 I8=D1 CEDILLA */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0x9E U+C6 I8=D2 AE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0x9F U+A4 I8=D3 CURRENCY */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xA0 U+B5 I8=D4 MICRO */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA1 U+7E '~' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xA2 U+73 's' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA3 U+74 't' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA4 U+75 'u' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA5 U+76 'v' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA6 U+77 'w' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA7 U+78 'x' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA8 U+79 'y' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xA9 U+7A 'z' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xAA U+A1 I8=D5 INVERTED '!' */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xAB U+BF I8=D6 INVERTED '?' */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xAC U+D0 I8=D7 ETH */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xAD U+DD I8=D8 Y with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xAE U+DE I8=D9 THORN */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xAF U+AE I8=DA REGISTERED */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xB0 U+5E '^' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xB1 U+A3 I8=DB POUND */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xB2 U+A5 I8=DC YEN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xB3 U+B7 I8=DD MIDDLE DOT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT),
-/* 0xB4 U+A9 I8=DE COPYRIGHT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xB5 U+A7 I8=DF SECTION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* U+B6 I8=E0 PILCROW */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xB7 U+BC I8=E1 1/4 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0xB8 U+BD I8=E2 1/2 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0xB9 U+BE I8=E3 3/4 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0xBA U+5B '[' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xBB U+5D ']' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xBC U+AF I8=E4 MACRON */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0xBD U+A8 I8=E5 DIAERESIS */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0xBE U+B4 I8=E6 ACUTE ACCENT */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0xBF U+D7 I8=E7 MULTIPLICATION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xC0 U+7B '{' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xC1 U+41 'A' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xC2 U+42 'B' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xC3 U+43 'C' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xC4 U+44 'D' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xC5 U+45 'E' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xC6 U+46 'F' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xC7 U+47 'G' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xC8 U+48 'H' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xC9 U+49 'I' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xCA U+AD I8=E8 SOFT HYPHEN */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA),
-/* 0xCB U+F4 I8=E9 o with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xCC U+F6 I8=EA o with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xCD U+F2 I8=EB o with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xCE U+F3 I8=EC o with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xCF U+F5 I8=ED o with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xD0 U+7D '}' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xD1 U+4A 'J' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD2 U+4B 'K' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD3 U+4C 'L' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD4 U+4D 'M' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD5 U+4E 'N' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD6 U+4F 'O' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD7 U+50 'P' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD8 U+51 'Q' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xD9 U+52 'R' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xDA U+B9 I8=EE SUPERSCRIPT 1 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT),
-/* 0xDB U+FB I8=EF u with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xDC U+FC I8=F0 u with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR),
-/* 0xDD U+F9 I8=F1 u with grave */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xDE U+FA I8=F2 u with acute */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xDF U+FF I8=F3 y with diaeresis */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_LOWER)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xE0 U+5C '\' */ (1U<<_CC_ASCII)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_PUNCT)|(1U<<_CC_QUOTEMETA),
-/* 0xE1 U+F7 I8=F4 DIVISION */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_QUOTEMETA)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xE2 U+53 'S' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NONLATIN1_SIMPLE_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xE3 U+54 'T' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xE4 U+55 'U' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xE5 U+56 'V' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xE6 U+57 'W' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xE7 U+58 'X' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xE8 U+59 'Y' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_NONLATIN1_FOLD)|(1U<<_CC_NON_FINAL_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xE9 U+5A 'Z' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR),
-/* 0xEA U+B2 I8=F5 SUPERSCRIPT 2 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xEB U+D4 I8=F6 O with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xEC U+D6 I8=F7 O with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xED U+D2 I8=F8 O with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xEE U+D3 I8=F9 O with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xEF U+D5 I8=FA O with '~' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xF0 U+30 '0' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_BINDIGIT)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF1 U+31 '1' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_BINDIGIT)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF2 U+32 '2' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF3 U+33 '3' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF4 U+34 '4' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF5 U+35 '5' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF6 U+36 '6' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF7 U+37 '7' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_OCTDIGIT)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF8 U+38 '8' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xF9 U+39 '9' */ (1U<<_CC_ALPHANUMERIC)|(1U<<_CC_ASCII)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_DIGIT)|(1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_WORDCHAR)|(1U<<_CC_XDIGIT),
-/* 0xFA U+B3 I8=FB SUPERSCRIPT 3 */ (1U<<_CC_GRAPH)|(1U<<_CC_PRINT)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xFB U+DB I8=FC U with '^' */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xFC U+DC I8=FD U with DIAERESIS */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xFD U+D9 I8=FE U with GRAVE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xFE U+DA I8=FF U with ACUTE */ (1U<<_CC_ALPHA)|(1U<<_CC_ALPHANUMERIC)|(1U<<_CC_CASED)|(1U<<_CC_CHARNAME_CONT)|(1U<<_CC_GRAPH)|(1U<<_CC_IDFIRST)|(1U<<_CC_IS_IN_SOME_FOLD)|(1U<<_CC_PRINT)|(1U<<_CC_UPPER)|(1U<<_CC_WORDCHAR)|(1U<<_CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE),
-/* 0xFF U+9F APC */ (1U<<_CC_CNTRL)|(1U<<_CC_QUOTEMETA)
+/* U+00 NUL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+01 SOH */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+02 STX */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+03 ETX */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x04 U+9C ST */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x05 U+09 HT */ (1U<<CC_ASCII_)|(1U<<CC_BLANK_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
+/* 0x06 U+86 SSA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x07 U+7F DEL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x08 U+97 EPA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x09 U+8D RI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x0A U+8E SS2 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+0B VT */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* U+0C FF */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* U+0D CR */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* U+0E SO */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+0F SI */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+10 DLE */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+11 DC1 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+12 DC2 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+13 DC3 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x14 U+9D OSC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x15 U+85 NEL */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* 0x16 U+08 BS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x17 U+87 ESA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+18 CAN */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+19 EOM */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x1A U+92 PU2 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x1B U+8F SS3 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+1C FS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+1D GS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+1E RS */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* U+1F US */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x20 U+80 PAD */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x21 U+81 HOP */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x22 U+82 BPH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x23 U+83 NBH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x24 U+84 IND */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x25 U+0A LF */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_)|(1U<<CC_VERTSPACE_),
+/* 0x26 U+17 ETB */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x27 U+1B ESC */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x28 U+88 HTS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x29 U+89 HTJ */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x2A U+8A VTS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x2B U+8B PLD */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x2C U+8C PLU */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x2D U+05 ENQ */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x2E U+06 ACK */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x2F U+07 BEL */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_MNEMONIC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x30 U+90 DCS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x31 U+91 PU1 */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x32 U+16 SYN */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x33 U+93 STS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x34 U+94 CCH */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x35 U+95 MW */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x36 U+96 SPA */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x37 U+04 EOT */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x38 U+98 SOS */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x39 U+99 SGC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x3A U+9A SCI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x3B U+9B CSI */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x3C U+14 DC4 */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x3D U+15 NAK */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x3E U+9E PM */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x3F U+1A SUB */ (1U<<CC_ASCII_)|(1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_),
+/* 0x40 U+20 SP */ (1U<<CC_ASCII_)|(1U<<CC_BLANK_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
+/* 0x41 U+A0 NBSP */ (1U<<CC_BLANK_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_)|(1U<<CC_SPACE_),
+/* 0x42 U+E2 I8=A1 a with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x43 U+E4 I8=A2 a with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x44 U+E0 I8=A3 a with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x45 U+E1 I8=A4 a with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x46 U+E3 I8=A5 a with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x47 U+E5 I8=A6 a with ring */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x48 U+E7 I8=A7 c with cedilla */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x49 U+F1 I8=A8 n with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x4A U+A2 I8=A9 CENT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0x4B U+2E '.' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x4C U+3C '<' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x4D U+28 '(' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x4E U+2B '+' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x4F U+7C '|' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x50 U+26 '&' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x51 U+E9 I8=AA e with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x52 U+EA I8=AB e with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x53 U+EB I8=AC e with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x54 U+E8 I8=AD e with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x55 U+ED I8=AE i with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x56 U+EE I8=AF i with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x57 U+EF I8=B0 i with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x58 U+EC I8=B1 i with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x59 U+DF I8=B2 sharp s */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x5A U+21 '!' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x5B U+24 '$' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x5C U+2A '*' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x5D U+29 ')' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x5E U+3B ';' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x5F U+AC I8=B3 NOT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0x60 U+2D '-' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x61 U+2F '/' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x62 U+C2 I8=B4 A with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x63 U+C4 I8=B5 A with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x64 U+C0 I8=B6 A with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x65 U+C1 I8=B7 A with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x66 U+C3 I8=B8 A with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x67 U+C5 I8=B9 A with RING */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x68 U+C7 I8=BA C with CEDILLA */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x69 U+D1 I8=BB N with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x6A U+A6 I8=BC BROKEN BAR */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0x6B U+2C ',' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x6C U+25 '%' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x6D U+5F '_' */ (1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_WORDCHAR_),
+/* 0x6E U+3E '>' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x6F U+3F '?' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x70 U+F8 I8=BD o with '/' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x71 U+C9 I8=BE E with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x72 U+CA I8=BF E with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x73 U+CB I8=C0 E with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x74 U+C8 I8=C1 E with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x75 U+CD I8=C2 I with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x76 U+CE I8=C3 I with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x77 U+CF I8=C4 I with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x78 U+CC I8=C5 I with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x79 U+60 '`' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x7A U+3A ':' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x7B U+23 '#' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x7C U+40 '@' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x7D U+27 "'" */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x7E U+3D '=' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x7F U+22 '"' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x80 U+D8 I8=C6 O with '/' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x81 U+61 'a' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0x82 U+62 'b' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0x83 U+63 'c' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0x84 U+64 'd' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0x85 U+65 'e' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0x86 U+66 'f' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0x87 U+67 'g' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x88 U+68 'h' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x89 U+69 'i' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x8A U+AB I8=C7 LEFT-POINTING DOUBLE ANGLE QUOTE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x8B U+BB I8=C8 RIGHT-POINTING DOUBLE ANGLE QUOTE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0x8C U+F0 I8=C9 eth */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x8D U+FD I8=CA y with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x8E U+FE I8=CB thorn */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x8F U+B1 I8=CC PLUS-MINUS */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0x90 U+B0 I8=CD DEGREE */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0x91 U+6A 'j' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x92 U+6B 'k' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x93 U+6C 'l' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x94 U+6D 'm' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x95 U+6E 'n' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x96 U+6F 'o' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x97 U+70 'p' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x98 U+71 'q' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x99 U+72 'r' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x9A U+AA I8=CE FEMININE ORDINAL */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x9B U+BA I8=CF MASCULINE ORDINAL */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x9C U+E6 I8=D0 ae */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0x9D U+B8 I8=D1 CEDILLA */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0x9E U+C6 I8=D2 AE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0x9F U+A4 I8=D3 CURRENCY */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xA0 U+B5 I8=D4 MICRO */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA1 U+7E '~' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xA2 U+73 's' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA3 U+74 't' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA4 U+75 'u' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA5 U+76 'v' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA6 U+77 'w' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA7 U+78 'x' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA8 U+79 'y' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xA9 U+7A 'z' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xAA U+A1 I8=D5 INVERTED '!' */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xAB U+BF I8=D6 INVERTED '?' */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xAC U+D0 I8=D7 ETH */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xAD U+DD I8=D8 Y with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xAE U+DE I8=D9 THORN */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xAF U+AE I8=DA REGISTERED */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xB0 U+5E '^' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xB1 U+A3 I8=DB POUND */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xB2 U+A5 I8=DC YEN */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xB3 U+B7 I8=DD MIDDLE DOT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_),
+/* 0xB4 U+A9 I8=DE COPYRIGHT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xB5 U+A7 I8=DF SECTION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* U+B6 I8=E0 PILCROW */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xB7 U+BC I8=E1 1/4 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xB8 U+BD I8=E2 1/2 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xB9 U+BE I8=E3 3/4 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xBA U+5B '[' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xBB U+5D ']' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xBC U+AF I8=E4 MACRON */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xBD U+A8 I8=E5 DIAERESIS */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xBE U+B4 I8=E6 ACUTE ACCENT */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xBF U+D7 I8=E7 MULTIPLICATION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xC0 U+7B '{' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xC1 U+41 'A' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xC2 U+42 'B' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xC3 U+43 'C' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xC4 U+44 'D' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xC5 U+45 'E' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xC6 U+46 'F' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xC7 U+47 'G' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xC8 U+48 'H' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xC9 U+49 'I' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xCA U+AD I8=E8 SOFT HYPHEN */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xCB U+F4 I8=E9 o with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xCC U+F6 I8=EA o with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xCD U+F2 I8=EB o with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xCE U+F3 I8=EC o with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xCF U+F5 I8=ED o with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xD0 U+7D '}' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xD1 U+4A 'J' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD2 U+4B 'K' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD3 U+4C 'L' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD4 U+4D 'M' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD5 U+4E 'N' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD6 U+4F 'O' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD7 U+50 'P' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD8 U+51 'Q' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xD9 U+52 'R' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xDA U+B9 I8=EE SUPERSCRIPT 1 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xDB U+FB I8=EF u with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xDC U+FC I8=F0 u with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xDD U+F9 I8=F1 u with grave */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xDE U+FA I8=F2 u with acute */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xDF U+FF I8=F3 y with diaeresis */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_LOWER_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_),
+/* 0xE0 U+5C '\' */ (1U<<CC_ASCII_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_PUNCT_)|(1U<<CC_QUOTEMETA_),
+/* 0xE1 U+F7 I8=F4 DIVISION */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_QUOTEMETA_),
+/* 0xE2 U+53 'S' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NONLATIN1_SIMPLE_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xE3 U+54 'T' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xE4 U+55 'U' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xE5 U+56 'V' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xE6 U+57 'W' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xE7 U+58 'X' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xE8 U+59 'Y' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_NONLATIN1_FOLD_)|(1U<<CC_NON_FINAL_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xE9 U+5A 'Z' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xEA U+B2 I8=F5 SUPERSCRIPT 2 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xEB U+D4 I8=F6 O with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xEC U+D6 I8=F7 O with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xED U+D2 I8=F8 O with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xEE U+D3 I8=F9 O with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xEF U+D5 I8=FA O with '~' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xF0 U+30 '0' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_BINDIGIT_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF1 U+31 '1' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_BINDIGIT_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF2 U+32 '2' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF3 U+33 '3' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF4 U+34 '4' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF5 U+35 '5' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF6 U+36 '6' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF7 U+37 '7' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_OCTDIGIT_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF8 U+38 '8' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xF9 U+39 '9' */ (1U<<CC_ALPHANUMERIC_)|(1U<<CC_ASCII_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_DIGIT_)|(1U<<CC_GRAPH_)|(1U<<CC_PRINT_)|(1U<<CC_WORDCHAR_)|(1U<<CC_XDIGIT_),
+/* 0xFA U+B3 I8=FB SUPERSCRIPT 3 */ (1U<<CC_GRAPH_)|(1U<<CC_PRINT_),
+/* 0xFB U+DB I8=FC U with '^' */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xFC U+DC I8=FD U with DIAERESIS */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xFD U+D9 I8=FE U with GRAVE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xFE U+DA I8=FF U with ACUTE */ (1U<<CC_ALPHA_)|(1U<<CC_ALPHANUMERIC_)|(1U<<CC_CASED_)|(1U<<CC_CHARNAME_CONT_)|(1U<<CC_GRAPH_)|(1U<<CC_IDFIRST_)|(1U<<CC_IS_IN_SOME_FOLD_)|(1U<<CC_PRINT_)|(1U<<CC_UPPER_)|(1U<<CC_WORDCHAR_),
+/* 0xFF U+9F APC */ (1U<<CC_CNTRL_)|(1U<<CC_QUOTEMETA_)
#endif /* EBCDIC 037 */
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/libperl534.a b/Master/tlpkg/tlperl/lib/CORE/libperl534.a
deleted file mode 100755
index ebdd805cf57..00000000000
--- a/Master/tlpkg/tlperl/lib/CORE/libperl534.a
+++ /dev/null
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/CORE/metaconfig.h b/Master/tlpkg/tlperl/lib/CORE/metaconfig.h
index ae0093afd42..c2a4650d12e 100644
--- a/Master/tlpkg/tlperl/lib/CORE/metaconfig.h
+++ b/Master/tlpkg/tlperl/lib/CORE/metaconfig.h
@@ -13,7 +13,6 @@
* Symbols should only be here temporarily. Once they are actually used,
* they should be removed from here.
*
- * HAS_WCRTOMB
- * GETENV_PRESERVES_OTHER_THREAD
+ * HAS_NON_INT_BITFIELDS
*
*/
diff --git a/Master/tlpkg/tlperl/lib/CORE/mg_data.h b/Master/tlpkg/tlperl/lib/CORE/mg_data.h
index 446400c1e97..63de4c26e08 100644
--- a/Master/tlpkg/tlperl/lib/CORE/mg_data.h
+++ b/Master/tlpkg/tlperl/lib/CORE/mg_data.h
@@ -107,23 +107,26 @@
0,
0,
/* sig 'S' %SIG hash */
- magic_vtable_max,
+ want_vtbl_sig,
0,
/* uvar 'U' Available for use by extensions */
want_vtbl_uvar,
/* vstring 'V' SV was vstring literal */
magic_vtable_max | PERL_MAGIC_VALUE_MAGIC,
0,
- 0,
+ /* destruct 'X' destruct callback */
+ want_vtbl_destruct | PERL_MAGIC_VALUE_MAGIC,
/* nonelem 'Y' Array element that does not exist */
want_vtbl_nonelem | PERL_MAGIC_VALUE_MAGIC,
- 0,
+ /* hook 'Z' %{^HOOK} hash */
+ want_vtbl_hook,
0,
/* lvref '\' Lvalue reference constructor */
want_vtbl_lvref,
/* checkcall ']' Inlining/mutation of call to this CV */
want_vtbl_checkcall | PERL_MAGIC_VALUE_MAGIC,
- 0,
+ /* extvalue '^' Value magic available for use by extensions */
+ magic_vtable_max | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC,
0,
0,
0,
@@ -170,11 +173,12 @@
want_vtbl_substr | PERL_MAGIC_VALUE_MAGIC,
/* defelem 'y' Shadow "foreach" iterator variable / smart parameter vivification */
want_vtbl_defelem | PERL_MAGIC_VALUE_MAGIC,
+ /* hookelem 'z' %{^HOOK} hash element */
+ want_vtbl_hookelem,
0,
0,
0,
- 0,
- /* ext '~' Available for use by extensions */
+ /* ext '~' Variable magic available for use by extensions */
magic_vtable_max | PERL_MAGIC_READONLY_ACCEPTABLE,
0,
0,
diff --git a/Master/tlpkg/tlperl/lib/CORE/mg_raw.h b/Master/tlpkg/tlperl/lib/CORE/mg_raw.h
index 2f4863b08e9..eddcbf56637 100644
--- a/Master/tlpkg/tlperl/lib/CORE/mg_raw.h
+++ b/Master/tlpkg/tlperl/lib/CORE/mg_raw.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
*
* mg_raw.h
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
@@ -62,7 +62,7 @@
"/* tiedscalar 'q' Tied scalar or handle */" },
{ 'r', "want_vtbl_regexp | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
"/* qr 'r' Precompiled qr// regex */" },
- { 'S', "magic_vtable_max",
+ { 'S', "want_vtbl_sig",
"/* sig 'S' %SIG hash */" },
{ 's', "want_vtbl_sigelem",
"/* sigelem 's' %SIG hash element */" },
@@ -76,17 +76,25 @@
"/* vec 'v' vec() lvalue */" },
{ 'w', "want_vtbl_utf8 | PERL_MAGIC_VALUE_MAGIC",
"/* utf8 'w' Cached UTF-8 information */" },
+ { 'X', "want_vtbl_destruct | PERL_MAGIC_VALUE_MAGIC",
+ "/* destruct 'X' destruct callback */" },
{ 'x', "want_vtbl_substr | PERL_MAGIC_VALUE_MAGIC",
"/* substr 'x' substr() lvalue */" },
{ 'Y', "want_vtbl_nonelem | PERL_MAGIC_VALUE_MAGIC",
"/* nonelem 'Y' Array element that does not exist */" },
{ 'y', "want_vtbl_defelem | PERL_MAGIC_VALUE_MAGIC",
"/* defelem 'y' Shadow \"foreach\" iterator variable / smart parameter vivification */" },
+ { 'Z', "want_vtbl_hook",
+ "/* hook 'Z' %{^HOOK} hash */" },
+ { 'z', "want_vtbl_hookelem",
+ "/* hookelem 'z' %{^HOOK} hash element */" },
{ '\\', "want_vtbl_lvref",
"/* lvref '\\' Lvalue reference constructor */" },
{ ']', "want_vtbl_checkcall | PERL_MAGIC_VALUE_MAGIC",
"/* checkcall ']' Inlining/mutation of call to this CV */" },
+ { '^', "magic_vtable_max | PERL_MAGIC_READONLY_ACCEPTABLE | PERL_MAGIC_VALUE_MAGIC",
+ "/* extvalue '^' Value magic available for use by extensions */" },
{ '~', "magic_vtable_max | PERL_MAGIC_READONLY_ACCEPTABLE",
- "/* ext '~' Available for use by extensions */" },
+ "/* ext '~' Variable magic available for use by extensions */" },
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/mg_vtable.h b/Master/tlpkg/tlperl/lib/CORE/mg_vtable.h
index e5c8cba37c9..80f265f8c2e 100644
--- a/Master/tlpkg/tlperl/lib/CORE/mg_vtable.h
+++ b/Master/tlpkg/tlperl/lib/CORE/mg_vtable.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
*
* mg_vtable.h
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
@@ -51,13 +51,17 @@
#define PERL_MAGIC_vstring 'V' /* SV was vstring literal */
#define PERL_MAGIC_vec 'v' /* vec() lvalue */
#define PERL_MAGIC_utf8 'w' /* Cached UTF-8 information */
+#define PERL_MAGIC_destruct 'X' /* destruct callback */
#define PERL_MAGIC_substr 'x' /* substr() lvalue */
#define PERL_MAGIC_nonelem 'Y' /* Array element that does not exist */
#define PERL_MAGIC_defelem 'y' /* Shadow "foreach" iterator variable /
smart parameter vivification */
+#define PERL_MAGIC_hook 'Z' /* %{^HOOK} hash */
+#define PERL_MAGIC_hookelem 'z' /* %{^HOOK} hash element */
#define PERL_MAGIC_lvref '\\' /* Lvalue reference constructor */
#define PERL_MAGIC_checkcall ']' /* Inlining/mutation of call to this CV */
-#define PERL_MAGIC_ext '~' /* Available for use by extensions */
+#define PERL_MAGIC_extvalue '^' /* Value magic available for use by extensions */
+#define PERL_MAGIC_ext '~' /* Variable magic available for use by extensions */
enum { /* pass one of these to get_vtbl */
want_vtbl_arylen,
@@ -68,10 +72,13 @@ enum { /* pass one of these to get_vtbl */
want_vtbl_dbline,
want_vtbl_debugvar,
want_vtbl_defelem,
+ want_vtbl_destruct,
want_vtbl_env,
want_vtbl_envelem,
want_vtbl_hints,
want_vtbl_hintselem,
+ want_vtbl_hook,
+ want_vtbl_hookelem,
want_vtbl_isa,
want_vtbl_isaelem,
want_vtbl_lvref,
@@ -85,6 +92,7 @@ enum { /* pass one of these to get_vtbl */
want_vtbl_regdata,
want_vtbl_regdatum,
want_vtbl_regexp,
+ want_vtbl_sig,
want_vtbl_sigelem,
want_vtbl_substr,
want_vtbl_sv,
@@ -105,10 +113,13 @@ EXTCONST char * const PL_magic_vtable_names[magic_vtable_max] = {
"dbline",
"debugvar",
"defelem",
+ "destruct",
"env",
"envelem",
"hints",
"hintselem",
+ "hook",
+ "hookelem",
"isa",
"isaelem",
"lvref",
@@ -122,6 +133,7 @@ EXTCONST char * const PL_magic_vtable_names[magic_vtable_max] = {
"regdata",
"regdatum",
"regexp",
+ "sig",
"sigelem",
"substr",
"sv",
@@ -165,10 +177,13 @@ EXT_MGVTBL PL_magic_vtables[magic_vtable_max] = {
{ 0, Perl_magic_setdbline, 0, 0, 0, 0, 0, 0 },
{ Perl_magic_getdebugvar, Perl_magic_setdebugvar, 0, 0, 0, 0, 0, 0 },
{ Perl_magic_getdefelem, Perl_magic_setdefelem, 0, 0, 0, 0, 0, 0 },
+ { 0, 0, 0, 0, Perl_magic_freedestruct, 0, 0, 0 },
{ 0, Perl_magic_set_all_env, 0, Perl_magic_clear_all_env, 0, 0, 0, 0 },
{ 0, Perl_magic_setenv, 0, Perl_magic_clearenv, 0, 0, 0, 0 },
{ 0, 0, 0, Perl_magic_clearhints, 0, 0, 0, 0 },
{ 0, Perl_magic_sethint, 0, Perl_magic_clearhint, 0, 0, 0, 0 },
+ { 0, Perl_magic_sethookall, 0, Perl_magic_clearhookall, 0, 0, 0, 0 },
+ { 0, Perl_magic_sethook, 0, Perl_magic_clearhook, 0, 0, 0, 0 },
{ 0, Perl_magic_setisa, 0, Perl_magic_clearisa, 0, 0, 0, 0 },
{ 0, Perl_magic_setisa, 0, 0, 0, 0, 0, 0 },
{ 0, Perl_magic_setlvref, 0, 0, 0, 0, 0, 0 },
@@ -182,6 +197,7 @@ EXT_MGVTBL PL_magic_vtables[magic_vtable_max] = {
{ 0, 0, Perl_magic_regdata_cnt, 0, 0, 0, 0, 0 },
{ Perl_magic_regdatum_get, Perl_magic_regdatum_set, 0, 0, 0, 0, 0, 0 },
{ 0, Perl_magic_setregexp, 0, 0, 0, 0, 0, 0 },
+ { 0, Perl_magic_setsigall, 0, 0, 0, 0, 0, 0 },
#ifndef PERL_MICRO
{ Perl_magic_getsig, Perl_magic_setsig, 0, Perl_magic_clearsig, 0, 0, 0, 0 },
#else
@@ -210,11 +226,14 @@ EXT_MGVTBL PL_magic_vtables[magic_vtable_max];
#define PL_vtbl_dbline PL_magic_vtables[want_vtbl_dbline]
#define PL_vtbl_debugvar PL_magic_vtables[want_vtbl_debugvar]
#define PL_vtbl_defelem PL_magic_vtables[want_vtbl_defelem]
+#define PL_vtbl_destruct PL_magic_vtables[want_vtbl_destruct]
#define PL_vtbl_env PL_magic_vtables[want_vtbl_env]
#define PL_vtbl_envelem PL_magic_vtables[want_vtbl_envelem]
#define PL_vtbl_fm PL_magic_vtables[want_vtbl_fm]
#define PL_vtbl_hints PL_magic_vtables[want_vtbl_hints]
#define PL_vtbl_hintselem PL_magic_vtables[want_vtbl_hintselem]
+#define PL_vtbl_hook PL_magic_vtables[want_vtbl_hook]
+#define PL_vtbl_hookelem PL_magic_vtables[want_vtbl_hookelem]
#define PL_vtbl_isa PL_magic_vtables[want_vtbl_isa]
#define PL_vtbl_isaelem PL_magic_vtables[want_vtbl_isaelem]
#define PL_vtbl_lvref PL_magic_vtables[want_vtbl_lvref]
@@ -228,6 +247,7 @@ EXT_MGVTBL PL_magic_vtables[magic_vtable_max];
#define PL_vtbl_regdata PL_magic_vtables[want_vtbl_regdata]
#define PL_vtbl_regdatum PL_magic_vtables[want_vtbl_regdatum]
#define PL_vtbl_regexp PL_magic_vtables[want_vtbl_regexp]
+#define PL_vtbl_sig PL_magic_vtables[want_vtbl_sig]
#define PL_vtbl_sigelem PL_magic_vtables[want_vtbl_sigelem]
#define PL_vtbl_substr PL_magic_vtables[want_vtbl_substr]
#define PL_vtbl_sv PL_magic_vtables[want_vtbl_sv]
@@ -236,4 +256,4 @@ EXT_MGVTBL PL_magic_vtables[magic_vtable_max];
#define PL_vtbl_uvar PL_magic_vtables[want_vtbl_uvar]
#define PL_vtbl_vec PL_magic_vtables[want_vtbl_vec]
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/nostdio.h b/Master/tlpkg/tlperl/lib/CORE/nostdio.h
index 64276aa0606..10bd2b05038 100644
--- a/Master/tlpkg/tlperl/lib/CORE/nostdio.h
+++ b/Master/tlpkg/tlperl/lib/CORE/nostdio.h
@@ -25,7 +25,7 @@ struct _FILE;
#define FILE struct _FILE
#endif
-#ifndef EBCDIC
+#if !defined(OEMVS)
#define _CANNOT "CANNOT"
diff --git a/Master/tlpkg/tlperl/lib/CORE/op.h b/Master/tlpkg/tlperl/lib/CORE/op.h
index cd3926ddc56..503dfdbbccd 100644
--- a/Master/tlpkg/tlperl/lib/CORE/op.h
+++ b/Master/tlpkg/tlperl/lib/CORE/op.h
@@ -15,7 +15,13 @@
* but this is replaced when op is grafted in, when
* this op will point to the real next op, and the new
* parent takes over role of remembering starting op.)
+ * op_sibparent Pointer to the op's next sibling, or to the parent
+ * if there are no more siblings.
* op_ppaddr Pointer to current ppcode's function.
+ * op_targ An index into the current pad, identifying an SV
+ * that is typically used to store the OP's result
+ * (such as a lexical variable, or a SVs_PADTMP
+ * temporary intermediate value).
* op_type The type of the operation.
* op_opt Whether or not the op has been optimised by the
* peephole optimiser.
@@ -58,6 +64,14 @@ typedef PERL_BITFIELD16 Optype;
U8 op_private;
#endif
+#define OpTYPE_set(o,type) \
+ STMT_START { \
+ OP *o_ = (OP *)o; \
+ OPCODE type_ = type; \
+ o_->op_type = type_; \
+ o_->op_ppaddr = PL_ppaddr[type_]; \
+ } STMT_END
+
/* If op_type:9 is changed to :10, also change cx_pusheval()
Also, if the type of op_type is ever changed (e.g. to PERL_BITFIELD32)
then all the other bit-fields before/after it should change their
@@ -74,12 +88,12 @@ typedef PERL_BITFIELD16 Optype;
=for apidoc Amn|U32|GIMME_V
The XSUB-writer's equivalent to Perl's C<wantarray>. Returns C<G_VOID>,
-C<G_SCALAR> or C<G_ARRAY> for void, scalar or list context,
+C<G_SCALAR> or C<G_LIST> for void, scalar or list context,
respectively. See L<perlcall> for a usage example.
=for apidoc AmnD|U32|GIMME
A backward-compatible version of C<GIMME_V> which can only return
-C<G_SCALAR> or C<G_ARRAY>; in a void context, it returns C<G_SCALAR>.
+C<G_SCALAR> or C<G_LIST>; in a void context, it returns C<G_SCALAR>.
Deprecated. Use C<GIMME_V> instead.
=cut
@@ -147,6 +161,9 @@ Deprecated. Use C<GIMME_V> instead.
/* On OP_DUMP, has no label */
/* On OP_UNSTACK, in a C-style for loop */
/* On OP_READLINE, it's for <<>>, not <> */
+ /* On OP_RETURN, module_true is in effect */
+ /* On OP_NEXT/OP_LAST/OP_REDO, there is no
+ * loop label */
/* There is no room in op_flags for this one, so it has its own bit-
field member (op_folded) instead. The flag is only used to tell
op_convert_list to set op_folded. */
@@ -160,7 +177,7 @@ Deprecated. Use C<GIMME_V> instead.
# define GIMME \
(PL_op->op_flags & OPf_WANT \
? ((PL_op->op_flags & OPf_WANT) == OPf_WANT_LIST \
- ? G_ARRAY \
+ ? G_LIST \
: G_SCALAR) \
: dowantarray())
#endif
@@ -242,8 +259,7 @@ struct methop {
BASEOP
union {
/* op_u.op_first *must* be aligned the same as the op_first
- * field of the other op types, and op_u.op_meth_sv *must*
- * be aligned with op_sv */
+ * field of the other op types */
OP* op_first; /* optree for method name */
SV* op_meth_sv; /* static method name */
} op_u;
@@ -463,6 +479,7 @@ struct loop {
#define cPVOP cPVOPx(PL_op)
#define cCOP cCOPx(PL_op)
#define cLOOP cLOOPx(PL_op)
+#define cMETHOP cMETHOPx(PL_op)
#define cUNOPo cUNOPx(o)
#define cUNOP_AUXo cUNOP_AUXx(o)
@@ -475,6 +492,7 @@ struct loop {
#define cPVOPo cPVOPx(o)
#define cCOPo cCOPx(o)
#define cLOOPo cLOOPx(o)
+#define cMETHOPo cMETHOPx(o)
#define kUNOP cUNOPx(kid)
#define kUNOP_AUX cUNOP_AUXx(kid)
@@ -487,6 +505,7 @@ struct loop {
#define kPVOP cPVOPx(kid)
#define kCOP cCOPx(kid)
#define kLOOP cLOOPx(kid)
+#define kMETHOP cMETHOPx(kid)
typedef enum {
@@ -508,33 +527,40 @@ typedef enum {
#ifdef USE_ITHREADS
-# define cGVOPx_gv(o) ((GV*)PAD_SVl(cPADOPx(o)->op_padix))
+# define cGVOPx_gv(o) ((GV*)PAD_SVl(cPADOPx(o)->op_padix))
# ifndef PERL_CORE
-# define IS_PADGV(v) (v && isGV(v))
-# define IS_PADCONST(v) \
+# define IS_PADGV(v) (v && isGV(v))
+# define IS_PADCONST(v) \
(v && (SvREADONLY(v) || (SvIsCOW(v) && !SvLEN(v))))
# endif
-# define cSVOPx_sv(v) (cSVOPx(v)->op_sv \
+# define cSVOPx_sv(v) (cSVOPx(v)->op_sv \
? cSVOPx(v)->op_sv : PAD_SVl((v)->op_targ))
-# define cSVOPx_svp(v) (cSVOPx(v)->op_sv \
+# define cSVOPx_svp(v) (cSVOPx(v)->op_sv \
? &cSVOPx(v)->op_sv : &PAD_SVl((v)->op_targ))
-# define cMETHOPx_rclass(v) PAD_SVl(cMETHOPx(v)->op_rclass_targ)
+# define cMETHOPx_meth(v) (cMETHOPx(v)->op_u.op_meth_sv \
+ ? cMETHOPx(v)->op_u.op_meth_sv : PAD_SVl((v)->op_targ))
+# define cMETHOPx_rclass(v) PAD_SVl(cMETHOPx(v)->op_rclass_targ)
#else
-# define cGVOPx_gv(o) ((GV*)cSVOPx(o)->op_sv)
+# define cGVOPx_gv(o) ((GV*)cSVOPx(o)->op_sv)
# ifndef PERL_CORE
-# define IS_PADGV(v) FALSE
-# define IS_PADCONST(v) FALSE
+# define IS_PADGV(v) FALSE
+# define IS_PADCONST(v) FALSE
# endif
-# define cSVOPx_sv(v) (cSVOPx(v)->op_sv)
-# define cSVOPx_svp(v) (&cSVOPx(v)->op_sv)
-# define cMETHOPx_rclass(v) (cMETHOPx(v)->op_rclass_sv)
+# define cSVOPx_sv(v) (cSVOPx(v)->op_sv)
+# define cSVOPx_svp(v) (&cSVOPx(v)->op_sv)
+# define cMETHOPx_meth(v) (cMETHOPx(v)->op_u.op_meth_sv)
+# define cMETHOPx_rclass(v) (cMETHOPx(v)->op_rclass_sv)
#endif
-#define cMETHOPx_meth(v) cSVOPx_sv(v)
+#define cMETHOP_meth cMETHOPx_meth(PL_op)
+#define cMETHOP_rclass cMETHOPx_rclass(PL_op)
+
+#define cMETHOPo_meth cMETHOPx_meth(o)
+#define cMETHOPo_rclass cMETHOPx_rclass(o)
-#define cGVOP_gv cGVOPx_gv(PL_op)
-#define cGVOPo_gv cGVOPx_gv(o)
-#define kGVOP_gv cGVOPx_gv(kid)
+#define cGVOP_gv cGVOPx_gv(PL_op)
+#define cGVOPo_gv cGVOPx_gv(o)
+#define kGVOP_gv cGVOPx_gv(kid)
#define cSVOP_sv cSVOPx_sv(PL_op)
#define cSVOPo_sv cSVOPx_sv(o)
#define kSVOP_sv cSVOPx_sv(kid)
@@ -595,6 +621,7 @@ typedef enum {
* The same mutex is used to protect the refcounts of the reg_trie_data
* and reg_ac_data structures, which are shared between duplicated
* regexes.
+ * The same mutex is used to protect the refcounts for RCPV objects.
*/
#ifdef USE_ITHREADS
@@ -602,7 +629,7 @@ typedef enum {
# ifdef PERL_CORE
# define OP_REFCNT_LOCK MUTEX_LOCK(&PL_op_mutex)
# define OP_REFCNT_UNLOCK MUTEX_UNLOCK(&PL_op_mutex)
-# else
+# else /* Subject non-core uses to clang thread safety analysis */
# define OP_REFCNT_LOCK op_refcnt_lock()
# define OP_REFCNT_UNLOCK op_refcnt_unlock()
# endif
@@ -762,29 +789,29 @@ struct block_hooks {
=for apidoc mx|U32|BhkFLAGS|BHK *hk
Return the BHK's flags.
-=for apidoc mxu|void *|BhkENTRY|BHK *hk|which
+=for apidoc mxu|void *|BhkENTRY|BHK *hk|token which
Return an entry from the BHK structure. C<which> is a preprocessor token
indicating which entry to return. If the appropriate flag is not set
this will return C<NULL>. The type of the return value depends on which
entry you ask for.
-=for apidoc Amxu|void|BhkENTRY_set|BHK *hk|which|void *ptr
+=for apidoc Amxu|void|BhkENTRY_set|BHK *hk|token which|void *ptr
Set an entry in the BHK structure, and set the flags to indicate it is
valid. C<which> is a preprocessing token indicating which entry to set.
The type of C<ptr> depends on the entry.
-=for apidoc Amxu|void|BhkDISABLE|BHK *hk|which
+=for apidoc Amxu|void|BhkDISABLE|BHK *hk|token which
Temporarily disable an entry in this BHK structure, by clearing the
appropriate flag. C<which> is a preprocessor token indicating which
entry to disable.
-=for apidoc Amxu|void|BhkENABLE|BHK *hk|which
+=for apidoc Amxu|void|BhkENABLE|BHK *hk|token which
Re-enable an entry in this BHK structure, by setting the appropriate
flag. C<which> is a preprocessor token indicating which entry to enable.
This will assert (under -DDEBUGGING) if the entry doesn't contain a valid
pointer.
-=for apidoc mxu|void|CALL_BLOCK_HOOKS|which|arg
+=for apidoc mxu|void|CALL_BLOCK_HOOKS|token which|arg
Call all the registered block hooks for type C<which>. C<which> is a
preprocessing token; the type of C<arg> depends on C<which>.
@@ -860,7 +887,7 @@ preprocessing token; the type of C<arg> depends on C<which>.
=for apidoc Am|U32|XopFLAGS|XOP *xop
Return the XOP's flags.
-=for apidoc Am||XopENTRY|XOP *xop|which
+=for apidoc Amu||XopENTRY|XOP *xop|token which
Return a member of the XOP structure. C<which> is a cpp token
indicating which entry to return. If the member is not set
this will return a default value. The return type depends
@@ -868,21 +895,21 @@ on C<which>. This macro evaluates its arguments more than
once. If you are using C<Perl_custom_op_xop> to retrieve a
C<XOP *> from a C<OP *>, use the more efficient L</XopENTRYCUSTOM> instead.
-=for apidoc Am||XopENTRYCUSTOM|const OP *o|which
+=for apidoc Amu||XopENTRYCUSTOM|const OP *o|token which
Exactly like C<XopENTRY(XopENTRY(Perl_custom_op_xop(aTHX_ o), which)> but more
efficient. The C<which> parameter is identical to L</XopENTRY>.
-=for apidoc Am|void|XopENTRY_set|XOP *xop|which|value
+=for apidoc Amu|void|XopENTRY_set|XOP *xop|token which|value
Set a member of the XOP structure. C<which> is a cpp token
indicating which entry to set. See L<perlguts/"Custom Operators">
for details about the available members and how
they are used. This macro evaluates its argument
more than once.
-=for apidoc Am|void|XopDISABLE|XOP *xop|which
+=for apidoc Amu|void|XopDISABLE|XOP *xop|token which
Temporarily disable a member of the XOP, by clearing the appropriate flag.
-=for apidoc Am|void|XopENABLE|XOP *xop|which
+=for apidoc Amu|void|XopENABLE|XOP *xop|token which
Reenable a member of the XOP which has been disabled.
=cut
@@ -1143,6 +1170,8 @@ struct op_argcheck_aux {
char slurpy; /* presence of slurpy: may be '\0', '@' or '%' */
};
+#define MI_INIT_WORKAROUND_PACK "Module::Install::DSL"
+
/*
* ex: set ts=8 sts=4 sw=4 et:
diff --git a/Master/tlpkg/tlperl/lib/CORE/op_reg_common.h b/Master/tlpkg/tlperl/lib/CORE/op_reg_common.h
index e8770e6352e..1273cb6f219 100644
--- a/Master/tlpkg/tlperl/lib/CORE/op_reg_common.h
+++ b/Master/tlpkg/tlperl/lib/CORE/op_reg_common.h
@@ -101,8 +101,20 @@ get_regex_charset(const U32 flags)
/* Mask of the above bits. These need to be transferred from op_pmflags to
* re->extflags during compilation */
-#define RXf_PMf_COMPILETIME (RXf_PMf_MULTILINE|RXf_PMf_SINGLELINE|RXf_PMf_FOLD|RXf_PMf_EXTENDED|RXf_PMf_EXTENDED_MORE|RXf_PMf_KEEPCOPY|RXf_PMf_NOCAPTURE|RXf_PMf_CHARSET|RXf_PMf_STRICT)
-#define RXf_PMf_FLAGCOPYMASK (RXf_PMf_COMPILETIME|RXf_PMf_SPLIT)
+#define RXf_PMf_COMPILETIME \
+ ( RXf_PMf_MULTILINE \
+ | RXf_PMf_SINGLELINE \
+ | RXf_PMf_FOLD \
+ | RXf_PMf_EXTENDED \
+ | RXf_PMf_EXTENDED_MORE \
+ | RXf_PMf_KEEPCOPY \
+ | RXf_PMf_NOCAPTURE \
+ | RXf_PMf_CHARSET \
+ | RXf_PMf_STRICT )
+
+#define RXf_PMf_FLAGCOPYMASK \
+ ( RXf_PMf_COMPILETIME \
+ | RXf_PMf_SPLIT )
/* Temporary to get Jenkins happy again
* See thread starting at http://nntp.perl.org/group/perl.perl5.porters/220710
diff --git a/Master/tlpkg/tlperl/lib/CORE/opcode.h b/Master/tlpkg/tlperl/lib/CORE/opcode.h
index c808bee65c2..9f5182219a4 100644
--- a/Master/tlpkg/tlperl/lib/CORE/opcode.h
+++ b/Master/tlpkg/tlperl/lib/CORE/opcode.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
*
* opcode.h
*
@@ -145,10 +145,7 @@
START_EXTERN_C
-#ifndef DOINIT
-EXTCONST char* const PL_op_name[];
-#else
-EXTCONST char* const PL_op_name[] = {
+EXTCONST char* const PL_op_name[] INIT({
"null",
"stub",
"scalar",
@@ -159,6 +156,7 @@ EXTCONST char* const PL_op_name[] = {
"gv",
"gelem",
"padsv",
+ "padsv_store",
"padav",
"padhv",
"padany",
@@ -287,6 +285,7 @@ EXTCONST char* const PL_op_name[] = {
"rv2av",
"aelemfast",
"aelemfast_lex",
+ "aelemfastlex_store",
"aelem",
"aslice",
"kvaslice",
@@ -311,6 +310,7 @@ EXTCONST char* const PL_op_name[] = {
"lslice",
"anonlist",
"anonhash",
+ "emptyavhv",
"splice",
"push",
"pop",
@@ -553,14 +553,24 @@ EXTCONST char* const PL_op_name[] = {
"leavetrycatch",
"poptry",
"catch",
+ "pushdefer",
+ "is_bool",
+ "is_weak",
+ "weaken",
+ "unweaken",
+ "blessed",
+ "refaddr",
+ "reftype",
+ "ceil",
+ "floor",
+ "is_tainted",
+ "helemexistsor",
+ "methstart",
+ "initfield",
"freed",
-};
-#endif
+});
-#ifndef DOINIT
-EXTCONST char* const PL_op_desc[];
-#else
-EXTCONST char* const PL_op_desc[] = {
+EXTCONST char* const PL_op_desc[] INIT({
"null operation",
"stub",
"scalar",
@@ -571,6 +581,7 @@ EXTCONST char* const PL_op_desc[] = {
"glob value",
"glob elem",
"private variable",
+ "padsv scalar assignment",
"private array",
"private hash",
"private value",
@@ -699,6 +710,7 @@ EXTCONST char* const PL_op_desc[] = {
"array dereference",
"constant array element",
"constant lexical array element",
+ "const lexical array element store",
"array element",
"array slice",
"index/value array slice",
@@ -723,6 +735,7 @@ EXTCONST char* const PL_op_desc[] = {
"list slice",
"anonymous array ([])",
"anonymous hash ({})",
+ "empty anon hash/array",
"splice",
"push",
"pop",
@@ -965,17 +978,29 @@ EXTCONST char* const PL_op_desc[] = {
"try {block} exit",
"pop try",
"catch {} block",
- "freed op",
-};
-#endif
+ "push defer {} block",
+ "boolean type test",
+ "weakref type test",
+ "reference weaken",
+ "reference unweaken",
+ "blessed",
+ "refaddr",
+ "reftype",
+ "ceil",
+ "floor",
+ "is_tainted",
+ "hash element exists or",
+ "method start",
+ "initialise field",
+ "freed op",
+});
END_EXTERN_C
START_EXTERN_C
EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
-#if defined(DOINIT)
-= {
+INIT({
Perl_pp_null,
Perl_pp_stub,
Perl_pp_scalar, /* implemented by Perl_pp_null */
@@ -986,6 +1011,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
Perl_pp_gv,
Perl_pp_gelem,
Perl_pp_padsv,
+ Perl_pp_padsv_store,
Perl_pp_padav,
Perl_pp_padhv,
Perl_pp_padany, /* implemented by Perl_unimplemented_op */
@@ -1114,6 +1140,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
Perl_pp_rv2av,
Perl_pp_aelemfast,
Perl_pp_aelemfast_lex, /* implemented by Perl_pp_aelemfast */
+ Perl_pp_aelemfastlex_store,
Perl_pp_aelem,
Perl_pp_aslice,
Perl_pp_kvaslice,
@@ -1138,6 +1165,7 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
Perl_pp_lslice,
Perl_pp_anonlist,
Perl_pp_anonhash,
+ Perl_pp_emptyavhv,
Perl_pp_splice,
Perl_pp_push,
Perl_pp_pop, /* implemented by Perl_pp_shift */
@@ -1380,13 +1408,24 @@ EXT Perl_ppaddr_t PL_ppaddr[] /* or perlvars.h */
Perl_pp_leavetrycatch,
Perl_pp_poptry,
Perl_pp_catch,
-}
-#endif
-;
+ Perl_pp_pushdefer,
+ Perl_pp_is_bool,
+ Perl_pp_is_weak,
+ Perl_pp_weaken,
+ Perl_pp_unweaken,
+ Perl_pp_blessed,
+ Perl_pp_refaddr,
+ Perl_pp_reftype,
+ Perl_pp_ceil,
+ Perl_pp_floor,
+ Perl_pp_is_tainted,
+ Perl_pp_helemexistsor,
+ Perl_pp_methstart,
+ Perl_pp_initfield,
+});
EXT Perl_check_t PL_check[] /* or perlvars.h */
-#if defined(DOINIT)
-= {
+INIT({
Perl_ck_null, /* null */
Perl_ck_null, /* stub */
Perl_ck_fun, /* scalar */
@@ -1397,6 +1436,7 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
Perl_ck_null, /* gv */
Perl_ck_null, /* gelem */
Perl_ck_null, /* padsv */
+ Perl_ck_sassign, /* padsv_store */
Perl_ck_null, /* padav */
Perl_ck_null, /* padhv */
Perl_ck_null, /* padany */
@@ -1525,6 +1565,7 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
Perl_ck_rvconst, /* rv2av */
Perl_ck_null, /* aelemfast */
Perl_ck_null, /* aelemfast_lex */
+ Perl_ck_null, /* aelemfastlex_store */
Perl_ck_null, /* aelem */
Perl_ck_null, /* aslice */
Perl_ck_null, /* kvaslice */
@@ -1549,6 +1590,7 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
Perl_ck_null, /* lslice */
Perl_ck_fun, /* anonlist */
Perl_ck_fun, /* anonhash */
+ Perl_ck_fun, /* emptyavhv */
Perl_ck_fun, /* splice */
Perl_ck_fun, /* push */
Perl_ck_shift, /* pop */
@@ -1791,14 +1833,23 @@ EXT Perl_check_t PL_check[] /* or perlvars.h */
Perl_ck_null, /* leavetrycatch */
Perl_ck_null, /* poptry */
Perl_ck_null, /* catch */
-}
-#endif
-;
+ Perl_ck_null, /* pushdefer */
+ Perl_ck_null, /* is_bool */
+ Perl_ck_null, /* is_weak */
+ Perl_ck_null, /* weaken */
+ Perl_ck_null, /* unweaken */
+ Perl_ck_null, /* blessed */
+ Perl_ck_null, /* refaddr */
+ Perl_ck_null, /* reftype */
+ Perl_ck_null, /* ceil */
+ Perl_ck_null, /* floor */
+ Perl_ck_null, /* is_tainted */
+ Perl_ck_helemexistsor, /* helemexistsor */
+ Perl_ck_null, /* methstart */
+ Perl_ck_null, /* initfield */
+});
-#ifndef DOINIT
-EXTCONST U32 PL_opargs[];
-#else
-EXTCONST U32 PL_opargs[] = {
+EXTCONST U32 PL_opargs[] INIT({
0x00000000, /* null */
0x00000000, /* stub */
0x00001b04, /* scalar */
@@ -1809,6 +1860,7 @@ EXTCONST U32 PL_opargs[] = {
0x00000644, /* gv */
0x00011244, /* gelem */
0x00000044, /* padsv */
+ 0x00011104, /* padsv_store */
0x00000040, /* padav */
0x00000040, /* padhv */
0x00000040, /* padany */
@@ -1937,6 +1989,7 @@ EXTCONST U32 PL_opargs[] = {
0x00000148, /* rv2av */
0x00013644, /* aelemfast */
0x00013040, /* aelemfast_lex */
+ 0x00013140, /* aelemfastlex_store */
0x00013204, /* aelem */
0x00023401, /* aslice */
0x00023401, /* kvaslice */
@@ -1961,6 +2014,7 @@ EXTCONST U32 PL_opargs[] = {
0x00224200, /* lslice */
0x00002405, /* anonlist */
0x00002405, /* anonhash */
+ 0x0000241c, /* emptyavhv */
0x02993401, /* splice */
0x0002341d, /* push */
0x0000bb04, /* pop */
@@ -2203,8 +2257,21 @@ EXTCONST U32 PL_opargs[] = {
0x00000400, /* leavetrycatch */
0x00000400, /* poptry */
0x00000300, /* catch */
-};
-#endif
+ 0x00000300, /* pushdefer */
+ 0x00000106, /* is_bool */
+ 0x00000106, /* is_weak */
+ 0x00000100, /* weaken */
+ 0x00000100, /* unweaken */
+ 0x00000106, /* blessed */
+ 0x0000011e, /* refaddr */
+ 0x0000011e, /* reftype */
+ 0x0000011e, /* ceil */
+ 0x0000011e, /* floor */
+ 0x00000106, /* is_tainted */
+ 0x00011300, /* helemexistsor */
+ 0x00000f00, /* methstart */
+ 0x00000f00, /* initfield */
+});
END_EXTERN_C
@@ -2224,6 +2291,7 @@ END_EXTERN_C
#define OPpEVAL_HAS_HH 0x02
#define OPpFT_ACCESS 0x02
#define OPpHINT_STRICT_REFS 0x02
+#define OPpINITFIELD_AV 0x02
#define OPpITER_REVERSED 0x02
#define OPpSORT_INTEGER 0x02
#define OPpTRANS_USE_SVOP 0x02
@@ -2236,11 +2304,13 @@ END_EXTERN_C
#define OPpENTERSUB_HASTARG 0x04
#define OPpEVAL_UNICODE 0x04
#define OPpFT_STACKED 0x04
+#define OPpINITFIELD_HV 0x04
#define OPpLVREF_ELEM 0x04
#define OPpSLICEWARNING 0x04
#define OPpSORT_REVERSE 0x04
#define OPpSPLIT_IMPLIM 0x04
#define OPpTRANS_IDENTICAL 0x04
+#define OPpUSEINT 0x04
#define OPpARGELEM_MASK 0x06
#define OPpARG3_MASK 0x07
#define OPpPADRANGE_COUNTSHIFT 0x07
@@ -2273,6 +2343,7 @@ END_EXTERN_C
#define OPpASSIGN_COMMON_RC1 0x20
#define OPpDEREF_HV 0x20
#define OPpEARLY_CV 0x20
+#define OPpEMPTYAVHV_IS_HV 0x20
#define OPpEVAL_RE_REPARSING 0x20
#define OPpHUSH_VMSISH 0x20
#define OPpKVSLICE 0x20
@@ -2283,17 +2354,20 @@ END_EXTERN_C
#define OPpOPEN_IN_CRLF 0x20
#define OPpTRANS_COMPLEMENT 0x20
#define OPpTRUEBOOL 0x20
+#define OPpUNDEF_KEEP_PV 0x20
#define OPpDEREF 0x30
#define OPpDEREF_SV 0x30
#define OPpLVREF_CV 0x30
#define OPpLVREF_TYPE 0x30
#define OPpALLOW_FAKE 0x40
+#define OPpARG_IF_FALSE 0x40
#define OPpASSIGN_BACKWARDS 0x40
#define OPpASSIGN_COMMON_SCALAR 0x40
#define OPpCONCAT_NESTED 0x40
#define OPpCONST_BARE 0x40
#define OPpCOREARGS_SCALARMOD 0x40
#define OPpENTERSUB_DB 0x40
+#define OPpEVAL_EVALSV 0x40
#define OPpEXISTS_SUB 0x40
#define OPpFLIP_LINENUM 0x40
#define OPpINDEX_BOOLNEG 0x40
@@ -2306,18 +2380,20 @@ END_EXTERN_C
#define OPpREFCOUNTED 0x40
#define OPpREPEAT_DOLIST 0x40
#define OPpSLICE 0x40
-#define OPpSORT_STABLE 0x40
#define OPpTRANS_GROWS 0x40
#define OPpPADRANGE_COUNTMASK 0x7f
+#define OPpARG_IF_UNDEF 0x80
#define OPpASSIGN_CV_TO_GV 0x80
#define OPpCOREARGS_PUSHMARK 0x80
+#define OPpDEFER_FINALLY 0x80
#define OPpENTERSUB_NOPAREN 0x80
+#define OPpHELEMEXISTSOR_DELETE 0x80
+#define OPpINITFIELDS 0x80
#define OPpLVALUE 0x80
#define OPpLVAL_INTRO 0x80
#define OPpOFFBYONE 0x80
#define OPpOPEN_OUT_CRLF 0x80
#define OPpPV_IS_UTF8 0x80
-#define OPpSORT_UNSTABLE 0x80
#define OPpTRANS_DELETE 0x80
START_EXTERN_C
@@ -2344,6 +2420,7 @@ EXTCONST char PL_op_private_labels[] = {
'+','1','\0',
'-','\0',
'A','M','P','E','R','\0',
+ 'A','N','O','N','H','A','S','H','\0',
'A','P','P','E','N','D','\0',
'A','S','S','I','G','N','\0',
'A','V','\0',
@@ -2375,8 +2452,10 @@ EXTCONST char PL_op_private_labels[] = {
'E','A','R','L','Y','C','V','\0',
'E','L','E','M','\0',
'E','N','T','E','R','E','D','\0',
+ 'E','V','A','L','S','V','\0',
'E','X','I','S','T','S','\0',
'F','A','K','E','\0',
+ 'F','I','N','A','L','L','Y','\0',
'F','T','A','C','C','E','S','S','\0',
'F','T','A','F','T','E','R','t','\0',
'F','T','S','T','A','C','K','E','D','\0',
@@ -2387,13 +2466,19 @@ EXTCONST char PL_op_private_labels[] = {
'H','U','S','H','\0',
'H','V','\0',
'I','D','E','N','T','\0',
+ 'I','F','_','F','A','L','S','E','\0',
+ 'I','F','_','U','N','D','E','F','\0',
'I','M','P','L','I','M','\0',
'I','N','A','R','G','S','\0',
'I','N','B','I','N','\0',
'I','N','C','R','\0',
+ 'I','N','I','T','F','I','E','L','D','S','\0',
+ 'I','N','I','T','F','I','E','L','D','_','A','V','\0',
+ 'I','N','I','T','F','I','E','L','D','_','H','V','\0',
'I','N','P','L','A','C','E','\0',
'I','N','T','\0',
'I','T','E','R','\0',
+ 'K','E','E','P','_','P','V','\0',
'K','E','Y','S','\0',
'K','V','S','L','I','C','E','\0',
'L','E','X','\0',
@@ -2421,7 +2506,6 @@ EXTCONST char PL_op_private_labels[] = {
'S','L','I','C','E','\0',
'S','L','I','C','E','W','A','R','N','\0',
'S','Q','U','A','S','H','\0',
- 'S','T','A','B','L','E','\0',
'S','T','A','T','E','\0',
'S','T','R','I','C','T','\0',
'S','T','R','I','N','G','I','F','Y','\0',
@@ -2430,7 +2514,7 @@ EXTCONST char PL_op_private_labels[] = {
'T','A','R','G','\0',
'T','A','R','G','M','Y','\0',
'U','N','I','\0',
- 'U','N','S','T','A','B','L','E','\0',
+ 'U','S','E','I','N','T','\0',
'U','S','E','_','S','V','O','P','\0',
'U','T','F','\0',
'k','e','y','\0',
@@ -2454,14 +2538,14 @@ EXTCONST char PL_op_private_labels[] = {
EXTCONST I16 PL_op_private_bitfields[] = {
0, 8, -1,
0, 8, -1,
- 0, 597, -1,
+ 0, 675, -1,
0, 8, -1,
0, 8, -1,
- 0, 604, -1,
- 0, 593, -1,
- 1, -1, 0, 552, 1, 30, 2, 295, -1,
- 4, -1, 1, 176, 2, 183, 3, 190, -1,
- 4, -1, 0, 552, 1, 30, 2, 295, 3, 122, -1,
+ 0, 682, -1,
+ 0, 671, -1,
+ 1, -1, 0, 632, 1, 39, 2, 319, -1,
+ 4, -1, 1, 185, 2, 192, 3, 199, -1,
+ 4, -1, 0, 632, 1, 39, 2, 319, 3, 131, -1,
};
@@ -2480,21 +2564,22 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = {
11, /* gv */
12, /* gelem */
13, /* padsv */
- 16, /* padav */
- 21, /* padhv */
+ 16, /* padsv_store */
+ 19, /* padav */
+ 24, /* padhv */
-1, /* padany */
- 28, /* rv2gv */
- 35, /* rv2sv */
- 40, /* av2arylen */
- 42, /* rv2cv */
+ 31, /* rv2gv */
+ 38, /* rv2sv */
+ 43, /* av2arylen */
+ 45, /* rv2cv */
-1, /* anoncode */
0, /* prototype */
0, /* refgen */
0, /* srefgen */
- 49, /* ref */
- 52, /* bless */
- 53, /* backtick */
- 52, /* glob */
+ 52, /* ref */
+ 55, /* bless */
+ 56, /* backtick */
+ 55, /* glob */
0, /* readline */
-1, /* rcatline */
0, /* regcmaybe */
@@ -2502,20 +2587,20 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = {
0, /* regcomp */
-1, /* match */
-1, /* qr */
- 58, /* subst */
+ 61, /* subst */
0, /* substcont */
- 59, /* trans */
- 59, /* transr */
- 66, /* sassign */
- 69, /* aassign */
+ 62, /* trans */
+ 62, /* transr */
+ 69, /* sassign */
+ 72, /* aassign */
0, /* chop */
0, /* schop */
- 75, /* chomp */
- 75, /* schomp */
+ 78, /* chomp */
+ 78, /* schomp */
0, /* defined */
- 0, /* undef */
+ 80, /* undef */
0, /* study */
- 77, /* pos */
+ 85, /* pos */
0, /* preinc */
0, /* i_preinc */
0, /* predec */
@@ -2524,23 +2609,23 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = {
0, /* i_postinc */
0, /* postdec */
0, /* i_postdec */
- 80, /* pow */
- 80, /* multiply */
- 80, /* i_multiply */
- 80, /* divide */
- 80, /* i_divide */
- 80, /* modulo */
- 80, /* i_modulo */
- 82, /* repeat */
- 80, /* add */
- 80, /* i_add */
- 80, /* subtract */
- 80, /* i_subtract */
- 84, /* concat */
- 87, /* multiconcat */
- 93, /* stringify */
- 80, /* left_shift */
- 80, /* right_shift */
+ 88, /* pow */
+ 88, /* multiply */
+ 88, /* i_multiply */
+ 88, /* divide */
+ 88, /* i_divide */
+ 88, /* modulo */
+ 88, /* i_modulo */
+ 90, /* repeat */
+ 88, /* add */
+ 88, /* i_add */
+ 88, /* subtract */
+ 88, /* i_subtract */
+ 92, /* concat */
+ 95, /* multiconcat */
+ 101, /* stringify */
+ 103, /* left_shift */
+ 103, /* right_shift */
12, /* lt */
12, /* i_lt */
12, /* gt */
@@ -2562,126 +2647,128 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = {
12, /* seq */
12, /* sne */
12, /* scmp */
- 12, /* bit_and */
- 12, /* bit_xor */
- 12, /* bit_or */
- 80, /* nbit_and */
- 80, /* nbit_xor */
- 80, /* nbit_or */
- 12, /* sbit_and */
- 12, /* sbit_xor */
- 12, /* sbit_or */
+ 105, /* bit_and */
+ 105, /* bit_xor */
+ 105, /* bit_or */
+ 103, /* nbit_and */
+ 103, /* nbit_xor */
+ 103, /* nbit_or */
+ 105, /* sbit_and */
+ 105, /* sbit_xor */
+ 105, /* sbit_or */
0, /* negate */
0, /* i_negate */
0, /* not */
- 0, /* complement */
- 75, /* ncomplement */
- 75, /* scomplement */
+ 105, /* complement */
+ 103, /* ncomplement */
+ 78, /* scomplement */
12, /* smartmatch */
- 93, /* atan2 */
- 75, /* sin */
- 75, /* cos */
- 93, /* rand */
- 93, /* srand */
- 75, /* exp */
- 75, /* log */
- 75, /* sqrt */
- 75, /* int */
- 75, /* hex */
- 75, /* oct */
- 75, /* abs */
- 95, /* length */
- 98, /* substr */
- 101, /* vec */
- 103, /* index */
- 103, /* rindex */
- 52, /* sprintf */
- 52, /* formline */
- 75, /* ord */
- 75, /* chr */
- 93, /* crypt */
+ 101, /* atan2 */
+ 78, /* sin */
+ 78, /* cos */
+ 101, /* rand */
+ 101, /* srand */
+ 78, /* exp */
+ 78, /* log */
+ 78, /* sqrt */
+ 78, /* int */
+ 78, /* hex */
+ 78, /* oct */
+ 78, /* abs */
+ 106, /* length */
+ 109, /* substr */
+ 112, /* vec */
+ 114, /* index */
+ 114, /* rindex */
+ 55, /* sprintf */
+ 55, /* formline */
+ 78, /* ord */
+ 78, /* chr */
+ 101, /* crypt */
0, /* ucfirst */
0, /* lcfirst */
0, /* uc */
0, /* lc */
0, /* quotemeta */
- 107, /* rv2av */
- 114, /* aelemfast */
- 114, /* aelemfast_lex */
- 115, /* aelem */
- 120, /* aslice */
- 123, /* kvaslice */
+ 118, /* rv2av */
+ 125, /* aelemfast */
+ 125, /* aelemfast_lex */
+ 125, /* aelemfastlex_store */
+ 126, /* aelem */
+ 131, /* aslice */
+ 134, /* kvaslice */
0, /* aeach */
0, /* avalues */
- 40, /* akeys */
+ 43, /* akeys */
0, /* each */
- 40, /* values */
- 40, /* keys */
- 124, /* delete */
- 128, /* exists */
- 130, /* rv2hv */
- 115, /* helem */
- 120, /* hslice */
- 123, /* kvhslice */
- 138, /* multideref */
- 52, /* unpack */
- 52, /* pack */
- 145, /* split */
- 52, /* join */
- 150, /* list */
+ 43, /* values */
+ 43, /* keys */
+ 135, /* delete */
+ 139, /* exists */
+ 141, /* rv2hv */
+ 126, /* helem */
+ 131, /* hslice */
+ 134, /* kvhslice */
+ 149, /* multideref */
+ 55, /* unpack */
+ 55, /* pack */
+ 156, /* split */
+ 55, /* join */
+ 161, /* list */
12, /* lslice */
- 52, /* anonlist */
- 52, /* anonhash */
- 52, /* splice */
- 93, /* push */
+ 55, /* anonlist */
+ 55, /* anonhash */
+ 163, /* emptyavhv */
+ 55, /* splice */
+ 101, /* push */
0, /* pop */
0, /* shift */
- 93, /* unshift */
- 152, /* sort */
- 159, /* reverse */
+ 101, /* unshift */
+ 168, /* sort */
+ 173, /* reverse */
0, /* grepstart */
- 161, /* grepwhile */
+ 175, /* grepwhile */
0, /* mapstart */
0, /* mapwhile */
0, /* range */
- 163, /* flip */
- 163, /* flop */
+ 177, /* flip */
+ 177, /* flop */
0, /* and */
0, /* or */
12, /* xor */
0, /* dor */
- 165, /* cond_expr */
+ 179, /* cond_expr */
0, /* andassign */
0, /* orassign */
0, /* dorassign */
- 167, /* entersub */
- 174, /* leavesub */
- 174, /* leavesublv */
+ 181, /* entersub */
+ 188, /* leavesub */
+ 188, /* leavesublv */
0, /* argcheck */
- 176, /* argelem */
- 0, /* argdefelem */
- 178, /* caller */
- 52, /* warn */
- 52, /* die */
- 52, /* reset */
+ 190, /* argelem */
+ 192, /* argdefelem */
+ 195, /* caller */
+ 55, /* warn */
+ 55, /* die */
+ 55, /* reset */
-1, /* lineseq */
- 180, /* nextstate */
- 180, /* dbstate */
+ 197, /* nextstate */
+ 197, /* dbstate */
-1, /* unstack */
-1, /* enter */
- 181, /* leave */
+ 198, /* leave */
-1, /* scope */
- 183, /* enteriter */
- 187, /* iter */
+ 200, /* enteriter */
+ 204, /* iter */
-1, /* enterloop */
- 188, /* leaveloop */
+ 205, /* leaveloop */
-1, /* return */
- 190, /* last */
- 190, /* next */
- 190, /* redo */
- 190, /* dump */
- 190, /* goto */
- 52, /* exit */
+ 207, /* last */
+ 207, /* next */
+ 207, /* redo */
+ 207, /* dump */
+ 207, /* goto */
+ 55, /* exit */
0, /* method */
0, /* method_named */
0, /* method_super */
@@ -2693,143 +2780,143 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = {
0, /* leavewhen */
-1, /* break */
-1, /* continue */
- 192, /* open */
- 52, /* close */
- 52, /* pipe_op */
- 52, /* fileno */
- 52, /* umask */
- 52, /* binmode */
- 52, /* tie */
+ 209, /* open */
+ 55, /* close */
+ 55, /* pipe_op */
+ 55, /* fileno */
+ 55, /* umask */
+ 55, /* binmode */
+ 55, /* tie */
0, /* untie */
0, /* tied */
- 52, /* dbmopen */
+ 55, /* dbmopen */
0, /* dbmclose */
- 52, /* sselect */
- 52, /* select */
- 52, /* getc */
- 52, /* read */
- 52, /* enterwrite */
- 174, /* leavewrite */
+ 55, /* sselect */
+ 55, /* select */
+ 55, /* getc */
+ 55, /* read */
+ 55, /* enterwrite */
+ 188, /* leavewrite */
-1, /* prtf */
-1, /* print */
-1, /* say */
- 52, /* sysopen */
- 52, /* sysseek */
- 52, /* sysread */
- 52, /* syswrite */
- 52, /* eof */
- 52, /* tell */
- 52, /* seek */
- 52, /* truncate */
- 52, /* fcntl */
- 52, /* ioctl */
- 93, /* flock */
- 52, /* send */
- 52, /* recv */
- 52, /* socket */
- 52, /* sockpair */
- 52, /* bind */
- 52, /* connect */
- 52, /* listen */
- 52, /* accept */
- 52, /* shutdown */
- 52, /* gsockopt */
- 52, /* ssockopt */
+ 55, /* sysopen */
+ 55, /* sysseek */
+ 55, /* sysread */
+ 55, /* syswrite */
+ 55, /* eof */
+ 55, /* tell */
+ 55, /* seek */
+ 55, /* truncate */
+ 55, /* fcntl */
+ 55, /* ioctl */
+ 101, /* flock */
+ 55, /* send */
+ 55, /* recv */
+ 55, /* socket */
+ 55, /* sockpair */
+ 55, /* bind */
+ 55, /* connect */
+ 55, /* listen */
+ 55, /* accept */
+ 55, /* shutdown */
+ 55, /* gsockopt */
+ 55, /* ssockopt */
0, /* getsockname */
0, /* getpeername */
0, /* lstat */
0, /* stat */
- 197, /* ftrread */
- 197, /* ftrwrite */
- 197, /* ftrexec */
- 197, /* fteread */
- 197, /* ftewrite */
- 197, /* fteexec */
- 202, /* ftis */
- 202, /* ftsize */
- 202, /* ftmtime */
- 202, /* ftatime */
- 202, /* ftctime */
- 202, /* ftrowned */
- 202, /* fteowned */
- 202, /* ftzero */
- 202, /* ftsock */
- 202, /* ftchr */
- 202, /* ftblk */
- 202, /* ftfile */
- 202, /* ftdir */
- 202, /* ftpipe */
- 202, /* ftsuid */
- 202, /* ftsgid */
- 202, /* ftsvtx */
- 202, /* ftlink */
- 202, /* fttty */
- 202, /* fttext */
- 202, /* ftbinary */
- 93, /* chdir */
- 93, /* chown */
- 75, /* chroot */
- 93, /* unlink */
- 93, /* chmod */
- 93, /* utime */
- 93, /* rename */
- 93, /* link */
- 93, /* symlink */
+ 214, /* ftrread */
+ 214, /* ftrwrite */
+ 214, /* ftrexec */
+ 214, /* fteread */
+ 214, /* ftewrite */
+ 214, /* fteexec */
+ 219, /* ftis */
+ 219, /* ftsize */
+ 219, /* ftmtime */
+ 219, /* ftatime */
+ 219, /* ftctime */
+ 219, /* ftrowned */
+ 219, /* fteowned */
+ 219, /* ftzero */
+ 219, /* ftsock */
+ 219, /* ftchr */
+ 219, /* ftblk */
+ 219, /* ftfile */
+ 219, /* ftdir */
+ 219, /* ftpipe */
+ 219, /* ftsuid */
+ 219, /* ftsgid */
+ 219, /* ftsvtx */
+ 219, /* ftlink */
+ 219, /* fttty */
+ 219, /* fttext */
+ 219, /* ftbinary */
+ 101, /* chdir */
+ 101, /* chown */
+ 78, /* chroot */
+ 101, /* unlink */
+ 101, /* chmod */
+ 101, /* utime */
+ 101, /* rename */
+ 101, /* link */
+ 101, /* symlink */
0, /* readlink */
- 93, /* mkdir */
- 75, /* rmdir */
- 52, /* open_dir */
+ 101, /* mkdir */
+ 78, /* rmdir */
+ 55, /* open_dir */
0, /* readdir */
0, /* telldir */
- 52, /* seekdir */
+ 55, /* seekdir */
0, /* rewinddir */
0, /* closedir */
-1, /* fork */
- 206, /* wait */
- 93, /* waitpid */
- 93, /* system */
- 93, /* exec */
- 93, /* kill */
- 206, /* getppid */
- 93, /* getpgrp */
- 93, /* setpgrp */
- 93, /* getpriority */
- 93, /* setpriority */
- 206, /* time */
+ 223, /* wait */
+ 101, /* waitpid */
+ 101, /* system */
+ 101, /* exec */
+ 101, /* kill */
+ 223, /* getppid */
+ 101, /* getpgrp */
+ 101, /* setpgrp */
+ 101, /* getpriority */
+ 101, /* setpriority */
+ 223, /* time */
-1, /* tms */
0, /* localtime */
- 52, /* gmtime */
+ 55, /* gmtime */
0, /* alarm */
- 93, /* sleep */
- 52, /* shmget */
- 52, /* shmctl */
- 52, /* shmread */
- 52, /* shmwrite */
- 52, /* msgget */
- 52, /* msgctl */
- 52, /* msgsnd */
- 52, /* msgrcv */
- 52, /* semop */
- 52, /* semget */
- 52, /* semctl */
+ 101, /* sleep */
+ 55, /* shmget */
+ 55, /* shmctl */
+ 55, /* shmread */
+ 55, /* shmwrite */
+ 55, /* msgget */
+ 55, /* msgctl */
+ 55, /* msgsnd */
+ 55, /* msgrcv */
+ 55, /* semop */
+ 55, /* semget */
+ 55, /* semctl */
0, /* require */
0, /* dofile */
-1, /* hintseval */
- 207, /* entereval */
- 174, /* leaveeval */
+ 224, /* entereval */
+ 188, /* leaveeval */
0, /* entertry */
-1, /* leavetry */
0, /* ghbyname */
- 52, /* ghbyaddr */
+ 55, /* ghbyaddr */
-1, /* ghostent */
0, /* gnbyname */
- 52, /* gnbyaddr */
+ 55, /* gnbyaddr */
-1, /* gnetent */
0, /* gpbyname */
- 52, /* gpbynumber */
+ 55, /* gpbynumber */
-1, /* gprotoent */
- 52, /* gsbyname */
- 52, /* gsbyport */
+ 55, /* gsbyname */
+ 55, /* gsbyport */
-1, /* gservent */
0, /* shostent */
0, /* snetent */
@@ -2850,22 +2937,22 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = {
-1, /* sgrent */
-1, /* egrent */
-1, /* getlogin */
- 52, /* syscall */
+ 55, /* syscall */
0, /* lock */
0, /* once */
-1, /* custom */
- 213, /* coreargs */
- 217, /* avhvswitch */
+ 231, /* coreargs */
+ 235, /* avhvswitch */
3, /* runcv */
0, /* fc */
-1, /* padcv */
-1, /* introcv */
-1, /* clonecv */
- 219, /* padrange */
- 221, /* refassign */
- 227, /* lvref */
- 233, /* lvrefslice */
- 234, /* lvavref */
+ 237, /* padrange */
+ 239, /* refassign */
+ 245, /* lvref */
+ 251, /* lvrefslice */
+ 16, /* lvavref */
0, /* anonconst */
12, /* isa */
0, /* cmpchain_and */
@@ -2874,6 +2961,20 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = {
-1, /* leavetrycatch */
-1, /* poptry */
0, /* catch */
+ 252, /* pushdefer */
+ 0, /* is_bool */
+ 0, /* is_weak */
+ 0, /* weaken */
+ 0, /* unweaken */
+ 52, /* blessed */
+ 78, /* refaddr */
+ 78, /* reftype */
+ 78, /* ceil */
+ 78, /* floor */
+ 0, /* is_tainted */
+ 254, /* helemexistsor */
+ 256, /* methstart */
+ 258, /* initfield */
};
@@ -2892,76 +2993,85 @@ EXTCONST I16 PL_op_private_bitdef_ix[] = {
*/
EXTCONST U16 PL_op_private_bitdefs[] = {
- 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, undef, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, complement, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, argdefelem, method, method_named, method_super, method_redir, method_redir_super, entergiven, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst, cmpchain_and, cmpchain_dup, entertrycatch, catch */
- 0x2fdc, 0x41b9, /* pushmark */
+ 0x0003, /* scalar, prototype, refgen, srefgen, readline, regcmaybe, regcreset, regcomp, substcont, chop, schop, defined, study, preinc, i_preinc, predec, i_predec, postinc, i_postinc, postdec, i_postdec, negate, i_negate, not, ucfirst, lcfirst, uc, lc, quotemeta, aeach, avalues, each, pop, shift, grepstart, mapstart, mapwhile, range, and, or, dor, andassign, orassign, dorassign, argcheck, method, method_named, method_super, method_redir, method_redir_super, entergiven, leavegiven, enterwhen, leavewhen, untie, tied, dbmclose, getsockname, getpeername, lstat, stat, readlink, readdir, telldir, rewinddir, closedir, localtime, alarm, require, dofile, entertry, ghbyname, gnbyname, gpbyname, shostent, snetent, sprotoent, sservent, gpwnam, gpwuid, ggrnam, ggrgid, lock, once, fc, anonconst, cmpchain_and, cmpchain_dup, entertrycatch, catch, is_bool, is_weak, weaken, unweaken, is_tainted */
+ 0x3abc, 0x4bb9, /* pushmark */
0x00bd, /* wantarray, runcv */
- 0x0438, 0x1a50, 0x426c, 0x3d28, 0x3505, /* const */
- 0x2fdc, 0x3659, /* gvsv */
- 0x18b5, /* gv */
- 0x0067, /* gelem, lt, i_lt, gt, i_gt, le, i_le, ge, i_ge, eq, i_eq, ne, i_ne, ncmp, i_ncmp, slt, sgt, sle, sge, seq, sne, scmp, bit_and, bit_xor, bit_or, sbit_and, sbit_xor, sbit_or, smartmatch, lslice, xor, isa */
- 0x2fdc, 0x41b8, 0x03d7, /* padsv */
- 0x2fdc, 0x41b8, 0x05b4, 0x30cc, 0x3ea9, /* padav */
- 0x2fdc, 0x41b8, 0x05b4, 0x0650, 0x30cc, 0x3ea8, 0x2b41, /* padhv */
- 0x2fdc, 0x1c38, 0x03d6, 0x30cc, 0x3428, 0x4264, 0x0003, /* rv2gv */
- 0x2fdc, 0x3658, 0x03d6, 0x4264, 0x0003, /* rv2sv */
- 0x30cc, 0x0003, /* av2arylen, akeys, values, keys */
- 0x339c, 0x1078, 0x0dd4, 0x014c, 0x4568, 0x4264, 0x0003, /* rv2cv */
- 0x05b4, 0x0650, 0x0003, /* ref */
+ 0x0558, 0x1b70, 0x4c6c, 0x4808, 0x3fe5, /* const */
+ 0x3abc, 0x4139, /* gvsv */
+ 0x19d5, /* gv */
+ 0x0067, /* gelem, lt, i_lt, gt, i_gt, le, i_le, ge, i_ge, eq, i_eq, ne, i_ne, ncmp, i_ncmp, slt, sgt, sle, sge, seq, sne, scmp, smartmatch, lslice, xor, isa */
+ 0x3abc, 0x4bb8, 0x03d7, /* padsv */
+ 0x3abc, 0x4bb8, 0x0003, /* padsv_store, lvavref */
+ 0x3abc, 0x4bb8, 0x06d4, 0x3bac, 0x4989, /* padav */
+ 0x3abc, 0x4bb8, 0x06d4, 0x0770, 0x3bac, 0x4988, 0x3621, /* padhv */
+ 0x3abc, 0x1e38, 0x03d6, 0x3bac, 0x3f08, 0x4c64, 0x0003, /* rv2gv */
+ 0x3abc, 0x4138, 0x03d6, 0x4c64, 0x0003, /* rv2sv */
+ 0x3bac, 0x0003, /* av2arylen, akeys, values, keys */
+ 0x3e7c, 0x1198, 0x0ef4, 0x014c, 0x4f68, 0x4c64, 0x0003, /* rv2cv */
+ 0x06d4, 0x0770, 0x0003, /* ref, blessed */
0x018f, /* bless, glob, sprintf, formline, unpack, pack, join, anonlist, anonhash, splice, warn, die, reset, exit, close, pipe_op, fileno, umask, binmode, tie, dbmopen, sselect, select, getc, read, enterwrite, sysopen, sysseek, sysread, syswrite, eof, tell, seek, truncate, fcntl, ioctl, send, recv, socket, sockpair, bind, connect, listen, accept, shutdown, gsockopt, ssockopt, open_dir, seekdir, gmtime, shmget, shmctl, shmread, shmwrite, msgget, msgctl, msgsnd, msgrcv, semop, semget, semctl, ghbyaddr, gnbyaddr, gpbynumber, gsbyname, gsbyport, syscall */
- 0x383c, 0x3758, 0x2894, 0x27d0, 0x0003, /* backtick */
- 0x05b5, /* subst */
- 0x117c, 0x21b8, 0x09b4, 0x3fec, 0x2548, 0x4884, 0x07c1, /* trans, transr */
- 0x0fbc, 0x04d8, 0x0067, /* sassign */
- 0x0c78, 0x0b74, 0x0a70, 0x30cc, 0x05a8, 0x0067, /* aassign */
- 0x4610, 0x0003, /* chomp, schomp, ncomplement, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, ord, chr, chroot, rmdir */
- 0x05b4, 0x30cc, 0x0003, /* pos */
- 0x4610, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract, left_shift, right_shift, nbit_and, nbit_xor, nbit_or */
- 0x1538, 0x0067, /* repeat */
- 0x32b8, 0x4610, 0x0067, /* concat */
- 0x2fdc, 0x0218, 0x1c34, 0x4610, 0x434c, 0x0003, /* multiconcat */
- 0x4610, 0x018f, /* stringify, atan2, rand, srand, crypt, push, unshift, flock, chdir, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgrp, setpgrp, getpriority, setpriority, sleep */
- 0x05b4, 0x4610, 0x0003, /* length */
- 0x3a90, 0x30cc, 0x012b, /* substr */
- 0x30cc, 0x0067, /* vec */
- 0x3238, 0x05b4, 0x4610, 0x018f, /* index, rindex */
- 0x2fdc, 0x3658, 0x05b4, 0x30cc, 0x3ea8, 0x4264, 0x0003, /* rv2av */
- 0x025f, /* aelemfast, aelemfast_lex */
- 0x2fdc, 0x2ed8, 0x03d6, 0x30cc, 0x0067, /* aelem, helem */
- 0x2fdc, 0x30cc, 0x3ea9, /* aslice, hslice */
- 0x30cd, /* kvaslice, kvhslice */
- 0x2fdc, 0x3df8, 0x2bf4, 0x0003, /* delete */
- 0x4498, 0x0003, /* exists */
- 0x2fdc, 0x3658, 0x05b4, 0x0650, 0x30cc, 0x3ea8, 0x4264, 0x2b41, /* rv2hv */
- 0x2fdc, 0x2ed8, 0x11f4, 0x1b50, 0x30cc, 0x4264, 0x0003, /* multideref */
- 0x2fdc, 0x3658, 0x02f0, 0x2cec, 0x2609, /* split */
- 0x2fdc, 0x2279, /* list */
- 0x477c, 0x40d8, 0x1490, 0x292c, 0x3b88, 0x2a24, 0x35c1, /* sort */
- 0x292c, 0x0003, /* reverse */
- 0x05b4, 0x0003, /* grepwhile */
- 0x2d78, 0x0003, /* flip, flop */
- 0x2fdc, 0x0003, /* cond_expr */
- 0x2fdc, 0x1078, 0x03d6, 0x014c, 0x4568, 0x4264, 0x26e1, /* entersub */
- 0x38f8, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */
+ 0x431c, 0x4238, 0x2dd4, 0x2d10, 0x0003, /* backtick */
+ 0x06d5, /* subst */
+ 0x129c, 0x24b8, 0x0ad4, 0x4acc, 0x2848, 0x5244, 0x08e1, /* trans, transr */
+ 0x10dc, 0x05f8, 0x0067, /* sassign */
+ 0x0d98, 0x0c94, 0x0b90, 0x3bac, 0x06c8, 0x0067, /* aassign */
+ 0x5010, 0x0003, /* chomp, schomp, scomplement, sin, cos, exp, log, sqrt, int, hex, oct, abs, ord, chr, chroot, rmdir, refaddr, reftype, ceil, floor */
+ 0x3abc, 0x4bb8, 0x3534, 0x5010, 0x0003, /* undef */
+ 0x06d4, 0x3bac, 0x0003, /* pos */
+ 0x5010, 0x0067, /* pow, multiply, i_multiply, divide, i_divide, modulo, i_modulo, add, i_add, subtract, i_subtract */
+ 0x1658, 0x0067, /* repeat */
+ 0x3d98, 0x5010, 0x0067, /* concat */
+ 0x3abc, 0x0338, 0x1e34, 0x5010, 0x4d4c, 0x0003, /* multiconcat */
+ 0x5010, 0x018f, /* stringify, atan2, rand, srand, crypt, push, unshift, flock, chdir, chown, unlink, chmod, utime, rename, link, symlink, mkdir, waitpid, system, exec, kill, getpgrp, setpgrp, getpriority, setpriority, sleep */
+ 0x5010, 0x5169, /* left_shift, right_shift, nbit_and, nbit_xor, nbit_or, ncomplement */
+ 0x5169, /* bit_and, bit_xor, bit_or, sbit_and, sbit_xor, sbit_or, complement */
+ 0x06d4, 0x5010, 0x0003, /* length */
+ 0x4570, 0x3bac, 0x012b, /* substr */
+ 0x3bac, 0x0067, /* vec */
+ 0x3d18, 0x06d4, 0x5010, 0x018f, /* index, rindex */
+ 0x3abc, 0x4138, 0x06d4, 0x3bac, 0x4988, 0x4c64, 0x0003, /* rv2av */
+ 0x025f, /* aelemfast, aelemfast_lex, aelemfastlex_store */
+ 0x3abc, 0x39b8, 0x03d6, 0x3bac, 0x0067, /* aelem, helem */
+ 0x3abc, 0x3bac, 0x4989, /* aslice, hslice */
+ 0x3bad, /* kvaslice, kvhslice */
+ 0x3abc, 0x48d8, 0x36d4, 0x0003, /* delete */
+ 0x4e98, 0x0003, /* exists */
+ 0x3abc, 0x4138, 0x06d4, 0x0770, 0x3bac, 0x4988, 0x4c64, 0x3621, /* rv2hv */
+ 0x3abc, 0x39b8, 0x1314, 0x1d50, 0x3bac, 0x4c64, 0x0003, /* multideref */
+ 0x3abc, 0x4138, 0x0410, 0x37cc, 0x2b49, /* split */
+ 0x3abc, 0x2579, /* list */
+ 0x3abc, 0x4bb8, 0x0214, 0x5010, 0x018f, /* emptyavhv */
+ 0x15b0, 0x330c, 0x4668, 0x3404, 0x40a1, /* sort */
+ 0x330c, 0x0003, /* reverse */
+ 0x06d4, 0x0003, /* grepwhile */
+ 0x3858, 0x0003, /* flip, flop */
+ 0x3abc, 0x0003, /* cond_expr */
+ 0x3abc, 0x1198, 0x03d6, 0x014c, 0x4f68, 0x4c64, 0x2c21, /* entersub */
+ 0x43d8, 0x0003, /* leavesub, leavesublv, leavewrite, leaveeval */
0x02aa, 0x0003, /* argelem */
+ 0x2a3c, 0x2918, 0x0003, /* argdefelem */
0x00bc, 0x018f, /* caller */
- 0x2455, /* nextstate, dbstate */
- 0x2e7c, 0x38f9, /* leave */
- 0x2fdc, 0x3658, 0x10ec, 0x3c05, /* enteriter */
- 0x3c05, /* iter */
- 0x2e7c, 0x0067, /* leaveloop */
- 0x49bc, 0x0003, /* last, next, redo, dump, goto */
- 0x383c, 0x3758, 0x2894, 0x27d0, 0x018f, /* open */
- 0x1df0, 0x204c, 0x1f08, 0x1cc4, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */
- 0x1df0, 0x204c, 0x1f08, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ftbinary */
- 0x4611, /* wait, getppid, time */
- 0x3994, 0x0e90, 0x070c, 0x46e8, 0x2364, 0x0003, /* entereval */
- 0x319c, 0x0018, 0x13a4, 0x12c1, /* coreargs */
- 0x30cc, 0x00c7, /* avhvswitch */
- 0x2fdc, 0x01fb, /* padrange */
- 0x2fdc, 0x41b8, 0x04f6, 0x2aac, 0x19a8, 0x0067, /* refassign */
- 0x2fdc, 0x41b8, 0x04f6, 0x2aac, 0x19a8, 0x0003, /* lvref */
- 0x2fdd, /* lvrefslice */
- 0x2fdc, 0x41b8, 0x0003, /* lvavref */
+ 0x2755, /* nextstate, dbstate */
+ 0x395c, 0x43d9, /* leave */
+ 0x3abc, 0x4138, 0x120c, 0x46e5, /* enteriter */
+ 0x46e5, /* iter */
+ 0x395c, 0x0067, /* leaveloop */
+ 0x537c, 0x0003, /* last, next, redo, dump, goto */
+ 0x431c, 0x4238, 0x2dd4, 0x2d10, 0x018f, /* open */
+ 0x20f0, 0x234c, 0x2208, 0x1fc4, 0x0003, /* ftrread, ftrwrite, ftrexec, fteread, ftewrite, fteexec */
+ 0x20f0, 0x234c, 0x2208, 0x0003, /* ftis, ftsize, ftmtime, ftatime, ftctime, ftrowned, fteowned, ftzero, ftsock, ftchr, ftblk, ftfile, ftdir, ftpipe, ftsuid, ftsgid, ftsvtx, ftlink, fttty, fttext, ftbinary */
+ 0x5011, /* wait, getppid, time */
+ 0x1c78, 0x4474, 0x0fb0, 0x082c, 0x50e8, 0x2664, 0x0003, /* entereval */
+ 0x3c7c, 0x0018, 0x14c4, 0x13e1, /* coreargs */
+ 0x3bac, 0x00c7, /* avhvswitch */
+ 0x3abc, 0x01fb, /* padrange */
+ 0x3abc, 0x4bb8, 0x04f6, 0x348c, 0x1ac8, 0x0067, /* refassign */
+ 0x3abc, 0x4bb8, 0x04f6, 0x348c, 0x1ac8, 0x0003, /* lvref */
+ 0x3abd, /* lvrefslice */
+ 0x1edc, 0x0003, /* pushdefer */
+ 0x131c, 0x0003, /* helemexistsor */
+ 0x2e7c, 0x0003, /* methstart */
+ 0x3168, 0x2fc4, 0x0003, /* initfield */
};
@@ -2980,6 +3090,7 @@ EXTCONST U8 PL_op_private_valid[] = {
/* GV */ (OPpEARLY_CV),
/* GELEM */ (OPpARG2_MASK),
/* PADSV */ (OPpDEREF|OPpPAD_STATE|OPpLVAL_INTRO),
+ /* PADSV_STORE */ (OPpARG1_MASK|OPpPAD_STATE|OPpLVAL_INTRO),
/* PADAV */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpTRUEBOOL|OPpPAD_STATE|OPpLVAL_INTRO),
/* PADHV */ (OPpPADHV_ISKEYS|OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpMAYBE_TRUEBOOL|OPpTRUEBOOL|OPpPAD_STATE|OPpLVAL_INTRO),
/* PADANY */ (0),
@@ -3013,7 +3124,7 @@ EXTCONST U8 PL_op_private_valid[] = {
/* CHOMP */ (OPpARG1_MASK|OPpTARGET_MY),
/* SCHOMP */ (OPpARG1_MASK|OPpTARGET_MY),
/* DEFINED */ (OPpARG1_MASK),
- /* UNDEF */ (OPpARG1_MASK),
+ /* UNDEF */ (OPpARG1_MASK|OPpTARGET_MY|OPpUNDEF_KEEP_PV|OPpPAD_STATE|OPpLVAL_INTRO),
/* STUDY */ (OPpARG1_MASK),
/* POS */ (OPpARG1_MASK|OPpMAYBE_LVSUB|OPpTRUEBOOL),
/* PREINC */ (OPpARG1_MASK),
@@ -3039,8 +3150,8 @@ EXTCONST U8 PL_op_private_valid[] = {
/* CONCAT */ (OPpARG2_MASK|OPpTARGET_MY|OPpCONCAT_NESTED),
/* MULTICONCAT */ (OPpARG1_MASK|OPpMULTICONCAT_STRINGIFY|OPpTARGET_MY|OPpMULTICONCAT_FAKE|OPpMULTICONCAT_APPEND|OPpLVAL_INTRO),
/* STRINGIFY */ (OPpARG4_MASK|OPpTARGET_MY),
- /* LEFT_SHIFT */ (OPpARG2_MASK|OPpTARGET_MY),
- /* RIGHT_SHIFT */ (OPpARG2_MASK|OPpTARGET_MY),
+ /* LEFT_SHIFT */ (OPpUSEINT|OPpTARGET_MY),
+ /* RIGHT_SHIFT */ (OPpUSEINT|OPpTARGET_MY),
/* LT */ (OPpARG2_MASK),
/* I_LT */ (OPpARG2_MASK),
/* GT */ (OPpARG2_MASK),
@@ -3062,20 +3173,20 @@ EXTCONST U8 PL_op_private_valid[] = {
/* SEQ */ (OPpARG2_MASK),
/* SNE */ (OPpARG2_MASK),
/* SCMP */ (OPpARG2_MASK),
- /* BIT_AND */ (OPpARG2_MASK),
- /* BIT_XOR */ (OPpARG2_MASK),
- /* BIT_OR */ (OPpARG2_MASK),
- /* NBIT_AND */ (OPpARG2_MASK|OPpTARGET_MY),
- /* NBIT_XOR */ (OPpARG2_MASK|OPpTARGET_MY),
- /* NBIT_OR */ (OPpARG2_MASK|OPpTARGET_MY),
- /* SBIT_AND */ (OPpARG2_MASK),
- /* SBIT_XOR */ (OPpARG2_MASK),
- /* SBIT_OR */ (OPpARG2_MASK),
+ /* BIT_AND */ (OPpUSEINT),
+ /* BIT_XOR */ (OPpUSEINT),
+ /* BIT_OR */ (OPpUSEINT),
+ /* NBIT_AND */ (OPpUSEINT|OPpTARGET_MY),
+ /* NBIT_XOR */ (OPpUSEINT|OPpTARGET_MY),
+ /* NBIT_OR */ (OPpUSEINT|OPpTARGET_MY),
+ /* SBIT_AND */ (OPpUSEINT),
+ /* SBIT_XOR */ (OPpUSEINT),
+ /* SBIT_OR */ (OPpUSEINT),
/* NEGATE */ (OPpARG1_MASK),
/* I_NEGATE */ (OPpARG1_MASK),
/* NOT */ (OPpARG1_MASK),
- /* COMPLEMENT */ (OPpARG1_MASK),
- /* NCOMPLEMENT */ (OPpARG1_MASK|OPpTARGET_MY),
+ /* COMPLEMENT */ (OPpUSEINT),
+ /* NCOMPLEMENT */ (OPpUSEINT|OPpTARGET_MY),
/* SCOMPLEMENT */ (OPpARG1_MASK|OPpTARGET_MY),
/* SMARTMATCH */ (OPpARG2_MASK),
/* ATAN2 */ (OPpARG4_MASK|OPpTARGET_MY),
@@ -3108,6 +3219,7 @@ EXTCONST U8 PL_op_private_valid[] = {
/* RV2AV */ (OPpARG1_MASK|OPpHINT_STRICT_REFS|OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpTRUEBOOL|OPpOUR_INTRO|OPpLVAL_INTRO),
/* AELEMFAST */ (255),
/* AELEMFAST_LEX */ (255),
+ /* AELEMFASTLEX_STORE */ (255),
/* AELEM */ (OPpARG2_MASK|OPpMAYBE_LVSUB|OPpDEREF|OPpLVAL_DEFER|OPpLVAL_INTRO),
/* ASLICE */ (OPpSLICEWARNING|OPpMAYBE_LVSUB|OPpLVAL_INTRO),
/* KVASLICE */ (OPpMAYBE_LVSUB),
@@ -3132,12 +3244,13 @@ EXTCONST U8 PL_op_private_valid[] = {
/* LSLICE */ (OPpARG2_MASK),
/* ANONLIST */ (OPpARG4_MASK),
/* ANONHASH */ (OPpARG4_MASK),
+ /* EMPTYAVHV */ (OPpARG4_MASK|OPpTARGET_MY|OPpEMPTYAVHV_IS_HV|OPpPAD_STATE|OPpLVAL_INTRO),
/* SPLICE */ (OPpARG4_MASK),
/* PUSH */ (OPpARG4_MASK|OPpTARGET_MY),
/* POP */ (OPpARG1_MASK),
/* SHIFT */ (OPpARG1_MASK),
/* UNSHIFT */ (OPpARG4_MASK|OPpTARGET_MY),
- /* SORT */ (OPpSORT_NUMERIC|OPpSORT_INTEGER|OPpSORT_REVERSE|OPpSORT_INPLACE|OPpSORT_DESCEND|OPpSORT_STABLE|OPpSORT_UNSTABLE),
+ /* SORT */ (OPpSORT_NUMERIC|OPpSORT_INTEGER|OPpSORT_REVERSE|OPpSORT_INPLACE|OPpSORT_DESCEND),
/* REVERSE */ (OPpARG1_MASK|OPpREVERSE_INPLACE),
/* GREPSTART */ (OPpARG1_MASK),
/* GREPWHILE */ (OPpARG1_MASK|OPpTRUEBOOL),
@@ -3159,7 +3272,7 @@ EXTCONST U8 PL_op_private_valid[] = {
/* LEAVESUBLV */ (OPpARG1_MASK|OPpREFCOUNTED),
/* ARGCHECK */ (OPpARG1_MASK),
/* ARGELEM */ (OPpARG1_MASK|OPpARGELEM_MASK),
- /* ARGDEFELEM */ (OPpARG1_MASK),
+ /* ARGDEFELEM */ (OPpARG1_MASK|OPpARG_IF_FALSE|OPpARG_IF_UNDEF),
/* CALLER */ (OPpARG4_MASK|OPpOFFBYONE),
/* WARN */ (OPpARG4_MASK),
/* DIE */ (OPpARG4_MASK),
@@ -3315,7 +3428,7 @@ EXTCONST U8 PL_op_private_valid[] = {
/* REQUIRE */ (OPpARG1_MASK),
/* DOFILE */ (OPpARG1_MASK),
/* HINTSEVAL */ (0),
- /* ENTEREVAL */ (OPpARG1_MASK|OPpEVAL_HAS_HH|OPpEVAL_UNICODE|OPpEVAL_BYTES|OPpEVAL_COPHH|OPpEVAL_RE_REPARSING),
+ /* ENTEREVAL */ (OPpARG1_MASK|OPpEVAL_HAS_HH|OPpEVAL_UNICODE|OPpEVAL_BYTES|OPpEVAL_COPHH|OPpEVAL_RE_REPARSING|OPpEVAL_EVALSV),
/* LEAVEEVAL */ (OPpARG1_MASK|OPpREFCOUNTED),
/* ENTERTRY */ (OPpARG1_MASK),
/* LEAVETRY */ (0),
@@ -3374,6 +3487,20 @@ EXTCONST U8 PL_op_private_valid[] = {
/* LEAVETRYCATCH */ (0),
/* POPTRY */ (0),
/* CATCH */ (OPpARG1_MASK),
+ /* PUSHDEFER */ (OPpARG1_MASK|OPpDEFER_FINALLY),
+ /* IS_BOOL */ (OPpARG1_MASK),
+ /* IS_WEAK */ (OPpARG1_MASK),
+ /* WEAKEN */ (OPpARG1_MASK),
+ /* UNWEAKEN */ (OPpARG1_MASK),
+ /* BLESSED */ (OPpARG1_MASK|OPpMAYBE_TRUEBOOL|OPpTRUEBOOL),
+ /* REFADDR */ (OPpARG1_MASK|OPpTARGET_MY),
+ /* REFTYPE */ (OPpARG1_MASK|OPpTARGET_MY),
+ /* CEIL */ (OPpARG1_MASK|OPpTARGET_MY),
+ /* FLOOR */ (OPpARG1_MASK|OPpTARGET_MY),
+ /* IS_TAINTED */ (OPpARG1_MASK),
+ /* HELEMEXISTSOR */ (OPpARG1_MASK|OPpHELEMEXISTSOR_DELETE),
+ /* METHSTART */ (OPpARG1_MASK|OPpINITFIELDS),
+ /* INITFIELD */ (OPpARG1_MASK|OPpINITFIELD_AV|OPpINITFIELD_HV),
};
@@ -3383,4 +3510,4 @@ END_EXTERN_C
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/opnames.h b/Master/tlpkg/tlperl/lib/CORE/opnames.h
index f6c1552a52a..71601b8f41f 100644
--- a/Master/tlpkg/tlperl/lib/CORE/opnames.h
+++ b/Master/tlpkg/tlperl/lib/CORE/opnames.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
*
* opnames.h
*
@@ -24,404 +24,421 @@ typedef enum opcode {
OP_GV = 7,
OP_GELEM = 8,
OP_PADSV = 9,
- OP_PADAV = 10,
- OP_PADHV = 11,
- OP_PADANY = 12,
- OP_RV2GV = 13,
- OP_RV2SV = 14,
- OP_AV2ARYLEN = 15,
- OP_RV2CV = 16,
- OP_ANONCODE = 17,
- OP_PROTOTYPE = 18,
- OP_REFGEN = 19,
- OP_SREFGEN = 20,
- OP_REF = 21,
- OP_BLESS = 22,
- OP_BACKTICK = 23,
- OP_GLOB = 24,
- OP_READLINE = 25,
- OP_RCATLINE = 26,
- OP_REGCMAYBE = 27,
- OP_REGCRESET = 28,
- OP_REGCOMP = 29,
- OP_MATCH = 30,
- OP_QR = 31,
- OP_SUBST = 32,
- OP_SUBSTCONT = 33,
- OP_TRANS = 34,
- OP_TRANSR = 35,
- OP_SASSIGN = 36,
- OP_AASSIGN = 37,
- OP_CHOP = 38,
- OP_SCHOP = 39,
- OP_CHOMP = 40,
- OP_SCHOMP = 41,
- OP_DEFINED = 42,
- OP_UNDEF = 43,
- OP_STUDY = 44,
- OP_POS = 45,
- OP_PREINC = 46,
- OP_I_PREINC = 47,
- OP_PREDEC = 48,
- OP_I_PREDEC = 49,
- OP_POSTINC = 50,
- OP_I_POSTINC = 51,
- OP_POSTDEC = 52,
- OP_I_POSTDEC = 53,
- OP_POW = 54,
- OP_MULTIPLY = 55,
- OP_I_MULTIPLY = 56,
- OP_DIVIDE = 57,
- OP_I_DIVIDE = 58,
- OP_MODULO = 59,
- OP_I_MODULO = 60,
- OP_REPEAT = 61,
- OP_ADD = 62,
- OP_I_ADD = 63,
- OP_SUBTRACT = 64,
- OP_I_SUBTRACT = 65,
- OP_CONCAT = 66,
- OP_MULTICONCAT = 67,
- OP_STRINGIFY = 68,
- OP_LEFT_SHIFT = 69,
- OP_RIGHT_SHIFT = 70,
- OP_LT = 71,
- OP_I_LT = 72,
- OP_GT = 73,
- OP_I_GT = 74,
- OP_LE = 75,
- OP_I_LE = 76,
- OP_GE = 77,
- OP_I_GE = 78,
- OP_EQ = 79,
- OP_I_EQ = 80,
- OP_NE = 81,
- OP_I_NE = 82,
- OP_NCMP = 83,
- OP_I_NCMP = 84,
- OP_SLT = 85,
- OP_SGT = 86,
- OP_SLE = 87,
- OP_SGE = 88,
- OP_SEQ = 89,
- OP_SNE = 90,
- OP_SCMP = 91,
- OP_BIT_AND = 92,
- OP_BIT_XOR = 93,
- OP_BIT_OR = 94,
- OP_NBIT_AND = 95,
- OP_NBIT_XOR = 96,
- OP_NBIT_OR = 97,
- OP_SBIT_AND = 98,
- OP_SBIT_XOR = 99,
- OP_SBIT_OR = 100,
- OP_NEGATE = 101,
- OP_I_NEGATE = 102,
- OP_NOT = 103,
- OP_COMPLEMENT = 104,
- OP_NCOMPLEMENT = 105,
- OP_SCOMPLEMENT = 106,
- OP_SMARTMATCH = 107,
- OP_ATAN2 = 108,
- OP_SIN = 109,
- OP_COS = 110,
- OP_RAND = 111,
- OP_SRAND = 112,
- OP_EXP = 113,
- OP_LOG = 114,
- OP_SQRT = 115,
- OP_INT = 116,
- OP_HEX = 117,
- OP_OCT = 118,
- OP_ABS = 119,
- OP_LENGTH = 120,
- OP_SUBSTR = 121,
- OP_VEC = 122,
- OP_INDEX = 123,
- OP_RINDEX = 124,
- OP_SPRINTF = 125,
- OP_FORMLINE = 126,
- OP_ORD = 127,
- OP_CHR = 128,
- OP_CRYPT = 129,
- OP_UCFIRST = 130,
- OP_LCFIRST = 131,
- OP_UC = 132,
- OP_LC = 133,
- OP_QUOTEMETA = 134,
- OP_RV2AV = 135,
- OP_AELEMFAST = 136,
- OP_AELEMFAST_LEX = 137,
- OP_AELEM = 138,
- OP_ASLICE = 139,
- OP_KVASLICE = 140,
- OP_AEACH = 141,
- OP_AVALUES = 142,
- OP_AKEYS = 143,
- OP_EACH = 144,
- OP_VALUES = 145,
- OP_KEYS = 146,
- OP_DELETE = 147,
- OP_EXISTS = 148,
- OP_RV2HV = 149,
- OP_HELEM = 150,
- OP_HSLICE = 151,
- OP_KVHSLICE = 152,
- OP_MULTIDEREF = 153,
- OP_UNPACK = 154,
- OP_PACK = 155,
- OP_SPLIT = 156,
- OP_JOIN = 157,
- OP_LIST = 158,
- OP_LSLICE = 159,
- OP_ANONLIST = 160,
- OP_ANONHASH = 161,
- OP_SPLICE = 162,
- OP_PUSH = 163,
- OP_POP = 164,
- OP_SHIFT = 165,
- OP_UNSHIFT = 166,
- OP_SORT = 167,
- OP_REVERSE = 168,
- OP_GREPSTART = 169,
- OP_GREPWHILE = 170,
- OP_MAPSTART = 171,
- OP_MAPWHILE = 172,
- OP_RANGE = 173,
- OP_FLIP = 174,
- OP_FLOP = 175,
- OP_AND = 176,
- OP_OR = 177,
- OP_XOR = 178,
- OP_DOR = 179,
- OP_COND_EXPR = 180,
- OP_ANDASSIGN = 181,
- OP_ORASSIGN = 182,
- OP_DORASSIGN = 183,
- OP_ENTERSUB = 184,
- OP_LEAVESUB = 185,
- OP_LEAVESUBLV = 186,
- OP_ARGCHECK = 187,
- OP_ARGELEM = 188,
- OP_ARGDEFELEM = 189,
- OP_CALLER = 190,
- OP_WARN = 191,
- OP_DIE = 192,
- OP_RESET = 193,
- OP_LINESEQ = 194,
- OP_NEXTSTATE = 195,
- OP_DBSTATE = 196,
- OP_UNSTACK = 197,
- OP_ENTER = 198,
- OP_LEAVE = 199,
- OP_SCOPE = 200,
- OP_ENTERITER = 201,
- OP_ITER = 202,
- OP_ENTERLOOP = 203,
- OP_LEAVELOOP = 204,
- OP_RETURN = 205,
- OP_LAST = 206,
- OP_NEXT = 207,
- OP_REDO = 208,
- OP_DUMP = 209,
- OP_GOTO = 210,
- OP_EXIT = 211,
- OP_METHOD = 212,
- OP_METHOD_NAMED = 213,
- OP_METHOD_SUPER = 214,
- OP_METHOD_REDIR = 215,
- OP_METHOD_REDIR_SUPER = 216,
- OP_ENTERGIVEN = 217,
- OP_LEAVEGIVEN = 218,
- OP_ENTERWHEN = 219,
- OP_LEAVEWHEN = 220,
- OP_BREAK = 221,
- OP_CONTINUE = 222,
- OP_OPEN = 223,
- OP_CLOSE = 224,
- OP_PIPE_OP = 225,
- OP_FILENO = 226,
- OP_UMASK = 227,
- OP_BINMODE = 228,
- OP_TIE = 229,
- OP_UNTIE = 230,
- OP_TIED = 231,
- OP_DBMOPEN = 232,
- OP_DBMCLOSE = 233,
- OP_SSELECT = 234,
- OP_SELECT = 235,
- OP_GETC = 236,
- OP_READ = 237,
- OP_ENTERWRITE = 238,
- OP_LEAVEWRITE = 239,
- OP_PRTF = 240,
- OP_PRINT = 241,
- OP_SAY = 242,
- OP_SYSOPEN = 243,
- OP_SYSSEEK = 244,
- OP_SYSREAD = 245,
- OP_SYSWRITE = 246,
- OP_EOF = 247,
- OP_TELL = 248,
- OP_SEEK = 249,
- OP_TRUNCATE = 250,
- OP_FCNTL = 251,
- OP_IOCTL = 252,
- OP_FLOCK = 253,
- OP_SEND = 254,
- OP_RECV = 255,
- OP_SOCKET = 256,
- OP_SOCKPAIR = 257,
- OP_BIND = 258,
- OP_CONNECT = 259,
- OP_LISTEN = 260,
- OP_ACCEPT = 261,
- OP_SHUTDOWN = 262,
- OP_GSOCKOPT = 263,
- OP_SSOCKOPT = 264,
- OP_GETSOCKNAME = 265,
- OP_GETPEERNAME = 266,
- OP_LSTAT = 267,
- OP_STAT = 268,
- OP_FTRREAD = 269,
- OP_FTRWRITE = 270,
- OP_FTREXEC = 271,
- OP_FTEREAD = 272,
- OP_FTEWRITE = 273,
- OP_FTEEXEC = 274,
- OP_FTIS = 275,
- OP_FTSIZE = 276,
- OP_FTMTIME = 277,
- OP_FTATIME = 278,
- OP_FTCTIME = 279,
- OP_FTROWNED = 280,
- OP_FTEOWNED = 281,
- OP_FTZERO = 282,
- OP_FTSOCK = 283,
- OP_FTCHR = 284,
- OP_FTBLK = 285,
- OP_FTFILE = 286,
- OP_FTDIR = 287,
- OP_FTPIPE = 288,
- OP_FTSUID = 289,
- OP_FTSGID = 290,
- OP_FTSVTX = 291,
- OP_FTLINK = 292,
- OP_FTTTY = 293,
- OP_FTTEXT = 294,
- OP_FTBINARY = 295,
- OP_CHDIR = 296,
- OP_CHOWN = 297,
- OP_CHROOT = 298,
- OP_UNLINK = 299,
- OP_CHMOD = 300,
- OP_UTIME = 301,
- OP_RENAME = 302,
- OP_LINK = 303,
- OP_SYMLINK = 304,
- OP_READLINK = 305,
- OP_MKDIR = 306,
- OP_RMDIR = 307,
- OP_OPEN_DIR = 308,
- OP_READDIR = 309,
- OP_TELLDIR = 310,
- OP_SEEKDIR = 311,
- OP_REWINDDIR = 312,
- OP_CLOSEDIR = 313,
- OP_FORK = 314,
- OP_WAIT = 315,
- OP_WAITPID = 316,
- OP_SYSTEM = 317,
- OP_EXEC = 318,
- OP_KILL = 319,
- OP_GETPPID = 320,
- OP_GETPGRP = 321,
- OP_SETPGRP = 322,
- OP_GETPRIORITY = 323,
- OP_SETPRIORITY = 324,
- OP_TIME = 325,
- OP_TMS = 326,
- OP_LOCALTIME = 327,
- OP_GMTIME = 328,
- OP_ALARM = 329,
- OP_SLEEP = 330,
- OP_SHMGET = 331,
- OP_SHMCTL = 332,
- OP_SHMREAD = 333,
- OP_SHMWRITE = 334,
- OP_MSGGET = 335,
- OP_MSGCTL = 336,
- OP_MSGSND = 337,
- OP_MSGRCV = 338,
- OP_SEMOP = 339,
- OP_SEMGET = 340,
- OP_SEMCTL = 341,
- OP_REQUIRE = 342,
- OP_DOFILE = 343,
- OP_HINTSEVAL = 344,
- OP_ENTEREVAL = 345,
- OP_LEAVEEVAL = 346,
- OP_ENTERTRY = 347,
- OP_LEAVETRY = 348,
- OP_GHBYNAME = 349,
- OP_GHBYADDR = 350,
- OP_GHOSTENT = 351,
- OP_GNBYNAME = 352,
- OP_GNBYADDR = 353,
- OP_GNETENT = 354,
- OP_GPBYNAME = 355,
- OP_GPBYNUMBER = 356,
- OP_GPROTOENT = 357,
- OP_GSBYNAME = 358,
- OP_GSBYPORT = 359,
- OP_GSERVENT = 360,
- OP_SHOSTENT = 361,
- OP_SNETENT = 362,
- OP_SPROTOENT = 363,
- OP_SSERVENT = 364,
- OP_EHOSTENT = 365,
- OP_ENETENT = 366,
- OP_EPROTOENT = 367,
- OP_ESERVENT = 368,
- OP_GPWNAM = 369,
- OP_GPWUID = 370,
- OP_GPWENT = 371,
- OP_SPWENT = 372,
- OP_EPWENT = 373,
- OP_GGRNAM = 374,
- OP_GGRGID = 375,
- OP_GGRENT = 376,
- OP_SGRENT = 377,
- OP_EGRENT = 378,
- OP_GETLOGIN = 379,
- OP_SYSCALL = 380,
- OP_LOCK = 381,
- OP_ONCE = 382,
- OP_CUSTOM = 383,
- OP_COREARGS = 384,
- OP_AVHVSWITCH = 385,
- OP_RUNCV = 386,
- OP_FC = 387,
- OP_PADCV = 388,
- OP_INTROCV = 389,
- OP_CLONECV = 390,
- OP_PADRANGE = 391,
- OP_REFASSIGN = 392,
- OP_LVREF = 393,
- OP_LVREFSLICE = 394,
- OP_LVAVREF = 395,
- OP_ANONCONST = 396,
- OP_ISA = 397,
- OP_CMPCHAIN_AND = 398,
- OP_CMPCHAIN_DUP = 399,
- OP_ENTERTRYCATCH = 400,
- OP_LEAVETRYCATCH = 401,
- OP_POPTRY = 402,
- OP_CATCH = 403,
+ OP_PADSV_STORE = 10,
+ OP_PADAV = 11,
+ OP_PADHV = 12,
+ OP_PADANY = 13,
+ OP_RV2GV = 14,
+ OP_RV2SV = 15,
+ OP_AV2ARYLEN = 16,
+ OP_RV2CV = 17,
+ OP_ANONCODE = 18,
+ OP_PROTOTYPE = 19,
+ OP_REFGEN = 20,
+ OP_SREFGEN = 21,
+ OP_REF = 22,
+ OP_BLESS = 23,
+ OP_BACKTICK = 24,
+ OP_GLOB = 25,
+ OP_READLINE = 26,
+ OP_RCATLINE = 27,
+ OP_REGCMAYBE = 28,
+ OP_REGCRESET = 29,
+ OP_REGCOMP = 30,
+ OP_MATCH = 31,
+ OP_QR = 32,
+ OP_SUBST = 33,
+ OP_SUBSTCONT = 34,
+ OP_TRANS = 35,
+ OP_TRANSR = 36,
+ OP_SASSIGN = 37,
+ OP_AASSIGN = 38,
+ OP_CHOP = 39,
+ OP_SCHOP = 40,
+ OP_CHOMP = 41,
+ OP_SCHOMP = 42,
+ OP_DEFINED = 43,
+ OP_UNDEF = 44,
+ OP_STUDY = 45,
+ OP_POS = 46,
+ OP_PREINC = 47,
+ OP_I_PREINC = 48,
+ OP_PREDEC = 49,
+ OP_I_PREDEC = 50,
+ OP_POSTINC = 51,
+ OP_I_POSTINC = 52,
+ OP_POSTDEC = 53,
+ OP_I_POSTDEC = 54,
+ OP_POW = 55,
+ OP_MULTIPLY = 56,
+ OP_I_MULTIPLY = 57,
+ OP_DIVIDE = 58,
+ OP_I_DIVIDE = 59,
+ OP_MODULO = 60,
+ OP_I_MODULO = 61,
+ OP_REPEAT = 62,
+ OP_ADD = 63,
+ OP_I_ADD = 64,
+ OP_SUBTRACT = 65,
+ OP_I_SUBTRACT = 66,
+ OP_CONCAT = 67,
+ OP_MULTICONCAT = 68,
+ OP_STRINGIFY = 69,
+ OP_LEFT_SHIFT = 70,
+ OP_RIGHT_SHIFT = 71,
+ OP_LT = 72,
+ OP_I_LT = 73,
+ OP_GT = 74,
+ OP_I_GT = 75,
+ OP_LE = 76,
+ OP_I_LE = 77,
+ OP_GE = 78,
+ OP_I_GE = 79,
+ OP_EQ = 80,
+ OP_I_EQ = 81,
+ OP_NE = 82,
+ OP_I_NE = 83,
+ OP_NCMP = 84,
+ OP_I_NCMP = 85,
+ OP_SLT = 86,
+ OP_SGT = 87,
+ OP_SLE = 88,
+ OP_SGE = 89,
+ OP_SEQ = 90,
+ OP_SNE = 91,
+ OP_SCMP = 92,
+ OP_BIT_AND = 93,
+ OP_BIT_XOR = 94,
+ OP_BIT_OR = 95,
+ OP_NBIT_AND = 96,
+ OP_NBIT_XOR = 97,
+ OP_NBIT_OR = 98,
+ OP_SBIT_AND = 99,
+ OP_SBIT_XOR = 100,
+ OP_SBIT_OR = 101,
+ OP_NEGATE = 102,
+ OP_I_NEGATE = 103,
+ OP_NOT = 104,
+ OP_COMPLEMENT = 105,
+ OP_NCOMPLEMENT = 106,
+ OP_SCOMPLEMENT = 107,
+ OP_SMARTMATCH = 108,
+ OP_ATAN2 = 109,
+ OP_SIN = 110,
+ OP_COS = 111,
+ OP_RAND = 112,
+ OP_SRAND = 113,
+ OP_EXP = 114,
+ OP_LOG = 115,
+ OP_SQRT = 116,
+ OP_INT = 117,
+ OP_HEX = 118,
+ OP_OCT = 119,
+ OP_ABS = 120,
+ OP_LENGTH = 121,
+ OP_SUBSTR = 122,
+ OP_VEC = 123,
+ OP_INDEX = 124,
+ OP_RINDEX = 125,
+ OP_SPRINTF = 126,
+ OP_FORMLINE = 127,
+ OP_ORD = 128,
+ OP_CHR = 129,
+ OP_CRYPT = 130,
+ OP_UCFIRST = 131,
+ OP_LCFIRST = 132,
+ OP_UC = 133,
+ OP_LC = 134,
+ OP_QUOTEMETA = 135,
+ OP_RV2AV = 136,
+ OP_AELEMFAST = 137,
+ OP_AELEMFAST_LEX = 138,
+ OP_AELEMFASTLEX_STORE = 139,
+ OP_AELEM = 140,
+ OP_ASLICE = 141,
+ OP_KVASLICE = 142,
+ OP_AEACH = 143,
+ OP_AVALUES = 144,
+ OP_AKEYS = 145,
+ OP_EACH = 146,
+ OP_VALUES = 147,
+ OP_KEYS = 148,
+ OP_DELETE = 149,
+ OP_EXISTS = 150,
+ OP_RV2HV = 151,
+ OP_HELEM = 152,
+ OP_HSLICE = 153,
+ OP_KVHSLICE = 154,
+ OP_MULTIDEREF = 155,
+ OP_UNPACK = 156,
+ OP_PACK = 157,
+ OP_SPLIT = 158,
+ OP_JOIN = 159,
+ OP_LIST = 160,
+ OP_LSLICE = 161,
+ OP_ANONLIST = 162,
+ OP_ANONHASH = 163,
+ OP_EMPTYAVHV = 164,
+ OP_SPLICE = 165,
+ OP_PUSH = 166,
+ OP_POP = 167,
+ OP_SHIFT = 168,
+ OP_UNSHIFT = 169,
+ OP_SORT = 170,
+ OP_REVERSE = 171,
+ OP_GREPSTART = 172,
+ OP_GREPWHILE = 173,
+ OP_MAPSTART = 174,
+ OP_MAPWHILE = 175,
+ OP_RANGE = 176,
+ OP_FLIP = 177,
+ OP_FLOP = 178,
+ OP_AND = 179,
+ OP_OR = 180,
+ OP_XOR = 181,
+ OP_DOR = 182,
+ OP_COND_EXPR = 183,
+ OP_ANDASSIGN = 184,
+ OP_ORASSIGN = 185,
+ OP_DORASSIGN = 186,
+ OP_ENTERSUB = 187,
+ OP_LEAVESUB = 188,
+ OP_LEAVESUBLV = 189,
+ OP_ARGCHECK = 190,
+ OP_ARGELEM = 191,
+ OP_ARGDEFELEM = 192,
+ OP_CALLER = 193,
+ OP_WARN = 194,
+ OP_DIE = 195,
+ OP_RESET = 196,
+ OP_LINESEQ = 197,
+ OP_NEXTSTATE = 198,
+ OP_DBSTATE = 199,
+ OP_UNSTACK = 200,
+ OP_ENTER = 201,
+ OP_LEAVE = 202,
+ OP_SCOPE = 203,
+ OP_ENTERITER = 204,
+ OP_ITER = 205,
+ OP_ENTERLOOP = 206,
+ OP_LEAVELOOP = 207,
+ OP_RETURN = 208,
+ OP_LAST = 209,
+ OP_NEXT = 210,
+ OP_REDO = 211,
+ OP_DUMP = 212,
+ OP_GOTO = 213,
+ OP_EXIT = 214,
+ OP_METHOD = 215,
+ OP_METHOD_NAMED = 216,
+ OP_METHOD_SUPER = 217,
+ OP_METHOD_REDIR = 218,
+ OP_METHOD_REDIR_SUPER = 219,
+ OP_ENTERGIVEN = 220,
+ OP_LEAVEGIVEN = 221,
+ OP_ENTERWHEN = 222,
+ OP_LEAVEWHEN = 223,
+ OP_BREAK = 224,
+ OP_CONTINUE = 225,
+ OP_OPEN = 226,
+ OP_CLOSE = 227,
+ OP_PIPE_OP = 228,
+ OP_FILENO = 229,
+ OP_UMASK = 230,
+ OP_BINMODE = 231,
+ OP_TIE = 232,
+ OP_UNTIE = 233,
+ OP_TIED = 234,
+ OP_DBMOPEN = 235,
+ OP_DBMCLOSE = 236,
+ OP_SSELECT = 237,
+ OP_SELECT = 238,
+ OP_GETC = 239,
+ OP_READ = 240,
+ OP_ENTERWRITE = 241,
+ OP_LEAVEWRITE = 242,
+ OP_PRTF = 243,
+ OP_PRINT = 244,
+ OP_SAY = 245,
+ OP_SYSOPEN = 246,
+ OP_SYSSEEK = 247,
+ OP_SYSREAD = 248,
+ OP_SYSWRITE = 249,
+ OP_EOF = 250,
+ OP_TELL = 251,
+ OP_SEEK = 252,
+ OP_TRUNCATE = 253,
+ OP_FCNTL = 254,
+ OP_IOCTL = 255,
+ OP_FLOCK = 256,
+ OP_SEND = 257,
+ OP_RECV = 258,
+ OP_SOCKET = 259,
+ OP_SOCKPAIR = 260,
+ OP_BIND = 261,
+ OP_CONNECT = 262,
+ OP_LISTEN = 263,
+ OP_ACCEPT = 264,
+ OP_SHUTDOWN = 265,
+ OP_GSOCKOPT = 266,
+ OP_SSOCKOPT = 267,
+ OP_GETSOCKNAME = 268,
+ OP_GETPEERNAME = 269,
+ OP_LSTAT = 270,
+ OP_STAT = 271,
+ OP_FTRREAD = 272,
+ OP_FTRWRITE = 273,
+ OP_FTREXEC = 274,
+ OP_FTEREAD = 275,
+ OP_FTEWRITE = 276,
+ OP_FTEEXEC = 277,
+ OP_FTIS = 278,
+ OP_FTSIZE = 279,
+ OP_FTMTIME = 280,
+ OP_FTATIME = 281,
+ OP_FTCTIME = 282,
+ OP_FTROWNED = 283,
+ OP_FTEOWNED = 284,
+ OP_FTZERO = 285,
+ OP_FTSOCK = 286,
+ OP_FTCHR = 287,
+ OP_FTBLK = 288,
+ OP_FTFILE = 289,
+ OP_FTDIR = 290,
+ OP_FTPIPE = 291,
+ OP_FTSUID = 292,
+ OP_FTSGID = 293,
+ OP_FTSVTX = 294,
+ OP_FTLINK = 295,
+ OP_FTTTY = 296,
+ OP_FTTEXT = 297,
+ OP_FTBINARY = 298,
+ OP_CHDIR = 299,
+ OP_CHOWN = 300,
+ OP_CHROOT = 301,
+ OP_UNLINK = 302,
+ OP_CHMOD = 303,
+ OP_UTIME = 304,
+ OP_RENAME = 305,
+ OP_LINK = 306,
+ OP_SYMLINK = 307,
+ OP_READLINK = 308,
+ OP_MKDIR = 309,
+ OP_RMDIR = 310,
+ OP_OPEN_DIR = 311,
+ OP_READDIR = 312,
+ OP_TELLDIR = 313,
+ OP_SEEKDIR = 314,
+ OP_REWINDDIR = 315,
+ OP_CLOSEDIR = 316,
+ OP_FORK = 317,
+ OP_WAIT = 318,
+ OP_WAITPID = 319,
+ OP_SYSTEM = 320,
+ OP_EXEC = 321,
+ OP_KILL = 322,
+ OP_GETPPID = 323,
+ OP_GETPGRP = 324,
+ OP_SETPGRP = 325,
+ OP_GETPRIORITY = 326,
+ OP_SETPRIORITY = 327,
+ OP_TIME = 328,
+ OP_TMS = 329,
+ OP_LOCALTIME = 330,
+ OP_GMTIME = 331,
+ OP_ALARM = 332,
+ OP_SLEEP = 333,
+ OP_SHMGET = 334,
+ OP_SHMCTL = 335,
+ OP_SHMREAD = 336,
+ OP_SHMWRITE = 337,
+ OP_MSGGET = 338,
+ OP_MSGCTL = 339,
+ OP_MSGSND = 340,
+ OP_MSGRCV = 341,
+ OP_SEMOP = 342,
+ OP_SEMGET = 343,
+ OP_SEMCTL = 344,
+ OP_REQUIRE = 345,
+ OP_DOFILE = 346,
+ OP_HINTSEVAL = 347,
+ OP_ENTEREVAL = 348,
+ OP_LEAVEEVAL = 349,
+ OP_ENTERTRY = 350,
+ OP_LEAVETRY = 351,
+ OP_GHBYNAME = 352,
+ OP_GHBYADDR = 353,
+ OP_GHOSTENT = 354,
+ OP_GNBYNAME = 355,
+ OP_GNBYADDR = 356,
+ OP_GNETENT = 357,
+ OP_GPBYNAME = 358,
+ OP_GPBYNUMBER = 359,
+ OP_GPROTOENT = 360,
+ OP_GSBYNAME = 361,
+ OP_GSBYPORT = 362,
+ OP_GSERVENT = 363,
+ OP_SHOSTENT = 364,
+ OP_SNETENT = 365,
+ OP_SPROTOENT = 366,
+ OP_SSERVENT = 367,
+ OP_EHOSTENT = 368,
+ OP_ENETENT = 369,
+ OP_EPROTOENT = 370,
+ OP_ESERVENT = 371,
+ OP_GPWNAM = 372,
+ OP_GPWUID = 373,
+ OP_GPWENT = 374,
+ OP_SPWENT = 375,
+ OP_EPWENT = 376,
+ OP_GGRNAM = 377,
+ OP_GGRGID = 378,
+ OP_GGRENT = 379,
+ OP_SGRENT = 380,
+ OP_EGRENT = 381,
+ OP_GETLOGIN = 382,
+ OP_SYSCALL = 383,
+ OP_LOCK = 384,
+ OP_ONCE = 385,
+ OP_CUSTOM = 386,
+ OP_COREARGS = 387,
+ OP_AVHVSWITCH = 388,
+ OP_RUNCV = 389,
+ OP_FC = 390,
+ OP_PADCV = 391,
+ OP_INTROCV = 392,
+ OP_CLONECV = 393,
+ OP_PADRANGE = 394,
+ OP_REFASSIGN = 395,
+ OP_LVREF = 396,
+ OP_LVREFSLICE = 397,
+ OP_LVAVREF = 398,
+ OP_ANONCONST = 399,
+ OP_ISA = 400,
+ OP_CMPCHAIN_AND = 401,
+ OP_CMPCHAIN_DUP = 402,
+ OP_ENTERTRYCATCH = 403,
+ OP_LEAVETRYCATCH = 404,
+ OP_POPTRY = 405,
+ OP_CATCH = 406,
+ OP_PUSHDEFER = 407,
+ OP_IS_BOOL = 408,
+ OP_IS_WEAK = 409,
+ OP_WEAKEN = 410,
+ OP_UNWEAKEN = 411,
+ OP_BLESSED = 412,
+ OP_REFADDR = 413,
+ OP_REFTYPE = 414,
+ OP_CEIL = 415,
+ OP_FLOOR = 416,
+ OP_IS_TAINTED = 417,
+ OP_HELEMEXISTSOR = 418,
+ OP_METHSTART = 419,
+ OP_INITFIELD = 420,
OP_max
} opcode;
-#define MAXO 404
+#define MAXO 421
#define OP_FREED MAXO
/* the OP_IS_* macros are optimized to a simple range check because
@@ -429,22 +446,22 @@ typedef enum opcode {
opcode.pl verifies the range contiguity, or generates an OR-equals
expression */
-#define OP_IS_SOCKET(op) \
+#define OP_IS_SOCKET(op) \
((op) >= OP_SEND && (op) <= OP_GETPEERNAME)
-#define OP_IS_FILETEST(op) \
+#define OP_IS_FILETEST(op) \
((op) >= OP_FTRREAD && (op) <= OP_FTBINARY)
-#define OP_IS_FILETEST_ACCESS(op) \
+#define OP_IS_FILETEST_ACCESS(op) \
((op) >= OP_FTRREAD && (op) <= OP_FTEEXEC)
-#define OP_IS_NUMCOMPARE(op) \
+#define OP_IS_NUMCOMPARE(op) \
((op) >= OP_LT && (op) <= OP_I_NCMP)
-#define OP_IS_DIRHOP(op) \
+#define OP_IS_DIRHOP(op) \
((op) >= OP_READDIR && (op) <= OP_CLOSEDIR)
-#define OP_IS_INFIX_BIT(op) \
+#define OP_IS_INFIX_BIT(op) \
((op) >= OP_BIT_AND && (op) <= OP_SBIT_OR)
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/overload.h b/Master/tlpkg/tlperl/lib/CORE/overload.h
index 50e7660ad7a..cb2e9f1d022 100644
--- a/Master/tlpkg/tlperl/lib/CORE/overload.h
+++ b/Master/tlpkg/tlperl/lib/CORE/overload.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
*
* overload.h
*
@@ -95,4 +95,4 @@ enum {
#define NofAMmeth max_amg_code
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/pad.h b/Master/tlpkg/tlperl/lib/CORE/pad.h
index 07c4d868633..8f339ae6c43 100644
--- a/Master/tlpkg/tlperl/lib/CORE/pad.h
+++ b/Master/tlpkg/tlperl/lib/CORE/pad.h
@@ -23,8 +23,9 @@ typedef SSize_t PADOFFSET; /* signed so that -1 is a valid value */
struct padlist {
SSize_t xpadl_max; /* max index for which array has space */
union {
- PAD ** xpadlarr_alloc; /* Pointer to beginning of array of AVs.
- index 0 is a padnamelist * */
+ PAD ** xpadlarr_alloc; /* Pointer to beginning of array of AVs.
+ Note that a 'padnamelist *' is stored
+ in the 0 index of the AV. */
struct {
PADNAMELIST * padnl;
PAD * pad_1; /* this slice of PAD * array always alloced */
@@ -54,6 +55,8 @@ struct padnamelist {
# define PERL_PADNAME_MINIMAL
#endif
+struct padname_fieldinfo;
+
#define _PADNAME_BASE \
char * xpadn_pv; \
HV * xpadn_ourstash; \
@@ -61,6 +64,7 @@ struct padnamelist {
HV * xpadn_typestash; \
CV * xpadn_protocv; \
} xpadn_type_u; \
+ struct padname_fieldinfo *xpadn_fieldinfo; \
U32 xpadn_low; \
U32 xpadn_high; \
U32 xpadn_refcnt; \
@@ -86,6 +90,19 @@ struct padname_with_str {
#define PADNAME_FROM_PV(s) \
((PADNAME *)((s) - STRUCT_OFFSET(struct padname_with_str, xpadn_str)))
+/* Most padnames are not field names. Keep all the field-related info in its
+ * own substructure, stored in ->xpadn_fieldinfo.
+ */
+struct padname_fieldinfo {
+ U32 refcount;
+ PADOFFSET fieldix; /* index of this field within ObjectFIELDS() array */
+ HV *fieldstash; /* original class package which added this field */
+ OP *defop; /* optree fragment for defaulting expression */
+ SV *paramname; /* name of the :param to look for in constructor */
+ int def_if_undef : 1; /* default op uses //= */
+ int def_if_false : 1; /* default op uses ||= */
+};
+
/* a value that PL_cop_seqmax is guaranteed never to be,
* flagging that a lexical is being introduced, or has not yet left scope
@@ -131,6 +148,8 @@ typedef enum {
#define padadd_NO_DUP_CHECK 0x04 /* skip warning on dups. */
#define padadd_STALEOK 0x08 /* allow stale lexical in active
* sub, but only one level up */
+#define padadd_FIELD 0x10 /* set PADNAMEt_FIELD */
+#define padfind_FIELD_OK 0x20 /* pad_findlex is permitted to see fields */
/* ASSERT_CURPAD_LEGAL and ASSERT_CURPAD_ACTIVE respectively determine
* whether PL_comppad and PL_curpad are consistent and whether they have
@@ -160,8 +179,9 @@ typedef enum {
/* Note: the following three macros are actually defined in scope.h, but
* they are documented here for completeness, since they directly or
- * indirectly affect pads.
+ * indirectly affect pads. */
+/*
=for apidoc m|void|SAVEPADSV |PADOFFSET po
Save a pad slot (used to restore after an iteration)
@@ -242,6 +262,10 @@ are often referred to as 'fake'.
=for apidoc m|bool|PadnameIsSTATE|PADNAME * pn
Whether this is a "state" variable.
+=for apidoc m|bool|PadnameIsFIELD|PADNAME * pn
+Whether this is a "field" variable. PADNAMEs where this is true will
+have additional information available via C<PadnameFIELDINFO>.
+
=for apidoc m|HV *|PadnameTYPE|PADNAME * pn
The stash associated with a typed lexical. This returns the C<%Foo::> hash
for C<my Foo $bar>.
@@ -249,6 +273,9 @@ for C<my Foo $bar>.
=for apidoc Amx|SSize_t|PadnameREFCNT|PADNAME * pn
The reference count of the pad name.
+=for apidoc Amx|PADNAME *|PadnameREFCNT_inc|PADNAME * pn
+Increases the reference count of the pad name. Returns the pad name itself.
+
=for apidoc Amx|void|PadnameREFCNT_dec|PADNAME * pn
Lowers the reference count of the pad name.
@@ -304,6 +331,7 @@ Restore the old pad saved into the local variable C<opad> by C<PAD_SAVE_LOCAL()>
#define PadnamelistMAX(pnl) (pnl)->xpadnl_fill
#define PadnamelistMAXNAMED(pnl) (pnl)->xpadnl_max_named
#define PadnamelistREFCNT(pnl) (pnl)->xpadnl_refcnt
+#define PadnamelistREFCNT_inc(pnl) Perl_padnamelist_refcnt_inc(pnl)
#define PadnamelistREFCNT_dec(pnl) Perl_padnamelist_free(aTHX_ pnl)
#define PadARRAY(pad) AvARRAY(pad)
@@ -315,39 +343,56 @@ Restore the old pad saved into the local variable C<opad> by C<PAD_SAVE_LOCAL()>
#define PadnameSV(pn) \
newSVpvn_flags(PadnamePV(pn), PadnameLEN(pn), SVs_TEMP|SVf_UTF8)
#define PadnameFLAGS(pn) (pn)->xpadn_flags
-#define PadnameIsOUR(pn) (!!(pn)->xpadn_ourstash)
+#define PadnameIsOUR(pn) cBOOL((pn)->xpadn_ourstash)
#define PadnameOURSTASH(pn) (pn)->xpadn_ourstash
#define PadnameTYPE(pn) (pn)->xpadn_type_u.xpadn_typestash
+#define PadnameHasTYPE(pn) cBOOL(PadnameTYPE(pn))
#define PadnamePROTOCV(pn) (pn)->xpadn_type_u.xpadn_protocv
#define PadnameREFCNT(pn) (pn)->xpadn_refcnt
+#define PadnameREFCNT_inc(pn) Perl_padname_refcnt_inc(pn)
#define PadnameREFCNT_dec(pn) Perl_padname_free(aTHX_ pn)
#define PadnameOURSTASH_set(pn,s) (PadnameOURSTASH(pn) = (s))
#define PadnameTYPE_set(pn,s) (PadnameTYPE(pn) = (s))
-#define PadnameOUTER(pn) (PadnameFLAGS(pn) & PADNAMEt_OUTER)
-#define PadnameIsSTATE(pn) (PadnameFLAGS(pn) & PADNAMEt_STATE)
-#define PadnameLVALUE(pn) (PadnameFLAGS(pn) & PADNAMEt_LVALUE)
-
-#define PadnameLVALUE_on(pn) (PadnameFLAGS(pn) |= PADNAMEt_LVALUE)
-#define PadnameIsSTATE_on(pn) (PadnameFLAGS(pn) |= PADNAMEt_STATE)
-
-#define PADNAMEt_OUTER 1 /* outer lexical var */
-#define PADNAMEt_STATE 2 /* state var */
-#define PADNAMEt_LVALUE 4 /* used as lvalue */
-#define PADNAMEt_TYPED 8 /* for B; unused by core */
-#define PADNAMEt_OUR 16 /* for B; unused by core */
+#define PadnameFIELDINFO(pn) (pn)->xpadn_fieldinfo
+#define PadnameOUTER(pn) (PadnameFLAGS(pn) & PADNAMEf_OUTER)
+#define PadnameIsSTATE(pn) (PadnameFLAGS(pn) & PADNAMEf_STATE)
+#define PadnameLVALUE(pn) (PadnameFLAGS(pn) & PADNAMEf_LVALUE)
+#define PadnameIsFIELD(pn) (PadnameFLAGS(pn) & PADNAMEf_FIELD)
+
+#define PadnameLVALUE_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_LVALUE)
+#define PadnameIsSTATE_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_STATE)
+
+#define PADNAMEf_OUTER 0x01 /* outer lexical var */
+#define PADNAMEf_STATE 0x02 /* state var */
+#define PADNAMEf_LVALUE 0x04 /* used as lvalue */
+#define PADNAMEf_TYPED 0x08 /* for B; unused by core */
+#define PADNAMEf_OUR 0x10 /* for B; unused by core */
+#define PADNAMEf_FIELD 0x20 /* field var */
/* backward compatibility */
-#define SvPAD_STATE PadnameIsSTATE
-#define SvPAD_TYPED(pn) (!!PadnameTYPE(pn))
-#define SvPAD_OUR(pn) (!!PadnameOURSTASH(pn))
-#define SvPAD_STATE_on PadnameIsSTATE_on
-#define SvPAD_TYPED_on(pn) (PadnameFLAGS(pn) |= PADNAMEt_TYPED)
-#define SvPAD_OUR_on(pn) (PadnameFLAGS(pn) |= PADNAMEt_OUR)
-#define SvOURSTASH PadnameOURSTASH
-#define SvOURSTASH_set PadnameOURSTASH_set
-#define SVpad_STATE PADNAMEt_STATE
-#define SVpad_TYPED PADNAMEt_TYPED
-#define SVpad_OUR PADNAMEt_OUR
+#ifndef PERL_CORE
+# define SvPAD_STATE PadnameIsSTATE
+# define SvPAD_TYPED PadnameHasTYPE
+# define SvPAD_OUR(pn) cBOOL(PadnameOURSTASH(pn))
+# define SvPAD_STATE_on PadnameIsSTATE_on
+# define SvPAD_TYPED_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_TYPED)
+# define SvPAD_OUR_on(pn) (PadnameFLAGS(pn) |= PADNAMEf_OUR)
+# define SvOURSTASH PadnameOURSTASH
+# define SvOURSTASH_set PadnameOURSTASH_set
+# define SVpad_STATE PADNAMEf_STATE
+# define SVpad_TYPED PADNAMEf_TYPED
+# define SVpad_OUR PADNAMEf_OUR
+# define PADNAMEt_OUTER PADNAMEf_OUTER
+# define PADNAMEt_STATE PADNAMEf_STATE
+# define PADNAMEt_LVALUE PADNAMEf_LVALUE
+# define PADNAMEt_TYPED PADNAMEf_TYPED
+# define PADNAMEt_OUR PADNAMEf_OUR
+#endif
+
+#ifdef USE_ITHREADS
+# define padnamelist_dup_inc(pnl,param) PadnamelistREFCNT_inc(padnamelist_dup(pnl,param))
+# define padname_dup_inc(pn,param) PadnameREFCNT_inc(padname_dup(pn,param))
+#endif
#ifdef DEBUGGING
# define PAD_SV(po) pad_sv(po)
@@ -445,13 +490,12 @@ ling pad (lvalue) to C<gen>.
#define PAD_COMPNAME(po) PAD_COMPNAME_SV(po)
#define PAD_COMPNAME_SV(po) (PadnamelistARRAY(PL_comppad_name)[(po)])
#define PAD_COMPNAME_FLAGS(po) PadnameFLAGS(PAD_COMPNAME(po))
-#define PAD_COMPNAME_FLAGS_isOUR(po) SvPAD_OUR(PAD_COMPNAME_SV(po))
+#define PAD_COMPNAME_FLAGS_isOUR(po) PadnameIsOUR(PAD_COMPNAME_SV(po))
#define PAD_COMPNAME_PV(po) PadnamePV(PAD_COMPNAME(po))
#define PAD_COMPNAME_TYPE(po) PadnameTYPE(PAD_COMPNAME(po))
-#define PAD_COMPNAME_OURSTASH(po) \
- (SvOURSTASH(PAD_COMPNAME_SV(po)))
+#define PAD_COMPNAME_OURSTASH(po) (PadnameOURSTASH(PAD_COMPNAME_SV(po)))
#define PAD_COMPNAME_GEN(po) \
((STRLEN)PadnamelistARRAY(PL_comppad_name)[po]->xpadn_gen)
@@ -513,6 +557,18 @@ instead of a string/length pair.
#define pad_findmy_pvs(name,flags) \
Perl_pad_findmy_pvn(aTHX_ STR_WITH_LEN(name), flags)
+struct suspended_compcv
+{
+ CV *compcv;
+ STRLEN padix, constpadix;
+ STRLEN comppad_name_fill;
+ STRLEN min_intro_pending, max_intro_pending;
+ bool cv_has_eval, pad_reset_pending;
+};
+
+#define resume_compcv_final(buffer) Perl_resume_compcv(aTHX_ buffer, false)
+#define resume_compcv_and_save(buffer) Perl_resume_compcv(aTHX_ buffer, true)
+
/*
* ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/Master/tlpkg/tlperl/lib/CORE/parser.h b/Master/tlpkg/tlperl/lib/CORE/parser.h
index d5bc3c86165..46d6a19c7b1 100644
--- a/Master/tlpkg/tlperl/lib/CORE/parser.h
+++ b/Master/tlpkg/tlperl/lib/CORE/parser.h
@@ -70,8 +70,8 @@ typedef struct yy_parser {
SV *lex_stuff; /* runtime pattern from m// or s/// */
I32 multi_start; /* 1st line of multi-line string */
I32 multi_end; /* last line of multi-line string */
- UV multi_open; /* delimiter of said string */
- UV multi_close; /* delimiter of said string */
+ UV multi_open; /* delimiter code point of said string */
+ UV multi_close; /* delimiter code point of said string */
bool lex_re_reparsing; /* we're doing G_RE_REPARSING */
U8 lex_super_state;/* lexer state to save */
U16 lex_sub_inwhat; /* "lex_inwhat" to use in sublex_push */
diff --git a/Master/tlpkg/tlperl/lib/CORE/patchlevel.h b/Master/tlpkg/tlperl/lib/CORE/patchlevel.h
index 1a48368e7c6..9bd928bc384 100644
--- a/Master/tlpkg/tlperl/lib/CORE/patchlevel.h
+++ b/Master/tlpkg/tlperl/lib/CORE/patchlevel.h
@@ -38,8 +38,8 @@ Instead use one of the version comparison macros. See C<L</PERL_VERSION_EQ>>.
* exactly on the third column */
#define PERL_REVISION 5 /* age */
-#define PERL_VERSION 34 /* epoch */
-#define PERL_SUBVERSION 0 /* generation */
+#define PERL_VERSION 38 /* epoch */
+#define PERL_SUBVERSION 2 /* generation */
/* The following numbers describe the earliest compatible version of
Perl ("compatibility" here being defined as sufficient binary/API
@@ -59,7 +59,7 @@ Instead use one of the version comparison macros. See C<L</PERL_VERSION_EQ>>.
changing them should not be necessary.
*/
#define PERL_API_REVISION 5
-#define PERL_API_VERSION 34
+#define PERL_API_VERSION 38
#define PERL_API_SUBVERSION 0
/*
XXX Note: The selection of non-default Configure options, such
@@ -118,11 +118,12 @@ open PLIN, "<", "patchlevel.h" or die "Couldn't open patchlevel.h : $!";
open PLOUT, ">", "patchlevel.new" or die "Couldn't write on patchlevel.new : $!";
my $seen=0;
while (<PLIN>) {
- if (/\t,NULL/ and $seen) {
+ if (/^(\s+),NULL/ and $seen) {
+ my $pre = $1;
while (my $c = shift @ARGV){
$c =~ s|\\|\\\\|g;
$c =~ s|"|\\"|g;
- print PLOUT qq{\t,"$c"\n};
+ print PLOUT qq{$pre,"$c"\n};
}
}
$seen++ if /local_patches\[\]/;
@@ -153,7 +154,7 @@ hunk.
# define PERL_PATCHNUM "UNKNOWN-microperl"
# define PERL_GIT_UNPUSHED_COMMITS /*leave-this-comment*/
# else
-#include "git_version.h"
+# include "git_version.h"
# endif
static const char * const local_patches[] = {
NULL
@@ -167,7 +168,7 @@ static const char * const local_patches[] = {
/* Initial space prevents this variable from being inserted in config.sh */
-# define LOCAL_PATCH_COUNT \
+# define LOCAL_PATCH_COUNT \
((int)(C_ARRAY_LENGTH(local_patches)-2))
/* the old terms of reference, add them only when explicitly included */
diff --git a/Master/tlpkg/tlperl/lib/CORE/perl.h b/Master/tlpkg/tlperl/lib/CORE/perl.h
index 17a21a1c420..4ef161db95b 100644
--- a/Master/tlpkg/tlperl/lib/CORE/perl.h
+++ b/Master/tlpkg/tlperl/lib/CORE/perl.h
@@ -11,6 +11,22 @@
#ifndef H_PERL
#define H_PERL 1
+#if defined(__HP_cc) || defined(__HP_aCC)
+/* The HPUX compiler for Itanium is very picky and warns about
+ * things that gcc doesn't and that we would prefer it does not.
+ * So on that platform silence certain warnings unlaterally. */
+
+/* silence "relational operator ">" always evaluates to 'false'"
+ * warnings. We get a LOT of these from the memwrap checks. */
+#pragma diag_suppress 4276
+
+/* silence "may cause misaligned access" warnings from our "OO in C"
+ * type logic. we do this a lot and if it was broken we would fail tests
+ * all over the place */
+#pragma diag_suppress 4232
+
+#endif /* end HPUX warning disablement */
+
#ifdef PERL_FOR_X2P
/*
* This file is being used for x2p stuff.
@@ -28,14 +44,42 @@
# include "config.h"
#endif
-/* this is used for functions which take a depth trailing
- * argument under debugging */
+/*
+=for apidoc_section $debugging
+=for apidoc CmnW ||comma_aDEPTH
+Some functions when compiled under DEBUGGING take an extra final argument named
+C<depth>, indicating the C stack depth. This argument is omitted otherwise.
+This macro expands to either S<C<, depth>> under DEBUGGING, or to nothing at
+all when not under DEBUGGING, reducing the number of C<#ifdef>'s in the code.
+
+The program is responsible for maintaining the correct value for C<depth>.
+
+=for apidoc CyW ||comma_pDEPTH
+This is used in the prototype declarations for functions that take a L</C<comma_aDEPTH>>
+final parameter, much like L<C<pTHX_>|perlguts/Background and MULTIPLICITY>
+is used in functions that take a thread context initial parameter.
+
+=for apidoc CmnW ||debug_aDEPTH
+Same as L</C<comma_aDEPTH>> but with no leading argument. Intended for functions with
+no normal arguments, and used by L</C<comma_aDEPTH>> itself.
+
+=for apidoc CmnW ||debug_pDEPTH
+Same as L</C<comma_pDEPTH>> but with no leading argument. Intended for functions with
+no normal arguments, and used by L</C<comma_pDEPTH>> itself.
+
+=cut
+ */
+
#ifdef DEBUGGING
-# define _pDEPTH ,U32 depth
-# define _aDEPTH ,depth
+# define debug_pDEPTH U32 depth
+# define comma_pDEPTH ,debug_pDEPTH
+# define debug_aDEPTH depth
+# define comma_aDEPTH ,debug_aDEPTH
#else
-# define _pDEPTH
-# define _aDEPTH
+# define debug_aDEPTH
+# define comma_aDEPTH
+# define debug_pDEPTH
+# define comma_pDEPTH
#endif
/* NOTE 1: that with gcc -std=c89 the __STDC_VERSION__ is *not* defined
@@ -50,7 +94,7 @@
#endif
/* See L<perlguts/"The Perl API"> for detailed notes on
- * PERL_IMPLICIT_CONTEXT and PERL_IMPLICIT_SYS */
+ * MULTIPLICITY and PERL_IMPLICIT_SYS */
/* XXX NOTE that from here --> to <-- the same logic is
* repeated in makedef.pl, so be certain to update
@@ -62,10 +106,18 @@
# endif
#endif
-#ifdef MULTIPLICITY
-# ifndef PERL_IMPLICIT_CONTEXT
-# define PERL_IMPLICIT_CONTEXT
-# endif
+/* PERL_IMPLICIT_CONTEXT is a legacy synonym for MULTIPLICITY */
+#if defined(MULTIPLICITY) \
+ && ! defined(PERL_CORE) \
+ && ! defined(PERL_IMPLICIT_CONTEXT)
+# define PERL_IMPLICIT_CONTEXT
+#endif
+#if defined(PERL_IMPLICIT_CONTEXT) && !defined(MULTIPLICITY)
+# define MULTIPLICITY
+#endif
+#if defined(PERL_CORE) && defined(PERL_IMPLICIT_CONTEXT)
+# pragma message("PERL_IMPLICIT_CONTEXT was removed from core perl. It does not do anything. Undeffing it for compilation")
+# undef PERL_IMPLICIT_CONTEXT
#endif
/* undef WIN32 when building on Cygwin (for libwin32) - gph */
@@ -77,7 +129,7 @@
/* Use the reentrant APIs like localtime_r and getpwent_r */
/* Win32 has naturally threadsafe libraries, no need to use any _r variants.
* XXX KEEP makedef.pl copy of this code in sync */
-#if defined(USE_ITHREADS) && !defined(USE_REENTRANT_API) && !defined(NETWARE) && !defined(WIN32)
+#if defined(USE_ITHREADS) && !defined(USE_REENTRANT_API) && !defined(WIN32)
# define USE_REENTRANT_API
#endif
@@ -146,10 +198,7 @@ Now a synonym for C<L</dTHXa>>.
=cut
*/
-#ifdef PERL_IMPLICIT_CONTEXT
-# ifndef MULTIPLICITY
-# define MULTIPLICITY
-# endif
+#ifdef MULTIPLICITY
# define tTHX PerlInterpreter*
# define pTHX tTHX my_perl PERL_UNUSED_DECL
# define aTHX my_perl
@@ -284,6 +333,19 @@ Now a no-op.
# define PERL_IS_GCC 1
#endif
+#define PERL_GCC_VERSION_GE(major,minor,patch) \
+ (((100000 * __GNUC__) + (1000 * __GNUC_MINOR__) + __GNUC_PATCHLEVEL__) \
+ >= ((100000 * (major)) + (1000 * (minor)) + (patch)))
+#define PERL_GCC_VERSION_GT(major,minor,patch) \
+ (((100000 * __GNUC__) + (1000 * __GNUC_MINOR__) + __GNUC_PATCHLEVEL__) \
+ > ((100000 * (major)) + (1000 * (minor)) + (patch)))
+#define PERL_GCC_VERSION_LE(major,minor,patch) \
+ (((100000 * __GNUC__) + (1000 * __GNUC_MINOR__) + __GNUC_PATCHLEVEL__) \
+ <= ((100000 * (major)) + (1000 * (minor)) + (patch)))
+#define PERL_GCC_VERSION_LT(major,minor,patch) \
+ (((100000 * __GNUC__) + (1000 * __GNUC_MINOR__) + __GNUC_PATCHLEVEL__) \
+ < ((100000 * (major)) + (1000 * (minor)) + (patch)))
+
/* In case Configure was not used (we are using a "canned config"
* such as Win32, or a cross-compilation setup, for example) try going
* by the gcc major and minor versions. One useful URL is
@@ -300,40 +362,43 @@ Now a no-op.
#ifndef PERL_MICRO
# if defined __GNUC__ && !defined(__INTEL_COMPILER)
-# if __GNUC__ == 3 && __GNUC_MINOR__ >= 1 || __GNUC__ > 3 /* 3.1 -> */
+# if PERL_GCC_VERSION_GE(3,1,0)
# define HASATTRIBUTE_DEPRECATED
# endif
-# if __GNUC__ >= 3 /* 3.0 -> */ /* XXX Verify this version */
+# if PERL_GCC_VERSION_GE(3,0,0) /* XXX Verify this version */
# define HASATTRIBUTE_FORMAT
# if defined __MINGW32__
# define PRINTF_FORMAT_NULL_OK
# endif
# endif
-# if __GNUC__ >= 3 /* 3.0 -> */
+# if PERL_GCC_VERSION_GE(3,0,0)
# define HASATTRIBUTE_MALLOC
# endif
-# if __GNUC__ == 3 && __GNUC_MINOR__ >= 3 || __GNUC__ > 3 /* 3.3 -> */
+# if PERL_GCC_VERSION_GE(3,3,0)
# define HASATTRIBUTE_NONNULL
# endif
-# if __GNUC__ == 2 && __GNUC_MINOR__ >= 5 || __GNUC__ > 2 /* 2.5 -> */
+# if PERL_GCC_VERSION_GE(2,5,0)
# define HASATTRIBUTE_NORETURN
# endif
-# if __GNUC__ >= 3 /* gcc 3.0 -> */
+# if PERL_GCC_VERSION_GE(3,0,0)
# define HASATTRIBUTE_PURE
# endif
-# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 || __GNUC__ > 3 /* 3.4 -> */
+# if PERL_GCC_VERSION_GE(3,4,0)
# define HASATTRIBUTE_UNUSED
# endif
# if __GNUC__ == 3 && __GNUC_MINOR__ == 3 && !defined(__cplusplus)
# define HASATTRIBUTE_UNUSED /* gcc-3.3, but not g++-3.3. */
# endif
-# if __GNUC__ == 3 && __GNUC_MINOR__ >= 4 || __GNUC__ > 3 /* 3.4 -> */
+# if PERL_GCC_VERSION_GE(3,4,0)
# define HASATTRIBUTE_WARN_UNUSED_RESULT
# endif
/* always_inline is buggy in gcc <= 4.6 and causes compilation errors */
-# if __GNUC__ == 4 && __GNUC_MINOR__ >= 7 || __GNUC__ > 4 /* 4.7 -> */
+# if PERL_GCC_VERSION_GE(4,7,0)
# define HASATTRIBUTE_ALWAYS_INLINE
# endif
+# if PERL_GCC_VERSION_GE(3,3,0)
+# define HASATTRIBUTE_VISIBILITY
+# endif
# endif
#endif /* #ifndef PERL_MICRO */
@@ -363,10 +428,18 @@ Now a no-op.
#endif
#ifdef HASATTRIBUTE_ALWAYS_INLINE
/* always_inline is buggy in gcc <= 4.6 and causes compilation errors */
-# if !defined(PERL_IS_GCC) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7 || __GNUC__ > 4)
+# if !defined(PERL_IS_GCC) || PERL_GCC_VERSION_GE(4,7,0)
# define __attribute__always_inline__ __attribute__((always_inline))
# endif
#endif
+#if defined(HASATTRIBUTE_VISIBILITY) && !defined(_WIN32) && !defined(__CYGWIN__)
+/* On Windows instead of this, we use __declspec(dllexport) and a .def file
+ * Cygwin works by exporting every global symbol, see the definition of ldflags
+ * near the end of hints/cygwin.sh and the visibility attribute doesn't appear
+ * to control that.
+ */
+# define __attribute__visibility__(x) __attribute__((visibility(x)))
+#endif
/* If we haven't defined the attributes yet, define them to blank. */
#ifndef __attribute__deprecated__
@@ -396,6 +469,9 @@ Now a no-op.
#ifndef __attribute__always_inline__
# define __attribute__always_inline__
#endif
+#ifndef __attribute__visibility__
+# define __attribute__visibility__(x)
+#endif
/* Some OS warn on NULL format to printf */
#ifdef PRINTF_FORMAT_NULL_OK
@@ -413,7 +489,9 @@ Now a no-op.
* marking unused variables (they need e.g. a #pragma) and therefore
* cpp macros like PERL_UNUSED_DECL cannot work for this purpose, even
* if it were PERL_UNUSED_DECL(x), which it cannot be (see above).
+*/
+/*
=for apidoc_section $directives
=for apidoc AmnU||PERL_UNUSED_DECL
Tells the compiler that the parameter in the function prototype just before it
@@ -432,7 +510,7 @@ Example usage:
=back
=cut
- */
+*/
#ifndef PERL_UNUSED_DECL
# define PERL_UNUSED_DECL __attribute__unused__
@@ -442,25 +520,26 @@ Example usage:
* for silencing unused variables that are actually used most of the time,
* but we cannot quite get rid of, such as "ax" in PPCODE+noargs xsubs,
* or variables/arguments that are used only in certain configurations.
-
-=for apidoc Ams||PERL_UNUSED_ARG|void x
+ */
+/*
+=for apidoc Am;||PERL_UNUSED_ARG|void x
This is used to suppress compiler warnings that a parameter to a function is
not used. This situation can arise, for example, when a parameter is needed
under some configuration conditions, but not others, so that C preprocessor
-conditional compilation causes it be used just some times.
+conditional compilation causes it be used just sometimes.
-=for apidoc Amns||PERL_UNUSED_CONTEXT
+=for apidoc Amn;||PERL_UNUSED_CONTEXT
This is used to suppress compiler warnings that the thread context parameter to
a function is not used. This situation can arise, for example, when a
C preprocessor conditional compilation causes it be used just some times.
-=for apidoc Ams||PERL_UNUSED_VAR|void x
+=for apidoc Am;||PERL_UNUSED_VAR|void x
This is used to suppress compiler warnings that the variable I<x> is not used.
This situation can arise, for example, when a C preprocessor conditional
compilation causes it be used just some times.
=cut
- */
+*/
#ifndef PERL_UNUSED_ARG
# define PERL_UNUSED_ARG(x) ((void)sizeof(x))
#endif
@@ -481,7 +560,7 @@ compilation causes it be used just some times.
*/
#if defined(PERL_GCC_PEDANTIC) || \
(defined(__GNUC__) && defined(__cplusplus) && \
- ((__GNUC__ < 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ < 2))))
+ (PERL_GCC_VERSION_LT(4,2,0)))
# ifndef PERL_GCC_BRACE_GROUPS_FORBIDDEN
# define PERL_GCC_BRACE_GROUPS_FORBIDDEN
# endif
@@ -516,7 +595,7 @@ and use C<L</PERL_UNUSED_VAR>> on that.
=cut
The __typeof__() is used instead of typeof() since typeof() is not
-available under strict C89, and because of compilers masquerading
+available under strict ISO C, and because of compilers masquerading
as gcc (clang and icc), we want exactly the gcc extension
__typeof__ and nothing else.
@@ -529,11 +608,6 @@ __typeof__ and nothing else.
# endif
#endif
-#if defined(_MSC_VER) && _MSC_VER < 1400
-/* XXX older MSVC versions have a smallish macro buffer */
-# define PERL_SMALL_MACRO_BUFFER
-#endif
-
/* on gcc (and clang), specify that a warning should be temporarily
* ignored; e.g.
*
@@ -557,8 +631,7 @@ __typeof__ and nothing else.
*
*/
-#if defined(__clang__) || defined(__clang) || \
- (defined( __GNUC__) && ((__GNUC__ * 100) + __GNUC_MINOR__) >= 406)
+#if defined(__clang__) || defined(__clang) || PERL_GCC_VERSION_GE(4,6,0)
# define GCC_DIAG_PRAGMA(x) _Pragma (#x)
/* clang has "clang diagnostic" pragmas, but also understands gcc. */
# define GCC_DIAG_IGNORE(x) _Pragma("GCC diagnostic push") \
@@ -587,7 +660,7 @@ __typeof__ and nothing else.
#define CLANG_DIAG_IGNORE_STMT(x) CLANG_DIAG_IGNORE(x) NOOP
#define CLANG_DIAG_RESTORE_STMT CLANG_DIAG_RESTORE NOOP
-#if defined(_MSC_VER) && (_MSC_VER >= 1300)
+#if defined(_MSC_VER)
# define MSVC_DIAG_IGNORE(x) __pragma(warning(push)) \
__pragma(warning(disable : x))
# define MSVC_DIAG_RESTORE __pragma(warning(pop))
@@ -601,23 +674,23 @@ __typeof__ and nothing else.
#define MSVC_DIAG_RESTORE_STMT MSVC_DIAG_RESTORE NOOP
/*
-=for apidoc Amns||NOOP
+=for apidoc Amn;||NOOP
Do nothing; typically used as a placeholder to replace something that used to
do something.
-=for apidoc Amns||dNOOP
+=for apidoc Amn;||dNOOP
Declare nothing; typically used as a placeholder to replace something that used
to declare something. Works on compilers that require declarations before any
code.
=cut
*/
-#define NOOP /*EMPTY*/(void)0
+#define NOOP ((void)0)
#define dNOOP struct Perl___notused_struct
#ifndef pTHX
/* Don't bother defining tTHX ; using it outside
- * code guarded by PERL_IMPLICIT_CONTEXT is an error.
+ * code guarded by MULTIPLICITY is an error.
*/
# define pTHX void
# define pTHX_
@@ -626,7 +699,7 @@ code.
# define aTHXa(a) NOOP
# define dTHXa(a) dNOOP
# define dTHX dNOOP
-# define pTHX_1 1
+# define pTHX_1 1
# define pTHX_2 2
# define pTHX_3 3
# define pTHX_4 4
@@ -644,7 +717,7 @@ code.
This is now a synonym for dNOOP: declare nothing
=for apidoc_section $XS
-=for apidoc Amns||dMY_CXT_SV
+=for apidoc Amn;||dMY_CXT_SV
Now a placeholder that declares nothing
=cut
@@ -693,28 +766,60 @@ Now a placeholder that declares nothing
/*
=for apidoc_section $directives
-=for apidoc AmnUu|void|STMT_START
-=for apidoc_item ||STMT_END
+=for apidoc AmnUu|void|STMT_END
+=for apidoc_item | |STMT_START
-This allows a series of statements in a macro to be used as a single statement,
+These allow a series of statements in a macro to be used as a single statement,
as in
if (x) STMT_START { ... } STMT_END else ...
-Note that you can't return a value out of them, which limits their utility.
-But see C<L</PERL_USE_GCC_BRACE_GROUPS>>.
+Note that you can't return a value out of this construct and cannot use it as
+an operand to the comma operator. These limit its utility.
-=for apidoc AmnuU|bool|PERL_USE_GCC_BRACE_GROUPS
+But, a value could be returned by constructing the API so that a pointer is
+passed and the macro dereferences this to set the return. If the value can be
+any of various types, depending on context, you can handle that situation in
+some situations by adding the type of the return as an extra accompanying
+parameter:
+
+ #define foo(param, type) STMT_START {
+ type * param; *param = do_calc; ...
+ } STMT_END
+
+This could be awkward, so consider instead using a C language C<static inline>
+function.
+
+If you do use this construct, it is easy to forget that it is a macro and not a
+function, and hence fall into traps that might not show up until someone
+someday writes code which contains names that clash with the ones you chose
+here, or calls it with a parameter which is an expression with side effects,
+the consequences of which you didn't think about. See L<perlhacktips/Writing
+safer macros> for how to avoid these.
+
+=for apidoc_section $genconfig
+=for apidoc Amn#||PERL_USE_GCC_BRACE_GROUPS
This C pre-processor value, if defined, indicates that it is permissible to use
-the GCC brace groups extension. This extension, of the form
+the GCC brace groups extension. However, use of this extension is DISCOURAGED.
+Use a C<static inline> function instead.
+
+The extension, of the form
({ statement ... })
-turns the block consisting of I<statements ...> into an expression with a
+turns the block consisting of I<statement ...> into an expression with a
value, unlike plain C language blocks. This can present optimization
-possibilities, B<BUT> you generally need to specify an alternative in case this
-ability doesn't exist or has otherwise been forbidden.
+possibilities, B<BUT>, unless you know for sure that this will never be
+compiled without this extension being available and not forbidden, you need to
+specify an alternative. Thus two code paths have to be maintained, which can
+get out-of-sync. All these issues are solved by using a C<static inline>
+function instead.
+
+Perl can be configured to not use this feature by passing the parameter
+C<-Accflags=-DPERL_GCC_BRACE_GROUPS_FORBIDDEN> to F<Configure>.
+
+=for apidoc Amnh#||PERL_GCC_BRACE_GROUPS_FORBIDDEN
Example usage:
@@ -733,23 +838,27 @@ Example usage:
Trying to select a version that gives no warnings...
*/
#if !(defined(STMT_START) && defined(STMT_END))
-# ifdef PERL_USE_GCC_BRACE_GROUPS
-# define STMT_START (void)( /* gcc supports "({ STATEMENTS; })" */
-# define STMT_END )
-# else
# define STMT_START do
# define STMT_END while (0)
-# endif
#endif
#ifndef BYTEORDER /* Should never happen -- byteorder is in config.h */
# define BYTEORDER 0x1234
#endif
+/*
+=for apidoc_section $genconfig
+=for apidoc Amn#||ASCIIish
+
+A preprocessor symbol that is defined iff the system is an ASCII platform; this
+symbol would not be defined on C<L</EBCDIC>> platforms.
+
+=cut
+*/
#if 'A' == 65 && 'I' == 73 && 'J' == 74 && 'Z' == 90
-#define ASCIIish
+# define ASCIIish
#else
-#undef ASCIIish
+# undef ASCIIish
#endif
/*
@@ -761,7 +870,7 @@ Example usage:
*/
/* define this once if either system, instead of cluttering up the src */
-#if defined(MSDOS) || defined(WIN32) || defined(NETWARE)
+#if defined(WIN32)
#define DOSISH 1
#endif
@@ -811,6 +920,68 @@ Example usage:
# define TAINT_WARN_get 0
# define TAINT_WARN_set(s) NOOP
#else
+
+/*
+=for apidoc_section $tainting
+=for apidoc Cm|void|TAINT
+
+If we aren't in taint checking mode, do nothing;
+otherwise indicate to L</C<TAINT_set>> and L</C<TAINT_PROPER>> that some
+unspecified element is tainted.
+
+=for apidoc Cm|void|TAINT_NOT
+
+Remove any taintedness previously set by, I<e.g.>, C<TAINT>.
+
+=for apidoc Cm|void|TAINT_IF|bool c
+
+If C<c> evaluates to true, call L</C<TAINT>> to indicate that something is
+tainted; otherwise do nothing.
+
+=for apidoc Cmn|void|TAINT_ENV
+
+Looks at several components of L<C<%ENV>|perlvar/%ENV> for taintedness, and
+calls L</C<taint_proper>> if any are tainted. The components it searches are
+things like C<$PATH>.
+
+=for apidoc Cm|void|TAINT_PROPER|const char * s
+
+If no element is tainted, do nothing;
+otherwise output a message (containing C<s>) that indicates there is a
+tainting violation. If such violations are fatal, it croaks.
+
+=for apidoc Cm|void|TAINT_set|bool s
+
+If C<s> is true, L</C<TAINT_get>> returns true;
+If C<s> is false, L</C<TAINT_get>> returns false;
+
+=for apidoc Cm|bool|TAINT_get
+
+Returns a boolean as to whether some element is tainted or not.
+
+=for apidoc Cm|bool|TAINTING_get
+
+Returns a boolean as to whether taint checking is enabled or not.
+
+=for apidoc Cm|void|TAINTING_set|bool s
+
+Turn taint checking mode off/on
+
+=for apidoc Cm|bool|TAINT_WARN_get
+
+Returns false if tainting violations are fatal;
+Returns true if they're just warnings
+
+=for apidoc Cm|void|TAINT_WARN_set|bool s
+
+C<s> being true indicates L</C<TAINT_WARN_get>> should return that tainting
+violations are just warnings
+
+C<s> being false indicates L</C<TAINT_WARN_get>> should return that tainting
+violations are fatal.
+
+=cut
+*/
/* Set to tainted if we are running under tainting mode */
# define TAINT (PL_tainted = PL_tainting)
@@ -821,15 +992,12 @@ Example usage:
# define TAINT_PROPER(s) if (UNLIKELY(PL_tainting)) { \
taint_proper(NULL, s); \
}
-# define TAINT_set(s) (PL_tainted = (s))
+# define TAINT_set(s) (PL_tainted = cBOOL(s))
# define TAINT_get (cBOOL(UNLIKELY(PL_tainted))) /* Is something tainted? */
-# define TAINTING_get (cBOOL(UNLIKELY(PL_tainting))) /* Is taint checking enabled? */
-# define TAINTING_set(s) (PL_tainting = (s))
-# define TAINT_WARN_get (PL_taint_warn) /* FALSE => tainting violations
- are fatal
- TRUE => they're just
- warnings */
-# define TAINT_WARN_set(s) (PL_taint_warn = (s))
+# define TAINTING_get (cBOOL(UNLIKELY(PL_tainting)))
+# define TAINTING_set(s) (PL_tainting = cBOOL(s))
+# define TAINT_WARN_get (PL_taint_warn)
+# define TAINT_WARN_set(s) (PL_taint_warn = cBOOL(s))
#endif
/* flags used internally only within pp_subst and pp_substcont */
@@ -883,6 +1051,13 @@ Example usage:
# endif
#endif
+/* This define exists only for compatibility. It used to mean "my_setenv and
+ * friends should use setenv/putenv, instead of manipulating environ directly",
+ * which is now always the case. It's still defined to prevent XS modules from
+ * using the no longer existing PL_use_safe_putenv variable.
+ */
+#define PERL_USE_SAFE_PUTENV
+
/* HP-UX 10.X CMA (Common Multithreaded Architecture) insists that
pthread.h must be included before all other header files.
*/
@@ -918,10 +1093,16 @@ Example usage:
# include <locale.h>
#endif
-#ifdef I_XLOCALE
+#ifdef NEED_XLOCALE_H
# include <xlocale.h>
#endif
+#include "perl_langinfo.h" /* Needed for _NL_LOCALE_NAME */
+
+/* =========================================================================
+ * The defines from here to the following ===== line are unfortunately
+ * duplicated in makedef.pl, and changes here MUST also be made there */
+
/* If not forbidden, we enable locale handling if either 1) the POSIX 2008
* functions are available, or 2) just the setlocale() function. This logic is
* repeated in t/loc_tools.pl and makedef.pl; The three should be kept in
@@ -983,6 +1164,9 @@ Example usage:
# if !defined(NO_LOCALE_TELEPHONE) && defined(LC_TELEPHONE)
# define USE_LOCALE_TELEPHONE
# endif
+# if !defined(NO_LOCALE_NAME) && defined(LC_NAME)
+# define USE_LOCALE_NAME
+# endif
# if !defined(NO_LOCALE_SYNTAX) && defined(LC_SYNTAX)
# define USE_LOCALE_SYNTAX
# endif
@@ -990,38 +1174,205 @@ Example usage:
# define USE_LOCALE_TOD
# endif
-/* XXX The next few defines are unfortunately duplicated in makedef.pl, and
- * changes here MUST also be made there */
+/* Now create LC_foo_INDEX_ #defines for just those categories on this system */
+# ifdef USE_LOCALE_CTYPE
+# define LC_CTYPE_INDEX_ 0
+# define PERL_DUMMY_CTYPE_ LC_CTYPE_INDEX_
+# else
+# define PERL_DUMMY_CTYPE_ -1
+# endif
+# ifdef USE_LOCALE_NUMERIC
+# define LC_NUMERIC_INDEX_ PERL_DUMMY_CTYPE_ + 1
+# define PERL_DUMMY_NUMERIC_ LC_NUMERIC_INDEX_
+# else
+# define PERL_DUMMY_NUMERIC_ PERL_DUMMY_CTYPE_
+# endif
+# ifdef USE_LOCALE_COLLATE
+# define LC_COLLATE_INDEX_ PERL_DUMMY_NUMERIC_ + 1
+# define PERL_DUMMY_COLLATE_ LC_COLLATE_INDEX_
+# else
+# define PERL_DUMMY_COLLATE_ PERL_DUMMY_NUMERIC_
+# endif
+# ifdef USE_LOCALE_TIME
+# define LC_TIME_INDEX_ PERL_DUMMY_COLLATE_ + 1
+# define PERL_DUMMY_TIME_ LC_TIME_INDEX_
+# else
+# define PERL_DUMMY_TIME_ PERL_DUMMY_COLLATE_
+# endif
+# ifdef USE_LOCALE_MESSAGES
+# define LC_MESSAGES_INDEX_ PERL_DUMMY_TIME_ + 1
+# define PERL_DUMMY_MESSAGES_ LC_MESSAGES_INDEX_
+# else
+# define PERL_DUMMY_MESSAGES_ PERL_DUMMY_TIME_
+# endif
+# ifdef USE_LOCALE_MONETARY
+# define LC_MONETARY_INDEX_ PERL_DUMMY_MESSAGES_ + 1
+# define PERL_DUMMY_MONETARY_ LC_MONETARY_INDEX_
+# else
+# define PERL_DUMMY_MONETARY_ PERL_DUMMY_MESSAGES_
+# endif
+# ifdef USE_LOCALE_ADDRESS
+# define LC_ADDRESS_INDEX_ PERL_DUMMY_MONETARY_ + 1
+# define PERL_DUMMY_ADDRESS_ LC_ADDRESS_INDEX_
+# else
+# define PERL_DUMMY_ADDRESS_ PERL_DUMMY_MONETARY_
+# endif
+# ifdef USE_LOCALE_IDENTIFICATION
+# define LC_IDENTIFICATION_INDEX_ PERL_DUMMY_ADDRESS_ + 1
+# define PERL_DUMMY_IDENTIFICATION_ LC_IDENTIFICATION_INDEX_
+# else
+# define PERL_DUMMY_IDENTIFICATION_ PERL_DUMMY_ADDRESS_
+# endif
+# ifdef USE_LOCALE_MEASUREMENT
+# define LC_MEASUREMENT_INDEX_ PERL_DUMMY_IDENTIFICATION_ + 1
+# define PERL_DUMMY_MEASUREMENT_ LC_MEASUREMENT_INDEX_
+# else
+# define PERL_DUMMY_MEASUREMENT_ PERL_DUMMY_IDENTIFICATION_
+# endif
+# ifdef USE_LOCALE_PAPER
+# define LC_PAPER_INDEX_ PERL_DUMMY_MEASUREMENT_ + 1
+# define PERL_DUMMY_PAPER_ LC_PAPER_INDEX_
+# else
+# define PERL_DUMMY_PAPER_ PERL_DUMMY_MEASUREMENT_
+# endif
+# ifdef USE_LOCALE_TELEPHONE
+# define LC_TELEPHONE_INDEX_ PERL_DUMMY_PAPER_ + 1
+# define PERL_DUMMY_TELEPHONE_ LC_TELEPHONE_INDEX_
+# else
+# define PERL_DUMMY_TELEPHONE_ PERL_DUMMY_PAPER_
+# endif
+# ifdef USE_LOCALE_NAME
+# define LC_NAME_INDEX_ PERL_DUMMY_TELEPHONE_ + 1
+# define PERL_DUMMY_NAME_ LC_NAME_INDEX_
+# else
+# define PERL_DUMMY_NAME_ PERL_DUMMY_TELEPHONE_
+# endif
+# ifdef USE_LOCALE_SYNTAX
+# define LC_SYNTAX_INDEX_ PERL_DUMMY_NAME + 1
+# define PERL_DUMMY_SYNTAX_ LC_SYNTAX_INDEX_
+# else
+# define PERL_DUMMY_SYNTAX_ PERL_DUMMY_NAME_
+# endif
+# ifdef USE_LOCALE_TOD
+# define LC_TOD_INDEX_ PERL_DUMMY_SYNTAX_ + 1
+# define PERL_DUMMY_TOD_ LC_TOD_INDEX_
+# else
+# define PERL_DUMMY_TOD_ PERL_DUMMY_SYNTAX_
+# endif
+# ifdef LC_ALL
+# define LC_ALL_INDEX_ PERL_DUMMY_TOD_ + 1
+# endif
+
-# if ! defined(HAS_SETLOCALE) && defined(HAS_POSIX_2008_LOCALE)
-# define USE_POSIX_2008_LOCALE
-# ifndef USE_THREAD_SAFE_LOCALE
-# define USE_THREAD_SAFE_LOCALE
-# endif
- /* If compiled with
- * -DUSE_THREAD_SAFE_LOCALE, will do so even
- * on unthreaded builds */
-# elif (defined(USE_ITHREADS) || defined(USE_THREAD_SAFE_LOCALE)) \
- && ( defined(HAS_POSIX_2008_LOCALE) \
- || (defined(WIN32) && defined(_MSC_VER) && _MSC_VER >= 1400)) \
- && ! defined(NO_THREAD_SAFE_LOCALE)
-# ifndef USE_THREAD_SAFE_LOCALE
+# if defined(USE_ITHREADS) && ! defined(NO_LOCALE_THREADS)
+# define USE_LOCALE_THREADS
+# endif
+
+ /* Use POSIX 2008 locales if available, and no alternative exists
+ * ('setlocale()' is the alternative); or is threaded and not forbidden to
+ * use them */
+# if defined(HAS_POSIX_2008_LOCALE) && ( ! defined(HAS_SETLOCALE) \
+ || ( defined(USE_LOCALE_THREADS) \
+ && ! defined(NO_POSIX_2008_LOCALE)))
+# define USE_POSIX_2008_LOCALE
+# endif
+
+ /* On threaded builds, use thread-safe locales if they are available and not
+ * forbidden. Availability is when we are using POSIX 2008 locales, or
+ * Windows for quite a few releases now. */
+# if defined(USE_LOCALE_THREADS) && ! defined(NO_THREAD_SAFE_LOCALE)
+# if defined(USE_POSIX_2008_LOCALE) || (defined(WIN32) && defined(_MSC_VER))
# define USE_THREAD_SAFE_LOCALE
# endif
-# ifdef HAS_POSIX_2008_LOCALE
-# define USE_POSIX_2008_LOCALE
+# endif
+
+# include "perl_langinfo.h" /* Needed for _NL_LOCALE_NAME */
+
+# ifdef USE_POSIX_2008_LOCALE
+# if defined(HAS_QUERYLOCALE) \
+ /* Use querylocale if has it, or has the glibc internal \
+ * undocumented equivalent. */ \
+ || ( defined(_NL_LOCALE_NAME) \
+ /* And asked for */ \
+ && defined(USE_NL_LOCALE_NAME) \
+ /* nl_langinfo_l almost certainly will exist on systems that \
+ * have _NL_LOCALE_NAME, so there is nothing lost by \
+ * requiring it instead of also allowing plain nl_langinfo(). \
+ * And experience indicates that its glibc implementation is \
+ * thread-safe, eliminating code complications */ \
+ && defined(HAS_NL_LANGINFO_L) \
+ /* On systems that accept any locale name, the real \
+ * underlying locale is often returned by this internal \
+ * item, so we can't use it */ \
+ && ! defined(SETLOCALE_ACCEPTS_ANY_LOCALE_NAME))
+# define USE_QUERYLOCALE
+# endif
+# endif
+
+ /* POSIX 2008 has no means of finding out the current locale without a
+ * querylocale; so must keep track of it ourselves */
+# if (defined(USE_POSIX_2008_LOCALE) && ! defined(USE_QUERYLOCALE))
+# define USE_PL_CURLOCALES
+# define USE_PL_CUR_LC_ALL
+# endif
+
+# if defined(WIN32) && defined(USE_THREAD_SAFE_LOCALE)
+
+ /* We need to be able to map the current value of what the tTHX context
+ * thinks LC_ALL is so as to inform the Windows libc when switching
+ * contexts. */
+# define USE_PL_CUR_LC_ALL
+
+ /* Microsoft documentation reads in the change log for VS 2015: "The
+ * localeconv function declared in locale.h now works correctly when
+ * per-thread locale is enabled. In previous versions of the library, this
+ * function would return the lconv data for the global locale, not the
+ * thread's locale." */
+# if _MSC_VER < 1900
+# define TS_W32_BROKEN_LOCALECONV
# endif
# endif
+
+ /* POSIX 2008 and Windows with thread-safe locales keep locale information
+ * in libc data. Therefore we must inform their libc's when the context
+ * switches */
+# if defined(MULTIPLICITY) && ( defined(USE_POSIX_2008_LOCALE) \
+ || ( defined(WIN32) \
+ && defined(USE_THREAD_SAFE_LOCALE)))
+# define USE_PERL_SWITCH_LOCALE_CONTEXT
+# endif
#endif
-/* Microsoft documentation reads in the change log for VS 2015:
- * "The localeconv function declared in locale.h now works correctly when
- * per-thread locale is enabled. In previous versions of the library, this
- * function would return the lconv data for the global locale, not the
- * thread's locale."
- */
-#if defined(WIN32) && defined(USE_THREAD_SAFE_LOCALE) && _MSC_VER < 1900
-# define TS_W32_BROKEN_LOCALECONV
+/* end of makedef.pl logic duplication
+ * ========================================================================= */
+
+#ifdef PERL_CORE
+
+/* Both typedefs are used in locale.c only, but defined here so that embed.fnc
+ * can generate the proper prototypes. */
+
+typedef enum {
+ DONT_RECALC_LC_ALL,
+ YES_RECALC_LC_ALL,
+
+ /* Used in tight loops through all sub-categories, where LC_ALL won't be
+ * fully known until all subcategories are handled. */
+ RECALCULATE_LC_ALL_ON_FINAL_INTERATION
+} recalc_lc_all_t;
+
+
+typedef enum { /* Is the locale UTF8? */
+ LOCALE_NOT_UTF8,
+ LOCALE_IS_UTF8,
+ LOCALE_UTF8NESS_UNKNOWN
+} locale_utf8ness_t;
+
+typedef struct {
+ const char *name;
+ size_t offset;
+} lconv_offset_t;
+
+
#endif
#include <setjmp.h>
@@ -1080,7 +1431,9 @@ EXTERN_C int usleep(unsigned int);
/* Macros for correct constant construction. These are in C99 <stdint.h>
* (so they will not be available in strict C89 mode), but they are nice, so
- * let's define them if necessary.
+ * let's define them if necessary. */
+
+/*
=for apidoc_section $integer
=for apidoc Am|I16|INT16_C|number
=for apidoc_item |I32|INT32_C|number
@@ -1249,12 +1602,6 @@ Use L</UV> to declare variables of the maximum usable size on this platform.
(((U64)(x) & UINT64_C(0xff00000000000000)) >> 56) ))
# endif
-/* The old value was hard coded at 1008. (4096-16) seems to be a bit faster,
- at least on FreeBSD. YMMV, so experiment. */
-#ifndef PERL_ARENA_SIZE
-#define PERL_ARENA_SIZE 4080
-#endif
-
/* Maximum level of recursion */
#ifndef PERL_SUB_DEPTH_WARN
#define PERL_SUB_DEPTH_WARN 100
@@ -1294,12 +1641,38 @@ Use L</UV> to declare variables of the maximum usable size on this platform.
#define PERL_USES_PL_PIDSTATUS
#endif
-#if !defined(OS2) && !defined(WIN32) && !defined(DJGPP)
+#if !defined(OS2) && !defined(WIN32)
#define PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION
#endif
#define MEM_SIZE Size_t
+/* av_extend and analogues enforce a minimum number of array elements.
+ * This has been 4 elements (so a minimum key size of 3) for a long
+ * time, but the rationale behind this seems to have been lost to the
+ * mists of time. */
+#ifndef PERL_ARRAY_NEW_MIN_KEY
+#define PERL_ARRAY_NEW_MIN_KEY 3
+#endif
+
+/* Functions like Perl_sv_grow mandate a minimum string size.
+ * This was 10 bytes for a long time, the rationale for which seems lost
+ * to the mists of time. However, this does not correlate to what modern
+ * malloc implementations will actually return, in particular the fact
+ * that chunks are almost certainly some multiple of pointer size. The
+ * default has therefore been revised to a more useful approximation.
+ * Notes: The following is specifically conservative for 64 bit, since
+ * most dlmalloc derivatives seem to serve a 3xPTRSIZE minimum chunk,
+ * so the below perhaps should be:
+ * ((PTRSIZE == 4) ? 12 : 24)
+ * Configure probes for malloc_good_size, malloc_actual_size etc.
+ * could be revised to record the actual minimum chunk size, to which
+ * PERL_STRLEN_NEW_MIN could then be set.
+ */
+#ifndef PERL_STRLEN_NEW_MIN
+#define PERL_STRLEN_NEW_MIN ((PTRSIZE == 4) ? 12 : 16)
+#endif
+
/* Round all values passed to malloc up, by default to a multiple of
sizeof(size_t)
*/
@@ -1361,21 +1734,23 @@ Use L</UV> to declare variables of the maximum usable size on this platform.
# define saferealloc Perl_realloc
# define safefree Perl_mfree
# define CHECK_MALLOC_TOO_LATE_FOR_(code) STMT_START { \
- if (!TAINTING_get && MallocCfg_ptr[MallocCfg_cfg_env_read]) \
- code; \
+ if (!TAINTING_get && MallocCfg_ptr[MallocCfg_cfg_env_read]) \
+ code; \
} STMT_END
# define CHECK_MALLOC_TOO_LATE_FOR(ch) \
- CHECK_MALLOC_TOO_LATE_FOR_(MALLOC_TOO_LATE_FOR(ch))
+ CHECK_MALLOC_TOO_LATE_FOR_(MALLOC_TOO_LATE_FOR(ch))
# define panic_write2(s) write(2, s, strlen(s))
# define CHECK_MALLOC_TAINT(newval) \
- CHECK_MALLOC_TOO_LATE_FOR_( \
- if (newval) { \
- PERL_UNUSED_RESULT(panic_write2("panic: tainting with $ENV{PERL_MALLOC_OPT}\n"));\
- exit(1); })
-# define MALLOC_CHECK_TAINT(argc,argv,env) STMT_START { \
- if (doing_taint(argc,argv,env)) { \
- MallocCfg_ptr[MallocCfg_skip_cfg_env] = 1; \
- }} STMT_END;
+ CHECK_MALLOC_TOO_LATE_FOR_( \
+ if (newval) { \
+ PERL_UNUSED_RESULT(panic_write2("panic: tainting with $ENV{PERL_MALLOC_OPT}\n"));\
+ exit(1); })
+# define MALLOC_CHECK_TAINT(argc,argv,env) \
+ STMT_START { \
+ if (doing_taint(argc,argv,env)) { \
+ MallocCfg_ptr[MallocCfg_skip_cfg_env] = 1; \
+ } \
+ } STMT_END;
#else /* MYMALLOC */
# define safemalloc safesysmalloc
# define safecalloc safesyscalloc
@@ -1475,9 +1850,6 @@ Set the C<l> bytes starting at C<*d> to all zeroes.
# endif
# endif
# ifdef I_NETDB
-# ifdef NETWARE
-# include<stdio.h>
-# endif
# include <netdb.h>
# endif
# ifndef ENOTSOCK
@@ -1551,10 +1923,10 @@ was saved by C<dSAVE_ERRNO> or C<RESTORE_ERRNO>.
#ifdef VMS
# define SETERRNO(errcode,vmserrcode) \
- STMT_START { \
- set_errno(errcode); \
- set_vaxc_errno(vmserrcode); \
- } STMT_END
+ STMT_START { \
+ set_errno(errcode); \
+ set_vaxc_errno(vmserrcode); \
+ } STMT_END
# define dSAVEDERRNO int saved_errno; unsigned saved_vms_errno
# define dSAVE_ERRNO int saved_errno = errno; unsigned saved_vms_errno = vaxc$errno
# define SAVE_ERRNO ( saved_errno = errno, saved_vms_errno = vaxc$errno )
@@ -1647,15 +2019,15 @@ any magic.
if (!*svp) { \
*svp = newSVpvs(""); \
} else if (SvREADONLY(*svp)) { \
- SvREFCNT_dec_NN(*svp); \
- *svp = newSVpvs(""); \
+ SvREFCNT_dec_NN(*svp); \
+ *svp = newSVpvs(""); \
} else { \
- SV *const errsv = *svp; \
+ SV *const errsv = *svp; \
SvPVCLEAR(errsv); \
- SvPOK_only(errsv); \
- if (SvMAGICAL(errsv)) { \
- mg_free(errsv); \
- } \
+ SvPOK_only(errsv); \
+ if (SvMAGICAL(errsv)) { \
+ mg_free(errsv); \
+ } \
} \
} STMT_END
@@ -1666,13 +2038,13 @@ any magic.
*svp = newSVpvs(""); \
} else if (SvREADONLY(*svp)) { \
SV *dupsv = newSVsv(*svp); \
- SvREFCNT_dec_NN(*svp); \
- *svp = dupsv; \
+ SvREFCNT_dec_NN(*svp); \
+ *svp = dupsv; \
} else { \
- SV *const errsv = *svp; \
- if (SvMAGICAL(errsv)) { \
- mg_free(errsv); \
- } \
+ SV *const errsv = *svp; \
+ if (SvMAGICAL(errsv)) { \
+ mg_free(errsv); \
+ } \
} \
} STMT_END
@@ -1683,10 +2055,10 @@ any magic.
(SvREFCNT_dec(GvSV(PL_defgv)), GvSV(PL_defgv) = SvREFCNT_inc(sv))
# define SAVE_DEFSV \
( \
- save_gp(PL_defgv, 0), \
- GvINTRO_off(PL_defgv), \
- SAVEGENERICSV(GvSV(PL_defgv)), \
- GvSV(PL_defgv) = NULL \
+ save_gp(PL_defgv, 0), \
+ GvINTRO_off(PL_defgv), \
+ SAVEGENERICSV(GvSV(PL_defgv)), \
+ GvSV(PL_defgv) = NULL \
)
#else
# define DEFSV GvSVn(PL_defgv)
@@ -1709,11 +2081,11 @@ Localize C<$_>. See L<perlguts/Localizing changes>.
*/
#ifndef errno
- extern int errno; /* ANSI allows errno to be an lvalue expr.
- * For example in multithreaded environments
- * something like this might happen:
- * extern int *_errno(void);
- * #define errno (*_errno()) */
+ extern int errno; /* ANSI allows errno to be an lvalue expr.
+ * For example in multithreaded environments
+ * something like this might happen:
+ * extern int *_errno(void);
+ * #define errno (*_errno()) */
#endif
#define UNKNOWN_ERRNO_MSG "(unknown)"
@@ -1945,7 +2317,7 @@ my_snprintf()
#define PERL_SNPRINTF_CHECK(len, max, api) STMT_START { if ((max) > 0 && (Size_t)len > (max)) Perl_croak_nocontext("panic: %s buffer overflow", STRINGIFY(api)); } STMT_END
-#ifdef USE_QUADMATH
+#if defined(USE_LOCALE_NUMERIC) || defined(USE_QUADMATH)
# define my_snprintf Perl_my_snprintf
# define PERL_MY_SNPRINTF_GUARDED
#elif defined(HAS_SNPRINTF) && defined(HAS_C99_VARIADIC_MACROS) && !(defined(DEBUGGING) && !defined(PERL_USE_GCC_BRACE_GROUPS)) && !defined(PERL_GCC_PEDANTIC)
@@ -1962,9 +2334,16 @@ my_snprintf()
/* There is no quadmath_vsnprintf, and therefore my_vsnprintf()
* dies if called under USE_QUADMATH. */
-#if defined(HAS_VSNPRINTF) && defined(HAS_C99_VARIADIC_MACROS) && !(defined(DEBUGGING) && !defined(PERL_USE_GCC_BRACE_GROUPS)) && !defined(PERL_GCC_PEDANTIC)
+#if ! defined(USE_LOCALE_NUMERIC) \
+ && defined(HAS_VSNPRINTF) \
+ && defined(HAS_C99_VARIADIC_MACROS) \
+ && ! (defined(DEBUGGING) && ! defined(PERL_USE_GCC_BRACE_GROUPS)) \
+ && ! defined(PERL_GCC_PEDANTIC)
# ifdef PERL_USE_GCC_BRACE_GROUPS
-# define my_vsnprintf(buffer, max, ...) ({ int len = vsnprintf(buffer, max, __VA_ARGS__); PERL_SNPRINTF_CHECK(len, max, vsnprintf); len; })
+# define my_vsnprintf(buffer, max, ...) \
+ ({ int len = vsnprintf(buffer, max, __VA_ARGS__); \
+ PERL_SNPRINTF_CHECK(len, max, vsnprintf); \
+ len; })
# define PERL_MY_VSNPRINTF_GUARDED
# else
# define my_vsnprintf(buffer, max, ...) vsnprintf(buffer, max, __VA_ARGS__)
@@ -2125,11 +2504,11 @@ typedef UVTYPE UV;
#endif
#ifndef PTR2ul
-# define PTR2ul(p) INT2PTR(unsigned long,p)
+# define PTR2ul(p) INT2PTR(unsigned long,p)
#endif
/*
-=for apidoc_section Casting
+=for apidoc_section $casting
=for apidoc Cyh|type|NUM2PTR|type|int value
You probably want to be using L<C</INT2PTR>> instead.
@@ -2188,7 +2567,7 @@ You probably want to be using L<C</INT2PTR>> instead.
here, so no allowance is being made for mingw.org
compilers at this stage. -- sisyphus January 2021
*/
-#if defined(USE_QUADMATH) && defined(__MINGW64__)
+#if (defined(USE_LONG_DOUBLE) || defined(USE_QUADMATH)) && defined(__MINGW64__)
/* 64-bit build, mingw-w64 compiler only */
typedef NVTYPE NV __attribute__ ((aligned(8)));
#else
@@ -2253,7 +2632,7 @@ You probably want to be using L<C</INT2PTR>> instead.
# define Perl_cos cosl
# define Perl_cosh coshl
# define Perl_exp expl
-/* no Perl_fabs, but there's PERL_ABS */
+# define Perl_fabs fabsl
# define Perl_floor floorl
# define Perl_fmod fmodl
# define Perl_log logl
@@ -2332,7 +2711,7 @@ extern long double Perl_my_frexpl(long double x, int *e);
# define Perl_cos cosq
# define Perl_cosh coshq
# define Perl_exp expq
-/* no Perl_fabs, but there's PERL_ABS */
+# define Perl_fabs fabsq
# define Perl_floor floorq
# define Perl_fmod fmodq
# define Perl_log logq
@@ -2349,7 +2728,7 @@ extern long double Perl_my_frexpl(long double x, int *e);
# define Perl_ldexp(x, y) ldexpq(x,y)
# define Perl_isinf(x) isinfq(x)
# define Perl_isnan(x) isnanq(x)
-# define Perl_isfinite(x) !(isnanq(x) || isinfq(x))
+# define Perl_isfinite(x) (!(isnanq(x) || isinfq(x)))
# define Perl_fp_class(x) ((x) == 0.0Q ? 0 : isinfq(x) ? 3 : isnanq(x) ? 4 : PERL_ABS(x) < FLT128_MIN ? 2 : 1)
# define Perl_fp_class_inf(x) (Perl_fp_class(x) == 3)
# define Perl_fp_class_nan(x) (Perl_fp_class(x) == 4)
@@ -2378,7 +2757,7 @@ extern long double Perl_my_frexpl(long double x, int *e);
# define Perl_cos cos
# define Perl_cosh cosh
# define Perl_exp exp
-/* no Perl_fabs, but there's PERL_ABS */
+# define Perl_fabs fabs
# define Perl_floor floor
# define Perl_fmod fmod
# define Perl_log log
@@ -2676,7 +3055,7 @@ extern long double Perl_my_frexpl(long double x, int *e);
#ifndef Perl_isinf
# if defined(Perl_isfinite) && defined(Perl_isnan)
-# define Perl_isinf(x) !(Perl_isfinite(x)||Perl_isnan(x))
+# define Perl_isinf(x) (!(Perl_isfinite(x)||Perl_isnan(x)))
# endif
#endif
@@ -2693,15 +3072,20 @@ extern long double Perl_my_frexpl(long double x, int *e);
# elif defined(HAS_FINITEL)
# define Perl_isfinitel(x) finitel(x)
# elif defined(HAS_ISINFL) && defined(HAS_ISNANL)
-# define Perl_isfinitel(x) !(isinfl(x)||isnanl(x))
+# define Perl_isfinitel(x) (!(isinfl(x)||isnanl(x)))
# else
# define Perl_isfinitel(x) ((x) * 0 == 0) /* See Perl_isfinite. */
# endif
#endif
/* The default is to use Perl's own atof() implementation (in numeric.c).
- * Usually that is the one to use but for some platforms (e.g. UNICOS)
- * it is however best to use the native implementation of atof.
+ * This knows about if 'use locale' is in effect or not, and handles the radix
+ * character accordingly. On some platforms (e.g. UNICOS) it is however best
+ * to use the native implementation of atof, as long as you accept that the
+ * current underlying locale will affect the radix character. Perl's version
+ * uses a dot for a radix, execpt within the lexical scope of a Perl C<use
+ * locale> statement.
+ *
* You can experiment with using your native one by -DUSE_PERL_ATOF=0.
* Some good tests to try out with either setting are t/base/num.t,
* t/op/numconvert.t, and t/op/pack.t. Note that if using long doubles
@@ -2718,7 +3102,7 @@ extern long double Perl_my_frexpl(long double x, int *e);
#endif
#ifdef USE_PERL_ATOF
-# define Perl_atof(s) Perl_my_atof(s)
+# define Perl_atof(s) Perl_my_atof(aTHX_ s)
# define Perl_atof2(s, n) Perl_my_atof3(aTHX_ (s), &(n), 0)
#else
# define Perl_atof(s) (NV)atof(s)
@@ -2727,6 +3111,17 @@ extern long double Perl_my_frexpl(long double x, int *e);
#define my_atof2(a,b) my_atof3(a,b,0)
/*
+=for apidoc AmTR|NV|Atof|NN const char * const s
+
+This is a synonym for L</C<my_atof>>.
+
+=cut
+
+*/
+
+#define Atof my_atof
+
+/*
=for apidoc_section $numeric
=for apidoc AmT|NV|Perl_acos|NV x
=for apidoc_item |NV|Perl_asin|NV x
@@ -2759,6 +3154,7 @@ NV on this platform. If no such function with sufficient precision exists,
the highest precision one available is used.
=cut
+
*/
/*
@@ -2801,24 +3197,24 @@ the highest precision one available is used.
/*
=for apidoc_section $integer
-=for apidoc AmnU||PERL_INT_MAX
-=for apidoc_item ||PERL_INT_MIN
-=for apidoc_item ||PERL_LONG_MAX
-=for apidoc_item ||PERL_LONG_MIN
-=for apidoc_item ||PERL_SHORT_MAX
-=for apidoc_item ||PERL_SHORT_MIN
-=for apidoc_item ||PERL_UCHAR_MAX
-=for apidoc_item ||PERL_UCHAR_MIN
-=for apidoc_item ||PERL_UINT_MAX
-=for apidoc_item ||PERL_UINT_MIN
-=for apidoc_item ||PERL_ULONG_MAX
-=for apidoc_item ||PERL_ULONG_MIN
-=for apidoc_item ||PERL_USHORT_MAX
-=for apidoc_item ||PERL_USHORT_MIN
-=for apidoc_item ||PERL_QUAD_MAX
-=for apidoc_item ||PERL_QUAD_MIN
-=for apidoc_item ||PERL_UQUAD_MAX
-=for apidoc_item ||PERL_UQUAD_MIN
+=for apidoc Amn |int|PERL_INT_MAX
+=for apidoc_item |int|PERL_INT_MIN
+=for apidoc_item |long|PERL_LONG_MAX
+=for apidoc_item |long|PERL_LONG_MIN
+=for apidoc_item |IV|PERL_QUAD_MAX
+=for apidoc_item |IV|PERL_QUAD_MIN
+=for apidoc_item |short|PERL_SHORT_MAX
+=for apidoc_item |short|PERL_SHORT_MIN
+=for apidoc_item |U8|PERL_UCHAR_MAX
+=for apidoc_item |U8|PERL_UCHAR_MIN
+=for apidoc_item |unsigned int|PERL_UINT_MAX
+=for apidoc_item |unsigned int|PERL_UINT_MIN
+=for apidoc_item |unsigned long|PERL_ULONG_MAX
+=for apidoc_item |unsigned long|PERL_ULONG_MIN
+=for apidoc_item |UV|PERL_UQUAD_MAX
+=for apidoc_item |UV|PERL_UQUAD_MIN
+=for apidoc_item |unsigned short|PERL_USHORT_MAX
+=for apidoc_item |unsigned short|PERL_USHORT_MIN
These give the largest and smallest number representable in the current
platform in variables of the corresponding types.
@@ -2894,6 +3290,7 @@ typedef struct xpvcv XPVCV;
typedef struct xpvbm XPVBM;
typedef struct xpvfm XPVFM;
typedef struct xpvio XPVIO;
+typedef struct xobject XPVOBJ;
typedef struct mgvtbl MGVTBL;
typedef union any ANY;
typedef struct ptr_tbl_ent PTR_TBL_ENT_t;
@@ -3191,15 +3588,14 @@ typedef struct padname PADNAME;
/*
=for apidoc_section $embedding
-=for apidoc Am|void|PERL_SYS_INIT|int *argc|char*** argv
-Provides system-specific tune up of the C runtime environment necessary to
-run Perl interpreters. This should be called only once, before creating
-any Perl interpreters.
+=for apidoc Am|void|PERL_SYS_INIT |int *argc|char*** argv
+=for apidoc_item| |PERL_SYS_INIT3|int *argc|char*** argv|char*** env
-=for apidoc Am|void|PERL_SYS_INIT3|int *argc|char*** argv|char*** env
-Provides system-specific tune up of the C runtime environment necessary to
-run Perl interpreters. This should be called only once, before creating
-any Perl interpreters.
+These provide system-specific tune up of the C runtime environment necessary to
+run Perl interpreters. Only one should be used, and it should be called only
+once, before creating any Perl interpreters.
+
+They differ in that C<PERL_SYS_INIT3> also initializes C<env>.
=for apidoc Am|void|PERL_SYS_TERM|
Provides system-specific clean up of the C runtime environment after
@@ -3336,9 +3732,7 @@ freeing any remaining Perl interpreters.
* documentation for details. */
#if defined(USE_ITHREADS)
-# ifdef NETWARE
-# include <nw5thread.h>
-# elif defined(WIN32)
+# if defined(WIN32)
# include <win32thread.h>
# elif defined(OS2)
# include "os2thread.h"
@@ -3389,10 +3783,6 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex)
# include "win32.h"
#endif
-#ifdef NETWARE
-# include "netware.h"
-#endif
-
#define STATUS_UNIX PL_statusvalue
#ifdef VMS
# define STATUS_NATIVE PL_statusvalue_vms
@@ -3417,8 +3807,8 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex)
*/
# define STATUS_EXIT \
- (((I32)PL_statusvalue_vms == -1 ? SS$_ABORT : PL_statusvalue_vms) | \
- (VMSISH_HUSHED ? STS$M_INHIB_MSG : 0))
+ (((I32)PL_statusvalue_vms == -1 ? SS$_ABORT : PL_statusvalue_vms) | \
+ (VMSISH_HUSHED ? STS$M_INHIB_MSG : 0))
/* STATUS_NATIVE_CHILD_SET - Calculate UNIX status that matches the child
@@ -3443,25 +3833,25 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex)
*/
# define STATUS_NATIVE_CHILD_SET(n) \
- STMT_START { \
- I32 evalue = (I32)n; \
- if (evalue == EVMSERR) { \
- PL_statusvalue_vms = vaxc$errno; \
- PL_statusvalue = evalue; \
- } else { \
- PL_statusvalue_vms = evalue; \
- if (evalue == -1) { \
- PL_statusvalue = -1; \
- PL_statusvalue_vms = SS$_ABORT; /* Should not happen */ \
- } else \
- PL_statusvalue = Perl_vms_status_to_unix(evalue, 1); \
- set_vaxc_errno(evalue); \
- if ((PL_statusvalue_vms & C_FAC_POSIX) == C_FAC_POSIX) \
- set_errno(EVMSERR); \
- else set_errno(Perl_vms_status_to_unix(evalue, 0)); \
- PL_statusvalue = PL_statusvalue << child_offset_bits; \
- } \
- } STMT_END
+ STMT_START { \
+ I32 evalue = (I32)n; \
+ if (evalue == EVMSERR) { \
+ PL_statusvalue_vms = vaxc$errno; \
+ PL_statusvalue = evalue; \
+ } else { \
+ PL_statusvalue_vms = evalue; \
+ if (evalue == -1) { \
+ PL_statusvalue = -1; \
+ PL_statusvalue_vms = SS$_ABORT; /* Should not happen */ \
+ } else \
+ PL_statusvalue = Perl_vms_status_to_unix(evalue, 1); \
+ set_vaxc_errno(evalue); \
+ if ((PL_statusvalue_vms & C_FAC_POSIX) == C_FAC_POSIX) \
+ set_errno(EVMSERR); \
+ else set_errno(Perl_vms_status_to_unix(evalue, 0)); \
+ PL_statusvalue = PL_statusvalue << child_offset_bits; \
+ } \
+ } STMT_END
# ifdef VMSISH_STATUS
# define STATUS_CURRENT (VMSISH_STATUS ? STATUS_NATIVE : STATUS_UNIX)
@@ -3476,23 +3866,23 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex)
* This is used when Perl is forcing errno to have a specific value.
*/
# define STATUS_UNIX_SET(n) \
- STMT_START { \
- I32 evalue = (I32)n; \
- PL_statusvalue = evalue; \
- if (PL_statusvalue != -1) { \
- if (PL_statusvalue != EVMSERR) { \
- PL_statusvalue &= 0xFFFF; \
- if (MY_POSIX_EXIT) \
- PL_statusvalue_vms=PL_statusvalue ? SS$_ABORT : SS$_NORMAL;\
- else PL_statusvalue_vms = Perl_unix_status_to_vms(evalue); \
- } \
- else { \
- PL_statusvalue_vms = vaxc$errno; \
- } \
- } \
- else PL_statusvalue_vms = SS$_ABORT; \
- set_vaxc_errno(PL_statusvalue_vms); \
- } STMT_END
+ STMT_START { \
+ I32 evalue = (I32)n; \
+ PL_statusvalue = evalue; \
+ if (PL_statusvalue != -1) { \
+ if (PL_statusvalue != EVMSERR) { \
+ PL_statusvalue &= 0xFFFF; \
+ if (MY_POSIX_EXIT) \
+ PL_statusvalue_vms=PL_statusvalue ? SS$_ABORT : SS$_NORMAL;\
+ else PL_statusvalue_vms = Perl_unix_status_to_vms(evalue); \
+ } \
+ else { \
+ PL_statusvalue_vms = vaxc$errno; \
+ } \
+ } \
+ else PL_statusvalue_vms = SS$_ABORT; \
+ set_vaxc_errno(PL_statusvalue_vms); \
+ } STMT_END
/* STATUS_UNIX_EXIT_SET - Takes a UNIX/POSIX exit code and sets
* the NATIVE error status based on it.
@@ -3510,32 +3900,32 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex)
*/
# define STATUS_UNIX_EXIT_SET(n) \
- STMT_START { \
- I32 evalue = (I32)n; \
- PL_statusvalue = evalue; \
- if (MY_POSIX_EXIT) { \
- if (evalue <= 0xFF00) { \
- if (evalue > 0xFF) \
- evalue = (evalue >> child_offset_bits) & 0xFF; \
- PL_statusvalue_vms = \
- (C_FAC_POSIX | (evalue << 3 ) | \
- ((evalue == 1) ? (STS$K_ERROR | STS$M_INHIB_MSG) : 1)); \
- } else /* forgive them Perl, for they have sinned */ \
- PL_statusvalue_vms = evalue; \
- } else { \
- if (evalue == 0) \
- PL_statusvalue_vms = SS$_NORMAL; \
- else if (evalue <= 0xFF00) \
- PL_statusvalue_vms = SS$_ABORT; \
- else { /* forgive them Perl, for they have sinned */ \
- if (evalue != EVMSERR) PL_statusvalue_vms = evalue; \
- else PL_statusvalue_vms = vaxc$errno; \
- /* And obviously used a VMS status value instead of UNIX */ \
- PL_statusvalue = EVMSERR; \
- } \
- set_vaxc_errno(PL_statusvalue_vms); \
- } \
- } STMT_END
+ STMT_START { \
+ I32 evalue = (I32)n; \
+ PL_statusvalue = evalue; \
+ if (MY_POSIX_EXIT) { \
+ if (evalue <= 0xFF00) { \
+ if (evalue > 0xFF) \
+ evalue = ((U8) (evalue >> child_offset_bits)); \
+ PL_statusvalue_vms = \
+ (C_FAC_POSIX | (evalue << 3 ) | \
+ ((evalue == 1) ? (STS$K_ERROR | STS$M_INHIB_MSG) : 1)); \
+ } else /* forgive them Perl, for they have sinned */ \
+ PL_statusvalue_vms = evalue; \
+ } else { \
+ if (evalue == 0) \
+ PL_statusvalue_vms = SS$_NORMAL; \
+ else if (evalue <= 0xFF00) \
+ PL_statusvalue_vms = SS$_ABORT; \
+ else { /* forgive them Perl, for they have sinned */ \
+ if (evalue != EVMSERR) PL_statusvalue_vms = evalue; \
+ else PL_statusvalue_vms = vaxc$errno; \
+ /* And obviously used a VMS status value instead of UNIX */ \
+ PL_statusvalue = EVMSERR; \
+ } \
+ set_vaxc_errno(PL_statusvalue_vms); \
+ } \
+ } STMT_END
/* STATUS_EXIT_SET - Takes a NATIVE/UNIX/POSIX exit code
@@ -3556,28 +3946,28 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex)
*/
# define STATUS_EXIT_SET(n) \
- STMT_START { \
- I32 evalue = (I32)n; \
- PL_statusvalue = evalue; \
- if (MY_POSIX_EXIT) \
- if (evalue > 255) PL_statusvalue_vms = evalue; else { \
- PL_statusvalue_vms = \
- (C_FAC_POSIX | (evalue << 3 ) | \
- ((evalue == 1) ? (STS$K_ERROR | STS$M_INHIB_MSG) : 1));} \
- else \
- PL_statusvalue_vms = evalue ? evalue : SS$_NORMAL; \
- set_vaxc_errno(PL_statusvalue_vms); \
- } STMT_END
+ STMT_START { \
+ I32 evalue = (I32)n; \
+ PL_statusvalue = evalue; \
+ if (MY_POSIX_EXIT) \
+ if (evalue > 255) PL_statusvalue_vms = evalue; else { \
+ PL_statusvalue_vms = \
+ (C_FAC_POSIX | (evalue << 3 ) | \
+ ((evalue == 1) ? (STS$K_ERROR | STS$M_INHIB_MSG) : 1));} \
+ else \
+ PL_statusvalue_vms = evalue ? evalue : SS$_NORMAL; \
+ set_vaxc_errno(PL_statusvalue_vms); \
+ } STMT_END
/* This macro forces a success status */
# define STATUS_ALL_SUCCESS \
- (PL_statusvalue = 0, PL_statusvalue_vms = SS$_NORMAL)
+ (PL_statusvalue = 0, PL_statusvalue_vms = SS$_NORMAL)
/* This macro forces a failure status */
# define STATUS_ALL_FAILURE (PL_statusvalue = 1, \
vaxc$errno = PL_statusvalue_vms = MY_POSIX_EXIT ? \
- (C_FAC_POSIX | (1 << 3) | STS$K_ERROR | STS$M_INHIB_MSG) : SS$_ABORT)
+ (C_FAC_POSIX | (1 << 3) | STS$K_ERROR | STS$M_INHIB_MSG) : SS$_ABORT)
#elif defined(__amigaos4__)
/* A somewhat experimental attempt to simulate posix return code values */
@@ -3593,11 +3983,11 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex)
} \
} STMT_END
# define STATUS_UNIX_SET(n) \
- STMT_START { \
- PL_statusvalue = (n); \
- if (PL_statusvalue != -1) \
- PL_statusvalue &= 0xFFFF; \
- } STMT_END
+ STMT_START { \
+ PL_statusvalue = (n); \
+ if (PL_statusvalue != -1) \
+ PL_statusvalue &= 0xFFFF; \
+ } STMT_END
# define STATUS_UNIX_EXIT_SET(n) STATUS_UNIX_SET(n)
# define STATUS_EXIT_SET(n) STATUS_UNIX_SET(n)
# define STATUS_CURRENT STATUS_UNIX
@@ -3645,11 +4035,11 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex)
} STMT_END
# endif
# define STATUS_UNIX_SET(n) \
- STMT_START { \
- PL_statusvalue = (n); \
- if (PL_statusvalue != -1) \
- PL_statusvalue &= 0xFFFF; \
- } STMT_END
+ STMT_START { \
+ PL_statusvalue = (n); \
+ if (PL_statusvalue != -1) \
+ PL_statusvalue &= 0xFFFF; \
+ } STMT_END
# define STATUS_UNIX_EXIT_SET(n) STATUS_UNIX_SET(n)
# define STATUS_EXIT_SET(n) STATUS_UNIX_SET(n)
# define STATUS_CURRENT STATUS_UNIX
@@ -3678,11 +4068,19 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex)
# define PERL_FS_VERSION PERL_VERSION_STRING
#endif
-/* This defines a way to flush all output buffers. This may be a
- * performance issue, so we allow people to disable it. Also, if
- * we are using stdio, there are broken implementations of fflush(NULL)
- * out there, Solaris being the most prominent.
+/*
+
+=for apidoc_section $io
+=for apidoc Amn|void|PERL_FLUSHALL_FOR_CHILD
+
+This defines a way to flush all output buffers. This may be a
+performance issue, so we allow people to disable it. Also, if
+we are using stdio, there are broken implementations of fflush(NULL)
+out there, Solaris being the most prominent.
+
+=cut
*/
+
#ifndef PERL_FLUSHALL_FOR_CHILD
# if defined(USE_PERLIO) || defined(FFLUSH_NULL)
# define PERL_FLUSHALL_FOR_CHILD PerlIO_flush((PerlIO*)NULL)
@@ -3699,17 +4097,18 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex)
/* the traditional thread-unsafe notion of "current interpreter". */
#ifndef PERL_SET_INTERP
-# define PERL_SET_INTERP(i) (PL_curinterp = (PerlInterpreter*)(i))
+# define PERL_SET_INTERP(i) \
+ STMT_START { PL_curinterp = (PerlInterpreter*)(i); \
+ PERL_SET_NON_tTHX_CONTEXT(i); \
+ } STMT_END
#endif
#ifndef PERL_GET_INTERP
# define PERL_GET_INTERP (PL_curinterp)
#endif
-#if defined(PERL_IMPLICIT_CONTEXT) && !defined(PERL_GET_THX)
-# ifdef MULTIPLICITY
-# define PERL_GET_THX ((PerlInterpreter *)PERL_GET_CONTEXT)
-# endif
+#if defined(MULTIPLICITY) && !defined(PERL_GET_THX)
+# define PERL_GET_THX ((PerlInterpreter *)PERL_GET_CONTEXT)
# define PERL_SET_THX(t) PERL_SET_CONTEXT(t)
#endif
@@ -3743,32 +4142,66 @@ EXTERN_C int perl_tsa_mutex_unlock(perl_mutex* mutex)
#define SVfARG(p) ((void*)(p))
+/* Render an SV as a quoted and escaped string suitable for an error message.
+ * Only shows the first PERL_QUOTEDPREFIX_LEN characters, and adds ellipses if the
+ * string is too long.
+ */
+#ifndef PERL_QUOTEDPREFIX_LEN
+# define PERL_QUOTEDPREFIX_LEN 256
+#endif
+#ifndef SVf_QUOTEDPREFIX
+# define SVf_QUOTEDPREFIX "5p"
+#endif
+
+/* like %s but runs through the quoted prefix logic */
+#ifndef PVf_QUOTEDPREFIX
+# define PVf_QUOTEDPREFIX "1p"
+#endif
+
#ifndef HEKf
# define HEKf "2p"
#endif
+#ifndef HEKf_QUOTEDPREFIX
+# define HEKf_QUOTEDPREFIX "7p"
+#endif
+
/* Not ideal, but we cannot easily include a number in an already-numeric
* format sequence. */
#ifndef HEKf256
# define HEKf256 "3p"
#endif
+#ifndef HEKf256_QUOTEDPREFIX
+# define HEKf256_QUOTEDPREFIX "8p"
+#endif
+
#define HEKfARG(p) ((void*)(p))
/* Documented in perlguts
*
- * %4p is a custom format
+ * %4p and %9p are custom formats for handling UTF8 parameters.
+ * They only occur when prefixed by specific other formats.
*/
#ifndef UTF8f
# define UTF8f "d%" UVuf "%4p"
#endif
+#ifndef UTF8f_QUOTEDPREFIX
+# define UTF8f_QUOTEDPREFIX "d%" UVuf "%9p"
+#endif
#define UTF8fARG(u,l,p) (int)cBOOL(u), (UV)(l), (void*)(p)
#define PNf UTF8f
#define PNfARG(pn) (int)1, (UV)PadnameLEN(pn), (void *)PadnamePV(pn)
+#define HvNAMEf "6p"
+#define HvNAMEf_QUOTEDPREFIX "10p"
+
+#define HvNAMEfARG(hv) ((void*)(hv))
+
#ifdef PERL_CORE
/* not used; but needed for backward compatibility with XS code? - RMB
+=for apidoc_section $io_formats
=for apidoc AmnD|const char *|UVf
Obsolete form of C<UVuf>, which you should convert to instead use
@@ -3877,42 +4310,48 @@ intrinsic function, see its documents for more details.
=cut
*/
-#ifdef DEBUGGING
-# define ASSUME(x) assert(x)
-# if __has_builtin(__builtin_unreachable)
+#if __has_builtin(__builtin_unreachable)
# define HAS_BUILTIN_UNREACHABLE
-# elif (defined(__GNUC__) && ( __GNUC__ > 4 \
- || __GNUC__ == 4 && __GNUC_MINOR__ >= 5))
+#elif PERL_GCC_VERSION_GE(4,5,0)
# define HAS_BUILTIN_UNREACHABLE
-# endif
#endif
-#if defined(__sun) || (defined(__hpux) && !defined(__GNUC__))
-# ifndef ASSUME
-# define ASSUME(x) /* ASSUME() generates warnings on Solaris */
+#ifdef DEBUGGING
+# define ASSUME(x) assert(x)
+#elif __has_builtin(__builtin_assume)
+# if defined(__clang__) || defined(__clang)
+# define ASSUME(x) CLANG_DIAG_IGNORE(-Wassume) \
+ __builtin_assume (x) \
+ CLANG_DIAG_RESTORE
+# else
+# define ASSUME(x) __builtin_assume(x)
# endif
-# define NOT_REACHED
+#elif defined(_MSC_VER)
+# define ASSUME(x) __assume(x)
+#elif defined(__ARMCC_VERSION) /* untested */
+# define ASSUME(x) __promise(x)
#elif defined(HAS_BUILTIN_UNREACHABLE)
-# ifndef ASSUME
+ /* Compilers can take the hint from something being unreachable */
# define ASSUME(x) ((x) ? (void) 0 : __builtin_unreachable())
-# endif
+#else
+ /* Not DEBUGGING, so assert() is a no-op, but a random compiler might
+ * define assert() to its own special optimization token so pass it through
+ * to C lib as a last resort */
+# define ASSUME(x) assert(x)
+#endif
+
+#ifdef HAS_BUILTIN_UNREACHABLE
# define NOT_REACHED \
STMT_START { \
ASSUME(!"UNREACHABLE"); __builtin_unreachable(); \
} STMT_END
+# undef HAS_BUILTIN_UNREACHABLE /* Don't leak out this internal symbol */
+#elif ! defined(__GNUC__) && (defined(__sun) || defined(__hpux))
+ /* These just complain that NOT_REACHED isn't reached */
+# define NOT_REACHED
#else
-# if defined(_MSC_VER)
-# define ASSUME(x) __assume(x)
-# elif defined(__ARMCC_VERSION) /* untested */
-# define ASSUME(x) __promise(x)
-# else
- /* a random compiler might define assert to its own special optimization
- * token so pass it through to C lib as a last resort */
-# define ASSUME(x) assert(x)
-# endif
-# define NOT_REACHED ASSUME(!"UNREACHABLE")
+# define NOT_REACHED ASSUME(!"UNREACHABLE")
#endif
-#undef HAS_BUILTIN_UNREACHABLE
/* Some unistd.h's give a prototype for pause() even though
HAS_PAUSE ends up undefined. This causes the #define
@@ -3926,13 +4365,13 @@ intrinsic function, see its documents for more details.
#ifndef IOCPARM_LEN
# ifdef IOCPARM_MASK
- /* on BSDish systems we're safe */
+ /* on BSDish systems we're safe */
# define IOCPARM_LEN(x) (((x) >> 16) & IOCPARM_MASK)
# elif defined(_IOC_SIZE) && defined(__GLIBC__)
- /* on Linux systems we're safe; except when we're not [perl #38223] */
+ /* on Linux systems we're safe; except when we're not [perl #38223] */
# define IOCPARM_LEN(x) (_IOC_SIZE(x) < 256 ? 256 : _IOC_SIZE(x))
# else
- /* otherwise guess at what's safe */
+ /* otherwise guess at what's safe */
# define IOCPARM_LEN(x) 256
# endif
#endif
@@ -3958,7 +4397,7 @@ void init_os_extras(void);
UNION_ANY_DEFINITION;
#else
union any {
- void* any_ptr;
+ void* any_ptr;
SV* any_sv;
SV** any_svp;
GV* any_gv;
@@ -3967,14 +4406,17 @@ union any {
OP* any_op;
char* any_pv;
char** any_pvp;
- I32 any_i32;
- U32 any_u32;
- IV any_iv;
- UV any_uv;
- long any_long;
- bool any_bool;
- void (*any_dptr) (void*);
- void (*any_dxptr) (pTHX_ void*);
+ I32 any_i32;
+ U32 any_u32;
+ IV any_iv;
+ UV any_uv;
+ long any_long;
+ bool any_bool;
+ Size_t any_size;
+ SSize_t any_ssize;
+ STRLEN any_strlen;
+ void (*any_dptr) (void*);
+ void (*any_dxptr) (pTHX_ void*);
};
#endif
@@ -3982,13 +4424,13 @@ typedef I32 (*filter_t) (pTHX_ int, SV *, int);
#define FILTER_READ(idx, sv, len) filter_read(idx, sv, len)
#define FILTER_DATA(idx) \
- (PL_parser ? AvARRAY(PL_parser->rsfp_filters)[idx] : NULL)
+ (PL_parser ? AvARRAY(PL_parser->rsfp_filters)[idx] : NULL)
#define FILTER_ISREADER(idx) \
- (PL_parser && PL_parser->rsfp_filters \
- && idx >= AvFILLp(PL_parser->rsfp_filters))
+ (PL_parser && PL_parser->rsfp_filters \
+ && idx >= AvFILLp(PL_parser->rsfp_filters))
#define PERL_FILTER_EXISTS(i) \
- (PL_parser && PL_parser->rsfp_filters \
- && (Size_t) (i) < av_count(PL_parser->rsfp_filters))
+ (PL_parser && PL_parser->rsfp_filters \
+ && (Size_t) (i) < av_count(PL_parser->rsfp_filters))
#if defined(_AIX) && !defined(_AIX43)
#if defined(USE_REENTRANT) || defined(_REENTRANT) || defined(_THREAD_SAFE)
@@ -4049,7 +4491,7 @@ typedef struct crypt_data { /* straight from /usr/include/crypt.h */
#define FAKE_BIT_BUCKET
#endif
-/* [perl #22371] Algorimic Complexity Attack on Perl 5.6.1, 5.8.0.
+/* [perl #22371] Algorithmic Complexity Attack on Perl 5.6.1, 5.8.0.
* Note that the USE_HASH_SEED and similar defines are *NOT* defined by
* Configure, despite their names being similar to other defines like
* USE_ITHREADS. Configure in fact knows nothing about the randomised
@@ -4064,13 +4506,25 @@ typedef struct crypt_data { /* straight from /usr/include/crypt.h */
/* macros to define bit-fields in structs. */
#ifndef PERL_BITFIELD8
+# ifdef HAS_NON_INT_BITFIELDS
# define PERL_BITFIELD8 U8
+# else
+# define PERL_BITFIELD8 unsigned
+# endif
#endif
#ifndef PERL_BITFIELD16
+# ifdef HAS_NON_INT_BITFIELDS
# define PERL_BITFIELD16 U16
+# else
+# define PERL_BITFIELD16 unsigned
+# endif
#endif
#ifndef PERL_BITFIELD32
+# ifdef HAS_NON_INT_BITFIELDS
# define PERL_BITFIELD32 U32
+# else
+# define PERL_BITFIELD32 unsigned
+# endif
#endif
#include "sv.h"
@@ -4103,8 +4557,7 @@ typedef struct crypt_data { /* straight from /usr/include/crypt.h */
typedef struct magic_state MGS; /* struct magic_state defined in mg.c */
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) \
- || defined(PERL_EXT_RE_BUILD)
+#if defined(PERL_IN_REGEX_ENGINE) || defined(PERL_EXT_RE_BUILD)
/* These have to be predeclared, as they are used in proto.h which is #included
* before their definitions in regcomp.h. */
@@ -4120,6 +4573,7 @@ typedef struct regnode_charclass_posixl regnode_charclass_posixl;
typedef struct regnode_ssc regnode_ssc;
typedef struct RExC_state_t RExC_state_t;
struct _reg_trie_data;
+typedef struct scan_data_t scan_data_t;
#endif
@@ -4173,7 +4627,7 @@ struct ptr_tbl {
PERL_STATIC_INLINE U32
my_swap32(const U32 x) {
- return ((x & 0xFF) << 24) | ((x >> 24) & 0xFF)
+ return ((x & 0xFF) << 24) | ((x >> 24) & 0xFF)
| ((x & 0x0000FF00) << 8) | ((x & 0x00FF0000) >> 8);
}
@@ -4192,7 +4646,7 @@ my_swap16(const U16 x) {
the error message. Please check the value of the macro BYTEORDER, as defined
in config.h. The values of BYTEORDER we expect are
- big endian little endian
+ big endian little endian
32 bit 0x4321 0x1234
64 bit 0x87654321 0x12345678
@@ -4216,9 +4670,9 @@ my_swap16(const U16 x) {
# define htovs(x) vtohs(x)
#elif BYTEORDER == 0x4321 || BYTEORDER == 0x87654321
# define vtohl(x) ((((x)&0xFF)<<24) \
- +(((x)>>24)&0xFF) \
- +(((x)&0x0000FF00)<<8) \
- +(((x)&0x00FF0000)>>8) )
+ +(((x)>>24)&0xFF) \
+ +(((x)&0x0000FF00)<<8) \
+ +(((x)&0x00FF0000)>>8) )
# define vtohs(x) ((((x)&0xFF)<<8) + (((x)>>8)&0xFF))
# define htovl(x) vtohl(x)
# define htovs(x) vtohs(x)
@@ -4321,7 +4775,7 @@ equal zero.
#define NV_WITHIN_UV(nv) ((nv)>=0.0 && U_V(nv) >= UV_MIN && U_V(nv) <= UV_MAX)
/* Used with UV/IV arguments: */
- /* XXXX: need to speed it up */
+ /* XXXX: need to speed it up */
#define CLUMP_2UV(iv) ((iv) < 0 ? 0 : (UV)(iv))
#define CLUMP_2IV(uv) ((uv) > (UV)IV_MAX ? IV_MAX : (IV)(uv))
@@ -4344,11 +4798,11 @@ Gid_t getegid (void);
#ifndef Perl_error_log
# define Perl_error_log (PL_stderrgv \
- && isGV(PL_stderrgv) \
- && GvIOp(PL_stderrgv) \
- && IoOFP(GvIOp(PL_stderrgv)) \
- ? IoOFP(GvIOp(PL_stderrgv)) \
- : PerlIO_stderr())
+ && isGV(PL_stderrgv) \
+ && GvIOp(PL_stderrgv) \
+ && IoOFP(GvIOp(PL_stderrgv)) \
+ ? IoOFP(GvIOp(PL_stderrgv)) \
+ : PerlIO_stderr())
#endif
@@ -4366,7 +4820,7 @@ Gid_t getegid (void);
#define DEBUG_u_FLAG 0x00000800 /* 2048 */
/* U is reserved for Unofficial, exploratory hacking */
#define DEBUG_U_FLAG 0x00001000 /* 4096 */
-/* spare 8192 */
+#define DEBUG_h_FLAG 0x00002000 /* 8192 */
#define DEBUG_X_FLAG 0x00004000 /* 16384 */
#define DEBUG_D_FLAG 0x00008000 /* 32768 */
#define DEBUG_S_FLAG 0x00010000 /* 65536 */
@@ -4405,6 +4859,7 @@ Gid_t getegid (void);
# define DEBUG_x_TEST_ UNLIKELY(PL_debug & DEBUG_x_FLAG)
# define DEBUG_u_TEST_ UNLIKELY(PL_debug & DEBUG_u_FLAG)
# define DEBUG_U_TEST_ UNLIKELY(PL_debug & DEBUG_U_FLAG)
+# define DEBUG_h_TEST_ UNLIKELY(PL_debug & DEBUG_h_FLAG)
# define DEBUG_X_TEST_ UNLIKELY(PL_debug & DEBUG_X_FLAG)
# define DEBUG_D_TEST_ UNLIKELY(PL_debug & DEBUG_D_FLAG)
# define DEBUG_S_TEST_ UNLIKELY(PL_debug & DEBUG_S_FLAG)
@@ -4417,13 +4872,23 @@ Gid_t getegid (void);
# define DEBUG_q_TEST_ UNLIKELY(PL_debug & DEBUG_q_FLAG)
# define DEBUG_M_TEST_ UNLIKELY(PL_debug & DEBUG_M_FLAG)
# define DEBUG_B_TEST_ UNLIKELY(PL_debug & DEBUG_B_FLAG)
-# define DEBUG_L_TEST_ UNLIKELY(PL_debug & DEBUG_L_FLAG)
+
+/* Locale initialization comes earlier than PL_debug gets set,
+ * DEBUG_LOCALE_INITIALIZATION_, if defined, will be set early enough */
+# ifndef DEBUG_LOCALE_INITIALIZATION_
+# define DEBUG_LOCALE_INITIALIZATION_ 0
+# endif
+# define DEBUG_L_TEST_ \
+ ( UNLIKELY(DEBUG_LOCALE_INITIALIZATION_) \
+ || UNLIKELY(PL_debug & DEBUG_L_FLAG))
+# define DEBUG_Lv_TEST_ \
+ ( UNLIKELY(DEBUG_LOCALE_INITIALIZATION_) \
+ || UNLIKELY(DEBUG_BOTH_FLAGS_TEST_(DEBUG_L_FLAG, DEBUG_v_FLAG)))
# define DEBUG_i_TEST_ UNLIKELY(PL_debug & DEBUG_i_FLAG)
# define DEBUG_y_TEST_ UNLIKELY(PL_debug & DEBUG_y_FLAG)
# define DEBUG_Xv_TEST_ DEBUG_BOTH_FLAGS_TEST_(DEBUG_X_FLAG, DEBUG_v_FLAG)
# define DEBUG_Uv_TEST_ DEBUG_BOTH_FLAGS_TEST_(DEBUG_U_FLAG, DEBUG_v_FLAG)
# define DEBUG_Pv_TEST_ DEBUG_BOTH_FLAGS_TEST_(DEBUG_P_FLAG, DEBUG_v_FLAG)
-# define DEBUG_Lv_TEST_ DEBUG_BOTH_FLAGS_TEST_(DEBUG_L_FLAG, DEBUG_v_FLAG)
# define DEBUG_yv_TEST_ DEBUG_BOTH_FLAGS_TEST_(DEBUG_y_FLAG, DEBUG_v_FLAG)
#ifdef DEBUGGING
@@ -4441,6 +4906,7 @@ Gid_t getegid (void);
# define DEBUG_x_TEST DEBUG_x_TEST_
# define DEBUG_u_TEST DEBUG_u_TEST_
# define DEBUG_U_TEST DEBUG_U_TEST_
+# define DEBUG_h_TEST DEBUG_h_TEST_
# define DEBUG_X_TEST DEBUG_X_TEST_
# define DEBUG_D_TEST DEBUG_D_TEST_
# define DEBUG_S_TEST DEBUG_S_TEST_
@@ -4516,9 +4982,9 @@ Gid_t getegid (void);
# define DEBUG__(t, a) \
STMT_START { \
- if (t) STMT_START { \
+ if (t) { \
DEBUG_PRE_STMTS a; DEBUG_POST_STMTS \
- } STMT_END; \
+ } \
} STMT_END
# define DEBUG_f(a) DEBUG__(DEBUG_f_TEST, a)
@@ -4571,6 +5037,7 @@ Gid_t getegid (void);
# define DEBUG_x_TEST (0)
# define DEBUG_u_TEST (0)
# define DEBUG_U_TEST (0)
+# define DEBUG_h_TEST (0)
# define DEBUG_X_TEST (0)
# define DEBUG_D_TEST (0)
# define DEBUG_S_TEST (0)
@@ -4633,16 +5100,16 @@ Gid_t getegid (void);
#define DEBUG_SCOPE(where) \
DEBUG_l( \
Perl_deb(aTHX_ "%s scope %ld (savestack=%ld) at %s:%d\n", \
- where, (long)PL_scopestack_ix, (long)PL_savestack_ix, \
- __FILE__, __LINE__));
+ where, (long)PL_scopestack_ix, (long)PL_savestack_ix, \
+ __FILE__, __LINE__));
/* Keep the old croak based assert for those who want it, and as a fallback if
the platform is so heretically non-ANSI that it can't assert. */
#define Perl_assert(what) PERL_DEB2( \
- ((what) ? ((void) 0) : \
- (Perl_croak_nocontext("Assertion %s failed: file \"" __FILE__ \
- "\", line %d", STRINGIFY(what), __LINE__), \
+ ((what) ? ((void) 0) : \
+ (Perl_croak_nocontext("Assertion %s failed: file \"" __FILE__ \
+ "\", line %d", STRINGIFY(what), __LINE__), \
(void) 0)), ((void)0))
/* assert() gets defined if DEBUGGING.
@@ -4760,10 +5227,10 @@ EXTERN_C void PerlIO_teardown(void);
# ifdef USE_ITHREADS
# define PERLIO_INIT MUTEX_INIT(&PL_perlio_mutex)
# define PERLIO_TERM \
- STMT_START { \
- PerlIO_teardown(); \
- MUTEX_DESTROY(&PL_perlio_mutex);\
- } STMT_END
+ STMT_START { \
+ PerlIO_teardown(); \
+ MUTEX_DESTROY(&PL_perlio_mutex);\
+ } STMT_END
# else
# define PERLIO_INIT
# define PERLIO_TERM PerlIO_teardown()
@@ -4776,16 +5243,16 @@ EXTERN_C void PerlIO_teardown(void);
#ifdef MYMALLOC
# ifdef MUTEX_INIT_CALLS_MALLOC
# define MALLOC_INIT \
- STMT_START { \
- PL_malloc_mutex = NULL; \
- MUTEX_INIT(&PL_malloc_mutex); \
- } STMT_END
+ STMT_START { \
+ PL_malloc_mutex = NULL; \
+ MUTEX_INIT(&PL_malloc_mutex); \
+ } STMT_END
# define MALLOC_TERM \
- STMT_START { \
- perl_mutex tmp = PL_malloc_mutex; \
- PL_malloc_mutex = NULL; \
- MUTEX_DESTROY(&tmp); \
- } STMT_END
+ STMT_START { \
+ perl_mutex tmp = PL_malloc_mutex; \
+ PL_malloc_mutex = NULL; \
+ MUTEX_DESTROY(&tmp); \
+ } STMT_END
# else
# define MALLOC_INIT MUTEX_INIT(&PL_malloc_mutex)
# define MALLOC_TERM MUTEX_DESTROY(&PL_malloc_mutex)
@@ -4795,7 +5262,7 @@ EXTERN_C void PerlIO_teardown(void);
# define MALLOC_TERM
#endif
-#if defined(PERL_IMPLICIT_CONTEXT)
+#if defined(MULTIPLICITY)
struct perl_memory_debug_header;
struct perl_memory_debug_header {
@@ -4823,8 +5290,8 @@ struct perl_memory_debug_header {
# define PERL_MEMORY_DEBUG_HEADER_SIZE \
(sizeof(struct perl_memory_debug_header) + \
- (MEM_ALIGNBYTES - sizeof(struct perl_memory_debug_header) \
- %MEM_ALIGNBYTES) % MEM_ALIGNBYTES)
+ (MEM_ALIGNBYTES - sizeof(struct perl_memory_debug_header) \
+ %MEM_ALIGNBYTES) % MEM_ALIGNBYTES)
#else
# define PERL_MEMORY_DEBUG_HEADER_SIZE 0
@@ -4833,17 +5300,17 @@ struct perl_memory_debug_header {
#ifdef PERL_TRACK_MEMPOOL
# ifdef PERL_DEBUG_READONLY_COW
# define INIT_TRACK_MEMPOOL(header, interp) \
- STMT_START { \
- (header).interpreter = (interp); \
- (header).prev = (header).next = &(header); \
- (header).readonly = 0; \
- } STMT_END
+ STMT_START { \
+ (header).interpreter = (interp); \
+ (header).prev = (header).next = &(header); \
+ (header).readonly = 0; \
+ } STMT_END
# else
# define INIT_TRACK_MEMPOOL(header, interp) \
- STMT_START { \
- (header).interpreter = (interp); \
- (header).prev = (header).next = &(header); \
- } STMT_END
+ STMT_START { \
+ (header).interpreter = (interp); \
+ (header).prev = (header).next = &(header); \
+ } STMT_END
# endif
# else
# define INIT_TRACK_MEMPOOL(header, interp)
@@ -4860,7 +5327,7 @@ struct perl_memory_debug_header {
# if defined(HAS_MALLOC_SIZE) && !defined(PERL_DEBUG_READONLY_COW)
# ifdef PERL_TRACK_MEMPOOL
# define Perl_safesysmalloc_size(where) \
- (malloc_size(((char *)(where)) - PERL_MEMORY_DEBUG_HEADER_SIZE) - PERL_MEMORY_DEBUG_HEADER_SIZE)
+ (malloc_size(((char *)(where)) - PERL_MEMORY_DEBUG_HEADER_SIZE) - PERL_MEMORY_DEBUG_HEADER_SIZE)
# else
# define Perl_safesysmalloc_size(where) malloc_size(where)
# endif
@@ -4868,7 +5335,7 @@ struct perl_memory_debug_header {
# ifdef HAS_MALLOC_GOOD_SIZE
# ifdef PERL_TRACK_MEMPOOL
# define Perl_malloc_good_size(how_much) \
- (malloc_good_size((how_much) + PERL_MEMORY_DEBUG_HEADER_SIZE) - PERL_MEMORY_DEBUG_HEADER_SIZE)
+ (malloc_good_size((how_much) + PERL_MEMORY_DEBUG_HEADER_SIZE) - PERL_MEMORY_DEBUG_HEADER_SIZE)
# else
# define Perl_malloc_good_size(how_much) malloc_good_size(how_much)
# endif
@@ -4898,12 +5365,12 @@ EXTERN_C char **environ; /* environment variables supplied via exec */
#undef PERL_PATCHLEVEL_H_IMPLICIT
#define PERL_VERSION_STRING STRINGIFY(PERL_REVISION) "." \
- STRINGIFY(PERL_VERSION) "." \
- STRINGIFY(PERL_SUBVERSION)
+ STRINGIFY(PERL_VERSION) "." \
+ STRINGIFY(PERL_SUBVERSION)
#define PERL_API_VERSION_STRING STRINGIFY(PERL_API_REVISION) "." \
- STRINGIFY(PERL_API_VERSION) "." \
- STRINGIFY(PERL_API_SUBVERSION)
+ STRINGIFY(PERL_API_VERSION) "." \
+ STRINGIFY(PERL_API_SUBVERSION)
START_EXTERN_C
@@ -4979,9 +5446,9 @@ Indices outside the range 0..31 result in (bad) undedefined behavior.
EXTCONST char PL_hexdigit[]
INIT("0123456789abcdef0123456789ABCDEF");
-EXTCONST STRLEN PL_WARN_ALL
+EXT char PL_WARN_ALL
INIT(0);
-EXTCONST STRLEN PL_WARN_NONE
+EXT char PL_WARN_NONE
INIT(0);
/* This is constant on most architectures, a global on OS/2 */
@@ -5051,73 +5518,38 @@ EXTCONST int PL_sig_num[];
* ebcdic_tables.h */
EXTCONST unsigned char PL_fold[] = {
- 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
- 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
- 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
- 'x', 'y', 'z', 91, 92, 93, 94, 95,
- 96, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
- 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255
-};
-
-EXT unsigned char PL_fold_locale[] = { /* Unfortunately not EXTCONST. */
- 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
- 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
- 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
- 'x', 'y', 'z', 91, 92, 93, 94, 95,
- 96, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
- 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222, 223,
- 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255
+ 0, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+ 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
+ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
+ 'x', 'y', 'z', 91, 92, 93, 94, 95,
+ 96, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
+ 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
+ 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
+ 'X', 'Y', 'Z', 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255
};
EXTCONST unsigned char PL_fold_latin1[] = {
@@ -5129,120 +5561,120 @@ EXTCONST unsigned char PL_fold_latin1[] = {
* not one, so can't be represented in this table.
*
* All have to be specially handled */
- 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
- 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
- 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
- 'x', 'y', 'z', 91, 92, 93, 94, 95,
- 96, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
- 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181 /*micro */, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191,
- 192+32, 193+32, 194+32, 195+32, 196+32, 197+32, 198+32, 199+32,
- 200+32, 201+32, 202+32, 203+32, 204+32, 205+32, 206+32, 207+32,
- 208+32, 209+32, 210+32, 211+32, 212+32, 213+32, 214+32, 215,
- 216+32, 217+32, 218+32, 219+32, 220+32, 221+32, 222+32, 223 /* ss */,
- 224-32, 225-32, 226-32, 227-32, 228-32, 229-32, 230-32, 231-32,
- 232-32, 233-32, 234-32, 235-32, 236-32, 237-32, 238-32, 239-32,
- 240-32, 241-32, 242-32, 243-32, 244-32, 245-32, 246-32, 247,
- 248-32, 249-32, 250-32, 251-32, 252-32, 253-32, 254-32,
- 255 /* y with diaeresis */
+ 0, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+ 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
+ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
+ 'x', 'y', 'z', 91, 92, 93, 94, 95,
+ 96, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
+ 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
+ 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
+ 'X', 'Y', 'Z', 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181 /*micro */, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191,
+ 192+32, 193+32, 194+32, 195+32, 196+32, 197+32, 198+32, 199+32,
+ 200+32, 201+32, 202+32, 203+32, 204+32, 205+32, 206+32, 207+32,
+ 208+32, 209+32, 210+32, 211+32, 212+32, 213+32, 214+32, 215,
+ 216+32, 217+32, 218+32, 219+32, 220+32, 221+32, 222+32, 223 /* ss */,
+ 224-32, 225-32, 226-32, 227-32, 228-32, 229-32, 230-32, 231-32,
+ 232-32, 233-32, 234-32, 235-32, 236-32, 237-32, 238-32, 239-32,
+ 240-32, 241-32, 242-32, 243-32, 244-32, 245-32, 246-32, 247,
+ 248-32, 249-32, 250-32, 251-32, 252-32, 253-32, 254-32,
+ 255 /* y with diaeresis */
};
/* If these tables are accessed through ebcdic, the access will be converted to
* latin1 first */
EXTCONST unsigned char PL_latin1_lc[] = { /* lowercasing */
- 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
- 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
- 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
- 'x', 'y', 'z', 91, 92, 93, 94, 95,
- 96, 97, 98, 99, 100, 101, 102, 103,
- 104, 105, 106, 107, 108, 109, 110, 111,
- 112, 113, 114, 115, 116, 117, 118, 119,
- 120, 121, 122, 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 181, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191,
- 192+32, 193+32, 194+32, 195+32, 196+32, 197+32, 198+32, 199+32,
- 200+32, 201+32, 202+32, 203+32, 204+32, 205+32, 206+32, 207+32,
- 208+32, 209+32, 210+32, 211+32, 212+32, 213+32, 214+32, 215,
- 216+32, 217+32, 218+32, 219+32, 220+32, 221+32, 222+32, 223,
- 224, 225, 226, 227, 228, 229, 230, 231,
- 232, 233, 234, 235, 236, 237, 238, 239,
- 240, 241, 242, 243, 244, 245, 246, 247,
- 248, 249, 250, 251, 252, 253, 254, 255
+ 0, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 'a', 'b', 'c', 'd', 'e', 'f', 'g',
+ 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
+ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w',
+ 'x', 'y', 'z', 91, 92, 93, 94, 95,
+ 96, 97, 98, 99, 100, 101, 102, 103,
+ 104, 105, 106, 107, 108, 109, 110, 111,
+ 112, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 181, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191,
+ 192+32, 193+32, 194+32, 195+32, 196+32, 197+32, 198+32, 199+32,
+ 200+32, 201+32, 202+32, 203+32, 204+32, 205+32, 206+32, 207+32,
+ 208+32, 209+32, 210+32, 211+32, 212+32, 213+32, 214+32, 215,
+ 216+32, 217+32, 218+32, 219+32, 220+32, 221+32, 222+32, 223,
+ 224, 225, 226, 227, 228, 229, 230, 231,
+ 232, 233, 234, 235, 236, 237, 238, 239,
+ 240, 241, 242, 243, 244, 245, 246, 247,
+ 248, 249, 250, 251, 252, 253, 254, 255
};
/* upper and title case of latin1 characters, modified so that the three tricky
* ones are mapped to 255 (which is one of the three) */
EXTCONST unsigned char PL_mod_latin1_uc[] = {
- 0, 1, 2, 3, 4, 5, 6, 7,
- 8, 9, 10, 11, 12, 13, 14, 15,
- 16, 17, 18, 19, 20, 21, 22, 23,
- 24, 25, 26, 27, 28, 29, 30, 31,
- 32, 33, 34, 35, 36, 37, 38, 39,
- 40, 41, 42, 43, 44, 45, 46, 47,
- 48, 49, 50, 51, 52, 53, 54, 55,
- 56, 57, 58, 59, 60, 61, 62, 63,
- 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79,
- 80, 81, 82, 83, 84, 85, 86, 87,
- 88, 89, 90, 91, 92, 93, 94, 95,
- 96, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
- 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
- 'X', 'Y', 'Z', 123, 124, 125, 126, 127,
- 128, 129, 130, 131, 132, 133, 134, 135,
- 136, 137, 138, 139, 140, 141, 142, 143,
- 144, 145, 146, 147, 148, 149, 150, 151,
- 152, 153, 154, 155, 156, 157, 158, 159,
- 160, 161, 162, 163, 164, 165, 166, 167,
- 168, 169, 170, 171, 172, 173, 174, 175,
- 176, 177, 178, 179, 180, 255 /*micro*/, 182, 183,
- 184, 185, 186, 187, 188, 189, 190, 191,
- 192, 193, 194, 195, 196, 197, 198, 199,
- 200, 201, 202, 203, 204, 205, 206, 207,
- 208, 209, 210, 211, 212, 213, 214, 215,
- 216, 217, 218, 219, 220, 221, 222,
+ 0, 1, 2, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 12, 13, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23,
+ 24, 25, 26, 27, 28, 29, 30, 31,
+ 32, 33, 34, 35, 36, 37, 38, 39,
+ 40, 41, 42, 43, 44, 45, 46, 47,
+ 48, 49, 50, 51, 52, 53, 54, 55,
+ 56, 57, 58, 59, 60, 61, 62, 63,
+ 64, 65, 66, 67, 68, 69, 70, 71,
+ 72, 73, 74, 75, 76, 77, 78, 79,
+ 80, 81, 82, 83, 84, 85, 86, 87,
+ 88, 89, 90, 91, 92, 93, 94, 95,
+ 96, 'A', 'B', 'C', 'D', 'E', 'F', 'G',
+ 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
+ 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',
+ 'X', 'Y', 'Z', 123, 124, 125, 126, 127,
+ 128, 129, 130, 131, 132, 133, 134, 135,
+ 136, 137, 138, 139, 140, 141, 142, 143,
+ 144, 145, 146, 147, 148, 149, 150, 151,
+ 152, 153, 154, 155, 156, 157, 158, 159,
+ 160, 161, 162, 163, 164, 165, 166, 167,
+ 168, 169, 170, 171, 172, 173, 174, 175,
+ 176, 177, 178, 179, 180, 255 /*micro*/, 182, 183,
+ 184, 185, 186, 187, 188, 189, 190, 191,
+ 192, 193, 194, 195, 196, 197, 198, 199,
+ 200, 201, 202, 203, 204, 205, 206, 207,
+ 208, 209, 210, 211, 212, 213, 214, 215,
+ 216, 217, 218, 219, 220, 221, 222,
# if UNICODE_MAJOR_VERSION > 2 \
|| (UNICODE_MAJOR_VERSION == 2 && UNICODE_DOT_VERSION >= 1 \
&& UNICODE_DOT_DOT_VERSION >= 8)
- 255 /*sharp s*/,
+ 255 /*sharp s*/,
# else /* uc(sharp s) is 'sharp s' itself in early unicode */
- 223,
+ 223,
# endif
- 224-32, 225-32, 226-32, 227-32, 228-32, 229-32, 230-32, 231-32,
- 232-32, 233-32, 234-32, 235-32, 236-32, 237-32, 238-32, 239-32,
- 240-32, 241-32, 242-32, 243-32, 244-32, 245-32, 246-32, 247,
- 248-32, 249-32, 250-32, 251-32, 252-32, 253-32, 254-32, 255
+ 224-32, 225-32, 226-32, 227-32, 228-32, 229-32, 230-32, 231-32,
+ 232-32, 233-32, 234-32, 235-32, 236-32, 237-32, 238-32, 239-32,
+ 240-32, 241-32, 242-32, 243-32, 244-32, 245-32, 246-32, 247,
+ 248-32, 249-32, 250-32, 251-32, 252-32, 253-32, 254-32, 255
};
# endif /* !EBCDIC, but still in DOINIT */
#else /* ! DOINIT */
@@ -5251,7 +5683,6 @@ EXTCONST unsigned char PL_fold[];
EXTCONST unsigned char PL_fold_latin1[];
EXTCONST unsigned char PL_mod_latin1_uc[];
EXTCONST unsigned char PL_latin1_lc[];
-EXT unsigned char PL_fold_locale[]; /* Unfortunately not EXTCONST. */
# endif
#endif
@@ -5260,19 +5691,20 @@ EXT unsigned char PL_fold_locale[]; /* Unfortunately not EXTCONST. */
* which has DEBUGGING enabled always */
#ifdef DOINIT
EXTCONST char* const PL_block_type[] = {
- "NULL",
- "WHEN",
- "BLOCK",
- "GIVEN",
- "LOOP_ARY",
- "LOOP_LAZYSV",
- "LOOP_LAZYIV",
- "LOOP_LIST",
- "LOOP_PLAIN",
- "SUB",
- "FORMAT",
- "EVAL",
- "SUBST"
+ "NULL",
+ "WHEN",
+ "BLOCK",
+ "GIVEN",
+ "LOOP_ARY",
+ "LOOP_LAZYSV",
+ "LOOP_LAZYIV",
+ "LOOP_LIST",
+ "LOOP_PLAIN",
+ "SUB",
+ "FORMAT",
+ "EVAL",
+ "SUBST",
+ "DEFER"
};
#else
EXTCONST char* PL_block_type[];
@@ -5286,102 +5718,112 @@ EXTCONST char* PL_block_type[];
#ifdef DOINIT
EXTCONST char PL_bincompat_options[] =
# ifdef DEBUG_LEAKING_SCALARS
- " DEBUG_LEAKING_SCALARS"
+ " DEBUG_LEAKING_SCALARS"
# endif
# ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
- " DEBUG_LEAKING_SCALARS_FORK_DUMP"
+ " DEBUG_LEAKING_SCALARS_FORK_DUMP"
# endif
# ifdef HAS_TIMES
- " HAS_TIMES"
+ " HAS_TIMES"
# endif
# ifdef HAVE_INTERP_INTERN
- " HAVE_INTERP_INTERN"
+ " HAVE_INTERP_INTERN"
# endif
# ifdef MULTIPLICITY
- " MULTIPLICITY"
+ " MULTIPLICITY"
# endif
# ifdef MYMALLOC
- " MYMALLOC"
+ " MYMALLOC"
+# endif
+# ifdef NO_HASH_SEED
+ " NO_HASH_SEED"
# endif
# ifdef PERLIO_LAYERS
- " PERLIO_LAYERS"
+ " PERLIO_LAYERS"
# endif
# ifdef PERL_DEBUG_READONLY_COW
- " PERL_DEBUG_READONLY_COW"
+ " PERL_DEBUG_READONLY_COW"
# endif
# ifdef PERL_DEBUG_READONLY_OPS
- " PERL_DEBUG_READONLY_OPS"
+ " PERL_DEBUG_READONLY_OPS"
+# endif
+# ifdef PERL_HASH_FUNC_DEFINE
+/* note that this is different from the others, PERL_HASH_FUNC_DEFINE
+ * is a string which says which define was defined. */
+ " " PERL_HASH_FUNC_DEFINE
# endif
-# ifdef PERL_IMPLICIT_CONTEXT
- " PERL_IMPLICIT_CONTEXT"
+# ifdef PERL_HASH_USE_SBOX32
+ " PERL_HASH_USE_SBOX32"
+# else
+ " PERL_HASH_NO_SBOX32"
# endif
# ifdef PERL_IMPLICIT_SYS
- " PERL_IMPLICIT_SYS"
+ " PERL_IMPLICIT_SYS"
# endif
# ifdef PERL_MICRO
- " PERL_MICRO"
+ " PERL_MICRO"
# endif
# ifdef PERL_POISON
- " PERL_POISON"
+ " PERL_POISON"
# endif
# ifdef PERL_SAWAMPERSAND
- " PERL_SAWAMPERSAND"
+ " PERL_SAWAMPERSAND"
# endif
# ifdef PERL_TRACK_MEMPOOL
- " PERL_TRACK_MEMPOOL"
+ " PERL_TRACK_MEMPOOL"
# endif
# ifdef PERL_USES_PL_PIDSTATUS
- " PERL_USES_PL_PIDSTATUS"
+ " PERL_USES_PL_PIDSTATUS"
# endif
# ifdef USE_64_BIT_ALL
- " USE_64_BIT_ALL"
+ " USE_64_BIT_ALL"
# endif
# ifdef USE_64_BIT_INT
- " USE_64_BIT_INT"
+ " USE_64_BIT_INT"
# endif
# ifdef USE_IEEE
- " USE_IEEE"
+ " USE_IEEE"
# endif
# ifdef USE_ITHREADS
- " USE_ITHREADS"
+ " USE_ITHREADS"
# endif
# ifdef USE_LARGE_FILES
- " USE_LARGE_FILES"
+ " USE_LARGE_FILES"
# endif
# ifdef USE_LOCALE_COLLATE
- " USE_LOCALE_COLLATE"
+ " USE_LOCALE_COLLATE"
# endif
# ifdef USE_LOCALE_NUMERIC
- " USE_LOCALE_NUMERIC"
+ " USE_LOCALE_NUMERIC"
# endif
# ifdef USE_LOCALE_TIME
- " USE_LOCALE_TIME"
+ " USE_LOCALE_TIME"
# endif
# ifdef USE_LONG_DOUBLE
- " USE_LONG_DOUBLE"
+ " USE_LONG_DOUBLE"
# endif
# ifdef USE_PERLIO
- " USE_PERLIO"
+ " USE_PERLIO"
# endif
# ifdef USE_QUADMATH
- " USE_QUADMATH"
+ " USE_QUADMATH"
# endif
# ifdef USE_REENTRANT_API
- " USE_REENTRANT_API"
+ " USE_REENTRANT_API"
# endif
# ifdef USE_SOCKS
- " USE_SOCKS"
+ " USE_SOCKS"
# endif
# ifdef VMS_DO_SOCKETS
- " VMS_DO_SOCKETS"
+ " VMS_DO_SOCKETS"
# endif
# ifdef VMS_SHORTEN_LONG_SYMBOLS
- " VMS_SHORTEN_LONG_SYMBOLS"
+ " VMS_SHORTEN_LONG_SYMBOLS"
# endif
# ifdef VMS_WE_ARE_CASE_SENSITIVE
- " VMS_SYMBOL_CASE_AS_IS"
+ " VMS_SYMBOL_CASE_AS_IS"
# endif
- "";
+ ""; /* keep this on a line by itself, WITH the empty string */
#else
EXTCONST char PL_bincompat_options[];
#endif
@@ -5418,6 +5860,24 @@ EXTCONST char *const PL_phase_names[] = {
EXTCONST char *const PL_phase_names[];
#endif
+/*
+=for apidoc_section $utility
+
+=for apidoc phase_name
+
+Returns the given phase's name as a NUL-terminated string.
+
+For example, to print a stack trace that includes the current
+interpreter phase you might do:
+
+ const char* phase_name = phase_name(PL_phase);
+ mess("This is weird. (Perl phase: %s)", phase_name);
+
+=cut
+*/
+
+#define phase_name(phase) (PL_phase_names[phase])
+
#ifndef PERL_CORE
/* Do not use this macro. It only exists for extensions that rely on PL_dirty
* instead of using the newer PL_phase, which provides everything PL_dirty
@@ -5468,8 +5928,7 @@ typedef enum {
#define KEY_sigvar 0xFFFF /* fake keyword representing a signature var */
/* Hints are now stored in a dedicated U32, so the bottom 8 bits are no longer
- special and there is no need for HINT_PRIVATE_MASK for COPs
- However, bitops store HINT_INTEGER in their op_private.
+ special and there is no need for HINT_PRIVATE_MASK for COPs.
NOTE: The typical module using these has the bit value hard-coded, so don't
blindly change the values of these.
@@ -5516,15 +5975,11 @@ typedef enum {
#define HINT_FEATURE_MASK 0x3c000000 /* 4 bits for feature bundles */
- /* Note: Used for HINT_M_VMSISH_*,
- currently defined by vms/vmsish.h:
- 0x40000000
- 0x80000000
- */
-
-/* The following are stored in $^H{sort}, not in PL_hints */
-#define HINT_SORT_STABLE 0x00000100 /* sort styles */
-#define HINT_SORT_UNSTABLE 0x00000200
+ /* Note: Used for HINT_M_VMSISH_*,
+ currently defined by vms/vmsish.h:
+ 0x40000000
+ 0x80000000
+ */
#define HINT_ALL_STRICT HINT_STRICT_REFS \
| HINT_STRICT_SUBS \
@@ -5544,7 +5999,7 @@ typedef enum {
#ifndef PERL_SAWAMPERSAND
# define PL_sawampersand \
- (SAWAMPERSAND_LEFT|SAWAMPERSAND_MIDDLE|SAWAMPERSAND_RIGHT)
+ (SAWAMPERSAND_LEFT|SAWAMPERSAND_MIDDLE|SAWAMPERSAND_RIGHT)
#endif
/* Used for debugvar magic */
@@ -5573,23 +6028,23 @@ struct perl_debug_pad {
#define PERL_DEBUG_PAD(i) &(PL_debug_pad.pad[i])
#define PERL_DEBUG_PAD_ZERO(i) (SvPVX(PERL_DEBUG_PAD(i))[0] = 0, \
- (((XPV*) SvANY(PERL_DEBUG_PAD(i)))->xpv_cur = 0), \
- PERL_DEBUG_PAD(i))
+ (((XPV*) SvANY(PERL_DEBUG_PAD(i)))->xpv_cur = 0), \
+ PERL_DEBUG_PAD(i))
/* Enable variables which are pointers to functions */
typedef void (*peep_t)(pTHX_ OP* o);
typedef regexp* (*regcomp_t) (pTHX_ char* exp, char* xend, PMOP* pm);
typedef I32 (*regexec_t) (pTHX_ regexp* prog, char* stringarg,
- char* strend, char* strbeg, I32 minend,
- SV* screamer, void* data, U32 flags);
+ char* strend, char* strbeg, I32 minend,
+ SV* screamer, void* data, U32 flags);
typedef char* (*re_intuit_start_t) (pTHX_ regexp *prog, SV *sv,
- char *strpos, char *strend,
- U32 flags,
- re_scream_pos_data *d);
+ char *strpos, char *strend,
+ U32 flags,
+ re_scream_pos_data *d);
typedef SV* (*re_intuit_string_t) (pTHX_ regexp *prog);
typedef void (*regfree_t) (pTHX_ struct regexp* r);
typedef regexp* (*regdupe_t) (pTHX_ const regexp* r, CLONE_PARAMS *param);
-typedef I32 (*re_fold_t)(const char *, char const *, I32);
+typedef I32 (*re_fold_t)(pTHX_ const char *, char const *, I32);
typedef void (*DESTRUCTORFUNC_NOCONTEXT_t) (void*);
typedef void (*DESTRUCTORFUNC_t) (pTHX_ void*);
@@ -5599,10 +6054,38 @@ typedef void (*XSINIT_t) (pTHX);
typedef void (*ATEXIT_t) (pTHX_ void*);
typedef void (*XSUBADDR_t) (pTHX_ CV *);
+enum Perl_custom_infix_precedence {
+ /* These numbers are spaced out to give room to insert new values as
+ * required. They form part of the ABI contract with XS::Parse::Infix so
+ * they should not be changed within a stable release cycle, but they can
+ * be freely altered during a development cycle because no ABI guarantees
+ * are made at that time */
+ INFIX_PREC_LOW = 10, /* non-associative */
+ INFIX_PREC_LOGICAL_OR_LOW = 30, /* left-associative, as `or` */
+ INFIX_PREC_LOGICAL_AND_LOW = 40, /* left-associative, as `and` */
+ INFIX_PREC_ASSIGN = 50, /* right-associative, as `=` */
+ INFIX_PREC_LOGICAL_OR = 70, /* left-associative, as `||` */
+ INFIX_PREC_LOGICAL_AND = 80, /* left-associative, as `&&` */
+ INFIX_PREC_REL = 90, /* non-associative, just below `==` */
+ INFIX_PREC_ADD = 110, /* left-associative, as `+` */
+ INFIX_PREC_MUL = 130, /* left-associative, as `*` */
+ INFIX_PREC_POW = 150, /* right-associative, as `**` */
+ INFIX_PREC_HIGH = 170, /* non-associative */
+ /* Try to keep within the range of a U8 in case we need to split the field
+ * and add flags */
+};
+struct Perl_custom_infix;
+struct Perl_custom_infix {
+ enum Perl_custom_infix_precedence prec;
+ void (*parse)(pTHX_ SV **opdata, struct Perl_custom_infix *); /* optional */
+ OP *(*build_op)(pTHX_ SV **opdata, OP *lhs, OP *rhs, struct Perl_custom_infix *);
+};
+
typedef OP* (*Perl_ppaddr_t)(pTHX);
typedef OP* (*Perl_check_t) (pTHX_ OP*);
typedef void(*Perl_ophook_t)(pTHX_ OP*);
typedef int (*Perl_keyword_plugin_t)(pTHX_ char*, STRLEN, OP**);
+typedef STRLEN (*Perl_infix_plugin_t)(pTHX_ char*, STRLEN, struct Perl_custom_infix **);
typedef void(*Perl_cpeep_t)(pTHX_ OP *, OP *);
typedef void(*globhook_t)(pTHX);
@@ -5815,19 +6298,35 @@ EXTCONST U8 PL_magic_data[256];
#endif
#ifdef DOINIT
- /* NL IV NV PV INV PI PN MG RX GV LV AV HV CV FM IO */
+ /* NL IV NV PV INV PI PN MG RX GV LV AV HV CV FM IO OBJ */
EXTCONST bool
-PL_valid_types_IVX[] = { 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0 };
+PL_valid_types_IVX[] = { 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0 };
EXTCONST bool
-PL_valid_types_NVX[] = { 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0 };
+PL_valid_types_NVX[] = { 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0 };
EXTCONST bool
-PL_valid_types_PVX[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1 };
+PL_valid_types_PVX[] = { 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0 };
EXTCONST bool
-PL_valid_types_RV[] = { 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1 };
+PL_valid_types_RV[] = { 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0 };
EXTCONST bool
-PL_valid_types_IV_set[] = { 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1 };
+PL_valid_types_IV_set[] = { 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0 };
EXTCONST bool
-PL_valid_types_NV_set[] = { 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
+PL_valid_types_NV_set[] = { 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0 };
+
+EXTCONST U8
+PL_deBruijn_bitpos_tab32[] = {
+ /* https://graphics.stanford.edu/~seander/bithacks.html#IntegerLogDeBruijn */
+ 0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
+ 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9
+};
+
+EXTCONST U8
+PL_deBruijn_bitpos_tab64[] = {
+ /* https://stackoverflow.com/questions/11376288/fast-computing-of-log2-for-64-bit-integers */
+ 63, 0, 58, 1, 59, 47, 53, 2, 60, 39, 48, 27, 54, 33, 42, 3,
+ 61, 51, 37, 40, 49, 18, 28, 20, 55, 30, 34, 11, 43, 14, 22, 4,
+ 62, 57, 46, 52, 38, 26, 32, 41, 50, 36, 17, 19, 29, 10, 13, 21,
+ 56, 45, 25, 31, 35, 16, 9, 12, 44, 24, 15, 8, 23, 7, 6, 5
+};
#else
@@ -5837,9 +6336,17 @@ EXTCONST bool PL_valid_types_PVX[];
EXTCONST bool PL_valid_types_RV[];
EXTCONST bool PL_valid_types_IV_set[];
EXTCONST bool PL_valid_types_NV_set[];
+EXTCONST U8 PL_deBruijn_bitpos_tab32[];
+EXTCONST U8 PL_deBruijn_bitpos_tab64[];
#endif
+/* The constants for using PL_deBruijn_bitpos_tab */
+#define PERL_deBruijnMagic32_ 0x077CB531
+#define PERL_deBruijnShift32_ 27
+#define PERL_deBruijnMagic64_ 0x07EDD5E59A4E28C2
+#define PERL_deBruijnShift64_ 58
+
/* In C99 we could use designated (named field) union initializers.
* In C89 we need to initialize the member declared first.
* In C++ we need extern C initializers.
@@ -5855,6 +6362,24 @@ EXTCONST bool PL_valid_types_NV_set[];
# define PERL_SET_CONTEXT(i) PERL_SET_INTERP(i)
#endif
+#ifdef USE_PERL_SWITCH_LOCALE_CONTEXT
+# define PERL_SET_LOCALE_CONTEXT(i) \
+ STMT_START { \
+ if (UNLIKELY(PL_veto_switch_non_tTHX_context)) \
+ Perl_switch_locale_context(); \
+ } STMT_END
+#else
+# define PERL_SET_LOCALE_CONTEXT(i) NOOP
+#endif
+
+/* In some Configurations there may be per-thread information that is carried
+ * in a library instead of perl's tTHX structure. This macro is to be used to
+ * handle those when tTHX is changed. Only locale handling is currently known
+ * to be affected. */
+#define PERL_SET_NON_tTHX_CONTEXT(i) \
+ STMT_START { PERL_SET_LOCALE_CONTEXT(i); } STMT_END
+
+
#ifndef PERL_GET_CONTEXT
# define PERL_GET_CONTEXT PERL_GET_INTERP
#endif
@@ -5924,35 +6449,51 @@ static U8 utf8d_C9[] = {
/* This is a version of the above table customized for Perl that doesn't
* exclude surrogates and accepts start bytes up through FD (FE on 64-bit
* machines). The classes have been renumbered so that the patterns are more
- * evident in the table. The class numbers for start bytes are constrained so
- * that they can be used as a shift count for masking off the leading one bits.
+ * evident in the table. The class numbers are structured so the values are:
+ *
+ * a) UTF-8 invariant code points
+ * 0
+ * b) Start bytes that always lead to either overlongs or some class of code
+ * point that needs outside intervention for handling (such as to raise a
+ * warning)
+ * 1
+ * c) Start bytes that never lead to one of the above
+ * number of bytes in complete sequence
+ * d) Rest of start bytes (they can be resolved through this algorithm) and
+ * continuation bytes
+ * arbitrary class number chosen to not conflict with the above
+ * classes, and to index into the remaining table
+ *
* It would make the code simpler if start byte FF could also be handled, but
- * doing so would mean adding nodes for each of continuation bytes 6-12
- * remaining, and two more nodes for overlong detection (a total of 9), and
- * there is room only for 4 more nodes unless we make the array U16 instead of
- * U8.
+ * doing so would mean adding two more classes (one from splitting 80 from 81,
+ * and one for FF), and nodes for each of 6 new continuation bytes. The
+ * current table has 436 entries; the new one would require 140 more = 576 (2
+ * additional classes for each of the 10 existing nodes, and 20 for each of 6
+ * new nodes. The array would have to be made U16 instead of U8, not worth it
+ * for this rarely encountered case
*
* The classes are
- * 00-7F 0
+ * 00-7F 0 Always legal, single byte sequence
* 80-81 7 Not legal immediately after start bytes E0 F0 F8 FC
* FE
* 82-83 8 Not legal immediately after start bytes E0 F0 F8 FC
* 84-87 9 Not legal immediately after start bytes E0 F0 F8
* 88-8F 10 Not legal immediately after start bytes E0 F0
* 90-9F 11 Not legal immediately after start byte E0
- * A0-BF 12
- * C0,C1 1
- * C2-DF 2
- * E0 13
- * E1-EF 3
- * F0 14
- * F1-F7 4
- * F8 15
- * F9-FB 5
- * FC 16
- * FD 6
- * FE 17 (or 1 on 32-bit machines, since it overflows)
- * FF 1
+ * A0-BF 12 Always legal continuation byte
+ * C0,C1 1 Not legal: overlong
+ * C2-DF 2 Legal start byte for two byte sequences
+ * E0 13 Some sequences are overlong; others legal
+ * E1-EF 3 Legal start byte for three byte sequences
+ * F0 14 Some sequences are overlong; others legal
+ * F1-F7 4 Legal start byte for four byte sequences
+ * F8 15 Some sequences are overlong; others legal
+ * F9-FB 5 Legal start byte for five byte sequences
+ * FC 16 Some sequences are overlong; others legal
+ * FD 6 Legal start byte for six byte sequences
+ * FE 17 Some sequences are overlong; others legal
+ * (is 1 on 32-bit machines, since it overflows)
+ * FF 1 Need to handle specially
*/
EXTCONST U8 PL_extended_utf8_dfa_tab[] = {
@@ -6002,7 +6543,7 @@ EXTCONST U8 PL_extended_utf8_dfa_tab[] = {
* N10 Start byte is FE. Continuation bytes 80-81 are illegal (overlong);
* the other continuations transition to N5
* 1 Reject. All transitions not mentioned above (except the single
- * byte ones (as they are always legal) are to this state.
+ * byte ones (as they are always legal)) are to this state.
*/
# if defined(PERL_CORE)
@@ -6352,16 +6893,16 @@ typedef struct am_table_short AMTS;
#endif /* _FASTMATH */
#define PERLDB_ALL (PERLDBf_SUB | PERLDBf_LINE | \
- PERLDBf_NOOPT | PERLDBf_INTER | \
- PERLDBf_SUBLINE| PERLDBf_SINGLE| \
- PERLDBf_NAMEEVAL| PERLDBf_NAMEANON | \
- PERLDBf_SAVESRC)
- /* No _NONAME, _GOTO */
+ PERLDBf_NOOPT | PERLDBf_INTER | \
+ PERLDBf_SUBLINE| PERLDBf_SINGLE| \
+ PERLDBf_NAMEEVAL| PERLDBf_NAMEANON | \
+ PERLDBf_SAVESRC)
+ /* No _NONAME, _GOTO */
#define PERLDBf_SUB 0x01 /* Debug sub enter/exit */
#define PERLDBf_LINE 0x02 /* Keep line # */
#define PERLDBf_NOOPT 0x04 /* Switch off optimizations */
#define PERLDBf_INTER 0x08 /* Preserve more data for
- later inspections */
+ later inspections */
#define PERLDBf_SUBLINE 0x10 /* Keep subr source lines */
#define PERLDBf_SINGLE 0x20 /* Start with single-step on */
#define PERLDBf_NONAME 0x40 /* For _SUB: no name of the subr */
@@ -6476,14 +7017,14 @@ the plain locale pragma without a parameter (S<C<use locale>>) is in effect.
* instead it makes sense to minimize space used and do all the work in
* the rarely called function */
# ifdef USE_LOCALE_CTYPE
-# define _CHECK_AND_WARN_PROBLEMATIC_LOCALE \
+# define CHECK_AND_WARN_PROBLEMATIC_LOCALE_ \
STMT_START { \
if (UNLIKELY(PL_warn_locale)) { \
Perl__warn_problematic_locale(); \
} \
} STMT_END
# else
-# define _CHECK_AND_WARN_PROBLEMATIC_LOCALE
+# define CHECK_AND_WARN_PROBLEMATIC_LOCALE_
# endif
@@ -6492,8 +7033,8 @@ the plain locale pragma without a parameter (S<C<use locale>>) is in effect.
* argument; the 2nd, is a pointer to the first byte of the UTF-8 encoded
* string, and an end position which it won't try to read past */
# define _CHECK_AND_OUTPUT_WIDE_LOCALE_CP_MSG(cp) \
- STMT_START { \
- if (! PL_in_utf8_CTYPE_locale && ckWARN(WARN_LOCALE)) { \
+ STMT_START { \
+ if (! IN_UTF8_CTYPE_LOCALE && ckWARN(WARN_LOCALE)) { \
Perl_warner(aTHX_ packWARN(WARN_LOCALE), \
"Wide character (U+%" UVXf ") in %s",\
(UV) cp, OP_DESC(PL_op)); \
@@ -6501,8 +7042,8 @@ the plain locale pragma without a parameter (S<C<use locale>>) is in effect.
} STMT_END
# define _CHECK_AND_OUTPUT_WIDE_LOCALE_UTF8_MSG(s, send) \
- STMT_START { /* Check if to warn before doing the conversion work */\
- if (! PL_in_utf8_CTYPE_locale && ckWARN(WARN_LOCALE)) { \
+ STMT_START { /* Check if to warn before doing the conversion work */\
+ if (! IN_UTF8_CTYPE_LOCALE && ckWARN(WARN_LOCALE)) { \
UV cp = utf8_to_uvchr_buf((U8 *) (s), (U8 *) (send), NULL); \
Perl_warner(aTHX_ packWARN(WARN_LOCALE), \
"Wide character (U+%" UVXf ") in %s", \
@@ -6528,207 +7069,99 @@ the plain locale pragma without a parameter (S<C<use locale>>) is in effect.
# define IN_LC_COMPILETIME(category) 0
# define IN_LC_RUNTIME(category) 0
# define IN_LC(category) 0
-# define _CHECK_AND_WARN_PROBLEMATIC_LOCALE
+# define CHECK_AND_WARN_PROBLEMATIC_LOCALE_
# define _CHECK_AND_OUTPUT_WIDE_LOCALE_UTF8_MSG(s, send)
# define _CHECK_AND_OUTPUT_WIDE_LOCALE_CP_MSG(c)
#endif
+#define locale_panic_(m) Perl_locale_panic((m), __FILE__, __LINE__, errno)
/* Locale/thread synchronization macros. */
-#if ! ( defined(USE_LOCALE) \
- && defined(USE_ITHREADS) \
- && ( ! defined(USE_THREAD_SAFE_LOCALE) \
- || ( defined(HAS_LOCALECONV) \
- && ( ! defined(HAS_LOCALECONV_L) \
- || defined(TS_W32_BROKEN_LOCALECONV))) \
- || ( defined(HAS_NL_LANGINFO) \
- && ! defined(HAS_THREAD_SAFE_NL_LANGINFO_L)) \
- || (defined(HAS_MBLEN) && ! defined(HAS_MBRLEN)) \
- || (defined(HAS_MBTOWC) && ! defined(HAS_MBRTOWC)) \
- || (defined(HAS_WCTOMB) && ! defined(HAS_WCRTOMB))))
-
-/* The whole expression just above was complemented, so here we have no need
- * for thread synchronization, most likely it would be that this isn't a
- * threaded build. */
+#if ! defined(USE_LOCALE) || ! defined(USE_LOCALE_THREADS)
+# define LOCALE_LOCK_(cond) NOOP
+# define LOCALE_UNLOCK_ NOOP
# define LOCALE_INIT
# define LOCALE_TERM
-# define LC_NUMERIC_LOCK(cond) NOOP
-# define LC_NUMERIC_UNLOCK NOOP
-# define LOCALECONV_LOCK NOOP
-# define LOCALECONV_UNLOCK NOOP
-# define LOCALE_READ_LOCK NOOP
-# define LOCALE_READ_UNLOCK NOOP
-# define MBLEN_LOCK NOOP
-# define MBLEN_UNLOCK NOOP
-# define MBTOWC_LOCK NOOP
-# define MBTOWC_UNLOCK NOOP
-# define NL_LANGINFO_LOCK NOOP
-# define NL_LANGINFO_UNLOCK NOOP
-# define SETLOCALE_LOCK NOOP
-# define SETLOCALE_UNLOCK NOOP
-# define WCTOMB_LOCK NOOP
-# define WCTOMB_UNLOCK NOOP
-#else
-
- /* Here, we will need critical sections in locale handling, because one or
- * more of the above conditions are true. This could be because the
- * platform doesn't have thread-safe locales, or that at least one of the
- * locale-dependent functions in the core isn't thread-safe. The latter
- * case is generally because they return a pointer to a static buffer, which
- * may be per-process instead of per-thread. There are supposedly
- * re-entrant, safe versions for all of them Perl currently uses (which the
- * #if above checks for), but most platforms don't have all the needed ones
- * available, and the Posix standard doesn't require nl_langinfo_l() to be
- * fully thread-safe, so a Configure probe was written. localeconv_l() is
- * uncommon, and judging by bug reports on the web, some earlier library
- * localeconv_l versions were broken, so perhaps a probe is in order for
- * that, but it would be a pain to write.
- *
- * On non-thread-safe systems, some of the above functions are vulnerable to
- * races should another thread get control and change the locale in the
- * middle of their execution.
- *
- * We currently use a single mutex for all these cases. This solves both
- * the problem of another thread changing the locale, and the buffer being
- * overwritten (the code copies the results to a safe place before releasing
- * the mutex). Ideally, for locale thread-safe platforms where the only
- * issue is another thread clobbering the function's static buffer, there
- * would be a separate mutex for each such buffer. Otherwise, things get
- * locked that don't need to. But, it is not expected that any of these
- * will be called frequently, and the locked interval should be short, and
- * modern platforms will have reentrant versions (which don't lock) for
- * almost all of them, so khw thinks a single mutex should suffice. */
-# define LOCALE_LOCK_ \
- STMT_START { \
- DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
- "%s: %d: locking locale\n", __FILE__, __LINE__)); \
- MUTEX_LOCK(&PL_locale_mutex); \
- } STMT_END
-# define LOCALE_UNLOCK_ \
- STMT_START { \
- DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
- "%s: %d: unlocking locale\n", __FILE__, __LINE__)); \
- MUTEX_UNLOCK(&PL_locale_mutex); \
- } STMT_END
- /* We do define a different macro for each case; then if we want to have
- * separate mutexes for some of them, the only changes needed are here.
- * Define just the necessary macros. The compiler should then croak if the
- * #ifdef's in the code are incorrect */
-# if defined(HAS_LOCALECONV) && ( ! defined(HAS_POSIX_2008_LOCALE) \
- || ! defined(HAS_LOCALECONV_L) \
- || defined(TS_W32_BROKEN_LOCALECONV))
-# define LOCALECONV_LOCK LOCALE_LOCK_
-# define LOCALECONV_UNLOCK LOCALE_UNLOCK_
-# endif
-# if defined(HAS_NL_LANGINFO) && ( ! defined(HAS_THREAD_SAFE_NL_LANGINFO_L) \
- || ! defined(HAS_POSIX_2008_LOCALE))
-# define NL_LANGINFO_LOCK LOCALE_LOCK_
-# define NL_LANGINFO_UNLOCK LOCALE_UNLOCK_
-# endif
-# if defined(HAS_MBLEN) && ! defined(HAS_MBRLEN)
-# define MBLEN_LOCK LOCALE_LOCK_
-# define MBLEN_UNLOCK LOCALE_UNLOCK_
-# endif
-# if defined(HAS_MBTOWC) && ! defined(HAS_MBRTOWC)
-# define MBTOWC_LOCK LOCALE_LOCK_
-# define MBTOWC_UNLOCK LOCALE_UNLOCK_
-# endif
-# if defined(HAS_WCTOMB) && ! defined(HAS_WCRTOMB)
-# define WCTOMB_LOCK LOCALE_LOCK_
-# define WCTOMB_UNLOCK LOCALE_UNLOCK_
-# endif
-# if defined(USE_THREAD_SAFE_LOCALE)
- /* On locale thread-safe systems, we don't need these workarounds */
-# define LOCALE_TERM_LC_NUMERIC_ NOOP
-# define LOCALE_INIT_LC_NUMERIC_ NOOP
-# define LC_NUMERIC_LOCK(cond) NOOP
-# define LC_NUMERIC_UNLOCK NOOP
-# define LOCALE_INIT_LC_NUMERIC_ NOOP
-# define LOCALE_TERM_LC_NUMERIC_ NOOP
-
- /* There may be instance core where we this is invoked yet should do
- * nothing. Rather than have #ifdef's around them, define it here */
-# define SETLOCALE_LOCK NOOP
-# define SETLOCALE_UNLOCK NOOP
-# else
-# define SETLOCALE_LOCK LOCALE_LOCK_
-# define SETLOCALE_UNLOCK LOCALE_UNLOCK_
+#else /* Below: Threaded, and locales are supported */
- /* On platforms without per-thread locales, when another thread can switch
- * our locale, we need another mutex to create critical sections where we
- * want the LC_NUMERIC locale to be locked into either the C (standard)
- * locale, or the underlying locale, so that other threads interrupting
- * this one don't change it to the wrong state before we've had a chance to
- * complete our operation. It can stay locked over an entire printf
- * operation, for example. And so is made distinct from the LOCALE_LOCK
- * mutex.
+ /* A locale mutex is required on all such threaded builds.
*
- * This simulates kind of a general semaphore. The current thread will
- * lock the mutex if the per-thread variable is zero, and then increments
- * that variable. Each corresponding UNLOCK decrements the variable until
- * it is 0, at which point it actually unlocks the mutex. Since the
- * variable is per-thread, there is no race with other threads.
+ * This mutex simulates a general (or recursive) semaphore. The current
+ * thread will lock the mutex if the per-thread variable is zero, and then
+ * increments that variable. Each corresponding UNLOCK decrements the
+ * variable until it is 0, at which point it actually unlocks the mutex.
+ * Since the variable is per-thread, initialized to 0, there is no race
+ * with other threads.
*
- * The single argument is a condition to test for, and if true, to panic,
- * as this would be an attempt to complement the LC_NUMERIC state, and
- * we're not supposed to because it's locked.
+ * The single argument is a condition to test for, and if true, to panic.
+ * Call it with the constant 0 to suppress the check.
*
* Clang improperly gives warnings for this, if not silenced:
* https://clang.llvm.org/docs/ThreadSafetyAnalysis.html#conditional-locks
- *
- * If LC_NUMERIC_LOCK is combined with one of the LOCKs above, calls to
- * that and its corresponding unlock should be contained entirely within
- * the locked portion of LC_NUMERIC. Those mutexes should be used only in
- * very short sections of code, while LC_NUMERIC_LOCK may span more
- * operations. By always following this convention, deadlock should be
- * impossible. But if necessary, the two mutexes could be combined. */
-# define LC_NUMERIC_LOCK(cond_to_panic_if_already_locked) \
- CLANG_DIAG_IGNORE(-Wthread-safety) \
+ */
+# define LOCALE_LOCK_(cond_to_panic_if_already_locked) \
STMT_START { \
- if (PL_lc_numeric_mutex_depth <= 0) { \
- MUTEX_LOCK(&PL_lc_numeric_mutex); \
- PL_lc_numeric_mutex_depth = 1; \
+ CLANG_DIAG_IGNORE(-Wthread-safety) \
+ if (LIKELY(PL_locale_mutex_depth <= 0)) { \
DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
- "%s: %d: locking lc_numeric; depth=1\n", \
+ "%s: %d: locking locale; depth=1\n", \
__FILE__, __LINE__)); \
+ MUTEX_LOCK(&PL_locale_mutex); \
+ PL_locale_mutex_depth = 1; \
} \
else { \
- PL_lc_numeric_mutex_depth++; \
+ PL_locale_mutex_depth++; \
DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
- "%s: %d: avoided lc_numeric_lock; new depth=%d\n", \
- __FILE__, __LINE__, PL_lc_numeric_mutex_depth)); \
+ "%s: %d: avoided locking locale; new depth=%d\n", \
+ __FILE__, __LINE__, PL_locale_mutex_depth)); \
if (cond_to_panic_if_already_locked) { \
- Perl_croak_nocontext("panic: %s: %d: Trying to change" \
- " LC_NUMERIC incompatibly", \
- __FILE__, __LINE__); \
+ locale_panic_("Trying to lock locale incompatibly: " \
+ STRINGIFY(cond_to_panic_if_already_locked)); \
} \
} \
+ CLANG_DIAG_RESTORE \
} STMT_END
-# define LC_NUMERIC_UNLOCK \
+# define LOCALE_UNLOCK_ \
STMT_START { \
- if (PL_lc_numeric_mutex_depth <= 1) { \
- MUTEX_UNLOCK(&PL_lc_numeric_mutex); \
- PL_lc_numeric_mutex_depth = 0; \
+ if (LIKELY(PL_locale_mutex_depth == 1)) { \
DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
- "%s: %d: unlocking lc_numeric; depth=0\n", \
+ "%s: %d: unlocking locale; new depth=0\n", \
__FILE__, __LINE__)); \
+ PL_locale_mutex_depth = 0; \
+ MUTEX_UNLOCK(&PL_locale_mutex); \
+ } \
+ else if (PL_locale_mutex_depth <= 0) { \
+ DEBUG_L(PerlIO_printf(Perl_debug_log, \
+ "%s: %d: ignored attempt to unlock already" \
+ " unlocked locale; depth unchanged at %d\n", \
+ __FILE__, __LINE__, PL_locale_mutex_depth)); \
} \
else { \
- PL_lc_numeric_mutex_depth--; \
+ PL_locale_mutex_depth--; \
DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
- "%s: %d: avoided lc_numeric_unlock; new depth=%d\n",\
- __FILE__, __LINE__, PL_lc_numeric_mutex_depth)); \
+ "%s: %d: avoided unlocking locale; new depth=%d\n", \
+ __FILE__, __LINE__, PL_locale_mutex_depth)); \
} \
- } STMT_END \
- CLANG_DIAG_RESTORE
+ } STMT_END
+
+# if defined(USE_THREADS) && ! defined(USE_THREAD_SAFE_LOCALE)
-# define LOCALE_INIT_LC_NUMERIC_ MUTEX_INIT(&PL_lc_numeric_mutex)
-# define LOCALE_TERM_LC_NUMERIC_ MUTEX_DESTROY(&PL_lc_numeric_mutex)
+ /* By definition, a thread-unsafe locale means we need a critical
+ * section. */
+# define SETLOCALE_LOCK LOCALE_LOCK_(0)
+# define SETLOCALE_UNLOCK LOCALE_UNLOCK_
+# ifdef USE_LOCALE_NUMERIC
+# define LC_NUMERIC_LOCK(cond_to_panic_if_already_locked) \
+ LOCALE_LOCK_(cond_to_panic_if_already_locked)
+# define LC_NUMERIC_UNLOCK LOCALE_UNLOCK_
+# endif
# endif
-# ifdef USE_POSIX_2008_LOCALE
+# ifndef USE_POSIX_2008_LOCALE
+# define LOCALE_TERM_POSIX_2008_ NOOP
+# else
/* We have a locale object holding the 'C' locale for Posix 2008 */
# define LOCALE_TERM_POSIX_2008_ \
STMT_START { \
@@ -6740,22 +7173,131 @@ the plain locale pragma without a parameter (S<C<use locale>>) is in effect.
PL_C_locale_obj = (locale_t) NULL; \
} \
} STMT_END
-# else
-# define LOCALE_TERM_POSIX_2008_ NOOP
# endif
-# define LOCALE_INIT STMT_START { \
- MUTEX_INIT(&PL_locale_mutex); \
- LOCALE_INIT_LC_NUMERIC_; \
- } STMT_END
-
+# define LOCALE_INIT MUTEX_INIT(&PL_locale_mutex)
# define LOCALE_TERM STMT_START { \
- MUTEX_DESTROY(&PL_locale_mutex); \
- LOCALE_TERM_LC_NUMERIC_; \
LOCALE_TERM_POSIX_2008_; \
+ MUTEX_DESTROY(&PL_locale_mutex); \
} STMT_END
#endif
+/* There are some locale-related functions which may need locking only because
+ * they share some common memory across threads, and hence there is the
+ * potential for a race in accessing that space. Most are because their return
+ * points to a global static buffer, but some just use some common space
+ * internally. All functions accessing a given space need to have a critical
+ * section to prevent any other thread from accessing it at the same time.
+ * Ideally, there would be a separate mutex for each such space, so that
+ * another thread isn't unnecessarily blocked. But, most of them need to be
+ * locked against the locale changing while accessing that space, and it is not
+ * expected that any will be called frequently, and the locked interval should
+ * be short, and modern platforms will have reentrant versions (which don't
+ * lock) for almost all of them, so khw thinks a single mutex should suffice.
+ * Having a single mutex facilitates that, avoiding potential deadlock
+ * situations.
+ *
+ * This will be a no-op iff the perl is unthreaded. 'gw' stands for 'global
+ * write', to indicate the caller wants to be able to access memory that isn't
+ * thread specific, either to write to itself, or to prevent anyone else from
+ * writing. */
+#define gwLOCALE_LOCK LOCALE_LOCK_(0)
+#define gwLOCALE_UNLOCK LOCALE_UNLOCK_
+
+/* setlocale() generally returns in a global static buffer, but not on Windows
+ * when operating in thread-safe mode */
+#if defined(WIN32) && defined(USE_THREAD_SAFE_LOCALE)
+# define POSIX_SETLOCALE_LOCK \
+ STMT_START { \
+ if (_configthreadlocale(0) == _DISABLE_PER_THREAD_LOCALE) \
+ gwLOCALE_LOCK; \
+ } STMT_END
+# define POSIX_SETLOCALE_UNLOCK \
+ STMT_START { \
+ if (_configthreadlocale(0) == _DISABLE_PER_THREAD_LOCALE) \
+ gwLOCALE_UNLOCK; \
+ } STMT_END
+#else
+# define POSIX_SETLOCALE_LOCK gwLOCALE_LOCK
+# define POSIX_SETLOCALE_UNLOCK gwLOCALE_UNLOCK
+#endif
+
+/* It handles _wsetlocale() as well */
+#define WSETLOCALE_LOCK POSIX_SETLOCALE_LOCK
+#define WSETLOCALE_UNLOCK POSIX_SETLOCALE_UNLOCK
+
+/* Similar to gwLOCALE_LOCK, there are functions that require both the locale
+ * and environment to be constant during their execution, and don't change
+ * either of those things, but do write to some sort of shared global space.
+ * They require some sort of exclusive lock against similar functions, and a
+ * read lock on both the locale and environment. However, on systems which
+ * have per-thread locales, the locale is constant during the execution of
+ * these functions, and so no locale lock is necssary. For such systems, an
+ * exclusive ENV lock is necessary and sufficient. On systems where the locale
+ * could change out from under us, we use an exclusive LOCALE lock to prevent
+ * that, and a read ENV lock to prevent other threads that have nothing to do
+ * with locales here from changing the environment. */
+#ifdef SETLOCALE_LOCK
+# define gwENVr_LOCALEr_LOCK \
+ STMT_START { SETLOCALE_LOCK; ENV_READ_LOCK; } STMT_END
+# define gwENVr_LOCALEr_UNLOCK \
+ STMT_START { ENV_READ_UNLOCK; SETLOCALE_UNLOCK; } STMT_END
+#else
+# define gwENVr_LOCALEr_LOCK ENV_LOCK
+# define gwENVr_LOCALEr_UNLOCK ENV_UNLOCK
+#endif
+
+/* Now that we have defined gwENVr_LOCALEr_LOCK, we can finish defining
+ * SETLOCALE_LOCK, which we kept undefined until here on a thread-safe system
+ * so that we could use that fact to calculate what gwENVr_LOCALEr_LOCK should
+ * be */
+#ifndef SETLOCALE_LOCK
+# define SETLOCALE_LOCK NOOP
+# define SETLOCALE_UNLOCK NOOP
+#endif
+
+
+ /* On systems that don't have per-thread locales, even though we don't
+ * think we are changing the locale ourselves, behind the scenes it does
+ * get changed to whatever the thread's should be, so it has to be an
+ * exclusive lock. By defining it here with this name, we can, for the
+ * most part, hide this detail from the rest of the code */
+/* Currently, the read lock is an exclusive lock */
+#define LOCALE_READ_LOCK SETLOCALE_LOCK
+#define LOCALE_READ_UNLOCK SETLOCALE_UNLOCK
+
+
+#ifndef LC_NUMERIC_LOCK
+# define LC_NUMERIC_LOCK(cond) NOOP
+# define LC_NUMERIC_UNLOCK NOOP
+#endif
+
+ /* These non-reentrant versions use global space */
+# define MBLEN_LOCK_ gwLOCALE_LOCK
+# define MBLEN_UNLOCK_ gwLOCALE_UNLOCK
+
+# define MBTOWC_LOCK_ gwLOCALE_LOCK
+# define MBTOWC_UNLOCK_ gwLOCALE_UNLOCK
+
+# define WCTOMB_LOCK_ gwLOCALE_LOCK
+# define WCTOMB_UNLOCK_ gwLOCALE_UNLOCK
+
+ /* Whereas the reentrant versions don't (assuming they are called with a
+ * per-thread buffer; some have the capability of being called with a NULL
+ * parameter, which defeats the reentrancy) */
+# define MBRLEN_LOCK_ NOOP
+# define MBRLEN_UNLOCK_ NOOP
+# define MBRTOWC_LOCK_ NOOP
+# define MBRTOWC_UNLOCK_ NOOP
+# define WCRTOMB_LOCK_ NOOP
+# define WCRTOMB_UNLOCK_ NOOP
+
+# define LC_COLLATE_LOCK SETLOCALE_LOCK
+# define LC_COLLATE_UNLOCK SETLOCALE_UNLOCK
+
+# define STRFTIME_LOCK ENV_LOCK
+# define STRFTIME_UNLOCK ENV_UNLOCK
+
#ifdef USE_LOCALE_NUMERIC
/* These macros are for toggling between the underlying locale (UNDERLYING or
@@ -6912,12 +7454,12 @@ cannot have changed since the precalculation.
* khw believes the reason for the variables instead of the bits in a single
* word is to avoid having to have masking instructions. */
-# define _NOT_IN_NUMERIC_STANDARD (! PL_numeric_standard)
+# define NOT_IN_NUMERIC_STANDARD_ (! PL_numeric_standard)
/* We can lock the category to stay in the C locale, making requests to the
* contrary be noops, in the dynamic scope by setting PL_numeric_standard to 2.
* */
-# define _NOT_IN_NUMERIC_UNDERLYING \
+# define NOT_IN_NUMERIC_UNDERLYING_ \
(! PL_numeric_underlying && PL_numeric_standard < 2)
# define DECLARATION_FOR_LC_NUMERIC_MANIPULATION \
@@ -6927,17 +7469,17 @@ cannot have changed since the precalculation.
STMT_START { \
bool _in_lc_numeric = (in); \
LC_NUMERIC_LOCK( \
- ( ( _in_lc_numeric && _NOT_IN_NUMERIC_UNDERLYING) \
- || (! _in_lc_numeric && _NOT_IN_NUMERIC_STANDARD))); \
+ ( ( _in_lc_numeric && NOT_IN_NUMERIC_UNDERLYING_) \
+ || (! _in_lc_numeric && NOT_IN_NUMERIC_STANDARD_))); \
if (_in_lc_numeric) { \
- if (_NOT_IN_NUMERIC_UNDERLYING) { \
+ if (NOT_IN_NUMERIC_UNDERLYING_) { \
Perl_set_numeric_underlying(aTHX); \
_restore_LC_NUMERIC_function \
= &Perl_set_numeric_standard; \
} \
} \
else { \
- if (_NOT_IN_NUMERIC_STANDARD) { \
+ if (NOT_IN_NUMERIC_STANDARD_) { \
Perl_set_numeric_standard(aTHX); \
_restore_LC_NUMERIC_function \
= &Perl_set_numeric_underlying; \
@@ -6956,14 +7498,16 @@ cannot have changed since the precalculation.
LC_NUMERIC_UNLOCK; \
} STMT_END
-/* The next two macros set unconditionally. These should be rarely used, and
- * only after being sure that this is what is needed */
+/* The next two macros should be rarely used, and only after being sure that
+ * this is what is needed */
# define SET_NUMERIC_STANDARD() \
- STMT_START { \
+ STMT_START { \
DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
"%s: %d: lc_numeric standard=%d\n", \
__FILE__, __LINE__, PL_numeric_standard)); \
- Perl_set_numeric_standard(aTHX); \
+ if (UNLIKELY(NOT_IN_NUMERIC_STANDARD_)) { \
+ Perl_set_numeric_standard(aTHX); \
+ } \
DEBUG_Lv(PerlIO_printf(Perl_debug_log, \
"%s: %d: lc_numeric standard=%d\n", \
__FILE__, __LINE__, PL_numeric_standard)); \
@@ -6971,7 +7515,8 @@ cannot have changed since the precalculation.
# define SET_NUMERIC_UNDERLYING() \
STMT_START { \
- if (_NOT_IN_NUMERIC_UNDERLYING) { \
+ /*assert(PL_locale_mutex_depth > 0);*/ \
+ if (NOT_IN_NUMERIC_UNDERLYING_) { \
Perl_set_numeric_underlying(aTHX); \
} \
} STMT_END
@@ -6980,8 +7525,8 @@ cannot have changed since the precalculation.
* the RESTORE_foo ones called to switch back, but only if need be */
# define STORE_LC_NUMERIC_SET_STANDARD() \
STMT_START { \
- LC_NUMERIC_LOCK(_NOT_IN_NUMERIC_STANDARD); \
- if (_NOT_IN_NUMERIC_STANDARD) { \
+ LC_NUMERIC_LOCK(NOT_IN_NUMERIC_STANDARD_); \
+ if (NOT_IN_NUMERIC_STANDARD_) { \
_restore_LC_NUMERIC_function = &Perl_set_numeric_underlying;\
Perl_set_numeric_standard(aTHX); \
} \
@@ -6991,8 +7536,8 @@ cannot have changed since the precalculation.
* locale'. This is principally in the POSIX:: functions */
# define STORE_LC_NUMERIC_FORCE_TO_UNDERLYING() \
STMT_START { \
- LC_NUMERIC_LOCK(_NOT_IN_NUMERIC_UNDERLYING); \
- if (_NOT_IN_NUMERIC_UNDERLYING) { \
+ LC_NUMERIC_LOCK(NOT_IN_NUMERIC_UNDERLYING_); \
+ if (NOT_IN_NUMERIC_UNDERLYING_) { \
Perl_set_numeric_underlying(aTHX); \
_restore_LC_NUMERIC_function = &Perl_set_numeric_standard; \
} \
@@ -7058,7 +7603,7 @@ cannot have changed since the precalculation.
#endif /* !USE_LOCALE_NUMERIC */
-#ifdef USE_ITHREADS
+#ifdef USE_LOCALE_THREADS
# define ENV_LOCK PERL_WRITE_LOCK(&PL_env_mutex)
# define ENV_UNLOCK PERL_WRITE_UNLOCK(&PL_env_mutex)
# define ENV_READ_LOCK PERL_READ_LOCK(&PL_env_mutex)
@@ -7091,6 +7636,162 @@ cannot have changed since the precalculation.
# define GETENV_UNLOCK NOOP
#endif
+/* Some critical sections need to lock both the locale and the environment from
+ * changing, while allowing for any number of readers. To avoid deadlock, this
+ * is always done in the same order. These should always be invoked, like all
+ * locks really, at such a low level that its just a libc call that is wrapped,
+ * so as to prevent recursive calls which could deadlock. */
+#define ENVr_LOCALEr_LOCK \
+ STMT_START { LOCALE_READ_LOCK; ENV_READ_LOCK; } STMT_END
+#define ENVr_LOCALEr_UNLOCK \
+ STMT_START { ENV_READ_UNLOCK; LOCALE_READ_UNLOCK; } STMT_END
+
+/* These time-related functions all requre that the environment and locale
+ * don't change while they are executing (at least in glibc; this appears to be
+ * contrary to the POSIX standard). tzset() writes global variables, so
+ * always needs to have write locking. ctime, localtime, mktime, and strftime
+ * effectively call it, so they too need exclusive access. The rest need to
+ * have exclusive locking as well so that they can copy the contents of the
+ * returned static buffer before releasing the lock. That leaves asctime and
+ * gmtime. There may be reentrant versions of these available on the platform
+ * which don't require write locking.
+ */
+#ifdef PERL_REENTR_USING_ASCTIME_R
+# define ASCTIME_LOCK ENVr_LOCALEr_LOCK
+# define ASCTIME_UNLOCK ENVr_LOCALEr_UNLOCK
+#else
+# define ASCTIME_LOCK gwENVr_LOCALEr_LOCK
+# define ASCTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
+#endif
+
+#define CTIME_LOCK gwENVr_LOCALEr_LOCK
+#define CTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
+
+#ifdef PERL_REENTR_USING_GMTIME_R
+# define GMTIME_LOCK ENVr_LOCALEr_LOCK
+# define GMTIME_UNLOCK ENVr_LOCALEr_UNLOCK
+#else
+# define GMTIME_LOCK gwENVr_LOCALEr_LOCK
+# define GMTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
+#endif
+
+#define LOCALTIME_LOCK gwENVr_LOCALEr_LOCK
+#define LOCALTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
+#define MKTIME_LOCK gwENVr_LOCALEr_LOCK
+#define MKTIME_UNLOCK gwENVr_LOCALEr_UNLOCK
+#define TZSET_LOCK gwENVr_LOCALEr_LOCK
+#define TZSET_UNLOCK gwENVr_LOCALEr_UNLOCK
+
+/* Similiarly, these functions need a constant environment and/or locale. And
+ * some have a buffer that is shared with another thread executing the same or
+ * a related call. A mutex could be created for each class, but for now, share
+ * the ENV mutex with everything, as none probably gets called so much that
+ * performance would suffer by a thread being locked out by another thread that
+ * could have used a different mutex.
+ *
+ * But, create a different macro name just to indicate the ones that don't
+ * actually depend on the environment, but are using its mutex for want of a
+ * better one */
+#define gwLOCALEr_LOCK gwENVr_LOCALEr_LOCK
+#define gwLOCALEr_UNLOCK gwENVr_LOCALEr_UNLOCK
+
+#ifdef PERL_REENTR_USING_GETHOSTBYADDR_R
+# define GETHOSTBYADDR_LOCK ENVr_LOCALEr_LOCK
+# define GETHOSTBYADDR_UNLOCK ENVr_LOCALEr_UNLOCK
+#else
+# define GETHOSTBYADDR_LOCK gwENVr_LOCALEr_LOCK
+# define GETHOSTBYADDR_UNLOCK gwENVr_LOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETHOSTBYNAME_R
+# define GETHOSTBYNAME_LOCK ENVr_LOCALEr_LOCK
+# define GETHOSTBYNAME_UNLOCK ENVr_LOCALEr_UNLOCK
+#else
+# define GETHOSTBYNAME_LOCK gwENVr_LOCALEr_LOCK
+# define GETHOSTBYNAME_UNLOCK gwENVr_LOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETNETBYADDR_R
+# define GETNETBYADDR_LOCK LOCALE_READ_LOCK
+# define GETNETBYADDR_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETNETBYADDR_LOCK gwLOCALEr_LOCK
+# define GETNETBYADDR_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETNETBYNAME_R
+# define GETNETBYNAME_LOCK LOCALE_READ_LOCK
+# define GETNETBYNAME_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETNETBYNAME_LOCK gwLOCALEr_LOCK
+# define GETNETBYNAME_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETPROTOBYNAME_R
+# define GETPROTOBYNAME_LOCK LOCALE_READ_LOCK
+# define GETPROTOBYNAME_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETPROTOBYNAME_LOCK gwLOCALEr_LOCK
+# define GETPROTOBYNAME_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETPROTOBYNUMBER_R
+# define GETPROTOBYNUMBER_LOCK LOCALE_READ_LOCK
+# define GETPROTOBYNUMBER_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETPROTOBYNUMBER_LOCK gwLOCALEr_LOCK
+# define GETPROTOBYNUMBER_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETPROTOENT_R
+# define GETPROTOENT_LOCK LOCALE_READ_LOCK
+# define GETPROTOENT_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETPROTOENT_LOCK gwLOCALEr_LOCK
+# define GETPROTOENT_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETPWNAM_R
+# define GETPWNAM_LOCK LOCALE_READ_LOCK
+# define GETPWNAM_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETPWNAM_LOCK gwLOCALEr_LOCK
+# define GETPWNAM_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETPWUID_R
+# define GETPWUID_LOCK LOCALE_READ_LOCK
+# define GETPWUID_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETPWUID_LOCK gwLOCALEr_LOCK
+# define GETPWUID_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETSERVBYNAME_R
+# define GETSERVBYNAME_LOCK LOCALE_READ_LOCK
+# define GETSERVBYNAME_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETSERVBYNAME_LOCK gwLOCALEr_LOCK
+# define GETSERVBYNAME_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETSERVBYPORT_R
+# define GETSERVBYPORT_LOCK LOCALE_READ_LOCK
+# define GETSERVBYPORT_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETSERVBYPORT_LOCK gwLOCALEr_LOCK
+# define GETSERVBYPORT_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETSERVENT_R
+# define GETSERVENT_LOCK LOCALE_READ_LOCK
+# define GETSERVENT_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETSERVENT_LOCK gwLOCALEr_LOCK
+# define GETSERVENT_UNLOCK gwLOCALEr_UNLOCK
+#endif
+#ifdef PERL_REENTR_USING_GETSPNAM_R
+# define GETSPNAM_LOCK LOCALE_READ_LOCK
+# define GETSPNAM_UNLOCK LOCALE_READ_UNLOCK
+#else
+# define GETSPNAM_LOCK gwLOCALEr_LOCK
+# define GETSPNAM_UNLOCK gwLOCALEr_UNLOCK
+#endif
+
+#define STRFMON_LOCK LC_MONETARY_LOCK
+#define STRFMON_UNLOCK LC_MONETARY_UNLOCK
+
+/* End of locale/env synchronization */
+
#ifndef PERL_NO_INLINE_FUNCTIONS
/* Static inline funcs that depend on includes and declarations above.
Some of these reference functions in the perl object files, and some
@@ -7106,29 +7807,14 @@ cannot have changed since the precalculation.
START_EXTERN_C
+# include "perlstatic.h"
# include "inline.h"
+# include "sv_inline.h"
END_EXTERN_C
#endif
-/* Some critical sections need to lock both the locale and the environment.
- * XXX khw intends to change this to lock both mutexes, but that brings up
- * issues of potential deadlock, so should be done at the beginning of a
- * development cycle. So for now, it just locks the environment. Note that
- * many modern platforms are locale-thread-safe anyway, so locking the locale
- * mutex is a no-op anyway */
-#define ENV_LOCALE_LOCK ENV_LOCK
-#define ENV_LOCALE_UNLOCK ENV_UNLOCK
-
-/* And some critical sections care only that no one else is writing either the
- * locale nor the environment. XXX Again this is for the future. This can be
- * simulated with using COND_WAIT in thread.h */
-#define ENV_LOCALE_READ_LOCK ENV_LOCALE_LOCK
-#define ENV_LOCALE_READ_UNLOCK ENV_LOCALE_UNLOCK
-
-#define Atof my_atof
-
/*
=for apidoc_section $numeric
@@ -7165,7 +7851,7 @@ C<strtoul>.
#endif
#if !defined(Strtol) && defined(USE_64_BIT_INT) && defined(IV_IS_QUAD) && \
- (QUADKIND == QUAD_IS_LONG_LONG || QUADKIND == QUAD_IS___INT64)
+ (QUADKIND == QUAD_IS_LONG_LONG || QUADKIND == QUAD_IS___INT64)
# ifdef __hpux
# define strtoll __strtoll /* secret handshake */
# endif
@@ -7188,7 +7874,7 @@ C<strtoul>.
* (as is done for Atoul(), see below) but for backward compatibility
* we just assume atol(). */
# if defined(USE_64_BIT_INT) && defined(IV_IS_QUAD) && defined(HAS_ATOLL) && \
- (QUADKIND == QUAD_IS_LONG_LONG || QUADKIND == QUAD_IS___INT64)
+ (QUADKIND == QUAD_IS_LONG_LONG || QUADKIND == QUAD_IS___INT64)
# ifdef WIN64
# define atoll _atoi64 /* secret handshake */
# endif
@@ -7199,7 +7885,7 @@ C<strtoul>.
#endif
#if !defined(Strtoul) && defined(USE_64_BIT_INT) && defined(UV_IS_QUAD) && \
- (QUADKIND == QUAD_IS_LONG_LONG || QUADKIND == QUAD_IS___INT64)
+ (QUADKIND == QUAD_IS_LONG_LONG || QUADKIND == QUAD_IS___INT64)
# ifdef __hpux
# define strtoull __strtoull /* secret handshake */
# endif
@@ -7225,12 +7911,12 @@ C<strtoul>.
#endif
#define grok_bin(s,lp,fp,rp) \
- grok_bin_oct_hex(s, lp, fp, rp, 1, _CC_BINDIGIT, 'b')
+ grok_bin_oct_hex(s, lp, fp, rp, 1, CC_BINDIGIT_, 'b')
#define grok_oct(s,lp,fp,rp) \
(*(fp) |= PERL_SCAN_DISALLOW_PREFIX, \
- grok_bin_oct_hex(s, lp, fp, rp, 3, _CC_OCTDIGIT, '\0'))
+ grok_bin_oct_hex(s, lp, fp, rp, 3, CC_OCTDIGIT_, '\0'))
#define grok_hex(s,lp,fp,rp) \
- grok_bin_oct_hex(s, lp, fp, rp, 4, _CC_XDIGIT, 'x')
+ grok_bin_oct_hex(s, lp, fp, rp, 4, CC_XDIGIT_, 'x')
#ifndef PERL_SCRIPT_MODE
#define PERL_SCRIPT_MODE "r"
@@ -7271,19 +7957,19 @@ C<strtoul>.
# include <sys/sem.h>
# ifndef HAS_UNION_SEMUN /* Provide the union semun. */
union semun {
- int val;
- struct semid_ds *buf;
- unsigned short *array;
+ int val;
+ struct semid_ds *buf;
+ unsigned short *array;
};
# endif
# ifdef USE_SEMCTL_SEMUN
# ifdef IRIX32_SEMUN_BROKEN_BY_GCC
union gccbug_semun {
- int val;
- struct semid_ds *buf;
- unsigned short *array;
- char __dummy[5];
- };
+ int val;
+ struct semid_ds *buf;
+ unsigned short *array;
+ char __dummy[5];
+ };
# define semun gccbug_semun
# endif
# define Semctl(id, num, cmd, semun) semctl(id, num, cmd, semun)
@@ -7308,7 +7994,9 @@ C<strtoul>.
* "DynaLoader::_guts" XS_VERSION
* XXX in the current implementation, this string is ignored.
* 2. Declare a typedef named my_cxt_t that is a structure that contains
- * all the data that needs to be interpreter-local.
+ * all the data that needs to be interpreter-local that perl controls. This
+ * doesn't include things that libc controls, such as the uselocale object
+ * in Configurations that use it.
* 3. Use the START_MY_CXT macro after the declaration of my_cxt_t.
* 4. Use the MY_CXT_INIT macro such that it is called exactly once
* (typically put in the BOOT: section).
@@ -7318,7 +8006,7 @@ C<strtoul>.
* access MY_CXT.
*/
-#if defined(PERL_IMPLICIT_CONTEXT)
+#if defined(MULTIPLICITY)
/* START_MY_CXT must appear in all extensions that define a my_cxt_t structure,
* right after the definition (i.e. at file scope). The non-threads
@@ -7331,27 +8019,27 @@ C<strtoul>.
* (We allocate my_cxtp in a Perl SV so that it will be released when
* the interpreter goes away.) */
# define MY_CXT_INIT \
- my_cxt_t *my_cxtp = \
- (my_cxt_t*)Perl_my_cxt_init(aTHX_ MY_CXT_INIT_ARG, sizeof(my_cxt_t)); \
- PERL_UNUSED_VAR(my_cxtp)
+ my_cxt_t *my_cxtp = \
+ (my_cxt_t*)Perl_my_cxt_init(aTHX_ MY_CXT_INIT_ARG, sizeof(my_cxt_t)); \
+ PERL_UNUSED_VAR(my_cxtp)
# define MY_CXT_INIT_INTERP(my_perl) \
- my_cxt_t *my_cxtp = \
- (my_cxt_t*)Perl_my_cxt_init(my_perl, MY_CXT_INIT_ARG, sizeof(my_cxt_t)); \
- PERL_UNUSED_VAR(my_cxtp)
+ my_cxt_t *my_cxtp = \
+ (my_cxt_t*)Perl_my_cxt_init(my_perl, MY_CXT_INIT_ARG, sizeof(my_cxt_t)); \
+ PERL_UNUSED_VAR(my_cxtp)
/* This declaration should be used within all functions that use the
* interpreter-local data. */
# define dMY_CXT \
- my_cxt_t *my_cxtp = (my_cxt_t *)PL_my_cxt_list[MY_CXT_INDEX]
+ my_cxt_t *my_cxtp = (my_cxt_t *)PL_my_cxt_list[MY_CXT_INDEX]
# define dMY_CXT_INTERP(my_perl) \
- my_cxt_t *my_cxtp = (my_cxt_t *)(my_perl)->Imy_cxt_list[MY_CXT_INDEX]
+ my_cxt_t *my_cxtp = (my_cxt_t *)(my_perl)->Imy_cxt_list[MY_CXT_INDEX]
/* Clones the per-interpreter data. */
# define MY_CXT_CLONE \
- my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
- void * old_my_cxtp = PL_my_cxt_list[MY_CXT_INDEX]; \
- PL_my_cxt_list[MY_CXT_INDEX] = my_cxtp; \
- Copy(old_my_cxtp, my_cxtp, 1, my_cxt_t);
+ my_cxt_t *my_cxtp = (my_cxt_t*)SvPVX(newSV(sizeof(my_cxt_t)-1));\
+ void * old_my_cxtp = PL_my_cxt_list[MY_CXT_INDEX]; \
+ PL_my_cxt_list[MY_CXT_INDEX] = my_cxtp; \
+ Copy(old_my_cxtp, my_cxtp, 1, my_cxt_t);
@@ -7368,7 +8056,7 @@ C<strtoul>.
# define aMY_CXT_ aMY_CXT,
# define _aMY_CXT ,aMY_CXT
-#else /* PERL_IMPLICIT_CONTEXT */
+#else /* MULTIPLICITY */
# define START_MY_CXT static my_cxt_t my_cxt;
# define dMY_CXT dNOOP
# define dMY_CXT_INTERP(my_perl) dNOOP
@@ -7383,7 +8071,7 @@ C<strtoul>.
# define aMY_CXT_
# define _aMY_CXT
-#endif /* !defined(PERL_IMPLICIT_CONTEXT) */
+#endif /* !defined(MULTIPLICITY) */
#ifdef I_FCNTL
# include <fcntl.h>
@@ -7447,8 +8135,8 @@ EXTERN_C int flock(int fd, int op);
#endif
#define IS_NUMBER_IN_UV 0x01 /* number within UV range (maybe not
- int). value returned in pointed-
- to UV */
+ int). value returned in pointed-
+ to UV */
#define IS_NUMBER_GREATER_THAN_UV_MAX 0x02 /* pointed to UV undefined */
#define IS_NUMBER_NOT_INT 0x04 /* saw . or E notation or infnan */
#define IS_NUMBER_NEG 0x08 /* leading minus sign */
@@ -7540,18 +8228,18 @@ extern void moncontrol(int);
#define PERL_UNICODE_UTF8CACHEASSERT_FLAG 0x0100
#define PERL_UNICODE_STD_FLAG \
- (PERL_UNICODE_STDIN_FLAG | \
- PERL_UNICODE_STDOUT_FLAG | \
- PERL_UNICODE_STDERR_FLAG)
+ (PERL_UNICODE_STDIN_FLAG | \
+ PERL_UNICODE_STDOUT_FLAG | \
+ PERL_UNICODE_STDERR_FLAG)
#define PERL_UNICODE_INOUT_FLAG \
- (PERL_UNICODE_IN_FLAG | \
- PERL_UNICODE_OUT_FLAG)
+ (PERL_UNICODE_IN_FLAG | \
+ PERL_UNICODE_OUT_FLAG)
#define PERL_UNICODE_DEFAULT_FLAGS \
- (PERL_UNICODE_STD_FLAG | \
- PERL_UNICODE_INOUT_FLAG | \
- PERL_UNICODE_LOCALE_FLAG)
+ (PERL_UNICODE_STD_FLAG | \
+ PERL_UNICODE_INOUT_FLAG | \
+ PERL_UNICODE_LOCALE_FLAG)
#define PERL_UNICODE_ALL_FLAGS 0x01ff
@@ -7601,7 +8289,7 @@ so no C<x++>.
#endif
#define do_open(g, n, l, a, rm, rp, sf) \
- do_openn(g, n, l, a, rm, rp, sf, (SV **) NULL, 0)
+ do_openn(g, n, l, a, rm, rp, sf, (SV **) NULL, 0)
#ifdef PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION
# define do_exec(cmd) do_exec3(cmd,0,0)
#endif
@@ -7650,14 +8338,30 @@ Allows one ending \0
#define PERL_PV_ESCAPE_NONASCII 0x000400
#define PERL_PV_ESCAPE_FIRSTCHAR 0x000800
-#define PERL_PV_ESCAPE_ALL 0x001000
+#define PERL_PV_ESCAPE_ALL 0x001000
#define PERL_PV_ESCAPE_NOBACKSLASH 0x002000
#define PERL_PV_ESCAPE_NOCLEAR 0x004000
#define PERL_PV_PRETTY_NOCLEAR PERL_PV_ESCAPE_NOCLEAR
#define PERL_PV_ESCAPE_RE 0x008000
+/* Escape PV with hex, except leave NULs as octal: */
#define PERL_PV_ESCAPE_DWIM 0x010000
+/* Escape PV with all hex, including NUL. */
+#define PERL_PV_ESCAPE_DWIM_ALL_HEX 0x020000
+
+/* Do not escape word characters, alters meaning of other flags */
+#define PERL_PV_ESCAPE_NON_WC 0x040000
+#define PERL_PV_ESCAPE_TRUNC_MIDDLE 0x080000
+
+#define PERL_PV_PRETTY_QUOTEDPREFIX ( \
+ PERL_PV_PRETTY_ELLIPSES | \
+ PERL_PV_PRETTY_QUOTE | \
+ PERL_PV_ESCAPE_NONASCII | \
+ PERL_PV_ESCAPE_NON_WC | \
+ PERL_PV_ESCAPE_TRUNC_MIDDLE | \
+ 0)
+
/* used by pv_display in dump.c*/
#define PERL_PV_PRETTY_DUMP PERL_PV_PRETTY_ELLIPSES|PERL_PV_PRETTY_QUOTE
@@ -7967,8 +8671,25 @@ GCC_DIAG_RESTORE_DECL;
#else
+/* The declarations here need to match the initializations done above,
+ since a mismatch across compilation units causes undefined
+ behavior. It also prevents warnings from LTO builds.
+*/
+# if !defined(USE_QUADMATH) && \
+ (NVSIZE == LONG_DOUBLESIZE && defined(LONGDBLINFBYTES) || \
+ NVSIZE == DOUBLESIZE && defined(DOUBLEINFBYTES))
+INFNAN_U8_NV_DECL PL_inf;
+# else
INFNAN_NV_U8_DECL PL_inf;
+# endif
+
+# if !defined(USE_QUADMATH) && \
+ (NVSIZE == LONG_DOUBLESIZE && defined(LONGDBLNANBYTES) || \
+ NVSIZE == DOUBLESIZE && defined(DOUBLENANBYTES))
+INFNAN_U8_NV_DECL PL_nan;
+# else
INFNAN_NV_U8_DECL PL_nan;
+# endif
#endif
@@ -8343,6 +9064,69 @@ END_EXTERN_C
#endif /* DOUBLE_HAS_NAN */
+/* these are used to faciliate the env var PERL_RAND_SEED,
+ * which allows consistent behavior from code that calls
+ * srand() with no arguments, either explicitly or implicitly.
+ */
+#define PERL_SRAND_OVERRIDE_NEXT() PERL_XORSHIFT32_A(PL_srand_override_next);
+
+#define PERL_SRAND_OVERRIDE_NEXT_INIT() STMT_START { \
+ PL_srand_override = PL_srand_override_next; \
+ PERL_SRAND_OVERRIDE_NEXT(); \
+} STMT_END
+
+#define PERL_SRAND_OVERRIDE_GET(into) STMT_START { \
+ into= PL_srand_override; \
+ PERL_SRAND_OVERRIDE_NEXT_INIT(); \
+} STMT_END
+
+#define PERL_SRAND_OVERRIDE_NEXT_CHILD() STMT_START { \
+ PERL_XORSHIFT32_B(PL_srand_override_next); \
+ PERL_SRAND_OVERRIDE_NEXT_INIT(); \
+} STMT_END
+
+#define PERL_SRAND_OVERRIDE_NEXT_PARENT() \
+ PERL_SRAND_OVERRIDE_NEXT()
+
+/* in something like
+ *
+ * perl -le'sub f { eval "BEGIN{ f() }" }'
+ *
+ * Each iteration chews up 8 stacks frames, and we will eventually SEGV
+ * due to C stack overflow.
+ *
+ * This define provides a maximum limit to prevent the SEGV. Such code is
+ * unusual, so it unlikely we need a very large number here.
+ */
+#ifndef PERL_MAX_NESTED_EVAL_BEGIN_BLOCKS_DEFAULT
+#define PERL_MAX_NESTED_EVAL_BEGIN_BLOCKS_DEFAULT 1000
+#endif
+/* ${^MAX_NESTED_EVAL_BEGIN_BLOCKS} */
+#define PERL_VAR_MAX_NESTED_EVAL_BEGIN_BLOCKS "\015AX_NESTED_EVAL_BEGIN_BLOCKS"
+
+/* Defines like this make it easier to do porting/diag.t. They are no-
+ * ops that return their argument which can be used to hint to diag.t
+ * that a string is actually an error message. By putting the category
+ * information into the macro name it considerably simplifies extended
+ * diag.t to support these cases. Feel free to add more.
+ *
+ * While it seems tempting to try to convert all of our diagnostics to
+ * this format, it would miss part of the point of diag.t in that it
+ * detects NEW diagnostics, which would not necessarily use these
+ * macros. The macros instead exist where we know we have an error
+ * message that isnt being picked up by diag.t because it is declared
+ * as a string independently of the function it is fed to, something
+ * diag.t can never handle right without help.
+ */
+#define PERL_DIAG_STR_(x) ("" x "")
+#define PERL_DIAG_WARN_SYNTAX(x) PERL_DIAG_STR_(x)
+#define PERL_DIAG_DIE_SYNTAX(x) PERL_DIAG_STR_(x)
+
+#ifndef PERL_STOP_PARSING_AFTER_N_ERRORS
+#define PERL_STOP_PARSING_AFTER_N_ERRORS 10
+#endif
+
+#define PERL_PARSE_ERROR_COUNT(f) (f)
/*
diff --git a/Master/tlpkg/tlperl/lib/CORE/perl538.lib b/Master/tlpkg/tlperl/lib/CORE/perl538.lib
new file mode 100755
index 00000000000..b9173dbed84
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/CORE/perl538.lib
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/CORE/perl_inc_macro.h b/Master/tlpkg/tlperl/lib/CORE/perl_inc_macro.h
index b9cd60947e1..627a63a8177 100644
--- a/Master/tlpkg/tlperl/lib/CORE/perl_inc_macro.h
+++ b/Master/tlpkg/tlperl/lib/CORE/perl_inc_macro.h
@@ -77,8 +77,6 @@
#if defined(WIN32)
# define INCPUSH_PRIVLIB_EXP s = PerlEnv_lib_path(PERL_FS_VERSION, &len); \
if (s) incpush_use_sep(s, len, INCPUSH_ADD_SUB_DIRS|INCPUSH_CAN_RELOCATE);
-#elif defined(NETWARE)
-# define INCPUSH_PRIVLIB_EXP S_incpush_use_sep(aTHX_ PRIVLIB_EXP, 0, INCPUSH_CAN_RELOCATE);
#else
# define INCPUSH_PRIVLIB_EXP S_incpush_use_sep(aTHX_ STR_WITH_LEN(PRIVLIB_EXP), INCPUSH_CAN_RELOCATE);
#endif
@@ -91,18 +89,9 @@
/* submacros for INCPUSH_PERL5LIB */
-#if defined(PERL_USE_SAFE_PUTENV) && ! defined(HAS_UNSETENV)
-# define _INCPUSH_PERL5LIB_IF if (perl5lib && *perl5lib != '\0')
-#else
-# define _INCPUSH_PERL5LIB_IF if (perl5lib)
-#endif
+#define _INCPUSH_PERL5LIB_IF if (perl5lib && *perl5lib != '\0')
#ifndef VMS
-/*
- * It isn't possible to delete an environment variable with
- * PERL_USE_SAFE_PUTENV set unless unsetenv() is also available, so in that
- * case we treat PERL5LIB as undefined if it has a zero-length value.
- */
# define _INCPUSH_PERL5LIB_ADD _INCPUSH_PERL5LIB_IF incpush_use_sep(perl5lib, 0, INCPUSH_ADD_OLD_VERS|INCPUSH_NOT_BASEDIR);
#else
/* VMS */
diff --git a/Master/tlpkg/tlperl/lib/CORE/perlapi.h b/Master/tlpkg/tlperl/lib/CORE/perlapi.h
index 0d66a68371c..d93ee199b7e 100644
--- a/Master/tlpkg/tlperl/lib/CORE/perlapi.h
+++ b/Master/tlpkg/tlperl/lib/CORE/perlapi.h
@@ -13,7 +13,7 @@
/*
* This file used to declare accessor functions for Perl variables
* when PERL_GLOBAL_STRUCT was enabled, but that no longer exists.
- * This file is kept for backwards compatiblity with XS code that
+ * This file is kept for backwards compatibility with XS code that
* might include it.
*/
#ifndef __perlapi_h__
diff --git a/Master/tlpkg/tlperl/lib/CORE/perlhost.h b/Master/tlpkg/tlperl/lib/CORE/perlhost.h
index 5ce496590f2..e6ef46f809c 100644
--- a/Master/tlpkg/tlperl/lib/CORE/perlhost.h
+++ b/Master/tlpkg/tlperl/lib/CORE/perlhost.h
@@ -108,7 +108,7 @@ public:
};
/* IPerlMemParse */
- /* Assume something else is using locks to mangaging serialize
+ /* Assume something else is using locks to manage serialization
on a batch basis
*/
inline void GetLockParse(void) { m_pVMemParse->GetLock(); };
diff --git a/Master/tlpkg/tlperl/lib/CORE/perlio.h b/Master/tlpkg/tlperl/lib/CORE/perlio.h
index f444fa86d01..96fc6f51ccb 100644
--- a/Master/tlpkg/tlperl/lib/CORE/perlio.h
+++ b/Master/tlpkg/tlperl/lib/CORE/perlio.h
@@ -32,7 +32,7 @@
# error "stdio is no longer supported as the default base layer -- use perlio."
#endif
-/* -------------------- End of Configure controls ---------------------------- */
+/*-------------------- End of Configure controls ---------------------------*/
/*
* Although we may not want stdio to be used including <stdio.h> here
@@ -63,6 +63,17 @@ typedef PerlIOl *PerlIO;
#define PerlIO PerlIO
#define PERLIO_LAYERS 1
+/*
+=for apidoc_section $io
+=for apidoc Amu||PERLIO_FUNCS_DECL|PerlIO * ftab
+Declare C<ftab> to be a PerlIO function table, that is, of type
+C<PerlIO_funcs>.
+
+=for apidoc Ay|PerlIO_funcs *|PERLIO_FUNCS_CAST|PerlIO * func
+Cast the pointer C<func> to be of type S<C<PerlIO_funcs *>>.
+
+=cut
+*/
#define PERLIO_FUNCS_DECL(funcs) const PerlIO_funcs funcs
#define PERLIO_FUNCS_CAST(funcs) (PerlIO_funcs*)(funcs)
diff --git a/Master/tlpkg/tlperl/lib/CORE/perliol.h b/Master/tlpkg/tlperl/lib/CORE/perliol.h
index 691e09533f7..e247ad60dde 100644
--- a/Master/tlpkg/tlperl/lib/CORE/perliol.h
+++ b/Master/tlpkg/tlperl/lib/CORE/perliol.h
@@ -114,9 +114,6 @@ EXTCONST PerlIO_funcs PerlIO_utf8;
EXTCONST PerlIO_funcs PerlIO_byte;
EXTCONST PerlIO_funcs PerlIO_raw;
EXTCONST PerlIO_funcs PerlIO_pending;
-#ifdef WIN32
-EXTCONST PerlIO_funcs PerlIO_win32;
-#endif
PERL_CALLCONV PerlIO *PerlIO_allocate(pTHX);
PERL_CALLCONV SV *PerlIO_arg_fetch(PerlIO_list_t *av, IV n);
#define PerlIOArg PerlIO_arg_fetch(layers,n)
diff --git a/Master/tlpkg/tlperl/lib/CORE/perlstatic.h b/Master/tlpkg/tlperl/lib/CORE/perlstatic.h
new file mode 100755
index 00000000000..a698de68bf5
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/CORE/perlstatic.h
@@ -0,0 +1,33 @@
+/* perlstatic.h
+ *
+ * 'I don't know half of you half as well as I should like; and I like less
+ * than half of you half as well as you deserve.'
+ *
+ * Copyright (C) 2020 by Larry Wall and others
+ *
+ * You may distribute under the terms of either the GNU General Public
+ * License or the Artistic License, as specified in the README file.
+ *
+ * This file is a home for static functions that we don't consider suitable for
+ * inlining, but for which giving the compiler full knowledge of may be
+ * advantageous. Functions that have potential tail call optimizations are a
+ * likely component.
+
+ */
+
+/* saves machine code for a common noreturn idiom typically used in Newx*() */
+GCC_DIAG_IGNORE_DECL(-Wunused-function);
+
+STATIC void
+Perl_croak_memory_wrap(void)
+{
+ Perl_croak_nocontext("%s",PL_memory_wrap);
+}
+
+GCC_DIAG_RESTORE_DECL;
+
+
+/*
+ * ex: set ts=8 sts=4 sw=4 et:
+ */
+
diff --git a/Master/tlpkg/tlperl/lib/CORE/perlvars.h b/Master/tlpkg/tlperl/lib/CORE/perlvars.h
index c4a08e038bd..02085fea462 100644
--- a/Master/tlpkg/tlperl/lib/CORE/perlvars.h
+++ b/Master/tlpkg/tlperl/lib/CORE/perlvars.h
@@ -48,10 +48,6 @@ PERLVAR(G, thr_key, perl_key) /* key to retrieve per-thread struct */
/* XXX does anyone even use this? */
PERLVARI(G, do_undump, bool, FALSE) /* -u or dump seen? */
-#ifndef PERL_USE_SAFE_PUTENV
-PERLVARI(G, use_safe_putenv, bool, TRUE)
-#endif
-
#if defined(FAKE_PERSISTENT_SIGNAL_HANDLERS)||defined(FAKE_DEFAULT_SIGNAL_HANDLERS)
PERLVARI(G, sig_handlers_initted, int, 0)
#endif
@@ -106,13 +102,10 @@ PERLVARI(G, mmap_page_size, IV, 0)
PERLVAR(G, hints_mutex, perl_mutex) /* Mutex for refcounted he refcounting */
PERLVAR(G, env_mutex, perl_RnW1_mutex_t) /* Mutex for accessing ENV */
PERLVAR(G, locale_mutex, perl_mutex) /* Mutex related to locale handling */
-# ifndef USE_THREAD_SAFE_LOCALE
-PERLVAR(G, lc_numeric_mutex, perl_mutex) /* Mutex for switching LC_NUMERIC */
-# endif
#endif
#ifdef USE_POSIX_2008_LOCALE
-PERLVAR(G, C_locale_obj, locale_t)
+PERLVARI(G, C_locale_obj, locale_t, NULL)
#endif
PERLVARI(G, watch_pvx, char *, NULL)
@@ -173,9 +166,10 @@ PERLVAR(G, check_mutex, perl_mutex) /* Mutex for PL_check */
/* allocate a unique index to every module that calls MY_CXT_INIT */
-#ifdef PERL_IMPLICIT_CONTEXT
+#ifdef MULTIPLICITY
# ifdef USE_ITHREADS
PERLVAR(G, my_ctx_mutex, perl_mutex)
+PERLVARI(G, veto_switch_non_tTHX_context, int, FALSE)
# endif
PERLVARI(G, my_cxt_index, int, 0)
#endif
@@ -241,10 +235,107 @@ Instead, use the function L</wrap_keyword_plugin>.
*/
#if defined(USE_ITHREADS)
-PERLVAR(G, keyword_plugin_mutex, perl_mutex) /* Mutex for PL_keyword_plugin */
+PERLVAR(G, keyword_plugin_mutex, perl_mutex) /* Mutex for PL_keyword_plugin and PL_infix_plugin */
#endif
PERLVARI(G, keyword_plugin, Perl_keyword_plugin_t, Perl_keyword_plugin_standard)
+/*
+=for apidoc AmnUx|Perl_infix_plugin_t|PL_infix_plugin
+
+B<NOTE:> This API exists entirely for the purpose of making the CPAN module
+C<XS::Parse::Infix> work. It is not expected that additional modules will make
+use of it; rather, that they should use C<XS::Parse::Infix> to provide parsing
+of new infix operators.
+
+Function pointer, pointing at a function used to handle extended infix
+operators. The function should be declared as
+
+ int infix_plugin_function(pTHX_
+ char *opname, STRLEN oplen,
+ struct Perl_custom_infix **infix_ptr)
+
+The function is called from the tokenizer whenever a possible infix operator
+is seen. C<opname> points to the operator name in the parser's input buffer,
+and C<oplen> gives the I<maximum> number of bytes of it that should be
+consumed; it is not null-terminated. The function is expected to examine the
+operator name and possibly other state such as L<%^H|perlvar/%^H>, to
+determine whether it wants to handle the operator name.
+
+As compared to the single stage of C<PL_keyword_plugin>, parsing of additional
+infix operators occurs in three separate stages. This is because of the more
+complex interactions it has with the parser, to ensure that operator
+precedence rules work correctly. These stages are co-ordinated by the use of
+an additional information structure.
+
+If the function wants to handle the infix operator, it must set the variable
+pointed to by C<infix_ptr> to the address of a structure that provides this
+additional information about the subsequent parsing stages. If it does not,
+it should make a call to the next function in the chain.
+
+This structure has the following definition:
+
+ struct Perl_custom_infix {
+ enum Perl_custom_infix_precedence prec;
+ void (*parse)(pTHX_ SV **opdata,
+ struct Perl_custom_infix *);
+ OP *(*build_op)(pTHX_ SV **opdata, OP *lhs, OP *rhs,
+ struct Perl_custom_infix *);
+ };
+
+The function must then return an integer giving the number of bytes consumed
+by the name of this operator. In the case of an operator whose name is
+composed of identifier characters, this must be equal to C<oplen>. In the case
+of an operator named by non-identifier characters, this is permitted to be
+shorter than C<oplen>, and any additional characters after it will not be
+claimed by the infix operator but instead will be consumed by the tokenizer
+and parser as normal.
+
+If the optional C<parse> function is provided, it is called immediately by the
+parser to let the operator's definition consume any additional syntax from the
+source code. This should I<not> be used for normal operand parsing, but it may
+be useful when implementing things like parametric operators or meta-operators
+that consume more syntax themselves. This function may use the variable
+pointed to by C<opdata> to provide an SV containing additional data to be
+passed into the C<build_op> function later on.
+
+The information structure gives the operator precedence level in the C<prec>
+field. This is used to tell the parser how much of the surrounding syntax
+before and after should be considered as operands to the operator.
+
+The tokenizer and parser will then continue to operate as normal until enough
+additional input has been parsed to form both the left- and right-hand side
+operands to the operator, according to the precedence level. At this point the
+C<build_op> function is called, being passed the left- and right-hand operands
+as optree fragments. It is expected to combine them into the resulting optree
+fragment, which it should return.
+
+After the C<build_op> function has returned, if the variable pointed to by
+C<opdata> was set to a non-C<NULL> value, it will then be destroyed by calling
+C<SvREFCNT_dec()>.
+
+For thread safety, modules should not set this variable directly.
+Instead, use the function L</wrap_infix_plugin>.
+
+However, that all said, the introductory note above still applies. This
+variable is provided in core perl only for the benefit of the
+C<XS::Parse::Infix> module. That module acts as a central registry for infix
+operators, automatically handling things like deparse support and
+discovery/reflection, and these abilities only work because it knows all the
+registered operators. Other modules should not use this interpreter variable
+directly to implement them because then those central features would no longer
+work properly.
+
+Furthermore, it is likely that this (experimental) API will be replaced in a
+future Perl version by a more complete API that fully implements the central
+registry and other semantics currently provided by C<XS::Parse::Infix>, once
+the module has had sufficient experimental testing time. This current
+mechanism exists only as an interim measure to get to that stage.
+
+=cut
+*/
+
+PERLVARI(G, infix_plugin, Perl_infix_plugin_t, Perl_infix_plugin_standard)
+
PERLVARI(G, op_sequence, HV *, NULL) /* dump.c */
PERLVARI(G, op_seq, UV, 0) /* dump.c */
@@ -264,12 +355,13 @@ PERLVAR(G, malloc_mutex, perl_mutex) /* Mutex for malloc */
#endif
PERLVARI(G, hash_seed_set, bool, FALSE) /* perl.c */
-PERLVARA(G, hash_seed_w, PERL_HASH_SEED_WORDS, __PERL_HASH_WORD_TYPE) /* perl.c and hv.h */
+PERLVARA(G, hash_seed_w, PERL_HASH_SEED_WORDS, PVT__PERL_HASH_WORD_TYPE) /* perl.c and hv.h */
#if defined(PERL_HASH_STATE_BYTES)
-PERLVARA(G, hash_state_w, PERL_HASH_STATE_WORDS, __PERL_HASH_WORD_TYPE) /* perl.c and hv.h */
+PERLVARA(G, hash_state_w, PERL_HASH_STATE_WORDS, PVT__PERL_HASH_WORD_TYPE) /* perl.c and hv.h */
#endif
#if defined(PERL_USE_SINGLE_CHAR_HASH_CACHE)
-PERLVARA(G, hash_chars, (1+256) * sizeof(U32), unsigned char) /* perl.c and hv.h */
+#define PERL_SINGLE_CHAR_HASH_CACHE_ELEMS ((1+256) * sizeof(U32))
+PERLVARA(G, hash_chars, PERL_SINGLE_CHAR_HASH_CACHE_ELEMS, unsigned char) /* perl.c and hv.h */
#endif
/* The path separator can vary depending on whether we're running under DCL or
@@ -305,3 +397,6 @@ PERLVARI(G, strategy_socket, int, 0) /* doio.c */
PERLVARI(G, strategy_accept, int, 0) /* doio.c */
PERLVARI(G, strategy_pipe, int, 0) /* doio.c */
PERLVARI(G, strategy_socketpair, int, 0) /* doio.c */
+
+PERLVARI(G, my_environ, char **, NULL)
+PERLVARI(G, origenviron, char **, NULL)
diff --git a/Master/tlpkg/tlperl/lib/CORE/perly.h b/Master/tlpkg/tlperl/lib/CORE/perly.h
index 545cf3f6b03..f2f378affef 100644
--- a/Master/tlpkg/tlperl/lib/CORE/perly.h
+++ b/Master/tlpkg/tlperl/lib/CORE/perly.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
!!!!!!! DO NOT EDIT THIS FILE !!!!!!!
This file is built by regen_perly.pl from perly.y.
Any changes made here will be lost!
@@ -79,93 +79,111 @@ extern int yydebug;
PERLY_SLASH = 278,
PERLY_SNAIL = 279,
PERLY_STAR = 280,
- BAREWORD = 281,
- METHOD = 282,
- FUNCMETH = 283,
- THING = 284,
- PMFUNC = 285,
- PRIVATEREF = 286,
- QWLIST = 287,
- FUNC0OP = 288,
- FUNC0SUB = 289,
- UNIOPSUB = 290,
- LSTOPSUB = 291,
- PLUGEXPR = 292,
- PLUGSTMT = 293,
- LABEL = 294,
- FORMAT = 295,
- SUB = 296,
- SIGSUB = 297,
- ANONSUB = 298,
- ANON_SIGSUB = 299,
- PACKAGE = 300,
- USE = 301,
- WHILE = 302,
- UNTIL = 303,
- IF = 304,
- UNLESS = 305,
- ELSE = 306,
- ELSIF = 307,
- CONTINUE = 308,
- FOR = 309,
- GIVEN = 310,
- WHEN = 311,
- DEFAULT = 312,
- TRY = 313,
- CATCH = 314,
- LOOPEX = 315,
- DOTDOT = 316,
- YADAYADA = 317,
- FUNC0 = 318,
- FUNC1 = 319,
- FUNC = 320,
- UNIOP = 321,
- LSTOP = 322,
- MULOP = 323,
- ADDOP = 324,
- DOLSHARP = 325,
- DO = 326,
- HASHBRACK = 327,
- NOAMP = 328,
- LOCAL = 329,
- MY = 330,
- REQUIRE = 331,
- COLONATTR = 332,
- FORMLBRACK = 333,
- FORMRBRACK = 334,
- SUBLEXSTART = 335,
- SUBLEXEND = 336,
- PREC_LOW = 337,
- OROP = 338,
- ANDOP = 339,
- NOTOP = 340,
- ASSIGNOP = 341,
- PERLY_QUESTION_MARK = 342,
- PERLY_COLON = 343,
- OROR = 344,
- DORDOR = 345,
- ANDAND = 346,
- BITOROP = 347,
- BITANDOP = 348,
- CHEQOP = 349,
- NCEQOP = 350,
- CHRELOP = 351,
- NCRELOP = 352,
- SHIFTOP = 353,
- MATCHOP = 354,
- PERLY_EXCLAMATION_MARK = 355,
- PERLY_TILDE = 356,
- UMINUS = 357,
- REFGEN = 358,
- POWOP = 359,
- PREINC = 360,
- PREDEC = 361,
- POSTINC = 362,
- POSTDEC = 363,
- POSTJOIN = 364,
- ARROW = 365,
- PERLY_PAREN_CLOSE = 366,
- PERLY_PAREN_OPEN = 367
+ KW_FORMAT = 281,
+ KW_PACKAGE = 282,
+ KW_CLASS = 283,
+ KW_LOCAL = 284,
+ KW_MY = 285,
+ KW_FIELD = 286,
+ KW_IF = 287,
+ KW_ELSE = 288,
+ KW_ELSIF = 289,
+ KW_UNLESS = 290,
+ KW_FOR = 291,
+ KW_UNTIL = 292,
+ KW_WHILE = 293,
+ KW_CONTINUE = 294,
+ KW_GIVEN = 295,
+ KW_WHEN = 296,
+ KW_DEFAULT = 297,
+ KW_TRY = 298,
+ KW_CATCH = 299,
+ KW_FINALLY = 300,
+ KW_DEFER = 301,
+ KW_REQUIRE = 302,
+ KW_DO = 303,
+ KW_USE_or_NO = 304,
+ KW_SUB_named = 305,
+ KW_SUB_named_sig = 306,
+ KW_SUB_anon = 307,
+ KW_SUB_anon_sig = 308,
+ KW_METHOD_named = 309,
+ KW_METHOD_anon = 310,
+ BAREWORD = 311,
+ METHCALL0 = 312,
+ METHCALL = 313,
+ THING = 314,
+ PMFUNC = 315,
+ PRIVATEREF = 316,
+ QWLIST = 317,
+ FUNC0OP = 318,
+ FUNC0SUB = 319,
+ UNIOPSUB = 320,
+ LSTOPSUB = 321,
+ PLUGEXPR = 322,
+ PLUGSTMT = 323,
+ LABEL = 324,
+ LOOPEX = 325,
+ DOTDOT = 326,
+ YADAYADA = 327,
+ FUNC0 = 328,
+ FUNC1 = 329,
+ FUNC = 330,
+ UNIOP = 331,
+ LSTOP = 332,
+ POWOP = 333,
+ MULOP = 334,
+ ADDOP = 335,
+ DOLSHARP = 336,
+ HASHBRACK = 337,
+ NOAMP = 338,
+ COLONATTR = 339,
+ FORMLBRACK = 340,
+ FORMRBRACK = 341,
+ SUBLEXSTART = 342,
+ SUBLEXEND = 343,
+ PHASER = 344,
+ PREC_LOW = 345,
+ PLUGIN_LOW_OP = 346,
+ OROP = 347,
+ PLUGIN_LOGICAL_OR_LOW_OP = 348,
+ ANDOP = 349,
+ PLUGIN_LOGICAL_AND_LOW_OP = 350,
+ NOTOP = 351,
+ ASSIGNOP = 352,
+ PLUGIN_ASSIGN_OP = 353,
+ PERLY_QUESTION_MARK = 354,
+ PERLY_COLON = 355,
+ OROR = 356,
+ DORDOR = 357,
+ PLUGIN_LOGICAL_OR_OP = 358,
+ ANDAND = 359,
+ PLUGIN_LOGICAL_AND_OP = 360,
+ BITOROP = 361,
+ BITANDOP = 362,
+ CHEQOP = 363,
+ NCEQOP = 364,
+ CHRELOP = 365,
+ NCRELOP = 366,
+ PLUGIN_REL_OP = 367,
+ SHIFTOP = 368,
+ PLUGIN_ADD_OP = 369,
+ PLUGIN_MUL_OP = 370,
+ MATCHOP = 371,
+ PERLY_EXCLAMATION_MARK = 372,
+ PERLY_TILDE = 373,
+ UMINUS = 374,
+ REFGEN = 375,
+ PLUGIN_POW_OP = 376,
+ PREINC = 377,
+ PREDEC = 378,
+ POSTINC = 379,
+ POSTDEC = 380,
+ POSTJOIN = 381,
+ PLUGIN_HIGH_OP = 382,
+ ARROW = 383,
+ PERLY_PAREN_CLOSE = 384,
+ PERLY_PAREN_OPEN = 385
};
#endif
@@ -177,10 +195,10 @@ S_is_opval_token(int type) {
case BAREWORD:
case FUNC0OP:
case FUNC0SUB:
- case FUNCMETH:
case LABEL:
case LSTOPSUB:
- case METHOD:
+ case METHCALL:
+ case METHCALL0:
case PLUGEXPR:
case PLUGSTMT:
case PMFUNC:
@@ -201,7 +219,7 @@ union YYSTYPE
I32 ival; /* __DEFAULT__ (marker for regen_perly.pl;
must always be 1st union member) */
- char *pval;
+ void *pval;
OP *opval;
GV *gvval;
@@ -218,6 +236,6 @@ int yyparse (void);
/* Generated from:
- * 427b422b0ce1154d834dc461973a3254729575694f98ab600032f67ccab7b9e5 perly.y
+ * 0a5fcd15cf0b7afb57ade6ceaf68037a38dd194acd9d60d3e4ad99c15233af75 perly.y
* acf1cbfd2545faeaaa58b1cf0cf9d7f98b5be0752eb7a54528ef904a9e2e1ca7 regen_perly.pl
- * ex: set ro: */
+ * ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/pp.h b/Master/tlpkg/tlperl/lib/CORE/pp.h
index cea956db407..65d07ce4d9f 100644
--- a/Master/tlpkg/tlperl/lib/CORE/pp.h
+++ b/Master/tlpkg/tlperl/lib/CORE/pp.h
@@ -24,28 +24,28 @@ Stack marker variable for the XSUB. See C<L</dMARK>>.
Opening bracket for arguments on a callback. See C<L</PUTBACK>> and
L<perlcall>.
-=for apidoc Amns||dSP
+=for apidoc Amn;||dSP
Declares a local copy of perl's stack pointer for the XSUB, available via
the C<SP> macro. See C<L</SP>>.
-=for apidoc ms||djSP
+=for apidoc m;||djSP
Declare Just C<SP>. This is actually identical to C<dSP>, and declares
a local copy of perl's stack pointer, available via the C<SP> macro.
See C<L<perlapi/SP>>. (Available for backward source code compatibility with
the old (Perl 5.005) thread model.)
-=for apidoc Amns||dMARK
+=for apidoc Amn;||dMARK
Declare a stack marker variable, C<mark>, for the XSUB. See C<L</MARK>> and
C<L</dORIGMARK>>.
-=for apidoc Amns||dORIGMARK
+=for apidoc Amn;||dORIGMARK
Saves the original stack mark for the XSUB. See C<L</ORIGMARK>>.
=for apidoc AmnU||ORIGMARK
The original stack mark for the XSUB. See C<L</dORIGMARK>>.
-=for apidoc Amns||SPAGAIN
+=for apidoc Amn;||SPAGAIN
Refetch the stack pointer. Used after a callback. See L<perlcall>.
=cut */
@@ -55,7 +55,7 @@ Refetch the stack pointer. Used after a callback. See L<perlcall>.
#define MARK mark
/*
-=for apidoc Amns||TARG
+=for apidoc Amn;||TARG
C<TARG> is short for "target". It is an entry in the pad that an OPs
C<op_targ> refers to. It is scratchpad space, often used as a return
@@ -103,8 +103,8 @@ value for the OP, but some use it for other purposes.
#define GETTARGET targ = PAD_SV(PL_op->op_targ)
/*
-=for apidoc Amns||dTARGET
-Declare that this function uses C<TARG>
+=for apidoc Amn;||dTARGET
+Declare that this function uses C<TARG>, and initializes it
=cut
*/
@@ -119,7 +119,7 @@ Declare that this function uses C<TARG>
#define DIE return Perl_die
/*
-=for apidoc Amns||PUTBACK
+=for apidoc Amn;||PUTBACK
Closing bracket for XSUB arguments. This is usually handled by C<xsubpp>.
See C<L</PUSHMARK>> and L<perlcall> for other uses.
@@ -201,6 +201,10 @@ C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to declare it. Do not
call multiple C<TARG>-oriented macros to return lists from XSUB's - see
C<L</mPUSHp>> instead. See also C<L</XPUSHp>> and C<L</mXPUSHp>>.
+=for apidoc Am|void|PUSHpvs|"literal string"
+A variation on C<PUSHp> that takes a literal string and calculates its size
+directly.
+
=for apidoc Am|void|PUSHn|NV nv
Push a double onto the stack. The stack must have room for this element.
Handles 'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be
@@ -234,6 +238,10 @@ C<dTARGET> or C<dXSTARG> should be called to declare it. Do not call
multiple C<TARG>-oriented macros to return lists from XSUB's - see
C<L</mXPUSHp>> instead. See also C<L</PUSHp>> and C<L</mPUSHp>>.
+=for apidoc Am|void|XPUSHpvs|"literal string"
+A variation on C<XPUSHp> that takes a literal string and calculates its size
+directly.
+
=for apidoc Am|void|XPUSHn|NV nv
Push a double onto the stack, extending the stack if necessary. Handles
'set' magic. Uses C<TARG>, so C<dTARGET> or C<dXSTARG> should be called to
@@ -270,6 +278,10 @@ Push a string onto the stack. The stack must have room for this element.
The C<len> indicates the length of the string. Does not use C<TARG>.
See also C<L</PUSHp>>, C<L</mXPUSHp>> and C<L</XPUSHp>>.
+=for apidoc Am|void|mPUSHpvs|"literal string"
+A variation on C<mPUSHp> that takes a literal string and calculates its size
+directly.
+
=for apidoc Am|void|mPUSHn|NV nv
Push a double onto the stack. The stack must have room for this element.
Does not use C<TARG>. See also C<L</PUSHn>>, C<L</mXPUSHn>> and C<L</XPUSHn>>.
@@ -297,6 +309,10 @@ Push a string onto the stack, extending the stack if necessary. The C<len>
indicates the length of the string. Does not use C<TARG>. See also
C<L</XPUSHp>>, C<mPUSHp> and C<PUSHp>.
+=for apidoc Am|void|mXPUSHpvs|"literal string"
+A variation on C<mXPUSHp> that takes a literal string and calculates its size
+directly.
+
=for apidoc Am|void|mXPUSHn|NV nv
Push a double onto the stack, extending the stack if necessary.
Does not use C<TARG>. See also C<L</XPUSHn>>, C<L</mPUSHn>> and C<L</PUSHn>>.
@@ -316,11 +332,11 @@ Does not use C<TARG>. See also C<L</XPUSHu>>, C<L</mPUSHu>> and C<L</PUSHu>>.
* requested to be extended (which is likely to be less than PL_stack_max)
*/
#if defined DEBUGGING && !defined DEBUGGING_RE_ONLY
-# define EXTEND_HWM_SET(p, n) \
- STMT_START { \
- SSize_t ix = (p) - PL_stack_base + (n); \
- if (ix > PL_curstackinfo->si_stack_hwm) \
- PL_curstackinfo->si_stack_hwm = ix; \
+# define EXTEND_HWM_SET(p, n) \
+ STMT_START { \
+ SSize_t extend_hwm_set_ix = (p) - PL_stack_base + (n); \
+ if (extend_hwm_set_ix > PL_curstackinfo->si_stack_hwm) \
+ PL_curstackinfo->si_stack_hwm = extend_hwm_set_ix; \
} STMT_END
#else
# define EXTEND_HWM_SET(p, n) NOOP
@@ -382,7 +398,7 @@ Does not use C<TARG>. See also C<L</XPUSHu>>, C<L</mPUSHu>> and C<L</PUSHu>>.
# define EXTEND_SKIP(p, n) STMT_START { \
EXTEND_HWM_SET(p, n); \
assert(!_EXTEND_NEEDS_GROW(p,n)); \
- } STMT_END
+ } STMT_END
# define EXTEND(p,n) STMT_START { \
@@ -390,7 +406,8 @@ Does not use C<TARG>. See also C<L</XPUSHu>>, C<L</mPUSHu>> and C<L</PUSHu>>.
if (UNLIKELY(_EXTEND_NEEDS_GROW(p,n))) { \
sp = stack_grow(sp,p,_EXTEND_SAFE_N(n)); \
PERL_UNUSED_VAR(sp); \
- } } STMT_END
+ } \
+ } STMT_END
/* Same thing, but update mark register too. */
# define MEXTEND(p,n) STMT_START { \
EXTEND_HWM_SET(p, n); \
@@ -399,7 +416,8 @@ Does not use C<TARG>. See also C<L</XPUSHu>>, C<L</mPUSHu>> and C<L</PUSHu>>.
sp = stack_grow(sp,p,_EXTEND_SAFE_N(n)); \
mark = PL_stack_base + markoff; \
PERL_UNUSED_VAR(sp); \
- } } STMT_END
+ } \
+ } STMT_END
#endif
@@ -472,6 +490,7 @@ Does not use C<TARG>. See also C<L</XPUSHu>>, C<L</mPUSHu>> and C<L</PUSHu>>.
#define PUSHs(s) (*++sp = (s))
#define PUSHTARG STMT_START { SvSETMAGIC(TARG); PUSHs(TARG); } STMT_END
#define PUSHp(p,l) STMT_START { sv_setpvn(TARG, (p), (l)); PUSHTARG; } STMT_END
+#define PUSHpvs(s) PUSHp("" s "", sizeof(s)-1)
#define PUSHn(n) STMT_START { TARGn(n,1); PUSHs(TARG); } STMT_END
#define PUSHi(i) STMT_START { TARGi(i,1); PUSHs(TARG); } STMT_END
#define PUSHu(u) STMT_START { TARGu(u,1); PUSHs(TARG); } STMT_END
@@ -479,6 +498,7 @@ Does not use C<TARG>. See also C<L</XPUSHu>>, C<L</mPUSHu>> and C<L</PUSHu>>.
#define XPUSHs(s) STMT_START { EXTEND(sp,1); *++sp = (s); } STMT_END
#define XPUSHTARG STMT_START { SvSETMAGIC(TARG); XPUSHs(TARG); } STMT_END
#define XPUSHp(p,l) STMT_START { sv_setpvn(TARG, (p), (l)); XPUSHTARG; } STMT_END
+#define XPUSHpvs(s) XPUSHp("" s "", sizeof(s)-1)
#define XPUSHn(n) STMT_START { TARGn(n,1); XPUSHs(TARG); } STMT_END
#define XPUSHi(i) STMT_START { TARGi(i,1); XPUSHs(TARG); } STMT_END
#define XPUSHu(u) STMT_START { TARGu(u,1); XPUSHs(TARG); } STMT_END
@@ -487,6 +507,7 @@ Does not use C<TARG>. See also C<L</XPUSHu>>, C<L</mPUSHu>> and C<L</PUSHu>>.
#define mPUSHs(s) PUSHs(sv_2mortal(s))
#define PUSHmortal PUSHs(sv_newmortal())
#define mPUSHp(p,l) PUSHs(newSVpvn_flags((p), (l), SVs_TEMP))
+#define mPUSHpvs(s) mPUSHp("" s "", sizeof(s)-1)
#define mPUSHn(n) sv_setnv(PUSHmortal, (NV)(n))
#define mPUSHi(i) sv_setiv(PUSHmortal, (IV)(i))
#define mPUSHu(u) sv_setuv(PUSHmortal, (UV)(u))
@@ -494,6 +515,7 @@ Does not use C<TARG>. See also C<L</XPUSHu>>, C<L</mPUSHu>> and C<L</PUSHu>>.
#define mXPUSHs(s) XPUSHs(sv_2mortal(s))
#define XPUSHmortal XPUSHs(sv_newmortal())
#define mXPUSHp(p,l) STMT_START { EXTEND(sp,1); mPUSHp((p), (l)); } STMT_END
+#define mXPUSHpvs(s) mXPUSHp("" s "", sizeof(s)-1)
#define mXPUSHn(n) STMT_START { EXTEND(sp,1); mPUSHn(n); } STMT_END
#define mXPUSHi(i) STMT_START { EXTEND(sp,1); mPUSHi(i); } STMT_END
#define mXPUSHu(u) STMT_START { EXTEND(sp,1); mPUSHu(u); } STMT_END
@@ -612,7 +634,7 @@ Does not use C<TARG>. See also C<L</XPUSHu>>, C<L</mPUSHu>> and C<L</PUSHu>>.
if (gimme == G_VOID) { \
NOOP; \
} \
- else if (gimme == G_ARRAY) { \
+ else if (gimme == G_LIST) { \
SSize_t i; \
SSize_t len; \
assert(SvTYPE(tmpsv) == SVt_PVAV); \
@@ -682,7 +704,7 @@ True if this op will be the return value of an lvalue subroutine
/* Used in various places that need to dereference a glob or globref */
# define MAYBE_DEREF_GV_flags(sv,phlags) \
( \
- (void)(phlags & SV_GMAGIC && (SvGETMAGIC(sv),0)), \
+ (void)(((phlags) & SV_GMAGIC) && (SvGETMAGIC(sv),0)), \
isGV_with_GP(sv) \
? (GV *)(sv) \
: SvROK(sv) && SvTYPE(SvRV(sv)) <= SVt_PVLV && \
diff --git a/Master/tlpkg/tlperl/lib/CORE/pp_proto.h b/Master/tlpkg/tlperl/lib/CORE/pp_proto.h
index a9bda73e3ce..a3a8f455186 100644
--- a/Master/tlpkg/tlperl/lib/CORE/pp_proto.h
+++ b/Master/tlpkg/tlperl/lib/CORE/pp_proto.h
@@ -1,307 +1,324 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
!!!!!!! DO NOT EDIT THIS FILE !!!!!!!
This file is built by opcode.pl from its data.
Any changes made here will be lost!
*/
-PERL_CALLCONV OP *Perl_do_kv(pTHX);
-PERL_CALLCONV OP *Perl_pp_aassign(pTHX);
-PERL_CALLCONV OP *Perl_pp_abs(pTHX);
-PERL_CALLCONV OP *Perl_pp_accept(pTHX);
-PERL_CALLCONV OP *Perl_pp_add(pTHX);
-PERL_CALLCONV OP *Perl_pp_aeach(pTHX);
-PERL_CALLCONV OP *Perl_pp_aelem(pTHX);
-PERL_CALLCONV OP *Perl_pp_aelemfast(pTHX);
-PERL_CALLCONV OP *Perl_pp_akeys(pTHX);
-PERL_CALLCONV OP *Perl_pp_alarm(pTHX);
-PERL_CALLCONV OP *Perl_pp_and(pTHX);
-PERL_CALLCONV OP *Perl_pp_anoncode(pTHX);
-PERL_CALLCONV OP *Perl_pp_anonconst(pTHX);
-PERL_CALLCONV OP *Perl_pp_anonhash(pTHX);
-PERL_CALLCONV OP *Perl_pp_anonlist(pTHX);
-PERL_CALLCONV OP *Perl_pp_argcheck(pTHX);
-PERL_CALLCONV OP *Perl_pp_argdefelem(pTHX);
-PERL_CALLCONV OP *Perl_pp_argelem(pTHX);
-PERL_CALLCONV OP *Perl_pp_aslice(pTHX);
-PERL_CALLCONV OP *Perl_pp_atan2(pTHX);
-PERL_CALLCONV OP *Perl_pp_av2arylen(pTHX);
-PERL_CALLCONV OP *Perl_pp_avhvswitch(pTHX);
-PERL_CALLCONV OP *Perl_pp_backtick(pTHX);
-PERL_CALLCONV OP *Perl_pp_bind(pTHX);
-PERL_CALLCONV OP *Perl_pp_binmode(pTHX);
-PERL_CALLCONV OP *Perl_pp_bit_and(pTHX);
-PERL_CALLCONV OP *Perl_pp_bit_or(pTHX);
-PERL_CALLCONV OP *Perl_pp_bless(pTHX);
-PERL_CALLCONV OP *Perl_pp_break(pTHX);
-PERL_CALLCONV OP *Perl_pp_caller(pTHX);
-PERL_CALLCONV OP *Perl_pp_catch(pTHX);
-PERL_CALLCONV OP *Perl_pp_chdir(pTHX);
-PERL_CALLCONV OP *Perl_pp_chop(pTHX);
-PERL_CALLCONV OP *Perl_pp_chown(pTHX);
-PERL_CALLCONV OP *Perl_pp_chr(pTHX);
-PERL_CALLCONV OP *Perl_pp_chroot(pTHX);
-PERL_CALLCONV OP *Perl_pp_clonecv(pTHX);
-PERL_CALLCONV OP *Perl_pp_close(pTHX);
-PERL_CALLCONV OP *Perl_pp_closedir(pTHX);
-PERL_CALLCONV OP *Perl_pp_cmpchain_and(pTHX);
-PERL_CALLCONV OP *Perl_pp_cmpchain_dup(pTHX);
-PERL_CALLCONV OP *Perl_pp_complement(pTHX);
-PERL_CALLCONV OP *Perl_pp_concat(pTHX);
-PERL_CALLCONV OP *Perl_pp_cond_expr(pTHX);
-PERL_CALLCONV OP *Perl_pp_const(pTHX);
-PERL_CALLCONV OP *Perl_pp_continue(pTHX);
-PERL_CALLCONV OP *Perl_pp_coreargs(pTHX);
-PERL_CALLCONV OP *Perl_pp_crypt(pTHX);
-PERL_CALLCONV OP *Perl_pp_dbmopen(pTHX);
-PERL_CALLCONV OP *Perl_pp_dbstate(pTHX);
-PERL_CALLCONV OP *Perl_pp_defined(pTHX);
-PERL_CALLCONV OP *Perl_pp_delete(pTHX);
-PERL_CALLCONV OP *Perl_pp_die(pTHX);
-PERL_CALLCONV OP *Perl_pp_divide(pTHX);
-PERL_CALLCONV OP *Perl_pp_each(pTHX);
-PERL_CALLCONV OP *Perl_pp_ehostent(pTHX);
-PERL_CALLCONV OP *Perl_pp_enter(pTHX);
-PERL_CALLCONV OP *Perl_pp_entereval(pTHX);
-PERL_CALLCONV OP *Perl_pp_entergiven(pTHX);
-PERL_CALLCONV OP *Perl_pp_enteriter(pTHX);
-PERL_CALLCONV OP *Perl_pp_enterloop(pTHX);
-PERL_CALLCONV OP *Perl_pp_entersub(pTHX);
-PERL_CALLCONV OP *Perl_pp_entertry(pTHX);
-PERL_CALLCONV OP *Perl_pp_entertrycatch(pTHX);
-PERL_CALLCONV OP *Perl_pp_enterwhen(pTHX);
-PERL_CALLCONV OP *Perl_pp_enterwrite(pTHX);
-PERL_CALLCONV OP *Perl_pp_eof(pTHX);
-PERL_CALLCONV OP *Perl_pp_eq(pTHX);
-PERL_CALLCONV OP *Perl_pp_exec(pTHX);
-PERL_CALLCONV OP *Perl_pp_exists(pTHX);
-PERL_CALLCONV OP *Perl_pp_exit(pTHX);
-PERL_CALLCONV OP *Perl_pp_fc(pTHX);
-PERL_CALLCONV OP *Perl_pp_fileno(pTHX);
-PERL_CALLCONV OP *Perl_pp_flip(pTHX);
-PERL_CALLCONV OP *Perl_pp_flock(pTHX);
-PERL_CALLCONV OP *Perl_pp_flop(pTHX);
-PERL_CALLCONV OP *Perl_pp_fork(pTHX);
-PERL_CALLCONV OP *Perl_pp_formline(pTHX);
-PERL_CALLCONV OP *Perl_pp_ftis(pTHX);
-PERL_CALLCONV OP *Perl_pp_ftlink(pTHX);
-PERL_CALLCONV OP *Perl_pp_ftrowned(pTHX);
-PERL_CALLCONV OP *Perl_pp_ftrread(pTHX);
-PERL_CALLCONV OP *Perl_pp_fttext(pTHX);
-PERL_CALLCONV OP *Perl_pp_fttty(pTHX);
-PERL_CALLCONV OP *Perl_pp_ge(pTHX);
-PERL_CALLCONV OP *Perl_pp_gelem(pTHX);
-PERL_CALLCONV OP *Perl_pp_getc(pTHX);
-PERL_CALLCONV OP *Perl_pp_getlogin(pTHX);
-PERL_CALLCONV OP *Perl_pp_getpeername(pTHX);
-PERL_CALLCONV OP *Perl_pp_getpgrp(pTHX);
-PERL_CALLCONV OP *Perl_pp_getppid(pTHX);
-PERL_CALLCONV OP *Perl_pp_getpriority(pTHX);
-PERL_CALLCONV OP *Perl_pp_ggrent(pTHX);
-PERL_CALLCONV OP *Perl_pp_ghostent(pTHX);
-PERL_CALLCONV OP *Perl_pp_glob(pTHX);
-PERL_CALLCONV OP *Perl_pp_gmtime(pTHX);
-PERL_CALLCONV OP *Perl_pp_gnetent(pTHX);
-PERL_CALLCONV OP *Perl_pp_goto(pTHX);
-PERL_CALLCONV OP *Perl_pp_gprotoent(pTHX);
-PERL_CALLCONV OP *Perl_pp_gpwent(pTHX);
-PERL_CALLCONV OP *Perl_pp_grepstart(pTHX);
-PERL_CALLCONV OP *Perl_pp_grepwhile(pTHX);
-PERL_CALLCONV OP *Perl_pp_gservent(pTHX);
-PERL_CALLCONV OP *Perl_pp_gt(pTHX);
-PERL_CALLCONV OP *Perl_pp_gv(pTHX);
-PERL_CALLCONV OP *Perl_pp_gvsv(pTHX);
-PERL_CALLCONV OP *Perl_pp_helem(pTHX);
-PERL_CALLCONV OP *Perl_pp_hintseval(pTHX);
-PERL_CALLCONV OP *Perl_pp_hslice(pTHX);
-PERL_CALLCONV OP *Perl_pp_i_add(pTHX);
-PERL_CALLCONV OP *Perl_pp_i_divide(pTHX);
-PERL_CALLCONV OP *Perl_pp_i_eq(pTHX);
-PERL_CALLCONV OP *Perl_pp_i_ge(pTHX);
-PERL_CALLCONV OP *Perl_pp_i_gt(pTHX);
-PERL_CALLCONV OP *Perl_pp_i_le(pTHX);
-PERL_CALLCONV OP *Perl_pp_i_lt(pTHX);
-PERL_CALLCONV OP *Perl_pp_i_modulo(pTHX);
-PERL_CALLCONV OP *Perl_pp_i_multiply(pTHX);
-PERL_CALLCONV OP *Perl_pp_i_ncmp(pTHX);
-PERL_CALLCONV OP *Perl_pp_i_ne(pTHX);
-PERL_CALLCONV OP *Perl_pp_i_negate(pTHX);
-PERL_CALLCONV OP *Perl_pp_i_subtract(pTHX);
-PERL_CALLCONV OP *Perl_pp_index(pTHX);
-PERL_CALLCONV OP *Perl_pp_int(pTHX);
-PERL_CALLCONV OP *Perl_pp_introcv(pTHX);
-PERL_CALLCONV OP *Perl_pp_ioctl(pTHX);
-PERL_CALLCONV OP *Perl_pp_isa(pTHX);
-PERL_CALLCONV OP *Perl_pp_iter(pTHX);
-PERL_CALLCONV OP *Perl_pp_join(pTHX);
-PERL_CALLCONV OP *Perl_pp_kvaslice(pTHX);
-PERL_CALLCONV OP *Perl_pp_kvhslice(pTHX);
-PERL_CALLCONV OP *Perl_pp_last(pTHX);
-PERL_CALLCONV OP *Perl_pp_lc(pTHX);
-PERL_CALLCONV OP *Perl_pp_le(pTHX);
-PERL_CALLCONV OP *Perl_pp_leave(pTHX);
-PERL_CALLCONV OP *Perl_pp_leaveeval(pTHX);
-PERL_CALLCONV OP *Perl_pp_leavegiven(pTHX);
-PERL_CALLCONV OP *Perl_pp_leaveloop(pTHX);
-PERL_CALLCONV OP *Perl_pp_leavesub(pTHX);
-PERL_CALLCONV OP *Perl_pp_leavesublv(pTHX);
-PERL_CALLCONV OP *Perl_pp_leavetry(pTHX);
-PERL_CALLCONV OP *Perl_pp_leavetrycatch(pTHX);
-PERL_CALLCONV OP *Perl_pp_leavewhen(pTHX);
-PERL_CALLCONV OP *Perl_pp_leavewrite(pTHX);
-PERL_CALLCONV OP *Perl_pp_left_shift(pTHX);
-PERL_CALLCONV OP *Perl_pp_length(pTHX);
-PERL_CALLCONV OP *Perl_pp_link(pTHX);
-PERL_CALLCONV OP *Perl_pp_list(pTHX);
-PERL_CALLCONV OP *Perl_pp_listen(pTHX);
-PERL_CALLCONV OP *Perl_pp_lock(pTHX);
-PERL_CALLCONV OP *Perl_pp_lslice(pTHX);
-PERL_CALLCONV OP *Perl_pp_lt(pTHX);
-PERL_CALLCONV OP *Perl_pp_lvavref(pTHX);
-PERL_CALLCONV OP *Perl_pp_lvref(pTHX);
-PERL_CALLCONV OP *Perl_pp_lvrefslice(pTHX);
-PERL_CALLCONV OP *Perl_pp_mapwhile(pTHX);
-PERL_CALLCONV OP *Perl_pp_match(pTHX);
-PERL_CALLCONV OP *Perl_pp_method(pTHX);
-PERL_CALLCONV OP *Perl_pp_method_named(pTHX);
-PERL_CALLCONV OP *Perl_pp_method_redir(pTHX);
-PERL_CALLCONV OP *Perl_pp_method_redir_super(pTHX);
-PERL_CALLCONV OP *Perl_pp_method_super(pTHX);
-PERL_CALLCONV OP *Perl_pp_mkdir(pTHX);
-PERL_CALLCONV OP *Perl_pp_modulo(pTHX);
-PERL_CALLCONV OP *Perl_pp_multiconcat(pTHX);
-PERL_CALLCONV OP *Perl_pp_multideref(pTHX);
-PERL_CALLCONV OP *Perl_pp_multiply(pTHX);
-PERL_CALLCONV OP *Perl_pp_nbit_and(pTHX);
-PERL_CALLCONV OP *Perl_pp_nbit_or(pTHX);
-PERL_CALLCONV OP *Perl_pp_ncmp(pTHX);
-PERL_CALLCONV OP *Perl_pp_ncomplement(pTHX);
-PERL_CALLCONV OP *Perl_pp_ne(pTHX);
-PERL_CALLCONV OP *Perl_pp_negate(pTHX);
-PERL_CALLCONV OP *Perl_pp_next(pTHX);
-PERL_CALLCONV OP *Perl_pp_nextstate(pTHX);
-PERL_CALLCONV OP *Perl_pp_not(pTHX);
-PERL_CALLCONV OP *Perl_pp_null(pTHX);
-PERL_CALLCONV OP *Perl_pp_oct(pTHX);
-PERL_CALLCONV OP *Perl_pp_once(pTHX);
-PERL_CALLCONV OP *Perl_pp_open(pTHX);
-PERL_CALLCONV OP *Perl_pp_open_dir(pTHX);
-PERL_CALLCONV OP *Perl_pp_or(pTHX);
-PERL_CALLCONV OP *Perl_pp_ord(pTHX);
-PERL_CALLCONV OP *Perl_pp_pack(pTHX);
-PERL_CALLCONV OP *Perl_pp_padav(pTHX);
-PERL_CALLCONV OP *Perl_pp_padcv(pTHX);
-PERL_CALLCONV OP *Perl_pp_padhv(pTHX);
-PERL_CALLCONV OP *Perl_pp_padrange(pTHX);
-PERL_CALLCONV OP *Perl_pp_padsv(pTHX);
-PERL_CALLCONV OP *Perl_pp_pipe_op(pTHX);
-PERL_CALLCONV OP *Perl_pp_poptry(pTHX);
-PERL_CALLCONV OP *Perl_pp_pos(pTHX);
-PERL_CALLCONV OP *Perl_pp_postdec(pTHX);
-PERL_CALLCONV OP *Perl_pp_postinc(pTHX);
-PERL_CALLCONV OP *Perl_pp_pow(pTHX);
-PERL_CALLCONV OP *Perl_pp_predec(pTHX);
-PERL_CALLCONV OP *Perl_pp_preinc(pTHX);
-PERL_CALLCONV OP *Perl_pp_print(pTHX);
-PERL_CALLCONV OP *Perl_pp_prototype(pTHX);
-PERL_CALLCONV OP *Perl_pp_prtf(pTHX);
-PERL_CALLCONV OP *Perl_pp_push(pTHX);
-PERL_CALLCONV OP *Perl_pp_pushmark(pTHX);
-PERL_CALLCONV OP *Perl_pp_qr(pTHX);
-PERL_CALLCONV OP *Perl_pp_quotemeta(pTHX);
-PERL_CALLCONV OP *Perl_pp_rand(pTHX);
-PERL_CALLCONV OP *Perl_pp_range(pTHX);
-PERL_CALLCONV OP *Perl_pp_rcatline(pTHX);
-PERL_CALLCONV OP *Perl_pp_readdir(pTHX);
-PERL_CALLCONV OP *Perl_pp_readline(pTHX);
-PERL_CALLCONV OP *Perl_pp_readlink(pTHX);
-PERL_CALLCONV OP *Perl_pp_redo(pTHX);
-PERL_CALLCONV OP *Perl_pp_ref(pTHX);
-PERL_CALLCONV OP *Perl_pp_refassign(pTHX);
-PERL_CALLCONV OP *Perl_pp_refgen(pTHX);
-PERL_CALLCONV OP *Perl_pp_regcomp(pTHX);
-PERL_CALLCONV OP *Perl_pp_regcreset(pTHX);
-PERL_CALLCONV OP *Perl_pp_rename(pTHX);
-PERL_CALLCONV OP *Perl_pp_repeat(pTHX);
-PERL_CALLCONV OP *Perl_pp_require(pTHX);
-PERL_CALLCONV OP *Perl_pp_reset(pTHX);
-PERL_CALLCONV OP *Perl_pp_return(pTHX);
-PERL_CALLCONV OP *Perl_pp_reverse(pTHX);
-PERL_CALLCONV OP *Perl_pp_rewinddir(pTHX);
-PERL_CALLCONV OP *Perl_pp_right_shift(pTHX);
-PERL_CALLCONV OP *Perl_pp_rmdir(pTHX);
-PERL_CALLCONV OP *Perl_pp_runcv(pTHX);
-PERL_CALLCONV OP *Perl_pp_rv2av(pTHX);
-PERL_CALLCONV OP *Perl_pp_rv2cv(pTHX);
-PERL_CALLCONV OP *Perl_pp_rv2gv(pTHX);
-PERL_CALLCONV OP *Perl_pp_rv2sv(pTHX);
-PERL_CALLCONV OP *Perl_pp_sassign(pTHX);
-PERL_CALLCONV OP *Perl_pp_sbit_and(pTHX);
-PERL_CALLCONV OP *Perl_pp_sbit_or(pTHX);
-PERL_CALLCONV OP *Perl_pp_schop(pTHX);
-PERL_CALLCONV OP *Perl_pp_scmp(pTHX);
-PERL_CALLCONV OP *Perl_pp_scomplement(pTHX);
-PERL_CALLCONV OP *Perl_pp_seekdir(pTHX);
-PERL_CALLCONV OP *Perl_pp_select(pTHX);
-PERL_CALLCONV OP *Perl_pp_semctl(pTHX);
-PERL_CALLCONV OP *Perl_pp_semget(pTHX);
-PERL_CALLCONV OP *Perl_pp_seq(pTHX);
-PERL_CALLCONV OP *Perl_pp_setpgrp(pTHX);
-PERL_CALLCONV OP *Perl_pp_setpriority(pTHX);
-PERL_CALLCONV OP *Perl_pp_shift(pTHX);
-PERL_CALLCONV OP *Perl_pp_shmwrite(pTHX);
-PERL_CALLCONV OP *Perl_pp_shostent(pTHX);
-PERL_CALLCONV OP *Perl_pp_shutdown(pTHX);
-PERL_CALLCONV OP *Perl_pp_sin(pTHX);
-PERL_CALLCONV OP *Perl_pp_sle(pTHX);
-PERL_CALLCONV OP *Perl_pp_sleep(pTHX);
-PERL_CALLCONV OP *Perl_pp_smartmatch(pTHX);
-PERL_CALLCONV OP *Perl_pp_sne(pTHX);
-PERL_CALLCONV OP *Perl_pp_socket(pTHX);
-PERL_CALLCONV OP *Perl_pp_sockpair(pTHX);
-PERL_CALLCONV OP *Perl_pp_sort(pTHX);
-PERL_CALLCONV OP *Perl_pp_splice(pTHX);
-PERL_CALLCONV OP *Perl_pp_split(pTHX);
-PERL_CALLCONV OP *Perl_pp_sprintf(pTHX);
-PERL_CALLCONV OP *Perl_pp_srand(pTHX);
-PERL_CALLCONV OP *Perl_pp_srefgen(pTHX);
-PERL_CALLCONV OP *Perl_pp_sselect(pTHX);
-PERL_CALLCONV OP *Perl_pp_ssockopt(pTHX);
-PERL_CALLCONV OP *Perl_pp_stat(pTHX);
-PERL_CALLCONV OP *Perl_pp_stringify(pTHX);
-PERL_CALLCONV OP *Perl_pp_stub(pTHX);
-PERL_CALLCONV OP *Perl_pp_study(pTHX);
-PERL_CALLCONV OP *Perl_pp_subst(pTHX);
-PERL_CALLCONV OP *Perl_pp_substcont(pTHX);
-PERL_CALLCONV OP *Perl_pp_substr(pTHX);
-PERL_CALLCONV OP *Perl_pp_subtract(pTHX);
-PERL_CALLCONV OP *Perl_pp_syscall(pTHX);
-PERL_CALLCONV OP *Perl_pp_sysopen(pTHX);
-PERL_CALLCONV OP *Perl_pp_sysread(pTHX);
-PERL_CALLCONV OP *Perl_pp_sysseek(pTHX);
-PERL_CALLCONV OP *Perl_pp_system(pTHX);
-PERL_CALLCONV OP *Perl_pp_syswrite(pTHX);
-PERL_CALLCONV OP *Perl_pp_tell(pTHX);
-PERL_CALLCONV OP *Perl_pp_telldir(pTHX);
-PERL_CALLCONV OP *Perl_pp_tie(pTHX);
-PERL_CALLCONV OP *Perl_pp_tied(pTHX);
-PERL_CALLCONV OP *Perl_pp_time(pTHX);
-PERL_CALLCONV OP *Perl_pp_tms(pTHX);
-PERL_CALLCONV OP *Perl_pp_trans(pTHX);
-PERL_CALLCONV OP *Perl_pp_truncate(pTHX);
-PERL_CALLCONV OP *Perl_pp_uc(pTHX);
-PERL_CALLCONV OP *Perl_pp_ucfirst(pTHX);
-PERL_CALLCONV OP *Perl_pp_umask(pTHX);
-PERL_CALLCONV OP *Perl_pp_undef(pTHX);
-PERL_CALLCONV OP *Perl_pp_unpack(pTHX);
-PERL_CALLCONV OP *Perl_pp_unshift(pTHX);
-PERL_CALLCONV OP *Perl_pp_unstack(pTHX);
-PERL_CALLCONV OP *Perl_pp_untie(pTHX);
-PERL_CALLCONV OP *Perl_pp_vec(pTHX);
-PERL_CALLCONV OP *Perl_pp_wait(pTHX);
-PERL_CALLCONV OP *Perl_pp_waitpid(pTHX);
-PERL_CALLCONV OP *Perl_pp_wantarray(pTHX);
-PERL_CALLCONV OP *Perl_pp_warn(pTHX);
-PERL_CALLCONV OP *Perl_pp_xor(pTHX);
-PERL_CALLCONV OP *Perl_unimplemented_op(pTHX);
+PERL_CALLCONV PP(do_kv) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_aassign) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_abs) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_accept) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_add) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_aeach) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_aelem) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_aelemfast) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_aelemfastlex_store) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_akeys) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_alarm) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_and) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_anoncode) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_anonconst) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_anonhash) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_anonlist) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_argcheck) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_argdefelem) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_argelem) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_aslice) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_atan2) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_av2arylen) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_avhvswitch) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_backtick) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_bind) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_binmode) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_bit_and) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_bit_or) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_bless) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_blessed) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_break) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_caller) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_catch) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ceil) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_chdir) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_chop) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_chown) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_chr) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_chroot) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_clonecv) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_close) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_closedir) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_cmpchain_and) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_cmpchain_dup) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_complement) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_concat) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_cond_expr) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_const) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_continue) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_coreargs) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_crypt) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_dbmopen) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_dbstate) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_defined) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_delete) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_die) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_divide) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_each) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ehostent) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_emptyavhv) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_enter) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_entereval) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_entergiven) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_enteriter) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_enterloop) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_entersub) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_entertry) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_entertrycatch) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_enterwhen) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_enterwrite) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_eof) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_eq) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_exec) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_exists) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_exit) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_fc) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_fileno) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_flip) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_flock) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_floor) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_flop) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_fork) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_formline) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ftis) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ftlink) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ftrowned) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ftrread) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_fttext) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_fttty) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ge) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_gelem) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_getc) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_getlogin) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_getpeername) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_getpgrp) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_getppid) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_getpriority) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ggrent) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ghostent) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_glob) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_gmtime) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_gnetent) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_goto) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_gprotoent) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_gpwent) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_grepstart) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_grepwhile) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_gservent) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_gt) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_gv) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_gvsv) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_helem) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_helemexistsor) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_hintseval) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_hslice) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_i_add) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_i_divide) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_i_eq) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_i_ge) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_i_gt) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_i_le) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_i_lt) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_i_modulo) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_i_multiply) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_i_ncmp) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_i_ne) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_i_negate) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_i_subtract) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_index) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_initfield) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_int) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_introcv) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ioctl) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_is_bool) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_is_tainted) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_is_weak) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_isa) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_iter) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_join) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_kvaslice) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_kvhslice) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_last) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_lc) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_le) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_leave) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_leaveeval) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_leavegiven) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_leaveloop) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_leavesub) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_leavesublv) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_leavetry) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_leavetrycatch) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_leavewhen) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_leavewrite) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_left_shift) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_length) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_link) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_list) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_listen) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_lock) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_lslice) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_lt) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_lvavref) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_lvref) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_lvrefslice) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_mapwhile) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_match) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_method) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_method_named) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_method_redir) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_method_redir_super) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_method_super) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_methstart) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_mkdir) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_modulo) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_multiconcat) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_multideref) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_multiply) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_nbit_and) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_nbit_or) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ncmp) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ncomplement) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ne) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_negate) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_next) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_nextstate) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_not) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_null) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_oct) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_once) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_open) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_open_dir) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_or) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ord) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_pack) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_padav) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_padcv) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_padhv) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_padrange) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_padsv) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_padsv_store) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_pipe_op) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_poptry) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_pos) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_postdec) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_postinc) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_pow) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_predec) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_preinc) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_print) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_prototype) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_prtf) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_push) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_pushdefer) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_pushmark) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_qr) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_quotemeta) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_rand) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_range) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_rcatline) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_readdir) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_readline) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_readlink) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_redo) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ref) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_refaddr) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_refassign) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_refgen) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_reftype) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_regcomp) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_regcreset) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_rename) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_repeat) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_require) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_reset) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_return) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_reverse) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_rewinddir) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_right_shift) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_rmdir) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_runcv) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_rv2av) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_rv2cv) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_rv2gv) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_rv2sv) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_sassign) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_sbit_and) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_sbit_or) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_schop) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_scmp) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_scomplement) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_seekdir) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_select) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_semctl) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_semget) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_seq) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_setpgrp) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_setpriority) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_shift) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_shmwrite) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_shostent) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_shutdown) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_sin) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_sle) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_sleep) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_smartmatch) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_sne) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_socket) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_sockpair) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_sort) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_splice) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_split) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_sprintf) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_srand) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_srefgen) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_sselect) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ssockopt) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_stat) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_stringify) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_stub) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_study) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_subst) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_substcont) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_substr) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_subtract) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_syscall) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_sysopen) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_sysread) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_sysseek) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_system) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_syswrite) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_tell) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_telldir) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_tie) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_tied) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_time) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_tms) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_trans) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_truncate) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_uc) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_ucfirst) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_umask) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_undef) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_unpack) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_unshift) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_unstack) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_untie) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_unweaken) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_vec) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_wait) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_waitpid) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_wantarray) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_warn) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_weaken) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(pp_xor) __attribute__visibility__("hidden");
+PERL_CALLCONV PP(unimplemented_op) __attribute__visibility__("hidden");
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/proto.h b/Master/tlpkg/tlperl/lib/CORE/proto.h
index faca6d1366e..4ef9466b7ae 100644
--- a/Master/tlpkg/tlperl/lib/CORE/proto.h
+++ b/Master/tlpkg/tlperl/lib/CORE/proto.h
@@ -1,6941 +1,10554 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
*
* proto.h
*
* Copyright (C) 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
- * 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 by Larry Wall and others
+ * 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013,
+ * 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022
+ * by Larry Wall and others
*
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
*
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
- * This file is built by regen/embed.pl from data in embed.fnc,
- * regen/embed.pl, regen/opcodes, intrpvar.h and perlvars.h.
+ * This file is built by regen/embed.pl from embed.fnc, intrpvar.h,
+ * perlvars.h, regen/opcodes, regen/embed.pl, regen/embed_lib.pl and
+ * regen/HeaderParser.pm.
* Any changes made here will be lost!
*
* Edit those files and run 'make regen_headers' to effect changes.
*/
START_EXTERN_C
-#ifndef NO_MATHOMS
-PERL_CALLCONV UV ASCII_TO_NEED(const UV enc, const UV ch)
- __attribute__deprecated__
- __attribute__warn_unused_result__
- __attribute__pure__;
-#define PERL_ARGS_ASSERT_ASCII_TO_NEED
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE I32 * Perl_CvDEPTH(const CV * const sv);
-#define PERL_ARGS_ASSERT_CVDEPTH \
- assert(sv)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE GV * Perl_CvGV(pTHX_ CV *sv);
-#define PERL_ARGS_ASSERT_CVGV \
- assert(sv)
-#endif
-PERL_CALLCONV int Perl_Gv_AMupdate(pTHX_ HV* stash, bool destructing);
-#define PERL_ARGS_ASSERT_GV_AMUPDATE \
- assert(stash)
-#ifndef NO_MATHOMS
-PERL_CALLCONV UV NATIVE_TO_NEED(const UV enc, const UV ch)
- __attribute__deprecated__
- __attribute__warn_unused_result__
- __attribute__pure__;
-#define PERL_ARGS_ASSERT_NATIVE_TO_NEED
-#endif
+PERL_CALLCONV int
+Perl_Gv_AMupdate(pTHX_ HV *stash, bool destructing);
+#define PERL_ARGS_ASSERT_GV_AMUPDATE \
+ assert(stash)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE I32 Perl_POPMARK(pTHX);
-#define PERL_ARGS_ASSERT_POPMARK
-#endif
-PERL_CALLCONV const char * Perl_PerlIO_context_layers(pTHX_ const char *mode);
+PERL_CALLCONV const char *
+Perl_PerlIO_context_layers(pTHX_ const char *mode);
#define PERL_ARGS_ASSERT_PERLIO_CONTEXT_LAYERS
-PERL_CALLCONV int Perl_PerlLIO_dup2_cloexec(pTHX_ int oldfd, int newfd);
-#define PERL_ARGS_ASSERT_PERLLIO_DUP2_CLOEXEC
-PERL_CALLCONV int Perl_PerlLIO_dup_cloexec(pTHX_ int oldfd)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PERLLIO_DUP_CLOEXEC
-PERL_CALLCONV int Perl_PerlLIO_open3_cloexec(pTHX_ const char *file, int flag, int perm)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PERLLIO_OPEN3_CLOEXEC \
- assert(file)
+PERL_CALLCONV int
+Perl_PerlLIO_dup2_cloexec(pTHX_ int oldfd, int newfd)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_PERLLIO_DUP2_CLOEXEC
-PERL_CALLCONV int Perl_PerlLIO_open_cloexec(pTHX_ const char *file, int flag)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PERLLIO_OPEN_CLOEXEC \
- assert(file)
+PERL_CALLCONV int
+Perl_PerlLIO_dup_cloexec(pTHX_ int oldfd)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_PERLLIO_DUP_CLOEXEC
-/* PERL_CALLCONV const XOP * Perl_custom_op_xop(pTHX_ const OP *o); */
-#define PERL_ARGS_ASSERT_PERL_CUSTOM_OP_XOP
-PERL_CALLCONV const char* Perl_setlocale(const int category, const char* locale);
+PERL_CALLCONV int
+Perl_PerlLIO_open3_cloexec(pTHX_ const char *file, int flag, int perm)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_PERLLIO_OPEN3_CLOEXEC \
+ assert(file)
+
+PERL_CALLCONV int
+Perl_PerlLIO_open_cloexec(pTHX_ const char *file, int flag)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_PERLLIO_OPEN_CLOEXEC \
+ assert(file)
+
+/* PERL_CALLCONV const XOP *
+Perl_custom_op_xop(pTHX_ const OP *o); */
+
+PERL_CALLCONV HV *
+Perl_localeconv(pTHX);
+#define PERL_ARGS_ASSERT_PERL_LOCALECONV
+
+PERL_CALLCONV const char *
+Perl_setlocale(const int category, const char *locale);
#define PERL_ARGS_ASSERT_PERL_SETLOCALE
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE struct regexp * Perl_ReANY(const REGEXP * const re);
-#define PERL_ARGS_ASSERT_REANY \
- assert(re)
-#endif
-PERL_CALLCONV void* Perl_Slab_Alloc(pTHX_ size_t sz)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV void *
+Perl_Slab_Alloc(pTHX_ size_t sz)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SLAB_ALLOC
-PERL_CALLCONV void Perl_Slab_Free(pTHX_ void *op);
-#define PERL_ARGS_ASSERT_SLAB_FREE \
- assert(op)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_SvAMAGIC_off(SV *sv);
-#define PERL_ARGS_ASSERT_SVAMAGIC_OFF \
- assert(sv)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_SvAMAGIC_on(SV *sv);
-#define PERL_ARGS_ASSERT_SVAMAGIC_ON \
- assert(sv)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_SvREFCNT_dec(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_SVREFCNT_DEC
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_SvREFCNT_dec_NN(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_SVREFCNT_DEC_NN \
- assert(sv)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE SV * Perl_SvREFCNT_inc(SV *sv);
-#define PERL_ARGS_ASSERT_SVREFCNT_INC
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE SV * Perl_SvREFCNT_inc_NN(SV *sv);
-#define PERL_ARGS_ASSERT_SVREFCNT_INC_NN \
- assert(sv)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_SvREFCNT_inc_void(SV *sv);
-#define PERL_ARGS_ASSERT_SVREFCNT_INC_VOID
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_SvTRUE(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_SVTRUE
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_SvTRUE_NN(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_SVTRUE_NN \
- assert(sv)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_SvTRUE_common(pTHX_ SV *sv, const bool sv_2bool_is_fallback);
-#define PERL_ARGS_ASSERT_SVTRUE_COMMON \
- assert(sv)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_SvTRUE_nomg(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_SVTRUE_NOMG
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE I32 Perl_TOPMARK(pTHX);
-#define PERL_ARGS_ASSERT_TOPMARK
-#endif
-PERL_CALLCONV char * Perl__byte_dump_string(pTHX_ const U8 * const start, const STRLEN len, const bool format);
-#define PERL_ARGS_ASSERT__BYTE_DUMP_STRING \
- assert(start)
-PERL_CALLCONV void Perl__force_out_malformed_utf8_message(pTHX_ const U8 *const p, const U8 * const e, const U32 flags, const bool die_here);
-#define PERL_ARGS_ASSERT__FORCE_OUT_MALFORMED_UTF8_MESSAGE \
- assert(p); assert(e)
-PERL_CALLCONV Size_t Perl__inverse_folds(pTHX_ const UV cp, U32 * first_folds_to, const U32 ** remaining_folds_to)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__INVERSE_FOLDS \
- assert(first_folds_to); assert(remaining_folds_to)
-
-PERL_CALLCONV bool Perl__is_in_locale_category(pTHX_ const bool compiling, const int category);
+PERL_CALLCONV void
+Perl_Slab_Free(pTHX_ void *op);
+#define PERL_ARGS_ASSERT_SLAB_FREE \
+ assert(op)
+
+/* PERL_CALLCONV void
+SvREFCNT_dec_set_NULL(pTHX_ SV *sv); */
+
+PERL_CALLCONV char *
+Perl__byte_dump_string(pTHX_ const U8 * const start, const STRLEN len, const bool format);
+#define PERL_ARGS_ASSERT__BYTE_DUMP_STRING \
+ assert(start)
+
+PERL_CALLCONV void
+Perl__force_out_malformed_utf8_message(pTHX_ const U8 * const p, const U8 * const e, const U32 flags, const bool die_here);
+#define PERL_ARGS_ASSERT__FORCE_OUT_MALFORMED_UTF8_MESSAGE \
+ assert(p); assert(e)
+
+PERL_CALLCONV Size_t
+Perl__inverse_folds(pTHX_ const UV cp, U32 *first_folds_to, const U32 **remaining_folds_to)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT__INVERSE_FOLDS \
+ assert(first_folds_to); assert(remaining_folds_to)
+
+PERL_CALLCONV bool
+Perl__is_in_locale_category(pTHX_ const bool compiling, const int category);
#define PERL_ARGS_ASSERT__IS_IN_LOCALE_CATEGORY
-PERL_CALLCONV bool Perl__is_uni_FOO(pTHX_ const U8 classnum, const UV c)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV bool
+Perl__is_uni_FOO(pTHX_ const U8 classnum, const UV c)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UNI_FOO
-PERL_CALLCONV bool Perl__is_uni_perl_idcont(pTHX_ UV c)
- __attribute__warn_unused_result__;
+PERL_CALLCONV bool
+Perl__is_uni_perl_idcont(pTHX_ UV c)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UNI_PERL_IDCONT
-PERL_CALLCONV bool Perl__is_uni_perl_idstart(pTHX_ UV c)
- __attribute__warn_unused_result__;
+PERL_CALLCONV bool
+Perl__is_uni_perl_idstart(pTHX_ UV c)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT__IS_UNI_PERL_IDSTART
-PERL_CALLCONV bool Perl__is_utf8_FOO(pTHX_ const U8 classnum, const U8 *p, const U8 * const e)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__IS_UTF8_FOO \
- assert(p); assert(e)
-
-PERL_CALLCONV bool Perl__is_utf8_perl_idcont(pTHX_ const U8 *p, const U8 * const e)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDCONT \
- assert(p); assert(e)
-
-PERL_CALLCONV bool Perl__is_utf8_perl_idstart(pTHX_ const U8 *p, const U8 * const e)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDSTART \
- assert(p); assert(e)
-
-PERL_CALLCONV UV Perl__to_uni_fold_flags(pTHX_ UV c, U8 *p, STRLEN *lenp, U8 flags);
-#define PERL_ARGS_ASSERT__TO_UNI_FOLD_FLAGS \
- assert(p); assert(lenp)
-PERL_CALLCONV UV Perl__to_utf8_fold_flags(pTHX_ const U8 *p, const U8 *e, U8* ustrp, STRLEN *lenp, U8 flags);
-#define PERL_ARGS_ASSERT__TO_UTF8_FOLD_FLAGS \
- assert(p); assert(ustrp)
-PERL_CALLCONV UV Perl__to_utf8_lower_flags(pTHX_ const U8 *p, const U8* e, U8* ustrp, STRLEN *lenp, bool flags);
-#define PERL_ARGS_ASSERT__TO_UTF8_LOWER_FLAGS \
- assert(p); assert(ustrp)
-PERL_CALLCONV UV Perl__to_utf8_title_flags(pTHX_ const U8 *p, const U8* e, U8* ustrp, STRLEN *lenp, bool flags);
-#define PERL_ARGS_ASSERT__TO_UTF8_TITLE_FLAGS \
- assert(p); assert(ustrp)
-PERL_CALLCONV UV Perl__to_utf8_upper_flags(pTHX_ const U8 *p, const U8 *e, U8* ustrp, STRLEN *lenp, bool flags);
-#define PERL_ARGS_ASSERT__TO_UTF8_UPPER_FLAGS \
- assert(p); assert(ustrp)
-PERL_CALLCONV UV Perl__utf8n_to_uvchr_msgs_helper(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 * errors, AV ** msgs);
-#define PERL_ARGS_ASSERT__UTF8N_TO_UVCHR_MSGS_HELPER \
- assert(s)
-PERL_CALLCONV void Perl__warn_problematic_locale(void);
+PERL_CALLCONV bool
+Perl__is_utf8_FOO(pTHX_ const U8 classnum, const U8 *p, const U8 * const e)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT__IS_UTF8_FOO \
+ assert(p); assert(e)
+
+PERL_CALLCONV bool
+Perl__is_utf8_perl_idcont(pTHX_ const U8 *p, const U8 * const e)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDCONT \
+ assert(p); assert(e)
+
+PERL_CALLCONV bool
+Perl__is_utf8_perl_idstart(pTHX_ const U8 *p, const U8 * const e)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT__IS_UTF8_PERL_IDSTART \
+ assert(p); assert(e)
+
+PERL_CALLCONV UV
+Perl__to_uni_fold_flags(pTHX_ UV c, U8 *p, STRLEN *lenp, U8 flags);
+#define PERL_ARGS_ASSERT__TO_UNI_FOLD_FLAGS \
+ assert(p); assert(lenp)
+
+PERL_CALLCONV UV
+Perl__to_utf8_fold_flags(pTHX_ const U8 *p, const U8 *e, U8 *ustrp, STRLEN *lenp, U8 flags);
+#define PERL_ARGS_ASSERT__TO_UTF8_FOLD_FLAGS \
+ assert(p); assert(ustrp)
+
+PERL_CALLCONV UV
+Perl__to_utf8_lower_flags(pTHX_ const U8 *p, const U8 *e, U8 *ustrp, STRLEN *lenp, bool flags);
+#define PERL_ARGS_ASSERT__TO_UTF8_LOWER_FLAGS \
+ assert(p); assert(ustrp)
+
+PERL_CALLCONV UV
+Perl__to_utf8_title_flags(pTHX_ const U8 *p, const U8 *e, U8 *ustrp, STRLEN *lenp, bool flags);
+#define PERL_ARGS_ASSERT__TO_UTF8_TITLE_FLAGS \
+ assert(p); assert(ustrp)
+
+PERL_CALLCONV UV
+Perl__to_utf8_upper_flags(pTHX_ const U8 *p, const U8 *e, U8 *ustrp, STRLEN *lenp, bool flags);
+#define PERL_ARGS_ASSERT__TO_UTF8_UPPER_FLAGS \
+ assert(p); assert(ustrp)
+
+PERL_CALLCONV UV
+Perl__utf8n_to_uvchr_msgs_helper(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 *errors, AV **msgs);
+#define PERL_ARGS_ASSERT__UTF8N_TO_UVCHR_MSGS_HELPER \
+ assert(s)
+
+PERL_CALLCONV void
+Perl__warn_problematic_locale(void);
#define PERL_ARGS_ASSERT__WARN_PROBLEMATIC_LOCALE
-PERL_CALLCONV_NO_RET void Perl_abort_execution(pTHX_ const char * const msg, const char * const name)
- __attribute__noreturn__;
-#define PERL_ARGS_ASSERT_ABORT_EXECUTION \
- assert(msg); assert(name)
-PERL_CALLCONV LOGOP* Perl_alloc_LOGOP(pTHX_ I32 type, OP *first, OP *other);
+PERL_CALLCONV_NO_RET void
+Perl_abort_execution(pTHX_ SV *msg_sv, const char * const name)
+ __attribute__noreturn__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_ABORT_EXECUTION \
+ assert(name)
+
+PERL_CALLCONV LOGOP *
+Perl_alloc_LOGOP(pTHX_ I32 type, OP *first, OP *other)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_ALLOC_LOGOP
-PERL_CALLCONV PADOFFSET Perl_allocmy(pTHX_ const char *const name, const STRLEN len, const U32 flags);
-#define PERL_ARGS_ASSERT_ALLOCMY \
- assert(name)
-PERL_CALLCONV SV* Perl_amagic_call(pTHX_ SV* left, SV* right, int method, int dir);
-#define PERL_ARGS_ASSERT_AMAGIC_CALL \
- assert(left); assert(right)
-PERL_CALLCONV SV * Perl_amagic_deref_call(pTHX_ SV *ref, int method);
-#define PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL \
- assert(ref)
-PERL_CALLCONV bool Perl_amagic_is_enabled(pTHX_ int method);
+
+PERL_CALLCONV PADOFFSET
+Perl_allocmy(pTHX_ const char * const name, const STRLEN len, const U32 flags)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_ALLOCMY \
+ assert(name)
+
+PERL_CALLCONV bool
+Perl_amagic_applies(pTHX_ SV *sv, int method, int flags);
+#define PERL_ARGS_ASSERT_AMAGIC_APPLIES \
+ assert(sv)
+
+PERL_CALLCONV SV *
+Perl_amagic_call(pTHX_ SV *left, SV *right, int method, int dir);
+#define PERL_ARGS_ASSERT_AMAGIC_CALL \
+ assert(left); assert(right)
+
+PERL_CALLCONV SV *
+Perl_amagic_deref_call(pTHX_ SV *ref, int method);
+#define PERL_ARGS_ASSERT_AMAGIC_DEREF_CALL \
+ assert(ref)
+
+PERL_CALLCONV bool
+Perl_amagic_is_enabled(pTHX_ int method)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_AMAGIC_IS_ENABLED
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_append_utf8_from_native_byte(const U8 byte, U8** dest);
-#define PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE \
- assert(dest)
-#endif
-PERL_CALLCONV I32 Perl_apply(pTHX_ I32 type, SV** mark, SV** sp);
-#define PERL_ARGS_ASSERT_APPLY \
- assert(mark); assert(sp)
-PERL_CALLCONV void Perl_apply_attrs_string(pTHX_ const char *stashpv, CV *cv, const char *attrstr, STRLEN len);
-#define PERL_ARGS_ASSERT_APPLY_ATTRS_STRING \
- assert(stashpv); assert(cv); assert(attrstr)
-PERL_CALLCONV void Perl_atfork_lock(void);
+
+PERL_CALLCONV I32
+Perl_apply(pTHX_ I32 type, SV **mark, SV **sp)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_APPLY \
+ assert(mark); assert(sp)
+
+PERL_CALLCONV void
+Perl_apply_attrs_string(pTHX_ const char *stashpv, CV *cv, const char *attrstr, STRLEN len);
+#define PERL_ARGS_ASSERT_APPLY_ATTRS_STRING \
+ assert(stashpv); assert(cv); assert(attrstr)
+
+PERL_CALLCONV OP *
+Perl_apply_builtin_cv_attributes(pTHX_ CV *cv, OP *attrlist);
+#define PERL_ARGS_ASSERT_APPLY_BUILTIN_CV_ATTRIBUTES \
+ assert(cv)
+
+PERL_CALLCONV void
+Perl_atfork_lock(void);
#define PERL_ARGS_ASSERT_ATFORK_LOCK
-PERL_CALLCONV void Perl_atfork_unlock(void);
+
+PERL_CALLCONV void
+Perl_atfork_unlock(void);
#define PERL_ARGS_ASSERT_ATFORK_UNLOCK
-PERL_CALLCONV SV** Perl_av_arylen_p(pTHX_ AV *av);
-#define PERL_ARGS_ASSERT_AV_ARYLEN_P \
- assert(av)
-PERL_CALLCONV void Perl_av_clear(pTHX_ AV *av);
-#define PERL_ARGS_ASSERT_AV_CLEAR \
- assert(av)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE Size_t Perl_av_count(pTHX_ AV *av)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_AV_COUNT \
- assert(av)
-#endif
-PERL_CALLCONV void Perl_av_create_and_push(pTHX_ AV **const avp, SV *const val);
-#define PERL_ARGS_ASSERT_AV_CREATE_AND_PUSH \
- assert(avp); assert(val)
-PERL_CALLCONV SV** Perl_av_create_and_unshift_one(pTHX_ AV **const avp, SV *const val);
-#define PERL_ARGS_ASSERT_AV_CREATE_AND_UNSHIFT_ONE \
- assert(avp); assert(val)
-PERL_CALLCONV SV* Perl_av_delete(pTHX_ AV *av, SSize_t key, I32 flags);
-#define PERL_ARGS_ASSERT_AV_DELETE \
- assert(av)
-PERL_CALLCONV bool Perl_av_exists(pTHX_ AV *av, SSize_t key)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_AV_EXISTS \
- assert(av)
-
-PERL_CALLCONV void Perl_av_extend(pTHX_ AV *av, SSize_t key);
-#define PERL_ARGS_ASSERT_AV_EXTEND \
- assert(av)
-PERL_CALLCONV void Perl_av_extend_guts(pTHX_ AV *av, SSize_t key, SSize_t *maxp, SV ***allocp, SV ***arrayp);
-#define PERL_ARGS_ASSERT_AV_EXTEND_GUTS \
- assert(maxp); assert(allocp); assert(arrayp)
-PERL_CALLCONV SV** Perl_av_fetch(pTHX_ AV *av, SSize_t key, I32 lval)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_AV_FETCH \
- assert(av)
-
-PERL_CALLCONV void Perl_av_fill(pTHX_ AV *av, SSize_t fill);
-#define PERL_ARGS_ASSERT_AV_FILL \
- assert(av)
-PERL_CALLCONV IV* Perl_av_iter_p(pTHX_ AV *av);
-#define PERL_ARGS_ASSERT_AV_ITER_P \
- assert(av)
-PERL_CALLCONV SSize_t Perl_av_len(pTHX_ AV *av)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_AV_LEN \
- assert(av)
-
-PERL_CALLCONV AV* Perl_av_make(pTHX_ SSize_t size, SV **strp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_AV_MAKE \
- assert(strp)
-
-PERL_CALLCONV SV* Perl_av_nonelem(pTHX_ AV *av, SSize_t ix);
-#define PERL_ARGS_ASSERT_AV_NONELEM \
- assert(av)
-PERL_CALLCONV SV* Perl_av_pop(pTHX_ AV *av);
-#define PERL_ARGS_ASSERT_AV_POP \
- assert(av)
-PERL_CALLCONV void Perl_av_push(pTHX_ AV *av, SV *val);
-#define PERL_ARGS_ASSERT_AV_PUSH \
- assert(av); assert(val)
-PERL_CALLCONV void Perl_av_reify(pTHX_ AV *av);
-#define PERL_ARGS_ASSERT_AV_REIFY \
- assert(av)
-PERL_CALLCONV SV* Perl_av_shift(pTHX_ AV *av)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_AV_SHIFT \
- assert(av)
-
-PERL_CALLCONV SV** Perl_av_store(pTHX_ AV *av, SSize_t key, SV *val);
-#define PERL_ARGS_ASSERT_AV_STORE \
- assert(av)
-/* PERL_CALLCONV SSize_t av_tindex(pTHX_ AV *av)
- __attribute__warn_unused_result__; */
-#define PERL_ARGS_ASSERT_AV_TINDEX
-
-/* PERL_CALLCONV SSize_t av_top_index(pTHX_ AV *av)
- __attribute__warn_unused_result__; */
-#define PERL_ARGS_ASSERT_AV_TOP_INDEX
-
-PERL_CALLCONV void Perl_av_undef(pTHX_ AV *av);
-#define PERL_ARGS_ASSERT_AV_UNDEF \
- assert(av)
-PERL_CALLCONV void Perl_av_unshift(pTHX_ AV *av, SSize_t num);
-#define PERL_ARGS_ASSERT_AV_UNSHIFT \
- assert(av)
-PERL_CALLCONV OP* Perl_bind_match(pTHX_ I32 type, OP *left, OP *right)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_BIND_MATCH \
- assert(left); assert(right)
-
-PERL_CALLCONV OP* Perl_block_end(pTHX_ I32 floor, OP* seq)
- __attribute__warn_unused_result__;
+PERL_CALLCONV SV **
+Perl_av_arylen_p(pTHX_ AV *av);
+#define PERL_ARGS_ASSERT_AV_ARYLEN_P \
+ assert(av)
+
+PERL_CALLCONV void
+Perl_av_clear(pTHX_ AV *av);
+#define PERL_ARGS_ASSERT_AV_CLEAR \
+ assert(av)
+
+PERL_CALLCONV void
+Perl_av_create_and_push(pTHX_ AV ** const avp, SV * const val);
+#define PERL_ARGS_ASSERT_AV_CREATE_AND_PUSH \
+ assert(avp); assert(val)
+
+PERL_CALLCONV SV **
+Perl_av_create_and_unshift_one(pTHX_ AV ** const avp, SV * const val);
+#define PERL_ARGS_ASSERT_AV_CREATE_AND_UNSHIFT_ONE \
+ assert(avp); assert(val)
+
+PERL_CALLCONV SV *
+Perl_av_delete(pTHX_ AV *av, SSize_t key, I32 flags);
+#define PERL_ARGS_ASSERT_AV_DELETE \
+ assert(av)
+
+PERL_CALLCONV void
+Perl_av_dump(pTHX_ AV *av);
+#define PERL_ARGS_ASSERT_AV_DUMP
+
+PERL_CALLCONV bool
+Perl_av_exists(pTHX_ AV *av, SSize_t key)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_AV_EXISTS \
+ assert(av)
+
+PERL_CALLCONV void
+Perl_av_extend(pTHX_ AV *av, SSize_t key);
+#define PERL_ARGS_ASSERT_AV_EXTEND \
+ assert(av)
+
+PERL_CALLCONV void
+Perl_av_extend_guts(pTHX_ AV *av, SSize_t key, SSize_t *maxp, SV ***allocp, SV ***arrayp)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_AV_EXTEND_GUTS \
+ assert(maxp); assert(allocp); assert(arrayp)
+
+PERL_CALLCONV SV **
+Perl_av_fetch(pTHX_ AV *av, SSize_t key, I32 lval)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_AV_FETCH \
+ assert(av)
+
+PERL_CALLCONV void
+Perl_av_fill(pTHX_ AV *av, SSize_t fill);
+#define PERL_ARGS_ASSERT_AV_FILL \
+ assert(av)
+
+PERL_CALLCONV IV *
+Perl_av_iter_p(pTHX_ AV *av);
+#define PERL_ARGS_ASSERT_AV_ITER_P \
+ assert(av)
+
+PERL_CALLCONV SSize_t
+Perl_av_len(pTHX_ AV *av)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_AV_LEN \
+ assert(av)
+
+PERL_CALLCONV AV *
+Perl_av_make(pTHX_ SSize_t size, SV **strp)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_AV_MAKE \
+ assert(strp)
+
+PERL_CALLCONV SV *
+Perl_av_nonelem(pTHX_ AV *av, SSize_t ix)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_AV_NONELEM \
+ assert(av)
+
+PERL_CALLCONV SV *
+Perl_av_pop(pTHX_ AV *av);
+#define PERL_ARGS_ASSERT_AV_POP \
+ assert(av)
+
+PERL_CALLCONV void
+Perl_av_push(pTHX_ AV *av, SV *val);
+#define PERL_ARGS_ASSERT_AV_PUSH \
+ assert(av); assert(val)
+
+PERL_CALLCONV void
+Perl_av_reify(pTHX_ AV *av);
+#define PERL_ARGS_ASSERT_AV_REIFY \
+ assert(av)
+
+PERL_CALLCONV SV *
+Perl_av_shift(pTHX_ AV *av)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_AV_SHIFT \
+ assert(av)
+
+PERL_CALLCONV SV **
+Perl_av_store(pTHX_ AV *av, SSize_t key, SV *val);
+#define PERL_ARGS_ASSERT_AV_STORE \
+ assert(av)
+
+/* PERL_CALLCONV SSize_t
+av_tindex(pTHX_ AV *av)
+ __attribute__warn_unused_result__; */
+
+/* PERL_CALLCONV SSize_t
+av_top_index(pTHX_ AV *av)
+ __attribute__warn_unused_result__; */
+
+PERL_CALLCONV void
+Perl_av_undef(pTHX_ AV *av);
+#define PERL_ARGS_ASSERT_AV_UNDEF \
+ assert(av)
+
+PERL_CALLCONV void
+Perl_av_unshift(pTHX_ AV *av, SSize_t num);
+#define PERL_ARGS_ASSERT_AV_UNSHIFT \
+ assert(av)
+
+PERL_CALLCONV OP *
+Perl_bind_match(pTHX_ I32 type, OP *left, OP *right)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_BIND_MATCH \
+ assert(left); assert(right)
+
+PERL_CALLCONV OP *
+Perl_block_end(pTHX_ I32 floor, OP *seq)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_BLOCK_END
-PERL_CALLCONV U8 Perl_block_gimme(pTHX)
- __attribute__warn_unused_result__;
+PERL_CALLCONV U8
+Perl_block_gimme(pTHX)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_BLOCK_GIMME
-PERL_CALLCONV int Perl_block_start(pTHX_ int full)
- __attribute__warn_unused_result__;
+PERL_CALLCONV int
+Perl_block_start(pTHX_ int full)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_BLOCK_START
-PERL_CALLCONV void Perl_blockhook_register(pTHX_ BHK *hk);
-#define PERL_ARGS_ASSERT_BLOCKHOOK_REGISTER \
- assert(hk)
-PERL_CALLCONV void Perl_boot_core_PerlIO(pTHX);
+PERL_CALLCONV void
+Perl_blockhook_register(pTHX_ BHK *hk);
+#define PERL_ARGS_ASSERT_BLOCKHOOK_REGISTER \
+ assert(hk)
+
+PERL_CALLCONV void
+Perl_boot_core_PerlIO(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_BOOT_CORE_PERLIO
-PERL_CALLCONV void Perl_boot_core_UNIVERSAL(pTHX);
+
+PERL_CALLCONV void
+Perl_boot_core_UNIVERSAL(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_BOOT_CORE_UNIVERSAL
-PERL_CALLCONV void Perl_boot_core_mro(pTHX);
+
+PERL_CALLCONV void
+Perl_boot_core_builtin(pTHX)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_BOOT_CORE_BUILTIN
+
+PERL_CALLCONV void
+Perl_boot_core_mro(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_BOOT_CORE_MRO
-PERL_CALLCONV int Perl_bytes_cmp_utf8(pTHX_ const U8 *b, STRLEN blen, const U8 *u, STRLEN ulen);
-#define PERL_ARGS_ASSERT_BYTES_CMP_UTF8 \
- assert(b); assert(u)
-PERL_CALLCONV U8* Perl_bytes_from_utf8(pTHX_ const U8 *s, STRLEN *lenp, bool *is_utf8p);
-#define PERL_ARGS_ASSERT_BYTES_FROM_UTF8 \
- assert(s); assert(lenp); assert(is_utf8p)
-PERL_CALLCONV U8* Perl_bytes_from_utf8_loc(const U8 *s, STRLEN *lenp, bool *is_utf8p, const U8 ** first_unconverted);
-#define PERL_ARGS_ASSERT_BYTES_FROM_UTF8_LOC \
- assert(s); assert(lenp); assert(is_utf8p)
-PERL_CALLCONV U8* Perl_bytes_to_utf8(pTHX_ const U8 *s, STRLEN *lenp);
-#define PERL_ARGS_ASSERT_BYTES_TO_UTF8 \
- assert(s); assert(lenp)
-PERL_CALLCONV I32 Perl_call_argv(pTHX_ const char* sub_name, I32 flags, char** argv);
-#define PERL_ARGS_ASSERT_CALL_ARGV \
- assert(sub_name); assert(argv)
-PERL_CALLCONV void Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr);
+
+PERL_CALLCONV OP *
+Perl_build_infix_plugin(pTHX_ OP *lhs, OP *rhs, void *tokendata)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_BUILD_INFIX_PLUGIN \
+ assert(lhs); assert(rhs); assert(tokendata)
+
+PERL_CALLCONV int
+Perl_bytes_cmp_utf8(pTHX_ const U8 *b, STRLEN blen, const U8 *u, STRLEN ulen);
+#define PERL_ARGS_ASSERT_BYTES_CMP_UTF8 \
+ assert(b); assert(u)
+
+PERL_CALLCONV U8 *
+Perl_bytes_from_utf8(pTHX_ const U8 *s, STRLEN *lenp, bool *is_utf8p);
+#define PERL_ARGS_ASSERT_BYTES_FROM_UTF8 \
+ assert(s); assert(lenp); assert(is_utf8p)
+
+PERL_CALLCONV U8 *
+Perl_bytes_from_utf8_loc(const U8 *s, STRLEN *lenp, bool *is_utf8p, const U8 **first_unconverted);
+#define PERL_ARGS_ASSERT_BYTES_FROM_UTF8_LOC \
+ assert(s); assert(lenp); assert(is_utf8p)
+
+PERL_CALLCONV U8 *
+Perl_bytes_to_utf8(pTHX_ const U8 *s, STRLEN *lenp);
+#define PERL_ARGS_ASSERT_BYTES_TO_UTF8 \
+ assert(s); assert(lenp)
+
+PERL_CALLCONV I32
+Perl_call_argv(pTHX_ const char *sub_name, I32 flags, char **argv);
+#define PERL_ARGS_ASSERT_CALL_ARGV \
+ assert(sub_name); assert(argv)
+
+PERL_CALLCONV void
+Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr);
#define PERL_ARGS_ASSERT_CALL_ATEXIT
-PERL_CALLCONV void Perl_call_list(pTHX_ I32 oldscope, AV *paramList);
-#define PERL_ARGS_ASSERT_CALL_LIST \
- assert(paramList)
-PERL_CALLCONV I32 Perl_call_method(pTHX_ const char* methname, I32 flags);
-#define PERL_ARGS_ASSERT_CALL_METHOD \
- assert(methname)
-PERL_CALLCONV I32 Perl_call_pv(pTHX_ const char* sub_name, I32 flags);
-#define PERL_ARGS_ASSERT_CALL_PV \
- assert(sub_name)
-PERL_CALLCONV I32 Perl_call_sv(pTHX_ SV* sv, volatile I32 flags);
-#define PERL_ARGS_ASSERT_CALL_SV \
- assert(sv)
-PERL_CALLCONV const PERL_CONTEXT * Perl_caller_cx(pTHX_ I32 level, const PERL_CONTEXT **dbcxp);
+
+PERL_CALLCONV void
+Perl_call_list(pTHX_ I32 oldscope, AV *paramList);
+#define PERL_ARGS_ASSERT_CALL_LIST \
+ assert(paramList)
+
+PERL_CALLCONV I32
+Perl_call_method(pTHX_ const char *methname, I32 flags);
+#define PERL_ARGS_ASSERT_CALL_METHOD \
+ assert(methname)
+
+PERL_CALLCONV I32
+Perl_call_pv(pTHX_ const char *sub_name, I32 flags);
+#define PERL_ARGS_ASSERT_CALL_PV \
+ assert(sub_name)
+
+PERL_CALLCONV I32
+Perl_call_sv(pTHX_ SV *sv, volatile I32 flags);
+#define PERL_ARGS_ASSERT_CALL_SV \
+ assert(sv)
+
+PERL_CALLCONV const PERL_CONTEXT *
+Perl_caller_cx(pTHX_ I32 level, const PERL_CONTEXT **dbcxp);
#define PERL_ARGS_ASSERT_CALLER_CX
-PERL_CALLCONV Malloc_t Perl_calloc(MEM_SIZE elements, MEM_SIZE size)
- __attribute__malloc__
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV Malloc_t
+Perl_calloc(MEM_SIZE elements, MEM_SIZE size)
+ __attribute__malloc__
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CALLOC
-PERL_CALLCONV bool Perl_cando(pTHX_ Mode_t mode, bool effective, const Stat_t* statbufp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CANDO \
- assert(statbufp)
+PERL_CALLCONV bool
+Perl_cando(pTHX_ Mode_t mode, bool effective, const Stat_t *statbufp)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_CANDO \
+ assert(statbufp)
-PERL_CALLCONV I32 Perl_cast_i32(NV f)
- __attribute__warn_unused_result__;
+PERL_CALLCONV I32
+Perl_cast_i32(NV f)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CAST_I32
-PERL_CALLCONV IV Perl_cast_iv(NV f)
- __attribute__warn_unused_result__;
+PERL_CALLCONV IV
+Perl_cast_iv(NV f)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CAST_IV
-PERL_CALLCONV U32 Perl_cast_ulong(NV f)
- __attribute__warn_unused_result__;
+PERL_CALLCONV U32
+Perl_cast_ulong(NV f)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CAST_ULONG
-PERL_CALLCONV UV Perl_cast_uv(NV f)
- __attribute__warn_unused_result__;
+PERL_CALLCONV UV
+Perl_cast_uv(NV f)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CAST_UV
-PERL_CALLCONV bool Perl_check_utf8_print(pTHX_ const U8 *s, const STRLEN len);
-#define PERL_ARGS_ASSERT_CHECK_UTF8_PRINT \
- assert(s)
-PERL_CALLCONV OP * Perl_ck_anoncode(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_ANONCODE \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_backtick(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_BACKTICK \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_bitop(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_BITOP \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_cmp(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_CMP \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_concat(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_CONCAT \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_defined(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_DEFINED \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_delete(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_DELETE \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_each(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_EACH \
- assert(o)
-
-PERL_CALLCONV OP* Perl_ck_entersub_args_core(pTHX_ OP *entersubop, GV *namegv, SV *protosv);
-#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_CORE \
- assert(entersubop); assert(namegv); assert(protosv)
-PERL_CALLCONV OP* Perl_ck_entersub_args_list(pTHX_ OP *entersubop);
-#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_LIST \
- assert(entersubop)
-PERL_CALLCONV OP* Perl_ck_entersub_args_proto(pTHX_ OP *entersubop, GV *namegv, SV *protosv);
-#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO \
- assert(entersubop); assert(namegv); assert(protosv)
-PERL_CALLCONV OP* Perl_ck_entersub_args_proto_or_list(pTHX_ OP *entersubop, GV *namegv, SV *protosv);
-#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO_OR_LIST \
- assert(entersubop); assert(namegv); assert(protosv)
-PERL_CALLCONV OP * Perl_ck_eof(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_EOF \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_eval(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_EVAL \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_exec(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_EXEC \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_exists(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_EXISTS \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_ftst(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_FTST \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_fun(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_FUN \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_glob(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_GLOB \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_grep(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_GREP \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_index(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_INDEX \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_isa(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_ISA \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_join(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_JOIN \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_length(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_LENGTH \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_lfun(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_LFUN \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_listiob(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_LISTIOB \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_match(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_MATCH \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_method(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_METHOD \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_null(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_NULL \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_open(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_OPEN \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_prototype(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_PROTOTYPE \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_readline(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_READLINE \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_refassign(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_REFASSIGN \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_repeat(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_REPEAT \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_require(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_REQUIRE \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_return(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_RETURN \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_rfun(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_RFUN \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_rvconst(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_RVCONST \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_sassign(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_SASSIGN \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_select(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_SELECT \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_shift(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_SHIFT \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_smartmatch(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_SMARTMATCH \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_sort(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_SORT \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_spair(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_SPAIR \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_split(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_SPLIT \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_stringify(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_STRINGIFY \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_subr(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_SUBR \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_substr(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_SUBSTR \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_svconst(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_SVCONST \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_tell(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_TELL \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_trunc(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_TRUNC \
- assert(o)
-
-PERL_CALLCONV OP * Perl_ck_trycatch(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CK_TRYCATCH \
- assert(o)
-
-PERL_CALLCONV void Perl_ck_warner(pTHX_ U32 err, const char* pat, ...)
- __attribute__format__(__printf__,pTHX_2,pTHX_3);
-#define PERL_ARGS_ASSERT_CK_WARNER \
- assert(pat)
-
-PERL_CALLCONV void Perl_ck_warner_d(pTHX_ U32 err, const char* pat, ...)
- __attribute__format__(__printf__,pTHX_2,pTHX_3);
-#define PERL_ARGS_ASSERT_CK_WARNER_D \
- assert(pat)
-
-PERL_CALLCONV bool Perl_ckwarn(pTHX_ U32 w)
- __attribute__warn_unused_result__
- __attribute__pure__;
+PERL_CALLCONV bool
+Perl_check_utf8_print(pTHX_ const U8 *s, const STRLEN len)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_CHECK_UTF8_PRINT \
+ assert(s)
+
+PERL_CALLCONV OP *
+Perl_ck_entersub_args_core(pTHX_ OP *entersubop, GV *namegv, SV *protosv)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_CORE \
+ assert(entersubop); assert(namegv); assert(protosv)
+
+PERL_CALLCONV OP *
+Perl_ck_entersub_args_list(pTHX_ OP *entersubop);
+#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_LIST \
+ assert(entersubop)
+
+PERL_CALLCONV OP *
+Perl_ck_entersub_args_proto(pTHX_ OP *entersubop, GV *namegv, SV *protosv);
+#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO \
+ assert(entersubop); assert(namegv); assert(protosv)
+
+PERL_CALLCONV OP *
+Perl_ck_entersub_args_proto_or_list(pTHX_ OP *entersubop, GV *namegv, SV *protosv);
+#define PERL_ARGS_ASSERT_CK_ENTERSUB_ARGS_PROTO_OR_LIST \
+ assert(entersubop); assert(namegv); assert(protosv)
+
+PERL_CALLCONV void
+Perl_ck_warner(pTHX_ U32 err, const char *pat, ...)
+ __attribute__format__(__printf__,pTHX_2,pTHX_3);
+#define PERL_ARGS_ASSERT_CK_WARNER \
+ assert(pat)
+
+PERL_CALLCONV void
+Perl_ck_warner_d(pTHX_ U32 err, const char *pat, ...)
+ __attribute__format__(__printf__,pTHX_2,pTHX_3);
+#define PERL_ARGS_ASSERT_CK_WARNER_D \
+ assert(pat)
+
+PERL_CALLCONV bool
+Perl_ckwarn(pTHX_ U32 w)
+ __attribute__warn_unused_result__
+ __attribute__pure__;
#define PERL_ARGS_ASSERT_CKWARN
-PERL_CALLCONV bool Perl_ckwarn_d(pTHX_ U32 w)
- __attribute__warn_unused_result__
- __attribute__pure__;
+PERL_CALLCONV bool
+Perl_ckwarn_d(pTHX_ U32 w)
+ __attribute__warn_unused_result__
+ __attribute__pure__;
#define PERL_ARGS_ASSERT_CKWARN_D
-PERL_CALLCONV void Perl_clear_defarray(pTHX_ AV* av, bool abandon);
-#define PERL_ARGS_ASSERT_CLEAR_DEFARRAY \
- assert(av)
-PERL_CALLCONV const COP* Perl_closest_cop(pTHX_ const COP *cop, const OP *o, const OP *curop, bool opnext);
-#define PERL_ARGS_ASSERT_CLOSEST_COP \
- assert(cop)
-PERL_CALLCONV OP* Perl_cmpchain_extend(pTHX_ I32 type, OP* ch, OP* right)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CMPCHAIN_EXTEND \
- assert(ch)
-
-PERL_CALLCONV OP* Perl_cmpchain_finish(pTHX_ OP* ch)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CMPCHAIN_FINISH \
- assert(ch)
-
-PERL_CALLCONV OP* Perl_cmpchain_start(pTHX_ I32 type, OP* left, OP* right)
- __attribute__warn_unused_result__;
+PERL_CALLCONV void
+Perl_clear_defarray(pTHX_ AV *av, bool abandon);
+#define PERL_ARGS_ASSERT_CLEAR_DEFARRAY \
+ assert(av)
+
+PERL_CALLCONV const COP *
+Perl_closest_cop(pTHX_ const COP *cop, const OP *o, const OP *curop, bool opnext)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_CLOSEST_COP \
+ assert(cop)
+
+PERL_CALLCONV OP *
+Perl_cmpchain_extend(pTHX_ I32 type, OP *ch, OP *right)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_CMPCHAIN_EXTEND \
+ assert(ch)
+
+PERL_CALLCONV OP *
+Perl_cmpchain_finish(pTHX_ OP *ch)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_CMPCHAIN_FINISH \
+ assert(ch)
+
+PERL_CALLCONV OP *
+Perl_cmpchain_start(pTHX_ I32 type, OP *left, OP *right)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CMPCHAIN_START
-PERL_CALLCONV const char * Perl_cntrl_to_mnemonic(const U8 c)
- __attribute__warn_unused_result__;
+PERL_CALLCONV const char *
+Perl_cntrl_to_mnemonic(const U8 c)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CNTRL_TO_MNEMONIC
-PERL_CALLCONV const char * Perl_cop_fetch_label(pTHX_ COP *const cop, STRLEN *len, U32 *flags);
-#define PERL_ARGS_ASSERT_COP_FETCH_LABEL \
- assert(cop)
-PERL_CALLCONV void Perl_cop_store_label(pTHX_ COP *const cop, const char *label, STRLEN len, U32 flags);
-#define PERL_ARGS_ASSERT_COP_STORE_LABEL \
- assert(cop); assert(label)
-PERL_CALLCONV SV * Perl_core_prototype(pTHX_ SV *sv, const char *name, const int code, int * const opnum);
-#define PERL_ARGS_ASSERT_CORE_PROTOTYPE \
- assert(name)
-PERL_CALLCONV OP * Perl_coresub_op(pTHX_ SV *const coreargssv, const int code, const int opnum);
-#define PERL_ARGS_ASSERT_CORESUB_OP \
- assert(coreargssv)
-PERL_CALLCONV void Perl_create_eval_scope(pTHX_ OP *retop, U32 flags);
+PERL_CALLCONV const char *
+Perl_cop_fetch_label(pTHX_ COP * const cop, STRLEN *len, U32 *flags);
+#define PERL_ARGS_ASSERT_COP_FETCH_LABEL \
+ assert(cop)
+
+PERL_CALLCONV void
+Perl_cop_store_label(pTHX_ COP * const cop, const char *label, STRLEN len, U32 flags);
+#define PERL_ARGS_ASSERT_COP_STORE_LABEL \
+ assert(cop); assert(label)
+
+PERL_CALLCONV SV *
+Perl_core_prototype(pTHX_ SV *sv, const char *name, const int code, int * const opnum)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_CORE_PROTOTYPE \
+ assert(name)
+
+PERL_CALLCONV OP *
+Perl_coresub_op(pTHX_ SV * const coreargssv, const int code, const int opnum)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_CORESUB_OP \
+ assert(coreargssv)
+
+PERL_CALLCONV void
+Perl_create_eval_scope(pTHX_ OP *retop, U32 flags)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CREATE_EVAL_SCOPE
-PERL_CALLCONV_NO_RET void Perl_croak(pTHX_ const char* pat, ...)
- __attribute__noreturn__
- __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2);
+
+PERL_CALLCONV_NO_RET void
+Perl_croak(pTHX_ const char *pat, ...)
+ __attribute__noreturn__
+ __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2);
#define PERL_ARGS_ASSERT_CROAK
-PERL_CALLCONV_NO_RET void Perl_croak_caller(const char* pat, ...)
- __attribute__noreturn__
- __attribute__format__null_ok__(__printf__,1,2);
+PERL_CALLCONV_NO_RET void
+Perl_croak_caller(const char *pat, ...)
+ __attribute__noreturn__
+ __attribute__visibility__("hidden")
+ __attribute__format__null_ok__(__printf__,1,2);
#define PERL_ARGS_ASSERT_CROAK_CALLER
-PERL_CALLCONV_NO_RET void Perl_croak_memory_wrap(void)
- __attribute__noreturn__;
+PERL_STATIC_NO_RET void
+Perl_croak_memory_wrap(void)
+ __attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_MEMORY_WRAP
-PERL_CALLCONV_NO_RET void Perl_croak_no_mem(void)
- __attribute__noreturn__;
+PERL_CALLCONV_NO_RET void
+Perl_croak_no_mem(void)
+ __attribute__noreturn__
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CROAK_NO_MEM
-PERL_CALLCONV_NO_RET void Perl_croak_no_modify(void)
- __attribute__noreturn__;
+PERL_CALLCONV_NO_RET void
+Perl_croak_no_modify(void)
+ __attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_NO_MODIFY
-PERL_CALLCONV_NO_RET void Perl_croak_popstack(void)
- __attribute__noreturn__;
+PERL_CALLCONV_NO_RET void
+Perl_croak_popstack(void)
+ __attribute__noreturn__;
#define PERL_ARGS_ASSERT_CROAK_POPSTACK
-PERL_CALLCONV_NO_RET void Perl_croak_sv(pTHX_ SV *baseex)
- __attribute__noreturn__;
-#define PERL_ARGS_ASSERT_CROAK_SV \
- assert(baseex)
+PERL_CALLCONV_NO_RET void
+Perl_croak_sv(pTHX_ SV *baseex)
+ __attribute__noreturn__;
+#define PERL_ARGS_ASSERT_CROAK_SV \
+ assert(baseex)
-PERL_CALLCONV_NO_RET void Perl_croak_xs_usage(const CV *const cv, const char *const params)
- __attribute__noreturn__;
-#define PERL_ARGS_ASSERT_CROAK_XS_USAGE \
- assert(cv); assert(params)
+PERL_CALLCONV_NO_RET void
+Perl_croak_xs_usage(const CV * const cv, const char * const params)
+ __attribute__noreturn__;
+#define PERL_ARGS_ASSERT_CROAK_XS_USAGE \
+ assert(cv); assert(params)
-PERL_CALLCONV Signal_t Perl_csighandler1(int sig);
+PERL_CALLCONV Signal_t
+Perl_csighandler1(int sig);
#define PERL_ARGS_ASSERT_CSIGHANDLER1
-PERL_CALLCONV Signal_t Perl_csighandler3(int sig, Siginfo_t *info, void *uap);
+
+PERL_CALLCONV Signal_t
+Perl_csighandler3(int sig, Siginfo_t *info, void *uap);
#define PERL_ARGS_ASSERT_CSIGHANDLER3
-PERL_CALLCONV regexp_engine const * Perl_current_re_engine(pTHX);
-#define PERL_ARGS_ASSERT_CURRENT_RE_ENGINE
-#ifndef NO_MATHOMS
-PERL_CALLCONV const char * Perl_custom_op_desc(pTHX_ const OP *o)
- __attribute__deprecated__
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CUSTOM_OP_DESC \
- assert(o)
-#endif
-PERL_CALLCONV XOPRETANY Perl_custom_op_get_field(pTHX_ const OP *o, const xop_flags_enum field)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CUSTOM_OP_GET_FIELD \
- assert(o)
-
-#ifndef NO_MATHOMS
-PERL_CALLCONV const char * Perl_custom_op_name(pTHX_ const OP *o)
- __attribute__deprecated__
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CUSTOM_OP_NAME \
- assert(o)
-#endif
+PERL_CALLCONV regexp_engine const *
+Perl_current_re_engine(pTHX);
+#define PERL_ARGS_ASSERT_CURRENT_RE_ENGINE
-PERL_CALLCONV void Perl_custom_op_register(pTHX_ Perl_ppaddr_t ppaddr, const XOP *xop);
-#define PERL_ARGS_ASSERT_CUSTOM_OP_REGISTER \
- assert(ppaddr); assert(xop)
-PERL_CALLCONV void Perl_cv_ckproto_len_flags(pTHX_ const CV* cv, const GV* gv, const char* p, const STRLEN len, const U32 flags);
-#define PERL_ARGS_ASSERT_CV_CKPROTO_LEN_FLAGS \
- assert(cv)
-PERL_CALLCONV CV* Perl_cv_clone(pTHX_ CV* proto);
-#define PERL_ARGS_ASSERT_CV_CLONE \
- assert(proto)
-PERL_CALLCONV CV* Perl_cv_clone_into(pTHX_ CV* proto, CV *target);
-#define PERL_ARGS_ASSERT_CV_CLONE_INTO \
- assert(proto); assert(target)
-PERL_CALLCONV SV* Perl_cv_const_sv(const CV *const cv)
- __attribute__warn_unused_result__;
+PERL_CALLCONV XOPRETANY
+Perl_custom_op_get_field(pTHX_ const OP *o, const xop_flags_enum field)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_CUSTOM_OP_GET_FIELD \
+ assert(o)
+
+PERL_CALLCONV void
+Perl_custom_op_register(pTHX_ Perl_ppaddr_t ppaddr, const XOP *xop);
+#define PERL_ARGS_ASSERT_CUSTOM_OP_REGISTER \
+ assert(ppaddr); assert(xop)
+
+PERL_CALLCONV void
+Perl_cv_ckproto_len_flags(pTHX_ const CV *cv, const GV *gv, const char *p, const STRLEN len, const U32 flags);
+#define PERL_ARGS_ASSERT_CV_CKPROTO_LEN_FLAGS \
+ assert(cv)
+
+PERL_CALLCONV CV *
+Perl_cv_clone(pTHX_ CV *proto);
+#define PERL_ARGS_ASSERT_CV_CLONE \
+ assert(proto)
+
+PERL_CALLCONV CV *
+Perl_cv_clone_into(pTHX_ CV *proto, CV *target)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_CV_CLONE_INTO \
+ assert(proto); assert(target)
+
+PERL_CALLCONV SV *
+Perl_cv_const_sv(const CV * const cv)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CV_CONST_SV
-PERL_CALLCONV SV* Perl_cv_const_sv_or_av(const CV *const cv)
- __attribute__warn_unused_result__;
+PERL_CALLCONV SV *
+Perl_cv_const_sv_or_av(const CV * const cv)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CV_CONST_SV_OR_AV
-PERL_CALLCONV void Perl_cv_forget_slab(pTHX_ CV *cv);
+PERL_CALLCONV void
+Perl_cv_forget_slab(pTHX_ CV *cv)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_CV_FORGET_SLAB
-PERL_CALLCONV void Perl_cv_get_call_checker(pTHX_ CV *cv, Perl_call_checker *ckfun_p, SV **ckobj_p);
-#define PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER \
- assert(cv); assert(ckfun_p); assert(ckobj_p)
-PERL_CALLCONV void Perl_cv_get_call_checker_flags(pTHX_ CV *cv, U32 gflags, Perl_call_checker *ckfun_p, SV **ckobj_p, U32 *ckflags_p);
-#define PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER_FLAGS \
- assert(cv); assert(ckfun_p); assert(ckobj_p); assert(ckflags_p)
-PERL_CALLCONV SV * Perl_cv_name(pTHX_ CV *cv, SV *sv, U32 flags);
-#define PERL_ARGS_ASSERT_CV_NAME \
- assert(cv)
-PERL_CALLCONV void Perl_cv_set_call_checker(pTHX_ CV *cv, Perl_call_checker ckfun, SV *ckobj);
-#define PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER \
- assert(cv); assert(ckfun); assert(ckobj)
-PERL_CALLCONV void Perl_cv_set_call_checker_flags(pTHX_ CV *cv, Perl_call_checker ckfun, SV *ckobj, U32 ckflags);
-#define PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER_FLAGS \
- assert(cv); assert(ckfun); assert(ckobj)
-PERL_CALLCONV void Perl_cv_undef(pTHX_ CV* cv);
-#define PERL_ARGS_ASSERT_CV_UNDEF \
- assert(cv)
-PERL_CALLCONV void Perl_cv_undef_flags(pTHX_ CV* cv, U32 flags);
-#define PERL_ARGS_ASSERT_CV_UNDEF_FLAGS \
- assert(cv)
-PERL_CALLCONV GV * Perl_cvgv_from_hek(pTHX_ CV* cv);
-#define PERL_ARGS_ASSERT_CVGV_FROM_HEK \
- assert(cv)
-PERL_CALLCONV void Perl_cvgv_set(pTHX_ CV* cv, GV* gv);
-#define PERL_ARGS_ASSERT_CVGV_SET \
- assert(cv)
-PERL_CALLCONV void Perl_cvstash_set(pTHX_ CV* cv, HV* stash);
-#define PERL_ARGS_ASSERT_CVSTASH_SET \
- assert(cv)
-PERL_CALLCONV void Perl_cx_dump(pTHX_ PERL_CONTEXT* cx);
-#define PERL_ARGS_ASSERT_CX_DUMP \
- assert(cx)
-PERL_CALLCONV I32 Perl_cxinc(pTHX)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV void
+Perl_cv_get_call_checker(pTHX_ CV *cv, Perl_call_checker *ckfun_p, SV **ckobj_p);
+#define PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER \
+ assert(cv); assert(ckfun_p); assert(ckobj_p)
+
+PERL_CALLCONV void
+Perl_cv_get_call_checker_flags(pTHX_ CV *cv, U32 gflags, Perl_call_checker *ckfun_p, SV **ckobj_p, U32 *ckflags_p);
+#define PERL_ARGS_ASSERT_CV_GET_CALL_CHECKER_FLAGS \
+ assert(cv); assert(ckfun_p); assert(ckobj_p); assert(ckflags_p)
+
+PERL_CALLCONV SV *
+Perl_cv_name(pTHX_ CV *cv, SV *sv, U32 flags);
+#define PERL_ARGS_ASSERT_CV_NAME \
+ assert(cv)
+
+PERL_CALLCONV void
+Perl_cv_set_call_checker(pTHX_ CV *cv, Perl_call_checker ckfun, SV *ckobj);
+#define PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER \
+ assert(cv); assert(ckfun); assert(ckobj)
+
+PERL_CALLCONV void
+Perl_cv_set_call_checker_flags(pTHX_ CV *cv, Perl_call_checker ckfun, SV *ckobj, U32 ckflags);
+#define PERL_ARGS_ASSERT_CV_SET_CALL_CHECKER_FLAGS \
+ assert(cv); assert(ckfun); assert(ckobj)
+
+PERL_CALLCONV void
+Perl_cv_undef(pTHX_ CV *cv);
+#define PERL_ARGS_ASSERT_CV_UNDEF \
+ assert(cv)
+
+PERL_CALLCONV void
+Perl_cv_undef_flags(pTHX_ CV *cv, U32 flags)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_CV_UNDEF_FLAGS \
+ assert(cv)
+
+PERL_CALLCONV GV *
+Perl_cvgv_from_hek(pTHX_ CV *cv);
+#define PERL_ARGS_ASSERT_CVGV_FROM_HEK \
+ assert(cv)
+
+PERL_CALLCONV void
+Perl_cvgv_set(pTHX_ CV *cv, GV *gv);
+#define PERL_ARGS_ASSERT_CVGV_SET \
+ assert(cv)
+
+PERL_CALLCONV void
+Perl_cvstash_set(pTHX_ CV *cv, HV *stash);
+#define PERL_ARGS_ASSERT_CVSTASH_SET \
+ assert(cv)
+
+PERL_CALLCONV void
+Perl_cx_dump(pTHX_ PERL_CONTEXT *cx);
+#define PERL_ARGS_ASSERT_CX_DUMP \
+ assert(cx)
+
+PERL_CALLCONV I32
+Perl_cxinc(pTHX)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_CXINC
-PERL_CALLCONV void Perl_deb(pTHX_ const char* pat, ...)
- __attribute__format__(__printf__,pTHX_1,pTHX_2);
-#define PERL_ARGS_ASSERT_DEB \
- assert(pat)
+PERL_CALLCONV void
+Perl_deb(pTHX_ const char *pat, ...)
+ __attribute__format__(__printf__,pTHX_1,pTHX_2);
+#define PERL_ARGS_ASSERT_DEB \
+ assert(pat)
-PERL_CALLCONV void Perl_deb_stack_all(pTHX);
+PERL_CALLCONV void
+Perl_deb_stack_all(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DEB_STACK_ALL
-PERL_CALLCONV I32 Perl_debop(pTHX_ const OP* o);
-#define PERL_ARGS_ASSERT_DEBOP \
- assert(o)
-PERL_CALLCONV void Perl_debprofdump(pTHX);
+
+PERL_CALLCONV I32
+Perl_debop(pTHX_ const OP *o);
+#define PERL_ARGS_ASSERT_DEBOP \
+ assert(o)
+
+PERL_CALLCONV void
+Perl_debprofdump(pTHX);
#define PERL_ARGS_ASSERT_DEBPROFDUMP
-PERL_CALLCONV I32 Perl_debstack(pTHX);
+
+PERL_CALLCONV I32
+Perl_debstack(pTHX);
#define PERL_ARGS_ASSERT_DEBSTACK
-PERL_CALLCONV I32 Perl_debstackptrs(pTHX);
+
+PERL_CALLCONV I32
+Perl_debstackptrs(pTHX);
#define PERL_ARGS_ASSERT_DEBSTACKPTRS
-PERL_CALLCONV SV * Perl_defelem_target(pTHX_ SV *sv, MAGIC *mg)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DEFELEM_TARGET \
- assert(sv)
-PERL_CALLCONV void Perl_delete_eval_scope(pTHX);
+PERL_CALLCONV void
+Perl_debug_hash_seed(pTHX_ bool via_debug_h)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DEBUG_HASH_SEED
+
+PERL_CALLCONV SV *
+Perl_defelem_target(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DEFELEM_TARGET \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_delete_eval_scope(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DELETE_EVAL_SCOPE
-PERL_CALLCONV char* Perl_delimcpy(char* to, const char* to_end, const char* from, const char* from_end, const int delim, I32* retlen);
-#define PERL_ARGS_ASSERT_DELIMCPY \
- assert(to); assert(to_end); assert(from); assert(from_end); assert(retlen)
-PERL_CALLCONV char* Perl_delimcpy_no_escape(char* to, const char* to_end, const char* from, const char* from_end, const int delim, I32* retlen);
-#define PERL_ARGS_ASSERT_DELIMCPY_NO_ESCAPE \
- assert(to); assert(to_end); assert(from); assert(from_end); assert(retlen)
-PERL_CALLCONV void Perl_despatch_signals(pTHX);
-#define PERL_ARGS_ASSERT_DESPATCH_SIGNALS
-PERL_CALLCONV_NO_RET OP* Perl_die(pTHX_ const char* pat, ...)
- __attribute__noreturn__
- __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2);
-#define PERL_ARGS_ASSERT_DIE
-PERL_CALLCONV_NO_RET OP* Perl_die_sv(pTHX_ SV *baseex)
- __attribute__noreturn__;
-#define PERL_ARGS_ASSERT_DIE_SV \
- assert(baseex)
+PERL_CALLCONV char *
+Perl_delimcpy(char *to, const char *to_end, const char *from, const char *from_end, const int delim, I32 *retlen);
+#define PERL_ARGS_ASSERT_DELIMCPY \
+ assert(to); assert(to_end); assert(from); assert(from_end); assert(retlen)
-PERL_CALLCONV_NO_RET void Perl_die_unwind(pTHX_ SV* msv)
- __attribute__noreturn__;
-#define PERL_ARGS_ASSERT_DIE_UNWIND \
- assert(msv)
+PERL_CALLCONV char *
+Perl_delimcpy_no_escape(char *to, const char *to_end, const char *from, const char *from_end, const int delim, I32 *retlen);
+#define PERL_ARGS_ASSERT_DELIMCPY_NO_ESCAPE \
+ assert(to); assert(to_end); assert(from); assert(from_end); assert(retlen)
-#ifndef NO_MATHOMS
-PERL_CALLCONV bool Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp);
-#define PERL_ARGS_ASSERT_DO_AEXEC \
- assert(mark); assert(sp)
-#endif
-PERL_CALLCONV bool Perl_do_aexec5(pTHX_ SV* really, SV** mark, SV** sp, int fd, int do_report);
-#define PERL_ARGS_ASSERT_DO_AEXEC5 \
- assert(mark); assert(sp)
-#ifndef NO_MATHOMS
-PERL_CALLCONV int Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int mode)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_DO_BINMODE \
- assert(fp)
-#endif
+PERL_CALLCONV void
+Perl_despatch_signals(pTHX);
+#define PERL_ARGS_ASSERT_DESPATCH_SIGNALS
+
+PERL_CALLCONV_NO_RET OP *
+Perl_die(pTHX_ const char *pat, ...)
+ __attribute__noreturn__
+ __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2);
+#define PERL_ARGS_ASSERT_DIE
-PERL_CALLCONV bool Perl_do_close(pTHX_ GV* gv, bool not_implicit);
+PERL_CALLCONV_NO_RET OP *
+Perl_die_sv(pTHX_ SV *baseex)
+ __attribute__noreturn__;
+#define PERL_ARGS_ASSERT_DIE_SV \
+ assert(baseex)
+
+PERL_CALLCONV_NO_RET void
+Perl_die_unwind(pTHX_ SV *msv)
+ __attribute__noreturn__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DIE_UNWIND \
+ assert(msv)
+
+PERL_CALLCONV bool
+Perl_do_aexec5(pTHX_ SV *really, SV **mark, SV **sp, int fd, int do_report)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DO_AEXEC5 \
+ assert(mark); assert(sp)
+
+PERL_CALLCONV bool
+Perl_do_close(pTHX_ GV *gv, bool is_explicit);
#define PERL_ARGS_ASSERT_DO_CLOSE
-PERL_CALLCONV void Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full);
-#define PERL_ARGS_ASSERT_DO_DUMP_PAD \
- assert(file)
-PERL_CALLCONV bool Perl_do_eof(pTHX_ GV* gv);
-#define PERL_ARGS_ASSERT_DO_EOF \
- assert(gv)
-PERL_CALLCONV void Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv);
-#define PERL_ARGS_ASSERT_DO_GV_DUMP \
- assert(file); assert(name)
-PERL_CALLCONV void Perl_do_gvgv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv);
-#define PERL_ARGS_ASSERT_DO_GVGV_DUMP \
- assert(file); assert(name)
-PERL_CALLCONV void Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, const char *name, HV *sv);
-#define PERL_ARGS_ASSERT_DO_HV_DUMP \
- assert(file); assert(name)
-PERL_CALLCONV void Perl_do_join(pTHX_ SV *sv, SV *delim, SV **mark, SV **sp);
-#define PERL_ARGS_ASSERT_DO_JOIN \
- assert(sv); assert(delim); assert(mark); assert(sp)
-PERL_CALLCONV void Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, const MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
-#define PERL_ARGS_ASSERT_DO_MAGIC_DUMP \
- assert(file)
-PERL_CALLCONV I32 Perl_do_ncmp(pTHX_ SV *const left, SV *const right)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DO_NCMP \
- assert(left); assert(right)
-
-PERL_CALLCONV void Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, const OP *o);
-#define PERL_ARGS_ASSERT_DO_OP_DUMP \
- assert(file)
-#ifndef NO_MATHOMS
-PERL_CALLCONV bool Perl_do_open(pTHX_ GV* gv, const char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp);
-#define PERL_ARGS_ASSERT_DO_OPEN \
- assert(gv); assert(name)
-#endif
-PERL_CALLCONV bool Perl_do_open6(pTHX_ GV *gv, const char *oname, STRLEN len, PerlIO *supplied_fp, SV **svp, U32 num);
-#define PERL_ARGS_ASSERT_DO_OPEN6 \
- assert(gv); assert(oname)
-#ifndef NO_MATHOMS
-PERL_CALLCONV bool Perl_do_open9(pTHX_ GV *gv, const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs, I32 num)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_DO_OPEN9 \
- assert(gv); assert(name); assert(svs)
-#endif
-PERL_CALLCONV bool Perl_do_open_raw(pTHX_ GV *gv, const char *oname, STRLEN len, int rawmode, int rawperm, Stat_t *statbufp);
-#define PERL_ARGS_ASSERT_DO_OPEN_RAW \
- assert(gv); assert(oname)
-PERL_CALLCONV bool Perl_do_openn(pTHX_ GV *gv, const char *oname, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV **svp, I32 num);
-#define PERL_ARGS_ASSERT_DO_OPENN \
- assert(gv); assert(oname)
-PERL_CALLCONV void Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, const PMOP *pm);
-#define PERL_ARGS_ASSERT_DO_PMOP_DUMP \
- assert(file)
-PERL_CALLCONV bool Perl_do_print(pTHX_ SV* sv, PerlIO* fp);
-#define PERL_ARGS_ASSERT_DO_PRINT \
- assert(fp)
-PERL_CALLCONV OP* Perl_do_readline(pTHX)
- __attribute__warn_unused_result__;
+PERL_CALLCONV void
+Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DO_DUMP_PAD \
+ assert(file)
+
+PERL_CALLCONV bool
+Perl_do_eof(pTHX_ GV *gv)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DO_EOF \
+ assert(gv)
+
+PERL_CALLCONV void
+Perl_do_gv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv);
+#define PERL_ARGS_ASSERT_DO_GV_DUMP \
+ assert(file); assert(name)
+
+PERL_CALLCONV void
+Perl_do_gvgv_dump(pTHX_ I32 level, PerlIO *file, const char *name, GV *sv);
+#define PERL_ARGS_ASSERT_DO_GVGV_DUMP \
+ assert(file); assert(name)
+
+PERL_CALLCONV void
+Perl_do_hv_dump(pTHX_ I32 level, PerlIO *file, const char *name, HV *sv);
+#define PERL_ARGS_ASSERT_DO_HV_DUMP \
+ assert(file); assert(name)
+
+PERL_CALLCONV void
+Perl_do_join(pTHX_ SV *sv, SV *delim, SV **mark, SV **sp);
+#define PERL_ARGS_ASSERT_DO_JOIN \
+ assert(sv); assert(delim); assert(mark); assert(sp)
+
+PERL_CALLCONV void
+Perl_do_magic_dump(pTHX_ I32 level, PerlIO *file, const MAGIC *mg, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
+#define PERL_ARGS_ASSERT_DO_MAGIC_DUMP \
+ assert(file)
+
+PERL_CALLCONV I32
+Perl_do_ncmp(pTHX_ SV * const left, SV * const right)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DO_NCMP \
+ assert(left); assert(right)
+
+PERL_CALLCONV void
+Perl_do_op_dump(pTHX_ I32 level, PerlIO *file, const OP *o);
+#define PERL_ARGS_ASSERT_DO_OP_DUMP \
+ assert(file)
+
+PERL_CALLCONV bool
+Perl_do_open6(pTHX_ GV *gv, const char *oname, STRLEN len, PerlIO *supplied_fp, SV **svp, U32 num)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DO_OPEN6 \
+ assert(gv); assert(oname)
+
+PERL_CALLCONV bool
+Perl_do_open_raw(pTHX_ GV *gv, const char *oname, STRLEN len, int rawmode, int rawperm, Stat_t *statbufp)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DO_OPEN_RAW \
+ assert(gv); assert(oname)
+
+PERL_CALLCONV bool
+Perl_do_openn(pTHX_ GV *gv, const char *oname, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV **svp, I32 num);
+#define PERL_ARGS_ASSERT_DO_OPENN \
+ assert(gv); assert(oname)
+
+PERL_CALLCONV void
+Perl_do_pmop_dump(pTHX_ I32 level, PerlIO *file, const PMOP *pm);
+#define PERL_ARGS_ASSERT_DO_PMOP_DUMP \
+ assert(file)
+
+PERL_CALLCONV bool
+Perl_do_print(pTHX_ SV *sv, PerlIO *fp)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DO_PRINT \
+ assert(fp)
+
+PERL_CALLCONV OP *
+Perl_do_readline(pTHX)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_READLINE
-PERL_CALLCONV bool Perl_do_seek(pTHX_ GV* gv, Off_t pos, int whence);
+PERL_CALLCONV bool
+Perl_do_seek(pTHX_ GV *gv, Off_t pos, int whence)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DO_SEEK
-PERL_CALLCONV void Perl_do_sprintf(pTHX_ SV* sv, SSize_t len, SV** sarg);
-#define PERL_ARGS_ASSERT_DO_SPRINTF \
- assert(sv); assert(sarg)
-PERL_CALLCONV void Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
-#define PERL_ARGS_ASSERT_DO_SV_DUMP \
- assert(file)
-PERL_CALLCONV Off_t Perl_do_sysseek(pTHX_ GV* gv, Off_t pos, int whence);
-#define PERL_ARGS_ASSERT_DO_SYSSEEK \
- assert(gv)
-PERL_CALLCONV Off_t Perl_do_tell(pTHX_ GV* gv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DO_TELL \
- assert(gv)
-
-PERL_CALLCONV Size_t Perl_do_trans(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_DO_TRANS \
- assert(sv)
-PERL_CALLCONV I16 Perl_do_uniprop_match(const char * const key, const U16 key_len)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DO_UNIPROP_MATCH \
- assert(key)
-
-PERL_CALLCONV UV Perl_do_vecget(pTHX_ SV* sv, STRLEN offset, int size);
-#define PERL_ARGS_ASSERT_DO_VECGET \
- assert(sv)
-PERL_CALLCONV void Perl_do_vecset(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_DO_VECSET \
- assert(sv)
-PERL_CALLCONV void Perl_do_vop(pTHX_ I32 optype, SV* sv, SV* left, SV* right);
-#define PERL_ARGS_ASSERT_DO_VOP \
- assert(sv); assert(left); assert(right)
-PERL_CALLCONV OP* Perl_dofile(pTHX_ OP* term, I32 force_builtin);
-#define PERL_ARGS_ASSERT_DOFILE \
- assert(term)
-PERL_CALLCONV bool Perl_doing_taint(int argc, char** argv, char** env)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV void
+Perl_do_sprintf(pTHX_ SV *sv, SSize_t len, SV **sarg);
+#define PERL_ARGS_ASSERT_DO_SPRINTF \
+ assert(sv); assert(sarg)
+
+PERL_CALLCONV void
+Perl_do_sv_dump(pTHX_ I32 level, PerlIO *file, SV *sv, I32 nest, I32 maxnest, bool dumpops, STRLEN pvlim);
+#define PERL_ARGS_ASSERT_DO_SV_DUMP \
+ assert(file)
+
+PERL_CALLCONV Off_t
+Perl_do_sysseek(pTHX_ GV *gv, Off_t pos, int whence)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DO_SYSSEEK \
+ assert(gv)
+
+PERL_CALLCONV Off_t
+Perl_do_tell(pTHX_ GV *gv)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DO_TELL \
+ assert(gv)
+
+PERL_CALLCONV Size_t
+Perl_do_trans(pTHX_ SV *sv)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DO_TRANS \
+ assert(sv)
+
+PERL_CALLCONV I16
+Perl_do_uniprop_match(const char * const key, const U16 key_len)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_DO_UNIPROP_MATCH \
+ assert(key)
+
+PERL_CALLCONV UV
+Perl_do_vecget(pTHX_ SV *sv, STRLEN offset, int size)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DO_VECGET \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_do_vecset(pTHX_ SV *sv)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DO_VECSET \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_do_vop(pTHX_ I32 optype, SV *sv, SV *left, SV *right)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DO_VOP \
+ assert(sv); assert(left); assert(right)
+
+PERL_CALLCONV OP *
+Perl_dofile(pTHX_ OP *term, I32 force_builtin)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DOFILE \
+ assert(term)
+
+PERL_CALLCONV bool
+Perl_doing_taint(int argc, char **argv, char **env)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOING_TAINT
-PERL_CALLCONV OP * Perl_doref(pTHX_ OP *o, I32 type, bool set_op_ref);
-#define PERL_ARGS_ASSERT_DOREF \
- assert(o)
-PERL_CALLCONV void Perl_dounwind(pTHX_ I32 cxix);
+PERL_CALLCONV OP *
+Perl_doref(pTHX_ OP *o, I32 type, bool set_op_ref);
+#define PERL_ARGS_ASSERT_DOREF \
+ assert(o)
+
+PERL_CALLCONV void
+Perl_dounwind(pTHX_ I32 cxix);
#define PERL_ARGS_ASSERT_DOUNWIND
-PERL_CALLCONV U8 Perl_dowantarray(pTHX)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV U8
+Perl_dowantarray(pTHX)
+ __attribute__deprecated__
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_DOWANTARRAY
-PERL_CALLCONV void Perl_drand48_init_r(perl_drand48_t *random_state, U32 seed);
-#define PERL_ARGS_ASSERT_DRAND48_INIT_R \
- assert(random_state)
-PERL_CALLCONV double Perl_drand48_r(perl_drand48_t *random_state);
-#define PERL_ARGS_ASSERT_DRAND48_R \
- assert(random_state)
-PERL_CALLCONV void Perl_dump_all(pTHX);
+PERL_CALLCONV void
+Perl_drand48_init_r(perl_drand48_t *random_state, U32 seed);
+#define PERL_ARGS_ASSERT_DRAND48_INIT_R \
+ assert(random_state)
+
+PERL_CALLCONV double
+Perl_drand48_r(perl_drand48_t *random_state);
+#define PERL_ARGS_ASSERT_DRAND48_R \
+ assert(random_state)
+
+PERL_CALLCONV void
+Perl_dump_all(pTHX);
#define PERL_ARGS_ASSERT_DUMP_ALL
-PERL_CALLCONV void Perl_dump_all_perl(pTHX_ bool justperl);
+
+PERL_CALLCONV void
+Perl_dump_all_perl(pTHX_ bool justperl)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_DUMP_ALL_PERL
-PERL_CALLCONV void Perl_dump_eval(pTHX);
+
+PERL_CALLCONV void
+Perl_dump_eval(pTHX);
#define PERL_ARGS_ASSERT_DUMP_EVAL
-PERL_CALLCONV void Perl_dump_form(pTHX_ const GV* gv);
-#define PERL_ARGS_ASSERT_DUMP_FORM \
- assert(gv)
-PERL_CALLCONV void Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char* pat, ...)
- __attribute__format__(__printf__,pTHX_3,pTHX_4);
-#define PERL_ARGS_ASSERT_DUMP_INDENT \
- assert(file); assert(pat)
-
-PERL_CALLCONV void Perl_dump_packsubs(pTHX_ const HV* stash);
-#define PERL_ARGS_ASSERT_DUMP_PACKSUBS \
- assert(stash)
-PERL_CALLCONV void Perl_dump_packsubs_perl(pTHX_ const HV* stash, bool justperl);
-#define PERL_ARGS_ASSERT_DUMP_PACKSUBS_PERL \
- assert(stash)
-PERL_CALLCONV void Perl_dump_sub(pTHX_ const GV* gv);
-#define PERL_ARGS_ASSERT_DUMP_SUB \
- assert(gv)
-PERL_CALLCONV void Perl_dump_sub_perl(pTHX_ const GV* gv, bool justperl);
-#define PERL_ARGS_ASSERT_DUMP_SUB_PERL \
- assert(gv)
-PERL_CALLCONV void Perl_dump_vindent(pTHX_ I32 level, PerlIO *file, const char* pat, va_list *args);
-#define PERL_ARGS_ASSERT_DUMP_VINDENT \
- assert(file); assert(pat)
-PERL_CALLCONV STRLEN* Perl_dup_warnings(pTHX_ STRLEN* warnings);
+
+PERL_CALLCONV void
+Perl_dump_form(pTHX_ const GV *gv);
+#define PERL_ARGS_ASSERT_DUMP_FORM \
+ assert(gv)
+
+PERL_CALLCONV void
+Perl_dump_indent(pTHX_ I32 level, PerlIO *file, const char *pat, ...)
+ __attribute__format__(__printf__,pTHX_3,pTHX_4);
+#define PERL_ARGS_ASSERT_DUMP_INDENT \
+ assert(file); assert(pat)
+
+PERL_CALLCONV void
+Perl_dump_packsubs(pTHX_ const HV *stash);
+#define PERL_ARGS_ASSERT_DUMP_PACKSUBS \
+ assert(stash)
+
+PERL_CALLCONV void
+Perl_dump_packsubs_perl(pTHX_ const HV *stash, bool justperl)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DUMP_PACKSUBS_PERL \
+ assert(stash)
+
+PERL_CALLCONV void
+Perl_dump_sub(pTHX_ const GV *gv);
+#define PERL_ARGS_ASSERT_DUMP_SUB \
+ assert(gv)
+
+PERL_CALLCONV void
+Perl_dump_sub_perl(pTHX_ const GV *gv, bool justperl)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_DUMP_SUB_PERL \
+ assert(gv)
+
+PERL_CALLCONV void
+Perl_dump_vindent(pTHX_ I32 level, PerlIO *file, const char *pat, va_list *args);
+#define PERL_ARGS_ASSERT_DUMP_VINDENT \
+ assert(file); assert(pat)
+
+PERL_CALLCONV char *
+Perl_dup_warnings(pTHX_ char *warnings);
#define PERL_ARGS_ASSERT_DUP_WARNINGS
-PERL_CALLCONV void Perl_emulate_cop_io(pTHX_ const COP *const c, SV *const sv);
-#define PERL_ARGS_ASSERT_EMULATE_COP_IO \
- assert(c); assert(sv)
-PERL_CALLCONV SV* Perl_eval_pv(pTHX_ const char* p, I32 croak_on_error);
-#define PERL_ARGS_ASSERT_EVAL_PV \
- assert(p)
-PERL_CALLCONV I32 Perl_eval_sv(pTHX_ SV* sv, I32 flags);
-#define PERL_ARGS_ASSERT_EVAL_SV \
- assert(sv)
-PERL_CALLCONV void Perl_fbm_compile(pTHX_ SV* sv, U32 flags);
-#define PERL_ARGS_ASSERT_FBM_COMPILE \
- assert(sv)
-PERL_CALLCONV char* Perl_fbm_instr(pTHX_ unsigned char* big, unsigned char* bigend, SV* littlestr, U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_FBM_INSTR \
- assert(big); assert(bigend); assert(littlestr)
-
-PERL_CALLCONV SV* Perl_filter_add(pTHX_ filter_t funcp, SV* datasv);
+
+PERL_CALLCONV void
+Perl_emulate_cop_io(pTHX_ const COP * const c, SV * const sv);
+#define PERL_ARGS_ASSERT_EMULATE_COP_IO \
+ assert(c); assert(sv)
+
+PERL_CALLCONV SV *
+Perl_eval_pv(pTHX_ const char *p, I32 croak_on_error);
+#define PERL_ARGS_ASSERT_EVAL_PV \
+ assert(p)
+
+PERL_CALLCONV I32
+Perl_eval_sv(pTHX_ SV *sv, I32 flags);
+#define PERL_ARGS_ASSERT_EVAL_SV \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_fbm_compile(pTHX_ SV *sv, U32 flags);
+#define PERL_ARGS_ASSERT_FBM_COMPILE \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_fbm_instr(pTHX_ unsigned char *big, unsigned char *bigend, SV *littlestr, U32 flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_FBM_INSTR \
+ assert(big); assert(bigend); assert(littlestr)
+
+PERL_CALLCONV SV *
+Perl_filter_add(pTHX_ filter_t funcp, SV *datasv);
#define PERL_ARGS_ASSERT_FILTER_ADD
-PERL_CALLCONV void Perl_filter_del(pTHX_ filter_t funcp);
-#define PERL_ARGS_ASSERT_FILTER_DEL \
- assert(funcp)
-PERL_CALLCONV I32 Perl_filter_read(pTHX_ int idx, SV *buf_sv, int maxlen)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_FILTER_READ \
- assert(buf_sv)
-
-PERL_CALLCONV void Perl_finalize_optree(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_FINALIZE_OPTREE \
- assert(o)
-PERL_CALLCONV CV * Perl_find_lexical_cv(pTHX_ PADOFFSET off);
+
+PERL_CALLCONV void
+Perl_filter_del(pTHX_ filter_t funcp);
+#define PERL_ARGS_ASSERT_FILTER_DEL \
+ assert(funcp)
+
+PERL_CALLCONV I32
+Perl_filter_read(pTHX_ int idx, SV *buf_sv, int maxlen)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_FILTER_READ \
+ assert(buf_sv)
+
+PERL_CALLCONV CV *
+Perl_find_lexical_cv(pTHX_ PADOFFSET off)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_FIND_LEXICAL_CV
-PERL_CALLCONV CV* Perl_find_runcv(pTHX_ U32 *db_seqp)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV CV *
+Perl_find_runcv(pTHX_ U32 *db_seqp)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_FIND_RUNCV
-PERL_CALLCONV CV* Perl_find_runcv_where(pTHX_ U8 cond, IV arg, U32 *db_seqp)
- __attribute__warn_unused_result__;
+PERL_CALLCONV CV *
+Perl_find_runcv_where(pTHX_ U8 cond, IV arg, U32 *db_seqp)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_FIND_RUNCV_WHERE
-PERL_CALLCONV SV* Perl_find_rundefsv(pTHX);
+PERL_CALLCONV SV *
+Perl_find_rundefsv(pTHX);
#define PERL_ARGS_ASSERT_FIND_RUNDEFSV
-PERL_CALLCONV PADOFFSET Perl_find_rundefsvoffset(pTHX)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_FIND_RUNDEFSVOFFSET
-
-PERL_CALLCONV char* Perl_find_script(pTHX_ const char *scriptname, bool dosearch, const char *const *const search_ext, I32 flags);
-#define PERL_ARGS_ASSERT_FIND_SCRIPT \
- assert(scriptname)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE I32 Perl_foldEQ(const char* a, const char* b, I32 len);
-#define PERL_ARGS_ASSERT_FOLDEQ \
- assert(a); assert(b)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE I32 Perl_foldEQ_latin1(const char* a, const char* b, I32 len);
-#define PERL_ARGS_ASSERT_FOLDEQ_LATIN1 \
- assert(a); assert(b)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE I32 Perl_foldEQ_locale(const char* a, const char* b, I32 len);
-#define PERL_ARGS_ASSERT_FOLDEQ_LOCALE \
- assert(a); assert(b)
-#endif
-/* PERL_CALLCONV I32 foldEQ_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2); */
-#define PERL_ARGS_ASSERT_FOLDEQ_UTF8
-PERL_CALLCONV I32 Perl_foldEQ_utf8_flags(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2, U32 flags);
-#define PERL_ARGS_ASSERT_FOLDEQ_UTF8_FLAGS \
- assert(s1); assert(s2)
-PERL_CALLCONV char* Perl_form(pTHX_ const char* pat, ...)
- __attribute__format__(__printf__,pTHX_1,pTHX_2);
-#define PERL_ARGS_ASSERT_FORM \
- assert(pat)
-
-PERL_CALLCONV void Perl_free_tied_hv_pool(pTHX);
+
+PERL_CALLCONV char *
+Perl_find_script(pTHX_ const char *scriptname, bool dosearch, const char * const * const search_ext, I32 flags)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_FIND_SCRIPT \
+ assert(scriptname)
+
+/* PERL_CALLCONV I32
+foldEQ_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2); */
+
+PERL_CALLCONV I32
+Perl_foldEQ_utf8_flags(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2, U32 flags);
+#define PERL_ARGS_ASSERT_FOLDEQ_UTF8_FLAGS \
+ assert(s1); assert(s2)
+
+PERL_CALLCONV void
+Perl_forbid_outofblock_ops(pTHX_ OP *o, const char *blockname);
+#define PERL_ARGS_ASSERT_FORBID_OUTOFBLOCK_OPS \
+ assert(o); assert(blockname)
+
+PERL_CALLCONV void
+Perl_force_locale_unlock(void)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_FORCE_LOCALE_UNLOCK
+
+PERL_CALLCONV char *
+Perl_form(pTHX_ const char *pat, ...)
+ __attribute__format__(__printf__,pTHX_1,pTHX_2);
+#define PERL_ARGS_ASSERT_FORM \
+ assert(pat)
+
+PERL_CALLCONV void
+Perl_free_tied_hv_pool(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_FREE_TIED_HV_POOL
-PERL_CALLCONV void Perl_free_tmps(pTHX);
+
+PERL_CALLCONV void
+Perl_free_tmps(pTHX);
#define PERL_ARGS_ASSERT_FREE_TMPS
-PERL_CALLCONV SV* Perl_get_and_check_backslash_N_name(pTHX_ const char* s, const char* e, const bool is_utf8, const char** error_msg)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME \
- assert(s); assert(e); assert(error_msg)
-
-PERL_CALLCONV AV* Perl_get_av(pTHX_ const char *name, I32 flags);
-#define PERL_ARGS_ASSERT_GET_AV \
- assert(name)
-PERL_CALLCONV void* Perl_get_context(void)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GET_CONTEXT
-
-PERL_CALLCONV CV* Perl_get_cv(pTHX_ const char* name, I32 flags);
-#define PERL_ARGS_ASSERT_GET_CV \
- assert(name)
-PERL_CALLCONV CV* Perl_get_cvn_flags(pTHX_ const char* name, STRLEN len, I32 flags);
-#define PERL_ARGS_ASSERT_GET_CVN_FLAGS \
- assert(name)
-PERL_CALLCONV void Perl_get_db_sub(pTHX_ SV **svp, CV *cv);
-#define PERL_ARGS_ASSERT_GET_DB_SUB \
- assert(cv)
-PERL_CALLCONV const char * Perl_get_deprecated_property_msg(const Size_t warning_offset)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV SV *
+Perl_get_and_check_backslash_N_name(pTHX_ const char *s, const char *e, const bool is_utf8, const char **error_msg)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME \
+ assert(s); assert(e); assert(error_msg)
+
+PERL_CALLCONV AV *
+Perl_get_av(pTHX_ const char *name, I32 flags);
+#define PERL_ARGS_ASSERT_GET_AV \
+ assert(name)
+
+PERL_CALLCONV CV *
+Perl_get_cv(pTHX_ const char *name, I32 flags);
+#define PERL_ARGS_ASSERT_GET_CV \
+ assert(name)
+
+PERL_CALLCONV CV *
+Perl_get_cvn_flags(pTHX_ const char *name, STRLEN len, I32 flags);
+#define PERL_ARGS_ASSERT_GET_CVN_FLAGS \
+ assert(name)
+
+PERL_CALLCONV void
+Perl_get_db_sub(pTHX_ SV **svp, CV *cv);
+#define PERL_ARGS_ASSERT_GET_DB_SUB \
+ assert(cv)
+
+PERL_CALLCONV const char *
+Perl_get_deprecated_property_msg(const Size_t warning_offset)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_DEPRECATED_PROPERTY_MSG
-PERL_CALLCONV void Perl_get_hash_seed(pTHX_ unsigned char * const seed_buffer);
-#define PERL_ARGS_ASSERT_GET_HASH_SEED \
- assert(seed_buffer)
-PERL_CALLCONV HV* Perl_get_hv(pTHX_ const char *name, I32 flags);
-#define PERL_ARGS_ASSERT_GET_HV \
- assert(name)
-PERL_CALLCONV const char* Perl_get_no_modify(pTHX)
- __attribute__warn_unused_result__
- __attribute__pure__;
+PERL_CALLCONV int
+Perl_get_extended_os_errno(void)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_GET_EXTENDED_OS_ERRNO
+
+PERL_CALLCONV void
+Perl_get_hash_seed(pTHX_ unsigned char * const seed_buffer)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_GET_HASH_SEED \
+ assert(seed_buffer)
+
+PERL_CALLCONV HV *
+Perl_get_hv(pTHX_ const char *name, I32 flags);
+#define PERL_ARGS_ASSERT_GET_HV \
+ assert(name)
+
+PERL_CALLCONV const char *
+Perl_get_no_modify(pTHX)
+ __attribute__deprecated__
+ __attribute__warn_unused_result__
+ __attribute__pure__
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_GET_NO_MODIFY
-PERL_CALLCONV char** Perl_get_op_descs(pTHX)
- __attribute__warn_unused_result__
- __attribute__pure__;
+PERL_CALLCONV char **
+Perl_get_op_descs(pTHX)
+ __attribute__deprecated__
+ __attribute__warn_unused_result__
+ __attribute__pure__;
#define PERL_ARGS_ASSERT_GET_OP_DESCS
-PERL_CALLCONV char** Perl_get_op_names(pTHX)
- __attribute__warn_unused_result__
- __attribute__pure__;
+PERL_CALLCONV char **
+Perl_get_op_names(pTHX)
+ __attribute__deprecated__
+ __attribute__warn_unused_result__
+ __attribute__pure__;
#define PERL_ARGS_ASSERT_GET_OP_NAMES
-PERL_CALLCONV U32* Perl_get_opargs(pTHX)
- __attribute__warn_unused_result__
- __attribute__pure__;
+PERL_CALLCONV U32 *
+Perl_get_opargs(pTHX)
+ __attribute__deprecated__
+ __attribute__warn_unused_result__
+ __attribute__pure__
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_GET_OPARGS
-PERL_CALLCONV PPADDR_t* Perl_get_ppaddr(pTHX)
- __attribute__warn_unused_result__
- __attribute__pure__;
+PERL_CALLCONV PPADDR_t *
+Perl_get_ppaddr(pTHX)
+ __attribute__deprecated__
+ __attribute__warn_unused_result__
+ __attribute__pure__;
#define PERL_ARGS_ASSERT_GET_PPADDR
-PERL_CALLCONV SV * Perl_get_prop_definition(pTHX_ const int table_index)
- __attribute__warn_unused_result__;
+PERL_CALLCONV SV *
+Perl_get_prop_definition(pTHX_ const int table_index)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_PROP_DEFINITION
-PERL_CALLCONV const char * const * Perl_get_prop_values(const int table_index)
- __attribute__warn_unused_result__;
+PERL_CALLCONV const char * const *
+Perl_get_prop_values(const int table_index)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GET_PROP_VALUES
-PERL_CALLCONV REGEXP * Perl_get_re_arg(pTHX_ SV *sv);
+PERL_CALLCONV REGEXP *
+Perl_get_re_arg(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_GET_RE_ARG
-PERL_CALLCONV SV* Perl_get_sv(pTHX_ const char *name, I32 flags);
-#define PERL_ARGS_ASSERT_GET_SV \
- assert(name)
-PERL_CALLCONV MGVTBL* Perl_get_vtbl(pTHX_ int vtbl_id)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GET_VTBL
-
-PERL_CALLCONV int Perl_getcwd_sv(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_GETCWD_SV \
- assert(sv)
-PERL_CALLCONV void Perl_gp_free(pTHX_ GV* gv);
+
+PERL_CALLCONV SV *
+Perl_get_sv(pTHX_ const char *name, I32 flags);
+#define PERL_ARGS_ASSERT_GET_SV \
+ assert(name)
+
+PERL_CALLCONV int
+Perl_getcwd_sv(pTHX_ SV *sv);
+#define PERL_ARGS_ASSERT_GETCWD_SV \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_gp_free(pTHX_ GV *gv);
#define PERL_ARGS_ASSERT_GP_FREE
-PERL_CALLCONV GP* Perl_gp_ref(pTHX_ GP* gp);
+
+PERL_CALLCONV GP *
+Perl_gp_ref(pTHX_ GP *gp);
#define PERL_ARGS_ASSERT_GP_REF
-PERL_CALLCONV bool Perl_grok_atoUV(const char* pv, UV* valptr, const char** endptr);
-#define PERL_ARGS_ASSERT_GROK_ATOUV \
- assert(pv); assert(valptr)
-PERL_CALLCONV UV Perl_grok_bin(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result);
-#define PERL_ARGS_ASSERT_GROK_BIN \
- assert(start); assert(len_p); assert(flags)
-PERL_CALLCONV UV Perl_grok_bin_oct_hex(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result, const unsigned shift, const U8 lookup_bit, const char prefix);
-#define PERL_ARGS_ASSERT_GROK_BIN_OCT_HEX \
- assert(start); assert(len_p); assert(flags)
-PERL_CALLCONV UV Perl_grok_hex(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result);
-#define PERL_ARGS_ASSERT_GROK_HEX \
- assert(start); assert(len_p); assert(flags)
-PERL_CALLCONV int Perl_grok_infnan(pTHX_ const char** sp, const char *send);
-#define PERL_ARGS_ASSERT_GROK_INFNAN \
- assert(sp); assert(send)
-PERL_CALLCONV int Perl_grok_number(pTHX_ const char *pv, STRLEN len, UV *valuep);
-#define PERL_ARGS_ASSERT_GROK_NUMBER \
- assert(pv)
-PERL_CALLCONV int Perl_grok_number_flags(pTHX_ const char *pv, STRLEN len, UV *valuep, U32 flags);
-#define PERL_ARGS_ASSERT_GROK_NUMBER_FLAGS \
- assert(pv)
-PERL_CALLCONV bool Perl_grok_numeric_radix(pTHX_ const char **sp, const char *send)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GROK_NUMERIC_RADIX \
- assert(sp); assert(send)
-
-PERL_CALLCONV UV Perl_grok_oct(pTHX_ const char* start, STRLEN* len_p, I32* flags, NV *result);
-#define PERL_ARGS_ASSERT_GROK_OCT \
- assert(start); assert(len_p); assert(flags)
-#ifndef NO_MATHOMS
-PERL_CALLCONV GV* Perl_gv_AVadd(pTHX_ GV *gv);
-#define PERL_ARGS_ASSERT_GV_AVADD
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV GV* Perl_gv_HVadd(pTHX_ GV *gv);
-#define PERL_ARGS_ASSERT_GV_HVADD
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV GV* Perl_gv_IOadd(pTHX_ GV* gv);
-#define PERL_ARGS_ASSERT_GV_IOADD
-#endif
-PERL_CALLCONV GV* Perl_gv_add_by_type(pTHX_ GV *gv, svtype type);
+
+PERL_CALLCONV bool
+Perl_grok_atoUV(const char *pv, UV *valptr, const char **endptr);
+#define PERL_ARGS_ASSERT_GROK_ATOUV \
+ assert(pv); assert(valptr)
+
+PERL_CALLCONV UV
+Perl_grok_bin(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result);
+#define PERL_ARGS_ASSERT_GROK_BIN \
+ assert(start); assert(len_p); assert(flags)
+
+PERL_CALLCONV UV
+Perl_grok_bin_oct_hex(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result, const unsigned shift, const U8 lookup_bit, const char prefix);
+#define PERL_ARGS_ASSERT_GROK_BIN_OCT_HEX \
+ assert(start); assert(len_p); assert(flags)
+
+PERL_CALLCONV UV
+Perl_grok_hex(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result);
+#define PERL_ARGS_ASSERT_GROK_HEX \
+ assert(start); assert(len_p); assert(flags)
+
+PERL_CALLCONV int
+Perl_grok_infnan(pTHX_ const char **sp, const char *send);
+#define PERL_ARGS_ASSERT_GROK_INFNAN \
+ assert(sp); assert(send)
+
+PERL_CALLCONV int
+Perl_grok_number(pTHX_ const char *pv, STRLEN len, UV *valuep);
+#define PERL_ARGS_ASSERT_GROK_NUMBER \
+ assert(pv)
+
+PERL_CALLCONV int
+Perl_grok_number_flags(pTHX_ const char *pv, STRLEN len, UV *valuep, U32 flags);
+#define PERL_ARGS_ASSERT_GROK_NUMBER_FLAGS \
+ assert(pv)
+
+PERL_CALLCONV bool
+Perl_grok_numeric_radix(pTHX_ const char **sp, const char *send)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_GROK_NUMERIC_RADIX \
+ assert(sp); assert(send)
+
+PERL_CALLCONV UV
+Perl_grok_oct(pTHX_ const char *start, STRLEN *len_p, I32 *flags, NV *result);
+#define PERL_ARGS_ASSERT_GROK_OCT \
+ assert(start); assert(len_p); assert(flags)
+
+PERL_CALLCONV GV *
+Perl_gv_add_by_type(pTHX_ GV *gv, svtype type);
#define PERL_ARGS_ASSERT_GV_ADD_BY_TYPE
-/* PERL_CALLCONV GV* gv_autoload4(pTHX_ HV* stash, const char* name, STRLEN len, I32 method)
- __attribute__warn_unused_result__; */
-#define PERL_ARGS_ASSERT_GV_AUTOLOAD4
-
-PERL_CALLCONV GV* Perl_gv_autoload_pv(pTHX_ HV* stash, const char* namepv, U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GV_AUTOLOAD_PV \
- assert(namepv)
-
-PERL_CALLCONV GV* Perl_gv_autoload_pvn(pTHX_ HV* stash, const char* name, STRLEN len, U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GV_AUTOLOAD_PVN \
- assert(name)
-
-PERL_CALLCONV GV* Perl_gv_autoload_sv(pTHX_ HV* stash, SV* namesv, U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GV_AUTOLOAD_SV \
- assert(namesv)
-
-PERL_CALLCONV void Perl_gv_check(pTHX_ HV* stash);
-#define PERL_ARGS_ASSERT_GV_CHECK \
- assert(stash)
-PERL_CALLCONV SV* Perl_gv_const_sv(pTHX_ GV* gv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GV_CONST_SV \
- assert(gv)
-
-PERL_CALLCONV void Perl_gv_dump(pTHX_ GV* gv);
-#define PERL_ARGS_ASSERT_GV_DUMP
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_gv_efullname(pTHX_ SV* sv, const GV* gv)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_GV_EFULLNAME \
- assert(sv); assert(gv)
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_gv_efullname3(pTHX_ SV* sv, const GV* gv, const char* prefix);
-#define PERL_ARGS_ASSERT_GV_EFULLNAME3 \
- assert(sv); assert(gv)
-#endif
-PERL_CALLCONV void Perl_gv_efullname4(pTHX_ SV* sv, const GV* gv, const char* prefix, bool keepmain);
-#define PERL_ARGS_ASSERT_GV_EFULLNAME4 \
- assert(sv); assert(gv)
-PERL_CALLCONV GV* Perl_gv_fetchfile(pTHX_ const char* name);
-#define PERL_ARGS_ASSERT_GV_FETCHFILE \
- assert(name)
-PERL_CALLCONV GV* Perl_gv_fetchfile_flags(pTHX_ const char *const name, const STRLEN len, const U32 flags);
-#define PERL_ARGS_ASSERT_GV_FETCHFILE_FLAGS \
- assert(name)
-/* PERL_CALLCONV GV* gv_fetchmeth(pTHX_ HV* stash, const char* name, STRLEN len, I32 level); */
-#define PERL_ARGS_ASSERT_GV_FETCHMETH
-/* PERL_CALLCONV GV* gv_fetchmeth_autoload(pTHX_ HV* stash, const char* name, STRLEN len, I32 level); */
-#define PERL_ARGS_ASSERT_GV_FETCHMETH_AUTOLOAD
-PERL_CALLCONV GV* Perl_gv_fetchmeth_pv(pTHX_ HV* stash, const char* name, I32 level, U32 flags);
-#define PERL_ARGS_ASSERT_GV_FETCHMETH_PV \
- assert(name)
-PERL_CALLCONV GV* Perl_gv_fetchmeth_pv_autoload(pTHX_ HV* stash, const char* name, I32 level, U32 flags);
-#define PERL_ARGS_ASSERT_GV_FETCHMETH_PV_AUTOLOAD \
- assert(name)
-PERL_CALLCONV GV* Perl_gv_fetchmeth_pvn(pTHX_ HV* stash, const char* name, STRLEN len, I32 level, U32 flags);
-#define PERL_ARGS_ASSERT_GV_FETCHMETH_PVN \
- assert(name)
-PERL_CALLCONV GV* Perl_gv_fetchmeth_pvn_autoload(pTHX_ HV* stash, const char* name, STRLEN len, I32 level, U32 flags);
-#define PERL_ARGS_ASSERT_GV_FETCHMETH_PVN_AUTOLOAD \
- assert(name)
-PERL_CALLCONV GV* Perl_gv_fetchmeth_sv(pTHX_ HV* stash, SV* namesv, I32 level, U32 flags);
-#define PERL_ARGS_ASSERT_GV_FETCHMETH_SV \
- assert(namesv)
-PERL_CALLCONV GV* Perl_gv_fetchmeth_sv_autoload(pTHX_ HV* stash, SV* namesv, I32 level, U32 flags);
-#define PERL_ARGS_ASSERT_GV_FETCHMETH_SV_AUTOLOAD \
- assert(namesv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV GV* Perl_gv_fetchmethod(pTHX_ HV* stash, const char* name);
-#define PERL_ARGS_ASSERT_GV_FETCHMETHOD \
- assert(stash); assert(name)
-#endif
-PERL_CALLCONV GV* Perl_gv_fetchmethod_autoload(pTHX_ HV* stash, const char* name, I32 autoload);
-#define PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD \
- assert(stash); assert(name)
-PERL_CALLCONV GV* Perl_gv_fetchmethod_pv_flags(pTHX_ HV* stash, const char* name, U32 flags);
-#define PERL_ARGS_ASSERT_GV_FETCHMETHOD_PV_FLAGS \
- assert(stash); assert(name)
-PERL_CALLCONV GV* Perl_gv_fetchmethod_pvn_flags(pTHX_ HV* stash, const char* name, const STRLEN len, U32 flags);
-#define PERL_ARGS_ASSERT_GV_FETCHMETHOD_PVN_FLAGS \
- assert(stash); assert(name)
-PERL_CALLCONV GV* Perl_gv_fetchmethod_sv_flags(pTHX_ HV* stash, SV* namesv, U32 flags);
-#define PERL_ARGS_ASSERT_GV_FETCHMETHOD_SV_FLAGS \
- assert(stash); assert(namesv)
-PERL_CALLCONV GV* Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 flags, const svtype sv_type);
-#define PERL_ARGS_ASSERT_GV_FETCHPV \
- assert(nambeg)
-PERL_CALLCONV GV* Perl_gv_fetchpvn_flags(pTHX_ const char* name, STRLEN len, I32 flags, const svtype sv_type);
-#define PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS \
- assert(name)
-PERL_CALLCONV GV* Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_type);
-#define PERL_ARGS_ASSERT_GV_FETCHSV \
- assert(name)
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_gv_fullname(pTHX_ SV* sv, const GV* gv)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_GV_FULLNAME \
- assert(sv); assert(gv)
-#endif
+/* PERL_CALLCONV GV *
+gv_autoload4(pTHX_ HV *stash, const char *name, STRLEN len, I32 method)
+ __attribute__warn_unused_result__; */
+
+PERL_CALLCONV GV *
+Perl_gv_autoload_pv(pTHX_ HV *stash, const char *namepv, U32 flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_GV_AUTOLOAD_PV \
+ assert(namepv)
+
+PERL_CALLCONV GV *
+Perl_gv_autoload_pvn(pTHX_ HV *stash, const char *name, STRLEN len, U32 flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_GV_AUTOLOAD_PVN \
+ assert(name)
+
+PERL_CALLCONV GV *
+Perl_gv_autoload_sv(pTHX_ HV *stash, SV *namesv, U32 flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_GV_AUTOLOAD_SV \
+ assert(namesv)
+
+PERL_CALLCONV void
+Perl_gv_check(pTHX_ HV *stash);
+#define PERL_ARGS_ASSERT_GV_CHECK \
+ assert(stash)
+
+PERL_CALLCONV SV *
+Perl_gv_const_sv(pTHX_ GV *gv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_GV_CONST_SV \
+ assert(gv)
+
+PERL_CALLCONV void
+Perl_gv_dump(pTHX_ GV *gv);
+#define PERL_ARGS_ASSERT_GV_DUMP
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_gv_fullname3(pTHX_ SV* sv, const GV* gv, const char* prefix);
-#define PERL_ARGS_ASSERT_GV_FULLNAME3 \
- assert(sv); assert(gv)
-#endif
-PERL_CALLCONV void Perl_gv_fullname4(pTHX_ SV* sv, const GV* gv, const char* prefix, bool keepmain);
-#define PERL_ARGS_ASSERT_GV_FULLNAME4 \
- assert(sv); assert(gv)
-PERL_CALLCONV CV* Perl_gv_handler(pTHX_ HV* stash, I32 id)
- __attribute__warn_unused_result__;
+PERL_CALLCONV void
+Perl_gv_efullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain);
+#define PERL_ARGS_ASSERT_GV_EFULLNAME4 \
+ assert(sv); assert(gv)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchfile(pTHX_ const char *name);
+#define PERL_ARGS_ASSERT_GV_FETCHFILE \
+ assert(name)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchfile_flags(pTHX_ const char * const name, const STRLEN len, const U32 flags);
+#define PERL_ARGS_ASSERT_GV_FETCHFILE_FLAGS \
+ assert(name)
+
+/* PERL_CALLCONV GV *
+gv_fetchmeth(pTHX_ HV *stash, const char *name, STRLEN len, I32 level); */
+
+/* PERL_CALLCONV GV *
+gv_fetchmeth_autoload(pTHX_ HV *stash, const char *name, STRLEN len, I32 level); */
+
+PERL_CALLCONV GV *
+Perl_gv_fetchmeth_pv(pTHX_ HV *stash, const char *name, I32 level, U32 flags);
+#define PERL_ARGS_ASSERT_GV_FETCHMETH_PV \
+ assert(name)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchmeth_pv_autoload(pTHX_ HV *stash, const char *name, I32 level, U32 flags);
+#define PERL_ARGS_ASSERT_GV_FETCHMETH_PV_AUTOLOAD \
+ assert(name)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchmeth_pvn(pTHX_ HV *stash, const char *name, STRLEN len, I32 level, U32 flags);
+#define PERL_ARGS_ASSERT_GV_FETCHMETH_PVN \
+ assert(name)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchmeth_pvn_autoload(pTHX_ HV *stash, const char *name, STRLEN len, I32 level, U32 flags);
+#define PERL_ARGS_ASSERT_GV_FETCHMETH_PVN_AUTOLOAD \
+ assert(name)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchmeth_sv(pTHX_ HV *stash, SV *namesv, I32 level, U32 flags);
+#define PERL_ARGS_ASSERT_GV_FETCHMETH_SV \
+ assert(namesv)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchmeth_sv_autoload(pTHX_ HV *stash, SV *namesv, I32 level, U32 flags);
+#define PERL_ARGS_ASSERT_GV_FETCHMETH_SV_AUTOLOAD \
+ assert(namesv)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchmethod_autoload(pTHX_ HV *stash, const char *name, I32 autoload);
+#define PERL_ARGS_ASSERT_GV_FETCHMETHOD_AUTOLOAD \
+ assert(stash); assert(name)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchmethod_pv_flags(pTHX_ HV *stash, const char *name, U32 flags);
+#define PERL_ARGS_ASSERT_GV_FETCHMETHOD_PV_FLAGS \
+ assert(stash); assert(name)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchmethod_pvn_flags(pTHX_ HV *stash, const char *name, const STRLEN len, U32 flags);
+#define PERL_ARGS_ASSERT_GV_FETCHMETHOD_PVN_FLAGS \
+ assert(stash); assert(name)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchmethod_sv_flags(pTHX_ HV *stash, SV *namesv, U32 flags);
+#define PERL_ARGS_ASSERT_GV_FETCHMETHOD_SV_FLAGS \
+ assert(stash); assert(namesv)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchpv(pTHX_ const char *nambeg, I32 flags, const svtype sv_type);
+#define PERL_ARGS_ASSERT_GV_FETCHPV \
+ assert(nambeg)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchpvn_flags(pTHX_ const char *name, STRLEN len, I32 flags, const svtype sv_type);
+#define PERL_ARGS_ASSERT_GV_FETCHPVN_FLAGS \
+ assert(name)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, const svtype sv_type);
+#define PERL_ARGS_ASSERT_GV_FETCHSV \
+ assert(name)
+
+PERL_CALLCONV void
+Perl_gv_fullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain);
+#define PERL_ARGS_ASSERT_GV_FULLNAME4 \
+ assert(sv); assert(gv)
+
+PERL_CALLCONV CV *
+Perl_gv_handler(pTHX_ HV *stash, I32 id)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_GV_HANDLER
-/* PERL_CALLCONV void gv_init(pTHX_ GV* gv, HV* stash, const char* name, STRLEN len, int multi); */
-#define PERL_ARGS_ASSERT_GV_INIT
-PERL_CALLCONV void Perl_gv_init_pv(pTHX_ GV* gv, HV* stash, const char* name, U32 flags);
-#define PERL_ARGS_ASSERT_GV_INIT_PV \
- assert(gv); assert(name)
-PERL_CALLCONV void Perl_gv_init_pvn(pTHX_ GV* gv, HV* stash, const char* name, STRLEN len, U32 flags);
-#define PERL_ARGS_ASSERT_GV_INIT_PVN \
- assert(gv); assert(name)
-PERL_CALLCONV void Perl_gv_init_sv(pTHX_ GV* gv, HV* stash, SV* namesv, U32 flags);
-#define PERL_ARGS_ASSERT_GV_INIT_SV \
- assert(gv); assert(namesv)
-PERL_CALLCONV void Perl_gv_name_set(pTHX_ GV* gv, const char *name, U32 len, U32 flags);
-#define PERL_ARGS_ASSERT_GV_NAME_SET \
- assert(gv); assert(name)
-PERL_CALLCONV GV * Perl_gv_override(pTHX_ const char * const name, const STRLEN len);
-#define PERL_ARGS_ASSERT_GV_OVERRIDE \
- assert(name)
-PERL_CALLCONV void Perl_gv_setref(pTHX_ SV *const dsv, SV *const ssv);
-#define PERL_ARGS_ASSERT_GV_SETREF \
- assert(dsv); assert(ssv)
-PERL_CALLCONV HV* Perl_gv_stashpv(pTHX_ const char* name, I32 flags);
-#define PERL_ARGS_ASSERT_GV_STASHPV \
- assert(name)
-PERL_CALLCONV HV* Perl_gv_stashpvn(pTHX_ const char* name, U32 namelen, I32 flags);
-#define PERL_ARGS_ASSERT_GV_STASHPVN \
- assert(name)
-PERL_CALLCONV HV* Perl_gv_stashsv(pTHX_ SV* sv, I32 flags);
-#define PERL_ARGS_ASSERT_GV_STASHSV \
- assert(sv)
-PERL_CALLCONV void Perl_gv_try_downgrade(pTHX_ GV* gv);
-#define PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE \
- assert(gv)
-PERL_CALLCONV AV** Perl_hv_backreferences_p(pTHX_ HV *hv);
-#define PERL_ARGS_ASSERT_HV_BACKREFERENCES_P \
- assert(hv)
-PERL_CALLCONV SV* Perl_hv_bucket_ratio(pTHX_ HV *hv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_BUCKET_RATIO \
- assert(hv)
-
-PERL_CALLCONV void Perl_hv_clear(pTHX_ HV *hv);
+/* PERL_CALLCONV void
+gv_init(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, int multi); */
+
+PERL_CALLCONV void
+Perl_gv_init_pv(pTHX_ GV *gv, HV *stash, const char *name, U32 flags);
+#define PERL_ARGS_ASSERT_GV_INIT_PV \
+ assert(gv); assert(name)
+
+PERL_CALLCONV void
+Perl_gv_init_pvn(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, U32 flags);
+#define PERL_ARGS_ASSERT_GV_INIT_PVN \
+ assert(gv); assert(name)
+
+PERL_CALLCONV void
+Perl_gv_init_sv(pTHX_ GV *gv, HV *stash, SV *namesv, U32 flags);
+#define PERL_ARGS_ASSERT_GV_INIT_SV \
+ assert(gv); assert(namesv)
+
+PERL_CALLCONV void
+Perl_gv_name_set(pTHX_ GV *gv, const char *name, U32 len, U32 flags);
+#define PERL_ARGS_ASSERT_GV_NAME_SET \
+ assert(gv); assert(name)
+
+PERL_CALLCONV GV *
+Perl_gv_override(pTHX_ const char * const name, const STRLEN len);
+#define PERL_ARGS_ASSERT_GV_OVERRIDE \
+ assert(name)
+
+PERL_CALLCONV void
+Perl_gv_setref(pTHX_ SV * const dsv, SV * const ssv)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_GV_SETREF \
+ assert(dsv); assert(ssv)
+
+PERL_CALLCONV HV *
+Perl_gv_stashpv(pTHX_ const char *name, I32 flags);
+#define PERL_ARGS_ASSERT_GV_STASHPV \
+ assert(name)
+
+PERL_CALLCONV HV *
+Perl_gv_stashpvn(pTHX_ const char *name, U32 namelen, I32 flags);
+#define PERL_ARGS_ASSERT_GV_STASHPVN \
+ assert(name)
+
+PERL_CALLCONV HV *
+Perl_gv_stashsv(pTHX_ SV *sv, I32 flags);
+#define PERL_ARGS_ASSERT_GV_STASHSV \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_gv_try_downgrade(pTHX_ GV *gv);
+#define PERL_ARGS_ASSERT_GV_TRY_DOWNGRADE \
+ assert(gv)
+
+PERL_CALLCONV struct xpvhv_aux *
+Perl_hv_auxalloc(pTHX_ HV *hv)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_HV_AUXALLOC \
+ assert(hv)
+
+PERL_CALLCONV AV **
+Perl_hv_backreferences_p(pTHX_ HV *hv)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_HV_BACKREFERENCES_P \
+ assert(hv)
+
+PERL_CALLCONV SV *
+Perl_hv_bucket_ratio(pTHX_ HV *hv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_HV_BUCKET_RATIO \
+ assert(hv)
+
+PERL_CALLCONV void
+Perl_hv_clear(pTHX_ HV *hv);
#define PERL_ARGS_ASSERT_HV_CLEAR
-PERL_CALLCONV void Perl_hv_clear_placeholders(pTHX_ HV *hv);
-#define PERL_ARGS_ASSERT_HV_CLEAR_PLACEHOLDERS \
- assert(hv)
-PERL_CALLCONV void* Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char* key, STRLEN klen, int flags, int action, SV *val, U32 hash);
-#define PERL_ARGS_ASSERT_HV_COMMON
-PERL_CALLCONV void* Perl_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 klen_i32, const int action, SV *val, const U32 hash);
-#define PERL_ARGS_ASSERT_HV_COMMON_KEY_LEN \
- assert(key)
-PERL_CALLCONV HV * Perl_hv_copy_hints_hv(pTHX_ HV *const ohv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_COPY_HINTS_HV
-PERL_CALLCONV void Perl_hv_delayfree_ent(pTHX_ HV *hv, HE *entry);
-#define PERL_ARGS_ASSERT_HV_DELAYFREE_ENT \
- assert(hv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV SV* Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen, I32 flags);
-#define PERL_ARGS_ASSERT_HV_DELETE \
- assert(key)
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV SV* Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash);
-#define PERL_ARGS_ASSERT_HV_DELETE_ENT \
- assert(keysv)
-#endif
-PERL_CALLCONV HE** Perl_hv_eiter_p(pTHX_ HV *hv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_EITER_P \
- assert(hv)
-
-PERL_CALLCONV void Perl_hv_eiter_set(pTHX_ HV *hv, HE *eiter);
-#define PERL_ARGS_ASSERT_HV_EITER_SET \
- assert(hv)
-PERL_CALLCONV void Perl_hv_ename_add(pTHX_ HV *hv, const char *name, U32 len, U32 flags);
-#define PERL_ARGS_ASSERT_HV_ENAME_ADD \
- assert(hv); assert(name)
-PERL_CALLCONV void Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, U32 flags);
-#define PERL_ARGS_ASSERT_HV_ENAME_DELETE \
- assert(hv); assert(name)
-#ifndef NO_MATHOMS
-PERL_CALLCONV bool Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_EXISTS \
- assert(key)
-#endif
+PERL_CALLCONV void
+Perl_hv_clear_placeholders(pTHX_ HV *hv);
+#define PERL_ARGS_ASSERT_HV_CLEAR_PLACEHOLDERS \
+ assert(hv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV bool Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_EXISTS_ENT \
- assert(keysv)
-#endif
+PERL_CALLCONV void *
+Perl_hv_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, int flags, int action, SV *val, U32 hash);
+#define PERL_ARGS_ASSERT_HV_COMMON
-#ifndef NO_MATHOMS
-PERL_CALLCONV SV** Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen, I32 lval);
-#define PERL_ARGS_ASSERT_HV_FETCH \
- assert(key)
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV HE* Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, U32 hash);
-#define PERL_ARGS_ASSERT_HV_FETCH_ENT \
- assert(keysv)
-#endif
-PERL_CALLCONV STRLEN Perl_hv_fill(pTHX_ HV *const hv);
-#define PERL_ARGS_ASSERT_HV_FILL \
- assert(hv)
-PERL_CALLCONV void Perl_hv_free_ent(pTHX_ HV *hv, HE *entry);
-#define PERL_ARGS_ASSERT_HV_FREE_ENT \
- assert(hv)
-PERL_CALLCONV I32 Perl_hv_iterinit(pTHX_ HV *hv);
-#define PERL_ARGS_ASSERT_HV_ITERINIT \
- assert(hv)
-PERL_CALLCONV char* Perl_hv_iterkey(pTHX_ HE* entry, I32* retlen)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_ITERKEY \
- assert(entry); assert(retlen)
-
-PERL_CALLCONV SV* Perl_hv_iterkeysv(pTHX_ HE* entry)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_ITERKEYSV \
- assert(entry)
-
-#ifndef NO_MATHOMS
-PERL_CALLCONV HE* Perl_hv_iternext(pTHX_ HV *hv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_ITERNEXT \
- assert(hv)
-#endif
+PERL_CALLCONV void *
+Perl_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 klen_i32, const int action, SV *val, const U32 hash);
+#define PERL_ARGS_ASSERT_HV_COMMON_KEY_LEN \
+ assert(key)
-PERL_CALLCONV HE* Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_ITERNEXT_FLAGS \
- assert(hv)
-
-PERL_CALLCONV SV* Perl_hv_iternextsv(pTHX_ HV *hv, char **key, I32 *retlen)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_ITERNEXTSV \
- assert(hv); assert(key); assert(retlen)
-
-PERL_CALLCONV SV* Perl_hv_iterval(pTHX_ HV *hv, HE *entry)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_ITERVAL \
- assert(hv); assert(entry)
-
-PERL_CALLCONV void Perl_hv_ksplit(pTHX_ HV *hv, IV newmax);
-#define PERL_ARGS_ASSERT_HV_KSPLIT \
- assert(hv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how);
-#define PERL_ARGS_ASSERT_HV_MAGIC \
- assert(hv)
-#endif
-PERL_CALLCONV void Perl_hv_name_set(pTHX_ HV *hv, const char *name, U32 len, U32 flags);
-#define PERL_ARGS_ASSERT_HV_NAME_SET \
- assert(hv)
-PERL_CALLCONV I32 Perl_hv_placeholders_get(pTHX_ const HV *hv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_GET \
- assert(hv)
-
-PERL_CALLCONV SSize_t* Perl_hv_placeholders_p(pTHX_ HV *hv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_P \
- assert(hv)
-
-PERL_CALLCONV void Perl_hv_placeholders_set(pTHX_ HV *hv, I32 ph);
-#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_SET \
- assert(hv)
-PERL_CALLCONV void Perl_hv_pushkv(pTHX_ HV *hv, U32 flags);
-#define PERL_ARGS_ASSERT_HV_PUSHKV \
- assert(hv)
-PERL_CALLCONV void Perl_hv_rand_set(pTHX_ HV *hv, U32 new_xhv_rand);
-#define PERL_ARGS_ASSERT_HV_RAND_SET \
- assert(hv)
-PERL_CALLCONV I32* Perl_hv_riter_p(pTHX_ HV *hv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_RITER_P \
- assert(hv)
-
-PERL_CALLCONV void Perl_hv_riter_set(pTHX_ HV *hv, I32 riter);
-#define PERL_ARGS_ASSERT_HV_RITER_SET \
- assert(hv)
-PERL_CALLCONV SV* Perl_hv_scalar(pTHX_ HV *hv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HV_SCALAR \
- assert(hv)
-
-#ifndef NO_MATHOMS
-PERL_CALLCONV SV** Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash);
-#define PERL_ARGS_ASSERT_HV_STORE
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV HE* Perl_hv_store_ent(pTHX_ HV *hv, SV *key, SV *val, U32 hash);
-#define PERL_ARGS_ASSERT_HV_STORE_ENT
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV SV** Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, int flags);
-#define PERL_ARGS_ASSERT_HV_STORE_FLAGS
-#endif
-/* PERL_CALLCONV void hv_undef(pTHX_ HV *hv); */
-#define PERL_ARGS_ASSERT_HV_UNDEF
-PERL_CALLCONV void Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags);
+PERL_CALLCONV HV *
+Perl_hv_copy_hints_hv(pTHX_ HV * const ohv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_HV_COPY_HINTS_HV
+
+PERL_CALLCONV void
+Perl_hv_delayfree_ent(pTHX_ HV *notused, HE *entry);
+#define PERL_ARGS_ASSERT_HV_DELAYFREE_ENT
+
+PERL_CALLCONV void
+Perl_hv_dump(pTHX_ HV *hv);
+#define PERL_ARGS_ASSERT_HV_DUMP
+
+PERL_CALLCONV HE **
+Perl_hv_eiter_p(pTHX_ HV *hv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_HV_EITER_P \
+ assert(hv)
+
+PERL_CALLCONV void
+Perl_hv_eiter_set(pTHX_ HV *hv, HE *eiter);
+#define PERL_ARGS_ASSERT_HV_EITER_SET \
+ assert(hv)
+
+PERL_CALLCONV void
+Perl_hv_ename_add(pTHX_ HV *hv, const char *name, U32 len, U32 flags)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_HV_ENAME_ADD \
+ assert(hv); assert(name)
+
+PERL_CALLCONV void
+Perl_hv_ename_delete(pTHX_ HV *hv, const char *name, U32 len, U32 flags)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_HV_ENAME_DELETE \
+ assert(hv); assert(name)
+
+PERL_CALLCONV STRLEN
+Perl_hv_fill(pTHX_ HV * const hv);
+#define PERL_ARGS_ASSERT_HV_FILL \
+ assert(hv)
+
+PERL_CALLCONV void
+Perl_hv_free_ent(pTHX_ HV *notused, HE *entry);
+#define PERL_ARGS_ASSERT_HV_FREE_ENT
+
+PERL_CALLCONV I32
+Perl_hv_iterinit(pTHX_ HV *hv);
+#define PERL_ARGS_ASSERT_HV_ITERINIT \
+ assert(hv)
+
+PERL_CALLCONV char *
+Perl_hv_iterkey(pTHX_ HE *entry, I32 *retlen)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_HV_ITERKEY \
+ assert(entry); assert(retlen)
+
+PERL_CALLCONV SV *
+Perl_hv_iterkeysv(pTHX_ HE *entry)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_HV_ITERKEYSV \
+ assert(entry)
+
+PERL_CALLCONV HE *
+Perl_hv_iternext_flags(pTHX_ HV *hv, I32 flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_HV_ITERNEXT_FLAGS \
+ assert(hv)
+
+PERL_CALLCONV SV *
+Perl_hv_iternextsv(pTHX_ HV *hv, char **key, I32 *retlen)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_HV_ITERNEXTSV \
+ assert(hv); assert(key); assert(retlen)
+
+PERL_CALLCONV SV *
+Perl_hv_iterval(pTHX_ HV *hv, HE *entry)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_HV_ITERVAL \
+ assert(hv); assert(entry)
+
+PERL_CALLCONV void
+Perl_hv_ksplit(pTHX_ HV *hv, IV newmax);
+#define PERL_ARGS_ASSERT_HV_KSPLIT \
+ assert(hv)
+
+PERL_CALLCONV void
+Perl_hv_name_set(pTHX_ HV *hv, const char *name, U32 len, U32 flags);
+#define PERL_ARGS_ASSERT_HV_NAME_SET \
+ assert(hv)
+
+PERL_CALLCONV I32
+Perl_hv_placeholders_get(pTHX_ const HV *hv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_GET \
+ assert(hv)
+
+PERL_CALLCONV SSize_t *
+Perl_hv_placeholders_p(pTHX_ HV *hv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_P \
+ assert(hv)
+
+PERL_CALLCONV void
+Perl_hv_placeholders_set(pTHX_ HV *hv, I32 ph);
+#define PERL_ARGS_ASSERT_HV_PLACEHOLDERS_SET \
+ assert(hv)
+
+PERL_CALLCONV void
+Perl_hv_pushkv(pTHX_ HV *hv, U32 flags)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_HV_PUSHKV \
+ assert(hv)
+
+PERL_CALLCONV void
+Perl_hv_rand_set(pTHX_ HV *hv, U32 new_xhv_rand);
+#define PERL_ARGS_ASSERT_HV_RAND_SET \
+ assert(hv)
+
+PERL_CALLCONV I32 *
+Perl_hv_riter_p(pTHX_ HV *hv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_HV_RITER_P \
+ assert(hv)
+
+PERL_CALLCONV void
+Perl_hv_riter_set(pTHX_ HV *hv, I32 riter);
+#define PERL_ARGS_ASSERT_HV_RITER_SET \
+ assert(hv)
+
+PERL_CALLCONV SV *
+Perl_hv_scalar(pTHX_ HV *hv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_HV_SCALAR \
+ assert(hv)
+
+/* PERL_CALLCONV SV **
+hv_stores(pTHX_ HV *hv, const char * const key, SV *val); */
+
+/* PERL_CALLCONV void
+hv_undef(pTHX_ HV *hv); */
+
+PERL_CALLCONV void
+Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags);
#define PERL_ARGS_ASSERT_HV_UNDEF_FLAGS
-/* PERL_CALLCONV I32 ibcmp(pTHX_ const char* a, const char* b, I32 len)
- __attribute__warn_unused_result__
- __attribute__pure__; */
-#define PERL_ARGS_ASSERT_IBCMP
-
-/* PERL_CALLCONV I32 ibcmp_locale(pTHX_ const char* a, const char* b, I32 len)
- __attribute__warn_unused_result__
- __attribute__pure__; */
-#define PERL_ARGS_ASSERT_IBCMP_LOCALE
-
-/* PERL_CALLCONV I32 ibcmp_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2); */
-#define PERL_ARGS_ASSERT_IBCMP_UTF8
-PERL_CALLCONV void Perl_init_argv_symbols(pTHX_ int argc, char **argv);
-#define PERL_ARGS_ASSERT_INIT_ARGV_SYMBOLS \
- assert(argv)
-PERL_CALLCONV void Perl_init_constants(pTHX);
+
+/* PERL_CALLCONV I32
+ibcmp(pTHX_ const char *a, const char *b, I32 len)
+ __attribute__warn_unused_result__
+ __attribute__pure__; */
+
+/* PERL_CALLCONV I32
+ibcmp_locale(pTHX_ const char *a, const char *b, I32 len)
+ __attribute__warn_unused_result__
+ __attribute__pure__; */
+
+/* PERL_CALLCONV I32
+ibcmp_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2); */
+
+PERL_CALLCONV STRLEN
+Perl_infix_plugin_standard(pTHX_ char *operator_ptr, STRLEN operator_len, struct Perl_custom_infix **def);
+#define PERL_ARGS_ASSERT_INFIX_PLUGIN_STANDARD \
+ assert(operator_ptr); assert(def)
+
+PERL_CALLCONV void
+Perl_init_argv_symbols(pTHX_ int argc, char **argv)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_INIT_ARGV_SYMBOLS \
+ assert(argv)
+
+PERL_CALLCONV void
+Perl_init_constants(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_INIT_CONSTANTS
-PERL_CALLCONV void Perl_init_dbargs(pTHX);
+
+PERL_CALLCONV void
+Perl_init_dbargs(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_INIT_DBARGS
-PERL_CALLCONV void Perl_init_debugger(pTHX);
+
+PERL_CALLCONV void
+Perl_init_debugger(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_INIT_DEBUGGER
-PERL_CALLCONV int Perl_init_i18nl10n(pTHX_ int printwarn);
+
+PERL_CALLCONV int
+Perl_init_i18nl10n(pTHX_ int printwarn);
#define PERL_ARGS_ASSERT_INIT_I18NL10N
-#ifndef NO_MATHOMS
-PERL_CALLCONV int Perl_init_i18nl14n(pTHX_ int printwarn)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_INIT_I18NL14N
-#endif
-PERL_CALLCONV void Perl_init_named_cv(pTHX_ CV *cv, OP *nameop);
-#define PERL_ARGS_ASSERT_INIT_NAMED_CV \
- assert(cv); assert(nameop)
-PERL_CALLCONV void Perl_init_stacks(pTHX);
-#define PERL_ARGS_ASSERT_INIT_STACKS
-PERL_CALLCONV void Perl_init_tm(pTHX_ struct tm *ptm);
-#define PERL_ARGS_ASSERT_INIT_TM \
- assert(ptm)
-PERL_CALLCONV void Perl_init_uniprops(pTHX);
-#define PERL_ARGS_ASSERT_INIT_UNIPROPS
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_instr(const char* big, const char* little)
- __attribute__warn_unused_result__
- __attribute__pure__;
-#define PERL_ARGS_ASSERT_INSTR \
- assert(big); assert(little)
-#endif
+PERL_CALLCONV void
+Perl_init_named_cv(pTHX_ CV *cv, OP *nameop);
+#define PERL_ARGS_ASSERT_INIT_NAMED_CV \
+ assert(cv); assert(nameop)
-PERL_CALLCONV U32 Perl_intro_my(pTHX);
-#define PERL_ARGS_ASSERT_INTRO_MY
-PERL_CALLCONV OP* Perl_invert(pTHX_ OP* cmd)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_INVERT
+PERL_CALLCONV void
+Perl_init_stacks(pTHX);
+#define PERL_ARGS_ASSERT_INIT_STACKS
-PERL_CALLCONV void Perl_invmap_dump(pTHX_ SV* invlist, UV * map);
-#define PERL_ARGS_ASSERT_INVMAP_DUMP \
- assert(invlist); assert(map)
-PERL_CALLCONV bool Perl_io_close(pTHX_ IO* io, GV *gv, bool not_implicit, bool warn_on_fail);
-#define PERL_ARGS_ASSERT_IO_CLOSE \
- assert(io)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE Size_t Perl_isC9_STRICT_UTF8_CHAR(const U8 * const s0, const U8 * const e)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ISC9_STRICT_UTF8_CHAR \
- assert(s0); assert(e)
-#endif
+PERL_CALLCONV void
+Perl_init_tm(pTHX_ struct tm *ptm);
+#define PERL_ARGS_ASSERT_INIT_TM \
+ assert(ptm)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE Size_t Perl_isSTRICT_UTF8_CHAR(const U8 * const s0, const U8 * const e)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ISSTRICT_UTF8_CHAR \
- assert(s0); assert(e)
-#endif
+PERL_CALLCONV void
+Perl_init_uniprops(pTHX)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_INIT_UNIPROPS
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE Size_t Perl_isUTF8_CHAR(const U8 * const s0, const U8 * const e)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ISUTF8_CHAR \
- assert(s0); assert(e)
-#endif
+PERL_CALLCONV U32
+Perl_intro_my(pTHX);
+#define PERL_ARGS_ASSERT_INTRO_MY
-/* PERL_CALLCONV bool is_ascii_string(const U8* const s, STRLEN len)
- __attribute__warn_unused_result__
- __attribute__pure__; */
-#define PERL_ARGS_ASSERT_IS_ASCII_STRING
-
-/* PERL_CALLCONV bool is_c9strict_utf8_string(const U8 *s, STRLEN len)
- __attribute__warn_unused_result__; */
-#define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING
-
-/* PERL_CALLCONV bool is_c9strict_utf8_string_loc(const U8 *s, STRLEN len, const U8 **ep); */
-#define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING_LOC
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_is_c9strict_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el);
-#define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING_LOCLEN \
- assert(s)
-#endif
-/* PERL_CALLCONV bool is_invariant_string(const U8* const s, STRLEN len)
- __attribute__warn_unused_result__
- __attribute__pure__; */
-#define PERL_ARGS_ASSERT_IS_INVARIANT_STRING
+PERL_CALLCONV OP *
+Perl_invert(pTHX_ OP *cmd)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_INVERT
-PERL_CALLCONV I32 Perl_is_lvalue_sub(pTHX)
- __attribute__warn_unused_result__;
+PERL_CALLCONV void
+Perl_invmap_dump(pTHX_ SV *invlist, UV *map)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_INVMAP_DUMP \
+ assert(invlist); assert(map)
+
+PERL_CALLCONV bool
+Perl_io_close(pTHX_ IO *io, GV *gv, bool is_explicit, bool warn_on_fail)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_IO_CLOSE \
+ assert(io)
+
+/* PERL_CALLCONV bool
+is_ascii_string(const U8 * const s, STRLEN len)
+ __attribute__warn_unused_result__
+ __attribute__pure__; */
+
+/* PERL_CALLCONV bool
+is_c9strict_utf8_string(const U8 *s, STRLEN len)
+ __attribute__warn_unused_result__; */
+
+/* PERL_CALLCONV bool
+is_c9strict_utf8_string_loc(const U8 *s, STRLEN len, const U8 **ep); */
+
+/* PERL_CALLCONV bool
+is_invariant_string(const U8 * const s, STRLEN len)
+ __attribute__warn_unused_result__
+ __attribute__pure__; */
+
+PERL_CALLCONV I32
+Perl_is_lvalue_sub(pTHX)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_IS_LVALUE_SUB
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_is_safe_syscall(pTHX_ const char *pv, STRLEN len, const char *what, const char *op_name)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_IS_SAFE_SYSCALL \
- assert(pv); assert(what); assert(op_name)
-#endif
-
-/* PERL_CALLCONV bool is_strict_utf8_string(const U8 *s, STRLEN len)
- __attribute__warn_unused_result__; */
-#define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING
-
-/* PERL_CALLCONV bool is_strict_utf8_string_loc(const U8 *s, STRLEN len, const U8 **ep); */
-#define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING_LOC
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_is_strict_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el);
-#define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING_LOCLEN \
- assert(s)
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV STRLEN Perl_is_utf8_char(const U8 *s)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_IS_UTF8_CHAR \
- assert(s)
-#endif
-
-#ifndef NO_MATHOMS
-PERL_CALLCONV STRLEN Perl_is_utf8_char_buf(const U8 *buf, const U8 *buf_end);
-#define PERL_ARGS_ASSERT_IS_UTF8_CHAR_BUF \
- assert(buf); assert(buf_end)
-#endif
-PERL_CALLCONV STRLEN Perl_is_utf8_char_helper(const U8 * const s, const U8 * e, const U32 flags)
- __attribute__warn_unused_result__
- __attribute__pure__;
-#define PERL_ARGS_ASSERT_IS_UTF8_CHAR_HELPER \
- assert(s); assert(e)
-
-/* PERL_CALLCONV bool is_utf8_fixed_width_buf_flags(const U8 * const s, STRLEN len, const U32 flags); */
-#define PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_FLAGS
-/* PERL_CALLCONV bool is_utf8_fixed_width_buf_loc_flags(const U8 * const s, STRLEN len, const U8 **ep, const U32 flags); */
-#define PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_LOC_FLAGS
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_is_utf8_fixed_width_buf_loclen_flags(const U8 * const s, STRLEN len, const U8 **ep, STRLEN *el, const U32 flags);
-#define PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_LOCLEN_FLAGS \
- assert(s)
-#endif
-/* PERL_CALLCONV bool is_utf8_invariant_string(const U8* const s, STRLEN len)
- __attribute__warn_unused_result__; */
-#define PERL_ARGS_ASSERT_IS_UTF8_INVARIANT_STRING
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_is_utf8_invariant_string_loc(const U8* const s, STRLEN len, const U8 ** ep)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_IS_UTF8_INVARIANT_STRING_LOC \
- assert(s)
-#endif
-
-/* PERL_CALLCONV bool is_utf8_string(const U8 *s, STRLEN len)
- __attribute__warn_unused_result__; */
-#define PERL_ARGS_ASSERT_IS_UTF8_STRING
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_is_utf8_string_flags(const U8 *s, STRLEN len, const U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_IS_UTF8_STRING_FLAGS \
- assert(s)
-#endif
-
-#ifndef NO_MATHOMS
-PERL_CALLCONV bool Perl_is_utf8_string_loc(const U8 *s, const STRLEN len, const U8 **ep);
-#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC \
- assert(s); assert(ep)
-#endif
-/* PERL_CALLCONV bool is_utf8_string_loc_flags(const U8 *s, STRLEN len, const U8 **ep, const U32 flags); */
-#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC_FLAGS
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el);
-#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN \
- assert(s)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_is_utf8_string_loclen_flags(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el, const U32 flags);
-#define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN_FLAGS \
- assert(s)
-#endif
-/* PERL_CALLCONV bool is_utf8_valid_partial_char(const U8 * const s, const U8 * const e)
- __attribute__warn_unused_result__
- __attribute__pure__; */
-#define PERL_ARGS_ASSERT_IS_UTF8_VALID_PARTIAL_CHAR
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_is_utf8_valid_partial_char_flags(const U8 * const s, const U8 * const e, const U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_IS_UTF8_VALID_PARTIAL_CHAR_FLAGS \
- assert(s); assert(e)
-#endif
-
-PERL_CALLCONV bool Perl_isinfnan(NV nv)
- __attribute__warn_unused_result__
- __attribute__pure__;
+/* PERL_CALLCONV bool
+is_strict_utf8_string(const U8 *s, STRLEN len)
+ __attribute__warn_unused_result__; */
+
+/* PERL_CALLCONV bool
+is_strict_utf8_string_loc(const U8 *s, STRLEN len, const U8 **ep); */
+
+PERL_CALLCONV Size_t
+Perl_is_utf8_FF_helper_(const U8 * const s0, const U8 * const e, const bool require_partial)
+ __attribute__warn_unused_result__
+ __attribute__pure__;
+#define PERL_ARGS_ASSERT_IS_UTF8_FF_HELPER_ \
+ assert(s0); assert(e)
+
+PERL_CALLCONV STRLEN
+Perl_is_utf8_char_helper_(const U8 * const s, const U8 *e, const U32 flags)
+ __attribute__warn_unused_result__
+ __attribute__pure__;
+#define PERL_ARGS_ASSERT_IS_UTF8_CHAR_HELPER_ \
+ assert(s); assert(e)
+
+/* PERL_CALLCONV bool
+is_utf8_fixed_width_buf_flags(const U8 * const s, STRLEN len, const U32 flags); */
+
+/* PERL_CALLCONV bool
+is_utf8_fixed_width_buf_loc_flags(const U8 * const s, STRLEN len, const U8 **ep, const U32 flags); */
+
+/* PERL_CALLCONV bool
+is_utf8_invariant_string(const U8 * const s, STRLEN len)
+ __attribute__warn_unused_result__; */
+
+/* PERL_CALLCONV bool
+is_utf8_string(const U8 *s, STRLEN len)
+ __attribute__warn_unused_result__; */
+
+/* PERL_CALLCONV bool
+is_utf8_string_loc_flags(const U8 *s, STRLEN len, const U8 **ep, const U32 flags); */
+
+/* PERL_CALLCONV bool
+is_utf8_valid_partial_char(const U8 * const s0, const U8 * const e)
+ __attribute__warn_unused_result__
+ __attribute__pure__; */
+
+PERL_CALLCONV bool
+Perl_isinfnan(NV nv)
+ __attribute__warn_unused_result__
+ __attribute__pure__;
#define PERL_ARGS_ASSERT_ISINFNAN
-PERL_CALLCONV bool Perl_isinfnansv(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_ISINFNANSV \
- assert(sv)
-PERL_CALLCONV OP* Perl_jmaybe(pTHX_ OP *o);
-#define PERL_ARGS_ASSERT_JMAYBE \
- assert(o)
-PERL_CALLCONV I32 Perl_keyword(pTHX_ const char *name, I32 len, bool all_keywords)
- __attribute__warn_unused_result__
- __attribute__pure__;
-#define PERL_ARGS_ASSERT_KEYWORD \
- assert(name)
-
-PERL_CALLCONV int Perl_keyword_plugin_standard(pTHX_ char* keyword_ptr, STRLEN keyword_len, OP** op_ptr);
-#define PERL_ARGS_ASSERT_KEYWORD_PLUGIN_STANDARD \
- assert(keyword_ptr); assert(op_ptr)
-PERL_CALLCONV void Perl_leave_adjust_stacks(pTHX_ SV **from_sp, SV **to_sp, U8 gimme, int filter);
-#define PERL_ARGS_ASSERT_LEAVE_ADJUST_STACKS \
- assert(from_sp); assert(to_sp)
-PERL_CALLCONV void Perl_leave_scope(pTHX_ I32 base);
+PERL_CALLCONV bool
+Perl_isinfnansv(pTHX_ SV *sv)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_ISINFNANSV \
+ assert(sv)
+
+PERL_CALLCONV OP *
+Perl_jmaybe(pTHX_ OP *o)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_JMAYBE \
+ assert(o)
+
+PERL_CALLCONV I32
+Perl_keyword(pTHX_ const char *name, I32 len, bool all_keywords)
+ __attribute__warn_unused_result__
+ __attribute__pure__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_KEYWORD \
+ assert(name)
+
+PERL_CALLCONV int
+Perl_keyword_plugin_standard(pTHX_ char *keyword_ptr, STRLEN keyword_len, OP **op_ptr);
+#define PERL_ARGS_ASSERT_KEYWORD_PLUGIN_STANDARD \
+ assert(keyword_ptr); assert(op_ptr)
+
+PERL_CALLCONV void
+Perl_leave_adjust_stacks(pTHX_ SV **from_sp, SV **to_sp, U8 gimme, int filter);
+#define PERL_ARGS_ASSERT_LEAVE_ADJUST_STACKS \
+ assert(from_sp); assert(to_sp)
+
+PERL_CALLCONV void
+Perl_leave_scope(pTHX_ I32 base);
#define PERL_ARGS_ASSERT_LEAVE_SCOPE
-PERL_CALLCONV bool Perl_lex_bufutf8(pTHX);
+
+PERL_CALLCONV bool
+Perl_lex_bufutf8(pTHX);
#define PERL_ARGS_ASSERT_LEX_BUFUTF8
-PERL_CALLCONV void Perl_lex_discard_to(pTHX_ char* ptr);
-#define PERL_ARGS_ASSERT_LEX_DISCARD_TO \
- assert(ptr)
-PERL_CALLCONV char* Perl_lex_grow_linestr(pTHX_ STRLEN len);
+
+PERL_CALLCONV void
+Perl_lex_discard_to(pTHX_ char *ptr);
+#define PERL_ARGS_ASSERT_LEX_DISCARD_TO \
+ assert(ptr)
+
+PERL_CALLCONV char *
+Perl_lex_grow_linestr(pTHX_ STRLEN len);
#define PERL_ARGS_ASSERT_LEX_GROW_LINESTR
-PERL_CALLCONV bool Perl_lex_next_chunk(pTHX_ U32 flags);
+
+PERL_CALLCONV bool
+Perl_lex_next_chunk(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_LEX_NEXT_CHUNK
-PERL_CALLCONV I32 Perl_lex_peek_unichar(pTHX_ U32 flags);
+
+PERL_CALLCONV I32
+Perl_lex_peek_unichar(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_LEX_PEEK_UNICHAR
-PERL_CALLCONV void Perl_lex_read_space(pTHX_ U32 flags);
+
+PERL_CALLCONV void
+Perl_lex_read_space(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_LEX_READ_SPACE
-PERL_CALLCONV void Perl_lex_read_to(pTHX_ char* ptr);
-#define PERL_ARGS_ASSERT_LEX_READ_TO \
- assert(ptr)
-PERL_CALLCONV I32 Perl_lex_read_unichar(pTHX_ U32 flags);
+
+PERL_CALLCONV void
+Perl_lex_read_to(pTHX_ char *ptr);
+#define PERL_ARGS_ASSERT_LEX_READ_TO \
+ assert(ptr)
+
+PERL_CALLCONV I32
+Perl_lex_read_unichar(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_LEX_READ_UNICHAR
-PERL_CALLCONV void Perl_lex_start(pTHX_ SV* line, PerlIO *rsfp, U32 flags);
+
+PERL_CALLCONV void
+Perl_lex_start(pTHX_ SV *line, PerlIO *rsfp, U32 flags);
#define PERL_ARGS_ASSERT_LEX_START
-PERL_CALLCONV void Perl_lex_stuff_pv(pTHX_ const char* pv, U32 flags);
-#define PERL_ARGS_ASSERT_LEX_STUFF_PV \
- assert(pv)
-PERL_CALLCONV void Perl_lex_stuff_pvn(pTHX_ const char* pv, STRLEN len, U32 flags);
-#define PERL_ARGS_ASSERT_LEX_STUFF_PVN \
- assert(pv)
-PERL_CALLCONV void Perl_lex_stuff_sv(pTHX_ SV* sv, U32 flags);
-#define PERL_ARGS_ASSERT_LEX_STUFF_SV \
- assert(sv)
-PERL_CALLCONV void Perl_lex_unstuff(pTHX_ char* ptr);
-#define PERL_ARGS_ASSERT_LEX_UNSTUFF \
- assert(ptr)
-PERL_CALLCONV OP* Perl_list(pTHX_ OP* o);
+
+PERL_CALLCONV void
+Perl_lex_stuff_pv(pTHX_ const char *pv, U32 flags);
+#define PERL_ARGS_ASSERT_LEX_STUFF_PV \
+ assert(pv)
+
+PERL_CALLCONV void
+Perl_lex_stuff_pvn(pTHX_ const char *pv, STRLEN len, U32 flags);
+#define PERL_ARGS_ASSERT_LEX_STUFF_PVN \
+ assert(pv)
+
+PERL_CALLCONV void
+Perl_lex_stuff_sv(pTHX_ SV *sv, U32 flags);
+#define PERL_ARGS_ASSERT_LEX_STUFF_SV \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_lex_unstuff(pTHX_ char *ptr);
+#define PERL_ARGS_ASSERT_LEX_UNSTUFF \
+ assert(ptr)
+
+PERL_CALLCONV OP *
+Perl_list(pTHX_ OP *o)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_LIST
-PERL_CALLCONV HV* Perl_load_charnames(pTHX_ SV * char_name, const char * context, const STRLEN context_len, const char ** error_msg)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_LOAD_CHARNAMES \
- assert(char_name); assert(context); assert(error_msg)
-
-PERL_CALLCONV void Perl_load_module(pTHX_ U32 flags, SV* name, SV* ver, ...);
-#define PERL_ARGS_ASSERT_LOAD_MODULE \
- assert(name)
-PERL_CALLCONV OP* Perl_localize(pTHX_ OP *o, I32 lex);
-#define PERL_ARGS_ASSERT_LOCALIZE \
- assert(o)
-PERL_CALLCONV I32 Perl_looks_like_number(pTHX_ SV *const sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER \
- assert(sv)
-
-PERL_CALLCONV int Perl_magic_clear_all_env(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_CLEAR_ALL_ENV \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_cleararylen_p(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_CLEARARYLEN_P \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_clearenv(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_CLEARENV \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_clearhint(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_CLEARHINT \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_clearhints(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_CLEARHINTS \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_clearisa(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_CLEARISA \
- assert(mg)
-PERL_CALLCONV int Perl_magic_clearpack(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_CLEARPACK \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_clearsig(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_CLEARSIG \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_copycallchecker(pTHX_ SV* sv, MAGIC *mg, SV *nsv, const char *name, I32 namlen);
-#define PERL_ARGS_ASSERT_MAGIC_COPYCALLCHECKER \
- assert(sv); assert(mg); assert(nsv)
-PERL_CALLCONV void Perl_magic_dump(pTHX_ const MAGIC *mg);
+
+PERL_CALLCONV HV *
+Perl_load_charnames(pTHX_ SV *char_name, const char *context, const STRLEN context_len, const char **error_msg)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_LOAD_CHARNAMES \
+ assert(char_name); assert(context); assert(error_msg)
+
+PERL_CALLCONV void
+Perl_load_module(pTHX_ U32 flags, SV *name, SV *ver, ...);
+#define PERL_ARGS_ASSERT_LOAD_MODULE \
+ assert(name)
+
+PERL_CALLCONV_NO_RET void
+Perl_locale_panic(const char *msg, const char *file_name, const line_t line, const int errnum)
+ __attribute__noreturn__;
+#define PERL_ARGS_ASSERT_LOCALE_PANIC \
+ assert(msg); assert(file_name)
+
+PERL_CALLCONV OP *
+Perl_localize(pTHX_ OP *o, I32 lex)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_LOCALIZE \
+ assert(o)
+
+PERL_CALLCONV I32
+Perl_looks_like_number(pTHX_ SV * const sv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_LOOKS_LIKE_NUMBER \
+ assert(sv)
+
+PERL_CALLCONV int
+Perl_magic_clear_all_env(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_CLEAR_ALL_ENV \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_cleararylen_p(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_CLEARARYLEN_P \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_clearenv(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_CLEARENV \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_clearhint(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_CLEARHINT \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_clearhints(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_CLEARHINTS \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_clearhook(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_CLEARHOOK \
+ assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_clearhookall(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_CLEARHOOKALL \
+ assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_clearisa(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_CLEARISA \
+ assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_clearpack(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_CLEARPACK \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_clearsig(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_CLEARSIG \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_copycallchecker(pTHX_ SV *sv, MAGIC *mg, SV *nsv, const char *name, I32 namlen)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_COPYCALLCHECKER \
+ assert(sv); assert(mg); assert(nsv)
+
+PERL_CALLCONV void
+Perl_magic_dump(pTHX_ const MAGIC *mg);
#define PERL_ARGS_ASSERT_MAGIC_DUMP
-PERL_CALLCONV int Perl_magic_existspack(pTHX_ SV* sv, const MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_EXISTSPACK \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_freearylen_p(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_FREEARYLEN_P \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_freemglob(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_FREEMGLOB \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_freeovrld(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_FREEOVRLD \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_freeutf8(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_FREEUTF8 \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_get(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_GET \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_getarylen(pTHX_ SV* sv, const MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_GETARYLEN \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_getdebugvar(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_GETDEBUGVAR \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_getdefelem(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_GETDEFELEM \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_getnkeys(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_GETNKEYS \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_getpack(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_GETPACK \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_getpos(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_GETPOS \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_getsig(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_GETSIG \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_getsubstr(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_GETSUBSTR \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_gettaint(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_GETTAINT \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_getuvar(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_GETUVAR \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_getvec(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_GETVEC \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg);
-#define PERL_ARGS_ASSERT_MAGIC_KILLBACKREFS \
- assert(sv); assert(mg)
-PERL_CALLCONV SV* Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags, U32 argc, ...);
-#define PERL_ARGS_ASSERT_MAGIC_METHCALL \
- assert(sv); assert(mg); assert(meth)
-PERL_CALLCONV int Perl_magic_nextpack(pTHX_ SV *sv, MAGIC *mg, SV *key);
-#define PERL_ARGS_ASSERT_MAGIC_NEXTPACK \
- assert(sv); assert(mg); assert(key)
-PERL_CALLCONV U32 Perl_magic_regdata_cnt(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_REGDATA_CNT \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_regdatum_get(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_REGDATUM_GET \
- assert(sv); assert(mg)
-PERL_CALLCONV SV* Perl_magic_scalarpack(pTHX_ HV *hv, MAGIC *mg);
-#define PERL_ARGS_ASSERT_MAGIC_SCALARPACK \
- assert(hv); assert(mg)
-PERL_CALLCONV int Perl_magic_set(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SET \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_set_all_env(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SET_ALL_ENV \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setarylen(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETARYLEN \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setdbline(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETDBLINE \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setdebugvar(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETDEBUGVAR \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setdefelem(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETDEFELEM \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setenv(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETENV \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_sethint(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETHINT \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setisa(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETISA \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setlvref(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETLVREF \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setmglob(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETMGLOB \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setnkeys(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETNKEYS \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setnonelem(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETNONELEM \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setpack(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETPACK \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setpos(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETPOS \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setregexp(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETREGEXP \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setsig(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETSIG \
- assert(mg)
-PERL_CALLCONV int Perl_magic_setsubstr(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETSUBSTR \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_settaint(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETTAINT \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setutf8(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETUTF8 \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setuvar(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETUVAR \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setvec(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETVEC \
- assert(sv); assert(mg)
-PERL_CALLCONV U32 Perl_magic_sizepack(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SIZEPACK \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_wipepack(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_WIPEPACK \
- assert(sv); assert(mg)
-PERL_CALLCONV Malloc_t Perl_malloc(MEM_SIZE nbytes)
- __attribute__malloc__
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV int
+Perl_magic_existspack(pTHX_ SV *sv, const MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_EXISTSPACK \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_freearylen_p(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_FREEARYLEN_P \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_freedestruct(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_FREEDESTRUCT \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_freemglob(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_FREEMGLOB \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_freeovrld(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_FREEOVRLD \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_freeutf8(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_FREEUTF8 \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_get(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_GET \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_getarylen(pTHX_ SV *sv, const MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_GETARYLEN \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_getdebugvar(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_GETDEBUGVAR \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_getdefelem(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_GETDEFELEM \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_getnkeys(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_GETNKEYS \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_getpack(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_GETPACK \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_getpos(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_GETPOS \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_getsig(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_GETSIG \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_getsubstr(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_GETSUBSTR \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_gettaint(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_GETTAINT \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_getuvar(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_GETUVAR \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_getvec(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_GETVEC \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_KILLBACKREFS \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV SV *
+Perl_magic_methcall(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags, U32 argc, ...)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_METHCALL \
+ assert(sv); assert(mg); assert(meth)
+
+PERL_CALLCONV int
+Perl_magic_nextpack(pTHX_ SV *sv, MAGIC *mg, SV *key)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_NEXTPACK \
+ assert(sv); assert(mg); assert(key)
+
+PERL_CALLCONV U32
+Perl_magic_regdata_cnt(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_REGDATA_CNT \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_regdatum_get(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_REGDATUM_GET \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV SV *
+Perl_magic_scalarpack(pTHX_ HV *hv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SCALARPACK \
+ assert(hv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_set(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SET \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_set_all_env(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SET_ALL_ENV \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setarylen(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETARYLEN \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setdbline(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETDBLINE \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setdebugvar(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETDEBUGVAR \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setdefelem(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETDEFELEM \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setenv(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETENV \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_sethint(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETHINT \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_sethook(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETHOOK \
+ assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_sethookall(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETHOOKALL \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setisa(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETISA \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setlvref(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETLVREF \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setmglob(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETMGLOB \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setnkeys(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETNKEYS \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setnonelem(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETNONELEM \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setpack(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETPACK \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setpos(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETPOS \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setregexp(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETREGEXP \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setsig(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETSIG \
+ assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setsigall(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETSIGALL \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setsubstr(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETSUBSTR \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_settaint(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETTAINT \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setutf8(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETUTF8 \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setuvar(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETUVAR \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setvec(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SETVEC \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV U32
+Perl_magic_sizepack(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_SIZEPACK \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_wipepack(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MAGIC_WIPEPACK \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV Malloc_t
+Perl_malloc(MEM_SIZE nbytes)
+ __attribute__malloc__
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MALLOC
-PERL_CALLCONV I32 * Perl_markstack_grow(pTHX);
+PERL_CALLCONV I32 *
+Perl_markstack_grow(pTHX);
#define PERL_ARGS_ASSERT_MARKSTACK_GROW
-PERL_CALLCONV SV* Perl_mess(pTHX_ const char* pat, ...)
- __attribute__format__(__printf__,pTHX_1,pTHX_2);
-#define PERL_ARGS_ASSERT_MESS \
- assert(pat)
-
-PERL_CALLCONV SV* Perl_mess_sv(pTHX_ SV* basemsg, bool consume);
-#define PERL_ARGS_ASSERT_MESS_SV \
- assert(basemsg)
-PERL_CALLCONV Free_t Perl_mfree(Malloc_t where);
+
+PERL_CALLCONV int
+Perl_mbtowc_(pTHX_ const wchar_t *pwc, const char *s, const Size_t len);
+#define PERL_ARGS_ASSERT_MBTOWC_
+
+PERL_CALLCONV SV *
+Perl_mess(pTHX_ const char *pat, ...)
+ __attribute__format__(__printf__,pTHX_1,pTHX_2);
+#define PERL_ARGS_ASSERT_MESS \
+ assert(pat)
+
+PERL_CALLCONV SV *
+Perl_mess_sv(pTHX_ SV *basemsg, bool consume);
+#define PERL_ARGS_ASSERT_MESS_SV \
+ assert(basemsg)
+
+PERL_CALLCONV Free_t
+Perl_mfree(Malloc_t where);
#define PERL_ARGS_ASSERT_MFREE
-PERL_CALLCONV int Perl_mg_clear(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_MG_CLEAR \
- assert(sv)
-PERL_CALLCONV int Perl_mg_copy(pTHX_ SV *sv, SV *nsv, const char *key, I32 klen);
-#define PERL_ARGS_ASSERT_MG_COPY \
- assert(sv); assert(nsv)
-PERL_CALLCONV MAGIC* Perl_mg_find(const SV* sv, int type)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV int
+Perl_mg_clear(pTHX_ SV *sv);
+#define PERL_ARGS_ASSERT_MG_CLEAR \
+ assert(sv)
+
+PERL_CALLCONV int
+Perl_mg_copy(pTHX_ SV *sv, SV *nsv, const char *key, I32 klen);
+#define PERL_ARGS_ASSERT_MG_COPY \
+ assert(sv); assert(nsv)
+
+PERL_CALLCONV MAGIC *
+Perl_mg_find(const SV *sv, int type)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MG_FIND
-PERL_CALLCONV MAGIC* Perl_mg_find_mglob(pTHX_ SV* sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_MG_FIND_MGLOB \
- assert(sv)
+PERL_CALLCONV MAGIC *
+Perl_mg_find_mglob(pTHX_ SV *sv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_MG_FIND_MGLOB \
+ assert(sv)
-PERL_CALLCONV MAGIC* Perl_mg_findext(const SV* sv, int type, const MGVTBL *vtbl)
- __attribute__warn_unused_result__;
+PERL_CALLCONV MAGIC *
+Perl_mg_findext(const SV *sv, int type, const MGVTBL *vtbl)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_MG_FINDEXT
-PERL_CALLCONV int Perl_mg_free(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_MG_FREE \
- assert(sv)
-PERL_CALLCONV void Perl_mg_free_type(pTHX_ SV* sv, int how);
-#define PERL_ARGS_ASSERT_MG_FREE_TYPE \
- assert(sv)
-PERL_CALLCONV void Perl_mg_freeext(pTHX_ SV* sv, int how, const MGVTBL *vtbl);
-#define PERL_ARGS_ASSERT_MG_FREEEXT \
- assert(sv)
-PERL_CALLCONV int Perl_mg_get(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_MG_GET \
- assert(sv)
-PERL_CALLCONV U32 Perl_mg_length(pTHX_ SV* sv)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_MG_LENGTH \
- assert(sv)
-
-PERL_CALLCONV void Perl_mg_localize(pTHX_ SV* sv, SV* nsv, bool setmagic);
-#define PERL_ARGS_ASSERT_MG_LOCALIZE \
- assert(sv); assert(nsv)
-PERL_CALLCONV void Perl_mg_magical(SV* sv);
-#define PERL_ARGS_ASSERT_MG_MAGICAL \
- assert(sv)
-PERL_CALLCONV int Perl_mg_set(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_MG_SET \
- assert(sv)
-PERL_CALLCONV I32 Perl_mg_size(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_MG_SIZE \
- assert(sv)
-PERL_CALLCONV void Perl_mini_mktime(struct tm *ptm);
-#define PERL_ARGS_ASSERT_MINI_MKTIME \
- assert(ptm)
-PERL_CALLCONV int Perl_mode_from_discipline(pTHX_ const char* s, STRLEN len);
+PERL_CALLCONV int
+Perl_mg_free(pTHX_ SV *sv);
+#define PERL_ARGS_ASSERT_MG_FREE \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_mg_free_type(pTHX_ SV *sv, int how);
+#define PERL_ARGS_ASSERT_MG_FREE_TYPE \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_mg_freeext(pTHX_ SV *sv, int how, const MGVTBL *vtbl);
+#define PERL_ARGS_ASSERT_MG_FREEEXT \
+ assert(sv)
+
+PERL_CALLCONV int
+Perl_mg_get(pTHX_ SV *sv);
+#define PERL_ARGS_ASSERT_MG_GET \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_mg_localize(pTHX_ SV *sv, SV *nsv, bool setmagic)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MG_LOCALIZE \
+ assert(sv); assert(nsv)
+
+PERL_CALLCONV void
+Perl_mg_magical(SV *sv);
+#define PERL_ARGS_ASSERT_MG_MAGICAL \
+ assert(sv)
+
+PERL_CALLCONV int
+Perl_mg_set(pTHX_ SV *sv);
+#define PERL_ARGS_ASSERT_MG_SET \
+ assert(sv)
+
+PERL_CALLCONV I32
+Perl_mg_size(pTHX_ SV *sv);
+#define PERL_ARGS_ASSERT_MG_SIZE \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_mini_mktime(struct tm *ptm);
+#define PERL_ARGS_ASSERT_MINI_MKTIME \
+ assert(ptm)
+
+PERL_CALLCONV int
+Perl_mode_from_discipline(pTHX_ const char *s, STRLEN len)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_MODE_FROM_DISCIPLINE
-PERL_CALLCONV void * Perl_more_bodies(pTHX_ const svtype sv_type, const size_t body_size, const size_t arena_size);
+
+PERL_CALLCONV void *
+Perl_more_bodies(pTHX_ const svtype sv_type, const size_t body_size, const size_t arena_size);
#define PERL_ARGS_ASSERT_MORE_BODIES
-PERL_CALLCONV const char* Perl_moreswitches(pTHX_ const char* s);
-#define PERL_ARGS_ASSERT_MORESWITCHES \
- assert(s)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE char * Perl_mortal_getenv(const char * str)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_MORTAL_GETENV \
- assert(str)
-#endif
-PERL_CALLCONV const struct mro_alg * Perl_mro_get_from_name(pTHX_ SV *name);
-#define PERL_ARGS_ASSERT_MRO_GET_FROM_NAME \
- assert(name)
-PERL_CALLCONV AV* Perl_mro_get_linear_isa(pTHX_ HV* stash);
-#define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA \
- assert(stash)
-PERL_CALLCONV SV* Perl_mro_get_private_data(pTHX_ struct mro_meta *const smeta, const struct mro_alg *const which);
-#define PERL_ARGS_ASSERT_MRO_GET_PRIVATE_DATA \
- assert(smeta); assert(which)
-PERL_CALLCONV void Perl_mro_isa_changed_in(pTHX_ HV* stash);
-#define PERL_ARGS_ASSERT_MRO_ISA_CHANGED_IN \
- assert(stash)
-PERL_CALLCONV struct mro_meta* Perl_mro_meta_init(pTHX_ HV* stash);
-#define PERL_ARGS_ASSERT_MRO_META_INIT \
- assert(stash)
-PERL_CALLCONV void Perl_mro_method_changed_in(pTHX_ HV* stash);
-#define PERL_ARGS_ASSERT_MRO_METHOD_CHANGED_IN \
- assert(stash)
-PERL_CALLCONV void Perl_mro_package_moved(pTHX_ HV * const stash, HV * const oldstash, const GV * const gv, U32 flags);
-#define PERL_ARGS_ASSERT_MRO_PACKAGE_MOVED \
- assert(gv)
-PERL_CALLCONV void Perl_mro_register(pTHX_ const struct mro_alg *mro);
-#define PERL_ARGS_ASSERT_MRO_REGISTER \
- assert(mro)
-PERL_CALLCONV void Perl_mro_set_mro(pTHX_ struct mro_meta *const meta, SV *const name);
-#define PERL_ARGS_ASSERT_MRO_SET_MRO \
- assert(meta); assert(name)
-PERL_CALLCONV SV* Perl_mro_set_private_data(pTHX_ struct mro_meta *const smeta, const struct mro_alg *const which, SV *const data);
-#define PERL_ARGS_ASSERT_MRO_SET_PRIVATE_DATA \
- assert(smeta); assert(which); assert(data)
-PERL_CALLCONV SV* Perl_multiconcat_stringify(pTHX_ const OP* o);
-#define PERL_ARGS_ASSERT_MULTICONCAT_STRINGIFY \
- assert(o)
-PERL_CALLCONV SV* Perl_multideref_stringify(pTHX_ const OP* o, CV *cv);
-#define PERL_ARGS_ASSERT_MULTIDEREF_STRINGIFY \
- assert(o)
-PERL_CALLCONV NV Perl_my_atof(pTHX_ const char *s);
-#define PERL_ARGS_ASSERT_MY_ATOF \
- assert(s)
-PERL_CALLCONV char* Perl_my_atof2(pTHX_ const char *orig, NV* value);
-#define PERL_ARGS_ASSERT_MY_ATOF2 \
- assert(orig); assert(value)
-PERL_CALLCONV char* Perl_my_atof3(pTHX_ const char *orig, NV* value, const STRLEN len);
-#define PERL_ARGS_ASSERT_MY_ATOF3 \
- assert(orig); assert(value)
-PERL_CALLCONV OP * Perl_my_attrs(pTHX_ OP *o, OP *attrs);
-#define PERL_ARGS_ASSERT_MY_ATTRS \
- assert(o)
-PERL_CALLCONV void Perl_my_clearenv(pTHX);
+PERL_CALLCONV const char *
+Perl_moreswitches(pTHX_ const char *s);
+#define PERL_ARGS_ASSERT_MORESWITCHES \
+ assert(s)
+
+PERL_CALLCONV void
+Perl_mortal_destructor_sv(pTHX_ SV *coderef, SV *args);
+#define PERL_ARGS_ASSERT_MORTAL_DESTRUCTOR_SV \
+ assert(coderef)
+
+PERL_CALLCONV void
+Perl_mortal_svfunc_x(pTHX_ SVFUNC_t f, SV *p);
+#define PERL_ARGS_ASSERT_MORTAL_SVFUNC_X
+
+PERL_CALLCONV const struct mro_alg *
+Perl_mro_get_from_name(pTHX_ SV *name);
+#define PERL_ARGS_ASSERT_MRO_GET_FROM_NAME \
+ assert(name)
+
+PERL_CALLCONV AV *
+Perl_mro_get_linear_isa(pTHX_ HV *stash);
+#define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA \
+ assert(stash)
+
+PERL_CALLCONV SV *
+Perl_mro_get_private_data(pTHX_ struct mro_meta * const smeta, const struct mro_alg * const which);
+#define PERL_ARGS_ASSERT_MRO_GET_PRIVATE_DATA \
+ assert(smeta); assert(which)
+
+PERL_CALLCONV void
+Perl_mro_isa_changed_in(pTHX_ HV *stash)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MRO_ISA_CHANGED_IN \
+ assert(stash)
+
+PERL_CALLCONV struct mro_meta *
+Perl_mro_meta_init(pTHX_ HV *stash);
+#define PERL_ARGS_ASSERT_MRO_META_INIT \
+ assert(stash)
+
+PERL_CALLCONV void
+Perl_mro_method_changed_in(pTHX_ HV *stash);
+#define PERL_ARGS_ASSERT_MRO_METHOD_CHANGED_IN \
+ assert(stash)
+
+PERL_CALLCONV void
+Perl_mro_package_moved(pTHX_ HV * const stash, HV * const oldstash, const GV * const gv, U32 flags);
+#define PERL_ARGS_ASSERT_MRO_PACKAGE_MOVED \
+ assert(gv)
+
+PERL_CALLCONV void
+Perl_mro_register(pTHX_ const struct mro_alg *mro);
+#define PERL_ARGS_ASSERT_MRO_REGISTER \
+ assert(mro)
+
+PERL_CALLCONV void
+Perl_mro_set_mro(pTHX_ struct mro_meta * const meta, SV * const name);
+#define PERL_ARGS_ASSERT_MRO_SET_MRO \
+ assert(meta); assert(name)
+
+PERL_CALLCONV SV *
+Perl_mro_set_private_data(pTHX_ struct mro_meta * const smeta, const struct mro_alg * const which, SV * const data);
+#define PERL_ARGS_ASSERT_MRO_SET_PRIVATE_DATA \
+ assert(smeta); assert(which); assert(data)
+
+PERL_CALLCONV SV *
+Perl_multiconcat_stringify(pTHX_ const OP *o);
+#define PERL_ARGS_ASSERT_MULTICONCAT_STRINGIFY \
+ assert(o)
+
+PERL_CALLCONV SV *
+Perl_multideref_stringify(pTHX_ const OP *o, CV *cv);
+#define PERL_ARGS_ASSERT_MULTIDEREF_STRINGIFY \
+ assert(o)
+
+PERL_CALLCONV NV
+Perl_my_atof(pTHX_ const char *s);
+#define PERL_ARGS_ASSERT_MY_ATOF \
+ assert(s)
+
+PERL_CALLCONV char *
+Perl_my_atof2(pTHX_ const char *orig, NV *value);
+#define PERL_ARGS_ASSERT_MY_ATOF2 \
+ assert(orig); assert(value)
+
+PERL_CALLCONV char *
+Perl_my_atof3(pTHX_ const char *orig, NV *value, const STRLEN len);
+#define PERL_ARGS_ASSERT_MY_ATOF3 \
+ assert(orig); assert(value)
+
+PERL_CALLCONV OP *
+Perl_my_attrs(pTHX_ OP *o, OP *attrs)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MY_ATTRS \
+ assert(o)
+
+PERL_CALLCONV void
+Perl_my_clearenv(pTHX);
#define PERL_ARGS_ASSERT_MY_CLEARENV
-PERL_CALLCONV int Perl_my_dirfd(DIR* dir);
+
+PERL_CALLCONV int
+Perl_my_dirfd(DIR *dir);
#define PERL_ARGS_ASSERT_MY_DIRFD
-PERL_CALLCONV_NO_RET void Perl_my_exit(pTHX_ U32 status)
- __attribute__noreturn__;
+
+PERL_CALLCONV_NO_RET void
+Perl_my_exit(pTHX_ U32 status)
+ __attribute__noreturn__;
#define PERL_ARGS_ASSERT_MY_EXIT
-PERL_CALLCONV_NO_RET void Perl_my_failure_exit(pTHX)
- __attribute__noreturn__;
+PERL_CALLCONV_NO_RET void
+Perl_my_failure_exit(pTHX)
+ __attribute__noreturn__;
#define PERL_ARGS_ASSERT_MY_FAILURE_EXIT
-PERL_CALLCONV I32 Perl_my_fflush_all(pTHX);
+PERL_CALLCONV I32
+Perl_my_fflush_all(pTHX);
#define PERL_ARGS_ASSERT_MY_FFLUSH_ALL
-PERL_CALLCONV Pid_t Perl_my_fork(void);
+
+PERL_CALLCONV Pid_t
+Perl_my_fork(void);
#define PERL_ARGS_ASSERT_MY_FORK
-/* PERL_CALLCONV I32 my_lstat(pTHX); */
-#define PERL_ARGS_ASSERT_MY_LSTAT
-PERL_CALLCONV I32 Perl_my_lstat_flags(pTHX_ const U32 flags);
+
+/* PERL_CALLCONV I32
+my_lstat(pTHX); */
+
+PERL_CALLCONV I32
+Perl_my_lstat_flags(pTHX_ const U32 flags);
#define PERL_ARGS_ASSERT_MY_LSTAT_FLAGS
-PERL_CALLCONV int Perl_my_mkostemp_cloexec(char *templte, int flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_MY_MKOSTEMP_CLOEXEC \
- assert(templte)
-
-PERL_CALLCONV int Perl_my_mkstemp_cloexec(char *templte)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_MY_MKSTEMP_CLOEXEC \
- assert(templte)
-
-PERL_CALLCONV PerlIO* Perl_my_popen_list(pTHX_ const char* mode, int n, SV ** args);
-#define PERL_ARGS_ASSERT_MY_POPEN_LIST \
- assert(mode); assert(args)
-PERL_CALLCONV void Perl_my_setenv(pTHX_ const char* nam, const char* val);
+
+PERL_CALLCONV int
+Perl_my_mkostemp_cloexec(char *templte, int flags)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MY_MKOSTEMP_CLOEXEC \
+ assert(templte)
+
+PERL_CALLCONV int
+Perl_my_mkstemp_cloexec(char *templte)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MY_MKSTEMP_CLOEXEC \
+ assert(templte)
+
+PERL_CALLCONV PerlIO *
+Perl_my_popen_list(pTHX_ const char *mode, int n, SV **args);
+#define PERL_ARGS_ASSERT_MY_POPEN_LIST \
+ assert(mode); assert(args)
+
+PERL_CALLCONV void
+Perl_my_setenv(pTHX_ const char *nam, const char *val);
#define PERL_ARGS_ASSERT_MY_SETENV
-PERL_CALLCONV int Perl_my_snprintf(char *buffer, const Size_t len, const char *format, ...)
- __attribute__format__(__printf__,3,4);
-#define PERL_ARGS_ASSERT_MY_SNPRINTF \
- assert(buffer); assert(format)
-PERL_CALLCONV int Perl_my_socketpair(int family, int type, int protocol, int fd[2]);
+PERL_CALLCONV int
+Perl_my_snprintf(char *buffer, const Size_t len, const char *format, ...)
+ __attribute__format__(__printf__,3,4);
+#define PERL_ARGS_ASSERT_MY_SNPRINTF \
+ assert(buffer); assert(format)
+
+PERL_CALLCONV int
+Perl_my_socketpair(int family, int type, int protocol, int fd[2]);
#define PERL_ARGS_ASSERT_MY_SOCKETPAIR
-/* PERL_CALLCONV I32 my_stat(pTHX); */
-#define PERL_ARGS_ASSERT_MY_STAT
-PERL_CALLCONV I32 Perl_my_stat_flags(pTHX_ const U32 flags);
+
+/* PERL_CALLCONV I32
+my_stat(pTHX); */
+
+PERL_CALLCONV I32
+Perl_my_stat_flags(pTHX_ const U32 flags);
#define PERL_ARGS_ASSERT_MY_STAT_FLAGS
-PERL_CALLCONV char* Perl_my_strerror(pTHX_ const int errnum);
-#define PERL_ARGS_ASSERT_MY_STRERROR
-PERL_CALLCONV char * Perl_my_strftime(pTHX_ const char *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst)
- __attribute__format__(__strftime__,pTHX_1,0);
-#define PERL_ARGS_ASSERT_MY_STRFTIME \
- assert(fmt)
-
-PERL_CALLCONV NV Perl_my_strtod(const char * const s, char ** e)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_MY_STRTOD \
- assert(s)
-
-PERL_CALLCONV void Perl_my_unexec(pTHX);
+
+PERL_CALLCONV const char *
+Perl_my_strerror(pTHX_ const int errnum, utf8ness_t *utf8ness)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_MY_STRERROR \
+ assert(utf8ness)
+
+PERL_CALLCONV char *
+Perl_my_strftime(pTHX_ const char *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst)
+ __attribute__format__(__strftime__,pTHX_1,0);
+#define PERL_ARGS_ASSERT_MY_STRFTIME \
+ assert(fmt)
+
+PERL_CALLCONV char *
+Perl_my_strftime8_temp(pTHX_ const char *fmt, int sec, int min, int hour, int mday, int mon, int year, int wday, int yday, int isdst, utf8ness_t *utf8ness)
+ __attribute__format__(__strftime__,pTHX_1,0);
+#define PERL_ARGS_ASSERT_MY_STRFTIME8_TEMP \
+ assert(fmt)
+
+PERL_CALLCONV NV
+Perl_my_strtod(const char * const s, char **e)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_MY_STRTOD \
+ assert(s)
+
+PERL_CALLCONV void
+Perl_my_unexec(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_MY_UNEXEC
-PERL_CALLCONV int Perl_my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap);
-#define PERL_ARGS_ASSERT_MY_VSNPRINTF \
- assert(buffer); assert(format)
-PERL_CALLCONV OP* Perl_newANONATTRSUB(pTHX_ I32 floor, OP *proto, OP *attrs, OP *block);
+
+PERL_CALLCONV int
+Perl_my_vsnprintf(char *buffer, const Size_t len, const char *format, va_list ap);
+#define PERL_ARGS_ASSERT_MY_VSNPRINTF \
+ assert(buffer); assert(format)
+
+PERL_CALLCONV OP *
+Perl_newANONATTRSUB(pTHX_ I32 floor, OP *proto, OP *attrs, OP *block);
#define PERL_ARGS_ASSERT_NEWANONATTRSUB
-PERL_CALLCONV OP* Perl_newANONHASH(pTHX_ OP* o)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV OP *
+Perl_newANONHASH(pTHX_ OP *o)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWANONHASH
-PERL_CALLCONV OP* Perl_newANONLIST(pTHX_ OP* o)
- __attribute__warn_unused_result__;
+PERL_CALLCONV OP *
+Perl_newANONLIST(pTHX_ OP *o)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWANONLIST
-PERL_CALLCONV OP* Perl_newANONSUB(pTHX_ I32 floor, OP* proto, OP* block);
+PERL_CALLCONV OP *
+Perl_newANONSUB(pTHX_ I32 floor, OP *proto, OP *block);
#define PERL_ARGS_ASSERT_NEWANONSUB
-PERL_CALLCONV OP* Perl_newASSIGNOP(pTHX_ I32 flags, OP* left, I32 optype, OP* right)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV OP *
+Perl_newARGDEFELEMOP(pTHX_ I32 flags, OP *expr, I32 argindex)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWARGDEFELEMOP \
+ assert(expr)
+
+PERL_CALLCONV OP *
+Perl_newASSIGNOP(pTHX_ I32 flags, OP *left, I32 optype, OP *right)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWASSIGNOP
-/* PERL_CALLCONV CV* newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block); */
-#define PERL_ARGS_ASSERT_NEWATTRSUB
-PERL_CALLCONV CV* Perl_newATTRSUB_x(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block, bool o_is_gv);
-#define PERL_ARGS_ASSERT_NEWATTRSUB_X
-#ifndef NO_MATHOMS
-PERL_CALLCONV AV* Perl_newAV(pTHX)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWAV
-#endif
+/* PERL_CALLCONV CV *
+newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block); */
-PERL_CALLCONV OP* Perl_newAVREF(pTHX_ OP* o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWAVREF \
- assert(o)
+PERL_CALLCONV CV *
+Perl_newATTRSUB_x(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block, bool o_is_gv);
+#define PERL_ARGS_ASSERT_NEWATTRSUB_X
-PERL_CALLCONV OP* Perl_newBINOP(pTHX_ I32 type, I32 flags, OP* first, OP* last)
- __attribute__warn_unused_result__;
+PERL_CALLCONV OP *
+Perl_newAVREF(pTHX_ OP *o)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWAVREF \
+ assert(o)
+
+/* PERL_CALLCONV AV *
+newAV_alloc_x(pTHX_ SSize_t size)
+ __attribute__warn_unused_result__; */
+
+/* PERL_CALLCONV AV *
+newAV_alloc_xz(pTHX_ SSize_t size)
+ __attribute__warn_unused_result__; */
+
+PERL_CALLCONV AV *
+Perl_newAVav(pTHX_ AV *oav)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWAVAV
+
+PERL_CALLCONV AV *
+Perl_newAVhv(pTHX_ HV *ohv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWAVHV
+
+PERL_CALLCONV OP *
+Perl_newBINOP(pTHX_ I32 type, I32 flags, OP *first, OP *last)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWBINOP
-PERL_CALLCONV OP* Perl_newCONDOP(pTHX_ I32 flags, OP* first, OP* trueop, OP* falseop)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWCONDOP \
- assert(first)
+PERL_CALLCONV OP *
+Perl_newCONDOP(pTHX_ I32 flags, OP *first, OP *trueop, OP *falseop)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWCONDOP \
+ assert(first)
-PERL_CALLCONV CV* Perl_newCONSTSUB(pTHX_ HV* stash, const char* name, SV* sv);
+PERL_CALLCONV CV *
+Perl_newCONSTSUB(pTHX_ HV *stash, const char *name, SV *sv);
#define PERL_ARGS_ASSERT_NEWCONSTSUB
-PERL_CALLCONV CV* Perl_newCONSTSUB_flags(pTHX_ HV* stash, const char* name, STRLEN len, U32 flags, SV* sv);
+
+PERL_CALLCONV CV *
+Perl_newCONSTSUB_flags(pTHX_ HV *stash, const char *name, STRLEN len, U32 flags, SV *sv);
#define PERL_ARGS_ASSERT_NEWCONSTSUB_FLAGS
-PERL_CALLCONV OP* Perl_newCVREF(pTHX_ I32 flags, OP* o)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV OP *
+Perl_newCVREF(pTHX_ I32 flags, OP *o)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWCVREF
-PERL_CALLCONV OP* Perl_newDEFSVOP(pTHX)
- __attribute__warn_unused_result__;
+PERL_CALLCONV OP *
+Perl_newDEFEROP(pTHX_ I32 flags, OP *block)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWDEFEROP \
+ assert(block)
+
+PERL_CALLCONV OP *
+Perl_newDEFSVOP(pTHX)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWDEFSVOP
-PERL_CALLCONV void Perl_newFORM(pTHX_ I32 floor, OP* o, OP* block);
+PERL_CALLCONV void
+Perl_newFORM(pTHX_ I32 floor, OP *o, OP *block);
#define PERL_ARGS_ASSERT_NEWFORM
-PERL_CALLCONV OP* Perl_newFOROP(pTHX_ I32 flags, OP* sv, OP* expr, OP* block, OP* cont)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWFOROP \
- assert(expr)
-
-PERL_CALLCONV OP* Perl_newGIVENOP(pTHX_ OP* cond, OP* block, PADOFFSET defsv_off)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWGIVENOP \
- assert(cond); assert(block)
-
-PERL_CALLCONV GP * Perl_newGP(pTHX_ GV *const gv);
-#define PERL_ARGS_ASSERT_NEWGP \
- assert(gv)
-PERL_CALLCONV OP* Perl_newGVOP(pTHX_ I32 type, I32 flags, GV* gv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWGVOP \
- assert(gv)
-
-PERL_CALLCONV OP* Perl_newGVREF(pTHX_ I32 type, OP* o)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV OP *
+Perl_newFOROP(pTHX_ I32 flags, OP *sv, OP *expr, OP *block, OP *cont)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWFOROP \
+ assert(expr)
+
+PERL_CALLCONV OP *
+Perl_newGIVENOP(pTHX_ OP *cond, OP *block, PADOFFSET defsv_off)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWGIVENOP \
+ assert(cond); assert(block)
+
+PERL_CALLCONV GP *
+Perl_newGP(pTHX_ GV * const gv);
+#define PERL_ARGS_ASSERT_NEWGP \
+ assert(gv)
+
+PERL_CALLCONV OP *
+Perl_newGVOP(pTHX_ I32 type, I32 flags, GV *gv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWGVOP \
+ assert(gv)
+
+PERL_CALLCONV OP *
+Perl_newGVREF(pTHX_ I32 type, OP *o)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWGVREF
-/* PERL_CALLCONV GV* newGVgen(pTHX_ const char* pack); */
-#define PERL_ARGS_ASSERT_NEWGVGEN
-PERL_CALLCONV GV* Perl_newGVgen_flags(pTHX_ const char* pack, U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWGVGEN_FLAGS \
- assert(pack)
-
-#ifndef NO_MATHOMS
-PERL_CALLCONV HV* Perl_newHV(pTHX)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWHV
-#endif
+/* PERL_CALLCONV GV *
+newGVgen(pTHX_ const char *pack); */
-PERL_CALLCONV OP* Perl_newHVREF(pTHX_ OP* o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWHVREF \
- assert(o)
+PERL_CALLCONV GV *
+Perl_newGVgen_flags(pTHX_ const char *pack, U32 flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWGVGEN_FLAGS \
+ assert(pack)
-PERL_CALLCONV HV* Perl_newHVhv(pTHX_ HV *hv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWHVHV
+PERL_CALLCONV OP *
+Perl_newHVREF(pTHX_ OP *o)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWHVREF \
+ assert(o)
-#ifndef NO_MATHOMS
-PERL_CALLCONV IO* Perl_newIO(pTHX)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWIO
-#endif
+PERL_CALLCONV HV *
+Perl_newHVhv(pTHX_ HV *hv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWHVHV
-PERL_CALLCONV OP* Perl_newLISTOP(pTHX_ I32 type, I32 flags, OP* first, OP* last)
- __attribute__warn_unused_result__;
+PERL_CALLCONV OP *
+Perl_newLISTOP(pTHX_ I32 type, I32 flags, OP *first, OP *last)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWLISTOP
-PERL_CALLCONV OP* Perl_newLOGOP(pTHX_ I32 optype, I32 flags, OP *first, OP *other)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWLOGOP \
- assert(first); assert(other)
-
-PERL_CALLCONV OP* Perl_newLOOPEX(pTHX_ I32 type, OP* label)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWLOOPEX \
- assert(label)
-
-PERL_CALLCONV OP* Perl_newLOOPOP(pTHX_ I32 flags, I32 debuggable, OP* expr, OP* block)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWLOOPOP
-
-PERL_CALLCONV OP* Perl_newMETHOP(pTHX_ I32 type, I32 flags, OP* dynamic_meth)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWMETHOP \
- assert(dynamic_meth)
-
-PERL_CALLCONV OP* Perl_newMETHOP_named(pTHX_ I32 type, I32 flags, SV* const_meth)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWMETHOP_NAMED \
- assert(const_meth)
-
-PERL_CALLCONV CV * Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block);
-#define PERL_ARGS_ASSERT_NEWMYSUB \
- assert(o)
-PERL_CALLCONV OP* Perl_newNULLLIST(pTHX)
- __attribute__warn_unused_result__;
+PERL_CALLCONV OP *
+Perl_newLOGOP(pTHX_ I32 optype, I32 flags, OP *first, OP *other)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWLOGOP \
+ assert(first); assert(other)
+
+PERL_CALLCONV OP *
+Perl_newLOOPEX(pTHX_ I32 type, OP *label)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWLOOPEX \
+ assert(label)
+
+PERL_CALLCONV OP *
+Perl_newLOOPOP(pTHX_ I32 flags, I32 debuggable, OP *expr, OP *block)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWLOOPOP \
+ assert(expr)
+
+PERL_CALLCONV OP *
+Perl_newMETHOP(pTHX_ I32 type, I32 flags, OP *dynamic_meth)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWMETHOP \
+ assert(dynamic_meth)
+
+PERL_CALLCONV OP *
+Perl_newMETHOP_named(pTHX_ I32 type, I32 flags, SV * const_meth)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWMETHOP_NAMED \
+ assert(const_meth)
+
+PERL_CALLCONV CV *
+Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block);
+#define PERL_ARGS_ASSERT_NEWMYSUB \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_newNULLLIST(pTHX)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWNULLLIST
-PERL_CALLCONV OP* Perl_newOP(pTHX_ I32 optype, I32 flags)
- __attribute__warn_unused_result__;
+PERL_CALLCONV OP *
+Perl_newOP(pTHX_ I32 optype, I32 flags)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWOP
-PERL_CALLCONV PADNAMELIST * Perl_newPADNAMELIST(size_t max)
- __attribute__warn_unused_result__;
+PERL_CALLCONV PADNAMELIST *
+Perl_newPADNAMELIST(size_t max)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWPADNAMELIST
-PERL_CALLCONV PADNAME * Perl_newPADNAMEouter(PADNAME *outer)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWPADNAMEOUTER \
- assert(outer)
-
-PERL_CALLCONV PADNAME * Perl_newPADNAMEpvn(const char *s, STRLEN len)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWPADNAMEPVN \
- assert(s)
-
-PERL_CALLCONV OP* Perl_newPMOP(pTHX_ I32 type, I32 flags)
- __attribute__warn_unused_result__;
+PERL_CALLCONV PADNAME *
+Perl_newPADNAMEouter(PADNAME *outer)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWPADNAMEOUTER \
+ assert(outer)
+
+PERL_CALLCONV PADNAME *
+Perl_newPADNAMEpvn(const char *s, STRLEN len)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWPADNAMEPVN \
+ assert(s)
+
+PERL_CALLCONV OP *
+Perl_newPMOP(pTHX_ I32 type, I32 flags)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWPMOP
-PERL_CALLCONV void Perl_newPROG(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_NEWPROG \
- assert(o)
-PERL_CALLCONV OP* Perl_newPVOP(pTHX_ I32 type, I32 flags, char* pv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWPVOP
-
-PERL_CALLCONV OP* Perl_newRANGE(pTHX_ I32 flags, OP* left, OP* right)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWRANGE \
- assert(left); assert(right)
-
-PERL_CALLCONV SV* Perl_newRV(pTHX_ SV *const sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWRV \
- assert(sv)
+PERL_CALLCONV void
+Perl_newPROG(pTHX_ OP *o);
+#define PERL_ARGS_ASSERT_NEWPROG \
+ assert(o)
-PERL_CALLCONV SV* Perl_newRV_noinc(pTHX_ SV *const tmpRef)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWRV_NOINC \
- assert(tmpRef)
+PERL_CALLCONV OP *
+Perl_newPVOP(pTHX_ I32 type, I32 flags, char *pv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWPVOP
-PERL_CALLCONV OP* Perl_newSLICEOP(pTHX_ I32 flags, OP* subscript, OP* listop)
- __attribute__warn_unused_result__;
+PERL_CALLCONV OP *
+Perl_newRANGE(pTHX_ I32 flags, OP *left, OP *right)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWRANGE \
+ assert(left); assert(right)
+
+PERL_CALLCONV SV *
+Perl_newRV(pTHX_ SV * const sv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWRV \
+ assert(sv)
+
+PERL_CALLCONV OP *
+Perl_newSLICEOP(pTHX_ I32 flags, OP *subscript, OP *listop)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSLICEOP
-PERL_CALLCONV OP* Perl_newSTATEOP(pTHX_ I32 flags, char* label, OP* o)
- __attribute__warn_unused_result__;
+PERL_CALLCONV OP *
+Perl_newSTATEOP(pTHX_ I32 flags, char *label, OP *o)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSTATEOP
-PERL_CALLCONV CV* Perl_newSTUB(pTHX_ GV *gv, bool fake);
-#define PERL_ARGS_ASSERT_NEWSTUB \
- assert(gv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV CV* Perl_newSUB(pTHX_ I32 floor, OP* o, OP* proto, OP* block);
-#define PERL_ARGS_ASSERT_NEWSUB
-#endif
-PERL_CALLCONV SV* Perl_newSV(pTHX_ const STRLEN len)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWSV
-
-PERL_CALLCONV OP* Perl_newSVOP(pTHX_ I32 type, I32 flags, SV* sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWSVOP \
- assert(sv)
+PERL_CALLCONV CV *
+Perl_newSTUB(pTHX_ GV *gv, bool fake)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_NEWSTUB \
+ assert(gv)
-PERL_CALLCONV OP* Perl_newSVREF(pTHX_ OP* o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWSVREF \
- assert(o)
-
-PERL_CALLCONV SV* Perl_newSV_type(pTHX_ const svtype type)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWSV_TYPE
-
-PERL_CALLCONV SV* Perl_newSVavdefelem(pTHX_ AV *av, SSize_t ix, bool extendible)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWSVAVDEFELEM \
- assert(av)
+PERL_CALLCONV SV *
+Perl_newSV(pTHX_ const STRLEN len)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWSV
-PERL_CALLCONV SV* Perl_newSVhek(pTHX_ const HEK *const hek)
- __attribute__warn_unused_result__;
+PERL_CALLCONV OP *
+Perl_newSVOP(pTHX_ I32 type, I32 flags, SV *sv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWSVOP \
+ assert(sv)
+
+PERL_CALLCONV OP *
+Perl_newSVREF(pTHX_ OP *o)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWSVREF \
+ assert(o)
+
+PERL_CALLCONV SV *
+Perl_newSV_false(pTHX)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWSV_FALSE
+
+PERL_CALLCONV SV *
+Perl_newSV_true(pTHX)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWSV_TRUE
+
+PERL_CALLCONV SV *
+Perl_newSVavdefelem(pTHX_ AV *av, SSize_t ix, bool extendible)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_NEWSVAVDEFELEM \
+ assert(av)
+
+PERL_CALLCONV SV *
+Perl_newSVbool(pTHX_ const bool bool_val)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWSVBOOL
+
+PERL_CALLCONV SV *
+Perl_newSVhek(pTHX_ const HEK * const hek)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVHEK
-PERL_CALLCONV SV* Perl_newSViv(pTHX_ const IV i)
- __attribute__warn_unused_result__;
+PERL_CALLCONV SV *
+Perl_newSVhek_mortal(pTHX_ const HEK * const hek)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWSVHEK_MORTAL
+
+PERL_CALLCONV SV *
+Perl_newSViv(pTHX_ const IV i)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVIV
-PERL_CALLCONV SV* Perl_newSVnv(pTHX_ const NV n)
- __attribute__warn_unused_result__;
+PERL_CALLCONV SV *
+Perl_newSVnv(pTHX_ const NV n)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVNV
-PERL_CALLCONV SV* Perl_newSVpv(pTHX_ const char *const s, const STRLEN len)
- __attribute__warn_unused_result__;
+PERL_CALLCONV SV *
+Perl_newSVpv(pTHX_ const char * const s, const STRLEN len)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVPV
-PERL_CALLCONV SV* Perl_newSVpv_share(pTHX_ const char* s, U32 hash)
- __attribute__warn_unused_result__;
+PERL_CALLCONV SV *
+Perl_newSVpv_share(pTHX_ const char *s, U32 hash)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVPV_SHARE
-PERL_CALLCONV SV* Perl_newSVpvf(pTHX_ const char *const pat, ...)
- __attribute__warn_unused_result__
- __attribute__format__(__printf__,pTHX_1,pTHX_2);
-#define PERL_ARGS_ASSERT_NEWSVPVF \
- assert(pat)
+PERL_CALLCONV SV *
+Perl_newSVpvf(pTHX_ const char * const pat, ...)
+ __attribute__warn_unused_result__
+ __attribute__format__(__printf__,pTHX_1,pTHX_2);
+#define PERL_ARGS_ASSERT_NEWSVPVF \
+ assert(pat)
-PERL_CALLCONV SV* Perl_newSVpvn(pTHX_ const char *const buffer, const STRLEN len)
- __attribute__warn_unused_result__;
+PERL_CALLCONV SV *
+Perl_newSVpvn(pTHX_ const char * const buffer, const STRLEN len)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVPVN
-PERL_CALLCONV SV* Perl_newSVpvn_flags(pTHX_ const char *const s, const STRLEN len, const U32 flags)
- __attribute__warn_unused_result__;
+PERL_CALLCONV SV *
+Perl_newSVpvn_flags(pTHX_ const char * const s, const STRLEN len, const U32 flags)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVPVN_FLAGS
-PERL_CALLCONV SV* Perl_newSVpvn_share(pTHX_ const char* s, I32 len, U32 hash)
- __attribute__warn_unused_result__;
+PERL_CALLCONV SV *
+Perl_newSVpvn_share(pTHX_ const char *s, I32 len, U32 hash)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVPVN_SHARE
-PERL_CALLCONV SV* Perl_newSVrv(pTHX_ SV *const rv, const char *const classname);
-#define PERL_ARGS_ASSERT_NEWSVRV \
- assert(rv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV SV* Perl_newSVsv(pTHX_ SV *const old)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWSVSV
-#endif
+PERL_CALLCONV SV *
+Perl_newSVrv(pTHX_ SV * const rv, const char * const classname);
+#define PERL_ARGS_ASSERT_NEWSVRV \
+ assert(rv)
-PERL_CALLCONV SV* Perl_newSVsv_flags(pTHX_ SV *const old, I32 flags)
- __attribute__warn_unused_result__;
+PERL_CALLCONV SV *
+Perl_newSVsv_flags(pTHX_ SV * const old, I32 flags)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVSV_FLAGS
-/* PERL_CALLCONV SV* newSVsv_nomg(pTHX_ SV *const old)
- __attribute__warn_unused_result__; */
-#define PERL_ARGS_ASSERT_NEWSVSV_NOMG
+/* PERL_CALLCONV SV *
+newSVsv_nomg(pTHX_ SV * const old)
+ __attribute__warn_unused_result__; */
-PERL_CALLCONV SV* Perl_newSVuv(pTHX_ const UV u)
- __attribute__warn_unused_result__;
+PERL_CALLCONV SV *
+Perl_newSVuv(pTHX_ const UV u)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWSVUV
-PERL_CALLCONV OP* Perl_newTRYCATCHOP(pTHX_ I32 flags, OP* tryblock, OP *catchvar, OP* catchblock)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWTRYCATCHOP \
- assert(tryblock); assert(catchvar); assert(catchblock)
+PERL_CALLCONV OP *
+Perl_newTRYCATCHOP(pTHX_ I32 flags, OP *tryblock, OP *catchvar, OP *catchblock)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWTRYCATCHOP \
+ assert(tryblock); assert(catchvar); assert(catchblock)
-PERL_CALLCONV OP* Perl_newUNOP(pTHX_ I32 type, I32 flags, OP* first)
- __attribute__warn_unused_result__;
+PERL_CALLCONV OP *
+Perl_newUNOP(pTHX_ I32 type, I32 flags, OP *first)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWUNOP
-PERL_CALLCONV OP* Perl_newUNOP_AUX(pTHX_ I32 type, I32 flags, OP* first, UNOP_AUX_item *aux)
- __attribute__warn_unused_result__;
+PERL_CALLCONV OP *
+Perl_newUNOP_AUX(pTHX_ I32 type, I32 flags, OP *first, UNOP_AUX_item *aux)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWUNOP_AUX
-PERL_CALLCONV OP* Perl_newWHENOP(pTHX_ OP* cond, OP* block)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWWHENOP \
- assert(block)
+PERL_CALLCONV OP *
+Perl_newWHENOP(pTHX_ OP *cond, OP *block)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEWWHENOP \
+ assert(block)
-PERL_CALLCONV OP* Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP* loop, OP* expr, OP* block, OP* cont, I32 has_my)
- __attribute__warn_unused_result__;
+PERL_CALLCONV OP *
+Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP *loop, OP *expr, OP *block, OP *cont, I32 has_my)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEWWHILEOP
-PERL_CALLCONV CV* Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename);
-#define PERL_ARGS_ASSERT_NEWXS \
- assert(subaddr); assert(filename)
-PERL_CALLCONV CV * Perl_newXS_deffile(pTHX_ const char *name, XSUBADDR_t subaddr);
-#define PERL_ARGS_ASSERT_NEWXS_DEFFILE \
- assert(name); assert(subaddr)
-PERL_CALLCONV CV * Perl_newXS_flags(pTHX_ const char *name, XSUBADDR_t subaddr, const char *const filename, const char *const proto, U32 flags);
-#define PERL_ARGS_ASSERT_NEWXS_FLAGS \
- assert(subaddr); assert(filename)
-PERL_CALLCONV CV * Perl_newXS_len_flags(pTHX_ const char *name, STRLEN len, XSUBADDR_t subaddr, const char *const filename, const char *const proto, SV **const_svp, U32 flags);
-#define PERL_ARGS_ASSERT_NEWXS_LEN_FLAGS \
- assert(subaddr)
-PERL_CALLCONV PERL_SI* Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems)
- __attribute__warn_unused_result__;
+PERL_CALLCONV CV *
+Perl_newXS(pTHX_ const char *name, XSUBADDR_t subaddr, const char *filename);
+#define PERL_ARGS_ASSERT_NEWXS \
+ assert(subaddr); assert(filename)
+
+PERL_CALLCONV CV *
+Perl_newXS_deffile(pTHX_ const char *name, XSUBADDR_t subaddr);
+#define PERL_ARGS_ASSERT_NEWXS_DEFFILE \
+ assert(name); assert(subaddr)
+
+PERL_CALLCONV CV *
+Perl_newXS_flags(pTHX_ const char *name, XSUBADDR_t subaddr, const char * const filename, const char * const proto, U32 flags);
+#define PERL_ARGS_ASSERT_NEWXS_FLAGS \
+ assert(subaddr); assert(filename)
+
+PERL_CALLCONV CV *
+Perl_newXS_len_flags(pTHX_ const char *name, STRLEN len, XSUBADDR_t subaddr, const char * const filename, const char * const proto, SV ** const_svp, U32 flags)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_NEWXS_LEN_FLAGS \
+ assert(subaddr)
+
+PERL_CALLCONV PERL_SI *
+Perl_new_stackinfo(pTHX_ I32 stitems, I32 cxitems)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_NEW_STACKINFO
-PERL_CALLCONV SV* Perl_new_version(pTHX_ SV *ver);
-#define PERL_ARGS_ASSERT_NEW_VERSION \
- assert(ver)
-PERL_CALLCONV STRLEN * Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const char *const bits, STRLEN size)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEW_WARNINGS_BITFIELD \
- assert(bits)
-
-PERL_CALLCONV PerlIO* Perl_nextargv(pTHX_ GV* gv, bool nomagicopen);
-#define PERL_ARGS_ASSERT_NEXTARGV \
- assert(gv)
-PERL_CALLCONV char* Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend)
- __attribute__warn_unused_result__
- __attribute__pure__;
-#define PERL_ARGS_ASSERT_NINSTR \
- assert(big); assert(bigend); assert(little); assert(lend)
-
-PERL_CALLCONV void Perl_no_bareword_filehandle(pTHX_ const char *fhname);
-#define PERL_ARGS_ASSERT_NO_BAREWORD_FILEHANDLE \
- assert(fhname)
-PERL_CALLCONV_NO_RET void Perl_noperl_die(const char* pat, ...)
- __attribute__noreturn__
- __attribute__format__(__printf__,1,2);
-#define PERL_ARGS_ASSERT_NOPERL_DIE \
- assert(pat)
-
-PERL_CALLCONV int Perl_nothreadhook(pTHX);
+PERL_CALLCONV SV *
+Perl_new_version(pTHX_ SV *ver);
+#define PERL_ARGS_ASSERT_NEW_VERSION \
+ assert(ver)
+
+PERL_CALLCONV char *
+Perl_new_warnings_bitfield(pTHX_ char *buffer, const char * const bits, STRLEN size)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_NEW_WARNINGS_BITFIELD \
+ assert(bits)
+
+PERL_CALLCONV PerlIO *
+Perl_nextargv(pTHX_ GV *gv, bool nomagicopen)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_NEXTARGV \
+ assert(gv)
+
+PERL_CALLCONV char *
+Perl_ninstr(const char *big, const char *bigend, const char *little, const char *lend)
+ __attribute__warn_unused_result__
+ __attribute__pure__;
+#define PERL_ARGS_ASSERT_NINSTR \
+ assert(big); assert(bigend); assert(little); assert(lend)
+
+PERL_CALLCONV void
+Perl_no_bareword_filehandle(pTHX_ const char *fhname)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_NO_BAREWORD_FILEHANDLE \
+ assert(fhname)
+
+PERL_CALLCONV_NO_RET void
+Perl_noperl_die(const char *pat, ...)
+ __attribute__noreturn__
+ __attribute__format__(__printf__,1,2);
+#define PERL_ARGS_ASSERT_NOPERL_DIE \
+ assert(pat)
+
+PERL_CALLCONV int
+Perl_nothreadhook(pTHX);
#define PERL_ARGS_ASSERT_NOTHREADHOOK
-PERL_CALLCONV void Perl_notify_parser_that_changed_to_utf8(pTHX);
-#define PERL_ARGS_ASSERT_NOTIFY_PARSER_THAT_CHANGED_TO_UTF8
-PERL_CALLCONV OP* Perl_oopsAV(pTHX_ OP* o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_OOPSAV \
- assert(o)
-PERL_CALLCONV OP* Perl_oopsHV(pTHX_ OP* o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_OOPSHV \
- assert(o)
+PERL_CALLCONV void
+Perl_notify_parser_that_changed_to_utf8(pTHX)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_NOTIFY_PARSER_THAT_CHANGED_TO_UTF8
-PERL_CALLCONV OP* Perl_op_append_elem(pTHX_ I32 optype, OP* first, OP* last);
+PERL_CALLCONV OP *
+Perl_oopsAV(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_OOPSAV \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_oopsHV(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_OOPSHV \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_op_append_elem(pTHX_ I32 optype, OP *first, OP *last);
#define PERL_ARGS_ASSERT_OP_APPEND_ELEM
-PERL_CALLCONV OP* Perl_op_append_list(pTHX_ I32 optype, OP* first, OP* last);
+
+PERL_CALLCONV OP *
+Perl_op_append_list(pTHX_ I32 optype, OP *first, OP *last);
#define PERL_ARGS_ASSERT_OP_APPEND_LIST
-PERL_CALLCONV OPclass Perl_op_class(pTHX_ const OP *o);
+
+PERL_CALLCONV OPclass
+Perl_op_class(pTHX_ const OP *o);
#define PERL_ARGS_ASSERT_OP_CLASS
-PERL_CALLCONV void Perl_op_clear(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_OP_CLEAR \
- assert(o)
-PERL_CALLCONV OP* Perl_op_contextualize(pTHX_ OP* o, I32 context);
-#define PERL_ARGS_ASSERT_OP_CONTEXTUALIZE \
- assert(o)
-PERL_CALLCONV OP* Perl_op_convert_list(pTHX_ I32 optype, I32 flags, OP* o)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV void
+Perl_op_clear(pTHX_ OP *o);
+#define PERL_ARGS_ASSERT_OP_CLEAR \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_op_contextualize(pTHX_ OP *o, I32 context);
+#define PERL_ARGS_ASSERT_OP_CONTEXTUALIZE \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_op_convert_list(pTHX_ I32 optype, I32 flags, OP *o)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_OP_CONVERT_LIST
-PERL_CALLCONV void Perl_op_dump(pTHX_ const OP *o);
-#define PERL_ARGS_ASSERT_OP_DUMP \
- assert(o)
-PERL_CALLCONV void Perl_op_free(pTHX_ OP* arg);
+PERL_CALLCONV void
+Perl_op_dump(pTHX_ const OP *o);
+#define PERL_ARGS_ASSERT_OP_DUMP \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_op_force_list(pTHX_ OP *o);
+#define PERL_ARGS_ASSERT_OP_FORCE_LIST
+
+PERL_CALLCONV void
+Perl_op_free(pTHX_ OP *arg);
#define PERL_ARGS_ASSERT_OP_FREE
-PERL_CALLCONV OP* Perl_op_linklist(pTHX_ OP *o);
-#define PERL_ARGS_ASSERT_OP_LINKLIST \
- assert(o)
-/* PERL_CALLCONV OP* op_lvalue(pTHX_ OP* o, I32 type); */
-#define PERL_ARGS_ASSERT_OP_LVALUE
-PERL_CALLCONV OP* Perl_op_lvalue_flags(pTHX_ OP* o, I32 type, U32 flags);
+
+PERL_CALLCONV OP *
+Perl_op_linklist(pTHX_ OP *o);
+#define PERL_ARGS_ASSERT_OP_LINKLIST \
+ assert(o)
+
+/* PERL_CALLCONV OP *
+op_lvalue(pTHX_ OP *o, I32 type); */
+
+PERL_CALLCONV OP *
+Perl_op_lvalue_flags(pTHX_ OP *o, I32 type, U32 flags);
#define PERL_ARGS_ASSERT_OP_LVALUE_FLAGS
-PERL_CALLCONV void Perl_op_null(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_OP_NULL \
- assert(o)
-PERL_CALLCONV OP* Perl_op_parent(OP *o);
-#define PERL_ARGS_ASSERT_OP_PARENT \
- assert(o)
-PERL_CALLCONV OP* Perl_op_prepend_elem(pTHX_ I32 optype, OP* first, OP* last);
+
+PERL_CALLCONV void
+Perl_op_null(pTHX_ OP *o);
+#define PERL_ARGS_ASSERT_OP_NULL \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_op_parent(OP *o);
+#define PERL_ARGS_ASSERT_OP_PARENT \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_op_prepend_elem(pTHX_ I32 optype, OP *first, OP *last);
#define PERL_ARGS_ASSERT_OP_PREPEND_ELEM
-PERL_CALLCONV void Perl_op_refcnt_lock(pTHX);
+
+PERL_CALLCONV void
+Perl_op_refcnt_lock(pTHX);
#define PERL_ARGS_ASSERT_OP_REFCNT_LOCK
-PERL_CALLCONV void Perl_op_refcnt_unlock(pTHX);
+
+PERL_CALLCONV void
+Perl_op_refcnt_unlock(pTHX);
#define PERL_ARGS_ASSERT_OP_REFCNT_UNLOCK
-PERL_CALLCONV OP* Perl_op_scope(pTHX_ OP* o);
+
+PERL_CALLCONV OP *
+Perl_op_scope(pTHX_ OP *o);
#define PERL_ARGS_ASSERT_OP_SCOPE
-PERL_CALLCONV OP* Perl_op_sibling_splice(OP *parent, OP *start, int del_count, OP* insert);
+
+PERL_CALLCONV OP *
+Perl_op_sibling_splice(OP *parent, OP *start, int del_count, OP *insert);
#define PERL_ARGS_ASSERT_OP_SIBLING_SPLICE
-PERL_CALLCONV OP* Perl_op_unscope(pTHX_ OP* o);
+
+PERL_CALLCONV OP *
+Perl_op_unscope(pTHX_ OP *o)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_OP_UNSCOPE
-PERL_CALLCONV void Perl_optimize_optree(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_OPTIMIZE_OPTREE \
- assert(o)
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_pack_cat(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist, SV ***next_in_list, U32 flags)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_PACK_CAT \
- assert(cat); assert(pat); assert(patend); assert(beglist); assert(endlist); assert(next_in_list)
-#endif
-PERL_CALLCONV void Perl_package(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_PACKAGE \
- assert(o)
-PERL_CALLCONV void Perl_package_version(pTHX_ OP* v);
-#define PERL_ARGS_ASSERT_PACKAGE_VERSION \
- assert(v)
-PERL_CALLCONV void Perl_packlist(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist);
-#define PERL_ARGS_ASSERT_PACKLIST \
- assert(cat); assert(pat); assert(patend); assert(beglist); assert(endlist)
-PERL_CALLCONV PADOFFSET Perl_pad_add_anon(pTHX_ CV* func, I32 optype);
-#define PERL_ARGS_ASSERT_PAD_ADD_ANON \
- assert(func)
-PERL_CALLCONV PADOFFSET Perl_pad_add_name_pv(pTHX_ const char *name, const U32 flags, HV *typestash, HV *ourstash);
-#define PERL_ARGS_ASSERT_PAD_ADD_NAME_PV \
- assert(name)
-PERL_CALLCONV PADOFFSET Perl_pad_add_name_pvn(pTHX_ const char *namepv, STRLEN namelen, U32 flags, HV *typestash, HV *ourstash);
-#define PERL_ARGS_ASSERT_PAD_ADD_NAME_PVN \
- assert(namepv)
-PERL_CALLCONV PADOFFSET Perl_pad_add_name_sv(pTHX_ SV *name, U32 flags, HV *typestash, HV *ourstash);
-#define PERL_ARGS_ASSERT_PAD_ADD_NAME_SV \
- assert(name)
-PERL_CALLCONV void Perl_pad_add_weakref(pTHX_ CV* func);
-#define PERL_ARGS_ASSERT_PAD_ADD_WEAKREF \
- assert(func)
-PERL_CALLCONV PADOFFSET Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype);
+PERL_CALLCONV OP *
+Perl_op_wrap_finally(pTHX_ OP *block, OP *finally)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_OP_WRAP_FINALLY \
+ assert(block); assert(finally)
+
+PERL_CALLCONV void
+Perl_package(pTHX_ OP *o)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_PACKAGE \
+ assert(o)
+
+PERL_CALLCONV void
+Perl_package_version(pTHX_ OP *v)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_PACKAGE_VERSION \
+ assert(v)
+
+PERL_CALLCONV void
+Perl_packlist(pTHX_ SV *cat, const char *pat, const char *patend, SV **beglist, SV **endlist);
+#define PERL_ARGS_ASSERT_PACKLIST \
+ assert(cat); assert(pat); assert(patend); assert(beglist); assert(endlist)
+
+PERL_CALLCONV PADOFFSET
+Perl_pad_add_anon(pTHX_ CV *func, I32 optype);
+#define PERL_ARGS_ASSERT_PAD_ADD_ANON \
+ assert(func)
+
+PERL_CALLCONV PADOFFSET
+Perl_pad_add_name_pv(pTHX_ const char *name, const U32 flags, HV *typestash, HV *ourstash);
+#define PERL_ARGS_ASSERT_PAD_ADD_NAME_PV \
+ assert(name)
+
+PERL_CALLCONV PADOFFSET
+Perl_pad_add_name_pvn(pTHX_ const char *namepv, STRLEN namelen, U32 flags, HV *typestash, HV *ourstash);
+#define PERL_ARGS_ASSERT_PAD_ADD_NAME_PVN \
+ assert(namepv)
+
+PERL_CALLCONV PADOFFSET
+Perl_pad_add_name_sv(pTHX_ SV *name, U32 flags, HV *typestash, HV *ourstash);
+#define PERL_ARGS_ASSERT_PAD_ADD_NAME_SV \
+ assert(name)
+
+PERL_CALLCONV void
+Perl_pad_add_weakref(pTHX_ CV *func)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_PAD_ADD_WEAKREF \
+ assert(func)
+
+PERL_CALLCONV PADOFFSET
+Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype);
#define PERL_ARGS_ASSERT_PAD_ALLOC
-PERL_CALLCONV void Perl_pad_block_start(pTHX_ int full);
+
+PERL_CALLCONV void
+Perl_pad_block_start(pTHX_ int full)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_PAD_BLOCK_START
-#ifndef NO_MATHOMS
-PERL_CALLCONV HV* Perl_pad_compname_type(pTHX_ const PADOFFSET po)
- __attribute__deprecated__
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PAD_COMPNAME_TYPE
-#endif
-PERL_CALLCONV PADOFFSET Perl_pad_findmy_pv(pTHX_ const char* name, U32 flags);
-#define PERL_ARGS_ASSERT_PAD_FINDMY_PV \
- assert(name)
-PERL_CALLCONV PADOFFSET Perl_pad_findmy_pvn(pTHX_ const char* namepv, STRLEN namelen, U32 flags);
-#define PERL_ARGS_ASSERT_PAD_FINDMY_PVN \
- assert(namepv)
-PERL_CALLCONV PADOFFSET Perl_pad_findmy_sv(pTHX_ SV* name, U32 flags);
-#define PERL_ARGS_ASSERT_PAD_FINDMY_SV \
- assert(name)
-PERL_CALLCONV void Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv);
-#define PERL_ARGS_ASSERT_PAD_FIXUP_INNER_ANONS \
- assert(padlist); assert(old_cv); assert(new_cv)
-PERL_CALLCONV void Perl_pad_free(pTHX_ PADOFFSET po);
+PERL_CALLCONV PADOFFSET
+Perl_pad_findmy_pv(pTHX_ const char *name, U32 flags);
+#define PERL_ARGS_ASSERT_PAD_FINDMY_PV \
+ assert(name)
+
+PERL_CALLCONV PADOFFSET
+Perl_pad_findmy_pvn(pTHX_ const char *namepv, STRLEN namelen, U32 flags);
+#define PERL_ARGS_ASSERT_PAD_FINDMY_PVN \
+ assert(namepv)
+
+PERL_CALLCONV PADOFFSET
+Perl_pad_findmy_sv(pTHX_ SV *name, U32 flags);
+#define PERL_ARGS_ASSERT_PAD_FINDMY_SV \
+ assert(name)
+
+PERL_CALLCONV void
+Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_PAD_FIXUP_INNER_ANONS \
+ assert(padlist); assert(old_cv); assert(new_cv)
+
+PERL_CALLCONV void
+Perl_pad_free(pTHX_ PADOFFSET po)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_PAD_FREE
-PERL_CALLCONV OP * Perl_pad_leavemy(pTHX);
+
+PERL_CALLCONV OP *
+Perl_pad_leavemy(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_PAD_LEAVEMY
-PERL_CALLCONV PADLIST* Perl_pad_new(pTHX_ int flags)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV PADLIST *
+Perl_pad_new(pTHX_ int flags)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PAD_NEW
-PERL_CALLCONV void Perl_pad_push(pTHX_ PADLIST *padlist, int depth);
-#define PERL_ARGS_ASSERT_PAD_PUSH \
- assert(padlist)
-PERL_CALLCONV void Perl_pad_swipe(pTHX_ PADOFFSET po, bool refadjust);
+PERL_CALLCONV void
+Perl_pad_push(pTHX_ PADLIST *padlist, int depth);
+#define PERL_ARGS_ASSERT_PAD_PUSH \
+ assert(padlist)
+
+PERL_CALLCONV void
+Perl_pad_swipe(pTHX_ PADOFFSET po, bool refadjust)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_PAD_SWIPE
-PERL_CALLCONV void Perl_pad_tidy(pTHX_ padtidy_type type);
+
+PERL_CALLCONV void
+Perl_pad_tidy(pTHX_ padtidy_type type);
#define PERL_ARGS_ASSERT_PAD_TIDY
-PERL_CALLCONV PAD ** Perl_padlist_store(pTHX_ PADLIST *padlist, I32 key, PAD *val);
-#define PERL_ARGS_ASSERT_PADLIST_STORE \
- assert(padlist)
-PERL_CALLCONV void Perl_padname_free(pTHX_ PADNAME *pn);
-#define PERL_ARGS_ASSERT_PADNAME_FREE \
- assert(pn)
-PERL_CALLCONV PADNAME * Perl_padnamelist_fetch(PADNAMELIST *pnl, SSize_t key)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PADNAMELIST_FETCH \
- assert(pnl)
-
-PERL_CALLCONV void Perl_padnamelist_free(pTHX_ PADNAMELIST *pnl);
-#define PERL_ARGS_ASSERT_PADNAMELIST_FREE \
- assert(pnl)
-PERL_CALLCONV PADNAME ** Perl_padnamelist_store(pTHX_ PADNAMELIST *pnl, SSize_t key, PADNAME *val);
-#define PERL_ARGS_ASSERT_PADNAMELIST_STORE \
- assert(pnl)
-PERL_CALLCONV OP* Perl_parse_arithexpr(pTHX_ U32 flags);
+
+PERL_CALLCONV PAD **
+Perl_padlist_store(pTHX_ PADLIST *padlist, I32 key, PAD *val)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_PADLIST_STORE \
+ assert(padlist)
+
+PERL_CALLCONV void
+Perl_padname_free(pTHX_ PADNAME *pn);
+#define PERL_ARGS_ASSERT_PADNAME_FREE \
+ assert(pn)
+
+PERL_CALLCONV PADNAME *
+Perl_padnamelist_fetch(PADNAMELIST *pnl, SSize_t key)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_PADNAMELIST_FETCH \
+ assert(pnl)
+
+PERL_CALLCONV void
+Perl_padnamelist_free(pTHX_ PADNAMELIST *pnl);
+#define PERL_ARGS_ASSERT_PADNAMELIST_FREE \
+ assert(pnl)
+
+PERL_CALLCONV PADNAME **
+Perl_padnamelist_store(pTHX_ PADNAMELIST *pnl, SSize_t key, PADNAME *val);
+#define PERL_ARGS_ASSERT_PADNAMELIST_STORE \
+ assert(pnl)
+
+PERL_CALLCONV OP *
+Perl_parse_arithexpr(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_ARITHEXPR
-PERL_CALLCONV OP* Perl_parse_barestmt(pTHX_ U32 flags);
+
+PERL_CALLCONV OP *
+Perl_parse_barestmt(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_BARESTMT
-PERL_CALLCONV OP* Perl_parse_block(pTHX_ U32 flags);
+
+PERL_CALLCONV OP *
+Perl_parse_block(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_BLOCK
-PERL_CALLCONV OP* Perl_parse_fullexpr(pTHX_ U32 flags);
+
+PERL_CALLCONV OP *
+Perl_parse_fullexpr(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_FULLEXPR
-PERL_CALLCONV OP* Perl_parse_fullstmt(pTHX_ U32 flags);
+
+PERL_CALLCONV OP *
+Perl_parse_fullstmt(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_FULLSTMT
-PERL_CALLCONV SV* Perl_parse_label(pTHX_ U32 flags);
+
+PERL_CALLCONV SV *
+Perl_parse_label(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_LABEL
-PERL_CALLCONV OP* Perl_parse_listexpr(pTHX_ U32 flags);
+
+PERL_CALLCONV OP *
+Perl_parse_listexpr(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_LISTEXPR
-PERL_CALLCONV OP* Perl_parse_stmtseq(pTHX_ U32 flags);
+
+PERL_CALLCONV OP *
+Perl_parse_stmtseq(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_STMTSEQ
-PERL_CALLCONV OP* Perl_parse_subsignature(pTHX_ U32 flags);
+
+PERL_CALLCONV OP *
+Perl_parse_subsignature(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_SUBSIGNATURE
-PERL_CALLCONV OP* Perl_parse_termexpr(pTHX_ U32 flags);
+
+PERL_CALLCONV OP *
+Perl_parse_termexpr(pTHX_ U32 flags);
#define PERL_ARGS_ASSERT_PARSE_TERMEXPR
-PERL_CALLCONV U32 Perl_parse_unicode_opts(pTHX_ const char **popt);
-#define PERL_ARGS_ASSERT_PARSE_UNICODE_OPTS \
- assert(popt)
-PERL_CALLCONV void Perl_parser_free(pTHX_ const yy_parser *parser);
-#define PERL_ARGS_ASSERT_PARSER_FREE \
- assert(parser)
-PERL_CALLCONV void Perl_peep(pTHX_ OP* o);
+
+PERL_CALLCONV U32
+Perl_parse_unicode_opts(pTHX_ const char **popt)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_PARSE_UNICODE_OPTS \
+ assert(popt)
+
+PERL_CALLCONV void
+Perl_parser_free(pTHX_ const yy_parser *parser)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_PARSER_FREE \
+ assert(parser)
+
+PERL_CALLCONV void
+Perl_peep(pTHX_ OP *o)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_PEEP
-PERL_CALLCONV PerlInterpreter* perl_alloc(void);
+
+PERL_CALLCONV PerlInterpreter *
+perl_alloc(void);
#define PERL_ARGS_ASSERT_PERL_ALLOC
-PERL_CALLCONV void perl_construct(PerlInterpreter *my_perl);
-#define PERL_ARGS_ASSERT_PERL_CONSTRUCT \
- assert(my_perl)
-PERL_CALLCONV int perl_destruct(PerlInterpreter *my_perl);
-#define PERL_ARGS_ASSERT_PERL_DESTRUCT \
- assert(my_perl)
-PERL_CALLCONV void perl_free(PerlInterpreter *my_perl);
-#define PERL_ARGS_ASSERT_PERL_FREE \
- assert(my_perl)
-PERL_CALLCONV int perl_parse(PerlInterpreter *my_perl, XSINIT_t xsinit, int argc, char** argv, char** env);
-#define PERL_ARGS_ASSERT_PERL_PARSE \
- assert(my_perl)
-PERL_CALLCONV int perl_run(PerlInterpreter *my_perl);
-#define PERL_ARGS_ASSERT_PERL_RUN \
- assert(my_perl)
-PERL_CALLCONV Signal_t Perl_perly_sighandler(int sig, Siginfo_t *info, void *uap, bool safe);
+
+PERL_CALLCONV void
+perl_construct(PerlInterpreter *my_perl);
+#define PERL_ARGS_ASSERT_PERL_CONSTRUCT \
+ assert(my_perl)
+
+PERL_CALLCONV int
+perl_destruct(PerlInterpreter *my_perl);
+#define PERL_ARGS_ASSERT_PERL_DESTRUCT \
+ assert(my_perl)
+
+PERL_CALLCONV void
+perl_free(PerlInterpreter *my_perl);
+#define PERL_ARGS_ASSERT_PERL_FREE \
+ assert(my_perl)
+
+PERL_CALLCONV int
+perl_parse(PerlInterpreter *my_perl, XSINIT_t xsinit, int argc, char **argv, char **env);
+#define PERL_ARGS_ASSERT_PERL_PARSE \
+ assert(my_perl)
+
+PERL_CALLCONV int
+perl_run(PerlInterpreter *my_perl);
+#define PERL_ARGS_ASSERT_PERL_RUN \
+ assert(my_perl)
+
+PERL_CALLCONV Signal_t
+Perl_perly_sighandler(int sig, Siginfo_t *info, void *uap, bool safe);
#define PERL_ARGS_ASSERT_PERLY_SIGHANDLER
-PERL_CALLCONV void Perl_pmop_dump(pTHX_ PMOP* pm);
+
+/* PERL_CALLCONV const char * const
+phase_name(pTHX_ enum perl_phase); */
+
+PERL_CALLCONV void
+Perl_pmop_dump(pTHX_ PMOP *pm);
#define PERL_ARGS_ASSERT_PMOP_DUMP
-PERL_CALLCONV OP* Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl, UV flags, I32 floor);
-#define PERL_ARGS_ASSERT_PMRUNTIME \
- assert(o); assert(expr)
-PERL_CALLCONV void Perl_pop_scope(pTHX);
+
+PERL_CALLCONV OP *
+Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl, UV flags, I32 floor)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_PMRUNTIME \
+ assert(o); assert(expr)
+
+PERL_CALLCONV void
+Perl_pop_scope(pTHX);
#define PERL_ARGS_ASSERT_POP_SCOPE
-PERL_CALLCONV void Perl_populate_isa(pTHX_ const char *name, STRLEN len, ...);
-#define PERL_ARGS_ASSERT_POPULATE_ISA \
- assert(name)
-PERL_CALLCONV REGEXP* Perl_pregcomp(pTHX_ SV * const pattern, const U32 flags);
-#define PERL_ARGS_ASSERT_PREGCOMP \
- assert(pattern)
-PERL_CALLCONV I32 Perl_pregexec(pTHX_ REGEXP * const prog, char* stringarg, char* strend, char* strbeg, SSize_t minend, SV* screamer, U32 nosave);
-#define PERL_ARGS_ASSERT_PREGEXEC \
- assert(prog); assert(stringarg); assert(strend); assert(strbeg); assert(screamer)
-PERL_CALLCONV void Perl_pregfree(pTHX_ REGEXP* r);
+
+PERL_CALLCONV void
+Perl_populate_isa(pTHX_ const char *name, STRLEN len, ...)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_POPULATE_ISA \
+ assert(name)
+
+PERL_CALLCONV REGEXP *
+Perl_pregcomp(pTHX_ SV * const pattern, const U32 flags);
+#define PERL_ARGS_ASSERT_PREGCOMP \
+ assert(pattern)
+
+PERL_CALLCONV I32
+Perl_pregexec(pTHX_ REGEXP * const prog, char *stringarg, char *strend, char *strbeg, SSize_t minend, SV *screamer, U32 nosave);
+#define PERL_ARGS_ASSERT_PREGEXEC \
+ assert(prog); assert(stringarg); assert(strend); assert(strbeg); \
+ assert(screamer)
+
+PERL_CALLCONV void
+Perl_pregfree(pTHX_ REGEXP *r);
#define PERL_ARGS_ASSERT_PREGFREE
-PERL_CALLCONV void Perl_pregfree2(pTHX_ REGEXP *rx);
-#define PERL_ARGS_ASSERT_PREGFREE2 \
- assert(rx)
-PERL_CALLCONV const char* Perl_prescan_version(pTHX_ const char *s, bool strict, const char** errstr, bool *sqv, int *ssaw_decimal, int *swidth, bool *salpha);
-#define PERL_ARGS_ASSERT_PRESCAN_VERSION \
- assert(s)
-PERL_CALLCONV void Perl_ptr_table_clear(pTHX_ PTR_TBL_t *const tbl)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_PTR_TABLE_CLEAR
-
-PERL_CALLCONV void* Perl_ptr_table_fetch(pTHX_ PTR_TBL_t *const tbl, const void *const sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PTR_TABLE_FETCH \
- assert(tbl)
-
-PERL_CALLCONV void Perl_ptr_table_free(pTHX_ PTR_TBL_t *const tbl);
+
+PERL_CALLCONV void
+Perl_pregfree2(pTHX_ REGEXP *rx);
+#define PERL_ARGS_ASSERT_PREGFREE2 \
+ assert(rx)
+
+PERL_CALLCONV const char *
+Perl_prescan_version(pTHX_ const char *s, bool strict, const char **errstr, bool *sqv, int *ssaw_decimal, int *swidth, bool *salpha);
+#define PERL_ARGS_ASSERT_PRESCAN_VERSION \
+ assert(s)
+
+PERL_CALLCONV void *
+Perl_ptr_table_fetch(pTHX_ PTR_TBL_t * const tbl, const void * const sv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_PTR_TABLE_FETCH \
+ assert(tbl)
+
+PERL_CALLCONV void
+Perl_ptr_table_free(pTHX_ PTR_TBL_t * const tbl);
#define PERL_ARGS_ASSERT_PTR_TABLE_FREE
-PERL_CALLCONV PTR_TBL_t* Perl_ptr_table_new(pTHX)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV PTR_TBL_t *
+Perl_ptr_table_new(pTHX)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_PTR_TABLE_NEW
-PERL_CALLCONV void Perl_ptr_table_split(pTHX_ PTR_TBL_t *const tbl);
-#define PERL_ARGS_ASSERT_PTR_TABLE_SPLIT \
- assert(tbl)
-PERL_CALLCONV void Perl_ptr_table_store(pTHX_ PTR_TBL_t *const tbl, const void *const oldsv, void *const newsv);
-#define PERL_ARGS_ASSERT_PTR_TABLE_STORE \
- assert(tbl); assert(newsv)
-PERL_CALLCONV void Perl_push_scope(pTHX);
+PERL_CALLCONV void
+Perl_ptr_table_split(pTHX_ PTR_TBL_t * const tbl);
+#define PERL_ARGS_ASSERT_PTR_TABLE_SPLIT \
+ assert(tbl)
+
+PERL_CALLCONV void
+Perl_ptr_table_store(pTHX_ PTR_TBL_t * const tbl, const void * const oldsv, void * const newsv);
+#define PERL_ARGS_ASSERT_PTR_TABLE_STORE \
+ assert(tbl); assert(newsv)
+
+PERL_CALLCONV void
+Perl_push_scope(pTHX);
#define PERL_ARGS_ASSERT_PUSH_SCOPE
-PERL_CALLCONV char* Perl_pv_display(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim);
-#define PERL_ARGS_ASSERT_PV_DISPLAY \
- assert(dsv); assert(pv)
-PERL_CALLCONV char* Perl_pv_escape(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, STRLEN * const escaped, const U32 flags);
-#define PERL_ARGS_ASSERT_PV_ESCAPE \
- assert(str)
-PERL_CALLCONV char* Perl_pv_pretty(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags);
-#define PERL_ARGS_ASSERT_PV_PRETTY \
- assert(dsv); assert(str)
-PERL_CALLCONV char* Perl_pv_uni_display(pTHX_ SV *dsv, const U8 *spv, STRLEN len, STRLEN pvlim, UV flags);
-#define PERL_ARGS_ASSERT_PV_UNI_DISPLAY \
- assert(dsv); assert(spv)
-PERL_CALLCONV void Perl_qerror(pTHX_ SV* err);
-#define PERL_ARGS_ASSERT_QERROR \
- assert(err)
-PERL_CALLCONV REGEXP* Perl_re_compile(pTHX_ SV * const pattern, U32 orig_rx_flags);
-#define PERL_ARGS_ASSERT_RE_COMPILE \
- assert(pattern)
-PERL_CALLCONV char* Perl_re_intuit_start(pTHX_ REGEXP * const rx, SV* sv, const char* const strbeg, char* strpos, char* strend, const U32 flags, re_scream_pos_data *data);
-#define PERL_ARGS_ASSERT_RE_INTUIT_START \
- assert(rx); assert(strbeg); assert(strpos); assert(strend)
-PERL_CALLCONV SV* Perl_re_intuit_string(pTHX_ REGEXP *const r);
-#define PERL_ARGS_ASSERT_RE_INTUIT_STRING \
- assert(r)
-PERL_CALLCONV REGEXP* Perl_re_op_compile(pTHX_ SV ** const patternp, int pat_count, OP *expr, const regexp_engine* eng, REGEXP *old_re, bool *is_bare_re, const U32 rx_flags, const U32 pm_flags);
-#define PERL_ARGS_ASSERT_RE_OP_COMPILE \
- assert(eng)
-PERL_CALLCONV Malloc_t Perl_realloc(Malloc_t where, MEM_SIZE nbytes)
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV char *
+Perl_pv_display(pTHX_ SV *dsv, const char *pv, STRLEN cur, STRLEN len, STRLEN pvlim);
+#define PERL_ARGS_ASSERT_PV_DISPLAY \
+ assert(dsv); assert(pv)
+
+PERL_CALLCONV char *
+Perl_pv_escape(pTHX_ SV *dsv, char const * const str, const STRLEN count, STRLEN max, STRLEN * const escaped, U32 flags);
+#define PERL_ARGS_ASSERT_PV_ESCAPE \
+ assert(str)
+
+PERL_CALLCONV char *
+Perl_pv_pretty(pTHX_ SV *dsv, char const * const str, const STRLEN count, const STRLEN max, char const * const start_color, char const * const end_color, const U32 flags);
+#define PERL_ARGS_ASSERT_PV_PRETTY \
+ assert(dsv); assert(str)
+
+PERL_CALLCONV char *
+Perl_pv_uni_display(pTHX_ SV *dsv, const U8 *spv, STRLEN len, STRLEN pvlim, UV flags);
+#define PERL_ARGS_ASSERT_PV_UNI_DISPLAY \
+ assert(dsv); assert(spv)
+
+PERL_CALLCONV void
+Perl_qerror(pTHX_ SV *err);
+#define PERL_ARGS_ASSERT_QERROR
+
+PERL_CALLCONV char *
+Perl_rcpv_copy(pTHX_ char * const pv);
+#define PERL_ARGS_ASSERT_RCPV_COPY
+
+PERL_CALLCONV char *
+Perl_rcpv_free(pTHX_ char * const pv);
+#define PERL_ARGS_ASSERT_RCPV_FREE
+
+PERL_CALLCONV char *
+Perl_rcpv_new(pTHX_ const char * const pv, STRLEN len, U32 flags)
+ __attribute__malloc__
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_RCPV_NEW
+
+PERL_CALLCONV REGEXP *
+Perl_re_compile(pTHX_ SV * const pattern, U32 orig_rx_flags);
+#define PERL_ARGS_ASSERT_RE_COMPILE \
+ assert(pattern)
+
+PERL_CALLCONV char *
+Perl_re_intuit_start(pTHX_ REGEXP * const rx, SV *sv, const char * const strbeg, char *strpos, char *strend, const U32 flags, re_scream_pos_data *data);
+#define PERL_ARGS_ASSERT_RE_INTUIT_START \
+ assert(rx); assert(strbeg); assert(strpos); assert(strend)
+
+PERL_CALLCONV SV *
+Perl_re_intuit_string(pTHX_ REGEXP * const r);
+#define PERL_ARGS_ASSERT_RE_INTUIT_STRING \
+ assert(r)
+
+PERL_CALLCONV REGEXP *
+Perl_re_op_compile(pTHX_ SV ** const patternp, int pat_count, OP *expr, const regexp_engine *eng, REGEXP *old_re, bool *is_bare_re, const U32 rx_flags, const U32 pm_flags);
+#define PERL_ARGS_ASSERT_RE_OP_COMPILE \
+ assert(eng)
+
+PERL_CALLCONV Malloc_t
+Perl_realloc(Malloc_t where, MEM_SIZE nbytes)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_REALLOC
-PERL_CALLCONV void Perl_reentrant_free(pTHX);
+PERL_CALLCONV void
+Perl_reentrant_free(pTHX);
#define PERL_ARGS_ASSERT_REENTRANT_FREE
-PERL_CALLCONV void Perl_reentrant_init(pTHX);
+
+PERL_CALLCONV void
+Perl_reentrant_init(pTHX);
#define PERL_ARGS_ASSERT_REENTRANT_INIT
-PERL_CALLCONV void* Perl_reentrant_retry(const char *f, ...);
-#define PERL_ARGS_ASSERT_REENTRANT_RETRY \
- assert(f)
-PERL_CALLCONV void Perl_reentrant_size(pTHX);
+
+PERL_CALLCONV void *
+Perl_reentrant_retry(const char *f, ...);
+#define PERL_ARGS_ASSERT_REENTRANT_RETRY \
+ assert(f)
+
+PERL_CALLCONV void
+Perl_reentrant_size(pTHX);
#define PERL_ARGS_ASSERT_REENTRANT_SIZE
-PERL_CALLCONV HV * Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *c, U32 flags);
+
+PERL_CALLCONV HV *
+Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *c, U32 flags);
#define PERL_ARGS_ASSERT_REFCOUNTED_HE_CHAIN_2HV
-PERL_CALLCONV SV * Perl_refcounted_he_fetch_pv(pTHX_ const struct refcounted_he *chain, const char *key, U32 hash, U32 flags);
-#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PV \
- assert(key)
-PERL_CALLCONV SV * Perl_refcounted_he_fetch_pvn(pTHX_ const struct refcounted_he *chain, const char *keypv, STRLEN keylen, U32 hash, U32 flags);
-#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PVN \
- assert(keypv)
-PERL_CALLCONV SV * Perl_refcounted_he_fetch_sv(pTHX_ const struct refcounted_he *chain, SV *key, U32 hash, U32 flags);
-#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_SV \
- assert(key)
-PERL_CALLCONV void Perl_refcounted_he_free(pTHX_ struct refcounted_he *he);
+
+PERL_CALLCONV SV *
+Perl_refcounted_he_fetch_pv(pTHX_ const struct refcounted_he *chain, const char *key, U32 hash, U32 flags);
+#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PV \
+ assert(key)
+
+PERL_CALLCONV SV *
+Perl_refcounted_he_fetch_pvn(pTHX_ const struct refcounted_he *chain, const char *keypv, STRLEN keylen, U32 hash, U32 flags);
+#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_PVN \
+ assert(keypv)
+
+PERL_CALLCONV SV *
+Perl_refcounted_he_fetch_sv(pTHX_ const struct refcounted_he *chain, SV *key, U32 hash, U32 flags);
+#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FETCH_SV \
+ assert(key)
+
+PERL_CALLCONV void
+Perl_refcounted_he_free(pTHX_ struct refcounted_he *he);
#define PERL_ARGS_ASSERT_REFCOUNTED_HE_FREE
-PERL_CALLCONV struct refcounted_he * Perl_refcounted_he_inc(pTHX_ struct refcounted_he *he);
+
+PERL_CALLCONV struct refcounted_he *
+Perl_refcounted_he_inc(pTHX_ struct refcounted_he *he);
#define PERL_ARGS_ASSERT_REFCOUNTED_HE_INC
-PERL_CALLCONV struct refcounted_he * Perl_refcounted_he_new_pv(pTHX_ struct refcounted_he *parent, const char *key, U32 hash, SV *value, U32 flags);
-#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PV \
- assert(key)
-PERL_CALLCONV struct refcounted_he * Perl_refcounted_he_new_pvn(pTHX_ struct refcounted_he *parent, const char *keypv, STRLEN keylen, U32 hash, SV *value, U32 flags);
-#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PVN \
- assert(keypv)
-PERL_CALLCONV struct refcounted_he * Perl_refcounted_he_new_sv(pTHX_ struct refcounted_he *parent, SV *key, U32 hash, SV *value, U32 flags);
-#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_SV \
- assert(key)
-PERL_CALLCONV SV* Perl_reg_named_buff(pTHX_ REGEXP * const rx, SV * const key, SV * const value, const U32 flags);
-#define PERL_ARGS_ASSERT_REG_NAMED_BUFF \
- assert(rx)
-PERL_CALLCONV SV* Perl_reg_named_buff_all(pTHX_ REGEXP * const rx, const U32 flags);
-#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_ALL \
- assert(rx)
-PERL_CALLCONV bool Perl_reg_named_buff_exists(pTHX_ REGEXP * const rx, SV * const key, const U32 flags);
-#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_EXISTS \
- assert(rx); assert(key)
-PERL_CALLCONV SV* Perl_reg_named_buff_fetch(pTHX_ REGEXP * const rx, SV * const namesv, const U32 flags);
-#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_FETCH \
- assert(rx); assert(namesv)
-PERL_CALLCONV SV* Perl_reg_named_buff_firstkey(pTHX_ REGEXP * const rx, const U32 flags);
-#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_FIRSTKEY \
- assert(rx)
-PERL_CALLCONV SV* Perl_reg_named_buff_iter(pTHX_ REGEXP * const rx, const SV * const lastkey, const U32 flags);
-#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_ITER \
- assert(rx)
-PERL_CALLCONV SV* Perl_reg_named_buff_nextkey(pTHX_ REGEXP * const rx, const U32 flags);
-#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_NEXTKEY \
- assert(rx)
-PERL_CALLCONV SV* Perl_reg_named_buff_scalar(pTHX_ REGEXP * const rx, const U32 flags);
-#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_SCALAR \
- assert(rx)
-PERL_CALLCONV void Perl_reg_numbered_buff_fetch(pTHX_ REGEXP * const rx, const I32 paren, SV * const sv);
-#define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_FETCH \
- assert(rx)
-PERL_CALLCONV I32 Perl_reg_numbered_buff_length(pTHX_ REGEXP * const rx, const SV * const sv, const I32 paren);
-#define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_LENGTH \
- assert(rx); assert(sv)
-PERL_CALLCONV void Perl_reg_numbered_buff_store(pTHX_ REGEXP * const rx, const I32 paren, SV const * const value);
-#define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_STORE \
- assert(rx)
-PERL_CALLCONV SV* Perl_reg_qr_package(pTHX_ REGEXP * const rx);
-#define PERL_ARGS_ASSERT_REG_QR_PACKAGE \
- assert(rx)
-PERL_CALLCONV REGEXP* Perl_reg_temp_copy(pTHX_ REGEXP* dsv, REGEXP* ssv);
-#define PERL_ARGS_ASSERT_REG_TEMP_COPY \
- assert(ssv)
-PERL_CALLCONV void Perl_regdump(pTHX_ const regexp* r);
-#define PERL_ARGS_ASSERT_REGDUMP \
- assert(r)
-PERL_CALLCONV I32 Perl_regexec_flags(pTHX_ REGEXP *const rx, char *stringarg, char *strend, char *strbeg, SSize_t minend, SV *sv, void *data, U32 flags);
-#define PERL_ARGS_ASSERT_REGEXEC_FLAGS \
- assert(rx); assert(stringarg); assert(strend); assert(strbeg); assert(sv)
-PERL_CALLCONV void Perl_regfree_internal(pTHX_ REGEXP *const rx);
-#define PERL_ARGS_ASSERT_REGFREE_INTERNAL \
- assert(rx)
-PERL_CALLCONV void Perl_reginitcolors(pTHX);
+
+PERL_CALLCONV struct refcounted_he *
+Perl_refcounted_he_new_pv(pTHX_ struct refcounted_he *parent, const char *key, U32 hash, SV *value, U32 flags);
+#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PV \
+ assert(key)
+
+PERL_CALLCONV struct refcounted_he *
+Perl_refcounted_he_new_pvn(pTHX_ struct refcounted_he *parent, const char *keypv, STRLEN keylen, U32 hash, SV *value, U32 flags);
+#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_PVN \
+ assert(keypv)
+
+PERL_CALLCONV struct refcounted_he *
+Perl_refcounted_he_new_sv(pTHX_ struct refcounted_he *parent, SV *key, U32 hash, SV *value, U32 flags);
+#define PERL_ARGS_ASSERT_REFCOUNTED_HE_NEW_SV \
+ assert(key)
+
+PERL_CALLCONV SV *
+Perl_reg_named_buff(pTHX_ REGEXP * const rx, SV * const key, SV * const value, const U32 flags);
+#define PERL_ARGS_ASSERT_REG_NAMED_BUFF \
+ assert(rx)
+
+PERL_CALLCONV SV *
+Perl_reg_named_buff_all(pTHX_ REGEXP * const rx, const U32 flags);
+#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_ALL \
+ assert(rx)
+
+PERL_CALLCONV bool
+Perl_reg_named_buff_exists(pTHX_ REGEXP * const rx, SV * const key, const U32 flags);
+#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_EXISTS \
+ assert(rx); assert(key)
+
+PERL_CALLCONV SV *
+Perl_reg_named_buff_fetch(pTHX_ REGEXP * const rx, SV * const namesv, const U32 flags);
+#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_FETCH \
+ assert(rx); assert(namesv)
+
+PERL_CALLCONV SV *
+Perl_reg_named_buff_firstkey(pTHX_ REGEXP * const rx, const U32 flags);
+#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_FIRSTKEY \
+ assert(rx)
+
+PERL_CALLCONV SV *
+Perl_reg_named_buff_iter(pTHX_ REGEXP * const rx, const SV * const lastkey, const U32 flags);
+#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_ITER \
+ assert(rx)
+
+PERL_CALLCONV SV *
+Perl_reg_named_buff_nextkey(pTHX_ REGEXP * const rx, const U32 flags);
+#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_NEXTKEY \
+ assert(rx)
+
+PERL_CALLCONV SV *
+Perl_reg_named_buff_scalar(pTHX_ REGEXP * const rx, const U32 flags);
+#define PERL_ARGS_ASSERT_REG_NAMED_BUFF_SCALAR \
+ assert(rx)
+
+PERL_CALLCONV void
+Perl_reg_numbered_buff_fetch(pTHX_ REGEXP * const re, const I32 paren, SV * const sv);
+#define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_FETCH \
+ assert(re)
+
+PERL_CALLCONV void
+Perl_reg_numbered_buff_fetch_flags(pTHX_ REGEXP * const re, const I32 paren, SV * const sv, U32 flags);
+#define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_FETCH_FLAGS \
+ assert(re)
+
+PERL_CALLCONV I32
+Perl_reg_numbered_buff_length(pTHX_ REGEXP * const rx, const SV * const sv, const I32 paren);
+#define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_LENGTH \
+ assert(rx); assert(sv)
+
+PERL_CALLCONV void
+Perl_reg_numbered_buff_store(pTHX_ REGEXP * const rx, const I32 paren, SV const * const value);
+#define PERL_ARGS_ASSERT_REG_NUMBERED_BUFF_STORE \
+ assert(rx)
+
+PERL_CALLCONV SV *
+Perl_reg_qr_package(pTHX_ REGEXP * const rx);
+#define PERL_ARGS_ASSERT_REG_QR_PACKAGE \
+ assert(rx)
+
+PERL_CALLCONV REGEXP *
+Perl_reg_temp_copy(pTHX_ REGEXP *dsv, REGEXP *ssv);
+#define PERL_ARGS_ASSERT_REG_TEMP_COPY \
+ assert(ssv)
+
+PERL_CALLCONV void
+Perl_regdump(pTHX_ const regexp *r);
+#define PERL_ARGS_ASSERT_REGDUMP \
+ assert(r)
+
+PERL_CALLCONV I32
+Perl_regexec_flags(pTHX_ REGEXP * const rx, char *stringarg, char *strend, char *strbeg, SSize_t minend, SV *sv, void *data, U32 flags);
+#define PERL_ARGS_ASSERT_REGEXEC_FLAGS \
+ assert(rx); assert(stringarg); assert(strend); assert(strbeg); assert(sv)
+
+PERL_CALLCONV void
+Perl_regfree_internal(pTHX_ REGEXP * const rx);
+#define PERL_ARGS_ASSERT_REGFREE_INTERNAL \
+ assert(rx)
+
+PERL_CALLCONV void
+Perl_reginitcolors(pTHX);
#define PERL_ARGS_ASSERT_REGINITCOLORS
-PERL_CALLCONV regnode* Perl_regnext(pTHX_ regnode* p)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_REGNEXT
-
-PERL_CALLCONV void Perl_repeatcpy(char* to, const char* from, I32 len, IV count);
-#define PERL_ARGS_ASSERT_REPEATCPY \
- assert(to); assert(from)
-PERL_CALLCONV void Perl_report_evil_fh(pTHX_ const GV *gv);
+
+PERL_CALLCONV void
+Perl_repeatcpy(char *to, const char *from, I32 len, IV count);
+#define PERL_ARGS_ASSERT_REPEATCPY \
+ assert(to); assert(from)
+
+PERL_CALLCONV void
+Perl_report_evil_fh(pTHX_ const GV *gv)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_REPORT_EVIL_FH
-PERL_CALLCONV void Perl_report_uninit(pTHX_ const SV *uninit_sv);
+
+PERL_CALLCONV void
+Perl_report_uninit(pTHX_ const SV *uninit_sv);
#define PERL_ARGS_ASSERT_REPORT_UNINIT
-PERL_CALLCONV void Perl_report_wrongway_fh(pTHX_ const GV *gv, const char have);
+
+PERL_CALLCONV void
+Perl_report_wrongway_fh(pTHX_ const GV *gv, const char have)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_REPORT_WRONGWAY_FH
-PERL_CALLCONV void Perl_require_pv(pTHX_ const char* pv);
-#define PERL_ARGS_ASSERT_REQUIRE_PV \
- assert(pv)
-PERL_CALLCONV char* Perl_rninstr(const char* big, const char* bigend, const char* little, const char* lend)
- __attribute__warn_unused_result__
- __attribute__pure__;
-#define PERL_ARGS_ASSERT_RNINSTR \
- assert(big); assert(bigend); assert(little); assert(lend)
-
-PERL_CALLCONV void Perl_rpeep(pTHX_ OP* o);
+
+PERL_CALLCONV void
+Perl_require_pv(pTHX_ const char *pv);
+#define PERL_ARGS_ASSERT_REQUIRE_PV \
+ assert(pv)
+
+PERL_CALLCONV void
+Perl_resume_compcv(pTHX_ struct suspended_compcv *buffer, bool save);
+#define PERL_ARGS_ASSERT_RESUME_COMPCV \
+ assert(buffer)
+
+/* PERL_CALLCONV void
+resume_compcv_and_save(pTHX_ struct suspended_compcv *buffer); */
+
+/* PERL_CALLCONV void
+resume_compcv_final(pTHX_ struct suspended_compcv *buffer); */
+
+PERL_CALLCONV char *
+Perl_rninstr(const char *big, const char *bigend, const char *little, const char *lend)
+ __attribute__warn_unused_result__
+ __attribute__pure__;
+#define PERL_ARGS_ASSERT_RNINSTR \
+ assert(big); assert(bigend); assert(little); assert(lend)
+
+PERL_CALLCONV void
+Perl_rpeep(pTHX_ OP *o)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_RPEEP
-PERL_CALLCONV Sighandler_t Perl_rsignal(pTHX_ int i, Sighandler_t t);
+
+PERL_CALLCONV Sighandler_t
+Perl_rsignal(pTHX_ int i, Sighandler_t t);
#define PERL_ARGS_ASSERT_RSIGNAL
-PERL_CALLCONV int Perl_rsignal_restore(pTHX_ int i, Sigsave_t* t);
+
+PERL_CALLCONV int
+Perl_rsignal_restore(pTHX_ int i, Sigsave_t *t)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_RSIGNAL_RESTORE
-PERL_CALLCONV int Perl_rsignal_save(pTHX_ int i, Sighandler_t t1, Sigsave_t* save);
-#define PERL_ARGS_ASSERT_RSIGNAL_SAVE \
- assert(save)
-PERL_CALLCONV Sighandler_t Perl_rsignal_state(pTHX_ int i);
+
+PERL_CALLCONV int
+Perl_rsignal_save(pTHX_ int i, Sighandler_t t1, Sigsave_t *save)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_RSIGNAL_SAVE \
+ assert(save)
+
+PERL_CALLCONV Sighandler_t
+Perl_rsignal_state(pTHX_ int i);
#define PERL_ARGS_ASSERT_RSIGNAL_STATE
-PERL_CALLCONV int Perl_runops_debug(pTHX);
+
+PERL_CALLCONV int
+Perl_runops_debug(pTHX);
#define PERL_ARGS_ASSERT_RUNOPS_DEBUG
-PERL_CALLCONV int Perl_runops_standard(pTHX);
+
+PERL_CALLCONV int
+Perl_runops_standard(pTHX);
#define PERL_ARGS_ASSERT_RUNOPS_STANDARD
-PERL_CALLCONV CV* Perl_rv2cv_op_cv(pTHX_ OP *cvop, U32 flags);
-#define PERL_ARGS_ASSERT_RV2CV_OP_CV \
- assert(cvop)
-PERL_CALLCONV void Perl_rxres_save(pTHX_ void **rsp, REGEXP *rx);
-#define PERL_ARGS_ASSERT_RXRES_SAVE \
- assert(rsp); assert(rx)
-PERL_CALLCONV Malloc_t Perl_safesyscalloc(MEM_SIZE elements, MEM_SIZE size)
- __attribute__malloc__
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV CV *
+Perl_rv2cv_op_cv(pTHX_ OP *cvop, U32 flags);
+#define PERL_ARGS_ASSERT_RV2CV_OP_CV \
+ assert(cvop)
+
+PERL_CALLCONV void
+Perl_rxres_save(pTHX_ void **rsp, REGEXP *rx)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_RXRES_SAVE \
+ assert(rsp); assert(rx)
+
+PERL_CALLCONV Malloc_t
+Perl_safesyscalloc(MEM_SIZE elements, MEM_SIZE size)
+ __attribute__malloc__
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAFESYSCALLOC
-PERL_CALLCONV Free_t Perl_safesysfree(Malloc_t where);
+PERL_CALLCONV Free_t
+Perl_safesysfree(Malloc_t where);
#define PERL_ARGS_ASSERT_SAFESYSFREE
-PERL_CALLCONV Malloc_t Perl_safesysmalloc(MEM_SIZE nbytes)
- __attribute__malloc__
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV Malloc_t
+Perl_safesysmalloc(MEM_SIZE nbytes)
+ __attribute__malloc__
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAFESYSMALLOC
-PERL_CALLCONV Malloc_t Perl_safesysrealloc(Malloc_t where, MEM_SIZE nbytes)
- __attribute__warn_unused_result__;
+PERL_CALLCONV Malloc_t
+Perl_safesysrealloc(Malloc_t where, MEM_SIZE nbytes)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAFESYSREALLOC
-PERL_CALLCONV void Perl_save_I16(pTHX_ I16* intp);
-#define PERL_ARGS_ASSERT_SAVE_I16 \
- assert(intp)
-PERL_CALLCONV void Perl_save_I32(pTHX_ I32* intp);
-#define PERL_ARGS_ASSERT_SAVE_I32 \
- assert(intp)
-PERL_CALLCONV void Perl_save_I8(pTHX_ I8* bytep);
-#define PERL_ARGS_ASSERT_SAVE_I8 \
- assert(bytep)
-PERL_CALLCONV void Perl_save_adelete(pTHX_ AV *av, SSize_t key);
-#define PERL_ARGS_ASSERT_SAVE_ADELETE \
- assert(av)
-/* PERL_CALLCONV void save_aelem(pTHX_ AV* av, SSize_t idx, SV **sptr); */
-#define PERL_ARGS_ASSERT_SAVE_AELEM
-PERL_CALLCONV void Perl_save_aelem_flags(pTHX_ AV* av, SSize_t idx, SV **sptr, const U32 flags);
-#define PERL_ARGS_ASSERT_SAVE_AELEM_FLAGS \
- assert(av); assert(sptr)
-PERL_CALLCONV I32 Perl_save_alloc(pTHX_ I32 size, I32 pad);
+PERL_CALLCONV void
+Perl_save_I16(pTHX_ I16 *intp);
+#define PERL_ARGS_ASSERT_SAVE_I16 \
+ assert(intp)
+
+PERL_CALLCONV void
+Perl_save_I32(pTHX_ I32 *intp);
+#define PERL_ARGS_ASSERT_SAVE_I32 \
+ assert(intp)
+
+PERL_CALLCONV void
+Perl_save_I8(pTHX_ I8 *bytep);
+#define PERL_ARGS_ASSERT_SAVE_I8 \
+ assert(bytep)
+
+PERL_CALLCONV void
+Perl_save_adelete(pTHX_ AV *av, SSize_t key);
+#define PERL_ARGS_ASSERT_SAVE_ADELETE \
+ assert(av)
+
+/* PERL_CALLCONV void
+save_aelem(pTHX_ AV *av, SSize_t idx, SV **sptr); */
+
+PERL_CALLCONV void
+Perl_save_aelem_flags(pTHX_ AV *av, SSize_t idx, SV **sptr, const U32 flags);
+#define PERL_ARGS_ASSERT_SAVE_AELEM_FLAGS \
+ assert(av); assert(sptr)
+
+PERL_CALLCONV SSize_t
+Perl_save_alloc(pTHX_ SSize_t size, I32 pad);
#define PERL_ARGS_ASSERT_SAVE_ALLOC
-PERL_CALLCONV void Perl_save_aptr(pTHX_ AV** aptr);
-#define PERL_ARGS_ASSERT_SAVE_APTR \
- assert(aptr)
-PERL_CALLCONV AV* Perl_save_ary(pTHX_ GV* gv);
-#define PERL_ARGS_ASSERT_SAVE_ARY \
- assert(gv)
-PERL_CALLCONV void Perl_save_bool(pTHX_ bool* boolp);
-#define PERL_ARGS_ASSERT_SAVE_BOOL \
- assert(boolp)
-PERL_CALLCONV void Perl_save_clearsv(pTHX_ SV** svp);
-#define PERL_ARGS_ASSERT_SAVE_CLEARSV \
- assert(svp)
-PERL_CALLCONV void Perl_save_delete(pTHX_ HV *hv, char *key, I32 klen);
-#define PERL_ARGS_ASSERT_SAVE_DELETE \
- assert(hv); assert(key)
-PERL_CALLCONV void Perl_save_destructor(pTHX_ DESTRUCTORFUNC_NOCONTEXT_t f, void* p);
-#define PERL_ARGS_ASSERT_SAVE_DESTRUCTOR \
- assert(p)
-PERL_CALLCONV void Perl_save_destructor_x(pTHX_ DESTRUCTORFUNC_t f, void* p);
+
+PERL_CALLCONV void
+Perl_save_aptr(pTHX_ AV **aptr);
+#define PERL_ARGS_ASSERT_SAVE_APTR \
+ assert(aptr)
+
+PERL_CALLCONV AV *
+Perl_save_ary(pTHX_ GV *gv);
+#define PERL_ARGS_ASSERT_SAVE_ARY \
+ assert(gv)
+
+PERL_CALLCONV void
+Perl_save_bool(pTHX_ bool *boolp);
+#define PERL_ARGS_ASSERT_SAVE_BOOL \
+ assert(boolp)
+
+PERL_CALLCONV void
+Perl_save_clearsv(pTHX_ SV **svp);
+#define PERL_ARGS_ASSERT_SAVE_CLEARSV \
+ assert(svp)
+
+PERL_CALLCONV void
+Perl_save_delete(pTHX_ HV *hv, char *key, I32 klen);
+#define PERL_ARGS_ASSERT_SAVE_DELETE \
+ assert(hv); assert(key)
+
+PERL_CALLCONV void
+Perl_save_destructor(pTHX_ DESTRUCTORFUNC_NOCONTEXT_t f, void *p);
+#define PERL_ARGS_ASSERT_SAVE_DESTRUCTOR \
+ assert(p)
+
+PERL_CALLCONV void
+Perl_save_destructor_x(pTHX_ DESTRUCTORFUNC_t f, void *p);
#define PERL_ARGS_ASSERT_SAVE_DESTRUCTOR_X
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_save_freeop(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_SAVE_FREEOP
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_save_freepv(pTHX_ char* pv);
-#define PERL_ARGS_ASSERT_SAVE_FREEPV
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_save_freesv(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_SAVE_FREESV
-#endif
-PERL_CALLCONV void Perl_save_generic_pvref(pTHX_ char** str);
-#define PERL_ARGS_ASSERT_SAVE_GENERIC_PVREF \
- assert(str)
-PERL_CALLCONV void Perl_save_generic_svref(pTHX_ SV** sptr);
-#define PERL_ARGS_ASSERT_SAVE_GENERIC_SVREF \
- assert(sptr)
-PERL_CALLCONV void Perl_save_gp(pTHX_ GV* gv, I32 empty);
-#define PERL_ARGS_ASSERT_SAVE_GP \
- assert(gv)
-PERL_CALLCONV HV* Perl_save_hash(pTHX_ GV* gv);
-#define PERL_ARGS_ASSERT_SAVE_HASH \
- assert(gv)
-PERL_CALLCONV void Perl_save_hdelete(pTHX_ HV *hv, SV *keysv);
-#define PERL_ARGS_ASSERT_SAVE_HDELETE \
- assert(hv); assert(keysv)
-/* PERL_CALLCONV void save_helem(pTHX_ HV *hv, SV *key, SV **sptr); */
-#define PERL_ARGS_ASSERT_SAVE_HELEM
-PERL_CALLCONV void Perl_save_helem_flags(pTHX_ HV *hv, SV *key, SV **sptr, const U32 flags);
-#define PERL_ARGS_ASSERT_SAVE_HELEM_FLAGS \
- assert(hv); assert(key); assert(sptr)
-PERL_CALLCONV void Perl_save_hints(pTHX);
+
+PERL_CALLCONV void
+Perl_save_freercpv(pTHX_ char *rcpv);
+#define PERL_ARGS_ASSERT_SAVE_FREERCPV \
+ assert(rcpv)
+
+PERL_CALLCONV void
+Perl_save_generic_pvref(pTHX_ char **str);
+#define PERL_ARGS_ASSERT_SAVE_GENERIC_PVREF \
+ assert(str)
+
+PERL_CALLCONV void
+Perl_save_generic_svref(pTHX_ SV **sptr);
+#define PERL_ARGS_ASSERT_SAVE_GENERIC_SVREF \
+ assert(sptr)
+
+PERL_CALLCONV void
+Perl_save_gp(pTHX_ GV *gv, I32 empty);
+#define PERL_ARGS_ASSERT_SAVE_GP \
+ assert(gv)
+
+PERL_CALLCONV HV *
+Perl_save_hash(pTHX_ GV *gv);
+#define PERL_ARGS_ASSERT_SAVE_HASH \
+ assert(gv)
+
+PERL_CALLCONV void
+Perl_save_hdelete(pTHX_ HV *hv, SV *keysv);
+#define PERL_ARGS_ASSERT_SAVE_HDELETE \
+ assert(hv); assert(keysv)
+
+/* PERL_CALLCONV void
+save_helem(pTHX_ HV *hv, SV *key, SV **sptr); */
+
+PERL_CALLCONV void
+Perl_save_helem_flags(pTHX_ HV *hv, SV *key, SV **sptr, const U32 flags);
+#define PERL_ARGS_ASSERT_SAVE_HELEM_FLAGS \
+ assert(hv); assert(key); assert(sptr)
+
+PERL_CALLCONV void
+Perl_save_hints(pTHX);
#define PERL_ARGS_ASSERT_SAVE_HINTS
-PERL_CALLCONV void Perl_save_hptr(pTHX_ HV** hptr);
-#define PERL_ARGS_ASSERT_SAVE_HPTR \
- assert(hptr)
-PERL_CALLCONV void Perl_save_int(pTHX_ int* intp);
-#define PERL_ARGS_ASSERT_SAVE_INT \
- assert(intp)
-PERL_CALLCONV void Perl_save_item(pTHX_ SV* item);
-#define PERL_ARGS_ASSERT_SAVE_ITEM \
- assert(item)
-PERL_CALLCONV void Perl_save_iv(pTHX_ IV *ivp);
-#define PERL_ARGS_ASSERT_SAVE_IV \
- assert(ivp)
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_save_list(pTHX_ SV** sarg, I32 maxsarg)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_SAVE_LIST \
- assert(sarg)
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_save_long(pTHX_ long* longp)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_SAVE_LONG \
- assert(longp)
-#endif
+PERL_CALLCONV void
+Perl_save_hptr(pTHX_ HV **hptr);
+#define PERL_ARGS_ASSERT_SAVE_HPTR \
+ assert(hptr)
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_save_mortalizesv(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_SAVE_MORTALIZESV \
- assert(sv)
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_save_nogv(pTHX_ GV* gv)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_SAVE_NOGV \
- assert(gv)
-#endif
+PERL_CALLCONV void
+Perl_save_int(pTHX_ int *intp);
+#define PERL_ARGS_ASSERT_SAVE_INT \
+ assert(intp)
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_save_op(pTHX);
-#define PERL_ARGS_ASSERT_SAVE_OP
-#endif
-PERL_CALLCONV void Perl_save_padsv_and_mortalize(pTHX_ PADOFFSET off);
+PERL_CALLCONV void
+Perl_save_item(pTHX_ SV *item);
+#define PERL_ARGS_ASSERT_SAVE_ITEM \
+ assert(item)
+
+PERL_CALLCONV void
+Perl_save_iv(pTHX_ IV *ivp);
+#define PERL_ARGS_ASSERT_SAVE_IV \
+ assert(ivp)
+
+PERL_CALLCONV void
+Perl_save_padsv_and_mortalize(pTHX_ PADOFFSET off);
#define PERL_ARGS_ASSERT_SAVE_PADSV_AND_MORTALIZE
-PERL_CALLCONV void Perl_save_pptr(pTHX_ char** pptr);
-#define PERL_ARGS_ASSERT_SAVE_PPTR \
- assert(pptr)
-PERL_CALLCONV void Perl_save_pushi32ptr(pTHX_ const I32 i, void *const ptr, const int type);
+
+PERL_CALLCONV void
+Perl_save_pptr(pTHX_ char **pptr);
+#define PERL_ARGS_ASSERT_SAVE_PPTR \
+ assert(pptr)
+
+PERL_CALLCONV void
+Perl_save_pushi32ptr(pTHX_ const I32 i, void * const ptr, const int type);
#define PERL_ARGS_ASSERT_SAVE_PUSHI32PTR
-PERL_CALLCONV void Perl_save_pushptr(pTHX_ void *const ptr, const int type);
+
+PERL_CALLCONV void
+Perl_save_pushptr(pTHX_ void * const ptr, const int type);
#define PERL_ARGS_ASSERT_SAVE_PUSHPTR
-PERL_CALLCONV void Perl_save_pushptrptr(pTHX_ void *const ptr1, void *const ptr2, const int type);
+
+PERL_CALLCONV void
+Perl_save_pushptrptr(pTHX_ void * const ptr1, void * const ptr2, const int type);
#define PERL_ARGS_ASSERT_SAVE_PUSHPTRPTR
-PERL_CALLCONV void Perl_save_re_context(pTHX);
+
+PERL_CALLCONV void
+Perl_save_rcpv(pTHX_ char **prcpv);
+#define PERL_ARGS_ASSERT_SAVE_RCPV \
+ assert(prcpv)
+
+PERL_CALLCONV void
+Perl_save_re_context(pTHX);
#define PERL_ARGS_ASSERT_SAVE_RE_CONTEXT
-PERL_CALLCONV SV* Perl_save_scalar(pTHX_ GV* gv);
-#define PERL_ARGS_ASSERT_SAVE_SCALAR \
- assert(gv)
-PERL_CALLCONV void Perl_save_set_svflags(pTHX_ SV *sv, U32 mask, U32 val);
-#define PERL_ARGS_ASSERT_SAVE_SET_SVFLAGS \
- assert(sv)
-PERL_CALLCONV void Perl_save_shared_pvref(pTHX_ char** str);
-#define PERL_ARGS_ASSERT_SAVE_SHARED_PVREF \
- assert(str)
-PERL_CALLCONV void Perl_save_sptr(pTHX_ SV** sptr);
-#define PERL_ARGS_ASSERT_SAVE_SPTR \
- assert(sptr)
-PERL_CALLCONV void Perl_save_strlen(pTHX_ STRLEN* ptr);
-#define PERL_ARGS_ASSERT_SAVE_STRLEN \
- assert(ptr)
-PERL_CALLCONV SV* Perl_save_svref(pTHX_ SV** sptr);
-#define PERL_ARGS_ASSERT_SAVE_SVREF \
- assert(sptr)
-PERL_CALLCONV void Perl_save_vptr(pTHX_ void *ptr);
-#define PERL_ARGS_ASSERT_SAVE_VPTR \
- assert(ptr)
-PERL_CALLCONV char* Perl_savepv(pTHX_ const char* pv)
- __attribute__malloc__
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SAVEPV
-
-PERL_CALLCONV char* Perl_savepvn(pTHX_ const char* pv, Size_t len)
- __attribute__malloc__
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SAVEPVN
-
-PERL_CALLCONV char* Perl_savesharedpv(pTHX_ const char* pv)
- __attribute__malloc__
- __attribute__warn_unused_result__;
+
+PERL_CALLCONV SV *
+Perl_save_scalar(pTHX_ GV *gv);
+#define PERL_ARGS_ASSERT_SAVE_SCALAR \
+ assert(gv)
+
+PERL_CALLCONV void
+Perl_save_set_svflags(pTHX_ SV *sv, U32 mask, U32 val);
+#define PERL_ARGS_ASSERT_SAVE_SET_SVFLAGS \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_save_shared_pvref(pTHX_ char **str);
+#define PERL_ARGS_ASSERT_SAVE_SHARED_PVREF \
+ assert(str)
+
+PERL_CALLCONV void
+Perl_save_sptr(pTHX_ SV **sptr);
+#define PERL_ARGS_ASSERT_SAVE_SPTR \
+ assert(sptr)
+
+PERL_CALLCONV void
+Perl_save_strlen(pTHX_ STRLEN *ptr);
+#define PERL_ARGS_ASSERT_SAVE_STRLEN \
+ assert(ptr)
+
+PERL_CALLCONV SV *
+Perl_save_svref(pTHX_ SV **sptr);
+#define PERL_ARGS_ASSERT_SAVE_SVREF \
+ assert(sptr)
+
+PERL_CALLCONV void
+Perl_save_vptr(pTHX_ void *ptr);
+#define PERL_ARGS_ASSERT_SAVE_VPTR \
+ assert(ptr)
+
+PERL_CALLCONV char *
+Perl_savesharedpv(pTHX_ const char *pv)
+ __attribute__malloc__
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAVESHAREDPV
-PERL_CALLCONV char* Perl_savesharedpvn(pTHX_ const char *const pv, const STRLEN len)
- __attribute__malloc__
- __attribute__warn_unused_result__;
+PERL_CALLCONV char *
+Perl_savesharedpvn(pTHX_ const char * const pv, const STRLEN len)
+ __attribute__malloc__
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SAVESHAREDPVN
-PERL_CALLCONV char* Perl_savesharedsvpv(pTHX_ SV *sv)
- __attribute__malloc__
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SAVESHAREDSVPV \
- assert(sv)
-
-PERL_CALLCONV void Perl_savestack_grow(pTHX);
+PERL_CALLCONV void
+Perl_savestack_grow(pTHX);
#define PERL_ARGS_ASSERT_SAVESTACK_GROW
-PERL_CALLCONV void Perl_savestack_grow_cnt(pTHX_ I32 need);
+
+PERL_CALLCONV void
+Perl_savestack_grow_cnt(pTHX_ I32 need);
#define PERL_ARGS_ASSERT_SAVESTACK_GROW_CNT
-PERL_CALLCONV char* Perl_savesvpv(pTHX_ SV* sv)
- __attribute__malloc__
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SAVESVPV \
- assert(sv)
-PERL_CALLCONV void Perl_savetmps(pTHX);
+PERL_CALLCONV void
+Perl_savetmps(pTHX);
#define PERL_ARGS_ASSERT_SAVETMPS
-PERL_CALLCONV OP* Perl_sawparens(pTHX_ OP* o);
+
+PERL_CALLCONV OP *
+Perl_sawparens(pTHX_ OP *o)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_SAWPARENS
-PERL_CALLCONV OP* Perl_scalar(pTHX_ OP* o);
+
+PERL_CALLCONV OP *
+Perl_scalar(pTHX_ OP *o)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_SCALAR
-PERL_CALLCONV OP* Perl_scalarvoid(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_SCALARVOID \
- assert(o)
-PERL_CALLCONV NV Perl_scan_bin(pTHX_ const char* start, STRLEN len, STRLEN* retlen);
-#define PERL_ARGS_ASSERT_SCAN_BIN \
- assert(start); assert(retlen)
-PERL_CALLCONV NV Perl_scan_hex(pTHX_ const char* start, STRLEN len, STRLEN* retlen);
-#define PERL_ARGS_ASSERT_SCAN_HEX \
- assert(start); assert(retlen)
-PERL_CALLCONV char* Perl_scan_num(pTHX_ const char* s, YYSTYPE *lvalp);
-#define PERL_ARGS_ASSERT_SCAN_NUM \
- assert(s); assert(lvalp)
-PERL_CALLCONV NV Perl_scan_oct(pTHX_ const char* start, STRLEN len, STRLEN* retlen);
-#define PERL_ARGS_ASSERT_SCAN_OCT \
- assert(start); assert(retlen)
-PERL_CALLCONV char* Perl_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims, int re_reparse, char **delimp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SCAN_STR \
- assert(start)
-
-PERL_CALLCONV const char* Perl_scan_version(pTHX_ const char *s, SV *rv, bool qv);
-#define PERL_ARGS_ASSERT_SCAN_VERSION \
- assert(s); assert(rv)
-PERL_CALLCONV char* Perl_scan_vstring(pTHX_ const char *s, const char *const e, SV *sv);
-#define PERL_ARGS_ASSERT_SCAN_VSTRING \
- assert(s); assert(e); assert(sv)
-PERL_CALLCONV char* Perl_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp);
-#define PERL_ARGS_ASSERT_SCAN_WORD \
- assert(s); assert(dest); assert(slp)
-PERL_CALLCONV U32 Perl_seed(pTHX);
+
+PERL_CALLCONV OP *
+Perl_scalarvoid(pTHX_ OP *o)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_SCALARVOID \
+ assert(o)
+
+PERL_CALLCONV NV
+Perl_scan_bin(pTHX_ const char *start, STRLEN len, STRLEN *retlen);
+#define PERL_ARGS_ASSERT_SCAN_BIN \
+ assert(start); assert(retlen)
+
+PERL_CALLCONV NV
+Perl_scan_hex(pTHX_ const char *start, STRLEN len, STRLEN *retlen);
+#define PERL_ARGS_ASSERT_SCAN_HEX \
+ assert(start); assert(retlen)
+
+PERL_CALLCONV char *
+Perl_scan_num(pTHX_ const char *s, YYSTYPE *lvalp);
+#define PERL_ARGS_ASSERT_SCAN_NUM \
+ assert(s); assert(lvalp)
+
+PERL_CALLCONV NV
+Perl_scan_oct(pTHX_ const char *start, STRLEN len, STRLEN *retlen);
+#define PERL_ARGS_ASSERT_SCAN_OCT \
+ assert(start); assert(retlen)
+
+PERL_CALLCONV char *
+Perl_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims, int re_reparse, char **delimp)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SCAN_STR \
+ assert(start)
+
+PERL_CALLCONV const char *
+Perl_scan_version(pTHX_ const char *s, SV *rv, bool qv);
+#define PERL_ARGS_ASSERT_SCAN_VERSION \
+ assert(s); assert(rv)
+
+PERL_CALLCONV char *
+Perl_scan_vstring(pTHX_ const char *s, const char * const e, SV *sv);
+#define PERL_ARGS_ASSERT_SCAN_VSTRING \
+ assert(s); assert(e); assert(sv)
+
+PERL_CALLCONV char *
+Perl_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp);
+#define PERL_ARGS_ASSERT_SCAN_WORD \
+ assert(s); assert(dest); assert(slp)
+
+PERL_CALLCONV char *
+Perl_scan_word6(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp, bool warn_tick);
+#define PERL_ARGS_ASSERT_SCAN_WORD6 \
+ assert(s); assert(dest); assert(slp)
+
+PERL_CALLCONV U32
+Perl_seed(pTHX);
#define PERL_ARGS_ASSERT_SEED
-PERL_CALLCONV void Perl_set_caret_X(pTHX);
+
+PERL_CALLCONV void
+Perl_set_caret_X(pTHX);
#define PERL_ARGS_ASSERT_SET_CARET_X
-PERL_CALLCONV void Perl_set_context(void *t);
-#define PERL_ARGS_ASSERT_SET_CONTEXT \
- assert(t)
-PERL_CALLCONV void Perl_set_numeric_standard(pTHX);
+
+PERL_CALLCONV void
+Perl_set_context(void *t);
+#define PERL_ARGS_ASSERT_SET_CONTEXT \
+ assert(t)
+
+PERL_CALLCONV void
+Perl_set_numeric_standard(pTHX);
#define PERL_ARGS_ASSERT_SET_NUMERIC_STANDARD
-PERL_CALLCONV void Perl_set_numeric_underlying(pTHX);
+
+PERL_CALLCONV void
+Perl_set_numeric_underlying(pTHX);
#define PERL_ARGS_ASSERT_SET_NUMERIC_UNDERLYING
-PERL_CALLCONV void Perl_setdefout(pTHX_ GV* gv);
-#define PERL_ARGS_ASSERT_SETDEFOUT \
- assert(gv)
-PERL_CALLCONV void Perl_setfd_cloexec(int fd);
+
+PERL_CALLCONV void
+Perl_setdefout(pTHX_ GV *gv);
+#define PERL_ARGS_ASSERT_SETDEFOUT \
+ assert(gv)
+
+PERL_CALLCONV void
+Perl_setfd_cloexec(int fd)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_SETFD_CLOEXEC
-PERL_CALLCONV void Perl_setfd_cloexec_for_nonsysfd(pTHX_ int fd);
+
+PERL_CALLCONV void
+Perl_setfd_cloexec_for_nonsysfd(pTHX_ int fd)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_SETFD_CLOEXEC_FOR_NONSYSFD
-PERL_CALLCONV void Perl_setfd_cloexec_or_inhexec_by_sysfdness(pTHX_ int fd);
+
+PERL_CALLCONV void
+Perl_setfd_cloexec_or_inhexec_by_sysfdness(pTHX_ int fd)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_SETFD_CLOEXEC_OR_INHEXEC_BY_SYSFDNESS
-PERL_CALLCONV void Perl_setfd_inhexec(int fd);
+
+PERL_CALLCONV void
+Perl_setfd_inhexec(int fd)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_SETFD_INHEXEC
-PERL_CALLCONV void Perl_setfd_inhexec_for_sysfd(pTHX_ int fd);
+
+PERL_CALLCONV void
+Perl_setfd_inhexec_for_sysfd(pTHX_ int fd)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_SETFD_INHEXEC_FOR_SYSFD
-PERL_CALLCONV HEK* Perl_share_hek(pTHX_ const char* str, SSize_t len, U32 hash);
-#define PERL_ARGS_ASSERT_SHARE_HEK \
- assert(str)
-PERL_CALLCONV Signal_t Perl_sighandler1(int sig);
+
+PERL_CALLCONV HEK *
+Perl_share_hek(pTHX_ const char *str, SSize_t len, U32 hash);
+#define PERL_ARGS_ASSERT_SHARE_HEK \
+ assert(str)
+
+PERL_CALLCONV Signal_t
+Perl_sighandler1(int sig)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_SIGHANDLER1
-PERL_CALLCONV Signal_t Perl_sighandler3(int sig, Siginfo_t *info, void *uap);
+
+PERL_CALLCONV Signal_t
+Perl_sighandler3(int sig, Siginfo_t *info, void *uap)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_SIGHANDLER3
-PERL_CALLCONV char* Perl_skipspace_flags(pTHX_ char *s, U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SKIPSPACE_FLAGS \
- assert(s)
-
-PERL_CALLCONV void Perl_sortsv(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp);
-#define PERL_ARGS_ASSERT_SORTSV \
- assert(cmp)
-PERL_CALLCONV void Perl_sortsv_flags(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp, U32 flags);
-#define PERL_ARGS_ASSERT_SORTSV_FLAGS \
- assert(cmp)
-PERL_CALLCONV SV** Perl_stack_grow(pTHX_ SV** sp, SV** p, SSize_t n);
-#define PERL_ARGS_ASSERT_STACK_GROW \
- assert(sp); assert(p)
-PERL_CALLCONV PerlIO* Perl_start_glob(pTHX_ SV *tmpglob, IO *io);
-#define PERL_ARGS_ASSERT_START_GLOB \
- assert(tmpglob); assert(io)
-PERL_CALLCONV I32 Perl_start_subparse(pTHX_ I32 is_format, U32 flags);
-#define PERL_ARGS_ASSERT_START_SUBPARSE
-PERL_CALLCONV NV Perl_str_to_version(pTHX_ SV *sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_STR_TO_VERSION \
- assert(sv)
-
-PERL_CALLCONV void Perl_sub_crush_depth(pTHX_ CV* cv);
-#define PERL_ARGS_ASSERT_SUB_CRUSH_DEPTH \
- assert(cv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV bool Perl_sv_2bool(pTHX_ SV *const sv);
-#define PERL_ARGS_ASSERT_SV_2BOOL \
- assert(sv)
-#endif
-PERL_CALLCONV bool Perl_sv_2bool_flags(pTHX_ SV *sv, I32 flags);
-#define PERL_ARGS_ASSERT_SV_2BOOL_FLAGS \
- assert(sv)
-PERL_CALLCONV CV* Perl_sv_2cv(pTHX_ SV* sv, HV **const st, GV **const gvp, const I32 lref);
-#define PERL_ARGS_ASSERT_SV_2CV \
- assert(st); assert(gvp)
-PERL_CALLCONV IO* Perl_sv_2io(pTHX_ SV *const sv);
-#define PERL_ARGS_ASSERT_SV_2IO \
- assert(sv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV IV Perl_sv_2iv(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_SV_2IV \
- assert(sv)
-#endif
-PERL_CALLCONV IV Perl_sv_2iv_flags(pTHX_ SV *const sv, const I32 flags);
-#define PERL_ARGS_ASSERT_SV_2IV_FLAGS \
- assert(sv)
-PERL_CALLCONV SV* Perl_sv_2mortal(pTHX_ SV *const sv);
-#define PERL_ARGS_ASSERT_SV_2MORTAL
-PERL_CALLCONV SV* Perl_sv_2num(pTHX_ SV *const sv);
-#define PERL_ARGS_ASSERT_SV_2NUM \
- assert(sv)
-PERL_CALLCONV NV Perl_sv_2nv_flags(pTHX_ SV *const sv, const I32 flags);
-#define PERL_ARGS_ASSERT_SV_2NV_FLAGS \
- assert(sv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp);
-#define PERL_ARGS_ASSERT_SV_2PV \
- assert(sv)
-#endif
-PERL_CALLCONV char* Perl_sv_2pv_flags(pTHX_ SV *const sv, STRLEN *const lp, const U32 flags);
-#define PERL_ARGS_ASSERT_SV_2PV_FLAGS \
- assert(sv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_2pv_nolen(pTHX_ SV* sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_2PV_NOLEN \
- assert(sv)
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_2pvbyte(pTHX_ SV *sv, STRLEN *const lp);
-#define PERL_ARGS_ASSERT_SV_2PVBYTE \
- assert(sv)
-#endif
-PERL_CALLCONV char* Perl_sv_2pvbyte_flags(pTHX_ SV *sv, STRLEN *const lp, const U32 flags);
-#define PERL_ARGS_ASSERT_SV_2PVBYTE_FLAGS \
- assert(sv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_2pvbyte_nolen(pTHX_ SV* sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_2PVBYTE_NOLEN \
- assert(sv)
-#endif
+PERL_CALLCONV char *
+Perl_skipspace_flags(pTHX_ char *s, U32 flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SKIPSPACE_FLAGS \
+ assert(s)
+
+PERL_CALLCONV void
+Perl_sortsv(pTHX_ SV **array, size_t num_elts, SVCOMPARE_t cmp);
+#define PERL_ARGS_ASSERT_SORTSV \
+ assert(cmp)
+
+PERL_CALLCONV void
+Perl_sortsv_flags(pTHX_ SV **array, size_t num_elts, SVCOMPARE_t cmp, U32 flags);
+#define PERL_ARGS_ASSERT_SORTSV_FLAGS \
+ assert(cmp)
+
+PERL_CALLCONV SV **
+Perl_stack_grow(pTHX_ SV **sp, SV **p, SSize_t n);
+#define PERL_ARGS_ASSERT_STACK_GROW \
+ assert(sp); assert(p)
+
+PERL_CALLCONV PerlIO *
+Perl_start_glob(pTHX_ SV *tmpglob, IO *io)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_START_GLOB \
+ assert(tmpglob); assert(io)
+
+PERL_CALLCONV I32
+Perl_start_subparse(pTHX_ I32 is_format, U32 flags);
+#define PERL_ARGS_ASSERT_START_SUBPARSE
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_2pvutf8(pTHX_ SV *sv, STRLEN *const lp);
-#define PERL_ARGS_ASSERT_SV_2PVUTF8 \
- assert(sv)
-#endif
-PERL_CALLCONV char* Perl_sv_2pvutf8_flags(pTHX_ SV *sv, STRLEN *const lp, const U32 flags);
-#define PERL_ARGS_ASSERT_SV_2PVUTF8_FLAGS \
- assert(sv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_2pvutf8_nolen(pTHX_ SV* sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_2PVUTF8_NOLEN \
- assert(sv)
-#endif
+PERL_CALLCONV NV
+Perl_str_to_version(pTHX_ SV *sv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_STR_TO_VERSION \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sub_crush_depth(pTHX_ CV *cv)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_SUB_CRUSH_DEPTH \
+ assert(cv)
+
+PERL_CALLCONV void
+Perl_suspend_compcv(pTHX_ struct suspended_compcv *buffer);
+#define PERL_ARGS_ASSERT_SUSPEND_COMPCV \
+ assert(buffer)
+
+PERL_CALLCONV bool
+Perl_sv_2bool_flags(pTHX_ SV *sv, I32 flags);
+#define PERL_ARGS_ASSERT_SV_2BOOL_FLAGS \
+ assert(sv)
+
+PERL_CALLCONV CV *
+Perl_sv_2cv(pTHX_ SV *sv, HV ** const st, GV ** const gvp, const I32 lref);
+#define PERL_ARGS_ASSERT_SV_2CV \
+ assert(st); assert(gvp)
+
+PERL_CALLCONV IO *
+Perl_sv_2io(pTHX_ SV * const sv);
+#define PERL_ARGS_ASSERT_SV_2IO \
+ assert(sv)
+
+PERL_CALLCONV IV
+Perl_sv_2iv_flags(pTHX_ SV * const sv, const I32 flags);
+#define PERL_ARGS_ASSERT_SV_2IV_FLAGS \
+ assert(sv)
+
+PERL_CALLCONV SV *
+Perl_sv_2mortal(pTHX_ SV * const sv);
+#define PERL_ARGS_ASSERT_SV_2MORTAL
-#ifndef NO_MATHOMS
-PERL_CALLCONV UV Perl_sv_2uv(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_SV_2UV \
- assert(sv)
-#endif
-PERL_CALLCONV UV Perl_sv_2uv_flags(pTHX_ SV *const sv, const I32 flags);
-#define PERL_ARGS_ASSERT_SV_2UV_FLAGS \
- assert(sv)
-PERL_CALLCONV void Perl_sv_backoff(SV *const sv);
-#define PERL_ARGS_ASSERT_SV_BACKOFF \
- assert(sv)
-PERL_CALLCONV SV* Perl_sv_bless(pTHX_ SV *const sv, HV *const stash);
-#define PERL_ARGS_ASSERT_SV_BLESS \
- assert(sv); assert(stash)
-PERL_CALLCONV bool Perl_sv_cat_decode(pTHX_ SV* dsv, SV *encoding, SV *ssv, int *offset, char* tstr, int tlen);
-#define PERL_ARGS_ASSERT_SV_CAT_DECODE \
- assert(dsv); assert(encoding); assert(ssv); assert(offset); assert(tstr)
-PERL_CALLCONV void Perl_sv_catpv(pTHX_ SV *const dsv, const char* sstr);
-#define PERL_ARGS_ASSERT_SV_CATPV \
- assert(dsv)
-PERL_CALLCONV void Perl_sv_catpv_flags(pTHX_ SV *dsv, const char *sstr, const I32 flags);
-#define PERL_ARGS_ASSERT_SV_CATPV_FLAGS \
- assert(dsv); assert(sstr)
-PERL_CALLCONV void Perl_sv_catpv_mg(pTHX_ SV *const dsv, const char *const sstr);
-#define PERL_ARGS_ASSERT_SV_CATPV_MG \
- assert(dsv)
-PERL_CALLCONV void Perl_sv_catpvf(pTHX_ SV *const sv, const char *const pat, ...)
- __attribute__format__(__printf__,pTHX_2,pTHX_3);
-#define PERL_ARGS_ASSERT_SV_CATPVF \
- assert(sv); assert(pat)
-
-PERL_CALLCONV void Perl_sv_catpvf_mg(pTHX_ SV *const sv, const char *const pat, ...)
- __attribute__format__(__printf__,pTHX_2,pTHX_3);
-#define PERL_ARGS_ASSERT_SV_CATPVF_MG \
- assert(sv); assert(pat)
-
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_catpvn(pTHX_ SV *dsv, const char *sstr, STRLEN len);
-#define PERL_ARGS_ASSERT_SV_CATPVN \
- assert(dsv); assert(sstr)
-#endif
-PERL_CALLCONV void Perl_sv_catpvn_flags(pTHX_ SV *const dsv, const char *sstr, const STRLEN len, const I32 flags);
-#define PERL_ARGS_ASSERT_SV_CATPVN_FLAGS \
- assert(dsv); assert(sstr)
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_catpvn_mg(pTHX_ SV *dsv, const char *sstr, STRLEN len);
-#define PERL_ARGS_ASSERT_SV_CATPVN_MG \
- assert(dsv); assert(sstr)
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_catsv(pTHX_ SV *dsv, SV *sstr);
-#define PERL_ARGS_ASSERT_SV_CATSV \
- assert(dsv)
-#endif
-PERL_CALLCONV void Perl_sv_catsv_flags(pTHX_ SV *const dsv, SV *const sstr, const I32 flags);
-#define PERL_ARGS_ASSERT_SV_CATSV_FLAGS \
- assert(dsv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *sstr);
-#define PERL_ARGS_ASSERT_SV_CATSV_MG \
- assert(dsv)
-#endif
-PERL_CALLCONV void Perl_sv_chop(pTHX_ SV *const sv, const char *const ptr);
-#define PERL_ARGS_ASSERT_SV_CHOP \
- assert(sv)
-PERL_CALLCONV I32 Perl_sv_clean_all(pTHX);
+PERL_CALLCONV SV *
+Perl_sv_2num(pTHX_ SV * const sv)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_SV_2NUM \
+ assert(sv)
+
+PERL_CALLCONV NV
+Perl_sv_2nv_flags(pTHX_ SV * const sv, const I32 flags);
+#define PERL_ARGS_ASSERT_SV_2NV_FLAGS \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_2pv_flags(pTHX_ SV * const sv, STRLEN * const lp, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_2PV_FLAGS \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_2pvbyte_flags(pTHX_ SV *sv, STRLEN * const lp, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_2PVBYTE_FLAGS \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_2pvutf8_flags(pTHX_ SV *sv, STRLEN * const lp, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_2PVUTF8_FLAGS \
+ assert(sv)
+
+PERL_CALLCONV UV
+Perl_sv_2uv_flags(pTHX_ SV * const sv, const I32 flags);
+#define PERL_ARGS_ASSERT_SV_2UV_FLAGS \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_backoff(SV * const sv);
+#define PERL_ARGS_ASSERT_SV_BACKOFF \
+ assert(sv)
+
+PERL_CALLCONV SV *
+Perl_sv_bless(pTHX_ SV * const sv, HV * const stash);
+#define PERL_ARGS_ASSERT_SV_BLESS \
+ assert(sv); assert(stash)
+
+PERL_CALLCONV bool
+Perl_sv_cat_decode(pTHX_ SV *dsv, SV *encoding, SV *ssv, int *offset, char *tstr, int tlen);
+#define PERL_ARGS_ASSERT_SV_CAT_DECODE \
+ assert(dsv); assert(encoding); assert(ssv); assert(offset); assert(tstr)
+
+PERL_CALLCONV void
+Perl_sv_catpv(pTHX_ SV * const dsv, const char *sstr);
+#define PERL_ARGS_ASSERT_SV_CATPV \
+ assert(dsv)
+
+PERL_CALLCONV void
+Perl_sv_catpv_flags(pTHX_ SV *dsv, const char *sstr, const I32 flags);
+#define PERL_ARGS_ASSERT_SV_CATPV_FLAGS \
+ assert(dsv); assert(sstr)
+
+PERL_CALLCONV void
+Perl_sv_catpv_mg(pTHX_ SV * const dsv, const char * const sstr);
+#define PERL_ARGS_ASSERT_SV_CATPV_MG \
+ assert(dsv)
+
+PERL_CALLCONV void
+Perl_sv_catpvf(pTHX_ SV * const sv, const char * const pat, ...)
+ __attribute__format__(__printf__,pTHX_2,pTHX_3);
+#define PERL_ARGS_ASSERT_SV_CATPVF \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_sv_catpvf_mg(pTHX_ SV * const sv, const char * const pat, ...)
+ __attribute__format__(__printf__,pTHX_2,pTHX_3);
+#define PERL_ARGS_ASSERT_SV_CATPVF_MG \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_sv_catpvn_flags(pTHX_ SV * const dsv, const char *sstr, const STRLEN len, const I32 flags);
+#define PERL_ARGS_ASSERT_SV_CATPVN_FLAGS \
+ assert(dsv); assert(sstr)
+
+PERL_CALLCONV void
+Perl_sv_catsv_flags(pTHX_ SV * const dsv, SV * const sstr, const I32 flags);
+#define PERL_ARGS_ASSERT_SV_CATSV_FLAGS \
+ assert(dsv)
+
+PERL_CALLCONV void
+Perl_sv_chop(pTHX_ SV * const sv, const char * const ptr);
+#define PERL_ARGS_ASSERT_SV_CHOP \
+ assert(sv)
+
+PERL_CALLCONV I32
+Perl_sv_clean_all(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_SV_CLEAN_ALL
-PERL_CALLCONV void Perl_sv_clean_objs(pTHX);
+
+PERL_CALLCONV void
+Perl_sv_clean_objs(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_SV_CLEAN_OBJS
-PERL_CALLCONV void Perl_sv_clear(pTHX_ SV *const orig_sv);
-#define PERL_ARGS_ASSERT_SV_CLEAR \
- assert(orig_sv)
-PERL_CALLCONV I32 Perl_sv_cmp(pTHX_ SV *const sv1, SV *const sv2);
+
+PERL_CALLCONV void
+Perl_sv_clear(pTHX_ SV * const orig_sv);
+#define PERL_ARGS_ASSERT_SV_CLEAR \
+ assert(orig_sv)
+
+PERL_CALLCONV I32
+Perl_sv_cmp(pTHX_ SV * const sv1, SV * const sv2);
#define PERL_ARGS_ASSERT_SV_CMP
-PERL_CALLCONV I32 Perl_sv_cmp_flags(pTHX_ SV *const sv1, SV *const sv2, const U32 flags);
+
+PERL_CALLCONV I32
+Perl_sv_cmp_flags(pTHX_ SV * const sv1, SV * const sv2, const U32 flags);
#define PERL_ARGS_ASSERT_SV_CMP_FLAGS
-PERL_CALLCONV I32 Perl_sv_cmp_locale(pTHX_ SV *const sv1, SV *const sv2);
+
+PERL_CALLCONV I32
+Perl_sv_cmp_locale(pTHX_ SV * const sv1, SV * const sv2);
#define PERL_ARGS_ASSERT_SV_CMP_LOCALE
-PERL_CALLCONV I32 Perl_sv_cmp_locale_flags(pTHX_ SV *const sv1, SV *const sv2, const U32 flags);
+
+PERL_CALLCONV I32
+Perl_sv_cmp_locale_flags(pTHX_ SV * const sv1, SV * const sv2, const U32 flags);
#define PERL_ARGS_ASSERT_SV_CMP_LOCALE_FLAGS
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_copypv(pTHX_ SV *const dsv, SV *const ssv);
-#define PERL_ARGS_ASSERT_SV_COPYPV \
- assert(dsv); assert(ssv)
-#endif
-PERL_CALLCONV void Perl_sv_copypv_flags(pTHX_ SV *const dsv, SV *const ssv, const I32 flags);
-#define PERL_ARGS_ASSERT_SV_COPYPV_FLAGS \
- assert(dsv); assert(ssv)
-/* PERL_CALLCONV void sv_copypv_nomg(pTHX_ SV *const dsv, SV *const ssv); */
-#define PERL_ARGS_ASSERT_SV_COPYPV_NOMG
-PERL_CALLCONV void Perl_sv_dec(pTHX_ SV *const sv);
+
+PERL_CALLCONV void
+Perl_sv_copypv_flags(pTHX_ SV * const dsv, SV * const ssv, const I32 flags);
+#define PERL_ARGS_ASSERT_SV_COPYPV_FLAGS \
+ assert(dsv); assert(ssv)
+
+/* PERL_CALLCONV void
+sv_copypv_nomg(pTHX_ SV * const dsv, SV * const ssv); */
+
+PERL_CALLCONV void
+Perl_sv_dec(pTHX_ SV * const sv);
#define PERL_ARGS_ASSERT_SV_DEC
-PERL_CALLCONV void Perl_sv_dec_nomg(pTHX_ SV *const sv);
+
+PERL_CALLCONV void
+Perl_sv_dec_nomg(pTHX_ SV * const sv);
#define PERL_ARGS_ASSERT_SV_DEC_NOMG
-PERL_CALLCONV void Perl_sv_del_backref(pTHX_ SV *const tsv, SV *const sv);
-#define PERL_ARGS_ASSERT_SV_DEL_BACKREF \
- assert(tsv); assert(sv)
-PERL_CALLCONV bool Perl_sv_derived_from(pTHX_ SV* sv, const char *const name)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_DERIVED_FROM \
- assert(sv); assert(name)
-
-PERL_CALLCONV bool Perl_sv_derived_from_pv(pTHX_ SV* sv, const char *const name, U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_DERIVED_FROM_PV \
- assert(sv); assert(name)
-
-PERL_CALLCONV bool Perl_sv_derived_from_pvn(pTHX_ SV* sv, const char *const name, const STRLEN len, U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_DERIVED_FROM_PVN \
- assert(sv); assert(name)
-
-PERL_CALLCONV bool Perl_sv_derived_from_sv(pTHX_ SV* sv, SV *namesv, U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_DERIVED_FROM_SV \
- assert(sv); assert(namesv)
-
-PERL_CALLCONV bool Perl_sv_destroyable(pTHX_ SV *sv);
+
+PERL_CALLCONV void
+Perl_sv_del_backref(pTHX_ SV * const tsv, SV * const sv);
+#define PERL_ARGS_ASSERT_SV_DEL_BACKREF \
+ assert(tsv); assert(sv)
+
+PERL_CALLCONV bool
+Perl_sv_derived_from(pTHX_ SV *sv, const char * const name)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SV_DERIVED_FROM \
+ assert(sv); assert(name)
+
+PERL_CALLCONV bool
+Perl_sv_derived_from_hv(pTHX_ SV *sv, HV *hv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SV_DERIVED_FROM_HV \
+ assert(sv); assert(hv)
+
+PERL_CALLCONV bool
+Perl_sv_derived_from_pv(pTHX_ SV *sv, const char * const name, U32 flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SV_DERIVED_FROM_PV \
+ assert(sv); assert(name)
+
+PERL_CALLCONV bool
+Perl_sv_derived_from_pvn(pTHX_ SV *sv, const char * const name, const STRLEN len, U32 flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SV_DERIVED_FROM_PVN \
+ assert(sv); assert(name)
+
+PERL_CALLCONV bool
+Perl_sv_derived_from_sv(pTHX_ SV *sv, SV *namesv, U32 flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SV_DERIVED_FROM_SV \
+ assert(sv); assert(namesv)
+
+PERL_CALLCONV bool
+Perl_sv_destroyable(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_DESTROYABLE
-PERL_CALLCONV bool Perl_sv_does(pTHX_ SV* sv, const char *const name)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_DOES \
- assert(sv); assert(name)
-
-PERL_CALLCONV bool Perl_sv_does_pv(pTHX_ SV* sv, const char *const name, U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_DOES_PV \
- assert(sv); assert(name)
-
-PERL_CALLCONV bool Perl_sv_does_pvn(pTHX_ SV* sv, const char *const name, const STRLEN len, U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_DOES_PVN \
- assert(sv); assert(name)
-
-PERL_CALLCONV bool Perl_sv_does_sv(pTHX_ SV* sv, SV* namesv, U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_DOES_SV \
- assert(sv); assert(namesv)
-
-PERL_CALLCONV void Perl_sv_dump(pTHX_ SV* sv);
+
+PERL_CALLCONV bool
+Perl_sv_does(pTHX_ SV *sv, const char * const name)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SV_DOES \
+ assert(sv); assert(name)
+
+PERL_CALLCONV bool
+Perl_sv_does_pv(pTHX_ SV *sv, const char * const name, U32 flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SV_DOES_PV \
+ assert(sv); assert(name)
+
+PERL_CALLCONV bool
+Perl_sv_does_pvn(pTHX_ SV *sv, const char * const name, const STRLEN len, U32 flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SV_DOES_PVN \
+ assert(sv); assert(name)
+
+PERL_CALLCONV bool
+Perl_sv_does_sv(pTHX_ SV *sv, SV *namesv, U32 flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SV_DOES_SV \
+ assert(sv); assert(namesv)
+
+PERL_CALLCONV void
+Perl_sv_dump(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_DUMP
-#ifndef NO_MATHOMS
-PERL_CALLCONV I32 Perl_sv_eq(pTHX_ SV* sv1, SV* sv2);
-#define PERL_ARGS_ASSERT_SV_EQ
-#endif
-PERL_CALLCONV I32 Perl_sv_eq_flags(pTHX_ SV* sv1, SV* sv2, const U32 flags);
+
+PERL_CALLCONV void
+Perl_sv_dump_depth(pTHX_ SV *sv, I32 depth);
+#define PERL_ARGS_ASSERT_SV_DUMP_DEPTH
+
+PERL_CALLCONV I32
+Perl_sv_eq_flags(pTHX_ SV *sv1, SV *sv2, const U32 flags);
#define PERL_ARGS_ASSERT_SV_EQ_FLAGS
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_force_normal(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_SV_FORCE_NORMAL \
- assert(sv)
-#endif
-PERL_CALLCONV void Perl_sv_force_normal_flags(pTHX_ SV *const sv, const U32 flags);
-#define PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS \
- assert(sv)
-PERL_CALLCONV void Perl_sv_free(pTHX_ SV *const sv);
+
+PERL_CALLCONV void
+Perl_sv_force_normal_flags(pTHX_ SV * const sv, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_FORCE_NORMAL_FLAGS \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_free(pTHX_ SV * const sv);
#define PERL_ARGS_ASSERT_SV_FREE
-PERL_CALLCONV void Perl_sv_free2(pTHX_ SV *const sv, const U32 refcnt);
-#define PERL_ARGS_ASSERT_SV_FREE2 \
- assert(sv)
-PERL_CALLCONV void Perl_sv_free_arenas(pTHX);
+
+PERL_CALLCONV void
+Perl_sv_free2(pTHX_ SV * const sv, const U32 refcnt);
+#define PERL_ARGS_ASSERT_SV_FREE2 \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_free_arenas(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_SV_FREE_ARENAS
-PERL_CALLCONV SV* Perl_sv_get_backrefs(SV *const sv);
-#define PERL_ARGS_ASSERT_SV_GET_BACKREFS \
- assert(sv)
-PERL_CALLCONV char* Perl_sv_gets(pTHX_ SV *const sv, PerlIO *const fp, I32 append);
-#define PERL_ARGS_ASSERT_SV_GETS \
- assert(sv); assert(fp)
-PERL_CALLCONV char* Perl_sv_grow(pTHX_ SV *const sv, STRLEN newlen);
-#define PERL_ARGS_ASSERT_SV_GROW \
- assert(sv)
-PERL_CALLCONV void Perl_sv_inc(pTHX_ SV *const sv);
+
+PERL_CALLCONV SV *
+Perl_sv_get_backrefs(SV * const sv);
+#define PERL_ARGS_ASSERT_SV_GET_BACKREFS \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_gets(pTHX_ SV * const sv, PerlIO * const fp, I32 append);
+#define PERL_ARGS_ASSERT_SV_GETS \
+ assert(sv); assert(fp)
+
+PERL_CALLCONV char *
+Perl_sv_grow(pTHX_ SV * const sv, STRLEN newlen);
+#define PERL_ARGS_ASSERT_SV_GROW \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_grow_fresh(pTHX_ SV * const sv, STRLEN newlen);
+#define PERL_ARGS_ASSERT_SV_GROW_FRESH \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_inc(pTHX_ SV * const sv);
#define PERL_ARGS_ASSERT_SV_INC
-PERL_CALLCONV void Perl_sv_inc_nomg(pTHX_ SV *const sv);
+
+PERL_CALLCONV void
+Perl_sv_inc_nomg(pTHX_ SV * const sv);
#define PERL_ARGS_ASSERT_SV_INC_NOMG
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_insert(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *const little, const STRLEN littlelen);
-#define PERL_ARGS_ASSERT_SV_INSERT \
- assert(bigstr); assert(little)
-#endif
-PERL_CALLCONV void Perl_sv_insert_flags(pTHX_ SV *const bigstr, const STRLEN offset, const STRLEN len, const char *little, const STRLEN littlelen, const U32 flags);
-#define PERL_ARGS_ASSERT_SV_INSERT_FLAGS \
- assert(bigstr); assert(little)
-PERL_CALLCONV int Perl_sv_isa(pTHX_ SV* sv, const char *const name);
-#define PERL_ARGS_ASSERT_SV_ISA \
- assert(name)
-PERL_CALLCONV bool Perl_sv_isa_sv(pTHX_ SV* sv, SV* namesv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_ISA_SV \
- assert(sv); assert(namesv)
-
-PERL_CALLCONV int Perl_sv_isobject(pTHX_ SV* sv);
+
+PERL_CALLCONV void
+Perl_sv_insert_flags(pTHX_ SV * const bigstr, const STRLEN offset, const STRLEN len, const char *little, const STRLEN littlelen, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_INSERT_FLAGS \
+ assert(bigstr); assert(little)
+
+PERL_CALLCONV int
+Perl_sv_isa(pTHX_ SV *sv, const char * const name);
+#define PERL_ARGS_ASSERT_SV_ISA \
+ assert(name)
+
+PERL_CALLCONV bool
+Perl_sv_isa_sv(pTHX_ SV *sv, SV *namesv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SV_ISA_SV \
+ assert(sv); assert(namesv)
+
+PERL_CALLCONV int
+Perl_sv_isobject(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_ISOBJECT
-#ifndef NO_MATHOMS
-PERL_CALLCONV IV Perl_sv_iv(pTHX_ SV* sv)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_SV_IV \
- assert(sv)
-#endif
-PERL_CALLCONV STRLEN Perl_sv_len(pTHX_ SV *const sv);
+PERL_CALLCONV STRLEN
+Perl_sv_len(pTHX_ SV * const sv);
#define PERL_ARGS_ASSERT_SV_LEN
-PERL_CALLCONV STRLEN Perl_sv_len_utf8(pTHX_ SV *const sv);
+
+PERL_CALLCONV STRLEN
+Perl_sv_len_utf8(pTHX_ SV * const sv);
#define PERL_ARGS_ASSERT_SV_LEN_UTF8
-PERL_CALLCONV STRLEN Perl_sv_len_utf8_nomg(pTHX_ SV *const sv);
-#define PERL_ARGS_ASSERT_SV_LEN_UTF8_NOMG \
- assert(sv)
-PERL_CALLCONV void Perl_sv_magic(pTHX_ SV *const sv, SV *const obj, const int how, const char *const name, const I32 namlen);
-#define PERL_ARGS_ASSERT_SV_MAGIC \
- assert(sv)
-PERL_CALLCONV MAGIC * Perl_sv_magicext(pTHX_ SV *const sv, SV *const obj, const int how, const MGVTBL *const vtbl, const char *const name, const I32 namlen);
-#define PERL_ARGS_ASSERT_SV_MAGICEXT \
- assert(sv)
-PERL_CALLCONV MAGIC * Perl_sv_magicext_mglob(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_SV_MAGICEXT_MGLOB \
- assert(sv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV SV* Perl_sv_mortalcopy(pTHX_ SV *const oldsv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_MORTALCOPY
-#endif
-PERL_CALLCONV SV* Perl_sv_mortalcopy_flags(pTHX_ SV *const oldsv, U32 flags)
- __attribute__warn_unused_result__;
+PERL_CALLCONV STRLEN
+Perl_sv_len_utf8_nomg(pTHX_ SV * const sv);
+#define PERL_ARGS_ASSERT_SV_LEN_UTF8_NOMG \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_magic(pTHX_ SV * const sv, SV * const obj, const int how, const char * const name, const I32 namlen);
+#define PERL_ARGS_ASSERT_SV_MAGIC \
+ assert(sv)
+
+PERL_CALLCONV MAGIC *
+Perl_sv_magicext(pTHX_ SV * const sv, SV * const obj, const int how, const MGVTBL * const vtbl, const char * const name, const I32 namlen);
+#define PERL_ARGS_ASSERT_SV_MAGICEXT \
+ assert(sv)
+
+PERL_CALLCONV MAGIC *
+Perl_sv_magicext_mglob(pTHX_ SV *sv);
+#define PERL_ARGS_ASSERT_SV_MAGICEXT_MGLOB \
+ assert(sv)
+
+PERL_CALLCONV SV *
+Perl_sv_mortalcopy_flags(pTHX_ SV * const oldsv, U32 flags)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_MORTALCOPY_FLAGS
-PERL_CALLCONV SV* Perl_sv_newmortal(pTHX)
- __attribute__warn_unused_result__;
+PERL_CALLCONV SV *
+Perl_sv_newmortal(pTHX)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_SV_NEWMORTAL
-PERL_CALLCONV SV* Perl_sv_newref(pTHX_ SV *const sv);
+PERL_CALLCONV SV *
+Perl_sv_newref(pTHX_ SV * const sv);
#define PERL_ARGS_ASSERT_SV_NEWREF
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_nolocking(pTHX_ SV *sv)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_SV_NOLOCKING
-#endif
-PERL_CALLCONV void Perl_sv_nosharing(pTHX_ SV *sv);
+PERL_CALLCONV void
+Perl_sv_nosharing(pTHX_ SV *sv);
#define PERL_ARGS_ASSERT_SV_NOSHARING
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_nounlocking(pTHX_ SV *sv)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_SV_NOUNLOCKING
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV NV Perl_sv_nv(pTHX_ SV* sv)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_SV_NV \
- assert(sv)
-#endif
+/* PERL_CALLCONV bool
+sv_numeq(pTHX_ SV *sv1, SV *sv2); */
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_sv_only_taint_gmagic(SV *sv);
-#define PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC \
- assert(sv)
-#endif
-PERL_CALLCONV char* Perl_sv_peek(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_SV_PEEK
-PERL_CALLCONV void Perl_sv_pos_b2u(pTHX_ SV *const sv, I32 *const offsetp);
-#define PERL_ARGS_ASSERT_SV_POS_B2U \
- assert(offsetp)
-PERL_CALLCONV STRLEN Perl_sv_pos_b2u_flags(pTHX_ SV *const sv, STRLEN const offset, U32 flags);
-#define PERL_ARGS_ASSERT_SV_POS_B2U_FLAGS \
- assert(sv)
-PERL_CALLCONV void Perl_sv_pos_u2b(pTHX_ SV *const sv, I32 *const offsetp, I32 *const lenp);
-#define PERL_ARGS_ASSERT_SV_POS_U2B \
- assert(offsetp)
-PERL_CALLCONV STRLEN Perl_sv_pos_u2b_flags(pTHX_ SV *const sv, STRLEN uoffset, STRLEN *const lenp, U32 flags);
-#define PERL_ARGS_ASSERT_SV_POS_U2B_FLAGS \
- assert(sv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_pv(pTHX_ SV *sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_PV \
- assert(sv)
-#endif
+PERL_CALLCONV bool
+Perl_sv_numeq_flags(pTHX_ SV *sv1, SV *sv2, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_NUMEQ_FLAGS
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_pvbyte(pTHX_ SV *sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_PVBYTE \
- assert(sv)
-#endif
-
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_pvbyten(pTHX_ SV *sv, STRLEN *lp)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_SV_PVBYTEN \
- assert(sv); assert(lp)
-#endif
-
-PERL_CALLCONV char* Perl_sv_pvbyten_force(pTHX_ SV *const sv, STRLEN *const lp);
-#define PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE \
- assert(sv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_pvn(pTHX_ SV *sv, STRLEN *lp)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_SV_PVN \
- assert(sv); assert(lp)
-#endif
-
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_pvn_force(pTHX_ SV* sv, STRLEN* lp);
-#define PERL_ARGS_ASSERT_SV_PVN_FORCE \
- assert(sv)
-#endif
-PERL_CALLCONV char* Perl_sv_pvn_force_flags(pTHX_ SV *const sv, STRLEN *const lp, const U32 flags);
-#define PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS \
- assert(sv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_pvn_nomg(pTHX_ SV* sv, STRLEN* lp)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_SV_PVN_NOMG \
- assert(sv)
-#endif
+PERL_CALLCONV char *
+Perl_sv_peek(pTHX_ SV *sv);
+#define PERL_ARGS_ASSERT_SV_PEEK
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_pvutf8(pTHX_ SV *sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_PVUTF8 \
- assert(sv)
-#endif
+PERL_CALLCONV void
+Perl_sv_pos_b2u(pTHX_ SV * const sv, I32 * const offsetp);
+#define PERL_ARGS_ASSERT_SV_POS_B2U \
+ assert(offsetp)
+
+PERL_CALLCONV STRLEN
+Perl_sv_pos_b2u_flags(pTHX_ SV * const sv, STRLEN const offset, U32 flags);
+#define PERL_ARGS_ASSERT_SV_POS_B2U_FLAGS \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_pos_u2b(pTHX_ SV * const sv, I32 * const offsetp, I32 * const lenp);
+#define PERL_ARGS_ASSERT_SV_POS_U2B \
+ assert(offsetp)
+
+PERL_CALLCONV STRLEN
+Perl_sv_pos_u2b_flags(pTHX_ SV * const sv, STRLEN uoffset, STRLEN * const lenp, U32 flags);
+#define PERL_ARGS_ASSERT_SV_POS_U2B_FLAGS \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_pvbyten_force(pTHX_ SV * const sv, STRLEN * const lp);
+#define PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_pvn_force_flags(pTHX_ SV * const sv, STRLEN * const lp, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_PVN_FORCE_FLAGS \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_pvutf8n_force(pTHX_ SV * const sv, STRLEN * const lp);
+#define PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_recode_to_utf8(pTHX_ SV *sv, SV *encoding);
+#define PERL_ARGS_ASSERT_SV_RECODE_TO_UTF8 \
+ assert(sv); assert(encoding)
+
+PERL_CALLCONV SV *
+Perl_sv_ref(pTHX_ SV *dst, const SV * const sv, const int ob);
+#define PERL_ARGS_ASSERT_SV_REF \
+ assert(sv)
+
+PERL_CALLCONV const char *
+Perl_sv_reftype(pTHX_ const SV * const sv, const int ob)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SV_REFTYPE \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_replace(pTHX_ SV * const sv, SV * const nsv);
+#define PERL_ARGS_ASSERT_SV_REPLACE \
+ assert(sv); assert(nsv)
+
+PERL_CALLCONV void
+Perl_sv_report_used(pTHX);
+#define PERL_ARGS_ASSERT_SV_REPORT_USED
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_pvutf8n(pTHX_ SV *sv, STRLEN *lp)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_SV_PVUTF8N \
- assert(sv); assert(lp)
-#endif
+PERL_CALLCONV void
+Perl_sv_reset(pTHX_ const char *s, HV * const stash);
+#define PERL_ARGS_ASSERT_SV_RESET \
+ assert(s)
-PERL_CALLCONV char* Perl_sv_pvutf8n_force(pTHX_ SV *const sv, STRLEN *const lp);
-#define PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE \
- assert(sv)
-PERL_CALLCONV char* Perl_sv_recode_to_utf8(pTHX_ SV* sv, SV *encoding);
-#define PERL_ARGS_ASSERT_SV_RECODE_TO_UTF8 \
- assert(sv); assert(encoding)
-PERL_CALLCONV SV* Perl_sv_ref(pTHX_ SV *dst, const SV *const sv, const int ob);
-#define PERL_ARGS_ASSERT_SV_REF \
- assert(sv)
-PERL_CALLCONV const char* Perl_sv_reftype(pTHX_ const SV *const sv, const int ob)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_REFTYPE \
- assert(sv)
-
-PERL_CALLCONV void Perl_sv_replace(pTHX_ SV *const sv, SV *const nsv);
-#define PERL_ARGS_ASSERT_SV_REPLACE \
- assert(sv); assert(nsv)
-PERL_CALLCONV void Perl_sv_report_used(pTHX);
-#define PERL_ARGS_ASSERT_SV_REPORT_USED
-PERL_CALLCONV void Perl_sv_reset(pTHX_ const char* s, HV *const stash);
-#define PERL_ARGS_ASSERT_SV_RESET \
- assert(s)
-PERL_CALLCONV void Perl_sv_resetpvn(pTHX_ const char* s, STRLEN len, HV *const stash);
+PERL_CALLCONV void
+Perl_sv_resetpvn(pTHX_ const char *s, STRLEN len, HV * const stash)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_SV_RESETPVN
-PERL_CALLCONV SV* Perl_sv_rvunweaken(pTHX_ SV *const sv);
-#define PERL_ARGS_ASSERT_SV_RVUNWEAKEN \
- assert(sv)
-PERL_CALLCONV SV* Perl_sv_rvweaken(pTHX_ SV *const sv);
-#define PERL_ARGS_ASSERT_SV_RVWEAKEN \
- assert(sv)
-PERL_CALLCONV void Perl_sv_set_undef(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_SV_SET_UNDEF \
- assert(sv)
-PERL_CALLCONV void Perl_sv_sethek(pTHX_ SV *const sv, const HEK *const hek);
-#define PERL_ARGS_ASSERT_SV_SETHEK \
- assert(sv)
-PERL_CALLCONV void Perl_sv_setiv(pTHX_ SV *const sv, const IV num);
-#define PERL_ARGS_ASSERT_SV_SETIV \
- assert(sv)
-PERL_CALLCONV void Perl_sv_setiv_mg(pTHX_ SV *const sv, const IV i);
-#define PERL_ARGS_ASSERT_SV_SETIV_MG \
- assert(sv)
-PERL_CALLCONV void Perl_sv_setnv(pTHX_ SV *const sv, const NV num);
-#define PERL_ARGS_ASSERT_SV_SETNV \
- assert(sv)
-PERL_CALLCONV void Perl_sv_setnv_mg(pTHX_ SV *const sv, const NV num);
-#define PERL_ARGS_ASSERT_SV_SETNV_MG \
- assert(sv)
-PERL_CALLCONV void Perl_sv_setpv(pTHX_ SV *const sv, const char *const ptr);
-#define PERL_ARGS_ASSERT_SV_SETPV \
- assert(sv)
-PERL_CALLCONV char * Perl_sv_setpv_bufsize(pTHX_ SV *const sv, const STRLEN cur, const STRLEN len);
-#define PERL_ARGS_ASSERT_SV_SETPV_BUFSIZE \
- assert(sv)
-PERL_CALLCONV void Perl_sv_setpv_mg(pTHX_ SV *const sv, const char *const ptr);
-#define PERL_ARGS_ASSERT_SV_SETPV_MG \
- assert(sv)
-PERL_CALLCONV void Perl_sv_setpvf(pTHX_ SV *const sv, const char *const pat, ...)
- __attribute__format__(__printf__,pTHX_2,pTHX_3);
-#define PERL_ARGS_ASSERT_SV_SETPVF \
- assert(sv); assert(pat)
-
-PERL_CALLCONV void Perl_sv_setpvf_mg(pTHX_ SV *const sv, const char *const pat, ...)
- __attribute__format__(__printf__,pTHX_2,pTHX_3);
-#define PERL_ARGS_ASSERT_SV_SETPVF_MG \
- assert(sv); assert(pat)
-
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_setpviv(pTHX_ SV *const sv, const IV num)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_SV_SETPVIV \
- assert(sv)
-#endif
-
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_setpviv_mg(pTHX_ SV *const sv, const IV iv)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_SV_SETPVIV_MG \
- assert(sv)
-#endif
-PERL_CALLCONV void Perl_sv_setpvn(pTHX_ SV *const sv, const char *const ptr, const STRLEN len);
-#define PERL_ARGS_ASSERT_SV_SETPVN \
- assert(sv)
-PERL_CALLCONV void Perl_sv_setpvn_mg(pTHX_ SV *const sv, const char *const ptr, const STRLEN len);
-#define PERL_ARGS_ASSERT_SV_SETPVN_MG \
- assert(sv); assert(ptr)
-PERL_CALLCONV SV* Perl_sv_setref_iv(pTHX_ SV *const rv, const char *const classname, const IV iv);
-#define PERL_ARGS_ASSERT_SV_SETREF_IV \
- assert(rv)
-PERL_CALLCONV SV* Perl_sv_setref_nv(pTHX_ SV *const rv, const char *const classname, const NV nv);
-#define PERL_ARGS_ASSERT_SV_SETREF_NV \
- assert(rv)
-PERL_CALLCONV SV* Perl_sv_setref_pv(pTHX_ SV *const rv, const char *const classname, void *const pv);
-#define PERL_ARGS_ASSERT_SV_SETREF_PV \
- assert(rv)
-PERL_CALLCONV SV* Perl_sv_setref_pvn(pTHX_ SV *const rv, const char *const classname, const char *const pv, const STRLEN n);
-#define PERL_ARGS_ASSERT_SV_SETREF_PVN \
- assert(rv); assert(pv)
-PERL_CALLCONV SV* Perl_sv_setref_uv(pTHX_ SV *const rv, const char *const classname, const UV uv);
-#define PERL_ARGS_ASSERT_SV_SETREF_UV \
- assert(rv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_setsv(pTHX_ SV *dsv, SV *ssv);
-#define PERL_ARGS_ASSERT_SV_SETSV \
- assert(dsv)
-#endif
-PERL_CALLCONV void Perl_sv_setsv_flags(pTHX_ SV *dsv, SV *ssv, const I32 flags);
-#define PERL_ARGS_ASSERT_SV_SETSV_FLAGS \
- assert(dsv)
-PERL_CALLCONV void Perl_sv_setsv_mg(pTHX_ SV *const dsv, SV *const ssv);
-#define PERL_ARGS_ASSERT_SV_SETSV_MG \
- assert(dsv)
-PERL_CALLCONV void Perl_sv_setuv(pTHX_ SV *const sv, const UV num);
-#define PERL_ARGS_ASSERT_SV_SETUV \
- assert(sv)
-PERL_CALLCONV void Perl_sv_setuv_mg(pTHX_ SV *const sv, const UV u);
-#define PERL_ARGS_ASSERT_SV_SETUV_MG \
- assert(sv)
-PERL_CALLCONV SV* Perl_sv_string_from_errnum(pTHX_ int errnum, SV* tgtsv);
+PERL_CALLCONV SV *
+Perl_sv_rvunweaken(pTHX_ SV * const sv);
+#define PERL_ARGS_ASSERT_SV_RVUNWEAKEN \
+ assert(sv)
+
+PERL_CALLCONV SV *
+Perl_sv_rvweaken(pTHX_ SV * const sv);
+#define PERL_ARGS_ASSERT_SV_RVWEAKEN \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_set_bool(pTHX_ SV *sv, const bool bool_val);
+#define PERL_ARGS_ASSERT_SV_SET_BOOL \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_set_false(pTHX_ SV *sv);
+#define PERL_ARGS_ASSERT_SV_SET_FALSE \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_set_true(pTHX_ SV *sv);
+#define PERL_ARGS_ASSERT_SV_SET_TRUE \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_set_undef(pTHX_ SV *sv);
+#define PERL_ARGS_ASSERT_SV_SET_UNDEF \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_sethek(pTHX_ SV * const sv, const HEK * const hek);
+#define PERL_ARGS_ASSERT_SV_SETHEK \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_setiv(pTHX_ SV * const sv, const IV num);
+#define PERL_ARGS_ASSERT_SV_SETIV \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_setiv_mg(pTHX_ SV * const sv, const IV i);
+#define PERL_ARGS_ASSERT_SV_SETIV_MG \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_setnv(pTHX_ SV * const sv, const NV num);
+#define PERL_ARGS_ASSERT_SV_SETNV \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_setnv_mg(pTHX_ SV * const sv, const NV num);
+#define PERL_ARGS_ASSERT_SV_SETNV_MG \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_setpv(pTHX_ SV * const sv, const char * const ptr);
+#define PERL_ARGS_ASSERT_SV_SETPV \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_setpv_bufsize(pTHX_ SV * const sv, const STRLEN cur, const STRLEN len);
+#define PERL_ARGS_ASSERT_SV_SETPV_BUFSIZE \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_setpv_mg(pTHX_ SV * const sv, const char * const ptr);
+#define PERL_ARGS_ASSERT_SV_SETPV_MG \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_setpvf(pTHX_ SV * const sv, const char * const pat, ...)
+ __attribute__format__(__printf__,pTHX_2,pTHX_3);
+#define PERL_ARGS_ASSERT_SV_SETPVF \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_sv_setpvf_mg(pTHX_ SV * const sv, const char * const pat, ...)
+ __attribute__format__(__printf__,pTHX_2,pTHX_3);
+#define PERL_ARGS_ASSERT_SV_SETPVF_MG \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_sv_setpvn(pTHX_ SV * const sv, const char * const ptr, const STRLEN len);
+#define PERL_ARGS_ASSERT_SV_SETPVN \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_setpvn_fresh(pTHX_ SV * const sv, const char * const ptr, const STRLEN len);
+#define PERL_ARGS_ASSERT_SV_SETPVN_FRESH \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_setpvn_mg(pTHX_ SV * const sv, const char * const ptr, const STRLEN len);
+#define PERL_ARGS_ASSERT_SV_SETPVN_MG \
+ assert(sv); assert(ptr)
+
+PERL_CALLCONV SV *
+Perl_sv_setref_iv(pTHX_ SV * const rv, const char * const classname, const IV iv);
+#define PERL_ARGS_ASSERT_SV_SETREF_IV \
+ assert(rv)
+
+PERL_CALLCONV SV *
+Perl_sv_setref_nv(pTHX_ SV * const rv, const char * const classname, const NV nv);
+#define PERL_ARGS_ASSERT_SV_SETREF_NV \
+ assert(rv)
+
+PERL_CALLCONV SV *
+Perl_sv_setref_pv(pTHX_ SV * const rv, const char * const classname, void * const pv);
+#define PERL_ARGS_ASSERT_SV_SETREF_PV \
+ assert(rv)
+
+PERL_CALLCONV SV *
+Perl_sv_setref_pvn(pTHX_ SV * const rv, const char * const classname, const char * const pv, const STRLEN n);
+#define PERL_ARGS_ASSERT_SV_SETREF_PVN \
+ assert(rv); assert(pv)
+
+PERL_CALLCONV SV *
+Perl_sv_setref_uv(pTHX_ SV * const rv, const char * const classname, const UV uv);
+#define PERL_ARGS_ASSERT_SV_SETREF_UV \
+ assert(rv)
+
+PERL_CALLCONV void
+Perl_sv_setrv_inc(pTHX_ SV * const sv, SV * const ref);
+#define PERL_ARGS_ASSERT_SV_SETRV_INC \
+ assert(sv); assert(ref)
+
+PERL_CALLCONV void
+Perl_sv_setrv_inc_mg(pTHX_ SV * const sv, SV * const ref);
+#define PERL_ARGS_ASSERT_SV_SETRV_INC_MG \
+ assert(sv); assert(ref)
+
+PERL_CALLCONV void
+Perl_sv_setrv_noinc(pTHX_ SV * const sv, SV * const ref);
+#define PERL_ARGS_ASSERT_SV_SETRV_NOINC \
+ assert(sv); assert(ref)
+
+PERL_CALLCONV void
+Perl_sv_setrv_noinc_mg(pTHX_ SV * const sv, SV * const ref);
+#define PERL_ARGS_ASSERT_SV_SETRV_NOINC_MG \
+ assert(sv); assert(ref)
+
+PERL_CALLCONV void
+Perl_sv_setsv_flags(pTHX_ SV *dsv, SV *ssv, const I32 flags);
+#define PERL_ARGS_ASSERT_SV_SETSV_FLAGS \
+ assert(dsv)
+
+PERL_CALLCONV void
+Perl_sv_setsv_mg(pTHX_ SV * const dsv, SV * const ssv);
+#define PERL_ARGS_ASSERT_SV_SETSV_MG \
+ assert(dsv)
+
+PERL_CALLCONV void
+Perl_sv_setuv(pTHX_ SV * const sv, const UV num);
+#define PERL_ARGS_ASSERT_SV_SETUV \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_setuv_mg(pTHX_ SV * const sv, const UV u);
+#define PERL_ARGS_ASSERT_SV_SETUV_MG \
+ assert(sv)
+
+/* PERL_CALLCONV bool
+sv_streq(pTHX_ SV *sv1, SV *sv2); */
+
+PERL_CALLCONV bool
+Perl_sv_streq_flags(pTHX_ SV *sv1, SV *sv2, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_STREQ_FLAGS
+
+PERL_CALLCONV SV *
+Perl_sv_string_from_errnum(pTHX_ int errnum, SV *tgtsv);
#define PERL_ARGS_ASSERT_SV_STRING_FROM_ERRNUM
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_taint(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_SV_TAINT \
- assert(sv)
-#endif
-PERL_CALLCONV bool Perl_sv_tainted(pTHX_ SV *const sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_TAINTED \
- assert(sv)
-PERL_CALLCONV I32 Perl_sv_true(pTHX_ SV *const sv);
+PERL_CALLCONV bool
+Perl_sv_tainted(pTHX_ SV * const sv)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SV_TAINTED \
+ assert(sv)
+
+PERL_CALLCONV I32
+Perl_sv_true(pTHX_ SV * const sv);
#define PERL_ARGS_ASSERT_SV_TRUE
-PERL_CALLCONV char* Perl_sv_uni_display(pTHX_ SV *dsv, SV *ssv, STRLEN pvlim, UV flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_UNI_DISPLAY \
- assert(dsv); assert(ssv)
-
-PERL_CALLCONV int Perl_sv_unmagic(pTHX_ SV *const sv, const int type);
-#define PERL_ARGS_ASSERT_SV_UNMAGIC \
- assert(sv)
-PERL_CALLCONV int Perl_sv_unmagicext(pTHX_ SV *const sv, const int type, MGVTBL *vtbl);
-#define PERL_ARGS_ASSERT_SV_UNMAGICEXT \
- assert(sv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_unref(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_SV_UNREF \
- assert(sv)
-#endif
-PERL_CALLCONV void Perl_sv_unref_flags(pTHX_ SV *const ref, const U32 flags);
-#define PERL_ARGS_ASSERT_SV_UNREF_FLAGS \
- assert(ref)
-PERL_CALLCONV void Perl_sv_untaint(pTHX_ SV *const sv);
-#define PERL_ARGS_ASSERT_SV_UNTAINT \
- assert(sv)
-PERL_CALLCONV void Perl_sv_upgrade(pTHX_ SV *const sv, svtype new_type);
-#define PERL_ARGS_ASSERT_SV_UPGRADE \
- assert(sv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_usepvn(pTHX_ SV* sv, char* ptr, STRLEN len);
-#define PERL_ARGS_ASSERT_SV_USEPVN \
- assert(sv)
-#endif
-PERL_CALLCONV void Perl_sv_usepvn_flags(pTHX_ SV *const sv, char* ptr, const STRLEN len, const U32 flags);
-#define PERL_ARGS_ASSERT_SV_USEPVN_FLAGS \
- assert(sv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV void Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len);
-#define PERL_ARGS_ASSERT_SV_USEPVN_MG \
- assert(sv)
-#endif
-PERL_CALLCONV bool Perl_sv_utf8_decode(pTHX_ SV *const sv);
-#define PERL_ARGS_ASSERT_SV_UTF8_DECODE \
- assert(sv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV bool Perl_sv_utf8_downgrade(pTHX_ SV *const sv, const bool fail_ok);
-#define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE \
- assert(sv)
-#endif
-PERL_CALLCONV bool Perl_sv_utf8_downgrade_flags(pTHX_ SV *const sv, const bool fail_ok, const U32 flags);
-#define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE_FLAGS \
- assert(sv)
-/* PERL_CALLCONV bool sv_utf8_downgrade_nomg(pTHX_ SV *const sv, const bool fail_ok); */
-#define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE_NOMG
-PERL_CALLCONV void Perl_sv_utf8_encode(pTHX_ SV *const sv);
-#define PERL_ARGS_ASSERT_SV_UTF8_ENCODE \
- assert(sv)
-#ifndef NO_MATHOMS
-PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE \
- assert(sv)
-#endif
-/* PERL_CALLCONV STRLEN sv_utf8_upgrade_flags(pTHX_ SV *const sv, const I32 flags); */
-#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS
-PERL_CALLCONV STRLEN Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV *const sv, const I32 flags, STRLEN extra);
-#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW \
- assert(sv)
-/* PERL_CALLCONV STRLEN sv_utf8_upgrade_nomg(pTHX_ SV *sv); */
-#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_NOMG
-#ifndef NO_MATHOMS
-PERL_CALLCONV UV Perl_sv_uv(pTHX_ SV* sv)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_SV_UV \
- assert(sv)
-#endif
-PERL_CALLCONV void Perl_sv_vcatpvf(pTHX_ SV *const sv, const char *const pat, va_list *const args);
-#define PERL_ARGS_ASSERT_SV_VCATPVF \
- assert(sv); assert(pat)
-PERL_CALLCONV void Perl_sv_vcatpvf_mg(pTHX_ SV *const sv, const char *const pat, va_list *const args);
-#define PERL_ARGS_ASSERT_SV_VCATPVF_MG \
- assert(sv); assert(pat)
-PERL_CALLCONV void Perl_sv_vcatpvfn(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const Size_t sv_count, bool *const maybe_tainted);
-#define PERL_ARGS_ASSERT_SV_VCATPVFN \
- assert(sv); assert(pat)
-PERL_CALLCONV void Perl_sv_vcatpvfn_flags(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const Size_t sv_count, bool *const maybe_tainted, const U32 flags);
-#define PERL_ARGS_ASSERT_SV_VCATPVFN_FLAGS \
- assert(sv); assert(pat)
-PERL_CALLCONV void Perl_sv_vsetpvf(pTHX_ SV *const sv, const char *const pat, va_list *const args);
-#define PERL_ARGS_ASSERT_SV_VSETPVF \
- assert(sv); assert(pat)
-PERL_CALLCONV void Perl_sv_vsetpvf_mg(pTHX_ SV *const sv, const char *const pat, va_list *const args);
-#define PERL_ARGS_ASSERT_SV_VSETPVF_MG \
- assert(sv); assert(pat)
-PERL_CALLCONV void Perl_sv_vsetpvfn(pTHX_ SV *const sv, const char *const pat, const STRLEN patlen, va_list *const args, SV **const svargs, const Size_t sv_count, bool *const maybe_tainted);
-#define PERL_ARGS_ASSERT_SV_VSETPVFN \
- assert(sv); assert(pat)
-PERL_CALLCONV void Perl_switch_to_global_locale(void);
+PERL_CALLCONV char *
+Perl_sv_uni_display(pTHX_ SV *dsv, SV *ssv, STRLEN pvlim, UV flags)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_SV_UNI_DISPLAY \
+ assert(dsv); assert(ssv)
+
+PERL_CALLCONV int
+Perl_sv_unmagic(pTHX_ SV * const sv, const int type);
+#define PERL_ARGS_ASSERT_SV_UNMAGIC \
+ assert(sv)
+
+PERL_CALLCONV int
+Perl_sv_unmagicext(pTHX_ SV * const sv, const int type, const MGVTBL *vtbl);
+#define PERL_ARGS_ASSERT_SV_UNMAGICEXT \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_unref_flags(pTHX_ SV * const ref, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_UNREF_FLAGS \
+ assert(ref)
+
+PERL_CALLCONV void
+Perl_sv_untaint(pTHX_ SV * const sv);
+#define PERL_ARGS_ASSERT_SV_UNTAINT \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_upgrade(pTHX_ SV * const sv, svtype new_type);
+#define PERL_ARGS_ASSERT_SV_UPGRADE \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_usepvn_flags(pTHX_ SV * const sv, char *ptr, const STRLEN len, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_USEPVN_FLAGS \
+ assert(sv)
+
+PERL_CALLCONV bool
+Perl_sv_utf8_decode(pTHX_ SV * const sv);
+#define PERL_ARGS_ASSERT_SV_UTF8_DECODE \
+ assert(sv)
+
+PERL_CALLCONV bool
+Perl_sv_utf8_downgrade_flags(pTHX_ SV * const sv, const bool fail_ok, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE_FLAGS \
+ assert(sv)
+
+/* PERL_CALLCONV bool
+sv_utf8_downgrade_nomg(pTHX_ SV * const sv, const bool fail_ok); */
+
+PERL_CALLCONV void
+Perl_sv_utf8_encode(pTHX_ SV * const sv);
+#define PERL_ARGS_ASSERT_SV_UTF8_ENCODE \
+ assert(sv)
+
+/* PERL_CALLCONV STRLEN
+sv_utf8_upgrade_flags(pTHX_ SV * const sv, const I32 flags); */
+
+PERL_CALLCONV STRLEN
+Perl_sv_utf8_upgrade_flags_grow(pTHX_ SV * const sv, const I32 flags, STRLEN extra);
+#define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE_FLAGS_GROW \
+ assert(sv)
+
+/* PERL_CALLCONV STRLEN
+sv_utf8_upgrade_nomg(pTHX_ SV *sv); */
+
+PERL_CALLCONV void
+Perl_sv_vcatpvf(pTHX_ SV * const sv, const char * const pat, va_list * const args);
+#define PERL_ARGS_ASSERT_SV_VCATPVF \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_sv_vcatpvf_mg(pTHX_ SV * const sv, const char * const pat, va_list * const args);
+#define PERL_ARGS_ASSERT_SV_VCATPVF_MG \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_sv_vcatpvfn(pTHX_ SV * const sv, const char * const pat, const STRLEN patlen, va_list * const args, SV ** const svargs, const Size_t sv_count, bool * const maybe_tainted);
+#define PERL_ARGS_ASSERT_SV_VCATPVFN \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_sv_vcatpvfn_flags(pTHX_ SV * const sv, const char * const pat, const STRLEN patlen, va_list * const args, SV ** const svargs, const Size_t sv_count, bool * const maybe_tainted, const U32 flags);
+#define PERL_ARGS_ASSERT_SV_VCATPVFN_FLAGS \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_sv_vsetpvf(pTHX_ SV * const sv, const char * const pat, va_list * const args);
+#define PERL_ARGS_ASSERT_SV_VSETPVF \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_sv_vsetpvf_mg(pTHX_ SV * const sv, const char * const pat, va_list * const args);
+#define PERL_ARGS_ASSERT_SV_VSETPVF_MG \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_sv_vsetpvfn(pTHX_ SV * const sv, const char * const pat, const STRLEN patlen, va_list * const args, SV ** const svargs, const Size_t sv_count, bool * const maybe_tainted);
+#define PERL_ARGS_ASSERT_SV_VSETPVFN \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_switch_to_global_locale(pTHX);
#define PERL_ARGS_ASSERT_SWITCH_TO_GLOBAL_LOCALE
-PERL_CALLCONV bool Perl_sync_locale(void);
+
+PERL_CALLCONV bool
+Perl_sync_locale(pTHX);
#define PERL_ARGS_ASSERT_SYNC_LOCALE
-PERL_CALLCONV void Perl_sys_init(int* argc, char*** argv);
-#define PERL_ARGS_ASSERT_SYS_INIT \
- assert(argc); assert(argv)
-PERL_CALLCONV void Perl_sys_init3(int* argc, char*** argv, char*** env);
-#define PERL_ARGS_ASSERT_SYS_INIT3 \
- assert(argc); assert(argv); assert(env)
-PERL_CALLCONV void Perl_sys_term(void);
+
+PERL_CALLCONV void
+Perl_sys_init(int *argc, char ***argv);
+#define PERL_ARGS_ASSERT_SYS_INIT \
+ assert(argc); assert(argv)
+
+PERL_CALLCONV void
+Perl_sys_init3(int *argc, char ***argv, char ***env);
+#define PERL_ARGS_ASSERT_SYS_INIT3 \
+ assert(argc); assert(argv); assert(env)
+
+PERL_CALLCONV void
+Perl_sys_term(void);
#define PERL_ARGS_ASSERT_SYS_TERM
-PERL_CALLCONV void Perl_taint_env(pTHX);
+
+PERL_CALLCONV void
+Perl_taint_env(pTHX);
#define PERL_ARGS_ASSERT_TAINT_ENV
-PERL_CALLCONV void Perl_taint_proper(pTHX_ const char* f, const char *const s);
-#define PERL_ARGS_ASSERT_TAINT_PROPER \
- assert(s)
-PERL_CALLCONV void Perl_thread_locale_init(void);
+
+PERL_CALLCONV void
+Perl_taint_proper(pTHX_ const char *f, const char * const s);
+#define PERL_ARGS_ASSERT_TAINT_PROPER \
+ assert(s)
+
+PERL_CALLCONV void
+Perl_thread_locale_init(pTHX);
#define PERL_ARGS_ASSERT_THREAD_LOCALE_INIT
-PERL_CALLCONV void Perl_thread_locale_term(void);
+
+PERL_CALLCONV void
+Perl_thread_locale_term(pTHX);
#define PERL_ARGS_ASSERT_THREAD_LOCALE_TERM
-PERL_CALLCONV OP * Perl_tied_method(pTHX_ SV *methname, SV **sp, SV *const sv, const MAGIC *const mg, const U32 flags, U32 argc, ...);
-#define PERL_ARGS_ASSERT_TIED_METHOD \
- assert(methname); assert(sp); assert(sv); assert(mg)
-PERL_CALLCONV SSize_t Perl_tmps_grow_p(pTHX_ SSize_t ix);
-#define PERL_ARGS_ASSERT_TMPS_GROW_P
-/* PERL_CALLCONV UV to_uni_fold(pTHX_ UV c, U8 *p, STRLEN *lenp); */
-#define PERL_ARGS_ASSERT_TO_UNI_FOLD
-PERL_CALLCONV UV Perl_to_uni_lower(pTHX_ UV c, U8 *p, STRLEN *lenp);
-#define PERL_ARGS_ASSERT_TO_UNI_LOWER \
- assert(p); assert(lenp)
-PERL_CALLCONV UV Perl_to_uni_title(pTHX_ UV c, U8 *p, STRLEN *lenp);
-#define PERL_ARGS_ASSERT_TO_UNI_TITLE \
- assert(p); assert(lenp)
-PERL_CALLCONV UV Perl_to_uni_upper(pTHX_ UV c, U8 *p, STRLEN *lenp);
-#define PERL_ARGS_ASSERT_TO_UNI_UPPER \
- assert(p); assert(lenp)
-PERL_CALLCONV bool Perl_try_amagic_bin(pTHX_ int method, int flags);
-#define PERL_ARGS_ASSERT_TRY_AMAGIC_BIN
-PERL_CALLCONV bool Perl_try_amagic_un(pTHX_ int method, int flags);
-#define PERL_ARGS_ASSERT_TRY_AMAGIC_UN
-#ifndef NO_MATHOMS
-PERL_CALLCONV SSize_t Perl_unpack_str(pTHX_ const char *pat, const char *patend, const char *s, const char *strbeg, const char *strend, char **new_s, I32 ocnt, U32 flags)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_UNPACK_STR \
- assert(pat); assert(patend); assert(s); assert(strend)
-#endif
-PERL_CALLCONV SSize_t Perl_unpackstring(pTHX_ const char *pat, const char *patend, const char *s, const char *strend, U32 flags);
-#define PERL_ARGS_ASSERT_UNPACKSTRING \
- assert(pat); assert(patend); assert(s); assert(strend)
-PERL_CALLCONV void Perl_unshare_hek(pTHX_ HEK* hek);
-#define PERL_ARGS_ASSERT_UNSHARE_HEK
-PERL_CALLCONV void Perl_unsharepvn(pTHX_ const char* sv, I32 len, U32 hash);
-#define PERL_ARGS_ASSERT_UNSHAREPVN
-PERL_CALLCONV SV* Perl_upg_version(pTHX_ SV *ver, bool qv);
-#define PERL_ARGS_ASSERT_UPG_VERSION \
- assert(ver)
-PERL_CALLCONV U8* Perl_utf16_to_utf8(pTHX_ U8* p, U8 *d, Size_t bytelen, Size_t *newlen);
-#define PERL_ARGS_ASSERT_UTF16_TO_UTF8 \
- assert(p); assert(d); assert(newlen)
-PERL_CALLCONV U8* Perl_utf16_to_utf8_reversed(pTHX_ U8* p, U8 *d, Size_t bytelen, Size_t *newlen);
-#define PERL_ARGS_ASSERT_UTF16_TO_UTF8_REVERSED \
- assert(p); assert(d); assert(newlen)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE IV Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_UTF8_DISTANCE \
- assert(a); assert(b)
-#endif
+PERL_CALLCONV OP *
+Perl_tied_method(pTHX_ SV *methname, SV **sp, SV * const sv, const MAGIC * const mg, const U32 flags, U32 argc, ...)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_TIED_METHOD \
+ assert(methname); assert(sp); assert(sv); assert(mg)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE U8* Perl_utf8_hop(const U8 *s, SSize_t off)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_UTF8_HOP \
- assert(s)
-#endif
+PERL_CALLCONV SSize_t
+Perl_tmps_grow_p(pTHX_ SSize_t ix);
+#define PERL_ARGS_ASSERT_TMPS_GROW_P
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE U8* Perl_utf8_hop_back(const U8 *s, SSize_t off, const U8 *start)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_UTF8_HOP_BACK \
- assert(s); assert(start)
-#endif
+/* PERL_CALLCONV UV
+to_uni_fold(pTHX_ UV c, U8 *p, STRLEN *lenp); */
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE U8* Perl_utf8_hop_forward(const U8 *s, SSize_t off, const U8 *end)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_UTF8_HOP_FORWARD \
- assert(s); assert(end)
-#endif
+PERL_CALLCONV UV
+Perl_to_uni_lower(pTHX_ UV c, U8 *p, STRLEN *lenp);
+#define PERL_ARGS_ASSERT_TO_UNI_LOWER \
+ assert(p); assert(lenp)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE U8* Perl_utf8_hop_safe(const U8 *s, SSize_t off, const U8 *start, const U8 *end)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_UTF8_HOP_SAFE \
- assert(s); assert(start); assert(end)
-#endif
+PERL_CALLCONV UV
+Perl_to_uni_title(pTHX_ UV c, U8 *p, STRLEN *lenp);
+#define PERL_ARGS_ASSERT_TO_UNI_TITLE \
+ assert(p); assert(lenp)
-PERL_CALLCONV STRLEN Perl_utf8_length(pTHX_ const U8* s, const U8 *e)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_UTF8_LENGTH \
- assert(s); assert(e)
-
-PERL_CALLCONV U8* Perl_utf8_to_bytes(pTHX_ U8 *s, STRLEN *lenp);
-#define PERL_ARGS_ASSERT_UTF8_TO_BYTES \
- assert(s); assert(lenp)
-#ifndef NO_MATHOMS
-PERL_CALLCONV UV Perl_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_UTF8_TO_UVCHR \
- assert(s)
-#endif
+PERL_CALLCONV UV
+Perl_to_uni_upper(pTHX_ UV c, U8 *p, STRLEN *lenp);
+#define PERL_ARGS_ASSERT_TO_UNI_UPPER \
+ assert(p); assert(lenp)
-PERL_CALLCONV UV Perl_utf8_to_uvchr_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen);
-#define PERL_ARGS_ASSERT_UTF8_TO_UVCHR_BUF \
- assert(s); assert(send)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE UV Perl_utf8_to_uvchr_buf_helper(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen);
-#define PERL_ARGS_ASSERT_UTF8_TO_UVCHR_BUF_HELPER \
- assert(s); assert(send)
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV UV Perl_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_UTF8_TO_UVUNI \
- assert(s)
-#endif
+PERL_CALLCONV bool
+Perl_try_amagic_bin(pTHX_ int method, int flags);
+#define PERL_ARGS_ASSERT_TRY_AMAGIC_BIN
-PERL_CALLCONV UV Perl_utf8_to_uvuni_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_UTF8_TO_UVUNI_BUF \
- assert(s); assert(send)
-
-PERL_CALLCONV UV Perl_utf8n_to_uvchr(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags);
-#define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR \
- assert(s)
-PERL_CALLCONV UV Perl_utf8n_to_uvchr_error(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 * errors);
-#define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR_ERROR \
- assert(s)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE UV Perl_utf8n_to_uvchr_msgs(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 * errors, AV ** msgs);
-#define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR_MSGS \
- assert(s)
-#endif
-#ifndef NO_MATHOMS
-PERL_CALLCONV UV Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_UTF8N_TO_UVUNI \
- assert(s)
-#endif
+PERL_CALLCONV bool
+Perl_try_amagic_un(pTHX_ int method, int flags);
+#define PERL_ARGS_ASSERT_TRY_AMAGIC_UN
-PERL_CALLCONV void Perl_utilize(pTHX_ int aver, I32 floor, OP* version, OP* idop, OP* arg);
-#define PERL_ARGS_ASSERT_UTILIZE \
- assert(idop)
-/* PERL_CALLCONV U8* uvchr_to_utf8(pTHX_ U8 *d, UV uv); */
-#define PERL_ARGS_ASSERT_UVCHR_TO_UTF8
-/* PERL_CALLCONV U8* uvchr_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags); */
-#define PERL_ARGS_ASSERT_UVCHR_TO_UTF8_FLAGS
-/* PERL_CALLCONV U8* uvchr_to_utf8_flags_msgs(pTHX_ U8 *d, UV uv, UV flags, HV ** msgs); */
-#define PERL_ARGS_ASSERT_UVCHR_TO_UTF8_FLAGS_MSGS
-PERL_CALLCONV U8* Perl_uvoffuni_to_utf8_flags(pTHX_ U8 *d, UV uv, const UV flags);
-#define PERL_ARGS_ASSERT_UVOFFUNI_TO_UTF8_FLAGS \
- assert(d)
-PERL_CALLCONV U8* Perl_uvoffuni_to_utf8_flags_msgs(pTHX_ U8 *d, UV uv, const UV flags, HV** msgs);
-#define PERL_ARGS_ASSERT_UVOFFUNI_TO_UTF8_FLAGS_MSGS \
- assert(d)
-PERL_CALLCONV U8* Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv);
-#define PERL_ARGS_ASSERT_UVUNI_TO_UTF8 \
- assert(d)
-#ifndef NO_MATHOMS
-PERL_CALLCONV U8* Perl_uvuni_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_UVUNI_TO_UTF8_FLAGS \
- assert(d)
-#endif
+PERL_CALLCONV SSize_t
+Perl_unpackstring(pTHX_ const char *pat, const char *patend, const char *s, const char *strend, U32 flags);
+#define PERL_ARGS_ASSERT_UNPACKSTRING \
+ assert(pat); assert(patend); assert(s); assert(strend)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE UV Perl_valid_utf8_to_uvchr(const U8 *s, STRLEN *retlen)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_VALID_UTF8_TO_UVCHR \
- assert(s)
-#endif
+PERL_CALLCONV void
+Perl_unshare_hek(pTHX_ HEK *hek);
+#define PERL_ARGS_ASSERT_UNSHARE_HEK
-#ifndef NO_MATHOMS
-PERL_CALLCONV UV Perl_valid_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_VALID_UTF8_TO_UVUNI \
- assert(s)
-#endif
+PERL_CALLCONV void
+Perl_unsharepvn(pTHX_ const char *sv, I32 len, U32 hash);
+#define PERL_ARGS_ASSERT_UNSHAREPVN
-PERL_CALLCONV bool Perl_validate_proto(pTHX_ SV *name, SV *proto, bool warn, bool curstash);
-#define PERL_ARGS_ASSERT_VALIDATE_PROTO \
- assert(name)
-PERL_CALLCONV int Perl_vcmp(pTHX_ SV *lhv, SV *rhv);
-#define PERL_ARGS_ASSERT_VCMP \
- assert(lhv); assert(rhv)
-PERL_CALLCONV_NO_RET void Perl_vcroak(pTHX_ const char* pat, va_list* args)
- __attribute__noreturn__;
+PERL_CALLCONV SV *
+Perl_upg_version(pTHX_ SV *ver, bool qv);
+#define PERL_ARGS_ASSERT_UPG_VERSION \
+ assert(ver)
+
+PERL_CALLCONV U8 *
+Perl_utf16_to_utf8(pTHX_ U8 *p, U8 *d, Size_t bytelen, Size_t *newlen);
+#define PERL_ARGS_ASSERT_UTF16_TO_UTF8 \
+ assert(p); assert(d); assert(newlen)
+
+PERL_CALLCONV U8 *
+Perl_utf16_to_utf8_base(pTHX_ U8 *p, U8 *d, Size_t bytelen, Size_t *newlen, const bool high, const bool low);
+#define PERL_ARGS_ASSERT_UTF16_TO_UTF8_BASE \
+ assert(p); assert(d); assert(newlen)
+
+PERL_CALLCONV U8 *
+Perl_utf16_to_utf8_reversed(pTHX_ U8 *p, U8 *d, Size_t bytelen, Size_t *newlen);
+#define PERL_ARGS_ASSERT_UTF16_TO_UTF8_REVERSED \
+ assert(p); assert(d); assert(newlen)
+
+PERL_CALLCONV STRLEN
+Perl_utf8_length(pTHX_ const U8 *s0, const U8 *e)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_UTF8_LENGTH \
+ assert(s0); assert(e)
+
+PERL_CALLCONV U8 *
+Perl_utf8_to_bytes(pTHX_ U8 *s, STRLEN *lenp);
+#define PERL_ARGS_ASSERT_UTF8_TO_BYTES \
+ assert(s); assert(lenp)
+
+PERL_CALLCONV U8 *
+Perl_utf8_to_utf16_base(pTHX_ U8 *s, U8 *d, Size_t bytelen, Size_t *newlen, const bool high, const bool low);
+#define PERL_ARGS_ASSERT_UTF8_TO_UTF16_BASE \
+ assert(s); assert(d); assert(newlen)
+
+PERL_CALLCONV UV
+Perl_utf8_to_uvchr_buf(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen);
+#define PERL_ARGS_ASSERT_UTF8_TO_UVCHR_BUF \
+ assert(s); assert(send)
+
+PERL_CALLCONV UV
+Perl_utf8n_to_uvchr(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags);
+#define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR \
+ assert(s)
+
+PERL_CALLCONV UV
+Perl_utf8n_to_uvchr_error(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 *errors);
+#define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR_ERROR \
+ assert(s)
+
+PERL_CALLCONV void
+Perl_utilize(pTHX_ int aver, I32 floor, OP *version, OP *idop, OP *arg)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_UTILIZE \
+ assert(idop)
+
+/* PERL_CALLCONV U8 *
+uvchr_to_utf8(pTHX_ U8 *d, UV uv); */
+
+/* PERL_CALLCONV U8 *
+uvchr_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags); */
+
+/* PERL_CALLCONV U8 *
+uvchr_to_utf8_flags_msgs(pTHX_ U8 *d, UV uv, UV flags, HV **msgs); */
+
+PERL_CALLCONV U8 *
+Perl_uvoffuni_to_utf8_flags(pTHX_ U8 *d, UV uv, UV flags);
+#define PERL_ARGS_ASSERT_UVOFFUNI_TO_UTF8_FLAGS \
+ assert(d)
+
+PERL_CALLCONV U8 *
+Perl_uvoffuni_to_utf8_flags_msgs(pTHX_ U8 *d, UV input_uv, const UV flags, HV **msgs);
+#define PERL_ARGS_ASSERT_UVOFFUNI_TO_UTF8_FLAGS_MSGS \
+ assert(d)
+
+PERL_CALLCONV U8 *
+Perl_uvuni_to_utf8(pTHX_ U8 *d, UV uv);
+#define PERL_ARGS_ASSERT_UVUNI_TO_UTF8 \
+ assert(d)
+
+PERL_CALLCONV bool
+Perl_validate_proto(pTHX_ SV *name, SV *proto, bool warn, bool curstash);
+#define PERL_ARGS_ASSERT_VALIDATE_PROTO \
+ assert(name)
+
+PERL_CALLCONV int
+Perl_vcmp(pTHX_ SV *lhv, SV *rhv);
+#define PERL_ARGS_ASSERT_VCMP \
+ assert(lhv); assert(rhv)
+
+PERL_CALLCONV_NO_RET void
+Perl_vcroak(pTHX_ const char *pat, va_list *args)
+ __attribute__noreturn__;
#define PERL_ARGS_ASSERT_VCROAK
-PERL_CALLCONV void Perl_vdeb(pTHX_ const char* pat, va_list* args);
-#define PERL_ARGS_ASSERT_VDEB \
- assert(pat)
-PERL_CALLCONV char* Perl_vform(pTHX_ const char* pat, va_list* args);
-#define PERL_ARGS_ASSERT_VFORM \
- assert(pat)
-PERL_CALLCONV void Perl_vivify_defelem(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_VIVIFY_DEFELEM \
- assert(sv)
-PERL_CALLCONV SV* Perl_vivify_ref(pTHX_ SV* sv, U32 to_what)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_VIVIFY_REF \
- assert(sv)
-
-PERL_CALLCONV void Perl_vload_module(pTHX_ U32 flags, SV* name, SV* ver, va_list* args);
-#define PERL_ARGS_ASSERT_VLOAD_MODULE \
- assert(name)
-PERL_CALLCONV SV* Perl_vmess(pTHX_ const char* pat, va_list* args);
-#define PERL_ARGS_ASSERT_VMESS \
- assert(pat)
-PERL_CALLCONV SV* Perl_vnewSVpvf(pTHX_ const char *const pat, va_list *const args)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_VNEWSVPVF \
- assert(pat)
-
-PERL_CALLCONV SV* Perl_vnormal(pTHX_ SV *vs);
-#define PERL_ARGS_ASSERT_VNORMAL \
- assert(vs)
-PERL_CALLCONV SV* Perl_vnumify(pTHX_ SV *vs);
-#define PERL_ARGS_ASSERT_VNUMIFY \
- assert(vs)
-PERL_CALLCONV SV* Perl_vstringify(pTHX_ SV *vs);
-#define PERL_ARGS_ASSERT_VSTRINGIFY \
- assert(vs)
-PERL_CALLCONV SV* Perl_vverify(pTHX_ SV *vs);
-#define PERL_ARGS_ASSERT_VVERIFY \
- assert(vs)
-PERL_CALLCONV void Perl_vwarn(pTHX_ const char* pat, va_list* args);
-#define PERL_ARGS_ASSERT_VWARN \
- assert(pat)
-PERL_CALLCONV void Perl_vwarner(pTHX_ U32 err, const char* pat, va_list* args);
-#define PERL_ARGS_ASSERT_VWARNER \
- assert(pat)
-PERL_CALLCONV I32 Perl_wait4pid(pTHX_ Pid_t pid, int* statusp, int flags);
-#define PERL_ARGS_ASSERT_WAIT4PID \
- assert(statusp)
-PERL_CALLCONV void Perl_warn(pTHX_ const char* pat, ...)
- __attribute__format__(__printf__,pTHX_1,pTHX_2);
-#define PERL_ARGS_ASSERT_WARN \
- assert(pat)
-
-PERL_CALLCONV void Perl_warn_sv(pTHX_ SV *baseex);
-#define PERL_ARGS_ASSERT_WARN_SV \
- assert(baseex)
-PERL_CALLCONV void Perl_warner(pTHX_ U32 err, const char* pat, ...)
- __attribute__format__(__printf__,pTHX_2,pTHX_3);
-#define PERL_ARGS_ASSERT_WARNER \
- assert(pat)
-
-PERL_CALLCONV I32 Perl_was_lvalue_sub(pTHX)
- __attribute__warn_unused_result__;
+PERL_CALLCONV void
+Perl_vdeb(pTHX_ const char *pat, va_list *args);
+#define PERL_ARGS_ASSERT_VDEB \
+ assert(pat)
+
+PERL_CALLCONV char *
+Perl_vform(pTHX_ const char *pat, va_list *args);
+#define PERL_ARGS_ASSERT_VFORM \
+ assert(pat)
+
+PERL_CALLCONV void
+Perl_vivify_defelem(pTHX_ SV *sv);
+#define PERL_ARGS_ASSERT_VIVIFY_DEFELEM \
+ assert(sv)
+
+PERL_CALLCONV SV *
+Perl_vivify_ref(pTHX_ SV *sv, U32 to_what)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_VIVIFY_REF \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_vload_module(pTHX_ U32 flags, SV *name, SV *ver, va_list *args);
+#define PERL_ARGS_ASSERT_VLOAD_MODULE \
+ assert(name)
+
+PERL_CALLCONV SV *
+Perl_vmess(pTHX_ const char *pat, va_list *args);
+#define PERL_ARGS_ASSERT_VMESS \
+ assert(pat)
+
+PERL_CALLCONV SV *
+Perl_vnewSVpvf(pTHX_ const char * const pat, va_list * const args)
+ __attribute__warn_unused_result__;
+#define PERL_ARGS_ASSERT_VNEWSVPVF \
+ assert(pat)
+
+PERL_CALLCONV SV *
+Perl_vnormal(pTHX_ SV *vs);
+#define PERL_ARGS_ASSERT_VNORMAL \
+ assert(vs)
+
+PERL_CALLCONV SV *
+Perl_vnumify(pTHX_ SV *vs);
+#define PERL_ARGS_ASSERT_VNUMIFY \
+ assert(vs)
+
+PERL_CALLCONV SV *
+Perl_vstringify(pTHX_ SV *vs);
+#define PERL_ARGS_ASSERT_VSTRINGIFY \
+ assert(vs)
+
+PERL_CALLCONV SV *
+Perl_vverify(pTHX_ SV *vs);
+#define PERL_ARGS_ASSERT_VVERIFY \
+ assert(vs)
+
+PERL_CALLCONV void
+Perl_vwarn(pTHX_ const char *pat, va_list *args);
+#define PERL_ARGS_ASSERT_VWARN \
+ assert(pat)
+
+PERL_CALLCONV void
+Perl_vwarner(pTHX_ U32 err, const char *pat, va_list *args);
+#define PERL_ARGS_ASSERT_VWARNER \
+ assert(pat)
+
+PERL_CALLCONV I32
+Perl_wait4pid(pTHX_ Pid_t pid, int *statusp, int flags)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_WAIT4PID \
+ assert(statusp)
+
+PERL_CALLCONV void
+Perl_warn(pTHX_ const char *pat, ...)
+ __attribute__format__(__printf__,pTHX_1,pTHX_2);
+#define PERL_ARGS_ASSERT_WARN \
+ assert(pat)
+
+PERL_CALLCONV void
+Perl_warn_sv(pTHX_ SV *baseex);
+#define PERL_ARGS_ASSERT_WARN_SV \
+ assert(baseex)
+
+PERL_CALLCONV void
+Perl_warner(pTHX_ U32 err, const char *pat, ...)
+ __attribute__format__(__printf__,pTHX_2,pTHX_3);
+#define PERL_ARGS_ASSERT_WARNER \
+ assert(pat)
+
+PERL_CALLCONV I32
+Perl_was_lvalue_sub(pTHX)
+ __attribute__warn_unused_result__;
#define PERL_ARGS_ASSERT_WAS_LVALUE_SUB
-PERL_CALLCONV void Perl_watch(pTHX_ char** addr);
-#define PERL_ARGS_ASSERT_WATCH \
- assert(addr)
-/* PERL_CALLCONV I32 whichsig(pTHX_ const char* sig); */
-#define PERL_ARGS_ASSERT_WHICHSIG
-PERL_CALLCONV I32 Perl_whichsig_pv(pTHX_ const char* sig);
-#define PERL_ARGS_ASSERT_WHICHSIG_PV \
- assert(sig)
-PERL_CALLCONV I32 Perl_whichsig_pvn(pTHX_ const char* sig, STRLEN len);
-#define PERL_ARGS_ASSERT_WHICHSIG_PVN \
- assert(sig)
-PERL_CALLCONV I32 Perl_whichsig_sv(pTHX_ SV* sigsv);
-#define PERL_ARGS_ASSERT_WHICHSIG_SV \
- assert(sigsv)
-PERL_CALLCONV void Perl_wrap_keyword_plugin(pTHX_ Perl_keyword_plugin_t new_plugin, Perl_keyword_plugin_t *old_plugin_p);
-#define PERL_ARGS_ASSERT_WRAP_KEYWORD_PLUGIN \
- assert(new_plugin); assert(old_plugin_p)
-PERL_CALLCONV void Perl_wrap_op_checker(pTHX_ Optype opcode, Perl_check_t new_checker, Perl_check_t *old_checker_p);
-#define PERL_ARGS_ASSERT_WRAP_OP_CHECKER \
- assert(new_checker); assert(old_checker_p)
-PERL_CALLCONV void Perl_write_to_stderr(pTHX_ SV* msv);
-#define PERL_ARGS_ASSERT_WRITE_TO_STDERR \
- assert(msv)
-PERL_CALLCONV void Perl_xs_boot_epilog(pTHX_ const I32 ax);
+PERL_CALLCONV void
+Perl_watch(pTHX_ char **addr)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_WATCH \
+ assert(addr)
+
+/* PERL_CALLCONV I32
+whichsig(pTHX_ const char *sig); */
+
+PERL_CALLCONV I32
+Perl_whichsig_pv(pTHX_ const char *sig);
+#define PERL_ARGS_ASSERT_WHICHSIG_PV \
+ assert(sig)
+
+PERL_CALLCONV I32
+Perl_whichsig_pvn(pTHX_ const char *sig, STRLEN len);
+#define PERL_ARGS_ASSERT_WHICHSIG_PVN \
+ assert(sig)
+
+PERL_CALLCONV I32
+Perl_whichsig_sv(pTHX_ SV *sigsv);
+#define PERL_ARGS_ASSERT_WHICHSIG_SV \
+ assert(sigsv)
+
+PERL_CALLCONV void
+Perl_wrap_infix_plugin(pTHX_ Perl_infix_plugin_t new_plugin, Perl_infix_plugin_t *old_plugin_p);
+#define PERL_ARGS_ASSERT_WRAP_INFIX_PLUGIN \
+ assert(new_plugin); assert(old_plugin_p)
+
+PERL_CALLCONV void
+Perl_wrap_keyword_plugin(pTHX_ Perl_keyword_plugin_t new_plugin, Perl_keyword_plugin_t *old_plugin_p);
+#define PERL_ARGS_ASSERT_WRAP_KEYWORD_PLUGIN \
+ assert(new_plugin); assert(old_plugin_p)
+
+PERL_CALLCONV void
+Perl_wrap_op_checker(pTHX_ Optype opcode, Perl_check_t new_checker, Perl_check_t *old_checker_p);
+#define PERL_ARGS_ASSERT_WRAP_OP_CHECKER \
+ assert(new_checker); assert(old_checker_p)
+
+PERL_CALLCONV void
+Perl_write_to_stderr(pTHX_ SV *msv)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_WRITE_TO_STDERR \
+ assert(msv)
+
+PERL_CALLCONV void
+Perl_xs_boot_epilog(pTHX_ const I32 ax);
#define PERL_ARGS_ASSERT_XS_BOOT_EPILOG
-PERL_CALLCONV I32 Perl_xs_handshake(const U32 key, void * v_my_perl, const char * file, ...);
-#define PERL_ARGS_ASSERT_XS_HANDSHAKE \
- assert(v_my_perl); assert(file)
-PERL_CALLCONV int Perl_yyerror(pTHX_ const char *const s);
-#define PERL_ARGS_ASSERT_YYERROR \
- assert(s)
-PERL_CALLCONV int Perl_yyerror_pv(pTHX_ const char *const s, U32 flags);
-#define PERL_ARGS_ASSERT_YYERROR_PV \
- assert(s)
-PERL_CALLCONV int Perl_yyerror_pvn(pTHX_ const char *const s, STRLEN len, U32 flags);
+
+PERL_CALLCONV I32
+Perl_xs_handshake(const U32 key, void *v_my_perl, const char *file, ...);
+#define PERL_ARGS_ASSERT_XS_HANDSHAKE \
+ assert(v_my_perl); assert(file)
+
+PERL_CALLCONV int
+Perl_yyerror(pTHX_ const char * const s)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_YYERROR \
+ assert(s)
+
+PERL_CALLCONV int
+Perl_yyerror_pv(pTHX_ const char * const s, U32 flags)
+ __attribute__visibility__("hidden");
+#define PERL_ARGS_ASSERT_YYERROR_PV \
+ assert(s)
+
+PERL_CALLCONV int
+Perl_yyerror_pvn(pTHX_ const char * const s, STRLEN len, U32 flags)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_YYERROR_PVN
-PERL_CALLCONV int Perl_yylex(pTHX);
+
+PERL_CALLCONV int
+Perl_yylex(pTHX);
#define PERL_ARGS_ASSERT_YYLEX
-PERL_CALLCONV int Perl_yyparse(pTHX_ int gramtype);
+
+PERL_CALLCONV int
+Perl_yyparse(pTHX_ int gramtype)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_YYPARSE
-PERL_CALLCONV void Perl_yyquit(pTHX);
+
+PERL_CALLCONV void
+Perl_yyquit(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_YYQUIT
-PERL_CALLCONV void Perl_yyunlex(pTHX);
+
+PERL_CALLCONV void
+Perl_yyunlex(pTHX)
+ __attribute__visibility__("hidden");
#define PERL_ARGS_ASSERT_YYUNLEX
-#if ! defined(HAS_MEMRCHR) && (defined(PERL_CORE) || defined(PERL_EXT))
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void * S_my_memrchr(const char * s, const char c, const STRLEN len);
-#define PERL_ARGS_ASSERT_MY_MEMRCHR \
- assert(s)
-#endif
-#endif
-#if !(!defined(PERL_EXT_RE_BUILD))
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
-PERL_CALLCONV SV* Perl_get_re_gclass_nonbitmap_data(pTHX_ const regexp *prog, const struct regnode *node, bool doinit, SV **listsvp, SV **lonly_utf8_locale, SV **output_invlist);
-#define PERL_ARGS_ASSERT_GET_RE_GCLASS_NONBITMAP_DATA \
- assert(node)
-# endif
-#endif
-#if !(defined(DEBUGGING))
-# if !defined(NV_PRESERVES_UV)
-# if defined(PERL_IN_SV_C)
-STATIC int S_sv_2iuv_non_preserve(pTHX_ SV *const sv);
-#define PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE \
- assert(sv)
-# endif
-# endif
-#endif
-#if !(defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H))
-PERL_CALLCONV const char* Perl_langinfo(const int item);
-#define PERL_ARGS_ASSERT_PERL_LANGINFO
-#endif
-#if !(defined(HAS_NL_LANGINFO))
-# if defined(PERL_IN_LOCALE_C)
-STATIC const char* S_my_nl_langinfo(const int item, bool toggle);
-#define PERL_ARGS_ASSERT_MY_NL_LANGINFO
-# endif
-#endif
-#if !(defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION))
-PERL_CALLCONV bool Perl_do_exec(pTHX_ const char* cmd);
-#define PERL_ARGS_ASSERT_DO_EXEC \
- assert(cmd)
-#endif
-#if !(defined(PERL_USE_3ARG_SIGHANDLER))
-PERL_CALLCONV Signal_t Perl_csighandler(int sig);
-#define PERL_ARGS_ASSERT_CSIGHANDLER
-PERL_CALLCONV Signal_t Perl_sighandler(int sig);
-#define PERL_ARGS_ASSERT_SIGHANDLER
-#endif
-#if !(defined(_MSC_VER))
-PERL_CALLCONV_NO_RET int Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg)
- __attribute__noreturn__;
-#define PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET \
- assert(sv); assert(mg)
+
+#if defined(DEBUGGING)
+PERL_CALLCONV int
+Perl_get_debug_opts(pTHX_ const char **s, bool givehelp)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_GET_DEBUG_OPTS \
+ assert(s)
+
+PERL_CALLCONV void
+Perl_hv_assert(pTHX_ HV *hv);
+# define PERL_ARGS_ASSERT_HV_ASSERT \
+ assert(hv)
+
+PERL_CALLCONV void
+Perl_pad_setsv(pTHX_ PADOFFSET po, SV *sv);
+# define PERL_ARGS_ASSERT_PAD_SETSV \
+ assert(sv)
+
+PERL_CALLCONV SV *
+Perl_pad_sv(pTHX_ PADOFFSET po);
+# define PERL_ARGS_ASSERT_PAD_SV
+
+PERL_CALLCONV void
+Perl_set_padlist(CV *cv, PADLIST *padlist);
+# define PERL_ARGS_ASSERT_SET_PADLIST \
+ assert(cv)
+
+#endif /* defined(DEBUGGING) */
+#if defined(DEBUG_LEAKING_SCALARS_FORK_DUMP)
+PERL_CALLCONV void
+Perl_dump_sv_child(pTHX_ SV *sv)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_DUMP_SV_CHILD \
+ assert(sv)
#endif
#if !defined(EBCDIC)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE unsigned int Perl_variant_byte_number(PERL_UINTMAX_T word)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_VARIANT_BYTE_NUMBER
+
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE unsigned int
+Perl_variant_byte_number(PERL_UINTMAX_T word)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_VARIANT_BYTE_NUMBER
+
+# endif
#endif
+#if defined(F_FREESP) && !defined(HAS_CHSIZE) && !defined(HAS_TRUNCATE)
+PERL_CALLCONV I32
+Perl_my_chsize(pTHX_ int fd, Off_t length)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_MY_CHSIZE
#endif
#if !defined(HAS_GETENV_LEN)
-PERL_CALLCONV char* Perl_getenv_len(pTHX_ const char *env_elem, unsigned long *len);
-#define PERL_ARGS_ASSERT_GETENV_LEN \
- assert(env_elem); assert(len)
-#endif
-#if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
-# if defined(PERL_IN_PP_SYS_C)
-STATIC int S_dooneliner(pTHX_ const char *cmd, const char *filename)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DOONELINER \
- assert(cmd); assert(filename)
-
-# endif
+PERL_CALLCONV char *
+Perl_getenv_len(pTHX_ const char *env_elem, unsigned long *len)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_GETENV_LEN \
+ assert(env_elem); assert(len)
+
#endif
#if !defined(HAS_MKOSTEMP)
-PERL_CALLCONV int Perl_my_mkostemp(char *templte, int flags);
-#define PERL_ARGS_ASSERT_MY_MKOSTEMP \
- assert(templte)
+PERL_CALLCONV int
+Perl_my_mkostemp(char *templte, int flags)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_MY_MKOSTEMP \
+ assert(templte)
+
#endif
#if !defined(HAS_MKSTEMP)
-PERL_CALLCONV int Perl_my_mkstemp(char *templte);
-#define PERL_ARGS_ASSERT_MY_MKSTEMP \
- assert(templte)
-#endif
-#if !defined(HAS_RENAME)
-PERL_CALLCONV I32 Perl_same_dirent(pTHX_ const char* a, const char* b);
-#define PERL_ARGS_ASSERT_SAME_DIRENT \
- assert(a); assert(b)
-#endif
-#if !defined(HAS_SIGNBIT)
-PERL_CALLCONV int Perl_signbit(NV f)
- __attribute__warn_unused_result__
- __attribute__pure__;
-#define PERL_ARGS_ASSERT_PERL_SIGNBIT
+PERL_CALLCONV int
+Perl_my_mkstemp(char *templte)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_MY_MKSTEMP \
+ assert(templte)
#endif
-#if !defined(HAS_STRLCAT)
-PERL_CALLCONV Size_t Perl_my_strlcat(char *dst, const char *src, Size_t size);
-#define PERL_ARGS_ASSERT_MY_STRLCAT
-#endif
-#if !defined(HAS_STRLCPY)
-PERL_CALLCONV Size_t Perl_my_strlcpy(char *dst, const char *src, Size_t size);
-#define PERL_ARGS_ASSERT_MY_STRLCPY
-#endif
-#if !defined(HAS_STRNLEN)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE Size_t Perl_my_strnlen(const char *str, Size_t maxlen);
-#define PERL_ARGS_ASSERT_MY_STRNLEN \
- assert(str)
-#endif
-#endif
-#if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
-PERL_CALLCONV I32 Perl_my_chsize(pTHX_ int fd, Off_t length)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_MY_CHSIZE
+#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
+PERL_CALLCONV I32
+Perl_do_ipcctl(pTHX_ I32 optype, SV **mark, SV **sp)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_DO_IPCCTL \
+ assert(mark); assert(sp)
+
+PERL_CALLCONV I32
+Perl_do_ipcget(pTHX_ I32 optype, SV **mark, SV **sp)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_DO_IPCGET \
+ assert(mark); assert(sp)
+
+PERL_CALLCONV I32
+Perl_do_msgrcv(pTHX_ SV **mark, SV **sp)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_DO_MSGRCV \
+ assert(mark); assert(sp)
+
+PERL_CALLCONV I32
+Perl_do_msgsnd(pTHX_ SV **mark, SV **sp)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_DO_MSGSND \
+ assert(mark); assert(sp)
+
+PERL_CALLCONV I32
+Perl_do_semop(pTHX_ SV **mark, SV **sp)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_DO_SEMOP \
+ assert(mark); assert(sp)
+
+PERL_CALLCONV I32
+Perl_do_shmio(pTHX_ I32 optype, SV **mark, SV **sp)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_DO_SHMIO \
+ assert(mark); assert(sp)
+
+#endif /* defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM) */
+#if defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H)
+PERL_CALLCONV const char *
+Perl_langinfo(const nl_item item);
+# define PERL_ARGS_ASSERT_PERL_LANGINFO
-#endif
-#if !defined(NV_PRESERVES_UV)
-# if defined(DEBUGGING)
-# if defined(PERL_IN_SV_C)
-STATIC int S_sv_2iuv_non_preserve(pTHX_ SV *const sv, I32 numtype);
-#define PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE \
- assert(sv)
-# endif
-# endif
-#endif
-#if !defined(PERL_DISABLE_PMC)
-# if defined(PERL_IN_PP_CTL_C)
-STATIC PerlIO * S_doopen_pm(pTHX_ SV *name)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DOOPEN_PM \
- assert(name)
-
-# endif
-#endif
-#if !defined(PERL_EXT_RE_BUILD)
-# if defined(PERL_IN_REGCOMP_C)
-STATIC void S__append_range_to_invlist(pTHX_ SV* const invlist, const UV start, const UV end);
-#define PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST \
- assert(invlist)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE UV* S__invlist_array_init(SV* const invlist, const bool will_have_0)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT \
- assert(invlist)
-#endif
+PERL_CALLCONV const char *
+Perl_langinfo8(const nl_item item, utf8ness_t *utf8ness);
+# define PERL_ARGS_ASSERT_PERL_LANGINFO8
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE IV* S_get_invlist_previous_index_addr(SV* invlist)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GET_INVLIST_PREVIOUS_INDEX_ADDR \
- assert(invlist)
-#endif
+#else
+PERL_CALLCONV const char *
+Perl_langinfo(const int item);
+# define PERL_ARGS_ASSERT_PERL_LANGINFO
-STATIC void S_initialize_invlist_guts(pTHX_ SV* invlist, const Size_t initial_size);
-#define PERL_ARGS_ASSERT_INITIALIZE_INVLIST_GUTS \
- assert(invlist)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void S_invlist_clear(pTHX_ SV* invlist);
-#define PERL_ARGS_ASSERT_INVLIST_CLEAR \
- assert(invlist)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE UV S_invlist_max(SV* const invlist)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_INVLIST_MAX \
- assert(invlist)
-#endif
+PERL_CALLCONV const char *
+Perl_langinfo8(const int item, utf8ness_t *utf8ness);
+# define PERL_ARGS_ASSERT_PERL_LANGINFO8
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE IV S_invlist_previous_index(SV* const invlist)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_INVLIST_PREVIOUS_INDEX \
- assert(invlist)
#endif
+#if defined(HAS_PIPE)
+PERL_CALLCONV int
+Perl_PerlProc_pipe_cloexec(pTHX_ int *pipefd)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_PERLPROC_PIPE_CLOEXEC \
+ assert(pipefd)
-STATIC void S_invlist_replace_list_destroys_src(pTHX_ SV *dest, SV *src);
-#define PERL_ARGS_ASSERT_INVLIST_REPLACE_LIST_DESTROYS_SRC \
- assert(dest); assert(src)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void S_invlist_set_previous_index(SV* const invlist, const IV index);
-#define PERL_ARGS_ASSERT_INVLIST_SET_PREVIOUS_INDEX \
- assert(invlist)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void S_invlist_trim(SV* invlist);
-#define PERL_ARGS_ASSERT_INVLIST_TRIM \
- assert(invlist)
-#endif
-# endif
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
-PERL_CALLCONV SV* Perl_get_regclass_nonbitmap_data(pTHX_ const regexp *prog, const struct regnode *node, bool doinit, SV **listsvp, SV **lonly_utf8_locale, SV **output_invlist);
-#define PERL_ARGS_ASSERT_GET_REGCLASS_NONBITMAP_DATA \
- assert(node)
-# endif
-#endif
-#if !defined(PERL_IMPLICIT_SYS)
-PERL_CALLCONV I32 Perl_my_pclose(pTHX_ PerlIO* ptr);
-#define PERL_ARGS_ASSERT_MY_PCLOSE
-PERL_CALLCONV PerlIO* Perl_my_popen(pTHX_ const char* cmd, const char* mode);
-#define PERL_ARGS_ASSERT_MY_POPEN \
- assert(cmd); assert(mode)
-#endif
-#if !defined(PERL_IS_MINIPERL)
-# if defined(PERL_IN_PERL_C)
-STATIC SV * S_incpush_if_exists(pTHX_ AV *const av, SV *dir, SV *const stem);
-#define PERL_ARGS_ASSERT_INCPUSH_IF_EXISTS \
- assert(av); assert(dir); assert(stem)
-# endif
-#endif
-#if !defined(PERL_NO_INLINE_FUNCTIONS)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_popblock(pTHX_ PERL_CONTEXT *cx);
-#define PERL_ARGS_ASSERT_CX_POPBLOCK \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_popeval(pTHX_ PERL_CONTEXT *cx);
-#define PERL_ARGS_ASSERT_CX_POPEVAL \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_popformat(pTHX_ PERL_CONTEXT *cx);
-#define PERL_ARGS_ASSERT_CX_POPFORMAT \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_popgiven(pTHX_ PERL_CONTEXT *cx);
-#define PERL_ARGS_ASSERT_CX_POPGIVEN \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_poploop(pTHX_ PERL_CONTEXT *cx);
-#define PERL_ARGS_ASSERT_CX_POPLOOP \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_popsub(pTHX_ PERL_CONTEXT *cx);
-#define PERL_ARGS_ASSERT_CX_POPSUB \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_popsub_args(pTHX_ PERL_CONTEXT *cx);
-#define PERL_ARGS_ASSERT_CX_POPSUB_ARGS \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_popsub_common(pTHX_ PERL_CONTEXT *cx);
-#define PERL_ARGS_ASSERT_CX_POPSUB_COMMON \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_popwhen(pTHX_ PERL_CONTEXT *cx);
-#define PERL_ARGS_ASSERT_CX_POPWHEN \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE PERL_CONTEXT * Perl_cx_pushblock(pTHX_ U8 type, U8 gimme, SV** sp, I32 saveix);
-#define PERL_ARGS_ASSERT_CX_PUSHBLOCK \
- assert(sp)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_pusheval(pTHX_ PERL_CONTEXT *cx, OP *retop, SV *namesv);
-#define PERL_ARGS_ASSERT_CX_PUSHEVAL \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_pushformat(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, GV *gv);
-#define PERL_ARGS_ASSERT_CX_PUSHFORMAT \
- assert(cx); assert(cv)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_pushgiven(pTHX_ PERL_CONTEXT *cx, SV *orig_defsv);
-#define PERL_ARGS_ASSERT_CX_PUSHGIVEN \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_pushloop_for(pTHX_ PERL_CONTEXT *cx, void *itervarp, SV *itersave);
-#define PERL_ARGS_ASSERT_CX_PUSHLOOP_FOR \
- assert(cx); assert(itervarp)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_pushloop_plain(pTHX_ PERL_CONTEXT *cx);
-#define PERL_ARGS_ASSERT_CX_PUSHLOOP_PLAIN \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_pushsub(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, bool hasargs);
-#define PERL_ARGS_ASSERT_CX_PUSHSUB \
- assert(cx); assert(cv)
#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_pushtry(pTHX_ PERL_CONTEXT *cx, OP *retop);
-#define PERL_ARGS_ASSERT_CX_PUSHTRY \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_pushwhen(pTHX_ PERL_CONTEXT *cx);
-#define PERL_ARGS_ASSERT_CX_PUSHWHEN \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void Perl_cx_topblock(pTHX_ PERL_CONTEXT *cx);
-#define PERL_ARGS_ASSERT_CX_TOPBLOCK \
- assert(cx)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE U8 Perl_gimme_V(pTHX);
-#define PERL_ARGS_ASSERT_GIMME_V
-#endif
-#endif
-#if !defined(PERL_NO_UTF16_FILTER)
-# if defined(PERL_IN_TOKE_C)
-STATIC U8* S_add_utf16_textfilter(pTHX_ U8 *const s, bool reversed);
-#define PERL_ARGS_ASSERT_ADD_UTF16_TEXTFILTER \
- assert(s)
-STATIC I32 S_utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen);
-#define PERL_ARGS_ASSERT_UTF16_TEXTFILTER \
- assert(sv)
-# endif
-#endif
-#if !defined(SETUID_SCRIPTS_ARE_SECURE_NOW)
-# if defined(PERL_IN_PERL_C)
-STATIC void S_validate_suid(pTHX_ PerlIO *rsfp);
-#define PERL_ARGS_ASSERT_VALIDATE_SUID \
- assert(rsfp)
-# endif
-#endif
-#if !defined(USE_ITHREADS)
-/* PERL_CALLCONV void CopFILEGV_set(pTHX_ COP * c, GV * gv); */
-#define PERL_ARGS_ASSERT_COPFILEGV_SET
-#endif
-#if !defined(UV_IS_QUAD)
-# if defined(PERL_IN_UTF8_C)
-STATIC int S_is_utf8_cp_above_31_bits(const U8 * const s, const U8 * const e, const bool consider_overlongs)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_IS_UTF8_CP_ABOVE_31_BITS \
- assert(s); assert(e)
-
-# endif
-#endif
-#if !defined(WIN32)
-PERL_CALLCONV bool Perl_do_exec3(pTHX_ const char *incmd, int fd, int do_report);
-#define PERL_ARGS_ASSERT_DO_EXEC3 \
- assert(incmd)
-#endif
-#if 0 /* Not currently used, but may be needed in the future */
-# if defined(PERL_IN_UTF8_C)
-STATIC void S_warn_on_first_deprecated_use(pTHX_ const char * const name, const char * const alternative, const bool use_locale, const char * const file, const unsigned line);
-#define PERL_ARGS_ASSERT_WARN_ON_FIRST_DEPRECATED_USE \
- assert(name); assert(alternative); assert(file)
-# endif
-#endif
-#if defined (HAS_SOCKETPAIR) || (defined (HAS_SOCKET) && defined(SOCK_DGRAM) && defined(AF_INET) && defined(PF_INET))
-PERL_CALLCONV int Perl_PerlSock_socketpair_cloexec(pTHX_ int domain, int type, int protocol, int *pairfd)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PERLSOCK_SOCKETPAIR_CLOEXEC \
- assert(pairfd)
+#if !defined(HAS_RENAME)
+PERL_CALLCONV I32
+Perl_same_dirent(pTHX_ const char *a, const char *b)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_SAME_DIRENT \
+ assert(a); assert(b)
#endif
-#if defined(DEBUGGING)
-PERL_CALLCONV int Perl_get_debug_opts(pTHX_ const char **s, bool givehelp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GET_DEBUG_OPTS \
- assert(s)
-
-PERL_CALLCONV void Perl_hv_assert(pTHX_ HV *hv);
-#define PERL_ARGS_ASSERT_HV_ASSERT \
- assert(hv)
-PERL_CALLCONV void Perl_pad_setsv(pTHX_ PADOFFSET po, SV* sv);
-#define PERL_ARGS_ASSERT_PAD_SETSV \
- assert(sv)
-PERL_CALLCONV SV* Perl_pad_sv(pTHX_ PADOFFSET po);
-#define PERL_ARGS_ASSERT_PAD_SV
-PERL_CALLCONV void Perl_set_padlist(CV * cv, PADLIST * padlist);
-#define PERL_ARGS_ASSERT_SET_PADLIST \
- assert(cv)
-# if defined(PERL_IN_LOCALE_C)
-# if defined(USE_LOCALE)
-STATIC void S_print_bytes_for_locale(pTHX_ const char * const s, const char * const e, const bool is_utf8);
-#define PERL_ARGS_ASSERT_PRINT_BYTES_FOR_LOCALE \
- assert(s); assert(e)
-STATIC void S_print_collxfrm_input_and_return(pTHX_ const char * const s, const char * const e, const STRLEN * const xlen, const bool is_utf8);
-#define PERL_ARGS_ASSERT_PRINT_COLLXFRM_INPUT_AND_RETURN \
- assert(s); assert(e)
-STATIC char * S_setlocale_debug_string(const int category, const char* const locale, const char* const retval)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SETLOCALE_DEBUG_STRING
-
-# endif
-# endif
-# if defined(PERL_IN_PAD_C)
-STATIC void S_cv_dump(pTHX_ const CV *cv, const char *title);
-#define PERL_ARGS_ASSERT_CV_DUMP \
- assert(cv); assert(title)
-# endif
-# if defined(PERL_IN_REGCOMP_C)
-STATIC void S_dump_trie(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 depth);
-#define PERL_ARGS_ASSERT_DUMP_TRIE \
- assert(trie); assert(revcharmap)
-STATIC void S_dump_trie_interim_list(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 next_alloc, U32 depth);
-#define PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_LIST \
- assert(trie); assert(revcharmap)
-STATIC void S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, HV* widecharmap, AV *revcharmap, U32 next_alloc, U32 depth);
-#define PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_TABLE \
- assert(trie); assert(revcharmap)
-STATIC const regnode* S_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV* sv, I32 indent, U32 depth);
-#define PERL_ARGS_ASSERT_DUMPUNTIL \
- assert(r); assert(start); assert(node); assert(sv)
-STATIC bool S_put_charclass_bitmap_innards(pTHX_ SV* sv, char* bitmap, SV* nonbitmap_invlist, SV* only_utf8_locale_invlist, const regnode * const node, const U8 flags, const bool force_as_is_display);
-#define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS \
- assert(sv)
-STATIC SV* S_put_charclass_bitmap_innards_common(pTHX_ SV* invlist, SV* posixes, SV* only_utf8, SV* not_utf8, SV* only_utf8_locale, const bool invert);
-#define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS_COMMON \
- assert(invlist)
-STATIC void S_put_charclass_bitmap_innards_invlist(pTHX_ SV *sv, SV* invlist);
-#define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS_INVLIST \
- assert(sv); assert(invlist)
-STATIC void S_put_code_point(pTHX_ SV* sv, UV c);
-#define PERL_ARGS_ASSERT_PUT_CODE_POINT \
- assert(sv)
-STATIC void S_put_range(pTHX_ SV* sv, UV start, const UV end, const bool allow_literals);
-#define PERL_ARGS_ASSERT_PUT_RANGE \
- assert(sv)
-PERL_CALLCONV int Perl_re_indentf(pTHX_ const char *fmt, U32 depth, ...);
-#define PERL_ARGS_ASSERT_RE_INDENTF \
- assert(fmt)
-STATIC void S_regdump_extflags(pTHX_ const char *lead, const U32 flags);
-#define PERL_ARGS_ASSERT_REGDUMP_EXTFLAGS
-STATIC void S_regdump_intflags(pTHX_ const char *lead, const U32 flags);
-#define PERL_ARGS_ASSERT_REGDUMP_INTFLAGS
-STATIC bool S_regtail_study(pTHX_ RExC_state_t *pRExC_state, regnode_offset p, const regnode_offset val, U32 depth)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_REGTAIL_STUDY \
- assert(pRExC_state); assert(p); assert(val)
-
-# endif
-# if defined(PERL_IN_REGEXEC_C)
-STATIC void S_debug_start_match(pTHX_ const REGEXP *prog, const bool do_utf8, const char *start, const char *end, const char *blurb);
-#define PERL_ARGS_ASSERT_DEBUG_START_MATCH \
- assert(prog); assert(start); assert(end); assert(blurb)
-STATIC void S_dump_exec_pos(pTHX_ const char *locinput, const regnode *scan, const char *loc_regeol, const char *loc_bostr, const char *loc_reg_starttry, const bool do_utf8, const U32 depth);
-#define PERL_ARGS_ASSERT_DUMP_EXEC_POS \
- assert(locinput); assert(scan); assert(loc_regeol); assert(loc_bostr); assert(loc_reg_starttry)
-PERL_CALLCONV int Perl_re_exec_indentf(pTHX_ const char *fmt, U32 depth, ...);
-#define PERL_ARGS_ASSERT_RE_EXEC_INDENTF \
- assert(fmt)
-# endif
-# if defined(PERL_IN_SV_C)
-STATIC void S_del_sv(pTHX_ SV *p);
-#define PERL_ARGS_ASSERT_DEL_SV \
- assert(p)
-# endif
-# if defined(PERL_IN_TOKE_C)
-STATIC void S_printbuf(pTHX_ const char *const fmt, const char *const s)
- __attribute__format__(__printf__,pTHX_1,0);
-#define PERL_ARGS_ASSERT_PRINTBUF \
- assert(fmt); assert(s)
-
-STATIC int S_tokereport(pTHX_ I32 rv, const YYSTYPE* lvalp);
-#define PERL_ARGS_ASSERT_TOKEREPORT \
- assert(lvalp)
-# endif
-#endif
-#if defined(DEBUGGING) && defined(ENABLE_REGEX_SETS_DEBUGGING)
-# if defined(PERL_IN_REGCOMP_C)
-STATIC void S_dump_regex_sets_structures(pTHX_ RExC_state_t *pRExC_state, AV * stack, const IV fence, AV * fence_stack);
-#define PERL_ARGS_ASSERT_DUMP_REGEX_SETS_STRUCTURES \
- assert(pRExC_state); assert(stack); assert(fence_stack)
-# endif
-#endif
-#if defined(DEBUG_LEAKING_SCALARS_FORK_DUMP)
-PERL_CALLCONV void Perl_dump_sv_child(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_DUMP_SV_CHILD \
- assert(sv)
-#endif
-#if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
-PERL_CALLCONV I32 Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp);
-#define PERL_ARGS_ASSERT_DO_IPCCTL \
- assert(mark); assert(sp)
-PERL_CALLCONV I32 Perl_do_ipcget(pTHX_ I32 optype, SV** mark, SV** sp);
-#define PERL_ARGS_ASSERT_DO_IPCGET \
- assert(mark); assert(sp)
-PERL_CALLCONV I32 Perl_do_msgrcv(pTHX_ SV** mark, SV** sp);
-#define PERL_ARGS_ASSERT_DO_MSGRCV \
- assert(mark); assert(sp)
-PERL_CALLCONV I32 Perl_do_msgsnd(pTHX_ SV** mark, SV** sp);
-#define PERL_ARGS_ASSERT_DO_MSGSND \
- assert(mark); assert(sp)
-PERL_CALLCONV I32 Perl_do_semop(pTHX_ SV** mark, SV** sp);
-#define PERL_ARGS_ASSERT_DO_SEMOP \
- assert(mark); assert(sp)
-PERL_CALLCONV I32 Perl_do_shmio(pTHX_ I32 optype, SV** mark, SV** sp);
-#define PERL_ARGS_ASSERT_DO_SHMIO \
- assert(mark); assert(sp)
-#endif
-#if defined(HAS_NL_LANGINFO)
-# if defined(PERL_IN_LOCALE_C)
-STATIC const char* S_my_nl_langinfo(const nl_item item, bool toggle);
-#define PERL_ARGS_ASSERT_MY_NL_LANGINFO
-# endif
-#endif
-#if defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H)
-PERL_CALLCONV const char* Perl_langinfo(const nl_item item);
-#define PERL_ARGS_ASSERT_PERL_LANGINFO
-#endif
-#if defined(HAS_PIPE)
-PERL_CALLCONV int Perl_PerlProc_pipe_cloexec(pTHX_ int *pipefd)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PERLPROC_PIPE_CLOEXEC \
- assert(pipefd)
+#if !defined(HAS_SIGNBIT)
+PERL_CALLCONV int
+Perl_signbit(NV f)
+ __attribute__warn_unused_result__
+ __attribute__pure__;
+# define PERL_ARGS_ASSERT_PERL_SIGNBIT
#endif
#if defined(HAS_SOCKET)
-PERL_CALLCONV int Perl_PerlSock_accept_cloexec(pTHX_ int listenfd, struct sockaddr *addr, Sock_size_t *addrlen)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PERLSOCK_ACCEPT_CLOEXEC
+PERL_CALLCONV int
+Perl_PerlSock_accept_cloexec(pTHX_ int listenfd, struct sockaddr *addr, Sock_size_t *addrlen)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_PERLSOCK_ACCEPT_CLOEXEC
+
+PERL_CALLCONV int
+Perl_PerlSock_socket_cloexec(pTHX_ int domain, int type, int protocol)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_PERLSOCK_SOCKET_CLOEXEC
+
+#endif /* defined(HAS_SOCKET) */
+#if defined(HAS_SOCKETPAIR) || \
+ ( defined(AF_INET) && defined(HAS_SOCKET) && defined(PF_INET) && \
+ defined(SOCK_DGRAM) )
+PERL_CALLCONV int
+Perl_PerlSock_socketpair_cloexec(pTHX_ int domain, int type, int protocol, int *pairfd)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_PERLSOCK_SOCKETPAIR_CLOEXEC \
+ assert(pairfd)
-PERL_CALLCONV int Perl_PerlSock_socket_cloexec(pTHX_ int domain, int type, int protocol)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PERLSOCK_SOCKET_CLOEXEC
+#endif
+#if !defined(HAS_STRLCPY)
+STATIC Size_t
+Perl_my_strlcpy(char *dst, const char *src, Size_t size);
+# define PERL_ARGS_ASSERT_MY_STRLCPY
#endif
#if defined(HAVE_INTERP_INTERN)
-PERL_CALLCONV void Perl_sys_intern_clear(pTHX);
-#define PERL_ARGS_ASSERT_SYS_INTERN_CLEAR
-PERL_CALLCONV void Perl_sys_intern_init(pTHX);
-#define PERL_ARGS_ASSERT_SYS_INTERN_INIT
-# if defined(USE_ITHREADS)
-PERL_CALLCONV void Perl_sys_intern_dup(pTHX_ struct interp_intern* src, struct interp_intern* dst);
-#define PERL_ARGS_ASSERT_SYS_INTERN_DUP \
- assert(src); assert(dst)
-# endif
-#endif
+PERL_CALLCONV void
+Perl_sys_intern_clear(pTHX);
+# define PERL_ARGS_ASSERT_SYS_INTERN_CLEAR
+
+PERL_CALLCONV void
+Perl_sys_intern_init(pTHX);
+# define PERL_ARGS_ASSERT_SYS_INTERN_INIT
+
+# if defined(USE_ITHREADS)
+PERL_CALLCONV void
+Perl_sys_intern_dup(pTHX_ struct interp_intern *src, struct interp_intern *dst);
+# define PERL_ARGS_ASSERT_SYS_INTERN_DUP \
+ assert(src); assert(dst)
+
+# endif
+#endif /* defined(HAVE_INTERP_INTERN) */
+#if defined(_MSC_VER)
+PERL_CALLCONV int
+Perl_magic_regdatum_set(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET \
+ assert(sv); assert(mg)
+
+#else
+PERL_CALLCONV_NO_RET int
+Perl_magic_regdatum_set(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__noreturn__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET \
+ assert(sv); assert(mg)
+
+#endif
+#if defined(MULTIPLICITY)
+PERL_CALLCONV_NO_RET void
+Perl_croak_nocontext(const char *pat, ...)
+ __attribute__noreturn__
+ __attribute__format__null_ok__(__printf__,1,2);
+# define PERL_ARGS_ASSERT_CROAK_NOCONTEXT
+
+PERL_CALLCONV void
+Perl_deb_nocontext(const char *pat, ...)
+ __attribute__format__(__printf__,1,2);
+# define PERL_ARGS_ASSERT_DEB_NOCONTEXT \
+ assert(pat)
+
+PERL_CALLCONV_NO_RET OP *
+Perl_die_nocontext(const char *pat, ...)
+ __attribute__noreturn__
+ __attribute__format__null_ok__(__printf__,1,2);
+# define PERL_ARGS_ASSERT_DIE_NOCONTEXT
+
+PERL_CALLCONV char *
+Perl_form_nocontext(const char *pat, ...)
+ __attribute__format__(__printf__,1,2);
+# define PERL_ARGS_ASSERT_FORM_NOCONTEXT \
+ assert(pat)
+
+PERL_CALLCONV void
+Perl_load_module_nocontext(U32 flags, SV *name, SV *ver, ...);
+# define PERL_ARGS_ASSERT_LOAD_MODULE_NOCONTEXT \
+ assert(name)
+
+PERL_CALLCONV SV *
+Perl_mess_nocontext(const char *pat, ...)
+ __attribute__format__(__printf__,1,2);
+# define PERL_ARGS_ASSERT_MESS_NOCONTEXT \
+ assert(pat)
+
+PERL_CALLCONV void *
+Perl_my_cxt_init(pTHX_ int *indexp, size_t size);
+# define PERL_ARGS_ASSERT_MY_CXT_INIT \
+ assert(indexp)
+
+PERL_CALLCONV SV *
+Perl_newSVpvf_nocontext(const char * const pat, ...)
+ __attribute__format__(__printf__,1,2);
+# define PERL_ARGS_ASSERT_NEWSVPVF_NOCONTEXT \
+ assert(pat)
+
+PERL_CALLCONV void
+Perl_sv_catpvf_mg_nocontext(SV * const sv, const char * const pat, ...)
+ __attribute__format__(__printf__,2,3);
+# define PERL_ARGS_ASSERT_SV_CATPVF_MG_NOCONTEXT \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_sv_catpvf_nocontext(SV * const sv, const char * const pat, ...)
+ __attribute__format__(__printf__,2,3);
+# define PERL_ARGS_ASSERT_SV_CATPVF_NOCONTEXT \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_sv_setpvf_mg_nocontext(SV * const sv, const char * const pat, ...)
+ __attribute__format__(__printf__,2,3);
+# define PERL_ARGS_ASSERT_SV_SETPVF_MG_NOCONTEXT \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_sv_setpvf_nocontext(SV * const sv, const char * const pat, ...)
+ __attribute__format__(__printf__,2,3);
+# define PERL_ARGS_ASSERT_SV_SETPVF_NOCONTEXT \
+ assert(sv); assert(pat)
+
+PERL_CALLCONV void
+Perl_warn_nocontext(const char *pat, ...)
+ __attribute__format__(__printf__,1,2);
+# define PERL_ARGS_ASSERT_WARN_NOCONTEXT \
+ assert(pat)
+
+PERL_CALLCONV void
+Perl_warner_nocontext(U32 err, const char *pat, ...)
+ __attribute__format__(__printf__,2,3);
+# define PERL_ARGS_ASSERT_WARNER_NOCONTEXT \
+ assert(pat)
+
+#endif /* defined(MULTIPLICITY) */
#if defined(MYMALLOC)
-PERL_CALLCONV void Perl_dump_mstats(pTHX_ const char* s);
-#define PERL_ARGS_ASSERT_DUMP_MSTATS \
- assert(s)
-PERL_CALLCONV int Perl_get_mstats(pTHX_ perl_mstats_t *buf, int buflen, int level);
-#define PERL_ARGS_ASSERT_GET_MSTATS \
- assert(buf)
-PERL_CALLCONV MEM_SIZE Perl_malloc_good_size(size_t nbytes)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_MALLOC_GOOD_SIZE
-
-PERL_CALLCONV MEM_SIZE Perl_malloced_size(void *p)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_MALLOCED_SIZE \
- assert(p)
-
-#endif
+PERL_CALLCONV void
+Perl_dump_mstats(pTHX_ const char *s);
+# define PERL_ARGS_ASSERT_DUMP_MSTATS \
+ assert(s)
+
+PERL_CALLCONV int
+Perl_get_mstats(pTHX_ perl_mstats_t *buf, int buflen, int level);
+# define PERL_ARGS_ASSERT_GET_MSTATS \
+ assert(buf)
+
+PERL_CALLCONV MEM_SIZE
+Perl_malloc_good_size(size_t nbytes)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_MALLOC_GOOD_SIZE
+
+PERL_CALLCONV MEM_SIZE
+Perl_malloced_size(void *p)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_MALLOCED_SIZE \
+ assert(p)
+
+#endif /* defined(MYMALLOC) */
+#if !defined(NO_MATHOMS)
+PERL_CALLCONV bool
+Perl_do_aexec(pTHX_ SV *really, SV **mark, SV **sp);
+# define PERL_ARGS_ASSERT_DO_AEXEC \
+ assert(mark); assert(sp)
+
+PERL_CALLCONV bool
+Perl_do_open(pTHX_ GV *gv, const char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp);
+# define PERL_ARGS_ASSERT_DO_OPEN \
+ assert(gv); assert(name)
+
+PERL_CALLCONV GV *
+Perl_gv_AVadd(pTHX_ GV *gv);
+# define PERL_ARGS_ASSERT_GV_AVADD
+
+PERL_CALLCONV GV *
+Perl_gv_HVadd(pTHX_ GV *gv);
+# define PERL_ARGS_ASSERT_GV_HVADD
+
+PERL_CALLCONV GV *
+Perl_gv_IOadd(pTHX_ GV *gv);
+# define PERL_ARGS_ASSERT_GV_IOADD
+
+PERL_CALLCONV void
+Perl_gv_efullname3(pTHX_ SV *sv, const GV *gv, const char *prefix);
+# define PERL_ARGS_ASSERT_GV_EFULLNAME3 \
+ assert(sv); assert(gv)
+
+PERL_CALLCONV GV *
+Perl_gv_fetchmethod(pTHX_ HV *stash, const char *name);
+# define PERL_ARGS_ASSERT_GV_FETCHMETHOD \
+ assert(stash); assert(name)
+
+PERL_CALLCONV void
+Perl_gv_fullname3(pTHX_ SV *sv, const GV *gv, const char *prefix);
+# define PERL_ARGS_ASSERT_GV_FULLNAME3 \
+ assert(sv); assert(gv)
+
+PERL_CALLCONV SV *
+Perl_hv_delete(pTHX_ HV *hv, const char *key, I32 klen, I32 flags);
+# define PERL_ARGS_ASSERT_HV_DELETE \
+ assert(key)
+
+PERL_CALLCONV SV *
+Perl_hv_delete_ent(pTHX_ HV *hv, SV *keysv, I32 flags, U32 hash);
+# define PERL_ARGS_ASSERT_HV_DELETE_ENT \
+ assert(keysv)
+
+PERL_CALLCONV bool
+Perl_hv_exists(pTHX_ HV *hv, const char *key, I32 klen)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_HV_EXISTS \
+ assert(key)
+
+PERL_CALLCONV bool
+Perl_hv_exists_ent(pTHX_ HV *hv, SV *keysv, U32 hash)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_HV_EXISTS_ENT \
+ assert(keysv)
+
+PERL_CALLCONV SV **
+Perl_hv_fetch(pTHX_ HV *hv, const char *key, I32 klen, I32 lval);
+# define PERL_ARGS_ASSERT_HV_FETCH \
+ assert(key)
+
+PERL_CALLCONV HE *
+Perl_hv_fetch_ent(pTHX_ HV *hv, SV *keysv, I32 lval, U32 hash);
+# define PERL_ARGS_ASSERT_HV_FETCH_ENT \
+ assert(keysv)
+
+PERL_CALLCONV HE *
+Perl_hv_iternext(pTHX_ HV *hv)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_HV_ITERNEXT \
+ assert(hv)
+
+PERL_CALLCONV void
+Perl_hv_magic(pTHX_ HV *hv, GV *gv, int how);
+# define PERL_ARGS_ASSERT_HV_MAGIC \
+ assert(hv)
+
+PERL_CALLCONV SV **
+Perl_hv_store(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash);
+# define PERL_ARGS_ASSERT_HV_STORE
+
+PERL_CALLCONV HE *
+Perl_hv_store_ent(pTHX_ HV *hv, SV *key, SV *val, U32 hash);
+# define PERL_ARGS_ASSERT_HV_STORE_ENT
+
+PERL_CALLCONV SV **
+Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen, SV *val, U32 hash, int flags);
+# define PERL_ARGS_ASSERT_HV_STORE_FLAGS
+
+PERL_CALLCONV char *
+Perl_instr(const char *big, const char *little)
+ __attribute__warn_unused_result__
+ __attribute__pure__;
+# define PERL_ARGS_ASSERT_INSTR \
+ assert(big); assert(little)
+
+PERL_CALLCONV STRLEN
+Perl_is_utf8_char_buf(const U8 *buf, const U8 *buf_end);
+# define PERL_ARGS_ASSERT_IS_UTF8_CHAR_BUF \
+ assert(buf); assert(buf_end)
+
+PERL_CALLCONV bool
+Perl_is_utf8_string_loc(const U8 *s, const STRLEN len, const U8 **ep);
+# define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOC \
+ assert(s); assert(ep)
+
+PERL_CALLCONV AV *
+Perl_newAV(pTHX)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_NEWAV
+
+PERL_CALLCONV HV *
+Perl_newHV(pTHX)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_NEWHV
+
+PERL_CALLCONV IO *
+Perl_newIO(pTHX)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_NEWIO
+
+PERL_CALLCONV CV *
+Perl_newSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *block);
+# define PERL_ARGS_ASSERT_NEWSUB
+
+PERL_CALLCONV SV *
+Perl_newSVsv(pTHX_ SV * const old)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_NEWSVSV
+
+PERL_CALLCONV void
+Perl_save_freeop(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_SAVE_FREEOP
+
+PERL_CALLCONV void
+Perl_save_freepv(pTHX_ char *pv);
+# define PERL_ARGS_ASSERT_SAVE_FREEPV
+
+PERL_CALLCONV void
+Perl_save_freesv(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SAVE_FREESV
+
+PERL_CALLCONV void
+Perl_save_mortalizesv(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SAVE_MORTALIZESV \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_save_op(pTHX);
+# define PERL_ARGS_ASSERT_SAVE_OP
+
+PERL_CALLCONV bool
+Perl_sv_2bool(pTHX_ SV * const sv);
+# define PERL_ARGS_ASSERT_SV_2BOOL \
+ assert(sv)
+
+PERL_CALLCONV IV
+Perl_sv_2iv(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SV_2IV \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_2pv(pTHX_ SV *sv, STRLEN *lp);
+# define PERL_ARGS_ASSERT_SV_2PV \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_2pv_nolen(pTHX_ SV *sv)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SV_2PV_NOLEN \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_2pvbyte(pTHX_ SV *sv, STRLEN * const lp);
+# define PERL_ARGS_ASSERT_SV_2PVBYTE \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_2pvbyte_nolen(pTHX_ SV *sv)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SV_2PVBYTE_NOLEN \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_2pvutf8(pTHX_ SV *sv, STRLEN * const lp);
+# define PERL_ARGS_ASSERT_SV_2PVUTF8 \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_2pvutf8_nolen(pTHX_ SV *sv)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SV_2PVUTF8_NOLEN \
+ assert(sv)
+
+PERL_CALLCONV UV
+Perl_sv_2uv(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SV_2UV \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_catpvn(pTHX_ SV *dsv, const char *sstr, STRLEN len);
+# define PERL_ARGS_ASSERT_SV_CATPVN \
+ assert(dsv); assert(sstr)
+
+PERL_CALLCONV void
+Perl_sv_catpvn_mg(pTHX_ SV *dsv, const char *sstr, STRLEN len);
+# define PERL_ARGS_ASSERT_SV_CATPVN_MG \
+ assert(dsv); assert(sstr)
+
+PERL_CALLCONV void
+Perl_sv_catsv(pTHX_ SV *dsv, SV *sstr);
+# define PERL_ARGS_ASSERT_SV_CATSV \
+ assert(dsv)
+
+PERL_CALLCONV void
+Perl_sv_catsv_mg(pTHX_ SV *dsv, SV *sstr);
+# define PERL_ARGS_ASSERT_SV_CATSV_MG \
+ assert(dsv)
+
+PERL_CALLCONV void
+Perl_sv_copypv(pTHX_ SV * const dsv, SV * const ssv);
+# define PERL_ARGS_ASSERT_SV_COPYPV \
+ assert(dsv); assert(ssv)
+
+PERL_CALLCONV I32
+Perl_sv_eq(pTHX_ SV *sv1, SV *sv2);
+# define PERL_ARGS_ASSERT_SV_EQ
+
+PERL_CALLCONV void
+Perl_sv_force_normal(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SV_FORCE_NORMAL \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_insert(pTHX_ SV * const bigstr, const STRLEN offset, const STRLEN len, const char * const little, const STRLEN littlelen);
+# define PERL_ARGS_ASSERT_SV_INSERT \
+ assert(bigstr); assert(little)
+
+PERL_CALLCONV SV *
+Perl_sv_mortalcopy(pTHX_ SV * const oldsv)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SV_MORTALCOPY
+
+PERL_CALLCONV void
+Perl_sv_nolocking(pTHX_ SV *sv)
+ __attribute__deprecated__;
+# define PERL_ARGS_ASSERT_SV_NOLOCKING
+
+PERL_CALLCONV void
+Perl_sv_nounlocking(pTHX_ SV *sv)
+ __attribute__deprecated__;
+# define PERL_ARGS_ASSERT_SV_NOUNLOCKING
+
+PERL_CALLCONV char *
+Perl_sv_pv(pTHX_ SV *sv)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SV_PV \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_pvbyte(pTHX_ SV *sv)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SV_PVBYTE \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_pvn_force(pTHX_ SV *sv, STRLEN *lp);
+# define PERL_ARGS_ASSERT_SV_PVN_FORCE \
+ assert(sv)
+
+PERL_CALLCONV char *
+Perl_sv_pvutf8(pTHX_ SV *sv)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SV_PVUTF8 \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_setsv(pTHX_ SV *dsv, SV *ssv);
+# define PERL_ARGS_ASSERT_SV_SETSV \
+ assert(dsv)
+
+PERL_CALLCONV void
+Perl_sv_taint(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SV_TAINT \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_unref(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SV_UNREF \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_usepvn(pTHX_ SV *sv, char *ptr, STRLEN len);
+# define PERL_ARGS_ASSERT_SV_USEPVN \
+ assert(sv)
+
+PERL_CALLCONV void
+Perl_sv_usepvn_mg(pTHX_ SV *sv, char *ptr, STRLEN len);
+# define PERL_ARGS_ASSERT_SV_USEPVN_MG \
+ assert(sv)
+
+PERL_CALLCONV bool
+Perl_sv_utf8_downgrade(pTHX_ SV * const sv, const bool fail_ok);
+# define PERL_ARGS_ASSERT_SV_UTF8_DOWNGRADE \
+ assert(sv)
+
+PERL_CALLCONV STRLEN
+Perl_sv_utf8_upgrade(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SV_UTF8_UPGRADE \
+ assert(sv)
+
+PERL_CALLCONV UV
+Perl_utf8_to_uvchr(pTHX_ const U8 *s, STRLEN *retlen)
+ __attribute__deprecated__;
+# define PERL_ARGS_ASSERT_UTF8_TO_UVCHR \
+ assert(s)
+
+PERL_CALLCONV UV
+Perl_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen)
+ __attribute__deprecated__;
+# define PERL_ARGS_ASSERT_UTF8_TO_UVUNI \
+ assert(s)
+
+PERL_CALLCONV UV
+Perl_utf8n_to_uvuni(pTHX_ const U8 *s, STRLEN curlen, STRLEN *retlen, U32 flags)
+ __attribute__deprecated__;
+# define PERL_ARGS_ASSERT_UTF8N_TO_UVUNI \
+ assert(s)
+
+# if defined(PERL_DONT_CREATE_GVSV)
+PERL_CALLCONV GV *
+Perl_gv_SVadd(pTHX_ GV *gv);
+# define PERL_ARGS_ASSERT_GV_SVADD
+
+# endif
+# if defined(PERL_IN_MATHOMS_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_PERLY_C) || defined(PERL_IN_TOKE_C)
+PERL_CALLCONV OP *
+Perl_ref(pTHX_ OP *o, I32 type);
+# define PERL_ARGS_ASSERT_REF
+
+# endif
+# if defined(USE_LOCALE_COLLATE)
+PERL_CALLCONV char *
+Perl_sv_collxfrm(pTHX_ SV * const sv, STRLEN * const nxp);
+# define PERL_ARGS_ASSERT_SV_COLLXFRM \
+ assert(sv); assert(nxp)
+
+# endif
+#endif /* !defined(NO_MATHOMS) */
#if defined(PERL_ANY_COW)
-PERL_CALLCONV SV* Perl_sv_setsv_cow(pTHX_ SV* dsv, SV* ssv);
-#define PERL_ARGS_ASSERT_SV_SETSV_COW \
- assert(ssv)
-#endif
-#if defined(PERL_CORE)
-PERL_CALLCONV void Perl_opslab_force_free(pTHX_ OPSLAB *slab);
-#define PERL_ARGS_ASSERT_OPSLAB_FORCE_FREE \
- assert(slab)
-PERL_CALLCONV void Perl_opslab_free(pTHX_ OPSLAB *slab);
-#define PERL_ARGS_ASSERT_OPSLAB_FREE \
- assert(slab)
-PERL_CALLCONV void Perl_opslab_free_nopad(pTHX_ OPSLAB *slab);
-#define PERL_ARGS_ASSERT_OPSLAB_FREE_NOPAD \
- assert(slab)
-PERL_CALLCONV void Perl_parser_free_nexttoke_ops(pTHX_ yy_parser *parser, OPSLAB *slab);
-#define PERL_ARGS_ASSERT_PARSER_FREE_NEXTTOKE_OPS \
- assert(parser); assert(slab)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool S_should_warn_nl(const char *pv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SHOULD_WARN_NL \
- assert(pv)
-#endif
-
-# if defined(PERL_DEBUG_READONLY_OPS)
-PERL_CALLCONV void Perl_Slab_to_ro(pTHX_ OPSLAB *slab);
-#define PERL_ARGS_ASSERT_SLAB_TO_RO \
- assert(slab)
-PERL_CALLCONV void Perl_Slab_to_rw(pTHX_ OPSLAB *const slab);
-#define PERL_ARGS_ASSERT_SLAB_TO_RW \
- assert(slab)
-# endif
-#endif
-#if defined(PERL_CORE) || defined (PERL_EXT)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool Perl_is_utf8_non_invariant_string(const U8* const s, STRLEN len)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_IS_UTF8_NON_INVARIANT_STRING \
- assert(s)
-#endif
+PERL_CALLCONV SV *
+Perl_sv_setsv_cow(pTHX_ SV *dsv, SV *ssv);
+# define PERL_ARGS_ASSERT_SV_SETSV_COW \
+ assert(ssv)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE STRLEN S_sv_or_pv_pos_u2b(pTHX_ SV *sv, const char *pv, STRLEN pos, STRLEN *lenp);
-#define PERL_ARGS_ASSERT_SV_OR_PV_POS_U2B \
- assert(sv); assert(pv)
-#endif
#endif
+#if defined(PERL_CORE)
+PERL_CALLCONV void
+Perl_opslab_force_free(pTHX_ OPSLAB *slab)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_OPSLAB_FORCE_FREE \
+ assert(slab)
+
+PERL_CALLCONV void
+Perl_opslab_free(pTHX_ OPSLAB *slab)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_OPSLAB_FREE \
+ assert(slab)
+
+PERL_CALLCONV void
+Perl_opslab_free_nopad(pTHX_ OPSLAB *slab)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_OPSLAB_FREE_NOPAD \
+ assert(slab)
+
+PERL_CALLCONV void
+Perl_parser_free_nexttoke_ops(pTHX_ yy_parser *parser, OPSLAB *slab)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_PARSER_FREE_NEXTTOKE_OPS \
+ assert(parser); assert(slab)
+
+# if defined(PERL_DEBUG_READONLY_OPS)
+PERL_CALLCONV void
+Perl_Slab_to_ro(pTHX_ OPSLAB *slab);
+# define PERL_ARGS_ASSERT_SLAB_TO_RO \
+ assert(slab)
+
+PERL_CALLCONV void
+Perl_Slab_to_rw(pTHX_ OPSLAB * const slab);
+# define PERL_ARGS_ASSERT_SLAB_TO_RW \
+ assert(slab)
+
+# endif /* defined(PERL_DEBUG_READONLY_OPS) */
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE bool
+S_should_warn_nl(const char *pv)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SHOULD_WARN_NL \
+ assert(pv)
+
+# endif
+#endif /* defined(PERL_CORE) */
#if defined(PERL_CORE) || defined(PERL_EXT)
-PERL_CALLCONV bool Perl_isSCRIPT_RUN(pTHX_ const U8 *s, const U8 *send, const bool utf8_target)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ISSCRIPT_RUN \
- assert(s); assert(send)
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE Size_t S_variant_under_utf8_count(const U8* const s, const U8* const e)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_VARIANT_UNDER_UTF8_COUNT \
- assert(s); assert(e)
-#endif
-
-#endif
-#if defined(PERL_CR_FILTER)
-# if defined(PERL_IN_TOKE_C)
-STATIC I32 S_cr_textfilter(pTHX_ int idx, SV *sv, int maxlen);
-#define PERL_ARGS_ASSERT_CR_TEXTFILTER
-STATIC void S_strip_return(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_STRIP_RETURN \
- assert(sv)
-# endif
-#endif
+PERL_CALLCONV bool
+Perl_isSCRIPT_RUN(pTHX_ const U8 *s, const U8 *send, const bool utf8_target)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ISSCRIPT_RUN \
+ assert(s); assert(send)
+
+#endif /* defined(PERL_CORE) || defined(PERL_EXT) */
+#if defined(PERL_CORE) || defined(PERL_USE_VOLATILE_API)
+PERL_CALLCONV void
+Perl_finalize_optree(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_FINALIZE_OPTREE \
+ assert(o)
+
+PERL_CALLCONV void
+Perl_optimize_optree(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_OPTIMIZE_OPTREE \
+ assert(o)
+
+#endif /* defined(PERL_CORE) || defined(PERL_USE_VOLATILE_API) */
#if defined(PERL_DEBUG_READONLY_COW)
-PERL_CALLCONV void Perl_sv_buf_to_ro(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_SV_BUF_TO_RO \
- assert(sv)
-# if defined(PERL_IN_SV_C)
-STATIC void S_sv_buf_to_rw(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_SV_BUF_TO_RW \
- assert(sv)
-# endif
-#endif
-#if defined(PERL_DEBUG_READONLY_OPS)
-PERL_CALLCONV PADOFFSET Perl_op_refcnt_dec(pTHX_ OP *o);
-#define PERL_ARGS_ASSERT_OP_REFCNT_DEC \
- assert(o)
-PERL_CALLCONV OP * Perl_op_refcnt_inc(pTHX_ OP *o);
-#define PERL_ARGS_ASSERT_OP_REFCNT_INC
-#endif
-#if defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION)
-PERL_CALLCONV bool Perl_do_exec(pTHX_ const char* cmd);
-#define PERL_ARGS_ASSERT_DO_EXEC \
- assert(cmd)
-#endif
-#if defined(PERL_DONT_CREATE_GVSV)
-#ifndef NO_MATHOMS
-PERL_CALLCONV GV* Perl_gv_SVadd(pTHX_ GV *gv);
-#define PERL_ARGS_ASSERT_GV_SVADD
-#endif
-#endif
-#if defined(PERL_IMPLICIT_CONTEXT)
-PERL_CALLCONV_NO_RET void Perl_croak_nocontext(const char* pat, ...)
- __attribute__noreturn__
- __attribute__format__null_ok__(__printf__,1,2);
-#define PERL_ARGS_ASSERT_CROAK_NOCONTEXT
-
-PERL_CALLCONV void Perl_deb_nocontext(const char* pat, ...)
- __attribute__format__(__printf__,1,2);
-#define PERL_ARGS_ASSERT_DEB_NOCONTEXT \
- assert(pat)
-
-PERL_CALLCONV_NO_RET OP* Perl_die_nocontext(const char* pat, ...)
- __attribute__noreturn__
- __attribute__format__null_ok__(__printf__,1,2);
-#define PERL_ARGS_ASSERT_DIE_NOCONTEXT
-
-PERL_CALLCONV char* Perl_form_nocontext(const char* pat, ...)
- __attribute__format__(__printf__,1,2);
-#define PERL_ARGS_ASSERT_FORM_NOCONTEXT \
- assert(pat)
-
-#ifndef NO_MATHOMS
-PERL_CALLCONV int Perl_fprintf_nocontext(PerlIO *stream, const char *format, ...)
- __attribute__deprecated__
- __attribute__format__(__printf__,2,3);
-#define PERL_ARGS_ASSERT_FPRINTF_NOCONTEXT \
- assert(stream); assert(format)
-#endif
+PERL_CALLCONV void
+Perl_sv_buf_to_ro(pTHX_ SV *sv)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_SV_BUF_TO_RO \
+ assert(sv)
-PERL_CALLCONV void Perl_load_module_nocontext(U32 flags, SV* name, SV* ver, ...);
-#define PERL_ARGS_ASSERT_LOAD_MODULE_NOCONTEXT \
- assert(name)
-PERL_CALLCONV SV* Perl_mess_nocontext(const char* pat, ...)
- __attribute__format__(__printf__,1,2);
-#define PERL_ARGS_ASSERT_MESS_NOCONTEXT \
- assert(pat)
-
-PERL_CALLCONV void* Perl_my_cxt_init(pTHX_ int *indexp, size_t size);
-#define PERL_ARGS_ASSERT_MY_CXT_INIT \
- assert(indexp)
-PERL_CALLCONV SV* Perl_newSVpvf_nocontext(const char *const pat, ...)
- __attribute__format__(__printf__,1,2);
-#define PERL_ARGS_ASSERT_NEWSVPVF_NOCONTEXT \
- assert(pat)
-
-#ifndef NO_MATHOMS
-PERL_CALLCONV int Perl_printf_nocontext(const char *format, ...)
- __attribute__deprecated__
- __attribute__format__(__printf__,1,2);
-#define PERL_ARGS_ASSERT_PRINTF_NOCONTEXT \
- assert(format)
#endif
+#if defined(PERL_DEBUG_READONLY_OPS)
+PERL_CALLCONV PADOFFSET
+Perl_op_refcnt_dec(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_OP_REFCNT_DEC \
+ assert(o)
-PERL_CALLCONV void Perl_sv_catpvf_mg_nocontext(SV *const sv, const char *const pat, ...)
- __attribute__format__(__printf__,2,3);
-#define PERL_ARGS_ASSERT_SV_CATPVF_MG_NOCONTEXT \
- assert(sv); assert(pat)
-
-PERL_CALLCONV void Perl_sv_catpvf_nocontext(SV *const sv, const char *const pat, ...)
- __attribute__format__(__printf__,2,3);
-#define PERL_ARGS_ASSERT_SV_CATPVF_NOCONTEXT \
- assert(sv); assert(pat)
-
-PERL_CALLCONV void Perl_sv_setpvf_mg_nocontext(SV *const sv, const char *const pat, ...)
- __attribute__format__(__printf__,2,3);
-#define PERL_ARGS_ASSERT_SV_SETPVF_MG_NOCONTEXT \
- assert(sv); assert(pat)
-
-PERL_CALLCONV void Perl_sv_setpvf_nocontext(SV *const sv, const char *const pat, ...)
- __attribute__format__(__printf__,2,3);
-#define PERL_ARGS_ASSERT_SV_SETPVF_NOCONTEXT \
- assert(sv); assert(pat)
+PERL_CALLCONV OP *
+Perl_op_refcnt_inc(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_OP_REFCNT_INC
-PERL_CALLCONV void Perl_warn_nocontext(const char* pat, ...)
- __attribute__format__(__printf__,1,2);
-#define PERL_ARGS_ASSERT_WARN_NOCONTEXT \
- assert(pat)
+#endif /* defined(PERL_DEBUG_READONLY_OPS) */
+#if defined(PERL_DEFAULT_DO_EXEC3_IMPLEMENTATION)
+PERL_CALLCONV bool
+Perl_do_exec(pTHX_ const char *cmd)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_DO_EXEC \
+ assert(cmd)
-PERL_CALLCONV void Perl_warner_nocontext(U32 err, const char* pat, ...)
- __attribute__format__(__printf__,2,3);
-#define PERL_ARGS_ASSERT_WARNER_NOCONTEXT \
- assert(pat)
+#else
+PERL_CALLCONV bool
+Perl_do_exec(pTHX_ const char *cmd)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_DO_EXEC \
+ assert(cmd)
#endif
#if defined(PERL_IMPLICIT_SYS)
-PERL_CALLCONV PerlInterpreter* perl_alloc_using(struct IPerlMem *ipM, struct IPerlMem *ipMS, struct IPerlMem *ipMP, struct IPerlEnv *ipE, struct IPerlStdIO *ipStd, struct IPerlLIO *ipLIO, struct IPerlDir *ipD, struct IPerlSock *ipS, struct IPerlProc *ipP);
-#define PERL_ARGS_ASSERT_PERL_ALLOC_USING \
- assert(ipM); assert(ipMS); assert(ipMP); assert(ipE); assert(ipStd); assert(ipLIO); assert(ipD); assert(ipS); assert(ipP)
-# if defined(USE_ITHREADS)
-PERL_CALLCONV PerlInterpreter* perl_clone_using(PerlInterpreter *proto_perl, UV flags, struct IPerlMem* ipM, struct IPerlMem* ipMS, struct IPerlMem* ipMP, struct IPerlEnv* ipE, struct IPerlStdIO* ipStd, struct IPerlLIO* ipLIO, struct IPerlDir* ipD, struct IPerlSock* ipS, struct IPerlProc* ipP);
-#define PERL_ARGS_ASSERT_PERL_CLONE_USING \
- assert(proto_perl); assert(ipM); assert(ipMS); assert(ipMP); assert(ipE); assert(ipStd); assert(ipLIO); assert(ipD); assert(ipS); assert(ipP)
-# endif
-#endif
+PERL_CALLCONV PerlInterpreter *
+perl_alloc_using(struct IPerlMem *ipM, struct IPerlMem *ipMS, struct IPerlMem *ipMP, struct IPerlEnv *ipE, struct IPerlStdIO *ipStd, struct IPerlLIO *ipLIO, struct IPerlDir *ipD, struct IPerlSock *ipS, struct IPerlProc *ipP);
+# define PERL_ARGS_ASSERT_PERL_ALLOC_USING \
+ assert(ipM); assert(ipMS); assert(ipMP); assert(ipE); assert(ipStd); \
+ assert(ipLIO); assert(ipD); assert(ipS); assert(ipP)
+
+# if defined(USE_ITHREADS)
+PERL_CALLCONV PerlInterpreter *
+perl_clone_using(PerlInterpreter *proto_perl, UV flags, struct IPerlMem *ipM, struct IPerlMem *ipMS, struct IPerlMem *ipMP, struct IPerlEnv *ipE, struct IPerlStdIO *ipStd, struct IPerlLIO *ipLIO, struct IPerlDir *ipD, struct IPerlSock *ipS, struct IPerlProc *ipP);
+# define PERL_ARGS_ASSERT_PERL_CLONE_USING \
+ assert(proto_perl); assert(ipM); assert(ipMS); assert(ipMP); assert(ipE); \
+ assert(ipStd); assert(ipLIO); assert(ipD); assert(ipS); assert(ipP)
+
+# endif
+#else /* if !defined(PERL_IMPLICIT_SYS) */
+PERL_CALLCONV I32
+Perl_my_pclose(pTHX_ PerlIO *ptr);
+# define PERL_ARGS_ASSERT_MY_PCLOSE
+
+PERL_CALLCONV PerlIO *
+Perl_my_popen(pTHX_ const char *cmd, const char *mode);
+# define PERL_ARGS_ASSERT_MY_POPEN \
+ assert(cmd); assert(mode)
+
+#endif /* !defined(PERL_IMPLICIT_SYS) */
#if defined(PERL_IN_AV_C)
-STATIC MAGIC* S_get_aux_mg(pTHX_ AV *av);
-#define PERL_ARGS_ASSERT_GET_AUX_MG \
- assert(av)
-#endif
+STATIC MAGIC *
+S_get_aux_mg(pTHX_ AV *av);
+# define PERL_ARGS_ASSERT_GET_AUX_MG \
+ assert(av)
+
+#endif
+#if defined(PERL_IN_CLASS_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_PAD_C) || defined(PERL_IN_PERLY_C) || \
+ defined(PERL_IN_TOKE_C)
+PERL_CALLCONV void
+Perl_class_add_ADJUST(pTHX_ HV *stash, CV *cv);
+# define PERL_ARGS_ASSERT_CLASS_ADD_ADJUST \
+ assert(stash); assert(cv)
+
+PERL_CALLCONV void
+Perl_class_add_field(pTHX_ HV *stash, PADNAME *pn);
+# define PERL_ARGS_ASSERT_CLASS_ADD_FIELD \
+ assert(stash); assert(pn)
+
+PERL_CALLCONV void
+Perl_class_apply_attributes(pTHX_ HV *stash, OP *attrlist);
+# define PERL_ARGS_ASSERT_CLASS_APPLY_ATTRIBUTES \
+ assert(stash)
+
+PERL_CALLCONV void
+Perl_class_apply_field_attributes(pTHX_ PADNAME *pn, OP *attrlist);
+# define PERL_ARGS_ASSERT_CLASS_APPLY_FIELD_ATTRIBUTES \
+ assert(pn)
+
+PERL_CALLCONV void
+Perl_class_prepare_initfield_parse(pTHX);
+# define PERL_ARGS_ASSERT_CLASS_PREPARE_INITFIELD_PARSE
+
+PERL_CALLCONV void
+Perl_class_prepare_method_parse(pTHX_ CV *cv);
+# define PERL_ARGS_ASSERT_CLASS_PREPARE_METHOD_PARSE \
+ assert(cv)
+
+PERL_CALLCONV void
+Perl_class_seal_stash(pTHX_ HV *stash);
+# define PERL_ARGS_ASSERT_CLASS_SEAL_STASH \
+ assert(stash)
+
+PERL_CALLCONV void
+Perl_class_set_field_defop(pTHX_ PADNAME *pn, OPCODE defmode, OP *defop);
+# define PERL_ARGS_ASSERT_CLASS_SET_FIELD_DEFOP \
+ assert(pn); assert(defop)
+
+PERL_CALLCONV void
+Perl_class_setup_stash(pTHX_ HV *stash);
+# define PERL_ARGS_ASSERT_CLASS_SETUP_STASH \
+ assert(stash)
+
+PERL_CALLCONV OP *
+Perl_class_wrap_method_body(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_CLASS_WRAP_METHOD_BODY
+
+PERL_CALLCONV void
+Perl_croak_kw_unless_class(pTHX_ const char *kw);
+# define PERL_ARGS_ASSERT_CROAK_KW_UNLESS_CLASS \
+ assert(kw)
+
+#endif /* defined(PERL_IN_CLASS_C) || defined(PERL_IN_OP_C) ||
+ defined(PERL_IN_PAD_C) || defined(PERL_IN_PERLY_C) ||
+ defined(PERL_IN_TOKE_C) */
#if defined(PERL_IN_DEB_C)
-STATIC void S_deb_stack_n(pTHX_ SV** stack_base, I32 stack_min, I32 stack_max, I32 mark_min, I32 mark_max);
-#define PERL_ARGS_ASSERT_DEB_STACK_N \
- assert(stack_base)
+STATIC void
+S_deb_stack_n(pTHX_ SV **stack_base, I32 stack_min, I32 stack_max, I32 mark_min, I32 mark_max);
+# define PERL_ARGS_ASSERT_DEB_STACK_N \
+ assert(stack_base)
+
#endif
#if defined(PERL_IN_DOIO_C)
-STATIC bool S_argvout_final(pTHX_ MAGIC *mg, IO *io, bool not_implicit);
-#define PERL_ARGS_ASSERT_ARGVOUT_FINAL \
- assert(mg); assert(io)
-STATIC void S_exec_failed(pTHX_ const char *cmd, int fd, int do_report);
-#define PERL_ARGS_ASSERT_EXEC_FAILED \
- assert(cmd)
-STATIC bool S_ingroup(pTHX_ Gid_t testgid, bool effective)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_INGROUP
-
-STATIC bool S_openn_cleanup(pTHX_ GV *gv, IO *io, PerlIO *fp, char *mode, const char *oname, PerlIO *saveifp, PerlIO *saveofp, int savefd, char savetype, int writing, bool was_fdopen, const char *type, Stat_t *statbufp);
-#define PERL_ARGS_ASSERT_OPENN_CLEANUP \
- assert(gv); assert(io); assert(mode); assert(oname)
-STATIC IO * S_openn_setup(pTHX_ GV *gv, char *mode, PerlIO **saveifp, PerlIO **saveofp, int *savefd, char *savetype);
-#define PERL_ARGS_ASSERT_OPENN_SETUP \
- assert(gv); assert(mode); assert(saveifp); assert(saveofp); assert(savefd); assert(savetype)
-#endif
+STATIC bool
+S_argvout_final(pTHX_ MAGIC *mg, IO *io, bool is_explicit);
+# define PERL_ARGS_ASSERT_ARGVOUT_FINAL \
+ assert(mg); assert(io)
+
+STATIC void
+S_exec_failed(pTHX_ const char *cmd, int fd, int do_report);
+# define PERL_ARGS_ASSERT_EXEC_FAILED \
+ assert(cmd)
+
+STATIC bool
+S_ingroup(pTHX_ Gid_t testgid, bool effective)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_INGROUP
+
+STATIC bool
+S_openn_cleanup(pTHX_ GV *gv, IO *io, PerlIO *fp, char *mode, const char *oname, PerlIO *saveifp, PerlIO *saveofp, int savefd, char savetype, int writing, bool was_fdopen, const char *type, Stat_t *statbufp);
+# define PERL_ARGS_ASSERT_OPENN_CLEANUP \
+ assert(gv); assert(io); assert(mode); assert(oname)
+
+STATIC IO *
+S_openn_setup(pTHX_ GV *gv, char *mode, PerlIO **saveifp, PerlIO **saveofp, int *savefd, char *savetype);
+# define PERL_ARGS_ASSERT_OPENN_SETUP \
+ assert(gv); assert(mode); assert(saveifp); assert(saveofp); assert(savefd); \
+ assert(savetype)
+
+#endif /* defined(PERL_IN_DOIO_C) */
#if defined(PERL_IN_DOOP_C)
-STATIC Size_t S_do_trans_complex(pTHX_ SV * const sv, const OPtrans_map * const tbl)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DO_TRANS_COMPLEX \
- assert(sv); assert(tbl)
-
-STATIC Size_t S_do_trans_count(pTHX_ SV * const sv, const OPtrans_map * const tbl)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DO_TRANS_COUNT \
- assert(sv); assert(tbl)
-
-STATIC Size_t S_do_trans_count_invmap(pTHX_ SV * const sv, AV * const map)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DO_TRANS_COUNT_INVMAP \
- assert(sv); assert(map)
-
-STATIC Size_t S_do_trans_invmap(pTHX_ SV * const sv, AV * const map)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DO_TRANS_INVMAP \
- assert(sv); assert(map)
-
-STATIC Size_t S_do_trans_simple(pTHX_ SV * const sv, const OPtrans_map * const tbl)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DO_TRANS_SIMPLE \
- assert(sv); assert(tbl)
+STATIC Size_t
+S_do_trans_complex(pTHX_ SV * const sv, const OPtrans_map * const tbl)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DO_TRANS_COMPLEX \
+ assert(sv); assert(tbl)
+
+STATIC Size_t
+S_do_trans_count(pTHX_ SV * const sv, const OPtrans_map * const tbl)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DO_TRANS_COUNT \
+ assert(sv); assert(tbl)
+
+STATIC Size_t
+S_do_trans_count_invmap(pTHX_ SV * const sv, AV * const map)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DO_TRANS_COUNT_INVMAP \
+ assert(sv); assert(map)
+
+STATIC Size_t
+S_do_trans_invmap(pTHX_ SV * const sv, AV * const map)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DO_TRANS_INVMAP \
+ assert(sv); assert(map)
+
+STATIC Size_t
+S_do_trans_simple(pTHX_ SV * const sv, const OPtrans_map * const tbl)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DO_TRANS_SIMPLE \
+ assert(sv); assert(tbl)
+
+#endif /* defined(PERL_IN_DOOP_C) */
+#if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_ANY) || \
+ defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) || \
+ defined(PERL_IN_UTF8_C)
+
+PERL_CALLCONV SSize_t
+Perl__invlist_search(SV * const invlist, const UV cp)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT__INVLIST_SEARCH \
+ assert(invlist)
+
+#endif /* defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) ||
+ defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_ANY) ||
+ defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) ||
+ defined(PERL_IN_UTF8_C) */
+#if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_REGCOMP_ANY)
+
+#endif
+#if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_UTF8_C)
+PERL_CALLCONV SV *
+Perl__add_range_to_invlist(pTHX_ SV *invlist, UV start, UV end)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT__ADD_RANGE_TO_INVLIST
+
+/* PERL_CALLCONV void
+_invlist_intersection(pTHX_ SV * const a, SV * const b, SV **i); */
+
+PERL_CALLCONV void
+Perl__invlist_intersection_maybe_complement_2nd(pTHX_ SV * const a, SV * const b, const bool complement_b, SV **i);
+# define PERL_ARGS_ASSERT__INVLIST_INTERSECTION_MAYBE_COMPLEMENT_2ND \
+ assert(b); assert(i)
+
+PERL_CALLCONV void
+Perl__invlist_invert(pTHX_ SV * const invlist);
+# define PERL_ARGS_ASSERT__INVLIST_INVERT \
+ assert(invlist)
+
+/* PERL_CALLCONV void
+_invlist_subtract(pTHX_ SV * const a, SV * const b, SV **result); */
+
+/* PERL_CALLCONV void
+_invlist_union(pTHX_ SV * const a, SV * const b, SV **output); */
+
+PERL_CALLCONV void
+Perl__invlist_union_maybe_complement_2nd(pTHX_ SV * const a, SV * const b, const bool complement_b, SV **output);
+# define PERL_ARGS_ASSERT__INVLIST_UNION_MAYBE_COMPLEMENT_2ND \
+ assert(b); assert(output)
+
+PERL_CALLCONV SV *
+Perl__new_invlist(pTHX_ IV initial_size)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT__NEW_INVLIST
+
+PERL_CALLCONV SV *
+Perl__setup_canned_invlist(pTHX_ const STRLEN size, const UV element0, UV **other_elements_ptr)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT__SETUP_CANNED_INVLIST \
+ assert(other_elements_ptr)
+
+#endif /* defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) ||
+ defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_UTF8_C) */
+#if defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) || \
+ defined(PERL_IN_TOKE_C)
+PERL_CALLCONV const char *
+Perl_form_alien_digit_msg(pTHX_ const U8 which, const STRLEN valids_len, const char * const first_bad, const char * const send, const bool UTF, const bool braced)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_FORM_ALIEN_DIGIT_MSG \
+ assert(first_bad); assert(send)
+
+PERL_CALLCONV bool
+Perl_grok_bslash_c(pTHX_ const char source, U8 *result, const char **message, U32 *packed_warn)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GROK_BSLASH_C \
+ assert(result); assert(message)
+
+PERL_CALLCONV bool
+Perl_grok_bslash_o(pTHX_ char **s, const char * const send, UV *uv, const char **message, U32 *packed_warn, const bool strict, const bool allow_UV_MAX, const bool utf8)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GROK_BSLASH_O \
+ assert(s); assert(send); assert(uv); assert(message)
+
+PERL_CALLCONV bool
+Perl_grok_bslash_x(pTHX_ char **s, const char * const send, UV *uv, const char **message, U32 *packed_warn, const bool strict, const bool allow_UV_MAX, const bool utf8)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GROK_BSLASH_X \
+ assert(s); assert(send); assert(uv); assert(message)
+
+#endif /* defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) ||
+ defined(PERL_IN_TOKE_C) */
+#if defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_REGCOMP_C) || \
+ defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C)
+PERL_CALLCONV const char *
+Perl_form_cp_too_large_msg(pTHX_ const U8 which, const char *string, const Size_t len, const UV cp)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_FORM_CP_TOO_LARGE_MSG
#endif
#if defined(PERL_IN_DUMP_C)
-STATIC CV* S_deb_curcv(pTHX_ I32 ix);
-#define PERL_ARGS_ASSERT_DEB_CURCV
-STATIC void S_debprof(pTHX_ const OP *o);
-#define PERL_ARGS_ASSERT_DEBPROF \
- assert(o)
-STATIC SV* S_pm_description(pTHX_ const PMOP *pm);
-#define PERL_ARGS_ASSERT_PM_DESCRIPTION \
- assert(pm)
-STATIC UV S_sequence_num(pTHX_ const OP *o);
-#define PERL_ARGS_ASSERT_SEQUENCE_NUM
-#endif
-#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_SCOPE_C)
-PERL_CALLCONV void Perl_hv_kill_backrefs(pTHX_ HV *hv);
-#define PERL_ARGS_ASSERT_HV_KILL_BACKREFS \
- assert(hv)
-#endif
+STATIC CV *
+S_deb_curcv(pTHX_ I32 ix);
+# define PERL_ARGS_ASSERT_DEB_CURCV
+
+STATIC void
+S_debprof(pTHX_ const OP *o);
+# define PERL_ARGS_ASSERT_DEBPROF \
+ assert(o)
+
+STATIC SV *
+S_pm_description(pTHX_ const PMOP *pm);
+# define PERL_ARGS_ASSERT_PM_DESCRIPTION \
+ assert(pm)
+
+STATIC UV
+S_sequence_num(pTHX_ const OP *o);
+# define PERL_ARGS_ASSERT_SEQUENCE_NUM
+
+#endif /* defined(PERL_IN_DUMP_C) */
+#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || \
+ defined(PERL_IN_SCOPE_C) || defined(PERL_IN_SV_C)
+PERL_CALLCONV void
+Perl_hv_kill_backrefs(pTHX_ HV *hv)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_HV_KILL_BACKREFS \
+ assert(hv)
+
+#endif
+#if defined(PERL_IN_DUMP_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_REGCOMP_ANY)
+PERL_CALLCONV void
+Perl__invlist_dump(pTHX_ PerlIO *file, I32 level, const char * const indent, SV * const invlist);
+# define PERL_ARGS_ASSERT__INVLIST_DUMP \
+ assert(file); assert(indent); assert(invlist)
+
+#endif
+#if defined(PERL_IN_GLOBALS_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_PEEP_C)
+PERL_CALLCONV OP *
+Perl_ck_anoncode(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_ANONCODE \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_backtick(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_BACKTICK \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_bitop(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_BITOP \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_cmp(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_CMP \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_concat(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_CONCAT \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_defined(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_DEFINED \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_delete(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_DELETE \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_each(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_EACH \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_eof(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_EOF \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_eval(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_EVAL \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_exec(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_EXEC \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_exists(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_EXISTS \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_ftst(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_FTST \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_fun(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_FUN \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_glob(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_GLOB \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_grep(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_GREP \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_helemexistsor(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_HELEMEXISTSOR \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_index(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_INDEX \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_isa(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_ISA \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_join(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_JOIN \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_length(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_LENGTH \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_lfun(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_LFUN \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_listiob(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_LISTIOB \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_match(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_MATCH \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_method(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_METHOD \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_null(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_NULL \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_open(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_OPEN \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_prototype(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_PROTOTYPE \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_readline(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_READLINE \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_refassign(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_REFASSIGN \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_repeat(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_REPEAT \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_require(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_REQUIRE \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_return(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_RETURN \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_rfun(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_RFUN \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_rvconst(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_RVCONST \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_sassign(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_SASSIGN \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_select(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_SELECT \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_shift(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_SHIFT \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_smartmatch(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_SMARTMATCH \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_sort(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_SORT \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_spair(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_SPAIR \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_split(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_SPLIT \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_stringify(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_STRINGIFY \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_subr(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_SUBR \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_substr(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_SUBSTR \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_svconst(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_SVCONST \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_tell(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_TELL \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_trunc(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_TRUNC \
+ assert(o)
+
+PERL_CALLCONV OP *
+Perl_ck_trycatch(pTHX_ OP *o)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CK_TRYCATCH \
+ assert(o)
+
+#endif /* defined(PERL_IN_GLOBALS_C) || defined(PERL_IN_OP_C) ||
+ defined(PERL_IN_PEEP_C) */
#if defined(PERL_IN_GV_C)
-STATIC bool S_find_default_stash(pTHX_ HV **stash, const char *name, STRLEN len, const U32 is_utf8, const I32 add, const svtype sv_type);
-#define PERL_ARGS_ASSERT_FIND_DEFAULT_STASH \
- assert(stash); assert(name)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE GV* S_gv_fetchmeth_internal(pTHX_ HV* stash, SV* meth, const char* name, STRLEN len, I32 level, U32 flags);
-#define PERL_ARGS_ASSERT_GV_FETCHMETH_INTERNAL
-#endif
-STATIC void S_gv_init_svtype(pTHX_ GV *gv, const svtype sv_type);
-#define PERL_ARGS_ASSERT_GV_INIT_SVTYPE \
- assert(gv)
-STATIC bool S_gv_is_in_main(pTHX_ const char *name, STRLEN len, const U32 is_utf8);
-#define PERL_ARGS_ASSERT_GV_IS_IN_MAIN \
- assert(name)
-STATIC bool S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, const svtype sv_type);
-#define PERL_ARGS_ASSERT_GV_MAGICALIZE \
- assert(gv); assert(stash); assert(name)
-STATIC void S_gv_magicalize_isa(pTHX_ GV *gv);
-#define PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA \
- assert(gv)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE HV* S_gv_stashpvn_internal(pTHX_ const char* name, U32 namelen, I32 flags);
-#define PERL_ARGS_ASSERT_GV_STASHPVN_INTERNAL \
- assert(name)
-#endif
-STATIC void S_maybe_multimagic_gv(pTHX_ GV *gv, const char *name, const svtype sv_type);
-#define PERL_ARGS_ASSERT_MAYBE_MULTIMAGIC_GV \
- assert(gv); assert(name)
-STATIC bool S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name, STRLEN *len, const char *nambeg, STRLEN full_len, const U32 is_utf8, const I32 add);
-#define PERL_ARGS_ASSERT_PARSE_GV_STASH_NAME \
- assert(stash); assert(gv); assert(name); assert(len); assert(nambeg)
-STATIC void S_require_tie_mod(pTHX_ GV *gv, const char varname, const char * name, STRLEN len, const U32 flags);
-#define PERL_ARGS_ASSERT_REQUIRE_TIE_MOD \
- assert(gv); assert(varname); assert(name)
-#endif
-#if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_IN_OP_C)
-PERL_CALLCONV void Perl_sv_add_backref(pTHX_ SV *const tsv, SV *const sv);
-#define PERL_ARGS_ASSERT_SV_ADD_BACKREF \
- assert(tsv); assert(sv)
+STATIC bool
+S_find_default_stash(pTHX_ HV **stash, const char *name, STRLEN len, const U32 is_utf8, const I32 add, const svtype sv_type);
+# define PERL_ARGS_ASSERT_FIND_DEFAULT_STASH \
+ assert(stash); assert(name)
+
+STATIC void
+S_gv_init_svtype(pTHX_ GV *gv, const svtype sv_type);
+# define PERL_ARGS_ASSERT_GV_INIT_SVTYPE \
+ assert(gv)
+
+STATIC bool
+S_gv_is_in_main(pTHX_ const char *name, STRLEN len, const U32 is_utf8);
+# define PERL_ARGS_ASSERT_GV_IS_IN_MAIN \
+ assert(name)
+
+STATIC bool
+S_gv_magicalize(pTHX_ GV *gv, HV *stash, const char *name, STRLEN len, const svtype sv_type);
+# define PERL_ARGS_ASSERT_GV_MAGICALIZE \
+ assert(gv); assert(stash); assert(name)
+
+STATIC void
+S_gv_magicalize_isa(pTHX_ GV *gv);
+# define PERL_ARGS_ASSERT_GV_MAGICALIZE_ISA \
+ assert(gv)
+
+STATIC void
+S_maybe_multimagic_gv(pTHX_ GV *gv, const char *name, const svtype sv_type);
+# define PERL_ARGS_ASSERT_MAYBE_MULTIMAGIC_GV \
+ assert(gv); assert(name)
+
+STATIC bool
+S_parse_gv_stash_name(pTHX_ HV **stash, GV **gv, const char **name, STRLEN *len, const char *nambeg, STRLEN full_len, const U32 is_utf8, const I32 add);
+# define PERL_ARGS_ASSERT_PARSE_GV_STASH_NAME \
+ assert(stash); assert(gv); assert(name); assert(len); assert(nambeg)
+
+STATIC void
+S_require_tie_mod(pTHX_ GV *gv, const char varname, const char *name, STRLEN len, const U32 flags);
+# define PERL_ARGS_ASSERT_REQUIRE_TIE_MOD \
+ assert(gv); assert(varname); assert(name)
+
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE GV *
+S_gv_fetchmeth_internal(pTHX_ HV *stash, SV *meth, const char *name, STRLEN len, I32 level, U32 flags);
+# define PERL_ARGS_ASSERT_GV_FETCHMETH_INTERNAL
+
+PERL_STATIC_INLINE HV *
+S_gv_stashpvn_internal(pTHX_ const char *name, U32 namelen, I32 flags);
+# define PERL_ARGS_ASSERT_GV_STASHPVN_INTERNAL \
+ assert(name)
+
+# endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+#endif /* defined(PERL_IN_GV_C) */
+#if defined(PERL_IN_GV_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_PAD_C) || defined(PERL_IN_SV_C)
+PERL_CALLCONV void
+Perl_sv_add_backref(pTHX_ SV * const tsv, SV * const sv)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_SV_ADD_BACKREF \
+ assert(tsv); assert(sv)
+
#endif
#if defined(PERL_IN_GV_C) || defined(PERL_IN_UNIVERSAL_C)
-PERL_CALLCONV HV* Perl_gv_stashsvpvn_cached(pTHX_ SV *namesv, const char* name, U32 namelen, I32 flags);
+PERL_CALLCONV HV *
+Perl_gv_stashsvpvn_cached(pTHX_ SV *namesv, const char *name, U32 namelen, I32 flags)
+ __attribute__visibility__("hidden");
+
#endif
#if defined(PERL_IN_HV_C)
-STATIC void S_clear_placeholders(pTHX_ HV *hv, U32 items);
-#define PERL_ARGS_ASSERT_CLEAR_PLACEHOLDERS \
- assert(hv)
-STATIC void S_hsplit(pTHX_ HV *hv, STRLEN const oldsize, STRLEN newsize);
-#define PERL_ARGS_ASSERT_HSPLIT \
- assert(hv)
-STATIC struct xpvhv_aux* S_hv_auxinit(pTHX_ HV *hv);
-#define PERL_ARGS_ASSERT_HV_AUXINIT \
- assert(hv)
-STATIC struct xpvhv_aux* S_hv_auxinit_internal(struct xpvhv_aux *iter);
-#define PERL_ARGS_ASSERT_HV_AUXINIT_INTERNAL \
- assert(iter)
-STATIC SV* S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, int k_flags, I32 d_flags, U32 hash);
-#define PERL_ARGS_ASSERT_HV_DELETE_COMMON
-STATIC SV* S_hv_free_ent_ret(pTHX_ HV *hv, HE *entry);
-#define PERL_ARGS_ASSERT_HV_FREE_ENT_RET \
- assert(hv); assert(entry)
-STATIC void S_hv_free_entries(pTHX_ HV *hv);
-#define PERL_ARGS_ASSERT_HV_FREE_ENTRIES \
- assert(hv)
-STATIC void S_hv_magic_check(HV *hv, bool *needs_copy, bool *needs_store);
-#define PERL_ARGS_ASSERT_HV_MAGIC_CHECK \
- assert(hv); assert(needs_copy); assert(needs_store)
-PERL_STATIC_NO_RET void S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, const char *msg)
- __attribute__noreturn__;
-#define PERL_ARGS_ASSERT_HV_NOTALLOWED \
- assert(key); assert(msg)
-
-STATIC HE* S_new_he(pTHX)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEW_HE
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE U32 S_ptr_hash(PTRV u);
-#define PERL_ARGS_ASSERT_PTR_HASH
-#endif
-STATIC SV * S_refcounted_he_value(pTHX_ const struct refcounted_he *he);
-#define PERL_ARGS_ASSERT_REFCOUNTED_HE_VALUE \
- assert(he)
-STATIC HEK* S_save_hek_flags(const char *str, I32 len, U32 hash, int flags)
- __attribute__malloc__
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SAVE_HEK_FLAGS \
- assert(str)
-
-STATIC HEK* S_share_hek_flags(pTHX_ const char *str, STRLEN len, U32 hash, int flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SHARE_HEK_FLAGS \
- assert(str)
-
-STATIC void S_unshare_hek_or_pvn(pTHX_ const HEK* hek, const char* str, I32 len, U32 hash);
-#define PERL_ARGS_ASSERT_UNSHARE_HEK_OR_PVN
-#endif
+STATIC void
+S_clear_placeholders(pTHX_ HV *hv, U32 items);
+# define PERL_ARGS_ASSERT_CLEAR_PLACEHOLDERS \
+ assert(hv)
+
+STATIC void
+S_hsplit(pTHX_ HV *hv, STRLEN const oldsize, STRLEN newsize);
+# define PERL_ARGS_ASSERT_HSPLIT \
+ assert(hv)
+
+STATIC struct xpvhv_aux *
+S_hv_auxinit(pTHX_ HV *hv);
+# define PERL_ARGS_ASSERT_HV_AUXINIT \
+ assert(hv)
+
+STATIC SV *
+S_hv_delete_common(pTHX_ HV *hv, SV *keysv, const char *key, STRLEN klen, int k_flags, I32 d_flags, U32 hash);
+# define PERL_ARGS_ASSERT_HV_DELETE_COMMON
+
+STATIC SV *
+S_hv_free_ent_ret(pTHX_ HE *entry);
+# define PERL_ARGS_ASSERT_HV_FREE_ENT_RET \
+ assert(entry)
+
+STATIC void
+S_hv_free_entries(pTHX_ HV *hv);
+# define PERL_ARGS_ASSERT_HV_FREE_ENTRIES \
+ assert(hv)
+
+STATIC void
+S_hv_magic_check(HV *hv, bool *needs_copy, bool *needs_store);
+# define PERL_ARGS_ASSERT_HV_MAGIC_CHECK \
+ assert(hv); assert(needs_copy); assert(needs_store)
+
+PERL_STATIC_NO_RET void
+S_hv_notallowed(pTHX_ int flags, const char *key, I32 klen, const char *msg)
+ __attribute__noreturn__;
+# define PERL_ARGS_ASSERT_HV_NOTALLOWED \
+ assert(key); assert(msg)
+
+STATIC SV *
+S_refcounted_he_value(pTHX_ const struct refcounted_he *he);
+# define PERL_ARGS_ASSERT_REFCOUNTED_HE_VALUE \
+ assert(he)
+
+STATIC HEK *
+S_save_hek_flags(const char *str, I32 len, U32 hash, int flags)
+ __attribute__malloc__
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SAVE_HEK_FLAGS \
+ assert(str)
+
+STATIC HEK *
+S_share_hek_flags(pTHX_ const char *str, STRLEN len, U32 hash, int flags)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SHARE_HEK_FLAGS \
+ assert(str)
+
+STATIC void
+S_unshare_hek_or_pvn(pTHX_ const HEK *hek, const char *str, I32 len, U32 hash);
+# define PERL_ARGS_ASSERT_UNSHARE_HEK_OR_PVN
+
+# if !defined(PURIFY)
+STATIC HE *
+S_new_he(pTHX)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_NEW_HE
+
+# endif
+#endif /* defined(PERL_IN_HV_C) */
#if defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || defined(PERL_IN_SV_C)
-PERL_CALLCONV void Perl_sv_kill_backrefs(pTHX_ SV *const sv, AV *const av);
-#define PERL_ARGS_ASSERT_SV_KILL_BACKREFS \
- assert(sv)
+PERL_CALLCONV void
+Perl_sv_kill_backrefs(pTHX_ SV * const sv, AV * const av)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_SV_KILL_BACKREFS \
+ assert(sv)
+
#endif
#if defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C)
-PERL_CALLCONV SV* Perl_hfree_next_entry(pTHX_ HV *hv, STRLEN *indexp);
-#define PERL_ARGS_ASSERT_HFREE_NEXT_ENTRY \
- assert(hv); assert(indexp)
-#endif
-#if defined(PERL_IN_LOCALE_C)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE const char * S_save_to_buffer(const char * string, char **buf, Size_t *buf_size, const Size_t offset)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SAVE_TO_BUFFER \
- assert(buf_size)
-#endif
+PERL_CALLCONV SV *
+Perl_hfree_next_entry(pTHX_ HV *hv, STRLEN *indexp)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_HFREE_NEXT_ENTRY \
+ assert(hv); assert(indexp)
-# if defined(USE_LOCALE)
-STATIC const char* S_category_name(const int category);
-#define PERL_ARGS_ASSERT_CATEGORY_NAME
-STATIC void S_new_collate(pTHX_ const char* newcoll);
-#define PERL_ARGS_ASSERT_NEW_COLLATE
-STATIC void S_new_ctype(pTHX_ const char* newctype);
-#define PERL_ARGS_ASSERT_NEW_CTYPE \
- assert(newctype)
-STATIC void S_new_numeric(pTHX_ const char* newnum);
-#define PERL_ARGS_ASSERT_NEW_NUMERIC
-STATIC void S_restore_switched_locale(pTHX_ const int category, const char * const original_locale);
-#define PERL_ARGS_ASSERT_RESTORE_SWITCHED_LOCALE
-STATIC void S_set_numeric_radix(pTHX_ const bool use_locale);
-#define PERL_ARGS_ASSERT_SET_NUMERIC_RADIX
-STATIC char* S_stdize_locale(pTHX_ char* locs);
-#define PERL_ARGS_ASSERT_STDIZE_LOCALE \
- assert(locs)
-STATIC const char* S_switch_category_locale_to_template(pTHX_ const int switch_category, const int template_category, const char * template_locale);
-#define PERL_ARGS_ASSERT_SWITCH_CATEGORY_LOCALE_TO_TEMPLATE
-# if defined(USE_POSIX_2008_LOCALE)
-STATIC const char* S_emulate_setlocale(const int category, const char* locale, unsigned int index, const bool is_index_valid);
-#define PERL_ARGS_ASSERT_EMULATE_SETLOCALE
-# endif
-# if defined(WIN32)
-STATIC char* S_win32_setlocale(pTHX_ int category, const char* locale);
-#define PERL_ARGS_ASSERT_WIN32_SETLOCALE
-# endif
-# endif
-#endif
-#if defined(PERL_IN_LOCALE_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_MATHOMS_C)
-# if defined(USE_LOCALE_COLLATE)
-PERL_CALLCONV char* Perl__mem_collxfrm(pTHX_ const char* input_string, STRLEN len, STRLEN* xlen, bool utf8);
-#define PERL_ARGS_ASSERT__MEM_COLLXFRM \
- assert(input_string); assert(xlen)
-# endif
#endif
+#if defined(PERL_IN_LOCALE_C)
+STATIC utf8ness_t
+S_get_locale_string_utf8ness_i(pTHX_ const char *string, const locale_utf8ness_t known_utf8, const char *locale, const unsigned cat_index);
+# define PERL_ARGS_ASSERT_GET_LOCALE_STRING_UTF8NESS_I
+
+STATIC bool
+S_is_locale_utf8(pTHX_ const char *locale);
+# define PERL_ARGS_ASSERT_IS_LOCALE_UTF8 \
+ assert(locale)
+
+# if defined(HAS_LOCALECONV)
+STATIC HV *
+S_my_localeconv(pTHX_ const int item);
+# define PERL_ARGS_ASSERT_MY_LOCALECONV
+
+STATIC void
+S_populate_hash_from_localeconv(pTHX_ HV *hv, const char *locale, const U32 which_mask, const lconv_offset_t *strings[2], const lconv_offset_t *integers);
+# define PERL_ARGS_ASSERT_POPULATE_HASH_FROM_LOCALECONV \
+ assert(hv); assert(locale); assert(strings)
+
+# endif /* defined(HAS_LOCALECONV) */
+# if defined(USE_LOCALE)
+STATIC unsigned int
+S_get_category_index(const int category, const char *locale);
+# define PERL_ARGS_ASSERT_GET_CATEGORY_INDEX
+
+STATIC int
+S_get_category_index_nowarn(const int category);
+# define PERL_ARGS_ASSERT_GET_CATEGORY_INDEX_NOWARN
+
+STATIC void
+S_new_LC_ALL(pTHX_ const char *unused, bool force);
+# define PERL_ARGS_ASSERT_NEW_LC_ALL
+
+STATIC void
+S_restore_toggled_locale_i(pTHX_ const unsigned cat_index, const char *original_locale, const line_t caller_line);
+# define PERL_ARGS_ASSERT_RESTORE_TOGGLED_LOCALE_I
+
+STATIC const char *
+S_save_to_buffer(const char *string, const char **buf, Size_t *buf_size);
+# define PERL_ARGS_ASSERT_SAVE_TO_BUFFER
+
+PERL_STATIC_NO_RET void
+S_setlocale_failure_panic_i(pTHX_ const unsigned int cat_index, const char *current, const char *failed, const line_t caller_0_line, const line_t caller_1_line)
+ __attribute__noreturn__;
+# define PERL_ARGS_ASSERT_SETLOCALE_FAILURE_PANIC_I \
+ assert(failed)
+
+STATIC const char *
+S_stdize_locale(pTHX_ const int category, const char *input_locale, const char **buf, Size_t *buf_size, line_t caller_line);
+# define PERL_ARGS_ASSERT_STDIZE_LOCALE
+
+STATIC const char *
+S_toggle_locale_i(pTHX_ const unsigned switch_cat_index, const char *new_locale, const line_t caller_line);
+# define PERL_ARGS_ASSERT_TOGGLE_LOCALE_I \
+ assert(new_locale)
+
+# if defined(DEBUGGING)
+STATIC char *
+S_my_setlocale_debug_string_i(pTHX_ const unsigned cat_index, const char *locale, const char *retval, const line_t line)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_MY_SETLOCALE_DEBUG_STRING_I
+
+# endif
+# if defined(HAS_NL_LANGINFO) || defined(HAS_NL_LANGINFO_L)
+STATIC const char *
+S_my_langinfo_i(pTHX_ const nl_item item, const unsigned int cat_index, const char *locale, const char **retbufp, Size_t *retbuf_sizep, utf8ness_t *utf8ness);
+# define PERL_ARGS_ASSERT_MY_LANGINFO_I \
+ assert(locale); assert(retbufp)
+
+# else
+STATIC const char *
+S_my_langinfo_i(pTHX_ const int item, const unsigned int cat_index, const char *locale, const char **retbufp, Size_t *retbuf_sizep, utf8ness_t *utf8ness);
+# define PERL_ARGS_ASSERT_MY_LANGINFO_I \
+ assert(locale); assert(retbufp)
+
+# endif
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE const char *
+S_mortalized_pv_copy(pTHX_ const char * const pv)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_MORTALIZED_PV_COPY
+
+# endif
+# if defined(USE_LOCALE_COLLATE)
+STATIC void
+S_new_collate(pTHX_ const char *newcoll, bool force);
+# define PERL_ARGS_ASSERT_NEW_COLLATE \
+ assert(newcoll)
+
+# if defined(DEBUGGING)
+STATIC void
+S_print_collxfrm_input_and_return(pTHX_ const char *s, const char *e, const char *xbuf, const STRLEN xlen, const bool is_utf8);
+# define PERL_ARGS_ASSERT_PRINT_COLLXFRM_INPUT_AND_RETURN \
+ assert(s); assert(e)
+
+# endif
+# endif /* defined(USE_LOCALE_COLLATE) */
+# if defined(USE_LOCALE_CTYPE)
+STATIC bool
+S_is_codeset_name_UTF8(const char *name);
+# define PERL_ARGS_ASSERT_IS_CODESET_NAME_UTF8 \
+ assert(name)
+
+STATIC void
+S_new_ctype(pTHX_ const char *newctype, bool force);
+# define PERL_ARGS_ASSERT_NEW_CTYPE \
+ assert(newctype)
+
+# endif /* defined(USE_LOCALE_CTYPE) */
+# if defined(USE_LOCALE_NUMERIC)
+STATIC void
+S_new_numeric(pTHX_ const char *newnum, bool force);
+# define PERL_ARGS_ASSERT_NEW_NUMERIC \
+ assert(newnum)
+
+# endif
+# if defined(USE_PERL_SWITCH_LOCALE_CONTEXT) || defined(DEBUGGING)
+STATIC const char *
+S_get_LC_ALL_display(pTHX);
+# define PERL_ARGS_ASSERT_GET_LC_ALL_DISPLAY
+
+# endif
+# if defined(USE_POSIX_2008_LOCALE)
+STATIC const char *
+S_emulate_setlocale_i(pTHX_ const unsigned int index, const char *new_locale, const recalc_lc_all_t recalc_LC_ALL, const line_t line);
+# define PERL_ARGS_ASSERT_EMULATE_SETLOCALE_I
+
+STATIC const char *
+S_my_querylocale_i(pTHX_ const unsigned int index);
+# define PERL_ARGS_ASSERT_MY_QUERYLOCALE_I
+
+STATIC const char *
+S_setlocale_from_aggregate_LC_ALL(pTHX_ const char *locale, const line_t line);
+# define PERL_ARGS_ASSERT_SETLOCALE_FROM_AGGREGATE_LC_ALL \
+ assert(locale)
+
+STATIC locale_t
+S_use_curlocale_scratch(pTHX);
+# define PERL_ARGS_ASSERT_USE_CURLOCALE_SCRATCH
+
+# if defined(USE_QUERYLOCALE)
+STATIC const char *
+S_calculate_LC_ALL(pTHX_ const locale_t cur_obj);
+# define PERL_ARGS_ASSERT_CALCULATE_LC_ALL
+
+# else
+STATIC const char *
+S_update_PL_curlocales_i(pTHX_ const unsigned int index, const char *new_locale, recalc_lc_all_t recalc_LC_ALL);
+# define PERL_ARGS_ASSERT_UPDATE_PL_CURLOCALES_I \
+ assert(new_locale)
+
+# endif
+# elif defined(USE_LOCALE_THREADS) && \
+ !defined(USE_THREAD_SAFE_LOCALE) && \
+ !defined(USE_THREAD_SAFE_LOCALE_EMULATION) /* &&
+ !defined(USE_POSIX_2008_LOCALE) */
+STATIC const char *
+S_less_dicey_setlocale_r(pTHX_ const int category, const char *locale);
+# define PERL_ARGS_ASSERT_LESS_DICEY_SETLOCALE_R
+
+STATIC void
+S_less_dicey_void_setlocale_i(pTHX_ const unsigned cat_index, const char *locale, const line_t line);
+# define PERL_ARGS_ASSERT_LESS_DICEY_VOID_SETLOCALE_I \
+ assert(locale)
+
+# if 0
+STATIC bool
+S_less_dicey_bool_setlocale_r(pTHX_ const int cat, const char *locale);
+# define PERL_ARGS_ASSERT_LESS_DICEY_BOOL_SETLOCALE_R \
+ assert(locale)
+
+# endif
+# endif /* defined(USE_LOCALE_THREADS) &&
+ !defined(USE_POSIX_2008_LOCALE) &&
+ !defined(USE_THREAD_SAFE_LOCALE) &&
+ !defined(USE_THREAD_SAFE_LOCALE_EMULATION) */
+# if !( defined(USE_POSIX_2008_LOCALE) && defined(USE_QUERYLOCALE) ) && \
+ ( !defined(LC_ALL) || defined(USE_POSIX_2008_LOCALE) || \
+ defined(WIN32) )
+STATIC const char *
+S_calculate_LC_ALL(pTHX_ const char **individ_locales);
+# define PERL_ARGS_ASSERT_CALCULATE_LC_ALL \
+ assert(individ_locales)
+
+# endif
+# if defined(WIN32)
+STATIC wchar_t *
+S_Win_byte_string_to_wstring(const UINT code_page, const char *byte_string);
+# define PERL_ARGS_ASSERT_WIN_BYTE_STRING_TO_WSTRING
+
+STATIC char *
+S_Win_wstring_to_byte_string(const UINT code_page, const wchar_t *wstring);
+# define PERL_ARGS_ASSERT_WIN_WSTRING_TO_BYTE_STRING
+
+STATIC const char *
+S_win32_setlocale(pTHX_ int category, const char *locale);
+# define PERL_ARGS_ASSERT_WIN32_SETLOCALE
+
+STATIC const char *
+S_wrap_wsetlocale(pTHX_ const int category, const char *locale);
+# define PERL_ARGS_ASSERT_WRAP_WSETLOCALE
+
+# endif /* defined(WIN32) */
+# if defined(WIN32) || \
+ ( defined(USE_POSIX_2008_LOCALE) && !defined(USE_QUERYLOCALE) )
+STATIC const char *
+S_find_locale_from_environment(pTHX_ const unsigned int index);
+# define PERL_ARGS_ASSERT_FIND_LOCALE_FROM_ENVIRONMENT
+
+# endif
+# endif /* defined(USE_LOCALE) */
+# if defined(USE_POSIX_2008_LOCALE) || defined(DEBUGGING)
+STATIC const char *
+S_get_displayable_string(pTHX_ const char * const s, const char * const e, const bool is_utf8);
+# define PERL_ARGS_ASSERT_GET_DISPLAYABLE_STRING \
+ assert(s); assert(e)
+
+# endif
+#endif /* defined(PERL_IN_LOCALE_C) */
#if defined(PERL_IN_MALLOC_C)
-STATIC int S_adjust_size_and_find_bucket(size_t *nbytes_p);
-#define PERL_ARGS_ASSERT_ADJUST_SIZE_AND_FIND_BUCKET \
- assert(nbytes_p)
+STATIC int
+S_adjust_size_and_find_bucket(size_t *nbytes_p);
+# define PERL_ARGS_ASSERT_ADJUST_SIZE_AND_FIND_BUCKET \
+ assert(nbytes_p)
+
#endif
#if defined(PERL_IN_MG_C)
-STATIC void S_fixup_errno_string(pTHX_ SV* sv);
-#define PERL_ARGS_ASSERT_FIXUP_ERRNO_STRING \
- assert(sv)
-STATIC SV* S_magic_methcall1(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags, int n, SV *val);
-#define PERL_ARGS_ASSERT_MAGIC_METHCALL1 \
- assert(sv); assert(mg); assert(meth)
-STATIC int S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, SV *meth);
-#define PERL_ARGS_ASSERT_MAGIC_METHPACK \
- assert(sv); assert(mg); assert(meth)
-STATIC void S_restore_magic(pTHX_ const void *p);
-#define PERL_ARGS_ASSERT_RESTORE_MAGIC
-STATIC void S_save_magic_flags(pTHX_ I32 mgs_ix, SV *sv, U32 flags);
-#define PERL_ARGS_ASSERT_SAVE_MAGIC_FLAGS \
- assert(sv)
-STATIC void S_unwind_handler_stack(pTHX_ const void *p);
-#define PERL_ARGS_ASSERT_UNWIND_HANDLER_STACK
-#endif
+STATIC void
+S_fixup_errno_string(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_FIXUP_ERRNO_STRING \
+ assert(sv)
+
+STATIC SV *
+S_magic_methcall1(pTHX_ SV *sv, const MAGIC *mg, SV *meth, U32 flags, int n, SV *val);
+# define PERL_ARGS_ASSERT_MAGIC_METHCALL1 \
+ assert(sv); assert(mg); assert(meth)
+
+STATIC int
+S_magic_methpack(pTHX_ SV *sv, const MAGIC *mg, SV *meth);
+# define PERL_ARGS_ASSERT_MAGIC_METHPACK \
+ assert(sv); assert(mg); assert(meth)
+
+STATIC void
+S_restore_magic(pTHX_ const void *p);
+# define PERL_ARGS_ASSERT_RESTORE_MAGIC
+
+STATIC void
+S_save_magic_flags(pTHX_ SSize_t mgs_ix, SV *sv, U32 flags);
+# define PERL_ARGS_ASSERT_SAVE_MAGIC_FLAGS \
+ assert(sv)
+
+STATIC void
+S_unwind_handler_stack(pTHX_ const void *p);
+# define PERL_ARGS_ASSERT_UNWIND_HANDLER_STACK
+
+#endif /* defined(PERL_IN_MG_C) */
#if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C)
-PERL_CALLCONV bool Perl_translate_substr_offsets(STRLEN curlen, IV pos1_iv, bool pos1_is_uv, IV len_iv, bool len_is_uv, STRLEN *posp, STRLEN *lenp);
-#define PERL_ARGS_ASSERT_TRANSLATE_SUBSTR_OFFSETS \
- assert(posp); assert(lenp)
+PERL_CALLCONV bool
+Perl_translate_substr_offsets(STRLEN curlen, IV pos1_iv, bool pos1_is_uv, IV len_iv, bool len_is_uv, STRLEN *posp, STRLEN *lenp)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_TRANSLATE_SUBSTR_OFFSETS \
+ assert(posp); assert(lenp)
+
#endif
#if defined(PERL_IN_MRO_C)
-STATIC void S_mro_clean_isarev(pTHX_ HV * const isa, const char * const name, const STRLEN len, HV * const exceptions, U32 hash, U32 flags);
-#define PERL_ARGS_ASSERT_MRO_CLEAN_ISAREV \
- assert(isa); assert(name)
-STATIC void S_mro_gather_and_rename(pTHX_ HV * const stashes, HV * const seen_stashes, HV *stash, HV *oldstash, SV *namesv);
-#define PERL_ARGS_ASSERT_MRO_GATHER_AND_RENAME \
- assert(stashes); assert(seen_stashes); assert(namesv)
-STATIC AV* S_mro_get_linear_isa_dfs(pTHX_ HV* stash, U32 level);
-#define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_DFS \
- assert(stash)
-#endif
+STATIC void
+S_mro_clean_isarev(pTHX_ HV * const isa, const char * const name, const STRLEN len, HV * const exceptions, U32 hash, U32 flags);
+# define PERL_ARGS_ASSERT_MRO_CLEAN_ISAREV \
+ assert(isa); assert(name)
+
+STATIC void
+S_mro_gather_and_rename(pTHX_ HV * const stashes, HV * const seen_stashes, HV *stash, HV *oldstash, SV *namesv);
+# define PERL_ARGS_ASSERT_MRO_GATHER_AND_RENAME \
+ assert(stashes); assert(seen_stashes); assert(namesv)
+
+STATIC AV *
+S_mro_get_linear_isa_dfs(pTHX_ HV *stash, U32 level);
+# define PERL_ARGS_ASSERT_MRO_GET_LINEAR_ISA_DFS \
+ assert(stash)
+
+#endif /* defined(PERL_IN_MRO_C) */
#if defined(PERL_IN_NUMERIC_C)
-STATIC void S_output_non_portable(pTHX_ const U8 shift);
-#define PERL_ARGS_ASSERT_OUTPUT_NON_PORTABLE
+STATIC void
+S_output_non_portable(pTHX_ const U8 shift);
+# define PERL_ARGS_ASSERT_OUTPUT_NON_PORTABLE
+
#endif
#if defined(PERL_IN_OP_C)
-STATIC void S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs);
-#define PERL_ARGS_ASSERT_APPLY_ATTRS \
- assert(stash); assert(target)
-STATIC void S_apply_attrs_my(pTHX_ HV *stash, OP *target, OP *attrs, OP **imopsp);
-#define PERL_ARGS_ASSERT_APPLY_ATTRS_MY \
- assert(stash); assert(target); assert(imopsp)
-STATIC I32 S_assignment_type(pTHX_ const OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ASSIGNMENT_TYPE
-
-STATIC void S_bad_type_gv(pTHX_ I32 n, GV *gv, const OP *kid, const char *t);
-#define PERL_ARGS_ASSERT_BAD_TYPE_GV \
- assert(gv); assert(kid); assert(t)
-STATIC void S_bad_type_pv(pTHX_ I32 n, const char *t, const OP *o, const OP *kid);
-#define PERL_ARGS_ASSERT_BAD_TYPE_PV \
- assert(t); assert(o); assert(kid)
-STATIC void S_clear_special_blocks(pTHX_ const char *const fullname, GV *const gv, CV *const cv);
-#define PERL_ARGS_ASSERT_CLEAR_SPECIAL_BLOCKS \
- assert(fullname); assert(gv); assert(cv)
-STATIC void S_cop_free(pTHX_ COP *cop);
-#define PERL_ARGS_ASSERT_COP_FREE \
- assert(cop)
-STATIC OP * S_dup_attrlist(pTHX_ OP *o);
-#define PERL_ARGS_ASSERT_DUP_ATTRLIST \
- assert(o)
-STATIC void S_finalize_op(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_FINALIZE_OP \
- assert(o)
-STATIC void S_find_and_forget_pmops(pTHX_ OP *o);
-#define PERL_ARGS_ASSERT_FIND_AND_FORGET_PMOPS \
- assert(o)
-STATIC OP* S_fold_constants(pTHX_ OP * const o);
-#define PERL_ARGS_ASSERT_FOLD_CONSTANTS \
- assert(o)
-STATIC OP* S_force_list(pTHX_ OP* arg, bool nullit);
-#define PERL_ARGS_ASSERT_FORCE_LIST
-STATIC void S_forget_pmop(pTHX_ PMOP *const o);
-#define PERL_ARGS_ASSERT_FORGET_PMOP \
- assert(o)
-STATIC void S_gen_constant_list(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_GEN_CONSTANT_LIST
-STATIC void S_inplace_aassign(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_INPLACE_AASSIGN \
- assert(o)
-STATIC bool S_is_handle_constructor(const OP *o, I32 numargs)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_IS_HANDLE_CONSTRUCTOR \
- assert(o)
-
-STATIC OP* S_listkids(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_LISTKIDS
-STATIC bool S_looks_like_bool(pTHX_ const OP* o);
-#define PERL_ARGS_ASSERT_LOOKS_LIKE_BOOL \
- assert(o)
-STATIC OP* S_modkids(pTHX_ OP *o, I32 type);
-#define PERL_ARGS_ASSERT_MODKIDS
-STATIC void S_move_proto_attr(pTHX_ OP **proto, OP **attrs, const GV *name, bool curstash);
-#define PERL_ARGS_ASSERT_MOVE_PROTO_ATTR \
- assert(proto); assert(attrs); assert(name)
-STATIC OP * S_my_kid(pTHX_ OP *o, OP *attrs, OP **imopsp);
-#define PERL_ARGS_ASSERT_MY_KID \
- assert(imopsp)
-STATIC OP* S_newGIVWHENOP(pTHX_ OP* cond, OP *block, I32 enter_opcode, I32 leave_opcode, PADOFFSET entertarg);
-#define PERL_ARGS_ASSERT_NEWGIVWHENOP \
- assert(block)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE OP* S_newMETHOP_internal(pTHX_ I32 type, I32 flags, OP* dynamic_meth, SV* const_meth);
-#define PERL_ARGS_ASSERT_NEWMETHOP_INTERNAL
-#endif
-STATIC OP* S_new_logop(pTHX_ I32 type, I32 flags, OP **firstp, OP **otherp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEW_LOGOP \
- assert(firstp); assert(otherp)
-
-STATIC void S_no_bareword_allowed(pTHX_ OP *o);
-#define PERL_ARGS_ASSERT_NO_BAREWORD_ALLOWED \
- assert(o)
-STATIC OP* S_no_fh_allowed(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NO_FH_ALLOWED \
- assert(o)
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE OP* S_op_integerize(pTHX_ OP *o);
-#define PERL_ARGS_ASSERT_OP_INTEGERIZE \
- assert(o)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE OP* S_op_std_init(pTHX_ OP *o);
-#define PERL_ARGS_ASSERT_OP_STD_INIT \
- assert(o)
-#endif
-STATIC void S_optimize_op(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_OPTIMIZE_OP \
- assert(o)
-STATIC OP* S_pmtrans(pTHX_ OP* o, OP* expr, OP* repl);
-#define PERL_ARGS_ASSERT_PMTRANS \
- assert(o); assert(expr); assert(repl)
-STATIC bool S_process_special_blocks(pTHX_ I32 floor, const char *const fullname, GV *const gv, CV *const cv);
-#define PERL_ARGS_ASSERT_PROCESS_SPECIAL_BLOCKS \
- assert(fullname); assert(gv); assert(cv)
-STATIC OP* S_ref_array_or_hash(pTHX_ OP* cond);
-#define PERL_ARGS_ASSERT_REF_ARRAY_OR_HASH
-STATIC OP* S_refkids(pTHX_ OP* o, I32 type);
-#define PERL_ARGS_ASSERT_REFKIDS
-STATIC bool S_scalar_mod_type(const OP *o, I32 type)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SCALAR_MOD_TYPE
-
-STATIC OP* S_scalarboolean(pTHX_ OP *o);
-#define PERL_ARGS_ASSERT_SCALARBOOLEAN \
- assert(o)
-STATIC OP* S_scalarkids(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_SCALARKIDS
-STATIC OP* S_scalarseq(pTHX_ OP* o);
-#define PERL_ARGS_ASSERT_SCALARSEQ
-STATIC OP* S_search_const(pTHX_ OP *o)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SEARCH_CONST \
- assert(o)
-
-STATIC void S_simplify_sort(pTHX_ OP *o);
-#define PERL_ARGS_ASSERT_SIMPLIFY_SORT \
- assert(o)
-STATIC OP* S_too_few_arguments_pv(pTHX_ OP *o, const char* name, U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_TOO_FEW_ARGUMENTS_PV \
- assert(o); assert(name)
-
-STATIC OP* S_too_many_arguments_pv(pTHX_ OP *o, const char* name, U32 flags);
-#define PERL_ARGS_ASSERT_TOO_MANY_ARGUMENTS_PV \
- assert(o); assert(name)
-STATIC OP* S_traverse_op_tree(pTHX_ OP* top, OP* o);
-#define PERL_ARGS_ASSERT_TRAVERSE_OP_TREE \
- assert(top); assert(o)
-# if defined(USE_ITHREADS)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void S_op_relocate_sv(pTHX_ SV** svp, PADOFFSET* targp);
-#define PERL_ARGS_ASSERT_OP_RELOCATE_SV \
- assert(svp); assert(targp)
-#endif
-# endif
+STATIC void
+S_apply_attrs(pTHX_ HV *stash, SV *target, OP *attrs);
+# define PERL_ARGS_ASSERT_APPLY_ATTRS \
+ assert(stash); assert(target)
+
+STATIC void
+S_apply_attrs_my(pTHX_ HV *stash, OP *target, OP *attrs, OP **imopsp);
+# define PERL_ARGS_ASSERT_APPLY_ATTRS_MY \
+ assert(stash); assert(target); assert(imopsp)
+
+STATIC I32
+S_assignment_type(pTHX_ const OP *o)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ASSIGNMENT_TYPE
+
+STATIC void
+S_bad_type_gv(pTHX_ I32 n, GV *gv, const OP *kid, const char *t);
+# define PERL_ARGS_ASSERT_BAD_TYPE_GV \
+ assert(gv); assert(kid); assert(t)
+
+STATIC void
+S_bad_type_pv(pTHX_ I32 n, const char *t, const OP *o, const OP *kid);
+# define PERL_ARGS_ASSERT_BAD_TYPE_PV \
+ assert(t); assert(o); assert(kid)
+
+STATIC void
+S_clear_special_blocks(pTHX_ const char * const fullname, GV * const gv, CV * const cv);
+# define PERL_ARGS_ASSERT_CLEAR_SPECIAL_BLOCKS \
+ assert(fullname); assert(gv); assert(cv)
+
+STATIC void
+S_cop_free(pTHX_ COP *cop);
+# define PERL_ARGS_ASSERT_COP_FREE \
+ assert(cop)
+
+STATIC OP *
+S_dup_attrlist(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_DUP_ATTRLIST \
+ assert(o)
+
+STATIC void
+S_find_and_forget_pmops(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_FIND_AND_FORGET_PMOPS \
+ assert(o)
+
+STATIC OP *
+S_fold_constants(pTHX_ OP * const o);
+# define PERL_ARGS_ASSERT_FOLD_CONSTANTS \
+ assert(o)
+
+STATIC OP *
+S_force_list(pTHX_ OP *arg, bool nullit);
+# define PERL_ARGS_ASSERT_FORCE_LIST
+
+STATIC void
+S_forget_pmop(pTHX_ PMOP * const o);
+# define PERL_ARGS_ASSERT_FORGET_PMOP \
+ assert(o)
+
+STATIC void
+S_gen_constant_list(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_GEN_CONSTANT_LIST
+
+STATIC void
+S_inplace_aassign(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_INPLACE_AASSIGN \
+ assert(o)
+
+STATIC bool
+S_is_handle_constructor(const OP *o, I32 numargs)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_IS_HANDLE_CONSTRUCTOR \
+ assert(o)
+
+STATIC OP *
+S_listkids(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_LISTKIDS
+
+STATIC bool
+S_looks_like_bool(pTHX_ const OP *o);
+# define PERL_ARGS_ASSERT_LOOKS_LIKE_BOOL \
+ assert(o)
+
+STATIC OP *
+S_modkids(pTHX_ OP *o, I32 type);
+# define PERL_ARGS_ASSERT_MODKIDS
+
+STATIC void
+S_move_proto_attr(pTHX_ OP **proto, OP **attrs, const GV *name, bool curstash);
+# define PERL_ARGS_ASSERT_MOVE_PROTO_ATTR \
+ assert(proto); assert(attrs); assert(name)
+
+STATIC OP *
+S_my_kid(pTHX_ OP *o, OP *attrs, OP **imopsp);
+# define PERL_ARGS_ASSERT_MY_KID \
+ assert(imopsp)
+
+STATIC OP *
+S_newGIVWHENOP(pTHX_ OP *cond, OP *block, I32 enter_opcode, I32 leave_opcode, PADOFFSET entertarg);
+# define PERL_ARGS_ASSERT_NEWGIVWHENOP \
+ assert(block)
+
+STATIC OP *
+S_new_logop(pTHX_ I32 type, I32 flags, OP **firstp, OP **otherp)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_NEW_LOGOP \
+ assert(firstp); assert(otherp)
+
+STATIC OP *
+S_no_fh_allowed(pTHX_ OP *o)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_NO_FH_ALLOWED \
+ assert(o)
+
+STATIC OP *
+S_pmtrans(pTHX_ OP *o, OP *expr, OP *repl);
+# define PERL_ARGS_ASSERT_PMTRANS \
+ assert(o); assert(expr); assert(repl)
+
+STATIC bool
+S_process_special_blocks(pTHX_ I32 floor, const char * const fullname, GV * const gv, CV * const cv);
+# define PERL_ARGS_ASSERT_PROCESS_SPECIAL_BLOCKS \
+ assert(fullname); assert(gv); assert(cv)
+
+STATIC OP *
+S_ref_array_or_hash(pTHX_ OP *cond);
+# define PERL_ARGS_ASSERT_REF_ARRAY_OR_HASH
+
+STATIC OP *
+S_refkids(pTHX_ OP *o, I32 type);
+# define PERL_ARGS_ASSERT_REFKIDS
+
+STATIC bool
+S_scalar_mod_type(const OP *o, I32 type)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SCALAR_MOD_TYPE
+
+STATIC OP *
+S_scalarboolean(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_SCALARBOOLEAN \
+ assert(o)
+
+STATIC OP *
+S_scalarkids(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_SCALARKIDS
+
+STATIC OP *
+S_search_const(pTHX_ OP *o)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SEARCH_CONST \
+ assert(o)
+
+STATIC void
+S_simplify_sort(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_SIMPLIFY_SORT \
+ assert(o)
+
+STATIC OP *
+S_too_few_arguments_pv(pTHX_ OP *o, const char *name, U32 flags)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_TOO_FEW_ARGUMENTS_PV \
+ assert(o); assert(name)
+
+STATIC OP *
+S_too_many_arguments_pv(pTHX_ OP *o, const char *name, U32 flags);
+# define PERL_ARGS_ASSERT_TOO_MANY_ARGUMENTS_PV \
+ assert(o); assert(name)
+
+STATIC OP *
+S_voidnonfinal(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_VOIDNONFINAL
+
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE OP *
+S_newMETHOP_internal(pTHX_ I32 type, I32 flags, OP *dynamic_meth, SV * const_meth);
+# define PERL_ARGS_ASSERT_NEWMETHOP_INTERNAL
+
+PERL_STATIC_INLINE OP *
+S_op_integerize(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_OP_INTEGERIZE \
+ assert(o)
+
+PERL_STATIC_INLINE OP *
+S_op_std_init(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_OP_STD_INIT \
+ assert(o)
+
+# endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+#endif /* defined(PERL_IN_OP_C) */
+#if defined(PERL_IN_OP_C) || defined(PERL_IN_PEEP_C)
+PERL_CALLCONV void
+Perl_check_hash_fields_and_hekify(pTHX_ UNOP *rop, SVOP *key_op, int real)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CHECK_HASH_FIELDS_AND_HEKIFY
+
+PERL_CALLCONV void
+Perl_no_bareword_allowed(pTHX_ OP *o)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_NO_BAREWORD_ALLOWED \
+ assert(o)
+
+PERL_CALLCONV void
+Perl_op_prune_chain_head(OP **op_p)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_OP_PRUNE_CHAIN_HEAD \
+ assert(op_p)
+
+PERL_CALLCONV SV *
+Perl_op_varname(pTHX_ const OP *o)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_OP_VARNAME \
+ assert(o)
+
+PERL_CALLCONV void
+Perl_warn_elem_scalar_context(pTHX_ const OP *o, SV *name, bool is_hash, bool is_slice)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_WARN_ELEM_SCALAR_CONTEXT \
+ assert(o); assert(name)
+
+#endif /* defined(PERL_IN_OP_C) || defined(PERL_IN_PEEP_C) */
+#if defined(PERL_IN_OP_C) || defined(PERL_IN_REGCOMP_ANY)
+
#endif
#if defined(PERL_IN_OP_C) || defined(PERL_IN_SV_C)
-PERL_CALLCONV void Perl_report_redefined_cv(pTHX_ const SV *name, const CV *old_cv, SV * const *new_const_svp);
-#define PERL_ARGS_ASSERT_REPORT_REDEFINED_CV \
- assert(name); assert(old_cv)
-#endif
+PERL_CALLCONV void
+Perl_report_redefined_cv(pTHX_ const SV *name, const CV *old_cv, SV * const *new_const_svp)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_REPORT_REDEFINED_CV \
+ assert(name); assert(old_cv)
+
+PERL_CALLCONV SV *
+Perl_varname(pTHX_ const GV * const gv, const char gvtype, PADOFFSET targ, const SV * const keyname, SSize_t aindex, int subscript_type)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_VARNAME
+
+#endif /* defined(PERL_IN_OP_C) || defined(PERL_IN_SV_C) */
#if defined(PERL_IN_PAD_C)
-STATIC PADOFFSET S_pad_alloc_name(pTHX_ PADNAME *name, U32 flags, HV *typestash, HV *ourstash);
-#define PERL_ARGS_ASSERT_PAD_ALLOC_NAME \
- assert(name)
-STATIC void S_pad_check_dup(pTHX_ PADNAME *name, U32 flags, const HV *ourstash);
-#define PERL_ARGS_ASSERT_PAD_CHECK_DUP \
- assert(name)
-STATIC PADOFFSET S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv, U32 seq, int warn, SV** out_capture, PADNAME** out_name, int *out_flags);
-#define PERL_ARGS_ASSERT_PAD_FINDLEX \
- assert(namepv); assert(cv); assert(out_name); assert(out_flags)
-STATIC void S_pad_reset(pTHX);
-#define PERL_ARGS_ASSERT_PAD_RESET
-#endif
-#if defined(PERL_IN_PAD_C) || defined(PERL_IN_OP_C)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool S_PadnameIN_SCOPE(const PADNAME * const pn, const U32 seq);
-#define PERL_ARGS_ASSERT_PADNAMEIN_SCOPE \
- assert(pn)
-#endif
-#endif
-#if defined(PERL_IN_PERLY_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_TOKE_C)
-#ifndef NO_MATHOMS
-PERL_CALLCONV OP* Perl_ref(pTHX_ OP* o, I32 type);
-#define PERL_ARGS_ASSERT_REF
-#endif
-#endif
+STATIC PADOFFSET
+S_pad_alloc_name(pTHX_ PADNAME *name, U32 flags, HV *typestash, HV *ourstash);
+# define PERL_ARGS_ASSERT_PAD_ALLOC_NAME \
+ assert(name)
+
+STATIC void
+S_pad_check_dup(pTHX_ PADNAME *name, U32 flags, const HV *ourstash);
+# define PERL_ARGS_ASSERT_PAD_CHECK_DUP \
+ assert(name)
+
+STATIC PADOFFSET
+S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV *cv, U32 seq, int warn, SV **out_capture, PADNAME **out_name, int *out_flags);
+# define PERL_ARGS_ASSERT_PAD_FINDLEX \
+ assert(namepv); assert(cv); assert(out_name); assert(out_flags)
+
+STATIC void
+S_pad_reset(pTHX);
+# define PERL_ARGS_ASSERT_PAD_RESET
+
+# if defined(DEBUGGING)
+STATIC void
+S_cv_dump(pTHX_ const CV *cv, const char *title);
+# define PERL_ARGS_ASSERT_CV_DUMP \
+ assert(cv); assert(title)
+
+# endif
+#endif /* defined(PERL_IN_PAD_C) */
+#if defined(PERL_IN_PEEP_C)
+STATIC void
+S_finalize_op(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_FINALIZE_OP \
+ assert(o)
+
+STATIC void
+S_optimize_op(pTHX_ OP *o);
+# define PERL_ARGS_ASSERT_OPTIMIZE_OP \
+ assert(o)
+
+STATIC OP *
+S_traverse_op_tree(pTHX_ OP *top, OP *o);
+# define PERL_ARGS_ASSERT_TRAVERSE_OP_TREE \
+ assert(top); assert(o)
+
+#endif /* defined(PERL_IN_PEEP_C) */
#if defined(PERL_IN_PERL_C)
-STATIC void S_find_beginning(pTHX_ SV* linestr_sv, PerlIO *rsfp);
-#define PERL_ARGS_ASSERT_FIND_BEGINNING \
- assert(linestr_sv); assert(rsfp)
-STATIC void S_forbid_setid(pTHX_ const char flag, const bool suidscript);
-#define PERL_ARGS_ASSERT_FORBID_SETID
-STATIC void S_incpush(pTHX_ const char *const dir, STRLEN len, U32 flags);
-#define PERL_ARGS_ASSERT_INCPUSH \
- assert(dir)
-STATIC void S_incpush_use_sep(pTHX_ const char *p, STRLEN len, U32 flags);
-#define PERL_ARGS_ASSERT_INCPUSH_USE_SEP \
- assert(p)
-STATIC void S_init_ids(pTHX);
-#define PERL_ARGS_ASSERT_INIT_IDS
-STATIC void S_init_interp(pTHX);
-#define PERL_ARGS_ASSERT_INIT_INTERP
-STATIC void S_init_main_stash(pTHX);
-#define PERL_ARGS_ASSERT_INIT_MAIN_STASH
-STATIC void S_init_perllib(pTHX);
-#define PERL_ARGS_ASSERT_INIT_PERLLIB
-STATIC void S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env);
-#define PERL_ARGS_ASSERT_INIT_POSTDUMP_SYMBOLS \
- assert(argv)
-STATIC void S_init_predump_symbols(pTHX);
-#define PERL_ARGS_ASSERT_INIT_PREDUMP_SYMBOLS
-STATIC SV* S_mayberelocate(pTHX_ const char *const dir, STRLEN len, U32 flags);
-#define PERL_ARGS_ASSERT_MAYBERELOCATE \
- assert(dir)
-PERL_STATIC_NO_RET void S_minus_v(pTHX)
- __attribute__noreturn__;
-#define PERL_ARGS_ASSERT_MINUS_V
-
-PERL_STATIC_NO_RET void S_my_exit_jump(pTHX)
- __attribute__noreturn__;
-#define PERL_ARGS_ASSERT_MY_EXIT_JUMP
-
-STATIC void S_nuke_stacks(pTHX);
-#define PERL_ARGS_ASSERT_NUKE_STACKS
-STATIC PerlIO * S_open_script(pTHX_ const char *scriptname, bool dosearch, bool *suidscript);
-#define PERL_ARGS_ASSERT_OPEN_SCRIPT \
- assert(scriptname); assert(suidscript)
-STATIC void* S_parse_body(pTHX_ char **env, XSINIT_t xsinit);
-#define PERL_ARGS_ASSERT_PARSE_BODY
-PERL_STATIC_NO_RET void S_run_body(pTHX_ I32 oldscope)
- __attribute__noreturn__;
-#define PERL_ARGS_ASSERT_RUN_BODY
-
-PERL_STATIC_NO_RET void S_usage(pTHX)
- __attribute__noreturn__;
-#define PERL_ARGS_ASSERT_USAGE
-
-#endif
+STATIC void
+S_find_beginning(pTHX_ SV *linestr_sv, PerlIO *rsfp);
+# define PERL_ARGS_ASSERT_FIND_BEGINNING \
+ assert(linestr_sv); assert(rsfp)
+
+STATIC void
+S_forbid_setid(pTHX_ const char flag, const bool suidscript);
+# define PERL_ARGS_ASSERT_FORBID_SETID
+
+STATIC void
+S_incpush(pTHX_ const char * const dir, STRLEN len, U32 flags);
+# define PERL_ARGS_ASSERT_INCPUSH \
+ assert(dir)
+
+STATIC void
+S_incpush_use_sep(pTHX_ const char *p, STRLEN len, U32 flags);
+# define PERL_ARGS_ASSERT_INCPUSH_USE_SEP \
+ assert(p)
+
+STATIC void
+S_init_ids(pTHX);
+# define PERL_ARGS_ASSERT_INIT_IDS
+
+STATIC void
+S_init_interp(pTHX);
+# define PERL_ARGS_ASSERT_INIT_INTERP
+
+STATIC void
+S_init_main_stash(pTHX);
+# define PERL_ARGS_ASSERT_INIT_MAIN_STASH
+
+STATIC void
+S_init_perllib(pTHX);
+# define PERL_ARGS_ASSERT_INIT_PERLLIB
+
+STATIC void
+S_init_postdump_symbols(pTHX_ int argc, char **argv, char **env);
+# define PERL_ARGS_ASSERT_INIT_POSTDUMP_SYMBOLS \
+ assert(argv)
+
+STATIC void
+S_init_predump_symbols(pTHX);
+# define PERL_ARGS_ASSERT_INIT_PREDUMP_SYMBOLS
+
+STATIC SV *
+S_mayberelocate(pTHX_ const char * const dir, STRLEN len, U32 flags);
+# define PERL_ARGS_ASSERT_MAYBERELOCATE \
+ assert(dir)
+
+PERL_STATIC_NO_RET void
+S_minus_v(pTHX)
+ __attribute__noreturn__;
+# define PERL_ARGS_ASSERT_MINUS_V
+
+PERL_STATIC_NO_RET void
+S_my_exit_jump(pTHX)
+ __attribute__noreturn__;
+# define PERL_ARGS_ASSERT_MY_EXIT_JUMP
+
+STATIC void
+S_nuke_stacks(pTHX);
+# define PERL_ARGS_ASSERT_NUKE_STACKS
+
+STATIC PerlIO *
+S_open_script(pTHX_ const char *scriptname, bool dosearch, bool *suidscript);
+# define PERL_ARGS_ASSERT_OPEN_SCRIPT \
+ assert(scriptname); assert(suidscript)
+
+STATIC void *
+S_parse_body(pTHX_ char **env, XSINIT_t xsinit);
+# define PERL_ARGS_ASSERT_PARSE_BODY
+
+PERL_STATIC_NO_RET void
+S_run_body(pTHX_ I32 oldscope)
+ __attribute__noreturn__;
+# define PERL_ARGS_ASSERT_RUN_BODY
+
+PERL_STATIC_NO_RET void
+S_usage(pTHX)
+ __attribute__noreturn__;
+# define PERL_ARGS_ASSERT_USAGE
+
+# if !defined(PERL_IS_MINIPERL)
+STATIC SV *
+S_incpush_if_exists(pTHX_ AV * const av, SV *dir, SV * const stem);
+# define PERL_ARGS_ASSERT_INCPUSH_IF_EXISTS \
+ assert(av); assert(dir); assert(stem)
+
+# endif
+# if !defined(SETUID_SCRIPTS_ARE_SECURE_NOW)
+STATIC void
+S_validate_suid(pTHX_ PerlIO *rsfp);
+# define PERL_ARGS_ASSERT_VALIDATE_SUID \
+ assert(rsfp)
+
+# endif
+#endif /* defined(PERL_IN_PERL_C) */
+#if defined(PERL_IN_PERL_C) || defined(PERL_IN_REGCOMP_ANY) || \
+ defined(PERL_IN_UTF8_C)
+PERL_CALLCONV bool
+Perl__invlistEQ(pTHX_ SV * const a, SV * const b, const bool complement_b);
+# define PERL_ARGS_ASSERT__INVLISTEQ \
+ assert(a); assert(b)
+
+PERL_CALLCONV SV *
+Perl__new_invlist_C_array(pTHX_ const UV * const list)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT__NEW_INVLIST_C_ARRAY \
+ assert(list)
+
+#endif /* defined(PERL_IN_PERL_C) || defined(PERL_IN_REGCOMP_ANY) ||
+ defined(PERL_IN_UTF8_C) */
#if defined(PERL_IN_PP_C)
-STATIC size_t S_do_chomp(pTHX_ SV *retval, SV *sv, bool chomping);
-#define PERL_ARGS_ASSERT_DO_CHOMP \
- assert(retval); assert(sv)
-STATIC OP* S_do_delete_local(pTHX);
-#define PERL_ARGS_ASSERT_DO_DELETE_LOCAL
-STATIC SV* S_refto(pTHX_ SV* sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_REFTO \
- assert(sv)
-
-#endif
+STATIC size_t
+S_do_chomp(pTHX_ SV *retval, SV *sv, bool chomping);
+# define PERL_ARGS_ASSERT_DO_CHOMP \
+ assert(retval); assert(sv)
+
+STATIC OP *
+S_do_delete_local(pTHX);
+# define PERL_ARGS_ASSERT_DO_DELETE_LOCAL
+
+STATIC SV *
+S_refto(pTHX_ SV *sv)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REFTO \
+ assert(sv)
+
+#endif /* defined(PERL_IN_PP_C) */
#if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool S_lossless_NV_to_IV(const NV nv, IV * ivp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_LOSSLESS_NV_TO_IV \
- assert(ivp)
-#endif
-PERL_CALLCONV GV* Perl_softref2xv(pTHX_ SV *const sv, const char *const what, const svtype type, SV ***spp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SOFTREF2XV \
- assert(sv); assert(what); assert(spp)
+PERL_CALLCONV GV *
+Perl_softref2xv(pTHX_ SV * const sv, const char * const what, const svtype type, SV ***spp)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SOFTREF2XV \
+ assert(sv); assert(what); assert(spp)
#endif
-#if defined(PERL_IN_PP_CTL_C)
-STATIC PerlIO * S_check_type_and_open(pTHX_ SV *name)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CHECK_TYPE_AND_OPEN \
- assert(name)
-
-STATIC void S_destroy_matcher(pTHX_ PMOP* matcher);
-#define PERL_ARGS_ASSERT_DESTROY_MATCHER \
- assert(matcher)
-STATIC OP* S_do_smartmatch(pTHX_ HV* seen_this, HV* seen_other, const bool copied);
-#define PERL_ARGS_ASSERT_DO_SMARTMATCH
-STATIC OP* S_docatch(pTHX_ Perl_ppaddr_t firstpp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DOCATCH
-
-STATIC bool S_doeval_compile(pTHX_ U8 gimme, CV* outside, U32 seq, HV* hh);
-#define PERL_ARGS_ASSERT_DOEVAL_COMPILE
-STATIC OP* S_dofindlabel(pTHX_ OP *o, const char *label, STRLEN len, U32 flags, OP **opstack, OP **oplimit)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DOFINDLABEL \
- assert(o); assert(label); assert(opstack); assert(oplimit)
-
-STATIC MAGIC * S_doparseform(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_DOPARSEFORM \
- assert(sv)
-STATIC I32 S_dopoptoeval(pTHX_ I32 startingblock)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DOPOPTOEVAL
-
-STATIC I32 S_dopoptogivenfor(pTHX_ I32 startingblock)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DOPOPTOGIVENFOR
-
-STATIC I32 S_dopoptolabel(pTHX_ const char *label, STRLEN len, U32 flags)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DOPOPTOLABEL \
- assert(label)
-
-STATIC I32 S_dopoptoloop(pTHX_ I32 startingblock)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DOPOPTOLOOP
-
-STATIC I32 S_dopoptosub_at(pTHX_ const PERL_CONTEXT* cxstk, I32 startingblock)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DOPOPTOSUB_AT \
- assert(cxstk)
-
-STATIC I32 S_dopoptowhen(pTHX_ I32 startingblock)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DOPOPTOWHEN
-
-STATIC PMOP* S_make_matcher(pTHX_ REGEXP* re)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_MAKE_MATCHER \
- assert(re)
-
-STATIC bool S_matcher_matches_sv(pTHX_ PMOP* matcher, SV* sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_MATCHER_MATCHES_SV \
- assert(matcher); assert(sv)
-
-STATIC bool S_num_overflow(NV value, I32 fldsize, I32 frcsize)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NUM_OVERFLOW
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool S_path_is_searchable(const char *name)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PATH_IS_SEARCHABLE \
- assert(name)
-#endif
+#if defined(PERL_IN_PP_C) || defined(PERL_IN_UTF8_C)
+PERL_CALLCONV UV
+Perl__to_upper_title_latin1(pTHX_ const U8 c, U8 *p, STRLEN *lenp, const char S_or_s)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT__TO_UPPER_TITLE_LATIN1 \
+ assert(p); assert(lenp)
-STATIC I32 S_run_user_filter(pTHX_ int idx, SV *buf_sv, int maxlen)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_RUN_USER_FILTER \
- assert(buf_sv)
-
-STATIC void S_rxres_free(pTHX_ void** rsp);
-#define PERL_ARGS_ASSERT_RXRES_FREE \
- assert(rsp)
-STATIC void S_rxres_restore(pTHX_ void **rsp, REGEXP *rx);
-#define PERL_ARGS_ASSERT_RXRES_RESTORE \
- assert(rsp); assert(rx)
-STATIC void S_save_lines(pTHX_ AV *array, SV *sv);
-#define PERL_ARGS_ASSERT_SAVE_LINES \
- assert(sv)
-#endif
-#if defined(PERL_IN_PP_HOT_C)
-STATIC void S_do_oddball(pTHX_ SV **oddkey, SV **firstkey);
-#define PERL_ARGS_ASSERT_DO_ODDBALL \
- assert(oddkey); assert(firstkey)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE HV* S_opmethod_stash(pTHX_ SV* meth);
-#define PERL_ARGS_ASSERT_OPMETHOD_STASH \
- assert(meth)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE bool S_should_we_output_Debug_r(pTHX_ regexp * prog)
- __attribute__warn_unused_result__
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_SHOULD_WE_OUTPUT_DEBUG_R \
- assert(prog)
#endif
+#if defined(PERL_IN_PP_CTL_C)
+STATIC PerlIO *
+S_check_type_and_open(pTHX_ SV *name)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_CHECK_TYPE_AND_OPEN \
+ assert(name)
+
+STATIC void
+S_destroy_matcher(pTHX_ PMOP *matcher);
+# define PERL_ARGS_ASSERT_DESTROY_MATCHER \
+ assert(matcher)
+
+STATIC OP *
+S_do_smartmatch(pTHX_ HV *seen_this, HV *seen_other, const bool copied);
+# define PERL_ARGS_ASSERT_DO_SMARTMATCH
+
+STATIC OP *
+S_docatch(pTHX_ Perl_ppaddr_t firstpp)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DOCATCH
+
+STATIC bool
+S_doeval_compile(pTHX_ U8 gimme, CV *outside, U32 seq, HV *hh);
+# define PERL_ARGS_ASSERT_DOEVAL_COMPILE
+
+STATIC OP *
+S_dofindlabel(pTHX_ OP *o, const char *label, STRLEN len, U32 flags, OP **opstack, OP **oplimit)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DOFINDLABEL \
+ assert(o); assert(label); assert(opstack); assert(oplimit)
+
+STATIC MAGIC *
+S_doparseform(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_DOPARSEFORM \
+ assert(sv)
+
+STATIC I32
+S_dopoptoeval(pTHX_ I32 startingblock)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DOPOPTOEVAL
+
+STATIC I32
+S_dopoptogivenfor(pTHX_ I32 startingblock)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DOPOPTOGIVENFOR
+
+STATIC I32
+S_dopoptolabel(pTHX_ const char *label, STRLEN len, U32 flags)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DOPOPTOLABEL \
+ assert(label)
+
+STATIC I32
+S_dopoptoloop(pTHX_ I32 startingblock)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DOPOPTOLOOP
+
+STATIC I32
+S_dopoptosub_at(pTHX_ const PERL_CONTEXT *cxstk, I32 startingblock)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DOPOPTOSUB_AT \
+ assert(cxstk)
+
+STATIC I32
+S_dopoptowhen(pTHX_ I32 startingblock)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DOPOPTOWHEN
+
+STATIC PMOP *
+S_make_matcher(pTHX_ REGEXP *re)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_MAKE_MATCHER \
+ assert(re)
+
+STATIC bool
+S_matcher_matches_sv(pTHX_ PMOP *matcher, SV *sv)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_MATCHER_MATCHES_SV \
+ assert(matcher); assert(sv)
+
+STATIC bool
+S_num_overflow(NV value, I32 fldsize, I32 frcsize)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_NUM_OVERFLOW
+
+STATIC I32
+S_run_user_filter(pTHX_ int idx, SV *buf_sv, int maxlen)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_RUN_USER_FILTER \
+ assert(buf_sv)
+
+STATIC void
+S_rxres_free(pTHX_ void **rsp);
+# define PERL_ARGS_ASSERT_RXRES_FREE \
+ assert(rsp)
+
+STATIC void
+S_rxres_restore(pTHX_ void **rsp, REGEXP *rx);
+# define PERL_ARGS_ASSERT_RXRES_RESTORE \
+ assert(rsp); assert(rx)
+
+STATIC void
+S_save_lines(pTHX_ AV *array, SV *sv);
+# define PERL_ARGS_ASSERT_SAVE_LINES \
+ assert(sv)
+
+# if !defined(PERL_DISABLE_PMC)
+STATIC PerlIO *
+S_doopen_pm(pTHX_ SV *name)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DOOPEN_PM \
+ assert(name)
+
+# endif
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE bool
+S_path_is_searchable(const char *name)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_PATH_IS_SEARCHABLE \
+ assert(name)
+
+# endif
+#endif /* defined(PERL_IN_PP_CTL_C) */
+#if defined(PERL_IN_PP_CTL_C) || defined(PERL_IN_UTIL_C)
+PERL_CALLCONV bool
+Perl_invoke_exception_hook(pTHX_ SV *ex, bool warn)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_INVOKE_EXCEPTION_HOOK
#endif
+#if defined(PERL_IN_PP_HOT_C)
+STATIC void
+S_do_oddball(pTHX_ SV **oddkey, SV **firstkey);
+# define PERL_ARGS_ASSERT_DO_ODDBALL \
+ assert(oddkey); assert(firstkey)
+
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE HV *
+S_opmethod_stash(pTHX_ SV *meth);
+# define PERL_ARGS_ASSERT_OPMETHOD_STASH \
+ assert(meth)
+
+PERL_STATIC_FORCE_INLINE bool
+S_should_we_output_Debug_r(pTHX_ regexp *prog)
+ __attribute__warn_unused_result__
+ __attribute__always_inline__;
+# define PERL_ARGS_ASSERT_SHOULD_WE_OUTPUT_DEBUG_R \
+ assert(prog)
+
+# endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+#endif /* defined(PERL_IN_PP_HOT_C) */
#if defined(PERL_IN_PP_PACK_C)
-STATIC int S_div128(pTHX_ SV *pnum, bool *done);
-#define PERL_ARGS_ASSERT_DIV128 \
- assert(pnum); assert(done)
-STATIC char S_first_symbol(const char *pat, const char *patend);
-#define PERL_ARGS_ASSERT_FIRST_SYMBOL \
- assert(pat); assert(patend)
-STATIC const char * S_get_num(pTHX_ const char *patptr, SSize_t *lenptr)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GET_NUM \
- assert(patptr); assert(lenptr)
-
-STATIC const char * S_group_end(pTHX_ const char *patptr, const char *patend, char ender);
-#define PERL_ARGS_ASSERT_GROUP_END \
- assert(patptr); assert(patend)
-STATIC SV* S_is_an_int(pTHX_ const char *s, STRLEN l)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_IS_AN_INT \
- assert(s)
-
-STATIC SSize_t S_measure_struct(pTHX_ struct tempsym* symptr);
-#define PERL_ARGS_ASSERT_MEASURE_STRUCT \
- assert(symptr)
-STATIC SV* S_mul128(pTHX_ SV *sv, U8 m);
-#define PERL_ARGS_ASSERT_MUL128 \
- assert(sv)
-STATIC char * S_my_bytes_to_utf8(const U8 *start, STRLEN len, char *dest, const bool needs_swap)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_MY_BYTES_TO_UTF8 \
- assert(start); assert(dest)
-
-STATIC bool S_need_utf8(const char *pat, const char *patend);
-#define PERL_ARGS_ASSERT_NEED_UTF8 \
- assert(pat); assert(patend)
-STATIC bool S_next_symbol(pTHX_ struct tempsym* symptr);
-#define PERL_ARGS_ASSERT_NEXT_SYMBOL \
- assert(symptr)
-STATIC SV ** S_pack_rec(pTHX_ SV *cat, struct tempsym* symptr, SV **beglist, SV **endlist);
-#define PERL_ARGS_ASSERT_PACK_REC \
- assert(cat); assert(symptr); assert(beglist); assert(endlist)
-STATIC char * S_sv_exp_grow(pTHX_ SV *sv, STRLEN needed)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_EXP_GROW \
- assert(sv)
-
-STATIC SSize_t S_unpack_rec(pTHX_ struct tempsym* symptr, const char *s, const char *strbeg, const char *strend, const char **new_s);
-#define PERL_ARGS_ASSERT_UNPACK_REC \
- assert(symptr); assert(s); assert(strbeg); assert(strend)
-#endif
+STATIC int
+S_div128(pTHX_ SV *pnum, bool *done);
+# define PERL_ARGS_ASSERT_DIV128 \
+ assert(pnum); assert(done)
+
+STATIC char
+S_first_symbol(const char *pat, const char *patend);
+# define PERL_ARGS_ASSERT_FIRST_SYMBOL \
+ assert(pat); assert(patend)
+
+STATIC const char *
+S_get_num(pTHX_ const char *patptr, SSize_t *lenptr)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GET_NUM \
+ assert(patptr); assert(lenptr)
+
+STATIC const char *
+S_group_end(pTHX_ const char *patptr, const char *patend, char ender);
+# define PERL_ARGS_ASSERT_GROUP_END \
+ assert(patptr); assert(patend)
+
+STATIC SV *
+S_is_an_int(pTHX_ const char *s, STRLEN l)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_IS_AN_INT \
+ assert(s)
+
+STATIC SSize_t
+S_measure_struct(pTHX_ struct tempsym *symptr);
+# define PERL_ARGS_ASSERT_MEASURE_STRUCT \
+ assert(symptr)
+
+STATIC SV *
+S_mul128(pTHX_ SV *sv, U8 m);
+# define PERL_ARGS_ASSERT_MUL128 \
+ assert(sv)
+
+STATIC char *
+S_my_bytes_to_utf8(const U8 *start, STRLEN len, char *dest, const bool needs_swap)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_MY_BYTES_TO_UTF8 \
+ assert(start); assert(dest)
+
+STATIC bool
+S_need_utf8(const char *pat, const char *patend);
+# define PERL_ARGS_ASSERT_NEED_UTF8 \
+ assert(pat); assert(patend)
+
+STATIC bool
+S_next_symbol(pTHX_ struct tempsym *symptr);
+# define PERL_ARGS_ASSERT_NEXT_SYMBOL \
+ assert(symptr)
+
+STATIC SV **
+S_pack_rec(pTHX_ SV *cat, struct tempsym *symptr, SV **beglist, SV **endlist);
+# define PERL_ARGS_ASSERT_PACK_REC \
+ assert(cat); assert(symptr); assert(beglist); assert(endlist)
+
+STATIC char *
+S_sv_exp_grow(pTHX_ SV *sv, STRLEN needed)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SV_EXP_GROW \
+ assert(sv)
+
+STATIC SSize_t
+S_unpack_rec(pTHX_ struct tempsym *symptr, const char *s, const char *strbeg, const char *strend, const char **new_s);
+# define PERL_ARGS_ASSERT_UNPACK_REC \
+ assert(symptr); assert(s); assert(strbeg); assert(strend)
+
+#endif /* defined(PERL_IN_PP_PACK_C) */
#if defined(PERL_IN_PP_SORT_C)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE I32 S_amagic_cmp(pTHX_ SV *const str1, SV *const str2)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_AMAGIC_CMP \
- assert(str1); assert(str2)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE I32 S_amagic_cmp_desc(pTHX_ SV *const str1, SV *const str2)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_AMAGIC_CMP_DESC \
- assert(str1); assert(str2)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE I32 S_amagic_i_ncmp(pTHX_ SV *const a, SV *const b)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_AMAGIC_I_NCMP \
- assert(a); assert(b)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE I32 S_amagic_i_ncmp_desc(pTHX_ SV *const a, SV *const b)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_AMAGIC_I_NCMP_DESC \
- assert(a); assert(b)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE I32 S_amagic_ncmp(pTHX_ SV *const a, SV *const b)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_AMAGIC_NCMP \
- assert(a); assert(b)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE I32 S_amagic_ncmp_desc(pTHX_ SV *const a, SV *const b)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_AMAGIC_NCMP_DESC \
- assert(a); assert(b)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE I32 S_cmp_desc(pTHX_ SV *const str1, SV *const str2)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_CMP_DESC \
- assert(str1); assert(str2)
-#endif
-
-STATIC I32 S_sortcv(pTHX_ SV *const a, SV *const b);
-#define PERL_ARGS_ASSERT_SORTCV \
- assert(a); assert(b)
-STATIC I32 S_sortcv_stacked(pTHX_ SV *const a, SV *const b);
-#define PERL_ARGS_ASSERT_SORTCV_STACKED \
- assert(a); assert(b)
-STATIC I32 S_sortcv_xsub(pTHX_ SV *const a, SV *const b);
-#define PERL_ARGS_ASSERT_SORTCV_XSUB \
- assert(a); assert(b)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE void S_sortsv_flags_impl(pTHX_ SV** array, size_t num_elts, SVCOMPARE_t cmp, U32 flags)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_SORTSV_FLAGS_IMPL \
- assert(cmp)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE I32 S_sv_i_ncmp(pTHX_ SV *const a, SV *const b)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_SV_I_NCMP \
- assert(a); assert(b)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE I32 S_sv_i_ncmp_desc(pTHX_ SV *const a, SV *const b)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_SV_I_NCMP_DESC \
- assert(a); assert(b)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE I32 S_sv_ncmp(pTHX_ SV *const a, SV *const b)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_SV_NCMP \
- assert(a); assert(b)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE I32 S_sv_ncmp_desc(pTHX_ SV *const a, SV *const b)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_SV_NCMP_DESC \
- assert(a); assert(b)
-#endif
-
-# if defined(USE_LOCALE_COLLATE)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE I32 S_amagic_cmp_locale(pTHX_ SV *const str1, SV *const str2)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE \
- assert(str1); assert(str2)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE I32 S_amagic_cmp_locale_desc(pTHX_ SV *const str1, SV *const str2)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE_DESC \
- assert(str1); assert(str2)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_FORCE_INLINE I32 S_cmp_locale_desc(pTHX_ SV *const str1, SV *const str2)
- __attribute__always_inline__;
-#define PERL_ARGS_ASSERT_CMP_LOCALE_DESC \
- assert(str1); assert(str2)
-#endif
-
-# endif
-#endif
+STATIC I32
+S_sortcv(pTHX_ SV * const a, SV * const b);
+# define PERL_ARGS_ASSERT_SORTCV \
+ assert(a); assert(b)
+
+STATIC I32
+S_sortcv_stacked(pTHX_ SV * const a, SV * const b);
+# define PERL_ARGS_ASSERT_SORTCV_STACKED \
+ assert(a); assert(b)
+
+STATIC I32
+S_sortcv_xsub(pTHX_ SV * const a, SV * const b);
+# define PERL_ARGS_ASSERT_SORTCV_XSUB \
+ assert(a); assert(b)
+
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE I32
+S_amagic_cmp(pTHX_ SV * const str1, SV * const str2);
+# define PERL_ARGS_ASSERT_AMAGIC_CMP \
+ assert(str1); assert(str2)
+
+PERL_STATIC_INLINE I32
+S_amagic_cmp_desc(pTHX_ SV * const str1, SV * const str2);
+# define PERL_ARGS_ASSERT_AMAGIC_CMP_DESC \
+ assert(str1); assert(str2)
+
+PERL_STATIC_INLINE I32
+S_amagic_i_ncmp(pTHX_ SV * const a, SV * const b);
+# define PERL_ARGS_ASSERT_AMAGIC_I_NCMP \
+ assert(a); assert(b)
+
+PERL_STATIC_INLINE I32
+S_amagic_i_ncmp_desc(pTHX_ SV * const a, SV * const b);
+# define PERL_ARGS_ASSERT_AMAGIC_I_NCMP_DESC \
+ assert(a); assert(b)
+
+PERL_STATIC_INLINE I32
+S_amagic_ncmp(pTHX_ SV * const a, SV * const b);
+# define PERL_ARGS_ASSERT_AMAGIC_NCMP \
+ assert(a); assert(b)
+
+PERL_STATIC_INLINE I32
+S_amagic_ncmp_desc(pTHX_ SV * const a, SV * const b);
+# define PERL_ARGS_ASSERT_AMAGIC_NCMP_DESC \
+ assert(a); assert(b)
+
+PERL_STATIC_INLINE I32
+S_cmp_desc(pTHX_ SV * const str1, SV * const str2);
+# define PERL_ARGS_ASSERT_CMP_DESC \
+ assert(str1); assert(str2)
+
+PERL_STATIC_FORCE_INLINE void
+S_sortsv_flags_impl(pTHX_ SV **array, size_t num_elts, SVCOMPARE_t cmp, U32 flags)
+ __attribute__always_inline__;
+# define PERL_ARGS_ASSERT_SORTSV_FLAGS_IMPL \
+ assert(cmp)
+
+PERL_STATIC_INLINE I32
+S_sv_i_ncmp(pTHX_ SV * const a, SV * const b);
+# define PERL_ARGS_ASSERT_SV_I_NCMP \
+ assert(a); assert(b)
+
+PERL_STATIC_INLINE I32
+S_sv_i_ncmp_desc(pTHX_ SV * const a, SV * const b);
+# define PERL_ARGS_ASSERT_SV_I_NCMP_DESC \
+ assert(a); assert(b)
+
+PERL_STATIC_INLINE I32
+S_sv_ncmp(pTHX_ SV * const a, SV * const b);
+# define PERL_ARGS_ASSERT_SV_NCMP \
+ assert(a); assert(b)
+
+PERL_STATIC_INLINE I32
+S_sv_ncmp_desc(pTHX_ SV * const a, SV * const b);
+# define PERL_ARGS_ASSERT_SV_NCMP_DESC \
+ assert(a); assert(b)
+
+# if defined(USE_LOCALE_COLLATE)
+PERL_STATIC_INLINE I32
+S_amagic_cmp_locale(pTHX_ SV * const str1, SV * const str2);
+# define PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE \
+ assert(str1); assert(str2)
+
+PERL_STATIC_INLINE I32
+S_amagic_cmp_locale_desc(pTHX_ SV * const str1, SV * const str2);
+# define PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE_DESC \
+ assert(str1); assert(str2)
+
+PERL_STATIC_INLINE I32
+S_cmp_locale_desc(pTHX_ SV * const str1, SV * const str2);
+# define PERL_ARGS_ASSERT_CMP_LOCALE_DESC \
+ assert(str1); assert(str2)
+
+# endif /* defined(USE_LOCALE_COLLATE) */
+# endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+#endif /* defined(PERL_IN_PP_SORT_C) */
#if defined(PERL_IN_PP_SYS_C)
-STATIC OP* S_doform(pTHX_ CV *cv, GV *gv, OP *retop);
-#define PERL_ARGS_ASSERT_DOFORM \
- assert(cv); assert(gv)
-STATIC SV * S_space_join_names_mortal(pTHX_ char *const *array);
-#define PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL
-#endif
-#if defined(PERL_IN_REGCOMP_C)
-STATIC void S_add_above_Latin1_folds(pTHX_ RExC_state_t *pRExC_state, const U8 cp, SV** invlist);
-#define PERL_ARGS_ASSERT_ADD_ABOVE_LATIN1_FOLDS \
- assert(pRExC_state); assert(invlist)
-STATIC U32 S_add_data(RExC_state_t* const pRExC_state, const char* const s, const U32 n)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ADD_DATA \
- assert(pRExC_state); assert(s)
-
-STATIC AV* S_add_multi_match(pTHX_ AV* multi_char_matches, SV* multi_string, const STRLEN cp_count);
-#define PERL_ARGS_ASSERT_ADD_MULTI_MATCH \
- assert(multi_string)
-STATIC void S_change_engine_size(pTHX_ RExC_state_t *pRExC_state, const Ptrdiff_t size);
-#define PERL_ARGS_ASSERT_CHANGE_ENGINE_SIZE \
- assert(pRExC_state)
-STATIC REGEXP* S_compile_wildcard(pTHX_ const char * subpattern, const STRLEN len, const bool ignore_case)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_COMPILE_WILDCARD \
- assert(subpattern)
-
-STATIC U8 S_compute_EXACTish(RExC_state_t *pRExC_state);
-#define PERL_ARGS_ASSERT_COMPUTE_EXACTISH \
- assert(pRExC_state)
-STATIC regnode * S_construct_ahocorasick_from_trie(pTHX_ RExC_state_t *pRExC_state, regnode *source, U32 depth);
-#define PERL_ARGS_ASSERT_CONSTRUCT_AHOCORASICK_FROM_TRIE \
- assert(pRExC_state); assert(source)
-STATIC int S_edit_distance(const UV *src, const UV *tgt, const STRLEN x, const STRLEN y, const SSize_t maxDistance)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_EDIT_DISTANCE \
- assert(src); assert(tgt)
-
-STATIC I32 S_execute_wildcard(pTHX_ REGEXP * const prog, char* stringarg, char* strend, char* strbeg, SSize_t minend, SV* screamer, U32 nosave);
-#define PERL_ARGS_ASSERT_EXECUTE_WILDCARD \
- assert(prog); assert(stringarg); assert(strend); assert(strbeg); assert(screamer)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE Size_t S_find_first_differing_byte_pos(const U8 * s1, const U8 * s2, const Size_t max);
-#define PERL_ARGS_ASSERT_FIND_FIRST_DIFFERING_BYTE_POS \
- assert(s1); assert(s2)
-#endif
-STATIC SV * S_get_ANYOFM_contents(pTHX_ const regnode * n)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GET_ANYOFM_CONTENTS \
- assert(n)
-
-STATIC SV* S_get_ANYOF_cp_list_for_ssc(pTHX_ const RExC_state_t *pRExC_state, const regnode_charclass* const node);
-#define PERL_ARGS_ASSERT_GET_ANYOF_CP_LIST_FOR_SSC \
- assert(pRExC_state); assert(node)
-STATIC U32 S_get_quantifier_value(pTHX_ RExC_state_t *pRExC_state, const char * start, const char * end);
-#define PERL_ARGS_ASSERT_GET_QUANTIFIER_VALUE \
- assert(pRExC_state); assert(start); assert(end)
-STATIC bool S_grok_bslash_N(pTHX_ RExC_state_t *pRExC_state, regnode_offset* nodep, UV *code_point_p, int* cp_count, I32 *flagp, const bool strict, const U32 depth);
-#define PERL_ARGS_ASSERT_GROK_BSLASH_N \
- assert(pRExC_state); assert(flagp)
-STATIC regnode_offset S_handle_named_backref(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, char * parse_start, char ch);
-#define PERL_ARGS_ASSERT_HANDLE_NAMED_BACKREF \
- assert(pRExC_state); assert(flagp); assert(parse_start)
-STATIC bool S_handle_names_wildcard(pTHX_ const char * wname, const STRLEN wname_len, SV ** prop_definition, AV ** strings);
-#define PERL_ARGS_ASSERT_HANDLE_NAMES_WILDCARD \
- assert(wname); assert(prop_definition); assert(strings)
-STATIC int S_handle_possible_posix(pTHX_ RExC_state_t *pRExC_state, const char* const s, char ** updated_parse_ptr, AV** posix_warnings, const bool check_only);
-#define PERL_ARGS_ASSERT_HANDLE_POSSIBLE_POSIX \
- assert(pRExC_state); assert(s)
-STATIC regnode_offset S_handle_regex_sets(pTHX_ RExC_state_t *pRExC_state, SV ** return_invlist, I32 *flagp, U32 depth, char * const oregcomp_parse);
-#define PERL_ARGS_ASSERT_HANDLE_REGEX_SETS \
- assert(pRExC_state); assert(flagp); assert(oregcomp_parse)
-STATIC SV * S_handle_user_defined_property(pTHX_ const char * name, const STRLEN name_len, const bool is_utf8, const bool to_fold, const bool runtime, const bool deferrable, SV* contents, bool *user_defined_ptr, SV * msg, const STRLEN level);
-#define PERL_ARGS_ASSERT_HANDLE_USER_DEFINED_PROPERTY \
- assert(name); assert(contents); assert(user_defined_ptr); assert(msg)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE SV* S_invlist_contents(pTHX_ SV* const invlist, const bool traditional_style)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_INVLIST_CONTENTS \
- assert(invlist)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool S_invlist_is_iterating(SV* const invlist)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_INVLIST_IS_ITERATING \
- assert(invlist)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE UV S_invlist_lowest(SV* const invlist)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_INVLIST_LOWEST \
- assert(invlist)
-#endif
-
-STATIC bool S_is_ssc_worth_it(const RExC_state_t * pRExC_state, const regnode_ssc * ssc);
-#define PERL_ARGS_ASSERT_IS_SSC_WORTH_IT \
- assert(pRExC_state); assert(ssc)
-STATIC U32 S_join_exact(pTHX_ RExC_state_t *pRExC_state, regnode *scan, UV *min_subtract, bool *unfolded_multi_char, U32 flags, regnode *val, U32 depth);
-#define PERL_ARGS_ASSERT_JOIN_EXACT \
- assert(pRExC_state); assert(scan); assert(min_subtract); assert(unfolded_multi_char)
-STATIC SV* S_make_exactf_invlist(pTHX_ RExC_state_t *pRExC_state, regnode *node)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_MAKE_EXACTF_INVLIST \
- assert(pRExC_state); assert(node)
-
-STATIC I32 S_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 word_count, U32 flags, U32 depth);
-#define PERL_ARGS_ASSERT_MAKE_TRIE \
- assert(pRExC_state); assert(startbranch); assert(first); assert(last); assert(tail)
-STATIC void S_nextchar(pTHX_ RExC_state_t *pRExC_state);
-#define PERL_ARGS_ASSERT_NEXTCHAR \
- assert(pRExC_state)
-STATIC void S_output_posix_warnings(pTHX_ RExC_state_t *pRExC_state, AV* posix_warnings);
-#define PERL_ARGS_ASSERT_OUTPUT_POSIX_WARNINGS \
- assert(pRExC_state); assert(posix_warnings)
-STATIC void S_parse_lparen_question_flags(pTHX_ RExC_state_t *pRExC_state);
-#define PERL_ARGS_ASSERT_PARSE_LPAREN_QUESTION_FLAGS \
- assert(pRExC_state)
-STATIC SV * S_parse_uniprop_string(pTHX_ const char * const name, Size_t name_len, const bool is_utf8, const bool to_fold, const bool runtime, const bool deferrable, AV ** strings, bool * user_defined_ptr, SV * msg, const STRLEN level);
-#define PERL_ARGS_ASSERT_PARSE_UNIPROP_STRING \
- assert(name); assert(user_defined_ptr); assert(msg)
-STATIC void S_populate_ANYOF_from_invlist(pTHX_ regnode *node, SV** invlist_ptr);
-#define PERL_ARGS_ASSERT_POPULATE_ANYOF_FROM_INVLIST \
- assert(node); assert(invlist_ptr)
-STATIC void S_rck_elide_nothing(pTHX_ regnode *node);
-#define PERL_ARGS_ASSERT_RCK_ELIDE_NOTHING \
- assert(node)
-PERL_STATIC_NO_RET void S_re_croak(pTHX_ bool utf8, const char* pat, ...)
- __attribute__noreturn__
- __attribute__format__(__printf__,pTHX_2,pTHX_3);
-#define PERL_ARGS_ASSERT_RE_CROAK \
- assert(pat)
-
-STATIC regnode_offset S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth);
-#define PERL_ARGS_ASSERT_REG \
- assert(pRExC_state); assert(flagp)
-STATIC regnode_offset S_reg2Lanode(pTHX_ RExC_state_t *pRExC_state, const U8 op, const U32 arg1, const I32 arg2);
-#define PERL_ARGS_ASSERT_REG2LANODE \
- assert(pRExC_state)
-STATIC regnode_offset S_reg_node(pTHX_ RExC_state_t *pRExC_state, U8 op);
-#define PERL_ARGS_ASSERT_REG_NODE \
- assert(pRExC_state)
-STATIC SV * S_reg_scan_name(pTHX_ RExC_state_t *pRExC_state, U32 flags);
-#define PERL_ARGS_ASSERT_REG_SCAN_NAME \
- assert(pRExC_state)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE char * S_reg_skipcomment(RExC_state_t *pRExC_state, char * p);
-#define PERL_ARGS_ASSERT_REG_SKIPCOMMENT \
- assert(pRExC_state); assert(p)
-#endif
-STATIC regnode_offset S_reganode(pTHX_ RExC_state_t *pRExC_state, U8 op, U32 arg);
-#define PERL_ARGS_ASSERT_REGANODE \
- assert(pRExC_state)
-STATIC regnode_offset S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth);
-#define PERL_ARGS_ASSERT_REGATOM \
- assert(pRExC_state); assert(flagp)
-STATIC regnode_offset S_regbranch(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, I32 first, U32 depth);
-#define PERL_ARGS_ASSERT_REGBRANCH \
- assert(pRExC_state); assert(flagp)
-STATIC regnode_offset S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth, const bool stop_at_1, bool allow_multi_fold, const bool silence_non_portable, const bool strict, bool optimizable, SV** ret_invlist);
-#define PERL_ARGS_ASSERT_REGCLASS \
- assert(pRExC_state); assert(flagp)
-STATIC unsigned int S_regex_set_precedence(const U8 my_operator)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_REGEX_SET_PRECEDENCE
-
-STATIC void S_reginsert(pTHX_ RExC_state_t *pRExC_state, const U8 op, const regnode_offset operand, const U32 depth);
-#define PERL_ARGS_ASSERT_REGINSERT \
- assert(pRExC_state)
-STATIC regnode_offset S_regnode_guts(pTHX_ RExC_state_t *pRExC_state, const U8 op, const STRLEN extra_len, const char* const name);
-#define PERL_ARGS_ASSERT_REGNODE_GUTS \
- assert(pRExC_state); assert(name)
-STATIC regnode_offset S_regpiece(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth);
-#define PERL_ARGS_ASSERT_REGPIECE \
- assert(pRExC_state); assert(flagp)
-STATIC regnode_offset S_regpnode(pTHX_ RExC_state_t *pRExC_state, U8 op, SV * arg);
-#define PERL_ARGS_ASSERT_REGPNODE \
- assert(pRExC_state); assert(arg)
-STATIC bool S_regtail(pTHX_ RExC_state_t * pRExC_state, const regnode_offset p, const regnode_offset val, const U32 depth)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_REGTAIL \
- assert(pRExC_state); assert(p); assert(val)
-
-STATIC void S_scan_commit(pTHX_ const RExC_state_t *pRExC_state, struct scan_data_t *data, SSize_t *minlenp, int is_inf);
-#define PERL_ARGS_ASSERT_SCAN_COMMIT \
- assert(pRExC_state); assert(data); assert(minlenp)
-STATIC void S_set_ANYOF_arg(pTHX_ RExC_state_t* const pRExC_state, regnode* const node, SV* const cp_list, SV* const runtime_defns, SV* const only_utf8_locale_list);
-#define PERL_ARGS_ASSERT_SET_ANYOF_ARG \
- assert(pRExC_state); assert(node)
-STATIC void S_set_regex_pv(pTHX_ RExC_state_t *pRExC_state, REGEXP *Rx);
-#define PERL_ARGS_ASSERT_SET_REGEX_PV \
- assert(pRExC_state); assert(Rx)
-STATIC void S_skip_to_be_ignored_text(pTHX_ RExC_state_t *pRExC_state, char ** p, const bool force_to_xmod);
-#define PERL_ARGS_ASSERT_SKIP_TO_BE_IGNORED_TEXT \
- assert(pRExC_state); assert(p)
-STATIC void S_ssc_add_range(pTHX_ regnode_ssc *ssc, UV const start, UV const end);
-#define PERL_ARGS_ASSERT_SSC_ADD_RANGE \
- assert(ssc)
-STATIC void S_ssc_and(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc, const regnode_charclass *and_with);
-#define PERL_ARGS_ASSERT_SSC_AND \
- assert(pRExC_state); assert(ssc); assert(and_with)
-STATIC void S_ssc_anything(pTHX_ regnode_ssc *ssc);
-#define PERL_ARGS_ASSERT_SSC_ANYTHING \
- assert(ssc)
-STATIC void S_ssc_clear_locale(regnode_ssc *ssc);
-#define PERL_ARGS_ASSERT_SSC_CLEAR_LOCALE \
- assert(ssc)
-STATIC void S_ssc_cp_and(pTHX_ regnode_ssc *ssc, UV const cp);
-#define PERL_ARGS_ASSERT_SSC_CP_AND \
- assert(ssc)
-STATIC void S_ssc_finalize(pTHX_ RExC_state_t *pRExC_state, regnode_ssc *ssc);
-#define PERL_ARGS_ASSERT_SSC_FINALIZE \
- assert(pRExC_state); assert(ssc)
-STATIC void S_ssc_init(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc);
-#define PERL_ARGS_ASSERT_SSC_INIT \
- assert(pRExC_state); assert(ssc)
-STATIC void S_ssc_intersection(pTHX_ regnode_ssc *ssc, SV* const invlist, const bool invert_2nd);
-#define PERL_ARGS_ASSERT_SSC_INTERSECTION \
- assert(ssc); assert(invlist)
-STATIC int S_ssc_is_anything(const regnode_ssc *ssc)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SSC_IS_ANYTHING \
- assert(ssc)
-
-STATIC int S_ssc_is_cp_posixl_init(const RExC_state_t *pRExC_state, const regnode_ssc *ssc)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SSC_IS_CP_POSIXL_INIT \
- assert(pRExC_state); assert(ssc)
-
-STATIC void S_ssc_or(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc, const regnode_charclass *or_with);
-#define PERL_ARGS_ASSERT_SSC_OR \
- assert(pRExC_state); assert(ssc); assert(or_with)
-STATIC void S_ssc_union(pTHX_ regnode_ssc *ssc, SV* const invlist, const bool invert_2nd);
-#define PERL_ARGS_ASSERT_SSC_UNION \
- assert(ssc); assert(invlist)
-STATIC SSize_t S_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, SSize_t *minlenp, SSize_t *deltap, regnode *last, struct scan_data_t *data, I32 stopparen, U32 recursed_depth, regnode_ssc *and_withp, U32 flags, U32 depth, bool was_mutate_ok);
-#define PERL_ARGS_ASSERT_STUDY_CHUNK \
- assert(pRExC_state); assert(scanp); assert(minlenp); assert(deltap); assert(last)
-#endif
-#if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C) || defined(PERL_IN_OP_C)
-PERL_CALLCONV void Perl__invlist_dump(pTHX_ PerlIO *file, I32 level, const char* const indent, SV* const invlist);
-#define PERL_ARGS_ASSERT__INVLIST_DUMP \
- assert(file); assert(indent); assert(invlist)
-#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE SV* S_add_cp_to_invlist(pTHX_ SV* invlist, const UV cp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ADD_CP_TO_INVLIST
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void S_invlist_extend(pTHX_ SV* const invlist, const UV len);
-#define PERL_ARGS_ASSERT_INVLIST_EXTEND \
- assert(invlist)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE UV S_invlist_highest(SV* const invlist)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_INVLIST_HIGHEST \
- assert(invlist)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void S_invlist_set_len(pTHX_ SV* const invlist, const UV len, const bool offset);
-#define PERL_ARGS_ASSERT_INVLIST_SET_LEN \
- assert(invlist)
-#endif
-#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_UTF8_C)
-PERL_CALLCONV SV* Perl__add_range_to_invlist(pTHX_ SV* invlist, UV start, UV end)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__ADD_RANGE_TO_INVLIST
-
-/* PERL_CALLCONV void _invlist_intersection(pTHX_ SV* const a, SV* const b, SV** i); */
-#define PERL_ARGS_ASSERT__INVLIST_INTERSECTION
-PERL_CALLCONV void Perl__invlist_intersection_maybe_complement_2nd(pTHX_ SV* const a, SV* const b, const bool complement_b, SV** i);
-#define PERL_ARGS_ASSERT__INVLIST_INTERSECTION_MAYBE_COMPLEMENT_2ND \
- assert(b); assert(i)
-PERL_CALLCONV void Perl__invlist_invert(pTHX_ SV* const invlist);
-#define PERL_ARGS_ASSERT__INVLIST_INVERT \
- assert(invlist)
-/* PERL_CALLCONV void _invlist_subtract(pTHX_ SV* const a, SV* const b, SV** result); */
-#define PERL_ARGS_ASSERT__INVLIST_SUBTRACT
-/* PERL_CALLCONV void _invlist_union(pTHX_ SV* const a, SV* const b, SV** output); */
-#define PERL_ARGS_ASSERT__INVLIST_UNION
-PERL_CALLCONV void Perl__invlist_union_maybe_complement_2nd(pTHX_ SV* const a, SV* const b, const bool complement_b, SV** output);
-#define PERL_ARGS_ASSERT__INVLIST_UNION_MAYBE_COMPLEMENT_2ND \
- assert(b); assert(output)
-PERL_CALLCONV SV* Perl__new_invlist(pTHX_ IV initial_size)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__NEW_INVLIST
-
-PERL_CALLCONV SV* Perl__setup_canned_invlist(pTHX_ const STRLEN size, const UV element0, UV** other_elements_ptr)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__SETUP_CANNED_INVLIST \
- assert(other_elements_ptr)
+STATIC OP *
+S_doform(pTHX_ CV *cv, GV *gv, OP *retop);
+# define PERL_ARGS_ASSERT_DOFORM \
+ assert(cv); assert(gv)
+
+STATIC SV *
+S_space_join_names_mortal(pTHX_ char * const *array);
+# define PERL_ARGS_ASSERT_SPACE_JOIN_NAMES_MORTAL
+
+# if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
+STATIC int
+S_dooneliner(pTHX_ const char *cmd, const char *filename)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DOONELINER \
+ assert(cmd); assert(filename)
+
+# endif
+#endif /* defined(PERL_IN_PP_SYS_C) */
+#if defined(PERL_IN_REGCOMP_ANY)
+PERL_CALLCONV void
+Perl_add_above_Latin1_folds(pTHX_ RExC_state_t *pRExC_state, const U8 cp, SV **invlist)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_ADD_ABOVE_LATIN1_FOLDS \
+ assert(pRExC_state); assert(invlist)
+
+PERL_CALLCONV regnode *
+Perl_construct_ahocorasick_from_trie(pTHX_ RExC_state_t *pRExC_state, regnode *source, U32 depth)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_CONSTRUCT_AHOCORASICK_FROM_TRIE \
+ assert(pRExC_state); assert(source)
+
+PERL_CALLCONV SV *
+Perl_get_ANYOFHbbm_contents(pTHX_ const regnode *n)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_GET_ANYOFHBBM_CONTENTS \
+ assert(n)
+
+PERL_CALLCONV SV *
+Perl_get_ANYOFM_contents(pTHX_ const regnode *n)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_GET_ANYOFM_CONTENTS \
+ assert(n)
+
+PERL_CALLCONV bool
+Perl_is_ssc_worth_it(const RExC_state_t *pRExC_state, const regnode_ssc *ssc)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_IS_SSC_WORTH_IT \
+ assert(pRExC_state); assert(ssc)
+
+PERL_CALLCONV U32
+Perl_join_exact(pTHX_ RExC_state_t *pRExC_state, regnode *scan, UV *min_subtract, bool *unfolded_multi_char, U32 flags, regnode *val, U32 depth)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_JOIN_EXACT \
+ assert(pRExC_state); assert(scan); assert(min_subtract); assert(unfolded_multi_char)
+
+PERL_CALLCONV I32
+Perl_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch, regnode *first, regnode *last, regnode *tail, U32 word_count, U32 flags, U32 depth)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_MAKE_TRIE \
+ assert(pRExC_state); assert(startbranch); assert(first); assert(last); \
+ assert(tail)
+
+PERL_CALLCONV void
+Perl_populate_anyof_bitmap_from_invlist(pTHX_ regnode *node, SV **invlist_ptr)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_POPULATE_ANYOF_BITMAP_FROM_INVLIST \
+ assert(node); assert(invlist_ptr)
+
+PERL_CALLCONV U32
+Perl_reg_add_data(RExC_state_t * const pRExC_state, const char * const s, const U32 n)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_REG_ADD_DATA \
+ assert(pRExC_state); assert(s)
+
+PERL_CALLCONV void
+Perl_scan_commit(pTHX_ const RExC_state_t *pRExC_state, struct scan_data_t *data, SSize_t *minlenp, int is_inf)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_SCAN_COMMIT \
+ assert(pRExC_state); assert(data); assert(minlenp)
+
+PERL_CALLCONV void
+Perl_set_ANYOF_arg(pTHX_ RExC_state_t * const pRExC_state, regnode * const node, SV * const cp_list, SV * const runtime_defns, SV * const only_utf8_locale_list)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_SET_ANYOF_ARG \
+ assert(pRExC_state); assert(node)
+
+PERL_CALLCONV void
+Perl_ssc_finalize(pTHX_ RExC_state_t *pRExC_state, regnode_ssc *ssc)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_SSC_FINALIZE \
+ assert(pRExC_state); assert(ssc)
+
+PERL_CALLCONV void
+Perl_ssc_init(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_SSC_INIT \
+ assert(pRExC_state); assert(ssc)
+
+PERL_CALLCONV SSize_t
+Perl_study_chunk(pTHX_ RExC_state_t *pRExC_state, regnode **scanp, SSize_t *minlenp, SSize_t *deltap, regnode *last, struct scan_data_t *data, I32 stopparen, U32 recursed_depth, regnode_ssc *and_withp, U32 flags, U32 depth, bool was_mutate_ok)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_STUDY_CHUNK \
+ assert(pRExC_state); assert(scanp); assert(minlenp); assert(deltap); \
+ assert(last)
+
+# if defined(PERL_IN_REGCOMP_TRIE_C) && defined(DEBUGGING)
+STATIC void
+S_dump_trie(pTHX_ const struct _reg_trie_data *trie, HV *widecharmap, AV *revcharmap, U32 depth);
+# define PERL_ARGS_ASSERT_DUMP_TRIE \
+ assert(trie); assert(revcharmap)
+
+STATIC void
+S_dump_trie_interim_list(pTHX_ const struct _reg_trie_data *trie, HV *widecharmap, AV *revcharmap, U32 next_alloc, U32 depth);
+# define PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_LIST \
+ assert(trie); assert(revcharmap)
+
+STATIC void
+S_dump_trie_interim_table(pTHX_ const struct _reg_trie_data *trie, HV *widecharmap, AV *revcharmap, U32 next_alloc, U32 depth);
+# define PERL_ARGS_ASSERT_DUMP_TRIE_INTERIM_TABLE \
+ assert(trie); assert(revcharmap)
+
+# endif /* defined(PERL_IN_REGCOMP_TRIE_C) && defined(DEBUGGING) */
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE SV *
+S_invlist_contents(pTHX_ SV * const invlist, const bool traditional_style)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_INVLIST_CONTENTS \
+ assert(invlist)
+
+PERL_STATIC_INLINE UV
+S_invlist_highest_range_start(SV * const invlist)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_INVLIST_HIGHEST_RANGE_START \
+ assert(invlist)
+
+PERL_STATIC_INLINE bool
+S_invlist_is_iterating(const SV * const invlist)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_INVLIST_IS_ITERATING \
+ assert(invlist)
+
+PERL_STATIC_INLINE UV
+S_invlist_lowest(SV * const invlist)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_INVLIST_LOWEST \
+ assert(invlist)
+
+# endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+#endif /* defined(PERL_IN_REGCOMP_ANY) */
+#if defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_SV_C)
+PERL_CALLCONV SV *
+Perl_invlist_clone(pTHX_ SV * const invlist, SV *newlist);
+# define PERL_ARGS_ASSERT_INVLIST_CLONE \
+ assert(invlist)
#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_TOKE_C)
-PERL_CALLCONV const char * Perl_form_alien_digit_msg(pTHX_ const U8 which, const STRLEN valids_len, const char * const first_bad, const char * const send, const bool UTF, const bool braced)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_FORM_ALIEN_DIGIT_MSG \
- assert(first_bad); assert(send)
-
-PERL_CALLCONV bool Perl_grok_bslash_c(pTHX_ const char source, U8 * result, const char** message, U32 * packed_warn)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GROK_BSLASH_C \
- assert(result); assert(message)
-
-PERL_CALLCONV bool Perl_grok_bslash_o(pTHX_ char** s, const char* const send, UV* uv, const char** message, U32 * packed_warn, const bool strict, const bool allow_UV_MAX, const bool utf8)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GROK_BSLASH_O \
- assert(s); assert(send); assert(uv); assert(message)
-
-PERL_CALLCONV bool Perl_grok_bslash_x(pTHX_ char** s, const char* const send, UV* uv, const char** message, U32 * packed_warn, const bool strict, const bool allow_UV_MAX, const bool utf8)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GROK_BSLASH_X \
- assert(s); assert(send); assert(uv); assert(message)
-
-#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_DQUOTE_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C)
-PERL_CALLCONV const char * Perl_form_cp_too_large_msg(pTHX_ const U8 which, const char * string, const Size_t len, const UV cp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_FORM_CP_TOO_LARGE_MSG
-
-#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_OP_C)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE STRLEN* S_get_invlist_iter_addr(SV* invlist)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GET_INVLIST_ITER_ADDR \
- assert(invlist)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void S_invlist_iterfinish(SV* invlist);
-#define PERL_ARGS_ASSERT_INVLIST_ITERFINISH \
- assert(invlist)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void S_invlist_iterinit(SV* invlist);
-#define PERL_ARGS_ASSERT_INVLIST_ITERINIT \
- assert(invlist)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool S_invlist_iternext(SV* invlist, UV* start, UV* end)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_INVLIST_ITERNEXT \
- assert(invlist); assert(start); assert(end)
-#endif
-
-#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C)
-PERL_CALLCONV bool Perl__invlistEQ(pTHX_ SV* const a, SV* const b, const bool complement_b);
-#define PERL_ARGS_ASSERT__INVLISTEQ \
- assert(a); assert(b)
-PERL_CALLCONV SV* Perl__new_invlist_C_array(pTHX_ const UV* const list)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__NEW_INVLIST_C_ARRAY \
- assert(list)
-
-#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE const char * S_get_regex_charset_name(const U32 flags, STRLEN* const lenp);
-#define PERL_ARGS_ASSERT_GET_REGEX_CHARSET_NAME \
- assert(lenp)
-#endif
-#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
-PERL_CALLCONV int Perl_re_printf(pTHX_ const char *fmt, ...)
- __attribute__format__(__printf__,pTHX_1,pTHX_2);
-#define PERL_ARGS_ASSERT_RE_PRINTF \
- assert(fmt)
-
-PERL_CALLCONV void Perl_regprop(pTHX_ const regexp *prog, SV* sv, const regnode* o, const regmatch_info *reginfo, const RExC_state_t *pRExC_state);
-#define PERL_ARGS_ASSERT_REGPROP \
- assert(sv); assert(o)
-#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_PP_C) || defined(PERL_IN_OP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_DOOP_C)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool S__invlist_contains_cp(SV* const invlist, const UV cp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__INVLIST_CONTAINS_CP \
- assert(invlist)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE UV S__invlist_len(SV* const invlist)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__INVLIST_LEN \
- assert(invlist)
-#endif
-
-PERL_CALLCONV SSize_t Perl__invlist_search(SV* const invlist, const UV cp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT__INVLIST_SEARCH \
- assert(invlist)
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool* S_get_invlist_offset_addr(SV* invlist)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GET_INVLIST_OFFSET_ADDR \
- assert(invlist)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE UV* S_invlist_array(SV* const invlist)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_INVLIST_ARRAY \
- assert(invlist)
-#endif
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool S_is_invlist(SV* const invlist)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_IS_INVLIST
-#endif
-
-#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C)
-PERL_CALLCONV bool Perl_is_grapheme(pTHX_ const U8 * strbeg, const U8 * s, const U8 *strend, const UV cp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_IS_GRAPHEME \
- assert(strbeg); assert(s); assert(strend)
+#if defined(PERL_IN_REGCOMP_C)
+STATIC AV *
+S_add_multi_match(pTHX_ AV *multi_char_matches, SV *multi_string, const STRLEN cp_count);
+# define PERL_ARGS_ASSERT_ADD_MULTI_MATCH \
+ assert(multi_string)
+
+STATIC void
+S_change_engine_size(pTHX_ RExC_state_t *pRExC_state, const Ptrdiff_t size);
+# define PERL_ARGS_ASSERT_CHANGE_ENGINE_SIZE \
+ assert(pRExC_state)
+
+STATIC REGEXP *
+S_compile_wildcard(pTHX_ const char *subpattern, const STRLEN len, const bool ignore_case)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_COMPILE_WILDCARD \
+ assert(subpattern)
+
+STATIC U8
+S_compute_EXACTish(RExC_state_t *pRExC_state);
+# define PERL_ARGS_ASSERT_COMPUTE_EXACTISH \
+ assert(pRExC_state)
+
+STATIC int
+S_edit_distance(const UV *src, const UV *tgt, const STRLEN x, const STRLEN y, const SSize_t maxDistance)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_EDIT_DISTANCE \
+ assert(src); assert(tgt)
+
+STATIC I32
+S_execute_wildcard(pTHX_ REGEXP * const prog, char *stringarg, char *strend, char *strbeg, SSize_t minend, SV *screamer, U32 nosave);
+# define PERL_ARGS_ASSERT_EXECUTE_WILDCARD \
+ assert(prog); assert(stringarg); assert(strend); assert(strbeg); \
+ assert(screamer)
+
+STATIC U32
+S_get_quantifier_value(pTHX_ RExC_state_t *pRExC_state, const char *start, const char *end);
+# define PERL_ARGS_ASSERT_GET_QUANTIFIER_VALUE \
+ assert(pRExC_state); assert(start); assert(end)
+
+STATIC bool
+S_grok_bslash_N(pTHX_ RExC_state_t *pRExC_state, regnode_offset *nodep, UV *code_point_p, int *cp_count, I32 *flagp, const bool strict, const U32 depth);
+# define PERL_ARGS_ASSERT_GROK_BSLASH_N \
+ assert(pRExC_state); assert(flagp)
+
+STATIC regnode_offset
+S_handle_named_backref(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, char *backref_parse_start, char ch);
+# define PERL_ARGS_ASSERT_HANDLE_NAMED_BACKREF \
+ assert(pRExC_state); assert(flagp); assert(backref_parse_start)
+
+STATIC bool
+S_handle_names_wildcard(pTHX_ const char *wname, const STRLEN wname_len, SV **prop_definition, AV **strings);
+# define PERL_ARGS_ASSERT_HANDLE_NAMES_WILDCARD \
+ assert(wname); assert(prop_definition); assert(strings)
+
+STATIC int
+S_handle_possible_posix(pTHX_ RExC_state_t *pRExC_state, const char * const s, char **updated_parse_ptr, AV **posix_warnings, const bool check_only);
+# define PERL_ARGS_ASSERT_HANDLE_POSSIBLE_POSIX \
+ assert(pRExC_state); assert(s)
+
+STATIC regnode_offset
+S_handle_regex_sets(pTHX_ RExC_state_t *pRExC_state, SV **return_invlist, I32 *flagp, U32 depth);
+# define PERL_ARGS_ASSERT_HANDLE_REGEX_SETS \
+ assert(pRExC_state); assert(flagp)
+
+STATIC SV *
+S_handle_user_defined_property(pTHX_ const char *name, const STRLEN name_len, const bool is_utf8, const bool to_fold, const bool runtime, const bool deferrable, SV *contents, bool *user_defined_ptr, SV *msg, const STRLEN level);
+# define PERL_ARGS_ASSERT_HANDLE_USER_DEFINED_PROPERTY \
+ assert(name); assert(contents); assert(user_defined_ptr); assert(msg)
+
+STATIC void
+S_nextchar(pTHX_ RExC_state_t *pRExC_state);
+# define PERL_ARGS_ASSERT_NEXTCHAR \
+ assert(pRExC_state)
+
+STATIC U8
+S_optimize_regclass(pTHX_ RExC_state_t *pRExC_state, SV *cp_list, SV *only_utf8_locale_list, SV *upper_latin1_only_utf8_matches, const U32 has_runtime_dependency, const U32 posixl, U8 *anyof_flags, bool *invert, regnode_offset *ret, I32 *flagp);
+# define PERL_ARGS_ASSERT_OPTIMIZE_REGCLASS \
+ assert(pRExC_state); assert(anyof_flags); assert(invert); assert(ret); \
+ assert(flagp)
+
+STATIC void
+S_output_posix_warnings(pTHX_ RExC_state_t *pRExC_state, AV *posix_warnings);
+# define PERL_ARGS_ASSERT_OUTPUT_POSIX_WARNINGS \
+ assert(pRExC_state); assert(posix_warnings)
+
+STATIC void
+S_parse_lparen_question_flags(pTHX_ RExC_state_t *pRExC_state);
+# define PERL_ARGS_ASSERT_PARSE_LPAREN_QUESTION_FLAGS \
+ assert(pRExC_state)
+
+STATIC SV *
+S_parse_uniprop_string(pTHX_ const char * const name, Size_t name_len, const bool is_utf8, const bool to_fold, const bool runtime, const bool deferrable, AV **strings, bool *user_defined_ptr, SV *msg, const STRLEN level);
+# define PERL_ARGS_ASSERT_PARSE_UNIPROP_STRING \
+ assert(name); assert(user_defined_ptr); assert(msg)
+
+PERL_STATIC_NO_RET void
+S_re_croak(pTHX_ bool utf8, const char *pat, ...)
+ __attribute__noreturn__
+ __attribute__format__(__printf__,pTHX_2,pTHX_3);
+# define PERL_ARGS_ASSERT_RE_CROAK \
+ assert(pat)
+
+STATIC regnode_offset
+S_reg(pTHX_ RExC_state_t *pRExC_state, I32 paren, I32 *flagp, U32 depth);
+# define PERL_ARGS_ASSERT_REG \
+ assert(pRExC_state); assert(flagp)
+
+STATIC regnode_offset
+S_reg1node(pTHX_ RExC_state_t *pRExC_state, U8 op, U32 arg);
+# define PERL_ARGS_ASSERT_REG1NODE \
+ assert(pRExC_state)
+
+STATIC regnode_offset
+S_reg2node(pTHX_ RExC_state_t *pRExC_state, const U8 op, const U32 arg1, const I32 arg2);
+# define PERL_ARGS_ASSERT_REG2NODE \
+ assert(pRExC_state)
+
+STATIC regnode_offset
+S_reg_la_NOTHING(pTHX_ RExC_state_t *pRExC_state, U32 flags, const char *type);
+# define PERL_ARGS_ASSERT_REG_LA_NOTHING \
+ assert(pRExC_state); assert(type)
+
+STATIC regnode_offset
+S_reg_la_OPFAIL(pTHX_ RExC_state_t *pRExC_state, U32 flags, const char *type);
+# define PERL_ARGS_ASSERT_REG_LA_OPFAIL \
+ assert(pRExC_state); assert(type)
+
+STATIC regnode_offset
+S_reg_node(pTHX_ RExC_state_t *pRExC_state, U8 op);
+# define PERL_ARGS_ASSERT_REG_NODE \
+ assert(pRExC_state)
+
+STATIC SV *
+S_reg_scan_name(pTHX_ RExC_state_t *pRExC_state, U32 flags);
+# define PERL_ARGS_ASSERT_REG_SCAN_NAME \
+ assert(pRExC_state)
+
+STATIC regnode_offset
+S_regatom(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth);
+# define PERL_ARGS_ASSERT_REGATOM \
+ assert(pRExC_state); assert(flagp)
+
+STATIC regnode_offset
+S_regbranch(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, I32 first, U32 depth);
+# define PERL_ARGS_ASSERT_REGBRANCH \
+ assert(pRExC_state); assert(flagp)
+
+STATIC regnode_offset
+S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth, const bool stop_at_1, bool allow_multi_fold, const bool silence_non_portable, const bool strict, bool optimizable, SV **ret_invlist);
+# define PERL_ARGS_ASSERT_REGCLASS \
+ assert(pRExC_state); assert(flagp)
+
+STATIC unsigned int
+S_regex_set_precedence(const U8 my_operator)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REGEX_SET_PRECEDENCE
+
+STATIC void
+S_reginsert(pTHX_ RExC_state_t *pRExC_state, const U8 op, const regnode_offset operand, const U32 depth);
+# define PERL_ARGS_ASSERT_REGINSERT \
+ assert(pRExC_state)
+
+STATIC regnode_offset
+S_regnode_guts(pTHX_ RExC_state_t *pRExC_state, const STRLEN extra_len);
+# define PERL_ARGS_ASSERT_REGNODE_GUTS \
+ assert(pRExC_state)
+
+STATIC regnode_offset
+S_regpiece(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth);
+# define PERL_ARGS_ASSERT_REGPIECE \
+ assert(pRExC_state); assert(flagp)
+
+STATIC regnode_offset
+S_regpnode(pTHX_ RExC_state_t *pRExC_state, U8 op, SV *arg);
+# define PERL_ARGS_ASSERT_REGPNODE \
+ assert(pRExC_state); assert(arg)
+
+STATIC bool
+S_regtail(pTHX_ RExC_state_t *pRExC_state, const regnode_offset p, const regnode_offset val, const U32 depth)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REGTAIL \
+ assert(pRExC_state); assert(p); assert(val)
+
+STATIC void
+S_set_regex_pv(pTHX_ RExC_state_t *pRExC_state, REGEXP *Rx);
+# define PERL_ARGS_ASSERT_SET_REGEX_PV \
+ assert(pRExC_state); assert(Rx)
+
+STATIC void
+S_skip_to_be_ignored_text(pTHX_ RExC_state_t *pRExC_state, char **p, const bool force_to_xmod);
+# define PERL_ARGS_ASSERT_SKIP_TO_BE_IGNORED_TEXT \
+ assert(pRExC_state); assert(p)
+
+# if defined(DEBUGGING)
+STATIC regnode_offset
+S_regnode_guts_debug(pTHX_ RExC_state_t *pRExC_state, const U8 op, const STRLEN extra_len);
+# define PERL_ARGS_ASSERT_REGNODE_GUTS_DEBUG \
+ assert(pRExC_state)
+
+STATIC bool
+S_regtail_study(pTHX_ RExC_state_t *pRExC_state, regnode_offset p, const regnode_offset val, U32 depth)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REGTAIL_STUDY \
+ assert(pRExC_state); assert(p); assert(val)
+
+# if defined(ENABLE_REGEX_SETS_DEBUGGING)
+STATIC void
+S_dump_regex_sets_structures(pTHX_ RExC_state_t *pRExC_state, AV *stack, const IV fence, AV *fence_stack);
+# define PERL_ARGS_ASSERT_DUMP_REGEX_SETS_STRUCTURES \
+ assert(pRExC_state); assert(stack); assert(fence_stack)
+
+# endif
+# endif /* defined(DEBUGGING) */
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE Size_t
+S_find_first_differing_byte_pos(const U8 *s1, const U8 *s2, const Size_t max);
+# define PERL_ARGS_ASSERT_FIND_FIRST_DIFFERING_BYTE_POS \
+ assert(s1); assert(s2)
+
+PERL_STATIC_INLINE char *
+S_reg_skipcomment(RExC_state_t *pRExC_state, char *p);
+# define PERL_ARGS_ASSERT_REG_SKIPCOMMENT \
+ assert(pRExC_state); assert(p)
+
+# endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+#endif /* defined(PERL_IN_REGCOMP_C) */
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGCOMP_INVLIST_C)
+PERL_CALLCONV void
+Perl_populate_bitmap_from_invlist(pTHX_ SV *invlist, const UV offset, const U8 *bitmap, const Size_t len)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_POPULATE_BITMAP_FROM_INVLIST \
+ assert(invlist); assert(bitmap)
+
+PERL_CALLCONV void
+Perl_populate_invlist_from_bitmap(pTHX_ const U8 *bitmap, const Size_t bitmap_len, SV **invlist, const UV offset)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_POPULATE_INVLIST_FROM_BITMAP \
+ assert(bitmap); assert(invlist)
+
+#endif /* defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGCOMP_INVLIST_C) */
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || \
+ defined(PERL_IN_TOKE_C)
+PERL_CALLCONV bool
+Perl_is_grapheme(pTHX_ const U8 *strbeg, const U8 *s, const U8 *strend, const UV cp)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_IS_GRAPHEME \
+ assert(strbeg); assert(s); assert(strend)
+
+#endif
+#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || \
+ defined(PERL_IN_UTF8_C)
+PERL_CALLCONV UV
+Perl__to_fold_latin1(const U8 c, U8 *p, STRLEN *lenp, const unsigned int flags);
+# define PERL_ARGS_ASSERT__TO_FOLD_LATIN1 \
+ assert(p); assert(lenp)
#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C)
-PERL_CALLCONV UV Perl__to_fold_latin1(const U8 c, U8 *p, STRLEN *lenp, const unsigned int flags);
-#define PERL_ARGS_ASSERT__TO_FOLD_LATIN1 \
- assert(p); assert(lenp)
-#endif
-#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_SV_C)
-PERL_CALLCONV SV* Perl_invlist_clone(pTHX_ SV* const invlist, SV* newlist);
-#define PERL_ARGS_ASSERT_INVLIST_CLONE \
- assert(invlist)
-#endif
#if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C)
-PERL_CALLCONV bool Perl_regcurly(const char *s, const char *e, const char * result[5])
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_REGCURLY \
- assert(s); assert(e)
-
-#endif
+PERL_CALLCONV bool
+Perl_regcurly(const char *s, const char *e, const char *result[5])
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REGCURLY \
+ assert(s); assert(e)
+
+#endif
+#if defined(PERL_IN_REGCOMP_DEBUG_C) && defined(DEBUGGING)
+STATIC U8
+S_put_charclass_bitmap_innards(pTHX_ SV *sv, char *bitmap, SV *nonbitmap_invlist, SV *only_utf8_locale_invlist, const regnode * const node, const U8 flags, const bool force_as_is_display);
+# define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS \
+ assert(sv)
+
+STATIC SV *
+S_put_charclass_bitmap_innards_common(pTHX_ SV *invlist, SV *posixes, SV *only_utf8, SV *not_utf8, SV *only_utf8_locale, const bool invert);
+# define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS_COMMON \
+ assert(invlist)
+
+STATIC void
+S_put_charclass_bitmap_innards_invlist(pTHX_ SV *sv, SV *invlist);
+# define PERL_ARGS_ASSERT_PUT_CHARCLASS_BITMAP_INNARDS_INVLIST \
+ assert(sv); assert(invlist)
+
+STATIC void
+S_put_code_point(pTHX_ SV *sv, UV c);
+# define PERL_ARGS_ASSERT_PUT_CODE_POINT \
+ assert(sv)
+
+STATIC void
+S_put_range(pTHX_ SV *sv, UV start, const UV end, const bool allow_literals);
+# define PERL_ARGS_ASSERT_PUT_RANGE \
+ assert(sv)
+
+STATIC void
+S_regdump_extflags(pTHX_ const char *lead, const U32 flags);
+# define PERL_ARGS_ASSERT_REGDUMP_EXTFLAGS
+
+STATIC void
+S_regdump_intflags(pTHX_ const char *lead, const U32 flags);
+# define PERL_ARGS_ASSERT_REGDUMP_INTFLAGS
+
+#endif /* defined(PERL_IN_REGCOMP_DEBUG_C) && defined(DEBUGGING) */
+#if defined(PERL_IN_REGCOMP_INVLIST_C) && !defined(PERL_EXT_RE_BUILD)
+STATIC void
+S__append_range_to_invlist(pTHX_ SV * const invlist, const UV start, const UV end);
+# define PERL_ARGS_ASSERT__APPEND_RANGE_TO_INVLIST \
+ assert(invlist)
+
+STATIC void
+S_initialize_invlist_guts(pTHX_ SV *invlist, const Size_t initial_size);
+# define PERL_ARGS_ASSERT_INITIALIZE_INVLIST_GUTS \
+ assert(invlist)
+
+STATIC void
+S_invlist_replace_list_destroys_src(pTHX_ SV *dest, SV *src);
+# define PERL_ARGS_ASSERT_INVLIST_REPLACE_LIST_DESTROYS_SRC \
+ assert(dest); assert(src)
+
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE UV *
+S__invlist_array_init(SV * const invlist, const bool will_have_0)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT__INVLIST_ARRAY_INIT \
+ assert(invlist)
+
+PERL_STATIC_INLINE IV *
+S_get_invlist_previous_index_addr(SV *invlist)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GET_INVLIST_PREVIOUS_INDEX_ADDR \
+ assert(invlist)
+
+PERL_STATIC_INLINE void
+S_invlist_clear(pTHX_ SV *invlist);
+# define PERL_ARGS_ASSERT_INVLIST_CLEAR \
+ assert(invlist)
+
+PERL_STATIC_INLINE UV
+S_invlist_max(const SV * const invlist)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_INVLIST_MAX \
+ assert(invlist)
+
+PERL_STATIC_INLINE IV
+S_invlist_previous_index(SV * const invlist)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_INVLIST_PREVIOUS_INDEX \
+ assert(invlist)
+
+PERL_STATIC_INLINE void
+S_invlist_set_previous_index(SV * const invlist, const IV index);
+# define PERL_ARGS_ASSERT_INVLIST_SET_PREVIOUS_INDEX \
+ assert(invlist)
+
+PERL_STATIC_INLINE void
+S_invlist_trim(SV *invlist);
+# define PERL_ARGS_ASSERT_INVLIST_TRIM \
+ assert(invlist)
+
+# endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+#endif /* defined(PERL_IN_REGCOMP_INVLIST_C) && !defined(PERL_EXT_RE_BUILD) */
+#if defined(PERL_IN_REGCOMP_STUDY_C)
+STATIC SV *
+S_get_ANYOF_cp_list_for_ssc(pTHX_ const RExC_state_t *pRExC_state, const regnode_charclass * const node);
+# define PERL_ARGS_ASSERT_GET_ANYOF_CP_LIST_FOR_SSC \
+ assert(pRExC_state); assert(node)
+
+STATIC SV *
+S_make_exactf_invlist(pTHX_ RExC_state_t *pRExC_state, regnode *node)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_MAKE_EXACTF_INVLIST \
+ assert(pRExC_state); assert(node)
+
+STATIC void
+S_rck_elide_nothing(pTHX_ regnode *node);
+# define PERL_ARGS_ASSERT_RCK_ELIDE_NOTHING \
+ assert(node)
+
+STATIC void
+S_ssc_add_range(pTHX_ regnode_ssc *ssc, UV const start, UV const end);
+# define PERL_ARGS_ASSERT_SSC_ADD_RANGE \
+ assert(ssc)
+
+STATIC void
+S_ssc_and(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc, const regnode_charclass *and_with);
+# define PERL_ARGS_ASSERT_SSC_AND \
+ assert(pRExC_state); assert(ssc); assert(and_with)
+
+STATIC void
+S_ssc_anything(pTHX_ regnode_ssc *ssc);
+# define PERL_ARGS_ASSERT_SSC_ANYTHING \
+ assert(ssc)
+
+STATIC void
+S_ssc_clear_locale(regnode_ssc *ssc);
+# define PERL_ARGS_ASSERT_SSC_CLEAR_LOCALE \
+ assert(ssc)
+
+STATIC void
+S_ssc_cp_and(pTHX_ regnode_ssc *ssc, UV const cp);
+# define PERL_ARGS_ASSERT_SSC_CP_AND \
+ assert(ssc)
+
+STATIC void
+S_ssc_intersection(pTHX_ regnode_ssc *ssc, SV * const invlist, const bool invert_2nd);
+# define PERL_ARGS_ASSERT_SSC_INTERSECTION \
+ assert(ssc); assert(invlist)
+
+STATIC int
+S_ssc_is_anything(const regnode_ssc *ssc)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SSC_IS_ANYTHING \
+ assert(ssc)
+
+STATIC int
+S_ssc_is_cp_posixl_init(const RExC_state_t *pRExC_state, const regnode_ssc *ssc)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SSC_IS_CP_POSIXL_INIT \
+ assert(pRExC_state); assert(ssc)
+
+STATIC void
+S_ssc_or(pTHX_ const RExC_state_t *pRExC_state, regnode_ssc *ssc, const regnode_charclass *or_with);
+# define PERL_ARGS_ASSERT_SSC_OR \
+ assert(pRExC_state); assert(ssc); assert(or_with)
+
+STATIC void
+S_ssc_union(pTHX_ regnode_ssc *ssc, SV * const invlist, const bool invert_2nd);
+# define PERL_ARGS_ASSERT_SSC_UNION \
+ assert(ssc); assert(invlist)
+
+STATIC void
+S_unwind_scan_frames(pTHX_ const void *p);
+# define PERL_ARGS_ASSERT_UNWIND_SCAN_FRAMES \
+ assert(p)
+
+#endif /* defined(PERL_IN_REGCOMP_STUDY_C) */
#if defined(PERL_IN_REGEXEC_C)
-STATIC LB_enum S_advance_one_LB(pTHX_ U8 ** curpos, const U8 * const strend, const bool utf8_target)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ADVANCE_ONE_LB \
- assert(curpos); assert(strend)
-
-STATIC SB_enum S_advance_one_SB(pTHX_ U8 ** curpos, const U8 * const strend, const bool utf8_target)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ADVANCE_ONE_SB \
- assert(curpos); assert(strend)
-
-STATIC WB_enum S_advance_one_WB(pTHX_ U8 ** curpos, const U8 * const strend, const bool utf8_target, const bool skip_Extend_Format)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ADVANCE_ONE_WB \
- assert(curpos); assert(strend)
-
-STATIC GCB_enum S_backup_one_GCB(pTHX_ const U8 * const strbeg, U8 ** curpos, const bool utf8_target)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_BACKUP_ONE_GCB \
- assert(strbeg); assert(curpos)
-
-STATIC LB_enum S_backup_one_LB(pTHX_ const U8 * const strbeg, U8 ** curpos, const bool utf8_target)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_BACKUP_ONE_LB \
- assert(strbeg); assert(curpos)
-
-STATIC SB_enum S_backup_one_SB(pTHX_ const U8 * const strbeg, U8 ** curpos, const bool utf8_target)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_BACKUP_ONE_SB \
- assert(strbeg); assert(curpos)
-
-STATIC WB_enum S_backup_one_WB(pTHX_ WB_enum * previous, const U8 * const strbeg, U8 ** curpos, const bool utf8_target)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_BACKUP_ONE_WB \
- assert(previous); assert(strbeg); assert(curpos)
-
-STATIC char* S_find_byclass(pTHX_ regexp * prog, const regnode *c, char *s, const char *strend, regmatch_info *reginfo)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_FIND_BYCLASS \
- assert(prog); assert(c); assert(s); assert(strend)
-
-STATIC U8 * S_find_next_masked(U8 * s, const U8 * send, const U8 byte, const U8 mask)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_FIND_NEXT_MASKED \
- assert(s); assert(send)
-
-STATIC U8 * S_find_span_end(U8* s, const U8 * send, const U8 span_byte)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_FIND_SPAN_END \
- assert(s); assert(send)
-
-STATIC U8 * S_find_span_end_mask(U8 * s, const U8 * send, const U8 span_byte, const U8 mask)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_FIND_SPAN_END_MASK \
- assert(s); assert(send)
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE I32 S_foldEQ_latin1_s2_folded(const char* a, const char* b, I32 len);
-#define PERL_ARGS_ASSERT_FOLDEQ_LATIN1_S2_FOLDED \
- assert(a); assert(b)
-#endif
-STATIC bool S_isFOO_lc(pTHX_ const U8 classnum, const U8 character)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ISFOO_LC
-
-STATIC bool S_isFOO_utf8_lc(pTHX_ const U8 classnum, const U8* character, const U8* e)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ISFOO_UTF8_LC \
- assert(character); assert(e)
-
-STATIC bool S_isGCB(pTHX_ const GCB_enum before, const GCB_enum after, const U8 * const strbeg, const U8 * const curpos, const bool utf8_target)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ISGCB \
- assert(strbeg); assert(curpos)
-
-STATIC bool S_isLB(pTHX_ LB_enum before, LB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ISLB \
- assert(strbeg); assert(curpos); assert(strend)
-
-STATIC bool S_isSB(pTHX_ SB_enum before, SB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ISSB \
- assert(strbeg); assert(curpos); assert(strend)
-
-STATIC bool S_isWB(pTHX_ WB_enum previous, WB_enum before, WB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ISWB \
- assert(strbeg); assert(curpos); assert(strend)
-
-STATIC I32 S_reg_check_named_buff_matched(const regexp *rex, const regnode *scan)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_REG_CHECK_NAMED_BUFF_MATCHED \
- assert(rex); assert(scan)
-
-STATIC void S_regcp_restore(pTHX_ regexp *rex, I32 ix, U32 *maxopenparen_p _pDEPTH);
-#define PERL_ARGS_ASSERT_REGCP_RESTORE \
- assert(rex); assert(maxopenparen_p)
-STATIC void S_regcppop(pTHX_ regexp *rex, U32 *maxopenparen_p _pDEPTH);
-#define PERL_ARGS_ASSERT_REGCPPOP \
- assert(rex); assert(maxopenparen_p)
-STATIC CHECKPOINT S_regcppush(pTHX_ const regexp *rex, I32 parenfloor, U32 maxopenparen _pDEPTH);
-#define PERL_ARGS_ASSERT_REGCPPUSH \
- assert(rex)
-STATIC U8* S_reghop3(U8 *s, SSize_t off, const U8 *lim)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_REGHOP3 \
- assert(s); assert(lim)
-
-STATIC U8* S_reghop4(U8 *s, SSize_t off, const U8 *llim, const U8 *rlim)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_REGHOP4 \
- assert(s); assert(llim); assert(rlim)
-
-STATIC U8* S_reghopmaybe3(U8 *s, SSize_t off, const U8 * const lim)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_REGHOPMAYBE3 \
- assert(s); assert(lim)
-
-STATIC bool S_reginclass(pTHX_ regexp * const prog, const regnode * const n, const U8 * const p, const U8 * const p_end, bool const utf8_target)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_REGINCLASS \
- assert(n); assert(p); assert(p_end)
-
-STATIC SSize_t S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_REGMATCH \
- assert(reginfo); assert(startpos); assert(prog)
-
-STATIC I32 S_regrepeat(pTHX_ regexp *prog, char **startposp, const regnode *p, char *loceol, regmatch_info *const reginfo, I32 max _pDEPTH)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_REGREPEAT \
- assert(prog); assert(startposp); assert(p); assert(loceol); assert(reginfo)
-
-STATIC bool S_regtry(pTHX_ regmatch_info *reginfo, char **startposp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_REGTRY \
- assert(reginfo); assert(startposp)
-
-STATIC bool S_to_byte_substr(pTHX_ regexp * prog);
-#define PERL_ARGS_ASSERT_TO_BYTE_SUBSTR \
- assert(prog)
-STATIC void S_to_utf8_substr(pTHX_ regexp * prog);
-#define PERL_ARGS_ASSERT_TO_UTF8_SUBSTR \
- assert(prog)
-#endif
+STATIC LB_enum
+S_advance_one_LB(pTHX_ U8 **curpos, const U8 * const strend, const bool utf8_target)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ADVANCE_ONE_LB \
+ assert(curpos); assert(strend)
+
+STATIC SB_enum
+S_advance_one_SB(pTHX_ U8 **curpos, const U8 * const strend, const bool utf8_target)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ADVANCE_ONE_SB \
+ assert(curpos); assert(strend)
+
+STATIC WB_enum
+S_advance_one_WB(pTHX_ U8 **curpos, const U8 * const strend, const bool utf8_target, const bool skip_Extend_Format)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ADVANCE_ONE_WB \
+ assert(curpos); assert(strend)
+
+STATIC GCB_enum
+S_backup_one_GCB(pTHX_ const U8 * const strbeg, U8 **curpos, const bool utf8_target)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_BACKUP_ONE_GCB \
+ assert(strbeg); assert(curpos)
+
+STATIC LB_enum
+S_backup_one_LB(pTHX_ const U8 * const strbeg, U8 **curpos, const bool utf8_target)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_BACKUP_ONE_LB \
+ assert(strbeg); assert(curpos)
+
+STATIC SB_enum
+S_backup_one_SB(pTHX_ const U8 * const strbeg, U8 **curpos, const bool utf8_target)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_BACKUP_ONE_SB \
+ assert(strbeg); assert(curpos)
+
+STATIC WB_enum
+S_backup_one_WB(pTHX_ WB_enum *previous, const U8 * const strbeg, U8 **curpos, const bool utf8_target)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_BACKUP_ONE_WB \
+ assert(previous); assert(strbeg); assert(curpos)
+
+STATIC char *
+S_find_byclass(pTHX_ regexp *prog, const regnode *c, char *s, const char *strend, regmatch_info *reginfo)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_FIND_BYCLASS \
+ assert(prog); assert(c); assert(s); assert(strend)
+
+STATIC U8 *
+S_find_next_masked(U8 *s, const U8 *send, const U8 byte, const U8 mask)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_FIND_NEXT_MASKED \
+ assert(s); assert(send)
+
+STATIC U8 *
+S_find_span_end(U8 *s, const U8 *send, const U8 span_byte)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_FIND_SPAN_END \
+ assert(s); assert(send)
+
+STATIC U8 *
+S_find_span_end_mask(U8 *s, const U8 *send, const U8 span_byte, const U8 mask)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_FIND_SPAN_END_MASK \
+ assert(s); assert(send)
+
+STATIC bool
+S_isFOO_lc(pTHX_ const U8 classnum, const U8 character)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ISFOO_LC
+
+STATIC bool
+S_isFOO_utf8_lc(pTHX_ const U8 classnum, const U8 *character, const U8 *e)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ISFOO_UTF8_LC \
+ assert(character); assert(e)
+
+STATIC bool
+S_isGCB(pTHX_ const GCB_enum before, const GCB_enum after, const U8 * const strbeg, const U8 * const curpos, const bool utf8_target)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ISGCB \
+ assert(strbeg); assert(curpos)
+
+STATIC bool
+S_isLB(pTHX_ LB_enum before, LB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ISLB \
+ assert(strbeg); assert(curpos); assert(strend)
+
+STATIC bool
+S_isSB(pTHX_ SB_enum before, SB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ISSB \
+ assert(strbeg); assert(curpos); assert(strend)
+
+STATIC bool
+S_isWB(pTHX_ WB_enum previous, WB_enum before, WB_enum after, const U8 * const strbeg, const U8 * const curpos, const U8 * const strend, const bool utf8_target)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ISWB \
+ assert(strbeg); assert(curpos); assert(strend)
+
+STATIC I32
+S_reg_check_named_buff_matched(const regexp *rex, const regnode *scan)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REG_CHECK_NAMED_BUFF_MATCHED \
+ assert(rex); assert(scan)
+
+STATIC void
+S_regcp_restore(pTHX_ regexp *rex, I32 ix, U32 *maxopenparen_p comma_pDEPTH);
+# define PERL_ARGS_ASSERT_REGCP_RESTORE \
+ assert(rex); assert(maxopenparen_p)
+
+STATIC void
+S_regcppop(pTHX_ regexp *rex, U32 *maxopenparen_p comma_pDEPTH);
+# define PERL_ARGS_ASSERT_REGCPPOP \
+ assert(rex); assert(maxopenparen_p)
+
+STATIC CHECKPOINT
+S_regcppush(pTHX_ const regexp *rex, I32 parenfloor, U32 maxopenparen comma_pDEPTH);
+# define PERL_ARGS_ASSERT_REGCPPUSH \
+ assert(rex)
+
+STATIC U8 *
+S_reghop3(U8 *s, SSize_t off, const U8 *lim)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REGHOP3 \
+ assert(s); assert(lim)
+
+STATIC U8 *
+S_reghop4(U8 *s, SSize_t off, const U8 *llim, const U8 *rlim)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REGHOP4 \
+ assert(s); assert(llim); assert(rlim)
+
+STATIC U8 *
+S_reghopmaybe3(U8 *s, SSize_t off, const U8 * const lim)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REGHOPMAYBE3 \
+ assert(s); assert(lim)
+
+STATIC bool
+S_reginclass(pTHX_ regexp * const prog, const regnode * const n, const U8 * const p, const U8 * const p_end, bool const utf8_target)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REGINCLASS \
+ assert(n); assert(p); assert(p_end)
+
+STATIC SSize_t
+S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REGMATCH \
+ assert(reginfo); assert(startpos); assert(prog)
+
+STATIC I32
+S_regrepeat(pTHX_ regexp *prog, char **startposp, const regnode *p, char *loceol, regmatch_info * const reginfo, I32 max comma_pDEPTH)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REGREPEAT \
+ assert(prog); assert(startposp); assert(p); assert(loceol); assert(reginfo); \
+ assert(max)
+
+STATIC bool
+S_regtry(pTHX_ regmatch_info *reginfo, char **startposp)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REGTRY \
+ assert(reginfo); assert(startposp)
+
+STATIC bool
+S_to_byte_substr(pTHX_ regexp *prog);
+# define PERL_ARGS_ASSERT_TO_BYTE_SUBSTR \
+ assert(prog)
+
+STATIC void
+S_to_utf8_substr(pTHX_ regexp *prog);
+# define PERL_ARGS_ASSERT_TO_UTF8_SUBSTR \
+ assert(prog)
+
+# if defined(DEBUGGING)
+STATIC void
+S_debug_start_match(pTHX_ const REGEXP *prog, const bool do_utf8, const char *start, const char *end, const char *blurb);
+# define PERL_ARGS_ASSERT_DEBUG_START_MATCH \
+ assert(prog); assert(start); assert(end); assert(blurb)
+
+STATIC void
+S_dump_exec_pos(pTHX_ const char *locinput, const regnode *scan, const char *loc_regeol, const char *loc_bostr, const char *loc_reg_starttry, const bool do_utf8, const U32 depth);
+# define PERL_ARGS_ASSERT_DUMP_EXEC_POS \
+ assert(locinput); assert(scan); assert(loc_regeol); assert(loc_bostr); \
+ assert(loc_reg_starttry)
+
+PERL_CALLCONV int
+Perl_re_exec_indentf(pTHX_ const char *fmt, U32 depth, ...)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_RE_EXEC_INDENTF \
+ assert(fmt)
+
+# endif /* defined(DEBUGGING) */
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE void
+S_capture_clear(pTHX_ regexp *rex, U16 from_ix, U16 to_ix, const char *str comma_pDEPTH);
+# define PERL_ARGS_ASSERT_CAPTURE_CLEAR \
+ assert(rex); assert(str)
+
+PERL_STATIC_INLINE I32
+S_foldEQ_latin1_s2_folded(pTHX_ const char *a, const char *b, I32 len);
+# define PERL_ARGS_ASSERT_FOLDEQ_LATIN1_S2_FOLDED \
+ assert(a); assert(b)
+
+PERL_STATIC_INLINE void
+S_unwind_paren(pTHX_ regexp *rex, U32 lp, U32 lcp comma_pDEPTH);
+# define PERL_ARGS_ASSERT_UNWIND_PAREN \
+ assert(rex)
+
+# endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+#endif /* defined(PERL_IN_REGEXEC_C) */
+#if defined(PERL_IN_REGEX_ENGINE)
+
+# if defined(DEBUGGING)
+PERL_CALLCONV void
+Perl_debug_peep(pTHX_ const char *str, const RExC_state_t *pRExC_state, regnode *scan, U32 depth, U32 flags)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_DEBUG_PEEP \
+ assert(str); assert(pRExC_state)
+
+PERL_CALLCONV void
+Perl_debug_show_study_flags(pTHX_ U32 flags, const char *open_str, const char *close_str)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_DEBUG_SHOW_STUDY_FLAGS \
+ assert(open_str); assert(close_str)
+
+PERL_CALLCONV void
+Perl_debug_studydata(pTHX_ const char *where, scan_data_t *data, U32 depth, int is_inf, SSize_t min, SSize_t stopmin, SSize_t delta)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_DEBUG_STUDYDATA \
+ assert(where)
+
+PERL_CALLCONV const regnode *
+Perl_dumpuntil(pTHX_ const regexp *r, const regnode *start, const regnode *node, const regnode *last, const regnode *plast, SV *sv, I32 indent, U32 depth)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_DUMPUNTIL \
+ assert(r); assert(start); assert(node); assert(sv)
+
+PERL_CALLCONV int
+Perl_re_indentf(pTHX_ const char *fmt, U32 depth, ...)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_RE_INDENTF \
+ assert(fmt)
+
+PERL_CALLCONV int
+Perl_re_printf(pTHX_ const char *fmt, ...)
+ __attribute__visibility__("hidden")
+ __attribute__format__(__printf__,pTHX_1,pTHX_2);
+# define PERL_ARGS_ASSERT_RE_PRINTF \
+ assert(fmt)
+
+PERL_CALLCONV void
+Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_info *reginfo, const RExC_state_t *pRExC_state)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_REGPROP \
+ assert(sv); assert(o)
+
+# endif /* defined(DEBUGGING) */
+# if defined(PERL_EXT_RE_BUILD)
+PERL_CALLCONV SV *
+Perl_get_re_gclass_aux_data(pTHX_ const regexp *prog, const struct regnode *node, bool doinit, SV **listsvp, SV **lonly_utf8_locale, SV **output_invlist)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_GET_RE_GCLASS_AUX_DATA \
+ assert(node)
+
+# else
+PERL_CALLCONV SV *
+Perl_get_regclass_aux_data(pTHX_ const regexp *prog, const struct regnode *node, bool doinit, SV **listsvp, SV **lonly_utf8_locale, SV **output_invlist)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_GET_REGCLASS_AUX_DATA \
+ assert(node)
+
+# endif
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE bool
+Perl_check_regnode_after(pTHX_ const regnode *p, const STRLEN extra)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_CHECK_REGNODE_AFTER
+
+PERL_STATIC_INLINE regnode *
+Perl_regnext(pTHX_ const regnode *p)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REGNEXT
+
+PERL_STATIC_INLINE regnode *
+Perl_regnode_after(pTHX_ const regnode *p, bool varies)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_REGNODE_AFTER
+
+# endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+#endif /* defined(PERL_IN_REGEX_ENGINE) */
#if defined(PERL_IN_SCOPE_C)
-STATIC void S_save_pushptri32ptr(pTHX_ void *const ptr1, const I32 i, void *const ptr2, const int type);
-#define PERL_ARGS_ASSERT_SAVE_PUSHPTRI32PTR
-STATIC SV* S_save_scalar_at(pTHX_ SV **sptr, const U32 flags);
-#define PERL_ARGS_ASSERT_SAVE_SCALAR_AT \
- assert(sptr)
-#endif
-#if defined(PERL_IN_SV_C)
-STATIC char * S_F0convert(NV nv, char *const endbuf, STRLEN *const len);
-#define PERL_ARGS_ASSERT_F0CONVERT \
- assert(endbuf); assert(len)
-STATIC void S_anonymise_cv_maybe(pTHX_ GV *gv, CV *cv);
-#define PERL_ARGS_ASSERT_ANONYMISE_CV_MAYBE \
- assert(gv); assert(cv)
-STATIC void S_assert_uft8_cache_coherent(pTHX_ const char *const func, STRLEN from_cache, STRLEN real, SV *const sv);
-#define PERL_ARGS_ASSERT_ASSERT_UFT8_CACHE_COHERENT \
- assert(func); assert(sv)
-STATIC bool S_curse(pTHX_ SV * const sv, const bool check_refcnt);
-#define PERL_ARGS_ASSERT_CURSE \
- assert(sv)
-STATIC STRLEN S_expect_number(pTHX_ const char **const pattern)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_EXPECT_NUMBER \
- assert(pattern)
-
-STATIC SSize_t S_find_array_subscript(pTHX_ const AV *const av, const SV *const val);
-#define PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT \
- assert(val)
-STATIC SV * S_find_hash_subscript(pTHX_ const HV *const hv, const SV *const val);
-#define PERL_ARGS_ASSERT_FIND_HASH_SUBSCRIPT \
- assert(val)
-STATIC SV* S_find_uninit_var(pTHX_ const OP *const obase, const SV *const uninit_sv, bool match, const char **desc_p);
-#define PERL_ARGS_ASSERT_FIND_UNINIT_VAR \
- assert(desc_p)
-STATIC bool S_glob_2number(pTHX_ GV* const gv);
-#define PERL_ARGS_ASSERT_GLOB_2NUMBER \
- assert(gv)
-STATIC void S_glob_assign_glob(pTHX_ SV *const dsv, SV *const ssv, const int dtype);
-#define PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB \
- assert(dsv); assert(ssv)
-STATIC SV * S_more_sv(pTHX);
-#define PERL_ARGS_ASSERT_MORE_SV
-STATIC void S_not_a_number(pTHX_ SV *const sv);
-#define PERL_ARGS_ASSERT_NOT_A_NUMBER \
- assert(sv)
-STATIC void S_not_incrementable(pTHX_ SV *const sv);
-#define PERL_ARGS_ASSERT_NOT_INCREMENTABLE \
- assert(sv)
-STATIC PTR_TBL_ENT_t * S_ptr_table_find(PTR_TBL_t *const tbl, const void *const sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PTR_TABLE_FIND \
- assert(tbl)
-
-STATIC bool S_sv_2iuv_common(pTHX_ SV *const sv);
-#define PERL_ARGS_ASSERT_SV_2IUV_COMMON \
- assert(sv)
-STATIC void S_sv_add_arena(pTHX_ char *const ptr, const U32 size, const U32 flags);
-#define PERL_ARGS_ASSERT_SV_ADD_ARENA \
- assert(ptr)
-STATIC const char * S_sv_display(pTHX_ SV *const sv, char *tmpbuf, STRLEN tmpbuf_size);
-#define PERL_ARGS_ASSERT_SV_DISPLAY \
- assert(sv); assert(tmpbuf)
-STATIC STRLEN S_sv_pos_b2u_midway(pTHX_ const U8 *const s, const U8 *const target, const U8 *end, STRLEN endu);
-#define PERL_ARGS_ASSERT_SV_POS_B2U_MIDWAY \
- assert(s); assert(target); assert(end)
-STATIC STRLEN S_sv_pos_u2b_cached(pTHX_ SV *const sv, MAGIC **const mgp, const U8 *const start, const U8 *const send, STRLEN uoffset, STRLEN uoffset0, STRLEN boffset0);
-#define PERL_ARGS_ASSERT_SV_POS_U2B_CACHED \
- assert(sv); assert(mgp); assert(start); assert(send)
-STATIC STRLEN S_sv_pos_u2b_forwards(const U8 *const start, const U8 *const send, STRLEN *const uoffset, bool *const at_end);
-#define PERL_ARGS_ASSERT_SV_POS_U2B_FORWARDS \
- assert(start); assert(send); assert(uoffset); assert(at_end)
-STATIC STRLEN S_sv_pos_u2b_midway(const U8 *const start, const U8 *send, STRLEN uoffset, const STRLEN uend);
-#define PERL_ARGS_ASSERT_SV_POS_U2B_MIDWAY \
- assert(start); assert(send)
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE void S_sv_unglob(pTHX_ SV *const sv, U32 flags);
-#define PERL_ARGS_ASSERT_SV_UNGLOB \
- assert(sv)
-#endif
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE char * S_uiv_2buf(char *const buf, const IV iv, UV uv, const int is_uv, char **const peob)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_UIV_2BUF \
- assert(buf); assert(peob)
-#endif
+STATIC void
+S_save_pushptri32ptr(pTHX_ void * const ptr1, const I32 i, void * const ptr2, const int type);
+# define PERL_ARGS_ASSERT_SAVE_PUSHPTRI32PTR
-STATIC void S_utf8_mg_len_cache_update(pTHX_ SV *const sv, MAGIC **const mgp, const STRLEN ulen);
-#define PERL_ARGS_ASSERT_UTF8_MG_LEN_CACHE_UPDATE \
- assert(sv); assert(mgp)
-STATIC void S_utf8_mg_pos_cache_update(pTHX_ SV *const sv, MAGIC **const mgp, const STRLEN byte, const STRLEN utf8, const STRLEN blen);
-#define PERL_ARGS_ASSERT_UTF8_MG_POS_CACHE_UPDATE \
- assert(sv); assert(mgp)
-STATIC I32 S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask);
-#define PERL_ARGS_ASSERT_VISIT \
- assert(f)
-# if defined(USE_ITHREADS)
-STATIC SV* S_sv_dup_common(pTHX_ const SV *const ssv, CLONE_PARAMS *const param)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_DUP_COMMON \
- assert(ssv); assert(param)
-
-STATIC SV ** S_sv_dup_inc_multiple(pTHX_ SV *const *source, SV **dest, SSize_t items, CLONE_PARAMS *const param);
-#define PERL_ARGS_ASSERT_SV_DUP_INC_MULTIPLE \
- assert(source); assert(dest); assert(param)
-STATIC void S_unreferenced_to_tmp_stack(pTHX_ AV *const unreferenced);
-#define PERL_ARGS_ASSERT_UNREFERENCED_TO_TMP_STACK \
- assert(unreferenced)
-# endif
-#endif
-#if defined(PERL_IN_SV_C) || defined (PERL_IN_OP_C)
-PERL_CALLCONV SV * Perl_varname(pTHX_ const GV *const gv, const char gvtype, PADOFFSET targ, const SV *const keyname, SSize_t aindex, int subscript_type)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_VARNAME
+STATIC SV *
+S_save_scalar_at(pTHX_ SV **sptr, const U32 flags);
+# define PERL_ARGS_ASSERT_SAVE_SCALAR_AT \
+ assert(sptr)
-#endif
+#endif /* defined(PERL_IN_SCOPE_C) */
+#if defined(PERL_IN_SV_C)
+STATIC char *
+S_F0convert(NV nv, char * const endbuf, STRLEN * const len);
+# define PERL_ARGS_ASSERT_F0CONVERT \
+ assert(endbuf); assert(len)
+
+STATIC void
+S_anonymise_cv_maybe(pTHX_ GV *gv, CV *cv);
+# define PERL_ARGS_ASSERT_ANONYMISE_CV_MAYBE \
+ assert(gv); assert(cv)
+
+STATIC void
+S_assert_uft8_cache_coherent(pTHX_ const char * const func, STRLEN from_cache, STRLEN real, SV * const sv);
+# define PERL_ARGS_ASSERT_ASSERT_UFT8_CACHE_COHERENT \
+ assert(func); assert(sv)
+
+STATIC bool
+S_curse(pTHX_ SV * const sv, const bool check_refcnt);
+# define PERL_ARGS_ASSERT_CURSE \
+ assert(sv)
+
+STATIC STRLEN
+S_expect_number(pTHX_ const char ** const pattern)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_EXPECT_NUMBER \
+ assert(pattern)
+
+STATIC SSize_t
+S_find_array_subscript(pTHX_ const AV * const av, const SV * const val);
+# define PERL_ARGS_ASSERT_FIND_ARRAY_SUBSCRIPT \
+ assert(val)
+
+STATIC SV *
+S_find_hash_subscript(pTHX_ const HV * const hv, const SV * const val);
+# define PERL_ARGS_ASSERT_FIND_HASH_SUBSCRIPT \
+ assert(val)
+
+STATIC SV *
+S_find_uninit_var(pTHX_ const OP * const obase, const SV * const uninit_sv, bool match, const char **desc_p);
+# define PERL_ARGS_ASSERT_FIND_UNINIT_VAR \
+ assert(desc_p)
+
+STATIC bool
+S_glob_2number(pTHX_ GV * const gv);
+# define PERL_ARGS_ASSERT_GLOB_2NUMBER \
+ assert(gv)
+
+STATIC void
+S_glob_assign_glob(pTHX_ SV * const dsv, SV * const ssv, const int dtype);
+# define PERL_ARGS_ASSERT_GLOB_ASSIGN_GLOB \
+ assert(dsv); assert(ssv)
+
+PERL_CALLCONV SV *
+Perl_more_sv(pTHX);
+# define PERL_ARGS_ASSERT_MORE_SV
+
+STATIC void
+S_not_a_number(pTHX_ SV * const sv);
+# define PERL_ARGS_ASSERT_NOT_A_NUMBER \
+ assert(sv)
+
+STATIC void
+S_not_incrementable(pTHX_ SV * const sv);
+# define PERL_ARGS_ASSERT_NOT_INCREMENTABLE \
+ assert(sv)
+
+STATIC PTR_TBL_ENT_t *
+S_ptr_table_find(PTR_TBL_t * const tbl, const void * const sv)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_PTR_TABLE_FIND \
+ assert(tbl)
+
+STATIC bool
+S_sv_2iuv_common(pTHX_ SV * const sv);
+# define PERL_ARGS_ASSERT_SV_2IUV_COMMON \
+ assert(sv)
+
+STATIC void
+S_sv_add_arena(pTHX_ char * const ptr, const U32 size, const U32 flags);
+# define PERL_ARGS_ASSERT_SV_ADD_ARENA \
+ assert(ptr)
+
+STATIC const char *
+S_sv_display(pTHX_ SV * const sv, char *tmpbuf, STRLEN tmpbuf_size);
+# define PERL_ARGS_ASSERT_SV_DISPLAY \
+ assert(sv); assert(tmpbuf)
+
+STATIC STRLEN
+S_sv_pos_b2u_midway(pTHX_ const U8 * const s, const U8 * const target, const U8 *end, STRLEN endu);
+# define PERL_ARGS_ASSERT_SV_POS_B2U_MIDWAY \
+ assert(s); assert(target); assert(end)
+
+STATIC STRLEN
+S_sv_pos_u2b_cached(pTHX_ SV * const sv, MAGIC ** const mgp, const U8 * const start, const U8 * const send, STRLEN uoffset, STRLEN uoffset0, STRLEN boffset0);
+# define PERL_ARGS_ASSERT_SV_POS_U2B_CACHED \
+ assert(sv); assert(mgp); assert(start); assert(send)
+
+STATIC STRLEN
+S_sv_pos_u2b_forwards(const U8 * const start, const U8 * const send, STRLEN * const uoffset, bool * const at_end, bool *canonical_position);
+# define PERL_ARGS_ASSERT_SV_POS_U2B_FORWARDS \
+ assert(start); assert(send); assert(uoffset); assert(at_end); assert(canonical_position)
+
+STATIC STRLEN
+S_sv_pos_u2b_midway(const U8 * const start, const U8 *send, STRLEN uoffset, const STRLEN uend);
+# define PERL_ARGS_ASSERT_SV_POS_U2B_MIDWAY \
+ assert(start); assert(send)
+
+STATIC void
+S_utf8_mg_len_cache_update(pTHX_ SV * const sv, MAGIC ** const mgp, const STRLEN ulen);
+# define PERL_ARGS_ASSERT_UTF8_MG_LEN_CACHE_UPDATE \
+ assert(sv); assert(mgp)
+
+STATIC void
+S_utf8_mg_pos_cache_update(pTHX_ SV * const sv, MAGIC ** const mgp, const STRLEN byte, const STRLEN utf8, const STRLEN blen);
+# define PERL_ARGS_ASSERT_UTF8_MG_POS_CACHE_UPDATE \
+ assert(sv); assert(mgp)
+
+STATIC I32
+S_visit(pTHX_ SVFUNC_t f, const U32 flags, const U32 mask);
+# define PERL_ARGS_ASSERT_VISIT \
+ assert(f)
+
+# if defined(DEBUGGING)
+STATIC void
+S_del_sv(pTHX_ SV *p);
+# define PERL_ARGS_ASSERT_DEL_SV \
+ assert(p)
+
+# endif
+# if !defined(NV_PRESERVES_UV)
+# if defined(DEBUGGING)
+STATIC int
+S_sv_2iuv_non_preserve(pTHX_ SV * const sv, I32 numtype);
+# define PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE \
+ assert(sv)
+
+# else
+STATIC int
+S_sv_2iuv_non_preserve(pTHX_ SV * const sv);
+# define PERL_ARGS_ASSERT_SV_2IUV_NON_PRESERVE \
+ assert(sv)
+
+# endif
+# endif /* !defined(NV_PRESERVES_UV) */
+# if defined(PERL_DEBUG_READONLY_COW)
+STATIC void
+S_sv_buf_to_rw(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SV_BUF_TO_RW \
+ assert(sv)
+
+# endif
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE void
+S_sv_unglob(pTHX_ SV * const sv, U32 flags);
+# define PERL_ARGS_ASSERT_SV_UNGLOB \
+ assert(sv)
+
+PERL_STATIC_INLINE char *
+S_uiv_2buf(char * const buf, const IV iv, UV uv, const int is_uv, char ** const peob)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_UIV_2BUF \
+ assert(buf); assert(peob)
+
+# endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+# if defined(USE_ITHREADS)
+STATIC SV *
+S_sv_dup_common(pTHX_ const SV * const ssv, CLONE_PARAMS * const param)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SV_DUP_COMMON \
+ assert(ssv); assert(param)
+
+STATIC void
+S_sv_dup_hvaux(pTHX_ const SV * const ssv, SV *dsv, CLONE_PARAMS * const param);
+# define PERL_ARGS_ASSERT_SV_DUP_HVAUX \
+ assert(ssv); assert(dsv); assert(param)
+
+STATIC SV **
+S_sv_dup_inc_multiple(pTHX_ SV * const *source, SV **dest, SSize_t items, CLONE_PARAMS * const param);
+# define PERL_ARGS_ASSERT_SV_DUP_INC_MULTIPLE \
+ assert(source); assert(dest); assert(param)
+
+STATIC void
+S_unreferenced_to_tmp_stack(pTHX_ AV * const unreferenced);
+# define PERL_ARGS_ASSERT_UNREFERENCED_TO_TMP_STACK \
+ assert(unreferenced)
+
+# endif /* defined(USE_ITHREADS) */
+#endif /* defined(PERL_IN_SV_C) */
#if defined(PERL_IN_TOKE_C)
-STATIC int S_ao(pTHX_ int toketype);
-#define PERL_ARGS_ASSERT_AO
-STATIC void S_check_uni(pTHX);
-#define PERL_ARGS_ASSERT_CHECK_UNI
-STATIC void S_checkcomma(pTHX_ const char *s, const char *name, const char *what);
-#define PERL_ARGS_ASSERT_CHECKCOMMA \
- assert(s); assert(name); assert(what)
-STATIC char * S_filter_gets(pTHX_ SV *sv, STRLEN append)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_FILTER_GETS \
- assert(sv)
-
-STATIC HV * S_find_in_my_stash(pTHX_ const char *pkgname, STRLEN len)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_FIND_IN_MY_STASH \
- assert(pkgname)
-
-STATIC void S_force_ident(pTHX_ const char *s, int kind);
-#define PERL_ARGS_ASSERT_FORCE_IDENT \
- assert(s)
-STATIC void S_force_ident_maybe_lex(pTHX_ char pit);
-#define PERL_ARGS_ASSERT_FORCE_IDENT_MAYBE_LEX
-STATIC void S_force_next(pTHX_ I32 type);
-#define PERL_ARGS_ASSERT_FORCE_NEXT
-STATIC char* S_force_strict_version(pTHX_ char *s);
-#define PERL_ARGS_ASSERT_FORCE_STRICT_VERSION \
- assert(s)
-STATIC char* S_force_version(pTHX_ char *s, int guessing);
-#define PERL_ARGS_ASSERT_FORCE_VERSION \
- assert(s)
-STATIC char* S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack);
-#define PERL_ARGS_ASSERT_FORCE_WORD \
- assert(start)
-STATIC SV* S_get_and_check_backslash_N_name_wrapper(pTHX_ const char* s, const char* const e)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME_WRAPPER \
- assert(s); assert(e)
-
-STATIC void S_incline(pTHX_ const char *s, const char *end);
-#define PERL_ARGS_ASSERT_INCLINE \
- assert(s); assert(end)
-STATIC int S_intuit_method(pTHX_ char *s, SV *ioname, CV *cv);
-#define PERL_ARGS_ASSERT_INTUIT_METHOD \
- assert(s)
-STATIC int S_intuit_more(pTHX_ char *s, char *e);
-#define PERL_ARGS_ASSERT_INTUIT_MORE \
- assert(s); assert(e)
-STATIC I32 S_lop(pTHX_ I32 f, U8 x, char *s);
-#define PERL_ARGS_ASSERT_LOP \
- assert(s)
-PERL_STATIC_NO_RET void S_missingterm(pTHX_ char *s, STRLEN len)
- __attribute__noreturn__;
-#define PERL_ARGS_ASSERT_MISSINGTERM
-
-STATIC SV* S_new_constant(pTHX_ const char *s, STRLEN len, const char *key, STRLEN keylen, SV *sv, SV *pv, const char *type, STRLEN typelen, const char ** error_msg);
-#define PERL_ARGS_ASSERT_NEW_CONSTANT \
- assert(key); assert(sv)
-STATIC void S_no_op(pTHX_ const char *const what, char *s);
-#define PERL_ARGS_ASSERT_NO_OP \
- assert(what)
-STATIC void S_parse_ident(pTHX_ char **s, char **d, char * const e, int allow_package, bool is_utf8, bool check_dollar, bool tick_warn);
-#define PERL_ARGS_ASSERT_PARSE_IDENT \
- assert(s); assert(d); assert(e)
-STATIC int S_pending_ident(pTHX);
-#define PERL_ARGS_ASSERT_PENDING_IDENT
-STATIC char* S_scan_const(pTHX_ char *start)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SCAN_CONST \
- assert(start)
-
-STATIC char* S_scan_formline(pTHX_ char *s)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SCAN_FORMLINE \
- assert(s)
-
-STATIC char* S_scan_heredoc(pTHX_ char *s)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SCAN_HEREDOC \
- assert(s)
-
-STATIC char* S_scan_ident(pTHX_ char *s, char *dest, STRLEN destlen, I32 ck_uni);
-#define PERL_ARGS_ASSERT_SCAN_IDENT \
- assert(s); assert(dest)
-STATIC char* S_scan_inputsymbol(pTHX_ char *start)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SCAN_INPUTSYMBOL \
- assert(start)
-
-STATIC char* S_scan_pat(pTHX_ char *start, I32 type)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SCAN_PAT \
- assert(start)
-
-STATIC char* S_scan_subst(pTHX_ char *start)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SCAN_SUBST \
- assert(start)
-
-STATIC char* S_scan_trans(pTHX_ char *start)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SCAN_TRANS \
- assert(start)
-
-STATIC I32 S_sublex_done(pTHX)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SUBLEX_DONE
-
-STATIC I32 S_sublex_push(pTHX)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SUBLEX_PUSH
-
-STATIC I32 S_sublex_start(pTHX)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SUBLEX_START
-
-STATIC char* S_swallow_bom(pTHX_ U8 *s)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SWALLOW_BOM \
- assert(s)
-
-STATIC char * S_tokenize_use(pTHX_ int is_use, char *s)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_TOKENIZE_USE \
- assert(s)
-
-STATIC SV* S_tokeq(pTHX_ SV *sv);
-#define PERL_ARGS_ASSERT_TOKEQ \
- assert(sv)
-STATIC void S_update_debugger_info(pTHX_ SV *orig_sv, const char *const buf, STRLEN len);
-#define PERL_ARGS_ASSERT_UPDATE_DEBUGGER_INFO
-STATIC int S_yywarn(pTHX_ const char *const s, U32 flags);
-#define PERL_ARGS_ASSERT_YYWARN \
- assert(s)
-#endif
+STATIC int
+S_ao(pTHX_ int toketype);
+# define PERL_ARGS_ASSERT_AO
+
+STATIC void
+S_check_uni(pTHX);
+# define PERL_ARGS_ASSERT_CHECK_UNI
+
+STATIC void
+S_checkcomma(pTHX_ const char *s, const char *name, const char *what);
+# define PERL_ARGS_ASSERT_CHECKCOMMA \
+ assert(s); assert(name); assert(what)
+
+STATIC char *
+S_filter_gets(pTHX_ SV *sv, STRLEN append)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_FILTER_GETS \
+ assert(sv)
+
+STATIC HV *
+S_find_in_my_stash(pTHX_ const char *pkgname, STRLEN len)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_FIND_IN_MY_STASH \
+ assert(pkgname)
+
+STATIC void
+S_force_ident(pTHX_ const char *s, int kind);
+# define PERL_ARGS_ASSERT_FORCE_IDENT \
+ assert(s)
+
+STATIC void
+S_force_ident_maybe_lex(pTHX_ char pit);
+# define PERL_ARGS_ASSERT_FORCE_IDENT_MAYBE_LEX
+
+STATIC void
+S_force_next(pTHX_ I32 type);
+# define PERL_ARGS_ASSERT_FORCE_NEXT
+
+STATIC char *
+S_force_strict_version(pTHX_ char *s);
+# define PERL_ARGS_ASSERT_FORCE_STRICT_VERSION \
+ assert(s)
+
+STATIC char *
+S_force_version(pTHX_ char *s, int guessing);
+# define PERL_ARGS_ASSERT_FORCE_VERSION \
+ assert(s)
+
+STATIC char *
+S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack);
+# define PERL_ARGS_ASSERT_FORCE_WORD \
+ assert(start)
+
+STATIC SV *
+S_get_and_check_backslash_N_name_wrapper(pTHX_ const char *s, const char * const e)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME_WRAPPER \
+ assert(s); assert(e)
+
+STATIC void
+S_incline(pTHX_ const char *s, const char *end);
+# define PERL_ARGS_ASSERT_INCLINE \
+ assert(s); assert(end)
+
+STATIC int
+S_intuit_method(pTHX_ char *s, SV *ioname, CV *cv);
+# define PERL_ARGS_ASSERT_INTUIT_METHOD \
+ assert(s)
+
+STATIC int
+S_intuit_more(pTHX_ char *s, char *e);
+# define PERL_ARGS_ASSERT_INTUIT_MORE \
+ assert(s); assert(e)
+
+STATIC I32
+S_lop(pTHX_ I32 f, U8 x, char *s);
+# define PERL_ARGS_ASSERT_LOP \
+ assert(s)
+
+PERL_STATIC_NO_RET void
+S_missingterm(pTHX_ char *s, STRLEN len)
+ __attribute__noreturn__;
+# define PERL_ARGS_ASSERT_MISSINGTERM
+
+STATIC SV *
+S_new_constant(pTHX_ const char *s, STRLEN len, const char *key, STRLEN keylen, SV *sv, SV *pv, const char *type, STRLEN typelen, const char **error_msg);
+# define PERL_ARGS_ASSERT_NEW_CONSTANT \
+ assert(key); assert(sv)
+
+STATIC void
+S_no_op(pTHX_ const char * const what, char *s);
+# define PERL_ARGS_ASSERT_NO_OP \
+ assert(what)
+
+STATIC void
+S_parse_ident(pTHX_ char **s, char **d, char * const e, int allow_package, bool is_utf8, bool check_dollar, bool tick_warn);
+# define PERL_ARGS_ASSERT_PARSE_IDENT \
+ assert(s); assert(d); assert(e)
+
+STATIC int
+S_pending_ident(pTHX);
+# define PERL_ARGS_ASSERT_PENDING_IDENT
+
+STATIC char *
+S_scan_const(pTHX_ char *start)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SCAN_CONST \
+ assert(start)
+
+STATIC char *
+S_scan_formline(pTHX_ char *s)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SCAN_FORMLINE \
+ assert(s)
+
+STATIC char *
+S_scan_heredoc(pTHX_ char *s)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SCAN_HEREDOC \
+ assert(s)
+
+STATIC char *
+S_scan_ident(pTHX_ char *s, char *dest, STRLEN destlen, I32 ck_uni);
+# define PERL_ARGS_ASSERT_SCAN_IDENT \
+ assert(s); assert(dest)
+
+STATIC char *
+S_scan_inputsymbol(pTHX_ char *start)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SCAN_INPUTSYMBOL \
+ assert(start)
+
+STATIC char *
+S_scan_pat(pTHX_ char *start, I32 type)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SCAN_PAT \
+ assert(start)
+
+STATIC char *
+S_scan_subst(pTHX_ char *start)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SCAN_SUBST \
+ assert(start)
+
+STATIC char *
+S_scan_trans(pTHX_ char *start)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SCAN_TRANS \
+ assert(start)
+
+STATIC I32
+S_sublex_done(pTHX)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SUBLEX_DONE
+
+STATIC I32
+S_sublex_push(pTHX)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SUBLEX_PUSH
+
+STATIC I32
+S_sublex_start(pTHX)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SUBLEX_START
+
+STATIC char *
+S_swallow_bom(pTHX_ U8 *s)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SWALLOW_BOM \
+ assert(s)
+
+STATIC char *
+S_tokenize_use(pTHX_ int is_use, char *s)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_TOKENIZE_USE \
+ assert(s)
+
+STATIC SV *
+S_tokeq(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_TOKEQ \
+ assert(sv)
+
+STATIC void
+S_update_debugger_info(pTHX_ SV *orig_sv, const char * const buf, STRLEN len);
+# define PERL_ARGS_ASSERT_UPDATE_DEBUGGER_INFO
+
+STATIC int
+S_yywarn(pTHX_ const char * const s, U32 flags);
+# define PERL_ARGS_ASSERT_YYWARN \
+ assert(s)
+
+# if defined(DEBUGGING)
+STATIC void
+S_printbuf(pTHX_ const char * const fmt, const char * const s)
+ __attribute__format__(__printf__,pTHX_1,0);
+# define PERL_ARGS_ASSERT_PRINTBUF \
+ assert(fmt); assert(s)
+
+STATIC int
+S_tokereport(pTHX_ I32 rv, const YYSTYPE *lvalp);
+# define PERL_ARGS_ASSERT_TOKEREPORT \
+ assert(lvalp)
+
+# endif /* defined(DEBUGGING) */
+# if defined(PERL_CR_FILTER)
+STATIC I32
+S_cr_textfilter(pTHX_ int idx, SV *sv, int maxlen);
+# define PERL_ARGS_ASSERT_CR_TEXTFILTER
+
+STATIC void
+S_strip_return(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_STRIP_RETURN \
+ assert(sv)
+
+# endif /* defined(PERL_CR_FILTER) */
+# if !defined(PERL_NO_UTF16_FILTER)
+STATIC U8 *
+S_add_utf16_textfilter(pTHX_ U8 * const s, bool reversed);
+# define PERL_ARGS_ASSERT_ADD_UTF16_TEXTFILTER \
+ assert(s)
+
+STATIC I32
+S_utf16_textfilter(pTHX_ int idx, SV *sv, int maxlen);
+# define PERL_ARGS_ASSERT_UTF16_TEXTFILTER \
+ assert(sv)
+
+# endif /* !defined(PERL_NO_UTF16_FILTER) */
+#endif /* defined(PERL_IN_TOKE_C) */
#if defined(PERL_IN_UNIVERSAL_C)
-STATIC bool S_isa_lookup(pTHX_ HV *stash, SV *namesv, const char * name, STRLEN len, U32 flags);
-STATIC bool S_sv_derived_from_svpvn(pTHX_ SV *sv, SV *namesv, const char * name, const STRLEN len, U32 flags);
+STATIC bool
+S_isa_lookup(pTHX_ HV *stash, SV *namesv, const char *name, STRLEN len, U32 flags);
+
+STATIC bool
+S_sv_derived_from_svpvn(pTHX_ SV *sv, SV *namesv, const char *name, const STRLEN len, U32 flags);
+
#endif
#if defined(PERL_IN_UTF8_C)
-STATIC UV S__to_utf8_case(pTHX_ const UV uv1, const U8 *p, U8* ustrp, STRLEN *lenp, SV *invlist, const I32 * const invmap, const U32 * const * const aux_tables, const U8 * const aux_table_lengths, const char * const normal);
-#define PERL_ARGS_ASSERT__TO_UTF8_CASE \
- assert(ustrp); assert(lenp); assert(invlist); assert(invmap); assert(normal)
-STATIC UV S_check_locale_boundary_crossing(pTHX_ const U8* const p, const UV result, U8* const ustrp, STRLEN *lenp)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CHECK_LOCALE_BOUNDARY_CROSSING \
- assert(p); assert(ustrp); assert(lenp)
-
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE int S_does_utf8_overflow(const U8 * const s, const U8 * e, const bool consider_overlongs)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DOES_UTF8_OVERFLOW \
- assert(s); assert(e)
-#endif
+STATIC UV
+S__to_utf8_case(pTHX_ const UV original, const U8 *p, U8 *ustrp, STRLEN *lenp, SV *invlist, const I32 * const invmap, const U32 * const * const aux_tables, const U8 * const aux_table_lengths, const char * const normal);
+# define PERL_ARGS_ASSERT__TO_UTF8_CASE \
+ assert(ustrp); assert(lenp); assert(invlist); assert(invmap); assert(normal)
+
+STATIC UV
+S_check_locale_boundary_crossing(pTHX_ const U8 * const p, const UV result, U8 * const ustrp, STRLEN *lenp)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_CHECK_LOCALE_BOUNDARY_CROSSING \
+ assert(p); assert(ustrp); assert(lenp)
+
+STATIC HV *
+S_new_msg_hv(pTHX_ const char * const message, U32 categories, U32 flag)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_NEW_MSG_HV \
+ assert(message)
+
+STATIC UV
+S_to_case_cp_list(pTHX_ const UV original, const U32 ** const remaining_list, Size_t *remaining_count, SV *invlist, const I32 * const invmap, const U32 * const * const aux_tables, const U8 * const aux_table_lengths, const char * const normal);
+# define PERL_ARGS_ASSERT_TO_CASE_CP_LIST \
+ assert(invlist); assert(invmap); assert(normal)
+
+STATIC U8
+S_to_lower_latin1(const U8 c, U8 *p, STRLEN *lenp, const char dummy)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_TO_LOWER_LATIN1
+
+STATIC UV
+S_turkic_fc(pTHX_ const U8 * const p, const U8 * const e, U8 *ustrp, STRLEN *lenp);
+# define PERL_ARGS_ASSERT_TURKIC_FC \
+ assert(p); assert(e); assert(ustrp); assert(lenp)
+
+STATIC UV
+S_turkic_lc(pTHX_ const U8 * const p0, const U8 * const e, U8 *ustrp, STRLEN *lenp);
+# define PERL_ARGS_ASSERT_TURKIC_LC \
+ assert(p0); assert(e); assert(ustrp); assert(lenp)
+
+STATIC UV
+S_turkic_uc(pTHX_ const U8 * const p, const U8 * const e, U8 *ustrp, STRLEN *lenp);
+# define PERL_ARGS_ASSERT_TURKIC_UC \
+ assert(p); assert(e); assert(ustrp); assert(lenp)
+
+STATIC char *
+S_unexpected_non_continuation_text(pTHX_ const U8 * const s, STRLEN print_len, const STRLEN non_cont_byte_pos, const STRLEN expect_len)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_UNEXPECTED_NON_CONTINUATION_TEXT \
+ assert(s)
+
+# if 0
+STATIC void
+S_warn_on_first_deprecated_use(pTHX_ U32 category, const char * const name, const char * const alternative, const bool use_locale, const char * const file, const unsigned line);
+# define PERL_ARGS_ASSERT_WARN_ON_FIRST_DEPRECATED_USE \
+ assert(name); assert(alternative); assert(file)
+
+# endif
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE int
+S_does_utf8_overflow(const U8 * const s, const U8 *e, const bool consider_overlongs)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DOES_UTF8_OVERFLOW \
+ assert(s); assert(e)
+
+PERL_STATIC_INLINE int
+S_isFF_overlong(const U8 * const s, const STRLEN len)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ISFF_OVERLONG \
+ assert(s)
+
+PERL_STATIC_INLINE bool
+S_is_utf8_common(pTHX_ const U8 * const p, const U8 * const e, SV * const invlist)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_IS_UTF8_COMMON \
+ assert(p); assert(e)
+
+PERL_STATIC_INLINE int
+S_is_utf8_overlong(const U8 * const s, const STRLEN len)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_IS_UTF8_OVERLONG \
+ assert(s)
+
+# endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+#endif /* defined(PERL_IN_UTF8_C) */
+#if defined(PERL_IN_UTIL_C)
+STATIC bool
+S_ckwarn_common(pTHX_ U32 w);
+# define PERL_ARGS_ASSERT_CKWARN_COMMON
+
+STATIC SV *
+S_mess_alloc(pTHX);
+# define PERL_ARGS_ASSERT_MESS_ALLOC
+
+STATIC SV *
+S_with_queued_errors(pTHX_ SV *ex);
+# define PERL_ARGS_ASSERT_WITH_QUEUED_ERRORS \
+ assert(ex)
+
+STATIC void
+S_xs_version_bootcheck(pTHX_ U32 items, U32 ax, const char *xs_p, STRLEN xs_len);
+# define PERL_ARGS_ASSERT_XS_VERSION_BOOTCHECK \
+ assert(xs_p)
+
+# if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL)
+STATIC void
+S_mem_log_common(enum mem_log_type mlt, const UV n, const UV typesize, const char *type_name, const SV *sv, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
+# define PERL_ARGS_ASSERT_MEM_LOG_COMMON \
+ assert(type_name); assert(filename); assert(funcname)
+
+# endif
+# if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE U32
+S_ptr_hash(PTRV u);
+# define PERL_ARGS_ASSERT_PTR_HASH
+
+# endif
+# if defined(PERL_USES_PL_PIDSTATUS)
+STATIC void
+S_pidgone(pTHX_ Pid_t pid, int status);
+# define PERL_ARGS_ASSERT_PIDGONE
+
+# endif
+#endif /* defined(PERL_IN_UTIL_C) */
+#if defined(PERL_MEM_LOG)
+PERL_CALLCONV Malloc_t
+Perl_mem_log_alloc(const UV nconst, UV typesize, const char *type_name, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
+# define PERL_ARGS_ASSERT_MEM_LOG_ALLOC \
+ assert(type_name); assert(filename); assert(funcname)
+
+PERL_CALLCONV void
+Perl_mem_log_del_sv(const SV *sv, const char *filename, int linenumber, const char *funcname);
+# define PERL_ARGS_ASSERT_MEM_LOG_DEL_SV \
+ assert(sv); assert(filename); assert(funcname)
+
+PERL_CALLCONV Malloc_t
+Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int linenumber, const char *funcname);
+# define PERL_ARGS_ASSERT_MEM_LOG_FREE \
+ assert(filename); assert(funcname)
+
+PERL_CALLCONV void
+Perl_mem_log_new_sv(const SV *sv, const char *filename, int linenumber, const char *funcname);
+# define PERL_ARGS_ASSERT_MEM_LOG_NEW_SV \
+ assert(sv); assert(filename); assert(funcname)
+
+PERL_CALLCONV Malloc_t
+Perl_mem_log_realloc(const UV n, const UV typesize, const char *type_name, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
+# define PERL_ARGS_ASSERT_MEM_LOG_REALLOC \
+ assert(type_name); assert(filename); assert(funcname)
+
+#endif /* defined(PERL_MEM_LOG) */
+#if !defined(PERL_NO_INLINE_FUNCTIONS)
+PERL_STATIC_INLINE I32 *
+Perl_CvDEPTH(const CV * const sv);
+# define PERL_ARGS_ASSERT_CVDEPTH \
+ assert(sv)
+
+PERL_STATIC_INLINE GV *
+Perl_CvGV(pTHX_ CV *sv);
+# define PERL_ARGS_ASSERT_CVGV \
+ assert(sv)
+
+PERL_STATIC_INLINE I32
+Perl_POPMARK(pTHX);
+# define PERL_ARGS_ASSERT_POPMARK
+
+PERL_STATIC_INLINE struct regexp *
+Perl_ReANY(const REGEXP * const re);
+# define PERL_ARGS_ASSERT_REANY \
+ assert(re)
+
+PERL_STATIC_INLINE void
+Perl_SvAMAGIC_off(SV *sv);
+# define PERL_ARGS_ASSERT_SVAMAGIC_OFF \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_SvAMAGIC_on(SV *sv);
+# define PERL_ARGS_ASSERT_SVAMAGIC_ON \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_SvGETMAGIC(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SVGETMAGIC \
+ assert(sv)
+
+PERL_STATIC_INLINE IV
+Perl_SvIV(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SVIV \
+ assert(sv)
+
+PERL_STATIC_INLINE IV
+Perl_SvIV_nomg(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SVIV_NOMG \
+ assert(sv)
+
+PERL_STATIC_INLINE NV
+Perl_SvNV(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SVNV \
+ assert(sv)
+
+PERL_STATIC_INLINE NV
+Perl_SvNV_nomg(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SVNV_NOMG \
+ assert(sv)
+
+PERL_STATIC_FORCE_INLINE bool
+Perl_SvPVXtrue(pTHX_ SV *sv)
+ __attribute__always_inline__;
+# define PERL_ARGS_ASSERT_SVPVXTRUE \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_SvREFCNT_dec(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SVREFCNT_DEC
+
+PERL_STATIC_INLINE void
+Perl_SvREFCNT_dec_NN(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SVREFCNT_DEC_NN \
+ assert(sv)
+
+PERL_STATIC_INLINE SV *
+Perl_SvREFCNT_dec_ret_NULL(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SVREFCNT_DEC_RET_NULL
+
+PERL_STATIC_INLINE SV *
+Perl_SvREFCNT_inc(SV *sv);
+# define PERL_ARGS_ASSERT_SVREFCNT_INC
+
+PERL_STATIC_INLINE SV *
+Perl_SvREFCNT_inc_NN(SV *sv);
+# define PERL_ARGS_ASSERT_SVREFCNT_INC_NN \
+ assert(sv)
+
+PERL_STATIC_INLINE void
+Perl_SvREFCNT_inc_void(SV *sv);
+# define PERL_ARGS_ASSERT_SVREFCNT_INC_VOID
+
+PERL_STATIC_INLINE bool
+Perl_SvTRUE(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SVTRUE
+
+PERL_STATIC_INLINE bool
+Perl_SvTRUE_NN(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SVTRUE_NN \
+ assert(sv)
+
+PERL_STATIC_INLINE bool
+Perl_SvTRUE_common(pTHX_ SV *sv, const bool sv_2bool_is_fallback);
+# define PERL_ARGS_ASSERT_SVTRUE_COMMON \
+ assert(sv)
+
+PERL_STATIC_INLINE bool
+Perl_SvTRUE_nomg(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SVTRUE_NOMG
+
+PERL_STATIC_INLINE UV
+Perl_SvUV(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SVUV \
+ assert(sv)
+
+PERL_STATIC_INLINE UV
+Perl_SvUV_nomg(pTHX_ SV *sv);
+# define PERL_ARGS_ASSERT_SVUV_NOMG \
+ assert(sv)
+
+PERL_STATIC_INLINE I32
+Perl_TOPMARK(pTHX);
+# define PERL_ARGS_ASSERT_TOPMARK
+
+PERL_STATIC_INLINE void
+Perl_append_utf8_from_native_byte(const U8 byte, U8 **dest);
+# define PERL_ARGS_ASSERT_APPEND_UTF8_FROM_NATIVE_BYTE \
+ assert(dest)
+
+PERL_STATIC_INLINE Size_t
+Perl_av_count(pTHX_ AV *av)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_AV_COUNT \
+ assert(av)
+
+PERL_STATIC_INLINE SV **
+Perl_av_fetch_simple(pTHX_ AV *av, SSize_t key, I32 lval)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_AV_FETCH_SIMPLE \
+ assert(av)
+
+PERL_STATIC_INLINE AV *
+Perl_av_new_alloc(pTHX_ SSize_t size, bool zeroflag)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_AV_NEW_ALLOC
+
+PERL_STATIC_INLINE void
+Perl_av_push_simple(pTHX_ AV *av, SV *val);
+# define PERL_ARGS_ASSERT_AV_PUSH_SIMPLE \
+ assert(av); assert(val)
+
+PERL_STATIC_INLINE SV **
+Perl_av_store_simple(pTHX_ AV *av, SSize_t key, SV *val);
+# define PERL_ARGS_ASSERT_AV_STORE_SIMPLE \
+ assert(av)
+
+PERL_STATIC_INLINE I32
+Perl_foldEQ(pTHX_ const char *a, const char *b, I32 len);
+# define PERL_ARGS_ASSERT_FOLDEQ \
+ assert(a); assert(b)
+
+PERL_STATIC_INLINE I32
+Perl_foldEQ_latin1(pTHX_ const char *a, const char *b, I32 len);
+# define PERL_ARGS_ASSERT_FOLDEQ_LATIN1 \
+ assert(a); assert(b)
+
+PERL_STATIC_INLINE I32
+Perl_foldEQ_locale(pTHX_ const char *a, const char *b, I32 len);
+# define PERL_ARGS_ASSERT_FOLDEQ_LOCALE \
+ assert(a); assert(b)
+
+PERL_STATIC_INLINE MGVTBL *
+Perl_get_vtbl(pTHX_ int vtbl_id)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GET_VTBL
+
+PERL_STATIC_INLINE Size_t
+Perl_isC9_STRICT_UTF8_CHAR(const U8 * const s0, const U8 * const e)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ISC9_STRICT_UTF8_CHAR \
+ assert(s0); assert(e)
+
+PERL_STATIC_INLINE Size_t
+Perl_isSTRICT_UTF8_CHAR(const U8 * const s0, const U8 * const e)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ISSTRICT_UTF8_CHAR \
+ assert(s0); assert(e)
+
+PERL_STATIC_INLINE Size_t
+Perl_isUTF8_CHAR(const U8 * const s0, const U8 * const e)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ISUTF8_CHAR \
+ assert(s0); assert(e)
+
+PERL_STATIC_INLINE Size_t
+Perl_isUTF8_CHAR_flags(const U8 * const s0, const U8 * const e, const U32 flags)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ISUTF8_CHAR_FLAGS \
+ assert(s0); assert(e)
+
+PERL_STATIC_INLINE bool
+Perl_is_c9strict_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el);
+# define PERL_ARGS_ASSERT_IS_C9STRICT_UTF8_STRING_LOCLEN \
+ assert(s)
+
+PERL_STATIC_INLINE bool
+Perl_is_safe_syscall(pTHX_ const char *pv, STRLEN len, const char *what, const char *op_name)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_IS_SAFE_SYSCALL \
+ assert(pv); assert(what); assert(op_name)
+
+PERL_STATIC_INLINE bool
+Perl_is_strict_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el);
+# define PERL_ARGS_ASSERT_IS_STRICT_UTF8_STRING_LOCLEN \
+ assert(s)
+
+PERL_STATIC_INLINE bool
+Perl_is_utf8_fixed_width_buf_loclen_flags(const U8 * const s, STRLEN len, const U8 **ep, STRLEN *el, const U32 flags);
+# define PERL_ARGS_ASSERT_IS_UTF8_FIXED_WIDTH_BUF_LOCLEN_FLAGS \
+ assert(s)
+
+PERL_STATIC_INLINE bool
+Perl_is_utf8_invariant_string_loc(const U8 * const s, STRLEN len, const U8 **ep)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_IS_UTF8_INVARIANT_STRING_LOC \
+ assert(s)
+
+PERL_STATIC_INLINE bool
+Perl_is_utf8_string_flags(const U8 *s, STRLEN len, const U32 flags)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_IS_UTF8_STRING_FLAGS \
+ assert(s)
+
+PERL_STATIC_INLINE bool
+Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el);
+# define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN \
+ assert(s)
+
+PERL_STATIC_INLINE bool
+Perl_is_utf8_string_loclen_flags(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el, const U32 flags);
+# define PERL_ARGS_ASSERT_IS_UTF8_STRING_LOCLEN_FLAGS \
+ assert(s)
+
+PERL_STATIC_INLINE bool
+Perl_is_utf8_valid_partial_char_flags(const U8 * const s0, const U8 * const e, const U32 flags)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_IS_UTF8_VALID_PARTIAL_CHAR_FLAGS \
+ assert(s0); assert(e)
+
+PERL_STATIC_INLINE unsigned
+Perl_lsbit_pos32(U32 word)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_LSBIT_POS32
+
+PERL_STATIC_INLINE char *
+Perl_mortal_getenv(const char *str)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_MORTAL_GETENV \
+ assert(str)
+
+PERL_STATIC_INLINE unsigned
+Perl_msbit_pos32(U32 word)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_MSBIT_POS32
+
+PERL_STATIC_INLINE OP *
+Perl_newPADxVOP(pTHX_ I32 type, I32 flags, PADOFFSET padix)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_NEWPADXVOP
+
+PERL_STATIC_INLINE SV *
+Perl_newRV_noinc(pTHX_ SV * const tmpRef)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_NEWRV_NOINC \
+ assert(tmpRef)
+
+PERL_STATIC_INLINE SV *
+Perl_newSV_type(pTHX_ const svtype type)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_NEWSV_TYPE
+
+PERL_STATIC_FORCE_INLINE SV *
+Perl_newSV_type_mortal(pTHX_ const svtype type)
+ __attribute__warn_unused_result__
+ __attribute__always_inline__;
+# define PERL_ARGS_ASSERT_NEWSV_TYPE_MORTAL
+
+PERL_STATIC_INLINE char *
+Perl_savepv(pTHX_ const char *pv)
+ __attribute__malloc__
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SAVEPV
+
+PERL_STATIC_INLINE char *
+Perl_savepvn(pTHX_ const char *pv, Size_t len)
+ __attribute__malloc__
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SAVEPVN
+
+PERL_STATIC_INLINE char *
+Perl_savesharedsvpv(pTHX_ SV *sv)
+ __attribute__malloc__
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SAVESHAREDSVPV \
+ assert(sv)
+
+PERL_STATIC_INLINE char *
+Perl_savesvpv(pTHX_ SV *sv)
+ __attribute__malloc__
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SAVESVPV \
+ assert(sv)
+
+PERL_STATIC_INLINE unsigned
+Perl_single_1bit_pos32(U32 word)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SINGLE_1BIT_POS32
+
+PERL_STATIC_INLINE bool
+Perl_sv_only_taint_gmagic(SV *sv);
+# define PERL_ARGS_ASSERT_SV_ONLY_TAINT_GMAGIC \
+ assert(sv)
+
+PERL_STATIC_INLINE char *
+Perl_sv_pvbyten_force_wrapper(pTHX_ SV * const sv, STRLEN * const lp, const U32 dummy);
+# define PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE_WRAPPER \
+ assert(sv)
+
+PERL_STATIC_INLINE char *
+Perl_sv_pvutf8n_force_wrapper(pTHX_ SV * const sv, STRLEN * const lp, const U32 dummy);
+# define PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE_WRAPPER \
+ assert(sv)
+
+PERL_STATIC_INLINE char *
+Perl_sv_setpv_freshbuf(pTHX_ SV * const sv);
+# define PERL_ARGS_ASSERT_SV_SETPV_FRESHBUF \
+ assert(sv)
+
+PERL_STATIC_INLINE IV
+Perl_utf8_distance(pTHX_ const U8 *a, const U8 *b)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_UTF8_DISTANCE \
+ assert(a); assert(b)
+
+PERL_STATIC_INLINE U8 *
+Perl_utf8_hop(const U8 *s, SSize_t off)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_UTF8_HOP \
+ assert(s)
+
+PERL_STATIC_INLINE U8 *
+Perl_utf8_hop_back(const U8 *s, SSize_t off, const U8 *start)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_UTF8_HOP_BACK \
+ assert(s); assert(start)
+
+PERL_STATIC_INLINE U8 *
+Perl_utf8_hop_forward(const U8 *s, SSize_t off, const U8 *end)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_UTF8_HOP_FORWARD \
+ assert(s); assert(end)
+
+PERL_STATIC_INLINE U8 *
+Perl_utf8_hop_safe(const U8 *s, SSize_t off, const U8 *start, const U8 *end)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_UTF8_HOP_SAFE \
+ assert(s); assert(start); assert(end)
+
+PERL_STATIC_INLINE UV
+Perl_utf8_to_uvchr_buf_helper(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen);
+# define PERL_ARGS_ASSERT_UTF8_TO_UVCHR_BUF_HELPER \
+ assert(s); assert(send)
+
+PERL_STATIC_INLINE UV
+Perl_utf8n_to_uvchr_msgs(const U8 *s, STRLEN curlen, STRLEN *retlen, const U32 flags, U32 *errors, AV **msgs);
+# define PERL_ARGS_ASSERT_UTF8N_TO_UVCHR_MSGS \
+ assert(s)
+
+PERL_STATIC_INLINE UV
+Perl_valid_utf8_to_uvchr(const U8 *s, STRLEN *retlen)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_VALID_UTF8_TO_UVCHR \
+ assert(s)
+
+PERL_STATIC_INLINE void
+Perl_cx_popblock(pTHX_ PERL_CONTEXT *cx);
+# define PERL_ARGS_ASSERT_CX_POPBLOCK \
+ assert(cx)
+
+PERL_STATIC_INLINE void
+Perl_cx_popeval(pTHX_ PERL_CONTEXT *cx);
+# define PERL_ARGS_ASSERT_CX_POPEVAL \
+ assert(cx)
+
+PERL_STATIC_INLINE void
+Perl_cx_popformat(pTHX_ PERL_CONTEXT *cx);
+# define PERL_ARGS_ASSERT_CX_POPFORMAT \
+ assert(cx)
+
+PERL_STATIC_INLINE void
+Perl_cx_popgiven(pTHX_ PERL_CONTEXT *cx);
+# define PERL_ARGS_ASSERT_CX_POPGIVEN \
+ assert(cx)
+
+PERL_STATIC_INLINE void
+Perl_cx_poploop(pTHX_ PERL_CONTEXT *cx);
+# define PERL_ARGS_ASSERT_CX_POPLOOP \
+ assert(cx)
+
+PERL_STATIC_INLINE void
+Perl_cx_popsub(pTHX_ PERL_CONTEXT *cx);
+# define PERL_ARGS_ASSERT_CX_POPSUB \
+ assert(cx)
+
+PERL_STATIC_INLINE void
+Perl_cx_popsub_args(pTHX_ PERL_CONTEXT *cx);
+# define PERL_ARGS_ASSERT_CX_POPSUB_ARGS \
+ assert(cx)
+
+PERL_STATIC_INLINE void
+Perl_cx_popsub_common(pTHX_ PERL_CONTEXT *cx);
+# define PERL_ARGS_ASSERT_CX_POPSUB_COMMON \
+ assert(cx)
+
+PERL_STATIC_INLINE void
+Perl_cx_popwhen(pTHX_ PERL_CONTEXT *cx);
+# define PERL_ARGS_ASSERT_CX_POPWHEN \
+ assert(cx)
+
+PERL_STATIC_INLINE PERL_CONTEXT *
+Perl_cx_pushblock(pTHX_ U8 type, U8 gimme, SV **sp, I32 saveix);
+# define PERL_ARGS_ASSERT_CX_PUSHBLOCK \
+ assert(sp)
+
+PERL_STATIC_INLINE void
+Perl_cx_pusheval(pTHX_ PERL_CONTEXT *cx, OP *retop, SV *namesv);
+# define PERL_ARGS_ASSERT_CX_PUSHEVAL \
+ assert(cx)
+
+PERL_STATIC_INLINE void
+Perl_cx_pushformat(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, GV *gv);
+# define PERL_ARGS_ASSERT_CX_PUSHFORMAT \
+ assert(cx); assert(cv)
+
+PERL_STATIC_INLINE void
+Perl_cx_pushgiven(pTHX_ PERL_CONTEXT *cx, SV *orig_defsv);
+# define PERL_ARGS_ASSERT_CX_PUSHGIVEN \
+ assert(cx)
+
+PERL_STATIC_INLINE void
+Perl_cx_pushloop_for(pTHX_ PERL_CONTEXT *cx, void *itervarp, SV *itersave);
+# define PERL_ARGS_ASSERT_CX_PUSHLOOP_FOR \
+ assert(cx); assert(itervarp)
+
+PERL_STATIC_INLINE void
+Perl_cx_pushloop_plain(pTHX_ PERL_CONTEXT *cx);
+# define PERL_ARGS_ASSERT_CX_PUSHLOOP_PLAIN \
+ assert(cx)
+
+PERL_STATIC_INLINE void
+Perl_cx_pushsub(pTHX_ PERL_CONTEXT *cx, CV *cv, OP *retop, bool hasargs);
+# define PERL_ARGS_ASSERT_CX_PUSHSUB \
+ assert(cx); assert(cv)
+
+PERL_STATIC_INLINE void
+Perl_cx_pushtry(pTHX_ PERL_CONTEXT *cx, OP *retop);
+# define PERL_ARGS_ASSERT_CX_PUSHTRY \
+ assert(cx)
+
+PERL_STATIC_INLINE void
+Perl_cx_pushwhen(pTHX_ PERL_CONTEXT *cx);
+# define PERL_ARGS_ASSERT_CX_PUSHWHEN \
+ assert(cx)
+
+PERL_STATIC_INLINE void
+Perl_cx_topblock(pTHX_ PERL_CONTEXT *cx);
+# define PERL_ARGS_ASSERT_CX_TOPBLOCK \
+ assert(cx)
+
+PERL_STATIC_INLINE U8
+Perl_gimme_V(pTHX);
+# define PERL_ARGS_ASSERT_GIMME_V
+
+# if !defined(HAS_STRLCAT)
+PERL_STATIC_INLINE Size_t
+Perl_my_strlcat(char *dst, const char *src, Size_t size);
+# define PERL_ARGS_ASSERT_MY_STRLCAT
+
+# endif
+# if !defined(HAS_STRNLEN)
+PERL_STATIC_INLINE Size_t
+Perl_my_strnlen(const char *str, Size_t maxlen);
+# define PERL_ARGS_ASSERT_MY_STRNLEN \
+ assert(str)
+
+# endif
+# if defined(PERL_CORE) || defined(PERL_EXT)
+PERL_STATIC_INLINE bool
+Perl_is_utf8_non_invariant_string(const U8 * const s, STRLEN len)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_IS_UTF8_NON_INVARIANT_STRING \
+ assert(s)
+
+PERL_STATIC_INLINE STRLEN
+S_sv_or_pv_pos_u2b(pTHX_ SV *sv, const char *pv, STRLEN pos, STRLEN *lenp);
+# define PERL_ARGS_ASSERT_SV_OR_PV_POS_U2B \
+ assert(sv); assert(pv)
+
+PERL_STATIC_INLINE Size_t
+S_variant_under_utf8_count(const U8 * const s, const U8 * const e)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_VARIANT_UNDER_UTF8_COUNT \
+ assert(s); assert(e)
+
+# if !defined(HAS_MEMRCHR)
+PERL_STATIC_INLINE void *
+S_my_memrchr(const char *s, const char c, const STRLEN len);
+# define PERL_ARGS_ASSERT_MY_MEMRCHR \
+ assert(s)
+
+# endif
+# endif /* defined(PERL_CORE) || defined(PERL_EXT) */
+# if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_ANY) || \
+ defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) || \
+ defined(PERL_IN_UTF8_C)
+PERL_STATIC_INLINE bool
+S__invlist_contains_cp(SV * const invlist, const UV cp)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT__INVLIST_CONTAINS_CP \
+ assert(invlist)
+
+PERL_STATIC_INLINE UV
+S__invlist_len(SV * const invlist)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT__INVLIST_LEN \
+ assert(invlist)
+
+PERL_STATIC_INLINE bool *
+S_get_invlist_offset_addr(SV *invlist)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GET_INVLIST_OFFSET_ADDR \
+ assert(invlist)
+
+PERL_STATIC_INLINE UV *
+S_invlist_array(SV * const invlist)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_INVLIST_ARRAY \
+ assert(invlist)
+
+PERL_STATIC_INLINE bool
+S_is_invlist(const SV * const invlist)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_IS_INVLIST
+
+# endif /* defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) ||
+ defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_ANY) ||
+ defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) ||
+ defined(PERL_IN_UTF8_C) */
+# if defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) || \
+ defined(PERL_IN_REGCOMP_ANY)
+PERL_STATIC_INLINE SV *
+S_add_cp_to_invlist(pTHX_ SV *invlist, const UV cp)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ADD_CP_TO_INVLIST
+
+PERL_STATIC_INLINE void
+S_invlist_extend(pTHX_ SV * const invlist, const UV len);
+# define PERL_ARGS_ASSERT_INVLIST_EXTEND \
+ assert(invlist)
+
+PERL_STATIC_INLINE UV
+S_invlist_highest(SV * const invlist)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_INVLIST_HIGHEST \
+ assert(invlist)
+
+PERL_STATIC_INLINE void
+S_invlist_set_len(pTHX_ SV * const invlist, const UV len, const bool offset);
+# define PERL_ARGS_ASSERT_INVLIST_SET_LEN \
+ assert(invlist)
+
+# endif /* defined(PERL_IN_DOOP_C) || defined(PERL_IN_OP_C) ||
+ defined(PERL_IN_REGCOMP_ANY) */
+# if defined(PERL_IN_OP_C) || defined(PERL_IN_PAD_C)
+PERL_STATIC_INLINE bool
+S_PadnameIN_SCOPE(const PADNAME * const pn, const U32 seq);
+# define PERL_ARGS_ASSERT_PADNAMEIN_SCOPE \
+ assert(pn)
+
+# endif
+# if defined(PERL_IN_OP_C) || defined(PERL_IN_REGCOMP_ANY)
+PERL_STATIC_INLINE STRLEN *
+S_get_invlist_iter_addr(SV *invlist)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GET_INVLIST_ITER_ADDR \
+ assert(invlist)
+
+PERL_STATIC_INLINE void
+S_invlist_iterfinish(SV *invlist);
+# define PERL_ARGS_ASSERT_INVLIST_ITERFINISH \
+ assert(invlist)
+
+PERL_STATIC_INLINE void
+S_invlist_iterinit(SV *invlist);
+# define PERL_ARGS_ASSERT_INVLIST_ITERINIT \
+ assert(invlist)
+
+PERL_STATIC_INLINE bool
+S_invlist_iternext(SV *invlist, UV *start, UV *end)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_INVLIST_ITERNEXT \
+ assert(invlist); assert(start); assert(end)
+
+# endif /* defined(PERL_IN_OP_C) || defined(PERL_IN_REGCOMP_ANY) */
+# if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C)
+PERL_STATIC_INLINE bool
+S_lossless_NV_to_IV(const NV nv, IV *ivp)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_LOSSLESS_NV_TO_IV \
+ assert(ivp)
+
+# endif
+# if defined(PERL_IN_PP_C) || defined(PERL_IN_REGCOMP_ANY) || \
+ defined(PERL_IN_TOKE_C) || defined(PERL_IN_UNIVERSAL_C)
+PERL_STATIC_INLINE const char *
+S_get_regex_charset_name(const U32 flags, STRLEN * const lenp);
+# define PERL_ARGS_ASSERT_GET_REGEX_CHARSET_NAME \
+ assert(lenp)
+
+# endif
+# if defined(U64TYPE)
+PERL_STATIC_INLINE unsigned
+Perl_lsbit_pos64(U64 word)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_LSBIT_POS64
+
+PERL_STATIC_INLINE unsigned
+Perl_msbit_pos64(U64 word)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_MSBIT_POS64
+
+PERL_STATIC_INLINE unsigned
+Perl_single_1bit_pos64(U64 word)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SINGLE_1BIT_POS64
+
+# endif /* defined(U64TYPE) */
+# if defined(USE_ITHREADS)
+PERL_STATIC_INLINE AV *
+Perl_cop_file_avn(pTHX_ const COP *cop);
+# define PERL_ARGS_ASSERT_COP_FILE_AVN \
+ assert(cop)
+
+# if !defined(PERL_IMPLICIT_SYS)
+PERL_STATIC_INLINE bool
+S_PerlEnv_putenv(pTHX_ char *str);
+# define PERL_ARGS_ASSERT_PERLENV_PUTENV \
+ assert(str)
+
+# endif
+# endif /* defined(USE_ITHREADS) */
+# if !defined(WIN32)
+PERL_STATIC_INLINE void *
+Perl_get_context(void)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GET_CONTEXT
+
+# endif
+#endif /* !defined(PERL_NO_INLINE_FUNCTIONS) */
+#if defined(PERL_USE_3ARG_SIGHANDLER)
+PERL_CALLCONV Signal_t
+Perl_csighandler(int sig, Siginfo_t *info, void *uap);
+# define PERL_ARGS_ASSERT_CSIGHANDLER
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE int S_isFF_OVERLONG(const U8 * const s, const STRLEN len)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ISFF_OVERLONG \
- assert(s)
-#endif
+PERL_CALLCONV Signal_t
+Perl_sighandler(int sig, Siginfo_t *info, void *uap)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_SIGHANDLER
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE bool S_is_utf8_common(pTHX_ const U8 *const p, const U8 *const e, SV* const invlist)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_IS_UTF8_COMMON \
- assert(p); assert(e)
-#endif
+#else /* if !defined(PERL_USE_3ARG_SIGHANDLER) */
+PERL_CALLCONV Signal_t
+Perl_csighandler(int sig);
+# define PERL_ARGS_ASSERT_CSIGHANDLER
-#ifndef PERL_NO_INLINE_FUNCTIONS
-PERL_STATIC_INLINE int S_is_utf8_overlong_given_start_byte_ok(const U8 * const s, const STRLEN len)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_IS_UTF8_OVERLONG_GIVEN_START_BYTE_OK \
- assert(s)
-#endif
+PERL_CALLCONV Signal_t
+Perl_sighandler(int sig)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_SIGHANDLER
-STATIC HV * S_new_msg_hv(pTHX_ const char * const message, U32 categories, U32 flag)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEW_MSG_HV \
- assert(message)
-
-STATIC U8 S_to_lower_latin1(const U8 c, U8 *p, STRLEN *lenp, const char dummy)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_TO_LOWER_LATIN1
-
-STATIC UV S_turkic_fc(pTHX_ const U8 * const p, const U8 * const e, U8* ustrp, STRLEN *lenp);
-#define PERL_ARGS_ASSERT_TURKIC_FC \
- assert(p); assert(e); assert(ustrp); assert(lenp)
-STATIC UV S_turkic_lc(pTHX_ const U8 * const p0, const U8 * const e, U8* ustrp, STRLEN *lenp);
-#define PERL_ARGS_ASSERT_TURKIC_LC \
- assert(p0); assert(e); assert(ustrp); assert(lenp)
-STATIC UV S_turkic_uc(pTHX_ const U8 * const p, const U8 * const e, U8* ustrp, STRLEN *lenp);
-#define PERL_ARGS_ASSERT_TURKIC_UC \
- assert(p); assert(e); assert(ustrp); assert(lenp)
-STATIC char * S_unexpected_non_continuation_text(pTHX_ const U8 * const s, STRLEN print_len, const STRLEN non_cont_byte_pos, const STRLEN expect_len)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_UNEXPECTED_NON_CONTINUATION_TEXT \
- assert(s)
+#endif /* !defined(PERL_USE_3ARG_SIGHANDLER) */
+#if defined(U64TYPE)
#endif
-#if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
-PERL_CALLCONV UV Perl__to_upper_title_latin1(pTHX_ const U8 c, U8 *p, STRLEN *lenp, const char S_or_s);
-#define PERL_ARGS_ASSERT__TO_UPPER_TITLE_LATIN1 \
- assert(p); assert(lenp)
-#endif
-#if defined(PERL_IN_UTIL_C)
-STATIC bool S_ckwarn_common(pTHX_ U32 w);
-#define PERL_ARGS_ASSERT_CKWARN_COMMON
-STATIC bool S_invoke_exception_hook(pTHX_ SV *ex, bool warn);
-#define PERL_ARGS_ASSERT_INVOKE_EXCEPTION_HOOK
-STATIC SV* S_mess_alloc(pTHX);
-#define PERL_ARGS_ASSERT_MESS_ALLOC
-STATIC SV * S_with_queued_errors(pTHX_ SV *ex);
-#define PERL_ARGS_ASSERT_WITH_QUEUED_ERRORS \
- assert(ex)
-STATIC void S_xs_version_bootcheck(pTHX_ U32 items, U32 ax, const char *xs_p, STRLEN xs_len);
-#define PERL_ARGS_ASSERT_XS_VERSION_BOOTCHECK \
- assert(xs_p)
-# if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL)
-STATIC void S_mem_log_common(enum mem_log_type mlt, const UV n, const UV typesize, const char *type_name, const SV *sv, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
-#define PERL_ARGS_ASSERT_MEM_LOG_COMMON \
- assert(type_name); assert(filename); assert(funcname)
-# endif
-#endif
-#if defined(PERL_MEM_LOG)
-PERL_CALLCONV Malloc_t Perl_mem_log_alloc(const UV nconst, UV typesize, const char *type_name, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
-#define PERL_ARGS_ASSERT_MEM_LOG_ALLOC \
- assert(type_name); assert(filename); assert(funcname)
-PERL_CALLCONV Malloc_t Perl_mem_log_free(Malloc_t oldalloc, const char *filename, const int linenumber, const char *funcname);
-#define PERL_ARGS_ASSERT_MEM_LOG_FREE \
- assert(filename); assert(funcname)
-PERL_CALLCONV Malloc_t Perl_mem_log_realloc(const UV n, const UV typesize, const char *type_name, Malloc_t oldalloc, Malloc_t newalloc, const char *filename, const int linenumber, const char *funcname);
-#define PERL_ARGS_ASSERT_MEM_LOG_REALLOC \
- assert(type_name); assert(filename); assert(funcname)
-#endif
-#if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C)
-STATIC void S_pidgone(pTHX_ Pid_t pid, int status);
-#define PERL_ARGS_ASSERT_PIDGONE
-#endif
-#if defined(PERL_USE_3ARG_SIGHANDLER)
-PERL_CALLCONV Signal_t Perl_csighandler(int sig, Siginfo_t *info, void *uap);
-#define PERL_ARGS_ASSERT_CSIGHANDLER
-PERL_CALLCONV Signal_t Perl_sighandler(int sig, Siginfo_t *info, void *uap);
-#define PERL_ARGS_ASSERT_SIGHANDLER
-#endif
#if defined(UNLINK_ALL_VERSIONS)
-PERL_CALLCONV I32 Perl_unlnk(pTHX_ const char* f);
-#define PERL_ARGS_ASSERT_UNLNK \
- assert(f)
+PERL_CALLCONV I32
+Perl_unlnk(pTHX_ const char *f);
+# define PERL_ARGS_ASSERT_UNLNK \
+ assert(f)
+
#endif
#if defined(USE_C_BACKTRACE)
-PERL_CALLCONV bool Perl_dump_c_backtrace(pTHX_ PerlIO* fp, int max_depth, int skip);
-#define PERL_ARGS_ASSERT_DUMP_C_BACKTRACE \
- assert(fp)
-/* PERL_CALLCONV void free_c_backtrace(pTHX_ Perl_c_backtrace* bt); */
-#define PERL_ARGS_ASSERT_FREE_C_BACKTRACE
-PERL_CALLCONV Perl_c_backtrace* Perl_get_c_backtrace(pTHX_ int max_depth, int skip);
-#define PERL_ARGS_ASSERT_GET_C_BACKTRACE
-PERL_CALLCONV SV* Perl_get_c_backtrace_dump(pTHX_ int max_depth, int skip);
-#define PERL_ARGS_ASSERT_GET_C_BACKTRACE_DUMP
-#endif
+PERL_CALLCONV bool
+Perl_dump_c_backtrace(pTHX_ PerlIO *fp, int max_depth, int skip);
+# define PERL_ARGS_ASSERT_DUMP_C_BACKTRACE \
+ assert(fp)
+
+/* PERL_CALLCONV void
+free_c_backtrace(pTHX_ Perl_c_backtrace *bt); */
+
+PERL_CALLCONV Perl_c_backtrace *
+Perl_get_c_backtrace(pTHX_ int max_depth, int skip)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_GET_C_BACKTRACE
+
+PERL_CALLCONV SV *
+Perl_get_c_backtrace_dump(pTHX_ int max_depth, int skip);
+# define PERL_ARGS_ASSERT_GET_C_BACKTRACE_DUMP
+
+#endif /* defined(USE_C_BACKTRACE) */
#if defined(USE_DTRACE)
-PERL_CALLCONV void Perl_dtrace_probe_call(pTHX_ CV *cv, bool is_call);
-#define PERL_ARGS_ASSERT_DTRACE_PROBE_CALL \
- assert(cv)
-PERL_CALLCONV void Perl_dtrace_probe_load(pTHX_ const char *name, bool is_loading);
-#define PERL_ARGS_ASSERT_DTRACE_PROBE_LOAD \
- assert(name)
-PERL_CALLCONV void Perl_dtrace_probe_op(pTHX_ const OP *op);
-#define PERL_ARGS_ASSERT_DTRACE_PROBE_OP \
- assert(op)
-PERL_CALLCONV void Perl_dtrace_probe_phase(pTHX_ enum perl_phase phase);
-#define PERL_ARGS_ASSERT_DTRACE_PROBE_PHASE
-#endif
+PERL_CALLCONV void
+Perl_dtrace_probe_call(pTHX_ CV *cv, bool is_call);
+# define PERL_ARGS_ASSERT_DTRACE_PROBE_CALL \
+ assert(cv)
+
+PERL_CALLCONV void
+Perl_dtrace_probe_load(pTHX_ const char *name, bool is_loading);
+# define PERL_ARGS_ASSERT_DTRACE_PROBE_LOAD \
+ assert(name)
+
+PERL_CALLCONV void
+Perl_dtrace_probe_op(pTHX_ const OP *op);
+# define PERL_ARGS_ASSERT_DTRACE_PROBE_OP \
+ assert(op)
+
+PERL_CALLCONV void
+Perl_dtrace_probe_phase(pTHX_ enum perl_phase phase);
+# define PERL_ARGS_ASSERT_DTRACE_PROBE_PHASE
+
+#endif /* defined(USE_DTRACE) */
#if defined(USE_ITHREADS)
-PERL_CALLCONV PADOFFSET Perl_alloccopstash(pTHX_ HV *hv);
-#define PERL_ARGS_ASSERT_ALLOCCOPSTASH \
- assert(hv)
-PERL_CALLCONV void* Perl_any_dup(pTHX_ void* v, const PerlInterpreter* proto_perl)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_ANY_DUP \
- assert(proto_perl)
-
-PERL_CALLCONV void Perl_clone_params_del(CLONE_PARAMS *param);
-#define PERL_ARGS_ASSERT_CLONE_PARAMS_DEL \
- assert(param)
-PERL_CALLCONV CLONE_PARAMS * Perl_clone_params_new(PerlInterpreter *const from, PerlInterpreter *const to)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CLONE_PARAMS_NEW \
- assert(from); assert(to)
-
-PERL_CALLCONV PERL_CONTEXT* Perl_cx_dup(pTHX_ PERL_CONTEXT* cx, I32 ix, I32 max, CLONE_PARAMS* param)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_CX_DUP \
- assert(param)
-
-PERL_CALLCONV DIR* Perl_dirp_dup(pTHX_ DIR *const dp, CLONE_PARAMS *const param)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_DIRP_DUP \
- assert(param)
-
-PERL_CALLCONV PerlIO* Perl_fp_dup(pTHX_ PerlIO *const fp, const char type, CLONE_PARAMS *const param);
-#define PERL_ARGS_ASSERT_FP_DUP \
- assert(param)
-PERL_CALLCONV GP* Perl_gp_dup(pTHX_ GP *const gp, CLONE_PARAMS *const param)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_GP_DUP \
- assert(param)
-
-PERL_CALLCONV HE* Perl_he_dup(pTHX_ const HE* e, bool shared, CLONE_PARAMS* param)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HE_DUP \
- assert(param)
-
-PERL_CALLCONV HEK* Perl_hek_dup(pTHX_ HEK* e, CLONE_PARAMS* param)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_HEK_DUP \
- assert(param)
-
-PERL_CALLCONV MAGIC* Perl_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS *const param)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_MG_DUP \
- assert(param)
-
-PERL_CALLCONV struct mro_meta* Perl_mro_meta_dup(pTHX_ struct mro_meta* smeta, CLONE_PARAMS* param);
-#define PERL_ARGS_ASSERT_MRO_META_DUP \
- assert(smeta); assert(param)
-PERL_CALLCONV OP* Perl_newPADOP(pTHX_ I32 type, I32 flags, SV* sv)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_NEWPADOP \
- assert(sv)
-
-PERL_CALLCONV PADLIST * Perl_padlist_dup(pTHX_ PADLIST *srcpad, CLONE_PARAMS *param)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PADLIST_DUP \
- assert(srcpad); assert(param)
-
-PERL_CALLCONV PADNAME * Perl_padname_dup(pTHX_ PADNAME *src, CLONE_PARAMS *param)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PADNAME_DUP \
- assert(src); assert(param)
-
-PERL_CALLCONV PADNAMELIST * Perl_padnamelist_dup(pTHX_ PADNAMELIST *srcpad, CLONE_PARAMS *param)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PADNAMELIST_DUP \
- assert(srcpad); assert(param)
-
-PERL_CALLCONV yy_parser* Perl_parser_dup(pTHX_ const yy_parser *const proto, CLONE_PARAMS *const param);
-#define PERL_ARGS_ASSERT_PARSER_DUP \
- assert(param)
-PERL_CALLCONV PerlInterpreter* perl_clone(PerlInterpreter *proto_perl, UV flags);
-#define PERL_ARGS_ASSERT_PERL_CLONE \
- assert(proto_perl)
-PERL_CALLCONV void Perl_re_dup_guts(pTHX_ const REGEXP *sstr, REGEXP *dstr, CLONE_PARAMS* param);
-#define PERL_ARGS_ASSERT_RE_DUP_GUTS \
- assert(sstr); assert(dstr); assert(param)
-PERL_CALLCONV void* Perl_regdupe_internal(pTHX_ REGEXP * const r, CLONE_PARAMS* param);
-#define PERL_ARGS_ASSERT_REGDUPE_INTERNAL \
- assert(r); assert(param)
-PERL_CALLCONV void Perl_rvpv_dup(pTHX_ SV *const dsv, const SV *const ssv, CLONE_PARAMS *const param);
-#define PERL_ARGS_ASSERT_RVPV_DUP \
- assert(dsv); assert(ssv); assert(param)
-PERL_CALLCONV PERL_SI* Perl_si_dup(pTHX_ PERL_SI* si, CLONE_PARAMS* param)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SI_DUP \
- assert(param)
-
-PERL_CALLCONV ANY* Perl_ss_dup(pTHX_ PerlInterpreter* proto_perl, CLONE_PARAMS* param)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SS_DUP \
- assert(proto_perl); assert(param)
-
-PERL_CALLCONV SV* Perl_sv_dup(pTHX_ const SV *const ssv, CLONE_PARAMS *const param)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_DUP \
- assert(param)
-
-PERL_CALLCONV SV* Perl_sv_dup_inc(pTHX_ const SV *const ssv, CLONE_PARAMS *const param)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_SV_DUP_INC \
- assert(param)
+PERL_CALLCONV PADOFFSET
+Perl_alloccopstash(pTHX_ HV *hv);
+# define PERL_ARGS_ASSERT_ALLOCCOPSTASH \
+ assert(hv)
+
+PERL_CALLCONV void *
+Perl_any_dup(pTHX_ void *v, const PerlInterpreter *proto_perl)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_ANY_DUP \
+ assert(proto_perl)
+
+PERL_CALLCONV void
+Perl_clone_params_del(CLONE_PARAMS *param);
+# define PERL_ARGS_ASSERT_CLONE_PARAMS_DEL \
+ assert(param)
+
+PERL_CALLCONV CLONE_PARAMS *
+Perl_clone_params_new(PerlInterpreter * const from, PerlInterpreter * const to)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_CLONE_PARAMS_NEW \
+ assert(from); assert(to)
+
+PERL_CALLCONV PERL_CONTEXT *
+Perl_cx_dup(pTHX_ PERL_CONTEXT *cx, I32 ix, I32 max, CLONE_PARAMS *param)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_CX_DUP \
+ assert(param)
+
+PERL_CALLCONV DIR *
+Perl_dirp_dup(pTHX_ DIR * const dp, CLONE_PARAMS * const param)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_DIRP_DUP \
+ assert(param)
+
+PERL_CALLCONV PerlIO *
+Perl_fp_dup(pTHX_ PerlIO * const fp, const char type, CLONE_PARAMS * const param);
+# define PERL_ARGS_ASSERT_FP_DUP \
+ assert(param)
+
+PERL_CALLCONV GP *
+Perl_gp_dup(pTHX_ GP * const gp, CLONE_PARAMS * const param)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GP_DUP \
+ assert(param)
+
+PERL_CALLCONV HE *
+Perl_he_dup(pTHX_ const HE *e, bool shared, CLONE_PARAMS *param)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_HE_DUP \
+ assert(param)
+
+PERL_CALLCONV HEK *
+Perl_hek_dup(pTHX_ HEK *e, CLONE_PARAMS *param)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_HEK_DUP \
+ assert(param)
+
+PERL_CALLCONV MAGIC *
+Perl_mg_dup(pTHX_ MAGIC *mg, CLONE_PARAMS * const param)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_MG_DUP \
+ assert(param)
+
+PERL_CALLCONV struct mro_meta *
+Perl_mro_meta_dup(pTHX_ struct mro_meta *smeta, CLONE_PARAMS *param)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_MRO_META_DUP \
+ assert(smeta); assert(param)
+
+PERL_CALLCONV OP *
+Perl_newPADOP(pTHX_ I32 type, I32 flags, SV *sv)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_NEWPADOP \
+ assert(sv)
+
+PERL_CALLCONV PADLIST *
+Perl_padlist_dup(pTHX_ PADLIST *srcpad, CLONE_PARAMS *param)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_PADLIST_DUP \
+ assert(srcpad); assert(param)
+
+PERL_CALLCONV PADNAME *
+Perl_padname_dup(pTHX_ PADNAME *src, CLONE_PARAMS *param)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_PADNAME_DUP \
+ assert(src); assert(param)
+
+PERL_CALLCONV PADNAMELIST *
+Perl_padnamelist_dup(pTHX_ PADNAMELIST *srcpad, CLONE_PARAMS *param)
+ __attribute__warn_unused_result__
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_PADNAMELIST_DUP \
+ assert(srcpad); assert(param)
+
+PERL_CALLCONV yy_parser *
+Perl_parser_dup(pTHX_ const yy_parser * const proto, CLONE_PARAMS * const param);
+# define PERL_ARGS_ASSERT_PARSER_DUP \
+ assert(param)
+
+PERL_CALLCONV PerlInterpreter *
+perl_clone(PerlInterpreter *proto_perl, UV flags);
+# define PERL_ARGS_ASSERT_PERL_CLONE \
+ assert(proto_perl)
+
+PERL_CALLCONV void
+Perl_re_dup_guts(pTHX_ const REGEXP *sstr, REGEXP *dstr, CLONE_PARAMS *param);
+# define PERL_ARGS_ASSERT_RE_DUP_GUTS \
+ assert(sstr); assert(dstr); assert(param)
+
+PERL_CALLCONV void *
+Perl_regdupe_internal(pTHX_ REGEXP * const r, CLONE_PARAMS *param);
+# define PERL_ARGS_ASSERT_REGDUPE_INTERNAL \
+ assert(r); assert(param)
+
+PERL_CALLCONV void
+Perl_rvpv_dup(pTHX_ SV * const dsv, const SV * const ssv, CLONE_PARAMS * const param);
+# define PERL_ARGS_ASSERT_RVPV_DUP \
+ assert(dsv); assert(ssv); assert(param)
+
+PERL_CALLCONV PERL_SI *
+Perl_si_dup(pTHX_ PERL_SI *si, CLONE_PARAMS *param)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SI_DUP \
+ assert(param)
+
+PERL_CALLCONV ANY *
+Perl_ss_dup(pTHX_ PerlInterpreter *proto_perl, CLONE_PARAMS *param)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SS_DUP \
+ assert(proto_perl); assert(param)
+
+PERL_CALLCONV SV *
+Perl_sv_dup(pTHX_ const SV * const ssv, CLONE_PARAMS * const param)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SV_DUP \
+ assert(param)
+
+PERL_CALLCONV SV *
+Perl_sv_dup_inc(pTHX_ const SV * const ssv, CLONE_PARAMS * const param)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_SV_DUP_INC \
+ assert(param)
+
+# if defined(PERL_IN_OP_C) || defined(PERL_IN_PEEP_C)
+PERL_CALLCONV void
+Perl_op_relocate_sv(pTHX_ SV **svp, PADOFFSET *targp)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_OP_RELOCATE_SV \
+ assert(svp); assert(targp)
+
+# endif
+#else /* if !defined(USE_ITHREADS) */
+/* PERL_CALLCONV void
+CopFILEGV_set(pTHX_ COP *c, GV *gv); */
#endif
-#if defined(USE_LOCALE) && ( defined(PERL_IN_LOCALE_C) || defined(PERL_IN_MG_C) || defined (PERL_EXT_POSIX) || defined (PERL_EXT_LANGINFO))
-PERL_CALLCONV bool Perl__is_cur_LC_category_utf8(pTHX_ int category);
-#define PERL_ARGS_ASSERT__IS_CUR_LC_CATEGORY_UTF8
-#endif
#if defined(USE_LOCALE_COLLATE)
-PERL_CALLCONV int Perl_magic_freecollxfrm(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_FREECOLLXFRM \
- assert(sv); assert(mg)
-PERL_CALLCONV int Perl_magic_setcollxfrm(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_SETCOLLXFRM \
- assert(sv); assert(mg)
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_mem_collxfrm(pTHX_ const char* input_string, STRLEN len, STRLEN* xlen)
- __attribute__deprecated__;
-#define PERL_ARGS_ASSERT_MEM_COLLXFRM \
- assert(input_string); assert(xlen)
-#endif
-
-#ifndef NO_MATHOMS
-PERL_CALLCONV char* Perl_sv_collxfrm(pTHX_ SV *const sv, STRLEN *const nxp);
-#define PERL_ARGS_ASSERT_SV_COLLXFRM \
- assert(sv); assert(nxp)
-#endif
-PERL_CALLCONV char* Perl_sv_collxfrm_flags(pTHX_ SV *const sv, STRLEN *const nxp, I32 const flags);
-#define PERL_ARGS_ASSERT_SV_COLLXFRM_FLAGS \
- assert(sv); assert(nxp)
-#endif
+PERL_CALLCONV int
+Perl_magic_freecollxfrm(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_MAGIC_FREECOLLXFRM \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV int
+Perl_magic_setcollxfrm(pTHX_ SV *sv, MAGIC *mg)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_MAGIC_SETCOLLXFRM \
+ assert(sv); assert(mg)
+
+PERL_CALLCONV SV *
+Perl_strxfrm(pTHX_ SV *src);
+# define PERL_ARGS_ASSERT_STRXFRM \
+ assert(src)
+
+PERL_CALLCONV char *
+Perl_sv_collxfrm_flags(pTHX_ SV * const sv, STRLEN * const nxp, I32 const flags);
+# define PERL_ARGS_ASSERT_SV_COLLXFRM_FLAGS \
+ assert(sv); assert(nxp)
+
+# if defined(PERL_IN_LOCALE_C) || defined(PERL_IN_MATHOMS_C) || \
+ defined(PERL_IN_SV_C)
+PERL_CALLCONV char *
+Perl_mem_collxfrm_(pTHX_ const char *input_string, STRLEN len, STRLEN *xlen, bool utf8)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_MEM_COLLXFRM_ \
+ assert(input_string); assert(xlen)
+
+# endif
+#endif /* defined(USE_LOCALE_COLLATE) */
#if defined(USE_PERLIO)
-PERL_CALLCONV void Perl_PerlIO_clearerr(pTHX_ PerlIO *f);
-#define PERL_ARGS_ASSERT_PERLIO_CLEARERR
-PERL_CALLCONV int Perl_PerlIO_close(pTHX_ PerlIO *f);
-#define PERL_ARGS_ASSERT_PERLIO_CLOSE
-PERL_CALLCONV int Perl_PerlIO_eof(pTHX_ PerlIO *f);
-#define PERL_ARGS_ASSERT_PERLIO_EOF
-PERL_CALLCONV int Perl_PerlIO_error(pTHX_ PerlIO *f);
-#define PERL_ARGS_ASSERT_PERLIO_ERROR
-PERL_CALLCONV int Perl_PerlIO_fileno(pTHX_ PerlIO *f);
-#define PERL_ARGS_ASSERT_PERLIO_FILENO
-PERL_CALLCONV int Perl_PerlIO_fill(pTHX_ PerlIO *f);
-#define PERL_ARGS_ASSERT_PERLIO_FILL
-PERL_CALLCONV int Perl_PerlIO_flush(pTHX_ PerlIO *f);
-#define PERL_ARGS_ASSERT_PERLIO_FLUSH
-PERL_CALLCONV STDCHAR * Perl_PerlIO_get_base(pTHX_ PerlIO *f);
-#define PERL_ARGS_ASSERT_PERLIO_GET_BASE
-PERL_CALLCONV SSize_t Perl_PerlIO_get_bufsiz(pTHX_ PerlIO *f)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PERLIO_GET_BUFSIZ
-
-PERL_CALLCONV SSize_t Perl_PerlIO_get_cnt(pTHX_ PerlIO *f)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PERLIO_GET_CNT
-
-PERL_CALLCONV STDCHAR * Perl_PerlIO_get_ptr(pTHX_ PerlIO *f);
-#define PERL_ARGS_ASSERT_PERLIO_GET_PTR
-PERL_CALLCONV SSize_t Perl_PerlIO_read(pTHX_ PerlIO *f, void *vbuf, Size_t count);
-#define PERL_ARGS_ASSERT_PERLIO_READ \
- assert(vbuf)
-PERL_CALLCONV void Perl_PerlIO_restore_errno(pTHX_ PerlIO *f);
-#define PERL_ARGS_ASSERT_PERLIO_RESTORE_ERRNO
-PERL_CALLCONV void Perl_PerlIO_save_errno(pTHX_ PerlIO *f);
-#define PERL_ARGS_ASSERT_PERLIO_SAVE_ERRNO
-PERL_CALLCONV int Perl_PerlIO_seek(pTHX_ PerlIO *f, Off_t offset, int whence);
-#define PERL_ARGS_ASSERT_PERLIO_SEEK
-PERL_CALLCONV void Perl_PerlIO_set_cnt(pTHX_ PerlIO *f, SSize_t cnt);
-#define PERL_ARGS_ASSERT_PERLIO_SET_CNT
-PERL_CALLCONV void Perl_PerlIO_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR *ptr, SSize_t cnt);
-#define PERL_ARGS_ASSERT_PERLIO_SET_PTRCNT
-PERL_CALLCONV void Perl_PerlIO_setlinebuf(pTHX_ PerlIO *f);
-#define PERL_ARGS_ASSERT_PERLIO_SETLINEBUF
-PERL_CALLCONV PerlIO * Perl_PerlIO_stderr(pTHX)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PERLIO_STDERR
-
-PERL_CALLCONV PerlIO * Perl_PerlIO_stdin(pTHX)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PERLIO_STDIN
-
-PERL_CALLCONV PerlIO * Perl_PerlIO_stdout(pTHX)
- __attribute__warn_unused_result__;
-#define PERL_ARGS_ASSERT_PERLIO_STDOUT
-
-PERL_CALLCONV Off_t Perl_PerlIO_tell(pTHX_ PerlIO *f);
-#define PERL_ARGS_ASSERT_PERLIO_TELL
-PERL_CALLCONV SSize_t Perl_PerlIO_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count);
-#define PERL_ARGS_ASSERT_PERLIO_UNREAD \
- assert(vbuf)
-PERL_CALLCONV SSize_t Perl_PerlIO_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count);
-#define PERL_ARGS_ASSERT_PERLIO_WRITE \
- assert(vbuf)
+PERL_CALLCONV void
+Perl_PerlIO_clearerr(pTHX_ PerlIO *f);
+# define PERL_ARGS_ASSERT_PERLIO_CLEARERR
+
+PERL_CALLCONV int
+Perl_PerlIO_close(pTHX_ PerlIO *f);
+# define PERL_ARGS_ASSERT_PERLIO_CLOSE
+
+PERL_CALLCONV int
+Perl_PerlIO_eof(pTHX_ PerlIO *f);
+# define PERL_ARGS_ASSERT_PERLIO_EOF
+
+PERL_CALLCONV int
+Perl_PerlIO_error(pTHX_ PerlIO *f);
+# define PERL_ARGS_ASSERT_PERLIO_ERROR
+
+PERL_CALLCONV int
+Perl_PerlIO_fileno(pTHX_ PerlIO *f);
+# define PERL_ARGS_ASSERT_PERLIO_FILENO
+
+PERL_CALLCONV int
+Perl_PerlIO_fill(pTHX_ PerlIO *f);
+# define PERL_ARGS_ASSERT_PERLIO_FILL
+
+PERL_CALLCONV int
+Perl_PerlIO_flush(pTHX_ PerlIO *f);
+# define PERL_ARGS_ASSERT_PERLIO_FLUSH
+
+PERL_CALLCONV STDCHAR *
+Perl_PerlIO_get_base(pTHX_ PerlIO *f);
+# define PERL_ARGS_ASSERT_PERLIO_GET_BASE
+
+PERL_CALLCONV SSize_t
+Perl_PerlIO_get_bufsiz(pTHX_ PerlIO *f)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_PERLIO_GET_BUFSIZ
+
+PERL_CALLCONV SSize_t
+Perl_PerlIO_get_cnt(pTHX_ PerlIO *f)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_PERLIO_GET_CNT
+
+PERL_CALLCONV STDCHAR *
+Perl_PerlIO_get_ptr(pTHX_ PerlIO *f);
+# define PERL_ARGS_ASSERT_PERLIO_GET_PTR
+
+PERL_CALLCONV SSize_t
+Perl_PerlIO_read(pTHX_ PerlIO *f, void *vbuf, Size_t count);
+# define PERL_ARGS_ASSERT_PERLIO_READ \
+ assert(vbuf)
+
+PERL_CALLCONV void
+Perl_PerlIO_restore_errno(pTHX_ PerlIO *f);
+# define PERL_ARGS_ASSERT_PERLIO_RESTORE_ERRNO
+
+PERL_CALLCONV void
+Perl_PerlIO_save_errno(pTHX_ PerlIO *f);
+# define PERL_ARGS_ASSERT_PERLIO_SAVE_ERRNO
+
+PERL_CALLCONV int
+Perl_PerlIO_seek(pTHX_ PerlIO *f, Off_t offset, int whence);
+# define PERL_ARGS_ASSERT_PERLIO_SEEK
+
+PERL_CALLCONV void
+Perl_PerlIO_set_cnt(pTHX_ PerlIO *f, SSize_t cnt);
+# define PERL_ARGS_ASSERT_PERLIO_SET_CNT
+
+PERL_CALLCONV void
+Perl_PerlIO_set_ptrcnt(pTHX_ PerlIO *f, STDCHAR *ptr, SSize_t cnt);
+# define PERL_ARGS_ASSERT_PERLIO_SET_PTRCNT
+
+PERL_CALLCONV void
+Perl_PerlIO_setlinebuf(pTHX_ PerlIO *f);
+# define PERL_ARGS_ASSERT_PERLIO_SETLINEBUF
+
+PERL_CALLCONV PerlIO *
+Perl_PerlIO_stderr(pTHX)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_PERLIO_STDERR
+
+PERL_CALLCONV PerlIO *
+Perl_PerlIO_stdin(pTHX)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_PERLIO_STDIN
+
+PERL_CALLCONV PerlIO *
+Perl_PerlIO_stdout(pTHX)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_PERLIO_STDOUT
+
+PERL_CALLCONV Off_t
+Perl_PerlIO_tell(pTHX_ PerlIO *f);
+# define PERL_ARGS_ASSERT_PERLIO_TELL
+
+PERL_CALLCONV SSize_t
+Perl_PerlIO_unread(pTHX_ PerlIO *f, const void *vbuf, Size_t count);
+# define PERL_ARGS_ASSERT_PERLIO_UNREAD \
+ assert(vbuf)
+
+PERL_CALLCONV SSize_t
+Perl_PerlIO_write(pTHX_ PerlIO *f, const void *vbuf, Size_t count);
+# define PERL_ARGS_ASSERT_PERLIO_WRITE \
+ assert(vbuf)
+
+#endif /* defined(USE_PERLIO) */
+#if defined(USE_PERL_SWITCH_LOCALE_CONTEXT)
+PERL_CALLCONV void
+Perl_switch_locale_context(void);
+# define PERL_ARGS_ASSERT_SWITCH_LOCALE_CONTEXT
+
#endif
#if defined(USE_QUADMATH)
-PERL_CALLCONV bool Perl_quadmath_format_needed(const char* format);
-#define PERL_ARGS_ASSERT_QUADMATH_FORMAT_NEEDED \
- assert(format)
-PERL_CALLCONV bool Perl_quadmath_format_valid(const char* format);
-#define PERL_ARGS_ASSERT_QUADMATH_FORMAT_VALID \
- assert(format)
-#endif
+PERL_CALLCONV bool
+Perl_quadmath_format_needed(const char *format)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_QUADMATH_FORMAT_NEEDED \
+ assert(format)
+
+PERL_CALLCONV bool
+Perl_quadmath_format_valid(const char *format)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_QUADMATH_FORMAT_VALID \
+ assert(format)
+
+#endif /* defined(USE_QUADMATH) */
+#if defined(VMS) || defined(WIN32)
+PERL_CALLCONV int
+Perl_do_aspawn(pTHX_ SV *really, SV **mark, SV **sp);
+# define PERL_ARGS_ASSERT_DO_ASPAWN \
+ assert(mark); assert(sp)
+
+PERL_CALLCONV int
+Perl_do_spawn(pTHX_ char *cmd);
+# define PERL_ARGS_ASSERT_DO_SPAWN \
+ assert(cmd)
+
+PERL_CALLCONV int
+Perl_do_spawn_nowait(pTHX_ char *cmd);
+# define PERL_ARGS_ASSERT_DO_SPAWN_NOWAIT \
+ assert(cmd)
+
+#endif /* defined(VMS) || defined(WIN32) */
#if defined(WIN32)
-PERL_CALLCONV_NO_RET void win32_croak_not_implemented(const char * fname)
- __attribute__noreturn__;
-#define PERL_ARGS_ASSERT_WIN32_CROAK_NOT_IMPLEMENTED \
- assert(fname)
+PERL_CALLCONV void *
+Perl_get_context(void)
+ __attribute__warn_unused_result__;
+# define PERL_ARGS_ASSERT_GET_CONTEXT
+
+PERL_CALLCONV bool
+Perl_get_win32_message_utf8ness(pTHX_ const char *string)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_GET_WIN32_MESSAGE_UTF8NESS
+
+PERL_CALLCONV_NO_RET void
+win32_croak_not_implemented(const char *fname)
+ __attribute__noreturn__;
+# define PERL_ARGS_ASSERT_WIN32_CROAK_NOT_IMPLEMENTED \
+ assert(fname)
+
+#else /* if !defined(WIN32) */
+PERL_CALLCONV bool
+Perl_do_exec3(pTHX_ const char *incmd, int fd, int do_report)
+ __attribute__visibility__("hidden");
+# define PERL_ARGS_ASSERT_DO_EXEC3 \
+ assert(incmd)
#endif
-#if defined(WIN32) || defined(VMS)
-PERL_CALLCONV int Perl_do_aspawn(pTHX_ SV* really, SV** mark, SV** sp);
-#define PERL_ARGS_ASSERT_DO_ASPAWN \
- assert(mark); assert(sp)
-PERL_CALLCONV int Perl_do_spawn(pTHX_ char* cmd);
-#define PERL_ARGS_ASSERT_DO_SPAWN \
- assert(cmd)
-PERL_CALLCONV int Perl_do_spawn_nowait(pTHX_ char* cmd);
-#define PERL_ARGS_ASSERT_DO_SPAWN_NOWAIT \
- assert(cmd)
-#endif
-#if defined(_MSC_VER)
-PERL_CALLCONV int Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg);
-#define PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET \
- assert(sv); assert(mg)
-#endif
+
#ifdef PERL_CORE
# include "pp_proto.h"
#endif
END_EXTERN_C
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/reentr.h b/Master/tlpkg/tlperl/lib/CORE/reentr.h
index fefb3f065bf..3d95027f742 100644
--- a/Master/tlpkg/tlperl/lib/CORE/reentr.h
+++ b/Master/tlpkg/tlperl/lib/CORE/reentr.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
*
* reentr.h
*
@@ -1697,4 +1697,4 @@ typedef struct {
#endif
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/regcharclass.h b/Master/tlpkg/tlperl/lib/CORE/regcharclass.h
index 808ae557979..4d39ab2417b 100644
--- a/Master/tlpkg/tlperl/lib/CORE/regcharclass.h
+++ b/Master/tlpkg/tlperl/lib/CORE/regcharclass.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
*
* regcharclass.h
*
@@ -156,6 +156,35 @@
( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) )
/*
+ SPACE: Backwards \p{XPerlSpace}
+
+ \p{XPerlSpace}
+*/
+/*** GENERATED CODE ***/
+#define is_SPACE_utf8_safe_backwards(s,e) \
+( ((s) - (e) > 2) ? \
+ ( ( inRANGE_helper_(U8, *((const U8*)s - 1), '\t', '\r') || ' ' == *((const U8*)s - 1) ) ? 1\
+ : ( 0x80 == *((const U8*)s - 1) ) ? \
+ ( ( 0x80 == *((const U8*)s - 2) ) ? \
+ ( ( inRANGE_helper_(U8, *((const U8*)s - 3), 0xE2, 0xE3) ) ? 3 : 0 )\
+ : ( ( 0x9A == *((const U8*)s - 2) ) && ( 0xE1 == *((const U8*)s - 3) ) ) ? 3 : 0 )\
+ : ( inRANGE_helper_(U8, *((const U8*)s - 1), 0x81, 0x84) || inRANGE_helper_(U8, *((const U8*)s - 1), 0x86, 0x8A) || inRANGE_helper_(U8, *((const U8*)s - 1), 0xA8, 0xA9) || 0xAF == *((const U8*)s - 1) ) ?\
+ ( ( ( 0x80 == *((const U8*)s - 2) ) && ( 0xE2 == *((const U8*)s - 3) ) ) ? 3 : 0 )\
+ : ( 0x85 == *((const U8*)s - 1) ) ? \
+ ( ( 0x80 == *((const U8*)s - 2) ) ? \
+ ( ( 0xE2 == *((const U8*)s - 3) ) ? 3 : 0 ) \
+ : ( 0xC2 == *((const U8*)s - 2) ) ? 2 : 0 ) \
+ : ( 0x9F == *((const U8*)s - 1) ) ? \
+ ( ( ( 0x81 == *((const U8*)s - 2) ) && ( 0xE2 == *((const U8*)s - 3) ) ) ? 3 : 0 )\
+ : ( ( 0xA0 == *((const U8*)s - 1) ) && ( 0xC2 == *((const U8*)s - 2) ) ) ? 2 : 0 )\
+: ((s) - (e) > 1) ? \
+ ( ( inRANGE_helper_(U8, *((const U8*)s - 1), '\t', '\r') || ' ' == *((const U8*)s - 1) ) ? 1\
+ : ( ( 0x85 == *((const U8*)s - 1) || 0xA0 == *((const U8*)s - 1) ) && ( 0xC2 == *((const U8*)s - 2) ) ) ? 2 : 0 )\
+: ((s) - (e) > 0) ? \
+ ( inRANGE_helper_(U8, *((const U8*)s - 1), '\t', '\r') || ' ' == *((const U8*)s - 1) )\
+: 0 )
+
+/*
NONCHAR: Non character code points
\p{_Perl_Nchar}
@@ -173,11 +202,57 @@
: ( ( ( ( 0xF4 == ((const U8*)s)[0] ) && ( 0x8F == ((const U8*)s)[1] ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 ) : 0 )
/*
+ SHORTER_NON_CHARS: # 3 bytes
+
+ 0xFDD0 - 0xFDEF
+ 0xFFFE - 0xFFFF
+*/
+/*** GENERATED CODE ***/
+#define is_SHORTER_NON_CHARS_utf8(s) \
+( ( 0xEF == ((const U8*)s)[0] ) ? \
+ ( ( 0xB7 == ((const U8*)s)[1] ) ? \
+ ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x90, 0xAF) ) ? 3 : 0 ) \
+ : ( ( 0xBF == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xBE, 0xBF) ) ) ? 3 : 0 )\
+: 0 )
+
+/*
+ LARGER_NON_CHARS: # 4 bytes
+
+ 0x1FFFE - 0x1FFFF
+ 0x2FFFE - 0x2FFFF
+ 0x3FFFE - 0x3FFFF
+ 0x4FFFE - 0x4FFFF
+ 0x5FFFE - 0x5FFFF
+ 0x6FFFE - 0x6FFFF
+ 0x7FFFE - 0x7FFFF
+ 0x8FFFE - 0x8FFFF
+ 0x9FFFE - 0x9FFFF
+ 0xAFFFE - 0xAFFFF
+ 0xBFFFE - 0xBFFFF
+ 0xCFFFE - 0xCFFFF
+ 0xDFFFE - 0xDFFFF
+ 0xEFFFE - 0xEFFFF
+ 0xFFFFE - 0xFFFFF
+ 0x10FFFE - 0x10FFFF
+*/
+/*** GENERATED CODE ***/
+#define is_LARGER_NON_CHARS_utf8(s) \
+( ( 0xF0 == ((const U8*)s)[0] ) ? \
+ ( ( ( ( ((const U8*)s)[1] == 0x9F || ( ( ((const U8*)s)[1] & 0xEF ) == 0xAF ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
+: ( inRANGE_helper_(U8, ((const U8*)s)[0], 0xF1, 0xF3) ) ? \
+ ( ( ( ( ( ((const U8*)s)[1] & 0xCF ) == 0x8F ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )\
+: ( ( ( ( 0xF4 == ((const U8*)s)[0] ) && ( 0x8F == ((const U8*)s)[1] ) ) && ( 0xBF == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0xBE, 0xBF) ) ) ? 4 : 0 )
+
+/*
SURROGATE: Surrogate code points
\p{_Perl_Surrogate}
*/
/*** GENERATED CODE ***/
+#define is_SURROGATE_utf8(s) \
+( ( ( 0xED == ((const U8*)s)[0] ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0xA0, 0xBF) ) ) ? 3 : 0 )
+
+/*** GENERATED CODE ***/
#define is_SURROGATE_utf8_safe(s,e) \
( ( ( ( ( ((e) - (s)) >= 3 ) && ( 0xED == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0xA0, 0xBF) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xBF) ) ) ? 3 : 0 )
@@ -199,7 +274,7 @@
( ( 0x80 == ((const U8*)s)[2] ) ? 3 : 0 ) \
: ( 0x9E == ((const U8*)s)[1] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0xB4, 0xB5) ) ? 3 : 0 ) \
- : ( ( 0xA0 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x8B, 0x8E) ) ) ? 3 : 0 )\
+ : ( ( 0xA0 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x8B, 0x8F) ) ) ? 3 : 0 )\
: ( 0xE2 == ((const U8*)s)[0] ) ? \
( ( 0x80 == ((const U8*)s)[1] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x80, 0xBE) ) ? 3 : 0 ) \
@@ -1197,7 +1272,7 @@
: 0 )
/*
- HANGUL_ED: Hangul syllables whose first character is \xED
+ HANGUL_ED: Hangul syllables whose first UTF-8 byte is \xED
0xD000 - 0xD7FF
*/
@@ -1271,7 +1346,7 @@
( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ? \
( ( 0x41 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAA) ) ? 3 : 0 )\
: ( 0x42 == ((const U8*)s)[1] ) ? \
( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 ) \
: ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
@@ -1305,7 +1380,7 @@
/*** GENERATED CODE ***/
#define is_XDIGIT_high(s) \
( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x73 == ((const U8*)s)[1] ) ) ? ( ( 0x67 == ((const U8*)s)[2] ) ?\
- ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x57, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x68) ) ? 4 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xB9) ) ? 4 : 0 )\
: ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x68, 0x69) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x42, 0x47) ) ) ? 4 : 0 ) : 0 )
/*** GENERATED CODE ***/
@@ -1324,7 +1399,7 @@
( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ? \
( ( 0x41 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAA) ) ? 3 : 0 )\
: ( 0x42 == ((const U8*)s)[1] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
: ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
@@ -1339,6 +1414,35 @@
( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) )
/*
+ SPACE: Backwards \p{XPerlSpace}
+
+ \p{XPerlSpace}
+*/
+/*** GENERATED CODE ***/
+#define is_SPACE_utf8_safe_backwards(s,e) \
+( ((s) - (e) > 2) ? \
+ ( ( '\t' == *((const U8*)s - 1) || inRANGE_helper_(U8, *((const U8*)s - 1), '\v', '\r') || '\n' == *((const U8*)s - 1) || 0x25 == *((const U8*)s - 1) || ' ' == *((const U8*)s - 1) ) ? 1\
+ : ( 0x41 == *((const U8*)s - 1) ) ? \
+ ( ( 0x41 == *((const U8*)s - 2) ) ? \
+ ( ( ( *((const U8*)s - 3) & 0xFB ) == 0xCA ) ? 3 : 0 ) \
+ : ( 0x63 == *((const U8*)s - 2) ) ? \
+ ( ( 0xBC == *((const U8*)s - 3) ) ? 3 : 0 ) \
+ : ( 0x80 == *((const U8*)s - 2) ) ? 2 : 0 ) \
+ : ( inRANGE_helper_(U8, *((const U8*)s - 1), 0x42, 0x48) || 0x51 == *((const U8*)s - 1) ) ?\
+ ( ( ( 0x41 == *((const U8*)s - 2) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
+ : ( inRANGE_helper_(U8, *((const U8*)s - 1), 0x49, 0x4A) ) ? \
+ ( ( ( inRANGE_helper_(U8, *((const U8*)s - 2), 0x41, 0x42) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
+ : ( 0x56 == *((const U8*)s - 1) ) ? \
+ ( ( ( 0x42 == *((const U8*)s - 2) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
+ : ( ( ( 0x73 == *((const U8*)s - 1) ) && ( 0x43 == *((const U8*)s - 2) ) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
+: ((s) - (e) > 1) ? \
+ ( ( '\t' == *((const U8*)s - 1) || inRANGE_helper_(U8, *((const U8*)s - 1), '\v', '\r') || '\n' == *((const U8*)s - 1) || 0x25 == *((const U8*)s - 1) || ' ' == *((const U8*)s - 1) ) ? 1\
+ : ( ( 0x41 == *((const U8*)s - 1) ) && ( 0x80 == *((const U8*)s - 2) ) ) ? 2 : 0 )\
+: ((s) - (e) > 0) ? \
+ ( '\t' == *((const U8*)s - 1) || inRANGE_helper_(U8, *((const U8*)s - 1), '\v', '\r') || '\n' == *((const U8*)s - 1) || 0x25 == *((const U8*)s - 1) || ' ' == *((const U8*)s - 1) )\
+: 0 )
+
+/*
NONCHAR: Non character code points
\p{_Perl_Nchar}
@@ -1348,25 +1452,73 @@
( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\
( ( 0x73 == ((const U8*)s)[1] ) ? \
( ( 0x55 == ((const U8*)s)[2] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x57, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x70, 0x73) ) ? 4 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xBF) ) ? 4 : 0 )\
: ( 0x56 == ((const U8*)s)[2] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
: ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
: 0 ) \
- : ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\
+ : ( ((const U8*)s)[0] == 0xDF || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xFD ) == 0xF5 ) ) ?\
( ( ( ( 0x73 == ((const U8*)s)[1] ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
: ( 0xED == ((const U8*)s)[0] ) ? \
- ( ( ( ( ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x62 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x64 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x68 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x71 ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 )\
+ ( ( ( ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF9 ) == 0xA9 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF1 ) == 0xB1 ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 )\
: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 ) : 0 )
/*
+ SHORTER_NON_CHARS: # 4 bytes
+
+ 0xFDD0 - 0xFDEF
+ 0xFFFE - 0xFFFF
+ 0x1FFFE - 0x1FFFF
+ 0x2FFFE - 0x2FFFF
+ 0x3FFFE - 0x3FFFF
+*/
+/*** GENERATED CODE ***/
+#define is_SHORTER_NON_CHARS_utf8(s) \
+( ( 0xDD == ((const U8*)s)[0] ) ? \
+ ( ( 0x73 == ((const U8*)s)[1] ) ? \
+ ( ( 0x55 == ((const U8*)s)[2] ) ? \
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xBF) ) ? 4 : 0 )\
+ : ( 0x56 == ((const U8*)s)[2] ) ? \
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
+ : ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )\
+ : 0 ) \
+: ( ( ( ( ((const U8*)s)[0] == 0xDF || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xFD ) == 0xF5 ) ) && ( 0x73 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ) ? 4 : 0 )
+
+/*
+ LARGER_NON_CHARS: # 5 bytes
+
+ 0x4FFFE - 0x4FFFF
+ 0x5FFFE - 0x5FFFF
+ 0x6FFFE - 0x6FFFF
+ 0x7FFFE - 0x7FFFF
+ 0x8FFFE - 0x8FFFF
+ 0x9FFFE - 0x9FFFF
+ 0xAFFFE - 0xAFFFF
+ 0xBFFFE - 0xBFFFF
+ 0xCFFFE - 0xCFFFF
+ 0xDFFFE - 0xDFFFF
+ 0xEFFFE - 0xEFFFF
+ 0xFFFFE - 0xFFFFF
+ 0x10FFFE - 0x10FFFF
+*/
+/*** GENERATED CODE ***/
+#define is_LARGER_NON_CHARS_utf8(s) \
+( ( 0xED == ((const U8*)s)[0] ) ? \
+ ( ( ( ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF9 ) == 0xA9 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF1 ) == 0xB1 ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 )\
+: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x73 == ((const U8*)s)[2] ) ) && ( 0x73 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x72, 0x73) ) ) ? 5 : 0 )
+
+/*
SURROGATE: Surrogate code points
\p{_Perl_Surrogate}
*/
/*** GENERATED CODE ***/
+#define is_SURROGATE_utf8(s) \
+( ( ( 0xDD == ((const U8*)s)[0] ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x65, 0x66) ) ) ? 4 : 0 )
+
+/*** GENERATED CODE ***/
#define is_SURROGATE_utf8_safe(s,e) \
-( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x65, 0x66) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x70, 0x73) ) ) ? 4 : 0 )
+( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x65, 0x66) ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xBF) ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xBF) ) ) ? 4 : 0 )
/*
QUOTEMETA: Meta-characters that \Q should quote
@@ -1374,74 +1526,68 @@
\p{_Perl_Quotemeta}
*/
/*** GENERATED CODE ***/
-#define is_QUOTEMETA_high_part0_(s) \
-( ( 0x63 == ((const U8*)s)[1] ) ? \
+#define is_QUOTEMETA_high(s) \
+( ( 0xB1 == ((const U8*)s)[0] ) ? \
+ ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 ) \
+: ( 0xB8 == ((const U8*)s)[0] ) ? \
+ ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xBB == ((const U8*)s)[0] ) ? \
+ ( ( 0x51 == ((const U8*)s)[1] ) ? \
+ ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 ) \
+ : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xBC == ((const U8*)s)[0] ) ? \
+ ( ( 0x63 == ((const U8*)s)[1] ) ? \
( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 ) \
- : ( ( 0x71 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x63, 0x64) ) ) ? 3 : 0 )
-
-
-/*** GENERATED CODE ***/
-#define is_QUOTEMETA_high_part1_(s) \
-( ( 0xBE == ((const U8*)s)[0] ) ? \
- ( ( ( 0x41 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x52, 0x55) ) ) ? 3 : 0 )\
+ : ( ( 0x71 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x63, 0x64) ) ) ? 3 : 0 )\
+: ( 0xBE == ((const U8*)s)[0] ) ? \
+ ( ( ( 0x41 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x52, 0x56) ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ? \
- ( ( 0x41 == ((const U8*)s)[1] || inRANGE_helper_(U8, ((const U8*)s)[1], 0x54, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x73) ) ?\
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
+ ( ( 0x41 == ((const U8*)s)[1] || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xAD, 0xBF) ) ?\
+ 3 \
: ( 0x42 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xBE) ) ? 3 : 0 )\
: ( 0x43 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x42, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x62 == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x64, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA1, 0xB3) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB5, 0xBF) ) ? 3 : 0 )\
: ( 0x44 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x56) ) ? 3 : 0 )\
- : ( ( 0x53 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x57, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAF) ) ? 3 : 0 )\
+ : ( ( 0x53 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB0, 0xBF) ) ) ? 3 : 0 )\
: ( 0xCB == ((const U8*)s)[0] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x41, 0x43) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x49, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x69) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x71, 0x73) ) ?\
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xA0, 0xA2) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xA8, 0xBA) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xBD, 0xBF) ) ?\
+ 3 \
: ( 0x6A == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x64) ) ? 3 : 0 )\
- : ( ( 0x70 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x63, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xB5) ) ? 3 : 0 )\
+ : ( ( 0x70 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB4, 0xBF) ) ) ? 3 : 0 )\
: ( 0xCC == ((const U8*)s)[0] ) ? \
- ( ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x73) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
+ 3 \
: ( 0xCD == ((const U8*)s)[0] ) ? \
- ( ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x59) || 0x62 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xB0, 0xB3) ) ?\
+ 3 \
+ : 0 ) \
: ( 0xCE == ((const U8*)s)[0] ) ? \
( ( 0x41 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x44) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xA3) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA8, 0xBF) ) ? 3 : 0 )\
: ( 0x42 == ((const U8*)s)[1] ) ? \
- ( ( 0x41 == ((const U8*)s)[2] || 0x57 == ((const U8*)s)[2] ) ? 3 : 0 )\
+ ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEF ) == 0xA0 ) ? 3 : 0 )\
: ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xDD == ((const U8*)s)[0] ) ? \
( ( 0x73 == ((const U8*)s)[1] ) ? \
( ( 0x4A == ((const U8*)s)[2] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x72, 0x73) ) ? 4 : 0 )\
: ( 0x57 == ((const U8*)s)[2] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
: ( 0x59 == ((const U8*)s)[2] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x46, 0x47) ) ? 4 : 0 )\
: ( 0x66 == ((const U8*)s)[2] ) ? \
( ( 0x73 == ((const U8*)s)[3] ) ? 4 : 0 ) \
: ( 0x71 == ((const U8*)s)[2] ) ? \
( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 ) \
- : ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x57, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x67) ) ) ? 4 : 0 )\
+ : ( ( 0x73 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xB8) ) ) ? 4 : 0 )\
: 0 ) \
: ( 0xDF == ((const U8*)s)[0] ) ? \
( ( 0x56 == ((const U8*)s)[1] ) ? \
( ( ( 0x46 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x44) ) ) ? 4 : 0 )\
: ( ( ( 0x63 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x69) ) ) ? 4 : 0 )\
-: ( ( ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x44) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x70, 0x73) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[4], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[4], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[4], 0x70, 0x73) ) ) ? 5 : 0 )
-
-
-/*** GENERATED CODE ***/
-#define is_QUOTEMETA_high(s) \
-( ( 0xB1 == ((const U8*)s)[0] ) ? \
- ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 ) \
-: ( 0xB8 == ((const U8*)s)[0] ) ? \
- ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
-: ( 0xBB == ((const U8*)s)[0] ) ? \
- ( ( 0x51 == ((const U8*)s)[1] ) ? \
- ( ( 0x73 == ((const U8*)s)[2] ) ? 3 : 0 ) \
- : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
-: ( 0xBC == ((const U8*)s)[0] ) ? is_QUOTEMETA_high_part0_(s) : is_QUOTEMETA_high_part1_(s) )
+: ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x70 == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x44) ) ) ? 5 : 0 )
/*
MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
@@ -1474,7 +1620,7 @@
: ( 0xAB == ((const U8*)s)[0] ) ? \
( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
: ( 0xB4 == ((const U8*)s)[0] ) ? \
- ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? \
+ ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ? \
( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ? \
( ( 0xB1 == ((const U8*)s)[2] ) ? \
@@ -1518,13 +1664,13 @@
( ( 0x46 == ((const U8*)s)[2] ) ? \
( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
: ( 0x63 == ((const U8*)s)[2] ) ? \
- ( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x46 == ((const U8*)s)[5] || 0x52 == ((const U8*)s)[5] || 0x54 == ((const U8*)s)[5] || 0x65 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
+ ( ( ( ( 0xB8 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[5]) & 0xF7 ) == 0xA5 ) || ((const U8*)s)[5] == 0x52 || ((const U8*)s)[5] == 0x65 ) ) ? 6 : 0 )\
: ( ( ( ( 0x72 == ((const U8*)s)[2] ) && ( 0xB8 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x65 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
: 0 ) \
: ( 0xBF == ((const U8*)s)[0] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ? \
( ( ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
- : ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+ : ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x70 ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
: 0 )
@@ -1559,7 +1705,7 @@
: ( 0xAB == ((const U8*)s)[0] ) ? \
( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
: ( 0xB4 == ((const U8*)s)[0] ) ? \
- ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? \
+ ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ? \
( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ? \
( ( 0xB1 == ((const U8*)s)[2] ) ? \
@@ -1581,7 +1727,7 @@
: ( 0xBF == ((const U8*)s)[0] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ? \
( ( ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
- : ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+ : ( ( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x70 ) ) && ( 0xB4 == ((const U8*)s)[3] ) ) && ( 0x68 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
: 0 )
@@ -1617,7 +1763,7 @@
: ( 0xAB == ((const U8*)s)[0] ) ? \
( ( ( 0x70 == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
: ( 0xB4 == ((const U8*)s)[0] ) ? \
- ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? \
+ ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ? \
( ( ( 0xB4 == ((const U8*)s)[2] ) && ( 0x68 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ? \
( ( 0xB1 == ((const U8*)s)[2] ) ? \
@@ -2186,7 +2332,7 @@
: ( 0xAB == ((const U8*)s)[0] ) ? \
( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 ) \
: ( 0xB4 == ((const U8*)s)[0] ) ? \
- ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2 \
+ ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ? 2 \
: ( 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] ) ? \
( ( ( 0xB1 == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
: ( 0x68 == ((const U8*)s)[1] ) ? \
@@ -2204,7 +2350,7 @@
: ( 0xBF == ((const U8*)s)[0] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )\
- : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+ : ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x70 ) ) ? 3 : 0 )\
: 0 ) \
: ((e)-(s) > 2) ? \
( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
@@ -2215,7 +2361,7 @@
: ( 0xAB == ((const U8*)s)[0] ) ? \
( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 ) \
: ( 0xB4 == ((const U8*)s)[0] ) ? \
- ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] || 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] || 0x68 == ((const U8*)s)[1] ) ? 2 : 0 )\
+ ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0x66 ) ? 2 : 0 )\
: ( 0xB5 == ((const U8*)s)[0] ) ? \
( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ? 2 : 0 )\
: ( 0xB8 == ((const U8*)s)[0] ) ? \
@@ -2223,7 +2369,7 @@
: ( 0xBF == ((const U8*)s)[0] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x67, 0x68) ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )\
- : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+ : ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x70 ) ) ? 3 : 0 )\
: 0 ) \
: ((e)-(s) > 1) ? \
( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
@@ -2234,7 +2380,7 @@
: ( 0xAB == ((const U8*)s)[0] ) ? \
( ( 0x70 == ((const U8*)s)[1] ) ? 2 : 0 ) \
: ( 0xB4 == ((const U8*)s)[0] ) ? \
- ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] || 0x58 == ((const U8*)s)[1] || 0x66 == ((const U8*)s)[1] || 0x68 == ((const U8*)s)[1] ) ? 2 : 0 )\
+ ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0x66 ) ? 2 : 0 )\
: ( ( 0xB5 == ((const U8*)s)[0] ) && ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ) ? 2 : 0 )\
: ((e)-(s) > 0) ? \
( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
@@ -2275,14 +2421,14 @@
( ( 0x63 == ((const U8*)s)[1] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x69) || 0x72 == ((const U8*)s)[2] ) ? 3 : 0 )\
: ( 0x69 == ((const U8*)s)[1] ) ? \
- ( ( 0x57 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x63 == ((const U8*)s)[2] || 0x65 == ((const U8*)s)[2] ) ? 3 : 0 )\
+ ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF9 ) == 0xB0 ) ? 3 : 0 )\
: ( 0x70 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x73) ) ? 3 : 0 )\
+ 3 \
: ( 0x71 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x56) || 0x59 == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x63) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x66) || 0x70 == ((const U8*)s)[2] ) ? 3 : 0 )\
+ ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF0 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFA ) == 0xB2 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xB4 ) ) ? 3 : 0 )\
: ( 0x72 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x43, 0x45) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x47, 0x48) || 0x53 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x66) ) ? 3 : 0 )\
- : ( ( 0x73 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x43, 0x45) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x47, 0x48) || 0x59 == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x63) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x65, 0x66) || 0x70 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+ ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEA ) == 0xA2 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xA4 ) ) ? 3 : 0 )\
+ : ( ( 0x73 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEA ) == 0xA2 ) || ((const U8*)s)[2] == 0x45 || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xB4 ) ) ) ? 3 : 0 )\
: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x67 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x66) ) ) ? 4 : 0 )
/*
@@ -2292,9 +2438,9 @@
*/
/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLD_utf8(s) \
-( ( ( ((const U8*)s)[0] <= ' ' ) || inRANGE_helper_(U8, ((const U8*)s)[0], '.', '&') || inRANGE_helper_(U8, ((const U8*)s)[0], '!', '/') || inRANGE_helper_(U8, ((const U8*)s)[0], ',', '?') || inRANGE_helper_(U8, ((const U8*)s)[0], '`', '"') || inRANGE_helper_(U8, ((const U8*)s)[0], 'a', 'i') || inRANGE_helper_(U8, ((const U8*)s)[0], 'j', 'r') || inRANGE_helper_(U8, ((const U8*)s)[0], '~', 'z') || '[' == ((const U8*)s)[0] || ']' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], '{', 'I') || inRANGE_helper_(U8, ((const U8*)s)[0], '}', 'R') || '\\' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 'S', 'Z') || inRANGE_helper_(U8, ((const U8*)s)[0], '0', '9') || 0xFF == ((const U8*)s)[0] ) ? 1\
-: ( 0x80 == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 0x8A, 0x8B) ) ?\
- ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x73) ) ? 2 : 0 )\
+( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0x80 ) == 0x00 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xE0 ) == 0x80 ) ) ? 1\
+: ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[0]), 0xC5, 0xC7) ) ?\
+ 2 \
: ( 0x8D == ((const U8*)s)[0] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 ) \
: ( 0x8E == ((const U8*)s)[0] ) ? \
@@ -2335,9 +2481,9 @@
*/
/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s) \
-( ( ( ((const U8*)s)[0] <= ' ' ) || inRANGE_helper_(U8, ((const U8*)s)[0], '.', '&') || inRANGE_helper_(U8, ((const U8*)s)[0], '!', '/') || inRANGE_helper_(U8, ((const U8*)s)[0], ',', '?') || inRANGE_helper_(U8, ((const U8*)s)[0], '`', '"') || inRANGE_helper_(U8, ((const U8*)s)[0], 'a', 'i') || inRANGE_helper_(U8, ((const U8*)s)[0], 'j', 'r') || inRANGE_helper_(U8, ((const U8*)s)[0], '~', 'z') || '[' == ((const U8*)s)[0] || ']' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], '{', 'I') || inRANGE_helper_(U8, ((const U8*)s)[0], '}', 'R') || '\\' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 'S', 'Z') || inRANGE_helper_(U8, ((const U8*)s)[0], '0', '9') || 0xFF == ((const U8*)s)[0] ) ? 1\
-: ( 0x80 == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 0x8A, 0x8B) ) ?\
- ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x51, 0x59) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x73) ) ? 2 : 0 )\
+( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0x80 ) == 0x00 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xE0 ) == 0x80 ) ) ? 1\
+: ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[0]), 0xC5, 0xC7) ) ?\
+ 2 \
: ( 0x8D == ((const U8*)s)[0] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 ) \
: ( 0x8E == ((const U8*)s)[0] ) ? \
@@ -2383,6 +2529,15 @@
: ( ( 0x42 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 ) : 0 )\
: 0 )
+/*
+ HANGUL_ED: Hangul syllables whose first UTF-8 byte is \xED
+
+ 0x1 - 0x0
+*/
+/*** GENERATED CODE ***/
+#define is_HANGUL_ED_utf8_safe(s,e) \
+( 0 )
+
#endif /* EBCDIC 1047 */
#if 'A' == 193 /* EBCDIC 037 */ \
@@ -2449,7 +2604,7 @@
( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ? \
( ( 0x41 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAA) ) ? 3 : 0 )\
: ( 0x42 == ((const U8*)s)[1] ) ? \
( ( 0x56 == ((const U8*)s)[2] ) ? 3 : 0 ) \
: ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
@@ -2483,7 +2638,7 @@
/*** GENERATED CODE ***/
#define is_XDIGIT_high(s) \
( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x72 == ((const U8*)s)[1] ) ) ? ( ( 0x66 == ((const U8*)s)[2] ) ?\
- ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x57, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x67) ) ? 4 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xB9) ) ? 4 : 0 )\
: ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x67, 0x68) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x42, 0x47) ) ) ? 4 : 0 ) : 0 )
/*** GENERATED CODE ***/
@@ -2502,7 +2657,7 @@
( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xCA == ((const U8*)s)[0] ) ? \
( ( 0x41 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || 0x51 == ((const U8*)s)[2] ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAA) ) ? 3 : 0 )\
: ( 0x42 == ((const U8*)s)[1] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) || 0x56 == ((const U8*)s)[2] ) ? 3 : 0 )\
: ( ( 0x43 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
@@ -2517,6 +2672,35 @@
( 0x205F == cp || 0x3000 == cp ) ) ) ) ) ) ) ) )
/*
+ SPACE: Backwards \p{XPerlSpace}
+
+ \p{XPerlSpace}
+*/
+/*** GENERATED CODE ***/
+#define is_SPACE_utf8_safe_backwards(s,e) \
+( ((s) - (e) > 2) ? \
+ ( ( '\t' == *((const U8*)s - 1) || inRANGE_helper_(U8, *((const U8*)s - 1), '\v', '\r') || 0x15 == *((const U8*)s - 1) || '\n' == *((const U8*)s - 1) || ' ' == *((const U8*)s - 1) ) ? 1\
+ : ( 0x41 == *((const U8*)s - 1) ) ? \
+ ( ( 0x41 == *((const U8*)s - 2) ) ? \
+ ( ( ( *((const U8*)s - 3) & 0xFB ) == 0xCA ) ? 3 : 0 ) \
+ : ( 0x62 == *((const U8*)s - 2) ) ? \
+ ( ( 0xBD == *((const U8*)s - 3) ) ? 3 : 0 ) \
+ : ( 0x78 == *((const U8*)s - 2) ) ? 2 : 0 ) \
+ : ( inRANGE_helper_(U8, *((const U8*)s - 1), 0x42, 0x48) || 0x51 == *((const U8*)s - 1) ) ?\
+ ( ( ( 0x41 == *((const U8*)s - 2) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
+ : ( inRANGE_helper_(U8, *((const U8*)s - 1), 0x49, 0x4A) ) ? \
+ ( ( ( inRANGE_helper_(U8, *((const U8*)s - 2), 0x41, 0x42) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
+ : ( 0x56 == *((const U8*)s - 1) ) ? \
+ ( ( ( 0x42 == *((const U8*)s - 2) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
+ : ( ( ( 0x72 == *((const U8*)s - 1) ) && ( 0x43 == *((const U8*)s - 2) ) ) && ( 0xCA == *((const U8*)s - 3) ) ) ? 3 : 0 )\
+: ((s) - (e) > 1) ? \
+ ( ( '\t' == *((const U8*)s - 1) || inRANGE_helper_(U8, *((const U8*)s - 1), '\v', '\r') || 0x15 == *((const U8*)s - 1) || '\n' == *((const U8*)s - 1) || ' ' == *((const U8*)s - 1) ) ? 1\
+ : ( ( 0x41 == *((const U8*)s - 1) ) && ( 0x78 == *((const U8*)s - 2) ) ) ? 2 : 0 )\
+: ((s) - (e) > 0) ? \
+ ( '\t' == *((const U8*)s - 1) || inRANGE_helper_(U8, *((const U8*)s - 1), '\v', '\r') || 0x15 == *((const U8*)s - 1) || '\n' == *((const U8*)s - 1) || ' ' == *((const U8*)s - 1) )\
+: 0 )
+
+/*
NONCHAR: Non character code points
\p{_Perl_Nchar}
@@ -2526,25 +2710,73 @@
( ( ( LIKELY((e) > (s)) ) && ( LIKELY(((e) - (s)) >= UTF8SKIP(s)) ) ) ? ( ( 0xDD == ((const U8*)s)[0] ) ?\
( ( 0x72 == ((const U8*)s)[1] ) ? \
( ( 0x55 == ((const U8*)s)[2] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x57, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x70, 0x72) ) ? 4 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xBF) ) ? 4 : 0 )\
: ( 0x56 == ((const U8*)s)[2] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
: ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
: 0 ) \
- : ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\
+ : ( ((const U8*)s)[0] == 0xDF || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xFD ) == 0xF5 ) ) ?\
( ( ( ( 0x72 == ((const U8*)s)[1] ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
: ( 0xED == ((const U8*)s)[0] ) ? \
- ( ( ( ( ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x5F || ((const U8*)s)[1] == 0x63 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) || ((const U8*)s)[1] == 0x69 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x70 ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 )\
+ ( ( ( ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF9 ) == 0xA9 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF1 ) == 0xB1 ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 )\
: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 ) : 0 )
/*
+ SHORTER_NON_CHARS: # 4 bytes
+
+ 0xFDD0 - 0xFDEF
+ 0xFFFE - 0xFFFF
+ 0x1FFFE - 0x1FFFF
+ 0x2FFFE - 0x2FFFF
+ 0x3FFFE - 0x3FFFF
+*/
+/*** GENERATED CODE ***/
+#define is_SHORTER_NON_CHARS_utf8(s) \
+( ( 0xDD == ((const U8*)s)[0] ) ? \
+ ( ( 0x72 == ((const U8*)s)[1] ) ? \
+ ( ( 0x55 == ((const U8*)s)[2] ) ? \
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xBF) ) ? 4 : 0 )\
+ : ( 0x56 == ((const U8*)s)[2] ) ? \
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
+ : ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )\
+ : 0 ) \
+: ( ( ( ( ((const U8*)s)[0] == 0xDF || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xFD ) == 0xF5 ) ) && ( 0x72 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ) ? 4 : 0 )
+
+/*
+ LARGER_NON_CHARS: # 5 bytes
+
+ 0x4FFFE - 0x4FFFF
+ 0x5FFFE - 0x5FFFF
+ 0x6FFFE - 0x6FFFF
+ 0x7FFFE - 0x7FFFF
+ 0x8FFFE - 0x8FFFF
+ 0x9FFFE - 0x9FFFF
+ 0xAFFFE - 0xAFFFF
+ 0xBFFFE - 0xBFFFF
+ 0xCFFFE - 0xCFFFF
+ 0xDFFFE - 0xDFFFF
+ 0xEFFFE - 0xEFFFF
+ 0xFFFFE - 0xFFFFF
+ 0x10FFFE - 0x10FFFF
+*/
+/*** GENERATED CODE ***/
+#define is_LARGER_NON_CHARS_utf8(s) \
+( ( 0xED == ((const U8*)s)[0] ) ? \
+ ( ( ( ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF9 ) == 0xA9 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF1 ) == 0xB1 ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 )\
+: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x42 == ((const U8*)s)[1] ) ) && ( 0x72 == ((const U8*)s)[2] ) ) && ( 0x72 == ((const U8*)s)[3] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x71, 0x72) ) ) ? 5 : 0 )
+
+/*
SURROGATE: Surrogate code points
\p{_Perl_Surrogate}
*/
/*** GENERATED CODE ***/
+#define is_SURROGATE_utf8(s) \
+( ( ( 0xDD == ((const U8*)s)[0] ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x64, 0x65) ) ) ? 4 : 0 )
+
+/*** GENERATED CODE ***/
#define is_SURROGATE_utf8_safe(s,e) \
-( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x64, 0x65) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x70, 0x72) ) ) ? 4 : 0 )
+( ( ( ( ( ( ((e) - (s)) >= 4 ) && ( 0xDD == ((const U8*)s)[0] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x64, 0x65) ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xBF) ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xBF) ) ) ? 4 : 0 )
/*
QUOTEMETA: Meta-characters that \Q should quote
@@ -2552,74 +2784,68 @@
\p{_Perl_Quotemeta}
*/
/*** GENERATED CODE ***/
-#define is_QUOTEMETA_high_part0_(s) \
-( ( 0x41 == ((const U8*)s)[1] || inRANGE_helper_(U8, ((const U8*)s)[1], 0x54, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x72) ) ?\
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
+#define is_QUOTEMETA_high(s) \
+( ( 0xAF == ((const U8*)s)[0] ) ? \
+ ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 ) \
+: ( 0xB7 == ((const U8*)s)[0] ) ? \
+ ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x6A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xBC == ((const U8*)s)[0] ) ? \
+ ( ( 0x51 == ((const U8*)s)[1] ) ? \
+ ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 ) \
+ : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+: ( 0xBD == ((const U8*)s)[0] ) ? \
+ ( ( 0x62 == ((const U8*)s)[1] ) ? \
+ ( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 ) \
+ : ( ( 0x70 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x63) ) ) ? 3 : 0 )\
+: ( 0xBE == ((const U8*)s)[0] ) ? \
+ ( ( ( 0x41 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x52, 0x56) ) ) ? 3 : 0 )\
+: ( 0xCA == ((const U8*)s)[0] ) ? \
+ ( ( 0x41 == ((const U8*)s)[1] || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xAD, 0xBF) ) ?\
+ 3 \
: ( 0x42 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x71) ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xBE) ) ? 3 : 0 )\
: ( 0x43 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x42, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x63, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA1, 0xB3) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB5, 0xBF) ) ? 3 : 0 )\
: ( 0x44 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x56) ) ? 3 : 0 )\
- : ( ( 0x53 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x57, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )
-
-
-/*** GENERATED CODE ***/
-#define is_QUOTEMETA_high_part1_(s) \
-( ( 0xCB == ((const U8*)s)[0] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x41, 0x43) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x49, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x51, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x68) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x72) ) ?\
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xAF) ) ? 3 : 0 )\
+ : ( ( 0x53 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB0, 0xBF) ) ) ? 3 : 0 )\
+: ( 0xCB == ((const U8*)s)[0] ) ? \
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xA0, 0xA2) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xA8, 0xBA) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xBD, 0xBF) ) ?\
+ 3 \
: ( 0x69 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x63) ) ? 3 : 0 )\
- : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xB5) ) ? 3 : 0 )\
+ : ( ( 0x6A == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xB4, 0xBF) ) ) ? 3 : 0 )\
: ( 0xCC == ((const U8*)s)[0] ) ? \
- ( ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x51, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x72) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )\
+ 3 \
: ( 0xCD == ((const U8*)s)[0] ) ? \
- ( ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x59) || 0x5F == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[1]), 0xB0, 0xB3) ) ?\
+ 3 \
+ : 0 ) \
: ( 0xCE == ((const U8*)s)[0] ) ? \
( ( 0x41 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x44) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA0, 0xA3) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[2]), 0xA8, 0xBF) ) ? 3 : 0 )\
: ( 0x42 == ((const U8*)s)[1] ) ? \
- ( ( 0x41 == ((const U8*)s)[2] || 0x57 == ((const U8*)s)[2] ) ? 3 : 0 )\
+ ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEF ) == 0xA0 ) ? 3 : 0 )\
: ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x45 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
: ( 0xDD == ((const U8*)s)[0] ) ? \
( ( 0x72 == ((const U8*)s)[1] ) ? \
( ( 0x4A == ((const U8*)s)[2] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x71, 0x72) ) ? 4 : 0 )\
: ( 0x57 == ((const U8*)s)[2] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x56) ) ? 4 : 0 )\
+ ( ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xAF) ) ? 4 : 0 )\
: ( 0x59 == ((const U8*)s)[2] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x46, 0x47) ) ? 4 : 0 )\
: ( 0x65 == ((const U8*)s)[2] ) ? \
( ( 0x72 == ((const U8*)s)[3] ) ? 4 : 0 ) \
: ( 0x70 == ((const U8*)s)[2] ) ? \
( ( 0x41 == ((const U8*)s)[3] ) ? 4 : 0 ) \
- : ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x57, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x66) ) ) ? 4 : 0 )\
+ : ( ( 0x72 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB0, 0xB8) ) ) ? 4 : 0 )\
: 0 ) \
: ( 0xDF == ((const U8*)s)[0] ) ? \
( ( 0x56 == ((const U8*)s)[1] ) ? \
( ( ( 0x46 == ((const U8*)s)[2] ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x44) ) ) ? 4 : 0 )\
- : ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( 0x5F == ((const U8*)s)[3] || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x68) ) ) ? 4 : 0 )\
-: ( ( ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x44) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x51, 0x59) || 0x5F == ((const U8*)s)[3] || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[3], 0x70, 0x72) ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[4], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[4], 0x51, 0x59) || 0x5F == ((const U8*)s)[4] || inRANGE_helper_(U8, ((const U8*)s)[4], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[4], 0x70, 0x72) ) ) ? 5 : 0 )
-
-
-/*** GENERATED CODE ***/
-#define is_QUOTEMETA_high(s) \
-( ( 0xAF == ((const U8*)s)[0] ) ? \
- ( ( 0x56 == ((const U8*)s)[1] ) ? 2 : 0 ) \
-: ( 0xB7 == ((const U8*)s)[0] ) ? \
- ( ( ( 0x57 == ((const U8*)s)[1] ) && ( 0x6A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
-: ( 0xBC == ((const U8*)s)[0] ) ? \
- ( ( 0x51 == ((const U8*)s)[1] ) ? \
- ( ( 0x72 == ((const U8*)s)[2] ) ? 3 : 0 ) \
- : ( ( 0x52 == ((const U8*)s)[1] ) && ( 0x41 == ((const U8*)s)[2] ) ) ? 3 : 0 )\
-: ( 0xBD == ((const U8*)s)[0] ) ? \
- ( ( 0x62 == ((const U8*)s)[1] ) ? \
- ( ( 0x41 == ((const U8*)s)[2] ) ? 3 : 0 ) \
- : ( ( 0x70 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x63) ) ) ? 3 : 0 )\
-: ( 0xBE == ((const U8*)s)[0] ) ? \
- ( ( ( 0x41 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x52, 0x55) ) ) ? 3 : 0 )\
-: ( 0xCA == ((const U8*)s)[0] ) ? is_QUOTEMETA_high_part0_(s) : is_QUOTEMETA_high_part1_(s) )
+ : ( ( ( 0x62 == ((const U8*)s)[1] ) && ( 0x52 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB3, 0xBA) ) ) ? 4 : 0 )\
+: ( ( ( 0xED == ((const U8*)s)[0] ) && ( 0x6A == ((const U8*)s)[1] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x44) ) ) ? 5 : 0 )
/*
MULTI_CHAR_FOLD: multi-char strings that are folded to by a single character
@@ -2652,7 +2878,7 @@
: ( 0xAA == ((const U8*)s)[0] ) ? \
( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
: ( 0xB3 == ((const U8*)s)[0] ) ? \
- ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? \
+ ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ? \
( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ? \
( ( 0xAF == ((const U8*)s)[2] ) ? \
@@ -2696,13 +2922,13 @@
( ( 0x46 == ((const U8*)s)[2] ) ? \
( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x53 == ((const U8*)s)[4] ) ) && ( 0x43 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
: ( 0x62 == ((const U8*)s)[2] ) ? \
- ( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x46 == ((const U8*)s)[5] || 0x52 == ((const U8*)s)[5] || 0x54 == ((const U8*)s)[5] || 0x64 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
+ ( ( ( ( 0xB7 == ((const U8*)s)[3] ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[5]) & 0xF7 ) == 0xA5 ) || ((const U8*)s)[5] == 0x52 || ((const U8*)s)[5] == 0x64 ) ) ? 6 : 0 )\
: ( ( ( ( 0x71 == ((const U8*)s)[2] ) && ( 0xB7 == ((const U8*)s)[3] ) ) && ( 0x52 == ((const U8*)s)[4] ) ) && ( 0x64 == ((const U8*)s)[5] ) ) ? 6 : 0 )\
: 0 ) \
: ( 0xBF == ((const U8*)s)[0] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x66, 0x67) ) ? \
( ( ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
- : ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+ : ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x6A ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
: 0 )
@@ -2737,7 +2963,7 @@
: ( 0xAA == ((const U8*)s)[0] ) ? \
( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
: ( 0xB3 == ((const U8*)s)[0] ) ? \
- ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? \
+ ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ? \
( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ? \
( ( 0xAF == ((const U8*)s)[2] ) ? \
@@ -2759,7 +2985,7 @@
: ( 0xBF == ((const U8*)s)[0] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x66, 0x67) ) ? \
( ( ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
- : ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
+ : ( ( ( ( 0x69 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x6A ) ) && ( 0xB3 == ((const U8*)s)[3] ) ) && ( 0x67 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
: 0 )
@@ -2795,7 +3021,7 @@
: ( 0xAA == ((const U8*)s)[0] ) ? \
( ( ( 0x6A == ((const U8*)s)[1] ) && ( ( ((const U8*)s)[2] & 0xBF ) == 'n' ) ) ? 3 : 0 )\
: ( 0xB3 == ((const U8*)s)[0] ) ? \
- ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? \
+ ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ? \
( ( ( 0xB3 == ((const U8*)s)[2] ) && ( 0x67 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ? \
( ( 0xAF == ((const U8*)s)[2] ) ? \
@@ -3364,7 +3590,7 @@
: ( 0xAA == ((const U8*)s)[0] ) ? \
( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 ) \
: ( 0xB3 == ((const U8*)s)[0] ) ? \
- ( ( 0x53 == ((const U8*)s)[1] || 0x55 == ((const U8*)s)[1] ) ? 2 \
+ ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) ? 2 \
: ( 0x58 == ((const U8*)s)[1] || 0x65 == ((const U8*)s)[1] ) ? \
( ( ( 0xAF == ((const U8*)s)[2] ) && ( 0x43 == ((const U8*)s)[3] ) ) ? 4 : 2 )\
: ( 0x67 == ((const U8*)s)[1] ) ? \
@@ -3382,7 +3608,7 @@
: ( 0xBF == ((const U8*)s)[0] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x66, 0x67) ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )\
- : ( ( 0x69 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+ : ( ( 0x69 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x6A ) ) ? 3 : 0 )\
: 0 ) \
: ((e)-(s) > 2) ? \
( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
@@ -3393,7 +3619,7 @@
: ( 0xAA == ((const U8*)s)[0] ) ? \
( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 ) \
: ( 0xB3 == ((const U8*)s)[0] ) ? \
- ( ( ((const U8*)s)[1] == 0x53 || ((const U8*)s)[1] == 0x55 || ((const U8*)s)[1] == 0x58 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) ) ? 2 : 0 )\
+ ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0x65 ) ? 2 : 0 )\
: ( 0xB4 == ((const U8*)s)[0] ) ? \
( ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ? 2 : 0 )\
: ( 0xB7 == ((const U8*)s)[0] ) ? \
@@ -3401,7 +3627,7 @@
: ( 0xBF == ((const U8*)s)[0] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x66, 0x67) ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) ) ? 3 : 0 )\
- : ( ( 0x69 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x48) || 0x57 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x6A == ((const U8*)s)[2] ) ) ? 3 : 0 )\
+ : ( ( 0x69 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF8 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFB ) == 0xB0 ) || ((const U8*)s)[2] == 0x6A ) ) ? 3 : 0 )\
: 0 ) \
: ((e)-(s) > 1) ? \
( ( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'w' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) ) ? 1\
@@ -3412,7 +3638,7 @@
: ( 0xAA == ((const U8*)s)[0] ) ? \
( ( 0x6A == ((const U8*)s)[1] ) ? 2 : 0 ) \
: ( 0xB3 == ((const U8*)s)[0] ) ? \
- ( ( ((const U8*)s)[1] == 0x53 || ((const U8*)s)[1] == 0x55 || ((const U8*)s)[1] == 0x58 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) ) ? 2 : 0 )\
+ ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xFD ) == 0xAC ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[1]) & 0xF7 ) == 0xB1 ) || ((const U8*)s)[1] == 0x65 ) ? 2 : 0 )\
: ( ( 0xB4 == ((const U8*)s)[0] ) && ( ( ( ((const U8*)s)[1] & 0xFB ) == 0x42 ) || ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x55 ) ) ? 2 : 0 )\
: ((e)-(s) > 0) ? \
( ( ( ((const U8*)s)[0] & 0xAF ) == 'a' ) || ( ( ((const U8*)s)[0] & 0x9F ) == 'f' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 'h' ) || ( ( ((const U8*)s)[0] & 0xBE ) == 's' ) || ( ( ((const U8*)s)[0] & 0xBF ) == 'y' ) )\
@@ -3453,15 +3679,15 @@
( ( 0x62 == ((const U8*)s)[1] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x64, 0x68) || 0x71 == ((const U8*)s)[2] ) ? 3 : 0 )\
: ( 0x68 == ((const U8*)s)[1] ) ? \
- ( ( 0x57 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || 0x64 == ((const U8*)s)[2] ) ? 3 : 0 )\
+ ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF9 ) == 0xB0 ) ? 3 : 0 )\
: ( 0x6A == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x59) || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x70, 0x72) ) ? 3 : 0 )\
+ 3 \
: ( 0x70 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x51, 0x56) || 0x59 == ((const U8*)s)[2] || 0x5F == ((const U8*)s)[2] || 0x62 == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x64, 0x65) || 0x6A == ((const U8*)s)[2] ) ? 3 : 0 )\
+ ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF0 ) == 0xA0 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xFA ) == 0xB2 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xB4 ) ) ? 3 : 0 )\
: ( 0x71 == ((const U8*)s)[1] ) ? \
- ( ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x43, 0x45) || inRANGE_helper_(U8, ((const U8*)s)[2], 0x47, 0x48) || 0x53 == ((const U8*)s)[2] || 0x59 == ((const U8*)s)[2] || 0x5F == ((const U8*)s)[2] || inRANGE_helper_(U8, ((const U8*)s)[2], 0x64, 0x65) ) ? 3 : 0 )\
- : ( ( 0x72 == ((const U8*)s)[1] ) && ( ( ( ((const U8*)s)[2] & 0xFB ) == 0x43 ) || ( ( ((const U8*)s)[2] & 0xDE ) == 0x44 ) || ((const U8*)s)[2] == 0x48 || ((const U8*)s)[2] == 0x59 || ((const U8*)s)[2] == 0x5F || ( ( ((const U8*)s)[2] & '7' ) == 0x62 ) ) ) ? 3 : 0 )\
-: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, ((const U8*)s)[3], 0x41, 0x47) || 0x5F == ((const U8*)s)[3] || inRANGE_helper_(U8, ((const U8*)s)[3], 0x62, 0x65) ) ) ? 4 : 0 )
+ ( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEA ) == 0xA2 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xA4 ) ) ? 3 : 0 )\
+ : ( ( 0x72 == ((const U8*)s)[1] ) && ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xEA ) == 0xA2 ) || ((const U8*)s)[2] == 0x45 || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[2]) & 0xF7 ) == 0xB4 ) ) ) ? 3 : 0 )\
+: ( ( ( ( 0xDD == ((const U8*)s)[0] ) && ( 0x71 == ((const U8*)s)[1] ) ) && ( 0x66 == ((const U8*)s)[2] ) ) && ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xA0, 0xA6) || inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[3]), 0xB3, 0xB7) ) ) ? 4 : 0 )
/*
PROBLEMATIC_LOCALE_FOLD: characters whose fold is problematic under locale
@@ -3470,9 +3696,9 @@
*/
/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLD_utf8(s) \
-( ( ( ((const U8*)s)[0] <= ' ' ) || inRANGE_helper_(U8, ((const U8*)s)[0], '.', '&') || inRANGE_helper_(U8, ((const U8*)s)[0], '!', ';') || inRANGE_helper_(U8, ((const U8*)s)[0], '-', '/') || inRANGE_helper_(U8, ((const U8*)s)[0], ',', '?') || inRANGE_helper_(U8, ((const U8*)s)[0], '`', '"') || inRANGE_helper_(U8, ((const U8*)s)[0], 'a', 'i') || inRANGE_helper_(U8, ((const U8*)s)[0], 'j', 'r') || inRANGE_helper_(U8, ((const U8*)s)[0], '~', 'z') || '^' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], '[', ']') || inRANGE_helper_(U8, ((const U8*)s)[0], '{', 'I') || inRANGE_helper_(U8, ((const U8*)s)[0], '}', 'R') || '\\' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 'S', 'Z') || inRANGE_helper_(U8, ((const U8*)s)[0], '0', '9') || 0xFF == ((const U8*)s)[0] ) ? 1\
-: ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || 0x8A == ((const U8*)s)[0] ) ?\
- ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x51, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x72) ) ? 2 : 0 )\
+( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0x80 ) == 0x00 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xE0 ) == 0x80 ) ) ? 1\
+: ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[0]), 0xC5, 0xC7) ) ?\
+ 2 \
: ( 0x8C == ((const U8*)s)[0] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 ) \
: ( 0x8D == ((const U8*)s)[0] ) ? \
@@ -3513,9 +3739,9 @@
*/
/*** GENERATED CODE ***/
#define is_PROBLEMATIC_LOCALE_FOLDEDS_START_utf8(s) \
-( ( ( ((const U8*)s)[0] <= ' ' ) || inRANGE_helper_(U8, ((const U8*)s)[0], '.', '&') || inRANGE_helper_(U8, ((const U8*)s)[0], '!', ';') || inRANGE_helper_(U8, ((const U8*)s)[0], '-', '/') || inRANGE_helper_(U8, ((const U8*)s)[0], ',', '?') || inRANGE_helper_(U8, ((const U8*)s)[0], '`', '"') || inRANGE_helper_(U8, ((const U8*)s)[0], 'a', 'i') || inRANGE_helper_(U8, ((const U8*)s)[0], 'j', 'r') || inRANGE_helper_(U8, ((const U8*)s)[0], '~', 'z') || '^' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], '[', ']') || inRANGE_helper_(U8, ((const U8*)s)[0], '{', 'I') || inRANGE_helper_(U8, ((const U8*)s)[0], '}', 'R') || '\\' == ((const U8*)s)[0] || inRANGE_helper_(U8, ((const U8*)s)[0], 'S', 'Z') || inRANGE_helper_(U8, ((const U8*)s)[0], '0', '9') || 0xFF == ((const U8*)s)[0] ) ? 1\
-: ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || 0x8A == ((const U8*)s)[0] ) ?\
- ( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x41, 0x4A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x51, 0x59) || 0x5F == ((const U8*)s)[1] || inRANGE_helper_(U8, ((const U8*)s)[1], 0x62, 0x6A) || inRANGE_helper_(U8, ((const U8*)s)[1], 0x70, 0x72) ) ? 2 : 0 )\
+( ( ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0x80 ) == 0x00 ) || ( ( NATIVE_UTF8_TO_I8(((const U8*)s)[0]) & 0xE0 ) == 0x80 ) ) ? 1\
+: ( inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(((const U8*)s)[0]), 0xC5, 0xC7) ) ?\
+ 2 \
: ( 0x8C == ((const U8*)s)[0] ) ? \
( ( inRANGE_helper_(U8, ((const U8*)s)[1], 0x57, 0x58) ) ? 2 : 0 ) \
: ( 0x8D == ((const U8*)s)[0] ) ? \
@@ -3561,62 +3787,72 @@
: ( ( 0x42 == ((const U8*)s)[1] ) && ( inRANGE_helper_(U8, ((const U8*)s)[2], 0x49, 0x4A) ) ) ? 3 : 0 ) : 0 )\
: 0 )
+/*
+ HANGUL_ED: Hangul syllables whose first UTF-8 byte is \xED
+
+ 0x1 - 0x0
+*/
+/*** GENERATED CODE ***/
+#define is_HANGUL_ED_utf8_safe(s,e) \
+( 0 )
+
#endif /* EBCDIC 037 */
#endif /* PERL_REGCHARCLASS_H_ */
/* Generated from:
- * d60b1a3dffe16c4aaaf3f00d21993bb320d05e9828b106182214764d4c69935c lib/Unicode/UCD.pm
- * ce96627d4fc91b4fd886c409caeb9b76cf7bd345e12f05c6701add7f233f6437 lib/unicore/ArabicShaping.txt
- * 0e69eef3da722cc104522d8372e86d5b86bb7afcc761b0c991e39e832294946d lib/unicore/BidiBrackets.txt
- * a00d9d21585106a52113fb7b1d3d0373a5835be72e76862fb559ebddd474d70e lib/unicore/BidiMirroring.txt
- * 81a82b6a9fcf1a9c12f588d7a1decd73a9afdc4cac95b0eb7e576e7942d6c19f lib/unicore/Blocks.txt
- * 99d231d7c91688bbe8ca8ccebcc2f46b5b222f844babe4827295bae11e2abe5f lib/unicore/CaseFolding.txt
- * 38badafd818d8405324fe298c0676be0c95186368c84b5368375fd871a645144 lib/unicore/CompositionExclusions.txt
- * e779a443d3aa2a3166a15becaa2b737c922480e32c0453d5956093633555078f lib/unicore/DAge.txt
- * a5d45f59b39deaab3c72ce8c1a2e212a5e086dff11b1f9d5bb0e352642e82248 lib/unicore/DCoreProperties.txt
- * 3ac44e11c84bdaf6b207d2c2c20eed857ae17052393fc7f71b0fe951186ba906 lib/unicore/DNormalizationProps.txt
- * 4f822ec7a9ebbb3138ad29bade8b9688d25b39c7a3c0b7431f01e7229e4fcb6e lib/unicore/EastAsianWidth.txt
- * fc535aa1047a70105ab9a22c2b4c3f363a2ff02fe48ebbc5eeb9873b2752ff0b lib/unicore/EquivalentUnifiedIdeograph.txt
- * b9c5158ce944d2fec57e0e4ecb716bdabfc3bdde73525f1772fe03f61a30d473 lib/unicore/HangulSyllableType.txt
- * 36c1b2a626ff1fb23b8b21e6ea8712698f8ce668dded1cb48b8ddf6a6a1b04e9 lib/unicore/IdStatus.txt
- * 4857c4ffa3898e6128b2d46b0a02e499a663fb91464a69ef3611096f01293acc lib/unicore/IdType.txt
- * 69197b019fa5f2fb0d8c6ed1ed8acb9f2e8b5b8f45a947953ffa652f3bf54983 lib/unicore/IndicPositionalCategory.txt
- * 6604e2f0fde7428675364aa0006bc686b79488dcc60ae8cb29800af2be3352e8 lib/unicore/IndicSyllabicCategory.txt
- * 84ead63924aaa74b988b2eaf254a8733276ed108633ce2ef77a9ee1de7818162 lib/unicore/Jamo.txt
- * d5abcd8f54c8a2aa912924c485ccf7f968ad98feaa303d8e9a29ad89172f1faf lib/unicore/LineBreak.txt
- * 985128e8c8b2540233331d9b27d897d2c23bd5bcf1d05da960befce6efc59542 lib/unicore/NameAliases.txt
- * 27282b8aa01d4d0c44aef436cb74195ae8639ffa187aeee4e6247af76febea76 lib/unicore/NamedSequences.txt
- * 485b5a3ed25dbf1f94dfa5a9b69d8b4550ffd0c33045ccc55ccfd7c80b2a40cf lib/unicore/PropList.txt
- * 6b3902e9268cd843fe65cbdea992108c9528343ec0679f800b96f356bb553e5a lib/unicore/PropValueAliases.txt
- * 2bd5777847e3d6add3c7e5c0d1393ddcab89e5a0ac3ff498cb0c53041f0b86e4 lib/unicore/PropertyAliases.txt
- * 03a61dc89422e44cc2b73e8e893321007880ab69e2a4d281c0f1bc29c602b9d0 lib/unicore/ScriptExtensions.txt
- * 9a5ed1ec9b5f0d7147e9371ad792ab39203611af7637cff2aa4a5c663b172cde lib/unicore/Scripts.txt
- * 6424312f1dc39b22e0ff9c0ffb13dfad424d9b03e6a6dc6bca941f6bf5ef1ffd lib/unicore/SpecialCasing.txt
- * bdbffbbfc8ad4d3a6d01b5891510458f3d36f7170422af4ea2bed3211a73e8bb lib/unicore/UnicodeData.txt
- * 160f41816234addb511901d5f21febd69574578dd93de6ef8153e35693325575 lib/unicore/VerticalOrientation.txt
- * 32dfb37d21db530529a6ec3dc13d96f21f8e7c7faf7ff3db8a9760cd76cec81d lib/unicore/auxiliary/GCBTest.txt
- * 2bd3c5e2d62701ff81fb3ec318e179a4618cabb1493b1e0dd2b4e7e56c5437c4 lib/unicore/auxiliary/GraphemeBreakProperty.txt
- * c51fbebfa82a0f36473b44bfd71d5ef6cb6a1f81fb313375dc9a1910d79bb2b6 lib/unicore/auxiliary/LBTest.txt
- * 80b0107750818d8f370bd120b6fe56b6855b60581f72affe8b60409a469b4b65 lib/unicore/auxiliary/SBTest.txt
- * 09e3166ebab166ac630a227f77f4e794ebd433271abd5588f5a67e7f199c71ee lib/unicore/auxiliary/SentenceBreakProperty.txt
- * bf5373ce28a5df06796c93dc159dd15a997bb2950c92704b40ae8190cfc3716d lib/unicore/auxiliary/WBTest.txt
- * a2b7373cf2fe3fa3b26dbb53405ca849985f771ff47f1c61743978003ff80499 lib/unicore/auxiliary/WordBreakProperty.txt
- * d2686f400a638c80775d7c662556fb8fa8dd3bbe4aa548d9d31624264c6e1bb1 lib/unicore/emoji/emoji.txt
- * b827ae5da8c2b08947cc9a120a7b7fd2f1676fb160b508df78075381635b127c lib/unicore/extracted/DBidiClass.txt
- * 6fdc5b5ef40444a8f0c772e6b67c00498d4216fe0c0fdf76744ce338f2ad3810 lib/unicore/extracted/DBinaryProperties.txt
- * e14928a5bf6ad5958a80332bd42e96e14420080a95c660e5da29384e496755d0 lib/unicore/extracted/DCombiningClass.txt
- * 579a03281fbe87b78d5d9a8523de4d255edd7e4ca6eab0e4c7729de97e9b89b1 lib/unicore/extracted/DDecompositionType.txt
- * ad83c59b257e9d480ffd3001d4ac240c5fed7cb1919453e1c4e8877035256bcd lib/unicore/extracted/DEastAsianWidth.txt
- * 4502f0969e4e6558c4b4c6ca4c23dad70b863d61dd3d5eed1a62a6c3c99fd570 lib/unicore/extracted/DGeneralCategory.txt
- * 00bb88b89e2adb646f3177f9444e2d3192386b81a5de9556104b338274b253e1 lib/unicore/extracted/DJoinGroup.txt
- * ac835b6e11a60c9820d3cf2d1cb0558dd68efb8f53f404a51632e4726690a6d7 lib/unicore/extracted/DJoinType.txt
- * baba9dfc133e3cb770a89aaf0973b1341fa61c2da6c176baf6428898b3b568d8 lib/unicore/extracted/DLineBreak.txt
- * 6d4a8c945dd7db83ed617cbb7d937de7f4ecf016ff22970d846e996a7c9a2a5d lib/unicore/extracted/DNumType.txt
- * 5b7c14380d5cceeaffcfbc18db1ed936391d2af2d51f5a41f1a17b692c77e59b lib/unicore/extracted/DNumValues.txt
- * 28076ceb3f4e2514ea9db243f4b918b9a7c2807b036237e2276b99b2659d9474 lib/unicore/mktables
- * 50b85a67451145545a65cea370dab8d3444fbfe07e9c34cef560c5b7da9d3eef lib/unicore/version
- * 24120d5e0c9685c442c93bc1dbea9b85ef973bf8e9474baf0e55b160c288226b regen/charset_translations.pl
- * 3635c6e564558e965018947bdab45f37d9a4fa82eb05b2694eae1a04bf7e65a3 regen/regcharclass.pl
+ * 688d673ec947f7ccf898b4eae9848139d4d33676b688dee54f449f8bf9d3bbd2 lib/Unicode/UCD.pm
+ * eb840f36e0a7446293578c684a54c6d83d249abde7bdd4dfa89794af1d7fe9e9 lib/unicore/ArabicShaping.txt
+ * 333ae1e99db0504ca8a046a07dc45b5e7aa91869c685e6bf955ebe674804827a lib/unicore/BidiBrackets.txt
+ * b4b9e1d87d8ea273613880de9d2b2f0b0b696244b42152bfa0a3106e7d983a20 lib/unicore/BidiMirroring.txt
+ * 529dc5d0f6386d52f2f56e004bbfab48ce2d587eea9d38ba546c4052491bd820 lib/unicore/Blocks.txt
+ * cdd49e55eae3bbf1f0a3f6580c974a0263cb86a6a08daa10fbf705b4808a56f7 lib/unicore/CaseFolding.txt
+ * 3b019c0a33c3140cbc920c078f4f9af2680ba4f71869c8d4de5190667c70b6a3 lib/unicore/CompositionExclusions.txt
+ * 7570877e0fa197c45338f7c41a02636da4e14c8dba6a3611a01cd30bf329d5ca lib/unicore/DAge.txt
+ * d367290bc0867e6b484c68370530bdd1a08b6b32404601b8c7accaf83e05628d lib/unicore/DCoreProperties.txt
+ * d5687a48c95c7d6e1ec59cb29c0f2e8b052018eb069a4371b7368d0561e12a29 lib/unicore/DNormalizationProps.txt
+ * 743e7bc435c04ab1a8459710b1c3cad56eedced5b806b4659b6e69b85d0adf2a lib/unicore/EastAsianWidth.txt
+ * f2e04bae8c856fad3a16353a99d4cc2de6c72770260379f5e4974a97548aad2a lib/unicore/EquivalentUnifiedIdeograph.txt
+ * 9a3ab36d36a22bdb84de7a17b17e9b9c242134f0080f0a8b4b28d209465a8fc8 lib/unicore/HangulSyllableType.txt
+ * 790bc9595795c0e0a3860a21a7f97157a134b61a4fc4ab03c7d315d07c9a6eb7 lib/unicore/IdStatus.txt
+ * 71d3ed8f15cd5d8cd00cdebe62015ff26356462774b261b4a2b83d3bf46b1639 lib/unicore/IdType.txt
+ * 0ce56c1294da405c0a0a0071582ac839fd229bbf97bdd260462ee571309d4ec4 lib/unicore/IndicPositionalCategory.txt
+ * ffae561a51b47ddbbe267fdd8505ac3776b85b2932268809127acee84200b573 lib/unicore/IndicSyllabicCategory.txt
+ * 14733bcb6731ae0c07485bf59a41cb3db08785a50bd2b46b836b4341eab7ee46 lib/unicore/Jamo.txt
+ * 012bca868e2c4e59a5a10a7546baf0c6fb1b2ef458c277f054915c8a49d292bf lib/unicore/LineBreak.txt
+ * 3e39509e8fae3e5d50ba73759d0b97194501d14a9c63107a6372a46b38be18e8 lib/unicore/NameAliases.txt
+ * 1d5202155f14841973aa540b1625f4befbde185ac77ce5aceaaaa0501a68bd66 lib/unicore/NamedSequences.txt
+ * fb9ac8cc154a80cad6caac9897af55a4e75176af6f4e2bb6edc2bf8b1d57f326 lib/unicore/NormTest.txt
+ * e05c0a2811d113dae4abd832884199a3ea8d187ee1b872d8240a788a96540bfd lib/unicore/PropList.txt
+ * 13a7666843abea5c6b7eb8c057c57ab9bb2ba96cfc936e204224dd67d71cafad lib/unicore/PropValueAliases.txt
+ * e4935149af407fa455901832b710bccb63d2453e46d09190e234d019bcfbba45 lib/unicore/PropertyAliases.txt
+ * 7e07313d9d0bee42220c476b64485995130ae30917bbcf7780b602d677d7e33f lib/unicore/ScriptExtensions.txt
+ * cca85d830f46aece2e7c1459ef1249993dca8f2e46d51e869255be140d7ea4b0 lib/unicore/Scripts.txt
+ * 78b29c64b5840d25c11a9f31b665ee551b8a499eca6c70d770fcad7dd710f494 lib/unicore/SpecialCasing.txt
+ * 806e9aed65037197f1ec85e12be6e8cd870fc5608b4de0fffd990f689f376a73 lib/unicore/UnicodeData.txt
+ * ca6d332f485a6f5f452b29b4a74146af0f2c17b7577aa4c821d597210f70611a lib/unicore/VerticalOrientation.txt
+ * 0d2080d0def294a4b7660801cc03ddfe5866ff300c789c2cc1b50fd7802b2d97 lib/unicore/auxiliary/GCBTest.txt
+ * 5a0f8748575432f8ff95e1dd5bfaa27bda1a844809e17d6939ee912bba6568a1 lib/unicore/auxiliary/GraphemeBreakProperty.txt
+ * 371bde4052aa593b108684ae292d8ea2dbb93c19990e0cdf416fa7239557aac3 lib/unicore/auxiliary/LBTest.txt
+ * f62279d8fd10935ba0cf0d8417a1dcbe7ab0d4e62f59c17e02cbe40f580c4162 lib/unicore/auxiliary/SBTest.txt
+ * 61e4ba975b0a5bc1a76ee931b94914395d7289ef624e3c0d4d6b9460ee387bea lib/unicore/auxiliary/SentenceBreakProperty.txt
+ * 2a676130c71194245e7c74a837e58330f202600d8ddcf4518129dd476f26e18e lib/unicore/auxiliary/WBTest.txt
+ * 5188a56e91593467c2e912601ebc78750e6adc9b04541b8c5becb5441e388ce2 lib/unicore/auxiliary/WordBreakProperty.txt
+ * 29071dba22c72c27783a73016afb8ffaeb025866740791f9c2d0b55cc45a3470 lib/unicore/emoji/emoji.txt
+ * 4841f2090c2dbc592d3ce43bb74c2191b3da50fb9a0d00274f1448c202851b02 lib/unicore/extracted/DBidiClass.txt
+ * f10a35451429137f7348825f22d624b6390c526ead3d8e756d2af9e5ed5b2b67 lib/unicore/extracted/DBinaryProperties.txt
+ * ca54f6360cd288ad92113415bf1f77749015abe11cbd6798d21f7fa81f04205d lib/unicore/extracted/DCombiningClass.txt
+ * db059ce45e3cec49bfda56e262fa658b3a5561b1648de266c818d2a08a85b78a lib/unicore/extracted/DDecompositionType.txt
+ * d62e6950f086e53f47c593a38342621f8838f48c49a1de070cf83d3959bd1688 lib/unicore/extracted/DEastAsianWidth.txt
+ * fe29a45c0882500e591140aaa5c4f5067e6a5d746806148af34400c48b9c06f9 lib/unicore/extracted/DGeneralCategory.txt
+ * e13ca1344b16023aa38c6ada39f9658536fc6bb7c3c24d579f0bc316a4f4f1e0 lib/unicore/extracted/DJoinGroup.txt
+ * c4870b11e2b8b7d0eb70b99ce85608e5c28a399efa316cca97238a58ae160e5e lib/unicore/extracted/DJoinType.txt
+ * 3f4f32ed2a577344a508114527e721d7a8b633d32f38945d47fe0c743650c585 lib/unicore/extracted/DLineBreak.txt
+ * 710abf2d581ac9c57f244c0834f9d9969d9781e0396adccd330eaae658ac7d6b lib/unicore/extracted/DNumType.txt
+ * 6bd30f385f3baf3ab5d5308c111a81de87bea5f494ba0ba69e8ab45263b8c34d lib/unicore/extracted/DNumValues.txt
+ * f7265069b38ba9a0675a18600e241b1ec6fc8c55fd806fe4c13bc5d8cb0dc508 lib/unicore/mktables
+ * 55d90fdc3f902e5c0b16b3378f9eaa36e970a1c09723c33de7d47d0370044012 lib/unicore/version
+ * 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl
+ * acc94e4afc339fe2cf2ae74d6e1cbcf2c396328d78e56236ad314eadbfc84125 regen/regcharclass.pl
* b2f896452d2b30da3e04800f478c60c1fd0b03d6b668689b020f1e3cf1f1cdd9 regen/regcharclass_multi_char_folds.pl
- * ex: set ro: */
+ * ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/regcomp.h b/Master/tlpkg/tlperl/lib/CORE/regcomp.h
index c46451fceae..31c91e6a68e 100644
--- a/Master/tlpkg/tlperl/lib/CORE/regcomp.h
+++ b/Master/tlpkg/tlperl/lib/CORE/regcomp.h
@@ -10,8 +10,65 @@
#if ! defined(PERL_REGCOMP_H_) && ( defined(PERL_CORE) \
|| defined(PERL_EXT_RE_BUILD))
+
#define PERL_REGCOMP_H_
+#ifndef RE_PESSIMISTIC_PARENS
+/* Define this to 1 if you want to enable a really aggressive and
+ * inefficient paren cleanup during backtracking which should ensure
+ * correctness. Doing so should fix any bugs related to backreferences,
+ * at the cost of saving and restoring paren state far more than we
+ * necessarily must.
+ *
+ * When it is set to 0 we try to optimize away unnecessary save/restore
+ * operations which could potentially introduce bugs. We should pass our
+ * test suite with this as 0, but setting it to 1 might fix cases we do
+ * not currently test for. If setting this to 1 does fix a bug, then
+ * review the code related to storing and restoring paren state.
+ *
+ * See comment for VOLATILE_REF below for more details of a
+ * related case.
+ */
+#define RE_PESSIMISTIC_PARENS 0
+#endif
+
+/* a VOLATILE_REF is a ref which is inside of a capturing group and it
+ * refers to the capturing group it is inside of or to a following capture
+ * group which might be affected by what this capture group matches, and
+ * thus the ref requires additional backtracking support. For example:
+ *
+ * "xa=xaaa" =~ /^(xa|=?\1a){2}\z/
+ *
+ * should not match. In older perls the matching process would go like this:
+ *
+ * Iter 1: "xa" matches in capture group.
+ * Iter 2: "xa" does not match, goes to next alternation.
+ * "=" matches in =?
+ * Bifurcates here (= might not match)
+ * "xa" matches via \1 from previous iteration
+ * "a" matches via "a" at end of second alternation
+ * # at this point $1 is "=xaa"
+ * \z does not match -> backtracks.
+ * Backtracks to Iter 2 "=?" Bifurcation point where we have NOT matched "="
+ * "=xaa" matches via \1 (as $1 has not been reset)
+ * "a" matches via "a" at end of second alternation
+ * "\z" does match. -> Pattern matches overall.
+ *
+ * What should happen and now does happen instead is:
+ *
+ * Backtracks to Iter 2 "=?" Bifurcation point where we have NOT matched "=",
+ * \1 does not match as it is "xa" (as $1 was reset when backtracked)
+ * and the current character in the string is an "="
+ *
+ * The fact that \1 in this case is marked as a VOLATILE_REF is what ensures
+ * that we reset the capture buffer properly.
+ *
+ * See 59db194299c94c6707095797c3df0e2f67ff82b2
+ * and 38508ce8fc3a1bd12a3bb65e9d4ceb9b396a18db
+ * for more details.
+ */
+#define VOLATILE_REF 1
+
#include "regcharclass.h"
/* Convert branch sequences to more efficient trie ops? */
@@ -26,11 +83,6 @@
/* Not for production use: */
#define PERL_ENABLE_EXPERIMENTAL_REGEX_OPTIMISATIONS 0
-/* Activate offsets code - set to if 1 to enable */
-#ifdef DEBUGGING
-#define RE_TRACK_PATTERN_OFFSETS
-#endif
-
/*
* Structure for regexp "program". This is essentially a linear encoding
* of a nondeterministic finite-state machine (aka syntax charts or
@@ -65,30 +117,28 @@
/* This is the stuff that used to live in regexp.h that was truly
private to the engine itself. It now lives here. */
- typedef struct regexp_internal {
- union {
- U32 *offsets; /* offset annotations 20001228 MJD
- data about mapping the program to the
- string -
- offsets[0] is proglen when this is used
- */
- U32 proglen;
- } u;
-
+typedef struct regexp_internal {
regnode *regstclass; /* Optional startclass as identified or constructed
by the optimiser */
struct reg_data *data; /* Additional miscellaneous data used by the program.
Used to make it easier to clone and free arbitrary
data that the regops need. Often the ARG field of
- a regop is an index into this structure */
+ a regop is an index into this structure. NOTE the
+ 0th element of this structure is NEVER used and is
+ strictly reserved for internal purposes. */
struct reg_code_blocks *code_blocks;/* positions of literal (?{}) */
- int name_list_idx; /* Optional data index of an array of paren names */
+ U32 proglen; /* size of the compiled program in regnodes */
+ U32 name_list_idx; /* Optional data index of an array of paren names,
+ only valid when RXp_PAREN_NAMES(prog) is true,
+ 0 means "no value" like any other index into the
+ data array.*/
regnode program[1]; /* Unwarranted chumminess with compiler. */
} regexp_internal;
#define RXi_SET(x,y) (x)->pprivate = (void*)(y)
#define RXi_GET(x) ((regexp_internal *)((x)->pprivate))
#define RXi_GET_DECL(r,ri) regexp_internal *ri = RXi_GET(r)
+#define RXi_GET_DECL_NULL(r,ri) regexp_internal *ri = (r) ? RXi_GET(r) : NULL
/*
* Flags stored in regexp->intflags
* These are used only internally to the regexp engine
@@ -114,72 +164,166 @@
#define PREGf_ANCH_SBOL 0x00000800
#define PREGf_ANCH_GPOS 0x00001000
#define PREGf_RECURSE_SEEN 0x00002000
+#define PREGf_PESSIMIZE_SEEN 0x00004000
#define PREGf_ANCH \
( PREGf_ANCH_SBOL | PREGf_ANCH_GPOS | PREGf_ANCH_MBOL )
/* this is where the old regcomp.h started */
+
+/* Define the various regnode structures. These all should be a multiple
+ * of 32 bits large, and they should by and large correspond with each other
+ * in terms of naming, etc. Things can and will break in subtle ways if you
+ * change things without care. If you look at regexp.h you will see it
+ * contains this:
+ *
+ * union regnode_head {
+ * struct {
+ * union {
+ * U8 flags;
+ * U8 str_len_u8;
+ * U8 first_byte;
+ * } u_8;
+ * U8 type;
+ * U16 next_off;
+ * } data;
+ * U32 data_u32;
+ * };
+ *
+ * struct regnode {
+ * union regnode_head head;
+ * };
+ *
+ * Which really is a complicated and alignment friendly version of
+ *
+ * struct {
+ * U8 flags;
+ * U8 type;
+ * U16 next_off;
+ * };
+ *
+ * This structure is the base unit of elements in the regexp program.
+ * When we increment our way through the program we increment by the
+ * size of this structure (32 bits), and in all cases where regnode
+ * sizing is considered it is in units of this structure. All regnodes
+ * have a union regnode_head as their first parameter.
+ *
+ * This implies that no regnode style structure should contain 64 bit
+ * aligned members. Since the base regnode is 32 bits any member might
+ * not be 64 bit aligned no matter how you might try to pad out the
+ * struct itself (the regnode_ssc is special in this regard as it is
+ * never used in a program directly). If you want to store 64 bit
+ * members you need to store them specially. The struct regnode_p and the
+ * ARGp() and ARGp_SET() macros and related inline functions provide an example
+ * solution. Note they deal with a slightly more complicated problem than simple
+ * alignment, as pointers may be 32 bits or 64 bits depending on platform,
+ * but they illustrate the pattern to follow if you want to put a 64 bit value
+ * into a regnode.
+
+ * NOTE: Ideally we do not put pointers into the regnodes in a program. Instead
+ * we put them in the "data" part of the regexp structure and store the index into
+ * the data in the pointers in the regnode. This allows the pointer to be handled
+ * properly during clone/free operations (eg refcount bookkeeping). See S_add_data(),
+ * Perl_regdupe_internal(), Perl_regfree_internal() in regcomp.c for how the data
+ * array can be used, the letters 'arsSu' all refer to different types of SV that
+ * we already have support for in the data array.
+ */
+
+union regnode_arg {
+ I32 i32;
+ U32 u32;
+ struct {
+ U16 u16a;
+ U16 u16b;
+ } hi_lo;
+};
+
+
struct regnode_string {
- U8 str_len;
- U8 type;
- U16 next_off;
+ union regnode_head head;
char string[1];
};
struct regnode_lstring { /* Constructed this way to keep the string aligned. */
- U8 flags;
- U8 type;
- U16 next_off;
- U32 str_len; /* Only 18 bits allowed before would overflow 'next_off' */
+ union regnode_head head;
+ U32 str_len_u32; /* Only 18 bits allowed before would overflow 'next_off' */
char string[1];
};
struct regnode_anyofhs { /* Constructed this way to keep the string aligned. */
- U8 str_len;
- U8 type;
- U16 next_off;
- U32 arg1; /* set by set_ANYOF_arg() */
+ union regnode_head head;
+ union regnode_arg arg1;
char string[1];
};
-/* Argument bearing node - workhorse,
- arg1 is often for the data field */
+/* Argument bearing node - workhorse, ARG1u() is often used for the data field
+ * Can store either a signed 32 bit value via ARG1i() or unsigned 32 bit value
+ * via ARG1u(), or two unsigned 16 bit values via ARG1a() or ARG1b()
+ */
struct regnode_1 {
- U8 flags;
- U8 type;
- U16 next_off;
- U32 arg1;
+ union regnode_head head;
+ union regnode_arg arg1;
};
/* Node whose argument is 'SV *'. This needs to be used very carefully in
- * situations where pointers won't become invalid because of, say re-mallocs */
+ * situations where pointers won't become invalid because of, say re-mallocs.
+ *
+ * Note that this regnode type is problematic and should not be used or copied
+ * and will be removed in the future. Pointers should be stored in the data[]
+ * array and an index into the data array stored in the regnode, which allows the
+ * pointers to be handled properly during clone/free operations on the regexp
+ * data structure. As a byproduct it also saves space, often we use a 16 bit
+ * member to store indexes into the data[] array.
+ *
+ * Also note that the weird storage here is because regnodes are 32 bit aligned,
+ * which means we cannot have a 64 bit aligned member. To make things more annoying
+ * the size of a pointer may vary by platform. Thus we use a character array, and
+ * then use inline functions to copy the data in or out.
+ * */
struct regnode_p {
- U8 flags;
- U8 type;
- U16 next_off;
- SV * arg1;
+ union regnode_head head;
+ char arg1_sv_ptr_bytes[sizeof(SV *)];
};
-/* Similar to a regnode_1 but with an extra signed argument */
-struct regnode_2L {
- U8 flags;
- U8 type;
- U16 next_off;
- U32 arg1;
- I32 arg2;
+/* "Two Node" - similar to a regnode_1 but with space for an extra 32
+ * bit value, or two 16 bit valus. The first fields must match regnode_1.
+ * Extra field can be accessed as (U32)ARG2u() (I32)ARG2i() or (U16)ARG2a()
+ * and (U16)ARG2b() */
+struct regnode_2 {
+ union regnode_head head;
+ union regnode_arg arg1;
+ union regnode_arg arg2;
};
-/* 'Two field' -- Two 16 bit unsigned args */
-struct regnode_2 {
- U8 flags;
- U8 type;
- U16 next_off;
- U16 arg1;
- U16 arg2;
+/* "Three Node" - similar to a regnode_2 but with space for an additional
+ * 32 bit value, or two 16 bit values. The first fields must match regnode_2.
+ * The extra field can be accessed as (U32)ARG3u() (I32)ARG3i() or (U16)ARG3a()
+ * and (U16)ARG3b().
+ * Currently used for the CURLY style regops used to represent quantifers,
+ * storing the min and of the quantifier via ARG1i() and ARG2i(), along with
+ * ARG3a() and ARG3b() which are used to store information about the number of
+ * parens before and inside the quantified expression. */
+struct regnode_3 {
+ union regnode_head head;
+ union regnode_arg arg1;
+ union regnode_arg arg2;
+ union regnode_arg arg3;
};
-#define ANYOF_BITMAP_SIZE (NUM_ANYOF_CODE_POINTS / 8) /* 8 bits/Byte */
+#define REGNODE_BBM_BITMAP_LEN \
+ /* 6 info bits requires 64 bits; 5 => 32 */ \
+ ((1 << (UTF_CONTINUATION_BYTE_INFO_BITS)) / CHARBITS)
+
+/* Used for matching any two-byte UTF-8 character whose start byte is known.
+ * The array is a bitmap capable of representing any possible continuation
+ * byte. */
+struct regnode_bbm {
+ union regnode_head head;
+ U8 bitmap[REGNODE_BBM_BITMAP_LEN];
+};
+
+#define ANYOF_BITMAP_SIZE (NUM_ANYOF_CODE_POINTS / CHARBITS)
/* Note that these form structs which are supersets of the next smaller one, by
* appending fields. Alignment problems can occur if one of those optional
@@ -191,40 +335,38 @@ struct regnode_2 {
* the code that inserts and deletes regnodes. The basic single-argument
* regnode has a U32, which is what reganode() allocates as a unit. Therefore
* no field can require stricter alignment than U32. */
-
+
/* also used by trie */
struct regnode_charclass {
- U8 flags;
- U8 type;
- U16 next_off;
- U32 arg1; /* set by set_ANYOF_arg() */
+ union regnode_head head;
+ union regnode_arg arg1;
char bitmap[ANYOF_BITMAP_SIZE]; /* only compile-time */
};
/* has runtime (locale) \d, \w, ..., [:posix:] classes */
struct regnode_charclass_posixl {
- U8 flags; /* ANYOF_MATCHES_POSIXL bit must go here */
- U8 type;
- U16 next_off;
- U32 arg1;
+ union regnode_head head;
+ union regnode_arg arg1;
char bitmap[ANYOF_BITMAP_SIZE]; /* both compile-time ... */
U32 classflags; /* and run-time */
};
/* A synthetic start class (SSC); is a regnode_charclass_posixl_fold, plus an
- * extra SV*, used only during its construction and which is not used by
- * regexec.c. Note that the 'next_off' field is unused, as the SSC stands
- * alone, so there is never a next node. Also, there is no alignment issue,
- * because these are declared or allocated as a complete unit so the compiler
- * takes care of alignment. This is unlike the other regnodes which are
- * allocated in terms of multiples of a single-argument regnode. SSC nodes can
- * have a pointer field because there is no alignment issue, and because it is
- * set to NULL after construction, before any cloning of the pattern */
+ * extra SV*, used only during regex construction and which is not used by the
+ * main machinery in regexec.c and which does not get embedded in the final compiled
+ * regex program.
+ *
+ * Because it does not get embedded it does not have to comply with the alignment
+ * and sizing constraints required for a normal regnode structure: it MAY contain
+ * pointers or members of whatever size needed and the compiler will do the right
+ * thing. (Every other regnode type is 32 bit aligned.)
+ *
+ * Note that the 'next_off' field is unused, as the SSC stands alone, so there is
+ * never a next node.
+ */
struct regnode_ssc {
- U8 flags; /* ANYOF_MATCHES_POSIXL bit must go here */
- U8 type;
- U16 next_off;
- U32 arg1;
+ union regnode_head head;
+ union regnode_arg arg1;
char bitmap[ANYOF_BITMAP_SIZE]; /* both compile-time ... */
U32 classflags; /* ... and run-time */
@@ -241,31 +383,34 @@ struct regnode_ssc {
* to 12 regnode units on 32-bit systems, (hence the minimum this can be (if
* not 0) is 11 there. Even if things get tightly packed on a 64-bit system,
* it still would be more than 1. */
-#define set_ANYOF_SYNTHETIC(n) STMT_START{ OP(n) = ANYOF; \
- NEXT_OFF(n) = 1; \
- } STMT_END
-#define is_ANYOF_SYNTHETIC(n) (PL_regkind[OP(n)] == ANYOF && NEXT_OFF(n) == 1)
+#define set_ANYOF_SYNTHETIC(n) \
+ STMT_START{ \
+ OP(n) = ANYOF; \
+ NEXT_OFF(n) = 1; \
+ } STMT_END
+
+#define is_ANYOF_SYNTHETIC(n) (REGNODE_TYPE(OP(n)) == ANYOF && NEXT_OFF(n) == 1)
/* XXX fix this description.
Impose a limit of REG_INFTY on various pattern matching operations
to limit stack growth and to avoid "infinite" recursions.
*/
-/* The default size for REG_INFTY is U16_MAX, which is the same as
- USHORT_MAX (see perl.h). Unfortunately U16 isn't necessarily 16 bits
- (see handy.h). On the Cray C90, sizeof(short)==4 and hence U16_MAX is
- ((1<<32)-1), while on the Cray T90, sizeof(short)==8 and U16_MAX is
- ((1<<64)-1). To limit stack growth to reasonable sizes, supply a
+/* The default size for REG_INFTY is I32_MAX, which is the same as UINT_MAX
+ (see perl.h). Unfortunately I32 isn't necessarily 32 bits (see handy.h).
+ On the Cray C90, or Cray T90, I32_MAX is considerably larger than it
+ might be elsewhere. To limit stack growth to reasonable sizes, supply a
smaller default.
--Andy Dougherty 11 June 1998
+ --Amended by Yves Orton 15 Jan 2023
*/
-#if SHORTSIZE > 2
+#if INTSIZE > 4
# ifndef REG_INFTY
-# define REG_INFTY nBIT_UMAX(16)
+# define REG_INFTY nBIT_IMAX(32)
# endif
#endif
#ifndef REG_INFTY
-# define REG_INFTY U16_MAX
+# define REG_INFTY I32_MAX
#endif
#define ARG_VALUE(arg) (arg)
@@ -275,23 +420,48 @@ struct regnode_ssc {
#undef ARG1
#undef ARG2
-#define ARG(p) ARG_VALUE(ARG_LOC(p))
-#define ARGp(p) ARG_VALUE(ARGp_LOC(p))
-#define ARG1(p) ARG_VALUE(ARG1_LOC(p))
-#define ARG2(p) ARG_VALUE(ARG2_LOC(p))
-#define ARG2L(p) ARG_VALUE(ARG2L_LOC(p))
+/* convention: each arg is is 32 bits, with the "u" suffix
+ * being unsigned 32 bits, the "i" suffix being signed 32 bits,
+ * and the "a" and "b" suffixes being unsigned 16 bit fields.
+ *
+ * We provide all 4 macros for each case for consistency, even
+ * though they arent all used.
+ */
-#define ARG_SET(p, val) ARG__SET(ARG_LOC(p), (val))
-#define ARGp_SET(p, val) ARG__SET(ARGp_LOC(p), (val))
-#define ARG1_SET(p, val) ARG__SET(ARG1_LOC(p), (val))
-#define ARG2_SET(p, val) ARG__SET(ARG2_LOC(p), (val))
-#define ARG2L_SET(p, val) ARG__SET(ARG2L_LOC(p), (val))
+#define ARG1u(p) ARG_VALUE(ARG1u_LOC(p))
+#define ARG1i(p) ARG_VALUE(ARG1i_LOC(p))
+#define ARG1a(p) ARG_VALUE(ARG1a_LOC(p))
+#define ARG1b(p) ARG_VALUE(ARG1b_LOC(p))
-#undef NEXT_OFF
-#undef NODE_ALIGN
+#define ARG2u(p) ARG_VALUE(ARG2u_LOC(p))
+#define ARG2i(p) ARG_VALUE(ARG2i_LOC(p))
+#define ARG2a(p) ARG_VALUE(ARG2a_LOC(p))
+#define ARG2b(p) ARG_VALUE(ARG2b_LOC(p))
+
+#define ARG3u(p) ARG_VALUE(ARG3u_LOC(p))
+#define ARG3i(p) ARG_VALUE(ARG3i_LOC(p))
+#define ARG3a(p) ARG_VALUE(ARG3a_LOC(p))
+#define ARG3b(p) ARG_VALUE(ARG3b_LOC(p))
+
+#define ARGp(p) ARGp_VALUE_inline(p)
+
+#define ARG1u_SET(p, val) ARG__SET(ARG1u_LOC(p), (val))
+#define ARG1i_SET(p, val) ARG__SET(ARG1i_LOC(p), (val))
+#define ARG1a_SET(p, val) ARG__SET(ARG1a_LOC(p), (val))
+#define ARG1b_SET(p, val) ARG__SET(ARG1b_LOC(p), (val))
+
+#define ARG2u_SET(p, val) ARG__SET(ARG2u_LOC(p), (val))
+#define ARG2i_SET(p, val) ARG__SET(ARG2i_LOC(p), (val))
+#define ARG2a_SET(p, val) ARG__SET(ARG2a_LOC(p), (val))
+#define ARG2b_SET(p, val) ARG__SET(ARG2b_LOC(p), (val))
+
+#define ARG3u_SET(p, val) ARG__SET(ARG3u_LOC(p), (val))
+#define ARG3i_SET(p, val) ARG__SET(ARG3i_LOC(p), (val))
+#define ARG3a_SET(p, val) ARG__SET(ARG3a_LOC(p), (val))
+#define ARG3b_SET(p, val) ARG__SET(ARG3b_LOC(p), (val))
+
+#define ARGp_SET(p, val) ARGp_SET_inline((p),(val))
-#define NEXT_OFF(p) ((p)->next_off)
-#define NODE_ALIGN(node)
/* the following define was set to 0xde in 075abff3
* as part of some linting logic. I have set it to 0
* as otherwise in every place where we /might/ set flags
@@ -301,23 +471,32 @@ struct regnode_ssc {
* is changed from 0 then at the very least make sure
* that SBOL for /^/ sets the flags to 0 explicitly.
* -- Yves */
-#define NODE_ALIGN_FILL(node) ((node)->flags = 0)
+#define NODE_ALIGN(node)
#define SIZE_ALIGN NODE_ALIGN
#undef OP
#undef OPERAND
#undef STRING
+#undef NEXT_OFF
+#undef NODE_ALIGN
-#define OP(p) ((p)->type)
-#define FLAGS(p) ((p)->flags) /* Caution: Doesn't apply to all \
+#define NEXT_OFF(p) ((p)->head.data.next_off)
+#define OP(p) ((p)->head.data.type)
+#define STR_LEN_U8(p) ((p)->head.data.u_8.str_len_u8)
+#define FIRST_BYTE(p) ((p)->head.data.u_8.first_byte)
+#define FLAGS(p) ((p)->head.data.u_8.flags) /* Caution: Doesn't apply to all \
regnode types. For some, it's the \
character set of the regnode */
-#define STR_LENs(p) (__ASSERT_(OP(p) != LEXACT && OP(p) != LEXACT_REQ8) \
- ((struct regnode_string *)p)->str_len)
-#define STRINGs(p) (__ASSERT_(OP(p) != LEXACT && OP(p) != LEXACT_REQ8) \
+#define STR_LENs(p) (__ASSERT_(OP(p) != LEXACT && OP(p) != LEXACT_REQ8) \
+ STR_LEN_U8((struct regnode_string *)p))
+#define STRINGs(p) (__ASSERT_(OP(p) != LEXACT && OP(p) != LEXACT_REQ8) \
((struct regnode_string *)p)->string)
-#define OPERANDs(p) STRINGs(p)
+#define OPERANDs(p) STRINGs(p)
+
+#define PARNO(p) ARG1u(p) /* APPLIES for OPEN and CLOSE only */
+
+#define NODE_ALIGN_FILL(node) (FLAGS(node) = 0)
/* Long strings. Currently limited to length 18 bits, which handles a 262000
* byte string. The limiting factor is the 16 bit 'next_off' field, which
@@ -331,55 +510,158 @@ struct regnode_ssc {
* node to be an ARG2L, using the second 32 bit field for the length, and not
* using the flags nor next_off fields at all. One could have an llstring node
* and even an lllstring type. */
-#define STR_LENl(p) (__ASSERT_(OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \
- (((struct regnode_lstring *)p)->str_len))
-#define STRINGl(p) (__ASSERT_(OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \
+#define STR_LENl(p) (__ASSERT_(OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \
+ (((struct regnode_lstring *)p)->str_len_u32))
+#define STRINGl(p) (__ASSERT_(OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \
(((struct regnode_lstring *)p)->string))
-#define OPERANDl(p) STRINGl(p)
+#define OPERANDl(p) STRINGl(p)
-#define STR_LEN(p) ((OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \
+#define STR_LEN(p) ((OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \
? STR_LENl(p) : STR_LENs(p))
-#define STRING(p) ((OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \
+#define STRING(p) ((OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \
? STRINGl(p) : STRINGs(p))
-#define OPERAND(p) STRING(p)
+#define OPERAND(p) STRING(p)
/* The number of (smallest) regnode equivalents that a string of length l bytes
- * occupies */
+ * occupies - Used by the REGNODE_AFTER() macros and functions. */
#define STR_SZ(l) (((l) + sizeof(regnode) - 1) / sizeof(regnode))
-/* The number of (smallest) regnode equivalents that the EXACTISH node 'p'
- * occupies */
-#define NODE_SZ_STR(p) (STR_SZ(STR_LEN(p)) + 1 + regarglen[(p)->type])
-
#define setSTR_LEN(p,v) \
STMT_START{ \
if (OP(p) == LEXACT || OP(p) == LEXACT_REQ8) \
- ((struct regnode_lstring *)(p))->str_len = (v); \
+ ((struct regnode_lstring *)(p))->str_len_u32 = (v); \
else \
- ((struct regnode_string *)(p))->str_len = (v); \
+ STR_LEN_U8((struct regnode_string *)(p)) = (v); \
} STMT_END
#define ANYOFR_BASE_BITS 20
-#define ANYOFRbase(p) (ARG(p) & nBIT_MASK(ANYOFR_BASE_BITS))
-#define ANYOFRdelta(p) (ARG(p) >> ANYOFR_BASE_BITS)
+#define ANYOFRbase(p) (ARG1u(p) & nBIT_MASK(ANYOFR_BASE_BITS))
+#define ANYOFRdelta(p) (ARG1u(p) >> ANYOFR_BASE_BITS)
#undef NODE_ALIGN
#undef ARG_LOC
-#undef NEXTOPER
-#undef PREVOPER
-
-#define NODE_ALIGN(node)
-#define ARG_LOC(p) (((struct regnode_1 *)p)->arg1)
-#define ARGp_LOC(p) (((struct regnode_p *)p)->arg1)
-#define ARG1_LOC(p) (((struct regnode_2 *)p)->arg1)
-#define ARG2_LOC(p) (((struct regnode_2 *)p)->arg2)
-#define ARG2L_LOC(p) (((struct regnode_2L *)p)->arg2)
+#define NODE_ALIGN(node)
+#define ARGp_BYTES_LOC(p) (((struct regnode_p *)p)->arg1_sv_ptr_bytes)
+#define ARG1u_LOC(p) (((struct regnode_1 *)p)->arg1.u32)
+#define ARG1i_LOC(p) (((struct regnode_1 *)p)->arg1.i32)
+#define ARG1a_LOC(p) (((struct regnode_1 *)p)->arg1.hi_lo.u16a)
+#define ARG1b_LOC(p) (((struct regnode_1 *)p)->arg1.hi_lo.u16b)
+#define ARG2u_LOC(p) (((struct regnode_2 *)p)->arg2.u32)
+#define ARG2i_LOC(p) (((struct regnode_2 *)p)->arg2.i32)
+#define ARG2a_LOC(p) (((struct regnode_2 *)p)->arg2.hi_lo.u16a)
+#define ARG2b_LOC(p) (((struct regnode_2 *)p)->arg2.hi_lo.u16b)
+#define ARG3u_LOC(p) (((struct regnode_3 *)p)->arg3.u32)
+#define ARG3i_LOC(p) (((struct regnode_3 *)p)->arg3.i32)
+#define ARG3a_LOC(p) (((struct regnode_3 *)p)->arg3.hi_lo.u16a)
+#define ARG3b_LOC(p) (((struct regnode_3 *)p)->arg3.hi_lo.u16b)
+
+/* These should no longer be used directly in most cases. Please use
+ * the REGNODE_AFTER() macros instead. */
#define NODE_STEP_REGNODE 1 /* sizeof(regnode)/sizeof(regnode) */
-#define EXTRA_STEP_2ARGS EXTRA_SIZE(struct regnode_2)
-#define NEXTOPER(p) ((p) + NODE_STEP_REGNODE)
-#define PREVOPER(p) ((p) - NODE_STEP_REGNODE)
+/* Core macros for computing "the regnode after this one". See also
+ * Perl_regnode_after() in reginline.h
+ *
+ * At the struct level regnodes are a linked list, with each node pointing
+ * at the next (via offsets), usually via the C<next_off> field in the
+ * structure. Where there is a need for a node to have two children the
+ * immediate physical successor of the node in the compiled program is used
+ * to represent one of them. A good example is the BRANCH construct,
+ * consider the pattern C</head(?:[ab]foo|[cd]bar)tail/>
+ *
+ * 1: EXACT <head> (3)
+ * 3: BRANCH (8)
+ * 4: ANYOFR[ab] (6)
+ * 6: EXACT <foo> (14)
+ * 8: BRANCH (FAIL)
+ * 9: ANYOFR[cd] (11)
+ * 11: EXACT <bar> (14)
+ * 13: TAIL (14)
+ * 14: EXACT <tail> (16)
+ * 16: END (0)
+ *
+ * The numbers in parens at the end of each line show the "next_off" value
+ * for that regnode in the program. We can see that the C<next_off> of
+ * the first BRANCH node (#3) is the second BRANCH node (#8), and indicates
+ * where execution should go if the regnodes *following* the BRANCH node fail
+ * to accept the input string. Thus to find the "next BRANCH" we would do
+ * C<Perl_regnext()> and follow the C<next_off> pointer, and to find
+ * the "BRANCHes contents" we would use C<REGNODE_AFTER()>.
+ *
+ * Be aware that C<REGNODE_AFTER()> is not guaranteed to give a *useful*
+ * result once the regex peephole optimizer has run (it will be correct
+ * however!). By the time code in regexec.c executes various regnodes
+ * may have been optimized out of the C<next_off> chain. An example
+ * can be seen above, node 13 will never be reached during execution
+ * flow as it has been stitched out of the C<next_off> chain. Both 6 and
+ * 11 would have pointed at it during compilation, but it exists only to
+ * facilitate the construction of the BRANCH structure and is effectively
+ * a NOOP, and thus the optimizer adjusts the links so it is skipped
+ * from execution time flow. In regexec.c it is only safe to use
+ * REGNODE_AFTER() on specific node types.
+ *
+ * Conversely during compilation C<Perl_regnext()> may not work properly
+ * as the C<next_off> may not be known until "later", (such as in the
+ * case of BRANCH nodes) and thus in regcomp.c the REGNODE_AFTER() macro
+ * is used very heavily instead.
+ *
+ * There are several variants of the REGNODE_AFTER_xxx() macros which
+ * are intended for use in different situations depending on how
+ * confident the code is about what type of node it is trying to find a
+ * successor for.
+ *
+ * So for instance if you know you are dealing with a known node type of
+ * constant size then you should use REGNODE_AFTER_type(n,TYPE).
+ *
+ * If you have a regnode pointer and you know you are dealing with a
+ * regnode type of constant size and you have already extracted its
+ * opcode use: REGNODE_AFTER_opcode(n,OPCODE).
+ *
+ * If you have a regnode and you know it is variable size then you
+ * you can produce optimized code by using REGNODE_AFTER_varies(n).
+ *
+ * If you have a regnode pointer and nothing else use: REGNODE_AFTER(n)
+ * This is the safest option and wraps C<Perl_regnode_after()>. It
+ * should produce the correct result regardless of its argument. The
+ * other options only produce correct results under specific
+ * constraints.
+ */
+#define REGNODE_AFTER_PLUS(p,extra) ((p) + NODE_STEP_REGNODE + (extra))
+/* under DEBUGGING we check that all REGNODE_AFTER optimized macros did the
+ * same thing that Perl_regnode_after() would have done. Note that when
+ * not compiled under DEBUGGING the assert_() macro is empty. Thus we
+ * don't have to implement different versions for DEBUGGING and not DEBUGGING,
+ * and explains why all the macros use REGNODE_AFTER_PLUS_DEBUG() under the
+ * hood. */
+#define REGNODE_AFTER_PLUS_DEBUG(p,extra) \
+ (assert_(check_regnode_after(p,extra)) REGNODE_AFTER_PLUS((p),(extra)))
+
+/* find the regnode after this p by using the opcode we previously extracted
+ * with OP(p) */
+#define REGNODE_AFTER_opcode(p,op) REGNODE_AFTER_PLUS_DEBUG((p),REGNODE_ARG_LEN(op))
+
+/* find the regnode after this p by using the size of the struct associated with
+ * the opcode for p. use this when you *know* that p is pointer to a given type*/
+#define REGNODE_AFTER_type(p,t) REGNODE_AFTER_PLUS_DEBUG((p),EXTRA_SIZE(t))
+
+/* find the regnode after this p by using OP(p) to find the regnode type of p */
+#define REGNODE_AFTER_varies(p) regnode_after(p,TRUE)
+
+/* find the regnode after this p by using OP(p) to find the regnode type of p */
+#define REGNODE_AFTER(p) regnode_after(p,FALSE)
+
+
+/* REGNODE_BEFORE() is trickier to deal with in terms of validation, execution.
+ * All the places that use it assume that p will be one struct regnode large.
+ * So to validate it we do the math to go backwards and then validate that the
+ * type of regnode we landed on is actually one regnode large. In theory if
+ * things go wrong the opcode should be illegal or say the item should be larger
+ * than it is, etc. */
+#define REGNODE_BEFORE_BASE(p) ((p) - NODE_STEP_REGNODE)
+#define REGNODE_BEFORE_BASE_DEBUG(p) \
+ (assert_(check_regnode_after(REGNODE_BEFORE_BASE(p),0)) REGNODE_BEFORE_BASE(p))
+#define REGNODE_BEFORE(p) REGNODE_BEFORE_BASE_DEBUG(p)
#define FILL_NODE(offset, op) \
STMT_START { \
@@ -391,128 +673,177 @@ struct regnode_ssc {
FILL_NODE(offset, op); \
(offset)++; \
} STMT_END
-#define FILL_ADVANCE_NODE_ARG(offset, op, arg) \
+#define FILL_ADVANCE_NODE_ARG1u(offset, op, arg) \
STMT_START { \
- ARG_SET(REGNODE_p(offset), arg); \
+ ARG1u_SET(REGNODE_p(offset), arg); \
FILL_ADVANCE_NODE(offset, op); \
/* This is used generically for other operations \
* that have a longer argument */ \
- (offset) += regarglen[op]; \
+ (offset) += REGNODE_ARG_LEN(op); \
} STMT_END
-#define FILL_ADVANCE_NODE_ARGp(offset, op, arg) \
+#define FILL_ADVANCE_NODE_ARGp(offset, op, arg) \
STMT_START { \
- ARGp_SET(REGNODE_p(offset), arg); \
+ ARGp_SET(REGNODE_p(offset), arg); \
FILL_ADVANCE_NODE(offset, op); \
- (offset) += regarglen[op]; \
+ (offset) += REGNODE_ARG_LEN(op); \
} STMT_END
-#define FILL_ADVANCE_NODE_2L_ARG(offset, op, arg1, arg2) \
+#define FILL_ADVANCE_NODE_2ui_ARG(offset, op, arg1, arg2) \
STMT_START { \
- ARG_SET(REGNODE_p(offset), arg1); \
- ARG2L_SET(REGNODE_p(offset), arg2); \
+ ARG1u_SET(REGNODE_p(offset), arg1); \
+ ARG2i_SET(REGNODE_p(offset), arg2); \
FILL_ADVANCE_NODE(offset, op); \
(offset) += 2; \
} STMT_END
+/* define these after we define the normal macros, so we can use
+ * ARGp_BYTES_LOC(n) */
+
+static inline SV *
+ARGp_VALUE_inline(struct regnode *node) {
+ SV *ptr;
+ memcpy(&ptr, ARGp_BYTES_LOC(node), sizeof(ptr));
+
+ return ptr;
+}
+
+static inline void
+ARGp_SET_inline(struct regnode *node, SV *ptr) {
+ memcpy(ARGp_BYTES_LOC(node), &ptr, sizeof(ptr));
+}
+
#define REG_MAGIC 0234
-/* An ANYOF node is basically a bitmap with the index being a code point. If
- * the bit for that code point is 1, the code point matches; if 0, it doesn't
- * match (complemented if inverted). There is an additional mechanism to deal
- * with cases where the bitmap is insufficient in and of itself. This #define
- * indicates if the bitmap does fully represent what this ANYOF node can match.
- * The ARG is set to this special value (since 0, 1, ... are legal, but will
- * never reach this high). */
-#define ANYOF_ONLY_HAS_BITMAP ((U32) -1)
-
-/* When the bitmap isn't completely sufficient for handling the ANYOF node,
- * flags (in node->flags of the ANYOF node) get set to indicate this. These
- * are perennially in short supply. Beyond several cases where warnings need
- * to be raised under certain circumstances, currently, there are six cases
- * where the bitmap alone isn't sufficient. We could use six flags to
- * represent the 6 cases, but to save flags bits, we play some games. The
- * cases are:
+/* An ANYOF node matches a single code point based on specified criteria. It
+ * now comes in several styles, but originally it was just a 256 element
+ * bitmap, indexed by the code point (which was always just a byte). If the
+ * corresponding bit for a code point is 1, the code point matches; if 0, it
+ * doesn't match (complemented if inverted). This worked fine before Unicode
+ * existed, but making a bit map long enough to accommodate a bit for every
+ * possible Unicode code point is prohibitively large. Therefore it is made
+ * much much smaller, and an inversion list is created to handle code points
+ * not represented by the bitmap. (It is now possible to compile the bitmap to
+ * a larger size to avoid the slower inversion list lookup for however big the
+ * bitmap is set to, but this is rarely done). If the bitmap is sufficient to
+ * specify all possible matches (with nothing outside it matching), no
+ * inversion list is needed nor included, and the argument to the ANYOF node is
+ * set to the following: */
+
+#define ANYOF_MATCHES_ALL_OUTSIDE_BITMAP_VALUE U32_MAX
+#define ANYOF_MATCHES_ALL_OUTSIDE_BITMAP(node) \
+ (ARG1u(node) == ANYOF_MATCHES_ALL_OUTSIDE_BITMAP_VALUE)
+
+#define ANYOF_MATCHES_NONE_OUTSIDE_BITMAP_VALUE \
+ /* Assumes ALL is odd */ (ANYOF_MATCHES_ALL_OUTSIDE_BITMAP_VALUE - 1)
+#define ANYOF_MATCHES_NONE_OUTSIDE_BITMAP(node) \
+ (ARG1u(node) == ANYOF_MATCHES_NONE_OUTSIDE_BITMAP_VALUE)
+
+#define ANYOF_ONLY_HAS_BITMAP_MASK ANYOF_MATCHES_NONE_OUTSIDE_BITMAP_VALUE
+#define ANYOF_ONLY_HAS_BITMAP(node) \
+ ((ARG1u(node) & ANYOF_ONLY_HAS_BITMAP_MASK) == ANYOF_ONLY_HAS_BITMAP_MASK)
+
+#define ANYOF_HAS_AUX(node) (! ANYOF_ONLY_HAS_BITMAP(node))
+
+/* There are also ANYOFM nodes, used when the bit patterns representing the
+ * matched code points happen to be such that they can be checked by ANDing
+ * with a mask. The regex compiler looks for and silently optimizes to using
+ * this node type in the few cases where it works out. The eight octal digits
+ * form such a group. These nodes are simple and fast and no further
+ * discussion is needed here.
+ *
+ * And, there are ANYOFH-ish nodes which match only code points that aren't in
+ * the bitmap (the H stands for High). These are common for expressing
+ * Unicode properties concerning non-Latin scripts. They dispense with the
+ * bitmap altogether and don't need any of the flags discussed below.
+ *
+ * And, there are ANYOFR-ish nodes which match within a single range.
+ *
+ * When there is a need to specify what matches outside the bitmap, it is done
+ * by allocating an AV as part of the pattern's compiled form, and the argument
+ * to the node instead of being ANYOF_ONLY_HAS_BITMAP, points to that AV.
+ *
+ * (Actually, that is an oversimplification. The AV is placed into the
+ * pattern's struct reg_data, and what is stored in the node's argument field
+ * is its index into that struct. And the inversion list is just one element,
+ * the zeroth, of the AV.)
+ *
+ * There are certain situations where a single inversion list can't handle all
+ * the complexity. These are dealt with by having extra elements in the AV, by
+ * specifying flag bits in the ANYOF node, and/or special code. As an example,
+ * there are instances where what the ANYOF node matches is not completely
+ * known until runtime. In these cases, a flag is set, and the bitmap has a 1
+ * for the code points which are known at compile time to be 1, and a 0 for the
+ * ones that are known to be 0, or require runtime resolution. Some missing
+ * information can be found by merely seeing if the pattern is UTF-8 or not;
+ * other cases require looking at the extra elements in the AV.
+ *
+ * There are 5 cases where the bitmap is insufficient. These are specified by
+ * flags in the node's flags field. We could use five bits to represent the 5
+ * cases, but to save flags bits (which are perennially in short supply), we
+ * play some games. The cases are:
*
- * 1) The bitmap has a compiled-in very finite size. So something else needs
- * to be used to specify if a code point that is too large for the bitmap
- * actually matches. The mechanism currently is an inversion
- * list. ANYOF_ONLY_HAS_BITMAP, described above, being TRUE indicates
- * there are no matches of too-large code points. But if it is FALSE,
- * then almost certainly there are matches too large for the bitmap. (The
- * other cases, described below, either imply this one or are extremely
- * rare in practice.) So we can just assume that a too-large code point
- * will need something beyond the bitmap if ANYOF_ONLY_HAS_BITMAP is
- * FALSE, instead of having a separate flag for this.
- * 2) A subset of item 1) is if all possible code points outside the bitmap
- * match. This is a common occurrence when the class is complemented,
- * like /[^ij]/. Therefore a bit is reserved to indicate this,
- * rather than having an inversion list created,
- * ANYOF_MATCHES_ALL_ABOVE_BITMAP.
- * 3) Under /d rules, it can happen that code points that are in the upper
+ * 1) As already mentioned, if some code points outside the bitmap match, and
+ * some do not, an inversion list is specified to indicate which ones.
+ *
+ * 2) Under /d rules, it can happen that code points that are in the upper
* latin1 range (\x80-\xFF or their equivalents on EBCDIC platforms) match
* only if the runtime target string being matched against is UTF-8. For
- * example /[\w[:punct:]]/d. This happens only for posix classes (with a
- * couple of exceptions, like \d where it doesn't happen), and all such
- * ones also have above-bitmap matches. Thus, 3) implies 1) as well.
+ * example /[\w[:punct:]]/d. This happens only for certain posix classes,
+ * and all such ones also have above-bitmap matches.
+ *
* Note that /d rules are no longer encouraged; 'use 5.14' or higher
- * deselects them. But a flag is required so that they can be properly
- * handled. But it can be a shared flag: see 5) below.
- * 4) Also under /d rules, something like /[\Wfoo]/ will match everything in
+ * deselects them. But they are still supported, and a flag is required
+ * so that they can be properly handled. But it can be a shared flag: see
+ * 4) below.
+ *
+ * 3) Also under /d rules, something like /[\Wfoo]/ will match everything in
* the \x80-\xFF range, unless the string being matched against is UTF-8.
* An inversion list could be created for this case, but this is
* relatively common, and it turns out that it's all or nothing: if any
* one of these code points matches, they all do. Hence a single bit
* suffices. We use a shared flag that doesn't take up space by itself:
- * ANYOF_SHARED_d_MATCHES_ALL_NON_UTF8_NON_ASCII_non_d_WARN_SUPER. This
- * also implies 1), with one exception: [:^cntrl:].
- * 5) A user-defined \p{} property may not have been defined by the time the
+ * ANYOFD_NON_UTF8_MATCHES_ALL_NON_ASCII__shared. This also means there
+ * is an inversion list for the things that don't fit into the bitmap.
+ *
+ * 4) A user-defined \p{} property may not have been defined by the time the
* regex is compiled. In this case, we don't know until runtime what it
* will match, so we have to assume it could match anything, including
* code points that ordinarily would be in the bitmap. A flag bit is
- * necessary to indicate this , though it can be shared with the item 3)
- * flag, as that only occurs under /d, and this only occurs under non-d.
- * This case is quite uncommon in the field, and the /(?[ ...])/ construct
- * is a better way to accomplish what this feature does. This case also
- * implies 1).
- * ANYOF_SHARED_d_UPPER_LATIN1_UTF8_STRING_MATCHES_non_d_RUNTIME_USER_PROP
- * is the shared flag.
- * 6) /[foo]/il may have folds that are only valid if the runtime locale is a
- * UTF-8 one. These are quite rare, so it would be good to avoid the
- * expense of looking for them. But /l matching is slow anyway, and we've
- * traditionally not worried too much about its performance. And this
- * condition requires the ANYOFL_FOLD flag to be set, so testing for
- * that flag would be sufficient to rule out most cases of this. So it is
- * unclear if this should have a flag or not. But, this flag can be
- * shared with another, so it doesn't occupy extra space.
+ * necessary to indicate this, though we can use the
+ * ANYOF_HAS_EXTRA_RUNTIME_MATCHES flag, along with the node not being
+ * ANYOFD. The information required to construct the property is stored
+ * in the AV pointed to by the node's argument. This case is quite
+ * uncommon in the field, and the /(?[...])/ construct is a better way to
+ * accomplish what this feature does.
*
- * At the moment, there is one spare bit, but this could be increased by
- * various tricks:
- *
- * If just one more bit is needed, as of this writing it seems to khw that the
- * best choice would be to make ANYOF_MATCHES_ALL_ABOVE_BITMAP not a flag, but
- * something like
+ * 5) /[foo]/il may have folds that are only valid if the runtime locale is a
+ * UTF-8 one. The ANYOF_HAS_EXTRA_RUNTIME_MATCHES flag can also be used
+ * for these. The list is stored in a different element of the AV, so its
+ * existence differentiates this case from that of 4), along with the node
+ * being ANYOFL, with the ANYOFL_FOLD flag being set. There are a few
+ * additional folds valid only if the UTF-8 locale is a Turkic one which
+ * is tested for explicitly.
*
- * #define ANYOF_MATCHES_ALL_ABOVE_BITMAP ((U32) -2)
+ * Note that the user-defined property flag and the /il flag can affect whether
+ * an ASCII character matches in the bitmap or not.
*
- * and access it through the ARG like ANYOF_ONLY_HAS_BITMAP is. This flag is
- * used by all ANYOF node types, and it could be used to avoid calling the
- * handler function, as the macro REGINCLASS in regexec.c does now for other
- * cases.
+ * And this still isn't the end of the story. In some cases, warnings are
+ * supposed to be raised when matching certain categories of code points in the
+ * target string. Flags are set to indicate this. This adds up to a bunch of
+ * flags required, and we only have 8 available. That is why we share some.
+ * At the moment, there are two spare flag bits, but this could be increased by
+ * various tricks:
*
- * Another possibility is based on the fact that ANYOF_MATCHES_POSIXL is
- * redundant with the node type ANYOFPOSIXL. That flag could be removed, but
- * at the expense of extra code in regexec.c. The flag has been retained
- * because it allows us to see if we need to call reginsert, or just use the
- * bitmap in one test.
+ * ANYOF_MATCHES_POSIXL is redundant with the node type ANYOFPOSIXL. That flag
+ * could be removed, but at the expense of having to write extra code, which
+ * would take up space, and writing this turns out to be not hard, but not
+ * trivial.
*
* If this is done, an extension would be to make all ANYOFL nodes contain the
- * extra 32 bits that ANYOFPOSIXL ones do. The posix flags only occupy 30
- * bits, so the ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD flags
- * and ANYOFL_FOLD could be moved to that extra space, but it would mean extra
- * instructions, as there are currently places in the code that assume those
- * two bits are zero.
- *
- * All told, 5 bits could be available for other uses if all of the above were
- * done.
+ * extra 32 bits that ANYOFPOSIXL ones do, doubling each instance's size. The
+ * posix flags only occupy 30 bits, so the ANYOFL_FOLD and
+ * ANYOFL_UTF8_LOCALE_REQD bits could be moved to that extra space, but it
+ * would also mean extra instructions, as there are currently places in the
+ * code that assume those two bits are zero.
*
* Some flags are not used in synthetic start class (SSC) nodes, so could be
* shared should new flags be needed for SSCs, like SSC_MATCHES_EMPTY_STRING
@@ -538,48 +869,39 @@ struct regnode_ssc {
* then. Only set under /l; never in an SSC */
#define ANYOFL_FOLD 0x04
-/* Shared bit set only with ANYOFL and SSC nodes:
- * If ANYOFL_FOLD is set, this flag indicates there are potential matches
- * valid only if the locale is a UTF-8 one.
- * If ANYOFL_FOLD is NOT set, this flag means to warn if the runtime locale
- * isn't a UTF-8 one (and the generated node assumes a UTF-8 locale).
- * None of INVERT, POSIXL,
- * ANYOF_SHARED_d_UPPER_LATIN1_UTF8_STRING_MATCHES_non_d_RUNTIME_USER_PROP
- * can be set. */
-#define ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD 0x08
-
-/* Convenience macros for teasing apart the meanings when reading the above bit
- * */
-#define ANYOFL_SOME_FOLDS_ONLY_IN_UTF8_LOCALE(flags) \
- ((flags & ( ANYOFL_FOLD /* Both bits are set */ \
- |ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD)) \
- == ( ANYOFL_FOLD \
- |ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD))
-
-#define ANYOFL_UTF8_LOCALE_REQD(flags) \
- ((flags & ( ANYOFL_FOLD /* Only REQD bit is set */ \
- |ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD)) \
- == ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD)
+/* Warn if the runtime locale isn't a UTF-8 one (and the generated node assumes
+ * a UTF-8 locale. */
+#define ANYOFL_UTF8_LOCALE_REQD 0x08
/* Spare: Be sure to change ANYOF_FLAGS_ALL if this gets used 0x10 */
-/* If set, the node matches every code point NUM_ANYOF_CODE_POINTS and above.
- * Can be in an SSC */
-#define ANYOF_MATCHES_ALL_ABOVE_BITMAP 0x20
-
-/* Shared bit:
- * Under /d it means the ANYOFD node matches more things if the target
- * string is encoded in UTF-8; any such things will be non-ASCII,
- * characters that are < 256, and can be accessed via the inversion
- * list.
- * When not under /d, it means the ANYOF node contains a user-defined
- * property that wasn't yet defined at the time the regex was compiled,
- * and so must be looked up at runtime, by creating an inversion list.
- * (These uses are mutually exclusive because a user-defined property is
- * specified by \p{}, and \p{} implies /u which deselects /d). The long macro
- * name is to make sure that you are cautioned about its shared nature. Only
- * the non-/d meaning can be in an SSC */
-#define ANYOF_SHARED_d_UPPER_LATIN1_UTF8_STRING_MATCHES_non_d_RUNTIME_USER_PROP 0x40
+/* Spare: Be sure to change ANYOF_FLAGS_ALL if this gets used 0x20 */
+
+/* Shared bit that indicates that there are potential additional matches stored
+ * outside the bitmap, as pointed to by the AV given by the node's argument.
+ * The node type is used at runtime (in conjunction with this flag and other
+ * information available then) to decide if the flag should be acted upon.
+ * This extra information is needed because of at least one of the following
+ * three reasons.
+ * Under /d and the matched string is in UTF-8, it means the ANYOFD node
+ * matches more things than in the bitmap. Those things will be any
+ * code point too high for the bitmap, but crucially, any non-ASCII
+ * characters that match iff when using Unicode rules. These all are
+ * < 256.
+ *
+ * Under /l and ANYOFL_FOLD is set, this flag may indicate there are
+ * potential matches valid only if the locale is a UTF-8 one. If so,
+ * a list of them is stored in the AV.
+ *
+ * For any non-ANYOFD node, there may be a user-defined property that
+ * wasn't yet defined at the time the regex was compiled, and so must
+ * be looked up at runtime, The information required to do so will
+ * also be in the AV.
+ *
+ * Note that an ANYOFL node may contain both a user-defined property, and
+ * folds not always valid. The important thing is that there is an AV to
+ * look at. */
+#define ANYOF_HAS_EXTRA_RUNTIME_MATCHES 0x40
/* Shared bit:
* Under /d it means the ANYOFD node matches all non-ASCII Latin1
@@ -588,13 +910,16 @@ struct regnode_ssc {
* matching against an above-Unicode code point.
* (These uses are mutually exclusive because the warning requires a \p{}, and
* \p{} implies /u which deselects /d). An SSC node only has this bit set if
- * what is meant is the warning. The long macro name is to make sure that you
- * are cautioned about its shared nature */
-#define ANYOF_SHARED_d_MATCHES_ALL_NON_UTF8_NON_ASCII_non_d_WARN_SUPER 0x80
+ * what is meant is the warning. The names are to make sure that you are
+ * cautioned about its shared nature */
+#define ANYOFD_NON_UTF8_MATCHES_ALL_NON_ASCII__shared 0x80
+#define ANYOF_WARN_SUPER__shared 0x80
-#define ANYOF_FLAGS_ALL (0xff & ~0x10)
+#define ANYOF_FLAGS_ALL ((U8) ~(0x10|0x20))
-#define ANYOF_LOCALE_FLAGS (ANYOFL_FOLD | ANYOF_MATCHES_POSIXL)
+#define ANYOF_LOCALE_FLAGS ( ANYOFL_FOLD \
+ | ANYOF_MATCHES_POSIXL \
+ | ANYOFL_UTF8_LOCALE_REQD)
/* These are the flags that apply to both regular ANYOF nodes and synthetic
* start class nodes during construction of the SSC. During finalization of
@@ -605,48 +930,48 @@ struct regnode_ssc {
/* Should be synchronized with a table in regprop() */
/* 2n should be the normal one, paired with its complement at 2n+1 */
-#define ANYOF_ALPHA ((_CC_ALPHA) * 2)
+#define ANYOF_ALPHA ((CC_ALPHA_) * 2)
#define ANYOF_NALPHA ((ANYOF_ALPHA) + 1)
-#define ANYOF_ALPHANUMERIC ((_CC_ALPHANUMERIC) * 2) /* [[:alnum:]] isalnum(3), utf8::IsAlnum */
+#define ANYOF_ALPHANUMERIC ((CC_ALPHANUMERIC_) * 2) /* [[:alnum:]] isalnum(3), utf8::IsAlnum */
#define ANYOF_NALPHANUMERIC ((ANYOF_ALPHANUMERIC) + 1)
-#define ANYOF_ASCII ((_CC_ASCII) * 2)
+#define ANYOF_ASCII ((CC_ASCII_) * 2)
#define ANYOF_NASCII ((ANYOF_ASCII) + 1)
-#define ANYOF_BLANK ((_CC_BLANK) * 2) /* GNU extension: space and tab: non-vertical space */
+#define ANYOF_BLANK ((CC_BLANK_) * 2) /* GNU extension: space and tab: non-vertical space */
#define ANYOF_NBLANK ((ANYOF_BLANK) + 1)
-#define ANYOF_CASED ((_CC_CASED) * 2) /* Pseudo class for [:lower:] or
+#define ANYOF_CASED ((CC_CASED_) * 2) /* Pseudo class for [:lower:] or
[:upper:] under /i */
#define ANYOF_NCASED ((ANYOF_CASED) + 1)
-#define ANYOF_CNTRL ((_CC_CNTRL) * 2)
+#define ANYOF_CNTRL ((CC_CNTRL_) * 2)
#define ANYOF_NCNTRL ((ANYOF_CNTRL) + 1)
-#define ANYOF_DIGIT ((_CC_DIGIT) * 2) /* \d */
+#define ANYOF_DIGIT ((CC_DIGIT_) * 2) /* \d */
#define ANYOF_NDIGIT ((ANYOF_DIGIT) + 1)
-#define ANYOF_GRAPH ((_CC_GRAPH) * 2)
+#define ANYOF_GRAPH ((CC_GRAPH_) * 2)
#define ANYOF_NGRAPH ((ANYOF_GRAPH) + 1)
-#define ANYOF_LOWER ((_CC_LOWER) * 2)
+#define ANYOF_LOWER ((CC_LOWER_) * 2)
#define ANYOF_NLOWER ((ANYOF_LOWER) + 1)
-#define ANYOF_PRINT ((_CC_PRINT) * 2)
+#define ANYOF_PRINT ((CC_PRINT_) * 2)
#define ANYOF_NPRINT ((ANYOF_PRINT) + 1)
-#define ANYOF_PUNCT ((_CC_PUNCT) * 2)
+#define ANYOF_PUNCT ((CC_PUNCT_) * 2)
#define ANYOF_NPUNCT ((ANYOF_PUNCT) + 1)
-#define ANYOF_SPACE ((_CC_SPACE) * 2) /* \s */
+#define ANYOF_SPACE ((CC_SPACE_) * 2) /* \s */
#define ANYOF_NSPACE ((ANYOF_SPACE) + 1)
-#define ANYOF_UPPER ((_CC_UPPER) * 2)
+#define ANYOF_UPPER ((CC_UPPER_) * 2)
#define ANYOF_NUPPER ((ANYOF_UPPER) + 1)
-#define ANYOF_WORDCHAR ((_CC_WORDCHAR) * 2) /* \w, PL_utf8_alnum, utf8::IsWord, ALNUM */
+#define ANYOF_WORDCHAR ((CC_WORDCHAR_) * 2) /* \w, PL_utf8_alnum, utf8::IsWord, ALNUM */
#define ANYOF_NWORDCHAR ((ANYOF_WORDCHAR) + 1)
-#define ANYOF_XDIGIT ((_CC_XDIGIT) * 2)
+#define ANYOF_XDIGIT ((CC_XDIGIT_) * 2)
#define ANYOF_NXDIGIT ((ANYOF_XDIGIT) + 1)
/* pseudo classes below this, not stored in the class bitmap, but used as flags
during compilation of char classes */
-#define ANYOF_VERTWS ((_CC_VERTSPACE) * 2)
+#define ANYOF_VERTWS ((CC_VERTSPACE_) * 2)
#define ANYOF_NVERTWS ((ANYOF_VERTWS)+1)
/* It is best if this is the last one, as all above it are stored as bits in a
* bitmap, and it isn't part of that bitmap */
-#if _CC_VERTSPACE != _HIGHEST_REGCOMP_DOT_H_SYNC
-# error Problem with handy.h _HIGHEST_REGCOMP_DOT_H_SYNC #define
+#if CC_VERTSPACE_ != HIGHEST_REGCOMP_DOT_H_SYNC_
+# error Problem with handy.h HIGHEST_REGCOMP_DOT_H_SYNC_ #define
#endif
#define ANYOF_POSIXL_MAX (ANYOF_VERTWS) /* So upper loop limit is written:
@@ -656,7 +981,7 @@ struct regnode_ssc {
#define ANYOF_MAX ANYOF_POSIXL_MAX
#if (ANYOF_POSIXL_MAX > 32) /* Must fit in 32-bit word */
-# error Problem with handy.h _CC_foo #defines
+# error Problem with handy.h CC_foo_ #defines
#endif
#define ANYOF_HORIZWS ((ANYOF_POSIXL_MAX)+2) /* = (ANYOF_NVERTWS + 1) */
@@ -676,34 +1001,40 @@ struct regnode_ssc {
/* Utility macros for the bitmap and classes of ANYOF */
-#define ANYOF_FLAGS(p) ((p)->flags)
+#define BITMAP_BYTE(p, c) (( (U8*) (p)) [ ( ( (UV) (c)) >> 3) ] )
+#define BITMAP_BIT(c) (1U << ((c) & 7))
+#define BITMAP_TEST(p, c) (BITMAP_BYTE(p, c) & BITMAP_BIT((U8)(c)))
-#define ANYOF_BIT(c) (1U << ((c) & 7))
+#define ANYOF_FLAGS(p) (FLAGS(p))
+
+#define ANYOF_BIT(c) BITMAP_BIT(c)
+
+#define ANYOF_POSIXL_BITMAP(p) (((regnode_charclass_posixl*) (p))->classflags)
#define POSIXL_SET(field, c) ((field) |= (1U << (c)))
-#define ANYOF_POSIXL_SET(p, c) POSIXL_SET(((regnode_charclass_posixl*) (p))->classflags, (c))
+#define ANYOF_POSIXL_SET(p, c) POSIXL_SET(ANYOF_POSIXL_BITMAP(p), (c))
#define POSIXL_CLEAR(field, c) ((field) &= ~ (1U <<(c)))
-#define ANYOF_POSIXL_CLEAR(p, c) POSIXL_CLEAR(((regnode_charclass_posixl*) (p))->classflags, (c))
+#define ANYOF_POSIXL_CLEAR(p, c) POSIXL_CLEAR(ANYOF_POSIXL_BITMAP(p), (c))
#define POSIXL_TEST(field, c) ((field) & (1U << (c)))
-#define ANYOF_POSIXL_TEST(p, c) POSIXL_TEST(((regnode_charclass_posixl*) (p))->classflags, (c))
+#define ANYOF_POSIXL_TEST(p, c) POSIXL_TEST(ANYOF_POSIXL_BITMAP(p), (c))
#define POSIXL_ZERO(field) STMT_START { (field) = 0; } STMT_END
-#define ANYOF_POSIXL_ZERO(ret) POSIXL_ZERO(((regnode_charclass_posixl*) (ret))->classflags)
+#define ANYOF_POSIXL_ZERO(ret) POSIXL_ZERO(ANYOF_POSIXL_BITMAP(ret))
#define ANYOF_POSIXL_SET_TO_BITMAP(p, bits) \
- STMT_START { \
- ((regnode_charclass_posixl*) (p))->classflags = (bits); \
- } STMT_END
+ STMT_START { ANYOF_POSIXL_BITMAP(p) = (bits); } STMT_END
/* Shifts a bit to get, eg. 0x4000_0000, then subtracts 1 to get 0x3FFF_FFFF */
-#define ANYOF_POSIXL_SETALL(ret) STMT_START { ((regnode_charclass_posixl*) (ret))->classflags = nBIT_MASK(ANYOF_POSIXL_MAX); } STMT_END
+#define ANYOF_POSIXL_SETALL(ret) \
+ STMT_START { \
+ ANYOF_POSIXL_BITMAP(ret) = nBIT_MASK(ANYOF_POSIXL_MAX); \
+ } STMT_END
#define ANYOF_CLASS_SETALL(ret) ANYOF_POSIXL_SETALL(ret)
#define ANYOF_POSIXL_TEST_ANY_SET(p) \
- ((ANYOF_FLAGS(p) & ANYOF_MATCHES_POSIXL) \
- && (((regnode_charclass_posixl*)(p))->classflags))
+ ((ANYOF_FLAGS(p) & ANYOF_MATCHES_POSIXL) && ANYOF_POSIXL_BITMAP(p))
#define ANYOF_CLASS_TEST_ANY_SET(p) ANYOF_POSIXL_TEST_ANY_SET(p)
/* Since an SSC always has this field, we don't have to test for that; nor do
@@ -716,8 +1047,7 @@ struct regnode_ssc {
#define ANYOF_POSIXL_TEST_ALL_SET(p) \
((ANYOF_FLAGS(p) & ANYOF_MATCHES_POSIXL) \
- && ((regnode_charclass_posixl*) (p))->classflags \
- == nBIT_MASK(ANYOF_POSIXL_MAX))
+ && ANYOF_POSIXL_BITMAP(p) == nBIT_MASK(ANYOF_POSIXL_MAX))
#define ANYOF_POSIXL_OR(source, dest) STMT_START { (dest)->classflags |= (source)->classflags ; } STMT_END
#define ANYOF_CLASS_OR(source, dest) ANYOF_POSIXL_OR((source), (dest))
@@ -729,7 +1059,7 @@ struct regnode_ssc {
#define ANYOF_BITMAP_BYTE(p, c) BITMAP_BYTE(ANYOF_BITMAP(p), c)
#define ANYOF_BITMAP_SET(p, c) (ANYOF_BITMAP_BYTE(p, c) |= ANYOF_BIT(c))
#define ANYOF_BITMAP_CLEAR(p,c) (ANYOF_BITMAP_BYTE(p, c) &= ~ANYOF_BIT(c))
-#define ANYOF_BITMAP_TEST(p, c) cBOOL(ANYOF_BITMAP_BYTE(p, c) & ANYOF_BIT(c))
+#define ANYOF_BITMAP_TEST(p, c) cBOOL(ANYOF_BITMAP_BYTE(p, c) & ANYOF_BIT(c))
#define ANYOF_BITMAP_SETALL(p) \
memset (ANYOF_BITMAP(p), 255, ANYOF_BITMAP_SIZE)
@@ -751,6 +1081,8 @@ struct regnode_ssc {
#define REG_ZERO_LEN_SEEN 0x00000001
#define REG_LOOKBEHIND_SEEN 0x00000002
+/* add a short form alias to keep the line length police happy */
+#define REG_LB_SEEN REG_LOOKBEHIND_SEEN
#define REG_GPOS_SEEN 0x00000004
/* spare */
#define REG_RECURSE_SEEN 0x00000020
@@ -761,6 +1093,7 @@ struct regnode_ssc {
#define REG_UNFOLDED_MULTI_SEEN 0x00000400
/* spare */
#define REG_UNBOUNDED_QUANTIFIER_SEEN 0x00001000
+#define REG_PESSIMIZE_SEEN 0x00002000
START_EXTERN_C
@@ -909,6 +1242,11 @@ struct _reg_trie_data {
char *bitmap; /* stclass bitmap */
U16 *jump; /* optional 1 indexed array of offsets before tail
for the node following a given word. */
+ U16 *j_before_paren; /* optional 1 indexed array of parno reset data
+ for the given jump. */
+ U16 *j_after_paren; /* optional 1 indexed array of parno reset data
+ for the given jump. */
+
reg_trie_wordinfo *wordinfo; /* array of info per word */
U16 uniquecharcount; /* unique chars in trie (width of trans table) */
U32 startstate; /* initial state - used for common prefix optimisation */
@@ -918,6 +1256,8 @@ struct _reg_trie_data {
U32 statecount; /* Build only - number of states in the states array
(including the unused zero state) */
U32 wordcount; /* Build only */
+ U16 before_paren;
+ U16 after_paren;
#ifdef DEBUGGING
STRLEN charcount; /* Build only */
#endif
@@ -959,10 +1299,6 @@ typedef struct _reg_ac_data reg_ac_data;
#define IS_ANYOF_TRIE(op) ((op)==TRIEC || (op)==AHOCORASICKC)
#define IS_TRIE_AC(op) ((op)>=AHOCORASICK)
-
-#define BITMAP_BYTE(p, c) (( (U8*) p) [ ( ( (UV) (c)) >> 3) ] )
-#define BITMAP_TEST(p, c) (BITMAP_BYTE(p, c) & ANYOF_BIT((U8)c))
-
/* these defines assume uniquecharcount is the correct variable, and state may be evaluated twice */
#define TRIE_NODENUM(state) (((state)-1)/(trie->uniquecharcount)+1)
#define SAFE_TRIE_NODENUM(state) ((state) ? (((state)-1)/(trie->uniquecharcount)+1) : (state))
@@ -994,7 +1330,6 @@ further group, as currently only the low three bytes are used.
PEEP
TRIE
PROGRAM
- OFFSETS
Execute Options:
@@ -1005,7 +1340,6 @@ further group, as currently only the low three bytes are used.
Extra Options
TRIE
- OFFSETS
If you modify any of these make sure you make corresponding changes to
re.pm, especially to the documentation.
@@ -1031,8 +1365,6 @@ re.pm, especially to the documentation.
/* Extra */
#define RE_DEBUG_EXTRA_MASK 0x3FF0000
#define RE_DEBUG_EXTRA_TRIE 0x0010000
-#define RE_DEBUG_EXTRA_OFFSETS 0x0020000
-#define RE_DEBUG_EXTRA_OFFDEBUG 0x0040000
#define RE_DEBUG_EXTRA_STATE 0x0080000
#define RE_DEBUG_EXTRA_OPTIMISE 0x0100000
#define RE_DEBUG_EXTRA_BUFFERS 0x0400000
@@ -1071,8 +1403,6 @@ re.pm, especially to the documentation.
/* Extra */
#define DEBUG_EXTRA_r(x) DEBUG_r( \
if (DEBUG_v_TEST || RE_DEBUG_FLAG(RE_DEBUG_EXTRA_MASK)) x )
-#define DEBUG_OFFSETS_r(x) DEBUG_r( \
- if (DEBUG_v_TEST || RE_DEBUG_FLAG(RE_DEBUG_EXTRA_OFFSETS)) x )
#define DEBUG_STATE_r(x) DEBUG_r( \
if (DEBUG_v_TEST || RE_DEBUG_FLAG(RE_DEBUG_EXTRA_STATE)) x )
#define DEBUG_STACK_r(x) DEBUG_r( \
@@ -1083,9 +1413,6 @@ re.pm, especially to the documentation.
#define DEBUG_OPTIMISE_MORE_r(x) DEBUG_r( \
if (DEBUG_v_TEST || ((RE_DEBUG_EXTRA_OPTIMISE|RE_DEBUG_COMPILE_OPTIMISE) == \
RE_DEBUG_FLAG(RE_DEBUG_EXTRA_OPTIMISE|RE_DEBUG_COMPILE_OPTIMISE))) x )
-#define MJD_OFFSET_DEBUG(x) DEBUG_r( \
- if (DEBUG_v_TEST || RE_DEBUG_FLAG(RE_DEBUG_EXTRA_OFFDEBUG)) \
- Perl_warn_nocontext x )
#define DEBUG_TRIE_COMPILE_MORE_r(x) DEBUG_TRIE_COMPILE_r( \
if (DEBUG_v_TEST || RE_DEBUG_FLAG(RE_DEBUG_EXTRA_TRIE)) x )
#define DEBUG_TRIE_EXECUTE_MORE_r(x) DEBUG_TRIE_EXECUTE_r( \
@@ -1126,7 +1453,7 @@ re.pm, especially to the documentation.
/* get_sv() can return NULL during global destruction. */ \
re_debug_flags_sv = PL_curcop ? get_sv(RE_DEBUG_FLAGS, GV_ADD) : NULL; \
if (re_debug_flags_sv) { \
- if (!SvIOK(re_debug_flags_sv)) /* If doesnt exist set to default */\
+ if (!SvIOK(re_debug_flags_sv)) /* If doesn't exist set to default */\
sv_setuv(re_debug_flags_sv, \
/* These defaults should be kept in sync with re.pm */ \
RE_DEBUG_COMPILE_DUMP | RE_DEBUG_EXECUTE_MASK ); \
@@ -1176,7 +1503,7 @@ re.pm, especially to the documentation.
#define FIRST_NON_ASCII_DECIMAL_DIGIT 0x660 /* ARABIC_INDIC_DIGIT_ZERO */
typedef enum {
- TRADITIONAL_BOUND = _CC_WORDCHAR,
+ TRADITIONAL_BOUND = CC_WORDCHAR_,
GCB_BOUND,
LB_BOUND,
SB_BOUND,
@@ -1187,7 +1514,7 @@ typedef enum {
* gives the strict lower bound for the UTF-8 start byte of any code point
* matchable by the node, and a loose upper bound as well.
*
- * The low bound is stored in the upper 6 bits, plus 0xC0.
+ * The low bound is stored as 0xC0 + ((the upper 6 bits) >> 2)
* The loose upper bound is determined from the lowest 2 bits and the low bound
* (called x) as follows:
*
@@ -1208,6 +1535,27 @@ typedef enum {
(LOWEST_ANYOF_HRx_BYTE(b) \
+ ((MAX_ANYOF_HRx_BYTE - LOWEST_ANYOF_HRx_BYTE(b)) >> ((b) & 3)))
+#if !defined(PERL_IN_XSUB_RE) || defined(PLUGGABLE_RE_EXTENSION)
+# define GET_REGCLASS_AUX_DATA(a,b,c,d,e,f) get_regclass_aux_data(a,b,c,d,e,f)
+#else
+# define GET_REGCLASS_AUX_DATA(a,b,c,d,e,f) get_re_gclass_aux_data(a,b,c,d,e,f)
+#endif
+
+#define REGNODE_TYPE(node) (PL_regnode_info[(node)].type)
+#define REGNODE_OFF_BY_ARG(node) (PL_regnode_info[(node)].off_by_arg)
+#define REGNODE_ARG_LEN(node) (PL_regnode_info[(node)].arg_len)
+#define REGNODE_ARG_LEN_VARIES(node) (PL_regnode_info[(node)].arg_len_varies)
+#define REGNODE_NAME(node) (PL_regnode_name[(node)])
+
+#if defined(PERL_IN_REGEX_ENGINE)
+#include "reginline.h"
+#endif
+
+#define EVAL_OPTIMISTIC_FLAG 128
+#define EVAL_FLAGS_MASK (EVAL_OPTIMISTIC_FLAG-1)
+
+
+
#endif /* PERL_REGCOMP_H_ */
/*
diff --git a/Master/tlpkg/tlperl/lib/CORE/regcomp_internal.h b/Master/tlpkg/tlperl/lib/CORE/regcomp_internal.h
new file mode 100755
index 00000000000..6ea42640edf
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/CORE/regcomp_internal.h
@@ -0,0 +1,1261 @@
+#ifndef REGCOMP_INTERNAL_H
+#define REGCOMP_INTERNAL_H
+#ifndef STATIC
+#define STATIC static
+#endif
+#ifndef RE_OPTIMIZE_CURLYX_TO_CURLYM
+#define RE_OPTIMIZE_CURLYX_TO_CURLYM 1
+#endif
+#ifndef RE_OPTIMIZE_CURLYX_TO_CURLYN
+#define RE_OPTIMIZE_CURLYX_TO_CURLYN 1
+#endif
+
+/* this is a chain of data about sub patterns we are processing that
+ need to be handled separately/specially in study_chunk. Its so
+ we can simulate recursion without losing state. */
+struct scan_frame;
+typedef struct scan_frame {
+ regnode *last_regnode; /* last node to process in this frame */
+ regnode *next_regnode; /* next node to process when last is reached */
+ U32 prev_recursed_depth;
+ I32 stopparen; /* what stopparen do we use */
+ bool in_gosub; /* this or an outer frame is for GOSUB */
+
+ struct scan_frame *this_prev_frame; /* this previous frame */
+ struct scan_frame *prev_frame; /* previous frame */
+ struct scan_frame *next_frame; /* next frame */
+} scan_frame;
+
+/* Certain characters are output as a sequence with the first being a
+ * backslash. */
+#define isBACKSLASHED_PUNCT(c) memCHRs("-[]\\^", c)
+
+
+struct RExC_state_t {
+ U32 flags; /* RXf_* are we folding, multilining? */
+ U32 pm_flags; /* PMf_* stuff from the calling PMOP */
+ char *precomp; /* uncompiled string. */
+ char *precomp_end; /* pointer to end of uncompiled string. */
+ REGEXP *rx_sv; /* The SV that is the regexp. */
+ regexp *rx; /* perl core regexp structure */
+ regexp_internal *rxi; /* internal data for regexp object
+ pprivate field */
+ char *start; /* Start of input for compile */
+ char *end; /* End of input for compile */
+ char *parse; /* Input-scan pointer. */
+ char *copy_start; /* start of copy of input within
+ constructed parse string */
+ char *save_copy_start; /* Provides one level of saving
+ and restoring 'copy_start' */
+ char *copy_start_in_input; /* Position in input string
+ corresponding to copy_start */
+ SSize_t whilem_seen; /* number of WHILEM in this expr */
+ regnode *emit_start; /* Start of emitted-code area */
+ regnode_offset emit; /* Code-emit pointer */
+ I32 naughty; /* How bad is this pattern? */
+ I32 sawback; /* Did we see \1, ...? */
+ SSize_t size; /* Number of regnode equivalents in
+ pattern */
+ Size_t sets_depth; /* Counts recursion depth of already-
+ compiled regex set patterns */
+ U32 seen;
+
+ I32 parens_buf_size; /* #slots malloced open/close_parens */
+ regnode_offset *open_parens; /* offsets to open parens */
+ regnode_offset *close_parens; /* offsets to close parens */
+ HV *paren_names; /* Paren names */
+
+ /* position beyond 'precomp' of the warning message furthest away from
+ * 'precomp'. During the parse, no warnings are raised for any problems
+ * earlier in the parse than this position. This works if warnings are
+ * raised the first time a given spot is parsed, and if only one
+ * independent warning is raised for any given spot */
+ Size_t latest_warn_offset;
+
+ /* Branch reset /(?|...|...)/ gives us two concepts of capture buffer id.
+ * "Logical Parno" is the user visible view with branch reset taken into
+ * account. "Parno" (or physical parno) is the actual capture buffers in
+ * the pattern *NOT* taking into account branch reset. We also maintain
+ * a map of "next" pointers which allow us to skip to the next physical
+ * capture buffer with the same logical id, with 0 representing "none".
+ *
+ * As we compile we keep track of the two different counts using the
+ * 'logical_npar' and 'npar' members, and we keep track of the upper bound
+ * of both in 'total_par' and 'logical_total_par', we also populate
+ * the 'logical_to_parno' map, which gives us the first physical parno
+ * for a given logical parno, and the `parno_to_logical` array which gives
+ * us the logical id for each physical parno. When compilation is
+ * completed we construct the 'parno_to_logical_next' array from the
+ * 'parno_to_logical' array. (We do not bother constructing it during
+ * compilation as we do not need it, and we can construct it in O(N) time
+ * once we are done, but would need more complicated logic during the
+ * compile, because we want the next pointers to go from smallest to
+ * largest, eg, left to right.)
+ *
+ * Logical: $1 $2 $3 $4 $2 $3 $2 $5
+ * Physical: 1 2 3 4 5 6 7 8
+ * Next: 0 5 6 0 7 0 0 0
+ * Pattern /(a) (?| (b) (c) (d) | (e) (f) | (g) ) (h)/
+ *
+ * As much as possible the internals use and store the physical id of
+ * of capture buffers. We decode the physical to the logical only when
+ * we need to, for instance when someone use $2.
+ *
+ * Note that when branch reset is not used logical and physical are the
+ * same and the next data would be all zero. So when branch reset is not
+ * used we do not need to populate this data into the final regexp.
+ *
+ */
+ I32 *logical_to_parno; /* logical_parno to parno */
+ I32 *parno_to_logical; /* parno to logical_parno */
+ I32 *parno_to_logical_next; /* parno to next (greater value)
+ parno with the same
+ logical_parno as parno.*/
+
+ I32 npar; /* Capture buffer count so far in the
+ parse, (OPEN) plus one. ("par" 0 is
+ the whole pattern)*/
+ I32 logical_npar; /* Logical version of npar */
+ I32 total_par; /* During initial parse, is either 0,
+ or -1; the latter indicating a
+ reparse is needed. After that pass,
+ it is what 'npar' became after the
+ pass. Hence, it being > 0 indicates
+ we are in a reparse situation */
+ I32 logical_total_par; /* Logical version to total par */
+ I32 nestroot; /* root parens we are in - used by
+ accept */
+ I32 seen_zerolen;
+ regnode *end_op; /* END node in program */
+ I32 utf8; /* whether the pattern is utf8 or not */
+ I32 orig_utf8; /* whether the pattern was originally in utf8 */
+ /* XXX use this for future optimisation of case
+ * where pattern must be upgraded to utf8. */
+ I32 uni_semantics; /* If a d charset modifier should use unicode
+ rules, even if the pattern is not in
+ utf8 */
+
+ I32 recurse_count; /* Number of recurse regops we have generated */
+ regnode **recurse; /* Recurse regops */
+ U8 *study_chunk_recursed; /* bitmap of which subs we have moved
+ through */
+ U32 study_chunk_recursed_bytes; /* bytes in bitmap */
+ I32 in_lookaround;
+ I32 contains_locale;
+ I32 override_recoding;
+ I32 recode_x_to_native;
+ I32 in_multi_char_class;
+ int code_index; /* next code_blocks[] slot */
+ struct reg_code_blocks *code_blocks;/* positions of literal (?{})
+ within pattern */
+ SSize_t maxlen; /* mininum possible number of chars in string to match */
+ scan_frame *frame_head;
+ scan_frame *frame_last;
+ U32 frame_count;
+ AV *warn_text;
+ HV *unlexed_names;
+ SV *runtime_code_qr; /* qr with the runtime code blocks */
+#ifdef DEBUGGING
+ const char *lastparse;
+ I32 lastnum;
+ U32 study_chunk_recursed_count;
+ AV *paren_name_list; /* idx -> name */
+ SV *mysv1;
+ SV *mysv2;
+#endif
+ bool seen_d_op;
+ bool strict;
+ bool study_started;
+ bool in_script_run;
+ bool use_BRANCHJ;
+ bool sWARN_EXPERIMENTAL__VLB;
+ bool sWARN_EXPERIMENTAL__REGEX_SETS;
+};
+
+#ifdef DEBUGGING
+#define RExC_lastparse (pRExC_state->lastparse)
+#define RExC_lastnum (pRExC_state->lastnum)
+#define RExC_paren_name_list (pRExC_state->paren_name_list)
+#define RExC_study_chunk_recursed_count (pRExC_state->study_chunk_recursed_count)
+#define RExC_mysv (pRExC_state->mysv1)
+#define RExC_mysv1 (pRExC_state->mysv1)
+#define RExC_mysv2 (pRExC_state->mysv2)
+#endif
+
+#define RExC_flags (pRExC_state->flags)
+#define RExC_pm_flags (pRExC_state->pm_flags)
+#define RExC_precomp (pRExC_state->precomp)
+#define RExC_copy_start_in_input (pRExC_state->copy_start_in_input)
+#define RExC_copy_start_in_constructed (pRExC_state->copy_start)
+#define RExC_save_copy_start_in_constructed (pRExC_state->save_copy_start)
+#define RExC_precomp_end (pRExC_state->precomp_end)
+#define RExC_rx_sv (pRExC_state->rx_sv)
+#define RExC_rx (pRExC_state->rx)
+#define RExC_rxi (pRExC_state->rxi)
+#define RExC_start (pRExC_state->start)
+#define RExC_end (pRExC_state->end)
+#define RExC_parse (pRExC_state->parse)
+#define RExC_latest_warn_offset (pRExC_state->latest_warn_offset )
+#define RExC_whilem_seen (pRExC_state->whilem_seen)
+#define RExC_seen_d_op (pRExC_state->seen_d_op) /* Seen something that differs
+ under /d from /u ? */
+
+#define RExC_emit (pRExC_state->emit)
+#define RExC_emit_start (pRExC_state->emit_start)
+#define RExC_sawback (pRExC_state->sawback)
+#define RExC_seen (pRExC_state->seen)
+#define RExC_size (pRExC_state->size)
+#define RExC_maxlen (pRExC_state->maxlen)
+#define RExC_logical_npar (pRExC_state->logical_npar)
+#define RExC_logical_total_parens (pRExC_state->logical_total_par)
+#define RExC_logical_to_parno (pRExC_state->logical_to_parno)
+#define RExC_parno_to_logical (pRExC_state->parno_to_logical)
+#define RExC_parno_to_logical_next (pRExC_state->parno_to_logical_next)
+#define RExC_npar (pRExC_state->npar)
+#define RExC_total_parens (pRExC_state->total_par)
+#define RExC_parens_buf_size (pRExC_state->parens_buf_size)
+#define RExC_nestroot (pRExC_state->nestroot)
+#define RExC_seen_zerolen (pRExC_state->seen_zerolen)
+#define RExC_utf8 (pRExC_state->utf8)
+#define RExC_uni_semantics (pRExC_state->uni_semantics)
+#define RExC_orig_utf8 (pRExC_state->orig_utf8)
+#define RExC_open_parens (pRExC_state->open_parens)
+#define RExC_close_parens (pRExC_state->close_parens)
+#define RExC_end_op (pRExC_state->end_op)
+#define RExC_paren_names (pRExC_state->paren_names)
+#define RExC_recurse (pRExC_state->recurse)
+#define RExC_recurse_count (pRExC_state->recurse_count)
+#define RExC_sets_depth (pRExC_state->sets_depth)
+#define RExC_study_chunk_recursed (pRExC_state->study_chunk_recursed)
+#define RExC_study_chunk_recursed_bytes \
+ (pRExC_state->study_chunk_recursed_bytes)
+#define RExC_in_lookaround (pRExC_state->in_lookaround)
+#define RExC_contains_locale (pRExC_state->contains_locale)
+#define RExC_recode_x_to_native (pRExC_state->recode_x_to_native)
+
+#ifdef EBCDIC
+# define SET_recode_x_to_native(x) \
+ STMT_START { RExC_recode_x_to_native = (x); } STMT_END
+#else
+# define SET_recode_x_to_native(x) NOOP
+#endif
+
+#define RExC_in_multi_char_class (pRExC_state->in_multi_char_class)
+#define RExC_frame_head (pRExC_state->frame_head)
+#define RExC_frame_last (pRExC_state->frame_last)
+#define RExC_frame_count (pRExC_state->frame_count)
+#define RExC_strict (pRExC_state->strict)
+#define RExC_study_started (pRExC_state->study_started)
+#define RExC_warn_text (pRExC_state->warn_text)
+#define RExC_in_script_run (pRExC_state->in_script_run)
+#define RExC_use_BRANCHJ (pRExC_state->use_BRANCHJ)
+#define RExC_warned_WARN_EXPERIMENTAL__VLB (pRExC_state->sWARN_EXPERIMENTAL__VLB)
+#define RExC_warned_WARN_EXPERIMENTAL__REGEX_SETS (pRExC_state->sWARN_EXPERIMENTAL__REGEX_SETS)
+#define RExC_unlexed_names (pRExC_state->unlexed_names)
+
+
+/***********************************************************************/
+/* UTILITY MACROS FOR ADVANCING OR SETTING THE PARSE "CURSOR" RExC_parse
+ *
+ * All of these macros depend on the above RExC_ accessor macros, which
+ * in turns depend on a variable pRExC_state being in scope where they
+ * are used. This is the standard regexp parser context variable which is
+ * passed into every non-trivial parse function in this file.
+ *
+ * Note that the UTF macro is itself a wrapper around RExC_utf8, so all
+ * of the macros which do not take an argument will operate on the
+ * pRExC_state structure *only*.
+ *
+ * Please do NOT modify RExC_parse without using these macros. In the
+ * future these macros will be extended for enhanced debugging and trace
+ * output during the parse process.
+ */
+
+/* RExC_parse_incf(flag)
+ *
+ * Increment RExC_parse to point at the next codepoint, while doing
+ * the right thing depending on whether we are parsing UTF-8 strings
+ * or not. The 'flag' argument determines if content is UTF-8 or not,
+ * intended for cases where this is NOT governed by the UTF macro.
+ *
+ * Use RExC_parse_inc() if UTF-8ness is controlled by the UTF macro.
+ *
+ * WARNING: Does NOT take into account RExC_end; it is the callers
+ * responsibility to make sure there are enough octets left in
+ * RExC_parse to ensure that when processing UTF-8 we would not read
+ * past the end of the string.
+ */
+#define RExC_parse_incf(flag) STMT_START { \
+ RExC_parse += (flag) ? UTF8SKIP(RExC_parse) : 1; \
+} STMT_END
+
+/* RExC_parse_inc_safef(flag)
+ *
+ * Safely increment RExC_parse to point at the next codepoint,
+ * doing the right thing depending on whether we are parsing
+ * UTF-8 strings or not and NOT reading past the end of the buffer.
+ * The 'flag' argument determines if content is UTF-8 or not,
+ * intended for cases where this is NOT governed by the UTF macro.
+ *
+ * Use RExC_parse_safe() if UTF-8ness is controlled by the UTF macro.
+ *
+ * NOTE: Will NOT read past RExC_end when content is UTF-8.
+ */
+#define RExC_parse_inc_safef(flag) STMT_START { \
+ RExC_parse += (flag) ? UTF8_SAFE_SKIP(RExC_parse,RExC_end) : 1; \
+} STMT_END
+
+/* RExC_parse_inc()
+ *
+ * Increment RExC_parse to point at the next codepoint,
+ * doing the right thing depending on whether we are parsing
+ * UTF-8 strings or not.
+ *
+ * WARNING: Does NOT take into account RExC_end, it is the callers
+ * responsibility to make sure there are enough octets left in
+ * RExC_parse to ensure that when processing UTF-8 we would not read
+ * past the end of the string.
+ *
+ * NOTE: whether we are parsing UTF-8 or not is determined by the
+ * UTF macro which is defined as cBOOL(RExC_parse_utf8), thus this
+ * macro operates on the pRExC_state structure only.
+ */
+#define RExC_parse_inc() RExC_parse_incf(UTF)
+
+/* RExC_parse_inc_safe()
+ *
+ * Safely increment RExC_parse to point at the next codepoint,
+ * doing the right thing depending on whether we are parsing
+ * UTF-8 strings or not and NOT reading past the end of the buffer.
+ *
+ * NOTE: whether we are parsing UTF-8 or not is determined by the
+ * UTF macro which is defined as cBOOL(RExC_parse_utf8), thus this
+ * macro operates on the pRExC_state structure only.
+ */
+#define RExC_parse_inc_safe() RExC_parse_inc_safef(UTF)
+
+/* RExC_parse_inc_utf8()
+ *
+ * Increment RExC_parse to point at the next utf8 codepoint,
+ * assumes content is UTF-8.
+ *
+ * WARNING: Does NOT take into account RExC_end; it is the callers
+ * responsibility to make sure there are enough octets left in RExC_parse
+ * to ensure that when processing UTF-8 we would not read past the end
+ * of the string.
+ */
+#define RExC_parse_inc_utf8() STMT_START { \
+ RExC_parse += UTF8SKIP(RExC_parse); \
+} STMT_END
+
+/* RExC_parse_inc_if_char()
+ *
+ * Increment RExC_parse to point at the next codepoint, if and only
+ * if the current parse point is NOT a NULL, while doing the right thing
+ * depending on whether we are parsing UTF-8 strings or not.
+ *
+ * WARNING: Does NOT take into account RExC_end, it is the callers
+ * responsibility to make sure there are enough octets left in RExC_parse
+ * to ensure that when processing UTF-8 we would not read past the end
+ * of the string.
+ *
+ * NOTE: whether we are parsing UTF-8 or not is determined by the
+ * UTF macro which is defined as cBOOL(RExC_parse_utf8), thus this
+ * macro operates on the pRExC_state structure only.
+ */
+#define RExC_parse_inc_if_char() STMT_START { \
+ RExC_parse += SKIP_IF_CHAR(RExC_parse,RExC_end); \
+} STMT_END
+
+/* RExC_parse_inc_by(n_octets)
+ *
+ * Increment the parse cursor by the number of octets specified by
+ * the 'n_octets' argument.
+ *
+ * NOTE: Does NOT check ANY constraints. It is the callers responsibility
+ * that this will not move past the end of the string, or leave the
+ * pointer in the middle of a UTF-8 sequence.
+ *
+ * Typically used to advanced past previously analyzed content.
+ */
+#define RExC_parse_inc_by(n_octets) STMT_START { \
+ RExC_parse += (n_octets); \
+} STMT_END
+
+/* RExC_parse_set(to_ptr)
+ *
+ * Sets the RExC_parse pointer to the pointer specified by the 'to'
+ * argument. No validation whatsoever is performed on the to pointer.
+ */
+#define RExC_parse_set(to_ptr) STMT_START { \
+ RExC_parse = (to_ptr); \
+} STMT_END
+
+/**********************************************************************/
+
+/* Heuristic check on the complexity of the pattern: if TOO_NAUGHTY, we set
+ * a flag to disable back-off on the fixed/floating substrings - if it's
+ * a high complexity pattern we assume the benefit of avoiding a full match
+ * is worth the cost of checking for the substrings even if they rarely help.
+ */
+#define RExC_naughty (pRExC_state->naughty)
+#define TOO_NAUGHTY (10)
+#define MARK_NAUGHTY(add) \
+ if (RExC_naughty < TOO_NAUGHTY) \
+ RExC_naughty += (add)
+#define MARK_NAUGHTY_EXP(exp, add) \
+ if (RExC_naughty < TOO_NAUGHTY) \
+ RExC_naughty += RExC_naughty / (exp) + (add)
+
+#define isNON_BRACE_QUANTIFIER(c) ((c) == '*' || (c) == '+' || (c) == '?')
+#define isQUANTIFIER(s,e) ( isNON_BRACE_QUANTIFIER(*s) \
+ || ((*s) == '{' && regcurly(s, e, NULL)))
+
+/*
+ * Flags to be passed up.
+ */
+#define HASWIDTH 0x01 /* Known to not match null strings, could match
+ non-null ones. */
+#define SIMPLE 0x02 /* Exactly one character wide */
+ /* (or LNBREAK as a special case) */
+#define POSTPONED 0x08 /* (?1),(?&name), (??{...}) or similar */
+#define TRYAGAIN 0x10 /* Weeded out a declaration. */
+#define RESTART_PARSE 0x20 /* Need to redo the parse */
+#define NEED_UTF8 0x40 /* In conjunction with RESTART_PARSE, need to
+ calcuate sizes as UTF-8 */
+
+#define REG_NODE_NUM(x) ((x) ? (int)((x)-RExC_emit_start) : -1)
+
+/* whether trie related optimizations are enabled */
+#if PERL_ENABLE_EXTENDED_TRIE_OPTIMISATION
+#define TRIE_STUDY_OPT
+#define FULL_TRIE_STUDY
+#define TRIE_STCLASS
+#endif
+
+/* About the term "restudy" and the var "restudied" and the defines
+ * "SCF_TRIE_RESTUDY" and "SCF_TRIE_DOING_RESTUDY": All of these relate to
+ * doing multiple study_chunk() calls over the same set of opcodes for* the
+ * purpose of enhanced TRIE optimizations.
+ *
+ * Specifically, when TRIE_STUDY_OPT is defined, and it is defined in normal
+ * builds, (see above), during compilation SCF_TRIE_RESTUDY may be enabled
+ * which then causes the Perl_re_op_compile() to then call the optimizer
+ * S_study_chunk() a second time to perform additional optimizations,
+ * including the aho_corasick startclass optimization.
+ * This additional pass will only happen once, which is managed by the
+ * 'restudied' variable in Perl_re_op_compile().
+ *
+ * When this second pass is under way the flags passed into study_chunk() will
+ * include SCF_TRIE_DOING_RESTUDY and this flag is and must be cascaded down
+ * to any recursive calls to S_study_chunk().
+ *
+ * IMPORTANT: Any logic in study_chunk() that emits warnings should check that
+ * the SCF_TRIE_DOING_RESTUDY flag is NOT set in 'flags', or the warning may
+ * be produced twice.
+ *
+ * See commit 07be1b83a6b2d24b492356181ddf70e1c7917ae3 and
+ * 688e03912e3bff2d2419c457d8b0e1bab3eb7112 for more details.
+ */
+
+
+#define PBYTE(u8str,paren) ((U8*)(u8str))[(paren) >> 3]
+#define PBITVAL(paren) (1 << ((paren) & 7))
+#define PAREN_OFFSET(depth) \
+ (RExC_study_chunk_recursed + (depth) * RExC_study_chunk_recursed_bytes)
+#define PAREN_TEST(depth, paren) \
+ (PBYTE(PAREN_OFFSET(depth), paren) & PBITVAL(paren))
+#define PAREN_SET(depth, paren) \
+ (PBYTE(PAREN_OFFSET(depth), paren) |= PBITVAL(paren))
+#define PAREN_UNSET(depth, paren) \
+ (PBYTE(PAREN_OFFSET(depth), paren) &= ~PBITVAL(paren))
+
+#define REQUIRE_UTF8(flagp) STMT_START { \
+ if (!UTF) { \
+ *flagp = RESTART_PARSE|NEED_UTF8; \
+ return 0; \
+ } \
+ } STMT_END
+
+/* /u is to be chosen if we are supposed to use Unicode rules, or if the
+ * pattern is in UTF-8. This latter condition is in case the outermost rules
+ * are locale. See GH #17278 */
+#define toUSE_UNI_CHARSET_NOT_DEPENDS (RExC_uni_semantics || UTF)
+
+/* Change from /d into /u rules, and restart the parse. RExC_uni_semantics is
+ * a flag that indicates we need to override /d with /u as a result of
+ * something in the pattern. It should only be used in regards to calling
+ * set_regex_charset() or get_regex_charset() */
+#define REQUIRE_UNI_RULES(flagp, restart_retval) \
+ STMT_START { \
+ if (DEPENDS_SEMANTICS) { \
+ set_regex_charset(&RExC_flags, REGEX_UNICODE_CHARSET); \
+ RExC_uni_semantics = 1; \
+ if (RExC_seen_d_op && LIKELY(! IN_PARENS_PASS)) { \
+ /* No need to restart the parse if we haven't seen \
+ * anything that differs between /u and /d, and no need \
+ * to restart immediately if we're going to reparse \
+ * anyway to count parens */ \
+ *flagp |= RESTART_PARSE; \
+ return restart_retval; \
+ } \
+ } \
+ } STMT_END
+
+#define REQUIRE_BRANCHJ(flagp, restart_retval) \
+ STMT_START { \
+ RExC_use_BRANCHJ = 1; \
+ *flagp |= RESTART_PARSE; \
+ return restart_retval; \
+ } STMT_END
+
+/* Until we have completed the parse, we leave RExC_total_parens at 0 or
+ * less. After that, it must always be positive, because the whole re is
+ * considered to be surrounded by virtual parens. Setting it to negative
+ * indicates there is some construct that needs to know the actual number of
+ * parens to be properly handled. And that means an extra pass will be
+ * required after we've counted them all */
+#define ALL_PARENS_COUNTED (RExC_total_parens > 0)
+#define REQUIRE_PARENS_PASS \
+ STMT_START { /* No-op if have completed a pass */ \
+ if (! ALL_PARENS_COUNTED) RExC_total_parens = -1; \
+ } STMT_END
+#define IN_PARENS_PASS (RExC_total_parens < 0)
+
+
+/* This is used to return failure (zero) early from the calling function if
+ * various flags in 'flags' are set. Two flags always cause a return:
+ * 'RESTART_PARSE' and 'NEED_UTF8'. 'extra' can be used to specify any
+ * additional flags that should cause a return; 0 if none. If the return will
+ * be done, '*flagp' is first set to be all of the flags that caused the
+ * return. */
+#define RETURN_FAIL_ON_RESTART_OR_FLAGS(flags,flagp,extra) \
+ STMT_START { \
+ if ((flags) & (RESTART_PARSE|NEED_UTF8|(extra))) { \
+ *(flagp) = (flags) & (RESTART_PARSE|NEED_UTF8|(extra)); \
+ return 0; \
+ } \
+ } STMT_END
+
+#define MUST_RESTART(flags) ((flags) & (RESTART_PARSE))
+
+#define RETURN_FAIL_ON_RESTART(flags,flagp) \
+ RETURN_FAIL_ON_RESTART_OR_FLAGS( flags, flagp, 0)
+#define RETURN_FAIL_ON_RESTART_FLAGP(flagp) \
+ if (MUST_RESTART(*(flagp))) return 0
+
+/* This converts the named class defined in regcomp.h to its equivalent class
+ * number defined in handy.h. */
+#define namedclass_to_classnum(class) ((int) ((class) / 2))
+#define classnum_to_namedclass(classnum) ((classnum) * 2)
+
+#define _invlist_union_complement_2nd(a, b, output) \
+ _invlist_union_maybe_complement_2nd(a, b, TRUE, output)
+#define _invlist_intersection_complement_2nd(a, b, output) \
+ _invlist_intersection_maybe_complement_2nd(a, b, TRUE, output)
+
+/* We add a marker if we are deferring expansion of a property that is both
+ * 1) potentiallly user-defined; and
+ * 2) could also be an official Unicode property.
+ *
+ * Without this marker, any deferred expansion can only be for a user-defined
+ * one. This marker shouldn't conflict with any that could be in a legal name,
+ * and is appended to its name to indicate this. There is a string and
+ * character form */
+#define DEFERRED_COULD_BE_OFFICIAL_MARKERs "~"
+#define DEFERRED_COULD_BE_OFFICIAL_MARKERc '~'
+
+/* What is infinity for optimization purposes */
+#define OPTIMIZE_INFTY SSize_t_MAX
+
+/* About scan_data_t.
+
+ During optimisation we recurse through the regexp program performing
+ various inplace (keyhole style) optimisations. In addition study_chunk
+ and scan_commit populate this data structure with information about
+ what strings MUST appear in the pattern. We look for the longest
+ string that must appear at a fixed location, and we look for the
+ longest string that may appear at a floating location. So for instance
+ in the pattern:
+
+ /FOO[xX]A.*B[xX]BAR/
+
+ Both 'FOO' and 'A' are fixed strings. Both 'B' and 'BAR' are floating
+ strings (because they follow a .* construct). study_chunk will identify
+ both FOO and BAR as being the longest fixed and floating strings respectively.
+
+ The strings can be composites, for instance
+
+ /(f)(o)(o)/
+
+ will result in a composite fixed substring 'foo'.
+
+ For each string some basic information is maintained:
+
+ - min_offset
+ This is the position the string must appear at, or not before.
+ It also implicitly (when combined with minlenp) tells us how many
+ characters must match before the string we are searching for.
+ Likewise when combined with minlenp and the length of the string it
+ tells us how many characters must appear after the string we have
+ found.
+
+ - max_offset
+ Only used for floating strings. This is the rightmost point that
+ the string can appear at. If set to OPTIMIZE_INFTY it indicates that the
+ string can occur infinitely far to the right.
+ For fixed strings, it is equal to min_offset.
+
+ - minlenp
+ A pointer to the minimum number of characters of the pattern that the
+ string was found inside. This is important as in the case of positive
+ lookahead or positive lookbehind we can have multiple patterns
+ involved. Consider
+
+ /(?=FOO).*F/
+
+ The minimum length of the pattern overall is 3, the minimum length
+ of the lookahead part is 3, but the minimum length of the part that
+ will actually match is 1. So 'FOO's minimum length is 3, but the
+ minimum length for the F is 1. This is important as the minimum length
+ is used to determine offsets in front of and behind the string being
+ looked for. Since strings can be composites this is the length of the
+ pattern at the time it was committed with a scan_commit. Note that
+ the length is calculated by study_chunk, so that the minimum lengths
+ are not known until the full pattern has been compiled, thus the
+ pointer to the value.
+
+ - lookbehind
+
+ In the case of lookbehind the string being searched for can be
+ offset past the start point of the final matching string.
+ If this value was just blithely removed from the min_offset it would
+ invalidate some of the calculations for how many chars must match
+ before or after (as they are derived from min_offset and minlen and
+ the length of the string being searched for).
+ When the final pattern is compiled and the data is moved from the
+ scan_data_t structure into the regexp structure the information
+ about lookbehind is factored in, with the information that would
+ have been lost precalculated in the end_shift field for the
+ associated string.
+
+ The fields pos_min and pos_delta are used to store the minimum offset
+ and the delta to the maximum offset at the current point in the pattern.
+
+*/
+
+struct scan_data_substrs {
+ SV *str; /* longest substring found in pattern */
+ SSize_t min_offset; /* earliest point in string it can appear */
+ SSize_t max_offset; /* latest point in string it can appear */
+ SSize_t *minlenp; /* pointer to the minlen relevant to the string */
+ SSize_t lookbehind; /* is the pos of the string modified by LB */
+ I32 flags; /* per substring SF_* and SCF_* flags */
+};
+
+/* this is typedef'ed in perl.h */
+struct scan_data_t {
+ /*I32 len_min; unused */
+ /*I32 len_delta; unused */
+ SSize_t pos_min;
+ SSize_t pos_delta;
+ SV *last_found;
+ SSize_t last_end; /* min value, <0 unless valid. */
+ SSize_t last_start_min;
+ SSize_t last_start_max;
+ U8 cur_is_floating; /* whether the last_* values should be set as
+ * the next fixed (0) or floating (1)
+ * substring */
+
+ /* [0] is longest fixed substring so far, [1] is longest float so far */
+ struct scan_data_substrs substrs[2];
+
+ I32 flags; /* common SF_* and SCF_* flags */
+ I32 whilem_c;
+ SSize_t *last_closep;
+ regnode **last_close_opp; /* pointer to pointer to last CLOSE regop
+ seen. DO NOT DEREFERENCE the regnode
+ pointer - the op may have been optimized
+ away */
+ regnode_ssc *start_class;
+};
+
+/*
+ * Forward declarations for pregcomp()'s friends.
+ */
+
+static const scan_data_t zero_scan_data = {
+ 0, 0, NULL, 0, 0, 0, 0,
+ {
+ { NULL, 0, 0, 0, 0, 0 },
+ { NULL, 0, 0, 0, 0, 0 },
+ },
+ 0, 0, NULL, NULL, NULL
+};
+
+/* study flags */
+
+#define SF_BEFORE_SEOL 0x0001
+#define SF_BEFORE_MEOL 0x0002
+#define SF_BEFORE_EOL (SF_BEFORE_SEOL|SF_BEFORE_MEOL)
+
+#define SF_IS_INF 0x0040
+#define SF_HAS_PAR 0x0080
+#define SF_IN_PAR 0x0100
+#define SF_HAS_EVAL 0x0200
+
+
+/* SCF_DO_SUBSTR is the flag that tells the regexp analyzer to track the
+ * longest substring in the pattern. When it is not set the optimiser keeps
+ * track of position, but does not keep track of the actual strings seen,
+ *
+ * So for instance /foo/ will be parsed with SCF_DO_SUBSTR being true, but
+ * /foo/i will not.
+ *
+ * Similarly, /foo.*(blah|erm|huh).*fnorble/ will have "foo" and "fnorble"
+ * parsed with SCF_DO_SUBSTR on, but while processing the (...) it will be
+ * turned off because of the alternation (BRANCH). */
+#define SCF_DO_SUBSTR 0x0400
+
+#define SCF_DO_STCLASS_AND 0x0800
+#define SCF_DO_STCLASS_OR 0x1000
+#define SCF_DO_STCLASS (SCF_DO_STCLASS_AND|SCF_DO_STCLASS_OR)
+#define SCF_WHILEM_VISITED_POS 0x2000
+
+#define SCF_TRIE_RESTUDY 0x4000 /* Need to do restudy in study_chunk()?
+ Search for "restudy" in this file
+ to find a detailed explanation.*/
+#define SCF_SEEN_ACCEPT 0x8000
+#define SCF_TRIE_DOING_RESTUDY 0x10000 /* Are we in restudy right now?
+ Search for "restudy" in this file
+ to find a detailed explanation. */
+#define SCF_IN_DEFINE 0x20000
+
+
+
+#define UTF cBOOL(RExC_utf8)
+
+/* The enums for all these are ordered so things work out correctly */
+#define LOC (get_regex_charset(RExC_flags) == REGEX_LOCALE_CHARSET)
+#define DEPENDS_SEMANTICS (get_regex_charset(RExC_flags) \
+ == REGEX_DEPENDS_CHARSET)
+#define UNI_SEMANTICS (get_regex_charset(RExC_flags) == REGEX_UNICODE_CHARSET)
+#define AT_LEAST_UNI_SEMANTICS (get_regex_charset(RExC_flags) \
+ >= REGEX_UNICODE_CHARSET)
+#define ASCII_RESTRICTED (get_regex_charset(RExC_flags) \
+ == REGEX_ASCII_RESTRICTED_CHARSET)
+#define AT_LEAST_ASCII_RESTRICTED (get_regex_charset(RExC_flags) \
+ >= REGEX_ASCII_RESTRICTED_CHARSET)
+#define ASCII_FOLD_RESTRICTED (get_regex_charset(RExC_flags) \
+ == REGEX_ASCII_MORE_RESTRICTED_CHARSET)
+
+#define FOLD cBOOL(RExC_flags & RXf_PMf_FOLD)
+
+/* For programs that want to be strictly Unicode compatible by dying if any
+ * attempt is made to match a non-Unicode code point against a Unicode
+ * property. */
+#define ALWAYS_WARN_SUPER ckDEAD(packWARN(WARN_NON_UNICODE))
+
+#define OOB_NAMEDCLASS -1
+
+/* There is no code point that is out-of-bounds, so this is problematic. But
+ * its only current use is to initialize a variable that is always set before
+ * looked at. */
+#define OOB_UNICODE 0xDEADBEEF
+
+#define CHR_SVLEN(sv) (UTF ? sv_len_utf8(sv) : SvCUR(sv))
+
+
+/* length of regex to show in messages that don't mark a position within */
+#define RegexLengthToShowInErrorMessages 127
+
+/*
+ * If MARKER[12] are adjusted, be sure to adjust the constants at the top
+ * of t/op/regmesg.t, the tests in t/op/re_tests, and those in
+ * op/pragma/warn/regcomp.
+ */
+#define MARKER1 "<-- HERE" /* marker as it appears in the description */
+#define MARKER2 " <-- HERE " /* marker as it appears within the regex */
+
+#define REPORT_LOCATION " in regex; marked by " MARKER1 \
+ " in m/%" UTF8f MARKER2 "%" UTF8f "/"
+
+/* The code in this file in places uses one level of recursion with parsing
+ * rebased to an alternate string constructed by us in memory. This can take
+ * the form of something that is completely different from the input, or
+ * something that uses the input as part of the alternate. In the first case,
+ * there should be no possibility of an error, as we are in complete control of
+ * the alternate string. But in the second case we don't completely control
+ * the input portion, so there may be errors in that. Here's an example:
+ * /[abc\x{DF}def]/ui
+ * is handled specially because \x{df} folds to a sequence of more than one
+ * character: 'ss'. What is done is to create and parse an alternate string,
+ * which looks like this:
+ * /(?:\x{DF}|[abc\x{DF}def])/ui
+ * where it uses the input unchanged in the middle of something it constructs,
+ * which is a branch for the DF outside the character class, and clustering
+ * parens around the whole thing. (It knows enough to skip the DF inside the
+ * class while in this substitute parse.) 'abc' and 'def' may have errors that
+ * need to be reported. The general situation looks like this:
+ *
+ * |<------- identical ------>|
+ * sI tI xI eI
+ * Input: ---------------------------------------------------------------
+ * Constructed: ---------------------------------------------------
+ * sC tC xC eC EC
+ * |<------- identical ------>|
+ *
+ * sI..eI is the portion of the input pattern we are concerned with here.
+ * sC..EC is the constructed substitute parse string.
+ * sC..tC is constructed by us
+ * tC..eC is an exact duplicate of the portion of the input pattern tI..eI.
+ * In the diagram, these are vertically aligned.
+ * eC..EC is also constructed by us.
+ * xC is the position in the substitute parse string where we found a
+ * problem.
+ * xI is the position in the original pattern corresponding to xC.
+ *
+ * We want to display a message showing the real input string. Thus we need to
+ * translate from xC to xI. We know that xC >= tC, since the portion of the
+ * string sC..tC has been constructed by us, and so shouldn't have errors. We
+ * get:
+ * xI = tI + (xC - tC)
+ *
+ * When the substitute parse is constructed, the code needs to set:
+ * RExC_start (sC)
+ * RExC_end (eC)
+ * RExC_copy_start_in_input (tI)
+ * RExC_copy_start_in_constructed (tC)
+ * and restore them when done.
+ *
+ * During normal processing of the input pattern, both
+ * 'RExC_copy_start_in_input' and 'RExC_copy_start_in_constructed' are set to
+ * sI, so that xC equals xI.
+ */
+
+#define sI RExC_precomp
+#define eI RExC_precomp_end
+#define sC RExC_start
+#define eC RExC_end
+#define tI RExC_copy_start_in_input
+#define tC RExC_copy_start_in_constructed
+#define xI(xC) (tI + (xC - tC))
+#define xI_offset(xC) (xI(xC) - sI)
+
+#define REPORT_LOCATION_ARGS(xC) \
+ UTF8fARG(UTF, \
+ (xI(xC) > eI) /* Don't run off end */ \
+ ? eI - sI /* Length before the <--HERE */ \
+ : ((xI_offset(xC) >= 0) \
+ ? xI_offset(xC) \
+ : (Perl_croak(aTHX_ "panic: %s: %d: negative offset: %" \
+ IVdf " trying to output message for " \
+ " pattern %.*s", \
+ __FILE__, __LINE__, (IV) xI_offset(xC), \
+ ((int) (eC - sC)), sC), 0)), \
+ sI), /* The input pattern printed up to the <--HERE */ \
+ UTF8fARG(UTF, \
+ (xI(xC) > eI) ? 0 : eI - xI(xC), /* Length after <--HERE */ \
+ (xI(xC) > eI) ? eI : xI(xC)) /* pattern after <--HERE */
+
+/* Used to point after bad bytes for an error message, but avoid skipping
+ * past a nul byte. */
+#define SKIP_IF_CHAR(s, e) (!*(s) ? 0 : UTF ? UTF8_SAFE_SKIP(s, e) : 1)
+
+/* Set up to clean up after our imminent demise */
+#define PREPARE_TO_DIE \
+ STMT_START { \
+ if (RExC_rx_sv) \
+ SAVEFREESV(RExC_rx_sv); \
+ if (RExC_open_parens) \
+ SAVEFREEPV(RExC_open_parens); \
+ if (RExC_close_parens) \
+ SAVEFREEPV(RExC_close_parens); \
+ if (RExC_logical_to_parno) \
+ SAVEFREEPV(RExC_logical_to_parno); \
+ if (RExC_parno_to_logical) \
+ SAVEFREEPV(RExC_parno_to_logical); \
+ } STMT_END
+
+/*
+ * Calls SAVEDESTRUCTOR_X if needed, then calls Perl_croak with the given
+ * arg. Show regex, up to a maximum length. If it's too long, chop and add
+ * "...".
+ */
+#define _FAIL(code) STMT_START { \
+ const char *ellipses = ""; \
+ IV len = RExC_precomp_end - RExC_precomp; \
+ \
+ PREPARE_TO_DIE; \
+ if (len > RegexLengthToShowInErrorMessages) { \
+ /* chop 10 shorter than the max, to ensure meaning of "..." */ \
+ len = RegexLengthToShowInErrorMessages - 10; \
+ ellipses = "..."; \
+ } \
+ code; \
+} STMT_END
+
+#define FAIL(msg) _FAIL( \
+ Perl_croak(aTHX_ "%s in regex m/%" UTF8f "%s/", \
+ msg, UTF8fARG(UTF, len, RExC_precomp), ellipses))
+
+#define FAIL2(msg,arg) _FAIL( \
+ Perl_croak(aTHX_ msg " in regex m/%" UTF8f "%s/", \
+ arg, UTF8fARG(UTF, len, RExC_precomp), ellipses))
+
+#define FAIL3(msg,arg1,arg2) _FAIL( \
+ Perl_croak(aTHX_ msg " in regex m/%" UTF8f "%s/", \
+ arg1, arg2, UTF8fARG(UTF, len, RExC_precomp), ellipses))
+
+/*
+ * Simple_vFAIL -- like FAIL, but marks the current location in the scan
+ */
+#define Simple_vFAIL(m) STMT_START { \
+ Perl_croak(aTHX_ "%s" REPORT_LOCATION, \
+ m, REPORT_LOCATION_ARGS(RExC_parse)); \
+} STMT_END
+
+/*
+ * Calls SAVEDESTRUCTOR_X if needed, then Simple_vFAIL()
+ */
+#define vFAIL(m) STMT_START { \
+ PREPARE_TO_DIE; \
+ Simple_vFAIL(m); \
+} STMT_END
+
+/*
+ * Like Simple_vFAIL(), but accepts two arguments.
+ */
+#define Simple_vFAIL2(m,a1) STMT_START { \
+ S_re_croak(aTHX_ UTF, m REPORT_LOCATION, a1, \
+ REPORT_LOCATION_ARGS(RExC_parse)); \
+} STMT_END
+
+/*
+ * Calls SAVEDESTRUCTOR_X if needed, then Simple_vFAIL2().
+ */
+#define vFAIL2(m,a1) STMT_START { \
+ PREPARE_TO_DIE; \
+ Simple_vFAIL2(m, a1); \
+} STMT_END
+
+
+/*
+ * Like Simple_vFAIL(), but accepts three arguments.
+ */
+#define Simple_vFAIL3(m, a1, a2) STMT_START { \
+ S_re_croak(aTHX_ UTF, m REPORT_LOCATION, a1, a2, \
+ REPORT_LOCATION_ARGS(RExC_parse)); \
+} STMT_END
+
+/*
+ * Calls SAVEDESTRUCTOR_X if needed, then Simple_vFAIL3().
+ */
+#define vFAIL3(m,a1,a2) STMT_START { \
+ PREPARE_TO_DIE; \
+ Simple_vFAIL3(m, a1, a2); \
+} STMT_END
+
+/*
+ * Like Simple_vFAIL(), but accepts four arguments.
+ */
+#define Simple_vFAIL4(m, a1, a2, a3) STMT_START { \
+ S_re_croak(aTHX_ UTF, m REPORT_LOCATION, a1, a2, a3, \
+ REPORT_LOCATION_ARGS(RExC_parse)); \
+} STMT_END
+
+#define vFAIL4(m,a1,a2,a3) STMT_START { \
+ PREPARE_TO_DIE; \
+ Simple_vFAIL4(m, a1, a2, a3); \
+} STMT_END
+
+/* A specialized version of vFAIL2 that works with UTF8f */
+#define vFAIL2utf8f(m, a1) STMT_START { \
+ PREPARE_TO_DIE; \
+ S_re_croak(aTHX_ UTF, m REPORT_LOCATION, a1, \
+ REPORT_LOCATION_ARGS(RExC_parse)); \
+} STMT_END
+
+#define vFAIL3utf8f(m, a1, a2) STMT_START { \
+ PREPARE_TO_DIE; \
+ S_re_croak(aTHX_ UTF, m REPORT_LOCATION, a1, a2, \
+ REPORT_LOCATION_ARGS(RExC_parse)); \
+} STMT_END
+
+/* Setting this to NULL is a signal to not output warnings */
+#define TURN_OFF_WARNINGS_IN_SUBSTITUTE_PARSE \
+ STMT_START { \
+ RExC_save_copy_start_in_constructed = RExC_copy_start_in_constructed;\
+ RExC_copy_start_in_constructed = NULL; \
+ } STMT_END
+#define RESTORE_WARNINGS \
+ RExC_copy_start_in_constructed = RExC_save_copy_start_in_constructed
+
+/* Since a warning can be generated multiple times as the input is reparsed, we
+ * output it the first time we come to that point in the parse, but suppress it
+ * otherwise. 'RExC_copy_start_in_constructed' being NULL is a flag to not
+ * generate any warnings */
+#define TO_OUTPUT_WARNINGS(loc) \
+ ( RExC_copy_start_in_constructed \
+ && ((xI(loc)) - RExC_precomp) > (Ptrdiff_t) RExC_latest_warn_offset)
+
+/* After we've emitted a warning, we save the position in the input so we don't
+ * output it again */
+#define UPDATE_WARNINGS_LOC(loc) \
+ STMT_START { \
+ if (TO_OUTPUT_WARNINGS(loc)) { \
+ RExC_latest_warn_offset = MAX(sI, MIN(eI, xI(loc))) \
+ - RExC_precomp; \
+ } \
+ } STMT_END
+
+/* 'warns' is the output of the packWARNx macro used in 'code' */
+#define _WARN_HELPER(loc, warns, code) \
+ STMT_START { \
+ if (! RExC_copy_start_in_constructed) { \
+ Perl_croak( aTHX_ "panic! %s: %d: Tried to warn when none" \
+ " expected at '%s'", \
+ __FILE__, __LINE__, loc); \
+ } \
+ if (TO_OUTPUT_WARNINGS(loc)) { \
+ if (ckDEAD(warns)) \
+ PREPARE_TO_DIE; \
+ code; \
+ UPDATE_WARNINGS_LOC(loc); \
+ } \
+ } STMT_END
+
+/* m is not necessarily a "literal string", in this macro */
+#define warn_non_literal_string(loc, packed_warn, m) \
+ _WARN_HELPER(loc, packed_warn, \
+ Perl_warner(aTHX_ packed_warn, \
+ "%s" REPORT_LOCATION, \
+ m, REPORT_LOCATION_ARGS(loc)))
+#define reg_warn_non_literal_string(loc, m) \
+ warn_non_literal_string(loc, packWARN(WARN_REGEXP), m)
+
+#define ckWARN2_non_literal_string(loc, packwarn, m, a1) \
+ STMT_START { \
+ char * format; \
+ Size_t format_size = strlen(m) + strlen(REPORT_LOCATION)+ 1;\
+ Newx(format, format_size, char); \
+ my_strlcpy(format, m, format_size); \
+ my_strlcat(format, REPORT_LOCATION, format_size); \
+ SAVEFREEPV(format); \
+ _WARN_HELPER(loc, packwarn, \
+ Perl_ck_warner(aTHX_ packwarn, \
+ format, \
+ a1, REPORT_LOCATION_ARGS(loc))); \
+ } STMT_END
+
+#define ckWARNreg(loc,m) \
+ _WARN_HELPER(loc, packWARN(WARN_REGEXP), \
+ Perl_ck_warner(aTHX_ packWARN(WARN_REGEXP), \
+ m REPORT_LOCATION, \
+ REPORT_LOCATION_ARGS(loc)))
+
+#define vWARN(loc, m) \
+ _WARN_HELPER(loc, packWARN(WARN_REGEXP), \
+ Perl_warner(aTHX_ packWARN(WARN_REGEXP), \
+ m REPORT_LOCATION, \
+ REPORT_LOCATION_ARGS(loc))) \
+
+#define vWARN_dep(loc,category,m) \
+ _WARN_HELPER(loc, packWARN(category), \
+ Perl_warner(aTHX_ packWARN(category), \
+ m REPORT_LOCATION, \
+ REPORT_LOCATION_ARGS(loc)))
+
+#define ckWARNdep(loc,category,m) \
+ _WARN_HELPER(loc, packWARN(category), \
+ Perl_ck_warner_d(aTHX_ packWARN(category), \
+ m REPORT_LOCATION, \
+ REPORT_LOCATION_ARGS(loc)))
+
+#define ckWARNregdep(loc,category,m) \
+ _WARN_HELPER(loc, packWARN2(category, WARN_REGEXP), \
+ Perl_ck_warner_d(aTHX_ packWARN2(category, \
+ WARN_REGEXP), \
+ m REPORT_LOCATION, \
+ REPORT_LOCATION_ARGS(loc)))
+
+#define ckWARN2reg_d(loc,m, a1) \
+ _WARN_HELPER(loc, packWARN(WARN_REGEXP), \
+ Perl_ck_warner_d(aTHX_ packWARN(WARN_REGEXP), \
+ m REPORT_LOCATION, \
+ a1, REPORT_LOCATION_ARGS(loc)))
+
+#define ckWARN2reg(loc, m, a1) \
+ _WARN_HELPER(loc, packWARN(WARN_REGEXP), \
+ Perl_ck_warner(aTHX_ packWARN(WARN_REGEXP), \
+ m REPORT_LOCATION, \
+ a1, REPORT_LOCATION_ARGS(loc)))
+
+#define vWARN3(loc, m, a1, a2) \
+ _WARN_HELPER(loc, packWARN(WARN_REGEXP), \
+ Perl_warner(aTHX_ packWARN(WARN_REGEXP), \
+ m REPORT_LOCATION, \
+ a1, a2, REPORT_LOCATION_ARGS(loc)))
+
+#define ckWARN3reg(loc, m, a1, a2) \
+ _WARN_HELPER(loc, packWARN(WARN_REGEXP), \
+ Perl_ck_warner(aTHX_ packWARN(WARN_REGEXP), \
+ m REPORT_LOCATION, \
+ a1, a2, \
+ REPORT_LOCATION_ARGS(loc)))
+
+#define vWARN4(loc, m, a1, a2, a3) \
+ _WARN_HELPER(loc, packWARN(WARN_REGEXP), \
+ Perl_warner(aTHX_ packWARN(WARN_REGEXP), \
+ m REPORT_LOCATION, \
+ a1, a2, a3, \
+ REPORT_LOCATION_ARGS(loc)))
+
+#define ckWARN4reg(loc, m, a1, a2, a3) \
+ _WARN_HELPER(loc, packWARN(WARN_REGEXP), \
+ Perl_ck_warner(aTHX_ packWARN(WARN_REGEXP), \
+ m REPORT_LOCATION, \
+ a1, a2, a3, \
+ REPORT_LOCATION_ARGS(loc)))
+
+#define vWARN5(loc, m, a1, a2, a3, a4) \
+ _WARN_HELPER(loc, packWARN(WARN_REGEXP), \
+ Perl_warner(aTHX_ packWARN(WARN_REGEXP), \
+ m REPORT_LOCATION, \
+ a1, a2, a3, a4, \
+ REPORT_LOCATION_ARGS(loc)))
+
+#define ckWARNexperimental(loc, class, m) \
+ STMT_START { \
+ if (! RExC_warned_ ## class) { /* warn once per compilation */ \
+ RExC_warned_ ## class = 1; \
+ _WARN_HELPER(loc, packWARN(class), \
+ Perl_ck_warner_d(aTHX_ packWARN(class), \
+ m REPORT_LOCATION, \
+ REPORT_LOCATION_ARGS(loc)));\
+ } \
+ } STMT_END
+
+#define ckWARNexperimental_with_arg(loc, class, m, arg) \
+ STMT_START { \
+ if (! RExC_warned_ ## class) { /* warn once per compilation */ \
+ RExC_warned_ ## class = 1; \
+ _WARN_HELPER(loc, packWARN(class), \
+ Perl_ck_warner_d(aTHX_ packWARN(class), \
+ m REPORT_LOCATION, \
+ arg, REPORT_LOCATION_ARGS(loc)));\
+ } \
+ } STMT_END
+
+/* Convert between a pointer to a node and its offset from the beginning of the
+ * program */
+#define REGNODE_p(offset) (RExC_emit_start + (offset))
+#define REGNODE_OFFSET(node) (__ASSERT_((node) >= RExC_emit_start) \
+ (SSize_t) ((node) - RExC_emit_start))
+
+#define ProgLen(ri) ri->proglen
+#define SetProgLen(ri,x) ri->proglen = x
+
+#if PERL_ENABLE_EXPERIMENTAL_REGEX_OPTIMISATIONS
+#define EXPERIMENTAL_INPLACESCAN
+#endif /*PERL_ENABLE_EXPERIMENTAL_REGEX_OPTIMISATIONS*/
+
+#define DEBUG_RExC_seen() \
+ DEBUG_OPTIMISE_MORE_r({ \
+ Perl_re_printf( aTHX_ "RExC_seen: "); \
+ \
+ if (RExC_seen & REG_ZERO_LEN_SEEN) \
+ Perl_re_printf( aTHX_ "REG_ZERO_LEN_SEEN "); \
+ \
+ if (RExC_seen & REG_LOOKBEHIND_SEEN) \
+ Perl_re_printf( aTHX_ "REG_LOOKBEHIND_SEEN "); \
+ \
+ if (RExC_seen & REG_GPOS_SEEN) \
+ Perl_re_printf( aTHX_ "REG_GPOS_SEEN "); \
+ \
+ if (RExC_seen & REG_RECURSE_SEEN) \
+ Perl_re_printf( aTHX_ "REG_RECURSE_SEEN "); \
+ \
+ if (RExC_seen & REG_TOP_LEVEL_BRANCHES_SEEN) \
+ Perl_re_printf( aTHX_ "REG_TOP_LEVEL_BRANCHES_SEEN "); \
+ \
+ if (RExC_seen & REG_VERBARG_SEEN) \
+ Perl_re_printf( aTHX_ "REG_VERBARG_SEEN "); \
+ \
+ if (RExC_seen & REG_CUTGROUP_SEEN) \
+ Perl_re_printf( aTHX_ "REG_CUTGROUP_SEEN "); \
+ \
+ if (RExC_seen & REG_RUN_ON_COMMENT_SEEN) \
+ Perl_re_printf( aTHX_ "REG_RUN_ON_COMMENT_SEEN "); \
+ \
+ if (RExC_seen & REG_UNFOLDED_MULTI_SEEN) \
+ Perl_re_printf( aTHX_ "REG_UNFOLDED_MULTI_SEEN "); \
+ \
+ if (RExC_seen & REG_UNBOUNDED_QUANTIFIER_SEEN) \
+ Perl_re_printf( aTHX_ "REG_UNBOUNDED_QUANTIFIER_SEEN "); \
+ \
+ if (RExC_seen & REG_PESSIMIZE_SEEN) \
+ Perl_re_printf( aTHX_ "REG_PESSIMIZE_SEEN "); \
+ \
+ Perl_re_printf( aTHX_ "\n"); \
+ });
+
+#define DEBUG_SHOW_STUDY_FLAG(flags,flag) \
+ if ((flags) & flag) Perl_re_printf( aTHX_ "%s ", #flag)
+
+
+#ifdef DEBUGGING
+# define DEBUG_STUDYDATA(where, data, depth, is_inf, min, stopmin, delta) \
+ debug_studydata(where, data, depth, is_inf, min, stopmin, delta)
+
+# define DEBUG_PEEP(str, scan, depth, flags) \
+ debug_peep(str, pRExC_state, scan, depth, flags)
+#else
+# define DEBUG_STUDYDATA(where, data, depth, is_inf, min, stopmin, delta) NOOP
+# define DEBUG_PEEP(str, scan, depth, flags) NOOP
+#endif
+
+#define REGTAIL(x,y,z) regtail((x),(y),(z),depth+1)
+#ifdef DEBUGGING
+#define REGTAIL_STUDY(x,y,z) regtail_study((x),(y),(z),depth+1)
+#else
+#define REGTAIL_STUDY(x,y,z) regtail((x),(y),(z),depth+1)
+#endif
+
+#define MADE_TRIE 1
+#define MADE_JUMP_TRIE 2
+#define MADE_EXACT_TRIE 4
+
+#define INVLIST_INDEX 0
+#define ONLY_LOCALE_MATCHES_INDEX 1
+#define DEFERRED_USER_DEFINED_INDEX 2
+
+/* These two functions currently do the exact same thing */
+#define ssc_init_zero ssc_init
+
+#define ssc_add_cp(ssc, cp) ssc_add_range((ssc), (cp), (cp))
+#define ssc_match_all_cp(ssc) ssc_add_range(ssc, 0, UV_MAX)
+
+#ifdef DEBUGGING
+#define REGNODE_GUTS(state,op,extra_size) \
+ regnode_guts_debug(state,op,extra_size)
+#else
+#define REGNODE_GUTS(state,op,extra_size) \
+ regnode_guts(state,extra_size)
+#endif
+
+#define CLEAR_OPTSTART \
+ if (optstart) STMT_START { \
+ DEBUG_OPTIMISE_r(Perl_re_printf( aTHX_ \
+ " (%" IVdf " nodes)\n", (IV)(node - optstart))); \
+ optstart=NULL; \
+ } STMT_END
+
+#define DUMPUNTIL(b,e) \
+ CLEAR_OPTSTART; \
+ node = dumpuntil(r,start,(b),(e),last,sv,indent+1,depth+1);
+
+#define REGNODE_STEP_OVER(ret,t1,t2) \
+ NEXT_OFF(REGNODE_p(ret)) = ((sizeof(t1)+sizeof(t2))/sizeof(regnode))
+
+#endif /* REGCOMP_INTERNAL_H */
diff --git a/Master/tlpkg/tlperl/lib/CORE/regexp.h b/Master/tlpkg/tlperl/lib/CORE/regexp.h
index c4210edf843..243cf246c69 100644
--- a/Master/tlpkg/tlperl/lib/CORE/regexp.h
+++ b/Master/tlpkg/tlperl/lib/CORE/regexp.h
@@ -22,10 +22,30 @@
typedef SSize_t regnode_offset;
+struct regnode_meta {
+ U8 type;
+ U8 arg_len;
+ U8 arg_len_varies;
+ U8 off_by_arg;
+};
+
+/* this ensures that on alignment sensitive platforms
+ * this struct is aligned on 32 bit boundaries */
+union regnode_head {
+ struct {
+ union {
+ U8 flags;
+ U8 str_len_u8;
+ U8 first_byte;
+ } u_8;
+ U8 type;
+ U16 next_off;
+ } data;
+ U32 data_u32;
+};
+
struct regnode {
- U8 flags;
- U8 type;
- U16 next_off;
+ union regnode_head head;
};
typedef struct regnode regnode;
@@ -39,7 +59,7 @@ struct regexp;
struct reg_substr_datum {
SSize_t min_offset; /* min pos (in chars) that substr must appear */
- SSize_t max_offset /* max pos (in chars) that substr must appear */;
+ SSize_t max_offset; /* max pos (in chars) that substr must appear */
SV *substr; /* non-utf8 variant */
SV *utf8_substr; /* utf8 variant */
SSize_t end_shift; /* how many fixed chars must end the string */
@@ -55,11 +75,13 @@ struct reg_substr_data {
# define SV_SAVED_COPY
# endif
-/* offsets within a string of a particular /(.)/ capture */
-
+/* offsets within a string of a particular /(.)/ capture
+ * if you change this by adding new non-temporary fields
+ * then be sure to update Perl_rxres_save() in pp_ctl.c */
typedef struct regexp_paren_pair {
SSize_t start;
SSize_t end;
+
/* 'start_tmp' records a new opening position before the matching end
* has been found, so that the old start and end values are still
* valid, e.g.
@@ -69,7 +91,7 @@ typedef struct regexp_paren_pair {
SSize_t start_tmp;
} regexp_paren_pair;
-# if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C)
+# if defined(PERL_IN_REGCOMP_ANY) || defined(PERL_IN_UTF8_C)
# define _invlist_union(a, b, output) _invlist_union_maybe_complement_2nd(a, b, FALSE, output)
# define _invlist_intersection(a, b, output) _invlist_intersection_maybe_complement_2nd(a, b, FALSE, output)
@@ -118,13 +140,23 @@ typedef struct regexp {
* Information about the match that the perl core uses to manage things
*/
+ /* see comment in regcomp_internal.h about branch reset to understand
+ the distinction between physical and logical capture buffers */
+ U32 nparens; /* physical number of capture buffers */
+ U32 logical_nparens; /* logical_number of capture buffers */
+ I32 *logical_to_parno; /* map logical parno to first physcial */
+ I32 *parno_to_logical; /* map every physical parno to logical */
+ I32 *parno_to_logical_next; /* map every physical parno to the next
+ physical with the same logical id */
+
U32 extflags; /* Flags used both externally and internally */
- U32 nparens; /* number of capture buffers */
+ SSize_t maxlen; /* maximum possible number of chars in string to match */
SSize_t minlen; /* minimum possible number of chars in string to match */
- SSize_t minlenret; /* mininum possible number of chars in $& */
+ SSize_t minlenret; /* minimum possible number of chars in $& */
STRLEN gofs; /* chars left of pos that we search from */
/* substring data about strings that must appear in
* the final match, used for optimisations */
+
struct reg_substr_data *substrs;
/* private engine specific data */
@@ -142,6 +174,7 @@ typedef struct regexp {
char **recurse_locinput; /* used to detect infinite recursion, XXX: move to internal */
U32 lastcloseparen; /* last close paren matched ($^N) */
+
/*---------------------------------------------------------------------- */
/* offset from wrapped to the start of precomp */
@@ -158,7 +191,6 @@ typedef struct regexp {
SSize_t sublen; /* Length of string pointed by subbeg */
SSize_t suboffset; /* byte offset of subbeg from logical start of str */
SSize_t subcoffset; /* suboffset equiv, but in chars (for @-/@+) */
- SSize_t maxlen; /* minimum possible number of chars in string to match */
/*---------------------------------------------------------------------- */
@@ -167,7 +199,20 @@ typedef struct regexp {
} regexp;
-# define RXp_PAREN_NAMES(rx) ((rx)->paren_names)
+#define RXp_PAREN_NAMES(rx) ((rx)->paren_names)
+
+#define RXp_OFFS_START(rx,n) \
+ RXp_OFFSp(rx)[(n)].start
+
+#define RXp_OFFS_END(rx,n) \
+ RXp_OFFSp(rx)[(n)].end
+
+#define RXp_OFFS_VALID(rx,n) \
+ (RXp_OFFSp(rx)[(n)].end != -1 && RXp_OFFSp(rx)[(n)].start != -1 )
+
+#define RX_OFFS_START(rx_sv,n) RXp_OFFS_START(ReANY(rx_sv),n)
+#define RX_OFFS_END(rx_sv,n) RXp_OFFS_END(ReANY(rx_sv),n)
+#define RX_OFFS_VALID(rx_sv,n) RXp_OFFS_VALID(ReANY(rx_sv),n)
/* used for high speed searches */
typedef struct re_scream_pos_data_s
@@ -209,9 +254,9 @@ typedef struct regexp_engine {
void* (*dupe) (pTHX_ REGEXP * const rx, CLONE_PARAMS *param);
# endif
REGEXP* (*op_comp) (pTHX_ SV ** const patternp, int pat_count,
- OP *expr, const struct regexp_engine* eng,
- REGEXP *old_re,
- bool *is_bare_re, U32 orig_rx_flags, U32 pm_flags);
+ OP *expr, const struct regexp_engine* eng,
+ REGEXP *old_re,
+ bool *is_bare_re, U32 orig_rx_flags, U32 pm_flags);
} regexp_engine;
/*
@@ -526,30 +571,53 @@ and check for NULL.
# define RX_COMPFLAGS(rx_sv) RXp_COMPFLAGS(ReANY(rx_sv))
# define RXp_ENGINE(prog) ((prog)->engine)
# define RX_ENGINE(rx_sv) (RXp_ENGINE(ReANY(rx_sv)))
-# define RXp_SUBBEG(prog) (prog->subbeg)
+# define RXp_SUBBEG(prog) ((prog)->subbeg)
# define RX_SUBBEG(rx_sv) (RXp_SUBBEG(ReANY(rx_sv)))
-# define RXp_SUBOFFSET(prog) (prog->suboffset)
+# define RXp_SUBOFFSET(prog) ((prog)->suboffset)
# define RX_SUBOFFSET(rx_sv) (RXp_SUBOFFSET(ReANY(rx_sv)))
-# define RX_SUBCOFFSET(rx_sv) (ReANY(rx_sv)->subcoffset)
-# define RXp_OFFS(prog) (prog->offs)
-# define RX_OFFS(rx_sv) (RXp_OFFS(ReANY(rx_sv)))
-# define RXp_NPARENS(prog) (prog->nparens)
+# define RXp_SUBCOFFSET(prog) ((prog)->subcoffset)
+# define RX_SUBCOFFSET(rx_sv) (RXp_SUBCOFFSET(ReANY(rx_sv)))
+# define RXp_OFFSp(prog) ((prog)->offs)
+# define RX_OFFSp(rx_sv) (RXp_OFFSp(ReANY(rx_sv)))
+# define RXp_LOGICAL_NPARENS(prog) ((prog)->logical_nparens)
+# define RX_LOGICAL_NPARENS(rx_sv) (RXp_LOGICAL_NPARENS(ReANY(rx_sv)))
+# define RXp_LOGICAL_TO_PARNO(prog) ((prog)->logical_to_parno)
+# define RX_LOGICAL_TO_PARNO(rx_sv) (RXp_LOGICAL_TO_PARNO(ReANY(rx_sv)))
+# define RXp_PARNO_TO_LOGICAL(prog) ((prog)->parno_to_logical)
+# define RX_PARNO_TO_LOGICAL(rx_sv) (RXp_PARNO_TO_LOGICAL(ReANY(rx_sv)))
+# define RXp_PARNO_TO_LOGICAL_NEXT(prog) ((prog)->parno_to_logical_next)
+# define RX_PARNO_TO_LOGICAL_NEXT(rx_sv) (RXp_PARNO_TO_LOGICAL_NEXT(ReANY(rx_sv)))
+# define RXp_NPARENS(prog) ((prog)->nparens)
# define RX_NPARENS(rx_sv) (RXp_NPARENS(ReANY(rx_sv)))
-# define RX_SUBLEN(rx_sv) (ReANY(rx_sv)->sublen)
-# define RXp_MINLEN(prog) (prog->minlen)
+# define RXp_SUBLEN(prog) ((prog)->sublen)
+# define RX_SUBLEN(rx_sv) (RXp_SUBLEN(ReANY(rx_sv)))
+# define RXp_MINLEN(prog) ((prog)->minlen)
# define RX_MINLEN(rx_sv) (RXp_MINLEN(ReANY(rx_sv)))
-# define RXp_MINLENRET(prog) (prog->minlenret)
+# define RXp_MINLENRET(prog) ((prog)->minlenret)
# define RX_MINLENRET(rx_sv) (RXp_MINLENRET(ReANY(rx_sv)))
-# define RXp_GOFS(prog) (prog->gofs)
+# define RXp_GOFS(prog) ((prog)->gofs)
# define RX_GOFS(rx_sv) (RXp_GOFS(ReANY(rx_sv)))
-# define RX_LASTPAREN(rx_sv) (ReANY(rx_sv)->lastparen)
-# define RX_LASTCLOSEPAREN(rx_sv) (ReANY(rx_sv)->lastcloseparen)
-# define RXp_SAVED_COPY(prog) (prog->saved_copy)
+# define RXp_LASTPAREN(prog) ((prog)->lastparen)
+# define RX_LASTPAREN(rx_sv) (RXp_LASTPAREN(ReANY(rx_sv)))
+# define RXp_LASTCLOSEPAREN(prog) ((prog)->lastcloseparen)
+# define RX_LASTCLOSEPAREN(rx_sv) (RXp_LASTCLOSEPAREN(ReANY(rx_sv)))
+# define RXp_SAVED_COPY(prog) ((prog)->saved_copy)
# define RX_SAVED_COPY(rx_sv) (RXp_SAVED_COPY(ReANY(rx_sv)))
+# define RXp_SUBSTRS(prog) ((prog)->substrs)
+# define RX_SUBSTRS(rx_sv) (RXp_SUBSTRS(ReANY(rx_sv)))
+# define RXp_PPRIVATE(prog) ((prog)->pprivate)
+# define RX_PPRIVATE(rx_sv) (RXp_PPRIVATE(ReANY(rx_sv)))
+# define RXp_QR_ANONCV(prog) ((prog)->qr_anoncv)
+# define RX_QR_ANONCV(rx_sv) (RXp_QR_ANONCV(ReANY(rx_sv)))
+# define RXp_MOTHER_RE(prog) ((prog)->mother_re)
+# define RX_MOTHER_RE(rx_sv) (RXp_MOTHER_RE(ReANY(rx_sv)))
+# define RXp_PRE_PREFIX(prog) ((prog)->pre_prefix)
+# define RX_PRE_PREFIX(rx_sv) (RXp_PRE_PREFIX(ReANY(rx_sv)))
+
/* last match was zero-length */
# define RXp_ZERO_LEN(prog) \
- (RXp_OFFS(prog)[0].start + (SSize_t)RXp_GOFS(prog) \
- == RXp_OFFS(prog)[0].end)
+ (RXp_OFFS_START(prog,0) + (SSize_t)RXp_GOFS(prog) \
+ == RXp_OFFS_END(prog,0))
# define RX_ZERO_LEN(rx_sv) (RXp_ZERO_LEN(ReANY(rx_sv)))
#endif /* PLUGGABLE_RE_EXTENSION */
@@ -557,20 +625,24 @@ and check for NULL.
/* Stuff that needs to be included in the pluggable extension goes below here */
#ifdef PERL_ANY_COW
-# define RXp_MATCH_COPY_FREE(prog) \
- STMT_START {if (RXp_SAVED_COPY(prog)) { \
- SV_CHECK_THINKFIRST_COW_DROP(RXp_SAVED_COPY(prog)); \
- } \
- if (RXp_MATCH_COPIED(prog)) { \
- Safefree(RXp_SUBBEG(prog)); \
- RXp_MATCH_COPIED_off(prog); \
- }} STMT_END
+# define RXp_MATCH_COPY_FREE(prog) \
+ STMT_START { \
+ if (RXp_SAVED_COPY(prog)) { \
+ SV_CHECK_THINKFIRST_COW_DROP(RXp_SAVED_COPY(prog)); \
+ } \
+ if (RXp_MATCH_COPIED(prog)) { \
+ Safefree(RXp_SUBBEG(prog)); \
+ RXp_MATCH_COPIED_off(prog); \
+ } \
+ } STMT_END
#else
-# define RXp_MATCH_COPY_FREE(prog) \
- STMT_START {if (RXp_MATCH_COPIED(prog)) { \
- Safefree(RXp_SUBBEG(prog)); \
- RXp_MATCH_COPIED_off(prog); \
- }} STMT_END
+# define RXp_MATCH_COPY_FREE(prog) \
+ STMT_START { \
+ if (RXp_MATCH_COPIED(prog)) { \
+ Safefree(RXp_SUBBEG(prog)); \
+ RXp_MATCH_COPIED_off(prog); \
+ } \
+ } STMT_END
#endif
#define RX_MATCH_COPY_FREE(rx_sv) RXp_MATCH_COPY_FREE(ReANY(rx_sv))
@@ -610,17 +682,17 @@ and check for NULL.
#if defined(PERL_USE_GCC_BRACE_GROUPS)
# define ReREFCNT_inc(re) \
({ \
- /* This is here to generate a casting warning if incorrect. */ \
- REGEXP *const _rerefcnt_inc = (re); \
- assert(SvTYPE(_rerefcnt_inc) == SVt_REGEXP); \
- SvREFCNT_inc(_rerefcnt_inc); \
- _rerefcnt_inc; \
+ /* This is here to generate a casting warning if incorrect. */ \
+ REGEXP *const _rerefcnt_inc = (re); \
+ assert(SvTYPE(_rerefcnt_inc) == SVt_REGEXP); \
+ SvREFCNT_inc(_rerefcnt_inc); \
+ _rerefcnt_inc; \
})
# define ReREFCNT_dec(re) \
({ \
- /* This is here to generate a casting warning if incorrect. */ \
- REGEXP *const _rerefcnt_dec = (re); \
- SvREFCNT_dec(_rerefcnt_dec); \
+ /* This is here to generate a casting warning if incorrect. */ \
+ REGEXP *const _rerefcnt_dec = (re); \
+ SvREFCNT_dec(_rerefcnt_dec); \
})
#else
# define ReREFCNT_dec(re) SvREFCNT_dec(re)
@@ -704,7 +776,7 @@ typedef struct {
bool is_utf8_target; /* string being matched is utf8 */
bool warned; /* we have issued a recursion warning; no need for more */
} regmatch_info;
-
+
/* structures for holding and saving the state maintained by regmatch() */
@@ -772,145 +844,181 @@ typedef struct regmatch_state {
regmatch_info_aux_eval info_aux_eval;
- /* this is a fake union member that matches the first element
- * of each member that needs to store positive backtrack
- * information */
- struct {
- struct regmatch_state *prev_yes_state;
- } yes;
+ /* this is a fake union member that matches the first element
+ * of each member that needs to store positive backtrack
+ * information */
+ struct {
+ struct regmatch_state *prev_yes_state;
+ } yes;
+
+
+ /* NOTE: Regarding 'cp' and 'lastcp' in the following structs...
+ *
+ * In the majority of cases we use 'cp' for the "normal"
+ * checkpoint for paren saves, and 'lastcp' for the addtional
+ * paren saves that are done only under RE_PESSIMISTIC_PARENS.
+ *
+ * There may be a few cases where both are used always.
+ * Regardless they tend be used something like this:
+ *
+ * ST.cp = regcppush(rex, 0, maxopenparen);
+ * REGCP_SET(ST.lastcp);
+ *
+ * thus ST.cp holds the checkpoint from before we push parens,
+ * and ST.lastcp holds the checkpoint from afterwards.
+ */
/* branchlike members */
/* this is a fake union member that matches the first elements
* of each member that needs to behave like a branch */
struct {
- /* this first element must match u.yes */
- struct regmatch_state *prev_yes_state;
- U32 lastparen;
- U32 lastcloseparen;
- CHECKPOINT cp;
-
+ /* this first element must match u.yes */
+ struct regmatch_state *prev_yes_state;
+ U32 lastparen;
+ U32 lastcloseparen;
+ CHECKPOINT cp; /* see note above "struct branchlike" */
+ CHECKPOINT lastcp; /* see note above "struct branchlike" */
+ U16 before_paren;
+ U16 after_paren;
+
} branchlike;
-
- struct {
- /* the first elements must match u.branchlike */
- struct regmatch_state *prev_yes_state;
- U32 lastparen;
- U32 lastcloseparen;
- CHECKPOINT cp;
-
- regnode *next_branch; /* next branch node */
- } branch;
-
- struct {
- /* the first elements must match u.branchlike */
- struct regmatch_state *prev_yes_state;
- U32 lastparen;
- U32 lastcloseparen;
- CHECKPOINT cp;
-
- U32 accepted; /* how many accepting states left */
- bool longfold;/* saw a fold with a 1->n char mapping */
- U16 *jump; /* positive offsets from me */
- regnode *me; /* Which node am I - needed for jump tries*/
- U8 *firstpos;/* pos in string of first trie match */
- U32 firstchars;/* len in chars of firstpos from start */
- U16 nextword;/* next word to try */
- U16 topword; /* longest accepted word */
- } trie;
+
+ struct {
+ /* the first elements must match u.branchlike */
+ struct regmatch_state *prev_yes_state;
+ U32 lastparen;
+ U32 lastcloseparen;
+ CHECKPOINT cp; /* see note above "struct branchlike" */
+ CHECKPOINT lastcp; /* see note above "struct branchlike" */
+ U16 before_paren;
+ U16 after_paren;
+
+ regnode *next_branch; /* next branch node */
+ } branch;
+
+ struct {
+ /* the first elements must match u.branchlike */
+ struct regmatch_state *prev_yes_state;
+ U32 lastparen;
+ U32 lastcloseparen;
+ CHECKPOINT cp; /* see note above "struct branchlike" */
+ CHECKPOINT lastcp; /* see note above "struct branchlike" */
+ U16 before_paren;
+ U16 after_paren;
+
+ U32 accepted; /* how many accepting states left */
+ bool longfold; /* saw a fold with a 1->n char mapping */
+ U16 *jump; /* positive offsets from me */
+ U16 *j_before_paren;
+ U16 *j_after_paren;
+ regnode *me; /* Which node am I - needed for jump tries*/
+ U8 *firstpos; /* pos in string of first trie match */
+ U32 firstchars; /* len in chars of firstpos from start */
+ U16 nextword; /* next word to try */
+ U16 topword; /* longest accepted word */
+ } trie;
/* special types - these members are used to store state for special
regops like eval, if/then, lookaround and the markpoint state */
- struct {
- /* this first element must match u.yes */
- struct regmatch_state *prev_yes_state;
- struct regmatch_state *prev_curlyx;
+ struct {
+ /* this first element must match u.yes */
+ struct regmatch_state *prev_yes_state;
+ struct regmatch_state *prev_curlyx;
struct regmatch_state *prev_eval;
- REGEXP *prev_rex;
- CHECKPOINT cp; /* remember current savestack indexes */
- CHECKPOINT lastcp;
- U32 close_paren; /* which close bracket is our end (+1) */
- regnode *B; /* the node following us */
+ REGEXP *prev_rex;
+ CHECKPOINT cp; /* see note above "struct branchlike" */
+ CHECKPOINT lastcp; /* see note above "struct branchlike" */
+ U32 close_paren; /* which close bracket is our end (+1) */
+ regnode *B; /* the node following us */
char *prev_recurse_locinput;
- } eval;
-
- struct {
- /* this first element must match u.yes */
- struct regmatch_state *prev_yes_state;
- I32 wanted;
- I32 logical; /* saved copy of 'logical' var */
- U8 count; /* number of beginning positions */
- char *start;
- char *end;
- regnode *me; /* the IFMATCH/SUSPEND/UNLESSM node */
- } ifmatch; /* and SUSPEND/UNLESSM */
-
- struct {
- /* this first element must match u.yes */
- struct regmatch_state *prev_yes_state;
- struct regmatch_state *prev_mark;
- SV* mark_name;
- char *mark_loc;
- } mark;
-
- struct {
- int val;
- } keeper;
+ } eval;
+
+ struct {
+ /* this first element must match u.yes */
+ struct regmatch_state *prev_yes_state;
+ I32 wanted;
+ I32 logical; /* saved copy of 'logical' var */
+ U8 count; /* number of beginning positions */
+ char *start;
+ char *end;
+ regnode *me; /* the IFMATCH/SUSPEND/UNLESSM node */
+ char *prev_match_end;
+ } ifmatch; /* and SUSPEND/UNLESSM */
+
+ struct {
+ /* this first element must match u.yes */
+ struct regmatch_state *prev_yes_state;
+ struct regmatch_state *prev_mark;
+ SV *mark_name;
+ char *mark_loc;
+ } mark;
+
+ struct {
+ int val;
+ } keeper;
/* quantifiers - these members are used for storing state for
the regops used to implement quantifiers */
- struct {
- /* this first element must match u.yes */
- struct regmatch_state *prev_yes_state;
- struct regmatch_state *prev_curlyx; /* previous cur_curlyx */
- regnode *me; /* the CURLYX node */
- regnode *B; /* the B node in /A*B/ */
- CHECKPOINT cp; /* remember current savestack index */
- bool minmod;
- int parenfloor;/* how far back to strip paren data */
-
- /* these two are modified by WHILEM */
- int count; /* how many instances of A we've matched */
- char *lastloc;/* where previous A matched (0-len detect) */
- } curlyx;
-
- struct {
- /* this first element must match u.yes */
- struct regmatch_state *prev_yes_state;
- struct regmatch_state *save_curlyx;
- CHECKPOINT cp; /* remember current savestack indexes */
- CHECKPOINT lastcp;
- char *save_lastloc; /* previous curlyx.lastloc */
- I32 cache_offset;
- I32 cache_mask;
- } whilem;
-
- struct {
- /* this first element must match u.yes */
- struct regmatch_state *prev_yes_state;
- CHECKPOINT cp;
- U32 lastparen;
- U32 lastcloseparen;
- I32 alen; /* length of first-matched A string */
- I32 count;
- bool minmod;
- regnode *A, *B; /* the nodes corresponding to /A*B/ */
- regnode *me; /* the curlym node */
+ struct {
+ /* this first element must match u.yes */
+ struct regmatch_state *prev_yes_state;
+ struct regmatch_state *prev_curlyx; /* previous cur_curlyx */
+ regnode *me; /* the CURLYX node */
+ regnode *B; /* the B node in /A*B/ */
+ CHECKPOINT cp; /* see note above "struct branchlike" */
+ CHECKPOINT lastcp; /* see note above "struct branchlike" */
+ bool minmod;
+ int parenfloor; /* how far back to strip paren data */
+
+ /* these two are modified by WHILEM */
+ int count; /* how many instances of A we've matched */
+ char *lastloc; /* where previous A matched (0-len detect) */
+ } curlyx;
+
+ struct {
+ /* this first element must match u.yes */
+ struct regmatch_state *prev_yes_state;
+ struct regmatch_state *save_curlyx;
+ CHECKPOINT cp; /* see note above "struct branchlike" */
+ CHECKPOINT lastcp; /* see note above "struct branchlike" */
+ char *save_lastloc; /* previous curlyx.lastloc */
+ I32 cache_offset;
+ I32 cache_mask;
+ } whilem;
+
+ struct {
+ /* this first element must match u.yes */
+ struct regmatch_state *prev_yes_state;
+ U32 lastparen;
+ U32 lastcloseparen;
+ CHECKPOINT cp; /* see note above "struct branchlike" */
+ CHECKPOINT lastcp; /* see note above "struct branchlike" */
+ I32 alen; /* length of first-matched A string */
+ I32 count;
+ bool minmod;
+ regnode *A, *B; /* the nodes corresponding to /A*B/ */
+ regnode *me; /* the curlym node */
struct next_matchable_info Binfo;
- } curlym;
-
- struct {
- U32 paren;
- CHECKPOINT cp;
- U32 lastparen;
- U32 lastcloseparen;
- char *maxpos; /* highest possible point in string to match */
- char *oldloc; /* the previous locinput */
- int count;
- int min, max; /* {m,n} */
- regnode *A, *B; /* the nodes corresponding to /A*B/ */
+ } curlym;
+
+ struct {
+ U32 paren;
+ U32 lastparen;
+ U32 lastcloseparen;
+ CHECKPOINT cp; /* see note above "struct branchlike" */
+ CHECKPOINT lastcp; /* see note above "struct branchlike" */
+ char *maxpos; /* highest possible point in string to match */
+ char *oldloc; /* the previous locinput */
+ int count;
+ int min, max; /* {m,n} */
+ regnode *A, *B; /* the nodes corresponding to /A*B/ */
struct next_matchable_info Binfo;
- } curly; /* and CURLYN/PLUS/STAR */
+ } curly; /* and CURLYN/PLUS/STAR */
+ struct {
+ CHECKPOINT cp;
+ CHECKPOINT lastcp;
+ } backref; /* REF and friends */
} u;
} regmatch_state;
@@ -919,7 +1027,7 @@ typedef struct regmatch_state {
/* how many regmatch_state structs to allocate as a single slab.
* We do it in 4K blocks for efficiency. The "3" is 2 for the next/prev
* pointers, plus 1 for any mythical malloc overhead. */
-
+
#define PERL_REGMATCH_SLAB_SLOTS \
((4096 - 3 * sizeof (void*)) / sizeof(regmatch_state))
@@ -929,6 +1037,7 @@ typedef struct regmatch_slab {
} regmatch_slab;
+#define REG_FETCH_ABSOLUTE 1
/*
* ex: set ts=8 sts=4 sw=4 et:
diff --git a/Master/tlpkg/tlperl/lib/CORE/reginline.h b/Master/tlpkg/tlperl/lib/CORE/reginline.h
new file mode 100755
index 00000000000..fd2a9d1e737
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/CORE/reginline.h
@@ -0,0 +1,64 @@
+
+#ifndef PERL_REGINLINE_H
+
+/*
+ - regnext - dig the "next" pointer out of a node
+ */
+PERL_STATIC_INLINE
+regnode *
+Perl_regnext(pTHX_ const regnode *p)
+{
+ I32 offset;
+
+ if (!p)
+ return(NULL);
+
+ if (OP(p) > REGNODE_MAX) { /* regnode.type is unsigned */
+ Perl_croak(aTHX_ "Corrupted regexp opcode %d > %d",
+ (int)OP(p), (int)REGNODE_MAX);
+ }
+
+ offset = (REGNODE_OFF_BY_ARG(OP(p)) ? ARG1u(p) : NEXT_OFF(p));
+ if (offset == 0)
+ return(NULL);
+
+ return(regnode *)(p+offset);
+}
+
+/*
+ - regnode_after - find the node physically following p in memory,
+ taking into account the size of p as determined by OP(p), our
+ sizing data, and possibly the STR_SZ() macro.
+ */
+PERL_STATIC_INLINE
+regnode *
+Perl_regnode_after(pTHX_ const regnode *p, const bool varies)
+{
+ assert(p);
+ const U8 op = OP(p);
+ assert(op < REGNODE_MAX);
+ const regnode *ret = p + NODE_STEP_REGNODE + REGNODE_ARG_LEN(op);
+ if (varies || REGNODE_ARG_LEN_VARIES(op))
+ ret += STR_SZ(STR_LEN(p));
+ return (regnode *)ret;
+}
+
+/* validate that the passed in node and extra length would match that
+ * returned by regnode_after() */
+PERL_STATIC_INLINE
+bool
+Perl_check_regnode_after(pTHX_ const regnode *p, const STRLEN extra)
+{
+ const regnode *nextoper = regnode_after((regnode *)p,FALSE);
+ const regnode *other = REGNODE_AFTER_PLUS(p, extra);
+ if (nextoper != other) {
+ return FALSE;
+ }
+ return TRUE;
+}
+
+#define PERL_REGINLINE_H
+#endif
+/*
+ * ex: set ts=8 sts=4 sw=4 et:
+ */
diff --git a/Master/tlpkg/tlperl/lib/CORE/regnodes.h b/Master/tlpkg/tlperl/lib/CORE/regnodes.h
index 94b71102eb3..17a84225861 100644
--- a/Master/tlpkg/tlperl/lib/CORE/regnodes.h
+++ b/Master/tlpkg/tlperl/lib/CORE/regnodes.h
@@ -1,1499 +1,1601 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
!!!!!!! DO NOT EDIT THIS FILE !!!!!!!
- This file is built by regen/regcomp.pl from regcomp.sym.
+ This file is built by regen/regcomp.pl from regcomp.sym, op_reg_common.h
+ and regexp.h.
Any changes made here will be lost!
*/
#if defined(PERL_CORE) || defined(PERL_EXT_RE_BUILD)
+
+/* typedefs for regex nodes - one typedef per node type */
+
+typedef struct regnode_2 tregnode_ACCEPT;
+typedef struct regnode_1 tregnode_AHOCORASICK;
+typedef struct regnode_charclass tregnode_AHOCORASICKC;
+typedef struct regnode_charclass tregnode_ANYOF;
+typedef struct regnode_charclass tregnode_ANYOFD;
+typedef struct regnode_1 tregnode_ANYOFH;
+typedef struct regnode_1 tregnode_ANYOFHb;
+typedef struct regnode_bbm tregnode_ANYOFHbbm;
+typedef struct regnode_1 tregnode_ANYOFHr;
+typedef struct regnode_1 tregnode_ANYOFHs;
+typedef struct regnode_charclass tregnode_ANYOFL;
+typedef struct regnode_1 tregnode_ANYOFM;
+typedef struct regnode_charclass_posixl tregnode_ANYOFPOSIXL;
+typedef struct regnode_1 tregnode_ANYOFR;
+typedef struct regnode_1 tregnode_ANYOFRb;
+typedef struct regnode tregnode_BOUND;
+typedef struct regnode tregnode_BOUNDA;
+typedef struct regnode tregnode_BOUNDL;
+typedef struct regnode tregnode_BOUNDU;
+typedef struct regnode_1 tregnode_BRANCH;
+typedef struct regnode_2 tregnode_BRANCHJ;
+typedef struct regnode_1 tregnode_CLOSE;
+typedef struct regnode tregnode_CLUMP;
+typedef struct regnode_1 tregnode_COMMIT;
+typedef struct regnode_3 tregnode_CURLY;
+typedef struct regnode_3 tregnode_CURLYM;
+typedef struct regnode_3 tregnode_CURLYN;
+typedef struct regnode_3 tregnode_CURLYX;
+typedef struct regnode_1 tregnode_CUTGROUP;
+typedef struct regnode_1 tregnode_DEFINEP;
+typedef struct regnode tregnode_END;
+typedef struct regnode tregnode_ENDLIKE;
+typedef struct regnode tregnode_EOS;
+typedef struct regnode_2 tregnode_EVAL;
+typedef struct regnode tregnode_EXACT;
+typedef struct regnode tregnode_EXACTF;
+typedef struct regnode tregnode_EXACTFAA;
+typedef struct regnode tregnode_EXACTFAA_NO_TRIE;
+typedef struct regnode tregnode_EXACTFL;
+typedef struct regnode tregnode_EXACTFLU8;
+typedef struct regnode tregnode_EXACTFU;
+typedef struct regnode tregnode_EXACTFUP;
+typedef struct regnode tregnode_EXACTFU_REQ8;
+typedef struct regnode tregnode_EXACTFU_S_EDGE;
+typedef struct regnode tregnode_EXACTL;
+typedef struct regnode tregnode_EXACT_REQ8;
+typedef struct regnode_2 tregnode_GOSUB;
+typedef struct regnode tregnode_GPOS;
+typedef struct regnode_1 tregnode_GROUPP;
+typedef struct regnode_1 tregnode_GROUPPN;
+typedef struct regnode_1 tregnode_IFMATCH;
+typedef struct regnode_1 tregnode_IFTHEN;
+typedef struct regnode_1 tregnode_INSUBP;
+typedef struct regnode tregnode_KEEPS;
+typedef struct regnode_1 tregnode_LEXACT;
+typedef struct regnode_1 tregnode_LEXACT_REQ8;
+typedef struct regnode tregnode_LNBREAK;
+typedef struct regnode tregnode_LOGICAL;
+typedef struct regnode_1 tregnode_LONGJMP;
+typedef struct regnode tregnode_LOOKBEHIND_END;
+typedef struct regnode_1 tregnode_MARKPOINT;
+typedef struct regnode tregnode_MBOL;
+typedef struct regnode tregnode_MEOL;
+typedef struct regnode tregnode_MINMOD;
+typedef struct regnode_1 tregnode_NANYOFM;
+typedef struct regnode tregnode_NBOUND;
+typedef struct regnode tregnode_NBOUNDA;
+typedef struct regnode tregnode_NBOUNDL;
+typedef struct regnode tregnode_NBOUNDU;
+typedef struct regnode tregnode_NOTHING;
+typedef struct regnode tregnode_NPOSIXA;
+typedef struct regnode tregnode_NPOSIXD;
+typedef struct regnode tregnode_NPOSIXL;
+typedef struct regnode tregnode_NPOSIXU;
+typedef struct regnode_1 tregnode_OPEN;
+typedef struct regnode_1 tregnode_OPFAIL;
+typedef struct regnode tregnode_OPTIMIZED;
+typedef struct regnode tregnode_PLUS;
+typedef struct regnode tregnode_POSIXA;
+typedef struct regnode tregnode_POSIXD;
+typedef struct regnode tregnode_POSIXL;
+typedef struct regnode tregnode_POSIXU;
+typedef struct regnode_1 tregnode_PRUNE;
+typedef struct regnode tregnode_PSEUDO;
+typedef struct regnode_2 tregnode_REF;
+typedef struct regnode_2 tregnode_REFF;
+typedef struct regnode_2 tregnode_REFFA;
+typedef struct regnode_2 tregnode_REFFAN;
+typedef struct regnode_2 tregnode_REFFL;
+typedef struct regnode_2 tregnode_REFFLN;
+typedef struct regnode_2 tregnode_REFFN;
+typedef struct regnode_2 tregnode_REFFU;
+typedef struct regnode_2 tregnode_REFFUN;
+typedef struct regnode_2 tregnode_REFN;
+typedef struct regnode_p tregnode_REGEX_SET;
+typedef struct regnode tregnode_REG_ANY;
+typedef struct regnode_1 tregnode_RENUM;
+typedef struct regnode tregnode_SANY;
+typedef struct regnode tregnode_SBOL;
+typedef struct regnode tregnode_SEOL;
+typedef struct regnode_1 tregnode_SKIP;
+typedef struct regnode tregnode_SRCLOSE;
+typedef struct regnode tregnode_SROPEN;
+typedef struct regnode tregnode_STAR;
+typedef struct regnode tregnode_SUCCEED;
+typedef struct regnode_1 tregnode_SUSPEND;
+typedef struct regnode tregnode_TAIL;
+typedef struct regnode_1 tregnode_TRIE;
+typedef struct regnode_charclass tregnode_TRIEC;
+typedef struct regnode_1 tregnode_UNLESSM;
+typedef struct regnode_1 tregnode_VERB;
+typedef struct regnode tregnode_WHILEM;
+
+/* end typedefs */
+
/* Regops and State definitions */
-#define REGNODE_MAX 109
-#define REGMATCH_STATE_MAX 149
+#define REGNODE_MAX 111
+#define REGMATCH_STATE_MAX 153
-/* -- For regexec.c to switch on target being utf8 (t8) or not (tb, b='byte');
- * same with pattern (p8, pb) -- */
+/* -- For regexec.c to switch on target being utf8 (t8) or not (tb, b='byte'); */
+#define with_t_UTF8ness(op, t_utf8) (((op) << 1) + (cBOOL(t_utf8)))
+/* -- same, but also with pattern (p8, pb) -- */
#define with_tp_UTF8ness(op, t_utf8, p_utf8) \
(((op) << 2) + (cBOOL(t_utf8) << 1) + cBOOL(p_utf8))
/* The #defines below give both the basic regnode and the expanded version for
switching on utf8ness */
-#define END 0 /* 0x00 End of program. */
-#define END_tb_pb 0 /* 0x000 */
-#define END_tb_p8 1 /* 0x001 */
-#define END_t8_pb 2 /* 0x002 */
-#define END_t8_p8 3 /* 0x003 */
-
-#define SUCCEED 1 /* 0x01 Return from a subroutine,
- basically. */
-#define SUCCEED_tb_pb 4 /* 0x004 */
-#define SUCCEED_tb_p8 5 /* 0x005 */
-#define SUCCEED_t8_pb 6 /* 0x006 */
-#define SUCCEED_t8_p8 7 /* 0x007 */
-
-#define SBOL 2 /* 0x02 Match "" at beginning of
- line: /^/, /\A/ */
-#define SBOL_tb_pb 8 /* 0x008 */
-#define SBOL_tb_p8 9 /* 0x009 */
-#define SBOL_t8_pb 10 /* 0x00a */
-#define SBOL_t8_p8 11 /* 0x00b */
-
-#define BOL 2 /* 0x02 Match "" at beginning of
- line: /^/, /\A/ */
-#define BOL_tb_pb 8 /* 0x008 */
-#define BOL_tb_p8 9 /* 0x009 */
-#define BOL_t8_pb 10 /* 0x00a */
-#define BOL_t8_p8 11 /* 0x00b */
-
-#define MBOL 3 /* 0x03 Same, assuming multiline:
- /^/m */
-#define MBOL_tb_pb 12 /* 0x00c */
-#define MBOL_tb_p8 13 /* 0x00d */
-#define MBOL_t8_pb 14 /* 0x00e */
-#define MBOL_t8_p8 15 /* 0x00f */
-
-#define SEOL 4 /* 0x04 Match "" at end of line:
- /$/ */
-#define SEOL_tb_pb 16 /* 0x010 */
-#define SEOL_tb_p8 17 /* 0x011 */
-#define SEOL_t8_pb 18 /* 0x012 */
-#define SEOL_t8_p8 19 /* 0x013 */
-
-#define EOL 4 /* 0x04 Match "" at end of line:
- /$/ */
-#define EOL_tb_pb 16 /* 0x010 */
-#define EOL_tb_p8 17 /* 0x011 */
-#define EOL_t8_pb 18 /* 0x012 */
-#define EOL_t8_p8 19 /* 0x013 */
-
-#define MEOL 5 /* 0x05 Same, assuming multiline:
- /$/m */
-#define MEOL_tb_pb 20 /* 0x014 */
-#define MEOL_tb_p8 21 /* 0x015 */
-#define MEOL_t8_pb 22 /* 0x016 */
-#define MEOL_t8_p8 23 /* 0x017 */
-
-#define EOS 6 /* 0x06 Match "" at end of string:
- /\z/ */
-#define EOS_tb_pb 24 /* 0x018 */
-#define EOS_tb_p8 25 /* 0x019 */
-#define EOS_t8_pb 26 /* 0x01a */
-#define EOS_t8_p8 27 /* 0x01b */
-
-#define GPOS 7 /* 0x07 Matches where last m//g
- left off. */
-#define GPOS_tb_pb 28 /* 0x01c */
-#define GPOS_tb_p8 29 /* 0x01d */
-#define GPOS_t8_pb 30 /* 0x01e */
-#define GPOS_t8_p8 31 /* 0x01f */
-
-#define BOUND 8 /* 0x08 Like BOUNDA for non-utf8,
- otherwise like BOUNDU */
-#define BOUND_tb_pb 32 /* 0x020 */
-#define BOUND_tb_p8 33 /* 0x021 */
-#define BOUND_t8_pb 34 /* 0x022 */
-#define BOUND_t8_p8 35 /* 0x023 */
-
-#define BOUNDL 9 /* 0x09 Like BOUND/BOUNDU, but \w
- and \W are defined by current
- locale */
-#define BOUNDL_tb_pb 36 /* 0x024 */
-#define BOUNDL_tb_p8 37 /* 0x025 */
-#define BOUNDL_t8_pb 38 /* 0x026 */
-#define BOUNDL_t8_p8 39 /* 0x027 */
-
-#define BOUNDU 10 /* 0x0a Match "" at any boundary
- of a given type using /u rules.
- */
-#define BOUNDU_tb_pb 40 /* 0x028 */
-#define BOUNDU_tb_p8 41 /* 0x029 */
-#define BOUNDU_t8_pb 42 /* 0x02a */
-#define BOUNDU_t8_p8 43 /* 0x02b */
-
-#define BOUNDA 11 /* 0x0b Match "" at any boundary
- between \w\W or \W\w, where \w
- is [_a-zA-Z0-9] */
-#define BOUNDA_tb_pb 44 /* 0x02c */
-#define BOUNDA_tb_p8 45 /* 0x02d */
-#define BOUNDA_t8_pb 46 /* 0x02e */
-#define BOUNDA_t8_p8 47 /* 0x02f */
-
-#define NBOUND 12 /* 0x0c Like NBOUNDA for non-utf8,
- otherwise like BOUNDU */
-#define NBOUND_tb_pb 48 /* 0x030 */
-#define NBOUND_tb_p8 49 /* 0x031 */
-#define NBOUND_t8_pb 50 /* 0x032 */
-#define NBOUND_t8_p8 51 /* 0x033 */
-
-#define NBOUNDL 13 /* 0x0d Like NBOUND/NBOUNDU, but
- \w and \W are defined by
- current locale */
-#define NBOUNDL_tb_pb 52 /* 0x034 */
-#define NBOUNDL_tb_p8 53 /* 0x035 */
-#define NBOUNDL_t8_pb 54 /* 0x036 */
-#define NBOUNDL_t8_p8 55 /* 0x037 */
-
-#define NBOUNDU 14 /* 0x0e Match "" at any
- non-boundary of a given type
- using using /u rules. */
-#define NBOUNDU_tb_pb 56 /* 0x038 */
-#define NBOUNDU_tb_p8 57 /* 0x039 */
-#define NBOUNDU_t8_pb 58 /* 0x03a */
-#define NBOUNDU_t8_p8 59 /* 0x03b */
-
-#define NBOUNDA 15 /* 0x0f Match "" betweeen any \w\w
- or \W\W, where \w is
- [_a-zA-Z0-9] */
-#define NBOUNDA_tb_pb 60 /* 0x03c */
-#define NBOUNDA_tb_p8 61 /* 0x03d */
-#define NBOUNDA_t8_pb 62 /* 0x03e */
-#define NBOUNDA_t8_p8 63 /* 0x03f */
-
-#define REG_ANY 16 /* 0x10 Match any one character
- (except newline). */
-#define REG_ANY_tb_pb 64 /* 0x040 */
-#define REG_ANY_tb_p8 65 /* 0x041 */
-#define REG_ANY_t8_pb 66 /* 0x042 */
-#define REG_ANY_t8_p8 67 /* 0x043 */
-
-#define SANY 17 /* 0x11 Match any one character.
- */
-#define SANY_tb_pb 68 /* 0x044 */
-#define SANY_tb_p8 69 /* 0x045 */
-#define SANY_t8_pb 70 /* 0x046 */
-#define SANY_t8_p8 71 /* 0x047 */
-
-#define ANYOF 18 /* 0x12 Match character in (or not
- in) this class, single char
- match only */
-#define ANYOF_tb_pb 72 /* 0x048 */
-#define ANYOF_tb_p8 73 /* 0x049 */
-#define ANYOF_t8_pb 74 /* 0x04a */
-#define ANYOF_t8_p8 75 /* 0x04b */
-
-#define ANYOFD 19 /* 0x13 Like ANYOF, but /d is in
- effect */
-#define ANYOFD_tb_pb 76 /* 0x04c */
-#define ANYOFD_tb_p8 77 /* 0x04d */
-#define ANYOFD_t8_pb 78 /* 0x04e */
-#define ANYOFD_t8_p8 79 /* 0x04f */
-
-#define ANYOFL 20 /* 0x14 Like ANYOF, but /l is in
- effect */
-#define ANYOFL_tb_pb 80 /* 0x050 */
-#define ANYOFL_tb_p8 81 /* 0x051 */
-#define ANYOFL_t8_pb 82 /* 0x052 */
-#define ANYOFL_t8_p8 83 /* 0x053 */
-
-#define ANYOFPOSIXL 21 /* 0x15 Like ANYOFL, but matches
- [[:posix:]] classes */
-#define ANYOFPOSIXL_tb_pb 84 /* 0x054 */
-#define ANYOFPOSIXL_tb_p8 85 /* 0x055 */
-#define ANYOFPOSIXL_t8_pb 86 /* 0x056 */
-#define ANYOFPOSIXL_t8_p8 87 /* 0x057 */
-
-#define ANYOFH 22 /* 0x16 Like ANYOF, but only has
- "High" matches, none in the
- bitmap; the flags field
- contains the lowest matchable
- UTF-8 start byte */
-#define ANYOFH_tb_pb 88 /* 0x058 */
-#define ANYOFH_tb_p8 89 /* 0x059 */
-#define ANYOFH_t8_pb 90 /* 0x05a */
-#define ANYOFH_t8_p8 91 /* 0x05b */
-
-#define ANYOFHb 23 /* 0x17 Like ANYOFH, but all
- matches share the same UTF-8
- start byte, given in the flags
- field */
-#define ANYOFHb_tb_pb 92 /* 0x05c */
-#define ANYOFHb_tb_p8 93 /* 0x05d */
-#define ANYOFHb_t8_pb 94 /* 0x05e */
-#define ANYOFHb_t8_p8 95 /* 0x05f */
-
-#define ANYOFHr 24 /* 0x18 Like ANYOFH, but the flags
- field contains packed bounds
- for all matchable UTF-8 start
- bytes. */
-#define ANYOFHr_tb_pb 96 /* 0x060 */
-#define ANYOFHr_tb_p8 97 /* 0x061 */
-#define ANYOFHr_t8_pb 98 /* 0x062 */
-#define ANYOFHr_t8_p8 99 /* 0x063 */
-
-#define ANYOFHs 25 /* 0x19 Like ANYOFHb, but has a
- string field that gives the
- leading matchable UTF-8 bytes;
- flags field is len */
-#define ANYOFHs_tb_pb 100 /* 0x064 */
-#define ANYOFHs_tb_p8 101 /* 0x065 */
-#define ANYOFHs_t8_pb 102 /* 0x066 */
-#define ANYOFHs_t8_p8 103 /* 0x067 */
-
-#define ANYOFR 26 /* 0x1a Matches any character in
- the range given by its packed
- args: upper 12 bits is the max
- delta from the base lower 20;
- the flags field contains the
- lowest matchable UTF-8 start
- byte */
-#define ANYOFR_tb_pb 104 /* 0x068 */
-#define ANYOFR_tb_p8 105 /* 0x069 */
-#define ANYOFR_t8_pb 106 /* 0x06a */
-#define ANYOFR_t8_p8 107 /* 0x06b */
-
-#define ANYOFRb 27 /* 0x1b Like ANYOFR, but all
- matches share the same UTF-8
- start byte, given in the flags
- field */
-#define ANYOFRb_tb_pb 108 /* 0x06c */
-#define ANYOFRb_tb_p8 109 /* 0x06d */
-#define ANYOFRb_t8_pb 110 /* 0x06e */
-#define ANYOFRb_t8_p8 111 /* 0x06f */
-
-#define ANYOFM 28 /* 0x1c Like ANYOF, but matches an
- invariant byte as determined by
- the mask and arg */
-#define ANYOFM_tb_pb 112 /* 0x070 */
-#define ANYOFM_tb_p8 113 /* 0x071 */
-#define ANYOFM_t8_pb 114 /* 0x072 */
-#define ANYOFM_t8_p8 115 /* 0x073 */
-
-#define NANYOFM 29 /* 0x1d complement of ANYOFM */
-#define NANYOFM_tb_pb 116 /* 0x074 */
-#define NANYOFM_tb_p8 117 /* 0x075 */
-#define NANYOFM_t8_pb 118 /* 0x076 */
-#define NANYOFM_t8_p8 119 /* 0x077 */
-
-#define POSIXD 30 /* 0x1e Some [[:class:]] under /d;
- the FLAGS field gives which one
- */
-#define POSIXD_tb_pb 120 /* 0x078 */
-#define POSIXD_tb_p8 121 /* 0x079 */
-#define POSIXD_t8_pb 122 /* 0x07a */
-#define POSIXD_t8_p8 123 /* 0x07b */
-
-#define POSIXL 31 /* 0x1f Some [[:class:]] under /l;
- the FLAGS field gives which one
- */
-#define POSIXL_tb_pb 124 /* 0x07c */
-#define POSIXL_tb_p8 125 /* 0x07d */
-#define POSIXL_t8_pb 126 /* 0x07e */
-#define POSIXL_t8_p8 127 /* 0x07f */
-
-#define POSIXU 32 /* 0x20 Some [[:class:]] under /u;
- the FLAGS field gives which one
- */
-#define POSIXU_tb_pb 128 /* 0x080 */
-#define POSIXU_tb_p8 129 /* 0x081 */
-#define POSIXU_t8_pb 130 /* 0x082 */
-#define POSIXU_t8_p8 131 /* 0x083 */
-
-#define POSIXA 33 /* 0x21 Some [[:class:]] under /a;
- the FLAGS field gives which one
- */
-#define POSIXA_tb_pb 132 /* 0x084 */
-#define POSIXA_tb_p8 133 /* 0x085 */
-#define POSIXA_t8_pb 134 /* 0x086 */
-#define POSIXA_t8_p8 135 /* 0x087 */
-
-#define NPOSIXD 34 /* 0x22 complement of POSIXD,
- [[:^class:]] */
-#define NPOSIXD_tb_pb 136 /* 0x088 */
-#define NPOSIXD_tb_p8 137 /* 0x089 */
-#define NPOSIXD_t8_pb 138 /* 0x08a */
-#define NPOSIXD_t8_p8 139 /* 0x08b */
-
-#define NPOSIXL 35 /* 0x23 complement of POSIXL,
- [[:^class:]] */
-#define NPOSIXL_tb_pb 140 /* 0x08c */
-#define NPOSIXL_tb_p8 141 /* 0x08d */
-#define NPOSIXL_t8_pb 142 /* 0x08e */
-#define NPOSIXL_t8_p8 143 /* 0x08f */
-
-#define NPOSIXU 36 /* 0x24 complement of POSIXU,
- [[:^class:]] */
-#define NPOSIXU_tb_pb 144 /* 0x090 */
-#define NPOSIXU_tb_p8 145 /* 0x091 */
-#define NPOSIXU_t8_pb 146 /* 0x092 */
-#define NPOSIXU_t8_p8 147 /* 0x093 */
-
-#define NPOSIXA 37 /* 0x25 complement of POSIXA,
- [[:^class:]] */
-#define NPOSIXA_tb_pb 148 /* 0x094 */
-#define NPOSIXA_tb_p8 149 /* 0x095 */
-#define NPOSIXA_t8_pb 150 /* 0x096 */
-#define NPOSIXA_t8_p8 151 /* 0x097 */
-
-#define CLUMP 38 /* 0x26 Match any extended
- grapheme cluster sequence */
-#define CLUMP_tb_pb 152 /* 0x098 */
-#define CLUMP_tb_p8 153 /* 0x099 */
-#define CLUMP_t8_pb 154 /* 0x09a */
-#define CLUMP_t8_p8 155 /* 0x09b */
-
-#define BRANCH 39 /* 0x27 Match this alternative, or
- the next... */
-#define BRANCH_tb_pb 156 /* 0x09c */
-#define BRANCH_tb_p8 157 /* 0x09d */
-#define BRANCH_t8_pb 158 /* 0x09e */
-#define BRANCH_t8_p8 159 /* 0x09f */
-
-#define EXACT 40 /* 0x28 Match this string (flags
- field is the length). */
-#define EXACT_tb_pb 160 /* 0x0a0 */
-#define EXACT_tb_p8 161 /* 0x0a1 */
-#define EXACT_t8_pb 162 /* 0x0a2 */
-#define EXACT_t8_p8 163 /* 0x0a3 */
-
-#define LEXACT 41 /* 0x29 Match this long string
- (preceded by length; flags
- unused). */
-#define LEXACT_tb_pb 164 /* 0x0a4 */
-#define LEXACT_tb_p8 165 /* 0x0a5 */
-#define LEXACT_t8_pb 166 /* 0x0a6 */
-#define LEXACT_t8_p8 167 /* 0x0a7 */
-
-#define EXACTL 42 /* 0x2a Like EXACT, but /l is in
- effect (used so locale-related
- warnings can be checked for) */
-#define EXACTL_tb_pb 168 /* 0x0a8 */
-#define EXACTL_tb_p8 169 /* 0x0a9 */
-#define EXACTL_t8_pb 170 /* 0x0aa */
-#define EXACTL_t8_p8 171 /* 0x0ab */
-
-#define EXACTF 43 /* 0x2b Like EXACT, but match
- using /id rules; (string not
- UTF-8, ASCII folded; non-ASCII
- not) */
-#define EXACTF_tb_pb 172 /* 0x0ac */
-#define EXACTF_tb_p8 173 /* 0x0ad */
-#define EXACTF_t8_pb 174 /* 0x0ae */
-#define EXACTF_t8_p8 175 /* 0x0af */
-
-#define EXACTFL 44 /* 0x2c Like EXACT, but match
- using /il rules; (string not
- likely to be folded) */
-#define EXACTFL_tb_pb 176 /* 0x0b0 */
-#define EXACTFL_tb_p8 177 /* 0x0b1 */
-#define EXACTFL_t8_pb 178 /* 0x0b2 */
-#define EXACTFL_t8_p8 179 /* 0x0b3 */
-
-#define EXACTFU 45 /* 0x2d Like EXACT, but match
- using /iu rules; (string
- folded) */
-#define EXACTFU_tb_pb 180 /* 0x0b4 */
-#define EXACTFU_tb_p8 181 /* 0x0b5 */
-#define EXACTFU_t8_pb 182 /* 0x0b6 */
-#define EXACTFU_t8_p8 183 /* 0x0b7 */
-
-#define EXACTFAA 46 /* 0x2e Like EXACT, but match
- using /iaa rules; (string
- folded except MICRO in non-UTF8
- patterns; doesn't contain SHARP
- S unless UTF-8; folded length
- <= unfolded) */
-#define EXACTFAA_tb_pb 184 /* 0x0b8 */
-#define EXACTFAA_tb_p8 185 /* 0x0b9 */
-#define EXACTFAA_t8_pb 186 /* 0x0ba */
-#define EXACTFAA_t8_p8 187 /* 0x0bb */
-
-#define EXACTFAA_NO_TRIE 47 /* 0x2f Like EXACTFAA, (string not
- UTF-8, folded except: MICRO,
- SHARP S; folded length <=
- unfolded, not currently
- trie-able) */
-#define EXACTFAA_NO_TRIE_tb_pb 188 /* 0x0bc */
-#define EXACTFAA_NO_TRIE_tb_p8 189 /* 0x0bd */
-#define EXACTFAA_NO_TRIE_t8_pb 190 /* 0x0be */
-#define EXACTFAA_NO_TRIE_t8_p8 191 /* 0x0bf */
-
-#define EXACTFUP 48 /* 0x30 Like EXACT, but match
- using /iu rules; (string not
- UTF-8, folded except MICRO:
- hence Problematic) */
-#define EXACTFUP_tb_pb 192 /* 0x0c0 */
-#define EXACTFUP_tb_p8 193 /* 0x0c1 */
-#define EXACTFUP_t8_pb 194 /* 0x0c2 */
-#define EXACTFUP_t8_p8 195 /* 0x0c3 */
-
-#define EXACTFLU8 49 /* 0x31 Like EXACTFU, but use /il,
- UTF-8, (string is folded, and
- everything in it is above 255
- */
-#define EXACTFLU8_tb_pb 196 /* 0x0c4 */
-#define EXACTFLU8_tb_p8 197 /* 0x0c5 */
-#define EXACTFLU8_t8_pb 198 /* 0x0c6 */
-#define EXACTFLU8_t8_p8 199 /* 0x0c7 */
-
-#define EXACT_REQ8 50 /* 0x32 Like EXACT, but only UTF-8
- encoded targets can match */
-#define EXACT_REQ8_tb_pb 200 /* 0x0c8 */
-#define EXACT_REQ8_tb_p8 201 /* 0x0c9 */
-#define EXACT_REQ8_t8_pb 202 /* 0x0ca */
-#define EXACT_REQ8_t8_p8 203 /* 0x0cb */
-
-#define LEXACT_REQ8 51 /* 0x33 Like LEXACT, but only
- UTF-8 encoded targets can match
- */
-#define LEXACT_REQ8_tb_pb 204 /* 0x0cc */
-#define LEXACT_REQ8_tb_p8 205 /* 0x0cd */
-#define LEXACT_REQ8_t8_pb 206 /* 0x0ce */
-#define LEXACT_REQ8_t8_p8 207 /* 0x0cf */
-
-#define EXACTFU_REQ8 52 /* 0x34 Like EXACTFU, but only
- UTF-8 encoded targets can match
- */
-#define EXACTFU_REQ8_tb_pb 208 /* 0x0d0 */
-#define EXACTFU_REQ8_tb_p8 209 /* 0x0d1 */
-#define EXACTFU_REQ8_t8_pb 210 /* 0x0d2 */
-#define EXACTFU_REQ8_t8_p8 211 /* 0x0d3 */
-
-#define EXACTFU_S_EDGE 53 /* 0x35 /di rules, but nothing in
- it precludes /ui, except begins
- and/or ends with [Ss]; (string
- not UTF-8; compile-time only)
- */
-#define EXACTFU_S_EDGE_tb_pb 212 /* 0x0d4 */
-#define EXACTFU_S_EDGE_tb_p8 213 /* 0x0d5 */
-#define EXACTFU_S_EDGE_t8_pb 214 /* 0x0d6 */
-#define EXACTFU_S_EDGE_t8_p8 215 /* 0x0d7 */
-
-#define LNBREAK 54 /* 0x36 generic newline pattern */
-#define LNBREAK_tb_pb 216 /* 0x0d8 */
-#define LNBREAK_tb_p8 217 /* 0x0d9 */
-#define LNBREAK_t8_pb 218 /* 0x0da */
-#define LNBREAK_t8_p8 219 /* 0x0db */
-
-#define TRIE 55 /* 0x37 Match many EXACT(F[ALU]?)?
- at once. flags==type */
-#define TRIE_tb_pb 220 /* 0x0dc */
-#define TRIE_tb_p8 221 /* 0x0dd */
-#define TRIE_t8_pb 222 /* 0x0de */
-#define TRIE_t8_p8 223 /* 0x0df */
-
-#define TRIEC 56 /* 0x38 Same as TRIE, but with
- embedded charclass data */
-#define TRIEC_tb_pb 224 /* 0x0e0 */
-#define TRIEC_tb_p8 225 /* 0x0e1 */
-#define TRIEC_t8_pb 226 /* 0x0e2 */
-#define TRIEC_t8_p8 227 /* 0x0e3 */
-
-#define AHOCORASICK 57 /* 0x39 Aho Corasick stclass.
- flags==type */
-#define AHOCORASICK_tb_pb 228 /* 0x0e4 */
-#define AHOCORASICK_tb_p8 229 /* 0x0e5 */
-#define AHOCORASICK_t8_pb 230 /* 0x0e6 */
-#define AHOCORASICK_t8_p8 231 /* 0x0e7 */
-
-#define AHOCORASICKC 58 /* 0x3a Same as AHOCORASICK, but
- with embedded charclass data */
-#define AHOCORASICKC_tb_pb 232 /* 0x0e8 */
-#define AHOCORASICKC_tb_p8 233 /* 0x0e9 */
-#define AHOCORASICKC_t8_pb 234 /* 0x0ea */
-#define AHOCORASICKC_t8_p8 235 /* 0x0eb */
-
-#define NOTHING 59 /* 0x3b Match empty string. */
-#define NOTHING_tb_pb 236 /* 0x0ec */
-#define NOTHING_tb_p8 237 /* 0x0ed */
-#define NOTHING_t8_pb 238 /* 0x0ee */
-#define NOTHING_t8_p8 239 /* 0x0ef */
-
-#define TAIL 60 /* 0x3c Match empty string. Can
- jump here from outside. */
-#define TAIL_tb_pb 240 /* 0x0f0 */
-#define TAIL_tb_p8 241 /* 0x0f1 */
-#define TAIL_t8_pb 242 /* 0x0f2 */
-#define TAIL_t8_p8 243 /* 0x0f3 */
-
-#define STAR 61 /* 0x3d Match this (simple) thing
- 0 or more times. */
-#define STAR_tb_pb 244 /* 0x0f4 */
-#define STAR_tb_p8 245 /* 0x0f5 */
-#define STAR_t8_pb 246 /* 0x0f6 */
-#define STAR_t8_p8 247 /* 0x0f7 */
-
-#define PLUS 62 /* 0x3e Match this (simple) thing
- 1 or more times. */
-#define PLUS_tb_pb 248 /* 0x0f8 */
-#define PLUS_tb_p8 249 /* 0x0f9 */
-#define PLUS_t8_pb 250 /* 0x0fa */
-#define PLUS_t8_p8 251 /* 0x0fb */
-
-#define CURLY 63 /* 0x3f Match this simple thing
- {n,m} times. */
-#define CURLY_tb_pb 252 /* 0x0fc */
-#define CURLY_tb_p8 253 /* 0x0fd */
-#define CURLY_t8_pb 254 /* 0x0fe */
-#define CURLY_t8_p8 255 /* 0x0ff */
-
-#define CURLYN 64 /* 0x40 Capture next-after-this
- simple thing */
-#define CURLYN_tb_pb 256 /* 0x100 */
-#define CURLYN_tb_p8 257 /* 0x101 */
-#define CURLYN_t8_pb 258 /* 0x102 */
-#define CURLYN_t8_p8 259 /* 0x103 */
-
-#define CURLYM 65 /* 0x41 Capture this
- medium-complex thing {n,m}
- times. */
-#define CURLYM_tb_pb 260 /* 0x104 */
-#define CURLYM_tb_p8 261 /* 0x105 */
-#define CURLYM_t8_pb 262 /* 0x106 */
-#define CURLYM_t8_p8 263 /* 0x107 */
-
-#define CURLYX 66 /* 0x42 Match this complex thing
- {n,m} times. */
-#define CURLYX_tb_pb 264 /* 0x108 */
-#define CURLYX_tb_p8 265 /* 0x109 */
-#define CURLYX_t8_pb 266 /* 0x10a */
-#define CURLYX_t8_p8 267 /* 0x10b */
-
-#define WHILEM 67 /* 0x43 Do curly processing and
- see if rest matches. */
-#define WHILEM_tb_pb 268 /* 0x10c */
-#define WHILEM_tb_p8 269 /* 0x10d */
-#define WHILEM_t8_pb 270 /* 0x10e */
-#define WHILEM_t8_p8 271 /* 0x10f */
-
-#define OPEN 68 /* 0x44 Mark this point in input
- as start of #n. */
-#define OPEN_tb_pb 272 /* 0x110 */
-#define OPEN_tb_p8 273 /* 0x111 */
-#define OPEN_t8_pb 274 /* 0x112 */
-#define OPEN_t8_p8 275 /* 0x113 */
-
-#define CLOSE 69 /* 0x45 Close corresponding OPEN
- of #n. */
-#define CLOSE_tb_pb 276 /* 0x114 */
-#define CLOSE_tb_p8 277 /* 0x115 */
-#define CLOSE_t8_pb 278 /* 0x116 */
-#define CLOSE_t8_p8 279 /* 0x117 */
-
-#define SROPEN 70 /* 0x46 Same as OPEN, but for
- script run */
-#define SROPEN_tb_pb 280 /* 0x118 */
-#define SROPEN_tb_p8 281 /* 0x119 */
-#define SROPEN_t8_pb 282 /* 0x11a */
-#define SROPEN_t8_p8 283 /* 0x11b */
-
-#define SRCLOSE 71 /* 0x47 Close preceding SROPEN */
-#define SRCLOSE_tb_pb 284 /* 0x11c */
-#define SRCLOSE_tb_p8 285 /* 0x11d */
-#define SRCLOSE_t8_pb 286 /* 0x11e */
-#define SRCLOSE_t8_p8 287 /* 0x11f */
-
-#define REF 72 /* 0x48 Match some already matched
- string */
-#define REF_tb_pb 288 /* 0x120 */
-#define REF_tb_p8 289 /* 0x121 */
-#define REF_t8_pb 290 /* 0x122 */
-#define REF_t8_p8 291 /* 0x123 */
-
-#define REFF 73 /* 0x49 Match already matched
- string, using /di rules. */
-#define REFF_tb_pb 292 /* 0x124 */
-#define REFF_tb_p8 293 /* 0x125 */
-#define REFF_t8_pb 294 /* 0x126 */
-#define REFF_t8_p8 295 /* 0x127 */
-
-#define REFFL 74 /* 0x4a Match already matched
- string, using /li rules. */
-#define REFFL_tb_pb 296 /* 0x128 */
-#define REFFL_tb_p8 297 /* 0x129 */
-#define REFFL_t8_pb 298 /* 0x12a */
-#define REFFL_t8_p8 299 /* 0x12b */
-
-#define REFFU 75 /* 0x4b Match already matched
- string, usng /ui. */
-#define REFFU_tb_pb 300 /* 0x12c */
-#define REFFU_tb_p8 301 /* 0x12d */
-#define REFFU_t8_pb 302 /* 0x12e */
-#define REFFU_t8_p8 303 /* 0x12f */
-
-#define REFFA 76 /* 0x4c Match already matched
- string, using /aai rules. */
-#define REFFA_tb_pb 304 /* 0x130 */
-#define REFFA_tb_p8 305 /* 0x131 */
-#define REFFA_t8_pb 306 /* 0x132 */
-#define REFFA_t8_p8 307 /* 0x133 */
-
-#define REFN 77 /* 0x4d Match some already matched
- string */
-#define REFN_tb_pb 308 /* 0x134 */
-#define REFN_tb_p8 309 /* 0x135 */
-#define REFN_t8_pb 310 /* 0x136 */
-#define REFN_t8_p8 311 /* 0x137 */
-
-#define REFFN 78 /* 0x4e Match already matched
- string, using /di rules. */
-#define REFFN_tb_pb 312 /* 0x138 */
-#define REFFN_tb_p8 313 /* 0x139 */
-#define REFFN_t8_pb 314 /* 0x13a */
-#define REFFN_t8_p8 315 /* 0x13b */
-
-#define REFFLN 79 /* 0x4f Match already matched
- string, using /li rules. */
-#define REFFLN_tb_pb 316 /* 0x13c */
-#define REFFLN_tb_p8 317 /* 0x13d */
-#define REFFLN_t8_pb 318 /* 0x13e */
-#define REFFLN_t8_p8 319 /* 0x13f */
-
-#define REFFUN 80 /* 0x50 Match already matched
- string, using /ui rules. */
-#define REFFUN_tb_pb 320 /* 0x140 */
-#define REFFUN_tb_p8 321 /* 0x141 */
-#define REFFUN_t8_pb 322 /* 0x142 */
-#define REFFUN_t8_p8 323 /* 0x143 */
-
-#define REFFAN 81 /* 0x51 Match already matched
- string, using /aai rules. */
-#define REFFAN_tb_pb 324 /* 0x144 */
-#define REFFAN_tb_p8 325 /* 0x145 */
-#define REFFAN_t8_pb 326 /* 0x146 */
-#define REFFAN_t8_p8 327 /* 0x147 */
-
-#define LONGJMP 82 /* 0x52 Jump far away. */
-#define LONGJMP_tb_pb 328 /* 0x148 */
-#define LONGJMP_tb_p8 329 /* 0x149 */
-#define LONGJMP_t8_pb 330 /* 0x14a */
-#define LONGJMP_t8_p8 331 /* 0x14b */
-
-#define BRANCHJ 83 /* 0x53 BRANCH with long offset.
- */
-#define BRANCHJ_tb_pb 332 /* 0x14c */
-#define BRANCHJ_tb_p8 333 /* 0x14d */
-#define BRANCHJ_t8_pb 334 /* 0x14e */
-#define BRANCHJ_t8_p8 335 /* 0x14f */
-
-#define IFMATCH 84 /* 0x54 Succeeds if the following
- matches; non-zero flags "f",
- next_off "o" means lookbehind
- assertion starting "f..(f-o)"
- characters before current */
-#define IFMATCH_tb_pb 336 /* 0x150 */
-#define IFMATCH_tb_p8 337 /* 0x151 */
-#define IFMATCH_t8_pb 338 /* 0x152 */
-#define IFMATCH_t8_p8 339 /* 0x153 */
-
-#define UNLESSM 85 /* 0x55 Fails if the following
- matches; non-zero flags "f",
- next_off "o" means lookbehind
- assertion starting "f..(f-o)"
- characters before current */
-#define UNLESSM_tb_pb 340 /* 0x154 */
-#define UNLESSM_tb_p8 341 /* 0x155 */
-#define UNLESSM_t8_pb 342 /* 0x156 */
-#define UNLESSM_t8_p8 343 /* 0x157 */
-
-#define SUSPEND 86 /* 0x56 "Independent" sub-RE. */
-#define SUSPEND_tb_pb 344 /* 0x158 */
-#define SUSPEND_tb_p8 345 /* 0x159 */
-#define SUSPEND_t8_pb 346 /* 0x15a */
-#define SUSPEND_t8_p8 347 /* 0x15b */
-
-#define IFTHEN 87 /* 0x57 Switch, should be preceded
- by switcher. */
-#define IFTHEN_tb_pb 348 /* 0x15c */
-#define IFTHEN_tb_p8 349 /* 0x15d */
-#define IFTHEN_t8_pb 350 /* 0x15e */
-#define IFTHEN_t8_p8 351 /* 0x15f */
-
-#define GROUPP 88 /* 0x58 Whether the group matched.
- */
-#define GROUPP_tb_pb 352 /* 0x160 */
-#define GROUPP_tb_p8 353 /* 0x161 */
-#define GROUPP_t8_pb 354 /* 0x162 */
-#define GROUPP_t8_p8 355 /* 0x163 */
-
-#define EVAL 89 /* 0x59 Execute some Perl code. */
-#define EVAL_tb_pb 356 /* 0x164 */
-#define EVAL_tb_p8 357 /* 0x165 */
-#define EVAL_t8_pb 358 /* 0x166 */
-#define EVAL_t8_p8 359 /* 0x167 */
-
-#define MINMOD 90 /* 0x5a Next operator is not
- greedy. */
-#define MINMOD_tb_pb 360 /* 0x168 */
-#define MINMOD_tb_p8 361 /* 0x169 */
-#define MINMOD_t8_pb 362 /* 0x16a */
-#define MINMOD_t8_p8 363 /* 0x16b */
-
-#define LOGICAL 91 /* 0x5b Next opcode should set the
- flag only. */
-#define LOGICAL_tb_pb 364 /* 0x16c */
-#define LOGICAL_tb_p8 365 /* 0x16d */
-#define LOGICAL_t8_pb 366 /* 0x16e */
-#define LOGICAL_t8_p8 367 /* 0x16f */
-
-#define RENUM 92 /* 0x5c Group with independently
- numbered parens. */
-#define RENUM_tb_pb 368 /* 0x170 */
-#define RENUM_tb_p8 369 /* 0x171 */
-#define RENUM_t8_pb 370 /* 0x172 */
-#define RENUM_t8_p8 371 /* 0x173 */
-
-#define GOSUB 93 /* 0x5d recurse to paren arg1 at
- (signed) ofs arg2 */
-#define GOSUB_tb_pb 372 /* 0x174 */
-#define GOSUB_tb_p8 373 /* 0x175 */
-#define GOSUB_t8_pb 374 /* 0x176 */
-#define GOSUB_t8_p8 375 /* 0x177 */
-
-#define GROUPPN 94 /* 0x5e Whether the group matched.
- */
-#define GROUPPN_tb_pb 376 /* 0x178 */
-#define GROUPPN_tb_p8 377 /* 0x179 */
-#define GROUPPN_t8_pb 378 /* 0x17a */
-#define GROUPPN_t8_p8 379 /* 0x17b */
-
-#define INSUBP 95 /* 0x5f Whether we are in a
- specific recurse. */
-#define INSUBP_tb_pb 380 /* 0x17c */
-#define INSUBP_tb_p8 381 /* 0x17d */
-#define INSUBP_t8_pb 382 /* 0x17e */
-#define INSUBP_t8_p8 383 /* 0x17f */
-
-#define DEFINEP 96 /* 0x60 Never execute directly. */
-#define DEFINEP_tb_pb 384 /* 0x180 */
-#define DEFINEP_tb_p8 385 /* 0x181 */
-#define DEFINEP_t8_pb 386 /* 0x182 */
-#define DEFINEP_t8_p8 387 /* 0x183 */
-
-#define ENDLIKE 97 /* 0x61 Used only for the type
- field of verbs */
-#define ENDLIKE_tb_pb 388 /* 0x184 */
-#define ENDLIKE_tb_p8 389 /* 0x185 */
-#define ENDLIKE_t8_pb 390 /* 0x186 */
-#define ENDLIKE_t8_p8 391 /* 0x187 */
-
-#define OPFAIL 98 /* 0x62 Same as (?!), but with
- verb arg */
-#define OPFAIL_tb_pb 392 /* 0x188 */
-#define OPFAIL_tb_p8 393 /* 0x189 */
-#define OPFAIL_t8_pb 394 /* 0x18a */
-#define OPFAIL_t8_p8 395 /* 0x18b */
-
-#define ACCEPT 99 /* 0x63 Accepts the current
- matched string, with verbar */
-#define ACCEPT_tb_pb 396 /* 0x18c */
-#define ACCEPT_tb_p8 397 /* 0x18d */
-#define ACCEPT_t8_pb 398 /* 0x18e */
-#define ACCEPT_t8_p8 399 /* 0x18f */
-
-#define VERB 100 /* 0x64 Used only for the type
- field of verbs */
-#define VERB_tb_pb 400 /* 0x190 */
-#define VERB_tb_p8 401 /* 0x191 */
-#define VERB_t8_pb 402 /* 0x192 */
-#define VERB_t8_p8 403 /* 0x193 */
-
-#define PRUNE 101 /* 0x65 Pattern fails at this
- startpoint if no-backtracking
- through this */
-#define PRUNE_tb_pb 404 /* 0x194 */
-#define PRUNE_tb_p8 405 /* 0x195 */
-#define PRUNE_t8_pb 406 /* 0x196 */
-#define PRUNE_t8_p8 407 /* 0x197 */
-
-#define MARKPOINT 102 /* 0x66 Push the current location
- for rollback by cut. */
-#define MARKPOINT_tb_pb 408 /* 0x198 */
-#define MARKPOINT_tb_p8 409 /* 0x199 */
-#define MARKPOINT_t8_pb 410 /* 0x19a */
-#define MARKPOINT_t8_p8 411 /* 0x19b */
-
-#define SKIP 103 /* 0x67 On failure skip forward
- (to the mark) before retrying
- */
-#define SKIP_tb_pb 412 /* 0x19c */
-#define SKIP_tb_p8 413 /* 0x19d */
-#define SKIP_t8_pb 414 /* 0x19e */
-#define SKIP_t8_p8 415 /* 0x19f */
-
-#define COMMIT 104 /* 0x68 Pattern fails outright if
- backtracking through this */
-#define COMMIT_tb_pb 416 /* 0x1a0 */
-#define COMMIT_tb_p8 417 /* 0x1a1 */
-#define COMMIT_t8_pb 418 /* 0x1a2 */
-#define COMMIT_t8_p8 419 /* 0x1a3 */
-
-#define CUTGROUP 105 /* 0x69 On failure go to the next
- alternation in the group */
-#define CUTGROUP_tb_pb 420 /* 0x1a4 */
-#define CUTGROUP_tb_p8 421 /* 0x1a5 */
-#define CUTGROUP_t8_pb 422 /* 0x1a6 */
-#define CUTGROUP_t8_p8 423 /* 0x1a7 */
-
-#define KEEPS 106 /* 0x6a $& begins here. */
-#define KEEPS_tb_pb 424 /* 0x1a8 */
-#define KEEPS_tb_p8 425 /* 0x1a9 */
-#define KEEPS_t8_pb 426 /* 0x1aa */
-#define KEEPS_t8_p8 427 /* 0x1ab */
-
-#define OPTIMIZED 107 /* 0x6b Placeholder for dump. */
-#define OPTIMIZED_tb_pb 428 /* 0x1ac */
-#define OPTIMIZED_tb_p8 429 /* 0x1ad */
-#define OPTIMIZED_t8_pb 430 /* 0x1ae */
-#define OPTIMIZED_t8_p8 431 /* 0x1af */
-
-#define PSEUDO 108 /* 0x6c Pseudo opcode for internal
- use. */
-#define PSEUDO_tb_pb 432 /* 0x1b0 */
-#define PSEUDO_tb_p8 433 /* 0x1b1 */
-#define PSEUDO_t8_pb 434 /* 0x1b2 */
-#define PSEUDO_t8_p8 435 /* 0x1b3 */
-
-#define REGEX_SET 109 /* 0x6d Regex set, temporary node
- used in pre-optimization
- compilation */
-#define REGEX_SET_tb_pb 436 /* 0x1b4 */
-#define REGEX_SET_tb_p8 437 /* 0x1b5 */
-#define REGEX_SET_t8_pb 438 /* 0x1b6 */
-#define REGEX_SET_t8_p8 439 /* 0x1b7 */
-
- /* ------------ States ------------- */
-#define TRIE_next 110 /* 0x6e state for TRIE */
-#define TRIE_next_tb_pb 440 /* 0x1b8 */
-#define TRIE_next_tb_p8 441 /* 0x1b9 */
-#define TRIE_next_t8_pb 442 /* 0x1ba */
-#define TRIE_next_t8_p8 443 /* 0x1bb */
-
-#define TRIE_next_fail 111 /* 0x6f state for TRIE */
-#define TRIE_next_fail_tb_pb 444 /* 0x1bc */
-#define TRIE_next_fail_tb_p8 445 /* 0x1bd */
-#define TRIE_next_fail_t8_pb 446 /* 0x1be */
-#define TRIE_next_fail_t8_p8 447 /* 0x1bf */
-
-#define EVAL_B 112 /* 0x70 state for EVAL */
-#define EVAL_B_tb_pb 448 /* 0x1c0 */
-#define EVAL_B_tb_p8 449 /* 0x1c1 */
-#define EVAL_B_t8_pb 450 /* 0x1c2 */
-#define EVAL_B_t8_p8 451 /* 0x1c3 */
-
-#define EVAL_B_fail 113 /* 0x71 state for EVAL */
-#define EVAL_B_fail_tb_pb 452 /* 0x1c4 */
-#define EVAL_B_fail_tb_p8 453 /* 0x1c5 */
-#define EVAL_B_fail_t8_pb 454 /* 0x1c6 */
-#define EVAL_B_fail_t8_p8 455 /* 0x1c7 */
-
-#define EVAL_postponed_AB 114 /* 0x72 state for EVAL */
-#define EVAL_postponed_AB_tb_pb 456 /* 0x1c8 */
-#define EVAL_postponed_AB_tb_p8 457 /* 0x1c9 */
-#define EVAL_postponed_AB_t8_pb 458 /* 0x1ca */
-#define EVAL_postponed_AB_t8_p8 459 /* 0x1cb */
-
-#define EVAL_postponed_AB_fail 115 /* 0x73 state for EVAL */
-#define EVAL_postponed_AB_fail_tb_pb 460 /* 0x1cc */
-#define EVAL_postponed_AB_fail_tb_p8 461 /* 0x1cd */
-#define EVAL_postponed_AB_fail_t8_pb 462 /* 0x1ce */
-#define EVAL_postponed_AB_fail_t8_p8 463 /* 0x1cf */
-
-#define CURLYX_end 116 /* 0x74 state for CURLYX */
-#define CURLYX_end_tb_pb 464 /* 0x1d0 */
-#define CURLYX_end_tb_p8 465 /* 0x1d1 */
-#define CURLYX_end_t8_pb 466 /* 0x1d2 */
-#define CURLYX_end_t8_p8 467 /* 0x1d3 */
-
-#define CURLYX_end_fail 117 /* 0x75 state for CURLYX */
-#define CURLYX_end_fail_tb_pb 468 /* 0x1d4 */
-#define CURLYX_end_fail_tb_p8 469 /* 0x1d5 */
-#define CURLYX_end_fail_t8_pb 470 /* 0x1d6 */
-#define CURLYX_end_fail_t8_p8 471 /* 0x1d7 */
-
-#define WHILEM_A_pre 118 /* 0x76 state for WHILEM */
-#define WHILEM_A_pre_tb_pb 472 /* 0x1d8 */
-#define WHILEM_A_pre_tb_p8 473 /* 0x1d9 */
-#define WHILEM_A_pre_t8_pb 474 /* 0x1da */
-#define WHILEM_A_pre_t8_p8 475 /* 0x1db */
-
-#define WHILEM_A_pre_fail 119 /* 0x77 state for WHILEM */
-#define WHILEM_A_pre_fail_tb_pb 476 /* 0x1dc */
-#define WHILEM_A_pre_fail_tb_p8 477 /* 0x1dd */
-#define WHILEM_A_pre_fail_t8_pb 478 /* 0x1de */
-#define WHILEM_A_pre_fail_t8_p8 479 /* 0x1df */
-
-#define WHILEM_A_min 120 /* 0x78 state for WHILEM */
-#define WHILEM_A_min_tb_pb 480 /* 0x1e0 */
-#define WHILEM_A_min_tb_p8 481 /* 0x1e1 */
-#define WHILEM_A_min_t8_pb 482 /* 0x1e2 */
-#define WHILEM_A_min_t8_p8 483 /* 0x1e3 */
-
-#define WHILEM_A_min_fail 121 /* 0x79 state for WHILEM */
-#define WHILEM_A_min_fail_tb_pb 484 /* 0x1e4 */
-#define WHILEM_A_min_fail_tb_p8 485 /* 0x1e5 */
-#define WHILEM_A_min_fail_t8_pb 486 /* 0x1e6 */
-#define WHILEM_A_min_fail_t8_p8 487 /* 0x1e7 */
-
-#define WHILEM_A_max 122 /* 0x7a state for WHILEM */
-#define WHILEM_A_max_tb_pb 488 /* 0x1e8 */
-#define WHILEM_A_max_tb_p8 489 /* 0x1e9 */
-#define WHILEM_A_max_t8_pb 490 /* 0x1ea */
-#define WHILEM_A_max_t8_p8 491 /* 0x1eb */
-
-#define WHILEM_A_max_fail 123 /* 0x7b state for WHILEM */
-#define WHILEM_A_max_fail_tb_pb 492 /* 0x1ec */
-#define WHILEM_A_max_fail_tb_p8 493 /* 0x1ed */
-#define WHILEM_A_max_fail_t8_pb 494 /* 0x1ee */
-#define WHILEM_A_max_fail_t8_p8 495 /* 0x1ef */
-
-#define WHILEM_B_min 124 /* 0x7c state for WHILEM */
-#define WHILEM_B_min_tb_pb 496 /* 0x1f0 */
-#define WHILEM_B_min_tb_p8 497 /* 0x1f1 */
-#define WHILEM_B_min_t8_pb 498 /* 0x1f2 */
-#define WHILEM_B_min_t8_p8 499 /* 0x1f3 */
-
-#define WHILEM_B_min_fail 125 /* 0x7d state for WHILEM */
-#define WHILEM_B_min_fail_tb_pb 500 /* 0x1f4 */
-#define WHILEM_B_min_fail_tb_p8 501 /* 0x1f5 */
-#define WHILEM_B_min_fail_t8_pb 502 /* 0x1f6 */
-#define WHILEM_B_min_fail_t8_p8 503 /* 0x1f7 */
-
-#define WHILEM_B_max 126 /* 0x7e state for WHILEM */
-#define WHILEM_B_max_tb_pb 504 /* 0x1f8 */
-#define WHILEM_B_max_tb_p8 505 /* 0x1f9 */
-#define WHILEM_B_max_t8_pb 506 /* 0x1fa */
-#define WHILEM_B_max_t8_p8 507 /* 0x1fb */
-
-#define WHILEM_B_max_fail 127 /* 0x7f state for WHILEM */
-#define WHILEM_B_max_fail_tb_pb 508 /* 0x1fc */
-#define WHILEM_B_max_fail_tb_p8 509 /* 0x1fd */
-#define WHILEM_B_max_fail_t8_pb 510 /* 0x1fe */
-#define WHILEM_B_max_fail_t8_p8 511 /* 0x1ff */
-
-#define BRANCH_next 128 /* 0x80 state for BRANCH */
-#define BRANCH_next_tb_pb 512 /* 0x200 */
-#define BRANCH_next_tb_p8 513 /* 0x201 */
-#define BRANCH_next_t8_pb 514 /* 0x202 */
-#define BRANCH_next_t8_p8 515 /* 0x203 */
-
-#define BRANCH_next_fail 129 /* 0x81 state for BRANCH */
-#define BRANCH_next_fail_tb_pb 516 /* 0x204 */
-#define BRANCH_next_fail_tb_p8 517 /* 0x205 */
-#define BRANCH_next_fail_t8_pb 518 /* 0x206 */
-#define BRANCH_next_fail_t8_p8 519 /* 0x207 */
-
-#define CURLYM_A 130 /* 0x82 state for CURLYM */
-#define CURLYM_A_tb_pb 520 /* 0x208 */
-#define CURLYM_A_tb_p8 521 /* 0x209 */
-#define CURLYM_A_t8_pb 522 /* 0x20a */
-#define CURLYM_A_t8_p8 523 /* 0x20b */
-
-#define CURLYM_A_fail 131 /* 0x83 state for CURLYM */
-#define CURLYM_A_fail_tb_pb 524 /* 0x20c */
-#define CURLYM_A_fail_tb_p8 525 /* 0x20d */
-#define CURLYM_A_fail_t8_pb 526 /* 0x20e */
-#define CURLYM_A_fail_t8_p8 527 /* 0x20f */
-
-#define CURLYM_B 132 /* 0x84 state for CURLYM */
-#define CURLYM_B_tb_pb 528 /* 0x210 */
-#define CURLYM_B_tb_p8 529 /* 0x211 */
-#define CURLYM_B_t8_pb 530 /* 0x212 */
-#define CURLYM_B_t8_p8 531 /* 0x213 */
-
-#define CURLYM_B_fail 133 /* 0x85 state for CURLYM */
-#define CURLYM_B_fail_tb_pb 532 /* 0x214 */
-#define CURLYM_B_fail_tb_p8 533 /* 0x215 */
-#define CURLYM_B_fail_t8_pb 534 /* 0x216 */
-#define CURLYM_B_fail_t8_p8 535 /* 0x217 */
-
-#define IFMATCH_A 134 /* 0x86 state for IFMATCH */
-#define IFMATCH_A_tb_pb 536 /* 0x218 */
-#define IFMATCH_A_tb_p8 537 /* 0x219 */
-#define IFMATCH_A_t8_pb 538 /* 0x21a */
-#define IFMATCH_A_t8_p8 539 /* 0x21b */
-
-#define IFMATCH_A_fail 135 /* 0x87 state for IFMATCH */
-#define IFMATCH_A_fail_tb_pb 540 /* 0x21c */
-#define IFMATCH_A_fail_tb_p8 541 /* 0x21d */
-#define IFMATCH_A_fail_t8_pb 542 /* 0x21e */
-#define IFMATCH_A_fail_t8_p8 543 /* 0x21f */
-
-#define CURLY_B_min 136 /* 0x88 state for CURLY */
-#define CURLY_B_min_tb_pb 544 /* 0x220 */
-#define CURLY_B_min_tb_p8 545 /* 0x221 */
-#define CURLY_B_min_t8_pb 546 /* 0x222 */
-#define CURLY_B_min_t8_p8 547 /* 0x223 */
-
-#define CURLY_B_min_fail 137 /* 0x89 state for CURLY */
-#define CURLY_B_min_fail_tb_pb 548 /* 0x224 */
-#define CURLY_B_min_fail_tb_p8 549 /* 0x225 */
-#define CURLY_B_min_fail_t8_pb 550 /* 0x226 */
-#define CURLY_B_min_fail_t8_p8 551 /* 0x227 */
-
-#define CURLY_B_max 138 /* 0x8a state for CURLY */
-#define CURLY_B_max_tb_pb 552 /* 0x228 */
-#define CURLY_B_max_tb_p8 553 /* 0x229 */
-#define CURLY_B_max_t8_pb 554 /* 0x22a */
-#define CURLY_B_max_t8_p8 555 /* 0x22b */
-
-#define CURLY_B_max_fail 139 /* 0x8b state for CURLY */
-#define CURLY_B_max_fail_tb_pb 556 /* 0x22c */
-#define CURLY_B_max_fail_tb_p8 557 /* 0x22d */
-#define CURLY_B_max_fail_t8_pb 558 /* 0x22e */
-#define CURLY_B_max_fail_t8_p8 559 /* 0x22f */
-
-#define COMMIT_next 140 /* 0x8c state for COMMIT */
-#define COMMIT_next_tb_pb 560 /* 0x230 */
-#define COMMIT_next_tb_p8 561 /* 0x231 */
-#define COMMIT_next_t8_pb 562 /* 0x232 */
-#define COMMIT_next_t8_p8 563 /* 0x233 */
-
-#define COMMIT_next_fail 141 /* 0x8d state for COMMIT */
-#define COMMIT_next_fail_tb_pb 564 /* 0x234 */
-#define COMMIT_next_fail_tb_p8 565 /* 0x235 */
-#define COMMIT_next_fail_t8_pb 566 /* 0x236 */
-#define COMMIT_next_fail_t8_p8 567 /* 0x237 */
-
-#define MARKPOINT_next 142 /* 0x8e state for MARKPOINT */
-#define MARKPOINT_next_tb_pb 568 /* 0x238 */
-#define MARKPOINT_next_tb_p8 569 /* 0x239 */
-#define MARKPOINT_next_t8_pb 570 /* 0x23a */
-#define MARKPOINT_next_t8_p8 571 /* 0x23b */
-
-#define MARKPOINT_next_fail 143 /* 0x8f state for MARKPOINT */
-#define MARKPOINT_next_fail_tb_pb 572 /* 0x23c */
-#define MARKPOINT_next_fail_tb_p8 573 /* 0x23d */
-#define MARKPOINT_next_fail_t8_pb 574 /* 0x23e */
-#define MARKPOINT_next_fail_t8_p8 575 /* 0x23f */
-
-#define SKIP_next 144 /* 0x90 state for SKIP */
-#define SKIP_next_tb_pb 576 /* 0x240 */
-#define SKIP_next_tb_p8 577 /* 0x241 */
-#define SKIP_next_t8_pb 578 /* 0x242 */
-#define SKIP_next_t8_p8 579 /* 0x243 */
-
-#define SKIP_next_fail 145 /* 0x91 state for SKIP */
-#define SKIP_next_fail_tb_pb 580 /* 0x244 */
-#define SKIP_next_fail_tb_p8 581 /* 0x245 */
-#define SKIP_next_fail_t8_pb 582 /* 0x246 */
-#define SKIP_next_fail_t8_p8 583 /* 0x247 */
-
-#define CUTGROUP_next 146 /* 0x92 state for CUTGROUP */
-#define CUTGROUP_next_tb_pb 584 /* 0x248 */
-#define CUTGROUP_next_tb_p8 585 /* 0x249 */
-#define CUTGROUP_next_t8_pb 586 /* 0x24a */
-#define CUTGROUP_next_t8_p8 587 /* 0x24b */
-
-#define CUTGROUP_next_fail 147 /* 0x93 state for CUTGROUP */
-#define CUTGROUP_next_fail_tb_pb 588 /* 0x24c */
-#define CUTGROUP_next_fail_tb_p8 589 /* 0x24d */
-#define CUTGROUP_next_fail_t8_pb 590 /* 0x24e */
-#define CUTGROUP_next_fail_t8_p8 591 /* 0x24f */
-
-#define KEEPS_next 148 /* 0x94 state for KEEPS */
-#define KEEPS_next_tb_pb 592 /* 0x250 */
-#define KEEPS_next_tb_p8 593 /* 0x251 */
-#define KEEPS_next_t8_pb 594 /* 0x252 */
-#define KEEPS_next_t8_p8 595 /* 0x253 */
-
-#define KEEPS_next_fail 149 /* 0x95 state for KEEPS */
-#define KEEPS_next_fail_tb_pb 596 /* 0x254 */
-#define KEEPS_next_fail_tb_p8 597 /* 0x255 */
-#define KEEPS_next_fail_t8_pb 598 /* 0x256 */
-#define KEEPS_next_fail_t8_p8 599 /* 0x257 */
-
-
-/* PL_regkind[] What type of regop or state is this. */
+#define END 0 /* 0x00 End of program. */
+#define END_tb 0 /* 0x000 */
+#define END_t8 1 /* 0x001 */
+#define END_tb_pb 0 /* 0x000 */
+#define END_tb_p8 1 /* 0x001 */
+#define END_t8_pb 2 /* 0x002 */
+#define END_t8_p8 3 /* 0x003 */
+
+#define SUCCEED 1 /* 0x01 Return from a
+ subroutine, basically. */
+#define SUCCEED_tb 2 /* 0x002 */
+#define SUCCEED_t8 3 /* 0x003 */
+#define SUCCEED_tb_pb 4 /* 0x004 */
+#define SUCCEED_tb_p8 5 /* 0x005 */
+#define SUCCEED_t8_pb 6 /* 0x006 */
+#define SUCCEED_t8_p8 7 /* 0x007 */
+
+#define SBOL 2 /* 0x02 Match "" at beginning
+ of line: /^/, /\A/ */
+#define SBOL_tb 4 /* 0x004 */
+#define SBOL_t8 5 /* 0x005 */
+#define SBOL_tb_pb 8 /* 0x008 */
+#define SBOL_tb_p8 9 /* 0x009 */
+#define SBOL_t8_pb 10 /* 0x00a */
+#define SBOL_t8_p8 11 /* 0x00b */
+
+#define BOL 2 /* 0x02 Match "" at beginning
+ of line: /^/, /\A/ */
+#define BOL_tb 4 /* 0x004 */
+#define BOL_t8 5 /* 0x005 */
+#define BOL_tb_pb 8 /* 0x008 */
+#define BOL_tb_p8 9 /* 0x009 */
+#define BOL_t8_pb 10 /* 0x00a */
+#define BOL_t8_p8 11 /* 0x00b */
+
+#define MBOL 3 /* 0x03 Same, assuming
+ multiline: /^/m */
+#define MBOL_tb 6 /* 0x006 */
+#define MBOL_t8 7 /* 0x007 */
+#define MBOL_tb_pb 12 /* 0x00c */
+#define MBOL_tb_p8 13 /* 0x00d */
+#define MBOL_t8_pb 14 /* 0x00e */
+#define MBOL_t8_p8 15 /* 0x00f */
+
+#define SEOL 4 /* 0x04 Match "" at end of
+ line: /$/ */
+#define SEOL_tb 8 /* 0x008 */
+#define SEOL_t8 9 /* 0x009 */
+#define SEOL_tb_pb 16 /* 0x010 */
+#define SEOL_tb_p8 17 /* 0x011 */
+#define SEOL_t8_pb 18 /* 0x012 */
+#define SEOL_t8_p8 19 /* 0x013 */
+
+#define EOL 4 /* 0x04 Match "" at end of
+ line: /$/ */
+#define EOL_tb 8 /* 0x008 */
+#define EOL_t8 9 /* 0x009 */
+#define EOL_tb_pb 16 /* 0x010 */
+#define EOL_tb_p8 17 /* 0x011 */
+#define EOL_t8_pb 18 /* 0x012 */
+#define EOL_t8_p8 19 /* 0x013 */
+
+#define MEOL 5 /* 0x05 Same, assuming
+ multiline: /$/m */
+#define MEOL_tb 10 /* 0x00a */
+#define MEOL_t8 11 /* 0x00b */
+#define MEOL_tb_pb 20 /* 0x014 */
+#define MEOL_tb_p8 21 /* 0x015 */
+#define MEOL_t8_pb 22 /* 0x016 */
+#define MEOL_t8_p8 23 /* 0x017 */
+
+#define EOS 6 /* 0x06 Match "" at end of
+ string: /\z/ */
+#define EOS_tb 12 /* 0x00c */
+#define EOS_t8 13 /* 0x00d */
+#define EOS_tb_pb 24 /* 0x018 */
+#define EOS_tb_p8 25 /* 0x019 */
+#define EOS_t8_pb 26 /* 0x01a */
+#define EOS_t8_p8 27 /* 0x01b */
+
+#define GPOS 7 /* 0x07 Matches where last m//g
+ left off. */
+#define GPOS_tb 14 /* 0x00e */
+#define GPOS_t8 15 /* 0x00f */
+#define GPOS_tb_pb 28 /* 0x01c */
+#define GPOS_tb_p8 29 /* 0x01d */
+#define GPOS_t8_pb 30 /* 0x01e */
+#define GPOS_t8_p8 31 /* 0x01f */
+
+#define BOUND 8 /* 0x08 Like BOUNDA for
+ non-utf8, otherwise like
+ BOUNDU */
+#define BOUND_tb 16 /* 0x010 */
+#define BOUND_t8 17 /* 0x011 */
+#define BOUND_tb_pb 32 /* 0x020 */
+#define BOUND_tb_p8 33 /* 0x021 */
+#define BOUND_t8_pb 34 /* 0x022 */
+#define BOUND_t8_p8 35 /* 0x023 */
+
+#define BOUNDL 9 /* 0x09 Like BOUND/BOUNDU, but
+ \w and \W are defined by
+ current locale */
+#define BOUNDL_tb 18 /* 0x012 */
+#define BOUNDL_t8 19 /* 0x013 */
+#define BOUNDL_tb_pb 36 /* 0x024 */
+#define BOUNDL_tb_p8 37 /* 0x025 */
+#define BOUNDL_t8_pb 38 /* 0x026 */
+#define BOUNDL_t8_p8 39 /* 0x027 */
+
+#define BOUNDU 10 /* 0x0a Match "" at any
+ boundary of a given type
+ using /u rules. */
+#define BOUNDU_tb 20 /* 0x014 */
+#define BOUNDU_t8 21 /* 0x015 */
+#define BOUNDU_tb_pb 40 /* 0x028 */
+#define BOUNDU_tb_p8 41 /* 0x029 */
+#define BOUNDU_t8_pb 42 /* 0x02a */
+#define BOUNDU_t8_p8 43 /* 0x02b */
+
+#define BOUNDA 11 /* 0x0b Match "" at any
+ boundary between \w\W or
+ \W\w, where \w is
+ [_a-zA-Z0-9] */
+#define BOUNDA_tb 22 /* 0x016 */
+#define BOUNDA_t8 23 /* 0x017 */
+#define BOUNDA_tb_pb 44 /* 0x02c */
+#define BOUNDA_tb_p8 45 /* 0x02d */
+#define BOUNDA_t8_pb 46 /* 0x02e */
+#define BOUNDA_t8_p8 47 /* 0x02f */
+
+#define NBOUND 12 /* 0x0c Like NBOUNDA for
+ non-utf8, otherwise like
+ BOUNDU */
+#define NBOUND_tb 24 /* 0x018 */
+#define NBOUND_t8 25 /* 0x019 */
+#define NBOUND_tb_pb 48 /* 0x030 */
+#define NBOUND_tb_p8 49 /* 0x031 */
+#define NBOUND_t8_pb 50 /* 0x032 */
+#define NBOUND_t8_p8 51 /* 0x033 */
+
+#define NBOUNDL 13 /* 0x0d Like NBOUND/NBOUNDU,
+ but \w and \W are defined by
+ current locale */
+#define NBOUNDL_tb 26 /* 0x01a */
+#define NBOUNDL_t8 27 /* 0x01b */
+#define NBOUNDL_tb_pb 52 /* 0x034 */
+#define NBOUNDL_tb_p8 53 /* 0x035 */
+#define NBOUNDL_t8_pb 54 /* 0x036 */
+#define NBOUNDL_t8_p8 55 /* 0x037 */
+
+#define NBOUNDU 14 /* 0x0e Match "" at any
+ non-boundary of a given type
+ using using /u rules. */
+#define NBOUNDU_tb 28 /* 0x01c */
+#define NBOUNDU_t8 29 /* 0x01d */
+#define NBOUNDU_tb_pb 56 /* 0x038 */
+#define NBOUNDU_tb_p8 57 /* 0x039 */
+#define NBOUNDU_t8_pb 58 /* 0x03a */
+#define NBOUNDU_t8_p8 59 /* 0x03b */
+
+#define NBOUNDA 15 /* 0x0f Match "" betweeen any
+ \w\w or \W\W, where \w is
+ [_a-zA-Z0-9] */
+#define NBOUNDA_tb 30 /* 0x01e */
+#define NBOUNDA_t8 31 /* 0x01f */
+#define NBOUNDA_tb_pb 60 /* 0x03c */
+#define NBOUNDA_tb_p8 61 /* 0x03d */
+#define NBOUNDA_t8_pb 62 /* 0x03e */
+#define NBOUNDA_t8_p8 63 /* 0x03f */
+
+#define REG_ANY 16 /* 0x10 Match any one character
+ (except newline). */
+#define REG_ANY_tb 32 /* 0x020 */
+#define REG_ANY_t8 33 /* 0x021 */
+#define REG_ANY_tb_pb 64 /* 0x040 */
+#define REG_ANY_tb_p8 65 /* 0x041 */
+#define REG_ANY_t8_pb 66 /* 0x042 */
+#define REG_ANY_t8_p8 67 /* 0x043 */
+
+#define SANY 17 /* 0x11 Match any one
+ character. */
+#define SANY_tb 34 /* 0x022 */
+#define SANY_t8 35 /* 0x023 */
+#define SANY_tb_pb 68 /* 0x044 */
+#define SANY_tb_p8 69 /* 0x045 */
+#define SANY_t8_pb 70 /* 0x046 */
+#define SANY_t8_p8 71 /* 0x047 */
+
+#define ANYOF 18 /* 0x12 Match character in (or
+ not in) this class, single
+ char match only */
+#define ANYOF_tb 36 /* 0x024 */
+#define ANYOF_t8 37 /* 0x025 */
+#define ANYOF_tb_pb 72 /* 0x048 */
+#define ANYOF_tb_p8 73 /* 0x049 */
+#define ANYOF_t8_pb 74 /* 0x04a */
+#define ANYOF_t8_p8 75 /* 0x04b */
+
+#define ANYOFD 19 /* 0x13 Like ANYOF, but /d is
+ in effect */
+#define ANYOFD_tb 38 /* 0x026 */
+#define ANYOFD_t8 39 /* 0x027 */
+#define ANYOFD_tb_pb 76 /* 0x04c */
+#define ANYOFD_tb_p8 77 /* 0x04d */
+#define ANYOFD_t8_pb 78 /* 0x04e */
+#define ANYOFD_t8_p8 79 /* 0x04f */
+
+#define ANYOFL 20 /* 0x14 Like ANYOF, but /l is
+ in effect */
+#define ANYOFL_tb 40 /* 0x028 */
+#define ANYOFL_t8 41 /* 0x029 */
+#define ANYOFL_tb_pb 80 /* 0x050 */
+#define ANYOFL_tb_p8 81 /* 0x051 */
+#define ANYOFL_t8_pb 82 /* 0x052 */
+#define ANYOFL_t8_p8 83 /* 0x053 */
+
+#define ANYOFPOSIXL 21 /* 0x15 Like ANYOFL, but
+ matches [[:posix:]] classes
+ */
+#define ANYOFPOSIXL_tb 42 /* 0x02a */
+#define ANYOFPOSIXL_t8 43 /* 0x02b */
+#define ANYOFPOSIXL_tb_pb 84 /* 0x054 */
+#define ANYOFPOSIXL_tb_p8 85 /* 0x055 */
+#define ANYOFPOSIXL_t8_pb 86 /* 0x056 */
+#define ANYOFPOSIXL_t8_p8 87 /* 0x057 */
+
+#define ANYOFH 22 /* 0x16 Like ANYOF, but only
+ has "High" matches, none in
+ the bitmap; the flags field
+ contains the lowest
+ matchable UTF-8 start byte
+ */
+#define ANYOFH_tb 44 /* 0x02c */
+#define ANYOFH_t8 45 /* 0x02d */
+#define ANYOFH_tb_pb 88 /* 0x058 */
+#define ANYOFH_tb_p8 89 /* 0x059 */
+#define ANYOFH_t8_pb 90 /* 0x05a */
+#define ANYOFH_t8_p8 91 /* 0x05b */
+
+#define ANYOFHb 23 /* 0x17 Like ANYOFH, but all
+ matches share the same UTF-8
+ start byte, given in the
+ flags field */
+#define ANYOFHb_tb 46 /* 0x02e */
+#define ANYOFHb_t8 47 /* 0x02f */
+#define ANYOFHb_tb_pb 92 /* 0x05c */
+#define ANYOFHb_tb_p8 93 /* 0x05d */
+#define ANYOFHb_t8_pb 94 /* 0x05e */
+#define ANYOFHb_t8_p8 95 /* 0x05f */
+
+#define ANYOFHr 24 /* 0x18 Like ANYOFH, but the
+ flags field contains packed
+ bounds for all matchable
+ UTF-8 start bytes. */
+#define ANYOFHr_tb 48 /* 0x030 */
+#define ANYOFHr_t8 49 /* 0x031 */
+#define ANYOFHr_tb_pb 96 /* 0x060 */
+#define ANYOFHr_tb_p8 97 /* 0x061 */
+#define ANYOFHr_t8_pb 98 /* 0x062 */
+#define ANYOFHr_t8_p8 99 /* 0x063 */
+
+#define ANYOFHs 25 /* 0x19 Like ANYOFHb, but has a
+ string field that gives the
+ leading matchable UTF-8
+ bytes; flags field is len */
+#define ANYOFHs_tb 50 /* 0x032 */
+#define ANYOFHs_t8 51 /* 0x033 */
+#define ANYOFHs_tb_pb 100 /* 0x064 */
+#define ANYOFHs_tb_p8 101 /* 0x065 */
+#define ANYOFHs_t8_pb 102 /* 0x066 */
+#define ANYOFHs_t8_p8 103 /* 0x067 */
+
+#define ANYOFR 26 /* 0x1a Matches any character
+ in the range given by its
+ packed args: upper 12 bits
+ is the max delta from the
+ base lower 20; the flags
+ field contains the lowest
+ matchable UTF-8 start byte
+ */
+#define ANYOFR_tb 52 /* 0x034 */
+#define ANYOFR_t8 53 /* 0x035 */
+#define ANYOFR_tb_pb 104 /* 0x068 */
+#define ANYOFR_tb_p8 105 /* 0x069 */
+#define ANYOFR_t8_pb 106 /* 0x06a */
+#define ANYOFR_t8_p8 107 /* 0x06b */
+
+#define ANYOFRb 27 /* 0x1b Like ANYOFR, but all
+ matches share the same UTF-8
+ start byte, given in the
+ flags field */
+#define ANYOFRb_tb 54 /* 0x036 */
+#define ANYOFRb_t8 55 /* 0x037 */
+#define ANYOFRb_tb_pb 108 /* 0x06c */
+#define ANYOFRb_tb_p8 109 /* 0x06d */
+#define ANYOFRb_t8_pb 110 /* 0x06e */
+#define ANYOFRb_t8_p8 111 /* 0x06f */
+
+#define ANYOFHbbm 28 /* 0x1c Like ANYOFHb, but only
+ for 2-byte UTF-8 characters;
+ uses a bitmap to match the
+ continuation byte */
+#define ANYOFHbbm_tb 56 /* 0x038 */
+#define ANYOFHbbm_t8 57 /* 0x039 */
+#define ANYOFHbbm_tb_pb 112 /* 0x070 */
+#define ANYOFHbbm_tb_p8 113 /* 0x071 */
+#define ANYOFHbbm_t8_pb 114 /* 0x072 */
+#define ANYOFHbbm_t8_p8 115 /* 0x073 */
+
+#define ANYOFM 29 /* 0x1d Like ANYOF, but matches
+ an invariant byte as
+ determined by the mask and
+ arg */
+#define ANYOFM_tb 58 /* 0x03a */
+#define ANYOFM_t8 59 /* 0x03b */
+#define ANYOFM_tb_pb 116 /* 0x074 */
+#define ANYOFM_tb_p8 117 /* 0x075 */
+#define ANYOFM_t8_pb 118 /* 0x076 */
+#define ANYOFM_t8_p8 119 /* 0x077 */
+
+#define NANYOFM 30 /* 0x1e complement of ANYOFM */
+#define NANYOFM_tb 60 /* 0x03c */
+#define NANYOFM_t8 61 /* 0x03d */
+#define NANYOFM_tb_pb 120 /* 0x078 */
+#define NANYOFM_tb_p8 121 /* 0x079 */
+#define NANYOFM_t8_pb 122 /* 0x07a */
+#define NANYOFM_t8_p8 123 /* 0x07b */
+
+#define POSIXD 31 /* 0x1f Some [[:class:]] under
+ /d; the FLAGS field gives
+ which one */
+#define POSIXD_tb 62 /* 0x03e */
+#define POSIXD_t8 63 /* 0x03f */
+#define POSIXD_tb_pb 124 /* 0x07c */
+#define POSIXD_tb_p8 125 /* 0x07d */
+#define POSIXD_t8_pb 126 /* 0x07e */
+#define POSIXD_t8_p8 127 /* 0x07f */
+
+#define POSIXL 32 /* 0x20 Some [[:class:]] under
+ /l; the FLAGS field gives
+ which one */
+#define POSIXL_tb 64 /* 0x040 */
+#define POSIXL_t8 65 /* 0x041 */
+#define POSIXL_tb_pb 128 /* 0x080 */
+#define POSIXL_tb_p8 129 /* 0x081 */
+#define POSIXL_t8_pb 130 /* 0x082 */
+#define POSIXL_t8_p8 131 /* 0x083 */
+
+#define POSIXU 33 /* 0x21 Some [[:class:]] under
+ /u; the FLAGS field gives
+ which one */
+#define POSIXU_tb 66 /* 0x042 */
+#define POSIXU_t8 67 /* 0x043 */
+#define POSIXU_tb_pb 132 /* 0x084 */
+#define POSIXU_tb_p8 133 /* 0x085 */
+#define POSIXU_t8_pb 134 /* 0x086 */
+#define POSIXU_t8_p8 135 /* 0x087 */
+
+#define POSIXA 34 /* 0x22 Some [[:class:]] under
+ /a; the FLAGS field gives
+ which one */
+#define POSIXA_tb 68 /* 0x044 */
+#define POSIXA_t8 69 /* 0x045 */
+#define POSIXA_tb_pb 136 /* 0x088 */
+#define POSIXA_tb_p8 137 /* 0x089 */
+#define POSIXA_t8_pb 138 /* 0x08a */
+#define POSIXA_t8_p8 139 /* 0x08b */
+
+#define NPOSIXD 35 /* 0x23 complement of POSIXD,
+ [[:^class:]] */
+#define NPOSIXD_tb 70 /* 0x046 */
+#define NPOSIXD_t8 71 /* 0x047 */
+#define NPOSIXD_tb_pb 140 /* 0x08c */
+#define NPOSIXD_tb_p8 141 /* 0x08d */
+#define NPOSIXD_t8_pb 142 /* 0x08e */
+#define NPOSIXD_t8_p8 143 /* 0x08f */
+
+#define NPOSIXL 36 /* 0x24 complement of POSIXL,
+ [[:^class:]] */
+#define NPOSIXL_tb 72 /* 0x048 */
+#define NPOSIXL_t8 73 /* 0x049 */
+#define NPOSIXL_tb_pb 144 /* 0x090 */
+#define NPOSIXL_tb_p8 145 /* 0x091 */
+#define NPOSIXL_t8_pb 146 /* 0x092 */
+#define NPOSIXL_t8_p8 147 /* 0x093 */
+
+#define NPOSIXU 37 /* 0x25 complement of POSIXU,
+ [[:^class:]] */
+#define NPOSIXU_tb 74 /* 0x04a */
+#define NPOSIXU_t8 75 /* 0x04b */
+#define NPOSIXU_tb_pb 148 /* 0x094 */
+#define NPOSIXU_tb_p8 149 /* 0x095 */
+#define NPOSIXU_t8_pb 150 /* 0x096 */
+#define NPOSIXU_t8_p8 151 /* 0x097 */
+
+#define NPOSIXA 38 /* 0x26 complement of POSIXA,
+ [[:^class:]] */
+#define NPOSIXA_tb 76 /* 0x04c */
+#define NPOSIXA_t8 77 /* 0x04d */
+#define NPOSIXA_tb_pb 152 /* 0x098 */
+#define NPOSIXA_tb_p8 153 /* 0x099 */
+#define NPOSIXA_t8_pb 154 /* 0x09a */
+#define NPOSIXA_t8_p8 155 /* 0x09b */
+
+#define CLUMP 39 /* 0x27 Match any extended
+ grapheme cluster sequence */
+#define CLUMP_tb 78 /* 0x04e */
+#define CLUMP_t8 79 /* 0x04f */
+#define CLUMP_tb_pb 156 /* 0x09c */
+#define CLUMP_tb_p8 157 /* 0x09d */
+#define CLUMP_t8_pb 158 /* 0x09e */
+#define CLUMP_t8_p8 159 /* 0x09f */
+
+#define BRANCH 40 /* 0x28 Match this alternative,
+ or the next... */
+#define BRANCH_tb 80 /* 0x050 */
+#define BRANCH_t8 81 /* 0x051 */
+#define BRANCH_tb_pb 160 /* 0x0a0 */
+#define BRANCH_tb_p8 161 /* 0x0a1 */
+#define BRANCH_t8_pb 162 /* 0x0a2 */
+#define BRANCH_t8_p8 163 /* 0x0a3 */
+
+#define EXACT 41 /* 0x29 Match this string
+ (flags field is the length).
+ */
+#define EXACT_tb 82 /* 0x052 */
+#define EXACT_t8 83 /* 0x053 */
+#define EXACT_tb_pb 164 /* 0x0a4 */
+#define EXACT_tb_p8 165 /* 0x0a5 */
+#define EXACT_t8_pb 166 /* 0x0a6 */
+#define EXACT_t8_p8 167 /* 0x0a7 */
+
+#define LEXACT 42 /* 0x2a Match this long string
+ (preceded by length; flags
+ unused). */
+#define LEXACT_tb 84 /* 0x054 */
+#define LEXACT_t8 85 /* 0x055 */
+#define LEXACT_tb_pb 168 /* 0x0a8 */
+#define LEXACT_tb_p8 169 /* 0x0a9 */
+#define LEXACT_t8_pb 170 /* 0x0aa */
+#define LEXACT_t8_p8 171 /* 0x0ab */
+
+#define EXACTL 43 /* 0x2b Like EXACT, but /l is
+ in effect (used so
+ locale-related warnings can
+ be checked for) */
+#define EXACTL_tb 86 /* 0x056 */
+#define EXACTL_t8 87 /* 0x057 */
+#define EXACTL_tb_pb 172 /* 0x0ac */
+#define EXACTL_tb_p8 173 /* 0x0ad */
+#define EXACTL_t8_pb 174 /* 0x0ae */
+#define EXACTL_t8_p8 175 /* 0x0af */
+
+#define EXACTF 44 /* 0x2c Like EXACT, but match
+ using /id rules; (string not
+ UTF-8, ASCII folded;
+ non-ASCII not) */
+#define EXACTF_tb 88 /* 0x058 */
+#define EXACTF_t8 89 /* 0x059 */
+#define EXACTF_tb_pb 176 /* 0x0b0 */
+#define EXACTF_tb_p8 177 /* 0x0b1 */
+#define EXACTF_t8_pb 178 /* 0x0b2 */
+#define EXACTF_t8_p8 179 /* 0x0b3 */
+
+#define EXACTFL 45 /* 0x2d Like EXACT, but match
+ using /il rules; (string not
+ likely to be folded) */
+#define EXACTFL_tb 90 /* 0x05a */
+#define EXACTFL_t8 91 /* 0x05b */
+#define EXACTFL_tb_pb 180 /* 0x0b4 */
+#define EXACTFL_tb_p8 181 /* 0x0b5 */
+#define EXACTFL_t8_pb 182 /* 0x0b6 */
+#define EXACTFL_t8_p8 183 /* 0x0b7 */
+
+#define EXACTFU 46 /* 0x2e Like EXACT, but match
+ using /iu rules; (string
+ folded) */
+#define EXACTFU_tb 92 /* 0x05c */
+#define EXACTFU_t8 93 /* 0x05d */
+#define EXACTFU_tb_pb 184 /* 0x0b8 */
+#define EXACTFU_tb_p8 185 /* 0x0b9 */
+#define EXACTFU_t8_pb 186 /* 0x0ba */
+#define EXACTFU_t8_p8 187 /* 0x0bb */
+
+#define EXACTFAA 47 /* 0x2f Like EXACT, but match
+ using /iaa rules; (string
+ folded except MICRO in
+ non-UTF8 patterns; doesn't
+ contain SHARP S unless
+ UTF-8; folded length <=
+ unfolded) */
+#define EXACTFAA_tb 94 /* 0x05e */
+#define EXACTFAA_t8 95 /* 0x05f */
+#define EXACTFAA_tb_pb 188 /* 0x0bc */
+#define EXACTFAA_tb_p8 189 /* 0x0bd */
+#define EXACTFAA_t8_pb 190 /* 0x0be */
+#define EXACTFAA_t8_p8 191 /* 0x0bf */
+
+#define EXACTFAA_NO_TRIE 48 /* 0x30 Like EXACTFAA, (string
+ not UTF-8, folded except:
+ MICRO, SHARP S; folded
+ length <= unfolded, not
+ currently trie-able) */
+#define EXACTFAA_NO_TRIE_tb 96 /* 0x060 */
+#define EXACTFAA_NO_TRIE_t8 97 /* 0x061 */
+#define EXACTFAA_NO_TRIE_tb_pb 192 /* 0x0c0 */
+#define EXACTFAA_NO_TRIE_tb_p8 193 /* 0x0c1 */
+#define EXACTFAA_NO_TRIE_t8_pb 194 /* 0x0c2 */
+#define EXACTFAA_NO_TRIE_t8_p8 195 /* 0x0c3 */
+
+#define EXACTFUP 49 /* 0x31 Like EXACT, but match
+ using /iu rules; (string not
+ UTF-8, folded except MICRO:
+ hence Problematic) */
+#define EXACTFUP_tb 98 /* 0x062 */
+#define EXACTFUP_t8 99 /* 0x063 */
+#define EXACTFUP_tb_pb 196 /* 0x0c4 */
+#define EXACTFUP_tb_p8 197 /* 0x0c5 */
+#define EXACTFUP_t8_pb 198 /* 0x0c6 */
+#define EXACTFUP_t8_p8 199 /* 0x0c7 */
+
+#define EXACTFLU8 50 /* 0x32 Like EXACTFU, but use
+ /il, UTF-8, (string is
+ folded, and everything in it
+ is above 255 */
+#define EXACTFLU8_tb 100 /* 0x064 */
+#define EXACTFLU8_t8 101 /* 0x065 */
+#define EXACTFLU8_tb_pb 200 /* 0x0c8 */
+#define EXACTFLU8_tb_p8 201 /* 0x0c9 */
+#define EXACTFLU8_t8_pb 202 /* 0x0ca */
+#define EXACTFLU8_t8_p8 203 /* 0x0cb */
+
+#define EXACT_REQ8 51 /* 0x33 Like EXACT, but only
+ UTF-8 encoded targets can
+ match */
+#define EXACT_REQ8_tb 102 /* 0x066 */
+#define EXACT_REQ8_t8 103 /* 0x067 */
+#define EXACT_REQ8_tb_pb 204 /* 0x0cc */
+#define EXACT_REQ8_tb_p8 205 /* 0x0cd */
+#define EXACT_REQ8_t8_pb 206 /* 0x0ce */
+#define EXACT_REQ8_t8_p8 207 /* 0x0cf */
+
+#define LEXACT_REQ8 52 /* 0x34 Like LEXACT, but only
+ UTF-8 encoded targets can
+ match */
+#define LEXACT_REQ8_tb 104 /* 0x068 */
+#define LEXACT_REQ8_t8 105 /* 0x069 */
+#define LEXACT_REQ8_tb_pb 208 /* 0x0d0 */
+#define LEXACT_REQ8_tb_p8 209 /* 0x0d1 */
+#define LEXACT_REQ8_t8_pb 210 /* 0x0d2 */
+#define LEXACT_REQ8_t8_p8 211 /* 0x0d3 */
+
+#define EXACTFU_REQ8 53 /* 0x35 Like EXACTFU, but only
+ UTF-8 encoded targets can
+ match */
+#define EXACTFU_REQ8_tb 106 /* 0x06a */
+#define EXACTFU_REQ8_t8 107 /* 0x06b */
+#define EXACTFU_REQ8_tb_pb 212 /* 0x0d4 */
+#define EXACTFU_REQ8_tb_p8 213 /* 0x0d5 */
+#define EXACTFU_REQ8_t8_pb 214 /* 0x0d6 */
+#define EXACTFU_REQ8_t8_p8 215 /* 0x0d7 */
+
+#define EXACTFU_S_EDGE 54 /* 0x36 /di rules, but nothing
+ in it precludes /ui, except
+ begins and/or ends with
+ [Ss]; (string not UTF-8;
+ compile-time only) */
+#define EXACTFU_S_EDGE_tb 108 /* 0x06c */
+#define EXACTFU_S_EDGE_t8 109 /* 0x06d */
+#define EXACTFU_S_EDGE_tb_pb 216 /* 0x0d8 */
+#define EXACTFU_S_EDGE_tb_p8 217 /* 0x0d9 */
+#define EXACTFU_S_EDGE_t8_pb 218 /* 0x0da */
+#define EXACTFU_S_EDGE_t8_p8 219 /* 0x0db */
+
+#define LNBREAK 55 /* 0x37 generic newline pattern
+ */
+#define LNBREAK_tb 110 /* 0x06e */
+#define LNBREAK_t8 111 /* 0x06f */
+#define LNBREAK_tb_pb 220 /* 0x0dc */
+#define LNBREAK_tb_p8 221 /* 0x0dd */
+#define LNBREAK_t8_pb 222 /* 0x0de */
+#define LNBREAK_t8_p8 223 /* 0x0df */
+
+#define TRIE 56 /* 0x38 Match many
+ EXACT(F[ALU]?)? at once.
+ flags==type */
+#define TRIE_tb 112 /* 0x070 */
+#define TRIE_t8 113 /* 0x071 */
+#define TRIE_tb_pb 224 /* 0x0e0 */
+#define TRIE_tb_p8 225 /* 0x0e1 */
+#define TRIE_t8_pb 226 /* 0x0e2 */
+#define TRIE_t8_p8 227 /* 0x0e3 */
+
+#define TRIEC 57 /* 0x39 Same as TRIE, but with
+ embedded charclass data */
+#define TRIEC_tb 114 /* 0x072 */
+#define TRIEC_t8 115 /* 0x073 */
+#define TRIEC_tb_pb 228 /* 0x0e4 */
+#define TRIEC_tb_p8 229 /* 0x0e5 */
+#define TRIEC_t8_pb 230 /* 0x0e6 */
+#define TRIEC_t8_p8 231 /* 0x0e7 */
+
+#define AHOCORASICK 58 /* 0x3a Aho Corasick stclass.
+ flags==type */
+#define AHOCORASICK_tb 116 /* 0x074 */
+#define AHOCORASICK_t8 117 /* 0x075 */
+#define AHOCORASICK_tb_pb 232 /* 0x0e8 */
+#define AHOCORASICK_tb_p8 233 /* 0x0e9 */
+#define AHOCORASICK_t8_pb 234 /* 0x0ea */
+#define AHOCORASICK_t8_p8 235 /* 0x0eb */
+
+#define AHOCORASICKC 59 /* 0x3b Same as AHOCORASICK,
+ but with embedded charclass
+ data */
+#define AHOCORASICKC_tb 118 /* 0x076 */
+#define AHOCORASICKC_t8 119 /* 0x077 */
+#define AHOCORASICKC_tb_pb 236 /* 0x0ec */
+#define AHOCORASICKC_tb_p8 237 /* 0x0ed */
+#define AHOCORASICKC_t8_pb 238 /* 0x0ee */
+#define AHOCORASICKC_t8_p8 239 /* 0x0ef */
+
+#define NOTHING 60 /* 0x3c Match empty string. */
+#define NOTHING_tb 120 /* 0x078 */
+#define NOTHING_t8 121 /* 0x079 */
+#define NOTHING_tb_pb 240 /* 0x0f0 */
+#define NOTHING_tb_p8 241 /* 0x0f1 */
+#define NOTHING_t8_pb 242 /* 0x0f2 */
+#define NOTHING_t8_p8 243 /* 0x0f3 */
+
+#define TAIL 61 /* 0x3d Match empty string. Can
+ jump here from outside. */
+#define TAIL_tb 122 /* 0x07a */
+#define TAIL_t8 123 /* 0x07b */
+#define TAIL_tb_pb 244 /* 0x0f4 */
+#define TAIL_tb_p8 245 /* 0x0f5 */
+#define TAIL_t8_pb 246 /* 0x0f6 */
+#define TAIL_t8_p8 247 /* 0x0f7 */
+
+#define STAR 62 /* 0x3e Match this (simple)
+ thing 0 or more times:
+ /A{0,}B/ where A is width 1
+ char */
+#define STAR_tb 124 /* 0x07c */
+#define STAR_t8 125 /* 0x07d */
+#define STAR_tb_pb 248 /* 0x0f8 */
+#define STAR_tb_p8 249 /* 0x0f9 */
+#define STAR_t8_pb 250 /* 0x0fa */
+#define STAR_t8_p8 251 /* 0x0fb */
+
+#define PLUS 63 /* 0x3f Match this (simple)
+ thing 1 or more times:
+ /A{1,}B/ where A is width 1
+ char */
+#define PLUS_tb 126 /* 0x07e */
+#define PLUS_t8 127 /* 0x07f */
+#define PLUS_tb_pb 252 /* 0x0fc */
+#define PLUS_tb_p8 253 /* 0x0fd */
+#define PLUS_t8_pb 254 /* 0x0fe */
+#define PLUS_t8_p8 255 /* 0x0ff */
+
+#define CURLY 64 /* 0x40 Match this (simple)
+ thing {n,m} times: /A{m,n}B/
+ where A is width 1 char */
+#define CURLY_tb 128 /* 0x080 */
+#define CURLY_t8 129 /* 0x081 */
+#define CURLY_tb_pb 256 /* 0x100 */
+#define CURLY_tb_p8 257 /* 0x101 */
+#define CURLY_t8_pb 258 /* 0x102 */
+#define CURLY_t8_p8 259 /* 0x103 */
+
+#define CURLYN 65 /* 0x41 Capture next-after-this
+ simple thing: /(A){m,n}B/
+ where A is width 1 char */
+#define CURLYN_tb 130 /* 0x082 */
+#define CURLYN_t8 131 /* 0x083 */
+#define CURLYN_tb_pb 260 /* 0x104 */
+#define CURLYN_tb_p8 261 /* 0x105 */
+#define CURLYN_t8_pb 262 /* 0x106 */
+#define CURLYN_t8_p8 263 /* 0x107 */
+
+#define CURLYM 66 /* 0x42 Capture this
+ medium-complex thing {n,m}
+ times: /(A){m,n}B/ where A
+ is fixed-length */
+#define CURLYM_tb 132 /* 0x084 */
+#define CURLYM_t8 133 /* 0x085 */
+#define CURLYM_tb_pb 264 /* 0x108 */
+#define CURLYM_tb_p8 265 /* 0x109 */
+#define CURLYM_t8_pb 266 /* 0x10a */
+#define CURLYM_t8_p8 267 /* 0x10b */
+
+#define CURLYX 67 /* 0x43 Match/Capture this
+ complex thing {n,m} times.
+ */
+#define CURLYX_tb 134 /* 0x086 */
+#define CURLYX_t8 135 /* 0x087 */
+#define CURLYX_tb_pb 268 /* 0x10c */
+#define CURLYX_tb_p8 269 /* 0x10d */
+#define CURLYX_t8_pb 270 /* 0x10e */
+#define CURLYX_t8_p8 271 /* 0x10f */
+
+#define WHILEM 68 /* 0x44 Do curly processing and
+ see if rest matches. */
+#define WHILEM_tb 136 /* 0x088 */
+#define WHILEM_t8 137 /* 0x089 */
+#define WHILEM_tb_pb 272 /* 0x110 */
+#define WHILEM_tb_p8 273 /* 0x111 */
+#define WHILEM_t8_pb 274 /* 0x112 */
+#define WHILEM_t8_p8 275 /* 0x113 */
+
+#define OPEN 69 /* 0x45 Mark this point in
+ input as start of #n. */
+#define OPEN_tb 138 /* 0x08a */
+#define OPEN_t8 139 /* 0x08b */
+#define OPEN_tb_pb 276 /* 0x114 */
+#define OPEN_tb_p8 277 /* 0x115 */
+#define OPEN_t8_pb 278 /* 0x116 */
+#define OPEN_t8_p8 279 /* 0x117 */
+
+#define CLOSE 70 /* 0x46 Close corresponding
+ OPEN of #n. */
+#define CLOSE_tb 140 /* 0x08c */
+#define CLOSE_t8 141 /* 0x08d */
+#define CLOSE_tb_pb 280 /* 0x118 */
+#define CLOSE_tb_p8 281 /* 0x119 */
+#define CLOSE_t8_pb 282 /* 0x11a */
+#define CLOSE_t8_p8 283 /* 0x11b */
+
+#define SROPEN 71 /* 0x47 Same as OPEN, but for
+ script run */
+#define SROPEN_tb 142 /* 0x08e */
+#define SROPEN_t8 143 /* 0x08f */
+#define SROPEN_tb_pb 284 /* 0x11c */
+#define SROPEN_tb_p8 285 /* 0x11d */
+#define SROPEN_t8_pb 286 /* 0x11e */
+#define SROPEN_t8_p8 287 /* 0x11f */
+
+#define SRCLOSE 72 /* 0x48 Close preceding SROPEN
+ */
+#define SRCLOSE_tb 144 /* 0x090 */
+#define SRCLOSE_t8 145 /* 0x091 */
+#define SRCLOSE_tb_pb 288 /* 0x120 */
+#define SRCLOSE_tb_p8 289 /* 0x121 */
+#define SRCLOSE_t8_pb 290 /* 0x122 */
+#define SRCLOSE_t8_p8 291 /* 0x123 */
+
+#define REF 73 /* 0x49 Match some already
+ matched string */
+#define REF_tb 146 /* 0x092 */
+#define REF_t8 147 /* 0x093 */
+#define REF_tb_pb 292 /* 0x124 */
+#define REF_tb_p8 293 /* 0x125 */
+#define REF_t8_pb 294 /* 0x126 */
+#define REF_t8_p8 295 /* 0x127 */
+
+#define REFF 74 /* 0x4a Match already matched
+ string, using /di rules. */
+#define REFF_tb 148 /* 0x094 */
+#define REFF_t8 149 /* 0x095 */
+#define REFF_tb_pb 296 /* 0x128 */
+#define REFF_tb_p8 297 /* 0x129 */
+#define REFF_t8_pb 298 /* 0x12a */
+#define REFF_t8_p8 299 /* 0x12b */
+
+#define REFFL 75 /* 0x4b Match already matched
+ string, using /li rules. */
+#define REFFL_tb 150 /* 0x096 */
+#define REFFL_t8 151 /* 0x097 */
+#define REFFL_tb_pb 300 /* 0x12c */
+#define REFFL_tb_p8 301 /* 0x12d */
+#define REFFL_t8_pb 302 /* 0x12e */
+#define REFFL_t8_p8 303 /* 0x12f */
+
+#define REFFU 76 /* 0x4c Match already matched
+ string, usng /ui. */
+#define REFFU_tb 152 /* 0x098 */
+#define REFFU_t8 153 /* 0x099 */
+#define REFFU_tb_pb 304 /* 0x130 */
+#define REFFU_tb_p8 305 /* 0x131 */
+#define REFFU_t8_pb 306 /* 0x132 */
+#define REFFU_t8_p8 307 /* 0x133 */
+
+#define REFFA 77 /* 0x4d Match already matched
+ string, using /aai rules. */
+#define REFFA_tb 154 /* 0x09a */
+#define REFFA_t8 155 /* 0x09b */
+#define REFFA_tb_pb 308 /* 0x134 */
+#define REFFA_tb_p8 309 /* 0x135 */
+#define REFFA_t8_pb 310 /* 0x136 */
+#define REFFA_t8_p8 311 /* 0x137 */
+
+#define REFN 78 /* 0x4e Match some already
+ matched string */
+#define REFN_tb 156 /* 0x09c */
+#define REFN_t8 157 /* 0x09d */
+#define REFN_tb_pb 312 /* 0x138 */
+#define REFN_tb_p8 313 /* 0x139 */
+#define REFN_t8_pb 314 /* 0x13a */
+#define REFN_t8_p8 315 /* 0x13b */
+
+#define REFFN 79 /* 0x4f Match already matched
+ string, using /di rules. */
+#define REFFN_tb 158 /* 0x09e */
+#define REFFN_t8 159 /* 0x09f */
+#define REFFN_tb_pb 316 /* 0x13c */
+#define REFFN_tb_p8 317 /* 0x13d */
+#define REFFN_t8_pb 318 /* 0x13e */
+#define REFFN_t8_p8 319 /* 0x13f */
+
+#define REFFLN 80 /* 0x50 Match already matched
+ string, using /li rules. */
+#define REFFLN_tb 160 /* 0x0a0 */
+#define REFFLN_t8 161 /* 0x0a1 */
+#define REFFLN_tb_pb 320 /* 0x140 */
+#define REFFLN_tb_p8 321 /* 0x141 */
+#define REFFLN_t8_pb 322 /* 0x142 */
+#define REFFLN_t8_p8 323 /* 0x143 */
+
+#define REFFUN 81 /* 0x51 Match already matched
+ string, using /ui rules. */
+#define REFFUN_tb 162 /* 0x0a2 */
+#define REFFUN_t8 163 /* 0x0a3 */
+#define REFFUN_tb_pb 324 /* 0x144 */
+#define REFFUN_tb_p8 325 /* 0x145 */
+#define REFFUN_t8_pb 326 /* 0x146 */
+#define REFFUN_t8_p8 327 /* 0x147 */
+
+#define REFFAN 82 /* 0x52 Match already matched
+ string, using /aai rules. */
+#define REFFAN_tb 164 /* 0x0a4 */
+#define REFFAN_t8 165 /* 0x0a5 */
+#define REFFAN_tb_pb 328 /* 0x148 */
+#define REFFAN_tb_p8 329 /* 0x149 */
+#define REFFAN_t8_pb 330 /* 0x14a */
+#define REFFAN_t8_p8 331 /* 0x14b */
+
+#define LONGJMP 83 /* 0x53 Jump far away. */
+#define LONGJMP_tb 166 /* 0x0a6 */
+#define LONGJMP_t8 167 /* 0x0a7 */
+#define LONGJMP_tb_pb 332 /* 0x14c */
+#define LONGJMP_tb_p8 333 /* 0x14d */
+#define LONGJMP_t8_pb 334 /* 0x14e */
+#define LONGJMP_t8_p8 335 /* 0x14f */
+
+#define BRANCHJ 84 /* 0x54 BRANCH with long
+ offset. */
+#define BRANCHJ_tb 168 /* 0x0a8 */
+#define BRANCHJ_t8 169 /* 0x0a9 */
+#define BRANCHJ_tb_pb 336 /* 0x150 */
+#define BRANCHJ_tb_p8 337 /* 0x151 */
+#define BRANCHJ_t8_pb 338 /* 0x152 */
+#define BRANCHJ_t8_p8 339 /* 0x153 */
+
+#define IFMATCH 85 /* 0x55 Succeeds if the
+ following matches; non-zero
+ flags "f", next_off "o"
+ means lookbehind assertion
+ starting "f..(f-o)"
+ characters before current */
+#define IFMATCH_tb 170 /* 0x0aa */
+#define IFMATCH_t8 171 /* 0x0ab */
+#define IFMATCH_tb_pb 340 /* 0x154 */
+#define IFMATCH_tb_p8 341 /* 0x155 */
+#define IFMATCH_t8_pb 342 /* 0x156 */
+#define IFMATCH_t8_p8 343 /* 0x157 */
+
+#define UNLESSM 86 /* 0x56 Fails if the following
+ matches; non-zero flags "f",
+ next_off "o" means
+ lookbehind assertion
+ starting "f..(f-o)"
+ characters before current */
+#define UNLESSM_tb 172 /* 0x0ac */
+#define UNLESSM_t8 173 /* 0x0ad */
+#define UNLESSM_tb_pb 344 /* 0x158 */
+#define UNLESSM_tb_p8 345 /* 0x159 */
+#define UNLESSM_t8_pb 346 /* 0x15a */
+#define UNLESSM_t8_p8 347 /* 0x15b */
+
+#define SUSPEND 87 /* 0x57 "Independent" sub-RE.
+ */
+#define SUSPEND_tb 174 /* 0x0ae */
+#define SUSPEND_t8 175 /* 0x0af */
+#define SUSPEND_tb_pb 348 /* 0x15c */
+#define SUSPEND_tb_p8 349 /* 0x15d */
+#define SUSPEND_t8_pb 350 /* 0x15e */
+#define SUSPEND_t8_p8 351 /* 0x15f */
+
+#define IFTHEN 88 /* 0x58 Switch, should be
+ preceded by switcher. */
+#define IFTHEN_tb 176 /* 0x0b0 */
+#define IFTHEN_t8 177 /* 0x0b1 */
+#define IFTHEN_tb_pb 352 /* 0x160 */
+#define IFTHEN_tb_p8 353 /* 0x161 */
+#define IFTHEN_t8_pb 354 /* 0x162 */
+#define IFTHEN_t8_p8 355 /* 0x163 */
+
+#define GROUPP 89 /* 0x59 Whether the group
+ matched. */
+#define GROUPP_tb 178 /* 0x0b2 */
+#define GROUPP_t8 179 /* 0x0b3 */
+#define GROUPP_tb_pb 356 /* 0x164 */
+#define GROUPP_tb_p8 357 /* 0x165 */
+#define GROUPP_t8_pb 358 /* 0x166 */
+#define GROUPP_t8_p8 359 /* 0x167 */
+
+#define EVAL 90 /* 0x5a Execute some Perl code.
+ */
+#define EVAL_tb 180 /* 0x0b4 */
+#define EVAL_t8 181 /* 0x0b5 */
+#define EVAL_tb_pb 360 /* 0x168 */
+#define EVAL_tb_p8 361 /* 0x169 */
+#define EVAL_t8_pb 362 /* 0x16a */
+#define EVAL_t8_p8 363 /* 0x16b */
+
+#define MINMOD 91 /* 0x5b Next operator is not
+ greedy. */
+#define MINMOD_tb 182 /* 0x0b6 */
+#define MINMOD_t8 183 /* 0x0b7 */
+#define MINMOD_tb_pb 364 /* 0x16c */
+#define MINMOD_tb_p8 365 /* 0x16d */
+#define MINMOD_t8_pb 366 /* 0x16e */
+#define MINMOD_t8_p8 367 /* 0x16f */
+
+#define LOGICAL 92 /* 0x5c Next opcode should set
+ the flag only. */
+#define LOGICAL_tb 184 /* 0x0b8 */
+#define LOGICAL_t8 185 /* 0x0b9 */
+#define LOGICAL_tb_pb 368 /* 0x170 */
+#define LOGICAL_tb_p8 369 /* 0x171 */
+#define LOGICAL_t8_pb 370 /* 0x172 */
+#define LOGICAL_t8_p8 371 /* 0x173 */
+
+#define RENUM 93 /* 0x5d Group with
+ independently numbered
+ parens. */
+#define RENUM_tb 186 /* 0x0ba */
+#define RENUM_t8 187 /* 0x0bb */
+#define RENUM_tb_pb 372 /* 0x174 */
+#define RENUM_tb_p8 373 /* 0x175 */
+#define RENUM_t8_pb 374 /* 0x176 */
+#define RENUM_t8_p8 375 /* 0x177 */
+
+#define GOSUB 94 /* 0x5e recurse to paren arg1
+ at (signed) ofs arg2 */
+#define GOSUB_tb 188 /* 0x0bc */
+#define GOSUB_t8 189 /* 0x0bd */
+#define GOSUB_tb_pb 376 /* 0x178 */
+#define GOSUB_tb_p8 377 /* 0x179 */
+#define GOSUB_t8_pb 378 /* 0x17a */
+#define GOSUB_t8_p8 379 /* 0x17b */
+
+#define GROUPPN 95 /* 0x5f Whether the group
+ matched. */
+#define GROUPPN_tb 190 /* 0x0be */
+#define GROUPPN_t8 191 /* 0x0bf */
+#define GROUPPN_tb_pb 380 /* 0x17c */
+#define GROUPPN_tb_p8 381 /* 0x17d */
+#define GROUPPN_t8_pb 382 /* 0x17e */
+#define GROUPPN_t8_p8 383 /* 0x17f */
+
+#define INSUBP 96 /* 0x60 Whether we are in a
+ specific recurse. */
+#define INSUBP_tb 192 /* 0x0c0 */
+#define INSUBP_t8 193 /* 0x0c1 */
+#define INSUBP_tb_pb 384 /* 0x180 */
+#define INSUBP_tb_p8 385 /* 0x181 */
+#define INSUBP_t8_pb 386 /* 0x182 */
+#define INSUBP_t8_p8 387 /* 0x183 */
+
+#define DEFINEP 97 /* 0x61 Never execute directly.
+ */
+#define DEFINEP_tb 194 /* 0x0c2 */
+#define DEFINEP_t8 195 /* 0x0c3 */
+#define DEFINEP_tb_pb 388 /* 0x184 */
+#define DEFINEP_tb_p8 389 /* 0x185 */
+#define DEFINEP_t8_pb 390 /* 0x186 */
+#define DEFINEP_t8_p8 391 /* 0x187 */
+
+#define ENDLIKE 98 /* 0x62 Used only for the type
+ field of verbs */
+#define ENDLIKE_tb 196 /* 0x0c4 */
+#define ENDLIKE_t8 197 /* 0x0c5 */
+#define ENDLIKE_tb_pb 392 /* 0x188 */
+#define ENDLIKE_tb_p8 393 /* 0x189 */
+#define ENDLIKE_t8_pb 394 /* 0x18a */
+#define ENDLIKE_t8_p8 395 /* 0x18b */
+
+#define OPFAIL 99 /* 0x63 Same as (?!), but with
+ verb arg */
+#define OPFAIL_tb 198 /* 0x0c6 */
+#define OPFAIL_t8 199 /* 0x0c7 */
+#define OPFAIL_tb_pb 396 /* 0x18c */
+#define OPFAIL_tb_p8 397 /* 0x18d */
+#define OPFAIL_t8_pb 398 /* 0x18e */
+#define OPFAIL_t8_p8 399 /* 0x18f */
+
+#define ACCEPT 100 /* 0x64 Accepts the current
+ matched string, with verbar
+ */
+#define ACCEPT_tb 200 /* 0x0c8 */
+#define ACCEPT_t8 201 /* 0x0c9 */
+#define ACCEPT_tb_pb 400 /* 0x190 */
+#define ACCEPT_tb_p8 401 /* 0x191 */
+#define ACCEPT_t8_pb 402 /* 0x192 */
+#define ACCEPT_t8_p8 403 /* 0x193 */
+
+#define VERB 101 /* 0x65 Used only for the type
+ field of verbs */
+#define VERB_tb 202 /* 0x0ca */
+#define VERB_t8 203 /* 0x0cb */
+#define VERB_tb_pb 404 /* 0x194 */
+#define VERB_tb_p8 405 /* 0x195 */
+#define VERB_t8_pb 406 /* 0x196 */
+#define VERB_t8_p8 407 /* 0x197 */
+
+#define PRUNE 102 /* 0x66 Pattern fails at this
+ startpoint if
+ no-backtracking through this
+ */
+#define PRUNE_tb 204 /* 0x0cc */
+#define PRUNE_t8 205 /* 0x0cd */
+#define PRUNE_tb_pb 408 /* 0x198 */
+#define PRUNE_tb_p8 409 /* 0x199 */
+#define PRUNE_t8_pb 410 /* 0x19a */
+#define PRUNE_t8_p8 411 /* 0x19b */
+
+#define MARKPOINT 103 /* 0x67 Push the current
+ location for rollback by
+ cut. */
+#define MARKPOINT_tb 206 /* 0x0ce */
+#define MARKPOINT_t8 207 /* 0x0cf */
+#define MARKPOINT_tb_pb 412 /* 0x19c */
+#define MARKPOINT_tb_p8 413 /* 0x19d */
+#define MARKPOINT_t8_pb 414 /* 0x19e */
+#define MARKPOINT_t8_p8 415 /* 0x19f */
+
+#define SKIP 104 /* 0x68 On failure skip forward
+ (to the mark) before
+ retrying */
+#define SKIP_tb 208 /* 0x0d0 */
+#define SKIP_t8 209 /* 0x0d1 */
+#define SKIP_tb_pb 416 /* 0x1a0 */
+#define SKIP_tb_p8 417 /* 0x1a1 */
+#define SKIP_t8_pb 418 /* 0x1a2 */
+#define SKIP_t8_p8 419 /* 0x1a3 */
+
+#define COMMIT 105 /* 0x69 Pattern fails outright
+ if backtracking through this
+ */
+#define COMMIT_tb 210 /* 0x0d2 */
+#define COMMIT_t8 211 /* 0x0d3 */
+#define COMMIT_tb_pb 420 /* 0x1a4 */
+#define COMMIT_tb_p8 421 /* 0x1a5 */
+#define COMMIT_t8_pb 422 /* 0x1a6 */
+#define COMMIT_t8_p8 423 /* 0x1a7 */
+
+#define CUTGROUP 106 /* 0x6a On failure go to the
+ next alternation in the
+ group */
+#define CUTGROUP_tb 212 /* 0x0d4 */
+#define CUTGROUP_t8 213 /* 0x0d5 */
+#define CUTGROUP_tb_pb 424 /* 0x1a8 */
+#define CUTGROUP_tb_p8 425 /* 0x1a9 */
+#define CUTGROUP_t8_pb 426 /* 0x1aa */
+#define CUTGROUP_t8_p8 427 /* 0x1ab */
+
+#define KEEPS 107 /* 0x6b $& begins here. */
+#define KEEPS_tb 214 /* 0x0d6 */
+#define KEEPS_t8 215 /* 0x0d7 */
+#define KEEPS_tb_pb 428 /* 0x1ac */
+#define KEEPS_tb_p8 429 /* 0x1ad */
+#define KEEPS_t8_pb 430 /* 0x1ae */
+#define KEEPS_t8_p8 431 /* 0x1af */
+
+#define LOOKBEHIND_END 108 /* 0x6c Return from lookbehind
+ (IFMATCH/UNLESSM) and
+ validate position */
+#define LOOKBEHIND_END_tb 216 /* 0x0d8 */
+#define LOOKBEHIND_END_t8 217 /* 0x0d9 */
+#define LOOKBEHIND_END_tb_pb 432 /* 0x1b0 */
+#define LOOKBEHIND_END_tb_p8 433 /* 0x1b1 */
+#define LOOKBEHIND_END_t8_pb 434 /* 0x1b2 */
+#define LOOKBEHIND_END_t8_p8 435 /* 0x1b3 */
+
+#define OPTIMIZED 109 /* 0x6d Placeholder for dump.
+ */
+#define OPTIMIZED_tb 218 /* 0x0da */
+#define OPTIMIZED_t8 219 /* 0x0db */
+#define OPTIMIZED_tb_pb 436 /* 0x1b4 */
+#define OPTIMIZED_tb_p8 437 /* 0x1b5 */
+#define OPTIMIZED_t8_pb 438 /* 0x1b6 */
+#define OPTIMIZED_t8_p8 439 /* 0x1b7 */
+
+#define PSEUDO 110 /* 0x6e Pseudo opcode for
+ internal use. */
+#define PSEUDO_tb 220 /* 0x0dc */
+#define PSEUDO_t8 221 /* 0x0dd */
+#define PSEUDO_tb_pb 440 /* 0x1b8 */
+#define PSEUDO_tb_p8 441 /* 0x1b9 */
+#define PSEUDO_t8_pb 442 /* 0x1ba */
+#define PSEUDO_t8_p8 443 /* 0x1bb */
+
+#define REGEX_SET 111 /* 0x6f Regex set, temporary
+ node used in
+ pre-optimization compilation
+ */
+#define REGEX_SET_tb 222 /* 0x0de */
+#define REGEX_SET_t8 223 /* 0x0df */
+#define REGEX_SET_tb_pb 444 /* 0x1bc */
+#define REGEX_SET_tb_p8 445 /* 0x1bd */
+#define REGEX_SET_t8_pb 446 /* 0x1be */
+#define REGEX_SET_t8_p8 447 /* 0x1bf */
-#ifndef DOINIT
-EXTCONST U8 PL_regkind[];
-#else
-EXTCONST U8 PL_regkind[] = {
- END, /* END */
- END, /* SUCCEED */
- BOL, /* SBOL */
- BOL, /* MBOL */
- EOL, /* SEOL */
- EOL, /* MEOL */
- EOL, /* EOS */
- GPOS, /* GPOS */
- BOUND, /* BOUND */
- BOUND, /* BOUNDL */
- BOUND, /* BOUNDU */
- BOUND, /* BOUNDA */
- NBOUND, /* NBOUND */
- NBOUND, /* NBOUNDL */
- NBOUND, /* NBOUNDU */
- NBOUND, /* NBOUNDA */
- REG_ANY, /* REG_ANY */
- REG_ANY, /* SANY */
- ANYOF, /* ANYOF */
- ANYOF, /* ANYOFD */
- ANYOF, /* ANYOFL */
- ANYOF, /* ANYOFPOSIXL */
- ANYOF, /* ANYOFH */
- ANYOF, /* ANYOFHb */
- ANYOF, /* ANYOFHr */
- ANYOF, /* ANYOFHs */
- ANYOFR, /* ANYOFR */
- ANYOFR, /* ANYOFRb */
- ANYOFM, /* ANYOFM */
- ANYOFM, /* NANYOFM */
- POSIXD, /* POSIXD */
- POSIXD, /* POSIXL */
- POSIXD, /* POSIXU */
- POSIXD, /* POSIXA */
- NPOSIXD, /* NPOSIXD */
- NPOSIXD, /* NPOSIXL */
- NPOSIXD, /* NPOSIXU */
- NPOSIXD, /* NPOSIXA */
- CLUMP, /* CLUMP */
- BRANCH, /* BRANCH */
- EXACT, /* EXACT */
- EXACT, /* LEXACT */
- EXACT, /* EXACTL */
- EXACT, /* EXACTF */
- EXACT, /* EXACTFL */
- EXACT, /* EXACTFU */
- EXACT, /* EXACTFAA */
- EXACT, /* EXACTFAA_NO_TRIE */
- EXACT, /* EXACTFUP */
- EXACT, /* EXACTFLU8 */
- EXACT, /* EXACT_REQ8 */
- EXACT, /* LEXACT_REQ8 */
- EXACT, /* EXACTFU_REQ8 */
- EXACT, /* EXACTFU_S_EDGE */
- LNBREAK, /* LNBREAK */
- TRIE, /* TRIE */
- TRIE, /* TRIEC */
- TRIE, /* AHOCORASICK */
- TRIE, /* AHOCORASICKC */
- NOTHING, /* NOTHING */
- NOTHING, /* TAIL */
- STAR, /* STAR */
- PLUS, /* PLUS */
- CURLY, /* CURLY */
- CURLY, /* CURLYN */
- CURLY, /* CURLYM */
- CURLY, /* CURLYX */
- WHILEM, /* WHILEM */
- OPEN, /* OPEN */
- CLOSE, /* CLOSE */
- SROPEN, /* SROPEN */
- SRCLOSE, /* SRCLOSE */
- REF, /* REF */
- REF, /* REFF */
- REF, /* REFFL */
- REF, /* REFFU */
- REF, /* REFFA */
- REF, /* REFN */
- REF, /* REFFN */
- REF, /* REFFLN */
- REF, /* REFFUN */
- REF, /* REFFAN */
- LONGJMP, /* LONGJMP */
- BRANCHJ, /* BRANCHJ */
- BRANCHJ, /* IFMATCH */
- BRANCHJ, /* UNLESSM */
- BRANCHJ, /* SUSPEND */
- BRANCHJ, /* IFTHEN */
- GROUPP, /* GROUPP */
- EVAL, /* EVAL */
- MINMOD, /* MINMOD */
- LOGICAL, /* LOGICAL */
- BRANCHJ, /* RENUM */
- GOSUB, /* GOSUB */
- GROUPPN, /* GROUPPN */
- INSUBP, /* INSUBP */
- DEFINEP, /* DEFINEP */
- ENDLIKE, /* ENDLIKE */
- ENDLIKE, /* OPFAIL */
- ENDLIKE, /* ACCEPT */
- VERB, /* VERB */
- VERB, /* PRUNE */
- VERB, /* MARKPOINT */
- VERB, /* SKIP */
- VERB, /* COMMIT */
- VERB, /* CUTGROUP */
- KEEPS, /* KEEPS */
- NOTHING, /* OPTIMIZED */
- PSEUDO, /* PSEUDO */
- REGEX_SET, /* REGEX_SET */
/* ------------ States ------------- */
- TRIE, /* TRIE_next */
- TRIE, /* TRIE_next_fail */
- EVAL, /* EVAL_B */
- EVAL, /* EVAL_B_fail */
- EVAL, /* EVAL_postponed_AB */
- EVAL, /* EVAL_postponed_AB_fail */
- CURLYX, /* CURLYX_end */
- CURLYX, /* CURLYX_end_fail */
- WHILEM, /* WHILEM_A_pre */
- WHILEM, /* WHILEM_A_pre_fail */
- WHILEM, /* WHILEM_A_min */
- WHILEM, /* WHILEM_A_min_fail */
- WHILEM, /* WHILEM_A_max */
- WHILEM, /* WHILEM_A_max_fail */
- WHILEM, /* WHILEM_B_min */
- WHILEM, /* WHILEM_B_min_fail */
- WHILEM, /* WHILEM_B_max */
- WHILEM, /* WHILEM_B_max_fail */
- BRANCH, /* BRANCH_next */
- BRANCH, /* BRANCH_next_fail */
- CURLYM, /* CURLYM_A */
- CURLYM, /* CURLYM_A_fail */
- CURLYM, /* CURLYM_B */
- CURLYM, /* CURLYM_B_fail */
- IFMATCH, /* IFMATCH_A */
- IFMATCH, /* IFMATCH_A_fail */
- CURLY, /* CURLY_B_min */
- CURLY, /* CURLY_B_min_fail */
- CURLY, /* CURLY_B_max */
- CURLY, /* CURLY_B_max_fail */
- COMMIT, /* COMMIT_next */
- COMMIT, /* COMMIT_next_fail */
- MARKPOINT, /* MARKPOINT_next */
- MARKPOINT, /* MARKPOINT_next_fail */
- SKIP, /* SKIP_next */
- SKIP, /* SKIP_next_fail */
- CUTGROUP, /* CUTGROUP_next */
- CUTGROUP, /* CUTGROUP_next_fail */
- KEEPS, /* KEEPS_next */
- KEEPS, /* KEEPS_next_fail */
-};
-#endif
-
-#ifdef REG_COMP_C
-
-/* regarglen[] - How large is the argument part of the node (in regnodes) */
-
-static const U8 regarglen[] = {
- 0, /* END */
- 0, /* SUCCEED */
- 0, /* SBOL */
- 0, /* MBOL */
- 0, /* SEOL */
- 0, /* MEOL */
- 0, /* EOS */
- 0, /* GPOS */
- 0, /* BOUND */
- 0, /* BOUNDL */
- 0, /* BOUNDU */
- 0, /* BOUNDA */
- 0, /* NBOUND */
- 0, /* NBOUNDL */
- 0, /* NBOUNDU */
- 0, /* NBOUNDA */
- 0, /* REG_ANY */
- 0, /* SANY */
- EXTRA_SIZE(struct regnode_charclass), /* ANYOF */
- EXTRA_SIZE(struct regnode_charclass), /* ANYOFD */
- EXTRA_SIZE(struct regnode_charclass), /* ANYOFL */
- EXTRA_SIZE(struct regnode_charclass_posixl), /* ANYOFPOSIXL */
- EXTRA_SIZE(struct regnode_1), /* ANYOFH */
- EXTRA_SIZE(struct regnode_1), /* ANYOFHb */
- EXTRA_SIZE(struct regnode_1), /* ANYOFHr */
- EXTRA_SIZE(struct regnode_1), /* ANYOFHs */
- EXTRA_SIZE(struct regnode_1), /* ANYOFR */
- EXTRA_SIZE(struct regnode_1), /* ANYOFRb */
- EXTRA_SIZE(struct regnode_1), /* ANYOFM */
- EXTRA_SIZE(struct regnode_1), /* NANYOFM */
- 0, /* POSIXD */
- 0, /* POSIXL */
- 0, /* POSIXU */
- 0, /* POSIXA */
- 0, /* NPOSIXD */
- 0, /* NPOSIXL */
- 0, /* NPOSIXU */
- 0, /* NPOSIXA */
- 0, /* CLUMP */
- 0, /* BRANCH */
- 0, /* EXACT */
- EXTRA_SIZE(struct regnode_1), /* LEXACT */
- 0, /* EXACTL */
- 0, /* EXACTF */
- 0, /* EXACTFL */
- 0, /* EXACTFU */
- 0, /* EXACTFAA */
- 0, /* EXACTFAA_NO_TRIE */
- 0, /* EXACTFUP */
- 0, /* EXACTFLU8 */
- 0, /* EXACT_REQ8 */
- EXTRA_SIZE(struct regnode_1), /* LEXACT_REQ8 */
- 0, /* EXACTFU_REQ8 */
- 0, /* EXACTFU_S_EDGE */
- 0, /* LNBREAK */
- EXTRA_SIZE(struct regnode_1), /* TRIE */
- EXTRA_SIZE(struct regnode_charclass), /* TRIEC */
- EXTRA_SIZE(struct regnode_1), /* AHOCORASICK */
- EXTRA_SIZE(struct regnode_charclass), /* AHOCORASICKC */
- 0, /* NOTHING */
- 0, /* TAIL */
- 0, /* STAR */
- 0, /* PLUS */
- EXTRA_SIZE(struct regnode_2), /* CURLY */
- EXTRA_SIZE(struct regnode_2), /* CURLYN */
- EXTRA_SIZE(struct regnode_2), /* CURLYM */
- EXTRA_SIZE(struct regnode_2), /* CURLYX */
- 0, /* WHILEM */
- EXTRA_SIZE(struct regnode_1), /* OPEN */
- EXTRA_SIZE(struct regnode_1), /* CLOSE */
- 0, /* SROPEN */
- 0, /* SRCLOSE */
- EXTRA_SIZE(struct regnode_1), /* REF */
- EXTRA_SIZE(struct regnode_1), /* REFF */
- EXTRA_SIZE(struct regnode_1), /* REFFL */
- EXTRA_SIZE(struct regnode_1), /* REFFU */
- EXTRA_SIZE(struct regnode_1), /* REFFA */
- EXTRA_SIZE(struct regnode_1), /* REFN */
- EXTRA_SIZE(struct regnode_1), /* REFFN */
- EXTRA_SIZE(struct regnode_1), /* REFFLN */
- EXTRA_SIZE(struct regnode_1), /* REFFUN */
- EXTRA_SIZE(struct regnode_1), /* REFFAN */
- EXTRA_SIZE(struct regnode_1), /* LONGJMP */
- EXTRA_SIZE(struct regnode_1), /* BRANCHJ */
- EXTRA_SIZE(struct regnode_1), /* IFMATCH */
- EXTRA_SIZE(struct regnode_1), /* UNLESSM */
- EXTRA_SIZE(struct regnode_1), /* SUSPEND */
- EXTRA_SIZE(struct regnode_1), /* IFTHEN */
- EXTRA_SIZE(struct regnode_1), /* GROUPP */
- EXTRA_SIZE(struct regnode_2L), /* EVAL */
- 0, /* MINMOD */
- 0, /* LOGICAL */
- EXTRA_SIZE(struct regnode_1), /* RENUM */
- EXTRA_SIZE(struct regnode_2L), /* GOSUB */
- EXTRA_SIZE(struct regnode_1), /* GROUPPN */
- EXTRA_SIZE(struct regnode_1), /* INSUBP */
- EXTRA_SIZE(struct regnode_1), /* DEFINEP */
- 0, /* ENDLIKE */
- EXTRA_SIZE(struct regnode_1), /* OPFAIL */
- EXTRA_SIZE(struct regnode_2L), /* ACCEPT */
- EXTRA_SIZE(struct regnode_1), /* VERB */
- EXTRA_SIZE(struct regnode_1), /* PRUNE */
- EXTRA_SIZE(struct regnode_1), /* MARKPOINT */
- EXTRA_SIZE(struct regnode_1), /* SKIP */
- EXTRA_SIZE(struct regnode_1), /* COMMIT */
- EXTRA_SIZE(struct regnode_1), /* CUTGROUP */
- 0, /* KEEPS */
- 0, /* OPTIMIZED */
- 0, /* PSEUDO */
- EXTRA_SIZE(struct regnode_p), /* REGEX_SET */
-};
-
-/* reg_off_by_arg[] - Which argument holds the offset to the next node */
-
-static const char reg_off_by_arg[] = {
- 0, /* END */
- 0, /* SUCCEED */
- 0, /* SBOL */
- 0, /* MBOL */
- 0, /* SEOL */
- 0, /* MEOL */
- 0, /* EOS */
- 0, /* GPOS */
- 0, /* BOUND */
- 0, /* BOUNDL */
- 0, /* BOUNDU */
- 0, /* BOUNDA */
- 0, /* NBOUND */
- 0, /* NBOUNDL */
- 0, /* NBOUNDU */
- 0, /* NBOUNDA */
- 0, /* REG_ANY */
- 0, /* SANY */
- 0, /* ANYOF */
- 0, /* ANYOFD */
- 0, /* ANYOFL */
- 0, /* ANYOFPOSIXL */
- 0, /* ANYOFH */
- 0, /* ANYOFHb */
- 0, /* ANYOFHr */
- 0, /* ANYOFHs */
- 0, /* ANYOFR */
- 0, /* ANYOFRb */
- 0, /* ANYOFM */
- 0, /* NANYOFM */
- 0, /* POSIXD */
- 0, /* POSIXL */
- 0, /* POSIXU */
- 0, /* POSIXA */
- 0, /* NPOSIXD */
- 0, /* NPOSIXL */
- 0, /* NPOSIXU */
- 0, /* NPOSIXA */
- 0, /* CLUMP */
- 0, /* BRANCH */
- 0, /* EXACT */
- 0, /* LEXACT */
- 0, /* EXACTL */
- 0, /* EXACTF */
- 0, /* EXACTFL */
- 0, /* EXACTFU */
- 0, /* EXACTFAA */
- 0, /* EXACTFAA_NO_TRIE */
- 0, /* EXACTFUP */
- 0, /* EXACTFLU8 */
- 0, /* EXACT_REQ8 */
- 0, /* LEXACT_REQ8 */
- 0, /* EXACTFU_REQ8 */
- 0, /* EXACTFU_S_EDGE */
- 0, /* LNBREAK */
- 0, /* TRIE */
- 0, /* TRIEC */
- 0, /* AHOCORASICK */
- 0, /* AHOCORASICKC */
- 0, /* NOTHING */
- 0, /* TAIL */
- 0, /* STAR */
- 0, /* PLUS */
- 0, /* CURLY */
- 0, /* CURLYN */
- 0, /* CURLYM */
- 0, /* CURLYX */
- 0, /* WHILEM */
- 0, /* OPEN */
- 0, /* CLOSE */
- 0, /* SROPEN */
- 0, /* SRCLOSE */
- 0, /* REF */
- 0, /* REFF */
- 0, /* REFFL */
- 0, /* REFFU */
- 0, /* REFFA */
- 0, /* REFN */
- 0, /* REFFN */
- 0, /* REFFLN */
- 0, /* REFFUN */
- 0, /* REFFAN */
- 1, /* LONGJMP */
- 1, /* BRANCHJ */
- 1, /* IFMATCH */
- 1, /* UNLESSM */
- 1, /* SUSPEND */
- 1, /* IFTHEN */
- 0, /* GROUPP */
- 0, /* EVAL */
- 0, /* MINMOD */
- 0, /* LOGICAL */
- 1, /* RENUM */
- 0, /* GOSUB */
- 0, /* GROUPPN */
- 0, /* INSUBP */
- 0, /* DEFINEP */
- 0, /* ENDLIKE */
- 0, /* OPFAIL */
- 0, /* ACCEPT */
- 0, /* VERB */
- 0, /* PRUNE */
- 0, /* MARKPOINT */
- 0, /* SKIP */
- 0, /* COMMIT */
- 0, /* CUTGROUP */
- 0, /* KEEPS */
- 0, /* OPTIMIZED */
- 0, /* PSEUDO */
- 0, /* REGEX_SET */
-};
-
-#endif /* REG_COMP_C */
-
-
-/* reg_name[] - Opcode/state names in string form, for debugging */
+#define TRIE_next 112 /* 0x70 state for TRIE */
+#define TRIE_next_tb 224 /* 0x0e0 */
+#define TRIE_next_t8 225 /* 0x0e1 */
+#define TRIE_next_tb_pb 448 /* 0x1c0 */
+#define TRIE_next_tb_p8 449 /* 0x1c1 */
+#define TRIE_next_t8_pb 450 /* 0x1c2 */
+#define TRIE_next_t8_p8 451 /* 0x1c3 */
+
+#define TRIE_next_fail 113 /* 0x71 state for TRIE */
+#define TRIE_next_fail_tb 226 /* 0x0e2 */
+#define TRIE_next_fail_t8 227 /* 0x0e3 */
+#define TRIE_next_fail_tb_pb 452 /* 0x1c4 */
+#define TRIE_next_fail_tb_p8 453 /* 0x1c5 */
+#define TRIE_next_fail_t8_pb 454 /* 0x1c6 */
+#define TRIE_next_fail_t8_p8 455 /* 0x1c7 */
+
+#define EVAL_B 114 /* 0x72 state for EVAL */
+#define EVAL_B_tb 228 /* 0x0e4 */
+#define EVAL_B_t8 229 /* 0x0e5 */
+#define EVAL_B_tb_pb 456 /* 0x1c8 */
+#define EVAL_B_tb_p8 457 /* 0x1c9 */
+#define EVAL_B_t8_pb 458 /* 0x1ca */
+#define EVAL_B_t8_p8 459 /* 0x1cb */
+
+#define EVAL_B_fail 115 /* 0x73 state for EVAL */
+#define EVAL_B_fail_tb 230 /* 0x0e6 */
+#define EVAL_B_fail_t8 231 /* 0x0e7 */
+#define EVAL_B_fail_tb_pb 460 /* 0x1cc */
+#define EVAL_B_fail_tb_p8 461 /* 0x1cd */
+#define EVAL_B_fail_t8_pb 462 /* 0x1ce */
+#define EVAL_B_fail_t8_p8 463 /* 0x1cf */
+
+#define EVAL_postponed_AB 116 /* 0x74 state for EVAL */
+#define EVAL_postponed_AB_tb 232 /* 0x0e8 */
+#define EVAL_postponed_AB_t8 233 /* 0x0e9 */
+#define EVAL_postponed_AB_tb_pb 464 /* 0x1d0 */
+#define EVAL_postponed_AB_tb_p8 465 /* 0x1d1 */
+#define EVAL_postponed_AB_t8_pb 466 /* 0x1d2 */
+#define EVAL_postponed_AB_t8_p8 467 /* 0x1d3 */
+
+#define EVAL_postponed_AB_fail 117 /* 0x75 state for EVAL */
+#define EVAL_postponed_AB_fail_tb 234 /* 0x0ea */
+#define EVAL_postponed_AB_fail_t8 235 /* 0x0eb */
+#define EVAL_postponed_AB_fail_tb_pb 468 /* 0x1d4 */
+#define EVAL_postponed_AB_fail_tb_p8 469 /* 0x1d5 */
+#define EVAL_postponed_AB_fail_t8_pb 470 /* 0x1d6 */
+#define EVAL_postponed_AB_fail_t8_p8 471 /* 0x1d7 */
+
+#define CURLYX_end 118 /* 0x76 state for CURLYX */
+#define CURLYX_end_tb 236 /* 0x0ec */
+#define CURLYX_end_t8 237 /* 0x0ed */
+#define CURLYX_end_tb_pb 472 /* 0x1d8 */
+#define CURLYX_end_tb_p8 473 /* 0x1d9 */
+#define CURLYX_end_t8_pb 474 /* 0x1da */
+#define CURLYX_end_t8_p8 475 /* 0x1db */
+
+#define CURLYX_end_fail 119 /* 0x77 state for CURLYX */
+#define CURLYX_end_fail_tb 238 /* 0x0ee */
+#define CURLYX_end_fail_t8 239 /* 0x0ef */
+#define CURLYX_end_fail_tb_pb 476 /* 0x1dc */
+#define CURLYX_end_fail_tb_p8 477 /* 0x1dd */
+#define CURLYX_end_fail_t8_pb 478 /* 0x1de */
+#define CURLYX_end_fail_t8_p8 479 /* 0x1df */
+
+#define WHILEM_A_pre 120 /* 0x78 state for WHILEM */
+#define WHILEM_A_pre_tb 240 /* 0x0f0 */
+#define WHILEM_A_pre_t8 241 /* 0x0f1 */
+#define WHILEM_A_pre_tb_pb 480 /* 0x1e0 */
+#define WHILEM_A_pre_tb_p8 481 /* 0x1e1 */
+#define WHILEM_A_pre_t8_pb 482 /* 0x1e2 */
+#define WHILEM_A_pre_t8_p8 483 /* 0x1e3 */
+
+#define WHILEM_A_pre_fail 121 /* 0x79 state for WHILEM */
+#define WHILEM_A_pre_fail_tb 242 /* 0x0f2 */
+#define WHILEM_A_pre_fail_t8 243 /* 0x0f3 */
+#define WHILEM_A_pre_fail_tb_pb 484 /* 0x1e4 */
+#define WHILEM_A_pre_fail_tb_p8 485 /* 0x1e5 */
+#define WHILEM_A_pre_fail_t8_pb 486 /* 0x1e6 */
+#define WHILEM_A_pre_fail_t8_p8 487 /* 0x1e7 */
+
+#define WHILEM_A_min 122 /* 0x7a state for WHILEM */
+#define WHILEM_A_min_tb 244 /* 0x0f4 */
+#define WHILEM_A_min_t8 245 /* 0x0f5 */
+#define WHILEM_A_min_tb_pb 488 /* 0x1e8 */
+#define WHILEM_A_min_tb_p8 489 /* 0x1e9 */
+#define WHILEM_A_min_t8_pb 490 /* 0x1ea */
+#define WHILEM_A_min_t8_p8 491 /* 0x1eb */
+
+#define WHILEM_A_min_fail 123 /* 0x7b state for WHILEM */
+#define WHILEM_A_min_fail_tb 246 /* 0x0f6 */
+#define WHILEM_A_min_fail_t8 247 /* 0x0f7 */
+#define WHILEM_A_min_fail_tb_pb 492 /* 0x1ec */
+#define WHILEM_A_min_fail_tb_p8 493 /* 0x1ed */
+#define WHILEM_A_min_fail_t8_pb 494 /* 0x1ee */
+#define WHILEM_A_min_fail_t8_p8 495 /* 0x1ef */
+
+#define WHILEM_A_max 124 /* 0x7c state for WHILEM */
+#define WHILEM_A_max_tb 248 /* 0x0f8 */
+#define WHILEM_A_max_t8 249 /* 0x0f9 */
+#define WHILEM_A_max_tb_pb 496 /* 0x1f0 */
+#define WHILEM_A_max_tb_p8 497 /* 0x1f1 */
+#define WHILEM_A_max_t8_pb 498 /* 0x1f2 */
+#define WHILEM_A_max_t8_p8 499 /* 0x1f3 */
+
+#define WHILEM_A_max_fail 125 /* 0x7d state for WHILEM */
+#define WHILEM_A_max_fail_tb 250 /* 0x0fa */
+#define WHILEM_A_max_fail_t8 251 /* 0x0fb */
+#define WHILEM_A_max_fail_tb_pb 500 /* 0x1f4 */
+#define WHILEM_A_max_fail_tb_p8 501 /* 0x1f5 */
+#define WHILEM_A_max_fail_t8_pb 502 /* 0x1f6 */
+#define WHILEM_A_max_fail_t8_p8 503 /* 0x1f7 */
+
+#define WHILEM_B_min 126 /* 0x7e state for WHILEM */
+#define WHILEM_B_min_tb 252 /* 0x0fc */
+#define WHILEM_B_min_t8 253 /* 0x0fd */
+#define WHILEM_B_min_tb_pb 504 /* 0x1f8 */
+#define WHILEM_B_min_tb_p8 505 /* 0x1f9 */
+#define WHILEM_B_min_t8_pb 506 /* 0x1fa */
+#define WHILEM_B_min_t8_p8 507 /* 0x1fb */
+
+#define WHILEM_B_min_fail 127 /* 0x7f state for WHILEM */
+#define WHILEM_B_min_fail_tb 254 /* 0x0fe */
+#define WHILEM_B_min_fail_t8 255 /* 0x0ff */
+#define WHILEM_B_min_fail_tb_pb 508 /* 0x1fc */
+#define WHILEM_B_min_fail_tb_p8 509 /* 0x1fd */
+#define WHILEM_B_min_fail_t8_pb 510 /* 0x1fe */
+#define WHILEM_B_min_fail_t8_p8 511 /* 0x1ff */
+
+#define WHILEM_B_max 128 /* 0x80 state for WHILEM */
+#define WHILEM_B_max_tb 256 /* 0x100 */
+#define WHILEM_B_max_t8 257 /* 0x101 */
+#define WHILEM_B_max_tb_pb 512 /* 0x200 */
+#define WHILEM_B_max_tb_p8 513 /* 0x201 */
+#define WHILEM_B_max_t8_pb 514 /* 0x202 */
+#define WHILEM_B_max_t8_p8 515 /* 0x203 */
+
+#define WHILEM_B_max_fail 129 /* 0x81 state for WHILEM */
+#define WHILEM_B_max_fail_tb 258 /* 0x102 */
+#define WHILEM_B_max_fail_t8 259 /* 0x103 */
+#define WHILEM_B_max_fail_tb_pb 516 /* 0x204 */
+#define WHILEM_B_max_fail_tb_p8 517 /* 0x205 */
+#define WHILEM_B_max_fail_t8_pb 518 /* 0x206 */
+#define WHILEM_B_max_fail_t8_p8 519 /* 0x207 */
+
+#define BRANCH_next 130 /* 0x82 state for BRANCH */
+#define BRANCH_next_tb 260 /* 0x104 */
+#define BRANCH_next_t8 261 /* 0x105 */
+#define BRANCH_next_tb_pb 520 /* 0x208 */
+#define BRANCH_next_tb_p8 521 /* 0x209 */
+#define BRANCH_next_t8_pb 522 /* 0x20a */
+#define BRANCH_next_t8_p8 523 /* 0x20b */
+
+#define BRANCH_next_fail 131 /* 0x83 state for BRANCH */
+#define BRANCH_next_fail_tb 262 /* 0x106 */
+#define BRANCH_next_fail_t8 263 /* 0x107 */
+#define BRANCH_next_fail_tb_pb 524 /* 0x20c */
+#define BRANCH_next_fail_tb_p8 525 /* 0x20d */
+#define BRANCH_next_fail_t8_pb 526 /* 0x20e */
+#define BRANCH_next_fail_t8_p8 527 /* 0x20f */
+
+#define CURLYM_A 132 /* 0x84 state for CURLYM */
+#define CURLYM_A_tb 264 /* 0x108 */
+#define CURLYM_A_t8 265 /* 0x109 */
+#define CURLYM_A_tb_pb 528 /* 0x210 */
+#define CURLYM_A_tb_p8 529 /* 0x211 */
+#define CURLYM_A_t8_pb 530 /* 0x212 */
+#define CURLYM_A_t8_p8 531 /* 0x213 */
+
+#define CURLYM_A_fail 133 /* 0x85 state for CURLYM */
+#define CURLYM_A_fail_tb 266 /* 0x10a */
+#define CURLYM_A_fail_t8 267 /* 0x10b */
+#define CURLYM_A_fail_tb_pb 532 /* 0x214 */
+#define CURLYM_A_fail_tb_p8 533 /* 0x215 */
+#define CURLYM_A_fail_t8_pb 534 /* 0x216 */
+#define CURLYM_A_fail_t8_p8 535 /* 0x217 */
+
+#define CURLYM_B 134 /* 0x86 state for CURLYM */
+#define CURLYM_B_tb 268 /* 0x10c */
+#define CURLYM_B_t8 269 /* 0x10d */
+#define CURLYM_B_tb_pb 536 /* 0x218 */
+#define CURLYM_B_tb_p8 537 /* 0x219 */
+#define CURLYM_B_t8_pb 538 /* 0x21a */
+#define CURLYM_B_t8_p8 539 /* 0x21b */
+
+#define CURLYM_B_fail 135 /* 0x87 state for CURLYM */
+#define CURLYM_B_fail_tb 270 /* 0x10e */
+#define CURLYM_B_fail_t8 271 /* 0x10f */
+#define CURLYM_B_fail_tb_pb 540 /* 0x21c */
+#define CURLYM_B_fail_tb_p8 541 /* 0x21d */
+#define CURLYM_B_fail_t8_pb 542 /* 0x21e */
+#define CURLYM_B_fail_t8_p8 543 /* 0x21f */
+
+#define IFMATCH_A 136 /* 0x88 state for IFMATCH */
+#define IFMATCH_A_tb 272 /* 0x110 */
+#define IFMATCH_A_t8 273 /* 0x111 */
+#define IFMATCH_A_tb_pb 544 /* 0x220 */
+#define IFMATCH_A_tb_p8 545 /* 0x221 */
+#define IFMATCH_A_t8_pb 546 /* 0x222 */
+#define IFMATCH_A_t8_p8 547 /* 0x223 */
+
+#define IFMATCH_A_fail 137 /* 0x89 state for IFMATCH */
+#define IFMATCH_A_fail_tb 274 /* 0x112 */
+#define IFMATCH_A_fail_t8 275 /* 0x113 */
+#define IFMATCH_A_fail_tb_pb 548 /* 0x224 */
+#define IFMATCH_A_fail_tb_p8 549 /* 0x225 */
+#define IFMATCH_A_fail_t8_pb 550 /* 0x226 */
+#define IFMATCH_A_fail_t8_p8 551 /* 0x227 */
+
+#define CURLY_B_min 138 /* 0x8a state for CURLY */
+#define CURLY_B_min_tb 276 /* 0x114 */
+#define CURLY_B_min_t8 277 /* 0x115 */
+#define CURLY_B_min_tb_pb 552 /* 0x228 */
+#define CURLY_B_min_tb_p8 553 /* 0x229 */
+#define CURLY_B_min_t8_pb 554 /* 0x22a */
+#define CURLY_B_min_t8_p8 555 /* 0x22b */
+
+#define CURLY_B_min_fail 139 /* 0x8b state for CURLY */
+#define CURLY_B_min_fail_tb 278 /* 0x116 */
+#define CURLY_B_min_fail_t8 279 /* 0x117 */
+#define CURLY_B_min_fail_tb_pb 556 /* 0x22c */
+#define CURLY_B_min_fail_tb_p8 557 /* 0x22d */
+#define CURLY_B_min_fail_t8_pb 558 /* 0x22e */
+#define CURLY_B_min_fail_t8_p8 559 /* 0x22f */
+
+#define CURLY_B_max 140 /* 0x8c state for CURLY */
+#define CURLY_B_max_tb 280 /* 0x118 */
+#define CURLY_B_max_t8 281 /* 0x119 */
+#define CURLY_B_max_tb_pb 560 /* 0x230 */
+#define CURLY_B_max_tb_p8 561 /* 0x231 */
+#define CURLY_B_max_t8_pb 562 /* 0x232 */
+#define CURLY_B_max_t8_p8 563 /* 0x233 */
+
+#define CURLY_B_max_fail 141 /* 0x8d state for CURLY */
+#define CURLY_B_max_fail_tb 282 /* 0x11a */
+#define CURLY_B_max_fail_t8 283 /* 0x11b */
+#define CURLY_B_max_fail_tb_pb 564 /* 0x234 */
+#define CURLY_B_max_fail_tb_p8 565 /* 0x235 */
+#define CURLY_B_max_fail_t8_pb 566 /* 0x236 */
+#define CURLY_B_max_fail_t8_p8 567 /* 0x237 */
+
+#define COMMIT_next 142 /* 0x8e state for COMMIT */
+#define COMMIT_next_tb 284 /* 0x11c */
+#define COMMIT_next_t8 285 /* 0x11d */
+#define COMMIT_next_tb_pb 568 /* 0x238 */
+#define COMMIT_next_tb_p8 569 /* 0x239 */
+#define COMMIT_next_t8_pb 570 /* 0x23a */
+#define COMMIT_next_t8_p8 571 /* 0x23b */
+
+#define COMMIT_next_fail 143 /* 0x8f state for COMMIT */
+#define COMMIT_next_fail_tb 286 /* 0x11e */
+#define COMMIT_next_fail_t8 287 /* 0x11f */
+#define COMMIT_next_fail_tb_pb 572 /* 0x23c */
+#define COMMIT_next_fail_tb_p8 573 /* 0x23d */
+#define COMMIT_next_fail_t8_pb 574 /* 0x23e */
+#define COMMIT_next_fail_t8_p8 575 /* 0x23f */
+
+#define MARKPOINT_next 144 /* 0x90 state for MARKPOINT */
+#define MARKPOINT_next_tb 288 /* 0x120 */
+#define MARKPOINT_next_t8 289 /* 0x121 */
+#define MARKPOINT_next_tb_pb 576 /* 0x240 */
+#define MARKPOINT_next_tb_p8 577 /* 0x241 */
+#define MARKPOINT_next_t8_pb 578 /* 0x242 */
+#define MARKPOINT_next_t8_p8 579 /* 0x243 */
+
+#define MARKPOINT_next_fail 145 /* 0x91 state for MARKPOINT */
+#define MARKPOINT_next_fail_tb 290 /* 0x122 */
+#define MARKPOINT_next_fail_t8 291 /* 0x123 */
+#define MARKPOINT_next_fail_tb_pb 580 /* 0x244 */
+#define MARKPOINT_next_fail_tb_p8 581 /* 0x245 */
+#define MARKPOINT_next_fail_t8_pb 582 /* 0x246 */
+#define MARKPOINT_next_fail_t8_p8 583 /* 0x247 */
+
+#define SKIP_next 146 /* 0x92 state for SKIP */
+#define SKIP_next_tb 292 /* 0x124 */
+#define SKIP_next_t8 293 /* 0x125 */
+#define SKIP_next_tb_pb 584 /* 0x248 */
+#define SKIP_next_tb_p8 585 /* 0x249 */
+#define SKIP_next_t8_pb 586 /* 0x24a */
+#define SKIP_next_t8_p8 587 /* 0x24b */
+
+#define SKIP_next_fail 147 /* 0x93 state for SKIP */
+#define SKIP_next_fail_tb 294 /* 0x126 */
+#define SKIP_next_fail_t8 295 /* 0x127 */
+#define SKIP_next_fail_tb_pb 588 /* 0x24c */
+#define SKIP_next_fail_tb_p8 589 /* 0x24d */
+#define SKIP_next_fail_t8_pb 590 /* 0x24e */
+#define SKIP_next_fail_t8_p8 591 /* 0x24f */
+
+#define CUTGROUP_next 148 /* 0x94 state for CUTGROUP */
+#define CUTGROUP_next_tb 296 /* 0x128 */
+#define CUTGROUP_next_t8 297 /* 0x129 */
+#define CUTGROUP_next_tb_pb 592 /* 0x250 */
+#define CUTGROUP_next_tb_p8 593 /* 0x251 */
+#define CUTGROUP_next_t8_pb 594 /* 0x252 */
+#define CUTGROUP_next_t8_p8 595 /* 0x253 */
+
+#define CUTGROUP_next_fail 149 /* 0x95 state for CUTGROUP */
+#define CUTGROUP_next_fail_tb 298 /* 0x12a */
+#define CUTGROUP_next_fail_t8 299 /* 0x12b */
+#define CUTGROUP_next_fail_tb_pb 596 /* 0x254 */
+#define CUTGROUP_next_fail_tb_p8 597 /* 0x255 */
+#define CUTGROUP_next_fail_t8_pb 598 /* 0x256 */
+#define CUTGROUP_next_fail_t8_p8 599 /* 0x257 */
+
+#define KEEPS_next 150 /* 0x96 state for KEEPS */
+#define KEEPS_next_tb 300 /* 0x12c */
+#define KEEPS_next_t8 301 /* 0x12d */
+#define KEEPS_next_tb_pb 600 /* 0x258 */
+#define KEEPS_next_tb_p8 601 /* 0x259 */
+#define KEEPS_next_t8_pb 602 /* 0x25a */
+#define KEEPS_next_t8_p8 603 /* 0x25b */
+
+#define KEEPS_next_fail 151 /* 0x97 state for KEEPS */
+#define KEEPS_next_fail_tb 302 /* 0x12e */
+#define KEEPS_next_fail_t8 303 /* 0x12f */
+#define KEEPS_next_fail_tb_pb 604 /* 0x25c */
+#define KEEPS_next_fail_tb_p8 605 /* 0x25d */
+#define KEEPS_next_fail_t8_pb 606 /* 0x25e */
+#define KEEPS_next_fail_t8_p8 607 /* 0x25f */
+
+#define REF_next 152 /* 0x98 state for REF */
+#define REF_next_tb 304 /* 0x130 */
+#define REF_next_t8 305 /* 0x131 */
+#define REF_next_tb_pb 608 /* 0x260 */
+#define REF_next_tb_p8 609 /* 0x261 */
+#define REF_next_t8_pb 610 /* 0x262 */
+#define REF_next_t8_p8 611 /* 0x263 */
+
+#define REF_next_fail 153 /* 0x99 state for REF */
+#define REF_next_fail_tb 306 /* 0x132 */
+#define REF_next_fail_t8 307 /* 0x133 */
+#define REF_next_fail_tb_pb 612 /* 0x264 */
+#define REF_next_fail_tb_p8 613 /* 0x265 */
+#define REF_next_fail_t8_pb 614 /* 0x266 */
+#define REF_next_fail_t8_p8 615 /* 0x267 */
+
+
+/* PL_regnode_name[] - Opcode/state names in string form, for debugging */
#ifndef DOINIT
-EXTCONST char * PL_reg_name[];
+EXTCONST char * PL_regnode_name[];
#else
-EXTCONST char * const PL_reg_name[] = {
+EXTCONST char * const PL_regnode_name[] = {
"END", /* 0000 */
"SUCCEED", /* 0x01 */
"SBOL", /* 0x02 */
@@ -1522,88 +1624,90 @@ EXTCONST char * const PL_reg_name[] = {
"ANYOFHs", /* 0x19 */
"ANYOFR", /* 0x1a */
"ANYOFRb", /* 0x1b */
- "ANYOFM", /* 0x1c */
- "NANYOFM", /* 0x1d */
- "POSIXD", /* 0x1e */
- "POSIXL", /* 0x1f */
- "POSIXU", /* 0x20 */
- "POSIXA", /* 0x21 */
- "NPOSIXD", /* 0x22 */
- "NPOSIXL", /* 0x23 */
- "NPOSIXU", /* 0x24 */
- "NPOSIXA", /* 0x25 */
- "CLUMP", /* 0x26 */
- "BRANCH", /* 0x27 */
- "EXACT", /* 0x28 */
- "LEXACT", /* 0x29 */
- "EXACTL", /* 0x2a */
- "EXACTF", /* 0x2b */
- "EXACTFL", /* 0x2c */
- "EXACTFU", /* 0x2d */
- "EXACTFAA", /* 0x2e */
- "EXACTFAA_NO_TRIE", /* 0x2f */
- "EXACTFUP", /* 0x30 */
- "EXACTFLU8", /* 0x31 */
- "EXACT_REQ8", /* 0x32 */
- "LEXACT_REQ8", /* 0x33 */
- "EXACTFU_REQ8", /* 0x34 */
- "EXACTFU_S_EDGE", /* 0x35 */
- "LNBREAK", /* 0x36 */
- "TRIE", /* 0x37 */
- "TRIEC", /* 0x38 */
- "AHOCORASICK", /* 0x39 */
- "AHOCORASICKC", /* 0x3a */
- "NOTHING", /* 0x3b */
- "TAIL", /* 0x3c */
- "STAR", /* 0x3d */
- "PLUS", /* 0x3e */
- "CURLY", /* 0x3f */
- "CURLYN", /* 0x40 */
- "CURLYM", /* 0x41 */
- "CURLYX", /* 0x42 */
- "WHILEM", /* 0x43 */
- "OPEN", /* 0x44 */
- "CLOSE", /* 0x45 */
- "SROPEN", /* 0x46 */
- "SRCLOSE", /* 0x47 */
- "REF", /* 0x48 */
- "REFF", /* 0x49 */
- "REFFL", /* 0x4a */
- "REFFU", /* 0x4b */
- "REFFA", /* 0x4c */
- "REFN", /* 0x4d */
- "REFFN", /* 0x4e */
- "REFFLN", /* 0x4f */
- "REFFUN", /* 0x50 */
- "REFFAN", /* 0x51 */
- "LONGJMP", /* 0x52 */
- "BRANCHJ", /* 0x53 */
- "IFMATCH", /* 0x54 */
- "UNLESSM", /* 0x55 */
- "SUSPEND", /* 0x56 */
- "IFTHEN", /* 0x57 */
- "GROUPP", /* 0x58 */
- "EVAL", /* 0x59 */
- "MINMOD", /* 0x5a */
- "LOGICAL", /* 0x5b */
- "RENUM", /* 0x5c */
- "GOSUB", /* 0x5d */
- "GROUPPN", /* 0x5e */
- "INSUBP", /* 0x5f */
- "DEFINEP", /* 0x60 */
- "ENDLIKE", /* 0x61 */
- "OPFAIL", /* 0x62 */
- "ACCEPT", /* 0x63 */
- "VERB", /* 0x64 */
- "PRUNE", /* 0x65 */
- "MARKPOINT", /* 0x66 */
- "SKIP", /* 0x67 */
- "COMMIT", /* 0x68 */
- "CUTGROUP", /* 0x69 */
- "KEEPS", /* 0x6a */
- "OPTIMIZED", /* 0x6b */
- "PSEUDO", /* 0x6c */
- "REGEX_SET", /* 0x6d */
+ "ANYOFHbbm", /* 0x1c */
+ "ANYOFM", /* 0x1d */
+ "NANYOFM", /* 0x1e */
+ "POSIXD", /* 0x1f */
+ "POSIXL", /* 0x20 */
+ "POSIXU", /* 0x21 */
+ "POSIXA", /* 0x22 */
+ "NPOSIXD", /* 0x23 */
+ "NPOSIXL", /* 0x24 */
+ "NPOSIXU", /* 0x25 */
+ "NPOSIXA", /* 0x26 */
+ "CLUMP", /* 0x27 */
+ "BRANCH", /* 0x28 */
+ "EXACT", /* 0x29 */
+ "LEXACT", /* 0x2a */
+ "EXACTL", /* 0x2b */
+ "EXACTF", /* 0x2c */
+ "EXACTFL", /* 0x2d */
+ "EXACTFU", /* 0x2e */
+ "EXACTFAA", /* 0x2f */
+ "EXACTFAA_NO_TRIE", /* 0x30 */
+ "EXACTFUP", /* 0x31 */
+ "EXACTFLU8", /* 0x32 */
+ "EXACT_REQ8", /* 0x33 */
+ "LEXACT_REQ8", /* 0x34 */
+ "EXACTFU_REQ8", /* 0x35 */
+ "EXACTFU_S_EDGE", /* 0x36 */
+ "LNBREAK", /* 0x37 */
+ "TRIE", /* 0x38 */
+ "TRIEC", /* 0x39 */
+ "AHOCORASICK", /* 0x3a */
+ "AHOCORASICKC", /* 0x3b */
+ "NOTHING", /* 0x3c */
+ "TAIL", /* 0x3d */
+ "STAR", /* 0x3e */
+ "PLUS", /* 0x3f */
+ "CURLY", /* 0x40 */
+ "CURLYN", /* 0x41 */
+ "CURLYM", /* 0x42 */
+ "CURLYX", /* 0x43 */
+ "WHILEM", /* 0x44 */
+ "OPEN", /* 0x45 */
+ "CLOSE", /* 0x46 */
+ "SROPEN", /* 0x47 */
+ "SRCLOSE", /* 0x48 */
+ "REF", /* 0x49 */
+ "REFF", /* 0x4a */
+ "REFFL", /* 0x4b */
+ "REFFU", /* 0x4c */
+ "REFFA", /* 0x4d */
+ "REFN", /* 0x4e */
+ "REFFN", /* 0x4f */
+ "REFFLN", /* 0x50 */
+ "REFFUN", /* 0x51 */
+ "REFFAN", /* 0x52 */
+ "LONGJMP", /* 0x53 */
+ "BRANCHJ", /* 0x54 */
+ "IFMATCH", /* 0x55 */
+ "UNLESSM", /* 0x56 */
+ "SUSPEND", /* 0x57 */
+ "IFTHEN", /* 0x58 */
+ "GROUPP", /* 0x59 */
+ "EVAL", /* 0x5a */
+ "MINMOD", /* 0x5b */
+ "LOGICAL", /* 0x5c */
+ "RENUM", /* 0x5d */
+ "GOSUB", /* 0x5e */
+ "GROUPPN", /* 0x5f */
+ "INSUBP", /* 0x60 */
+ "DEFINEP", /* 0x61 */
+ "ENDLIKE", /* 0x62 */
+ "OPFAIL", /* 0x63 */
+ "ACCEPT", /* 0x64 */
+ "VERB", /* 0x65 */
+ "PRUNE", /* 0x66 */
+ "MARKPOINT", /* 0x67 */
+ "SKIP", /* 0x68 */
+ "COMMIT", /* 0x69 */
+ "CUTGROUP", /* 0x6a */
+ "KEEPS", /* 0x6b */
+ "LOOKBEHIND_END", /* 0x6c */
+ "OPTIMIZED", /* 0x6d */
+ "PSEUDO", /* 0x6e */
+ "REGEX_SET", /* 0x6f */
/* ------------ States ------------- */
"TRIE_next", /* REGNODE_MAX +0x01 */
"TRIE_next_fail", /* REGNODE_MAX +0x02 */
@@ -1645,6 +1749,1096 @@ EXTCONST char * const PL_reg_name[] = {
"CUTGROUP_next_fail", /* REGNODE_MAX +0x26 */
"KEEPS_next", /* REGNODE_MAX +0x27 */
"KEEPS_next_fail", /* REGNODE_MAX +0x28 */
+ "REF_next", /* REGNODE_MAX +0x29 */
+ "REF_next_fail", /* REGNODE_MAX +0x2a */
+};
+#endif /* DOINIT */
+
+
+/* PL_regnode_info[] - Opcode/state names in string form, for debugging */
+
+#ifndef DOINIT
+EXTCONST struct regnode_meta PL_regnode_info[];
+#else
+EXTCONST struct regnode_meta PL_regnode_info[] = {
+ {
+ /* #0 op END */
+ .type = END,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #1 op SUCCEED */
+ .type = END,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #2 op SBOL */
+ .type = BOL,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #3 op MBOL */
+ .type = BOL,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #4 op SEOL */
+ .type = EOL,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #5 op MEOL */
+ .type = EOL,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #6 op EOS */
+ .type = EOL,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #7 op GPOS */
+ .type = GPOS,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #8 op BOUND */
+ .type = BOUND,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #9 op BOUNDL */
+ .type = BOUND,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #10 op BOUNDU */
+ .type = BOUND,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #11 op BOUNDA */
+ .type = BOUND,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #12 op NBOUND */
+ .type = NBOUND,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #13 op NBOUNDL */
+ .type = NBOUND,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #14 op NBOUNDU */
+ .type = NBOUND,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #15 op NBOUNDA */
+ .type = NBOUND,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #16 op REG_ANY */
+ .type = REG_ANY,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #17 op SANY */
+ .type = REG_ANY,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #18 op ANYOF */
+ .type = ANYOF,
+ .arg_len = EXTRA_SIZE(tregnode_ANYOF),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #19 op ANYOFD */
+ .type = ANYOF,
+ .arg_len = EXTRA_SIZE(tregnode_ANYOFD),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #20 op ANYOFL */
+ .type = ANYOF,
+ .arg_len = EXTRA_SIZE(tregnode_ANYOFL),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #21 op ANYOFPOSIXL */
+ .type = ANYOF,
+ .arg_len = EXTRA_SIZE(tregnode_ANYOFPOSIXL),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #22 op ANYOFH */
+ .type = ANYOFH,
+ .arg_len = EXTRA_SIZE(tregnode_ANYOFH),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #23 op ANYOFHb */
+ .type = ANYOFH,
+ .arg_len = EXTRA_SIZE(tregnode_ANYOFHb),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #24 op ANYOFHr */
+ .type = ANYOFH,
+ .arg_len = EXTRA_SIZE(tregnode_ANYOFHr),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #25 op ANYOFHs */
+ .type = ANYOFH,
+ .arg_len = EXTRA_SIZE(tregnode_ANYOFHs),
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #26 op ANYOFR */
+ .type = ANYOFR,
+ .arg_len = EXTRA_SIZE(tregnode_ANYOFR),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #27 op ANYOFRb */
+ .type = ANYOFR,
+ .arg_len = EXTRA_SIZE(tregnode_ANYOFRb),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #28 op ANYOFHbbm */
+ .type = ANYOFHbbm,
+ .arg_len = EXTRA_SIZE(tregnode_ANYOFHbbm),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #29 op ANYOFM */
+ .type = ANYOFM,
+ .arg_len = EXTRA_SIZE(tregnode_ANYOFM),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #30 op NANYOFM */
+ .type = ANYOFM,
+ .arg_len = EXTRA_SIZE(tregnode_NANYOFM),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #31 op POSIXD */
+ .type = POSIXD,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #32 op POSIXL */
+ .type = POSIXD,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #33 op POSIXU */
+ .type = POSIXD,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #34 op POSIXA */
+ .type = POSIXD,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #35 op NPOSIXD */
+ .type = NPOSIXD,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #36 op NPOSIXL */
+ .type = NPOSIXD,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #37 op NPOSIXU */
+ .type = NPOSIXD,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #38 op NPOSIXA */
+ .type = NPOSIXD,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #39 op CLUMP */
+ .type = CLUMP,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #40 op BRANCH */
+ .type = BRANCH,
+ .arg_len = EXTRA_SIZE(tregnode_BRANCH),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #41 op EXACT */
+ .type = EXACT,
+ .arg_len = 0,
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #42 op LEXACT */
+ .type = EXACT,
+ .arg_len = EXTRA_SIZE(tregnode_LEXACT),
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #43 op EXACTL */
+ .type = EXACT,
+ .arg_len = 0,
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #44 op EXACTF */
+ .type = EXACT,
+ .arg_len = 0,
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #45 op EXACTFL */
+ .type = EXACT,
+ .arg_len = 0,
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #46 op EXACTFU */
+ .type = EXACT,
+ .arg_len = 0,
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #47 op EXACTFAA */
+ .type = EXACT,
+ .arg_len = 0,
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #48 op EXACTFAA_NO_TRIE */
+ .type = EXACT,
+ .arg_len = 0,
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #49 op EXACTFUP */
+ .type = EXACT,
+ .arg_len = 0,
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #50 op EXACTFLU8 */
+ .type = EXACT,
+ .arg_len = 0,
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #51 op EXACT_REQ8 */
+ .type = EXACT,
+ .arg_len = 0,
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #52 op LEXACT_REQ8 */
+ .type = EXACT,
+ .arg_len = EXTRA_SIZE(tregnode_LEXACT_REQ8),
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #53 op EXACTFU_REQ8 */
+ .type = EXACT,
+ .arg_len = 0,
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #54 op EXACTFU_S_EDGE */
+ .type = EXACT,
+ .arg_len = 0,
+ .arg_len_varies = 1,
+ .off_by_arg = 0
+ },
+ {
+ /* #55 op LNBREAK */
+ .type = LNBREAK,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #56 op TRIE */
+ .type = TRIE,
+ .arg_len = EXTRA_SIZE(tregnode_TRIE),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #57 op TRIEC */
+ .type = TRIE,
+ .arg_len = EXTRA_SIZE(tregnode_TRIEC),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #58 op AHOCORASICK */
+ .type = TRIE,
+ .arg_len = EXTRA_SIZE(tregnode_AHOCORASICK),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #59 op AHOCORASICKC */
+ .type = TRIE,
+ .arg_len = EXTRA_SIZE(tregnode_AHOCORASICKC),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #60 op NOTHING */
+ .type = NOTHING,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #61 op TAIL */
+ .type = NOTHING,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #62 op STAR */
+ .type = STAR,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #63 op PLUS */
+ .type = PLUS,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #64 op CURLY */
+ .type = CURLY,
+ .arg_len = EXTRA_SIZE(tregnode_CURLY),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #65 op CURLYN */
+ .type = CURLY,
+ .arg_len = EXTRA_SIZE(tregnode_CURLYN),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #66 op CURLYM */
+ .type = CURLY,
+ .arg_len = EXTRA_SIZE(tregnode_CURLYM),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #67 op CURLYX */
+ .type = CURLY,
+ .arg_len = EXTRA_SIZE(tregnode_CURLYX),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #68 op WHILEM */
+ .type = WHILEM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #69 op OPEN */
+ .type = OPEN,
+ .arg_len = EXTRA_SIZE(tregnode_OPEN),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #70 op CLOSE */
+ .type = CLOSE,
+ .arg_len = EXTRA_SIZE(tregnode_CLOSE),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #71 op SROPEN */
+ .type = SROPEN,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #72 op SRCLOSE */
+ .type = SRCLOSE,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #73 op REF */
+ .type = REF,
+ .arg_len = EXTRA_SIZE(tregnode_REF),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #74 op REFF */
+ .type = REF,
+ .arg_len = EXTRA_SIZE(tregnode_REFF),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #75 op REFFL */
+ .type = REF,
+ .arg_len = EXTRA_SIZE(tregnode_REFFL),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #76 op REFFU */
+ .type = REF,
+ .arg_len = EXTRA_SIZE(tregnode_REFFU),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #77 op REFFA */
+ .type = REF,
+ .arg_len = EXTRA_SIZE(tregnode_REFFA),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #78 op REFN */
+ .type = REF,
+ .arg_len = EXTRA_SIZE(tregnode_REFN),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #79 op REFFN */
+ .type = REF,
+ .arg_len = EXTRA_SIZE(tregnode_REFFN),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #80 op REFFLN */
+ .type = REF,
+ .arg_len = EXTRA_SIZE(tregnode_REFFLN),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #81 op REFFUN */
+ .type = REF,
+ .arg_len = EXTRA_SIZE(tregnode_REFFUN),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #82 op REFFAN */
+ .type = REF,
+ .arg_len = EXTRA_SIZE(tregnode_REFFAN),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #83 op LONGJMP */
+ .type = LONGJMP,
+ .arg_len = EXTRA_SIZE(tregnode_LONGJMP),
+ .arg_len_varies = 0,
+ .off_by_arg = 1
+ },
+ {
+ /* #84 op BRANCHJ */
+ .type = BRANCHJ,
+ .arg_len = EXTRA_SIZE(tregnode_BRANCHJ),
+ .arg_len_varies = 0,
+ .off_by_arg = 1
+ },
+ {
+ /* #85 op IFMATCH */
+ .type = BRANCHJ,
+ .arg_len = EXTRA_SIZE(tregnode_IFMATCH),
+ .arg_len_varies = 0,
+ .off_by_arg = 1
+ },
+ {
+ /* #86 op UNLESSM */
+ .type = BRANCHJ,
+ .arg_len = EXTRA_SIZE(tregnode_UNLESSM),
+ .arg_len_varies = 0,
+ .off_by_arg = 1
+ },
+ {
+ /* #87 op SUSPEND */
+ .type = BRANCHJ,
+ .arg_len = EXTRA_SIZE(tregnode_SUSPEND),
+ .arg_len_varies = 0,
+ .off_by_arg = 1
+ },
+ {
+ /* #88 op IFTHEN */
+ .type = BRANCHJ,
+ .arg_len = EXTRA_SIZE(tregnode_IFTHEN),
+ .arg_len_varies = 0,
+ .off_by_arg = 1
+ },
+ {
+ /* #89 op GROUPP */
+ .type = GROUPP,
+ .arg_len = EXTRA_SIZE(tregnode_GROUPP),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #90 op EVAL */
+ .type = EVAL,
+ .arg_len = EXTRA_SIZE(tregnode_EVAL),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #91 op MINMOD */
+ .type = MINMOD,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #92 op LOGICAL */
+ .type = LOGICAL,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #93 op RENUM */
+ .type = BRANCHJ,
+ .arg_len = EXTRA_SIZE(tregnode_RENUM),
+ .arg_len_varies = 0,
+ .off_by_arg = 1
+ },
+ {
+ /* #94 op GOSUB */
+ .type = GOSUB,
+ .arg_len = EXTRA_SIZE(tregnode_GOSUB),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #95 op GROUPPN */
+ .type = GROUPPN,
+ .arg_len = EXTRA_SIZE(tregnode_GROUPPN),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #96 op INSUBP */
+ .type = INSUBP,
+ .arg_len = EXTRA_SIZE(tregnode_INSUBP),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #97 op DEFINEP */
+ .type = DEFINEP,
+ .arg_len = EXTRA_SIZE(tregnode_DEFINEP),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #98 op ENDLIKE */
+ .type = ENDLIKE,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #99 op OPFAIL */
+ .type = ENDLIKE,
+ .arg_len = EXTRA_SIZE(tregnode_OPFAIL),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #100 op ACCEPT */
+ .type = ENDLIKE,
+ .arg_len = EXTRA_SIZE(tregnode_ACCEPT),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #101 op VERB */
+ .type = VERB,
+ .arg_len = EXTRA_SIZE(tregnode_VERB),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #102 op PRUNE */
+ .type = VERB,
+ .arg_len = EXTRA_SIZE(tregnode_PRUNE),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #103 op MARKPOINT */
+ .type = VERB,
+ .arg_len = EXTRA_SIZE(tregnode_MARKPOINT),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #104 op SKIP */
+ .type = VERB,
+ .arg_len = EXTRA_SIZE(tregnode_SKIP),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #105 op COMMIT */
+ .type = VERB,
+ .arg_len = EXTRA_SIZE(tregnode_COMMIT),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #106 op CUTGROUP */
+ .type = VERB,
+ .arg_len = EXTRA_SIZE(tregnode_CUTGROUP),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #107 op KEEPS */
+ .type = KEEPS,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #108 op LOOKBEHIND_END */
+ .type = END,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #109 op OPTIMIZED */
+ .type = NOTHING,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #110 op PSEUDO */
+ .type = PSEUDO,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #111 op REGEX_SET */
+ .type = REGEX_SET,
+ .arg_len = EXTRA_SIZE(tregnode_REGEX_SET),
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #112 state TRIE_next */
+ .type = TRIE,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #113 state TRIE_next_fail */
+ .type = TRIE,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #114 state EVAL_B */
+ .type = EVAL,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #115 state EVAL_B_fail */
+ .type = EVAL,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #116 state EVAL_postponed_AB */
+ .type = EVAL,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #117 state EVAL_postponed_AB_fail */
+ .type = EVAL,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #118 state CURLYX_end */
+ .type = CURLYX,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #119 state CURLYX_end_fail */
+ .type = CURLYX,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #120 state WHILEM_A_pre */
+ .type = WHILEM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #121 state WHILEM_A_pre_fail */
+ .type = WHILEM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #122 state WHILEM_A_min */
+ .type = WHILEM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #123 state WHILEM_A_min_fail */
+ .type = WHILEM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #124 state WHILEM_A_max */
+ .type = WHILEM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #125 state WHILEM_A_max_fail */
+ .type = WHILEM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #126 state WHILEM_B_min */
+ .type = WHILEM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #127 state WHILEM_B_min_fail */
+ .type = WHILEM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #128 state WHILEM_B_max */
+ .type = WHILEM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #129 state WHILEM_B_max_fail */
+ .type = WHILEM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #130 state BRANCH_next */
+ .type = BRANCH,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #131 state BRANCH_next_fail */
+ .type = BRANCH,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #132 state CURLYM_A */
+ .type = CURLYM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #133 state CURLYM_A_fail */
+ .type = CURLYM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #134 state CURLYM_B */
+ .type = CURLYM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #135 state CURLYM_B_fail */
+ .type = CURLYM,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #136 state IFMATCH_A */
+ .type = IFMATCH,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #137 state IFMATCH_A_fail */
+ .type = IFMATCH,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #138 state CURLY_B_min */
+ .type = CURLY,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #139 state CURLY_B_min_fail */
+ .type = CURLY,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #140 state CURLY_B_max */
+ .type = CURLY,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #141 state CURLY_B_max_fail */
+ .type = CURLY,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #142 state COMMIT_next */
+ .type = COMMIT,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #143 state COMMIT_next_fail */
+ .type = COMMIT,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #144 state MARKPOINT_next */
+ .type = MARKPOINT,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #145 state MARKPOINT_next_fail */
+ .type = MARKPOINT,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #146 state SKIP_next */
+ .type = SKIP,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #147 state SKIP_next_fail */
+ .type = SKIP,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #148 state CUTGROUP_next */
+ .type = CUTGROUP,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #149 state CUTGROUP_next_fail */
+ .type = CUTGROUP,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #150 state KEEPS_next */
+ .type = KEEPS,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #151 state KEEPS_next_fail */
+ .type = KEEPS,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #152 state REF_next */
+ .type = REF,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ },
+ {
+ /* #153 state REF_next_fail */
+ .type = REF,
+ .arg_len = 0,
+ .arg_len_varies = 0,
+ .off_by_arg = 0
+ }
};
#endif /* DOINIT */
@@ -1700,24 +2894,26 @@ EXTCONST char * const PL_reg_extflags_name[] = {
EXTCONST char * PL_reg_intflags_name[];
#else
EXTCONST char * const PL_reg_intflags_name[] = {
- "SKIP", /* 0x00000001 - PREGf_SKIP */
- "IMPLICIT", /* 0x00000002 - PREGf_IMPLICIT - Converted .* to ^.* */
- "NAUGHTY", /* 0x00000004 - PREGf_NAUGHTY - how exponential is this pattern? */
- "VERBARG_SEEN", /* 0x00000008 - PREGf_VERBARG_SEEN */
- "CUTGROUP_SEEN", /* 0x00000010 - PREGf_CUTGROUP_SEEN */
- "USE_RE_EVAL", /* 0x00000020 - PREGf_USE_RE_EVAL - compiled with "use re 'eval'" */
- "NOSCAN", /* 0x00000040 - PREGf_NOSCAN */
- "GPOS_SEEN", /* 0x00000100 - PREGf_GPOS_SEEN */
- "GPOS_FLOAT", /* 0x00000200 - PREGf_GPOS_FLOAT */
- "ANCH_MBOL", /* 0x00000400 - PREGf_ANCH_MBOL */
- "ANCH_SBOL", /* 0x00000800 - PREGf_ANCH_SBOL */
- "ANCH_GPOS", /* 0x00001000 - PREGf_ANCH_GPOS */
- "RECURSE_SEEN", /* 0x00002000 - PREGf_RECURSE_SEEN */
+ "SKIP", /* (1<< 0) - 0x00000001 - PREGf_SKIP */
+ "IMPLICIT", /* (1<< 1) - 0x00000002 - PREGf_IMPLICIT - Converted .* to ^.* */
+ "NAUGHTY", /* (1<< 2) - 0x00000004 - PREGf_NAUGHTY - how exponential is this pattern? */
+ "VERBARG_SEEN", /* (1<< 3) - 0x00000008 - PREGf_VERBARG_SEEN */
+ "CUTGROUP_SEEN", /* (1<< 4) - 0x00000010 - PREGf_CUTGROUP_SEEN */
+ "USE_RE_EVAL", /* (1<< 5) - 0x00000020 - PREGf_USE_RE_EVAL - compiled with "use re 'eval'" */
+ "NOSCAN", /* (1<< 6) - 0x00000040 - PREGf_NOSCAN */
+ "", /* (1<< 7) - 0x00000080 - *UNUSED* */
+ "GPOS_SEEN", /* (1<< 8) - 0x00000100 - PREGf_GPOS_SEEN */
+ "GPOS_FLOAT", /* (1<< 9) - 0x00000200 - PREGf_GPOS_FLOAT */
+ "ANCH_MBOL", /* (1<<10) - 0x00000400 - PREGf_ANCH_MBOL */
+ "ANCH_SBOL", /* (1<<11) - 0x00000800 - PREGf_ANCH_SBOL */
+ "ANCH_GPOS", /* (1<<12) - 0x00001000 - PREGf_ANCH_GPOS */
+ "RECURSE_SEEN", /* (1<<13) - 0x00002000 - PREGf_RECURSE_SEEN */
+ "PESSIMIZE_SEEN", /* (1<<14) - 0x00004000 - PREGf_PESSIMIZE_SEEN */
};
#endif /* DOINIT */
#ifdef DEBUGGING
-# define REG_INTFLAGS_NAME_SIZE 13
+# define REG_INTFLAGS_NAME_SIZE 15
#endif
/* The following have no fixed length. U8 so we can do strchr() on it. */
@@ -1738,7 +2934,7 @@ EXTCONST U8 PL_varies[] __attribute__deprecated__ = {
EXTCONST U8 PL_varies_bitmask[];
#else
EXTCONST U8 PL_varies_bitmask[] = {
- 0x00, 0x00, 0x00, 0x00, 0xC0, 0x00, 0x00, 0xE0, 0x0F, 0xFF, 0xCB, 0x00, 0x00, 0x00
+ 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x00, 0xC0, 0x1F, 0xFE, 0x97, 0x01, 0x00, 0x00
};
#endif /* DOINIT */
@@ -1751,8 +2947,8 @@ EXTCONST U8 PL_simple[] __attribute__deprecated__;
#else
EXTCONST U8 PL_simple[] __attribute__deprecated__ = {
REG_ANY, SANY, ANYOF, ANYOFD, ANYOFL, ANYOFPOSIXL, ANYOFH, ANYOFHb,
- ANYOFHr, ANYOFHs, ANYOFR, ANYOFRb, ANYOFM, NANYOFM, POSIXD, POSIXL,
- POSIXU, POSIXA, NPOSIXD, NPOSIXL, NPOSIXU, NPOSIXA, REGEX_SET,
+ ANYOFHr, ANYOFHs, ANYOFR, ANYOFRb, ANYOFHbbm, ANYOFM, NANYOFM, POSIXD,
+ POSIXL, POSIXU, POSIXA, NPOSIXD, NPOSIXL, NPOSIXU, NPOSIXA, REGEX_SET,
0
};
#endif /* DOINIT */
@@ -1761,15 +2957,15 @@ EXTCONST U8 PL_simple[] __attribute__deprecated__ = {
EXTCONST U8 PL_simple_bitmask[];
#else
EXTCONST U8 PL_simple_bitmask[] = {
- 0x00, 0x00, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20
+ 0x00, 0x00, 0xFF, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80
};
#endif /* DOINIT */
/* Is 'op', known to be of type EXACT, folding? */
-#define isEXACTFish(op) (__ASSERT_(PL_regkind[op] == EXACT) (PL_EXACTFish_bitmask & (1U << (op - EXACT))))
+#define isEXACTFish(op) (__ASSERT_(REGNODE_TYPE(op) == EXACT) (PL_EXACTFish_bitmask & (1U << (op - EXACT))))
/* Do only UTF-8 target strings match 'op', known to be of type EXACT? */
-#define isEXACT_REQ8(op) (__ASSERT_(PL_regkind[op] == EXACT) (PL_EXACT_REQ8_bitmask & (1U << (op - EXACT))))
+#define isEXACT_REQ8(op) (__ASSERT_(REGNODE_TYPE(op) == EXACT) (PL_EXACT_REQ8_bitmask & (1U << (op - EXACT))))
#ifndef DOINIT
EXTCONST U32 PL_EXACTFish_bitmask;
@@ -1781,4 +2977,4 @@ EXTCONST U32 PL_EXACT_REQ8_bitmask = 0x1E00;
#endif /* defined(PERL_CORE) || defined(PERL_EXT_RE_BUILD) */
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/sbox32_hash.h b/Master/tlpkg/tlperl/lib/CORE/sbox32_hash.h
index 2c015a7c6ca..594431ba0d4 100644
--- a/Master/tlpkg/tlperl/lib/CORE/sbox32_hash.h
+++ b/Master/tlpkg/tlperl/lib/CORE/sbox32_hash.h
@@ -1390,33 +1390,14 @@
#define case_1_SBOX32(hash,state,key) /**/
#endif
-#define XORSHIFT96_set(r,x,y,z,t) STMT_START { \
- t = (x ^ ( x << 10 ) ); \
- x = y; y = z; \
- r = z = (z ^ ( z >> 26 ) ) ^ ( t ^ ( t >> 5 ) ); \
-} STMT_END
-
#define XORSHIFT128_set(r,x,y,z,w,t) STMT_START { \
t = ( x ^ ( x << 5 ) ); \
x = y; y = z; z = w; \
r = w = ( w ^ ( w >> 29 ) ) ^ ( t ^ ( t >> 12 ) ); \
} STMT_END
-#define SBOX32_SCRAMBLE32(v,prime) STMT_START { \
- v ^= (v>>9); \
- v ^= (v<<21); \
- v ^= (v>>16); \
- v *= prime; \
- v ^= (v>>17); \
- v ^= (v<<15); \
- v ^= (v>>23); \
-} STMT_END
-
#ifndef SBOX32_CHURN_ROUNDS
-#define SBOX32_CHURN_ROUNDS 5
-#endif
-#ifndef SBOX32_SKIP_MASK
-#define SBOX32_SKIP_MASK 0x3
+#define SBOX32_CHURN_ROUNDS 128
#endif
#define _SBOX32_CASE(len,hash,state,key) \
@@ -1424,7 +1405,7 @@
case len: hash ^= state[ 1 + ( 256 * ( len - 1 ) ) + key[ len - 1 ] ];
-SBOX32_STATIC_INLINE void sbox32_seed_state96 (
+SBOX32_STATIC_INLINE void sbox32_seed_state128 (
const U8 *seed_ch,
U8 *state_ch
) {
@@ -1432,52 +1413,34 @@ SBOX32_STATIC_INLINE void sbox32_seed_state96 (
U32 *state= (U32 *)state_ch;
U32 *state_cursor = state + 1;
U32 *sbox32_end = state + 1 + (256 * SBOX32_MAX_LEN);
- U32 s0 = seed[0] ^ 0x68736168; /* sbox */
- U32 s1 = seed[1] ^ 0x786f6273; /* hash */
+ U32 s0 = seed[1] ^ 0x786f6273; /* sbox */
+ U32 s1 = seed[0] ^ 0x68736168; /* hash */
U32 s2 = seed[2] ^ 0x646f6f67; /* good */
+ U32 s3 = seed[3] ^ 0x74736166; /* fast */
U32 t1,t2,i;
/* make sure we have all non-zero state elements */
if (!s0) s0 = 1;
if (!s1) s1 = 2;
if (!s2) s2 = 4;
+ if (!s3) s3 = 8;
/* Do a bunch of mix rounds to avalanche the seedbits
* before we use them for the XORSHIFT rng. */
for ( i = 0; i < SBOX32_CHURN_ROUNDS; i++ )
- SBOX32_MIX3(s0,s1,s2,"SEED STATE");
-
- while ( state_cursor < sbox32_end ) {
- U32 *row_end = state_cursor + 256;
- for ( ; state_cursor < row_end; state_cursor++ ) {
- XORSHIFT96_set(*state_cursor,s0,s1,s2,t1);
- }
- }
- XORSHIFT96_set(*state,s0,s1,s2,t2);
-}
+ SBOX32_MIX4(s0,s1,s2,s3,"SEED STATE");
-SBOX32_STATIC_INLINE void sbox32_seed_state128 (
- const U8 *seed_ch,
- U8 *state_ch
-) {
- U32 *seed= (U32 *)seed_ch;
- U32 *state= (U32 *)state_ch;
- U32 *state_cursor = state + 1;
- U32 *sbox32_end = state + 1 + (256 * SBOX32_MAX_LEN);
- U32 s0 = seed[0] ^ 0x68736168; /* sbox */
- U32 s1 = seed[1] ^ 0x786f6273; /* hash */
- U32 s2 = seed[2] ^ 0x646f6f67; /* good */
- U32 s3 = seed[3] ^ 0x74736166; /* fast */
- U32 t1,t2,i;
+ s0 ^= ~seed[3];
+ s1 ^= ~seed[2];
+ s2 ^= ~seed[1];
+ s3 ^= ~seed[0];
- /* make sure we have all non-zero state elements */
- if (!s0) s0 = 1;
- if (!s1) s1 = 2;
- if (!s2) s2 = 4;
- if (!s3) s3 = 8;
+ /* make sure we have all non-zero state elements, again */
+ if (!s0) s0 = 8;
+ if (!s1) s1 = 4;
+ if (!s2) s2 = 2;
+ if (!s3) s3 = 1;
- /* Do a bunch of mix rounds to avalanche the seedbits
- * before we use them for the XORSHIFT rng. */
for ( i = 0; i < SBOX32_CHURN_ROUNDS; i++ )
SBOX32_MIX4(s0,s1,s2,s3,"SEED STATE");
@@ -1495,7 +1458,7 @@ SBOX32_STATIC_INLINE U32 sbox32_hash_with_state(
const U8 *key,
const STRLEN key_len
) {
- U32 *state= (U32 *)state_ch;
+ const U32 *state= (const U32 *)state_ch;
U32 hash = *state;
switch (key_len) {
default: return zaphod32_hash_with_state(state_ch, key, key_len);
@@ -1760,16 +1723,6 @@ SBOX32_STATIC_INLINE U32 sbox32_hash_with_state(
return hash;
}
-SBOX32_STATIC_INLINE U32 sbox32_hash96(
- const U8 *seed_ch,
- const U8 *key,
- const STRLEN key_len
-) {
- U32 state[SBOX32_STATE_WORDS];
- sbox32_seed_state96(seed_ch,(U8*)state);
- return sbox32_hash_with_state((U8*)state,key,key_len);
-}
-
SBOX32_STATIC_INLINE U32 sbox32_hash128(
const U8 *seed_ch,
const U8 *key,
diff --git a/Master/tlpkg/tlperl/lib/CORE/scope.h b/Master/tlpkg/tlperl/lib/CORE/scope.h
index 49177e32a87..ee4e8612248 100644
--- a/Master/tlpkg/tlperl/lib/CORE/scope.h
+++ b/Master/tlpkg/tlperl/lib/CORE/scope.h
@@ -8,76 +8,7 @@
*
*/
-/* *** Update arg_counts[] in scope.c if you modify these */
-
-/* zero args */
-
-#define SAVEt_ALLOC 0
-#define SAVEt_CLEARPADRANGE 1
-#define SAVEt_CLEARSV 2
-#define SAVEt_REGCONTEXT 3
-
-/* one arg */
-
-#define SAVEt_TMPSFLOOR 4
-#define SAVEt_BOOL 5
-#define SAVEt_COMPILE_WARNINGS 6
-#define SAVEt_COMPPAD 7
-#define SAVEt_FREECOPHH 8
-#define SAVEt_FREEOP 9
-#define SAVEt_FREEPV 10
-#define SAVEt_FREESV 11
-#define SAVEt_I16 12
-#define SAVEt_I32_SMALL 13
-#define SAVEt_I8 14
-#define SAVEt_INT_SMALL 15
-#define SAVEt_MORTALIZESV 16
-#define SAVEt_NSTAB 17
-#define SAVEt_OP 18
-#define SAVEt_PARSER 19
-#define SAVEt_STACK_POS 20
-#define SAVEt_READONLY_OFF 21
-#define SAVEt_FREEPADNAME 22
-#define SAVEt_STRLEN_SMALL 23
-
-/* two args */
-
-#define SAVEt_AV 24
-#define SAVEt_DESTRUCTOR 25
-#define SAVEt_DESTRUCTOR_X 26
-#define SAVEt_GENERIC_PVREF 27
-#define SAVEt_GENERIC_SVREF 28
-#define SAVEt_GP 29
-#define SAVEt_GVSV 30
-#define SAVEt_HINTS 31
-#define SAVEt_HPTR 32
-#define SAVEt_HV 33
-#define SAVEt_I32 34
-#define SAVEt_INT 35
-#define SAVEt_ITEM 36
-#define SAVEt_IV 37
-#define SAVEt_LONG 38
-#define SAVEt_PPTR 39
-#define SAVEt_SAVESWITCHSTACK 40
-#define SAVEt_SHARED_PVREF 41
-#define SAVEt_SPTR 42
-#define SAVEt_STRLEN 43
-#define SAVEt_SV 44
-#define SAVEt_SVREF 45
-#define SAVEt_VPTR 46
-#define SAVEt_ADELETE 47
-#define SAVEt_APTR 48
-
-/* three args */
-
-#define SAVEt_HELEM 49
-#define SAVEt_PADSV_AND_MORTALIZE 50
-#define SAVEt_SET_SVFLAGS 51
-#define SAVEt_GVSLOT 52
-#define SAVEt_AELEM 53
-#define SAVEt_DELETE 54
-#define SAVEt_HINTS_HH 55
-
+#include "scope_types.h"
#define SAVEf_SETMAGIC 1
#define SAVEf_KEEPOLDELEM 2
@@ -96,8 +27,8 @@
* macros */
#define SS_MAXPUSH 4
-#define SSCHECK(need) if (UNLIKELY(PL_savestack_ix + (I32)(need) > PL_savestack_max)) savestack_grow()
#define SSGROW(need) if (UNLIKELY(PL_savestack_ix + (I32)(need) > PL_savestack_max)) savestack_grow_cnt(need)
+#define SSCHECK(need) SSGROW(need) /* legacy */
#define SSPUSHINT(i) (PL_savestack[PL_savestack_ix++].any_i32 = (I32)(i))
#define SSPUSHLONG(i) (PL_savestack[PL_savestack_ix++].any_long = (long)(i))
#define SSPUSHBOOL(p) (PL_savestack[PL_savestack_ix++].any_bool = (p))
@@ -115,9 +46,9 @@
* of the grow() can be done. These changes reduce the code of something
* like save_pushptrptr() to half its former size.
* Of course, doing the size check *after* pushing means we must always
- * ensure there are SS_MAXPUSH free slots on the savestack. This ensured
- * bt savestack_grow() and savestack_grow_cnt always allocating SS_MAXPUSH
- * slots more than asked for, or that it sets PL_savestack_max to
+ * ensure there are SS_MAXPUSH free slots on the savestack. This is ensured by
+ * savestack_grow_cnt always allocating SS_MAXPUSH slots
+ * more than asked for, or that it sets PL_savestack_max to
*
* These are for internal core use only and are subject to change */
@@ -130,7 +61,7 @@
ix += (need); \
PL_savestack_ix = ix; \
assert(ix <= PL_savestack_max + SS_MAXPUSH); \
- if (UNLIKELY(ix > PL_savestack_max)) savestack_grow(); \
+ if (UNLIKELY(ix > PL_savestack_max)) savestack_grow_cnt(ix - PL_savestack_max); \
assert(PL_savestack_ix <= PL_savestack_max);
#define SS_ADD_INT(i) ((ssp++)->any_i32 = (I32)(i))
@@ -155,26 +86,26 @@
/*
=for apidoc_section $callback
-=for apidoc Amns||SAVETMPS
+=for apidoc Amn;||SAVETMPS
Opening bracket for temporaries on a callback. See C<L</FREETMPS>> and
L<perlcall>.
-=for apidoc Amns||FREETMPS
+=for apidoc Amn;||FREETMPS
Closing bracket for temporaries on a callback. See C<L</SAVETMPS>> and
L<perlcall>.
-=for apidoc Amns||ENTER
+=for apidoc Amn;||ENTER
Opening bracket on a callback. See C<L</LEAVE>> and L<perlcall>.
-=for apidoc Amns||LEAVE
+=for apidoc Amn;||LEAVE
Closing bracket on a callback. See C<L</ENTER>> and L<perlcall>.
-=for apidoc Ams||ENTER_with_name|"name"
+=for apidoc Am;||ENTER_with_name|"name"
Same as C<L</ENTER>>, but when debugging is enabled it also associates the
given literal string with the new scope.
-=for apidoc Ams||LEAVE_with_name|"name"
+=for apidoc Am;||LEAVE_with_name|"name"
Same as C<L</LEAVE>>, but when debugging is enabled it first checks that the
scope has the given name. C<name> must be a literal string.
@@ -201,16 +132,18 @@ scope has the given name. C<name> must be a literal string.
STMT_START { \
push_scope(); \
if (PL_scopestack_name) \
- PL_scopestack_name[PL_scopestack_ix-1] = name; \
+ PL_scopestack_name[PL_scopestack_ix-1] = ASSERT_IS_LITERAL(name);\
DEBUG_SCOPE("ENTER \"" name "\"") \
} STMT_END
#define LEAVE_with_name(name) \
STMT_START { \
DEBUG_SCOPE("LEAVE \"" name "\"") \
if (PL_scopestack_name) { \
+ CLANG_DIAG_IGNORE_STMT(-Wstring-compare); \
assert(((char*)PL_scopestack_name[PL_scopestack_ix-1] \
- == (char*)name) \
+ == (char*)ASSERT_IS_LITERAL(name)) \
|| strEQ(PL_scopestack_name[PL_scopestack_ix-1], name)); \
+ CLANG_DIAG_RESTORE_STMT; \
} \
pop_scope(); \
} STMT_END
@@ -224,28 +157,32 @@ scope has the given name. C<name> must be a literal string.
if (PL_savestack_ix > old) leave_scope(old); \
} STMT_END
-#define SAVEI8(i) save_I8((I8*)&(i))
-#define SAVEI16(i) save_I16((I16*)&(i))
-#define SAVEI32(i) save_I32((I32*)&(i))
-#define SAVEINT(i) save_int((int*)&(i))
-#define SAVEIV(i) save_iv((IV*)&(i))
-#define SAVELONG(l) save_long((long*)&(l))
-#define SAVEBOOL(b) save_bool(&(b))
-#define SAVESPTR(s) save_sptr((SV**)&(s))
-#define SAVEPPTR(s) save_pptr((char**)&(s))
-#define SAVEVPTR(s) save_vptr((void*)&(s))
-#define SAVEPADSVANDMORTALIZE(s) save_padsv_and_mortalize(s)
-#define SAVEFREESV(s) save_freesv(MUTABLE_SV(s))
-#define SAVEFREEPADNAME(s) save_pushptr((void *)(s), SAVEt_FREEPADNAME)
-#define SAVEMORTALIZESV(s) save_mortalizesv(MUTABLE_SV(s))
-#define SAVEFREEOP(o) save_freeop((OP*)(o))
-#define SAVEFREEPV(p) save_freepv((char*)(p))
-#define SAVECLEARSV(sv) save_clearsv((SV**)&(sv))
-#define SAVEGENERICSV(s) save_generic_svref((SV**)&(s))
-#define SAVEGENERICPV(s) save_generic_pvref((char**)&(s))
-#define SAVESHAREDPV(s) save_shared_pvref((char**)&(s))
-#define SAVESETSVFLAGS(sv,mask,val) save_set_svflags(sv,mask,val)
-#define SAVEFREECOPHH(h) save_pushptr((void *)(h), SAVEt_FREECOPHH)
+#define SAVEI8(i) save_I8((I8*)&(i))
+#define SAVEI16(i) save_I16((I16*)&(i))
+#define SAVEI32(i) save_I32((I32*)&(i))
+#define SAVEINT(i) save_int((int*)&(i))
+#define SAVEIV(i) save_iv((IV*)&(i))
+#define SAVELONG(l) save_long((long*)&(l))
+#define SAVESTRLEN(l) Perl_save_strlen(aTHX_ (STRLEN*)&(l))
+#define SAVEBOOL(b) save_bool(&(b))
+#define SAVESPTR(s) save_sptr((SV**)&(s))
+#define SAVEPPTR(s) save_pptr((char**)&(s))
+#define SAVEVPTR(s) save_vptr((void*)&(s))
+#define SAVEPADSVANDMORTALIZE(s) save_padsv_and_mortalize(s)
+#define SAVEFREESV(s) save_freesv(MUTABLE_SV(s))
+#define SAVEFREEPADNAME(s) save_pushptr((void *)(s), SAVEt_FREEPADNAME)
+#define SAVEMORTALIZESV(s) save_mortalizesv(MUTABLE_SV(s))
+#define SAVEFREEOP(o) save_freeop((OP*)(o))
+#define SAVEFREEPV(p) save_freepv((char*)(p))
+#define SAVECLEARSV(sv) save_clearsv((SV**)&(sv))
+#define SAVEGENERICSV(s) save_generic_svref((SV**)&(s))
+#define SAVEGENERICPV(s) save_generic_pvref((char**)&(s))
+#define SAVERCPV(s) save_rcpv((char**)&(s))
+#define SAVEFREERCPV(s) save_freercpv(s)
+#define SAVESHAREDPV(s) save_shared_pvref((char**)&(s))
+#define SAVESETSVFLAGS(sv,mask,val) save_set_svflags(sv,mask,val)
+#define SAVEFREECOPHH(h) save_pushptr((void *)(h), SAVEt_FREECOPHH)
+
#define SAVEDELETE(h,k,l) \
save_delete(MUTABLE_HV(h), (char*)(k), (I32)(l))
#define SAVEHDELETE(h,s) \
@@ -258,6 +195,12 @@ scope has the given name. C<name> must be a literal string.
#define SAVEDESTRUCTOR_X(f,p) \
save_destructor_x((DESTRUCTORFUNC_t)(f), (void*)(p))
+#define MORTALSVFUNC_X(f,sv) \
+ mortal_svfunc_x((SVFUNC_t)(f), sv)
+
+#define MORTALDESTRUCTOR_SV(coderef,args) \
+ mortal_destructor_sv(coderef,args)
+
#define SAVESTACK_POS() \
STMT_START { \
dSS_ADD; \
@@ -279,19 +222,28 @@ scope has the given name. C<name> must be a literal string.
PL_curstackinfo->si_stack = (t); \
} STMT_END
-/* Need to do the cop warnings like this, rather than a "SAVEFREESHAREDPV",
- because realloc() means that the value can actually change. Possibly
- could have done savefreesharedpvREF, but this way actually seems cleaner,
- as it simplifies the code that does the saves, and reduces the load on the
- save stack. */
+/* Note these are special, we can't just use a save_pushptrptr() on them
+ * as the target might change after a fork or thread start. */
#define SAVECOMPILEWARNINGS() save_pushptr(PL_compiling.cop_warnings, SAVEt_COMPILE_WARNINGS)
+#define SAVECURCOPWARNINGS() save_pushptr(PL_curcop->cop_warnings, SAVEt_CURCOP_WARNINGS)
+
#define SAVEPARSER(p) save_pushptr((p), SAVEt_PARSER)
#ifdef USE_ITHREADS
# define SAVECOPSTASH_FREE(c) SAVEIV((c)->cop_stashoff)
-# define SAVECOPFILE(c) SAVEPPTR(CopFILE(c))
-# define SAVECOPFILE_FREE(c) SAVESHAREDPV(CopFILE(c))
+# define SAVECOPFILE_x(c) SAVEPPTR((c)->cop_file)
+# define SAVECOPFILE(c) \
+ STMT_START { \
+ SAVECOPFILE_x(c); \
+ CopFILE_debug((c),"SAVECOPFILE",0); \
+ } STMT_END
+# define SAVECOPFILE_FREE_x(c) SAVERCPV((c)->cop_file)
+# define SAVECOPFILE_FREE(c) \
+ STMT_START { \
+ SAVECOPFILE_FREE_x(c); \
+ CopFILE_debug((c),"SAVECOPFILE_FREE",0); \
+ } STMT_END
#else
# /* XXX not refcounted */
# define SAVECOPSTASH_FREE(c) SAVESPTR(CopSTASH(c))
@@ -301,15 +253,35 @@ scope has the given name. C<name> must be a literal string.
#define SAVECOPLINE(c) SAVEI32(CopLINE(c))
-/* SSNEW() temporarily allocates a specified number of bytes of data on the
- * savestack. It returns an I32 index into the savestack, because a
- * pointer would get broken if the savestack is moved on reallocation.
- * SSNEWa() works like SSNEW(), but also aligns the data to the specified
- * number of bytes. MEM_ALIGNBYTES is perhaps the most useful. The
- * alignment will be preserved through savestack reallocation *only* if
- * realloc returns data aligned to a size divisible by "align"!
- *
- * SSPTR() converts the index returned by SSNEW/SSNEWa() into a pointer.
+/*
+=for apidoc_section $stack
+=for apidoc Am|SSize_t|SSNEW |Size_t size
+=for apidoc_item | |SSNEWa |Size_t_size|Size_t align
+=for apidoc_item | |SSNEWat|Size_t_size|type|Size_t align
+=for apidoc_item | |SSNEWt |Size_t size|type
+
+These temporarily allocates data on the savestack, returning an SSize_t index into
+the savestack, because a pointer would get broken if the savestack is moved on
+reallocation. Use L</C<SSPTR>> to convert the returned index into a pointer.
+
+The forms differ in that plain C<SSNEW> allocates C<size> bytes;
+C<SSNEWt> and C<SSNEWat> allocate C<size> objects, each of which is type
+C<type>;
+and <SSNEWa> and C<SSNEWat> make sure to align the new data to an C<align>
+boundary. The most useful value for the alignment is likely to be
+L</C<MEM_ALIGNBYTES>>. The alignment will be preserved through savestack
+reallocation B<only> if realloc returns data aligned to a size divisible by
+"align"!
+
+=for apidoc Am|type |SSPTR |SSize_t index|type
+=for apidoc_item|type *|SSPTRt|SSize_t index|type
+
+These convert the C<index> returned by L/<C<SSNEW>> and kin into actual pointers.
+
+The difference is that C<SSPTR> casts the result to C<type>, and C<SSPTRt>
+casts it to a pointer of that C<type>.
+
+=cut
*/
#define SSNEW(size) Perl_save_alloc(aTHX_ (size), 0)
@@ -318,8 +290,8 @@ scope has the given name. C<name> must be a literal string.
(I32)(align - ((size_t)((caddr_t)&PL_savestack[PL_savestack_ix]) % align)) % align)
#define SSNEWat(n,t,align) SSNEWa((n)*sizeof(t), align)
-#define SSPTR(off,type) ((type) ((char*)PL_savestack + off))
-#define SSPTRt(off,type) ((type*) ((char*)PL_savestack + off))
+#define SSPTR(off,type) (assert(sizeof(off) >= sizeof(SSize_t)), (type) ((char*)PL_savestack + off))
+#define SSPTRt(off,type) (assert(sizeof(off) >= sizeof(SSize_t)), (type*) ((char*)PL_savestack + off))
#define save_freesv(op) save_pushptr((void *)(op), SAVEt_FREESV)
#define save_mortalizesv(op) save_pushptr((void *)(op), SAVEt_MORTALIZESV)
@@ -332,6 +304,16 @@ STMT_START { \
save_pushptr((void *)(_o), SAVEt_FREEOP); \
} STMT_END
#define save_freepv(pv) save_pushptr((void *)(pv), SAVEt_FREEPV)
+
+/*
+=for apidoc_section $callback
+=for apidoc save_op
+
+Implements C<SAVEOP>.
+
+=cut
+ */
+
#define save_op() save_pushptr((void *)(PL_op), SAVEt_OP)
/*
diff --git a/Master/tlpkg/tlperl/lib/CORE/scope_types.h b/Master/tlpkg/tlperl/lib/CORE/scope_types.h
new file mode 100755
index 00000000000..6d31c116d23
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/CORE/scope_types.h
@@ -0,0 +1,151 @@
+/* -*- mode: C; buffer-read-only: t -*-
+
+ Copyright (C) 2022 by Larry Wall and others
+
+ You may distribute under the terms of either the GNU General Public
+ License or the Artistic License, as specified in the README file.
+
+ !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+ This file is built by regen/scope_types.pl.
+ Any changes made here will be lost!
+ The defines and contents of the leave_scope_arg_counts[] array
+ must match. To add a new type modify the __DATA__ section in
+ regen/scope_types.pl and run `make regen` to rebuild the file.
+ */
+
+/* zero args */
+
+#define SAVEt_ALLOC 0
+#define SAVEt_CLEARPADRANGE 1
+#define SAVEt_CLEARSV 2
+#define SAVEt_REGCONTEXT 3
+
+/* one arg */
+
+#define SAVEt_TMPSFLOOR 4
+#define SAVEt_BOOL 5
+#define SAVEt_COMPILE_WARNINGS 6
+#define SAVEt_CURCOP_WARNINGS 7
+#define SAVEt_COMPPAD 8
+#define SAVEt_FREECOPHH 9
+#define SAVEt_FREEOP 10
+#define SAVEt_FREEPV 11
+#define SAVEt_FREESV 12
+#define SAVEt_I16 13
+#define SAVEt_I32_SMALL 14
+#define SAVEt_I8 15
+#define SAVEt_INT_SMALL 16
+#define SAVEt_MORTALIZESV 17
+#define SAVEt_NSTAB 18
+#define SAVEt_OP 19
+#define SAVEt_PARSER 20
+#define SAVEt_STACK_POS 21
+#define SAVEt_READONLY_OFF 22
+#define SAVEt_FREEPADNAME 23
+#define SAVEt_STRLEN_SMALL 24
+#define SAVEt_FREERCPV 25
+
+/* two args */
+
+#define SAVEt_AV 26
+#define SAVEt_DESTRUCTOR 27
+#define SAVEt_DESTRUCTOR_X 28
+#define SAVEt_GENERIC_PVREF 29
+#define SAVEt_GENERIC_SVREF 30
+#define SAVEt_GP 31
+#define SAVEt_GVSV 32
+#define SAVEt_HINTS 33
+#define SAVEt_HPTR 34
+#define SAVEt_HV 35
+#define SAVEt_I32 36
+#define SAVEt_INT 37
+#define SAVEt_ITEM 38
+#define SAVEt_IV 39
+#define SAVEt_LONG 40
+#define SAVEt_PPTR 41
+#define SAVEt_SAVESWITCHSTACK 42
+#define SAVEt_SHARED_PVREF 43
+#define SAVEt_SPTR 44
+#define SAVEt_STRLEN 45
+#define SAVEt_SV 46
+#define SAVEt_SVREF 47
+#define SAVEt_VPTR 48
+#define SAVEt_ADELETE 49
+#define SAVEt_APTR 50
+#define SAVEt_RCPV 51
+
+/* three args */
+
+#define SAVEt_HELEM 52
+#define SAVEt_PADSV_AND_MORTALIZE 53
+#define SAVEt_SET_SVFLAGS 54
+#define SAVEt_GVSLOT 55
+#define SAVEt_AELEM 56
+#define SAVEt_DELETE 57
+#define SAVEt_HINTS_HH 58
+
+static const U8 leave_scope_arg_counts[] = {
+ 0, /* SAVEt_ALLOC */
+ 0, /* SAVEt_CLEARPADRANGE */
+ 0, /* SAVEt_CLEARSV */
+ 0, /* SAVEt_REGCONTEXT */
+ 1, /* SAVEt_TMPSFLOOR */
+ 1, /* SAVEt_BOOL */
+ 1, /* SAVEt_COMPILE_WARNINGS */
+ 1, /* SAVEt_CURCOP_WARNINGS */
+ 1, /* SAVEt_COMPPAD */
+ 1, /* SAVEt_FREECOPHH */
+ 1, /* SAVEt_FREEOP */
+ 1, /* SAVEt_FREEPV */
+ 1, /* SAVEt_FREESV */
+ 1, /* SAVEt_I16 */
+ 1, /* SAVEt_I32_SMALL */
+ 1, /* SAVEt_I8 */
+ 1, /* SAVEt_INT_SMALL */
+ 1, /* SAVEt_MORTALIZESV */
+ 1, /* SAVEt_NSTAB */
+ 1, /* SAVEt_OP */
+ 1, /* SAVEt_PARSER */
+ 1, /* SAVEt_STACK_POS */
+ 1, /* SAVEt_READONLY_OFF */
+ 1, /* SAVEt_FREEPADNAME */
+ 1, /* SAVEt_STRLEN_SMALL */
+ 1, /* SAVEt_FREERCPV */
+ 2, /* SAVEt_AV */
+ 2, /* SAVEt_DESTRUCTOR */
+ 2, /* SAVEt_DESTRUCTOR_X */
+ 2, /* SAVEt_GENERIC_PVREF */
+ 2, /* SAVEt_GENERIC_SVREF */
+ 2, /* SAVEt_GP */
+ 2, /* SAVEt_GVSV */
+ 2, /* SAVEt_HINTS */
+ 2, /* SAVEt_HPTR */
+ 2, /* SAVEt_HV */
+ 2, /* SAVEt_I32 */
+ 2, /* SAVEt_INT */
+ 2, /* SAVEt_ITEM */
+ 2, /* SAVEt_IV */
+ 2, /* SAVEt_LONG */
+ 2, /* SAVEt_PPTR */
+ 2, /* SAVEt_SAVESWITCHSTACK */
+ 2, /* SAVEt_SHARED_PVREF */
+ 2, /* SAVEt_SPTR */
+ 2, /* SAVEt_STRLEN */
+ 2, /* SAVEt_SV */
+ 2, /* SAVEt_SVREF */
+ 2, /* SAVEt_VPTR */
+ 2, /* SAVEt_ADELETE */
+ 2, /* SAVEt_APTR */
+ 2, /* SAVEt_RCPV */
+ 3, /* SAVEt_HELEM */
+ 3, /* SAVEt_PADSV_AND_MORTALIZE */
+ 3, /* SAVEt_SET_SVFLAGS */
+ 3, /* SAVEt_GVSLOT */
+ 3, /* SAVEt_AELEM */
+ 3, /* SAVEt_DELETE */
+ 3 /* SAVEt_HINTS_HH */
+};
+
+#define MAX_SAVEt 58
+
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/sv.h b/Master/tlpkg/tlperl/lib/CORE/sv.h
index 240986ca33c..2cd4ea2593c 100644
--- a/Master/tlpkg/tlperl/lib/CORE/sv.h
+++ b/Master/tlpkg/tlperl/lib/CORE/sv.h
@@ -38,9 +38,11 @@ The types are:
SVt_PVCV
SVt_PVFM
SVt_PVIO
+ SVt_PVOBJ
These are most easily explained from the bottom up.
+C<SVt_PVOBJ> is for object instances of the new `use feature 'class'` kind.
C<SVt_PVIO> is for I/O objects, C<SVt_PVFM> for formats, C<SVt_PVCV> for
subroutines, C<SVt_PVHV> for hashes and C<SVt_PVAV> for arrays.
@@ -67,10 +69,13 @@ PVMG, we save memory by allocating smaller structs when possible. All the
other types are just simpler forms of C<SVt_PVMG>, with fewer internal fields.
C<SVt_NULL> can only hold undef. C<SVt_IV> can hold undef, an integer, or a
reference. (C<SVt_RV> is an alias for C<SVt_IV>, which exists for backward
-compatibility.) C<SVt_NV> can hold any of those or a double. C<SVt_PV> can only
-hold C<undef> or a string. C<SVt_PVIV> is a superset of C<SVt_PV> and C<SVt_IV>.
-C<SVt_PVNV> is similar. C<SVt_PVMG> can hold anything C<SVt_PVNV> can hold, but it
-can, but does not have to, be blessed or magical.
+compatibility.) C<SVt_NV> can hold undef or a double. (In builds that support
+headless NVs, these could also hold a reference via a suitable offset, in the
+same way that SVt_IV does, but this is not currently supported and seems to
+be a rare use case.) C<SVt_PV> can hold C<undef>, a string, or a reference.
+C<SVt_PVIV> is a superset of C<SVt_PV> and C<SVt_IV>. C<SVt_PVNV> is a
+superset of C<SVt_PV> and C<SVt_NV>. C<SVt_PVMG> can hold anything C<SVt_PVNV>
+can hold, but it may also be blessed or magical.
=for apidoc AmnU||SVt_NULL
Type flag for scalars. See L</svtype>.
@@ -120,6 +125,9 @@ Type flag for formats. See L</svtype>.
=for apidoc AmnU||SVt_PVIO
Type flag for I/O objects. See L</svtype>.
+=for apidoc AmnUx||SVt_PVOBJ
+Type flag for object instances. See L</svtype>.
+
=cut
These are ordered so that the simpler types have a lower value; SvUPGRADE
@@ -130,35 +138,36 @@ Type flag for I/O objects. See L</svtype>.
typedef enum {
- SVt_NULL, /* 0 */
- /* BIND was here, before INVLIST replaced it. */
- SVt_IV, /* 1 */
- SVt_NV, /* 2 */
- /* RV was here, before it was merged with IV. */
- SVt_PV, /* 3 */
- SVt_INVLIST, /* 4, implemented as a PV */
- SVt_PVIV, /* 5 */
- SVt_PVNV, /* 6 */
- SVt_PVMG, /* 7 */
- SVt_REGEXP, /* 8 */
- /* PVBM was here, before BIND replaced it. */
- SVt_PVGV, /* 9 */
- SVt_PVLV, /* 10 */
- SVt_PVAV, /* 11 */
- SVt_PVHV, /* 12 */
- SVt_PVCV, /* 13 */
- SVt_PVFM, /* 14 */
- SVt_PVIO, /* 15 */
- /* 16-31: Unused, though one should be reserved for a
+ SVt_NULL, /* 0 */
+ /* BIND was here, before INVLIST replaced it. */
+ SVt_IV, /* 1 */
+ SVt_NV, /* 2 */
+ /* RV was here, before it was merged with IV. */
+ SVt_PV, /* 3 */
+ SVt_INVLIST, /* 4, implemented as a PV */
+ SVt_PVIV, /* 5 */
+ SVt_PVNV, /* 6 */
+ SVt_PVMG, /* 7 */
+ SVt_REGEXP, /* 8 */
+ /* PVBM was here, before BIND replaced it. */
+ SVt_PVGV, /* 9 */
+ SVt_PVLV, /* 10 */
+ SVt_PVAV, /* 11 */
+ SVt_PVHV, /* 12 */
+ SVt_PVCV, /* 13 */
+ SVt_PVFM, /* 14 */
+ SVt_PVIO, /* 15 */
+ SVt_PVOBJ, /* 16 */
+ /* 17-31: Unused, though one should be reserved for a
* freed sv, if the other 3 bits below the flags ones
* get allocated */
- SVt_LAST /* keep last in enum. used to size arrays */
+ SVt_LAST /* keep last in enum. used to size arrays */
} svtype;
/* *** any alterations to the SV types above need to be reflected in
* SVt_MASK and the various PL_valid_types_* tables. As of this writing those
* tables are in perl.h. There are also two affected names tables in dump.c,
- * one in B.xs, and 'bodies_by_type[]' in sv.c.
+ * one in B.xs, and 'bodies_by_type[]' in sv_inline.h.
*
* The bits that match 0xe0 are CURRENTLY UNUSED
* The bits above that are for flags, like SVf_IOK */
@@ -173,12 +182,15 @@ typedef enum {
# define SVt_RV SVt_IV
#endif
-/* There is collusion here with sv_clear - sv_clear exits early for SVt_NULL
- so never reaches the clause at the end that uses sv_type_details->body_size
- to determine whether to call safefree(). Hence body_size can be set
- non-zero to record the size of HEs, without fear of bogus frees. */
+/* The array of arena roots for SV bodies is indexed by SvTYPE. SVt_NULL doesn't
+ * use a body, so that arena root is re-used for HEs. SVt_IV also doesn't, so
+ * that arena root is used for HVs with struct xpvhv_aux. */
+
#if defined(PERL_IN_HV_C) || defined(PERL_IN_XS_APITEST)
-#define HE_SVSLOT SVt_NULL
+# define HE_ARENA_ROOT_IX SVt_NULL
+#endif
+#if defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C)
+# define HVAUX_ARENA_ROOT_IX SVt_IV
#endif
#ifdef PERL_IN_SV_C
# define SVt_FIRST SVt_NULL /* the type of SV that new_SV() in sv.c returns */
@@ -206,15 +218,15 @@ typedef struct hek HEK;
#define _SV_HEAD_UNION \
union { \
- char* svu_pv; /* pointer to malloced string */ \
- IV svu_iv; \
- UV svu_uv; \
- _NV_BODYLESS_UNION \
- SV* svu_rv; /* pointer to another SV */ \
- SV** svu_array; \
- HE** svu_hash; \
- GP* svu_gp; \
- PerlIO *svu_fp; \
+ char* svu_pv; /* pointer to malloced string */ \
+ IV svu_iv; \
+ UV svu_uv; \
+ _NV_BODYLESS_UNION \
+ SV* svu_rv; /* pointer to another SV */ \
+ SV** svu_array; \
+ HE** svu_hash; \
+ GP* svu_gp; \
+ PerlIO *svu_fp; \
} sv_u \
_SV_HEAD_DEBUG
@@ -270,6 +282,11 @@ struct invlist {
_SV_HEAD_UNION;
};
+struct object {
+ _SV_HEAD(XPVOBJ*); /* pointer to xobject body */
+ _SV_HEAD_UNION;
+};
+
#undef _SV_HEAD
#undef _SV_HEAD_UNION /* ensure no pollution */
@@ -280,14 +297,14 @@ struct invlist {
Returns the value of the object's reference count. Exposed
to perl code via Internals::SvREFCNT().
-=for apidoc SvREFCNT_inc
-=for apidoc_item SvREFCNT_inc_NN
-=for apidoc_item SvREFCNT_inc_void
-=for apidoc_item |void|SvREFCNT_inc_void_NN|SV* sv
-=for apidoc_item |SV*|SvREFCNT_inc_simple|SV* sv
-=for apidoc_item |SV*|SvREFCNT_inc_simple_NN|SV* sv
+=for apidoc SvREFCNT_inc
+=for apidoc_item SvREFCNT_inc_NN
+=for apidoc_item |SV* |SvREFCNT_inc_simple|SV* sv
+=for apidoc_item |SV* |SvREFCNT_inc_simple_NN|SV* sv
=for apidoc_item |void|SvREFCNT_inc_simple_void|SV* sv
=for apidoc_item |void|SvREFCNT_inc_simple_void_NN|SV* sv
+=for apidoc_item SvREFCNT_inc_void
+=for apidoc_item |void|SvREFCNT_inc_void_NN|SV* sv
These all increment the reference count of the given SV.
The ones without C<void> in their names return the SV.
@@ -319,13 +336,30 @@ effects and you don't need the return value.
C<SvREFCNT_inc_simple_void_NN> can only be used with expressions without side
effects, you don't need the return value, and you know C<sv> is not C<NULL>.
-=for apidoc SvREFCNT_dec
+=for apidoc SvREFCNT_dec
+=for apidoc_item SvREFCNT_dec_set_NULL
+=for apidoc_item SvREFCNT_dec_ret_NULL
=for apidoc_item SvREFCNT_dec_NN
These decrement the reference count of the given SV.
C<SvREFCNT_dec_NN> may only be used when C<sv> is known to not be C<NULL>.
+The function C<SvREFCNT_dec_ret_NULL()> is identical to the
+C<SvREFCNT_dec()> except it returns a NULL C<SV *>. It is used by
+C<SvREFCNT_dec_set_NULL()> which is a macro which will, when passed a
+non-NULL argument, decrement the reference count of its argument and
+then set it to NULL. You can replace code of the following form:
+
+ if (sv) {
+ SvREFCNT_dec_NN(sv);
+ sv = NULL;
+ }
+
+with
+
+ SvREFCNT_dec_set_NULL(sv);
+
=for apidoc Am|svtype|SvTYPE|SV* sv
Returns the type of the SV. See C<L</svtype>>.
@@ -346,12 +380,22 @@ perform the upgrade if necessary. See C<L</svtype>>.
#define SvREFCNT_inc_void(sv) Perl_SvREFCNT_inc_void(MUTABLE_SV(sv))
/* These guys don't need the curly blocks */
-#define SvREFCNT_inc_simple_void(sv) STMT_START { if (sv) SvREFCNT(sv)++; } STMT_END
+#define SvREFCNT_inc_simple_void(sv) \
+ STMT_START { \
+ SV * sv_ = MUTABLE_SV(sv); \
+ if (sv_) \
+ SvREFCNT(sv_)++; \
+ } STMT_END
+
#define SvREFCNT_inc_simple_NN(sv) (++(SvREFCNT(sv)),MUTABLE_SV(sv))
#define SvREFCNT_inc_void_NN(sv) (void)(++SvREFCNT(MUTABLE_SV(sv)))
#define SvREFCNT_inc_simple_void_NN(sv) (void)(++SvREFCNT(MUTABLE_SV(sv)))
#define SvREFCNT_dec(sv) Perl_SvREFCNT_dec(aTHX_ MUTABLE_SV(sv))
+#define SvREFCNT_dec_set_NULL(sv) \
+ STMT_START { \
+ sv = Perl_SvREFCNT_dec_ret_NULL(aTHX_ MUTABLE_SV(sv)); \
+ } STMT_END
#define SvREFCNT_dec_NN(sv) Perl_SvREFCNT_dec_NN(aTHX_ MUTABLE_SV(sv))
#define SVTYPEMASK 0xff
@@ -379,9 +423,9 @@ perform the upgrade if necessary. See C<L</svtype>>.
#define SVphv_CLONEABLE SVp_SCREAM /* PVHV (stashes) clone its objects */
#define SVpgv_GP SVp_SCREAM /* GV has a valid GP */
#define SVprv_PCS_IMPORTED SVp_SCREAM /* RV is a proxy for a constant
- subroutine in another package. Set the
- GvIMPORTED_CV_on() if it needs to be
- expanded to a real GV */
+ subroutine in another package. Set the
+ GvIMPORTED_CV_on() if it needs to be
+ expanded to a real GV */
/* SVf_PROTECT is what SVf_READONLY should have been: i.e. modifying
* this SV is completely illegal. However, SVf_READONLY (via
@@ -394,7 +438,7 @@ perform the upgrade if necessary. See C<L</svtype>>.
#define SVf_PROTECT 0x00010000 /* very read-only */
#define SVs_PADTMP 0x00020000 /* in use as tmp */
#define SVs_PADSTALE 0x00040000 /* lexical has gone out of scope;
- only used when !PADTMP */
+ only used when !PADTMP */
#define SVs_TEMP 0x00080000 /* mortal (implies string is stealable) */
#define SVs_OBJECT 0x00100000 /* is "blessed" */
#define SVs_GMG 0x00200000 /* has magical get method */
@@ -402,10 +446,10 @@ perform the upgrade if necessary. See C<L</svtype>>.
#define SVs_RMG 0x00800000 /* has random magical methods */
#define SVf_FAKE 0x01000000 /* 0: glob is just a copy
- 1: SV head arena wasn't malloc()ed
- 2: For PVCV, whether CvUNIQUE(cv)
- refers to an eval or once only
- [CvEVAL(cv), CvSPECIAL(cv)]
+ 1: SV head arena wasn't malloc()ed
+ 2: For PVCV, whether CvUNIQUE(cv)
+ refers to an eval or once only
+ [CvEVAL(cv), CvSPECIAL(cv)]
3: HV: informally reserved by DAPM
for vtables
4: Together with other flags (or
@@ -413,13 +457,12 @@ perform the upgrade if necessary. See C<L</svtype>>.
including PVLV-as-regex. See
isREGEXP().
*/
-#define SVf_OOK 0x02000000 /* has valid offset value. For a PVHV this
- means that a hv_aux struct is present
- after the main array */
+#define SVf_OOK 0x02000000 /* has valid offset value */
+#define SVphv_HasAUX SVf_OOK /* PVHV has an additional hv_aux struct */
#define SVf_BREAK 0x04000000 /* refcnt is artificially low - used by
- SVs in final arena cleanup.
- Set in S_regtry on PL_reg_curpm, so that
- perl_destruct will skip it.
+ SVs in final arena cleanup.
+ Set in S_regtry on PL_reg_curpm, so that
+ perl_destruct will skip it.
Used for mark and sweep by OP_AASSIGN
*/
#define SVf_READONLY 0x08000000 /* may not be modified */
@@ -428,10 +471,10 @@ perform the upgrade if necessary. See C<L</svtype>>.
#define SVf_THINKFIRST (SVf_READONLY|SVf_PROTECT|SVf_ROK|SVf_FAKE \
- |SVs_RMG|SVf_IsCOW)
+ |SVs_RMG|SVf_IsCOW)
#define SVf_OK (SVf_IOK|SVf_NOK|SVf_POK|SVf_ROK| \
- SVp_IOK|SVp_NOK|SVp_POK|SVpgv_GP)
+ SVp_IOK|SVp_NOK|SVp_POK|SVpgv_GP)
#define PRIVSHIFT 4 /* (SVp_?OK >> PRIVSHIFT) == SVf_?OK */
@@ -443,14 +486,14 @@ perform the upgrade if necessary. See C<L</svtype>>.
*/
#define SVf_AMAGIC 0x10000000 /* has magical overloaded methods */
#define SVf_IsCOW 0x10000000 /* copy on write (shared hash key if
- SvLEN == 0) */
+ SvLEN == 0) */
/* Ensure this value does not clash with the GV_ADD* flags in gv.h, or the
CV_CKPROTO_* flags in op.c, or the padadd_* flags in pad.h: */
#define SVf_UTF8 0x20000000 /* SvPV is UTF-8 encoded
- This is also set on RVs whose overloaded
- stringification is UTF-8. This might
- only happen as a side effect of SvPV() */
+ This is also set on RVs whose overloaded
+ stringification is UTF-8. This might
+ only happen as a side effect of SvPV() */
/* PVHV */
#define SVphv_SHAREKEYS 0x20000000 /* PVHV keys live on shared string table */
@@ -462,6 +505,8 @@ perform the upgrade if necessary. See C<L</svtype>>.
/* Some private flags. */
+/* scalar SVs with SVp_POK */
+#define SVppv_STATIC 0x40000000 /* PV is pointer to static const; must be set with SVf_IsCOW */
/* PVAV */
#define SVpav_REAL 0x40000000 /* free old entries */
/* PVHV */
@@ -482,9 +527,9 @@ perform the upgrade if necessary. See C<L</svtype>>.
union _xmgu xmg_u; \
STRLEN xpv_cur; /* length of svu_pv as a C string */ \
union { \
- STRLEN xpvlenu_len; /* allocated size */ \
+ STRLEN xpvlenu_len; /* allocated size */ \
struct regexp* xpvlenu_rx; /* regex when SV body is XPVLV */ \
- } xpv_len_u
+ } xpv_len_u
#define xpv_len xpv_len_u.xpvlenu_len
@@ -544,13 +589,13 @@ struct xpvlv {
union _xivu xiv_u;
union _xnvu xnv_u;
union {
- STRLEN xlvu_targoff;
- SSize_t xlvu_stargoff;
+ STRLEN xlvu_targoff;
+ SSize_t xlvu_stargoff;
} xlv_targoff_u;
STRLEN xlv_targlen;
SV* xlv_targ;
char xlv_type; /* k=keys .=pos x=substr v=vec /=join/re
- * y=alem/helem/iter t=tie T=tied HE */
+ * y=alem/helem/iter t=tie T=tied HE */
char xlv_flags; /* 1 = negative offset 2 = negative len
4 = out of range (vec) */
};
@@ -582,26 +627,26 @@ typedef U32 cv_flags_t;
#define _XPVCV_COMMON \
HV * xcv_stash; \
union { \
- OP * xcv_start; \
- ANY xcv_xsubany; \
+ OP * xcv_start; \
+ ANY xcv_xsubany; \
} xcv_start_u; \
union { \
- OP * xcv_root; \
- void (*xcv_xsub) (pTHX_ CV*); \
+ OP * xcv_root; \
+ void (*xcv_xsub) (pTHX_ CV*); \
} xcv_root_u; \
union { \
- GV * xcv_gv; \
- HEK * xcv_hek; \
+ GV * xcv_gv; \
+ HEK * xcv_hek; \
} xcv_gv_u; \
char * xcv_file; \
union { \
- PADLIST * xcv_padlist; \
- void * xcv_hscxt; \
+ PADLIST * xcv_padlist; \
+ void * xcv_hscxt; \
} xcv_padlist_u; \
CV * xcv_outside; \
U32 xcv_outside_seq; /* the COP sequence (at the point of our \
- * compilation) in the lexically enclosing \
- * sub */ \
+ * compilation) in the lexically enclosing \
+ * sub */ \
cv_flags_t xcv_flags; \
I32 xcv_depth /* >= 2 indicates recursive call */
@@ -628,8 +673,8 @@ struct xpvio {
* to hang any IO disciplines to.
*/
union {
- DIR * xiou_dirp; /* for opendir, readdir, etc */
- void * xiou_any; /* for alignment */
+ DIR * xiou_dirp; /* for opendir, readdir, etc */
+ void * xiou_any; /* for alignment */
} xio_dirpu;
/* IV xio_lines is now in IVX $. */
IV xio_page; /* $% */
@@ -655,7 +700,19 @@ struct xpvio {
#define IOf_UNTAINT 16 /* consider this fp (and its data) "safe" */
#define IOf_NOLINE 32 /* slurped a pseudo-line from empty file */
#define IOf_FAKE_DIRP 64 /* xio_dirp is fake (source filters kludge)
- Also, when this is set, SvPVX() is valid */
+ Also, when this is set, SvPVX() is valid */
+
+struct xobject {
+ HV* xmg_stash;
+ union _xmgu xmg_u;
+ SSize_t xobject_maxfield;
+ SSize_t xobject_iter_sv_at; /* this is only used by Perl_sv_clear() */
+ SV** xobject_fields;
+};
+
+#define ObjectMAXFIELD(inst) ((XPVOBJ *)SvANY(inst))->xobject_maxfield
+#define ObjectITERSVAT(inst) ((XPVOBJ *)SvANY(inst))->xobject_iter_sv_at
+#define ObjectFIELDS(inst) ((XPVOBJ *)SvANY(inst))->xobject_fields
/* The following macros define implementation-independent predicates on SVs. */
@@ -741,6 +798,55 @@ Unsets the PV status of an SV.
Tells an SV that it is a string and disables all other C<OK> bits.
Will also turn off the UTF-8 status.
+=for apidoc Am|U32|SvBoolFlagsOK|SV* sv
+Returns a bool indicating whether the SV has the right flags set such
+that it is safe to call C<BOOL_INTERNALS_sv_isbool()> or
+C<BOOL_INTERNALS_sv_isbool_true()> or
+C<BOOL_INTERNALS_sv_isbool_false()>. Currently equivalent to
+C<SvIandPOK(sv)> or C<SvIOK(sv) && SvPOK(sv)>. Serialization may want to
+unroll this check. If so you are strongly recommended to add code like
+C<assert(SvBoolFlagsOK(sv));> B<before> calling using any of the
+BOOL_INTERNALS macros.
+
+=for apidoc Am|U32|SvIandPOK|SV* sv
+Returns a bool indicating whether the SV is both C<SvPOK()> and
+C<SvIOK()> at the same time. Equivalent to C<SvIOK(sv) && SvPOK(sv)> but
+more efficient.
+
+=for apidoc Am|void|SvIandPOK_on|SV* sv
+Tells an SV that is a string and a number in one operation. Equivalent
+to C<SvIOK_on(sv); SvPOK_on(sv);> but more efficient.
+
+=for apidoc Am|void|SvIandPOK_off|SV* sv
+Unsets the PV and IV status of an SV in one operation. Equivalent to
+C<SvIOK_off(sv); SvPK_off(v);> but more efficient.
+
+=for apidoc Am|bool|BOOL_INTERNALS_sv_isbool|SV* sv
+Checks if a C<SvBoolFlagsOK()> sv is a bool. B<Note> that it is the
+caller's responsibility to ensure that the sv is C<SvBoolFlagsOK()> before
+calling this. This is only useful in specialized logic like
+serialization code where performance is critical and the flags have
+already been checked to be correct. Almost always you should be using
+C<sv_isbool(sv)> instead.
+
+=for apidoc Am|bool|BOOL_INTERNALS_sv_isbool_true|SV* sv
+Checks if a C<SvBoolFlagsOK()> sv is a true bool. B<Note> that it is
+the caller's responsibility to ensure that the sv is C<SvBoolFlagsOK()>
+before calling this. This is only useful in specialized logic like
+serialization code where performance is critical and the flags have
+already been checked to be correct. This is B<NOT> what you should use
+to check if an SV is "true", for that you should be using
+C<SvTRUE(sv)> instead.
+
+=for apidoc Am|bool|BOOL_INTERNALS_sv_isbool_false|SV* sv
+Checks if a C<SvBoolFlagsOK()> sv is a false bool. B<Note> that it is
+the caller's responsibility to ensure that the sv is C<SvBoolFlagsOK()>
+before calling this. This is only useful in specialized logic like
+serialization code where performance is critical and the flags have
+already been checked to be correct. This is B<NOT> what you should use
+to check if an SV is "false", for that you should be using
+C<!SvTRUE(sv)> instead.
+
=for apidoc Am|bool|SvVOK|SV* sv
Returns a boolean indicating whether the SV contains a v-string.
@@ -779,10 +885,10 @@ This is an unnecessary synonym for L</SvUVX>
Returns the raw value in the SV's NV slot, without checks or conversions.
Only use when you are sure C<SvNOK> is true. See also C<L</SvNV>>.
-=for apidoc Am|char*|SvPVX|SV* sv
-=for apidoc_item |char*|SvPVXx|SV* sv
+=for apidoc Am |char* |SvPVX|SV* sv
=for apidoc_item |const char*|SvPVX_const|SV* sv
-=for apidoc_item |char*|SvPVX_mutable|SV* sv
+=for apidoc_item |char* |SvPVX_mutable|SV* sv
+=for apidoc_item |char* |SvPVXx|SV* sv
These return a pointer to the physical string in the SV. The SV must contain a
string. Prior to 5.9.3 it is not safe to execute these unless the SV's
@@ -824,7 +930,7 @@ Returns the stash of the SV.
=for apidoc Am|void|SvIV_set|SV* sv|IV val
Set the value of the IV pointer in sv to val. It is possible to perform
the same function of this macro with an lvalue assignment to C<SvIVX>.
-With future Perls, however, it will be more efficient to use
+With future Perls, however, it will be more efficient to use
C<SvIV_set> instead of the lvalue assignment to C<SvIVX>.
=for apidoc Am|void|SvNV_set|SV* sv|NV val
@@ -869,45 +975,59 @@ Set the size of the string buffer for the SV. See C<L</SvLEN>>.
#define SvNIOK(sv) (SvFLAGS(sv) & (SVf_IOK|SVf_NOK))
#define SvNIOKp(sv) (SvFLAGS(sv) & (SVp_IOK|SVp_NOK))
#define SvNIOK_off(sv) (SvFLAGS(sv) &= ~(SVf_IOK|SVf_NOK| \
- SVp_IOK|SVp_NOK|SVf_IVisUV))
+ SVp_IOK|SVp_NOK|SVf_IVisUV))
#define assert_not_ROK(sv) assert_(!SvROK(sv) || !SvRV(sv))
#define assert_not_glob(sv) assert_(!isGV_with_GP(sv))
#define SvOK(sv) (SvFLAGS(sv) & SVf_OK)
#define SvOK_off(sv) (assert_not_ROK(sv) assert_not_glob(sv) \
- SvFLAGS(sv) &= ~(SVf_OK| \
- SVf_IVisUV|SVf_UTF8), \
- SvOOK_off(sv))
+ SvFLAGS(sv) &= ~(SVf_OK| \
+ SVf_IVisUV|SVf_UTF8), \
+ SvOOK_off(sv))
#define SvOK_off_exc_UV(sv) (assert_not_ROK(sv) \
- SvFLAGS(sv) &= ~(SVf_OK| \
- SVf_UTF8), \
- SvOOK_off(sv))
+ SvFLAGS(sv) &= ~(SVf_OK| \
+ SVf_UTF8), \
+ SvOOK_off(sv))
#define SvOKp(sv) (SvFLAGS(sv) & (SVp_IOK|SVp_NOK|SVp_POK))
#define SvIOKp(sv) (SvFLAGS(sv) & SVp_IOK)
#define SvIOKp_on(sv) (assert_not_glob(sv) \
- SvFLAGS(sv) |= SVp_IOK)
+ SvFLAGS(sv) |= SVp_IOK)
#define SvNOKp(sv) (SvFLAGS(sv) & SVp_NOK)
#define SvNOKp_on(sv) (assert_not_glob(sv) SvFLAGS(sv) |= SVp_NOK)
#define SvPOKp(sv) (SvFLAGS(sv) & SVp_POK)
#define SvPOKp_on(sv) (assert_not_ROK(sv) assert_not_glob(sv) \
- SvFLAGS(sv) |= SVp_POK)
+ SvFLAGS(sv) |= SVp_POK)
#define SvIOK(sv) (SvFLAGS(sv) & SVf_IOK)
#define SvIOK_on(sv) (assert_not_glob(sv) \
- SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
+ SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
#define SvIOK_off(sv) (SvFLAGS(sv) &= ~(SVf_IOK|SVp_IOK|SVf_IVisUV))
#define SvIOK_only(sv) (SvOK_off(sv), \
- SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
+ SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
#define SvIOK_only_UV(sv) (assert_not_glob(sv) SvOK_off_exc_UV(sv), \
- SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
+ SvFLAGS(sv) |= (SVf_IOK|SVp_IOK))
#define SvIOK_UV(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV)) \
- == (SVf_IOK|SVf_IVisUV))
+ == (SVf_IOK|SVf_IVisUV))
#define SvUOK(sv) SvIOK_UV(sv)
#define SvIOK_notUV(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_IVisUV)) \
- == SVf_IOK)
+ == SVf_IOK)
+
+#define SvIandPOK(sv) ((SvFLAGS(sv) & (SVf_IOK|SVf_POK)) == (SVf_IOK|SVf_POK))
+#define SvIandPOK_on(sv) (assert_not_glob(sv) \
+ (SvFLAGS(sv) |= (SVf_IOK|SVp_IOK|SVf_POK|SVp_POK)))
+#define SvIandPOK_off(sv) (SvFLAGS(sv) &= ~(SVf_IOK|SVp_IOK|SVf_IVisUV|SVf_POK|SVp_POK))
+
+#define SvBoolFlagsOK(sv) SvIandPOK(sv)
+
+#define BOOL_INTERNALS_sv_isbool(sv) (SvIsCOW_static(sv) && \
+ (SvPVX_const(sv) == PL_Yes || SvPVX_const(sv) == PL_No))
+#define BOOL_INTERNALS_sv_isbool_true(sv) (SvIsCOW_static(sv) && \
+ (SvPVX_const(sv) == PL_Yes))
+#define BOOL_INTERNALS_sv_isbool_false(sv) (SvIsCOW_static(sv) && \
+ (SvPVX_const(sv) == PL_No))
#define SvIsUV(sv) (SvFLAGS(sv) & SVf_IVisUV)
#define SvIsUV_on(sv) (SvFLAGS(sv) |= SVf_IVisUV)
@@ -915,10 +1035,10 @@ Set the size of the string buffer for the SV. See C<L</SvLEN>>.
#define SvNOK(sv) (SvFLAGS(sv) & SVf_NOK)
#define SvNOK_on(sv) (assert_not_glob(sv) \
- SvFLAGS(sv) |= (SVf_NOK|SVp_NOK))
+ SvFLAGS(sv) |= (SVf_NOK|SVp_NOK))
#define SvNOK_off(sv) (SvFLAGS(sv) &= ~(SVf_NOK|SVp_NOK))
#define SvNOK_only(sv) (SvOK_off(sv), \
- SvFLAGS(sv) |= (SVf_NOK|SVp_NOK))
+ SvFLAGS(sv) |= (SVf_NOK|SVp_NOK))
/*
=for apidoc Am|U32|SvUTF8|SV* sv
@@ -953,19 +1073,19 @@ in gv.h: */
#define SvPOK(sv) (SvFLAGS(sv) & SVf_POK)
#define SvPOK_on(sv) (assert_not_ROK(sv) assert_not_glob(sv) \
- SvFLAGS(sv) |= (SVf_POK|SVp_POK))
+ SvFLAGS(sv) |= (SVf_POK|SVp_POK))
#define SvPOK_off(sv) (SvFLAGS(sv) &= ~(SVf_POK|SVp_POK))
#define SvPOK_only(sv) (assert_not_ROK(sv) assert_not_glob(sv) \
- SvFLAGS(sv) &= ~(SVf_OK| \
- SVf_IVisUV|SVf_UTF8), \
- SvFLAGS(sv) |= (SVf_POK|SVp_POK))
+ SvFLAGS(sv) &= ~(SVf_OK| \
+ SVf_IVisUV|SVf_UTF8), \
+ SvFLAGS(sv) |= (SVf_POK|SVp_POK))
#define SvPOK_only_UTF8(sv) (assert_not_ROK(sv) assert_not_glob(sv) \
- SvFLAGS(sv) &= ~(SVf_OK| \
- SVf_IVisUV), \
- SvFLAGS(sv) |= (SVf_POK|SVp_POK))
+ SvFLAGS(sv) &= ~(SVf_OK| \
+ SVf_IVisUV), \
+ SvFLAGS(sv) |= (SVf_POK|SVp_POK))
#define SvVOK(sv) (SvMAGICAL(sv) \
- && mg_find(sv,PERL_MAGIC_vstring))
+ && mg_find(sv,PERL_MAGIC_vstring))
/*
=for apidoc Am|MAGIC*|SvVSTRING_mg|SV * sv
@@ -974,7 +1094,7 @@ Returns the vstring magic, or NULL if none
=cut
*/
#define SvVSTRING_mg(sv) (SvMAGICAL(sv) \
- ? mg_find(sv,PERL_MAGIC_vstring) : NULL)
+ ? mg_find(sv,PERL_MAGIC_vstring) : NULL)
#define SvOOK(sv) (SvFLAGS(sv) & SVf_OOK)
#define SvOOK_on(sv) (SvFLAGS(sv) |= SVf_OOK)
@@ -1014,8 +1134,17 @@ Remove any string offset.
#define SvRMAGICAL_on(sv) (SvFLAGS(sv) |= SVs_RMG)
#define SvRMAGICAL_off(sv) (SvFLAGS(sv) &= ~SVs_RMG)
+/*
+=for apidoc Am|bool|SvAMAGIC|SV * sv
+
+Returns a boolean as to whether C<sv> has overloading (active magic) enabled or
+not.
+
+=cut
+*/
+
#define SvAMAGIC(sv) (SvROK(sv) && SvOBJECT(SvRV(sv)) && \
- HvAMAGIC(SvSTASH(SvRV(sv))))
+ HvAMAGIC(SvSTASH(SvRV(sv))))
/* To be used on the stashes themselves: */
#define HvAMAGIC(hv) (SvFLAGS(hv) & SVf_AMAGIC)
@@ -1050,6 +1179,17 @@ Remove any string offset.
((SvFLAGS(sv) & (SVf_POK|SVf_UTF8|SVf_IOK|SVf_NOK|SVf_ROK|SVpgv_GP|SVf_THINKFIRST|SVs_GMG)) == SVf_POK)
/*
+=for apidoc Am|bool|SvIsBOOL|SV* sv
+
+Returns true if the SV is one of the special boolean constants (PL_sv_yes or
+PL_sv_no), or is a regular SV whose last assignment stored a copy of one.
+
+=cut
+*/
+
+#define SvIsBOOL(sv) Perl_sv_isbool(aTHX_ sv)
+
+/*
=for apidoc Am|U32|SvGAMAGIC|SV* sv
Returns true if the SV has get magic or
@@ -1066,17 +1206,17 @@ the scalar's value cannot change unless written to.
#define SvGAMAGIC(sv) (SvGMAGICAL(sv) || SvAMAGIC(sv))
#define Gv_AMG(stash) \
- (HvNAME(stash) && Gv_AMupdate(stash,FALSE) \
- ? 1 \
- : (HvAMAGIC_off(stash), 0))
+ (HvNAME(stash) && Gv_AMupdate(stash,FALSE) \
+ ? 1 \
+ : (HvAMAGIC_off(stash), 0))
#define SvWEAKREF(sv) ((SvFLAGS(sv) & (SVf_ROK|SVprv_WEAKREF)) \
- == (SVf_ROK|SVprv_WEAKREF))
+ == (SVf_ROK|SVprv_WEAKREF))
#define SvWEAKREF_on(sv) (SvFLAGS(sv) |= (SVf_ROK|SVprv_WEAKREF))
#define SvWEAKREF_off(sv) (SvFLAGS(sv) &= ~(SVf_ROK|SVprv_WEAKREF))
#define SvPCS_IMPORTED(sv) ((SvFLAGS(sv) & (SVf_ROK|SVprv_PCS_IMPORTED)) \
- == (SVf_ROK|SVprv_PCS_IMPORTED))
+ == (SVf_ROK|SVprv_PCS_IMPORTED))
#define SvPCS_IMPORTED_on(sv) (SvFLAGS(sv) |= (SVf_ROK|SVprv_PCS_IMPORTED))
#define SvPCS_IMPORTED_off(sv) (SvFLAGS(sv) &= ~(SVf_ROK|SVprv_PCS_IMPORTED))
@@ -1107,7 +1247,7 @@ C<sv_force_normal> does nothing.
#define SvTHINKFIRST(sv) (SvFLAGS(sv) & SVf_THINKFIRST)
#define SVs_PADMY 0
-#define SvPADMY(sv) !(SvFLAGS(sv) & SVs_PADTMP)
+#define SvPADMY(sv) (!(SvFLAGS(sv) & SVs_PADTMP))
#ifndef PERL_CORE
# define SvPADMY_on(sv) SvPADTMP_off(sv)
#endif
@@ -1166,12 +1306,12 @@ object type. Exposed to perl code via Internals::SvREADONLY().
#if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS)
# define SvTAIL(sv) ({ const SV *const _svtail = (const SV *)(sv); \
- assert(SvTYPE(_svtail) != SVt_PVAV); \
- assert(SvTYPE(_svtail) != SVt_PVHV); \
- assert(!(SvFLAGS(_svtail) & (SVf_NOK|SVp_NOK))); \
- assert(SvVALID(_svtail)); \
+ assert(SvTYPE(_svtail) != SVt_PVAV); \
+ assert(SvTYPE(_svtail) != SVt_PVHV); \
+ assert(!(SvFLAGS(_svtail) & (SVf_NOK|SVp_NOK))); \
+ assert(SvVALID(_svtail)); \
((XPVNV*)SvANY(_svtail))->xnv_u.xnv_bm_tail; \
- })
+ })
#else
# define SvTAIL(_svtail) (((XPVNV*)SvANY(_svtail))->xnv_u.xnv_bm_tail)
#endif
@@ -1219,76 +1359,76 @@ object type. Exposed to perl code via Internals::SvREADONLY().
# if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS)
/* These get expanded inside other macros that already use a variable _sv */
# define SvPVX(sv) \
- (*({ SV *const _svpvx = MUTABLE_SV(sv); \
- assert(PL_valid_types_PVX[SvTYPE(_svpvx) & SVt_MASK]); \
- assert(!isGV_with_GP(_svpvx)); \
- assert(!(SvTYPE(_svpvx) == SVt_PVIO \
- && !(IoFLAGS(_svpvx) & IOf_FAKE_DIRP))); \
- &((_svpvx)->sv_u.svu_pv); \
- }))
+ (*({ SV *const _svpvx = MUTABLE_SV(sv); \
+ assert(PL_valid_types_PVX[SvTYPE(_svpvx) & SVt_MASK]); \
+ assert(!isGV_with_GP(_svpvx)); \
+ assert(!(SvTYPE(_svpvx) == SVt_PVIO \
+ && !(IoFLAGS(_svpvx) & IOf_FAKE_DIRP))); \
+ &((_svpvx)->sv_u.svu_pv); \
+ }))
# ifdef PERL_CORE
# define SvCUR(sv) \
- ({ const SV *const _svcur = (const SV *)(sv); \
- assert(PL_valid_types_PVX[SvTYPE(_svcur) & SVt_MASK]); \
- assert(!isGV_with_GP(_svcur)); \
- assert(!(SvTYPE(_svcur) == SVt_PVIO \
- && !(IoFLAGS(_svcur) & IOf_FAKE_DIRP))); \
- (((XPV*) MUTABLE_PTR(SvANY(_svcur)))->xpv_cur); \
- })
+ ({ const SV *const _svcur = (const SV *)(sv); \
+ assert(PL_valid_types_PVX[SvTYPE(_svcur) & SVt_MASK]); \
+ assert(!isGV_with_GP(_svcur)); \
+ assert(!(SvTYPE(_svcur) == SVt_PVIO \
+ && !(IoFLAGS(_svcur) & IOf_FAKE_DIRP))); \
+ (((XPV*) MUTABLE_PTR(SvANY(_svcur)))->xpv_cur); \
+ })
# else
# define SvCUR(sv) \
- (*({ const SV *const _svcur = (const SV *)(sv); \
- assert(PL_valid_types_PVX[SvTYPE(_svcur) & SVt_MASK]); \
- assert(!isGV_with_GP(_svcur)); \
- assert(!(SvTYPE(_svcur) == SVt_PVIO \
- && !(IoFLAGS(_svcur) & IOf_FAKE_DIRP))); \
- &(((XPV*) MUTABLE_PTR(SvANY(_svcur)))->xpv_cur); \
- }))
+ (*({ const SV *const _svcur = (const SV *)(sv); \
+ assert(PL_valid_types_PVX[SvTYPE(_svcur) & SVt_MASK]); \
+ assert(!isGV_with_GP(_svcur)); \
+ assert(!(SvTYPE(_svcur) == SVt_PVIO \
+ && !(IoFLAGS(_svcur) & IOf_FAKE_DIRP))); \
+ &(((XPV*) MUTABLE_PTR(SvANY(_svcur)))->xpv_cur); \
+ }))
# endif
# define SvIVX(sv) \
- (*({ const SV *const _svivx = (const SV *)(sv); \
- assert(PL_valid_types_IVX[SvTYPE(_svivx) & SVt_MASK]); \
- assert(!isGV_with_GP(_svivx)); \
- &(((XPVIV*) MUTABLE_PTR(SvANY(_svivx)))->xiv_iv); \
- }))
+ (*({ const SV *const _svivx = (const SV *)(sv); \
+ assert(PL_valid_types_IVX[SvTYPE(_svivx) & SVt_MASK]); \
+ assert(!isGV_with_GP(_svivx)); \
+ &(((XPVIV*) MUTABLE_PTR(SvANY(_svivx)))->xiv_iv); \
+ }))
# define SvUVX(sv) \
- (*({ const SV *const _svuvx = (const SV *)(sv); \
- assert(PL_valid_types_IVX[SvTYPE(_svuvx) & SVt_MASK]); \
- assert(!isGV_with_GP(_svuvx)); \
- &(((XPVUV*) MUTABLE_PTR(SvANY(_svuvx)))->xuv_uv); \
- }))
+ (*({ const SV *const _svuvx = (const SV *)(sv); \
+ assert(PL_valid_types_IVX[SvTYPE(_svuvx) & SVt_MASK]); \
+ assert(!isGV_with_GP(_svuvx)); \
+ &(((XPVUV*) MUTABLE_PTR(SvANY(_svuvx)))->xuv_uv); \
+ }))
# define SvNVX(sv) \
- (*({ const SV *const _svnvx = (const SV *)(sv); \
- assert(PL_valid_types_NVX[SvTYPE(_svnvx) & SVt_MASK]); \
- assert(!isGV_with_GP(_svnvx)); \
- &(((XPVNV*) MUTABLE_PTR(SvANY(_svnvx)))->xnv_u.xnv_nv); \
- }))
+ (*({ const SV *const _svnvx = (const SV *)(sv); \
+ assert(PL_valid_types_NVX[SvTYPE(_svnvx) & SVt_MASK]); \
+ assert(!isGV_with_GP(_svnvx)); \
+ &(((XPVNV*) MUTABLE_PTR(SvANY(_svnvx)))->xnv_u.xnv_nv); \
+ }))
# define SvRV(sv) \
- (*({ SV *const _svrv = MUTABLE_SV(sv); \
- assert(PL_valid_types_RV[SvTYPE(_svrv) & SVt_MASK]); \
- assert(!isGV_with_GP(_svrv)); \
- assert(!(SvTYPE(_svrv) == SVt_PVIO \
- && !(IoFLAGS(_svrv) & IOf_FAKE_DIRP))); \
- &((_svrv)->sv_u.svu_rv); \
- }))
+ (*({ SV *const _svrv = MUTABLE_SV(sv); \
+ assert(PL_valid_types_RV[SvTYPE(_svrv) & SVt_MASK]); \
+ assert(!isGV_with_GP(_svrv)); \
+ assert(!(SvTYPE(_svrv) == SVt_PVIO \
+ && !(IoFLAGS(_svrv) & IOf_FAKE_DIRP))); \
+ &((_svrv)->sv_u.svu_rv); \
+ }))
# define SvRV_const(sv) \
- ({ const SV *const _svrv = (const SV *)(sv); \
- assert(PL_valid_types_RV[SvTYPE(_svrv) & SVt_MASK]); \
- assert(!isGV_with_GP(_svrv)); \
- assert(!(SvTYPE(_svrv) == SVt_PVIO \
- && !(IoFLAGS(_svrv) & IOf_FAKE_DIRP))); \
- (_svrv)->sv_u.svu_rv; \
- })
+ ({ const SV *const _svrv = (const SV *)(sv); \
+ assert(PL_valid_types_RV[SvTYPE(_svrv) & SVt_MASK]); \
+ assert(!isGV_with_GP(_svrv)); \
+ assert(!(SvTYPE(_svrv) == SVt_PVIO \
+ && !(IoFLAGS(_svrv) & IOf_FAKE_DIRP))); \
+ (_svrv)->sv_u.svu_rv; \
+ })
# define SvMAGIC(sv) \
- (*({ const SV *const _svmagic = (const SV *)(sv); \
- assert(SvTYPE(_svmagic) >= SVt_PVMG); \
- &(((XPVMG*) MUTABLE_PTR(SvANY(_svmagic)))->xmg_u.xmg_magic); \
- }))
+ (*({ const SV *const _svmagic = (const SV *)(sv); \
+ assert(SvTYPE(_svmagic) >= SVt_PVMG); \
+ &(((XPVMG*) MUTABLE_PTR(SvANY(_svmagic)))->xmg_u.xmg_magic); \
+ }))
# define SvSTASH(sv) \
- (*({ const SV *const _svstash = (const SV *)(sv); \
- assert(SvTYPE(_svstash) >= SVt_PVMG); \
- &(((XPVMG*) MUTABLE_PTR(SvANY(_svstash)))->xmg_stash); \
- }))
+ (*({ const SV *const _svstash = (const SV *)(sv); \
+ assert(SvTYPE(_svstash) >= SVt_PVMG); \
+ &(((XPVMG*) MUTABLE_PTR(SvANY(_svstash)))->xmg_stash); \
+ }))
# else /* Below is not DEBUGGING or can't use brace groups */
# define SvPVX(sv) ((sv)->sv_u.svu_pv)
# define SvCUR(sv) ((XPV*) SvANY(sv))->xpv_cur
@@ -1305,8 +1445,8 @@ object type. Exposed to perl code via Internals::SvREADONLY().
#ifndef PERL_POISON
/* Given that these two are new, there can't be any existing code using them
* as LVALUEs, so prevent that from happening */
-# define SvPVX_mutable(sv) (0 + (sv)->sv_u.svu_pv)
-# define SvPVX_const(sv) ((const char*)(0 + (sv)->sv_u.svu_pv))
+# define SvPVX_mutable(sv) ((char *)((sv)->sv_u.svu_pv))
+# define SvPVX_const(sv) ((const char*)((sv)->sv_u.svu_pv))
#else
/* Except for the poison code, which uses & to scribble over the pointer after
free() is called. */
@@ -1326,41 +1466,59 @@ object type. Exposed to perl code via Internals::SvREADONLY().
Not guaranteed to stay returning void */
/* Macro won't actually call sv_2iv if already IOK */
#define SvIV_please(sv) \
- STMT_START {if (!SvIOKp(sv) && (SvFLAGS(sv) & (SVf_NOK|SVf_POK))) \
- (void) SvIV(sv); } STMT_END
+ STMT_START { \
+ SV * sv_ = MUTABLE_SV(sv); \
+ if (!SvIOKp(sv_) && (SvFLAGS(sv_) & (SVf_NOK|SVf_POK))) \
+ (void) SvIV(sv_); \
+ } STMT_END
#define SvIV_please_nomg(sv) \
- (!(SvFLAGS(sv) & (SVf_IOK|SVp_IOK)) && (SvFLAGS(sv) & (SVf_NOK|SVf_POK)) \
- ? (sv_2iv_flags(sv, 0), SvIOK(sv)) \
- : SvIOK(sv))
+ (!(SvFLAGS(sv) & (SVf_IOK|SVp_IOK)) && (SvFLAGS(sv) & (SVf_NOK|SVf_POK)) \
+ ? (sv_2iv_flags(sv, 0), SvIOK(sv)) \
+ : SvIOK(sv))
+
#define SvIV_set(sv, val) \
- STMT_START { \
- assert(PL_valid_types_IV_set[SvTYPE(sv) & SVt_MASK]); \
- assert(!isGV_with_GP(sv)); \
- (((XPVIV*) SvANY(sv))->xiv_iv = (val)); } STMT_END
+ STMT_START { \
+ SV * sv_ = MUTABLE_SV(sv); \
+ assert(PL_valid_types_IV_set[SvTYPE(sv_) & SVt_MASK]); \
+ assert(!isGV_with_GP(sv_)); \
+ (((XPVIV*) SvANY(sv_))->xiv_iv = (val)); \
+ } STMT_END
+
#define SvNV_set(sv, val) \
- STMT_START { \
- assert(PL_valid_types_NV_set[SvTYPE(sv) & SVt_MASK]); \
- assert(!isGV_with_GP(sv)); \
- (((XPVNV*)SvANY(sv))->xnv_u.xnv_nv = (val)); } STMT_END
+ STMT_START { \
+ SV * sv_ = MUTABLE_SV(sv); \
+ assert(PL_valid_types_NV_set[SvTYPE(sv_) & SVt_MASK]); \
+ assert(!isGV_with_GP(sv_)); \
+ (((XPVNV*)SvANY(sv_))->xnv_u.xnv_nv = (val)); \
+ } STMT_END
+
#define SvPV_set(sv, val) \
- STMT_START { \
- assert(PL_valid_types_PVX[SvTYPE(sv) & SVt_MASK]); \
- assert(!isGV_with_GP(sv)); \
- assert(!(SvTYPE(sv) == SVt_PVIO \
- && !(IoFLAGS(sv) & IOf_FAKE_DIRP))); \
- ((sv)->sv_u.svu_pv = (val)); } STMT_END
+ STMT_START { \
+ SV * sv_ = MUTABLE_SV(sv); \
+ assert(PL_valid_types_PVX[SvTYPE(sv_) & SVt_MASK]); \
+ assert(!isGV_with_GP(sv_)); \
+ assert(!(SvTYPE(sv_) == SVt_PVIO \
+ && !(IoFLAGS(sv_) & IOf_FAKE_DIRP))); \
+ ((sv_)->sv_u.svu_pv = (val)); \
+ } STMT_END
+
#define SvUV_set(sv, val) \
- STMT_START { \
- assert(PL_valid_types_IV_set[SvTYPE(sv) & SVt_MASK]); \
- assert(!isGV_with_GP(sv)); \
- (((XPVUV*)SvANY(sv))->xuv_uv = (val)); } STMT_END
+ STMT_START { \
+ SV * sv_ = MUTABLE_SV(sv); \
+ assert(PL_valid_types_IV_set[SvTYPE(sv_) & SVt_MASK]); \
+ assert(!isGV_with_GP(sv_)); \
+ (((XPVUV*)SvANY(sv_))->xuv_uv = (val)); \
+ } STMT_END
+
#define SvRV_set(sv, val) \
STMT_START { \
- assert(PL_valid_types_RV[SvTYPE(sv) & SVt_MASK]); \
- assert(!isGV_with_GP(sv)); \
- assert(!(SvTYPE(sv) == SVt_PVIO \
- && !(IoFLAGS(sv) & IOf_FAKE_DIRP))); \
- ((sv)->sv_u.svu_rv = (val)); } STMT_END
+ SV * sv_ = MUTABLE_SV(sv); \
+ assert(PL_valid_types_RV[SvTYPE(sv_) & SVt_MASK]); \
+ assert(!isGV_with_GP(sv_)); \
+ assert(!(SvTYPE(sv_) == SVt_PVIO \
+ && !(IoFLAGS(sv_) & IOf_FAKE_DIRP))); \
+ ((sv_)->sv_u.svu_rv = (val)); \
+ } STMT_END
#define SvMAGIC_set(sv, val) \
STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
(((XPVMG*)SvANY(sv))->xmg_u.xmg_magic = (val)); } STMT_END
@@ -1368,28 +1526,28 @@ object type. Exposed to perl code via Internals::SvREADONLY().
STMT_START { assert(SvTYPE(sv) >= SVt_PVMG); \
(((XPVMG*) SvANY(sv))->xmg_stash = (val)); } STMT_END
#define SvCUR_set(sv, val) \
- STMT_START { \
- assert(PL_valid_types_PVX[SvTYPE(sv) & SVt_MASK]); \
- assert(!isGV_with_GP(sv)); \
- assert(!(SvTYPE(sv) == SVt_PVIO \
- && !(IoFLAGS(sv) & IOf_FAKE_DIRP))); \
- (((XPV*) SvANY(sv))->xpv_cur = (val)); } STMT_END
+ STMT_START { \
+ assert(PL_valid_types_PVX[SvTYPE(sv) & SVt_MASK]); \
+ assert(!isGV_with_GP(sv)); \
+ assert(!(SvTYPE(sv) == SVt_PVIO \
+ && !(IoFLAGS(sv) & IOf_FAKE_DIRP))); \
+ (((XPV*) SvANY(sv))->xpv_cur = (val)); } STMT_END
#define SvLEN_set(sv, val) \
- STMT_START { \
- assert(PL_valid_types_PVX[SvTYPE(sv) & SVt_MASK]); \
- assert(!isGV_with_GP(sv)); \
- assert(!(SvTYPE(sv) == SVt_PVIO \
- && !(IoFLAGS(sv) & IOf_FAKE_DIRP))); \
- (((XPV*) SvANY(sv))->xpv_len = (val)); } STMT_END
+ STMT_START { \
+ assert(PL_valid_types_PVX[SvTYPE(sv) & SVt_MASK]); \
+ assert(!isGV_with_GP(sv)); \
+ assert(!(SvTYPE(sv) == SVt_PVIO \
+ && !(IoFLAGS(sv) & IOf_FAKE_DIRP))); \
+ (((XPV*) SvANY(sv))->xpv_len = (val)); } STMT_END
#define SvEND_set(sv, val) \
- STMT_START { assert(SvTYPE(sv) >= SVt_PV); \
- SvCUR_set(sv, (val) - SvPVX(sv)); } STMT_END
+ STMT_START { assert(SvTYPE(sv) >= SVt_PV); \
+ SvCUR_set(sv, (val) - SvPVX(sv)); } STMT_END
/*
=for apidoc Am|void|SvPV_renew|SV* sv|STRLEN len
Low level micro optimization of C<L</SvGROW>>. It is generally better to use
C<SvGROW> instead. This is because C<SvPV_renew> ignores potential issues that
-C<SvGROW> handles. C<sv> needs to have a real C<PV> that is unencombered by
+C<SvGROW> handles. C<sv> needs to have a real C<PV> that is unencumbered by
things like COW. Using C<SV_CHECK_THINKFIRST> or
C<SV_CHECK_THINKFIRST_COW_DROP> before calling this should clean it up, but
why not just use C<SvGROW> if you're not sure about the provenance?
@@ -1397,16 +1555,29 @@ why not just use C<SvGROW> if you're not sure about the provenance?
=cut
*/
#define SvPV_renew(sv,n) \
- STMT_START { SvLEN_set(sv, n); \
- SvPV_set((sv), (MEM_WRAP_CHECK_(n,char) \
- (char*)saferealloc((Malloc_t)SvPVX(sv), \
- (MEM_SIZE)((n))))); \
- } STMT_END
+ STMT_START { SvLEN_set(sv, n); \
+ SvPV_set((sv), (MEM_WRAP_CHECK_(n,char) \
+ (char*)saferealloc((Malloc_t)SvPVX(sv), \
+ (MEM_SIZE)((n))))); \
+ } STMT_END
+/*
+=for apidoc Am|void|SvPV_shrink_to_cur|SV* sv
+
+Trim any trailing unused memory in the PV of C<sv>, which needs to have a real
+C<PV> that is unencumbered by things like COW. Think first before using this
+functionality. Is the space saving really worth giving up COW? Will the
+needed size of C<sv> stay the same?
+
+If the answers are both yes, then use L</C<SV_CHECK_THINKFIRST>> or
+L</C<SV_CHECK_THINKFIRST_COW_DROP>> before calling this.
+
+=cut
+*/
#define SvPV_shrink_to_cur(sv) STMT_START { \
- const STRLEN _lEnGtH = SvCUR(sv) + 1; \
- SvPV_renew(sv, _lEnGtH); \
- } STMT_END
+ const STRLEN _lEnGtH = SvCUR(sv) + 1; \
+ SvPV_renew(sv, _lEnGtH); \
+ } STMT_END
/*
=for apidoc Am|void|SvPV_free|SV * sv
@@ -1418,32 +1589,32 @@ only be used as part of a larger operation
*/
#define SvPV_free(sv) \
STMT_START { \
- assert(SvTYPE(sv) >= SVt_PV); \
- if (SvLEN(sv)) { \
- assert(!SvROK(sv)); \
- if(UNLIKELY(SvOOK(sv))) { \
- STRLEN zok; \
- SvOOK_offset(sv, zok); \
- SvPV_set(sv, SvPVX_mutable(sv) - zok); \
- SvFLAGS(sv) &= ~SVf_OOK; \
- } \
- Safefree(SvPVX(sv)); \
- } \
- } STMT_END
+ assert(SvTYPE(sv) >= SVt_PV); \
+ if (SvLEN(sv)) { \
+ assert(!SvROK(sv)); \
+ if(UNLIKELY(SvOOK(sv))) { \
+ STRLEN zok; \
+ SvOOK_offset(sv, zok); \
+ SvPV_set(sv, SvPVX_mutable(sv) - zok); \
+ SvFLAGS(sv) &= ~SVf_OOK; \
+ } \
+ Safefree(SvPVX(sv)); \
+ } \
+ } STMT_END
#ifdef PERL_CORE
/* Code that crops up in three places to take a scalar and ready it to hold
a reference */
# define prepare_SV_for_RV(sv) \
STMT_START { \
- if (SvTYPE(sv) < SVt_PV && SvTYPE(sv) != SVt_IV) \
- sv_upgrade(sv, SVt_IV); \
- else if (SvTYPE(sv) >= SVt_PV) { \
- SvPV_free(sv); \
- SvLEN_set(sv, 0); \
+ if (SvTYPE(sv) < SVt_PV && SvTYPE(sv) != SVt_IV) \
+ sv_upgrade(sv, SVt_IV); \
+ else if (SvTYPE(sv) >= SVt_PV) { \
+ SvPV_free(sv); \
+ SvLEN_set(sv, 0); \
SvCUR_set(sv, 0); \
- } \
- } STMT_END
+ } \
+ } STMT_END
#endif
#ifndef PERL_CORE
@@ -1452,12 +1623,12 @@ only be used as part of a larger operation
#if defined (DEBUGGING) && defined(PERL_USE_GCC_BRACE_GROUPS)
# define BmUSEFUL(sv) \
- (*({ SV *const _bmuseful = MUTABLE_SV(sv); \
- assert(SvTYPE(_bmuseful) >= SVt_PVIV); \
- assert(SvVALID(_bmuseful)); \
- assert(!SvIOK(_bmuseful)); \
- &(((XPVIV*) SvANY(_bmuseful))->xiv_u.xivu_iv); \
- }))
+ (*({ SV *const _bmuseful = MUTABLE_SV(sv); \
+ assert(SvTYPE(_bmuseful) >= SVt_PVIV); \
+ assert(SvVALID(_bmuseful)); \
+ assert(!SvIOK(_bmuseful)); \
+ &(((XPVIV*) SvANY(_bmuseful))->xiv_u.xivu_iv); \
+ }))
#else
# define BmUSEFUL(sv) ((XPVIV*) SvANY(sv))->xiv_u.xivu_iv
@@ -1511,6 +1682,7 @@ only be used as part of a larger operation
#define IoTYPE_NUMERIC '#' /* fdopen */
/*
+=for apidoc_section $tainting
=for apidoc Am|bool|SvTAINTED|SV* sv
Checks to see if an SV is tainted. Returns TRUE if it is, FALSE if
not.
@@ -1554,19 +1726,20 @@ attention to precisely which outputs are influenced by which inputs.
} STMT_END
/*
-=for apidoc Am|char*|SvPV_force|SV* sv|STRLEN len
-=for apidoc_item ||SvPV_force_nolen|SV* sv
-=for apidoc_item ||SvPVx_force|SV* sv|STRLEN len
-=for apidoc_item ||SvPV_force_nomg|SV* sv|STRLEN len
-=for apidoc_item ||SvPV_force_nomg_nolen|SV * sv
-=for apidoc_item ||SvPV_force_mutable|SV * sv|STRLEN len
-=for apidoc_item ||SvPV_force_flags|SV * sv|STRLEN len|U32 flags
-=for apidoc_item ||SvPV_force_flags_nolen|SV * sv|U32 flags
-=for apidoc_item ||SvPV_force_flags_mutable|SV * sv|STRLEN len|U32 flags
-=for apidoc_item ||SvPVbyte_force
-=for apidoc_item ||SvPVbytex_force
-=for apidoc_item ||SvPVutf8_force
-=for apidoc_item ||SvPVutf8x_force
+=for apidoc_section $SV
+=for apidoc Am|char*|SvPV_force |SV* sv|STRLEN len
+=for apidoc_item ||SvPV_force_flags |SV * sv|STRLEN len|U32 flags
+=for apidoc_item ||SvPV_force_flags_mutable|SV * sv|STRLEN len|U32 flags
+=for apidoc_item ||SvPV_force_flags_nolen |SV * sv |U32 flags
+=for apidoc_item ||SvPV_force_mutable |SV * sv|STRLEN len
+=for apidoc_item ||SvPV_force_nolen |SV* sv
+=for apidoc_item ||SvPV_force_nomg |SV* sv|STRLEN len
+=for apidoc_item ||SvPV_force_nomg_nolen |SV * sv
+=for apidoc_item ||SvPVbyte_force |SV * sv|STRLEN len
+=for apidoc_item ||SvPVbytex_force |SV * sv|STRLEN len
+=for apidoc_item ||SvPVutf8_force |SV * sv|STRLEN len
+=for apidoc_item ||SvPVutf8x_force |SV * sv|STRLEN len
+=for apidoc_item ||SvPVx_force |SV* sv|STRLEN len
These are like C<L</SvPV>>, returning the string in the SV, but will force the
SV into containing a string (C<L</SvPOK>>), and only a string
@@ -1611,37 +1784,37 @@ downgraded from UTF-8, this croaks.
C<SvPVbytex_force> is like C<SvPVbyte_force>, but guarantees to evaluate C<sv>
only once; use the more efficient C<SvPVbyte_force> otherwise.
-=for apidoc Am|char*|SvPV|SV* sv|STRLEN len
-=for apidoc_item |char*|SvPVx|SV* sv|STRLEN len
-=for apidoc_item |char*|SvPV_nomg|SV* sv|STRLEN len
-=for apidoc_item |char*|SvPV_nolen|SV* sv
-=for apidoc_item |char*|SvPVx_nolen|SV* sv
-=for apidoc_item |char*|SvPV_nomg_nolen|SV* sv
-=for apidoc_item |char*|SvPV_mutable|SV* sv|STRLEN len
-=for apidoc_item |const char*|SvPV_const|SV* sv|STRLEN len
-=for apidoc_item |const char*|SvPVx_const|SV* sv|STRLEN len
-=for apidoc_item |const char*|SvPV_nolen_const|SV* sv
-=for apidoc_item |const char*|SvPVx_nolen_const|SV* sv
-=for apidoc_item |const char*|SvPV_nomg_const|SV* sv|STRLEN len
+=for apidoc Am | char*|SvPV |SV* sv|STRLEN len
+=for apidoc_item |const char*|SvPV_const |SV* sv|STRLEN len
+=for apidoc_item | char*|SvPV_flags |SV* sv|STRLEN len|U32 flags
+=for apidoc_item |const char*|SvPV_flags_const |SV* sv|STRLEN len|U32 flags
+=for apidoc_item | char*|SvPV_flags_mutable |SV* sv|STRLEN len|U32 flags
+=for apidoc_item | char*|SvPV_mutable |SV* sv|STRLEN len
+=for apidoc_item | char*|SvPV_nolen |SV* sv
+=for apidoc_item |const char*|SvPV_nolen_const |SV* sv
+=for apidoc_item | char*|SvPV_nomg |SV* sv|STRLEN len
+=for apidoc_item |const char*|SvPV_nomg_const |SV* sv|STRLEN len
=for apidoc_item |const char*|SvPV_nomg_const_nolen|SV* sv
-=for apidoc_item |char *|SvPV_flags|SV * sv|STRLEN len|U32 flags
-=for apidoc_item |const char *|SvPV_flags_const|SV * sv|STRLEN len|U32 flags
-=for apidoc_item |char *|SvPV_flags_mutable|SV * sv|STRLEN len|U32 flags
-=for apidoc_item |char*|SvPVbyte|SV* sv|STRLEN len
-=for apidoc_item |char*|SvPVbyte_nomg|SV* sv|STRLEN len
-=for apidoc_item |char*|SvPVbyte_nolen|SV* sv
-=for apidoc_item |char*|SvPVbytex_nolen|SV* sv
-=for apidoc_item |char*|SvPVbytex|SV* sv|STRLEN len
-=for apidoc_item |char*|SvPVbyte_or_null|SV* sv|STRLEN len
-=for apidoc_item |char*|SvPVbyte_or_null_nomg|SV* sv|STRLEN len
-=for apidoc_item |char*|SvPVutf8|SV* sv|STRLEN len
-=for apidoc_item |char*|SvPVutf8x|SV* sv|STRLEN len
-=for apidoc_item |char*|SvPVutf8_nomg|SV* sv|STRLEN len
-=for apidoc_item |char*|SvPVutf8_nolen|SV* sv
-=for apidoc_item |char*|SvPVutf8_or_null|SV* sv|STRLEN len
-=for apidoc_item |char*|SvPVutf8_or_null_nomg|SV* sv|STRLEN len
-
-All these return a pointer to the string in C<sv>, or a stringified form of
+=for apidoc_item | char*|SvPV_nomg_nolen |SV* sv
+=for apidoc_item | char*|SvPVbyte |SV* sv|STRLEN len
+=for apidoc_item | char*|SvPVbyte_nolen |SV* sv
+=for apidoc_item | char*|SvPVbyte_nomg |SV* sv|STRLEN len
+=for apidoc_item | char*|SvPVbyte_or_null |SV* sv|STRLEN len
+=for apidoc_item | char*|SvPVbyte_or_null_nomg|SV* sv|STRLEN len
+=for apidoc_item | char*|SvPVbytex |SV* sv|STRLEN len
+=for apidoc_item | char*|SvPVbytex_nolen |SV* sv
+=for apidoc_item | char*|SvPVutf8 |SV* sv|STRLEN len
+=for apidoc_item | char*|SvPVutf8_nolen |SV* sv
+=for apidoc_item | char*|SvPVutf8_nomg |SV* sv|STRLEN len
+=for apidoc_item | char*|SvPVutf8_or_null |SV* sv|STRLEN len
+=for apidoc_item | char*|SvPVutf8_or_null_nomg|SV* sv|STRLEN len
+=for apidoc_item | char*|SvPVutf8x |SV* sv|STRLEN len
+=for apidoc_item | char*|SvPVx |SV* sv|STRLEN len
+=for apidoc_item |const char*|SvPVx_const |SV* sv|STRLEN len
+=for apidoc_item | char*|SvPVx_nolen |SV* sv
+=for apidoc_item |const char*|SvPVx_nolen_const |SV* sv
+
+These each return a pointer to the string in C<sv>, or a stringified form of
C<sv> if it does not contain a string. The SV may cache the stringified
version becoming C<SvPOK>.
@@ -1687,13 +1860,11 @@ the string (unless you cast away const yourself).
The other forms return a mutable pointer so that the string is modifiable by
the caller; this is emphasized for the ones with C<mutable> in their names.
-The forms whose name ends in C<x> are the same as the corresponding form
-without the C<x>, but the C<x> form is guaranteed to evaluate C<sv> exactly
-once, with a slight loss of efficiency. Use this if C<sv> is an expression
-with side effects.
+As of 5.38, all forms are guaranteed to evaluate C<sv> exactly once. For
+earlier Perls, use a form whose name ends with C<x> for single evaluation.
C<SvPVutf8> is like C<SvPV>, but converts C<sv> to UTF-8 first if not already
-UTF-8. Similiarly, the other forms with C<utf8> in their names correspond to
+UTF-8. Similarly, the other forms with C<utf8> in their names correspond to
their respective forms without.
C<SvPVutf8_or_null> and C<SvPVutf8_or_null_nomg> don't have corresponding
@@ -1702,62 +1873,17 @@ undef, they return C<NULL>.
C<SvPVbyte> is like C<SvPV>, but converts C<sv> to byte representation first if
currently encoded as UTF-8. If C<sv> cannot be downgraded from UTF-8, it
-croaks. Similiarly, the other forms with C<byte> in their names correspond to
+croaks. Similarly, the other forms with C<byte> in their names correspond to
their respective forms without.
C<SvPVbyte_or_null> doesn't have a corresponding non-C<byte> form. Instead it
is like C<SvPVbyte>, but when C<sv> is undef, it returns C<NULL>.
-=for apidoc Am|IV|SvIV|SV* sv
-=for apidoc_item SvIVx
-=for apidoc_item SvIV_nomg
-
-These coerce the given SV to IV and return it. The returned value in many
-circumstances will get stored in C<sv>'s IV slot, but not in all cases. (Use
-C<L</sv_setiv>> to make sure it does).
-
-C<SvIVx> is different from the others in that it is guaranteed to evaluate
-C<sv> exactly once; the others may evaluate it multiple times. Only use this
-form if C<sv> is an expression with side effects, otherwise use the more
-efficient C<SvIV>.
-
-C<SvIV_nomg> is the same as C<SvIV>, but does not perform 'get' magic.
-
-=for apidoc Am|NV|SvNV|SV* sv
-=for apidoc_item SvNVx
-=for apidoc_item SvNV_nomg
-
-These coerce the given SV to NV and return it. The returned value in many
-circumstances will get stored in C<sv>'s NV slot, but not in all cases. (Use
-C<L</sv_setnv>> to make sure it does).
-
-C<SvNVx> is different from the others in that it is guaranteed to evaluate
-C<sv> exactly once; the others may evaluate it multiple times. Only use this
-form if C<sv> is an expression with side effects, otherwise use the more
-efficient C<SvNV>.
-
-C<SvNV_nomg> is the same as C<SvNV>, but does not perform 'get' magic.
-
-=for apidoc Am|UV|SvUV|SV* sv
-=for apidoc_item SvUVx
-=for apidoc_item SvUV_nomg
-
-These coerce the given SV to UV and return it. The returned value in many
-circumstances will get stored in C<sv>'s UV slot, but not in all cases. (Use
-C<L</sv_setuv>> to make sure it does).
-
-C<SvUVx> is different from the others in that it is guaranteed to evaluate
-C<sv> exactly once; the others may evaluate it multiple times. Only use this
-form if C<sv> is an expression with side effects, otherwise use the more
-efficient C<SvUV>.
-
-C<SvUV_nomg> is the same as C<SvUV>, but does not perform 'get' magic.
-
-=for apidoc SvTRUE
-=for apidoc_item SvTRUEx
-=for apidoc_item SvTRUE_nomg
+=for apidoc SvTRUE
=for apidoc_item SvTRUE_NN
+=for apidoc_item SvTRUE_nomg
=for apidoc_item SvTRUE_nomg_NN
+=for apidoc_item SvTRUEx
These return a boolean indicating whether Perl would evaluate the SV as true or
false. See C<L</SvOK>> for a defined/undefined test.
@@ -1778,45 +1904,6 @@ C<SvTRUE_nomg_NN> is like C<L</SvTRUE_nomg>>, but C<sv> is assumed to be
non-null (NN). If there is a possibility that it is NULL, use plain
C<SvTRUE_nomg>.
-=for apidoc Am|char*|SvPVutf8_force|SV* sv|STRLEN len
-Like C<SvPV_force>, but converts C<sv> to UTF-8 first if necessary.
-
-=for apidoc Am|char*|SvPVutf8|SV* sv|STRLEN len
-Like C<SvPV>, but converts C<sv> to UTF-8 first if necessary.
-
-=for apidoc Am|char*|SvPVutf8_nomg|SV* sv|STRLEN len
-Like C<SvPVutf8>, but does not process get magic.
-
-=for apidoc Am|char*|SvPVutf8_or_null|SV* sv|STRLEN len
-Like C<SvPVutf8>, but when C<sv> is undef, returns C<NULL>.
-
-=for apidoc Am|char*|SvPVutf8_or_null_nomg|SV* sv|STRLEN len
-Like C<SvPVutf8_or_null>, but does not process get magic.
-
-=for apidoc Am|char*|SvPVutf8_nolen|SV* sv
-Like C<SvPV_nolen>, but converts C<sv> to UTF-8 first if necessary.
-
-=for apidoc Am|char*|SvPVbyte_force|SV* sv|STRLEN len
-Like C<SvPV_force>, but converts C<sv> to byte representation first if
-necessary. If the SV cannot be downgraded from UTF-8, this croaks.
-
-=for apidoc Am|char*|SvPVbyte|SV* sv|STRLEN len
-Like C<SvPV>, but converts C<sv> to byte representation first if necessary. If
-the SV cannot be downgraded from UTF-8, this croaks.
-
-=for apidoc Am|char*|SvPVbyte_nomg|SV* sv|STRLEN len
-Like C<SvPVbyte>, but does not process get magic.
-
-=for apidoc Am|char*|SvPVbyte_or_null|SV* sv|STRLEN len
-Like C<SvPVbyte>, but when C<sv> is undef, returns C<NULL>.
-
-=for apidoc Am|char*|SvPVbyte_or_null_nomg|SV* sv|STRLEN len
-Like C<SvPVbyte_or_null>, but does not process get magic.
-
-=for apidoc Am|char*|SvPVbyte_nolen|SV* sv
-Like C<SvPV_nolen>, but converts C<sv> to byte representation first if
-necessary. If the SV cannot be downgraded from UTF-8, this croaks.
-
=for apidoc Am|U32|SvIsCOW|SV* sv
Returns a U32 value indicating whether the SV is Copy-On-Write (either shared
hash key scalars, or full Copy On Write scalars if 5.9.0 is configured for
@@ -1829,135 +1916,130 @@ scalar.
=cut
*/
-/* Let us hope that bitmaps for UV and IV are the same */
-#define SvIV(sv) (SvIOK_nog(sv) ? SvIVX(sv) : sv_2iv(sv))
-#define SvUV(sv) (SvUOK_nog(sv) ? SvUVX(sv) : sv_2uv(sv))
-#define SvNV(sv) (SvNOK_nog(sv) ? SvNVX(sv) : sv_2nv(sv))
-
-#define SvIV_nomg(sv) (SvIOK(sv) ? SvIVX(sv) : sv_2iv_flags(sv, 0))
-#define SvUV_nomg(sv) (SvUOK(sv) ? SvUVX(sv) : sv_2uv_flags(sv, 0))
-#define SvNV_nomg(sv) (SvNOK(sv) ? SvNVX(sv) : sv_2nv_flags(sv, 0))
-
-/* ----*/
-
-#define SvPV(sv, len) SvPV_flags(sv, len, SV_GMAGIC)
-#define SvPV_const(sv, len) SvPV_flags_const(sv, len, SV_GMAGIC)
-#define SvPV_mutable(sv, len) SvPV_flags_mutable(sv, len, SV_GMAGIC)
-
-#define SvPV_flags(sv, len, flags) \
- (SvPOK_nog(sv) \
- ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_2pv_flags(sv, &len, flags))
-#define SvPV_flags_const(sv, len, flags) \
- (SvPOK_nog(sv) \
- ? ((len = SvCUR(sv)), SvPVX_const(sv)) : \
- (const char*) sv_2pv_flags(sv, &len, (flags|SV_CONST_RETURN)))
-#define SvPV_flags_const_nolen(sv, flags) \
- (SvPOK_nog(sv) \
- ? SvPVX_const(sv) : \
- (const char*) sv_2pv_flags(sv, 0, (flags|SV_CONST_RETURN)))
-#define SvPV_flags_mutable(sv, len, flags) \
- (SvPOK_nog(sv) \
- ? ((len = SvCUR(sv)), SvPVX_mutable(sv)) : \
- sv_2pv_flags(sv, &len, (flags|SV_MUTABLE_RETURN)))
-
-#define SvPV_force(sv, len) SvPV_force_flags(sv, len, SV_GMAGIC)
-#define SvPV_force_nolen(sv) SvPV_force_flags_nolen(sv, SV_GMAGIC)
-#define SvPV_force_mutable(sv, len) SvPV_force_flags_mutable(sv, len, SV_GMAGIC)
-
-#define SvPV_force_nomg(sv, len) SvPV_force_flags(sv, len, 0)
-#define SvPV_force_nomg_nolen(sv) SvPV_force_flags_nolen(sv, 0)
-
-#define SvPV_force_flags(sv, len, flags) \
- (SvPOK_pure_nogthink(sv) \
- ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_pvn_force_flags(sv, &len, flags))
-
-#define SvPV_force_flags_nolen(sv, flags) \
- (SvPOK_pure_nogthink(sv) \
- ? SvPVX(sv) : sv_pvn_force_flags(sv, 0, flags))
-
-#define SvPV_force_flags_mutable(sv, len, flags) \
- (SvPOK_pure_nogthink(sv) \
- ? ((len = SvCUR(sv)), SvPVX_mutable(sv)) \
- : sv_pvn_force_flags(sv, &len, flags|SV_MUTABLE_RETURN))
+/* To pass the action to the functions called by the following macros */
+typedef enum {
+ SvPVutf8_type_,
+ SvPVbyte_type_,
+ SvPVnormal_type_,
+ SvPVforce_type_,
+ SvPVutf8_pure_type_,
+ SvPVbyte_pure_type_
+} PL_SvPVtype;
+
+START_EXTERN_C
+
+/* When this code was written, embed.fnc could not handle function pointer
+ * parameters; perhaps it still can't */
+#ifndef PERL_NO_INLINE_FUNCTIONS
+PERL_STATIC_INLINE char*
+Perl_SvPV_helper(pTHX_ SV *const sv, STRLEN *const lp, const U32 flags, const PL_SvPVtype type, char * (*non_trivial)(pTHX_ SV *, STRLEN * const, const U32), const bool or_null, const U32 return_flags);
+#endif
-#define SvPV_nolen(sv) \
- (SvPOK_nog(sv) \
- ? SvPVX(sv) : sv_2pv_flags(sv, 0, SV_GMAGIC))
+END_EXTERN_C
+
+/* This test is "is there a cached PV that we can use directly?"
+ * We can if
+ * a) SVf_POK is true and there's definitely no get magic on the scalar
+ * b) SVp_POK is true, there's no get magic, and we know that the cached PV
+ * came from an IV conversion.
+ * For the latter case, we don't set SVf_POK so that we can distinguish whether
+ * the value originated as a string or as an integer, before we cached the
+ * second representation. */
+#define SvPOK_or_cached_IV(sv) \
+ (((SvFLAGS(sv) & (SVf_POK|SVs_GMG)) == SVf_POK) || ((SvFLAGS(sv) & (SVf_IOK|SVp_POK|SVs_GMG)) == (SVf_IOK|SVp_POK)))
+
+#define SvPV_flags(sv, len, flags) \
+ Perl_SvPV_helper(aTHX_ sv, &len, flags, SvPVnormal_type_, \
+ Perl_sv_2pv_flags, FALSE, 0)
+#define SvPV_flags_const(sv, len, flags) \
+ ((const char*) Perl_SvPV_helper(aTHX_ sv, &len, flags, SvPVnormal_type_, \
+ Perl_sv_2pv_flags, FALSE, \
+ SV_CONST_RETURN))
+#define SvPV_flags_const_nolen(sv, flags) \
+ ((const char*) Perl_SvPV_helper(aTHX_ sv, NULL, flags, SvPVnormal_type_, \
+ Perl_sv_2pv_flags, FALSE, \
+ SV_CONST_RETURN))
+#define SvPV_flags_mutable(sv, len, flags) \
+ Perl_SvPV_helper(aTHX_ sv, &len, flags, SvPVnormal_type_, \
+ Perl_sv_2pv_flags, FALSE, SV_MUTABLE_RETURN)
+
+#define SvPV_nolen(sv) \
+ Perl_SvPV_helper(aTHX_ sv, NULL, SV_GMAGIC, SvPVnormal_type_, \
+ Perl_sv_2pv_flags, FALSE, 0)
+
+#define SvPV_nolen_const(sv) SvPV_flags_const_nolen(sv, SV_GMAGIC)
+
+#define SvPV(sv, len) SvPV_flags(sv, len, SV_GMAGIC)
+#define SvPV_const(sv, len) SvPV_flags_const(sv, len, SV_GMAGIC)
+#define SvPV_mutable(sv, len) SvPV_flags_mutable(sv, len, SV_GMAGIC)
+
+#define SvPV_nomg_nolen(sv) \
+ Perl_SvPV_helper(aTHX_ sv, NULL, 0, SvPVnormal_type_,Perl_sv_2pv_flags, \
+ FALSE, 0)
+#define SvPV_nomg(sv, len) SvPV_flags(sv, len, 0)
+#define SvPV_nomg_const(sv, len) SvPV_flags_const(sv, len, 0)
+#define SvPV_nomg_const_nolen(sv) SvPV_flags_const_nolen(sv, 0)
+
+#define SvPV_force_flags(sv, len, flags) \
+ Perl_SvPV_helper(aTHX_ sv, &len, flags, SvPVforce_type_, \
+ Perl_sv_pvn_force_flags, FALSE, 0)
+#define SvPV_force_flags_nolen(sv, flags) \
+ Perl_SvPV_helper(aTHX_ sv, NULL, flags, SvPVforce_type_, \
+ Perl_sv_pvn_force_flags, FALSE, 0)
+#define SvPV_force_flags_mutable(sv, len, flags) \
+ Perl_SvPV_helper(aTHX_ sv, &len, flags, SvPVforce_type_, \
+ Perl_sv_pvn_force_flags, FALSE, SV_MUTABLE_RETURN)
+
+#define SvPV_force(sv, len) SvPV_force_flags(sv, len, SV_GMAGIC)
+#define SvPV_force_nolen(sv) SvPV_force_flags_nolen(sv, SV_GMAGIC)
+#define SvPV_force_mutable(sv, len) SvPV_force_flags_mutable(sv, len, SV_GMAGIC)
/* "_nomg" in these defines means no mg_get() */
-#define SvPV_nomg_nolen(sv) \
- (SvPOK_nog(sv) \
- ? SvPVX(sv) : sv_2pv_flags(sv, 0, 0))
-
-#define SvPV_nolen_const(sv) \
- (SvPOK_nog(sv) \
- ? SvPVX_const(sv) : sv_2pv_flags(sv, 0, SV_GMAGIC|SV_CONST_RETURN))
-
-#define SvPV_nomg(sv, len) SvPV_flags(sv, len, 0)
-#define SvPV_nomg_const(sv, len) SvPV_flags_const(sv, len, 0)
-#define SvPV_nomg_const_nolen(sv) SvPV_flags_const_nolen(sv, 0)
-
-/* ----*/
-
-#define SvPVutf8(sv, len) \
- (SvPOK_utf8_nog(sv) \
- ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_2pvutf8(sv, &len))
-
-#define SvPVutf8_or_null(sv, len) \
- (SvPOK_utf8_nog(sv) \
- ? ((len = SvCUR(sv)), SvPVX(sv)) : (SvGETMAGIC(sv), SvOK(sv)) \
- ? sv_2pvutf8_flags(sv, &len, 0) : ((len = 0), NULL))
-
-#define SvPVutf8_nomg(sv, len) \
- (SvPOK_utf8_nog(sv) \
- ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_2pvutf8_flags(sv, &len, 0))
-
-#define SvPVutf8_or_null_nomg(sv, len) \
- (SvPOK_utf8_nog(sv) \
- ? ((len = SvCUR(sv)), SvPVX(sv)) : SvOK(sv) \
- ? sv_2pvutf8_flags(sv, &len, 0) : ((len = 0), NULL))
-
-#define SvPVutf8_force(sv, len) \
- (SvPOK_utf8_pure_nogthink(sv) \
- ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_pvutf8n_force(sv, &len))
-
-#define SvPVutf8_nolen(sv) \
- (SvPOK_utf8_nog(sv) \
- ? SvPVX(sv) : sv_2pvutf8(sv, 0))
-
-/* ----*/
-
-#define SvPVbyte(sv, len) \
- (SvPOK_byte_nog(sv) \
- ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte(sv, &len))
-
-#define SvPVbyte_or_null(sv, len) \
- (SvPOK_byte_nog(sv) \
- ? ((len = SvCUR(sv)), SvPVX(sv)) : (SvGETMAGIC(sv), SvOK(sv)) \
- ? sv_2pvbyte_flags(sv, &len, 0) : ((len = 0), NULL))
-
-#define SvPVbyte_nomg(sv, len) \
- (SvPOK_byte_nog(sv) \
- ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_2pvbyte_flags(sv, &len, 0))
-
-#define SvPVbyte_or_null_nomg(sv, len) \
- (SvPOK_utf8_nog(sv) \
- ? ((len = SvCUR(sv)), SvPVX(sv)) : SvOK(sv) \
- ? sv_2pvbyte_flags(sv, &len, 0) : ((len = 0), NULL))
-
-#define SvPVbyte_force(sv, len) \
- (SvPOK_byte_pure_nogthink(sv) \
- ? ((len = SvCUR(sv)), SvPVX(sv)) : sv_pvbyten_force(sv, &len))
-
-#define SvPVbyte_nolen(sv) \
- (SvPOK_byte_nog(sv) \
- ? SvPVX(sv) : sv_2pvbyte(sv, 0))
-
-
-/* define FOOx(): idempotent versions of FOO(). If possible, use a local
- * var to evaluate the arg once; failing that, use a global if possible;
- * failing that, call a function to do the work
- */
+#define SvPV_force_nomg(sv, len) SvPV_force_flags(sv, len, 0)
+#define SvPV_force_nomg_nolen(sv) SvPV_force_flags_nolen(sv, 0)
+
+#define SvPVutf8(sv, len) \
+ Perl_SvPV_helper(aTHX_ sv, &len, SV_GMAGIC, SvPVutf8_type_, \
+ Perl_sv_2pvutf8_flags, FALSE, 0)
+#define SvPVutf8_nomg(sv, len) \
+ Perl_SvPV_helper(aTHX_ sv, &len, 0, SvPVutf8_type_, \
+ Perl_sv_2pvutf8_flags, FALSE, 0)
+#define SvPVutf8_nolen(sv) \
+ Perl_SvPV_helper(aTHX_ sv, NULL, SV_GMAGIC, SvPVutf8_type_, \
+ Perl_sv_2pvutf8_flags, FALSE, 0)
+#define SvPVutf8_or_null(sv, len) \
+ Perl_SvPV_helper(aTHX_ sv, &len, SV_GMAGIC, SvPVutf8_type_, \
+ Perl_sv_2pvutf8_flags, TRUE, 0)
+#define SvPVutf8_or_null_nomg(sv, len) \
+ Perl_SvPV_helper(aTHX_ sv, &len, 0, SvPVutf8_type_, \
+ Perl_sv_2pvutf8_flags, TRUE, 0)
+
+#define SvPVbyte(sv, len) \
+ Perl_SvPV_helper(aTHX_ sv, &len, SV_GMAGIC, SvPVbyte_type_, \
+ Perl_sv_2pvbyte_flags, FALSE, 0)
+#define SvPVbyte_nomg(sv, len) \
+ Perl_SvPV_helper(aTHX_ sv, &len, 0, SvPVbyte_type_, \
+ Perl_sv_2pvbyte_flags, FALSE, 0)
+#define SvPVbyte_nolen(sv) \
+ Perl_SvPV_helper(aTHX_ sv, NULL, SV_GMAGIC, SvPVbyte_type_, \
+ Perl_sv_2pvbyte_flags, FALSE, 0)
+#define SvPVbyte_or_null(sv, len) \
+ Perl_SvPV_helper(aTHX_ sv, &len, SV_GMAGIC, SvPVbyte_type_, \
+ Perl_sv_2pvbyte_flags, TRUE, 0)
+#define SvPVbyte_or_null_nomg(sv, len) \
+ Perl_SvPV_helper(aTHX_ sv, &len, 0, SvPVbyte_type_, \
+ Perl_sv_2pvbyte_flags, TRUE, 0)
+
+#define SvPVutf8_force(sv, len) \
+ Perl_SvPV_helper(aTHX_ sv, &len, 0, SvPVutf8_pure_type_, \
+ Perl_sv_pvutf8n_force_wrapper, FALSE, 0)
+
+#define SvPVbyte_force(sv, len) \
+ Perl_SvPV_helper(aTHX_ sv, &len, 0, SvPVbyte_pure_type_, \
+ Perl_sv_pvbyten_force_wrapper, FALSE, 0)
+
+/* define FOOx(): Before FOO(x) was inlined, these were idempotent versions of
+ * FOO(). */
#define SvPVx_force(sv, len) sv_pvn_force(sv, &len)
#define SvPVutf8x_force(sv, len) sv_pvutf8n_force(sv, &len)
@@ -1967,11 +2049,12 @@ scalar.
#define SvTRUEx_nomg(sv) SvTRUE_nomg(sv)
#define SvTRUE_nomg_NN(sv) SvTRUE_common(sv, TRUE)
+# define SvIVx(sv) SvIV(sv)
+# define SvUVx(sv) SvUV(sv)
+# define SvNVx(sv) SvNV(sv)
+
#if defined(PERL_USE_GCC_BRACE_GROUPS)
-# define SvIVx(sv) ({SV *_sv = MUTABLE_SV(sv); SvIV(_sv); })
-# define SvUVx(sv) ({SV *_sv = MUTABLE_SV(sv); SvUV(_sv); })
-# define SvNVx(sv) ({SV *_sv = MUTABLE_SV(sv); SvNV(_sv); })
# define SvPVx(sv, len) ({SV *_sv = (sv); SvPV(_sv, len); })
# define SvPVx_const(sv, len) ({SV *_sv = (sv); SvPV_const(_sv, len); })
# define SvPVx_nolen(sv) ({SV *_sv = (sv); SvPV_nolen(_sv); })
@@ -1985,9 +2068,6 @@ scalar.
/* These inlined macros use globals, which will require a thread
* declaration in user code, so we avoid them under threads */
-# define SvIVx(sv) ((PL_Sv = (sv)), SvIV(PL_Sv))
-# define SvUVx(sv) ((PL_Sv = (sv)), SvUV(PL_Sv))
-# define SvNVx(sv) ((PL_Sv = (sv)), SvNV(PL_Sv))
# define SvPVx(sv, len) ((PL_Sv = (sv)), SvPV(PL_Sv, len))
# define SvPVx_const(sv, len) ((PL_Sv = (sv)), SvPV_const(PL_Sv, len))
# define SvPVx_nolen(sv) ((PL_Sv = (sv)), SvPV_nolen(PL_Sv))
@@ -1997,24 +2077,14 @@ scalar.
# define SvPVbytex_nolen(sv) ((PL_Sv = (sv)), SvPVbyte_nolen(PL_Sv))
#endif /* __GNU__ */
-#define SvPVXtrue(sv) ( \
- ((XPV*)SvANY((sv))) \
- && ( \
- ((XPV*)SvANY((sv)))->xpv_cur > 1 \
- || ( \
- ((XPV*)SvANY((sv)))->xpv_cur \
- && *(sv)->sv_u.svu_pv != '0' \
- ) \
- ) \
-)
-
-#define SvIsCOW(sv) (SvFLAGS(sv) & SVf_IsCOW)
-#define SvIsCOW_on(sv) (SvFLAGS(sv) |= SVf_IsCOW)
-#define SvIsCOW_off(sv) (SvFLAGS(sv) &= ~SVf_IsCOW)
-#define SvIsCOW_shared_hash(sv) (SvIsCOW(sv) && SvLEN(sv) == 0)
+#define SvIsCOW(sv) (SvFLAGS(sv) & SVf_IsCOW)
+#define SvIsCOW_on(sv) (SvFLAGS(sv) |= SVf_IsCOW)
+#define SvIsCOW_off(sv) (SvFLAGS(sv) &= ~(SVf_IsCOW|SVppv_STATIC))
+#define SvIsCOW_shared_hash(sv) ((SvFLAGS(sv) & (SVf_IsCOW|SVppv_STATIC)) == (SVf_IsCOW) && SvLEN(sv) == 0)
+#define SvIsCOW_static(sv) ((SvFLAGS(sv) & (SVf_IsCOW|SVppv_STATIC)) == (SVf_IsCOW|SVppv_STATIC))
#define SvSHARED_HEK_FROM_PV(pvx) \
- ((struct hek*)(pvx - STRUCT_OFFSET(struct hek, hek_key)))
+ ((struct hek*)(pvx - STRUCT_OFFSET(struct hek, hek_key)))
/*
=for apidoc Am|struct hek*|SvSHARED_HASH|SV * sv
Returns the hash for C<sv> created by C<L</newSVpvn_share>>.
@@ -2032,31 +2102,33 @@ Returns the hash for C<sv> created by C<L</newSVpvn_share>>.
=cut
*/
-#define SV_IMMEDIATE_UNREF 1
-#define SV_GMAGIC 2
-#define SV_COW_DROP_PV 4
-#define SV_NOSTEAL 16
-#define SV_CONST_RETURN 32
-#define SV_MUTABLE_RETURN 64
-#define SV_SMAGIC 128
-#define SV_HAS_TRAILING_NUL 256
-#define SV_COW_SHARED_HASH_KEYS 512
+/* Flags used as `U32 flags` arguments to various functions */
+#define SV_IMMEDIATE_UNREF (1 << 0) /* 0x0001 - 1 */
+#define SV_GMAGIC (1 << 1) /* 0x0002 - 2 */
+#define SV_COW_DROP_PV (1 << 2) /* 0x0004 - 4 */
+/* SV_NOT_USED (1 << 3) 0x0008 - 8 */
+#define SV_NOSTEAL (1 << 4) /* 0x0010 - 16 */
+#define SV_CONST_RETURN (1 << 5) /* 0x0020 - 32 */
+#define SV_MUTABLE_RETURN (1 << 6) /* 0x0040 - 64 */
+#define SV_SMAGIC (1 << 7) /* 0x0080 - 128 */
+#define SV_HAS_TRAILING_NUL (1 << 8) /* 0x0100 - 256 */
+#define SV_COW_SHARED_HASH_KEYS (1 << 9) /* 0x0200 - 512 */
/* This one is only enabled for PERL_OLD_COPY_ON_WRITE */
/* XXX This flag actually enabled for any COW. But it appears not to do
anything. Can we just remove it? Or will it serve some future
purpose. */
-#define SV_COW_OTHER_PVS 1024
+#define SV_COW_OTHER_PVS (1 << 10) /* 0x0400 - 1024 */
/* Make sv_2pv_flags return NULL if something is undefined. */
-#define SV_UNDEF_RETURNS_NULL 2048
+#define SV_UNDEF_RETURNS_NULL (1 << 11) /* 0x0800 - 2048 */
/* Tell sv_utf8_upgrade() to not check to see if an upgrade is really needed.
* This is used when the caller has already determined it is, and avoids
* redundant work */
-#define SV_FORCE_UTF8_UPGRADE 4096
+#define SV_FORCE_UTF8_UPGRADE (1 << 12) /* 0x1000 - 4096 */
/* if (after resolving magic etc), the SV is found to be overloaded,
* don't call the overload magic, just return as-is */
-#define SV_SKIP_OVERLOAD 8192
-#define SV_CATBYTES 16384
-#define SV_CATUTF8 32768
+#define SV_SKIP_OVERLOAD (1 << 13) /* 0x2000 - 8192 */
+#define SV_CATBYTES (1 << 14) /* 0x4000 - 16384 */
+#define SV_CATUTF8 (1 << 15) /* 0x8000 - 32768 */
/* The core is safe for this COW optimisation. XS code on CPAN may not be.
So only default to doing the COW setup if we're in the core.
@@ -2077,32 +2149,51 @@ Returns the hash for C<sv> created by C<L</newSVpvn_share>>.
#define sv_usepvn(sv, p, l) sv_usepvn_flags(sv, p, l, 0)
#define sv_usepvn_mg(sv, p, l) sv_usepvn_flags(sv, p, l, SV_SMAGIC)
-/* We are about to replace the SV's current value. So if it's copy on write
- we need to normalise it. Use the SV_COW_DROP_PV flag hint to say that
- the value is about to get thrown away, so drop the PV rather than go to
- the effort of making a read-write copy only for it to get immediately
- discarded. */
+/*
+=for apidoc Am|void|SV_CHECK_THINKFIRST_COW_DROP|SV * sv
+
+Call this when you are about to replace the PV value in C<sv>, which is
+potentially copy-on-write. It stops any sharing with other SVs, so that no
+Copy on Write (COW) actually happens. This COW would be useless, as it would
+immediately get changed to something else. This function also removes any
+other encumbrances that would be problematic when changing C<sv>.
+
+=cut
+*/
#define SV_CHECK_THINKFIRST_COW_DROP(sv) if (SvTHINKFIRST(sv)) \
- sv_force_normal_flags(sv, SV_COW_DROP_PV)
+ sv_force_normal_flags(sv, SV_COW_DROP_PV)
#ifdef PERL_COPY_ON_WRITE
# define SvCANCOW(sv) \
- (SvIsCOW(sv) \
- ? SvLEN(sv) ? CowREFCNT(sv) != SV_COW_REFCNT_MAX : 1 \
- : (SvFLAGS(sv) & CAN_COW_MASK) == CAN_COW_FLAGS \
- && SvCUR(sv)+1 < SvLEN(sv))
+ (SvIsCOW(sv) \
+ ? SvLEN(sv) ? CowREFCNT(sv) != SV_COW_REFCNT_MAX : 1 \
+ : (SvFLAGS(sv) & CAN_COW_MASK) == CAN_COW_FLAGS \
+ && SvCUR(sv)+1 < SvLEN(sv))
/* Note: To allow 256 COW "copies", a refcnt of 0 means 1. */
# define CowREFCNT(sv) (*(U8 *)(SvPVX(sv)+SvLEN(sv)-1))
# define SV_COW_REFCNT_MAX nBIT_UMAX(sizeof(U8) * CHARBITS)
# define CAN_COW_MASK (SVf_POK|SVf_ROK|SVp_POK|SVf_FAKE| \
- SVf_OOK|SVf_BREAK|SVf_READONLY|SVf_PROTECT)
+ SVf_OOK|SVf_BREAK|SVf_READONLY|SVf_PROTECT)
#endif
#define CAN_COW_FLAGS (SVp_POK|SVf_POK)
+/*
+=for apidoc Am|void|SV_CHECK_THINKFIRST|SV * sv
+
+Remove any encumbrances from C<sv>, that need to be taken care of before it
+is modifiable. For example if it is Copy on Write (COW), now is the time to
+make that copy.
+
+If you know that you are about to change the PV value of C<sv>, instead use
+L</C<SV_CHECK_THINKFIRST_COW_DROP>> to avoid the write that would be
+immediately written again.
+
+=cut
+*/
#define SV_CHECK_THINKFIRST(sv) if (SvTHINKFIRST(sv)) \
- sv_force_normal_flags(sv, 0)
+ sv_force_normal_flags(sv, 0)
/* all these 'functions' are now just macros */
@@ -2119,7 +2210,7 @@ Returns the hash for C<sv> created by C<L</newSVpvn_share>>.
#define sv_catpvn_nomg(dsv, sstr, slen) sv_catpvn_flags(dsv, sstr, slen, 0)
#define sv_catpv_nomg(dsv, sstr) sv_catpv_flags(dsv, sstr, 0)
#define sv_setsv(dsv, ssv) \
- sv_setsv_flags(dsv, ssv, SV_GMAGIC|SV_DO_COW_SVSETSV)
+ sv_setsv_flags(dsv, ssv, SV_GMAGIC|SV_DO_COW_SVSETSV)
#define sv_setsv_nomg(dsv, ssv) sv_setsv_flags(dsv, ssv, SV_DO_COW_SVSETSV)
#define sv_catsv(dsv, ssv) sv_catsv_flags(dsv, ssv, SV_GMAGIC)
#define sv_catsv_nomg(dsv, ssv) sv_catsv_flags(dsv, ssv, 0)
@@ -2143,40 +2234,42 @@ Returns the hash for C<sv> created by C<L</newSVpvn_share>>.
#define sv_eq(sv1, sv2) sv_eq_flags(sv1, sv2, SV_GMAGIC)
#define sv_cmp(sv1, sv2) sv_cmp_flags(sv1, sv2, SV_GMAGIC)
#define sv_cmp_locale(sv1, sv2) sv_cmp_locale_flags(sv1, sv2, SV_GMAGIC)
+#define sv_numeq(sv1, sv2) sv_numeq_flags(sv1, sv2, SV_GMAGIC)
+#define sv_streq(sv1, sv2) sv_streq_flags(sv1, sv2, SV_GMAGIC)
#define sv_collxfrm(sv, nxp) sv_collxfrm_flags(sv, nxp, SV_GMAGIC)
#define sv_2bool(sv) sv_2bool_flags(sv, SV_GMAGIC)
#define sv_2bool_nomg(sv) sv_2bool_flags(sv, 0)
#define sv_insert(bigstr, offset, len, little, littlelen) \
- Perl_sv_insert_flags(aTHX_ (bigstr),(offset), (len), (little), \
- (littlelen), SV_GMAGIC)
+ Perl_sv_insert_flags(aTHX_ (bigstr),(offset), (len), (little), \
+ (littlelen), SV_GMAGIC)
#define sv_mortalcopy(sv) \
- Perl_sv_mortalcopy_flags(aTHX_ sv, SV_GMAGIC|SV_DO_COW_SVSETSV)
+ Perl_sv_mortalcopy_flags(aTHX_ sv, SV_GMAGIC|SV_DO_COW_SVSETSV)
#define sv_cathek(sv,hek) \
- STMT_START { \
- HEK * const bmxk = hek; \
- sv_catpvn_flags(sv, HEK_KEY(bmxk), HEK_LEN(bmxk), \
- HEK_UTF8(bmxk) ? SV_CATUTF8 : SV_CATBYTES); \
- } STMT_END
+ STMT_START { \
+ HEK * const bmxk = hek; \
+ sv_catpvn_flags(sv, HEK_KEY(bmxk), HEK_LEN(bmxk), \
+ HEK_UTF8(bmxk) ? SV_CATUTF8 : SV_CATBYTES); \
+ } STMT_END
/* Should be named SvCatPVN_utf8_upgrade? */
#define sv_catpvn_nomg_utf8_upgrade(dsv, sstr, slen, nsv) \
- STMT_START { \
- if (!(nsv)) \
- nsv = newSVpvn_flags(sstr, slen, SVs_TEMP); \
- else \
- sv_setpvn(nsv, sstr, slen); \
- SvUTF8_off(nsv); \
- sv_utf8_upgrade(nsv); \
- sv_catsv_nomg(dsv, nsv); \
- } STMT_END
-#define sv_catpvn_nomg_maybeutf8(dsv, sstr, slen, is_utf8) \
- sv_catpvn_flags(dsv, sstr, slen, (is_utf8)?SV_CATUTF8:SV_CATBYTES)
+ STMT_START { \
+ if (!(nsv)) \
+ nsv = newSVpvn_flags(sstr, slen, SVs_TEMP); \
+ else \
+ sv_setpvn(nsv, sstr, slen); \
+ SvUTF8_off(nsv); \
+ sv_utf8_upgrade(nsv); \
+ sv_catsv_nomg(dsv, nsv); \
+ } STMT_END
+#define sv_catpvn_nomg_maybeutf8(dsv, sstr, len, is_utf8) \
+ sv_catpvn_flags(dsv, sstr, len, (is_utf8)?SV_CATUTF8:SV_CATBYTES)
#if defined(PERL_CORE) || defined(PERL_EXT)
# define sv_or_pv_len_utf8(sv, pv, bytelen) \
(SvGAMAGIC(sv) \
- ? utf8_length((U8 *)(pv), (U8 *)(pv)+(bytelen)) \
- : sv_len_utf8(sv))
+ ? utf8_length((U8 *)(pv), (U8 *)(pv)+(bytelen)) \
+ : sv_len_utf8(sv))
#endif
/*
@@ -2196,21 +2289,16 @@ for the original SV is incremented.
/*
=for apidoc_section $SV
-=for apidoc Am|void|SvGETMAGIC|SV* sv
-Invokes C<L</mg_get>> on an SV if it has 'get' magic. For example, this
-will call C<FETCH> on a tied variable. This macro evaluates its
-argument more than once.
-
=for apidoc Am|void|SvSETMAGIC|SV* sv
Invokes C<L</mg_set>> on an SV if it has 'set' magic. This is necessary
after modifying a scalar, in case it is a magical variable like C<$|>
or a tied variable (it calls C<STORE>). This macro evaluates its
argument more than once.
-=for apidoc Am|void|SvSetSV|SV* dsv|SV* ssv
-=for apidoc_item SvSetMagicSV
-=for apidoc_item SvSetSV_nosteal
-=for apidoc_item SvSetMagicSV_nosteal
+=for apidoc Am|void|SvSetMagicSV|SV* dsv|SV* ssv
+=for apidoc_item SvSetMagicSV_nosteal
+=for apidoc_item SvSetSV
+=for apidoc_item SvSetSV_nosteal
if C<dsv> is the same as C<ssv>, these do nothing. Otherwise they all call
some form of C<L</sv_setsv>>. They may evaluate their arguments more than
@@ -2253,42 +2341,55 @@ existing size, but instead it is the total size C<sv> should be.
Ensures that sv is a SVt_PV and that its SvCUR is 0, and that it is
properly null terminated. Equivalent to sv_setpvs(""), but more efficient.
+=for apidoc Am|char *|SvPVCLEAR_FRESH|SV* sv
+
+Like SvPVCLEAR, but optimized for newly-minted SVt_PV/PVIV/PVNV/PVMG
+that already have a PV buffer allocated, but no SvTHINKFIRST.
+
=cut
*/
#define SvPVCLEAR(sv) sv_setpv_bufsize(sv,0,0)
+#define SvPVCLEAR_FRESH(sv) sv_setpv_freshbuf(sv)
#define SvSHARE(sv) PL_sharehook(aTHX_ sv)
#define SvLOCK(sv) PL_lockhook(aTHX_ sv)
#define SvUNLOCK(sv) PL_unlockhook(aTHX_ sv)
#define SvDESTROYABLE(sv) PL_destroyhook(aTHX_ sv)
-#define SvGETMAGIC(x) ((void)(UNLIKELY(SvGMAGICAL(x)) && mg_get(x)))
#define SvSETMAGIC(x) STMT_START { if (UNLIKELY(SvSMAGICAL(x))) mg_set(x); } STMT_END
#define SvSetSV_and(dst,src,finally) \
- STMT_START { \
- if (LIKELY((dst) != (src))) { \
- sv_setsv(dst, src); \
- finally; \
- } \
- } STMT_END
+ STMT_START { \
+ SV * src_ = src; \
+ SV * dst_ = dst; \
+ if (LIKELY((dst_) != (src_))) { \
+ sv_setsv(dst_, src_); \
+ finally; \
+ } \
+ } STMT_END
+
#define SvSetSV_nosteal_and(dst,src,finally) \
- STMT_START { \
- if (LIKELY((dst) != (src))) { \
- sv_setsv_flags(dst, src, SV_GMAGIC | SV_NOSTEAL | SV_DO_COW_SVSETSV); \
- finally; \
- } \
- } STMT_END
+ STMT_START { \
+ SV * src_ = src; \
+ SV * dst_ = dst; \
+ if (LIKELY((dst_) != (src_))) { \
+ sv_setsv_flags(dst_, src_, \
+ SV_GMAGIC \
+ | SV_NOSTEAL \
+ | SV_DO_COW_SVSETSV); \
+ finally; \
+ } \
+ } STMT_END
#define SvSetSV(dst,src) \
- SvSetSV_and(dst,src,/*nothing*/;)
+ SvSetSV_and(dst,src,/*nothing*/;)
#define SvSetSV_nosteal(dst,src) \
- SvSetSV_nosteal_and(dst,src,/*nothing*/;)
+ SvSetSV_nosteal_and(dst,src,/*nothing*/;)
#define SvSetMagicSV(dst,src) \
- SvSetSV_and(dst,src,SvSETMAGIC(dst))
+ SvSetSV_and(dst,src,SvSETMAGIC(dst))
#define SvSetMagicSV_nosteal(dst,src) \
- SvSetSV_nosteal_and(dst,src,SvSETMAGIC(dst))
+ SvSetSV_nosteal_and(dst,src,SvSETMAGIC(dst))
#if !defined(SKIP_DEBUGGING)
@@ -2331,6 +2432,21 @@ See also C<L</PL_sv_yes>> and C<L</PL_sv_no>>.
#define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no)
+/*
+=for apidoc Am|void|sv_setbool|SV *sv|bool b
+=for apidoc_item |void|sv_setbool_mg|SV *sv|bool b
+
+These set an SV to a true or false boolean value, upgrading first if necessary.
+
+They differ only in that C<sv_setbool_mg> handles 'set' magic; C<sv_setbool>
+does not.
+
+=cut
+*/
+
+#define sv_setbool(sv, b) sv_setsv(sv, boolSV(b))
+#define sv_setbool_mg(sv, b) sv_setsv_mg(sv, boolSV(b))
+
#define isGV(sv) (SvTYPE(sv) == SVt_PVGV)
/* If I give every macro argument a different name, then there won't be bugs
where nested macros get confused. Been there, done that. */
@@ -2342,20 +2458,27 @@ Returns a boolean as to whether or not C<sv> is a GV with a pointer to a GP
=cut
*/
#define isGV_with_GP(pwadak) \
- (((SvFLAGS(pwadak) & (SVp_POK|SVpgv_GP)) == SVpgv_GP) \
- && (SvTYPE(pwadak) == SVt_PVGV || SvTYPE(pwadak) == SVt_PVLV))
-#define isGV_with_GP_on(sv) STMT_START { \
- assert (SvTYPE(sv) == SVt_PVGV || SvTYPE(sv) == SVt_PVLV); \
- assert (!SvPOKp(sv)); \
- assert (!SvIOKp(sv)); \
- (SvFLAGS(sv) |= SVpgv_GP); \
+ (((SvFLAGS(pwadak) & (SVp_POK|SVpgv_GP)) == SVpgv_GP) \
+ && (SvTYPE(pwadak) == SVt_PVGV || SvTYPE(pwadak) == SVt_PVLV))
+
+#define isGV_with_GP_on(sv) \
+ STMT_START { \
+ SV * sv_ = MUTABLE_SV(sv); \
+ assert (SvTYPE(sv_) == SVt_PVGV || SvTYPE(sv_) == SVt_PVLV); \
+ assert (!SvPOKp(sv_)); \
+ assert (!SvIOKp(sv_)); \
+ (SvFLAGS(sv_) |= SVpgv_GP); \
} STMT_END
-#define isGV_with_GP_off(sv) STMT_START { \
- assert (SvTYPE(sv) == SVt_PVGV || SvTYPE(sv) == SVt_PVLV); \
- assert (!SvPOKp(sv)); \
- assert (!SvIOKp(sv)); \
- (SvFLAGS(sv) &= ~SVpgv_GP); \
+
+#define isGV_with_GP_off(sv) \
+ STMT_START { \
+ SV * sv_ = MUTABLE_SV(sv); \
+ assert (SvTYPE(sv_) == SVt_PVGV || SvTYPE(sv_) == SVt_PVLV); \
+ assert (!SvPOKp(sv_)); \
+ assert (!SvIOKp(sv_)); \
+ (SvFLAGS(sv_) &= ~SVpgv_GP); \
} STMT_END
+
#ifdef PERL_CORE
# define isGV_or_RVCV(kadawp) \
(isGV(kadawp) || (SvROK(kadawp) && SvTYPE(SvRV(kadawp)) == SVt_PVCV))
@@ -2363,12 +2486,12 @@ Returns a boolean as to whether or not C<sv> is a GV with a pointer to a GP
#define isREGEXP(sv) \
(SvTYPE(sv) == SVt_REGEXP \
|| (SvFLAGS(sv) & (SVTYPEMASK|SVpgv_GP|SVf_FAKE)) \
- == (SVt_PVLV|SVf_FAKE))
+ == (SVt_PVLV|SVf_FAKE))
#ifdef PERL_ANY_COW
# define SvGROW(sv,len) \
- (SvIsCOW(sv) || SvLEN(sv) < (len) ? sv_grow(sv,len) : SvPVX(sv))
+ (SvIsCOW(sv) || SvLEN(sv) < (len) ? sv_grow(sv,len) : SvPVX(sv))
#else
# define SvGROW(sv,len) (SvLEN(sv) < (len) ? sv_grow(sv,len) : SvPVX(sv))
#endif
@@ -2434,51 +2557,59 @@ Evaluates C<sv> more than once. Sets C<len> to 0 if C<SvOOK(sv)> is false.
10:28 <+meta> Nicholas: crash
*/
# define SvOOK_offset(sv, offset) STMT_START { \
- STATIC_ASSERT_STMT(sizeof(offset) == sizeof(STRLEN)); \
- if (SvOOK(sv)) { \
- const U8 *_crash = (U8*)SvPVX_const(sv); \
- (offset) = *--_crash; \
- if (!(offset)) { \
- _crash -= sizeof(STRLEN); \
- Copy(_crash, (U8 *)&(offset), sizeof(STRLEN), U8); \
- } \
- { \
- /* Validate the preceding buffer's sentinels to \
- verify that no-one is using it. */ \
- const U8 *const _bonk = (U8*)SvPVX_const(sv) - (offset);\
- while (_crash > _bonk) { \
- --_crash; \
- assert (*_crash == (U8)PTR2UV(_crash)); \
- } \
- } \
- } else { \
- (offset) = 0; \
- } \
+ STATIC_ASSERT_STMT(sizeof(offset) == sizeof(STRLEN)); \
+ if (SvOOK(sv)) { \
+ const U8 *_crash = (U8*)SvPVX_const(sv); \
+ (offset) = *--_crash; \
+ if (!(offset)) { \
+ _crash -= sizeof(STRLEN); \
+ Copy(_crash, (U8 *)&(offset), sizeof(STRLEN), U8); \
+ } \
+ { \
+ /* Validate the preceding buffer's sentinels to \
+ verify that no-one is using it. */ \
+ const U8 *const _bonk = (U8*)SvPVX_const(sv) - (offset);\
+ while (_crash > _bonk) { \
+ --_crash; \
+ assert (*_crash == (U8)PTR2UV(_crash)); \
+ } \
+ } \
+ } else { \
+ (offset) = 0; \
+ } \
} STMT_END
#else
/* This is the same code, but avoids using any temporary variables: */
# define SvOOK_offset(sv, offset) STMT_START { \
- STATIC_ASSERT_STMT(sizeof(offset) == sizeof(STRLEN)); \
- if (SvOOK(sv)) { \
- (offset) = ((U8*)SvPVX_const(sv))[-1]; \
- if (!(offset)) { \
- Copy(SvPVX_const(sv) - 1 - sizeof(STRLEN), \
- (U8*)&(offset), sizeof(STRLEN), U8); \
- } \
- } else { \
- (offset) = 0; \
- } \
+ STATIC_ASSERT_STMT(sizeof(offset) == sizeof(STRLEN)); \
+ if (SvOOK(sv)) { \
+ (offset) = ((U8*)SvPVX_const(sv))[-1]; \
+ if (!(offset)) { \
+ Copy(SvPVX_const(sv) - 1 - sizeof(STRLEN), \
+ (U8*)&(offset), sizeof(STRLEN), U8); \
+ } \
+ } else { \
+ (offset) = 0; \
+ } \
} STMT_END
#endif
+/*
+=for apidoc_section $io
+=for apidoc newIO
+
+Create a new IO, setting the reference count to 1.
+
+=cut
+*/
#define newIO() MUTABLE_IO(newSV_type(SVt_PVIO))
#if defined(PERL_CORE) || defined(PERL_EXT)
# define SV_CONST(name) \
- PL_sv_consts[SV_CONST_##name] \
- ? PL_sv_consts[SV_CONST_##name] \
- : (PL_sv_consts[SV_CONST_##name] = newSVpv_share(#name, 0))
+ PL_sv_consts[SV_CONST_##name] \
+ ? PL_sv_consts[SV_CONST_##name] \
+ : (PL_sv_consts[SV_CONST_##name] = newSVpv_share(#name, 0))
# define SV_CONST_TIESCALAR 0
# define SV_CONST_TIEARRAY 1
@@ -2548,14 +2679,36 @@ Evaluates C<sv> more than once. Sets C<len> to 0 if C<SvOOK(sv)> is false.
/* The following two macros compute the necessary offsets for the above
* trick and store them in SvANY for SvIV() (and friends) to use. */
-#ifdef PERL_CORE
# define SET_SVANY_FOR_BODYLESS_IV(sv) \
- SvANY(sv) = (XPVIV*)((char*)&(sv->sv_u.svu_iv) \
- - STRUCT_OFFSET(XPVIV, xiv_iv))
+ STMT_START { \
+ SV * sv_ = MUTABLE_SV(sv); \
+ SvANY(sv_) = (XPVIV*)((char*)&(sv_->sv_u.svu_iv) \
+ - STRUCT_OFFSET(XPVIV, xiv_iv)); \
+ } STMT_END
# define SET_SVANY_FOR_BODYLESS_NV(sv) \
- SvANY(sv) = (XPVNV*)((char*)&(sv->sv_u.svu_nv) \
- - STRUCT_OFFSET(XPVNV, xnv_u.xnv_nv))
+ STMT_START { \
+ SV * sv_ = MUTABLE_SV(sv); \
+ SvANY(sv_) = (XPVNV*)((char*)&(sv_->sv_u.svu_nv) \
+ - STRUCT_OFFSET(XPVNV, xnv_u.xnv_nv)); \
+ } STMT_END
+
+#if defined(PERL_CORE) && defined(USE_ITHREADS)
+/* Certain cases in Perl_ss_dup have been merged, by relying on the fact
+ that currently av_dup, gv_dup and hv_dup are the same as sv_dup.
+ If this changes, please unmerge ss_dup.
+ Likewise, sv_dup_inc_multiple() relies on this fact. */
+# define sv_dup_inc_NN(s,t) SvREFCNT_inc_NN(sv_dup_inc(s,t))
+# define av_dup(s,t) MUTABLE_AV(sv_dup((const SV *)s,t))
+# define av_dup_inc(s,t) MUTABLE_AV(sv_dup_inc((const SV *)s,t))
+# define hv_dup(s,t) MUTABLE_HV(sv_dup((const SV *)s,t))
+# define hv_dup_inc(s,t) MUTABLE_HV(sv_dup_inc((const SV *)s,t))
+# define cv_dup(s,t) MUTABLE_CV(sv_dup((const SV *)s,t))
+# define cv_dup_inc(s,t) MUTABLE_CV(sv_dup_inc((const SV *)s,t))
+# define io_dup(s,t) MUTABLE_IO(sv_dup((const SV *)s,t))
+# define io_dup_inc(s,t) MUTABLE_IO(sv_dup_inc((const SV *)s,t))
+# define gv_dup(s,t) MUTABLE_GV(sv_dup((const SV *)s,t))
+# define gv_dup_inc(s,t) MUTABLE_GV(sv_dup_inc((const SV *)s,t))
#endif
/*
diff --git a/Master/tlpkg/tlperl/lib/CORE/sv_inline.h b/Master/tlpkg/tlperl/lib/CORE/sv_inline.h
new file mode 100755
index 00000000000..3adc130575b
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/CORE/sv_inline.h
@@ -0,0 +1,1002 @@
+/* sv_inline.h
+ *
+ * Copyright (C) 2022 by Larry Wall and others
+ *
+ * You may distribute under the terms of either the GNU General Public
+ * License or the Artistic License, as specified in the README file.
+ *
+ */
+
+/* This file contains the newSV_type and newSV_type_mortal functions, as well as
+ * the various struct and macro definitions they require. In the main, these
+ * definitions were moved from sv.c, where many of them continue to also be used.
+ * (In Perl_more_bodies, Perl_sv_upgrade and Perl_sv_clear, for example.) Code
+ * comments associated with definitions and functions were also copied across
+ * verbatim.
+ *
+ * The rationale for having these as inline functions, rather than in sv.c, is
+ * that the target type is very often known at compile time, and therefore
+ * optimum code can be emitted by the compiler, rather than having all calls
+ * traverse the many branches of Perl_sv_upgrade at runtime.
+ */
+
+/* This definition came from perl.h*/
+
+/* The old value was hard coded at 1008. (4096-16) seems to be a bit faster,
+ at least on FreeBSD. YMMV, so experiment. */
+#ifndef PERL_ARENA_SIZE
+#define PERL_ARENA_SIZE 4080
+#endif
+
+/* All other pre-existing definitions and functions that were moved into this
+ * file originally came from sv.c. */
+
+#ifdef PERL_POISON
+# define SvARENA_CHAIN(sv) ((sv)->sv_u.svu_rv)
+# define SvARENA_CHAIN_SET(sv,val) (sv)->sv_u.svu_rv = MUTABLE_SV((val))
+/* Whilst I'd love to do this, it seems that things like to check on
+ unreferenced scalars
+# define POISON_SV_HEAD(sv) PoisonNew(sv, 1, struct STRUCT_SV)
+*/
+# define POISON_SV_HEAD(sv) PoisonNew(&SvANY(sv), 1, void *), \
+ PoisonNew(&SvREFCNT(sv), 1, U32)
+#else
+# define SvARENA_CHAIN(sv) SvANY(sv)
+# define SvARENA_CHAIN_SET(sv,val) SvANY(sv) = (void *)(val)
+# define POISON_SV_HEAD(sv)
+#endif
+
+#ifdef PERL_MEM_LOG
+# define MEM_LOG_NEW_SV(sv, file, line, func) \
+ Perl_mem_log_new_sv(sv, file, line, func)
+# define MEM_LOG_DEL_SV(sv, file, line, func) \
+ Perl_mem_log_del_sv(sv, file, line, func)
+#else
+# define MEM_LOG_NEW_SV(sv, file, line, func) NOOP
+# define MEM_LOG_DEL_SV(sv, file, line, func) NOOP
+#endif
+
+#define uproot_SV(p) \
+ STMT_START { \
+ (p) = PL_sv_root; \
+ PL_sv_root = MUTABLE_SV(SvARENA_CHAIN(p)); \
+ ++PL_sv_count; \
+ } STMT_END
+
+/* Perl_more_sv lives in sv.c, we don't want to inline it.
+ * but the function declaration seems to be needed. */
+SV* Perl_more_sv(pTHX);
+
+/* new_SV(): return a new, empty SV head */
+
+#ifdef DEBUG_LEAKING_SCALARS
+/* provide a real function for a debugger to play with */
+STATIC SV*
+S_new_SV(pTHX_ const char *file, int line, const char *func)
+{
+ SV* sv;
+
+ if (PL_sv_root)
+ uproot_SV(sv);
+ else
+ sv = Perl_more_sv(aTHX);
+ SvANY(sv) = 0;
+ SvREFCNT(sv) = 1;
+ SvFLAGS(sv) = 0;
+ sv->sv_debug_optype = PL_op ? PL_op->op_type : 0;
+ sv->sv_debug_line = (U16) (PL_parser && PL_parser->copline != NOLINE
+ ? PL_parser->copline
+ : PL_curcop
+ ? CopLINE(PL_curcop)
+ : 0
+ );
+ sv->sv_debug_inpad = 0;
+ sv->sv_debug_parent = NULL;
+ sv->sv_debug_file = PL_curcop ? savesharedpv(CopFILE(PL_curcop)): NULL;
+
+ sv->sv_debug_serial = PL_sv_serial++;
+
+ MEM_LOG_NEW_SV(sv, file, line, func);
+ DEBUG_m(PerlIO_printf(Perl_debug_log, "0x%" UVxf ": (%05ld) new_SV (from %s:%d [%s])\n",
+ PTR2UV(sv), (long)sv->sv_debug_serial, file, line, func));
+
+ return sv;
+}
+# define new_SV(p) (p)=S_new_SV(aTHX_ __FILE__, __LINE__, FUNCTION__)
+
+#else
+# define new_SV(p) \
+ STMT_START { \
+ if (PL_sv_root) \
+ uproot_SV(p); \
+ else \
+ (p) = Perl_more_sv(aTHX); \
+ SvANY(p) = 0; \
+ SvREFCNT(p) = 1; \
+ SvFLAGS(p) = 0; \
+ MEM_LOG_NEW_SV(p, __FILE__, __LINE__, FUNCTION__); \
+ } STMT_END
+#endif
+
+
+typedef struct xpvhv_with_aux XPVHV_WITH_AUX;
+
+struct body_details {
+ U8 body_size; /* Size to allocate */
+ U8 copy; /* Size of structure to copy (may be shorter) */
+ U8 offset; /* Size of unalloced ghost fields to first alloced field*/
+ PERL_BITFIELD8 type : 5; /* We have space for a sanity check. */
+ PERL_BITFIELD8 cant_upgrade : 1;/* Cannot upgrade this type */
+ PERL_BITFIELD8 zero_nv : 1; /* zero the NV when upgrading from this */
+ PERL_BITFIELD8 arena : 1; /* Allocated from an arena */
+ U32 arena_size; /* Size of arena to allocate */
+};
+
+#define ALIGNED_TYPE_NAME(name) name##_aligned
+#define ALIGNED_TYPE(name) \
+ typedef union { \
+ name align_me; \
+ NV nv; \
+ IV iv; \
+ } ALIGNED_TYPE_NAME(name)
+
+ALIGNED_TYPE(regexp);
+ALIGNED_TYPE(XPVGV);
+ALIGNED_TYPE(XPVLV);
+ALIGNED_TYPE(XPVAV);
+ALIGNED_TYPE(XPVHV);
+ALIGNED_TYPE(XPVHV_WITH_AUX);
+ALIGNED_TYPE(XPVCV);
+ALIGNED_TYPE(XPVFM);
+ALIGNED_TYPE(XPVIO);
+ALIGNED_TYPE(XPVOBJ);
+
+#define HADNV FALSE
+#define NONV TRUE
+
+
+#ifdef PURIFY
+/* With -DPURFIY we allocate everything directly, and don't use arenas.
+ This seems a rather elegant way to simplify some of the code below. */
+#define HASARENA FALSE
+#else
+#define HASARENA TRUE
+#endif
+#define NOARENA FALSE
+
+/* Size the arenas to exactly fit a given number of bodies. A count
+ of 0 fits the max number bodies into a PERL_ARENA_SIZE.block,
+ simplifying the default. If count > 0, the arena is sized to fit
+ only that many bodies, allowing arenas to be used for large, rare
+ bodies (XPVFM, XPVIO) without undue waste. The arena size is
+ limited by PERL_ARENA_SIZE, so we can safely oversize the
+ declarations.
+ */
+#define FIT_ARENA0(body_size) \
+ ((size_t)(PERL_ARENA_SIZE / body_size) * body_size)
+#define FIT_ARENAn(count,body_size) \
+ ( count * body_size <= PERL_ARENA_SIZE) \
+ ? count * body_size \
+ : FIT_ARENA0 (body_size)
+#define FIT_ARENA(count,body_size) \
+ (U32)(count \
+ ? FIT_ARENAn (count, body_size) \
+ : FIT_ARENA0 (body_size))
+
+/* Calculate the length to copy. Specifically work out the length less any
+ final padding the compiler needed to add. See the comment in sv_upgrade
+ for why copying the padding proved to be a bug. */
+
+#define copy_length(type, last_member) \
+ STRUCT_OFFSET(type, last_member) \
+ + sizeof (((type*)SvANY((const SV *)0))->last_member)
+
+static const struct body_details bodies_by_type[] = {
+ /* HEs use this offset for their arena. */
+ { 0, 0, 0, SVt_NULL, FALSE, NONV, NOARENA, 0 },
+
+ /* IVs are in the head, so the allocation size is 0. */
+ { 0,
+ sizeof(IV), /* This is used to copy out the IV body. */
+ STRUCT_OFFSET(XPVIV, xiv_iv), SVt_IV, FALSE, NONV,
+ NOARENA /* IVS don't need an arena */, 0
+ },
+
+#if NVSIZE <= IVSIZE
+ { 0, sizeof(NV),
+ STRUCT_OFFSET(XPVNV, xnv_u),
+ SVt_NV, FALSE, HADNV, NOARENA, 0 },
+#else
+ { sizeof(NV), sizeof(NV),
+ STRUCT_OFFSET(XPVNV, xnv_u),
+ SVt_NV, FALSE, HADNV, HASARENA, FIT_ARENA(0, sizeof(NV)) },
+#endif
+
+ { sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur),
+ copy_length(XPV, xpv_len) - STRUCT_OFFSET(XPV, xpv_cur),
+ + STRUCT_OFFSET(XPV, xpv_cur),
+ SVt_PV, FALSE, NONV, HASARENA,
+ FIT_ARENA(0, sizeof(XPV) - STRUCT_OFFSET(XPV, xpv_cur)) },
+
+ { sizeof(XINVLIST) - STRUCT_OFFSET(XPV, xpv_cur),
+ copy_length(XINVLIST, is_offset) - STRUCT_OFFSET(XPV, xpv_cur),
+ + STRUCT_OFFSET(XPV, xpv_cur),
+ SVt_INVLIST, TRUE, NONV, HASARENA,
+ FIT_ARENA(0, sizeof(XINVLIST) - STRUCT_OFFSET(XPV, xpv_cur)) },
+
+ { sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur),
+ copy_length(XPVIV, xiv_u) - STRUCT_OFFSET(XPV, xpv_cur),
+ + STRUCT_OFFSET(XPV, xpv_cur),
+ SVt_PVIV, FALSE, NONV, HASARENA,
+ FIT_ARENA(0, sizeof(XPVIV) - STRUCT_OFFSET(XPV, xpv_cur)) },
+
+ { sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur),
+ copy_length(XPVNV, xnv_u) - STRUCT_OFFSET(XPV, xpv_cur),
+ + STRUCT_OFFSET(XPV, xpv_cur),
+ SVt_PVNV, FALSE, HADNV, HASARENA,
+ FIT_ARENA(0, sizeof(XPVNV) - STRUCT_OFFSET(XPV, xpv_cur)) },
+
+ { sizeof(XPVMG), copy_length(XPVMG, xnv_u), 0, SVt_PVMG, FALSE, HADNV,
+ HASARENA, FIT_ARENA(0, sizeof(XPVMG)) },
+
+ { sizeof(ALIGNED_TYPE_NAME(regexp)),
+ sizeof(regexp),
+ 0,
+ SVt_REGEXP, TRUE, NONV, HASARENA,
+ FIT_ARENA(0, sizeof(ALIGNED_TYPE_NAME(regexp)))
+ },
+
+ { sizeof(ALIGNED_TYPE_NAME(XPVGV)), sizeof(XPVGV), 0, SVt_PVGV, TRUE, HADNV,
+ HASARENA, FIT_ARENA(0, sizeof(ALIGNED_TYPE_NAME(XPVGV))) },
+
+ { sizeof(ALIGNED_TYPE_NAME(XPVLV)), sizeof(XPVLV), 0, SVt_PVLV, TRUE, HADNV,
+ HASARENA, FIT_ARENA(0, sizeof(ALIGNED_TYPE_NAME(XPVLV))) },
+
+ { sizeof(ALIGNED_TYPE_NAME(XPVAV)),
+ copy_length(XPVAV, xav_alloc),
+ 0,
+ SVt_PVAV, TRUE, NONV, HASARENA,
+ FIT_ARENA(0, sizeof(ALIGNED_TYPE_NAME(XPVAV))) },
+
+ { sizeof(ALIGNED_TYPE_NAME(XPVHV)),
+ copy_length(XPVHV, xhv_max),
+ 0,
+ SVt_PVHV, TRUE, NONV, HASARENA,
+ FIT_ARENA(0, sizeof(ALIGNED_TYPE_NAME(XPVHV))) },
+
+ { sizeof(ALIGNED_TYPE_NAME(XPVCV)),
+ sizeof(XPVCV),
+ 0,
+ SVt_PVCV, TRUE, NONV, HASARENA,
+ FIT_ARENA(0, sizeof(ALIGNED_TYPE_NAME(XPVCV))) },
+
+ { sizeof(ALIGNED_TYPE_NAME(XPVFM)),
+ sizeof(XPVFM),
+ 0,
+ SVt_PVFM, TRUE, NONV, NOARENA,
+ FIT_ARENA(20, sizeof(ALIGNED_TYPE_NAME(XPVFM))) },
+
+ { sizeof(ALIGNED_TYPE_NAME(XPVIO)),
+ sizeof(XPVIO),
+ 0,
+ SVt_PVIO, TRUE, NONV, HASARENA,
+ FIT_ARENA(24, sizeof(ALIGNED_TYPE_NAME(XPVIO))) },
+
+ { sizeof(ALIGNED_TYPE_NAME(XPVOBJ)),
+ copy_length(XPVOBJ, xobject_fields),
+ 0,
+ SVt_PVOBJ, TRUE, NONV, HASARENA,
+ FIT_ARENA(0, sizeof(ALIGNED_TYPE_NAME(XPVOBJ))) },
+};
+
+#define new_body_allocated(sv_type) \
+ (void *)((char *)S_new_body(aTHX_ sv_type) \
+ - bodies_by_type[sv_type].offset)
+
+#ifdef PURIFY
+#if !(NVSIZE <= IVSIZE)
+# define new_XNV() safemalloc(sizeof(XPVNV))
+#endif
+#define new_XPVNV() safemalloc(sizeof(XPVNV))
+#define new_XPVMG() safemalloc(sizeof(XPVMG))
+
+#define del_body_by_type(p, type) safefree(p)
+
+#else /* !PURIFY */
+
+#if !(NVSIZE <= IVSIZE)
+# define new_XNV() new_body_allocated(SVt_NV)
+#endif
+#define new_XPVNV() new_body_allocated(SVt_PVNV)
+#define new_XPVMG() new_body_allocated(SVt_PVMG)
+
+#define del_body_by_type(p, type) \
+ del_body(p + bodies_by_type[(type)].offset, \
+ &PL_body_roots[(type)])
+
+#endif /* PURIFY */
+
+/* no arena for you! */
+
+#define new_NOARENA(details) \
+ safemalloc((details)->body_size + (details)->offset)
+#define new_NOARENAZ(details) \
+ safecalloc((details)->body_size + (details)->offset, 1)
+
+#ifndef PURIFY
+
+/* grab a new thing from the arena's free list, allocating more if necessary. */
+#define new_body_from_arena(xpv, root_index, type_meta) \
+ STMT_START { \
+ void ** const r3wt = &PL_body_roots[root_index]; \
+ xpv = (PTR_TBL_ENT_t*) (*((void **)(r3wt)) \
+ ? *((void **)(r3wt)) : Perl_more_bodies(aTHX_ root_index, \
+ type_meta.body_size,\
+ type_meta.arena_size)); \
+ *(r3wt) = *(void**)(xpv); \
+ } STMT_END
+
+PERL_STATIC_INLINE void *
+S_new_body(pTHX_ const svtype sv_type)
+{
+ void *xpv;
+ new_body_from_arena(xpv, sv_type, bodies_by_type[sv_type]);
+ return xpv;
+}
+
+#endif
+
+static const struct body_details fake_rv =
+ { 0, 0, 0, SVt_IV, FALSE, NONV, NOARENA, 0 };
+
+static const struct body_details fake_hv_with_aux =
+ /* The SVt_IV arena is used for (larger) PVHV bodies. */
+ { sizeof(ALIGNED_TYPE_NAME(XPVHV_WITH_AUX)),
+ copy_length(XPVHV, xhv_max),
+ 0,
+ SVt_PVHV, TRUE, NONV, HASARENA,
+ FIT_ARENA(0, sizeof(ALIGNED_TYPE_NAME(XPVHV_WITH_AUX))) };
+
+/*
+=for apidoc newSV_type
+
+Creates a new SV, of the type specified. The reference count for the new SV
+is set to 1.
+
+=cut
+*/
+
+PERL_STATIC_INLINE SV *
+Perl_newSV_type(pTHX_ const svtype type)
+{
+ SV *sv;
+ void* new_body;
+ const struct body_details *type_details;
+
+ new_SV(sv);
+
+ type_details = bodies_by_type + type;
+
+ SvFLAGS(sv) &= ~SVTYPEMASK;
+ SvFLAGS(sv) |= type;
+
+ switch (type) {
+ case SVt_NULL:
+ break;
+ case SVt_IV:
+ SET_SVANY_FOR_BODYLESS_IV(sv);
+ SvIV_set(sv, 0);
+ break;
+ case SVt_NV:
+#if NVSIZE <= IVSIZE
+ SET_SVANY_FOR_BODYLESS_NV(sv);
+#else
+ SvANY(sv) = new_XNV();
+#endif
+ SvNV_set(sv, 0);
+ break;
+ case SVt_PVHV:
+ case SVt_PVAV:
+ case SVt_PVOBJ:
+ assert(type_details->body_size);
+
+#ifndef PURIFY
+ assert(type_details->arena);
+ assert(type_details->arena_size);
+ /* This points to the start of the allocated area. */
+ new_body = S_new_body(aTHX_ type);
+ /* xpvav and xpvhv have no offset, so no need to adjust new_body */
+ assert(!(type_details->offset));
+#else
+ /* We always allocated the full length item with PURIFY. To do this
+ we fake things so that arena is false for all 16 types.. */
+ new_body = new_NOARENAZ(type_details);
+#endif
+ SvANY(sv) = new_body;
+
+ SvSTASH_set(sv, NULL);
+ SvMAGIC_set(sv, NULL);
+
+ switch(type) {
+ case SVt_PVAV:
+ AvFILLp(sv) = -1;
+ AvMAX(sv) = -1;
+ AvALLOC(sv) = NULL;
+
+ AvREAL_only(sv);
+ break;
+ case SVt_PVHV:
+ HvTOTALKEYS(sv) = 0;
+ /* start with PERL_HASH_DEFAULT_HvMAX+1 buckets: */
+ HvMAX(sv) = PERL_HASH_DEFAULT_HvMAX;
+
+ assert(!SvOK(sv));
+ SvOK_off(sv);
+#ifndef NODEFAULT_SHAREKEYS
+ HvSHAREKEYS_on(sv); /* key-sharing on by default */
+#endif
+ /* start with PERL_HASH_DEFAULT_HvMAX+1 buckets: */
+ HvMAX(sv) = PERL_HASH_DEFAULT_HvMAX;
+ break;
+ case SVt_PVOBJ:
+ ObjectMAXFIELD(sv) = -1;
+ ObjectFIELDS(sv) = NULL;
+ break;
+ default:
+ NOT_REACHED;
+ }
+
+ sv->sv_u.svu_array = NULL; /* or svu_hash */
+ break;
+
+ case SVt_PVIV:
+ case SVt_PVIO:
+ case SVt_PVGV:
+ case SVt_PVCV:
+ case SVt_PVLV:
+ case SVt_INVLIST:
+ case SVt_REGEXP:
+ case SVt_PVMG:
+ case SVt_PVNV:
+ case SVt_PV:
+ /* For a type known at compile time, it should be possible for the
+ * compiler to deduce the value of (type_details->arena), resolve
+ * that branch below, and inline the relevant values from
+ * bodies_by_type. Except, at least for gcc, it seems not to do that.
+ * We help it out here with two deviations from sv_upgrade:
+ * (1) Minor rearrangement here, so that PVFM - the only type at this
+ * point not to be allocated from an array appears last, not PV.
+ * (2) The ASSUME() statement here for everything that isn't PVFM.
+ * Obviously this all only holds as long as it's a true reflection of
+ * the bodies_by_type lookup table. */
+#ifndef PURIFY
+ ASSUME(type_details->arena);
+#endif
+ /* FALLTHROUGH */
+ case SVt_PVFM:
+
+ assert(type_details->body_size);
+ /* We always allocated the full length item with PURIFY. To do this
+ we fake things so that arena is false for all 16 types.. */
+#ifndef PURIFY
+ if(type_details->arena) {
+ /* This points to the start of the allocated area. */
+ new_body = S_new_body(aTHX_ type);
+ Zero(new_body, type_details->body_size, char);
+ new_body = ((char *)new_body) - type_details->offset;
+ } else
+#endif
+ {
+ new_body = new_NOARENAZ(type_details);
+ }
+ SvANY(sv) = new_body;
+
+ if (UNLIKELY(type == SVt_PVIO)) {
+ IO * const io = MUTABLE_IO(sv);
+ GV *iogv = gv_fetchpvs("IO::File::", GV_ADD, SVt_PVHV);
+
+ SvOBJECT_on(io);
+ /* Clear the stashcache because a new IO could overrule a package
+ name */
+ DEBUG_o(Perl_deb(aTHX_ "sv_upgrade clearing PL_stashcache\n"));
+ hv_clear(PL_stashcache);
+
+ SvSTASH_set(io, MUTABLE_HV(SvREFCNT_inc(GvHV(iogv))));
+ IoPAGE_LEN(sv) = 60;
+ }
+
+ sv->sv_u.svu_rv = NULL;
+ break;
+ default:
+ Perl_croak(aTHX_ "panic: sv_upgrade to unknown type %lu",
+ (unsigned long)type);
+ }
+
+ return sv;
+}
+
+/*
+=for apidoc newSV_type_mortal
+
+Creates a new mortal SV, of the type specified. The reference count for the
+new SV is set to 1.
+
+This is equivalent to
+ SV* sv = sv_2mortal(newSV_type(<some type>))
+and
+ SV* sv = sv_newmortal();
+ sv_upgrade(sv, <some_type>)
+but should be more efficient than both of them. (Unless sv_2mortal is inlined
+at some point in the future.)
+
+=cut
+*/
+
+PERL_STATIC_INLINE SV *
+Perl_newSV_type_mortal(pTHX_ const svtype type)
+{
+ SV *sv = newSV_type(type);
+ SSize_t ix = ++PL_tmps_ix;
+ if (UNLIKELY(ix >= PL_tmps_max))
+ ix = Perl_tmps_grow_p(aTHX_ ix);
+ PL_tmps_stack[ix] = (sv);
+ SvTEMP_on(sv);
+ return sv;
+}
+
+/* The following functions started out in sv.h and then moved to inline.h. They
+ * moved again into this file during the 5.37.x development cycle. */
+
+/*
+=for apidoc_section $SV
+=for apidoc SvPVXtrue
+
+Returns a boolean as to whether or not C<sv> contains a PV that is considered
+TRUE. FALSE is returned if C<sv> doesn't contain a PV, or if the PV it does
+contain is zero length, or consists of just the single character '0'. Every
+other PV value is considered TRUE.
+
+As of Perl v5.37.1, C<sv> is evaluated exactly once; in earlier releases, it
+could be evaluated more than once.
+
+=cut
+*/
+
+PERL_STATIC_INLINE bool
+Perl_SvPVXtrue(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_SVPVXTRUE;
+
+ if (! (XPV *) SvANY(sv)) {
+ return false;
+ }
+
+ if ( ((XPV *) SvANY(sv))->xpv_cur > 1) { /* length > 1 */
+ return true;
+ }
+
+ if (( (XPV *) SvANY(sv))->xpv_cur == 0) {
+ return false;
+ }
+
+ return *sv->sv_u.svu_pv != '0';
+}
+
+/*
+=for apidoc SvGETMAGIC
+Invokes C<L</mg_get>> on an SV if it has 'get' magic. For example, this
+will call C<FETCH> on a tied variable. As of 5.37.1, this function is
+guaranteed to evaluate its argument exactly once.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_SvGETMAGIC(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_SVGETMAGIC;
+
+ if (UNLIKELY(SvGMAGICAL(sv))) {
+ mg_get(sv);
+ }
+}
+
+PERL_STATIC_INLINE bool
+Perl_SvTRUE(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_SVTRUE;
+
+ if (UNLIKELY(sv == NULL))
+ return FALSE;
+ SvGETMAGIC(sv);
+ return SvTRUE_nomg_NN(sv);
+}
+
+PERL_STATIC_INLINE bool
+Perl_SvTRUE_nomg(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_SVTRUE_NOMG;
+
+ if (UNLIKELY(sv == NULL))
+ return FALSE;
+ return SvTRUE_nomg_NN(sv);
+}
+
+PERL_STATIC_INLINE bool
+Perl_SvTRUE_NN(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_SVTRUE_NN;
+
+ SvGETMAGIC(sv);
+ return SvTRUE_nomg_NN(sv);
+}
+
+PERL_STATIC_INLINE bool
+Perl_SvTRUE_common(pTHX_ SV * sv, const bool sv_2bool_is_fallback)
+{
+ PERL_ARGS_ASSERT_SVTRUE_COMMON;
+
+ if (UNLIKELY(SvIMMORTAL_INTERP(sv)))
+ return SvIMMORTAL_TRUE(sv);
+
+ if (! SvOK(sv))
+ return FALSE;
+
+ if (SvPOK(sv))
+ return SvPVXtrue(sv);
+
+ if (SvIOK(sv))
+ return SvIVX(sv) != 0; /* casts to bool */
+
+ if (SvROK(sv) && !(SvOBJECT(SvRV(sv)) && HvAMAGIC(SvSTASH(SvRV(sv)))))
+ return TRUE;
+
+ if (sv_2bool_is_fallback)
+ return sv_2bool_nomg(sv);
+
+ return isGV_with_GP(sv);
+}
+
+PERL_STATIC_INLINE SV *
+Perl_SvREFCNT_inc(SV *sv)
+{
+ if (LIKELY(sv != NULL))
+ SvREFCNT(sv)++;
+ return sv;
+}
+
+PERL_STATIC_INLINE SV *
+Perl_SvREFCNT_inc_NN(SV *sv)
+{
+ PERL_ARGS_ASSERT_SVREFCNT_INC_NN;
+
+ SvREFCNT(sv)++;
+ return sv;
+}
+
+PERL_STATIC_INLINE void
+Perl_SvREFCNT_inc_void(SV *sv)
+{
+ if (LIKELY(sv != NULL))
+ SvREFCNT(sv)++;
+}
+
+PERL_STATIC_INLINE void
+Perl_SvREFCNT_dec(pTHX_ SV *sv)
+{
+ if (LIKELY(sv != NULL)) {
+ U32 rc = SvREFCNT(sv);
+ if (LIKELY(rc > 1))
+ SvREFCNT(sv) = rc - 1;
+ else
+ Perl_sv_free2(aTHX_ sv, rc);
+ }
+}
+
+PERL_STATIC_INLINE SV *
+Perl_SvREFCNT_dec_ret_NULL(pTHX_ SV *sv)
+{
+ PERL_ARGS_ASSERT_SVREFCNT_DEC_RET_NULL;
+ Perl_SvREFCNT_dec(aTHX_ sv);
+ return NULL;
+}
+
+
+PERL_STATIC_INLINE void
+Perl_SvREFCNT_dec_NN(pTHX_ SV *sv)
+{
+ U32 rc = SvREFCNT(sv);
+
+ PERL_ARGS_ASSERT_SVREFCNT_DEC_NN;
+
+ if (LIKELY(rc > 1))
+ SvREFCNT(sv) = rc - 1;
+ else
+ Perl_sv_free2(aTHX_ sv, rc);
+}
+
+/*
+=for apidoc SvAMAGIC_on
+
+Indicate that C<sv> has overloading (active magic) enabled.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_SvAMAGIC_on(SV *sv)
+{
+ PERL_ARGS_ASSERT_SVAMAGIC_ON;
+ assert(SvROK(sv));
+
+ if (SvOBJECT(SvRV(sv))) HvAMAGIC_on(SvSTASH(SvRV(sv)));
+}
+
+/*
+=for apidoc SvAMAGIC_off
+
+Indicate that C<sv> has overloading (active magic) disabled.
+
+=cut
+*/
+
+PERL_STATIC_INLINE void
+Perl_SvAMAGIC_off(SV *sv)
+{
+ PERL_ARGS_ASSERT_SVAMAGIC_OFF;
+
+ if (SvROK(sv) && SvOBJECT(SvRV(sv)))
+ HvAMAGIC_off(SvSTASH(SvRV(sv)));
+}
+
+PERL_STATIC_INLINE U32
+Perl_SvPADSTALE_on(SV *sv)
+{
+ assert(!(SvFLAGS(sv) & SVs_PADTMP));
+ return SvFLAGS(sv) |= SVs_PADSTALE;
+}
+PERL_STATIC_INLINE U32
+Perl_SvPADSTALE_off(SV *sv)
+{
+ assert(!(SvFLAGS(sv) & SVs_PADTMP));
+ return SvFLAGS(sv) &= ~SVs_PADSTALE;
+}
+
+/*
+=for apidoc_section $SV
+=for apidoc SvIV
+=for apidoc_item SvIV_nomg
+=for apidoc_item SvIVx
+
+These each coerce the given SV to IV and return it. The returned value in many
+circumstances will get stored in C<sv>'s IV slot, but not in all cases. (Use
+C<L</sv_setiv>> to make sure it does).
+
+As of 5.37.1, all are guaranteed to evaluate C<sv> only once.
+
+C<SvIVx> is now identical to C<SvIV>, but prior to 5.37.1, it was the only form
+guaranteed to evaluate C<sv> only once.
+
+C<SvIV_nomg> is the same as C<SvIV>, but does not perform 'get' magic.
+
+=for apidoc SvNV
+=for apidoc_item SvNV_nomg
+=for apidoc_item SvNVx
+
+These each coerce the given SV to NV and return it. The returned value in many
+circumstances will get stored in C<sv>'s NV slot, but not in all cases. (Use
+C<L</sv_setnv>> to make sure it does).
+
+As of 5.37.1, all are guaranteed to evaluate C<sv> only once.
+
+C<SvNVx> is now identical to C<SvNV>, but prior to 5.37.1, it was the only form
+guaranteed to evaluate C<sv> only once.
+
+C<SvNV_nomg> is the same as C<SvNV>, but does not perform 'get' magic.
+
+=for apidoc SvUV
+=for apidoc_item SvUV_nomg
+=for apidoc_item SvUVx
+
+These each coerce the given SV to UV and return it. The returned value in many
+circumstances will get stored in C<sv>'s UV slot, but not in all cases. (Use
+C<L</sv_setuv>> to make sure it does).
+
+As of 5.37.1, all are guaranteed to evaluate C<sv> only once.
+
+C<SvUVx> is now identical to C<SvUV>, but prior to 5.37.1, it was the only form
+guaranteed to evaluate C<sv> only once.
+
+=cut
+*/
+
+PERL_STATIC_INLINE IV
+Perl_SvIV(pTHX_ SV *sv) {
+ PERL_ARGS_ASSERT_SVIV;
+
+ if (SvIOK_nog(sv))
+ return SvIVX(sv);
+ return sv_2iv(sv);
+}
+
+PERL_STATIC_INLINE UV
+Perl_SvUV(pTHX_ SV *sv) {
+ PERL_ARGS_ASSERT_SVUV;
+
+ if (SvUOK_nog(sv))
+ return SvUVX(sv);
+ return sv_2uv(sv);
+}
+
+PERL_STATIC_INLINE NV
+Perl_SvNV(pTHX_ SV *sv) {
+ PERL_ARGS_ASSERT_SVNV;
+
+ if (SvNOK_nog(sv))
+ return SvNVX(sv);
+ return sv_2nv(sv);
+}
+
+PERL_STATIC_INLINE IV
+Perl_SvIV_nomg(pTHX_ SV *sv) {
+ PERL_ARGS_ASSERT_SVIV_NOMG;
+
+ if (SvIOK(sv))
+ return SvIVX(sv);
+ return sv_2iv_flags(sv, 0);
+}
+
+PERL_STATIC_INLINE UV
+Perl_SvUV_nomg(pTHX_ SV *sv) {
+ PERL_ARGS_ASSERT_SVUV_NOMG;
+
+ if (SvIOK_nog(sv))
+ return SvUVX(sv);
+ return sv_2uv_flags(sv, 0);
+}
+
+PERL_STATIC_INLINE NV
+Perl_SvNV_nomg(pTHX_ SV *sv) {
+ PERL_ARGS_ASSERT_SVNV_NOMG;
+
+ if (SvNOK_nog(sv))
+ return SvNVX(sv);
+ return sv_2nv_flags(sv, 0);
+}
+
+#if defined(PERL_CORE) || defined (PERL_EXT)
+PERL_STATIC_INLINE STRLEN
+S_sv_or_pv_pos_u2b(pTHX_ SV *sv, const char *pv, STRLEN pos, STRLEN *lenp)
+{
+ PERL_ARGS_ASSERT_SV_OR_PV_POS_U2B;
+ if (SvGAMAGIC(sv)) {
+ U8 *hopped = utf8_hop((U8 *)pv, pos);
+ if (lenp) *lenp = (STRLEN)(utf8_hop(hopped, *lenp) - hopped);
+ return (STRLEN)(hopped - (U8 *)pv);
+ }
+ return sv_pos_u2b_flags(sv,pos,lenp,SV_CONST_RETURN);
+}
+#endif
+
+PERL_STATIC_INLINE char *
+Perl_sv_pvutf8n_force_wrapper(pTHX_ SV * const sv, STRLEN * const lp, const U32 dummy)
+{
+ /* This is just so can be passed to Perl_SvPV_helper() as a function
+ * pointer with the same signature as all the other such pointers, and
+ * having hence an unused parameter */
+ PERL_ARGS_ASSERT_SV_PVUTF8N_FORCE_WRAPPER;
+ PERL_UNUSED_ARG(dummy);
+
+ return sv_pvutf8n_force(sv, lp);
+}
+
+PERL_STATIC_INLINE char *
+Perl_sv_pvbyten_force_wrapper(pTHX_ SV * const sv, STRLEN * const lp, const U32 dummy)
+{
+ /* This is just so can be passed to Perl_SvPV_helper() as a function
+ * pointer with the same signature as all the other such pointers, and
+ * having hence an unused parameter */
+ PERL_ARGS_ASSERT_SV_PVBYTEN_FORCE_WRAPPER;
+ PERL_UNUSED_ARG(dummy);
+
+ return sv_pvbyten_force(sv, lp);
+}
+
+PERL_STATIC_INLINE char *
+Perl_SvPV_helper(pTHX_
+ SV * const sv,
+ STRLEN * const lp,
+ const U32 flags,
+ const PL_SvPVtype type,
+ char * (*non_trivial)(pTHX_ SV *, STRLEN * const, const U32),
+ const bool or_null,
+ const U32 return_flags
+ )
+{
+ /* 'type' should be known at compile time, so this is reduced to a single
+ * conditional at runtime */
+ if ( (type == SvPVbyte_type_ && SvPOK_byte_nog(sv))
+ || (type == SvPVforce_type_ && SvPOK_pure_nogthink(sv))
+ || (type == SvPVutf8_type_ && SvPOK_utf8_nog(sv))
+ || (type == SvPVnormal_type_ && SvPOK_nog(sv))
+ || (type == SvPVutf8_pure_type_ && SvPOK_utf8_pure_nogthink(sv))
+ || (type == SvPVbyte_pure_type_ && SvPOK_byte_pure_nogthink(sv))
+ ) {
+ if (lp) {
+ *lp = SvCUR(sv);
+ }
+
+ /* Similarly 'return_flags is known at compile time, so this becomes
+ * branchless */
+ if (return_flags & SV_MUTABLE_RETURN) {
+ return SvPVX_mutable(sv);
+ }
+ else if(return_flags & SV_CONST_RETURN) {
+ return (char *) SvPVX_const(sv);
+ }
+ else {
+ return SvPVX(sv);
+ }
+ }
+
+ if (or_null) { /* This is also known at compile time */
+ if (flags & SV_GMAGIC) { /* As is this */
+ SvGETMAGIC(sv);
+ }
+
+ if (! SvOK(sv)) {
+ if (lp) { /* As is this */
+ *lp = 0;
+ }
+
+ return NULL;
+ }
+ }
+
+ /* Can't trivially handle this, call the function */
+ return non_trivial(aTHX_ sv, lp, (flags|return_flags));
+}
+
+/*
+=for apidoc newRV_noinc
+
+Creates an RV wrapper for an SV. The reference count for the original
+SV is B<not> incremented.
+
+=cut
+*/
+
+PERL_STATIC_INLINE SV *
+Perl_newRV_noinc(pTHX_ SV *const tmpRef)
+{
+ SV *sv = newSV_type(SVt_IV);
+
+ PERL_ARGS_ASSERT_NEWRV_NOINC;
+
+ SvTEMP_off(tmpRef);
+
+ /* inlined, simplified sv_setrv_noinc(sv, tmpRef); */
+ SvRV_set(sv, tmpRef);
+ SvROK_on(sv);
+
+ return sv;
+}
+
+PERL_STATIC_INLINE char *
+Perl_sv_setpv_freshbuf(pTHX_ SV *const sv)
+{
+ PERL_ARGS_ASSERT_SV_SETPV_FRESHBUF;
+ assert(SvTYPE(sv) >= SVt_PV);
+ assert(SvTYPE(sv) <= SVt_PVMG);
+ assert(!SvTHINKFIRST(sv));
+ assert(SvPVX(sv));
+ SvCUR_set(sv, 0);
+ *(SvEND(sv))= '\0';
+ (void)SvPOK_only_UTF8(sv);
+ SvTAINT(sv);
+ return SvPVX(sv);
+}
+
+/*
+ * ex: set ts=8 sts=4 sw=4 et:
+ */
diff --git a/Master/tlpkg/tlperl/lib/CORE/sys/socket.h b/Master/tlpkg/tlperl/lib/CORE/sys/socket.h
index 8f93fa04297..185e7ddab2d 100644
--- a/Master/tlpkg/tlperl/lib/CORE/sys/socket.h
+++ b/Master/tlpkg/tlperl/lib/CORE/sys/socket.h
@@ -35,7 +35,7 @@ extern "C" {
#endif
#define PERL_BITS_PER_BYTE 8
-#define PERL_NFDBITS (sizeof(Perl_fd_mask)*PERL_BITS_PER_BYTE)
+#define PERL_NFDBITS (sizeof(Perl_fd_mask)*PERL_BITS_PER_BYTE)
typedef int Perl_fd_mask;
diff --git a/Master/tlpkg/tlperl/lib/CORE/thread.h b/Master/tlpkg/tlperl/lib/CORE/thread.h
index dcec0c064b8..474c2b43b66 100644
--- a/Master/tlpkg/tlperl/lib/CORE/thread.h
+++ b/Master/tlpkg/tlperl/lib/CORE/thread.h
@@ -16,8 +16,6 @@
#ifdef WIN32
# include <win32thread.h>
-#elif defined(NETWARE)
-# include <nw5thread.h>
#else
# ifdef OLD_PTHREADS_API /* Here be dragons. */
# define DETACH(t) \
@@ -34,11 +32,6 @@
# define PERL_SET_CONTEXT(t) Perl_set_context((void*)t)
# define PTHREAD_GETSPECIFIC_INT
-# ifdef DJGPP
-# define pthread_addr_t any_t
-# define NEED_PTHREAD_INIT
-# define PTHREAD_CREATE_JOINABLE (1)
-# endif
# ifdef OEMVS
# define pthread_addr_t void *
# define pthread_create(t,a,s,d) pthread_create(t,&(a),s,d)
@@ -61,7 +54,7 @@
# define pthread_mutexattr_init(a) pthread_mutexattr_create(a)
# define pthread_mutexattr_settype(a,t) pthread_mutexattr_setkind_np(a,t)
# endif
-# if defined(DJGPP) || defined(OEMVS)
+# if defined(OEMVS)
# define PTHREAD_ATTR_SETDETACHSTATE(a,s) pthread_attr_setdetachstate(a,&(s))
# define YIELD pthread_yield(NULL)
# endif
@@ -181,20 +174,20 @@
# ifdef MUTEX_INIT_NEEDS_MUTEX_ZEROED
/* Temporary workaround, true bug is deeper. --jhi 1999-02-25 */
# define MUTEX_INIT(m) \
- STMT_START { \
- int _eC_; \
- Zero((m), 1, perl_mutex); \
- if ((_eC_ = pthread_mutex_init((m), pthread_mutexattr_default))) \
- Perl_croak_nocontext("panic: MUTEX_INIT (%d) [%s:%d]", \
- _eC_, __FILE__, __LINE__); \
+ STMT_START { \
+ int _eC_; \
+ Zero((m), 1, perl_mutex); \
+ if ((_eC_ = pthread_mutex_init((m), pthread_mutexattr_default)))\
+ Perl_croak_nocontext("panic: MUTEX_INIT (%d) [%s:%d]", \
+ _eC_, __FILE__, __LINE__); \
} STMT_END
# else
# define MUTEX_INIT(m) \
STMT_START { \
int _eC_; \
- if ((_eC_ = pthread_mutex_init((m), pthread_mutexattr_default))) \
- Perl_croak_nocontext("panic: MUTEX_INIT (%d) [%s:%d]", \
- _eC_, __FILE__, __LINE__); \
+ if ((_eC_ = pthread_mutex_init((m), pthread_mutexattr_default))) \
+ Perl_croak_nocontext("panic: MUTEX_INIT (%d) [%s:%d]", \
+ _eC_, __FILE__, __LINE__); \
} STMT_END
# endif
@@ -206,28 +199,38 @@
# define perl_pthread_mutex_unlock(m) pthread_mutex_unlock(m)
# endif
-# define MUTEX_LOCK(m) \
+# define MUTEX_LOCK(m) \
STMT_START { \
+ dSAVE_ERRNO; \
int _eC_; \
- if ((_eC_ = perl_pthread_mutex_lock((m)))) \
- Perl_croak_nocontext("panic: MUTEX_LOCK (%d) [%s:%d]", \
+ if ((_eC_ = perl_pthread_mutex_lock((m)))) \
+ Perl_croak_nocontext("panic: MUTEX_LOCK (%d) [%s:%d]",\
_eC_, __FILE__, __LINE__); \
+ RESTORE_ERRNO; \
} STMT_END
-# define MUTEX_UNLOCK(m) \
+# define MUTEX_UNLOCK(m) \
STMT_START { \
+ dSAVE_ERRNO; /* Shouldn't be necessary as panics if fails */\
int _eC_; \
- if ((_eC_ = perl_pthread_mutex_unlock((m)))) \
- Perl_croak_nocontext("panic: MUTEX_UNLOCK (%d) [%s:%d]", \
+ if ((_eC_ = perl_pthread_mutex_unlock((m)))) { \
+ Perl_croak_nocontext( \
+ "panic: MUTEX_UNLOCK (%d) [%s:%d]", \
_eC_, __FILE__, __LINE__); \
+ } \
+ RESTORE_ERRNO; \
} STMT_END
-# define MUTEX_DESTROY(m) \
- STMT_START { \
- int _eC_; \
- if ((_eC_ = pthread_mutex_destroy((m)))) \
- Perl_croak_nocontext("panic: MUTEX_DESTROY (%d) [%s:%d]", \
- _eC_, __FILE__, __LINE__); \
+# define MUTEX_DESTROY(m) \
+ STMT_START { \
+ int _eC_; \
+ if ((_eC_ = pthread_mutex_destroy((m)))) { \
+ dTHX; \
+ if (PL_phase != PERL_PHASE_DESTRUCT) { \
+ Perl_croak_nocontext("panic: MUTEX_DESTROY (%d) [%s:%d]", \
+ _eC_, __FILE__, __LINE__); \
+ } \
+ } \
} STMT_END
#endif /* MUTEX_INIT */
@@ -265,11 +268,15 @@
} STMT_END
# define COND_DESTROY(c) \
- STMT_START { \
- int _eC_; \
- if ((_eC_ = pthread_cond_destroy((c)))) \
- Perl_croak_nocontext("panic: COND_DESTROY (%d) [%s:%d]", \
- _eC_, __FILE__, __LINE__); \
+ STMT_START { \
+ int _eC_; \
+ if ((_eC_ = pthread_cond_destroy((c)))) { \
+ dTHX; \
+ if (PL_phase != PERL_PHASE_DESTRUCT) { \
+ Perl_croak_nocontext("panic: COND_DESTROY (%d) [%s:%d]", \
+ _eC_, __FILE__, __LINE__); \
+ } \
+ } \
} STMT_END
#endif /* COND_INIT */
@@ -379,19 +386,51 @@
# define PTHREAD_GETSPECIFIC(key) pthread_getspecific(key)
#endif
-#ifndef PERL_GET_CONTEXT
-# define PERL_GET_CONTEXT PTHREAD_GETSPECIFIC(PL_thr_key)
-#endif
-
-#ifndef PERL_SET_CONTEXT
-# define PERL_SET_CONTEXT(t) \
- STMT_START { \
- int _eC_; \
- if ((_eC_ = pthread_setspecific(PL_thr_key, (void *)(t)))) \
- Perl_croak_nocontext("panic: pthread_setspecific (%d) [%s:%d]", \
- _eC_, __FILE__, __LINE__); \
+#if defined(PERL_THREAD_LOCAL) && !defined(PERL_GET_CONTEXT) && !defined(PERL_SET_CONTEXT) && !defined(__cplusplus)
+/* Use C11 thread-local storage, where possible.
+ * Frustratingly we can't use it for C++ extensions, C++ and C disagree on the
+ * syntax used for thread local storage, meaning that the working token that
+ * Configure probed for C turns out to be a compiler error on C++. Great.
+ * (Well, unless one or both is supporting non-standard syntax as an extension)
+ * As Configure doesn't have a way to probe for C++ dialects, we just take the
+ * safe option and do the same as 5.34.0 and earlier - use pthreads on C++.
+ * Of course, if C++ XS extensions really want to avoid *all* this overhead,
+ * they should #define PERL_NO_GET_CONTEXT and pass aTHX/aTHX_ explicitly) */
+# define PERL_USE_THREAD_LOCAL
+extern PERL_THREAD_LOCAL void *PL_current_context;
+
+# define PERL_GET_CONTEXT PL_current_context
+
+/* We must also call pthread_setspecific() always, as C++ code has to read it
+ * with pthreads (the #else side just below) */
+
+# define PERL_SET_CONTEXT(t) \
+ STMT_START { \
+ int _eC_; \
+ if ((_eC_ = pthread_setspecific(PL_thr_key, \
+ PL_current_context = (void *)(t)))) \
+ Perl_croak_nocontext("panic: pthread_setspecific (%d) [%s:%d]", \
+ _eC_, __FILE__, __LINE__); \
+ PERL_SET_NON_tTHX_CONTEXT(t); \
} STMT_END
-#endif /* PERL_SET_CONTEXT */
+
+#else
+/* else fall back to pthreads */
+
+# ifndef PERL_GET_CONTEXT
+# define PERL_GET_CONTEXT PTHREAD_GETSPECIFIC(PL_thr_key)
+# endif
+
+/* For C++ extensions built on a system where the C compiler provides thread
+ * local storage that call PERL_SET_CONTEXT() also need to set
+ * PL_current_context, so need to call into C code to do this.
+ * To avoid exploding code complexity, do this also on C platforms that don't
+ * support thread local storage. PERL_SET_CONTEXT is not called that often. */
+
+# ifndef PERL_SET_CONTEXT
+# define PERL_SET_CONTEXT(t) Perl_set_context((void*)t)
+# endif /* PERL_SET_CONTEXT */
+#endif /* PERL_THREAD_LOCAL */
#ifndef INIT_THREADS
# ifdef NEED_PTHREAD_INIT
diff --git a/Master/tlpkg/tlperl/lib/CORE/uconfig.h b/Master/tlpkg/tlperl/lib/CORE/uconfig.h
index 68df40f6051..47d586ccf89 100644
--- a/Master/tlpkg/tlperl/lib/CORE/uconfig.h
+++ b/Master/tlpkg/tlperl/lib/CORE/uconfig.h
@@ -50,7 +50,7 @@
* This symbol, if defined, indicates that the chsize routine is available
* to truncate files. You might need a -lx to get this routine.
*/
-/*#define HAS_CHSIZE / **/
+/*#define HAS_CHSIZE / **/
/* HAS_CRYPT:
* This symbol, if defined, indicates that the crypt routine is available
@@ -228,7 +228,7 @@
* This symbol, if defined, indicates that the mbstowcs routine is
* available to convert a multibyte string into a wide character string.
*/
-/*#define HAS_MBSTOWCS / **/
+/*#define HAS_MBSTOWCS / **/
/* HAS_MBTOWC:
* This symbol, if defined, indicates that the mbtowc routine is available
@@ -596,7 +596,7 @@
* This symbol, if defined, indicates to the C program that it should
* include <arpa/inet.h> to get inet_addr and friends declarations.
*/
-/*#define I_ARPA_INET / **/
+/*#define I_ARPA_INET / **/
/* I_DBM:
* This symbol, if defined, indicates that <dbm.h> exists and should
@@ -630,7 +630,7 @@
* This symbol, if defined, indicates to the C program that it should
* include <locale.h>.
*/
-/*#define I_LOCALE / **/
+/*#define I_LOCALE / **/
/* I_NETINET_IN:
* This symbol, if defined, indicates to the C program that it should
@@ -658,7 +658,7 @@
* This symbol, if defined, indicates the <sys/sockio.h> should be included
* to get socket ioctl options, like SIOCATMARK.
*/
-/*#define I_SYS_IOCTL / **/
+/*#define I_SYS_IOCTL / **/
/*#define I_SYS_SOCKIO / **/
/* I_SYS_NDIR:
@@ -696,19 +696,19 @@
* This symbol, if defined, indicates to the C program that it should
* include <sys/stat.h>.
*/
-#define I_SYS_STAT /**/
+#define I_SYS_STAT /**/
/* I_SYS_TIMES:
* This symbol, if defined, indicates to the C program that it should
* include <sys/times.h>.
*/
-/*#define I_SYS_TIMES / **/
+/*#define I_SYS_TIMES / **/
/* I_SYS_TYPES:
* This symbol, if defined, indicates to the C program that it should
* include <sys/types.h>.
*/
-/*#define I_SYS_TYPES / **/
+/*#define I_SYS_TYPES / **/
/* I_SYS_UN:
* This symbol, if defined, indicates to the C program that it should
@@ -862,7 +862,7 @@
* This symbol is defined if the C compiler can cast negative
* or large floating point numbers to 32-bit ints.
*/
-/*#define CASTI32 / **/
+/*#define CASTI32 / **/
/* CASTNEGFLOAT:
* This symbol is defined if the C compiler can cast negative
@@ -876,7 +876,7 @@
* 2 = couldn't cast >= 0x80000000
* 4 = couldn't cast in argument expression list
*/
-/*#define CASTNEGFLOAT / **/
+/*#define CASTNEGFLOAT / **/
#define CASTFLAGS 0 /**/
/* VOID_CLOSEDIR:
@@ -978,13 +978,13 @@
* This symbol, if defined, indicates that siginfo_t has the
* si_value member
*/
-/*#define HAS_SIGINFO_SI_ERRNO / **/
-/*#define HAS_SIGINFO_SI_PID / **/
-/*#define HAS_SIGINFO_SI_UID / **/
-/*#define HAS_SIGINFO_SI_ADDR / **/
-/*#define HAS_SIGINFO_SI_STATUS / **/
-/*#define HAS_SIGINFO_SI_BAND / **/
-/*#define HAS_SIGINFO_SI_VALUE / **/
+/*#define HAS_SIGINFO_SI_ERRNO / **/
+/*#define HAS_SIGINFO_SI_PID / **/
+/*#define HAS_SIGINFO_SI_UID / **/
+/*#define HAS_SIGINFO_SI_ADDR / **/
+/*#define HAS_SIGINFO_SI_STATUS / **/
+/*#define HAS_SIGINFO_SI_BAND / **/
+/*#define HAS_SIGINFO_SI_VALUE / **/
/* HAS_SIGSETJMP:
* This variable indicates to the C program that the sigsetjmp()
@@ -1214,7 +1214,7 @@
* This symbol, if defined, indicates that this system uses
* EBCDIC encoding.
*/
-/*#define EBCDIC / **/
+/*#define EBCDIC / **/
/* ARCHLIB:
* This variable, if defined, holds the name of the directory in
@@ -1229,8 +1229,8 @@
* This symbol contains the ~name expanded version of ARCHLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-/*#define ARCHLIB "/usr/local/lib/perl5/5.34/unknown" / **/
-/*#define ARCHLIB_EXP "/usr/local/lib/perl5/5.34/unknown" / **/
+/*#define ARCHLIB "/usr/local/lib/perl5/5.38/unknown" / **/
+/*#define ARCHLIB_EXP "/usr/local/lib/perl5/5.38/unknown" / **/
/* BIN:
* This symbol holds the path of the bin directory where the package will
@@ -1283,8 +1283,8 @@
* This symbol contains the ~name expanded version of PRIVLIB, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-#define PRIVLIB "/usr/local/lib/perl5/5.34" /**/
-#define PRIVLIB_EXP "/usr/local/lib/perl5/5.34" /**/
+#define PRIVLIB "/usr/local/lib/perl5/5.38" /**/
+#define PRIVLIB_EXP "/usr/local/lib/perl5/5.38" /**/
/* SITEARCH:
* This symbol contains the name of the private library for this package.
@@ -1301,8 +1301,8 @@
* This symbol contains the ~name expanded version of SITEARCH, to be used
* in programs that are not prepared to deal with ~ expansion at run-time.
*/
-/*#define SITEARCH "/usr/local/lib/perl5/5.34/unknown" / **/
-/*#define SITEARCH_EXP "/usr/local/lib/perl5/5.34/unknown" / **/
+/*#define SITEARCH "/usr/local/lib/perl5/5.38/unknown" / **/
+/*#define SITEARCH_EXP "/usr/local/lib/perl5/5.38/unknown" / **/
/* SITELIB:
* This symbol contains the name of the private library for this package.
@@ -1324,8 +1324,8 @@
* removed. The elements in inc_version_list (inc_version_list.U) can
* be tacked onto this variable to generate a list of directories to search.
*/
-#define SITELIB "/usr/local/lib/perl5/5.34" /**/
-#define SITELIB_EXP "/usr/local/lib/perl5/5.34" /**/
+#define SITELIB "/usr/local/lib/perl5/5.38" /**/
+#define SITELIB_EXP "/usr/local/lib/perl5/5.38" /**/
#define SITELIB_STEM "/usr/local/lib/perl5" /**/
/* PERL_VENDORARCH:
@@ -1460,6 +1460,10 @@
* Can we handle GCC attribute for functions that should always be
* inlined.
*/
+/* HASATTRIBUTE_VISIBILITY:
+ * Can we handle GCC attribute for functions that should have a
+ * different visibility.
+ */
/*#define HASATTRIBUTE_DEPRECATED / **/
/*#define HASATTRIBUTE_FORMAT / **/
/*#define PRINTF_FORMAT_NULL_OK / **/
@@ -1470,6 +1474,7 @@
/*#define HASATTRIBUTE_UNUSED / **/
/*#define HASATTRIBUTE_WARN_UNUSED_RESULT / **/
/*#define HASATTRIBUTE_ALWAYS_INLINE / **/
+/*#define HASATTRIBUTE_VISIBILITY / **/
/* HAS_BACKTRACE:
* This symbol, if defined, indicates that the backtrace() routine is
@@ -1541,7 +1546,7 @@
/*#define HAS_ENDPROTOENT / **/
/* HAS_ENDPWENT:
- * This symbol, if defined, indicates that the getgrent routine is
+ * This symbol, if defined, indicates that the endpwent routine is
* available for finalizing sequential access of the passwd database.
*/
/*#define HAS_ENDPWENT / **/
@@ -1556,7 +1561,7 @@
* This symbol, if defined, indicates that the system supports filenames
* longer than 14 characters.
*/
-/*#define FLEXFILENAMES / **/
+/*#define FLEXFILENAMES / **/
/* HAS_GETGRENT:
* This symbol, if defined, indicates that the getgrent routine is
@@ -1935,16 +1940,16 @@
* This symbol, if defined, indicates the availability of
* struct ipv6_mreq_source;
*/
-/*#define HAS_SOCKET / **/
-/*#define HAS_SOCKETPAIR / **/
-/*#define HAS_SOCKADDR_SA_LEN / **/
-/*#define HAS_SOCKADDR_IN6 / **/
-/*#define HAS_SOCKADDR_STORAGE / **/
-/*#define HAS_SIN6_SCOPE_ID / **/
-/*#define HAS_IP_MREQ / **/
-/*#define HAS_IP_MREQ_SOURCE / **/
-/*#define HAS_IPV6_MREQ / **/
-/*#define HAS_IPV6_MREQ_SOURCE / **/
+/*#define HAS_SOCKET / **/
+/*#define HAS_SOCKETPAIR / **/
+/*#define HAS_SOCKADDR_SA_LEN / **/
+/*#define HAS_SOCKADDR_IN6 / **/
+/*#define HAS_SOCKADDR_STORAGE / **/
+/*#define HAS_SIN6_SCOPE_ID / **/
+/*#define HAS_IP_MREQ / **/
+/*#define HAS_IP_MREQ_SOURCE / **/
+/*#define HAS_IPV6_MREQ / **/
+/*#define HAS_IPV6_MREQ_SOURCE / **/
/* USE_STAT_BLOCKS:
* This symbol is defined if this system has a stat structure declaring
@@ -2146,7 +2151,7 @@
* This symbol, if defined, indicates that <sys/uio.h> exists and
* should be included.
*/
-/*#define I_SYSUIO / **/
+/*#define I_SYSUIO / **/
/* I_TERMIO:
* This symbol, if defined, indicates that the program should include
@@ -2245,8 +2250,8 @@
* Perl has been cross-compiled to. Undefined if not a cross-compile.
*/
#ifndef USE_CROSS_COMPILE
-/*#define USE_CROSS_COMPILE / **/
-#define PERL_TARGETARCH "" /**/
+/*#define USE_CROSS_COMPILE / **/
+#define PERL_TARGETARCH "" /**/
#endif
/* PERL_USE_DEVEL:
@@ -2254,7 +2259,7 @@
* -Dusedevel, to enable development features. This should not be
* done for production builds.
*/
-/*#define PERL_USE_DEVEL / **/
+/*#define PERL_USE_DEVEL / **/
/* HAS_ATOLF:
* This symbol, if defined, indicates that the atolf routine is
@@ -2304,6 +2309,13 @@
*/
/*#define HAS_ATANH / **/
+/* HAS_NON_INT_BITFIELDS:
+ * This symbol, if defined, indicates that the C compiler accepts, without
+ * error or warning, struct bitfields that are declared with sizes other
+ * than plain 'int'; for example 'unsigned char' is accepted.
+ */
+#define HAS_NON_INT_BITFIELDS /**/
+
/* HAS_BUILTIN_CHOOSE_EXPR:
* Can we handle GCC builtin for compile-time ternary-like expressions
*/
@@ -2333,7 +2345,7 @@
/* HAS_C99_VARIADIC_MACROS:
* If defined, the compiler supports C99 variadic macros.
*/
-/*#define HAS_C99_VARIADIC_MACROS / **/
+/*#define HAS_C99_VARIADIC_MACROS / **/
/* HAS_CLASS:
* This symbol, if defined, indicates that the class routine is
@@ -2389,10 +2401,10 @@
* to the program to supply one. A good guess is
* extern int dbminit(char *);
*/
-/*#define HAS_DBMINIT_PROTO / **/
+/*#define HAS_DBMINIT_PROTO / **/
/* HAS_DIR_DD_FD:
- * This symbol, if defined, indicates that the the DIR* dirstream
+ * This symbol, if defined, indicates that the DIR* dirstream
* structure contains a member variable named dd_fd.
*/
/*#define HAS_DIR_DD_FD / **/
@@ -2409,7 +2421,7 @@
* makes sense if you *have* dlsym, which we will presume is the
* case if you're using dl_dlopen.xs.
*/
-/*#define DLSYM_NEEDS_UNDERSCORE / **/
+/*#define DLSYM_NEEDS_UNDERSCORE / **/
/* HAS_DUP3:
* This symbol, if defined, indicates that the dup3 routine is
@@ -2480,6 +2492,19 @@
*/
/*#define HAS_FEGETROUND / **/
+/* HAS_FFS:
+ * This symbol, if defined, indicates that the ffs routine is available
+ * to find the first bit set in its argument. If it's not available,
+ * roll your own.
+ */
+/* HAS_FFSL:
+ * This symbol, if defined, indicates that the ffsl routine is available
+ * to find the first bit set in its argument. If it's not available,
+ * roll your own.
+ */
+/*#define HAS_FFS / **/
+/*#define HAS_FFSL / **/
+
/* HAS_FINITE:
* This symbol, if defined, indicates that the finite routine is
* available to check whether a double is finite (non-infinity non-NaN).
@@ -2499,7 +2524,7 @@
* to the program to supply one. A good guess is
* extern int flock(int, int);
*/
-/*#define HAS_FLOCK_PROTO / **/
+/*#define HAS_FLOCK_PROTO / **/
/* HAS_FMA:
* This symbol, if defined, indicates that the fma routine is
@@ -2585,8 +2610,8 @@
* FP_NAN NaN
*
*/
-/*#define HAS_FPCLASSIFY / **/
-/*#define HAS_FP_CLASSIFY / **/
+/*#define HAS_FPCLASSIFY / **/
+/*#define HAS_FP_CLASSIFY / **/
/* HAS_FPCLASSL:
* This symbol, if defined, indicates that the fpclassl routine is
@@ -2615,7 +2640,7 @@
/* HAS_FPOS64_T:
* This symbol will be defined if the C compiler supports fpos64_t.
*/
-/*#define HAS_FPOS64_T / **/
+/*#define HAS_FPOS64_T / **/
/* HAS_FREXPL:
* This symbol, if defined, indicates that the frexpl routine is
@@ -2645,11 +2670,11 @@
/* HAS_UNLINKAT:
* This symbol is defined if the unlinkat() routine is available.
*/
-/*#define HAS_FCHMODAT / **/
-/*#define HAS_LINKAT / **/
-/*#define HAS_OPENAT / **/
-/*#define HAS_RENAMEAT / **/
-/*#define HAS_UNLINKAT / **/
+/*#define HAS_FCHMODAT / **/
+/*#define HAS_LINKAT / **/
+/*#define HAS_OPENAT / **/
+/*#define HAS_RENAMEAT / **/
+/*#define HAS_UNLINKAT / **/
/* HAS_FSEEKO:
* This symbol, if defined, indicates that the fseeko routine is
@@ -2857,8 +2882,8 @@
* j0l() function is available for Bessel functions of the first
* kind of the order zero, for long doubles.
*/
-/*#define HAS_J0 / **/
-/*#define HAS_J0L / **/
+/*#define HAS_J0 / **/
+/*#define HAS_J0L / **/
/* HAS_LC_MONETARY_2008:
* This symbol, if defined, indicates that the localeconv routine is
@@ -3087,15 +3112,20 @@
* available to return the name of the locale for a category mask.
*/
/* I_XLOCALE:
- * This symbol, if defined, indicates to the C program that it should
- * include <xlocale.h> to get uselocale() and its friends.
+ * This symbol, if defined, indicates to the C program that the
+ * header xlocale.h is available. See also NEED_XLOCALE_H
*/
-/*#define HAS_NEWLOCALE / **/
-/*#define HAS_FREELOCALE / **/
-/*#define HAS_USELOCALE / **/
-/*#define HAS_DUPLOCALE / **/
-/*#define HAS_QUERYLOCALE / **/
-/*#define I_XLOCALE / **/
+/* NEED_XLOCALE_H:
+ * This symbol, if defined, indicates that the C program should
+ * include <xlocale.h> to get newlocale() and its friends.
+ */
+/*#define HAS_NEWLOCALE / **/
+/*#define HAS_FREELOCALE / **/
+/*#define HAS_USELOCALE / **/
+/*#define HAS_DUPLOCALE / **/
+/*#define HAS_QUERYLOCALE / **/
+/*#define NEED_XLOCALE_H / **/
+/*#define I_XLOCALE / **/
/* HAS_NEXTAFTER:
* This symbol, if defined, indicates that the nextafter routine is
@@ -3121,7 +3151,7 @@
/* HAS_OFF64_T:
* This symbol will be defined if the C compiler supports off64_t.
*/
-/*#define HAS_OFF64_T / **/
+/*#define HAS_OFF64_T / **/
/* HAS_PIPE2:
* This symbol, if defined, indicates that the pipe2 routine is
@@ -3166,7 +3196,7 @@
/* HAS_PTRDIFF_T:
* This symbol will be defined if the C compiler supports ptrdiff_t.
*/
-#define HAS_PTRDIFF_T /**/
+#define HAS_PTRDIFF_T /**/
/* HAS_READV:
* This symbol, if defined, indicates that the readv routine is
@@ -3213,7 +3243,7 @@
* extern void* sbrk(int);
* extern void* sbrk(size_t);
*/
-/*#define HAS_SBRK_PROTO / **/
+/*#define HAS_SBRK_PROTO / **/
/* HAS_SCALBN:
* This symbol, if defined, indicates that the scalbn routine is
@@ -3234,6 +3264,12 @@
*/
/*#define HAS_SENDMSG / **/
+/* HAS_SETENV:
+ * This symbol, if defined, indicates that the setenv routine is
+ * available for use.
+ */
+/*#define HAS_SETENV / **/
+
/* HAS_SETITIMER:
* This symbol, if defined, indicates that the setitimer routine is
* available to set interval timers.
@@ -3279,7 +3315,7 @@
* be used.
*/
#ifndef USE_SITECUSTOMIZE
-/*#define USE_SITECUSTOMIZE / **/
+/*#define USE_SITECUSTOMIZE / **/
#endif
/* HAS_SNPRINTF:
@@ -3305,7 +3341,7 @@
* to the program to supply one. A good guess is
* extern int sockatmark(int);
*/
-/*#define HAS_SOCKATMARK_PROTO / **/
+/*#define HAS_SOCKATMARK_PROTO / **/
/* HAS_SOCKS5_INIT:
* This symbol, if defined, indicates that the socks5_init routine is
@@ -3325,7 +3361,7 @@
* to the program to supply one. Good guesses are
* extern int setresgid(uid_t ruid, uid_t euid, uid_t suid);
*/
-/*#define HAS_SETRESGID_PROTO / **/
+/*#define HAS_SETRESGID_PROTO / **/
/* HAS_SETRESUID_PROTO:
* This symbol, if defined, indicates that the system provides
@@ -3333,7 +3369,7 @@
* to the program to supply one. Good guesses are
* extern int setresuid(uid_t ruid, uid_t euid, uid_t suid);
*/
-/*#define HAS_SETRESUID_PROTO / **/
+/*#define HAS_SETRESUID_PROTO / **/
/* HAS_STRUCT_STATFS_F_FLAGS:
* This symbol, if defined, indicates that the struct statfs
@@ -3419,6 +3455,12 @@
*/
/*#define HAS_STRTOUQ / **/
+/* HAS_STRXFRM_L:
+ * This symbol, if defined, indicates that the strxfrm_l() routine is
+ * available to transform strings.
+ */
+/*#define HAS_STRXFRM_L / **/
+
/* HAS_SYSCALL_PROTO:
* This symbol, if defined, indicates that the system provides
* a prototype for the syscall() function. Otherwise, it is up
@@ -3426,7 +3468,7 @@
* extern int syscall(int, ...);
* extern int syscall(long, ...);
*/
-/*#define HAS_SYSCALL_PROTO / **/
+/*#define HAS_SYSCALL_PROTO / **/
/* HAS_TELLDIR_PROTO:
* This symbol, if defined, indicates that the system provides
@@ -3434,7 +3476,7 @@
* to the program to supply one. A good guess is
* extern long telldir(DIR*);
*/
-/*#define HAS_TELLDIR_PROTO / **/
+/*#define HAS_TELLDIR_PROTO / **/
/* HAS_TGAMMA:
* This symbol, if defined, indicates that the tgamma routine is
@@ -3466,12 +3508,12 @@
* This symbol, if defined, indicates that the asctime64 () routine is
* available to do the 64bit variant of asctime ()
*/
-/*#define HAS_CTIME64 / **/
-/*#define HAS_LOCALTIME64 / **/
-/*#define HAS_GMTIME64 / **/
-/*#define HAS_MKTIME64 / **/
-/*#define HAS_DIFFTIME64 / **/
-/*#define HAS_ASCTIME64 / **/
+/*#define HAS_CTIME64 / **/
+/*#define HAS_LOCALTIME64 / **/
+/*#define HAS_GMTIME64 / **/
+/*#define HAS_MKTIME64 / **/
+/*#define HAS_DIFFTIME64 / **/
+/*#define HAS_ASCTIME64 / **/
/* HAS_TIMEGM:
* This symbol, if defined, indicates that the timegm routine is
@@ -3536,7 +3578,7 @@
* to the program to supply one. A good guess is
* extern int usleep(useconds_t);
*/
-/*#define HAS_USLEEP_PROTO / **/
+/*#define HAS_USLEEP_PROTO / **/
/* HAS_USTAT:
* This symbol, if defined, indicates that the ustat system call is
@@ -3552,7 +3594,7 @@
/* HAS_WCSXFRM:
* This symbol, if defined, indicates that the wcsxfrm routine is
- * available to tranform a wide character string for wcscmp().
+ * available to transform a wide character string for wcscmp().
*/
/*#define HAS_WCSXFRM / **/
@@ -3587,20 +3629,20 @@
* Note that if fflushNULL is defined, fflushall will not
* even be probed for and will be left undefined.
*/
-/*#define FFLUSH_NULL / **/
-/*#define FFLUSH_ALL / **/
+/*#define FFLUSH_NULL / **/
+/*#define FFLUSH_ALL / **/
/* I_BFD:
* This symbol, if defined, indicates that <bfd.h> exists and
* can be included.
*/
-/*#define I_BFD / **/
+/*#define I_BFD / **/
/* I_CRYPT:
* This symbol, if defined, indicates that <crypt.h> exists and
* should be included.
*/
-/*#define I_CRYPT / **/
+/*#define I_CRYPT / **/
/* DB_Prefix_t:
* This symbol contains the type of the prefix structure element
@@ -3642,19 +3684,19 @@
* This symbol, if defined, indicates that <fp.h> exists and
* should be included.
*/
-/*#define I_FP / **/
+/*#define I_FP / **/
/* I_FP_CLASS:
* This symbol, if defined, indicates that <fp_class.h> exists and
* should be included.
*/
-/*#define I_FP_CLASS / **/
+/*#define I_FP_CLASS / **/
/* I_IEEEFP:
* This symbol, if defined, indicates that <ieeefp.h> exists and
* should be included.
*/
-/*#define I_IEEEFP / **/
+/*#define I_IEEEFP / **/
/* I_INTTYPES:
* This symbol, if defined, indicates to the C program that it should
@@ -3666,13 +3708,13 @@
* This symbol, if defined, indicates that <langinfo.h> exists and
* should be included.
*/
-/*#define I_LANGINFO / **/
+/*#define I_LANGINFO / **/
/* I_LIBUTIL:
* This symbol, if defined, indicates that <libutil.h> exists and
* should be included.
*/
-/*#define I_LIBUTIL / **/
+/*#define I_LIBUTIL / **/
/* I_MALLOCMALLOC:
* This symbol, if defined, indicates to the C program that it should
@@ -3684,7 +3726,7 @@
* This symbol, if defined, indicates that <mntent.h> exists and
* should be included.
*/
-/*#define I_MNTENT / **/
+/*#define I_MNTENT / **/
/* I_NETINET_TCP:
* This symbol, if defined, indicates to the C program that it should
@@ -3696,37 +3738,37 @@
* This symbol, if defined, indicates that <poll.h> exists and
* should be included. (see also HAS_POLL)
*/
-/*#define I_POLL / **/
+/*#define I_POLL / **/
/* I_PROT:
* This symbol, if defined, indicates that <prot.h> exists and
* should be included.
*/
-/*#define I_PROT / **/
+/*#define I_PROT / **/
/* I_QUADMATH:
* This symbol, if defined, indicates that <quadmath.h> exists and
* should be included.
*/
-/*#define I_QUADMATH / **/
+/*#define I_QUADMATH / **/
/* I_SHADOW:
* This symbol, if defined, indicates that <shadow.h> exists and
* should be included.
*/
-/*#define I_SHADOW / **/
+/*#define I_SHADOW / **/
/* I_SOCKS:
* This symbol, if defined, indicates that <socks.h> exists and
* should be included.
*/
-/*#define I_SOCKS / **/
+/*#define I_SOCKS / **/
/* I_STDBOOL:
* This symbol, if defined, indicates that <stdbool.h> exists and
* can be included.
*/
-/*#define I_STDBOOL / **/
+/*#define I_STDBOOL / **/
/* I_STDINT:
* This symbol, if defined, indicates that <stdint.h> exists and
@@ -3738,54 +3780,59 @@
* This symbol, if defined, indicates that <sunmath.h> exists and
* should be included.
*/
-/*#define I_SUNMATH / **/
+/*#define I_SUNMATH / **/
/* I_SYSLOG:
* This symbol, if defined, indicates that <syslog.h> exists and
* should be included.
*/
-/*#define I_SYSLOG / **/
+/*#define I_SYSLOG / **/
/* I_SYSMODE:
* This symbol, if defined, indicates that <sys/mode.h> exists and
* should be included.
*/
-/*#define I_SYSMODE / **/
+/*#define I_SYSMODE / **/
/* I_SYS_MOUNT:
* This symbol, if defined, indicates that <sys/mount.h> exists and
* should be included.
*/
-/*#define I_SYS_MOUNT / **/
+/*#define I_SYS_MOUNT / **/
/* I_SYS_STATFS:
* This symbol, if defined, indicates that <sys/statfs.h> exists.
*/
-/*#define I_SYS_STATFS / **/
+/*#define I_SYS_STATFS / **/
/* I_SYS_STATVFS:
* This symbol, if defined, indicates that <sys/statvfs.h> exists and
* should be included.
*/
-/*#define I_SYS_STATVFS / **/
+/*#define I_SYS_STATVFS / **/
+
+/* I_SYS_SYSCALL:
+ * This symbol, if defined, indicates that <sys/syscall.h> exists.
+ */
+/*#define I_SYS_SYSCALL / **/
/* I_SYSUTSNAME:
* This symbol, if defined, indicates that <sys/utsname.h> exists and
* should be included.
*/
-/*#define I_SYSUTSNAME / **/
+/*#define I_SYSUTSNAME / **/
/* I_SYS_VFS:
* This symbol, if defined, indicates that <sys/vfs.h> exists and
* should be included.
*/
-/*#define I_SYS_VFS / **/
+/*#define I_SYS_VFS / **/
/* I_USTAT:
* This symbol, if defined, indicates that <ustat.h> exists and
* should be included.
*/
-/*#define I_USTAT / **/
+/*#define I_USTAT / **/
/* I_WCHAR:
* This symbol, if defined, indicates to the C program that <wchar.h>
@@ -3796,7 +3843,7 @@
/* I_WCTYPE:
* This symbol, if defined, indicates that <wctype.h> exists.
*/
-/*#define I_WCTYPE / **/
+/*#define I_WCTYPE / **/
/* DOUBLEINFBYTES:
* This symbol, if defined, is a comma-separated list of
@@ -3947,7 +3994,33 @@
* of copying mechanisms, handy.h defines a platform-
* independent macro, Perl_va_copy(src, dst), to do the job.
*/
-#define NEED_VA_COPY /**/
+#define NEED_VA_COPY /**/
+
+/* I32df:
+ * This symbol defines the format string used for printing a Perl I32
+ * as a signed decimal integer.
+ */
+/* U32uf:
+ * This symbol defines the format string used for printing a Perl U32
+ * as an unsigned decimal integer.
+ */
+/* U32of:
+ * This symbol defines the format string used for printing a Perl U32
+ * as an unsigned octal integer.
+ */
+/* U32xf:
+ * This symbol defines the format string used for printing a Perl U32
+ * as an unsigned hexadecimal integer in lowercase abcdef.
+ */
+/* U32Xf:
+ * This symbol defines the format string used for printing a Perl U32
+ * as an unsigned hexadecimal integer in uppercase ABCDEF.
+ */
+#define I32df "ld" /**/
+#define U32of "lo" /**/
+#define U32uf "lu" /**/
+#define U32xf "lx" /**/
+#define U32Xf "lX" /**/
/* IVTYPE:
* This symbol defines the C type used for Perl's IV.
@@ -4038,35 +4111,35 @@
* This symbol, if defined, indicates that a variable of type NVTYPE
* stores 0.0 in memory as all bits zero.
*/
-#define IVTYPE long /**/
-#define UVTYPE unsigned long /**/
-#define I8TYPE signed char /**/
-#define U8TYPE unsigned char /**/
-#define I16TYPE short /**/
-#define U16TYPE unsigned short /**/
-#define I32TYPE long /**/
-#define U32TYPE unsigned long /**/
+#define IVTYPE long /**/
+#define UVTYPE unsigned long /**/
+#define I8TYPE signed char /**/
+#define U8TYPE unsigned char /**/
+#define I16TYPE short /**/
+#define U16TYPE unsigned short /**/
+#define I32TYPE long /**/
+#define U32TYPE unsigned long /**/
#ifdef HAS_QUAD
-#define I64TYPE int64_t /**/
-#define U64TYPE uint64_t /**/
+#define I64TYPE int64_t /**/
+#define U64TYPE uint64_t /**/
#endif
-#define NVTYPE double /**/
-#define IVSIZE 4 /**/
-#define UVSIZE 4 /**/
-#define I8SIZE 1 /**/
-#define U8SIZE 1 /**/
-#define I16SIZE 2 /**/
-#define U16SIZE 2 /**/
-#define I32SIZE 4 /**/
-#define U32SIZE 4 /**/
+#define NVTYPE double /**/
+#define IVSIZE 4 /**/
+#define UVSIZE 4 /**/
+#define I8SIZE 1 /**/
+#define U8SIZE 1 /**/
+#define I16SIZE 2 /**/
+#define U16SIZE 2 /**/
+#define I32SIZE 4 /**/
+#define U32SIZE 4 /**/
#ifdef HAS_QUAD
-#define I64SIZE 8 /**/
-#define U64SIZE 8 /**/
+#define I64SIZE 8 /**/
+#define U64SIZE 8 /**/
#endif
-#define NVSIZE 8 /**/
+#define NVSIZE 8 /**/
#undef NV_PRESERVES_UV
-#define NV_PRESERVES_UV_BITS 0
-#define NV_OVERFLOWS_INTEGERS_AT (256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0)
+#define NV_PRESERVES_UV_BITS 0
+#define NV_OVERFLOWS_INTEGERS_AT (256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0)
#undef NV_ZERO_IS_ALLBITS_ZERO
#if UVSIZE == 8
# ifdef BYTEORDER
@@ -4114,14 +4187,14 @@
* This symbol defines the format string used for printing a Perl NV
* using %g-ish floating point format.
*/
-#define IVdf "ld" /**/
-#define UVuf "lu" /**/
-#define UVof "lo" /**/
-#define UVxf "lx" /**/
-#define UVXf "lX" /**/
-#define NVef "e" /**/
-#define NVff "f" /**/
-#define NVgf "g" /**/
+#define IVdf "ld" /**/
+#define UVuf "lu" /**/
+#define UVof "lo" /**/
+#define UVxf "lx" /**/
+#define UVXf "lX" /**/
+#define NVef "e" /**/
+#define NVff "f" /**/
+#define NVgf "g" /**/
/* SELECT_MIN_BITS:
* This symbol holds the minimum number of bits operated by select.
@@ -4132,6 +4205,16 @@
*/
#define SELECT_MIN_BITS 32 /**/
+/* ST_DEV_SIZE:
+ * This variable contains the size of struct stat's st_dev in bytes.
+ */
+/* ST_DEV_SIGN:
+ * This symbol holds the signedness of struct stat's st_dev.
+ * 1 for unsigned, -1 for signed.
+ */
+#define ST_DEV_SIGN 1 /* st_dev sign */
+#define ST_DEV_SIZE 4 /* st_dev size */
+
/* ST_INO_SIZE:
* This variable contains the size of struct stat's st_ino in bytes.
*/
@@ -4157,7 +4240,7 @@
* This symbol tells the name of the array holding the stdio streams.
* Usual values include _iob, __iob, and __sF.
*/
-/*#define HAS_STDIO_STREAM_ARRAY / **/
+/*#define HAS_STDIO_STREAM_ARRAY / **/
#ifdef HAS_STDIO_STREAM_ARRAY
#define STDIO_STREAM_ARRAY
#endif
@@ -4202,10 +4285,10 @@
* you may need at least to reboot your OS to 64-bit mode.
*/
#ifndef USE_64_BIT_INT
-/*#define USE_64_BIT_INT / **/
+/*#define USE_64_BIT_INT / **/
#endif
#ifndef USE_64_BIT_ALL
-/*#define USE_64_BIT_ALL / **/
+/*#define USE_64_BIT_ALL / **/
#endif
/* USE_C_BACKTRACE:
@@ -4232,7 +4315,7 @@
* Defaults to define in Perls 5.8 and earlier, to undef later.
*/
#ifndef USE_FAST_STDIO
-/*#define USE_FAST_STDIO / **/
+/*#define USE_FAST_STDIO / **/
#endif
/* USE_KERN_PROC_PATHNAME:
@@ -4247,7 +4330,7 @@
* should be used when available.
*/
#ifndef USE_LARGE_FILES
-/*#define USE_LARGE_FILES / **/
+/*#define USE_LARGE_FILES / **/
#endif
/* USE_LONG_DOUBLE:
@@ -4255,7 +4338,7 @@
* be used when available.
*/
#ifndef USE_LONG_DOUBLE
-/*#define USE_LONG_DOUBLE / **/
+/*#define USE_LONG_DOUBLE / **/
#endif
/* USE_MORE_BITS:
@@ -4263,7 +4346,7 @@
* long doubles should be used when available.
*/
#ifndef USE_MORE_BITS
-/*#define USE_MORE_BITS / **/
+/*#define USE_MORE_BITS / **/
#endif
/* MULTIPLICITY:
@@ -4271,7 +4354,7 @@
* be built to use multiplicity.
*/
#ifndef MULTIPLICITY
-/*#define MULTIPLICITY / **/
+/*#define MULTIPLICITY / **/
#endif
/* USE_NSGETEXECUTABLEPATH:
@@ -4287,7 +4370,7 @@
* used in a fully backward compatible manner.
*/
#ifndef USE_PERLIO
-/*#define USE_PERLIO / **/
+/*#define USE_PERLIO / **/
#endif
/* USE_QUADMATH:
@@ -4295,7 +4378,7 @@
* be used when available.
*/
#ifndef USE_QUADMATH
-/*#define USE_QUADMATH / **/
+/*#define USE_QUADMATH / **/
#endif
/* USE_SOCKS:
@@ -4303,7 +4386,7 @@
* be built to use socks.
*/
#ifndef USE_SOCKS
-/*#define USE_SOCKS / **/
+/*#define USE_SOCKS / **/
#endif
/* HAS_DRAND48_PROTO:
@@ -4312,7 +4395,7 @@
* to the program to supply one. A good guess is
* extern double drand48(void);
*/
-/*#define HAS_DRAND48_PROTO / **/
+/*#define HAS_DRAND48_PROTO / **/
/* HAS_GETHOST_PROTOS:
* This symbol, if defined, indicates that <netdb.h> includes
@@ -4320,7 +4403,7 @@
* gethostbyaddr(). Otherwise, it is up to the program to guess
* them. See netdbtype.U for probing for various Netdb_xxx_t types.
*/
-/*#define HAS_GETHOST_PROTOS / **/
+/*#define HAS_GETHOST_PROTOS / **/
/* HAS_GETNET_PROTOS:
* This symbol, if defined, indicates that <netdb.h> includes
@@ -4328,7 +4411,7 @@
* getnetbyaddr(). Otherwise, it is up to the program to guess
* them. See netdbtype.U for probing for various Netdb_xxx_t types.
*/
-/*#define HAS_GETNET_PROTOS / **/
+/*#define HAS_GETNET_PROTOS / **/
/* HAS_GETPROTO_PROTOS:
* This symbol, if defined, indicates that <netdb.h> includes
@@ -4336,7 +4419,7 @@
* getprotobyaddr(). Otherwise, it is up to the program to guess
* them. See netdbtype.U for probing for various Netdb_xxx_t types.
*/
-/*#define HAS_GETPROTO_PROTOS / **/
+/*#define HAS_GETPROTO_PROTOS / **/
/* HAS_GETSERV_PROTOS:
* This symbol, if defined, indicates that <netdb.h> includes
@@ -4344,7 +4427,7 @@
* getservbyaddr(). Otherwise, it is up to the program to guess
* them. See netdbtype.U for probing for various Netdb_xxx_t types.
*/
-/*#define HAS_GETSERV_PROTOS / **/
+/*#define HAS_GETSERV_PROTOS / **/
/* HAS_LSEEK_PROTO:
* This symbol, if defined, indicates that the system provides
@@ -4352,7 +4435,7 @@
* to the program to supply one. A good guess is
* extern off_t lseek(int, off_t, int);
*/
-/*#define HAS_LSEEK_PROTO / **/
+/*#define HAS_LSEEK_PROTO / **/
/* Netdb_host_t:
* This symbol holds the type used for the 1st argument
@@ -4873,10 +4956,15 @@
*/
/*#define HAS_MBRTOWC / **/
+/* HAS_NL_LANGINFO_L:
+ * This symbol, when defined, indicates presence of the nl_langinfo_l()
+ * function
+ */
/* HAS_THREAD_SAFE_NL_LANGINFO_L:
* This symbol, when defined, indicates presence of the nl_langinfo_l()
* function, and that it is thread-safe.
*/
+/*#define HAS_NL_LANGINFO_L / **/
/*#define HAS_THREAD_SAFE_NL_LANGINFO_L / **/
/* OLD_PTHREAD_CREATE_JOINABLE:
@@ -5095,6 +5183,18 @@
*/
/*#define HAS_STRTOLD_L / **/
+/* PERL_THREAD_LOCAL:
+ * This symbol, if defined, gives a linkage specification for thread-local
+ * storage. For example, for a C11 compiler this will be _Thread_local.
+ * Beware, some compilers are sensitive to the C language standard they are
+ * told to parse. For example, suncc defaults to C11, so our probe will
+ * report that _Thread_local can be used. However, if the -std=c99 is later
+ * added to the compiler flags, then _Thread_local will become a syntax
+ * error. Hence it is important for these flags to be consistent between
+ * probing and use.
+ */
+/*#define PERL_THREAD_LOCAL / **/
+
/* HAS_TMPNAM_R:
* This symbol, if defined, indicates that the tmpnam_r routine
* is available to tmpnam re-entrantly.
@@ -5158,10 +5258,10 @@
* try to use the various _r versions of library functions.
* This is extremely experimental.
*/
-/*#define USE_ITHREADS / **/
-/*#define USE_THREADS / **/
-/*#define OLD_PTHREADS_API / **/
-/*#define USE_REENTRANT_API / **/
+/*#define USE_ITHREADS / **/
+/*#define USE_THREADS / **/
+/*#define OLD_PTHREADS_API / **/
+/*#define USE_REENTRANT_API / **/
/* HAS_TIME:
* This symbol, if defined, indicates that the time() routine exists.
@@ -5191,7 +5291,7 @@
/* Gid_t_f:
* This symbol defines the format string used for printing a Gid_t.
*/
-#define Gid_t_f "lu" /**/
+#define Gid_t_f "lu" /**/
/* Gid_t_sign:
* This symbol holds the signedness of a Gid_t.
@@ -5259,7 +5359,7 @@
/* Uid_t_f:
* This symbol defines the format string used for printing a Uid_t.
*/
-#define Uid_t_f "lu" /**/
+#define Uid_t_f "lu" /**/
/* Uid_t_sign:
* This symbol holds the signedness of a Uid_t.
@@ -5282,6 +5382,6 @@
#endif
/* Generated from:
- * 6edd641b187b02d0daa8cb53f5d22f2dcca115a0d3e744f51b0292d2db484ca5 config_h.SH
- * a9ec40c778a205e0256475b5ef025389f7ea06d75d09ac92414f6b99839577e8 uconfig.sh
- * ex: set ro: */
+ * e17a83ff6ae98071d846d4a001f6ce1a669df08c357fe153c2370adc4910135e config_h.SH
+ * 8d785207fec43bbad5118a8125e625d1cc654455994f09a76c1625b2ae2ae2d0 uconfig.sh
+ * ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/uni_keywords.h b/Master/tlpkg/tlperl/lib/CORE/uni_keywords.h
index c0851645671..91ae731962f 100644
--- a/Master/tlpkg/tlperl/lib/CORE/uni_keywords.h
+++ b/Master/tlpkg/tlperl/lib/CORE/uni_keywords.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
* This file is built by regen/mk_invlists.pl from mph.pl.
* Any changes made here will be lost!
@@ -10,176 +10,153 @@
#define MPH_VALt I16
/*
-rows: 7264
-seed: 1348825708
-full length of keys: 101931
-blob length: 10351
-ref length: 58112
-data size: 68463 (%67.17)
+generator script: ./regen/mk_invlists.pl
+split strategy: squeeze
+srand: 1785235451
+rows: 7498
+seed: 1348825711
+full length of keys: 105417
+blob length: 8703
+ref length: 59984
+data size: 68687 (%65.16)
*/
STATIC const unsigned char mph_blob[] =
- "unifiedcanadianaboriginalsyllabicsextendedcjkcompatibilityideogra"
- "phssupplementarabicmathematicalalphabeticsymbolscombiningdiacriti"
- "calmarksforsymbolscombiningdiacriticalmarkssupplementmiscellaneou"
- "ssymbolsandpictographscombiningdiacriticalmarksextendedmiscellane"
- "ousmathematicalsymbolsamiscellaneousmathematicalsymbolsbsupplemen"
- "talmathematicaloperatorssupplementalsymbolsandpictographsegyptian"
- "hieroglyphformatcontrolsideographicdescriptioncharactersideograph"
- "icsymbolsandpunctuationmathematicalalphanumericsymbolscjkunifiedi"
- "deographsextensionacjkunifiedideographsextensionbcjkunifiedideogr"
- "aphsextensionccjkunifiedideographsextensiondcjkunifiedideographse"
- "xtensionecjkunifiedideographsextensionfcjkunifiedideographsextens"
- "iongcuneiformnumbersandpunctuationenclosedalphanumericsupplements"
- "ymbolsandpictographsextendedaenclosedideographicsupplementmiscell"
- "aneoussymbolsandarrowsphoneticextensionssupplementsupplementarypr"
- "ivateuseareaasupplementaryprivateuseareabvariationselectorssupple"
- "mentalphabeticpresentationformsancientgreekmusicalnotationenclose"
- "dcjklettersandmonthsopticalcharacterrecognitionprependedconcatena"
- "tionmark=changeswhennfkccasefolded=conditionaljapanesestarterdefa"
- "ultignorablecodepoint=halfwidthandfullwidthformskatakanaphonetice"
- "xtensionsconsonantinitialpostfixedfullcompositionexclusion=supers"
- "criptsandsubscriptssymbolsandpictographsextasymbolsforlegacycompu"
- "tingarabicpresentationformsaarabicpresentationformsbcanonicalcomb"
- "iningclass=cjksymbolsandpunctuationcombiningmarksforsymbolsconson"
- "antsucceedingrephahighprivateusesurrogatesindicpositionalcategory"
- "=supsymbolsandpictographsbyzantinemusicalsymbolsconsonantprecedin"
- "grephageometricshapesextendedhangulcompatibilityjamolatinextended"
- "additionalshorthandformatcontrolssupplementalpunctuationbidipaire"
- "dbrackettype=changeswhencasefolded=changeswhencasemapped=changesw"
- "henlowercased=changeswhentitlecased=changeswhenuppercased=cjkcomp"
- "atideographssupcommonindicnumberformsdiacriticalsforsymbolsearlyd"
- "ynasticcuneiformindicsyllabiccategory=logicalorderexception=misce"
- "llaneoustechnicalnoncharactercodepoint=spacingmodifierletterstran"
- "sportandmapsymbolscjkcompatibilityformscjkradicalssupplementcyril"
- "licsupplementaryextendedpictographic=graphemeclusterbreak=hanifir"
- "ohingyakinnayainscriptionalparthianmeeteimayekextensionspopdirect"
- "ionalisolatesinhalaarchaicnumbersyijinghexagramsymbolsanatolianhi"
- "eroglyphsconnectorpunctuationconsonantplaceholderconsonantwithsta"
- "ckerglagoliticsupplementinscriptionalpahlavilefttorightembeddingn"
- "yiakengpuachuehmongpopdirectionalformatrighttoleftembeddingtermin"
- "alpunctuation=topandbottomandrightverticalorientation=ancientgree"
- "knumbersbrahmijoiningnumberburushaskiyehbarreeconsonantheadletter"
- "countingrodnumeralsegyptianhieroglyphsenclosedalphanumsuphangulja"
- "moextendedahanguljamoextendedbhangulsyllabletype=idstrinaryoperat"
- "or=lefttorightoverridemeroitichieroglyphsmodifiertonelettersmongo"
- "liansupplementottomansiyaqnumbersrighttoleftoverridesundanesesupp"
- "lementsupplementalarrowsasupplementalarrowsbsupplementalarrowscto"
- "pandbottomandleftattachedaboverightcherokeesupplementcombininghal"
- "fmarksconsonantsubjoinedcopticepactnumbersdecompositiontype=devan"
- "agariextendedemojimodifierbase=emojipresentation=ethiopicsuppleme"
- "nteuropeanterminatorfirststrongisolategeneralpunctuationgeorgians"
- "upplementidsbinaryoperator=initialpunctuationlatinextadditionalle"
- "fttorightisolateornamentaldingbatsparagraphseparatorpatternwhites"
- "pace=regionalindicator=righttoleftisolateruminumeralsymbolssmallk"
- "anaextensiontaixuanjingsymbolstopandleftandrighttransformedrotate"
- "dtransformeduprightvariationselector=alchemicalsymbolsattachedbel"
- "owleftcanadiansyllabicscaucasianalbanianconsonantprefixedcyrillic"
- "extendedacyrillicextendedbcyrillicextendedcethiopicextendedaeurop"
- "eanseparatoridentifierstatus=indicsiyaqnumberskhitansmallscriptle"
- "tterlikesymbolsmanichaeandhamedhmanichaeanhundredmanichaeanthamed"
- "hscriptextensions=sentenceterminal=smallformvariantssuttonsignwri"
- "tingunifiedideograph=arabicsupplementbopomofoextendedcantillation"
- "markcloseparenthesisclosepunctuationcypriotsyllabaryfinalpunctuat"
- "iongeneralcategory=georgianextendedhalfandfullformshanifirohingya"
- "pahighpusurrogatesinvisiblestackerlatin1supplementlinearbideogram"
- "slinearbsyllabarymanichaeandalethmanichaeanlamedhmanichaeansamekh"
- "manichaeantwentymiscmathsymbolsamiscmathsymbolsbmyanmarextendedam"
- "yanmarextendedbotherpunctuationsegmentseparatorsupmathoperatorssy"
- "llablemodifiersyriacsupplementtangutcomponentstangutsupplementvow"
- "elindependentarabicextendedabamumsupplementboundaryneutralbraille"
- "patternscommonseparatorconsonantkillerconsonantmedialcontingentbr"
- "eakcontrolpicturescurrencysymbolsdashpunctuationdiacriticalsextdi"
- "acriticalssupeastasianwidth=emojicomponent=graphemeextend=hanguls"
- "yllablesidentifiertype=imperialaramaiclowercaselettermanichaeanal"
- "ephmanichaeangimelmanichaeansadhemanichaeanzayinmeroiticcursivemi"
- "scpictographsmodifyingletternfkcquickcheck=nfkdquickcheck=oldnort"
- "harabianoldsoutharabianopenpunctuationregistershiftertamilsupplem"
- "enttitlecaseletteruppercaselettervedicextensionsvisualorderleftza"
- "nabazarsquareancientsymbolsasciihexdigit=carriagereturncaseignora"
- "ble=cjkcompatformscomplexcontextconsonantfinalemojimodifier=europ"
- "eannumbergeminationmarkgreekandcoptichamzaonhehgoalhighsurrogates"
- "kanasupplementkangxiradicalslatinextendedblatinextendedclatinexte"
- "ndeddlatinextendedelisusupplementmandatorybreakmanichaeanayinmani"
- "chaeanbethmanichaeanfivemanichaeanhethmanichaeankaphmanichaeanqop"
- "hmanichaeanreshmanichaeantethmanichaeanyodhmodifiersymbolnfcquick"
- "check=nfdquickcheck=nojoininggroupnonspacingmarkpatternsyntax=pho"
- "neticextsuppostfixnumericpsalterpahlaviquotationmark=sentencebrea"
- "k=spaceseparatorsuppunctuationtehmarbutagoalvoweldependent1000000"
- "000000aegeannumbersbidimirrored=blockelementsconsonantdeaddecimal"
- "numberenclosingmarkgraphemebase=greekextendediotasubscriptipaexte"
- "nsionsjoininggroup=kanaextendedalineseparatorlowsurrogatesmalayal"
- "amlllamalayalamnnnamanichaeanmemmanichaeannunmanichaeanonemanicha"
- "eantawmanichaeantenmanichaeanwawmayannumeralsmisctechnicalnotappl"
- "icablenumericvalue=prefixnumericverticalformsalphabeticpfarabicle"
- "tterarabicnumberbidicontrol=breaksymbolschesssymbolscyrillicextac"
- "yrillicextbcyrillicextcethiopicextaextendnumletfinalsemkathglueaf"
- "terzwjgunjalagondihebrewletterideographic=infixnumericjoincontrol"
- "=joiningtype=khmersymbolsletternumbermahjongtilesmalayalambhamala"
- "yalamllamalayalamngamalayalamnnamalayalamnyamalayalamssamalayalam"
- "ttamanichaeanpemasaramgondimathalphanummendekikakuinoncanonicalno"
- "tcharacternotreorderednumberjoinernumerictype=oldhungarianotherne"
- "utralphaistosdiscplayingcardsrightjoiningtrailingjamoxidcontinue="
- "africannoonalphabetic=breakbeforecasedletterdeprecated=dominotile"
- "sdoubleabovedoublebelowdoublequotedualjoiningexclamationinseparab"
- "leinseperablejoincausingkanavoicingkatakanaextleadingjamoleftjoin"
- "inglvtsyllablemalayalamjamalayalamramedefaidrinmiscsymbolsmyanmar"
- "extamyanmarextbnandinagariotherletterothernumberothersymbolpahawh"
- "hmongrecommendedrohingyayehsinglequotesoftdotted=sorasompengstrai"
- "ghtwawsuperandsubsylotinagritopandrighttransparentuncommonuseyehw"
- "ithtailyisyllablesafricanfehafricanqafarabicextabasiclatinbelowri"
- "ghtbidiclass=boxdrawingbreakafterchorasmiancjkstrokescompatjamoda"
- "lathrishdiacritic=divesakuruhanreadingkharoshthiknottedhehlimited"
- "uselinebreak=lowercase=lvsyllablemiscarrowsnonjoiningnonstarterol"
- "dpersianoldsogdianoverstruckphoenicianpresentin=purekillerrestric"
- "tedreversedpesaurashtrasmallformssuparrowsasuparrowsbsuparrowscun"
- "assigneduppercase=warangcitiwordbreak=wordjoineryiradicals-5.00e-"
- "01aboveleftambiguousarabicpfaarabicpfbbhaiksukibreakbothemoticons"
- "extender=inclusioninheritedkhudawadilatinextblatinextclatinextdmi"
- "dlettermidnumletnabataeannewtailuenonjoinerolditalicoldpermicoldt"
- "urkicpalmyrenepaucinhausamaritanscontinuesyriacwawvoweljamowsegsp"
- "acexidstart=1.00e-011.11e-011.25e-011.25e-021.43e-011.50e+001.50e"
- "-011.56e-021.67e-011.88e-012.00e-012.50e+002.50e-012.50e-02200000"
- "003.12e-023.13e-023.13e-033.33e-013.50e+003.75e-013.75e-024.00e-0"
- "14.17e-014.50e+004.69e-025.00e-025.50e+005.83e-016.00e-016.25e-01"
- "6.25e-026.25e-036.50e+006.67e-017.50e+007.50e-018.00e-018.33e-018"
- ".33e-028.50e+008.75e-019.17e-01armenianavagrahabalinesebassavahbu"
- "gineseduployanebasegazextpict=farsiyehfractiongujaratigurmukhihir"
- "aganaisolatedjamoextajamoextbjavanesekanaextalinefeedmahajaninext"
- "lineobsoleteradical=specialsswashkaftagbanwatifinaghtonemarkugari"
- "ticaletterallowedavestanbengalicjkextacjkextbcjkextccjkextdcjkext"
- "ecjkextfcjkextgcompex=deseretelbasanelymaicgranthagrbase=hanunooh"
- "yphen=kannadakayahlilinearamakasarmandaicmarchenmultaninewlinenfk"
- "cqc=nfkdqc=noblocknobreaknotnfkcolchikioletterosmanyaoverlaypatsy"
- "n=phagspascript=sharadashaviansiddhamsoyombosuppuaasuppuabtagalog"
- "taithamtaiviettibetantirhutaucasextunknownvisargawspace=zwspace21"
- "6000300000400000432000500000600000700000800000900000alpha=bidic=b"
- "idim=block=carianccc103ccc107ccc118ccc122ccc129ccc130ccc132ccc133"
- "chakmacirclecwkcf=ecomp=emoji=epres=gothicgrext=hatranjoinc=kaith"
- "ikanbunkhojkilamadhlepchalower=lycianlydiannarrownchar=nfcqc=nfdq"
- "c=notxidpatws=qmark=rejangsterm=teluguthaanauideo=upper=viramawan"
- "choyezidiyudhhe1/1601/32011/12adlamahex=alaphatermbatakbindubuhid"
- "ccc14ccc15ccc16ccc17ccc18ccc19ccc20ccc21ccc22ccc23ccc24ccc25ccc26"
- "ccc27ccc28ccc29ccc30ccc31ccc32ccc33ccc34ccc35ccc36ccc84ccc91cntrl"
- "cwcf=cwcm=dash=dograemod=falseidsb=idst=inpc=insc=khaphlimbumath="
- "maybenuktanushuoghamoriyaosagerunictailetakrivssupxidc=xids=zhain"
- "-1/21/101/201/401/641/8010.011.011/212.113.013/215/217/23/163/203"
- "/643/805/127/12adlmage=aghbahomalefarmiarmnataratblavstbatkbhksbl"
- "k=bpt=buhdcakmcansccc=chrscprtcwl=cwt=cwu=cyrldep=dia=diakdsrtfon"
- "tgcb=gonggonmgrekgujrguruhanohluwhmnghmnphst=kalikhmrkitskndakthi"
- "lanalaoolatnlinalinbloe=medfmeemmercmiaomlymmroomteimymrnarbnbatn"
- "ewankoonshuogamolckorkhoryaosgepcm=phlpphnxplrdprtiqaacqaaiqaphrj"
- "ngrohgrunrsamrsarbscx=seensgnwshawshinshrdsogosyrctagstaletalutam"
- "ltavttfngtglgthaitibttruev100v110v120v121v130vaiiwchowidexpeoxsux"
- "yiiizainzanbzinhzyyyzzzz1/51/71/92/32/520221421822222422622823023"
- "22332342403.23/43/54/55.15.25/65/86.16.37.07/89.09/2bc=behci=di=d"
- "t=ea=ebgfsigafgc=jg=jt=lb=lrelrilromimnv=ocrpdfrehri=sd=smlsqrtah"
- "v20v21v30v31v32v40v41v50v51v52v60v61v62v63v70v80v90vo=vs=wb=yes38"
- "39444546474849b2bkh2h3jljvkvl&l_vrxxzlzpzs_perl_problematic_local"
- "e_foldeds_is_in_multi_char_fold_perl_folds_to_perl_charname_begin"
- "any_foldsquotemetaisxposixisposixblankprintishorizisxperlisperlis"
- "spaceisvertisuni";
-/* mph_blob length: 10351 */
+ "l&cwlocrpcmadlmaghbahexahomarmiavstbatkbhksbuhdcakmcanschamchrscp"
+ "mncprtcwucyrldsrtgonggrekgujrguruhluwhmngzlkawikitskndalaoolatnme"
+ "dfmteimymrnarbnewaoryaosgeougrphlpphnxqaacrjngrohgrunrsamrsgnwtag"
+ "stamltavttfngtglgtibttotowchoxpeoxsuxyiiizanbzyyyzzzzcntrlcwcfcwc"
+ "mcwkcfcwtzpgcb=b2h2jlxxnushu3040nv=90oriyapatwsprintqmarktailevss"
+ "upfsipdfcarianccc=1218491vre=yeschakmasmlsqrgothicgrexthyphen3.26"
+ ".3415161miaoarmndiakgonmhanokhmrlinamroonkooogamolckorkhphliplrdp"
+ "rtiqaaishawsogotnsavaiibehgafhahrehbunkhojkilydiannfdqcnv=3//5nv="
+ "7patsynrejangsb=stangsaebg3.04.0age=56.07.08.09.052avestanccc=22e"
+ "=truedeseretdt=nonewideelbasanelymaicextpictgrbashanunoohst=lvtad"
+ "lambuhiddogralimbuoghamosagerunictakribatakisotheeemnoonseenshinz"
+ "ainkannadakayahlilinearamandaicmarchennfkcqc-1/2/645/27/2olchikio"
+ "smanyahmnpkalilananbatsarbshrdsyrczinhsharadashavianstermuaatagal"
+ "ogtaithamtaiviettibetantirhutauideounknownage=10.0age=v1armenianb"
+ "alinesebassavahbpt=opene=falsecompexsuperduployanextendergujarati"
+ "gurmukhihiraganahatrankaithilepchalycianteluguwanchoyezidijamoext"
+ "bgamalkhaphmahajaninfkdqcnv=1/31/12nv=2erlwordkthilinbmercnshuscx"
+ "=talupecialstagbanwatifinaghvithkuqipfabhaiksuki2435nuktacircleme"
+ "dialea=narrowmoticonsbengaliincjkexgranthainheritedinkanamakasarm"
+ "ultaninoblockphagspasiddhamsoyombouabiscjkexlamadhkhudawadinabata"
+ "eannewtailue1600032000olditalicoldpermicoldturkicolduyghurpalmyre"
+ "nepaucinhausamaritanthaanawb=mixidstartbasiclatinboxdrawingccc=cc"
+ "c1viramachorasmianstrokesdeprecateddivesakuruorizspacebugineseing"
+ "eorgiajamoextajavanesebinduugariticiskanathinyehkharoshthiiscarro"
+ "wsnagmundarioldpersianphoeniciansaurashtraolettermallformssoftdot"
+ "teduprightwarangcitialetternewlineerlspaceblk=cjkextdoverlaycypro"
+ "minoandominotilesfractionisolatedpfbisarabicisspaceisvertfarsiyeh"
+ "swashkaflinefeednextlinemedefaidrinnfcqc=maybenv=10000000pahawhhm"
+ "ongscript=mlymsorasompengerandsubsylotinagriebasegazyisyllablesbi"
+ "dicontrolbidimirroredblk=kanaucasextahesssymbolsambiguousgrapheme"
+ "basegunjalagondiompatjamooldsogdianvisargayiradicalsisposixsyriac"
+ "wawjoiningtype=breakbothbkh3jvmasaramgondiathalphanummendekikakui"
+ "1.0.111e-01.250e-01.429e-01.500e+00.562e-02.563e-02.667e-01.875e-"
+ "01.500e-013.125e-02.333e-01.750e-01nv=4.167e-01.688e-02.000e-02nv"
+ "=5.833e-01nv=6.250e-02nv=8.333e-02oldhungarianphaistosdiscplaying"
+ "cardspresentin=14wsegspacexidcontinueegeannumbersblock=cjkexblock"
+ "elementscaseignorablunassignedreekextendedvoweljamoincyrillicinet"
+ "hiopickatakanaextiscsymbolsinmyanmarnandinagariavagrahatonemarkip"
+ "aextensionsiscasedletterisgeorgiajoincontrolismyanmarisxposixblan"
+ "kjg=africanfehdalathrishknottedhehreversedpenonjoiningbreakaftern"
+ "onstarterwordjoinerowsurrogatesayannumeralsisctechnical-5.000e-01"
+ "patternsyntaxpresentin=56.1verticalformsncientsymbolsbc=righttole"
+ "ftblk=arabichanreadingemojicomponentgc=othereekandcoptichighsurro"
+ "gateslphabeticpfkhmersymbolsnonjoineriscyrillicisethiopicmahjongt"
+ "ilesrohingyayehstraightwawyehwithtaildualjoiningjoincausingleftjo"
+ "iningjt=transparentbreakbeforeexclamationinseparableinseperablenf"
+ "cquickchecknumerictype=epresentin=v1psalterpahlaviquotationmarkdo"
+ "ublequotesinglequoteany_foldsquotemetaasciihexdigitarabicletterot"
+ "herneutralblk=georgiadoubleabovekanavoicingontrolpictureseastasia"
+ "nwidth=letternumbergraphemeextendeadingjamoimperialaramaicoverstr"
+ "uckpurekillerdecimalnumberenclosingmarkfinalsemkathverticaltailri"
+ "ghtjoininghebrewletterinfixnumericmeroiticcursiveiscpictographsnf"
+ "dquickchecknumericvalue=236numericvalue=4oldnortharabianoldsoutha"
+ "rabianextendnumletglueafterzwjzanabazarsquareblk=cyrillicblk=ethi"
+ "opicblock=arabicnotreorderedcypriotsyllabarylineseparatorhalfandf"
+ "ullformshighpusurrogatestrailingjamocompatformsgxiradicalsinlatin"
+ "extendeddphoneticextsupdevanagariextaislatinextendedlisusupplemen"
+ "tnonspacingmarklllajg=malayalamnnnamemtawktoviknumeralsprefixnume"
+ "ricinearbideogramsiscmathsymbolsanfkcquickchecknumericvalue=1/num"
+ "ericvalue=5/8numericvalue=70numericvalue=80numericvalue=9sentence"
+ "terminaltangutcomponentseuropeannumberanadiansyllabicscaucasianal"
+ "banianiotasubscriptemojipresentationgmodifiersymbolspaceseparator"
+ "notapplicableidsbinaryoperatorbraillepatternscurrencysymbolsindic"
+ "siyaqnumbersleftandrightnumberjoinervedicextensionsdashpunctuatio"
+ "ndiacriticalsexthangulsyllableslowercaseletteropenpunctuationhamz"
+ "aonhehgoalbethfivehethkaphqophreshyodhqaphtethkhitansmallscriptca"
+ "rriagereturncomplexcontextmandatorybreakpostfixnumericetterlikesy"
+ "mbolslinebreak=zwspacenfkdquickchecknumericvalue=3/2regionalindic"
+ "atorscriptextensions=mallformvariantsttonsignwritingboundaryneutr"
+ "alcommonseparatorblk=latinextendedblock=cyrillicextcopticepactnum"
+ "berstitlecaseletteruppercaseletteridstrinaryoperatorinitialpunctu"
+ "ationlinearbsyllabaryiscmathsymbolsbbopomofoextendedclosepunctuat"
+ "ionfinalpunctuation1supplementyriacsupplementtangutsupplementalep"
+ "hgimelsadhezayinlaphzhainadditionalcontingentbreaknumericvalue=6o"
+ "rnamentaldingbatsparagraphseparatorpatternwhitespaceruminumeralsy"
+ "mbolssegmentseparatorbamumsupplementdiacriticalssuptamilsupplemen"
+ "tblock=kanaegyptianhieroglyphsemojimodifierbaselchemicalsymbolsge"
+ "minationmarkvoweldependenthanifirohingyapadalethlamedhsamekhjg=ma"
+ "nichaeantwentyyudhhe=closeparenthesisodifiertonelettersottomansiy"
+ "aqnumbersatermarrowsawordbreak=mi_perl_charname_beanatolianhierog"
+ "lyphsblk=myanmarblock=latinextendedconnectorpunctuationextendedpi"
+ "ctographicombininghalfmarksneralpunctuationvisualorderleftmodifyi"
+ "ngletterregistershifterinscriptionalpahlavitaixuanjingsymbolscher"
+ "okeesupplementmallkanaextensiondhamedhhundrednyiakengpuachuehmong"
+ "terminalpunctuationeuropeanterminatorfirststrongisolateattachedbe"
+ "lowleftchangeswhencasefoldedchangeswhencasemappedchangeswhenlower"
+ "casedchangeswhentitlecasedchangeswhenuppercasedgraphemeclusterbre"
+ "ak=identifiertype=notncientgreeknumbersountingrodnumeralsmeroitic"
+ "hieroglyphsantillationmarkinvisiblestackersyllablemodifierinscrip"
+ "tionalparthianinsupplementalarrowsbnclosedalphanumsuphanguljamoex"
+ "tendedamongoliansupplementsundanesesupplementissupplementalarrows"
+ "clogicalorderexceptionnoncharactercodepointsinhalaarchaicnumbersv"
+ "o=transformedrotatedyijinghexagramsymbolsoverridearabicnumberbidi"
+ "pairedbrackettypeblock=ethiopicblock=georgianblock=myanmarmathope"
+ "ratorsfontdiacriticalsforsymbolsarlydynasticcuneiforminsc=consona"
+ "ntprefixedglagoliticsupplementburushaskiyehbarreebreaksymbolsnume"
+ "ricvalue=100000.500e-02.125e-03.750e-02.250e-03bc=lefttorightembe"
+ "ddingpopdirectionalformatblhanguljamoextendedbhangulcompatibility"
+ "jamoobsoletecompatibilityformsradicalssupplementsubjoinedjoiningg"
+ "roup=africanqafsentencebreak=shorthandformatcontrolsznamennymusic"
+ "alnotationhighprivateusesurrogatesstatus=allowedinclusioncompatid"
+ "eographssupommonindicnumberformsiscellaneoustechnicalinpc=topandb"
+ "ottomandleftbrahmijoiningnumberheadletterpacingmodifierletterstra"
+ "nsportandmapsymbolshanifirohingyakinnayajoininggroup=malayalamfol"
+ "ds_to_multi_charmeeteimayekextensionsdevanagariextendedachangeswh"
+ "ennfkccasefoldeddefaultignorablecodepointfullcompositionexclusion"
+ "limitedusebyzantinemusicalsymbolsplaceholderwithstackermetricshap"
+ "esextendederscriptsandsubscriptsymbolsforlegacycomputingcanonical"
+ "combiningclass=2halfwidthandfullwidthformsrecommendeduncommonusei"
+ "narabicpresentationformsbcombiningmarksforsymbolsprependedconcate"
+ "nationmarkis_in_multi_char_foldeuropeanseparatorblk=supplementalc"
+ "anonicalcombiningclass=128nclosedcjklettersandmonthsgeneralcatego"
+ "ry=othestatus=restrictedymbolsandpictographsextanojoininggroupteh"
+ "marbutagoalopticalcharacterrecognitionbidiclass=lefttorightbidicl"
+ "ass=righttoleftatarprecedingrephatakanaphoneticextensionssuppleme"
+ "ntaryprivateuseareaacanonicalcombiningclass=ccc1succeedingrephalp"
+ "habeticpresentationformsancientgreekmusicalnotationlb=conditional"
+ "japanesestarteriscellaneoussymbolsandarrowsdecompositiontype=nonh"
+ "angulsyllabletype=lvtinitialpostfixedryprivateuseareabvariationse"
+ "lectorssupplementjoininggroup=manichaeantpopdirectionalisolatencl"
+ "osedideographicsupplementathematicalalphanumericsymbolsideographi"
+ "cdescriptioncharactersincjkunifiedideographsextensnclosedalphanum"
+ "ericsupplementiscjkunifiedideographsextensuneiformnumbersandpunct"
+ "uationymbolsandpictographsextendedaaboveleftiscellaneousmathemati"
+ "calsymbolsablk=cjkunifiedideographsextensbelowrightgyptianhierogl"
+ "yphformatcontrolsideographicsymbolsandpunctuationmathematicalalph"
+ "abeticsymbolsdoublebelowombiningdiacriticalmarksextendedindicposi"
+ "tionalcategory=topandinmiscellaneousmathematicalsymbolsbblock=cjk"
+ "unifiedideographsextensindicsyllabiccategory=consonantiscellaneou"
+ "ssymbolsandpictographsombiningdiacriticalmarksforsymbols_perl_pro"
+ "blematic_locale_foldeds_compatibilityideographssupplement=bottoma"
+ "ndrightvowelindependentverticalorientation=transformombiningdiacr"
+ "iticalmarkssupplementblock=supplementalmathematicaloperatorsattac"
+ "hedaboverightisunifiedcanadianaboriginalsyllabicsextendeda";
+/* mph_blob length: 8703 */
struct mph_struct {
U16 seed2;
@@ -191,7288 +168,7524 @@ struct mph_struct {
};
#define MPH_RSHIFT 8
-#define MPH_BUCKETS 7264
+#define MPH_BUCKETS 7498
-STATIC const U32 MPH_SEED1 = 0x5065726c;
-STATIC const U32 MPH_FNV_CONST = 0x01000193;
+STATIC const U32 MPH_SEED1 = 0x5065726f;
+STATIC const U32 MPH_FNV32_PRIME = 0x01000193;
/* The comments give the input key for the row it is in */
STATIC const struct mph_struct mph_table[MPH_BUCKETS] = {
- { 2, 9768, 9632, 4, 4, UNI_LINA } /* scx=lina */,
- { 2, 5791, 6572, 13, 4, UNI_JG__NOON } /* joininggroup=noon */,
- { 1, 7325, 9384, 3, 4, UNI_IN__10 } /* in=10.0 */,
- { 2, 9488, 7188, 4, 10, UNI_INKHAROSHTHI } /* blk=kharoshthi */,
- { 1, 1417, 23, 24, 2, UNI_CCC__AL } /* canonicalcombiningclass=al */,
- { 0, 184, 2666, 3, 10, UNI_COUNTINGROD } /* iscountingrod */,
- { 0, 1654, 0, 23, 0, UNI_COMPATJAMO } /* hangulcompatibilityjamo */,
- { 8, 7158, 9836, 10, 4, UNI_DIA } /* diacritic=true */,
- { 2, 8780, 8373, 7, 6, UNI_CJKEXTD } /* block=cjkextd */,
- { 1, 5986, 9973, 13, 3, UNI_NV__5_SLASH_6 } /* numericvalue=5/6 */,
- { 1, 10027, 6323, 3, 5, UNI_JG__GAMAL } /* jg=gamal */,
- { 0, 8900, 0, 6, 0, UNI_KTHI } /* kaithi */,
- { 6, 1537, 2455, 24, 5, UNI_INPC__RIGHT } /* indicpositionalcategory=right */,
- { 0, 7398, 0, 10, 0, UNI_SUPARROWSC } /* suparrowsc */,
- { 1, 9002, 0, 6, 0, UNI_TELU } /* telugu */,
- { 4, 10024, 9503, 3, 2, UNI_MC } /* gc=mc */,
- { 0, 7218, 18, 10, 2, UNI_RI } /* linebreak=ri */,
- { 0, 1856, 0, 21, 0, UNI_CWU } /* changeswhenuppercased */,
- { 1, 2779, 0, 3, 0, UNI_IDS } /* ids */,
- { 8, 10048, 9061, 3, 4, UNI_NV__1_SLASH_12 } /* nv=1/12 */,
- { 0, 10006, 10135, 3, 3, UNI_DI } /* di=yes */,
- { 0, 8780, 5947, 6, 13, UNI_MAYANNUMERALS } /* block=mayannumerals */,
- { 1, 9444, 10108, 4, 3, UNI_AGE__6_DOT_1 } /* age=v61 */,
- { 0, 5186, 0, 14, 0, UNI_HIGHSURROGATES } /* highsurrogates */,
- { 0, 10333, 1528, 3, 8, UNI__PERL_SURROGATE } /* issurrogate */,
- { 1, 7739, 3, 8, 1, -UNI_IDS } /* idstart=f */,
- { 0, 184, 6840, 2, 11, UNI_NAND } /* isnandinagari */,
- { 0, 446, 0, 32, 0, UNI_IDEOGRAPHICSYMBOLS } /* ideographicsymbolsandpunctuation */,
- { 4, 9448, 0, 4, 0, UNI_AGHB } /* aghb */,
- { 3, 3836, 9712, 17, 4, UNI_OSGE } /* scriptextensions=osge */,
- { 0, 9270, 7685, 3, 8, UNI_INPAUCINHAU } /* inpaucinhau */,
- { 0, 10048, 9055, 3, 3, UNI_NV__1_SLASH_3 } /* nv=1/3 */,
- { 7, 1834, 10135, 22, 3, UNI_CWT } /* changeswhentitlecased=yes */,
- { 1, 9768, 8414, 4, 7, UNI_ELBA } /* scx=elbasan */,
- { 4, 8780, 1673, 6, 4, UNI_JAMO } /* block=jamo */,
- { 0, 8688, 5662, 3, 12, UNI_AEGEANNUMBERS } /* isaegeannumbers */,
- { 0, 1552, 5040, 9, 5, UNI_XPOSIXDIGIT } /* category=digit */,
- { 4, 10296, 25, 3, 1, UNI_PS } /* isps */,
- { 0, 1536, 0, 4, 0, UNI_SIND } /* sind */,
- { 0, 1417, 8807, 24, 3, UNI_CCC__118 } /* canonicalcombiningclass=118 */,
- { 5, 8774, 9836, 6, 4, UNI_BIDIM } /* bidim=true */,
- { 2, 9488, 283, 4, 33, UNI_MISCMATHSYMBOLSB } /* blk=miscellaneousmathematicalsymbolsb */,
- { 0, 1823, 0, 9, 0, UNI_XPOSIXLOWER } /* lowercase */,
- { 1, 184, 8924, 2, 4, UNI_LEPC } /* islepc */,
- { 0, 9277, 8243, 3, 8, UNI_SC__MAHJ } /* sc=mahajani */,
- { 1, 9277, 9315, 3, 5, UNI_SC__ORYA } /* sc=oriya */,
- { 3, 9768, 8936, 4, 6, UNI_LYCI } /* scx=lycian */,
- { 1, 5270, 0, 14, 0, UNI_LATINEXTE } /* latinextendede */,
- { 1, 3836, 4448, 17, 4, UNI_BAMU } /* scriptextensions=bamu */,
- { 0, 8267, 26, 8, 1, UNI_RADICAL } /* radical=y */,
- { 0, 32, 0, 2, 0, UNI__PERL_SURROGATE } /* cs */,
- { 16, 1417, 3564, 24, 13, UNI_CCC__202 } /* canonicalcombiningclass=attachedbelow */,
- { 0, 10024, 4943, 3, 15, UNI_TITLE } /* gc=titlecaseletter */,
- { 0, 2182, 406, 21, 7, UNI_GCB__CN } /* graphemeclusterbreak=control */,
- { 1, 6241, 24, 12, 1, UNI_JT__L } /* joiningtype=l */,
- { 0, 10048, 9973, 3, 3, UNI_NV__5_SLASH_6 } /* nv=5/6 */,
- { 1, 21, 7585, 2, 9, UNI_LATINEXTC } /* inlatinextc */,
- { 0, 3836, 9864, 17, 4, UNI_WCHO } /* scriptextensions=wcho */,
- { 1, 3367, 26, 18, 1, UNI__PERL_PATWS } /* patternwhitespace=y */,
- { 0, 8780, 2469, 6, 20, UNI_INNYIAKENGPUACHUEHMONG } /* block=nyiakengpuachuehmong */,
- { 1, 8780, 749, 6, 21, UNI_ENCLOSEDALPHANUM } /* block=enclosedalphanumerics */,
- { 2, 184, 9576, 2, 4, UNI_GURU } /* isguru */,
- { 0, 10333, 9793, 3, 3, UNI_SOGO } /* issogo */,
- { 0, 10048, 7771, 3, 8, UNI_NV__1_SLASH_80 } /* nv=1.25e-02 */,
- { 1, 9444, 9991, 4, 3, UNI_AGE__9 } /* age=9.0 */,
- { 0, 9488, 567, 4, 2, UNI_NB } /* blk=nb */,
- { 0, 9488, 1922, 4, 12, UNI_DIACRITICALS } /* blk=diacriticals */,
- { 13, 1537, 2555, 24, 6, UNI_INPC__BOTTOM } /* indicpositionalcategory=bottom */,
- { 1, 10024, 5497, 3, 11, UNI_MC } /* gc=spacingmark */,
- { 3, 2784, 80, 4, 8, UNI_ARABICMATH } /* inarabicmath */,
- { 0, 5791, 5620, 13, 14, UNI_JG__HAMZAONHEHGOAL } /* joininggroup=tehmarbutagoal */,
- { 32, 4791, 1595, 3, 13, UNI_MUSIC } /* inmusicalsymbols */,
- { 0, 8589, 2329, 7, 20, UNI_HLUW } /* script=anatolianhieroglyphs */,
- { 0, 7088, 3374, 10, 10, UNI_BC__WS } /* bidiclass=whitespace */,
- { 0, 184, 7168, 2, 10, UNI_DIAK } /* isdivesakuru */,
- { 0, 184, 9636, 2, 4, UNI_LINB } /* islinb */,
- { 0, 9488, 7684, 4, 9, UNI_INPAUCINHAU } /* blk=paucinhau */,
- { 0, 6939, 0, 11, 0, UNI_SORA } /* sorasompeng */,
- { 3, 9768, 8131, 4, 8, UNI_DUPL } /* scx=duployan */,
- { 1, 9488, 629, 4, 30, UNI_CJKEXTE } /* blk=cjkunifiedideographsextensione */,
- { 8, 9488, 2098, 4, 21, UNI_CJKCOMPATFORMS } /* blk=cjkcompatibilityforms */,
- { 1, 10290, 96, 6, 5, UNI_XPOSIXALPHA } /* xposixalpha */,
- { 1, 9732, 0, 4, 0, UNI_PRTI } /* prti */,
- { 0, 8589, 3241, 7, 8, UNI_SC__GEOR } /* script=georgian */,
- { 1, 5032, 0, 14, 0, UNI_ahex_values_index } /* asciihexdigit= */,
- { 1, 3529, 36, 18, 1, UNI_VS } /* variationselector=t */,
- { 0, 2569, 409, 20, 2, UNI_VO__TR } /* verticalorientation=tr */,
- { 3, 2182, 6763, 21, 3, UNI_LB__H3 } /* graphemeclusterbreak=lvt */,
- { 1, 9768, 8299, 4, 8, UNI_TFNG } /* scx=tifinagh */,
- { 0, 6553, 0, 11, 0, UNI_XIDC } /* xidcontinue */,
- { 0, 3836, 4793, 17, 15, UNI_MERC } /* scriptextensions=meroiticcursive */,
- { 10, 341, 0, 2, 0, UNI_PE } /* pe */,
- { 1, 3097, 8846, 18, 6, UNI_DT__ENC } /* decompositiontype=circle */,
- { 2, 4688, 6609, 15, 10, UNI_DEP } /* identifiertype=deprecated */,
- { 0, 184, 9231, 3, 3, UNI_CWCF } /* iscwcf */,
- { 2, 8780, 6829, 6, 11, UNI_MYANMAREXTB } /* block=myanmarextb */,
- { 0, 5986, 7781, 13, 1, UNI_NV__4 } /* numericvalue=4 */,
- { 1, 0, 0, 34, 0, UNI_UCAS } /* unifiedcanadianaboriginalsyllabics */,
- { 1, 1417, 3007, 24, 18, UNI_CCC__216 } /* canonicalcombiningclass=attachedaboveright */,
- { 1, 1966, 9090, 22, 5, UNI_INSC__BINDU } /* indicsyllabiccategory=bindu */,
- { 0, 6229, 1025, 12, 2, -UNI_JOINC } /* joincontrol=no */,
- { 2, 9997, 2893, 3, 19, UNI_BC__RLO } /* bc=righttoleftoverride */,
- { 5, 8780, 149, 7, 34, UNI_DIACRITICALSSUP } /* block=combiningdiacriticalmarkssupplement */,
- { 1, 9528, 0, 4, 0, UNI_cwu_values_index } /* cwu= */,
- { 0, 9277, 9440, 3, 4, UNI_SC__ADLM } /* sc=adlm */,
- { 1, 9488, 9032, 4, 6, UNI_INWANCHO } /* blk=wancho */,
- { 7, 10048, 8756, 3, 2, UNI_NV__90 } /* nv=90 */,
- { 0, 9277, 9812, 3, 4, UNI_SC__TAML } /* sc=taml */,
- { 8, 5986, 8720, 13, 6, UNI_NV__400000 } /* numericvalue=400000 */,
- { 1, 10009, 1253, 3, 4, UNI_DT__INIT } /* dt=init */,
- { 0, 7218, 866, 10, 2, UNI_LB__SP } /* linebreak=sp */,
- { 3, 9997, 2449, 3, 11, UNI_BC__L } /* bc=lefttoright */,
- { 2, 3115, 0, 13, 0, UNI_DEVANAGARIEXT } /* devanagariext */,
- { 1, 5791, 3785, 13, 17, UNI_JG__MANICHAEANDHAMEDH } /* joininggroup=manichaeandhamedh */,
- { 1, 9508, 7178, 4, 10, UNI_CCC__6 } /* ccc=hanreading */,
- { 4, 5986, 8750, 13, 3, UNI_NV__800 } /* numericvalue=800 */,
- { 5, 5060, 9255, 14, 5, -UNI_CI } /* caseignorable=false */,
- { 2, 184, 6818, 2, 11, UNI_MYANMAREXTA } /* ismyanmarexta */,
- { 0, 5037, 1, 9, 1, -UNI_XPOSIXXDIGIT } /* hexdigit=n */,
- { 0, 21, 5662, 3, 12, UNI_AEGEANNUMBERS } /* inaegeannumbers */,
- { 1, 4898, 0, 15, 0, UNI_PS } /* openpunctuation */,
- { 8, 5986, 8714, 13, 4, UNI_NV__3000 } /* numericvalue=3000 */,
- { 0, 8589, 9736, 7, 4, UNI_SC__COPT } /* script=qaac */,
- { 0, 7088, 10036, 10, 3, UNI_BC__LRE } /* bidiclass=lre */,
- { 2, 5564, 9836, 14, 4, UNI_QMARK } /* quotationmark=true */,
- { 1, 9277, 9864, 3, 4, UNI_WCHO } /* sc=wcho */,
- { 3, 9508, 7978, 4, 2, UNI_CCC__16 } /* ccc=16 */,
- { 2, 5564, 26, 14, 1, UNI_QMARK } /* quotationmark=y */,
- { 0, 6231, 2120, 3, 20, UNI_CJKRADICALSSUP } /* incjkradicalssupplement */,
- { 7, 10048, 8732, 3, 6, UNI_NV__500000 } /* nv=500000 */,
- { 1, 3836, 9660, 17, 4, UNI_MLYM } /* scriptextensions=mlym */,
- { 0, 1552, 1899, 9, 2, UNI_PC } /* category=pc */,
- { 0, 9768, 78, 4, 4, UNI_ARAB } /* scx=arab */,
- { 21, 10296, 7676, 3, 8, UNI_PALM } /* ispalmyrene */,
- { 0, 27, 0, 2, 0, UNI_LOWERCASELETTER } /* ll */,
- { 1, 1823, 0, 5, 0, UNI_XPOSIXLOWER } /* lower */,
- { 0, 10027, 6349, 3, 12, UNI_JG__MALAYALAMSSA } /* jg=malayalamssa */,
- { 3, 8780, 2203, 6, 14, UNI_INHANIFIROHINGYA } /* block=hanifirohingya */,
- { 2, 184, 8219, 2, 4, UNI_JAVA } /* isjava */,
- { 0, 9488, 4568, 4, 15, UNI_CURRENCYSYMBOLS } /* blk=currencysymbols */,
- { 1, 6420, 1061, 3, 26, UNI_OCR } /* inopticalcharacterrecognition */,
- { 2, 5791, 3802, 13, 17, UNI_JG__MANICHAEANHUNDRED } /* joininggroup=manichaeanhundred */,
- { 16, 1188, 8646, 3, 6, UNI_INTAITHAM } /* intaitham */,
- { 9, 1018, 0, 5, 0, UNI_MUSIC } /* music */,
- { 0, 9488, 7495, 4, 9, UNI_ARABICPFA } /* blk=arabicpfa */,
- { 1, 9260, 0, 5, 0, UNI_idsb_values_index } /* idsb= */,
- { 0, 8589, 9700, 7, 4, UNI_OLCK } /* script=olck */,
- { 0, 1417, 1756, 24, 2, UNI_CCC__BR } /* canonicalcombiningclass=br */,
- { 4, 9270, 472, 3, 2, UNI_PUA } /* inpua */,
- { 0, 184, 9652, 2, 4, UNI_MERC } /* ismerc */,
- { 4, 1189, 0, 3, 0, UNI_nt_values_index } /* nt= */,
- { 8, 9275, 4353, 5, 16, UNI_INSC__SYLLABLEMODIFIER } /* insc=syllablemodifier */,
- { 3, 10288, 2779, 3, 3, UNI_XIDS } /* isxids */,
- { 1, 184, 0, 4, 0, UNI_CE } /* isce */,
- { 3, 8688, 5019, 3, 13, UNI_ANCIENTSYMBOLS } /* isancientsymbols */,
- { 1, 9508, 8823, 5, 4, UNI_CCC__13 } /* ccc=ccc13 */,
- { 1, 9768, 8219, 4, 8, UNI_JAVA } /* scx=javanese */,
- { 2, 8400, 26, 7, 1, UNI_COMPEX } /* compex=y */,
- { 1, 10027, 7016, 3, 11, UNI_JG__YEHWITHTAIL } /* jg=yehwithtail */,
- { 1, 7155, 34, 3, 2, UNI_XPOSIXXDIGIT } /* ishex */,
- { 0, 5986, 7915, 13, 8, UNI_NV__3_SLASH_80 } /* numericvalue=3.75e-02 */,
- { 17, 9997, 1, 4, 1, UNI_BC__BN } /* bc=bn */,
- { 6, 1188, 2077, 3, 21, UNI_TRANSPORTANDMAP } /* intransportandmapsymbols */,
- { 0, 184, 10176, 2, 2, UNI_ZL } /* iszl */,
- { 2, 6469, 11, 12, 2, UNI_NT__DI } /* numerictype=di */,
- { 8, 10033, 7512, 3, 2, UNI_LB__BB } /* lb=bb */,
- { 0, 7325, 9985, 3, 3, UNI_IN__7 } /* in=7.0 */,
- { 0, 2224, 0, 21, 0, UNI_PRTI } /* inscriptionalparthian */,
- { 7, 9768, 9636, 4, 4, UNI_LINB } /* scx=linb */,
- { 1, 8936, 0, 6, 0, UNI_LYCI } /* lycian */,
- { 0, 9997, 3313, 3, 18, UNI_BC__LRI } /* bc=lefttorightisolate */,
- { 2, 8589, 8421, 7, 4, UNI_ELYM } /* script=elym */,
- { 2, 2182, 4305, 21, 5, UNI_GCB__XX } /* graphemeclusterbreak=other */,
- { 1, 8780, 8394, 7, 6, UNI_CJKEXTG } /* block=cjkextg */,
- { 5, 9864, 0, 4, 0, UNI_WCHO } /* wcho */,
- { 0, 9768, 9335, 4, 4, UNI_TAKR } /* scx=takr */,
- { 0, 1828, 0, 6, 0, UNI_cased_values_index } /* cased= */,
- { 2, 184, 4569, 3, 13, UNI_SC } /* iscurrencysymbol */,
- { 2, 8780, 2061, 6, 4, UNI_INMODI } /* block=modi */,
- { 2, 184, 3241, 2, 4, UNI_GEOR } /* isgeor */,
- { 8, 3836, 7651, 17, 4, UNI_ITAL } /* scriptextensions=ital */,
- { 0, 184, 62, 2, 5, UNI_XPOSIXGRAPH } /* isgraph */,
- { 0, 8589, 1628, 7, 4, UNI_SC__PHAG } /* script=phag */,
- { 0, 9014, 1025, 6, 2, -UNI_UIDEO } /* uideo=no */,
- { 2, 979, 0, 27, 0, UNI_ALPHABETICPF } /* alphabeticpresentationforms */,
- { 0, 8589, 2288, 8, 3, UNI_SC__SINH } /* script=sinh */,
- { 2, 8589, 5003, 7, 15, UNI_ZANB } /* script=zanabazarsquare */,
- { 4, 9277, 9704, 3, 4, UNI_ORKH } /* sc=orkh */,
- { 0, 5986, 7899, 13, 8, UNI_NV__7_SLASH_2 } /* numericvalue=3.50e+00 */,
- { 6, 9488, 8673, 4, 7, UNI_UCASEXT } /* blk=ucasext */,
- { 0, 8477, 0, 4, 0, UNI_MAKA } /* maka */,
- { 5, 1417, 8793, 25, 4, UNI_CCC__10 } /* canonicalcombiningclass=ccc10 */,
- { 0, 2245, 0, 14, 0, UNI_MEETEIMAYEKEXT } /* meeteimayekext */,
- { 0, 9277, 8876, 3, 4, UNI_GOTH } /* sc=goth */,
- { 0, 112, 0, 2, 0, UNI_SC } /* sc */,
- { 2, 3836, 9820, 17, 4, UNI_TFNG } /* scriptextensions=tfng */,
- { 1, 10048, 9361, 3, 3, UNI_NV__1_SLASH_2 } /* nv=1/2 */,
- { 11, 8509, 751, 4, 19, UNI_ENCLOSEDALPHANUM } /* inenclosedalphanumerics */,
- { 0, 8780, 3600, 8, 15, UNI_INCAUCASIANALBANIAN } /* block=caucasianalbanian */,
- { 0, 9488, 8171, 4, 8, UNI_INGUJARATI } /* blk=gujarati */,
- { 1, 8780, 2855, 6, 9, UNI_INMONGOLIAN } /* block=mongolian */,
- { 1, 21, 8203, 2, 8, UNI_JAMOEXTA } /* injamoexta */,
- { 5, 4916, 8653, 3, 6, UNI_TAVT } /* istaiviet */,
- { 0, 9488, 250, 4, 33, UNI_MISCMATHSYMBOLSA } /* blk=miscellaneousmathematicalsymbolsa */,
- { 0, 8688, 2469, 3, 2, UNI_ANY } /* isany */,
- { 0, 6241, 7, 12, 1, UNI_JT__C } /* joiningtype=c */,
- { 9, 8786, 0, 6, 0, UNI_CARI } /* carian */,
- { 8, 5256, 0, 14, 0, UNI_LATINEXTD } /* latinextendedd */,
- { 3, 5791, 5179, 13, 3, UNI_JG__HEH } /* joininggroup=heh */,
- { 0, 7218, 414, 10, 11, UNI_LB__ID } /* linebreak=ideographic */,
- { 0, 9277, 8107, 3, 8, UNI_BALI } /* sc=balinese */,
- { 3, 10048, 7835, 3, 8, UNI_NV__5_SLASH_2 } /* nv=2.50e+00 */,
- { 1, 8780, 4273, 6, 16, UNI_MYANMAREXTA } /* block=myanmarextendeda */,
- { 0, 9277, 8888, 3, 4, UNI_HATR } /* sc=hatr */,
- { 1, 7558, 6195, 4, 4, UNI_INHEBREW } /* inhebrew */,
- { 7, 8589, 8187, 7, 8, UNI_SC__HIRA } /* script=hiragana */,
- { 2, 10027, 5410, 3, 14, UNI_JG__MANICHAEANTETH } /* jg=manichaeanteth */,
- { 0, 1417, 10166, 24, 2, UNI_CCC__8 } /* canonicalcombiningclass=kv */,
- { 2, 184, 9640, 2, 3, UNI_LOE } /* isloe */,
- { 0, 8870, 1, 6, 1, -UNI_EPRES } /* epres=n */,
- { 4, 9524, 0, 4, 0, UNI_cwt_values_index } /* cwt= */,
- { 0, 1166, 9255, 26, 5, -UNI_DI } /* defaultignorablecodepoint=false */,
- { 1, 8780, 1922, 6, 12, UNI_DIACRITICALS } /* block=diacriticals */,
- { 13, 3836, 2684, 17, 19, UNI_EGYP } /* scriptextensions=egyptianhieroglyphs */,
- { 2, 8780, 8673, 6, 7, UNI_UCASEXT } /* block=ucasext */,
- { 0, 8780, 8645, 6, 7, UNI_INTAITHAM } /* block=taitham */,
- { 5, 5986, 7843, 13, 8, UNI_NV__1_SLASH_4 } /* numericvalue=2.50e-01 */,
- { 2, 217, 0, 33, 0, UNI_DIACRITICALSEXT } /* combiningdiacriticalmarksextended */,
- { 5, 10024, 6851, 3, 11, UNI_LO } /* gc=otherletter */,
- { 2, 9997, 23, 3, 2, UNI_BC__AL } /* bc=al */,
- { 6, 8780, 2912, 6, 12, UNI_SUNDANESESUP } /* block=sundanesesup */,
- { 1, 3836, 8659, 17, 7, UNI_TIBT } /* scriptextensions=tibetan */,
- { 0, 8645, 0, 7, 0, UNI_LANA } /* taitham */,
- { 2, 9277, 8786, 3, 6, UNI_CARI } /* sc=carian */,
- { 0, 7418, 26, 10, 1, UNI_XPOSIXUPPER } /* uppercase=y */,
- { 20, 7318, 10114, 10, 3, UNI_IN__6_DOT_3 } /* presentin=v63 */,
- { 5, 1188, 3458, 3, 10, UNI_TAIXUANJING } /* intaixuanjing */,
- { 3, 184, 9632, 2, 4, UNI_LINA } /* islina */,
- { 2, 9997, 2489, 3, 20, UNI_BC__PDF } /* bc=popdirectionalformat */,
- { 4, 8780, 8547, 6, 7, UNI_OLCK } /* block=olchiki */,
- { 0, 8942, 0, 4, 0, UNI_LYDI } /* lydi */,
- { 0, 6035, 0, 2, 0, UNI_PF } /* pf */,
- { 7, 9265, 10135, 5, 3, UNI_IDST } /* idst=yes */,
- { 0, 184, 2061, 2, 14, UNI_LM } /* ismodifierletter */,
- { 1, 184, 2287, 2, 21, UNI_SINHALAARCHAICNUMBERS } /* issinhalaarchaicnumbers */,
- { 3, 2569, 471, 20, 2, UNI_VO__TU } /* verticalorientation=tu */,
- { 2, 184, 1631, 2, 18, UNI_GEOMETRICSHAPESEXT } /* isgeometricshapesext */,
- { 4, 10048, 9924, 3, 2, UNI_NV__42 } /* nv=42 */,
- { 2, 184, 339, 2, 2, UNI_LO } /* islo */,
- { 1, 9768, 9330, 4, 5, UNI_TALE } /* scx=taile */,
- { 0, 9277, 6193, 3, 6, UNI_HEBR } /* sc=hebrew */,
- { 1, 184, 8491, 2, 4, UNI_MARC } /* ismarc */,
- { 0, 8780, 467, 6, 11, UNI_INPUNCTUATION } /* block=punctuation */,
- { 16, 9071, 1, 4, 1, -UNI_XPOSIXXDIGIT } /* hex=n */,
- { 1, 9270, 7309, 3, 9, UNI_INPHOENICIAN } /* inphoenician */,
- { 16, 3836, 8414, 17, 7, UNI_ELBA } /* scriptextensions=elbasan */,
- { 0, 3836, 8463, 17, 7, UNI_KALI } /* scriptextensions=kayahli */,
- { 0, 9768, 7188, 4, 4, UNI_KHAR } /* scx=khar */,
- { 0, 10296, 1629, 3, 3, UNI_PHAG } /* isphag */,
- { 2, 5746, 26, 6, 1, UNI_EBASE } /* ebase=y */,
- { 1, 8780, 8315, 6, 8, UNI_INUGARITIC } /* block=ugaritic */,
- { 0, 9277, 9632, 3, 4, UNI_SC__LINA } /* sc=lina */,
- { 5, 8884, 9255, 4, 5, -UNI_EXT } /* ext=false */,
- { 0, 10129, 3, 3, 1, -UNI_VS } /* vs=f */,
- { 3, 9528, 26, 4, 1, UNI_CWU } /* cwu=y */,
- { 1, 6229, 1, 12, 1, -UNI_JOINC } /* joincontrol=n */,
- { 5, 184, 9544, 2, 4, UNI_DIAK } /* isdiak */,
- { 5, 9704, 0, 4, 0, UNI_ORKH } /* orkh */,
- { 0, 9768, 7657, 4, 9, UNI_PERM } /* scx=oldpermic */,
- { 0, 9277, 8291, 3, 8, UNI_SC__TAGB } /* sc=tagbanwa */,
- { 1, 8780, 7531, 6, 9, UNI_EMOTICONS } /* block=emoticons */,
- { 1, 9488, 7504, 4, 9, UNI_ARABICPFB } /* blk=arabicpfb */,
- { 1, 8870, 9836, 6, 4, UNI_EPRES } /* epres=true */,
- { 1, 9270, 0, 5, 0, UNI_inpc_values_index } /* inpc= */,
- { 1, 8694, 9255, 7, 5, -UNI_XPOSIXSPACE } /* wspace=false */,
- { 16, 4791, 2837, 3, 18, UNI_MODIFIERTONELETTERS } /* inmodifiertoneletters */,
- { 1, 9277, 8414, 3, 4, UNI_ELBA } /* sc=elba */,
- { 1, 9768, 9516, 4, 4, UNI_CPRT } /* scx=cprt */,
- { 6, 7318, 10117, 10, 3, UNI_IN__7 } /* presentin=v70 */,
- { 1, 9640, 1025, 4, 2, -UNI_LOE } /* loe=no */,
- { 0, 184, 1587, 2, 1, UNI_Z } /* isz */,
- { 4, 7218, 9557, 10, 2, UNI_LB__CB } /* linebreak=cb */,
- { 16, 9275, 8307, 5, 8, UNI_INSC__TONEMARK } /* insc=tonemark */,
- { 0, 9277, 8936, 3, 6, UNI_LYCI } /* sc=lycian */,
- { 1, 2722, 0, 19, 0, UNI_JAMOEXTA } /* hanguljamoextendeda */,
- { 0, 8512, 17, 8, 1, UNI_NFKCQC__N } /* nfkcqc=no */,
- { 2, 9270, 909, 3, 13, UNI_PUA } /* inprivateusearea */,
- { 0, 9275, 5700, 5, 13, UNI_INSC__CONSONANTDEAD } /* insc=consonantdead */,
- { 2, 9484, 0, 4, 0, UNI_BHKS } /* bhks */,
- { 7, 9768, 4448, 4, 5, UNI_BAMU } /* scx=bamum */,
- { 1, 8589, 3115, 7, 10, UNI_SC__DEVA } /* script=devanagari */,
- { 0, 8852, 0, 6, 0, UNI_cwkcf_values_index } /* cwkcf= */,
- { 2, 6805, 2014, 6, 18, UNI_MISCTECHNICAL } /* inmiscellaneoustechnical */,
- { 4, 8589, 4001, 7, 7, UNI_SC__CPRT } /* script=cypriot */,
- { 4, 9488, 1192, 4, 26, UNI_HALFANDFULLFORMS } /* blk=halfwidthandfullwidthforms */,
- { 2, 8780, 5550, 6, 14, UNI_INPSALTERPAHLAVI } /* block=psalterpahlavi */,
- { 3, 132, 0, 2, 0, UNI_LM } /* lm */,
- { 16, 5986, 7851, 13, 8, UNI_NV__1_SLASH_40 } /* numericvalue=2.50e-02 */,
- { 2, 8780, 8442, 6, 7, UNI_INHANUNOO } /* block=hanunoo */,
- { 1, 9275, 8687, 5, 7, UNI_INSC__VISARGA } /* insc=visarga */,
- { 4, 10033, 8449, 3, 2, UNI_LB__HY } /* lb=hy */,
- { 0, 6805, 861, 6, 6, UNI_MISCARROWS } /* inmiscarrows */,
- { 0, 9488, 599, 4, 30, UNI_CJKEXTD } /* blk=cjkunifiedideographsextensiond */,
- { 0, 9277, 4478, 3, 7, UNI_BRAI } /* sc=braille */,
- { 0, 10033, 25, 3, 2, UNI_LB__SY } /* lb=sy */,
- { 0, 7325, 0, 3, 0, UNI_in_values_index } /* in= */,
- { 2, 7249, 533, 4, 2, UNI_CANS } /* iscans */,
- { 0, 4542, 1633, 4, 16, UNI_GEOMETRICSHAPESEXT } /* ingeometricshapesext */,
- { 3, 9488, 3598, 4, 17, UNI_INCAUCASIANALBANIAN } /* blk=caucasianalbanian */,
- { 1, 3836, 3241, 17, 4, UNI_GEOR } /* scriptextensions=geor */,
- { 0, 4033, 7408, 16, 10, UNI_CN } /* generalcategory=unassigned */,
- { 1, 2224, 3871, 3, 16, UNI_SMALLFORMS } /* insmallformvariants */,
- { 0, 3836, 4145, 17, 7, UNI_LINB } /* scriptextensions=linearb */,
- { 2, 9768, 2140, 4, 8, UNI_CYRL } /* scx=cyrillic */,
- { 0, 9070, 10135, 5, 3, UNI_POSIXXDIGIT } /* ahex=yes */,
- { 10, 8589, 6409, 7, 4, UNI_MEND } /* script=mend */,
- { 1, 6609, 0, 11, 0, UNI_dep_values_index } /* deprecated= */,
- { 0, 9277, 8491, 3, 7, UNI_MARC } /* sc=marchen */,
- { 2, 9508, 9101, 5, 4, UNI_CCC__14 } /* ccc=ccc14 */,
- { 5, 184, 3887, 2, 17, UNI_SUTTONSIGNWRITING } /* issuttonsignwriting */,
- { 1, 21, 9325, 2, 5, UNI_INRUNIC } /* inrunic */,
- { 2, 10024, 8855, 3, 2, UNI_CF } /* gc=cf */,
- { 8, 1417, 8823, 25, 4, UNI_CCC__13 } /* canonicalcombiningclass=ccc13 */,
- { 5, 4113, 25, 3, 1, UNI_INVS } /* invs */,
- { 2, 5986, 8011, 13, 8, UNI_NV__13_SLASH_2 } /* numericvalue=6.50e+00 */,
- { 2, 4853, 1, 15, 1, UNI_NFKDQC__N } /* nfkdquickcheck=n */,
- { 0, 10027, 4209, 3, 16, UNI_JG__MANICHAEANSAMEKH } /* jg=manichaeansamekh */,
- { 1, 569, 0, 30, 0, UNI_CJKEXTC } /* cjkunifiedideographsextensionc */,
- { 2, 9345, 9255, 5, 5, -UNI_XIDC } /* xidc=false */,
- { 1, 9488, 8936, 4, 6, UNI_INLYCIAN } /* blk=lycian */,
- { 0, 184, 3151, 2, 17, UNI_EPRES } /* isemojipresentation */,
- { 1, 8978, 1025, 6, 2, -UNI__PERL_PATWS } /* patws=no */,
- { 1, 10033, 7522, 3, 9, UNI_LB__B2 } /* lb=breakboth */,
- { 2, 1417, 2809, 24, 2, UNI_CCC__1 } /* canonicalcombiningclass=ov */,
- { 1, 8780, 8387, 7, 6, UNI_CJKEXTF } /* block=cjkextf */,
- { 3, 9015, 26, 5, 1, UNI_IDEO } /* ideo=y */,
- { 0, 1552, 6598, 9, 11, UNI_CASEDLETTER } /* category=casedletter */,
- { 1, 9540, 1025, 4, 2, -UNI_DIA } /* dia=no */,
- { 0, 21, 5830, 2, 13, UNI_LOWSURROGATES } /* inlowsurrogates */,
- { 0, 3259, 26, 18, 1, UNI_IDSB } /* idsbinaryoperator=y */,
- { 0, 57, 0, 2, 0, UNI_YI } /* yi */,
- { 1, 184, 2817, 2, 19, UNI_MERO } /* ismeroitichieroglyphs */,
- { 1, 8589, 9804, 7, 4, UNI_SC__TALE } /* script=tale */,
- { 2, 6609, 1, 11, 1, -UNI_DEP } /* deprecated=n */,
- { 2, 5986, 9055, 13, 4, UNI_NV__1_SLASH_32 } /* numericvalue=1/32 */,
- { 0, 9262, 400, 3, 6, UNI_SB__FO } /* sb=format */,
- { 8, 8780, 8414, 6, 7, UNI_INELBASAN } /* block=elbasan */,
- { 0, 7088, 6049, 10, 12, UNI_BC__AN } /* bidiclass=arabicnumber */,
- { 1, 10048, 9364, 3, 4, UNI_NV__1_SLASH_10 } /* nv=1/10 */,
- { 0, 8780, 6961, 6, 11, UNI_SUPERANDSUB } /* block=superandsub */,
- { 3, 184, 5284, 2, 14, UNI_LISUSUP } /* islisusupplement */,
- { 7, 9492, 7, 4, 1, UNI_BPT__C } /* bpt=c */,
- { 8, 9768, 8414, 4, 4, UNI_ELBA } /* scx=elba */,
- { 5, 10024, 467, 3, 5, UNI_P } /* gc=punct */,
- { 0, 1966, 8099, 22, 8, UNI_INSC__AVAGRAHA } /* indicsyllabiccategory=avagraha */,
- { 3, 9275, 4523, 5, 15, UNI_INSC__CONSONANTMEDIAL } /* insc=consonantmedial */,
- { 1, 8589, 9680, 7, 4, UNI_NBAT } /* script=nbat */,
- { 1, 10048, 7747, 3, 8, UNI_NV__1_SLASH_10 } /* nv=1.00e-01 */,
- { 1, 9488, 4065, 4, 16, UNI_HALFANDFULLFORMS } /* blk=halfandfullforms */,
- { 11, 7438, 8139, 10, 8, UNI_WB__EB } /* wordbreak=ebasegaz */,
- { 0, 2224, 2970, 3, 18, UNI_SUPARROWSC } /* insupplementalarrowsc */,
- { 0, 9524, 26, 4, 1, UNI_CWT } /* cwt=y */,
- { 1, 9277, 9572, 3, 4, UNI_SC__GUJR } /* sc=gujr */,
- { 4, 1552, 107, 10, 5, UNI_S } /* category=symbol */,
- { 0, 10048, 5648, 3, 4, UNI_NV__1000 } /* nv=1000 */,
- { 0, 10009, 8163, 3, 3, UNI_DT__FRA } /* dt=fra */,
- { 0, 7558, 0, 9, 0, UNI_QAAI } /* inherited */,
- { 3, 1768, 26, 22, 1, UNI_CWCF } /* changeswhencasefolded=y */,
- { 0, 3836, 2913, 18, 8, UNI_SUND } /* scriptextensions=sundanese */,
- { 10, 9277, 8547, 3, 7, UNI_OLCK } /* sc=olchiki */,
- { 0, 9488, 42, 4, 16, UNI_CJKCOMPAT } /* blk=cjkcompatibility */,
- { 2, 3836, 8315, 17, 4, UNI_UGAR } /* scriptextensions=ugar */,
- { 0, 8996, 0, 7, 0, UNI_STERM } /* sterm=t */,
- { 0, 9488, 4928, 4, 15, UNI_TAMILSUP } /* blk=tamilsupplement */,
- { 0, 3836, 7558, 17, 9, UNI_QAAI } /* scriptextensions=inherited */,
- { 0, 1552, 17, 10, 1, UNI_SO } /* category=so */,
- { 0, 9277, 7675, 3, 4, UNI_PALM } /* sc=palm */,
- { 0, 8780, 7513, 6, 9, UNI_INBHAIKSUKI } /* block=bhaiksuki */,
- { 1, 9250, 0, 5, 0, UNI_emod_values_index } /* emod= */,
- { 4, 8589, 719, 7, 9, UNI_XSUX } /* script=cuneiform */,
- { 0, 9240, 1025, 5, 2, -UNI_DASH } /* dash=no */,
- { 3, 8780, 6807, 6, 11, UNI_MISCSYMBOLS } /* block=miscsymbols */,
- { 1, 10048, 9055, 3, 5, UNI_NV__1_SLASH_320 } /* nv=1/320 */,
- { 1, 4628, 9, 15, 2, UNI_EA__NA } /* eastasianwidth=na */,
- { 0, 184, 1673, 2, 4, UNI_JAMO } /* isjamo */,
- { 3, 7155, 4098, 3, 15, UNI_HIGHPUSURROGATES } /* ishighpusurrogates */,
- { 3, 2779, 36, 19, 1, UNI_IDST } /* idstrinaryoperator=t */,
- { 2, 10027, 7348, 3, 10, UNI_JG__REVERSEDPE } /* jg=reversedpe */,
- { 6, 9488, 2224, 4, 21, UNI_ININSCRIPTIONALPARTHIAN } /* blk=inscriptionalparthian */,
- { 1, 7088, 0, 10, 0, UNI_bc_values_index } /* bidiclass= */,
- { 0, 8589, 8291, 7, 8, UNI_SC__TAGB } /* script=tagbanwa */,
- { 0, 4033, 10180, 16, 2, UNI_ZS } /* generalcategory=zs */,
- { 0, 8780, 1631, 6, 18, UNI_GEOMETRICSHAPESEXT } /* block=geometricshapesext */,
- { 0, 7318, 10111, 10, 3, UNI_IN__6_DOT_2 } /* presentin=v62 */,
- { 0, 8894, 1025, 6, 2, -UNI_JOINC } /* joinc=no */,
- { 2, 3836, 1115, 17, 4, UNI_HANG } /* scriptextensions=hang */,
- { 2, 9596, 9, 4, 2, UNI_HST__NA } /* hst=na */,
- { 1, 8780, 250, 6, 33, UNI_MISCMATHSYMBOLSA } /* block=miscellaneousmathematicalsymbolsa */,
- { 3, 10009, 2280, 3, 3, UNI_DT__ISO } /* dt=iso */,
- { 4, 9488, 5752, 4, 13, UNI_GREEKEXT } /* blk=greekextended */,
- { 17, 7378, 0, 10, 0, UNI_SUPARROWSA } /* suparrowsa */,
- { 2, 9520, 0, 3, 0, UNI_CWL } /* cwl */,
- { 2, 9556, 10174, 4, 2, UNI_GCB__XX } /* gcb=xx */,
- { 1, 10048, 7781, 3, 2, UNI_NV__43 } /* nv=43 */,
- { 1, 8780, 3115, 6, 13, UNI_DEVANAGARIEXT } /* block=devanagariext */,
- { 4, 3836, 6253, 17, 5, UNI_KHMR } /* scriptextensions=khmer */,
- { 8, 3836, 2288, 18, 6, UNI_SINH } /* scriptextensions=sinhala */,
- { 0, 10048, 10144, 3, 2, UNI_NV__45 } /* nv=45 */,
- { 42, 9488, 569, 4, 30, UNI_CJKEXTC } /* blk=cjkunifiedideographsextensionc */,
- { 9, 9536, 26, 4, 1, UNI_DEP } /* dep=y */,
- { 0, 1790, 26, 22, 1, UNI_CWCM } /* changeswhencasemapped=y */,
- { 2, 10048, 8710, 3, 4, UNI_NV__6000 } /* nv=6000 */,
- { 10, 9262, 1159, 3, 2, UNI_SB__ST } /* sb=st */,
- { 0, 21, 4129, 2, 16, UNI_LATIN1 } /* inlatin1supplement */,
- { 1, 3836, 7288, 17, 10, UNI_SOGO } /* scriptextensions=oldsogdian */,
- { 0, 21, 3295, 2, 9, UNI_LATINEXTA } /* inlatinexta */,
- { 1, 184, 9600, 2, 4, UNI_KALI } /* iskali */,
- { 3, 1552, 3359, 10, 8, UNI_Z } /* category=separator */,
- { 12, 5986, 5648, 13, 13, UNI_NV__1000000000000 } /* numericvalue=1000000000000 */,
- { 2, 3382, 26, 3, 1, UNI_CE } /* ce=y */,
- { 1, 5214, 0, 14, 0, UNI_KANGXI } /* kangxiradicals */,
- { 4, 9716, 9836, 4, 4, UNI_PCM } /* pcm=true */,
- { 0, 10132, 10174, 3, 2, UNI_WB__XX } /* wb=xx */,
- { 3, 8780, 6840, 6, 11, UNI_INNANDINAGARI } /* block=nandinagari */,
- { 0, 8589, 2608, 7, 6, UNI_BRAH } /* script=brahmi */,
- { 2, 9277, 9636, 3, 4, UNI_SC__LINB } /* sc=linb */,
- { 0, 3169, 0, 18, 0, UNI_ETHIOPICSUP } /* ethiopicsupplement */,
- { 2, 2224, 2913, 3, 11, UNI_SUNDANESESUP } /* insundanesesup */,
- { 2, 9275, 5102, 5, 14, UNI_INSC__CONSONANTFINAL } /* insc=consonantfinal */,
- { 0, 8780, 1906, 6, 16, UNI_INDICNUMBERFORMS } /* block=indicnumberforms */,
- { 5, 8780, 3547, 6, 10, UNI_ALCHEMICAL } /* block=alchemical */,
- { 0, 8780, 316, 6, 33, UNI_SUPMATHOPERATORS } /* block=supplementalmathematicaloperators */,
- { 3, 21, 8942, 2, 6, UNI_INLYDIAN } /* inlydian */,
- { 2, 9277, 2140, 3, 8, UNI_SC__CYRL } /* sc=cyrillic */,
- { 0, 1867, 0, 9, 0, UNI_XPOSIXUPPER } /* uppercase */,
- { 6, 7088, 865, 10, 2, UNI_BC__WS } /* bidiclass=ws */,
- { 1, 4033, 1287, 16, 2, UNI_UPPERCASELETTER } /* generalcategory=lu */,
- { 6, 7218, 6675, 10, 11, UNI_LB__EX } /* linebreak=exclamation */,
- { 0, 8589, 1900, 7, 6, UNI_SC__ZYYY } /* script=common */,
- { 1, 9768, 8428, 4, 4, UNI_GRAN } /* scx=gran */,
- { 0, 8596, 0, 7, 0, UNI_SHRD } /* sharada */,
- { 3, 1537, 3475, 24, 18, UNI_INPC__TOPANDLEFTANDRIGHT } /* indicpositionalcategory=topandleftandright */,
- { 1, 9488, 8942, 4, 6, UNI_INLYDIAN } /* blk=lydian */,
- { 0, 1552, 4305, 9, 5, UNI_C } /* category=other */,
- { 0, 9277, 8876, 3, 6, UNI_GOTH } /* sc=gothic */,
- { 0, 184, 7531, 2, 9, UNI_EMOTICONS } /* isemoticons */,
- { 0, 1966, 4508, 22, 15, UNI_INSC__CONSONANTKILLER } /* indicsyllabiccategory=consonantkiller */,
- { 1, 9556, 5746, 4, 5, UNI_WB__EB } /* gcb=ebase */,
- { 3, 9277, 6481, 3, 12, UNI_HUNG } /* sc=oldhungarian */,
- { 0, 4643, 0, 14, 0, UNI_ECOMP } /* emojicomponent */,
- { 3, 2224, 8618, 3, 6, UNI_INSOYOMBO } /* insoyombo */,
- { 5, 8780, 2817, 6, 19, UNI_MERO } /* block=meroitichieroglyphs */,
- { 3, 8435, 1, 7, 1, -UNI_GRBASE } /* grbase=n */,
- { 7, 8512, 0, 8, 0, UNI_NFKCQC__N } /* nfkcqc=n */,
- { 0, 48, 0, 1, 0, UNI_P } /* p */,
- { 1, 1812, 1025, 22, 2, -UNI_CWL } /* changeswhenlowercased=no */,
- { 0, 7155, 2204, 3, 3, UNI_HAN } /* ishani */,
- { 1, 9270, 2994, 5, 13, UNI_INPC__BOTTOMANDLEFT } /* inpc=bottomandleft */,
- { 0, 184, 8456, 2, 7, UNI_KNDA } /* iskannada */,
- { 0, 8762, 36, 6, 1, UNI_XPOSIXALPHA } /* alpha=t */,
- { 2, 3937, 0, 11, 0, UNI_BOPOMOFOEXT } /* bopomofoext */,
- { 7, 10024, 1066, 3, 2, UNI_CASEDLETTER } /* gc=lc */,
- { 2, 8477, 0, 7, 0, UNI_MAKA } /* makasar */,
- { 0, 9488, 2140, 4, 21, UNI_CYRILLICSUP } /* blk=cyrillicsupplementary */,
- { 0, 8780, 446, 6, 18, UNI_IDEOGRAPHICSYMBOLS } /* block=ideographicsymbols */,
- { 0, 9488, 9285, 4, 5, UNI_INLIMBU } /* blk=limbu */,
- { 1, 5986, 7795, 13, 8, UNI_NV__3_SLASH_20 } /* numericvalue=1.50e-01 */,
- { 0, 1417, 7477, 24, 9, UNI_CCC__AL } /* canonicalcombiningclass=aboveleft */,
- { 0, 9997, 3700, 3, 17, UNI_BC__ES } /* bc=europeanseparator */,
- { 2, 184, 6972, 2, 11, UNI_SYLO } /* issylotinagri */,
- { 0, 5032, 9255, 14, 5, -UNI_POSIXXDIGIT } /* asciihexdigit=false */,
- { 3, 8688, 3923, 4, 7, UNI_ARABICSUP } /* isarabicsup */,
- { 0, 8780, 2931, 6, 19, UNI_SUPARROWSA } /* block=supplementalarrowsa */,
- { 2, 9488, 2308, 4, 21, UNI_YIJING } /* blk=yijinghexagramsymbols */,
- { 0, 5661, 0, 13, 0, UNI_AEGEANNUMBERS } /* aegeannumbers */,
- { 5, 7076, 4479, 3, 6, UNI_BRAI } /* inbraille */,
- { 0, 184, 4245, 2, 10, UNI_SM } /* ismathsymbol */,
- { 13, 8780, 1585, 6, 14, UNI_BYZANTINEMUSIC } /* block=byzantinemusic */,
- { 0, 9508, 9106, 5, 4, UNI_CCC__15 } /* ccc=ccc15 */,
- { 2, 9768, 4385, 4, 6, UNI_TANG } /* scx=tangut */,
- { 3, 1537, 3343, 4, 6, UNI_DINGBATS } /* indingbats */,
- { 8, 9488, 2054, 4, 22, UNI_MODIFIERLETTERS } /* blk=spacingmodifierletters */,
- { 4, 539, 0, 30, 0, UNI_CJKEXTB } /* cjkunifiedideographsextensionb */,
- { 1, 184, 3439, 2, 12, UNI_SMALLKANAEXT } /* issmallkanaext */,
- { 0, 1269, 3, 25, 1, -UNI_COMPEX } /* fullcompositionexclusion=f */,
- { 26, 9275, 2646, 5, 19, UNI_INSC__CONSONANTHEADLETTER } /* insc=consonantheadletter */,
- { 1, 5986, 9428, 13, 4, UNI_NV__3_SLASH_80 } /* numericvalue=3/80 */,
- { 0, 8780, 8352, 7, 6, UNI_CJKEXTA } /* block=cjkexta */,
- { 1, 8884, 26, 4, 1, UNI_EXT } /* ext=y */,
- { 0, 9997, 8, 3, 2, UNI_BC__AN } /* bc=an */,
- { 6, 9736, 0, 4, 0, UNI_COPT } /* qaac */,
- { 0, 3097, 5012, 18, 6, UNI_DT__SQR } /* decompositiontype=square */,
- { 1, 2119, 0, 21, 0, UNI_CJKRADICALSSUP } /* cjkradicalssupplement */,
- { 0, 10048, 5648, 3, 6, UNI_NV__100000 } /* nv=100000 */,
- { 9, 9270, 3481, 5, 12, UNI_INPC__LEFTANDRIGHT } /* inpc=leftandright */,
- { 0, 8589, 2469, 7, 20, UNI_HMNP } /* script=nyiakengpuachuehmong */,
- { 4, 9488, 6277, 4, 7, UNI_MAHJONG } /* blk=mahjong */,
- { 6, 1552, 341, 9, 2, UNI_PE } /* category=pe */,
- { 0, 3097, 8533, 18, 7, UNI_DT__NB } /* decompositiontype=nobreak */,
- { 0, 3836, 6940, 18, 10, UNI_SORA } /* scriptextensions=sorasompeng */,
- { 0, 4033, 467, 16, 5, UNI_P } /* generalcategory=punct */,
- { 0, 8780, 3870, 6, 17, UNI_SMALLFORMS } /* block=smallformvariants */,
- { 3, 10333, 2913, 3, 3, UNI_SUND } /* issund */,
- { 2, 10024, 727, 3, 2, UNI_MN } /* gc=mn */,
- { 2, 6231, 43, 3, 8, UNI_CJKCOMPAT } /* incjkcompat */,
- { 17, 8589, 9797, 8, 3, UNI_SC__SYRC } /* script=syrc */,
- { 1, 1417, 8811, 25, 4, UNI_CCC__12 } /* canonicalcombiningclass=ccc12 */,
- { 1, 3379, 36, 6, 1, UNI_XPOSIXSPACE } /* space=t */,
- { 1, 10296, 1867, 7, 5, UNI_POSIXUPPER } /* isposixupper */,
- { 1, 3259, 3, 18, 1, -UNI_IDSB } /* idsbinaryoperator=f */,
- { 3, 1417, 3007, 24, 13, UNI_CCC__214 } /* canonicalcombiningclass=attachedabove */,
- { 1, 7028, 9039, 3, 5, UNI_YEZI } /* isyezidi */,
- { 4, 7218, 4360, 10, 9, UNI_EMOD } /* linebreak=emodifier */,
- { 1, 1417, 2455, 24, 5, UNI_CCC__R } /* canonicalcombiningclass=right */,
- { 0, 1273, 10135, 21, 3, UNI_CE } /* compositionexclusion=yes */,
- { 1, 8780, 8603, 6, 7, UNI_SHAW } /* block=shavian */,
- { 3, 9768, 8876, 4, 4, UNI_GOTH } /* scx=goth */,
- { 4, 2182, 0, 21, 0, UNI_gcb_values_index } /* graphemeclusterbreak= */,
- { 0, 8780, 8652, 6, 7, UNI_INTAIVIET } /* block=taiviet */,
- { 8, 9886, 5006, 5, 12, UNI_INZANABAZARSQUARE } /* inzanabazarsquare */,
- { 0, 8589, 8638, 7, 7, UNI_SC__TGLG } /* script=tagalog */,
- { 16, 1768, 1025, 22, 2, -UNI_CWCF } /* changeswhencasefolded=no */,
- { 1, 2224, 2951, 3, 18, UNI_SUPARROWSB } /* insupplementalarrowsb */,
- { 0, 6553, 36, 12, 1, UNI_XIDC } /* xidcontinue=t */,
- { 1, 9564, 0, 4, 0, UNI_GONM } /* gonm */,
- { 7, 8780, 8131, 6, 8, UNI_INDUPLOYAN } /* block=duployan */,
- { 1, 9768, 8786, 4, 4, UNI_CARI } /* scx=cari */,
- { 3, 9277, 1654, 3, 6, UNI_SC__HANG } /* sc=hangul */,
- { 0, 184, 3421, 2, 4, UNI_RUMI } /* isrumi */,
- { 3, 9768, 2817, 4, 4, UNI_MERO } /* scx=mero */,
- { 0, 184, 3785, 2, 4, UNI_MANI } /* ismani */,
- { 11, 9488, 5606, 4, 14, UNI_SUPPUNCTUATION } /* blk=suppunctuation */,
- { 1, 10250, 6556, 15, 8, UNI__PERL_CHARNAME_CONTINUE } /* _perl_charname_continue */,
- { 0, 8780, 8561, 6, 7, UNI_INOSMANYA } /* block=osmanya */,
- { 1, 10027, 9044, 3, 6, UNI_JG__YUDHHE } /* jg=yudhhe */,
- { 0, 9768, 8652, 4, 7, UNI_TAVT } /* scx=taiviet */,
- { 0, 10012, 1192, 3, 9, UNI_EA__H } /* ea=halfwidth */,
- { 3, 3836, 9704, 17, 4, UNI_ORKH } /* scriptextensions=orkh */,
- { 1, 7318, 10108, 10, 3, UNI_IN__6_DOT_1 } /* presentin=v61 */,
- { 12, 5791, 6349, 13, 12, UNI_JG__MALAYALAMSSA } /* joininggroup=malayalamssa */,
- { 0, 10048, 8744, 3, 4, UNI_NV__7000 } /* nv=7000 */,
- { 0, 3367, 36, 18, 1, UNI__PERL_PATWS } /* patternwhitespace=t */,
- { 0, 4853, 0, 15, 0, UNI_nfkdqc_values_index } /* nfkdquickcheck= */,
- { 2, 9488, 809, 4, 29, UNI_ENCLOSEDIDEOGRAPHICSUP } /* blk=enclosedideographicsupplement */,
- { 4, 184, 749, 2, 30, UNI_ENCLOSEDALPHANUMSUP } /* isenclosedalphanumericsupplement */,
- { 1, 9020, 10135, 6, 3, UNI_XPOSIXUPPER } /* upper=yes */,
- { 1, 5986, 8750, 13, 5, UNI_NV__80000 } /* numericvalue=80000 */,
- { 0, 9768, 8171, 4, 8, UNI_GUJR } /* scx=gujarati */,
- { 0, 3379, 10135, 6, 3, UNI_XPOSIXSPACE } /* space=yes */,
- { 1, 9768, 8582, 4, 7, UNI_PHAG } /* scx=phagspa */,
- { 0, 3836, 3785, 17, 10, UNI_MANI } /* scriptextensions=manichaean */,
- { 5, 9488, 4793, 4, 15, UNI_INMEROITICCURSIVE } /* blk=meroiticcursive */,
- { 0, 184, 6277, 2, 12, UNI_MAHJONG } /* ismahjongtiles */,
- { 0, 9997, 1353, 3, 3, UNI_BC__RLE } /* bc=rle */,
- { 2, 184, 9245, 2, 4, UNI_DOGR } /* isdogr */,
- { 32, 9768, 9644, 4, 4, UNI_MEDF } /* scx=medf */,
- { 0, 9768, 6409, 4, 12, UNI_MEND } /* scx=mendekikakui */,
- { 8, 10132, 5746, 3, 5, UNI_WB__EB } /* wb=ebase */,
- { 0, 10048, 7826, 3, 2, UNI_NV__12 } /* nv=12 */,
- { 6, 10132, 4856, 3, 2, UNI_WB__DQ } /* wb=dq */,
- { 9, 10132, 34, 3, 6, UNI_WB__EXTEND } /* wb=extend */,
- { 6, 10027, 4778, 3, 15, UNI_JG__MANICHAEANZAYIN } /* jg=manichaeanzayin */,
- { 0, 8484, 0, 7, 0, UNI_MAND } /* mandaic */,
- { 2, 184, 9888, 2, 4, UNI_ZANB } /* iszanb */,
- { 1, 3367, 9255, 18, 5, -UNI__PERL_PATWS } /* patternwhitespace=false */,
- { 1, 8589, 1222, 7, 4, UNI_SC__KANA } /* script=kana */,
- { 11, 10024, 2061, 3, 14, UNI_LM } /* gc=modifierletter */,
- { 2, 9488, 8786, 4, 6, UNI_INCARIAN } /* blk=carian */,
- { 3, 9488, 78, 4, 6, UNI_INARABIC } /* blk=arabic */,
- { 2, 5791, 7348, 13, 10, UNI_JG__REVERSEDPE } /* joininggroup=reversedpe */,
- { 4, 10296, 5718, 7, 5, UNI_POSIXALNUM } /* isposixalnum */,
- { 1, 8589, 6193, 7, 4, UNI_HEBR } /* script=hebr */,
- { 2, 10048, 10142, 3, 2, UNI_NV__44 } /* nv=44 */,
- { 1, 9070, 9255, 5, 5, -UNI_POSIXXDIGIT } /* ahex=false */,
- { 5, 9768, 9452, 4, 4, UNI_AHOM } /* scx=ahom */,
- { 6, 1966, 8307, 22, 8, UNI_INSC__TONEMARK } /* indicsyllabiccategory=tonemark */,
- { 8, 2032, 0, 22, 0, UNI_nchar_values_index } /* noncharactercodepoint= */,
- { 0, 184, 4049, 2, 16, UNI_GEORGIANEXT } /* isgeorgianextended */,
- { 0, 9488, 539, 4, 30, UNI_CJKEXTB } /* blk=cjkunifiedideographsextensionb */,
- { 0, 106, 0, 6, 0, UNI_S } /* symbol */,
- { 1, 8780, 6481, 6, 12, UNI_INOLDHUNGARIAN } /* block=oldhungarian */,
- { 2, 9997, 0, 4, 0, UNI_BC__B } /* bc=b */,
- { 1, 8780, 6818, 6, 11, UNI_MYANMAREXTA } /* block=myanmarexta */,
- { 12, 2760, 6763, 19, 3, UNI_LB__H3 } /* hangulsyllabletype=lvt */,
- { 1, 8780, 4129, 6, 6, UNI_LATIN1 } /* block=latin1 */,
- { 2, 5986, 7859, 13, 5, UNI_NV__20000 } /* numericvalue=20000 */,
- { 6, 7218, 10158, 10, 2, UNI_LB__H2 } /* linebreak=h2 */,
- { 0, 10048, 7931, 3, 8, UNI_NV__5_SLASH_12 } /* nv=4.17e-01 */,
- { 10, 4916, 9817, 3, 3, UNI_TAVT } /* istavt */,
- { 0, 4033, 25, 16, 1, UNI_S } /* generalcategory=s */,
- { 1, 8131, 0, 8, 0, UNI_DUPL } /* duployan */,
- { 1, 9716, 26, 4, 1, UNI_PCM } /* pcm=y */,
- { 8, 10180, 0, 2, 0, UNI_ZS } /* zs */,
- { 1, 9488, 3921, 4, 16, UNI_ARABICSUP } /* blk=arabicsupplement */,
- { 2, 10322, 3379, 5, 5, UNI_XPOSIXSPACE } /* xperlspace */,
- { 1, 184, 183, 2, 20, UNI_MISCSYMBOLS } /* ismiscellaneoussymbols */,
- { 0, 7318, 7931, 10, 3, UNI_IN__4_DOT_1 } /* presentin=4.1 */,
- { 3, 8978, 0, 5, 0, UNI__PERL_PATWS } /* patws */,
- { 0, 9556, 34, 4, 2, UNI_GCB__EX } /* gcb=ex */,
- { 4, 9020, 1, 6, 1, -UNI_XPOSIXUPPER } /* upper=n */,
- { 0, 5986, 8710, 13, 2, UNI_NV__60 } /* numericvalue=60 */,
- { 0, 9544, 0, 4, 0, UNI_DIAK } /* diak */,
- { 0, 10308, 0, 5, 0, UNI_XPOSIXPRINT } /* print */,
- { 2, 1966, 5634, 22, 14, UNI_INSC__VOWELDEPENDENT } /* indicsyllabiccategory=voweldependent */,
- { 1, 4033, 1171, 16, 2, UNI_TITLE } /* generalcategory=lt */,
- { 4, 6231, 6098, 3, 11, UNI_CYRILLICEXTA } /* incyrillicexta */,
- { 0, 7325, 9852, 3, 4, UNI_IN__12_DOT_1 } /* in=v121 */,
- { 1, 5564, 36, 14, 1, UNI_QMARK } /* quotationmark=t */,
- { 0, 9091, 8133, 4, 6, UNI_INDUPLOYAN } /* induployan */,
- { 0, 8780, 2308, 6, 21, UNI_YIJING } /* block=yijinghexagramsymbols */,
- { 8, 8930, 10135, 6, 3, UNI_XPOSIXLOWER } /* lower=yes */,
- { 0, 8954, 10135, 6, 3, UNI__PERL_NCHAR } /* nchar=yes */,
- { 2, 184, 3, 3, 1, UNI_CF } /* iscf */,
- { 1, 8589, 3169, 7, 4, UNI_ETHI } /* script=ethi */,
- { 7, 9637, 5690, 5, 10, UNI_BLOCKELEMENTS } /* inblockelements */,
- { 0, 9508, 9111, 5, 4, UNI_CCC__16 } /* ccc=ccc16 */,
- { 5, 8589, 9644, 7, 4, UNI_MEDF } /* script=medf */,
- { 8, 5466, 0, 15, 0, UNI_DT__CAN } /* nfdquickcheck=n */,
- { 1, 8589, 3079, 7, 6, UNI_SC__COPT } /* script=coptic */,
- { 10, 8688, 183, 4, 2, UNI_ARMI } /* isarmi */,
- { 4, 8589, 4703, 7, 15, UNI_ARMI } /* script=imperialaramaic */,
- { 0, 3836, 9285, 17, 4, UNI_LIMB } /* scriptextensions=limb */,
- { 0, 8589, 6884, 7, 11, UNI_HMNG } /* script=pahawhhmong */,
- { 17, 184, 1033, 2, 27, UNI_ENCLOSEDCJK } /* isenclosedcjklettersandmonths */,
- { 1, 8589, 9720, 7, 4, UNI_SC__PHLP } /* script=phlp */,
- { 1, 339, 0, 2, 0, UNI_LO } /* lo */,
- { 3, 9488, 838, 4, 29, UNI_MISCARROWS } /* blk=miscellaneoussymbolsandarrows */,
- { 4, 8966, 26, 6, 1, UNI_NFDQC__Y } /* nfdqc=y */,
- { 1, 8780, 4369, 6, 16, UNI_SYRIACSUP } /* block=syriacsupplement */,
- { 1, 1417, 9151, 25, 4, UNI_CCC__24 } /* canonicalcombiningclass=ccc24 */,
- { 0, 21, 5200, 2, 7, UNI_KANASUP } /* inkanasup */,
- { 5, 1273, 0, 20, 0, UNI_CE } /* compositionexclusion */,
- { 1, 8780, 2950, 6, 19, UNI_SUPARROWSB } /* block=supplementalarrowsb */,
- { 1, 3457, 0, 11, 0, UNI_TAIXUANJING } /* taixuanjing */,
- { 0, 5578, 36, 15, 1, UNI_SB__ST } /* sentencebreak=st */,
- { 2, 184, 43, 3, 35, UNI_CJKCOMPATIDEOGRAPHSSUP } /* iscjkcompatibilityideographssupplement */,
- { 0, 184, 4478, 2, 7, UNI_BRAI } /* isbraille */,
- { 1, 8589, 4385, 7, 6, UNI_TANG } /* script=tangut */,
- { 0, 10033, 9713, 3, 2, UNI_LB__SG } /* lb=sg */,
- { 0, 1192, 0, 26, 0, UNI_HALFANDFULLFORMS } /* halfwidthandfullwidthforms */,
- { 2, 38, 0, 2, 0, UNI_XPOSIXDIGIT } /* nd */,
- { 1, 8589, 9305, 7, 5, UNI_NSHU } /* script=nushu */,
- { 1, 9270, 9, 5, 2, UNI_INPC__NA } /* inpc=na */,
- { 4, 1552, 2268, 9, 2, UNI_PD } /* category=pd */,
- { 0, 629, 0, 30, 0, UNI_CJKEXTE } /* cjkunifiedideographsextensione */,
- { 12, 7249, 5062, 4, 11, UNI_CI } /* iscaseignorable */,
- { 3, 5986, 9412, 13, 4, UNI_NV__17_SLASH_2 } /* numericvalue=17/2 */,
- { 0, 8589, 9588, 7, 4, UNI_HMNG } /* script=hmng */,
- { 1, 7325, 9848, 3, 4, UNI_IN__12 } /* in=v120 */,
- { 0, 8780, 8275, 6, 8, UNI_SPECIALS } /* block=specials */,
- { 6, 9488, 7428, 4, 10, UNI_INWARANGCITI } /* blk=warangciti */,
- { 6, 7228, 1, 10, 1, -UNI_XPOSIXLOWER } /* lowercase=n */,
- { 6, 5986, 8726, 13, 6, UNI_NV__432000 } /* numericvalue=432000 */,
- { 1, 1537, 6621, 3, 10, UNI_DOMINO } /* indominotiles */,
- { 0, 9540, 3, 4, 1, -UNI_DIA } /* dia=f */,
- { 0, 7155, 1514, 3, 23, UNI_HIGHPUSURROGATES } /* ishighprivateusesurrogates */,
- { 0, 5032, 9836, 14, 4, UNI_POSIXXDIGIT } /* asciihexdigit=true */,
- { 0, 10033, 10154, 3, 2, UNI_LB__B2 } /* lb=b2 */,
- { 6, 3904, 0, 17, 0, UNI_uideo_values_index } /* unifiedideograph= */,
- { 1, 3385, 9255, 18, 5, -UNI_RI } /* regionalindicator=false */,
- { 0, 9488, 3734, 4, 17, UNI_INDICSIYAQNUMBERS } /* blk=indicsiyaqnumbers */,
- { 2, 9860, 0, 4, 0, UNI_VAI } /* vaii */,
- { 4, 5791, 4209, 13, 16, UNI_JG__MANICHAEANSAMEKH } /* joininggroup=manichaeansamekh */,
- { 0, 5791, 87, 13, 2, UNI_JG__HE } /* joininggroup=he */,
- { 0, 8589, 9335, 7, 5, UNI_SC__TAKR } /* script=takri */,
- { 13, 9277, 9708, 3, 4, UNI_SC__ORYA } /* sc=orya */,
- { 1, 9277, 2061, 3, 4, UNI_SC__MODI } /* sc=modi */,
- { 2, 10027, 6785, 3, 11, UNI_JG__MALAYALAMRA } /* jg=malayalamra */,
- { 1, 7567, 0, 9, 0, UNI_SIND } /* khudawadi */,
- { 0, 184, 728, 2, 6, UNI_N } /* isnumber */,
- { 0, 9708, 0, 4, 0, UNI_ORYA } /* orya */,
- { 1, 1906, 0, 16, 0, UNI_INDICNUMBERFORMS } /* indicnumberforms */,
- { 0, 8780, 8924, 6, 6, UNI_INLEPCHA } /* block=lepcha */,
- { 0, 10048, 9050, 3, 4, UNI_NV__1_SLASH_16 } /* nv=1/16 */,
- { 0, 10288, 5718, 8, 5, UNI_XPOSIXALNUM } /* isxposixalnum */,
- { 6, 9488, 5661, 4, 13, UNI_AEGEANNUMBERS } /* blk=aegeannumbers */,
- { 8, 3983, 0, 18, 0, UNI_PE } /* isclosepunctuation */,
- { 11, 3097, 4532, 18, 6, UNI_DT__MED } /* decompositiontype=medial */,
- { 0, 10132, 6169, 3, 12, UNI_WB__EB } /* wb=glueafterzwj */,
- { 0, 5791, 5895, 13, 13, UNI_JG__MANICHAEANONE } /* joininggroup=manichaeanone */,
- { 0, 8954, 3, 6, 1, -UNI__PERL_NCHAR } /* nchar=f */,
- { 3, 4658, 36, 15, 1, UNI_GREXT } /* graphemeextend=t */,
- { 2, 7418, 10135, 10, 3, UNI_XPOSIXUPPER } /* uppercase=yes */,
- { 1, 10296, 0, 4, 0, UNI_PO } /* ispo */,
- { 0, 8589, 3785, 7, 4, UNI_SC__MANI } /* script=mani */,
- { 1, 3836, 4703, 17, 15, UNI_ARMI } /* scriptextensions=imperialaramaic */,
- { 1, 2224, 2932, 3, 18, UNI_SUPARROWSA } /* insupplementalarrowsa */,
- { 13, 8780, 4401, 6, 9, UNI_TANGUTSUP } /* block=tangutsup */,
- { 8, 8780, 7129, 7, 9, UNI_CJKSTROKES } /* block=cjkstrokes */,
- { 0, 21, 8211, 2, 8, UNI_JAMOEXTB } /* injamoextb */,
- { 0, 45, 0, 2, 0, UNI_CO } /* co */,
- { 4, 3097, 6421, 18, 8, UNI_DT__NONCANON } /* decompositiontype=noncanon */,
- { 16, 184, 1166, 2, 25, UNI_DI } /* isdefaultignorablecodepoint */,
- { 2, 9277, 9860, 3, 3, UNI_VAI } /* sc=vai */,
- { 1, 8491, 0, 7, 0, UNI_MARC } /* marchen */,
- { 4, 184, 5564, 2, 13, UNI_QMARK } /* isquotationmark */,
- { 2, 10024, 5713, 3, 13, UNI_XPOSIXDIGIT } /* gc=decimalnumber */,
- { 1, 10033, 184, 3, 2, UNI_LB__IS } /* lb=is */,
- { 1, 9315, 0, 5, 0, UNI_ORYA } /* oriya */,
- { 0, 9812, 0, 4, 0, UNI_TAML } /* taml */,
- { 0, 4989, 1868, 3, 4, UNI_XPOSIXUPPER } /* isupper */,
- { 0, 5986, 5648, 13, 5, UNI_NV__10000 } /* numericvalue=10000 */,
- { 16, 8780, 3026, 7, 10, UNI_CHEROKEESUP } /* block=cherokeesup */,
- { 1, 8780, 8610, 6, 7, UNI_INSIDDHAM } /* block=siddham */,
- { 1, 2161, 3, 21, 1, -UNI_EXTPICT } /* extendedpictographic=f */,
- { 1, 9488, 8091, 4, 8, UNI_INARMENIAN } /* blk=armenian */,
- { 1, 9277, 9065, 3, 5, UNI_SC__ADLM } /* sc=adlam */,
- { 12, 3836, 8344, 17, 7, UNI_BENG } /* scriptextensions=bengali */,
- { 0, 2032, 0, 21, 0, UNI__PERL_NCHAR } /* noncharactercodepoint */,
- { 8, 3421, 0, 18, 0, UNI_RUMI } /* ruminumeralsymbols */,
- { 1, 9277, 8115, 3, 4, UNI_BASS } /* sc=bass */,
- { 1, 184, 3169, 2, 8, UNI_ETHI } /* isethiopic */,
- { 0, 3836, 9824, 17, 4, UNI_TGLG } /* scriptextensions=tglg */,
- { 0, 184, 8942, 2, 4, UNI_LYDI } /* islydi */,
- { 0, 1812, 0, 22, 0, UNI_cwl_values_index } /* changeswhenlowercased= */,
- { 3, 7318, 10105, 10, 3, UNI_IN__6 } /* presentin=v60 */,
- { 5, 10296, 9721, 3, 3, UNI_PHLP } /* isphlp */,
- { 3, 10132, 7603, 3, 9, UNI_WB__ML } /* wb=midletter */,
- { 4, 2224, 7694, 3, 8, UNI_INSAMARITAN } /* insamaritan */,
- { 4, 10048, 10148, 3, 2, UNI_NV__47 } /* nv=47 */,
- { 1, 5986, 9409, 13, 3, UNI_NV__5_SLASH_2 } /* numericvalue=5/2 */,
- { 5, 184, 4448, 2, 8, UNI_BAMUMSUP } /* isbamumsup */,
- { 2, 9488, 509, 4, 30, UNI_CJKEXTA } /* blk=cjkunifiedideographsextensiona */,
- { 0, 10027, 4733, 3, 15, UNI_JG__MANICHAEANALEPH } /* jg=manichaeanaleph */,
- { 13, 10033, 10030, 3, 2, UNI_GCB__T } /* lb=jt */,
- { 1, 9277, 6840, 3, 4, UNI_SC__NAND } /* sc=nand */,
- { 2, 9997, 2798, 3, 19, UNI_BC__LRO } /* bc=lefttorightoverride */,
- { 4, 1269, 10135, 25, 3, UNI_COMPEX } /* fullcompositionexclusion=yes */,
- { 1, 8780, 2684, 6, 19, UNI_INEGYPTIANHIEROGLYPHS } /* block=egyptianhieroglyphs */,
- { 0, 8589, 8611, 8, 3, UNI_SIDD } /* script=sidd */,
- { 15, 1591, 2685, 3, 18, UNI_INEGYPTIANHIEROGLYPHS } /* inegyptianhieroglyphs */,
- { 0, 10027, 7198, 3, 10, UNI_JG__KNOTTEDHEH } /* jg=knottedheh */,
- { 1, 8589, 8611, 8, 6, UNI_SIDD } /* script=siddham */,
- { 0, 9065, 0, 5, 0, UNI_ADLM } /* adlam */,
- { 1, 8589, 6973, 8, 3, UNI_SC__SYLO } /* script=sylo */,
- { 0, 1114, 26, 26, 1, UNI_CWKCF } /* changeswhennfkccasefolded=y */,
- { 1, 9768, 2288, 5, 3, UNI_SINH } /* scx=sinh */,
- { 7, 10009, 6421, 3, 8, UNI_DT__NONCANON } /* dt=noncanon */,
- { 0, 9768, 8115, 4, 4, UNI_BASS } /* scx=bass */,
- { 16, 6231, 720, 3, 8, UNI_INCUNEIFORM } /* incuneiform */,
- { 19, 1417, 9211, 25, 4, UNI_CCC__36 } /* canonicalcombiningclass=ccc36 */,
- { 9, 2569, 3511, 20, 18, UNI_VO__TU } /* verticalorientation=transformedupright */,
- { 2, 2529, 1, 20, 1, -UNI_TERM } /* terminalpunctuation=n */,
- { 0, 184, 1911, 2, 11, UNI_NUMBERFORMS } /* isnumberforms */,
- { 0, 3836, 5843, 17, 9, UNI_MLYM } /* scriptextensions=malayalam */,
- { 1, 9508, 9300, 4, 5, UNI_CCC__7 } /* ccc=nukta */,
- { 0, 5674, 1, 13, 1, -UNI_BIDIM } /* bidimirrored=n */,
- { 0, 10132, 1218, 3, 2, UNI_WB__KA } /* wb=ka */,
- { 6, 10182, 25, 29, 1, UNI__PERL_PROBLEMATIC_LOCALE_FOLDS } /* _perl_problematic_locale_folds */,
- { 0, 6554, 36, 11, 1, UNI_IDC } /* idcontinue=t */,
- { 0, 1417, 8813, 24, 3, UNI_CCC__122 } /* canonicalcombiningclass=122 */,
- { 1, 7218, 10160, 10, 2, UNI_LB__H3 } /* linebreak=h3 */,
- { 14, 184, 9496, 2, 4, UNI_BUHD } /* isbuhd */,
- { 21, 6231, 720, 3, 15, UNI_CUNEIFORMNUMBERS } /* incuneiformnumbers */,
- { 1, 9277, 9712, 3, 4, UNI_OSGE } /* sc=osge */,
- { 1, 10178, 0, 2, 0, UNI_ZP } /* zp */,
- { 5, 9488, 8840, 4, 6, UNI_INCHAKMA } /* blk=chakma */,
- { 2, 8589, 2429, 7, 20, UNI_PHLI } /* script=inscriptionalpahlavi */,
- { 1, 5791, 4081, 13, 16, UNI_JG__HANIFIROHINGYAPA } /* joininggroup=hanifirohingyapa */,
- { 2, 6928, 10135, 11, 3, UNI_SD } /* softdotted=yes */,
- { 1, 7088, 3403, 10, 18, UNI_BC__RLI } /* bidiclass=righttoleftisolate */,
- { 1, 8589, 1537, 8, 3, UNI_SC__SIND } /* script=sind */,
- { 0, 5986, 9428, 13, 3, UNI_NV__3_SLASH_8 } /* numericvalue=3/8 */,
- { 4, 3836, 4478, 17, 4, UNI_BRAI } /* scriptextensions=brai */,
- { 0, 8984, 36, 6, 1, UNI_QMARK } /* qmark=t */,
- { 0, 4791, 8499, 3, 6, UNI_INMULTANI } /* inmultani */,
- { 9, 10024, 1899, 3, 2, UNI_PC } /* gc=pc */,
- { 2, 3836, 9624, 17, 4, UNI_LAO } /* scriptextensions=laoo */,
- { 4, 9488, 8526, 4, 7, UNI_NB } /* blk=noblock */,
- { 1, 9277, 9038, 3, 6, UNI_SC__YEZI } /* sc=yezidi */,
- { 2, 9768, 8611, 5, 6, UNI_SIDD } /* scx=siddham */,
- { 0, 2741, 0, 19, 0, UNI_JAMOEXTB } /* hanguljamoextendedb */,
- { 8, 8589, 1013, 7, 5, UNI_SC__GREK } /* script=greek */,
- { 1, 9488, 7378, 4, 10, UNI_SUPARROWSA } /* blk=suparrowsa */,
- { 0, 10290, 10308, 6, 5, UNI_XPOSIXPRINT } /* xposixprint */,
- { 1, 5060, 26, 14, 1, UNI_CI } /* caseignorable=y */,
- { 3, 184, 2245, 2, 11, UNI_MTEI } /* ismeeteimayek */,
- { 1, 10063, 3, 3, 1, -UNI_SD } /* sd=f */,
- { 6, 7318, 7923, 10, 3, UNI_IN__4 } /* presentin=4.0 */,
- { 1, 8589, 4448, 7, 5, UNI_BAMU } /* script=bamum */,
- { 1, 5986, 8750, 13, 2, UNI_NV__80 } /* numericvalue=80 */,
- { 0, 9768, 9544, 4, 4, UNI_DIAK } /* scx=diak */,
- { 0, 7155, 1418, 3, 3, UNI_HANO } /* ishano */,
- { 3, 8780, 1442, 7, 9, UNI_CJKSYMBOLS } /* block=cjksymbols */,
- { 0, 10009, 4017, 3, 3, UNI_DT__FIN } /* dt=fin */,
- { 6, 8589, 7675, 7, 9, UNI_PALM } /* script=palmyrene */,
- { 0, 9488, 7657, 4, 9, UNI_INOLDPERMIC } /* blk=oldpermic */,
- { 4, 1417, 7178, 24, 4, UNI_CCC__6 } /* canonicalcombiningclass=hanr */,
- { 0, 6862, 0, 11, 0, UNI_NO } /* othernumber */,
- { 0, 867, 0, 18, 0, UNI_PHONETICEXT } /* phoneticextensions */,
- { 0, 10009, 3501, 3, 3, UNI_DT__MED } /* dt=med */,
- { 5, 1417, 9156, 25, 4, UNI_CCC__25 } /* canonicalcombiningclass=ccc25 */,
- { 3, 5986, 9055, 13, 5, UNI_NV__1_SLASH_320 } /* numericvalue=1/320 */,
- { 0, 8589, 6792, 8, 3, UNI_SAMR } /* script=samr */,
- { 0, 9488, 8463, 4, 7, UNI_KALI } /* blk=kayahli */,
- { 24, 7076, 3938, 3, 10, UNI_BOPOMOFOEXT } /* inbopomofoext */,
- { 1, 9508, 0, 4, 0, UNI_ccc_values_index } /* ccc= */,
- { 1, 8780, 2969, 6, 19, UNI_SUPARROWSC } /* block=supplementalarrowsc */,
- { 21, 4628, 4471, 15, 7, UNI_EA__N } /* eastasianwidth=neutral */,
- { 2, 9277, 9038, 3, 4, UNI_SC__YEZI } /* sc=yezi */,
- { 1, 8780, 5158, 6, 14, UNI_INGREEK } /* block=greekandcoptic */,
- { 4, 9508, 9116, 5, 4, UNI_CCC__17 } /* ccc=ccc17 */,
- { 5, 8780, 8366, 7, 6, UNI_CJKEXTC } /* block=cjkextc */,
- { 0, 599, 0, 30, 0, UNI_CJKEXTD } /* cjkunifiedideographsextensiond */,
- { 0, 21, 8219, 2, 8, UNI_INJAVANESE } /* injavanese */,
- { 0, 9262, 34, 3, 6, UNI_SB__EX } /* sb=extend */,
- { 1, 7438, 10174, 10, 2, UNI_WB__XX } /* wordbreak=xx */,
- { 0, 8589, 7684, 7, 9, UNI_PAUC } /* script=paucinhau */,
- { 0, 6469, 39, 12, 2, UNI_XPOSIXDIGIT } /* numerictype=de */,
- { 0, 10003, 0, 3, 0, UNI_ci_values_index } /* ci= */,
- { 0, 9488, 6253, 4, 5, UNI_INKHMER } /* blk=khmer */,
- { 0, 9015, 36, 5, 1, UNI_IDEO } /* ideo=t */,
- { 0, 1189, 39, 3, 2, UNI_XPOSIXDIGIT } /* nt=de */,
- { 1, 4916, 8646, 3, 6, UNI_LANA } /* istaitham */,
- { 4, 6193, 0, 6, 0, UNI_HEBR } /* hebrew */,
- { 2, 7318, 9396, 10, 4, UNI_IN__12_DOT_1 } /* presentin=12.1 */,
- { 7, 9488, 2703, 4, 19, UNI_ENCLOSEDALPHANUMSUP } /* blk=enclosedalphanumsup */,
- { 8, 9277, 7558, 3, 9, UNI_SC__QAAI } /* sc=inherited */,
- { 0, 8780, 3734, 6, 17, UNI_INDICSIYAQNUMBERS } /* block=indicsiyaqnumbers */,
- { 1, 1269, 1025, 25, 2, -UNI_COMPEX } /* fullcompositionexclusion=no */,
- { 1, 8966, 0, 8, 0, UNI_DT__CAN } /* nfdqc=no */,
- { 0, 10033, 1186, 3, 2, UNI_LB__PO } /* lb=po */,
- { 1, 8780, 114, 7, 34, UNI_DIACRITICALSFORSYMBOLS } /* block=combiningdiacriticalmarksforsymbols */,
- { 0, 1184, 0, 3, 0, UNI_DEP } /* dep */,
- { 1, 3836, 9560, 17, 4, UNI_GONG } /* scriptextensions=gong */,
- { 35, 9070, 36, 5, 1, UNI_POSIXXDIGIT } /* ahex=t */,
- { 0, 9768, 9572, 4, 4, UNI_GUJR } /* scx=gujr */,
- { 0, 184, 9736, 2, 4, UNI_COPT } /* isqaac */,
- { 0, 7249, 12, 5, 3, UNI_CARI } /* iscarian */,
- { 3, 10027, 341, 3, 2, UNI_JG__PE } /* jg=pe */,
- { 1, 10027, 5480, 3, 14, UNI_JG__NOJOININGGROUP } /* jg=nojoininggroup */,
- { 0, 7325, 10120, 3, 3, UNI_IN__8 } /* in=v80 */,
- { 2, 8780, 4340, 6, 13, UNI_MATHOPERATORS } /* block=mathoperators */,
- { 3, 9492, 5904, 4, 4, UNI_BPT__N } /* bpt=none */,
- { 4, 184, 8179, 2, 8, UNI_GURU } /* isgurmukhi */,
- { 0, 9346, 10135, 4, 3, UNI_IDC } /* idc=yes */,
- { 4, 7076, 1219, 3, 4, UNI_INBATAK } /* inbatak */,
- { 5, 6928, 3, 11, 1, -UNI_SD } /* softdotted=f */,
- { 0, 184, 9680, 2, 4, UNI_NBAT } /* isnbat */,
- { 0, 9488, 4369, 4, 16, UNI_SYRIACSUP } /* blk=syriacsupplement */,
- { 1, 8780, 5214, 6, 6, UNI_KANGXI } /* block=kangxi */,
- { 1, 10132, 34, 3, 2, UNI_WB__EX } /* wb=ex */,
- { 3, 9768, 8219, 4, 4, UNI_JAVA } /* scx=java */,
- { 9, 9768, 3751, 4, 17, UNI_KITS } /* scx=khitansmallscript */,
- { 5, 9556, 5633, 4, 2, UNI_LB__H2 } /* gcb=lv */,
- { 3, 10132, 8144, 3, 3, UNI_WB__EB } /* wb=gaz */,
- { 1, 4385, 0, 4, 0, UNI_TANG } /* tang */,
- { 1, 3734, 0, 17, 0, UNI_INDICSIYAQNUMBERS } /* indicsiyaqnumbers */,
- { 0, 9488, 4385, 4, 16, UNI_TANGUTCOMPONENTS } /* blk=tangutcomponents */,
- { 8, 10048, 8756, 3, 4, UNI_NV__9000 } /* nv=9000 */,
- { 6, 8780, 3457, 6, 18, UNI_TAIXUANJING } /* block=taixuanjingsymbols */,
- { 2, 184, 3026, 3, 17, UNI_CHEROKEESUP } /* ischerokeesupplement */,
- { 0, 9488, 8624, 4, 7, UNI_SUPPUAA } /* blk=suppuaa */,
- { 1, 8774, 1025, 6, 2, -UNI_BIDIM } /* bidim=no */,
- { 2, 7438, 108, 10, 2, UNI_WB__MB } /* wordbreak=mb */,
- { 2, 1910, 0, 2, 0, UNI_CN } /* cn */,
- { 4, 5564, 10135, 14, 3, UNI_QMARK } /* quotationmark=yes */,
- { 1, 7218, 3, 11, 1, UNI_LB__LF } /* linebreak=lf */,
- { 5, 4116, 5779, 3, 12, UNI_IPAEXT } /* isipaextensions */,
- { 8, 9262, 138, 3, 2, UNI_SB__FO } /* sb=fo */,
- { 0, 3097, 3439, 18, 5, UNI_DT__SML } /* decompositiontype=small */,
- { 10, 8589, 6385, 7, 12, UNI_SC__GONM } /* script=masaramgondi */,
- { 5, 4791, 2856, 3, 11, UNI_MONGOLIANSUP } /* inmongoliansup */,
- { 2, 8780, 6397, 6, 12, UNI_MATHALPHANUM } /* block=mathalphanum */,
- { 10, 8589, 2409, 7, 10, UNI_SC__GLAG } /* script=glagolitic */,
- { 0, 8589, 9692, 7, 4, UNI_NSHU } /* script=nshu */,
- { 0, 8780, 8491, 6, 7, UNI_INMARCHEN } /* block=marchen */,
- { 4, 9488, 2329, 4, 20, UNI_INANATOLIANHIEROGLYPHS } /* blk=anatolianhieroglyphs */,
- { 18, 3836, 9616, 17, 4, UNI_KTHI } /* scriptextensions=kthi */,
- { 1, 6420, 6482, 3, 11, UNI_INOLDHUNGARIAN } /* inoldhungarian */,
- { 0, 1505, 2254, 5, 5, UNI_GREEKEXT } /* ingreekext */,
- { 2, 184, 8526, 2, 7, UNI_NB } /* isnoblock */,
- { 0, 719, 0, 16, 0, UNI_CUNEIFORMNUMBERS } /* cuneiformnumbers */,
- { 20, 9488, 2741, 4, 19, UNI_JAMOEXTB } /* blk=hanguljamoextendedb */,
- { 0, 4688, 8259, 15, 8, UNI_IDENTIFIERTYPE__OBSOLETE } /* identifiertype=obsolete */,
- { 8, 9488, 3921, 4, 9, UNI_ARABICSUP } /* blk=arabicsup */,
- { 2, 5060, 10135, 14, 3, UNI_CI } /* caseignorable=yes */,
- { 3, 9488, 7388, 4, 10, UNI_SUPARROWSB } /* blk=suparrowsb */,
- { 9, 4033, 10178, 16, 2, UNI_ZP } /* generalcategory=zp */,
- { 4, 8589, 8477, 7, 7, UNI_MAKA } /* script=makasar */,
- { 0, 6469, 495, 12, 2, UNI_NT__NU } /* numerictype=nu */,
- { 18, 10027, 5843, 3, 13, UNI_JG__MALAYALAMLLLA } /* jg=malayalamllla */,
- { 0, 8780, 3052, 6, 9, UNI_HALFMARKS } /* block=halfmarks */,
- { 2, 8780, 283, 6, 33, UNI_MISCMATHSYMBOLSB } /* block=miscellaneousmathematicalsymbolsb */,
- { 3, 8978, 36, 6, 1, UNI__PERL_PATWS } /* patws=t */,
- { 8, 3836, 8652, 17, 7, UNI_TAVT } /* scriptextensions=taiviet */,
- { 5, 9444, 7408, 4, 10, UNI_AGE__NA } /* age=unassigned */,
- { 10, 9260, 3, 5, 1, -UNI_IDSB } /* idsb=f */,
- { 8, 4628, 865, 15, 1, UNI_EA__W } /* eastasianwidth=w */,
- { 1, 9768, 6840, 4, 11, UNI_NAND } /* scx=nandinagari */,
- { 2, 10048, 10146, 3, 2, UNI_NV__46 } /* nv=46 */,
- { 2, 9230, 9836, 5, 4, UNI_CWCF } /* cwcf=true */,
- { 4, 8894, 10135, 6, 3, UNI_JOINC } /* joinc=yes */,
- { 3, 2032, 26, 22, 1, UNI__PERL_NCHAR } /* noncharactercodepoint=y */,
- { 0, 184, 1066, 2, 2, UNI_CASEDLETTER } /* islc */,
- { 4, 10048, 7877, 3, 2, UNI_NV__13 } /* nv=13 */,
- { 0, 8780, 5214, 6, 14, UNI_KANGXI } /* block=kangxiradicals */,
- { 0, 3836, 9320, 17, 5, UNI_OSGE } /* scriptextensions=osage */,
- { 1, 10024, 0, 3, 0, UNI_gc_values_index } /* gc= */,
- { 1, 21, 7594, 2, 9, UNI_LATINEXTD } /* inlatinextd */,
- { 6, 9488, 5214, 4, 6, UNI_KANGXI } /* blk=kangxi */,
- { 8, 9508, 3564, 4, 17, UNI_WB__EB } /* ccc=attachedbelowleft */,
- { 26, 6193, 0, 4, 0, UNI_HEBR } /* hebr */,
- { 2, 4289, 0, 16, 0, UNI_MYANMAREXTB } /* myanmarextendedb */,
- { 4, 9277, 9804, 3, 4, UNI_SC__TALE } /* sc=tale */,
- { 0, 9230, 3, 5, 1, -UNI_CWCF } /* cwcf=f */,
- { 16, 6231, 7119, 3, 9, UNI_INCHORASMIAN } /* inchorasmian */,
- { 2, 10048, 5648, 3, 2, UNI_NV__10 } /* nv=10 */,
- { 0, 4916, 4402, 3, 8, UNI_TANGUTSUP } /* istangutsup */,
- { 0, 8449, 10135, 7, 3, UNI_HYPHEN } /* hyphen=yes */,
- { 16, 10182, 10270, 6, 9, UNI__PERL_ANY_FOLDS } /* _perl_any_folds */,
- { 0, 10027, 9884, 3, 4, UNI_JG__ZAIN } /* jg=zain */,
- { 12, 10250, 10265, 15, 5, UNI__PERL_CHARNAME_BEGIN } /* _perl_charname_begin */,
- { 0, 3836, 719, 17, 9, UNI_XSUX } /* scriptextensions=cuneiform */,
- { 0, 4033, 727, 16, 2, UNI_MN } /* generalcategory=mn */,
- { 0, 184, 3044, 3, 17, UNI_HALFMARKS } /* iscombininghalfmarks */,
- { 11, 7249, 1017, 4, 2, UNI_CAKM } /* iscakm */,
- { 0, 7358, 0, 10, 0, UNI_SAUR } /* saurashtra */,
- { 0, 10027, 5921, 3, 13, UNI_JG__MANICHAEANTEN } /* jg=manichaeanten */,
- { 1, 9277, 2608, 3, 6, UNI_BRAH } /* sc=brahmi */,
- { 0, 21, 4129, 2, 9, UNI_LATIN1 } /* inlatin1sup */,
- { 0, 7531, 0, 9, 0, UNI_EMOTICONS } /* emoticons */,
- { 13, 3836, 2608, 17, 4, UNI_BRAH } /* scriptextensions=brah */,
- { 4, 9640, 9255, 4, 5, -UNI_LOE } /* loe=false */,
- { 0, 8780, 3583, 8, 15, UNI_UCAS } /* block=canadiansyllabics */,
- { 0, 9592, 0, 4, 0, UNI_HMNP } /* hmnp */,
- { 9, 10027, 2637, 3, 3, UNI_JG__YEH } /* jg=yeh */,
- { 3, 8780, 6939, 6, 11, UNI_INSORASOMPENG } /* block=sorasompeng */,
- { 2, 6231, 6122, 3, 11, UNI_CYRILLICEXTC } /* incyrillicextc */,
- { 4, 4033, 5817, 16, 13, UNI_ZL } /* generalcategory=lineseparator */,
- { 1, 5791, 4733, 13, 15, UNI_JG__MANICHAEANALEPH } /* joininggroup=manichaeanaleph */,
- { 1, 3836, 57, 17, 2, UNI_YI } /* scriptextensions=yi */,
- { 5, 9444, 9396, 4, 4, UNI_AGE__12_DOT_1 } /* age=12.1 */,
- { 1, 7318, 8043, 10, 3, UNI_IN__8 } /* presentin=8.0 */,
- { 1, 5791, 6785, 13, 11, UNI_JG__MALAYALAMRA } /* joininggroup=malayalamra */,
- { 0, 8870, 0, 5, 0, UNI_EPRES } /* epres */,
- { 0, 8519, 26, 7, 1, UNI_DT__NONE } /* nfkdqc=y */,
- { 2, 5578, 1823, 14, 5, UNI_SB__LO } /* sentencebreak=lower */,
- { 1, 9277, 9728, 3, 4, UNI_MIAO } /* sc=plrd */,
- { 0, 9008, 0, 6, 0, UNI_THAA } /* thaana */,
- { 8, 25, 0, 1, 0, UNI_S } /* s */,
- { 2, 4989, 8316, 3, 7, UNI_UGAR } /* isugaritic */,
- { 0, 8984, 10135, 6, 3, UNI_QMARK } /* qmark=yes */,
- { 0, 4718, 0, 15, 0, UNI_LOWERCASELETTER } /* lowercaseletter */,
- { 0, 184, 4129, 2, 9, UNI_LATIN1 } /* islatin1sup */,
- { 0, 8780, 2287, 6, 21, UNI_SINHALAARCHAICNUMBERS } /* block=sinhalaarchaicnumbers */,
- { 0, 4033, 4718, 16, 15, UNI_LOWERCASELETTER } /* generalcategory=lowercaseletter */,
- { 32, 8780, 867, 6, 11, UNI_PHONETICEXT } /* block=phoneticext */,
- { 0, 7218, 6193, 10, 12, UNI_LB__HL } /* linebreak=hebrewletter */,
- { 1, 3133, 1, 18, 1, -UNI_EBASE } /* emojimodifierbase=n */,
- { 0, 8780, 5606, 6, 14, UNI_SUPPUNCTUATION } /* block=suppunctuation */,
- { 1, 1166, 0, 26, 0, UNI_di_values_index } /* defaultignorablecodepoint= */,
- { 0, 10012, 9868, 3, 4, UNI_EA__W } /* ea=wide */,
- { 1, 9488, 4479, 5, 6, UNI_BRAI } /* blk=braille */,
- { 0, 9508, 3007, 4, 13, UNI_CCC__214 } /* ccc=attachedabove */,
- { 1, 1417, 9161, 25, 4, UNI_CCC__26 } /* canonicalcombiningclass=ccc26 */,
- { 0, 21, 8912, 2, 6, UNI_INKHOJKI } /* inkhojki */,
- { 0, 8858, 26, 6, 1, UNI_ECOMP } /* ecomp=y */,
- { 16, 9768, 9724, 4, 4, UNI_PHNX } /* scx=phnx */,
- { 6, 9768, 8091, 4, 8, UNI_ARMN } /* scx=armenian */,
- { 4, 9277, 8107, 3, 4, UNI_BALI } /* sc=bali */,
- { 6, 10132, 10015, 3, 3, UNI_WB__EB } /* wb=ebg */,
- { 0, 689, 0, 30, 0, UNI_CJKEXTG } /* cjkunifiedideographsextensiong */,
- { 3, 6231, 3026, 3, 10, UNI_CHEROKEESUP } /* incherokeesup */,
- { 1, 4703, 0, 15, 0, UNI_ARMI } /* imperialaramaic */,
- { 0, 8589, 8924, 7, 6, UNI_LEPC } /* script=lepcha */,
- { 0, 1552, 6035, 9, 2, UNI_PF } /* category=pf */,
- { 18, 567, 0, 2, 0, UNI_NB } /* nb */,
- { 4, 7218, 908, 10, 2, UNI_LB__PR } /* linebreak=pr */,
- { 0, 4916, 9331, 3, 4, UNI_TALE } /* istaile */,
- { 0, 21, 9038, 2, 6, UNI_INYEZIDI } /* inyezidi */,
- { 6, 5986, 7789, 13, 2, UNI_NV__50 } /* numericvalue=50 */,
- { 5, 10315, 3379, 5, 5, UNI_XPOSIXBLANK } /* horizspace */,
- { 1, 184, 8841, 3, 5, UNI_CAKM } /* ischakma */,
- { 1, 8884, 36, 4, 1, UNI_EXT } /* ext=t */,
- { 0, 9768, 9812, 4, 4, UNI_TAML } /* scx=taml */,
- { 0, 8780, 6620, 6, 6, UNI_DOMINO } /* block=domino */,
- { 1, 8589, 8618, 8, 6, UNI_SOYO } /* script=soyombo */,
- { 3, 3836, 2224, 17, 21, UNI_PRTI } /* scriptextensions=inscriptionalparthian */,
- { 0, 8780, 43, 7, 2, UNI_CJK } /* block=cjk */,
- { 0, 7318, 10078, 10, 3, UNI_IN__2_DOT_1 } /* presentin=v21 */,
- { 5, 8780, 8359, 7, 6, UNI_CJKEXTB } /* block=cjkextb */,
- { 6, 184, 3133, 2, 17, UNI_EBASE } /* isemojimodifierbase */,
- { 0, 8780, 8912, 6, 6, UNI_INKHOJKI } /* block=khojki */,
- { 0, 9277, 3785, 3, 10, UNI_SC__MANI } /* sc=manichaean */,
- { 2, 10003, 36, 3, 1, UNI_CI } /* ci=t */,
- { 1, 9277, 9512, 3, 4, UNI_CHRS } /* sc=chrs */,
- { 3, 3367, 1, 18, 1, -UNI__PERL_PATWS } /* patternwhitespace=n */,
- { 3, 8123, 0, 8, 0, UNI_BUGI } /* buginese */,
- { 1, 10132, 4360, 3, 9, UNI_WB__EB } /* wb=emodifier */,
- { 8, 8780, 2703, 6, 19, UNI_ENCLOSEDALPHANUMSUP } /* block=enclosedalphanumsup */,
- { 1, 8780, 749, 6, 16, UNI_ENCLOSEDALPHANUM } /* block=enclosedalphanum */,
- { 3, 8666, 0, 7, 0, UNI_TIRH } /* tirhuta */,
- { 7, 9997, 10054, 3, 3, UNI_BC__PDF } /* bc=pdf */,
- { 2, 8589, 9085, 7, 5, UNI_BATK } /* script=batak */,
- { 1, 9488, 42, 4, 3, UNI_CJK } /* blk=cjk */,
- { 1, 10033, 18, 3, 2, UNI_RI } /* lb=ri */,
- { 1, 1188, 9003, 3, 5, UNI_INTELUGU } /* intelugu */,
- { 17, 184, 1018, 2, 5, UNI_MUSIC } /* ismusic */,
- { 3, 10024, 1587, 3, 1, UNI_Z } /* gc=z */,
- { 1, 8491, 0, 4, 0, UNI_MARC } /* marc */,
- { 14, 6231, 43, 3, 35, UNI_CJKCOMPATIDEOGRAPHSSUP } /* incjkcompatibilityideographssupplement */,
- { 0, 5037, 9836, 9, 4, UNI_XPOSIXXDIGIT } /* hexdigit=true */,
- { 0, 6420, 7279, 3, 9, UNI_INOLDPERSIAN } /* inoldpersian */,
- { 0, 9488, 8116, 5, 7, UNI_INBASSAVAH } /* blk=bassavah */,
- { 6, 9235, 0, 4, 0, UNI_CWCM } /* cwcm */,
- { 6, 9488, 7693, 4, 9, UNI_INSAMARITAN } /* blk=samaritan */,
- { 8, 1417, 9206, 25, 4, UNI_CCC__35 } /* canonicalcombiningclass=ccc35 */,
- { 0, 10296, 2, 3, 1, UNI_PI } /* ispi */,
- { 2, 9768, 9464, 4, 4, UNI_ARMN } /* scx=armn */,
- { 0, 5508, 3, 14, 1, -UNI_PATSYN } /* patternsyntax=f */,
- { 0, 1008, 0, 2, 0, UNI_CI } /* ci */,
- { 0, 9277, 7291, 3, 4, UNI_SC__SOGD } /* sc=sogd */,
- { 11, 184, 6840, 2, 4, UNI_NAND } /* isnand */,
- { 11, 8147, 1025, 8, 2, -UNI_EXTPICT } /* extpict=no */,
- { 0, 184, 720, 3, 29, UNI_CUNEIFORMNUMBERS } /* iscuneiformnumbersandpunctuation */,
- { 1, 5986, 7819, 13, 8, UNI_NV__3_SLASH_16 } /* numericvalue=1.88e-01 */,
- { 0, 9488, 183, 4, 20, UNI_MISCSYMBOLS } /* blk=miscellaneoussymbols */,
- { 0, 9488, 8407, 4, 7, UNI_DSRT } /* blk=deseret */,
- { 0, 10129, 9255, 3, 5, -UNI_VS } /* vs=false */,
- { 0, 5032, 3, 14, 1, -UNI_POSIXXDIGIT } /* asciihexdigit=f */,
- { 1, 184, 5284, 2, 7, UNI_LISUSUP } /* islisusup */,
- { 2, 9488, 8631, 4, 7, UNI_SUPPUAB } /* blk=suppuab */,
- { 10, 1552, 7, 10, 1, UNI_SC } /* category=sc */,
- { 4, 184, 720, 3, 15, UNI_CUNEIFORMNUMBERS } /* iscuneiformnumbers */,
- { 10, 3151, 0, 18, 0, UNI_epres_values_index } /* emojipresentation= */,
- { 6, 5791, 5382, 13, 14, UNI_JG__MANICHAEANQOPH } /* joininggroup=manichaeanqoph */,
- { 1, 8267, 0, 8, 0, UNI_radical_values_index } /* radical= */,
- { 3, 3374, 26, 11, 1, UNI_XPOSIXSPACE } /* whitespace=y */,
- { 10, 9464, 0, 4, 0, UNI_ARMN } /* armn */,
- { 3, 7028, 9039, 3, 3, UNI_YEZI } /* isyezi */,
- { 1, 8780, 3026, 7, 7, UNI_INCHEROKEE } /* block=cherokee */,
- { 0, 10063, 0, 3, 0, UNI_sd_values_index } /* sd= */,
- { 2, 3836, 1537, 18, 3, UNI_SIND } /* scriptextensions=sind */,
- { 0, 8894, 1, 6, 1, -UNI_JOINC } /* joinc=n */,
- { 10, 10296, 9729, 3, 3, UNI_MIAO } /* isplrd */,
- { 0, 9488, 2722, 4, 19, UNI_JAMOEXTA } /* blk=hanguljamoextendeda */,
- { 1, 10009, 8948, 3, 6, UNI_DT__NAR } /* dt=narrow */,
- { 1, 8780, 6884, 6, 11, UNI_INPAHAWHHMONG } /* block=pahawhhmong */,
- { 2, 3836, 7308, 17, 10, UNI_PHNX } /* scriptextensions=phoenician */,
- { 0, 9235, 36, 5, 1, UNI_CWCM } /* cwcm=t */,
- { 8, 8589, 9688, 7, 4, UNI_NKO } /* script=nkoo */,
- { 1, 9508, 7078, 4, 10, UNI_CCC__BR } /* ccc=belowright */,
- { 4, 6133, 0, 12, 0, UNI_ETHIOPICEXTA } /* ethiopicexta */,
- { 1, 10033, 10164, 3, 2, UNI_GCB__V } /* lb=jv */,
- { 3, 9768, 1222, 4, 4, UNI_KANA } /* scx=kana */,
- { 0, 10048, 9060, 3, 5, UNI_NV__11_SLASH_12 } /* nv=11/12 */,
- { 2, 4033, 48, 16, 1, UNI_P } /* generalcategory=p */,
- { 7, 9997, 4321, 3, 16, UNI_BC__S } /* bc=segmentseparator */,
- { 1, 9768, 9828, 4, 4, UNI_THAI } /* scx=thai */,
- { 0, 184, 5508, 2, 13, UNI_PATSYN } /* ispatternsyntax */,
- { 0, 9277, 2912, 3, 4, UNI_SUND } /* sc=sund */,
- { 0, 3836, 9532, 17, 4, UNI_CYRL } /* scriptextensions=cyrl */,
- { 1, 184, 43, 3, 15, UNI_CJKCOMPAT } /* iscjkcompatibility */,
- { 2, 3529, 1, 18, 1, -UNI_VS } /* variationselector=n */,
- { 0, 9768, 9668, 4, 4, UNI_MTEI } /* scx=mtei */,
- { 0, 8589, 9752, 7, 4, UNI_SC__ROHG } /* script=rohg */,
- { 14, 4583, 0, 4, 0, UNI_DASH } /* dash */,
- { 6, 5986, 10152, 13, 2, UNI_NV__49 } /* numericvalue=49 */,
- { 0, 184, 1060, 3, 3, UNI_COPT } /* iscopt */,
- { 7, 117, 1908, 4, 14, UNI_INDICNUMBERFORMS } /* inindicnumberforms */,
- { 3, 1899, 0, 2, 0, UNI_PC } /* pc */,
- { 0, 7155, 5187, 3, 13, UNI_HIGHSURROGATES } /* ishighsurrogates */,
- { 1, 2182, 34, 21, 2, UNI_GCB__EX } /* graphemeclusterbreak=ex */,
- { 0, 10048, 7754, 3, 2, UNI_NV__11 } /* nv=11 */,
- { 2, 3259, 0, 18, 0, UNI_idsb_values_index } /* idsbinaryoperator= */,
- { 0, 21, 1677, 2, 9, UNI_LATINEXTE } /* inlatinexte */,
- { 0, 8589, 2061, 7, 4, UNI_SC__MODI } /* script=modi */,
- { 6, 7158, 1025, 10, 2, -UNI_DIA } /* diacritic=no */,
- { 0, 10296, 909, 3, 9, UNI_CO } /* isprivateuse */,
- { 0, 1417, 9201, 25, 4, UNI_CCC__34 } /* canonicalcombiningclass=ccc34 */,
- { 0, 7739, 26, 8, 1, UNI_IDS } /* idstart=y */,
- { 0, 809, 0, 22, 0, UNI_ENCLOSEDIDEOGRAPHICSUP } /* enclosedideographicsup */,
- { 3, 9277, 2203, 3, 14, UNI_SC__ROHG } /* sc=hanifirohingya */,
- { 8, 1537, 4600, 4, 13, UNI_DIACRITICALSEXT } /* indiacriticalsext */,
- { 10, 3836, 9038, 17, 4, UNI_YEZI } /* scriptextensions=yezi */,
- { 15, 9997, 3403, 3, 18, UNI_BC__RLI } /* bc=righttoleftisolate */,
- { 0, 184, 6928, 2, 10, UNI_SD } /* issoftdotted */,
- { 12, 9444, 9, 4, 2, UNI_AGE__NA } /* age=na */,
- { 0, 21, 5256, 2, 14, UNI_LATINEXTD } /* inlatinextendedd */,
- { 1, 7739, 9255, 8, 5, -UNI_IDS } /* idstart=false */,
- { 3, 184, 3937, 2, 4, UNI_BOPO } /* isbopo */,
- { 22, 10290, 10303, 6, 5, UNI_XPOSIXBLANK } /* xposixblank */,
- { 1, 3151, 3, 18, 1, -UNI_EPRES } /* emojipresentation=f */,
- { 1, 5037, 36, 9, 1, UNI_XPOSIXXDIGIT } /* hexdigit=t */,
- { 1, 3025, 0, 18, 0, UNI_CHEROKEESUP } /* cherokeesupplement */,
- { 0, 7155, 4066, 3, 15, UNI_HALFANDFULLFORMS } /* ishalfandfullforms */,
- { 0, 10340, 3379, 6, 5, UNI_VERTSPACE } /* isvertspace */,
- { 4, 10012, 9, 3, 2, UNI_EA__NA } /* ea=na */,
- { 6, 8780, 8990, 6, 6, UNI_INREJANG } /* block=rejang */,
- { 0, 7228, 36, 10, 1, UNI_XPOSIXLOWER } /* lowercase=t */,
- { 8, 3836, 9860, 17, 4, UNI_VAI } /* scriptextensions=vaii */,
- { 0, 1417, 8799, 25, 5, UNI_CCC__107 } /* canonicalcombiningclass=ccc107 */,
- { 1, 6231, 6110, 3, 11, UNI_CYRILLICEXTB } /* incyrillicextb */,
- { 0, 9444, 7826, 4, 4, UNI_AGE__12 } /* age=12.0 */,
- { 4, 1812, 10135, 22, 3, UNI_CWL } /* changeswhenlowercased=yes */,
- { 0, 406, 0, 7, 0, UNI_XPOSIXCNTRL } /* control */,
- { 1, 9488, 6884, 4, 11, UNI_INPAHAWHHMONG } /* blk=pahawhhmong */,
- { 11, 8589, 9480, 7, 4, UNI_BATK } /* script=batk */,
- { 3, 5739, 9255, 13, 5, -UNI_GRBASE } /* graphemebase=false */,
- { 7, 8589, 8840, 7, 6, UNI_SC__CAKM } /* script=chakma */,
- { 0, 9488, 7398, 4, 10, UNI_SUPARROWSC } /* blk=suparrowsc */,
- { 0, 9768, 2409, 4, 4, UNI_GLAG } /* scx=glag */,
- { 1, 9277, 2287, 3, 7, UNI_SC__SINH } /* sc=sinhala */,
- { 12, 10024, 339, 3, 2, UNI_LO } /* gc=lo */,
- { 0, 7438, 125, 10, 2, UNI_LB__CR } /* wordbreak=cr */,
- { 0, 9277, 2855, 3, 9, UNI_SC__MONG } /* sc=mongolian */,
- { 1, 8414, 0, 7, 0, UNI_ELBA } /* elbasan */,
- { 0, 10296, 2571, 3, 3, UNI_PRTI } /* isprti */,
- { 1, 3836, 3025, 17, 8, UNI_CHER } /* scriptextensions=cherokee */,
- { 1, 1591, 3170, 3, 7, UNI_INETHIOPIC } /* inethiopic */,
- { 0, 8780, 6620, 6, 11, UNI_DOMINO } /* block=dominotiles */,
- { 0, 1417, 9166, 25, 4, UNI_CCC__27 } /* canonicalcombiningclass=ccc27 */,
- { 2, 4116, 3278, 3, 17, UNI_PI } /* isinitialpunctuation */,
- { 18, 8888, 0, 4, 0, UNI_HATR } /* hatr */,
- { 0, 8589, 7292, 8, 6, UNI_SC__SOGD } /* script=sogdian */,
- { 3, 4791, 2062, 3, 3, UNI_INMODI } /* inmodi */,
- { 1, 2218, 9689, 3, 2, UNI_INNKO } /* innko */,
- { 4, 8930, 9255, 6, 5, -UNI_XPOSIXLOWER } /* lower=false */,
- { 1, 3836, 1654, 17, 6, UNI_HANG } /* scriptextensions=hangul */,
- { 2, 8780, 1466, 7, 23, UNI_DIACRITICALSFORSYMBOLS } /* block=combiningmarksforsymbols */,
- { 2, 8589, 8936, 7, 4, UNI_LYCI } /* script=lyci */,
- { 6, 184, 7, 3, 1, UNI_XPOSIXCNTRL } /* iscc */,
- { 1, 9277, 8786, 3, 4, UNI_CARI } /* sc=cari */,
- { 2, 184, 114, 3, 24, UNI_DIACRITICALS } /* iscombiningdiacriticalmarks */,
- { 5, 9488, 7278, 4, 10, UNI_INOLDPERSIAN } /* blk=oldpersian */,
- { 20, 1552, 206, 9, 2, UNI_PI } /* category=pi */,
- { 1, 9508, 10172, 4, 2, UNI_CCC__9 } /* ccc=vr */,
- { 0, 184, 1442, 3, 23, UNI_CJKSYMBOLS } /* iscjksymbolsandpunctuation */,
- { 2, 10024, 598, 3, 2, UNI_XPOSIXCNTRL } /* gc=cc */,
- { 14, 7325, 10096, 3, 3, UNI_IN__5 } /* in=v50 */,
- { 0, 9277, 8680, 3, 7, UNI_ZZZZ } /* sc=unknown */,
- { 0, 9270, 2555, 5, 6, UNI_INPC__BOTTOM } /* inpc=bottom */,
- { 4, 8589, 1176, 8, 3, UNI_SORA } /* script=sora */,
- { 2, 659, 0, 30, 0, UNI_CJKEXTF } /* cjkunifiedideographsextensionf */,
- { 0, 8960, 17, 7, 1, UNI_COMPEX } /* nfcqc=no */,
- { 1, 1417, 9468, 24, 4, UNI_CCC__216 } /* canonicalcombiningclass=atar */,
- { 4, 8694, 1025, 7, 2, -UNI_XPOSIXSPACE } /* wspace=no */,
- { 0, 9888, 0, 4, 0, UNI_ZANB } /* zanb */,
- { 14, 8780, 3341, 6, 8, UNI_DINGBATS } /* block=dingbats */,
- { 1, 7218, 5746, 10, 5, UNI_EBASE } /* linebreak=ebase */,
- { 1, 8575, 1, 7, 1, -UNI_PATSYN } /* patsyn=n */,
- { 0, 10048, 9380, 3, 4, UNI_NV__1_SLASH_80 } /* nv=1/80 */,
- { 3, 9800, 0, 4, 0, UNI_TAGS } /* tags */,
- { 1, 10290, 5039, 6, 6, UNI_XPOSIXXDIGIT } /* xposixxdigit */,
- { 0, 9488, 2874, 4, 19, UNI_OTTOMANSIYAQNUMBERS } /* blk=ottomansiyaqnumbers */,
- { 1, 9997, 6049, 3, 12, UNI_BC__AN } /* bc=arabicnumber */,
- { 0, 4916, 8292, 3, 7, UNI_TAGB } /* istagbanwa */,
- { 1, 4628, 0, 15, 0, UNI_ea_values_index } /* eastasianwidth= */,
- { 0, 184, 8924, 2, 6, UNI_LEPC } /* islepcha */,
- { 0, 7693, 0, 9, 0, UNI_SAMR } /* samaritan */,
- { 0, 7318, 10075, 10, 3, UNI_IN__2 } /* presentin=v20 */,
- { 5, 9488, 1294, 4, 25, UNI_SUPERANDSUB } /* blk=superscriptsandsubscripts */,
- { 0, 10048, 7859, 3, 4, UNI_NV__2000 } /* nv=2000 */,
- { 12, 21, 7188, 2, 10, UNI_INKHAROSHTHI } /* inkharoshthi */,
- { 7, 3836, 3937, 17, 8, UNI_BOPO } /* scriptextensions=bopomofo */,
- { 0, 9556, 6178, 4, 3, UNI_LB__ZWJ } /* gcb=zwj */,
- { 2, 184, 149, 3, 34, UNI_DIACRITICALSSUP } /* iscombiningdiacriticalmarkssupplement */,
- { 14, 6420, 4869, 3, 14, UNI_NARB } /* inoldnortharabian */,
- { 0, 10030, 0, 4, 0, UNI_JT__L } /* jt=l */,
- { 1, 2203, 0, 14, 0, UNI_ROHG } /* hanifirohingya */,
- { 1, 5791, 6346, 13, 3, UNI_JG__NYA } /* joininggroup=nya */,
- { 0, 8780, 6505, 6, 8, UNI_PHAISTOS } /* block=phaistos */,
- { 4, 184, 9684, 2, 4, UNI_NEWA } /* isnewa */,
- { 32, 4033, 908, 16, 10, UNI_CO } /* generalcategory=privateuse */,
- { 12, 9277, 9484, 3, 4, UNI_BHKS } /* sc=bhks */,
- { 5, 509, 0, 20, 0, UNI_CJK } /* cjkunifiedideographs */,
- { 1, 10027, 7048, 3, 10, UNI_JG__AFRICANQAF } /* jg=africanqaf */,
- { 0, 7438, 5851, 10, 2, UNI_WB__ML } /* wordbreak=ml */,
- { 3, 9612, 0, 4, 0, UNI_KNDA } /* knda */,
- { 1, 9488, 148, 4, 35, UNI_DIACRITICALSSUP } /* blk=combiningdiacriticalmarkssupplement */,
- { 3, 7325, 7755, 3, 3, UNI_IN__1_DOT_1 } /* in=1.1 */,
- { 0, 1552, 32, 9, 2, UNI__PERL_SURROGATE } /* category=cs */,
- { 2, 9508, 6445, 4, 12, UNI_CCC__0 } /* ccc=notreordered */,
- { 0, 2218, 7631, 3, 8, UNI_INNEWTAILUE } /* innewtailue */,
- { 4, 9488, 8227, 4, 8, UNI_KANAEXTA } /* blk=kanaexta */,
- { 0, 1988, 1025, 22, 2, -UNI_LOE } /* logicalorderexception=no */,
- { 26, 8960, 47, 6, 1, UNI_NFCQC__M } /* nfcqc=m */,
- { 0, 5986, 7859, 13, 3, UNI_NV__200 } /* numericvalue=200 */,
- { 4, 3937, 0, 4, 0, UNI_BOPO } /* bopo */,
- { 0, 8894, 9255, 6, 5, -UNI_JOINC } /* joinc=false */,
- { 0, 21, 8924, 2, 6, UNI_INLEPCHA } /* inlepcha */,
- { 0, 6553, 0, 12, 0, UNI_xidc_values_index } /* xidcontinue= */,
- { 7, 7076, 4449, 3, 4, UNI_INBAMUM } /* inbamum */,
- { 1, 10027, 4773, 3, 3, UNI_JG__SAD } /* jg=sad */,
- { 0, 7218, 10174, 10, 2, UNI_LB__XX } /* linebreak=xx */,
- { 0, 8780, 5284, 6, 7, UNI_LISUSUP } /* block=lisusup */,
- { 0, 5578, 9080, 14, 5, UNI_SB__AT } /* sentencebreak=aterm */,
- { 0, 10033, 4360, 3, 9, UNI_EMOD } /* lb=emodifier */,
- { 1, 9277, 1536, 3, 4, UNI_SC__SIND } /* sc=sind */,
- { 1, 8589, 8484, 7, 7, UNI_SC__MAND } /* script=mandaic */,
- { 0, 3385, 0, 18, 0, UNI_ri_values_index } /* regionalindicator= */,
- { 6, 3836, 9888, 17, 4, UNI_ZANB } /* scriptextensions=zanb */,
- { 4, 9768, 2560, 4, 4, UNI_MAND } /* scx=mand */,
- { 0, 6517, 0, 12, 0, UNI_PLAYINGCARDS } /* playingcards */,
- { 1, 8780, 43, 7, 25, UNI_CJKCOMPATIDEOGRAPHS } /* block=cjkcompatibilityideographs */,
- { 3, 8147, 0, 9, 0, -UNI_EXTPICT } /* extpict=f */,
- { 0, 8780, 6517, 6, 12, UNI_PLAYINGCARDS } /* block=playingcards */,
- { 1, 10027, 5856, 3, 13, UNI_JG__MALAYALAMNNNA } /* jg=malayalamnnna */,
- { 1, 6420, 3332, 3, 17, UNI_ORNAMENTALDINGBATS } /* inornamentaldingbats */,
- { 0, 9277, 497, 5, 3, UNI_KHMR } /* sc=khmer */,
- { 0, 8780, 8942, 6, 6, UNI_INLYDIAN } /* block=lydian */,
- { 1, 9488, 749, 4, 21, UNI_ENCLOSEDALPHANUM } /* blk=enclosedalphanumerics */,
- { 0, 4033, 132, 16, 2, UNI_LM } /* generalcategory=lm */,
- { 0, 8780, 3457, 6, 11, UNI_TAIXUANJING } /* block=taixuanjing */,
- { 2, 2224, 896, 3, 27, UNI_SUPPUAA } /* insupplementaryprivateuseareaa */,
- { 0, 3379, 1025, 6, 2, -UNI_XPOSIXSPACE } /* space=no */,
- { 0, 1812, 26, 22, 1, UNI_CWL } /* changeswhenlowercased=y */,
- { 0, 9768, 9680, 4, 4, UNI_NBAT } /* scx=nbat */,
- { 0, 4791, 393, 3, 2, UNI_INMRO } /* inmro */,
- { 1, 184, 9664, 2, 3, UNI_MRO } /* ismro */,
- { 2, 9488, 5804, 4, 13, UNI_KANAEXTA } /* blk=kanaextendeda */,
- { 0, 10132, 0, 3, 0, UNI_wb_values_index } /* wb= */,
- { 0, 8924, 0, 4, 0, UNI_LEPC } /* lepc */,
- { 6, 8659, 0, 7, 0, UNI_TIBT } /* tibetan */,
- { 2, 184, 1060, 3, 5, UNI_COPT } /* iscoptic */,
- { 22, 9508, 9026, 4, 6, UNI_CCC__9 } /* ccc=virama */,
- { 1, 9270, 868, 3, 10, UNI_PHONETICEXT } /* inphoneticext */,
- { 0, 1677, 0, 5, 0, UNI_LATN } /* latin */,
- { 1, 3385, 9836, 18, 4, UNI_RI } /* regionalindicator=true */,
- { 0, 1790, 36, 22, 1, UNI_CWCM } /* changeswhencasemapped=t */,
- { 3, 8589, 9660, 7, 4, UNI_SC__MLYM } /* script=mlym */,
- { 0, 10033, 6169, 3, 4, UNI_LB__GL } /* lb=glue */,
- { 4, 1537, 2988, 24, 19, UNI_INPC__TOPANDBOTTOMANDLEFT } /* indicpositionalcategory=topandbottomandleft */,
- { 3, 5791, 3819, 13, 17, UNI_JG__MANICHAEANTHAMEDH } /* joininggroup=manichaeanthamedh */,
- { 4, 5986, 10150, 13, 2, UNI_NV__48 } /* numericvalue=48 */,
- { 4, 184, 6796, 2, 11, UNI_MEDF } /* ismedefaidrin */,
- { 18, 3382, 36, 3, 1, UNI_CE } /* ce=t */,
- { 8, 10048, 7978, 3, 2, UNI_NV__16 } /* nv=16 */,
- { 1, 7438, 73, 10, 2, UNI_WB__EB } /* wordbreak=em */,
- { 2, 1417, 9196, 25, 4, UNI_CCC__33 } /* canonicalcombiningclass=ccc33 */,
- { 19, 9768, 9620, 4, 4, UNI_LANA } /* scx=lana */,
- { 2, 3382, 10135, 3, 3, UNI_CE } /* ce=yes */,
- { 17, 8780, 4883, 6, 15, UNI_SARB } /* block=oldsoutharabian */,
- { 17, 8243, 0, 8, 0, UNI_MAHJ } /* mahajani */,
- { 1, 5674, 0, 13, 0, UNI_bidim_values_index } /* bidimirrored= */,
- { 2, 9488, 867, 4, 18, UNI_PHONETICEXT } /* blk=phoneticextensions */,
- { 0, 6229, 36, 12, 1, UNI_JOINC } /* joincontrol=t */,
- { 16, 3836, 9576, 17, 4, UNI_GURU } /* scriptextensions=guru */,
- { 4, 5791, 5620, 13, 10, UNI_JG__TEHMARBUTA } /* joininggroup=tehmarbuta */,
- { 2, 10048, 9055, 3, 4, UNI_NV__1_SLASH_32 } /* nv=1/32 */,
- { 0, 21, 5270, 2, 14, UNI_LATINEXTE } /* inlatinextendede */,
- { 1, 10030, 0, 3, 1, UNI_JT__U } /* jt=u */,
- { 0, 184, 9226, 3, 4, UNI_XPOSIXCNTRL } /* iscntrl */,
- { 0, 7218, 25, 10, 2, UNI_LB__SY } /* linebreak=sy */,
- { 7, 3097, 10066, 18, 3, UNI_DT__SML } /* decompositiontype=sml */,
- { 12, 184, 9533, 3, 3, UNI_CYRL } /* iscyrl */,
- { 1, 4791, 2856, 3, 18, UNI_MONGOLIANSUP } /* inmongoliansupplement */,
- { 10, 4658, 9836, 15, 4, UNI_GREXT } /* graphemeextend=true */,
- { 9, 7218, 10156, 10, 2, UNI_LB__BK } /* linebreak=bk */,
- { 1, 9488, 4673, 4, 15, UNI_INHANGUL } /* blk=hangulsyllables */,
- { 3, 184, 2010, 2, 22, UNI_MISCTECHNICAL } /* ismiscellaneoustechnical */,
- { 3, 4033, 5592, 16, 14, UNI_ZS } /* generalcategory=spaceseparator */,
- { 1, 10048, 9413, 3, 3, UNI_NV__7_SLASH_2 } /* nv=7/2 */,
- { 0, 7088, 3773, 10, 3, UNI_BC__RLI } /* bidiclass=rli */,
- { 4, 9488, 3683, 4, 17, UNI_ETHIOPICEXTA } /* blk=ethiopicextendeda */,
- { 2, 9230, 26, 5, 1, UNI_CWCF } /* cwcf=y */,
- { 0, 8589, 9002, 7, 6, UNI_SC__TELU } /* script=telugu */,
- { 0, 10009, 45, 3, 6, UNI_DT__COM } /* dt=compat */,
- { 0, 9240, 9255, 5, 5, -UNI_DASH } /* dash=false */,
- { 0, 10024, 4718, 3, 15, UNI_LOWERCASELETTER } /* gc=lowercaseletter */,
- { 1, 5986, 8720, 13, 3, UNI_NV__400 } /* numericvalue=400 */,
- { 0, 2280, 9316, 3, 4, UNI_ORYA } /* isoriya */,
- { 0, 3374, 1025, 11, 2, -UNI_XPOSIXSPACE } /* whitespace=no */,
- { 1, 8688, 2314, 3, 3, UNI_POSIXXDIGIT } /* isahex */,
- { 6, 9768, 9664, 4, 4, UNI_MRO } /* scx=mroo */,
- { 0, 9768, 2855, 4, 9, UNI_MONG } /* scx=mongolian */,
- { 0, 8780, 6086, 7, 11, UNI_CHESSSYMBOLS } /* block=chesssymbols */,
- { 3, 184, 895, 2, 28, UNI_SUPPUAA } /* issupplementaryprivateuseareaa */,
- { 8, 8882, 10135, 6, 3, UNI_GREXT } /* grext=yes */,
- { 0, 9768, 9748, 4, 4, UNI_RJNG } /* scx=rjng */,
- { 2, 8780, 690, 7, 29, UNI_CJKEXTG } /* block=cjkunifiedideographsextensiong */,
- { 8, 2218, 8527, 3, 6, UNI_NB } /* innoblock */,
- { 2, 8589, 9664, 7, 3, UNI_MRO } /* script=mro */,
- { 0, 10063, 9255, 3, 5, -UNI_SD } /* sd=false */,
- { 20, 4033, 106, 16, 6, UNI_S } /* generalcategory=symbol */,
- { 2, 10027, 9456, 3, 4, UNI_JG__ALEF } /* jg=alef */,
- { 0, 4916, 9009, 3, 5, UNI_THAA } /* isthaana */,
- { 7, 7325, 7827, 3, 3, UNI_IN__2 } /* in=2.0 */,
- { 0, 1417, 9131, 25, 4, UNI_CCC__20 } /* canonicalcombiningclass=ccc20 */,
- { 1, 3374, 0, 10, 0, UNI_XPOSIXSPACE } /* whitespace */,
- { 2, 184, 1700, 2, 23, UNI_SHORTHANDFORMATCONTROLS } /* isshorthandformatcontrols */,
- { 0, 8638, 0, 7, 0, UNI_TGLG } /* tagalog */,
- { 9, 8780, 9002, 6, 6, UNI_INTELUGU } /* block=telugu */,
- { 10, 9488, 1654, 4, 6, UNI_INHANGUL } /* blk=hangul */,
- { 4, 9488, 8610, 4, 7, UNI_INSIDDHAM } /* blk=siddham */,
- { 1, 10012, 4471, 3, 7, UNI_EA__N } /* ea=neutral */,
- { 1, 3836, 9732, 17, 4, UNI_PRTI } /* scriptextensions=prti */,
- { 1, 184, 1218, 2, 26, UNI_KATAKANAEXT } /* iskatakanaphoneticextensions */,
- { 7, 9277, 7569, 5, 7, UNI_SC__SIND } /* sc=khudawadi */,
- { 0, 10291, 62, 5, 5, UNI_POSIXGRAPH } /* posixgraph */,
- { 23, 184, 6620, 2, 11, UNI_DOMINO } /* isdominotiles */,
- { 0, 9896, 0, 4, 0, UNI_ZYYY } /* zyyy */,
- { 0, 10027, 5354, 3, 14, UNI_JG__MANICHAEANHETH } /* jg=manichaeanheth */,
- { 4, 5986, 7468, 13, 9, UNI_NV___MINUS_1_SLASH_2 } /* numericvalue=-5.00e-01 */,
- { 0, 10048, 8043, 3, 8, UNI_NV__4_SLASH_5 } /* nv=8.00e-01 */,
- { 0, 3836, 7657, 17, 9, UNI_PERM } /* scriptextensions=oldpermic */,
- { 1, 184, 1835, 3, 20, UNI_CWT } /* ischangeswhentitlecased */,
- { 4, 9488, 1677, 4, 23, UNI_LATINEXTADDITIONAL } /* blk=latinextendedadditional */,
- { 1, 2280, 9709, 3, 3, UNI_ORYA } /* isorya */,
- { 2, 3836, 8924, 17, 6, UNI_LEPC } /* scriptextensions=lepcha */,
- { 1, 9768, 6193, 4, 4, UNI_HEBR } /* scx=hebr */,
- { 2, 9488, 5816, 5, 7, UNI_INBALINESE } /* blk=balinese */,
- { 1, 9508, 2455, 4, 5, UNI_CCC__R } /* ccc=right */,
- { 0, 1677, 0, 9, 0, UNI_LATINEXTE } /* latinexte */,
- { 0, 9277, 2409, 3, 4, UNI_SC__GLAG } /* sc=glag */,
- { 2, 9488, 5522, 4, 14, UNI_PHONETICEXTSUP } /* blk=phoneticextsup */,
- { 0, 7438, 6917, 10, 11, UNI_WB__SQ } /* wordbreak=singlequote */,
- { 1, 2182, 5633, 21, 2, UNI_LB__H2 } /* graphemeclusterbreak=lv */,
- { 40, 6231, 3026, 3, 17, UNI_CHEROKEESUP } /* incherokeesupplement */,
- { 6, 467, 0, 5, 0, UNI_P } /* punct */,
- { 1, 10024, 5817, 3, 13, UNI_ZL } /* gc=lineseparator */,
- { 0, 9768, 8337, 4, 7, UNI_AVST } /* scx=avestan */,
- { 1, 184, 114, 3, 34, UNI_DIACRITICALSFORSYMBOLS } /* iscombiningdiacriticalmarksforsymbols */,
- { 4, 9488, 1513, 4, 24, UNI_HIGHPUSURROGATES } /* blk=highprivateusesurrogates */,
- { 0, 9277, 4001, 3, 7, UNI_SC__CPRT } /* sc=cypriot */,
- { 0, 5986, 9380, 13, 4, UNI_NV__1_SLASH_80 } /* numericvalue=1/80 */,
- { 0, 10291, 5040, 5, 5, UNI_POSIXDIGIT } /* posixdigit */,
- { 6, 8589, 9310, 7, 5, UNI_OGAM } /* script=ogham */,
- { 0, 184, 2245, 2, 21, UNI_MEETEIMAYEKEXT } /* ismeeteimayekextensions */,
- { 1, 3836, 8442, 17, 7, UNI_HANO } /* scriptextensions=hanunoo */,
- { 1, 6241, 7258, 12, 10, UNI_JT__U } /* joiningtype=nonjoining */,
- { 2, 10009, 4017, 3, 5, UNI_DT__FIN } /* dt=final */,
- { 9, 3836, 6277, 17, 4, UNI_MAHJ } /* scriptextensions=mahj */,
- { 3, 4989, 1129, 3, 3, UNI_UCAS } /* isucas */,
- { 2, 8509, 2705, 4, 17, UNI_ENCLOSEDALPHANUMSUP } /* inenclosedalphanumsup */,
- { 5, 10051, 0, 3, 0, UNI_OCR } /* ocr */,
- { 1, 3717, 8330, 17, 7, UNI_IDENTIFIERSTATUS__ALLOWED } /* identifierstatus=allowed */,
- { 0, 9768, 1628, 4, 4, UNI_PHAG } /* scx=phag */,
- { 1, 10024, 6265, 3, 12, UNI_NL } /* gc=letternumber */,
- { 0, 8996, 9837, 7, 3, UNI_STERM } /* sterm=true */,
- { 0, 9488, 3683, 4, 11, UNI_ETHIOPICEXT } /* blk=ethiopicext */,
- { 1, 9768, 6484, 4, 4, UNI_HUNG } /* scx=hung */,
- { 9, 9038, 0, 6, 0, UNI_YEZI } /* yezidi */,
- { 0, 6231, 7129, 3, 9, UNI_CJKSTROKES } /* incjkstrokes */,
- { 2, 10033, 0, 3, 0, UNI_lb_values_index } /* lb= */,
- { 0, 8960, 0, 7, 0, UNI_COMPEX } /* nfcqc=n */,
- { 0, 1189, 5713, 3, 7, UNI_XPOSIXDIGIT } /* nt=decimal */,
- { 4, 6241, 6, 12, 1, UNI_JT__D } /* joiningtype=d */,
- { 0, 9277, 4883, 3, 15, UNI_SARB } /* sc=oldsoutharabian */,
- { 0, 6805, 206, 6, 11, UNI_MISCPICTOGRAPHS } /* inmiscpictographs */,
- { 8, 10024, 467, 3, 11, UNI_P } /* gc=punctuation */,
- { 9, 9768, 8187, 4, 4, UNI_HIRA } /* scx=hira */,
- { 4, 184, 7513, 2, 9, UNI_BHKS } /* isbhaiksuki */,
- { 2, 5986, 9376, 13, 4, UNI_NV__1_SLASH_64 } /* numericvalue=1/64 */,
- { 21, 9488, 7531, 4, 9, UNI_EMOTICONS } /* blk=emoticons */,
- { 6, 7684, 0, 4, 0, UNI_PAUC } /* pauc */,
- { 12, 4273, 0, 7, 0, UNI_MYMR } /* myanmar */,
- { 12, 7657, 0, 9, 0, UNI_PERM } /* oldpermic */,
- { 0, 6231, 510, 3, 19, UNI_CJK } /* incjkunifiedideographs */,
- { 8, 184, 9644, 2, 4, UNI_MEDF } /* ismedf */,
- { 3, 951, 0, 18, 0, UNI_INVS } /* variationselectors */,
- { 0, 8780, 5018, 6, 14, UNI_ANCIENTSYMBOLS } /* block=ancientsymbols */,
- { 5, 1417, 3015, 24, 10, UNI_CCC__AR } /* canonicalcombiningclass=aboveright */,
- { 1, 4116, 3260, 3, 3, UNI_IDSB } /* isidsb */,
- { 68, 1966, 2389, 22, 20, UNI_INSC__CONSONANTWITHSTACKER } /* indicsyllabiccategory=consonantwithstacker */,
- { 3, 10126, 18, 3, 1, UNI_VO__R } /* vo=r */,
- { 8, 8688, 9441, 3, 3, UNI_ADLM } /* isadlm */,
- { 6, 9277, 2608, 3, 4, UNI_BRAH } /* sc=brah */,
- { 10, 10333, 6, 3, 1, UNI_SD } /* issd */,
- { 0, 4033, 27, 16, 2, UNI_LOWERCASELETTER } /* generalcategory=ll */,
- { 9, 5791, 4778, 13, 15, UNI_JG__MANICHAEANZAYIN } /* joininggroup=manichaeanzayin */,
- { 0, 8780, 1631, 6, 15, UNI_GEOMETRICSHAPES } /* block=geometricshapes */,
- { 0, 8870, 0, 6, 0, UNI_epres_values_index } /* epres= */,
- { 1, 9716, 36, 4, 1, UNI_PCM } /* pcm=t */,
- { 0, 3836, 8498, 17, 7, UNI_MULT } /* scriptextensions=multani */,
- { 0, 184, 4360, 2, 4, UNI_EMOD } /* isemod */,
- { 0, 10033, 42, 3, 2, UNI_LB__CJ } /* lb=cj */,
- { 1, 5986, 8744, 13, 4, UNI_NV__7000 } /* numericvalue=7000 */,
- { 0, 1591, 7533, 4, 7, UNI_EMOTICONS } /* inemoticons */,
- { 2, 9488, 10051, 4, 3, UNI_OCR } /* blk=ocr */,
- { 9, 9768, 7292, 5, 3, UNI_SOGD } /* scx=sogd */,
- { 0, 9768, 9564, 4, 4, UNI_GONM } /* scx=gonm */,
- { 2, 3836, 8477, 17, 7, UNI_MAKA } /* scriptextensions=makasar */,
- { 34, 3836, 6973, 18, 10, UNI_SYLO } /* scriptextensions=sylotinagri */,
- { 2, 1417, 4134, 24, 1, UNI_CCC__1 } /* canonicalcombiningclass=1 */,
- { 9, 9556, 6763, 4, 3, UNI_LB__H3 } /* gcb=lvt */,
- { 0, 184, 1585, 2, 23, UNI_BYZANTINEMUSIC } /* isbyzantinemusicalsymbols */,
- { 0, 1537, 0, 24, 0, UNI_inpc_values_index } /* indicpositionalcategory= */,
- { 0, 1979, 4720, 11, 13, UNI_LOWERCASELETTER } /* category=lowercaseletter */,
- { 0, 5986, 9404, 13, 4, UNI_NV__13_SLASH_2 } /* numericvalue=13/2 */,
- { 0, 8780, 779, 6, 30, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* block=symbolsandpictographsextendeda */,
- { 17, 9277, 8428, 3, 4, UNI_SC__GRAN } /* sc=gran */,
- { 0, 9768, 9692, 4, 4, UNI_NSHU } /* scx=nshu */,
- { 0, 4273, 0, 16, 0, UNI_MYANMAREXTA } /* myanmarextendeda */,
- { 0, 7218, 6178, 10, 3, UNI_LB__ZWJ } /* linebreak=zwj */,
- { 1, 8768, 3, 6, 1, -UNI_BIDIC } /* bidic=f */,
- { 3, 8930, 1025, 6, 2, -UNI_XPOSIXLOWER } /* lower=no */,
- { 8, 10048, 7933, 3, 2, UNI_NV__17 } /* nv=17 */,
- { 1, 1417, 9191, 25, 4, UNI_CCC__32 } /* canonicalcombiningclass=ccc32 */,
- { 5, 9444, 10084, 4, 3, UNI_AGE__3_DOT_1 } /* age=v31 */,
- { 0, 9488, 8582, 4, 7, UNI_INPHAGSPA } /* blk=phagspa */,
- { 4, 8589, 2817, 7, 4, UNI_MERO } /* script=mero */,
- { 8, 8449, 3, 7, 1, -UNI_HYPHEN } /* hyphen=f */,
- { 13, 8997, 3, 5, 1, -UNI_TERM } /* term=f */,
- { 0, 10048, 8708, 3, 6, UNI_NV__216000 } /* nv=216000 */,
- { 0, 7438, 1194, 10, 2, UNI_LB__LF } /* wordbreak=lf */,
- { 1, 3836, 6884, 17, 11, UNI_HMNG } /* scriptextensions=pahawhhmong */,
- { 1, 10027, 9772, 3, 4, UNI_JG__SEEN } /* jg=seen */,
- { 9, 3836, 9448, 17, 4, UNI_AGHB } /* scriptextensions=aghb */,
- { 0, 3836, 3895, 18, 3, UNI_SGNW } /* scriptextensions=sgnw */,
- { 32, 10030, 36, 3, 1, UNI_JT__T } /* jt=t */,
- { 10, 3836, 8171, 17, 8, UNI_GUJR } /* scriptextensions=gujarati */,
- { 15, 21, 5228, 2, 14, UNI_LATINEXTB } /* inlatinextendedb */,
- { 1, 9444, 9985, 4, 3, UNI_AGE__7 } /* age=7.0 */,
- { 9, 4422, 3117, 4, 16, UNI_DEVANAGARIEXT } /* indevanagariextended */,
- { 0, 184, 9480, 2, 4, UNI_BATK } /* isbatk */,
- { 1, 10333, 7292, 3, 3, UNI_SOGD } /* issogd */,
- { 0, 1812, 36, 22, 1, UNI_CWL } /* changeswhenlowercased=t */,
- { 0, 8864, 1025, 6, 2, -UNI_EMOJI } /* emoji=no */,
- { 2, 9508, 8795, 4, 3, UNI_CCC__103 } /* ccc=103 */,
- { 6, 8603, 0, 7, 0, UNI_SHAW } /* shavian */,
- { 0, 4145, 0, 7, 0, UNI_LINB } /* linearb */,
- { 1, 1979, 1045, 10, 5, UNI_L } /* category=letter */,
- { 4, 8456, 0, 7, 0, UNI_KNDA } /* kannada */,
- { 0, 1552, 3349, 9, 18, UNI_ZP } /* category=paragraphseparator */,
- { 2, 9277, 8421, 3, 4, UNI_ELYM } /* sc=elym */,
- { 2, 4688, 7005, 15, 11, UNI_IDENTIFIERTYPE__UNCOMMONUSE } /* identifiertype=uncommonuse */,
- { 1, 4688, 6895, 15, 11, UNI_IDENTIFIERTYPE__RECOMMENDED } /* identifiertype=recommended */,
- { 0, 1417, 9136, 25, 4, UNI_CCC__21 } /* canonicalcombiningclass=ccc21 */,
- { 0, 8688, 1395, 4, 22, UNI_ARABICPFB } /* isarabicpresentationformsb */,
- { 1, 2224, 7292, 3, 6, UNI_INSOGDIAN } /* insogdian */,
- { 9, 8589, 7630, 7, 9, UNI_TALU } /* script=newtailue */,
- { 1, 8780, 4385, 6, 16, UNI_TANGUTCOMPONENTS } /* block=tangutcomponents */,
- { 3, 4033, 3349, 16, 18, UNI_ZP } /* generalcategory=paragraphseparator */,
- { 4, 10048, 7963, 3, 8, UNI_NV__11_SLASH_2 } /* nv=5.50e+00 */,
- { 2, 8768, 0, 6, 0, UNI_bidic_values_index } /* bidic= */,
- { 6, 184, 923, 2, 28, UNI_SUPPUAB } /* issupplementaryprivateuseareab */,
- { 3, 9262, 10174, 3, 2, UNI_SB__XX } /* sb=xx */,
- { 2, 2224, 7369, 3, 9, UNI_SMALLFORMS } /* insmallforms */,
- { 0, 8864, 10135, 6, 3, UNI_EMOJI } /* emoji=yes */,
- { 10, 10024, 132, 3, 2, UNI_LM } /* gc=lm */,
- { 0, 8780, 4433, 6, 15, UNI_ARABICEXTA } /* block=arabicextendeda */,
- { 5, 1171, 0, 2, 0, UNI_TITLE } /* lt */,
- { 0, 9444, 10117, 4, 3, UNI_AGE__7 } /* age=v70 */,
- { 0, 8589, 78, 7, 6, UNI_SC__ARAB } /* script=arabic */,
- { 1, 8780, 9330, 6, 5, UNI_INTAILE } /* block=taile */,
- { 6, 9277, 3785, 3, 4, UNI_SC__MANI } /* sc=mani */,
- { 0, 9997, 6037, 3, 12, UNI_BC__AL } /* bc=arabicletter */,
- { 5, 6241, 0, 12, 0, UNI_jt_values_index } /* joiningtype= */,
- { 0, 4791, 6819, 3, 10, UNI_MYANMAREXTA } /* inmyanmarexta */,
- { 3, 9277, 8617, 3, 7, UNI_SOYO } /* sc=soyombo */,
- { 0, 2288, 1195, 5, 23, UNI_HALFANDFULLFORMS } /* inhalfwidthandfullwidthforms */,
- { 2, 8470, 0, 7, 0, UNI_LINA } /* lineara */,
- { 5, 3374, 9836, 11, 4, UNI_XPOSIXSPACE } /* whitespace=true */,
- { 5, 9014, 26, 6, 1, UNI_UIDEO } /* uideo=y */,
- { 0, 9768, 9824, 4, 4, UNI_TGLG } /* scx=tglg */,
- { 12, 5578, 10174, 14, 2, UNI_SB__XX } /* sentencebreak=xx */,
- { 2, 1537, 2449, 24, 4, UNI_INPC__LEFT } /* indicpositionalcategory=left */,
- { 2, 9488, 867, 4, 28, UNI_PHONETICEXTSUP } /* blk=phoneticextensionssupplement */,
- { 1, 184, 3115, 2, 10, UNI_DEVA } /* isdevanagari */,
- { 3, 9262, 49, 3, 2, UNI_SB__AT } /* sb=at */,
- { 9, 8589, 8498, 7, 7, UNI_SC__MULT } /* script=multani */,
- { 0, 9277, 9824, 3, 4, UNI_SC__TGLG } /* sc=tglg */,
- { 2, 1087, 36, 27, 1, UNI_PCM } /* prependedconcatenationmark=t */,
- { 0, 3311, 0, 3, 0, UNI_ALL } /* all */,
- { 1, 8930, 1, 6, 1, -UNI_XPOSIXLOWER } /* lower=n */,
- { 4, 3901, 6184, 5, 9, UNI_INGUNJALAGONDI } /* ingunjalagondi */,
- { 0, 6420, 7667, 3, 8, UNI_INOLDTURKIC } /* inoldturkic */,
- { 1, 8589, 9892, 7, 4, UNI_SC__QAAI } /* script=zinh */,
- { 0, 184, 8876, 2, 4, UNI_GOTH } /* isgoth */,
- { 5, 10003, 26, 3, 1, UNI_CI } /* ci=y */,
- { 1, 10182, 8979, 7, 4, UNI__PERL_PATWS } /* _perl_patws */,
- { 14, 7158, 1, 10, 1, -UNI_DIA } /* diacritic=n */,
- { 1, 9488, 6253, 4, 12, UNI_KHMERSYMBOLS } /* blk=khmersymbols */,
- { 5, 9290, 36, 5, 1, UNI_MATH } /* math=t */,
- { 0, 184, 435, 2, 5, UNI__PERL_NCHAR } /* isnchar */,
- { 3, 9596, 5633, 4, 2, UNI_LB__H2 } /* hst=lv */,
- { 2, 9277, 9452, 3, 4, UNI_AHOM } /* sc=ahom */,
- { 0, 184, 8477, 2, 4, UNI_MAKA } /* ismaka */,
- { 3, 7594, 0, 9, 0, UNI_LATINEXTD } /* latinextd */,
- { 1, 9277, 7358, 3, 4, UNI_SAUR } /* sc=saur */,
- { 3, 9488, 5284, 4, 7, UNI_LISUSUP } /* blk=lisusup */,
- { 0, 9020, 0, 6, 0, UNI_upper_values_index } /* upper= */,
- { 6, 8864, 0, 6, 0, UNI_emoji_values_index } /* emoji= */,
- { 0, 4422, 3117, 4, 11, UNI_DEVANAGARIEXT } /* indevanagariext */,
- { 0, 8688, 80, 4, 33, UNI_ARABICMATH } /* isarabicmathematicalalphabeticsymbols */,
- { 1, 3836, 0, 17, 0, UNI_scx_values_index } /* scriptextensions= */,
- { 4, 9488, 7308, 4, 10, UNI_INPHOENICIAN } /* blk=phoenician */,
- { 3, 5791, 6313, 13, 12, UNI_JG__MALAYALAMNGA } /* joininggroup=malayalamnga */,
- { 9, 3836, 7168, 17, 10, UNI_DIAK } /* scriptextensions=divesakuru */,
- { 1, 9277, 1219, 4, 7, UNI_SC__KANA } /* sc=katakana */,
- { 0, 4033, 133, 16, 4, UNI_M } /* generalcategory=mark */,
- { 1, 10048, 7939, 3, 8, UNI_NV__9_SLASH_2 } /* nv=4.50e+00 */,
- { 1, 2288, 4098, 3, 15, UNI_HIGHPUSURROGATES } /* inhighpusurrogates */,
- { 4, 9277, 9664, 3, 3, UNI_MRO } /* sc=mro */,
- { 2, 7291, 0, 7, 0, UNI_SOGD } /* sogdian */,
- { 1, 1417, 8837, 24, 3, UNI_WB__EB } /* canonicalcombiningclass=133 */,
- { 0, 4033, 339, 16, 2, UNI_LO } /* generalcategory=lo */,
- { 0, 7540, 36, 9, 1, UNI_EXT } /* extender=t */,
- { 3, 10296, 6, 3, 1, UNI_PD } /* ispd */,
- { 9, 9508, 24, 4, 1, UNI_CCC__L } /* ccc=l */,
- { 0, 1417, 9952, 24, 3, UNI_CCC__IS } /* canonicalcombiningclass=240 */,
- { 0, 7438, 727, 10, 2, UNI_WB__MN } /* wordbreak=mn */,
- { 32, 9488, 1878, 4, 22, UNI_CJKCOMPATIDEOGRAPHSSUP } /* blk=cjkcompatideographssup */,
- { 48, 184, 4145, 2, 16, UNI_LINEARBIDEOGRAMS } /* islinearbideograms */,
- { 0, 3836, 9245, 17, 4, UNI_DOGR } /* scriptextensions=dogr */,
- { 0, 1552, 6862, 9, 11, UNI_NO } /* category=othernumber */,
- { 14, 184, 9656, 2, 4, UNI_MIAO } /* ismiao */,
- { 0, 6576, 36, 11, 1, UNI_XPOSIXALPHA } /* alphabetic=t */,
- { 0, 5791, 6162, 13, 7, UNI_JG__SEMKATH } /* joininggroup=semkath */,
- { 5, 184, 8219, 2, 8, UNI_JAVA } /* isjavanese */,
- { 3, 3836, 8491, 17, 7, UNI_MARC } /* scriptextensions=marchen */,
- { 4, 4033, 400, 16, 6, UNI_CF } /* generalcategory=format */,
- { 9, 8780, 4369, 6, 9, UNI_SYRIACSUP } /* block=syriacsup */,
- { 0, 9488, 3581, 4, 17, UNI_UCAS } /* blk=canadiansyllabics */,
- { 0, 10027, 2627, 3, 19, UNI_JG__BURUSHASKIYEHBARREE } /* jg=burushaskiyehbarree */,
- { 1, 8780, 3080, 7, 17, UNI_COPTICEPACTNUMBERS } /* block=copticepactnumbers */,
- { 1, 9277, 2287, 3, 4, UNI_SC__SINH } /* sc=sinh */,
- { 6, 9716, 1025, 4, 2, -UNI_PCM } /* pcm=no */,
- { 0, 184, 3937, 2, 16, UNI_BOPOMOFOEXT } /* isbopomofoextended */,
- { 0, 8870, 3, 6, 1, -UNI_EPRES } /* epres=f */,
- { 0, 3223, 0, 18, 0, UNI_INPUNCTUATION } /* generalpunctuation */,
- { 3, 8589, 6277, 7, 4, UNI_SC__MAHJ } /* script=mahj */,
- { 3, 9997, 32, 3, 2, UNI_BC__CS } /* bc=cs */,
- { 0, 3151, 1025, 18, 2, -UNI_EPRES } /* emojipresentation=no */,
- { 0, 184, 1677, 2, 9, UNI_LATINEXTE } /* islatinexte */,
- { 0, 7438, 0, 4, 0, UNI_XPOSIXWORD } /* word */,
- { 0, 4033, 112, 16, 2, UNI_SC } /* generalcategory=sc */,
- { 1, 9488, 7621, 4, 9, UNI_INNABATAEAN } /* blk=nabataean */,
- { 0, 9277, 9672, 3, 4, UNI_SC__MYMR } /* sc=mymr */,
- { 3, 7218, 533, 10, 2, UNI_LB__NS } /* linebreak=ns */,
- { 2, 8780, 8115, 6, 8, UNI_INBASSAVAH } /* block=bassavah */,
- { 3, 951, 0, 17, 0, UNI_VS } /* variationselector */,
- { 1, 8589, 9038, 7, 4, UNI_SC__YEZI } /* script=yezi */,
- { 6, 9277, 9736, 3, 4, UNI_SC__COPT } /* sc=qaac */,
- { 0, 8688, 97, 3, 4, UNI_XPOSIXALPHA } /* isalpha */,
- { 2, 4033, 4305, 16, 16, UNI_PO } /* generalcategory=otherpunctuation */,
- { 1, 10132, 6193, 3, 12, UNI_LB__HL } /* wb=hebrewletter */,
- { 17, 1417, 6719, 24, 11, UNI_CCC__8 } /* canonicalcombiningclass=kanavoicing */,
- { 2, 1188, 4386, 3, 5, UNI_INTANGUT } /* intangut */,
- { 1, 9277, 4273, 3, 7, UNI_SC__MYMR } /* sc=myanmar */,
- { 46, 8924, 0, 6, 0, UNI_LEPC } /* lepcha */,
- { 1, 1417, 5649, 24, 1, UNI_CCC__0 } /* canonicalcombiningclass=0 */,
- { 1, 8589, 9896, 7, 4, UNI_SC__ZYYY } /* script=zyyy */,
- { 16, 10009, 0, 3, 0, UNI_dt_values_index } /* dt= */,
- { 6, 2784, 863, 4, 4, UNI_ARROWS } /* inarrows */,
- { 16, 9277, 4478, 3, 4, UNI_BRAI } /* sc=brai */,
- { 11, 9444, 10081, 4, 3, UNI_AGE__3 } /* age=v30 */,
- { 10, 9516, 0, 4, 0, UNI_CPRT } /* cprt */,
- { 2, 184, 9668, 2, 4, UNI_MTEI } /* ismtei */,
- { 0, 184, 6961, 2, 11, UNI_SUPERANDSUB } /* issuperandsub */,
- { 0, 10048, 7930, 3, 2, UNI_NV__14 } /* nv=14 */,
- { 1, 9270, 868, 3, 27, UNI_PHONETICEXTSUP } /* inphoneticextensionssupplement */,
- { 0, 184, 5214, 2, 6, UNI_KANGXI } /* iskangxi */,
- { 0, 9277, 8187, 3, 4, UNI_SC__HIRA } /* sc=hira */,
- { 0, 184, 133, 2, 4, UNI_M } /* ismark */,
- { 3, 7188, 0, 10, 0, UNI_KHAR } /* kharoshthi */,
- { 0, 2280, 8549, 4, 5, UNI_OLCK } /* isolchiki */,
- { 1, 184, 8131, 2, 4, UNI_DUPL } /* isdupl */,
- { 0, 9444, 7806, 4, 1, UNI_AGE__6 } /* age=6 */,
- { 0, 1417, 9186, 25, 4, UNI_CCC__31 } /* canonicalcombiningclass=ccc31 */,
- { 0, 1878, 0, 19, 0, UNI_CJKCOMPATIDEOGRAPHS } /* cjkcompatideographs */,
- { 2, 1417, 6642, 24, 11, UNI_CCC__DB } /* canonicalcombiningclass=doublebelow */,
- { 0, 4916, 8292, 3, 3, UNI_TAGB } /* istagb */,
- { 5, 10027, 6162, 3, 7, UNI_JG__SEMKATH } /* jg=semkath */,
- { 6, 184, 2061, 2, 4, UNI_MODI } /* ismodi */,
- { 4, 2784, 7497, 4, 7, UNI_ARABICPFA } /* inarabicpfa */,
- { 0, 8780, 5778, 6, 6, UNI_IPAEXT } /* block=ipaext */,
- { 1, 3836, 4149, 18, 3, UNI_SARB } /* scriptextensions=sarb */,
- { 1, 10027, 4225, 3, 16, UNI_JG__MANICHAEANTWENTY } /* jg=manichaeantwenty */,
- { 1, 21, 5242, 2, 14, UNI_LATINEXTC } /* inlatinextendedc */,
- { 1, 5986, 7787, 13, 8, UNI_NV__3_SLASH_2 } /* numericvalue=1.50e+00 */,
- { 2, 184, 7567, 2, 9, UNI_SIND } /* iskhudawadi */,
- { 21, 184, 3169, 2, 11, UNI_ETHIOPICSUP } /* isethiopicsup */,
- { 1, 2533, 982, 5, 24, UNI_ALPHABETICPF } /* inalphabeticpresentationforms */,
- { 2, 9310, 0, 5, 0, UNI_OGAM } /* ogham */,
- { 10, 5986, 9368, 13, 4, UNI_NV__1_SLASH_20 } /* numericvalue=1/20 */,
- { 1, 7088, 3349, 10, 18, UNI_BC__B } /* bidiclass=paragraphseparator */,
- { 5, 10048, 9392, 3, 4, UNI_NV__11_SLASH_2 } /* nv=11/2 */,
- { 5, 10024, 27, 3, 2, UNI_LOWERCASELETTER } /* gc=ll */,
- { 8, 9488, 749, 4, 16, UNI_ENCLOSEDALPHANUM } /* blk=enclosedalphanum */,
- { 0, 9071, 3, 4, 1, -UNI_XPOSIXXDIGIT } /* hex=f */,
- { 0, 9997, 0, 3, 0, UNI_bc_values_index } /* bc= */,
- { 0, 5564, 1, 14, 1, -UNI_QMARK } /* quotationmark=n */,
- { 0, 4113, 952, 3, 27, UNI_VSSUP } /* invariationselectorssupplement */,
- { 7, 382, 0, 4, 0, UNI_EGYP } /* egyp */,
- { 2, 7088, 5829, 10, 3, UNI_BC__RLO } /* bidiclass=rlo */,
- { 1, 9488, 183, 4, 34, UNI_MISCPICTOGRAPHS } /* blk=miscellaneoussymbolsandpictographs */,
- { 0, 8912, 0, 6, 0, UNI_KHOJ } /* khojki */,
- { 1, 9804, 0, 4, 0, UNI_TALE } /* tale */,
- { 0, 8688, 1007, 3, 16, UNI_ANCIENTGREEKMUSIC } /* isancientgreekmusic */,
- { 6, 8575, 0, 7, 0, UNI_patsyn_values_index } /* patsyn= */,
- { 2, 9768, 6385, 4, 12, UNI_GONM } /* scx=masaramgondi */,
- { 20, 3385, 36, 18, 1, UNI_RI } /* regionalindicator=t */,
- { 14, 21, 4129, 2, 6, UNI_LATIN1 } /* inlatin1 */,
- { 7, 8780, 446, 6, 32, UNI_IDEOGRAPHICSYMBOLS } /* block=ideographicsymbolsandpunctuation */,
- { 1, 8589, 7648, 7, 9, UNI_ITAL } /* script=olditalic */,
- { 4, 5791, 10072, 13, 3, UNI_JG__TAH } /* joininggroup=tah */,
- { 9, 1188, 4929, 3, 14, UNI_TAMILSUP } /* intamilsupplement */,
- { 0, 9488, 8337, 4, 7, UNI_INAVESTAN } /* blk=avestan */,
- { 0, 10033, 8449, 3, 6, UNI_LB__HY } /* lb=hyphen */,
- { 0, 10333, 2529, 3, 4, UNI_STERM } /* issterm */,
- { 11, 9508, 6719, 4, 11, UNI_CCC__8 } /* ccc=kanavoicing */,
- { 1, 3836, 9315, 17, 5, UNI_ORYA } /* scriptextensions=oriya */,
- { 4, 1287, 0, 2, 0, UNI_UPPERCASELETTER } /* lu */,
- { 4, 1417, 7859, 24, 3, UNI_WB__EB } /* canonicalcombiningclass=200 */,
- { 10, 184, 478, 2, 31, UNI_MATHALPHANUM } /* ismathematicalalphanumericsymbols */,
- { 18, 10033, 202, 3, 2, UNI_LB__SA } /* lb=sa */,
- { 0, 1417, 9472, 24, 4, UNI_WB__EB } /* canonicalcombiningclass=atbl */,
- { 0, 10296, 1823, 7, 5, UNI_POSIXLOWER } /* isposixlower */,
- { 1, 1417, 9141, 25, 4, UNI_CCC__22 } /* canonicalcombiningclass=ccc22 */,
- { 1, 10288, 10308, 8, 5, UNI_XPOSIXPRINT } /* isxposixprint */,
- { 0, 113, 0, 25, 0, UNI_DIACRITICALS } /* combiningdiacriticalmarks */,
- { 2, 7218, 42, 10, 2, UNI_LB__CJ } /* linebreak=cj */,
- { 20, 2287, 0, 7, 0, UNI_SINH } /* sinhala */,
- { 6, 9768, 9588, 4, 4, UNI_HMNG } /* scx=hmng */,
- { 4, 2280, 6852, 3, 10, UNI_LO } /* isotherletter */,
- { 0, 6205, 0, 12, 0, UNI_ideo_values_index } /* ideographic= */,
- { 8, 8780, 7139, 7, 9, UNI_COMPATJAMO } /* block=compatjamo */,
- { 0, 9488, 779, 4, 30, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* blk=symbolsandpictographsextendeda */,
- { 0, 10027, 4177, 3, 16, UNI_JG__MANICHAEANDALETH } /* jg=manichaeandaleth */,
- { 3, 10024, 1910, 3, 2, UNI_CN } /* gc=cn */,
- { 0, 1188, 3458, 3, 17, UNI_TAIXUANJING } /* intaixuanjingsymbols */,
- { 0, 9640, 26, 4, 1, UNI_LOE } /* loe=y */,
- { 2, 8688, 1371, 4, 22, UNI_ARABICPFA } /* isarabicpresentationformsa */,
- { 0, 8589, 7660, 7, 4, UNI_SC__PERM } /* script=perm */,
- { 3, 8852, 9836, 6, 4, UNI_CWKCF } /* cwkcf=true */,
- { 0, 1845, 0, 5, 0, UNI_TITLE } /* title */,
- { 70, 5986, 7875, 13, 8, UNI_NV__1_SLASH_32 } /* numericvalue=3.13e-02 */,
- { 1, 1812, 0, 21, 0, UNI_CWL } /* changeswhenlowercased */,
- { 13, 9548, 0, 4, 0, UNI_DSRT } /* dsrt */,
- { 0, 1269, 26, 25, 1, UNI_COMPEX } /* fullcompositionexclusion=y */,
- { 1, 8780, 8227, 6, 8, UNI_KANAEXTA } /* block=kanaexta */,
- { 0, 3836, 9245, 17, 5, UNI_DOGR } /* scriptextensions=dogra */,
- { 0, 5804, 0, 13, 0, UNI_KANAEXTA } /* kanaextendeda */,
- { 4, 1966, 1244, 22, 9, UNI_INSC__CONSONANT } /* indicsyllabiccategory=consonant */,
- { 1, 3836, 1218, 17, 8, UNI_KANA } /* scriptextensions=katakana */,
- { 0, 9277, 9684, 3, 4, UNI_NEWA } /* sc=newa */,
- { 5, 7155, 6194, 3, 5, UNI_HEBR } /* ishebrew */,
- { 0, 3836, 9896, 17, 4, UNI_ZYYY } /* scriptextensions=zyyy */,
- { 28, 4791, 2338, 10, 11, UNI_MERO } /* inmeroitichieroglyphs */,
- { 1, 6609, 3, 11, 1, -UNI_DEP } /* deprecated=f */,
- { 0, 184, 3223, 2, 18, UNI_INPUNCTUATION } /* isgeneralpunctuation */,
- { 0, 8780, 4973, 6, 15, UNI_VEDICEXT } /* block=vedicextensions */,
- { 8, 9488, 7069, 5, 9, UNI_ASCII } /* blk=basiclatin */,
- { 1, 6505, 0, 8, 0, UNI_PHAISTOS } /* phaistos */,
- { 0, 8780, 7458, 6, 10, UNI_YIRADICALS } /* block=yiradicals */,
- { 4, 7621, 0, 9, 0, UNI_NBAT } /* nabataean */,
- { 1, 5986, 8732, 13, 4, UNI_NV__5000 } /* numericvalue=5000 */,
- { 1, 8589, 9476, 7, 4, UNI_AVST } /* script=avst */,
- { 0, 8966, 10135, 6, 3, UNI_NFDQC__Y } /* nfdqc=yes */,
- { 2, 8780, 3937, 6, 11, UNI_BOPOMOFOEXT } /* block=bopomofoext */,
- { 2, 21, 1007, 3, 16, UNI_ANCIENTGREEKMUSIC } /* inancientgreekmusic */,
- { 2, 10048, 9910, 3, 3, UNI_NV__1_SLASH_9 } /* nv=1/9 */,
- { 0, 1417, 8831, 24, 3, UNI_CCC__132 } /* canonicalcombiningclass=132 */,
- { 1, 10033, 395, 3, 2, UNI_LB__GL } /* lb=gl */,
- { 3, 184, 8906, 2, 6, UNI_KANBUN } /* iskanbun */,
- { 0, 8589, 865, 10, 1, UNI_SHAW } /* script=shaw */,
- { 5, 9277, 9008, 3, 6, UNI_SC__THAA } /* sc=thaana */,
- { 2, 10048, 8750, 3, 2, UNI_NV__80 } /* nv=80 */,
- { 0, 1631, 0, 18, 0, UNI_GEOMETRICSHAPESEXT } /* geometricshapesext */,
- { 33, 10327, 0, 4, 0, UNI_PE } /* ispe */,
- { 1, 8780, 5960, 6, 13, UNI_MISCTECHNICAL } /* block=misctechnical */,
- { 2, 184, 867, 2, 28, UNI_PHONETICEXTSUP } /* isphoneticextensionssupplement */,
- { 0, 9488, 7630, 4, 9, UNI_INNEWTAILUE } /* blk=newtailue */,
- { 0, 9277, 8315, 3, 8, UNI_UGAR } /* sc=ugaritic */,
- { 1, 8884, 0, 4, 0, UNI_ext_values_index } /* ext= */,
- { 0, 184, 720, 3, 8, UNI_XSUX } /* iscuneiform */,
- { 0, 9275, 2844, 5, 10, UNI_INSC__TONELETTER } /* insc=toneletter */,
- { 0, 5791, 5420, 13, 4, UNI_JG__TETH } /* joininggroup=teth */,
- { 1, 21, 5200, 2, 14, UNI_KANASUP } /* inkanasupplement */,
- { 3, 186, 0, 2, 0, UNI_CE } /* ce */,
- { 4, 9250, 26, 5, 1, UNI_EMOD } /* emod=y */,
- { 1, 9235, 10135, 5, 3, UNI_CWCM } /* cwcm=yes */,
- { 1, 2061, 0, 14, 0, UNI_LM } /* modifierletter */,
- { 4, 9768, 9700, 4, 4, UNI_OLCK } /* scx=olck */,
- { 0, 3382, 1, 3, 1, -UNI_CE } /* ce=n */,
- { 20, 9270, 8583, 3, 6, UNI_INPHAGSPA } /* inphagspa */,
- { 1, 7218, 6587, 10, 11, UNI_LB__BB } /* linebreak=breakbefore */,
- { 0, 9768, 8491, 4, 7, UNI_MARC } /* scx=marchen */,
- { 0, 9444, 9856, 4, 4, UNI_AGE__13 } /* age=v130 */,
- { 0, 7418, 3, 10, 1, -UNI_XPOSIXUPPER } /* uppercase=f */,
- { 1, 7651, 0, 4, 0, UNI_ITAL } /* ital */,
- { 3, 184, 43, 3, 8, UNI_CJKCOMPAT } /* iscjkcompat */,
- { 1, 3836, 9756, 17, 4, UNI_RUNR } /* scriptextensions=runr */,
- { 2, 9277, 8924, 3, 6, UNI_LEPC } /* sc=lepcha */,
- { 0, 9768, 3785, 4, 4, UNI_MANI } /* scx=mani */,
- { 0, 184, 510, 3, 19, UNI_CJK } /* iscjkunifiedideographs */,
- { 1, 10027, 5172, 3, 14, UNI_JG__HAMZAONHEHGOAL } /* jg=hamzaonhehgoal */,
- { 4, 9492, 0, 4, 0, UNI_bpt_values_index } /* bpt= */,
- { 13, 4791, 6411, 4, 10, UNI_INMENDEKIKAKUI } /* inmendekikakui */,
- { 3, 9768, 6792, 5, 3, UNI_SAMR } /* scx=samr */,
- { 2, 5791, 9648, 13, 4, UNI_JG__MEEM } /* joininggroup=meem */,
- { 0, 9768, 9804, 4, 4, UNI_TALE } /* scx=tale */,
- { 1, 9488, 1465, 4, 24, UNI_DIACRITICALSFORSYMBOLS } /* blk=combiningmarksforsymbols */,
- { 8, 10048, 10138, 3, 2, UNI_NV__38 } /* nv=38 */,
- { 0, 3379, 10183, 5, 4, UNI_XPOSIXSPACE } /* spaceperl */,
- { 5, 2224, 924, 3, 27, UNI_SUPPUAB } /* insupplementaryprivateuseareab */,
- { 1, 8589, 8618, 8, 3, UNI_SOYO } /* script=soyo */,
- { 8, 4838, 26, 15, 1, UNI_NFKCQC__Y } /* nfkcquickcheck=y */,
- { 10, 3836, 2913, 18, 3, UNI_SUND } /* scriptextensions=sund */,
- { 1, 1417, 7814, 24, 1, UNI_CCC__7 } /* canonicalcombiningclass=7 */,
- { 34, 1417, 78, 24, 2, UNI_CCC__AR } /* canonicalcombiningclass=ar */,
- { 0, 10333, 3895, 3, 3, UNI_SGNW } /* issgnw */,
- { 1, 184, 7139, 3, 9, UNI_COMPATJAMO } /* iscompatjamo */,
- { 6, 1186, 0, 2, 0, UNI_PO } /* po */,
- { 40, 10048, 9108, 3, 2, UNI_NV__15 } /* nv=15 */,
- { 0, 9488, 1906, 4, 16, UNI_INDICNUMBERFORMS } /* blk=indicnumberforms */,
- { 1, 9351, 9255, 4, 5, -UNI_IDS } /* ids=false */,
- { 32, 3421, 0, 4, 0, UNI_RUMI } /* rumi */,
- { 21, 9576, 0, 4, 0, UNI_GURU } /* guru */,
- { 10, 10048, 7899, 3, 8, UNI_NV__7_SLASH_2 } /* nv=3.50e+00 */,
- { 4, 184, 7594, 2, 9, UNI_LATINEXTD } /* islatinextd */,
- { 1, 5986, 10144, 13, 2, UNI_NV__45 } /* numericvalue=45 */,
- { 58, 9768, 8912, 4, 4, UNI_KHOJ } /* scx=khoj */,
- { 0, 3836, 9310, 17, 5, UNI_OGAM } /* scriptextensions=ogham */,
- { 0, 9351, 36, 4, 1, UNI_IDS } /* ids=t */,
- { 16, 8864, 3, 6, 1, -UNI_EMOJI } /* emoji=f */,
- { 1, 1417, 9181, 25, 4, UNI_CCC__30 } /* canonicalcombiningclass=ccc30 */,
- { 0, 184, 8407, 2, 7, UNI_DSRT } /* isdeseret */,
- { 0, 9444, 7814, 4, 1, UNI_AGE__7 } /* age=7 */,
- { 14, 7088, 37, 10, 2, UNI_BC__EN } /* bidiclass=en */,
- { 16, 184, 3115, 2, 4, UNI_DEVA } /* isdeva */,
- { 0, 8589, 3785, 7, 10, UNI_SC__MANI } /* script=manichaean */,
- { 8, 10296, 5039, 7, 6, UNI_POSIXXDIGIT } /* isposixxdigit */,
- { 2, 9250, 0, 10, 0, -UNI_EMOD } /* emod=false */,
- { 2, 9277, 2429, 3, 20, UNI_PHLI } /* sc=inscriptionalpahlavi */,
- { 6, 1417, 7874, 24, 2, UNI_CCC__23 } /* canonicalcombiningclass=23 */,
- { 0, 9488, 1700, 4, 23, UNI_SHORTHANDFORMATCONTROLS } /* blk=shorthandformatcontrols */,
- { 32, 9277, 8123, 3, 4, UNI_SC__BUGI } /* sc=bugi */,
- { 10, 4033, 9503, 16, 2, UNI_MC } /* generalcategory=mc */,
- { 0, 9872, 0, 4, 0, UNI_XPEO } /* xpeo */,
- { 20, 9540, 9836, 4, 4, UNI_DIA } /* dia=true */,
- { 0, 2912, 0, 12, 0, UNI_SUNDANESESUP } /* sundanesesup */,
- { 0, 7218, 5564, 10, 9, UNI_LB__QU } /* linebreak=quotation */,
- { 6, 9768, 7168, 4, 10, UNI_DIAK } /* scx=divesakuru */,
- { 0, 1465, 0, 24, 0, UNI_DIACRITICALSFORSYMBOLS } /* combiningmarksforsymbols */,
- { 16, 3836, 8936, 17, 6, UNI_LYCI } /* scriptextensions=lycian */,
- { 8, 8589, 2409, 7, 4, UNI_SC__GLAG } /* script=glag */,
- { 32, 9768, 9604, 4, 4, UNI_KHMR } /* scx=khmr */,
- { 17, 8780, 3768, 6, 17, UNI_LETTERLIKESYMBOLS } /* block=letterlikesymbols */,
- { 2, 8694, 0, 7, 0, UNI_wspace_values_index } /* wspace= */,
- { 7, 8978, 10135, 6, 3, UNI__PERL_PATWS } /* patws=yes */,
- { 5, 9275, 2369, 5, 20, UNI_INSC__CONSONANTPLACEHOLDER } /* insc=consonantplaceholder */,
- { 1, 9768, 8291, 4, 8, UNI_TAGB } /* scx=tagbanwa */,
- { 3, 3133, 0, 17, 0, UNI_EBASE } /* emojimodifierbase */,
- { 0, 7218, 83, 10, 2, UNI_LB__CM } /* linebreak=cm */,
- { 0, 9277, 9245, 3, 4, UNI_SC__DOGR } /* sc=dogr */,
- { 0, 8780, 6193, 6, 6, UNI_INHEBREW } /* block=hebrew */,
- { 1, 10288, 9877, 3, 3, UNI_XSUX } /* isxsux */,
- { 0, 1417, 8793, 25, 5, UNI_CCC__103 } /* canonicalcombiningclass=ccc103 */,
- { 16, 184, 3768, 2, 17, UNI_LETTERLIKESYMBOLS } /* isletterlikesymbols */,
- { 0, 8780, 7675, 6, 9, UNI_PALM } /* block=palmyrene */,
- { 0, 8780, 8582, 6, 7, UNI_INPHAGSPA } /* block=phagspa */,
- { 0, 3115, 0, 4, 0, UNI_DEVA } /* deva */,
- { 0, 1552, 4943, 9, 15, UNI_TITLE } /* category=titlecaseletter */,
- { 1, 8780, 8428, 6, 7, UNI_INGRANTHA } /* block=grantha */,
- { 0, 8435, 3, 7, 1, -UNI_GRBASE } /* grbase=f */,
- { 2, 9768, 9480, 4, 4, UNI_BATK } /* scx=batk */,
- { 0, 8589, 9820, 7, 4, UNI_TFNG } /* script=tfng */,
- { 4, 10132, 5012, 3, 2, UNI_WB__SQ } /* wb=sq */,
- { 0, 10027, 10045, 3, 3, UNI_JG__MIM } /* jg=mim */,
- { 12, 7218, 34, 10, 2, UNI_LB__EX } /* linebreak=ex */,
- { 0, 1790, 0, 22, 0, UNI_cwcm_values_index } /* changeswhencasemapped= */,
- { 8, 4097, 0, 16, 0, UNI_HIGHPUSURROGATES } /* highpusurrogates */,
- { 4, 1417, 3572, 24, 9, UNI_CCC__BL } /* canonicalcombiningclass=belowleft */,
- { 2, 6609, 9836, 11, 4, UNI_DEP } /* deprecated=true */,
- { 0, 3097, 4017, 18, 3, UNI_DT__FIN } /* decompositiontype=fin */,
- { 0, 8589, 9572, 7, 4, UNI_SC__GUJR } /* script=gujr */,
- { 2, 1033, 0, 11, 0, UNI_ENCLOSEDCJK } /* enclosedcjk */,
- { 2, 1591, 3684, 3, 16, UNI_ETHIOPICEXTA } /* inethiopicextendeda */,
- { 2, 1790, 9836, 22, 4, UNI_CWCM } /* changeswhencasemapped=true */,
- { 1, 1417, 9146, 25, 4, UNI_CCC__23 } /* canonicalcombiningclass=ccc23 */,
- { 0, 9345, 36, 5, 1, UNI_XIDC } /* xidc=t */,
- { 2, 9277, 9584, 3, 4, UNI_HLUW } /* sc=hluw */,
- { 32, 8858, 36, 6, 1, UNI_ECOMP } /* ecomp=t */,
- { 0, 184, 5739, 2, 12, UNI_GRBASE } /* isgraphemebase */,
- { 5, 184, 4161, 2, 16, UNI_LINEARBSYLLABARY } /* islinearbsyllabary */,
- { 0, 184, 17, 3, 1, UNI_CO } /* isco */,
- { 0, 1966, 4417, 22, 16, UNI_INSC__VOWELINDEPENDENT } /* indicsyllabiccategory=vowelindependent */,
- { 0, 3836, 5550, 17, 14, UNI_PHLP } /* scriptextensions=psalterpahlavi */,
- { 1, 1025, 0, 2, 0, UNI_NO } /* no */,
- { 0, 5986, 7883, 13, 8, UNI_NV__1_SLASH_320 } /* numericvalue=3.13e-03 */,
- { 1, 5791, 9456, 13, 4, UNI_JG__ALEF } /* joininggroup=alef */,
- { 1, 8589, 7188, 7, 4, UNI_KHAR } /* script=khar */,
- { 0, 3836, 8888, 17, 4, UNI_HATR } /* scriptextensions=hatr */,
- { 0, 9640, 10135, 4, 3, UNI_LOE } /* loe=yes */,
- { 11, 7228, 9255, 10, 5, -UNI_XPOSIXLOWER } /* lowercase=false */,
- { 1, 8512, 9295, 7, 5, UNI_NFCQC__M } /* nfkcqc=maybe */,
- { 33, 9508, 7859, 4, 2, UNI_CCC__20 } /* ccc=20 */,
- { 8, 1856, 26, 22, 1, UNI_CWU } /* changeswhenuppercased=y */,
- { 1, 8780, 9085, 6, 5, UNI_INBATAK } /* block=batak */,
- { 9, 9536, 1025, 4, 2, -UNI_DEP } /* dep=no */,
- { 17, 8688, 4435, 4, 13, UNI_ARABICEXTA } /* isarabicextendeda */,
- { 0, 8780, 7630, 6, 9, UNI_INNEWTAILUE } /* block=newtailue */,
- { 1, 10024, 4305, 3, 16, UNI_PO } /* gc=otherpunctuation */,
- { 0, 8997, 1025, 5, 2, -UNI_TERM } /* term=no */,
- { 65, 6554, 10135, 11, 3, UNI_IDC } /* idcontinue=yes */,
- { 32, 9508, 9211, 5, 4, UNI_CCC__36 } /* ccc=ccc36 */,
- { 10, 10033, 6697, 3, 11, UNI_LB__IN } /* lb=inseperable */,
- { 1, 8936, 0, 4, 0, UNI_LYCI } /* lyci */,
- { 2, 1269, 0, 24, 0, UNI_COMPEX } /* fullcompositionexclusion */,
- { 0, 8589, 8291, 7, 4, UNI_SC__TAGB } /* script=tagb */,
- { 1, 8780, 4161, 6, 16, UNI_LINEARBSYLLABARY } /* block=linearbsyllabary */,
- { 1, 184, 9740, 2, 4, UNI_QAAI } /* isqaai */,
- { 2, 8780, 8219, 6, 8, UNI_INJAVANESE } /* block=javanese */,
- { 0, 8780, 2224, 6, 21, UNI_ININSCRIPTIONALPARTHIAN } /* block=inscriptionalparthian */,
- { 3, 2874, 0, 19, 0, UNI_OTTOMANSIYAQNUMBERS } /* ottomansiyaqnumbers */,
- { 6, 3259, 1, 18, 1, -UNI_IDSB } /* idsbinaryoperator=n */,
- { 8, 2569, 3504, 20, 7, UNI_VO__R } /* verticalorientation=rotated */,
- { 34, 9768, 7188, 4, 10, UNI_KHAR } /* scx=kharoshthi */,
- { 16, 184, 1025, 2, 2, UNI_NO } /* isno */,
- { 1, 10024, 133, 3, 4, UNI_M } /* gc=mark */,
- { 2, 10024, 45, 3, 2, UNI_CO } /* gc=co */,
- { 1, 9488, 3768, 4, 17, UNI_LETTERLIKESYMBOLS } /* blk=letterlikesymbols */,
- { 81, 2224, 4338, 3, 15, UNI_SUPMATHOPERATORS } /* insupmathoperators */,
- { 12, 2224, 317, 3, 32, UNI_SUPMATHOPERATORS } /* insupplementalmathematicaloperators */,
- { 8, 7088, 4493, 10, 15, UNI_BC__CS } /* bidiclass=commonseparator */,
- { 1, 10048, 9380, 3, 3, UNI_NV__1_SLASH_8 } /* nv=1/8 */,
- { 1, 184, 1791, 3, 20, UNI_CWCM } /* ischangeswhencasemapped */,
- { 2, 1834, 0, 21, 0, UNI_CWT } /* changeswhentitlecased */,
- { 1, 9277, 7278, 3, 10, UNI_XPEO } /* sc=oldpersian */,
- { 0, 3097, 7, 18, 3, UNI_DT__CAN } /* decompositiontype=can */,
- { 20, 184, 7358, 2, 10, UNI_SAUR } /* issaurashtra */,
- { 0, 5116, 10135, 14, 3, UNI_EMOD } /* emojimodifier=yes */,
- { 3, 10296, 3, 3, 1, UNI_PF } /* ispf */,
- { 0, 10132, 18, 3, 2, UNI_RI } /* wb=ri */,
- { 7, 8512, 0, 7, 0, UNI_nfkcqc_values_index } /* nfkcqc= */,
- { 16, 9488, 2912, 4, 9, UNI_INSUNDANESE } /* blk=sundanese */,
- { 4, 9768, 8187, 4, 8, UNI_HIRA } /* scx=hiragana */,
- { 2, 9608, 0, 4, 0, UNI_KITS } /* kits */,
- { 5, 9768, 5550, 4, 14, UNI_PHLP } /* scx=psalterpahlavi */,
- { 1, 1552, 4017, 9, 16, UNI_PF } /* category=finalpunctuation */,
- { 0, 9512, 0, 4, 0, UNI_CHRS } /* chrs */,
- { 1, 7325, 10102, 3, 3, UNI_IN__5_DOT_2 } /* in=v52 */,
- { 32, 9277, 8115, 3, 8, UNI_BASS } /* sc=bassavah */,
- { 0, 7218, 8701, 10, 7, UNI_LB__ZW } /* linebreak=zwspace */,
- { 4, 3836, 7567, 17, 9, UNI_SIND } /* scriptextensions=khudawadi */,
- { 4, 10048, 7814, 3, 1, UNI_NV__7 } /* nv=7 */,
- { 0, 9768, 8942, 4, 6, UNI_LYDI } /* scx=lydian */,
- { 2, 8930, 0, 6, 0, UNI_lower_values_index } /* lower= */,
- { 5, 9768, 2913, 5, 8, UNI_SUND } /* scx=sundanese */,
- { 0, 184, 2950, 2, 19, UNI_SUPARROWSB } /* issupplementalarrowsb */,
- { 0, 3836, 9008, 17, 4, UNI_THAA } /* scriptextensions=thaa */,
- { 0, 10048, 7971, 3, 8, UNI_NV__7_SLASH_12 } /* nv=5.83e-01 */,
- { 12, 8589, 8414, 7, 4, UNI_ELBA } /* script=elba */,
- { 0, 7738, 26, 9, 1, UNI_XIDS } /* xidstart=y */,
- { 1, 8400, 10135, 7, 3, UNI_COMPEX } /* compex=yes */,
- { 0, 9596, 6741, 4, 11, UNI_GCB__L } /* hst=leadingjamo */,
- { 1, 8780, 4401, 6, 16, UNI_TANGUTSUP } /* block=tangutsupplement */,
- { 1, 8589, 2913, 8, 3, UNI_SUND } /* script=sund */,
- { 0, 10182, 6554, 6, 6, UNI__PERL_IDCONT } /* _perl_idcont */,
- { 1, 9488, 9828, 4, 4, UNI_INTHAI } /* blk=thai */,
- { 1, 8589, 9504, 7, 4, UNI_CANS } /* script=cans */,
- { 2, 8589, 9496, 7, 4, UNI_SC__BUHD } /* script=buhd */,
- { 1, 8780, 4145, 6, 16, UNI_LINEARBIDEOGRAMS } /* block=linearbideograms */,
- { 0, 8780, 8477, 6, 7, UNI_INMAKASAR } /* block=makasar */,
- { 0, 1552, 1587, 9, 1, UNI_Z } /* category=z */,
- { 1, 10048, 10140, 3, 2, UNI_NV__39 } /* nv=39 */,
- { 2, 9588, 0, 4, 0, UNI_HMNG } /* hmng */,
- { 0, 2760, 6763, 19, 11, UNI_LB__H3 } /* hangulsyllabletype=lvtsyllable */,
- { 3, 8978, 1, 6, 1, -UNI__PERL_PATWS } /* patws=n */,
- { 5, 5791, 9355, 13, 5, UNI_JG__ZHAIN } /* joininggroup=zhain */,
- { 2, 8589, 2485, 7, 4, UNI_SC__MONG } /* script=mong */,
- { 0, 9556, 24, 4, 1, UNI_GCB__L } /* gcb=l */,
- { 2, 9444, 10087, 4, 3, UNI_AGE__3_DOT_2 } /* age=v32 */,
- { 1, 1417, 7806, 24, 1, UNI_CCC__6 } /* canonicalcombiningclass=6 */,
- { 0, 5986, 8750, 13, 4, UNI_NV__8000 } /* numericvalue=8000 */,
- { 3, 9488, 1631, 4, 15, UNI_GEOMETRICSHAPES } /* blk=geometricshapes */,
- { 5, 8780, 2409, 6, 20, UNI_GLAGOLITICSUP } /* block=glagoliticsupplement */,
- { 1, 8780, 7358, 6, 10, UNI_INSAURASHTRA } /* block=saurashtra */,
- { 3, 4791, 4290, 3, 15, UNI_MYANMAREXTB } /* inmyanmarextendedb */,
- { 16, 7076, 8116, 3, 7, UNI_INBASSAVAH } /* inbassavah */,
- { 1, 9528, 9836, 4, 4, UNI_CWU } /* cwu=true */,
- { 5, 4033, 5497, 16, 11, UNI_MC } /* generalcategory=spacingmark */,
- { 0, 5986, 10142, 13, 2, UNI_NV__44 } /* numericvalue=44 */,
- { 4, 8780, 0, 12, 0, UNI_INCARIAN } /* block=carian */,
- { 2, 9277, 8582, 3, 7, UNI_SC__PHAG } /* sc=phagspa */,
- { 0, 9277, 9516, 3, 4, UNI_SC__CPRT } /* sc=cprt */,
- { 5, 9444, 7781, 4, 1, UNI_AGE__4 } /* age=4 */,
- { 0, 4113, 6013, 3, 12, UNI_VERTICALFORMS } /* inverticalforms */,
- { 0, 5791, 3, 15, 1, UNI_JG__KAF } /* joininggroup=kaf */,
- { 12, 10006, 1025, 3, 2, -UNI_DI } /* di=no */,
- { 34, 1505, 5755, 5, 10, UNI_GREEKEXT } /* ingreekextended */,
- { 2, 8589, 7675, 7, 4, UNI_PALM } /* script=palm */,
- { 1, 1417, 7858, 24, 2, UNI_CCC__22 } /* canonicalcombiningclass=22 */,
- { 17, 1417, 4912, 24, 2, UNI_CCC__0 } /* canonicalcombiningclass=nr */,
- { 0, 7155, 8443, 3, 6, UNI_HANO } /* ishanunoo */,
- { 2, 6061, 1025, 12, 2, -UNI_BIDIC } /* bidicontrol=no */,
- { 1, 7438, 72, 10, 2, UNI_WB__LE } /* wordbreak=le */,
- { 0, 8997, 0, 5, 0, UNI_term_values_index } /* term= */,
- { 0, 10290, 5718, 6, 5, UNI_XPOSIXALNUM } /* xposixalnum */,
- { 7, 10048, 9424, 3, 4, UNI_NV__3_SLASH_64 } /* nv=3/64 */,
- { 0, 478, 0, 31, 0, UNI_MATHALPHANUM } /* mathematicalalphanumericsymbols */,
- { 0, 1979, 7, 10, 1, UNI_CASEDLETTER } /* category=lc */,
- { 0, 1114, 9836, 26, 4, UNI_CWKCF } /* changeswhennfkccasefolded=true */,
- { 1, 21, 1677, 2, 14, UNI_LATINEXTA } /* inlatinextendeda */,
- { 2, 9997, 3349, 3, 18, UNI_BC__B } /* bc=paragraphseparator */,
- { 0, 42, 0, 3, 0, UNI_CJK } /* cjk */,
- { 15, 10333, 1176, 3, 3, UNI_SORA } /* issora */,
- { 10, 9488, 4868, 4, 15, UNI_NARB } /* blk=oldnortharabian */,
- { 15, 9488, 2855, 4, 9, UNI_INMONGOLIAN } /* blk=mongolian */,
- { 0, 2203, 0, 4, 0, UNI_HAN } /* hani */,
- { 0, 4116, 447, 3, 17, UNI_IDEOGRAPHICSYMBOLS } /* isideographicsymbols */,
- { 5, 10012, 865, 3, 1, UNI_EA__W } /* ea=w */,
- { 3, 8688, 29, 4, 4, UNI_ARAB } /* isarabic */,
- { 1, 8589, 4273, 7, 7, UNI_SC__MYMR } /* script=myanmar */,
- { 12, 7218, 6697, 10, 11, UNI_LB__IN } /* linebreak=inseperable */,
- { 1, 6420, 9311, 3, 4, UNI_INOGHAM } /* inogham */,
- { 5, 7228, 26, 10, 1, UNI_XPOSIXLOWER } /* lowercase=y */,
- { 0, 7218, 751, 10, 2, UNI_LB__CL } /* linebreak=cl */,
- { 8, 9508, 1179, 4, 2, UNI_CCC__BL } /* ccc=bl */,
- { 19, 2760, 5973, 19, 13, UNI_HST__NA } /* hangulsyllabletype=notapplicable */,
- { 8, 8589, 2140, 7, 8, UNI_SC__CYRL } /* script=cyrillic */,
- { 0, 5739, 1025, 13, 2, -UNI_GRBASE } /* graphemebase=no */,
- { 0, 3133, 36, 18, 1, UNI_EBASE } /* emojimodifierbase=t */,
- { 0, 184, 1631, 2, 23, UNI_GEOMETRICSHAPESEXT } /* isgeometricshapesextended */,
- { 1, 8589, 4448, 7, 4, UNI_BAMU } /* script=bamu */,
- { 4, 9488, 3043, 4, 18, UNI_HALFMARKS } /* blk=combininghalfmarks */,
- { 2, 1393, 0, 24, 0, UNI_ARABICPFB } /* arabicpresentationformsb */,
- { 0, 9277, 4868, 3, 15, UNI_NARB } /* sc=oldnortharabian */,
- { 1, 10290, 62, 6, 5, UNI_XPOSIXGRAPH } /* xposixgraph */,
- { 0, 10027, 5420, 3, 4, UNI_JG__TETH } /* jg=teth */,
- { 2, 184, 4569, 3, 14, UNI_CURRENCYSYMBOLS } /* iscurrencysymbols */,
- { 2, 10024, 106, 3, 6, UNI_S } /* gc=symbol */,
- { 1, 10048, 8756, 3, 5, UNI_NV__90000 } /* nv=90000 */,
- { 0, 3836, 3751, 17, 17, UNI_KITS } /* scriptextensions=khitansmallscript */,
- { 0, 184, 3080, 3, 17, UNI_COPTICEPACTNUMBERS } /* iscopticepactnumbers */,
- { 6, 8780, 8179, 6, 8, UNI_INGURMUKHI } /* block=gurmukhi */,
- { 3, 3439, 0, 18, 0, UNI_SMALLKANAEXT } /* smallkanaextension */,
- { 6, 1537, 2994, 24, 13, UNI_INPC__BOTTOMANDLEFT } /* indicpositionalcategory=bottomandleft */,
- { 2, 1417, 9919, 24, 3, UNI_CCC__202 } /* canonicalcombiningclass=202 */,
- { 64, 6231, 1467, 4, 22, UNI_DIACRITICALSFORSYMBOLS } /* incombiningmarksforsymbols */,
- { 0, 8780, 1700, 6, 23, UNI_SHORTHANDFORMATCONTROLS } /* block=shorthandformatcontrols */,
- { 0, 21, 3549, 4, 8, UNI_ALCHEMICAL } /* inalchemical */,
- { 7, 21, 5284, 2, 7, UNI_LISUSUP } /* inlisusup */,
- { 1, 2224, 3440, 3, 17, UNI_SMALLKANAEXT } /* insmallkanaextension */,
- { 0, 184, 1, 3, 1, UNI_CN } /* iscn */,
- { 0, 10132, 400, 3, 6, UNI_WB__FO } /* wb=format */,
- { 1, 3836, 8942, 17, 6, UNI_LYDI } /* scriptextensions=lydian */,
- { 3, 5060, 0, 14, 0, UNI_ci_values_index } /* caseignorable= */,
- { 34, 9768, 3598, 4, 17, UNI_AGHB } /* scx=caucasianalbanian */,
- { 1, 8509, 751, 4, 28, UNI_ENCLOSEDALPHANUMSUP } /* inenclosedalphanumericsupplement */,
- { 11, 1822, 0, 2, 0, UNI_NL } /* nl */,
- { 8, 9277, 4703, 3, 15, UNI_ARMI } /* sc=imperialaramaic */,
- { 9, 8780, 5752, 6, 13, UNI_GREEKEXT } /* block=greekextended */,
- { 0, 8589, 8123, 7, 8, UNI_SC__BUGI } /* script=buginese */,
- { 6, 184, 3026, 3, 7, UNI_CHER } /* ischerokee */,
- { 0, 1537, 2549, 24, 12, UNI_INPC__TOPANDBOTTOM } /* indicpositionalcategory=topandbottom */,
- { 2, 9540, 1, 4, 1, -UNI_DIA } /* dia=n */,
- { 0, 7318, 10102, 10, 3, UNI_IN__5_DOT_2 } /* presentin=v52 */,
- { 0, 9508, 9468, 4, 4, UNI_CCC__216 } /* ccc=atar */,
- { 0, 184, 9560, 2, 4, UNI_GONG } /* isgong */,
- { 0, 2161, 0, 20, 0, UNI_EXTPICT } /* extendedpictographic */,
- { 0, 8768, 1025, 6, 2, -UNI_BIDIC } /* bidic=no */,
- { 14, 8780, 3295, 6, 9, UNI_LATINEXTA } /* block=latinexta */,
- { 2, 2280, 2875, 3, 18, UNI_OTTOMANSIYAQNUMBERS } /* isottomansiyaqnumbers */,
- { 3, 10296, 8979, 3, 4, UNI__PERL_PATWS } /* ispatws */,
- { 1, 9508, 7778, 4, 2, UNI_CCC__21 } /* ccc=21 */,
- { 3, 7325, 9397, 3, 3, UNI_IN__2_DOT_1 } /* in=2.1 */,
- { 4, 4868, 0, 15, 0, UNI_NARB } /* oldnortharabian */,
- { 32, 2098, 0, 21, 0, UNI_CJKCOMPATFORMS } /* cjkcompatibilityforms */,
- { 0, 3295, 0, 9, 0, UNI_LATINEXTA } /* latinexta */,
- { 3, 3836, 8123, 17, 8, UNI_BUGI } /* scriptextensions=buginese */,
- { 1, 9488, 3241, 4, 11, UNI_GEORGIANSUP } /* blk=georgiansup */,
- { 8, 1417, 8805, 25, 5, UNI_CCC__118 } /* canonicalcombiningclass=ccc118 */,
- { 2, 9277, 7666, 3, 9, UNI_ORKH } /* sc=oldturkic */,
- { 1, 8774, 10135, 6, 3, UNI_BIDIM } /* bidim=yes */,
- { 5, 8954, 0, 7, 0, -UNI__PERL_NCHAR } /* nchar=n */,
- { 0, 184, 1822, 2, 2, UNI_NL } /* isnl */,
- { 0, 10310, 8301, 4, 6, UNI_INTIFINAGH } /* intifinagh */,
- { 0, 8780, 114, 7, 24, UNI_DIACRITICALS } /* block=combiningdiacriticalmarks */,
- { 0, 1677, 0, 23, 0, UNI_LATINEXTADDITIONAL } /* latinextendedadditional */,
- { 3, 2161, 1, 21, 1, -UNI_EXTPICT } /* extendedpictographic=n */,
- { 2, 1552, 406, 9, 7, UNI_XPOSIXCNTRL } /* category=control */,
- { 11, 7218, 58, 10, 2, UNI_LB__ID } /* linebreak=id */,
- { 16, 4916, 1116, 3, 3, UNI_TANG } /* istang */,
- { 0, 5578, 495, 14, 7, UNI_SB__NU } /* sentencebreak=numeric */,
- { 0, 1417, 8825, 24, 3, UNI_CCC__130 } /* canonicalcombiningclass=130 */,
- { 1, 10288, 5039, 8, 6, UNI_XPOSIXXDIGIT } /* isxposixxdigit */,
- { 1, 9444, 9852, 4, 4, UNI_AGE__12_DOT_1 } /* age=v121 */,
- { 0, 9277, 9448, 3, 4, UNI_AGHB } /* sc=aghb */,
- { 0, 5986, 7827, 13, 8, UNI_NV__1_SLASH_5 } /* numericvalue=2.00e-01 */,
- { 3, 1188, 8653, 3, 6, UNI_INTAIVIET } /* intaiviet */,
- { 4, 2182, 5497, 21, 11, UNI_GCB__SM } /* graphemeclusterbreak=spacingmark */,
- { 1, 8589, 9676, 7, 4, UNI_NARB } /* script=narb */,
- { 2, 4369, 0, 6, 0, UNI_SYRC } /* syriac */,
- { 2, 4305, 0, 16, 0, UNI_PO } /* otherpunctuation */,
- { 0, 9524, 1025, 4, 2, -UNI_CWT } /* cwt=no */,
- { 2, 1966, 728, 22, 6, UNI_INSC__NUMBER } /* indicsyllabiccategory=number */,
- { 12, 2287, 0, 4, 0, UNI_SINH } /* sinh */,
- { 0, 10009, 5012, 3, 6, UNI_DT__SQR } /* dt=square */,
- { 0, 9488, 8421, 4, 7, UNI_INELYMAIC } /* blk=elymaic */,
- { 1, 9277, 7657, 3, 9, UNI_SC__PERM } /* sc=oldpermic */,
- { 2, 9340, 0, 5, 0, UNI_VSSUP } /* vssup */,
- { 1, 8882, 0, 6, 0, UNI_grext_values_index } /* grext= */,
- { 0, 9277, 8219, 3, 8, UNI_SC__JAVA } /* sc=javanese */,
- { 3, 5791, 2637, 13, 3, UNI_JG__YEH } /* joininggroup=yeh */,
- { 21, 3836, 8498, 17, 4, UNI_MULT } /* scriptextensions=mult */,
- { 5, 8774, 1, 6, 1, -UNI_BIDIM } /* bidim=n */,
- { 16, 1188, 9336, 3, 4, UNI_INTAKRI } /* intakri */,
- { 18, 10048, 7806, 3, 1, UNI_NV__6 } /* nv=6 */,
- { 1, 3836, 8131, 17, 8, UNI_DUPL } /* scriptextensions=duployan */,
- { 2, 5739, 1, 13, 1, -UNI_GRBASE } /* graphemebase=n */,
- { 1, 8978, 9836, 6, 4, UNI__PERL_PATWS } /* patws=true */,
- { 5, 9351, 1025, 4, 2, -UNI_IDS } /* ids=no */,
- { 1, 10033, 96, 3, 10, UNI_LB__AL } /* lb=alphabetic */,
- { 0, 7325, 10099, 3, 3, UNI_IN__5_DOT_1 } /* in=v51 */,
- { 0, 1537, 6621, 3, 5, UNI_DOMINO } /* indomino */,
- { 1, 9488, 719, 4, 9, UNI_INCUNEIFORM } /* blk=cuneiform */,
- { 10, 9488, 8603, 4, 7, UNI_SHAW } /* blk=shavian */,
- { 12, 9240, 0, 5, 0, UNI_dash_values_index } /* dash= */,
- { 5, 10027, 6373, 3, 12, UNI_JG__MANICHAEANPE } /* jg=manichaeanpe */,
- { 0, 1552, 4305, 9, 16, UNI_PO } /* category=otherpunctuation */,
- { 1, 184, 8115, 2, 8, UNI_BASS } /* isbassavah */,
- { 3, 8894, 36, 6, 1, UNI_JOINC } /* joinc=t */,
- { 0, 9488, 6409, 4, 12, UNI_INMENDEKIKAKUI } /* blk=mendekikakui */,
- { 0, 8449, 9255, 7, 5, -UNI_HYPHEN } /* hyphen=false */,
- { 0, 8762, 26, 6, 1, UNI_XPOSIXALPHA } /* alpha=y */,
- { 2, 9277, 7428, 3, 10, UNI_WARA } /* sc=warangciti */,
- { 0, 2569, 3493, 20, 18, UNI_VO__TR } /* verticalorientation=transformedrotated */,
- { 0, 3836, 8315, 17, 8, UNI_UGAR } /* scriptextensions=ugaritic */,
- { 0, 8589, 5843, 7, 9, UNI_SC__MLYM } /* script=malayalam */,
- { 1, 1585, 0, 14, 0, UNI_BYZANTINEMUSIC } /* byzantinemusic */,
- { 0, 10027, 8155, 3, 8, UNI_JG__FARSIYEH } /* jg=farsiyeh */,
- { 0, 6805, 287, 6, 29, UNI_MISCMATHSYMBOLSB } /* inmiscellaneousmathematicalsymbolsb */,
- { 2, 9488, 9310, 4, 5, UNI_INOGHAM } /* blk=ogham */,
- { 4, 6231, 3796, 3, 3, UNI_INCHAM } /* incham */,
- { 8, 184, 2931, 2, 19, UNI_SUPARROWSA } /* issupplementalarrowsa */,
- { 17, 7076, 7069, 3, 9, UNI_ASCII } /* inbasiclatin */,
- { 0, 1441, 0, 24, 0, UNI_CJKSYMBOLS } /* cjksymbolsandpunctuation */,
- { 2, 8589, 4145, 7, 7, UNI_SC__LINB } /* script=linearb */,
- { 4, 7660, 0, 4, 0, UNI_PERM } /* perm */,
- { 18, 9768, 3937, 4, 8, UNI_BOPO } /* scx=bopomofo */,
- { 0, 9277, 3079, 3, 4, UNI_SC__COPT } /* sc=copt */,
- { 3, 8617, 0, 7, 0, UNI_SOYO } /* soyombo */,
- { 2, 4916, 8300, 3, 7, UNI_TFNG } /* istifinagh */,
- { 2, 3836, 8912, 17, 4, UNI_KHOJ } /* scriptextensions=khoj */,
- { 13, 9508, 7859, 4, 3, UNI_WB__EB } /* ccc=200 */,
- { 0, 9768, 9732, 4, 4, UNI_PRTI } /* scx=prti */,
- { 0, 2784, 7506, 4, 7, UNI_ARABICPFB } /* inarabicpfb */,
- { 1, 6061, 0, 11, 0, UNI_BIDIC } /* bidicontrol */,
- { 0, 9444, 7469, 4, 1, UNI_AGE__5 } /* age=5 */,
- { 1, 9768, 9325, 4, 5, UNI_RUNR } /* scx=runic */,
- { 0, 6231, 2141, 3, 20, UNI_CYRILLICSUP } /* incyrillicsupplementary */,
- { 1, 8589, 9008, 7, 4, UNI_SC__THAA } /* script=thaa */,
- { 0, 184, 5040, 2, 5, UNI_XPOSIXDIGIT } /* isdigit */,
- { 1, 8589, 8876, 7, 6, UNI_GOTH } /* script=gothic */,
- { 8, 9768, 57, 4, 2, UNI_YI } /* scx=yi */,
- { 0, 4049, 0, 16, 0, UNI_GEORGIANEXT } /* georgianextended */,
- { 0, 1189, 495, 3, 2, UNI_NT__NU } /* nt=nu */,
- { 0, 3374, 36, 11, 1, UNI_XPOSIXSPACE } /* whitespace=t */,
- { 0, 206, 0, 2, 0, UNI_PI } /* pi */,
- { 2, 3379, 0, 5, 0, UNI_XPOSIXSPACE } /* space */,
- { 20, 3836, 9285, 17, 5, UNI_LIMB } /* scriptextensions=limbu */,
- { 5, 3836, 3169, 17, 4, UNI_ETHI } /* scriptextensions=ethi */,
- { 0, 5578, 34, 14, 6, UNI_SB__EX } /* sentencebreak=extend */,
- { 0, 3836, 7666, 17, 9, UNI_ORKH } /* scriptextensions=oldturkic */,
- { 0, 8780, 9325, 6, 5, UNI_INRUNIC } /* block=runic */,
- { 1, 9014, 0, 5, 0, UNI_UIDEO } /* uideo */,
- { 2, 10024, 406, 3, 7, UNI_XPOSIXCNTRL } /* gc=control */,
- { 8, 184, 3349, 2, 18, UNI_ZP } /* isparagraphseparator */,
- { 1, 10126, 3504, 3, 7, UNI_VO__R } /* vo=rotated */,
- { 0, 10009, 2569, 3, 8, UNI_DT__VERT } /* dt=vertical */,
- { 3, 5674, 3, 13, 1, -UNI_BIDIM } /* bidimirrored=f */,
- { 0, 9488, 951, 4, 28, UNI_VSSUP } /* blk=variationselectorssupplement */,
- { 37, 5324, 6279, 4, 10, UNI_MAHJONG } /* inmahjongtiles */,
- { 18, 9508, 8801, 4, 3, UNI_CCC__107 } /* ccc=107 */,
- { 0, 9768, 6884, 4, 11, UNI_HMNG } /* scx=pahawhhmong */,
- { 1, 5986, 10148, 13, 2, UNI_NV__47 } /* numericvalue=47 */,
- { 1, 8780, 5200, 6, 7, UNI_KANASUP } /* block=kanasup */,
- { 4, 9768, 0, 4, 0, UNI_scx_values_index } /* scx= */,
- { 28, 7738, 0, 4, 0, UNI_XIDS } /* xids */,
- { 0, 5778, 0, 13, 0, UNI_IPAEXT } /* ipaextensions */,
- { 2, 7738, 9836, 9, 4, UNI_XIDS } /* xidstart=true */,
- { 0, 1768, 9255, 22, 5, -UNI_CWCF } /* changeswhencasefolded=false */,
- { 0, 10048, 9913, 3, 3, UNI_NV__2_SLASH_3 } /* nv=2/3 */,
- { 2, 6609, 26, 11, 1, UNI_DEP } /* deprecated=y */,
- { 34, 21, 1007, 3, 26, UNI_ANCIENTGREEKMUSIC } /* inancientgreekmusicalnotation */,
- { 0, 2182, 5585, 21, 2, UNI_WB__EB } /* graphemeclusterbreak=eb */,
- { 0, 1988, 10135, 22, 3, UNI_LOE } /* logicalorderexception=yes */,
- { 0, 184, 3367, 2, 17, UNI__PERL_PATWS } /* ispatternwhitespace */,
- { 2, 3385, 26, 18, 1, UNI_RI } /* regionalindicator=y */,
- { 1, 184, 6012, 2, 13, UNI_VERTICALFORMS } /* isverticalforms */,
- { 1, 9270, 6885, 3, 10, UNI_INPAHAWHHMONG } /* inpahawhhmong */,
- { 1, 9768, 7428, 4, 4, UNI_WARA } /* scx=wara */,
- { 1, 8780, 2076, 6, 15, UNI_TRANSPORTANDMAP } /* block=transportandmap */,
- { 2, 78, 0, 4, 0, UNI_ARAB } /* arab */,
- { 0, 9275, 1489, 5, 24, UNI_INSC__CONSONANTSUCCEEDINGREPHA } /* insc=consonantsucceedingrepha */,
- { 12, 9277, 7660, 3, 4, UNI_SC__PERM } /* sc=perm */,
- { 3, 184, 1922, 2, 22, UNI_DIACRITICALSFORSYMBOLS } /* isdiacriticalsforsymbols */,
- { 2, 8589, 9283, 7, 4, UNI_PHLI } /* script=phli */,
- { 6, 10024, 1025, 3, 2, UNI_NO } /* gc=no */,
- { 0, 10009, 2569, 3, 4, UNI_DT__VERT } /* dt=vert */,
- { 6, 4033, 2349, 16, 20, UNI_PC } /* generalcategory=connectorpunctuation */,
- { 0, 10027, 5908, 3, 13, UNI_JG__MANICHAEANTAW } /* jg=manichaeantaw */,
- { 9, 10132, 1218, 3, 8, UNI_WB__KA } /* wb=katakana */,
- { 8, 7228, 0, 10, 0, UNI_lower_values_index } /* lowercase= */,
- { 0, 8780, 8841, 7, 5, UNI_INCHAKMA } /* block=chakma */,
- { 1, 184, 2, 3, 1, UNI_CI } /* isci */,
- { 0, 9768, 4928, 4, 5, UNI_TAML } /* scx=tamil */,
- { 3, 5746, 10135, 6, 3, UNI_EBASE } /* ebase=yes */,
- { 1, 9768, 1218, 4, 8, UNI_KANA } /* scx=katakana */,
- { 1, 2224, 4370, 3, 8, UNI_SYRIACSUP } /* insyriacsup */,
- { 0, 10024, 1822, 3, 2, UNI_NL } /* gc=nl */,
- { 16, 184, 1823, 2, 9, UNI_XPOSIXLOWER } /* islowercase */,
- { 16, 10048, 7979, 3, 8, UNI_NV__3_SLASH_5 } /* nv=6.00e-01 */,
- { 3, 3379, 1, 6, 1, -UNI_XPOSIXSPACE } /* space=n */,
- { 4, 1552, 1186, 9, 2, UNI_PO } /* category=po */,
- { 0, 6623, 2876, 4, 17, UNI_OTTOMANSIYAQNUMBERS } /* inottomansiyaqnumbers */,
- { 17, 9277, 8171, 3, 8, UNI_SC__GUJR } /* sc=gujarati */,
- { 4, 9508, 9201, 5, 4, UNI_CCC__34 } /* ccc=ccc34 */,
- { 2, 9488, 42, 4, 36, UNI_CJKCOMPATIDEOGRAPHSSUP } /* blk=cjkcompatibilityideographssupplement */,
- { 0, 10048, 9420, 3, 4, UNI_NV__3_SLASH_20 } /* nv=3/20 */,
- { 2, 9346, 0, 4, 0, UNI_idc_values_index } /* idc= */,
- { 0, 10027, 1511, 3, 3, UNI_JG__HAH } /* jg=hah */,
- { 0, 10027, 5340, 3, 14, UNI_JG__MANICHAEANFIVE } /* jg=manichaeanfive */,
- { 0, 2912, 0, 19, 0, UNI_SUNDANESESUP } /* sundanesesupplement */,
- { 17, 9768, 719, 4, 9, UNI_XSUX } /* scx=cuneiform */,
- { 0, 3259, 0, 4, 0, UNI_IDSB } /* idsb */,
- { 0, 8589, 8582, 7, 7, UNI_SC__PHAG } /* script=phagspa */,
- { 17, 1552, 9503, 9, 2, UNI_MC } /* category=mc */,
- { 14, 3836, 7684, 17, 9, UNI_PAUC } /* scriptextensions=paucinhau */,
- { 0, 4916, 4944, 3, 14, UNI_TITLE } /* istitlecaseletter */,
- { 5, 9496, 0, 4, 0, UNI_BUHD } /* buhd */,
- { 0, 9508, 7858, 4, 2, UNI_CCC__22 } /* ccc=22 */,
- { 1, 184, 1319, 2, 25, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* issymbolsandpictographsexta */,
- { 1, 10296, 0, 12, 0, UNI_POSIXBLANK } /* isposixblank */,
- { 1, 6928, 1, 11, 1, -UNI_SD } /* softdotted=n */,
- { 2, 3836, 9002, 17, 4, UNI_TELU } /* scriptextensions=telu */,
- { 6, 184, 3683, 2, 11, UNI_ETHIOPICEXT } /* isethiopicext */,
- { 9, 9290, 9255, 5, 5, -UNI_MATH } /* math=false */,
- { 0, 8780, 895, 6, 28, UNI_SUPPUAA } /* block=supplementaryprivateuseareaa */,
- { 16, 8219, 0, 4, 0, UNI_JAVA } /* java */,
- { 0, 9488, 8442, 4, 7, UNI_INHANUNOO } /* blk=hanunoo */,
- { 0, 5791, 4225, 13, 16, UNI_JG__MANICHAEANTWENTY } /* joininggroup=manichaeantwenty */,
- { 19, 184, 6409, 2, 4, UNI_MEND } /* ismend */,
- { 3, 5037, 9255, 9, 5, -UNI_XPOSIXXDIGIT } /* hexdigit=false */,
- { 9, 9560, 0, 4, 0, UNI_GONG } /* gong */,
- { 0, 117, 2226, 4, 19, UNI_ININSCRIPTIONALPARTHIAN } /* ininscriptionalparthian */,
- { 3, 8589, 9512, 7, 4, UNI_CHRS } /* script=chrs */,
- { 3, 5739, 0, 13, 0, UNI_grbase_values_index } /* graphemebase= */,
- { 0, 7218, 6169, 10, 4, UNI_LB__GL } /* linebreak=glue */,
- { 0, 184, 1901, 3, 21, UNI_INDICNUMBERFORMS } /* iscommonindicnumberforms */,
- { 0, 10024, 7, 3, 1, UNI_C } /* gc=c */,
- { 1, 117, 5779, 3, 5, UNI_IPAEXT } /* inipaext */,
- { 1, 8688, 15, 4, 2, UNI_ARAB } /* isarab */,
- { 4, 9444, 9848, 4, 4, UNI_AGE__12 } /* age=v120 */,
- { 3, 9768, 9664, 4, 3, UNI_MRO } /* scx=mro */,
- { 16, 9460, 0, 4, 0, UNI_ARMI } /* armi */,
- { 1, 8589, 3895, 8, 3, UNI_SGNW } /* script=sgnw */,
- { 2, 3836, 8407, 17, 7, UNI_DSRT } /* scriptextensions=deseret */,
- { 0, 10048, 9050, 3, 5, UNI_NV__1_SLASH_160 } /* nv=1/160 */,
- { 1, 9768, 9008, 4, 4, UNI_THAA } /* scx=thaa */,
- { 14, 8960, 0, 6, 0, UNI_nfcqc_values_index } /* nfcqc= */,
- { 3, 9262, 8554, 3, 7, UNI_SB__LE } /* sb=oletter */,
- { 1, 8267, 36, 8, 1, UNI_RADICAL } /* radical=t */,
- { 0, 8855, 0, 2, 0, UNI_CF } /* cf */,
- { 8, 1417, 184, 24, 2, UNI_CCC__IS } /* canonicalcombiningclass=is */,
- { 0, 9250, 36, 5, 1, UNI_EMOD } /* emod=t */,
- { 0, 7155, 8188, 3, 7, UNI_HIRA } /* ishiragana */,
- { 19, 9556, 5497, 4, 11, UNI_GCB__SM } /* gcb=spacingmark */,
- { 2, 184, 6061, 2, 5, UNI_BIDIC } /* isbidic */,
- { 2, 7540, 10135, 9, 3, UNI_EXT } /* extender=yes */,
- { 3, 8780, 8470, 6, 7, UNI_INLINEARA } /* block=lineara */,
- { 8, 10291, 10308, 5, 5, UNI_POSIXPRINT } /* posixprint */,
- { 0, 10027, 6313, 3, 12, UNI_JG__MALAYALAMNGA } /* jg=malayalamnga */,
- { 3, 10048, 7469, 3, 1, UNI_NV__5 } /* nv=5 */,
- { 51, 9351, 26, 4, 1, UNI_IDS } /* ids=y */,
- { 1, 9997, 5829, 3, 3, UNI_BC__RLO } /* bc=rlo */,
- { 0, 9488, 9684, 4, 4, UNI_INNEWA } /* blk=newa */,
- { 2, 9768, 3025, 4, 8, UNI_CHER } /* scx=cherokee */,
- { 0, 1417, 10172, 24, 2, UNI_CCC__9 } /* canonicalcombiningclass=vr */,
- { 15, 10333, 7, 3, 1, UNI_SC } /* issc */,
- { 0, 7318, 7950, 10, 1, UNI_IN__9 } /* presentin=9 */,
- { 0, 2288, 5187, 3, 13, UNI_HIGHSURROGATES } /* inhighsurrogates */,
- { 14, 10009, 4532, 3, 6, UNI_DT__MED } /* dt=medial */,
- { 0, 6231, 2099, 3, 20, UNI_CJKCOMPATFORMS } /* incjkcompatibilityforms */,
- { 16, 3241, 0, 8, 0, UNI_GEOR } /* georgian */,
- { 0, 9270, 6506, 3, 11, UNI_PHAISTOS } /* inphaistosdisc */,
- { 8, 4643, 0, 15, 0, UNI_ecomp_values_index } /* emojicomponent= */,
- { 17, 5791, 8283, 13, 8, UNI_JG__SWASHKAF } /* joininggroup=swashkaf */,
- { 0, 5986, 9050, 13, 4, UNI_NV__1_SLASH_16 } /* numericvalue=1/16 */,
- { 5, 9508, 3015, 4, 10, UNI_CCC__AR } /* ccc=aboveright */,
- { 4, 2280, 9713, 3, 3, UNI_OSGE } /* isosge */,
- { 1, 9768, 4868, 4, 15, UNI_NARB } /* scx=oldnortharabian */,
- { 1, 9260, 1, 5, 1, -UNI_IDSB } /* idsb=n */,
- { 1, 5986, 7803, 13, 8, UNI_NV__1_SLASH_64 } /* numericvalue=1.56e-02 */,
- { 2, 8179, 0, 8, 0, UNI_GURU } /* gurmukhi */,
- { 3, 9488, 8179, 4, 8, UNI_INGURMUKHI } /* blk=gurmukhi */,
- { 0, 9277, 7648, 3, 9, UNI_ITAL } /* sc=olditalic */,
- { 1, 8882, 36, 6, 1, UNI_GREXT } /* grext=t */,
- { 32, 9768, 9315, 4, 5, UNI_ORYA } /* scx=oriya */,
- { 0, 10024, 3358, 3, 9, UNI_Z } /* gc=separator */,
- { 1, 2429, 0, 20, 0, UNI_PHLI } /* inscriptionalpahlavi */,
- { 3, 5986, 10146, 13, 2, UNI_NV__46 } /* numericvalue=46 */,
- { 22, 10048, 8042, 3, 2, UNI_NV__18 } /* nv=18 */,
- { 5, 8954, 9836, 6, 4, UNI__PERL_NCHAR } /* nchar=true */,
- { 0, 4401, 0, 16, 0, UNI_TANGUTSUP } /* tangutsupplement */,
- { 0, 8780, 5284, 6, 4, UNI_INLISU } /* block=lisu */,
- { 0, 9536, 36, 4, 1, UNI_DEP } /* dep=t */,
- { 19, 21, 7027, 2, 11, UNI_YISYLLABLES } /* inyisyllables */,
- { 0, 9444, 7765, 4, 1, UNI_AGE__2 } /* age=2 */,
- { 0, 9768, 3115, 4, 10, UNI_DEVA } /* scx=devanagari */,
- { 0, 184, 3295, 2, 9, UNI_LATINEXTA } /* islatinexta */,
- { 2, 4422, 8409, 4, 5, UNI_DSRT } /* indeseret */,
- { 2, 4478, 0, 15, 0, UNI_BRAI } /* braillepatterns */,
- { 0, 8589, 8470, 7, 7, UNI_SC__LINA } /* script=lineara */,
- { 9, 1988, 1, 22, 1, -UNI_LOE } /* logicalorderexception=n */,
- { 1, 1417, 7859, 24, 2, UNI_CCC__20 } /* canonicalcombiningclass=20 */,
- { 13, 9488, 6517, 4, 12, UNI_PLAYINGCARDS } /* blk=playingcards */,
- { 2, 895, 0, 28, 0, UNI_SUPPUAA } /* supplementaryprivateuseareaa */,
- { 0, 10027, 6950, 3, 11, UNI_JG__STRAIGHTWAW } /* jg=straightwaw */,
- { 0, 2722, 0, 10, 0, UNI_JAMO } /* hanguljamo */,
- { 1, 2224, 5607, 3, 13, UNI_SUPPUNCTUATION } /* insuppunctuation */,
- { 0, 9277, 3079, 3, 6, UNI_SC__COPT } /* sc=coptic */,
- { 1, 5032, 0, 5, 0, UNI_ASCII } /* ascii */,
- { 0, 3836, 9484, 17, 4, UNI_BHKS } /* scriptextensions=bhks */,
- { 0, 10006, 26, 3, 1, UNI_DI } /* di=y */,
- { 1, 10048, 9432, 3, 4, UNI_NV__5_SLASH_12 } /* nv=5/12 */,
- { 0, 1979, 47, 10, 1, UNI_LM } /* category=lm */,
- { 5, 9688, 0, 3, 0, UNI_NKO } /* nko */,
- { 2, 9700, 0, 4, 0, UNI_OLCK } /* olck */,
- { 1, 9580, 0, 4, 0, UNI_HANO } /* hano */,
- { 3, 2182, 1910, 21, 2, UNI_GCB__CN } /* graphemeclusterbreak=cn */,
- { 0, 8780, 9038, 6, 6, UNI_INYEZIDI } /* block=yezidi */,
- { 0, 6553, 10135, 12, 3, UNI_XIDC } /* xidcontinue=yes */,
- { 0, 184, 7428, 2, 4, UNI_WARA } /* iswara */,
- { 9, 7088, 2798, 10, 19, UNI_BC__LRO } /* bidiclass=lefttorightoverride */,
- { 1, 9768, 6409, 4, 4, UNI_MEND } /* scx=mend */,
- { 4, 1417, 756, 24, 2, UNI_CCC__DA } /* canonicalcombiningclass=da */,
- { 1, 9768, 6940, 5, 10, UNI_SORA } /* scx=sorasompeng */,
- { 13, 400, 0, 6, 0, UNI_CF } /* format */,
- { 3, 2182, 3385, 21, 17, UNI_RI } /* graphemeclusterbreak=regionalindicator */,
- { 0, 10288, 467, 8, 5, UNI_XPOSIXPUNCT } /* isxposixpunct */,
- { 0, 5452, 0, 14, 0, UNI_nfcqc_values_index } /* nfcquickcheck= */,
- { 4, 10296, 131, 3, 3, UNI_PALM } /* ispalm */,
- { 1, 4033, 1527, 16, 9, UNI__PERL_SURROGATE } /* generalcategory=surrogate */,
- { 9, 3836, 4370, 18, 5, UNI_SYRC } /* scriptextensions=syriac */,
- { 7, 8984, 1025, 6, 2, -UNI_QMARK } /* qmark=no */,
- { 0, 4033, 32, 16, 2, UNI__PERL_SURROGATE } /* generalcategory=cs */,
- { 2, 8575, 0, 6, 0, UNI_PATSYN } /* patsyn */,
- { 15, 9488, 3295, 4, 18, UNI_LATINEXTADDITIONAL } /* blk=latinextadditional */,
- { 1, 8589, 9864, 7, 4, UNI_WCHO } /* script=wcho */,
- { 0, 8435, 1025, 7, 2, -UNI_GRBASE } /* grbase=no */,
- { 11, 9277, 9796, 3, 4, UNI_SC__SYRC } /* sc=syrc */,
- { 0, 8780, 3887, 6, 17, UNI_SUTTONSIGNWRITING } /* block=suttonsignwriting */,
- { 1, 9277, 2560, 3, 4, UNI_SC__MAND } /* sc=mand */,
- { 20, 3151, 0, 17, 0, UNI_EPRES } /* emojipresentation */,
- { 41, 10012, 8948, 3, 6, UNI_EA__NA } /* ea=narrow */,
- { 2, 184, 8414, 2, 7, UNI_ELBA } /* iselbasan */,
- { 8, 8589, 7666, 7, 9, UNI_ORKH } /* script=oldturkic */,
- { 1, 5578, 2529, 15, 4, UNI_SB__ST } /* sentencebreak=sterm */,
- { 1, 9277, 7118, 3, 10, UNI_CHRS } /* sc=chorasmian */,
- { 2, 4433, 0, 15, 0, UNI_ARABICEXTA } /* arabicextendeda */,
- { 0, 2855, 0, 12, 0, UNI_MONGOLIANSUP } /* mongoliansup */,
- { 1, 1166, 0, 25, 0, UNI_DI } /* defaultignorablecodepoint */,
- { 0, 5508, 0, 13, 0, UNI_PATSYN } /* patternsyntax */,
- { 0, 6796, 0, 11, 0, UNI_MEDF } /* medefaidrin */,
- { 0, 184, 218, 3, 32, UNI_DIACRITICALSEXT } /* iscombiningdiacriticalmarksextended */,
- { 1, 9488, 4973, 4, 15, UNI_VEDICEXT } /* blk=vedicextensions */,
- { 4, 8400, 36, 7, 1, UNI_COMPEX } /* compex=t */,
- { 0, 3836, 382, 17, 4, UNI_EGYP } /* scriptextensions=egyp */,
- { 1, 9014, 36, 6, 1, UNI_UIDEO } /* uideo=t */,
- { 1, 5791, 5179, 13, 7, UNI_JG__HEHGOAL } /* joininggroup=hehgoal */,
- { 1, 6205, 9836, 12, 4, UNI_IDEO } /* ideographic=true */,
- { 0, 8882, 1025, 6, 2, -UNI_GREXT } /* grext=no */,
- { 1, 3259, 10135, 18, 3, UNI_IDSB } /* idsbinaryoperator=yes */,
- { 9, 9275, 6463, 5, 6, UNI_LB__ZWJ } /* insc=joiner */,
- { 0, 184, 43, 3, 25, UNI_CJKCOMPATIDEOGRAPHS } /* iscjkcompatibilityideographs */,
- { 0, 10030, 7258, 3, 10, UNI_JT__U } /* jt=nonjoining */,
- { 0, 7318, 10096, 10, 3, UNI_IN__5 } /* presentin=v50 */,
- { 4, 10027, 5378, 3, 4, UNI_JG__KAPH } /* jg=kaph */,
- { 18, 10048, 5648, 3, 11, UNI_NV__10000000000 } /* nv=10000000000 */,
- { 0, 9345, 26, 5, 1, UNI_XIDC } /* xidc=y */,
- { 0, 8997, 10135, 5, 3, UNI_TERM } /* term=yes */,
- { 5, 8780, 7585, 6, 9, UNI_LATINEXTC } /* block=latinextc */,
- { 5, 10030, 0, 3, 0, UNI_jt_values_index } /* jt= */,
- { 4, 867, 0, 11, 0, UNI_PHONETICEXT } /* phoneticext */,
- { 1, 8780, 43, 7, 15, UNI_CJKCOMPAT } /* block=cjkcompatibility */,
- { 1, 3097, 9552, 18, 4, UNI_DT__FONT } /* decompositiontype=font */,
- { 0, 184, 8936, 2, 4, UNI_LYCI } /* islyci */,
- { 5, 7585, 0, 9, 0, UNI_LATINEXTC } /* latinextc */,
- { 0, 9488, 8638, 4, 7, UNI_INTAGALOG } /* blk=tagalog */,
- { 3, 9508, 7874, 4, 2, UNI_CCC__23 } /* ccc=23 */,
- { 40, 7218, 1751, 10, 2, UNI_LB__AI } /* linebreak=ai */,
- { 0, 9508, 9206, 5, 4, UNI_CCC__35 } /* ccc=ccc35 */,
- { 0, 9488, 5830, 4, 13, UNI_LOWSURROGATES } /* blk=lowsurrogates */,
- { 0, 9488, 7027, 4, 11, UNI_YISYLLABLES } /* blk=yisyllables */,
- { 1, 4791, 2247, 4, 9, UNI_INMEETEIMAYEK } /* inmeeteimayek */,
- { 8, 6231, 4569, 3, 14, UNI_CURRENCYSYMBOLS } /* incurrencysymbols */,
- { 3, 9768, 2817, 4, 19, UNI_MERO } /* scx=meroitichieroglyphs */,
- { 1, 8780, 2874, 6, 19, UNI_OTTOMANSIYAQNUMBERS } /* block=ottomansiyaqnumbers */,
- { 0, 10048, 7781, 3, 1, UNI_NV__4 } /* nv=4 */,
- { 0, 8780, 3937, 6, 16, UNI_BOPOMOFOEXT } /* block=bopomofoextended */,
- { 6, 9508, 3564, 4, 13, UNI_CCC__202 } /* ccc=attachedbelow */,
- { 1, 7076, 4479, 3, 14, UNI_BRAI } /* inbraillepatterns */,
- { 4, 2280, 4306, 3, 4, UNI_C } /* isother */,
- { 0, 9488, 8243, 4, 8, UNI_INMAHAJANI } /* blk=mahajani */,
- { 17, 8780, 809, 6, 29, UNI_ENCLOSEDIDEOGRAPHICSUP } /* block=enclosedideographicsupplement */,
- { 2, 9768, 8243, 4, 8, UNI_MAHJ } /* scx=mahajani */,
- { 1, 9492, 4898, 4, 4, UNI_BPT__O } /* bpt=open */,
- { 9, 5791, 7048, 13, 10, UNI_JG__AFRICANQAF } /* joininggroup=africanqaf */,
- { 0, 4916, 2532, 5, 16, UNI_TERM } /* isterminalpunctuation */,
- { 1, 5986, 8714, 13, 6, UNI_NV__300000 } /* numericvalue=300000 */,
- { 0, 4116, 415, 3, 10, UNI_IDEO } /* isideographic */,
- { 21, 1465, 0, 13, 0, UNI_M } /* combiningmark */,
- { 0, 8780, 923, 6, 28, UNI_SUPPUAB } /* block=supplementaryprivateuseareab */,
- { 2, 9768, 6481, 4, 12, UNI_HUNG } /* scx=oldhungarian */,
- { 2, 1417, 9026, 24, 6, UNI_CCC__9 } /* canonicalcombiningclass=virama */,
- { 1, 9277, 7684, 3, 9, UNI_PAUC } /* sc=paucinhau */,
- { 1, 184, 951, 2, 17, UNI_VS } /* isvariationselector */,
- { 0, 184, 9604, 2, 4, UNI_KHMR } /* iskhmr */,
- { 10, 6576, 26, 11, 1, UNI_XPOSIXALPHA } /* alphabetic=y */,
- { 11, 7318, 7821, 10, 1, UNI_IN__8 } /* presentin=8 */,
- { 1, 3097, 567, 18, 2, UNI_DT__NB } /* decompositiontype=nb */,
- { 2, 7325, 9844, 3, 4, UNI_IN__11 } /* in=v110 */,
- { 0, 8780, 9320, 6, 5, UNI_INOSAGE } /* block=osage */,
- { 0, 4643, 1025, 15, 2, -UNI_ECOMP } /* emojicomponent=no */,
- { 8, 3259, 9255, 18, 5, -UNI_IDSB } /* idsbinaryoperator=false */,
- { 2, 184, 3341, 2, 8, UNI_DINGBATS } /* isdingbats */,
- { 0, 184, 8227, 2, 8, UNI_KANAEXTA } /* iskanaexta */,
- { 8, 8780, 8666, 6, 7, UNI_INTIRHUTA } /* block=tirhuta */,
- { 1, 8589, 8344, 7, 7, UNI_SC__BENG } /* script=bengali */,
- { 0, 5032, 1, 14, 1, -UNI_POSIXXDIGIT } /* asciihexdigit=n */,
- { 6, 1417, 9300, 24, 5, UNI_CCC__7 } /* canonicalcombiningclass=nukta */,
- { 1, 10298, 0, 10, 0, UNI_POSIXBLANK } /* posixblank */,
- { 3, 10009, 10069, 3, 3, UNI_DT__SQR } /* dt=sqr */,
- { 67, 8589, 8888, 7, 6, UNI_HATR } /* script=hatran */,
- { 0, 2182, 10015, 21, 3, UNI_WB__EB } /* graphemeclusterbreak=ebg */,
- { 3, 1417, 5765, 24, 13, UNI_CCC__IS } /* canonicalcombiningclass=iotasubscript */,
- { 11, 5003, 0, 15, 0, UNI_ZANB } /* zanabazarsquare */,
- { 24, 9277, 8123, 3, 8, UNI_SC__BUGI } /* sc=buginese */,
- { 2, 9508, 78, 4, 2, UNI_CCC__AR } /* ccc=ar */,
- { 0, 5432, 0, 3, 0, UNI_ANY } /* any */,
- { 1, 8589, 9628, 7, 4, UNI_SC__LATN } /* script=latn */,
- { 0, 10048, 9428, 3, 4, UNI_NV__3_SLASH_80 } /* nv=3/80 */,
- { 1, 7438, 0, 10, 0, UNI_wb_values_index } /* wordbreak= */,
- { 10, 184, 6229, 2, 5, UNI_JOINC } /* isjoinc */,
- { 1, 9488, 8652, 4, 7, UNI_INTAIVIET } /* blk=taiviet */,
- { 0, 8147, 26, 8, 1, UNI_EXTPICT } /* extpict=y */,
- { 8, 10048, 9203, 3, 2, UNI_NV__34 } /* nv=34 */,
- { 0, 9528, 9255, 4, 5, -UNI_CWU } /* cwu=false */,
- { 1, 6553, 26, 12, 1, UNI_XIDC } /* xidcontinue=y */,
- { 1, 3836, 6796, 17, 11, UNI_MEDF } /* scriptextensions=medefaidrin */,
- { 16, 3836, 2409, 17, 10, UNI_GLAG } /* scriptextensions=glagolitic */,
- { 2, 1114, 0, 26, 0, UNI_cwkcf_values_index } /* changeswhennfkccasefolded= */,
- { 10, 9508, 9919, 4, 3, UNI_CCC__202 } /* ccc=202 */,
- { 11, 8589, 9812, 7, 4, UNI_SC__TAML } /* script=taml */,
- { 5, 9444, 7782, 4, 1, UNI_AGE__3 } /* age=3 */,
- { 4, 184, 2969, 2, 19, UNI_SUPARROWSC } /* issupplementalarrowsc */,
- { 2, 10048, 8082, 3, 2, UNI_NV__19 } /* nv=19 */,
- { 1, 6231, 43, 3, 2, UNI_CJK } /* incjk */,
- { 0, 5074, 0, 14, 0, UNI_CJKCOMPATFORMS } /* cjkcompatforms */,
- { 0, 8435, 0, 7, 0, UNI_grbase_values_index } /* grbase= */,
- { 1, 8509, 1035, 4, 25, UNI_ENCLOSEDCJK } /* inenclosedcjklettersandmonths */,
- { 3, 9508, 7178, 4, 4, UNI_CCC__6 } /* ccc=hanr */,
- { 2, 6253, 0, 5, 0, UNI_KHMR } /* khmer */,
- { 0, 8589, 3241, 7, 4, UNI_SC__GEOR } /* script=geor */,
- { 8, 9488, 1586, 5, 22, UNI_BYZANTINEMUSIC } /* blk=byzantinemusicalsymbols */,
- { 1, 10027, 2637, 3, 9, UNI_JG__YEHBARREE } /* jg=yehbarree */,
- { 2, 10027, 5336, 3, 4, UNI_JG__BETH } /* jg=beth */,
- { 0, 5986, 9379, 13, 2, UNI_NV__41 } /* numericvalue=41 */,
- { 0, 7218, 8680, 10, 7, UNI_LB__XX } /* linebreak=unknown */,
- { 4, 4658, 1025, 15, 2, -UNI_GREXT } /* graphemeextend=no */,
- { 1, 8876, 0, 6, 0, UNI_GOTH } /* gothic */,
- { 2, 7410, 0, 8, 0, UNI_ASSIGNED } /* assigned */,
- { 1, 2912, 0, 9, 0, UNI_SUND } /* sundanese */,
- { 2, 8780, 8638, 6, 7, UNI_INTAGALOG } /* block=tagalog */,
- { 0, 7318, 9848, 10, 4, UNI_IN__12 } /* presentin=v120 */,
- { 1, 1417, 9168, 24, 2, UNI_CCC__27 } /* canonicalcombiningclass=27 */,
- { 3, 923, 0, 28, 0, UNI_SUPPUAB } /* supplementaryprivateuseareab */,
- { 2, 9488, 2409, 4, 13, UNI_GLAGOLITICSUP } /* blk=glagoliticsup */,
- { 5, 21, 6253, 2, 5, UNI_INKHMER } /* inkhmer */,
- { 0, 5986, 7859, 13, 6, UNI_NV__200000 } /* numericvalue=200000 */,
- { 0, 4989, 1, 3, 33, UNI_UCAS } /* isunifiedcanadianaboriginalsyllabics */,
- { 2, 9520, 3, 4, 1, -UNI_CWL } /* cwl=f */,
- { 4, 9768, 7, 4, 18, UNI_CANS } /* scx=canadianaboriginal */,
- { 6, 8780, 7657, 6, 9, UNI_INOLDPERMIC } /* block=oldpermic */,
- { 1, 3581, 0, 17, 0, UNI_UCAS } /* canadiansyllabics */,
- { 0, 7325, 10123, 3, 3, UNI_IN__9 } /* in=v90 */,
- { 0, 4791, 4274, 3, 15, UNI_MYANMAREXTA } /* inmyanmarextendeda */,
- { 2, 1979, 24, 10, 1, UNI_LOWERCASELETTER } /* category=ll */,
- { 3, 3133, 0, 13, 0, UNI_EMOD } /* emojimodifier */,
- { 85, 9277, 8421, 3, 7, UNI_ELYM } /* sc=elymaic */,
- { 0, 8780, 1631, 6, 23, UNI_GEOMETRICSHAPESEXT } /* block=geometricshapesextended */,
- { 9, 5578, 4305, 14, 5, UNI_SB__XX } /* sentencebreak=other */,
- { 2, 8688, 80, 4, 8, UNI_ARABICMATH } /* isarabicmath */,
- { 0, 10030, 18, 3, 1, UNI_JT__R } /* jt=r */,
- { 33, 10012, 66, 3, 1, UNI_EA__H } /* ea=h */,
- { 5, 3836, 8604, 18, 6, UNI_SHAW } /* scriptextensions=shavian */,
- { 2, 9488, 2469, 4, 20, UNI_INNYIAKENGPUACHUEHMONG } /* blk=nyiakengpuachuehmong */,
- { 0, 6231, 43, 3, 25, UNI_CJKCOMPATIDEOGRAPHS } /* incjkcompatibilityideographs */,
- { 0, 3836, 2608, 17, 6, UNI_BRAH } /* scriptextensions=brahmi */,
- { 1, 10048, 9916, 3, 3, UNI_NV__2_SLASH_5 } /* nv=2/5 */,
- { 0, 9277, 9888, 3, 4, UNI_ZANB } /* sc=zanb */,
- { 0, 8509, 751, 4, 14, UNI_ENCLOSEDALPHANUM } /* inenclosedalphanum */,
- { 5, 10033, 5536, 3, 14, UNI_LB__PO } /* lb=postfixnumeric */,
- { 0, 7739, 9836, 8, 4, UNI_IDS } /* idstart=true */,
- { 4, 10033, 4538, 3, 15, UNI_LB__CB } /* lb=contingentbreak */,
- { 18, 9277, 9644, 3, 4, UNI_MEDF } /* sc=medf */,
- { 18, 9556, 125, 4, 2, UNI_LB__CR } /* gcb=cr */,
- { 3, 3836, 8611, 18, 6, UNI_SIDD } /* scriptextensions=siddham */,
- { 3, 6265, 0, 12, 0, UNI_NL } /* letternumber */,
- { 33, 184, 316, 2, 33, UNI_SUPMATHOPERATORS } /* issupplementalmathematicaloperators */,
- { 1, 9997, 5130, 3, 14, UNI_BC__EN } /* bc=europeannumber */,
- { 14, 9488, 7138, 4, 10, UNI_COMPATJAMO } /* blk=compatjamo */,
- { 0, 8780, 8498, 6, 7, UNI_INMULTANI } /* block=multani */,
- { 2, 9768, 8666, 4, 4, UNI_TIRH } /* scx=tirh */,
- { 2, 8780, 1018, 6, 5, UNI_MUSIC } /* block=music */,
- { 3, 9488, 3115, 4, 13, UNI_DEVANAGARIEXT } /* blk=devanagariext */,
- { 1, 9277, 6972, 3, 11, UNI_SC__SYLO } /* sc=sylotinagri */,
- { 0, 3836, 7660, 17, 4, UNI_PERM } /* scriptextensions=perm */,
- { 0, 8589, 8337, 7, 7, UNI_AVST } /* script=avestan */,
- { 4, 8589, 8456, 7, 7, UNI_SC__KNDA } /* script=kannada */,
- { 6, 9768, 9560, 4, 4, UNI_GONG } /* scx=gong */,
- { 0, 9768, 9660, 4, 4, UNI_MLYM } /* scx=mlym */,
- { 0, 2280, 6323, 3, 3, UNI_OGAM } /* isogam */,
- { 0, 8780, 7567, 6, 9, UNI_INKHUDAWADI } /* block=khudawadi */,
- { 0, 9277, 7168, 3, 10, UNI_DIAK } /* sc=divesakuru */,
- { 0, 7318, 10099, 10, 3, UNI_IN__5_DOT_1 } /* presentin=v51 */,
- { 3, 8589, 8561, 7, 7, UNI_OSMA } /* script=osmanya */,
- { 1, 8780, 951, 6, 18, UNI_INVS } /* block=variationselectors */,
- { 9, 2665, 0, 19, 0, UNI_COUNTINGROD } /* countingrodnumerals */,
- { 0, 8688, 97, 3, 9, UNI_XPOSIXALPHA } /* isalphabetic */,
- { 3, 3374, 0, 11, 0, UNI_wspace_values_index } /* whitespace= */,
- { 8, 9277, 18, 6, 1, UNI_KHAR } /* sc=khar */,
- { 2, 6231, 115, 4, 23, UNI_DIACRITICALS } /* incombiningdiacriticalmarks */,
- { 16, 9640, 36, 4, 1, UNI_LOE } /* loe=t */,
- { 9, 1591, 383, 3, 31, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* inegyptianhieroglyphformatcontrols */,
- { 20, 9488, 2140, 4, 18, UNI_CYRILLICSUP } /* blk=cyrillicsupplement */,
- { 2, 8780, 2666, 7, 10, UNI_COUNTINGROD } /* block=countingrod */,
- { 5, 8589, 8315, 7, 8, UNI_UGAR } /* script=ugaritic */,
- { 0, 5986, 8738, 13, 6, UNI_NV__600000 } /* numericvalue=600000 */,
- { 14, 1537, 2555, 24, 14, UNI_INPC__BOTTOMANDRIGHT } /* indicpositionalcategory=bottomandright */,
- { 18, 8780, 7576, 6, 9, UNI_LATINEXTB } /* block=latinextb */,
- { 1, 10296, 467, 7, 5, UNI_POSIXPUNCT } /* isposixpunct */,
- { 2, 9020, 9255, 6, 5, -UNI_XPOSIXUPPER } /* upper=false */,
- { 1, 4049, 0, 11, 0, UNI_GEORGIANEXT } /* georgianext */,
- { 7, 3025, 0, 8, 0, UNI_CHER } /* cherokee */,
- { 0, 8589, 9592, 7, 4, UNI_HMNP } /* script=hmnp */,
- { 4, 10048, 7987, 3, 8, UNI_NV__5_SLASH_8 } /* nv=6.25e-01 */,
- { 0, 10033, 1140, 3, 26, UNI_LB__CJ } /* lb=conditionaljapanesestarter */,
- { 0, 6241, 6708, 12, 11, UNI_JT__C } /* joiningtype=joincausing */,
- { 0, 2122, 0, 7, 0, UNI_RADICAL } /* radical */,
- { 0, 3836, 3025, 17, 4, UNI_CHER } /* scriptextensions=cher */,
- { 0, 10027, 5620, 3, 14, UNI_JG__HAMZAONHEHGOAL } /* jg=tehmarbutagoal */,
- { 0, 7068, 0, 10, 0, UNI_ASCII } /* basiclatin */,
- { 0, 3836, 9335, 17, 5, UNI_TAKR } /* scriptextensions=takri */,
- { 9, 328, 0, 21, 0, UNI_MATHOPERATORS } /* mathematicaloperators */,
- { 0, 21, 1218, 2, 8, UNI_INKATAKANA } /* inkatakana */,
- { 2, 184, 6086, 3, 11, UNI_CHESSSYMBOLS } /* ischesssymbols */,
- { 37, 10012, 0, 3, 0, UNI_ea_values_index } /* ea= */,
- { 1, 5324, 6387, 4, 10, UNI_INMASARAMGONDI } /* inmasaramgondi */,
- { 0, 8589, 7684, 7, 4, UNI_PAUC } /* script=pauc */,
- { 16, 2140, 0, 11, 0, UNI_CYRILLICSUP } /* cyrillicsup */,
- { 1, 5986, 10138, 13, 2, UNI_NV__38 } /* numericvalue=38 */,
- { 3, 9488, 4097, 4, 16, UNI_HIGHPUSURROGATES } /* blk=highpusurrogates */,
- { 1, 9488, 8124, 5, 7, UNI_INBUGINESE } /* blk=buginese */,
- { 5, 184, 382, 2, 4, UNI_EGYP } /* isegyp */,
- { 2, 8780, 3683, 6, 11, UNI_ETHIOPICEXT } /* block=ethiopicext */,
- { 43, 1552, 5498, 10, 10, UNI_MC } /* category=spacingmark */,
- { 4, 10048, 8750, 3, 3, UNI_NV__800 } /* nv=800 */,
- { 1, 3529, 3, 18, 1, -UNI_VS } /* variationselector=f */,
- { 12, 9768, 9002, 4, 4, UNI_TELU } /* scx=telu */,
- { 0, 7028, 2, 3, 1, UNI_YI } /* isyi */,
- { 0, 9528, 1025, 4, 2, -UNI_CWU } /* cwu=no */,
- { 1, 4643, 1, 15, 1, -UNI_ECOMP } /* emojicomponent=n */,
- { 0, 10009, 1294, 3, 5, UNI_DT__SUP } /* dt=super */,
- { 1, 9524, 36, 4, 1, UNI_CWT } /* cwt=t */,
- { 27, 8589, 3937, 7, 4, UNI_SC__BOPO } /* script=bopo */,
- { 1, 7088, 5130, 10, 14, UNI_BC__EN } /* bidiclass=europeannumber */,
- { 0, 10291, 5718, 5, 5, UNI_POSIXALNUM } /* posixalnum */,
- { 14, 8858, 1025, 6, 2, -UNI_ECOMP } /* ecomp=no */,
- { 25, 8780, 1879, 7, 18, UNI_CJKCOMPATIDEOGRAPHS } /* block=cjkcompatideographs */,
- { 3, 8780, 510, 7, 19, UNI_CJK } /* block=cjkunifiedideographs */,
- { 1, 4001, 0, 7, 0, UNI_CPRT } /* cypriot */,
- { 1, 5986, 9055, 13, 3, UNI_NV__1_SLASH_3 } /* numericvalue=1/3 */,
- { 9, 9997, 6493, 3, 12, UNI_BC__ON } /* bc=otherneutral */,
- { 15, 9508, 6642, 4, 11, UNI_CCC__DB } /* ccc=doublebelow */,
- { 6, 8780, 9684, 6, 4, UNI_INNEWA } /* block=newa */,
- { 0, 10033, 21, 3, 2, UNI_LB__IN } /* lb=in */,
- { 2, 1537, 2549, 24, 3, UNI_INPC__TOP } /* indicpositionalcategory=top */,
- { 28, 4017, 0, 16, 0, UNI_PF } /* finalpunctuation */,
- { 0, 8996, 26, 6, 1, UNI_STERM } /* sterm=y */,
- { 3, 8780, 1060, 6, 27, UNI_OCR } /* block=opticalcharacterrecognition */,
- { 5, 10333, 8611, 3, 3, UNI_SIDD } /* issidd */,
- { 0, 2140, 0, 8, 0, UNI_CYRL } /* cyrillic */,
- { 0, 10048, 7782, 3, 1, UNI_NV__3 } /* nv=3 */,
- { 4, 9997, 3773, 3, 3, UNI_BC__RLI } /* bc=rli */,
- { 2, 3836, 3785, 17, 4, UNI_MANI } /* scriptextensions=mani */,
- { 1, 10126, 0, 3, 1, UNI_VO__U } /* vo=u */,
- { 2, 184, 5497, 2, 11, UNI_MC } /* isspacingmark */,
- { 2, 2779, 26, 19, 1, UNI_IDST } /* idstrinaryoperator=y */,
- { 3, 184, 2855, 2, 19, UNI_MONGOLIANSUP } /* ismongoliansupplement */,
- { 2, 10033, 8236, 4, 7, UNI_LB__LF } /* lb=linefeed */,
- { 38, 1768, 0, 22, 0, UNI_cwcf_values_index } /* changeswhencasefolded= */,
- { 18, 10333, 47, 3, 1, UNI_SM } /* issm */,
- { 0, 908, 0, 14, 0, UNI_PUA } /* privateusearea */,
- { 1, 184, 510, 3, 29, UNI_CJKEXTA } /* iscjkunifiedideographsextensiona */,
- { 1, 8435, 0, 6, 0, UNI_GRBASE } /* grbase */,
- { 0, 10048, 9208, 3, 2, UNI_NV__35 } /* nv=35 */,
- { 0, 7218, 495, 10, 2, UNI_LB__NU } /* linebreak=nu */,
- { 0, 10048, 8744, 3, 6, UNI_NV__700000 } /* nv=700000 */,
- { 17, 184, 9628, 2, 4, UNI_LATN } /* islatn */,
- { 0, 8589, 9568, 7, 4, UNI_SC__GREK } /* script=grek */,
- { 0, 8575, 3, 7, 1, -UNI_PATSYN } /* patsyn=f */,
- { 1, 9508, 9191, 5, 4, UNI_CCC__32 } /* ccc=ccc32 */,
- { 0, 10333, 8618, 3, 3, UNI_SOYO } /* issoyo */,
- { 8, 7576, 0, 9, 0, UNI_LATINEXTB } /* latinextb */,
- { 13, 3836, 8219, 17, 4, UNI_JAVA } /* scriptextensions=java */,
- { 3, 3836, 9476, 17, 4, UNI_AVST } /* scriptextensions=avst */,
- { 2, 9640, 0, 3, 0, UNI_LOE } /* loe */,
- { 1, 1966, 6463, 22, 6, UNI_LB__ZWJ } /* indicsyllabiccategory=joiner */,
- { 0, 6805, 254, 6, 29, UNI_MISCMATHSYMBOLSA } /* inmiscellaneousmathematicalsymbolsa */,
- { 0, 8780, 7058, 6, 10, UNI_ARABICEXTA } /* block=arabicexta */,
- { 0, 184, 9325, 2, 5, UNI_RUNR } /* isrunic */,
- { 7, 10024, 9225, 3, 5, UNI_XPOSIXCNTRL } /* gc=cntrl */,
- { 8, 9596, 911, 4, 1, UNI_GCB__V } /* hst=v */,
- { 0, 9277, 4385, 3, 6, UNI_TANG } /* sc=tangut */,
- { 64, 8780, 1911, 6, 11, UNI_NUMBERFORMS } /* block=numberforms */,
- { 38, 5986, 8720, 13, 2, UNI_NV__40 } /* numericvalue=40 */,
- { 1, 8780, 0, 6, 34, UNI_UCAS } /* block=unifiedcanadianaboriginalsyllabics */,
- { 1, 184, 7585, 2, 9, UNI_LATINEXTC } /* islatinextc */,
- { 1, 3836, 9572, 17, 4, UNI_GUJR } /* scriptextensions=gujr */,
- { 1, 8589, 2245, 7, 11, UNI_MTEI } /* script=meeteimayek */,
- { 12, 9488, 3649, 4, 17, UNI_CYRILLICEXTB } /* blk=cyrillicextendedb */,
- { 4, 7438, 8144, 10, 3, UNI_WB__EB } /* wordbreak=gaz */,
- { 10, 7155, 5038, 3, 7, UNI_XPOSIXXDIGIT } /* ishexdigit */,
- { 0, 7540, 1, 9, 1, -UNI_EXT } /* extender=n */,
- { 0, 21, 7567, 2, 9, UNI_INKHUDAWADI } /* inkhudawadi */,
- { 9, 9488, 1219, 5, 4, UNI_INBATAK } /* blk=batak */,
- { 2, 7088, 426, 10, 2, UNI_BC__ES } /* bidiclass=es */,
- { 2, 3836, 9676, 17, 4, UNI_NARB } /* scriptextensions=narb */,
- { 2, 1417, 8002, 24, 2, UNI_CCC__26 } /* canonicalcombiningclass=26 */,
- { 4, 10063, 1, 3, 1, -UNI_SD } /* sd=n */,
- { 0, 4033, 1587, 16, 1, UNI_Z } /* generalcategory=z */,
- { 6, 18, 0, 2, 0, UNI_RI } /* ri */,
- { 0, 6554, 26, 11, 1, UNI_IDC } /* idcontinue=y */,
- { 6, 6829, 0, 11, 0, UNI_MYANMAREXTB } /* myanmarextb */,
- { 1, 7318, 9991, 10, 3, UNI_IN__9 } /* presentin=9.0 */,
- { 0, 9277, 9330, 3, 5, UNI_SC__TALE } /* sc=taile */,
- { 0, 9480, 0, 4, 0, UNI_BATK } /* batk */,
- { 31, 1979, 0, 11, 0, UNI_LO } /* category=lo */,
- { 2, 4116, 7559, 3, 8, UNI_QAAI } /* isinherited */,
- { 0, 1417, 7778, 24, 2, UNI_CCC__21 } /* canonicalcombiningclass=21 */,
- { 2, 8780, 6133, 6, 12, UNI_ETHIOPICEXTA } /* block=ethiopicexta */,
- { 5, 7228, 10135, 10, 3, UNI_XPOSIXLOWER } /* lowercase=yes */,
- { 0, 9277, 7308, 3, 10, UNI_PHNX } /* sc=phoenician */,
- { 2, 9720, 0, 4, 0, UNI_PHLP } /* phlp */,
- { 0, 8589, 9668, 7, 4, UNI_MTEI } /* script=mtei */,
- { 0, 9768, 8876, 4, 6, UNI_GOTH } /* scx=gothic */,
- { 0, 2224, 2913, 3, 8, UNI_INSUNDANESE } /* insundanese */,
- { 41, 8780, 1344, 6, 25, UNI_SYMBOLSFORLEGACYCOMPUTING } /* block=symbolsforlegacycomputing */,
- { 0, 184, 9748, 2, 4, UNI_RJNG } /* isrjng */,
- { 1, 10048, 8744, 3, 2, UNI_NV__70 } /* nv=70 */,
- { 0, 5843, 0, 9, 0, UNI_MLYM } /* malayalam */,
- { 7, 9275, 4417, 5, 16, UNI_INSC__VOWELINDEPENDENT } /* insc=vowelindependent */,
- { 9, 9488, 8456, 4, 7, UNI_INKANNADA } /* blk=kannada */,
- { 8, 10129, 26, 3, 1, UNI_VS } /* vs=y */,
- { 1, 8780, 4973, 6, 8, UNI_VEDICEXT } /* block=vedicext */,
- { 1, 10182, 435, 6, 5, UNI__PERL_NCHAR } /* _perl_nchar */,
- { 2, 4791, 2247, 4, 19, UNI_MEETEIMAYEKEXT } /* inmeeteimayekextensions */,
- { 28, 184, 1585, 2, 14, UNI_BYZANTINEMUSIC } /* isbyzantinemusic */,
- { 3, 9270, 909, 3, 9, UNI_PUA } /* inprivateuse */,
- { 1, 2182, 8144, 21, 3, UNI_WB__EB } /* graphemeclusterbreak=gaz */,
- { 0, 9290, 10135, 5, 3, UNI_MATH } /* math=yes */,
- { 0, 9277, 9310, 3, 5, UNI_OGAM } /* sc=ogham */,
- { 0, 8449, 0, 6, 0, UNI_HYPHEN } /* hyphen */,
- { 16, 11, 0, 2, 0, UNI_DI } /* di */,
- { 0, 8688, 8338, 3, 6, UNI_AVST } /* isavestan */,
- { 2, 10033, 7486, 3, 9, UNI_LB__AI } /* lb=ambiguous */,
- { 0, 1828, 3, 6, 1, -UNI_CASED } /* cased=f */,
- { 0, 10288, 9225, 8, 5, UNI_XPOSIXCNTRL } /* isxposixcntrl */,
- { 7, 3169, 0, 4, 0, UNI_ETHI } /* ethi */,
- { 24, 1552, 5713, 9, 13, UNI_XPOSIXDIGIT } /* category=decimalnumber */,
- { 0, 8780, 78, 6, 6, UNI_INARABIC } /* block=arabic */,
- { 1, 8780, 382, 6, 32, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* block=egyptianhieroglyphformatcontrols */,
- { 2, 1417, 9171, 25, 4, UNI_CCC__28 } /* canonicalcombiningclass=ccc28 */,
- { 4, 8589, 7428, 7, 4, UNI_WARA } /* script=wara */,
- { 50, 1768, 10135, 22, 3, UNI_CWCF } /* changeswhencasefolded=yes */,
- { 0, 7438, 3385, 10, 17, UNI_RI } /* wordbreak=regionalindicator */,
- { 0, 9536, 9255, 4, 5, -UNI_DEP } /* dep=false */,
- { 32, 7218, 3379, 10, 5, UNI_LB__SP } /* linebreak=space */,
- { 3, 1552, 5438, 9, 14, UNI_SK } /* category=modifiersymbol */,
- { 5, 5791, 10045, 13, 3, UNI_JG__MIM } /* joininggroup=mim */,
- { 2, 42, 0, 36, 0, UNI_CJKCOMPATIDEOGRAPHSSUP } /* cjkcompatibilityideographssupplement */,
- { 7, 8780, 8596, 6, 7, UNI_SC__SHRD } /* block=sharada */,
- { 3, 9488, 8414, 4, 7, UNI_INELBASAN } /* blk=elbasan */,
- { 9, 9488, 5778, 4, 13, UNI_IPAEXT } /* blk=ipaextensions */,
- { 19, 7288, 0, 10, 0, UNI_SOGO } /* oldsogdian */,
- { 1, 10296, 83, 3, 2, UNI_PCM } /* ispcm */,
- { 0, 6231, 6086, 3, 11, UNI_CHESSSYMBOLS } /* inchesssymbols */,
- { 2, 3632, 0, 17, 0, UNI_CYRILLICEXTA } /* cyrillicextendeda */,
- { 0, 8780, 9664, 6, 3, UNI_INMRO } /* block=mro */,
- { 4, 10009, 9552, 3, 4, UNI_DT__FONT } /* dt=font */,
- { 3, 5986, 8744, 13, 6, UNI_NV__700000 } /* numericvalue=700000 */,
- { 6, 7438, 8323, 10, 7, UNI_WB__LE } /* wordbreak=aletter */,
- { 0, 8930, 9836, 6, 4, UNI_XPOSIXLOWER } /* lower=true */,
- { 4, 1417, 3015, 24, 5, UNI_CCC__A } /* canonicalcombiningclass=above */,
- { 2, 9488, 8187, 4, 8, UNI_INHIRAGANA } /* blk=hiragana */,
- { 0, 8780, 1677, 6, 9, UNI_LATINEXTE } /* block=latinexte */,
- { 1, 5324, 8493, 4, 5, UNI_INMARCHEN } /* inmarchen */,
- { 0, 9508, 7765, 4, 2, UNI_CCC__25 } /* ccc=25 */,
- { 10, 9245, 0, 5, 0, UNI_DOGR } /* dogra */,
- { 16, 184, 4658, 2, 14, UNI_GREXT } /* isgraphemeextend */,
- { 0, 1966, 4823, 22, 15, UNI_INSC__MODIFYINGLETTER } /* indicsyllabiccategory=modifyingletter */,
- { 0, 2182, 34, 21, 6, UNI_GCB__EX } /* graphemeclusterbreak=extend */,
- { 0, 9508, 9196, 5, 4, UNI_CCC__33 } /* ccc=ccc33 */,
- { 0, 5986, 10140, 13, 2, UNI_NV__39 } /* numericvalue=39 */,
- { 4, 8780, 720, 7, 15, UNI_CUNEIFORMNUMBERS } /* block=cuneiformnumbers */,
- { 14, 8780, 1013, 6, 5, UNI_INGREEK } /* block=greek */,
- { 0, 4129, 0, 9, 0, UNI_LATIN1 } /* latin1sup */,
- { 0, 10048, 7995, 3, 8, UNI_NV__1_SLASH_16 } /* nv=6.25e-02 */,
- { 6, 9070, 26, 5, 1, UNI_POSIXXDIGIT } /* ahex=y */,
- { 1, 8589, 2684, 7, 19, UNI_EGYP } /* script=egyptianhieroglyphs */,
- { 0, 7218, 6178, 10, 2, UNI_LB__ZW } /* linebreak=zw */,
- { 0, 184, 1677, 2, 23, UNI_LATINEXTADDITIONAL } /* islatinextendedadditional */,
- { 0, 8589, 9065, 7, 5, UNI_SC__ADLM } /* script=adlam */,
- { 32, 6231, 219, 4, 31, UNI_DIACRITICALSEXT } /* incombiningdiacriticalmarksextended */,
- { 4, 8589, 4793, 7, 15, UNI_MERC } /* script=meroiticcursive */,
- { 0, 3836, 9700, 17, 4, UNI_OLCK } /* scriptextensions=olck */,
- { 0, 1966, 4417, 22, 5, UNI_INSC__VOWEL } /* indicsyllabiccategory=vowel */,
- { 1, 10048, 5648, 3, 13, UNI_NV__1000000000000 } /* nv=1000000000000 */,
- { 0, 10024, 4898, 3, 15, UNI_PS } /* gc=openpunctuation */,
- { 1, 2218, 2470, 3, 19, UNI_INNYIAKENGPUACHUEHMONG } /* innyiakengpuachuehmong */,
- { 0, 184, 7068, 2, 10, UNI_ASCII } /* isbasiclatin */,
- { 2, 9488, 8131, 4, 8, UNI_INDUPLOYAN } /* blk=duployan */,
- { 0, 5986, 7987, 13, 8, UNI_NV__5_SLASH_8 } /* numericvalue=6.25e-01 */,
- { 0, 4989, 1368, 3, 3, UNI_UGAR } /* isugar */,
- { 12, 1417, 8817, 25, 5, UNI_CCC__129 } /* canonicalcombiningclass=ccc129 */,
- { 0, 9756, 0, 4, 0, UNI_RUNR } /* runr */,
- { 1, 8780, 8456, 6, 7, UNI_INKANNADA } /* block=kannada */,
- { 8, 8780, 838, 6, 29, UNI_MISCARROWS } /* block=miscellaneoussymbolsandarrows */,
- { 3, 5791, 5368, 13, 14, UNI_JG__MANICHAEANKAPH } /* joininggroup=manichaeankaph */,
- { 2, 184, 3421, 2, 18, UNI_RUMI } /* isruminumeralsymbols */,
- { 0, 10296, 7, 3, 1, UNI_PC } /* ispc */,
- { 5, 10048, 8010, 3, 2, UNI_NV__36 } /* nv=36 */,
- { 41, 598, 0, 2, 0, UNI_XPOSIXCNTRL } /* cc */,
- { 1, 5830, 0, 13, 0, UNI_LOWSURROGATES } /* lowsurrogates */,
- { 1, 9488, 6972, 4, 11, UNI_INSYLOTINAGRI } /* blk=sylotinagri */,
- { 2, 4688, 1284, 15, 9, UNI_IDENTIFIERTYPE__EXCLUSION } /* identifiertype=exclusion */,
- { 32, 8852, 3, 6, 1, -UNI_CWKCF } /* cwkcf=f */,
- { 0, 9508, 7922, 4, 2, UNI_CCC__24 } /* ccc=24 */,
- { 1, 6397, 0, 12, 0, UNI_MATHALPHANUM } /* mathalphanum */,
- { 1, 8780, 8888, 6, 6, UNI_INHATRAN } /* block=hatran */,
- { 1, 10048, 7765, 3, 1, UNI_NV__2 } /* nv=2 */,
- { 4, 5986, 9361, 13, 3, UNI_NV__1_SLASH_2 } /* numericvalue=1/2 */,
- { 0, 1966, 4305, 22, 5, UNI_INSC__OTHER } /* indicsyllabiccategory=other */,
- { 0, 4033, 74, 16, 2, UNI_ME } /* generalcategory=me */,
- { 2, 5986, 7995, 13, 8, UNI_NV__1_SLASH_16 } /* numericvalue=6.25e-02 */,
- { 2, 6231, 2141, 3, 10, UNI_CYRILLICSUP } /* incyrillicsup */,
- { 8, 8996, 3, 6, 1, -UNI_STERM } /* sterm=f */,
- { 0, 184, 9032, 2, 6, UNI_WCHO } /* iswancho */,
- { 8, 3937, 0, 16, 0, UNI_BOPOMOFOEXT } /* bopomofoextended */,
- { 10, 10048, 8066, 3, 2, UNI_NV__28 } /* nv=28 */,
- { 8, 2779, 3, 19, 1, -UNI_IDST } /* idstrinaryoperator=f */,
- { 6, 10009, 1417, 3, 9, UNI_DT__CAN } /* dt=canonical */,
- { 1, 3836, 9748, 17, 4, UNI_RJNG } /* scriptextensions=rjng */,
- { 22, 3836, 7675, 17, 9, UNI_PALM } /* scriptextensions=palmyrene */,
- { 14, 4643, 10135, 15, 3, UNI_ECOMP } /* emojicomponent=yes */,
- { 8, 10033, 125, 3, 2, UNI_LB__CR } /* lb=cr */,
- { 0, 8780, 8187, 6, 8, UNI_INHIRAGANA } /* block=hiragana */,
- { 12, 9500, 0, 4, 0, UNI_CAKM } /* cakm */,
- { 0, 4542, 4051, 4, 14, UNI_GEORGIANEXT } /* ingeorgianextended */,
- { 0, 9235, 1, 5, 1, -UNI_CWCM } /* cwcm=n */,
- { 0, 8780, 4569, 7, 14, UNI_CURRENCYSYMBOLS } /* block=currencysymbols */,
- { 9, 3836, 4273, 17, 7, UNI_MYMR } /* scriptextensions=myanmar */,
- { 1, 3836, 3115, 17, 10, UNI_DEVA } /* scriptextensions=devanagari */,
- { 0, 8589, 8786, 7, 6, UNI_CARI } /* script=carian */,
- { 8, 9277, 9680, 3, 4, UNI_NBAT } /* sc=nbat */,
- { 0, 1417, 7950, 24, 1, UNI_CCC__9 } /* canonicalcombiningclass=9 */,
- { 1, 9277, 9900, 3, 4, UNI_ZZZZ } /* sc=zzzz */,
- { 0, 9680, 0, 4, 0, UNI_NBAT } /* nbat */,
- { 11, 3836, 9504, 17, 4, UNI_CANS } /* scriptextensions=cans */,
- { 0, 1417, 7765, 24, 2, UNI_CCC__25 } /* canonicalcombiningclass=25 */,
- { 0, 2032, 36, 22, 1, UNI__PERL_NCHAR } /* noncharactercodepoint=t */,
- { 33, 10290, 467, 6, 5, UNI_XPOSIXPUNCT } /* xposixpunct */,
- { 0, 2076, 0, 15, 0, UNI_TRANSPORTANDMAP } /* transportandmap */,
- { 34, 9508, 5649, 4, 1, UNI_CCC__0 } /* ccc=0 */,
- { 18, 9260, 9255, 5, 5, -UNI_IDSB } /* idsb=false */,
- { 4, 5986, 7781, 13, 2, UNI_NV__43 } /* numericvalue=43 */,
- { 1, 184, 9305, 2, 5, UNI_NSHU } /* isnushu */,
- { 3, 5986, 7779, 13, 8, UNI_NV__1_SLASH_7 } /* numericvalue=1.43e-01 */,
- { 0, 10132, 495, 3, 2, UNI_WB__NU } /* wb=nu */,
- { 0, 10033, 5746, 3, 5, UNI_EBASE } /* lb=ebase */,
- { 1, 1166, 26, 26, 1, UNI_DI } /* defaultignorablecodepoint=y */,
- { 1, 9768, 1537, 5, 3, UNI_SIND } /* scx=sind */,
- { 0, 7218, 4842, 10, 2, UNI_LB__QU } /* linebreak=qu */,
- { 0, 3921, 0, 9, 0, UNI_ARABICSUP } /* arabicsup */,
- { 1, 7088, 102, 10, 2, UNI_BC__ET } /* bidiclass=et */,
- { 6, 8768, 1, 6, 1, -UNI_BIDIC } /* bidic=n */,
- { 1, 1417, 2449, 24, 4, UNI_CCC__L } /* canonicalcombiningclass=left */,
- { 0, 184, 7576, 2, 9, UNI_LATINEXTB } /* islatinextb */,
- { 1, 9488, 3666, 4, 17, UNI_CYRILLICEXTC } /* blk=cyrillicextendedc */,
- { 1, 7076, 2609, 3, 5, UNI_INBRAHMI } /* inbrahmi */,
- { 0, 8449, 1, 7, 1, -UNI_HYPHEN } /* hyphen=n */,
- { 86, 9556, 1087, 4, 7, UNI_GCB__PP } /* gcb=prepend */,
- { 0, 8997, 1, 5, 1, -UNI_TERM } /* term=n */,
- { 1, 9265, 0, 5, 0, UNI_idst_values_index } /* idst= */,
- { 0, 4033, 2061, 16, 14, UNI_LM } /* generalcategory=modifierletter */,
- { 0, 9488, 2245, 4, 14, UNI_MEETEIMAYEKEXT } /* blk=meeteimayekext */,
- { 0, 8589, 8561, 7, 4, UNI_OSMA } /* script=osma */,
- { 6, 3836, 2485, 17, 4, UNI_MONG } /* scriptextensions=mong */,
- { 0, 2182, 262, 21, 2, UNI_GCB__SM } /* graphemeclusterbreak=sm */,
- { 10, 8589, 3598, 7, 17, UNI_AGHB } /* script=caucasianalbanian */,
- { 100, 3836, 2288, 18, 3, UNI_SINH } /* scriptextensions=sinh */,
- { 14, 9768, 9880, 4, 4, UNI_YI } /* scx=yiii */,
- { 1, 10027, 10000, 3, 3, UNI_JG__BEH } /* jg=beh */,
- { 2, 9488, 4049, 4, 16, UNI_GEORGIANEXT } /* blk=georgianextended */,
- { 1, 5037, 1025, 9, 2, -UNI_XPOSIXXDIGIT } /* hexdigit=no */,
- { 0, 7684, 0, 9, 0, UNI_PAUC } /* paucinhau */,
- { 2, 9070, 9836, 5, 4, UNI_POSIXXDIGIT } /* ahex=true */,
- { 0, 8589, 8187, 7, 4, UNI_SC__HIRA } /* script=hira */,
- { 16, 9768, 9628, 4, 4, UNI_LATN } /* scx=latn */,
- { 0, 1417, 1755, 24, 2, UNI_CCC__DB } /* canonicalcombiningclass=db */,
- { 6, 10048, 1249, 3, 3, UNI_NV__NAN } /* nv=nan */,
- { 32, 2061, 0, 4, 0, UNI_MODI } /* modi */,
- { 2, 9524, 9255, 4, 5, -UNI_CWT } /* cwt=false */,
- { 5, 10288, 5040, 8, 5, UNI_XPOSIXDIGIT } /* isxposixdigit */,
- { 5, 184, 4598, 2, 15, UNI_DIACRITICALSEXT } /* isdiacriticalsext */,
- { 0, 9346, 9255, 4, 5, -UNI_IDC } /* idc=false */,
- { 0, 6181, 0, 12, 0, UNI_GONG } /* gunjalagondi */,
- { 4, 6928, 9836, 11, 4, UNI_SD } /* softdotted=true */,
- { 0, 21, 1673, 2, 4, UNI_JAMO } /* injamo */,
- { 0, 8762, 3, 6, 1, -UNI_XPOSIXALPHA } /* alpha=f */,
- { 3, 1700, 0, 23, 0, UNI_SHORTHANDFORMATCONTROLS } /* shorthandformatcontrols */,
- { 5, 8589, 9712, 7, 4, UNI_OSGE } /* script=osge */,
- { 98, 1417, 9940, 24, 3, UNI_CCC__A } /* canonicalcombiningclass=230 */,
- { 1, 5791, 756, 13, 3, UNI_JG__DAL } /* joininggroup=dal */,
- { 4, 184, 122, 2, 9, UNI_DIA } /* isdiacritic */,
- { 0, 7218, 5585, 10, 2, UNI_EBASE } /* linebreak=eb */,
- { 0, 10291, 96, 5, 5, UNI_POSIXALPHA } /* posixalpha */,
- { 1, 10024, 1287, 3, 2, UNI_UPPERCASELETTER } /* gc=lu */,
- { 41, 9235, 1025, 5, 2, -UNI_CWCM } /* cwcm=no */,
- { 2, 7408, 0, 10, 0, UNI_CN } /* unassigned */,
- { 18, 9262, 0, 3, 0, UNI_sb_values_index } /* sb= */,
- { 0, 3836, 9797, 18, 3, UNI_SYRC } /* scriptextensions=syrc */,
- { 2, 7155, 1655, 3, 5, UNI_HANG } /* ishangul */,
- { 1, 382, 0, 32, 0, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* egyptianhieroglyphformatcontrols */,
- { 0, 5746, 3, 6, 1, -UNI_EBASE } /* ebase=f */,
- { 1, 3385, 10135, 18, 3, UNI_RI } /* regionalindicator=yes */,
- { 7, 9240, 9836, 5, 4, UNI_DASH } /* dash=true */,
- { 1, 7218, 0, 10, 0, UNI_lb_values_index } /* linebreak= */,
- { 4, 1417, 9176, 25, 4, UNI_CCC__29 } /* canonicalcombiningclass=ccc29 */,
- { 1, 10288, 6554, 3, 3, UNI_XIDC } /* isxidc */,
- { 0, 3901, 8173, 4, 6, UNI_INGUJARATI } /* ingujarati */,
- { 1, 3649, 0, 17, 0, UNI_CYRILLICEXTB } /* cyrillicextendedb */,
- { 0, 9277, 7684, 3, 4, UNI_PAUC } /* sc=pauc */,
- { 1, 1417, 7978, 24, 2, UNI_CCC__16 } /* canonicalcombiningclass=16 */,
- { 11, 5214, 0, 6, 0, UNI_KANGXI } /* kangxi */,
- { 0, 5578, 400, 14, 6, UNI_SB__FO } /* sentencebreak=format */,
- { 52, 9277, 2245, 3, 11, UNI_MTEI } /* sc=meeteimayek */,
- { 1, 8780, 9315, 6, 5, UNI_INORIYA } /* block=oriya */,
- { 0, 2218, 16, 3, 1, UNI_NB } /* innb */,
- { 0, 9277, 3241, 3, 4, UNI_SC__GEOR } /* sc=geor */,
- { 2, 1768, 0, 21, 0, UNI_CWCF } /* changeswhencasefolded */,
- { 2, 1856, 36, 22, 1, UNI_CWU } /* changeswhenuppercased=t */,
- { 8, 8589, 8942, 7, 6, UNI_LYDI } /* script=lydian */,
- { 13, 9488, 7368, 4, 10, UNI_SMALLFORMS } /* blk=smallforms */,
- { 0, 8930, 3, 6, 1, -UNI_XPOSIXLOWER } /* lower=f */,
- { 20, 9488, 3600, 4, 4, UNI_UCAS } /* blk=ucas */,
- { 0, 4033, 6851, 16, 11, UNI_LO } /* generalcategory=otherletter */,
- { 16, 8780, 7594, 6, 9, UNI_LATINEXTD } /* block=latinextd */,
- { 1, 7088, 3187, 10, 18, UNI_BC__ET } /* bidiclass=europeanterminator */,
- { 18, 7318, 9982, 10, 3, UNI_IN__6_DOT_3 } /* presentin=6.3 */,
- { 2, 9508, 8002, 4, 2, UNI_CCC__26 } /* ccc=26 */,
- { 1, 8780, 3937, 6, 8, UNI_INBOPOMOFO } /* block=bopomofo */,
- { 0, 9508, 9181, 5, 4, UNI_CCC__30 } /* ccc=ccc30 */,
- { 0, 5452, 26, 14, 1, UNI_NFCQC__Y } /* nfcquickcheck=y */,
- { 0, 1867, 0, 5, 0, UNI_XPOSIXUPPER } /* upper */,
- { 1, 10033, 3379, 3, 5, UNI_LB__SP } /* lb=space */,
- { 1, 10009, 6421, 3, 12, UNI_DT__NONCANON } /* dt=noncanonical */,
- { 1, 9488, 0, 4, 34, UNI_UCAS } /* blk=unifiedcanadianaboriginalsyllabics */,
- { 0, 10048, 8003, 3, 8, UNI_NV__1_SLASH_160 } /* nv=6.25e-03 */,
- { 0, 5116, 26, 14, 1, UNI_EMOD } /* emojimodifier=y */,
- { 0, 8780, 478, 6, 31, UNI_MATHALPHANUM } /* block=mathematicalalphanumericsymbols */,
- { 0, 10333, 8618, 3, 6, UNI_SOYO } /* issoyombo */,
- { 6, 9488, 8666, 4, 7, UNI_INTIRHUTA } /* blk=tirhuta */,
- { 0, 8996, 9255, 6, 5, -UNI_STERM } /* sterm=false */,
- { 0, 8780, 4002, 7, 15, UNI_CYPRIOTSYLLABARY } /* block=cypriotsyllabary */,
- { 1, 10290, 7438, 6, 4, UNI_XPOSIXWORD } /* xposixword */,
- { 1, 1585, 0, 23, 0, UNI_BYZANTINEMUSIC } /* byzantinemusicalsymbols */,
- { 0, 4113, 952, 3, 17, UNI_INVS } /* invariationselectors */,
- { 0, 2280, 9321, 3, 4, UNI_OSGE } /* isosage */,
- { 6, 9672, 0, 4, 0, UNI_MYMR } /* mymr */,
- { 18, 9277, 0, 3, 0, UNI_sc_values_index } /* sc= */,
- { 0, 9277, 9008, 3, 4, UNI_SC__THAA } /* sc=thaa */,
- { 0, 9277, 7428, 3, 4, UNI_WARA } /* sc=wara */,
- { 12, 184, 6385, 2, 12, UNI_GONM } /* ismasaramgondi */,
- { 0, 5947, 0, 13, 0, UNI_MAYANNUMERALS } /* mayannumerals */,
- { 0, 9277, 9628, 3, 4, UNI_SC__LATN } /* sc=latn */,
- { 4, 8894, 0, 6, 0, UNI_joinc_values_index } /* joinc= */,
- { 0, 9275, 6457, 5, 12, UNI_INSC__NUMBERJOINER } /* insc=numberjoiner */,
- { 0, 5986, 9061, 13, 4, UNI_NV__1_SLASH_12 } /* numericvalue=1/12 */,
- { 2, 8187, 0, 8, 0, UNI_HIRA } /* hiragana */,
- { 0, 184, 1879, 3, 21, UNI_CJKCOMPATIDEOGRAPHSSUP } /* iscjkcompatideographssup */,
- { 9, 9508, 3572, 4, 9, UNI_CCC__BL } /* ccc=belowleft */,
- { 1, 3683, 0, 16, 0, UNI_ETHIOPICEXT } /* ethiopicextended */,
- { 0, 184, 3358, 2, 9, UNI_Z } /* isseparator */,
- { 1, 1966, 4523, 22, 15, UNI_INSC__CONSONANTMEDIAL } /* indicsyllabiccategory=consonantmedial */,
- { 0, 9768, 9484, 4, 4, UNI_BHKS } /* scx=bhks */,
- { 1, 8780, 4613, 6, 15, UNI_DIACRITICALSSUP } /* block=diacriticalssup */,
- { 0, 9277, 9792, 3, 4, UNI_SOGO } /* sc=sogo */,
- { 17, 184, 9692, 2, 4, UNI_NSHU } /* isnshu */,
- { 1, 2182, 6169, 21, 12, UNI_WB__EB } /* graphemeclusterbreak=glueafterzwj */,
- { 0, 7318, 9856, 10, 4, UNI_IN__13 } /* presentin=v130 */,
- { 1, 3836, 9832, 17, 4, UNI_TIBT } /* scriptextensions=tibt */,
- { 0, 9270, 468, 3, 10, UNI_INPUNCTUATION } /* inpunctuation */,
- { 2, 5791, 5843, 13, 13, UNI_JG__MALAYALAMLLLA } /* joininggroup=malayalamllla */,
- { 2, 3097, 45, 18, 3, UNI_DT__COM } /* decompositiontype=com */,
- { 0, 10048, 4134, 3, 1, UNI_NV__1 } /* nv=1 */,
- { 0, 8463, 0, 7, 0, UNI_KALI } /* kayahli */,
- { 0, 8435, 9836, 7, 4, UNI_GRBASE } /* grbase=true */,
- { 24, 6553, 3, 12, 1, -UNI_XIDC } /* xidcontinue=f */,
- { 1, 4583, 0, 15, 0, UNI_PD } /* dashpunctuation */,
- { 16, 10288, 5040, 3, 5, UNI_XPOSIXXDIGIT } /* isxdigit */,
- { 0, 9768, 9736, 4, 4, UNI_COPT } /* scx=qaac */,
- { 2, 8780, 4928, 6, 15, UNI_TAMILSUP } /* block=tamilsupplement */,
- { 2, 9768, 9900, 4, 4, UNI_ZZZZ } /* scx=zzzz */,
- { 44, 10333, 17, 3, 1, UNI_SO } /* isso */,
- { 1, 8442, 0, 7, 0, UNI_HANO } /* hanunoo */,
- { 1, 1828, 0, 5, 0, UNI_CASED } /* cased */,
- { 0, 8894, 26, 6, 1, UNI_JOINC } /* joinc=y */,
- { 1, 1834, 26, 22, 1, UNI_CWT } /* changeswhentitlecased=y */,
- { 0, 78, 0, 35, 0, UNI_ARABICMATH } /* arabicmathematicalalphabeticsymbols */,
- { 0, 10033, 3385, 3, 17, UNI_RI } /* lb=regionalindicator */,
- { 1, 8589, 2288, 8, 6, UNI_SC__SINH } /* script=sinhala */,
- { 0, 8688, 5033, 3, 12, UNI_POSIXXDIGIT } /* isasciihexdigit */,
- { 8, 3374, 10135, 11, 3, UNI_XPOSIXSPACE } /* whitespace=yes */,
- { 2, 7158, 3, 10, 1, -UNI_DIA } /* diacritic=f */,
- { 2, 8589, 1218, 7, 8, UNI_SC__KANA } /* script=katakana */,
- { 2, 5986, 9924, 13, 2, UNI_NV__42 } /* numericvalue=42 */,
- { 4, 184, 8853, 3, 4, UNI_CWKCF } /* iscwkcf */,
- { 3, 10048, 9984, 3, 2, UNI_NV__37 } /* nv=37 */,
- { 0, 1845, 0, 9, 0, UNI_TITLE } /* titlecase */,
- { 0, 9350, 0, 5, 0, UNI_xids_values_index } /* xids= */,
- { 2, 8780, 6253, 6, 5, UNI_INKHMER } /* block=khmer */,
- { 0, 184, 570, 3, 29, UNI_CJKEXTC } /* iscjkunifiedideographsextensionc */,
- { 0, 5791, 7016, 13, 11, UNI_JG__YEHWITHTAIL } /* joininggroup=yehwithtail */,
- { 3, 10009, 1253, 3, 7, UNI_DT__INIT } /* dt=initial */,
- { 3, 184, 4808, 2, 15, UNI_MISCPICTOGRAPHS } /* ismiscpictographs */,
- { 3, 9488, 2684, 4, 19, UNI_INEGYPTIANHIEROGLYPHS } /* blk=egyptianhieroglyphs */,
- { 3, 2529, 26, 20, 1, UNI_TERM } /* terminalpunctuation=y */,
- { 1, 9488, 4479, 5, 14, UNI_BRAI } /* blk=braillepatterns */,
- { 1, 2224, 4370, 3, 15, UNI_SYRIACSUP } /* insyriacsupplement */,
- { 0, 8589, 9516, 7, 4, UNI_SC__CPRT } /* script=cprt */,
- { 0, 7088, 0, 11, 0, UNI_BC__B } /* bidiclass=b */,
- { 0, 1417, 7922, 24, 2, UNI_CCC__24 } /* canonicalcombiningclass=24 */,
- { 10, 3836, 8243, 17, 8, UNI_MAHJ } /* scriptextensions=mahajani */,
- { 0, 8589, 9484, 7, 4, UNI_BHKS } /* script=bhks */,
- { 5, 184, 6229, 2, 11, UNI_JOINC } /* isjoincontrol */,
- { 0, 4033, 1217, 16, 2, UNI_SK } /* generalcategory=sk */,
- { 3, 9640, 9836, 4, 4, UNI_LOE } /* loe=true */,
- { 0, 7739, 36, 8, 1, UNI_IDS } /* idstart=t */,
- { 2, 9277, 9668, 3, 4, UNI_MTEI } /* sc=mtei */,
- { 0, 9997, 24, 3, 1, UNI_BC__L } /* bc=l */,
- { 1, 184, 4448, 2, 4, UNI_BAMU } /* isbamu */,
- { 3, 9277, 9592, 3, 4, UNI_HMNP } /* sc=hmnp */,
- { 34, 9277, 9776, 3, 4, UNI_SGNW } /* sc=sgnw */,
- { 3, 6205, 36, 12, 1, UNI_IDEO } /* ideographic=t */,
- { 16, 7088, 3756, 10, 3, UNI_BC__NSM } /* bidiclass=nsm */,
- { 0, 21, 9032, 2, 6, UNI_INWANCHO } /* inwancho */,
- { 3, 2182, 125, 21, 2, UNI_LB__CR } /* graphemeclusterbreak=cr */,
- { 17, 8589, 8179, 7, 8, UNI_SC__GURU } /* script=gurmukhi */,
- { 2, 9277, 8337, 3, 7, UNI_AVST } /* sc=avestan */,
- { 0, 9536, 9836, 4, 4, UNI_DEP } /* dep=true */,
- { 0, 9262, 69, 3, 2, UNI_SB__UP } /* sb=up */,
- { 6, 2054, 0, 22, 0, UNI_MODIFIERLETTERS } /* spacingmodifierletters */,
- { 1, 7218, 7512, 10, 2, UNI_LB__BB } /* linebreak=bb */,
- { 0, 5674, 0, 12, 0, UNI_BIDIM } /* bidimirrored */,
- { 2, 9488, 6481, 4, 12, UNI_INOLDHUNGARIAN } /* blk=oldhungarian */,
- { 10, 184, 11, 2, 3, UNI_DIA } /* isdia */,
- { 6, 4116, 3260, 3, 16, UNI_IDSB } /* isidsbinaryoperator */,
- { 1, 5037, 26, 9, 1, UNI_XPOSIXXDIGIT } /* hexdigit=y */,
- { 32, 9508, 7890, 4, 2, UNI_CCC__33 } /* ccc=33 */,
- { 0, 9277, 9548, 3, 4, UNI_DSRT } /* sc=dsrt */,
- { 0, 5791, 7055, 13, 3, UNI_JG__QAF } /* joininggroup=qaf */,
- { 4, 21, 9285, 2, 5, UNI_INLIMBU } /* inlimbu */,
- { 16, 9277, 719, 3, 9, UNI_XSUX } /* sc=cuneiform */,
- { 8, 8780, 1218, 6, 8, UNI_INKATAKANA } /* block=katakana */,
- { 2, 9488, 1319, 4, 25, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* blk=symbolsandpictographsexta */,
- { 0, 1417, 7821, 24, 1, UNI_CCC__8 } /* canonicalcombiningclass=8 */,
- { 6, 10296, 96, 7, 5, UNI_POSIXALPHA } /* isposixalpha */,
- { 0, 8780, 4448, 6, 15, UNI_BAMUMSUP } /* block=bamumsupplement */,
- { 8, 7218, 3385, 10, 17, UNI_RI } /* linebreak=regionalindicator */,
- { 1, 9636, 0, 4, 0, UNI_LINB } /* linb */,
- { 0, 9488, 467, 4, 11, UNI_INPUNCTUATION } /* blk=punctuation */,
- { 17, 9277, 8942, 3, 6, UNI_LYDI } /* sc=lydian */,
- { 2, 10024, 1171, 3, 2, UNI_TITLE } /* gc=lt */,
- { 0, 4033, 4017, 16, 16, UNI_PF } /* generalcategory=finalpunctuation */,
- { 0, 10033, 6179, 3, 2, UNI_LB__WJ } /* lb=wj */,
- { 38, 4658, 9255, 15, 5, -UNI_GREXT } /* graphemeextend=false */,
- { 16, 10048, 8714, 3, 3, UNI_NV__300 } /* nv=300 */,
- { 1, 9235, 0, 5, 0, UNI_cwcm_values_index } /* cwcm= */,
- { 0, 9596, 36, 4, 1, UNI_GCB__T } /* hst=t */,
- { 20, 9768, 9283, 4, 4, UNI_PHLI } /* scx=phli */,
- { 0, 8762, 9255, 6, 5, -UNI_XPOSIXALPHA } /* alpha=false */,
- { 4, 3836, 8561, 17, 7, UNI_OSMA } /* scriptextensions=osmanya */,
- { 0, 8589, 7, 7, 18, UNI_CANS } /* script=canadianaboriginal */,
- { 1, 9488, 6554, 4, 3, UNI_INIDC } /* blk=idc */,
- { 0, 8984, 1, 6, 1, -UNI_QMARK } /* qmark=n */,
- { 24, 10027, 6301, 3, 12, UNI_JG__MALAYALAMLLA } /* jg=malayalamlla */,
- { 3, 184, 9564, 2, 4, UNI_GONM } /* isgonm */,
- { 0, 4033, 6873, 16, 11, UNI_SO } /* generalcategory=othersymbol */,
- { 0, 8780, 6385, 6, 12, UNI_INMASARAMGONDI } /* block=masaramgondi */,
- { 49, 8762, 9836, 6, 4, UNI_XPOSIXALPHA } /* alpha=true */,
- { 0, 184, 10170, 2, 2, UNI_CASEDLETTER } /* isl_ */,
- { 0, 8589, 9900, 7, 4, UNI_ZZZZ } /* script=zzzz */,
- { 0, 10063, 9836, 3, 4, UNI_SD } /* sd=true */,
- { 0, 9488, 3169, 4, 18, UNI_ETHIOPICSUP } /* blk=ethiopicsupplement */,
- { 2, 6229, 0, 11, 0, UNI_JOINC } /* joincontrol */,
- { 1, 9277, 9002, 3, 6, UNI_SC__TELU } /* sc=telugu */,
- { 1, 8780, 7119, 7, 9, UNI_INCHORASMIAN } /* block=chorasmian */,
- { 13, 6553, 9255, 12, 5, -UNI_XIDC } /* xidcontinue=false */,
- { 2, 9277, 9335, 3, 5, UNI_SC__TAKR } /* sc=takri */,
- { 0, 4829, 2411, 4, 18, UNI_GLAGOLITICSUP } /* inglagoliticsupplement */,
- { 2, 8589, 8491, 7, 7, UNI_MARC } /* script=marchen */,
- { 0, 1856, 9255, 22, 5, -UNI_CWU } /* changeswhenuppercased=false */,
- { 4, 10048, 7923, 3, 8, UNI_NV__2_SLASH_5 } /* nv=4.00e-01 */,
- { 49, 9768, 8942, 4, 4, UNI_LYDI } /* scx=lydi */,
- { 4, 7318, 7987, 10, 3, UNI_IN__6_DOT_2 } /* presentin=6.2 */,
- { 0, 3666, 0, 17, 0, UNI_CYRILLICEXTC } /* cyrillicextendedc */,
- { 5, 9032, 0, 6, 0, UNI_WCHO } /* wancho */,
- { 1, 10027, 6157, 3, 12, UNI_JG__FINALSEMKATH } /* jg=finalsemkath */,
- { 0, 9540, 36, 4, 1, UNI_DIA } /* dia=t */,
- { 0, 3836, 9516, 17, 4, UNI_CPRT } /* scriptextensions=cprt */,
- { 2, 9277, 7, 3, 18, UNI_CANS } /* sc=canadianaboriginal */,
- { 2, 9277, 3025, 3, 4, UNI_CHER } /* sc=cher */,
- { 2, 184, 9752, 2, 4, UNI_ROHG } /* isrohg */,
- { 0, 5564, 3, 14, 1, -UNI_QMARK } /* quotationmark=f */,
- { 1, 9508, 9186, 5, 4, UNI_CCC__31 } /* ccc=ccc31 */,
- { 3, 8780, 9310, 6, 5, UNI_INOGHAM } /* block=ogham */,
- { 1, 9277, 2224, 3, 21, UNI_PRTI } /* sc=inscriptionalparthian */,
- { 0, 1552, 1465, 9, 13, UNI_M } /* category=combiningmark */,
- { 1, 2280, 125, 3, 2, UNI_OCR } /* isocr */,
- { 0, 9508, 9223, 4, 2, UNI_CCC__91 } /* ccc=91 */,
- { 12, 5791, 65, 15, 2, UNI_JG__KAPH } /* joininggroup=kaph */,
- { 0, 184, 951, 2, 18, UNI_INVS } /* isvariationselectors */,
- { 1, 10126, 3511, 3, 18, UNI_VO__TU } /* vo=transformedupright */,
- { 5, 9277, 1115, 3, 4, UNI_SC__HANG } /* sc=hang */,
- { 32, 7218, 21, 10, 2, UNI_LB__IN } /* linebreak=in */,
- { 5, 4916, 9336, 3, 4, UNI_TAKR } /* istakri */,
- { 1, 9277, 8407, 3, 7, UNI_DSRT } /* sc=deseret */,
- { 50, 10132, 8505, 3, 7, UNI_WB__NL } /* wb=newline */,
- { 0, 1417, 7933, 24, 2, UNI_CCC__17 } /* canonicalcombiningclass=17 */,
- { 6, 5791, 2627, 13, 19, UNI_JG__BURUSHASKIYEHBARREE } /* joininggroup=burushaskiyehbarree */,
- { 0, 8780, 2141, 7, 7, UNI_INCYRILLIC } /* block=cyrillic */,
- { 6, 10333, 8604, 3, 6, UNI_SHAW } /* isshavian */,
- { 2, 10027, 5934, 3, 13, UNI_JG__MANICHAEANWAW } /* jg=manichaeanwaw */,
- { 0, 184, 5494, 2, 14, UNI_MN } /* isnonspacingmark */,
- { 9, 5986, 8003, 13, 8, UNI_NV__1_SLASH_160 } /* numericvalue=6.25e-03 */,
- { 0, 10132, 72, 3, 2, UNI_WB__LE } /* wb=le */,
- { 14, 7076, 8346, 4, 5, UNI_INBENGALI } /* inbengali */,
- { 18, 21, 9624, 2, 3, UNI_INLAO } /* inlao */,
- { 1, 9488, 2076, 4, 22, UNI_TRANSPORTANDMAP } /* blk=transportandmapsymbols */,
- { 0, 1988, 0, 21, 0, UNI_LOE } /* logicalorderexception */,
- { 10, 4916, 2077, 3, 14, UNI_TRANSPORTANDMAP } /* istransportandmap */,
- { 2, 5578, 0, 14, 0, UNI_sb_values_index } /* sentencebreak= */,
- { 2, 4791, 6830, 3, 10, UNI_MYANMAREXTB } /* inmyanmarextb */,
- { 0, 8780, 5661, 6, 13, UNI_AEGEANNUMBERS } /* block=aegeannumbers */,
- { 0, 10024, 5592, 3, 14, UNI_ZS } /* gc=spaceseparator */,
- { 6, 2140, 0, 21, 0, UNI_CYRILLICSUP } /* cyrillicsupplementary */,
- { 0, 8852, 10135, 6, 3, UNI_CWKCF } /* cwkcf=yes */,
- { 0, 9488, 923, 4, 28, UNI_SUPPUAB } /* blk=supplementaryprivateuseareab */,
- { 3, 8147, 1942, 10, 3, -UNI_EXTPICT } /* extpict=false */,
- { 2, 8780, 6181, 6, 12, UNI_INGUNJALAGONDI } /* block=gunjalagondi */,
- { 3, 8589, 9732, 7, 4, UNI_PRTI } /* script=prti */,
- { 6, 3382, 3, 3, 1, -UNI_CE } /* ce=f */,
- { 8, 10048, 5649, 3, 1, UNI_NV__0 } /* nv=0 */,
- { 0, 9508, 4134, 4, 1, UNI_CCC__1 } /* ccc=1 */,
- { 0, 7218, 7486, 10, 9, UNI_LB__AI } /* linebreak=ambiguous */,
- { 0, 7308, 0, 10, 0, UNI_PHNX } /* phoenician */,
- { 1, 9277, 57, 3, 2, UNI_SC__YI } /* sc=yi */,
- { 1, 8589, 9832, 7, 4, UNI_TIBT } /* script=tibt */,
- { 2, 1552, 5593, 10, 13, UNI_ZS } /* category=spaceseparator */,
- { 0, 8547, 0, 7, 0, UNI_OLCK } /* olchiki */,
- { 4, 3836, 7621, 17, 9, UNI_NBAT } /* scriptextensions=nabataean */,
- { 0, 6805, 187, 6, 16, UNI_MISCSYMBOLS } /* inmiscellaneoussymbols */,
- { 0, 749, 0, 21, 0, UNI_ENCLOSEDALPHANUM } /* enclosedalphanumerics */,
- { 8, 9768, 8123, 4, 4, UNI_BUGI } /* scx=bugi */,
- { 1, 21, 5033, 3, 4, UNI_ASCII } /* inascii */,
- { 2, 3836, 8942, 17, 4, UNI_LYDI } /* scriptextensions=lydi */,
- { 1, 9768, 9872, 4, 4, UNI_XPEO } /* scx=xpeo */,
- { 28, 10033, 414, 3, 11, UNI_LB__ID } /* lb=ideographic */,
- { 19, 9444, 10120, 4, 3, UNI_AGE__8 } /* age=v80 */,
- { 4, 10033, 988, 3, 2, UNI_LB__CP } /* lb=cp */,
- { 0, 10048, 8714, 3, 2, UNI_NV__30 } /* nv=30 */,
- { 43, 5791, 5892, 13, 3, UNI_JG__NUN } /* joininggroup=nun */,
- { 1, 10129, 9836, 3, 4, UNI_VS } /* vs=true */,
- { 3, 184, 540, 3, 29, UNI_CJKEXTB } /* iscjkunifiedideographsextensionb */,
- { 0, 1552, 0, 10, 0, UNI_S } /* category=s */,
- { 1, 8780, 4793, 6, 15, UNI_INMEROITICCURSIVE } /* block=meroiticcursive */,
- { 4, 9997, 2509, 3, 20, UNI_BC__RLE } /* bc=righttoleftembedding */,
- { 11, 3836, 9592, 17, 4, UNI_HMNP } /* scriptextensions=hmnp */,
- { 0, 3079, 0, 18, 0, UNI_COPTICEPACTNUMBERS } /* copticepactnumbers */,
- { 40, 3836, 9604, 17, 4, UNI_KHMR } /* scriptextensions=khmr */,
- { 0, 8780, 3683, 6, 17, UNI_ETHIOPICEXTA } /* block=ethiopicextendeda */,
- { 0, 7158, 26, 10, 1, UNI_DIA } /* diacritic=y */,
- { 1, 4916, 1846, 3, 8, UNI_TITLE } /* istitlecase */,
- { 1, 8400, 0, 6, 0, UNI_COMPEX } /* compex */,
- { 0, 6469, 5713, 12, 7, UNI_XPOSIXDIGIT } /* numerictype=decimal */,
- { 64, 10024, 728, 3, 6, UNI_N } /* gc=number */,
- { 1, 9508, 7806, 4, 1, UNI_CCC__6 } /* ccc=6 */,
- { 0, 3836, 7630, 17, 9, UNI_TALU } /* scriptextensions=newtailue */,
- { 17, 9277, 9095, 3, 5, UNI_SC__BUHD } /* sc=buhid */,
- { 2, 9728, 0, 4, 0, UNI_MIAO } /* plrd */,
- { 2, 7088, 4321, 10, 16, UNI_BC__S } /* bidiclass=segmentseparator */,
- { 17, 8780, 1294, 6, 25, UNI_SUPERANDSUB } /* block=superscriptsandsubscripts */,
- { 2, 5674, 26, 13, 1, UNI_BIDIM } /* bidimirrored=y */,
- { 9, 9488, 3632, 4, 17, UNI_CYRILLICEXTA } /* blk=cyrillicextendeda */,
- { 0, 3836, 9812, 17, 4, UNI_TAML } /* scriptextensions=taml */,
- { 0, 21, 6253, 2, 12, UNI_KHMERSYMBOLS } /* inkhmersymbols */,
- { 0, 8694, 36, 7, 1, UNI_XPOSIXSPACE } /* wspace=t */,
- { 0, 8864, 1, 6, 1, -UNI_EMOJI } /* emoji=n */,
- { 0, 3836, 8618, 18, 3, UNI_SOYO } /* scriptextensions=soyo */,
- { 3, 8589, 9560, 7, 4, UNI_SC__GONG } /* script=gong */,
- { 32, 184, 4478, 2, 15, UNI_BRAI } /* isbraillepatterns */,
- { 1, 7155, 8889, 3, 5, UNI_HATR } /* ishatran */,
- { 1, 9488, 8275, 4, 8, UNI_SPECIALS } /* blk=specials */,
- { 0, 9508, 8727, 4, 2, UNI_CCC__32 } /* ccc=32 */,
- { 0, 9768, 9704, 4, 4, UNI_ORKH } /* scx=orkh */,
- { 2, 3097, 749, 18, 3, UNI_DT__ENC } /* decompositiontype=enc */,
- { 0, 9768, 1176, 5, 3, UNI_SORA } /* scx=sora */,
- { 0, 10327, 47, 5, 1, UNI_PERM } /* isperm */,
- { 17, 5060, 9836, 14, 4, UNI_CI } /* caseignorable=true */,
- { 2, 8267, 1025, 8, 2, -UNI_RADICAL } /* radical=no */,
- { 1, 10048, 5648, 3, 9, UNI_NV__100000000 } /* nv=100000000 */,
- { 0, 184, 9612, 2, 4, UNI_KNDA } /* isknda */,
- { 0, 7325, 7754, 3, 2, UNI_IN__11 } /* in=11 */,
- { 0, 5791, 6325, 13, 12, UNI_JG__MALAYALAMNNA } /* joininggroup=malayalamnna */,
- { 0, 5060, 3, 14, 1, -UNI_CI } /* caseignorable=f */,
- { 45, 6818, 0, 11, 0, UNI_MYANMAREXTA } /* myanmarexta */,
- { 1, 5578, 34, 14, 2, UNI_SB__EX } /* sentencebreak=ex */,
- { 0, 8589, 8786, 7, 4, UNI_CARI } /* script=cari */,
- { 3, 1552, 728, 9, 6, UNI_N } /* category=number */,
- { 6, 5986, 7947, 13, 8, UNI_NV__3_SLASH_64 } /* numericvalue=4.69e-02 */,
- { 0, 8589, 9448, 7, 4, UNI_AGHB } /* script=aghb */,
- { 0, 4116, 5779, 3, 5, UNI_IPAEXT } /* isipaext */,
- { 7, 8780, 720, 7, 29, UNI_CUNEIFORMNUMBERS } /* block=cuneiformnumbersandpunctuation */,
- { 1, 10320, 17, 5, 1, UNI_XPEO } /* isxpeo */,
- { 14, 9508, 9121, 5, 4, UNI_CCC__18 } /* ccc=ccc18 */,
- { 0, 6231, 2120, 3, 13, UNI_CJKRADICALSSUP } /* incjkradicalssup */,
- { 1, 9277, 6385, 3, 12, UNI_SC__GONM } /* sc=masaramgondi */,
- { 0, 8575, 9836, 7, 4, UNI_PATSYN } /* patsyn=true */,
- { 4, 8589, 8491, 7, 4, UNI_MARC } /* script=marc */,
- { 3, 9277, 8840, 3, 6, UNI_SC__CAKM } /* sc=chakma */,
- { 0, 1417, 9943, 24, 3, UNI_CCC__AR } /* canonicalcombiningclass=232 */,
- { 2, 2784, 3923, 4, 14, UNI_ARABICSUP } /* inarabicsupplement */,
- { 0, 9768, 8315, 4, 8, UNI_UGAR } /* scx=ugaritic */,
- { 0, 9632, 0, 4, 0, UNI_LINA } /* lina */,
- { 0, 10027, 4773, 3, 5, UNI_JG__SADHE } /* jg=sadhe */,
- { 1, 7249, 9, 4, 16, UNI_CANS } /* iscanadianaboriginal */,
- { 0, 2182, 70, 21, 2, UNI_GCB__PP } /* graphemeclusterbreak=pp */,
- { 1, 6928, 1025, 11, 2, -UNI_SD } /* softdotted=no */,
- { 2, 10129, 36, 3, 1, UNI_VS } /* vs=t */,
- { 13, 9768, 1654, 4, 6, UNI_HANG } /* scx=hangul */,
- { 7, 8780, 749, 6, 30, UNI_ENCLOSEDALPHANUMSUP } /* block=enclosedalphanumericsupplement */,
- { 0, 7249, 754, 4, 3, UNI_CASED } /* iscased */,
- { 2, 3295, 0, 18, 0, UNI_LATINEXTADDITIONAL } /* latinextadditional */,
- { 34, 8882, 9836, 6, 4, UNI_GREXT } /* grext=true */,
- { 0, 5578, 7, 15, 1, UNI_SB__SC } /* sentencebreak=sc */,
- { 0, 2529, 9837, 21, 3, UNI_TERM } /* terminalpunctuation=true */,
- { 0, 316, 0, 33, 0, UNI_SUPMATHOPERATORS } /* supplementalmathematicaloperators */,
- { 0, 9262, 3358, 3, 3, UNI_SB__SE } /* sb=sep */,
- { 0, 6231, 3045, 4, 16, UNI_HALFMARKS } /* incombininghalfmarks */,
- { 16, 184, 1857, 3, 20, UNI_CWU } /* ischangeswhenuppercased */,
- { 1, 10009, 435, 4, 2, UNI_DT__ENC } /* dt=enc */,
- { 0, 1552, 4898, 9, 15, UNI_PS } /* category=openpunctuation */,
- { 0, 8589, 6973, 8, 10, UNI_SC__SYLO } /* script=sylotinagri */,
- { 6, 184, 5752, 2, 13, UNI_GREEKEXT } /* isgreekextended */,
- { 3, 7458, 0, 10, 0, UNI_YIRADICALS } /* yiradicals */,
- { 0, 10027, 4203, 3, 3, UNI_JG__LAM } /* jg=lam */,
- { 0, 1828, 1025, 6, 2, -UNI_CASED } /* cased=no */,
- { 0, 10048, 8820, 3, 2, UNI_NV__29 } /* nv=29 */,
- { 0, 1087, 1, 27, 1, -UNI_PCM } /* prependedconcatenationmark=n */,
- { 3, 9768, 8315, 4, 4, UNI_UGAR } /* scx=ugar */,
- { 0, 5564, 9255, 14, 5, -UNI_QMARK } /* quotationmark=false */,
- { 1, 7218, 6686, 10, 11, UNI_LB__IN } /* linebreak=inseparable */,
- { 8, 7738, 1025, 9, 2, -UNI_XIDS } /* xidstart=no */,
- { 8, 42, 0, 9, 0, UNI_CJKCOMPAT } /* cjkcompat */,
- { 2, 8617, 0, 4, 0, UNI_SOYO } /* soyo */,
- { 6, 3598, 0, 17, 0, UNI_AGHB } /* caucasianalbanian */,
- { 0, 9768, 8107, 4, 8, UNI_BALI } /* scx=balinese */,
- { 2, 8996, 0, 6, 0, UNI_sterm_values_index } /* sterm= */,
- { 0, 6409, 0, 4, 0, UNI_MEND } /* mend */,
- { 1, 7318, 9979, 10, 3, UNI_IN__6_DOT_1 } /* presentin=6.1 */,
- { 0, 1552, 74, 9, 2, UNI_ME } /* category=me */,
- { 0, 6620, 0, 11, 0, UNI_DOMINO } /* dominotiles */,
- { 0, 9488, 2076, 4, 15, UNI_TRANSPORTANDMAP } /* blk=transportandmap */,
- { 0, 1922, 0, 22, 0, UNI_DIACRITICALSFORSYMBOLS } /* diacriticalsforsymbols */,
- { 16, 7218, 7108, 10, 10, UNI_LB__BA } /* linebreak=breakafter */,
- { 0, 9444, 10090, 4, 3, UNI_AGE__4 } /* age=v40 */,
- { 4, 9245, 0, 4, 0, UNI_DOGR } /* dogr */,
- { 5, 5986, 7811, 13, 8, UNI_NV__1_SLASH_6 } /* numericvalue=1.67e-01 */,
- { 21, 4033, 1822, 16, 2, UNI_NL } /* generalcategory=nl */,
- { 0, 7218, 23, 10, 2, UNI_LB__AL } /* linebreak=al */,
- { 0, 8589, 8407, 7, 7, UNI_DSRT } /* script=deseret */,
- { 0, 9488, 3079, 4, 18, UNI_COPTICEPACTNUMBERS } /* blk=copticepactnumbers */,
- { 0, 9768, 9708, 4, 4, UNI_ORYA } /* scx=orya */,
- { 3, 6205, 1025, 12, 2, -UNI_IDEO } /* ideographic=no */,
- { 2, 184, 3241, 2, 8, UNI_GEOR } /* isgeorgian */,
- { 0, 5746, 0, 6, 0, UNI_ebase_values_index } /* ebase= */,
- { 3, 184, 34, 2, 3, UNI_EXT } /* isext */,
- { 1, 10027, 8283, 3, 8, UNI_JG__SWASHKAF } /* jg=swashkaf */,
- { 1, 184, 8990, 2, 6, UNI_RJNG } /* isrejang */,
- { 4, 8780, 2836, 6, 19, UNI_MODIFIERTONELETTERS } /* block=modifiertoneletters */,
- { 0, 184, 9620, 2, 4, UNI_LANA } /* islana */,
- { 1, 5791, 10021, 13, 3, UNI_JG__GAF } /* joininggroup=gaf */,
- { 18, 184, 3439, 2, 18, UNI_SMALLKANAEXT } /* issmallkanaextension */,
- { 1, 10132, 1194, 3, 2, UNI_LB__LF } /* wb=lf */,
- { 9, 9071, 9836, 4, 4, UNI_XPOSIXXDIGIT } /* hex=true */,
- { 0, 1417, 7930, 24, 2, UNI_CCC__14 } /* canonicalcombiningclass=14 */,
- { 8, 9277, 8442, 3, 7, UNI_SC__HANO } /* sc=hanunoo */,
- { 1, 6231, 1879, 3, 18, UNI_CJKCOMPATIDEOGRAPHS } /* incjkcompatideographs */,
- { 1, 6469, 5040, 12, 5, UNI_NT__DI } /* numerictype=digit */,
- { 0, 2032, 10135, 22, 3, UNI__PERL_NCHAR } /* noncharactercodepoint=yes */,
- { 1, 5986, 9364, 13, 4, UNI_NV__1_SLASH_10 } /* numericvalue=1/10 */,
- { 16, 3904, 1, 17, 1, -UNI_UIDEO } /* unifiedideograph=n */,
- { 11, 5791, 7045, 13, 2, UNI_JG__FE } /* joininggroup=fe */,
- { 17, 9584, 0, 4, 0, UNI_HLUW } /* hluw */,
- { 4, 113, 0, 35, 0, UNI_DIACRITICALSFORSYMBOLS } /* combiningdiacriticalmarksforsymbols */,
- { 1, 5791, 9044, 13, 6, UNI_JG__YUDHHE } /* joininggroup=yudhhe */,
- { 0, 7318, 7782, 10, 1, UNI_IN__3 } /* presentin=3 */,
- { 3, 9508, 8066, 4, 2, UNI_CCC__28 } /* ccc=28 */,
- { 6, 9277, 9740, 3, 4, UNI_SC__QAAI } /* sc=qaai */,
- { 0, 9508, 8831, 4, 3, UNI_CCC__132 } /* ccc=132 */,
- { 8, 184, 4289, 2, 16, UNI_MYANMAREXTB } /* ismyanmarextendedb */,
- { 1, 9488, 7058, 4, 10, UNI_ARABICEXTA } /* blk=arabicexta */,
- { 8, 6553, 9836, 12, 4, UNI_XIDC } /* xidcontinue=true */,
- { 0, 9556, 8139, 4, 8, UNI_WB__EB } /* gcb=ebasegaz */,
- { 1, 7291, 0, 4, 0, UNI_SOGD } /* sogd */,
- { 0, 5986, 9907, 13, 3, UNI_NV__1_SLASH_7 } /* numericvalue=1/7 */,
- { 2, 7028, 2309, 3, 5, UNI_YIJING } /* isyijing */,
- { 97, 9768, 8900, 4, 6, UNI_KTHI } /* scx=kaithi */,
- { 0, 9768, 7308, 4, 10, UNI_PHNX } /* scx=phoenician */,
- { 0, 10027, 5895, 3, 13, UNI_JG__MANICHAEANONE } /* jg=manichaeanone */,
- { 0, 10003, 9255, 3, 5, -UNI_CI } /* ci=false */,
- { 44, 3751, 0, 17, 0, UNI_KITS } /* khitansmallscript */,
- { 3, 8780, 8344, 6, 7, UNI_INBENGALI } /* block=bengali */,
- { 0, 8780, 7666, 6, 9, UNI_INOLDTURKIC } /* block=oldturkic */,
- { 34, 7218, 6179, 10, 2, UNI_LB__WJ } /* linebreak=wj */,
- { 0, 3836, 9828, 17, 4, UNI_THAI } /* scriptextensions=thai */,
- { 0, 9488, 8299, 4, 8, UNI_INTIFINAGH } /* blk=tifinagh */,
- { 2, 8780, 4097, 6, 16, UNI_HIGHPUSURROGATES } /* block=highpusurrogates */,
- { 0, 8780, 3547, 6, 17, UNI_ALCHEMICAL } /* block=alchemicalsymbols */,
- { 0, 7325, 9400, 3, 4, UNI_IN__13 } /* in=13.0 */,
- { 0, 2760, 24, 19, 1, UNI_GCB__L } /* hangulsyllabletype=l */,
- { 8, 4113, 1751, 3, 2, UNI_INVAI } /* invai */,
- { 3, 4916, 9821, 3, 3, UNI_TFNG } /* istfng */,
- { 0, 4033, 7, 16, 1, UNI_C } /* generalcategory=c */,
- { 0, 184, 630, 3, 29, UNI_CJKEXTE } /* iscjkunifiedideographsextensione */,
- { 0, 9345, 10135, 5, 3, UNI_XIDC } /* xidc=yes */,
- { 0, 9488, 8547, 4, 7, UNI_OLCK } /* blk=olchiki */,
- { 33, 9768, 9532, 4, 4, UNI_CYRL } /* scx=cyrl */,
- { 0, 6939, 0, 4, 0, UNI_SORA } /* sora */,
- { 3, 10033, 6686, 3, 11, UNI_LB__IN } /* lb=inseparable */,
- { 0, 8400, 9836, 7, 4, UNI_COMPEX } /* compex=true */,
- { 6, 8978, 3, 6, 1, -UNI__PERL_PATWS } /* patws=f */,
- { 2, 9488, 446, 4, 32, UNI_IDEOGRAPHICSYMBOLS } /* blk=ideographicsymbolsandpunctuation */,
- { 0, 7138, 0, 10, 0, UNI_COMPATJAMO } /* compatjamo */,
- { 0, 4989, 1, 3, 41, UNI_UCASEXT } /* isunifiedcanadianaboriginalsyllabicsextended */,
- { 1, 184, 3385, 2, 17, UNI_RI } /* isregionalindicator */,
- { 0, 5508, 1025, 14, 2, -UNI_PATSYN } /* patternsyntax=no */,
- { 6, 10290, 3379, 6, 5, UNI_XPOSIXSPACE } /* xposixspace */,
- { 0, 184, 2409, 2, 13, UNI_GLAGOLITICSUP } /* isglagoliticsup */,
- { 0, 9508, 7814, 4, 1, UNI_CCC__7 } /* ccc=7 */,
- { 8, 8561, 0, 7, 0, UNI_OSMA } /* osmanya */,
- { 14, 7438, 6193, 10, 12, UNI_LB__HL } /* wordbreak=hebrewletter */,
- { 2, 184, 8203, 2, 8, UNI_JAMOEXTA } /* isjamoexta */,
- { 5, 1166, 36, 26, 1, UNI_DI } /* defaultignorablecodepoint=t */,
- { 7, 8774, 9255, 6, 5, -UNI_BIDIM } /* bidim=false */,
- { 9, 7088, 24, 10, 1, UNI_BC__L } /* bidiclass=l */,
- { 24, 9277, 8936, 3, 4, UNI_LYCI } /* sc=lyci */,
- { 0, 9277, 8914, 5, 4, UNI_SC__KHOJ } /* sc=khojki */,
- { 0, 9528, 3, 4, 1, -UNI_CWU } /* cwu=f */,
- { 0, 4033, 262, 16, 2, UNI_SM } /* generalcategory=sm */,
- { 2, 6609, 1025, 11, 2, -UNI_DEP } /* deprecated=no */,
- { 0, 9768, 7684, 4, 4, UNI_PAUC } /* scx=pauc */,
- { 4, 7325, 5648, 3, 2, UNI_IN__10 } /* in=10 */,
- { 1, 9997, 18, 3, 1, UNI_BC__R } /* bc=r */,
- { 30, 9085, 0, 5, 0, UNI_BATK } /* batak */,
- { 1, 184, 2409, 2, 10, UNI_GLAG } /* isglagolitic */,
- { 0, 9768, 2608, 4, 6, UNI_BRAH } /* scx=brahmi */,
- { 0, 8780, 8299, 6, 8, UNI_INTIFINAGH } /* block=tifinagh */,
- { 1, 8780, 6025, 6, 12, UNI_ALPHABETICPF } /* block=alphabeticpf */,
- { 4, 119, 8877, 3, 5, UNI_INGOTHIC } /* ingothic */,
- { 0, 10024, 32, 3, 2, UNI__PERL_SURROGATE } /* gc=cs */,
- { 45, 3115, 0, 10, 0, UNI_DEVA } /* devanagari */,
- { 0, 9270, 6506, 3, 7, UNI_PHAISTOS } /* inphaistos */,
- { 14, 184, 4145, 2, 7, UNI_LINB } /* islinearb */,
- { 3, 9508, 9126, 5, 4, UNI_CCC__19 } /* ccc=ccc19 */,
- { 0, 10033, 6073, 3, 12, UNI_LB__SY } /* lb=breaksymbols */,
- { 0, 9277, 2912, 3, 9, UNI_SUND } /* sc=sundanese */,
- { 1, 3259, 0, 17, 0, UNI_IDSB } /* idsbinaryoperator */,
- { 0, 3836, 2245, 17, 11, UNI_MTEI } /* scriptextensions=meeteimayek */,
- { 1, 1856, 0, 22, 0, UNI_cwu_values_index } /* changeswhenuppercased= */,
- { 6, 24, 0, 1, 0, UNI_L } /* l */,
- { 2, 184, 4643, 2, 14, UNI_ECOMP } /* isemojicomponent */,
- { 1, 7218, 8449, 10, 6, UNI_LB__HY } /* linebreak=hyphen */,
- { 1, 10048, 9408, 3, 4, UNI_NV__15_SLASH_2 } /* nv=15/2 */,
- { 1, 7028, 5219, 3, 9, UNI_YIRADICALS } /* isyiradicals */,
- { 5, 7076, 9096, 3, 4, UNI_INBUHID } /* inbuhid */,
- { 1, 184, 7632, 3, 2, UNI_CWT } /* iscwt */,
- { 34, 9277, 9760, 3, 4, UNI_SAMR } /* sc=samr */,
- { 3, 9488, 3223, 4, 18, UNI_INPUNCTUATION } /* blk=generalpunctuation */,
- { 12, 7088, 1353, 10, 3, UNI_BC__RLE } /* bidiclass=rle */,
- { 1, 8780, 3044, 7, 17, UNI_HALFMARKS } /* block=combininghalfmarks */,
- { 0, 21, 7428, 2, 10, UNI_INWARANGCITI } /* inwarangciti */,
- { 19, 1417, 9946, 24, 3, UNI_CCC__DB } /* canonicalcombiningclass=233 */,
- { 1, 184, 1922, 2, 12, UNI_DIACRITICALS } /* isdiacriticals */,
- { 0, 9768, 9728, 4, 4, UNI_MIAO } /* scx=plrd */,
- { 2, 9768, 8344, 4, 7, UNI_BENG } /* scx=bengali */,
- { 1, 9326, 1183, 4, 3, UNI_ANY } /* unicode */,
- { 23, 8589, 7359, 8, 3, UNI_SAUR } /* script=saur */,
- { 12, 5752, 0, 13, 0, UNI_GREEKEXT } /* greekextended */,
- { 0, 4542, 3243, 4, 9, UNI_GEORGIANSUP } /* ingeorgiansup */,
- { 4, 4658, 0, 14, 0, UNI_GREXT } /* graphemeextend */,
- { 0, 9275, 9090, 5, 5, UNI_INSC__BINDU } /* insc=bindu */,
- { 0, 2308, 0, 6, 0, UNI_YIJING } /* yijing */,
- { 1, 9277, 8561, 3, 7, UNI_OSMA } /* sc=osmanya */,
- { 0, 3358, 0, 9, 0, UNI_Z } /* separator */,
- { 0, 8589, 9604, 7, 4, UNI_KHMR } /* script=khmr */,
- { 1, 2529, 0, 19, 0, UNI_TERM } /* terminalpunctuation */,
- { 1, 10027, 6337, 3, 12, UNI_JG__MALAYALAMNYA } /* jg=malayalamnya */,
- { 1, 3259, 1025, 18, 2, -UNI_IDSB } /* idsbinaryoperator=no */,
- { 0, 184, 5687, 2, 13, UNI_BLOCKELEMENTS } /* isblockelements */,
- { 8, 8984, 0, 6, 0, UNI_qmark_values_index } /* qmark= */,
- { 8, 4688, 8540, 15, 7, UNI_IDENTIFIERTYPE__NOTNFKC } /* identifiertype=notnfkc */,
- { 2, 10132, 73, 3, 2, UNI_WB__EB } /* wb=em */,
- { 1, 7438, 7612, 10, 9, UNI_WB__MB } /* wordbreak=midnumlet */,
- { 1, 9692, 0, 4, 0, UNI_NSHU } /* nshu */,
- { 14, 1966, 7328, 22, 10, UNI_INSC__PUREKILLER } /* indicsyllabiccategory=purekiller */,
- { 19, 8589, 1677, 7, 5, UNI_SC__LATN } /* script=latin */,
- { 1, 9488, 9656, 4, 4, UNI_INMIAO } /* blk=miao */,
- { 18, 10126, 3522, 3, 7, UNI_VO__U } /* vo=upright */,
- { 0, 2569, 3522, 20, 7, UNI_VO__U } /* verticalorientation=upright */,
- { 0, 3836, 3241, 17, 8, UNI_GEOR } /* scriptextensions=georgian */,
- { 17, 9768, 7428, 4, 10, UNI_WARA } /* scx=warangciti */,
- { 2, 8688, 8093, 4, 6, UNI_ARMN } /* isarmenian */,
- { 0, 7218, 340, 10, 2, UNI_LB__OP } /* linebreak=op */,
- { 0, 184, 838, 2, 29, UNI_MISCARROWS } /* ismiscellaneoussymbolsandarrows */,
- { 12, 5791, 6361, 13, 12, UNI_JG__MALAYALAMTTA } /* joininggroup=malayalamtta */,
- { 0, 8984, 0, 5, 0, UNI_QMARK } /* qmark */,
- { 3, 10003, 3, 3, 1, -UNI_CI } /* ci=f */,
- { 1, 3836, 3894, 18, 10, UNI_SGNW } /* scriptextensions=signwriting */,
- { 0, 3424, 8316, 3, 7, UNI_INUGARITIC } /* inugaritic */,
- { 0, 184, 2120, 3, 20, UNI_CJKRADICALSSUP } /* iscjkradicalssupplement */,
- { 102, 8780, 6730, 6, 11, UNI_KATAKANAEXT } /* block=katakanaext */,
- { 0, 9071, 0, 4, 0, UNI_hex_values_index } /* hex= */,
- { 4, 9508, 8820, 4, 2, UNI_CCC__29 } /* ccc=29 */,
- { 2, 4829, 2411, 4, 8, UNI_INGLAGOLITIC } /* inglagolitic */,
- { 1, 8780, 3439, 6, 18, UNI_SMALLKANAEXT } /* block=smallkanaextension */,
- { 0, 7318, 7979, 10, 3, UNI_IN__6 } /* presentin=6.0 */,
- { 0, 3836, 2061, 17, 4, UNI_MODI } /* scriptextensions=modi */,
- { 10, 9290, 26, 5, 1, UNI_MATH } /* math=y */,
- { 1, 9444, 10093, 4, 3, UNI_AGE__4_DOT_1 } /* age=v41 */,
- { 16, 7418, 1025, 10, 2, -UNI_XPOSIXUPPER } /* uppercase=no */,
- { 0, 8780, 630, 7, 29, UNI_CJKEXTE } /* block=cjkunifiedideographsextensione */,
- { 11, 10327, 7438, 6, 4, UNI_POSIXWORD } /* isperlword */,
- { 10, 184, 38, 2, 2, UNI_XPOSIXDIGIT } /* isnd */,
- { 1, 1188, 4929, 3, 4, UNI_INTAMIL } /* intamil */,
- { 0, 9508, 3572, 4, 5, UNI_CCC__B } /* ccc=below */,
- { 0, 5986, 9420, 13, 4, UNI_NV__3_SLASH_20 } /* numericvalue=3/20 */,
- { 11, 10063, 1025, 3, 2, -UNI_SD } /* sd=no */,
- { 36, 3853, 9836, 17, 4, UNI_STERM } /* sentenceterminal=true */,
- { 17, 3870, 0, 17, 0, UNI_SMALLFORMS } /* smallformvariants */,
- { 0, 4916, 5994, 3, 3, UNI_TALU } /* istalu */,
- { 1, 5791, 5326, 13, 14, UNI_JG__MANICHAEANBETH } /* joininggroup=manichaeanbeth */,
- { 3, 2280, 9311, 3, 4, UNI_OGAM } /* isogham */,
- { 0, 1417, 9108, 24, 2, UNI_CCC__15 } /* canonicalcombiningclass=15 */,
- { 0, 10048, 5648, 3, 7, UNI_NV__1000000 } /* nv=1000000 */,
- { 1, 9488, 6730, 4, 11, UNI_KATAKANAEXT } /* blk=katakanaext */,
- { 0, 8884, 1025, 4, 2, -UNI_EXT } /* ext=no */,
- { 4, 6231, 3667, 3, 16, UNI_CYRILLICEXTC } /* incyrillicextendedc */,
- { 54, 10009, 8533, 3, 7, UNI_DT__NB } /* dt=nobreak */,
- { 13, 9768, 9888, 4, 4, UNI_ZANB } /* scx=zanb */,
- { 0, 10296, 8576, 3, 5, UNI_PATSYN } /* ispatsyn */,
- { 20, 4478, 0, 4, 0, UNI_BRAI } /* brai */,
- { 0, 4033, 6265, 16, 12, UNI_NL } /* generalcategory=letternumber */,
- { 1, 9488, 8365, 4, 7, UNI_CJKEXTC } /* blk=cjkextc */,
- { 4, 7318, 7765, 10, 1, UNI_IN__2 } /* presentin=2 */,
- { 0, 5116, 36, 14, 1, UNI_EMOD } /* emojimodifier=t */,
- { 0, 2569, 3379, 4, 5, UNI_VERTSPACE } /* vertspace */,
- { 0, 8996, 10135, 6, 3, UNI_STERM } /* sterm=yes */,
- { 0, 5687, 0, 13, 0, UNI_BLOCKELEMENTS } /* blockelements */,
- { 1, 9488, 8645, 4, 7, UNI_INTAITHAM } /* blk=taitham */,
- { 2, 10303, 0, 5, 0, UNI_XPOSIXBLANK } /* blank */,
- { 0, 8589, 9500, 7, 4, UNI_SC__CAKM } /* script=cakm */,
- { 0, 8589, 9245, 7, 4, UNI_SC__DOGR } /* script=dogr */,
- { 0, 5986, 8750, 13, 6, UNI_NV__800000 } /* numericvalue=800000 */,
- { 0, 3904, 10135, 17, 3, UNI_UIDEO } /* unifiedideograph=yes */,
- { 2, 3836, 3079, 17, 4, UNI_COPT } /* scriptextensions=copt */,
- { 1, 9768, 6253, 4, 5, UNI_KHMR } /* scx=khmer */,
- { 1, 8996, 1025, 6, 2, -UNI_STERM } /* sterm=no */,
- { 64, 9768, 8990, 4, 6, UNI_RJNG } /* scx=rejang */,
- { 1, 1188, 9331, 3, 4, UNI_INTAILE } /* intaile */,
- { 5, 8780, 7278, 6, 10, UNI_INOLDPERSIAN } /* block=oldpersian */,
- { 1, 8774, 3, 6, 1, -UNI_BIDIM } /* bidim=f */,
- { 0, 4809, 1162, 4, 2, UNI_CPRT } /* iscprt */,
- { 0, 9508, 8837, 4, 3, UNI_WB__EB } /* ccc=133 */,
- { 8, 10033, 6193, 3, 12, UNI_LB__HL } /* lb=hebrewletter */,
- { 1, 10048, 9428, 3, 3, UNI_NV__3_SLASH_8 } /* nv=3/8 */,
- { 1, 8519, 0, 7, 0, UNI_nfkdqc_values_index } /* nfkdqc= */,
- { 8, 9488, 7248, 4, 10, UNI_MISCARROWS } /* blk=miscarrows */,
- { 32, 184, 4002, 3, 15, UNI_CYPRIOTSYLLABARY } /* iscypriotsyllabary */,
- { 0, 1966, 5700, 22, 13, UNI_INSC__CONSONANTDEAD } /* indicsyllabiccategory=consonantdead */,
- { 0, 1834, 36, 22, 1, UNI_CWT } /* changeswhentitlecased=t */,
- { 121, 9277, 8091, 3, 8, UNI_ARMN } /* sc=armenian */,
- { 6, 10048, 8727, 3, 2, UNI_NV__32 } /* nv=32 */,
- { 0, 1505, 1016, 5, 2, UNI_INGREEK } /* ingreek */,
- { 1, 3836, 4448, 17, 5, UNI_BAMU } /* scriptextensions=bamum */,
- { 2, 9488, 113, 4, 35, UNI_DIACRITICALSFORSYMBOLS } /* blk=combiningdiacriticalmarksforsymbols */,
- { 1, 8942, 0, 6, 0, UNI_LYDI } /* lydian */,
- { 3, 9277, 9476, 3, 4, UNI_AVST } /* sc=avst */,
- { 0, 7418, 1, 10, 1, -UNI_XPOSIXUPPER } /* uppercase=n */,
- { 6, 9488, 719, 4, 16, UNI_CUNEIFORMNUMBERS } /* blk=cuneiformnumbers */,
- { 0, 4853, 10135, 15, 3, UNI_DT__NONE } /* nfkdquickcheck=yes */,
- { 0, 8589, 8666, 7, 7, UNI_SC__TIRH } /* script=tirhuta */,
- { 4, 184, 328, 2, 21, UNI_MATHOPERATORS } /* ismathematicaloperators */,
- { 1, 184, 600, 3, 29, UNI_CJKEXTD } /* iscjkunifiedideographsextensiond */,
- { 0, 9488, 6193, 4, 6, UNI_INHEBREW } /* blk=hebrew */,
- { 3, 8780, 720, 7, 8, UNI_INCUNEIFORM } /* block=cuneiform */,
- { 9, 9508, 6631, 4, 11, UNI_CCC__DA } /* ccc=doubleabove */,
- { 0, 4628, 3, 15, 1, UNI_EA__F } /* eastasianwidth=f */,
- { 9, 9488, 1060, 4, 27, UNI_OCR } /* blk=opticalcharacterrecognition */,
- { 0, 8589, 9440, 7, 4, UNI_SC__ADLM } /* script=adlm */,
- { 9, 10296, 7309, 3, 9, UNI_PHNX } /* isphoenician */,
- { 4, 184, 3853, 2, 16, UNI_STERM } /* issentenceterminal */,
- { 9, 9277, 9496, 3, 4, UNI_SC__BUHD } /* sc=buhd */,
- { 25, 10027, 0, 3, 0, UNI_jg_values_index } /* jg= */,
- { 4, 3836, 6193, 17, 6, UNI_HEBR } /* scriptextensions=hebrew */,
- { 0, 3097, 1417, 18, 9, UNI_DT__CAN } /* decompositiontype=canonical */,
- { 1, 7076, 7514, 3, 8, UNI_INBHAIKSUKI } /* inbhaiksuki */,
- { 3, 3836, 7359, 18, 3, UNI_SAUR } /* scriptextensions=saur */,
- { 1, 3836, 9728, 17, 4, UNI_MIAO } /* scriptextensions=plrd */,
- { 0, 3836, 8876, 17, 6, UNI_GOTH } /* scriptextensions=gothic */,
- { 0, 1273, 3, 21, 1, -UNI_CE } /* compositionexclusion=f */,
- { 5, 3836, 8547, 17, 7, UNI_OLCK } /* scriptextensions=olchiki */,
- { 2, 9768, 4385, 4, 4, UNI_TANG } /* scx=tang */,
- { 5, 9997, 25, 3, 1, UNI_BC__S } /* bc=s */,
- { 0, 6229, 26, 12, 1, UNI_JOINC } /* joincontrol=y */,
- { 61, 10048, 8051, 3, 8, UNI_NV__5_SLASH_6 } /* nv=8.33e-01 */,
- { 7, 9014, 9255, 6, 5, -UNI_UIDEO } /* uideo=false */,
- { 32, 9768, 7292, 5, 6, UNI_SOGD } /* scx=sogdian */,
- { 2, 3151, 26, 18, 1, UNI_EPRES } /* emojipresentation=y */,
- { 3, 8589, 8131, 7, 4, UNI_SC__DUPL } /* script=dupl */,
- { 1, 7218, 2640, 10, 2, UNI_LB__BA } /* linebreak=ba */,
- { 1, 8780, 5843, 6, 9, UNI_INMALAYALAM } /* block=malayalam */,
- { 17, 4916, 8667, 3, 3, UNI_TIRH } /* istirh */,
- { 0, 5324, 330, 4, 19, UNI_MATHOPERATORS } /* inmathematicaloperators */,
- { 7, 1417, 8820, 24, 2, UNI_CCC__29 } /* canonicalcombiningclass=29 */,
- { 7, 4916, 9833, 3, 3, UNI_TIBT } /* istibt */,
- { 0, 9508, 8714, 4, 2, UNI_CCC__30 } /* ccc=30 */,
- { 0, 9277, 8645, 3, 7, UNI_LANA } /* sc=taitham */,
- { 17, 6229, 9255, 12, 5, -UNI_JOINC } /* joincontrol=false */,
- { 2, 4033, 5438, 16, 14, UNI_SK } /* generalcategory=modifiersymbol */,
- { 8, 7218, 10154, 10, 2, UNI_LB__B2 } /* linebreak=b2 */,
- { 0, 47, 0, 1, 0, UNI_M } /* m */,
- { 3, 10333, 9797, 3, 3, UNI_SYRC } /* issyrc */,
- { 9, 184, 8211, 2, 8, UNI_JAMOEXTB } /* isjamoextb */,
- { 1, 10168, 0, 2, 0, UNI_CASEDLETTER } /* l& */,
- { 0, 9277, 9880, 3, 4, UNI_SC__YI } /* sc=yiii */,
- { 0, 8589, 7657, 7, 9, UNI_SC__PERM } /* script=oldpermic */,
- { 2, 9488, 2409, 4, 20, UNI_GLAGOLITICSUP } /* blk=glagoliticsupplement */,
- { 1, 184, 7188, 2, 10, UNI_KHAR } /* iskharoshthi */,
- { 4, 184, 9529, 3, 2, UNI_CWU } /* iscwu */,
- { 71, 8147, 10135, 8, 3, UNI_EXTPICT } /* extpict=yes */,
- { 6, 7325, 7923, 3, 3, UNI_IN__4 } /* in=4.0 */,
- { 0, 1417, 9949, 24, 3, UNI_CCC__DA } /* canonicalcombiningclass=234 */,
- { 5, 10291, 1823, 5, 5, UNI_POSIXLOWER } /* posixlower */,
- { 0, 2224, 6973, 3, 10, UNI_INSYLOTINAGRI } /* insylotinagri */,
- { 3, 7076, 4449, 3, 7, UNI_BAMUMSUP } /* inbamumsup */,
- { 21, 9768, 9038, 4, 6, UNI_YEZI } /* scx=yezidi */,
- { 22, 9476, 0, 4, 0, UNI_AVST } /* avst */,
- { 0, 8780, 3223, 6, 18, UNI_INPUNCTUATION } /* block=generalpunctuation */,
- { 6, 9488, 8428, 4, 7, UNI_INGRANTHA } /* blk=grantha */,
- { 0, 7325, 7877, 3, 2, UNI_IN__13 } /* in=13 */,
- { 2, 5578, 5, 15, 1, UNI_SB__SE } /* sentencebreak=se */,
- { 3, 9508, 9188, 4, 2, UNI_CCC__31 } /* ccc=31 */,
- { 7, 9488, 8358, 4, 7, UNI_CJKEXTB } /* blk=cjkextb */,
- { 0, 9277, 9624, 3, 3, UNI_LAO } /* sc=lao */,
- { 0, 184, 9548, 2, 4, UNI_DSRT } /* isdsrt */,
- { 96, 7325, 10111, 3, 3, UNI_IN__6_DOT_2 } /* in=v62 */,
- { 10, 9508, 8823, 5, 5, UNI_CCC__130 } /* ccc=ccc130 */,
- { 32, 9488, 1561, 4, 24, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* blk=supsymbolsandpictographs */,
- { 0, 10340, 25, 3, 1, UNI_VS } /* isvs */,
- { 0, 5032, 36, 14, 1, UNI_POSIXXDIGIT } /* asciihexdigit=t */,
- { 0, 9524, 9836, 4, 4, UNI_CWT } /* cwt=true */,
- { 19, 7438, 10015, 10, 3, UNI_WB__EB } /* wordbreak=ebg */,
- { 5, 10048, 8059, 3, 8, UNI_NV__1_SLASH_12 } /* nv=8.33e-02 */,
- { 4, 10290, 1823, 6, 5, UNI_XPOSIXLOWER } /* xposixlower */,
- { 1, 5739, 3, 13, 1, -UNI_GRBASE } /* graphemebase=f */,
- { 0, 184, 5242, 2, 14, UNI_LATINEXTC } /* islatinextendedc */,
- { 48, 3379, 3, 6, 1, -UNI_XPOSIXSPACE } /* space=f */,
- { 1, 10024, 38, 3, 2, UNI_XPOSIXDIGIT } /* gc=nd */,
- { 0, 10027, 6346, 3, 3, UNI_JG__NYA } /* jg=nya */,
- { 2, 2224, 8276, 3, 7, UNI_SPECIALS } /* inspecials */,
- { 2, 8780, 7308, 6, 10, UNI_INPHOENICIAN } /* block=phoenician */,
- { 3, 8780, 8337, 6, 7, UNI_INAVESTAN } /* block=avestan */,
- { 0, 9488, 4401, 4, 9, UNI_TANGUTSUP } /* blk=tangutsup */,
- { 9, 8780, 7098, 6, 10, UNI_BOXDRAWING } /* block=boxdrawing */,
- { 0, 10048, 9168, 3, 2, UNI_NV__27 } /* nv=27 */,
- { 6, 4916, 1846, 3, 4, UNI_TITLE } /* istitle */,
- { 2, 184, 9896, 2, 4, UNI_ZYYY } /* iszyyy */,
- { 1, 184, 3241, 2, 18, UNI_GEORGIANSUP } /* isgeorgiansupplement */,
- { 18, 10048, 9188, 3, 2, UNI_NV__31 } /* nv=31 */,
- { 0, 10033, 1751, 3, 2, UNI_LB__AI } /* lb=ai */,
- { 0, 10048, 8744, 3, 5, UNI_NV__70000 } /* nv=70000 */,
- { 2, 10012, 1, 3, 1, UNI_EA__N } /* ea=n */,
- { 0, 1269, 36, 25, 1, UNI_COMPEX } /* fullcompositionexclusion=t */,
- { 0, 3836, 9789, 18, 3, UNI_SHRD } /* scriptextensions=shrd */,
- { 32, 9540, 26, 4, 1, UNI_DIA } /* dia=y */,
- { 27, 1552, 0, 9, 0, UNI_gc_values_index } /* category= */,
- { 0, 9488, 5947, 4, 13, UNI_MAYANNUMERALS } /* blk=mayannumerals */,
- { 1, 7438, 1218, 10, 8, UNI_WB__KA } /* wordbreak=katakana */,
- { 0, 2329, 0, 20, 0, UNI_HLUW } /* anatolianhieroglyphs */,
- { 1, 10027, 5312, 3, 14, UNI_JG__MANICHAEANAYIN } /* jg=manichaeanayin */,
- { 0, 7318, 7469, 10, 3, UNI_IN__5 } /* presentin=5.0 */,
- { 0, 1417, 8829, 25, 5, UNI_CCC__132 } /* canonicalcombiningclass=ccc132 */,
- { 26, 3097, 68, 18, 3, UNI_DT__SUP } /* decompositiontype=sup */,
- { 20, 9240, 36, 5, 1, UNI_DASH } /* dash=t */,
- { 11, 8780, 600, 7, 29, UNI_CJKEXTD } /* block=cjkunifiedideographsextensiond */,
- { 1, 8780, 9656, 6, 4, UNI_INMIAO } /* block=miao */,
- { 20, 9997, 10039, 3, 3, UNI_BC__LRI } /* bc=lri */,
- { 0, 7325, 10114, 3, 3, UNI_IN__6_DOT_3 } /* in=v63 */,
- { 6, 5986, 9376, 13, 3, UNI_NV__1_SLASH_6 } /* numericvalue=1/6 */,
- { 0, 184, 9688, 2, 4, UNI_NKO } /* isnkoo */,
- { 0, 8780, 9245, 6, 5, UNI_INDOGRA } /* block=dogra */,
- { 5, 1417, 7826, 24, 2, UNI_CCC__12 } /* canonicalcombiningclass=12 */,
- { 1, 8589, 9724, 7, 4, UNI_PHNX } /* script=phnx */,
- { 0, 5791, 7711, 13, 9, UNI_JG__SYRIACWAW } /* joininggroup=syriacwaw */,
- { 0, 58, 0, 4, 0, UNI_IDEO } /* ideo */,
- { 2, 8780, 9860, 6, 3, UNI_INVAI } /* block=vai */,
- { 1, 9508, 5765, 4, 13, UNI_CCC__IS } /* ccc=iotasubscript */,
- { 0, 9768, 7694, 5, 8, UNI_SAMR } /* scx=samaritan */,
- { 0, 9277, 2684, 3, 19, UNI_EGYP } /* sc=egyptianhieroglyphs */,
- { 2, 5324, 6399, 4, 10, UNI_MATHALPHANUM } /* inmathalphanum */,
- { 0, 2784, 29, 4, 4, UNI_INARABIC } /* inarabic */,
- { 0, 2608, 0, 4, 0, UNI_BRAH } /* brah */,
- { 0, 4658, 10135, 15, 3, UNI_GREXT } /* graphemeextend=yes */,
- { 5, 9488, 5843, 4, 9, UNI_INMALAYALAM } /* blk=malayalam */,
- { 6, 1417, 7178, 24, 10, UNI_CCC__6 } /* canonicalcombiningclass=hanreading */,
- { 0, 4643, 9836, 15, 4, UNI_ECOMP } /* emojicomponent=true */,
- { 2, 10033, 4842, 3, 2, UNI_LB__QU } /* lb=qu */,
- { 0, 9768, 7630, 4, 9, UNI_TALU } /* scx=newtailue */,
- { 0, 9508, 8825, 4, 3, UNI_CCC__130 } /* ccc=130 */,
- { 0, 9488, 895, 4, 28, UNI_SUPPUAA } /* blk=supplementaryprivateuseareaa */,
- { 5, 3836, 9876, 17, 4, UNI_XSUX } /* scriptextensions=xsux */,
- { 1, 184, 9095, 2, 5, UNI_BUHD } /* isbuhid */,
- { 0, 9277, 859, 4, 3, UNI_SC__KNDA } /* sc=knda */,
- { 0, 5324, 6279, 4, 5, UNI_MAHJONG } /* inmahjong */,
- { 0, 4553, 0, 15, 0, UNI_CONTROLPICTURES } /* controlpictures */,
- { 0, 5986, 9904, 13, 3, UNI_NV__1_SLASH_5 } /* numericvalue=1/5 */,
- { 2, 3424, 8674, 3, 6, UNI_UCASEXT } /* inucasext */,
- { 5, 8589, 9624, 7, 3, UNI_LAO } /* script=lao */,
- { 17, 8589, 8421, 7, 7, UNI_ELYM } /* script=elymaic */,
- { 1, 184, 3633, 3, 16, UNI_CYRILLICEXTA } /* iscyrillicextendeda */,
- { 7, 8589, 9616, 7, 4, UNI_SC__KTHI } /* script=kthi */,
- { 0, 9488, 6818, 4, 11, UNI_MYANMAREXTA } /* blk=myanmarexta */,
- { 10, 1834, 9255, 22, 5, -UNI_CWT } /* changeswhentitlecased=false */,
- { 1, 1828, 9836, 6, 4, UNI_CASED } /* cased=true */,
- { 0, 9444, 7827, 4, 3, UNI_AGE__2 } /* age=2.0 */,
- { 0, 9277, 493, 3, 3, UNI_SC__HAN } /* sc=han */,
- { 194, 184, 2245, 2, 14, UNI_MEETEIMAYEKEXT } /* ismeeteimayekext */,
- { 0, 1552, 48, 9, 1, UNI_P } /* category=p */,
- { 1, 9768, 3115, 4, 4, UNI_DEVA } /* scx=deva */,
- { 0, 10333, 44, 3, 1, UNI_SK } /* issk */,
- { 0, 7218, 8236, 11, 7, UNI_LB__LF } /* linebreak=linefeed */,
- { 1, 9277, 7693, 3, 9, UNI_SAMR } /* sc=samaritan */,
- { 18, 5986, 7755, 13, 8, UNI_NV__1_SLASH_9 } /* numericvalue=1.11e-01 */,
- { 7, 184, 4049, 2, 11, UNI_GEORGIANEXT } /* isgeorgianext */,
- { 2, 8960, 9295, 6, 5, UNI_NFCQC__M } /* nfcqc=maybe */,
- { 4, 9014, 9836, 6, 4, UNI_UIDEO } /* uideo=true */,
- { 16, 10048, 7890, 3, 2, UNI_NV__33 } /* nv=33 */,
- { 0, 8589, 5171, 7, 4, UNI_CHAM } /* script=cham */,
- { 3, 5791, 4763, 13, 15, UNI_JG__MANICHAEANSADHE } /* joininggroup=manichaeansadhe */,
- { 0, 10048, 8714, 3, 6, UNI_NV__300000 } /* nv=300000 */,
- { 1, 9277, 9732, 3, 4, UNI_PRTI } /* sc=prti */,
- { 1, 8780, 5075, 7, 13, UNI_CJKCOMPATFORMS } /* block=cjkcompatforms */,
- { 20, 184, 690, 3, 29, UNI_CJKEXTG } /* iscjkunifiedideographsextensiong */,
- { 1, 184, 5522, 2, 14, UNI_PHONETICEXTSUP } /* isphoneticextsup */,
- { 34, 7248, 0, 10, 0, UNI_MISCARROWS } /* miscarrows */,
- { 3, 1966, 8687, 22, 7, UNI_INSC__VISARGA } /* indicsyllabiccategory=visarga */,
- { 17, 9508, 8835, 5, 5, UNI_WB__EB } /* ccc=ccc133 */,
- { 9, 9283, 0, 4, 0, UNI_PHLI } /* phli */,
- { 0, 9624, 0, 4, 0, UNI_LAO } /* laoo */,
- { 6, 10333, 7359, 3, 3, UNI_SAUR } /* issaur */,
- { 0, 6469, 495, 12, 7, UNI_NT__NU } /* numerictype=numeric */,
- { 1, 184, 727, 2, 2, UNI_MN } /* ismn */,
- { 51, 10033, 58, 3, 2, UNI_LB__ID } /* lb=id */,
- { 1, 9488, 9624, 4, 3, UNI_INLAO } /* blk=lao */,
- { 1, 1988, 3, 22, 1, -UNI_LOE } /* logicalorderexception=f */,
- { 0, 1513, 0, 24, 0, UNI_HIGHPUSURROGATES } /* highprivateusesurrogates */,
- { 8, 1552, 1025, 9, 2, UNI_NO } /* category=no */,
- { 1, 9768, 8428, 4, 7, UNI_GRAN } /* scx=grantha */,
- { 1, 10048, 8075, 3, 8, UNI_NV__7_SLASH_8 } /* nv=8.75e-01 */,
- { 0, 8780, 7621, 6, 9, UNI_INNABATAEAN } /* block=nabataean */,
- { 0, 184, 1274, 3, 19, UNI_CE } /* iscompositionexclusion */,
- { 0, 5791, 1511, 13, 3, UNI_JG__HAH } /* joininggroup=hah */,
- { 0, 9277, 9808, 3, 4, UNI_TALU } /* sc=talu */,
- { 2, 4033, 1059, 16, 2, UNI_SO } /* generalcategory=so */,
- { 17, 6554, 9836, 11, 4, UNI_IDC } /* idcontinue=true */,
- { 3, 3836, 4883, 17, 15, UNI_SARB } /* scriptextensions=oldsoutharabian */,
- { 8, 184, 2122, 2, 7, UNI_RADICAL } /* isradical */,
- { 1, 7325, 7826, 3, 2, UNI_IN__12 } /* in=12 */,
- { 17, 7158, 10135, 10, 3, UNI_DIA } /* diacritic=yes */,
- { 1, 8589, 7168, 7, 10, UNI_DIAK } /* script=divesakuru */,
- { 0, 9330, 0, 5, 0, UNI_TALE } /* taile */,
- { 1, 1417, 8066, 24, 2, UNI_CCC__28 } /* canonicalcombiningclass=28 */,
- { 0, 10296, 7438, 7, 4, UNI_POSIXWORD } /* isposixword */,
- { 2, 184, 1033, 2, 11, UNI_ENCLOSEDCJK } /* isenclosedcjk */,
- { 34, 7368, 0, 10, 0, UNI_SMALLFORMS } /* smallforms */,
- { 4, 184, 9900, 2, 4, UNI_ZZZZ } /* iszzzz */,
- { 3, 10027, 4748, 3, 15, UNI_JG__MANICHAEANGIMEL } /* jg=manichaeangimel */,
- { 9, 3836, 6409, 17, 4, UNI_MEND } /* scriptextensions=mend */,
- { 0, 10012, 8, 3, 1, UNI_EA__A } /* ea=a */,
- { 0, 1834, 1025, 22, 2, -UNI_CWT } /* changeswhentitlecased=no */,
- { 2, 7155, 4674, 3, 14, UNI_INHANGUL } /* ishangulsyllables */,
- { 128, 10033, 3985, 3, 16, UNI_LB__CL } /* lb=closepunctuation */,
- { 7, 10132, 495, 3, 7, UNI_WB__NU } /* wb=numeric */,
- { 0, 1, 0, 1, 0, UNI_N } /* n */,
- { 131, 5986, 8710, 13, 3, UNI_NV__600 } /* numericvalue=600 */,
- { 0, 9768, 6193, 4, 6, UNI_HEBR } /* scx=hebrew */,
- { 1, 1115, 0, 4, 0, UNI_HANG } /* hang */,
- { 0, 1417, 9121, 25, 4, UNI_CCC__18 } /* canonicalcombiningclass=ccc18 */,
- { 0, 7325, 7931, 3, 3, UNI_IN__4_DOT_1 } /* in=4.1 */,
- { 0, 9277, 8610, 3, 4, UNI_SIDD } /* sc=sidd */,
- { 0, 184, 3115, 2, 18, UNI_DEVANAGARIEXT } /* isdevanagariextended */,
- { 2, 9277, 2240, 4, 3, UNI_SC__KTHI } /* sc=kthi */,
- { 0, 5986, 7891, 13, 8, UNI_NV__1_SLASH_3 } /* numericvalue=3.33e-01 */,
- { 0, 7218, 8251, 10, 8, UNI_LB__NL } /* linebreak=nextline */,
- { 3, 9768, 9896, 4, 4, UNI_ZYYY } /* scx=zyyy */,
- { 0, 7218, 6217, 10, 12, UNI_LB__IS } /* linebreak=infixnumeric */,
- { 4, 9277, 9756, 3, 4, UNI_RUNR } /* sc=runr */,
- { 8, 9488, 9008, 4, 6, UNI_INTHAANA } /* blk=thaana */,
- { 0, 6409, 0, 12, 0, UNI_MEND } /* mendekikakui */,
- { 0, 4305, 0, 5, 0, UNI_C } /* other */,
- { 0, 7325, 8043, 3, 3, UNI_IN__8 } /* in=8.0 */,
- { 1, 9277, 9480, 3, 4, UNI_BATK } /* sc=batk */,
- { 0, 8589, 9608, 7, 4, UNI_KITS } /* script=kits */,
- { 3, 3785, 0, 4, 0, UNI_MANI } /* mani */,
- { 0, 9660, 0, 4, 0, UNI_MLYM } /* mlym */,
- { 9, 6061, 36, 12, 1, UNI_BIDIC } /* bidicontrol=t */,
- { 1, 9652, 0, 4, 0, UNI_MERC } /* merc */,
- { 0, 10024, 4568, 3, 14, UNI_SC } /* gc=currencysymbol */,
- { 168, 1856, 1025, 22, 2, -UNI_CWU } /* changeswhenuppercased=no */,
- { 0, 9488, 2203, 4, 14, UNI_INHANIFIROHINGYA } /* blk=hanifirohingya */,
- { 2, 184, 8435, 2, 6, UNI_GRBASE } /* isgrbase */,
- { 4, 8688, 5033, 3, 4, UNI_ASCII } /* isascii */,
- { 9, 9768, 4478, 4, 7, UNI_BRAI } /* scx=braille */,
- { 0, 9768, 8547, 4, 7, UNI_OLCK } /* scx=olchiki */,
- { 4, 7648, 0, 9, 0, UNI_ITAL } /* olditalic */,
- { 0, 9277, 8942, 3, 4, UNI_LYDI } /* sc=lydi */,
- { 19, 1552, 4245, 9, 10, UNI_SM } /* category=mathsymbol */,
- { 0, 8589, 8547, 7, 7, UNI_OLCK } /* script=olchiki */,
- { 1, 10132, 6917, 3, 11, UNI_WB__SQ } /* wb=singlequote */,
- { 1, 8780, 8936, 6, 6, UNI_INLYCIAN } /* block=lycian */,
- { 1, 9488, 4257, 4, 16, UNI_MISCMATHSYMBOLSB } /* blk=miscmathsymbolsb */,
- { 3, 4033, 4305, 16, 5, UNI_C } /* generalcategory=other */,
- { 0, 8780, 9065, 6, 5, UNI_INADLAM } /* block=adlam */,
- { 0, 8780, 9340, 6, 5, UNI_VSSUP } /* block=vssup */,
- { 0, 10236, 10220, 14, 11, UNI__PERL_FOLDS_TO_MULTI_CHAR } /* _perl_folds_to_multi_char */,
- { 1, 3836, 4385, 17, 4, UNI_TANG } /* scriptextensions=tang */,
- { 2, 10048, 8002, 3, 2, UNI_NV__26 } /* nv=26 */,
- { 1, 6884, 0, 11, 0, UNI_HMNG } /* pahawhhmong */,
- { 10, 2288, 2076, 4, 4, UNI_INHATRAN } /* inhatran */,
- { 32, 184, 5200, 2, 14, UNI_KANASUP } /* iskanasupplement */,
- { 33, 3097, 45, 18, 6, UNI_DT__COM } /* decompositiontype=compat */,
- { 0, 7218, 3969, 10, 16, UNI_LB__CP } /* linebreak=closeparenthesis */,
- { 16, 7318, 9967, 10, 3, UNI_IN__5_DOT_1 } /* presentin=5.1 */,
- { 0, 2032, 9255, 22, 5, -UNI__PERL_NCHAR } /* noncharactercodepoint=false */,
- { 9, 1417, 7877, 24, 2, UNI_CCC__13 } /* canonicalcombiningclass=13 */,
- { 11, 9997, 865, 3, 2, UNI_BC__WS } /* bc=ws */,
- { 1, 184, 5713, 2, 13, UNI_XPOSIXDIGIT } /* isdecimalnumber */,
- { 4, 3836, 3115, 17, 4, UNI_DEVA } /* scriptextensions=deva */,
- { 0, 8780, 2120, 7, 13, UNI_CJKRADICALSSUP } /* block=cjkradicalssup */,
- { 38, 9488, 3341, 4, 8, UNI_DINGBATS } /* blk=dingbats */,
- { 0, 5158, 0, 14, 0, UNI_INGREEK } /* greekandcoptic */,
- { 0, 3079, 0, 4, 0, UNI_COPT } /* copt */,
- { 0, 8589, 9032, 7, 6, UNI_WCHO } /* script=wancho */,
- { 0, 9277, 5171, 3, 4, UNI_CHAM } /* sc=cham */,
- { 0, 9277, 9724, 3, 4, UNI_PHNX } /* sc=phnx */,
- { 0, 9860, 0, 3, 0, UNI_VAI } /* vai */,
- { 4, 184, 7248, 2, 10, UNI_MISCARROWS } /* ismiscarrows */,
- { 68, 7738, 10135, 9, 3, UNI_XIDS } /* xidstart=yes */,
- { 21, 184, 567, 2, 2, UNI_NB } /* isnb */,
- { 8, 1417, 9216, 25, 4, UNI_CCC__84 } /* canonicalcombiningclass=ccc84 */,
- { 0, 21, 3421, 2, 4, UNI_RUMI } /* inrumi */,
- { 0, 4448, 0, 5, 0, UNI_BAMU } /* bamum */,
- { 1, 8589, 9460, 7, 4, UNI_ARMI } /* script=armi */,
- { 0, 7325, 7821, 3, 1, UNI_IN__8 } /* in=8 */,
- { 4, 9768, 4448, 4, 4, UNI_BAMU } /* scx=bamu */,
- { 16, 9488, 6012, 4, 13, UNI_VERTICALFORMS } /* blk=verticalforms */,
- { 34, 8589, 9728, 7, 4, UNI_MIAO } /* script=plrd */,
- { 0, 9444, 9397, 4, 3, UNI_AGE__2_DOT_1 } /* age=2.1 */,
- { 0, 719, 0, 30, 0, UNI_CUNEIFORMNUMBERS } /* cuneiformnumbersandpunctuation */,
- { 0, 9768, 3169, 4, 4, UNI_ETHI } /* scx=ethi */,
- { 0, 8780, 2010, 6, 22, UNI_MISCTECHNICAL } /* block=miscellaneoustechnical */,
- { 0, 10126, 0, 3, 0, UNI_vo_values_index } /* vo= */,
- { 7, 1988, 9836, 22, 4, UNI_LOE } /* logicalorderexception=true */,
- { 2, 8589, 57, 7, 2, UNI_SC__YI } /* script=yi */,
- { 0, 8400, 1025, 7, 2, -UNI_COMPEX } /* compex=no */,
- { 1, 3836, 8666, 17, 4, UNI_TIRH } /* scriptextensions=tirh */,
- { 1, 10060, 0, 3, 0, UNI_ri_values_index } /* ri= */,
- { 1, 8449, 0, 7, 0, UNI_hyphen_values_index } /* hyphen= */,
- { 0, 9488, 6829, 4, 11, UNI_MYANMAREXTB } /* blk=myanmarextb */,
- { 0, 5578, 8554, 14, 7, UNI_SB__LE } /* sentencebreak=oletter */,
- { 50, 6231, 3633, 3, 16, UNI_CYRILLICEXTA } /* incyrillicextendeda */,
- { 4, 10033, 10174, 3, 2, UNI_LB__XX } /* lb=xx */,
- { 0, 184, 9236, 3, 3, UNI_CWCM } /* iscwcm */,
- { 1, 3836, 8414, 17, 4, UNI_ELBA } /* scriptextensions=elba */,
- { 0, 184, 6277, 2, 7, UNI_MAHJONG } /* ismahjong */,
- { 0, 5791, 6906, 13, 11, UNI_JG__ROHINGYAYEH } /* joininggroup=rohingyayeh */,
- { 0, 11, 0, 3, 0, UNI_DIA } /* dia */,
- { 1, 9488, 3547, 4, 10, UNI_ALCHEMICAL } /* blk=alchemical */,
- { 0, 10060, 1025, 3, 2, -UNI_RI } /* ri=no */,
- { 23, 8954, 9255, 6, 5, -UNI__PERL_NCHAR } /* nchar=false */,
- { 11, 7738, 36, 9, 1, UNI_XIDS } /* xidstart=t */,
- { 16, 1628, 0, 4, 0, UNI_PHAG } /* phag */,
- { 0, 9488, 8351, 4, 7, UNI_CJKEXTA } /* blk=cjkexta */,
- { 5, 4916, 9825, 3, 3, UNI_TGLG } /* istglg */,
- { 2, 1417, 8835, 25, 5, UNI_WB__EB } /* canonicalcombiningclass=ccc133 */,
- { 1, 184, 3650, 3, 16, UNI_CYRILLICEXTB } /* iscyrillicextendedb */,
- { 7, 5986, 9372, 13, 3, UNI_NV__1_SLASH_4 } /* numericvalue=1/4 */,
- { 1, 10033, 6178, 3, 2, UNI_LB__ZW } /* lb=zw */,
- { 79, 1591, 3684, 3, 15, UNI_ETHIOPICEXT } /* inethiopicextended */,
- { 0, 8780, 4673, 6, 15, UNI_INHANGUL } /* block=hangulsyllables */,
- { 0, 4116, 2780, 3, 3, UNI_IDST } /* isidst */,
- { 0, 8780, 3169, 6, 18, UNI_ETHIOPICSUP } /* block=ethiopicsupplement */,
- { 195, 7325, 9991, 3, 3, UNI_IN__9 } /* in=9.0 */,
- { 1, 1537, 2549, 24, 20, UNI_INPC__TOPANDBOTTOMANDRIGHT } /* indicpositionalcategory=topandbottomandright */,
- { 2, 8589, 8888, 7, 4, UNI_HATR } /* script=hatr */,
- { 24, 9225, 0, 5, 0, UNI_XPOSIXCNTRL } /* cntrl */,
- { 17, 9768, 9568, 4, 4, UNI_GREK } /* scx=grek */,
- { 0, 9290, 0, 5, 0, UNI_math_values_index } /* math= */,
- { 0, 7218, 73, 10, 2, UNI_EMOD } /* linebreak=em */,
- { 0, 10333, 8597, 3, 6, UNI_SHRD } /* issharada */,
- { 1, 10129, 1025, 3, 2, -UNI_VS } /* vs=no */,
- { 0, 184, 660, 3, 29, UNI_CJKEXTF } /* iscjkunifiedideographsextensionf */,
- { 21, 9488, 6133, 4, 12, UNI_ETHIOPICEXTA } /* blk=ethiopicexta */,
- { 0, 9768, 9038, 4, 4, UNI_YEZI } /* scx=yezi */,
- { 0, 5791, 341, 13, 2, UNI_JG__PE } /* joininggroup=pe */,
- { 3, 9346, 3, 4, 1, -UNI_IDC } /* idc=f */,
- { 1, 9508, 8829, 5, 5, UNI_CCC__132 } /* ccc=ccc132 */,
- { 8, 2032, 1, 22, 1, -UNI__PERL_NCHAR } /* noncharactercodepoint=n */,
- { 0, 8780, 4129, 6, 9, UNI_LATIN1 } /* block=latin1sup */,
- { 0, 184, 11, 2, 2, UNI_DI } /* isdi */,
- { 5, 9230, 1025, 5, 2, -UNI_CWCF } /* cwcf=no */,
- { 1, 10063, 10135, 3, 3, UNI_SD } /* sd=yes */,
- { 3, 5986, 8059, 13, 8, UNI_NV__1_SLASH_12 } /* numericvalue=8.33e-02 */,
- { 17, 10009, 68, 3, 3, UNI_DT__SUP } /* dt=sup */,
- { 12, 9528, 10135, 4, 3, UNI_CWU } /* cwu=yes */,
- { 0, 7318, 10093, 10, 3, UNI_IN__4_DOT_1 } /* presentin=v41 */,
- { 11, 184, 5228, 2, 14, UNI_LATINEXTB } /* islatinextendedb */,
- { 32, 62, 0, 5, 0, UNI_XPOSIXGRAPH } /* graph */,
- { 49, 3836, 8299, 17, 8, UNI_TFNG } /* scriptextensions=tifinagh */,
- { 11, 9277, 9688, 3, 4, UNI_NKO } /* sc=nkoo */,
- { 0, 184, 4273, 2, 16, UNI_MYANMAREXTA } /* ismyanmarextendeda */,
- { 1, 10060, 26, 3, 1, UNI_RI } /* ri=y */,
- { 19, 10310, 8661, 4, 5, UNI_INTIBETAN } /* intibetan */,
- { 8, 9768, 2608, 4, 4, UNI_BRAH } /* scx=brah */,
- { 0, 2288, 2743, 4, 17, UNI_JAMOEXTB } /* inhanguljamoextendedb */,
- { 0, 8509, 1035, 4, 9, UNI_ENCLOSEDCJK } /* inenclosedcjk */,
- { 0, 1273, 1025, 21, 2, -UNI_CE } /* compositionexclusion=no */,
- { 0, 8894, 9836, 6, 4, UNI_JOINC } /* joinc=true */,
- { 1, 9488, 7567, 4, 9, UNI_INKHUDAWADI } /* blk=khudawadi */,
- { 6, 9556, 5585, 4, 2, UNI_WB__EB } /* gcb=eb */,
- { 1, 3836, 2469, 17, 20, UNI_HMNP } /* scriptextensions=nyiakengpuachuehmong */,
- { 0, 9768, 9892, 4, 4, UNI_QAAI } /* scx=zinh */,
- { 1, 9444, 9844, 4, 4, UNI_AGE__11 } /* age=v110 */,
- { 5, 9768, 4793, 4, 15, UNI_MERC } /* scx=meroiticcursive */,
- { 16, 9275, 7328, 5, 10, UNI_INSC__PUREKILLER } /* insc=purekiller */,
- { 2, 9488, 3547, 4, 17, UNI_ALCHEMICAL } /* blk=alchemicalsymbols */,
- { 0, 9071, 1025, 4, 2, -UNI_XPOSIXXDIGIT } /* hex=no */,
- { 1, 9277, 9696, 3, 4, UNI_OGAM } /* sc=ogam */,
- { 2, 9768, 2684, 4, 19, UNI_EGYP } /* scx=egyptianhieroglyphs */,
- { 3, 9536, 10135, 4, 3, UNI_DEP } /* dep=yes */,
- { 7, 6554, 0, 11, 0, UNI_idc_values_index } /* idcontinue= */,
- { 1, 7438, 5585, 10, 2, UNI_WB__EB } /* wordbreak=eb */,
- { 3, 9768, 9820, 4, 4, UNI_TFNG } /* scx=tfng */,
- { 0, 4033, 406, 16, 7, UNI_XPOSIXCNTRL } /* generalcategory=control */,
- { 0, 8984, 3, 6, 1, -UNI_QMARK } /* qmark=f */,
- { 0, 9768, 9335, 4, 5, UNI_TAKR } /* scx=takri */,
- { 16, 8147, 0, 7, 0, UNI_EXTPICT } /* extpict */,
- { 44, 4688, 1166, 15, 16, UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE } /* identifiertype=defaultignorable */,
- { 0, 8780, 9624, 6, 3, UNI_INLAO } /* block=lao */,
- { 24, 10027, 5944, 3, 3, UNI_JG__WAW } /* jg=waw */,
- { 1, 3836, 8840, 17, 6, UNI_CAKM } /* scriptextensions=chakma */,
- { 2, 8519, 0, 8, 0, UNI_NFKDQC__N } /* nfkdqc=n */,
- { 2, 2182, 8139, 21, 8, UNI_WB__EB } /* graphemeclusterbreak=ebasegaz */,
- { 5, 10024, 74, 3, 2, UNI_ME } /* gc=me */,
- { 1, 9520, 1, 4, 1, -UNI_CWL } /* cwl=n */,
- { 21, 10048, 8738, 3, 5, UNI_NV__60000 } /* nv=60000 */,
- { 3, 10063, 36, 3, 1, UNI_SD } /* sd=t */,
- { 0, 184, 1013, 2, 5, UNI_GREK } /* isgreek */,
- { 2, 9240, 10135, 5, 3, UNI_DASH } /* dash=yes */,
- { 14, 9768, 9832, 4, 4, UNI_TIBT } /* scx=tibt */,
- { 0, 8780, 979, 6, 27, UNI_ALPHABETICPF } /* block=alphabeticpresentationforms */,
- { 2, 8780, 3295, 6, 18, UNI_LATINEXTADDITIONAL } /* block=latinextadditional */,
- { 0, 184, 779, 2, 30, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* issymbolsandpictographsextendeda */,
- { 0, 9488, 6961, 4, 11, UNI_SUPERANDSUB } /* blk=superandsub */,
- { 1, 9350, 3, 5, 1, -UNI_XIDS } /* xids=f */,
- { 2, 8589, 8243, 7, 8, UNI_SC__MAHJ } /* script=mahajani */,
- { 0, 2409, 0, 4, 0, UNI_GLAG } /* glag */,
- { 0, 5986, 8051, 13, 8, UNI_NV__5_SLASH_6 } /* numericvalue=8.33e-01 */,
- { 0, 1552, 10176, 9, 2, UNI_ZL } /* category=zl */,
- { 4, 3133, 26, 18, 1, UNI_EBASE } /* emojimodifierbase=y */,
- { 1, 7325, 10105, 3, 3, UNI_IN__6 } /* in=v60 */,
- { 0, 10048, 8720, 3, 4, UNI_NV__4000 } /* nv=4000 */,
- { 1, 1417, 9126, 25, 4, UNI_CCC__19 } /* canonicalcombiningclass=ccc19 */,
- { 43, 3836, 9305, 17, 5, UNI_NSHU } /* scriptextensions=nushu */,
- { 0, 10027, 6325, 3, 12, UNI_JG__MALAYALAMNNA } /* jg=malayalamnna */,
- { 1, 9508, 8010, 4, 2, UNI_CCC__36 } /* ccc=36 */,
- { 0, 8780, 2722, 6, 10, UNI_JAMO } /* block=hanguljamo */,
- { 1, 6808, 0, 4, 0, UNI__PERL_SURROGATE } /* iscs */,
- { 0, 42, 0, 16, 0, UNI_CJKCOMPAT } /* cjkcompatibility */,
- { 14, 8589, 6796, 7, 11, UNI_MEDF } /* script=medefaidrin */,
- { 1, 5508, 0, 14, 0, UNI_patsyn_values_index } /* patternsyntax= */,
- { 0, 10288, 1867, 8, 5, UNI_XPOSIXUPPER } /* isxposixupper */,
- { 3, 8589, 7567, 7, 9, UNI_SC__SIND } /* script=khudawadi */,
- { 0, 7325, 10075, 3, 3, UNI_IN__2 } /* in=v20 */,
- { 24, 9604, 0, 4, 0, UNI_KHMR } /* khmr */,
- { 1, 8780, 0, 6, 42, UNI_UCASEXT } /* block=unifiedcanadianaboriginalsyllabicsextended */,
- { 1, 1537, 61, 3, 4, UNI_INDOGRA } /* indogra */,
- { 38, 10027, 6565, 3, 11, UNI_JG__AFRICANNOON } /* jg=africannoon */,
- { 1, 184, 9285, 2, 4, UNI_LIMB } /* islimb */,
- { 3, 5466, 0, 16, 0, UNI_DT__CAN } /* nfdquickcheck=no */,
- { 0, 7438, 6145, 10, 12, UNI_WB__EX } /* wordbreak=extendnumlet */,
- { 7, 1790, 10135, 22, 3, UNI_CWCM } /* changeswhencasemapped=yes */,
- { 1, 8421, 0, 4, 0, UNI_ELYM } /* elym */,
- { 0, 9488, 4001, 4, 16, UNI_CYPRIOTSYLLABARY } /* blk=cypriotsyllabary */,
- { 1, 3836, 8179, 17, 8, UNI_GURU } /* scriptextensions=gurmukhi */,
- { 3, 10006, 9255, 3, 5, -UNI_DI } /* di=false */,
- { 4, 9277, 8187, 3, 8, UNI_SC__HIRA } /* sc=hiragana */,
- { 1, 10009, 45, 3, 3, UNI_DT__COM } /* dt=com */,
- { 1, 6598, 0, 11, 0, UNI_CASEDLETTER } /* casedletter */,
- { 1, 9351, 0, 4, 0, UNI_ids_values_index } /* ids= */,
- { 0, 2950, 0, 19, 0, UNI_SUPARROWSB } /* supplementalarrowsb */,
- { 0, 2784, 8093, 4, 6, UNI_INARMENIAN } /* inarmenian */,
- { 16, 9768, 8115, 4, 8, UNI_BASS } /* scx=bassavah */,
- { 8, 8610, 0, 4, 0, UNI_SIDD } /* sidd */,
- { 2, 5032, 1025, 14, 2, -UNI_POSIXXDIGIT } /* asciihexdigit=no */,
- { 1, 8780, 660, 7, 29, UNI_CJKEXTF } /* block=cjkunifiedideographsextensionf */,
- { 35, 8589, 8171, 7, 8, UNI_SC__GUJR } /* script=gujarati */,
- { 5, 184, 8912, 2, 6, UNI_KHOJ } /* iskhojki */,
- { 0, 3836, 9708, 17, 4, UNI_ORYA } /* scriptextensions=orya */,
- { 7, 7325, 7950, 3, 1, UNI_IN__9 } /* in=9 */,
- { 0, 5986, 8714, 13, 2, UNI_NV__30 } /* numericvalue=30 */,
- { 1, 9488, 5018, 4, 14, UNI_ANCIENTSYMBOLS } /* blk=ancientsymbols */,
- { 0, 2224, 6940, 3, 10, UNI_INSORASOMPENG } /* insorasompeng */,
- { 5, 3367, 9836, 18, 4, UNI__PERL_PATWS } /* patternwhitespace=true */,
- { 4, 9488, 6025, 4, 12, UNI_ALPHABETICPF } /* blk=alphabeticpf */,
- { 0, 1417, 5648, 24, 2, UNI_CCC__10 } /* canonicalcombiningclass=10 */,
- { 3, 10024, 47, 3, 1, UNI_M } /* gc=m */,
- { 0, 3836, 8107, 17, 8, UNI_BALI } /* scriptextensions=balinese */,
- { 0, 2224, 2055, 3, 21, UNI_MODIFIERLETTERS } /* inspacingmodifierletters */,
- { 8, 3836, 7513, 17, 9, UNI_BHKS } /* scriptextensions=bhaiksuki */,
- { 38, 3836, 8484, 17, 7, UNI_MAND } /* scriptextensions=mandaic */,
- { 3, 5791, 2637, 13, 9, UNI_JG__YEHBARREE } /* joininggroup=yehbarree */,
- { 0, 4643, 3, 15, 1, -UNI_ECOMP } /* emojicomponent=f */,
- { 3, 1417, 8823, 25, 5, UNI_CCC__130 } /* canonicalcombiningclass=ccc130 */,
- { 4, 7325, 10078, 3, 3, UNI_IN__2_DOT_1 } /* in=v21 */,
- { 25, 3836, 9612, 17, 4, UNI_KNDA } /* scriptextensions=knda */,
- { 1, 10048, 9404, 3, 4, UNI_NV__13_SLASH_2 } /* nv=13/2 */,
- { 2, 21, 8338, 3, 6, UNI_INAVESTAN } /* inavestan */,
- { 2, 184, 3026, 3, 3, UNI_CHER } /* ischer */,
- { 1, 3836, 9720, 17, 4, UNI_PHLP } /* scriptextensions=phlp */,
- { 0, 7318, 7814, 10, 1, UNI_IN__7 } /* presentin=7 */,
- { 0, 9488, 5214, 4, 14, UNI_KANGXI } /* blk=kangxiradicals */,
- { 2, 3836, 8131, 17, 4, UNI_DUPL } /* scriptextensions=dupl */,
- { 16, 8780, 2141, 7, 20, UNI_CYRILLICSUP } /* block=cyrillicsupplementary */,
- { 1, 4928, 0, 15, 0, UNI_TAMILSUP } /* tamilsupplement */,
- { 1, 184, 8401, 3, 5, UNI_COMPEX } /* iscompex */,
- { 50, 1537, 3475, 24, 10, UNI_INPC__TOPANDLEFT } /* indicpositionalcategory=topandleft */,
- { 1, 7325, 9955, 3, 3, UNI_IN__3_DOT_2 } /* in=3.2 */,
- { 37, 9277, 5550, 3, 14, UNI_SC__PHLP } /* sc=psalterpahlavi */,
- { 51, 10288, 7739, 3, 7, UNI_XIDS } /* isxidstart */,
- { 4, 7318, 9970, 10, 3, UNI_IN__5_DOT_2 } /* presentin=5.2 */,
- { 0, 3547, 0, 10, 0, UNI_ALCHEMICAL } /* alchemical */,
- { 32, 9997, 3205, 3, 18, UNI_BC__FSI } /* bc=firststrongisolate */,
- { 0, 5986, 8732, 13, 5, UNI_NV__50000 } /* numericvalue=50000 */,
- { 32, 9536, 0, 4, 0, UNI_dep_values_index } /* dep= */,
- { 1, 8780, 78, 6, 10, UNI_ARABICMATH } /* block=arabicmath */,
- { 3, 184, 407, 3, 6, UNI_XPOSIXCNTRL } /* iscontrol */,
- { 0, 184, 1677, 2, 14, UNI_LATINEXTA } /* islatinextendeda */,
- { 2, 3836, 9584, 17, 4, UNI_HLUW } /* scriptextensions=hluw */,
- { 2, 9488, 0, 4, 0, UNI_blk_values_index } /* blk= */,
- { 0, 8589, 78, 7, 4, UNI_SC__ARAB } /* script=arab */,
- { 1, 184, 3667, 3, 16, UNI_CYRILLICEXTC } /* iscyrillicextendedc */,
- { 0, 8774, 26, 6, 1, UNI_BIDIM } /* bidim=y */,
- { 179, 184, 5726, 2, 13, UNI_ME } /* isenclosingmark */,
- { 5, 9270, 2549, 5, 3, UNI_INPC__TOP } /* inpc=top */,
- { 5, 9488, 9340, 4, 5, UNI_VSSUP } /* blk=vssup */,
- { 44, 8589, 8414, 7, 7, UNI_ELBA } /* script=elbasan */,
- { 4, 1189, 495, 3, 7, UNI_NT__NU } /* nt=numeric */,
- { 1, 4033, 1044, 16, 6, UNI_L } /* generalcategory=letter */,
- { 0, 4033, 5494, 16, 14, UNI_MN } /* generalcategory=nonspacingmark */,
- { 11, 10340, 1751, 3, 2, UNI_VAI } /* isvai */,
- { 20, 184, 9572, 2, 4, UNI_GUJR } /* isgujr */,
- { 8, 3836, 8291, 17, 4, UNI_TAGB } /* scriptextensions=tagb */,
- { 0, 8589, 9688, 7, 3, UNI_NKO } /* script=nko */,
- { 60, 2855, 0, 9, 0, UNI_MONG } /* mongolian */,
- { 2, 184, 2608, 2, 6, UNI_BRAH } /* isbrahmi */,
- { 0, 184, 1218, 2, 8, UNI_KANA } /* iskatakana */,
- { 0, 9536, 1, 4, 1, -UNI_DEP } /* dep=n */,
- { 3, 8780, 1513, 6, 24, UNI_HIGHPUSURROGATES } /* block=highprivateusesurrogates */,
- { 0, 7318, 10090, 10, 3, UNI_IN__4 } /* presentin=v40 */,
- { 0, 4628, 8, 15, 1, UNI_EA__A } /* eastasianwidth=a */,
- { 1, 78, 0, 10, 0, UNI_ARABICMATH } /* arabicmath */,
- { 12, 9277, 6939, 3, 4, UNI_SORA } /* sc=sora */,
- { 1, 4791, 1019, 3, 4, UNI_MUSIC } /* inmusic */,
- { 0, 7218, 2444, 10, 2, UNI_LB__HL } /* linebreak=hl */,
- { 33, 4673, 0, 15, 0, UNI_INHANGUL } /* hangulsyllables */,
- { 1, 184, 8428, 2, 7, UNI_GRAN } /* isgrantha */,
- { 4, 3382, 9255, 3, 5, -UNI_CE } /* ce=false */,
- { 2, 4033, 1563, 16, 2, UNI_PS } /* generalcategory=ps */,
- { 0, 1746, 752, 23, 4, UNI_BPT__C } /* bidipairedbrackettype=close */,
- { 0, 184, 8882, 2, 5, UNI_GREXT } /* isgrext */,
- { 3, 6231, 3026, 3, 7, UNI_INCHEROKEE } /* incherokee */,
- { 0, 184, 7098, 2, 10, UNI_BOXDRAWING } /* isboxdrawing */,
- { 0, 7540, 3, 9, 1, -UNI_EXT } /* extender=f */,
- { 0, 1591, 6134, 3, 11, UNI_ETHIOPICEXTA } /* inethiopicexta */,
- { 0, 10340, 67, 3, 4, UNI_VSSUP } /* isvssup */,
- { 2, 9520, 9836, 4, 4, UNI_CWL } /* cwl=true */,
- { 57, 8780, 6796, 6, 11, UNI_INMEDEFAIDRIN } /* block=medefaidrin */,
- { 6, 9488, 3421, 4, 18, UNI_RUMI } /* blk=ruminumeralsymbols */,
- { 12, 9265, 3, 5, 1, -UNI_IDST } /* idst=f */,
- { 4, 9508, 9208, 4, 2, UNI_CCC__35 } /* ccc=35 */,
- { 1, 6805, 187, 6, 30, UNI_MISCPICTOGRAPHS } /* inmiscellaneoussymbolsandpictographs */,
- { 5, 5466, 0, 14, 0, UNI_nfdqc_values_index } /* nfdquickcheck= */,
- { 1, 9488, 6939, 4, 11, UNI_INSORASOMPENG } /* blk=sorasompeng */,
- { 0, 9230, 36, 5, 1, UNI_CWCF } /* cwcf=t */,
- { 1, 9444, 7821, 4, 1, UNI_AGE__8 } /* age=8 */,
- { 0, 6554, 9255, 11, 5, -UNI_IDC } /* idcontinue=false */,
- { 0, 9277, 7291, 3, 7, UNI_SC__SOGD } /* sc=sogdian */,
- { 13, 8589, 9285, 7, 4, UNI_SC__LIMB } /* script=limb */,
- { 3, 3836, 9496, 17, 4, UNI_BUHD } /* scriptextensions=buhd */,
- { 0, 2931, 0, 19, 0, UNI_SUPARROWSA } /* supplementalarrowsa */,
- { 64, 184, 2684, 2, 19, UNI_EGYP } /* isegyptianhieroglyphs */,
- { 2, 8509, 811, 4, 27, UNI_ENCLOSEDIDEOGRAPHICSUP } /* inenclosedideographicsupplement */,
- { 0, 9277, 6793, 5, 2, UNI_KHMR } /* sc=khmr */,
- { 0, 8780, 1319, 6, 25, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* block=symbolsandpictographsexta */,
- { 69, 5986, 8820, 13, 2, UNI_NV__29 } /* numericvalue=29 */,
- { 0, 184, 5947, 2, 13, UNI_MAYANNUMERALS } /* ismayannumerals */,
- { 9, 6805, 2023, 6, 9, UNI_MISCTECHNICAL } /* inmisctechnical */,
- { 1, 9277, 8603, 3, 7, UNI_SHAW } /* sc=shavian */,
- { 0, 1828, 10135, 6, 3, UNI_CASED } /* cased=yes */,
- { 0, 9768, 4478, 4, 4, UNI_BRAI } /* scx=brai */,
- { 5, 9768, 8666, 4, 7, UNI_TIRH } /* scx=tirhuta */,
- { 0, 9275, 7639, 5, 9, UNI_INSC__NONJOINER } /* insc=nonjoiner */,
- { 1, 1114, 36, 26, 1, UNI_CWKCF } /* changeswhennfkccasefolded=t */,
- { 0, 3836, 9564, 17, 4, UNI_GONM } /* scriptextensions=gonm */,
- { 0, 8589, 9612, 7, 4, UNI_SC__KNDA } /* script=knda */,
- { 0, 4958, 0, 15, 0, UNI_UPPERCASELETTER } /* uppercaseletter */,
- { 1, 10333, 4149, 3, 3, UNI_SARB } /* issarb */,
- { 7, 1828, 1, 6, 1, -UNI_CASED } /* cased=n */,
- { 0, 9277, 9002, 3, 4, UNI_SC__TELU } /* sc=telu */,
- { 0, 9444, 9384, 4, 4, UNI_AGE__10 } /* age=10.0 */,
- { 0, 8780, 3921, 6, 16, UNI_ARABICSUP } /* block=arabicsupplement */,
- { 0, 8589, 9532, 7, 4, UNI_SC__CYRL } /* script=cyrl */,
- { 1, 5986, 9436, 13, 4, UNI_NV__7_SLASH_12 } /* numericvalue=7/12 */,
- { 1, 1561, 0, 24, 0, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* supsymbolsandpictographs */,
- { 0, 4916, 4402, 3, 15, UNI_TANGUTSUP } /* istangutsupplement */,
- { 48, 7325, 9840, 3, 4, UNI_IN__10 } /* in=v100 */,
- { 1, 7325, 10108, 3, 3, UNI_IN__6_DOT_1 } /* in=v61 */,
- { 2, 7318, 7755, 10, 3, UNI_IN__1_DOT_1 } /* presentin=1.1 */,
- { 7, 9070, 0, 4, 0, UNI_POSIXXDIGIT } /* ahex */,
- { 1, 3836, 7188, 17, 4, UNI_KHAR } /* scriptextensions=khar */,
- { 0, 719, 0, 9, 0, UNI_XSUX } /* cuneiform */,
- { 96, 8780, 4448, 6, 8, UNI_BAMUMSUP } /* block=bamumsup */,
- { 0, 9488, 1441, 4, 10, UNI_CJKSYMBOLS } /* blk=cjksymbols */,
- { 21, 10132, 6653, 3, 11, UNI_WB__DQ } /* wb=doublequote */,
- { 1, 8780, 6972, 6, 11, UNI_INSYLOTINAGRI } /* block=sylotinagri */,
- { 0, 3836, 2817, 17, 19, UNI_MERO } /* scriptextensions=meroitichieroglyphs */,
- { 0, 184, 3683, 2, 16, UNI_ETHIOPICEXT } /* isethiopicextended */,
- { 0, 9014, 1, 6, 1, -UNI_UIDEO } /* uideo=n */,
- { 1, 8400, 1, 7, 1, -UNI_COMPEX } /* compex=n */,
- { 0, 9277, 8888, 3, 6, UNI_HATR } /* sc=hatran */,
- { 0, 1166, 9836, 26, 4, UNI_DI } /* defaultignorablecodepoint=true */,
- { 0, 10291, 1867, 5, 5, UNI_POSIXUPPER } /* posixupper */,
- { 0, 6231, 3650, 3, 16, UNI_CYRILLICEXTB } /* incyrillicextendedb */,
- { 1, 8589, 493, 7, 3, UNI_SC__HAN } /* script=han */,
- { 0, 8780, 2099, 7, 20, UNI_CJKCOMPATFORMS } /* block=cjkcompatibilityforms */,
- { 2, 5986, 7979, 13, 8, UNI_NV__3_SLASH_5 } /* numericvalue=6.00e-01 */,
- { 2, 10048, 7922, 3, 2, UNI_NV__24 } /* nv=24 */,
- { 3, 2469, 0, 20, 0, UNI_HMNP } /* nyiakengpuachuehmong */,
- { 25, 4829, 2411, 4, 11, UNI_GLAGOLITICSUP } /* inglagoliticsup */,
- { 3, 21, 4145, 2, 16, UNI_LINEARBIDEOGRAMS } /* inlinearbideograms */,
- { 0, 809, 0, 29, 0, UNI_ENCLOSEDIDEOGRAPHICSUP } /* enclosedideographicsupplement */,
- { 0, 1856, 1, 22, 1, -UNI_CWU } /* changeswhenuppercased=n */,
- { 0, 184, 2141, 3, 20, UNI_CYRILLICSUP } /* iscyrillicsupplementary */,
- { 0, 5986, 9188, 13, 2, UNI_NV__31 } /* numericvalue=31 */,
- { 2, 8780, 43, 7, 35, UNI_CJKCOMPATIDEOGRAPHSSUP } /* block=cjkcompatibilityideographssupplement */,
- { 1, 10033, 23, 3, 2, UNI_LB__AL } /* lb=al */,
- { 0, 10027, 87, 3, 2, UNI_JG__HE } /* jg=he */,
- { 4, 10132, 108, 3, 2, UNI_WB__MB } /* wb=mb */,
- { 2, 4033, 1465, 16, 13, UNI_M } /* generalcategory=combiningmark */,
- { 1, 9325, 0, 5, 0, UNI_RUNR } /* runic */,
- { 1, 1552, 727, 9, 2, UNI_MN } /* category=mn */,
- { 0, 7088, 10054, 10, 3, UNI_BC__PDF } /* bidiclass=pdf */,
- { 1, 9656, 0, 4, 0, UNI_MIAO } /* miao */,
- { 0, 2969, 0, 19, 0, UNI_SUPARROWSC } /* supplementalarrowsc */,
- { 1, 9508, 8708, 4, 3, UNI_CCC__216 } /* ccc=216 */,
- { 0, 9768, 9616, 4, 4, UNI_KTHI } /* scx=kthi */,
- { 0, 6609, 36, 11, 1, UNI_DEP } /* deprecated=t */,
- { 0, 8780, 510, 7, 29, UNI_CJKEXTA } /* block=cjkunifiedideographsextensiona */,
- { 6, 10027, 6572, 3, 4, UNI_JG__NOON } /* jg=noon */,
- { 1, 2182, 1194, 21, 2, UNI_LB__LF } /* graphemeclusterbreak=lf */,
- { 0, 8589, 4478, 7, 4, UNI_BRAI } /* script=brai */,
- { 1, 9768, 9576, 4, 4, UNI_GURU } /* scx=guru */,
- { 0, 8780, 1006, 6, 27, UNI_ANCIENTGREEKMUSIC } /* block=ancientgreekmusicalnotation */,
- { 0, 8858, 9836, 6, 4, UNI_ECOMP } /* ecomp=true */,
- { 16, 8780, 3241, 6, 8, UNI_INGEORGIAN } /* block=georgian */,
- { 0, 5739, 0, 12, 0, UNI_GRBASE } /* graphemebase */,
- { 40, 4928, 0, 5, 0, UNI_TAML } /* tamil */,
- { 0, 10024, 24, 3, 1, UNI_L } /* gc=l */,
- { 0, 9768, 9793, 5, 3, UNI_SOGO } /* scx=sogo */,
- { 25, 1768, 3, 22, 1, -UNI_CWCF } /* changeswhencasefolded=f */,
- { 29, 1417, 7754, 24, 2, UNI_CCC__11 } /* canonicalcombiningclass=11 */,
- { 0, 8589, 7651, 7, 4, UNI_ITAL } /* script=ital */,
- { 0, 9488, 8393, 4, 7, UNI_CJKEXTG } /* blk=cjkextg */,
- { 1, 9508, 18, 4, 1, UNI_CCC__R } /* ccc=r */,
- { 34, 8688, 7411, 3, 7, UNI_ASSIGNED } /* isassigned */,
- { 0, 21, 3295, 2, 18, UNI_LATINEXTADDITIONAL } /* inlatinextadditional */,
- { 1, 9997, 4464, 4, 14, UNI_BC__BN } /* bc=boundaryneutral */,
- { 0, 2760, 9, 19, 2, UNI_HST__NA } /* hangulsyllabletype=na */,
- { 1, 7318, 7806, 10, 1, UNI_IN__6 } /* presentin=6 */,
- { 43, 10033, 6587, 3, 11, UNI_LB__BB } /* lb=breakbefore */,
- { 1, 9716, 0, 4, 0, UNI_pcm_values_index } /* pcm= */,
- { 0, 9277, 1628, 3, 4, UNI_SC__PHAG } /* sc=phag */,
- { 3, 2529, 9255, 20, 5, -UNI_TERM } /* terminalpunctuation=false */,
- { 0, 9488, 5032, 4, 5, UNI_ASCII } /* blk=ascii */,
- { 0, 9488, 8484, 4, 7, UNI_INMANDAIC } /* blk=mandaic */,
- { 8, 8852, 1, 6, 1, -UNI_CWKCF } /* cwkcf=n */,
- { 4, 7325, 7867, 3, 3, UNI_IN__3_DOT_1 } /* in=3.1 */,
- { 0, 9275, 1608, 5, 23, UNI_INSC__CONSONANTPRECEDINGREPHA } /* insc=consonantprecedingrepha */,
- { 0, 1273, 9255, 21, 5, -UNI_CE } /* compositionexclusion=false */,
- { 1, 8996, 1, 6, 1, -UNI_STERM } /* sterm=n */,
- { 1, 9792, 0, 4, 0, UNI_SOGO } /* sogo */,
- { 0, 184, 6409, 2, 12, UNI_MEND } /* ismendekikakui */,
- { 3, 9508, 9168, 4, 2, UNI_CCC__27 } /* ccc=27 */,
- { 5, 4853, 26, 15, 1, UNI_DT__NONE } /* nfkdquickcheck=y */,
- { 6, 9277, 8344, 3, 7, UNI_SC__BENG } /* sc=bengali */,
- { 2, 9277, 2469, 3, 20, UNI_HMNP } /* sc=nyiakengpuachuehmong */,
- { 1, 1417, 9928, 24, 3, UNI_CCC__BR } /* canonicalcombiningclass=222 */,
- { 0, 3836, 3937, 17, 4, UNI_BOPO } /* scriptextensions=bopo */,
- { 4, 3836, 7118, 17, 10, UNI_CHRS } /* scriptextensions=chorasmian */,
- { 6, 8589, 9756, 7, 4, UNI_RUNR } /* script=runr */,
- { 0, 9277, 5003, 3, 15, UNI_ZANB } /* sc=zanabazarsquare */,
- { 0, 2182, 6178, 21, 3, UNI_LB__ZWJ } /* graphemeclusterbreak=zwj */,
- { 2, 9508, 5377, 4, 2, UNI_CCC__7 } /* ccc=nk */,
- { 0, 2779, 1, 19, 1, -UNI_IDST } /* idstrinaryoperator=n */,
- { 2, 9488, 2010, 4, 22, UNI_MISCTECHNICAL } /* blk=miscellaneoustechnical */,
- { 19, 1966, 0, 22, 0, UNI_insc_values_index } /* indicsyllabiccategory= */,
- { 0, 9277, 7288, 3, 10, UNI_SOGO } /* sc=oldsogdian */,
- { 2, 9488, 9688, 4, 3, UNI_INNKO } /* blk=nko */,
- { 16, 8589, 8123, 7, 4, UNI_SC__BUGI } /* script=bugi */,
- { 1, 5986, 8756, 13, 3, UNI_NV__900 } /* numericvalue=900 */,
- { 0, 9235, 3, 5, 1, -UNI_CWCM } /* cwcm=f */,
- { 6, 8589, 9704, 7, 4, UNI_ORKH } /* script=orkh */,
- { 4, 8780, 4808, 6, 15, UNI_MISCPICTOGRAPHS } /* block=miscpictographs */,
- { 2, 9520, 1025, 4, 2, -UNI_CWL } /* cwl=no */,
- { 0, 9277, 9720, 3, 4, UNI_SC__PHLP } /* sc=phlp */,
- { 64, 7738, 0, 8, 0, UNI_XIDS } /* xidstart */,
- { 42, 9768, 5284, 4, 4, UNI_LISU } /* scx=lisu */,
- { 0, 8561, 0, 4, 0, UNI_OSMA } /* osma */,
- { 145, 6241, 6664, 12, 11, UNI_JT__D } /* joiningtype=dualjoining */,
- { 4, 8882, 26, 6, 1, UNI_GREXT } /* grext=y */,
- { 3, 1552, 1822, 9, 2, UNI_NL } /* category=nl */,
- { 5, 3529, 10135, 18, 3, UNI_VS } /* variationselector=yes */,
- { 0, 7675, 0, 4, 0, UNI_PALM } /* palm */,
- { 0, 10009, 8195, 3, 8, UNI_DT__ISO } /* dt=isolated */,
- { 16, 7504, 0, 9, 0, UNI_ARABICPFB } /* arabicpfb */,
- { 0, 9760, 0, 4, 0, UNI_SAMR } /* samr */,
- { 1, 9508, 7821, 4, 1, UNI_CCC__8 } /* ccc=8 */,
- { 2, 184, 9503, 2, 2, UNI_MC } /* ismc */,
- { 2, 3836, 8924, 17, 4, UNI_LEPC } /* scriptextensions=lepc */,
- { 0, 9556, 70, 4, 2, UNI_GCB__PP } /* gcb=pp */,
- { 3, 184, 8428, 2, 4, UNI_GRAN } /* isgran */,
- { 49, 6576, 9836, 11, 4, UNI_XPOSIXALPHA } /* alphabetic=true */,
- { 0, 10048, 9368, 3, 4, UNI_NV__1_SLASH_20 } /* nv=1/20 */,
- { 15, 9488, 78, 4, 10, UNI_ARABICMATH } /* blk=arabicmath */,
- { 0, 8864, 36, 6, 1, UNI_EMOJI } /* emoji=t */,
- { 1, 9350, 9255, 5, 5, -UNI_XIDS } /* xids=false */,
- { 1, 7438, 6178, 10, 3, UNI_LB__ZWJ } /* wordbreak=zwj */,
- { 40, 4928, 0, 8, 0, UNI_TAMILSUP } /* tamilsup */,
- { 0, 9270, 6518, 3, 11, UNI_PLAYINGCARDS } /* inplayingcards */,
- { 31, 9275, 4823, 5, 15, UNI_INSC__MODIFYINGLETTER } /* insc=modifyingletter */,
- { 0, 3836, 9085, 17, 5, UNI_BATK } /* scriptextensions=batak */,
- { 0, 8688, 3548, 3, 16, UNI_ALCHEMICAL } /* isalchemicalsymbols */,
- { 0, 9508, 9203, 4, 2, UNI_CCC__34 } /* ccc=34 */,
- { 7, 2589, 0, 19, 0, UNI_ANCIENTGREEKNUMBERS } /* ancientgreeknumbers */,
- { 2, 10006, 36, 3, 1, UNI_DI } /* di=t */,
- { 0, 8997, 9255, 5, 5, -UNI_TERM } /* term=false */,
- { 0, 10030, 6, 3, 1, UNI_JT__D } /* jt=d */,
- { 1, 9768, 2203, 4, 14, UNI_ROHG } /* scx=hanifirohingya */,
- { 1, 184, 24, 2, 1, UNI_L } /* isl */,
- { 1, 2760, 7238, 19, 10, UNI_LB__H2 } /* hangulsyllabletype=lvsyllable */,
- { 4, 8589, 8498, 7, 4, UNI_SC__MULT } /* script=mult */,
- { 0, 1114, 10135, 26, 3, UNI_CWKCF } /* changeswhennfkccasefolded=yes */,
- { 0, 3985, 0, 16, 0, UNI_PE } /* closepunctuation */,
- { 10, 9768, 8491, 4, 4, UNI_MARC } /* scx=marc */,
- { 1, 9768, 4273, 4, 7, UNI_MYMR } /* scx=myanmar */,
- { 4, 5466, 10135, 14, 3, UNI_NFDQC__Y } /* nfdquickcheck=yes */,
- { 1, 5986, 8066, 13, 2, UNI_NV__28 } /* numericvalue=28 */,
- { 1, 7228, 3, 10, 1, -UNI_XPOSIXLOWER } /* lowercase=f */,
- { 139, 8780, 2912, 6, 9, UNI_INSUNDANESE } /* block=sundanese */,
- { 0, 5746, 9836, 6, 4, UNI_EBASE } /* ebase=true */,
- { 1, 5791, 9044, 13, 4, UNI_JG__YUDH } /* joininggroup=yudh */,
- { 0, 8780, 1654, 6, 23, UNI_COMPATJAMO } /* block=hangulcompatibilityjamo */,
- { 22, 10132, 138, 3, 2, UNI_WB__FO } /* wb=fo */,
- { 0, 10027, 10057, 3, 3, UNI_JG__REH } /* jg=reh */,
- { 0, 5986, 9424, 13, 4, UNI_NV__3_SLASH_64 } /* numericvalue=3/64 */,
- { 0, 8589, 7359, 8, 9, UNI_SAUR } /* script=saurashtra */,
- { 4, 1417, 3564, 24, 17, UNI_WB__EB } /* canonicalcombiningclass=attachedbelowleft */,
- { 0, 10033, 6178, 3, 3, UNI_LB__ZWJ } /* lb=zwj */,
- { 3, 8762, 1, 6, 1, -UNI_XPOSIXALPHA } /* alpha=n */,
- { 8, 7088, 8, 10, 2, UNI_BC__AN } /* bidiclass=an */,
- { 1, 184, 18, 2, 2, UNI_RI } /* isri */,
- { 17, 10027, 5382, 3, 14, UNI_JG__MANICHAEANQOPH } /* jg=manichaeanqoph */,
- { 1, 9768, 7660, 4, 4, UNI_PERM } /* scx=perm */,
- { 0, 3836, 9464, 17, 4, UNI_ARMN } /* scriptextensions=armn */,
- { 0, 512, 0, 16, 0, UNI_UIDEO } /* unifiedideograph */,
- { 0, 9488, 2245, 4, 21, UNI_MEETEIMAYEKEXT } /* blk=meeteimayekextensions */,
- { 3, 7738, 9255, 9, 5, -UNI_XIDS } /* xidstart=false */,
- { 33, 8694, 10135, 7, 3, UNI_XPOSIXSPACE } /* wspace=yes */,
- { 17, 9444, 7950, 4, 1, UNI_AGE__9 } /* age=9 */,
- { 74, 2817, 0, 19, 0, UNI_MERO } /* meroitichieroglyphs */,
- { 0, 8589, 9620, 7, 4, UNI_LANA } /* script=lana */,
- { 0, 9768, 5003, 4, 15, UNI_ZANB } /* scx=zanabazarsquare */,
- { 1, 5746, 1, 6, 1, -UNI_EBASE } /* ebase=n */,
- { 0, 8780, 9032, 6, 6, UNI_INWANCHO } /* block=wancho */,
- { 8, 5284, 0, 4, 0, UNI_LISU } /* lisu */,
- { 20, 1900, 0, 22, 0, UNI_INDICNUMBERFORMS } /* commonindicnumberforms */,
- { 0, 6576, 10135, 11, 3, UNI_XPOSIXALPHA } /* alphabetic=yes */,
- { 0, 1006, 0, 17, 0, UNI_ANCIENTGREEKMUSIC } /* ancientgreekmusic */,
- { 0, 5986, 8714, 13, 3, UNI_NV__300 } /* numericvalue=300 */,
- { 0, 3043, 0, 18, 0, UNI_HALFMARKS } /* combininghalfmarks */,
- { 0, 9277, 9335, 3, 4, UNI_SC__TAKR } /* sc=takr */,
- { 8, 7738, 0, 9, 0, UNI_xids_values_index } /* xidstart= */,
- { 0, 184, 9756, 2, 4, UNI_RUNR } /* isrunr */,
- { 1, 184, 7188, 2, 4, UNI_KHAR } /* iskhar */,
- { 3, 8884, 1, 4, 1, -UNI_EXT } /* ext=n */,
- { 4, 9351, 10135, 4, 3, UNI_IDS } /* ids=yes */,
- { 1, 184, 3169, 2, 4, UNI_ETHI } /* isethi */,
- { 10, 2224, 1345, 3, 24, UNI_SYMBOLSFORLEGACYCOMPUTING } /* insymbolsforlegacycomputing */,
- { 2, 8780, 3026, 7, 17, UNI_CHEROKEESUP } /* block=cherokeesupplement */,
- { 4, 9444, 9844, 4, 3, UNI_IN__1_DOT_1 } /* age=v11 */,
- { 0, 9768, 382, 4, 4, UNI_EGYP } /* scx=egyp */,
- { 89, 3277, 0, 18, 0, UNI_PI } /* initialpunctuation */,
- { 4, 9488, 9664, 4, 3, UNI_INMRO } /* blk=mro */,
- { 0, 9277, 8561, 3, 4, UNI_OSMA } /* sc=osma */,
- { 0, 3098, 0, 5, 0, UNI_ECOMP } /* ecomp */,
- { 0, 10012, 1204, 3, 9, UNI_EA__F } /* ea=fullwidth */,
- { 16, 1537, 9, 24, 2, UNI_INPC__NA } /* indicpositionalcategory=na */,
- { 0, 10048, 7874, 3, 2, UNI_NV__23 } /* nv=23 */,
- { 0, 5791, 5354, 13, 14, UNI_JG__MANICHAEANHETH } /* joininggroup=manichaeanheth */,
- { 1, 1114, 1025, 26, 2, -UNI_CWKCF } /* changeswhennfkccasefolded=no */,
- { 2, 3853, 9255, 17, 5, -UNI_STERM } /* sentenceterminal=false */,
- { 0, 7088, 2268, 10, 3, UNI_BC__PDI } /* bidiclass=pdi */,
- { 2, 184, 9616, 2, 4, UNI_KTHI } /* iskthi */,
- { 4, 10027, 5, 3, 1, UNI_JG__E } /* jg=e */,
- { 0, 1344, 0, 25, 0, UNI_SYMBOLSFORLEGACYCOMPUTING } /* symbolsforlegacycomputing */,
- { 0, 2703, 0, 19, 0, UNI_ENCLOSEDALPHANUMSUP } /* enclosedalphanumsup */,
- { 1, 7318, 9852, 10, 4, UNI_IN__12_DOT_1 } /* presentin=v121 */,
- { 1, 8589, 2608, 7, 4, UNI_BRAH } /* script=brah */,
- { 58, 9488, 6109, 4, 12, UNI_CYRILLICEXTB } /* blk=cyrillicextb */,
- { 35, 6231, 720, 3, 29, UNI_CUNEIFORMNUMBERS } /* incuneiformnumbersandpunctuation */,
- { 98, 9277, 9828, 3, 4, UNI_THAI } /* sc=thai */,
- { 37, 2288, 3055, 5, 6, UNI_HALFMARKS } /* inhalfmarks */,
- { 7, 5986, 8727, 13, 2, UNI_NV__32 } /* numericvalue=32 */,
- { 0, 8852, 0, 5, 0, UNI_CWKCF } /* cwkcf */,
- { 2, 9488, 6807, 4, 11, UNI_MISCSYMBOLS } /* blk=miscsymbols */,
- { 1, 8589, 9872, 7, 4, UNI_XPEO } /* script=xpeo */,
- { 3, 1979, 5818, 10, 12, UNI_ZL } /* category=lineseparator */,
- { 3, 1417, 3572, 24, 5, UNI_CCC__B } /* canonicalcombiningclass=below */,
- { 17, 1369, 0, 24, 0, UNI_ARABICPFA } /* arabicpresentationformsa */,
- { 82, 9262, 751, 3, 5, UNI_SB__CL } /* sb=close */,
- { 13, 2529, 0, 21, 0, UNI_TERM } /* terminalpunctuation=t */,
- { 3, 9488, 4241, 4, 16, UNI_MISCMATHSYMBOLSA } /* blk=miscmathsymbolsa */,
- { 0, 9488, 8386, 4, 7, UNI_CJKEXTF } /* blk=cjkextf */,
- { 12, 8780, 1033, 6, 11, UNI_ENCLOSEDCJK } /* block=enclosedcjk */,
- { 1, 9277, 8428, 3, 7, UNI_SC__GRAN } /* sc=grantha */,
- { 0, 749, 0, 16, 0, UNI_ENCLOSEDALPHANUM } /* enclosedalphanum */,
- { 0, 9488, 1369, 4, 24, UNI_ARABICPFA } /* blk=arabicpresentationformsa */,
- { 2, 3331, 0, 18, 0, UNI_ORNAMENTALDINGBATS } /* ornamentaldingbats */,
- { 1, 9524, 1, 4, 1, -UNI_CWT } /* cwt=n */,
- { 0, 7076, 4449, 3, 14, UNI_BAMUMSUP } /* inbamumsupplement */,
- { 2, 7318, 7469, 10, 1, UNI_IN__5 } /* presentin=5 */,
- { 0, 9230, 0, 4, 0, UNI_CWCF } /* cwcf */,
- { 1, 9277, 9688, 3, 3, UNI_NKO } /* sc=nko */,
- { 0, 8631, 0, 7, 0, UNI_SUPPUAB } /* suppuab */,
- { 142, 9540, 9255, 4, 5, -UNI_DIA } /* dia=false */,
- { 2, 4033, 4568, 16, 14, UNI_SC } /* generalcategory=currencysymbol */,
- { 30, 8870, 26, 6, 1, UNI_EPRES } /* epres=y */,
- { 1, 9768, 6886, 5, 3, UNI_SHAW } /* scx=shaw */,
- { 1, 5032, 26, 14, 1, UNI_POSIXXDIGIT } /* asciihexdigit=y */,
- { 6, 5986, 9910, 13, 3, UNI_NV__1_SLASH_9 } /* numericvalue=1/9 */,
- { 0, 3836, 9688, 17, 4, UNI_NKO } /* scriptextensions=nkoo */,
- { 0, 9277, 9780, 3, 4, UNI_SHAW } /* sc=shaw */,
- { 6, 10048, 7950, 3, 1, UNI_NV__9 } /* nv=9 */,
- { 0, 7325, 9401, 3, 3, UNI_IN__3 } /* in=3.0 */,
- { 24, 5739, 26, 13, 1, UNI_GRBASE } /* graphemebase=y */,
- { 3, 184, 2836, 2, 19, UNI_MODIFIERTONELETTERS } /* ismodifiertoneletters */,
- { 2, 1834, 0, 22, 0, UNI_cwt_values_index } /* changeswhentitlecased= */,
- { 0, 184, 951, 2, 28, UNI_VSSUP } /* isvariationselectorssupplement */,
- { 0, 9768, 9448, 4, 4, UNI_AGHB } /* scx=aghb */,
- { 1, 9768, 9789, 5, 3, UNI_SHRD } /* scx=shrd */,
- { 0, 9508, 8805, 5, 5, UNI_CCC__118 } /* ccc=ccc118 */,
- { 6, 6085, 0, 12, 0, UNI_CHESSSYMBOLS } /* chesssymbols */,
- { 3, 10048, 8710, 3, 2, UNI_NV__60 } /* nv=60 */,
- { 0, 3097, 10069, 18, 3, UNI_DT__SQR } /* decompositiontype=sqr */,
- { 1, 6553, 1, 12, 1, -UNI_XIDC } /* xidcontinue=n */,
- { 0, 8147, 36, 8, 1, UNI_EXTPICT } /* extpict=t */,
- { 1, 8780, 809, 6, 22, UNI_ENCLOSEDIDEOGRAPHICSUP } /* block=enclosedideographicsup */,
- { 5, 117, 4704, 3, 14, UNI_INIMPERIALARAMAIC } /* inimperialaramaic */,
- { 24, 9277, 3937, 3, 8, UNI_SC__BOPO } /* sc=bopomofo */,
- { 0, 8996, 0, 5, 0, UNI_STERM } /* sterm */,
- { 5, 184, 6620, 2, 6, UNI_DOMINO } /* isdomino */,
- { 0, 3836, 4478, 17, 7, UNI_BRAI } /* scriptextensions=braille */,
- { 3, 8147, 0, 8, 0, UNI_extpict_values_index } /* extpict= */,
- { 1, 4422, 3117, 4, 8, UNI_INDEVANAGARI } /* indevanagari */,
- { 0, 5578, 751, 14, 2, UNI_SB__CL } /* sentencebreak=cl */,
- { 0, 10048, 7765, 3, 2, UNI_NV__25 } /* nv=25 */,
- { 7, 8954, 0, 6, 0, UNI_nchar_values_index } /* nchar= */,
- { 26, 9488, 7118, 4, 10, UNI_INCHORASMIAN } /* blk=chorasmian */,
- { 5, 184, 1466, 3, 12, UNI_M } /* iscombiningmark */,
- { 0, 10296, 10309, 3, 4, UNI_XPOSIXPRINT } /* isprint */,
- { 1, 10048, 0, 3, 0, UNI_nv_values_index } /* nv= */,
- { 8, 7218, 7268, 10, 10, UNI_LB__NS } /* linebreak=nonstarter */,
- { 2, 5791, 4177, 13, 16, UNI_JG__MANICHAEANDALETH } /* joininggroup=manichaeandaleth */,
- { 5, 8589, 8606, 10, 4, UNI_SHAW } /* script=shavian */,
- { 1, 9688, 0, 4, 0, UNI_NKO } /* nkoo */,
- { 0, 8780, 2589, 6, 19, UNI_ANCIENTGREEKNUMBERS } /* block=ancientgreeknumbers */,
- { 0, 8589, 9696, 7, 4, UNI_OGAM } /* script=ogam */,
- { 33, 10027, 6774, 3, 11, UNI_JG__MALAYALAMJA } /* jg=malayalamja */,
- { 0, 3853, 10135, 17, 3, UNI_STERM } /* sentenceterminal=yes */,
- { 17, 2288, 2724, 4, 17, UNI_JAMOEXTA } /* inhanguljamoextendeda */,
- { 0, 7155, 9585, 3, 3, UNI_HLUW } /* ishluw */,
- { 0, 10048, 9376, 3, 4, UNI_NV__1_SLASH_64 } /* nv=1/64 */,
- { 0, 184, 3133, 2, 5, UNI_EMOJI } /* isemoji */,
- { 42, 2140, 0, 18, 0, UNI_CYRILLICSUP } /* cyrillicsupplement */,
- { 4, 184, 4793, 2, 15, UNI_MERC } /* ismeroiticcursive */,
- { 11, 7540, 9836, 9, 4, UNI_EXT } /* extender=true */,
- { 0, 78, 0, 6, 0, UNI_ARAB } /* arabic */,
- { 0, 9520, 9255, 4, 5, -UNI_CWL } /* cwl=false */,
- { 1, 184, 2032, 2, 21, UNI__PERL_NCHAR } /* isnoncharactercodepoint */,
- { 5, 8351, 0, 7, 0, UNI_CJKEXTA } /* cjkexta */,
- { 5, 7438, 4856, 10, 2, UNI_WB__DQ } /* wordbreak=dq */,
- { 0, 8589, 8299, 7, 8, UNI_TFNG } /* script=tifinagh */,
- { 13, 4628, 1192, 15, 9, UNI_EA__H } /* eastasianwidth=halfwidth */,
- { 2, 9508, 9934, 4, 3, UNI_CCC__R } /* ccc=226 */,
- { 0, 8589, 8990, 7, 6, UNI_RJNG } /* script=rejang */,
- { 29, 10048, 7803, 3, 8, UNI_NV__1_SLASH_64 } /* nv=1.56e-02 */,
- { 0, 8780, 951, 6, 28, UNI_VSSUP } /* block=variationselectorssupplement */,
- { 0, 6484, 0, 4, 0, UNI_HUNG } /* hung */,
- { 2, 3097, 6421, 18, 12, UNI_DT__NONCANON } /* decompositiontype=noncanonical */,
- { 0, 3836, 7428, 17, 4, UNI_WARA } /* scriptextensions=wara */,
- { 6, 10060, 36, 3, 1, UNI_RI } /* ri=t */,
- { 2, 1188, 8292, 3, 7, UNI_INTAGBANWA } /* intagbanwa */,
- { 3, 184, 47, 2, 1, UNI_M } /* ism */,
- { 12, 6710, 3881, 4, 4, UNI_INCARIAN } /* incarian */,
- { 0, 8780, 4273, 6, 7, UNI_INMYANMAR } /* block=myanmar */,
- { 3, 9275, 3061, 5, 18, UNI_INSC__CONSONANTSUBJOINED } /* insc=consonantsubjoined */,
- { 0, 9508, 9221, 5, 4, UNI_CCC__91 } /* ccc=ccc91 */,
- { 13, 8589, 4385, 7, 4, UNI_TANG } /* script=tang */,
- { 0, 7088, 2893, 10, 19, UNI_BC__RLO } /* bidiclass=righttoleftoverride */,
- { 0, 8589, 7558, 7, 9, UNI_SC__QAAI } /* script=inherited */,
- { 1, 7088, 10018, 10, 3, UNI_BC__FSI } /* bidiclass=fsi */,
- { 3, 8780, 6505, 6, 12, UNI_PHAISTOS } /* block=phaistosdisc */,
- { 0, 10024, 10168, 3, 2, UNI_CASEDLETTER } /* gc=l& */,
- { 2, 10033, 5564, 3, 9, UNI_LB__QU } /* lb=quotation */,
- { 3, 9488, 1033, 4, 27, UNI_ENCLOSEDCJK } /* blk=enclosedcjklettersandmonths */,
- { 6, 2224, 780, 3, 29, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* insymbolsandpictographsextendeda */,
- { 1, 184, 3870, 2, 17, UNI_SMALLFORMS } /* issmallformvariants */,
- { 0, 9808, 0, 4, 0, UNI_TALU } /* talu */,
- { 5, 6805, 4261, 6, 12, UNI_MISCMATHSYMBOLSB } /* inmiscmathsymbolsb */,
- { 8, 3836, 9008, 17, 6, UNI_THAA } /* scriptextensions=thaana */,
- { 6, 9277, 78, 3, 4, UNI_SC__ARAB } /* sc=arab */,
- { 1, 2218, 9685, 3, 3, UNI_INNEWA } /* innewa */,
- { 1, 3367, 0, 18, 0, UNI_patws_values_index } /* patternwhitespace= */,
- { 1, 6061, 10135, 12, 3, UNI_BIDIC } /* bidicontrol=yes */,
- { 0, 8780, 9305, 6, 5, UNI_INNUSHU } /* block=nushu */,
- { 1, 9488, 8596, 4, 7, UNI_SC__SHRD } /* blk=sharada */,
- { 0, 9768, 8344, 4, 4, UNI_BENG } /* scx=beng */,
- { 6, 3853, 3, 17, 1, -UNI_STERM } /* sentenceterminal=f */,
- { 1, 779, 0, 30, 0, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* symbolsandpictographsextendeda */,
- { 1, 9260, 1025, 5, 2, -UNI_IDSB } /* idsb=no */,
- { 1, 9768, 7621, 4, 9, UNI_NBAT } /* scx=nabataean */,
- { 3, 8780, 2076, 6, 22, UNI_TRANSPORTANDMAP } /* block=transportandmapsymbols */,
- { 0, 6469, 0, 12, 0, UNI_nt_values_index } /* numerictype= */,
- { 0, 7218, 7522, 10, 9, UNI_LB__B2 } /* linebreak=breakboth */,
- { 0, 9277, 9245, 3, 5, UNI_SC__DOGR } /* sc=dogra */,
- { 0, 9488, 908, 4, 10, UNI_PUA } /* blk=privateuse */,
- { 7, 10027, 6906, 3, 11, UNI_JG__ROHINGYAYEH } /* jg=rohingyayeh */,
- { 3, 2288, 1656, 4, 21, UNI_COMPATJAMO } /* inhangulcompatibilityjamo */,
- { 2, 3097, 1294, 18, 5, UNI_DT__SUP } /* decompositiontype=super */,
- { 2, 9488, 4598, 4, 15, UNI_DIACRITICALSEXT } /* blk=diacriticalsext */,
- { 0, 9508, 7950, 4, 1, UNI_CCC__9 } /* ccc=9 */,
- { 5, 4065, 0, 16, 0, UNI_HALFANDFULLFORMS } /* halfandfullforms */,
- { 2, 7088, 3700, 10, 17, UNI_BC__ES } /* bidiclass=europeanseparator */,
- { 48, 8589, 2855, 7, 9, UNI_SC__MONG } /* script=mongolian */,
- { 0, 7218, 395, 10, 2, UNI_LB__GL } /* linebreak=gl */,
- { 1, 9008, 0, 4, 0, UNI_THAA } /* thaa */,
- { 3, 9488, 6121, 4, 12, UNI_CYRILLICEXTC } /* blk=cyrillicextc */,
- { 4, 184, 1944, 2, 22, UNI_EARLYDYNASTICCUNEIFORM } /* isearlydynasticcuneiform */,
- { 8, 10024, 6035, 3, 2, UNI_PF } /* gc=pf */,
- { 0, 10048, 8750, 3, 4, UNI_NV__8000 } /* nv=8000 */,
- { 2, 4116, 6, 3, 2, UNI_IDC } /* isidc */,
- { 7, 10048, 7858, 3, 2, UNI_NV__22 } /* nv=22 */,
- { 1, 9488, 2609, 5, 5, UNI_INBRAHMI } /* blk=brahmi */,
- { 0, 8115, 0, 4, 0, UNI_BASS } /* bass */,
- { 2, 9768, 8477, 4, 7, UNI_MAKA } /* scx=makasar */,
- { 0, 8780, 570, 7, 29, UNI_CJKEXTC } /* block=cjkunifiedideographsextensionc */,
- { 0, 10033, 5585, 3, 2, UNI_EBASE } /* lb=eb */,
- { 14, 2119, 0, 14, 0, UNI_CJKRADICALSSUP } /* cjkradicalssup */,
- { 0, 493, 0, 3, 0, UNI_HAN } /* han */,
- { 1, 3836, 2817, 17, 4, UNI_MERO } /* scriptextensions=mero */,
- { 1, 10288, 6554, 3, 10, UNI_XIDC } /* isxidcontinue */,
- { 65, 184, 6807, 2, 11, UNI_MISCSYMBOLS } /* ismiscsymbols */,
- { 65, 9508, 9922, 4, 3, UNI_CCC__214 } /* ccc=214 */,
- { 100, 8275, 0, 8, 0, UNI_SPECIALS } /* specials */,
- { 0, 5986, 7890, 13, 2, UNI_NV__33 } /* numericvalue=33 */,
- { 0, 2288, 1514, 3, 23, UNI_HIGHPUSURROGATES } /* inhighprivateusesurrogates */,
- { 24, 2760, 5633, 19, 2, UNI_LB__H2 } /* hangulsyllabletype=lv */,
- { 17, 184, 908, 2, 14, UNI_PUA } /* isprivateusearea */,
- { 0, 9768, 8659, 4, 7, UNI_TIBT } /* scx=tibetan */,
- { 4, 10129, 10135, 3, 3, UNI_VS } /* vs=yes */,
- { 1, 7540, 9255, 9, 5, -UNI_EXT } /* extender=false */,
- { 1, 9350, 1025, 5, 2, -UNI_XIDS } /* xids=no */,
- { 1, 9768, 8645, 4, 7, UNI_LANA } /* scx=taitham */,
- { 0, 8589, 2817, 7, 19, UNI_MERO } /* script=meroitichieroglyphs */,
- { 11, 9504, 0, 4, 0, UNI_CANS } /* cans */,
- { 0, 9277, 9580, 3, 4, UNI_SC__HANO } /* sc=hano */,
- { 15, 10024, 1, 3, 1, UNI_N } /* gc=n */,
- { 21, 3836, 9740, 17, 4, UNI_QAAI } /* scriptextensions=qaai */,
- { 22, 10033, 5088, 3, 14, UNI_LB__SA } /* lb=complexcontext */,
- { 0, 1417, 9223, 24, 2, UNI_CCC__91 } /* canonicalcombiningclass=91 */,
- { 0, 9596, 6541, 4, 12, UNI_GCB__T } /* hst=trailingjamo */,
- { 0, 8688, 3923, 4, 14, UNI_ARABICSUP } /* isarabicsupplement */,
- { 4, 184, 3893, 2, 11, UNI_SGNW } /* issignwriting */,
- { 0, 7118, 0, 10, 0, UNI_CHRS } /* chorasmian */,
- { 4, 0, 0, 42, 0, UNI_UCASEXT } /* unifiedcanadianaboriginalsyllabicsextended */,
- { 3, 10333, 6973, 3, 3, UNI_SYLO } /* issylo */,
- { 5, 7088, 2509, 10, 11, UNI_BC__R } /* bidiclass=righttoleft */,
- { 5, 9275, 4417, 5, 5, UNI_INSC__VOWEL } /* insc=vowel */,
- { 0, 10024, 5494, 3, 14, UNI_MN } /* gc=nonspacingmark */,
- { 32, 1552, 9225, 9, 5, UNI_XPOSIXCNTRL } /* category=cntrl */,
- { 16, 9262, 9080, 3, 5, UNI_SB__AT } /* sb=aterm */,
- { 0, 10033, 908, 3, 2, UNI_LB__PR } /* lb=pr */,
- { 0, 7318, 7781, 10, 1, UNI_IN__4 } /* presentin=4 */,
- { 0, 4883, 0, 15, 0, UNI_SARB } /* oldsoutharabian */,
- { 0, 5791, 4773, 13, 3, UNI_JG__SAD } /* joininggroup=sad */,
- { 1, 183, 0, 20, 0, UNI_MISCSYMBOLS } /* miscellaneoussymbols */,
- { 1, 6231, 3081, 4, 16, UNI_COPTICEPACTNUMBERS } /* incopticepactnumbers */,
- { 1, 5116, 1, 14, 1, -UNI_EMOD } /* emojimodifier=n */,
- { 0, 3836, 9636, 17, 4, UNI_LINB } /* scriptextensions=linb */,
- { 32, 8780, 349, 6, 33, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* block=supplementalsymbolsandpictographs */,
- { 0, 5018, 0, 14, 0, UNI_ANCIENTSYMBOLS } /* ancientsymbols */,
- { 4, 10048, 7821, 3, 1, UNI_NV__8 } /* nv=8 */,
- { 3, 5986, 9380, 13, 3, UNI_NV__1_SLASH_8 } /* numericvalue=1/8 */,
- { 3, 9488, 8379, 4, 7, UNI_CJKEXTE } /* blk=cjkexte */,
- { 24, 4916, 3458, 3, 10, UNI_TAIXUANJING } /* istaixuanjing */,
- { 1, 8864, 9255, 6, 5, -UNI_EMOJI } /* emoji=false */,
- { 1, 3836, 2560, 17, 4, UNI_MAND } /* scriptextensions=mand */,
- { 1, 8912, 0, 4, 0, UNI_KHOJ } /* khoj */,
- { 0, 8780, 8243, 6, 8, UNI_INMAHAJANI } /* block=mahajani */,
- { 1, 9277, 3241, 3, 8, UNI_SC__GEOR } /* sc=georgian */,
- { 1, 8187, 0, 4, 0, UNI_HIRA } /* hira */,
- { 23, 184, 2054, 2, 22, UNI_MODIFIERLETTERS } /* isspacingmodifierletters */,
- { 0, 1417, 7858, 24, 3, UNI_CCC__B } /* canonicalcombiningclass=220 */,
- { 0, 9290, 9836, 5, 4, UNI_MATH } /* math=true */,
- { 1, 5986, 9432, 13, 4, UNI_NV__5_SLASH_12 } /* numericvalue=5/12 */,
- { 1, 9768, 9808, 4, 4, UNI_TALU } /* scx=talu */,
- { 15, 3529, 9255, 18, 5, -UNI_VS } /* variationselector=false */,
- { 0, 1537, 7170, 4, 8, UNI_INDIVESAKURU } /* indivesakuru */,
- { 1, 3529, 9836, 18, 4, UNI_VS } /* variationselector=true */,
- { 8, 1834, 1, 22, 1, -UNI_CWT } /* changeswhentitlecased=n */,
- { 0, 3097, 2569, 18, 4, UNI_DT__VERT } /* decompositiontype=vert */,
- { 2, 4916, 2297, 3, 3, UNI_THAI } /* isthai */,
- { 51, 9556, 34, 4, 6, UNI_GCB__EX } /* gcb=extend */,
- { 1, 184, 2350, 3, 19, UNI_PC } /* isconnectorpunctuation */,
- { 8, 7158, 0, 10, 0, UNI_dia_values_index } /* diacritic= */,
- { 2, 4033, 728, 16, 6, UNI_N } /* generalcategory=number */,
- { 0, 10048, 8756, 3, 3, UNI_NV__900 } /* nv=900 */,
- { 2, 9488, 113, 4, 25, UNI_DIACRITICALS } /* blk=combiningdiacriticalmarks */,
- { 1, 96, 0, 10, 0, UNI_XPOSIXALPHA } /* alphabetic */,
- { 0, 9488, 1677, 4, 9, UNI_LATINEXTE } /* blk=latinexte */,
- { 0, 184, 809, 2, 29, UNI_ENCLOSEDIDEOGRAPHICSUP } /* isenclosedideographicsupplement */,
- { 3, 8589, 8876, 7, 4, UNI_GOTH } /* script=goth */,
- { 0, 10048, 7778, 3, 2, UNI_NV__21 } /* nv=21 */,
- { 1, 2529, 1025, 20, 2, -UNI_TERM } /* terminalpunctuation=no */,
- { 1, 184, 5746, 2, 5, UNI_EBASE } /* isebase */,
- { 0, 8589, 1115, 7, 4, UNI_SC__HANG } /* script=hang */,
- { 54, 184, 3295, 2, 18, UNI_LATINEXTADDITIONAL } /* islatinextadditional */,
- { 31, 9488, 3683, 4, 16, UNI_ETHIOPICEXT } /* blk=ethiopicextended */,
- { 3, 7438, 5746, 10, 5, UNI_WB__EB } /* wordbreak=ebase */,
- { 5, 8589, 8091, 7, 8, UNI_ARMN } /* script=armenian */,
- { 22, 7076, 1586, 3, 22, UNI_BYZANTINEMUSIC } /* inbyzantinemusicalsymbols */,
- { 0, 7155, 8450, 3, 5, UNI_HYPHEN } /* ishyphen */,
- { 0, 5791, 5, 13, 1, UNI_JG__E } /* joininggroup=e */,
- { 1, 9277, 9656, 3, 4, UNI_MIAO } /* sc=miao */,
- { 3, 10132, 8139, 3, 8, UNI_WB__EB } /* wb=ebasegaz */,
- { 2, 1417, 0, 24, 0, UNI_ccc_values_index } /* canonicalcombiningclass= */,
- { 1, 2529, 10135, 20, 3, UNI_TERM } /* terminalpunctuation=yes */,
- { 4, 9816, 0, 4, 0, UNI_TAVT } /* tavt */,
- { 5, 8768, 36, 6, 1, UNI_BIDIC } /* bidic=t */,
- { 0, 9768, 8107, 4, 4, UNI_BALI } /* scx=bali */,
- { 0, 8449, 36, 7, 1, UNI_HYPHEN } /* hyphen=t */,
- { 1, 9444, 10102, 4, 3, UNI_AGE__5_DOT_2 } /* age=v52 */,
- { 14, 5986, 8732, 13, 6, UNI_NV__500000 } /* numericvalue=500000 */,
- { 0, 4916, 8584, 3, 3, UNI_TAGS } /* istags */,
- { 8, 9788, 0, 4, 0, UNI_SHRD } /* shrd */,
- { 2, 9488, 4973, 4, 8, UNI_VEDICEXT } /* blk=vedicext */,
- { 1, 9488, 2855, 4, 12, UNI_MONGOLIANSUP } /* blk=mongoliansup */,
- { 0, 9020, 36, 6, 1, UNI_XPOSIXUPPER } /* upper=t */,
- { 24, 1417, 9221, 25, 4, UNI_CCC__91 } /* canonicalcombiningclass=ccc91 */,
- { 1, 9488, 2429, 4, 20, UNI_ININSCRIPTIONALPAHLAVI } /* blk=inscriptionalpahlavi */,
- { 1, 6277, 0, 12, 0, UNI_MAHJONG } /* mahjongtiles */,
- { 0, 184, 8484, 2, 7, UNI_MAND } /* ismandaic */,
- { 3, 8780, 2666, 7, 18, UNI_COUNTINGROD } /* block=countingrodnumerals */,
- { 1, 184, 9864, 2, 4, UNI_WCHO } /* iswcho */,
- { 33, 5060, 1, 14, 1, -UNI_CI } /* caseignorable=n */,
- { 0, 184, 1, 2, 1, UNI_N } /* isn */,
- { 7, 8780, 4478, 6, 7, UNI_BRAI } /* block=braille */,
- { 8, 5578, 1867, 14, 5, UNI_SB__UP } /* sentencebreak=upper */,
- { 6, 9768, 7651, 4, 4, UNI_ITAL } /* scx=ital */,
- { 4, 10048, 8738, 3, 6, UNI_NV__600000 } /* nv=600000 */,
- { 13, 3079, 0, 6, 0, UNI_COPT } /* coptic */,
- { 8, 8589, 2224, 7, 21, UNI_PRTI } /* script=inscriptionalparthian */,
- { 1, 3836, 9600, 17, 4, UNI_KALI } /* scriptextensions=kali */,
- { 47, 1417, 16, 24, 1, UNI_CCC__B } /* canonicalcombiningclass=b */,
- { 1, 8589, 2913, 8, 8, UNI_SUND } /* script=sundanese */,
- { 33, 10048, 8019, 3, 8, UNI_NV__2_SLASH_3 } /* nv=6.67e-01 */,
- { 32, 3424, 1, 3, 41, UNI_UCASEXT } /* inunifiedcanadianaboriginalsyllabicsextended */,
- { 16, 9768, 8442, 4, 7, UNI_HANO } /* scx=hanunoo */,
- { 26, 9070, 1025, 5, 2, -UNI_POSIXXDIGIT } /* ahex=no */,
- { 0, 184, 8936, 2, 6, UNI_LYCI } /* islycian */,
- { 1, 6253, 0, 12, 0, UNI_KHMERSYMBOLS } /* khmersymbols */,
- { 0, 9768, 5843, 4, 9, UNI_MLYM } /* scx=malayalam */,
- { 0, 10024, 341, 3, 2, UNI_PE } /* gc=pe */,
- { 7, 9488, 3331, 4, 18, UNI_ORNAMENTALDINGBATS } /* blk=ornamentaldingbats */,
- { 4, 9508, 3015, 4, 5, UNI_CCC__A } /* ccc=above */,
- { 1, 9488, 3457, 4, 18, UNI_TAIXUANJING } /* blk=taixuanjingsymbols */,
- { 0, 5791, 7199, 14, 9, UNI_JG__KNOTTEDHEH } /* joininggroup=knottedheh */,
- { 5, 1417, 8795, 24, 3, UNI_CCC__103 } /* canonicalcombiningclass=103 */,
- { 1, 5791, 10057, 13, 3, UNI_JG__REH } /* joininggroup=reh */,
- { 3, 9488, 5688, 5, 12, UNI_BLOCKELEMENTS } /* blk=blockelements */,
- { 0, 1878, 0, 22, 0, UNI_CJKCOMPATIDEOGRAPHSSUP } /* cjkcompatideographssup */,
- { 1, 7318, 9840, 10, 4, UNI_IN__10 } /* presentin=v100 */,
- { 0, 8780, 7291, 6, 7, UNI_INSOGDIAN } /* block=sogdian */,
- { 24, 9277, 8990, 3, 6, UNI_RJNG } /* sc=rejang */,
- { 0, 10027, 9648, 3, 4, UNI_JG__MEEM } /* jg=meem */,
- { 5, 9724, 0, 4, 0, UNI_PHNX } /* phnx */,
- { 2, 184, 2855, 2, 12, UNI_MONGOLIANSUP } /* ismongoliansup */,
- { 1, 9768, 3241, 4, 8, UNI_GEOR } /* scx=georgian */,
- { 4, 10033, 10160, 3, 2, UNI_LB__H3 } /* lb=h3 */,
- { 2, 9492, 751, 4, 5, UNI_BPT__C } /* bpt=close */,
- { 8, 8407, 0, 7, 0, UNI_DSRT } /* deseret */,
- { 56, 10048, 8750, 3, 6, UNI_NV__800000 } /* nv=800000 */,
- { 1, 2409, 0, 13, 0, UNI_GLAGOLITICSUP } /* glagoliticsup */,
- { 16, 9768, 9592, 4, 4, UNI_HMNP } /* scx=hmnp */,
- { 9, 8589, 9584, 7, 4, UNI_HLUW } /* script=hluw */,
- { 1, 2280, 4885, 4, 13, UNI_SARB } /* isoldsoutharabian */,
- { 1, 3836, 9664, 17, 4, UNI_MRO } /* scriptextensions=mroo */,
- { 176, 6420, 9321, 3, 4, UNI_INOSAGE } /* inosage */,
- { 1, 8780, 8906, 6, 6, UNI_KANBUN } /* block=kanbun */,
- { 81, 1944, 0, 22, 0, UNI_EARLYDYNASTICCUNEIFORM } /* earlydynasticcuneiform */,
- { 2, 9277, 382, 3, 4, UNI_EGYP } /* sc=egyp */,
- { 0, 1087, 3, 27, 1, -UNI_PCM } /* prependedconcatenationmark=f */,
- { 0, 8589, 7288, 7, 10, UNI_SOGO } /* script=oldsogdian */,
- { 10, 9488, 5270, 4, 14, UNI_LATINEXTE } /* blk=latinextendede */,
- { 112, 3836, 9900, 17, 4, UNI_ZZZZ } /* scriptextensions=zzzz */,
- { 0, 8688, 2590, 3, 18, UNI_ANCIENTGREEKNUMBERS } /* isancientgreeknumbers */,
- { 65, 9997, 10042, 3, 3, UNI_BC__LRO } /* bc=lro */,
- { 0, 10033, 1465, 3, 13, UNI_LB__CM } /* lb=combiningmark */,
- { 28, 8780, 43, 7, 8, UNI_CJKCOMPAT } /* block=cjkcompat */,
- { 32, 7630, 0, 9, 0, UNI_TALU } /* newtailue */,
- { 3, 9768, 493, 4, 3, UNI_HAN } /* scx=han */,
- { 4, 10340, 9861, 3, 3, UNI_VAI } /* isvaii */,
- { 4, 10027, 7045, 3, 3, UNI_JG__FEH } /* jg=feh */,
- { 1, 6710, 3583, 4, 15, UNI_UCAS } /* incanadiansyllabics */,
- { 2, 4791, 6798, 4, 9, UNI_INMEDEFAIDRIN } /* inmedefaidrin */,
- { 4, 9768, 8456, 4, 7, UNI_KNDA } /* scx=kannada */,
- { 56, 1527, 0, 9, 0, UNI__PERL_SURROGATE } /* surrogate */,
- { 1, 8780, 2855, 6, 12, UNI_MONGOLIANSUP } /* block=mongoliansup */,
- { 0, 6807, 0, 11, 0, UNI_MISCSYMBOLS } /* miscsymbols */,
- { 1, 9290, 3, 5, 1, -UNI_MATH } /* math=f */,
- { 0, 8780, 1677, 6, 23, UNI_LATINEXTADDITIONAL } /* block=latinextendedadditional */,
- { 7, 9071, 10135, 4, 3, UNI_XPOSIXXDIGIT } /* hex=yes */,
- { 0, 5986, 9203, 13, 2, UNI_NV__34 } /* numericvalue=34 */,
- { 2, 8780, 540, 7, 29, UNI_CJKEXTB } /* block=cjkunifiedideographsextensionb */,
- { 0, 9038, 0, 4, 0, UNI_YEZI } /* yezi */,
- { 33, 5284, 0, 14, 0, UNI_LISUSUP } /* lisusupplement */,
- { 9, 4033, 4958, 16, 15, UNI_UPPERCASELETTER } /* generalcategory=uppercaseletter */,
- { 0, 3836, 9808, 17, 4, UNI_TALU } /* scriptextensions=talu */,
- { 8, 3836, 9860, 17, 3, UNI_VAI } /* scriptextensions=vai */,
- { 5, 9768, 9008, 4, 6, UNI_THAA } /* scx=thaana */,
- { 0, 8589, 7278, 7, 10, UNI_XPEO } /* script=oldpersian */,
- { 0, 3836, 3169, 17, 8, UNI_ETHI } /* scriptextensions=ethiopic */,
- { 9, 1828, 9255, 6, 5, -UNI_CASED } /* cased=false */,
- { 0, 10030, 6994, 3, 11, UNI_JT__T } /* jt=transparent */,
- { 0, 9768, 8421, 4, 4, UNI_ELYM } /* scx=elym */,
- { 2, 9488, 2061, 4, 15, UNI_MODIFIERLETTERS } /* blk=modifierletters */,
- { 1, 8589, 9464, 7, 4, UNI_ARMN } /* script=armn */,
- { 7, 9488, 8372, 4, 7, UNI_CJKEXTD } /* blk=cjkextd */,
- { 100, 8589, 8912, 7, 6, UNI_SC__KHOJ } /* script=khojki */,
- { 0, 9488, 4449, 5, 4, UNI_INBAMUM } /* blk=bamum */,
- { 57, 8780, 8659, 6, 7, UNI_INTIBETAN } /* block=tibetan */,
- { 2, 9235, 9255, 5, 5, -UNI_CWCM } /* cwcm=false */,
- { 0, 3904, 3, 17, 1, -UNI_UIDEO } /* unifiedideograph=f */,
- { 0, 7188, 0, 4, 0, UNI_KHAR } /* khar */,
- { 2, 8780, 2477, 6, 3, UNI_PUA } /* block=pua */,
- { 32, 8780, 7248, 6, 10, UNI_MISCARROWS } /* block=miscarrows */,
- { 138, 9270, 5523, 3, 13, UNI_PHONETICEXTSUP } /* inphoneticextsup */,
- { 0, 4916, 4929, 3, 14, UNI_TAMILSUP } /* istamilsupplement */,
- { 1, 3836, 9632, 17, 4, UNI_LINA } /* scriptextensions=lina */,
- { 0, 8780, 0, 6, 0, UNI_blk_values_index } /* block= */,
- { 68, 8589, 9002, 7, 4, UNI_SC__TELU } /* script=telu */,
- { 22, 5578, 339, 14, 2, UNI_SB__LO } /* sentencebreak=lo */,
- { 0, 2349, 0, 20, 0, UNI_PC } /* connectorpunctuation */,
- { 1, 184, 5674, 2, 5, UNI_BIDIM } /* isbidim */,
- { 24, 10024, 908, 3, 10, UNI_CO } /* gc=privateuse */,
- { 64, 21, 2308, 2, 21, UNI_YIJING } /* inyijinghexagramsymbols */,
- { 0, 3836, 7648, 17, 9, UNI_ITAL } /* scriptextensions=olditalic */,
- { 0, 9508, 3007, 4, 18, UNI_CCC__216 } /* ccc=attachedaboveright */,
- { 2, 9503, 0, 2, 0, UNI_MC } /* mc */,
- { 8, 9277, 5843, 3, 9, UNI_SC__MLYM } /* sc=malayalam */,
- { 0, 9716, 1, 4, 1, -UNI_PCM } /* pcm=n */,
- { 29, 9997, 2266, 3, 21, UNI_BC__PDI } /* bc=popdirectionalisolate */,
- { 0, 10296, 10308, 7, 5, UNI_POSIXPRINT } /* isposixprint */,
- { 32, 10027, 4193, 3, 16, UNI_JG__MANICHAEANLAMEDH } /* jg=manichaeanlamedh */,
- { 138, 10333, 6886, 3, 3, UNI_SHAW } /* isshaw */,
- { 0, 9488, 5074, 4, 14, UNI_CJKCOMPATFORMS } /* blk=cjkcompatforms */,
- { 31, 3683, 0, 11, 0, UNI_ETHIOPICEXT } /* ethiopicext */,
- { 17, 9768, 9740, 4, 4, UNI_QAAI } /* scx=qaai */,
- { 3, 7218, 495, 10, 7, UNI_LB__NU } /* linebreak=numeric */,
- { 6, 9540, 0, 4, 0, UNI_dia_values_index } /* dia= */,
- { 0, 9070, 0, 5, 0, UNI_ahex_values_index } /* ahex= */,
- { 0, 8780, 3633, 7, 16, UNI_CYRILLICEXTA } /* block=cyrillicextendeda */,
- { 2, 4385, 0, 16, 0, UNI_TANGUTCOMPONENTS } /* tangutcomponents */,
- { 50, 8780, 6098, 7, 11, UNI_CYRILLICEXTA } /* block=cyrillicexta */,
- { 0, 9275, 4113, 5, 16, UNI_INSC__INVISIBLESTACKER } /* insc=invisiblestacker */,
- { 0, 9488, 1344, 4, 25, UNI_SYMBOLSFORLEGACYCOMPUTING } /* blk=symbolsforlegacycomputing */,
- { 1, 4542, 1633, 4, 13, UNI_GEOMETRICSHAPES } /* ingeometricshapes */,
- { 4, 9488, 6397, 4, 12, UNI_MATHALPHANUM } /* blk=mathalphanum */,
- { 4, 9345, 0, 5, 0, UNI_xidc_values_index } /* xidc= */,
- { 1, 3836, 9588, 17, 4, UNI_HMNG } /* scriptextensions=hmng */,
- { 0, 7228, 9836, 10, 4, UNI_XPOSIXLOWER } /* lowercase=true */,
- { 166, 10024, 400, 3, 6, UNI_CF } /* gc=format */,
- { 2, 9488, 5158, 4, 14, UNI_INGREEK } /* blk=greekandcoptic */,
- { 1, 838, 0, 29, 0, UNI_MISCARROWS } /* miscellaneoussymbolsandarrows */,
- { 4, 8882, 3, 6, 1, -UNI_GREXT } /* grext=f */,
- { 16, 2288, 4675, 4, 13, UNI_INHANGUL } /* inhangulsyllables */,
- { 0, 9270, 2549, 5, 20, UNI_INPC__TOPANDBOTTOMANDRIGHT } /* inpc=topandbottomandright */,
- { 0, 3921, 0, 16, 0, UNI_ARABICSUP } /* arabicsupplement */,
- { 8, 21, 2308, 2, 6, UNI_YIJING } /* inyijing */,
- { 0, 7495, 0, 9, 0, UNI_ARABICPFA } /* arabicpfa */,
- { 0, 184, 4340, 2, 13, UNI_MATHOPERATORS } /* ismathoperators */,
- { 0, 9488, 5778, 4, 6, UNI_IPAEXT } /* blk=ipaext */,
- { 0, 10027, 5620, 3, 10, UNI_JG__TEHMARBUTA } /* jg=tehmarbuta */,
- { 0, 2182, 73, 21, 2, UNI_WB__EB } /* graphemeclusterbreak=em */,
- { 0, 1979, 10169, 10, 1, UNI_CASEDLETTER } /* category=l& */,
- { 0, 9528, 1, 4, 1, -UNI_CWU } /* cwu=n */,
- { 0, 2760, 7720, 19, 9, UNI_GCB__V } /* hangulsyllabletype=voweljamo */,
- { 5, 184, 10168, 2, 2, UNI_CASEDLETTER } /* isl& */,
- { 182, 8365, 0, 7, 0, UNI_CJKEXTC } /* cjkextc */,
- { 4, 9768, 2224, 4, 21, UNI_PRTI } /* scx=inscriptionalparthian */,
- { 2, 9320, 0, 5, 0, UNI_OSGE } /* osage */,
- { 144, 9020, 1025, 6, 2, -UNI_XPOSIXUPPER } /* upper=no */,
- { 0, 9488, 1900, 4, 22, UNI_INDICNUMBERFORMS } /* blk=commonindicnumberforms */,
- { 1, 5986, 8075, 13, 8, UNI_NV__7_SLASH_8 } /* numericvalue=8.75e-01 */,
- { 0, 5116, 1025, 14, 2, -UNI_EMOD } /* emojimodifier=no */,
- { 141, 9444, 10099, 4, 3, UNI_AGE__5_DOT_1 } /* age=v51 */,
- { 0, 8688, 5719, 3, 4, UNI_XPOSIXALNUM } /* isalnum */,
- { 12, 10333, 0, 7, 0, UNI_XPOSIXSPACE } /* isspace */,
- { 2, 1631, 0, 23, 0, UNI_GEOMETRICSHAPESEXT } /* geometricshapesextended */,
- { 1, 2288, 8188, 3, 7, UNI_INHIRAGANA } /* inhiragana */,
- { 3, 9230, 10135, 5, 3, UNI_CWCF } /* cwcf=yes */,
- { 9, 9508, 9931, 4, 3, UNI_CCC__L } /* ccc=224 */,
- { 8, 9768, 9245, 4, 4, UNI_DOGR } /* scx=dogr */,
- { 1, 6420, 7649, 3, 8, UNI_INOLDITALIC } /* inolditalic */,
- { 0, 9768, 6973, 5, 3, UNI_SYLO } /* scx=sylo */,
- { 37, 5578, 69, 14, 2, UNI_SB__UP } /* sentencebreak=up */,
- { 2, 2280, 7290, 4, 8, UNI_SOGO } /* isoldsogdian */,
- { 0, 5116, 9836, 14, 4, UNI_EMOD } /* emojimodifier=true */,
- { 0, 9277, 6409, 3, 4, UNI_MEND } /* sc=mend */,
- { 113, 10333, 2913, 3, 8, UNI_SUND } /* issundanese */,
- { 2, 3836, 7675, 17, 4, UNI_PALM } /* scriptextensions=palm */,
- { 34, 8589, 9548, 7, 4, UNI_DSRT } /* script=dsrt */,
- { 10, 9768, 7118, 4, 10, UNI_CHRS } /* scx=chorasmian */,
- { 0, 9997, 3374, 3, 10, UNI_BC__WS } /* bc=whitespace */,
- { 1, 8852, 1025, 6, 2, -UNI_CWKCF } /* cwkcf=no */,
- { 7, 2477, 0, 3, 0, UNI_PUA } /* pua */,
- { 1, 184, 809, 2, 22, UNI_ENCLOSEDIDEOGRAPHICSUP } /* isenclosedideographicsup */,
- { 0, 1417, 8, 24, 1, UNI_CCC__A } /* canonicalcombiningclass=a */,
- { 46, 5466, 26, 14, 1, UNI_NFDQC__Y } /* nfdquickcheck=y */,
- { 0, 2182, 24, 21, 1, UNI_GCB__L } /* graphemeclusterbreak=l */,
- { 5, 9275, 1244, 5, 9, UNI_INSC__CONSONANT } /* insc=consonant */,
- { 1, 10048, 8732, 3, 5, UNI_NV__50000 } /* nv=50000 */,
- { 0, 10024, 10176, 3, 2, UNI_ZL } /* gc=zl */,
- { 5, 9488, 4883, 4, 15, UNI_SARB } /* blk=oldsoutharabian */,
- { 43, 184, 5270, 2, 14, UNI_LATINEXTE } /* islatinextendede */,
- { 0, 10063, 26, 3, 1, UNI_SD } /* sd=y */,
- { 0, 5791, 5918, 13, 3, UNI_JG__TAW } /* joininggroup=taw */,
- { 10, 3385, 3, 18, 1, -UNI_RI } /* regionalindicator=f */,
- { 2, 9488, 7594, 4, 9, UNI_LATINEXTD } /* blk=latinextd */,
- { 0, 3836, 1900, 17, 6, UNI_ZYYY } /* scriptextensions=common */,
- { 0, 10033, 10158, 3, 2, UNI_LB__H2 } /* lb=h2 */,
- { 144, 9768, 7359, 5, 3, UNI_SAUR } /* scx=saur */,
- { 1, 10048, 7859, 3, 6, UNI_NV__200000 } /* nv=200000 */,
- { 0, 5986, 7923, 13, 8, UNI_NV__2_SLASH_5 } /* numericvalue=4.00e-01 */,
- { 32, 184, 2141, 3, 10, UNI_CYRILLICSUP } /* iscyrillicsup */,
- { 0, 4916, 3458, 3, 17, UNI_TAIXUANJING } /* istaixuanjingsymbols */,
- { 4, 8780, 2141, 7, 17, UNI_CYRILLICSUP } /* block=cyrillicsupplement */,
- { 7, 8780, 4448, 6, 5, UNI_INBAMUM } /* block=bamum */,
- { 1, 8091, 0, 8, 0, UNI_ARMN } /* armenian */,
- { 32, 184, 0, 3, 0, UNI_C } /* isc */,
- { 0, 184, 8115, 2, 4, UNI_BASS } /* isbass */,
- { 3, 184, 4583, 2, 4, UNI_DASH } /* isdash */,
- { 1, 9488, 4401, 4, 16, UNI_TANGUTSUP } /* blk=tangutsupplement */,
- { 1, 8780, 4257, 6, 16, UNI_MISCMATHSYMBOLSB } /* block=miscmathsymbolsb */,
- { 2, 9015, 1, 5, 1, -UNI_IDEO } /* ideo=n */,
- { 0, 184, 1677, 2, 5, UNI_LATN } /* islatin */,
- { 12, 10288, 3379, 8, 5, UNI_XPOSIXSPACE } /* isxposixspace */,
- { 89, 9488, 3439, 4, 18, UNI_SMALLKANAEXT } /* blk=smallkanaextension */,
- { 1, 2569, 0, 20, 0, UNI_vo_values_index } /* verticalorientation= */,
- { 0, 10024, 2268, 3, 2, UNI_PD } /* gc=pd */,
- { 30, 9488, 5256, 4, 14, UNI_LATINEXTD } /* blk=latinextendedd */,
- { 0, 8780, 567, 6, 2, UNI_NB } /* block=nb */,
- { 4, 10048, 7859, 3, 2, UNI_NV__20 } /* nv=20 */,
- { 0, 9444, 10123, 4, 3, UNI_AGE__9 } /* age=v90 */,
- { 0, 1417, 8811, 25, 5, UNI_CCC__122 } /* canonicalcombiningclass=ccc122 */,
- { 0, 9488, 7291, 4, 7, UNI_INSOGDIAN } /* blk=sogdian */,
- { 36, 10003, 1, 3, 1, -UNI_CI } /* ci=n */,
- { 1, 9277, 2817, 3, 4, UNI_MERO } /* sc=mero */,
- { 0, 10030, 6529, 3, 12, UNI_JT__R } /* jt=rightjoining */,
- { 2, 3836, 9325, 17, 5, UNI_RUNR } /* scriptextensions=runic */,
- { 0, 7058, 0, 10, 0, UNI_ARABICEXTA } /* arabicexta */,
- { 0, 3836, 8786, 17, 6, UNI_CARI } /* scriptextensions=carian */,
- { 8, 4658, 1, 15, 1, -UNI_GREXT } /* graphemeextend=n */,
- { 6, 9768, 1900, 4, 6, UNI_ZYYY } /* scx=common */,
- { 25, 9488, 2817, 4, 19, UNI_MERO } /* blk=meroitichieroglyphs */,
- { 0, 21, 5214, 2, 6, UNI_KANGXI } /* inkangxi */,
- { 65, 9488, 8990, 4, 6, UNI_INREJANG } /* blk=rejang */,
- { 0, 7318, 9955, 10, 3, UNI_IN__3_DOT_2 } /* presentin=3.2 */,
- { 0, 7325, 9388, 3, 4, UNI_IN__11 } /* in=11.0 */,
- { 1, 5791, 4193, 13, 16, UNI_JG__MANICHAEANLAMEDH } /* joininggroup=manichaeanlamedh */,
- { 3, 10027, 3785, 3, 17, UNI_JG__MANICHAEANDHAMEDH } /* jg=manichaeandhamedh */,
- { 2, 2855, 0, 19, 0, UNI_MONGOLIANSUP } /* mongoliansupplement */,
- { 0, 749, 0, 30, 0, UNI_ENCLOSEDALPHANUMSUP } /* enclosedalphanumericsupplement */,
- { 0, 8780, 6012, 6, 13, UNI_VERTICALFORMS } /* block=verticalforms */,
- { 1, 7325, 7765, 3, 1, UNI_IN__2 } /* in=2 */,
- { 2, 9488, 6097, 4, 12, UNI_CYRILLICEXTA } /* blk=cyrillicexta */,
- { 2, 8589, 0, 7, 0, UNI_sc_values_index } /* script= */,
- { 3, 446, 0, 18, 0, UNI_IDEOGRAPHICSYMBOLS } /* ideographicsymbols */,
- { 0, 5986, 9208, 13, 2, UNI_NV__35 } /* numericvalue=35 */,
- { 0, 9277, 2203, 3, 4, UNI_SC__HAN } /* sc=hani */,
- { 10, 9277, 2409, 3, 10, UNI_SC__GLAG } /* sc=glagolitic */,
- { 2, 8984, 9836, 6, 4, UNI_QMARK } /* qmark=true */,
- { 3, 5452, 9295, 14, 5, UNI_NFCQC__M } /* nfcquickcheck=maybe */,
- { 0, 9508, 9218, 4, 2, UNI_CCC__84 } /* ccc=84 */,
- { 1, 5791, 5312, 13, 14, UNI_JG__MANICHAEANAYIN } /* joininggroup=manichaeanayin */,
- { 3, 184, 3683, 2, 17, UNI_ETHIOPICEXTA } /* isethiopicextendeda */,
- { 2, 10027, 7055, 3, 3, UNI_JG__QAF } /* jg=qaf */,
- { 0, 2076, 0, 22, 0, UNI_TRANSPORTANDMAP } /* transportandmapsymbols */,
- { 2, 21, 8900, 2, 6, UNI_INKAITHI } /* inkaithi */,
- { 0, 8882, 0, 5, 0, UNI_GREXT } /* grext */,
- { 24, 9488, 1393, 4, 24, UNI_ARABICPFB } /* blk=arabicpresentationformsb */,
- { 64, 1552, 4583, 9, 15, UNI_PD } /* category=dashpunctuation */,
- { 0, 7438, 7730, 11, 8, UNI_WB__WSEGSPACE } /* wordbreak=wsegspace */,
- { 0, 9768, 9864, 4, 4, UNI_WCHO } /* scx=wcho */,
- { 1, 10024, 10178, 3, 2, UNI_ZP } /* gc=zp */,
- { 0, 10027, 6361, 3, 12, UNI_JG__MALAYALAMTTA } /* jg=malayalamtta */,
- { 40, 5986, 9408, 13, 4, UNI_NV__15_SLASH_2 } /* numericvalue=15/2 */,
- { 5, 5791, 5410, 13, 14, UNI_JG__MANICHAEANTETH } /* joininggroup=manichaeanteth */,
- { 13, 7088, 6493, 10, 12, UNI_BC__ON } /* bidiclass=otherneutral */,
- { 32, 8780, 1060, 7, 5, UNI_INCOPTIC } /* block=coptic */,
- { 32, 9488, 5186, 4, 14, UNI_HIGHSURROGATES } /* blk=highsurrogates */,
- { 8, 9768, 7648, 4, 9, UNI_ITAL } /* scx=olditalic */,
- { 37, 3529, 0, 18, 0, UNI_vs_values_index } /* variationselector= */,
- { 3, 8624, 0, 7, 0, UNI_SUPPUAA } /* suppuaa */,
- { 0, 1188, 2077, 3, 14, UNI_TRANSPORTANDMAP } /* intransportandmap */,
- { 97, 9488, 4449, 5, 7, UNI_BAMUMSUP } /* blk=bamumsup */,
- { 1, 184, 8344, 2, 4, UNI_BENG } /* isbeng */,
- { 1, 1417, 9934, 24, 3, UNI_CCC__R } /* canonicalcombiningclass=226 */,
- { 6, 9768, 9816, 4, 4, UNI_TAVT } /* scx=tavt */,
- { 82, 7738, 1, 9, 1, -UNI_XIDS } /* xidstart=n */,
- { 2, 8123, 0, 4, 0, UNI_BUGI } /* bugi */,
- { 166, 4257, 0, 16, 0, UNI_MISCMATHSYMBOLSB } /* miscmathsymbolsb */,
- { 56, 5986, 9416, 13, 4, UNI_NV__3_SLASH_16 } /* numericvalue=3/16 */,
- { 0, 9768, 8924, 4, 6, UNI_LEPC } /* scx=lepcha */,
- { 33, 8966, 0, 6, 0, UNI_nfdqc_values_index } /* nfdqc= */,
- { 0, 1087, 9255, 27, 5, -UNI_PCM } /* prependedconcatenationmark=false */,
- { 0, 8780, 3169, 6, 8, UNI_INETHIOPIC } /* block=ethiopic */,
- { 0, 184, 5256, 2, 14, UNI_LATINEXTD } /* islatinextendedd */,
- { 0, 8589, 8115, 7, 4, UNI_BASS } /* script=bass */,
- { 0, 7155, 1655, 3, 22, UNI_COMPATJAMO } /* ishangulcompatibilityjamo */,
- { 0, 8780, 3650, 7, 16, UNI_CYRILLICEXTB } /* block=cyrillicextendedb */,
- { 53, 9997, 5494, 3, 14, UNI_BC__NSM } /* bc=nonspacingmark */,
- { 0, 5791, 5396, 13, 14, UNI_JG__MANICHAEANRESH } /* joininggroup=manichaeanresh */,
- { 2, 9556, 18, 4, 2, UNI_RI } /* gcb=ri */,
- { 2, 8780, 6110, 7, 11, UNI_CYRILLICEXTB } /* block=cyrillicextb */,
- { 3, 9488, 3079, 4, 6, UNI_INCOPTIC } /* blk=coptic */,
- { 8, 7155, 6485, 3, 3, UNI_HUNG } /* ishung */,
- { 0, 5791, 5882, 13, 13, UNI_JG__MANICHAEANNUN } /* joininggroup=manichaeannun */,
- { 1, 5791, 7038, 13, 10, UNI_JG__AFRICANFEH } /* joininggroup=africanfeh */,
- { 2, 4628, 1, 15, 1, UNI_EA__N } /* eastasianwidth=n */,
- { 1, 9768, 3169, 4, 8, UNI_ETHI } /* scx=ethiopic */,
- { 1, 8780, 7504, 6, 9, UNI_ARABICPFB } /* block=arabicpfb */,
- { 0, 10033, 10162, 3, 2, UNI_GCB__L } /* lb=jl */,
- { 0, 9277, 9764, 3, 4, UNI_SARB } /* sc=sarb */,
- { 3, 21, 5284, 2, 4, UNI_INLISU } /* inlisu */,
- { 0, 8780, 9452, 6, 4, UNI_INAHOM } /* block=ahom */,
- { 0, 3097, 8163, 18, 3, UNI_DT__FRA } /* decompositiontype=fra */,
- { 1, 9260, 10135, 5, 3, UNI_IDSB } /* idsb=yes */,
- { 3, 9262, 112, 3, 2, UNI_SB__SC } /* sb=sc */,
- { 6, 9768, 3937, 4, 4, UNI_BOPO } /* scx=bopo */,
- { 3, 3382, 0, 3, 0, UNI_ce_values_index } /* ce= */,
- { 0, 5986, 5648, 13, 3, UNI_NV__100 } /* numericvalue=100 */,
- { 1, 7438, 138, 10, 2, UNI_WB__FO } /* wordbreak=fo */,
- { 214, 8882, 9255, 6, 5, -UNI_GREXT } /* grext=false */,
- { 1, 9351, 3, 4, 1, -UNI_IDS } /* ids=f */,
- { 0, 1273, 1, 21, 1, -UNI_CE } /* compositionexclusion=n */,
- { 1, 9277, 9788, 3, 4, UNI_SC__SHRD } /* sc=shrd */,
- { 1, 9488, 4161, 4, 16, UNI_LINEARBSYLLABARY } /* blk=linearbsyllabary */,
- { 0, 21, 8456, 2, 7, UNI_INKANNADA } /* inkannada */,
- { 0, 8589, 6181, 7, 12, UNI_SC__GONG } /* script=gunjalagondi */,
- { 16, 8358, 0, 7, 0, UNI_CJKEXTB } /* cjkextb */,
- { 1, 9262, 125, 3, 2, UNI_LB__CR } /* sb=cr */,
- { 1, 10027, 5882, 3, 13, UNI_JG__MANICHAEANNUN } /* jg=manichaeannun */,
- { 2, 8589, 9564, 7, 4, UNI_SC__GONM } /* script=gonm */,
- { 0, 9768, 9095, 4, 5, UNI_BUHD } /* scx=buhid */,
- { 0, 9444, 10096, 4, 3, UNI_AGE__5 } /* age=v50 */,
- { 2, 1188, 4929, 3, 7, UNI_TAMILSUP } /* intamilsup */,
- { 8, 7218, 202, 10, 2, UNI_LB__SA } /* linebreak=sa */,
- { 33, 9277, 7358, 3, 10, UNI_SAUR } /* sc=saurashtra */,
- { 0, 7218, 988, 10, 2, UNI_LB__CP } /* linebreak=cp */,
- { 1, 7088, 2489, 10, 20, UNI_BC__PDF } /* bidiclass=popdirectionalformat */,
- { 5, 10027, 5179, 3, 7, UNI_JG__HEHGOAL } /* jg=hehgoal */,
- { 8, 10024, 2349, 3, 20, UNI_PC } /* gc=connectorpunctuation */,
- { 9, 1966, 3061, 22, 18, UNI_INSC__CONSONANTSUBJOINED } /* indicsyllabiccategory=consonantsubjoined */,
- { 48, 7325, 9396, 3, 4, UNI_IN__12_DOT_1 } /* in=12.1 */,
- { 0, 7438, 34, 10, 2, UNI_WB__EX } /* wordbreak=ex */,
- { 24, 10012, 3, 3, 1, UNI_EA__F } /* ea=f */,
- { 1, 4033, 5040, 16, 5, UNI_XPOSIXDIGIT } /* generalcategory=digit */,
- { 2, 10333, 8632, 3, 6, UNI_SUPPUAB } /* issuppuab */,
- { 105, 9768, 9684, 4, 4, UNI_NEWA } /* scx=newa */,
- { 32, 1166, 1025, 26, 2, -UNI_DI } /* defaultignorablecodepoint=no */,
- { 3, 9488, 7128, 4, 10, UNI_CJKSTROKES } /* blk=cjkstrokes */,
- { 0, 5791, 4773, 13, 5, UNI_JG__SADHE } /* joininggroup=sadhe */,
- { 14, 4033, 467, 16, 11, UNI_P } /* generalcategory=punctuation */,
- { 0, 8780, 8291, 6, 8, UNI_INTAGBANWA } /* block=tagbanwa */,
- { 1, 6553, 0, 4, 0, UNI_XIDC } /* xidc */,
- { 10, 8435, 26, 7, 1, UNI_GRBASE } /* grbase=y */,
- { 16, 9488, 809, 4, 22, UNI_ENCLOSEDIDEOGRAPHICSUP } /* blk=enclosedideographicsup */,
- { 36, 6805, 4245, 6, 12, UNI_MISCMATHSYMBOLSA } /* inmiscmathsymbolsa */,
- { 137, 184, 5752, 2, 8, UNI_GREEKEXT } /* isgreekext */,
- { 3, 7088, 2266, 10, 21, UNI_BC__PDI } /* bidiclass=popdirectionalisolate */,
- { 67, 9270, 2455, 5, 5, UNI_INPC__RIGHT } /* inpc=right */,
- { 0, 1417, 7078, 24, 10, UNI_CCC__BR } /* canonicalcombiningclass=belowright */,
- { 4, 4916, 4929, 3, 4, UNI_TAML } /* istamil */,
- { 65, 7088, 2509, 10, 20, UNI_BC__RLE } /* bidiclass=righttoleftembedding */,
- { 0, 9768, 8421, 4, 7, UNI_ELYM } /* scx=elymaic */,
- { 9, 8694, 9836, 7, 4, UNI_XPOSIXSPACE } /* wspace=true */,
- { 0, 3836, 7359, 18, 9, UNI_SAUR } /* scriptextensions=saurashtra */,
- { 4, 7076, 8124, 3, 7, UNI_INBUGINESE } /* inbuginese */,
- { 0, 1966, 5102, 22, 14, UNI_INSC__CONSONANTFINAL } /* indicsyllabiccategory=consonantfinal */,
- { 4, 9768, 8131, 4, 4, UNI_DUPL } /* scx=dupl */,
- { 0, 8780, 1006, 6, 17, UNI_ANCIENTGREEKMUSIC } /* block=ancientgreekmusic */,
- { 1, 9488, 8291, 4, 8, UNI_INTAGBANWA } /* blk=tagbanwa */,
- { 3, 184, 4129, 2, 16, UNI_LATIN1 } /* islatin1supplement */,
- { 0, 9265, 9836, 5, 4, UNI_IDST } /* idst=true */,
- { 42, 9488, 5171, 4, 4, UNI_INCHAM } /* blk=cham */,
- { 3, 9488, 2287, 4, 21, UNI_SINHALAARCHAICNUMBERS } /* blk=sinhalaarchaicnumbers */,
- { 1, 9488, 7585, 4, 9, UNI_LATINEXTC } /* blk=latinextc */,
- { 0, 9488, 328, 4, 21, UNI_MATHOPERATORS } /* blk=mathematicaloperators */,
- { 0, 4628, 9868, 15, 4, UNI_EA__W } /* eastasianwidth=wide */,
- { 57, 10333, 2288, 3, 6, UNI_SINH } /* issinhala */,
- { 0, 4033, 3358, 16, 9, UNI_Z } /* generalcategory=separator */,
- { 12, 5791, 6323, 13, 5, UNI_JG__GAMAL } /* joininggroup=gamal */,
- { 0, 9488, 5003, 4, 15, UNI_INZANABAZARSQUARE } /* blk=zanabazarsquare */,
- { 2, 9345, 3, 5, 1, -UNI_XIDC } /* xidc=f */,
- { 16, 3836, 9880, 17, 4, UNI_YI } /* scriptextensions=yiii */,
- { 260, 3836, 8666, 17, 7, UNI_TIRH } /* scriptextensions=tirhuta */,
- { 0, 5791, 8155, 13, 8, UNI_JG__FARSIYEH } /* joininggroup=farsiyeh */,
- { 0, 8780, 4241, 6, 16, UNI_MISCMATHSYMBOLSA } /* block=miscmathsymbolsa */,
- { 3, 10009, 5904, 3, 4, UNI_DT__NONE } /* dt=none */,
- { 275, 184, 8352, 3, 6, UNI_CJKEXTA } /* iscjkexta */,
- { 0, 9277, 6884, 3, 11, UNI_HMNG } /* sc=pahawhhmong */,
- { 19, 10033, 5046, 3, 14, UNI_LB__CR } /* lb=carriagereturn */,
- { 2, 2224, 1562, 3, 23, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* insupsymbolsandpictographs */,
- { 5, 9488, 42, 4, 26, UNI_CJKCOMPATIDEOGRAPHS } /* blk=cjkcompatibilityideographs */,
- { 93, 7088, 23, 10, 2, UNI_BC__AL } /* bidiclass=al */,
- { 9, 8780, 5270, 6, 14, UNI_LATINEXTE } /* block=latinextendede */,
- { 1, 9488, 7168, 4, 10, UNI_INDIVESAKURU } /* blk=divesakuru */,
- { 2, 184, 4017, 2, 16, UNI_PF } /* isfinalpunctuation */,
- { 2, 5986, 8067, 13, 8, UNI_NV__17_SLASH_2 } /* numericvalue=8.50e+00 */,
- { 0, 8780, 8484, 6, 7, UNI_INMANDAIC } /* block=mandaic */,
- { 6, 8780, 3421, 6, 4, UNI_RUMI } /* block=rumi */,
- { 0, 10027, 5326, 3, 14, UNI_JG__MANICHAEANBETH } /* jg=manichaeanbeth */,
- { 0, 3836, 78, 17, 4, UNI_ARAB } /* scriptextensions=arab */,
- { 5, 3836, 8645, 17, 7, UNI_LANA } /* scriptextensions=taitham */,
- { 1, 9277, 8477, 3, 4, UNI_MAKA } /* sc=maka */,
- { 1, 1537, 7298, 24, 10, UNI_INPC__OVERSTRUCK } /* indicpositionalcategory=overstruck */,
- { 1, 9488, 9800, 4, 4, UNI_TAGS } /* blk=tags */,
- { 0, 5606, 0, 14, 0, UNI_SUPPUNCTUATION } /* suppunctuation */,
- { 0, 6554, 0, 3, 0, UNI_IDC } /* idc */,
- { 86, 3836, 5284, 17, 4, UNI_LISU } /* scriptextensions=lisu */,
- { 1, 9488, 3887, 4, 17, UNI_SUTTONSIGNWRITING } /* blk=suttonsignwriting */,
- { 0, 8435, 10135, 7, 3, UNI_GRBASE } /* grbase=yes */,
- { 0, 184, 4002, 3, 6, UNI_CPRT } /* iscypriot */,
- { 0, 10033, 9557, 3, 2, UNI_LB__CB } /* lb=cb */,
- { 0, 8780, 2141, 7, 10, UNI_CYRILLICSUP } /* block=cyrillicsup */,
- { 1, 3836, 78, 17, 6, UNI_ARAB } /* scriptextensions=arabic */,
- { 13, 184, 9608, 2, 4, UNI_KITS } /* iskits */,
- { 137, 184, 7540, 2, 8, UNI_EXT } /* isextender */,
- { 1, 7325, 7782, 3, 1, UNI_IN__3 } /* in=3 */,
- { 36, 2308, 0, 21, 0, UNI_YIJING } /* yijinghexagramsymbols */,
- { 0, 5986, 8010, 13, 2, UNI_NV__36 } /* numericvalue=36 */,
- { 1, 5578, 1089, 15, 2, UNI_SB__SE } /* sentencebreak=sep */,
- { 3, 9668, 0, 4, 0, UNI_MTEI } /* mtei */,
- { 2, 3379, 9836, 6, 4, UNI_XPOSIXSPACE } /* space=true */,
- { 0, 6061, 9255, 12, 5, -UNI_BIDIC } /* bidicontrol=false */,
- { 0, 6609, 0, 10, 0, UNI_DEP } /* deprecated */,
- { 2, 10048, 7947, 3, 8, UNI_NV__3_SLASH_64 } /* nv=4.69e-02 */,
- { 3, 4643, 9255, 15, 5, -UNI_ECOMP } /* emojicomponent=false */,
- { 64, 8780, 8631, 6, 7, UNI_SUPPUAB } /* block=suppuab */,
- { 3, 184, 8498, 2, 4, UNI_MULT } /* ismult */,
- { 1, 9644, 0, 4, 0, UNI_MEDF } /* medf */,
- { 0, 10048, 9416, 3, 4, UNI_NV__3_SLASH_16 } /* nv=3/16 */,
- { 1, 9265, 1025, 5, 2, -UNI_IDST } /* idst=no */,
- { 0, 1006, 0, 27, 0, UNI_ANCIENTGREEKMUSIC } /* ancientgreekmusicalnotation */,
- { 1, 8589, 9672, 7, 4, UNI_SC__MYMR } /* script=mymr */,
- { 1, 21, 3751, 2, 17, UNI_INKHITANSMALLSCRIPT } /* inkhitansmallscript */,
- { 0, 4116, 415, 3, 31, UNI_INIDC } /* isideographicdescriptioncharacters */,
- { 3, 10024, 10180, 3, 2, UNI_ZS } /* gc=zs */,
- { 1, 10033, 340, 3, 2, UNI_LB__OP } /* lb=op */,
- { 5, 9488, 749, 4, 30, UNI_ENCLOSEDALPHANUMSUP } /* blk=enclosedalphanumericsupplement */,
- { 14, 184, 1184, 2, 3, UNI_DEP } /* isdep */,
- { 2, 6231, 2667, 4, 17, UNI_COUNTINGROD } /* incountingrodnumerals */,
- { 0, 8780, 8526, 6, 7, UNI_NB } /* block=noblock */,
- { 79, 7438, 7612, 10, 6, UNI_WB__MN } /* wordbreak=midnum */,
- { 136, 5986, 7955, 13, 8, UNI_NV__1_SLASH_20 } /* numericvalue=5.00e-02 */,
- { 5, 184, 2161, 2, 20, UNI_EXTPICT } /* isextendedpictographic */,
- { 3, 2280, 1759, 4, 2, UNI_OLCK } /* isolck */,
- { 0, 184, 1115, 3, 24, UNI_CWKCF } /* ischangeswhennfkccasefolded */,
- { 2, 9071, 9255, 4, 5, -UNI_XPOSIXXDIGIT } /* hex=false */,
- { 0, 184, 1044, 2, 6, UNI_L } /* isletter */,
- { 0, 9768, 3785, 4, 10, UNI_MANI } /* scx=manichaean */,
- { 4, 3836, 6484, 17, 4, UNI_HUNG } /* scriptextensions=hung */,
- { 0, 9488, 979, 4, 27, UNI_ALPHABETICPF } /* blk=alphabeticpresentationforms */,
- { 4, 5791, 9884, 13, 4, UNI_JG__ZAIN } /* joininggroup=zain */,
- { 31, 8780, 7239, 6, 2, UNI_INVS } /* block=vs */,
- { 72, 9997, 4493, 3, 15, UNI_BC__CS } /* bc=commonseparator */,
- { 2, 1768, 9836, 22, 4, UNI_CWCF } /* changeswhencasefolded=true */,
- { 0, 7318, 0, 10, 0, UNI_in_values_index } /* presentin= */,
- { 13, 10024, 4017, 3, 16, UNI_PF } /* gc=finalpunctuation */,
- { 2, 10048, 9360, 3, 4, UNI_NV___MINUS_1_SLASH_2 } /* nv=-1/2 */,
- { 0, 4241, 0, 16, 0, UNI_MISCMATHSYMBOLSA } /* miscmathsymbolsa */,
- { 0, 10048, 8726, 3, 6, UNI_NV__432000 } /* nv=432000 */,
- { 0, 3836, 9688, 17, 3, UNI_NKO } /* scriptextensions=nko */,
- { 1, 8780, 6122, 7, 11, UNI_CYRILLICEXTC } /* block=cyrillicextc */,
- { 4, 8780, 2061, 6, 15, UNI_MODIFIERLETTERS } /* block=modifierletters */,
- { 0, 8780, 8123, 6, 8, UNI_INBUGINESE } /* block=buginese */,
- { 3, 8780, 3667, 7, 16, UNI_CYRILLICEXTC } /* block=cyrillicextendedc */,
- { 137, 414, 0, 32, 0, UNI_INIDC } /* ideographicdescriptioncharacters */,
- { 290, 9488, 7288, 4, 10, UNI_INOLDSOGDIAN } /* blk=oldsogdian */,
- { 0, 9786, 8598, 4, 5, UNI_SC__SHRD } /* insharada */,
- { 0, 9768, 8463, 4, 7, UNI_KALI } /* scx=kayahli */,
- { 0, 1188, 4402, 3, 8, UNI_TANGUTSUP } /* intangutsup */,
- { 0, 184, 867, 2, 11, UNI_PHONETICEXT } /* isphoneticext */,
- { 4, 10296, 7207, 3, 3, UNI_PHLI } /* isphli */,
- { 11, 9508, 9928, 4, 3, UNI_CCC__BR } /* ccc=222 */,
- { 8, 3367, 0, 17, 0, UNI__PERL_PATWS } /* patternwhitespace */,
- { 1, 5986, 7859, 13, 8, UNI_NV__20000000 } /* numericvalue=20000000 */,
- { 0, 728, 0, 6, 0, UNI_N } /* number */,
- { 1, 10048, 7779, 3, 8, UNI_NV__1_SLASH_7 } /* nv=1.43e-01 */,
- { 1, 1166, 1, 26, 1, -UNI_DI } /* defaultignorablecodepoint=n */,
- { 9, 9752, 0, 4, 0, UNI_ROHG } /* rohg */,
- { 0, 1966, 3615, 22, 17, UNI_INSC__CONSONANTPREFIXED } /* indicsyllabiccategory=consonantprefixed */,
- { 6, 8780, 7388, 6, 10, UNI_SUPARROWSB } /* block=suparrowsb */,
- { 2, 1966, 2369, 22, 20, UNI_INSC__CONSONANTPLACEHOLDER } /* indicsyllabiccategory=consonantplaceholder */,
- { 0, 5986, 7859, 13, 4, UNI_NV__2000 } /* numericvalue=2000 */,
- { 4, 4129, 0, 6, 0, UNI_LATIN1 } /* latin1 */,
- { 4, 10033, 3, 4, 1, UNI_LB__LF } /* lb=lf */,
- { 5, 9275, 3953, 5, 16, UNI_INSC__CANTILLATIONMARK } /* insc=cantillationmark */,
- { 36, 4033, 206, 16, 2, UNI_PI } /* generalcategory=pi */,
- { 7, 9572, 0, 4, 0, UNI_GUJR } /* gujr */,
- { 1, 6961, 0, 11, 0, UNI_SUPERANDSUB } /* superandsub */,
- { 5, 9488, 509, 4, 20, UNI_CJK } /* blk=cjkunifiedideographs */,
- { 0, 1294, 0, 25, 0, UNI_SUPERANDSUB } /* superscriptsandsubscripts */,
- { 76, 9277, 8659, 3, 7, UNI_TIBT } /* sc=tibetan */,
- { 1, 7249, 6600, 4, 9, UNI_CASEDLETTER } /* iscasedletter */,
- { 0, 4033, 3985, 16, 16, UNI_PE } /* generalcategory=closepunctuation */,
- { 0, 9270, 3475, 5, 10, UNI_INPC__TOPANDLEFT } /* inpc=topandleft */,
- { 1, 3836, 8115, 17, 4, UNI_BASS } /* scriptextensions=bass */,
- { 2, 8780, 7027, 6, 11, UNI_YISYLLABLES } /* block=yisyllables */,
- { 1, 9351, 9836, 4, 4, UNI_IDS } /* ids=true */,
- { 0, 8379, 0, 7, 0, UNI_CJKEXTE } /* cjkexte */,
- { 0, 8780, 4129, 6, 16, UNI_LATIN1 } /* block=latin1supplement */,
- { 43, 9277, 9876, 3, 4, UNI_XSUX } /* sc=xsux */,
- { 0, 10030, 7, 3, 1, UNI_JT__C } /* jt=c */,
- { 0, 5986, 7874, 13, 2, UNI_NV__23 } /* numericvalue=23 */,
- { 0, 9488, 6620, 4, 6, UNI_DOMINO } /* blk=domino */,
- { 8, 9508, 8568, 4, 7, UNI_CCC__1 } /* ccc=overlay */,
- { 3, 184, 7388, 2, 10, UNI_SUPARROWSB } /* issuparrowsb */,
- { 0, 3836, 8597, 18, 6, UNI_SHRD } /* scriptextensions=sharada */,
- { 39, 9488, 3751, 4, 17, UNI_INKHITANSMALLSCRIPT } /* blk=khitansmallscript */,
- { 0, 9488, 7576, 4, 9, UNI_LATINEXTB } /* blk=latinextb */,
- { 31, 8589, 7694, 8, 8, UNI_SAMR } /* script=samaritan */,
- { 82, 9997, 2449, 3, 20, UNI_BC__LRE } /* bc=lefttorightembedding */,
- { 1, 9768, 1677, 4, 5, UNI_LATN } /* scx=latin */,
- { 32, 1537, 4615, 4, 13, UNI_DIACRITICALSSUP } /* indiacriticalssup */,
- { 0, 4116, 2225, 3, 20, UNI_PRTI } /* isinscriptionalparthian */,
- { 2, 5037, 0, 9, 0, UNI_hex_values_index } /* hexdigit= */,
- { 0, 1966, 9300, 22, 5, UNI_INSC__NUKTA } /* indicsyllabiccategory=nukta */,
- { 1, 6710, 3601, 5, 14, UNI_INCAUCASIANALBANIAN } /* incaucasianalbanian */,
- { 26, 7155, 5585, 3, 3, UNI_HEBR } /* ishebr */,
- { 0, 7325, 9967, 3, 3, UNI_IN__5_DOT_1 } /* in=5.1 */,
- { 65, 1746, 0, 23, 0, UNI_BPT__C } /* bidipairedbrackettype=c */,
- { 0, 10003, 1025, 3, 2, -UNI_CI } /* ci=no */,
- { 74, 4033, 598, 16, 2, UNI_XPOSIXCNTRL } /* generalcategory=cc */,
- { 0, 184, 9085, 2, 5, UNI_BATK } /* isbatak */,
- { 1, 9488, 4613, 4, 15, UNI_DIACRITICALSSUP } /* blk=diacriticalssup */,
- { 0, 9488, 2140, 4, 8, UNI_INCYRILLIC } /* blk=cyrillic */,
- { 1, 3379, 9255, 6, 5, -UNI_XPOSIXSPACE } /* space=false */,
- { 1, 3836, 6481, 17, 12, UNI_HUNG } /* scriptextensions=oldhungarian */,
- { 2, 8780, 1192, 6, 26, UNI_HALFANDFULLFORMS } /* block=halfwidthandfullwidthforms */,
- { 0, 1189, 5040, 3, 5, UNI_NT__DI } /* nt=digit */,
- { 55, 3836, 3079, 17, 6, UNI_COPT } /* scriptextensions=coptic */,
- { 16, 184, 5438, 2, 14, UNI_SK } /* ismodifiersymbol */,
- { 0, 10183, 3379, 4, 5, UNI_POSIXSPACE } /* perlspace */,
- { 2, 5986, 9413, 13, 3, UNI_NV__7_SLASH_2 } /* numericvalue=7/2 */,
- { 3, 3133, 10135, 18, 3, UNI_EBASE } /* emojimodifierbase=yes */,
- { 2, 10027, 7038, 3, 10, UNI_JG__AFRICANFEH } /* jg=africanfeh */,
- { 1, 8858, 1, 6, 1, -UNI_ECOMP } /* ecomp=n */,
- { 0, 9488, 1673, 4, 4, UNI_JAMO } /* blk=jamo */,
- { 0, 5578, 125, 14, 2, UNI_LB__CR } /* sentencebreak=cr */,
- { 3, 3382, 9836, 3, 4, UNI_CE } /* ce=true */,
- { 0, 3836, 9668, 17, 4, UNI_MTEI } /* scriptextensions=mtei */,
- { 2, 8978, 0, 6, 0, UNI_patws_values_index } /* patws= */,
- { 0, 9768, 7675, 4, 4, UNI_PALM } /* scx=palm */,
- { 3, 3836, 6193, 17, 4, UNI_HEBR } /* scriptextensions=hebr */,
- { 1, 3904, 9836, 17, 4, UNI_UIDEO } /* unifiedideograph=true */,
- { 13, 1552, 1563, 9, 2, UNI_PS } /* category=ps */,
- { 0, 184, 349, 2, 33, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* issupplementalsymbolsandpictographs */,
- { 68, 1087, 1025, 27, 2, -UNI_PCM } /* prependedconcatenationmark=no */,
- { 73, 9277, 8131, 3, 4, UNI_SC__DUPL } /* sc=dupl */,
- { 0, 9488, 2140, 4, 11, UNI_CYRILLICSUP } /* blk=cyrillicsup */,
- { 8, 10340, 4975, 4, 6, UNI_VEDICEXT } /* isvedicext */,
- { 64, 9488, 8876, 4, 6, UNI_INGOTHIC } /* blk=gothic */,
- { 1, 8589, 7188, 7, 10, UNI_KHAR } /* script=kharoshthi */,
- { 2, 1417, 8708, 24, 3, UNI_CCC__216 } /* canonicalcombiningclass=216 */,
- { 11, 1591, 8415, 3, 6, UNI_INELBASAN } /* inelbasan */,
- { 142, 8780, 5256, 6, 14, UNI_LATINEXTD } /* block=latinextendedd */,
- { 138, 9768, 1115, 4, 4, UNI_HANG } /* scx=hang */,
- { 33, 4688, 7550, 16, 8, UNI_IDENTIFIERTYPE__INCLUSION } /* identifiertype=inclusion */,
- { 48, 8589, 9684, 7, 4, UNI_NEWA } /* script=newa */,
- { 58, 9768, 9476, 4, 4, UNI_AVST } /* scx=avst */,
- { 158, 5508, 26, 14, 1, UNI_PATSYN } /* patternsyntax=y */,
- { 0, 5986, 9964, 13, 3, UNI_NV__4_SLASH_5 } /* numericvalue=4/5 */,
- { 0, 9900, 0, 4, 0, UNI_ZZZZ } /* zzzz */,
- { 24, 10048, 7907, 3, 8, UNI_NV__3_SLASH_8 } /* nv=3.75e-01 */,
- { 3, 9488, 4273, 4, 16, UNI_MYANMAREXTA } /* blk=myanmarextendeda */,
- { 0, 9768, 9624, 4, 4, UNI_LAO } /* scx=laoo */,
- { 1, 5739, 10135, 13, 3, UNI_GRBASE } /* graphemebase=yes */,
- { 0, 10048, 5648, 3, 3, UNI_NV__100 } /* nv=100 */,
- { 5, 8852, 36, 6, 1, UNI_CWKCF } /* cwkcf=t */,
- { 9, 184, 8107, 2, 8, UNI_BALI } /* isbalinese */,
- { 2, 10048, 9964, 3, 3, UNI_NV__4_SLASH_5 } /* nv=4/5 */,
- { 1, 9508, 9925, 4, 3, UNI_CCC__BL } /* ccc=218 */,
- { 0, 9768, 4703, 4, 15, UNI_ARMI } /* scx=imperialaramaic */,
- { 0, 9488, 5200, 4, 14, UNI_KANASUP } /* blk=kanasupplement */,
- { 20, 5986, 9984, 13, 2, UNI_NV__37 } /* numericvalue=37 */,
- { 1, 21, 8227, 2, 8, UNI_KANAEXTA } /* inkanaexta */,
- { 2, 8131, 0, 4, 0, UNI_DUPL } /* dupl */,
- { 3, 9768, 9688, 4, 4, UNI_NKO } /* scx=nkoo */,
- { 0, 3836, 9892, 17, 4, UNI_QAAI } /* scriptextensions=zinh */,
- { 6, 7218, 7448, 10, 10, UNI_LB__WJ } /* linebreak=wordjoiner */,
- { 2, 9488, 2245, 4, 11, UNI_INMEETEIMAYEK } /* blk=meeteimayek */,
- { 5, 9768, 8840, 4, 6, UNI_CAKM } /* scx=chakma */,
- { 37, 9488, 478, 4, 31, UNI_MATHALPHANUM } /* blk=mathematicalalphanumericsymbols */,
- { 1, 5791, 5340, 13, 14, UNI_JG__MANICHAEANFIVE } /* joininggroup=manichaeanfive */,
- { 1, 10048, 9405, 3, 3, UNI_NV__3_SLASH_2 } /* nv=3/2 */,
- { 1, 184, 7129, 3, 9, UNI_CJKSTROKES } /* iscjkstrokes */,
- { 0, 3836, 2429, 17, 20, UNI_PHLI } /* scriptextensions=inscriptionalpahlavi */,
- { 1, 9488, 2409, 4, 10, UNI_INGLAGOLITIC } /* blk=glagolitic */,
- { 1, 9556, 6170, 5, 11, UNI_WB__EB } /* gcb=glueafterzwj */,
- { 0, 9997, 37, 3, 2, UNI_BC__EN } /* bc=en */,
- { 33, 9768, 2469, 4, 20, UNI_HMNP } /* scx=nyiakengpuachuehmong */,
- { 0, 184, 5817, 2, 13, UNI_ZL } /* islineseparator */,
- { 13, 3904, 26, 17, 1, UNI_UIDEO } /* unifiedideograph=y */,
- { 0, 9768, 2485, 4, 4, UNI_MONG } /* scx=mong */,
- { 0, 5116, 0, 14, 0, UNI_emod_values_index } /* emojimodifier= */,
- { 0, 10288, 1823, 8, 5, UNI_XPOSIXLOWER } /* isxposixlower */,
- { 7, 9768, 7278, 4, 10, UNI_XPEO } /* scx=oldpersian */,
- { 0, 9262, 495, 3, 2, UNI_SB__NU } /* sb=nu */,
- { 2, 9508, 7477, 4, 9, UNI_CCC__AL } /* ccc=aboveleft */,
- { 1, 8449, 9836, 7, 4, UNI_HYPHEN } /* hyphen=true */,
- { 2, 3836, 9568, 17, 4, UNI_GREK } /* scriptextensions=grek */,
- { 84, 10048, 8720, 3, 6, UNI_NV__400000 } /* nv=400000 */,
- { 1, 1552, 7408, 9, 10, UNI_CN } /* category=unassigned */,
- { 0, 7418, 0, 10, 0, UNI_upper_values_index } /* uppercase= */,
- { 1, 4033, 10176, 16, 2, UNI_ZL } /* generalcategory=zl */,
- { 2, 4793, 0, 15, 0, UNI_MERC } /* meroiticcursive */,
- { 0, 8589, 6484, 7, 4, UNI_HUNG } /* script=hung */,
- { 0, 184, 8942, 2, 6, UNI_LYDI } /* islydian */,
- { 0, 3367, 3, 18, 1, -UNI__PERL_PATWS } /* patternwhitespace=f */,
- { 48, 5791, 9744, 13, 4, UNI_JG__QAPH } /* joininggroup=qaph */,
- { 90, 4916, 8660, 3, 6, UNI_TIBT } /* istibetan */,
- { 1, 3097, 8163, 18, 8, UNI_DT__FRA } /* decompositiontype=fraction */,
- { 2, 2784, 3923, 4, 7, UNI_ARABICSUP } /* inarabicsup */,
- { 3, 184, 3796, 3, 3, UNI_CHAM } /* ischam */,
- { 0, 4116, 1907, 3, 15, UNI_INDICNUMBERFORMS } /* isindicnumberforms */,
- { 1, 3836, 2203, 17, 14, UNI_ROHG } /* scriptextensions=hanifirohingya */,
- { 1, 1966, 4353, 22, 16, UNI_INSC__SYLLABLEMODIFIER } /* indicsyllabiccategory=syllablemodifier */,
- { 1, 1417, 9931, 24, 3, UNI_CCC__L } /* canonicalcombiningclass=224 */,
- { 1, 9488, 7099, 5, 9, UNI_BOXDRAWING } /* blk=boxdrawing */,
- { 0, 8589, 8428, 7, 7, UNI_SC__GRAN } /* script=grantha */,
- { 1, 9768, 8912, 4, 6, UNI_KHOJ } /* scx=khojki */,
- { 5, 9488, 9065, 4, 5, UNI_INADLAM } /* blk=adlam */,
- { 0, 184, 5960, 2, 13, UNI_MISCTECHNICAL } /* ismisctechnical */,
- { 66, 7325, 7408, 3, 10, UNI_AGE__NA } /* in=unassigned */,
- { 0, 9556, 911, 4, 1, UNI_GCB__V } /* gcb=v */,
- { 0, 9275, 4305, 5, 5, UNI_INSC__OTHER } /* insc=other */,
- { 1, 9600, 0, 4, 0, UNI_KALI } /* kali */,
- { 0, 8852, 9255, 6, 5, -UNI_CWKCF } /* cwkcf=false */,
- { 10, 10296, 9225, 7, 5, UNI_POSIXCNTRL } /* isposixcntrl */,
- { 1, 7318, 9401, 10, 3, UNI_IN__3 } /* presentin=3.0 */,
- { 28, 8267, 10135, 8, 3, UNI_RADICAL } /* radical=yes */,
- { 0, 9768, 7513, 4, 9, UNI_BHKS } /* scx=bhaiksuki */,
- { 0, 5039, 0, 6, 0, UNI_XPOSIXXDIGIT } /* xdigit */,
- { 0, 9488, 5284, 4, 4, UNI_INLISU } /* blk=lisu */,
- { 1, 5986, 8708, 13, 6, UNI_NV__216000 } /* numericvalue=216000 */,
- { 3, 8780, 4928, 6, 8, UNI_TAMILSUP } /* block=tamilsup */,
- { 16, 8780, 9335, 6, 5, UNI_INTAKRI } /* block=takri */,
- { 0, 9346, 1, 4, 1, -UNI_IDC } /* idc=n */,
- { 0, 2032, 3, 22, 1, -UNI__PERL_NCHAR } /* noncharactercodepoint=f */,
- { 1, 6928, 0, 10, 0, UNI_SD } /* softdotted */,
- { 0, 3893, 0, 11, 0, UNI_SGNW } /* signwriting */,
- { 3, 8780, 4065, 6, 16, UNI_HALFANDFULLFORMS } /* block=halfandfullforms */,
- { 0, 9440, 0, 4, 0, UNI_ADLM } /* adlm */,
- { 1, 9262, 33, 3, 2, UNI_SB__SE } /* sb=se */,
- { 0, 4628, 66, 15, 1, UNI_EA__H } /* eastasianwidth=h */,
- { 66, 1988, 26, 22, 1, UNI_LOE } /* logicalorderexception=y */,
- { 0, 8780, 7398, 6, 10, UNI_SUPARROWSC } /* block=suparrowsc */,
- { 20, 7028, 2309, 3, 20, UNI_YIJING } /* isyijinghexagramsymbols */,
- { 3, 184, 7398, 2, 10, UNI_SUPARROWSC } /* issuparrowsc */,
- { 0, 9768, 8618, 5, 3, UNI_SOYO } /* scx=soyo */,
- { 9, 8780, 908, 6, 10, UNI_PUA } /* block=privateuse */,
- { 0, 1790, 1, 22, 1, -UNI_CWCM } /* changeswhencasemapped=n */,
- { 34, 8589, 9600, 7, 4, UNI_SC__KALI } /* script=kali */,
- { 16, 8372, 0, 7, 0, UNI_CJKEXTD } /* cjkextd */,
- { 0, 1188, 4402, 3, 15, UNI_TANGUTSUP } /* intangutsupplement */,
- { 69, 9275, 5144, 5, 14, UNI_INSC__GEMINATIONMARK } /* insc=geminationmark */,
- { 6, 8780, 3169, 6, 11, UNI_ETHIOPICSUP } /* block=ethiopicsup */,
- { 7, 9488, 414, 4, 32, UNI_INIDC } /* blk=ideographicdescriptioncharacters */,
- { 1, 8589, 9320, 7, 5, UNI_OSGE } /* script=osage */,
- { 0, 9768, 8561, 4, 7, UNI_OSMA } /* scx=osmanya */,
- { 33, 8780, 5522, 6, 14, UNI_PHONETICEXTSUP } /* block=phoneticextsup */,
- { 4, 10006, 1, 3, 1, -UNI_DI } /* di=n */,
- { 72, 184, 2061, 2, 15, UNI_MODIFIERLETTERS } /* ismodifierletters */,
- { 0, 9508, 1756, 4, 2, UNI_CCC__BR } /* ccc=br */,
- { 0, 5986, 7858, 13, 2, UNI_NV__22 } /* numericvalue=22 */,
- { 1, 9540, 10135, 4, 3, UNI_DIA } /* dia=yes */,
- { 35, 6205, 26, 12, 1, UNI_IDEO } /* ideographic=y */,
- { 4, 4146, 1947, 5, 19, UNI_EARLYDYNASTICCUNEIFORM } /* inearlydynasticcuneiform */,
- { 1, 6231, 600, 3, 29, UNI_CJKEXTD } /* incjkunifiedideographsextensiond */,
- { 1, 5674, 36, 13, 1, UNI_BIDIM } /* bidimirrored=t */,
- { 5, 3836, 8115, 17, 8, UNI_BASS } /* scriptextensions=bassavah */,
- { 0, 9508, 8082, 4, 2, UNI_CCC__19 } /* ccc=19 */,
- { 3, 7325, 7469, 3, 3, UNI_IN__5 } /* in=5.0 */,
- { 2, 7438, 8505, 10, 7, UNI_WB__NL } /* wordbreak=newline */,
- { 1, 7218, 125, 10, 2, UNI_LB__CR } /* linebreak=cr */,
- { 7, 9444, 7755, 4, 3, UNI_IN__1_DOT_1 } /* age=1.1 */,
- { 78, 9488, 2836, 4, 19, UNI_MODIFIERTONELETTERS } /* blk=modifiertoneletters */,
- { 1, 9488, 4289, 4, 16, UNI_MYANMAREXTB } /* blk=myanmarextendedb */,
- { 2, 10296, 5040, 7, 5, UNI_POSIXDIGIT } /* isposixdigit */,
- { 1, 5791, 9281, 14, 4, UNI_JG__KHAPH } /* joininggroup=khaph */,
- { 0, 7325, 9856, 3, 4, UNI_IN__13 } /* in=v130 */,
- { 2, 3853, 1025, 17, 2, -UNI_STERM } /* sentenceterminal=no */,
- { 0, 10024, 4958, 3, 15, UNI_UPPERCASELETTER } /* gc=uppercaseletter */,
- { 0, 184, 8131, 2, 8, UNI_DUPL } /* isduployan */,
- { 2, 21, 3768, 2, 17, UNI_LETTERLIKESYMBOLS } /* inletterlikesymbols */,
- { 7, 7325, 10084, 3, 3, UNI_IN__3_DOT_1 } /* in=v31 */,
- { 0, 7155, 5219, 3, 3, UNI_HIRA } /* ishira */,
- { 2, 9508, 184, 4, 2, UNI_CCC__IS } /* ccc=is */,
- { 197, 1417, 8801, 24, 3, UNI_CCC__107 } /* canonicalcombiningclass=107 */,
- { 68, 9768, 7288, 4, 10, UNI_SOGO } /* scx=oldsogdian */,
- { 3, 184, 74, 2, 2, UNI_ME } /* isme */,
- { 1, 9997, 10018, 3, 3, UNI_BC__FSI } /* bc=fsi */,
- { 40, 9350, 1, 5, 1, -UNI_XIDS } /* xids=n */,
- { 10, 7325, 7826, 3, 4, UNI_IN__12 } /* in=12.0 */,
- { 1, 9488, 3295, 4, 9, UNI_LATINEXTA } /* blk=latinexta */,
- { 124, 5986, 8720, 13, 4, UNI_NV__4000 } /* numericvalue=4000 */,
- { 0, 5791, 6301, 13, 12, UNI_JG__MALAYALAMLLA } /* joininggroup=malayalamlla */,
- { 4, 1631, 0, 15, 0, UNI_GEOMETRICSHAPES } /* geometricshapes */,
- { 34, 1087, 0, 26, 0, UNI_PCM } /* prependedconcatenationmark */,
- { 1, 1746, 5904, 22, 4, UNI_BPT__N } /* bidipairedbrackettype=none */,
- { 1, 2161, 9255, 21, 5, -UNI_EXTPICT } /* extendedpictographic=false */,
- { 18, 8589, 8107, 7, 4, UNI_BALI } /* script=bali */,
- { 0, 8673, 0, 7, 0, UNI_UCASEXT } /* ucasext */,
- { 35, 1417, 1179, 24, 2, UNI_CCC__BL } /* canonicalcombiningclass=bl */,
- { 0, 8780, 5242, 6, 14, UNI_LATINEXTC } /* block=latinextendedc */,
- { 1, 184, 8366, 3, 6, UNI_CJKEXTC } /* iscjkextc */,
- { 0, 9305, 0, 5, 0, UNI_NSHU } /* nushu */,
- { 6, 9488, 2061, 4, 4, UNI_INMODI } /* blk=modi */,
- { 0, 2061, 0, 15, 0, UNI_MODIFIERLETTERS } /* modifierletters */,
- { 149, 8780, 8107, 6, 8, UNI_INBALINESE } /* block=balinese */,
- { 3, 4628, 8948, 15, 6, UNI_EA__NA } /* eastasianwidth=narrow */,
- { 0, 7318, 7867, 10, 3, UNI_IN__3_DOT_1 } /* presentin=3.1 */,
- { 128, 10024, 206, 3, 2, UNI_PI } /* gc=pi */,
- { 40, 7155, 2507, 3, 3, UNI_HATR } /* ishatr */,
- { 0, 10310, 8668, 4, 5, UNI_INTIRHUTA } /* intirhuta */,
- { 10, 9488, 1677, 4, 14, UNI_LATINEXTA } /* blk=latinextendeda */,
- { 8, 4568, 0, 15, 0, UNI_CURRENCYSYMBOLS } /* currencysymbols */,
- { 16, 9768, 8123, 4, 8, UNI_BUGI } /* scx=buginese */,
- { 0, 8780, 8407, 6, 7, UNI_DSRT } /* block=deseret */,
- { 100, 21, 4161, 2, 16, UNI_LINEARBSYLLABARY } /* inlinearbsyllabary */,
- { 23, 184, 4337, 2, 16, UNI_SUPMATHOPERATORS } /* issupmathoperators */,
- { 2, 8780, 183, 6, 34, UNI_MISCPICTOGRAPHS } /* block=miscellaneoussymbolsandpictographs */,
- { 0, 9556, 4360, 4, 9, UNI_WB__EB } /* gcb=emodifier */,
- { 0, 8589, 9808, 7, 4, UNI_TALU } /* script=talu */,
- { 3, 9488, 1218, 4, 26, UNI_KATAKANAEXT } /* blk=katakanaphoneticextensions */,
- { 0, 9596, 6763, 4, 3, UNI_LB__H3 } /* hst=lvt */,
- { 0, 9596, 0, 4, 0, UNI_hst_values_index } /* hst= */,
- { 0, 8171, 0, 8, 0, UNI_GUJR } /* gujarati */,
- { 34, 9277, 8617, 3, 4, UNI_SOYO } /* sc=soyo */,
- { 1, 3259, 36, 18, 1, UNI_IDSB } /* idsbinaryoperator=t */,
- { 2, 8575, 9255, 7, 5, -UNI_PATSYN } /* patsyn=false */,
- { 0, 10048, 7915, 3, 8, UNI_NV__3_SLASH_80 } /* nv=3.75e-02 */,
- { 104, 5778, 0, 6, 0, UNI_IPAEXT } /* ipaext */,
- { 0, 3367, 1025, 18, 2, -UNI__PERL_PATWS } /* patternwhitespace=no */,
- { 201, 9488, 4273, 4, 7, UNI_INMYANMAR } /* blk=myanmar */,
- { 1, 349, 0, 33, 0, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* supplementalsymbolsandpictographs */,
- { 251, 10126, 409, 3, 2, UNI_VO__TR } /* vo=tr */,
- { 2, 2161, 36, 21, 1, UNI_EXTPICT } /* extendedpictographic=t */,
- { 1, 9508, 9146, 5, 4, UNI_CCC__23 } /* ccc=ccc23 */,
- { 0, 6420, 125, 3, 2, UNI_OCR } /* inocr */,
- { 16, 8589, 0, 14, 0, UNI_SC__SHRD } /* script=sharada */,
- { 2, 8694, 26, 7, 1, UNI_XPOSIXSPACE } /* wspace=y */,
- { 195, 1417, 8042, 24, 2, UNI_CCC__18 } /* canonicalcombiningclass=18 */,
- { 1, 7318, 10123, 10, 3, UNI_IN__9 } /* presentin=v90 */,
- { 0, 8954, 36, 6, 1, UNI__PERL_NCHAR } /* nchar=t */,
- { 5, 4628, 7486, 15, 9, UNI_EA__A } /* eastasianwidth=ambiguous */,
- { 4, 184, 3241, 2, 11, UNI_GEORGIANSUP } /* isgeorgiansup */,
- { 0, 2224, 3440, 3, 11, UNI_SMALLKANAEXT } /* insmallkanaext */,
- { 1, 7318, 9400, 10, 4, UNI_IN__13 } /* presentin=13.0 */,
- { 0, 8589, 2203, 7, 14, UNI_SC__ROHG } /* script=hanifirohingya */,
- { 0, 1552, 1910, 9, 2, UNI_CN } /* category=cn */,
- { 2, 184, 4554, 3, 14, UNI_CONTROLPICTURES } /* iscontrolpictures */,
- { 3, 10027, 6289, 3, 12, UNI_JG__MALAYALAMBHA } /* jg=malayalambha */,
- { 2, 4116, 7740, 3, 6, UNI_IDS } /* isidstart */,
- { 6, 9768, 2288, 5, 6, UNI_SINH } /* scx=sinhala */,
- { 16, 6241, 18, 12, 1, UNI_JT__R } /* joiningtype=r */,
- { 6, 7318, 7827, 10, 3, UNI_IN__2 } /* presentin=2.0 */,
- { 0, 10132, 4305, 3, 5, UNI_WB__XX } /* wb=other */,
- { 4, 10048, 9961, 3, 3, UNI_NV__3_SLASH_5 } /* nv=3/5 */,
- { 13, 9556, 5008, 5, 2, UNI_WB__EB } /* gcb=gaz */,
- { 0, 9768, 3079, 4, 6, UNI_COPT } /* scx=coptic */,
- { 0, 9768, 9612, 4, 4, UNI_KNDA } /* scx=knda */,
- { 0, 9235, 9836, 5, 4, UNI_CWCM } /* cwcm=true */,
- { 0, 8780, 5003, 6, 15, UNI_INZANABAZARSQUARE } /* block=zanabazarsquare */,
- { 8, 5674, 0, 5, 0, UNI_BIDIM } /* bidim */,
- { 7, 2161, 0, 21, 0, UNI_extpict_values_index } /* extendedpictographic= */,
- { 1, 9768, 9624, 4, 3, UNI_LAO } /* scx=lao */,
- { 0, 8780, 2409, 6, 10, UNI_INGLAGOLITIC } /* block=glagolitic */,
- { 0, 3836, 8936, 17, 4, UNI_LYCI } /* scriptextensions=lyci */,
- { 5, 4791, 4274, 3, 6, UNI_INMYANMAR } /* inmyanmar */,
- { 83, 8589, 8680, 7, 7, UNI_ZZZZ } /* script=unknown */,
- { 1, 9277, 2278, 4, 3, UNI_SC__KALI } /* sc=kali */,
- { 3, 9488, 8477, 4, 7, UNI_INMAKASAR } /* blk=makasar */,
- { 32, 4568, 0, 14, 0, UNI_SC } /* currencysymbol */,
- { 0, 184, 7693, 2, 9, UNI_SAMR } /* issamaritan */,
- { 2, 5986, 5648, 13, 9, UNI_NV__100000000 } /* numericvalue=100000000 */,
- { 0, 184, 3026, 3, 10, UNI_CHEROKEESUP } /* ischerokeesup */,
- { 3, 5718, 0, 5, 0, UNI_XPOSIXALNUM } /* alnum */,
- { 32, 8780, 414, 6, 32, UNI_INIDC } /* block=ideographicdescriptioncharacters */,
- { 0, 9488, 6085, 4, 12, UNI_CHESSSYMBOLS } /* blk=chesssymbols */,
- { 193, 8780, 2409, 6, 13, UNI_GLAGOLITICSUP } /* block=glagoliticsup */,
- { 2, 8589, 6840, 7, 11, UNI_SC__NAND } /* script=nandinagari */,
- { 4, 9277, 8498, 3, 7, UNI_SC__MULT } /* sc=multani */,
- { 1, 7155, 2723, 3, 18, UNI_JAMOEXTA } /* ishanguljamoextendeda */,
- { 11, 184, 250, 2, 33, UNI_MISCMATHSYMBOLSA } /* ismiscellaneousmathematicalsymbolsa */,
- { 0, 9488, 7675, 4, 9, UNI_PALM } /* blk=palmyrene */,
- { 9, 9262, 7702, 3, 9, UNI_SB__SC } /* sb=scontinue */,
- { 1, 10132, 6178, 3, 3, UNI_LB__ZWJ } /* wb=zwj */,
- { 4, 8589, 4370, 8, 5, UNI_SC__SYRC } /* script=syriac */,
- { 33, 9768, 8611, 5, 3, UNI_SIDD } /* scx=sidd */,
- { 11, 5986, 7939, 13, 8, UNI_NV__9_SLASH_2 } /* numericvalue=4.50e+00 */,
- { 0, 7158, 36, 10, 1, UNI_DIA } /* diacritic=t */,
- { 1, 1552, 1, 9, 1, UNI_N } /* category=n */,
- { 83, 3836, 8618, 18, 6, UNI_SOYO } /* scriptextensions=soyombo */,
- { 3, 184, 5200, 2, 7, UNI_KANASUP } /* iskanasup */,
- { 5, 9277, 9283, 3, 4, UNI_PHLI } /* sc=phli */,
- { 96, 9275, 0, 5, 0, UNI_insc_values_index } /* insc= */,
- { 0, 8428, 0, 4, 0, UNI_GRAN } /* gran */,
- { 0, 9346, 9836, 4, 4, UNI_IDC } /* idc=true */,
- { 2, 3836, 9624, 17, 3, UNI_LAO } /* scriptextensions=lao */,
- { 0, 21, 1218, 2, 26, UNI_KATAKANAEXT } /* inkatakanaphoneticextensions */,
- { 17, 2161, 1025, 21, 2, -UNI_EXTPICT } /* extendedpictographic=no */,
- { 0, 8780, 1218, 6, 26, UNI_KATAKANAEXT } /* block=katakanaphoneticextensions */,
- { 12, 9768, 2913, 5, 3, UNI_SUND } /* scx=sund */,
- { 0, 184, 1269, 2, 24, UNI_COMPEX } /* isfullcompositionexclusion */,
- { 1, 10048, 7827, 3, 8, UNI_NV__1_SLASH_5 } /* nv=2.00e-01 */,
- { 3, 9488, 6277, 4, 12, UNI_MAHJONG } /* blk=mahjongtiles */,
- { 352, 9262, 495, 3, 7, UNI_SB__NU } /* sb=numeric */,
- { 1, 10296, 9725, 3, 3, UNI_PHNX } /* isphnx */,
- { 2, 8780, 7495, 6, 9, UNI_ARABICPFA } /* block=arabicpfa */,
- { 0, 6805, 0, 13, 0, UNI_MISCSYMBOLS } /* inmiscsymbols */,
- { 0, 9716, 0, 3, 0, UNI_PCM } /* pcm */,
- { 258, 9277, 3598, 3, 17, UNI_AGHB } /* sc=caucasianalbanian */,
- { 4, 8768, 26, 6, 1, UNI_BIDIC } /* bidic=y */,
- { 2, 8780, 9095, 6, 5, UNI_INBUHID } /* block=buhid */,
- { 1, 8393, 0, 7, 0, UNI_CJKEXTG } /* cjkextg */,
- { 3, 117, 415, 3, 31, UNI_INIDC } /* inideographicdescriptioncharacters */,
- { 0, 1417, 6631, 24, 11, UNI_CCC__DA } /* canonicalcombiningclass=doubleabove */,
- { 80, 9265, 1, 5, 1, -UNI_IDST } /* idst=n */,
- { 63, 9488, 3115, 4, 10, UNI_INDEVANAGARI } /* blk=devanagari */,
- { 0, 2224, 4370, 3, 5, UNI_INSYRIAC } /* insyriac */,
- { 0, 6205, 3, 12, 1, -UNI_IDEO } /* ideographic=f */,
- { 37, 184, 9660, 2, 4, UNI_MLYM } /* ismlym */,
- { 1, 5791, 4748, 13, 15, UNI_JG__MANICHAEANGIMEL } /* joininggroup=manichaeangimel */,
- { 1, 184, 5592, 2, 14, UNI_ZS } /* isspaceseparator */,
- { 9, 6554, 3, 11, 1, -UNI_IDC } /* idcontinue=f */,
- { 3, 5986, 7778, 13, 2, UNI_NV__21 } /* numericvalue=21 */,
- { 2, 9508, 7858, 4, 3, UNI_CCC__B } /* ccc=220 */,
- { 0, 1900, 0, 6, 0, UNI_ZYYY } /* common */,
- { 25, 3836, 9452, 17, 4, UNI_AHOM } /* scriptextensions=ahom */,
- { 0, 9508, 9136, 5, 4, UNI_CCC__21 } /* ccc=ccc21 */,
- { 0, 2529, 0, 20, 0, UNI_term_values_index } /* terminalpunctuation= */,
- { 1, 8768, 9836, 6, 4, UNI_BIDIC } /* bidic=true */,
- { 0, 8780, 3785, 6, 10, UNI_INMANICHAEAN } /* block=manichaean */,
- { 8, 10333, 8625, 3, 6, UNI_SUPPUAA } /* issuppuaa */,
- { 256, 10024, 112, 3, 2, UNI_SC } /* gc=sc */,
- { 4, 9508, 8042, 4, 2, UNI_CCC__18 } /* ccc=18 */,
- { 177, 10048, 8067, 3, 8, UNI_NV__17_SLASH_2 } /* nv=8.50e+00 */,
- { 96, 9768, 8638, 4, 7, UNI_TGLG } /* scx=tagalog */,
- { 0, 4791, 2856, 3, 8, UNI_INMONGOLIAN } /* inmongolian */,
- { 0, 8688, 9477, 3, 3, UNI_AVST } /* isavst */,
- { 11, 9488, 8498, 4, 7, UNI_INMULTANI } /* blk=multani */,
- { 42, 6231, 630, 3, 29, UNI_CJKEXTE } /* incjkunifiedideographsextensione */,
- { 2, 6231, 1061, 4, 4, UNI_INCOPTIC } /* incoptic */,
- { 1, 7325, 10081, 3, 3, UNI_IN__3 } /* in=v30 */,
- { 5, 1552, 908, 9, 10, UNI_CO } /* category=privateuse */,
- { 0, 1591, 8422, 3, 6, UNI_INELYMAIC } /* inelymaic */,
- { 64, 9275, 9300, 5, 5, UNI_INSC__NUKTA } /* insc=nukta */,
- { 5, 3836, 9460, 17, 4, UNI_ARMI } /* scriptextensions=armi */,
- { 0, 8688, 9449, 3, 3, UNI_AGHB } /* isaghb */,
- { 0, 3097, 3501, 18, 3, UNI_DT__MED } /* decompositiontype=med */,
- { 0, 184, 8123, 2, 4, UNI_BUGI } /* isbugi */,
- { 8, 9014, 10135, 6, 3, UNI_UIDEO } /* uideo=yes */,
- { 5, 9536, 3, 4, 1, -UNI_DEP } /* dep=f */,
- { 2, 8589, 9888, 7, 4, UNI_ZANB } /* script=zanb */,
- { 9, 10048, 8732, 3, 3, UNI_NV__500 } /* nv=500 */,
- { 1, 184, 8870, 2, 5, UNI_EPRES } /* isepres */,
- { 0, 9277, 8477, 3, 7, UNI_MAKA } /* sc=makasar */,
- { 10, 3382, 1025, 3, 2, -UNI_CE } /* ce=no */,
- { 10, 5324, 480, 4, 29, UNI_MATHALPHANUM } /* inmathematicalalphanumericsymbols */,
- { 1, 10033, 5999, 3, 13, UNI_LB__PR } /* lb=prefixnumeric */,
- { 1, 2779, 0, 18, 0, UNI_IDST } /* idstrinaryoperator */,
- { 0, 4033, 5726, 16, 13, UNI_ME } /* generalcategory=enclosingmark */,
- { 0, 10027, 5364, 3, 4, UNI_JG__HETH } /* jg=heth */,
- { 0, 1979, 6266, 10, 11, UNI_NL } /* category=letternumber */,
- { 3, 9488, 2665, 4, 19, UNI_COUNTINGROD } /* blk=countingrodnumerals */,
- { 208, 8780, 7188, 6, 10, UNI_INKHAROSHTHI } /* block=kharoshthi */,
- { 84, 184, 8359, 3, 6, UNI_CJKEXTB } /* iscjkextb */,
- { 0, 9768, 2203, 4, 4, UNI_HAN } /* scx=hani */,
- { 0, 2182, 1087, 21, 7, UNI_GCB__PP } /* graphemeclusterbreak=prepend */,
- { 288, 2409, 0, 20, 0, UNI_GLAGOLITICSUP } /* glagoliticsupplement */,
- { 256, 9488, 2912, 4, 12, UNI_SUNDANESESUP } /* blk=sundanesesup */,
- { 0, 8780, 4703, 6, 15, UNI_INIMPERIALARAMAIC } /* block=imperialaramaic */,
- { 6, 9014, 3, 6, 1, -UNI_UIDEO } /* uideo=f */,
- { 0, 7218, 1186, 10, 2, UNI_LB__PO } /* linebreak=po */,
- { 0, 7438, 6169, 10, 12, UNI_WB__EB } /* wordbreak=glueafterzwj */,
- { 0, 184, 6181, 2, 12, UNI_GONG } /* isgunjalagondi */,
- { 1, 10033, 34, 3, 2, UNI_LB__EX } /* lb=ex */,
- { 2, 2280, 6874, 3, 10, UNI_SO } /* isothersymbol */,
- { 1, 9277, 3115, 3, 4, UNI_SC__DEVA } /* sc=deva */,
- { 0, 9488, 6505, 4, 12, UNI_PHAISTOS } /* blk=phaistosdisc */,
- { 176, 8780, 5228, 6, 14, UNI_LATINEXTB } /* block=latinextendedb */,
- { 25, 2533, 6028, 5, 9, UNI_ALPHABETICPF } /* inalphabeticpf */,
- { 5, 9997, 2509, 3, 11, UNI_BC__R } /* bc=righttoleft */,
- { 0, 8780, 7288, 6, 10, UNI_INOLDSOGDIAN } /* block=oldsogdian */,
- { 186, 9277, 8131, 3, 8, UNI_SC__DUPL } /* sc=duployan */,
- { 45, 1673, 0, 4, 0, UNI_JAMO } /* jamo */,
- { 66, 6061, 0, 12, 0, UNI_bidic_values_index } /* bidicontrol= */,
- { 0, 8589, 9038, 7, 6, UNI_SC__YEZI } /* script=yezidi */,
- { 0, 1856, 3, 22, 1, -UNI_CWU } /* changeswhenuppercased=f */,
- { 256, 10183, 7438, 4, 4, UNI_POSIXWORD } /* perlword */,
- { 1, 9070, 3, 5, 1, -UNI_POSIXXDIGIT } /* ahex=f */,
- { 0, 9277, 8596, 3, 7, UNI_SC__SHRD } /* sc=sharada */,
- { 3, 5986, 0, 13, 0, UNI_nv_values_index } /* numericvalue= */,
- { 3, 184, 8243, 2, 8, UNI_MAHJ } /* ismahajani */,
- { 0, 9240, 26, 5, 1, UNI_DASH } /* dash=y */,
- { 4, 3025, 0, 11, 0, UNI_CHEROKEESUP } /* cherokeesup */,
- { 2, 6420, 4884, 3, 14, UNI_SARB } /* inoldsoutharabian */,
- { 1, 9262, 72, 3, 2, UNI_SB__LE } /* sb=le */,
- { 0, 9520, 0, 4, 0, UNI_cwl_values_index } /* cwl= */,
- { 2, 7325, 7806, 3, 1, UNI_IN__6 } /* in=6 */,
- { 2, 1417, 9922, 24, 3, UNI_CCC__214 } /* canonicalcombiningclass=214 */,
- { 0, 3836, 9283, 17, 4, UNI_PHLI } /* scriptextensions=phli */,
- { 0, 4916, 47, 5, 1, UNI_TERM } /* isterm */,
- { 104, 7318, 9388, 10, 4, UNI_IN__11 } /* presentin=11.0 */,
- { 0, 1417, 8082, 24, 2, UNI_CCC__19 } /* canonicalcombiningclass=19 */,
- { 0, 2182, 911, 21, 1, UNI_GCB__V } /* graphemeclusterbreak=v */,
- { 1, 262, 0, 2, 0, UNI_SM } /* sm */,
- { 98, 1552, 5494, 9, 14, UNI_MN } /* category=nonspacingmark */,
- { 1, 184, 1222, 2, 4, UNI_KANA } /* iskana */,
- { 1, 5986, 7469, 13, 8, UNI_NV__1_SLASH_2 } /* numericvalue=5.00e-01 */,
- { 57, 8780, 8624, 6, 7, UNI_SUPPUAA } /* block=suppuaa */,
- { 3, 21, 5019, 3, 13, UNI_ANCIENTSYMBOLS } /* inancientsymbols */,
- { 0, 3836, 4928, 17, 5, UNI_TAML } /* scriptextensions=tamil */,
- { 0, 1552, 45, 9, 2, UNI_CO } /* category=co */,
- { 3, 9444, 9388, 4, 4, UNI_AGE__11 } /* age=11.0 */,
- { 1, 4161, 0, 16, 0, UNI_LINEARBSYLLABARY } /* linearbsyllabary */,
- { 0, 9768, 2245, 4, 11, UNI_MTEI } /* scx=meeteimayek */,
- { 3, 10024, 4305, 3, 5, UNI_C } /* gc=other */,
- { 1, 1768, 1, 22, 1, -UNI_CWCF } /* changeswhencasefolded=n */,
- { 2, 5752, 0, 8, 0, UNI_GREEKEXT } /* greekext */,
- { 34, 9768, 8477, 4, 4, UNI_MAKA } /* scx=maka */,
- { 2, 10048, 9958, 3, 3, UNI_NV__3_SLASH_4 } /* nv=3/4 */,
- { 20, 184, 749, 2, 16, UNI_ENCLOSEDALPHANUM } /* isenclosedalphanum */,
- { 0, 9488, 9320, 4, 5, UNI_INOSAGE } /* blk=osage */,
- { 0, 8227, 0, 8, 0, UNI_KANAEXTA } /* kanaexta */,
- { 22, 4448, 0, 8, 0, UNI_BAMUMSUP } /* bamumsup */,
- { 65, 3836, 8888, 17, 6, UNI_HATR } /* scriptextensions=hatran */,
- { 0, 3904, 9255, 17, 5, -UNI_UIDEO } /* unifiedideograph=false */,
- { 3, 9444, 9840, 4, 4, UNI_AGE__10 } /* age=v100 */,
- { 36, 3836, 9548, 17, 4, UNI_DSRT } /* scriptextensions=dsrt */,
- { 128, 10048, 7795, 3, 8, UNI_NV__3_SLASH_20 } /* nv=1.50e-01 */,
- { 11, 3529, 1025, 18, 2, -UNI_VS } /* variationselector=no */,
- { 0, 3768, 0, 17, 0, UNI_LETTERLIKESYMBOLS } /* letterlikesymbols */,
- { 40, 8400, 3, 7, 1, -UNI_COMPEX } /* compex=f */,
- { 0, 184, 3751, 2, 17, UNI_KITS } /* iskhitansmallscript */,
- { 0, 9488, 1654, 4, 23, UNI_COMPATJAMO } /* blk=hangulcompatibilityjamo */,
- { 1, 10027, 3819, 3, 17, UNI_JG__MANICHAEANTHAMEDH } /* jg=manichaeanthamedh */,
- { 0, 414, 0, 11, 0, UNI_IDEO } /* ideographic */,
- { 16, 184, 4448, 2, 5, UNI_BAMU } /* isbamum */,
- { 259, 10048, 7859, 3, 5, UNI_NV__20000 } /* nv=20000 */,
- { 1, 1966, 7639, 22, 9, UNI_INSC__NONJOINER } /* indicsyllabiccategory=nonjoiner */,
- { 0, 9488, 1218, 4, 8, UNI_INKATAKANA } /* blk=katakana */,
- { 288, 1591, 3170, 3, 10, UNI_ETHIOPICSUP } /* inethiopicsup */,
- { 9, 8780, 4049, 6, 11, UNI_GEORGIANEXT } /* block=georgianext */,
- { 4, 9768, 8470, 4, 7, UNI_LINA } /* scx=lineara */,
- { 1, 3097, 2569, 18, 8, UNI_DT__VERT } /* decompositiontype=vertical */,
- { 2, 3133, 9255, 18, 5, -UNI_EBASE } /* emojimodifierbase=false */,
- { 4, 7325, 10117, 3, 3, UNI_IN__7 } /* in=v70 */,
- { 6, 4033, 1, 16, 1, UNI_N } /* generalcategory=n */,
- { 296, 9556, 36, 4, 1, UNI_GCB__T } /* gcb=t */,
- { 0, 1552, 47, 9, 1, UNI_M } /* category=m */,
- { 1, 5791, 9772, 13, 4, UNI_JG__SEEN } /* joininggroup=seen */,
- { 1, 9270, 3475, 5, 18, UNI_INPC__TOPANDLEFTANDRIGHT } /* inpc=topandleftandright */,
- { 33, 9532, 0, 4, 0, UNI_CYRL } /* cyrl */,
- { 2, 1087, 10135, 27, 3, UNI_PCM } /* prependedconcatenationmark=yes */,
- { 1, 7318, 9384, 10, 4, UNI_IN__10 } /* presentin=10.0 */,
- { 0, 5986, 7950, 13, 1, UNI_NV__9 } /* numericvalue=9 */,
- { 1, 4116, 2780, 3, 17, UNI_IDST } /* isidstrinaryoperator */,
- { 49, 9768, 8888, 4, 4, UNI_HATR } /* scx=hatr */,
- { 0, 4116, 59, 3, 3, UNI_IDEO } /* isideo */,
- { 0, 9488, 951, 4, 18, UNI_INVS } /* blk=variationselectors */,
- { 289, 3385, 0, 17, 0, UNI_RI } /* regionalindicator */,
- { 1, 8780, 7378, 6, 10, UNI_SUPARROWSA } /* block=suparrowsa */,
- { 8, 7088, 25, 10, 1, UNI_BC__S } /* bidiclass=s */,
- { 1, 1552, 38, 9, 2, UNI_XPOSIXDIGIT } /* category=nd */,
- { 65, 4448, 0, 4, 0, UNI_BAMU } /* bamu */,
- { 0, 7438, 495, 10, 2, UNI_WB__NU } /* wordbreak=nu */,
- { 1, 5324, 5845, 4, 7, UNI_INMALAYALAM } /* inmalayalam */,
- { 18, 9488, 1922, 4, 22, UNI_DIACRITICALSFORSYMBOLS } /* blk=diacriticalsforsymbols */,
- { 3, 3785, 0, 10, 0, UNI_MANI } /* manichaean */,
- { 98, 6231, 150, 4, 33, UNI_DIACRITICALSSUP } /* incombiningdiacriticalmarkssupplement */,
- { 10, 1273, 9836, 21, 4, UNI_CE } /* compositionexclusion=true */,
- { 1, 6481, 0, 12, 0, UNI_HUNG } /* oldhungarian */,
- { 0, 8386, 0, 7, 0, UNI_CJKEXTF } /* cjkextf */,
- { 4, 3385, 1025, 18, 2, -UNI_RI } /* regionalindicator=no */,
- { 16, 2224, 2288, 3, 6, UNI_INSINHALA } /* insinhala */,
- { 0, 8589, 6409, 7, 12, UNI_MEND } /* script=mendekikakui */,
- { 1, 4989, 1868, 3, 8, UNI_XPOSIXUPPER } /* isuppercase */,
- { 0, 5791, 2223, 13, 3, UNI_JG__AIN } /* joininggroup=ain */,
- { 197, 8780, 328, 6, 21, UNI_MATHOPERATORS } /* block=mathematicaloperators */,
- { 0, 6420, 8548, 3, 6, UNI_OLCK } /* inolchiki */,
- { 0, 9488, 8345, 5, 6, UNI_INBENGALI } /* blk=bengali */,
- { 0, 9488, 4553, 4, 15, UNI_CONTROLPICTURES } /* blk=controlpictures */,
- { 130, 184, 7378, 2, 10, UNI_SUPARROWSA } /* issuparrowsa */,
- { 4, 10048, 8750, 3, 5, UNI_NV__80000 } /* nv=80000 */,
- { 17, 9488, 7666, 4, 9, UNI_INOLDTURKIC } /* blk=oldturkic */,
- { 5, 3836, 8582, 17, 7, UNI_PHAG } /* scriptextensions=phagspa */,
- { 2, 1552, 133, 9, 4, UNI_M } /* category=mark */,
- { 1, 5986, 7859, 13, 2, UNI_NV__20 } /* numericvalue=20 */,
- { 32, 9776, 0, 4, 0, UNI_SGNW } /* sgnw */,
- { 1, 8780, 4337, 6, 16, UNI_SUPMATHOPERATORS } /* block=supmathoperators */,
- { 0, 6231, 660, 3, 29, UNI_CJKEXTF } /* incjkunifiedideographsextensionf */,
- { 0, 9508, 9131, 5, 4, UNI_CCC__20 } /* ccc=ccc20 */,
- { 0, 7428, 0, 10, 0, UNI_WARA } /* warangciti */,
- { 0, 7438, 6653, 10, 11, UNI_WB__DQ } /* wordbreak=doublequote */,
- { 1, 250, 0, 33, 0, UNI_MISCMATHSYMBOLSA } /* miscellaneousmathematicalsymbolsa */,
- { 0, 3367, 10135, 18, 3, UNI__PERL_PATWS } /* patternwhitespace=yes */,
- { 21, 9277, 2329, 3, 20, UNI_HLUW } /* sc=anatolianhieroglyphs */,
- { 3, 1033, 0, 27, 0, UNI_ENCLOSEDCJK } /* enclosedcjklettersandmonths */,
- { 3, 9768, 9584, 4, 4, UNI_HLUW } /* scx=hluw */,
- { 35, 6231, 8359, 3, 6, UNI_CJKEXTB } /* incjkextb */,
- { 0, 7325, 9970, 3, 3, UNI_IN__5_DOT_2 } /* in=5.2 */,
- { 1, 8512, 26, 7, 1, UNI_NFKCQC__Y } /* nfkcqc=y */,
- { 0, 8589, 9325, 7, 5, UNI_RUNR } /* script=runic */,
- { 0, 3836, 9095, 17, 5, UNI_BUHD } /* scriptextensions=buhid */,
- { 0, 9488, 2912, 4, 19, UNI_SUNDANESESUP } /* blk=sundanesesupplement */,
- { 1, 184, 8984, 2, 5, UNI_QMARK } /* isqmark */,
- { 1, 10170, 0, 2, 0, UNI_CASEDLETTER } /* l_ */,
- { 0, 4033, 8855, 16, 2, UNI_CF } /* generalcategory=cf */,
- { 1, 10290, 9225, 6, 5, UNI_XPOSIXCNTRL } /* xposixcntrl */,
- { 18, 9488, 1013, 4, 5, UNI_INGREEK } /* blk=greek */,
- { 64, 9488, 3025, 4, 11, UNI_CHEROKEESUP } /* blk=cherokeesup */,
- { 0, 2560, 0, 4, 0, UNI_MAND } /* mand */,
- { 3, 9270, 7298, 5, 10, UNI_INPC__OVERSTRUCK } /* inpc=overstruck */,
- { 0, 9277, 9860, 3, 4, UNI_VAI } /* sc=vaii */,
- { 97, 3836, 9480, 17, 4, UNI_BATK } /* scriptextensions=batk */,
- { 12, 9488, 9452, 4, 4, UNI_INAHOM } /* blk=ahom */,
- { 0, 9277, 3169, 3, 4, UNI_ETHI } /* sc=ethi */,
- { 47, 184, 10180, 2, 2, UNI_ZS } /* iszs */,
- { 0, 5171, 0, 4, 0, UNI_CHAM } /* cham */,
- { 4, 5674, 1025, 13, 2, -UNI_BIDIM } /* bidimirrored=no */,
- { 19, 2684, 0, 19, 0, UNI_EGYP } /* egyptianhieroglyphs */,
- { 0, 10009, 3439, 3, 5, UNI_DT__SML } /* dt=small */,
- { 1, 8780, 9285, 6, 5, UNI_INLIMBU } /* block=limbu */,
- { 0, 9596, 7238, 4, 10, UNI_LB__H2 } /* hst=lvsyllable */,
- { 5, 7318, 9397, 10, 3, UNI_IN__2_DOT_1 } /* presentin=2.1 */,
- { 36, 6229, 10135, 12, 3, UNI_JOINC } /* joincontrol=yes */,
- { 130, 9768, 3894, 5, 10, UNI_SGNW } /* scx=signwriting */,
- { 6, 3717, 0, 17, 0, UNI_identifierstatus_values_index } /* identifierstatus= */,
- { 112, 8589, 6253, 7, 5, UNI_KHMR } /* script=khmer */,
- { 2, 8780, 2329, 6, 20, UNI_INANATOLIANHIEROGLYPHS } /* block=anatolianhieroglyphs */,
- { 0, 1273, 0, 21, 0, UNI_ce_values_index } /* compositionexclusion= */,
- { 1, 10024, 1186, 3, 2, UNI_PO } /* gc=po */,
- { 4, 9488, 8659, 4, 7, UNI_INTIBETAN } /* blk=tibetan */,
- { 394, 5674, 9255, 13, 5, -UNI_BIDIM } /* bidimirrored=false */,
- { 22, 9488, 5242, 4, 14, UNI_LATINEXTC } /* blk=latinextendedc */,
- { 1, 8780, 1677, 6, 14, UNI_LATINEXTA } /* block=latinextendeda */,
- { 0, 184, 8380, 3, 6, UNI_CJKEXTE } /* iscjkexte */,
- { 0, 9488, 2855, 4, 19, UNI_MONGOLIANSUP } /* blk=mongoliansupplement */,
- { 0, 3052, 0, 9, 0, UNI_HALFMARKS } /* halfmarks */,
- { 0, 8780, 1944, 6, 22, UNI_EARLYDYNASTICCUNEIFORM } /* block=earlydynasticcuneiform */,
- { 0, 8780, 9008, 6, 6, UNI_INTHAANA } /* block=thaana */,
- { 6, 8884, 3, 4, 1, -UNI_EXT } /* ext=f */,
- { 2, 184, 1988, 2, 21, UNI_LOE } /* islogicalorderexception */,
- { 0, 5986, 8738, 13, 5, UNI_NV__60000 } /* numericvalue=60000 */,
- { 0, 21, 3549, 4, 15, UNI_ALCHEMICAL } /* inalchemicalsymbols */,
- { 2, 5986, 7867, 13, 8, UNI_NV__1_SLASH_32 } /* numericvalue=3.12e-02 */,
- { 0, 5986, 7971, 13, 8, UNI_NV__7_SLASH_12 } /* numericvalue=5.83e-01 */,
- { 0, 5508, 36, 14, 1, UNI_PATSYN } /* patternsyntax=t */,
- { 0, 5739, 9836, 13, 4, UNI_GRBASE } /* graphemebase=true */,
- { 0, 2182, 18, 21, 2, UNI_RI } /* graphemeclusterbreak=ri */,
- { 4, 4033, 6862, 16, 11, UNI_NO } /* generalcategory=othernumber */,
- { 0, 8780, 5778, 6, 13, UNI_IPAEXT } /* block=ipaextensions */,
- { 0, 9768, 9712, 4, 4, UNI_OSGE } /* scx=osge */,
- { 0, 9262, 1194, 3, 2, UNI_LB__LF } /* sb=lf */,
- { 182, 2218, 9306, 3, 4, UNI_INNUSHU } /* innushu */,
- { 0, 117, 2431, 4, 18, UNI_ININSCRIPTIONALPAHLAVI } /* ininscriptionalpahlavi */,
- { 0, 3836, 1628, 17, 4, UNI_PHAG } /* scriptextensions=phag */,
- { 2, 5284, 0, 7, 0, UNI_LISUSUP } /* lisusup */,
- { 0, 7325, 7814, 3, 1, UNI_IN__7 } /* in=7 */,
- { 1, 9997, 10036, 3, 3, UNI_BC__LRE } /* bc=lre */,
- { 10, 6231, 2141, 3, 17, UNI_CYRILLICSUP } /* incyrillicsupplement */,
- { 0, 8780, 9800, 6, 4, UNI_TAGS } /* block=tags */,
- { 56, 10048, 8714, 3, 4, UNI_NV__3000 } /* nv=3000 */,
- { 0, 8780, 3439, 6, 12, UNI_SMALLKANAEXT } /* block=smallkanaext */,
- { 0, 1591, 3684, 3, 10, UNI_ETHIOPICEXT } /* inethiopicext */,
- { 0, 7318, 10081, 10, 3, UNI_IN__3 } /* presentin=v30 */,
- { 3, 10009, 7, 3, 3, UNI_DT__CAN } /* dt=can */,
- { 0, 5791, 5424, 13, 14, UNI_JG__MANICHAEANYODH } /* joininggroup=manichaeanyodh */,
- { 3, 1188, 2297, 3, 3, UNI_INTHAI } /* inthai */,
- { 0, 8589, 6940, 8, 10, UNI_SORA } /* script=sorasompeng */,
- { 0, 9277, 7191, 6, 7, UNI_KHAR } /* sc=kharoshthi */,
- { 20, 184, 9513, 3, 3, UNI_CHRS } /* ischrs */,
- { 0, 8780, 5687, 6, 13, UNI_BLOCKELEMENTS } /* block=blockelements */,
- { 5, 1552, 6851, 9, 11, UNI_LO } /* category=otherletter */,
- { 0, 9488, 3241, 4, 18, UNI_GEORGIANSUP } /* blk=georgiansupplement */,
- { 11, 3836, 9684, 17, 4, UNI_NEWA } /* scriptextensions=newa */,
- { 0, 9524, 3, 4, 1, -UNI_CWT } /* cwt=f */,
- { 2, 9488, 8924, 4, 6, UNI_INLEPCHA } /* blk=lepcha */,
- { 32, 1441, 0, 10, 0, UNI_CJKSYMBOLS } /* cjksymbols */,
- { 0, 6420, 7289, 3, 9, UNI_INOLDSOGDIAN } /* inoldsogdian */,
- { 1, 7438, 495, 10, 7, UNI_WB__NU } /* wordbreak=numeric */,
- { 0, 8589, 5550, 7, 14, UNI_SC__PHLP } /* script=psalterpahlavi */,
- { 3, 10048, 7755, 3, 8, UNI_NV__1_SLASH_9 } /* nv=1.11e-01 */,
- { 0, 8589, 9828, 7, 4, UNI_THAI } /* script=thai */,
- { 2, 10033, 6217, 3, 12, UNI_LB__IS } /* lb=infixnumeric */,
- { 0, 8852, 26, 6, 1, UNI_CWKCF } /* cwkcf=y */,
- { 3, 184, 2409, 2, 4, UNI_GLAG } /* isglag */,
- { 2, 6061, 0, 5, 0, UNI_BIDIC } /* bidic */,
- { 85, 5578, 72, 14, 2, UNI_SB__LE } /* sentencebreak=le */,
- { 162, 1966, 1489, 22, 24, UNI_INSC__CONSONANTSUCCEEDINGREPHA } /* indicsyllabiccategory=consonantsucceedingrepha */,
- { 0, 3836, 9664, 17, 3, UNI_MRO } /* scriptextensions=mro */,
- { 0, 5986, 5648, 13, 8, UNI_NV__10000000 } /* numericvalue=10000000 */,
- { 0, 184, 5075, 3, 13, UNI_CJKCOMPATFORMS } /* iscjkcompatforms */,
- { 0, 10033, 7108, 3, 10, UNI_LB__BA } /* lb=breakafter */,
- { 0, 2182, 4360, 21, 9, UNI_WB__EB } /* graphemeclusterbreak=emodifier */,
- { 21, 6231, 1442, 3, 23, UNI_CJKSYMBOLS } /* incjksymbolsandpunctuation */,
- { 35, 6873, 0, 11, 0, UNI_SO } /* othersymbol */,
- { 0, 8589, 9860, 7, 3, UNI_VAI } /* script=vai */,
- { 0, 8688, 6026, 3, 11, UNI_ALPHABETICPF } /* isalphabeticpf */,
- { 0, 9277, 8457, 4, 6, UNI_SC__KNDA } /* sc=kannada */,
- { 38, 6805, 5176, 4, 2, UNI_INMIAO } /* inmiao */,
- { 8, 9768, 8888, 4, 6, UNI_HATR } /* scx=hatran */,
- { 0, 184, 749, 2, 21, UNI_ENCLOSEDALPHANUM } /* isenclosedalphanumerics */,
- { 0, 8589, 9315, 7, 5, UNI_SC__ORYA } /* script=oriya */,
- { 133, 7438, 5012, 10, 2, UNI_WB__SQ } /* wordbreak=sq */,
- { 0, 9275, 9026, 5, 6, UNI_INSC__VIRAMA } /* insc=virama */,
- { 2, 4973, 0, 8, 0, UNI_VEDICEXT } /* vedicext */,
- { 52, 74, 0, 2, 0, UNI_ME } /* me */,
- { 26, 1979, 0, 10, 0, UNI_L } /* category=l */,
- { 0, 5986, 9060, 13, 5, UNI_NV__11_SLASH_12 } /* numericvalue=11/12 */,
- { 1, 8589, 8219, 7, 4, UNI_SC__JAVA } /* script=java */,
- { 0, 4033, 47, 16, 1, UNI_M } /* generalcategory=m */,
- { 6, 10048, 7787, 3, 8, UNI_NV__3_SLASH_2 } /* nv=1.50e+00 */,
- { 1, 1966, 4113, 22, 16, UNI_INSC__INVISIBLESTACKER } /* indicsyllabiccategory=invisiblestacker */,
- { 1, 4033, 4943, 16, 15, UNI_TITLE } /* generalcategory=titlecaseletter */,
- { 0, 8589, 6840, 7, 4, UNI_SC__NAND } /* script=nand */,
- { 1, 10060, 10135, 3, 3, UNI_RI } /* ri=yes */,
- { 256, 9488, 78, 4, 35, UNI_ARABICMATH } /* blk=arabicmathematicalalphabeticsymbols */,
- { 0, 9716, 10135, 4, 3, UNI_PCM } /* pcm=yes */,
- { 6, 9768, 9285, 4, 5, UNI_LIMB } /* scx=limbu */,
- { 1, 9768, 8484, 4, 7, UNI_MAND } /* scx=mandaic */,
- { 5, 3836, 1013, 17, 5, UNI_GREK } /* scriptextensions=greek */,
- { 6, 7325, 10087, 3, 3, UNI_IN__3_DOT_2 } /* in=v32 */,
- { 0, 5324, 4342, 4, 11, UNI_MATHOPERATORS } /* inmathoperators */,
- { 1, 4001, 0, 16, 0, UNI_CYPRIOTSYLLABARY } /* cypriotsyllabary */,
- { 0, 8299, 0, 8, 0, UNI_TFNG } /* tifinagh */,
- { 196, 2288, 1656, 4, 4, UNI_INHANGUL } /* inhangul */,
- { 2, 5986, 7821, 13, 1, UNI_NV__8 } /* numericvalue=8 */,
- { 64, 184, 7428, 2, 10, UNI_WARA } /* iswarangciti */,
- { 1, 3836, 6409, 17, 12, UNI_MEND } /* scriptextensions=mendekikakui */,
- { 3, 5986, 8744, 13, 5, UNI_NV__70000 } /* numericvalue=70000 */,
- { 1, 9488, 4129, 4, 9, UNI_LATIN1 } /* blk=latin1sup */,
- { 0, 7088, 18, 10, 1, UNI_BC__R } /* bidiclass=r */,
- { 0, 6231, 8366, 3, 6, UNI_CJKEXTC } /* incjkextc */,
- { 2, 183, 0, 34, 0, UNI_MISCPICTOGRAPHS } /* miscellaneoussymbolsandpictographs */,
- { 0, 2280, 6863, 3, 10, UNI_NO } /* isothernumber */,
- { 0, 9528, 36, 4, 1, UNI_CWU } /* cwu=t */,
- { 265, 8589, 8900, 7, 6, UNI_SC__KTHI } /* script=kaithi */,
- { 46, 6231, 43, 3, 15, UNI_CJKCOMPAT } /* incjkcompatibility */,
- { 0, 9277, 8484, 3, 7, UNI_SC__MAND } /* sc=mandaic */,
- { 4, 184, 9624, 2, 4, UNI_LAO } /* islaoo */,
- { 3, 3836, 9692, 17, 4, UNI_NSHU } /* scriptextensions=nshu */,
- { 1, 3151, 36, 18, 1, UNI_EPRES } /* emojipresentation=t */,
- { 58, 3836, 7292, 18, 3, UNI_SOGD } /* scriptextensions=sogd */,
- { 81, 9488, 8561, 4, 7, UNI_INOSMANYA } /* blk=osmanya */,
- { 3, 21, 8990, 2, 6, UNI_INREJANG } /* inrejang */,
- { 32, 7088, 10039, 10, 3, UNI_BC__LRI } /* bidiclass=lri */,
- { 4, 10024, 1563, 3, 2, UNI_PS } /* gc=ps */,
- { 1, 3836, 8680, 17, 7, UNI_ZZZZ } /* scriptextensions=unknown */,
- { 1, 9768, 9672, 4, 4, UNI_MYMR } /* scx=mymr */,
- { 0, 9071, 26, 4, 1, UNI_XPOSIXXDIGIT } /* hex=y */,
- { 0, 5986, 9168, 13, 2, UNI_NV__27 } /* numericvalue=27 */,
- { 0, 10033, 495, 3, 2, UNI_LB__NU } /* lb=nu */,
- { 31, 8780, 2722, 6, 19, UNI_JAMOEXTA } /* block=hanguljamoextendeda */,
- { 1, 184, 8414, 2, 4, UNI_ELBA } /* iselba */,
- { 99, 2784, 80, 4, 33, UNI_ARABICMATH } /* inarabicmathematicalalphabeticsymbols */,
- { 0, 6277, 0, 4, 0, UNI_MAHJ } /* mahj */,
- { 35, 117, 3736, 4, 15, UNI_INDICSIYAQNUMBERS } /* inindicsiyaqnumbers */,
- { 1, 8589, 9330, 7, 5, UNI_SC__TALE } /* script=taile */,
- { 0, 9277, 9085, 3, 5, UNI_BATK } /* sc=batak */,
- { 0, 9488, 4928, 4, 5, UNI_INTAMIL } /* blk=tamil */,
- { 49, 3341, 0, 8, 0, UNI_DINGBATS } /* dingbats */,
- { 0, 9488, 2665, 4, 11, UNI_COUNTINGROD } /* blk=countingrod */,
- { 35, 4033, 0, 16, 0, UNI_gc_values_index } /* generalcategory= */,
- { 4, 1114, 1, 26, 1, -UNI_CWKCF } /* changeswhennfkccasefolded=n */,
- { 7, 6231, 690, 3, 29, UNI_CJKEXTG } /* incjkunifiedideographsextensiong */,
- { 3, 7438, 18, 10, 2, UNI_RI } /* wordbreak=ri */,
- { 0, 184, 10178, 2, 2, UNI_ZP } /* iszp */,
- { 3, 5986, 9916, 13, 3, UNI_NV__2_SLASH_5 } /* numericvalue=2/5 */,
- { 2, 8780, 8900, 6, 6, UNI_INKAITHI } /* block=kaithi */,
- { 0, 2817, 0, 4, 0, UNI_MERO } /* mero */,
- { 0, 10024, 4583, 3, 15, UNI_PD } /* gc=dashpunctuation */,
- { 0, 7675, 0, 9, 0, UNI_PALM } /* palmyrene */,
- { 16, 184, 2141, 3, 17, UNI_CYRILLICSUP } /* iscyrillicsupplement */,
- { 3, 8780, 5830, 6, 13, UNI_LOWSURROGATES } /* block=lowsurrogates */,
- { 0, 4033, 9225, 16, 5, UNI_XPOSIXCNTRL } /* generalcategory=cntrl */,
- { 8, 21, 8936, 2, 6, UNI_INLYCIAN } /* inlycian */,
- { 16, 5791, 9075, 13, 5, UNI_JG__ALAPH } /* joininggroup=alaph */,
- { 3, 4989, 4959, 3, 14, UNI_UPPERCASELETTER } /* isuppercaseletter */,
- { 120, 184, 3937, 2, 8, UNI_BOPO } /* isbopomofo */,
- { 0, 10132, 8323, 3, 7, UNI_WB__LE } /* wb=aletter */,
- { 4, 8589, 9245, 7, 5, UNI_SC__DOGR } /* script=dogra */,
- { 67, 3853, 1, 17, 1, -UNI_STERM } /* sentenceterminal=n */,
- { 0, 10182, 1159, 33, 5, UNI__PERL_PROBLEMATIC_LOCALE_FOLDEDS_START } /* _perl_problematic_locale_foldeds_start */,
- { 3, 9768, 9002, 4, 6, UNI_TELU } /* scx=telugu */,
- { 0, 5040, 0, 5, 0, UNI_XPOSIXDIGIT } /* digit */,
- { 2, 5564, 1025, 14, 2, -UNI_QMARK } /* quotationmark=no */,
- { 0, 7, 0, 1, 0, UNI_C } /* c */,
- { 1, 9640, 1, 4, 1, -UNI_LOE } /* loe=n */,
- { 0, 8780, 3921, 6, 9, UNI_ARABICSUP } /* block=arabicsup */,
- { 0, 9828, 0, 4, 0, UNI_THAI } /* thai */,
- { 0, 9488, 3241, 4, 8, UNI_INGEORGIAN } /* blk=georgian */,
- { 0, 3836, 9440, 17, 4, UNI_ADLM } /* scriptextensions=adlm */,
- { 163, 6609, 10135, 11, 3, UNI_DEP } /* deprecated=yes */,
- { 4, 10296, 62, 7, 5, UNI_POSIXGRAPH } /* isposixgraph */,
- { 0, 184, 8373, 3, 6, UNI_CJKEXTD } /* iscjkextd */,
- { 103, 9488, 5228, 4, 14, UNI_LATINEXTB } /* blk=latinextendedb */,
- { 1, 4791, 0, 17, 0, UNI_INMEROITICCURSIVE } /* inmeroiticcursive */,
- { 4, 1812, 9255, 22, 5, -UNI_CWL } /* changeswhenlowercased=false */,
- { 0, 9768, 8498, 4, 7, UNI_MULT } /* scx=multani */,
- { 1, 9277, 4369, 3, 6, UNI_SC__SYRC } /* sc=syriac */,
- { 1, 9270, 7676, 3, 8, UNI_PALM } /* inpalmyrene */,
- { 0, 9277, 9325, 3, 5, UNI_RUNR } /* sc=runic */,
- { 474, 1552, 467, 9, 5, UNI_P } /* category=punct */,
- { 0, 4116, 6555, 3, 9, UNI_IDC } /* isidcontinue */,
- { 0, 9716, 3, 4, 1, -UNI_PCM } /* pcm=f */,
- { 0, 6620, 0, 6, 0, UNI_DOMINO } /* domino */,
- { 0, 3836, 4868, 17, 15, UNI_NARB } /* scriptextensions=oldnortharabian */,
- { 2, 184, 4973, 2, 15, UNI_VEDICEXT } /* isvedicextensions */,
- { 11, 1828, 36, 6, 1, UNI_CASED } /* cased=t */,
- { 20, 9488, 8315, 4, 8, UNI_INUGARITIC } /* blk=ugaritic */,
- { 0, 7218, 184, 10, 2, UNI_LB__IS } /* linebreak=is */,
- { 0, 7739, 1025, 8, 2, -UNI_IDS } /* idstart=no */,
- { 4, 9488, 9038, 4, 6, UNI_INYEZIDI } /* blk=yezidi */,
- { 0, 8589, 9285, 7, 5, UNI_SC__LIMB } /* script=limbu */,
- { 2, 7325, 7987, 3, 3, UNI_IN__6_DOT_2 } /* in=6.2 */,
- { 3, 7155, 2723, 3, 9, UNI_JAMO } /* ishanguljamo */,
- { 0, 7318, 10084, 10, 3, UNI_IN__3_DOT_1 } /* presentin=v31 */,
- { 1, 3097, 9868, 18, 4, UNI_EA__F } /* decompositiontype=wide */,
- { 106, 9277, 6939, 3, 11, UNI_SORA } /* sc=sorasompeng */,
- { 0, 9488, 8211, 4, 8, UNI_JAMOEXTB } /* blk=jamoextb */,
- { 12, 9556, 0, 4, 0, UNI_gcb_values_index } /* gcb= */,
- { 41, 2182, 36, 21, 1, UNI_GCB__T } /* graphemeclusterbreak=t */,
- { 0, 7325, 7781, 3, 1, UNI_IN__4 } /* in=4 */,
- { 3, 8762, 10135, 6, 3, UNI_XPOSIXALPHA } /* alpha=yes */,
- { 0, 1552, 6873, 9, 11, UNI_SO } /* category=othersymbol */,
- { 5, 1059, 0, 2, 0, UNI_SO } /* so */,
- { 0, 9556, 1194, 4, 2, UNI_LB__LF } /* gcb=lf */,
- { 0, 3836, 8786, 17, 4, UNI_CARI } /* scriptextensions=cari */,
- { 0, 10333, 8611, 3, 6, UNI_SIDD } /* issiddham */,
- { 7, 5986, 9994, 13, 3, UNI_NV__9_SLASH_2 } /* numericvalue=9/2 */,
- { 48, 5578, 138, 14, 2, UNI_SB__FO } /* sentencebreak=fo */,
- { 6, 9277, 8638, 3, 7, UNI_SC__TGLG } /* sc=tagalog */,
- { 69, 4643, 26, 15, 1, UNI_ECOMP } /* emojicomponent=y */,
- { 128, 5200, 0, 14, 0, UNI_KANASUP } /* kanasupplement */,
- { 1, 5986, 8042, 13, 2, UNI_NV__18 } /* numericvalue=18 */,
- { 0, 8906, 0, 6, 0, UNI_KANBUN } /* kanbun */,
- { 2, 4916, 9336, 3, 3, UNI_TAKR } /* istakr */,
- { 1, 184, 2120, 3, 13, UNI_CJKRADICALSSUP } /* iscjkradicalssup */,
- { 18, 3097, 1253, 18, 4, UNI_DT__INIT } /* decompositiontype=init */,
- { 3, 9640, 0, 4, 0, UNI_loe_values_index } /* loe= */,
- { 25, 3097, 5904, 18, 4, UNI_DT__NONE } /* decompositiontype=none */,
- { 9, 7318, 10120, 10, 3, UNI_IN__8 } /* presentin=v80 */,
- { 0, 6097, 0, 12, 0, UNI_CYRILLICEXTA } /* cyrillicexta */,
- { 88, 9488, 2119, 4, 21, UNI_CJKRADICALSSUP } /* blk=cjkradicalssupplement */,
- { 6, 184, 7621, 2, 9, UNI_NBAT } /* isnabataean */,
- { 1, 8780, 7368, 6, 10, UNI_SMALLFORMS } /* block=smallforms */,
- { 1, 8884, 9836, 4, 4, UNI_EXT } /* ext=true */,
- { 3, 8610, 0, 7, 0, UNI_SIDD } /* siddham */,
- { 344, 5116, 3, 14, 1, -UNI_EMOD } /* emojimodifier=f */,
- { 0, 9508, 9940, 4, 3, UNI_CCC__A } /* ccc=230 */,
- { 1, 908, 0, 10, 0, UNI_CO } /* privateuse */,
- { 1, 184, 10303, 2, 5, UNI_XPOSIXBLANK } /* isblank */,
- { 0, 3836, 9672, 17, 4, UNI_MYMR } /* scriptextensions=mymr */,
- { 0, 9768, 9512, 4, 4, UNI_CHRS } /* scx=chrs */,
- { 38, 6231, 5075, 3, 13, UNI_CJKCOMPATFORMS } /* incjkcompatforms */,
- { 5, 5564, 0, 13, 0, UNI_QMARK } /* quotationmark */,
- { 0, 184, 283, 2, 33, UNI_MISCMATHSYMBOLSB } /* ismiscellaneousmathematicalsymbolsb */,
- { 5, 1417, 9937, 24, 3, UNI_CCC__AL } /* canonicalcombiningclass=228 */,
- { 1, 1188, 9009, 3, 5, UNI_INTHAANA } /* inthaana */,
- { 0, 4033, 24, 16, 1, UNI_L } /* generalcategory=l */,
- { 8, 9277, 2817, 3, 19, UNI_MERO } /* sc=meroitichieroglyphs */,
- { 4, 3836, 9628, 17, 4, UNI_LATN } /* scriptextensions=latn */,
- { 1, 1834, 3, 22, 1, -UNI_CWT } /* changeswhentitlecased=f */,
- { 2, 8774, 36, 6, 1, UNI_BIDIM } /* bidim=t */,
- { 0, 5791, 5856, 13, 13, UNI_JG__MALAYALAMNNNA } /* joininggroup=malayalamnnna */,
- { 11, 5791, 6289, 13, 12, UNI_JG__MALAYALAMBHA } /* joininggroup=malayalambha */,
- { 99, 7218, 4538, 10, 15, UNI_LB__CB } /* linebreak=contingentbreak */,
- { 84, 2218, 6842, 4, 9, UNI_INNANDINAGARI } /* innandinagari */,
- { 5, 4916, 9009, 3, 3, UNI_THAA } /* isthaa */,
- { 1, 1552, 7, 9, 1, UNI_C } /* category=c */,
- { 150, 2218, 1912, 3, 10, UNI_NUMBERFORMS } /* innumberforms */,
- { 5, 9277, 9285, 3, 5, UNI_SC__LIMB } /* sc=limbu */,
- { 135, 9768, 9797, 5, 3, UNI_SYRC } /* scx=syrc */,
- { 10, 184, 4273, 2, 7, UNI_MYMR } /* ismyanmar */,
- { 3, 8780, 4598, 6, 15, UNI_DIACRITICALSEXT } /* block=diacriticalsext */,
- { 0, 9488, 3025, 4, 18, UNI_CHEROKEESUP } /* blk=cherokeesupplement */,
- { 1, 1790, 0, 21, 0, UNI_CWCM } /* changeswhencasemapped */,
- { 1, 7155, 2742, 3, 18, UNI_JAMOEXTB } /* ishanguljamoextendedb */,
- { 23, 8780, 4478, 6, 15, UNI_BRAI } /* block=braillepatterns */,
- { 0, 10333, 10183, 7, 4, UNI_XPOSIXSPACE } /* isspaceperl */,
- { 6, 10027, 5179, 3, 3, UNI_JG__HEH } /* jg=heh */,
- { 0, 8589, 9580, 7, 4, UNI_SC__HANO } /* script=hano */,
- { 26, 10182, 7739, 6, 7, UNI__PERL_IDSTART } /* _perl_idstart */,
- { 0, 9350, 36, 5, 1, UNI_XIDS } /* xids=t */,
- { 306, 2224, 3888, 3, 16, UNI_SUTTONSIGNWRITING } /* insuttonsignwriting */,
- { 88, 7325, 9982, 3, 3, UNI_IN__6_DOT_3 } /* in=6.3 */,
- { 258, 10006, 9836, 3, 4, UNI_DI } /* di=true */,
- { 0, 8954, 17, 7, 1, -UNI__PERL_NCHAR } /* nchar=no */,
- { 0, 184, 1723, 2, 23, UNI_SUPPUNCTUATION } /* issupplementalpunctuation */,
- { 0, 10024, 1527, 3, 9, UNI__PERL_SURROGATE } /* gc=surrogate */,
- { 0, 3836, 9724, 17, 4, UNI_PHNX } /* scriptextensions=phnx */,
- { 232, 6840, 0, 4, 0, UNI_NAND } /* nand */,
- { 1, 10027, 5892, 3, 3, UNI_JG__NUN } /* jg=nun */,
- { 32, 10327, 3379, 6, 5, UNI_POSIXSPACE } /* isperlspace */,
- { 0, 7168, 0, 10, 0, UNI_DIAK } /* divesakuru */,
- { 1, 2836, 0, 19, 0, UNI_MODIFIERTONELETTERS } /* modifiertoneletters */,
- { 1, 8858, 10135, 6, 3, UNI_ECOMP } /* ecomp=yes */,
- { 0, 9768, 9500, 4, 4, UNI_CAKM } /* scx=cakm */,
- { 1, 7218, 9713, 10, 2, UNI_LB__SG } /* linebreak=sg */,
- { 0, 9768, 7558, 4, 9, UNI_QAAI } /* scx=inherited */,
- { 33, 9250, 10135, 5, 3, UNI_EMOD } /* emod=yes */,
- { 0, 1273, 36, 21, 1, UNI_CE } /* compositionexclusion=t */,
- { 0, 1417, 5377, 24, 2, UNI_CCC__7 } /* canonicalcombiningclass=nk */,
- { 0, 1979, 0, 10, 1, UNI_UPPERCASELETTER } /* category=lu */,
- { 1, 9488, 6181, 4, 12, UNI_INGUNJALAGONDI } /* blk=gunjalagondi */,
- { 0, 9277, 9305, 3, 5, UNI_NSHU } /* sc=nushu */,
- { 2, 7128, 0, 10, 0, UNI_CJKSTROKES } /* cjkstrokes */,
- { 1, 9488, 7358, 4, 10, UNI_INSAURASHTRA } /* blk=saurashtra */,
- { 2, 184, 9624, 2, 3, UNI_LAO } /* islao */,
- { 0, 5986, 8002, 13, 2, UNI_NV__26 } /* numericvalue=26 */,
- { 0, 7218, 10162, 10, 2, UNI_GCB__L } /* linebreak=jl */,
- { 32, 9508, 9141, 5, 4, UNI_CCC__22 } /* ccc=ccc22 */,
- { 3, 3836, 8900, 17, 6, UNI_KTHI } /* scriptextensions=kaithi */,
- { 1, 4360, 0, 4, 0, UNI_EMOD } /* emod */,
- { 97, 10132, 1822, 3, 2, UNI_WB__NL } /* wb=nl */,
- { 1, 3836, 9500, 17, 4, UNI_CAKM } /* scriptextensions=cakm */,
- { 1, 9768, 2429, 4, 20, UNI_PHLI } /* scx=inscriptionalpahlavi */,
- { 0, 9488, 9335, 4, 5, UNI_INTAKRI } /* blk=takri */,
- { 0, 5438, 0, 14, 0, UNI_SK } /* modifiersymbol */,
- { 0, 8512, 10135, 7, 3, UNI_NFKCQC__Y } /* nfkcqc=yes */,
- { 64, 9768, 9876, 4, 4, UNI_XSUX } /* scx=xsux */,
- { 0, 5037, 10135, 9, 3, UNI_XPOSIXXDIGIT } /* hexdigit=yes */,
- { 11, 2161, 10135, 21, 3, UNI_EXTPICT } /* extendedpictographic=yes */,
- { 1, 6928, 9255, 11, 5, -UNI_SD } /* softdotted=false */,
- { 0, 1189, 5904, 3, 4, UNI_NV__NAN } /* nt=none */,
- { 32, 1856, 10135, 22, 3, UNI_CWU } /* changeswhenuppercased=yes */,
- { 4, 9488, 0, 4, 42, UNI_UCASEXT } /* blk=unifiedcanadianaboriginalsyllabicsextended */,
- { 6, 8315, 0, 4, 0, UNI_UGAR } /* ugar */,
- { 81, 5986, 8732, 13, 3, UNI_NV__500 } /* numericvalue=500 */,
- { 12, 6928, 0, 11, 0, UNI_sd_values_index } /* softdotted= */,
- { 0, 9277, 7675, 3, 9, UNI_PALM } /* sc=palmyrene */,
- { 1, 9768, 4370, 5, 5, UNI_SYRC } /* scx=syriac */,
- { 2, 7438, 1218, 10, 2, UNI_WB__KA } /* wordbreak=ka */,
- { 4, 9768, 9676, 4, 4, UNI_NARB } /* scx=narb */,
- { 0, 2760, 0, 19, 0, UNI_hst_values_index } /* hangulsyllabletype= */,
- { 9, 2760, 6541, 19, 12, UNI_GCB__T } /* hangulsyllabletype=trailingjamo */,
- { 3, 3836, 6886, 18, 3, UNI_SHAW } /* scriptextensions=shaw */,
- { 332, 6061, 26, 12, 1, UNI_BIDIC } /* bidicontrol=y */,
- { 0, 3836, 7, 17, 18, UNI_CANS } /* scriptextensions=canadianaboriginal */,
- { 30, 7228, 1025, 10, 2, -UNI_XPOSIXLOWER } /* lowercase=no */,
- { 8, 9444, 9400, 4, 4, UNI_AGE__13 } /* age=13.0 */,
- { 4, 2032, 9836, 22, 4, UNI__PERL_NCHAR } /* noncharactercodepoint=true */,
- { 0, 6840, 0, 11, 0, UNI_NAND } /* nandinagari */,
- { 1, 10333, 6792, 3, 3, UNI_SAMR } /* issamr */,
- { 0, 9488, 2119, 4, 14, UNI_CJKRADICALSSUP } /* blk=cjkradicalssup */,
- { 0, 5550, 0, 14, 0, UNI_PHLP } /* psalterpahlavi */,
- { 0, 9768, 9496, 4, 4, UNI_BUHD } /* scx=buhd */,
- { 0, 2280, 7650, 4, 7, UNI_ITAL } /* isolditalic */,
- { 4, 10048, 7789, 3, 2, UNI_NV__50 } /* nv=50 */,
- { 532, 9277, 9532, 3, 4, UNI_SC__CYRL } /* sc=cyrl */,
- { 117, 5791, 10000, 13, 3, UNI_JG__BEH } /* joininggroup=beh */,
- { 0, 8589, 8942, 7, 4, UNI_LYDI } /* script=lydi */,
- { 4, 8589, 8666, 7, 4, UNI_SC__TIRH } /* script=tirh */,
- { 512, 9277, 3169, 3, 8, UNI_ETHI } /* sc=ethiopic */,
- { 0, 9768, 9860, 4, 3, UNI_VAI } /* scx=vai */,
- { 544, 4688, 7208, 15, 10, UNI_IDENTIFIERTYPE__LIMITEDUSE } /* identifiertype=limiteduse */,
- { 0, 9488, 1723, 4, 23, UNI_SUPPUNCTUATION } /* blk=supplementalpunctuation */,
- { 0, 7218, 5046, 10, 14, UNI_LB__CR } /* linebreak=carriagereturn */,
- { 0, 184, 8394, 3, 6, UNI_CJKEXTG } /* iscjkextg */,
- { 2, 4916, 4188, 3, 3, UNI_TALE } /* istale */,
- { 0, 6609, 9255, 11, 5, -UNI_DEP } /* deprecated=false */,
- { 26, 8780, 3115, 6, 18, UNI_DEVANAGARIEXT } /* block=devanagariextended */,
- { 1, 9488, 2589, 4, 19, UNI_ANCIENTGREEKNUMBERS } /* blk=ancientgreeknumbers */,
- { 0, 5324, 8245, 4, 6, UNI_INMAHAJANI } /* inmahajani */,
- { 0, 8858, 3, 6, 1, -UNI_ECOMP } /* ecomp=f */,
- { 0, 9768, 6796, 4, 11, UNI_MEDF } /* scx=medefaidrin */,
- { 0, 5986, 8082, 13, 2, UNI_NV__19 } /* numericvalue=19 */,
- { 0, 7318, 7408, 10, 10, UNI_AGE__NA } /* presentin=unassigned */,
- { 32, 6231, 8841, 3, 5, UNI_INCHAKMA } /* inchakma */,
- { 0, 1087, 0, 27, 0, UNI_pcm_values_index } /* prependedconcatenationmark= */,
- { 1, 8780, 9828, 6, 4, UNI_INTHAI } /* block=thai */,
- { 0, 2287, 0, 21, 0, UNI_SINHALAARCHAICNUMBERS } /* sinhalaarchaicnumbers */,
- { 0, 9290, 1, 5, 1, -UNI_MATH } /* math=n */,
- { 40, 9768, 2061, 4, 4, UNI_MODI } /* scx=modi */,
- { 0, 1060, 0, 27, 0, UNI_OCR } /* opticalcharacterrecognition */,
- { 0, 3097, 1309, 18, 3, UNI_DT__SUB } /* decompositiontype=sub */,
- { 82, 10027, 7148, 3, 10, UNI_JG__DALATHRISH } /* jg=dalathrish */,
- { 0, 7318, 10087, 10, 3, UNI_IN__3_DOT_2 } /* presentin=v32 */,
- { 65, 10033, 751, 3, 2, UNI_LB__CL } /* lb=cl */,
- { 0, 9240, 3, 5, 1, -UNI_DASH } /* dash=f */,
- { 0, 3836, 9544, 17, 4, UNI_DIAK } /* scriptextensions=diak */,
- { 0, 9275, 1244, 5, 25, UNI_INSC__CONSONANTINITIALPOSTFIXED } /* insc=consonantinitialpostfixed */,
- { 1, 4116, 447, 3, 31, UNI_IDEOGRAPHICSYMBOLS } /* isideographicsymbolsandpunctuation */,
- { 0, 9488, 7648, 4, 9, UNI_INOLDITALIC } /* blk=olditalic */,
- { 1, 7325, 7469, 3, 1, UNI_IN__5 } /* in=5 */,
- { 11, 4628, 1204, 15, 9, UNI_EA__F } /* eastasianwidth=fullwidth */,
- { 9, 3133, 9836, 18, 4, UNI_EBASE } /* emojimodifierbase=true */,
- { 73, 9277, 6972, 3, 4, UNI_SC__SYLO } /* sc=sylo */,
- { 4, 6061, 9836, 12, 4, UNI_BIDIC } /* bidicontrol=true */,
- { 0, 184, 5284, 2, 4, UNI_LISU } /* islisu */,
- { 1, 3836, 8421, 17, 7, UNI_ELYM } /* scriptextensions=elymaic */,
- { 0, 9230, 0, 5, 0, UNI_cwcf_values_index } /* cwcf= */,
- { 0, 184, 1561, 2, 24, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* issupsymbolsandpictographs */,
- { 0, 4658, 3, 15, 1, -UNI_GREXT } /* graphemeextend=f */,
- { 1, 9488, 217, 4, 33, UNI_DIACRITICALSEXT } /* blk=combiningdiacriticalmarksextended */,
- { 1, 5578, 6556, 15, 8, UNI_SB__SC } /* sentencebreak=scontinue */,
- { 3, 9250, 9836, 5, 4, UNI_EMOD } /* emod=true */,
- { 98, 9260, 36, 5, 1, UNI_IDSB } /* idsb=t */,
- { 173, 1966, 6457, 22, 12, UNI_INSC__NUMBERJOINER } /* indicsyllabiccategory=numberjoiner */,
- { 104, 4688, 0, 15, 0, UNI_identifiertype_values_index } /* identifiertype= */,
- { 260, 8589, 9576, 7, 4, UNI_SC__GURU } /* script=guru */,
- { 16, 3836, 9696, 17, 4, UNI_OGAM } /* scriptextensions=ogam */,
- { 1, 8400, 9255, 7, 5, -UNI_COMPEX } /* compex=false */,
- { 36, 10296, 3379, 7, 5, UNI_POSIXSPACE } /* isposixspace */,
- { 0, 9508, 9946, 4, 3, UNI_CCC__DB } /* ccc=233 */,
- { 0, 6109, 0, 12, 0, UNI_CYRILLICEXTB } /* cyrillicextb */,
- { 0, 184, 8900, 2, 6, UNI_KTHI } /* iskaithi */,
- { 0, 951, 0, 28, 0, UNI_VSSUP } /* variationselectorssupplement */,
- { 276, 9596, 5973, 4, 13, UNI_HST__NA } /* hst=notapplicable */,
- { 61, 1723, 0, 23, 0, UNI_SUPPUNCTUATION } /* supplementalpunctuation */,
- { 3, 3097, 4017, 18, 5, UNI_DT__FIN } /* decompositiontype=final */,
- { 0, 9345, 9836, 5, 4, UNI_XIDC } /* xidc=true */,
- { 461, 8589, 9793, 8, 3, UNI_SOGO } /* script=sogo */,
- { 0, 8780, 5032, 6, 5, UNI_ASCII } /* block=ascii */,
- { 0, 8589, 9624, 7, 4, UNI_LAO } /* script=laoo */,
- { 5, 2288, 2205, 4, 12, UNI_INHANIFIROHINGYA } /* inhanifirohingya */,
- { 3, 42, 0, 26, 0, UNI_CJKCOMPATIDEOGRAPHS } /* cjkcompatibilityideographs */,
- { 1, 8780, 5284, 6, 14, UNI_LISUSUP } /* block=lisusupplement */,
- { 0, 8291, 0, 4, 0, UNI_TAGB } /* tagb */,
- { 0, 4989, 7409, 3, 9, UNI_CN } /* isunassigned */,
- { 10, 8870, 36, 6, 1, UNI_EPRES } /* epres=t */,
- { 1, 9488, 5960, 4, 13, UNI_MISCTECHNICAL } /* blk=misctechnical */,
- { 6, 8589, 8645, 7, 7, UNI_LANA } /* script=taitham */,
- { 5, 9488, 1006, 4, 27, UNI_ANCIENTGREEKMUSIC } /* blk=ancientgreekmusicalnotation */,
- { 0, 4113, 4974, 3, 7, UNI_VEDICEXT } /* invedicext */,
- { 2, 122, 0, 9, 0, UNI_DIA } /* diacritic */,
- { 0, 1812, 1, 22, 1, -UNI_CWL } /* changeswhenlowercased=n */,
- { 71, 9488, 3870, 4, 17, UNI_SMALLFORMS } /* blk=smallformvariants */,
- { 0, 2224, 1724, 3, 22, UNI_SUPPUNCTUATION } /* insupplementalpunctuation */,
- { 32, 184, 84, 2, 4, UNI_MATH } /* ismath */,
- { 0, 6231, 1879, 3, 21, UNI_CJKCOMPATIDEOGRAPHSSUP } /* incjkcompatideographssup */,
- { 0, 8780, 7648, 6, 9, UNI_INOLDITALIC } /* block=olditalic */,
- { 0, 9768, 8179, 4, 8, UNI_GURU } /* scx=gurmukhi */,
- { 3, 184, 1171, 2, 2, UNI_TITLE } /* islt */,
- { 0, 3836, 6840, 17, 11, UNI_NAND } /* scriptextensions=nandinagari */,
- { 0, 1966, 2844, 22, 10, UNI_INSC__TONELETTER } /* indicsyllabiccategory=toneletter */,
- { 1, 3547, 0, 17, 0, UNI_ALCHEMICAL } /* alchemicalsymbols */,
- { 0, 8421, 0, 7, 0, UNI_ELYM } /* elymaic */,
- { 3, 10048, 10152, 3, 2, UNI_NV__49 } /* nv=49 */,
- { 0, 9488, 9315, 4, 5, UNI_INORIYA } /* blk=oriya */,
- { 35, 9277, 8315, 3, 4, UNI_UGAR } /* sc=ugar */,
- { 0, 9508, 9156, 5, 4, UNI_CCC__25 } /* ccc=ccc25 */,
- { 36, 3836, 5171, 17, 4, UNI_CHAM } /* scriptextensions=cham */,
- { 6, 4033, 1186, 16, 2, UNI_PO } /* generalcategory=po */,
- { 2, 8882, 1, 6, 1, -UNI_GREXT } /* grext=n */,
- { 17, 9277, 9816, 3, 4, UNI_TAVT } /* sc=tavt */,
- { 0, 1563, 0, 2, 0, UNI_PS } /* ps */,
- { 66, 9488, 8906, 4, 6, UNI_KANBUN } /* blk=kanbun */,
- { 0, 9444, 8043, 4, 3, UNI_AGE__8 } /* age=8.0 */,
- { 0, 9290, 1025, 5, 2, -UNI_MATH } /* math=no */,
- { 11, 1979, 36, 10, 1, UNI_TITLE } /* category=lt */,
- { 3, 10048, 9976, 3, 3, UNI_NV__5_SLASH_8 } /* nv=5/8 */,
- { 0, 8997, 0, 6, 0, UNI_TERM } /* term=t */,
- { 0, 184, 6730, 2, 11, UNI_KATAKANAEXT } /* iskatakanaext */,
- { 262, 8780, 3600, 6, 4, UNI_UCAS } /* block=ucas */,
- { 8, 7155, 9593, 3, 3, UNI_HMNP } /* ishmnp */,
- { 5, 7155, 1193, 3, 25, UNI_HALFANDFULLFORMS } /* ishalfwidthandfullwidthforms */,
- { 316, 9768, 8597, 5, 6, UNI_SHRD } /* scx=sharada */,
- { 0, 1988, 36, 22, 1, UNI_LOE } /* logicalorderexception=t */,
- { 0, 3374, 1, 11, 1, -UNI_XPOSIXSPACE } /* whitespace=n */,
- { 0, 9444, 10075, 4, 3, UNI_AGE__2 } /* age=v20 */,
- { 8, 9444, 9955, 4, 3, UNI_AGE__3_DOT_2 } /* age=3.2 */,
- { 0, 2288, 8444, 4, 5, UNI_INHANUNOO } /* inhanunoo */,
- { 0, 6231, 510, 3, 29, UNI_CJKEXTA } /* incjkunifiedideographsextensiona */,
- { 2, 184, 6098, 3, 11, UNI_CYRILLICEXTA } /* iscyrillicexta */,
- { 0, 10060, 1, 3, 1, -UNI_RI } /* ri=n */,
- { 0, 6231, 8352, 3, 6, UNI_CJKEXTA } /* incjkexta */,
- { 0, 1988, 9255, 22, 5, -UNI_LOE } /* logicalorderexception=false */,
- { 2, 5791, 7045, 13, 3, UNI_JG__FEH } /* joininggroup=feh */,
- { 64, 4116, 325, 3, 3, UNI_ITAL } /* isital */,
- { 0, 7088, 10042, 10, 3, UNI_BC__LRO } /* bidiclass=lro */,
- { 47, 7155, 8, 3, 2, UNI_HAN } /* ishan */,
- { 0, 5986, 7765, 13, 2, UNI_NV__25 } /* numericvalue=25 */,
- { 3, 9488, 4340, 4, 13, UNI_MATHOPERATORS } /* blk=mathoperators */,
- { 0, 10033, 8680, 3, 7, UNI_LB__XX } /* lb=unknown */,
- { 2, 10024, 1059, 3, 2, UNI_SO } /* gc=so */,
- { 8, 7088, 407, 10, 2, UNI_BC__ON } /* bidiclass=on */,
- { 3, 4245, 0, 10, 0, UNI_SM } /* mathsymbol */,
- { 32, 8780, 4928, 6, 5, UNI_INTAMIL } /* block=tamil */,
- { 0, 9488, 5550, 4, 14, UNI_INPSALTERPAHLAVI } /* blk=psalterpahlavi */,
- { 3, 8870, 1025, 6, 2, -UNI_EPRES } /* epres=no */,
- { 4, 9876, 0, 4, 0, UNI_XSUX } /* xsux */,
- { 3, 8966, 0, 7, 0, UNI_DT__CAN } /* nfdqc=n */,
- { 4, 9265, 9255, 5, 5, -UNI_IDST } /* idst=false */,
- { 11, 7218, 5088, 10, 14, UNI_LB__SA } /* linebreak=complexcontext */,
- { 1, 3836, 3598, 17, 17, UNI_AGHB } /* scriptextensions=caucasianalbanian */,
- { 0, 8780, 4049, 6, 16, UNI_GEORGIANEXT } /* block=georgianextended */,
- { 10, 3385, 1, 18, 1, -UNI_RI } /* regionalindicator=n */,
- { 0, 8589, 9095, 7, 5, UNI_SC__BUHD } /* script=buhid */,
- { 1, 10024, 10170, 3, 2, UNI_CASEDLETTER } /* gc=l_ */,
- { 1, 5791, 6774, 13, 11, UNI_JG__MALAYALAMJA } /* joininggroup=malayalamja */,
- { 4, 117, 5779, 3, 12, UNI_IPAEXT } /* inipaextensions */,
- { 56, 5986, 8756, 13, 6, UNI_NV__900000 } /* numericvalue=900000 */,
- { 2, 8589, 3169, 7, 8, UNI_ETHI } /* script=ethiopic */,
- { 0, 10033, 2444, 3, 2, UNI_LB__HL } /* lb=hl */,
- { 6, 1114, 9255, 26, 5, -UNI_CWKCF } /* changeswhennfkccasefolded=false */,
- { 0, 10027, 9044, 3, 4, UNI_JG__YUDH } /* jg=yudh */,
- { 2, 4385, 0, 6, 0, UNI_TANG } /* tangut */,
- { 2, 8780, 2245, 6, 14, UNI_MEETEIMAYEKEXT } /* block=meeteimayekext */,
- { 32, 3836, 9330, 17, 5, UNI_TALE } /* scriptextensions=taile */,
- { 0, 3836, 8107, 17, 4, UNI_BALI } /* scriptextensions=bali */,
- { 32, 5986, 5648, 13, 7, UNI_NV__1000000 } /* numericvalue=1000000 */,
- { 24, 8780, 4369, 6, 6, UNI_INSYRIAC } /* block=syriac */,
- { 206, 4838, 17, 16, 1, UNI_NFKCQC__N } /* nfkcquickcheck=no */,
- { 2, 6061, 3, 12, 1, -UNI_BIDIC } /* bidicontrol=f */,
- { 0, 9277, 8344, 3, 4, UNI_SC__BENG } /* sc=beng */,
- { 0, 9277, 9544, 3, 4, UNI_DIAK } /* sc=diak */,
- { 426, 4369, 0, 16, 0, UNI_SYRIACSUP } /* syriacsupplement */,
- { 1, 6231, 1902, 4, 20, UNI_INDICNUMBERFORMS } /* incommonindicnumberforms */,
- { 1, 10027, 9075, 3, 5, UNI_JG__ALAPH } /* jg=alaph */,
- { 2, 4478, 0, 7, 0, UNI_BRAI } /* braille */,
- { 1, 8589, 1654, 7, 6, UNI_SC__HANG } /* script=hangul */,
- { 68, 9508, 8817, 5, 5, UNI_CCC__129 } /* ccc=ccc129 */,
- { 0, 9015, 3, 5, 1, -UNI_IDEO } /* ideo=f */,
- { 8, 1417, 9472, 24, 3, UNI_CCC__202 } /* canonicalcombiningclass=atb */,
- { 24, 184, 4613, 2, 15, UNI_DIACRITICALSSUP } /* isdiacriticalssup */,
- { 0, 9488, 4337, 4, 16, UNI_SUPMATHOPERATORS } /* blk=supmathoperators */,
- { 7, 1594, 0, 14, 0, UNI_MUSIC } /* musicalsymbols */,
- { 97, 4791, 2247, 4, 12, UNI_MEETEIMAYEKEXT } /* inmeeteimayekext */,
- { 3, 184, 1344, 2, 25, UNI_SYMBOLSFORLEGACYCOMPUTING } /* issymbolsforlegacycomputing */,
- { 51, 9488, 446, 4, 18, UNI_IDEOGRAPHICSYMBOLS } /* blk=ideographicsymbols */,
- { 10, 9488, 5284, 4, 14, UNI_LISUSUP } /* blk=lisusupplement */,
- { 0, 9620, 0, 4, 0, UNI_LANA } /* lana */,
- { 0, 9488, 1631, 4, 23, UNI_GEOMETRICSHAPESEXT } /* blk=geometricshapesextended */,
- { 0, 6231, 1442, 3, 9, UNI_CJKSYMBOLS } /* incjksymbols */,
- { 0, 10132, 727, 3, 2, UNI_WB__MN } /* wb=mn */,
- { 68, 1166, 10135, 26, 3, UNI_DI } /* defaultignorablecodepoint=yes */,
- { 0, 1188, 8639, 3, 6, UNI_INTAGALOG } /* intagalog */,
- { 320, 9488, 6796, 4, 11, UNI_INMEDEFAIDRIN } /* blk=medefaidrin */,
- { 402, 3836, 8491, 17, 4, UNI_MARC } /* scriptextensions=marc */,
- { 4, 9488, 5752, 4, 8, UNI_GREEKEXT } /* blk=greekext */,
- { 1, 7088, 4465, 12, 13, UNI_BC__BN } /* bidiclass=boundaryneutral */,
- { 91, 8688, 863, 4, 4, UNI_ARROWS } /* isarrows */,
- { 0, 184, 867, 2, 18, UNI_PHONETICEXT } /* isphoneticextensions */,
- { 0, 8107, 0, 4, 0, UNI_BALI } /* bali */,
- { 1, 10333, 4370, 3, 8, UNI_SYRIACSUP } /* issyriacsup */,
- { 0, 8337, 0, 7, 0, UNI_AVST } /* avestan */,
- { 8, 184, 43, 3, 2, UNI_CJK } /* iscjk */,
- { 0, 9488, 8470, 4, 7, UNI_INLINEARA } /* blk=lineara */,
- { 0, 9768, 4145, 4, 7, UNI_LINB } /* scx=linearb */,
- { 496, 7325, 7979, 3, 3, UNI_IN__6 } /* in=6.0 */,
- { 0, 2218, 7623, 4, 7, UNI_INNABATAEAN } /* innabataean */,
- { 22, 9748, 0, 4, 0, UNI_RJNG } /* rjng */,
- { 0, 3836, 9736, 17, 4, UNI_COPT } /* scriptextensions=qaac */,
- { 97, 2784, 4435, 4, 13, UNI_ARABICEXTA } /* inarabicextendeda */,
- { 38, 9444, 9967, 4, 3, UNI_AGE__5_DOT_1 } /* age=5.1 */,
- { 121, 3836, 8876, 17, 4, UNI_GOTH } /* scriptextensions=goth */,
- { 5, 10033, 83, 3, 2, UNI_LB__CM } /* lb=cm */,
- { 4, 9997, 102, 3, 2, UNI_BC__ET } /* bc=et */,
- { 0, 5452, 10135, 14, 3, UNI_NFCQC__Y } /* nfcquickcheck=yes */,
- { 12, 9488, 3025, 4, 8, UNI_INCHEROKEE } /* blk=cherokee */,
- { 72, 9524, 10135, 4, 3, UNI_CWT } /* cwt=yes */,
- { 22, 9277, 2485, 3, 4, UNI_SC__MONG } /* sc=mong */,
- { 136, 8267, 1, 8, 1, -UNI_RADICAL } /* radical=n */,
- { 68, 8219, 0, 8, 0, UNI_JAVA } /* javanese */,
- { 1, 21, 9066, 3, 4, UNI_INADLAM } /* inadlam */,
- { 385, 1966, 1608, 22, 23, UNI_INSC__CONSONANTPRECEDINGREPHA } /* indicsyllabiccategory=consonantprecedingrepha */,
- { 0, 6576, 3, 11, 1, -UNI_XPOSIXALPHA } /* alphabetic=f */,
- { 8, 5986, 7978, 13, 2, UNI_NV__16 } /* numericvalue=16 */,
- { 41, 1552, 598, 9, 2, UNI_XPOSIXCNTRL } /* category=cc */,
- { 8, 6241, 0, 12, 1, UNI_JT__U } /* joiningtype=u */,
- { 2, 10024, 6598, 3, 11, UNI_CASEDLETTER } /* gc=casedletter */,
- { 0, 9250, 1, 5, 1, -UNI_EMOD } /* emod=n */,
- { 1, 6121, 0, 12, 0, UNI_CYRILLICEXTC } /* cyrillicextc */,
- { 0, 6554, 0, 10, 0, UNI_IDC } /* idcontinue */,
- { 0, 2760, 6741, 19, 11, UNI_GCB__L } /* hangulsyllabletype=leadingjamo */,
- { 2, 5986, 9988, 13, 3, UNI_NV__7_SLASH_8 } /* numericvalue=7/8 */,
- { 38, 5578, 1194, 14, 2, UNI_LB__LF } /* sentencebreak=lf */,
- { 7, 10132, 3385, 3, 17, UNI_RI } /* wb=regionalindicator */,
- { 2, 8589, 8428, 7, 4, UNI_SC__GRAN } /* script=gran */,
- { 1, 4838, 9295, 15, 5, UNI_NFCQC__M } /* nfkcquickcheck=maybe */,
- { 0, 9768, 9310, 4, 5, UNI_OGAM } /* scx=ogham */,
- { 1, 3424, 1, 3, 33, UNI_UCAS } /* inunifiedcanadianaboriginalsyllabics */,
- { 12, 21, 5804, 2, 13, UNI_KANAEXTA } /* inkanaextendeda */,
- { 1, 1044, 0, 6, 0, UNI_L } /* letter */,
- { 106, 9508, 9943, 4, 3, UNI_CCC__AR } /* ccc=232 */,
- { 0, 7738, 3, 9, 1, -UNI_XIDS } /* xidstart=f */,
- { 0, 184, 8491, 2, 7, UNI_MARC } /* ismarchen */,
- { 32, 8589, 3751, 7, 17, UNI_KITS } /* script=khitansmallscript */,
- { 0, 2280, 4899, 3, 14, UNI_PS } /* isopenpunctuation */,
- { 1, 8780, 3241, 6, 11, UNI_GEORGIANSUP } /* block=georgiansup */,
- { 1, 5791, 2203, 13, 21, UNI_JG__HANIFIROHINGYAKINNAYA } /* joininggroup=hanifirohingyakinnaya */,
- { 92, 1966, 5144, 22, 14, UNI_INSC__GEMINATIONMARK } /* indicsyllabiccategory=geminationmark */,
- { 0, 9768, 9085, 4, 5, UNI_BATK } /* scx=batak */,
- { 1, 9768, 9652, 4, 4, UNI_MERC } /* scx=merc */,
- { 0, 96, 0, 5, 0, UNI_XPOSIXALPHA } /* alpha */,
- { 12, 8589, 9632, 7, 4, UNI_SC__LINA } /* script=lina */,
- { 4, 8498, 0, 7, 0, UNI_MULT } /* multani */,
- { 17, 1966, 9026, 22, 6, UNI_INSC__VIRAMA } /* indicsyllabiccategory=virama */,
- { 0, 7438, 2444, 10, 2, UNI_LB__HL } /* wordbreak=hl */,
- { 258, 7318, 9844, 10, 4, UNI_IN__11 } /* presentin=v110 */,
- { 0, 9768, 9440, 4, 4, UNI_ADLM } /* scx=adlm */,
- { 0, 8589, 7118, 7, 10, UNI_CHRS } /* script=chorasmian */,
- { 36, 5508, 9836, 14, 4, UNI_PATSYN } /* patternsyntax=true */,
- { 2, 3836, 9656, 17, 4, UNI_MIAO } /* scriptextensions=miao */,
- { 25, 3097, 8195, 18, 8, UNI_DT__ISO } /* decompositiontype=isolated */,
- { 45, 5791, 5336, 13, 4, UNI_JG__BETH } /* joininggroup=beth */,
- { 3, 10048, 10150, 3, 2, UNI_NV__48 } /* nv=48 */,
- { 4, 4853, 1025, 15, 2, UNI_NFKDQC__N } /* nfkdquickcheck=no */,
- { 1, 10048, 8756, 3, 6, UNI_NV__900000 } /* nv=900000 */,
- { 7, 9346, 36, 4, 1, UNI_IDC } /* idc=t */,
- { 1, 10024, 5438, 3, 14, UNI_SK } /* gc=modifiersymbol */,
- { 0, 9444, 7923, 4, 3, UNI_AGE__4 } /* age=4.0 */,
- { 1, 9488, 4369, 4, 6, UNI_INSYRIAC } /* blk=syriac */,
- { 69, 4916, 9004, 4, 4, UNI_TELU } /* istelugu */,
- { 8, 184, 1287, 2, 2, UNI_UPPERCASELETTER } /* islu */,
- { 0, 8589, 2203, 7, 4, UNI_SC__HAN } /* script=hani */,
- { 1, 6928, 36, 11, 1, UNI_SD } /* softdotted=t */,
- { 14, 9508, 9472, 4, 3, UNI_CCC__202 } /* ccc=atb */,
- { 3, 3836, 9816, 17, 4, UNI_TAVT } /* scriptextensions=tavt */,
- { 0, 9277, 9620, 3, 4, UNI_LANA } /* sc=lana */,
- { 0, 7739, 1, 8, 1, -UNI_IDS } /* idstart=n */,
- { 5, 7218, 8449, 10, 2, UNI_LB__HY } /* linebreak=hy */,
- { 49, 8780, 3331, 6, 18, UNI_ORNAMENTALDINGBATS } /* block=ornamentaldingbats */,
- { 0, 8780, 8091, 6, 8, UNI_INARMENIAN } /* block=armenian */,
- { 41, 9488, 4049, 4, 11, UNI_GEORGIANEXT } /* blk=georgianext */,
- { 0, 9351, 1, 4, 1, -UNI_IDS } /* ids=n */,
- { 49, 9444, 10078, 4, 3, UNI_AGE__2_DOT_1 } /* age=v21 */,
- { 134, 10009, 1309, 3, 3, UNI_DT__SUB } /* dt=sub */,
- { 296, 9277, 9464, 3, 4, UNI_ARMN } /* sc=armn */,
- { 6, 8780, 7168, 6, 10, UNI_INDIVESAKURU } /* block=divesakuru */,
- { 0, 8694, 3, 7, 1, -UNI_XPOSIXSPACE } /* wspace=f */,
- { 100, 10132, 7729, 3, 9, UNI_WB__WSEGSPACE } /* wb=wsegspace */,
- { 1, 5791, 5480, 13, 14, UNI_JG__NOJOININGGROUP } /* joininggroup=nojoininggroup */,
- { 257, 3259, 9836, 18, 4, UNI_IDSB } /* idsbinaryoperator=true */,
- { 590, 5986, 9961, 13, 3, UNI_NV__3_SLASH_5 } /* numericvalue=3/5 */,
- { 2, 7218, 5536, 10, 14, UNI_LB__PO } /* linebreak=postfixnumeric */,
- { 39, 7428, 0, 4, 0, UNI_WARA } /* wara */,
- { 0, 6231, 8387, 3, 6, UNI_CJKEXTF } /* incjkextf */,
- { 0, 184, 8123, 2, 8, UNI_BUGI } /* isbuginese */,
- { 0, 8509, 811, 4, 20, UNI_ENCLOSEDIDEOGRAPHICSUP } /* inenclosedideographicsup */,
- { 1, 5986, 7922, 13, 2, UNI_NV__24 } /* numericvalue=24 */,
- { 0, 9277, 7630, 3, 9, UNI_TALU } /* sc=newtailue */,
- { 32, 8780, 2741, 6, 19, UNI_JAMOEXTB } /* block=hanguljamoextendedb */,
- { 2, 10346, 1182, 5, 4, UNI_ANY } /* isunicode */,
- { 128, 5060, 36, 14, 1, UNI_CI } /* caseignorable=t */,
- { 0, 9508, 9151, 5, 4, UNI_CCC__24 } /* ccc=ccc24 */,
- { 0, 9071, 36, 4, 1, UNI_XPOSIXXDIGIT } /* hex=t */,
- { 0, 6231, 540, 3, 29, UNI_CJKEXTB } /* incjkunifiedideographsextensionb */,
- { 107, 10296, 0, 3, 0, UNI_P } /* isp */,
- { 0, 8115, 0, 8, 0, UNI_BASS } /* bassavah */,
- { 16, 7540, 0, 9, 0, UNI_ext_values_index } /* extender= */,
- { 128, 184, 9484, 2, 4, UNI_BHKS } /* isbhks */,
- { 21, 8864, 26, 6, 1, UNI_EMOJI } /* emoji=y */,
- { 0, 5986, 5648, 13, 11, UNI_NV__10000000000 } /* numericvalue=10000000000 */,
- { 0, 4340, 0, 13, 0, UNI_MATHOPERATORS } /* mathoperators */,
- { 0, 9768, 7359, 5, 9, UNI_SAUR } /* scx=saurashtra */,
- { 6, 10132, 7612, 3, 9, UNI_WB__MB } /* wb=midnumlet */,
- { 66, 1066, 0, 2, 0, UNI_CASEDLETTER } /* lc */,
- { 0, 10027, 7112, 3, 3, UNI_JG__KAF } /* jg=kaf */,
- { 0, 8876, 0, 4, 0, UNI_GOTH } /* goth */,
- { 6, 6231, 2141, 3, 7, UNI_INCYRILLIC } /* incyrillic */,
- { 0, 8589, 1165, 9, 2, UNI_SC__SHRD } /* script=shrd */,
- { 40, 1552, 10180, 9, 2, UNI_ZS } /* category=zs */,
- { 0, 4033, 5713, 16, 13, UNI_XPOSIXDIGIT } /* generalcategory=decimalnumber */,
- { 577, 9015, 9255, 5, 5, -UNI_IDEO } /* ideo=false */,
- { 0, 8780, 9688, 6, 3, UNI_INNKO } /* block=nko */,
- { 132, 9277, 8414, 3, 7, UNI_ELBA } /* sc=elbasan */,
- { 0, 10048, 8720, 3, 3, UNI_NV__400 } /* nv=400 */,
- { 2, 1828, 26, 6, 1, UNI_CASED } /* cased=y */,
- { 0, 184, 8912, 2, 4, UNI_KHOJ } /* iskhoj */,
- { 32, 9768, 6181, 4, 12, UNI_GONG } /* scx=gunjalagondi */,
- { 21, 184, 6517, 2, 12, UNI_PLAYINGCARDS } /* isplayingcards */,
- { 0, 3097, 2280, 18, 3, UNI_DT__ISO } /* decompositiontype=iso */,
- { 0, 4033, 6598, 16, 11, UNI_CASEDLETTER } /* generalcategory=casedletter */,
- { 10, 8780, 4868, 6, 15, UNI_NARB } /* block=oldnortharabian */,
- { 0, 184, 3133, 2, 13, UNI_EMOD } /* isemojimodifier */,
- { 68, 10048, 8720, 3, 5, UNI_NV__40000 } /* nv=40000 */,
- { 4, 10048, 7819, 3, 8, UNI_NV__3_SLASH_16 } /* nv=1.88e-01 */,
- { 2, 9488, 6620, 4, 11, UNI_DOMINO } /* blk=dominotiles */,
- { 428, 9345, 1, 5, 1, -UNI_XIDC } /* xidc=n */,
- { 0, 3836, 2855, 17, 9, UNI_MONG } /* scriptextensions=mongolian */,
- { 5, 10333, 8277, 4, 6, UNI_SPECIALS } /* isspecials */,
- { 32, 10048, 7867, 3, 8, UNI_NV__1_SLASH_32 } /* nv=3.12e-02 */,
- { 0, 7088, 32, 10, 2, UNI_BC__CS } /* bidiclass=cs */,
- { 1, 9488, 7458, 4, 10, UNI_YIRADICALS } /* blk=yiradicals */,
- { 0, 4838, 0, 15, 0, UNI_nfkcqc_values_index } /* nfkcquickcheck= */,
- { 1, 8589, 8115, 7, 8, UNI_BASS } /* script=bassavah */,
- { 71, 7438, 4305, 10, 5, UNI_WB__XX } /* wordbreak=other */,
- { 1, 9277, 8498, 3, 4, UNI_SC__MULT } /* sc=mult */,
- { 3, 5817, 0, 13, 0, UNI_ZL } /* lineseparator */,
- { 5, 9277, 9832, 3, 4, UNI_TIBT } /* sc=tibt */,
- { 1, 10033, 10156, 3, 2, UNI_LB__BK } /* lb=bk */,
- { 0, 10030, 6664, 3, 11, UNI_JT__D } /* jt=dualjoining */,
- { 17, 184, 8344, 2, 7, UNI_BENG } /* isbengali */,
- { 108, 6231, 115, 4, 33, UNI_DIACRITICALSFORSYMBOLS } /* incombiningdiacriticalmarksforsymbols */,
- { 0, 9277, 8666, 3, 4, UNI_SC__TIRH } /* sc=tirh */,
- { 39, 184, 6110, 3, 11, UNI_CYRILLICEXTB } /* iscyrillicextb */,
- { 1, 6972, 0, 4, 0, UNI_SYLO } /* sylo */,
- { 60, 84, 0, 4, 0, UNI_MATH } /* math */,
- { 3, 1552, 3985, 9, 16, UNI_PE } /* category=closepunctuation */,
- { 0, 9768, 9032, 4, 6, UNI_WCHO } /* scx=wancho */,
- { 5, 7325, 9979, 3, 3, UNI_IN__6_DOT_1 } /* in=6.1 */,
- { 0, 1269, 9836, 25, 4, UNI_COMPEX } /* fullcompositionexclusion=true */,
- { 0, 6231, 4002, 3, 15, UNI_CYPRIOTSYLLABARY } /* incypriotsyllabary */,
- { 16, 7438, 34, 10, 6, UNI_WB__EXTEND } /* wordbreak=extend */,
- { 0, 9275, 2389, 5, 20, UNI_INSC__CONSONANTWITHSTACKER } /* insc=consonantwithstacker */,
- { 20, 9277, 9664, 3, 4, UNI_MRO } /* sc=mroo */,
- { 0, 1417, 6445, 24, 12, UNI_CCC__0 } /* canonicalcombiningclass=notreordered */,
- { 100, 9277, 9564, 3, 4, UNI_SC__GONM } /* sc=gonm */,
- { 0, 9444, 7867, 4, 3, UNI_AGE__3_DOT_1 } /* age=3.1 */,
- { 0, 4145, 0, 16, 0, UNI_LINEARBIDEOGRAMS } /* linearbideograms */,
- { 1, 7076, 3938, 3, 15, UNI_BOPOMOFOEXT } /* inbopomofoextended */,
- { 1, 8780, 7428, 6, 10, UNI_INWARANGCITI } /* block=warangciti */,
- { 1, 5564, 0, 14, 0, UNI_qmark_values_index } /* quotationmark= */,
- { 27, 9444, 7469, 4, 3, UNI_AGE__5 } /* age=5.0 */,
- { 0, 9488, 8203, 4, 8, UNI_JAMOEXTA } /* blk=jamoexta */,
- { 16, 8780, 1654, 6, 6, UNI_INHANGUL } /* block=hangul */,
- { 1, 8884, 10135, 4, 3, UNI_EXT } /* ext=yes */,
- { 0, 9002, 0, 4, 0, UNI_TELU } /* telu */,
- { 1, 10003, 10135, 3, 3, UNI_CI } /* ci=yes */,
- { 3, 9768, 4149, 5, 3, UNI_SARB } /* scx=sarb */,
- { 1, 5986, 7963, 13, 8, UNI_NV__11_SLASH_2 } /* numericvalue=5.50e+00 */,
- { 549, 6231, 7140, 4, 8, UNI_COMPATJAMO } /* incompatjamo */,
- { 0, 8780, 3241, 6, 18, UNI_GEORGIANSUP } /* block=georgiansupplement */,
- { 3, 4643, 36, 15, 1, UNI_ECOMP } /* emojicomponent=t */,
- { 0, 1269, 9255, 25, 5, -UNI_COMPEX } /* fullcompositionexclusion=false */,
- { 4, 1552, 467, 9, 11, UNI_P } /* category=punctuation */,
- { 3, 6241, 36, 12, 1, UNI_JT__T } /* joiningtype=t */,
- { 3, 21, 8463, 2, 7, UNI_KALI } /* inkayahli */,
- { 334, 9508, 2449, 4, 4, UNI_CCC__L } /* ccc=left */,
- { 41, 10033, 8251, 3, 8, UNI_LB__NL } /* lb=nextline */,
- { 6, 9335, 0, 5, 0, UNI_TAKR } /* takri */,
- { 2, 9488, 861, 4, 6, UNI_ARROWS } /* blk=arrows */,
- { 0, 9350, 9836, 5, 4, UNI_XIDS } /* xids=true */,
- { 7, 5986, 7933, 13, 2, UNI_NV__17 } /* numericvalue=17 */,
- { 0, 184, 8107, 2, 4, UNI_BALI } /* isbali */,
- { 0, 8780, 8617, 6, 7, UNI_INSOYOMBO } /* block=soyombo */,
- { 0, 10048, 7955, 3, 8, UNI_NV__1_SLASH_20 } /* nv=5.00e-02 */,
- { 4, 3836, 8187, 17, 8, UNI_HIRA } /* scriptextensions=hiragana */,
- { 512, 3836, 8611, 18, 3, UNI_SIDD } /* scriptextensions=sidd */,
- { 0, 9488, 8912, 4, 6, UNI_INKHOJKI } /* blk=khojki */,
- { 3, 9444, 0, 4, 0, UNI_age_values_index } /* age= */,
- { 67, 7666, 0, 9, 0, UNI_ORKH } /* oldturkic */,
- { 1, 10333, 4370, 3, 5, UNI_SYRC } /* issyriac */,
- { 399, 184, 8694, 2, 6, UNI_XPOSIXSPACE } /* iswspace */,
- { 64, 184, 1594, 2, 14, UNI_MUSIC } /* ismusicalsymbols */,
- { 16, 9488, 6505, 4, 8, UNI_PHAISTOS } /* blk=phaistos */,
- { 4, 9277, 7513, 3, 9, UNI_BHKS } /* sc=bhaiksuki */,
- { 164, 3836, 8337, 17, 7, UNI_AVST } /* scriptextensions=avestan */,
- { 5, 8589, 7513, 7, 9, UNI_BHKS } /* script=bhaiksuki */,
- { 18, 9508, 23, 4, 2, UNI_CCC__AL } /* ccc=al */,
- { 0, 8780, 6409, 6, 12, UNI_INMENDEKIKAKUI } /* block=mendekikakui */,
- { 104, 9768, 9752, 4, 4, UNI_ROHG } /* scx=rohg */,
- { 234, 2010, 0, 22, 0, UNI_MISCTECHNICAL } /* miscellaneoustechnical */,
- { 0, 3836, 2203, 17, 4, UNI_HAN } /* scriptextensions=hani */,
- { 6, 10333, 107, 3, 5, UNI_S } /* issymbol */,
- { 0, 6851, 0, 11, 0, UNI_LO } /* otherletter */,
- { 1, 5791, 4203, 13, 3, UNI_JG__LAM } /* joininggroup=lam */,
- { 0, 7438, 4360, 10, 9, UNI_WB__EB } /* wordbreak=emodifier */,
- { 263, 10027, 2203, 3, 21, UNI_JG__HANIFIROHINGYAKINNAYA } /* jg=hanifirohingyakinnaya */,
- { 0, 7218, 3985, 10, 16, UNI_LB__CL } /* linebreak=closepunctuation */,
- { 0, 9277, 9872, 3, 4, UNI_XPEO } /* sc=xpeo */,
- { 128, 10320, 3379, 7, 5, UNI_XPOSIXSPACE } /* isxperlspace */,
- { 280, 9488, 1878, 4, 19, UNI_CJKCOMPATIDEOGRAPHS } /* blk=cjkcompatideographs */,
- { 0, 8780, 2287, 6, 7, UNI_INSINHALA } /* block=sinhala */,
- { 2, 10033, 8701, 3, 7, UNI_LB__ZW } /* lb=zwspace */,
- { 7, 9488, 1594, 4, 14, UNI_MUSIC } /* blk=musicalsymbols */,
- { 64, 10288, 96, 8, 5, UNI_XPOSIXALPHA } /* isxposixalpha */,
- { 0, 184, 3169, 2, 18, UNI_ETHIOPICSUP } /* isethiopicsupplement */,
- { 0, 8688, 7060, 4, 8, UNI_ARABICEXTA } /* isarabicexta */,
- { 38, 10033, 6675, 3, 11, UNI_LB__EX } /* lb=exclamation */,
- { 12, 6231, 8394, 3, 6, UNI_CJKEXTG } /* incjkextg */,
- { 1, 9277, 9896, 3, 4, UNI_SC__ZYYY } /* sc=zyyy */,
- { 0, 5986, 9372, 13, 4, UNI_NV__1_SLASH_40 } /* numericvalue=1/40 */,
- { 2, 21, 9453, 3, 3, UNI_INAHOM } /* inahom */,
- { 512, 9277, 9752, 3, 4, UNI_SC__ROHG } /* sc=rohg */,
- { 11, 9444, 7931, 4, 3, UNI_AGE__4_DOT_1 } /* age=4.1 */,
- { 0, 4838, 10135, 15, 3, UNI_NFKCQC__Y } /* nfkcquickcheck=yes */,
- { 0, 8780, 3683, 6, 16, UNI_ETHIOPICEXT } /* block=ethiopicextended */,
- { 7, 9508, 1219, 4, 3, UNI_CCC__214 } /* ccc=ata */,
- { 0, 9277, 9460, 3, 4, UNI_ARMI } /* sc=armi */,
- { 512, 184, 2666, 3, 18, UNI_COUNTINGROD } /* iscountingrodnumerals */,
- { 3, 9277, 1900, 3, 6, UNI_SC__ZYYY } /* sc=common */,
- { 0, 5986, 8043, 13, 8, UNI_NV__4_SLASH_5 } /* numericvalue=8.00e-01 */,
- { 1, 7218, 6073, 10, 12, UNI_LB__SY } /* linebreak=breaksymbols */,
- { 0, 3836, 2140, 17, 8, UNI_CYRL } /* scriptextensions=cyrillic */,
- { 2, 867, 0, 28, 0, UNI_PHONETICEXTSUP } /* phoneticextensionssupplement */,
- { 2, 8780, 1033, 6, 27, UNI_ENCLOSEDCJK } /* block=enclosedcjklettersandmonths */,
- { 0, 8449, 26, 7, 1, UNI_HYPHEN } /* hyphen=y */,
- { 4, 1166, 3, 26, 1, -UNI_DI } /* defaultignorablecodepoint=f */,
- { 0, 1273, 26, 21, 1, UNI_CE } /* compositionexclusion=y */,
- { 132, 10048, 7875, 3, 8, UNI_NV__1_SLASH_32 } /* nv=3.13e-02 */,
- { 17, 8589, 9708, 7, 4, UNI_SC__ORYA } /* script=orya */,
- { 0, 9997, 2268, 3, 3, UNI_BC__PDI } /* bc=pdi */,
- { 44, 9265, 36, 5, 1, UNI_IDST } /* idst=t */,
- { 35, 1552, 4958, 9, 15, UNI_UPPERCASELETTER } /* category=uppercaseletter */,
- { 6, 9556, 73, 4, 2, UNI_WB__EB } /* gcb=em */,
- { 0, 10048, 8011, 3, 8, UNI_NV__13_SLASH_2 } /* nv=6.50e+00 */,
- { 1, 9250, 1025, 5, 2, -UNI_EMOD } /* emod=no */,
- { 0, 5986, 7763, 13, 8, UNI_NV__1_SLASH_8 } /* numericvalue=1.25e-01 */,
- { 0, 9020, 26, 6, 1, UNI_XPOSIXUPPER } /* upper=y */,
- { 0, 9277, 6277, 3, 4, UNI_SC__MAHJ } /* sc=mahj */,
- { 0, 5037, 3, 9, 1, -UNI_XPOSIXXDIGIT } /* hexdigit=f */,
- { 135, 9277, 1677, 3, 5, UNI_SC__LATN } /* sc=latin */,
- { 36, 10024, 1044, 3, 6, UNI_L } /* gc=letter */,
- { 15, 4033, 1066, 16, 2, UNI_CASEDLETTER } /* generalcategory=lc */,
- { 0, 10048, 8744, 3, 3, UNI_NV__700 } /* nv=700 */,
- { 0, 9508, 9166, 5, 4, UNI_CCC__27 } /* ccc=ccc27 */,
- { 3, 184, 6122, 3, 11, UNI_CYRILLICEXTC } /* iscyrillicextc */,
- { 64, 9262, 34, 3, 2, UNI_SB__EX } /* sb=ex */,
- { 0, 184, 9892, 2, 4, UNI_QAAI } /* iszinh */,
- { 1, 10024, 262, 3, 2, UNI_SM } /* gc=sm */,
- { 393, 9768, 7567, 4, 9, UNI_SIND } /* scx=khudawadi */,
- { 0, 10129, 1, 3, 1, -UNI_VS } /* vs=n */,
- { 2, 4369, 0, 9, 0, UNI_SYRIACSUP } /* syriacsup */,
- { 177, 21, 2590, 3, 18, UNI_ANCIENTGREEKNUMBERS } /* inancientgreeknumbers */,
- { 2, 3836, 4385, 17, 6, UNI_TANG } /* scriptextensions=tangut */,
- { 5, 10048, 8714, 3, 5, UNI_NV__30000 } /* nv=30000 */,
- { 2, 5986, 7747, 13, 8, UNI_NV__1_SLASH_10 } /* numericvalue=1.00e-01 */,
- { 1, 184, 9672, 2, 4, UNI_MYMR } /* ismymr */,
- { 1, 3836, 9065, 17, 5, UNI_ADLM } /* scriptextensions=adlam */,
- { 17, 8997, 9837, 6, 3, UNI_TERM } /* term=true */,
- { 0, 9556, 3385, 4, 17, UNI_RI } /* gcb=regionalindicator */,
- { 1, 7318, 9985, 10, 3, UNI_IN__7 } /* presentin=7.0 */,
- { 0, 10132, 6145, 3, 12, UNI_WB__EX } /* wb=extendnumlet */,
- { 0, 10333, 7292, 3, 6, UNI_SOGD } /* issogdian */,
- { 1, 7513, 0, 9, 0, UNI_BHKS } /* bhaiksuki */,
- { 0, 1114, 0, 25, 0, UNI_CWKCF } /* changeswhennfkccasefolded */,
- { 1, 3836, 7292, 18, 6, UNI_SOGD } /* scriptextensions=sogdian */,
- { 6, 1966, 2608, 22, 19, UNI_INSC__BRAHMIJOININGNUMBER } /* indicsyllabiccategory=brahmijoiningnumber */,
- { 3, 10033, 866, 3, 2, UNI_LB__SP } /* lb=sp */,
- { 22, 9488, 5200, 4, 7, UNI_KANASUP } /* blk=kanasup */,
- { 0, 184, 6253, 2, 5, UNI_KHMR } /* iskhmer */,
- { 4, 9664, 0, 3, 0, UNI_MRO } /* mro */,
- { 1, 1911, 0, 11, 0, UNI_NUMBERFORMS } /* numberforms */,
- { 3, 9768, 9600, 4, 4, UNI_KALI } /* scx=kali */,
- { 1, 10033, 4898, 3, 15, UNI_LB__OP } /* lb=openpunctuation */,
- { 1, 4033, 4245, 16, 10, UNI_SM } /* generalcategory=mathsymbol */,
- { 0, 8589, 7621, 7, 9, UNI_NBAT } /* script=nabataean */,
- { 5, 9488, 3938, 5, 7, UNI_INBOPOMOFO } /* blk=bopomofo */,
- { 0, 9488, 3115, 4, 18, UNI_DEVANAGARIEXT } /* blk=devanagariextended */,
- { 5, 117, 6, 3, 2, UNI_INIDC } /* inidc */,
- { 5, 9277, 3135, 5, 2, UNI_SC__KHOJ } /* sc=khoj */,
- { 598, 1319, 0, 25, 0, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* symbolsandpictographsexta */,
- { 0, 9768, 9580, 4, 4, UNI_HANO } /* scx=hano */,
- { 79, 8780, 1594, 6, 14, UNI_MUSIC } /* block=musicalsymbols */,
- { 0, 5791, 6157, 13, 12, UNI_JG__FINALSEMKATH } /* joininggroup=finalsemkath */,
- { 64, 4033, 4898, 16, 15, UNI_PS } /* generalcategory=openpunctuation */,
- { 1, 4989, 8674, 3, 6, UNI_UCASEXT } /* isucasext */,
- { 0, 184, 3785, 2, 10, UNI_MANI } /* ismanichaean */,
- { 0, 184, 1813, 3, 20, UNI_CWL } /* ischangeswhenlowercased */,
- { 0, 9740, 0, 4, 0, UNI_QAAI } /* qaai */,
- { 0, 5986, 8083, 13, 8, UNI_NV__11_SLASH_12 } /* numericvalue=9.17e-01 */,
- { 0, 9488, 1631, 4, 18, UNI_GEOMETRICSHAPESEXT } /* blk=geometricshapesext */,
- { 0, 184, 8463, 2, 7, UNI_KALI } /* iskayahli */,
- { 4, 10027, 4081, 3, 16, UNI_JG__HANIFIROHINGYAPA } /* jg=hanifirohingyapa */,
- { 0, 3836, 9512, 17, 4, UNI_CHRS } /* scriptextensions=chrs */,
- { 19, 7318, 7826, 10, 2, UNI_IN__12 } /* presentin=12 */,
- { 64, 9556, 262, 4, 2, UNI_GCB__SM } /* gcb=sm */,
- { 3, 10132, 5851, 3, 2, UNI_WB__ML } /* wb=ml */,
- { 1, 9488, 1586, 5, 13, UNI_BYZANTINEMUSIC } /* blk=byzantinemusic */,
- { 3, 3133, 0, 18, 0, UNI_ebase_values_index } /* emojimodifierbase= */,
- { 206, 10027, 9355, 3, 5, UNI_JG__ZHAIN } /* jg=zhain */,
- { 204, 9277, 3937, 3, 4, UNI_SC__BOPO } /* sc=bopo */,
- { 1, 10291, 9225, 5, 5, UNI_POSIXCNTRL } /* posixcntrl */,
- { 3, 34, 0, 3, 0, UNI_EXT } /* ext */,
- { 25, 7088, 2449, 10, 11, UNI_BC__L } /* bidiclass=lefttoright */,
- { 2, 5986, 9958, 13, 3, UNI_NV__3_SLASH_4 } /* numericvalue=3/4 */,
- { 66, 4973, 0, 15, 0, UNI_VEDICEXT } /* vedicextensions */,
- { 1, 9444, 9401, 4, 3, UNI_AGE__3 } /* age=3.0 */,
- { 41, 9014, 0, 6, 0, UNI_uideo_values_index } /* uideo= */,
- { 26, 9768, 3079, 4, 4, UNI_COPT } /* scx=copt */,
- { 0, 10024, 6873, 3, 11, UNI_SO } /* gc=othersymbol */,
- { 14, 9277, 6484, 3, 4, UNI_HUNG } /* sc=hung */,
- { 0, 1834, 9836, 22, 4, UNI_CWT } /* changeswhentitlecased=true */,
- { 0, 6277, 0, 7, 0, UNI_MAHJONG } /* mahjong */,
- { 41, 9015, 1025, 5, 2, -UNI_IDEO } /* ideo=no */,
- { 208, 9488, 8219, 4, 8, UNI_INJAVANESE } /* blk=javanese */,
- { 1, 9488, 1033, 4, 11, UNI_ENCLOSEDCJK } /* blk=enclosedcjk */,
- { 5, 9277, 6193, 3, 4, UNI_HEBR } /* sc=hebr */,
- { 0, 1217, 0, 2, 0, UNI_SK } /* sk */,
- { 4, 10024, 7408, 3, 10, UNI_CN } /* gc=unassigned */,
- { 0, 10030, 6753, 4, 10, UNI_JT__L } /* jt=leftjoining */,
- { 0, 9277, 9032, 3, 6, UNI_WCHO } /* sc=wancho */,
- { 16, 9444, 5648, 4, 2, UNI_AGE__10 } /* age=10 */,
- { 0, 2280, 9705, 3, 3, UNI_ORKH } /* isorkh */,
- { 0, 4658, 26, 15, 1, UNI_GREXT } /* graphemeextend=y */,
- { 0, 9997, 3187, 3, 18, UNI_BC__ET } /* bc=europeanterminator */,
- { 329, 7155, 2204, 3, 13, UNI_ROHG } /* ishanifirohingya */,
- { 0, 9508, 8799, 5, 5, UNI_CCC__107 } /* ccc=ccc107 */,
- { 74, 9508, 9216, 5, 4, UNI_CCC__84 } /* ccc=ccc84 */,
- { 1, 8589, 8463, 7, 7, UNI_SC__KALI } /* script=kayahli */,
- { 0, 10291, 467, 5, 5, UNI_POSIXPUNCT } /* posixpunct */,
- { 0, 8780, 2855, 6, 19, UNI_MONGOLIANSUP } /* block=mongoliansupplement */,
- { 0, 5986, 7930, 13, 2, UNI_NV__14 } /* numericvalue=14 */,
- { 1, 8589, 3894, 8, 10, UNI_SGNW } /* script=signwriting */,
- { 88, 10182, 10215, 6, 21, UNI__PERL_IS_IN_MULTI_CHAR_FOLD } /* _perl_is_in_multi_char_fold */,
- { 14, 8589, 3115, 7, 4, UNI_SC__DEVA } /* script=deva */,
- { 5, 7318, 5648, 10, 2, UNI_IN__10 } /* presentin=10 */,
- { 9, 6229, 9836, 12, 4, UNI_JOINC } /* joincontrol=true */,
- { 4, 9508, 8793, 5, 5, UNI_CCC__103 } /* ccc=ccc103 */,
- { 10, 9488, 1944, 4, 22, UNI_EARLYDYNASTICCUNEIFORM } /* blk=earlydynasticcuneiform */,
- { 1, 9508, 9949, 4, 3, UNI_CCC__DA } /* ccc=234 */,
- { 224, 3836, 9620, 17, 4, UNI_LANA } /* scriptextensions=lana */,
- { 292, 9488, 4433, 4, 15, UNI_ARABICEXTA } /* blk=arabicextendeda */,
- { 0, 2224, 8625, 3, 6, UNI_SUPPUAA } /* insuppuaa */,
- { 1, 184, 8387, 3, 6, UNI_CJKEXTF } /* iscjkextf */,
- { 1, 3424, 1129, 3, 3, UNI_UCAS } /* inucas */,
- { 516, 5508, 10135, 14, 3, UNI_PATSYN } /* patternsyntax=yes */,
- { 5, 8688, 27, 3, 2, UNI_ALL } /* isall */,
- { 0, 184, 8876, 2, 6, UNI_GOTH } /* isgothic */,
- { 0, 5739, 36, 13, 1, UNI_GRBASE } /* graphemebase=t */,
- { 2, 9556, 4305, 4, 5, UNI_GCB__XX } /* gcb=other */,
- { 21, 21, 1677, 2, 23, UNI_LATINEXTADDITIONAL } /* inlatinextendedadditional */,
- { 0, 184, 400, 2, 6, UNI_CF } /* isformat */,
- { 261, 7739, 0, 8, 0, UNI_ids_values_index } /* idstart= */,
- { 0, 21, 8906, 2, 6, UNI_KANBUN } /* inkanbun */,
- { 37, 21, 5214, 2, 14, UNI_KANGXI } /* inkangxiradicals */,
- { 334, 9235, 26, 5, 1, UNI_CWCM } /* cwcm=y */,
- { 37, 8780, 6253, 6, 12, UNI_KHMERSYMBOLS } /* block=khmersymbols */,
- { 0, 10048, 7883, 3, 8, UNI_NV__1_SLASH_320 } /* nv=3.13e-03 */,
- { 36, 4033, 10170, 16, 2, UNI_CASEDLETTER } /* generalcategory=l_ */,
- { 0, 184, 4369, 2, 16, UNI_SYRIACSUP } /* issyriacsupplement */,
- { 5, 8688, 7506, 4, 7, UNI_ARABICPFB } /* isarabicpfb */,
- { 0, 7739, 0, 7, 0, UNI_IDS } /* idstart */,
- { 1, 184, 6939, 2, 11, UNI_SORA } /* issorasompeng */,
- { 0, 7088, 2449, 10, 20, UNI_BC__LRE } /* bidiclass=lefttorightembedding */,
- { 0, 1966, 2646, 22, 19, UNI_INSC__CONSONANTHEADLETTER } /* indicsyllabiccategory=consonantheadletter */,
- { 135, 7218, 1822, 10, 2, UNI_LB__NL } /* linebreak=nl */,
- { 1, 9768, 2409, 4, 10, UNI_GLAG } /* scx=glagolitic */,
- { 0, 8589, 4883, 7, 15, UNI_SARB } /* script=oldsoutharabian */,
- { 207, 3133, 0, 5, 0, UNI_EMOJI } /* emoji */,
- { 5, 9444, 7754, 4, 2, UNI_AGE__11 } /* age=11 */,
- { 0, 4033, 4583, 16, 15, UNI_PD } /* generalcategory=dashpunctuation */,
- { 32, 5522, 0, 14, 0, UNI_PHONETICEXTSUP } /* phoneticextsup */,
- { 128, 9508, 1755, 4, 2, UNI_CCC__DB } /* ccc=db */,
- { 0, 9488, 6840, 4, 11, UNI_INNANDINAGARI } /* blk=nandinagari */,
- { 392, 1537, 3481, 24, 12, UNI_INPC__LEFTANDRIGHT } /* indicpositionalcategory=leftandright */,
- { 0, 8997, 26, 5, 1, UNI_TERM } /* term=y */,
- { 1, 9277, 9748, 3, 4, UNI_RJNG } /* sc=rjng */,
- { 0, 1790, 3, 22, 1, -UNI_CWCM } /* changeswhencasemapped=f */,
- { 0, 184, 6133, 2, 12, UNI_ETHIOPICEXTA } /* isethiopicexta */,
- { 26, 3241, 0, 18, 0, UNI_GEORGIANSUP } /* georgiansupplement */,
- { 0, 2280, 7659, 4, 7, UNI_PERM } /* isoldpermic */,
- { 8, 5986, 7782, 13, 1, UNI_NV__3 } /* numericvalue=3 */,
- { 9, 9488, 9330, 4, 5, UNI_INTAILE } /* blk=taile */,
- { 33, 6229, 3, 12, 1, -UNI_JOINC } /* joincontrol=f */,
- { 128, 184, 1879, 3, 18, UNI_CJKCOMPATIDEOGRAPHS } /* iscjkcompatideographs */,
- { 3, 10030, 6708, 3, 11, UNI_JT__C } /* jt=joincausing */,
- { 141, 6231, 570, 3, 29, UNI_CJKEXTC } /* incjkunifiedideographsextensionc */,
- { 32, 9277, 3025, 3, 8, UNI_CHER } /* sc=cherokee */,
- { 0, 3836, 8344, 17, 4, UNI_BENG } /* scriptextensions=beng */,
- { 2, 3151, 9836, 18, 4, UNI_EPRES } /* emojipresentation=true */,
- { 0, 9262, 751, 3, 2, UNI_SB__CL } /* sb=cl */,
- { 37, 6231, 8373, 3, 6, UNI_CJKEXTD } /* incjkextd */,
- { 4, 3836, 9793, 18, 3, UNI_SOGO } /* scriptextensions=sogo */,
- { 1, 3836, 8456, 17, 7, UNI_KNDA } /* scriptextensions=kannada */,
- { 4, 9488, 4385, 4, 6, UNI_INTANGUT } /* blk=tangut */,
- { 17, 8428, 0, 7, 0, UNI_GRAN } /* grantha */,
- { 48, 10006, 3, 3, 1, -UNI_DI } /* di=f */,
- { 32, 1552, 1529, 11, 7, UNI__PERL_SURROGATE } /* category=surrogate */,
- { 18, 10313, 3379, 7, 5, UNI_XPOSIXBLANK } /* ishorizspace */,
- { 0, 8589, 3025, 7, 4, UNI_CHER } /* script=cher */,
- { 193, 9270, 6983, 5, 11, UNI_INPC__TOPANDRIGHT } /* inpc=topandright */,
- { 0, 2779, 10135, 19, 3, UNI_IDST } /* idstrinaryoperator=yes */,
- { 0, 10027, 5424, 3, 14, UNI_JG__MANICHAEANYODH } /* jg=manichaeanyodh */,
- { 1, 10296, 468, 3, 4, UNI_P } /* ispunct */,
- { 0, 9508, 9161, 5, 4, UNI_CCC__26 } /* ccc=ccc26 */,
- { 290, 5986, 8744, 13, 2, UNI_NV__70 } /* numericvalue=70 */,
- { 1, 7218, 4898, 10, 15, UNI_LB__OP } /* linebreak=openpunctuation */,
- { 0, 7088, 3205, 10, 18, UNI_BC__FSI } /* bidiclass=firststrongisolate */,
- { 3, 6025, 0, 12, 0, UNI_ALPHABETICPF } /* alphabeticpf */,
- { 0, 9768, 9065, 4, 5, UNI_ADLM } /* scx=adlam */,
- { 257, 8519, 0, 9, 0, UNI_NFKDQC__N } /* nfkdqc=no */,
- { 4, 9488, 3785, 4, 10, UNI_INMANICHAEAN } /* blk=manichaean */,
- { 0, 117, 447, 3, 17, UNI_IDEOGRAPHICSYMBOLS } /* inideographicsymbols */,
- { 10, 8780, 867, 6, 28, UNI_PHONETICEXTSUP } /* block=phoneticextensionssupplement */,
- { 33, 8589, 9008, 7, 6, UNI_SC__THAA } /* script=thaana */,
- { 1, 2314, 0, 3, 0, UNI_XPOSIXXDIGIT } /* hex */,
- { 1, 9508, 7754, 4, 2, UNI_CCC__11 } /* ccc=11 */,
- { 34, 5791, 5908, 13, 13, UNI_JG__MANICHAEANTAW } /* joininggroup=manichaeantaw */,
- { 0, 3836, 8123, 17, 4, UNI_BUGI } /* scriptextensions=bugi */,
- { 118, 10048, 7891, 3, 8, UNI_NV__1_SLASH_3 } /* nv=3.33e-01 */,
- { 0, 8575, 1025, 7, 2, -UNI_PATSYN } /* patsyn=no */,
- { 0, 184, 1087, 2, 26, UNI_PCM } /* isprependedconcatenationmark */,
- { 0, 9015, 10135, 5, 3, UNI_IDEO } /* ideo=yes */,
- { 75, 10296, 468, 3, 10, UNI_P } /* ispunctuation */,
- { 108, 5986, 8756, 13, 5, UNI_NV__90000 } /* numericvalue=90000 */,
- { 32, 8589, 8652, 7, 7, UNI_TAVT } /* script=taiviet */,
- { 4, 2224, 1320, 3, 24, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* insymbolsandpictographsexta */,
- { 90, 8435, 9255, 7, 5, -UNI_GRBASE } /* grbase=false */,
- { 30, 1552, 3277, 9, 18, UNI_PI } /* category=initialpunctuation */,
- { 0, 8344, 0, 4, 0, UNI_BENG } /* beng */,
- { 1, 3169, 0, 8, 0, UNI_ETHI } /* ethiopic */,
- { 1, 1417, 8714, 24, 2, UNI_CCC__30 } /* canonicalcombiningclass=30 */,
- { 0, 9508, 16, 4, 1, UNI_CCC__B } /* ccc=b */,
- { 593, 9488, 9325, 4, 5, UNI_INRUNIC } /* blk=runic */,
- { 1, 7218, 5298, 10, 14, UNI_LB__BK } /* linebreak=mandatorybreak */,
- { 96, 3439, 0, 12, 0, UNI_SMALLKANAEXT } /* smallkanaext */,
- { 321, 3836, 9002, 17, 6, UNI_TELU } /* scriptextensions=telugu */,
- { 2, 9768, 9504, 4, 4, UNI_CANS } /* scx=cans */,
- { 338, 8688, 9453, 3, 3, UNI_AHOM } /* isahom */,
- { 0, 7318, 7826, 10, 4, UNI_IN__12 } /* presentin=12.0 */,
- { 518, 8688, 980, 3, 26, UNI_ALPHABETICPF } /* isalphabeticpresentationforms */,
- { 0, 2409, 0, 10, 0, UNI_GLAG } /* glagolitic */,
- { 1, 9508, 8813, 4, 3, UNI_CCC__122 } /* ccc=122 */,
- { 185, 1417, 1219, 24, 3, UNI_CCC__214 } /* canonicalcombiningclass=ata */,
- { 47, 9444, 9970, 4, 3, UNI_AGE__5_DOT_2 } /* age=5.2 */,
- { 70, 9260, 9836, 5, 4, UNI_IDSB } /* idsb=true */,
- { 416, 2224, 2913, 3, 18, UNI_SUNDANESESUP } /* insundanesesupplement */,
- { 0, 10048, 5648, 3, 5, UNI_NV__10000 } /* nv=10000 */,
- { 0, 10027, 5869, 3, 13, UNI_JG__MANICHAEANMEM } /* jg=manichaeanmem */,
- { 72, 10132, 5585, 3, 2, UNI_WB__EB } /* wb=eb */,
- { 1, 6241, 6752, 12, 11, UNI_JT__L } /* joiningtype=leftjoining */,
- { 129, 7318, 7877, 10, 2, UNI_IN__13 } /* presentin=13 */,
- { 0, 8575, 26, 7, 1, UNI_PATSYN } /* patsyn=y */,
- { 68, 9270, 4988, 5, 15, UNI_LOE } /* inpc=visualorderleft */,
- { 8, 5674, 9836, 13, 4, UNI_BIDIM } /* bidimirrored=true */,
- { 1, 5746, 0, 5, 0, UNI_EBASE } /* ebase */,
- { 7, 10027, 9280, 3, 5, UNI_JG__KHAPH } /* jg=khaph */,
- { 0, 9277, 8924, 3, 4, UNI_LEPC } /* sc=lepc */,
- { 0, 9277, 9676, 3, 4, UNI_NARB } /* sc=narb */,
- { 0, 21, 5284, 2, 14, UNI_LISUSUP } /* inlisusupplement */,
- { 2, 10024, 3349, 3, 18, UNI_ZP } /* gc=paragraphseparator */,
- { 84, 10126, 3493, 3, 18, UNI_VO__TR } /* vo=transformedrotated */,
- { 0, 9277, 9660, 3, 4, UNI_SC__MLYM } /* sc=mlym */,
- { 192, 9768, 3895, 5, 3, UNI_SGNW } /* scx=sgnw */,
- { 25, 6229, 0, 12, 0, UNI_joinc_values_index } /* joincontrol= */,
- { 0, 184, 1769, 3, 20, UNI_CWCF } /* ischangeswhencasefolded */,
- { 0, 8780, 1901, 7, 21, UNI_INDICNUMBERFORMS } /* block=commonindicnumberforms */,
- { 0, 9768, 7666, 4, 9, UNI_ORKH } /* scx=oldturkic */,
- { 5, 8780, 8463, 6, 7, UNI_KALI } /* block=kayahli */,
- { 6, 8147, 9836, 8, 4, UNI_EXTPICT } /* extpict=true */,
- { 0, 8780, 2245, 6, 11, UNI_INMEETEIMAYEK } /* block=meeteimayek */,
- { 3, 9277, 9692, 3, 4, UNI_NSHU } /* sc=nshu */,
- { 2, 2245, 0, 11, 0, UNI_MTEI } /* meeteimayek */,
- { 512, 9508, 8807, 4, 3, UNI_CCC__118 } /* ccc=118 */,
- { 135, 9270, 2988, 5, 19, UNI_INPC__TOPANDBOTTOMANDLEFT } /* inpc=topandbottomandleft */,
- { 1, 2485, 0, 4, 0, UNI_MONG } /* mong */,
- { 0, 9488, 3457, 4, 11, UNI_TAIXUANJING } /* blk=taixuanjing */,
- { 150, 10048, 5648, 3, 8, UNI_NV__10000000 } /* nv=10000000 */,
- { 2, 9488, 8888, 4, 6, UNI_INHATRAN } /* blk=hatran */,
- { 0, 2280, 8562, 3, 6, UNI_OSMA } /* isosmanya */,
- { 1, 9488, 9860, 4, 3, UNI_INVAI } /* blk=vai */,
- { 714, 9277, 8901, 4, 5, UNI_SC__KTHI } /* sc=kaithi */,
- { 69, 10296, 3599, 3, 3, UNI_PAUC } /* ispauc */,
- { 184, 1552, 8855, 9, 2, UNI_CF } /* category=cf */,
- { 2, 10027, 7045, 3, 2, UNI_JG__FE } /* jg=fe */,
- { 198, 10048, 7859, 3, 3, UNI_NV__200 } /* nv=200 */,
- { 288, 10027, 10072, 3, 3, UNI_JG__TAH } /* jg=tah */,
- { 128, 3097, 1253, 18, 7, UNI_DT__INIT } /* decompositiontype=initial */,
- { 1, 3836, 8912, 17, 6, UNI_KHOJ } /* scriptextensions=khojki */,
- { 0, 3836, 7684, 17, 4, UNI_PAUC } /* scriptextensions=pauc */,
- { 0, 5242, 0, 14, 0, UNI_LATINEXTC } /* latinextendedc */,
- { 11, 2569, 0, 20, 1, UNI_VO__U } /* verticalorientation=u */,
- { 585, 5986, 9108, 13, 2, UNI_NV__15 } /* numericvalue=15 */,
- { 0, 3241, 0, 4, 0, UNI_GEOR } /* geor */,
- { 0, 1013, 0, 5, 0, UNI_GREK } /* greek */,
- { 0, 184, 5214, 2, 14, UNI_KANGXI } /* iskangxiradicals */,
- { 12, 4943, 0, 15, 0, UNI_TITLE } /* titlecaseletter */,
- { 11, 9596, 6763, 4, 11, UNI_LB__H3 } /* hst=lvtsyllable */,
- { 0, 5324, 8487, 5, 4, UNI_INMANDAIC } /* inmandaic */,
- { 0, 6576, 0, 11, 0, UNI_alpha_values_index } /* alphabetic= */,
- { 0, 3836, 8428, 17, 7, UNI_GRAN } /* scriptextensions=grantha */,
- { 513, 5986, 8744, 13, 3, UNI_NV__700 } /* numericvalue=700 */,
- { 0, 10009, 567, 3, 2, UNI_DT__NB } /* dt=nb */,
- { 4, 8589, 8219, 7, 8, UNI_SC__JAVA } /* script=javanese */,
- { 9, 8780, 2054, 6, 22, UNI_MODIFIERLETTERS } /* block=spacingmodifierletters */,
- { 516, 3457, 0, 18, 0, UNI_TAIXUANJING } /* taixuanjingsymbols */,
- { 4, 7088, 6037, 10, 12, UNI_BC__AL } /* bidiclass=arabicletter */,
- { 128, 9488, 382, 4, 32, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* blk=egyptianhieroglyphformatcontrols */,
- { 25, 148, 0, 35, 0, UNI_DIACRITICALSSUP } /* combiningdiacriticalmarkssupplement */,
- { 0, 1552, 2061, 9, 14, UNI_LM } /* category=modifierletter */,
- { 2, 9015, 9836, 5, 4, UNI_IDEO } /* ideo=true */,
- { 2, 7325, 10090, 3, 3, UNI_IN__4 } /* in=v40 */,
- { 1, 7158, 9255, 10, 5, -UNI_DIA } /* diacritic=false */,
- { 2, 3836, 9580, 17, 4, UNI_HANO } /* scriptextensions=hano */,
- { 7, 8780, 1585, 6, 23, UNI_BYZANTINEMUSIC } /* block=byzantinemusicalsymbols */,
- { 0, 5791, 5172, 13, 14, UNI_JG__HAMZAONHEHGOAL } /* joininggroup=hamzaonhehgoal */,
- { 13, 2280, 6483, 4, 10, UNI_HUNG } /* isoldhungarian */,
- { 0, 8589, 9636, 7, 4, UNI_SC__LINB } /* script=linb */,
- { 0, 8780, 78, 6, 35, UNI_ARABICMATH } /* block=arabicmathematicalalphabeticsymbols */,
- { 0, 8344, 0, 7, 0, UNI_BENG } /* bengali */,
- { 0, 8291, 0, 8, 0, UNI_TAGB } /* tagbanwa */,
- { 3, 10132, 2444, 3, 2, UNI_LB__HL } /* wb=hl */,
- { 0, 8589, 9860, 7, 4, UNI_VAI } /* script=vaii */,
- { 320, 8589, 8936, 7, 6, UNI_LYCI } /* script=lycian */,
- { 0, 9260, 26, 5, 1, UNI_IDSB } /* idsb=y */,
- { 20, 9524, 0, 3, 0, UNI_CWT } /* cwt */,
- { 512, 8978, 26, 6, 1, UNI__PERL_PATWS } /* patws=y */,
- { 256, 9892, 0, 4, 0, UNI_QAAI } /* zinh */,
- { 3, 10048, 8732, 3, 4, UNI_NV__5000 } /* nv=5000 */,
- { 0, 9488, 7514, 5, 8, UNI_INBHAIKSUKI } /* blk=bhaiksuki */,
- { 99, 9488, 2950, 4, 19, UNI_SUPARROWSB } /* blk=supplementalarrowsb */,
- { 11, 8786, 0, 4, 0, UNI_CARI } /* cari */,
- { 2, 2779, 9255, 19, 5, -UNI_IDST } /* idstrinaryoperator=false */,
- { 2, 5986, 7765, 13, 1, UNI_NV__2 } /* numericvalue=2 */,
- { 129, 184, 8498, 2, 7, UNI_MULT } /* ismultani */,
- { 3, 10027, 3802, 3, 17, UNI_JG__MANICHAEANHUNDRED } /* jg=manichaeanhundred */,
- { 27, 4033, 1899, 16, 2, UNI_PC } /* generalcategory=pc */,
- { 2, 10024, 6862, 3, 11, UNI_NO } /* gc=othernumber */,
- { 0, 184, 4257, 2, 16, UNI_MISCMATHSYMBOLSB } /* ismiscmathsymbolsb */,
- { 65, 3887, 0, 17, 0, UNI_SUTTONSIGNWRITING } /* suttonsignwriting */,
- { 0, 8519, 10135, 7, 3, UNI_DT__NONE } /* nfkdqc=yes */,
- { 47, 7249, 2, 5, 1, UNI_CARI } /* iscari */,
- { 0, 8888, 0, 6, 0, UNI_HATR } /* hatran */,
- { 0, 3097, 8948, 18, 6, UNI_DT__NAR } /* decompositiontype=narrow */,
- { 3, 9488, 9305, 4, 5, UNI_INNUSHU } /* blk=nushu */,
- { 12, 9277, 9609, 4, 3, UNI_KITS } /* sc=kits */,
- { 0, 9346, 26, 4, 1, UNI_IDC } /* idc=y */,
- { 0, 6928, 26, 11, 1, UNI_SD } /* softdotted=y */,
- { 1, 184, 3374, 2, 10, UNI_XPOSIXSPACE } /* iswhitespace */,
- { 290, 6554, 1, 11, 1, -UNI_IDC } /* idcontinue=n */,
- { 48, 7438, 1822, 10, 2, UNI_WB__NL } /* wordbreak=nl */,
- { 53, 4916, 1287, 4, 2, UNI_TELU } /* istelu */,
- { 97, 184, 2141, 3, 7, UNI_CYRL } /* iscyrillic */,
- { 513, 9277, 4928, 3, 5, UNI_SC__TAML } /* sc=tamil */,
- { 6, 3836, 8477, 17, 4, UNI_MAKA } /* scriptextensions=maka */,
- { 1, 6205, 1, 12, 1, -UNI_IDEO } /* ideographic=n */,
- { 153, 184, 5606, 2, 14, UNI_SUPPUNCTUATION } /* issuppunctuation */,
- { 2, 7358, 0, 4, 0, UNI_SAUR } /* saur */,
- { 4, 9508, 9937, 4, 3, UNI_CCC__AL } /* ccc=228 */,
- { 0, 8780, 5200, 6, 14, UNI_KANASUP } /* block=kanasupplement */,
- { 9, 9277, 8179, 3, 8, UNI_SC__GURU } /* sc=gurmukhi */,
- { 0, 9488, 9002, 4, 6, UNI_INTELUGU } /* blk=telugu */,
- { 6, 6231, 8380, 3, 6, UNI_CJKEXTE } /* incjkexte */,
- { 249, 10333, 0, 3, 0, UNI_S } /* iss */,
- { 1, 8589, 9740, 7, 4, UNI_SC__QAAI } /* script=qaai */,
- { 1, 9508, 9176, 5, 4, UNI_CCC__29 } /* ccc=ccc29 */,
- { 7, 10033, 533, 3, 2, UNI_LB__NS } /* lb=ns */,
- { 24, 7540, 0, 8, 0, UNI_EXT } /* extender */,
- { 1, 8780, 3115, 6, 10, UNI_INDEVANAGARI } /* block=devanagari */,
- { 1, 9277, 78, 3, 6, UNI_SC__ARAB } /* sc=arabic */,
- { 3, 9768, 9720, 4, 4, UNI_PHLP } /* scx=phlp */,
- { 0, 8589, 9452, 7, 4, UNI_AHOM } /* script=ahom */,
- { 10, 8414, 0, 4, 0, UNI_ELBA } /* elba */,
- { 0, 9508, 5648, 4, 2, UNI_CCC__10 } /* ccc=10 */,
- { 0, 10024, 1217, 3, 2, UNI_SK } /* gc=sk */,
- { 4, 10182, 10279, 6, 9, UNI__PERL_QUOTEMETA } /* _perl_quotemeta */,
- { 0, 4033, 38, 16, 2, UNI_XPOSIXDIGIT } /* generalcategory=nd */,
- { 131, 3853, 0, 16, 0, UNI_STERM } /* sentenceterminal */,
- { 37, 184, 5804, 2, 13, UNI_KANAEXTA } /* iskanaextendeda */,
- { 357, 861, 0, 6, 0, UNI_ARROWS } /* arrows */,
- { 133, 184, 8147, 2, 7, UNI_EXTPICT } /* isextpict */,
- { 64, 3836, 8638, 17, 7, UNI_TGLG } /* scriptextensions=tagalog */,
- { 1, 21, 2330, 3, 19, UNI_INANATOLIANHIEROGLYPHS } /* inanatolianhieroglyphs */,
- { 7, 184, 7438, 2, 4, UNI_XPOSIXWORD } /* isword */,
- { 2, 184, 7630, 2, 9, UNI_TALU } /* isnewtailue */,
- { 35, 5986, 9913, 13, 3, UNI_NV__2_SLASH_3 } /* numericvalue=2/3 */,
- { 146, 9350, 26, 5, 1, UNI_XIDS } /* xids=y */,
- { 0, 8780, 2120, 7, 20, UNI_CJKRADICALSSUP } /* block=cjkradicalssupplement */,
- { 33, 1922, 0, 12, 0, UNI_DIACRITICALS } /* diacriticals */,
- { 0, 1552, 10178, 9, 2, UNI_ZP } /* category=zp */,
- { 0, 10027, 8918, 3, 6, UNI_JG__LAMADH } /* jg=lamadh */,
- { 0, 8400, 0, 7, 0, UNI_compex_values_index } /* compex= */,
- { 215, 7278, 0, 10, 0, UNI_XPEO } /* oldpersian */,
- { 256, 4916, 4386, 3, 5, UNI_TANG } /* istangut */,
- { 516, 3853, 36, 17, 1, UNI_STERM } /* sentenceterminal=t */,
- { 0, 10333, 2288, 3, 3, UNI_SINH } /* issinh */,
- { 0, 9277, 3893, 3, 11, UNI_SGNW } /* sc=signwriting */,
- { 171, 1269, 1, 25, 1, -UNI_COMPEX } /* fullcompositionexclusion=n */,
- { 311, 9270, 2555, 5, 14, UNI_INPC__BOTTOMANDRIGHT } /* inpc=bottomandright */,
- { 0, 2224, 6962, 3, 10, UNI_SUPERANDSUB } /* insuperandsub */,
- { 314, 3241, 0, 11, 0, UNI_GEORGIANSUP } /* georgiansup */,
- { 0, 5791, 5869, 13, 13, UNI_JG__MANICHAEANMEM } /* joininggroup=manichaeanmem */,
- { 152, 5986, 8035, 13, 8, UNI_NV__3_SLASH_4 } /* numericvalue=7.50e-01 */,
- { 288, 8858, 0, 6, 0, UNI_ecomp_values_index } /* ecomp= */,
- { 0, 7739, 10135, 8, 3, UNI_IDS } /* idstart=yes */,
- { 1, 8780, 2912, 6, 19, UNI_SUNDANESESUP } /* block=sundanesesupplement */,
- { 512, 10060, 9255, 3, 5, -UNI_RI } /* ri=false */,
- { 4, 8589, 8477, 7, 4, UNI_MAKA } /* script=maka */,
- { 0, 9616, 0, 4, 0, UNI_KTHI } /* kthi */,
- { 35, 8589, 8442, 7, 7, UNI_SC__HANO } /* script=hanunoo */,
- { 603, 5791, 7148, 13, 10, UNI_JG__DALATHRISH } /* joininggroup=dalathrish */,
- { 2, 7088, 1, 11, 1, UNI_BC__BN } /* bidiclass=bn */,
- { 265, 2779, 0, 4, 0, UNI_IDST } /* idst */,
- { 28, 10048, 8035, 3, 8, UNI_NV__3_SLASH_4 } /* nv=7.50e-01 */,
- { 0, 10033, 495, 3, 7, UNI_LB__NU } /* lb=numeric */,
- { 0, 4989, 58, 3, 4, UNI_UIDEO } /* isuideo */,
- { 13, 8768, 9255, 6, 5, -UNI_BIDIC } /* bidic=false */,
- { 292, 3836, 2409, 17, 4, UNI_GLAG } /* scriptextensions=glag */,
- { 1, 9277, 9652, 3, 4, UNI_MERC } /* sc=merc */,
- { 1, 9277, 8666, 3, 7, UNI_SC__TIRH } /* sc=tirhuta */,
- { 64, 9277, 8291, 3, 4, UNI_SC__TAGB } /* sc=tagb */,
- { 13, 4916, 8639, 3, 6, UNI_TGLG } /* istagalog */,
- { 0, 9277, 8470, 3, 7, UNI_SC__LINA } /* sc=lineara */,
- { 5, 184, 5830, 2, 13, UNI_LOWSURROGATES } /* islowsurrogates */,
- { 714, 184, 2855, 2, 9, UNI_MONG } /* ismongolian */,
- { 73, 9070, 1, 5, 1, -UNI_POSIXXDIGIT } /* ahex=n */,
- { 36, 9488, 1018, 4, 5, UNI_MUSIC } /* blk=music */,
- { 65, 5746, 1025, 6, 2, -UNI_EBASE } /* ebase=no */,
- { 161, 10288, 7438, 8, 4, UNI_XPOSIXWORD } /* isxposixword */,
- { 25, 8107, 0, 8, 0, UNI_BALI } /* balinese */,
- { 2, 4613, 0, 15, 0, UNI_DIACRITICALSSUP } /* diacriticalssup */,
- { 0, 9596, 7720, 4, 9, UNI_GCB__V } /* hst=voweljamo */,
- { 212, 8780, 7684, 6, 9, UNI_INPAUCINHAU } /* block=paucinhau */,
- { 1, 9262, 1823, 3, 5, UNI_SB__LO } /* sb=lower */,
- { 0, 8498, 0, 4, 0, UNI_MULT } /* mult */,
- { 0, 2245, 0, 21, 0, UNI_MEETEIMAYEKEXT } /* meeteimayekextensions */,
- { 0, 9275, 2608, 5, 19, UNI_INSC__BRAHMIJOININGNUMBER } /* insc=brahmijoiningnumber */,
- { 543, 9488, 3052, 4, 9, UNI_HALFMARKS } /* blk=halfmarks */,
- { 0, 3097, 2785, 18, 3, UNI_DT__NAR } /* decompositiontype=nar */,
- { 16, 4916, 5850, 3, 3, UNI_TAML } /* istaml */,
- { 0, 3717, 7338, 17, 10, UNI_IDENTIFIERSTATUS__RESTRICTED } /* identifierstatus=restricted */,
- { 3, 4129, 0, 16, 0, UNI_LATIN1 } /* latin1supplement */,
- { 0, 3836, 2329, 17, 20, UNI_HLUW } /* scriptextensions=anatolianhieroglyphs */,
- { 0, 10024, 4245, 3, 10, UNI_SM } /* gc=mathsymbol */,
- { 389, 184, 1294, 2, 25, UNI_SUPERANDSUB } /* issuperscriptsandsubscripts */,
- { 0, 5674, 10135, 13, 3, UNI_BIDIM } /* bidimirrored=yes */,
- { 73, 4542, 1633, 4, 21, UNI_GEOMETRICSHAPESEXT } /* ingeometricshapesextended */,
- { 1, 9768, 9860, 4, 4, UNI_VAI } /* scx=vaii */,
- { 1024, 6576, 9255, 11, 5, -UNI_XPOSIXALPHA } /* alphabetic=false */,
- { 0, 5228, 0, 14, 0, UNI_LATINEXTB } /* latinextendedb */,
- { 0, 21, 3421, 2, 18, UNI_RUMI } /* inruminumeralsymbols */,
- { 0, 5986, 7826, 13, 2, UNI_NV__12 } /* numericvalue=12 */,
- { 513, 9488, 4129, 4, 16, UNI_LATIN1 } /* blk=latin1supplement */,
- { 1, 10291, 7438, 5, 4, UNI_POSIXWORD } /* posixword */,
- { 0, 8960, 26, 6, 1, UNI_NFCQC__Y } /* nfcqc=y */,
- { 199, 9508, 9472, 4, 4, UNI_WB__EB } /* ccc=atbl */,
- { 2, 9277, 8610, 3, 7, UNI_SIDD } /* sc=siddham */,
- { 0, 10009, 9868, 3, 4, UNI_EA__F } /* dt=wide */,
- { 0, 10048, 7469, 3, 8, UNI_NV__1_SLASH_2 } /* nv=5.00e-01 */,
- { 16, 5986, 8756, 13, 2, UNI_NV__90 } /* numericvalue=90 */,
- { 3, 2760, 36, 19, 1, UNI_GCB__T } /* hangulsyllabletype=t */,
- { 31, 9568, 0, 4, 0, UNI_GREK } /* grek */,
- { 0, 184, 8421, 2, 7, UNI_ELYM } /* iselymaic */,
- { 5, 3937, 0, 8, 0, UNI_BOPO } /* bopomofo */,
- { 815, 8680, 0, 7, 0, UNI_ZZZZ } /* unknown */,
- { 3, 5324, 0, 12, 0, UNI_INMANICHAEAN } /* inmanichaean */,
- { 2, 3836, 1222, 17, 4, UNI_KANA } /* scriptextensions=kana */,
- { 0, 9285, 0, 4, 0, UNI_LIMB } /* limb */,
- { 71, 184, 3115, 2, 13, UNI_DEVANAGARIEXT } /* isdevanagariext */,
- { 518, 1505, 3827, 4, 5, UNI_INGRANTHA } /* ingrantha */,
- { 151, 10033, 5298, 3, 14, UNI_LB__BK } /* lb=mandatorybreak */,
- { 0, 8589, 9816, 7, 4, UNI_TAVT } /* script=tavt */,
- { 67, 9488, 9245, 4, 5, UNI_INDOGRA } /* blk=dogra */,
- { 0, 3836, 9752, 17, 4, UNI_ROHG } /* scriptextensions=rohg */,
- { 32, 9270, 2549, 5, 12, UNI_INPC__TOPANDBOTTOM } /* inpc=topandbottom */,
- { 0, 184, 5003, 2, 15, UNI_ZANB } /* iszanabazarsquare */,
- { 6, 8203, 0, 8, 0, UNI_JAMOEXTA } /* jamoexta */,
- { 1, 5037, 0, 8, 0, UNI_XPOSIXXDIGIT } /* hexdigit */,
- { 48, 9335, 0, 4, 0, UNI_TAKR } /* takr */,
- { 0, 1537, 1924, 4, 10, UNI_DIACRITICALS } /* indiacriticals */,
- { 1, 9444, 7877, 4, 2, UNI_AGE__13 } /* age=13 */,
- { 0, 727, 0, 2, 0, UNI_MN } /* mn */,
- { 1, 9488, 2969, 4, 19, UNI_SUPARROWSC } /* blk=supplementalarrowsc */,
- { 1, 5986, 8027, 13, 8, UNI_NV__15_SLASH_2 } /* numericvalue=7.50e+00 */,
- { 34, 4838, 0, 16, 0, UNI_NFKCQC__N } /* nfkcquickcheck=n */,
- { 0, 4401, 0, 9, 0, UNI_TANGUTSUP } /* tangutsup */,
- { 32, 8589, 8131, 7, 8, UNI_SC__DUPL } /* script=duployan */,
- { 21, 9275, 4913, 5, 15, UNI_INSC__REGISTERSHIFTER } /* insc=registershifter */,
- { 52, 9528, 0, 3, 0, UNI_CWU } /* cwu */,
- { 2, 184, 6061, 2, 11, UNI_BIDIC } /* isbidicontrol */,
- { 0, 10033, 3969, 3, 16, UNI_LB__CP } /* lb=closeparenthesis */,
- { 128, 9488, 4703, 4, 15, UNI_INIMPERIALARAMAIC } /* blk=imperialaramaic */,
- { 84, 3529, 26, 18, 1, UNI_VS } /* variationselector=y */,
- { 0, 8582, 0, 7, 0, UNI_PHAG } /* phagspa */,
- { 545, 9277, 8491, 3, 4, UNI_MARC } /* sc=marc */,
- { 0, 10048, 8083, 3, 8, UNI_NV__11_SLASH_12 } /* nv=9.17e-01 */,
- { 0, 9768, 78, 4, 6, UNI_ARAB } /* scx=arabic */,
- { 4, 9452, 0, 4, 0, UNI_AHOM } /* ahom */,
- { 5, 184, 4241, 2, 16, UNI_MISCMATHSYMBOLSA } /* ismiscmathsymbolsa */,
- { 129, 9488, 3169, 4, 11, UNI_ETHIOPICSUP } /* blk=ethiopicsup */,
- { 0, 6229, 0, 5, 0, UNI_JOINC } /* joinc */,
- { 0, 9277, 5284, 3, 4, UNI_LISU } /* sc=lisu */,
- { 928, 8315, 0, 8, 0, UNI_UGAR } /* ugaritic */,
- { 0, 1552, 400, 9, 6, UNI_CF } /* category=format */,
- { 0, 10048, 9994, 3, 3, UNI_NV__9_SLASH_2 } /* nv=9/2 */,
- { 279, 10048, 7811, 3, 8, UNI_NV__1_SLASH_6 } /* nv=1.67e-01 */,
- { 0, 8978, 9255, 6, 5, -UNI__PERL_PATWS } /* patws=false */,
- { 581, 3836, 1677, 17, 5, UNI_LATN } /* scriptextensions=latin */,
- { 562, 9488, 1441, 4, 24, UNI_CJKSYMBOLS } /* blk=cjksymbolsandpunctuation */,
- { 32, 1417, 8819, 24, 3, UNI_CCC__129 } /* canonicalcombiningclass=129 */,
- { 1, 5452, 17, 15, 1, UNI_COMPEX } /* nfcquickcheck=no */,
- { 128, 9277, 9504, 3, 4, UNI_CANS } /* sc=cans */,
- { 0, 10006, 0, 3, 0, UNI_di_values_index } /* di= */,
- { 2, 8780, 6277, 6, 7, UNI_MAHJONG } /* block=mahjong */,
- { 145, 8780, 5186, 6, 14, UNI_HIGHSURROGATES } /* block=highsurrogates */,
- { 0, 1417, 9188, 24, 2, UNI_CCC__31 } /* canonicalcombiningclass=31 */,
- { 0, 1856, 9836, 22, 4, UNI_CWU } /* changeswhenuppercased=true */,
- { 139, 9277, 9588, 3, 4, UNI_HMNG } /* sc=hmng */,
- { 716, 9265, 26, 5, 1, UNI_IDST } /* idst=y */,
- { 12, 4688, 2023, 15, 9, UNI_IDENTIFIERTYPE__TECHNICAL } /* identifiertype=technical */,
- { 0, 7218, 10164, 10, 2, UNI_GCB__V } /* linebreak=jv */,
- { 1, 10182, 1527, 6, 9, UNI__PERL_SURROGATE } /* _perl_surrogate */,
- { 0, 2224, 350, 3, 32, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* insupplementalsymbolsandpictographs */,
- { 0, 1505, 5161, 5, 11, UNI_INGREEK } /* ingreekandcoptic */,
- { 65, 8589, 4868, 7, 15, UNI_NARB } /* script=oldnortharabian */,
- { 0, 8589, 9656, 7, 4, UNI_MIAO } /* script=miao */,
- { 301, 184, 4583, 2, 15, UNI_PD } /* isdashpunctuation */,
- { 1, 9508, 9171, 5, 4, UNI_CCC__28 } /* ccc=ccc28 */,
- { 1, 4113, 67, 3, 4, UNI_VSSUP } /* invssup */,
- { 390, 2280, 4306, 3, 15, UNI_PO } /* isotherpunctuation */,
- { 138, 10024, 1465, 3, 13, UNI_M } /* gc=combiningmark */,
- { 1, 9508, 7877, 4, 2, UNI_CCC__13 } /* ccc=13 */,
- { 4, 184, 4129, 2, 6, UNI_LATIN1 } /* islatin1 */,
- { 147, 6241, 6529, 12, 12, UNI_JT__R } /* joiningtype=rightjoining */,
- { 2, 6231, 2667, 4, 9, UNI_COUNTINGROD } /* incountingrod */,
- { 2, 2280, 3332, 3, 17, UNI_ORNAMENTALDINGBATS } /* isornamentaldingbats */,
- { 0, 5986, 7771, 13, 8, UNI_NV__1_SLASH_80 } /* numericvalue=1.25e-02 */,
- { 0, 1417, 24, 24, 1, UNI_CCC__L } /* canonicalcombiningclass=l */,
- { 2, 9020, 3, 6, 1, -UNI_XPOSIXUPPER } /* upper=f */,
- { 3, 1746, 1, 22, 1, UNI_BPT__N } /* bidipairedbrackettype=n */,
- { 1, 6730, 0, 11, 0, UNI_KATAKANAEXT } /* katakanaext */,
- { 1, 9880, 0, 4, 0, UNI_YI } /* yiii */,
- { 321, 9556, 406, 4, 7, UNI_GCB__CN } /* gcb=control */,
- { 0, 9488, 3169, 4, 8, UNI_INETHIOPIC } /* blk=ethiopic */,
- { 0, 9768, 8291, 4, 4, UNI_TAGB } /* scx=tagb */,
- { 0, 10009, 8846, 3, 6, UNI_DT__ENC } /* dt=circle */,
- { 0, 4033, 1910, 16, 2, UNI_CN } /* generalcategory=cn */,
- { 0, 9508, 8811, 5, 5, UNI_CCC__122 } /* ccc=ccc122 */,
- { 0, 9768, 7684, 4, 9, UNI_PAUC } /* scx=paucinhau */,
- { 0, 2224, 8632, 3, 6, UNI_SUPPUAB } /* insuppuab */,
- { 38, 9768, 8407, 4, 7, UNI_DSRT } /* scx=deseret */,
- { 1, 8589, 3937, 7, 8, UNI_SC__BOPO } /* script=bopomofo */,
- { 0, 10027, 756, 3, 3, UNI_JG__DAL } /* jg=dal */,
- { 555, 435, 0, 5, 0, UNI__PERL_NCHAR } /* nchar */,
- { 19, 3836, 8428, 17, 4, UNI_GRAN } /* scriptextensions=gran */,
- { 0, 3097, 0, 18, 0, UNI_dt_values_index } /* decompositiontype= */,
- { 3, 7076, 7099, 3, 9, UNI_BOXDRAWING } /* inboxdrawing */,
- { 2, 1988, 0, 22, 0, UNI_loe_values_index } /* logicalorderexception= */,
- { 641, 1966, 3953, 22, 16, UNI_INSC__CANTILLATIONMARK } /* indicsyllabiccategory=cantillationmark */,
- { 0, 8870, 10135, 6, 3, UNI_EPRES } /* epres=yes */,
- { 523, 1790, 1025, 22, 2, -UNI_CWCM } /* changeswhencasemapped=no */,
- { 0, 9488, 2287, 4, 7, UNI_INSINHALA } /* blk=sinhala */,
- { 16, 1087, 26, 27, 1, UNI_PCM } /* prependedconcatenationmark=y */,
- { 0, 8780, 1561, 6, 24, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* block=supsymbolsandpictographs */,
- { 0, 2665, 0, 11, 0, UNI_COUNTINGROD } /* countingrod */,
- { 0, 1417, 9106, 25, 4, UNI_CCC__15 } /* canonicalcombiningclass=ccc15 */,
- { 1, 8780, 8876, 6, 6, UNI_INGOTHIC } /* block=gothic */,
- { 0, 21, 7458, 2, 10, UNI_YIRADICALS } /* inyiradicals */,
- { 4, 3836, 9680, 17, 4, UNI_NBAT } /* scriptextensions=nbat */,
- { 1, 8780, 2429, 6, 20, UNI_ININSCRIPTIONALPAHLAVI } /* block=inscriptionalpahlavi */,
- { 9, 10003, 9836, 3, 4, UNI_CI } /* ci=true */,
- { 768, 7076, 5816, 3, 7, UNI_INBALINESE } /* inbalinese */,
- { 5, 2779, 0, 19, 0, UNI_idst_values_index } /* idstrinaryoperator= */,
- { 0, 8930, 26, 6, 1, UNI_XPOSIXLOWER } /* lower=y */,
- { 0, 9277, 4448, 3, 4, UNI_BAMU } /* sc=bamu */,
- { 14, 7318, 7754, 10, 2, UNI_IN__11 } /* presentin=11 */,
- { 0, 3115, 0, 18, 0, UNI_DEVANAGARIEXT } /* devanagariextended */,
- { 0, 9095, 0, 5, 0, UNI_BUHD } /* buhid */,
- { 32, 5452, 0, 15, 0, UNI_COMPEX } /* nfcquickcheck=n */,
- { 0, 1746, 0, 22, 0, UNI_bpt_values_index } /* bidipairedbrackettype= */,
- { 22, 3374, 9255, 11, 5, -UNI_XPOSIXSPACE } /* whitespace=false */,
- { 27, 8688, 2330, 3, 19, UNI_HLUW } /* isanatolianhieroglyphs */,
- { 40, 5497, 0, 11, 0, UNI_MC } /* spacingmark */,
- { 2, 9768, 9608, 4, 4, UNI_KITS } /* scx=kits */,
- { 43, 2784, 1395, 4, 22, UNI_ARABICPFB } /* inarabicpresentationformsb */,
- { 0, 9768, 6840, 4, 4, UNI_NAND } /* scx=nand */,
- { 104, 3836, 7188, 17, 10, UNI_KHAR } /* scriptextensions=kharoshthi */,
- { 23, 5986, 9392, 13, 4, UNI_NV__11_SLASH_2 } /* numericvalue=11/2 */,
- { 320, 10048, 9372, 3, 4, UNI_NV__1_SLASH_40 } /* nv=1/40 */,
- { 0, 9768, 6277, 4, 4, UNI_MAHJ } /* scx=mahj */,
- { 6, 9997, 407, 3, 2, UNI_BC__ON } /* bc=on */,
- { 72, 6205, 9255, 12, 5, -UNI_IDEO } /* ideographic=false */,
- { 258, 184, 6277, 2, 4, UNI_MAHJ } /* ismahj */,
- { 192, 7540, 1025, 9, 2, -UNI_EXT } /* extender=no */,
- { 0, 9277, 9892, 3, 4, UNI_SC__QAAI } /* sc=zinh */,
- { 9, 2912, 0, 4, 0, UNI_SUND } /* sund */,
- { 0, 8688, 1007, 3, 26, UNI_ANCIENTGREEKMUSIC } /* isancientgreekmusicalnotation */,
- { 379, 9488, 719, 4, 30, UNI_CUNEIFORMNUMBERS } /* blk=cuneiformnumbersandpunctuation */,
- { 0, 21, 8470, 2, 7, UNI_INLINEARA } /* inlineara */,
- { 0, 9277, 9624, 3, 4, UNI_LAO } /* sc=laoo */,
- { 1, 5791, 5364, 13, 4, UNI_JG__HETH } /* joininggroup=heth */,
- { 1, 3025, 0, 4, 0, UNI_CHER } /* cher */,
- { 38, 10048, 9907, 3, 3, UNI_NV__1_SLASH_7 } /* nv=1/7 */,
- { 0, 2224, 7399, 3, 9, UNI_SUPARROWSC } /* insuparrowsc */,
- { 6, 7325, 10093, 3, 3, UNI_IN__4_DOT_1 } /* in=v41 */,
- { 1, 10024, 48, 3, 1, UNI_P } /* gc=p */,
- { 0, 1921, 0, 2, 0, UNI_SD } /* sd */,
- { 0, 9488, 42, 4, 9, UNI_CJKCOMPAT } /* blk=cjkcompat */,
- { 0, 5791, 9784, 13, 4, UNI_JG__SHIN } /* joininggroup=shin */,
- { 0, 8589, 9544, 7, 4, UNI_DIAK } /* script=diak */,
- { 105, 9997, 426, 3, 2, UNI_BC__ES } /* bc=es */,
- { 459, 3904, 36, 17, 1, UNI_UIDEO } /* unifiedideograph=t */,
- { 40, 9345, 1025, 5, 2, -UNI_XIDC } /* xidc=no */,
- { 0, 5986, 7877, 13, 2, UNI_NV__13 } /* numericvalue=13 */,
- { 0, 1677, 0, 14, 0, UNI_LATINEXTA } /* latinextendeda */,
- { 0, 7218, 96, 10, 10, UNI_LB__AL } /* linebreak=alphabetic */,
- { 0, 10009, 2785, 3, 3, UNI_DT__NAR } /* dt=nar */,
- { 572, 283, 0, 33, 0, UNI_MISCMATHSYMBOLSB } /* miscellaneousmathematicalsymbolsb */,
- { 2, 9768, 4883, 4, 15, UNI_SARB } /* scx=oldsoutharabian */,
- { 0, 8526, 0, 7, 0, UNI_NB } /* noblock */,
- { 20, 9824, 0, 4, 0, UNI_TGLG } /* tglg */,
- { 0, 9768, 8561, 4, 4, UNI_OSMA } /* scx=osma */,
- { 0, 9285, 0, 5, 0, UNI_LIMB } /* limbu */,
- { 6, 9277, 4145, 3, 7, UNI_SC__LINB } /* sc=linearb */,
- { 330, 9275, 4508, 5, 15, UNI_INSC__CONSONANTKILLER } /* insc=consonantkiller */,
- { 0, 5986, 4134, 13, 1, UNI_NV__1 } /* numericvalue=1 */,
- { 20, 9640, 3, 4, 1, -UNI_LOE } /* loe=f */,
- { 0, 3836, 4001, 17, 7, UNI_CPRT } /* scriptextensions=cypriot */,
- { 0, 6972, 0, 11, 0, UNI_SYLO } /* sylotinagri */,
- { 306, 5986, 8710, 13, 4, UNI_NV__6000 } /* numericvalue=6000 */,
- { 11, 5746, 9255, 6, 5, -UNI_EBASE } /* ebase=false */,
- { 962, 184, 6397, 2, 12, UNI_MATHALPHANUM } /* ismathalphanum */,
- { 1, 5032, 0, 13, 0, UNI_POSIXXDIGIT } /* asciihexdigit */,
- { 0, 9277, 1013, 3, 5, UNI_SC__GREK } /* sc=greek */,
- { 0, 1979, 10171, 10, 1, UNI_CASEDLETTER } /* category=l_ */,
- { 0, 10126, 471, 3, 2, UNI_VO__TU } /* vo=tu */,
- { 0, 9508, 4912, 4, 2, UNI_CCC__0 } /* ccc=nr */,
- { 0, 9832, 0, 4, 0, UNI_TIBT } /* tibt */,
- { 1, 8435, 36, 7, 1, UNI_GRBASE } /* grbase=t */,
- { 0, 9508, 756, 4, 2, UNI_CCC__DA } /* ccc=da */,
- { 4, 8211, 0, 8, 0, UNI_JAMOEXTB } /* jamoextb */,
- { 125, 1537, 4988, 24, 15, UNI_LOE } /* indicpositionalcategory=visualorderleft */,
- { 0, 10048, 7843, 3, 8, UNI_NV__1_SLASH_4 } /* nv=2.50e-01 */,
- { 0, 5200, 0, 7, 0, UNI_KANASUP } /* kanasup */,
- { 0, 8780, 861, 6, 6, UNI_ARROWS } /* block=arrows */,
- { 1, 6805, 842, 6, 25, UNI_MISCARROWS } /* inmiscellaneoussymbolsandarrows */,
- { 0, 9596, 24, 4, 1, UNI_GCB__L } /* hst=l */,
- { 0, 5986, 8714, 13, 5, UNI_NV__30000 } /* numericvalue=30000 */,
- { 8, 9277, 4385, 3, 4, UNI_TANG } /* sc=tang */,
- { 0, 8575, 10135, 7, 3, UNI_PATSYN } /* patsyn=yes */,
- { 0, 1218, 0, 26, 0, UNI_KATAKANAEXT } /* katakanaphoneticextensions */,
- { 3, 5986, 5649, 13, 1, UNI_NV__0 } /* numericvalue=0 */,
- { 64, 10027, 5368, 3, 14, UNI_JG__MANICHAEANKAPH } /* jg=manichaeankaph */,
- { 0, 10048, 9409, 3, 3, UNI_NV__5_SLASH_2 } /* nv=5/2 */,
- { 776, 184, 5843, 2, 9, UNI_MLYM } /* ismalayalam */,
- { 0, 4116, 2430, 3, 19, UNI_PHLI } /* isinscriptionalpahlavi */,
- { 557, 9444, 7826, 4, 2, UNI_AGE__12 } /* age=12 */,
- { 9, 10009, 10066, 3, 3, UNI_DT__SML } /* dt=sml */,
- { 0, 9488, 4808, 4, 15, UNI_MISCPICTOGRAPHS } /* blk=miscpictographs */,
- { 0, 8589, 9652, 7, 4, UNI_MERC } /* script=merc */,
- { 1, 8589, 8315, 7, 4, UNI_UGAR } /* script=ugar */,
- { 3, 8589, 3025, 7, 8, UNI_CHER } /* script=cherokee */,
- { 0, 2529, 3, 20, 1, -UNI_TERM } /* terminalpunctuation=f */,
- { 66, 9262, 8996, 3, 5, UNI_SB__ST } /* sb=sterm */,
- { 0, 6012, 0, 13, 0, UNI_VERTICALFORMS } /* verticalforms */,
- { 0, 8990, 0, 6, 0, UNI_RJNG } /* rejang */,
- { 0, 9488, 6385, 4, 12, UNI_INMASARAMGONDI } /* blk=masaramgondi */,
- { 0, 8960, 10135, 6, 3, UNI_NFCQC__Y } /* nfcqc=yes */,
- { 4, 9520, 36, 4, 1, UNI_CWL } /* cwl=t */,
- { 75, 1222, 0, 4, 0, UNI_KANA } /* kana */,
- { 41, 4033, 341, 16, 2, UNI_PE } /* generalcategory=pe */,
- { 11, 9820, 0, 4, 0, UNI_TFNG } /* tfng */,
- { 0, 2288, 4068, 5, 13, UNI_HALFANDFULLFORMS } /* inhalfandfullforms */,
- { 10, 5060, 1025, 14, 2, -UNI_CI } /* caseignorable=no */,
- { 0, 9262, 4305, 3, 5, UNI_SB__XX } /* sb=other */,
- { 90, 7155, 3053, 3, 8, UNI_HALFMARKS } /* ishalfmarks */,
- { 404, 10290, 5040, 6, 5, UNI_XPOSIXDIGIT } /* xposixdigit */,
- { 0, 10027, 7711, 3, 9, UNI_JG__SYRIACWAW } /* jg=syriacwaw */,
- { 672, 7098, 0, 10, 0, UNI_BOXDRAWING } /* boxdrawing */,
- { 1, 9768, 1013, 4, 5, UNI_GREK } /* scx=greek */,
- { 0, 9444, 7987, 4, 3, UNI_AGE__6_DOT_2 } /* age=6.2 */,
- { 0, 3133, 1025, 18, 2, -UNI_EBASE } /* emojimodifierbase=no */,
- { 16, 1812, 9836, 22, 4, UNI_CWL } /* changeswhenlowercased=true */,
- { 1, 117, 447, 3, 31, UNI_IDEOGRAPHICSYMBOLS } /* inideographicsymbolsandpunctuation */,
- { 87, 1417, 8727, 24, 2, UNI_CCC__32 } /* canonicalcombiningclass=32 */,
- { 546, 9768, 7675, 4, 9, UNI_PALM } /* scx=palmyrene */,
- { 32, 9768, 3241, 4, 4, UNI_GEOR } /* scx=geor */,
- { 0, 9764, 0, 4, 0, UNI_SARB } /* sarb */,
- { 0, 10033, 73, 3, 2, UNI_EMOD } /* lb=em */,
- { 4, 3836, 9335, 17, 4, UNI_TAKR } /* scriptextensions=takr */,
- { 1097, 10291, 5039, 5, 6, UNI_POSIXXDIGIT } /* posixxdigit */,
- { 128, 7249, 3583, 4, 15, UNI_UCAS } /* iscanadiansyllabics */,
- { 268, 8589, 7308, 7, 10, UNI_PHNX } /* script=phoenician */,
- { 36, 184, 2485, 2, 4, UNI_MONG } /* ismong */,
- { 0, 8694, 0, 6, 0, UNI_XPOSIXSPACE } /* wspace */,
- { 2, 9508, 7826, 4, 2, UNI_CCC__12 } /* ccc=12 */,
- { 15, 1587, 0, 1, 0, UNI_Z } /* z */,
- { 10, 10048, 9436, 3, 4, UNI_NV__7_SLASH_12 } /* nv=7/12 */,
- { 2, 9488, 2308, 4, 6, UNI_YIJING } /* blk=yijing */,
- { 0, 2182, 10174, 21, 2, UNI_GCB__XX } /* graphemeclusterbreak=xx */,
- { 0, 1746, 17, 22, 1, UNI_BPT__O } /* bidipairedbrackettype=o */,
- { 0, 3836, 493, 17, 3, UNI_HAN } /* scriptextensions=han */,
- { 1, 1087, 9836, 27, 4, UNI_PCM } /* prependedconcatenationmark=true */,
- { 0, 7418, 9255, 10, 5, -UNI_XPOSIXUPPER } /* uppercase=false */,
- { 4, 1114, 3, 26, 1, -UNI_CWKCF } /* changeswhennfkccasefolded=f */,
- { 0, 7028, 9881, 3, 3, UNI_YI } /* isyiii */,
- { 4, 4033, 45, 16, 2, UNI_CO } /* generalcategory=co */,
- { 0, 4916, 2077, 3, 21, UNI_TRANSPORTANDMAP } /* istransportandmapsymbols */,
- { 0, 8780, 8203, 6, 8, UNI_JAMOEXTA } /* block=jamoexta */,
- { 7, 7155, 1116, 3, 3, UNI_HANG } /* ishang */,
- { 89, 8780, 2308, 6, 6, UNI_YIJING } /* block=yijing */,
- { 21, 184, 8171, 2, 8, UNI_GUJR } /* isgujarati */,
- { 1024, 9768, 8924, 4, 4, UNI_LEPC } /* scx=lepc */,
- { 5, 10129, 0, 3, 0, UNI_vs_values_index } /* vs= */,
- { 3, 9664, 0, 4, 0, UNI_MRO } /* mroo */,
- { 0, 8780, 2245, 6, 21, UNI_MEETEIMAYEKEXT } /* block=meeteimayekextensions */,
- { 0, 6576, 1025, 11, 2, -UNI_XPOSIXALPHA } /* alphabetic=no */,
- { 29, 184, 382, 2, 32, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* isegyptianhieroglyphformatcontrols */,
- { 2, 9270, 868, 3, 17, UNI_PHONETICEXT } /* inphoneticextensions */,
- { 9, 9015, 0, 5, 0, UNI_ideo_values_index } /* ideo= */,
- { 0, 10033, 7448, 3, 10, UNI_LB__WJ } /* lb=wordjoiner */,
- { 7, 7239, 0, 2, 0, UNI_VS } /* vs */,
- { 352, 9488, 3938, 5, 15, UNI_BOPOMOFOEXT } /* blk=bopomofoextended */,
- { 0, 9488, 2477, 4, 3, UNI_PUA } /* blk=pua */,
- { 7, 184, 2817, 2, 4, UNI_MERO } /* ismero */,
- { 0, 5960, 0, 13, 0, UNI_MISCTECHNICAL } /* misctechnical */,
- { 160, 8840, 0, 6, 0, UNI_CAKM } /* chakma */,
- { 521, 5726, 0, 13, 0, UNI_ME } /* enclosingmark */,
- { 23, 1417, 9101, 25, 4, UNI_CCC__14 } /* canonicalcombiningclass=ccc14 */,
- { 2, 8688, 727, 4, 2, UNI_ARMN } /* isarmn */,
- { 2, 184, 2469, 2, 20, UNI_HMNP } /* isnyiakengpuachuehmong */,
- { 757, 10290, 1867, 6, 5, UNI_XPOSIXUPPER } /* xposixupper */,
- { 8, 10132, 125, 3, 2, UNI_LB__CR } /* wb=cr */,
- { 161, 9768, 4001, 4, 7, UNI_CPRT } /* scx=cypriot */,
- { 0, 184, 1442, 3, 9, UNI_CJKSYMBOLS } /* iscjksymbols */,
- { 0, 9768, 9548, 4, 4, UNI_DSRT } /* scx=dsrt */,
- { 0, 3836, 6792, 18, 3, UNI_SAMR } /* scriptextensions=samr */,
- { 144, 4542, 3226, 5, 15, UNI_INPUNCTUATION } /* ingeneralpunctuation */,
- { 634, 4116, 1308, 3, 2, UNI_IDS } /* isids */,
- { 10, 9346, 1025, 4, 2, -UNI_IDC } /* idc=no */,
- { 32, 184, 8421, 2, 4, UNI_ELYM } /* iselym */,
- { 4, 9275, 8099, 5, 8, UNI_INSC__AVAGRAHA } /* insc=avagraha */,
- { 132, 8575, 36, 7, 1, UNI_PATSYN } /* patsyn=t */,
- { 0, 3836, 8091, 17, 8, UNI_ARMN } /* scriptextensions=armenian */,
- { 0, 5791, 6565, 13, 11, UNI_JG__AFRICANNOON } /* joininggroup=africannoon */,
- { 1, 2288, 2724, 4, 8, UNI_JAMO } /* inhanguljamo */,
- { 0, 5452, 47, 14, 1, UNI_NFCQC__M } /* nfcquickcheck=m */,
- { 1, 9684, 0, 4, 0, UNI_NEWA } /* newa */,
- { 549, 9488, 867, 4, 11, UNI_PHONETICEXT } /* blk=phoneticext */,
- { 513, 8762, 1025, 6, 2, -UNI_XPOSIXALPHA } /* alpha=no */,
- { 455, 8780, 5804, 6, 13, UNI_KANAEXTA } /* block=kanaextendeda */,
- { 1, 184, 3937, 2, 11, UNI_BOPOMOFOEXT } /* isbopomofoext */,
- { 783, 5986, 9050, 13, 5, UNI_NV__1_SLASH_160 } /* numericvalue=1/160 */,
- { 7, 10024, 3277, 3, 18, UNI_PI } /* gc=initialpunctuation */,
- { 0, 9262, 339, 3, 2, UNI_SB__LO } /* sb=lo */,
- { 0, 2161, 26, 21, 1, UNI_EXTPICT } /* extendedpictographic=y */,
- { 1140, 7249, 3600, 4, 15, UNI_AGHB } /* iscaucasianalbanian */,
- { 3, 9768, 9320, 4, 5, UNI_OSGE } /* scx=osage */,
- { 0, 5060, 0, 13, 0, UNI_CI } /* caseignorable */,
- { 147, 10048, 9376, 3, 3, UNI_NV__1_SLASH_6 } /* nv=1/6 */,
- { 301, 7027, 0, 11, 0, UNI_YISYLLABLES } /* yisyllables */,
- { 9, 10033, 7268, 3, 10, UNI_LB__NS } /* lb=nonstarter */,
- { 192, 5508, 9255, 14, 5, -UNI_PATSYN } /* patternsyntax=false */,
- { 1, 8954, 26, 6, 1, UNI__PERL_NCHAR } /* nchar=y */,
- { 1, 5986, 5648, 13, 6, UNI_NV__100000 } /* numericvalue=100000 */,
- { 5, 2224, 7389, 3, 9, UNI_SUPARROWSB } /* insuparrowsb */,
- { 0, 10024, 25, 3, 1, UNI_S } /* gc=s */,
- { 0, 5986, 7835, 13, 8, UNI_NV__5_SLASH_2 } /* numericvalue=2.50e+00 */,
- { 303, 5986, 1249, 13, 3, UNI_NV__NAN } /* numericvalue=nan */,
- { 1, 1768, 36, 22, 1, UNI_CWCF } /* changeswhencasefolded=t */,
- { 0, 8688, 7497, 4, 7, UNI_ARABICPFA } /* isarabicpfa */,
- { 264, 8780, 183, 6, 20, UNI_MISCSYMBOLS } /* block=miscellaneoussymbols */,
- { 0, 9277, 6796, 3, 11, UNI_MEDF } /* sc=medefaidrin */,
- { 672, 184, 1466, 3, 23, UNI_DIACRITICALSFORSYMBOLS } /* iscombiningmarksforsymbols */,
- { 3, 9997, 3756, 3, 3, UNI_BC__NSM } /* bc=nsm */,
- { 4, 2569, 18, 20, 1, UNI_VO__R } /* verticalorientation=r */,
- { 3, 9508, 10166, 4, 2, UNI_CCC__8 } /* ccc=kv */,
- { 0, 8762, 0, 6, 0, UNI_alpha_values_index } /* alpha= */,
- { 13, 9768, 8498, 4, 4, UNI_MULT } /* scx=mult */,
- { 2, 5986, 5648, 13, 2, UNI_NV__10 } /* numericvalue=10 */,
- { 0, 8864, 9836, 6, 4, UNI_EMOJI } /* emoji=true */,
- { 0, 2224, 7359, 3, 9, UNI_INSAURASHTRA } /* insaurashtra */,
- { 514, 9444, 10111, 4, 3, UNI_AGE__6_DOT_2 } /* age=v62 */,
- { 1, 184, 2703, 2, 19, UNI_ENCLOSEDALPHANUMSUP } /* isenclosedalphanumsup */,
- { 0, 9768, 9305, 4, 5, UNI_NSHU } /* scx=nushu */,
- { 152, 1746, 4898, 22, 4, UNI_BPT__O } /* bidipairedbrackettype=open */,
- { 15, 184, 183, 2, 34, UNI_MISCPICTOGRAPHS } /* ismiscellaneoussymbolsandpictographs */,
- { 617, 7438, 7603, 10, 9, UNI_WB__ML } /* wordbreak=midletter */,
- { 0, 5986, 8019, 13, 8, UNI_NV__2_SLASH_3 } /* numericvalue=6.67e-01 */,
- { 2306, 9277, 9700, 3, 4, UNI_OLCK } /* sc=olck */,
- { 2184, 9488, 349, 4, 33, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* blk=supplementalsymbolsandpictographs */,
- { 3, 5324, 8479, 4, 5, UNI_INMAKASAR } /* inmakasar */,
- { 1, 9277, 9500, 3, 4, UNI_SC__CAKM } /* sc=cakm */,
- { 2, 3836, 1176, 18, 3, UNI_SORA } /* scriptextensions=sora */,
- { 0, 8589, 7292, 8, 3, UNI_SC__SOGD } /* script=sogd */,
- { 0, 3836, 9038, 17, 6, UNI_YEZI } /* scriptextensions=yezidi */,
- { 0, 5791, 5944, 13, 3, UNI_JG__WAW } /* joininggroup=waw */,
- { 22, 6505, 0, 12, 0, UNI_PHAISTOS } /* phaistosdisc */,
- { 9, 8858, 9255, 6, 5, -UNI_ECOMP } /* ecomp=false */,
- { 1, 9020, 9836, 6, 4, UNI_XPOSIXUPPER } /* upper=true */,
- { 355, 2760, 911, 19, 1, UNI_GCB__V } /* hangulsyllabletype=v */,
- { 0, 1417, 8010, 24, 2, UNI_CCC__36 } /* canonicalcombiningclass=36 */,
- { 0, 9277, 9820, 3, 4, UNI_TFNG } /* sc=tfng */,
- { 1, 1537, 6983, 24, 11, UNI_INPC__TOPANDRIGHT } /* indicpositionalcategory=topandright */,
- { 0, 9277, 8, 4, 3, UNI_SC__KANA } /* sc=kana */,
- { 1, 184, 4718, 2, 15, UNI_LOWERCASELETTER } /* islowercaseletter */,
- { 1, 2529, 0, 4, 0, UNI_TERM } /* term */,
- { 90, 9768, 5171, 4, 4, UNI_CHAM } /* scx=cham */,
- { 1157, 8589, 3079, 7, 4, UNI_SC__COPT } /* script=copt */,
- { 1116, 9488, 2931, 4, 19, UNI_SUPARROWSA } /* blk=supplementalarrowsa */,
- { 1, 8589, 4928, 7, 5, UNI_SC__TAML } /* script=tamil */,
- { 2148, 4598, 0, 15, 0, UNI_DIACRITICALSEXT } /* diacriticalsext */,
- { 10, 9277, 8652, 3, 7, UNI_TAVT } /* sc=taiviet */,
- { 0, 9277, 6181, 3, 12, UNI_SC__GONG } /* sc=gunjalagondi */,
- { 531, 9277, 4448, 3, 5, UNI_BAMU } /* sc=bamum */,
- { 49, 6420, 9316, 3, 4, UNI_INORIYA } /* inoriya */,
- { 1, 10048, 7859, 3, 8, UNI_NV__20000000 } /* nv=20000000 */,
- { 0, 10048, 7851, 3, 8, UNI_NV__1_SLASH_40 } /* nv=2.50e-02 */,
- { 6, 9768, 8786, 4, 6, UNI_CARI } /* scx=carian */,
- { 1, 5986, 7814, 13, 1, UNI_NV__7 } /* numericvalue=7 */,
- { 1, 4033, 3277, 16, 18, UNI_PI } /* generalcategory=initialpunctuation */,
- { 0, 4916, 4386, 3, 15, UNI_TANGUTCOMPONENTS } /* istangutcomponents */,
- { 253, 8652, 0, 7, 0, UNI_TAVT } /* taiviet */,
- { 0, 9488, 908, 4, 14, UNI_PUA } /* blk=privateusearea */,
- { 0, 10288, 10303, 8, 5, UNI_XPOSIXBLANK } /* isxposixblank */,
- { 0, 10048, 7763, 3, 8, UNI_NV__1_SLASH_8 } /* nv=1.25e-01 */,
- { 26, 9488, 3421, 4, 4, UNI_RUMI } /* blk=rumi */,
- { 4, 9488, 4928, 4, 8, UNI_TAMILSUP } /* blk=tamilsup */,
- { 1540, 7088, 3313, 10, 18, UNI_BC__LRI } /* bidiclass=lefttorightisolate */,
- { 0, 3151, 10135, 18, 3, UNI_EPRES } /* emojipresentation=yes */,
- { 0, 4033, 2268, 16, 2, UNI_PD } /* generalcategory=pd */,
- { 2343, 4113, 4974, 3, 14, UNI_VEDICEXT } /* invedicextensions */,
- { 100, 9768, 8936, 4, 4, UNI_LYCI } /* scx=lyci */,
- { 0, 3836, 8291, 17, 8, UNI_TAGB } /* scriptextensions=tagbanwa */,
- { 0, 467, 0, 11, 0, UNI_P } /* punctuation */,
- { 17, 10048, 8710, 3, 3, UNI_NV__600 } /* nv=600 */,
- { 0, 3836, 8421, 17, 4, UNI_ELYM } /* scriptextensions=elym */,
- { 66, 8589, 8924, 7, 4, UNI_LEPC } /* script=lepc */,
- { 2, 9230, 1, 5, 1, -UNI_CWCF } /* cwcf=n */,
- { 6, 9488, 8617, 4, 7, UNI_INSOYOMBO } /* blk=soyombo */,
- { 0, 2608, 0, 6, 0, UNI_BRAH } /* brahmi */,
- { 357, 184, 6829, 2, 11, UNI_MYANMAREXTB } /* ismyanmarextb */,
- { 2136, 9444, 9982, 4, 3, UNI_AGE__6_DOT_3 } /* age=6.3 */,
- { 1655, 9768, 9688, 4, 3, UNI_NKO } /* scx=nko */,
- { 1541, 1417, 7890, 24, 2, UNI_CCC__33 } /* canonicalcombiningclass=33 */,
- { 1, 8774, 0, 6, 0, UNI_bidim_values_index } /* bidim= */,
- { 0, 9768, 9245, 4, 5, UNI_DOGR } /* scx=dogra */,
- { 12, 9508, 9108, 4, 2, UNI_CCC__15 } /* ccc=15 */,
- { 0, 10027, 9784, 3, 4, UNI_JG__SHIN } /* jg=shin */,
- { 280, 8589, 8659, 7, 7, UNI_TIBT } /* script=tibetan */,
- { 17, 10033, 1822, 3, 2, UNI_LB__NL } /* lb=nl */,
- { 1, 3904, 1025, 17, 2, -UNI_UIDEO } /* unifiedideograph=no */,
- { 227, 10048, 9988, 3, 3, UNI_NV__7_SLASH_8 } /* nv=7/8 */,
- { 0, 9768, 3025, 4, 4, UNI_CHER } /* scx=cher */,
- { 2, 3836, 9652, 17, 4, UNI_MERC } /* scriptextensions=merc */,
- { 0, 1417, 18, 24, 1, UNI_CCC__R } /* canonicalcombiningclass=r */,
- { 1, 3836, 8219, 17, 8, UNI_JAVA } /* scriptextensions=javanese */,
- { 0, 4989, 513, 3, 15, UNI_UIDEO } /* isunifiedideograph */,
- { 3, 184, 4478, 2, 4, UNI_BRAI } /* isbrai */,
- { 17, 184, 5158, 2, 14, UNI_INGREEK } /* isgreekandcoptic */,
- { 304, 3836, 7428, 17, 10, UNI_WARA } /* scriptextensions=warangciti */,
- { 832, 2779, 9836, 19, 4, UNI_IDST } /* idstrinaryoperator=true */,
- { 192, 9768, 9285, 4, 4, UNI_LIMB } /* scx=limb */,
- { 5, 3853, 0, 17, 0, UNI_sterm_values_index } /* sentenceterminal= */,
- { 0, 10024, 3985, 3, 16, UNI_PE } /* gc=closepunctuation */,
- { 0, 7088, 5494, 10, 14, UNI_BC__NSM } /* bidiclass=nonspacingmark */,
- { 1232, 4542, 3243, 4, 16, UNI_GEORGIANSUP } /* ingeorgiansupplement */,
- { 1026, 8780, 8211, 6, 8, UNI_JAMOEXTB } /* block=jamoextb */,
- { 8, 9556, 1910, 4, 2, UNI_GCB__CN } /* gcb=cn */,
- { 1, 3133, 3, 18, 1, -UNI_EBASE } /* emojimodifierbase=f */,
- { 0, 8589, 8912, 7, 4, UNI_SC__KHOJ } /* script=khoj */,
- { 0, 184, 8470, 2, 7, UNI_LINA } /* islineara */,
- { 1, 7218, 10030, 10, 2, UNI_GCB__T } /* linebreak=jt */,
- { 136, 10291, 3379, 5, 5, UNI_POSIXSPACE } /* posixspace */,
- { 26, 4116, 4704, 3, 14, UNI_ARMI } /* isimperialaramaic */,
- { 0, 5592, 0, 14, 0, UNI_ZS } /* spaceseparator */,
- { 39, 10048, 7468, 3, 9, UNI_NV___MINUS_1_SLASH_2 } /* nv=-5.00e-01 */,
- { 2405, 8984, 9255, 6, 5, -UNI_QMARK } /* qmark=false */,
- { 1, 8589, 9880, 7, 4, UNI_SC__YI } /* script=yiii */,
- { 0, 21, 6730, 2, 11, UNI_KATAKANAEXT } /* inkatakanaext */,
- { 776, 184, 8477, 2, 7, UNI_MAKA } /* ismakasar */,
- { 1, 2224, 2288, 3, 20, UNI_SINHALAARCHAICNUMBERS } /* insinhalaarchaicnumbers */,
- { 1540, 10296, 8583, 3, 6, UNI_PHAG } /* isphagspa */,
- { 19, 9508, 8793, 5, 4, UNI_CCC__10 } /* ccc=ccc10 */,
- { 0, 9270, 5551, 3, 13, UNI_INPSALTERPAHLAVI } /* inpsalterpahlavi */,
- { 36, 2032, 1025, 22, 2, -UNI__PERL_NCHAR } /* noncharactercodepoint=no */,
- { 23, 9488, 4145, 4, 16, UNI_LINEARBIDEOGRAMS } /* blk=linearbideograms */,
- { 617, 3379, 26, 6, 1, UNI_XPOSIXSPACE } /* space=y */,
- { 137, 184, 2912, 2, 19, UNI_SUNDANESESUP } /* issundanesesupplement */,
- { 770, 9508, 2809, 4, 2, UNI_CCC__1 } /* ccc=ov */,
- { 0, 1417, 9116, 25, 4, UNI_CCC__17 } /* canonicalcombiningclass=ccc17 */,
- { 271, 5986, 7907, 13, 8, UNI_NV__3_SLASH_8 } /* numericvalue=3.75e-01 */,
- { 1028, 8780, 4554, 7, 14, UNI_CONTROLPICTURES } /* block=controlpictures */,
- { 400, 8780, 8421, 6, 7, UNI_INELYMAIC } /* block=elymaic */,
- { 0, 9270, 2449, 5, 4, UNI_INPC__LEFT } /* inpc=left */,
- { 0, 8688, 9066, 3, 4, UNI_ADLM } /* isadlam */,
- { 0, 8589, 9748, 7, 4, UNI_RJNG } /* script=rjng */,
- { 0, 9230, 9255, 5, 5, -UNI_CWCF } /* cwcf=false */,
- { 3, 5116, 9255, 14, 5, -UNI_EMOD } /* emojimodifier=false */,
- { 259, 5578, 49, 14, 2, UNI_SB__AT } /* sentencebreak=at */,
- { 0, 9277, 7621, 3, 9, UNI_NBAT } /* sc=nabataean */,
- { 2, 184, 3098, 2, 5, UNI_ECOMP } /* isecomp */,
- { 36, 3836, 9872, 17, 4, UNI_XPEO } /* scriptextensions=xpeo */,
- { 1808, 10027, 2223, 3, 3, UNI_JG__AIN } /* jg=ain */,
- { 0, 4116, 3735, 3, 16, UNI_INDICSIYAQNUMBERS } /* isindicsiyaqnumbers */,
- { 0, 10033, 2640, 3, 2, UNI_LB__BA } /* lb=ba */,
- { 0, 10346, 8682, 4, 5, UNI_ZZZZ } /* isunknown */,
- { 1, 9277, 9560, 3, 4, UNI_SC__GONG } /* sc=gong */,
- { 14, 5508, 1, 14, 1, -UNI_PATSYN } /* patternsyntax=n */,
- { 1, 10009, 8163, 3, 8, UNI_DT__FRA } /* dt=fraction */,
- { 13, 8589, 382, 7, 4, UNI_EGYP } /* script=egyp */,
- { 0, 2182, 5746, 21, 5, UNI_WB__EB } /* graphemeclusterbreak=ebase */,
- { 542, 184, 7368, 2, 10, UNI_SMALLFORMS } /* issmallforms */,
- { 0, 9240, 1, 5, 1, -UNI_DASH } /* dash=n */,
- { 0, 3836, 6840, 17, 4, UNI_NAND } /* scriptextensions=nand */,
- { 0, 9277, 6840, 3, 11, UNI_SC__NAND } /* sc=nandinagari */,
- { 0, 8780, 1723, 6, 23, UNI_SUPPUNCTUATION } /* block=supplementalpunctuation */,
- { 0, 9492, 17, 4, 1, UNI_BPT__O } /* bpt=o */,
- { 1, 3600, 0, 4, 0, UNI_UCAS } /* ucas */,
- { 329, 5578, 495, 14, 2, UNI_SB__NU } /* sentencebreak=nu */,
- { 0, 8780, 10051, 6, 3, UNI_OCR } /* block=ocr */,
- { 1295, 10296, 6506, 3, 7, UNI_PHAISTOS } /* isphaistos */,
- { 72, 3836, 9804, 17, 4, UNI_TALE } /* scriptextensions=tale */,
- { 0, 10027, 5396, 3, 14, UNI_JG__MANICHAEANRESH } /* jg=manichaeanresh */,
- { 4, 10048, 9904, 3, 3, UNI_NV__1_SLASH_5 } /* nv=1/5 */,
- { 2184, 133, 0, 4, 0, UNI_M } /* mark */,
- { 1, 184, 6609, 2, 10, UNI_DEP } /* isdeprecated */,
- { 76, 4688, 6433, 15, 12, UNI_IDENTIFIERTYPE__NOTCHARACTER } /* identifiertype=notcharacter */,
- { 0, 2224, 1295, 3, 24, UNI_SUPERANDSUB } /* insuperscriptsandsubscripts */,
- { 0, 9277, 3115, 3, 10, UNI_SC__DEVA } /* sc=devanagari */,
- { 0, 2224, 7379, 3, 9, UNI_SUPARROWSA } /* insuparrowsa */,
- { 0, 10048, 8027, 3, 8, UNI_NV__15_SLASH_2 } /* nv=7.50e+00 */,
- { 12, 1552, 44, 10, 1, UNI_SK } /* category=sk */,
- { 0, 184, 2560, 2, 4, UNI_MAND } /* ismand */,
- { 0, 9508, 8, 4, 1, UNI_CCC__A } /* ccc=a */,
- { 261, 6385, 0, 12, 0, UNI_GONM } /* masaramgondi */,
- { 1, 8780, 1393, 6, 24, UNI_ARABICPFB } /* block=arabicpresentationformsb */,
- { 62, 1417, 8568, 24, 7, UNI_CCC__1 } /* canonicalcombiningclass=overlay */,
- { 386, 5986, 7754, 13, 2, UNI_NV__11 } /* numericvalue=11 */,
- { 0, 9628, 0, 4, 0, UNI_LATN } /* latn */,
- { 0, 9275, 5634, 5, 14, UNI_INSC__VOWELDEPENDENT } /* insc=voweldependent */,
- { 0, 9444, 10114, 4, 3, UNI_AGE__6_DOT_3 } /* age=v63 */,
- { 139, 8780, 2608, 6, 6, UNI_INBRAHMI } /* block=brahmi */,
- { 0, 8780, 4289, 6, 16, UNI_MYANMAREXTB } /* block=myanmarextendedb */,
- { 91, 10060, 3, 3, 1, -UNI_RI } /* ri=f */,
- { 74, 8589, 9824, 7, 4, UNI_SC__TGLG } /* script=tglg */,
- { 15, 9277, 3753, 5, 15, UNI_KITS } /* sc=khitansmallscript */,
- { 0, 9676, 0, 4, 0, UNI_NARB } /* narb */,
- { 1, 2784, 7060, 4, 8, UNI_ARABICEXTA } /* inarabicexta */,
- { 6, 8589, 9876, 7, 4, UNI_XSUX } /* script=xsux */,
- { 0, 2280, 7280, 4, 8, UNI_XPEO } /* isoldpersian */,
- { 0, 184, 5674, 2, 12, UNI_BIDIM } /* isbidimirrored */,
- { 1305, 8894, 3, 6, 1, -UNI_JOINC } /* joinc=f */,
- { 13, 5791, 6337, 13, 12, UNI_JG__MALAYALAMNYA } /* joininggroup=malayalamnya */,
- { 798, 184, 1631, 2, 15, UNI_GEOMETRICSHAPES } /* isgeometricshapes */,
- { 1, 1188, 4386, 3, 15, UNI_TANGUTCOMPONENTS } /* intangutcomponents */,
- { 513, 10033, 1527, 3, 9, UNI_LB__SG } /* lb=surrogate */,
- { 5, 184, 7119, 3, 9, UNI_CHRS } /* ischorasmian */,
- { 224, 9712, 0, 4, 0, UNI_OSGE } /* osge */,
- { 0, 8267, 9836, 8, 4, UNI_RADICAL } /* radical=true */,
- { 59, 9768, 6973, 5, 10, UNI_SYLO } /* scx=sylotinagri */,
- { 1, 8780, 218, 7, 32, UNI_DIACRITICALSEXT } /* block=combiningdiacriticalmarksextended */,
- { 608, 5986, 9976, 13, 3, UNI_NV__5_SLASH_8 } /* numericvalue=5/8 */,
- { 2, 5986, 9360, 13, 4, UNI_NV___MINUS_1_SLASH_2 } /* numericvalue=-1/2 */,
- { 705, 10024, 5726, 3, 13, UNI_ME } /* gc=enclosingmark */,
- { 82, 8589, 4149, 8, 3, UNI_SARB } /* script=sarb */,
- { 0, 7418, 36, 10, 1, UNI_XPOSIXUPPER } /* uppercase=t */,
- { 0, 5791, 8918, 13, 6, UNI_JG__LAMADH } /* joininggroup=lamadh */,
- { 514, 8589, 8107, 7, 8, UNI_BALI } /* script=balinese */,
- { 0, 2161, 9836, 21, 4, UNI_EXTPICT } /* extendedpictographic=true */,
- { 64, 3836, 8187, 17, 4, UNI_HIRA } /* scriptextensions=hira */,
- { 16, 9488, 7239, 4, 2, UNI_INVS } /* blk=vs */,
- { 1616, 8589, 7428, 7, 10, UNI_WARA } /* script=warangciti */,
- { 0, 10288, 62, 8, 5, UNI_XPOSIXGRAPH } /* isxposixgraph */,
- { 1, 3379, 0, 6, 0, UNI_wspace_values_index } /* space= */,
- { 1042, 4658, 0, 15, 0, UNI_grext_values_index } /* graphemeextend= */,
- { 1, 10048, 9379, 3, 2, UNI_NV__41 } /* nv=41 */,
- { 5, 2280, 262, 3, 3, UNI_OSMA } /* isosma */,
- { 0, 1966, 4913, 22, 15, UNI_INSC__REGISTERSHIFTER } /* indicsyllabiccategory=registershifter */,
- { 0, 1812, 3, 22, 1, -UNI_CWL } /* changeswhenlowercased=f */,
- { 0, 184, 27, 2, 2, UNI_LOWERCASELETTER } /* isll */,
- { 0, 8780, 1879, 7, 21, UNI_CJKCOMPATIDEOGRAPHSSUP } /* block=cjkcompatideographssup */,
- { 0, 10048, 9412, 3, 4, UNI_NV__17_SLASH_2 } /* nv=17/2 */,
- { 0, 9262, 866, 3, 2, UNI_SB__SP } /* sb=sp */,
- { 37, 4838, 47, 15, 1, UNI_NFCQC__M } /* nfkcquickcheck=m */,
- { 224, 8589, 9664, 7, 4, UNI_MRO } /* script=mroo */,
- { 1, 9488, 689, 4, 30, UNI_CJKEXTG } /* blk=cjkunifiedideographsextensiong */,
- { 1, 184, 9285, 2, 5, UNI_LIMB } /* islimbu */,
- { 17, 5986, 7806, 13, 1, UNI_NV__6 } /* numericvalue=6 */,
- { 0, 7540, 26, 9, 1, UNI_EXT } /* extender=y */,
- { 607, 9277, 9320, 3, 5, UNI_OSGE } /* sc=osage */,
- { 2, 9768, 8618, 5, 6, UNI_SOYO } /* scx=soyombo */,
- { 0, 5746, 36, 6, 1, UNI_EBASE } /* ebase=t */,
- { 0, 3836, 8990, 17, 6, UNI_RJNG } /* scriptextensions=rejang */,
- { 5, 9768, 9696, 4, 4, UNI_OGAM } /* scx=ogam */,
- { 4, 3374, 3, 11, 1, -UNI_XPOSIXSPACE } /* whitespace=f */,
- { 12, 184, 1901, 3, 5, UNI_ZYYY } /* iscommon */,
- { 546, 10296, 7685, 3, 8, UNI_PAUC } /* ispaucinhau */,
- { 0, 6469, 5904, 12, 4, UNI_NV__NAN } /* numerictype=none */,
- { 80, 9277, 4793, 3, 15, UNI_MERC } /* sc=meroiticcursive */,
- { 128, 8780, 6554, 6, 3, UNI_INIDC } /* block=idc */,
- { 2, 9444, 7979, 4, 3, UNI_AGE__6 } /* age=6.0 */,
- { 0, 1269, 0, 25, 0, UNI_compex_values_index } /* fullcompositionexclusion= */,
- { 1040, 9277, 8464, 4, 6, UNI_SC__KALI } /* sc=kayahli */,
- { 1, 1417, 9203, 24, 2, UNI_CCC__34 } /* canonicalcombiningclass=34 */,
- { 29, 3836, 6181, 17, 12, UNI_GONG } /* scriptextensions=gunjalagondi */,
- { 0, 3151, 1, 18, 1, -UNI_EPRES } /* emojipresentation=n */,
- { 45, 5791, 6373, 13, 12, UNI_JG__MANICHAEANPE } /* joininggroup=manichaeanpe */,
- { 0, 2224, 8611, 3, 6, UNI_INSIDDHAM } /* insiddham */,
- { 24, 6061, 1, 12, 1, -UNI_BIDIC } /* bidicontrol=n */,
- { 4, 184, 6505, 2, 12, UNI_PHAISTOS } /* isphaistosdisc */,
- { 0, 5986, 9405, 13, 3, UNI_NV__3_SLASH_2 } /* numericvalue=3/2 */,
- { 0, 1552, 4568, 9, 14, UNI_SC } /* category=currencysymbol */,
- { 80, 10333, 9789, 3, 3, UNI_SHRD } /* isshrd */,
- { 3, 9275, 3615, 5, 17, UNI_INSC__CONSONANTPREFIXED } /* insc=consonantprefixed */,
- { 0, 9508, 7930, 4, 2, UNI_CCC__14 } /* ccc=14 */,
- { 0, 9277, 6409, 3, 12, UNI_MEND } /* sc=mendekikakui */,
- { 33, 9277, 9576, 3, 4, UNI_SC__GURU } /* sc=guru */,
- { 0, 4916, 4929, 3, 7, UNI_TAMILSUP } /* istamilsup */,
- { 18, 9488, 3938, 5, 10, UNI_BOPOMOFOEXT } /* blk=bopomofoext */,
- { 19, 184, 2608, 2, 4, UNI_BRAH } /* isbrah */,
- { 1, 9488, 8900, 4, 6, UNI_INKAITHI } /* blk=kaithi */,
- { 0, 5791, 6950, 13, 11, UNI_JG__STRAIGHTWAW } /* joininggroup=straightwaw */,
- { 16, 9262, 1867, 3, 5, UNI_SB__UP } /* sb=upper */,
- { 2, 4916, 8667, 3, 6, UNI_TIRH } /* istirhuta */,
- { 3, 8267, 9255, 8, 5, -UNI_RADICAL } /* radical=false */,
- { 2185, 9488, 4129, 4, 6, UNI_LATIN1 } /* blk=latin1 */,
- { 986, 184, 2099, 3, 20, UNI_CJKCOMPATFORMS } /* iscjkcompatibilityforms */,
- { 680, 3901, 8181, 4, 6, UNI_INGURMUKHI } /* ingurmukhi */,
- { 1185, 1188, 8584, 3, 3, UNI_TAGS } /* intags */,
- { 242, 9768, 8604, 5, 6, UNI_SHAW } /* scx=shavian */,
- { 0, 184, 3576, 3, 2, UNI_CWL } /* iscwl */,
- { 0, 1417, 9925, 24, 3, UNI_CCC__BL } /* canonicalcombiningclass=218 */,
- { 436, 3836, 6385, 17, 12, UNI_GONM } /* scriptextensions=masaramgondi */,
- { 0, 184, 9568, 2, 4, UNI_GREK } /* isgrek */,
- { 6, 4542, 4051, 4, 9, UNI_GEORGIANEXT } /* ingeorgianext */,
- { 0, 3836, 9032, 17, 6, UNI_WCHO } /* scriptextensions=wancho */,
- { 0, 4688, 8972, 15, 6, UNI_IDENTIFIERTYPE__NOTXID } /* identifiertype=notxid */,
- { 1, 9520, 10135, 4, 3, UNI_CWL } /* cwl=yes */,
- { 232, 184, 1823, 2, 5, UNI_XPOSIXLOWER } /* islower */,
- { 2, 184, 6265, 2, 12, UNI_NL } /* isletternumber */,
- { 462, 9508, 9952, 4, 3, UNI_CCC__IS } /* ccc=240 */,
- { 133, 3836, 8470, 17, 7, UNI_LINA } /* scriptextensions=lineara */,
- { 164, 9716, 9255, 4, 5, -UNI_PCM } /* pcm=false */,
- { 1876, 10333, 1537, 3, 3, UNI_SIND } /* issind */,
- { 0, 9508, 8805, 5, 4, UNI_CCC__11 } /* ccc=ccc11 */,
- { 3, 8589, 4478, 7, 7, UNI_BRAI } /* script=braille */,
- { 17, 9508, 8819, 4, 3, UNI_CCC__129 } /* ccc=129 */,
- { 1, 3349, 0, 18, 0, UNI_ZP } /* paragraphseparator */,
- { 2098, 8780, 4385, 6, 6, UNI_INTANGUT } /* block=tangut */,
- { 0, 10027, 10021, 3, 3, UNI_JG__GAF } /* jg=gaf */,
- { 0, 7218, 5999, 10, 13, UNI_LB__PR } /* linebreak=prefixnumeric */,
- { 49, 1417, 9111, 25, 4, UNI_CCC__16 } /* canonicalcombiningclass=ccc16 */,
- { 45, 2779, 1025, 19, 2, -UNI_IDST } /* idstrinaryoperator=no */,
- { 0, 5324, 5949, 4, 11, UNI_MAYANNUMERALS } /* inmayannumerals */,
- { 216, 7218, 1465, 10, 13, UNI_LB__CM } /* linebreak=combiningmark */,
- { 1408, 4337, 0, 16, 0, UNI_SUPMATHOPERATORS } /* supmathoperators */,
- { 0, 1552, 2349, 9, 20, UNI_PC } /* category=connectorpunctuation */,
- { 0, 8930, 36, 6, 1, UNI_XPOSIXLOWER } /* lower=t */,
- { 0, 5578, 751, 14, 5, UNI_SB__CL } /* sentencebreak=close */,
- { 0, 5791, 0, 13, 0, UNI_jg_values_index } /* joininggroup= */,
- { 8, 184, 2912, 2, 12, UNI_SUNDANESESUP } /* issundanesesup */,
- { 1363, 5494, 0, 14, 0, UNI_MN } /* nonspacingmark */,
- { 0, 9488, 8491, 4, 7, UNI_INMARCHEN } /* blk=marchen */,
- { 0, 3836, 6973, 18, 3, UNI_SYLO } /* scriptextensions=sylo */,
- { 0, 7388, 0, 10, 0, UNI_SUPARROWSB } /* suparrowsb */,
- { 927, 9768, 9756, 4, 4, UNI_RUNR } /* scx=runr */,
- { 0, 3151, 9255, 18, 5, -UNI_EPRES } /* emojipresentation=false */,
- { 0, 6420, 8562, 3, 6, UNI_INOSMANYA } /* inosmanya */,
- { 5, 9488, 1006, 4, 17, UNI_ANCIENTGREEKMUSIC } /* blk=ancientgreekmusic */,
- { 0, 9556, 10015, 4, 3, UNI_WB__EB } /* gcb=ebg */,
- { 0, 8780, 867, 6, 18, UNI_PHONETICEXT } /* block=phoneticextensions */,
- { 0, 3836, 9644, 17, 4, UNI_MEDF } /* scriptextensions=medf */,
- { 0, 5986, 7931, 13, 8, UNI_NV__5_SLASH_12 } /* numericvalue=4.17e-01 */,
- { 0, 9275, 728, 5, 6, UNI_INSC__NUMBER } /* insc=number */,
- { 1, 5986, 8720, 13, 5, UNI_NV__40000 } /* numericvalue=40000 */,
- { 769, 5791, 5934, 13, 13, UNI_JG__MANICHAEANWAW } /* joininggroup=manichaeanwaw */,
- { 2308, 3836, 5003, 17, 15, UNI_ZANB } /* scriptextensions=zanabazarsquare */,
- { 10, 2784, 1371, 4, 22, UNI_ARABICPFA } /* inarabicpresentationformsa */,
- { 0, 9492, 1, 4, 1, UNI_BPT__N } /* bpt=n */,
- { 1, 9780, 0, 4, 0, UNI_SHAW } /* shaw */,
- { 40, 7076, 1586, 3, 13, UNI_BYZANTINEMUSIC } /* inbyzantinemusic */,
- { 0, 9488, 9096, 5, 4, UNI_INBUHID } /* blk=buhid */,
- { 1364, 8589, 2560, 7, 4, UNI_SC__MAND } /* script=mand */,
- { 541, 2280, 7668, 4, 7, UNI_ORKH } /* isoldturkic */,
- { 11, 10048, 9372, 3, 3, UNI_NV__1_SLASH_4 } /* nv=1/4 */,
- { 0, 3836, 9608, 17, 4, UNI_KITS } /* scriptextensions=kits */,
- { 1, 9277, 7651, 3, 4, UNI_ITAL } /* sc=ital */,
- { 0, 8780, 8171, 6, 8, UNI_INGUJARATI } /* block=gujarati */,
- { 4, 10027, 4763, 3, 15, UNI_JG__MANICHAEANSADHE } /* jg=manichaeansadhe */,
- { 2560, 8780, 3421, 6, 18, UNI_RUMI } /* block=ruminumeralsymbols */,
- { 691, 10027, 5918, 3, 3, UNI_JG__TAW } /* jg=taw */,
- { 1, 10024, 5040, 3, 5, UNI_XPOSIXDIGIT } /* gc=digit */,
- { 0, 8780, 1922, 6, 22, UNI_DIACRITICALSFORSYMBOLS } /* block=diacriticalsforsymbols */,
- { 7, 9768, 9460, 4, 4, UNI_ARMI } /* scx=armi */,
- { 0, 9768, 2329, 4, 20, UNI_HLUW } /* scx=anatolianhieroglyphs */,
- { 786, 1552, 5726, 9, 13, UNI_ME } /* category=enclosingmark */,
- { 5, 8267, 3, 8, 1, -UNI_RADICAL } /* radical=f */,
- { 3779, 8780, 1369, 6, 24, UNI_ARABICPFA } /* block=arabicpresentationformsa */,
- { 0, 7438, 400, 10, 6, UNI_WB__FO } /* wordbreak=format */,
- { 1028, 7218, 1527, 10, 9, UNI_LB__SG } /* linebreak=surrogate */,
- { 0, 9768, 9656, 4, 4, UNI_MIAO } /* scx=miao */,
- { 0, 9277, 9285, 3, 4, UNI_SC__LIMB } /* sc=limb */,
- { 21, 9444, 10105, 4, 3, UNI_AGE__6 } /* age=v60 */,
- { 0, 4448, 0, 15, 0, UNI_BAMUMSUP } /* bamumsupplement */,
- { 404, 184, 9245, 2, 5, UNI_DOGR } /* isdogra */,
- { 0, 3169, 0, 11, 0, UNI_ETHIOPICSUP } /* ethiopicsup */,
- { 833, 184, 4448, 2, 15, UNI_BAMUMSUP } /* isbamumsupplement */,
- { 0, 9488, 2722, 4, 10, UNI_JAMO } /* blk=hanguljamo */,
- { 11, 9696, 0, 4, 0, UNI_OGAM } /* ogam */,
- { 1713, 8589, 9335, 7, 4, UNI_SC__TAKR } /* script=takr */,
- { 5, 10060, 9836, 3, 4, UNI_RI } /* ri=true */,
- { 0, 8780, 7068, 6, 10, UNI_ASCII } /* block=basiclatin */,
- { 16, 9796, 0, 4, 0, UNI_SYRC } /* syrc */,
- { 1097, 6576, 1, 11, 1, -UNI_XPOSIXALPHA } /* alphabetic=n */,
- { 0, 4033, 10168, 16, 2, UNI_CASEDLETTER } /* generalcategory=l& */,
- { 0, 7076, 3938, 3, 7, UNI_INBOPOMOFO } /* inbopomofo */,
- { 0, 8780, 3796, 7, 3, UNI_INCHAM } /* block=cham */,
- { 18, 184, 6884, 2, 11, UNI_HMNG } /* ispahawhhmong */,
- { 1061, 8147, 1, 8, 1, -UNI_EXTPICT } /* extpict=n */,
- { 1898, 10296, 472, 3, 2, UNI_PUA } /* ispua */,
- { 1, 9786, 1702, 4, 21, UNI_SHORTHANDFORMATCONTROLS } /* inshorthandformatcontrols */,
- { 1921, 8780, 1442, 7, 23, UNI_CJKSYMBOLS } /* block=cjksymbolsandpunctuation */,
- { 5, 4808, 0, 15, 0, UNI_MISCPICTOGRAPHS } /* miscpictographs */,
- { 0, 1966, 1244, 22, 25, UNI_INSC__CONSONANTINITIALPOSTFIXED } /* indicsyllabiccategory=consonantinitialpostfixed */,
- { 576, 5986, 8756, 13, 4, UNI_NV__9000 } /* numericvalue=9000 */,
- { 2, 8780, 8380, 7, 6, UNI_CJKEXTE } /* block=cjkexte */,
- { 0, 9488, 316, 4, 33, UNI_SUPMATHOPERATORS } /* blk=supplementalmathematicaloperators */,
- { 243, 9488, 659, 4, 30, UNI_CJKEXTF } /* blk=cjkunifiedideographsextensionf */,
- { 0, 184, 9664, 2, 4, UNI_MRO } /* ismroo */,
- { 0, 9488, 3439, 4, 12, UNI_SMALLKANAEXT } /* blk=smallkanaext */,
- { 184, 184, 6253, 2, 12, UNI_KHMERSYMBOLS } /* iskhmersymbols */,
- { 476, 3836, 7278, 17, 10, UNI_XPEO } /* scriptextensions=oldpersian */,
- { 0, 8666, 0, 4, 0, UNI_TIRH } /* tirh */,
- { 224, 184, 2409, 2, 20, UNI_GLAGOLITICSUP } /* isglagoliticsupplement */,
- { 626, 8589, 5284, 7, 4, UNI_LISU } /* script=lisu */,
- { 20, 2280, 1061, 3, 26, UNI_OCR } /* isopticalcharacterrecognition */,
- { 568, 9277, 8299, 3, 8, UNI_TFNG } /* sc=tifinagh */,
- { 0, 6205, 10135, 12, 3, UNI_IDEO } /* ideographic=yes */,
- { 0, 5713, 0, 13, 0, UNI_XPOSIXDIGIT } /* decimalnumber */,
- { 0, 21, 7576, 2, 9, UNI_LATINEXTB } /* inlatinextb */,
- { 3194, 10048, 8720, 3, 2, UNI_NV__40 } /* nv=40 */,
- { 0, 5791, 5921, 13, 13, UNI_JG__MANICHAEANTEN } /* joininggroup=manichaeanten */,
- { 4, 6231, 4560, 9, 8, UNI_CONTROLPICTURES } /* incontrolpictures */,
- { 1284, 8768, 10135, 6, 3, UNI_BIDIC } /* bidic=yes */,
- { 3068, 2268, 0, 2, 0, UNI_PD } /* pd */,
- { 0, 6553, 1025, 12, 2, -UNI_XIDC } /* xidcontinue=no */,
- { 14, 184, 132, 2, 2, UNI_LM } /* islm */,
- { 8, 8589, 6481, 7, 12, UNI_HUNG } /* script=oldhungarian */,
- { 0, 10132, 7612, 3, 6, UNI_WB__MN } /* wb=midnum */,
- { 0, 4033, 6035, 16, 2, UNI_PF } /* generalcategory=pf */,
- { 4, 9520, 26, 4, 1, UNI_CWL } /* cwl=y */,
- { 1, 5986, 7469, 13, 1, UNI_NV__5 } /* numericvalue=5 */,
- { 0, 9488, 4449, 5, 14, UNI_BAMUMSUP } /* blk=bamumsupplement */,
- { 4, 8780, 908, 6, 14, UNI_PUA } /* block=privateusearea */,
- { 2707, 8694, 1, 7, 1, -UNI_XPOSIXSPACE } /* wspace=n */,
- { 292, 3683, 0, 17, 0, UNI_ETHIOPICEXTA } /* ethiopicextendeda */,
- { 0, 9768, 8680, 4, 7, UNI_ZZZZ } /* scx=unknown */,
- { 323, 4791, 2062, 3, 14, UNI_MODIFIERLETTERS } /* inmodifierletters */,
- { 20, 7028, 7028, 3, 10, UNI_YISYLLABLES } /* isyisyllables */,
- { 1, 9624, 0, 3, 0, UNI_LAO } /* lao */,
- { 2, 8870, 9255, 6, 5, -UNI_EPRES } /* epres=false */,
- { 529, 3836, 7694, 18, 8, UNI_SAMR } /* scriptextensions=samaritan */,
- { 3055, 9444, 9979, 4, 3, UNI_AGE__6_DOT_1 } /* age=6.1 */,
- { 3202, 10012, 7486, 3, 9, UNI_EA__A } /* ea=ambiguous */,
- { 0, 1417, 9208, 24, 2, UNI_CCC__35 } /* canonicalcombiningclass=35 */,
- { 1, 184, 9688, 2, 3, UNI_NKO } /* isnko */,
- { 0, 9350, 10135, 5, 3, UNI_XIDS } /* xids=yes */,
- { 161, 7418, 9836, 10, 4, UNI_XPOSIXUPPER } /* uppercase=true */,
- { 0, 1552, 47, 10, 1, UNI_SM } /* category=sm */,
- { 0, 9277, 9568, 3, 4, UNI_SC__GREK } /* sc=grek */,
- { 0, 8589, 6193, 7, 6, UNI_HEBR } /* script=hebrew */,
- { 3120, 184, 5550, 2, 14, UNI_PHLP } /* ispsalterpahlavi */,
- { 1046, 7155, 6321, 3, 3, UNI_HMNG } /* ishmng */,
- { 0, 8984, 26, 6, 1, UNI_QMARK } /* qmark=y */,
- { 73, 1218, 0, 8, 0, UNI_KANA } /* katakana */,
- { 0, 8589, 8344, 7, 4, UNI_SC__BENG } /* script=beng */,
- { 1289, 7, 0, 18, 0, UNI_CANS } /* canadianaboriginal */,
- { 1836, 1591, 3170, 3, 17, UNI_ETHIOPICSUP } /* inethiopicsupplement */,
- { 3201, 5032, 10135, 14, 3, UNI_POSIXXDIGIT } /* asciihexdigit=yes */,
- { 7, 8449, 1025, 7, 2, -UNI_HYPHEN } /* hyphen=no */,
- { 136, 9488, 1911, 4, 11, UNI_NUMBERFORMS } /* blk=numberforms */,
- { 1674, 9508, 7933, 4, 2, UNI_CCC__17 } /* ccc=17 */,
- { 0, 8512, 47, 7, 1, UNI_NFCQC__M } /* nfkcqc=m */,
- { 139, 9786, 8605, 4, 5, UNI_SHAW } /* inshavian */,
- { 0, 6420, 7658, 3, 8, UNI_INOLDPERMIC } /* inoldpermic */,
- { 0, 1654, 0, 6, 0, UNI_HANG } /* hangul */,
- { 0, 5578, 0, 16, 0, UNI_SB__SP } /* sentencebreak=sp */,
- { 332, 4033, 1025, 16, 2, UNI_NO } /* generalcategory=no */,
- { 2690, 1417, 9218, 24, 2, UNI_CCC__84 } /* canonicalcombiningclass=84 */,
- { 0, 1189, 11, 3, 2, UNI_NT__DI } /* nt=di */,
- { 12, 7218, 1140, 10, 26, UNI_LB__CJ } /* linebreak=conditionaljapanesestarter */,
- { 3801, 6241, 6994, 12, 11, UNI_JT__T } /* joiningtype=transparent */,
- { 0, 8688, 3548, 3, 9, UNI_ALCHEMICAL } /* isalchemical */,
- { 816, 6554, 1025, 11, 2, -UNI_IDC } /* idcontinue=no */,
- { 1, 10176, 0, 2, 0, UNI_ZL } /* zl */,
- { 24, 9250, 0, 6, 0, -UNI_EMOD } /* emod=f */,
- { 0, 1790, 9255, 22, 5, -UNI_CWCM } /* changeswhencasemapped=false */,
- { 2428, 10027, 9744, 3, 4, UNI_JG__QAPH } /* jg=qaph */,
- { 1, 3853, 26, 17, 1, UNI_STERM } /* sentenceterminal=y */,
- { 2398, 4542, 3243, 4, 6, UNI_INGEORGIAN } /* ingeorgian */,
- { 531, 184, 9676, 2, 4, UNI_NARB } /* isnarb */,
- { 12, 8780, 7693, 6, 9, UNI_INSAMARITAN } /* block=samaritan */,
- { 5, 1417, 8805, 25, 4, UNI_CCC__11 } /* canonicalcombiningclass=ccc11 */,
- { 0, 9488, 4369, 4, 9, UNI_SYRIACSUP } /* blk=syriacsup */,
- { 4367, 8780, 5752, 6, 8, UNI_GREEKEXT } /* block=greekext */,
- { 0, 1537, 1924, 4, 20, UNI_DIACRITICALSFORSYMBOLS } /* indiacriticalsforsymbols */,
- { 0, 3836, 8561, 17, 4, UNI_OSMA } /* scriptextensions=osma */,
- { 3590, 9508, 8811, 5, 4, UNI_CCC__12 } /* ccc=ccc12 */,
- { 7694, 509, 0, 30, 0, UNI_CJKEXTA } /* cjkunifiedideographsextensiona */,
- { 0, 8780, 6277, 6, 12, UNI_MAHJONG } /* block=mahjongtiles */,
- { 4, 5986, 5648, 13, 4, UNI_NV__1000 } /* numericvalue=1000 */,
- { 0, 2280, 4870, 4, 13, UNI_NARB } /* isoldnortharabian */,
- { 7122, 8780, 3751, 6, 17, UNI_INKHITANSMALLSCRIPT } /* block=khitansmallscript */,
- { 5, 9277, 8219, 3, 4, UNI_SC__JAVA } /* sc=java */
+ { 12, 2732, 4987, 5, 9, UNI_ALCHEMICAL } /* blk=alchemical */,
+ { 1, 2, 8214, 1, 32, UNI_DIACRITICALSEXT } /* combiningdiacriticalmarksextended */,
+ { 2, 517, 1072, 4, 3, UNI_NV__7_SLASH_12 } /* nv=7/12 */,
+ { 0, 1823, 1385, 7, 6, UNI_SC__THAA } /* script=thaana */,
+ { 5, 895, 569, 5, 2, UNI_AGE__5_DOT_2 } /* age=v52 */,
+ { 0, 1823, 137, 8, 3, UNI_SC__MYMR } /* script=mymr */,
+ { 1, 292, 2655, 3, 10, UNI_NV___MINUS_1_SLASH_2 } /* nv=-5.000e-01 */,
+ { 0, 5658, 5940, 18, 9, UNI_IDENTIFIERTYPE__NOTCHARACTER } /* identifiertype=notcharacter */,
+ { 0, 2324, 991, 6, 6, UNI_INHATRAN } /* block=hatran */,
+ { 3, 339, 582, 5, 2, UNI_CCC__122 } /* ccc=122 */,
+ { 1, 1397, 585, 4, 5, UNI_IDST } /* idst=true */,
+ { 0, 5937, 585, 21, 5, UNI__PERL_NCHAR } /* noncharactercodepoint=true */,
+ { 3, 461, 208, 2, 4, UNI_TGLG } /* istglg */,
+ { 0, 3633, 5635, 13, 3, UNI_LATINEXTG } /* inlatinextendedg */,
+ { 5, 1396, 6621, 3, 3, UNI_XIDC } /* xidc=t */,
+ { 0, 2766, 2483, 3, 11, UNI_CASEDLETTER } /* gc=casedletter */,
+ { 5, 4002, 0, 14, 0, UNI_SK } /* modifiersymbol */,
+ { 1, 4043, 599, 4, 2, -UNI_IDSB } /* idsb=n */,
+ { 0, 6165, 2009, 3, 6, UNI_SC__SYRC } /* sc=syriac */,
+ { 2, 4970, 933, 16, 7, -UNI_EBASE } /* emojimodifierbase=false */,
+ { 3, 1492, 6945, 5, 12, UNI_GEOMETRICSHAPES } /* ingeometricshapes */,
+ { 0, 2324, 1376, 6, 9, UNI_INSAMARITAN } /* block=samaritan */,
+ { 1, 339, 2735, 3, 3, UNI_CCC__AR } /* ccc=ar */,
+ { 3, 8601, 4441, 7, 16, UNI_SMALLFORMS } /* block=smallformvariants */,
+ { 1, 7274, 3554, 9, 13, UNI_ZL } /* category=lineseparator */,
+ { 0, 339, 288, 5, 2, UNI_CCC__130 } /* ccc=130 */,
+ { 0, 461, 248, 2, 5, UNI_XPOSIXCNTRL } /* iscntrl */,
+ { 0, 1823, 369, 7, 6, UNI_GOTH } /* script=gothic */,
+ { 0, 10, 2631, 1, 12, UNI_MAYANNUMERALS } /* mayannumerals */,
+ { 6, 309, 3954, 2, 17, UNI_INCAUCASIANALBANIAN } /* incaucasianalbanian */,
+ { 0, 1396, 934, 8, 6, -UNI_XIDS } /* xidstart=false */,
+ { 6, 1396, 341, 3, 2, UNI_xidc_values_index } /* xidc= */,
+ { 0, 1102, 430, 4, 4, UNI_NKO } /* scx=nkoo */,
+ { 5, 339, 295, 4, 1, UNI_CCC__9 } /* ccc=9 */,
+ { 0, 1671, 0, 7, 0, UNI_CJKEXTD } /* cjkextd */,
+ { 0, 735, 2538, 2, 2, UNI_EA__A } /* ea=a */,
+ { 0, 461, 3026, 2, 2, UNI_PS } /* isps */,
+ { 1, 2324, 5958, 6, 21, UNI_SINHALAARCHAICNUMBERS } /* block=sinhalaarchaicnumbers */,
+ { 2, 1823, 790, 7, 4, UNI_SC__KALI } /* script=kali */,
+ { 0, 7495, 388, 27, 2, UNI_CCC__26 } /* canonicalcombiningclass=ccc26 */,
+ { 10, 3633, 4659, 7, 9, UNI_LATINEXTC } /* inlatinextendedc */,
+ { 1, 4896, 0, 8, 0, UNI_BAMUMSUP } /* bamumsup */,
+ { 4, 172, 0, 4, 0, UNI_RJNG } /* rjng */,
+ { 1, 1397, 934, 7, 2, -UNI_IDS } /* idstart=f */,
+ { 1, 11, 2312, 1, 12, UNI_AEGEANNUMBERS } /* aegeannumbers */,
+ { 1, 6163, 6661, 14, 10, UNI_INSC__CONSONANTHEADLETTER } /* insc=consonantheadletter */,
+ { 1, 406, 599, 2, 3, -UNI_DI } /* di=no */,
+ { 0, 257, 934, 4, 6, -UNI_CWCM } /* cwcm=false */,
+ { 8, 292, 2090, 3, 9, UNI_NV__1_SLASH_8 } /* nv=1.250e-01 */,
+ { 1, 1409, 4698, 4, 12, UNI_LATIN1 } /* latin1supplement */,
+ { 0, 4360, 1479, 10, 5, UNI_LB__SP } /* linebreak=space */,
+ { 0, 1223, 0, 4, 0, UNI_KANA } /* kana */,
+ { 1, 4360, 2043, 10, 2, UNI_GCB__V } /* linebreak=jv */,
+ { 2, 216, 216, 2, 2, UNI_TOTO } /* toto */,
+ { 0, 1494, 5863, 5, 6, UNI_GEORGIANSUP } /* georgiansup */,
+ { 1, 16, 2773, 1, 13, UNI_INGREEK } /* greekandcoptic */,
+ { 3, 1667, 1914, 4, 4, UNI_UCAS } /* blk=ucas */,
+ { 1, 1667, 5778, 4, 21, UNI_ININSCRIPTIONALPARTHIAN } /* blk=inscriptionalparthian */,
+ { 0, 2256, 0, 12, 0, UNI_PHAISTOS } /* phaistosdisc */,
+ { 0, 1102, 4271, 4, 17, UNI_KITS } /* scx=khitansmallscript */,
+ { 0, 6165, 1322, 3, 9, UNI_ITAL } /* sc=olditalic */,
+ { 0, 940, 934, 6, 6, -UNI_COMPEX } /* compex=false */,
+ { 0, 6450, 306, 14, 2, UNI_SB__SP } /* sentencebreak=sp */,
+ { 0, 1906, 1037, 8, 4, UNI_KANAEXTB } /* blk=kanaextb */,
+ { 2, 1667, 5712, 4, 19, UNI_MERO } /* blk=meroitichieroglyphs */,
+ { 0, 7274, 5235, 9, 20, UNI_PC } /* category=connectorpunctuation */,
+ { 0, 1404, 1409, 5, 5, UNI_ASCII } /* basiclatin */,
+ { 3, 2232, 1314, 4, 3, UNI_NV__8000 } /* nv=8000 */,
+ { 2, 5939, 599, 5, 2, -UNI__PERL_NCHAR } /* nchar=n */,
+ { 0, 7495, 346, 27, 2, UNI_CCC__84 } /* canonicalcombiningclass=ccc84 */,
+ { 0, 4424, 1978, 17, 4, UNI_SOGD } /* scriptextensions=sogd */,
+ { 1, 1667, 967, 4, 8, UNI_INGUJARATI } /* blk=gujarati */,
+ { 0, 4424, 406, 17, 4, UNI_DIAK } /* scriptextensions=diak */,
+ { 0, 461, 4845, 2, 17, UNI__PERL_PATWS } /* ispatternwhitespace */,
+ { 0, 4424, 1331, 17, 9, UNI_PERM } /* scriptextensions=oldpermic */,
+ { 0, 309, 499, 2, 6, UNI_INLYDIAN } /* inlydian */,
+ { 1, 2503, 599, 5, 2, -UNI_JOINC } /* joinc=n */,
+ { 1, 2324, 7086, 6, 24, UNI_ARABICPFB } /* block=arabicpresentationformsb */,
+ { 0, 2324, 746, 6, 7, UNI_INMARCHEN } /* block=marchen */,
+ { 0, 4191, 585, 5, 2, UNI_XPOSIXLOWER } /* lower=t */,
+ { 3, 2208, 0, 12, 0, UNI_NV__7_SLASH_12 } /* nv=5.833e-01 */,
+ { 0, 309, 6487, 2, 23, UNI_ZNAMENNYMUSIC } /* inznamennymusicalnotation */,
+ { 2, 6165, 779, 3, 7, UNI_OSMA } /* sc=osmanya */,
+ { 4, 1391, 3191, 2, 3, UNI_WB__LE } /* wb=le */,
+ { 0, 1667, 4725, 4, 16, UNI_TANGUTSUP } /* blk=tangutsupplement */,
+ { 0, 832, 353, 5, 2, UNI_STERM } /* sterm=y */,
+ { 5, 1102, 1829, 3, 5, UNI_MLYM } /* scx=mlym */,
+ { 3, 1667, 3421, 4, 15, UNI_NARB } /* blk=oldnortharabian */,
+ { 1, 1726, 6193, 6, 12, UNI_ARABICSUP } /* isarabicsupplement */,
+ { 0, 1667, 430, 4, 3, UNI_INNKO } /* blk=nko */,
+ { 1, 3984, 353, 17, 4, UNI_EPRES } /* emojipresentation=yes */,
+ { 19, 6163, 1985, 5, 7, UNI_INSC__VISARGA } /* insc=visarga */,
+ { 1, 309, 8660, 2, 42, UNI_UCASEXT } /* inunifiedcanadianaboriginalsyllabicsextended */,
+ { 2, 521, 8556, 5, 3, UNI_PATSYN } /* patsyn=t */,
+ { 0, 461, 168, 2, 4, UNI_COPT } /* isqaac */,
+ { 1, 1582, 0, 10, 0, UNI_PHNX } /* phoenician */,
+ { 6, 2432, 4511, 9, 9, UNI_MYANMAREXTB } /* inmyanmarextendedb */,
+ { 3, 4424, 216, 17, 4, UNI_TOTO } /* scriptextensions=toto */,
+ { 2, 2324, 861, 6, 7, UNI_INTIBETAN } /* block=tibetan */,
+ { 2, 8, 0, 3, 0, UNI_PCM } /* pcm */,
+ { 4, 7134, 1669, 25, 2, UNI_pcm_values_index } /* prependedconcatenationmark= */,
+ { 0, 1823, 4620, 7, 7, UNI_SC__LINB } /* script=linearb */,
+ { 0, 1272, 1037, 5, 4, UNI_CJKEXTB } /* iscjkextb */,
+ { 2, 4424, 493, 17, 4, UNI_KHOJ } /* scriptextensions=khoj */,
+ { 1, 5205, 1553, 5, 9, UNI_MISCARROWS } /* blk=miscarrows */,
+ { 1, 2324, 6228, 8, 8, UNI_CJKSYMBOLS } /* block=cjksymbols */,
+ { 1, 3677, 589, 13, 3, UNI_LATINEXTE } /* islatinextendede */,
+ { 1, 7537, 934, 10, 6, -UNI_XPOSIXALPHA } /* alphabetic=false */,
+ { 3, 380, 0, 6, 0, UNI_HYPHEN } /* hyphen */,
+ { 2, 375, 585, 5, 5, UNI_GREXT } /* grext=true */,
+ { 2, 461, 4620, 2, 7, UNI_LINB } /* islinearb */,
+ { 0, 4360, 209, 10, 2, UNI_LB__GL } /* linebreak=gl */,
+ { 1, 232, 0, 2, 0, UNI_YI } /* yi */,
+ { 1, 5595, 934, 21, 6, -UNI_CWT } /* changeswhentitlecased=false */,
+ { 2, 3502, 7241, 5, 26, UNI_ENCLOSEDCJK } /* blk=enclosedcjklettersandmonths */,
+ { 9, 7274, 8, 9, 1, UNI_P } /* category=p */,
+ { 0, 298, 599, 2, 2, -UNI_RI } /* ri=n */,
+ { 0, 1994, 0, 7, 0, UNI_RADICAL } /* radical */,
+ { 0, 2324, 847, 6, 7, UNI_INTAITHAM } /* block=taitham */,
+ { 0, 4941, 324, 10, 3, UNI_KANASUP } /* block=kanasup */,
+ { 1, 6165, 658, 3, 4, UNI_SC__DOGR } /* sc=dogr */,
+ { 9, 2324, 1834, 6, 11, UNI_INSORASOMPENG } /* block=sorasompeng */,
+ { 4, 21, 2931, 2, 3, UNI_EXT } /* ext=t */,
+ { 2, 4845, 352, 16, 3, UNI__PERL_PATWS } /* patternwhitespace=y */,
+ { 0, 7267, 535, 15, 2, UNI_S } /* generalcategory=s */,
+ { 0, 4360, 2955, 10, 11, UNI_LB__EX } /* linebreak=exclamation */,
+ { 0, 2718, 6312, 3, 3, UNI_BC__PDI } /* bc=pdi */,
+ { 0, 30, 4209, 1, 12, UNI_INPUNCTUATION } /* inpunctuation */,
+ { 4, 1667, 683, 4, 5, UNI_INTAKRI } /* blk=takri */,
+ { 0, 1823, 615, 7, 4, UNI_ELYM } /* script=elym */,
+ { 0, 16, 1426, 1, 4, UNI_XPOSIXCNTRL } /* gc=cc */,
+ { 3, 2514, 2046, 3, 11, UNI_GONM } /* ismasaramgondi */,
+ { 2, 4424, 499, 17, 4, UNI_LYDI } /* scriptextensions=lydi */,
+ { 5, 1823, 1572, 7, 10, UNI_XPEO } /* script=oldpersian */,
+ { 9, 423, 2800, 3, 11, UNI_ALPHABETICPF } /* inalphabeticpf */,
+ { 0, 2842, 5848, 10, 9, UNI_ETHIOPICEXTA } /* isethiopicextendeda */,
+ { 2, 309, 668, 2, 5, UNI_INOGHAM } /* inogham */,
+ { 4, 1509, 0, 4, 0, UNI_JAVA } /* java */,
+ { 7, 6165, 1484, 3, 4, UNI_SC__BUGI } /* sc=bugi */,
+ { 16, 6427, 6447, 13, 3, UNI_JG__QAF } /* joininggroup=qaf */,
+ { 0, 59, 0, 4, 0, UNI_CHRS } /* chrs */,
+ { 2, 7591, 283, 3, 2, UNI_LB__NU } /* lb=nu */,
+ { 2, 2324, 3692, 6, 7, UNI_LISUSUP } /* block=lisusup */,
+ { 0, 7274, 4206, 9, 15, UNI_PS } /* category=openpunctuation */,
+ { 2, 461, 6642, 2, 6, UNI_BRAH } /* isbrahmi */,
+ { 1, 5216, 1505, 11, 4, UNI_LATINEXTA } /* block=latinexta */,
+ { 3, 1776, 1184, 4, 7, UNI_EMOTICONS } /* inemoticons */,
+ { 2, 292, 2084, 3, 2, UNI_NV__11 } /* nv=11 */,
+ { 1, 2536, 6447, 3, 3, UNI_JG__QAF } /* jg=qaf */,
+ { 2, 2324, 1914, 6, 4, UNI_UCAS } /* block=ucas */,
+ { 0, 6076, 2773, 7, 13, UNI_INGREEK } /* block=greekandcoptic */,
+ { 0, 11, 2705, 1, 13, UNI_ANCIENTSYMBOLS } /* ancientsymbols */,
+ { 1, 339, 288, 4, 2, UNI_CCC__30 } /* ccc=30 */,
+ { 2, 3391, 1070, 13, 2, UNI_NV__31 } /* numericvalue=31 */,
+ { 0, 3502, 1037, 12, 4, UNI_ETHIOPICEXTB } /* blk=ethiopicextb */,
+ { 0, 1391, 281, 3, 2, UNI_WB__XX } /* wb=xx */,
+ { 2, 7591, 1864, 3, 5, UNI_EBASE } /* lb=ebase */,
+ { 8, 6165, 1205, 3, 7, UNI_SC__GRAN } /* sc=grantha */,
+ { 3, 2536, 702, 10, 4, UNI_JG__AFRICANNOON } /* jg=africannoon */,
+ { 5, 2842, 2374, 10, 8, UNI_ETHIOPICEXT } /* isethiopicextended */,
+ { 2, 1198, 6557, 5, 19, UNI_CJKCOMPATIDEOGRAPHSSUP } /* incjkcompatideographssup */,
+ { 0, 6165, 608, 3, 4, UNI_ELBA } /* sc=elba */,
+ { 0, 30, 6486, 1, 14, UNI_ZNAMENNYMUSIC } /* isznamennymusic */,
+ { 1, 1823, 1834, 7, 11, UNI_SORA } /* script=sorasompeng */,
+ { 1, 6816, 585, 25, 5, UNI_CWKCF } /* changeswhennfkccasefolded=true */,
+ { 3, 2324, 967, 6, 8, UNI_INGUJARATI } /* block=gujarati */,
+ { 0, 7274, 2814, 12, 8, UNI_SO } /* category=othersymbol */,
+ { 9, 2302, 933, 9, 7, -UNI_IDC } /* idcontinue=false */,
+ { 1, 461, 6692, 2, 15, UNI_TRANSPORTANDMAP } /* istransportandmap */,
+ { 1, 578, 0, 6, 0, UNI_CCC__22 } /* ccc=22 */,
+ { 2, 7134, 353, 26, 4, UNI_PCM } /* prependedconcatenationmark=yes */,
+ { 2, 1790, 0, 11, 0, UNI_NFCQC__M } /* nfcqc=maybe */,
+ { 1, 2324, 4951, 6, 19, UNI_INEGYPTIANHIEROGLYPHS } /* block=egyptianhieroglyphs */,
+ { 0, 1479, 584, 4, 6, UNI_XPOSIXSPACE } /* space=true */,
+ { 0, 5168, 5939, 6, 5, UNI__PERL_NCHAR } /* _perl_nchar */,
+ { 12, 461, 1975, 2, 10, UNI_SOGO } /* isoldsogdian */,
+ { 0, 4502, 70, 11, 2, UNI_LATINEXTC } /* blk=latinextc */,
+ { 0, 1823, 991, 7, 4, UNI_HATR } /* script=hatr */,
+ { 2, 30, 1454, 1, 11, UNI_DEP } /* isdeprecated */,
+ { 1, 1728, 7545, 4, 20, UNI_ARABICPFA } /* arabicpresentationformsa */,
+ { 1, 1102, 1909, 3, 5, UNI_KANA } /* scx=kana */,
+ { 0, 2, 7972, 1, 15, UNI_CUNEIFORMNUMBERS } /* cuneiformnumbers */,
+ { 3, 4424, 1205, 17, 7, UNI_GRAN } /* scriptextensions=grantha */,
+ { 1, 7011, 2538, 23, 2, UNI_CCC__A } /* canonicalcombiningclass=a */,
+ { 0, 11, 0, 4, 0, UNI_ADLM } /* adlm */,
+ { 2, 6165, 1248, 3, 4, UNI_SC__PHAG } /* sc=phag */,
+ { 0, 7214, 345, 25, 2, UNI_CCC__118 } /* canonicalcombiningclass=118 */,
+ { 1, 461, 54, 2, 2, UNI_SC } /* issc */,
+ { 9, 2324, 739, 6, 7, UNI_INMANDAIC } /* block=mandaic */,
+ { 2, 4506, 0, 14, 0, UNI_LATINEXTB } /* latinextendedb */,
+ { 1, 4896, 0, 4, 0, UNI_BAMU } /* bamu */,
+ { 1, 1667, 8660, 4, 43, UNI_UCASEXTA } /* blk=unifiedcanadianaboriginalsyllabicsextendeda */,
+ { 12, 1823, 232, 7, 4, UNI_SC__YI } /* script=yiii */,
+ { 0, 461, 1015, 2, 6, UNI_TELU } /* istelugu */,
+ { 0, 0, 273, 1, 4, UNI_LB__B2 } /* lb=b2 */,
+ { 3, 2, 5694, 1, 10, UNI_COUNTINGROD } /* countingrod */,
+ { 0, 7752, 2270, 23, 4, UNI_JG__MANICHAEANAYIN } /* joininggroup=manichaeanayin */,
+ { 0, 991, 0, 6, 0, UNI_HATR } /* hatran */,
+ { 0, 1015, 0, 4, 0, UNI_TELU } /* telu */,
+ { 0, 271, 2768, 3, 6, UNI_GCB__XX } /* gcb=other */,
+ { 0, 5769, 599, 4, 2, -UNI_EMOD } /* emod=n */,
+ { 0, 3391, 2107, 14, 8, UNI_NV__5_SLASH_2 } /* numericvalue=2.500e+00 */,
+ { 0, 7011, 1678, 24, 2, UNI_CCC__1 } /* canonicalcombiningclass=ov */,
+ { 17, 2324, 6120, 6, 22, UNI_DIACRITICALSFORSYMBOLS } /* block=diacriticalsforsymbols */,
+ { 1, 1823, 156, 7, 4, UNI_SC__OUGR } /* script=ougr */,
+ { 7, 5916, 934, 21, 6, -UNI_LOE } /* logicalorderexception=false */,
+ { 0, 30, 1941, 1, 13, UNI_GRBASE } /* isgraphemebase */,
+ { 0, 2434, 1037, 7, 4, UNI_MYANMAREXTB } /* myanmarextb */,
+ { 0, 1830, 0, 4, 0, UNI_MLYM } /* mlym */,
+ { 1, 4191, 5671, 8, 3, -UNI_XPOSIXLOWER } /* lowercase=n */,
+ { 1, 32, 353, 2, 4, UNI_VS } /* vs=yes */,
+ { 11, 1823, 3436, 7, 15, UNI_SARB } /* script=oldsoutharabian */,
+ { 2, 6427, 4761, 14, 4, UNI_JG__ALAPH } /* joininggroup=alaph */,
+ { 0, 2220, 2107, 4, 8, UNI_NV__13_SLASH_2 } /* nv=6.500e+00 */,
+ { 7, 5574, 599, 21, 3, -UNI_CWL } /* changeswhenlowercased=no */,
+ { 3, 533, 959, 3, 6, UNI_SB__EX } /* sb=extend */,
+ { 0, 461, 176, 2, 4, UNI_ROHG } /* isrohg */,
+ { 0, 2324, 297, 6, 5, UNI_INORIYA } /* block=oriya */,
+ { 4, 4360, 4206, 10, 15, UNI_LB__OP } /* linebreak=openpunctuation */,
+ { 0, 309, 3228, 2, 15, UNI_INIMPERIALARAMAIC } /* inimperialaramaic */,
+ { 2, 271, 585, 3, 2, UNI_GCB__T } /* gcb=t */,
+ { 1, 2324, 3349, 6, 15, UNI_INMEROITICCURSIVE } /* block=meroiticcursive */,
+ { 17, 1479, 933, 4, 3, -UNI_XPOSIXSPACE } /* space=f */,
+ { 0, 34, 4726, 1, 8, UNI_TANGUTSUP } /* tangutsup */,
+ { 1, 2324, 1914, 6, 7, UNI_UCASEXT } /* block=ucasext */,
+ { 4, 6165, 4089, 3, 4, UNI_SC__SIND } /* sc=sind */,
+ { 3, 3014, 343, 11, 3, UNI_IN__12_DOT_1 } /* presentin=v121 */,
+ { 1, 461, 1241, 2, 7, UNI_NB } /* isnoblock */,
+ { 0, 2302, 352, 9, 3, UNI_IDC } /* idcontinue=y */,
+ { 1, 1455, 274, 10, 1, UNI_dep_values_index } /* deprecated= */,
+ { 1, 309, 917, 2, 8, UNI_INBASSAVAH } /* inbassavah */,
+ { 13, 380, 934, 6, 2, -UNI_HYPHEN } /* hyphen=f */,
+ { 2, 997, 0, 6, 0, UNI_KTHI } /* kaithi */,
+ { 1, 2, 7972, 1, 29, UNI_CUNEIFORMNUMBERS } /* cuneiformnumbersandpunctuation */,
+ { 1, 2536, 20, 3, 2, UNI_JG__HE } /* jg=he */,
+ { 2, 7011, 391, 24, 2, UNI_CCC__34 } /* canonicalcombiningclass=34 */,
+ { 4, 4424, 571, 17, 7, UNI_AVST } /* scriptextensions=avestan */,
+ { 2, 6165, 1978, 3, 7, UNI_SC__SOGD } /* sc=sogdian */,
+ { 4, 1456, 4439, 4, 2, UNI_epres_values_index } /* epres= */,
+ { 2, 1102, 951, 4, 4, UNI_DUPL } /* scx=dupl */,
+ { 1, 6165, 3421, 3, 15, UNI_NARB } /* sc=oldnortharabian */,
+ { 3, 1728, 1037, 6, 4, UNI_ARABICEXTB } /* arabicextb */,
+ { 0, 1200, 3611, 3, 6, UNI_CJKCOMPAT } /* cjkcompat */,
+ { 0, 991, 0, 4, 0, UNI_HATR } /* hatr */,
+ { 0, 4424, 1133, 17, 8, UNI_VITH } /* scriptextensions=vithkuqi */,
+ { 3, 1823, 3228, 7, 15, UNI_ARMI } /* script=imperialaramaic */,
+ { 2, 4424, 6185, 17, 10, UNI_GLAG } /* scriptextensions=glagolitic */,
+ { 1, 2432, 8039, 3, 32, UNI_MISCMATHSYMBOLSA } /* inmiscellaneousmathematicalsymbolsa */,
+ { 0, 30, 6796, 1, 19, UNI_DEVANAGARIEXT } /* isdevanagariextended */,
+ { 15, 7267, 4667, 16, 16, UNI_PE } /* generalcategory=closepunctuation */,
+ { 0, 4424, 951, 17, 4, UNI_DUPL } /* scriptextensions=dupl */,
+ { 35658, 6165, 3436, 3, 15, UNI_SARB } /* sc=oldsoutharabian */,
+ { 2, 2324, 8660, 6, 34, UNI_UCAS } /* block=unifiedcanadianaboriginalsyllabics */,
+ { 0, 7011, 1243, 24, 2, UNI_CCC__BL } /* canonicalcombiningclass=bl */,
+ { 1, 2966, 2767, 3, 7, UNI_INSC__OTHER } /* insc=other */,
+ { 0, 1102, 1294, 4, 9, UNI_NBAT } /* scx=nabataean */,
+ { 7, 2766, 269, 3, 2, UNI_ZP } /* gc=zp */,
+ { 1, 1823, 160, 7, 4, UNI_SC__PHLP } /* script=phlp */,
+ { 0, 309, 854, 2, 7, UNI_INTAIVIET } /* intaiviet */,
+ { 9, 959, 599, 8, 2, -UNI_EXT } /* extender=n */,
+ { 0, 461, 3892, 2, 16, UNI_STERM } /* issentenceterminal */,
+ { 1, 6427, 1046, 13, 5, UNI_JG__KHAPH } /* joininggroup=khaph */,
+ { 1, 8658, 5949, 5, 4, UNI_ANY } /* isunicode */,
+ { 4, 7669, 0, 19, 0, UNI_hst_values_index } /* hangulsyllabletype= */,
+ { 0, 1409, 1674, 5, 4, UNI_LATINEXTD } /* latinextd */,
+ { 2, 461, 1543, 2, 4, UNI_KHAR } /* iskhar */,
+ { 1, 2324, 1033, 6, 4, UNI_JAMO } /* block=jamo */,
+ { 5, 54, 5067, 2, 11, UNI_SC__MANI } /* sc=manichaean */,
+ { 3, 6165, 82, 3, 4, UNI_SC__GONG } /* sc=gong */,
+ { 0, 6163, 0, 14, 0, UNI_INSC__CONSONANT } /* insc=consonant */,
+ { 0, 1479, 5671, 4, 4, -UNI_XPOSIXSPACE } /* space=no */,
+ { 1, 1102, 180, 4, 4, UNI_RUNR } /* scx=runr */,
+ { 4, 6427, 2875, 13, 11, UNI_JG__STRAIGHTWAW } /* joininggroup=straightwaw */,
+ { 0, 271, 7134, 4, 7, UNI_GCB__PP } /* gcb=prepend */,
+ { 2, 1823, 2244, 7, 12, UNI_HUNG } /* script=oldhungarian */,
+ { 0, 406, 0, 4, 0, UNI_DIAK } /* diak */,
+ { 5, 1102, 1027, 4, 6, UNI_YEZI } /* scx=yezidi */,
+ { 3, 8343, 7692, 32, 15, UNI_INSC__CONSONANTINITIALPOSTFIXED } /* indicsyllabiccategory=consonantinitialpostfixed */,
+ { 0, 309, 1572, 2, 10, UNI_INOLDPERSIAN } /* inoldpersian */,
+ { 0, 461, 1144, 2, 9, UNI_BHKS } /* isbhaiksuki */,
+ { 0, 2832, 6193, 8, 12, UNI_CYRILLICSUP } /* iscyrillicsupplement */,
+ { 1, 4502, 590, 16, 2, UNI_LATINEXTE } /* blk=latinextendede */,
+ { 0, 2514, 2643, 3, 12, UNI_MISCTECHNICAL } /* ismisctechnical */,
+ { 0, 1883, 934, 11, 2, -UNI_BIDIC } /* bidicontrol=f */,
+ { 2, 4845, 352, 16, 2, UNI_patws_values_index } /* patternwhitespace= */,
+ { 6, 2324, 7796, 6, 22, UNI_ENCLOSEDIDEOGRAPHICSUP } /* block=enclosedideographicsup */,
+ { 17, 4424, 4176, 17, 4, UNI_HANG } /* scriptextensions=hang */,
+ { 3, 622, 934, 7, 6, -UNI_EXTPICT } /* extpict=false */,
+ { 1, 2324, 1349, 6, 9, UNI_INOLDUYGHUR } /* block=olduyghur */,
+ { 0, 6165, 1819, 3, 4, UNI_SC__MONG } /* sc=mong */,
+ { 1, 3817, 2123, 14, 8, UNI_NV__1_SLASH_64 } /* numericvalue=1.563e-02 */,
+ { 0, 6450, 281, 14, 2, UNI_SB__XX } /* sentencebreak=xx */,
+ { 0, 4970, 584, 16, 3, UNI_EBASE } /* emojimodifierbase=t */,
+ { 7, 3391, 1805, 14, 4, UNI_NV__20000 } /* numericvalue=20000 */,
+ { 2, 5637, 4407, 21, 17, UNI_RI } /* graphemeclusterbreak=regionalindicator */,
+ { 0, 2324, 1117, 6, 8, UNI_INTAGBANWA } /* block=tagbanwa */,
+ { 3, 597, 1743, 3, 4, UNI_DT__VERT } /* dt=vert */,
+ { 2, 6041, 599, 21, 2, UNI_BPT__N } /* bidipairedbrackettype=n */,
+ { 16, 6165, 5857, 3, 9, UNI_SC__MONG } /* sc=mongolian */,
+ { 0, 5532, 934, 21, 2, -UNI_CWCF } /* changeswhencasefolded=f */,
+ { 1, 2766, 50, 3, 2, UNI_MC } /* gc=mc */,
+ { 1, 718, 490, 3, 3, UNI_KANBUN } /* kanbun */,
+ { 0, 257, 0, 4, 0, UNI_CWCM } /* cwcm */,
+ { 0, 3130, 5863, 9, 6, UNI_GEORGIANSUP } /* blk=georgiansup */,
+ { 0, 1823, 450, 7, 4, UNI_MIAO } /* script=plrd */,
+ { 2, 552, 557, 4, 3, UNI_AGE__6 } /* age=6.0 */,
+ { 0, 1102, 6185, 4, 10, UNI_GLAG } /* scx=glagolitic */,
+ { 1, 6062, 1183, 7, 8, UNI_EMOTICONS } /* block=emoticons */,
+ { 57317, 1075, 0, 4, 0, UNI_NV__2 } /* nv=2 */,
+ { 0, 1174, 1933, 3, 9, UNI_EA__A } /* ea=ambiguous */,
+ { 0, 30, 4553, 1, 10, UNI_TITLE } /* istitlecase */,
+ { 0, 4043, 0, 4, 0, UNI_IDSB } /* idsb */,
+ { 3, 466, 82, 2, 2, UNI_SOGO } /* sogo */,
+ { 1, 1667, 3475, 4, 15, UNI_INZANABAZARSQUARE } /* blk=zanabazarsquare */,
+ { 0, 7011, 1905, 24, 2, UNI_CCC__DB } /* canonicalcombiningclass=db */,
+ { 0, 461, 1894, 2, 12, UNI_BIDIM } /* isbidimirrored */,
+ { 0, 309, 1779, 2, 11, UNI_INMEDEFAIDRIN } /* inmedefaidrin */,
+ { 0, 5637, 6, 21, 2, UNI_LB__CR } /* graphemeclusterbreak=cr */,
+ { 2, 725, 0, 7, 0, UNI_KALI } /* kayahli */,
+ { 5, 1200, 377, 3, 4, UNI_CJKEXTH } /* cjkexth */,
+ { 8, 4043, 934, 17, 2, -UNI_IDSB } /* idsbinaryoperator=f */,
+ { 0, 2324, 8214, 7, 32, UNI_DIACRITICALSEXT } /* block=combiningdiacriticalmarksextended */,
+ { 1, 6165, 236, 3, 4, UNI_ZANB } /* sc=zanb */,
+ { 3, 2832, 1037, 10, 4, UNI_CYRILLICEXTB } /* iscyrillicextb */,
+ { 2, 4424, 137, 18, 3, UNI_MYMR } /* scriptextensions=mymr */,
+ { 4, 4360, 7804, 10, 11, UNI_LB__ID } /* linebreak=ideographic */,
+ { 5, 2401, 0, 10, 0, UNI_INETHIOPIC } /* inethiopic */,
+ { 0, 461, 1872, 2, 11, UNI_YISYLLABLES } /* isyisyllables */,
+ { 2, 3502, 4511, 12, 9, UNI_ETHIOPICEXTB } /* blk=ethiopicextendedb */,
+ { 3, 7495, 345, 27, 2, UNI_CCC__18 } /* canonicalcombiningclass=ccc18 */,
+ { 5, 4651, 0, 16, 0, UNI_BOPOMOFOEXT } /* bopomofoextended */,
+ { 0, 1667, 5373, 4, 11, UNI_TAIXUANJING } /* blk=taixuanjing */,
+ { 0, 4206, 0, 15, 0, UNI_PS } /* openpunctuation */,
+ { 0, 1667, 7449, 4, 28, UNI_PHONETICEXTSUP } /* blk=phoneticextensionssupplement */,
+ { 3, 1102, 790, 4, 4, UNI_KALI } /* scx=kali */,
+ { 1, 7383, 6310, 10, 20, UNI_BC__PDF } /* bidiclass=popdirectionalformat */,
+ { 1, 1272, 8474, 5, 23, UNI_CJKCOMPATIDEOGRAPHS } /* iscjkcompatibilityideographs */,
+ { 1, 1102, 39, 4, 4, UNI_BHKS } /* scx=bhks */,
+ { 1, 6185, 0, 4, 0, UNI_GLAG } /* glag */,
+ { 2, 5353, 0, 20, 0, UNI_PHLI } /* inscriptionalpahlavi */,
+ { 0, 2766, 3709, 3, 11, UNI_MC } /* gc=spacingmark */,
+ { 0, 4360, 4667, 10, 16, UNI_LB__CL } /* linebreak=closepunctuation */,
+ { 2, 30, 1925, 1, 7, UNI_S } /* issymbol */,
+ { 0, 3391, 759, 13, 4, UNI_NV___MINUS_1_SLASH_2 } /* numericvalue=-1/2 */,
+ { 2, 1942, 584, 11, 3, UNI_GRBASE } /* graphemebase=t */,
+ { 1, 3093, 585, 13, 5, UNI_POSIXXDIGIT } /* asciihexdigit=true */,
+ { 3, 1102, 1209, 4, 4, UNI_THAI } /* scx=thai */,
+ { 3, 3013, 585, 5, 2, UNI_EPRES } /* epres=t */,
+ { 0, 7274, 3191, 8, 13, UNI_NL } /* category=letternumber */,
+ { 0, 3817, 769, 14, 3, UNI_NV__17_SLASH_2 } /* numericvalue=17/2 */,
+ { 4, 1667, 5897, 4, 19, UNI_SUPARROWSC } /* blk=supplementalarrowsc */,
+ { 0, 461, 283, 2, 5, UNI_NSHU } /* isnushu */,
+ { 1, 2018, 584, 10, 3, UNI_JT__T } /* joiningtype=t */,
+ { 1, 309, 1367, 2, 9, UNI_INPAUCINHAU } /* inpaucinhau */,
+ { 0, 597, 693, 3, 3, UNI_DT__ISO } /* dt=iso */,
+ { 0, 7383, 6291, 11, 19, UNI_BC__LRE } /* bidiclass=lefttorightembedding */,
+ { 2, 5156, 5769, 10, 9, UNI_WB__EB } /* wordbreak=emodifier */,
+ { 0, 5156, 3064, 10, 11, UNI_WB__SQ } /* wordbreak=singlequote */,
+ { 5, 2391, 7467, 10, 13, UNI_CYRILLICSUP } /* incyrillicsupplementary */,
+ { 7, 3633, 4698, 6, 5, UNI_LATIN1 } /* inlatin1sup */,
+ { 1, 6165, 6642, 3, 6, UNI_BRAH } /* sc=brahmi */,
+ { 3, 1102, 1465, 4, 10, UNI_DIAK } /* scx=divesakuru */,
+ { 1, 1102, 402, 4, 4, UNI_ARMN } /* scx=armn */,
+ { 2, 2766, 225, 3, 2, UNI_PE } /* gc=pe */,
+ { 1, 6735, 661, 22, 2, UNI_JG__MALAYALAMRA } /* joininggroup=malayalamra */,
+ { 3, 461, 6776, 2, 21, UNI_MEETEIMAYEKEXT } /* ismeeteimayekextensions */,
+ { 4, 5216, 0, 15, 0, UNI_LATINEXTE } /* block=latinexte */,
+ { 0, 1391, 1645, 3, 7, UNI_WB__LE } /* wb=aletter */,
+ { 2, 461, 1696, 2, 11, UNI_DOMINO } /* isdominotiles */,
+ { 1, 461, 951, 2, 4, UNI_DUPL } /* isdupl */,
+ { 7, 4424, 673, 17, 5, UNI_OSGE } /* scriptextensions=osage */,
+ { 2, 4519, 4511, 14, 9, UNI_CYRILLICEXTB } /* block=cyrillicextendedb */,
+ { 10, 7648, 3276, 18, 3, UNI_DT__ENC } /* decompositiontype=enc */,
+ { 2, 4424, 668, 17, 5, UNI_OGAM } /* scriptextensions=ogham */,
+ { 3, 2301, 933, 10, 7, -UNI_XIDC } /* xidcontinue=false */,
+ { 0, 6735, 783, 22, 3, UNI_JG__MALAYALAMNYA } /* joininggroup=malayalamnya */,
+ { 12, 1102, 909, 4, 8, UNI_BALI } /* scx=balinese */,
+ { 0, 2665, 599, 13, 3, -UNI_PATSYN } /* patternsyntax=no */,
+ { 1, 271, 3191, 2, 7, UNI_L } /* gc=letter */,
+ { 0, 461, 663, 2, 5, UNI_LIMB } /* islimbu */,
+ { 0, 461, 6103, 2, 13, UNI_MATHOPERATORS } /* ismathoperators */,
+ { 0, 2536, 4235, 3, 4, UNI_JG__BETH } /* jg=beth */,
+ { 0, 753, 1792, 3, 5, UNI_NFCQC__M } /* nfkcqc=m */,
+ { 5, 2966, 5409, 3, 17, UNI_SMALLKANAEXT } /* insmallkanaextension */,
+ { 10, 7011, 2290, 25, 2, UNI_CCC__214 } /* canonicalcombiningclass=214 */,
+ { 2, 7274, 3709, 9, 11, UNI_MC } /* category=spacingmark */,
+ { 1, 7274, 199, 9, 2, UNI_TITLE } /* category=lt */,
+ { 0, 7404, 1715, 21, 7, UNI_BC__RLI } /* bidiclass=righttoleftisolate */,
+ { 0, 3391, 1803, 12, 9, UNI_NV__10000000 } /* numericvalue=10000000 */,
+ { 4, 1102, 1438, 4, 10, UNI_CHRS } /* scx=chorasmian */,
+ { 16, 6450, 325, 14, 2, UNI_SB__UP } /* sentencebreak=up */,
+ { 3, 2732, 1037, 10, 4, UNI_ARABICEXTB } /* blk=arabicextb */,
+ { 1, 3817, 389, 14, 1, UNI_NV__16 } /* numericvalue=16 */,
+ { 1, 4845, 5671, 16, 3, -UNI__PERL_PATWS } /* patternwhitespace=n */,
+ { 1, 2, 3938, 1, 16, UNI_UCAS } /* canadiansyllabics */,
+ { 2, 1823, 1205, 7, 4, UNI_SC__GRAN } /* script=gran */,
+ { 0, 2536, 2566, 3, 3, UNI_JG__HEH } /* jg=heh */,
+ { 0, 410, 0, 4, 0, UNI_GONM } /* gonm */,
+ { 5, 2514, 2057, 3, 11, UNI_MATHALPHANUM } /* ismathalphanum */,
+ { 0, 1198, 8214, 3, 32, UNI_DIACRITICALSEXT } /* incombiningdiacriticalmarksextended */,
+ { 2, 309, 6693, 3, 21, UNI_TRANSPORTANDMAP } /* intransportandmapsymbols */,
+ { 0, 7591, 3001, 3, 7, UNI_LB__NU } /* lb=numeric */,
+ { 2, 6427, 7328, 13, 14, UNI_JG__NOJOININGGROUP } /* joininggroup=nojoininggroup */,
+ { 2, 65, 0, 2, 0, UNI_MN } /* mn */,
+ { 0, 1823, 333, 7, 4, UNI_CARI } /* script=cari */,
+ { 1, 33, 463, 1, 3, UNI_SHAW } /* shaw */,
+ { 0, 1906, 3622, 7, 3, UNI_KANGXI } /* blk=kangxi */,
+ { 0, 6427, 7342, 13, 14, UNI_JG__HAMZAONHEHGOAL } /* joininggroup=tehmarbutagoal */,
+ { 0, 5937, 2931, 20, 3, UNI__PERL_NCHAR } /* noncharactercodepoint=t */,
+ { 1, 461, 4620, 2, 16, UNI_LINEARBSYLLABARY } /* islinearbsyllabary */,
+ { 4, 461, 3984, 2, 17, UNI_EPRES } /* isemojipresentation */,
+ { 10, 2766, 3706, 3, 14, UNI_MN } /* gc=nonspacingmark */,
+ { 1, 2536, 6205, 3, 19, UNI_JG__BURUSHASKIYEHBARREE } /* jg=burushaskiyehbarree */,
+ { 2, 1823, 1223, 7, 4, UNI_SC__KANA } /* script=kana */,
+ { 0, 6165, 5440, 3, 20, UNI_HMNP } /* sc=nyiakengpuachuehmong */,
+ { 4, 1272, 1214, 3, 3, UNI_CHER } /* ischer */,
+ { 1, 1715, 440, 4, 2, UNI_OLCK } /* isolck */,
+ { 0, 292, 1318, 3, 3, UNI_NV__200 } /* nv=200 */,
+ { 0, 461, 1397, 2, 4, UNI_IDST } /* isidst */,
+ { 1, 461, 5068, 2, 4, UNI_MANI } /* ismani */,
+ { 0, 2280, 2656, 10, 3, UNI_IN__5 } /* presentin=5.0 */,
+ { 0, 1059, 599, 6, 2, UNI_NFKDQC__N } /* nfkdqc=n */,
+ { 0, 552, 386, 4, 3, UNI_AGE__3_DOT_2 } /* age=3.2 */,
+ { 1, 6185, 0, 20, 0, UNI_GLAGOLITICSUP } /* glagoliticsupplement */,
+ { 0, 1667, 825, 4, 7, UNI_SHAW } /* blk=shavian */,
+ { 1, 916, 584, 4, 3, UNI_EBASE } /* ebase=t */,
+ { 0, 6165, 1144, 3, 9, UNI_BHKS } /* sc=bhaiksuki */,
+ { 0, 1396, 353, 8, 2, UNI_XIDS } /* xidstart=y */,
+ { 1, 1102, 120, 4, 4, UNI_LAO } /* scx=laoo */,
+ { 4, 1667, 746, 4, 7, UNI_INMARCHEN } /* blk=marchen */,
+ { 1, 30, 1591, 1, 11, UNI_INSAURASHTRA } /* insaurashtra */,
+ { 2, 3349, 0, 15, 0, UNI_MERC } /* meroiticcursive */,
+ { 6, 339, 8030, 4, 9, UNI_CCC__AL } /* ccc=aboveleft */,
+ { 16, 1424, 2290, 7, 2, UNI_CCC__14 } /* ccc=ccc14 */,
+ { 1, 461, 1212, 2, 9, UNI_QAAI } /* isinherited */,
+ { 1, 6450, 5090, 13, 6, UNI_SB__CL } /* sentencebreak=close */,
+ { 3, 1011, 599, 2, 2, -UNI_CI } /* ci=n */,
+ { 0, 4424, 3692, 17, 4, UNI_LISU } /* scriptextensions=lisu */,
+ { 0, 257, 934, 4, 2, -UNI_CWCM } /* cwcm=f */,
+ { 0, 1102, 1572, 4, 10, UNI_XPEO } /* scx=oldpersian */,
+ { 2, 292, 393, 3, 2, UNI_NV__15 } /* nv=15 */,
+ { 2, 7669, 32, 20, 1, UNI_LB__H2 } /* hangulsyllabletype=lv */,
+ { 1, 261, 353, 5, 4, UNI_CWKCF } /* cwkcf=yes */,
+ { 3, 6165, 732, 3, 7, UNI_SC__LINA } /* sc=lineara */,
+ { 2, 7648, 363, 18, 3, UNI_DT__SML } /* decompositiontype=sml */,
+ { 0, 339, 388, 4, 2, UNI_CCC__26 } /* ccc=26 */,
+ { 3, 309, 8619, 2, 21, UNI_MATHOPERATORS } /* inmathematicaloperators */,
+ { 8, 3514, 2705, 7, 13, UNI_ANCIENTSYMBOLS } /* block=ancientsymbols */,
+ { 0, 8343, 2613, 22, 6, UNI_LB__ZWJ } /* indicsyllabiccategory=joiner */,
+ { 2, 609, 928, 2, 3, UNI_LB__OP } /* lb=op */,
+ { 0, 2483, 585, 5, 2, UNI_CASED } /* cased=t */,
+ { 3, 5460, 934, 19, 6, -UNI_TERM } /* terminalpunctuation=false */,
+ { 0, 21, 7241, 1, 10, UNI_ENCLOSEDCJK } /* enclosedcjk */,
+ { 8, 3021, 295, 4, 2, UNI_IN__9 } /* in=v90 */,
+ { 16, 7591, 2944, 3, 11, UNI_LB__BB } /* lb=breakbefore */,
+ { 1, 4360, 63, 10, 2, UNI_LB__CP } /* linebreak=cp */,
+ { 3, 4941, 1037, 10, 4, UNI_KANAEXTB } /* block=kanaextb */,
+ { 0, 6165, 1465, 3, 10, UNI_DIAK } /* sc=divesakuru */,
+ { 0, 3013, 934, 5, 6, -UNI_EPRES } /* epres=false */,
+ { 0, 1667, 3093, 4, 5, UNI_ASCII } /* blk=ascii */,
+ { 0, 1191, 0, 4, 0, UNI_BENG } /* beng */,
+ { 4, 1397, 598, 3, 3, -UNI_IDST } /* idst=n */,
+ { 2, 309, 2222, 2, 2, UNI_IN__6 } /* in=6 */,
+ { 0, 4360, 9, 10, 2, UNI_LB__CM } /* linebreak=cm */,
+ { 7, 461, 2468, 2, 13, UNI_IPAEXT } /* isipaextensions */,
+ { 1, 3490, 1037, 12, 4, UNI_CYRILLICEXTB } /* blk=cyrillicextb */,
+ { 1, 4424, 430, 17, 4, UNI_NKO } /* scriptextensions=nkoo */,
+ { 0, 1667, 4176, 4, 15, UNI_INHANGUL } /* blk=hangulsyllables */,
+ { 0, 2766, 6677, 3, 14, UNI_LM } /* gc=modifierletter */,
+ { 1, 19, 599, 4, 2, -UNI_POSIXXDIGIT } /* ahex=n */,
+ { 7, 6427, 484, 13, 3, UNI_JG__HAH } /* joininggroup=hah */,
+ { 5, 6165, 527, 3, 6, UNI_RJNG } /* sc=rejang */,
+ { 4, 1086, 0, 4, 0, UNI_KTHI } /* kthi */,
+ { 4, 7011, 6289, 23, 5, UNI_CCC__L } /* canonicalcombiningclass=left */,
+ { 4, 7752, 225, 23, 2, UNI_JG__MANICHAEANPE } /* joininggroup=manichaeanpe */,
+ { 0, 6165, 369, 3, 6, UNI_GOTH } /* sc=gothic */,
+ { 2, 1667, 5185, 4, 20, UNI_INANATOLIANHIEROGLYPHS } /* blk=anatolianhieroglyphs */,
+ { 2, 1391, 1652, 3, 7, UNI_WB__NL } /* wb=newline */,
+ { 2, 1065, 2083, 4, 8, UNI_NV__1_SLASH_9 } /* nv=1.111e-01 */,
+ { 0, 5156, 1645, 10, 7, UNI_WB__LE } /* wordbreak=aletter */,
+ { 0, 2232, 2119, 8, 4, UNI_NV__1_SLASH_12 } /* nv=8.333e-02 */,
+ { 0, 292, 2106, 3, 9, UNI_NV__3_SLASH_2 } /* nv=1.500e+00 */,
+ { 4, 6870, 353, 20, 2, UNI_CE } /* compositionexclusion=y */,
+ { 4, 3817, 3876, 15, 2, UNI_NV__1_SLASH_80 } /* numericvalue=1/80 */,
+ { 0, 4424, 5876, 17, 9, UNI_SUND } /* scriptextensions=sundanese */,
+ { 2, 7537, 353, 10, 2, UNI_XPOSIXALPHA } /* alphabetic=y */,
+ { 0, 1272, 7972, 3, 29, UNI_CUNEIFORMNUMBERS } /* iscuneiformnumbersandpunctuation */,
+ { 8, 1455, 934, 3, 2, -UNI_DEP } /* dep=f */,
+ { 1, 1823, 5958, 7, 7, UNI_SC__SINH } /* script=sinhala */,
+ { 0, 5065, 4255, 13, 4, UNI_JG__MANICHAEANRESH } /* jg=manichaeanresh */,
+ { 0, 7274, 4602, 9, 18, UNI_PI } /* category=initialpunctuation */,
+ { 2, 1102, 369, 4, 4, UNI_GOTH } /* scx=goth */,
+ { 5, 2348, 5671, 12, 4, -UNI_CI } /* caseignorable=no */,
+ { 1, 2718, 327, 3, 3, UNI_BC__FSI } /* bc=fsi */,
+ { 1, 3021, 3861, 4, 2, UNI_IN__7 } /* in=v70 */,
+ { 4, 6165, 414, 3, 3, UNI_SC__HAN } /* sc=han */,
+ { 1, 4043, 353, 4, 4, UNI_IDSB } /* idsb=yes */,
+ { 2, 2002, 1479, 7, 5, UNI_POSIXSPACE } /* isposixspace */,
+ { 4, 8246, 5308, 24, 15, UNI_LOE } /* indicpositionalcategory=visualorderleft */,
+ { 2, 4424, 462, 17, 4, UNI_SHAW } /* scriptextensions=shaw */,
+ { 4, 2220, 0, 12, 0, UNI_NV__1_SLASH_16 } /* nv=6.250e-02 */,
+ { 4, 1455, 353, 3, 2, UNI_DEP } /* dep=y */,
+ { 0, 3791, 585, 4, 5, UNI_MATH } /* math=true */,
+ { 0, 2280, 2080, 11, 3, UNI_IN__11 } /* presentin=11.0 */,
+ { 1, 622, 934, 7, 2, -UNI_EXTPICT } /* extpict=f */,
+ { 2, 2068, 0, 4, 0, UNI_MEND } /* mend */,
+ { 0, 6427, 6205, 13, 19, UNI_JG__BURUSHASKIYEHBARREE } /* joininggroup=burushaskiyehbarree */,
+ { 0, 461, 3101, 2, 5, UNI_XPOSIXDIGIT } /* isdigit */,
+ { 2, 3817, 891, 15, 2, UNI_NV__1_SLASH_10 } /* numericvalue=1/10 */,
+ { 0, 2324, 3228, 6, 15, UNI_INIMPERIALARAMAIC } /* block=imperialaramaic */,
+ { 0, 2, 1966, 1, 9, UNI_COMPATJAMO } /* compatjamo */,
+ { 0, 30, 5124, 1, 20, UNI_OTTOMANSIYAQNUMBERS } /* isottomansiyaqnumbers */,
+ { 3, 6062, 5848, 14, 9, UNI_ETHIOPICEXTA } /* block=ethiopicextendeda */,
+ { 7, 4407, 274, 17, 1, UNI_ri_values_index } /* regionalindicator= */,
+ { 0, 7011, 2735, 23, 3, UNI_CCC__AR } /* canonicalcombiningclass=ar */,
+ { 1, 30, 2263, 1, 3, UNI_DI } /* isdi */,
+ { 0, 7011, 288, 24, 2, UNI_CCC__30 } /* canonicalcombiningclass=30 */,
+ { 1, 6866, 353, 24, 4, UNI_COMPEX } /* fullcompositionexclusion=yes */,
+ { 0, 7537, 353, 10, 4, UNI_XPOSIXALPHA } /* alphabetic=yes */,
+ { 0, 1667, 499, 4, 6, UNI_INLYDIAN } /* blk=lydian */,
+ { 1, 597, 1127, 3, 3, UNI_DT__FIN } /* dt=fin */,
+ { 0, 298, 274, 2, 1, UNI_ri_values_index } /* ri= */,
+ { 0, 1223, 5848, 4, 9, UNI_KANAEXTA } /* kanaextendeda */,
+ { 2, 1823, 1975, 7, 10, UNI_SOGO } /* script=oldsogdian */,
+ { 1, 271, 363, 4, 2, UNI_GCB__SM } /* gcb=sm */,
+ { 1, 3848, 0, 14, 0, UNI_NV__7 } /* numericvalue=7 */,
+ { 0, 309, 3663, 2, 10, UNI_INDEVANAGARI } /* indevanagari */,
+ { 2, 622, 598, 6, 2, UNI_extpict_values_index } /* extpict= */,
+ { 0, 2324, 4176, 6, 6, UNI_INHANGUL } /* block=hangul */,
+ { 0, 1065, 2131, 4, 8, UNI_NV__1_SLASH_6 } /* nv=1.667e-01 */,
+ { 0, 461, 236, 2, 4, UNI_ZANB } /* iszanb */,
+ { 0, 2018, 2908, 12, 11, UNI_JT__C } /* joiningtype=joincausing */,
+ { 0, 461, 13, 2, 2, UNI_LM } /* islm */,
+ { 1, 3130, 5292, 6, 16, UNI_INPUNCTUATION } /* blk=generalpunctuation */,
+ { 0, 461, 3098, 2, 8, UNI_XPOSIXXDIGIT } /* ishexdigit */,
+ { 1, 1823, 414, 7, 3, UNI_SC__HAN } /* script=han */,
+ { 0, 4360, 2599, 10, 10, UNI_LB__NS } /* linebreak=nonstarter */,
+ { 1, 6120, 0, 22, 0, UNI_DIACRITICALSFORSYMBOLS } /* diacriticalsforsymbols */,
+ { 0, 7383, 4827, 10, 18, UNI_BC__B } /* bidiclass=paragraphseparator */,
+ { 1, 7591, 4667, 3, 16, UNI_LB__CL } /* lb=closepunctuation */,
+ { 0, 1243, 8073, 4, 22, UNI_CJK } /* block=cjkunifiedideographs */,
+ { 1, 5658, 6374, 15, 8, UNI_IDENTIFIERTYPE__OBSOLETE } /* identifiertype=obsolete */,
+ { 1, 887, 546, 5, 3, UNI_AGE__13 } /* age=13.0 */,
+ { 1, 1801, 0, 8, 0, UNI_NV__10000 } /* nv=10000 */,
+ { 0, 2324, 2068, 6, 12, UNI_INMENDEKIKAKUI } /* block=mendekikakui */,
+ { 0, 1102, 658, 4, 5, UNI_DOGR } /* scx=dogra */,
+ { 0, 5916, 353, 21, 2, UNI_LOE } /* logicalorderexception=y */,
+ { 2, 1823, 5067, 6, 5, UNI_SC__MANI } /* script=mani */,
+ { 2, 8601, 837, 10, 3, UNI_SUPPUAA } /* block=suppuaa */,
+ { 2, 253, 353, 4, 4, UNI_CWCF } /* cwcf=yes */,
+ { 16, 1823, 673, 7, 5, UNI_OSGE } /* script=osage */,
+ { 0, 30, 4089, 1, 18, UNI_INDICSIYAQNUMBERS } /* isindicsiyaqnumbers */,
+ { 1, 152, 0, 4, 0, UNI_OSGE } /* osge */,
+ { 0, 641, 644, 3, 4, UNI_LB__H3 } /* hst=lvt */,
+ { 2, 2287, 2199, 4, 3, UNI_IN__12 } /* in=12.0 */,
+ { 3, 5156, 1829, 9, 3, UNI_WB__ML } /* wordbreak=ml */,
+ { 2, 461, 3093, 2, 13, UNI_POSIXXDIGIT } /* isasciihexdigit */,
+ { 4, 3391, 2155, 13, 9, UNI_NV__1_SLASH_32 } /* numericvalue=3.125e-02 */,
+ { 0, 1102, 446, 4, 4, UNI_PHLI } /* scx=phli */,
+ { 10, 2324, 4896, 6, 8, UNI_BAMUMSUP } /* block=bamumsup */,
+ { 0, 309, 8142, 2, 32, UNI_IDEOGRAPHICSYMBOLS } /* inideographicsymbolsandpunctuation */,
+ { 1, 1272, 6228, 4, 8, UNI_CJKSYMBOLS } /* iscjksymbols */,
+ { 0, 461, 967, 2, 8, UNI_GUJR } /* isgujarati */,
+ { 0, 3724, 919, 12, 3, UNI_JG__MALAYALAMSSA } /* jg=malayalamssa */,
+ { 0, 461, 5769, 2, 4, UNI_EMOD } /* isemod */,
+ { 4, 4502, 5848, 9, 9, UNI_LATINEXTA } /* blk=latinextendeda */,
+ { 1, 2766, 1611, 3, 2, UNI_LOWERCASELETTER } /* gc=ll */,
+ { 2, 7495, 582, 28, 2, UNI_CCC__122 } /* canonicalcombiningclass=ccc122 */,
+ { 1, 4043, 934, 4, 6, -UNI_IDSB } /* idsb=false */,
+ { 5, 6165, 840, 3, 7, UNI_SC__TGLG } /* sc=tagalog */,
+ { 3, 461, 1610, 2, 3, UNI_ALL } /* isall */,
+ { 0, 2842, 6142, 3, 21, UNI_EARLYDYNASTICCUNEIFORM } /* isearlydynasticcuneiform */,
+ { 0, 461, 454, 2, 4, UNI_PRTI } /* isprti */,
+ { 0, 2766, 3263, 3, 13, UNI_XPOSIXDIGIT } /* gc=decimalnumber */,
+ { 0, 3817, 2091, 14, 8, UNI_NV__1_SLASH_8 } /* numericvalue=1.250e-01 */,
+ { 3, 1424, 288, 8, 2, UNI_CCC__130 } /* ccc=ccc130 */,
+ { 0, 309, 32, 2, 2, UNI_INVS } /* invs */,
+ { 0, 499, 0, 4, 0, UNI_LYDI } /* lydi */,
+ { 2, 5065, 3740, 13, 3, UNI_JG__MANICHAEANMEM } /* jg=manichaeanmem */,
+ { 4, 597, 604, 3, 4, UNI_EA__F } /* dt=wide */,
+ { 0, 6103, 0, 13, 0, UNI_MATHOPERATORS } /* mathoperators */,
+ { 1, 2403, 4511, 8, 9, UNI_ETHIOPICEXTB } /* ethiopicextendedb */,
+ { 0, 309, 1562, 2, 10, UNI_INNAGMUNDARI } /* innagmundari */,
+ { 0, 32, 353, 2, 2, UNI_VS } /* vs=y */,
+ { 3, 7274, 117, 9, 2, UNI_XPOSIXDIGIT } /* category=nd */,
+ { 8, 7804, 599, 11, 2, -UNI_IDEO } /* ideographic=n */,
+ { 1, 7084, 4659, 8, 9, UNI_ARABICEXTC } /* inarabicextendedc */,
+ { 2, 1823, 1358, 7, 4, UNI_PALM } /* script=palm */,
+ { 29636, 309, 3663, 2, 13, UNI_DEVANAGARIEXT } /* indevanagariext */,
+ { 0, 3391, 0, 13, 0, UNI_nv_values_index } /* numericvalue= */,
+ { 8, 461, 5876, 2, 4, UNI_SUND } /* issund */,
+ { 2, 2718, 5497, 3, 18, UNI_BC__FSI } /* bc=firststrongisolate */,
+ { 0, 7752, 636, 23, 3, UNI_JG__MANICHAEANNUN } /* joininggroup=manichaeannun */,
+ { 3, 461, 537, 2, 6, UNI_TNSA } /* istangsa */,
+ { 0, 6510, 0, 24, 0, UNI_HIGHPUSURROGATES } /* highprivateusesurrogates */,
+ { 0, 1102, 1125, 4, 8, UNI_TFNG } /* scx=tifinagh */,
+ { 2, 2220, 0, 4, 0, UNI_NV__6 } /* nv=6 */,
+ { 0, 7480, 0, 14, 0, UNI_PUA } /* privateusearea */,
+ { 0, 1823, 3538, 7, 7, UNI_SC__CPRT } /* script=cypriot */,
+ { 2, 1530, 1505, 6, 4, UNI_KANAEXTA } /* iskanaexta */,
+ { 0, 461, 2301, 2, 11, UNI_XIDC } /* isxidcontinue */,
+ { 6, 1667, 3649, 4, 11, UNI_PHONETICEXT } /* blk=phoneticext */,
+ { 6, 3803, 599, 14, 3, UNI_NFKCQC__N } /* nfkcquickcheck=no */,
+ { 2, 7669, 3218, 20, 10, UNI_GCB__L } /* hangulsyllabletype=leadingjamo */,
+ { 0, 461, 132, 2, 4, UNI_MTEI } /* ismtei */,
+ { 2, 3490, 5848, 12, 9, UNI_CYRILLICEXTA } /* blk=cyrillicextendeda */,
+ { 0, 6076, 5292, 8, 16, UNI_INPUNCTUATION } /* block=generalpunctuation */,
+ { 4, 4424, 2780, 17, 6, UNI_COPT } /* scriptextensions=coptic */,
+ { 0, 309, 2009, 2, 6, UNI_INSYRIAC } /* insyriac */,
+ { 0, 461, 2301, 2, 4, UNI_XIDC } /* isxidc */,
+ { 2, 1823, 1582, 7, 10, UNI_PHNX } /* script=phoenician */,
+ { 0, 1102, 1107, 5, 3, UNI_TALU } /* scx=talu */,
+ { 14, 5958, 0, 4, 0, UNI_SINH } /* sinh */,
+ { 0, 3724, 699, 4, 3, UNI_JG__MEEM } /* jg=meem */,
+ { 0, 309, 5876, 2, 12, UNI_SUNDANESESUP } /* insundanesesup */,
+ { 8, 2324, 2335, 6, 13, UNI_BLOCKELEMENTS } /* block=blockelements */,
+ { 0, 1994, 585, 7, 5, UNI_RADICAL } /* radical=true */,
+ { 4, 3677, 4770, 15, 10, UNI_LATINEXTADDITIONAL } /* islatinextendedadditional */,
+ { 0, 6165, 1592, 3, 10, UNI_SAUR } /* sc=saurashtra */,
+ { 3, 253, 274, 4, 1, UNI_cwcf_values_index } /* cwcf= */,
+ { 0, 6163, 4119, 5, 12, UNI_INSC__NUMBERJOINER } /* insc=numberjoiner */,
+ { 0, 2018, 5089, 10, 3, UNI_JT__C } /* joiningtype=c */,
+ { 0, 732, 5652, 4, 8, UNI_LB__ID } /* linebreak=id */,
+ { 0, 2514, 129, 3, 3, UNI_MEDF } /* ismedf */,
+ { 0, 406, 0, 3, 0, UNI_DIA } /* dia */,
+ { 0, 3633, 1674, 7, 4, UNI_LATINEXTD } /* inlatinextd */,
+ { 0, 1102, 4896, 4, 5, UNI_BAMU } /* scx=bamum */,
+ { 1, 7198, 4457, 6, 15, UNI_SUTTONSIGNWRITING } /* blk=suttonsignwriting */,
+ { 1, 4941, 4511, 10, 9, UNI_KANAEXTB } /* block=kanaextendedb */,
+ { 0, 461, 32, 2, 2, UNI_VS } /* isvs */,
+ { 0, 2324, 5876, 6, 19, UNI_SUNDANESESUP } /* block=sundanesesupplement */,
+ { 2, 6165, 1262, 3, 7, UNI_SOYO } /* sc=soyombo */,
+ { 0, 1396, 0, 4, 0, UNI_XIDS } /* xids */,
+ { 0, 1823, 653, 7, 5, UNI_SC__BUHD } /* script=buhid */,
+ { 2, 533, 54, 3, 2, UNI_SB__SC } /* sb=sc */,
+ { 4, 4424, 3436, 17, 15, UNI_SARB } /* scriptextensions=oldsoutharabian */,
+ { 2, 5799, 837, 6, 3, UNI_SUPPUAA } /* insuppuaa */,
+ { 1, 4970, 352, 16, 2, UNI_ebase_values_index } /* emojimodifierbase= */,
+ { 5, 1667, 2852, 4, 7, UNI_MAHJONG } /* blk=mahjong */,
+ { 0, 2391, 4659, 10, 9, UNI_CYRILLICEXTC } /* incyrillicextendedc */,
+ { 1, 2766, 625, 3, 2, UNI_PI } /* gc=pi */,
+ { 0, 2930, 2919, 3, 11, UNI_JT__L } /* jt=leftjoining */,
+ { 4, 309, 3349, 2, 15, UNI_INMEROITICCURSIVE } /* inmeroiticcursive */,
+ { 0, 7084, 0, 26, 0, UNI_ARABICPFB } /* inarabicpresentationformsb */,
+ { 0, 7011, 3526, 24, 12, UNI_CCC__0 } /* canonicalcombiningclass=notreordered */,
+ { 1, 5939, 934, 5, 2, -UNI__PERL_NCHAR } /* nchar=f */,
+ { 2, 1823, 909, 7, 4, UNI_BALI } /* script=bali */,
+ { 0, 1200, 6557, 3, 19, UNI_CJKCOMPATIDEOGRAPHSSUP } /* cjkcompatideographssup */,
+ { 2, 2494, 3639, 9, 9, UNI_GEORGIANEXT } /* isgeorgianextended */,
+ { 0, 2324, 6900, 6, 14, UNI_BYZANTINEMUSIC } /* block=byzantinemusic */,
+ { 1, 6816, 599, 25, 2, -UNI_CWKCF } /* changeswhennfkccasefolded=n */,
+ { 0, 5065, 2015, 13, 3, UNI_JG__MANICHAEANWAW } /* jg=manichaeanwaw */,
+ { 4, 5205, 1505, 11, 4, UNI_MYANMAREXTA } /* blk=myanmarexta */,
+ { 0, 3677, 204, 9, 2, UNI_LATINEXTF } /* islatinextf */,
+ { 0, 292, 295, 3, 2, UNI_NV__90 } /* nv=90 */,
+ { 0, 4360, 2609, 10, 10, UNI_LB__WJ } /* linebreak=wordjoiner */,
+ { 3, 5595, 585, 21, 2, UNI_CWT } /* changeswhentitlecased=t */,
+ { 3, 7011, 344, 24, 3, UNI_CCC__BL } /* canonicalcombiningclass=218 */,
+ { 0, 6165, 499, 3, 6, UNI_LYDI } /* sc=lydian */,
+ { 0, 461, 7537, 2, 27, UNI_ALPHABETICPF } /* isalphabeticpresentationforms */,
+ { 1, 4407, 353, 17, 4, UNI_RI } /* regionalindicator=yes */,
+ { 1, 461, 6332, 2, 19, UNI_JAMOEXTB } /* ishanguljamoextendedb */,
+ { 4, 309, 283, 2, 5, UNI_INNUSHU } /* innushu */,
+ { 0, 5274, 8575, 9, 26, UNI_DIACRITICALSSUP } /* combiningdiacriticalmarkssupplement */,
+ { 3, 2536, 1536, 3, 7, UNI_JG__THINYEH } /* jg=thinyeh */,
+ { 3, 8276, 4639, 6, 12, UNI_MISCMATHSYMBOLSB } /* inmiscmathsymbolsb */,
+ { 0, 1102, 67, 4, 4, UNI_CPRT } /* scx=cprt */,
+ { 0, 4424, 1191, 17, 4, UNI_BENG } /* scriptextensions=beng */,
+ { 1, 4424, 4951, 17, 4, UNI_EGYP } /* scriptextensions=egyp */,
+ { 1, 15, 4806, 2, 3, UNI_AGE__6 } /* age=6 */,
+ { 0, 1243, 1669, 4, 9, UNI_CJKEXTD } /* block=cjkextd */,
+ { 0, 510, 395, 5, 2, UNI_NV__3_SLASH_16 } /* nv=3/16 */,
+ { 1, 2732, 2705, 5, 13, UNI_ANCIENTSYMBOLS } /* blk=ancientsymbols */,
+ { 0, 1667, 6576, 5, 21, UNI_INDICNUMBERFORMS } /* blk=commonindicnumberforms */,
+ { 3, 6165, 4176, 3, 6, UNI_SC__HANG } /* sc=hangul */,
+ { 4, 1212, 0, 9, 0, UNI_QAAI } /* inherited */,
+ { 1, 3391, 342, 12, 3, UNI_NV__12 } /* numericvalue=12 */,
+ { 0, 1414, 0, 10, 0, UNI_BOXDRAWING } /* boxdrawing */,
+ { 1, 8246, 140, 24, 2, UNI_INPC__NA } /* indicpositionalcategory=na */,
+ { 0, 2, 6576, 1, 21, UNI_INDICNUMBERFORMS } /* commonindicnumberforms */,
+ { 1, 2503, 353, 11, 2, UNI_JOINC } /* joincontrol=y */,
+ { 1, 7404, 0, 11, 0, UNI_BC__R } /* bidiclass=r */,
+ { 8, 4424, 1098, 17, 4, UNI_NSHU } /* scriptextensions=nshu */,
+ { 1, 1667, 3026, 4, 14, UNI_INPSALTERPAHLAVI } /* blk=psalterpahlavi */,
+ { 15, 461, 1484, 2, 4, UNI_BUGI } /* isbugi */,
+ { 8, 298, 934, 2, 2, -UNI_RI } /* ri=f */,
+ { 1, 5065, 4741, 13, 5, UNI_JG__MANICHAEANALEPH } /* jg=manichaeanaleph */,
+ { 4, 1331, 0, 9, 0, UNI_PERM } /* oldpermic */,
+ { 3, 2766, 4150, 3, 5, UNI_P } /* gc=punct */,
+ { 4, 6618, 6629, 5, 13, UNI_INPC__BOTTOMANDLEFT } /* inpc=bottomandleft */,
+ { 5, 5216, 4770, 14, 10, UNI_LATINEXTADDITIONAL } /* block=latinextadditional */,
+ { 5, 1102, 454, 4, 4, UNI_PRTI } /* scx=prti */,
+ { 1, 271, 644, 2, 2, UNI_L } /* gc=l */,
+ { 2, 2503, 599, 11, 3, -UNI_JOINC } /* joincontrol=no */,
+ { 0, 1334, 0, 4, 0, UNI_PERM } /* perm */,
+ { 2, 7752, 4235, 23, 4, UNI_JG__MANICHAEANBETH } /* joininggroup=manichaeanbeth */,
+ { 1, 292, 3860, 2, 3, UNI_NV__70 } /* nv=70 */,
+ { 1, 461, 4176, 2, 15, UNI_INHANGUL } /* ishangulsyllables */,
+ { 3, 2324, 8142, 6, 32, UNI_IDEOGRAPHICSYMBOLS } /* block=ideographicsymbolsandpunctuation */,
+ { 12, 6427, 3743, 13, 3, UNI_JG__TAW } /* joininggroup=taw */,
+ { 0, 7198, 4150, 7, 11, UNI_SUPPUNCTUATION } /* blk=suppunctuation */,
+ { 0, 461, 673, 2, 5, UNI_OSGE } /* isosage */,
+ { 2, 3502, 0, 12, 0, UNI_INETHIOPIC } /* blk=ethiopic */,
+ { 1, 1823, 802, 7, 4, UNI_SARB } /* script=sarb */,
+ { 11, 3863, 1805, 14, 5, UNI_NV__800000 } /* numericvalue=800000 */,
+ { 0, 1272, 3611, 5, 6, UNI_CJKCOMPAT } /* iscjkcompat */,
+ { 0, 8601, 5909, 9, 7, UNI_SUPARROWSC } /* block=suparrowsc */,
+ { 0, 4360, 7110, 10, 13, UNI_LB__CM } /* linebreak=combiningmark */,
+ { 4, 339, 350, 4, 2, UNI_CCC__9 } /* ccc=vr */,
+ { 1, 13, 0, 2, 0, UNI_LM } /* lm */,
+ { 5, 8607, 0, 33, 0, UNI_SUPMATHOPERATORS } /* supplementalmathematicaloperators */,
+ { 2, 2, 8214, 1, 24, UNI_DIACRITICALS } /* combiningdiacriticalmarks */,
+ { 2, 4371, 933, 5, 7, -UNI_XPOSIXSPACE } /* wspace=false */,
+ { 0, 339, 430, 4, 2, UNI_CCC__7 } /* ccc=nk */,
+ { 0, 1424, 891, 7, 2, UNI_CCC__10 } /* ccc=ccc10 */,
+ { 2, 30, 6486, 1, 24, UNI_ZNAMENNYMUSIC } /* isznamennymusicalnotation */,
+ { 2, 6165, 63, 3, 4, UNI_SC__CPMN } /* sc=cpmn */,
+ { 0, 7648, 7011, 21, 5, UNI_DT__NONCANON } /* decompositiontype=noncanon */,
+ { 0, 6165, 1133, 3, 8, UNI_VITH } /* sc=vithkuqi */,
+ { 1, 6165, 1358, 3, 9, UNI_PALM } /* sc=palmyrene */,
+ { 2, 461, 7889, 2, 20, UNI_CJK } /* iscjkunifiedideographs */,
+ { 1, 5460, 599, 19, 2, -UNI_TERM } /* terminalpunctuation=n */,
+ { 0, 2324, 3908, 6, 16, UNI_TANGUTCOMPONENTS } /* block=tangutcomponents */,
+ { 0, 461, 2441, 2, 4, UNI_NAND } /* isnand */,
+ { 1, 7449, 3696, 18, 10, UNI_PHONETICEXTSUP } /* phoneticextensionssupplement */,
+ { 0, 6062, 6193, 12, 5, UNI_ETHIOPICSUP } /* block=ethiopicsup */,
+ { 2, 1102, 1191, 4, 4, UNI_BENG } /* scx=beng */,
+ { 2, 5205, 0, 11, 0, UNI_INMYANMAR } /* blk=myanmar */,
+ { 1, 461, 5448, 2, 3, UNI_PUA } /* ispua */,
+ { 3, 309, 4819, 2, 8, UNI_DINGBATS } /* indingbats */,
+ { 2, 461, 4896, 2, 4, UNI_BAMU } /* isbamu */,
+ { 0, 339, 348, 4, 2, UNI_CCC__91 } /* ccc=91 */,
+ { 0, 2766, 4002, 3, 14, UNI_SK } /* gc=modifiersymbol */,
+ { 0, 6165, 4951, 3, 19, UNI_EGYP } /* sc=egyptianhieroglyphs */,
+ { 0, 7537, 341, 9, 2, UNI_alpha_values_index } /* alphabetic= */,
+ { 4, 7669, 2382, 19, 9, UNI_GCB__V } /* hangulsyllabletype=voweljamo */,
+ { 1, 3514, 4511, 12, 9, UNI_ARABICEXTB } /* block=arabicextendedb */,
+ { 4, 339, 345, 4, 2, UNI_CCC__18 } /* ccc=18 */,
+ { 0, 5616, 585, 21, 5, UNI_CWU } /* changeswhenuppercased=true */,
+ { 0, 8601, 8386, 9, 21, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* block=supsymbolsandpictographs */,
+ { 8, 7011, 3152, 24, 11, UNI_CCC__8 } /* canonicalcombiningclass=kanavoicing */,
+ { 0, 461, 2811, 2, 12, UNI_KHMERSYMBOLS } /* iskhmersymbols */,
+ { 0, 1823, 1322, 7, 9, UNI_ITAL } /* script=olditalic */,
+ { 0, 2280, 6262, 10, 3, UNI_IN__2_DOT_1 } /* presentin=2.1 */,
+ { 1, 6163, 6923, 14, 11, UNI_INSC__CONSONANTPLACEHOLDER } /* insc=consonantplaceholder */,
+ { 0, 3014, 290, 12, 2, UNI_IN__14 } /* presentin=v140 */,
+ { 1, 1823, 1015, 7, 4, UNI_SC__TELU } /* script=telu */,
+ { 0, 2718, 4472, 3, 15, UNI_BC__BN } /* bc=boundaryneutral */,
+ { 2, 1102, 3505, 3, 9, UNI_ETHI } /* scx=ethiopic */,
+ { 0, 4360, 5090, 9, 17, UNI_LB__CP } /* linebreak=closeparenthesis */,
+ { 1, 1272, 0, 5, 0, UNI_CJK } /* iscjk */,
+ { 6, 1011, 0, 2, 0, UNI_CI } /* ci */,
+ { 8, 517, 761, 4, 2, UNI_NV__7_SLASH_2 } /* nv=7/2 */,
+ { 1, 309, 581, 2, 2, UNI_IN__2 } /* in=2 */,
+ { 0, 461, 20, 2, 3, UNI_XPOSIXXDIGIT } /* ishex */,
+ { 0, 2811, 0, 5, 0, UNI_KHMR } /* khmer */,
+ { 3, 6165, 1562, 3, 4, UNI_NAGM } /* sc=nagm */,
+ { 1, 1102, 232, 4, 2, UNI_YI } /* scx=yi */,
+ { 2, 1102, 1358, 4, 4, UNI_PALM } /* scx=palm */,
+ { 0, 2732, 2312, 5, 12, UNI_AEGEANNUMBERS } /* blk=aegeannumbers */,
+ { 3, 461, 1285, 2, 9, UNI_SIND } /* iskhudawadi */,
+ { 1, 1396, 585, 8, 5, UNI_XIDS } /* xidstart=true */,
+ { 25, 3848, 1805, 14, 5, UNI_NV__700000 } /* numericvalue=700000 */,
+ { 0, 875, 934, 5, 2, -UNI_UIDEO } /* uideo=f */,
+ { 1, 2503, 0, 5, 0, UNI_JOINC } /* joinc */,
+ { 0, 6450, 1612, 14, 2, UNI_LB__LF } /* sentencebreak=lf */,
+ { 0, 1391, 3451, 3, 12, UNI_WB__EX } /* wb=extendnumlet */,
+ { 0, 2732, 1723, 10, 3, UNI_ARABICPFB } /* blk=arabicpfb */,
+ { 3, 634, 0, 7, 0, UNI_HANO } /* hanunoo */,
+ { 0, 2004, 3100, 5, 6, UNI_POSIXXDIGIT } /* posixxdigit */,
+ { 2, 6841, 598, 24, 4, -UNI_DI } /* defaultignorablecodepoint=no */,
+ { 0, 887, 2080, 5, 3, UNI_AGE__11 } /* age=11.0 */,
+ { 1, 7591, 2043, 3, 2, UNI_GCB__V } /* lb=jv */,
+ { 0, 6090, 2643, 7, 12, UNI_MISCTECHNICAL } /* block=misctechnical */,
+ { 5, 1823, 2780, 7, 6, UNI_SC__COPT } /* script=coptic */,
+ { 1, 1726, 0, 6, 0, UNI_ARAB } /* isarab */,
+ { 2, 4424, 6642, 17, 6, UNI_BRAH } /* scriptextensions=brahmi */,
+ { 0, 30, 8141, 1, 33, UNI_IDEOGRAPHICSYMBOLS } /* isideographicsymbolsandpunctuation */,
+ { 8, 461, 200, 2, 4, UNI_TAVT } /* istavt */,
+ { 10, 461, 5172, 2, 2, UNI_CASEDLETTER } /* isl_ */,
+ { 3, 3984, 599, 17, 3, -UNI_EPRES } /* emojipresentation=no */,
+ { 6, 7011, 8101, 24, 10, UNI_CCC__BR } /* canonicalcombiningclass=belowright */,
+ { 4, 5065, 4235, 13, 4, UNI_JG__MANICHAEANBETH } /* jg=manichaeanbeth */,
+ { 5, 895, 392, 5, 2, UNI_AGE__4_DOT_1 } /* age=v41 */,
+ { 3, 461, 1582, 2, 10, UNI_PHNX } /* isphoenician */,
+ { 0, 6062, 5820, 7, 18, UNI_ENCLOSEDALPHANUMSUP } /* block=enclosedalphanumsup */,
+ { 0, 3633, 4698, 6, 12, UNI_LATIN1 } /* inlatin1supplement */,
+ { 1, 430, 0, 4, 0, UNI_NKO } /* nkoo */,
+ { 0, 461, 152, 2, 4, UNI_OSGE } /* isosge */,
+ { 0, 461, 4150, 2, 11, UNI_P } /* ispunctuation */,
+ { 4, 552, 2656, 4, 3, UNI_AGE__5 } /* age=5.0 */,
+ { 14, 1823, 5682, 7, 5, UNI_SC__GREK } /* script=greek */,
+ { 1, 3040, 934, 13, 6, -UNI_QMARK } /* quotationmark=false */,
+ { 0, 2302, 934, 3, 2, -UNI_IDC } /* idc=f */,
+ { 2, 1396, 934, 4, 6, -UNI_XIDS } /* xids=false */,
+ { 7, 590, 6438, 2, 2, UNI_dep_values_index } /* dep= */,
+ { 1, 7591, 6, 3, 2, UNI_LB__CR } /* lb=cr */,
+ { 2, 5, 0, 3, 0, UNI_OCR } /* ocr */,
+ { 1, 461, 148, 2, 4, UNI_ORYA } /* isorya */,
+ { 1, 6427, 6714, 13, 21, UNI_JG__HANIFIROHINGYAKINNAYA } /* joininggroup=hanifirohingyakinnaya */,
+ { 3, 3021, 2117, 4, 2, UNI_IN__6_DOT_2 } /* in=v62 */,
+ { 1, 461, 1117, 2, 8, UNI_TAGB } /* istagbanwa */,
+ { 0, 4391, 0, 14, 0, UNI_NV__3 } /* numericvalue=3 */,
+ { 4, 1059, 1793, 4, 3, UNI_nfkdqc_values_index } /* nfkdqc= */,
+ { 1, 1385, 0, 4, 0, UNI_THAA } /* thaa */,
+ { 1, 1667, 1992, 4, 10, UNI_YIRADICALS } /* blk=yiradicals */,
+ { 0, 3677, 2619, 3, 12, UNI_LOWSURROGATES } /* islowsurrogates */,
+ { 1, 1102, 132, 4, 4, UNI_MTEI } /* scx=mtei */,
+ { 0, 1790, 353, 5, 2, UNI_NFCQC__Y } /* nfcqc=y */,
+ { 5, 4731, 8386, 12, 21, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* supplementalsymbolsandpictographs */,
+ { 6, 3832, 1314, 14, 3, UNI_NV__5000 } /* numericvalue=5000 */,
+ { 3, 302, 934, 5, 2, -UNI__PERL_PATWS } /* patws=f */,
+ { 1, 1065, 0, 6, 0, UNI_NV__1_SLASH_3 } /* nv=1/3 */,
+ { 2, 461, 608, 2, 7, UNI_ELBA } /* iselbasan */,
+ { 0, 2766, 313, 3, 4, UNI_M } /* gc=mark */,
+ { 1, 461, 339, 2, 2, UNI_XPOSIXCNTRL } /* iscc */,
+ { 1, 406, 353, 2, 4, UNI_DI } /* di=yes */,
+ { 1, 3021, 2093, 4, 2, UNI_IN__5 } /* in=v50 */,
+ { 3, 8505, 590, 3, 2, UNI_XPOSIXDIGIT } /* nt=de */,
+ { 0, 461, 4016, 2, 14, UNI_ZS } /* isspaceseparator */,
+ { 0, 2766, 2424, 3, 2, UNI__PERL_SURROGATE } /* gc=cs */,
+ { 1, 2259, 216, 4, 2, UNI_TOTO } /* istoto */,
+ { 1, 461, 6586, 2, 11, UNI_NUMBERFORMS } /* isnumberforms */,
+ { 9, 1065, 760, 4, 3, UNI_NV__11_SLASH_2 } /* nv=11/2 */,
+ { 4, 6163, 7523, 14, 15, UNI_INSC__CONSONANTSUCCEEDINGREPHA } /* insc=consonantsucceedingrepha */,
+ { 3, 461, 3100, 2, 6, UNI_XPOSIXXDIGIT } /* isxdigit */,
+ { 1, 1667, 8153, 7, 21, UNI_CJKSYMBOLS } /* blk=cjksymbolsandpunctuation */,
+ { 2, 4424, 772, 17, 7, UNI_OLCK } /* scriptextensions=olchiki */,
+ { 4, 5895, 5149, 5, 7, UNI_SUPARROWSA } /* issuparrowsa */,
+ { 1, 6165, 3026, 3, 14, UNI_SC__PHLP } /* sc=psalterpahlavi */,
+ { 0, 1667, 7564, 4, 27, UNI_ANCIENTGREEKMUSIC } /* blk=ancientgreekmusicalnotation */,
+ { 2, 17, 415, 1, 3, UNI_HANO } /* hano */,
+ { 6, 1667, 1303, 4, 9, UNI_INNEWTAILUE } /* blk=newtailue */,
+ { 3, 461, 140, 2, 4, UNI_NARB } /* isnarb */,
+ { 12, 2324, 825, 6, 7, UNI_SHAW } /* block=shavian */,
+ { 0, 3514, 5676, 7, 18, UNI_ANCIENTGREEKNUMBERS } /* block=ancientgreeknumbers */,
+ { 0, 1823, 5391, 7, 4, UNI_CHER } /* script=cher */,
+ { 2, 6165, 951, 3, 4, UNI_SC__DUPL } /* sc=dupl */,
+ { 6, 461, 6776, 2, 14, UNI_MEETEIMAYEKEXT } /* ismeeteimayekext */,
+ { 0, 1102, 4951, 4, 4, UNI_EGYP } /* scx=egyp */,
+ { 0, 1726, 903, 4, 6, UNI_ARMN } /* isarmenian */,
+ { 3, 1667, 493, 4, 6, UNI_INKHOJKI } /* blk=khojki */,
+ { 3, 461, 2256, 2, 8, UNI_PHAISTOS } /* isphaistos */,
+ { 0, 309, 2411, 2, 11, UNI_KATAKANAEXT } /* inkatakanaext */,
+ { 0, 597, 1168, 3, 6, UNI_DT__MED } /* dt=medial */,
+ { 6, 1667, 6776, 4, 11, UNI_INMEETEIMAYEK } /* blk=meeteimayek */,
+ { 0, 4424, 414, 17, 4, UNI_HANO } /* scriptextensions=hano */,
+ { 0, 4584, 353, 18, 2, UNI_IDST } /* idstrinaryoperator=y */,
+ { 3, 1102, 2735, 3, 5, UNI_ARAB } /* scx=arab */,
+ { 0, 10, 7825, 1, 30, UNI_MATHALPHANUM } /* mathematicalalphanumericsymbols */,
+ { 1, 5979, 1626, 12, 9, UNI_VO__TU } /* vo=transformedupright */,
+ { 4, 312, 585, 5, 2, UNI_QMARK } /* qmark=t */,
+ { 1, 7591, 3760, 3, 13, UNI_LB__PR } /* lb=prefixnumeric */,
+ { 0, 4424, 725, 17, 7, UNI_KALI } /* scriptextensions=kayahli */,
+ { 0, 3677, 1037, 7, 4, UNI_LATINEXTB } /* islatinextb */,
+ { 1, 1667, 216, 4, 4, UNI_INTOTO } /* blk=toto */,
+ { 9, 1883, 599, 11, 2, -UNI_BIDIC } /* bidicontrol=n */,
+ { 5, 461, 1086, 2, 4, UNI_KTHI } /* iskthi */,
+ { 0, 1065, 4404, 4, 3, UNI_NV__13_SLASH_2 } /* nv=13/2 */,
+ { 0, 1823, 1117, 7, 4, UNI_SC__TAGB } /* script=tagb */,
+ { 5, 4391, 1805, 14, 5, UNI_NV__300000 } /* numericvalue=300000 */,
+ { 0, 4424, 2247, 17, 4, UNI_HUNG } /* scriptextensions=hung */,
+ { 1, 6076, 0, 14, 0, UNI_INGEORGIAN } /* block=georgian */,
+ { 0, 7669, 585, 18, 2, UNI_GCB__T } /* hangulsyllabletype=t */,
+ { 8, 5205, 2057, 5, 11, UNI_MATHALPHANUM } /* blk=mathalphanum */,
+ { 2, 10, 4636, 1, 15, UNI_MISCMATHSYMBOLSB } /* miscmathsymbolsb */,
+ { 4, 4043, 599, 17, 2, -UNI_IDSB } /* idsbinaryoperator=n */,
+ { 14, 6450, 592, 14, 2, UNI_SB__SE } /* sentencebreak=se */,
+ { 1, 3706, 3282, 7, 7, UNI_MN } /* nonspacingmark */,
+ { 5, 1391, 3053, 3, 11, UNI_WB__DQ } /* wb=doublequote */,
+ { 0, 1823, 4002, 7, 4, UNI_SC__MODI } /* script=modi */,
+ { 2, 461, 8667, 2, 18, UNI_CANS } /* iscanadianaboriginal */,
+ { 0, 2324, 673, 6, 5, UNI_INOSAGE } /* block=osage */,
+ { 2, 3263, 0, 13, 0, UNI_XPOSIXDIGIT } /* decimalnumber */,
+ { 1, 5799, 6965, 5, 22, UNI_SUPERANDSUB } /* insuperscriptsandsubscripts */,
+ { 0, 3892, 274, 16, 1, UNI_sterm_values_index } /* sentenceterminal= */,
+ { 0, 461, 2503, 2, 5, UNI_JOINC } /* isjoinc */,
+ { 1, 1391, 3456, 5, 7, UNI_WB__MB } /* wb=midnumlet */,
+ { 1, 2483, 585, 5, 5, UNI_CASED } /* cased=true */,
+ { 0, 5255, 341, 19, 2, UNI_extpict_values_index } /* extendedpictographic= */,
+ { 0, 1823, 2247, 7, 4, UNI_HUNG } /* script=hung */,
+ { 1, 53, 598, 1, 2, UNI_nt_values_index } /* nt= */,
+ { 1, 814, 0, 4, 0, UNI_QAAI } /* zinh */,
+ { 1, 2280, 2083, 11, 2, UNI_IN__1_DOT_1 } /* presentin=1.1 */,
+ { 0, 605, 4439, 2, 2, UNI_ids_values_index } /* ids= */,
+ { 2, 2752, 274, 5, 1, UNI_emoji_values_index } /* emoji= */,
+ { 2, 7274, 4667, 9, 16, UNI_PE } /* category=closepunctuation */,
+ { 1, 1667, 120, 4, 3, UNI_INLAO } /* blk=lao */,
+ { 1, 309, 725, 2, 7, UNI_KALI } /* inkayahli */,
+ { 5, 5065, 5059, 13, 6, UNI_JG__MANICHAEANSAMEKH } /* jg=manichaeansamekh */,
+ { 0, 132, 0, 4, 0, UNI_MTEI } /* mtei */,
+ { 0, 1823, 590, 7, 7, UNI_DSRT } /* script=deseret */,
+ { 8, 2324, 901, 6, 8, UNI_INARMENIAN } /* block=armenian */,
+ { 0, 2324, 6185, 6, 13, UNI_GLAGOLITICSUP } /* block=glagoliticsup */,
+ { 16, 6090, 0, 13, 0, UNI_INMYANMAR } /* block=myanmar */,
+ { 0, 2324, 493, 6, 6, UNI_INKHOJKI } /* block=khojki */,
+ { 1, 461, 521, 2, 6, UNI_PATSYN } /* ispatsyn */,
+ { 3, 461, 8278, 2, 33, UNI_MISCMATHSYMBOLSB } /* ismiscellaneousmathematicalsymbolsb */,
+ { 3, 1823, 3349, 7, 4, UNI_MERO } /* script=mero */,
+ { 0, 7011, 5515, 24, 13, UNI_CCC__202 } /* canonicalcombiningclass=attachedbelow */,
+ { 2, 292, 0, 3, 0, UNI_nv_values_index } /* nv= */,
+ { 1, 30, 1302, 1, 10, UNI_INNEWTAILUE } /* innewtailue */,
+ { 3, 4424, 357, 17, 6, UNI_CAKM } /* scriptextensions=chakma */,
+ { 3, 2391, 1037, 10, 4, UNI_CYRILLICEXTB } /* incyrillicextb */,
+ { 3, 461, 369, 2, 6, UNI_GOTH } /* isgothic */,
+ { 8, 6427, 487, 13, 3, UNI_JG__REH } /* joininggroup=reh */,
+ { 0, 30, 7466, 1, 29, UNI_SUPPUAA } /* issupplementaryprivateuseareaa */,
+ { 0, 1102, 6776, 4, 11, UNI_MTEI } /* scx=meeteimayek */,
+ { 0, 2324, 5712, 6, 19, UNI_MERO } /* block=meroitichieroglyphs */,
+ { 1, 6165, 1385, 3, 4, UNI_SC__THAA } /* sc=thaa */,
+ { 17, 309, 5391, 2, 18, UNI_CHEROKEESUP } /* incherokeesupplement */,
+ { 1, 4941, 490, 9, 3, UNI_KANBUN } /* block=kanbun */,
+ { 0, 461, 917, 2, 8, UNI_BASS } /* isbassavah */,
+ { 1, 7495, 288, 27, 2, UNI_CCC__30 } /* canonicalcombiningclass=ccc30 */,
+ { 1, 7383, 6312, 10, 3, UNI_BC__PDI } /* bidiclass=pdi */,
+ { 2, 8142, 0, 32, 0, UNI_IDEOGRAPHICSYMBOLS } /* ideographicsymbolsandpunctuation */,
+ { 1, 4191, 934, 5, 6, -UNI_XPOSIXLOWER } /* lower=false */,
+ { 0, 2766, 3196, 6, 8, UNI_NO } /* gc=othernumber */,
+ { 0, 2324, 4651, 6, 16, UNI_BOPOMOFOEXT } /* block=bopomofoextended */,
+ { 8, 461, 1367, 2, 9, UNI_PAUC } /* ispaucinhau */,
+ { 0, 1102, 3692, 4, 4, UNI_LISU } /* scx=lisu */,
+ { 6, 1241, 0, 7, 0, UNI_NB } /* noblock */,
+ { 3, 3040, 585, 13, 2, UNI_QMARK } /* quotationmark=t */,
+ { 3, 6165, 1975, 3, 10, UNI_SOGO } /* sc=oldsogdian */,
+ { 6, 2494, 6945, 5, 12, UNI_GEOMETRICSHAPES } /* isgeometricshapes */,
+ { 2, 1734, 7304, 3, 24, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* issymbolsandpictographsexta */,
+ { 3, 4569, 0, 9, 0, UNI_XPOSIXUPPER } /* uppercase */,
+ { 2, 6165, 2068, 3, 12, UNI_MEND } /* sc=mendekikakui */,
+ { 0, 8, 0, 2, 0, UNI_PC } /* pc */,
+ { 1, 6165, 4740, 3, 4, UNI_SC__TALE } /* sc=tale */,
+ { 0, 2766, 6683, 6, 8, UNI_LO } /* gc=otherletter */,
+ { 1, 309, 5185, 2, 20, UNI_INANATOLIANHIEROGLYPHS } /* inanatolianhieroglyphs */,
+ { 1, 1823, 493, 7, 6, UNI_SC__KHOJ } /* script=khojki */,
+ { 13, 2483, 934, 5, 6, -UNI_CASED } /* cased=false */,
+ { 0, 6165, 1125, 3, 8, UNI_TFNG } /* sc=tifinagh */,
+ { 2, 1618, 599, 10, 2, -UNI_SD } /* softdotted=n */,
+ { 11, 6062, 6142, 7, 21, UNI_EARLYDYNASTICCUNEIFORM } /* block=earlydynasticcuneiform */,
+ { 8, 8278, 7632, 13, 16, UNI_MISCARROWS } /* miscellaneoussymbolsandarrows */,
+ { 3, 5553, 353, 21, 4, UNI_CWCM } /* changeswhencasemapped=yes */,
+ { 0, 15, 3402, 2, 3, UNI_AGE__2 } /* age=2 */,
+ { 7, 1667, 1812, 4, 11, UNI_INPAHAWHHMONG } /* blk=pahawhhmong */,
+ { 2, 2, 352, 1, 2, UNI_ce_values_index } /* ce= */,
+ { 7, 4043, 599, 4, 3, -UNI_IDSB } /* idsb=no */,
+ { 2, 4360, 880, 10, 7, UNI_LB__XX } /* linebreak=unknown */,
+ { 0, 6165, 1212, 3, 9, UNI_SC__QAAI } /* sc=inherited */,
+ { 3, 7274, 1611, 9, 2, UNI_LOWERCASELETTER } /* category=ll */,
+ { 2, 2009, 0, 6, 0, UNI_SYRC } /* syriac */,
+ { 5, 597, 3276, 3, 3, UNI_DT__ENC } /* dt=enc */,
+ { 0, 1667, 4161, 4, 12, UNI_DIACRITICALS } /* blk=diacriticals */,
+ { 0, 2536, 7342, 3, 14, UNI_JG__HAMZAONHEHGOAL } /* jg=tehmarbutagoal */,
+ { 1, 1726, 2800, 3, 11, UNI_ALPHABETICPF } /* isalphabeticpf */,
+ { 2, 1424, 3405, 7, 2, UNI_CCC__36 } /* ccc=ccc36 */,
+ { 6, 1823, 3421, 7, 15, UNI_NARB } /* script=oldnortharabian */,
+ { 3, 1823, 3908, 7, 6, UNI_TANG } /* script=tangut */,
+ { 1, 309, 1027, 2, 6, UNI_INYEZIDI } /* inyezidi */,
+ { 3, 309, 5958, 2, 21, UNI_SINHALAARCHAICNUMBERS } /* insinhalaarchaicnumbers */,
+ { 4, 7267, 330, 16, 2, UNI_PD } /* generalcategory=pd */,
+ { 12, 406, 274, 2, 1, UNI_di_values_index } /* di= */,
+ { 9, 1102, 634, 4, 7, UNI_HANO } /* scx=hanunoo */,
+ { 5, 7591, 21, 3, 2, UNI_LB__EX } /* lb=ex */,
+ { 6, 7944, 6554, 28, 4, UNI_CJKEXTC } /* iscjkunifiedideographsextensionc */,
+ { 1, 2852, 0, 7, 0, UNI_MAHJONG } /* mahjong */,
+ { 1, 693, 6683, 5, 8, UNI_LO } /* isotherletter */,
+ { 2, 1102, 5391, 4, 4, UNI_CHER } /* scx=cher */,
+ { 1, 818, 0, 7, 0, UNI_SHRD } /* sharada */,
+ { 6, 1823, 23, 7, 4, UNI_AHOM } /* script=ahom */,
+ { 1, 1396, 599, 4, 3, -UNI_XIDS } /* xids=no */,
+ { 0, 2842, 5820, 3, 18, UNI_ENCLOSEDALPHANUMSUP } /* isenclosedalphanumsup */,
+ { 0, 6427, 2566, 13, 3, UNI_JG__HEH } /* joininggroup=heh */,
+ { 0, 1823, 74, 7, 4, UNI_SC__CYRL } /* script=cyrl */,
+ { 0, 309, 7449, 2, 18, UNI_PHONETICEXT } /* inphoneticextensions */,
+ { 0, 3391, 1313, 13, 2, UNI_NV__60 } /* numericvalue=60 */,
+ { 0, 7011, 7239, 25, 2, UNI_CCC__AL } /* canonicalcombiningclass=228 */,
+ { 1, 292, 759, 3, 4, UNI_NV___MINUS_1_SLASH_2 } /* nv=-1/2 */,
+ { 0, 1734, 8001, 3, 29, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* issymbolsandpictographsextendeda */,
+ { 0, 6165, 1227, 3, 4, UNI_MAKA } /* sc=maka */,
+ { 2, 292, 761, 4, 2, UNI_NV__9_SLASH_2 } /* nv=9/2 */,
+ { 0, 71, 934, 3, 2, -UNI_CWU } /* cwu=f */,
+ { 5, 1667, 6986, 4, 25, UNI_SYMBOLSFORLEGACYCOMPUTING } /* blk=symbolsforlegacycomputing */,
+ { 5, 6165, 1592, 3, 4, UNI_SAUR } /* sc=saur */,
+ { 3, 1894, 274, 5, 1, UNI_bidim_values_index } /* bidim= */,
+ { 4, 1102, 814, 4, 4, UNI_QAAI } /* scx=zinh */,
+ { 2, 1102, 917, 4, 4, UNI_BASS } /* scx=bass */,
+ { 0, 1102, 1227, 4, 4, UNI_MAKA } /* scx=maka */,
+ { 1, 4731, 5149, 12, 7, UNI_SUPARROWSA } /* supplementalarrowsa */,
+ { 4, 1667, 4862, 4, 4, UNI_RUMI } /* blk=rumi */,
+ { 1, 1667, 653, 4, 5, UNI_INBUHID } /* blk=buhid */,
+ { 0, 5156, 3634, 10, 2, UNI_WB__NL } /* wordbreak=nl */,
+ { 9, 5769, 274, 4, 1, UNI_emod_values_index } /* emod= */,
+ { 4, 461, 120, 2, 3, UNI_LAO } /* islao */,
+ { 6, 6165, 1385, 3, 6, UNI_SC__THAA } /* sc=thaana */,
+ { 5, 5065, 4239, 13, 4, UNI_JG__MANICHAEANFIVE } /* jg=manichaeanfive */,
+ { 2, 6062, 0, 14, 0, UNI_INETHIOPIC } /* block=ethiopic */,
+ { 4, 292, 2100, 3, 2, UNI_NV__42 } /* nv=42 */,
+ { 0, 7889, 5252, 26, 4, UNI_CJKEXTE } /* cjkunifiedideographsextensione */,
+ { 0, 461, 312, 2, 5, UNI_QMARK } /* isqmark */,
+ { 0, 4941, 3696, 10, 10, UNI_KANASUP } /* block=kanasupplement */,
+ { 5, 7591, 4316, 3, 14, UNI_LB__BK } /* lb=mandatorybreak */,
+ { 3, 909, 0, 8, 0, UNI_BALI } /* balinese */,
+ { 0, 461, 1522, 2, 8, UNI_UGAR } /* isugaritic */,
+ { 0, 257, 599, 4, 2, -UNI_CWCM } /* cwcm=n */,
+ { 6, 552, 6262, 4, 3, UNI_AGE__2_DOT_1 } /* age=2.1 */,
+ { 0, 2324, 4176, 6, 15, UNI_INHANGUL } /* block=hangulsyllables */,
+ { 2, 1391, 1864, 3, 5, UNI_WB__EB } /* wb=ebase */,
+ { 0, 8343, 8522, 22, 16, UNI_INSC__VOWELINDEPENDENT } /* indicsyllabiccategory=vowelindependent */,
+ { 0, 292, 581, 2, 3, UNI_NV__22 } /* nv=22 */,
+ { 0, 5876, 0, 12, 0, UNI_SUNDANESESUP } /* sundanesesup */,
+ { 3, 1726, 1505, 8, 4, UNI_ARABICEXTA } /* isarabicexta */,
+ { 1, 461, 1978, 2, 7, UNI_SOGD } /* issogdian */,
+ { 1, 6163, 5746, 5, 16, UNI_INSC__INVISIBLESTACKER } /* insc=invisiblestacker */,
+ { 0, 21, 7915, 1, 20, UNI_ENCLOSEDALPHANUM } /* enclosedalphanumerics */,
+ { 3, 1424, 582, 7, 2, UNI_CCC__22 } /* ccc=ccc22 */,
+ { 2, 4502, 0, 13, 0, UNI_LATINEXTE } /* blk=latinexte */,
+ { 0, 1726, 649, 3, 4, UNI_ADLM } /* isadlam */,
+ { 0, 0, 4344, 1, 16, UNI_LETTERLIKESYMBOLS } /* letterlikesymbols */,
+ { 3, 1667, 1414, 4, 10, UNI_BOXDRAWING } /* blk=boxdrawing */,
+ { 2, 1823, 983, 7, 4, UNI_SC__HIRA } /* script=hira */,
+ { 3, 5156, 281, 10, 2, UNI_WB__XX } /* wordbreak=xx */,
+ { 0, 2393, 6193, 6, 5, UNI_CYRILLICSUP } /* cyrillicsup */,
+ { 0, 4424, 1117, 17, 8, UNI_TAGB } /* scriptextensions=tagbanwa */,
+ { 0, 4424, 283, 17, 5, UNI_NSHU } /* scriptextensions=nushu */,
+ { 0, 7591, 3337, 3, 12, UNI_LB__IS } /* lb=infixnumeric */,
+ { 0, 2842, 1037, 10, 4, UNI_ETHIOPICEXTB } /* isethiopicextb */,
+ { 8, 3021, 392, 4, 2, UNI_IN__4_DOT_1 } /* in=v41 */,
+ { 1, 5637, 585, 20, 2, UNI_GCB__T } /* graphemeclusterbreak=t */,
+ { 0, 292, 2093, 3, 2, UNI_NV__50 } /* nv=50 */,
+ { 0, 4424, 212, 17, 4, UNI_TIBT } /* scriptextensions=tibt */,
+ { 1, 2752, 585, 5, 2, UNI_EMOJI } /* emoji=t */,
+ { 0, 1198, 1922, 3, 11, UNI_CHESSSYMBOLS } /* inchesssymbols */,
+ { 4, 1102, 5031, 4, 14, UNI_ROHG } /* scx=hanifirohingya */,
+ { 6, 1906, 324, 8, 3, UNI_KANASUP } /* blk=kanasup */,
+ { 0, 8658, 0, 36, 0, UNI_UCAS } /* isunifiedcanadianaboriginalsyllabics */,
+ { 0, 461, 2852, 2, 4, UNI_MAHJ } /* ismahj */,
+ { 0, 823, 0, 4, 0, UNI_DASH } /* dash */,
+ { 1, 461, 4926, 2, 15, UNI_TAMILSUP } /* istamilsupplement */,
+ { 3, 4424, 27, 17, 4, UNI_ARMI } /* scriptextensions=armi */,
+ { 6, 3021, 1070, 4, 2, UNI_IN__3_DOT_1 } /* in=v31 */,
+ { 0, 461, 6154, 2, 9, UNI_XSUX } /* iscuneiform */,
+ { 1, 1102, 967, 4, 8, UNI_GUJR } /* scx=gujarati */,
+ { 2, 309, 2468, 2, 13, UNI_IPAEXT } /* inipaextensions */,
+ { 0, 8311, 3998, 32, 4, UNI_CJKEXTG } /* block=cjkunifiedideographsextensiong */,
+ { 2, 1102, 4651, 4, 8, UNI_BOPO } /* scx=bopomofo */,
+ { 0, 1455, 599, 3, 2, -UNI_DEP } /* dep=n */,
+ { 0, 1102, 2441, 4, 11, UNI_NAND } /* scx=nandinagari */,
+ { 0, 8538, 2720, 19, 2, UNI_VO__R } /* verticalorientation=r */,
+ { 0, 2324, 6400, 9, 18, UNI_CJKRADICALSSUP } /* block=cjkradicalssupplement */,
+ { 0, 461, 7796, 2, 29, UNI_ENCLOSEDIDEOGRAPHICSUP } /* isenclosedideographicsupplement */,
+ { 10, 240, 0, 4, 0, UNI_ZYYY } /* zyyy */,
+ { 0, 6165, 6185, 3, 10, UNI_SC__GLAG } /* sc=glagolitic */,
+ { 3, 6165, 571, 3, 7, UNI_AVST } /* sc=avestan */,
+ { 3, 7274, 4146, 9, 15, UNI_PD } /* category=dashpunctuation */,
+ { 2, 317, 5376, 3, 8, UNI_TAIXUANJING } /* taixuanjing */,
+ { 0, 461, 302, 2, 5, UNI__PERL_PATWS } /* ispatws */,
+ { 1, 940, 353, 6, 2, UNI_COMPEX } /* compex=y */,
+ { 0, 4502, 4698, 8, 5, UNI_LATIN1 } /* blk=latin1sup */,
+ { 4, 4360, 184, 10, 2, UNI_LB__SA } /* linebreak=sa */,
+ { 8, 1102, 200, 4, 4, UNI_TAVT } /* scx=tavt */,
+ { 0, 1065, 520, 5, 1, UNI_NV__1_SLASH_7 } /* nv=1/7 */,
+ { 10, 309, 297, 2, 5, UNI_INORIYA } /* inoriya */,
+ { 3, 510, 1318, 5, 2, UNI_NV__3_SLASH_20 } /* nv=3/20 */,
+ { 2, 1198, 8474, 5, 23, UNI_CJKCOMPATIDEOGRAPHS } /* incjkcompatibilityideographs */,
+ { 0, 461, 3436, 2, 15, UNI_SARB } /* isoldsoutharabian */,
+ { 2, 1894, 0, 5, 0, UNI_BIDIM } /* bidim */,
+ { 3, 2324, 499, 6, 6, UNI_INLYDIAN } /* block=lydian */,
+ { 1, 2287, 2155, 3, 3, UNI_IN__3_DOT_1 } /* in=3.1 */,
+ { 15, 1728, 6193, 4, 5, UNI_ARABICSUP } /* arabicsup */,
+ { 1, 5156, 700, 10, 2, UNI_WB__EB } /* wordbreak=em */,
+ { 1, 4424, 333, 17, 6, UNI_CARI } /* scriptextensions=carian */,
+ { 0, 461, 7356, 2, 27, UNI_OCR } /* isopticalcharacterrecognition */,
+ { 1, 1102, 5958, 4, 7, UNI_SINH } /* scx=sinhala */,
+ { 0, 461, 746, 2, 4, UNI_MARC } /* ismarc */,
+ { 2, 5553, 0, 21, 0, UNI_CWCM } /* changeswhencasemapped */,
+ { 0, 6487, 0, 13, 0, UNI_ZNAMENNYMUSIC } /* znamennymusic */,
+ { 0, 6427, 702, 13, 4, UNI_JG__NOON } /* joininggroup=noon */,
+ { 5, 1823, 184, 7, 4, UNI_SAMR } /* script=samr */,
+ { 0, 1894, 585, 12, 2, UNI_BIDIM } /* bidimirrored=t */,
+ { 3, 533, 2968, 3, 3, UNI_SB__SE } /* sb=sep */,
+ { 16, 1823, 6642, 7, 4, UNI_BRAH } /* script=brah */,
+ { 1, 4424, 653, 17, 5, UNI_BUHD } /* scriptextensions=buhid */,
+ { 0, 446, 0, 4, 0, UNI_PHLI } /* phli */,
+ { 0, 461, 50, 2, 2, UNI_MC } /* ismc */,
+ { 0, 292, 1313, 3, 4, UNI_NV__6000 } /* nv=6000 */,
+ { 0, 1667, 2256, 4, 12, UNI_PHAISTOS } /* blk=phaistosdisc */,
+ { 3, 7267, 4207, 17, 14, UNI_PS } /* generalcategory=openpunctuation */,
+ { 2, 7011, 393, 24, 2, UNI_CCC__15 } /* canonicalcombiningclass=15 */,
+ { 0, 4845, 584, 16, 6, UNI__PERL_PATWS } /* patternwhitespace=true */,
+ { 0, 6427, 3294, 13, 7, UNI_JG__SEMKATH } /* joininggroup=semkath */,
+ { 0, 461, 615, 2, 7, UNI_ELYM } /* iselymaic */,
+ { 5, 4424, 112, 17, 4, UNI_KITS } /* scriptextensions=kits */,
+ { 3, 2287, 2689, 3, 3, UNI_IN__6_DOT_1 } /* in=6.1 */,
+ { 13, 2842, 1183, 3, 8, UNI_EMOTICONS } /* isemoticons */,
+ { 1, 6163, 1168, 14, 6, UNI_INSC__CONSONANTMEDIAL } /* insc=consonantmedial */,
+ { 0, 895, 396, 5, 2, UNI_AGE__6_DOT_1 } /* age=v61 */,
+ { 1, 4191, 4196, 5, 10, UNI_LOWERCASELETTER } /* lowercaseletter */,
+ { 2, 3848, 2107, 14, 8, UNI_NV__15_SLASH_2 } /* numericvalue=7.500e+00 */,
+ { 2, 5156, 0, 10, 0, UNI_wb_values_index } /* wordbreak= */,
+ { 11, 5637, 1869, 21, 3, UNI_WB__EB } /* graphemeclusterbreak=gaz */,
+ { 24, 2259, 848, 3, 6, UNI_LANA } /* istaitham */,
+ { 4, 4424, 51, 17, 4, UNI_CANS } /* scriptextensions=cans */,
+ { 0, 2302, 3401, 8, 3, UNI_idc_values_index } /* idcontinue= */,
+ { 0, 309, 7855, 2, 32, UNI_INIDC } /* inideographicdescriptioncharacters */,
+ { 2, 461, 991, 2, 4, UNI_HATR } /* ishatr */,
+ { 1, 20, 353, 3, 2, UNI_XPOSIXXDIGIT } /* hex=y */,
+ { 7, 1667, 6400, 7, 18, UNI_CJKRADICALSSUP } /* blk=cjkradicalssupplement */,
+ { 1, 895, 343, 6, 1, UNI_IN__1_DOT_1 } /* age=v11 */,
+ { 0, 2434, 4511, 7, 9, UNI_MYANMAREXTB } /* myanmarextendedb */,
+ { 6, 5553, 585, 21, 2, UNI_CWCM } /* changeswhencasemapped=t */,
+ { 2, 8071, 3998, 30, 4, UNI_CJKEXTG } /* blk=cjkunifiedideographsextensiong */,
+ { 0, 339, 1432, 4, 6, UNI_CCC__9 } /* ccc=virama */,
+ { 0, 6165, 1376, 3, 9, UNI_SAMR } /* sc=samaritan */,
+ { 2, 1823, 772, 7, 7, UNI_OLCK } /* script=olchiki */,
+ { 4, 4424, 951, 17, 8, UNI_DUPL } /* scriptextensions=duployan */,
+ { 0, 5156, 6324, 10, 6, UNI_WB__FO } /* wordbreak=format */,
+ { 3, 6062, 7915, 7, 29, UNI_ENCLOSEDALPHANUMSUP } /* block=enclosedalphanumericsupplement */,
+ { 1, 4424, 5876, 17, 4, UNI_SUND } /* scriptextensions=sund */,
+ { 0, 339, 2101, 5, 2, UNI_CCC__129 } /* ccc=129 */,
+ { 0, 2324, 1241, 6, 7, UNI_NB } /* block=noblock */,
+ { 2, 2514, 1037, 9, 4, UNI_MYANMAREXTB } /* ismyanmarextb */,
+ { 6, 1801, 1805, 9, 7, UNI_NV__1000000000000 } /* nv=1000000000000 */,
+ { 5, 309, 3093, 2, 5, UNI_ASCII } /* inascii */,
+ { 0, 8343, 1432, 22, 6, UNI_INSC__VIRAMA } /* indicsyllabiccategory=virama */,
+ { 2, 4424, 683, 17, 4, UNI_TAKR } /* scriptextensions=takr */,
+ { 0, 1102, 466, 4, 4, UNI_SOGO } /* scx=sogo */,
+ { 0, 2324, 537, 6, 6, UNI_INTANGSA } /* block=tangsa */,
+ { 4, 4407, 0, 17, 0, UNI_RI } /* regionalindicator */,
+ { 1, 4424, 2046, 18, 11, UNI_GONM } /* scriptextensions=masaramgondi */,
+ { 3, 6427, 783, 13, 3, UNI_JG__NYA } /* joininggroup=nya */,
+ { 1, 4424, 3133, 16, 5, UNI_GEOR } /* scriptextensions=geor */,
+ { 0, 4424, 317, 17, 5, UNI_TALE } /* scriptextensions=taile */,
+ { 2, 1667, 868, 4, 7, UNI_INTIRHUTA } /* blk=tirhuta */,
+ { 0, 5156, 3456, 12, 7, UNI_WB__MB } /* wordbreak=midnumlet */,
+ { 0, 4424, 1954, 17, 12, UNI_GONG } /* scriptextensions=gunjalagondi */,
+ { 0, 7648, 1850, 18, 3, UNI_DT__SUB } /* decompositiontype=sub */,
+ { 0, 1667, 238, 4, 2, UNI_NB } /* blk=nb */,
+ { 1, 6450, 4569, 14, 5, UNI_SB__UP } /* sentencebreak=upper */,
+ { 0, 5574, 274, 21, 1, UNI_cwl_values_index } /* changeswhenlowercased= */,
+ { 0, 2208, 1072, 4, 3, UNI_NV__5_SLASH_12 } /* nv=5/12 */,
+ { 0, 30, 4826, 1, 19, UNI_ZP } /* isparagraphseparator */,
+ { 0, 32, 934, 2, 2, -UNI_VS } /* vs=f */,
+ { 1, 7214, 1317, 25, 2, UNI_CCC__132 } /* canonicalcombiningclass=132 */,
+ { 0, 695, 5243, 4, 12, UNI_PO } /* otherpunctuation */,
+ { 2, 1011, 353, 2, 4, UNI_CI } /* ci=yes */,
+ { 5, 1667, 3611, 7, 6, UNI_CJKCOMPAT } /* blk=cjkcompat */,
+ { 5, 688, 0, 5, 0, UNI_BATK } /* batak */,
+ { 0, 4043, 353, 4, 2, UNI_IDSB } /* idsb=y */,
+ { 6, 3177, 7036, 15, 9, UNI_EA__H } /* eastasianwidth=halfwidth */,
+ { 0, 4360, 0, 17, 0, UNI_LB__ZW } /* linebreak=zwspace */,
+ { 1, 1223, 1037, 4, 4, UNI_KANAEXTB } /* kanaextb */,
+ { 6, 1667, 739, 4, 7, UNI_INMANDAIC } /* blk=mandaic */,
+ { 0, 7804, 934, 11, 2, -UNI_IDEO } /* ideographic=f */,
+ { 1, 3514, 2800, 7, 11, UNI_ALPHABETICPF } /* block=alphabeticpf */,
+ { 1, 6870, 353, 20, 4, UNI_CE } /* compositionexclusion=yes */,
+ { 4, 7274, 3634, 9, 2, UNI_NL } /* category=nl */,
+ { 0, 2324, 4161, 6, 12, UNI_DIACRITICALS } /* block=diacriticals */,
+ { 2, 6165, 1349, 3, 9, UNI_SC__OUGR } /* sc=olduyghur */,
+ { 1, 461, 5031, 2, 4, UNI_HAN } /* ishani */,
+ { 0, 4371, 599, 6, 3, -UNI_XPOSIXSPACE } /* wspace=no */,
+ { 4, 4424, 5391, 17, 8, UNI_CHER } /* scriptextensions=cherokee */,
+ { 1, 6062, 6193, 12, 12, UNI_ETHIOPICSUP } /* block=ethiopicsupplement */,
+ { 0, 4569, 0, 15, 0, UNI_UPPERCASELETTER } /* uppercaseletter */,
+ { 0, 1667, 6357, 7, 13, UNI_CJKCOMPAT } /* blk=cjkcompatibility */,
+ { 1, 1478, 0, 2, 0, UNI_ZS } /* zs */,
+ { 8, 7267, 269, 16, 2, UNI_ZP } /* generalcategory=zp */,
+ { 2, 4161, 353, 9, 2, UNI_DIA } /* diacritic=y */,
+ { 1, 2, 274, 3, 1, UNI_cwl_values_index } /* cwl= */,
+ { 14, 1696, 1704, 8, 3, UNI_DOMINO } /* dominotiles */,
+ { 0, 6082, 0, 8, 0, UNI_GEOR } /* georgian */,
+ { 0, 6642, 0, 4, 0, UNI_BRAH } /* brah */,
+ { 2, 4424, 790, 17, 4, UNI_KALI } /* scriptextensions=kali */,
+ { 0, 461, 590, 2, 7, UNI_DSRT } /* isdeseret */,
+ { 2, 2324, 4725, 6, 9, UNI_TANGUTSUP } /* block=tangutsup */,
+ { 1, 2301, 599, 4, 3, -UNI_XIDC } /* xidc=no */,
+ { 1, 309, 144, 2, 4, UNI_INNEWA } /* innewa */,
+ { 3, 5916, 8553, 17, 5, UNI_loe_values_index } /* logicalorderexception= */,
+ { 0, 33, 5409, 1, 17, UNI_SMALLKANAEXT } /* smallkanaextension */,
+ { 1, 1174, 604, 3, 4, UNI_EA__W } /* ea=wide */,
+ { 1, 4424, 67, 17, 4, UNI_CPRT } /* scriptextensions=cprt */,
+ { 6, 8246, 4107, 30, 12, UNI_INPC__TOPANDLEFTANDRIGHT } /* indicpositionalcategory=topandleftandright */,
+ { 1, 1102, 1009, 4, 6, UNI_LYCI } /* scx=lycian */,
+ { 0, 875, 585, 5, 5, UNI_UIDEO } /* uideo=true */,
+ { 2, 271, 1864, 4, 5, UNI_WB__EB } /* gcb=ebase */,
+ { 0, 7267, 106, 16, 2, UNI_ZL } /* generalcategory=zl */,
+ { 0, 4424, 683, 17, 5, UNI_TAKR } /* scriptextensions=takri */,
+ { 0, 3724, 135, 4, 2, UNI_JG__MIM } /* jg=mim */,
+ { 8, 1065, 1071, 4, 4, UNI_NV__11_SLASH_12 } /* nv=11/12 */,
+ { 0, 1102, 172, 4, 4, UNI_RJNG } /* scx=rjng */,
+ { 4, 1454, 585, 2, 5, UNI_SD } /* sd=true */,
+ { 11, 521, 353, 6, 2, UNI_PATSYN } /* patsyn=y */,
+ { 0, 1397, 934, 3, 2, -UNI_IDS } /* ids=f */,
+ { 1, 1102, 136, 4, 4, UNI_MYMR } /* scx=mymr */,
+ { 7, 2752, 0, 5, 0, UNI_EMOJI } /* emoji */,
+ { 32394, 1102, 4089, 4, 4, UNI_SIND } /* scx=sind */,
+ { 1, 6427, 5031, 13, 16, UNI_JG__HANIFIROHINGYAPA } /* joininggroup=hanifirohingyapa */,
+ { 2, 2324, 5801, 6, 19, UNI_SUPARROWSB } /* block=supplementalarrowsb */,
+ { 3, 5637, 5769, 21, 9, UNI_WB__EB } /* graphemeclusterbreak=emodifier */,
+ { 1, 847, 0, 7, 0, UNI_LANA } /* taitham */,
+ { 2, 1391, 3634, 3, 2, UNI_WB__NL } /* wb=nl */,
+ { 3, 2523, 3100, 8, 6, UNI_XPOSIXXDIGIT } /* isxposixxdigit */,
+ { 1, 939, 585, 5, 2, UNI_ECOMP } /* ecomp=t */,
+ { 8, 533, 6, 3, 2, UNI_LB__CR } /* sb=cr */,
+ { 3, 1618, 353, 10, 2, UNI_SD } /* softdotted=y */,
+ { 4, 54, 6081, 2, 9, UNI_SC__GEOR } /* sc=georgian */,
+ { 0, 6816, 934, 25, 2, -UNI_CWKCF } /* changeswhennfkccasefolded=f */,
+ { 2, 461, 4150, 2, 5, UNI_P } /* ispunct */,
+ { 2, 4424, 983, 17, 8, UNI_HIRA } /* scriptextensions=hiragana */,
+ { 2, 7267, 3192, 16, 12, UNI_NL } /* generalcategory=letternumber */,
+ { 5, 1221, 1505, 6, 4, UNI_KANAEXTA } /* inkanaexta */,
+ { 7, 1994, 599, 7, 2, -UNI_RADICAL } /* radical=n */,
+ { 0, 6618, 2728, 20, 4, UNI_INPC__TOPANDBOTTOMANDLEFT } /* inpc=topandbottomandleft */,
+ { 3, 3848, 3846, 14, 2, UNI_NV__7_SLASH_8 } /* numericvalue=7/8 */,
+ { 1, 7495, 520, 28, 1, UNI_CCC__17 } /* canonicalcombiningclass=ccc17 */,
+ { 0, 2324, 6000, 6, 6, UNI_YIJING } /* block=yijing */,
+ { 6, 3633, 3773, 3, 15, UNI_LINEARBIDEOGRAMS } /* inlinearbideograms */,
+ { 0, 461, 4569, 2, 15, UNI_UPPERCASELETTER } /* isuppercaseletter */,
+ { 14, 196, 0, 4, 0, UNI_TAML } /* taml */,
+ { 0, 1823, 840, 7, 7, UNI_SC__TGLG } /* script=tagalog */,
+ { 3, 1823, 232, 7, 2, UNI_SC__YI } /* script=yi */,
+ { 0, 1102, 1325, 4, 4, UNI_ITAL } /* scx=ital */,
+ { 1, 3848, 1314, 14, 3, UNI_NV__7000 } /* numericvalue=7000 */,
+ { 1, 5065, 4746, 13, 5, UNI_JG__MANICHAEANGIMEL } /* jg=manichaeangimel */,
+ { 9, 6165, 220, 3, 4, UNI_WCHO } /* sc=wcho */,
+ { 19, 7495, 3405, 27, 2, UNI_CCC__36 } /* canonicalcombiningclass=ccc36 */,
+ { 1, 309, 6464, 2, 23, UNI_SHORTHANDFORMATCONTROLS } /* inshorthandformatcontrols */,
+ { 0, 0, 1036, 1, 2, UNI_LOE } /* loe */,
+ { 0, 461, 4569, 2, 9, UNI_XPOSIXUPPER } /* isuppercase */,
+ { 9, 1801, 0, 10, 0, UNI_NV__1000000 } /* nv=1000000 */,
+ { 0, 461, 402, 2, 4, UNI_ARMN } /* isarmn */,
+ { 0, 7944, 3998, 28, 4, UNI_CJKEXTG } /* iscjkunifiedideographsextensiong */,
+ { 1, 302, 599, 5, 2, -UNI__PERL_PATWS } /* patws=n */,
+ { 0, 4819, 0, 8, 0, UNI_DINGBATS } /* dingbats */,
+ { 2, 5916, 599, 21, 3, -UNI_LOE } /* logicalorderexception=no */,
+ { 0, 1424, 1317, 7, 2, UNI_CCC__32 } /* ccc=ccc32 */,
+ { 5, 1667, 4075, 4, 15, UNI_CURRENCYSYMBOLS } /* blk=currencysymbols */,
+ { 5, 3130, 3639, 11, 9, UNI_GEORGIANEXT } /* blk=georgianextended */,
+ { 0, 461, 3554, 2, 13, UNI_ZL } /* islineseparator */,
+ { 1, 1823, 438, 7, 4, UNI_OLCK } /* script=olck */,
+ { 8, 641, 644, 3, 3, UNI_LB__H2 } /* hst=lv */,
+ { 5, 6581, 0, 16, 0, UNI_INDICNUMBERFORMS } /* indicnumberforms */,
+ { 9, 1894, 585, 5, 2, UNI_BIDIM } /* bidim=t */,
+ { 0, 1667, 5694, 5, 18, UNI_COUNTINGROD } /* blk=countingrodnumerals */,
+ { 2, 2280, 512, 9, 2, UNI_IN__3 } /* presentin=3 */,
+ { 0, 1667, 398, 4, 4, UNI_INMIAO } /* blk=miao */,
+ { 17, 1075, 6255, 4, 8, UNI_NV__1_SLASH_40 } /* nv=2.500e-02 */,
+ { 3, 2324, 1015, 6, 6, UNI_INTELUGU } /* block=telugu */,
+ { 0, 339, 1678, 4, 2, UNI_CCC__1 } /* ccc=ov */,
+ { 2, 5979, 1628, 3, 7, UNI_VO__U } /* vo=upright */,
+ { 4, 4424, 1009, 17, 6, UNI_LYCI } /* scriptextensions=lycian */,
+ { 2, 8343, 6642, 22, 19, UNI_INSC__BRAHMIJOININGNUMBER } /* indicsyllabiccategory=brahmijoiningnumber */,
+ { 0, 3391, 346, 14, 1, UNI_NV__28 } /* numericvalue=28 */,
+ { 0, 1667, 1635, 4, 10, UNI_INWARANGCITI } /* blk=warangciti */,
+ { 0, 8601, 1845, 9, 8, UNI_SUPERANDSUB } /* block=superandsub */,
+ { 2, 4075, 0, 15, 0, UNI_CURRENCYSYMBOLS } /* currencysymbols */,
+ { 2, 8343, 6661, 31, 10, UNI_INSC__CONSONANTHEADLETTER } /* indicsyllabiccategory=consonantheadletter */,
+ { 12, 7274, 330, 9, 2, UNI_PD } /* category=pd */,
+ { 9, 5156, 283, 10, 2, UNI_WB__NU } /* wordbreak=nu */,
+ { 2, 1102, 1205, 4, 7, UNI_GRAN } /* scx=grantha */,
+ { 1, 6427, 2015, 13, 3, UNI_JG__WAW } /* joininggroup=waw */,
+ { 8, 533, 2304, 4, 8, UNI_SB__SC } /* sb=scontinue */,
+ { 0, 4360, 2029, 9, 10, UNI_LB__B2 } /* linebreak=breakboth */,
+ { 0, 6076, 976, 7, 7, UNI_INGURMUKHI } /* block=gurmukhi */,
+ { 7, 5460, 353, 19, 2, UNI_TERM } /* terminalpunctuation=y */,
+ { 3, 1102, 5440, 4, 20, UNI_HMNP } /* scx=nyiakengpuachuehmong */,
+ { 8, 1530, 7443, 4, 24, UNI_KATAKANAEXT } /* iskatakanaphoneticextensions */,
+ { 0, 5460, 934, 19, 2, -UNI_TERM } /* terminalpunctuation=f */,
+ { 0, 1102, 1234, 4, 7, UNI_MULT } /* scx=multani */,
+ { 1, 2766, 2317, 3, 6, UNI_N } /* gc=number */,
+ { 1, 30, 4160, 1, 16, UNI_DIACRITICALSEXT } /* indiacriticalsext */,
+ { 6, 2324, 1914, 6, 8, UNI_UCASEXTA } /* block=ucasexta */,
+ { 20, 641, 2931, 2, 3, UNI_GCB__T } /* hst=t */,
+ { 0, 4424, 59, 17, 4, UNI_CHRS } /* scriptextensions=chrs */,
+ { 0, 309, 6000, 2, 21, UNI_YIJING } /* inyijinghexagramsymbols */,
+ { 0, 1102, 1562, 4, 10, UNI_NAGM } /* scx=nagmundari */,
+ { 2, 2411, 0, 11, 0, UNI_KATAKANAEXT } /* katakanaext */,
+ { 1, 99, 0, 2, 0, UNI_UPPERCASELETTER } /* lu */,
+ { 4, 2180, 389, 4, 1, UNI_NV__46 } /* nv=46 */,
+ { 0, 2766, 117, 3, 2, UNI_XPOSIXDIGIT } /* gc=nd */,
+ { 2, 510, 1805, 4, 5, UNI_NV__300000 } /* nv=300000 */,
+ { 2, 1424, 345, 7, 2, UNI_CCC__18 } /* ccc=ccc18 */,
+ { 2, 309, 1954, 2, 12, UNI_INGUNJALAGONDI } /* ingunjalagondi */,
+ { 2, 7889, 4410, 26, 4, UNI_CJKEXTA } /* cjkunifiedideographsextensiona */,
+ { 0, 309, 4060, 2, 15, UNI_BRAI } /* inbraillepatterns */,
+ { 0, 309, 7724, 2, 18, UNI_INVS } /* invariationselectors */,
+ { 0, 461, 7449, 2, 18, UNI_PHONETICEXT } /* isphoneticextensions */,
+ { 1, 1125, 0, 8, 0, UNI_TFNG } /* tifinagh */,
+ { 0, 6618, 6288, 3, 6, UNI_INPC__LEFT } /* inpc=left */,
+ { 0, 2004, 4569, 5, 5, UNI_POSIXUPPER } /* posixupper */,
+ { 0, 292, 1071, 3, 4, UNI_NV__1_SLASH_12 } /* nv=1/12 */,
+ { 1, 406, 934, 2, 6, -UNI_DI } /* di=false */,
+ { 0, 1667, 7356, 4, 27, UNI_OCR } /* blk=opticalcharacterrecognition */,
+ { 1, 1102, 4060, 4, 4, UNI_BRAI } /* scx=brai */,
+ { 4, 7591, 281, 3, 2, UNI_LB__XX } /* lb=xx */,
+ { 1, 2302, 353, 3, 4, UNI_IDC } /* idc=yes */,
+ { 0, 1424, 388, 7, 2, UNI_CCC__26 } /* ccc=ccc26 */,
+ { 2, 461, 1021, 2, 6, UNI_WCHO } /* iswancho */,
+ { 16, 2525, 3100, 5, 6, UNI_XPOSIXDIGIT } /* xposixdigit */,
+ { 1, 19, 353, 4, 2, UNI_POSIXXDIGIT } /* ahex=y */,
+ { 0, 3908, 0, 16, 0, UNI_TANGUTCOMPONENTS } /* tangutcomponents */,
+ { 6, 339, 890, 3, 3, UNI_CCC__10 } /* ccc=10 */,
+ { 2, 909, 0, 4, 0, UNI_BALI } /* bali */,
+ { 0, 309, 1262, 2, 7, UNI_INSOYOMBO } /* insoyombo */,
+ { 0, 339, 2719, 2, 7, UNI_CCC__R } /* ccc=right */,
+ { 16, 309, 4896, 2, 15, UNI_BAMUMSUP } /* inbamumsupplement */,
+ { 9, 253, 353, 4, 2, UNI_CWCF } /* cwcf=y */,
+ { 2, 8311, 6554, 32, 4, UNI_CJKEXTC } /* block=cjkunifiedideographsextensionc */,
+ { 1, 3677, 4698, 6, 5, UNI_LATIN1 } /* islatin1sup */,
+ { 1, 5156, 1864, 10, 5, UNI_WB__EB } /* wordbreak=ebase */,
+ { 17, 4, 933, 2, 7, -UNI_LOE } /* loe=false */,
+ { 5, 6165, 798, 3, 4, UNI_NBAT } /* sc=nbat */,
+ { 0, 2988, 599, 13, 3, UNI_COMPEX } /* nfcquickcheck=no */,
+ { 0, 521, 934, 6, 6, -UNI_PATSYN } /* patsyn=false */,
+ { 1, 461, 74, 2, 4, UNI_CYRL } /* iscyrl */,
+ { 0, 7648, 4602, 18, 4, UNI_DT__INIT } /* decompositiontype=init */,
+ { 3, 823, 599, 4, 3, -UNI_DASH } /* dash=no */,
+ { 1, 552, 342, 3, 3, UNI_AGE__12 } /* age=12 */,
+ { 0, 292, 388, 3, 2, UNI_NV__26 } /* nv=26 */,
+ { 0, 7267, 1611, 16, 2, UNI_LOWERCASELETTER } /* generalcategory=ll */,
+ { 0, 6165, 868, 3, 4, UNI_SC__TIRH } /* sc=tirh */,
+ { 1, 7855, 0, 32, 0, UNI_INIDC } /* ideographicdescriptioncharacters */,
+ { 2, 1853, 0, 4, 0, UNI_SYLO } /* sylo */,
+ { 1, 2287, 2084, 3, 2, UNI_IN__11 } /* in=11 */,
+ { 4, 1823, 658, 7, 5, UNI_SC__DOGR } /* script=dogra */,
+ { 8, 271, 1864, 4, 8, UNI_WB__EB } /* gcb=ebasegaz */,
+ { 6, 1667, 4533, 7, 4, UNI_CJKEXTC } /* blk=cjkextc */,
+ { 11, 271, 959, 4, 6, UNI_GCB__EX } /* gcb=extend */,
+ { 4, 5205, 6597, 5, 21, UNI_MISCTECHNICAL } /* blk=miscellaneoustechnical */,
+ { 1, 1102, 493, 4, 6, UNI_KHOJ } /* scx=khojki */,
+ { 0, 4424, 438, 17, 4, UNI_OLCK } /* scriptextensions=olck */,
+ { 1, 116, 0, 4, 0, UNI_KNDA } /* knda */,
+ { 0, 875, 599, 5, 2, -UNI_UIDEO } /* uideo=n */,
+ { 0, 5205, 5107, 5, 18, UNI_MODIFIERTONELETTERS } /* blk=modifiertoneletters */,
+ { 14, 3021, 344, 4, 2, UNI_IN__2_DOT_1 } /* in=v21 */,
+ { 2, 7648, 1743, 18, 4, UNI_DT__VERT } /* decompositiontype=vert */,
+ { 0, 461, 238, 2, 2, UNI_NB } /* isnb */,
+ { 0, 7887, 4218, 28, 4, UNI_CJKEXTH } /* incjkunifiedideographsextensionh */,
+ { 1, 2002, 1942, 7, 5, UNI_POSIXGRAPH } /* isposixgraph */,
+ { 3, 6618, 5308, 5, 15, UNI_LOE } /* inpc=visualorderleft */,
+ { 6, 4424, 997, 17, 6, UNI_KTHI } /* scriptextensions=kaithi */,
+ { 0, 406, 1175, 2, 2, UNI_dia_values_index } /* dia= */,
+ { 0, 1667, 3611, 7, 11, UNI_CJKCOMPATFORMS } /* blk=cjkcompatforms */,
+ { 4, 6163, 2460, 5, 8, UNI_INSC__TONEMARK } /* insc=tonemark */,
+ { 4, 4360, 3337, 10, 12, UNI_LB__IS } /* linebreak=infixnumeric */,
+ { 0, 4424, 224, 17, 4, UNI_XPEO } /* scriptextensions=xpeo */,
+ { 0, 4424, 6081, 16, 9, UNI_GEOR } /* scriptextensions=georgian */,
+ { 10, 30, 7563, 1, 28, UNI_ANCIENTGREEKMUSIC } /* isancientgreekmusicalnotation */,
+ { 2, 3407, 1314, 14, 3, UNI_NV__4000 } /* numericvalue=4000 */,
+ { 0, 3677, 0, 7, 0, UNI_LATN } /* islatin */,
+ { 0, 2324, 6557, 9, 16, UNI_CJKCOMPATIDEOGRAPHS } /* block=cjkcompatideographs */,
+ { 2, 4424, 31, 17, 4, UNI_AVST } /* scriptextensions=avst */,
+ { 5, 6866, 0, 24, 0, UNI_COMPEX } /* fullcompositionexclusion */,
+ { 1, 2930, 44, 3, 1, UNI_JT__U } /* jt=u */,
+ { 1, 533, 1602, 3, 7, UNI_SB__LE } /* sb=oletter */,
+ { 1, 1424, 2101, 8, 2, UNI_CCC__129 } /* ccc=ccc129 */,
+ { 0, 461, 1834, 2, 11, UNI_SORA } /* issorasompeng */,
+ { 5, 1790, 599, 5, 2, UNI_COMPEX } /* nfcqc=n */,
+ { 0, 1667, 673, 4, 5, UNI_INOSAGE } /* blk=osage */,
+ { 6, 2302, 599, 3, 2, -UNI_IDC } /* idc=n */,
+ { 0, 4424, 39, 17, 4, UNI_BHKS } /* scriptextensions=bhks */,
+ { 0, 1834, 0, 11, 0, UNI_SORA } /* sorasompeng */,
+ { 4, 1209, 0, 4, 0, UNI_THAI } /* thai */,
+ { 0, 339, 7425, 4, 4, UNI_CCC__216 } /* ccc=atar */,
+ { 0, 7011, 2084, 24, 2, UNI_CCC__11 } /* canonicalcombiningclass=11 */,
+ { 0, 461, 1294, 2, 9, UNI_NBAT } /* isnabataean */,
+ { 1, 292, 4403, 2, 4, UNI_NV__3_SLASH_2 } /* nv=3/2 */,
+ { 13, 1894, 353, 12, 4, UNI_BIDIM } /* bidimirrored=yes */,
+ { 0, 1198, 5694, 3, 10, UNI_COUNTINGROD } /* incountingrod */,
+ { 0, 298, 585, 2, 5, UNI_RI } /* ri=true */,
+ { 0, 11, 649, 1, 4, UNI_ADLM } /* adlam */,
+ { 1, 4569, 353, 5, 2, UNI_XPOSIXUPPER } /* upper=y */,
+ { 3, 5799, 6103, 5, 13, UNI_SUPMATHOPERATORS } /* insupmathoperators */,
+ { 0, 7267, 6324, 16, 6, UNI_CF } /* generalcategory=format */,
+ { 1, 1102, 825, 4, 7, UNI_SHAW } /* scx=shavian */,
+ { 8, 292, 2184, 4, 8, UNI_NV__11_SLASH_12 } /* nv=9.167e-01 */,
+ { 1, 4, 5671, 2, 4, -UNI_LOE } /* loe=no */,
+ { 0, 461, 718, 2, 7, UNI_KNDA } /* iskannada */,
+ { 2, 1102, 1522, 4, 8, UNI_UGAR } /* scx=ugaritic */,
+ { 2, 1198, 81, 7, 2, UNI_CJKEXTG } /* incjkextg */,
+ { 0, 7011, 344, 24, 2, UNI_CCC__21 } /* canonicalcombiningclass=21 */,
+ { 2, 2665, 1104, 12, 2, UNI_patsyn_values_index } /* patternsyntax= */,
+ { 3, 309, 3421, 2, 15, UNI_NARB } /* inoldnortharabian */,
+ { 1, 887, 2656, 5, 3, UNI_AGE__15 } /* age=15.0 */,
+ { 2, 5553, 274, 21, 1, UNI_cwcm_values_index } /* changeswhencasemapped= */,
+ { 4, 5637, 959, 21, 6, UNI_GCB__EX } /* graphemeclusterbreak=extend */,
+ { 5, 271, 700, 4, 2, UNI_WB__EB } /* gcb=em */,
+ { 25, 30, 5390, 1, 9, UNI_CHER } /* ischerokee */,
+ { 1, 2494, 5292, 4, 16, UNI_INPUNCTUATION } /* isgeneralpunctuation */,
+ { 2, 6165, 1509, 3, 8, UNI_SC__JAVA } /* sc=javanese */,
+ { 12, 4424, 244, 17, 4, UNI_ZZZZ } /* scriptextensions=zzzz */,
+ { 2, 8071, 6554, 30, 4, UNI_CJKEXTC } /* blk=cjkunifiedideographsextensionc */,
+ { 0, 2324, 4651, 6, 8, UNI_INBOPOMOFO } /* block=bopomofo */,
+ { 0, 2324, 5876, 6, 9, UNI_INSUNDANESE } /* block=sundanese */,
+ { 0, 753, 599, 6, 3, UNI_NFKCQC__N } /* nfkcqc=no */,
+ { 0, 3892, 585, 16, 5, UNI_STERM } /* sentenceterminal=true */,
+ { 9, 1021, 0, 6, 0, UNI_WCHO } /* wancho */,
+ { 0, 1667, 2411, 4, 8, UNI_INKATAKANA } /* blk=katakana */,
+ { 0, 5895, 1269, 6, 3, UNI_SUPPUAB } /* issuppuab */,
+ { 2, 1494, 3639, 7, 9, UNI_GEORGIANEXT } /* georgianextended */,
+ { 5, 641, 1874, 6, 8, UNI_LB__H2 } /* hst=lvsyllable */,
+ { 8, 30, 1882, 1, 12, UNI_BIDIC } /* isbidicontrol */,
+ { 0, 4176, 0, 4, 0, UNI_HANG } /* hang */,
+ { 3, 1243, 6462, 4, 25, UNI_SHORTHANDFORMATCONTROLS } /* block=shorthandformatcontrols */,
+ { 3, 2, 585, 3, 5, UNI_CWL } /* cwl=true */,
+ { 16, 2494, 2370, 3, 12, UNI_GREEKEXT } /* isgreekextended */,
+ { 0, 6041, 5089, 20, 3, UNI_BPT__C } /* bidipairedbrackettype=c */,
+ { 3, 7495, 345, 28, 2, UNI_CCC__118 } /* canonicalcombiningclass=ccc118 */,
+ { 5, 461, 1556, 2, 6, UNI_ARROWS } /* isarrows */,
+ { 10, 4519, 1505, 14, 4, UNI_CYRILLICEXTA } /* block=cyrillicexta */,
+ { 4, 1823, 446, 7, 4, UNI_PHLI } /* script=phli */,
+ { 0, 461, 1033, 2, 8, UNI_JAMOEXTB } /* isjamoextb */,
+ { 0, 261, 585, 5, 5, UNI_CWKCF } /* cwkcf=true */,
+ { 0, 3391, 290, 14, 1, UNI_NV__24 } /* numericvalue=24 */,
+ { 5, 5216, 2619, 7, 12, UNI_LOWSURROGATES } /* block=lowsurrogates */,
+ { 2, 1102, 51, 4, 4, UNI_CANS } /* scx=cans */,
+ { 3, 292, 295, 3, 1, UNI_NV__9 } /* nv=9 */,
+ { 1, 298, 353, 2, 4, UNI_RI } /* ri=yes */,
+ { 0, 1667, 6776, 4, 14, UNI_MEETEIMAYEKEXT } /* blk=meeteimayekext */,
+ { 0, 1198, 8474, 5, 33, UNI_CJKCOMPATIDEOGRAPHSSUP } /* incjkcompatibilityideographssupplement */,
+ { 0, 4941, 4272, 7, 16, UNI_INKHITANSMALLSCRIPT } /* block=khitansmallscript */,
+ { 6, 1823, 430, 7, 3, UNI_SC__NKO } /* script=nko */,
+ { 0, 3040, 353, 13, 4, UNI_QMARK } /* quotationmark=yes */,
+ { 4, 339, 2222, 3, 2, UNI_CCC__6 } /* ccc=6 */,
+ { 1, 1726, 3790, 7, 5, UNI_ARABICMATH } /* isarabicmath */,
+ { 2, 1667, 6351, 4, 23, UNI_COMPATJAMO } /* blk=hangulcompatibilityjamo */,
+ { 1, 2324, 6557, 9, 19, UNI_CJKCOMPATIDEOGRAPHSSUP } /* block=cjkcompatideographssup */,
+ { 8, 2324, 6900, 6, 23, UNI_BYZANTINEMUSIC } /* block=byzantinemusicalsymbols */,
+ { 2, 4461, 0, 11, 0, UNI_SGNW } /* signwriting */,
+ { 4, 3407, 1805, 14, 5, UNI_NV__400000 } /* numericvalue=400000 */,
+ { 8, 1174, 17, 3, 1, UNI_EA__H } /* ea=h */,
+ { 2, 8660, 0, 34, 0, UNI_UCAS } /* unifiedcanadianaboriginalsyllabics */,
+ { 30, 3633, 0, 16, 0, UNI_LATINEXTD } /* inlatinextendedd */,
+ { 8, 5799, 4150, 5, 11, UNI_SUPPUNCTUATION } /* insuppunctuation */,
+ { 0, 6816, 934, 25, 6, -UNI_CWKCF } /* changeswhennfkccasefolded=false */,
+ { 0, 5391, 0, 18, 0, UNI_CHEROKEESUP } /* cherokeesupplement */,
+ { 0, 3817, 3846, 14, 2, UNI_NV__1_SLASH_8 } /* numericvalue=1/8 */,
+ { 1, 1667, 2786, 4, 14, UNI_HIGHSURROGATES } /* blk=highsurrogates */,
+ { 2, 1823, 5876, 7, 9, UNI_SUND } /* script=sundanese */,
+ { 2, 461, 779, 2, 4, UNI_OSMA } /* isosma */,
+ { 8, 1102, 108, 4, 4, UNI_KAWI } /* scx=kawi */,
+ { 8, 6618, 4107, 5, 12, UNI_INPC__LEFTANDRIGHT } /* inpc=leftandright */,
+ { 0, 7011, 8640, 24, 13, UNI_CCC__214 } /* canonicalcombiningclass=attachedabove */,
+ { 0, 2692, 0, 13, 0, UNI_VERTICALFORMS } /* verticalforms */,
+ { 0, 4424, 90, 17, 4, UNI_GUJR } /* scriptextensions=gujr */,
+ { 0, 3863, 1314, 14, 2, UNI_NV__800 } /* numericvalue=800 */,
+ { 2, 5205, 8374, 5, 33, UNI_MISCPICTOGRAPHS } /* blk=miscellaneoussymbolsandpictographs */,
+ { 1, 7011, 290, 25, 2, UNI_CCC__IS } /* canonicalcombiningclass=240 */,
+ { 4, 4360, 119, 10, 2, UNI_LB__AL } /* linebreak=al */,
+ { 2, 7495, 348, 27, 2, UNI_CCC__91 } /* canonicalcombiningclass=ccc91 */,
+ { 0, 2766, 4191, 3, 15, UNI_LOWERCASELETTER } /* gc=lowercaseletter */,
+ { 2, 6165, 2244, 3, 12, UNI_HUNG } /* sc=oldhungarian */,
+ { 4, 5979, 5993, 3, 7, UNI_VO__R } /* vo=rotated */,
+ { 1, 7892, 599, 16, 3, -UNI_UIDEO } /* unifiedideograph=no */,
+ { 2, 8, 934, 3, 2, -UNI_PCM } /* pcm=f */,
+ { 0, 2718, 384, 3, 2, UNI_BC__EN } /* bc=en */,
+ { 0, 2832, 3640, 10, 9, UNI_CYRILLICEXTD } /* iscyrillicextendedd */,
+ { 0, 578, 2165, 5, 2, UNI_CCC__DB } /* ccc=233 */,
+ { 8, 5637, 543, 21, 2, UNI_WB__EB } /* graphemeclusterbreak=eb */,
+ { 2, 461, 3584, 3, 15, UNI_HIGHPUSURROGATES } /* ishighpusurrogates */,
+ { 3, 461, 1853, 2, 11, UNI_SYLO } /* issylotinagri */,
+ { 0, 6165, 5185, 3, 20, UNI_HLUW } /* sc=anatolianhieroglyphs */,
+ { 0, 1667, 5694, 5, 10, UNI_COUNTINGROD } /* blk=countingrod */,
+ { 1, 2536, 2728, 4, 3, UNI_JG__ALEF } /* jg=alef */,
+ { 0, 2401, 6193, 8, 5, UNI_ETHIOPICSUP } /* inethiopicsup */,
+ { 0, 4424, 880, 17, 7, UNI_ZZZZ } /* scriptextensions=unknown */,
+ { 4, 6165, 1209, 3, 4, UNI_THAI } /* sc=thai */,
+ { 1, 7267, 2317, 16, 6, UNI_N } /* generalcategory=number */,
+ { 9, 716, 3746, 4, 14, UNI_KAKTOVIKNUMERALS } /* inkaktoviknumerals */,
+ { 0, 1255, 0, 4, 0, UNI_SIDD } /* sidd */,
+ { 1, 3177, 2538, 14, 2, UNI_EA__A } /* eastasianwidth=a */,
+ { 6, 5216, 5635, 17, 3, UNI_LATINEXTG } /* block=latinextendedg */,
+ { 0, 309, 683, 2, 5, UNI_INTAKRI } /* intakri */,
+ { 2, 4424, 1543, 17, 4, UNI_KHAR } /* scriptextensions=khar */,
+ { 2, 461, 678, 2, 5, UNI_RUNR } /* isrunic */,
+ { 1, 6076, 2370, 7, 7, UNI_GREEKEXT } /* block=greekext */,
+ { 2, 2514, 3788, 3, 15, UNI_MISCMATHSYMBOLSA } /* ismiscmathsymbolsa */,
+ { 0, 4391, 289, 16, 1, UNI_NV__3_SLASH_20 } /* numericvalue=3/20 */,
+ { 1, 1102, 5958, 4, 4, UNI_SINH } /* scx=sinh */,
+ { 1, 2002, 3268, 7, 5, UNI_POSIXALNUM } /* isposixalnum */,
+ { 12, 6165, 917, 3, 8, UNI_BASS } /* sc=bassavah */,
+ { 9, 5532, 353, 21, 4, UNI_CWCF } /* changeswhencasefolded=yes */,
+ { 0, 6165, 11, 3, 4, UNI_SC__ADLM } /* sc=adlm */,
+ { 4, 2301, 352, 10, 3, UNI_XIDC } /* xidcontinue=y */,
+ { 9, 6797, 0, 18, 0, UNI_DEVANAGARIEXT } /* devanagariextended */,
+ { 2, 3407, 389, 14, 1, UNI_NV__46 } /* numericvalue=46 */,
+ { 8, 7274, 128, 9, 2, UNI_ME } /* category=me */,
+ { 41562, 5916, 585, 21, 5, UNI_LOE } /* logicalorderexception=true */,
+ { 1, 1272, 2373, 4, 5, UNI_CJKEXTE } /* iscjkexte */,
+ { 1, 1174, 0, 3, 0, UNI_ea_values_index } /* ea= */,
+ { 3, 2401, 620, 8, 5, UNI_ETHIOPICEXT } /* inethiopicext */,
+ { 16, 461, 4002, 2, 14, UNI_SK } /* ismodifiersymbol */,
+ { 1, 6165, 997, 3, 6, UNI_SC__KTHI } /* sc=kaithi */,
+ { 1, 1102, 82, 4, 4, UNI_GONG } /* scx=gong */,
+ { 6, 1102, 47, 4, 4, UNI_CAKM } /* scx=cakm */,
+ { 2, 6427, 3301, 13, 12, UNI_JG__VERTICALTAIL } /* joininggroup=verticaltail */,
+ { 1, 779, 0, 4, 0, UNI_OSMA } /* osma */,
+ { 1, 7011, 1153, 25, 2, UNI_CCC__L } /* canonicalcombiningclass=224 */,
+ { 10, 6165, 60, 4, 3, UNI_CHRS } /* sc=chrs */,
+ { 6, 4424, 1543, 17, 10, UNI_KHAR } /* scriptextensions=kharoshthi */,
+ { 0, 7752, 5427, 24, 6, UNI_JG__MANICHAEANTHAMEDH } /* joininggroup=manichaeanthamedh */,
+ { 1, 2180, 2193, 5, 7, UNI_NV__3_SLASH_64 } /* nv=4.688e-02 */,
+ { 0, 6076, 5863, 11, 13, UNI_GEORGIANSUP } /* block=georgiansupplement */,
+ { 3, 1618, 934, 10, 2, -UNI_SD } /* softdotted=f */,
+ { 4, 1667, 1872, 4, 11, UNI_YISYLLABLES } /* blk=yisyllables */,
+ { 1, 2208, 1805, 4, 4, UNI_NV__50000 } /* nv=50000 */,
+ { 8, 4424, 369, 17, 4, UNI_GOTH } /* scriptextensions=goth */,
+ { 1, 4845, 352, 16, 5, UNI__PERL_PATWS } /* patternwhitespace=yes */,
+ { 1, 7648, 4602, 18, 7, UNI_DT__INIT } /* decompositiontype=initial */,
+ { 0, 2280, 343, 11, 1, UNI_IN__11 } /* presentin=11 */,
+ { 0, 292, 2165, 3, 2, UNI_NV__33 } /* nv=33 */,
+ { 6, 5156, 2768, 9, 6, UNI_WB__XX } /* wordbreak=other */,
+ { 5, 0, 0, 1, 0, UNI_L } /* l */,
+ { 0, 1391, 283, 3, 2, UNI_WB__NU } /* wb=nu */,
+ { 4, 461, 2483, 2, 5, UNI_CASED } /* iscased */,
+ { 21, 2752, 8504, 11, 4, UNI_ecomp_values_index } /* emojicomponent= */,
+ { 0, 3130, 2370, 5, 7, UNI_GREEKEXT } /* blk=greekext */,
+ { 0, 7198, 5409, 5, 17, UNI_SMALLKANAEXT } /* blk=smallkanaextension */,
+ { 3, 461, 8, 2, 3, UNI_PCM } /* ispcm */,
+ { 2, 5616, 0, 21, 0, UNI_CWU } /* changeswhenuppercased */,
+ { 11, 2324, 8660, 6, 43, UNI_UCASEXTA } /* block=unifiedcanadianaboriginalsyllabicsextendeda */,
+ { 1, 4360, 3634, 10, 2, UNI_LB__NL } /* linebreak=nl */,
+ { 2, 2280, 519, 9, 2, UNI_IN__7 } /* presentin=7 */,
+ { 2, 2324, 1484, 6, 8, UNI_INBUGINESE } /* block=buginese */,
+ { 8, 6165, 663, 3, 5, UNI_SC__LIMB } /* sc=limbu */,
+ { 1, 5255, 599, 20, 3, -UNI_EXTPICT } /* extendedpictographic=no */,
+ { 2, 510, 2164, 4, 8, UNI_NV__1_SLASH_3 } /* nv=3.333e-01 */,
+ { 8, 6165, 806, 3, 4, UNI_SC__SHRD } /* sc=shrd */,
+ { 12, 1102, 493, 4, 4, UNI_KHOJ } /* scx=khoj */,
+ { 0, 3633, 4770, 15, 10, UNI_LATINEXTADDITIONAL } /* inlatinextendedadditional */,
+ { 0, 4620, 0, 16, 0, UNI_LINEARBSYLLABARY } /* linearbsyllabary */,
+ { 0, 2287, 2656, 4, 3, UNI_IN__15 } /* in=15.0 */,
+ { 0, 1102, 2735, 3, 7, UNI_ARAB } /* scx=arabic */,
+ { 0, 2718, 3106, 3, 12, UNI_BC__AL } /* bc=arabicletter */,
+ { 3, 939, 599, 5, 3, -UNI_ECOMP } /* ecomp=no */,
+ { 0, 1102, 1285, 4, 9, UNI_SIND } /* scx=khudawadi */,
+ { 17, 6287, 0, 14, 0, UNI_BC__L } /* bc=lefttoright */,
+ { 19, 461, 1914, 2, 7, UNI_UCASEXT } /* isucasext */,
+ { 0, 4651, 0, 11, 0, UNI_BOPOMOFOEXT } /* bopomofoext */,
+ { 0, 7011, 1318, 25, 2, UNI_CCC__B } /* canonicalcombiningclass=220 */,
+ { 0, 2324, 4926, 6, 8, UNI_TAMILSUP } /* block=tamilsup */,
+ { 14, 1102, 2068, 4, 12, UNI_MEND } /* scx=mendekikakui */,
+ { 1, 7724, 599, 17, 3, -UNI_VS } /* variationselector=no */,
+ { 8, 71, 599, 3, 2, -UNI_CWU } /* cwu=n */,
+ { 4, 4554, 0, 5, 0, UNI_TITLE } /* title */,
+ { 2, 33, 4441, 1, 16, UNI_SMALLFORMS } /* smallformvariants */,
+ { 11, 1823, 1027, 7, 4, UNI_SC__YEZI } /* script=yezi */,
+ { 0, 7591, 2041, 3, 2, UNI_LB__H3 } /* lb=h3 */,
+ { 0, 5065, 5047, 13, 6, UNI_JG__MANICHAEANDALETH } /* jg=manichaeandaleth */,
+ { 0, 4360, 3325, 10, 12, UNI_LB__HL } /* linebreak=hebrewletter */,
+ { 2, 3407, 1314, 14, 2, UNI_NV__400 } /* numericvalue=400 */,
+ { 1, 1102, 86, 4, 4, UNI_GREK } /* scx=grek */,
+ { 2, 1667, 1227, 4, 7, UNI_INMAKASAR } /* blk=makasar */,
+ { 0, 2514, 1095, 3, 3, UNI_MERC } /* ismerc */,
+ { 3, 1102, 35, 4, 4, UNI_BATK } /* scx=batk */,
+ { 3, 261, 934, 5, 6, -UNI_CWKCF } /* cwkcf=false */,
+ { 0, 1823, 51, 7, 4, UNI_CANS } /* script=cans */,
+ { 0, 6618, 4111, 8, 8, UNI_INPC__TOPANDRIGHT } /* inpc=topandright */,
+ { 0, 1823, 1262, 7, 7, UNI_SOYO } /* script=soyombo */,
+ { 1, 1102, 571, 4, 7, UNI_AVST } /* scx=avestan */,
+ { 0, 7267, 3709, 16, 11, UNI_MC } /* generalcategory=spacingmark */,
+ { 1, 461, 5274, 2, 18, UNI_HALFMARKS } /* iscombininghalfmarks */,
+ { 1, 4424, 236, 17, 4, UNI_ZANB } /* scriptextensions=zanb */,
+ { 0, 1823, 176, 7, 4, UNI_SC__ROHG } /* script=rohg */,
+ { 0, 1409, 6957, 5, 9, UNI_LATINEXTE } /* latinextendede */,
+ { 4, 33, 1609, 1, 9, UNI_SMALLFORMS } /* smallforms */,
+ { 6, 3014, 891, 12, 2, UNI_IN__11 } /* presentin=v110 */,
+ { 0, 3633, 4770, 10, 10, UNI_LATINEXTADDITIONAL } /* inlatinextadditional */,
+ { 2, 1322, 0, 9, 0, UNI_ITAL } /* olditalic */,
+ { 1, 1667, 1522, 4, 8, UNI_INUGARITIC } /* blk=ugaritic */,
+ { 0, 1883, 585, 11, 5, UNI_BIDIC } /* bidicontrol=true */,
+ { 2, 7274, 2483, 9, 11, UNI_CASEDLETTER } /* category=casedletter */,
+ { 0, 7274, 2621, 9, 9, UNI__PERL_SURROGATE } /* category=surrogate */,
+ { 3, 1667, 81, 9, 2, UNI_CJKEXTG } /* blk=cjkextg */,
+ { 3, 2503, 353, 5, 4, UNI_JOINC } /* joinc=yes */,
+ { 11, 1065, 395, 5, 2, UNI_NV__1_SLASH_16 } /* nv=1/16 */,
+ { 3, 438, 0, 4, 0, UNI_OLCK } /* olck */,
+ { 1, 339, 2289, 3, 3, UNI_CCC__14 } /* ccc=14 */,
+ { 0, 2536, 3294, 3, 7, UNI_JG__SEMKATH } /* jg=semkath */,
+ { 0, 2324, 0, 9, 0, UNI_CJK } /* block=cjk */,
+ { 2, 5068, 0, 4, 0, UNI_MANI } /* mani */,
+ { 1, 2302, 352, 9, 5, UNI_IDC } /* idcontinue=yes */,
+ { 2, 1102, 144, 4, 4, UNI_NEWA } /* scx=newa */,
+ { 0, 3014, 295, 11, 2, UNI_IN__9 } /* presentin=v90 */,
+ { 0, 1667, 1562, 4, 10, UNI_INNAGMUNDARI } /* blk=nagmundari */,
+ { 3, 4970, 585, 13, 2, UNI_EMOD } /* emojimodifier=t */,
+ { 5, 461, 5857, 2, 9, UNI_MONG } /* ismongolian */,
+ { 0, 3014, 2117, 11, 2, UNI_IN__6_DOT_2 } /* presentin=v62 */,
+ { 1, 6866, 599, 24, 3, -UNI_COMPEX } /* fullcompositionexclusion=no */,
+ { 0, 1726, 4531, 6, 6, UNI_ARABICEXTC } /* isarabicextc */,
+ { 4, 461, 4371, 2, 6, UNI_XPOSIXSPACE } /* iswspace */,
+ { 2, 2324, 1294, 6, 9, UNI_INNABATAEAN } /* block=nabataean */,
+ { 1, 5156, 543, 10, 2, UNI_WB__EB } /* wordbreak=eb */,
+ { 16, 461, 786, 2, 4, UNI_HMNP } /* ishmnp */,
+ { 2, 3803, 353, 14, 2, UNI_NFKCQC__Y } /* nfkcquickcheck=y */,
+ { 1, 5065, 4751, 13, 5, UNI_JG__MANICHAEANSADHE } /* jg=manichaeansadhe */,
+ { 4, 1102, 148, 4, 4, UNI_ORYA } /* scx=orya */,
+ { 3, 5658, 1455, 15, 10, UNI_DEP } /* identifiertype=deprecated */,
+ { 0, 3391, 1805, 14, 7, UNI_NV__20000000 } /* numericvalue=20000000 */,
+ { 0, 2324, 6382, 9, 18, UNI_CJKCOMPATFORMS } /* block=cjkcompatibilityforms */,
+ { 4, 1391, 543, 3, 3, UNI_WB__EB } /* wb=ebg */,
+ { 0, 1790, 353, 5, 4, UNI_NFCQC__Y } /* nfcqc=yes */,
+ { 1, 461, 917, 2, 4, UNI_BASS } /* isbass */,
+ { 0, 621, 0, 2, 0, UNI_CE } /* ce */,
+ { 1, 292, 796, 3, 3, UNI_NV__NAN } /* nv=nan */,
+ { 0, 309, 322, 2, 5, UNI_VSSUP } /* invssup */,
+ { 0, 2287, 393, 3, 2, UNI_IN__15 } /* in=15 */,
+ { 2, 1424, 346, 7, 2, UNI_CCC__84 } /* ccc=ccc84 */,
+ { 0, 2180, 1805, 4, 4, UNI_NV__40000 } /* nv=40000 */,
+ { 0, 74, 1687, 2, 9, UNI_CPMN } /* cyprominoan */,
+ { 2, 2324, 653, 6, 5, UNI_INBUHID } /* block=buhid */,
+ { 6, 1823, 1484, 7, 8, UNI_SC__BUGI } /* script=buginese */,
+ { 1, 2718, 0, 3, 0, UNI_bc_values_index } /* bc= */,
+ { 1, 1102, 1248, 4, 7, UNI_PHAG } /* scx=phagspa */,
+ { 5, 4424, 1592, 17, 4, UNI_SAUR } /* scriptextensions=saur */,
+ { 0, 6165, 648, 3, 5, UNI_SC__ADLM } /* sc=adlam */,
+ { 0, 4424, 5440, 17, 20, UNI_HMNP } /* scriptextensions=nyiakengpuachuehmong */,
+ { 0, 7887, 4158, 28, 4, UNI_CJKEXTD } /* incjkunifiedideographsextensiond */,
+ { 0, 461, 90, 2, 4, UNI_GUJR } /* isgujr */,
+ { 2, 1894, 599, 12, 3, -UNI_BIDIM } /* bidimirrored=no */,
+ { 1, 5255, 6621, 19, 3, UNI_EXTPICT } /* extendedpictographic=t */,
+ { 0, 292, 2155, 3, 9, UNI_NV__1_SLASH_32 } /* nv=3.125e-02 */,
+ { 0, 8246, 6622, 23, 20, UNI_INPC__TOPANDBOTTOMANDLEFT } /* indicpositionalcategory=topandbottomandleft */,
+ { 1, 6165, 779, 3, 4, UNI_OSMA } /* sc=osma */,
+ { 0, 8246, 6629, 24, 13, UNI_INPC__BOTTOMANDLEFT } /* indicpositionalcategory=bottomandleft */,
+ { 1, 5799, 5813, 5, 7, UNI_SUPARROWSB } /* insuparrowsb */,
+ { 0, 309, 5897, 2, 19, UNI_SUPARROWSC } /* insupplementalarrowsc */,
+ { 1, 7591, 153, 3, 2, UNI_LB__SG } /* lb=sg */,
+ { 1, 8343, 1168, 31, 6, UNI_INSC__CONSONANTMEDIAL } /* indicsyllabiccategory=consonantmedial */,
+ { 0, 533, 0, 3, 0, UNI_sb_values_index } /* sb= */,
+ { 3, 2324, 5353, 6, 20, UNI_ININSCRIPTIONALPAHLAVI } /* block=inscriptionalpahlavi */,
+ { 4, 2432, 5848, 9, 9, UNI_MYANMAREXTA } /* inmyanmarextendeda */,
+ { 1, 832, 599, 5, 3, -UNI_STERM } /* sterm=no */,
+ { 2, 2280, 546, 10, 3, UNI_IN__3 } /* presentin=3.0 */,
+ { 0, 1667, 6909, 4, 14, UNI_MUSIC } /* blk=musicalsymbols */,
+ { 0, 461, 313, 2, 4, UNI_M } /* ismark */,
+ { 24, 1200, 8474, 3, 33, UNI_CJKCOMPATIDEOGRAPHSSUP } /* cjkcompatibilityideographssupplement */,
+ { 5, 1823, 168, 7, 4, UNI_SC__COPT } /* script=qaac */,
+ { 2, 1667, 1009, 4, 6, UNI_INLYCIAN } /* blk=lycian */,
+ { 8, 461, 7086, 2, 24, UNI_ARABICPFB } /* isarabicpresentationformsb */,
+ { 0, 6163, 3217, 14, 4, UNI_INSC__CONSONANTDEAD } /* insc=consonantdead */,
+ { 0, 2348, 933, 12, 7, -UNI_CI } /* caseignorable=false */,
+ { 0, 1667, 5857, 4, 9, UNI_INMONGOLIAN } /* blk=mongolian */,
+ { 3, 4424, 458, 17, 4, UNI_QAAI } /* scriptextensions=qaai */,
+ { 3, 5156, 507, 10, 2, UNI_WB__DQ } /* wordbreak=dq */,
+ { 2, 5799, 4607, 12, 13, UNI_SUPPUNCTUATION } /* insupplementalpunctuation */,
+ { 0, 2766, 106, 3, 2, UNI_ZL } /* gc=zl */,
+ { 3, 4060, 0, 7, 0, UNI_BRAI } /* braille */,
+ { 0, 2752, 353, 5, 4, UNI_EMOJI } /* emoji=yes */,
+ { 8, 2280, 557, 10, 3, UNI_IN__6 } /* presentin=6.0 */,
+ { 0, 8278, 1926, 13, 7, UNI_MISCSYMBOLS } /* miscellaneoussymbols */,
+ { 0, 2752, 934, 14, 2, -UNI_ECOMP } /* emojicomponent=f */,
+ { 16, 5637, 363, 21, 2, UNI_GCB__SM } /* graphemeclusterbreak=sm */,
+ { 3, 7267, 4075, 16, 14, UNI_SC } /* generalcategory=currencysymbol */,
+ { 0, 2324, 3567, 6, 16, UNI_HALFANDFULLFORMS } /* block=halfandfullforms */,
+ { 1, 5205, 3788, 5, 15, UNI_MISCMATHSYMBOLSA } /* blk=miscmathsymbolsa */,
+ { 1, 1883, 0, 11, 0, UNI_BIDIC } /* bidicontrol */,
+ { 0, 6450, 1602, 14, 7, UNI_SB__LE } /* sentencebreak=oletter */,
+ { 0, 1823, 1285, 7, 9, UNI_SC__SIND } /* script=khudawadi */,
+ { 0, 6618, 6635, 8, 7, UNI_INPC__TOPANDLEFT } /* inpc=topandleft */,
+ { 0, 1198, 4533, 5, 4, UNI_CJKEXTC } /* incjkextc */,
+ { 2, 2324, 192, 6, 4, UNI_TAGS } /* block=tags */,
+ { 0, 5799, 8386, 14, 21, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* insupplementalsymbolsandpictographs */,
+ { 0, 1102, 1015, 4, 6, UNI_TELU } /* scx=telugu */,
+ { 0, 309, 6677, 2, 15, UNI_MODIFIERLETTERS } /* inmodifierletters */,
+ { 3, 461, 668, 2, 5, UNI_OGAM } /* isogham */,
+ { 3, 7011, 2092, 24, 2, UNI_CCC__25 } /* canonicalcombiningclass=25 */,
+ { 1, 4424, 3325, 17, 4, UNI_HEBR } /* scriptextensions=hebr */,
+ { 1, 1102, 418, 4, 4, UNI_KHMR } /* scx=khmr */,
+ { 0, 6165, 462, 3, 4, UNI_SHAW } /* sc=shaw */,
+ { 1, 461, 164, 2, 4, UNI_PHNX } /* isphnx */,
+ { 0, 6165, 772, 3, 7, UNI_OLCK } /* sc=olchiki */,
+ { 0, 7011, 348, 24, 2, UNI_CCC__91 } /* canonicalcombiningclass=91 */,
+ { 2, 292, 2098, 3, 9, UNI_NV__1_SLASH_7 } /* nv=1.429e-01 */,
+ { 2, 2324, 5694, 7, 18, UNI_COUNTINGROD } /* block=countingrodnumerals */,
+ { 1, 339, 1678, 4, 7, UNI_CCC__1 } /* ccc=overlay */,
+ { 6, 4569, 352, 8, 5, UNI_XPOSIXUPPER } /* uppercase=yes */,
+ { 0, 4150, 0, 11, 0, UNI_P } /* punctuation */,
+ { 0, 1823, 5857, 7, 9, UNI_SC__MONG } /* script=mongolian */,
+ { 0, 7267, 1393, 15, 2, UNI_M } /* generalcategory=m */,
+ { 0, 1734, 189, 3, 3, UNI_SGNW } /* issgnw */,
+ { 0, 461, 991, 2, 6, UNI_HATR } /* ishatran */,
+ { 6, 1667, 6557, 7, 16, UNI_CJKCOMPATIDEOGRAPHS } /* blk=cjkcompatideographs */,
+ { 1, 461, 1834, 2, 4, UNI_SORA } /* issora */,
+ { 0, 7804, 0, 11, 0, UNI_IDEO } /* ideographic */,
+ { 4, 2362, 0, 8, 0, UNI_ASSIGNED } /* assigned */,
+ { 1, 32, 585, 2, 5, UNI_VS } /* vs=true */,
+ { 1, 2324, 4896, 6, 5, UNI_INBAMUM } /* block=bamum */,
+ { 0, 7274, 3263, 9, 13, UNI_XPOSIXDIGIT } /* category=decimalnumber */,
+ { 8, 6495, 0, 5, 0, UNI_MUSIC } /* music */,
+ { 1, 1823, 1248, 7, 7, UNI_SC__PHAG } /* script=phagspa */,
+ { 2, 6165, 43, 3, 4, UNI_SC__BUHD } /* sc=buhd */,
+ { 1, 7648, 940, 18, 3, UNI_DT__COM } /* decompositiontype=com */,
+ { 5, 309, 1176, 2, 3, UNI_IN__NA } /* in=na */,
+ { 2, 4926, 0, 5, 0, UNI_TAML } /* tamil */,
+ { 16, 510, 2172, 4, 8, UNI_NV__3_SLASH_8 } /* nv=3.750e-01 */,
+ { 1, 309, 3727, 2, 9, UNI_INMALAYALAM } /* inmalayalam */,
+ { 0, 3892, 0, 16, 0, UNI_STERM } /* sentenceterminal */,
+ { 1, 578, 290, 5, 2, UNI_CCC__IS } /* ccc=240 */,
+ { 0, 7267, 3791, 16, 10, UNI_SM } /* generalcategory=mathsymbol */,
+ { 4, 7495, 3404, 27, 2, UNI_CCC__23 } /* canonicalcombiningclass=ccc23 */,
+ { 6, 4043, 0, 17, 0, UNI_IDSB } /* idsbinaryoperator */,
+ { 4, 7267, 363, 16, 2, UNI_SM } /* generalcategory=sm */,
+ { 10, 363, 0, 2, 0, UNI_SM } /* sm */,
+ { 2, 6450, 2768, 13, 6, UNI_SB__XX } /* sentencebreak=other */,
+ { 0, 1200, 70, 5, 2, UNI_CJKEXTC } /* cjkextc */,
+ { 14, 7383, 3505, 9, 3, UNI_BC__ET } /* bidiclass=et */,
+ { 11, 32, 599, 2, 2, -UNI_VS } /* vs=n */,
+ { 3, 1823, 1635, 7, 4, UNI_WARA } /* script=wara */,
+ { 1, 521, 585, 6, 5, UNI_PATSYN } /* patsyn=true */,
+ { 4, 2, 3539, 1, 6, UNI_CPRT } /* cypriot */,
+ { 5, 1667, 357, 4, 6, UNI_INCHAKMA } /* blk=chakma */,
+ { 2, 1823, 5440, 7, 20, UNI_HMNP } /* script=nyiakengpuachuehmong */,
+ { 1, 1823, 5208, 6, 8, UNI_SC__MYMR } /* script=myanmar */,
+ { 0, 6618, 1630, 20, 5, UNI_INPC__TOPANDBOTTOMANDRIGHT } /* inpc=topandbottomandright */,
+ { 0, 1823, 991, 7, 6, UNI_HATR } /* script=hatran */,
+ { 0, 6165, 1086, 3, 4, UNI_SC__KTHI } /* sc=kthi */,
+ { 4, 6165, 156, 3, 4, UNI_SC__OUGR } /* sc=ougr */,
+ { 3, 3817, 290, 15, 1, UNI_NV__1_SLASH_4 } /* numericvalue=1/4 */,
+ { 4, 1479, 5169, 5, 4, UNI_XPOSIXSPACE } /* spaceperl */,
+ { 5, 4424, 806, 17, 4, UNI_SHRD } /* scriptextensions=shrd */,
+ { 2, 461, 5939, 2, 5, UNI__PERL_NCHAR } /* isnchar */,
+ { 5, 6165, 5391, 3, 8, UNI_CHER } /* sc=cherokee */,
+ { 0, 615, 0, 4, 0, UNI_ELYM } /* elym */,
+ { 0, 2301, 353, 4, 4, UNI_XIDC } /* xidc=yes */,
+ { 0, 1102, 3325, 4, 6, UNI_HEBR } /* scx=hebrew */,
+ { 1, 20, 934, 3, 6, -UNI_XPOSIXXDIGIT } /* hex=false */,
+ { 1, 1823, 1685, 7, 11, UNI_SC__CPMN } /* script=cyprominoan */,
+ { 0, 339, 6288, 2, 3, UNI_CCC__L } /* ccc=l */,
+ { 1, 7495, 2154, 27, 2, UNI_CCC__13 } /* canonicalcombiningclass=ccc13 */,
+ { 0, 309, 2302, 2, 3, UNI_INIDC } /* inidc */,
+ { 8, 733, 6142, 3, 21, UNI_EARLYDYNASTICCUNEIFORM } /* inearlydynasticcuneiform */,
+ { 36, 2432, 0, 9, 0, UNI_INMYANMAR } /* inmyanmar */,
+ { 4, 4424, 1484, 17, 4, UNI_BUGI } /* scriptextensions=bugi */,
+ { 0, 4360, 461, 10, 2, UNI_LB__IS } /* linebreak=is */,
+ { 5, 309, 2393, 2, 8, UNI_INCYRILLIC } /* incyrillic */,
+ { 2, 2514, 0, 3, 0, UNI_M } /* ism */,
+ { 0, 1823, 140, 7, 4, UNI_NARB } /* script=narb */,
+ { 5, 4360, 7537, 10, 10, UNI_LB__AL } /* linebreak=alphabetic */,
+ { 0, 148, 0, 4, 0, UNI_ORYA } /* orya */,
+ { 3, 4424, 1234, 17, 4, UNI_MULT } /* scriptextensions=mult */,
+ { 5, 1823, 1095, 8, 3, UNI_MERC } /* script=merc */,
+ { 1, 2718, 4880, 3, 16, UNI_BC__S } /* bc=segmentseparator */,
+ { 13, 2685, 387, 4, 2, UNI_IN__5_DOT_2 } /* in=5.2 */,
+ { 4, 4424, 1582, 17, 10, UNI_PHNX } /* scriptextensions=phoenician */,
+ { 0, 3514, 7545, 10, 20, UNI_ARABICPFA } /* block=arabicpresentationformsa */,
+ { 5, 1994, 599, 7, 3, -UNI_RADICAL } /* radical=no */,
+ { 0, 4424, 82, 17, 4, UNI_GONG } /* scriptextensions=gong */,
+ { 1, 5216, 4659, 11, 9, UNI_LATINEXTC } /* block=latinextendedc */,
+ { 1, 1823, 732, 7, 7, UNI_SC__LINA } /* script=lineara */,
+ { 5, 1397, 934, 4, 6, -UNI_IDST } /* idst=false */,
+ { 8, 7267, 128, 16, 2, UNI_ME } /* generalcategory=me */,
+ { 0, 2514, 2631, 3, 12, UNI_MAYANNUMERALS } /* ismayannumerals */,
+ { 3, 30, 6486, 1, 2, UNI_Z } /* isz */,
+ { 2, 1455, 353, 3, 4, UNI_DEP } /* dep=yes */,
+ { 0, 2930, 2938, 8, 6, UNI_JT__T } /* jt=transparent */,
+ { 3, 309, 608, 2, 7, UNI_INELBASAN } /* inelbasan */,
+ { 5, 1726, 0, 8, 0, UNI_ARAB } /* isarabic */,
+ { 1, 3391, 2100, 13, 2, UNI_NV__42 } /* numericvalue=42 */,
+ { 13, 1397, 599, 3, 2, -UNI_IDS } /* ids=n */,
+ { 11, 2966, 5409, 3, 11, UNI_SMALLKANAEXT } /* insmallkanaext */,
+ { 2, 2432, 7825, 3, 30, UNI_MATHALPHANUM } /* inmathematicalalphanumericsymbols */,
+ { 0, 1667, 1003, 4, 6, UNI_INLEPCHA } /* blk=lepcha */,
+ { 3, 74, 0, 4, 0, UNI_CYRL } /* cyrl */,
+ { 4, 1823, 1191, 7, 7, UNI_SC__BENG } /* script=bengali */,
+ { 0, 5595, 353, 21, 2, UNI_CWT } /* changeswhentitlecased=y */,
+ { 0, 1102, 11, 4, 4, UNI_ADLM } /* scx=adlm */,
+ { 3, 461, 39, 2, 4, UNI_BHKS } /* isbhks */,
+ { 3, 1102, 90, 4, 4, UNI_GUJR } /* scx=gujr */,
+ { 0, 1272, 1505, 5, 4, UNI_CJKEXTA } /* iscjkexta */,
+ { 0, 7267, 4607, 5, 13, UNI_INPUNCTUATION } /* generalpunctuation */,
+ { 1, 6165, 1027, 3, 6, UNI_SC__YEZI } /* sc=yezidi */,
+ { 5, 461, 940, 2, 6, UNI_COMPEX } /* iscompex */,
+ { 2, 461, 732, 2, 7, UNI_LINA } /* islineara */,
+ { 1, 2004, 2060, 5, 5, UNI_POSIXALPHA } /* posixalpha */,
+ { 0, 7383, 3118, 10, 12, UNI_BC__ON } /* bidiclass=otherneutral */,
+ { 3, 1667, 6487, 4, 13, UNI_ZNAMENNYMUSIC } /* blk=znamennymusic */,
+ { 0, 309, 5712, 2, 19, UNI_MERO } /* inmeroitichieroglyphs */,
+ { 1, 1994, 934, 7, 2, -UNI_RADICAL } /* radical=f */,
+ { 1, 5156, 3325, 10, 12, UNI_LB__HL } /* wordbreak=hebrewletter */,
+ { 8, 825, 0, 7, 0, UNI_SHAW } /* shavian */,
+ { 3, 4360, 283, 10, 2, UNI_LB__NU } /* linebreak=nu */,
+ { 9, 309, 6909, 2, 14, UNI_MUSIC } /* inmusicalsymbols */,
+ { 4, 7383, 6021, 21, 8, UNI_BC__LRO } /* bidiclass=lefttorightoverride */,
+ { 4, 2324, 6510, 6, 24, UNI_HIGHPUSURROGATES } /* block=highprivateusesurrogates */,
+ { 0, 6165, 4926, 3, 5, UNI_SC__TAML } /* sc=tamil */,
+ { 0, 510, 520, 4, 1, UNI_NV__37 } /* nv=37 */,
+ { 2, 2280, 2182, 9, 4, UNI_IN__4_DOT_1 } /* presentin=4.1 */,
+ { 9, 1667, 3692, 4, 14, UNI_LISUSUP } /* blk=lisusupplement */,
+ { 1, 4620, 0, 7, 0, UNI_LINB } /* linearb */,
+ { 1, 1530, 3696, 6, 10, UNI_KANASUP } /* iskanasupplement */,
+ { 2, 4424, 1027, 17, 4, UNI_YEZI } /* scriptextensions=yezi */,
+ { 0, 2324, 4620, 6, 16, UNI_LINEARBSYLLABARY } /* block=linearbsyllabary */,
+ { 0, 2718, 143, 3, 2, UNI_BC__BN } /* bc=bn */,
+ { 2, 1823, 4896, 7, 4, UNI_BAMU } /* script=bamu */,
+ { 8, 6165, 1334, 3, 4, UNI_SC__PERM } /* sc=perm */,
+ { 0, 3325, 0, 6, 0, UNI_HEBR } /* hebrew */,
+ { 2, 4424, 11, 17, 4, UNI_ADLM } /* scriptextensions=adlm */,
+ { 4, 1272, 5617, 3, 20, UNI_CWU } /* ischangeswhenuppercased */,
+ { 0, 533, 21, 3, 2, UNI_SB__EX } /* sb=ex */,
+ { 2, 461, 192, 2, 4, UNI_TAGS } /* istags */,
+ { 1, 1391, 2411, 3, 8, UNI_WB__KA } /* wb=katakana */,
+ { 1, 1223, 324, 4, 3, UNI_KANASUP } /* kanasup */,
+ { 4, 1102, 8667, 4, 18, UNI_CANS } /* scx=canadianaboriginal */,
+ { 5, 3391, 1318, 13, 2, UNI_NV__20 } /* numericvalue=20 */,
+ { 0, 1667, 725, 4, 7, UNI_KALI } /* blk=kayahli */,
+ { 3, 6165, 991, 3, 4, UNI_HATR } /* sc=hatr */,
+ { 1, 309, 5838, 2, 10, UNI_JAMO } /* inhanguljamo */,
+ { 4, 2004, 0, 2, 0, UNI_PO } /* po */,
+ { 7, 3177, 1933, 15, 9, UNI_EA__A } /* eastasianwidth=ambiguous */,
+ { 0, 1667, 4150, 4, 11, UNI_INPUNCTUATION } /* blk=punctuation */,
+ { 0, 537, 0, 4, 0, UNI_TANG } /* tang */,
+ { 0, 309, 8660, 2, 34, UNI_UCAS } /* inunifiedcanadianaboriginalsyllabics */,
+ { 0, 4424, 102, 17, 4, UNI_HMNG } /* scriptextensions=hmng */,
+ { 0, 7383, 18, 10, 1, UNI_BC__B } /* bidiclass=b */,
+ { 1, 521, 353, 6, 4, UNI_PATSYN } /* patsyn=yes */,
+ { 0, 2324, 3692, 6, 14, UNI_LISUSUP } /* block=lisusupplement */,
+ { 1, 597, 7011, 6, 5, UNI_DT__NONCANON } /* dt=noncanon */,
+ { 9, 1823, 975, 7, 8, UNI_SC__GURU } /* script=gurmukhi */,
+ { 4, 4424, 5682, 17, 5, UNI_GREK } /* scriptextensions=greek */,
+ { 1, 6165, 678, 3, 5, UNI_RUNR } /* sc=runic */,
+ { 1, 3391, 3405, 13, 2, UNI_NV__36 } /* numericvalue=36 */,
+ { 0, 108, 3746, 2, 14, UNI_KAKTOVIKNUMERALS } /* kaktoviknumerals */,
+ { 1, 7011, 1317, 25, 2, UNI_CCC__AR } /* canonicalcombiningclass=232 */,
+ { 0, 1823, 90, 7, 4, UNI_SC__GUJR } /* script=gujr */,
+ { 1, 1823, 1635, 7, 10, UNI_WARA } /* script=warangciti */,
+ { 11, 5937, 598, 20, 2, UNI_nchar_values_index } /* noncharactercodepoint= */,
+ { 14, 6165, 1248, 3, 7, UNI_SC__PHAG } /* sc=phagspa */,
+ { 0, 30, 1917, 1, 4, UNI_EXT } /* isext */,
+ { 9, 461, 232, 2, 4, UNI_YI } /* isyiii */,
+ { 1, 1883, 934, 5, 2, -UNI_BIDIC } /* bidic=f */,
+ { 1, 2324, 772, 6, 7, UNI_OLCK } /* block=olchiki */,
+ { 0, 7267, 4002, 16, 14, UNI_SK } /* generalcategory=modifiersymbol */,
+ { 7, 292, 342, 2, 3, UNI_NV__12 } /* nv=12 */,
+ { 2, 7274, 54, 9, 2, UNI_SC } /* category=sc */,
+ { 0, 4502, 4344, 5, 16, UNI_LETTERLIKESYMBOLS } /* blk=letterlikesymbols */,
+ { 0, 8441, 1399, 33, 5, UNI__PERL_PROBLEMATIC_LOCALE_FOLDEDS_START } /* _perl_problematic_locale_foldeds_start */,
+ { 6, 309, 1853, 2, 11, UNI_INSYLOTINAGRI } /* insylotinagri */,
+ { 0, 4371, 352, 5, 3, UNI_XPOSIXSPACE } /* wspace=y */,
+ { 4, 6427, 225, 13, 2, UNI_JG__PE } /* joininggroup=pe */,
+ { 0, 271, 281, 4, 2, UNI_GCB__XX } /* gcb=xx */,
+ { 2, 6163, 2382, 5, 5, UNI_INSC__VOWEL } /* insc=vowel */,
+ { 4, 1726, 2705, 3, 13, UNI_ANCIENTSYMBOLS } /* isancientsymbols */,
+ { 17, 2514, 747, 3, 6, UNI_MARC } /* ismarchen */,
+ { 4, 1823, 1015, 7, 6, UNI_SC__TELU } /* script=telugu */,
+ { 2, 7011, 1318, 24, 3, UNI_WB__EB } /* canonicalcombiningclass=200 */,
+ { 0, 7267, 5172, 16, 2, UNI_CASEDLETTER } /* generalcategory=l_ */,
+ { 0, 4424, 0, 17, 0, UNI_scx_values_index } /* scriptextensions= */,
+ { 5, 2766, 3634, 3, 2, UNI_NL } /* gc=nl */,
+ { 0, 2842, 0, 6, 0, UNI_ETHI } /* isethi */,
+ { 0, 42, 3191, 2, 3, UNI_SB__LE } /* sb=le */,
+ { 0, 597, 3289, 3, 5, UNI_DT__FIN } /* dt=final */,
+ { 3, 6866, 8554, 21, 4, UNI_compex_values_index } /* fullcompositionexclusion= */,
+ { 0, 7591, 380, 3, 2, UNI_LB__HY } /* lb=hy */,
+ { 1, 6062, 8111, 7, 31, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* block=egyptianhieroglyphformatcontrols */,
+ { 2, 30, 1014, 1, 7, UNI_INTELUGU } /* intelugu */,
+ { 1, 7274, 6683, 12, 8, UNI_LO } /* category=otherletter */,
+ { 13, 1667, 1922, 5, 11, UNI_CHESSSYMBOLS } /* blk=chesssymbols */,
+ { 0, 6165, 232, 3, 2, UNI_SC__YI } /* sc=yi */,
+ { 3, 1102, 1635, 4, 10, UNI_WARA } /* scx=warangciti */,
+ { 1, 1667, 2411, 4, 11, UNI_KATAKANAEXT } /* blk=katakanaext */,
+ { 2, 1667, 5391, 4, 8, UNI_INCHEROKEE } /* blk=cherokee */,
+ { 1, 6165, 430, 3, 3, UNI_SC__NKO } /* sc=nko */,
+ { 0, 2432, 3364, 3, 14, UNI_MISCPICTOGRAPHS } /* inmiscpictographs */,
+ { 17, 1409, 5848, 5, 9, UNI_LATINEXTA } /* latinextendeda */,
+ { 2, 7591, 2991, 3, 2, UNI_LB__QU } /* lb=qu */,
+ { 64, 1823, 55, 7, 4, UNI_CHAM } /* script=cham */,
+ { 1, 7198, 6965, 7, 22, UNI_SUPERANDSUB } /* blk=superscriptsandsubscripts */,
+ { 0, 309, 537, 2, 6, UNI_INTANGSA } /* intangsa */,
+ { 1, 875, 0, 5, 0, UNI_UIDEO } /* uideo */,
+ { 1, 7648, 1176, 17, 7, UNI_DT__NAR } /* decompositiontype=narrow */,
+ { 1, 1823, 6081, 6, 9, UNI_SC__GEOR } /* script=georgian */,
+ { 0, 3325, 0, 4, 0, UNI_HEBR } /* hebr */,
+ { 0, 605, 5980, 3, 2, UNI_ideo_values_index } /* ideo= */,
+ { 6, 1726, 8174, 8, 29, UNI_ARABICMATH } /* isarabicmathematicalalphabeticsymbols */,
+ { 0, 309, 663, 2, 5, UNI_INLIMBU } /* inlimbu */,
+ { 0, 7267, 199, 16, 2, UNI_TITLE } /* generalcategory=lt */,
+ { 2, 3391, 2093, 13, 2, UNI_NV__50 } /* numericvalue=50 */,
+ { 2, 461, 5235, 2, 20, UNI_PC } /* isconnectorpunctuation */,
+ { 0, 2324, 1812, 6, 11, UNI_INPAHAWHHMONG } /* block=pahawhhmong */,
+ { 0, 292, 1805, 4, 5, UNI_NV__900000 } /* nv=900000 */,
+ { 5, 8505, 3001, 3, 7, UNI_NT__NU } /* nt=numeric */,
+ { 0, 7591, 4206, 3, 15, UNI_LB__OP } /* lb=openpunctuation */,
+ { 1, 2393, 5848, 8, 9, UNI_CYRILLICEXTA } /* cyrillicextendeda */,
+ { 0, 3663, 0, 4, 0, UNI_DEVA } /* deva */,
+ { 0, 6163, 2317, 5, 6, UNI_INSC__NUMBER } /* insc=number */,
+ { 16, 2324, 3663, 6, 14, UNI_DEVANAGARIEXTA } /* block=devanagariexta */,
+ { 7, 7383, 6289, 9, 12, UNI_BC__L } /* bidiclass=lefttoright */,
+ { 0, 1667, 1509, 4, 8, UNI_INJAVANESE } /* blk=javanese */,
+ { 16, 6165, 128, 3, 4, UNI_MEDF } /* sc=medf */,
+ { 17, 461, 6776, 2, 11, UNI_MTEI } /* ismeeteimayek */,
+ { 0, 2324, 5391, 6, 8, UNI_INCHEROKEE } /* block=cherokee */,
+ { 0, 1221, 4511, 6, 9, UNI_KANAEXTB } /* inkanaextendedb */,
+ { 1, 1667, 2302, 4, 3, UNI_INIDC } /* blk=idc */,
+ { 1, 2988, 1795, 13, 6, UNI_NFCQC__M } /* nfcquickcheck=maybe */,
+ { 2, 4424, 1133, 17, 4, UNI_VITH } /* scriptextensions=vith */,
+ { 1, 8601, 4710, 7, 15, UNI_SYRIACSUP } /* block=syriacsupplement */,
+ { 2, 461, 798, 2, 4, UNI_NBAT } /* isnbat */,
+ { 1, 3014, 3861, 11, 2, UNI_IN__7 } /* presentin=v70 */,
+ { 1, 1823, 112, 7, 4, UNI_KITS } /* script=kits */,
+ { 0, 6841, 353, 25, 2, UNI_DI } /* defaultignorablecodepoint=y */,
+ { 3, 244, 0, 4, 0, UNI_ZZZZ } /* zzzz */,
+ { 10, 3040, 1669, 12, 2, UNI_qmark_values_index } /* quotationmark= */,
+ { 4, 461, 1033, 2, 4, UNI_JAMO } /* isjamo */,
+ { 1, 1667, 688, 4, 5, UNI_INBATAK } /* blk=batak */,
+ { 0, 4424, 1385, 17, 4, UNI_THAA } /* scriptextensions=thaa */,
+ { 0, 271, 644, 3, 2, UNI_GCB__L } /* gcb=l */,
+ { 0, 8343, 3253, 22, 10, UNI_INSC__PUREKILLER } /* indicsyllabiccategory=purekiller */,
+ { 0, 5216, 4698, 10, 2, UNI_LATIN1 } /* block=latin1 */,
+ { 7, 1728, 1505, 6, 4, UNI_ARABICEXTA } /* arabicexta */,
+ { 5, 1823, 144, 7, 4, UNI_NEWA } /* script=newa */,
+ { 0, 1102, 1117, 4, 4, UNI_TAGB } /* scx=tagb */,
+ { 0, 3021, 290, 5, 2, UNI_IN__14 } /* in=v140 */,
+ { 0, 4424, 5712, 17, 19, UNI_MERO } /* scriptextensions=meroitichieroglyphs */,
+ { 1, 6165, 333, 3, 4, UNI_CARI } /* sc=cari */,
+ { 14, 6165, 1509, 3, 4, UNI_SC__JAVA } /* sc=java */,
+ { 1, 1455, 599, 3, 3, -UNI_DEP } /* dep=no */,
+ { 8, 2988, 599, 13, 2, UNI_COMPEX } /* nfcquickcheck=n */,
+ { 6, 2324, 5682, 6, 5, UNI_INGREEK } /* block=greek */,
+ { 3, 2324, 1556, 6, 6, UNI_ARROWS } /* block=arrows */,
+ { 6, 19, 1104, 3, 2, UNI_ahex_values_index } /* ahex= */,
+ { 4, 4970, 599, 13, 3, -UNI_EMOD } /* emojimodifier=no */,
+ { 2, 1391, 5769, 3, 9, UNI_WB__EB } /* wb=emodifier */,
+ { 0, 8276, 0, 35, 0, UNI_MISCMATHSYMBOLSB } /* inmiscellaneousmathematicalsymbolsb */,
+ { 0, 1894, 585, 5, 5, UNI_BIDIM } /* bidim=true */,
+ { 0, 6427, 1755, 13, 8, UNI_JG__SWASHKAF } /* joininggroup=swashkaf */,
+ { 0, 7214, 295, 25, 1, UNI_CCC__19 } /* canonicalcombiningclass=19 */,
+ { 1, 461, 248, 2, 2, UNI_CN } /* iscn */,
+ { 12, 4424, 1227, 17, 4, UNI_MAKA } /* scriptextensions=maka */,
+ { 0, 461, 6514, 2, 10, UNI_CO } /* isprivateuse */,
+ { 10, 1409, 4533, 5, 4, UNI_LATINEXTC } /* latinextc */,
+ { 0, 309, 1125, 2, 8, UNI_INTIFINAGH } /* intifinagh */,
+ { 1, 461, 5532, 2, 21, UNI_CWCF } /* ischangeswhencasefolded */,
+ { 3, 309, 1248, 2, 7, UNI_INPHAGSPA } /* inphagspa */,
+ { 0, 8, 599, 3, 2, -UNI_PCM } /* pcm=n */,
+ { 3, 7537, 0, 10, 0, UNI_XPOSIXALPHA } /* alphabetic */,
+ { 0, 6427, 715, 13, 3, UNI_JG__AIN } /* joininggroup=ain */,
+ { 3, 1102, 1543, 4, 10, UNI_KHAR } /* scx=kharoshthi */,
+ { 0, 2422, 0, 4, 0, UNI__PERL_SURROGATE } /* iscs */,
+ { 1, 2208, 2200, 4, 8, UNI_NV__1_SLASH_20 } /* nv=5.000e-02 */,
+ { 2, 895, 394, 5, 2, UNI_AGE__5_DOT_1 } /* age=v51 */,
+ { 9, 1667, 2009, 4, 6, UNI_INSYRIAC } /* blk=syriac */,
+ { 1, 7591, 1763, 3, 8, UNI_LB__LF } /* lb=linefeed */,
+ { 9, 7011, 2101, 24, 2, UNI_CCC__29 } /* canonicalcombiningclass=29 */,
+ { 6, 4519, 1687, 8, 9, UNI_INCYPROMINOAN } /* block=cyprominoan */,
+ { 1, 461, 298, 2, 2, UNI_RI } /* isri */,
+ { 9, 3817, 1318, 15, 2, UNI_NV__1_SLASH_20 } /* numericvalue=1/20 */,
+ { 1, 8538, 1628, 20, 7, UNI_VO__U } /* verticalorientation=upright */,
+ { 0, 1823, 1385, 7, 4, UNI_SC__THAA } /* script=thaa */,
+ { 1, 370, 3196, 3, 8, UNI_NO } /* othernumber */,
+ { 0, 916, 933, 4, 7, -UNI_EBASE } /* ebase=false */,
+ { 9, 3204, 934, 14, 6, -UNI_GREXT } /* graphemeextend=false */,
+ { 0, 940, 353, 6, 4, UNI_COMPEX } /* compex=yes */,
+ { 0, 533, 3001, 3, 7, UNI_SB__NU } /* sb=numeric */,
+ { 5, 1823, 63, 7, 4, UNI_SC__CPMN } /* script=cpmn */,
+ { 1, 2324, 6154, 6, 9, UNI_INCUNEIFORM } /* block=cuneiform */,
+ { 0, 6165, 204, 3, 4, UNI_TFNG } /* sc=tfng */,
+ { 1, 959, 599, 8, 3, -UNI_EXT } /* extender=no */,
+ { 1, 2766, 252, 3, 2, UNI_CASEDLETTER } /* gc=lc */,
+ { 2, 7267, 2768, 15, 6, UNI_C } /* generalcategory=other */,
+ { 3, 4424, 1834, 17, 11, UNI_SORA } /* scriptextensions=sorasompeng */,
+ { 0, 1667, 7972, 5, 15, UNI_CUNEIFORMNUMBERS } /* blk=cuneiformnumbers */,
+ { 0, 895, 288, 6, 2, UNI_AGE__13 } /* age=v130 */,
+ { 4, 4970, 934, 13, 6, -UNI_EMOD } /* emojimodifier=false */,
+ { 2, 1823, 410, 7, 4, UNI_SC__GONM } /* script=gonm */,
+ { 0, 609, 4369, 2, 8, UNI_LB__ZW } /* lb=zwspace */,
+ { 0, 7198, 1110, 5, 7, UNI_SPECIALS } /* blk=specials */,
+ { 0, 6165, 1853, 3, 4, UNI_SC__SYLO } /* sc=sylo */,
+ { 5, 461, 5031, 2, 14, UNI_ROHG } /* ishanifirohingya */,
+ { 2, 1823, 124, 7, 4, UNI_SC__LATN } /* script=latn */,
+ { 0, 5574, 0, 21, 0, UNI_CWL } /* changeswhenlowercased */,
+ { 0, 4602, 4150, 7, 11, UNI_PI } /* initialpunctuation */,
+ { 5, 4360, 524, 10, 2, UNI_LB__SY } /* linebreak=sy */,
+ { 2, 7383, 4276, 10, 3, UNI_BC__NSM } /* bidiclass=nsm */,
+ { 11, 7591, 2017, 3, 2, UNI_LB__WJ } /* lb=wj */,
+ { 5, 2324, 4862, 6, 18, UNI_RUMI } /* block=ruminumeralsymbols */,
+ { 0, 461, 3276, 2, 13, UNI_ME } /* isenclosingmark */,
+ { 2, 6450, 36, 14, 2, UNI_SB__AT } /* sentencebreak=at */,
+ { 0, 1667, 3938, 5, 16, UNI_UCAS } /* blk=canadiansyllabics */,
+ { 4, 309, 2692, 2, 13, UNI_VERTICALFORMS } /* inverticalforms */,
+ { 0, 461, 3325, 2, 6, UNI_HEBR } /* ishebrew */,
+ { 0, 7669, 4030, 19, 13, UNI_HST__NA } /* hangulsyllabletype=notapplicable */,
+ { 18, 4360, 279, 10, 2, UNI_GCB__L } /* linebreak=jl */,
+ { 1, 7495, 768, 27, 2, UNI_CCC__27 } /* canonicalcombiningclass=ccc27 */,
+ { 5, 7404, 4, 11, 2, UNI_BC__RLO } /* bidiclass=rlo */,
+ { 0, 1200, 81, 5, 2, UNI_CJKEXTG } /* cjkextg */,
+ { 0, 1065, 0, 4, 0, UNI_NV__1 } /* nv=1 */,
+ { 6, 895, 290, 6, 2, UNI_AGE__14 } /* age=v140 */,
+ { 0, 7669, 202, 20, 2, UNI_LB__H3 } /* hangulsyllabletype=lvt */,
+ { 2, 7267, 6683, 19, 8, UNI_LO } /* generalcategory=otherletter */,
+ { 0, 1102, 1509, 4, 8, UNI_JAVA } /* scx=javanese */,
+ { 72, 2403, 0, 8, 0, UNI_ETHI } /* ethiopic */,
+ { 0, 2324, 8567, 7, 34, UNI_DIACRITICALSSUP } /* block=combiningdiacriticalmarkssupplement */,
+ { 1, 5205, 2643, 5, 12, UNI_MISCTECHNICAL } /* blk=misctechnical */,
+ { 0, 309, 8607, 2, 33, UNI_SUPMATHOPERATORS } /* insupplementalmathematicaloperators */,
+ { 0, 7724, 353, 17, 2, UNI_VS } /* variationselector=y */,
+ { 0, 8343, 1157, 22, 5, UNI_INSC__NUKTA } /* indicsyllabiccategory=nukta */,
+ { 0, 309, 357, 2, 6, UNI_INCHAKMA } /* inchakma */,
+ { 0, 6427, 1536, 13, 7, UNI_JG__THINYEH } /* joininggroup=thinyeh */,
+ { 2, 4667, 0, 16, 0, UNI_PE } /* closepunctuation */,
+ { 0, 71, 599, 3, 3, -UNI_CWU } /* cwu=no */,
+ { 2, 1102, 653, 4, 5, UNI_BUHD } /* scx=buhid */,
+ { 8, 3791, 599, 4, 3, -UNI_MATH } /* math=no */,
+ { 1, 925, 1427, 3, 2, UNI_BPT__C } /* bpt=c */,
+ { 1, 1819, 0, 4, 0, UNI_MONG } /* mong */,
+ { 4, 6090, 2631, 7, 12, UNI_MAYANNUMERALS } /* block=mayannumerals */,
+ { 0, 6165, 67, 3, 4, UNI_SC__CPRT } /* sc=cprt */,
+ { 3, 1102, 683, 4, 4, UNI_TAKR } /* scx=takr */,
+ { 0, 1102, 5712, 4, 19, UNI_MERO } /* scx=meroitichieroglyphs */,
+ { 0, 6165, 1015, 3, 6, UNI_SC__TELU } /* sc=telugu */,
+ { 3, 461, 975, 2, 8, UNI_GURU } /* isgurmukhi */,
+ { 3, 292, 3844, 2, 4, UNI_NV__5_SLASH_8 } /* nv=5/8 */,
+ { 0, 1618, 585, 10, 5, UNI_SD } /* softdotted=true */,
+ { 0, 1667, 1262, 4, 7, UNI_INSOYOMBO } /* blk=soyombo */,
+ { 9, 3013, 353, 5, 2, UNI_EPRES } /* epres=y */,
+ { 12, 3192, 0, 12, 0, UNI_NL } /* letternumber */,
+ { 18, 4941, 3746, 8, 14, UNI_KAKTOVIKNUMERALS } /* block=kaktoviknumerals */,
+ { 3, 7134, 0, 26, 0, UNI_PCM } /* prependedconcatenationmark */,
+ { 7, 1726, 5848, 8, 9, UNI_ARABICEXTA } /* isarabicextendeda */,
+ { 0, 6427, 4228, 13, 7, UNI_JG__HEHGOAL } /* joininggroup=hehgoal */,
+ { 0, 4191, 599, 5, 3, -UNI_XPOSIXLOWER } /* lower=no */,
+ { 0, 7267, 4369, 15, 2, UNI_Z } /* generalcategory=z */,
+ { 9, 7198, 8001, 5, 29, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* blk=symbolsandpictographsextendeda */,
+ { 5, 4502, 4698, 8, 12, UNI_LATIN1 } /* blk=latin1supplement */,
+ { 2, 3724, 783, 12, 3, UNI_JG__MALAYALAMNYA } /* jg=malayalamnya */,
+ { 1, 6165, 1522, 3, 8, UNI_UGAR } /* sc=ugaritic */,
+ { 17, 3502, 7915, 5, 20, UNI_ENCLOSEDALPHANUM } /* blk=enclosedalphanumerics */,
+ { 1, 461, 806, 2, 4, UNI_SHRD } /* isshrd */,
+ { 0, 461, 1027, 2, 4, UNI_YEZI } /* isyezi */,
+ { 0, 1391, 1612, 3, 2, UNI_LB__LF } /* wb=lf */,
+ { 1, 832, 934, 5, 2, -UNI_STERM } /* sterm=f */,
+ { 0, 1102, 4002, 4, 4, UNI_MODI } /* scx=modi */,
+ { 0, 461, 959, 2, 8, UNI_EXT } /* isextender */,
+ { 4, 7267, 117, 16, 2, UNI_XPOSIXDIGIT } /* generalcategory=nd */,
+ { 1, 309, 6986, 2, 25, UNI_SYMBOLSFORLEGACYCOMPUTING } /* insymbolsforlegacycomputing */,
+ { 0, 4424, 442, 17, 4, UNI_ORKH } /* scriptextensions=orkh */,
+ { 2, 3663, 0, 14, 0, UNI_DEVANAGARIEXTA } /* devanagariexta */,
+ { 3, 6165, 4620, 3, 7, UNI_SC__LINB } /* sc=linearb */,
+ { 0, 312, 585, 5, 5, UNI_QMARK } /* qmark=true */,
+ { 6, 7648, 128, 18, 3, UNI_DT__MED } /* decompositiontype=med */,
+ { 12, 6163, 5114, 5, 10, UNI_INSC__TONELETTER } /* insc=toneletter */,
+ { 1, 1823, 2009, 7, 6, UNI_SC__SYRC } /* script=syriac */,
+ { 3, 1906, 7443, 6, 24, UNI_KATAKANAEXT } /* blk=katakanaphoneticextensions */,
+ { 0, 4424, 128, 17, 4, UNI_MEDF } /* scriptextensions=medf */,
+ { 0, 1198, 6400, 5, 18, UNI_CJKRADICALSSUP } /* incjkradicalssupplement */,
+ { 0, 6165, 1133, 3, 4, UNI_VITH } /* sc=vith */,
+ { 0, 1823, 0, 7, 0, UNI_sc_values_index } /* script= */,
+ { 0, 2280, 393, 10, 2, UNI_IN__15 } /* presentin=15 */,
+ { 17, 461, 1978, 2, 4, UNI_SOGD } /* issogd */,
+ { 0, 461, 4896, 2, 8, UNI_BAMUMSUP } /* isbamumsup */,
+ { 2, 641, 3218, 5, 10, UNI_GCB__L } /* hst=leadingjamo */,
+ { 0, 6487, 0, 23, 0, UNI_ZNAMENNYMUSIC } /* znamennymusicalnotation */,
+ { 1, 5156, 959, 10, 6, UNI_WB__EXTEND } /* wordbreak=extend */,
+ { 0, 4424, 418, 17, 4, UNI_KHMR } /* scriptextensions=khmr */,
+ { 0, 461, 3635, 2, 14, UNI_LATINEXTD } /* islatinextendedd */,
+ { 2, 3001, 599, 11, 5, UNI_NV__NAN } /* numerictype=none */,
+ { 0, 2766, 1926, 3, 6, UNI_S } /* gc=symbol */,
+ { 1, 1272, 8407, 3, 34, UNI_DIACRITICALSFORSYMBOLS } /* iscombiningdiacriticalmarksforsymbols */,
+ { 1, 3663, 334, 7, 3, UNI_DEVA } /* devanagari */,
+ { 0, 5156, 3191, 9, 3, UNI_WB__LE } /* wordbreak=le */,
+ { 12, 8246, 6289, 23, 5, UNI_INPC__LEFT } /* indicpositionalcategory=left */,
+ { 0, 7274, 535, 8, 2, UNI_S } /* category=s */,
+ { 2, 679, 5949, 3, 4, UNI_ANY } /* unicode */,
+ { 8, 939, 0, 5, 0, UNI_ECOMP } /* ecomp */,
+ { 3, 461, 4926, 2, 8, UNI_TAMILSUP } /* istamilsup */,
+ { 0, 8343, 2317, 22, 6, UNI_INSC__NUMBER } /* indicsyllabiccategory=number */,
+ { 2, 1102, 2780, 4, 6, UNI_COPT } /* scx=coptic */,
+ { 3, 3677, 4770, 10, 10, UNI_LATINEXTADDITIONAL } /* islatinextadditional */,
+ { 0, 6165, 810, 3, 4, UNI_SC__SYRC } /* sc=syrc */,
+ { 10, 2732, 4659, 10, 9, UNI_ARABICEXTC } /* blk=arabicextendedc */,
+ { 0, 1102, 739, 4, 7, UNI_MAND } /* scx=mandaic */,
+ { 0, 1994, 274, 7, 1, UNI_radical_values_index } /* radical= */,
+ { 0, 4569, 352, 8, 3, UNI_XPOSIXUPPER } /* uppercase=y */,
+ { 16, 917, 0, 8, 0, UNI_BASS } /* bassavah */,
+ { 0, 2180, 0, 12, 0, UNI_NV__5_SLASH_12 } /* nv=4.167e-01 */,
+ { 13, 5937, 353, 21, 2, UNI__PERL_NCHAR } /* noncharactercodepoint=y */,
+ { 6, 53, 18, 1, 1, UNI_NB } /* nb */,
+ { 0, 1455, 934, 10, 6, -UNI_DEP } /* deprecated=false */,
+ { 2, 4424, 4461, 17, 11, UNI_SGNW } /* scriptextensions=signwriting */,
+ { 0, 1075, 515, 4, 2, UNI_NV__2_SLASH_5 } /* nv=2/5 */,
+ { 1, 461, 5916, 2, 21, UNI_LOE } /* islogicalorderexception */,
+ { 1, 4424, 2244, 17, 12, UNI_HUNG } /* scriptextensions=oldhungarian */,
+ { 2, 1272, 8214, 3, 24, UNI_DIACRITICALS } /* iscombiningdiacriticalmarks */,
+ { 0, 309, 688, 2, 5, UNI_INBATAK } /* inbatak */,
+ { 1, 4569, 934, 5, 6, -UNI_XPOSIXUPPER } /* upper=false */,
+ { 2, 312, 353, 5, 4, UNI_QMARK } /* qmark=yes */,
+ { 0, 1667, 333, 4, 6, UNI_INCARIAN } /* blk=carian */,
+ { 0, 2842, 4511, 10, 9, UNI_ETHIOPICEXTB } /* isethiopicextendedb */,
+ { 0, 4424, 470, 17, 4, UNI_TNSA } /* scriptextensions=tnsa */,
+ { 3, 1823, 806, 7, 4, UNI_SC__SHRD } /* script=shrd */,
+ { 11, 4176, 0, 15, 0, UNI_INHANGUL } /* hangulsyllables */,
+ { 0, 7214, 0, 25, 0, UNI_CCC__1 } /* canonicalcombiningclass=1 */,
+ { 3, 7274, 269, 9, 2, UNI_ZP } /* category=zp */,
+ { 1, 1479, 3282, 4, 7, UNI_MC } /* spacingmark */,
+ { 0, 2766, 8, 3, 1, UNI_P } /* gc=p */,
+ { 1, 510, 764, 5, 2, UNI_NV__3_SLASH_64 } /* nv=3/64 */,
+ { 1, 6427, 4765, 13, 5, UNI_JG__ZHAIN } /* joininggroup=zhain */,
+ { 16, 2324, 732, 6, 7, UNI_INLINEARA } /* block=lineara */,
+ { 6, 4424, 1212, 17, 9, UNI_QAAI } /* scriptextensions=inherited */,
+ { 22, 2393, 1674, 8, 4, UNI_CYRILLICEXTD } /* cyrillicextd */,
+ { 3, 339, 2165, 4, 2, UNI_CCC__33 } /* ccc=33 */,
+ { 2, 309, 474, 2, 3, UNI_INVAI } /* invai */,
+ { 2, 1667, 658, 4, 5, UNI_INDOGRA } /* blk=dogra */,
+ { 0, 461, 1509, 2, 8, UNI_JAVA } /* isjavanese */,
+ { 2, 5799, 4457, 4, 15, UNI_SUTTONSIGNWRITING } /* insuttonsignwriting */,
+ { 1, 6076, 6945, 9, 12, UNI_GEOMETRICSHAPES } /* block=geometricshapes */,
+ { 12, 1823, 1349, 7, 9, UNI_SC__OUGR } /* script=olduyghur */,
+ { 5, 1494, 5863, 5, 13, UNI_GEORGIANSUP } /* georgiansupplement */,
+ { 1, 370, 2814, 3, 8, UNI_SO } /* othersymbol */,
+ { 2, 4424, 825, 17, 7, UNI_SHAW } /* scriptextensions=shavian */,
+ { 0, 461, 4584, 2, 18, UNI_IDST } /* isidstrinaryoperator */,
+ { 0, 1396, 934, 4, 2, -UNI_XIDS } /* xids=f */,
+ { 0, 7274, 466, 9, 2, UNI_SO } /* category=so */,
+ { 0, 3098, 598, 7, 3, -UNI_XPOSIXXDIGIT } /* hexdigit=n */,
+ { 0, 292, 395, 3, 2, UNI_NV__16 } /* nv=16 */,
+ { 5, 461, 406, 2, 4, UNI_DIAK } /* isdiak */,
+ { 0, 2966, 4441, 3, 16, UNI_SMALLFORMS } /* insmallformvariants */,
+ { 9, 339, 3403, 3, 3, UNI_CCC__23 } /* ccc=23 */,
+ { 1, 4391, 276, 14, 1, UNI_NV__32 } /* numericvalue=32 */,
+ { 2, 3130, 6945, 7, 20, UNI_GEOMETRICSHAPESEXT } /* blk=geometricshapesextended */,
+ { 0, 6427, 2546, 13, 3, UNI_JG__FEH } /* joininggroup=feh */,
+ { 0, 6870, 585, 20, 2, UNI_CE } /* compositionexclusion=t */,
+ { 0, 1667, 1051, 4, 8, UNI_INMAHAJANI } /* blk=mahajani */,
+ { 4, 1823, 4089, 7, 4, UNI_SC__SIND } /* script=sind */,
+ { 4, 2324, 32, 6, 2, UNI_INVS } /* block=vs */,
+ { 7, 1883, 353, 5, 2, UNI_BIDIC } /* bidic=y */,
+ { 2, 6163, 0, 5, 0, UNI_insc_values_index } /* insc= */,
+ { 3, 939, 585, 5, 5, UNI_ECOMP } /* ecomp=true */,
+ { 35, 833, 0, 4, 0, UNI_TERM } /* term */,
+ { 1, 6163, 5003, 5, 14, UNI_INSC__GEMINATIONMARK } /* insc=geminationmark */,
+ { 2, 5156, 98, 10, 2, UNI_LB__HL } /* wordbreak=hl */,
+ { 0, 2766, 1478, 3, 2, UNI_ZS } /* gc=zs */,
+ { 1, 2287, 2080, 4, 3, UNI_IN__11 } /* in=11.0 */,
+ { 0, 1667, 1358, 4, 9, UNI_PALM } /* blk=palmyrene */,
+ { 1, 4, 933, 2, 3, -UNI_LOE } /* loe=f */,
+ { 0, 2842, 5820, 3, 15, UNI_ENCLOSEDALPHANUM } /* isenclosedalphanum */,
+ { 8, 3514, 8174, 12, 29, UNI_ARABICMATH } /* block=arabicmathematicalalphabeticsymbols */,
+ { 1, 3021, 2084, 4, 2, UNI_IN__1_DOT_1 } /* in=v11 */,
+ { 1, 2324, 6692, 6, 15, UNI_TRANSPORTANDMAP } /* block=transportandmap */,
+ { 1, 7134, 934, 26, 6, -UNI_PCM } /* prependedconcatenationmark=false */,
+ { 1, 2301, 934, 4, 6, -UNI_XIDC } /* xidc=false */,
+ { 1, 7274, 1887, 9, 7, UNI_XPOSIXCNTRL } /* category=control */,
+ { 2, 2523, 1479, 8, 5, UNI_XPOSIXSPACE } /* isxposixspace */,
+ { 0, 3832, 0, 16, 0, UNI_NV__5_SLASH_8 } /* numericvalue=5/8 */,
+ { 2, 5637, 2720, 20, 3, UNI_RI } /* graphemeclusterbreak=ri */,
+ { 1, 4377, 353, 14, 4, UNI_DT__NONE } /* nfkdquickcheck=yes */,
+ { 0, 1823, 499, 7, 6, UNI_LYDI } /* script=lydian */,
+ { 2, 1667, 5838, 4, 10, UNI_JAMO } /* blk=hanguljamo */,
+ { 0, 5574, 353, 21, 4, UNI_CWL } /* changeswhenlowercased=yes */,
+ { 0, 1102, 590, 4, 7, UNI_DSRT } /* scx=deseret */,
+ { 0, 1102, 3663, 4, 10, UNI_DEVA } /* scx=devanagari */,
+ { 3, 375, 0, 5, 0, UNI_GREXT } /* grext */,
+ { 0, 108, 0, 4, 0, UNI_KAWI } /* kawi */,
+ { 0, 609, 5657, 2, 3, UNI_LB__ID } /* lb=id */,
+ { 5, 6165, 1117, 3, 4, UNI_SC__TAGB } /* sc=tagb */,
+ { 19, 7404, 6021, 21, 8, UNI_BC__RLO } /* bidiclass=righttoleftoverride */,
+ { 8, 609, 2720, 2, 3, UNI_RI } /* lb=ri */,
+ { 2, 1102, 74, 4, 4, UNI_CYRL } /* scx=cyrl */,
+ { 4, 2, 599, 3, 2, -UNI_CWL } /* cwl=n */,
+ { 1, 1198, 3611, 5, 6, UNI_CJKCOMPAT } /* incjkcompat */,
+ { 1, 2287, 566, 3, 3, UNI_IN__9 } /* in=9.0 */,
+ { 0, 377, 353, 3, 4, UNI_EXT } /* ext=yes */,
+ { 0, 5637, 248, 21, 2, UNI_GCB__CN } /* graphemeclusterbreak=cn */,
+ { 0, 5574, 585, 21, 2, UNI_CWL } /* changeswhenlowercased=t */,
+ { 4, 292, 347, 3, 2, UNI_NV__49 } /* nv=49 */,
+ { 19, 369, 0, 4, 0, UNI_GOTH } /* goth */,
+ { 4, 7724, 274, 17, 1, UNI_vs_values_index } /* variationselector= */,
+ { 46, 1102, 1592, 4, 10, UNI_SAUR } /* scx=saurashtra */,
+ { 0, 461, 3692, 2, 7, UNI_LISUSUP } /* islisusup */,
+ { 0, 1102, 6154, 4, 9, UNI_XSUX } /* scx=cuneiform */,
+ { 0, 1823, 240, 7, 4, UNI_SC__ZYYY } /* script=zyyy */,
+ { 3, 959, 585, 8, 2, UNI_EXT } /* extender=t */,
+ { 0, 5979, 44, 3, 1, UNI_VO__U } /* vo=u */,
+ { 0, 2324, 3421, 6, 15, UNI_NARB } /* block=oldnortharabian */,
+ { 0, 823, 934, 4, 6, -UNI_DASH } /* dash=false */,
+ { 6, 1823, 132, 7, 4, UNI_MTEI } /* script=mtei */,
+ { 9, 7591, 306, 3, 2, UNI_LB__SP } /* lb=sp */,
+ { 3, 597, 4277, 3, 5, UNI_DT__SML } /* dt=small */,
+ { 0, 461, 1248, 2, 7, UNI_PHAG } /* isphagspa */,
+ { 6, 4360, 2039, 10, 2, UNI_LB__BK } /* linebreak=bk */,
+ { 0, 292, 2108, 3, 3, UNI_NV__500 } /* nv=500 */,
+ { 0, 7669, 3599, 19, 12, UNI_GCB__T } /* hangulsyllabletype=trailingjamo */,
+ { 0, 1823, 779, 7, 7, UNI_OSMA } /* script=osmanya */,
+ { 1, 629, 933, 5, 7, -UNI_GRBASE } /* grbase=false */,
+ { 0, 2525, 2060, 6, 5, UNI_XPOSIXALPHA } /* xposixalpha */,
+ { 9, 7011, 1155, 24, 2, UNI_CCC__35 } /* canonicalcombiningclass=35 */,
+ { 0, 2302, 353, 3, 2, UNI_IDC } /* idc=y */,
+ { 0, 2301, 352, 10, 5, UNI_XIDC } /* xidcontinue=yes */,
+ { 6, 5895, 6103, 5, 13, UNI_SUPMATHOPERATORS } /* issupmathoperators */,
+ { 0, 1823, 854, 7, 7, UNI_TAVT } /* script=taiviet */,
+ { 5, 7648, 4277, 18, 5, UNI_DT__SML } /* decompositiontype=small */,
+ { 0, 597, 1707, 3, 3, UNI_DT__FRA } /* dt=fra */,
+ { 10, 2665, 353, 13, 4, UNI_PATSYN } /* patternsyntax=yes */,
+ { 0, 749, 1924, 3, 9, UNI_CHESSSYMBOLS } /* chesssymbols */,
+ { 2, 461, 4131, 2, 15, UNI_VEDICEXT } /* isvedicextensions */,
+ { 1, 2752, 598, 13, 3, -UNI_ECOMP } /* emojicomponent=n */,
+ { 1, 1102, 1635, 4, 4, UNI_WARA } /* scx=wara */,
+ { 0, 4424, 144, 17, 4, UNI_NEWA } /* scriptextensions=newa */,
+ { 0, 6165, 673, 3, 5, UNI_OSGE } /* sc=osage */,
+ { 0, 2002, 307, 7, 5, UNI_POSIXPRINT } /* isposixprint */,
+ { 1, 1424, 2165, 8, 2, UNI_WB__EB } /* ccc=ccc133 */,
+ { 0, 461, 1385, 2, 6, UNI_THAA } /* isthaana */,
+ { 0, 461, 2360, 2, 10, UNI_CN } /* isunassigned */,
+ { 0, 7267, 5235, 16, 20, UNI_PC } /* generalcategory=connectorpunctuation */,
+ { 2, 1667, 1340, 4, 9, UNI_INOLDTURKIC } /* blk=oldturkic */,
+ { 0, 271, 1612, 4, 2, UNI_LB__LF } /* gcb=lf */,
+ { 0, 590, 6843, 2, 23, UNI_DI } /* defaultignorablecodepoint */,
+ { 2, 8601, 1269, 10, 3, UNI_SUPPUAB } /* block=suppuab */,
+ { 0, 19, 585, 4, 5, UNI_POSIXXDIGIT } /* ahex=true */,
+ { 5, 3635, 81, 7, 2, UNI_LATINEXTG } /* latinextg */,
+ { 2, 6735, 720, 22, 3, UNI_JG__MALAYALAMNNA } /* joininggroup=malayalamnna */,
+ { 8, 552, 563, 4, 3, UNI_AGE__8 } /* age=8.0 */,
+ { 0, 5937, 353, 21, 4, UNI__PERL_NCHAR } /* noncharactercodepoint=yes */,
+ { 1, 1667, 4060, 4, 15, UNI_BRAI } /* blk=braillepatterns */,
+ { 4, 1272, 60, 3, 3, UNI_CHRS } /* ischrs */,
+ { 9, 1667, 322, 4, 5, UNI_VSSUP } /* blk=vssup */,
+ { 10, 3130, 2773, 5, 13, UNI_INGREEK } /* blk=greekandcoptic */,
+ { 7, 339, 6328, 4, 4, UNI_WB__EB } /* ccc=atbl */,
+ { 3, 21, 598, 2, 2, UNI_ext_values_index } /* ext= */,
+ { 8, 1494, 957, 6, 5, UNI_GEORGIANEXT } /* georgianext */,
+ { 0, 693, 2814, 5, 8, UNI_SO } /* isothersymbol */,
+ { 0, 1009, 0, 6, 0, UNI_LYCI } /* lycian */,
+ { 0, 3791, 1926, 4, 6, UNI_SM } /* mathsymbol */,
+ { 2, 309, 1051, 2, 8, UNI_INMAHAJANI } /* inmahajani */,
+ { 17, 333, 0, 4, 0, UNI_CARI } /* cari */,
+ { 6, 3817, 1317, 15, 2, UNI_NV__1_SLASH_32 } /* numericvalue=1/32 */,
+ { 0, 4584, 934, 18, 6, -UNI_IDST } /* idstrinaryoperator=false */,
+ { 1, 1667, 3635, 4, 14, UNI_LATINEXTD } /* blk=latinextendedd */,
+ { 1, 461, 2692, 2, 13, UNI_VERTICALFORMS } /* isverticalforms */,
+ { 4, 375, 2931, 4, 3, UNI_GREXT } /* grext=t */,
+ { 4, 1492, 958, 9, 4, UNI_GEORGIANEXT } /* ingeorgianext */,
+ { 3, 2526, 0, 10, 0, UNI_POSIXBLANK } /* posixblank */,
+ { 0, 30, 6580, 1, 17, UNI_INDICNUMBERFORMS } /* inindicnumberforms */,
+ { 0, 1667, 7086, 4, 24, UNI_ARABICPFB } /* blk=arabicpresentationformsb */,
+ { 2, 1942, 584, 11, 6, UNI_GRBASE } /* graphemebase=true */,
+ { 4, 2536, 1920, 3, 3, UNI_JG__TAH } /* jg=tah */,
+ { 1, 461, 688, 2, 5, UNI_BATK } /* isbatak */,
+ { 1, 4191, 352, 8, 5, UNI_XPOSIXLOWER } /* lowercase=yes */,
+ { 12, 2766, 4, 3, 2, UNI_LO } /* gc=lo */,
+ { 1, 2832, 0, 10, 0, UNI_CYRL } /* iscyrillic */,
+ { 0, 3177, 3123, 15, 7, UNI_EA__N } /* eastasianwidth=neutral */,
+ { 4, 2468, 0, 6, 0, UNI_IPAEXT } /* ipaext */,
+ { 3, 6041, 928, 21, 2, UNI_BPT__O } /* bidipairedbrackettype=o */,
+ { 0, 302, 4439, 4, 2, UNI_patws_values_index } /* patws= */,
+ { 0, 2324, 779, 6, 7, UNI_INOSMANYA } /* block=osmanya */,
+ { 8, 4424, 4896, 17, 4, UNI_BAMU } /* scriptextensions=bamu */,
+ { 0, 3021, 288, 5, 2, UNI_IN__13 } /* in=v130 */,
+ { 1, 6165, 1205, 3, 4, UNI_SC__GRAN } /* sc=gran */,
+ { 2, 2514, 5107, 3, 18, UNI_MODIFIERTONELETTERS } /* ismodifiertoneletters */,
+ { 1, 461, 1779, 2, 11, UNI_MEDF } /* ismedefaidrin */,
+ { 1, 1667, 3649, 4, 14, UNI_PHONETICEXTSUP } /* blk=phoneticextsup */,
+ { 0, 375, 353, 5, 4, UNI_GREXT } /* grext=yes */,
+ { 0, 309, 7537, 2, 27, UNI_ALPHABETICPF } /* inalphabeticpresentationforms */,
+ { 14, 3204, 585, 14, 2, UNI_GREXT } /* graphemeextend=t */,
+ { 0, 1667, 4896, 4, 15, UNI_BAMUMSUP } /* blk=bamumsupplement */,
+ { 2, 6427, 1540, 13, 3, UNI_JG__YEH } /* joininggroup=yeh */,
+ { 0, 1667, 4926, 4, 15, UNI_TAMILSUP } /* blk=tamilsupplement */,
+ { 1, 552, 2689, 4, 3, UNI_AGE__6_DOT_1 } /* age=6.1 */,
+ { 0, 1102, 648, 4, 5, UNI_ADLM } /* scx=adlam */,
+ { 0, 7011, 118, 24, 2, UNI_CCC__DA } /* canonicalcombiningclass=da */,
+ { 1, 4043, 585, 4, 2, UNI_IDSB } /* idsb=t */,
+ { 0, 54, 3726, 2, 10, UNI_SC__MLYM } /* sc=malayalam */,
+ { 0, 2208, 0, 4, 0, UNI_NV__5 } /* nv=5 */,
+ { 4, 3093, 0, 13, 0, UNI_POSIXXDIGIT } /* asciihexdigit */,
+ { 1, 6165, 1117, 3, 8, UNI_SC__TAGB } /* sc=tagbanwa */,
+ { 1, 4424, 1009, 17, 4, UNI_LYCI } /* scriptextensions=lyci */,
+ { 1, 1454, 585, 2, 2, UNI_SD } /* sd=t */,
+ { 0, 1102, 3954, 4, 17, UNI_AGHB } /* scx=caucasianalbanian */,
+ { 6, 3633, 4344, 3, 16, UNI_LETTERLIKESYMBOLS } /* inletterlikesymbols */,
+ { 0, 678, 0, 5, 0, UNI_RUNR } /* runic */,
+ { 2, 1102, 1009, 4, 4, UNI_LYCI } /* scx=lyci */,
+ { 3, 1198, 0, 5, 0, UNI_CJK } /* incjk */,
+ { 3, 3490, 4511, 12, 9, UNI_CYRILLICEXTB } /* blk=cyrillicextendedb */,
+ { 0, 261, 353, 5, 2, UNI_CWKCF } /* cwkcf=y */,
+ { 3, 951, 0, 4, 0, UNI_DUPL } /* dupl */,
+ { 3, 461, 4525, 2, 12, UNI_CYRILLICEXTC } /* iscyrillicextc */,
+ { 3, 1914, 0, 7, 0, UNI_UCASEXT } /* ucasext */,
+ { 0, 1823, 527, 7, 6, UNI_RJNG } /* script=rejang */,
+ { 0, 406, 934, 2, 2, -UNI_DI } /* di=f */,
+ { 0, 1198, 1966, 3, 9, UNI_COMPATJAMO } /* incompatjamo */,
+ { 2, 2852, 0, 12, 0, UNI_MAHJONG } /* mahjongtiles */,
+ { 2, 1530, 1037, 6, 4, UNI_KANAEXTB } /* iskanaextb */,
+ { 0, 461, 4131, 2, 8, UNI_VEDICEXT } /* isvedicext */,
+ { 10, 7724, 934, 17, 6, -UNI_VS } /* variationselector=false */,
+ { 2, 5769, 0, 4, 0, UNI_EMOD } /* emod */,
+ { 11, 925, 0, 5, 0, UNI_BPT__O } /* bpt=o */,
+ { 13, 4424, 333, 17, 4, UNI_CARI } /* scriptextensions=cari */,
+ { 2, 7198, 4710, 5, 15, UNI_SYRIACSUP } /* blk=syriacsupplement */,
+ { 10, 967, 0, 8, 0, UNI_GUJR } /* gujarati */,
+ { 9, 3633, 1505, 7, 4, UNI_LATINEXTA } /* inlatinexta */,
+ { 3, 4424, 466, 17, 4, UNI_SOGO } /* scriptextensions=sogo */,
+ { 10, 309, 5373, 2, 18, UNI_TAIXUANJING } /* intaixuanjingsymbols */,
+ { 32, 1823, 1117, 7, 8, UNI_SC__TAGB } /* script=tagbanwa */,
+ { 1, 4424, 132, 17, 4, UNI_MTEI } /* scriptextensions=mtei */,
+ { 2, 5216, 4698, 10, 5, UNI_LATIN1 } /* block=latin1sup */,
+ { 3, 339, 1157, 4, 5, UNI_CCC__7 } /* ccc=nukta */,
+ { 0, 324, 4150, 3, 11, UNI_SUPPUNCTUATION } /* suppunctuation */,
+ { 0, 3984, 934, 17, 2, -UNI_EPRES } /* emojipresentation=f */,
+ { 1, 4424, 537, 17, 4, UNI_TANG } /* scriptextensions=tang */,
+ { 0, 461, 3649, 2, 11, UNI_PHONETICEXT } /* isphoneticext */,
+ { 6, 4502, 1037, 9, 4, UNI_LATINEXTB } /* blk=latinextb */,
+ { 1, 309, 3663, 2, 14, UNI_DEVANAGARIEXTA } /* indevanagariexta */,
+ { 0, 339, 3147, 4, 5, UNI_CCC__A } /* ccc=above */,
+ { 8, 2324, 5392, 7, 17, UNI_CHEROKEESUP } /* block=cherokeesupplement */,
+ { 1, 2232, 1805, 4, 5, UNI_NV__800000 } /* nv=800000 */,
+ { 0, 2494, 5800, 9, 11, UNI_GEORGIANSUP } /* isgeorgiansupplement */,
+ { 28, 6090, 1553, 7, 9, UNI_MISCARROWS } /* block=miscarrows */,
+ { 16, 461, 2362, 2, 8, UNI_ASSIGNED } /* isassigned */,
+ { 2, 2766, 330, 3, 2, UNI_PD } /* gc=pd */,
+ { 0, 309, 4536, 2, 18, UNI_COPTICEPACTNUMBERS } /* incopticepactnumbers */,
+ { 1, 5216, 1674, 11, 4, UNI_LATINEXTD } /* block=latinextd */,
+ { 2, 7752, 5047, 23, 6, UNI_JG__MANICHAEANDALETH } /* joininggroup=manichaeandaleth */,
+ { 3, 1667, 818, 4, 7, UNI_SC__SHRD } /* blk=sharada */,
+ { 10, 5065, 4247, 13, 4, UNI_JG__MANICHAEANKAPH } /* jg=manichaeankaph */,
+ { 32, 3514, 6193, 10, 5, UNI_ARABICSUP } /* block=arabicsup */,
+ { 3, 1883, 599, 5, 3, -UNI_BIDIC } /* bidic=no */,
+ { 0, 309, 678, 2, 5, UNI_INRUNIC } /* inrunic */,
+ { 0, 2718, 4, 4, 2, UNI_BC__RLO } /* bc=rlo */,
+ { 13, 1667, 5876, 4, 12, UNI_SUNDANESESUP } /* blk=sundanesesup */,
+ { 7, 4519, 4659, 14, 9, UNI_CYRILLICEXTC } /* block=cyrillicextendedc */,
+ { 9, 2766, 3554, 3, 13, UNI_ZL } /* gc=lineseparator */,
+ { 1, 2324, 4533, 9, 4, UNI_CJKEXTC } /* block=cjkextc */,
+ { 0, 3677, 0, 11, 0, UNI_LATINEXTE } /* islatinexte */,
+ { 2, 1823, 1090, 7, 4, UNI_SC__LINB } /* script=linb */,
+ { 0, 1667, 377, 7, 4, UNI_CJKEXTH } /* blk=cjkexth */,
+ { 0, 454, 0, 4, 0, UNI_PRTI } /* prti */,
+ { 18, 1823, 4896, 7, 5, UNI_BAMU } /* script=bamum */,
+ { 9, 309, 6120, 2, 22, UNI_DIACRITICALSFORSYMBOLS } /* indiacriticalsforsymbols */,
+ { 2, 461, 5838, 2, 19, UNI_JAMOEXTA } /* ishanguljamoextendeda */,
+ { 3, 1438, 0, 10, 0, UNI_CHRS } /* chorasmian */,
+ { 3, 2514, 1553, 3, 9, UNI_MISCARROWS } /* ismiscarrows */,
+ { 0, 3663, 0, 13, 0, UNI_DEVANAGARIEXT } /* devanagariext */,
+ { 11, 19, 1104, 3, 3, UNI_POSIXXDIGIT } /* ahex=t */,
+ { 5, 1942, 0, 12, 0, UNI_GRBASE } /* graphemebase */,
+ { 1, 6165, 168, 3, 4, UNI_SC__COPT } /* sc=qaac */,
+ { 35, 461, 1248, 2, 4, UNI_PHAG } /* isphag */,
+ { 1, 6165, 317, 3, 5, UNI_SC__TALE } /* sc=taile */,
+ { 0, 1667, 991, 4, 6, UNI_INHATRAN } /* blk=hatran */,
+ { 0, 6165, 1635, 3, 4, UNI_WARA } /* sc=wara */,
+ { 0, 629, 933, 5, 3, -UNI_GRBASE } /* grbase=f */,
+ { 1, 3817, 520, 14, 1, UNI_NV__17 } /* numericvalue=17 */,
+ { 0, 2732, 1505, 10, 4, UNI_ARABICEXTA } /* blk=arabicexta */,
+ { 1, 6165, 55, 3, 4, UNI_CHAM } /* sc=cham */,
+ { 0, 7267, 8, 16, 2, UNI_PC } /* generalcategory=pc */,
+ { 0, 461, 4487, 2, 6, UNI_ZYYY } /* iscommon */,
+ { 17, 5205, 2046, 5, 11, UNI_INMASARAMGONDI } /* blk=masaramgondi */,
+ { 0, 7198, 5149, 7, 7, UNI_SUPARROWSA } /* blk=suparrowsa */,
+ { 0, 4161, 585, 9, 5, UNI_DIA } /* diacritic=true */,
+ { 0, 461, 1133, 2, 4, UNI_VITH } /* isvith */,
+ { 0, 6165, 880, 3, 7, UNI_ZZZZ } /* sc=unknown */,
+ { 30, 461, 1349, 2, 9, UNI_OUGR } /* isolduyghur */,
+ { 0, 7383, 305, 10, 2, UNI_BC__WS } /* bidiclass=ws */,
+ { 0, 2280, 890, 9, 5, UNI_IN__10 } /* presentin=10.0 */,
+ { 2, 7892, 585, 16, 2, UNI_UIDEO } /* unifiedideograph=t */,
+ { 5, 2718, 7776, 3, 21, UNI_BC__PDI } /* bc=popdirectionalisolate */,
+ { 1, 1823, 4740, 7, 4, UNI_SC__TALE } /* script=tale */,
+ { 0, 1522, 0, 8, 0, UNI_UGAR } /* ugaritic */,
+ { 6, 5658, 6890, 15, 10, UNI_IDENTIFIERTYPE__LIMITEDUSE } /* identifiertype=limiteduse */,
+ { 6, 590, 0, 7, 0, UNI_DSRT } /* deseret */,
+ { 0, 1102, 244, 4, 4, UNI_ZZZZ } /* scx=zzzz */,
+ { 0, 1198, 6400, 5, 11, UNI_CJKRADICALSSUP } /* incjkradicalssup */,
+ { 1, 1065, 769, 4, 3, UNI_NV__17_SLASH_2 } /* nv=17/2 */,
+ { 1, 4407, 599, 17, 3, -UNI_RI } /* regionalindicator=no */,
+ { 1, 1823, 220, 7, 4, UNI_WCHO } /* script=wcho */,
+ { 0, 4407, 599, 17, 2, -UNI_RI } /* regionalindicator=n */,
+ { 16, 1391, 366, 3, 2, UNI_WB__SQ } /* wb=sq */,
+ { 1, 7752, 5053, 23, 6, UNI_JG__MANICHAEANLAMEDH } /* joininggroup=manichaeanlamedh */,
+ { 3, 2678, 2083, 11, 2, UNI_IN__5_DOT_1 } /* presentin=5.1 */,
+ { 4, 552, 2155, 4, 3, UNI_AGE__3_DOT_1 } /* age=3.1 */,
+ { 0, 1823, 2780, 7, 4, UNI_SC__COPT } /* script=copt */,
+ { 0, 6090, 5107, 7, 18, UNI_MODIFIERTONELETTERS } /* block=modifiertoneletters */,
+ { 19, 4970, 585, 13, 5, UNI_EMOD } /* emojimodifier=true */,
+ { 6, 4424, 983, 17, 4, UNI_HIRA } /* scriptextensions=hira */,
+ { 9, 2244, 0, 12, 0, UNI_HUNG } /* oldhungarian */,
+ { 2, 461, 369, 2, 4, UNI_GOTH } /* isgoth */,
+ { 1, 5637, 3463, 21, 12, UNI_WB__EB } /* graphemeclusterbreak=glueafterzwj */,
+ { 0, 309, 5391, 2, 8, UNI_INCHEROKEE } /* incherokee */,
+ { 2, 2060, 934, 5, 6, -UNI_XPOSIXALPHA } /* alpha=false */,
+ { 0, 369, 0, 6, 0, UNI_GOTH } /* gothic */,
+ { 1, 380, 2288, 5, 2, UNI_hyphen_values_index } /* hyphen= */,
+ { 0, 1102, 2811, 4, 5, UNI_KHMR } /* scx=khmer */,
+ { 0, 1667, 1975, 4, 10, UNI_INOLDSOGDIAN } /* blk=oldsogdian */,
+ { 0, 876, 0, 4, 0, UNI_IDEO } /* ideo */,
+ { 4, 2280, 549, 11, 3, UNI_IN__14 } /* presentin=14.0 */,
+ { 7, 292, 1313, 3, 3, UNI_NV__600 } /* nv=600 */,
+ { 1, 1424, 393, 7, 2, UNI_CCC__15 } /* ccc=ccc15 */,
+ { 0, 6586, 0, 11, 0, UNI_NUMBERFORMS } /* numberforms */,
+ { 0, 1667, 3163, 5, 14, UNI_CONTROLPICTURES } /* blk=controlpictures */,
+ { 7, 3514, 4531, 10, 6, UNI_ARABICEXTC } /* block=arabicextc */,
+ { 0, 4424, 1021, 17, 6, UNI_WCHO } /* scriptextensions=wancho */,
+ { 6, 668, 0, 5, 0, UNI_OGAM } /* ogham */,
+ { 10, 8246, 6635, 27, 7, UNI_INPC__TOPANDLEFT } /* indicpositionalcategory=topandleft */,
+ { 8, 1914, 0, 8, 0, UNI_UCASEXTA } /* ucasexta */,
+ { 0, 7752, 4243, 23, 4, UNI_JG__MANICHAEANHETH } /* joininggroup=manichaeanheth */,
+ { 2, 1883, 599, 5, 2, -UNI_BIDIC } /* bidic=n */,
+ { 1, 7274, 115, 9, 2, UNI_SK } /* category=sk */,
+ { 13, 30, 5711, 1, 5, UNI_MERO } /* ismero */,
+ { 3, 6427, 2864, 13, 11, UNI_JG__ROHINGYAYEH } /* joininggroup=rohingyayeh */,
+ { 4, 5616, 585, 21, 2, UNI_CWU } /* changeswhenuppercased=t */,
+ { 0, 3391, 1803, 12, 6, UNI_NV__10000 } /* numericvalue=10000 */,
+ { 1, 339, 768, 4, 2, UNI_CCC__27 } /* ccc=27 */,
+ { 0, 98, 0, 4, 0, UNI_HLUW } /* hluw */,
+ { 3, 309, 4911, 2, 15, UNI_DIACRITICALSSUP } /* indiacriticalssup */,
+ { 35, 6427, 3012, 12, 2, UNI_JG__E } /* joininggroup=e */,
+ { 0, 4407, 934, 17, 6, -UNI_RI } /* regionalindicator=false */,
+ { 16, 3514, 5848, 12, 9, UNI_ARABICEXTA } /* block=arabicextendeda */,
+ { 1, 3001, 590, 12, 2, UNI_XPOSIXDIGIT } /* numerictype=de */,
+ { 2, 716, 4272, 3, 16, UNI_INKHITANSMALLSCRIPT } /* inkhitansmallscript */,
+ { 0, 4360, 5090, 9, 3, UNI_LB__CL } /* linebreak=cl */,
+ { 6, 4424, 3663, 17, 10, UNI_DEVA } /* scriptextensions=devanagari */,
+ { 1, 154, 6945, 3, 12, UNI_GEOMETRICSHAPES } /* geometricshapes */,
+ { 19, 7011, 7387, 18, 7, UNI_CCC__L } /* canonicalcombiningclass=l */,
+ { 0, 461, 1819, 2, 4, UNI_MONG } /* ismong */,
+ { 1, 5769, 585, 4, 2, UNI_EMOD } /* emod=t */,
+ { 4, 4424, 1015, 17, 6, UNI_TELU } /* scriptextensions=telugu */,
+ { 0, 461, 2852, 2, 12, UNI_MAHJONG } /* ismahjongtiles */,
+ { 2, 1243, 4523, 2, 14, UNI_CYRILLICEXTC } /* blk=cyrillicextc */,
+ { 0, 1823, 1367, 7, 9, UNI_PAUC } /* script=paucinhau */,
+ { 0, 461, 6324, 2, 6, UNI_CF } /* isformat */,
+ { 0, 7267, 2360, 16, 10, UNI_CN } /* generalcategory=unassigned */,
+ { 0, 309, 519, 2, 2, UNI_IN__7 } /* in=7 */,
+ { 1, 7648, 51, 18, 3, UNI_DT__CAN } /* decompositiontype=can */,
+ { 0, 1667, 1027, 4, 6, UNI_INYEZIDI } /* blk=yezidi */,
+ { 14, 1065, 1318, 5, 2, UNI_NV__1_SLASH_20 } /* nv=1/20 */,
+ { 0, 2, 353, 3, 2, UNI_CWL } /* cwl=y */,
+ { 0, 5769, 585, 4, 5, UNI_EMOD } /* emod=true */,
+ { 0, 7274, 106, 9, 2, UNI_ZL } /* category=zl */,
+ { 0, 7537, 599, 10, 3, -UNI_XPOSIXALPHA } /* alphabetic=no */,
+ { 21, 7724, 0, 17, 0, UNI_VS } /* variationselector */,
+ { 3, 6163, 3257, 14, 6, UNI_INSC__CONSONANTKILLER } /* insc=consonantkiller */,
+ { 38, 5373, 0, 18, 0, UNI_TAIXUANJING } /* taixuanjingsymbols */,
+ { 0, 4391, 6263, 14, 8, UNI_NV__1_SLASH_320 } /* numericvalue=3.125e-03 */,
+ { 6, 2536, 2549, 3, 10, UNI_JG__DALATHRISH } /* jg=dalathrish */,
+ { 18, 380, 353, 6, 4, UNI_HYPHEN } /* hyphen=yes */,
+ { 0, 1102, 3349, 4, 4, UNI_MERO } /* scx=mero */,
+ { 13, 6870, 0, 20, 0, UNI_CE } /* compositionexclusion */,
+ { 4, 1102, 725, 4, 7, UNI_KALI } /* scx=kayahli */,
+ { 3, 1734, 4441, 3, 16, UNI_SMALLFORMS } /* issmallformvariants */,
+ { 2, 6450, 0, 14, 0, UNI_sb_values_index } /* sentencebreak= */,
+ { 4, 1823, 474, 7, 4, UNI_VAI } /* script=vaii */,
+ { 0, 309, 6586, 2, 11, UNI_NUMBERFORMS } /* innumberforms */,
+ { 1, 2324, 1853, 6, 11, UNI_INSYLOTINAGRI } /* block=sylotinagri */,
+ { 0, 257, 599, 4, 3, -UNI_CWCM } /* cwcm=no */,
+ { 7, 1479, 3558, 5, 9, UNI_ZS } /* spaceseparator */,
+ { 0, 2483, 353, 5, 4, UNI_CASED } /* cased=yes */,
+ { 5, 2302, 584, 9, 3, UNI_IDC } /* idcontinue=t */,
+ { 0, 6841, 934, 25, 2, -UNI_DI } /* defaultignorablecodepoint=f */,
+ { 2, 309, 4651, 2, 16, UNI_BOPOMOFOEXT } /* inbopomofoextended */,
+ { 0, 7267, 4554, 16, 15, UNI_TITLE } /* generalcategory=titlecaseletter */,
+ { 1, 406, 934, 3, 6, -UNI_DIA } /* dia=false */,
+ { 1, 1391, 0, 3, 0, UNI_wb_values_index } /* wb= */,
+ { 0, 6165, 991, 3, 6, UNI_HATR } /* sc=hatran */,
+ { 0, 1102, 1978, 4, 4, UNI_SOGD } /* scx=sogd */,
+ { 1, 6163, 5762, 5, 16, UNI_INSC__SYLLABLEMODIFIER } /* insc=syllablemodifier */,
+ { 1, 1667, 6185, 4, 20, UNI_GLAGOLITICSUP } /* blk=glagoliticsupplement */,
+ { 0, 1075, 1805, 4, 5, UNI_NV__200000 } /* nv=200000 */,
+ { 3, 1823, 1592, 7, 4, UNI_SAUR } /* script=saur */,
+ { 2, 6618, 4107, 11, 12, UNI_INPC__TOPANDLEFTANDRIGHT } /* inpc=topandleftandright */,
+ { 2, 6062, 4511, 14, 9, UNI_ETHIOPICEXTB } /* block=ethiopicextendedb */,
+ { 17, 1102, 5778, 4, 21, UNI_PRTI } /* scx=inscriptionalparthian */,
+ { 0, 7724, 585, 17, 5, UNI_VS } /* variationselector=true */,
+ { 2, 16, 2370, 1, 12, UNI_GREEKEXT } /* greekextended */,
+ { 2, 6236, 1805, 17, 7, UNI_NV__10000000000 } /* numericvalue=10000000000 */,
+ { 0, 7011, 1070, 24, 2, UNI_CCC__31 } /* canonicalcombiningclass=31 */,
+ { 2, 7011, 1432, 24, 6, UNI_CCC__9 } /* canonicalcombiningclass=virama */,
+ { 1, 2220, 6279, 4, 8, UNI_NV__1_SLASH_160 } /* nv=6.250e-03 */,
+ { 0, 5799, 7707, 13, 17, UNI_SUPPUAB } /* insupplementaryprivateuseareab */,
+ { 4, 1942, 933, 11, 7, -UNI_GRBASE } /* graphemebase=false */,
+ { 0, 1223, 4511, 4, 9, UNI_KANAEXTB } /* kanaextendedb */,
+ { 0, 1823, 1227, 7, 7, UNI_MAKA } /* script=makasar */,
+ { 3, 2401, 4511, 10, 9, UNI_ETHIOPICEXTB } /* inethiopicextendedb */,
+ { 1, 2766, 4667, 3, 16, UNI_PE } /* gc=closepunctuation */,
+ { 7, 4424, 1209, 17, 4, UNI_THAI } /* scriptextensions=thai */,
+ { 0, 7724, 0, 18, 0, UNI_INVS } /* variationselectors */,
+ { 0, 4795, 0, 14, 0, UNI_NV__6 } /* numericvalue=6 */,
+ { 2, 339, 3971, 4, 13, UNI_CCC__IS } /* ccc=iotasubscript */,
+ { 3, 4424, 1367, 17, 4, UNI_PAUC } /* scriptextensions=pauc */,
+ { 0, 461, 255, 2, 2, UNI_CF } /* iscf */,
+ { 0, 2280, 560, 10, 3, UNI_IN__7 } /* presentin=7.0 */,
+ { 0, 7383, 52, 10, 2, UNI_BC__AN } /* bidiclass=an */,
+ { 1, 461, 3192, 2, 12, UNI_NL } /* isletternumber */,
+ { 1, 2324, 144, 6, 4, UNI_INNEWA } /* block=newa */,
+ { 0, 4424, 2735, 16, 5, UNI_ARAB } /* scriptextensions=arab */,
+ { 4, 5205, 7620, 5, 19, UNI_MISCSYMBOLS } /* blk=miscellaneoussymbols */,
+ { 0, 5553, 599, 21, 3, -UNI_CWCM } /* changeswhencasemapped=no */,
+ { 1, 6165, 0, 3, 0, UNI_sc_values_index } /* sc= */,
+ { 1, 461, 3263, 2, 13, UNI_XPOSIXDIGIT } /* isdecimalnumber */,
+ { 0, 2018, 2579, 12, 10, UNI_JT__U } /* joiningtype=nonjoining */,
+ { 1, 3817, 1317, 15, 3, UNI_NV__1_SLASH_320 } /* numericvalue=1/320 */,
+ { 5, 2324, 909, 6, 8, UNI_INBALINESE } /* block=balinese */,
+ { 2, 2966, 6671, 3, 21, UNI_MODIFIERLETTERS } /* inspacingmodifierletters */,
+ { 0, 2324, 6581, 6, 16, UNI_INDICNUMBERFORMS } /* block=indicnumberforms */,
+ { 0, 6163, 1157, 5, 5, UNI_INSC__NUKTA } /* insc=nukta */,
+ { 3, 6165, 136, 3, 4, UNI_SC__MYMR } /* sc=mymr */,
+ { 1, 597, 6116, 3, 4, UNI_DT__FONT } /* dt=font */,
+ { 1, 461, 5373, 2, 11, UNI_TAIXUANJING } /* istaixuanjing */,
+ { 4, 6165, 184, 3, 4, UNI_SAMR } /* sc=samr */,
+ { 0, 8601, 6965, 9, 22, UNI_SUPERANDSUB } /* block=superscriptsandsubscripts */,
+ { 0, 3724, 720, 13, 3, UNI_JG__MALAYALAMNNNA } /* jg=malayalamnnna */,
+ { 9, 3791, 585, 4, 2, UNI_MATH } /* math=t */,
+ { 7, 2002, 308, 3, 4, UNI_XPOSIXPRINT } /* isprint */,
+ { 8, 1667, 5125, 4, 19, UNI_OTTOMANSIYAQNUMBERS } /* blk=ottomansiyaqnumbers */,
+ { 22, 2324, 7972, 7, 15, UNI_CUNEIFORMNUMBERS } /* block=cuneiformnumbers */,
+ { 0, 1667, 474, 4, 3, UNI_INVAI } /* blk=vai */,
+ { 0, 4424, 1812, 17, 11, UNI_HMNG } /* scriptextensions=pahawhhmong */,
+ { 7, 7648, 6116, 18, 4, UNI_DT__FONT } /* decompositiontype=font */,
+ { 0, 8343, 1985, 22, 7, UNI_INSC__VISARGA } /* indicsyllabiccategory=visarga */,
+ { 1, 6165, 1015, 3, 4, UNI_SC__TELU } /* sc=telu */,
+ { 9, 2301, 934, 4, 2, -UNI_XIDC } /* xidc=f */,
+ { 9, 1421, 2370, 3, 12, UNI_GREEKEXT } /* ingreekextended */,
+ { 1, 4424, 204, 17, 4, UNI_TFNG } /* scriptextensions=tfng */,
+ { 0, 4970, 5671, 16, 3, -UNI_EBASE } /* emojimodifierbase=n */,
+ { 8, 2718, 3924, 3, 14, UNI_BC__EN } /* bc=europeannumber */,
+ { 4, 1007, 3570, 3, 13, UNI_HALFANDFULLFORMS } /* halfandfullforms */,
+ { 0, 6165, 430, 3, 4, UNI_SC__NKO } /* sc=nkoo */,
+ { 11, 4131, 0, 8, 0, UNI_VEDICEXT } /* vedicext */,
+ { 1, 1397, 598, 3, 4, -UNI_IDST } /* idst=no */,
+ { 21, 1391, 3472, 3, 3, UNI_LB__ZWJ } /* wb=zwj */,
+ { 0, 533, 832, 3, 5, UNI_SB__ST } /* sb=sterm */,
+ { 0, 716, 0, 9, 0, UNI_INKANNADA } /* inkannada */,
+ { 3, 6165, 608, 3, 7, UNI_ELBA } /* sc=elbasan */,
+ { 0, 8343, 0, 31, 0, UNI_INSC__CONSONANT } /* indicsyllabiccategory=consonant */,
+ { 2, 3391, 2106, 13, 9, UNI_NV__3_SLASH_2 } /* numericvalue=1.500e+00 */,
+ { 5, 339, 119, 4, 2, UNI_CCC__AL } /* ccc=al */,
+ { 0, 7804, 599, 11, 3, -UNI_IDEO } /* ideographic=no */,
+ { 14, 1397, 0, 4, 0, UNI_IDST } /* idst */,
+ { 0, 2324, 6797, 6, 19, UNI_DEVANAGARIEXTA } /* block=devanagariextendeda */,
+ { 3, 1823, 1051, 7, 8, UNI_SC__MAHJ } /* script=mahajani */,
+ { 0, 1667, 5, 4, 3, UNI_OCR } /* blk=ocr */,
+ { 0, 1455, 585, 10, 2, UNI_DEP } /* deprecated=t */,
+ { 8, 1200, 0, 3, 0, UNI_CJK } /* cjk */,
+ { 4, 3502, 4952, 5, 18, UNI_INEGYPTIANHIEROGLYPHS } /* blk=egyptianhieroglyphs */,
+ { 0, 461, 225, 2, 2, UNI_PE } /* ispe */,
+ { 3, 1198, 1448, 5, 7, UNI_CJKSTROKES } /* incjkstrokes */,
+ { 0, 1234, 0, 4, 0, UNI_MULT } /* mult */,
+ { 0, 622, 598, 6, 4, -UNI_EXTPICT } /* extpict=no */,
+ { 0, 2523, 229, 3, 3, UNI_XSUX } /* isxsux */,
+ { 5, 7591, 7537, 3, 10, UNI_LB__AL } /* lb=alphabetic */,
+ { 1, 2068, 0, 12, 0, UNI_MEND } /* mendekikakui */,
+ { 0, 2302, 599, 10, 3, -UNI_IDC } /* idcontinue=no */,
+ { 18, 2002, 161, 3, 3, UNI_PHLP } /* isphlp */,
+ { 0, 1823, 3475, 7, 15, UNI_ZANB } /* script=zanabazarsquare */,
+ { 0, 4424, 3493, 16, 9, UNI_CYRL } /* scriptextensions=cyrillic */,
+ { 3, 309, 6185, 2, 10, UNI_INGLAGOLITIC } /* inglagolitic */,
+ { 3, 1272, 1966, 3, 9, UNI_COMPATJAMO } /* iscompatjamo */,
+ { 9, 309, 1914, 2, 7, UNI_UCASEXT } /* inucasext */,
+ { 5, 1530, 3622, 5, 3, UNI_KANGXI } /* iskangxi */,
+ { 18, 2018, 2897, 12, 11, UNI_JT__D } /* joiningtype=dualjoining */,
+ { 0, 461, 380, 2, 6, UNI_HYPHEN } /* ishyphen */,
+ { 2, 2481, 6848, 6, 9, UNI_CI } /* iscaseignorable */,
+ { 44, 6427, 4263, 13, 4, UNI_JG__QAPH } /* joininggroup=qaph */,
+ { 3, 3391, 1803, 12, 5, UNI_NV__1000 } /* numericvalue=1000 */,
+ { 18, 30, 78, 1, 2, UNI_IDS } /* ids */,
+ { 9, 10, 3788, 1, 15, UNI_MISCMATHSYMBOLSA } /* miscmathsymbolsa */,
+ { 0, 959, 585, 8, 5, UNI_EXT } /* extender=true */,
+ { 0, 1102, 3505, 3, 5, UNI_ETHI } /* scx=ethi */,
+ { 0, 2732, 4987, 5, 16, UNI_ALCHEMICAL } /* blk=alchemicalsymbols */,
+ { 16, 7267, 3101, 16, 5, UNI_XPOSIXDIGIT } /* generalcategory=digit */,
+ { 0, 7267, 3634, 16, 2, UNI_NL } /* generalcategory=nl */,
+ { 44, 6165, 4271, 3, 17, UNI_KITS } /* sc=khitansmallscript */,
+ { 0, 2324, 6400, 9, 11, UNI_CJKRADICALSSUP } /* block=cjkradicalssup */,
+ { 6, 2208, 2107, 4, 8, UNI_NV__11_SLASH_2 } /* nv=5.500e+00 */,
+ { 3, 1823, 951, 7, 4, UNI_SC__DUPL } /* script=dupl */,
+ { 1, 1102, 27, 4, 4, UNI_ARMI } /* scx=armi */,
+ { 0, 3724, 1144, 12, 3, UNI_JG__MALAYALAMBHA } /* jg=malayalambha */,
+ { 8, 571, 0, 7, 0, UNI_AVST } /* avestan */,
+ { 1, 2536, 4247, 3, 4, UNI_JG__KAPH } /* jg=kaph */,
+ { 1, 2514, 8039, 3, 32, UNI_MISCMATHSYMBOLSA } /* ismiscellaneousmathematicalsymbolsa */,
+ { 0, 2324, 317, 6, 5, UNI_INTAILE } /* block=taile */,
+ { 0, 1102, 4060, 4, 7, UNI_BRAI } /* scx=braille */,
+ { 0, 30, 4190, 1, 6, UNI_XPOSIXLOWER } /* islower */,
+ { 18, 461, 1954, 2, 12, UNI_GONG } /* isgunjalagondi */,
+ { 0, 3633, 0, 11, 0, UNI_LATINEXTE } /* inlatinexte */,
+ { 2, 6427, 1041, 13, 5, UNI_JG__GAMAL } /* joininggroup=gamal */,
+ { 0, 3378, 2327, 11, 3, UNI_nfdqc_values_index } /* nfdquickcheck= */,
+ { 1, 2393, 7467, 8, 13, UNI_CYRILLICSUP } /* cyrillicsupplementary */,
+ { 6, 5958, 0, 7, 0, UNI_SINH } /* sinhala */,
+ { 1, 2766, 3026, 3, 2, UNI_PS } /* gc=ps */,
+ { 2, 1102, 236, 4, 4, UNI_ZANB } /* scx=zanb */,
+ { 5, 1102, 5208, 3, 8, UNI_MYMR } /* scx=myanmar */,
+ { 0, 2536, 702, 3, 4, UNI_JG__NOON } /* jg=noon */,
+ { 1, 5895, 7707, 13, 17, UNI_SUPPUAB } /* issupplementaryprivateuseareab */,
+ { 1, 3514, 1141, 12, 3, UNI_ARABICPFA } /* block=arabicpfa */,
+ { 8, 1198, 6557, 5, 16, UNI_CJKCOMPATIDEOGRAPHS } /* incjkcompatideographs */,
+ { 3, 3803, 353, 14, 4, UNI_NFKCQC__Y } /* nfkcquickcheck=yes */,
+ { 0, 6165, 909, 3, 8, UNI_BALI } /* sc=balinese */,
+ { 0, 2766, 4554, 3, 15, UNI_TITLE } /* gc=titlecaseletter */,
+ { 0, 2391, 4511, 10, 9, UNI_CYRILLICEXTB } /* incyrillicextendedb */,
+ { 0, 339, 1243, 4, 2, UNI_CCC__BL } /* ccc=bl */,
+ { 1, 5637, 21, 21, 2, UNI_GCB__EX } /* graphemeclusterbreak=ex */,
+ { 0, 2525, 4569, 6, 5, UNI_XPOSIXUPPER } /* xposixupper */,
+ { 5, 6041, 2025, 17, 5, UNI_bpt_values_index } /* bidipairedbrackettype= */,
+ { 0, 823, 353, 4, 2, UNI_DASH } /* dash=y */,
+ { 0, 19, 934, 4, 6, -UNI_POSIXXDIGIT } /* ahex=false */,
+ { 3, 7274, 65, 9, 2, UNI_MN } /* category=mn */,
+ { 2, 7752, 5059, 23, 6, UNI_JG__MANICHAEANSAMEKH } /* joininggroup=manichaeansamekh */,
+ { 1, 94, 0, 4, 0, UNI_GURU } /* guru */,
+ { 1, 4424, 1303, 17, 9, UNI_TALU } /* scriptextensions=newtailue */,
+ { 4, 832, 599, 5, 2, -UNI_STERM } /* sterm=n */,
+ { 3, 1102, 1322, 4, 9, UNI_ITAL } /* scx=olditalic */,
+ { 0, 1823, 5876, 7, 4, UNI_SUND } /* script=sund */,
+ { 8, 1667, 678, 4, 5, UNI_INRUNIC } /* blk=runic */,
+ { 0, 5205, 1037, 11, 4, UNI_MYANMAREXTB } /* blk=myanmarextb */,
+ { 3, 33, 1110, 1, 7, UNI_SPECIALS } /* specials */,
+ { 1, 2536, 484, 3, 3, UNI_JG__HAH } /* jg=hah */,
+ { 0, 2324, 8474, 9, 23, UNI_CJKCOMPATIDEOGRAPHS } /* block=cjkcompatibilityideographs */,
+ { 0, 15, 3859, 2, 3, UNI_AGE__7 } /* age=7 */,
+ { 2, 2324, 81, 11, 2, UNI_CJKEXTG } /* block=cjkextg */,
+ { 2, 3391, 2098, 13, 9, UNI_NV__1_SLASH_7 } /* numericvalue=1.429e-01 */,
+ { 1, 6165, 2441, 3, 4, UNI_SC__NAND } /* sc=nand */,
+ { 0, 333, 0, 6, 0, UNI_CARI } /* carian */,
+ { 0, 7267, 313, 16, 4, UNI_M } /* generalcategory=mark */,
+ { 0, 309, 7564, 2, 17, UNI_ANCIENTGREEKMUSIC } /* inancientgreekmusic */,
+ { 0, 7011, 1157, 24, 5, UNI_CCC__7 } /* canonicalcombiningclass=nukta */,
+ { 0, 2514, 1235, 3, 6, UNI_MULT } /* ismultani */,
+ { 3, 3817, 288, 14, 1, UNI_NV__13 } /* numericvalue=13 */,
+ { 3, 1667, 1834, 4, 11, UNI_INSORASOMPENG } /* blk=sorasompeng */,
+ { 1, 377, 934, 3, 2, -UNI_EXT } /* ext=f */,
+ { 0, 4002, 5111, 5, 14, UNI_MODIFIERTONELETTERS } /* modifiertoneletters */,
+ { 45719, 7011, 8030, 24, 9, UNI_CCC__AL } /* canonicalcombiningclass=aboveleft */,
+ { 1, 7383, 3106, 10, 12, UNI_BC__AL } /* bidiclass=arabicletter */,
+ { 0, 3677, 1505, 7, 4, UNI_LATINEXTA } /* islatinexta */,
+ { 1, 6165, 208, 3, 4, UNI_SC__TGLG } /* sc=tglg */,
+ { 2, 4795, 6279, 14, 8, UNI_NV__1_SLASH_160 } /* numericvalue=6.250e-03 */,
+ { 9, 2, 584, 1, 3, UNI_CE } /* ce=t */,
+ { 4, 461, 330, 2, 2, UNI_PD } /* ispd */,
+ { 3, 597, 4602, 3, 7, UNI_DT__INIT } /* dt=initial */,
+ { 0, 3984, 8549, 9, 9, UNI_epres_values_index } /* emojipresentation= */,
+ { 3, 461, 19, 2, 4, UNI_POSIXXDIGIT } /* isahex */,
+ { 1, 292, 392, 3, 2, UNI_NV__41 } /* nv=41 */,
+ { 8, 4407, 353, 17, 2, UNI_RI } /* regionalindicator=y */,
+ { 0, 4424, 615, 17, 7, UNI_ELYM } /* scriptextensions=elymaic */,
+ { 5, 7591, 4330, 3, 14, UNI_LB__PO } /* lb=postfixnumeric */,
+ { 2, 975, 0, 8, 0, UNI_GURU } /* gurmukhi */,
+ { 9, 461, 2268, 2, 12, UNI_PLAYINGCARDS } /* isplayingcards */,
+ { 0, 940, 0, 6, 0, UNI_COMPEX } /* compex */,
+ { 0, 1530, 662, 3, 3, UNI_KALI } /* iskali */,
+ { 22, 461, 868, 2, 4, UNI_TIRH } /* istirh */,
+ { 0, 959, 274, 8, 1, UNI_ext_values_index } /* extender= */,
+ { 12, 309, 1340, 2, 9, UNI_INOLDTURKIC } /* inoldturkic */,
+ { 0, 7591, 880, 3, 7, UNI_LB__XX } /* lb=unknown */,
+ { 16, 6090, 1505, 13, 4, UNI_MYANMAREXTA } /* block=myanmarexta */,
+ { 8, 6076, 3448, 11, 6, UNI_GEORGIANEXT } /* block=georgianext */,
+ { 0, 1887, 0, 7, 0, UNI_XPOSIXCNTRL } /* control */,
+ { 2, 6041, 5090, 21, 6, UNI_BPT__C } /* bidipairedbrackettype=close */,
+ { 1, 16, 1426, 1, 3, UNI_C } /* gc=c */,
+ { 0, 4424, 1562, 17, 10, UNI_NAGM } /* scriptextensions=nagmundari */,
+ { 2, 7752, 600, 22, 4, UNI_JG__MANICHAEANONE } /* joininggroup=manichaeanone */,
+ { 0, 6165, 132, 3, 4, UNI_MTEI } /* sc=mtei */,
+ { 0, 7011, 8203, 24, 11, UNI_CCC__DB } /* canonicalcombiningclass=doublebelow */,
+ { 5, 1391, 2292, 3, 9, UNI_WB__WSEGSPACE } /* wb=wsegspace */,
+ { 0, 7011, 294, 23, 2, UNI_CCC__9 } /* canonicalcombiningclass=9 */,
+ { 23, 3803, 6093, 12, 4, UNI_NFCQC__M } /* nfkcquickcheck=m */,
+ { 0, 6450, 5144, 14, 5, UNI_SB__AT } /* sentencebreak=aterm */,
+ { 10, 1823, 3663, 7, 10, UNI_SC__DEVA } /* script=devanagari */,
+ { 0, 8505, 3101, 3, 5, UNI_NT__DI } /* nt=digit */,
+ { 0, 1391, 4407, 3, 17, UNI_RI } /* wb=regionalindicator */,
+ { 0, 3407, 515, 14, 2, UNI_NV__4_SLASH_5 } /* numericvalue=4/5 */,
+ { 10, 461, 3093, 2, 5, UNI_ASCII } /* isascii */,
+ { 0, 2324, 1227, 6, 7, UNI_INMAKASAR } /* block=makasar */,
+ { 0, 2718, 18, 3, 1, UNI_BC__B } /* bc=b */,
+ { 0, 7892, 3190, 15, 2, UNI_uideo_values_index } /* unifiedideograph= */,
+ { 0, 3378, 353, 13, 4, UNI_NFDQC__Y } /* nfdquickcheck=yes */,
+ { 18, 5205, 3364, 5, 14, UNI_MISCPICTOGRAPHS } /* blk=miscpictographs */,
+ { 1, 128, 0, 2, 0, UNI_ME } /* me */,
+ { 2, 7274, 3791, 9, 10, UNI_SM } /* category=mathsymbol */,
+ { 2, 5939, 274, 5, 1, UNI_nchar_values_index } /* nchar= */,
+ { 16, 1424, 2084, 7, 2, UNI_CCC__11 } /* ccc=ccc11 */,
+ { 0, 168, 0, 4, 0, UNI_COPT } /* qaac */,
+ { 0, 3098, 934, 8, 2, -UNI_XPOSIXXDIGIT } /* hexdigit=f */,
+ { 4, 1618, 274, 10, 1, UNI_sd_values_index } /* softdotted= */,
+ { 0, 2536, 3012, 2, 2, UNI_JG__E } /* jg=e */,
+ { 39, 6165, 402, 3, 4, UNI_ARMN } /* sc=armn */,
+ { 0, 1349, 0, 9, 0, UNI_OUGR } /* olduyghur */,
+ { 2, 6464, 0, 23, 0, UNI_SHORTHANDFORMATCONTROLS } /* shorthandformatcontrols */,
+ { 0, 2324, 238, 6, 2, UNI_NB } /* block=nb */,
+ { 0, 6427, 1767, 13, 2, UNI_JG__FE } /* joininggroup=fe */,
+ { 1, 7591, 2966, 3, 11, UNI_LB__IN } /* lb=inseparable */,
+ { 2, 1424, 344, 7, 2, UNI_CCC__21 } /* ccc=ccc21 */,
+ { 12, 461, 82, 2, 4, UNI_GONG } /* isgong */,
+ { 1, 2348, 584, 12, 3, UNI_CI } /* caseignorable=t */,
+ { 7, 1396, 599, 4, 2, -UNI_XIDS } /* xids=n */,
+ { 0, 3098, 598, 7, 2, UNI_hex_values_index } /* hexdigit= */,
+ { 0, 1823, 4505, 6, 6, UNI_SC__LATN } /* script=latin */,
+ { 7, 7011, 350, 24, 2, UNI_CCC__9 } /* canonicalcombiningclass=vr */,
+ { 0, 6165, 5712, 3, 19, UNI_MERO } /* sc=meroitichieroglyphs */,
+ { 0, 1102, 3663, 4, 4, UNI_DEVA } /* scx=deva */,
+ { 0, 309, 2068, 2, 12, UNI_INMENDEKIKAKUI } /* inmendekikakui */,
+ { 1, 7404, 0, 21, 0, UNI_BC__R } /* bidiclass=righttoleft */,
+ { 0, 2280, 2199, 10, 3, UNI_IN__2 } /* presentin=2.0 */,
+ { 0, 2324, 2302, 6, 3, UNI_INIDC } /* block=idc */,
+ { 8, 35, 0, 4, 0, UNI_BATK } /* batk */,
+ { 4, 1823, 297, 7, 5, UNI_SC__ORYA } /* script=oriya */,
+ { 0, 6165, 466, 3, 4, UNI_SOGO } /* sc=sogo */,
+ { 9, 271, 5769, 4, 9, UNI_WB__EB } /* gcb=emodifier */,
+ { 8, 1102, 2780, 4, 4, UNI_COPT } /* scx=copt */,
+ { 1, 3391, 2182, 12, 10, UNI_NV__5_SLASH_12 } /* numericvalue=4.167e-01 */,
+ { 2, 8246, 1630, 30, 5, UNI_INPC__TOPANDRIGHT } /* indicpositionalcategory=topandright */,
+ { 0, 663, 0, 4, 0, UNI_LIMB } /* limb */,
+ { 1, 461, 4852, 2, 10, UNI_XPOSIXSPACE } /* iswhitespace */,
+ { 0, 7267, 248, 16, 2, UNI_CN } /* generalcategory=cn */,
+ { 0, 1823, 1133, 7, 8, UNI_VITH } /* script=vithkuqi */,
+ { 2, 54, 5208, 2, 8, UNI_SC__MYMR } /* sc=myanmar */,
+ { 2, 309, 512, 2, 2, UNI_IN__3 } /* in=3 */,
+ { 11, 7591, 5769, 3, 9, UNI_EMOD } /* lb=emodifier */,
+ { 2, 7267, 252, 16, 2, UNI_CASEDLETTER } /* generalcategory=lc */,
+ { 0, 7495, 2165, 27, 2, UNI_CCC__33 } /* canonicalcombiningclass=ccc33 */,
+ { 0, 1823, 1212, 7, 9, UNI_SC__QAAI } /* script=inherited */,
+ { 6, 128, 130, 2, 2, UNI_MEDF } /* medf */,
+ { 0, 1667, 8619, 4, 21, UNI_MATHOPERATORS } /* blk=mathematicaloperators */,
+ { 2, 5637, 4504, 19, 3, UNI_GCB__L } /* graphemeclusterbreak=l */,
+ { 5, 1492, 6945, 5, 15, UNI_GEOMETRICSHAPESEXT } /* ingeometricshapesext */,
+ { 11, 4951, 0, 4, 0, UNI_EGYP } /* egyp */,
+ { 0, 1065, 1317, 5, 2, UNI_NV__1_SLASH_32 } /* nv=1/32 */,
+ { 4, 380, 599, 6, 3, -UNI_HYPHEN } /* hyphen=no */,
+ { 0, 8538, 44, 20, 1, UNI_VO__U } /* verticalorientation=u */,
+ { 1, 8601, 5409, 7, 17, UNI_SMALLKANAEXT } /* block=smallkanaextension */,
+ { 5, 1144, 1147, 3, 6, UNI_BHKS } /* bhaiksuki */,
+ { 0, 2432, 7620, 3, 19, UNI_MISCSYMBOLS } /* inmiscellaneoussymbols */,
+ { 14, 4191, 585, 5, 5, UNI_XPOSIXLOWER } /* lower=true */,
+ { 1, 2018, 0, 12, 0, UNI_jt_values_index } /* joiningtype= */,
+ { 0, 1102, 94, 4, 4, UNI_GURU } /* scx=guru */,
+ { 5, 5658, 7287, 10, 17, UNI_IDENTIFIERSTATUS__RESTRICTED } /* identifierstatus=restricted */,
+ { 5, 2, 934, 3, 2, -UNI_CWL } /* cwl=f */,
+ { 3, 8343, 6934, 31, 11, UNI_INSC__CONSONANTWITHSTACKER } /* indicsyllabiccategory=consonantwithstacker */,
+ { 32, 6450, 3191, 13, 3, UNI_SB__LE } /* sentencebreak=le */,
+ { 2, 4424, 172, 17, 4, UNI_RJNG } /* scriptextensions=rjng */,
+ { 2, 7274, 248, 9, 5, UNI_XPOSIXCNTRL } /* category=cntrl */,
+ { 3, 1424, 582, 8, 2, UNI_CCC__122 } /* ccc=ccc122 */,
+ { 4, 1102, 196, 4, 4, UNI_TAML } /* scx=taml */,
+ { 2, 292, 760, 3, 3, UNI_NV__1_SLASH_2 } /* nv=1/2 */,
+ { 0, 380, 585, 6, 2, UNI_HYPHEN } /* hyphen=t */,
+ { 5, 71, 274, 3, 1, UNI_cwu_values_index } /* cwu= */,
+ { 0, 21, 6142, 1, 21, UNI_EARLYDYNASTICCUNEIFORM } /* earlydynasticcuneiform */,
+ { 0, 4424, 108, 17, 4, UNI_KAWI } /* scriptextensions=kawi */,
+ { 0, 1479, 352, 4, 3, UNI_XPOSIXSPACE } /* space=y */,
+ { 8, 1667, 108, 4, 4, UNI_INKAWI } /* blk=kawi */,
+ { 9, 2301, 933, 10, 3, -UNI_XIDC } /* xidcontinue=f */,
+ { 8, 8278, 0, 33, 0, UNI_MISCMATHSYMBOLSB } /* miscellaneousmathematicalsymbolsb */,
+ { 1, 5065, 4251, 13, 4, UNI_JG__MANICHAEANQOPH } /* jg=manichaeanqoph */,
+ { 0, 2766, 0, 8, 0, UNI_C } /* gc=other */,
+ { 3, 1883, 341, 4, 2, UNI_bidic_values_index } /* bidic= */,
+ { 5, 3696, 1269, 4, 3, UNI_SUPPUAB } /* suppuab */,
+ { 1, 6165, 398, 3, 4, UNI_MIAO } /* sc=miao */,
+ { 0, 6165, 3954, 3, 17, UNI_AGHB } /* sc=caucasianalbanian */,
+ { 1, 895, 3861, 5, 2, UNI_AGE__7 } /* age=v70 */,
+ { 2, 1726, 6193, 6, 5, UNI_ARABICSUP } /* isarabicsup */,
+ { 0, 307, 0, 5, 0, UNI_XPOSIXPRINT } /* print */,
+ { 2, 3021, 2125, 4, 2, UNI_IN__6_DOT_3 } /* in=v63 */,
+ { 0, 1667, 2852, 4, 12, UNI_MAHJONG } /* blk=mahjongtiles */,
+ { 0, 461, 3475, 2, 15, UNI_ZANB } /* iszanabazarsquare */,
+ { 0, 4424, 779, 17, 7, UNI_OSMA } /* scriptextensions=osmanya */,
+ { 1, 406, 585, 3, 5, UNI_DIA } /* dia=true */,
+ { 5, 42, 2768, 2, 6, UNI_SB__XX } /* sb=other */,
+ { 1, 6332, 0, 19, 0, UNI_JAMOEXTB } /* hanguljamoextendedb */,
+ { 0, 461, 4667, 2, 16, UNI_PE } /* isclosepunctuation */,
+ { 18, 1102, 1303, 4, 9, UNI_TALU } /* scx=newtailue */,
+ { 0, 3391, 0, 14, 0, UNI_NV__2 } /* numericvalue=2 */,
+ { 0, 895, 2117, 5, 2, UNI_AGE__6_DOT_2 } /* age=v62 */,
+ { 0, 1174, 7036, 3, 9, UNI_EA__H } /* ea=halfwidth */,
+ { 2, 733, 7241, 3, 10, UNI_ENCLOSEDCJK } /* inenclosedcjk */,
+ { 0, 1102, 1685, 4, 11, UNI_CPMN } /* scx=cyprominoan */,
+ { 9, 2766, 4569, 3, 15, UNI_UPPERCASELETTER } /* gc=uppercaseletter */,
+ { 0, 461, 4161, 2, 9, UNI_DIA } /* isdiacritic */,
+ { 0, 257, 585, 4, 2, UNI_CWCM } /* cwcm=t */,
+ { 0, 271, 644, 3, 3, UNI_LB__H2 } /* gcb=lv */,
+ { 8, 1667, 1255, 4, 7, UNI_INSIDDHAM } /* blk=siddham */,
+ { 3, 1198, 6576, 3, 21, UNI_INDICNUMBERFORMS } /* incommonindicnumberforms */,
+ { 5, 7084, 0, 8, 0, UNI_INARABIC } /* inarabic */,
+ { 0, 1823, 196, 7, 4, UNI_SC__TAML } /* script=taml */,
+ { 2, 2324, 4896, 6, 15, UNI_BAMUMSUP } /* block=bamumsupplement */,
+ { 1, 2766, 4146, 3, 15, UNI_PD } /* gc=dashpunctuation */,
+ { 1, 4554, 0, 9, 0, UNI_TITLE } /* titlecase */,
+ { 0, 3803, 2327, 12, 3, UNI_nfkcqc_values_index } /* nfkcquickcheck= */,
+ { 2, 461, 474, 2, 4, UNI_VAI } /* isvaii */,
+ { 11, 6165, 1834, 3, 11, UNI_SORA } /* sc=sorasompeng */,
+ { 2, 597, 1850, 3, 3, UNI_DT__SUB } /* dt=sub */,
+ { 19, 6165, 124, 3, 4, UNI_SC__LATN } /* sc=latn */,
+ { 0, 6735, 4724, 22, 3, UNI_JG__MALAYALAMTTA } /* joininggroup=malayalamtta */,
+ { 1, 2324, 615, 6, 7, UNI_INELYMAIC } /* block=elymaic */,
+ { 2, 683, 0, 4, 0, UNI_TAKR } /* takr */,
+ { 0, 6165, 3325, 3, 6, UNI_HEBR } /* sc=hebrew */,
+ { 6, 6165, 1009, 3, 6, UNI_LYCI } /* sc=lycian */,
+ { 2, 5895, 5813, 5, 7, UNI_SUPARROWSB } /* issuparrowsb */,
+ { 0, 6427, 2559, 13, 10, UNI_JG__KNOTTEDHEH } /* joininggroup=knottedheh */,
+ { 2, 461, 1003, 2, 6, UNI_LEPC } /* islepcha */,
+ { 1, 1883, 353, 11, 4, UNI_BIDIC } /* bidicontrol=yes */,
+ { 0, 309, 6642, 2, 6, UNI_INBRAHMI } /* inbrahmi */,
+ { 0, 1667, 6797, 4, 18, UNI_DEVANAGARIEXT } /* blk=devanagariextended */,
+ { 0, 2324, 1696, 6, 6, UNI_DOMINO } /* block=domino */,
+ { 0, 1667, 1978, 4, 7, UNI_INSOGDIAN } /* blk=sogdian */,
+ { 6, 6287, 176, 4, 2, UNI_BC__LRO } /* bc=lro */,
+ { 1, 1075, 2657, 4, 8, UNI_NV__1_SLASH_5 } /* nv=2.000e-01 */,
+ { 11, 1667, 3908, 4, 6, UNI_INTANGUT } /* blk=tangut */,
+ { 1, 4271, 0, 17, 0, UNI_KITS } /* khitansmallscript */,
+ { 0, 1102, 3133, 3, 5, UNI_GEOR } /* scx=geor */,
+ { 1, 1102, 5067, 3, 11, UNI_MANI } /* scx=manichaean */,
+ { 0, 309, 3692, 2, 7, UNI_LISUSUP } /* inlisusup */,
+ { 5, 461, 1812, 2, 11, UNI_HMNG } /* ispahawhhmong */,
+ { 0, 309, 4161, 2, 12, UNI_DIACRITICALS } /* indiacriticals */,
+ { 25, 6165, 1562, 3, 10, UNI_NAGM } /* sc=nagmundari */,
+ { 0, 1823, 1209, 7, 4, UNI_THAI } /* script=thai */,
+ { 0, 3001, 3101, 12, 5, UNI_NT__DI } /* numerictype=digit */,
+ { 4, 461, 1696, 2, 6, UNI_DOMINO } /* isdomino */,
+ { 11, 309, 3583, 2, 16, UNI_HIGHPUSURROGATES } /* inhighpusurrogates */,
+ { 14, 7495, 7239, 27, 2, UNI_CCC__28 } /* canonicalcombiningclass=ccc28 */,
+ { 2, 3502, 5820, 5, 15, UNI_ENCLOSEDALPHANUM } /* blk=enclosedalphanum */,
+ { 3, 2280, 295, 10, 1, UNI_IN__9 } /* presentin=9 */,
+ { 2, 2732, 3790, 9, 5, UNI_ARABICMATH } /* blk=arabicmath */,
+ { 0, 2301, 585, 4, 5, UNI_XIDC } /* xidc=true */,
+ { 1, 266, 353, 3, 4, UNI_CWT } /* cwt=yes */,
+ { 0, 7274, 599, 8, 3, UNI_NO } /* category=no */,
+ { 0, 1397, 2931, 6, 3, UNI_IDS } /* idstart=t */,
+ { 0, 4424, 5958, 17, 7, UNI_SINH } /* scriptextensions=sinhala */,
+ { 0, 1391, 1864, 3, 8, UNI_WB__EB } /* wb=ebasegaz */,
+ { 3, 1102, 909, 4, 4, UNI_BALI } /* scx=bali */,
+ { 0, 86, 2372, 3, 5, UNI_GREEKEXT } /* greekext */,
+ { 0, 1102, 112, 4, 4, UNI_KITS } /* scx=kits */,
+ { 13, 357, 0, 6, 0, UNI_CAKM } /* chakma */,
+ { 0, 5156, 3451, 10, 12, UNI_WB__EX } /* wordbreak=extendnumlet */,
+ { 0, 461, 406, 2, 3, UNI_DIA } /* isdia */,
+ { 0, 1272, 8567, 3, 34, UNI_DIACRITICALSSUP } /* iscombiningdiacriticalmarkssupplement */,
+ { 4, 1102, 537, 4, 6, UNI_TNSA } /* scx=tangsa */,
+ { 0, 4360, 3040, 10, 9, UNI_LB__QU } /* linebreak=quotation */,
+ { 0, 309, 6082, 2, 8, UNI_INGEORGIAN } /* ingeorgian */,
+ { 65, 2324, 5876, 6, 12, UNI_SUNDANESESUP } /* block=sundanesesup */,
+ { 2, 716, 490, 5, 3, UNI_KANBUN } /* inkanbun */,
+ { 0, 1823, 798, 7, 4, UNI_NBAT } /* script=nbat */,
+ { 1, 4161, 6621, 8, 3, UNI_DIA } /* diacritic=t */,
+ { 2, 54, 5067, 2, 5, UNI_SC__MANI } /* sc=mani */,
+ { 4, 269, 0, 2, 0, UNI_ZP } /* zp */,
+ { 3, 552, 560, 4, 3, UNI_AGE__7 } /* age=7.0 */,
+ { 1, 2324, 3163, 7, 14, UNI_CONTROLPICTURES } /* block=controlpictures */,
+ { 0, 339, 2538, 3, 2, UNI_CCC__A } /* ccc=a */,
+ { 0, 292, 1314, 4, 2, UNI_NV__900 } /* nv=900 */,
+ { 3, 4424, 160, 17, 4, UNI_PHLP } /* scriptextensions=phlp */,
+ { 0, 38, 7442, 1, 25, UNI_KATAKANAEXT } /* katakanaphoneticextensions */,
+ { 17, 1734, 5409, 3, 17, UNI_SMALLKANAEXT } /* issmallkanaextension */,
+ { 41, 2536, 3289, 3, 12, UNI_JG__FINALSEMKATH } /* jg=finalsemkath */,
+ { 0, 6165, 422, 3, 4, UNI_SC__LINA } /* sc=lina */,
+ { 1, 1033, 0, 8, 0, UNI_JAMOEXTB } /* jamoextb */,
+ { 2, 309, 369, 2, 6, UNI_INGOTHIC } /* ingothic */,
+ { 8, 1667, 6776, 4, 21, UNI_MEETEIMAYEKEXT } /* blk=meeteimayekextensions */,
+ { 0, 461, 8619, 2, 21, UNI_MATHOPERATORS } /* ismathematicaloperators */,
+ { 0, 1272, 6557, 5, 16, UNI_CJKCOMPATIDEOGRAPHS } /* iscjkcompatideographs */,
+ { 0, 406, 599, 2, 2, -UNI_DI } /* di=n */,
+ { 22, 7134, 934, 26, 2, -UNI_PCM } /* prependedconcatenationmark=f */,
+ { 17, 140, 0, 4, 0, UNI_NARB } /* narb */,
+ { 0, 1102, 1367, 4, 4, UNI_PAUC } /* scx=pauc */,
+ { 4, 7274, 5172, 9, 2, UNI_CASEDLETTER } /* category=l_ */,
+ { 9, 6165, 4896, 3, 4, UNI_BAMU } /* sc=bamu */,
+ { 0, 461, 1914, 2, 4, UNI_UCAS } /* isucas */,
+ { 14, 4620, 3779, 7, 9, UNI_LINEARBIDEOGRAMS } /* linearbideograms */,
+ { 0, 30, 195, 1, 5, UNI_TAML } /* istaml */,
+ { 0, 2391, 1505, 10, 4, UNI_CYRILLICEXTA } /* incyrillicexta */,
+ { 4, 4191, 934, 5, 2, -UNI_XPOSIXLOWER } /* lower=f */,
+ { 0, 461, 2503, 2, 11, UNI_JOINC } /* isjoincontrol */,
+ { 2, 3984, 599, 17, 2, -UNI_EPRES } /* emojipresentation=n */,
+ { 8, 4424, 615, 17, 4, UNI_ELYM } /* scriptextensions=elym */,
+ { 1, 7669, 140, 19, 2, UNI_HST__NA } /* hangulsyllabletype=na */,
+ { 12, 4424, 1144, 17, 9, UNI_BHKS } /* scriptextensions=bhaiksuki */,
+ { 0, 6062, 2374, 14, 8, UNI_ETHIOPICEXT } /* block=ethiopicextended */,
+ { 1, 6163, 129, 20, 2, UNI_INSC__CONSONANTPREFIXED } /* insc=consonantprefixed */,
+ { 0, 2180, 1314, 4, 2, UNI_NV__400 } /* nv=400 */,
+ { 1, 4191, 353, 5, 2, UNI_XPOSIXLOWER } /* lower=y */,
+ { 0, 3177, 599, 14, 2, UNI_EA__N } /* eastasianwidth=n */,
+ { 0, 6165, 35, 3, 4, UNI_BATK } /* sc=batk */,
+ { 1, 3378, 353, 13, 2, UNI_NFDQC__Y } /* nfdquickcheck=y */,
+ { 0, 324, 8386, 3, 21, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* supsymbolsandpictographs */,
+ { 1, 1667, 6400, 7, 11, UNI_CJKRADICALSSUP } /* blk=cjkradicalssup */,
+ { 0, 2324, 357, 6, 6, UNI_INCHAKMA } /* block=chakma */,
+ { 4, 3391, 347, 13, 2, UNI_NV__49 } /* numericvalue=49 */,
+ { 0, 2324, 6909, 6, 14, UNI_MUSIC } /* block=musicalsymbols */,
+ { 0, 1667, 8407, 5, 34, UNI_DIACRITICALSFORSYMBOLS } /* blk=combiningdiacriticalmarksforsymbols */,
+ { 1, 1667, 1685, 4, 11, UNI_INCYPROMINOAN } /* blk=cyprominoan */,
+ { 0, 5125, 0, 19, 0, UNI_OTTOMANSIYAQNUMBERS } /* ottomansiyaqnumbers */,
+ { 0, 339, 342, 3, 2, UNI_CCC__1 } /* ccc=1 */,
+ { 0, 461, 3663, 2, 14, UNI_DEVANAGARIEXTA } /* isdevanagariexta */,
+ { 0, 7198, 1845, 7, 8, UNI_SUPERANDSUB } /* blk=superandsub */,
+ { 0, 2324, 7480, 6, 14, UNI_PUA } /* block=privateusearea */,
+ { 0, 2718, 2424, 3, 2, UNI_BC__CS } /* bc=cs */,
+ { 0, 2220, 1805, 4, 4, UNI_NV__60000 } /* nv=60000 */,
+ { 5, 3098, 353, 8, 4, UNI_XPOSIXXDIGIT } /* hexdigit=yes */,
+ { 8, 1823, 1294, 7, 9, UNI_NBAT } /* script=nabataean */,
+ { 0, 6165, 1954, 3, 12, UNI_SC__GONG } /* sc=gunjalagondi */,
+ { 0, 1240, 6, 3, 2, UNI_OCR } /* inocr */,
+ { 12, 1823, 4951, 7, 4, UNI_EGYP } /* script=egyp */,
+ { 0, 50, 0, 2, 0, UNI_MC } /* mc */,
+ { 10, 1397, 934, 7, 6, -UNI_IDS } /* idstart=false */,
+ { 4, 15, 4402, 2, 3, UNI_AGE__3 } /* age=3 */,
+ { 1, 4424, 1978, 17, 7, UNI_SOGD } /* scriptextensions=sogdian */,
+ { 0, 1455, 0, 10, 0, UNI_DEP } /* deprecated */,
+ { 0, 2324, 2256, 6, 8, UNI_PHAISTOS } /* block=phaistos */,
+ { 0, 7274, 4, 9, 2, UNI_LO } /* category=lo */,
+ { 0, 5065, 2270, 13, 4, UNI_JG__MANICHAEANAYIN } /* jg=manichaeanayin */,
+ { 0, 144, 1306, 3, 6, UNI_TALU } /* newtailue */,
+ { 4, 1823, 2045, 7, 12, UNI_SC__GONM } /* script=masaramgondi */,
+ { 7, 1823, 2811, 7, 5, UNI_KHMR } /* script=khmer */,
+ { 0, 461, 1367, 2, 4, UNI_PAUC } /* ispauc */,
+ { 0, 629, 5671, 5, 3, -UNI_GRBASE } /* grbase=n */,
+ { 0, 2324, 6351, 6, 23, UNI_COMPATJAMO } /* block=hangulcompatibilityjamo */,
+ { 0, 4795, 2091, 14, 8, UNI_NV__5_SLASH_8 } /* numericvalue=6.250e-01 */,
+ { 0, 7944, 7380, 28, 4, UNI_CJKEXTB } /* iscjkunifiedideographsextensionb */,
+ { 2, 5658, 2646, 15, 9, UNI_IDENTIFIERTYPE__TECHNICAL } /* identifiertype=technical */,
+ { 0, 4161, 341, 8, 2, UNI_dia_values_index } /* diacritic= */,
+ { 3, 1823, 120, 7, 3, UNI_LAO } /* script=lao */,
+ { 0, 3391, 515, 14, 2, UNI_NV__2_SLASH_5 } /* numericvalue=2/5 */,
+ { 0, 1102, 861, 4, 7, UNI_TIBT } /* scx=tibetan */,
+ { 6, 6165, 454, 3, 4, UNI_PRTI } /* sc=prti */,
+ { 16, 5205, 2422, 5, 10, UNI_MISCSYMBOLS } /* blk=miscsymbols */,
+ { 0, 1823, 5958, 7, 4, UNI_SC__SINH } /* script=sinh */,
+ { 0, 4424, 1349, 17, 9, UNI_OUGR } /* scriptextensions=olduyghur */,
+ { 0, 461, 4043, 2, 4, UNI_IDSB } /* isidsb */,
+ { 1, 1894, 353, 5, 2, UNI_BIDIM } /* bidim=y */,
+ { 0, 4391, 0, 16, 0, UNI_NV__3_SLASH_2 } /* numericvalue=3/2 */,
+ { 1, 2732, 6193, 8, 5, UNI_ARABICSUP } /* blk=arabicsup */,
+ { 0, 2718, 330, 3, 3, UNI_BC__PDF } /* bc=pdf */,
+ { 0, 4424, 917, 17, 4, UNI_BASS } /* scriptextensions=bass */,
+ { 0, 7274, 8, 9, 2, UNI_PC } /* category=pc */,
+ { 1, 33, 4710, 1, 8, UNI_SYRIACSUP } /* syriacsup */,
+ { 2, 2324, 2780, 6, 6, UNI_INCOPTIC } /* block=coptic */,
+ { 0, 2324, 3538, 6, 16, UNI_CYPRIOTSYLLABARY } /* block=cypriotsyllabary */,
+ { 0, 1272, 1448, 5, 7, UNI_CJKSTROKES } /* iscjkstrokes */,
+ { 1, 7383, 6029, 10, 12, UNI_BC__AN } /* bidiclass=arabicnumber */,
+ { 1, 641, 2382, 4, 9, UNI_GCB__V } /* hst=voweljamo */,
+ { 12, 868, 0, 7, 0, UNI_TIRH } /* tirhuta */,
+ { 0, 4424, 1322, 17, 9, UNI_ITAL } /* scriptextensions=olditalic */,
+ { 7, 8, 585, 3, 5, UNI_PCM } /* pcm=true */,
+ { 8, 4407, 934, 17, 2, -UNI_RI } /* regionalindicator=f */,
+ { 3, 19, 599, 4, 3, -UNI_POSIXXDIGIT } /* ahex=no */,
+ { 0, 1823, 917, 7, 4, UNI_BASS } /* script=bass */,
+ { 3, 5801, 0, 19, 0, UNI_SUPARROWSB } /* supplementalarrowsb */,
+ { 0, 7110, 0, 13, 0, UNI_M } /* combiningmark */,
+ { 9, 309, 238, 2, 2, UNI_NB } /* innb */,
+ { 5, 1667, 1209, 4, 4, UNI_INTHAI } /* blk=thai */,
+ { 29, 461, 2468, 2, 6, UNI_IPAEXT } /* isipaext */,
+ { 0, 192, 319, 2, 3, UNI_TALE } /* taile */,
+ { 10, 7198, 6671, 5, 21, UNI_MODIFIERLETTERS } /* blk=spacingmodifierletters */,
+ { 16, 5168, 7160, 6, 21, UNI__PERL_IS_IN_MULTI_CHAR_FOLD } /* _perl_is_in_multi_char_fold */,
+ { 0, 1102, 1834, 4, 11, UNI_SORA } /* scx=sorasompeng */,
+ { 6, 505, 599, 5, 3, UNI_DT__CAN } /* nfdqc=no */,
+ { 0, 1198, 8153, 5, 21, UNI_CJKSYMBOLS } /* incjksymbolsandpunctuation */,
+ { 1, 292, 765, 3, 2, UNI_NV__45 } /* nv=45 */,
+ { 1, 5031, 150, 12, 2, UNI_ROHG } /* hanifirohingya */,
+ { 1, 2, 599, 3, 3, -UNI_CWL } /* cwl=no */,
+ { 1, 7889, 5417, 20, 10, UNI_CJKEXTD } /* cjkunifiedideographsextensiond */,
+ { 0, 4502, 733, 5, 6, UNI_INLINEARA } /* blk=lineara */,
+ { 2, 1011, 353, 2, 2, UNI_CI } /* ci=y */,
+ { 7, 6163, 1432, 5, 6, UNI_INSC__VIRAMA } /* insc=virama */,
+ { 1, 4391, 1314, 14, 3, UNI_NV__3000 } /* numericvalue=3000 */,
+ { 4, 641, 644, 3, 2, UNI_GCB__L } /* hst=l */,
+ { 1, 339, 8640, 4, 13, UNI_CCC__214 } /* ccc=attachedabove */,
+ { 4, 8601, 4710, 7, 8, UNI_SYRIACSUP } /* block=syriacsup */,
+ { 1, 2280, 890, 9, 3, UNI_IN__10 } /* presentin=10 */,
+ { 0, 54, 4505, 2, 6, UNI_SC__LATN } /* sc=latin */,
+ { 18, 629, 5671, 5, 4, -UNI_GRBASE } /* grbase=no */,
+ { 5, 4424, 402, 17, 4, UNI_ARMN } /* scriptextensions=armn */,
+ { 0, 1823, 212, 7, 4, UNI_TIBT } /* script=tibt */,
+ { 1, 4502, 1674, 9, 4, UNI_LATINEXTD } /* blk=latinextd */,
+ { 0, 7591, 98, 3, 2, UNI_LB__HL } /* lb=hl */,
+ { 11, 6427, 1747, 13, 8, UNI_JG__FARSIYEH } /* joininggroup=farsiyeh */,
+ { 16, 4191, 933, 8, 3, -UNI_XPOSIXLOWER } /* lowercase=f */,
+ { 20, 228, 0, 4, 0, UNI_XSUX } /* xsux */,
+ { 0, 6735, 529, 22, 2, UNI_JG__MALAYALAMJA } /* joininggroup=malayalamja */,
+ { 0, 1424, 2092, 7, 2, UNI_CCC__25 } /* ccc=ccc25 */,
+ { 3, 339, 2154, 4, 2, UNI_CCC__13 } /* ccc=13 */,
+ { 3, 6165, 152, 3, 4, UNI_OSGE } /* sc=osge */,
+ { 0, 309, 1438, 2, 10, UNI_INCHORASMIAN } /* inchorasmian */,
+ { 0, 8311, 4680, 32, 4, UNI_CJKEXTF } /* block=cjkunifiedideographsextensionf */,
+ { 0, 2536, 2546, 3, 3, UNI_JG__FEH } /* jg=feh */,
+ { 0, 5895, 4150, 5, 11, UNI_SUPPUNCTUATION } /* issuppunctuation */,
+ { 0, 292, 344, 3, 2, UNI_NV__21 } /* nv=21 */,
+ { 4, 7752, 4259, 23, 4, UNI_JG__MANICHAEANYODH } /* joininggroup=manichaeanyodh */,
+ { 1, 309, 2268, 2, 12, UNI_PLAYINGCARDS } /* inplayingcards */,
+ { 1, 2505, 5276, 4, 16, UNI_HALFMARKS } /* incombininghalfmarks */,
+ { 0, 2441, 0, 11, 0, UNI_NAND } /* nandinagari */,
+ { 0, 1667, 590, 4, 7, UNI_DSRT } /* blk=deseret */,
+ { 17, 2324, 1191, 6, 7, UNI_INBENGALI } /* block=bengali */,
+ { 0, 1102, 1376, 4, 9, UNI_SAMR } /* scx=samaritan */,
+ { 5, 1667, 6495, 4, 5, UNI_MUSIC } /* blk=music */,
+ { 4, 461, 120, 2, 4, UNI_LAO } /* islaoo */,
+ { 1, 552, 393, 4, 2, UNI_AGE__15 } /* age=15 */,
+ { 23, 1667, 3955, 5, 16, UNI_INCAUCASIANALBANIAN } /* blk=caucasianalbanian */,
+ { 8, 3014, 2093, 11, 2, UNI_IN__5 } /* presentin=v50 */,
+ { 1, 3391, 2655, 13, 10, UNI_NV___MINUS_1_SLASH_2 } /* numericvalue=-5.000e-01 */,
+ { 27, 7267, 4, 16, 2, UNI_LO } /* generalcategory=lo */,
+ { 0, 1102, 1133, 4, 8, UNI_VITH } /* scx=vithkuqi */,
+ { 2, 2525, 4191, 6, 5, UNI_XPOSIXLOWER } /* xposixlower */,
+ { 0, 1667, 615, 4, 7, UNI_INELYMAIC } /* blk=elymaic */,
+ { 0, 1667, 4131, 4, 8, UNI_VEDICEXT } /* blk=vedicext */,
+ { 1, 461, 1562, 2, 4, UNI_NAGM } /* isnagm */,
+ { 1, 3021, 288, 4, 2, UNI_IN__3 } /* in=v30 */,
+ { 9, 1455, 585, 3, 5, UNI_DEP } /* dep=true */,
+ { 2, 461, 416, 2, 2, UNI_NO } /* isno */,
+ { 37, 5156, 3472, 10, 3, UNI_LB__ZWJ } /* wordbreak=zwj */,
+ { 2, 8246, 0, 27, 0, UNI_INPC__TOP } /* indicpositionalcategory=top */,
+ { 0, 4424, 1358, 17, 4, UNI_PALM } /* scriptextensions=palm */,
+ { 1, 1102, 802, 4, 4, UNI_SARB } /* scx=sarb */,
+ { 0, 309, 634, 2, 7, UNI_INHANUNOO } /* inhanunoo */,
+ { 2, 1728, 0, 4, 0, UNI_ARAB } /* arab */,
+ { 3, 4519, 0, 14, 0, UNI_INCYRILLIC } /* block=cyrillic */,
+ { 0, 7011, 1678, 24, 7, UNI_CCC__1 } /* canonicalcombiningclass=overlay */,
+ { 3, 2718, 4852, 3, 10, UNI_BC__WS } /* bc=whitespace */,
+ { 17, 2002, 3100, 7, 6, UNI_POSIXXDIGIT } /* isposixxdigit */,
+ { 2, 4424, 1227, 17, 7, UNI_MAKA } /* scriptextensions=makasar */,
+ { 11, 2324, 1562, 6, 10, UNI_INNAGMUNDARI } /* block=nagmundari */,
+ { 1, 461, 1003, 2, 4, UNI_LEPC } /* islepc */,
+ { 0, 1065, 389, 5, 1, UNI_NV__1_SLASH_6 } /* nv=1/6 */,
+ { 0, 1823, 458, 7, 4, UNI_SC__QAAI } /* script=qaai */,
+ { 0, 8356, 0, 10, 0, UNI_C } /* category=c */,
+ { 0, 2324, 7036, 6, 26, UNI_HALFANDFULLFORMS } /* block=halfwidthandfullwidthforms */,
+ { 4, 1823, 658, 7, 4, UNI_SC__DOGR } /* script=dogr */,
+ { 10, 3021, 3876, 4, 2, UNI_IN__8 } /* in=v80 */,
+ { 2, 7274, 3558, 9, 9, UNI_Z } /* category=separator */,
+ { 21, 6841, 599, 25, 2, -UNI_DI } /* defaultignorablecodepoint=n */,
+ { 20, 1065, 2123, 4, 8, UNI_NV__1_SLASH_64 } /* nv=1.563e-02 */,
+ { 1, 7404, 6300, 20, 10, UNI_BC__RLE } /* bidiclass=righttoleftembedding */,
+ { 5, 2348, 584, 12, 6, UNI_CI } /* caseignorable=true */,
+ { 0, 7267, 0, 16, 0, UNI_gc_values_index } /* generalcategory= */,
+ { 1, 144, 0, 4, 0, UNI_NEWA } /* newa */,
+ { 3, 1391, 1869, 3, 3, UNI_WB__EB } /* wb=gaz */,
+ { 5, 916, 352, 4, 2, UNI_ebase_values_index } /* ebase= */,
+ { 0, 1667, 297, 4, 5, UNI_INORIYA } /* blk=oriya */,
+ { 0, 5895, 5149, 14, 7, UNI_SUPARROWSA } /* issupplementalarrowsa */,
+ { 1, 552, 549, 4, 3, UNI_AGE__4 } /* age=4.0 */,
+ { 0, 1102, 4505, 3, 6, UNI_LATN } /* scx=latin */,
+ { 1, 510, 515, 4, 2, UNI_NV__3_SLASH_5 } /* nv=3/5 */,
+ { 11, 4424, 2068, 17, 12, UNI_MEND } /* scriptextensions=mendekikakui */,
+ { 0, 1198, 6228, 4, 8, UNI_CJKSYMBOLS } /* incjksymbols */,
+ { 4, 6090, 5848, 13, 9, UNI_MYANMAREXTA } /* block=myanmarextendeda */,
+ { 1, 2, 598, 2, 2, UNI_cwt_values_index } /* cwt= */,
+ { 5, 30, 1208, 1, 5, UNI_INTHAI } /* inthai */,
+ { 9, 4569, 585, 5, 2, UNI_XPOSIXUPPER } /* upper=t */,
+ { 9, 1102, 1853, 4, 11, UNI_SYLO } /* scx=sylotinagri */,
+ { 0, 7892, 0, 16, 0, UNI_UIDEO } /* unifiedideograph */,
+ { 0, 7011, 395, 24, 2, UNI_CCC__16 } /* canonicalcombiningclass=16 */,
+ { 1, 1102, 160, 4, 4, UNI_PHLP } /* scx=phlp */,
+ { 0, 2287, 2223, 3, 3, UNI_IN__6_DOT_2 } /* in=6.2 */,
+ { 0, 461, 854, 2, 7, UNI_TAVT } /* istaiviet */,
+ { 0, 6165, 244, 3, 4, UNI_ZZZZ } /* sc=zzzz */,
+ { 2, 2324, 3663, 6, 10, UNI_INDEVANAGARI } /* block=devanagari */,
+ { 3, 2324, 6776, 6, 14, UNI_MEETEIMAYEKEXT } /* block=meeteimayekext */,
+ { 1, 2324, 3649, 6, 14, UNI_PHONETICEXTSUP } /* block=phoneticextsup */,
+ { 0, 2536, 2569, 3, 10, UNI_JG__REVERSEDPE } /* jg=reversedpe */,
+ { 0, 8, 353, 3, 2, UNI_PCM } /* pcm=y */,
+ { 0, 2301, 599, 4, 2, -UNI_XIDC } /* xidc=n */,
+ { 4, 2503, 934, 11, 6, -UNI_JOINC } /* joincontrol=false */,
+ { 1, 461, 3663, 2, 13, UNI_DEVANAGARIEXT } /* isdevanagariext */,
+ { 0, 271, 543, 4, 2, UNI_WB__EB } /* gcb=eb */,
+ { 5, 8071, 4680, 30, 4, UNI_CJKEXTF } /* blk=cjkunifiedideographsextensionf */,
+ { 2, 461, 5838, 2, 10, UNI_JAMO } /* ishanguljamo */,
+ { 1, 2766, 363, 3, 2, UNI_SM } /* gc=sm */,
+ { 0, 6165, 1853, 3, 11, UNI_SC__SYLO } /* sc=sylotinagri */,
+ { 0, 5658, 6548, 15, 9, UNI_IDENTIFIERTYPE__INCLUSION } /* identifiertype=inclusion */,
+ { 4, 5205, 5848, 11, 9, UNI_MYANMAREXTA } /* blk=myanmarextendeda */,
+ { 0, 1883, 585, 11, 2, UNI_BIDIC } /* bidicontrol=t */,
+ { 0, 461, 1009, 2, 6, UNI_LYCI } /* islycian */,
+ { 10, 4970, 274, 13, 1, UNI_emod_values_index } /* emojimodifier= */,
+ { 1, 2494, 4982, 3, 5, UNI_GRBASE } /* isgrbase */,
+ { 0, 1102, 798, 4, 4, UNI_NBAT } /* scx=nbat */,
+ { 1, 30, 633, 1, 4, UNI_HAN } /* ishan */,
+ { 1, 309, 1975, 2, 10, UNI_INOLDSOGDIAN } /* inoldsogdian */,
+ { 0, 1102, 450, 4, 4, UNI_MIAO } /* scx=plrd */,
+ { 0, 461, 47, 2, 4, UNI_CAKM } /* iscakm */,
+ { 0, 2536, 3743, 3, 3, UNI_JG__TAW } /* jg=taw */,
+ { 1, 21, 7915, 1, 29, UNI_ENCLOSEDALPHANUMSUP } /* enclosedalphanumericsupplement */,
+ { 5, 1906, 3746, 6, 14, UNI_KAKTOVIKNUMERALS } /* blk=kaktoviknumerals */,
+ { 6, 6165, 120, 3, 3, UNI_LAO } /* sc=lao */,
+ { 3, 461, 6510, 2, 24, UNI_HIGHPUSURROGATES } /* ishighprivateusesurrogates */,
+ { 0, 2432, 2422, 3, 10, UNI_MISCSYMBOLS } /* inmiscsymbols */,
+ { 2, 1823, 3325, 7, 6, UNI_HEBR } /* script=hebrew */,
+ { 2, 4970, 933, 16, 3, -UNI_EBASE } /* emojimodifierbase=f */,
+ { 38, 30, 4969, 1, 14, UNI_EMOD } /* isemojimodifier */,
+ { 12, 2766, 3791, 3, 10, UNI_SM } /* gc=mathsymbol */,
+ { 0, 4043, 585, 17, 2, UNI_IDSB } /* idsbinaryoperator=t */,
+ { 0, 5532, 585, 21, 2, UNI_CWCF } /* changeswhencasefolded=t */,
+ { 0, 4519, 1037, 14, 4, UNI_CYRILLICEXTB } /* block=cyrillicextb */,
+ { 20, 2536, 1279, 3, 6, UNI_JG__LAMADH } /* jg=lamadh */,
+ { 16, 7495, 2101, 28, 2, UNI_CCC__129 } /* canonicalcombiningclass=ccc129 */,
+ { 16, 6735, 1876, 22, 3, UNI_JG__MALAYALAMLLA } /* joininggroup=malayalamlla */,
+ { 16, 309, 5125, 2, 19, UNI_OTTOMANSIYAQNUMBERS } /* inottomansiyaqnumbers */,
+ { 1, 7267, 1478, 16, 2, UNI_ZS } /* generalcategory=zs */,
+ { 1, 2514, 5848, 9, 9, UNI_MYANMAREXTA } /* ismyanmarextendeda */,
+ { 0, 7591, 2955, 3, 11, UNI_LB__EX } /* lb=exclamation */,
+ { 9, 7804, 585, 11, 5, UNI_IDEO } /* ideographic=true */,
+ { 0, 6450, 959, 14, 6, UNI_SB__EX } /* sentencebreak=extend */,
+ { 0, 8505, 283, 3, 2, UNI_NT__NU } /* nt=nu */,
+ { 9, 6165, 108, 3, 4, UNI_KAWI } /* sc=kawi */,
+ { 0, 7011, 8640, 24, 18, UNI_CCC__216 } /* canonicalcombiningclass=attachedaboveright */,
+ { 0, 578, 395, 5, 2, UNI_CCC__216 } /* ccc=216 */,
+ { 1, 4424, 208, 17, 4, UNI_TGLG } /* scriptextensions=tglg */,
+ { 5, 1102, 1812, 4, 11, UNI_HMNG } /* scx=pahawhhmong */,
+ { 5, 339, 1905, 4, 2, UNI_CCC__DB } /* ccc=db */,
+ { 0, 450, 0, 4, 0, UNI_MIAO } /* plrd */,
+ { 0, 423, 4987, 3, 9, UNI_ALCHEMICAL } /* inalchemical */,
+ { 1, 2766, 7110, 3, 13, UNI_M } /* gc=combiningmark */,
+ { 0, 3391, 796, 13, 3, UNI_NV__NAN } /* numericvalue=nan */,
+ { 0, 8601, 4457, 8, 15, UNI_SUTTONSIGNWRITING } /* block=suttonsignwriting */,
+ { 3, 493, 0, 4, 0, UNI_KHOJ } /* khoj */,
+ { 40, 5876, 0, 4, 0, UNI_SUND } /* sund */,
+ { 26, 1667, 6797, 4, 19, UNI_DEVANAGARIEXTA } /* blk=devanagariextendeda */,
+ { 8, 4926, 0, 8, 0, UNI_TAMILSUP } /* tamilsup */,
+ { 3, 7383, 3312, 10, 3, UNI_BC__LRI } /* bidiclass=lri */,
+ { 4, 2301, 584, 10, 6, UNI_XIDC } /* xidcontinue=true */,
+ { 0, 2536, 5031, 3, 16, UNI_JG__HANIFIROHINGYAPA } /* jg=hanifirohingyapa */,
+ { 1, 1102, 779, 4, 4, UNI_OSMA } /* scx=osma */,
+ { 1, 474, 0, 3, 0, UNI_VAI } /* vai */,
+ { 0, 578, 1314, 5, 2, UNI_WB__EB } /* ccc=200 */,
+ { 0, 257, 353, 4, 4, UNI_CWCM } /* cwcm=yes */,
+ { 1, 6076, 6945, 9, 15, UNI_GEOMETRICSHAPESEXT } /* block=geometricshapesext */,
+ { 16, 2004, 1082, 5, 4, UNI_POSIXWORD } /* posixword */,
+ { 3, 1823, 1105, 6, 5, UNI_TALU } /* script=talu */,
+ { 4, 1618, 599, 10, 3, -UNI_SD } /* softdotted=no */,
+ { 0, 67, 0, 4, 0, UNI_CPRT } /* cprt */,
+ { 0, 5216, 4698, 10, 12, UNI_LATIN1 } /* block=latin1supplement */,
+ { 1, 925, 0, 4, 0, UNI_bpt_values_index } /* bpt= */,
+ { 1, 2324, 7972, 7, 29, UNI_CUNEIFORMNUMBERS } /* block=cuneiformnumbersandpunctuation */,
+ { 1, 1667, 8142, 4, 18, UNI_IDEOGRAPHICSYMBOLS } /* blk=ideographicsymbols */,
+ { 16, 1198, 3611, 5, 11, UNI_CJKCOMPATFORMS } /* incjkcompatforms */,
+ { 0, 1823, 5185, 7, 20, UNI_HLUW } /* script=anatolianhieroglyphs */,
+ { 2, 2832, 5848, 10, 9, UNI_CYRILLICEXTA } /* iscyrillicextendeda */,
+ { 16, 7892, 585, 16, 5, UNI_UIDEO } /* unifiedideograph=true */,
+ { 8, 339, 3526, 4, 12, UNI_CCC__0 } /* ccc=notreordered */,
+ { 5, 5168, 2621, 6, 9, UNI__PERL_SURROGATE } /* _perl_surrogate */,
+ { 0, 6165, 537, 3, 6, UNI_TNSA } /* sc=tangsa */,
+ { 1, 5156, 3456, 12, 4, UNI_WB__MN } /* wordbreak=midnum */,
+ { 13, 2536, 481, 3, 3, UNI_JG__GAF } /* jg=gaf */,
+ { 1, 6165, 1009, 3, 4, UNI_LYCI } /* sc=lyci */,
+ { 0, 6427, 650, 13, 3, UNI_JG__LAM } /* joininggroup=lam */,
+ { 1, 461, 1887, 2, 7, UNI_XPOSIXCNTRL } /* iscontrol */,
+ { 2, 3502, 7915, 5, 29, UNI_ENCLOSEDALPHANUMSUP } /* blk=enclosedalphanumericsupplement */,
+ { 5, 309, 772, 2, 7, UNI_OLCK } /* inolchiki */,
+ { 0, 4377, 599, 14, 2, UNI_NFKDQC__N } /* nfkdquickcheck=n */,
+ { 1, 309, 5373, 2, 11, UNI_TAIXUANJING } /* intaixuanjing */,
+ { 9, 7274, 599, 8, 2, UNI_N } /* category=n */,
+ { 2, 2324, 1009, 6, 6, UNI_INLYCIAN } /* block=lycian */,
+ { 5, 1102, 2852, 4, 4, UNI_MAHJ } /* scx=mahj */,
+ { 0, 154, 6945, 3, 15, UNI_GEOMETRICSHAPESEXT } /* geometricshapesext */,
+ { 3, 5712, 0, 19, 0, UNI_MERO } /* meroitichieroglyphs */,
+ { 10, 4424, 608, 17, 7, UNI_ELBA } /* scriptextensions=elbasan */,
+ { 1, 1823, 59, 7, 4, UNI_CHRS } /* script=chrs */,
+ { 8, 1102, 688, 4, 5, UNI_BATK } /* scx=batak */,
+ { 0, 6165, 725, 3, 7, UNI_SC__KALI } /* sc=kayahli */,
+ { 0, 3407, 2107, 14, 8, UNI_NV__9_SLASH_2 } /* numericvalue=4.500e+00 */,
+ { 10, 4377, 2327, 12, 3, UNI_nfkdqc_values_index } /* nfkdquickcheck= */,
+ { 9, 4845, 933, 16, 7, -UNI__PERL_PATWS } /* patternwhitespace=false */,
+ { 0, 2536, 6714, 3, 21, UNI_JG__HANIFIROHINGYAKINNAYA } /* jg=hanifirohingyakinnaya */,
+ { 0, 2842, 7241, 3, 26, UNI_ENCLOSEDCJK } /* isenclosedcjklettersandmonths */,
+ { 0, 2324, 5897, 6, 19, UNI_SUPARROWSC } /* block=supplementalarrowsc */,
+ { 18, 5939, 353, 5, 2, UNI__PERL_NCHAR } /* nchar=y */,
+ { 0, 3040, 353, 13, 2, UNI_QMARK } /* quotationmark=y */,
+ { 0, 2483, 0, 11, 0, UNI_CASEDLETTER } /* casedletter */,
+ { 0, 1272, 377, 5, 4, UNI_CJKEXTH } /* iscjkexth */,
+ { 0, 510, 1314, 4, 3, UNI_NV__3000 } /* nv=3000 */,
+ { 2, 2536, 650, 3, 3, UNI_JG__LAM } /* jg=lam */,
+ { 0, 3391, 765, 13, 2, UNI_NV__45 } /* numericvalue=45 */,
+ { 9, 1272, 0, 3, 0, UNI_C } /* isc */,
+ { 0, 5937, 598, 20, 4, -UNI__PERL_NCHAR } /* noncharactercodepoint=no */,
+ { 4, 6165, 1331, 3, 9, UNI_SC__PERM } /* sc=oldpermic */,
+ { 1, 330, 0, 2, 0, UNI_PD } /* pd */,
+ { 32, 2324, 3093, 6, 5, UNI_ASCII } /* block=ascii */,
+ { 0, 461, 252, 2, 2, UNI_CASEDLETTER } /* islc */,
+ { 20, 7198, 6103, 7, 13, UNI_SUPMATHOPERATORS } /* blk=supmathoperators */,
+ { 1, 4391, 2107, 14, 8, UNI_NV__7_SLASH_2 } /* numericvalue=3.500e+00 */,
+ { 3, 7198, 1609, 5, 9, UNI_SMALLFORMS } /* blk=smallforms */,
+ { 0, 2280, 581, 9, 2, UNI_IN__2 } /* presentin=2 */,
+ { 0, 1667, 4002, 4, 4, UNI_INMODI } /* blk=modi */,
+ { 1, 3177, 3, 15, 1, UNI_EA__W } /* eastasianwidth=w */,
+ { 1, 461, 499, 2, 4, UNI_LYDI } /* islydi */,
+ { 0, 5460, 599, 19, 3, -UNI_TERM } /* terminalpunctuation=no */,
+ { 4, 1102, 1227, 4, 7, UNI_MAKA } /* scx=makasar */,
+ { 0, 3391, 1313, 13, 3, UNI_NV__600 } /* numericvalue=600 */,
+ { 1, 1667, 2268, 4, 12, UNI_PLAYINGCARDS } /* blk=playingcards */,
+ { 0, 1102, 124, 4, 4, UNI_LATN } /* scx=latn */,
+ { 6, 6062, 7241, 7, 10, UNI_ENCLOSEDCJK } /* block=enclosedcjk */,
+ { 2, 1424, 2165, 7, 2, UNI_CCC__33 } /* ccc=ccc33 */,
+ { 1, 4360, 3001, 10, 7, UNI_LB__NU } /* linebreak=numeric */,
+ { 0, 1396, 4439, 3, 2, UNI_xids_values_index } /* xids= */,
+ { 2, 416, 0, 2, 0, UNI_NO } /* no */,
+ { 12, 21, 598, 2, 3, -UNI_EXT } /* ext=n */,
+ { 0, 6165, 406, 3, 4, UNI_DIAK } /* sc=diak */,
+ { 1, 292, 288, 3, 2, UNI_NV__30 } /* nv=30 */,
+ { 0, 461, 5682, 2, 5, UNI_GREK } /* isgreek */,
+ { 4, 3204, 353, 14, 4, UNI_GREXT } /* graphemeextend=yes */,
+ { 0, 156, 0, 4, 0, UNI_OUGR } /* ougr */,
+ { 2, 1667, 4896, 4, 8, UNI_BAMUMSUP } /* blk=bamumsup */,
+ { 0, 3391, 294, 12, 3, UNI_NV__90 } /* numericvalue=90 */,
+ { 1, 7944, 4680, 28, 4, UNI_CJKEXTF } /* iscjkunifiedideographsextensionf */,
+ { 1, 7267, 2004, 16, 2, UNI_PO } /* generalcategory=po */,
+ { 19, 6427, 20, 13, 2, UNI_JG__HE } /* joininggroup=he */,
+ { 13, 1823, 4271, 7, 17, UNI_KITS } /* script=khitansmallscript */,
+ { 0, 3391, 768, 13, 2, UNI_NV__27 } /* numericvalue=27 */,
+ { 4, 1102, 1212, 4, 9, UNI_QAAI } /* scx=inherited */,
+ { 0, 1667, 8474, 7, 33, UNI_CJKCOMPATIDEOGRAPHSSUP } /* blk=cjkcompatibilityideographssupplement */,
+ { 0, 1391, 1613, 3, 2, UNI_WB__FO } /* wb=fo */,
+ { 4, 6165, 2247, 3, 4, UNI_HUNG } /* sc=hung */,
+ { 1, 2060, 353, 5, 4, UNI_XPOSIXALPHA } /* alpha=yes */,
+ { 0, 1667, 668, 4, 5, UNI_INOGHAM } /* blk=ogham */,
+ { 17, 7267, 0, 16, 2, UNI_CASEDLETTER } /* generalcategory=l& */,
+ { 1, 1667, 1404, 4, 10, UNI_ASCII } /* blk=basiclatin */,
+ { 1, 7648, 7011, 21, 9, UNI_DT__NONCANON } /* decompositiontype=noncanonical */,
+ { 1, 1667, 1376, 4, 9, UNI_INSAMARITAN } /* blk=samaritan */,
+ { 7, 324, 5149, 3, 7, UNI_SUPARROWSA } /* suparrowsa */,
+ { 1, 4424, 232, 17, 2, UNI_YI } /* scriptextensions=yi */,
+ { 8, 30, 2255, 1, 13, UNI_PHAISTOS } /* inphaistosdisc */,
+ { 16, 1823, 2852, 7, 4, UNI_SC__MAHJ } /* script=mahj */,
+ { 0, 309, 890, 2, 5, UNI_IN__10 } /* in=10.0 */,
+ { 1, 1397, 598, 6, 2, UNI_ids_values_index } /* idstart= */,
+ { 0, 2536, 1760, 3, 3, UNI_JG__KAF } /* jg=kaf */,
+ { 18, 2324, 1635, 6, 10, UNI_INWARANGCITI } /* block=warangciti */,
+ { 4, 6165, 493, 3, 4, UNI_SC__KHOJ } /* sc=khoj */,
+ { 2, 5172, 0, 2, 0, UNI_CASEDLETTER } /* l_ */,
+ { 0, 1396, 598, 7, 3, -UNI_XIDS } /* xidstart=n */,
+ { 1, 461, 4176, 2, 6, UNI_HANG } /* ishangul */,
+ { 0, 6324, 0, 6, 0, UNI_CF } /* format */,
+ { 0, 5895, 8386, 5, 21, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* issupsymbolsandpictographs */,
+ { 0, 3098, 353, 8, 2, UNI_XPOSIXXDIGIT } /* hexdigit=y */,
+ { 4, 309, 2468, 2, 6, UNI_IPAEXT } /* inipaext */,
+ { 1, 30, 4553, 1, 6, UNI_TITLE } /* istitle */,
+ { 0, 1396, 353, 4, 2, UNI_XIDS } /* xids=y */,
+ { 8, 1667, 917, 4, 8, UNI_INBASSAVAH } /* blk=bassavah */,
+ { 3, 868, 0, 4, 0, UNI_TIRH } /* tirh */,
+ { 3, 11, 4987, 1, 16, UNI_ALCHEMICAL } /* alchemicalsymbols */,
+ { 8, 3177, 0, 15, 0, UNI_ea_values_index } /* eastasianwidth= */,
+ { 3, 461, 1325, 2, 4, UNI_ITAL } /* isital */,
+ { 1, 2536, 478, 3, 3, UNI_JG__BEH } /* jg=beh */,
+ { 3, 7796, 0, 22, 0, UNI_ENCLOSEDIDEOGRAPHICSUP } /* enclosedideographicsup */,
+ { 5, 461, 172, 2, 4, UNI_RJNG } /* isrjng */,
+ { 0, 1667, 369, 4, 6, UNI_INGOTHIC } /* blk=gothic */,
+ { 3, 309, 2441, 2, 11, UNI_INNANDINAGARI } /* innandinagari */,
+ { 0, 1391, 2720, 2, 3, UNI_RI } /* wb=ri */,
+ { 0, 7591, 209, 3, 2, UNI_LB__GL } /* lb=gl */,
+ { 2, 1823, 786, 7, 4, UNI_HMNP } /* script=hmnp */,
+ { 0, 5216, 4770, 19, 10, UNI_LATINEXTADDITIONAL } /* block=latinextendedadditional */,
+ { 0, 309, 1033, 2, 8, UNI_JAMOEXTB } /* injamoextb */,
+ { 1, 1667, 1037, 7, 4, UNI_CJKEXTB } /* blk=cjkextb */,
+ { 0, 6165, 74, 3, 4, UNI_SC__CYRL } /* sc=cyrl */,
+ { 6, 1102, 983, 4, 8, UNI_HIRA } /* scx=hiragana */,
+ { 1, 533, 283, 3, 2, UNI_SB__NU } /* sb=nu */,
+ { 3, 7591, 2589, 3, 10, UNI_LB__BA } /* lb=breakafter */,
+ { 6, 1424, 2101, 7, 2, UNI_CCC__29 } /* ccc=ccc29 */,
+ { 0, 2324, 5392, 7, 10, UNI_CHEROKEESUP } /* block=cherokeesup */,
+ { 1, 339, 520, 5, 1, UNI_CCC__17 } /* ccc=17 */,
+ { 37, 3204, 585, 14, 5, UNI_GREXT } /* graphemeextend=true */,
+ { 0, 2324, 8607, 6, 33, UNI_SUPMATHOPERATORS } /* block=supplementalmathematicaloperators */,
+ { 0, 309, 1003, 2, 6, UNI_INLEPCHA } /* inlepcha */,
+ { 0, 8311, 7380, 32, 4, UNI_CJKEXTB } /* block=cjkunifiedideographsextensionb */,
+ { 0, 1285, 0, 9, 0, UNI_SIND } /* khudawadi */,
+ { 14, 7274, 313, 9, 4, UNI_M } /* category=mark */,
+ { 1, 1667, 1501, 4, 8, UNI_JAMOEXTA } /* blk=jamoexta */,
+ { 2, 6165, 196, 3, 4, UNI_SC__TAML } /* sc=taml */,
+ { 1, 3001, 406, 12, 2, UNI_NT__DI } /* numerictype=di */,
+ { 1, 292, 2092, 3, 2, UNI_NV__25 } /* nv=25 */,
+ { 0, 1667, 4176, 4, 6, UNI_INHANGUL } /* blk=hangul */,
+ { 2, 5959, 3570, 5, 13, UNI_HALFANDFULLFORMS } /* inhalfandfullforms */,
+ { 3, 1726, 5676, 3, 18, UNI_ANCIENTGREEKNUMBERS } /* isancientgreeknumbers */,
+ { 0, 3984, 0, 17, 0, UNI_EPRES } /* emojipresentation */,
+ { 8, 1667, 2692, 4, 13, UNI_VERTICALFORMS } /* blk=verticalforms */,
+ { 0, 4424, 3421, 17, 15, UNI_NARB } /* scriptextensions=oldnortharabian */,
+ { 1, 1102, 1094, 4, 4, UNI_MERC } /* scx=merc */,
+ { 3, 916, 933, 4, 3, -UNI_EBASE } /* ebase=f */,
+ { 6, 7267, 255, 16, 2, UNI_CF } /* generalcategory=cf */,
+ { 0, 1823, 4926, 7, 5, UNI_SC__TAML } /* script=tamil */,
+ { 1, 552, 2084, 4, 2, UNI_AGE__11 } /* age=11 */,
+ { 0, 537, 0, 6, 0, UNI_TNSA } /* tangsa */,
+ { 1, 3832, 1805, 14, 5, UNI_NV__500000 } /* numericvalue=500000 */,
+ { 1, 4970, 352, 16, 5, UNI_EBASE } /* emojimodifierbase=yes */,
+ { 5, 309, 890, 2, 3, UNI_IN__10 } /* in=10 */,
+ { 0, 33, 5409, 1, 11, UNI_SMALLKANAEXT } /* smallkanaext */,
+ { 1, 7383, 4852, 10, 10, UNI_BC__WS } /* bidiclass=whitespace */,
+ { 3, 597, 1707, 3, 8, UNI_DT__FRA } /* dt=fraction */,
+ { 0, 1667, 909, 4, 8, UNI_INBALINESE } /* blk=balinese */,
+ { 4, 2514, 3364, 3, 14, UNI_MISCPICTOGRAPHS } /* ismiscpictographs */,
+ { 6, 7537, 934, 10, 2, -UNI_XPOSIXALPHA } /* alphabetic=f */,
+ { 13, 1543, 0, 4, 0, UNI_KHAR } /* khar */,
+ { 0, 3391, 1318, 13, 3, UNI_NV__200 } /* numericvalue=200 */,
+ { 2, 461, 65, 2, 2, UNI_MN } /* ismn */,
+ { 16, 629, 584, 5, 6, UNI_GRBASE } /* grbase=true */,
+ { 1, 461, 2009, 2, 6, UNI_SYRC } /* issyriac */,
+ { 0, 1102, 2244, 4, 12, UNI_HUNG } /* scx=oldhungarian */,
+ { 14, 1801, 1805, 5, 6, UNI_NV__10000000 } /* nv=10000000 */,
+ { 0, 1743, 1479, 4, 5, UNI_VERTSPACE } /* vertspace */,
+ { 0, 733, 5820, 3, 15, UNI_ENCLOSEDALPHANUM } /* inenclosedalphanum */,
+ { 7, 3848, 1805, 14, 4, UNI_NV__70000 } /* numericvalue=70000 */,
+ { 5, 1102, 164, 4, 4, UNI_PHNX } /* scx=phnx */,
+ { 0, 461, 1234, 2, 4, UNI_MULT } /* ismult */,
+ { 0, 1667, 1125, 4, 8, UNI_INTIFINAGH } /* blk=tifinagh */,
+ { 5, 7591, 2039, 3, 2, UNI_LB__BK } /* lb=bk */,
+ { 2, 5799, 5149, 5, 7, UNI_SUPARROWSA } /* insuparrowsa */,
+ { 3, 7591, 1165, 3, 2, UNI_LB__CL } /* lb=cl */,
+ { 0, 1667, 6000, 4, 21, UNI_YIJING } /* blk=yijinghexagramsymbols */,
+ { 0, 2930, 0, 4, 0, UNI_JT__T } /* jt=t */,
+ { 0, 2256, 0, 8, 0, UNI_PHAISTOS } /* phaistos */,
+ { 17, 2324, 369, 6, 6, UNI_INGOTHIC } /* block=gothic */,
+ { 2, 8343, 6416, 29, 11, UNI_INSC__CONSONANTSUBJOINED } /* indicsyllabiccategory=consonantsubjoined */,
+ { 1, 7011, 3147, 24, 5, UNI_CCC__A } /* canonicalcombiningclass=above */,
+ { 0, 6165, 1255, 3, 4, UNI_SIDD } /* sc=sidd */,
+ { 4, 5532, 0, 21, 0, UNI_CWCF } /* changeswhencasefolded */,
+ { 0, 8, 599, 3, 3, -UNI_PCM } /* pcm=no */,
+ { 11, 461, 2317, 2, 6, UNI_N } /* isnumber */,
+ { 1, 1883, 274, 11, 1, UNI_bidic_values_index } /* bidicontrol= */,
+ { 54, 1726, 7545, 6, 20, UNI_ARABICPFA } /* isarabicpresentationformsa */,
+ { 0, 1424, 345, 8, 2, UNI_CCC__118 } /* ccc=ccc118 */,
+ { 1, 1102, 414, 4, 4, UNI_HANO } /* scx=hano */,
+ { 0, 605, 6621, 2, 3, UNI_IDC } /* idc=t */,
+ { 3, 2324, 6514, 6, 10, UNI_PUA } /* block=privateuse */,
+ { 2, 2523, 1659, 4, 8, UNI_XPOSIXSPACE } /* isxperlspace */,
+ { 0, 3014, 288, 11, 2, UNI_IN__3 } /* presentin=v30 */,
+ { 12, 7214, 0, 26, 0, UNI_CCC__12 } /* canonicalcombiningclass=12 */,
+ { 6, 271, 3472, 4, 3, UNI_LB__ZWJ } /* gcb=zwj */,
+ { 3, 2280, 389, 10, 3, UNI_IN__6_DOT_3 } /* presentin=6.3 */,
+ { 1, 4424, 4620, 17, 7, UNI_LINB } /* scriptextensions=linearb */,
+ { 1, 6076, 6945, 9, 20, UNI_GEOMETRICSHAPESEXT } /* block=geometricshapesextended */,
+ { 2, 309, 4060, 2, 7, UNI_BRAI } /* inbraille */,
+ { 0, 1492, 3639, 9, 9, UNI_GEORGIANEXT } /* ingeorgianextended */,
+ { 3, 2832, 7467, 10, 13, UNI_CYRILLICSUP } /* iscyrillicsupplementary */,
+ { 1, 1823, 108, 7, 4, UNI_KAWI } /* script=kawi */,
+ { 1, 309, 7110, 2, 24, UNI_DIACRITICALSFORSYMBOLS } /* incombiningmarksforsymbols */,
+ { 0, 461, 15, 2, 4, UNI_AGHB } /* isaghb */,
+ { 0, 1734, 1609, 3, 9, UNI_SMALLFORMS } /* issmallforms */,
+ { 0, 1102, 537, 4, 4, UNI_TANG } /* scx=tang */,
+ { 0, 1198, 3938, 3, 16, UNI_UCAS } /* incanadiansyllabics */,
+ { 1, 3014, 3876, 11, 2, UNI_IN__8 } /* presentin=v80 */,
+ { 0, 8658, 0, 45, 0, UNI_UCASEXTA } /* isunifiedcanadianaboriginalsyllabicsextendeda */,
+ { 9, 2324, 6986, 6, 25, UNI_SYMBOLSFORLEGACYCOMPUTING } /* block=symbolsforlegacycomputing */,
+ { 3, 6236, 0, 16, 0, UNI_NV__100 } /* numericvalue=100 */,
+ { 0, 7011, 289, 25, 1, UNI_CCC__20 } /* canonicalcombiningclass=20 */,
+ { 0, 309, 1671, 2, 7, UNI_CJKEXTD } /* incjkextd */,
+ { 16, 6450, 6324, 14, 6, UNI_SB__FO } /* sentencebreak=format */,
+ { 0, 6165, 414, 3, 4, UNI_SC__HANO } /* sc=hano */,
+ { 0, 7591, 2599, 3, 10, UNI_LB__NS } /* lb=nonstarter */,
+ { 27, 1102, 1562, 4, 4, UNI_NAGM } /* scx=nagm */,
+ { 2, 1272, 6576, 3, 21, UNI_INDICNUMBERFORMS } /* iscommonindicnumberforms */,
+ { 2, 1667, 8278, 4, 33, UNI_MISCMATHSYMBOLSB } /* blk=miscellaneousmathematicalsymbolsb */,
+ { 0, 4519, 7467, 14, 13, UNI_CYRILLICSUP } /* block=cyrillicsupplementary */,
+ { 0, 8071, 7380, 30, 4, UNI_CJKEXTB } /* blk=cjkunifiedideographsextensionb */,
+ { 0, 2220, 1805, 4, 5, UNI_NV__600000 } /* nv=600000 */,
+ { 3, 4424, 1779, 17, 11, UNI_MEDF } /* scriptextensions=medefaidrin */,
+ { 2, 7495, 1317, 28, 2, UNI_CCC__132 } /* canonicalcombiningclass=ccc132 */,
+ { 16, 5778, 0, 21, 0, UNI_PRTI } /* inscriptionalparthian */,
+ { 15, 377, 934, 3, 6, -UNI_EXT } /* ext=false */,
+ { 0, 833, 353, 4, 2, UNI_TERM } /* term=y */,
+ { 4, 309, 4896, 2, 5, UNI_INBAMUM } /* inbamum */,
+ { 1, 461, 156, 2, 4, UNI_OUGR } /* isougr */,
+ { 2, 4424, 450, 17, 4, UNI_MIAO } /* scriptextensions=plrd */,
+ { 22, 7648, 0, 18, 0, UNI_dt_values_index } /* decompositiontype= */,
+ { 0, 1102, 4896, 4, 4, UNI_BAMU } /* scx=bamu */,
+ { 0, 7267, 5243, 20, 12, UNI_PO } /* generalcategory=otherpunctuation */,
+ { 16, 7084, 6193, 6, 5, UNI_ARABICSUP } /* inarabicsup */,
+ { 3, 461, 1465, 2, 10, UNI_DIAK } /* isdivesakuru */,
+ { 4, 339, 8648, 4, 10, UNI_CCC__AR } /* ccc=aboveright */,
+ { 1, 1667, 1592, 4, 10, UNI_INSAURASHTRA } /* blk=saurashtra */,
+ { 21, 6163, 8522, 5, 16, UNI_INSC__VOWELINDEPENDENT } /* insc=vowelindependent */,
+ { 1, 1667, 4161, 4, 15, UNI_DIACRITICALSEXT } /* blk=diacriticalsext */,
+ { 1, 309, 5876, 2, 19, UNI_SUNDANESESUP } /* insundanesesupplement */,
+ { 0, 2287, 546, 3, 3, UNI_IN__3 } /* in=3.0 */,
+ { 0, 309, 1009, 2, 6, UNI_INLYCIAN } /* inlycian */,
+ { 0, 309, 55, 2, 4, UNI_INCHAM } /* incham */,
+ { 0, 4360, 306, 10, 2, UNI_LB__SP } /* linebreak=sp */,
+ { 0, 4424, 15, 17, 4, UNI_AGHB } /* scriptextensions=aghb */,
+ { 0, 1530, 5848, 6, 9, UNI_KANAEXTA } /* iskanaextendeda */,
+ { 1, 339, 519, 3, 2, UNI_CCC__7 } /* ccc=7 */,
+ { 0, 2324, 8660, 6, 42, UNI_UCASEXT } /* block=unifiedcanadianaboriginalsyllabicsextended */,
+ { 31, 2287, 2199, 3, 3, UNI_IN__2 } /* in=2.0 */,
+ { 12, 940, 1104, 5, 3, UNI_COMPEX } /* compex=t */,
+ { 20, 2, 8407, 1, 34, UNI_DIACRITICALSFORSYMBOLS } /* combiningdiacriticalmarksforsymbols */,
+ { 0, 2324, 5694, 7, 10, UNI_COUNTINGROD } /* block=countingrod */,
+ { 0, 1391, 1829, 2, 3, UNI_WB__ML } /* wb=ml */,
+ { 0, 2232, 0, 4, 0, UNI_NV__8 } /* nv=8 */,
+ { 3, 510, 6271, 4, 8, UNI_NV__3_SLASH_80 } /* nv=3.750e-02 */,
+ { 12, 3633, 6957, 7, 9, UNI_LATINEXTE } /* inlatinextendede */,
+ { 0, 2, 584, 1, 6, UNI_CE } /* ce=true */,
+ { 6, 461, 909, 2, 8, UNI_BALI } /* isbalinese */,
+ { 2, 1942, 0, 5, 0, UNI_XPOSIXGRAPH } /* graph */,
+ { 6, 461, 625, 2, 2, UNI_PI } /* ispi */,
+ { 0, 1823, 1367, 7, 4, UNI_PAUC } /* script=pauc */,
+ { 9, 461, 1376, 2, 9, UNI_SAMR } /* issamaritan */,
+ { 2, 309, 120, 2, 3, UNI_INLAO } /* inlao */,
+ { 0, 6076, 5863, 11, 6, UNI_GEORGIANSUP } /* block=georgiansup */,
+ { 0, 309, 2811, 2, 12, UNI_KHMERSYMBOLS } /* inkhmersymbols */,
+ { 6, 461, 1830, 2, 4, UNI_MLYM } /* ismlym */,
+ { 4, 939, 6438, 4, 2, UNI_ecomp_values_index } /* ecomp= */,
+ { 6, 1454, 353, 2, 2, UNI_SD } /* sd=y */,
+ { 3, 1823, 3133, 6, 5, UNI_SC__GEOR } /* script=geor */,
+ { 1, 4360, 2720, 9, 3, UNI_RI } /* linebreak=ri */,
+ { 0, 461, 6677, 2, 15, UNI_MODIFIERLETTERS } /* ismodifierletters */,
+ { 3, 7383, 87, 11, 2, UNI_BC__LRE } /* bidiclass=lre */,
+ { 2, 4424, 414, 17, 3, UNI_HAN } /* scriptextensions=han */,
+ { 3, 164, 0, 4, 0, UNI_PHNX } /* phnx */,
+ { 0, 4424, 1635, 17, 4, UNI_WARA } /* scriptextensions=wara */,
+ { 0, 461, 5283, 2, 9, UNI_HALFMARKS } /* ishalfmarks */,
+ { 9, 7495, 395, 27, 2, UNI_CCC__16 } /* canonicalcombiningclass=ccc16 */,
+ { 10, 2514, 0, 9, 0, UNI_MYMR } /* ismyanmar */,
+ { 0, 895, 1804, 5, 3, UNI_AGE__10 } /* age=v100 */,
+ { 1, 5916, 8553, 17, 6, UNI_LOE } /* logicalorderexception=t */,
+ { 0, 4424, 47, 17, 4, UNI_CAKM } /* scriptextensions=cakm */,
+ { 2, 597, 7011, 6, 9, UNI_DT__NONCANON } /* dt=noncanonical */,
+ { 8, 1102, 5067, 3, 5, UNI_MANI } /* scx=mani */,
+ { 0, 802, 0, 4, 0, UNI_SARB } /* sarb */,
+ { 1, 1823, 442, 7, 4, UNI_ORKH } /* script=orkh */,
+ { 2, 578, 1317, 5, 2, UNI_CCC__AR } /* ccc=232 */,
+ { 0, 1667, 317, 4, 5, UNI_INTAILE } /* blk=taile */,
+ { 0, 1667, 5391, 4, 11, UNI_CHEROKEESUP } /* blk=cherokeesup */,
+ { 0, 7011, 182, 24, 2, UNI_CCC__0 } /* canonicalcombiningclass=nr */,
+ { 0, 30, 996, 1, 7, UNI_INKAITHI } /* inkaithi */,
+ { 0, 2324, 658, 6, 5, UNI_INDOGRA } /* block=dogra */,
+ { 0, 8343, 3217, 31, 4, UNI_INSC__CONSONANTDEAD } /* indicsyllabiccategory=consonantdead */,
+ { 6, 1942, 5671, 11, 4, -UNI_GRBASE } /* graphemebase=no */,
+ { 0, 2732, 6193, 8, 12, UNI_ARABICSUP } /* blk=arabicsupplement */,
+ { 6, 6165, 739, 3, 7, UNI_SC__MAND } /* sc=mandaic */,
+ { 1, 7648, 238, 18, 2, UNI_DT__NB } /* decompositiontype=nb */,
+ { 0, 2324, 2811, 6, 12, UNI_KHMERSYMBOLS } /* block=khmersymbols */,
+ { 1, 5216, 129, 17, 3, UNI_LATINEXTF } /* block=latinextendedf */,
+ { 0, 6165, 148, 3, 4, UNI_SC__ORYA } /* sc=orya */,
+ { 0, 4424, 739, 17, 4, UNI_MAND } /* scriptextensions=mand */,
+ { 0, 4360, 98, 10, 2, UNI_LB__HL } /* linebreak=hl */,
+ { 0, 4191, 599, 5, 2, -UNI_XPOSIXLOWER } /* lower=n */,
+ { 1, 1667, 983, 4, 8, UNI_INHIRAGANA } /* blk=hiragana */,
+ { 6, 8538, 0, 22, 0, UNI_VO__TR } /* verticalorientation=tr */,
+ { 7, 1102, 779, 4, 7, UNI_OSMA } /* scx=osmanya */,
+ { 1, 578, 1318, 5, 2, UNI_CCC__B } /* ccc=220 */,
+ { 4, 3177, 934, 14, 2, UNI_EA__F } /* eastasianwidth=f */,
+ { 8, 1823, 128, 7, 4, UNI_MEDF } /* script=medf */,
+ { 0, 1102, 1385, 4, 6, UNI_THAA } /* scx=thaana */,
+ { 1, 7134, 599, 26, 2, -UNI_PCM } /* prependedconcatenationmark=n */,
+ { 0, 7892, 934, 16, 6, -UNI_UIDEO } /* unifiedideograph=false */,
+ { 3, 1424, 295, 8, 1, UNI_CCC__19 } /* ccc=ccc19 */,
+ { 4, 461, 3908, 2, 16, UNI_TANGUTCOMPONENTS } /* istangutcomponents */,
+ { 0, 2324, 608, 6, 7, UNI_INELBASAN } /* block=elbasan */,
+ { 0, 309, 658, 2, 5, UNI_INDOGRA } /* indogra */,
+ { 0, 3391, 392, 13, 2, UNI_NV__41 } /* numericvalue=41 */,
+ { 0, 1102, 297, 4, 5, UNI_ORYA } /* scx=oriya */,
+ { 0, 461, 1671, 2, 7, UNI_CJKEXTD } /* iscjkextd */,
+ { 0, 2002, 4191, 7, 5, UNI_POSIXLOWER } /* isposixlower */,
+ { 4, 7495, 1318, 27, 2, UNI_CCC__20 } /* canonicalcombiningclass=ccc20 */,
+ { 0, 461, 317, 2, 5, UNI_TALE } /* istaile */,
+ { 2, 461, 1205, 2, 4, UNI_GRAN } /* isgran */,
+ { 0, 2718, 119, 3, 2, UNI_BC__AL } /* bc=al */,
+ { 0, 832, 934, 5, 6, -UNI_STERM } /* sterm=false */,
+ { 0, 2432, 2057, 3, 11, UNI_MATHALPHANUM } /* inmathalphanum */,
+ { 1, 7495, 1155, 27, 2, UNI_CCC__35 } /* canonicalcombiningclass=ccc35 */,
+ { 8, 2280, 342, 9, 3, UNI_IN__12 } /* presentin=12 */,
+ { 40, 2514, 8374, 3, 33, UNI_MISCPICTOGRAPHS } /* ismiscellaneoussymbolsandpictographs */,
+ { 0, 1728, 4659, 6, 9, UNI_ARABICEXTC } /* arabicextendedc */,
+ { 4, 2324, 1954, 6, 12, UNI_INGUNJALAGONDI } /* block=gunjalagondi */,
+ { 30, 302, 585, 5, 2, UNI__PERL_PATWS } /* patws=t */,
+ { 1, 5895, 8386, 14, 21, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* issupplementalsymbolsandpictographs */,
+ { 8, 3407, 1805, 14, 4, UNI_NV__40000 } /* numericvalue=40000 */,
+ { 0, 1102, 3538, 4, 7, UNI_CPRT } /* scx=cypriot */,
+ { 0, 7752, 4741, 23, 5, UNI_JG__MANICHAEANALEPH } /* joininggroup=manichaeanaleph */,
+ { 0, 4424, 180, 17, 4, UNI_RUNR } /* scriptextensions=runr */,
+ { 0, 1823, 1438, 7, 10, UNI_CHRS } /* script=chorasmian */,
+ { 27, 1248, 0, 4, 0, UNI_PHAG } /* phag */,
+ { 0, 2002, 3100, 6, 6, UNI_POSIXDIGIT } /* isposixdigit */,
+ { 0, 3502, 2374, 12, 8, UNI_ETHIOPICEXT } /* blk=ethiopicextended */,
+ { 16, 1734, 5409, 3, 11, UNI_SMALLKANAEXT } /* issmallkanaext */,
+ { 16, 461, 204, 2, 4, UNI_TFNG } /* istfng */,
+ { 0, 292, 391, 3, 2, UNI_NV__34 } /* nv=34 */,
+ { 1, 3892, 585, 16, 2, UNI_STERM } /* sentenceterminal=t */,
+ { 37, 517, 1805, 4, 4, UNI_NV__70000 } /* nv=70000 */,
+ { 2, 292, 2138, 3, 9, UNI_NV__3_SLASH_16 } /* nv=1.875e-01 */,
+ { 0, 7892, 353, 16, 2, UNI_UIDEO } /* unifiedideograph=y */,
+ { 0, 1734, 5169, 7, 4, UNI_XPOSIXSPACE } /* isspaceperl */,
+ { 30, 2, 352, 1, 5, UNI_CE } /* ce=yes */,
+ { 3, 461, 1090, 2, 4, UNI_LINB } /* islinb */,
+ { 3, 4424, 748, 19, 5, UNI_MARC } /* scriptextensions=marchen */,
+ { 20, 2280, 2222, 9, 2, UNI_IN__6 } /* presentin=6 */,
+ { 2, 7267, 3026, 16, 2, UNI_PS } /* generalcategory=ps */,
+ { 9, 7591, 3472, 3, 3, UNI_LB__ZWJ } /* lb=zwj */,
+ { 0, 1133, 0, 4, 0, UNI_VITH } /* vith */,
+ { 8, 5637, 644, 20, 4, UNI_LB__H3 } /* graphemeclusterbreak=lvt */,
+ { 0, 71, 585, 3, 2, UNI_CWU } /* cwu=t */,
+ { 7, 6165, 5958, 3, 7, UNI_SC__SINH } /* sc=sinhala */,
+ { 0, 6427, 5084, 13, 6, UNI_JG__YUDHHE } /* joininggroup=yudhhe */,
+ { 0, 3490, 6193, 10, 12, UNI_CYRILLICSUP } /* blk=cyrillicsupplement */,
+ { 3, 4862, 0, 18, 0, UNI_RUMI } /* ruminumeralsymbols */,
+ { 1, 3391, 0, 15, 0, UNI_NV__23 } /* numericvalue=23 */,
+ { 0, 2, 933, 1, 7, -UNI_CE } /* ce=false */,
+ { 0, 2324, 668, 6, 5, UNI_INOGHAM } /* block=ogham */,
+ { 10, 4424, 2441, 17, 4, UNI_NAND } /* scriptextensions=nand */,
+ { 1, 0, 733, 1, 6, UNI_LINA } /* lineara */,
+ { 0, 377, 353, 3, 2, UNI_EXT } /* ext=y */,
+ { 1, 461, 1592, 2, 4, UNI_SAUR } /* issaur */,
+ { 4, 6165, 983, 3, 8, UNI_SC__HIRA } /* sc=hiragana */,
+ { 4, 309, 2780, 2, 6, UNI_INCOPTIC } /* incoptic */,
+ { 43, 184, 0, 4, 0, UNI_SAMR } /* samr */,
+ { 3, 2503, 0, 11, 0, UNI_JOINC } /* joincontrol */,
+ { 2, 3130, 1955, 5, 11, UNI_INGUNJALAGONDI } /* blk=gunjalagondi */,
+ { 0, 2324, 5125, 6, 19, UNI_OTTOMANSIYAQNUMBERS } /* block=ottomansiyaqnumbers */,
+ { 1, 3391, 1318, 13, 4, UNI_NV__2000 } /* numericvalue=2000 */,
+ { 0, 6776, 0, 11, 0, UNI_MTEI } /* meeteimayek */,
+ { 5, 7591, 277, 3, 2, UNI_LB__H2 } /* lb=h2 */,
+ { 1, 54, 1909, 2, 5, UNI_SC__KANA } /* sc=kana */,
+ { 6, 6165, 3538, 3, 7, UNI_SC__CPRT } /* sc=cypriot */,
+ { 2, 4371, 933, 5, 3, -UNI_XPOSIXSPACE } /* wspace=f */,
+ { 3, 6165, 39, 3, 4, UNI_BHKS } /* sc=bhks */,
+ { 0, 1823, 1262, 7, 4, UNI_SOYO } /* script=soyo */,
+ { 2, 11, 4987, 1, 9, UNI_ALCHEMICAL } /* alchemical */,
+ { 4, 4926, 0, 15, 0, UNI_TAMILSUP } /* tamilsupplement */,
+ { 9, 1391, 98, 3, 2, UNI_LB__HL } /* wb=hl */,
+ { 2, 2324, 1696, 6, 11, UNI_DOMINO } /* block=dominotiles */,
+ { 0, 2324, 4150, 6, 11, UNI_INPUNCTUATION } /* block=punctuation */,
+ { 10, 4651, 0, 8, 0, UNI_BOPO } /* bopomofo */,
+ { 2, 1667, 1914, 4, 8, UNI_UCASEXTA } /* blk=ucasexta */,
+ { 0, 3502, 8111, 5, 31, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* blk=egyptianhieroglyphformatcontrols */,
+ { 0, 6165, 653, 3, 5, UNI_SC__BUHD } /* sc=buhid */,
+ { 1, 2483, 599, 5, 2, -UNI_CASED } /* cased=n */,
+ { 2, 1102, 156, 4, 4, UNI_OUGR } /* scx=ougr */,
+ { 0, 1667, 2335, 4, 13, UNI_BLOCKELEMENTS } /* blk=blockelements */,
+ { 3, 1102, 3726, 3, 10, UNI_MLYM } /* scx=malayalam */,
+ { 7, 4424, 3026, 17, 14, UNI_PHLP } /* scriptextensions=psalterpahlavi */,
+ { 0, 1492, 5863, 7, 6, UNI_GEORGIANSUP } /* ingeorgiansup */,
+ { 0, 951, 956, 5, 3, UNI_DUPL } /* duployan */,
+ { 7, 461, 499, 2, 6, UNI_LYDI } /* islydian */,
+ { 1, 1823, 794, 7, 4, UNI_LANA } /* script=lana */,
+ { 0, 1667, 204, 9, 2, UNI_CJKEXTF } /* blk=cjkextf */,
+ { 0, 5156, 3001, 10, 7, UNI_WB__NU } /* wordbreak=numeric */,
+ { 3, 3378, 599, 13, 3, UNI_DT__CAN } /* nfdquickcheck=no */,
+ { 2, 2324, 5373, 6, 11, UNI_TAIXUANJING } /* block=taixuanjing */,
+ { 5, 1667, 7796, 4, 22, UNI_ENCLOSEDIDEOGRAPHICSUP } /* blk=enclosedideographicsup */,
+ { 20, 1823, 668, 7, 5, UNI_OGAM } /* script=ogham */,
+ { 0, 2324, 7855, 6, 32, UNI_INIDC } /* block=ideographicdescriptioncharacters */,
+ { 0, 505, 353, 5, 4, UNI_NFDQC__Y } /* nfdqc=yes */,
+ { 2, 2301, 5671, 10, 4, -UNI_XIDC } /* xidcontinue=no */,
+ { 0, 4360, 2977, 10, 11, UNI_LB__IN } /* linebreak=inseperable */,
+ { 4, 4795, 2107, 14, 8, UNI_NV__13_SLASH_2 } /* numericvalue=6.500e+00 */,
+ { 1, 1667, 3436, 4, 15, UNI_SARB } /* blk=oldsoutharabian */,
+ { 3, 3635, 0, 14, 0, UNI_LATINEXTD } /* latinextendedd */,
+ { 34, 292, 2101, 3, 2, UNI_NV__29 } /* nv=29 */,
+ { 0, 1726, 1037, 8, 4, UNI_ARABICEXTB } /* isarabicextb */,
+ { 0, 1667, 6382, 7, 18, UNI_CJKCOMPATFORMS } /* blk=cjkcompatibilityforms */,
+ { 4, 895, 295, 5, 2, UNI_AGE__9 } /* age=v90 */,
+ { 12, 3863, 2172, 14, 8, UNI_NV__7_SLASH_8 } /* numericvalue=8.750e-01 */,
+ { 0, 302, 1814, 2, 9, UNI_HMNG } /* pahawhhmong */,
+ { 0, 4424, 3908, 17, 6, UNI_TANG } /* scriptextensions=tangut */,
+ { 1, 309, 6351, 2, 23, UNI_COMPATJAMO } /* inhangulcompatibilityjamo */,
+ { 9, 461, 7724, 2, 17, UNI_VS } /* isvariationselector */,
+ { 1, 1102, 1191, 4, 7, UNI_BENG } /* scx=bengali */,
+ { 1, 4043, 274, 17, 1, UNI_idsb_values_index } /* idsbinaryoperator= */,
+ { 0, 1102, 772, 4, 7, UNI_OLCK } /* scx=olchiki */,
+ { 0, 3817, 2083, 14, 8, UNI_NV__1_SLASH_9 } /* numericvalue=1.111e-01 */,
+ { 3, 3014, 396, 11, 2, UNI_IN__6_DOT_1 } /* presentin=v61 */,
+ { 1, 1667, 3663, 4, 13, UNI_DEVANAGARIEXT } /* blk=devanagariext */,
+ { 39, 2002, 1659, 3, 8, UNI_POSIXSPACE } /* isperlspace */,
+ { 2, 1667, 5958, 4, 7, UNI_INSINHALA } /* blk=sinhala */,
+ { 1, 597, 0, 3, 0, UNI_dt_values_index } /* dt= */,
+ { 0, 124, 0, 4, 0, UNI_LATN } /* latn */,
+ { 0, 2324, 3611, 9, 11, UNI_CJKCOMPATFORMS } /* block=cjkcompatforms */,
+ { 2, 2287, 0, 5, 0, UNI_IN__14 } /* in=14 */,
+ { 3, 8343, 0, 22, 0, UNI_insc_values_index } /* indicsyllabiccategory= */,
+ { 1, 6841, 934, 25, 6, -UNI_DI } /* defaultignorablecodepoint=false */,
+ { 0, 1102, 176, 4, 4, UNI_ROHG } /* scx=rohg */,
+ { 10, 6165, 86, 3, 4, UNI_SC__GREK } /* sc=grek */,
+ { 2, 5255, 599, 20, 2, -UNI_EXTPICT } /* extendedpictographic=n */,
+ { 1, 8601, 8386, 18, 21, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* block=supplementalsymbolsandpictographs */,
+ { 0, 6165, 668, 3, 5, UNI_OGAM } /* sc=ogham */,
+ { 0, 5937, 0, 21, 0, UNI__PERL_NCHAR } /* noncharactercodepoint */,
+ { 2, 4424, 608, 17, 4, UNI_ELBA } /* scriptextensions=elba */,
+ { 1, 4424, 426, 17, 3, UNI_MRO } /* scriptextensions=mro */,
+ { 16, 4424, 474, 17, 3, UNI_VAI } /* scriptextensions=vai */,
+ { 0, 3093, 2931, 12, 3, UNI_POSIXXDIGIT } /* asciihexdigit=t */,
+ { 0, 4970, 599, 17, 3, -UNI_EBASE } /* emojimodifierbase=no */,
+ { 33, 510, 6263, 4, 8, UNI_NV__1_SLASH_320 } /* nv=3.125e-03 */,
+ { 1, 7804, 353, 11, 4, UNI_IDEO } /* ideographic=yes */,
+ { 1, 51, 0, 4, 0, UNI_CANS } /* cans */,
+ { 0, 1102, 2009, 4, 6, UNI_SYRC } /* scx=syriac */,
+ { 4, 7887, 5252, 28, 4, UNI_CJKEXTE } /* incjkunifiedideographsextensione */,
+ { 1, 271, 644, 3, 4, UNI_LB__H3 } /* gcb=lvt */,
+ { 0, 6090, 2057, 7, 11, UNI_MATHALPHANUM } /* block=mathalphanum */,
+ { 21, 7591, 524, 3, 2, UNI_LB__SY } /* lb=sy */,
+ { 7, 5799, 0, 21, 0, UNI_SUPARROWSB } /* insupplementalarrowsb */,
+ { 0, 4951, 6473, 18, 14, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* egyptianhieroglyphformatcontrols */,
+ { 0, 461, 4651, 2, 11, UNI_BOPOMOFOEXT } /* isbopomofoext */,
+ { 4, 4424, 3663, 17, 4, UNI_DEVA } /* scriptextensions=deva */,
+ { 0, 5168, 2304, 15, 8, UNI__PERL_CHARNAME_CONTINUE } /* _perl_charname_continue */,
+ { 1, 2020, 5354, 3, 19, UNI_ININSCRIPTIONALPAHLAVI } /* ininscriptionalpahlavi */,
+ { 0, 925, 0, 8, 0, UNI_BPT__O } /* bpt=open */,
+ { 32, 2280, 2155, 10, 3, UNI_IN__3_DOT_1 } /* presentin=3.1 */,
+ { 0, 7669, 1874, 22, 8, UNI_LB__H3 } /* hangulsyllabletype=lvtsyllable */,
+ { 32, 2002, 2060, 7, 5, UNI_POSIXALPHA } /* isposixalpha */,
+ { 18, 30, 1106, 1, 3, UNI_ITAL } /* ital */,
+ { 0, 10, 0, 1, 0, UNI_M } /* m */,
+ { 0, 6427, 1279, 13, 6, UNI_JG__LAMADH } /* joininggroup=lamadh */,
+ { 1, 6450, 283, 14, 2, UNI_SB__NU } /* sentencebreak=nu */,
+ { 8, 7274, 255, 9, 2, UNI_CF } /* category=cf */,
+ { 7, 1272, 7972, 3, 15, UNI_CUNEIFORMNUMBERS } /* iscuneiformnumbers */,
+ { 12, 1915, 6848, 4, 9, UNI_CI } /* caseignorable */,
+ { 10, 4424, 4060, 17, 4, UNI_BRAI } /* scriptextensions=brai */,
+ { 10, 4424, 196, 17, 4, UNI_TAML } /* scriptextensions=taml */,
+ { 9, 6165, 3325, 3, 4, UNI_HEBR } /* sc=hebr */,
+ { 13, 1075, 1805, 4, 4, UNI_NV__20000 } /* nv=20000 */,
+ { 2, 6165, 4060, 3, 7, UNI_BRAI } /* sc=braille */,
+ { 0, 33, 4710, 1, 15, UNI_SYRIACSUP } /* syriacsupplement */,
+ { 0, 6165, 6642, 3, 4, UNI_BRAH } /* sc=brah */,
+ { 1, 7383, 5479, 10, 18, UNI_BC__ET } /* bidiclass=europeanterminator */,
+ { 1, 2766, 4206, 3, 15, UNI_PS } /* gc=openpunctuation */,
+ { 5, 7752, 109, 24, 2, UNI_JG__MANICHAEANTAW } /* joininggroup=manichaeantaw */,
+ { 3, 5682, 0, 5, 0, UNI_GREK } /* greek */,
+ { 0, 4360, 6224, 10, 12, UNI_LB__SY } /* linebreak=breaksymbols */,
+ { 20, 605, 8144, 2, 16, UNI_IDEOGRAPHICSYMBOLS } /* ideographicsymbols */,
+ { 1, 517, 1314, 4, 3, UNI_NV__7000 } /* nv=7000 */,
+ { 0, 309, 983, 2, 8, UNI_INHIRAGANA } /* inhiragana */,
+ { 2, 1667, 4537, 5, 17, UNI_COPTICEPACTNUMBERS } /* blk=copticepactnumbers */,
+ { 0, 2324, 1543, 6, 10, UNI_INKHAROSHTHI } /* block=kharoshthi */,
+ { 4, 718, 3622, 3, 11, UNI_KANGXI } /* kangxiradicals */,
+ { 1, 1391, 6, 3, 2, UNI_LB__CR } /* wb=cr */,
+ { 8, 4424, 4176, 17, 6, UNI_HANG } /* scriptextensions=hangul */,
+ { 3, 461, 363, 2, 2, UNI_SM } /* issm */,
+ { 0, 7011, 1153, 24, 2, UNI_CCC__24 } /* canonicalcombiningclass=24 */,
+ { 18, 33, 8001, 1, 29, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* symbolsandpictographsextendeda */,
+ { 0, 461, 779, 2, 7, UNI_OSMA } /* isosmanya */,
+ { 8, 1227, 0, 7, 0, UNI_MAKA } /* makasar */,
+ { 0, 1102, 3908, 4, 6, UNI_TANG } /* scx=tangut */,
+ { 0, 895, 343, 5, 3, UNI_AGE__12_DOT_1 } /* age=v121 */,
+ { 3, 2766, 5235, 3, 20, UNI_PC } /* gc=connectorpunctuation */,
+ { 40, 1102, 1975, 4, 10, UNI_SOGO } /* scx=oldsogdian */,
+ { 0, 7214, 559, 25, 2, UNI_CCC__107 } /* canonicalcombiningclass=107 */,
+ { 10, 27, 29, 2, 2, UNI_ARMI } /* armi */,
+ { 17, 7267, 644, 15, 2, UNI_L } /* generalcategory=l */,
+ { 1, 461, 3013, 2, 5, UNI_EPRES } /* isepres */,
+ { 1, 6076, 3639, 13, 9, UNI_GEORGIANEXT } /* block=georgianextended */,
+ { 0, 309, 7796, 2, 29, UNI_ENCLOSEDIDEOGRAPHICSUP } /* inenclosedideographicsupplement */,
+ { 1, 2324, 1255, 6, 7, UNI_INSIDDHAM } /* block=siddham */,
+ { 5, 1198, 7972, 3, 29, UNI_CUNEIFORMNUMBERS } /* incuneiformnumbersandpunctuation */,
+ { 2, 2301, 0, 11, 0, UNI_XIDC } /* xidcontinue */,
+ { 3, 309, 3649, 2, 14, UNI_PHONETICEXTSUP } /* inphoneticextsup */,
+ { 0, 1102, 615, 4, 4, UNI_ELYM } /* scx=elym */,
+ { 3, 6165, 180, 3, 4, UNI_RUNR } /* sc=runr */,
+ { 0, 2766, 128, 3, 2, UNI_ME } /* gc=me */,
+ { 1, 418, 0, 4, 0, UNI_KHMR } /* khmr */,
+ { 10, 7274, 2424, 9, 2, UNI__PERL_SURROGATE } /* category=cs */,
+ { 10, 3514, 6193, 10, 12, UNI_ARABICSUP } /* block=arabicsupplement */,
+ { 11, 4584, 599, 18, 2, -UNI_IDST } /* idstrinaryoperator=n */,
+ { 2, 1823, 27, 7, 4, UNI_ARMI } /* script=armi */,
+ { 1, 7591, 2977, 3, 11, UNI_LB__IN } /* lb=inseperable */,
+ { 0, 5255, 934, 20, 6, -UNI_EXTPICT } /* extendedpictographic=false */,
+ { 0, 339, 1317, 5, 2, UNI_CCC__132 } /* ccc=132 */,
+ { 2, 2536, 6439, 2, 11, UNI_JG__AFRICANQAF } /* jg=africanqaf */,
+ { 10, 2060, 1175, 4, 2, UNI_alpha_values_index } /* alpha= */,
+ { 0, 4424, 1003, 17, 6, UNI_LEPC } /* scriptextensions=lepcha */,
+ { 32, 6165, 144, 3, 4, UNI_NEWA } /* sc=newa */,
+ { 40, 3878, 1314, 14, 2, UNI_NV__900 } /* numericvalue=900 */,
+ { 1, 461, 4896, 2, 15, UNI_BAMUMSUP } /* isbamumsupplement */,
+ { 0, 3832, 2107, 14, 8, UNI_NV__11_SLASH_2 } /* numericvalue=5.500e+00 */,
+ { 2, 4424, 1367, 17, 9, UNI_PAUC } /* scriptextensions=paucinhau */,
+ { 1, 6165, 1051, 3, 8, UNI_SC__MAHJ } /* sc=mahajani */,
+ { 2, 7495, 1153, 27, 2, UNI_CCC__24 } /* canonicalcombiningclass=ccc24 */,
+ { 1, 461, 1322, 2, 9, UNI_ITAL } /* isolditalic */,
+ { 4, 6062, 1505, 14, 4, UNI_ETHIOPICEXTA } /* block=ethiopicexta */,
+ { 1, 30, 4969, 1, 18, UNI_EBASE } /* isemojimodifierbase */,
+ { 1, 1200, 1037, 3, 4, UNI_CJKEXTB } /* cjkextb */,
+ { 14, 2536, 710, 3, 4, UNI_JG__SHIN } /* jg=shin */,
+ { 6, 7889, 0, 20, 0, UNI_CJK } /* cjkunifiedideographs */,
+ { 8, 309, 6776, 2, 21, UNI_MEETEIMAYEKEXT } /* inmeeteimayekextensions */,
+ { 0, 7036, 0, 26, 0, UNI_HALFANDFULLFORMS } /* halfwidthandfullwidthforms */,
+ { 1, 3633, 5848, 7, 9, UNI_LATINEXTA } /* inlatinextendeda */,
+ { 0, 7724, 585, 17, 2, UNI_VS } /* variationselector=t */,
+ { 64, 6090, 6597, 7, 21, UNI_MISCTECHNICAL } /* block=miscellaneoustechnical */,
+ { 18, 4360, 2930, 10, 2, UNI_GCB__T } /* linebreak=jt */,
+ { 0, 4424, 527, 17, 6, UNI_RJNG } /* scriptextensions=rejang */,
+ { 9, 3817, 520, 15, 1, UNI_NV__1_SLASH_7 } /* numericvalue=1/7 */,
+ { 12, 875, 599, 5, 3, -UNI_UIDEO } /* uideo=no */,
+ { 2, 2301, 3401, 9, 3, UNI_xidc_values_index } /* xidcontinue= */,
+ { 4, 2324, 678, 6, 5, UNI_INRUNIC } /* block=runic */,
+ { 0, 442, 0, 4, 0, UNI_ORKH } /* orkh */,
+ { 3, 7495, 343, 27, 2, UNI_CCC__12 } /* canonicalcombiningclass=ccc12 */,
+ { 12, 30, 1561, 1, 2, UNI_N } /* isn */,
+ { 1, 4360, 2991, 10, 2, UNI_LB__QU } /* linebreak=qu */,
+ { 1, 1102, 1133, 4, 4, UNI_VITH } /* scx=vith */,
+ { 0, 3490, 0, 12, 0, UNI_INCYRILLIC } /* blk=cyrillic */,
+ { 2, 1853, 298, 9, 2, UNI_SYLO } /* sylotinagri */,
+ { 0, 2232, 2107, 4, 8, UNI_NV__17_SLASH_2 } /* nv=8.500e+00 */,
+ { 34, 2732, 5676, 5, 18, UNI_ANCIENTGREEKNUMBERS } /* blk=ancientgreeknumbers */,
+ { 4, 6165, 6154, 3, 9, UNI_XSUX } /* sc=cuneiform */,
+ { 0, 4424, 1635, 17, 10, UNI_WARA } /* scriptextensions=warangciti */,
+ { 0, 2302, 0, 3, 0, UNI_IDC } /* idc */,
+ { 0, 1667, 6510, 4, 24, UNI_HIGHPUSURROGATES } /* blk=highprivateusesurrogates */,
+ { 2, 6866, 585, 24, 2, UNI_COMPEX } /* fullcompositionexclusion=t */,
+ { 0, 461, 1082, 2, 4, UNI_XPOSIXWORD } /* isword */,
+ { 4, 1823, 663, 7, 4, UNI_SC__LIMB } /* script=limb */,
+ { 0, 823, 585, 4, 2, UNI_DASH } /* dash=t */,
+ { 0, 461, 261, 2, 5, UNI_CWKCF } /* iscwkcf */,
+ { 1, 2232, 1805, 4, 4, UNI_NV__80000 } /* nv=80000 */,
+ { 1, 1667, 7796, 4, 29, UNI_ENCLOSEDIDEOGRAPHICSUP } /* blk=enclosedideographicsupplement */,
+ { 4, 1102, 991, 4, 4, UNI_HATR } /* scx=hatr */,
+ { 4, 2665, 1104, 12, 3, UNI_PATSYN } /* patternsyntax=t */,
+ { 0, 1243, 4504, 4, 16, UNI_LATINEXTB } /* block=latinextendedb */,
+ { 0, 2685, 2083, 4, 2, UNI_IN__5_DOT_1 } /* in=5.1 */,
+ { 0, 4360, 2589, 10, 10, UNI_LB__BA } /* linebreak=breakafter */,
+ { 0, 4519, 3642, 16, 7, UNI_CYRILLICEXTD } /* block=cyrillicextendedd */,
+ { 0, 1102, 458, 4, 4, UNI_QAAI } /* scx=qaai */,
+ { 0, 1823, 983, 7, 8, UNI_SC__HIRA } /* script=hiragana */,
+ { 0, 1572, 0, 10, 0, UNI_XPEO } /* oldpersian */,
+ { 31, 1741, 1479, 6, 5, UNI_VERTSPACE } /* isvertspace */,
+ { 0, 309, 2335, 2, 13, UNI_BLOCKELEMENTS } /* inblockelements */,
+ { 9, 1667, 5031, 4, 14, UNI_INHANIFIROHINGYA } /* blk=hanifirohingya */,
+ { 7, 1823, 216, 7, 4, UNI_TOTO } /* script=toto */,
+ { 0, 2766, 8, 3, 2, UNI_PC } /* gc=pc */,
+ { 1, 4090, 0, 17, 0, UNI_INDICSIYAQNUMBERS } /* indicsiyaqnumbers */,
+ { 0, 2718, 3706, 3, 14, UNI_BC__NSM } /* bc=nonspacingmark */,
+ { 1, 1198, 6357, 5, 13, UNI_CJKCOMPAT } /* incjkcompatibility */,
+ { 2, 6816, 585, 25, 2, UNI_CWKCF } /* changeswhennfkccasefolded=t */,
+ { 0, 4424, 164, 17, 4, UNI_PHNX } /* scriptextensions=phnx */,
+ { 0, 20, 585, 3, 5, UNI_XPOSIXXDIGIT } /* hex=true */,
+ { 1, 578, 1153, 5, 2, UNI_CCC__L } /* ccc=224 */,
+ { 0, 30, 1882, 1, 6, UNI_BIDIC } /* isbidic */,
+ { 2, 309, 6776, 2, 11, UNI_INMEETEIMAYEK } /* inmeeteimayek */,
+ { 16, 309, 1294, 2, 9, UNI_INNABATAEAN } /* innabataean */,
+ { 0, 7267, 248, 16, 5, UNI_XPOSIXCNTRL } /* generalcategory=cntrl */,
+ { 1, 6866, 934, 24, 6, -UNI_COMPEX } /* fullcompositionexclusion=false */,
+ { 9, 461, 4683, 2, 16, UNI_PF } /* isfinalpunctuation */,
+ { 4, 4845, 5671, 16, 4, -UNI__PERL_PATWS } /* patternwhitespace=no */,
+ { 8, 2018, 2720, 11, 2, UNI_JT__R } /* joiningtype=r */,
+ { 0, 6165, 3908, 3, 6, UNI_TANG } /* sc=tangut */,
+ { 2, 4360, 928, 9, 3, UNI_LB__OP } /* linebreak=op */,
+ { 1, 2536, 5084, 3, 6, UNI_JG__YUDHHE } /* jg=yudhhe */,
+ { 0, 461, 6677, 2, 14, UNI_LM } /* ismodifierletter */,
+ { 3, 2665, 0, 13, 0, UNI_PATSYN } /* patternsyntax */,
+ { 4, 663, 0, 5, 0, UNI_LIMB } /* limbu */,
+ { 0, 5065, 4756, 13, 5, UNI_JG__MANICHAEANZAYIN } /* jg=manichaeanzayin */,
+ { 33, 1102, 746, 4, 4, UNI_MARC } /* scx=marc */,
+ { 0, 3677, 4659, 7, 9, UNI_LATINEXTC } /* islatinextendedc */,
+ { 0, 887, 549, 5, 3, UNI_AGE__14 } /* age=14.0 */,
+ { 0, 1667, 5274, 4, 18, UNI_HALFMARKS } /* blk=combininghalfmarks */,
+ { 1, 2503, 599, 5, 3, -UNI_JOINC } /* joinc=no */,
+ { 11, 1102, 333, 4, 4, UNI_CARI } /* scx=cari */,
+ { 0, 2302, 599, 3, 3, -UNI_IDC } /* idc=no */,
+ { 4, 2930, 2908, 3, 11, UNI_JT__C } /* jt=joincausing */,
+ { 1, 7274, 252, 9, 2, UNI_CASEDLETTER } /* category=lc */,
+ { 16, 6090, 1235, 7, 6, UNI_INMULTANI } /* block=multani */,
+ { 35, 7752, 4751, 23, 5, UNI_JG__MANICHAEANSADHE } /* joininggroup=manichaeansadhe */,
+ { 6, 2280, 549, 10, 3, UNI_IN__4 } /* presentin=4.0 */,
+ { 1, 1823, 688, 7, 5, UNI_BATK } /* script=batak */,
+ { 3, 2536, 118, 3, 3, UNI_JG__DAL } /* jg=dal */,
+ { 9, 30, 3435, 1, 16, UNI_SARB } /* inoldsoutharabian */,
+ { 0, 7591, 3634, 3, 2, UNI_LB__NL } /* lb=nl */,
+ { 1, 2324, 1003, 6, 6, UNI_INLEPCHA } /* block=lepcha */,
+ { 14, 510, 346, 4, 1, UNI_NV__38 } /* nv=38 */,
+ { 0, 7011, 8648, 24, 10, UNI_CCC__AR } /* canonicalcombiningclass=aboveright */,
+ { 0, 1272, 3938, 3, 16, UNI_UCAS } /* iscanadiansyllabics */,
+ { 11, 2536, 706, 3, 4, UNI_JG__SEEN } /* jg=seen */,
+ { 0, 533, 325, 3, 2, UNI_SB__UP } /* sb=up */,
+ { 2, 7591, 700, 3, 2, UNI_EMOD } /* lb=em */,
+ { 0, 5799, 8386, 5, 21, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* insupsymbolsandpictographs */,
+ { 19, 4, 352, 2, 3, UNI_LOE } /* loe=y */,
+ { 10, 2324, 6576, 7, 21, UNI_INDICNUMBERFORMS } /* block=commonindicnumberforms */,
+ { 35, 2432, 747, 3, 6, UNI_INMARCHEN } /* inmarchen */,
+ { 7, 1823, 188, 7, 4, UNI_SGNW } /* script=sgnw */,
+ { 1, 10, 2422, 1, 10, UNI_MISCSYMBOLS } /* miscsymbols */,
+ { 55, 1906, 1544, 5, 9, UNI_INKHAROSHTHI } /* blk=kharoshthi */,
+ { 1, 461, 474, 2, 3, UNI_VAI } /* isvai */,
+ { 20, 461, 6464, 2, 23, UNI_SHORTHANDFORMATCONTROLS } /* isshorthandformatcontrols */,
+ { 2, 533, 1612, 3, 2, UNI_LB__LF } /* sb=lf */,
+ { 0, 1102, 1098, 4, 4, UNI_NSHU } /* scx=nshu */,
+ { 0, 1397, 353, 3, 4, UNI_IDS } /* ids=yes */,
+ { 36, 7591, 53, 3, 2, UNI_LB__NS } /* lb=ns */,
+ { 0, 7274, 1478, 9, 2, UNI_ZS } /* category=zs */,
+ { 0, 32, 599, 2, 3, -UNI_VS } /* vs=no */,
+ { 0, 271, 535, 2, 2, UNI_S } /* gc=s */,
+ { 0, 7084, 1505, 8, 4, UNI_ARABICEXTA } /* inarabicexta */,
+ { 0, 4584, 0, 18, 0, UNI_IDST } /* idstrinaryoperator */,
+ { 4, 1823, 3505, 6, 5, UNI_ETHI } /* script=ethi */,
+ { 4, 7274, 2004, 9, 2, UNI_PO } /* category=po */,
+ { 17, 192, 18, 3, 1, UNI_TAGB } /* tagb */,
+ { 2, 2536, 1041, 3, 5, UNI_JG__GAMAL } /* jg=gamal */,
+ { 0, 78, 0, 4, 0, UNI_DSRT } /* dsrt */,
+ { 39, 4970, 353, 13, 4, UNI_EMOD } /* emojimodifier=yes */,
+ { 1, 339, 3405, 4, 2, UNI_CCC__36 } /* ccc=36 */,
+ { 6, 2525, 1942, 6, 5, UNI_XPOSIXGRAPH } /* xposixgraph */,
+ { 0, 1033, 0, 4, 0, UNI_JAMO } /* jamo */,
+ { 0, 4525, 192, 10, 2, UNI_CYRILLICEXTA } /* cyrillicexta */,
+ { 20, 1667, 854, 4, 7, UNI_INTAIVIET } /* blk=taiviet */,
+ { 0, 1396, 934, 8, 2, -UNI_XIDS } /* xidstart=f */,
+ { 1, 1823, 102, 7, 4, UNI_HMNG } /* script=hmng */,
+ { 0, 461, 3663, 2, 10, UNI_DEVA } /* isdevanagari */,
+ { 0, 1728, 3790, 5, 5, UNI_ARABICMATH } /* arabicmath */,
+ { 1, 876, 585, 4, 2, UNI_IDEO } /* ideo=t */,
+ { 4, 7011, 2165, 25, 2, UNI_CCC__DB } /* canonicalcombiningclass=233 */,
+ { 1, 461, 333, 2, 4, UNI_CARI } /* iscari */,
+ { 1, 3177, 140, 15, 2, UNI_EA__NA } /* eastasianwidth=na */,
+ { 1, 309, 4176, 2, 6, UNI_INHANGUL } /* inhangul */,
+ { 24, 739, 0, 7, 0, UNI_MAND } /* mandaic */,
+ { 1, 7889, 4218, 26, 4, UNI_CJKEXTH } /* cjkunifiedideographsextensionh */,
+ { 0, 2718, 0, 4, 0, UNI_BC__R } /* bc=r */,
+ { 0, 1065, 288, 4, 1, UNI_NV__13 } /* nv=13 */,
+ { 3, 4970, 584, 16, 6, UNI_EBASE } /* emojimodifierbase=true */,
+ { 26, 1198, 3163, 3, 14, UNI_CONTROLPICTURES } /* incontrolpictures */,
+ { 0, 2348, 352, 12, 3, UNI_CI } /* caseignorable=y */,
+ { 38, 4424, 6776, 17, 11, UNI_MTEI } /* scriptextensions=meeteimayek */,
+ { 2, 257, 353, 4, 2, UNI_CWCM } /* cwcm=y */,
+ { 0, 271, 599, 2, 3, UNI_NO } /* gc=no */,
+ { 12, 533, 1613, 3, 2, UNI_SB__FO } /* sb=fo */,
+ { 0, 6165, 847, 3, 7, UNI_LANA } /* sc=taitham */,
+ { 16, 2324, 1051, 6, 8, UNI_INMAHAJANI } /* block=mahajani */,
+ { 13, 4391, 520, 14, 1, UNI_NV__37 } /* numericvalue=37 */,
+ { 0, 53, 35, 1, 3, UNI_NBAT } /* nbat */,
+ { 1, 1823, 414, 7, 4, UNI_SC__HANO } /* script=hano */,
+ { 0, 4424, 1334, 17, 4, UNI_PERM } /* scriptextensions=perm */,
+ { 13, 4852, 5671, 9, 4, -UNI_XPOSIXSPACE } /* whitespace=no */,
+ { 0, 3204, 599, 14, 3, -UNI_GREXT } /* graphemeextend=no */,
+ { 4, 5156, 2487, 12, 7, UNI_WB__ML } /* wordbreak=midletter */,
+ { 1, 4424, 98, 17, 4, UNI_HLUW } /* scriptextensions=hluw */,
+ { 3, 2424, 0, 2, 0, UNI__PERL_SURROGATE } /* cs */,
+ { 0, 4360, 92, 12, 1, UNI_LB__ZWJ } /* linebreak=zwj */,
+ { 1, 6427, 710, 13, 4, UNI_JG__SHIN } /* joininggroup=shin */,
+ { 1, 3013, 353, 5, 4, UNI_EPRES } /* epres=yes */,
+ { 74, 1102, 810, 4, 4, UNI_SYRC } /* scx=syrc */,
+ { 0, 916, 5671, 4, 3, -UNI_EBASE } /* ebase=n */,
+ { 2, 461, 1227, 2, 4, UNI_MAKA } /* ismaka */,
+ { 0, 2, 5671, 1, 4, -UNI_CE } /* ce=no */,
+ { 1, 7267, 2424, 16, 2, UNI__PERL_SURROGATE } /* generalcategory=cs */,
+ { 0, 2832, 6193, 8, 5, UNI_CYRILLICSUP } /* iscyrillicsup */,
+ { 12, 6986, 0, 25, 0, UNI_SYMBOLSFORLEGACYCOMPUTING } /* symbolsforlegacycomputing */,
+ { 0, 4970, 353, 13, 2, UNI_EMOD } /* emojimodifier=y */,
+ { 9, 1397, 353, 4, 2, UNI_IDST } /* idst=y */,
+ { 14, 3391, 2657, 14, 8, UNI_NV__1_SLASH_5 } /* numericvalue=2.000e-01 */,
+ { 64, 2393, 0, 8, 0, UNI_CYRL } /* cyrillic */,
+ { 3, 2280, 0, 10, 0, UNI_in_values_index } /* presentin= */,
+ { 10, 2752, 934, 14, 6, -UNI_ECOMP } /* emojicomponent=false */,
+ { 7, 54, 3505, 2, 9, UNI_ETHI } /* sc=ethiopic */,
+ { 2, 916, 584, 4, 6, UNI_EBASE } /* ebase=true */,
+ { 34, 1391, 3463, 3, 12, UNI_WB__EB } /* wb=glueafterzwj */,
+ { 1, 1823, 1465, 7, 10, UNI_DIAK } /* script=divesakuru */,
+ { 0, 2393, 4511, 8, 9, UNI_CYRILLICEXTB } /* cyrillicextendedb */,
+ { 5, 4852, 584, 9, 3, UNI_XPOSIXSPACE } /* whitespace=t */,
+ { 13, 6427, 3726, 12, 14, UNI_JG__MALAYALAMNNNA } /* joininggroup=malayalamnnna */,
+ { 0, 7591, 279, 3, 2, UNI_GCB__L } /* lb=jl */,
+ { 4, 840, 0, 7, 0, UNI_TGLG } /* tagalog */,
+ { 0, 6165, 663, 3, 4, UNI_SC__LIMB } /* sc=limb */,
+ { 0, 609, 4369, 2, 3, UNI_LB__ZW } /* lb=zw */,
+ { 0, 7537, 599, 10, 2, -UNI_XPOSIXALPHA } /* alphabetic=n */,
+ { 0, 1823, 3505, 6, 9, UNI_ETHI } /* script=ethiopic */,
+ { 0, 1823, 1834, 7, 4, UNI_SORA } /* script=sora */,
+ { 2, 1543, 0, 10, 0, UNI_KHAR } /* kharoshthi */,
+ { 0, 20, 353, 3, 4, UNI_XPOSIXXDIGIT } /* hex=yes */,
+ { 0, 1823, 5353, 7, 20, UNI_PHLI } /* script=inscriptionalpahlavi */,
+ { 1, 1221, 5848, 6, 9, UNI_KANAEXTA } /* inkanaextendeda */,
+ { 0, 875, 353, 5, 2, UNI_UIDEO } /* uideo=y */,
+ { 0, 2852, 0, 4, 0, UNI_MAHJ } /* mahj */,
+ { 1, 3014, 392, 11, 2, UNI_IN__4_DOT_1 } /* presentin=v41 */,
+ { 3, 6450, 21, 14, 2, UNI_SB__EX } /* sentencebreak=ex */,
+ { 1, 7887, 4410, 28, 4, UNI_CJKEXTA } /* incjkunifiedideographsextensiona */,
+ { 0, 3817, 395, 15, 2, UNI_NV__1_SLASH_16 } /* numericvalue=1/16 */,
+ { 13, 5274, 5283, 9, 9, UNI_HALFMARKS } /* combininghalfmarks */,
+ { 0, 461, 51, 2, 4, UNI_CANS } /* iscans */,
+ { 0, 1823, 5067, 6, 11, UNI_SC__MANI } /* script=manichaean */,
+ { 2, 895, 1317, 5, 2, UNI_AGE__3_DOT_2 } /* age=v32 */,
+ { 0, 339, 8203, 4, 11, UNI_CCC__DB } /* ccc=doublebelow */,
+ { 1, 6427, 0, 23, 0, UNI_JG__AFRICANQAF } /* joininggroup=africanqaf */,
+ { 1, 7011, 3405, 24, 2, UNI_CCC__36 } /* canonicalcombiningclass=36 */,
+ { 0, 309, 7356, 2, 27, UNI_OCR } /* inopticalcharacterrecognition */,
+ { 12, 92, 643, 1, 3, UNI_JT__L } /* jt=l */,
+ { 0, 6165, 4896, 3, 5, UNI_BAMU } /* sc=bamum */,
+ { 0, 8246, 2720, 23, 6, UNI_INPC__RIGHT } /* indicpositionalcategory=right */,
+ { 1, 2988, 5164, 12, 3, UNI_NFCQC__M } /* nfcquickcheck=m */,
+ { 0, 5156, 21, 10, 2, UNI_WB__EX } /* wordbreak=ex */,
+ { 3, 3878, 0, 14, 0, UNI_NV__9 } /* numericvalue=9 */,
+ { 2, 1823, 148, 7, 4, UNI_SC__ORYA } /* script=orya */,
+ { 0, 1102, 4176, 4, 4, UNI_HANG } /* scx=hang */,
+ { 2, 6165, 4176, 3, 4, UNI_SC__HANG } /* sc=hang */,
+ { 0, 876, 585, 4, 5, UNI_IDEO } /* ideo=true */,
+ { 0, 1191, 0, 7, 0, UNI_BENG } /* bengali */,
+ { 0, 895, 1318, 5, 2, UNI_AGE__2 } /* age=v20 */,
+ { 0, 461, 1255, 2, 7, UNI_SIDD } /* issiddham */,
+ { 0, 2324, 2244, 6, 12, UNI_INOLDHUNGARIAN } /* block=oldhungarian */,
+ { 0, 7267, 1887, 16, 7, UNI_XPOSIXCNTRL } /* generalcategory=control */,
+ { 2, 4161, 599, 9, 3, -UNI_DIA } /* diacritic=no */,
+ { 0, 1397, 353, 7, 4, UNI_IDS } /* idstart=yes */,
+ { 36, 309, 317, 2, 5, UNI_INTAILE } /* intaile */,
+ { 19, 2324, 398, 6, 4, UNI_INMIAO } /* block=miao */,
+ { 1, 1823, 6185, 7, 4, UNI_SC__GLAG } /* script=glag */,
+ { 12, 1409, 1037, 5, 4, UNI_LATINEXTB } /* latinextb */,
+ { 0, 2411, 0, 8, 0, UNI_KANA } /* katakana */,
+ { 72, 2, 4076, 1, 13, UNI_SC } /* currencysymbol */,
+ { 2, 5637, 3472, 21, 3, UNI_LB__ZWJ } /* graphemeclusterbreak=zwj */,
+ { 3, 43, 0, 4, 0, UNI_BUHD } /* buhd */,
+ { 7, 7383, 7776, 10, 21, UNI_BC__PDI } /* bidiclass=popdirectionalisolate */,
+ { 4, 1102, 116, 4, 4, UNI_KNDA } /* scx=knda */,
+ { 0, 7356, 0, 27, 0, UNI_OCR } /* opticalcharacterrecognition */,
+ { 0, 1439, 1477, 3, 7, UNI_XPOSIXBLANK } /* horizspace */,
+ { 0, 30, 492, 1, 7, UNI_INKHOJKI } /* inkhojki */,
+ { 2, 1667, 7467, 4, 28, UNI_SUPPUAA } /* blk=supplementaryprivateuseareaa */,
+ { 1, 4584, 353, 18, 4, UNI_IDST } /* idstrinaryoperator=yes */,
+ { 0, 4360, 1771, 10, 8, UNI_LB__NL } /* linebreak=nextline */,
+ { 6, 7011, 5016, 24, 2, UNI_CCC__8 } /* canonicalcombiningclass=kv */,
+ { 4, 461, 1396, 2, 8, UNI_XIDS } /* isxidstart */,
+ { 6, 3014, 288, 12, 2, UNI_IN__13 } /* presentin=v130 */,
+ { 15, 3421, 0, 15, 0, UNI_NARB } /* oldnortharabian */,
+ { 1, 895, 2093, 5, 2, UNI_AGE__5 } /* age=v50 */,
+ { 9, 7011, 346, 25, 1, UNI_CCC__28 } /* canonicalcombiningclass=28 */,
+ { 0, 7214, 1316, 25, 2, UNI_CCC__103 } /* canonicalcombiningclass=103 */,
+ { 0, 3130, 5863, 9, 13, UNI_GEORGIANSUP } /* blk=georgiansupplement */,
+ { 1, 461, 1478, 2, 2, UNI_ZS } /* iszs */,
+ { 6, 1272, 6357, 5, 13, UNI_CJKCOMPAT } /* iscjkcompatibility */,
+ { 1, 2766, 2621, 3, 9, UNI__PERL_SURROGATE } /* gc=surrogate */,
+ { 3, 1734, 819, 3, 6, UNI_SHRD } /* issharada */,
+ { 4, 3021, 343, 4, 3, UNI_IN__12_DOT_1 } /* in=v121 */,
+ { 24, 4502, 5635, 15, 3, UNI_LATINEXTG } /* blk=latinextendedg */,
+ { 9, 1823, 283, 7, 5, UNI_NSHU } /* script=nushu */,
+ { 0, 271, 898, 3, 2, UNI_GCB__V } /* gcb=v */,
+ { 28, 2324, 2009, 6, 6, UNI_INSYRIAC } /* block=syriac */,
+ { 0, 597, 1715, 3, 8, UNI_DT__ISO } /* dt=isolated */,
+ { 19, 2324, 4926, 6, 15, UNI_TAMILSUP } /* block=tamilsupplement */,
+ { 4, 461, 1404, 2, 10, UNI_ASCII } /* isbasiclatin */,
+ { 3, 4424, 909, 17, 4, UNI_BALI } /* scriptextensions=bali */,
+ { 4, 2324, 3611, 9, 6, UNI_CJKCOMPAT } /* block=cjkcompat */,
+ { 0, 461, 1191, 2, 7, UNI_BENG } /* isbengali */,
+ { 3, 6427, 3289, 13, 12, UNI_JG__FINALSEMKATH } /* joininggroup=finalsemkath */,
+ { 4, 2324, 5857, 6, 9, UNI_INMONGOLIAN } /* block=mongolian */,
+ { 0, 8601, 1609, 7, 9, UNI_SMALLFORMS } /* block=smallforms */,
+ { 2, 7198, 7304, 5, 24, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* blk=symbolsandpictographsexta */,
+ { 6, 6165, 909, 3, 4, UNI_BALI } /* sc=bali */,
+ { 0, 4424, 658, 17, 5, UNI_DOGR } /* scriptextensions=dogra */,
+ { 5, 6165, 1543, 3, 10, UNI_KHAR } /* sc=kharoshthi */,
+ { 9, 423, 5676, 3, 18, UNI_ANCIENTGREEKNUMBERS } /* inancientgreeknumbers */,
+ { 25, 1102, 991, 4, 6, UNI_HATR } /* scx=hatran */,
+ { 1, 20, 934, 3, 2, -UNI_XPOSIXXDIGIT } /* hex=f */,
+ { 0, 6165, 746, 3, 7, UNI_MARC } /* sc=marchen */,
+ { 0, 1397, 353, 7, 2, UNI_IDS } /* idstart=y */,
+ { 12, 7804, 6621, 10, 3, UNI_IDEO } /* ideographic=t */,
+ { 2, 1671, 131, 6, 1, UNI_CJKEXTF } /* cjkextf */,
+ { 0, 552, 2222, 3, 4, UNI_AGE__6_DOT_2 } /* age=6.2 */,
+ { 1, 461, 446, 2, 4, UNI_PHLI } /* isphli */,
+ { 2, 3724, 720, 12, 3, UNI_JG__MALAYALAMNNA } /* jg=malayalamnna */,
+ { 5, 4424, 4651, 17, 8, UNI_BOPO } /* scriptextensions=bopomofo */,
+ { 0, 2432, 1037, 9, 4, UNI_MYANMAREXTB } /* inmyanmarextb */,
+ { 0, 292, 289, 3, 1, UNI_NV__0 } /* nv=0 */,
+ { 0, 5156, 1869, 10, 3, UNI_WB__EB } /* wordbreak=gaz */,
+ { 2, 6735, 3720, 22, 4, UNI_JG__MALAYALAMLLLA } /* joininggroup=malayalamllla */,
+ { 12, 461, 1051, 2, 8, UNI_MAHJ } /* ismahajani */,
+ { 0, 309, 2786, 2, 14, UNI_HIGHSURROGATES } /* inhighsurrogates */,
+ { 5, 3391, 2165, 13, 2, UNI_NV__33 } /* numericvalue=33 */,
+ { 2, 30, 4190, 1, 16, UNI_LOWERCASELETTER } /* islowercaseletter */,
+ { 0, 7537, 585, 10, 5, UNI_XPOSIXALPHA } /* alphabetic=true */,
+ { 18, 1667, 1582, 4, 10, UNI_INPHOENICIAN } /* blk=phoenician */,
+ { 0, 7383, 0, 10, 0, UNI_bc_values_index } /* bidiclass= */,
+ { 0, 2832, 1674, 10, 4, UNI_CYRILLICEXTD } /* iscyrillicextd */,
+ { 11, 3863, 2107, 14, 8, UNI_NV__17_SLASH_2 } /* numericvalue=8.500e+00 */,
+ { 42, 2324, 1978, 6, 7, UNI_INSOGDIAN } /* block=sogdian */,
+ { 2, 1883, 934, 5, 6, -UNI_BIDIC } /* bidic=false */,
+ { 14, 1484, 0, 8, 0, UNI_BUGI } /* buginese */,
+ { 3, 309, 1543, 2, 10, UNI_INKHAROSHTHI } /* inkharoshthi */,
+ { 7, 4424, 4926, 17, 5, UNI_TAML } /* scriptextensions=tamil */,
+ { 32, 1117, 0, 8, 0, UNI_TAGB } /* tagbanwa */,
+ { 0, 6165, 15, 3, 4, UNI_AGHB } /* sc=aghb */,
+ { 4, 3391, 1067, 12, 4, UNI_NV__1_SLASH_3 } /* numericvalue=1/3 */,
+ { 5, 3633, 1037, 7, 4, UNI_LATINEXTB } /* inlatinextb */,
+ { 8, 673, 0, 5, 0, UNI_OSGE } /* osage */,
+ { 1, 2514, 2422, 3, 10, UNI_MISCSYMBOLS } /* ismiscsymbols */,
+ { 0, 461, 1358, 2, 9, UNI_PALM } /* ispalmyrene */,
+ { 3, 339, 5016, 4, 2, UNI_CCC__8 } /* ccc=kv */,
+ { 1, 1667, 4651, 4, 11, UNI_BOPOMOFOEXT } /* blk=bopomofoext */,
+ { 0, 6165, 1340, 3, 9, UNI_ORKH } /* sc=oldturkic */,
+ { 0, 2280, 140, 10, 2, UNI_IN__NA } /* presentin=na */,
+ { 0, 461, 1414, 2, 10, UNI_BOXDRAWING } /* isboxdrawing */,
+ { 2, 298, 0, 2, 0, UNI_RI } /* ri */,
+ { 0, 2523, 4191, 8, 5, UNI_XPOSIXLOWER } /* isxposixlower */,
+ { 8, 461, 825, 2, 7, UNI_SHAW } /* isshavian */,
+ { 6, 4191, 933, 8, 7, -UNI_XPOSIXLOWER } /* lowercase=false */,
+ { 1, 461, 3569, 4, 14, UNI_HALFANDFULLFORMS } /* ishalfandfullforms */,
+ { 3, 3093, 353, 13, 4, UNI_POSIXXDIGIT } /* asciihexdigit=yes */,
+ { 0, 2324, 6776, 6, 11, UNI_INMEETEIMAYEK } /* block=meeteimayek */,
+ { 24, 461, 4060, 2, 4, UNI_BRAI } /* isbrai */,
+ { 1, 3696, 837, 4, 3, UNI_SUPPUAA } /* suppuaa */,
+ { 1, 2348, 352, 12, 5, UNI_CI } /* caseignorable=yes */,
+ { 0, 4424, 739, 17, 7, UNI_MAND } /* scriptextensions=mandaic */,
+ { 7, 20, 1104, 2, 2, UNI_hex_values_index } /* hex= */,
+ { 0, 1667, 5283, 4, 9, UNI_HALFMARKS } /* blk=halfmarks */,
+ { 0, 6163, 6934, 14, 11, UNI_INSC__CONSONANTWITHSTACKER } /* insc=consonantwithstacker */,
+ { 0, 3276, 0, 13, 0, UNI_ME } /* enclosingmark */,
+ { 35, 461, 1475, 3, 9, UNI_XPOSIXBLANK } /* ishorizspace */,
+ { 2, 517, 1805, 4, 5, UNI_NV__700000 } /* nv=700000 */,
+ { 2, 533, 592, 3, 2, UNI_SB__SE } /* sb=se */,
+ { 23, 6450, 5090, 13, 3, UNI_SB__CL } /* sentencebreak=cl */,
+ { 0, 2324, 1205, 6, 7, UNI_INGRANTHA } /* block=grantha */,
+ { 2, 5216, 4533, 11, 4, UNI_LATINEXTC } /* block=latinextc */,
+ { 0, 578, 346, 6, 1, UNI_CCC__AL } /* ccc=228 */,
+ { 0, 4424, 1248, 17, 7, UNI_PHAG } /* scriptextensions=phagspa */,
+ { 2, 3791, 934, 4, 6, -UNI_MATH } /* math=false */,
+ { 3, 3093, 0, 5, 0, UNI_ASCII } /* ascii */,
+ { 0, 461, 6351, 2, 23, UNI_COMPATJAMO } /* ishangulcompatibilityjamo */,
+ { 0, 2468, 0, 13, 0, UNI_IPAEXT } /* ipaextensions */,
+ { 1, 2232, 1314, 4, 2, UNI_NV__800 } /* nv=800 */,
+ { 8, 2324, 1448, 9, 7, UNI_CJKSTROKES } /* block=cjkstrokes */,
+ { 0, 5065, 3894, 12, 4, UNI_JG__MANICHAEANTEN } /* jg=manichaeanten */,
+ { 49, 461, 244, 2, 4, UNI_ZZZZ } /* iszzzz */,
+ { 10, 1823, 422, 7, 4, UNI_SC__LINA } /* script=lina */,
+ { 0, 552, 2360, 4, 10, UNI_IN__NA } /* age=unassigned */,
+ { 34, 1618, 585, 10, 2, UNI_SD } /* softdotted=t */,
+ { 1, 1667, 5958, 4, 21, UNI_SINHALAARCHAICNUMBERS } /* blk=sinhalaarchaicnumbers */,
+ { 0, 3878, 1314, 14, 3, UNI_NV__9000 } /* numericvalue=9000 */,
+ { 1, 597, 7011, 3, 9, UNI_DT__CAN } /* dt=canonical */,
+ { 0, 1667, 634, 4, 7, UNI_INHANUNOO } /* blk=hanunoo */,
+ { 1, 3130, 976, 5, 7, UNI_INGURMUKHI } /* blk=gurmukhi */,
+ { 0, 6618, 8507, 4, 7, UNI_INPC__BOTTOM } /* inpc=bottom */,
+ { 21, 1667, 3228, 4, 15, UNI_INIMPERIALARAMAIC } /* blk=imperialaramaic */,
+ { 0, 2732, 4511, 10, 9, UNI_ARABICEXTB } /* blk=arabicextendedb */,
+ { 4, 5939, 585, 5, 5, UNI__PERL_NCHAR } /* nchar=true */,
+ { 12, 3436, 0, 15, 0, UNI_SARB } /* oldsoutharabian */,
+ { 5, 309, 1205, 2, 7, UNI_INGRANTHA } /* ingrantha */,
+ { 2, 309, 7564, 2, 27, UNI_ANCIENTGREEKMUSIC } /* inancientgreekmusicalnotation */,
+ { 1, 3677, 5635, 13, 3, UNI_LATINEXTG } /* islatinextendedg */,
+ { 0, 106, 0, 1, 0, UNI_Z } /* z */,
+ { 0, 2060, 1175, 4, 3, -UNI_XPOSIXALPHA } /* alpha=n */,
+ { 0, 1790, 599, 5, 3, UNI_COMPEX } /* nfcqc=no */,
+ { 7, 7198, 5813, 7, 7, UNI_SUPARROWSB } /* blk=suparrowsb */,
+ { 0, 5637, 2768, 20, 6, UNI_GCB__XX } /* graphemeclusterbreak=other */,
+ { 1, 4424, 4951, 17, 19, UNI_EGYP } /* scriptextensions=egyptianhieroglyphs */,
+ { 3, 5156, 1612, 10, 2, UNI_LB__LF } /* wordbreak=lf */,
+ { 1, 1635, 0, 10, 0, UNI_WARA } /* warangciti */,
+ { 2, 3724, 529, 12, 2, UNI_JG__MALAYALAMJA } /* jg=malayalamja */,
+ { 1, 2525, 248, 6, 5, UNI_XPOSIXCNTRL } /* xposixcntrl */,
+ { 1, 4424, 2441, 17, 11, UNI_NAND } /* scriptextensions=nandinagari */,
+ { 3, 1823, 357, 7, 6, UNI_SC__CAKM } /* script=chakma */,
+ { 97, 2966, 7304, 3, 24, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* insymbolsandpictographsexta */,
+ { 2, 5979, 1343, 3, 2, UNI_VO__TU } /* vo=tu */,
+ { 0, 7011, 395, 25, 2, UNI_CCC__216 } /* canonicalcombiningclass=216 */,
+ { 33, 3407, 1317, 14, 5, UNI_NV__432000 } /* numericvalue=432000 */,
+ { 17, 2002, 4150, 7, 5, UNI_POSIXPUNCT } /* isposixpunct */,
+ { 76, 597, 2692, 3, 8, UNI_DT__VERT } /* dt=vertical */,
+ { 14, 309, 5391, 2, 11, UNI_CHEROKEESUP } /* incherokeesup */,
+ { 3, 6165, 5876, 3, 9, UNI_SUND } /* sc=sundanese */,
+ { 1, 5658, 7073, 15, 11, UNI_IDENTIFIERTYPE__UNCOMMONUSE } /* identifiertype=uncommonuse */,
+ { 1, 32, 0, 2, 0, UNI_VS } /* vs */,
+ { 0, 30, 1561, 1, 11, UNI_NAGM } /* isnagmundari */,
+ { 1, 1823, 94, 7, 4, UNI_SC__GURU } /* script=guru */,
+ { 2, 2324, 683, 6, 5, UNI_INTAKRI } /* block=takri */,
+ { 0, 2259, 1126, 3, 7, UNI_TFNG } /* istifinagh */,
+ { 0, 1667, 951, 4, 8, UNI_INDUPLOYAN } /* blk=duployan */,
+ { 2, 4424, 3228, 17, 15, UNI_ARMI } /* scriptextensions=imperialaramaic */,
+ { 1, 3677, 4344, 3, 16, UNI_LETTERLIKESYMBOLS } /* isletterlikesymbols */,
+ { 0, 2503, 599, 11, 2, -UNI_JOINC } /* joincontrol=n */,
+ { 1, 4043, 599, 17, 3, -UNI_IDSB } /* idsbinaryoperator=no */,
+ { 0, 7011, 289, 24, 1, UNI_CCC__0 } /* canonicalcombiningclass=0 */,
+ { 2, 605, 341, 2, 2, UNI_idc_values_index } /* idc= */,
+ { 40, 285, 452, 2, 2, UNI_SHRD } /* shrd */,
+ { 5, 1102, 369, 4, 6, UNI_GOTH } /* scx=gothic */,
+ { 1, 1667, 3583, 4, 16, UNI_HIGHPUSURROGATES } /* blk=highpusurrogates */,
+ { 8, 7274, 3026, 9, 2, UNI_PS } /* category=ps */,
+ { 15, 1883, 353, 5, 4, UNI_BIDIC } /* bidic=yes */,
+ { 2, 7011, 3971, 24, 13, UNI_CCC__IS } /* canonicalcombiningclass=iotasubscript */,
+ { 2, 2324, 5185, 6, 20, UNI_INANATOLIANHIEROGLYPHS } /* block=anatolianhieroglyphs */,
+ { 0, 916, 352, 4, 5, UNI_EBASE } /* ebase=yes */,
+ { 2, 6165, 1635, 3, 10, UNI_WARA } /* sc=warangciti */,
+ { 0, 2180, 346, 4, 1, UNI_NV__48 } /* nv=48 */,
+ { 6, 2401, 1037, 10, 4, UNI_ETHIOPICEXTB } /* inethiopicextb */,
+ { 3, 309, 4131, 2, 8, UNI_VEDICEXT } /* invedicext */,
+ { 7, 30, 938, 1, 6, UNI_ECOMP } /* isecomp */,
+ { 13, 339, 1317, 4, 2, UNI_CCC__32 } /* ccc=32 */,
+ { 11, 1823, 228, 7, 4, UNI_XSUX } /* script=xsux */,
+ { 0, 252, 0, 2, 0, UNI_CASEDLETTER } /* lc */,
+ { 0, 16, 4982, 1, 5, UNI_GRBASE } /* grbase */,
+ { 0, 4502, 1505, 9, 4, UNI_LATINEXTA } /* blk=latinexta */,
+ { 11, 876, 353, 4, 4, UNI_IDEO } /* ideo=yes */,
+ { 0, 1065, 520, 4, 1, UNI_NV__17 } /* nv=17 */,
+ { 32, 5460, 585, 19, 2, UNI_TERM } /* terminalpunctuation=t */,
+ { 0, 1667, 7564, 4, 17, UNI_ANCIENTGREEKMUSIC } /* blk=ancientgreekmusic */,
+ { 4, 5616, 353, 21, 2, UNI_CWU } /* changeswhenuppercased=y */,
+ { 0, 339, 1318, 4, 2, UNI_CCC__20 } /* ccc=20 */,
+ { 0, 6165, 6185, 3, 4, UNI_SC__GLAG } /* sc=glag */,
+ { 2, 6165, 90, 3, 4, UNI_SC__GUJR } /* sc=gujr */,
+ { 2, 309, 825, 2, 7, UNI_SHAW } /* inshavian */,
+ { 0, 4360, 6, 10, 2, UNI_LB__CR } /* linebreak=cr */,
+ { 17, 6427, 706, 13, 4, UNI_JG__SEEN } /* joininggroup=seen */,
+ { 2, 6163, 5731, 6, 15, UNI_INSC__CANTILLATIONMARK } /* insc=cantillationmark */,
+ { 0, 6165, 917, 3, 4, UNI_BASS } /* sc=bass */,
+ { 0, 6165, 438, 3, 4, UNI_OLCK } /* sc=olck */,
+ { 1, 5205, 2631, 5, 12, UNI_MAYANNUMERALS } /* blk=mayannumerals */,
+ { 0, 3514, 0, 12, 0, UNI_INARABIC } /* block=arabic */,
+ { 1, 3908, 0, 6, 0, UNI_TANG } /* tangut */,
+ { 0, 309, 4896, 2, 8, UNI_BAMUMSUP } /* inbamumsup */,
+ { 0, 4569, 585, 5, 5, UNI_XPOSIXUPPER } /* upper=true */,
+ { 2, 339, 5523, 4, 9, UNI_CCC__BL } /* ccc=belowleft */,
+ { 2, 1102, 430, 4, 3, UNI_NKO } /* scx=nko */,
+ { 2, 3817, 4404, 14, 3, UNI_NV__13_SLASH_2 } /* numericvalue=13/2 */,
+ { 12, 253, 934, 4, 2, -UNI_CWCF } /* cwcf=f */,
+ { 0, 5205, 7825, 5, 30, UNI_MATHALPHANUM } /* blk=mathematicalalphanumericsymbols */,
+ { 0, 6165, 5031, 3, 14, UNI_SC__ROHG } /* sc=hanifirohingya */,
+ { 1, 1667, 1117, 4, 8, UNI_INTAGBANWA } /* blk=tagbanwa */,
+ { 6, 4970, 934, 13, 2, -UNI_EMOD } /* emojimodifier=f */,
+ { 0, 1823, 470, 7, 4, UNI_TNSA } /* script=tnsa */,
+ { 4, 309, 2182, 2, 2, UNI_IN__4 } /* in=4 */,
+ { 8, 517, 3846, 4, 2, UNI_NV__7_SLASH_8 } /* nv=7/8 */,
+ { 0, 1102, 1255, 4, 7, UNI_SIDD } /* scx=siddham */,
+ { 4, 3514, 4987, 7, 16, UNI_ALCHEMICAL } /* block=alchemicalsymbols */,
+ { 4, 309, 7796, 2, 22, UNI_ENCLOSEDIDEOGRAPHICSUP } /* inenclosedideographicsup */,
+ { 1, 1823, 634, 7, 7, UNI_SC__HANO } /* script=hanunoo */,
+ { 0, 5895, 6965, 5, 22, UNI_SUPERANDSUB } /* issuperscriptsandsubscripts */,
+ { 27, 461, 1340, 2, 9, UNI_ORKH } /* isoldturkic */,
+ { 2, 2434, 1505, 7, 4, UNI_MYANMAREXTA } /* myanmarexta */,
+ { 3, 1102, 1592, 4, 4, UNI_SAUR } /* scx=saur */,
+ { 0, 6165, 1003, 3, 4, UNI_LEPC } /* sc=lepc */,
+ { 3, 6163, 3289, 14, 5, UNI_INSC__CONSONANTFINAL } /* insc=consonantfinal */,
+ { 3, 1726, 1141, 8, 3, UNI_ARABICPFA } /* isarabicpfa */,
+ { 2, 1667, 426, 4, 3, UNI_INMRO } /* blk=mro */,
+ { 2, 6165, 4651, 3, 8, UNI_SC__BOPO } /* sc=bopomofo */,
+ { 36, 4424, 975, 17, 8, UNI_GURU } /* scriptextensions=gurmukhi */,
+ { 1, 8538, 5981, 19, 19, UNI_VO__TR } /* verticalorientation=transformedrotated */,
+ { 0, 10, 2643, 1, 12, UNI_MISCTECHNICAL } /* misctechnical */,
+ { 2, 8343, 6923, 31, 11, UNI_INSC__CONSONANTPLACEHOLDER } /* indicsyllabiccategory=consonantplaceholder */,
+ { 2, 6816, 353, 25, 4, UNI_CWKCF } /* changeswhennfkccasefolded=yes */,
+ { 20, 30, 2255, 1, 9, UNI_PHAISTOS } /* inphaistos */,
+ { 40, 1102, 220, 4, 4, UNI_WCHO } /* scx=wcho */,
+ { 5, 2287, 2083, 4, 2, UNI_IN__1_DOT_1 } /* in=1.1 */,
+ { 16, 339, 5515, 4, 13, UNI_CCC__202 } /* ccc=attachedbelow */,
+ { 6, 7383, 2424, 10, 2, UNI_BC__CS } /* bidiclass=cs */,
+ { 5, 1530, 324, 6, 3, UNI_KANASUP } /* iskanasup */,
+ { 0, 1102, 55, 4, 4, UNI_CHAM } /* scx=cham */,
+ { 1, 7591, 119, 3, 2, UNI_LB__AL } /* lb=al */,
+ { 18, 5255, 934, 20, 2, -UNI_EXTPICT } /* extendedpictographic=f */,
+ { 2, 552, 140, 4, 2, UNI_IN__NA } /* age=na */,
+ { 28, 1667, 6581, 4, 16, UNI_INDICNUMBERFORMS } /* blk=indicnumberforms */,
+ { 72, 2494, 958, 9, 4, UNI_GEORGIANEXT } /* isgeorgianext */,
+ { 0, 4424, 868, 17, 4, UNI_TIRH } /* scriptextensions=tirh */,
+ { 1, 6062, 7915, 7, 20, UNI_ENCLOSEDALPHANUM } /* block=enclosedalphanumerics */,
+ { 3, 4424, 4271, 17, 17, UNI_KITS } /* scriptextensions=khitansmallscript */,
+ { 1, 4424, 5958, 17, 4, UNI_SINH } /* scriptextensions=sinh */,
+ { 8, 309, 4926, 2, 15, UNI_TAMILSUP } /* intamilsupplement */,
+ { 80, 833, 934, 4, 6, -UNI_TERM } /* term=false */,
+ { 0, 1396, 585, 4, 5, UNI_XIDS } /* xids=true */,
+ { 3, 4424, 86, 17, 4, UNI_GREK } /* scriptextensions=grek */,
+ { 2, 224, 1660, 3, 7, UNI_XPOSIXSPACE } /* xperlspace */,
+ { 1, 3391, 1071, 13, 4, UNI_NV__1_SLASH_12 } /* numericvalue=1/12 */,
+ { 0, 1102, 854, 4, 7, UNI_TAVT } /* scx=taiviet */,
+ { 2, 7011, 1317, 24, 2, UNI_CCC__32 } /* canonicalcombiningclass=32 */,
+ { 34, 1823, 35, 7, 4, UNI_BATK } /* script=batk */,
+ { 0, 6165, 537, 3, 4, UNI_TANG } /* sc=tang */,
+ { 1, 5156, 65, 10, 2, UNI_WB__MN } /* wordbreak=mn */,
+ { 0, 4360, 2966, 10, 11, UNI_LB__IN } /* linebreak=inseparable */,
+ { 0, 54, 1829, 2, 5, UNI_SC__MLYM } /* sc=mlym */,
+ { 8, 1667, 3325, 4, 6, UNI_INHEBREW } /* blk=hebrew */,
+ { 0, 220, 0, 4, 0, UNI_WCHO } /* wcho */,
+ { 1, 461, 4536, 2, 18, UNI_COPTICEPACTNUMBERS } /* iscopticepactnumbers */,
+ { 2, 4424, 663, 17, 5, UNI_LIMB } /* scriptextensions=limbu */,
+ { 1, 33, 189, 1, 3, UNI_SGNW } /* sgnw */,
+ { 0, 3490, 6193, 10, 5, UNI_CYRILLICSUP } /* blk=cyrillicsup */,
+ { 0, 6163, 2823, 5, 9, UNI_INSC__NONJOINER } /* insc=nonjoiner */,
+ { 3, 309, 590, 2, 7, UNI_DSRT } /* indeseret */,
+ { 0, 1667, 4819, 4, 8, UNI_DINGBATS } /* blk=dingbats */,
+ { 0, 5156, 366, 10, 2, UNI_WB__SQ } /* wordbreak=sq */,
+ { 1, 6618, 5125, 12, 5, UNI_INPC__TOPANDBOTTOM } /* inpc=topandbottom */,
+ { 0, 3832, 0, 14, 0, UNI_NV__5 } /* numericvalue=5 */,
+ { 5, 6165, 746, 3, 4, UNI_MARC } /* sc=marc */,
+ { 1, 940, 599, 6, 3, -UNI_COMPEX } /* compex=no */,
+ { 0, 1823, 5391, 7, 8, UNI_CHER } /* script=cherokee */,
+ { 0, 1994, 934, 7, 6, -UNI_RADICAL } /* radical=false */,
+ { 1, 7274, 248, 9, 2, UNI_CN } /* category=cn */,
+ { 16, 30, 4190, 1, 3, UNI_LO } /* islo */,
+ { 1, 461, 3706, 2, 14, UNI_MN } /* isnonspacingmark */,
+ { 3, 7591, 1479, 3, 5, UNI_LB__SP } /* lb=space */,
+ { 0, 8246, 0, 24, 0, UNI_inpc_values_index } /* indicpositionalcategory= */,
+ { 0, 6450, 1613, 14, 2, UNI_SB__FO } /* sentencebreak=fo */,
+ { 4, 30, 3094, 1, 3, UNI_CI } /* isci */,
+ { 0, 2432, 5107, 3, 18, UNI_MODIFIERTONELETTERS } /* inmodifiertoneletters */,
+ { 0, 2494, 5863, 7, 6, UNI_GEORGIANSUP } /* isgeorgiansup */,
+ { 0, 608, 0, 4, 0, UNI_ELBA } /* elba */,
+ { 2, 7267, 1926, 16, 6, UNI_S } /* generalcategory=symbol */,
+ { 0, 3635, 204, 7, 2, UNI_LATINEXTF } /* latinextf */,
+ { 3, 683, 0, 5, 0, UNI_TAKR } /* takri */,
+ { 1, 339, 1316, 5, 2, UNI_CCC__103 } /* ccc=103 */,
+ { 1, 6427, 6215, 13, 9, UNI_JG__YEHBARREE } /* joininggroup=yehbarree */,
+ { 1, 6165, 446, 3, 4, UNI_PHLI } /* sc=phli */,
+ { 0, 309, 1509, 2, 8, UNI_INJAVANESE } /* injavanese */,
+ { 6, 1198, 377, 5, 4, UNI_CJKEXTH } /* incjkexth */,
+ { 5, 8246, 8507, 23, 7, UNI_INPC__BOTTOM } /* indicpositionalcategory=bottom */,
+ { 2, 1102, 216, 4, 4, UNI_TOTO } /* scx=toto */,
+ { 1, 1801, 0, 6, 0, UNI_NV__100 } /* nv=100 */,
+ { 0, 1272, 358, 3, 5, UNI_CAKM } /* ischakma */,
+ { 4, 1102, 868, 4, 4, UNI_TIRH } /* scx=tirh */,
+ { 16, 1823, 3325, 7, 4, UNI_HEBR } /* script=hebr */,
+ { 24, 7887, 0, 22, 0, UNI_CJK } /* incjkunifiedideographs */,
+ { 3, 461, 6581, 2, 16, UNI_INDICNUMBERFORMS } /* isindicnumberforms */,
+ { 14, 5031, 0, 4, 0, UNI_HAN } /* hani */,
+ { 0, 3001, 3001, 12, 7, UNI_NT__NU } /* numerictype=numeric */,
+ { 32464, 4502, 4659, 9, 9, UNI_LATINEXTC } /* blk=latinextendedc */,
+ { 4, 8601, 8001, 7, 29, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* block=symbolsandpictographsextendeda */,
+ { 2, 2718, 305, 3, 2, UNI_BC__WS } /* bc=ws */,
+ { 0, 2, 933, 1, 3, -UNI_CE } /* ce=f */,
+ { 0, 2732, 7545, 8, 20, UNI_ARABICPFA } /* blk=arabicpresentationformsa */,
+ { 0, 5532, 353, 21, 2, UNI_CWCF } /* changeswhencasefolded=y */,
+ { 0, 2018, 6621, 4, 3, UNI_JOINC } /* joinc=t */,
+ { 0, 1667, 1966, 5, 9, UNI_COMPATJAMO } /* blk=compatjamo */,
+ { 3, 461, 1635, 2, 4, UNI_WARA } /* iswara */,
+ { 0, 4360, 153, 10, 2, UNI_LB__SG } /* linebreak=sg */,
+ { 2, 3490, 4659, 12, 9, UNI_CYRILLICEXTC } /* blk=cyrillicextendedc */,
+ { 10, 1823, 1543, 7, 4, UNI_KHAR } /* script=khar */,
+ { 0, 1424, 1317, 8, 2, UNI_CCC__132 } /* ccc=ccc132 */,
+ { 0, 1492, 6945, 5, 20, UNI_GEOMETRICSHAPESEXT } /* ingeometricshapesextended */,
+ { 2, 2752, 598, 13, 4, -UNI_ECOMP } /* emojicomponent=no */,
+ { 0, 2, 5694, 1, 18, UNI_COUNTINGROD } /* countingrodnumerals */,
+ { 5, 2324, 5283, 6, 9, UNI_HALFMARKS } /* block=halfmarks */,
+ { 0, 4584, 934, 18, 2, -UNI_IDST } /* idstrinaryoperator=f */,
+ { 3, 1455, 353, 10, 2, UNI_DEP } /* deprecated=y */,
+ { 0, 292, 1314, 4, 3, UNI_NV__9000 } /* nv=9000 */,
+ { 0, 7274, 2768, 8, 6, UNI_C } /* category=other */,
+ { 3, 309, 653, 2, 5, UNI_INBUHID } /* inbuhid */,
+ { 17, 406, 353, 3, 4, UNI_DIA } /* dia=yes */,
+ { 0, 1409, 4698, 4, 5, UNI_LATIN1 } /* latin1sup */,
+ { 1, 2324, 7356, 6, 27, UNI_OCR } /* block=opticalcharacterrecognition */,
+ { 7, 30, 6796, 1, 5, UNI_DEVA } /* isdeva */,
+ { 40, 2004, 1942, 5, 5, UNI_POSIXGRAPH } /* posixgraph */,
+ { 4, 5637, 0, 21, 0, UNI_gcb_values_index } /* graphemeclusterbreak= */,
+ { 2, 1454, 0, 2, 0, UNI_SD } /* sd */,
+ { 9, 3677, 3773, 3, 15, UNI_LINEARBIDEOGRAMS } /* islinearbideograms */,
+ { 2, 461, 326, 2, 2, UNI_PF } /* ispf */,
+ { 6, 2180, 0, 4, 0, UNI_NV__4 } /* nv=4 */,
+ { 15, 4795, 1805, 14, 5, UNI_NV__600000 } /* numericvalue=600000 */,
+ { 4, 461, 4176, 2, 4, UNI_HANG } /* ishang */,
+ { 1, 6165, 1227, 3, 7, UNI_MAKA } /* sc=makasar */,
+ { 3, 2536, 2886, 3, 11, UNI_JG__YEHWITHTAIL } /* jg=yehwithtail */,
+ { 5, 1367, 0, 4, 0, UNI_PAUC } /* pauc */,
+ { 0, 1667, 5440, 4, 20, UNI_INNYIAKENGPUACHUEHMONG } /* blk=nyiakengpuachuehmong */,
+ { 3, 1823, 608, 7, 7, UNI_ELBA } /* script=elbasan */,
+ { 3, 0, 2619, 1, 12, UNI_LOWSURROGATES } /* lowsurrogates */,
+ { 20, 6090, 1037, 13, 4, UNI_MYANMAREXTB } /* block=myanmarextb */,
+ { 0, 1667, 2468, 4, 6, UNI_IPAEXT } /* blk=ipaext */,
+ { 32, 339, 5515, 4, 17, UNI_WB__EB } /* ccc=attachedbelowleft */,
+ { 1, 309, 6185, 2, 13, UNI_GLAGOLITICSUP } /* inglagoliticsup */,
+ { 0, 4424, 3954, 17, 17, UNI_AGHB } /* scriptextensions=caucasianalbanian */,
+ { 9, 1667, 283, 4, 5, UNI_INNUSHU } /* blk=nushu */,
+ { 1, 2287, 546, 4, 3, UNI_IN__13 } /* in=13.0 */,
+ { 2, 5216, 4344, 7, 16, UNI_LETTERLIKESYMBOLS } /* block=letterlikesymbols */,
+ { 3, 30, 5390, 1, 19, UNI_CHEROKEESUP } /* ischerokeesupplement */,
+ { 1, 6165, 5391, 3, 4, UNI_CHER } /* sc=cher */,
+ { 1, 4424, 3325, 17, 6, UNI_HEBR } /* scriptextensions=hebrew */,
+ { 0, 6165, 357, 3, 6, UNI_SC__CAKM } /* sc=chakma */,
+ { 1, 461, 1334, 2, 4, UNI_PERM } /* isperm */,
+ { 1, 3554, 0, 13, 0, UNI_ZL } /* lineseparator */,
+ { 2, 7274, 0, 9, 2, UNI_CASEDLETTER } /* category=l& */,
+ { 8, 1667, 4131, 4, 15, UNI_VEDICEXT } /* blk=vedicextensions */,
+ { 1, 3633, 204, 9, 2, UNI_LATINEXTF } /* inlatinextf */,
+ { 1, 430, 0, 3, 0, UNI_NKO } /* nko */,
+ { 14, 339, 2029, 3, 3, UNI_CCC__BR } /* ccc=br */,
+ { 4, 461, 2531, 2, 5, UNI_XPOSIXBLANK } /* isblank */,
+ { 2, 1667, 5857, 4, 19, UNI_MONGOLIANSUP } /* blk=mongoliansupplement */,
+ { 0, 925, 598, 2, 3, UNI_BPT__N } /* bpt=n */,
+ { 0, 7198, 5149, 16, 7, UNI_SUPARROWSA } /* blk=supplementalarrowsa */,
+ { 4, 6165, 825, 3, 7, UNI_SHAW } /* sc=shavian */,
+ { 17, 1823, 4060, 7, 7, UNI_BRAI } /* script=braille */,
+ { 2, 6165, 1303, 3, 9, UNI_TALU } /* sc=newtailue */,
+ { 2, 2536, 636, 3, 3, UNI_JG__NUN } /* jg=nun */,
+ { 10, 7383, 143, 10, 2, UNI_BC__BN } /* bidiclass=bn */,
+ { 0, 832, 353, 5, 4, UNI_STERM } /* sterm=yes */,
+ { 0, 4502, 2619, 5, 12, UNI_LOWSURROGATES } /* blk=lowsurrogates */,
+ { 0, 2324, 590, 6, 7, UNI_DSRT } /* block=deseret */,
+ { 51, 6165, 818, 3, 7, UNI_SC__SHRD } /* sc=sharada */,
+ { 1, 2766, 6324, 3, 6, UNI_CF } /* gc=format */,
+ { 0, 3130, 2370, 5, 12, UNI_GREEKEXT } /* blk=greekextended */,
+ { 5, 552, 2234, 3, 2, UNI_AGE__8 } /* age=8 */,
+ { 1, 3514, 1723, 12, 3, UNI_ARABICPFB } /* block=arabicpfb */,
+ { 18, 6165, 814, 3, 4, UNI_SC__QAAI } /* sc=zinh */,
+ { 0, 786, 0, 4, 0, UNI_HMNP } /* hmnp */,
+ { 0, 7267, 65, 16, 2, UNI_MN } /* generalcategory=mn */,
+ { 0, 461, 6841, 2, 25, UNI_DI } /* isdefaultignorablecodepoint */,
+ { 15, 1618, 353, 10, 4, UNI_SD } /* softdotted=yes */,
+ { 15, 597, 128, 3, 3, UNI_DT__MED } /* dt=med */,
+ { 5, 406, 599, 3, 2, -UNI_DIA } /* dia=n */,
+ { 3, 309, 3538, 2, 16, UNI_CYPRIOTSYLLABARY } /* incypriotsyllabary */,
+ { 37, 5216, 81, 13, 2, UNI_LATINEXTG } /* block=latinextg */,
+ { 3, 8538, 1626, 29, 9, UNI_VO__TU } /* verticalorientation=transformedupright */,
+ { 2, 6427, 2549, 13, 10, UNI_JG__DALATHRISH } /* joininggroup=dalathrish */,
+ { 8, 160, 162, 2, 2, UNI_PHLP } /* phlp */,
+ { 5, 2752, 585, 5, 5, UNI_EMOJI } /* emoji=true */,
+ { 0, 2324, 1037, 9, 4, UNI_CJKEXTB } /* block=cjkextb */,
+ { 42, 1667, 1367, 4, 9, UNI_INPAUCINHAU } /* blk=paucinhau */,
+ { 0, 3677, 1674, 7, 4, UNI_LATINEXTD } /* islatinextd */,
+ { 8, 2324, 1303, 6, 9, UNI_INNEWTAILUE } /* block=newtailue */,
+ { 0, 1562, 0, 10, 0, UNI_NAGM } /* nagmundari */,
+ { 1, 4360, 2017, 10, 2, UNI_LB__WJ } /* linebreak=wj */,
+ { 0, 7274, 1926, 9, 6, UNI_S } /* category=symbol */,
+ { 0, 8538, 5993, 20, 7, UNI_VO__R } /* verticalorientation=rotated */,
+ { 4, 1667, 1021, 4, 6, UNI_INWANCHO } /* blk=wancho */,
+ { 5, 1667, 7111, 5, 23, UNI_DIACRITICALSFORSYMBOLS } /* blk=combiningmarksforsymbols */,
+ { 0, 1823, 1376, 7, 9, UNI_SAMR } /* script=samaritan */,
+ { 0, 229, 4457, 2, 15, UNI_SUTTONSIGNWRITING } /* suttonsignwriting */,
+ { 0, 1734, 0, 3, 0, UNI_S } /* iss */,
+ { 0, 30, 6691, 1, 23, UNI_TRANSPORTANDMAP } /* istransportandmapsymbols */,
+ { 0, 2301, 584, 10, 3, UNI_XIDC } /* xidcontinue=t */,
+ { 5, 2324, 1975, 6, 10, UNI_INOLDSOGDIAN } /* block=oldsogdian */,
+ { 5, 4360, 277, 10, 2, UNI_LB__H2 } /* linebreak=h2 */,
+ { 61144, 3514, 1037, 12, 4, UNI_ARABICEXTB } /* block=arabicextb */,
+ { 0, 38, 662, 1, 3, UNI_KALI } /* kali */,
+ { 3, 1994, 353, 7, 2, UNI_RADICAL } /* radical=y */,
+ { 1, 21, 598, 2, 4, -UNI_EXT } /* ext=no */,
+ { 1, 2503, 274, 11, 1, UNI_joinc_values_index } /* joincontrol= */,
+ { 0, 4424, 967, 17, 8, UNI_GUJR } /* scriptextensions=gujarati */,
+ { 0, 3391, 2289, 12, 3, UNI_NV__14 } /* numericvalue=14 */,
+ { 3, 1102, 880, 4, 7, UNI_ZZZZ } /* scx=unknown */,
+ { 0, 461, 3791, 2, 4, UNI_MATH } /* ismath */,
+ { 18, 1200, 8474, 3, 23, UNI_CJKCOMPATIDEOGRAPHS } /* cjkcompatibilityideographs */,
+ { 4, 1667, 1205, 4, 7, UNI_INGRANTHA } /* blk=grantha */,
+ { 4, 3391, 2146, 13, 9, UNI_NV__3_SLASH_20 } /* numericvalue=1.500e-01 */,
+ { 1, 461, 658, 2, 5, UNI_DOGR } /* isdogra */,
+ { 4, 1198, 8407, 3, 34, UNI_DIACRITICALSFORSYMBOLS } /* incombiningdiacriticalmarksforsymbols */,
+ { 0, 3514, 2312, 7, 12, UNI_AEGEANNUMBERS } /* block=aegeannumbers */,
+ { 3, 7564, 0, 27, 0, UNI_ANCIENTGREEKMUSIC } /* ancientgreekmusicalnotation */,
+ { 0, 1102, 1509, 4, 4, UNI_JAVA } /* scx=java */,
+ { 4, 1102, 983, 4, 4, UNI_HIRA } /* scx=hira */,
+ { 2, 8343, 5003, 22, 14, UNI_INSC__GEMINATIONMARK } /* indicsyllabiccategory=geminationmark */,
+ { 0, 309, 4090, 2, 17, UNI_INDICSIYAQNUMBERS } /* inindicsiyaqnumbers */,
+ { 0, 4569, 584, 8, 3, UNI_XPOSIXUPPER } /* uppercase=t */,
+ { 0, 1942, 352, 11, 5, UNI_GRBASE } /* graphemebase=yes */,
+ { 4, 461, 4862, 2, 4, UNI_RUMI } /* isrumi */,
+ { 9, 6090, 8374, 7, 33, UNI_MISCPICTOGRAPHS } /* block=miscellaneoussymbolsandpictographs */,
+ { 3, 271, 599, 2, 2, UNI_N } /* gc=n */,
+ { 1, 880, 0, 7, 0, UNI_ZZZZ } /* unknown */,
+ { 2, 461, 3908, 2, 6, UNI_TANG } /* istangut */,
+ { 0, 1065, 2147, 4, 8, UNI_NV__3_SLASH_20 } /* nv=1.500e-01 */,
+ { 0, 6450, 3001, 14, 7, UNI_SB__NU } /* sentencebreak=numeric */,
+ { 0, 4424, 6154, 17, 9, UNI_XSUX } /* scriptextensions=cuneiform */,
+ { 1, 398, 0, 4, 0, UNI_MIAO } /* miao */,
+ { 0, 5156, 1652, 10, 7, UNI_WB__NL } /* wordbreak=newline */,
+ { 1, 552, 546, 4, 3, UNI_AGE__3 } /* age=3.0 */,
+ { 1, 4424, 5391, 17, 4, UNI_CHER } /* scriptextensions=cher */,
+ { 2, 4424, 901, 17, 8, UNI_ARMN } /* scriptextensions=armenian */,
+ { 0, 2766, 3276, 3, 13, UNI_ME } /* gc=enclosingmark */,
+ { 6, 2678, 387, 11, 2, UNI_IN__5_DOT_2 } /* presentin=5.2 */,
+ { 18, 6165, 98, 3, 4, UNI_HLUW } /* sc=hluw */,
+ { 0, 461, 4461, 2, 11, UNI_SGNW } /* issignwriting */,
+ { 0, 7648, 1715, 18, 8, UNI_DT__ISO } /* decompositiontype=isolated */,
+ { 8, 7591, 7111, 4, 12, UNI_LB__CM } /* lb=combiningmark */,
+ { 0, 2536, 714, 3, 4, UNI_JG__ZAIN } /* jg=zain */,
+ { 1, 5168, 6757, 6, 19, UNI__PERL_FOLDS_TO_MULTI_CHAR } /* _perl_folds_to_multi_char */,
+ { 3, 1667, 1484, 4, 8, UNI_INBUGINESE } /* blk=buginese */,
+ { 2, 461, 1572, 2, 10, UNI_XPEO } /* isoldpersian */,
+ { 2, 4424, 1358, 17, 9, UNI_PALM } /* scriptextensions=palmyrene */,
+ { 1, 309, 3908, 2, 16, UNI_TANGUTCOMPONENTS } /* intangutcomponents */,
+ { 56, 4, 0, 2, 0, UNI_LO } /* lo */,
+ { 0, 7591, 6224, 3, 12, UNI_LB__SY } /* lb=breaksymbols */,
+ { 24, 1424, 395, 7, 2, UNI_CCC__16 } /* ccc=ccc16 */,
+ { 0, 6165, 333, 3, 6, UNI_CARI } /* sc=carian */,
+ { 49, 8601, 5149, 9, 7, UNI_SUPARROWSA } /* block=suparrowsa */,
+ { 5, 493, 0, 6, 0, UNI_KHOJ } /* khojki */,
+ { 0, 5939, 599, 5, 3, -UNI__PERL_NCHAR } /* nchar=no */,
+ { 2, 3724, 1876, 12, 3, UNI_JG__MALAYALAMLLA } /* jg=malayalamlla */,
+ { 7, 2280, 2234, 9, 2, UNI_IN__8 } /* presentin=8 */,
+ { 3, 7274, 2317, 9, 6, UNI_N } /* category=number */,
+ { 5, 533, 4569, 3, 5, UNI_SB__UP } /* sb=upper */,
+ { 0, 1494, 0, 4, 0, UNI_GEOR } /* geor */,
+ { 2, 1823, 4651, 7, 4, UNI_SC__BOPO } /* script=bopo */,
+ { 0, 4371, 5671, 5, 3, -UNI_XPOSIXSPACE } /* wspace=n */,
+ { 1, 578, 290, 5, 1, UNI_CCC__24 } /* ccc=24 */,
+ { 0, 461, 725, 2, 7, UNI_KALI } /* iskayahli */,
+ { 45931, 7267, 4569, 16, 15, UNI_UPPERCASELETTER } /* generalcategory=uppercaseletter */,
+ { 0, 4191, 274, 5, 1, UNI_lower_values_index } /* lower= */,
+ { 0, 1734, 4710, 3, 8, UNI_SYRIACSUP } /* issyriacsup */,
+ { 3, 266, 934, 3, 2, -UNI_CWT } /* cwt=f */,
+ { 0, 1272, 56, 3, 3, UNI_CHAM } /* ischam */,
+ { 1, 309, 5857, 2, 12, UNI_MONGOLIANSUP } /* inmongoliansup */,
+ { 3, 517, 2147, 4, 8, UNI_NV__3_SLASH_4 } /* nv=7.500e-01 */,
+ { 0, 339, 8640, 4, 18, UNI_CCC__216 } /* ccc=attachedaboveright */,
+ { 2, 6870, 599, 20, 3, -UNI_CE } /* compositionexclusion=no */,
+ { 34, 3101, 0, 5, 0, UNI_XPOSIXDIGIT } /* digit */,
+ { 1, 1728, 1141, 6, 3, UNI_ARABICPFA } /* arabicpfa */,
+ { 21, 7648, 946, 18, 5, UNI_DT__SUP } /* decompositiontype=super */,
+ { 21, 2324, 1021, 6, 6, UNI_INWANCHO } /* block=wancho */,
+ { 10, 1391, 2487, 5, 7, UNI_WB__ML } /* wb=midletter */,
+ { 0, 4161, 0, 15, 0, UNI_DIACRITICALSEXT } /* diacriticalsext */,
+ { 0, 3490, 1674, 12, 4, UNI_CYRILLICEXTD } /* blk=cyrillicextd */,
+ { 0, 7011, 5523, 24, 5, UNI_CCC__B } /* canonicalcombiningclass=below */,
+ { 14, 461, 5068, 2, 10, UNI_MANI } /* ismanichaean */,
+ { 1, 1102, 901, 4, 8, UNI_ARMN } /* scx=armenian */,
+ { 0, 1823, 4176, 7, 4, UNI_SC__HANG } /* script=hang */,
+ { 0, 1102, 3475, 4, 15, UNI_ZANB } /* scx=zanabazarsquare */,
+ { 0, 1667, 4620, 4, 16, UNI_LINEARBSYLLABARY } /* blk=linearbsyllabary */,
+ { 2, 1102, 1051, 4, 8, UNI_MAHJ } /* scx=mahajani */,
+ { 2, 10, 137, 1, 3, UNI_MYMR } /* mymr */,
+ { 12, 4424, 868, 17, 7, UNI_TIRH } /* scriptextensions=tirhuta */,
+ { 1, 2018, 3313, 12, 12, UNI_JT__R } /* joiningtype=rightjoining */,
+ { 12, 4487, 0, 6, 0, UNI_ZYYY } /* common */,
+ { 32, 5574, 599, 21, 2, -UNI_CWL } /* changeswhenlowercased=n */,
+ { 3, 461, 2256, 2, 12, UNI_PHAISTOS } /* isphaistosdisc */,
+ { 56, 1090, 0, 4, 0, UNI_LINB } /* linb */,
+ { 0, 2988, 353, 13, 4, UNI_NFCQC__Y } /* nfcquickcheck=yes */,
+ { 0, 1667, 56, 5, 3, UNI_INCHAM } /* blk=cham */,
+ { 0, 533, 36, 3, 2, UNI_SB__AT } /* sb=at */,
+ { 3, 1102, 5876, 4, 9, UNI_SUND } /* scx=sundanese */,
+ { 6, 4191, 584, 8, 3, UNI_XPOSIXLOWER } /* lowercase=t */,
+ { 0, 30, 5711, 1, 3, UNI_ME } /* isme */,
+ { 3, 6165, 2782, 5, 4, UNI_SC__COPT } /* sc=coptic */,
+ { 10, 1667, 2068, 4, 12, UNI_INMENDEKIKAKUI } /* blk=mendekikakui */,
+ { 3, 7467, 0, 28, 0, UNI_SUPPUAA } /* supplementaryprivateuseareaa */,
+ { 0, 3803, 599, 14, 2, UNI_NFKCQC__N } /* nfkcquickcheck=n */,
+ { 0, 1102, 15, 4, 4, UNI_AGHB } /* scx=aghb */,
+ { 2, 309, 5778, 2, 21, UNI_ININSCRIPTIONALPARTHIAN } /* ininscriptionalparthian */,
+ { 0, 302, 524, 3, 3, UNI_PATSYN } /* patsyn */,
+ { 24, 1667, 7449, 4, 18, UNI_PHONETICEXT } /* blk=phoneticextensions */,
+ { 0, 1823, 3954, 7, 17, UNI_AGHB } /* script=caucasianalbanian */,
+ { 1, 1954, 0, 12, 0, UNI_GONG } /* gunjalagondi */,
+ { 1, 2382, 2720, 2, 2, UNI_VO__R } /* vo=r */,
+ { 0, 461, 398, 2, 4, UNI_MIAO } /* ismiao */,
+ { 5, 7591, 2930, 3, 2, UNI_GCB__T } /* lb=jt */,
+ { 0, 1174, 140, 3, 2, UNI_EA__NA } /* ea=na */,
+ { 16, 2324, 474, 6, 3, UNI_INVAI } /* block=vai */,
+ { 36, 2324, 648, 6, 5, UNI_INADLAM } /* block=adlam */,
+ { 2, 1883, 0, 5, 0, UNI_BIDIC } /* bidic */,
+ { 16, 1667, 537, 4, 6, UNI_INTANGSA } /* blk=tangsa */,
+ { 3, 309, 5857, 2, 9, UNI_INMONGOLIAN } /* inmongolian */,
+ { 14, 4424, 1090, 17, 4, UNI_LINB } /* scriptextensions=linb */,
+ { 29, 6165, 1191, 3, 7, UNI_SC__BENG } /* sc=bengali */,
+ { 1, 208, 0, 4, 0, UNI_TGLG } /* tglg */,
+ { 12, 2324, 4161, 6, 15, UNI_DIACRITICALSEXT } /* block=diacriticalsext */,
+ { 1, 8343, 3289, 31, 5, UNI_INSC__CONSONANTFINAL } /* indicsyllabiccategory=consonantfinal */,
+ { 0, 7449, 0, 18, 0, UNI_PHONETICEXT } /* phoneticextensions */,
+ { 0, 6163, 3253, 5, 10, UNI_INSC__PUREKILLER } /* insc=purekiller */,
+ { 0, 10, 8039, 1, 32, UNI_MISCMATHSYMBOLSA } /* miscellaneousmathematicalsymbolsa */,
+ { 0, 2324, 430, 6, 3, UNI_INNKO } /* block=nko */,
+ { 3, 5156, 652, 10, 2, UNI_WB__MB } /* wordbreak=mb */,
+ { 3, 1823, 1325, 7, 4, UNI_ITAL } /* script=ital */,
+ { 3, 461, 199, 2, 2, UNI_TITLE } /* islt */,
+ { 1, 19, 353, 4, 4, UNI_POSIXXDIGIT } /* ahex=yes */,
+ { 0, 2505, 8568, 4, 33, UNI_DIACRITICALSSUP } /* incombiningdiacriticalmarkssupplement */,
+ { 5, 3021, 891, 5, 2, UNI_IN__11 } /* in=v110 */,
+ { 0, 2930, 12, 3, 1, UNI_JT__D } /* jt=d */,
+ { 3, 309, 7467, 2, 28, UNI_SUPPUAA } /* insupplementaryprivateuseareaa */,
+ { 32, 3021, 1313, 4, 2, UNI_IN__6 } /* in=v60 */,
+ { 2, 2360, 2367, 7, 3, UNI_CN } /* unassigned */,
+ { 0, 5838, 0, 19, 0, UNI_JAMOEXTA } /* hanguljamoextendeda */,
+ { 3, 2752, 2931, 13, 3, UNI_ECOMP } /* emojicomponent=t */,
+ { 0, 461, 663, 2, 4, UNI_LIMB } /* islimb */,
+ { 1, 2401, 5848, 10, 9, UNI_ETHIOPICEXTA } /* inethiopicextendeda */,
+ { 2, 3817, 0, 14, 0, UNI_NV__1 } /* numericvalue=1 */,
+ { 15, 309, 1322, 2, 9, UNI_INOLDITALIC } /* inolditalic */,
+ { 1, 2769, 0, 5, 0, UNI_C } /* other */,
+ { 1, 10, 1235, 1, 6, UNI_MULT } /* multani */,
+ { 1, 2324, 4911, 6, 15, UNI_DIACRITICALSSUP } /* block=diacriticalssup */,
+ { 6, 1102, 732, 4, 7, UNI_LINA } /* scx=lineara */,
+ { 0, 1133, 0, 8, 0, UNI_VITH } /* vithkuqi */,
+ { 4, 7011, 2029, 23, 3, UNI_CCC__BR } /* canonicalcombiningclass=br */,
+ { 1, 309, 6514, 2, 10, UNI_PUA } /* inprivateuse */,
+ { 0, 6597, 0, 4, 0, UNI_CE } /* isce */,
+ { 2, 461, 782, 2, 3, UNI_ANY } /* isany */,
+ { 2, 461, 3692, 2, 14, UNI_LISUSUP } /* islisusupplement */,
+ { 0, 1102, 283, 4, 5, UNI_NSHU } /* scx=nushu */,
+ { 0, 461, 7796, 2, 22, UNI_ENCLOSEDIDEOGRAPHICSUP } /* isenclosedideographicsup */,
+ { 6, 6165, 861, 3, 7, UNI_TIBT } /* sc=tibetan */,
+ { 16, 1102, 232, 4, 4, UNI_YI } /* scx=yiii */,
+ { 0, 3514, 3790, 11, 5, UNI_ARABICMATH } /* block=arabicmath */,
+ { 0, 261, 585, 5, 2, UNI_CWKCF } /* cwkcf=t */,
+ { 0, 5637, 7134, 21, 7, UNI_GCB__PP } /* graphemeclusterbreak=prepend */,
+ { 1, 2536, 487, 3, 3, UNI_JG__REH } /* jg=reh */,
+ { 1, 283, 0, 5, 0, UNI_NSHU } /* nushu */,
+ { 1, 32, 323, 1, 4, UNI_VSSUP } /* vssup */,
+ { 1, 1065, 295, 5, 1, UNI_NV__1_SLASH_9 } /* nv=1/9 */,
+ { 0, 5658, 1396, 18, 3, UNI_IDENTIFIERTYPE__NOTXID } /* identifiertype=notxid */,
+ { 0, 6236, 0, 19, 0, UNI_NV__100000 } /* numericvalue=100000 */,
+ { 0, 7267, 3276, 16, 13, UNI_ME } /* generalcategory=enclosingmark */,
+ { 0, 833, 585, 4, 2, UNI_TERM } /* term=t */,
+ { 0, 7648, 140, 18, 3, UNI_DT__NAR } /* decompositiontype=nar */,
+ { 0, 4651, 0, 4, 0, UNI_BOPO } /* bopo */,
+ { 1, 317, 857, 3, 4, UNI_TAVT } /* taiviet */,
+ { 1, 2766, 99, 3, 2, UNI_UPPERCASELETTER } /* gc=lu */,
+ { 0, 309, 5068, 2, 10, UNI_INMANICHAEAN } /* inmanichaean */,
+ { 8, 2718, 1715, 14, 7, UNI_BC__RLI } /* bc=righttoleftisolate */,
+ { 32, 461, 1635, 2, 10, UNI_WARA } /* iswarangciti */,
+ { 1, 5939, 0, 5, 0, UNI__PERL_NCHAR } /* nchar */,
+ { 5, 505, 599, 5, 2, UNI_DT__CAN } /* nfdqc=n */,
+ { 0, 2324, 663, 6, 5, UNI_INLIMBU } /* block=limbu */,
+ { 0, 3093, 934, 13, 6, -UNI_POSIXXDIGIT } /* asciihexdigit=false */,
+ { 0, 54, 3505, 2, 5, UNI_ETHI } /* sc=ethi */,
+ { 0, 1667, 861, 4, 7, UNI_INTIBETAN } /* blk=tibetan */,
+ { 4, 20, 0, 3, 0, UNI_XPOSIXXDIGIT } /* hex */,
+ { 4, 6165, 794, 3, 4, UNI_LANA } /* sc=lana */,
+ { 0, 1421, 2370, 3, 7, UNI_GREEKEXT } /* ingreekext */,
+ { 3, 1397, 934, 3, 6, -UNI_IDS } /* ids=false */,
+ { 0, 4424, 5031, 17, 4, UNI_HAN } /* scriptextensions=hani */,
+ { 2, 309, 1144, 2, 9, UNI_INBHAIKSUKI } /* inbhaiksuki */,
+ { 5, 339, 559, 5, 2, UNI_CCC__107 } /* ccc=107 */,
+ { 1, 6090, 2422, 7, 10, UNI_MISCSYMBOLS } /* block=miscsymbols */,
+ { 0, 4191, 5671, 8, 4, -UNI_XPOSIXLOWER } /* lowercase=no */,
+ { 0, 86, 0, 4, 0, UNI_GREK } /* grek */,
+ { 17, 925, 5090, 3, 6, UNI_BPT__C } /* bpt=close */,
+ { 1, 7669, 897, 17, 3, UNI_GCB__V } /* hangulsyllabletype=v */,
+ { 0, 1454, 599, 2, 2, -UNI_SD } /* sd=n */,
+ { 6, 461, 2411, 2, 11, UNI_KATAKANAEXT } /* iskatakanaext */,
+ { 50, 6165, 160, 3, 4, UNI_SC__PHLP } /* sc=phlp */,
+ { 0, 20, 599, 3, 2, -UNI_XPOSIXXDIGIT } /* hex=n */,
+ { 0, 7267, 3263, 16, 13, UNI_XPOSIXDIGIT } /* generalcategory=decimalnumber */,
+ { 0, 3204, 353, 14, 2, UNI_GREXT } /* graphemeextend=y */,
+ { 4, 939, 934, 5, 6, -UNI_ECOMP } /* ecomp=false */,
+ { 49, 4951, 0, 19, 0, UNI_EGYP } /* egyptianhieroglyphs */,
+ { 11, 2514, 7825, 3, 30, UNI_MATHALPHANUM } /* ismathematicalalphanumericsymbols */,
+ { 1, 6165, 1367, 3, 9, UNI_PAUC } /* sc=paucinhau */,
+ { 4, 3677, 81, 9, 2, UNI_LATINEXTG } /* islatinextg */,
+ { 5, 1174, 3, 3, 1, UNI_EA__W } /* ea=w */,
+ { 2, 3863, 1805, 14, 4, UNI_NV__80000 } /* numericvalue=80000 */,
+ { 1, 5616, 934, 21, 6, -UNI_CWU } /* changeswhenuppercased=false */,
+ { 5, 1864, 0, 5, 0, UNI_EBASE } /* ebase */,
+ { 3, 7944, 5252, 28, 4, UNI_CJKEXTE } /* iscjkunifiedideographsextensione */,
+ { 1, 5616, 274, 21, 1, UNI_cwu_values_index } /* changeswhenuppercased= */,
+ { 8, 461, 683, 2, 4, UNI_TAKR } /* istakr */,
+ { 1, 4424, 2411, 17, 8, UNI_KANA } /* scriptextensions=katakana */,
+ { 5, 4360, 0, 12, 0, UNI_LB__ZW } /* linebreak=zw */,
+ { 1, 1667, 4725, 4, 9, UNI_TANGUTSUP } /* blk=tangutsup */,
+ { 131, 6165, 739, 3, 4, UNI_SC__MAND } /* sc=mand */,
+ { 18, 4424, 1015, 17, 4, UNI_TELU } /* scriptextensions=telu */,
+ { 38, 339, 18, 4, 1, UNI_CCC__B } /* ccc=b */,
+ { 1, 7084, 5848, 8, 9, UNI_ARABICEXTA } /* inarabicextendeda */,
+ { 0, 7011, 346, 24, 2, UNI_CCC__84 } /* canonicalcombiningclass=84 */,
+ { 3, 461, 2302, 2, 3, UNI_IDC } /* isidc */,
+ { 0, 1823, 6777, 8, 10, UNI_MTEI } /* script=meeteimayek */,
+ { 13, 1102, 410, 4, 4, UNI_GONM } /* scx=gonm */,
+ { 0, 2811, 2815, 4, 8, UNI_KHMERSYMBOLS } /* khmersymbols */,
+ { 5, 6450, 54, 14, 2, UNI_SB__SC } /* sentencebreak=sc */,
+ { 0, 1340, 0, 9, 0, UNI_ORKH } /* oldturkic */,
+ { 1, 461, 240, 2, 4, UNI_ZYYY } /* iszyyy */,
+ { 0, 4424, 840, 17, 7, UNI_TGLG } /* scriptextensions=tagalog */,
+ { 3, 18, 6901, 1, 13, UNI_BYZANTINEMUSIC } /* byzantinemusic */,
+ { 18, 309, 840, 2, 7, UNI_INTAGALOG } /* intagalog */,
+ { 0, 2718, 3505, 2, 3, UNI_BC__ET } /* bc=et */,
+ { 0, 1823, 11, 7, 4, UNI_SC__ADLM } /* script=adlm */,
+ { 0, 4502, 3773, 5, 15, UNI_LINEARBIDEOGRAMS } /* blk=linearbideograms */,
+ { 2, 2514, 7620, 3, 28, UNI_MISCARROWS } /* ismiscellaneoussymbolsandarrows */,
+ { 0, 4391, 2164, 14, 8, UNI_NV__1_SLASH_3 } /* numericvalue=3.333e-01 */,
+ { 0, 2766, 4075, 3, 14, UNI_SC } /* gc=currencysymbol */,
+ { 0, 7752, 4746, 23, 5, UNI_JG__MANICHAEANGIMEL } /* joininggroup=manichaeangimel */,
+ { 40, 54, 2735, 2, 5, UNI_SC__ARAB } /* sc=arab */,
+ { 0, 309, 527, 2, 6, UNI_INREJANG } /* inrejang */,
+ { 2, 2391, 1674, 10, 4, UNI_CYRILLICEXTD } /* incyrillicextd */,
+ { 1, 1102, 1262, 4, 7, UNI_SOYO } /* scx=soyombo */,
+ { 1, 3863, 2164, 14, 8, UNI_NV__5_SLASH_6 } /* numericvalue=8.333e-01 */,
+ { 9, 4424, 1205, 17, 4, UNI_GRAN } /* scriptextensions=gran */,
+ { 0, 4360, 1763, 10, 8, UNI_LB__LF } /* linebreak=linefeed */,
+ { 3, 4424, 5067, 16, 5, UNI_MANI } /* scriptextensions=mani */,
+ { 0, 8, 353, 3, 4, UNI_PCM } /* pcm=yes */,
+ { 6, 1696, 0, 6, 0, UNI_DOMINO } /* domino */,
+ { 0, 7495, 1317, 27, 2, UNI_CCC__32 } /* canonicalcombiningclass=ccc32 */,
+ { 0, 2391, 5848, 10, 9, UNI_CYRILLICEXTA } /* incyrillicextendeda */,
+ { 14, 7134, 353, 26, 2, UNI_PCM } /* prependedconcatenationmark=y */,
+ { 2, 1102, 357, 4, 6, UNI_CAKM } /* scx=chakma */,
+ { 0, 461, 861, 2, 7, UNI_TIBT } /* istibetan */,
+ { 4, 1667, 1285, 4, 9, UNI_INKHUDAWADI } /* blk=khudawadi */,
+ { 3, 1102, 499, 4, 6, UNI_LYDI } /* scx=lydian */,
+ { 1, 1906, 3622, 7, 11, UNI_KANGXI } /* blk=kangxiradicals */,
+ { 1, 2525, 1479, 6, 5, UNI_XPOSIXSPACE } /* xposixspace */,
+ { 1, 2766, 2004, 3, 2, UNI_PO } /* gc=po */,
+ { 0, 54, 3133, 2, 5, UNI_SC__GEOR } /* sc=geor */,
+ { 4, 461, 880, 2, 7, UNI_ZZZZ } /* isunknown */,
+ { 0, 510, 3876, 5, 2, UNI_NV__3_SLASH_80 } /* nv=3/80 */,
+ { 2, 3502, 324, 12, 3, UNI_ETHIOPICSUP } /* blk=ethiopicsup */,
+ { 4, 6165, 688, 3, 5, UNI_BATK } /* sc=batak */,
+ { 56, 1174, 7048, 3, 9, UNI_EA__F } /* ea=fullwidth */,
+ { 0, 7267, 599, 15, 3, UNI_NO } /* generalcategory=no */,
+ { 1, 7274, 6677, 9, 14, UNI_LM } /* category=modifierletter */,
+ { 2, 3391, 3876, 13, 2, UNI_NV__80 } /* numericvalue=80 */,
+ { 2, 2324, 204, 11, 2, UNI_CJKEXTF } /* block=cjkextf */,
+ { 2, 461, 458, 2, 4, UNI_QAAI } /* isqaai */,
+ { 3, 4502, 4770, 17, 10, UNI_LATINEXTADDITIONAL } /* blk=latinextendedadditional */,
+ { 3, 1106, 0, 4, 0, UNI_TALU } /* talu */,
+ { 0, 2324, 1501, 6, 8, UNI_JAMOEXTA } /* block=jamoexta */,
+ { 3, 2060, 353, 5, 2, UNI_XPOSIXALPHA } /* alpha=y */,
+ { 1, 1823, 398, 7, 4, UNI_MIAO } /* script=miao */,
+ { 2, 15, 3418, 2, 3, UNI_AGE__4 } /* age=4 */,
+ { 2, 7383, 327, 10, 3, UNI_BC__FSI } /* bidiclass=fsi */,
+ { 0, 1667, 1331, 4, 9, UNI_INOLDPERMIC } /* blk=oldpermic */,
+ { 0, 1667, 5857, 4, 12, UNI_MONGOLIANSUP } /* blk=mongoliansup */,
+ { 1, 7564, 0, 17, 0, UNI_ANCIENTGREEKMUSIC } /* ancientgreekmusic */,
+ { 3, 4424, 23, 17, 4, UNI_AHOM } /* scriptextensions=ahom */,
+ { 2, 30, 536, 1, 5, UNI_TANG } /* istang */,
+ { 0, 7752, 2403, 24, 3, UNI_JG__MANICHAEANTETH } /* joininggroup=manichaeanteth */,
+ { 0, 7274, 4369, 8, 2, UNI_Z } /* category=z */,
+ { 1, 2060, 934, 5, 2, -UNI_XPOSIXALPHA } /* alpha=f */,
+ { 0, 2287, 549, 3, 3, UNI_IN__4 } /* in=4.0 */,
+ { 42, 1102, 975, 4, 8, UNI_GURU } /* scx=gurmukhi */,
+ { 14, 423, 2312, 3, 12, UNI_AEGEANNUMBERS } /* inaegeannumbers */,
+ { 1, 4391, 763, 14, 3, UNI_NV__3_SLASH_64 } /* numericvalue=3/64 */,
+ { 0, 2324, 2852, 6, 7, UNI_MAHJONG } /* block=mahjong */,
+ { 4, 6236, 0, 15, 0, UNI_NV__10 } /* numericvalue=10 */,
+ { 3, 887, 0, 8, 0, UNI_AGE__10 } /* age=10.0 */,
+ { 0, 7267, 326, 16, 2, UNI_PF } /* generalcategory=pf */,
+ { 1, 7752, 4239, 23, 4, UNI_JG__MANICHAEANFIVE } /* joininggroup=manichaeanfive */,
+ { 3, 82, 0, 4, 0, UNI_GONG } /* gong */,
+ { 0, 1906, 5848, 8, 9, UNI_KANAEXTA } /* blk=kanaextendeda */,
+ { 3, 3093, 598, 12, 4, -UNI_POSIXXDIGIT } /* asciihexdigit=no */,
+ { 0, 309, 4506, 2, 14, UNI_LATINEXTB } /* inlatinextendedb */,
+ { 3, 7267, 4150, 16, 5, UNI_P } /* generalcategory=punct */,
+ { 0, 5937, 598, 20, 3, -UNI__PERL_NCHAR } /* noncharactercodepoint=n */,
+ { 0, 1823, 4461, 7, 11, UNI_SGNW } /* script=signwriting */,
+ { 0, 1823, 3349, 7, 15, UNI_MERC } /* script=meroiticcursive */,
+ { 5, 3407, 2192, 14, 8, UNI_NV__3_SLASH_64 } /* numericvalue=4.688e-02 */,
+ { 0, 236, 0, 4, 0, UNI_ZANB } /* zanb */,
+ { 6, 782, 0, 3, 0, UNI_ANY } /* any */,
+ { 1, 3228, 0, 15, 0, UNI_ARMI } /* imperialaramaic */,
+ { 0, 1454, 599, 2, 3, -UNI_SD } /* sd=no */,
+ { 2, 2324, 0, 6, 0, UNI_blk_values_index } /* block= */,
+ { 9, 1102, 1340, 4, 9, UNI_ORKH } /* scx=oldturkic */,
+ { 1, 1102, 4461, 4, 11, UNI_SGNW } /* scx=signwriting */,
+ { 4, 5595, 0, 21, 0, UNI_CWT } /* changeswhentitlecased */,
+ { 20, 2503, 934, 11, 2, -UNI_JOINC } /* joincontrol=f */,
+ { 3, 4424, 746, 17, 4, UNI_MARC } /* scriptextensions=marc */,
+ { 0, 2324, 1385, 6, 6, UNI_INTHAANA } /* block=thaana */,
+ { 0, 6090, 7825, 7, 30, UNI_MATHALPHANUM } /* block=mathematicalalphanumericsymbols */,
+ { 0, 339, 182, 4, 2, UNI_CCC__0 } /* ccc=nr */,
+ { 22, 2268, 0, 12, 0, UNI_PLAYINGCARDS } /* playingcards */,
+ { 1, 3391, 2223, 13, 9, UNI_NV__1_SLASH_16 } /* numericvalue=6.250e-02 */,
+ { 0, 7011, 2234, 23, 2, UNI_CCC__8 } /* canonicalcombiningclass=8 */,
+ { 0, 1667, 663, 4, 5, UNI_INLIMBU } /* blk=limbu */,
+ { 0, 8071, 0, 24, 0, UNI_CJK } /* blk=cjkunifiedideographs */,
+ { 1, 8246, 8508, 24, 14, UNI_INPC__BOTTOMANDRIGHT } /* indicpositionalcategory=bottomandright */,
+ { 16, 6165, 1779, 3, 11, UNI_MEDF } /* sc=medefaidrin */,
+ { 0, 622, 0, 7, 0, UNI_EXTPICT } /* extpict */,
+ { 1, 21, 7241, 1, 26, UNI_ENCLOSEDCJK } /* enclosedcjklettersandmonths */,
+ { 0, 2324, 5, 6, 3, UNI_OCR } /* block=ocr */,
+ { 65, 6165, 1255, 3, 7, UNI_SIDD } /* sc=siddham */,
+ { 0, 5616, 599, 21, 2, -UNI_CWU } /* changeswhenuppercased=n */,
+ { 1, 192, 0, 4, 0, UNI_TAGS } /* tags */,
+ { 0, 833, 353, 4, 4, UNI_TERM } /* term=yes */,
+ { 9, 15, 0, 4, 0, UNI_AGHB } /* aghb */,
+ { 4, 2348, 5671, 12, 3, -UNI_CI } /* caseignorable=n */,
+ { 2, 1424, 343, 7, 2, UNI_CCC__12 } /* ccc=ccc12 */,
+ { 0, 309, 1033, 2, 4, UNI_JAMO } /* injamo */,
+ { 0, 7889, 3998, 26, 4, UNI_CJKEXTG } /* cjkunifiedideographsextensiong */,
+ { 1, 1011, 585, 2, 2, UNI_CI } /* ci=t */,
+ { 3, 292, 290, 3, 2, UNI_NV__40 } /* nv=40 */,
+ { 66, 1391, 6324, 3, 6, UNI_WB__FO } /* wb=format */,
+ { 1, 6165, 27, 3, 4, UNI_ARMI } /* sc=armi */,
+ { 0, 461, 3268, 2, 5, UNI_XPOSIXALNUM } /* isalnum */,
+ { 6, 6165, 51, 3, 4, UNI_CANS } /* sc=cans */,
+ { 21, 4970, 599, 13, 2, -UNI_EMOD } /* emojimodifier=n */,
+ { 2, 1396, 0, 8, 0, UNI_XIDS } /* xidstart */,
+ { 6, 517, 1314, 4, 2, UNI_NV__700 } /* nv=700 */,
+ { 0, 339, 7239, 4, 2, UNI_CCC__28 } /* ccc=28 */,
+ { 1, 1424, 1318, 7, 2, UNI_CCC__20 } /* ccc=ccc20 */,
+ { 64, 753, 1792, 3, 9, UNI_NFCQC__M } /* nfkcqc=maybe */,
+ { 0, 7084, 6193, 6, 12, UNI_ARABICSUP } /* inarabicsupplement */,
+ { 1, 339, 5523, 4, 5, UNI_CCC__B } /* ccc=below */,
+ { 0, 1272, 7111, 3, 23, UNI_DIACRITICALSFORSYMBOLS } /* iscombiningmarksforsymbols */,
+ { 1, 7011, 7408, 18, 7, UNI_CCC__R } /* canonicalcombiningclass=r */,
+ { 2, 2536, 5084, 3, 4, UNI_JG__YUDH } /* jg=yudh */,
+ { 0, 2766, 4683, 3, 16, UNI_PF } /* gc=finalpunctuation */,
+ { 0, 552, 0, 4, 0, UNI_age_values_index } /* age= */,
+ { 17, 461, 2769, 2, 5, UNI_C } /* isother */,
+ { 1, 3791, 2060, 4, 8, UNI_MATHALPHANUM } /* mathalphanum */,
+ { 0, 2403, 620, 6, 5, UNI_ETHIOPICEXT } /* ethiopicext */,
+ { 1, 8343, 5762, 22, 16, UNI_INSC__SYLLABLEMODIFIER } /* indicsyllabiccategory=syllablemodifier */,
+ { 2, 2324, 6332, 6, 19, UNI_JAMOEXTB } /* block=hanguljamoextendedb */,
+ { 26, 4502, 81, 11, 2, UNI_LATINEXTG } /* blk=latinextg */,
+ { 5, 5532, 274, 21, 1, UNI_cwcf_values_index } /* changeswhencasefolded= */,
+ { 2, 2494, 2773, 3, 13, UNI_INGREEK } /* isgreekandcoptic */,
+ { 0, 1823, 1027, 7, 6, UNI_SC__YEZI } /* script=yezidi */,
+ { 65, 940, 0, 2, 0, UNI_CO } /* co */,
+ { 1, 615, 0, 7, 0, UNI_ELYM } /* elymaic */,
+ { 64, 1240, 1332, 3, 8, UNI_INOLDPERMIC } /* inoldpermic */,
+ { 0, 6165, 78, 3, 4, UNI_DSRT } /* sc=dsrt */,
+ { 0, 5769, 353, 4, 2, UNI_EMOD } /* emod=y */,
+ { 46, 4795, 1805, 14, 4, UNI_NV__60000 } /* numericvalue=60000 */,
+ { 2, 6165, 868, 3, 7, UNI_SC__TIRH } /* sc=tirhuta */,
+ { 1, 6870, 934, 20, 2, -UNI_CE } /* compositionexclusion=f */,
+ { 0, 1082, 0, 4, 0, UNI_XPOSIXWORD } /* word */,
+ { 3, 253, 599, 4, 2, -UNI_CWCF } /* cwcf=n */,
+ { 0, 1823, 430, 7, 4, UNI_SC__NKO } /* script=nkoo */,
+ { 0, 2718, 6300, 13, 10, UNI_BC__RLE } /* bc=righttoleftembedding */,
+ { 2, 1823, 608, 7, 4, UNI_ELBA } /* script=elba */,
+ { 3, 7267, 8356, 7, 11, UNI_CO } /* generalcategory=co */,
+ { 1, 1823, 15, 7, 4, UNI_AGHB } /* script=aghb */,
+ { 0, 8278, 1556, 4, 6, UNI_MISCARROWS } /* miscarrows */,
+ { 8, 461, 7449, 2, 28, UNI_PHONETICEXTSUP } /* isphoneticextensionssupplement */,
+ { 10, 7134, 585, 26, 5, UNI_PCM } /* prependedconcatenationmark=true */,
+ { 0, 4424, 124, 17, 4, UNI_LATN } /* scriptextensions=latn */,
+ { 9, 1823, 1205, 7, 7, UNI_SC__GRAN } /* script=grantha */,
+ { 16, 461, 3634, 2, 2, UNI_NL } /* isnl */,
+ { 7, 1102, 5353, 4, 20, UNI_PHLI } /* scx=inscriptionalpahlavi */,
+ { 0, 552, 387, 5, 2, UNI_AGE__5_DOT_2 } /* age=5.2 */,
+ { 0, 461, 0, 2, 2, UNI_CASEDLETTER } /* isl& */,
+ { 4, 309, 398, 2, 4, UNI_INMIAO } /* inmiao */,
+ { 2, 7274, 3196, 12, 8, UNI_NO } /* category=othernumber */,
+ { 1, 7274, 5243, 13, 12, UNI_PO } /* category=otherpunctuation */,
+ { 0, 1102, 3421, 4, 15, UNI_NARB } /* scx=oldnortharabian */,
+ { 0, 1479, 0, 5, 0, UNI_XPOSIXSPACE } /* space */,
+ { 1, 461, 4002, 2, 4, UNI_MODI } /* ismodi */,
+ { 5, 1667, 7724, 4, 18, UNI_INVS } /* blk=variationselectors */,
+ { 8, 2403, 6193, 6, 5, UNI_ETHIOPICSUP } /* ethiopicsup */,
+ { 18, 3093, 353, 13, 2, UNI_POSIXXDIGIT } /* asciihexdigit=y */,
+ { 0, 1734, 467, 3, 3, UNI_SOGO } /* issogo */,
+ { 25, 1790, 0, 6, 0, UNI_nfcqc_values_index } /* nfcqc= */,
+ { 2, 3848, 1072, 14, 3, UNI_NV__7_SLASH_12 } /* numericvalue=7/12 */,
+ { 83, 1823, 1340, 7, 9, UNI_ORKH } /* script=oldturkic */,
+ { 2, 833, 585, 4, 5, UNI_TERM } /* term=true */,
+ { 0, 6427, 4751, 13, 3, UNI_JG__SAD } /* joininggroup=sad */,
+ { 26, 895, 2125, 5, 2, UNI_AGE__6_DOT_3 } /* age=v63 */,
+ { 3, 1065, 394, 5, 1, UNI_NV__1_SLASH_5 } /* nv=1/5 */,
+ { 0, 1412, 0, 12, 0, UNI_BOXDRAWING } /* inboxdrawing */,
+ { 72, 1102, 868, 4, 7, UNI_TIRH } /* scx=tirhuta */,
+ { 0, 1409, 4698, 4, 2, UNI_LATIN1 } /* latin1 */,
+ { 2, 7274, 4683, 9, 16, UNI_PF } /* category=finalpunctuation */,
+ { 1, 2280, 546, 11, 3, UNI_IN__13 } /* presentin=13.0 */,
+ { 7, 3817, 764, 15, 2, UNI_NV__1_SLASH_64 } /* numericvalue=1/64 */,
+ { 2, 1667, 4651, 4, 8, UNI_INBOPOMOFO } /* blk=bopomofo */,
+ { 3, 7591, 63, 3, 2, UNI_LB__CP } /* lb=cp */,
+ { 65, 1667, 4911, 4, 15, UNI_DIACRITICALSSUP } /* blk=diacriticalssup */,
+ { 70, 510, 3846, 4, 2, UNI_NV__3_SLASH_8 } /* nv=3/8 */,
+ { 1, 597, 2030, 5, 5, UNI_DT__NB } /* dt=nobreak */,
+ { 1, 693, 5243, 6, 12, UNI_PO } /* isotherpunctuation */,
+ { 12, 2536, 2015, 3, 3, UNI_JG__WAW } /* jg=waw */,
+ { 8, 6427, 478, 13, 3, UNI_JG__BEH } /* joininggroup=beh */,
+ { 0, 5065, 636, 13, 3, UNI_JG__MANICHAEANNUN } /* jg=manichaeannun */,
+ { 4, 5574, 585, 21, 5, UNI_CWL } /* changeswhenlowercased=true */,
+ { 50, 4424, 3726, 16, 10, UNI_MLYM } /* scriptextensions=malayalam */,
+ { 11, 1102, 63, 4, 4, UNI_CPMN } /* scx=cpmn */,
+ { 0, 1823, 1003, 7, 6, UNI_LEPC } /* script=lepcha */,
+ { 1, 6427, 1760, 13, 3, UNI_JG__KAF } /* joininggroup=kaf */,
+ { 1, 7724, 0, 28, 0, UNI_VSSUP } /* variationselectorssupplement */,
+ { 1, 4584, 274, 18, 1, UNI_idst_values_index } /* idstrinaryoperator= */,
+ { 1, 1223, 3696, 4, 10, UNI_KANASUP } /* kanasupplement */,
+ { 0, 1102, 1003, 4, 6, UNI_LEPC } /* scx=lepcha */,
+ { 0, 2324, 6677, 6, 15, UNI_MODIFIERLETTERS } /* block=modifierletters */,
+ { 0, 1667, 3908, 4, 16, UNI_TANGUTCOMPONENTS } /* blk=tangutcomponents */,
+ { 1, 2324, 6692, 6, 22, UNI_TRANSPORTANDMAP } /* block=transportandmapsymbols */,
+ { 2, 876, 934, 4, 6, -UNI_IDEO } /* ideo=false */,
+ { 2, 5168, 1397, 6, 7, UNI__PERL_IDSTART } /* _perl_idstart */,
+ { 19, 1227, 0, 4, 0, UNI_MAKA } /* maka */,
+ { 3, 7274, 6324, 9, 6, UNI_CF } /* category=format */,
+ { 0, 1667, 6000, 4, 6, UNI_YIJING } /* blk=yijing */,
+ { 24, 716, 3622, 5, 3, UNI_KANGXI } /* inkangxi */,
+ { 0, 461, 571, 2, 7, UNI_AVST } /* isavestan */,
+ { 1, 5065, 5427, 14, 6, UNI_JG__MANICHAEANTHAMEDH } /* jg=manichaeanthamedh */,
+ { 1, 7383, 3924, 10, 14, UNI_BC__EN } /* bidiclass=europeannumber */,
+ { 1, 3502, 6193, 10, 12, UNI_ETHIOPICSUP } /* blk=ethiopicsupplement */,
+ { 3, 8071, 5252, 30, 4, UNI_CJKEXTE } /* blk=cjkunifiedideographsextensione */,
+ { 0, 7011, 5515, 24, 17, UNI_WB__EB } /* canonicalcombiningclass=attachedbelowleft */,
+ { 4, 6165, 410, 3, 4, UNI_SC__GONM } /* sc=gonm */,
+ { 1, 5895, 5909, 5, 7, UNI_SUPARROWSC } /* issuparrowsc */,
+ { 2, 8, 1079, 1, 7, UNI_POSIXWORD } /* perlword */,
+ { 2, 461, 4651, 2, 8, UNI_BOPO } /* isbopomofo */,
+ { 34, 2441, 0, 4, 0, UNI_NAND } /* nand */,
+ { 1, 5205, 4511, 11, 9, UNI_MYANMAREXTB } /* blk=myanmarextendedb */,
+ { 18, 3391, 1803, 12, 8, UNI_NV__1000000 } /* numericvalue=1000000 */,
+ { 3, 292, 1805, 4, 4, UNI_NV__90000 } /* nv=90000 */,
+ { 9, 309, 3475, 2, 15, UNI_INZANABAZARSQUARE } /* inzanabazarsquare */,
+ { 0, 1667, 5353, 4, 20, UNI_ININSCRIPTIONALPAHLAVI } /* blk=inscriptionalpahlavi */,
+ { 0, 6165, 212, 3, 4, UNI_TIBT } /* sc=tibt */,
+ { 4, 2503, 353, 11, 4, UNI_JOINC } /* joincontrol=yes */,
+ { 0, 1102, 997, 4, 6, UNI_KTHI } /* scx=kaithi */,
+ { 1, 658, 0, 5, 0, UNI_DOGR } /* dogra */,
+ { 0, 5065, 4259, 13, 4, UNI_JG__MANICHAEANYODH } /* jg=manichaeanyodh */,
+ { 4, 733, 8111, 3, 31, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* inegyptianhieroglyphformatcontrols */,
+ { 56, 324, 6103, 3, 13, UNI_SUPMATHOPERATORS } /* supmathoperators */,
+ { 1, 3696, 4607, 10, 13, UNI_SUPPUNCTUATION } /* supplementalpunctuation */,
+ { 0, 5460, 353, 19, 4, UNI_TERM } /* terminalpunctuation=yes */,
+ { 1, 3021, 569, 4, 2, UNI_IN__5_DOT_2 } /* in=v52 */,
+ { 0, 658, 0, 4, 0, UNI_DOGR } /* dogr */,
+ { 0, 461, 527, 2, 6, UNI_RJNG } /* isrejang */,
+ { 8, 6427, 7342, 13, 10, UNI_JG__TEHMARBUTA } /* joininggroup=tehmarbuta */,
+ { 2, 5916, 353, 21, 4, UNI_LOE } /* logicalorderexception=yes */,
+ { 0, 2324, 4809, 6, 18, UNI_ORNAMENTALDINGBATS } /* block=ornamentaldingbats */,
+ { 11, 1667, 1133, 4, 8, UNI_INVITHKUQI } /* blk=vithkuqi */,
+ { 9, 735, 599, 2, 2, UNI_EA__N } /* ea=n */,
+ { 7, 3204, 934, 14, 2, -UNI_GREXT } /* graphemeextend=f */,
+ { 17, 3817, 2115, 14, 8, UNI_NV__1_SLASH_64 } /* numericvalue=1.562e-02 */,
+ { 84, 309, 1914, 2, 8, UNI_UCASEXTA } /* inucasexta */,
+ { 3, 1823, 1144, 7, 9, UNI_BHKS } /* script=bhaiksuki */,
+ { 0, 7495, 2101, 27, 2, UNI_CCC__29 } /* canonicalcombiningclass=ccc29 */,
+ { 1, 925, 598, 2, 6, UNI_BPT__N } /* bpt=none */,
+ { 4, 5637, 1864, 21, 8, UNI_WB__EB } /* graphemeclusterbreak=ebasegaz */,
+ { 0, 309, 4651, 2, 11, UNI_BOPOMOFOEXT } /* inbopomofoext */,
+ { 2, 939, 353, 5, 4, UNI_ECOMP } /* ecomp=yes */,
+ { 0, 4424, 5857, 17, 9, UNI_MONG } /* scriptextensions=mongolian */,
+ { 5, 1455, 934, 3, 6, -UNI_DEP } /* dep=false */,
+ { 0, 1391, 543, 3, 2, UNI_WB__EB } /* wb=eb */,
+ { 0, 1667, 1926, 7, 7, UNI_CJKSYMBOLS } /* blk=cjksymbols */,
+ { 3, 2324, 108, 6, 4, UNI_INKAWI } /* block=kawi */,
+ { 2, 2324, 1414, 6, 10, UNI_BOXDRAWING } /* block=boxdrawing */,
+ { 10, 6427, 118, 13, 3, UNI_JG__DAL } /* joininggroup=dal */,
+ { 0, 461, 414, 2, 4, UNI_HANO } /* ishano */,
+ { 0, 6427, 4247, 13, 4, UNI_JG__KAPH } /* joininggroup=kaph */,
+ { 20, 461, 1262, 2, 7, UNI_SOYO } /* issoyombo */,
+ { 3, 1823, 1191, 7, 4, UNI_SC__BENG } /* script=beng */,
+ { 0, 8343, 2823, 22, 9, UNI_INSC__NONJOINER } /* indicsyllabiccategory=nonjoiner */,
+ { 1, 2766, 2814, 6, 8, UNI_SO } /* gc=othersymbol */,
+ { 4, 7383, 384, 10, 2, UNI_BC__EN } /* bidiclass=en */,
+ { 3, 461, 2060, 2, 5, UNI_XPOSIXALPHA } /* isalpha */,
+ { 33, 1823, 4487, 7, 6, UNI_SC__ZYYY } /* script=common */,
+ { 34, 2536, 3301, 3, 12, UNI_JG__VERTICALTAIL } /* jg=verticaltail */,
+ { 0, 4424, 2009, 17, 6, UNI_SYRC } /* scriptextensions=syriac */,
+ { 3, 406, 585, 2, 2, UNI_DI } /* di=t */,
+ { 32, 533, 6324, 3, 6, UNI_SB__FO } /* sb=format */,
+ { 0, 2324, 1248, 6, 7, UNI_INPHAGSPA } /* block=phagspa */,
+ { 80, 1102, 683, 4, 5, UNI_TAKR } /* scx=takri */,
+ { 0, 461, 2786, 2, 14, UNI_HIGHSURROGATES } /* ishighsurrogates */,
+ { 3, 1883, 585, 5, 5, UNI_BIDIC } /* bidic=true */,
+ { 0, 597, 1178, 4, 5, UNI_DT__NAR } /* dt=narrow */,
+ { 68, 8246, 3243, 24, 10, UNI_INPC__OVERSTRUCK } /* indicpositionalcategory=overstruck */,
+ { 40, 6165, 1090, 3, 4, UNI_SC__LINB } /* sc=linb */,
+ { 0, 461, 983, 2, 8, UNI_HIRA } /* ishiragana */,
+ { 24, 2732, 24, 5, 3, UNI_INAHOM } /* blk=ahom */,
+ { 4, 1102, 3493, 3, 9, UNI_CYRL } /* scx=cyrillic */,
+ { 2, 309, 5958, 2, 7, UNI_INSINHALA } /* insinhala */,
+ { 1, 106, 0, 2, 0, UNI_ZL } /* zl */,
+ { 0, 2842, 6193, 8, 12, UNI_ETHIOPICSUP } /* isethiopicsupplement */,
+ { 35, 4360, 4316, 10, 14, UNI_LB__BK } /* linebreak=mandatorybreak */,
+ { 0, 1823, 499, 7, 4, UNI_LYDI } /* script=lydi */,
+ { 4, 641, 3599, 4, 12, UNI_GCB__T } /* hst=trailingjamo */,
+ { 25, 461, 6866, 2, 24, UNI_COMPEX } /* isfullcompositionexclusion */,
+ { 13, 5769, 934, 4, 6, -UNI_EMOD } /* emod=false */,
+ { 0, 1272, 8153, 5, 21, UNI_CJKSYMBOLS } /* iscjksymbolsandpunctuation */,
+ { 69, 5637, 644, 20, 3, UNI_LB__H2 } /* graphemeclusterbreak=lv */,
+ { 33, 2324, 6495, 6, 5, UNI_MUSIC } /* block=music */,
+ { 0, 959, 353, 8, 4, UNI_EXT } /* extender=yes */,
+ { 0, 3013, 599, 5, 2, -UNI_EPRES } /* epres=n */,
+ { 1, 2324, 2268, 6, 12, UNI_PLAYINGCARDS } /* block=playingcards */,
+ { 0, 1221, 3696, 6, 10, UNI_KANASUP } /* inkanasupplement */,
+ { 6, 1396, 353, 8, 4, UNI_XIDS } /* xidstart=yes */,
+ { 0, 1894, 274, 12, 1, UNI_bidim_values_index } /* bidimirrored= */,
+ { 5, 832, 585, 5, 2, UNI_STERM } /* sterm=t */,
+ { 134, 1397, 353, 3, 2, UNI_IDS } /* ids=y */,
+ { 0, 6427, 5084, 13, 4, UNI_JG__YUDH } /* joininggroup=yudh */,
+ { 6, 1391, 507, 3, 2, UNI_WB__DQ } /* wb=dq */,
+ { 0, 3093, 598, 12, 2, UNI_ahex_values_index } /* asciihexdigit= */,
+ { 4, 1823, 1853, 7, 4, UNI_SC__SYLO } /* script=sylo */,
+ { 0, 6776, 0, 21, 0, UNI_MEETEIMAYEKEXT } /* meeteimayekextensions */,
+ { 0, 2536, 4751, 3, 3, UNI_JG__SAD } /* jg=sad */,
+ { 3, 6427, 4235, 13, 4, UNI_JG__BETH } /* joininggroup=beth */,
+ { 0, 461, 67, 2, 4, UNI_CPRT } /* iscprt */,
+ { 0, 2752, 585, 14, 5, UNI_ECOMP } /* emojicomponent=true */,
+ { 4, 7198, 8386, 7, 21, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* blk=supsymbolsandpictographs */,
+ { 1, 2180, 1317, 4, 5, UNI_NV__432000 } /* nv=432000 */,
+ { 34, 7274, 50, 9, 2, UNI_MC } /* category=mc */,
+ { 4, 3407, 346, 14, 1, UNI_NV__48 } /* numericvalue=48 */,
+ { 7, 1823, 2735, 6, 7, UNI_SC__ARAB } /* script=arabic */,
+ { 4, 8660, 0, 43, 0, UNI_UCASEXTA } /* unifiedcanadianaboriginalsyllabicsextendeda */,
+ { 2, 309, 732, 2, 7, UNI_INLINEARA } /* inlineara */,
+ { 3, 4941, 7442, 7, 25, UNI_KATAKANAEXT } /* block=katakanaphoneticextensions */,
+ { 9, 1479, 352, 4, 5, UNI_XPOSIXSPACE } /* space=yes */,
+ { 0, 309, 7449, 2, 28, UNI_PHONETICEXTSUP } /* inphoneticextensionssupplement */,
+ { 1, 271, 0, 4, 0, UNI_gcb_values_index } /* gcb= */,
+ { 5, 5595, 599, 21, 2, -UNI_CWT } /* changeswhentitlecased=n */,
+ { 0, 1823, 683, 7, 4, UNI_SC__TAKR } /* script=takr */,
+ { 2, 32, 4439, 1, 2, UNI_vs_values_index } /* vs= */,
+ { 1, 4424, 398, 17, 4, UNI_MIAO } /* scriptextensions=miao */,
+ { 3, 406, 934, 3, 2, -UNI_DIA } /* dia=f */,
+ { 5, 4424, 410, 17, 4, UNI_GONM } /* scriptextensions=gonm */,
+ { 0, 1243, 6462, 2, 25, UNI_SHORTHANDFORMATCONTROLS } /* blk=shorthandformatcontrols */,
+ { 66, 461, 4651, 2, 4, UNI_BOPO } /* isbopo */,
+ { 1, 3268, 0, 5, 0, UNI_XPOSIXALNUM } /* alnum */,
+ { 1, 4161, 0, 9, 0, UNI_DIA } /* diacritic */,
+ { 120, 2324, 2692, 6, 13, UNI_VERTICALFORMS } /* block=verticalforms */,
+ { 1, 7198, 8386, 16, 21, UNI_SUPSYMBOLSANDPICTOGRAPHS } /* blk=supplementalsymbolsandpictographs */,
+ { 2, 7274, 1393, 8, 2, UNI_M } /* category=m */,
+ { 1, 2018, 2932, 11, 12, UNI_JT__T } /* joiningtype=transparent */,
+ { 0, 257, 274, 4, 1, UNI_cwcm_values_index } /* cwcm= */,
+ { 1, 1424, 391, 7, 2, UNI_CCC__34 } /* ccc=ccc34 */,
+ { 0, 1102, 658, 4, 4, UNI_DOGR } /* scx=dogr */,
+ { 1, 6165, 901, 3, 8, UNI_ARMN } /* sc=armenian */,
+ { 3, 1102, 1015, 4, 4, UNI_TELU } /* scx=telu */,
+ { 2, 4845, 584, 16, 3, UNI__PERL_PATWS } /* patternwhitespace=t */,
+ { 12, 3634, 0, 2, 0, UNI_NL } /* nl */,
+ { 32, 313, 0, 4, 0, UNI_M } /* mark */,
+ { 1, 2766, 0, 3, 0, UNI_gc_values_index } /* gc= */,
+ { 0, 309, 2852, 2, 12, UNI_MAHJONG } /* inmahjongtiles */,
+ { 0, 7944, 4410, 28, 4, UNI_CJKEXTA } /* iscjkunifiedideographsextensiona */,
+ { 24, 1667, 8142, 4, 32, UNI_IDEOGRAPHICSYMBOLS } /* blk=ideographicsymbolsandpunctuation */,
+ { 7, 4360, 4288, 10, 14, UNI_LB__CR } /* linebreak=carriagereturn */,
+ { 0, 6165, 1234, 3, 7, UNI_SC__MULT } /* sc=multani */,
+ { 5, 1823, 1954, 7, 12, UNI_SC__GONG } /* script=gunjalagondi */,
+ { 3, 461, 658, 2, 4, UNI_DOGR } /* isdogr */,
+ { 0, 4360, 5769, 10, 9, UNI_EMOD } /* linebreak=emodifier */,
+ { 0, 6165, 1438, 3, 10, UNI_CHRS } /* sc=chorasmian */,
+ { 0, 5876, 0, 19, 0, UNI_SUNDANESESUP } /* sundanesesupplement */,
+ { 0, 1102, 951, 4, 8, UNI_DUPL } /* scx=duployan */,
+ { 48, 6618, 140, 5, 2, UNI_INPC__NA } /* inpc=na */,
+ { 4, 461, 6870, 2, 20, UNI_CE } /* iscompositionexclusion */,
+ { 0, 6165, 6776, 3, 11, UNI_MTEI } /* sc=meeteimayek */,
+ { 2, 5897, 0, 19, 0, UNI_SUPARROWSC } /* supplementalarrowsc */,
+ { 67, 30, 7854, 1, 5, UNI_IDEO } /* isideo */,
+ { 24, 461, 4271, 2, 17, UNI_KITS } /* iskhitansmallscript */,
+ { 1, 4424, 499, 17, 6, UNI_LYDI } /* scriptextensions=lydian */,
+ { 0, 2, 5671, 1, 3, -UNI_CE } /* ce=n */,
+ { 2, 2718, 6029, 3, 12, UNI_BC__AN } /* bc=arabicnumber */,
+ { 0, 200, 0, 4, 0, UNI_TAVT } /* tavt */,
+ { 0, 6165, 1003, 3, 6, UNI_LEPC } /* sc=lepcha */,
+ { 53, 461, 1522, 2, 4, UNI_UGAR } /* isugar */,
+ { 0, 7889, 6553, 25, 5, UNI_CJKEXTC } /* cjkunifiedideographsextensionc */,
+ { 1, 4360, 4780, 10, 15, UNI_LB__CB } /* linebreak=contingentbreak */,
+ { 49, 833, 599, 4, 3, -UNI_TERM } /* term=no */,
+ { 22, 309, 430, 2, 3, UNI_INNKO } /* innko */,
+ { 8, 6165, 8667, 3, 18, UNI_CANS } /* sc=canadianaboriginal */,
+ { 0, 5916, 0, 21, 0, UNI_LOE } /* logicalorderexception */,
+ { 6, 309, 847, 2, 7, UNI_INTAITHAM } /* intaitham */,
+ { 4, 641, 898, 3, 2, UNI_GCB__V } /* hst=v */,
+ { 3, 5939, 353, 5, 4, UNI__PERL_NCHAR } /* nchar=yes */,
+ { 6, 4360, 1612, 10, 2, UNI_LB__LF } /* linebreak=lf */,
+ { 0, 2324, 7537, 6, 27, UNI_ALPHABETICPF } /* block=alphabeticpresentationforms */,
+ { 0, 6165, 94, 3, 4, UNI_SC__GURU } /* sc=guru */,
+ { 69, 1198, 7972, 3, 15, UNI_CUNEIFORMNUMBERS } /* incuneiformnumbers */,
+ { 0, 641, 4030, 4, 13, UNI_HST__NA } /* hst=notapplicable */,
+ { 0, 1396, 585, 4, 2, UNI_XIDS } /* xids=t */,
+ { 0, 2060, 585, 5, 5, UNI_XPOSIXALPHA } /* alpha=true */,
+ { 11, 1294, 0, 9, 0, UNI_NBAT } /* nabataean */,
+ { 0, 1823, 1003, 7, 4, UNI_LEPC } /* script=lepc */,
+ { 0, 2180, 290, 4, 1, UNI_NV__44 } /* nv=44 */,
+ { 5, 3863, 1314, 14, 3, UNI_NV__8000 } /* numericvalue=8000 */,
+ { 0, 7796, 0, 29, 0, UNI_ENCLOSEDIDEOGRAPHICSUP } /* enclosedideographicsupplement */,
+ { 0, 3848, 0, 15, 0, UNI_NV__70 } /* numericvalue=70 */,
+ { 1, 2, 598, 2, 3, -UNI_CWT } /* cwt=n */,
+ { 69, 8343, 6167, 21, 18, UNI_INSC__CONSONANTPREFIXED } /* indicsyllabiccategory=consonantprefixed */,
+ { 4, 1397, 585, 3, 5, UNI_IDS } /* ids=true */,
+ { 4, 1667, 3692, 4, 4, UNI_INLISU } /* blk=lisu */,
+ { 1, 1667, 779, 4, 7, UNI_INOSMANYA } /* blk=osmanya */,
+ { 3, 309, 2852, 2, 7, UNI_MAHJONG } /* inmahjong */,
+ { 8, 2718, 5479, 3, 18, UNI_BC__ET } /* bc=europeanterminator */,
+ { 5, 1424, 1153, 7, 2, UNI_CCC__24 } /* ccc=ccc24 */,
+ { 4, 1823, 120, 7, 4, UNI_LAO } /* script=laoo */,
+ { 5, 6165, 2411, 3, 8, UNI_SC__KANA } /* sc=katakana */,
+ { 1, 4, 584, 2, 3, UNI_LOE } /* loe=t */,
+ { 32, 5065, 3743, 13, 3, UNI_JG__MANICHAEANTAW } /* jg=manichaeantaw */,
+ { 0, 2335, 0, 13, 0, UNI_BLOCKELEMENTS } /* blockelements */,
+ { 24, 4424, 590, 17, 7, UNI_DSRT } /* scriptextensions=deseret */,
+ { 3, 4424, 810, 17, 4, UNI_SYRC } /* scriptextensions=syrc */,
+ { 0, 5637, 898, 20, 2, UNI_GCB__V } /* graphemeclusterbreak=v */,
+ { 3, 339, 0, 6, 0, UNI_CCC__12 } /* ccc=12 */,
+ { 0, 8311, 5252, 32, 4, UNI_CJKEXTE } /* block=cjkunifiedideographsextensione */,
+ { 5, 6165, 854, 3, 7, UNI_TAVT } /* sc=taiviet */,
+ { 0, 461, 4725, 2, 16, UNI_TANGUTSUP } /* istangutsupplement */,
+ { 4, 4424, 297, 17, 5, UNI_ORYA } /* scriptextensions=oriya */,
+ { 3, 3391, 1805, 14, 5, UNI_NV__200000 } /* numericvalue=200000 */,
+ { 4, 1102, 1262, 4, 4, UNI_SOYO } /* scx=soyo */,
+ { 6, 292, 1318, 3, 2, UNI_NV__20 } /* nv=20 */,
+ { 50, 2180, 1805, 4, 5, UNI_NV__400000 } /* nv=400000 */,
+ { 0, 597, 366, 3, 3, UNI_DT__SQR } /* dt=sqr */,
+ { 0, 470, 0, 4, 0, UNI_TNSA } /* tnsa */,
+ { 0, 7267, 2483, 16, 11, UNI_CASEDLETTER } /* generalcategory=casedletter */,
+ { 0, 1823, 1509, 7, 4, UNI_SC__JAVA } /* script=java */,
+ { 0, 7267, 1427, 15, 3, UNI_XPOSIXCNTRL } /* generalcategory=cc */,
+ { 1, 6165, 1978, 3, 4, UNI_SC__SOGD } /* sc=sogd */,
+ { 0, 1397, 2931, 3, 3, UNI_IDST } /* idst=t */,
+ { 1, 552, 2289, 3, 3, UNI_AGE__14 } /* age=14 */,
+ { 4, 1065, 763, 4, 3, UNI_NV__1_SLASH_64 } /* nv=1/64 */,
+ { 1, 7267, 50, 16, 2, UNI_MC } /* generalcategory=mc */,
+ { 1, 1823, 1255, 7, 4, UNI_SIDD } /* script=sidd */,
+ { 0, 3391, 2210, 12, 10, UNI_NV__7_SLASH_12 } /* numericvalue=5.833e-01 */,
+ { 2, 309, 1685, 2, 11, UNI_INCYPROMINOAN } /* incyprominoan */,
+ { 3, 3014, 394, 11, 2, UNI_IN__5_DOT_1 } /* presentin=v51 */,
+ { 2, 2324, 3583, 6, 16, UNI_HIGHPUSURROGATES } /* block=highpusurrogates */,
+ { 0, 6076, 2370, 7, 12, UNI_GREEKEXT } /* block=greekextended */,
+ { 2, 309, 6103, 2, 13, UNI_MATHOPERATORS } /* inmathoperators */,
+ { 0, 5574, 934, 21, 2, -UNI_CWL } /* changeswhenlowercased=f */,
+ { 0, 309, 192, 2, 4, UNI_TAGS } /* intags */,
+ { 129, 339, 0, 2, 0, UNI_XPOSIXCNTRL } /* cc */,
+ { 0, 1248, 0, 7, 0, UNI_PHAG } /* phagspa */,
+ { 0, 3817, 1071, 14, 4, UNI_NV__11_SLASH_12 } /* numericvalue=11/12 */,
+ { 3, 1667, 0, 4, 0, UNI_blk_values_index } /* blk= */,
+ { 25, 7648, 1162, 18, 6, UNI_DT__ENC } /* decompositiontype=circle */,
+ { 1, 461, 5460, 2, 19, UNI_TERM } /* isterminalpunctuation */,
+ { 0, 1479, 352, 4, 2, UNI_wspace_values_index } /* space= */,
+ { 0, 2842, 8111, 3, 31, UNI_EGYPTIANHIEROGLYPHFORMATCONTROLS } /* isegyptianhieroglyphformatcontrols */,
+ { 0, 1102, 4176, 4, 6, UNI_HANG } /* scx=hangul */,
+ { 0, 1823, 418, 7, 4, UNI_KHMR } /* script=khmr */,
+ { 6, 271, 248, 4, 2, UNI_GCB__CN } /* gcb=cn */,
+ { 64, 2324, 1592, 6, 10, UNI_INSAURASHTRA } /* block=saurashtra */,
+ { 43, 1205, 0, 4, 0, UNI_GRAN } /* gran */,
+ { 6, 1823, 1812, 7, 11, UNI_HMNG } /* script=pahawhhmong */,
+ { 6, 1823, 1133, 7, 4, UNI_VITH } /* script=vith */,
+ { 81, 1479, 584, 4, 3, UNI_XPOSIXSPACE } /* space=t */,
+ { 2, 1479, 933, 4, 7, -UNI_XPOSIXSPACE } /* space=false */,
+ { 5, 5637, 1887, 21, 7, UNI_GCB__CN } /* graphemeclusterbreak=control */,
+ { 17, 1823, 663, 7, 5, UNI_SC__LIMB } /* script=limbu */,
+ { 0, 608, 0, 7, 0, UNI_ELBA } /* elbasan */,
+ { 1, 5156, 3463, 10, 12, UNI_WB__EB } /* wordbreak=glueafterzwj */,
+ { 0, 1667, 4896, 4, 5, UNI_INBAMUM } /* blk=bamum */,
+ { 0, 3014, 344, 11, 2, UNI_IN__2_DOT_1 } /* presentin=v21 */,
+ { 2, 30, 1695, 1, 7, UNI_DOMINO } /* indomino */,
+ { 1, 461, 2780, 2, 6, UNI_COPT } /* iscoptic */,
+ { 2, 4424, 4089, 17, 4, UNI_SIND } /* scriptextensions=sind */,
+ { 0, 461, 7036, 2, 26, UNI_HALFANDFULLFORMS } /* ishalfwidthandfullwidthforms */,
+ { 0, 5065, 5425, 12, 8, UNI_JG__MANICHAEANDHAMEDH } /* jg=manichaeandhamedh */,
+ { 1, 2287, 389, 3, 3, UNI_IN__6_DOT_3 } /* in=6.3 */,
+ { 0, 2483, 274, 5, 1, UNI_cased_values_index } /* cased= */,
+ { 1, 5895, 4607, 12, 13, UNI_SUPPUNCTUATION } /* issupplementalpunctuation */,
+ { 3, 1667, 7855, 4, 32, UNI_INIDC } /* blk=ideographicdescriptioncharacters */,
+ { 0, 4827, 0, 18, 0, UNI_ZP } /* paragraphseparator */,
+ { 0, 1823, 1522, 7, 4, UNI_UGAR } /* script=ugar */,
+ { 4, 6165, 116, 3, 4, UNI_SC__KNDA } /* sc=knda */,
+ { 0, 461, 5801, 2, 19, UNI_SUPARROWSB } /* issupplementalarrowsb */,
+ { 4, 510, 290, 5, 1, UNI_NV__3_SLASH_4 } /* nv=3/4 */,
+ { 65, 7214, 520, 25, 1, UNI_CCC__17 } /* canonicalcombiningclass=17 */,
+ { 0, 552, 2182, 3, 4, UNI_AGE__4_DOT_1 } /* age=4.1 */,
+ { 0, 959, 353, 8, 2, UNI_EXT } /* extender=y */,
+ { 0, 6090, 4511, 13, 9, UNI_MYANMAREXTB } /* block=myanmarextendedb */,
+ { 4, 1667, 7972, 5, 29, UNI_CUNEIFORMNUMBERS } /* blk=cuneiformnumbersandpunctuation */,
+ { 0, 4424, 168, 17, 4, UNI_COPT } /* scriptextensions=qaac */,
+ { 0, 261, 599, 5, 3, -UNI_CWKCF } /* cwkcf=no */,
+ { 3, 2494, 6945, 5, 15, UNI_GEOMETRICSHAPESEXT } /* isgeometricshapesext */,
+ { 1, 2766, 248, 3, 2, UNI_CN } /* gc=cn */,
+ { 0, 8071, 4410, 30, 4, UNI_CJKEXTA } /* blk=cjkunifiedideographsextensiona */,
+ { 4, 2514, 7620, 3, 19, UNI_MISCSYMBOLS } /* ismiscellaneoussymbols */,
+ { 0, 1102, 2068, 4, 4, UNI_MEND } /* scx=mend */,
+ { 81, 1102, 818, 4, 7, UNI_SHRD } /* scx=sharada */,
+ { 4, 510, 1805, 4, 4, UNI_NV__30000 } /* nv=30000 */,
+ { 24, 5460, 0, 19, 0, UNI_TERM } /* terminalpunctuation */,
+ { 33, 505, 353, 5, 2, UNI_NFDQC__Y } /* nfdqc=y */,
+ { 2, 1102, 1358, 4, 9, UNI_PALM } /* scx=palmyrene */,
+ { 0, 1200, 6382, 3, 18, UNI_CJKCOMPATFORMS } /* cjkcompatibilityforms */,
+ { 4, 6450, 4191, 14, 5, UNI_SB__LO } /* sentencebreak=lower */,
+ { 0, 2432, 1553, 3, 9, UNI_MISCARROWS } /* inmiscarrows */,
+ { 17, 1243, 6080, 2, 10, UNI_INGEORGIAN } /* blk=georgian */,
+ { 1, 298, 599, 2, 3, -UNI_RI } /* ri=no */,
+ { 7, 2536, 1540, 3, 3, UNI_JG__YEH } /* jg=yeh */,
+ { 256, 4424, 779, 17, 4, UNI_OSMA } /* scriptextensions=osma */,
+ { 2, 6165, 1191, 3, 4, UNI_SC__BENG } /* sc=beng */,
+ { 4, 6236, 1805, 19, 7, UNI_NV__1000000000000 } /* numericvalue=1000000000000 */,
+ { 13, 5595, 353, 21, 4, UNI_CWT } /* changeswhentitlecased=yes */,
+ { 0, 2494, 2370, 3, 7, UNI_GREEKEXT } /* isgreekext */,
+ { 62, 7267, 4827, 16, 18, UNI_ZP } /* generalcategory=paragraphseparator */,
+ { 0, 7804, 341, 10, 2, UNI_ideo_values_index } /* ideographic= */,
+ { 2, 4970, 352, 16, 3, UNI_EBASE } /* emojimodifierbase=y */,
+ { 0, 8343, 3257, 31, 6, UNI_INSC__CONSONANTKILLER } /* indicsyllabiccategory=consonantkiller */,
+ { 0, 1823, 31, 7, 4, UNI_AVST } /* script=avst */,
+ { 0, 5156, 543, 10, 3, UNI_WB__EB } /* wordbreak=ebg */,
+ { 5, 5168, 1486, 17, 3, UNI__PERL_CHARNAME_BEGIN } /* _perl_charname_begin */,
+ { 0, 461, 5857, 2, 19, UNI_MONGOLIANSUP } /* ismongoliansupplement */,
+ { 1, 6165, 2811, 3, 5, UNI_KHMR } /* sc=khmer */,
+ { 0, 6163, 2613, 5, 6, UNI_LB__ZWJ } /* insc=joiner */,
+ { 2, 597, 1162, 3, 6, UNI_DT__ENC } /* dt=circle */,
+ { 1, 4519, 0, 18, 0, UNI_CYRILLICEXTC } /* block=cyrillicextc */,
+ { 14, 461, 7724, 2, 28, UNI_VSSUP } /* isvariationselectorssupplement */,
+ { 14, 2004, 248, 5, 5, UNI_POSIXCNTRL } /* posixcntrl */,
+ { 3, 4391, 2172, 14, 8, UNI_NV__3_SLASH_8 } /* numericvalue=3.750e-01 */,
+ { 1, 0, 3693, 1, 3, UNI_LISU } /* lisu */,
+ { 9, 2002, 4569, 7, 5, UNI_POSIXUPPER } /* isposixupper */,
+ { 0, 2324, 2441, 6, 11, UNI_INNANDINAGARI } /* block=nandinagari */,
+ { 86, 5769, 599, 4, 3, -UNI_EMOD } /* emod=no */,
+ { 4, 7724, 353, 17, 4, UNI_VS } /* variationselector=yes */,
+ { 0, 461, 909, 2, 4, UNI_BALI } /* isbali */,
+ { 0, 2403, 0, 4, 0, UNI_ETHI } /* ethi */,
+ { 1, 1102, 2441, 4, 4, UNI_NAND } /* scx=nand */,
+ { 0, 115, 0, 2, 0, UNI_SK } /* sk */,
+ { 1, 5979, 0, 3, 0, UNI_vo_values_index } /* vo= */,
+ { 0, 5574, 934, 21, 6, -UNI_CWL } /* changeswhenlowercased=false */,
+ { 40, 339, 289, 4, 1, UNI_CCC__0 } /* ccc=0 */,
+ { 1, 2180, 2657, 4, 8, UNI_NV__2_SLASH_5 } /* nv=4.000e-01 */,
+ { 0, 309, 7480, 2, 14, UNI_PUA } /* inprivateusearea */,
+ { 1, 7214, 288, 25, 2, UNI_CCC__130 } /* canonicalcombiningclass=130 */,
+ { 25, 1667, 5682, 4, 5, UNI_INGREEK } /* blk=greek */,
+ { 1, 461, 4060, 2, 15, UNI_BRAI } /* isbraillepatterns */,
+ { 0, 7804, 353, 11, 2, UNI_IDEO } /* ideographic=y */,
+ { 0, 1454, 934, 2, 2, -UNI_SD } /* sd=f */,
+ { 94, 7267, 115, 16, 2, UNI_SK } /* generalcategory=sk */,
+ { 0, 1667, 7480, 4, 14, UNI_PUA } /* blk=privateusearea */,
+ { 0, 5658, 6881, 15, 9, UNI_IDENTIFIERTYPE__EXCLUSION } /* identifiertype=exclusion */,
+ { 115, 1801, 1805, 7, 5, UNI_NV__100000000 } /* nv=100000000 */,
+ { 2, 1667, 3692, 4, 7, UNI_LISUSUP } /* blk=lisusup */,
+ { 0, 8343, 2382, 22, 5, UNI_INSC__VOWEL } /* indicsyllabiccategory=vowel */,
+ { 2, 1667, 6332, 4, 19, UNI_JAMOEXTB } /* blk=hanguljamoextendedb */,
+ { 0, 309, 1834, 2, 11, UNI_INSORASOMPENG } /* insorasompeng */,
+ { 1, 2324, 1509, 6, 8, UNI_INJAVANESE } /* block=javanese */,
+ { 1, 4391, 3876, 15, 2, UNI_NV__3_SLASH_80 } /* numericvalue=3/80 */,
+ { 0, 7495, 393, 27, 2, UNI_CCC__15 } /* canonicalcombiningclass=ccc15 */,
+ { 1, 461, 98, 2, 4, UNI_HLUW } /* ishluw */,
+ { 1, 6165, 176, 3, 4, UNI_SC__ROHG } /* sc=rohg */,
+ { 0, 5658, 6534, 10, 14, UNI_IDENTIFIERSTATUS__ALLOWED } /* identifierstatus=allowed */,
+ { 0, 339, 2742, 4, 4, UNI_CCC__6 } /* ccc=hanr */,
+ { 0, 3490, 7467, 12, 13, UNI_CYRILLICSUP } /* blk=cyrillicsupplementary */,
+ { 3, 1667, 1322, 4, 9, UNI_INOLDITALIC } /* blk=olditalic */,
+ { 1, 4424, 4060, 17, 7, UNI_BRAI } /* scriptextensions=braille */,
+ { 2, 1102, 1205, 4, 4, UNI_GRAN } /* scx=gran */,
+ { 2, 3391, 2108, 13, 3, UNI_NV__500 } /* numericvalue=500 */,
+ { 1, 716, 7443, 4, 24, UNI_KATAKANAEXT } /* inkatakanaphoneticextensions */,
+ { 0, 423, 24, 3, 3, UNI_INAHOM } /* inahom */,
+ { 0, 1728, 8174, 6, 29, UNI_ARABICMATH } /* arabicmathematicalalphabeticsymbols */,
+ { 0, 4424, 917, 17, 8, UNI_BASS } /* scriptextensions=bassavah */,
+ { 0, 2432, 6597, 3, 21, UNI_MISCTECHNICAL } /* inmiscellaneoustechnical */,
+ { 0, 309, 6900, 2, 14, UNI_BYZANTINEMUSIC } /* inbyzantinemusic */,
+ { 0, 6841, 8505, 23, 3, UNI_di_values_index } /* defaultignorablecodepoint= */,
+ { 7, 253, 585, 4, 5, UNI_CWCF } /* cwcf=true */,
+ { 0, 339, 3141, 4, 11, UNI_CCC__DA } /* ccc=doubleabove */,
+ { 22, 6450, 2968, 14, 3, UNI_SB__SE } /* sentencebreak=sep */,
+ { 1, 2525, 0, 11, 0, UNI_XPOSIXBLANK } /* xposixblank */,
+ { 1, 2832, 4511, 10, 9, UNI_CYRILLICEXTB } /* iscyrillicextendedb */,
+ { 85, 309, 333, 2, 6, UNI_INCARIAN } /* incarian */,
+ { 2, 2280, 2199, 11, 3, UNI_IN__12 } /* presentin=12.0 */,
+ { 3, 6165, 3475, 3, 15, UNI_ZANB } /* sc=zanabazarsquare */,
+ { 17, 461, 1027, 2, 6, UNI_YEZI } /* isyezidi */,
+ { 86, 2732, 649, 5, 4, UNI_INADLAM } /* blk=adlam */,
+ { 4, 1102, 152, 4, 4, UNI_OSGE } /* scx=osge */,
+ { 0, 461, 4725, 2, 9, UNI_TANGUTSUP } /* istangutsup */,
+ { 3, 309, 6495, 2, 5, UNI_MUSIC } /* inmusic */,
+ { 0, 5216, 6957, 11, 9, UNI_LATINEXTE } /* block=latinextendede */,
+ { 0, 10, 2046, 1, 11, UNI_GONM } /* masaramgondi */,
+ { 70, 5895, 5878, 4, 17, UNI_SUNDANESESUP } /* issundanesesupplement */,
+ { 8, 2536, 4228, 3, 7, UNI_JG__HEHGOAL } /* jg=hehgoal */,
+ { 2, 375, 934, 5, 6, -UNI_GREXT } /* grext=false */,
+ { 1, 461, 426, 2, 4, UNI_MRO } /* ismroo */,
+ { 5, 1243, 995, 2, 3, UNI_XPOSIXBLANK } /* blank */,
+ { 0, 4360, 309, 10, 2, UNI_LB__IN } /* linebreak=in */,
+ { 17, 4852, 584, 9, 6, UNI_XPOSIXSPACE } /* whitespace=true */,
+ { 1, 4360, 1933, 10, 9, UNI_LB__AI } /* linebreak=ambiguous */,
+ { 1, 8667, 0, 18, 0, UNI_CANS } /* canadianaboriginal */,
+ { 2, 309, 216, 2, 4, UNI_INTOTO } /* intoto */,
+ { 2, 461, 43, 2, 4, UNI_BUHD } /* isbuhd */,
+ { 20, 2432, 2046, 3, 11, UNI_INMASARAMGONDI } /* inmasaramgondi */,
+ { 0, 1823, 1086, 7, 4, UNI_SC__KTHI } /* script=kthi */,
+ { 2, 2514, 4511, 9, 9, UNI_MYANMAREXTB } /* ismyanmarextendedb */,
+ { 0, 1397, 0, 7, 0, UNI_IDS } /* idstart */,
+ { 4, 1667, 6103, 4, 13, UNI_MATHOPERATORS } /* blk=mathoperators */,
+ { 1, 3098, 598, 7, 4, -UNI_XPOSIXXDIGIT } /* hexdigit=no */,
+ { 0, 461, 422, 2, 4, UNI_LINA } /* islina */,
+ { 0, 4424, 474, 17, 4, UNI_VAI } /* scriptextensions=vaii */,
+ { 2, 3407, 290, 14, 1, UNI_NV__44 } /* numericvalue=44 */,
+ { 0, 7752, 4251, 23, 4, UNI_JG__MANICHAEANQOPH } /* joininggroup=manichaeanqoph */,
+ { 0, 406, 353, 3, 2, UNI_DIA } /* dia=y */,
+ { 6, 225, 0, 2, 0, UNI_PE } /* pe */,
+ { 0, 6090, 4636, 7, 15, UNI_MISCMATHSYMBOLSB } /* block=miscmathsymbolsb */,
+ { 0, 2324, 1572, 6, 10, UNI_INOLDPERSIAN } /* block=oldpersian */,
+ { 4, 461, 3040, 2, 13, UNI_QMARK } /* isquotationmark */,
+ { 1, 6618, 0, 8, 0, UNI_INPC__TOP } /* inpc=top */,
+ { 0, 6165, 474, 3, 4, UNI_VAI } /* sc=vaii */,
+ { 0, 1823, 1562, 7, 10, UNI_NAGM } /* script=nagmundari */,
+ { 0, 2324, 7467, 6, 28, UNI_SUPPUAA } /* block=supplementaryprivateuseareaa */,
+ { 2, 1102, 1779, 4, 11, UNI_MEDF } /* scx=medefaidrin */,
+ { 0, 461, 434, 2, 4, UNI_OGAM } /* isogam */,
+ { 3, 1272, 3163, 3, 14, UNI_CONTROLPICTURES } /* iscontrolpictures */,
+ { 0, 2002, 1079, 3, 7, UNI_POSIXWORD } /* isperlword */,
+ { 4, 2842, 6193, 8, 5, UNI_ETHIOPICSUP } /* isethiopicsup */,
+ { 0, 1823, 3026, 7, 14, UNI_SC__PHLP } /* script=psalterpahlavi */,
+ { 0, 2324, 4651, 6, 11, UNI_BOPOMOFOEXT } /* block=bopomofoext */,
+ { 1, 1376, 0, 9, 0, UNI_SAMR } /* samaritan */,
+ { 6, 4360, 272, 10, 2, UNI_LB__CB } /* linebreak=cb */,
+ { 1, 7267, 4191, 16, 15, UNI_LOWERCASELETTER } /* generalcategory=lowercaseletter */,
+ { 65, 339, 0, 4, 0, UNI_ccc_values_index } /* ccc= */,
+ { 0, 461, 608, 2, 4, UNI_ELBA } /* iselba */,
+ { 6, 292, 1070, 3, 2, UNI_NV__31 } /* nv=31 */,
+ { 12, 1424, 288, 7, 2, UNI_CCC__30 } /* ccc=ccc30 */,
+ { 0, 1823, 43, 7, 4, UNI_SC__BUHD } /* script=buhd */,
+ { 8, 1823, 78, 7, 4, UNI_DSRT } /* script=dsrt */,
+ { 4, 3984, 934, 17, 6, -UNI_EPRES } /* emojipresentation=false */,
+ { 16, 3892, 353, 16, 2, UNI_STERM } /* sentenceterminal=y */,
+ { 0, 1255, 0, 7, 0, UNI_SIDD } /* siddham */,
+ { 2, 7011, 689, 24, 3, UNI_CCC__214 } /* canonicalcombiningclass=ata */,
+ { 6, 3391, 345, 13, 2, UNI_NV__18 } /* numericvalue=18 */,
+ { 2, 4424, 991, 17, 6, UNI_HATR } /* scriptextensions=hatran */,
+ { 1, 3391, 388, 13, 2, UNI_NV__26 } /* numericvalue=26 */,
+ { 2, 2536, 4221, 3, 14, UNI_JG__HAMZAONHEHGOAL } /* jg=hamzaonhehgoal */,
+ { 36, 1823, 917, 7, 8, UNI_BASS } /* script=bassavah */,
+ { 10, 309, 5448, 2, 3, UNI_PUA } /* inpua */,
+ { 0, 154, 6945, 3, 20, UNI_GEOMETRICSHAPESEXT } /* geometricshapesextended */,
+ { 0, 1102, 1144, 4, 9, UNI_BHKS } /* scx=bhaiksuki */,
+ { 0, 5937, 934, 21, 2, -UNI__PERL_NCHAR } /* noncharactercodepoint=f */,
+ { 0, 6618, 0, 5, 0, UNI_inpc_values_index } /* inpc= */,
+ { 0, 4043, 585, 17, 5, UNI_IDSB } /* idsbinaryoperator=true */,
+ { 1, 6427, 702, 20, 4, UNI_JG__AFRICANNOON } /* joininggroup=africannoon */,
+ { 5, 533, 4, 3, 2, UNI_SB__LO } /* sb=lo */,
+ { 5, 4424, 2811, 17, 5, UNI_KHMR } /* scriptextensions=khmer */,
+ { 2, 461, 7537, 2, 10, UNI_XPOSIXALPHA } /* isalphabetic */,
+ { 12, 6287, 6021, 14, 8, UNI_BC__LRO } /* bc=lefttorightoverride */,
+ { 0, 7011, 582, 25, 2, UNI_CCC__BR } /* canonicalcombiningclass=222 */,
+ { 2, 7274, 326, 9, 2, UNI_PF } /* category=pf */,
+ { 1, 4391, 394, 15, 1, UNI_NV__3_SLASH_5 } /* numericvalue=3/5 */,
+ { 0, 5065, 4267, 13, 4, UNI_JG__MANICHAEANTETH } /* jg=manichaeanteth */,
+ { 132, 5185, 0, 20, 0, UNI_HLUW } /* anatolianhieroglyphs */,
+ { 3, 1492, 5863, 7, 13, UNI_GEORGIANSUP } /* ingeorgiansupplement */,
+ { 5, 461, 840, 2, 7, UNI_TGLG } /* istagalog */,
+ { 12, 271, 4369, 2, 2, UNI_Z } /* gc=z */,
+ { 1, 1894, 599, 5, 3, -UNI_BIDIM } /* bidim=no */,
+ { 1, 4360, 543, 10, 2, UNI_EBASE } /* linebreak=eb */,
+ { 3, 324, 5813, 3, 7, UNI_SUPARROWSB } /* suparrowsb */,
+ { 9, 2348, 933, 12, 3, -UNI_CI } /* caseignorable=f */,
+ { 1, 6165, 369, 3, 4, UNI_GOTH } /* sc=goth */,
+ { 9, 2523, 1942, 8, 5, UNI_XPOSIXGRAPH } /* isxposixgraph */,
+ { 33, 204, 84, 2, 2, UNI_TFNG } /* tfng */,
+ { 2, 7591, 380, 3, 6, UNI_LB__HY } /* lb=hyphen */,
+ { 7, 266, 353, 3, 2, UNI_CWT } /* cwt=y */,
+ { 17, 5283, 0, 9, 0, UNI_HALFMARKS } /* halfmarks */,
+ { 0, 461, 1303, 2, 9, UNI_TALU } /* isnewtailue */,
+ { 2, 2324, 2852, 6, 12, UNI_MAHJONG } /* block=mahjongtiles */,
+ { 0, 292, 345, 3, 2, UNI_NV__18 } /* nv=18 */,
+ { 0, 309, 4862, 2, 4, UNI_RUMI } /* inrumi */,
+ { 18, 6870, 599, 20, 2, -UNI_CE } /* compositionexclusion=n */,
+ { 0, 5616, 934, 21, 2, -UNI_CWU } /* changeswhenuppercased=f */,
+ { 26, 1102, 1003, 4, 4, UNI_LEPC } /* scx=lepc */,
+ { 2, 6165, 634, 3, 7, UNI_SC__HANO } /* sc=hanunoo */,
+ { 4, 1667, 32, 4, 2, UNI_INVS } /* blk=vs */,
+ { 6, 309, 426, 2, 3, UNI_INMRO } /* inmro */,
+ { 2, 1065, 891, 5, 2, UNI_NV__1_SLASH_10 } /* nv=1/10 */,
+ { 8, 2324, 3938, 7, 16, UNI_UCAS } /* block=canadiansyllabics */,
+ { 4, 4424, 794, 17, 4, UNI_LANA } /* scriptextensions=lana */,
+ { 2, 461, 6000, 2, 21, UNI_YIJING } /* isyijinghexagramsymbols */,
+ { 0, 4569, 0, 5, 0, UNI_XPOSIXUPPER } /* upper */,
+ { 1, 1667, 1505, 7, 4, UNI_CJKEXTA } /* blk=cjkexta */,
+ { 2, 30, 1384, 1, 7, UNI_INTHAANA } /* inthaana */,
+ { 0, 370, 6683, 3, 8, UNI_LO } /* otherletter */,
+ { 1, 309, 1501, 2, 8, UNI_JAMOEXTA } /* injamoexta */,
+ { 3, 461, 794, 2, 4, UNI_LANA } /* islana */,
+ { 1, 1667, 1033, 4, 8, UNI_JAMOEXTB } /* blk=jamoextb */,
+ { 1, 1667, 4926, 4, 5, UNI_INTAMIL } /* blk=tamil */,
+ { 6, 248, 0, 5, 0, UNI_XPOSIXCNTRL } /* cntrl */,
+ { 0, 4360, 18, 10, 2, UNI_LB__BA } /* linebreak=ba */,
+ { 8, 309, 1234, 2, 7, UNI_INMULTANI } /* inmultani */,
+ { 1, 1424, 7239, 7, 2, UNI_CCC__28 } /* ccc=ccc28 */,
+ { 5, 461, 6185, 2, 13, UNI_GLAGOLITICSUP } /* isglagoliticsup */,
+ { 1, 339, 389, 5, 1, UNI_CCC__16 } /* ccc=16 */,
+ { 1, 6692, 0, 22, 0, UNI_TRANSPORTANDMAP } /* transportandmapsymbols */,
+ { 0, 5065, 0, 19, 0, UNI_JG__MANICHAEANTWENTY } /* jg=manichaeantwenty */,
+ { 15, 8311, 4410, 32, 4, UNI_CJKEXTA } /* block=cjkunifiedideographsextensiona */,
+ { 99, 30, 4553, 1, 16, UNI_TITLE } /* istitlecaseletter */,
+ { 2, 292, 1153, 3, 2, UNI_NV__24 } /* nv=24 */,
+ { 0, 32, 934, 2, 6, -UNI_VS } /* vs=false */,
+ { 5, 887, 0, 6, 0, UNI_AGE__10 } /* age=10 */,
+ { 0, 461, 4951, 2, 4, UNI_EGYP } /* isegyp */,
+ { 0, 4391, 346, 14, 1, UNI_NV__38 } /* numericvalue=38 */,
+ { 1, 271, 2720, 3, 3, UNI_RI } /* gcb=ri */,
+ { 1, 1667, 1696, 4, 11, UNI_DOMINO } /* blk=dominotiles */,
+ { 0, 30, 867, 1, 8, UNI_INTIRHUTA } /* intirhuta */,
+ { 2, 375, 598, 4, 2, UNI_grext_values_index } /* grext= */,
+ { 4, 2280, 563, 10, 3, UNI_IN__8 } /* presentin=8.0 */,
+ { 11, 1667, 6677, 4, 15, UNI_MODIFIERLETTERS } /* blk=modifierletters */,
+ { 5, 1667, 6900, 4, 14, UNI_BYZANTINEMUSIC } /* blk=byzantinemusic */,
+ { 0, 4424, 4487, 17, 6, UNI_ZYYY } /* scriptextensions=common */,
+ { 15, 461, 683, 2, 5, UNI_TAKR } /* istakri */,
+ { 1, 461, 117, 2, 2, UNI_XPOSIXDIGIT } /* isnd */,
+ { 0, 1823, 1098, 7, 4, UNI_NSHU } /* script=nshu */,
+ { 46, 1102, 188, 4, 4, UNI_SGNW } /* scx=sgnw */,
+ { 1, 461, 3649, 2, 14, UNI_PHONETICEXTSUP } /* isphoneticextsup */,
+ { 0, 2287, 2154, 3, 2, UNI_IN__13 } /* in=13 */,
+ { 2, 940, 585, 6, 5, UNI_COMPEX } /* compex=true */,
+ { 0, 309, 6487, 2, 13, UNI_ZNAMENNYMUSIC } /* inznamennymusic */,
+ { 1, 2324, 917, 6, 8, UNI_INBASSAVAH } /* block=bassavah */,
+ { 0, 1391, 3001, 3, 7, UNI_WB__NU } /* wb=numeric */,
+ { 14, 5216, 3773, 7, 15, UNI_LINEARBIDEOGRAMS } /* block=linearbideograms */,
+ { 1, 4002, 0, 4, 0, UNI_MODI } /* modi */,
+ { 8, 1455, 585, 3, 2, UNI_DEP } /* dep=t */,
+ { 36, 1823, 718, 7, 7, UNI_SC__KNDA } /* script=kannada */,
+ { 0, 4146, 0, 15, 0, UNI_PD } /* dashpunctuation */,
+ { 2, 2324, 951, 6, 8, UNI_INDUPLOYAN } /* block=duployan */,
+ { 0, 271, 6, 4, 2, UNI_LB__CR } /* gcb=cr */,
+ { 4, 7887, 4680, 28, 4, UNI_CJKEXTF } /* incjkunifiedideographsextensionf */,
+ { 23, 2324, 3649, 6, 11, UNI_PHONETICEXT } /* block=phoneticext */,
+ { 1, 5156, 2292, 10, 9, UNI_WB__WSEGSPACE } /* wordbreak=wsegspace */,
+ { 2, 1883, 599, 11, 3, -UNI_BIDIC } /* bidicontrol=no */,
+ { 1, 2324, 4075, 6, 15, UNI_CURRENCYSYMBOLS } /* block=currencysymbols */,
+ { 1, 2324, 333, 6, 6, UNI_INCARIAN } /* block=carian */,
+ { 8, 1102, 208, 4, 4, UNI_TGLG } /* scx=tglg */,
+ { 80, 6618, 2719, 3, 7, UNI_INPC__RIGHT } /* inpc=right */,
+ { 4, 2324, 1209, 6, 4, UNI_INTHAI } /* block=thai */,
+ { 0, 1102, 6642, 4, 6, UNI_BRAH } /* scx=brahmi */,
+ { 0, 4424, 5185, 17, 20, UNI_HLUW } /* scriptextensions=anatolianhieroglyphs */,
+ { 2, 1823, 810, 7, 4, UNI_SC__SYRC } /* script=syrc */,
+ { 1, 4424, 1572, 17, 10, UNI_XPEO } /* scriptextensions=oldpersian */,
+ { 3, 21, 5820, 1, 15, UNI_ENCLOSEDALPHANUM } /* enclosedalphanum */,
+ { 0, 3014, 1070, 11, 2, UNI_IN__3_DOT_1 } /* presentin=v31 */,
+ { 8, 7591, 9, 3, 2, UNI_LB__CM } /* lb=cm */,
+ { 0, 2280, 386, 10, 3, UNI_IN__3_DOT_2 } /* presentin=3.2 */,
+ { 0, 1102, 1522, 4, 4, UNI_UGAR } /* scx=ugar */,
+ { 0, 5205, 8039, 5, 32, UNI_MISCMATHSYMBOLSA } /* blk=miscellaneousmathematicalsymbolsa */,
+ { 3, 3391, 2656, 13, 9, UNI_NV__1_SLASH_2 } /* numericvalue=5.000e-01 */,
+ { 0, 1667, 3349, 4, 15, UNI_INMEROITICCURSIVE } /* blk=meroiticcursive */,
+ { 0, 1894, 0, 12, 0, UNI_BIDIM } /* bidimirrored */,
+ { 0, 339, 6328, 4, 3, UNI_CCC__202 } /* ccc=atb */,
+ { 0, 30, 1695, 1, 12, UNI_DOMINO } /* indominotiles */,
+ { 2, 2525, 4150, 6, 5, UNI_XPOSIXPUNCT } /* xposixpunct */,
+ { 58, 2324, 1331, 6, 9, UNI_INOLDPERMIC } /* block=oldpermic */,
+ { 0, 4424, 184, 17, 4, UNI_SAMR } /* scriptextensions=samr */,
+ { 9, 309, 3692, 2, 14, UNI_LISUSUP } /* inlisusupplement */,
+ { 0, 7495, 2165, 28, 2, UNI_WB__EB } /* canonicalcombiningclass=ccc133 */,
+ { 0, 4424, 732, 17, 7, UNI_LINA } /* scriptextensions=lineara */,
+ { 0, 7267, 2815, 20, 7, UNI_SO } /* generalcategory=othersymbol */,
+ { 15, 6165, 172, 3, 4, UNI_RJNG } /* sc=rjng */,
+ { 0, 2280, 2222, 9, 4, UNI_IN__6_DOT_2 } /* presentin=6.2 */,
+ { 2, 7011, 2154, 24, 2, UNI_CCC__13 } /* canonicalcombiningclass=13 */,
+ { 0, 2988, 353, 13, 2, UNI_NFCQC__Y } /* nfcquickcheck=y */,
+ { 0, 7591, 184, 3, 2, UNI_LB__SA } /* lb=sa */,
+ { 6, 1823, 3663, 7, 4, UNI_SC__DEVA } /* script=deva */,
+ { 1, 1102, 43, 4, 4, UNI_BUHD } /* scx=buhd */,
+ { 20, 1823, 1978, 7, 7, UNI_SC__SOGD } /* script=sogdian */,
+ { 5, 1198, 5694, 3, 18, UNI_COUNTINGROD } /* incountingrodnumerals */,
+ { 1, 1011, 934, 2, 6, -UNI_CI } /* ci=false */,
+ { 0, 2324, 1144, 6, 9, UNI_INBHAIKSUKI } /* block=bhaiksuki */,
+ { 1, 7011, 5523, 24, 9, UNI_CCC__BL } /* canonicalcombiningclass=belowleft */,
+ { 0, 7495, 1316, 28, 2, UNI_CCC__103 } /* canonicalcombiningclass=ccc103 */,
+ { 0, 2324, 868, 6, 7, UNI_INTIRHUTA } /* block=tirhuta */,
+ { 1, 7011, 3403, 23, 3, UNI_CCC__23 } /* canonicalcombiningclass=23 */,
+ { 0, 916, 5671, 4, 4, -UNI_EBASE } /* ebase=no */,
+ { 10, 1942, 933, 11, 3, -UNI_GRBASE } /* graphemebase=f */,
+ { 1, 3954, 0, 17, 0, UNI_AGHB } /* caucasianalbanian */,
+ { 0, 7198, 4607, 14, 13, UNI_SUPPUNCTUATION } /* blk=supplementalpunctuation */,
+ { 0, 1075, 2107, 4, 8, UNI_NV__5_SLASH_2 } /* nv=2.500e+00 */,
+ { 32, 2, 585, 3, 2, UNI_CWL } /* cwl=t */,
+ { 1, 597, 324, 3, 3, UNI_DT__SUP } /* dt=sup */,
+ { 2, 7274, 4191, 9, 15, UNI_LOWERCASELETTER } /* category=lowercaseletter */,
+ { 20, 1272, 6557, 5, 19, UNI_CJKCOMPATIDEOGRAPHSSUP } /* iscjkcompatideographssup */,
+ { 137, 1883, 353, 11, 2, UNI_BIDIC } /* bidicontrol=y */,
+ { 2, 1198, 2373, 4, 5, UNI_CJKEXTE } /* incjkexte */,
+ { 3, 641, 1874, 7, 8, UNI_LB__H3 } /* hst=lvtsyllable */,
+ { 0, 375, 598, 4, 4, -UNI_GREXT } /* grext=no */,
+ { 0, 6427, 4751, 13, 5, UNI_JG__SADHE } /* joininggroup=sadhe */,
+ { 0, 461, 5440, 2, 20, UNI_HMNP } /* isnyiakengpuachuehmong */,
+ { 0, 309, 5283, 2, 9, UNI_HALFMARKS } /* inhalfmarks */,
+ { 0, 3633, 2619, 3, 12, UNI_LOWSURROGATES } /* inlowsurrogates */,
+ { 64, 7267, 3191, 15, 7, UNI_L } /* generalcategory=letter */,
+ { 0, 3407, 2657, 14, 8, UNI_NV__2_SLASH_5 } /* numericvalue=4.000e-01 */,
+ { 0, 309, 3026, 2, 14, UNI_INPSALTERPAHLAVI } /* inpsalterpahlavi */,
+ { 0, 309, 571, 2, 7, UNI_INAVESTAN } /* inavestan */,
+ { 2, 3514, 24, 7, 3, UNI_INAHOM } /* block=ahom */,
+ { 7, 2324, 4819, 6, 8, UNI_DINGBATS } /* block=dingbats */,
+ { 51, 4896, 0, 15, 0, UNI_BAMUMSUP } /* bamumsupplement */,
+ { 2, 1823, 1255, 7, 7, UNI_SIDD } /* script=siddham */,
+ { 0, 461, 266, 2, 3, UNI_CWT } /* iscwt */,
+ { 1, 309, 6797, 2, 18, UNI_DEVANAGARIEXT } /* indevanagariextended */,
+ { 8, 6351, 0, 23, 0, UNI_COMPATJAMO } /* hangulcompatibilityjamo */,
+ { 12, 1102, 1853, 4, 4, UNI_SYLO } /* scx=sylo */,
+ { 0, 7198, 837, 8, 3, UNI_SUPPUAA } /* blk=suppuaa */,
+ { 4, 6909, 0, 14, 0, UNI_MUSIC } /* musicalsymbols */,
+ { 1, 2523, 3268, 8, 5, UNI_XPOSIXALNUM } /* isxposixalnum */,
+ { 11, 466, 0, 2, 0, UNI_SO } /* so */,
+ { 1, 3349, 0, 4, 0, UNI_MERO } /* mero */,
+ { 1, 3204, 599, 14, 2, -UNI_GREXT } /* graphemeextend=n */,
+ { 0, 8601, 1110, 7, 7, UNI_SPECIALS } /* block=specials */,
+ { 0, 4377, 599, 14, 3, UNI_NFKDQC__N } /* nfkdquickcheck=no */,
+ { 0, 1667, 1465, 4, 10, UNI_INDIVESAKURU } /* blk=divesakuru */,
+ { 0, 2287, 6262, 3, 3, UNI_IN__2_DOT_1 } /* in=2.1 */,
+ { 0, 1530, 4511, 6, 9, UNI_KANAEXTB } /* iskanaextendedb */,
+ { 0, 7752, 4255, 23, 4, UNI_JG__MANICHAEANRESH } /* joininggroup=manichaeanresh */,
+ { 0, 7383, 5318, 10, 3, UNI_BC__RLE } /* bidiclass=rle */,
+ { 32, 6062, 1037, 14, 4, UNI_ETHIOPICEXTB } /* block=ethiopicextb */,
+ { 1, 7267, 466, 16, 2, UNI_SO } /* generalcategory=so */,
+ { 34, 1200, 1505, 3, 4, UNI_CJKEXTA } /* cjkexta */,
+ { 0, 887, 6262, 5, 3, UNI_AGE__12_DOT_1 } /* age=12.1 */,
+ { 0, 3633, 130, 14, 2, UNI_LATINEXTF } /* inlatinextendedf */,
+ { 0, 7383, 5497, 10, 18, UNI_BC__FSI } /* bidiclass=firststrongisolate */,
+ { 2, 5460, 585, 19, 5, UNI_TERM } /* terminalpunctuation=true */,
+ { 0, 3878, 1805, 14, 5, UNI_NV__900000 } /* numericvalue=900000 */,
+ { 4, 735, 934, 2, 2, UNI_EA__F } /* ea=f */,
+ { 1, 1391, 959, 3, 6, UNI_WB__EXTEND } /* wb=extend */,
+ { 3, 521, 599, 6, 2, -UNI_PATSYN } /* patsyn=n */,
+ { 0, 30, 8141, 1, 19, UNI_IDEOGRAPHICSYMBOLS } /* isideographicsymbols */,
+ { 0, 2403, 1505, 8, 4, UNI_ETHIOPICEXTA } /* ethiopicexta */,
+ { 68, 3803, 1795, 14, 6, UNI_NFCQC__M } /* nfkcquickcheck=maybe */,
+ { 0, 625, 0, 2, 0, UNI_PI } /* pi */,
+ { 0, 7495, 344, 27, 2, UNI_CCC__21 } /* canonicalcombiningclass=ccc21 */,
+ { 0, 7495, 343, 28, 1, UNI_CCC__11 } /* canonicalcombiningclass=ccc11 */,
+ { 0, 461, 4896, 2, 5, UNI_BAMU } /* isbamum */,
+ { 0, 5595, 934, 21, 2, -UNI_CWT } /* changeswhentitlecased=f */,
+ { 0, 3100, 0, 6, 0, UNI_XPOSIXXDIGIT } /* xdigit */,
+ { 3, 7383, 4880, 10, 16, UNI_BC__S } /* bidiclass=segmentseparator */,
+ { 1, 4424, 446, 17, 4, UNI_PHLI } /* scriptextensions=phli */,
+ { 25, 6165, 1021, 3, 6, UNI_WCHO } /* sc=wancho */,
+ { 4, 2503, 585, 11, 5, UNI_JOINC } /* joincontrol=true */,
+ { 36, 605, 533, 2, 3, UNI_idsb_values_index } /* idsb= */,
+ { 12, 6165, 1098, 3, 4, UNI_NSHU } /* sc=nshu */,
+ { 9, 271, 543, 4, 3, UNI_WB__EB } /* gcb=ebg */,
+ { 0, 4424, 1285, 17, 9, UNI_SIND } /* scriptextensions=khudawadi */,
+ { 2, 309, 1358, 2, 9, UNI_PALM } /* inpalmyrene */,
+ { 0, 2324, 527, 6, 6, UNI_INREJANG } /* block=rejang */,
+ { 192, 1272, 6382, 5, 18, UNI_CJKCOMPATFORMS } /* iscjkcompatibilityforms */,
+ { 147, 6165, 164, 3, 4, UNI_PHNX } /* sc=phnx */,
+ { 26, 1011, 599, 2, 3, -UNI_CI } /* ci=no */,
+ { 6, 3391, 769, 13, 3, UNI_NV__7_SLASH_2 } /* numericvalue=7/2 */,
+ { 0, 2324, 3026, 6, 14, UNI_INPSALTERPAHLAVI } /* block=psalterpahlavi */,
+ { 7, 1397, 353, 4, 4, UNI_IDST } /* idst=yes */,
+ { 0, 7134, 599, 26, 3, -UNI_PCM } /* prependedconcatenationmark=no */,
+ { 33, 7267, 4016, 16, 14, UNI_ZS } /* generalcategory=spaceseparator */,
+ { 3, 1823, 1235, 8, 6, UNI_SC__MULT } /* script=multani */,
+ { 12, 533, 281, 3, 2, UNI_SB__XX } /* sb=xx */,
+ { 17, 6165, 499, 3, 4, UNI_LYDI } /* sc=lydi */,
+ { 0, 2536, 4263, 3, 4, UNI_JG__QAPH } /* jg=qaph */,
+ { 0, 4407, 585, 17, 2, UNI_RI } /* regionalindicator=t */,
+ { 103, 7495, 391, 27, 2, UNI_CCC__34 } /* canonicalcombiningclass=ccc34 */,
+ { 9, 7274, 3101, 9, 5, UNI_XPOSIXDIGIT } /* category=digit */,
+ { 4, 4424, 1853, 17, 4, UNI_SYLO } /* scriptextensions=sylo */,
+ { 17, 5216, 5848, 11, 9, UNI_LATINEXTA } /* block=latinextendeda */,
+ { 0, 1734, 4710, 3, 15, UNI_SYRIACSUP } /* issyriacsupplement */,
+ { 1, 3013, 934, 5, 2, -UNI_EPRES } /* epres=f */,
+ { 9, 339, 118, 4, 2, UNI_CCC__DA } /* ccc=da */,
+ { 34, 309, 951, 2, 8, UNI_INDUPLOYAN } /* induployan */,
+ { 80, 1102, 1334, 4, 4, UNI_PERM } /* scx=perm */,
+ { 0, 6816, 353, 25, 2, UNI_CWKCF } /* changeswhennfkccasefolded=y */,
+ { 5, 1823, 847, 7, 7, UNI_LANA } /* script=taitham */,
+ { 79, 2766, 2360, 3, 10, UNI_CN } /* gc=unassigned */,
+ { 154, 461, 4569, 2, 5, UNI_XPOSIXUPPER } /* isupper */,
+ { 12, 6165, 802, 3, 4, UNI_SARB } /* sc=sarb */,
+ { 1, 3391, 290, 13, 2, UNI_NV__40 } /* numericvalue=40 */,
+ { 0, 1667, 1033, 4, 4, UNI_JAMO } /* blk=jamo */,
+ { 1, 733, 5820, 3, 18, UNI_ENCLOSEDALPHANUMSUP } /* inenclosedalphanumsup */,
+ { 5, 6735, 919, 22, 3, UNI_JG__MALAYALAMSSA } /* joininggroup=malayalamssa */,
+ { 1, 2, 34, 2, 1, UNI_CWT } /* cwt */,
+ { 0, 3001, 0, 12, 0, UNI_nt_values_index } /* numerictype= */,
+ { 78, 414, 0, 3, 0, UNI_HAN } /* han */,
+ { 0, 5857, 0, 12, 0, UNI_MONGOLIANSUP } /* mongoliansup */,
+ { 0, 7267, 3196, 19, 8, UNI_NO } /* generalcategory=othernumber */,
+ { 22, 5939, 585, 5, 2, UNI__PERL_NCHAR } /* nchar=t */,
+ { 22, 1272, 81, 7, 2, UNI_CJKEXTG } /* iscjkextg */,
+ { 0, 2766, 5243, 7, 12, UNI_PO } /* gc=otherpunctuation */,
+ { 4, 4424, 454, 17, 4, UNI_PRTI } /* scriptextensions=prti */,
+ { 2, 1102, 0, 4, 0, UNI_scx_values_index } /* scx= */,
+ { 1, 1726, 4987, 3, 16, UNI_ALCHEMICAL } /* isalchemicalsymbols */,
+ { 4, 339, 1155, 4, 2, UNI_CCC__35 } /* ccc=35 */,
+ { 0, 53, 0, 1, 0, UNI_N } /* n */,
+ { 1, 3724, 661, 12, 2, UNI_JG__MALAYALAMRA } /* jg=malayalamra */,
+ { 6, 3892, 599, 16, 2, -UNI_STERM } /* sentenceterminal=n */,
+ { 0, 2280, 2154, 10, 2, UNI_IN__13 } /* presentin=13 */,
+ { 2, 4862, 0, 4, 0, UNI_RUMI } /* rumi */,
+ { 69, 6165, 1834, 3, 4, UNI_SORA } /* sc=sora */,
+ { 0, 1728, 4511, 6, 9, UNI_ARABICEXTB } /* arabicextendedb */,
+ { 66, 7591, 2602, 22, 7, UNI_LB__CJ } /* lb=conditionaljapanesestarter */,
+ { 141, 2525, 307, 6, 5, UNI_XPOSIXPRINT } /* xposixprint */,
+ { 1, 2786, 0, 14, 0, UNI_HIGHSURROGATES } /* highsurrogates */,
+ { 6, 1667, 3726, 3, 10, UNI_INMALAYALAM } /* blk=malayalam */,
+ { 67, 1667, 6185, 4, 13, UNI_GLAGOLITICSUP } /* blk=glagoliticsup */,
+ { 1, 1823, 8667, 7, 18, UNI_CANS } /* script=canadianaboriginal */,
+ { 65, 4424, 232, 17, 4, UNI_YI } /* scriptextensions=yiii */,
+ { 4, 6427, 4267, 13, 4, UNI_JG__TETH } /* joininggroup=teth */,
+ { 16, 5979, 0, 5, 0, UNI_VO__TR } /* vo=tr */,
+ { 2, 10, 747, 1, 3, UNI_MARC } /* marc */,
+ { 10, 292, 1155, 3, 2, UNI_NV__35 } /* nv=35 */,
+ { 73, 6165, 297, 3, 5, UNI_SC__ORYA } /* sc=oriya */,
+ { 104, 3502, 6142, 5, 21, UNI_EARLYDYNASTICCUNEIFORM } /* blk=earlydynasticcuneiform */,
+ { 1, 823, 3190, 3, 2, UNI_dash_values_index } /* dash= */,
+ { 39, 7274, 4016, 9, 14, UNI_ZS } /* category=spaceseparator */,
+ { 8, 117, 0, 2, 0, UNI_XPOSIXDIGIT } /* nd */,
+ { 0, 1667, 901, 4, 8, UNI_INARMENIAN } /* blk=armenian */,
+ { 0, 2259, 869, 3, 6, UNI_TIRH } /* istirhuta */,
+ { 5, 6165, 4002, 3, 4, UNI_SC__MODI } /* sc=modi */,
+ { 0, 861, 0, 7, 0, UNI_TIBT } /* tibetan */,
+ { 0, 4569, 933, 8, 7, -UNI_XPOSIXUPPER } /* uppercase=false */,
+ { 24, 3391, 581, 12, 3, UNI_NV__22 } /* numericvalue=22 */,
+ { 48, 7591, 3040, 3, 9, UNI_LB__QU } /* lb=quotation */,
+ { 1, 8343, 5114, 22, 10, UNI_INSC__TONELETTER } /* indicsyllabiccategory=toneletter */,
+ { 0, 4424, 1340, 17, 9, UNI_ORKH } /* scriptextensions=oldturkic */,
+ { 0, 461, 1592, 2, 10, UNI_SAUR } /* issaurashtra */,
+ { 0, 461, 6185, 2, 20, UNI_GLAGOLITICSUP } /* isglagoliticsupplement */,
+ { 2, 983, 0, 8, 0, UNI_HIRA } /* hiragana */,
+ { 0, 6841, 353, 25, 4, UNI_DI } /* defaultignorablecodepoint=yes */,
+ { 4, 7011, 519, 23, 2, UNI_CCC__7 } /* canonicalcombiningclass=7 */,
+ { 48, 7011, 388, 25, 2, UNI_CCC__R } /* canonicalcombiningclass=226 */,
+ { 5, 6165, 590, 3, 7, UNI_DSRT } /* sc=deseret */,
+ { 3, 2324, 3692, 6, 4, UNI_INLISU } /* block=lisu */,
+ { 12, 1102, 663, 4, 4, UNI_LIMB } /* scx=limb */,
+ { 0, 1015, 90, 4, 2, UNI_TELU } /* telugu */,
+ { 0, 2434, 2437, 3, 4, UNI_MYMR } /* myanmar */,
+ { 0, 2393, 1037, 8, 4, UNI_CYRILLICEXTB } /* cyrillicextb */,
+ { 0, 2536, 2875, 3, 11, UNI_JG__STRAIGHTWAW } /* jg=straightwaw */,
+ { 52, 6618, 8507, 4, 15, UNI_INPC__BOTTOMANDRIGHT } /* inpc=bottomandright */,
+ { 2, 3391, 391, 13, 2, UNI_NV__34 } /* numericvalue=34 */,
+ { 74, 6287, 0, 4, 0, UNI_BC__L } /* bc=l */,
+ { 0, 10, 8374, 1, 33, UNI_MISCPICTOGRAPHS } /* miscellaneoussymbolsandpictographs */,
+ { 0, 1823, 537, 7, 6, UNI_TNSA } /* script=tangsa */,
+ { 1, 597, 140, 3, 3, UNI_DT__NAR } /* dt=nar */,
+ { 33, 1174, 1178, 4, 5, UNI_EA__NA } /* ea=narrow */,
+ { 3, 1823, 1303, 7, 9, UNI_TALU } /* script=newtailue */,
+ { 24, 1823, 236, 7, 4, UNI_ZANB } /* script=zanb */,
+ { 0, 3098, 2931, 7, 3, UNI_XPOSIXXDIGIT } /* hexdigit=t */,
+ { 10, 7591, 3463, 3, 4, UNI_LB__GL } /* lb=glue */,
+ { 2, 1027, 0, 6, 0, UNI_YEZI } /* yezidi */,
+ { 86, 309, 1465, 2, 10, UNI_INDIVESAKURU } /* indivesakuru */,
+ { 108, 309, 6693, 3, 14, UNI_TRANSPORTANDMAP } /* intransportandmap */,
+ { 1, 3649, 0, 11, 0, UNI_PHONETICEXT } /* phoneticext */,
+ { 0, 380, 585, 6, 5, UNI_HYPHEN } /* hyphen=true */,
+ { 0, 1397, 598, 6, 4, -UNI_IDS } /* idstart=no */,
+ { 3, 4424, 120, 17, 3, UNI_LAO } /* scriptextensions=lao */,
+ { 1, 7011, 288, 25, 2, UNI_CCC__A } /* canonicalcombiningclass=230 */,
+ { 5, 1667, 772, 4, 7, UNI_OLCK } /* blk=olchiki */,
+ { 9, 1667, 2373, 6, 5, UNI_CJKEXTE } /* blk=cjkexte */,
+ { 6, 271, 1869, 4, 3, UNI_WB__EB } /* gcb=gaz */,
+ { 0, 1667, 1779, 4, 11, UNI_INMEDEFAIDRIN } /* blk=medefaidrin */,
+ { 0, 309, 1117, 2, 8, UNI_INTAGBANWA } /* intagbanwa */,
+ { 37, 3791, 0, 4, 0, UNI_MATH } /* math */,
+ { 0, 8343, 2768, 21, 6, UNI_INSC__OTHER } /* indicsyllabiccategory=other */,
+ { 172, 5769, 353, 4, 4, UNI_EMOD } /* emod=yes */,
+ { 16, 772, 0, 7, 0, UNI_OLCK } /* olchiki */,
+ { 2, 2324, 5274, 6, 18, UNI_HALFMARKS } /* block=combininghalfmarks */,
+ { 0, 4424, 4002, 17, 4, UNI_MODI } /* scriptextensions=modi */,
+ { 9, 461, 6909, 2, 14, UNI_MUSIC } /* ismusicalsymbols */,
+ { 33, 5440, 1818, 15, 5, UNI_HMNP } /* nyiakengpuachuehmong */,
+ { 2, 5065, 5433, 13, 7, UNI_JG__MANICHAEANHUNDRED } /* jg=manichaeanhundred */,
+ { 5, 746, 0, 7, 0, UNI_MARC } /* marchen */,
+ { 4, 1059, 353, 6, 4, UNI_DT__NONE } /* nfkdqc=yes */,
+ { 0, 309, 4726, 3, 8, UNI_TANGUTSUP } /* intangutsup */,
+ { 3, 1667, 8474, 7, 23, UNI_CJKCOMPATIDEOGRAPHS } /* blk=cjkcompatibilityideographs */,
+ { 1, 1102, 184, 4, 4, UNI_SAMR } /* scx=samr */,
+ { 1, 3635, 5635, 11, 3, UNI_LATINEXTG } /* latinextendedg */,
+ { 0, 2324, 55, 6, 4, UNI_INCHAM } /* block=cham */,
+ { 13, 6165, 615, 3, 7, UNI_ELYM } /* sc=elymaic */,
+ { 1, 461, 5958, 2, 7, UNI_SINH } /* issinhala */,
+ { 8, 292, 7239, 3, 2, UNI_NV__28 } /* nv=28 */,
+ { 4, 3391, 766, 13, 3, UNI_NV__5_SLASH_2 } /* numericvalue=5/2 */,
+ { 0, 1667, 608, 4, 7, UNI_INELBASAN } /* blk=elbasan */,
+ { 0, 4424, 94, 17, 4, UNI_GURU } /* scriptextensions=guru */,
+ { 9, 1272, 6400, 5, 18, UNI_CJKRADICALSSUP } /* iscjkradicalssupplement */,
+ { 1, 30, 5390, 1, 12, UNI_CHEROKEESUP } /* ischerokeesup */,
+ { 34, 3014, 1804, 11, 3, UNI_IN__10 } /* presentin=v100 */,
+ { 1, 2678, 0, 11, 0, UNI_IN__5 } /* presentin=5 */,
+ { 0, 6000, 0, 6, 0, UNI_YIJING } /* yijing */,
+ { 6, 6776, 0, 14, 0, UNI_MEETEIMAYEKEXT } /* meeteimayekext */,
+ { 0, 33, 0, 1, 0, UNI_S } /* s */,
+ { 1, 5156, 2411, 10, 8, UNI_WB__KA } /* wordbreak=katakana */,
+ { 0, 309, 4926, 2, 5, UNI_INTAMIL } /* intamil */,
+ { 2, 1635, 0, 4, 0, UNI_WARA } /* wara */,
+ { 0, 3724, 1193, 12, 3, UNI_JG__MALAYALAMNGA } /* jg=malayalamnga */,
+ { 1, 3014, 1313, 11, 2, UNI_IN__6 } /* presentin=v60 */,
+ { 0, 309, 1635, 2, 10, UNI_INWARANGCITI } /* inwarangciti */,
+ { 4, 6870, 585, 20, 5, UNI_CE } /* compositionexclusion=true */,
+ { 6, 2536, 2864, 3, 11, UNI_JG__ROHINGYAYEH } /* jg=rohingyayeh */,
+ { 1, 7591, 309, 3, 2, UNI_LB__IN } /* lb=in */,
+ { 1, 461, 220, 2, 4, UNI_WCHO } /* iswcho */,
+ { 100, 1396, 598, 7, 4, -UNI_XIDS } /* xidstart=no */,
+ { 35, 1823, 2068, 7, 12, UNI_MEND } /* script=mendekikakui */,
+ { 3, 1823, 152, 7, 4, UNI_OSGE } /* script=osge */,
+ { 0, 2302, 0, 10, 0, UNI_IDC } /* idcontinue */,
+ { 0, 4424, 6185, 17, 4, UNI_GLAG } /* scriptextensions=glag */,
+ { 0, 1421, 2773, 3, 13, UNI_INGREEK } /* ingreekandcoptic */,
+ { 2, 339, 3152, 4, 11, UNI_CCC__8 } /* ccc=kanavoicing */,
+ { 13, 6165, 5682, 3, 5, UNI_SC__GREK } /* sc=greek */,
+ { 0, 875, 5980, 4, 3, UNI_UIDEO } /* uideo=t */,
+ { 0, 7887, 7380, 28, 4, UNI_CJKEXTB } /* incjkunifiedideographsextensionb */,
+ { 64, 5553, 934, 21, 6, -UNI_CWCM } /* changeswhencasemapped=false */,
+ { 47, 4519, 6193, 12, 5, UNI_CYRILLICSUP } /* block=cyrillicsup */,
+ { 0, 23, 0, 4, 0, UNI_AHOM } /* ahom */,
+ { 0, 5168, 3075, 6, 9, UNI__PERL_ANY_FOLDS } /* _perl_any_folds */,
+ { 49, 5799, 5149, 14, 7, UNI_SUPARROWSA } /* insupplementalarrowsa */,
+ { 2, 7274, 4827, 9, 18, UNI_ZP } /* category=paragraphseparator */,
+ { 1, 5391, 0, 11, 0, UNI_CHEROKEESUP } /* cherokeesup */,
+ { 0, 6427, 0, 13, 0, UNI_jg_values_index } /* joininggroup= */,
+ { 0, 895, 1070, 5, 2, UNI_AGE__3_DOT_1 } /* age=v31 */,
+ { 1, 3817, 290, 15, 2, UNI_NV__1_SLASH_40 } /* numericvalue=1/40 */,
+ { 68, 7648, 366, 18, 3, UNI_DT__SQR } /* decompositiontype=sqr */,
+ { 5, 461, 4060, 2, 7, UNI_BRAI } /* isbraille */,
+ { 3, 1667, 1385, 4, 6, UNI_INTHAANA } /* blk=thaana */,
+ { 13, 2324, 5031, 6, 14, UNI_INHANIFIROHINGYA } /* block=hanifirohingya */,
+ { 30, 622, 2931, 6, 3, UNI_EXTPICT } /* extpict=t */,
+ { 2, 1726, 4659, 8, 9, UNI_ARABICEXTC } /* isarabicextendedc */,
+ { 17, 4424, 1117, 17, 4, UNI_TAGB } /* scriptextensions=tagb */,
+ { 0, 1065, 290, 5, 2, UNI_NV__1_SLASH_40 } /* nv=1/40 */,
+ { 21, 2324, 8278, 6, 33, UNI_MISCMATHSYMBOLSB } /* block=miscellaneousmathematicalsymbolsb */,
+ { 1, 309, 1241, 2, 7, UNI_NB } /* innoblock */,
+ { 0, 461, 5876, 2, 12, UNI_SUNDANESESUP } /* issundanesesup */,
+ { 0, 309, 2411, 2, 8, UNI_INKATAKANA } /* inkatakana */,
+ { 33, 6165, 718, 3, 7, UNI_SC__KNDA } /* sc=kannada */,
+ { 0, 2536, 715, 3, 3, UNI_JG__AIN } /* jg=ain */,
+ { 13, 2004, 3268, 5, 5, UNI_POSIXALNUM } /* posixalnum */,
+ { 0, 1667, 3663, 4, 14, UNI_DEVANAGARIEXTA } /* blk=devanagariexta */,
+ { 3, 4569, 934, 5, 2, -UNI_XPOSIXUPPER } /* upper=f */,
+ { 0, 7011, 119, 24, 2, UNI_CCC__AL } /* canonicalcombiningclass=al */,
+ { 105, 461, 2247, 2, 4, UNI_HUNG } /* ishung */,
+ { 121, 4424, 6642, 17, 4, UNI_BRAH } /* scriptextensions=brah */,
+ { 6, 2766, 255, 3, 2, UNI_CF } /* gc=cf */,
+ { 38, 1823, 1484, 7, 4, UNI_SC__BUGI } /* script=bugi */,
+ { 1, 2317, 0, 6, 0, UNI_N } /* number */,
+ { 0, 339, 345, 5, 2, UNI_CCC__118 } /* ccc=118 */,
+ { 10, 4424, 1685, 17, 11, UNI_CPMN } /* scriptextensions=cyprominoan */,
+ { 0, 3878, 1805, 14, 4, UNI_NV__90000 } /* numericvalue=90000 */,
+ { 2, 5916, 599, 21, 2, -UNI_LOE } /* logicalorderexception=n */,
+ { 0, 6165, 4060, 3, 4, UNI_BRAI } /* sc=brai */,
+ { 0, 1409, 1505, 5, 4, UNI_LATINEXTA } /* latinexta */,
+ { 1, 6165, 216, 3, 4, UNI_TOTO } /* sc=toto */,
+ { 136, 6165, 1367, 3, 4, UNI_PAUC } /* sc=pauc */,
+ { 0, 1667, 7036, 4, 26, UNI_HALFANDFULLFORMS } /* blk=halfwidthandfullwidthforms */,
+ { 2, 6165, 47, 3, 4, UNI_SC__CAKM } /* sc=cakm */,
+ { 48, 1823, 244, 7, 4, UNI_ZZZZ } /* script=zzzz */,
+ { 0, 7495, 559, 28, 2, UNI_CCC__107 } /* canonicalcombiningclass=ccc107 */,
+ { 2, 120, 122, 2, 2, UNI_LAO } /* laoo */,
+ { 36, 1734, 1854, 3, 3, UNI_SYLO } /* issylo */,
+ { 0, 461, 1015, 2, 4, UNI_TELU } /* istelu */,
+ { 1, 1198, 1505, 5, 4, UNI_CJKEXTA } /* incjkexta */,
+ { 93, 1823, 1819, 7, 4, UNI_SC__MONG } /* script=mong */,
+ { 0, 6165, 1358, 3, 4, UNI_PALM } /* sc=palm */,
+ { 0, 895, 1318, 6, 2, UNI_AGE__12 } /* age=v120 */,
+ { 2, 461, 269, 2, 2, UNI_ZP } /* iszp */,
+ { 2, 1454, 274, 2, 1, UNI_sd_values_index } /* sd= */,
+ { 0, 309, 1522, 2, 8, UNI_INUGARITIC } /* inugaritic */,
+ { 0, 2536, 4761, 4, 4, UNI_JG__ALAPH } /* jg=alaph */,
+ { 0, 2324, 1966, 7, 9, UNI_COMPATJAMO } /* block=compatjamo */,
+ { 0, 7011, 768, 24, 2, UNI_CCC__27 } /* canonicalcombiningclass=27 */,
+ { 4, 5156, 3053, 10, 11, UNI_WB__DQ } /* wordbreak=doublequote */,
+ { 0, 6427, 4221, 13, 14, UNI_JG__HAMZAONHEHGOAL } /* joininggroup=hamzaonhehgoal */,
+ { 0, 2324, 322, 6, 5, UNI_VSSUP } /* block=vssup */,
+ { 0, 1667, 1144, 4, 9, UNI_INBHAIKSUKI } /* blk=bhaiksuki */,
+ { 2, 1823, 4651, 7, 8, UNI_SC__BOPO } /* script=bopomofo */,
+ { 0, 7011, 7425, 24, 4, UNI_CCC__216 } /* canonicalcombiningclass=atar */,
+ { 0, 7267, 8356, 7, 10, UNI_C } /* generalcategory=c */,
+ { 0, 2324, 6487, 6, 13, UNI_ZNAMENNYMUSIC } /* block=znamennymusic */,
+ { 84, 6165, 188, 3, 4, UNI_SGNW } /* sc=sgnw */,
+ { 2, 2259, 1107, 3, 3, UNI_TALU } /* istalu */,
+ { 3, 1734, 6671, 3, 21, UNI_MODIFIERLETTERS } /* isspacingmodifierletters */,
+ { 1, 6165, 4461, 3, 11, UNI_SGNW } /* sc=signwriting */,
+ { 0, 4360, 380, 10, 6, UNI_LB__HY } /* linebreak=hyphen */,
+ { 20, 2752, 599, 5, 3, -UNI_EMOJI } /* emoji=no */,
+ { 0, 461, 1255, 2, 4, UNI_SIDD } /* issidd */,
+ { 4, 7267, 3558, 16, 9, UNI_Z } /* generalcategory=separator */,
+ { 45, 339, 2165, 5, 2, UNI_WB__EB } /* ccc=133 */,
+ { 7, 4360, 2944, 10, 11, UNI_LB__BB } /* linebreak=breakbefore */,
+ { 3, 253, 0, 4, 0, UNI_CWCF } /* cwcf */,
+ { 134, 4569, 353, 5, 4, UNI_XPOSIXUPPER } /* upper=yes */,
+ { 0, 3892, 599, 16, 3, -UNI_STERM } /* sentenceterminal=no */,
+ { 2, 3692, 0, 7, 0, UNI_LISUSUP } /* lisusup */,
+ { 1, 2966, 819, 3, 6, UNI_SC__SHRD } /* insharada */,
+ { 1, 4424, 1975, 17, 10, UNI_SOGO } /* scriptextensions=oldsogdian */,
+ { 13, 7404, 422, 11, 2, UNI_BC__RLI } /* bidiclass=rli */,
+ { 1, 2287, 2360, 3, 10, UNI_IN__NA } /* in=unassigned */,
+ { 0, 339, 2234, 3, 2, UNI_CCC__8 } /* ccc=8 */,
+ { 0, 54, 0, 2, 0, UNI_SC } /* sc */,
+ { 6, 7495, 2092, 27, 2, UNI_CCC__25 } /* canonicalcombiningclass=ccc25 */,
+ { 0, 6165, 2068, 3, 4, UNI_MEND } /* sc=mend */,
+ { 0, 1667, 4060, 4, 7, UNI_BRAI } /* blk=braille */,
+ { 0, 1200, 2373, 2, 5, UNI_CJKEXTE } /* cjkexte */,
+ { 64, 5391, 0, 8, 0, UNI_CHER } /* cherokee */,
+ { 25, 4809, 0, 18, 0, UNI_ORNAMENTALDINGBATS } /* ornamentaldingbats */,
+ { 3, 8601, 5409, 7, 11, UNI_SMALLKANAEXT } /* block=smallkanaext */,
+ { 67, 461, 5553, 2, 21, UNI_CWCM } /* ischangeswhencasemapped */,
+ { 0, 21, 5820, 1, 18, UNI_ENCLOSEDALPHANUMSUP } /* enclosedalphanumsup */,
+ { 0, 6165, 5353, 3, 20, UNI_PHLI } /* sc=inscriptionalpahlavi */,
+ { 0, 6165, 470, 3, 4, UNI_TNSA } /* sc=tnsa */,
+ { 0, 302, 353, 5, 4, UNI__PERL_PATWS } /* patws=yes */,
+ { 0, 4161, 934, 9, 2, -UNI_DIA } /* diacritic=f */,
+ { 0, 6870, 934, 20, 6, -UNI_CE } /* compositionexclusion=false */,
+ { 0, 309, 5838, 2, 19, UNI_JAMOEXTA } /* inhanguljamoextendeda */,
+ { 6, 3817, 389, 15, 1, UNI_NV__1_SLASH_6 } /* numericvalue=1/6 */,
+ { 0, 2280, 566, 10, 3, UNI_IN__9 } /* presentin=9.0 */,
+ { 0, 7198, 7707, 15, 17, UNI_SUPPUAB } /* blk=supplementaryprivateuseareab */,
+ { 0, 1065, 2115, 4, 8, UNI_NV__1_SLASH_64 } /* nv=1.562e-02 */,
+ { 49, 2004, 1479, 5, 5, UNI_POSIXSPACE } /* posixspace */,
+ { 1, 4424, 369, 17, 6, UNI_GOTH } /* scriptextensions=gothic */,
+ { 0, 8343, 1517, 22, 5, UNI_INSC__BINDU } /* indicsyllabiccategory=bindu */,
+ { 49, 2180, 515, 4, 2, UNI_NV__4_SLASH_5 } /* nv=4/5 */,
+ { 95, 4424, 1465, 17, 10, UNI_DIAK } /* scriptextensions=divesakuru */,
+ { 0, 1065, 766, 4, 3, UNI_NV__15_SLASH_2 } /* nv=15/2 */,
+ { 1, 2324, 1125, 6, 8, UNI_INTIFINAGH } /* block=tifinagh */,
+ { 4, 1906, 1505, 8, 4, UNI_KANAEXTA } /* blk=kanaexta */,
+ { 0, 1667, 3567, 4, 16, UNI_HALFANDFULLFORMS } /* blk=halfandfullforms */,
+ { 0, 7274, 4554, 9, 15, UNI_TITLE } /* category=titlecaseletter */,
+ { 0, 461, 1397, 2, 3, UNI_IDS } /* isids */,
+ { 8, 2324, 7449, 6, 18, UNI_PHONETICEXT } /* block=phoneticextensions */,
+ { 0, 339, 2719, 2, 3, UNI_CCC__R } /* ccc=r */,
+ { 8, 3878, 2184, 14, 8, UNI_NV__11_SLASH_12 } /* numericvalue=9.167e-01 */,
+ { 0, 1200, 6400, 3, 11, UNI_CJKRADICALSSUP } /* cjkradicalssup */,
+ { 0, 2324, 7564, 6, 17, UNI_ANCIENTGREEKMUSIC } /* block=ancientgreekmusic */,
+ { 1, 7267, 54, 16, 2, UNI_SC } /* generalcategory=sc */,
+ { 1, 1102, 739, 4, 4, UNI_MAND } /* scx=mand */,
+ { 1, 7011, 274, 23, 2, UNI_CCC__B } /* canonicalcombiningclass=b */,
+ { 0, 461, 94, 2, 4, UNI_GURU } /* isguru */,
+ { 2, 4424, 1255, 17, 4, UNI_SIDD } /* scriptextensions=sidd */,
+ { 18, 4424, 688, 17, 5, UNI_BATK } /* scriptextensions=batak */,
+ { 58, 6450, 2304, 15, 8, UNI_SB__SC } /* sentencebreak=scontinue */,
+ { 1, 2287, 2656, 3, 3, UNI_IN__5 } /* in=5.0 */,
+ { 0, 309, 6510, 2, 24, UNI_HIGHPUSURROGATES } /* inhighprivateusesurrogates */,
+ { 0, 7134, 585, 26, 2, UNI_PCM } /* prependedconcatenationmark=t */,
+ { 0, 1102, 438, 4, 4, UNI_OLCK } /* scx=olck */,
+ { 116, 1726, 2312, 3, 12, UNI_AEGEANNUMBERS } /* isaegeannumbers */,
+ { 1, 33, 6671, 1, 21, UNI_MODIFIERLETTERS } /* spacingmodifierletters */,
+ { 3, 4424, 1191, 17, 7, UNI_BENG } /* scriptextensions=bengali */,
+ { 2, 10, 6597, 1, 21, UNI_MISCTECHNICAL } /* miscellaneoustechnical */,
+ { 0, 5553, 585, 21, 5, UNI_CWCM } /* changeswhencasemapped=true */,
+ { 101, 2432, 1505, 9, 4, UNI_MYANMAREXTA } /* inmyanmarexta */,
+ { 1, 1823, 2735, 6, 5, UNI_SC__ARAB } /* script=arab */,
+ { 1, 8538, 1343, 20, 2, UNI_VO__TU } /* verticalorientation=tu */,
+ { 134, 4424, 4896, 17, 5, UNI_BAMU } /* scriptextensions=bamum */,
+ { 22, 6866, 585, 24, 5, UNI_COMPEX } /* fullcompositionexclusion=true */,
+ { 3, 5746, 1135, 4, 6, UNI_INVITHKUQI } /* invithkuqi */,
+ { 5, 8246, 4107, 24, 12, UNI_INPC__LEFTANDRIGHT } /* indicpositionalcategory=leftandright */,
+ { 0, 30, 7854, 1, 33, UNI_INIDC } /* isideographicdescriptioncharacters */,
+ { 2, 1823, 3493, 6, 9, UNI_SC__CYRL } /* script=cyrillic */,
+ { 1, 1667, 1914, 4, 7, UNI_UCASEXT } /* blk=ucasext */,
+ { 1, 2324, 2468, 6, 6, UNI_IPAEXT } /* block=ipaext */,
+ { 18, 7274, 3276, 9, 13, UNI_ME } /* category=enclosingmark */,
+ { 3, 461, 4407, 2, 17, UNI_RI } /* isregionalindicator */,
+ { 0, 2718, 5318, 3, 3, UNI_BC__RLE } /* bc=rle */,
+ { 0, 3040, 934, 13, 2, -UNI_QMARK } /* quotationmark=f */,
+ { 75, 1272, 4533, 5, 4, UNI_CJKEXTC } /* iscjkextc */,
+ { 82, 4424, 152, 17, 4, UNI_OSGE } /* scriptextensions=osge */,
+ { 0, 1522, 0, 4, 0, UNI_UGAR } /* ugar */,
+ { 0, 1667, 5876, 4, 19, UNI_SUNDANESESUP } /* blk=sundanesesupplement */,
+ { 0, 461, 78, 2, 4, UNI_DSRT } /* isdsrt */,
+ { 24, 339, 1070, 4, 2, UNI_CCC__31 } /* ccc=31 */,
+ { 129, 1102, 3228, 4, 15, UNI_ARMI } /* scx=imperialaramaic */,
+ { 0, 2766, 4150, 3, 11, UNI_P } /* gc=punctuation */,
+ { 0, 4424, 1325, 17, 4, UNI_ITAL } /* scriptextensions=ital */,
+ { 0, 1102, 1021, 4, 6, UNI_WCHO } /* scx=wancho */,
+ { 24, 1914, 0, 4, 0, UNI_UCAS } /* ucas */,
+ { 1, 2514, 6597, 3, 21, UNI_MISCTECHNICAL } /* ismiscellaneoustechnical */,
+ { 13, 461, 4506, 2, 14, UNI_LATINEXTB } /* islatinextendedb */,
+ { 0, 4740, 0, 4, 0, UNI_TALE } /* tale */,
+ { 0, 1065, 1312, 5, 3, UNI_NV__1_SLASH_160 } /* nv=1/160 */,
+ { 0, 1102, 128, 4, 4, UNI_MEDF } /* scx=medf */,
+ { 26, 6165, 683, 3, 4, UNI_SC__TAKR } /* sc=takr */,
+ { 0, 2324, 3475, 6, 15, UNI_INZANABAZARSQUARE } /* block=zanabazarsquare */,
+ { 10, 302, 353, 5, 2, UNI__PERL_PATWS } /* patws=y */,
+ { 0, 5255, 353, 20, 4, UNI_EXTPICT } /* extendedpictographic=yes */,
+ { 2, 3817, 766, 14, 3, UNI_NV__15_SLASH_2 } /* numericvalue=15/2 */,
+ { 0, 2324, 5857, 6, 19, UNI_MONGOLIANSUP } /* block=mongoliansupplement */,
+ { 0, 1823, 1234, 7, 4, UNI_SC__MULT } /* script=mult */,
+ { 24, 510, 295, 4, 1, UNI_NV__39 } /* nv=39 */,
+ { 0, 1667, 2811, 4, 5, UNI_INKHMER } /* blk=khmer */,
+ { 7, 1027, 0, 4, 0, UNI_YEZI } /* yezi */,
+ { 17, 733, 7241, 3, 26, UNI_ENCLOSEDCJK } /* inenclosedcjklettersandmonths */,
+ { 0, 2324, 688, 6, 5, UNI_INBATAK } /* block=batak */,
+ { 3, 7267, 4150, 16, 11, UNI_P } /* generalcategory=punctuation */,
+ { 1, 2324, 634, 6, 7, UNI_INHANUNOO } /* block=hanunoo */,
+ { 5, 832, 274, 5, 1, UNI_sterm_values_index } /* sterm= */,
+ { 0, 1823, 2068, 7, 4, UNI_MEND } /* script=mend */,
+ { 56, 309, 4002, 2, 4, UNI_INMODI } /* inmodi */,
+ { 23, 1455, 585, 10, 5, UNI_DEP } /* deprecated=true */,
+ { 258, 1894, 599, 5, 2, -UNI_BIDIM } /* bidim=n */,
+ { 7, 2391, 6193, 8, 12, UNI_CYRILLICSUP } /* incyrillicsupplement */,
+ { 0, 1455, 0, 3, 0, UNI_DEP } /* dep */,
+ { 0, 298, 585, 2, 2, UNI_RI } /* ri=t */,
+ { 4, 7383, 0, 11, 0, UNI_BC__L } /* bidiclass=l */,
+ { 0, 2, 3163, 1, 14, UNI_CONTROLPICTURES } /* controlpictures */,
+ { 0, 2, 352, 1, 3, UNI_CE } /* ce=y */,
+ { 7, 426, 0, 4, 0, UNI_MRO } /* mroo */,
+ { 3, 1065, 2657, 4, 8, UNI_NV__1_SLASH_10 } /* nv=1.000e-01 */,
+ { 0, 461, 739, 2, 4, UNI_MAND } /* ismand */,
+ { 0, 4424, 1294, 17, 9, UNI_NBAT } /* scriptextensions=nabataean */,
+ { 2, 1102, 840, 4, 7, UNI_TGLG } /* scx=tagalog */,
+ { 18, 1102, 102, 4, 4, UNI_HMNG } /* scx=hmng */,
+ { 3, 292, 3875, 2, 3, UNI_NV__80 } /* nv=80 */,
+ { 0, 1272, 5694, 3, 18, UNI_COUNTINGROD } /* iscountingrodnumerals */,
+ { 214, 1102, 608, 4, 7, UNI_ELBA } /* scx=elbasan */,
+ { 6, 6165, 102, 3, 4, UNI_HMNG } /* sc=hmng */,
+ { 1, 1823, 1978, 7, 4, UNI_SC__SOGD } /* script=sogd */,
+ { 14, 3391, 288, 13, 2, UNI_NV__30 } /* numericvalue=30 */,
+ { 3, 461, 4043, 2, 17, UNI_IDSB } /* isidsbinaryoperator */,
+ { 7, 1823, 2441, 7, 4, UNI_SC__NAND } /* script=nand */,
+ { 13, 4424, 3475, 17, 15, UNI_ZANB } /* scriptextensions=zanabazarsquare */,
+ { 1, 7084, 1037, 8, 4, UNI_ARABICEXTB } /* inarabicextb */,
+ { 0, 1262, 0, 7, 0, UNI_SOYO } /* soyombo */,
+ { 0, 2432, 7620, 3, 28, UNI_MISCARROWS } /* inmiscellaneoussymbolsandarrows */,
+ { 32, 4360, 0, 10, 0, UNI_lb_values_index } /* linebreak= */,
+ { 0, 2324, 997, 6, 6, UNI_INKAITHI } /* block=kaithi */,
+ { 159, 3502, 1505, 12, 4, UNI_ETHIOPICEXTA } /* blk=ethiopicexta */,
+ { 0, 1098, 0, 4, 0, UNI_NSHU } /* nshu */,
+ { 24, 7591, 1933, 3, 9, UNI_LB__AI } /* lb=ambiguous */,
+ { 0, 2766, 4602, 3, 18, UNI_PI } /* gc=initialpunctuation */,
+ { 0, 1667, 997, 4, 6, UNI_INKAITHI } /* blk=kaithi */,
+ { 0, 7011, 391, 25, 2, UNI_CCC__DA } /* canonicalcombiningclass=234 */,
+ { 0, 7274, 363, 9, 2, UNI_SM } /* category=sm */,
+ { 195, 461, 2780, 2, 4, UNI_COPT } /* iscopt */,
+ { 0, 309, 5031, 2, 14, UNI_INHANIFIROHINGYA } /* inhanifirohingya */,
+ { 0, 887, 2083, 5, 2, UNI_IN__1_DOT_1 } /* age=1.1 */,
+ { 12, 461, 7480, 2, 14, UNI_PUA } /* isprivateusearea */,
+ { 31, 4424, 1509, 17, 4, UNI_JAVA } /* scriptextensions=java */,
+ { 1, 7198, 4441, 5, 16, UNI_SMALLFORMS } /* blk=smallformvariants */,
+ { 0, 309, 6776, 2, 14, UNI_MEETEIMAYEKEXT } /* inmeeteimayekext */,
+ { 0, 1667, 6514, 4, 10, UNI_PUA } /* blk=privateuse */,
+ { 0, 1391, 3064, 3, 11, UNI_WB__SQ } /* wb=singlequote */,
+ { 3, 1618, 0, 10, 0, UNI_SD } /* softdotted */,
+ { 42, 1801, 0, 5, 0, UNI_NV__10 } /* nv=10 */,
+ { 1, 7011, 2121, 25, 2, UNI_CCC__202 } /* canonicalcombiningclass=202 */,
+ { 0, 1102, 422, 4, 4, UNI_LINA } /* scx=lina */,
+ { 2, 461, 5876, 2, 9, UNI_SUND } /* issundanese */,
+ { 18, 3832, 343, 15, 2, UNI_NV__5_SLASH_12 } /* numericvalue=5/12 */,
+ { 1, 3391, 1312, 14, 5, UNI_NV__216000 } /* numericvalue=216000 */,
+ { 11, 7648, 1168, 18, 6, UNI_DT__MED } /* decompositiontype=medial */,
+ { 0, 4424, 63, 17, 4, UNI_CPMN } /* scriptextensions=cpmn */,
+ { 0, 253, 599, 4, 3, -UNI_CWCF } /* cwcf=no */,
+ { 32, 4360, 1669, 8, 4, UNI_LB__CJ } /* linebreak=cj */,
+ { 0, 2718, 535, 2, 2, UNI_BC__S } /* bc=s */,
+ { 0, 6163, 2452, 5, 8, UNI_INSC__AVAGRAHA } /* insc=avagraha */,
+ { 14, 6163, 5323, 5, 15, UNI_INSC__MODIFYINGLETTER } /* insc=modifyingletter */,
+ { 0, 292, 1313, 3, 2, UNI_NV__60 } /* nv=60 */,
+ { 136, 7084, 1723, 8, 3, UNI_ARABICPFB } /* inarabicpfb */,
+ { 96, 2523, 4150, 8, 5, UNI_XPOSIXPUNCT } /* isxposixpunct */,
+ { 3, 5616, 353, 21, 4, UNI_CWU } /* changeswhenuppercased=yes */,
+ { 2, 3832, 763, 14, 2, UNI_NV__5_SLASH_6 } /* numericvalue=5/6 */,
+ { 34, 1409, 4659, 5, 9, UNI_LATINEXTC } /* latinextendedc */,
+ { 4, 4424, 3538, 17, 7, UNI_CPRT } /* scriptextensions=cypriot */,
+ { 2, 1823, 67, 7, 4, UNI_SC__CPRT } /* script=cprt */,
+ { 0, 3391, 2147, 14, 8, UNI_NV__1_SLASH_4 } /* numericvalue=2.500e-01 */,
+ { 0, 2324, 571, 6, 7, UNI_INAVESTAN } /* block=avestan */,
+ { 194, 30, 4969, 1, 6, UNI_EMOJI } /* isemoji */,
+ { 0, 1726, 1723, 8, 3, UNI_ARABICPFB } /* isarabicpfb */,
+ { 1, 377, 0, 3, 0, UNI_EXT } /* ext */,
+ { 2, 7537, 6621, 9, 3, UNI_XPOSIXALPHA } /* alphabetic=t */,
+ { 4, 653, 0, 5, 0, UNI_BUHD } /* buhid */,
+ { 1, 2393, 4659, 8, 9, UNI_CYRILLICEXTC } /* cyrillicextendedc */,
+ { 1, 6450, 4, 14, 2, UNI_SB__LO } /* sentencebreak=lo */,
+ { 0, 7804, 934, 11, 6, -UNI_IDEO } /* ideographic=false */,
+ { 1, 1734, 1110, 3, 7, UNI_SPECIALS } /* isspecials */,
+ { 1, 1823, 180, 7, 4, UNI_RUNR } /* script=runr */,
+ { 89, 1102, 1834, 4, 4, UNI_SORA } /* scx=sora */,
+ { 0, 461, 375, 2, 5, UNI_GREXT } /* isgrext */,
+ { 0, 3204, 0, 14, 0, UNI_GREXT } /* graphemeextend */,
+ { 19, 461, 6900, 2, 14, UNI_BYZANTINEMUSIC } /* isbyzantinemusic */,
+ { 104, 4795, 2657, 14, 8, UNI_NV__3_SLASH_5 } /* numericvalue=6.000e-01 */,
+ { 2, 7274, 2360, 9, 10, UNI_CN } /* category=unassigned */,
+ { 2, 733, 7915, 3, 29, UNI_ENCLOSEDALPHANUMSUP } /* inenclosedalphanumericsupplement */,
+ { 42, 5156, 298, 10, 2, UNI_RI } /* wordbreak=ri */,
+ { 2, 4424, 5353, 17, 20, UNI_PHLI } /* scriptextensions=inscriptionalpahlavi */,
+ { 0, 6165, 1582, 3, 10, UNI_PHNX } /* sc=phoenician */,
+ { 0, 3093, 598, 12, 3, -UNI_POSIXXDIGIT } /* asciihexdigit=n */,
+ { 8, 1667, 6487, 4, 23, UNI_ZNAMENNYMUSIC } /* blk=znamennymusicalnotation */,
+ { 4, 7591, 318, 3, 2, UNI_LB__AI } /* lb=ai */,
+ { 38, 1009, 0, 4, 0, UNI_LYCI } /* lyci */,
+ { 0, 3014, 1318, 12, 2, UNI_IN__12 } /* presentin=v120 */,
+ { 0, 1667, 1448, 7, 7, UNI_CJKSTROKES } /* blk=cjkstrokes */,
+ { 48, 1667, 6692, 4, 22, UNI_TRANSPORTANDMAP } /* blk=transportandmapsymbols */,
+ { 0, 309, 1992, 2, 10, UNI_YIRADICALS } /* inyiradicals */,
+ { 22, 2930, 1427, 2, 2, UNI_JT__C } /* jt=c */,
+ { 0, 1667, 5392, 5, 17, UNI_CHEROKEESUP } /* blk=cherokeesupplement */,
+ { 1, 2208, 1314, 4, 3, UNI_NV__5000 } /* nv=5000 */,
+ { 7, 4424, 847, 17, 7, UNI_LANA } /* scriptextensions=taitham */,
+ { 0, 90, 0, 4, 0, UNI_GUJR } /* gujr */,
+ { 0, 1823, 172, 7, 4, UNI_RJNG } /* script=rjng */,
+ { 0, 4424, 1592, 17, 10, UNI_SAUR } /* scriptextensions=saurashtra */,
+ { 32, 461, 1209, 2, 4, UNI_THAI } /* isthai */,
+ { 3, 7591, 4650, 3, 2, UNI_LB__BB } /* lb=bb */,
+ { 2, 461, 3228, 2, 15, UNI_ARMI } /* isimperialaramaic */,
+ { 0, 2393, 6193, 6, 12, UNI_CYRILLICSUP } /* cyrillicsupplement */,
+ { 5, 1728, 4531, 4, 6, UNI_ARABICEXTC } /* arabicextc */,
+ { 22, 3014, 290, 11, 2, UNI_IN__4 } /* presentin=v40 */,
+ { 272, 4391, 1805, 14, 4, UNI_NV__30000 } /* numericvalue=30000 */,
+ { 0, 7214, 2101, 25, 2, UNI_CCC__129 } /* canonicalcombiningclass=129 */,
+ { 1, 461, 31, 2, 4, UNI_AVST } /* isavst */,
+ { 0, 461, 6185, 2, 10, UNI_GLAG } /* isglagolitic */,
+ { 0, 461, 4161, 2, 15, UNI_DIACRITICALSEXT } /* isdiacriticalsext */,
+ { 12, 3863, 0, 14, 0, UNI_NV__8 } /* numericvalue=8 */,
+ { 0, 1102, 414, 4, 3, UNI_HAN } /* scx=han */,
+ { 28, 1823, 4176, 7, 6, UNI_SC__HANG } /* script=hangul */,
+ { 1, 895, 344, 5, 2, UNI_AGE__2_DOT_1 } /* age=v21 */,
+ { 146, 1823, 648, 7, 5, UNI_SC__ADLM } /* script=adlam */,
+ { 0, 3014, 2093, 12, 2, UNI_IN__15 } /* presentin=v150 */,
+ { 0, 2403, 2374, 8, 8, UNI_ETHIOPICEXT } /* ethiopicextended */,
+ { 17, 4371, 584, 5, 6, UNI_XPOSIXSPACE } /* wspace=true */,
+ { 0, 3177, 7048, 15, 9, UNI_EA__F } /* eastasianwidth=fullwidth */,
+ { 13, 7274, 1427, 8, 3, UNI_XPOSIXCNTRL } /* category=cc */,
+ { 3, 5168, 2302, 6, 6, UNI__PERL_IDCONT } /* _perl_idcont */,
+ { 0, 1823, 683, 7, 5, UNI_SC__TAKR } /* script=takri */,
+ { 3, 1454, 934, 2, 6, -UNI_SD } /* sd=false */,
+ { 33, 461, 136, 2, 4, UNI_MYMR } /* ismymr */,
+ { 35, 517, 2107, 4, 8, UNI_NV__15_SLASH_2 } /* nv=7.500e+00 */,
+ { 17, 55, 0, 4, 0, UNI_CHAM } /* cham */,
+ { 8, 1728, 4714, 5, 11, UNI_ARABICSUP } /* arabicsupplement */,
+ { 114, 4424, 1909, 16, 5, UNI_KANA } /* scriptextensions=kana */,
+ { 1, 3021, 2093, 5, 2, UNI_IN__15 } /* in=v150 */,
+ { 0, 3635, 0, 9, 0, UNI_LATINEXTE } /* latinexte */,
+ { 4, 461, 1262, 2, 4, UNI_SOYO } /* issoyo */,
+ { 0, 6165, 120, 3, 4, UNI_LAO } /* sc=laoo */,
+ { 4, 1667, 2256, 4, 8, UNI_PHAISTOS } /* blk=phaistos */,
+ { 1, 309, 5857, 2, 19, UNI_MONGOLIANSUP } /* inmongoliansupplement */,
+ { 22, 2324, 5373, 6, 18, UNI_TAIXUANJING } /* block=taixuanjingsymbols */,
+ { 36, 1942, 5671, 11, 3, -UNI_GRBASE } /* graphemebase=n */,
+ { 0, 4424, 1234, 17, 7, UNI_MULT } /* scriptextensions=multani */,
+ { 264, 2324, 854, 6, 7, UNI_INTAIVIET } /* block=taiviet */,
+ { 1, 2324, 4725, 6, 16, UNI_TANGUTSUP } /* block=tangutsupplement */,
+ { 9, 5637, 281, 21, 2, UNI_GCB__XX } /* graphemeclusterbreak=xx */,
+ { 12, 2232, 2172, 4, 8, UNI_NV__7_SLASH_8 } /* nv=8.750e-01 */,
+ { 1, 2525, 3100, 6, 6, UNI_XPOSIXXDIGIT } /* xposixxdigit */,
+ { 8, 1823, 1853, 7, 11, UNI_SC__SYLO } /* script=sylotinagri */,
+ { 0, 461, 144, 2, 4, UNI_NEWA } /* isnewa */,
+ { 2, 1102, 120, 4, 3, UNI_LAO } /* scx=lao */,
+ { 22, 1823, 1779, 7, 11, UNI_MEDF } /* script=medefaidrin */,
+ { 65, 402, 0, 4, 0, UNI_ARMN } /* armn */,
+ { 0, 461, 3349, 2, 15, UNI_MERC } /* ismeroiticcursive */,
+ { 1, 3021, 1318, 5, 2, UNI_IN__12 } /* in=v120 */,
+ { 64, 461, 1543, 2, 10, UNI_KHAR } /* iskharoshthi */,
+ { 0, 2536, 4765, 3, 5, UNI_JG__ZHAIN } /* jg=zhain */,
+ { 38, 2, 934, 3, 6, -UNI_CWL } /* cwl=false */,
+ { 39, 6163, 7429, 14, 14, UNI_INSC__CONSONANTPRECEDINGREPHA } /* insc=consonantprecedingrepha */,
+ { 138, 1823, 474, 7, 3, UNI_VAI } /* script=vai */,
+ { 0, 461, 814, 2, 4, UNI_QAAI } /* iszinh */,
+ { 4, 7591, 5092, 4, 15, UNI_LB__CP } /* lb=closeparenthesis */,
+ { 0, 4569, 599, 5, 3, -UNI_XPOSIXUPPER } /* upper=no */,
+ { 0, 4371, 352, 5, 5, UNI_XPOSIXSPACE } /* wspace=yes */,
+ { 90, 2523, 0, 13, 0, UNI_XPOSIXBLANK } /* isxposixblank */,
+ { 0, 4502, 129, 15, 3, UNI_LATINEXTF } /* blk=latinextendedf */,
+ { 7, 271, 3463, 4, 12, UNI_WB__EB } /* gcb=glueafterzwj */,
+ { 22, 461, 2, 2, 3, UNI_CWL } /* iscwl */,
+ { 0, 940, 934, 6, 2, -UNI_COMPEX } /* compex=f */,
+ { 2, 2301, 353, 4, 2, UNI_XIDC } /* xidc=y */,
+ { 0, 461, 2068, 2, 4, UNI_MEND } /* ismend */,
+ { 1, 5799, 1845, 5, 8, UNI_SUPERANDSUB } /* insuperandsub */,
+ { 2, 1823, 402, 7, 4, UNI_ARMN } /* script=armn */,
+ { 0, 6062, 5820, 7, 15, UNI_ENCLOSEDALPHANUM } /* block=enclosedalphanum */,
+ { 0, 7084, 3791, 8, 4, UNI_ARABICMATH } /* inarabicmath */,
+ { 0, 2483, 599, 5, 3, -UNI_CASED } /* cased=no */,
+ { 8, 1978, 0, 7, 0, UNI_SOGD } /* sogdian */,
+ { 2, 641, 0, 4, 0, UNI_hst_values_index } /* hst= */,
+ { 131, 312, 934, 5, 2, -UNI_QMARK } /* qmark=f */,
+ { 86, 552, 389, 4, 3, UNI_AGE__6_DOT_3 } /* age=6.3 */,
+ { 2, 5235, 2961, 15, 5, UNI_PC } /* connectorpunctuation */,
+ { 33, 1003, 0, 6, 0, UNI_LEPC } /* lepcha */,
+ { 3, 32, 585, 2, 2, UNI_VS } /* vs=t */,
+ { 0, 1272, 8214, 3, 32, UNI_DIACRITICALSEXT } /* iscombiningdiacriticalmarksextended */,
+ { 2, 176, 178, 2, 2, UNI_ROHG } /* rohg */,
+ { 1, 4043, 353, 17, 2, UNI_IDSB } /* idsbinaryoperator=y */,
+ { 6, 1823, 317, 7, 5, UNI_SC__TALE } /* script=taile */,
+ { 15, 2536, 2559, 3, 10, UNI_JG__KNOTTEDHEH } /* jg=knottedheh */,
+ { 1, 5658, 6534, 10, 7, UNI_identifierstatus_values_index } /* identifierstatus= */,
+ { 5, 510, 0, 4, 0, UNI_NV__3 } /* nv=3 */,
+ { 13, 2718, 6021, 14, 8, UNI_BC__RLO } /* bc=righttoleftoverride */,
+ { 5, 309, 4951, 2, 19, UNI_INEGYPTIANHIEROGLYPHS } /* inegyptianhieroglyphs */,
+ { 0, 4424, 2852, 17, 4, UNI_MAHJ } /* scriptextensions=mahj */,
+ { 6, 3538, 0, 16, 0, UNI_CYPRIOTSYLLABARY } /* cypriotsyllabary */,
+ { 0, 521, 934, 6, 2, -UNI_PATSYN } /* patsyn=f */,
+ { 2, 6165, 418, 3, 4, UNI_KHMR } /* sc=khmr */,
+ { 50, 309, 8142, 2, 18, UNI_IDEOGRAPHICSYMBOLS } /* inideographicsymbols */,
+ { 3, 1667, 5801, 4, 19, UNI_SUPARROWSB } /* blk=supplementalarrowsb */,
+ { 18, 3391, 760, 13, 3, UNI_NV__1_SLASH_2 } /* numericvalue=1/2 */,
+ { 143, 1102, 474, 4, 4, UNI_VAI } /* scx=vaii */,
+ { 36, 1198, 4076, 3, 14, UNI_CURRENCYSYMBOLS } /* incurrencysymbols */,
+ { 3, 1065, 2224, 4, 8, UNI_NV__1_SLASH_80 } /* nv=1.250e-02 */,
+ { 2, 7495, 295, 28, 1, UNI_CCC__19 } /* canonicalcombiningclass=ccc19 */,
+ { 0, 31, 0, 4, 0, UNI_AVST } /* avst */,
+ { 2, 1728, 1723, 6, 3, UNI_ARABICPFB } /* arabicpfb */,
+ { 8, 895, 2093, 6, 2, UNI_AGE__15 } /* age=v150 */,
+ { 0, 3130, 6945, 7, 12, UNI_GEOMETRICSHAPES } /* blk=geometricshapes */,
+ { 169, 2324, 7564, 6, 27, UNI_ANCIENTGREEKMUSIC } /* block=ancientgreekmusicalnotation */,
+ { 0, 4424, 228, 17, 4, UNI_XSUX } /* scriptextensions=xsux */,
+ { 1, 8538, 0, 20, 0, UNI_vo_values_index } /* verticalorientation= */,
+ { 1, 2324, 4862, 6, 4, UNI_RUMI } /* block=rumi */,
+ { 0, 6163, 6642, 5, 19, UNI_INSC__BRAHMIJOININGNUMBER } /* insc=brahmijoiningnumber */,
+ { 128, 533, 4667, 3, 5, UNI_SB__CL } /* sb=close */,
+ { 66, 1391, 21, 3, 2, UNI_WB__EX } /* wb=ex */,
+ { 6, 6090, 2046, 7, 11, UNI_INMASARAMGONDI } /* block=masaramgondi */,
+ { 0, 3633, 4533, 7, 4, UNI_LATINEXTC } /* inlatinextc */,
+ { 392, 2621, 0, 9, 0, UNI__PERL_SURROGATE } /* surrogate */,
+ { 0, 4424, 140, 17, 4, UNI_NARB } /* scriptextensions=narb */,
+ { 0, 2324, 6586, 6, 11, UNI_NUMBERFORMS } /* block=numberforms */,
+ { 0, 2002, 248, 7, 5, UNI_POSIXCNTRL } /* isposixcntrl */,
+ { 4, 1102, 1543, 4, 4, UNI_KHAR } /* scx=khar */,
+ { 9, 271, 4407, 4, 17, UNI_RI } /* gcb=regionalindicator */,
+ { 0, 1823, 4951, 7, 19, UNI_EGYP } /* script=egyptianhieroglyphs */,
+ { 3, 309, 2811, 2, 5, UNI_INKHMER } /* inkhmer */,
+ { 1, 4424, 678, 17, 5, UNI_RUNR } /* scriptextensions=runic */,
+ { 0, 5637, 1612, 21, 2, UNI_LB__LF } /* graphemeclusterbreak=lf */,
+ { 0, 3984, 353, 17, 2, UNI_EPRES } /* emojipresentation=y */,
+ { 0, 2018, 44, 12, 1, UNI_JT__U } /* joiningtype=u */,
+ { 1, 461, 6642, 2, 4, UNI_BRAH } /* isbrah */,
+ { 0, 461, 2068, 2, 12, UNI_MEND } /* ismendekikakui */,
+ { 3, 4377, 353, 14, 2, UNI_DT__NONE } /* nfkdquickcheck=y */,
+ { 1, 1397, 585, 3, 2, UNI_IDS } /* ids=t */,
+ { 22, 461, 333, 2, 6, UNI_CARI } /* iscarian */,
+ { 69, 4360, 68, 10, 2, UNI_LB__PR } /* linebreak=pr */,
+ { 4, 4002, 5118, 8, 7, UNI_MODIFIERLETTERS } /* modifierletters */,
+ { 3, 2766, 326, 3, 2, UNI_PF } /* gc=pf */,
+ { 1, 693, 4810, 3, 17, UNI_ORNAMENTALDINGBATS } /* isornamentaldingbats */,
+ { 1, 30, 6399, 1, 8, UNI_RADICAL } /* isradical */,
+ { 2, 461, 1358, 2, 4, UNI_PALM } /* ispalm */,
+ { 10, 5216, 1037, 11, 4, UNI_LATINEXTB } /* block=latinextb */,
+ { 10, 2324, 5857, 6, 12, UNI_MONGOLIANSUP } /* block=mongoliansup */,
+ { 2, 4424, 854, 17, 7, UNI_TAVT } /* scriptextensions=taiviet */,
+ { 48, 2324, 1505, 9, 4, UNI_CJKEXTA } /* block=cjkexta */,
+ { 0, 8, 274, 3, 1, UNI_pcm_values_index } /* pcm= */,
+ { 117, 2208, 1805, 4, 5, UNI_NV__500000 } /* nv=500000 */,
+ { 2, 1823, 369, 7, 4, UNI_GOTH } /* script=goth */,
+ { 0, 2718, 421, 3, 3, UNI_BC__RLI } /* bc=rli */,
+ { 1, 1823, 82, 7, 4, UNI_SC__GONG } /* script=gong */,
+ { 0, 4519, 5848, 14, 9, UNI_CYRILLICEXTA } /* block=cyrillicextendeda */,
+ { 0, 2324, 7724, 6, 28, UNI_VSSUP } /* block=variationselectorssupplement */,
+ { 0, 7274, 99, 9, 2, UNI_UPPERCASELETTER } /* category=lu */,
+ { 1, 1667, 8567, 5, 34, UNI_DIACRITICALSSUP } /* blk=combiningdiacriticalmarkssupplement */,
+ { 4, 3724, 3720, 12, 4, UNI_JG__MALAYALAMLLLA } /* jg=malayalamllla */,
+ { 0, 6165, 426, 3, 4, UNI_MRO } /* sc=mroo */,
+ { 2, 2002, 0, 3, 0, UNI_P } /* isp */,
+ { 3, 753, 599, 6, 2, UNI_NFKCQC__N } /* nfkcqc=n */,
+ { 0, 6041, 928, 21, 5, UNI_BPT__O } /* bidipairedbrackettype=open */,
+ { 268, 2732, 4531, 8, 6, UNI_ARABICEXTC } /* blk=arabicextc */,
+ { 0, 7591, 1612, 3, 2, UNI_LB__LF } /* lb=lf */,
+ { 10, 2180, 1314, 4, 3, UNI_NV__4000 } /* nv=4000 */,
+ { 0, 7198, 5909, 7, 7, UNI_SUPARROWSC } /* blk=suparrowsc */,
+ { 100, 2732, 5848, 10, 9, UNI_ARABICEXTA } /* blk=arabicextendeda */,
+ { 0, 2401, 1505, 10, 4, UNI_ETHIOPICEXTA } /* inethiopicexta */,
+ { 0, 1455, 353, 10, 4, UNI_DEP } /* deprecated=yes */,
+ { 1, 4360, 53, 10, 2, UNI_LB__NS } /* linebreak=ns */,
+ { 1, 1667, 2780, 4, 6, UNI_INCOPTIC } /* blk=coptic */,
+ { 0, 1667, 5067, 3, 11, UNI_INMANICHAEAN } /* blk=manichaean */,
+ { 0, 3892, 934, 16, 2, -UNI_STERM } /* sentenceterminal=f */,
+ { 52, 461, 4911, 2, 15, UNI_DIACRITICALSSUP } /* isdiacriticalssup */,
+ { 0, 1530, 3622, 5, 11, UNI_KANGXI } /* iskangxiradicals */,
+ { 0, 1075, 1069, 4, 2, UNI_NV__2_SLASH_3 } /* nv=2/3 */,
+ { 1, 1618, 934, 10, 6, -UNI_SD } /* softdotted=false */,
+ { 0, 6816, 0, 25, 0, UNI_CWKCF } /* changeswhennfkccasefolded */,
+ { 1, 339, 6288, 2, 6, UNI_CCC__L } /* ccc=left */,
+ { 2, 6427, 2728, 14, 3, UNI_JG__ALEF } /* joininggroup=alef */,
+ { 1, 629, 352, 5, 3, UNI_GRBASE } /* grbase=y */,
+ { 2, 1205, 0, 7, 0, UNI_GRAN } /* grantha */,
+ { 0, 7383, 7181, 10, 17, UNI_BC__ES } /* bidiclass=europeanseparator */,
+ { 1, 4424, 861, 17, 7, UNI_TIBT } /* scriptextensions=tibetan */,
+ { 33, 4424, 1125, 17, 8, UNI_TFNG } /* scriptextensions=tifinagh */,
+ { 192, 510, 1314, 4, 2, UNI_NV__300 } /* nv=300 */,
+ { 0, 6062, 620, 12, 5, UNI_ETHIOPICEXT } /* block=ethiopicext */,
+ { 2, 5460, 8552, 14, 6, UNI_term_values_index } /* terminalpunctuation= */,
+ { 2, 6735, 1144, 22, 3, UNI_JG__MALAYALAMBHA } /* joininggroup=malayalambha */,
+ { 258, 6165, 1522, 3, 4, UNI_UGAR } /* sc=ugar */,
+ { 159, 1823, 5031, 7, 14, UNI_SC__ROHG } /* script=hanifirohingya */,
+ { 0, 1003, 0, 4, 0, UNI_LEPC } /* lepc */,
+ { 37, 2766, 4016, 3, 14, UNI_ZS } /* gc=spaceseparator */,
+ { 0, 6165, 442, 3, 4, UNI_ORKH } /* sc=orkh */,
+ { 0, 309, 3649, 2, 11, UNI_PHONETICEXT } /* inphoneticext */,
+ { 8, 1667, 7537, 4, 27, UNI_ALPHABETICPF } /* blk=alphabeticpresentationforms */,
+ { 2, 521, 2288, 5, 2, UNI_patsyn_values_index } /* patsyn= */,
+ { 32, 1823, 1334, 7, 4, UNI_SC__PERM } /* script=perm */,
+ { 0, 1556, 0, 6, 0, UNI_ARROWS } /* arrows */,
+ { 77, 3514, 1505, 12, 4, UNI_ARABICEXTA } /* block=arabicexta */,
+ { 161, 30, 1617, 1, 11, UNI_SD } /* issoftdotted */,
+ { 0, 1102, 398, 4, 4, UNI_MIAO } /* scx=miao */,
+ { 0, 597, 51, 3, 3, UNI_DT__CAN } /* dt=can */,
+ { 1, 6165, 5876, 3, 4, UNI_SUND } /* sc=sund */,
+ { 0, 1059, 599, 6, 3, UNI_NFKDQC__N } /* nfkdqc=no */,
+ { 7, 1728, 0, 6, 0, UNI_ARAB } /* arabic */,
+ { 23, 30, 1581, 1, 11, UNI_INPHOENICIAN } /* inphoenician */,
+ { 29, 7383, 4472, 10, 15, UNI_BC__BN } /* bidiclass=boundaryneutral */,
+ { 35, 1823, 740, 8, 6, UNI_SC__MAND } /* script=mandaic */,
+ { 0, 1823, 333, 7, 6, UNI_CARI } /* script=carian */,
+ { 60, 5857, 0, 19, 0, UNI_MONGOLIANSUP } /* mongoliansupplement */,
+ { 2, 4360, 4407, 10, 17, UNI_RI } /* linebreak=regionalindicator */,
+ { 0, 2324, 5440, 6, 20, UNI_INNYIAKENGPUACHUEHMONG } /* block=nyiakengpuachuehmong */,
+ { 26, 1102, 663, 4, 5, UNI_LIMB } /* scx=limbu */,
+ { 0, 168, 318, 2, 2, UNI_QAAI } /* qaai */,
+ { 266, 8343, 7429, 31, 14, UNI_INSC__CONSONANTPRECEDINGREPHA } /* indicsyllabiccategory=consonantprecedingrepha */,
+ { 0, 53, 598, 1, 6, UNI_NV__NAN } /* nt=none */,
+ { 3, 261, 0, 5, 0, UNI_CWKCF } /* cwkcf */,
+ { 200, 2324, 1027, 6, 6, UNI_INYEZIDI } /* block=yezidi */,
+ { 0, 3727, 0, 9, 0, UNI_MLYM } /* malayalam */,
+ { 25, 406, 0, 2, 0, UNI_DI } /* di */,
+ { 0, 4360, 3760, 10, 13, UNI_LB__PR } /* linebreak=prefixnumeric */,
+ { 6, 1667, 5448, 4, 3, UNI_PUA } /* blk=pua */,
+ { 0, 461, 102, 2, 4, UNI_HMNG } /* ishmng */,
+ { 0, 3677, 130, 14, 2, UNI_LATINEXTF } /* islatinextendedf */,
+ { 2, 7086, 0, 24, 0, UNI_ARABICPFB } /* arabicpresentationformsb */,
+ { 0, 718, 0, 7, 0, UNI_KNDA } /* kannada */,
+ { 16, 312, 934, 5, 6, -UNI_QMARK } /* qmark=false */,
+ { 5, 6165, 4951, 3, 4, UNI_EGYP } /* sc=egyp */,
+ { 1, 1667, 6120, 4, 22, UNI_DIACRITICALSFORSYMBOLS } /* blk=diacriticalsforsymbols */,
+ { 0, 461, 5574, 2, 21, UNI_CWL } /* ischangeswhenlowercased */,
+ { 34, 1391, 2768, 2, 6, UNI_WB__XX } /* wb=other */,
+ { 0, 1667, 1572, 4, 10, UNI_INOLDPERSIAN } /* blk=oldpersian */,
+ { 64, 5895, 4457, 4, 15, UNI_SUTTONSIGNWRITING } /* issuttonsignwriting */,
+ { 0, 2403, 6193, 6, 12, UNI_ETHIOPICSUP } /* ethiopicsupplement */,
+ { 0, 5637, 1864, 21, 5, UNI_WB__EB } /* graphemeclusterbreak=ebase */,
+ { 6, 1102, 474, 4, 3, UNI_VAI } /* scx=vai */,
+ { 0, 4043, 934, 17, 6, -UNI_IDSB } /* idsbinaryoperator=false */,
+ { 34, 461, 6185, 2, 4, UNI_GLAG } /* isglag */,
+ { 1, 3098, 934, 8, 6, -UNI_XPOSIXXDIGIT } /* hexdigit=false */,
+ { 1, 2324, 1779, 6, 11, UNI_INMEDEFAIDRIN } /* block=medefaidrin */,
+ { 3, 2324, 725, 6, 7, UNI_KALI } /* block=kayahli */,
+ { 2, 1823, 3728, 8, 8, UNI_SC__MLYM } /* script=malayalam */,
+ { 6, 309, 991, 2, 6, UNI_INHATRAN } /* inhatran */,
+ { 1, 5595, 585, 21, 5, UNI_CWT } /* changeswhentitlecased=true */,
+ { 0, 461, 6082, 2, 8, UNI_GEOR } /* isgeorgian */,
+ { 2, 461, 410, 2, 4, UNI_GONM } /* isgonm */,
+ { 0, 1391, 3456, 5, 4, UNI_WB__MN } /* wb=midnum */,
+ { 0, 422, 0, 4, 0, UNI_LINA } /* lina */,
+ { 3, 7267, 3706, 16, 14, UNI_MN } /* generalcategory=nonspacingmark */,
+ { 2, 3490, 1505, 12, 4, UNI_CYRILLICEXTA } /* blk=cyrillicexta */,
+ { 0, 2232, 2164, 4, 8, UNI_NV__5_SLASH_6 } /* nv=8.333e-01 */,
+ { 58, 7267, 6677, 16, 14, UNI_LM } /* generalcategory=modifierletter */,
+ { 0, 7537, 131, 11, 1, UNI_ALPHABETICPF } /* alphabeticpf */,
+ { 0, 6287, 0, 23, 0, UNI_BC__LRE } /* bc=lefttorightembedding */,
+ { 1, 7752, 3894, 22, 4, UNI_JG__MANICHAEANTEN } /* joininggroup=manichaeanten */,
+ { 3, 1667, 144, 4, 4, UNI_INNEWA } /* blk=newa */,
+ { 10, 6000, 1926, 14, 7, UNI_YIJING } /* yijinghexagramsymbols */,
+ { 133, 309, 3325, 2, 6, UNI_INHEBREW } /* inhebrew */,
+ { 14, 2752, 934, 5, 2, -UNI_EMOJI } /* emoji=f */,
+ { 1, 5156, 1908, 8, 4, UNI_WB__KA } /* wordbreak=ka */,
+ { 2, 4176, 0, 6, 0, UNI_HANG } /* hangul */,
+ { 0, 1530, 0, 6, 0, UNI_KANA } /* iskana */,
+ { 0, 716, 3622, 5, 11, UNI_KANGXI } /* inkangxiradicals */,
+ { 0, 309, 555, 2, 2, UNI_IN__5 } /* in=5 */,
+ { 0, 7467, 1143, 26, 2, UNI_SUPPUAB } /* supplementaryprivateuseareab */,
+ { 1, 1102, 1484, 4, 8, UNI_BUGI } /* scx=buginese */,
+ { 1, 6165, 200, 3, 4, UNI_TAVT } /* sc=tavt */,
+ { 0, 2018, 2919, 12, 11, UNI_JT__L } /* joiningtype=leftjoining */,
+ { 1, 622, 353, 7, 4, UNI_EXTPICT } /* extpict=yes */,
+ { 0, 4569, 599, 5, 2, -UNI_XPOSIXUPPER } /* upper=n */,
+ { 4, 1102, 847, 4, 7, UNI_LANA } /* scx=taitham */,
+ { 0, 461, 1509, 2, 4, UNI_JAVA } /* isjava */,
+ { 0, 461, 2811, 2, 5, UNI_KHMR } /* iskhmer */,
+ { 1, 3130, 6945, 7, 15, UNI_GEOMETRICSHAPESEXT } /* blk=geometricshapesext */,
+ { 1, 4424, 1255, 17, 7, UNI_SIDD } /* scriptextensions=siddham */,
+ { 1, 1823, 909, 7, 8, UNI_BALI } /* script=balinese */,
+ { 0, 309, 1376, 2, 9, UNI_INSAMARITAN } /* insamaritan */,
+ { 13, 1823, 0, 11, 0, UNI_SC__MLYM } /* script=mlym */,
+ { 1, 1823, 426, 7, 3, UNI_MRO } /* script=mro */,
+ { 194, 2536, 4267, 3, 4, UNI_JG__TETH } /* jg=teth */,
+ { 66, 1994, 353, 7, 4, UNI_RADICAL } /* radical=yes */,
+ { 5, 7011, 0, 24, 0, UNI_ccc_values_index } /* canonicalcombiningclass= */,
+ { 110, 4360, 2621, 10, 9, UNI_LB__SG } /* linebreak=surrogate */,
+ { 1, 597, 946, 3, 5, UNI_DT__SUP } /* dt=super */,
+ { 5, 4424, 74, 17, 4, UNI_CYRL } /* scriptextensions=cyrl */,
+ { 23, 1667, 1294, 4, 9, UNI_INNABATAEAN } /* blk=nabataean */,
+ { 70, 6165, 2045, 3, 12, UNI_SC__GONM } /* sc=masaramgondi */,
+ { 0, 1102, 1027, 4, 4, UNI_YEZI } /* scx=yezi */,
+ { 34, 2180, 2107, 4, 8, UNI_NV__9_SLASH_2 } /* nv=4.500e+00 */,
+ { 0, 5255, 0, 20, 0, UNI_EXTPICT } /* extendedpictographic */,
+ { 124, 7011, 2165, 24, 2, UNI_CCC__33 } /* canonicalcombiningclass=33 */,
+ { 0, 2287, 6262, 4, 3, UNI_IN__12_DOT_1 } /* in=12.1 */,
+ { 44, 3407, 0, 14, 0, UNI_NV__4 } /* numericvalue=4 */,
+ { 0, 1102, 4487, 4, 6, UNI_ZYYY } /* scx=common */,
+ { 13410, 6165, 1686, 4, 10, UNI_SC__CPMN } /* sc=cyprominoan */,
+ { 1, 832, 585, 5, 5, UNI_STERM } /* sterm=true */,
+ { 0, 7274, 4150, 9, 11, UNI_P } /* category=punctuation */,
+ { 2, 6797, 0, 19, 0, UNI_DEVANAGARIEXTA } /* devanagariextendeda */,
+ { 0, 461, 253, 2, 4, UNI_CWCF } /* iscwcf */,
+ { 1, 5637, 163, 21, 2, UNI_GCB__PP } /* graphemeclusterbreak=pp */,
+ { 0, 4424, 1086, 17, 4, UNI_KTHI } /* scriptextensions=kthi */,
+ { 0, 7011, 461, 24, 2, UNI_CCC__IS } /* canonicalcombiningclass=is */,
+ { 10, 7648, 1707, 18, 3, UNI_DT__FRA } /* decompositiontype=fra */,
+ { 2, 461, 2665, 2, 13, UNI_PATSYN } /* ispatternsyntax */,
+ { 0, 6165, 3692, 3, 4, UNI_LISU } /* sc=lisu */,
+ { 0, 6165, 615, 3, 4, UNI_ELYM } /* sc=elym */,
+ { 81, 2766, 4827, 3, 18, UNI_ZP } /* gc=paragraphseparator */,
+ { 30, 7591, 3325, 3, 12, UNI_LB__HL } /* lb=hebrewletter */,
+ { 8, 461, 951, 2, 8, UNI_DUPL } /* isduployan */,
+ { 7, 461, 1611, 2, 2, UNI_LOWERCASELETTER } /* isll */,
+ { 34, 461, 3709, 2, 11, UNI_MC } /* isspacingmark */,
+ { 5, 7267, 8, 16, 1, UNI_P } /* generalcategory=p */,
+ { 28, 533, 5144, 3, 5, UNI_SB__AT } /* sb=aterm */,
+ { 0, 2324, 4090, 6, 17, UNI_INDICSIYAQNUMBERS } /* block=indicsiyaqnumbers */,
+ { 0, 5205, 7620, 5, 28, UNI_MISCARROWS } /* blk=miscellaneoussymbolsandarrows */,
+ { 1, 8356, 0, 11, 0, UNI_CO } /* category=co */,
+ { 0, 6165, 450, 3, 4, UNI_MIAO } /* sc=plrd */,
+ { 6, 4424, 3505, 16, 5, UNI_ETHI } /* scriptextensions=ethi */,
+ { 0, 2324, 5838, 6, 10, UNI_JAMO } /* block=hanguljamo */,
+ { 38, 2752, 1185, 3, 6, UNI_EMOTICONS } /* emoticons */,
+ { 0, 5916, 934, 21, 2, -UNI_LOE } /* logicalorderexception=f */,
+ { 0, 271, 21, 4, 2, UNI_GCB__EX } /* gcb=ex */,
+ { 21, 4161, 934, 9, 6, -UNI_DIA } /* diacritic=false */,
+ { 64, 461, 1438, 2, 10, UNI_CHRS } /* ischorasmian */,
+ { 0, 3013, 0, 5, 0, UNI_EPRES } /* epres */,
+ { 0, 4161, 353, 9, 4, UNI_DIA } /* diacritic=yes */,
+ { 3, 2324, 8142, 6, 18, UNI_IDEOGRAPHICSYMBOLS } /* block=ideographicsymbols */,
+ { 0, 120, 0, 3, 0, UNI_LAO } /* lao */,
+ { 259, 1992, 0, 10, 0, UNI_YIRADICALS } /* yiradicals */,
+ { 1, 2503, 585, 5, 5, UNI_JOINC } /* joinc=true */,
+ { 48, 5255, 585, 20, 5, UNI_EXTPICT } /* extendedpictographic=true */,
+ { 110, 461, 1454, 2, 2, UNI_SD } /* issd */,
+ { 2, 6287, 87, 4, 2, UNI_BC__LRE } /* bc=lre */,
+ { 2, 629, 352, 5, 2, UNI_grbase_values_index } /* grbase= */,
+ { 0, 7383, 83, 10, 2, UNI_BC__ON } /* bidiclass=on */,
+ { 0, 2324, 8214, 7, 24, UNI_DIACRITICALS } /* block=combiningdiacriticalmarks */,
+ { 205, 4502, 0, 18, 0, UNI_LATINEXTB } /* blk=latinextendedb */,
+ { 24, 7648, 7201, 17, 4, UNI_DT__SUP } /* decompositiontype=sup */,
+ { 10, 4852, 0, 10, 0, UNI_XPOSIXSPACE } /* whitespace */,
+ { 57, 309, 1978, 2, 7, UNI_INSOGDIAN } /* insogdian */,
+ { 0, 6735, 1193, 22, 3, UNI_JG__MALAYALAMNGA } /* joininggroup=malayalamnga */,
+ { 0, 7591, 0, 3, 0, UNI_lb_values_index } /* lb= */,
+ { 3, 7752, 5433, 23, 7, UNI_JG__MANICHAEANHUNDRED } /* joininggroup=manichaeanhundred */,
+ { 1, 4424, 1376, 17, 9, UNI_SAMR } /* scriptextensions=samaritan */,
+ { 7, 2324, 8474, 9, 33, UNI_CJKCOMPATIDEOGRAPHSSUP } /* block=cjkcompatibilityideographssupplement */,
+ { 1, 1391, 652, 3, 2, UNI_WB__MB } /* wb=mb */,
+ { 0, 309, 4725, 2, 16, UNI_TANGUTSUP } /* intangutsupplement */,
+ { 0, 2766, 13, 3, 2, UNI_LM } /* gc=lm */,
+ { 1, 461, 27, 2, 4, UNI_ARMI } /* isarmi */,
+ { 1, 2766, 65, 3, 2, UNI_MN } /* gc=mn */,
+ { 0, 1562, 0, 4, 0, UNI_NAGM } /* nagm */,
+ { 0, 2752, 353, 14, 4, UNI_ECOMP } /* emojicomponent=yes */,
+ { 1, 6165, 240, 3, 4, UNI_SC__ZYYY } /* sc=zyyy */,
+ { 13, 4424, 220, 17, 4, UNI_WCHO } /* scriptextensions=wcho */,
+ { 5, 2403, 5848, 8, 9, UNI_ETHIOPICEXTA } /* ethiopicextendeda */,
+ { 0, 1667, 1556, 4, 6, UNI_ARROWS } /* blk=arrows */,
+ { 2, 1102, 794, 4, 4, UNI_LANA } /* scx=lana */,
+ { 7, 309, 1556, 2, 6, UNI_ARROWS } /* inarrows */,
+ { 6, 1823, 3692, 7, 4, UNI_LISU } /* script=lisu */,
+ { 0, 339, 344, 4, 3, UNI_CCC__BL } /* ccc=218 */,
+ { 0, 461, 3325, 2, 4, UNI_HEBR } /* ishebr */,
+ { 0, 1094, 0, 4, 0, UNI_MERC } /* merc */,
+ { 1, 33, 7304, 1, 24, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* symbolsandpictographsexta */,
+ { 0, 7274, 3191, 8, 7, UNI_L } /* category=letter */,
+ { 4, 1102, 5876, 4, 4, UNI_SUND } /* scx=sund */,
+ { 2, 309, 6185, 2, 20, UNI_GLAGOLITICSUP } /* inglagoliticsupplement */,
+ { 0, 7274, 3706, 9, 14, UNI_MN } /* category=nonspacingmark */,
+ { 22, 5553, 934, 21, 2, -UNI_CWCM } /* changeswhencasemapped=f */,
+ { 0, 2324, 3325, 6, 6, UNI_INHEBREW } /* block=hebrew */,
+ { 6, 461, 5958, 2, 21, UNI_SINHALAARCHAICNUMBERS } /* issinhalaarchaicnumbers */,
+ { 0, 7084, 4511, 8, 9, UNI_ARABICEXTB } /* inarabicextendedb */,
+ { 28, 2324, 4131, 6, 8, UNI_VEDICEXT } /* block=vedicext */,
+ { 15, 5979, 1461, 17, 4, UNI_VO__TR } /* vo=transformedrotated */,
+ { 0, 2483, 0, 5, 0, UNI_CASED } /* cased */,
+ { 0, 517, 0, 4, 0, UNI_NV__7 } /* nv=7 */,
+ { 7, 1823, 1009, 7, 6, UNI_LYCI } /* script=lycian */,
+ { 0, 2966, 8001, 3, 29, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* insymbolsandpictographsextendeda */,
+ { 0, 4852, 352, 9, 5, UNI_XPOSIXSPACE } /* whitespace=yes */,
+ { 262, 3021, 1314, 5, 2, UNI_IN__10 } /* in=v100 */,
+ { 76, 4161, 599, 9, 2, -UNI_DIA } /* diacritic=n */,
+ { 3, 2832, 1505, 10, 4, UNI_CYRILLICEXTA } /* iscyrillicexta */,
+ { 0, 339, 2742, 4, 10, UNI_CCC__6 } /* ccc=hanreading */,
+ { 34, 3558, 0, 9, 0, UNI_Z } /* separator */,
+ { 7, 1734, 811, 3, 3, UNI_SYRC } /* issyrc */,
+ { 151, 3502, 5848, 12, 9, UNI_ETHIOPICEXTA } /* blk=ethiopicextendeda */,
+ { 80, 2536, 7342, 3, 10, UNI_JG__TEHMARBUTA } /* jg=tehmarbuta */,
+ { 165, 6165, 434, 3, 4, UNI_OGAM } /* sc=ogam */,
+ { 4, 4424, 909, 17, 8, UNI_BALI } /* scriptextensions=balinese */,
+ { 10, 1906, 4511, 8, 9, UNI_KANAEXTB } /* blk=kanaextendedb */,
+ { 6, 6165, 3663, 3, 10, UNI_SC__DEVA } /* sc=devanagari */,
+ { 6, 2208, 763, 4, 2, UNI_NV__5_SLASH_6 } /* nv=5/6 */,
+ { 0, 1530, 109, 3, 3, UNI_KAWI } /* iskawi */,
+ { 3, 8601, 6671, 7, 21, UNI_MODIFIERLETTERS } /* block=spacingmodifierletters */,
+ { 1, 3001, 3263, 12, 7, UNI_XPOSIXDIGIT } /* numerictype=decimal */,
+ { 53, 7724, 934, 17, 2, -UNI_VS } /* variationselector=f */,
+ { 0, 3633, 81, 9, 2, UNI_LATINEXTG } /* inlatinextg */,
+ { 0, 4424, 1003, 17, 4, UNI_LEPC } /* scriptextensions=lepc */,
+ { 4, 6450, 6, 14, 2, UNI_LB__CR } /* sentencebreak=cr */,
+ { 0, 7648, 3484, 18, 6, UNI_DT__SQR } /* decompositiontype=square */,
+ { 82, 2280, 2656, 11, 3, UNI_IN__15 } /* presentin=15.0 */,
+ { 2, 1823, 1125, 7, 8, UNI_TFNG } /* script=tifinagh */,
+ { 0, 7274, 0, 9, 0, UNI_gc_values_index } /* category= */,
+ { 3, 2018, 7683, 7, 6, UNI_JT__L } /* joiningtype=l */,
+ { 1, 2232, 2657, 4, 8, UNI_NV__4_SLASH_5 } /* nv=8.000e-01 */,
+ { 2, 7084, 7545, 6, 20, UNI_ARABICPFA } /* inarabicpresentationformsa */,
+ { 1, 1102, 442, 4, 4, UNI_ORKH } /* scx=orkh */,
+ { 0, 6165, 1812, 3, 11, UNI_HMNG } /* sc=pahawhhmong */,
+ { 87, 4941, 3622, 9, 11, UNI_KANGXI } /* block=kangxiradicals */,
+ { 0, 1530, 490, 5, 3, UNI_KANBUN } /* iskanbun */,
+ { 0, 3013, 585, 5, 5, UNI_EPRES } /* epres=true */,
+ { 0, 461, 450, 2, 4, UNI_MIAO } /* isplrd */,
+ { 0, 312, 0, 5, 0, UNI_QMARK } /* qmark */,
+ { 0, 718, 3622, 3, 3, UNI_KANGXI } /* kangxi */,
+ { 4, 3724, 4724, 12, 3, UNI_JG__MALAYALAMTTA } /* jg=malayalamtta */,
+ { 0, 2301, 5671, 10, 3, -UNI_XIDC } /* xidcontinue=n */,
+ { 258, 4360, 380, 10, 2, UNI_LB__HY } /* linebreak=hy */,
+ { 6, 3040, 599, 13, 2, -UNI_QMARK } /* quotationmark=n */,
+ { 0, 461, 3421, 2, 15, UNI_NARB } /* isoldnortharabian */,
+ { 8, 461, 1098, 2, 4, UNI_NSHU } /* isnshu */,
+ { 1, 4360, 2041, 10, 2, UNI_LB__H3 } /* linebreak=h3 */,
+ { 12, 4424, 176, 17, 4, UNI_ROHG } /* scriptextensions=rohg */,
+ { 0, 3378, 599, 13, 2, UNI_DT__CAN } /* nfdquickcheck=n */,
+ { 3, 2324, 1033, 6, 8, UNI_JAMOEXTB } /* block=jamoextb */,
+ { 0, 5216, 204, 13, 2, UNI_LATINEXTF } /* block=latinextf */,
+ { 26, 2523, 4569, 8, 5, UNI_XPOSIXUPPER } /* isxposixupper */,
+ { 0, 7591, 2609, 3, 10, UNI_LB__WJ } /* lb=wordjoiner */,
+ { 0, 2324, 2373, 8, 5, UNI_CJKEXTE } /* block=cjkexte */,
+ { 138, 5065, 225, 13, 2, UNI_JG__MANICHAEANPE } /* jg=manichaeanpe */,
+ { 0, 2324, 2411, 6, 11, UNI_KATAKANAEXT } /* block=katakanaext */,
+ { 1, 1823, 725, 7, 7, UNI_SC__KALI } /* script=kayahli */,
+ { 2, 609, 2029, 2, 10, UNI_LB__B2 } /* lb=breakboth */,
+ { 27, 533, 1165, 3, 2, UNI_SB__CL } /* sb=cl */,
+ { 4, 6163, 6416, 12, 11, UNI_INSC__CONSONANTSUBJOINED } /* insc=consonantsubjoined */,
+ { 9, 6735, 135, 14, 2, UNI_JG__MIM } /* joininggroup=mim */,
+ { 132, 7274, 4569, 9, 15, UNI_UPPERCASELETTER } /* category=uppercaseletter */,
+ { 3, 15, 3889, 2, 3, UNI_AGE__9 } /* age=9 */,
+ { 4, 8619, 0, 21, 0, UNI_MATHOPERATORS } /* mathematicaloperators */,
+ { 0, 5658, 753, 18, 4, UNI_IDENTIFIERTYPE__NOTNFKC } /* identifiertype=notnfkc */,
+ { 14, 1102, 1367, 4, 9, UNI_PAUC } /* scx=paucinhau */,
+ { 0, 2432, 3788, 3, 15, UNI_MISCMATHSYMBOLSA } /* inmiscmathsymbolsa */,
+ { 0, 6163, 7690, 13, 17, UNI_INSC__CONSONANTINITIALPOSTFIXED } /* insc=consonantinitialpostfixed */,
+ { 65, 461, 7892, 2, 16, UNI_UIDEO } /* isunifiedideograph */,
+ { 33, 2766, 1887, 3, 7, UNI_XPOSIXCNTRL } /* gc=control */,
+ { 0, 2060, 599, 5, 3, -UNI_XPOSIXALPHA } /* alpha=no */,
+ { 50, 2324, 8407, 7, 34, UNI_DIACRITICALSFORSYMBOLS } /* block=combiningdiacriticalmarksforsymbols */,
+ { 0, 1823, 462, 7, 4, UNI_SHAW } /* script=shaw */,
+ { 3, 1726, 4987, 3, 9, UNI_ALCHEMICAL } /* isalchemical */,
+ { 0, 6677, 0, 14, 0, UNI_LM } /* modifierletter */,
+ { 103, 461, 5255, 2, 20, UNI_EXTPICT } /* isextendedpictographic */,
+ { 16, 4941, 5848, 10, 9, UNI_KANAEXTA } /* block=kanaextendeda */,
+ { 1, 7383, 535, 9, 2, UNI_BC__S } /* bidiclass=s */,
+ { 0, 461, 1685, 2, 11, UNI_CPMN } /* iscyprominoan */,
+ { 54, 6165, 1543, 3, 4, UNI_KHAR } /* sc=khar */,
+ { 0, 3391, 393, 13, 2, UNI_NV__15 } /* numericvalue=15 */,
+ { 4, 3391, 1069, 14, 2, UNI_NV__2_SLASH_3 } /* numericvalue=2/3 */,
+ { 3, 1198, 6382, 5, 18, UNI_CJKCOMPATFORMS } /* incjkcompatibilityforms */,
+ { 389, 4060, 0, 15, 0, UNI_BRAI } /* braillepatterns */,
+ { 0, 6427, 2009, 13, 9, UNI_JG__SYRIACWAW } /* joininggroup=syriacwaw */,
+ { 2, 16, 1794, 1, 3, UNI_M } /* gc=m */,
+ { 3, 2718, 6310, 3, 20, UNI_BC__PDF } /* bc=popdirectionalformat */,
+ { 1, 4683, 0, 16, 0, UNI_PF } /* finalpunctuation */,
+ { 10, 4360, 7593, 9, 27, UNI_LB__CJ } /* linebreak=conditionaljapanesestarter */,
+ { 71, 461, 4089, 2, 4, UNI_SIND } /* issind */,
+ { 69, 2004, 3100, 4, 6, UNI_POSIXDIGIT } /* posixdigit */,
+ { 2, 4391, 346, 15, 1, UNI_NV__3_SLASH_8 } /* numericvalue=3/8 */,
+ { 0, 533, 4191, 3, 5, UNI_SB__LO } /* sb=lower */,
+ { 69, 2324, 6776, 6, 21, UNI_MEETEIMAYEKEXT } /* block=meeteimayekextensions */,
+ { 1, 4569, 352, 8, 2, UNI_upper_values_index } /* uppercase= */,
+ { 3, 1894, 934, 5, 2, -UNI_BIDIM } /* bidim=f */,
+ { 29, 6450, 832, 14, 5, UNI_SB__ST } /* sentencebreak=sterm */,
+ { 21, 3098, 585, 8, 5, UNI_XPOSIXXDIGIT } /* hexdigit=true */,
+ { 1, 2483, 934, 5, 2, -UNI_CASED } /* cased=f */,
+ { 1, 6514, 0, 10, 0, UNI_CO } /* privateuse */,
+ { 0, 71, 353, 3, 2, UNI_CWU } /* cwu=y */,
+ { 1, 7383, 1715, 21, 7, UNI_BC__LRI } /* bidiclass=lefttorightisolate */,
+ { 5, 6427, 1920, 13, 3, UNI_JG__TAH } /* joininggroup=tah */,
+ { 0, 3583, 0, 16, 0, UNI_HIGHPUSURROGATES } /* highpusurrogates */,
+ { 0, 7267, 7110, 16, 13, UNI_M } /* generalcategory=combiningmark */,
+ { 8, 6165, 3349, 3, 15, UNI_MERC } /* sc=meroiticcursive */,
+ { 2, 1667, 847, 4, 7, UNI_INTAITHAM } /* blk=taitham */,
+ { 1, 1396, 2931, 7, 3, UNI_XIDS } /* xidstart=t */,
+ { 5, 2494, 6945, 5, 20, UNI_GEOMETRICSHAPESEXT } /* isgeometricshapesextended */,
+ { 0, 1272, 6400, 5, 11, UNI_CJKRADICALSSUP } /* iscjkradicalssup */,
+ { 7, 1823, 5778, 7, 21, UNI_PRTI } /* script=inscriptionalparthian */,
+ { 0, 641, 140, 4, 2, UNI_HST__NA } /* hst=na */,
+ { 0, 461, 6986, 2, 25, UNI_SYMBOLSFORLEGACYCOMPUTING } /* issymbolsforlegacycomputing */,
+ { 73, 2302, 585, 10, 5, UNI_IDC } /* idcontinue=true */,
+ { 19, 30, 1116, 1, 5, UNI_TAGB } /* istagb */,
+ { 2, 461, 7110, 2, 13, UNI_M } /* iscombiningmark */,
+ { 0, 3677, 4698, 6, 12, UNI_LATIN1 } /* islatin1supplement */,
+ { 13, 1424, 520, 8, 1, UNI_CCC__17 } /* ccc=ccc17 */,
+ { 13, 1667, 0, 7, 0, UNI_CJK } /* blk=cjk */,
+ { 38, 461, 1992, 2, 10, UNI_YIRADICALS } /* isyiradicals */,
+ { 3, 1611, 0, 2, 0, UNI_LOWERCASELETTER } /* ll */,
+ { 0, 7648, 7011, 18, 9, UNI_DT__CAN } /* decompositiontype=canonical */,
+ { 0, 8601, 5813, 9, 7, UNI_SUPARROWSB } /* block=suparrowsb */,
+ { 30, 1823, 615, 7, 7, UNI_ELYM } /* script=elymaic */,
+ { 29, 1823, 1248, 7, 4, UNI_SC__PHAG } /* script=phag */,
+ { 29, 1174, 3123, 3, 7, UNI_EA__N } /* ea=neutral */,
+ { 0, 4424, 1262, 17, 4, UNI_SOYO } /* scriptextensions=soyo */,
+ { 0, 6165, 23, 3, 4, UNI_AHOM } /* sc=ahom */,
+ { 65, 1102, 4926, 4, 5, UNI_TAML } /* scx=tamil */,
+ { 38, 339, 2092, 4, 2, UNI_CCC__25 } /* ccc=25 */,
+ { 2, 1424, 348, 7, 2, UNI_CCC__91 } /* ccc=ccc91 */,
+ { 2, 4941, 1505, 10, 4, UNI_KANAEXTA } /* block=kanaexta */,
+ { 5, 5658, 0, 15, 0, UNI_identifiertype_values_index } /* identifiertype= */,
+ { 130, 309, 6900, 2, 23, UNI_BYZANTINEMUSIC } /* inbyzantinemusicalsymbols */,
+ { 62, 4584, 599, 18, 3, -UNI_IDST } /* idstrinaryoperator=no */,
+ { 2, 3514, 4659, 12, 9, UNI_ARABICEXTC } /* block=arabicextendedc */,
+ { 71, 4569, 5671, 8, 3, -UNI_XPOSIXUPPER } /* uppercase=n */,
+ { 11, 339, 295, 5, 1, UNI_CCC__19 } /* ccc=19 */,
+ { 2, 7648, 2030, 20, 5, UNI_DT__NB } /* decompositiontype=nobreak */,
+ { 0, 6090, 7620, 7, 19, UNI_MISCSYMBOLS } /* block=miscellaneoussymbols */,
+ { 8, 3908, 3696, 6, 10, UNI_TANGUTSUP } /* tangutsupplement */,
+ { 0, 2324, 1872, 6, 11, UNI_YISYLLABLES } /* block=yisyllables */,
+ { 1, 876, 934, 4, 2, -UNI_IDEO } /* ideo=f */,
+ { 118, 461, 802, 2, 4, UNI_SARB } /* issarb */,
+ { 224, 309, 8660, 2, 43, UNI_UCASEXTA } /* inunifiedcanadianaboriginalsyllabicsextendeda */,
+ { 211, 4941, 1286, 7, 8, UNI_INKHUDAWADI } /* block=khudawadi */,
+ { 70, 0, 0, 2, 0, UNI_CASEDLETTER } /* l& */,
+ { 0, 461, 5778, 2, 21, UNI_PRTI } /* isinscriptionalparthian */,
+ { 1, 2002, 1082, 7, 4, UNI_POSIXWORD } /* isposixword */,
+ { 204, 8, 1659, 1, 8, UNI_POSIXSPACE } /* perlspace */,
+ { 0, 2718, 7181, 3, 17, UNI_BC__ES } /* bc=europeanseparator */,
+ { 2, 461, 184, 2, 4, UNI_SAMR } /* issamr */,
+ { 1, 4424, 1853, 17, 11, UNI_SYLO } /* scriptextensions=sylotinagri */,
+ { 0, 1906, 3696, 8, 10, UNI_KANASUP } /* blk=kanasupplement */,
+ { 67, 2324, 2411, 6, 8, UNI_INKATAKANA } /* block=katakana */,
+ { 0, 4852, 933, 9, 3, -UNI_XPOSIXSPACE } /* whitespace=f */,
+ { 0, 8343, 2452, 22, 8, UNI_INSC__AVAGRAHA } /* indicsyllabiccategory=avagraha */,
+ { 1, 461, 2411, 2, 8, UNI_KANA } /* iskatakana */,
+ { 3, 17, 984, 1, 3, UNI_HIRA } /* hira */,
+ { 2, 266, 934, 3, 6, -UNI_CWT } /* cwt=false */,
+ { 1, 4424, 200, 17, 4, UNI_TAVT } /* scriptextensions=tavt */,
+ { 0, 4424, 8667, 17, 18, UNI_CANS } /* scriptextensions=canadianaboriginal */,
+ { 69, 4043, 585, 4, 5, UNI_IDSB } /* idsb=true */,
+ { 194, 1198, 8214, 3, 24, UNI_DIACRITICALS } /* incombiningdiacriticalmarks */,
+ { 67, 5068, 0, 10, 0, UNI_MANI } /* manichaean */,
+ { 0, 7648, 604, 18, 4, UNI_EA__F } /* decompositiontype=wide */,
+ { 0, 8071, 4218, 30, 4, UNI_CJKEXTH } /* blk=cjkunifiedideographsextensionh */,
+ { 144, 1823, 204, 7, 4, UNI_TFNG } /* script=tfng */,
+ { 1, 461, 322, 2, 5, UNI_VSSUP } /* isvssup */,
+ { 3, 605, 642, 2, 3, UNI_idst_values_index } /* idst= */,
+ { 140, 2324, 1262, 6, 7, UNI_INSOYOMBO } /* block=soyombo */,
+ { 2, 2732, 1141, 10, 3, UNI_ARABICPFA } /* blk=arabicpfa */,
+ { 0, 7267, 3554, 16, 13, UNI_ZL } /* generalcategory=lineseparator */,
+ { 193, 1102, 426, 4, 4, UNI_MRO } /* scx=mroo */,
+ { 1, 1823, 537, 7, 4, UNI_TANG } /* script=tang */,
+ { 1, 406, 585, 2, 5, UNI_DI } /* di=true */,
+ { 0, 461, 1385, 2, 4, UNI_THAA } /* isthaa */,
+ { 2, 552, 2083, 5, 2, UNI_AGE__5_DOT_1 } /* age=5.1 */,
+ { 0, 3791, 353, 4, 4, UNI_MATH } /* math=yes */,
+ { 12, 1102, 5682, 4, 5, UNI_GREK } /* scx=greek */,
+ { 1, 4424, 422, 17, 4, UNI_LINA } /* scriptextensions=lina */,
+ { 0, 3093, 934, 13, 2, -UNI_POSIXXDIGIT } /* asciihexdigit=f */,
+ { 3, 3635, 4770, 13, 10, UNI_LATINEXTADDITIONAL } /* latinextendedadditional */,
+ { 66, 5255, 353, 20, 2, UNI_EXTPICT } /* extendedpictographic=y */,
+ { 0, 895, 290, 5, 2, UNI_AGE__4 } /* age=v40 */,
+ { 17, 2324, 283, 6, 5, UNI_INNUSHU } /* block=nushu */,
+ { 20, 2718, 2728, 10, 4, UNI_BC__R } /* bc=righttoleft */,
+ { 7, 1823, 454, 7, 4, UNI_PRTI } /* script=prti */,
+ { 1, 4424, 78, 17, 4, UNI_DSRT } /* scriptextensions=dsrt */,
+ { 1, 2220, 2091, 4, 8, UNI_NV__5_SLASH_8 } /* nv=6.250e-01 */,
+ { 0, 4424, 55, 17, 4, UNI_CHAM } /* scriptextensions=cham */,
+ { 0, 8343, 5731, 23, 15, UNI_INSC__CANTILLATIONMARK } /* indicsyllabiccategory=cantillationmark */,
+ { 1, 2988, 2327, 11, 3, UNI_nfcqc_values_index } /* nfcquickcheck= */,
+ { 30, 1065, 3876, 5, 2, UNI_NV__1_SLASH_80 } /* nv=1/80 */,
+ { 15, 7274, 4002, 9, 14, UNI_SK } /* category=modifiersymbol */,
+ { 0, 2324, 5958, 6, 7, UNI_INSINHALA } /* block=sinhala */,
+ { 0, 4424, 802, 17, 4, UNI_SARB } /* scriptextensions=sarb */,
+ { 169, 71, 585, 3, 5, UNI_CWU } /* cwu=true */,
+ { 1, 3021, 394, 4, 2, UNI_IN__5_DOT_1 } /* in=v51 */,
+ { 0, 1102, 4620, 4, 7, UNI_LINB } /* scx=linearb */,
+ { 1, 8505, 3263, 3, 7, UNI_XPOSIXDIGIT } /* nt=decimal */,
+ { 82, 4424, 1105, 16, 5, UNI_TALU } /* scriptextensions=talu */,
+ { 0, 7383, 119, 10, 2, UNI_BC__AL } /* bidiclass=al */,
+ { 259, 3391, 289, 13, 1, UNI_NV__0 } /* numericvalue=0 */,
+ { 0, 3021, 396, 4, 2, UNI_IN__6_DOT_1 } /* in=v61 */,
+ { 32, 4, 352, 2, 2, UNI_loe_values_index } /* loe= */,
+ { 10, 309, 4862, 2, 18, UNI_RUMI } /* inruminumeralsymbols */,
+ { 0, 1396, 353, 4, 4, UNI_XIDS } /* xids=yes */,
+ { 1, 6165, 790, 3, 4, UNI_SC__KALI } /* sc=kali */,
+ { 0, 8601, 819, 7, 6, UNI_SC__SHRD } /* block=sharada */,
+ { 51, 1823, 39, 7, 4, UNI_BHKS } /* script=bhks */,
+ { 1, 4424, 663, 17, 4, UNI_LIMB } /* scriptextensions=limb */,
+ { 1, 7267, 4602, 16, 18, UNI_PI } /* generalcategory=initialpunctuation */,
+ { 0, 5876, 0, 9, 0, UNI_SUND } /* sundanese */,
+ { 0, 1102, 806, 4, 4, UNI_SHRD } /* scx=shrd */,
+ { 1, 461, 3727, 2, 9, UNI_MLYM } /* ismalayalam */,
+ { 2, 2718, 3118, 3, 12, UNI_BC__ON } /* bc=otherneutral */,
+ { 142, 1823, 98, 7, 4, UNI_HLUW } /* script=hluw */,
+ { 1, 2766, 3101, 3, 5, UNI_XPOSIXDIGIT } /* gc=digit */,
+ { 3, 461, 5373, 2, 18, UNI_TAIXUANJING } /* istaixuanjingsymbols */,
+ { 4, 461, 653, 2, 5, UNI_BUHD } /* isbuhid */,
+ { 1, 1200, 1448, 3, 7, UNI_CJKSTROKES } /* cjkstrokes */,
+ { 0, 30, 1190, 1, 5, UNI_BENG } /* isbeng */,
+ { 135, 2766, 115, 3, 2, UNI_SK } /* gc=sk */,
+ { 11, 1102, 668, 4, 5, UNI_OGAM } /* scx=ogham */,
+ { 3, 2766, 5172, 3, 2, UNI_CASEDLETTER } /* gc=l_ */,
+ { 2, 4424, 1522, 17, 8, UNI_UGAR } /* scriptextensions=ugaritic */,
+ { 0, 1823, 739, 7, 4, UNI_SC__MAND } /* script=mand */,
+ { 8, 1272, 5694, 3, 10, UNI_COUNTINGROD } /* iscountingrod */,
+ { 263, 1667, 8214, 5, 32, UNI_DIACRITICALSEXT } /* blk=combiningdiacriticalmarksextended */,
+ { 0, 2324, 426, 6, 3, UNI_INMRO } /* block=mro */,
+ { 147, 8660, 0, 42, 0, UNI_UCASEXT } /* unifiedcanadianaboriginalsyllabicsextended */,
+ { 140, 1894, 599, 12, 2, -UNI_BIDIM } /* bidimirrored=n */,
+ { 1, 4852, 352, 9, 2, UNI_wspace_values_index } /* whitespace= */,
+ { 38, 4970, 0, 13, 0, UNI_EMOD } /* emojimodifier */,
+ { 1, 7648, 1707, 18, 8, UNI_DT__FRA } /* decompositiontype=fraction */,
+ { 0, 375, 598, 4, 3, -UNI_GREXT } /* grext=n */,
+ { 0, 2324, 216, 6, 4, UNI_INTOTO } /* block=toto */,
+ { 132, 5939, 934, 5, 6, -UNI__PERL_NCHAR } /* nchar=false */,
+ { 36, 3817, 2224, 14, 8, UNI_NV__1_SLASH_80 } /* numericvalue=1.250e-02 */,
+ { 4, 4424, 798, 17, 4, UNI_NBAT } /* scriptextensions=nbat */,
+ { 2, 2766, 199, 3, 2, UNI_TITLE } /* gc=lt */,
+ { 0, 309, 1404, 2, 10, UNI_ASCII } /* inbasiclatin */,
+ { 6, 6287, 298, 4, 2, UNI_BC__LRI } /* bc=lri */,
+ { 2, 461, 622, 2, 7, UNI_EXTPICT } /* isextpict */,
+ { 2, 2324, 2468, 6, 13, UNI_IPAEXT } /* block=ipaextensions */,
+ { 35, 6165, 31, 3, 4, UNI_AVST } /* sc=avst */,
+ { 18, 6165, 1262, 3, 4, UNI_SOYO } /* sc=soyo */,
+ { 0, 4424, 188, 17, 4, UNI_SGNW } /* scriptextensions=sgnw */,
+ { 40, 3984, 585, 17, 5, UNI_EPRES } /* emojipresentation=true */,
+ { 4, 461, 7724, 2, 18, UNI_INVS } /* isvariationselectors */,
+ { 0, 461, 2335, 2, 13, UNI_BLOCKELEMENTS } /* isblockelements */,
+ { 9, 1396, 598, 7, 2, UNI_xids_values_index } /* xidstart= */,
+ { 6, 309, 5876, 2, 9, UNI_INSUNDANESE } /* insundanese */,
+ { 37, 20, 1104, 2, 3, UNI_XPOSIXXDIGIT } /* hex=t */,
+ { 70, 4970, 0, 17, 0, UNI_EBASE } /* emojimodifierbase */,
+ { 139, 30, 4190, 1, 10, UNI_XPOSIXLOWER } /* islowercase */,
+ { 812, 940, 599, 6, 2, -UNI_COMPEX } /* compex=n */,
+ { 0, 1102, 499, 4, 4, UNI_LYDI } /* scx=lydi */,
+ { 228, 4424, 634, 17, 7, UNI_HANO } /* scriptextensions=hanunoo */,
+ { 0, 1102, 1117, 4, 8, UNI_TAGB } /* scx=tagbanwa */,
+ { 1, 461, 875, 2, 5, UNI_UIDEO } /* isuideo */,
+ { 0, 7198, 4710, 5, 8, UNI_SYRIACSUP } /* blk=syriacsup */,
+ { 0, 232, 0, 4, 0, UNI_YI } /* yiii */,
+ { 56, 1391, 700, 3, 2, UNI_WB__EB } /* wb=em */,
+ { 0, 461, 4161, 2, 12, UNI_DIACRITICALS } /* isdiacriticals */,
+ { 0, 112, 114, 2, 2, UNI_KITS } /* kits */,
+ { 3, 1102, 1582, 4, 10, UNI_PHNX } /* scx=phoenician */,
+ { 0, 461, 8, 2, 2, UNI_PC } /* ispc */,
+ { 0, 2324, 1367, 6, 9, UNI_INPAUCINHAU } /* block=paucinhau */,
+ { 320, 6185, 0, 10, 0, UNI_GLAG } /* glagolitic */,
+ { 11, 1667, 2811, 4, 12, UNI_KHMERSYMBOLS } /* blk=khmersymbols */,
+ { 29, 4502, 4770, 12, 10, UNI_LATINEXTADDITIONAL } /* blk=latinextadditional */,
+ { 177, 7383, 176, 11, 2, UNI_BC__LRO } /* bidiclass=lro */,
+ { 3, 2732, 2800, 5, 11, UNI_ALPHABETICPF } /* blk=alphabeticpf */,
+ { 0, 6427, 4243, 13, 4, UNI_JG__HETH } /* joininggroup=heth */,
+ { 5, 4360, 3463, 10, 4, UNI_LB__GL } /* linebreak=glue */,
+ { 4, 461, 6120, 2, 22, UNI_DIACRITICALSFORSYMBOLS } /* isdiacriticalsforsymbols */,
+ { 34, 1978, 0, 4, 0, UNI_SOGD } /* sogd */,
+ { 0, 312, 599, 5, 2, -UNI_QMARK } /* qmark=n */,
+ { 0, 6090, 7620, 7, 28, UNI_MISCARROWS } /* block=miscellaneoussymbolsandarrows */,
+ { 0, 8601, 4150, 9, 11, UNI_SUPPUNCTUATION } /* block=suppunctuation */,
+ { 0, 2287, 0, 3, 0, UNI_in_values_index } /* in= */,
+ { 3, 939, 599, 5, 2, -UNI_ECOMP } /* ecomp=n */,
+ { 1, 3490, 3640, 12, 9, UNI_CYRILLICEXTD } /* blk=cyrillicextendedd */,
+ { 33, 1801, 1805, 7, 7, UNI_NV__10000000000 } /* nv=10000000000 */,
+ { 0, 8601, 6103, 9, 13, UNI_SUPMATHOPERATORS } /* block=supmathoperators */,
+ { 1, 2324, 4060, 6, 7, UNI_BRAI } /* block=braille */,
+ { 259, 30, 4074, 1, 16, UNI_CURRENCYSYMBOLS } /* iscurrencysymbols */,
+ { 0, 499, 0, 6, 0, UNI_LYDI } /* lydian */,
+ { 16, 7591, 4783, 6, 12, UNI_LB__CB } /* lb=contingentbreak */,
+ { 356, 4424, 1829, 16, 5, UNI_MLYM } /* scriptextensions=mlym */,
+ { 0, 2004, 307, 5, 5, UNI_POSIXPRINT } /* posixprint */,
+ { 4, 292, 766, 3, 3, UNI_NV__5_SLASH_2 } /* nv=5/2 */,
+ { 3, 7752, 2015, 23, 3, UNI_JG__MANICHAEANWAW } /* joininggroup=manichaeanwaw */,
+ { 3, 7648, 3289, 18, 5, UNI_DT__FIN } /* decompositiontype=final */,
+ { 0, 6165, 493, 3, 6, UNI_SC__KHOJ } /* sc=khojki */,
+ { 469, 4360, 4330, 10, 14, UNI_LB__PO } /* linebreak=postfixnumeric */,
+ { 0, 823, 934, 4, 2, -UNI_DASH } /* dash=f */,
+ { 96, 7198, 5409, 5, 11, UNI_SMALLKANAEXT } /* blk=smallkanaext */,
+ { 2, 1823, 747, 8, 3, UNI_MARC } /* script=marc */,
+ { 0, 1823, 434, 7, 4, UNI_OGAM } /* script=ogam */,
+ { 0, 5799, 1269, 6, 3, UNI_SUPPUAB } /* insuppuab */,
+ { 0, 6165, 658, 3, 5, UNI_SC__DOGR } /* sc=dogra */,
+ { 101, 309, 4525, 2, 12, UNI_CYRILLICEXTC } /* incyrillicextc */,
+ { 77, 4424, 434, 17, 4, UNI_OGAM } /* scriptextensions=ogam */,
+ { 0, 6866, 353, 24, 2, UNI_COMPEX } /* fullcompositionexclusion=y */,
+ { 16, 2780, 0, 4, 0, UNI_COPT } /* copt */,
+ { 0, 6236, 1805, 15, 7, UNI_NV__100000000 } /* numericvalue=100000000 */,
+ { 192, 7669, 1874, 21, 8, UNI_LB__H2 } /* hangulsyllabletype=lvsyllable */,
+ { 0, 1455, 599, 10, 3, -UNI_DEP } /* deprecated=no */,
+ { 0, 7495, 1070, 27, 2, UNI_CCC__31 } /* canonicalcombiningclass=ccc31 */,
+ { 7, 3391, 2234, 12, 10, UNI_NV__1_SLASH_12 } /* numericvalue=8.333e-02 */,
+ { 1, 4131, 0, 15, 0, UNI_VEDICEXT } /* vedicextensions */,
+ { 0, 4360, 2004, 10, 2, UNI_LB__PO } /* linebreak=po */,
+ { 1, 1102, 317, 4, 5, UNI_TALE } /* scx=taile */,
+ { 0, 1823, 967, 7, 8, UNI_SC__GUJR } /* script=gujarati */,
+ { 2, 7383, 330, 10, 3, UNI_BC__PDF } /* bidiclass=pdf */,
+ { 0, 2665, 353, 13, 2, UNI_PATSYN } /* patternsyntax=y */,
+ { 35, 939, 353, 5, 2, UNI_ECOMP } /* ecomp=y */,
+ { 0, 1272, 4076, 3, 13, UNI_SC } /* iscurrencysymbol */,
+ { 294, 1221, 324, 6, 3, UNI_KANASUP } /* inkanasup */,
+ { 66, 3177, 17, 15, 1, UNI_EA__H } /* eastasianwidth=h */,
+ { 2, 30, 614, 1, 8, UNI_INELYMAIC } /* inelymaic */,
+ { 13, 2665, 934, 13, 2, -UNI_PATSYN } /* patternsyntax=f */,
+ { 0, 8658, 0, 44, 0, UNI_UCASEXT } /* isunifiedcanadianaboriginalsyllabicsextended */,
+ { 669, 6165, 1234, 3, 4, UNI_SC__MULT } /* sc=mult */,
+ { 0, 1667, 2244, 4, 12, UNI_INOLDHUNGARIAN } /* blk=oldhungarian */,
+ { 3, 6692, 0, 15, 0, UNI_TRANSPORTANDMAP } /* transportandmap */,
+ { 0, 2324, 1438, 6, 10, UNI_INCHORASMIAN } /* block=chorasmian */,
+ { 0, 6816, 274, 25, 1, UNI_cwkcf_values_index } /* changeswhennfkccasefolded= */,
+ { 0, 302, 585, 5, 5, UNI__PERL_PATWS } /* patws=true */,
+ { 2, 810, 0, 4, 0, UNI_SYRC } /* syrc */,
+ { 7, 461, 11, 2, 4, UNI_ADLM } /* isadlm */,
+ { 0, 1102, 406, 4, 4, UNI_DIAK } /* scx=diak */,
+ { 1, 1102, 3436, 4, 15, UNI_SARB } /* scx=oldsoutharabian */,
+ { 1, 3677, 4533, 7, 4, UNI_LATINEXTC } /* islatinextc */,
+ { 0, 1667, 1696, 4, 6, UNI_DOMINO } /* blk=domino */,
+ { 49, 1102, 240, 4, 4, UNI_ZYYY } /* scx=zyyy */,
+ { 1, 6165, 283, 3, 5, UNI_NSHU } /* sc=nushu */,
+ { 580, 4424, 1248, 17, 4, UNI_PHAG } /* scriptextensions=phag */,
+ { 178, 4424, 4505, 16, 6, UNI_LATN } /* scriptextensions=latin */,
+ { 282, 15, 554, 2, 3, UNI_AGE__5 } /* age=5 */,
+ { 0, 324, 6965, 3, 22, UNI_SUPERANDSUB } /* superscriptsandsubscripts */,
+ { 0, 4569, 584, 8, 6, UNI_XPOSIXUPPER } /* uppercase=true */,
+ { 2, 7274, 13, 9, 2, UNI_LM } /* category=lm */,
+ { 1, 629, 352, 5, 5, UNI_GRBASE } /* grbase=yes */,
+ { 1, 461, 5937, 2, 21, UNI__PERL_NCHAR } /* isnoncharactercodepoint */,
+ { 0, 4424, 4651, 17, 4, UNI_BOPO } /* scriptextensions=bopo */,
+ { 1, 5637, 3709, 21, 11, UNI_GCB__SM } /* graphemeclusterbreak=spacingmark */,
+ { 17, 2324, 4131, 6, 15, UNI_VEDICEXT } /* block=vedicextensions */,
+ { 0, 309, 2182, 2, 4, UNI_IN__4_DOT_1 } /* in=4.1 */,
+ { 1, 3677, 1036, 3, 2, UNI_LOE } /* isloe */,
+ { 39, 461, 493, 2, 6, UNI_KHOJ } /* iskhojki */,
+ { 0, 2, 0, 1, 0, UNI_C } /* c */,
+ { 389, 309, 901, 2, 8, UNI_INARMENIAN } /* inarmenian */,
+ { 0, 2324, 6185, 6, 20, UNI_GLAGOLITICSUP } /* block=glagoliticsupplement */,
+ { 0, 63, 0, 4, 0, UNI_CPMN } /* cpmn */,
+ { 6, 461, 5958, 2, 4, UNI_SINH } /* issinh */,
+ { 1, 4569, 5671, 8, 4, -UNI_XPOSIXUPPER } /* uppercase=no */,
+ { 0, 3391, 2084, 13, 2, UNI_NV__11 } /* numericvalue=11 */,
+ { 0, 461, 772, 2, 7, UNI_OLCK } /* isolchiki */,
+ { 384, 7267, 225, 16, 2, UNI_PE } /* generalcategory=pe */,
+ { 1, 3848, 2147, 14, 8, UNI_NV__3_SLASH_4 } /* numericvalue=7.500e-01 */,
+ { 9, 6165, 474, 3, 3, UNI_VAI } /* sc=vai */,
+ { 0, 1734, 0, 7, 0, UNI_XPOSIXSPACE } /* isspace */,
+ { 11, 5895, 1845, 5, 8, UNI_SUPERANDSUB } /* issuperandsub */,
+ { 1, 7892, 599, 16, 2, -UNI_UIDEO } /* unifiedideograph=n */,
+ { 0, 1823, 1331, 7, 9, UNI_SC__PERM } /* script=oldpermic */,
+ { 1, 7267, 4683, 16, 16, UNI_PF } /* generalcategory=finalpunctuation */,
+ { 0, 8343, 5323, 22, 15, UNI_INSC__MODIFYINGLETTER } /* indicsyllabiccategory=modifyingletter */,
+ { 4, 2536, 1755, 3, 8, UNI_JG__SWASHKAF } /* jg=swashkaf */,
+ { 0, 7084, 8174, 8, 29, UNI_ARABICMATH } /* inarabicmathematicalalphabeticsymbols */,
+ { 0, 2966, 4710, 3, 15, UNI_SYRIACSUP } /* insyriacsupplement */,
+ { 2, 4, 352, 2, 5, UNI_LOE } /* loe=yes */,
+ { 2, 7648, 1127, 18, 3, UNI_DT__FIN } /* decompositiontype=fin */,
+ { 0, 7591, 543, 3, 2, UNI_EBASE } /* lb=eb */,
+ { 1, 6165, 228, 3, 4, UNI_XSUX } /* sc=xsux */,
+ { 0, 1823, 1522, 7, 8, UNI_UGAR } /* script=ugaritic */,
+ { 0, 4360, 700, 10, 2, UNI_EMOD } /* linebreak=em */,
+ { 0, 4150, 0, 5, 0, UNI_P } /* punct */,
+ { 1, 302, 599, 5, 3, -UNI__PERL_PATWS } /* patws=no */,
+ { 2, 292, 1154, 3, 2, UNI_NV__43 } /* nv=43 */,
+ { 0, 1667, 7724, 4, 28, UNI_VSSUP } /* blk=variationselectorssupplement */,
+ { 14, 5937, 934, 21, 6, -UNI__PERL_NCHAR } /* noncharactercodepoint=false */,
+ { 1, 1667, 4809, 4, 18, UNI_ORNAMENTALDINGBATS } /* blk=ornamentaldingbats */,
+ { 103, 6165, 1484, 3, 8, UNI_SC__BUGI } /* sc=buginese */,
+ { 1, 7383, 3706, 10, 14, UNI_BC__NSM } /* bidiclass=nonspacingmark */,
+ { 12, 3892, 934, 16, 6, -UNI_STERM } /* sentenceterminal=false */,
+ { 0, 4424, 818, 17, 7, UNI_SHRD } /* scriptextensions=sharada */,
+ { 2, 1358, 0, 4, 0, UNI_PALM } /* palm */,
+ { 86, 6165, 3663, 3, 4, UNI_SC__DEVA } /* sc=deva */,
+ { 3, 2324, 6797, 6, 18, UNI_DEVANAGARIEXT } /* block=devanagariextended */,
+ { 0, 461, 1397, 2, 7, UNI_IDS } /* isidstart */,
+ { 14, 461, 6000, 2, 6, UNI_YIJING } /* isyijing */,
+ { 2, 4424, 3349, 17, 15, UNI_MERC } /* scriptextensions=meroiticcursive */,
+ { 1, 7889, 4680, 26, 4, UNI_CJKEXTF } /* cjkunifiedideographsextensionf */,
+ { 9, 4371, 584, 5, 3, UNI_XPOSIXSPACE } /* wspace=t */,
+ { 29, 1424, 2154, 7, 2, UNI_CCC__13 } /* ccc=ccc13 */,
+ { 619, 4424, 718, 17, 7, UNI_KNDA } /* scriptextensions=kannada */,
+ { 6, 2324, 5448, 6, 3, UNI_PUA } /* block=pua */,
+ { 10, 1823, 6185, 7, 10, UNI_SC__GLAG } /* script=glagolitic */,
+ { 3, 339, 461, 4, 2, UNI_CCC__IS } /* ccc=is */,
+ { 7, 2766, 3192, 3, 12, UNI_NL } /* gc=letternumber */,
+ { 610, 552, 2199, 4, 3, UNI_AGE__2 } /* age=2.0 */,
+ { 19, 4424, 537, 17, 6, UNI_TNSA } /* scriptextensions=tangsa */,
+ { 1, 6287, 1715, 14, 7, UNI_BC__LRI } /* bc=lefttorightisolate */,
+ { 3, 1994, 585, 7, 2, UNI_RADICAL } /* radical=t */,
+ { 4, 876, 353, 4, 2, UNI_IDEO } /* ideo=y */,
+ { 2, 2930, 0, 3, 0, UNI_jt_values_index } /* jt= */,
+ { 0, 578, 295, 5, 1, UNI_CCC__29 } /* ccc=29 */,
+ { 1, 461, 1603, 2, 6, UNI_L } /* isletter */,
+ { 7, 2732, 0, 10, 0, UNI_INARABIC } /* blk=arabic */,
+ { 2, 8343, 2460, 22, 8, UNI_INSC__TONEMARK } /* indicsyllabiccategory=tonemark */,
+ { 8, 1667, 2468, 4, 13, UNI_IPAEXT } /* blk=ipaextensions */,
+ { 9, 1424, 3404, 7, 2, UNI_CCC__23 } /* ccc=ccc23 */,
+ { 0, 1667, 6154, 4, 9, UNI_INCUNEIFORM } /* blk=cuneiform */,
+ { 0, 597, 3484, 3, 6, UNI_DT__SQR } /* dt=square */,
+ { 0, 2324, 120, 6, 3, UNI_INLAO } /* block=lao */,
+ { 105, 461, 4951, 2, 19, UNI_EGYP } /* isegyptianhieroglyphs */,
+ { 1, 597, 940, 3, 3, UNI_DT__COM } /* dt=com */,
+ { 0, 253, 585, 4, 2, UNI_CWCF } /* cwcf=t */,
+ { 6, 6165, 4651, 3, 4, UNI_SC__BOPO } /* sc=bopo */,
+ { 16, 3021, 290, 4, 2, UNI_IN__4 } /* in=v40 */,
+ { 0, 4502, 204, 11, 2, UNI_LATINEXTF } /* blk=latinextf */,
+ { 0, 8311, 4218, 32, 4, UNI_CJKEXTH } /* block=cjkunifiedideographsextensionh */,
+ { 0, 1391, 3325, 3, 12, UNI_LB__HL } /* wb=hebrewletter */,
+ { 3, 4519, 6193, 12, 12, UNI_CYRILLICSUP } /* block=cyrillicsupplement */,
+ { 0, 1667, 4926, 4, 8, UNI_TAMILSUP } /* blk=tamilsup */,
+ { 0, 292, 2289, 2, 3, UNI_NV__14 } /* nv=14 */,
+ { 0, 2324, 3663, 6, 13, UNI_DEVANAGARIEXT } /* block=devanagariext */,
+ { 3, 248, 0, 2, 0, UNI_CN } /* cn */,
+ { 1, 292, 3403, 2, 3, UNI_NV__23 } /* nv=23 */,
+ { 3, 6165, 232, 3, 4, UNI_SC__YI } /* sc=yiii */,
+ { 2, 1894, 934, 12, 6, -UNI_BIDIM } /* bidimirrored=false */,
+ { 10, 2348, 352, 12, 2, UNI_ci_values_index } /* caseignorable= */,
+ { 1, 7591, 461, 3, 2, UNI_LB__IS } /* lb=is */,
+ { 58, 4424, 2068, 17, 4, UNI_MEND } /* scriptextensions=mend */,
+ { 13, 4584, 585, 18, 5, UNI_IDST } /* idstrinaryoperator=true */,
+ { 321, 3014, 569, 11, 2, UNI_IN__5_DOT_2 } /* presentin=v52 */,
+ { 3, 3021, 1317, 4, 2, UNI_IN__3_DOT_2 } /* in=v32 */,
+ { 106, 1272, 3539, 3, 6, UNI_CPRT } /* iscypriot */,
+ { 0, 1262, 0, 4, 0, UNI_SOYO } /* soyo */,
+ { 272, 2752, 599, 5, 2, -UNI_EMOJI } /* emoji=n */,
+ { 0, 1667, 1234, 4, 7, UNI_INMULTANI } /* blk=multani */,
+ { 0, 461, 470, 2, 4, UNI_TNSA } /* istnsa */,
+ { 371, 30, 3953, 1, 18, UNI_AGHB } /* iscaucasianalbanian */,
+ { 8, 7274, 4075, 9, 14, UNI_SC } /* category=currencysymbol */,
+ { 0, 4852, 352, 9, 3, UNI_XPOSIXSPACE } /* whitespace=y */,
+ { 4, 597, 3611, 3, 6, UNI_DT__COM } /* dt=compat */,
+ { 84, 4191, 352, 8, 3, UNI_XPOSIXLOWER } /* lowercase=y */,
+ { 2, 1667, 8660, 4, 34, UNI_UCAS } /* blk=unifiedcanadianaboriginalsyllabics */,
+ { 0, 6427, 714, 13, 4, UNI_JG__ZAIN } /* joininggroup=zain */,
+ { 135, 4424, 5067, 16, 11, UNI_MANI } /* scriptextensions=manichaean */,
+ { 0, 2324, 4002, 6, 4, UNI_INMODI } /* block=modi */,
+ { 1, 1667, 571, 4, 7, UNI_INAVESTAN } /* blk=avestan */,
+ { 1, 1102, 527, 4, 6, UNI_RJNG } /* scx=rejang */,
+ { 224, 3677, 4698, 6, 2, UNI_LATIN1 } /* islatin1 */,
+ { 3, 1102, 140, 4, 4, UNI_NARB } /* scx=narb */,
+ { 0, 1667, 4651, 4, 16, UNI_BOPOMOFOEXT } /* blk=bopomofoextended */,
+ { 2, 309, 7724, 2, 28, UNI_VSSUP } /* invariationselectorssupplement */,
+ { 0, 1592, 0, 10, 0, UNI_SAUR } /* saurashtra */,
+ { 1, 833, 274, 4, 1, UNI_term_values_index } /* term= */,
+ { 0, 2324, 5778, 6, 21, UNI_ININSCRIPTIONALPARTHIAN } /* block=inscriptionalparthian */,
+ { 0, 1065, 290, 5, 1, UNI_NV__1_SLASH_4 } /* nv=1/4 */,
+ { 1, 2536, 225, 3, 2, UNI_JG__PE } /* jg=pe */,
+ { 3, 609, 1670, 2, 3, UNI_LB__CJ } /* lb=cj */,
+ { 5, 622, 353, 7, 2, UNI_EXTPICT } /* extpict=y */,
+ { 46, 1102, 1234, 4, 4, UNI_MULT } /* scx=mult */,
+ { 3, 461, 23, 2, 4, UNI_AHOM } /* isahom */,
+ { 6, 2287, 557, 3, 3, UNI_IN__6 } /* in=6.0 */,
+ { 0, 875, 5980, 4, 2, UNI_uideo_values_index } /* uideo= */,
+ { 0, 1592, 0, 4, 0, UNI_SAUR } /* saur */,
+ { 132, 3817, 2131, 14, 8, UNI_NV__1_SLASH_6 } /* numericvalue=1.667e-01 */,
+ { 0, 6165, 5031, 3, 4, UNI_SC__HAN } /* sc=hani */,
+ { 1, 6165, 3228, 3, 15, UNI_ARMI } /* sc=imperialaramaic */,
+ { 2, 30, 908, 1, 9, UNI_INBALINESE } /* inbalinese */,
+ { 10, 1102, 31, 4, 4, UNI_AVST } /* scx=avst */,
+ { 1, 7011, 7408, 18, 11, UNI_CCC__R } /* canonicalcombiningclass=right */,
+ { 103, 2718, 4276, 3, 3, UNI_BC__NSM } /* bc=nsm */,
+ { 0, 2766, 6514, 3, 10, UNI_CO } /* gc=privateuse */,
+ { 8, 1975, 0, 10, 0, UNI_SOGO } /* oldsogdian */,
+ { 71, 19, 0, 4, 0, UNI_POSIXXDIGIT } /* ahex */,
+ { 0, 7011, 2289, 23, 3, UNI_CCC__14 } /* canonicalcombiningclass=14 */,
+ { 0, 309, 1914, 2, 4, UNI_UCAS } /* inucas */,
+ { 0, 1823, 4060, 7, 4, UNI_BRAI } /* script=brai */,
+ { 2, 1823, 678, 7, 5, UNI_RUNR } /* script=runic */,
+ { 13, 7752, 3740, 23, 3, UNI_JG__MANICHAEANMEM } /* joininggroup=manichaeanmem */,
+ { 7, 6427, 2569, 13, 10, UNI_JG__REVERSEDPE } /* joininggroup=reversedpe */,
+ { 0, 7591, 7804, 3, 11, UNI_LB__ID } /* lb=ideographic */,
+ { 2, 2766, 0, 3, 2, UNI_CASEDLETTER } /* gc=l& */,
+ { 0, 1823, 224, 7, 4, UNI_XPEO } /* script=xpeo */,
+ { 1, 7267, 6514, 16, 10, UNI_CO } /* generalcategory=privateuse */,
+ { 0, 1942, 352, 11, 3, UNI_GRBASE } /* graphemebase=y */,
+ { 0, 895, 1313, 5, 2, UNI_AGE__6 } /* age=v60 */,
+ { 0, 5448, 0, 3, 0, UNI_PUA } /* pua */,
+ { 1, 6165, 3349, 3, 4, UNI_MERO } /* sc=mero */,
+ { 25, 461, 1455, 2, 3, UNI_DEP } /* isdep */,
+ { 0, 261, 599, 5, 2, -UNI_CWKCF } /* cwkcf=n */,
+ { 2, 4191, 0, 9, 0, UNI_XPOSIXLOWER } /* lowercase */,
+ { 3, 309, 1255, 2, 7, UNI_INSIDDHAM } /* insiddham */,
+ { 1, 461, 6816, 2, 25, UNI_CWKCF } /* ischangeswhennfkccasefolded */,
+ { 325, 1894, 353, 12, 2, UNI_BIDIM } /* bidimirrored=y */,
+ { 418, 461, 2621, 2, 9, UNI__PERL_SURROGATE } /* issurrogate */,
+ { 44, 30, 4145, 1, 5, UNI_DASH } /* isdash */,
+ { 0, 8343, 4119, 22, 12, UNI_INSC__NUMBERJOINER } /* indicsyllabiccategory=numberjoiner */,
+ { 3, 2434, 5848, 7, 9, UNI_MYANMAREXTA } /* myanmarextendeda */,
+ { 0, 2766, 466, 3, 2, UNI_SO } /* gc=so */,
+ { 1, 2324, 8153, 9, 21, UNI_CJKSYMBOLS } /* block=cjksymbolsandpunctuation */,
+ { 1, 2220, 2131, 4, 8, UNI_NV__2_SLASH_3 } /* nv=6.667e-01 */,
+ { 0, 461, 1864, 2, 5, UNI_EBASE } /* isebase */,
+ { 0, 597, 4602, 3, 4, UNI_DT__INIT } /* dt=init */,
+ { 0, 8601, 7304, 7, 24, UNI_SYMBOLSANDPICTOGRAPHSEXTA } /* block=symbolsandpictographsexta */,
+ { 15, 8071, 4158, 30, 4, UNI_CJKEXTD } /* blk=cjkunifiedideographsextensiond */,
+ { 11, 1424, 559, 8, 2, UNI_CCC__107 } /* ccc=ccc107 */,
+ { 0, 3791, 599, 4, 2, -UNI_MATH } /* math=n */,
+ { 0, 1894, 934, 12, 2, -UNI_BIDIM } /* bidimirrored=f */,
+ { 17, 2324, 4926, 6, 5, UNI_INTAMIL } /* block=tamil */,
+ { 0, 3391, 6270, 13, 9, UNI_NV__3_SLASH_80 } /* numericvalue=3.750e-02 */,
+ { 66, 461, 99, 2, 2, UNI_UPPERCASELETTER } /* islu */,
+ { 0, 1272, 1922, 3, 11, UNI_CHESSSYMBOLS } /* ischesssymbols */,
+ { 0, 3848, 1314, 14, 2, UNI_NV__700 } /* numericvalue=700 */,
+ { 0, 2718, 83, 3, 2, UNI_BC__ON } /* bc=on */,
+ { 4, 2324, 6642, 6, 6, UNI_INBRAHMI } /* block=brahmi */,
+ { 68, 309, 6000, 2, 6, UNI_YIJING } /* inyijing */,
+ { 0, 2930, 7, 3, 1, UNI_JT__R } /* jt=r */,
+ { 192, 309, 2234, 2, 2, UNI_IN__8 } /* in=8 */,
+ { 68, 4584, 585, 18, 2, UNI_IDST } /* idstrinaryoperator=t */,
+ { 2, 2324, 3955, 7, 16, UNI_INCAUCASIANALBANIAN } /* block=caucasianalbanian */,
+ { 68, 2523, 1082, 8, 4, UNI_XPOSIXWORD } /* isxposixword */,
+ { 7, 7669, 644, 18, 2, UNI_GCB__L } /* hangulsyllabletype=l */,
+ { 1029, 7011, 6328, 24, 4, UNI_WB__EB } /* canonicalcombiningclass=atbl */,
+ { 0, 4569, 274, 5, 1, UNI_upper_values_index } /* upper= */,
+ { 220, 309, 1349, 2, 9, UNI_INOLDUYGHUR } /* inolduyghur */,
+ { 6, 2324, 7110, 6, 24, UNI_DIACRITICALSFORSYMBOLS } /* block=combiningmarksforsymbols */,
+ { 546, 1894, 934, 5, 6, -UNI_BIDIM } /* bidim=false */,
+ { 0, 1823, 164, 7, 4, UNI_PHNX } /* script=phnx */,
+ { 16, 6165, 1572, 3, 10, UNI_XPEO } /* sc=oldpersian */,
+ { 3, 1102, 1954, 4, 12, UNI_GONG } /* scx=gunjalagondi */,
+ { 144, 7084, 4531, 6, 6, UNI_ARABICEXTC } /* inarabicextc */,
+ { 54, 7214, 2165, 25, 2, UNI_WB__EB } /* canonicalcombiningclass=133 */,
+ { 4, 1455, 599, 10, 2, -UNI_DEP } /* deprecated=n */,
+ { 480, 6642, 0, 6, 0, UNI_BRAH } /* brahmi */,
+ { 4, 1102, 470, 4, 4, UNI_TNSA } /* scx=tnsa */,
+ { 21, 4424, 240, 17, 4, UNI_ZYYY } /* scriptextensions=zyyy */,
+ { 72, 6866, 934, 24, 2, -UNI_COMPEX } /* fullcompositionexclusion=f */,
+ { 0, 6165, 140, 3, 4, UNI_NARB } /* sc=narb */,
+ { 0, 7724, 599, 17, 2, -UNI_VS } /* variationselector=n */,
+ { 10, 1240, 4810, 3, 17, UNI_ORNAMENTALDINGBATS } /* inornamentaldingbats */,
+ { 0, 266, 585, 3, 5, UNI_CWT } /* cwt=true */,
+ { 17, 4391, 395, 15, 2, UNI_NV__3_SLASH_16 } /* numericvalue=3/16 */,
+ { 92, 5553, 599, 21, 2, -UNI_CWCM } /* changeswhencasemapped=n */,
+ { 432, 2002, 0, 4, 0, UNI_PO } /* ispo */,
+ { 18, 2060, 0, 5, 0, UNI_XPOSIXALPHA } /* alpha */,
+ { 16, 1823, 1509, 7, 8, UNI_SC__JAVA } /* script=javanese */,
+ { 50, 1102, 1978, 4, 7, UNI_SOGD } /* scx=sogdian */,
+ { 40, 5658, 6841, 15, 16, UNI_IDENTIFIERTYPE__DEFAULTIGNORABLE } /* identifiertype=defaultignorable */,
+ { 2, 832, 0, 5, 0, UNI_STERM } /* sterm */,
+ { 6, 4845, 0, 17, 0, UNI__PERL_PATWS } /* patternwhitespace */,
+ { 0, 2432, 8374, 3, 33, UNI_MISCPICTOGRAPHS } /* inmiscellaneoussymbolsandpictographs */,
+ { 1, 1823, 901, 7, 8, UNI_ARMN } /* script=armenian */,
+ { 1, 4060, 0, 4, 0, UNI_BRAI } /* brai */,
+ { 0, 2018, 341, 4, 2, UNI_joinc_values_index } /* joinc= */,
+ { 569, 3649, 0, 14, 0, UNI_PHONETICEXTSUP } /* phoneticextsup */,
+ { 1, 6165, 975, 3, 8, UNI_SC__GURU } /* sc=gurmukhi */,
+ { 4, 6165, 112, 3, 4, UNI_KITS } /* sc=kits */,
+ { 67, 3878, 761, 14, 2, UNI_NV__9_SLASH_2 } /* numericvalue=9/2 */,
+ { 0, 2324, 2811, 6, 5, UNI_INKHMER } /* block=khmer */,
+ { 0, 4424, 5208, 16, 8, UNI_MYMR } /* scriptextensions=myanmar */,
+ { 706, 5616, 599, 21, 3, -UNI_CWU } /* changeswhenuppercased=no */,
+ { 0, 4424, 1027, 17, 6, UNI_YEZI } /* scriptextensions=yezidi */,
+ { 2, 7752, 4247, 23, 4, UNI_JG__MANICHAEANKAPH } /* joininggroup=manichaeankaph */,
+ { 0, 6185, 0, 13, 0, UNI_GLAGOLITICSUP } /* glagoliticsup */,
+ { 6, 1667, 6642, 4, 6, UNI_INBRAHMI } /* blk=brahmi */,
+ { 0, 461, 3692, 2, 4, UNI_LISU } /* islisu */,
+ { 524, 2718, 355, 3, 2, UNI_BC__ES } /* bc=es */,
+ { 0, 271, 1887, 4, 7, UNI_GCB__CN } /* gcb=control */,
+ { 11, 578, 391, 5, 2, UNI_CCC__DA } /* ccc=234 */,
+ { 1, 4424, 1509, 17, 8, UNI_JAVA } /* scriptextensions=javanese */,
+ { 258, 2930, 3313, 3, 12, UNI_JT__R } /* jt=rightjoining */,
+ { 0, 1102, 917, 4, 8, UNI_BASS } /* scx=bassavah */,
+ { 176, 2018, 12, 12, 1, UNI_JT__D } /* joiningtype=d */,
+ { 2, 1102, 78, 4, 4, UNI_DSRT } /* scx=dsrt */,
+ { 17, 423, 4987, 3, 16, UNI_ALCHEMICAL } /* inalchemicalsymbols */,
+ { 1168, 7274, 4150, 9, 5, UNI_P } /* category=punct */,
+ { 5, 2536, 4243, 3, 4, UNI_JG__HETH } /* jg=heth */,
+ { 0, 1823, 814, 7, 4, UNI_SC__QAAI } /* script=zinh */,
+ { 0, 30, 4619, 1, 17, UNI_LINEARBSYLLABARY } /* inlinearbsyllabary */,
+ { 6, 2324, 983, 6, 8, UNI_INHIRAGANA } /* block=hiragana */,
+ { 1, 1051, 0, 8, 0, UNI_MAHJ } /* mahajani */,
+ { 1592, 2302, 934, 3, 6, -UNI_IDC } /* idc=false */,
+ { 199, 309, 1285, 2, 9, UNI_INKHUDAWADI } /* inkhudawadi */,
+ { 0, 1243, 3726, 5, 10, UNI_INMALAYALAM } /* block=malayalam */,
+ { 322, 1667, 3663, 4, 10, UNI_INDEVANAGARI } /* blk=devanagari */,
+ { 0, 6090, 3788, 7, 15, UNI_MISCMATHSYMBOLSA } /* block=miscmathsymbolsa */,
+ { 0, 2324, 7449, 6, 28, UNI_PHONETICEXTSUP } /* block=phoneticextensionssupplement */,
+ { 29, 2391, 3640, 10, 9, UNI_CYRILLICEXTD } /* incyrillicextendedd */,
+ { 8, 461, 6797, 2, 19, UNI_DEVANAGARIEXTA } /* isdevanagariextendeda */,
+ { 0, 1823, 746, 7, 7, UNI_MARC } /* script=marchen */,
+ { 296, 298, 934, 2, 6, -UNI_RI } /* ri=false */,
+ { 0, 2665, 934, 13, 6, -UNI_PATSYN } /* patternsyntax=false */,
+ { 3, 3013, 599, 5, 3, -UNI_EPRES } /* epres=no */,
+ { 0, 8601, 5149, 18, 7, UNI_SUPARROWSA } /* block=supplementalarrowsa */,
+ { 0, 510, 2107, 4, 8, UNI_NV__7_SLASH_2 } /* nv=3.500e+00 */,
+ { 36, 18, 918, 1, 3, UNI_BASS } /* bass */,
+ { 0, 6165, 951, 3, 8, UNI_SC__DUPL } /* sc=duployan */,
+ { 6, 4360, 281, 10, 2, UNI_LB__XX } /* linebreak=xx */,
+ { 22, 1823, 200, 7, 4, UNI_TAVT } /* script=tavt */,
+ { 0, 1221, 1037, 6, 4, UNI_KANAEXTB } /* inkanaextb */,
+ { 0, 461, 224, 2, 4, UNI_XPEO } /* isxpeo */,
+ { 0, 326, 0, 2, 0, UNI_PF } /* pf */,
+ { 0, 2324, 1582, 6, 10, UNI_INPHOENICIAN } /* block=phoenician */,
+ { 0, 30, 115, 1, 5, UNI_KNDA } /* isknda */,
+ { 260, 2842, 7915, 3, 29, UNI_ENCLOSEDALPHANUMSUP } /* isenclosedalphanumericsupplement */,
+ { 0, 8601, 7707, 17, 17, UNI_SUPPUAB } /* block=supplementaryprivateuseareab */,
+ { 0, 7752, 5425, 22, 8, UNI_JG__MANICHAEANDHAMEDH } /* joininggroup=manichaeandhamedh */,
+ { 276, 1272, 3539, 3, 15, UNI_CYPRIOTSYLLABARY } /* iscypriotsyllabary */,
+ { 0, 7274, 644, 8, 2, UNI_L } /* category=l */,
+ { 0, 6165, 1325, 3, 4, UNI_ITAL } /* sc=ital */,
+ { 0, 3391, 2138, 13, 9, UNI_NV__3_SLASH_16 } /* numericvalue=1.875e-01 */,
+ { 0, 339, 344, 4, 2, UNI_CCC__21 } /* ccc=21 */,
+ { 771, 1397, 585, 7, 5, UNI_IDS } /* idstart=true */,
+ { 1, 18, 6901, 1, 22, UNI_BYZANTINEMUSIC } /* byzantinemusicalsymbols */,
+ { 1, 7267, 625, 16, 2, UNI_PI } /* generalcategory=pi */,
+ { 16, 474, 0, 4, 0, UNI_VAI } /* vaii */,
+ { 565, 6090, 3364, 7, 14, UNI_MISCPICTOGRAPHS } /* block=miscpictographs */,
+ { 5, 2842, 7915, 3, 20, UNI_ENCLOSEDALPHANUM } /* isenclosedalphanumerics */,
+ { 868, 4391, 1314, 14, 2, UNI_NV__300 } /* numericvalue=300 */,
+ { 0, 1011, 274, 2, 1, UNI_ci_values_index } /* ci= */,
+ { 0, 2966, 1110, 3, 7, UNI_SPECIALS } /* inspecials */,
+ { 1, 1894, 353, 5, 4, UNI_BIDIM } /* bidim=yes */,
+ { 1, 1424, 1155, 7, 2, UNI_CCC__35 } /* ccc=ccc35 */,
+ { 1, 6165, 458, 3, 4, UNI_SC__QAAI } /* sc=qaai */,
+ { 0, 7011, 6328, 24, 3, UNI_CCC__202 } /* canonicalcombiningclass=atb */,
+ { 1, 823, 353, 4, 4, UNI_DASH } /* dash=yes */,
+ { 0, 4424, 786, 17, 4, UNI_HMNP } /* scriptextensions=hmnp */,
+ { 0, 20, 599, 3, 3, -UNI_XPOSIXXDIGIT } /* hex=no */,
+ { 136, 461, 4862, 2, 18, UNI_RUMI } /* isruminumeralsymbols */,
+ { 7, 298, 353, 2, 2, UNI_RI } /* ri=y */,
+ { 1, 309, 2244, 2, 12, UNI_INOLDHUNGARIAN } /* inoldhungarian */,
+ { 0, 461, 212, 2, 4, UNI_TIBT } /* istibt */,
+ { 1, 4569, 933, 8, 3, -UNI_XPOSIXUPPER } /* uppercase=f */,
+ { 9, 552, 566, 4, 3, UNI_AGE__9 } /* age=9.0 */,
+ { 0, 434, 0, 4, 0, UNI_OGAM } /* ogam */,
+ { 2, 7648, 3611, 18, 6, UNI_DT__COM } /* decompositiontype=compat */,
+ { 770, 4424, 3505, 16, 9, UNI_ETHI } /* scriptextensions=ethiopic */,
+ { 902, 3391, 2101, 13, 2, UNI_NV__29 } /* numericvalue=29 */,
+ { 260, 7892, 353, 16, 4, UNI_UIDEO } /* unifiedideograph=yes */,
+ { 80, 1102, 1248, 4, 4, UNI_PHAG } /* scx=phag */,
+ { 0, 309, 648, 2, 5, UNI_INADLAM } /* inadlam */,
+ { 0, 1501, 0, 8, 0, UNI_JAMOEXTA } /* jamoexta */,
+ { 1, 1102, 212, 4, 4, UNI_TIBT } /* scx=tibt */,
+ { 86, 461, 983, 2, 4, UNI_HIRA } /* ishira */,
+ { 3, 7274, 225, 9, 2, UNI_PE } /* category=pe */,
+ { 189, 5156, 1613, 10, 2, UNI_WB__FO } /* wordbreak=fo */,
+ { 5, 461, 35, 2, 4, UNI_BATK } /* isbatk */,
+ { 1, 1272, 8474, 5, 33, UNI_CJKCOMPATIDEOGRAPHSSUP } /* iscjkcompatibilityideographssupplement */,
+ { 0, 3130, 3448, 9, 6, UNI_GEORGIANEXT } /* blk=georgianext */,
+ { 104, 5156, 4407, 10, 17, UNI_RI } /* wordbreak=regionalindicator */,
+ { 523, 1059, 353, 6, 2, UNI_DT__NONE } /* nfkdqc=y */,
+ { 0, 1102, 786, 4, 4, UNI_HMNP } /* scx=hmnp */,
+ { 273, 1823, 208, 7, 4, UNI_SC__TGLG } /* script=tglg */,
+ { 0, 2, 353, 3, 4, UNI_CWL } /* cwl=yes */,
+ { 19, 7648, 693, 18, 3, UNI_DT__ISO } /* decompositiontype=iso */,
+ { 0, 1667, 4862, 4, 18, UNI_RUMI } /* blk=ruminumeralsymbols */,
+ { 0, 339, 8101, 4, 10, UNI_CCC__BR } /* ccc=belowright */,
+ { 26, 7591, 4288, 3, 14, UNI_LB__CR } /* lb=carriagereturn */,
+ { 0, 4424, 1562, 17, 4, UNI_NAGM } /* scriptextensions=nagm */,
+ { 848, 2220, 2657, 4, 8, UNI_NV__3_SLASH_5 } /* nv=6.000e-01 */,
+ { 59, 2, 2931, 2, 3, UNI_CWT } /* cwt=t */,
+ { 0, 1075, 1312, 4, 5, UNI_NV__216000 } /* nv=216000 */,
+ { 0, 3817, 2657, 14, 8, UNI_NV__1_SLASH_10 } /* numericvalue=1.000e-01 */,
+ { 265, 4191, 352, 8, 2, UNI_lower_values_index } /* lowercase= */,
+ { 0, 2180, 520, 4, 1, UNI_NV__47 } /* nv=47 */,
+ { 2, 4896, 0, 5, 0, UNI_BAMU } /* bamum */,
+ { 1, 876, 599, 4, 2, -UNI_IDEO } /* ideo=n */,
+ { 2, 1102, 228, 4, 4, UNI_XSUX } /* scx=xsux */,
+ { 1, 3502, 7241, 5, 10, UNI_ENCLOSEDCJK } /* blk=enclosedcjk */,
+ { 290, 7889, 7380, 26, 4, UNI_CJKEXTB } /* cjkunifiedideographsextensionb */,
+ { 16, 199, 0, 2, 0, UNI_TITLE } /* lt */,
+ { 0, 6618, 3243, 5, 10, UNI_INPC__OVERSTRUCK } /* inpc=overstruck */,
+ { 20, 8278, 3367, 4, 11, UNI_MISCPICTOGRAPHS } /* miscpictographs */,
+ { 12, 461, 5857, 2, 12, UNI_MONGOLIANSUP } /* ismongoliansup */,
+ { 0, 3817, 1312, 15, 3, UNI_NV__1_SLASH_160 } /* numericvalue=1/160 */,
+ { 2, 2324, 1922, 7, 11, UNI_CHESSSYMBOLS } /* block=chesssymbols */,
+ { 3, 8343, 5746, 22, 16, UNI_INSC__INVISIBLESTACKER } /* indicsyllabiccategory=invisiblestacker */,
+ { 2, 1883, 6621, 4, 3, UNI_BIDIC } /* bidic=t */,
+ { 23, 4191, 584, 8, 6, UNI_XPOSIXLOWER } /* lowercase=true */,
+ { 0, 309, 1484, 2, 8, UNI_INBUGINESE } /* inbuginese */,
+ { 1, 6062, 7241, 7, 26, UNI_ENCLOSEDCJK } /* block=enclosedcjklettersandmonths */,
+ { 0, 7591, 68, 3, 2, UNI_LB__PR } /* lb=pr */,
+ { 80, 461, 3204, 2, 14, UNI_GREXT } /* isgraphemeextend */,
+ { 128, 309, 1872, 2, 11, UNI_YISYLLABLES } /* inyisyllables */,
+ { 128, 1823, 868, 7, 4, UNI_SC__TIRH } /* script=tirh */,
+ { 1, 1102, 6642, 4, 4, UNI_BRAH } /* scx=brah */,
+ { 0, 2483, 353, 5, 2, UNI_CASED } /* cased=y */,
+ { 0, 8246, 6622, 23, 13, UNI_INPC__TOPANDBOTTOM } /* indicpositionalcategory=topandbottom */,
+ { 0, 339, 2084, 4, 2, UNI_CCC__11 } /* ccc=11 */,
+ { 19, 7944, 4218, 28, 4, UNI_CJKEXTH } /* iscjkunifiedideographsextensionh */,
+ { 0, 2432, 2631, 3, 12, UNI_MAYANNUMERALS } /* inmayannumerals */,
+ { 1, 292, 768, 3, 2, UNI_NV__27 } /* nv=27 */,
+ { 0, 7591, 2004, 3, 2, UNI_LB__PO } /* lb=po */,
+ { 0, 1667, 6900, 4, 23, UNI_BYZANTINEMUSIC } /* blk=byzantinemusicalsymbols */,
+ { 3, 8311, 5417, 26, 10, UNI_CJKEXTD } /* block=cjkunifiedideographsextensiond */,
+ { 100, 71, 353, 3, 4, UNI_CWU } /* cwu=yes */,
+ { 0, 461, 615, 2, 4, UNI_ELYM } /* iselym */,
+ { 27, 2842, 1505, 10, 4, UNI_ETHIOPICEXTA } /* isethiopicexta */,
+ { 16, 2324, 1358, 6, 9, UNI_PALM } /* block=palmyrene */,
+ { 1, 2324, 1322, 6, 9, UNI_INOLDITALIC } /* block=olditalic */,
+ { 2, 339, 346, 4, 2, UNI_CCC__84 } /* ccc=84 */,
+ { 1, 461, 493, 2, 4, UNI_KHOJ } /* iskhoj */,
+ { 1, 309, 294, 2, 2, UNI_IN__9 } /* in=9 */,
+ { 0, 426, 0, 3, 0, UNI_MRO } /* mro */,
+ { 146, 552, 2154, 4, 2, UNI_AGE__13 } /* age=13 */,
+ { 6, 461, 442, 2, 4, UNI_ORKH } /* isorkh */,
+ { 3, 7267, 13, 16, 2, UNI_LM } /* generalcategory=lm */,
+ { 1, 4852, 5671, 9, 3, -UNI_XPOSIXSPACE } /* whitespace=n */,
+ { 1234, 3633, 4698, 6, 2, UNI_LATIN1 } /* inlatin1 */,
+ { 134, 302, 0, 5, 0, UNI__PERL_PATWS } /* patws */,
+ { 20, 5574, 353, 21, 2, UNI_CWL } /* changeswhenlowercased=y */,
+ { 0, 2523, 3100, 7, 6, UNI_XPOSIXDIGIT } /* isxposixdigit */,
+ { 11, 5156, 6, 10, 2, UNI_LB__CR } /* wordbreak=cr */,
+ { 0, 4424, 658, 17, 4, UNI_DOGR } /* scriptextensions=dogr */,
+ { 7, 2503, 934, 5, 6, -UNI_JOINC } /* joinc=false */,
+ { 3, 4, 5671, 2, 3, -UNI_LOE } /* loe=n */,
+ { 0, 2930, 2897, 3, 11, UNI_JT__D } /* jt=dualjoining */,
+ { 1, 916, 352, 4, 3, UNI_EBASE } /* ebase=y */,
+ { 0, 377, 585, 3, 5, UNI_EXT } /* ext=true */,
+ { 0, 1102, 1349, 4, 9, UNI_OUGR } /* scx=olduyghur */,
+ { 18, 1102, 4651, 4, 4, UNI_BOPO } /* scx=bopo */,
+ { 5, 3021, 1318, 4, 2, UNI_IN__2 } /* in=v20 */,
+ { 172, 6816, 599, 25, 3, -UNI_CWKCF } /* changeswhennfkccasefolded=no */,
+ { 1, 779, 0, 7, 0, UNI_OSMA } /* osmanya */,
+ { 0, 693, 3196, 5, 8, UNI_NO } /* isothernumber */,
+ { 0, 1102, 333, 4, 6, UNI_CARI } /* scx=carian */,
+ { 103, 2966, 1609, 3, 9, UNI_SMALLFORMS } /* insmallforms */,
+ { 3, 309, 3908, 2, 6, UNI_INTANGUT } /* intangut */,
+ { 1, 1102, 6185, 4, 4, UNI_GLAG } /* scx=glag */,
+ { 0, 3014, 1318, 11, 2, UNI_IN__2 } /* presentin=v20 */,
+ { 110, 1065, 3846, 4, 2, UNI_NV__1_SLASH_8 } /* nv=1/8 */,
+ { 120, 1823, 997, 7, 6, UNI_SC__KTHI } /* script=kaithi */,
+ { 77, 461, 6495, 2, 5, UNI_MUSIC } /* ismusic */,
+ { 0, 1102, 5391, 4, 8, UNI_CHER } /* scx=cherokee */,
+ { 4, 1102, 4740, 4, 4, UNI_TALE } /* scx=tale */,
+ { 377, 8343, 7523, 31, 15, UNI_INSC__CONSONANTSUCCEEDINGREPHA } /* indicsyllabiccategory=consonantsucceedingrepha */,
+ { 820, 7383, 4487, 10, 15, UNI_BC__CS } /* bidiclass=commonseparator */,
+ { 0, 6427, 636, 13, 3, UNI_JG__NUN } /* joininggroup=nun */,
+ { 0, 7495, 288, 28, 2, UNI_CCC__130 } /* canonicalcombiningclass=ccc130 */,
+ { 4, 2302, 5671, 9, 3, -UNI_IDC } /* idcontinue=n */,
+ { 0, 4424, 1819, 17, 4, UNI_MONG } /* scriptextensions=mong */,
+ { 0, 461, 4819, 2, 8, UNI_DINGBATS } /* isdingbats */,
+ { 0, 5065, 5053, 13, 6, UNI_JG__MANICHAEANLAMEDH } /* jg=manichaeanlamedh */,
+ { 0, 4424, 5031, 17, 14, UNI_ROHG } /* scriptextensions=hanifirohingya */,
+ { 0, 1823, 6154, 7, 9, UNI_XSUX } /* script=cuneiform */,
+ { 0, 30, 7563, 1, 18, UNI_ANCIENTGREEKMUSIC } /* isancientgreekmusic */,
+ { 16, 1102, 5031, 4, 4, UNI_HAN } /* scx=hani */,
+ { 7, 30, 5711, 1, 20, UNI_MERO } /* ismeroitichieroglyphs */,
+ { 0, 4, 584, 2, 6, UNI_LOE } /* loe=true */,
+ { 3, 1454, 353, 2, 4, UNI_SD } /* sd=yes */,
+ { 84, 6165, 2441, 3, 11, UNI_SC__NAND } /* sc=nandinagari */,
+ { 29, 1790, 0, 7, 0, UNI_NFCQC__M } /* nfcqc=m */,
+ { 3, 5749, 5354, 3, 19, UNI_PHLI } /* isinscriptionalpahlavi */,
+ { 3, 5895, 0, 21, 0, UNI_SUPARROWSC } /* issupplementalarrowsc */,
+ { 1, 1102, 2247, 4, 4, UNI_HUNG } /* scx=hung */,
+ { 1036, 6841, 585, 25, 5, UNI_DI } /* defaultignorablecodepoint=true */,
+ { 213, 7011, 890, 23, 3, UNI_CCC__10 } /* canonicalcombiningclass=10 */,
+ { 6, 3892, 353, 16, 4, UNI_STERM } /* sentenceterminal=yes */,
+ { 2, 16, 6166, 1, 4, UNI_CO } /* gc=co */,
+ { 2, 1367, 0, 9, 0, UNI_PAUC } /* paucinhau */,
+ { 39, 1823, 493, 7, 4, UNI_SC__KHOJ } /* script=khoj */,
+ { 0, 2324, 1992, 6, 10, UNI_YIRADICALS } /* block=yiradicals */,
+ { 1, 1834, 0, 4, 0, UNI_SORA } /* sora */,
+ { 1, 1102, 5857, 4, 9, UNI_MONG } /* scx=mongolian */,
+ { 0, 8, 934, 3, 6, -UNI_PCM } /* pcm=false */,
+ { 5, 461, 4146, 2, 15, UNI_PD } /* isdashpunctuation */,
+ { 11, 876, 599, 4, 3, -UNI_IDEO } /* ideo=no */,
+ { 0, 6165, 1094, 3, 4, UNI_MERC } /* sc=merc */,
+ { 50, 2287, 547, 5, 2, UNI_IN__14 } /* in=14.0 */,
+ { 0, 1509, 0, 8, 0, UNI_JAVA } /* javanese */,
+ { 2, 4424, 3349, 17, 4, UNI_MERO } /* scriptextensions=mero */,
+ { 1, 1823, 116, 7, 4, UNI_SC__KNDA } /* script=knda */,
+ { 0, 1200, 6400, 3, 18, UNI_CJKRADICALSSUP } /* cjkradicalssupplement */,
+ { 5, 1198, 204, 7, 2, UNI_CJKEXTF } /* incjkextf */,
+ { 35, 833, 934, 4, 2, -UNI_TERM } /* term=f */,
+ { 16, 2401, 2374, 10, 8, UNI_ETHIOPICEXT } /* inethiopicextended */,
+ { 385, 1424, 1316, 8, 2, UNI_CCC__103 } /* ccc=ccc103 */,
+ { 18, 1243, 8605, 2, 35, UNI_SUPMATHOPERATORS } /* blk=supplementalmathematicaloperators */,
+ { 0, 2842, 7241, 3, 10, UNI_ENCLOSEDCJK } /* isenclosedcjk */,
+ { 0, 2766, 54, 3, 2, UNI_SC } /* gc=sc */,
+ { 651, 5168, 302, 6, 5, UNI__PERL_PATWS } /* _perl_patws */,
+ { 9, 753, 353, 6, 4, UNI_NFKCQC__Y } /* nfkcqc=yes */,
+ { 1057, 4424, 1385, 17, 6, UNI_THAA } /* scriptextensions=thaana */,
+ { 0, 1779, 0, 11, 0, UNI_MEDF } /* medefaidrin */,
+ { 103, 5895, 837, 6, 3, UNI_SUPPUAA } /* issuppuaa */,
+ { 20, 1667, 2441, 4, 11, UNI_INNANDINAGARI } /* blk=nandinagari */,
+ { 17, 2324, 1465, 6, 10, UNI_INDIVESAKURU } /* block=divesakuru */,
+ { 0, 4424, 814, 17, 4, UNI_QAAI } /* scriptextensions=zinh */,
+ { 1307, 4424, 426, 17, 4, UNI_MRO } /* scriptextensions=mroo */,
+ { 0, 375, 934, 5, 2, -UNI_GREXT } /* grext=f */,
+ { 0, 2514, 1505, 9, 4, UNI_MYANMAREXTA } /* ismyanmarexta */,
+ { 1, 1823, 818, 7, 7, UNI_SC__SHRD } /* script=sharada */,
+ { 518, 212, 0, 4, 0, UNI_TIBT } /* tibt */,
+ { 1390, 461, 106, 2, 2, UNI_ZL } /* iszl */,
+ { 14, 1102, 3026, 4, 14, UNI_PHLP } /* scx=psalterpahlavi */,
+ { 2, 461, 232, 2, 2, UNI_YI } /* isyi */,
+ { 0, 1102, 3325, 4, 4, UNI_HEBR } /* scx=hebr */,
+ { 0, 3040, 585, 13, 5, UNI_QMARK } /* quotationmark=true */,
+ { 6, 5595, 274, 21, 1, UNI_cwt_values_index } /* changeswhentitlecased= */,
+ { 168, 1102, 4951, 4, 19, UNI_EGYP } /* scx=egyptianhieroglyphs */,
+ { 0, 309, 861, 2, 7, UNI_INTIBETAN } /* intibetan */,
+ { 0, 309, 739, 2, 7, UNI_INMANDAIC } /* inmandaic */,
+ { 4, 54, 3493, 2, 9, UNI_SC__CYRL } /* sc=cyrillic */,
+ { 2, 5553, 353, 21, 2, UNI_CWCM } /* changeswhencasemapped=y */,
+ { 776, 5637, 700, 21, 2, UNI_WB__EB } /* graphemeclusterbreak=em */,
+ { 1284, 2324, 5838, 6, 19, UNI_JAMOEXTA } /* block=hanguljamoextendeda */,
+ { 0, 1667, 4271, 4, 17, UNI_INKHITANSMALLSCRIPT } /* blk=khitansmallscript */,
+ { 16, 939, 934, 5, 2, -UNI_ECOMP } /* ecomp=f */,
+ { 0, 2324, 2256, 6, 12, UNI_PHAISTOS } /* block=phaistosdisc */,
+ { 28, 1391, 65, 3, 2, UNI_WB__MN } /* wb=mn */,
+ { 136, 257, 585, 4, 5, UNI_CWCM } /* cwcm=true */,
+ { 513, 2324, 2786, 6, 14, UNI_HIGHSURROGATES } /* block=highsurrogates */,
+ { 841, 4360, 4302, 10, 14, UNI_LB__SA } /* linebreak=complexcontext */,
+ { 1, 578, 2290, 5, 2, UNI_CCC__214 } /* ccc=214 */,
+ { 1, 1823, 571, 7, 7, UNI_AVST } /* script=avestan */,
+ { 23, 2966, 4710, 3, 8, UNI_SYRIACSUP } /* insyriacsup */,
+ { 0, 1200, 6557, 3, 16, UNI_CJKCOMPATIDEOGRAPHS } /* cjkcompatideographs */,
+ { 581, 1223, 1505, 4, 4, UNI_KANAEXTA } /* kanaexta */,
+ { 1073, 1823, 6642, 7, 6, UNI_BRAH } /* script=brahmi */,
+ { 52, 6163, 5338, 5, 15, UNI_INSC__REGISTERSHIFTER } /* insc=registershifter */,
+ { 0, 1102, 224, 4, 4, UNI_XPEO } /* scx=xpeo */,
+ { 0, 1397, 598, 6, 3, -UNI_IDS } /* idstart=n */,
+ { 0, 1667, 5838, 4, 19, UNI_JAMOEXTA } /* blk=hanguljamoextendeda */,
+ { 0, 4424, 148, 17, 4, UNI_ORYA } /* scriptextensions=orya */,
+ { 0, 2403, 1037, 8, 4, UNI_ETHIOPICEXTB } /* ethiopicextb */,
+ { 1, 312, 1669, 4, 2, UNI_qmark_values_index } /* qmark= */,
+ { 0, 7495, 2290, 27, 2, UNI_CCC__14 } /* canonicalcombiningclass=ccc14 */,
+ { 0, 461, 1396, 2, 4, UNI_XIDS } /* isxids */,
+ { 1, 3817, 295, 15, 1, UNI_NV__1_SLASH_9 } /* numericvalue=1/9 */,
+ { 0, 309, 5682, 2, 5, UNI_INGREEK } /* ingreek */,
+ { 39, 7383, 355, 10, 2, UNI_BC__ES } /* bidiclass=es */,
+ { 0, 1823, 426, 7, 4, UNI_MRO } /* script=mroo */,
+ { 5, 1823, 880, 7, 7, UNI_ZZZZ } /* script=unknown */,
+ { 13, 380, 934, 6, 6, -UNI_HYPHEN } /* hyphen=false */,
+ { 99, 6427, 2886, 13, 11, UNI_JG__YEHWITHTAIL } /* joininggroup=yehwithtail */,
+ { 0, 406, 599, 3, 3, -UNI_DIA } /* dia=no */,
+ { 18, 461, 124, 2, 4, UNI_LATN } /* islatn */,
+ { 10, 461, 430, 2, 3, UNI_NKO } /* isnko */,
+ { 0, 1801, 0, 9, 0, UNI_NV__100000 } /* nv=100000 */,
+ { 3, 578, 2121, 5, 2, UNI_CCC__202 } /* ccc=202 */,
+ { 1, 6165, 786, 3, 4, UNI_HMNP } /* sc=hmnp */,
+ { 224, 2930, 2579, 3, 10, UNI_JT__U } /* jt=nonjoining */,
+ { 3, 1610, 0, 3, 0, UNI_ALL } /* all */,
+ { 0, 309, 1812, 2, 11, UNI_INPAHAWHHMONG } /* inpahawhhmong */,
+ { 1500, 6866, 599, 24, 2, -UNI_COMPEX } /* fullcompositionexclusion=n */,
+ { 11, 1823, 1009, 7, 4, UNI_LYCI } /* script=lyci */,
+ { 1051, 1823, 2411, 7, 8, UNI_SC__KANA } /* script=katakana */,
+ { 0, 578, 288, 5, 2, UNI_CCC__A } /* ccc=230 */,
+ { 291, 3040, 599, 13, 3, -UNI_QMARK } /* quotationmark=no */,
+ { 0, 823, 599, 4, 2, -UNI_DASH } /* dash=n */,
+ { 0, 2301, 0, 4, 0, UNI_XIDC } /* xidc */,
+ { 0, 2832, 4659, 10, 9, UNI_CYRILLICEXTC } /* iscyrillicextendedc */,
+ { 656, 8343, 5017, 22, 14, UNI_INSC__VOWELDEPENDENT } /* indicsyllabiccategory=voweldependent */,
+ { 4, 461, 462, 2, 4, UNI_SHAW } /* isshaw */,
+ { 296, 2503, 934, 5, 2, -UNI_JOINC } /* joinc=f */,
+ { 0, 3391, 1313, 13, 4, UNI_NV__6000 } /* numericvalue=6000 */,
+ { 0, 875, 353, 5, 4, UNI_UIDEO } /* uideo=yes */,
+ { 7, 7011, 3141, 24, 11, UNI_CCC__DA } /* canonicalcombiningclass=doubleabove */,
+ { 16, 2665, 599, 13, 2, -UNI_PATSYN } /* patternsyntax=n */,
+ { 14, 3026, 0, 14, 0, UNI_PHLP } /* psalterpahlavi */,
+ { 0, 1102, 168, 4, 4, UNI_COPT } /* scx=qaac */,
+ { 648, 2280, 6262, 11, 3, UNI_IN__12_DOT_1 } /* presentin=12.1 */,
+ { 1074, 578, 582, 5, 2, UNI_CCC__BR } /* ccc=222 */,
+ { 0, 406, 1467, 2, 8, UNI_DIAK } /* divesakuru */,
+ { 71, 3984, 585, 17, 2, UNI_EPRES } /* emojipresentation=t */,
+ { 2, 6163, 5017, 5, 14, UNI_INSC__VOWELDEPENDENT } /* insc=voweldependent */,
+ { 1152, 5838, 0, 10, 0, UNI_JAMO } /* hanguljamo */,
+ { 0, 2324, 6357, 9, 13, UNI_CJKCOMPAT } /* block=cjkcompatibility */,
+ { 1548, 533, 33, 3, 2, UNI_SB__ST } /* sb=st */,
+ { 0, 6165, 967, 3, 8, UNI_SC__GUJR } /* sc=gujarati */,
+ { 0, 2503, 353, 5, 2, UNI_JOINC } /* joinc=y */,
+ { 0, 406, 353, 2, 2, UNI_DI } /* di=y */,
+ { 0, 1421, 976, 3, 7, UNI_INGURMUKHI } /* ingurmukhi */,
+ { 6, 2324, 6000, 6, 21, UNI_YIJING } /* block=yijinghexagramsymbols */,
+ { 0, 1200, 3611, 3, 11, UNI_CJKCOMPATFORMS } /* cjkcompatforms */,
+ { 26, 461, 1009, 2, 4, UNI_LYCI } /* islyci */,
+ { 0, 461, 3791, 2, 10, UNI_SM } /* ismathsymbol */,
+ { 0, 3407, 520, 14, 1, UNI_NV__47 } /* numericvalue=47 */,
+ { 4, 6041, 599, 21, 5, UNI_BPT__N } /* bidipairedbrackettype=none */,
+ { 571, 461, 4602, 2, 18, UNI_PI } /* isinitialpunctuation */,
+ { 0, 3098, 0, 8, 0, UNI_XPOSIXXDIGIT } /* hexdigit */,
+ { 0, 102, 0, 4, 0, UNI_HMNG } /* hmng */,
+ { 15, 2324, 3635, 6, 14, UNI_LATINEXTD } /* block=latinextendedd */,
+ { 1763, 753, 353, 6, 2, UNI_NFKCQC__Y } /* nfkcqc=y */,
+ { 0, 2780, 0, 6, 0, UNI_COPT } /* coptic */,
+ { 1096, 1102, 2411, 4, 8, UNI_KANA } /* scx=katakana */,
+ { 0, 8, 0, 1, 0, UNI_P } /* p */,
+ { 0, 622, 585, 7, 5, UNI_EXTPICT } /* extpict=true */,
+ { 0, 2, 0, 3, 0, UNI_CWL } /* cwl */,
+ { 6, 461, 5, 2, 3, UNI_OCR } /* isocr */,
+ { 360, 3475, 0, 15, 0, UNI_ZANB } /* zanabazarsquare */,
+ { 0, 1728, 5848, 6, 9, UNI_ARABICEXTA } /* arabicextendeda */,
+ { 0, 1823, 1592, 7, 10, UNI_SAUR } /* script=saurashtra */,
+ { 0, 1823, 825, 7, 7, UNI_SHAW } /* script=shavian */,
+ { 1, 309, 967, 2, 8, UNI_INGUJARATI } /* ingujarati */,
+ { 5, 1198, 6155, 3, 8, UNI_INCUNEIFORM } /* incuneiform */,
+ { 302, 3040, 0, 13, 0, UNI_QMARK } /* quotationmark */,
+ { 157, 3817, 295, 14, 1, UNI_NV__19 } /* numericvalue=19 */,
+ { 1545, 1102, 1255, 4, 4, UNI_SIDD } /* scx=sidd */,
+ { 65, 292, 1317, 3, 2, UNI_NV__32 } /* nv=32 */,
+ { 0, 629, 584, 5, 3, UNI_GRBASE } /* grbase=t */,
+ { 9, 5637, 543, 21, 3, UNI_WB__EB } /* graphemeclusterbreak=ebg */,
+ { 0, 2324, 3436, 6, 15, UNI_SARB } /* block=oldsoutharabian */,
+ { 1, 8441, 3078, 24, 6, UNI__PERL_PROBLEMATIC_LOCALE_FOLDS } /* _perl_problematic_locale_folds */,
+ { 31, 1424, 1070, 7, 2, UNI_CCC__31 } /* ccc=ccc31 */,
+ { 5, 4554, 0, 15, 0, UNI_TITLE } /* titlecaseletter */,
+ { 1, 309, 108, 2, 4, UNI_INKAWI } /* inkawi */,
+ { 0, 1906, 490, 7, 3, UNI_KANBUN } /* blk=kanbun */,
+ { 0, 1075, 2147, 4, 8, UNI_NV__1_SLASH_4 } /* nv=2.500e-01 */,
+ { 47, 6165, 983, 3, 4, UNI_SC__HIRA } /* sc=hira */,
+ { 0, 1872, 0, 11, 0, UNI_YISYLLABLES } /* yisyllables */,
+ { 6, 3502, 620, 10, 5, UNI_ETHIOPICEXT } /* blk=ethiopicext */,
+ { 17, 1667, 1438, 4, 10, UNI_INCHORASMIAN } /* blk=chorasmian */,
+ { 7, 2718, 4827, 3, 18, UNI_BC__B } /* bc=paragraphseparator */,
+ { 1, 3391, 2092, 13, 2, UNI_NV__25 } /* numericvalue=25 */,
+ { 692, 2503, 585, 11, 2, UNI_JOINC } /* joincontrol=t */,
+ { 0, 461, 6900, 2, 23, UNI_BYZANTINEMUSIC } /* isbyzantinemusicalsymbols */,
+ { 790, 4360, 274, 9, 3, UNI_LB__B2 } /* linebreak=b2 */,
+ { 0, 4360, 21, 10, 2, UNI_LB__EX } /* linebreak=ex */,
+ { 3, 7944, 4158, 28, 4, UNI_CJKEXTD } /* iscjkunifiedideographsextensiond */,
+ { 1178, 2523, 2060, 8, 5, UNI_XPOSIXALPHA } /* isxposixalpha */,
+ { 1, 7892, 934, 16, 2, -UNI_UIDEO } /* unifiedideograph=f */,
+ { 0, 1823, 2441, 7, 11, UNI_SC__NAND } /* script=nandinagari */,
+ { 4, 6165, 1285, 3, 9, UNI_SC__SIND } /* sc=khudawadi */,
+ { 0, 1823, 466, 7, 4, UNI_SOGO } /* script=sogo */,
+ { 55, 6165, 683, 3, 5, UNI_SC__TAKR } /* sc=takri */,
+ { 3, 4391, 290, 15, 1, UNI_NV__3_SLASH_4 } /* numericvalue=3/4 */,
+ { 0, 7274, 625, 9, 2, UNI_PI } /* category=pi */,
+ { 134, 4391, 295, 14, 1, UNI_NV__39 } /* numericvalue=39 */,
+ { 0, 324, 5909, 3, 7, UNI_SUPARROWSC } /* suparrowsc */,
+ { 0, 4424, 1834, 17, 4, UNI_SORA } /* scriptextensions=sora */,
+ { 1, 2004, 4150, 5, 5, UNI_POSIXPUNCT } /* posixpunct */,
+ { 647, 1823, 779, 7, 4, UNI_OSMA } /* script=osma */,
+ { 73, 1823, 1227, 7, 4, UNI_MAKA } /* script=maka */,
+ { 3, 2732, 8174, 10, 29, UNI_ARABICMATH } /* blk=arabicmathematicalalphabeticsymbols */,
+ { 8, 1102, 434, 4, 4, UNI_OGAM } /* scx=ogam */,
+ { 18, 1823, 951, 7, 8, UNI_SC__DUPL } /* script=duployan */,
+ { 1, 309, 1191, 2, 7, UNI_INBENGALI } /* inbengali */,
+ { 0, 11, 5676, 1, 18, UNI_ANCIENTGREEKNUMBERS } /* ancientgreeknumbers */,
+ { 0, 1424, 768, 7, 2, UNI_CCC__27 } /* ccc=ccc27 */,
+ { 1, 461, 4926, 2, 5, UNI_TAML } /* istamil */,
+ { 0, 4360, 1864, 10, 5, UNI_EBASE } /* linebreak=ebase */,
+ { 154, 1065, 295, 4, 1, UNI_NV__19 } /* nv=19 */,
+ { 0, 2523, 307, 8, 5, UNI_XPOSIXPRINT } /* isxposixprint */,
+ { 556, 461, 180, 2, 4, UNI_RUNR } /* isrunr */,
+ { 650, 1102, 746, 4, 7, UNI_MARC } /* scx=marchen */,
+ { 0, 4424, 35, 17, 4, UNI_BATK } /* scriptextensions=batk */,
+ { 74, 2536, 7328, 3, 14, UNI_JG__NOJOININGGROUP } /* jg=nojoininggroup */,
+ { 0, 5168, 3084, 6, 9, UNI__PERL_QUOTEMETA } /* _perl_quotemeta */,
+ { 0, 255, 0, 2, 0, UNI_CF } /* cf */,
+ { 0, 4191, 353, 5, 4, UNI_XPOSIXLOWER } /* lower=yes */,
+ { 0, 54, 2735, 2, 7, UNI_SC__ARAB } /* sc=arabic */,
+ { 0, 1667, 1248, 4, 7, UNI_INPHAGSPA } /* blk=phagspa */,
+ { 6, 940, 1104, 5, 2, UNI_compex_values_index } /* compex= */,
+ { 0, 461, 4206, 2, 15, UNI_PS } /* isopenpunctuation */,
+ { 1079, 6165, 926, 5, 2, UNI_SC__COPT } /* sc=copt */,
+ { 142, 1823, 1562, 7, 4, UNI_NAGM } /* script=nagm */,
+ { 29, 959, 934, 8, 6, -UNI_EXT } /* extender=false */,
+ { 0, 7648, 601, 19, 3, UNI_DT__NONE } /* decompositiontype=none */,
+ { 1, 1823, 406, 7, 4, UNI_DIAK } /* script=diak */,
+ { 1096, 959, 0, 8, 0, UNI_EXT } /* extender */,
+ { 0, 1200, 1926, 3, 7, UNI_CJKSYMBOLS } /* cjksymbols */,
+ { 1, 3391, 1154, 13, 2, UNI_NV__43 } /* numericvalue=43 */,
+ { 0, 4360, 4650, 10, 2, UNI_LB__BB } /* linebreak=bb */,
+ { 1, 1272, 3611, 5, 11, UNI_CJKCOMPATFORMS } /* iscjkcompatforms */,
+ { 1, 1102, 23, 4, 4, UNI_AHOM } /* scx=ahom */,
+ { 546, 461, 1914, 2, 8, UNI_UCASEXTA } /* isucasexta */,
+ { 0, 2287, 560, 3, 3, UNI_IN__7 } /* in=7.0 */,
+ { 0, 1823, 5031, 7, 4, UNI_SC__HAN } /* script=hani */,
+ { 132, 339, 393, 4, 2, UNI_CCC__15 } /* ccc=15 */,
+ { 2, 2324, 718, 6, 7, UNI_INKANNADA } /* block=kannada */,
+ { 0, 5595, 599, 21, 3, -UNI_CWT } /* changeswhentitlecased=no */,
+ { 0, 7274, 7110, 9, 13, UNI_M } /* category=combiningmark */,
+ { 0, 180, 0, 4, 0, UNI_RUNR } /* runr */,
+ { 2, 597, 238, 3, 2, UNI_DT__NB } /* dt=nb */,
+ { 21, 461, 4651, 2, 16, UNI_BOPOMOFOEXT } /* isbopomofoextended */,
+ { 128, 4424, 1484, 17, 8, UNI_BUGI } /* scriptextensions=buginese */,
+ { 10, 5769, 934, 4, 2, -UNI_EMOD } /* emod=f */,
+ { 3, 4502, 4698, 8, 2, UNI_LATIN1 } /* blk=latin1 */,
+ { 0, 4407, 585, 17, 5, UNI_RI } /* regionalindicator=true */,
+ { 0, 2536, 6215, 3, 9, UNI_JG__YEHBARREE } /* jg=yehbarree */,
+ { 411, 6870, 8554, 17, 4, UNI_ce_values_index } /* compositionexclusion= */,
+ { 1705, 2393, 3640, 8, 9, UNI_CYRILLICEXTD } /* cyrillicextendedd */,
+ { 0, 1065, 1317, 5, 3, UNI_NV__1_SLASH_320 } /* nv=1/320 */,
+ { 1089, 6427, 2546, 20, 3, UNI_JG__AFRICANFEH } /* joininggroup=africanfeh */,
+ { 124, 1102, 462, 4, 4, UNI_SHAW } /* scx=shaw */,
+ { 0, 3014, 2125, 11, 2, UNI_IN__6_DOT_3 } /* presentin=v63 */,
+ { 0, 3817, 760, 14, 3, UNI_NV__11_SLASH_2 } /* numericvalue=11/2 */,
+ { 1, 2665, 585, 13, 5, UNI_PATSYN } /* patternsyntax=true */,
+ { 2, 1102, 426, 4, 3, UNI_MRO } /* scx=mro */,
+ { 144, 1492, 5292, 4, 16, UNI_INPUNCTUATION } /* ingeneralpunctuation */,
+ { 0, 2536, 1747, 3, 8, UNI_JG__FARSIYEH } /* jg=farsiyeh */,
+ { 115, 3204, 274, 14, 1, UNI_grext_values_index } /* graphemeextend= */,
+ { 0, 2324, 6185, 6, 10, UNI_INGLAGOLITIC } /* block=glagolitic */,
+ { 0, 461, 3026, 2, 14, UNI_PHLP } /* ispsalterpahlavi */,
+ { 1, 309, 342, 2, 3, UNI_IN__12 } /* in=12 */,
+ { 0, 461, 8607, 2, 33, UNI_SUPMATHOPERATORS } /* issupplementalmathematicaloperators */,
+ { 167, 4941, 3622, 9, 3, UNI_KANGXI } /* block=kangxi */,
+ { 0, 461, 426, 2, 3, UNI_MRO } /* ismro */,
+ { 0, 1102, 718, 4, 7, UNI_KNDA } /* scx=kannada */,
+ { 0, 1479, 5671, 4, 3, -UNI_XPOSIXSPACE } /* space=n */,
+ { 3, 4161, 0, 12, 0, UNI_DIACRITICALS } /* diacriticals */,
+ { 11, 461, 2852, 2, 7, UNI_MAHJONG } /* ismahjong */,
+ { 2, 7887, 3998, 28, 4, UNI_CJKEXTG } /* incjkunifiedideographsextensiong */,
+ { 0, 4852, 933, 9, 7, -UNI_XPOSIXSPACE } /* whitespace=false */,
+ { 4, 8343, 5338, 22, 15, UNI_INSC__REGISTERSHIFTER } /* indicsyllabiccategory=registershifter */,
+ { 163, 30, 7133, 1, 27, UNI_PCM } /* isprependedconcatenationmark */,
+ { 1, 339, 689, 4, 3, UNI_CCC__214 } /* ccc=ata */,
+ { 257, 4424, 1522, 17, 4, UNI_UGAR } /* scriptextensions=ugar */,
+ { 1, 1385, 0, 6, 0, UNI_THAA } /* thaana */,
+ { 23, 5065, 4243, 13, 4, UNI_JG__MANICHAEANHETH } /* jg=manichaeanheth */,
+ { 1131, 4371, 352, 5, 2, UNI_wspace_values_index } /* wspace= */,
+ { 5, 6090, 8039, 7, 32, UNI_MISCMATHSYMBOLSA } /* block=miscellaneousmathematicalsymbolsa */,
+ { 2, 6841, 2931, 24, 3, UNI_DI } /* defaultignorablecodepoint=t */,
+ { 22, 5156, 1864, 10, 8, UNI_WB__EB } /* wordbreak=ebasegaz */,
+ { 0, 1102, 98, 4, 4, UNI_HLUW } /* scx=hluw */,
+ { 349, 2324, 3908, 6, 6, UNI_INTANGUT } /* block=tangut */,
+ { 209, 1926, 0, 6, 0, UNI_S } /* symbol */,
+ { 1, 7591, 272, 3, 2, UNI_LB__CB } /* lb=cb */,
+ { 1, 5799, 5909, 5, 7, UNI_SUPARROWSC } /* insuparrowsc */,
+ { 2429, 461, 257, 2, 4, UNI_CWCM } /* iscwcm */,
+ { 1113, 1200, 8153, 3, 21, UNI_CJKSYMBOLS } /* cjksymbolsandpunctuation */,
+ { 6, 3014, 1317, 11, 2, UNI_IN__3_DOT_2 } /* presentin=v32 */,
+ { 1054, 733, 7915, 3, 20, UNI_ENCLOSEDALPHANUM } /* inenclosedalphanumerics */,
+ { 0, 1667, 6185, 4, 10, UNI_INGLAGOLITIC } /* blk=glagolitic */,
+ { 1, 7214, 582, 25, 2, UNI_CCC__122 } /* canonicalcombiningclass=122 */,
+ { 2, 6427, 481, 13, 3, UNI_JG__GAF } /* joininggroup=gaf */,
+ { 112, 1667, 6692, 4, 15, UNI_TRANSPORTANDMAP } /* blk=transportandmap */,
+ { 1565, 380, 599, 6, 2, -UNI_HYPHEN } /* hyphen=n */,
+ { 0, 794, 0, 4, 0, UNI_LANA } /* lana */,
+ { 115, 3177, 604, 15, 4, UNI_EA__W } /* eastasianwidth=wide */,
+ { 0, 309, 4131, 2, 15, UNI_VEDICEXT } /* invedicextensions */,
+ { 0, 461, 3558, 2, 9, UNI_Z } /* isseparator */,
+ { 3, 1102, 1331, 4, 9, UNI_PERM } /* scx=oldpermic */,
+ { 0, 2324, 1133, 6, 8, UNI_INVITHKUQI } /* block=vithkuqi */,
+ { 1671, 2324, 1340, 6, 9, UNI_INOLDTURKIC } /* block=oldturkic */,
+ { 0, 2324, 7796, 6, 29, UNI_ENCLOSEDIDEOGRAPHICSUP } /* block=enclosedideographicsupplement */,
+ { 1, 3832, 2200, 14, 8, UNI_NV__1_SLASH_20 } /* numericvalue=5.000e-02 */,
+ { 0, 2752, 353, 14, 2, UNI_ECOMP } /* emojicomponent=y */,
+ { 0, 1102, 1484, 4, 4, UNI_BUGI } /* scx=bugi */,
+ { 11, 7591, 2621, 3, 9, UNI_LB__SG } /* lb=surrogate */,
+ { 0, 3633, 3693, 3, 3, UNI_INLISU } /* inlisu */,
+ { 329, 5532, 585, 21, 5, UNI_CWCF } /* changeswhencasefolded=true */,
+ { 4, 1102, 678, 4, 5, UNI_RUNR } /* scx=runic */,
+ { 1, 4424, 1094, 17, 4, UNI_MERC } /* scriptextensions=merc */,
+ { 515, 3635, 4770, 8, 10, UNI_LATINEXTADDITIONAL } /* latinextadditional */,
+ { 1, 261, 934, 5, 2, -UNI_CWKCF } /* cwkcf=f */,
+ { 901, 5205, 4636, 5, 15, UNI_MISCMATHSYMBOLSB } /* blk=miscmathsymbolsb */,
+ { 1, 3791, 353, 4, 2, UNI_MATH } /* math=y */,
+ { 1, 7198, 1269, 8, 3, UNI_SUPPUAB } /* blk=suppuab */,
+ { 0, 1198, 1037, 5, 4, UNI_CJKEXTB } /* incjkextb */,
+ { 3, 1102, 608, 4, 4, UNI_ELBA } /* scx=elba */,
+ { 1172, 2280, 2689, 10, 3, UNI_IN__6_DOT_1 } /* presentin=6.1 */,
+ { 1796, 4191, 0, 5, 0, UNI_XPOSIXLOWER } /* lower */,
+ { 1, 1102, 59, 4, 4, UNI_CHRS } /* scx=chrs */,
+ { 1003, 30, 1617, 1, 3, UNI_SO } /* isso */,
+ { 18, 5658, 7062, 15, 11, UNI_IDENTIFIERTYPE__RECOMMENDED } /* identifiertype=recommended */,
+ { 2, 47, 0, 4, 0, UNI_CAKM } /* cakm */,
+ { 273, 521, 599, 6, 3, -UNI_PATSYN } /* patsyn=no */,
+ { 3, 597, 363, 3, 3, UNI_DT__SML } /* dt=sml */,
+ { 516, 3177, 1176, 14, 7, UNI_EA__NA } /* eastasianwidth=narrow */,
+ { 1200, 7011, 581, 23, 3, UNI_CCC__22 } /* canonicalcombiningclass=22 */,
+ { 260, 7267, 4146, 16, 15, UNI_PD } /* generalcategory=dashpunctuation */,
+ { 800, 7648, 2692, 18, 8, UNI_DT__VERT } /* decompositiontype=vertical */,
+ { 0, 959, 934, 8, 2, -UNI_EXT } /* extender=f */,
+ { 0, 7267, 599, 15, 2, UNI_N } /* generalcategory=n */,
+ { 6, 6165, 1027, 3, 4, UNI_SC__YEZI } /* sc=yezi */,
+ { 0, 753, 1792, 3, 4, UNI_nfkcqc_values_index } /* nfkcqc= */,
+ { 0, 461, 71, 2, 3, UNI_CWU } /* iscwu */,
+ { 0, 4424, 2780, 17, 4, UNI_COPT } /* scriptextensions=copt */,
+ { 6, 6165, 2852, 3, 4, UNI_SC__MAHJ } /* sc=mahj */,
+ { 149, 312, 353, 5, 2, UNI_QMARK } /* qmark=y */,
+ { 5, 4519, 1674, 14, 4, UNI_CYRILLICEXTD } /* block=cyrillicextd */,
+ { 31, 2, 598, 2, 4, -UNI_CWT } /* cwt=no */,
+ { 3, 309, 779, 2, 7, UNI_INOSMANYA } /* inosmanya */,
+ { 385, 7267, 2621, 16, 9, UNI__PERL_SURROGATE } /* generalcategory=surrogate */,
+ { 0, 10, 3189, 2, 3, UNI_math_values_index } /* math= */,
+ { 644, 1102, 615, 4, 7, UNI_ELYM } /* scx=elymaic */,
+ { 410, 5532, 599, 21, 2, -UNI_CWCF } /* changeswhencasefolded=n */,
+ { 5, 2287, 386, 3, 3, UNI_IN__3_DOT_2 } /* in=3.2 */,
+ { 1348, 309, 4176, 2, 15, UNI_INHANGUL } /* inhangulsyllables */,
+ { 0, 2842, 620, 8, 5, UNI_ETHIOPICEXT } /* isethiopicext */,
+ { 7, 1667, 4090, 4, 17, UNI_INDICSIYAQNUMBERS } /* blk=indicsiyaqnumbers */,
+ { 32, 461, 1484, 2, 8, UNI_BUGI } /* isbuginese */,
+ { 423, 1011, 585, 2, 5, UNI_CI } /* ci=true */,
+ { 838, 4424, 430, 17, 3, UNI_NKO } /* scriptextensions=nko */,
+ { 2, 253, 934, 4, 6, -UNI_CWCF } /* cwcf=false */,
+ { 896, 461, 1501, 2, 8, UNI_JAMOEXTA } /* isjamoexta */,
+ { 0, 3863, 2657, 14, 8, UNI_NV__4_SLASH_5 } /* numericvalue=8.000e-01 */,
+ { 32, 1484, 0, 4, 0, UNI_BUGI } /* bugi */,
+ { 258, 309, 1227, 2, 7, UNI_INMAKASAR } /* inmakasar */,
+ { 0, 1397, 599, 3, 3, -UNI_IDS } /* ids=no */,
+ { 138, 887, 2199, 5, 3, UNI_AGE__12 } /* age=12.0 */,
+ { 642, 1455, 934, 10, 2, -UNI_DEP } /* deprecated=f */,
+ { 2, 461, 2441, 2, 11, UNI_NAND } /* isnandinagari */,
+ { 15, 7495, 582, 27, 2, UNI_CCC__22 } /* canonicalcombiningclass=ccc22 */,
+ { 0, 3791, 934, 4, 2, -UNI_MATH } /* math=f */,
+ { 262, 4043, 934, 4, 2, -UNI_IDSB } /* idsb=f */,
+ { 0, 1883, 934, 11, 6, -UNI_BIDIC } /* bidicontrol=false */,
+ { 954, 7011, 2742, 24, 10, UNI_CCC__6 } /* canonicalcombiningclass=hanreading */,
+ { 5, 8601, 4607, 16, 13, UNI_SUPPUNCTUATION } /* block=supplementalpunctuation */,
+ { 3658, 1102, 2045, 4, 12, UNI_GONM } /* scx=masaramgondi */,
+ { 0, 1358, 0, 9, 0, UNI_PALM } /* palmyrene */,
+ { 130, 224, 0, 4, 0, UNI_XPEO } /* xpeo */,
+ { 2199, 3817, 515, 14, 2, UNI_NV__1_SLASH_5 } /* numericvalue=1/5 */,
+ { 1, 309, 6332, 2, 19, UNI_JAMOEXTB } /* inhanguljamoextendedb */,
+ { 7, 4424, 1262, 17, 7, UNI_SOYO } /* scriptextensions=soyombo */,
+ { 476, 2525, 3268, 6, 5, UNI_XPOSIXALNUM } /* xposixalnum */,
+ { 3, 7495, 891, 27, 2, UNI_CCC__10 } /* canonicalcombiningclass=ccc10 */,
+ { 4116, 7591, 1771, 3, 8, UNI_LB__NL } /* lb=nextline */,
+ { 0, 7011, 430, 24, 2, UNI_CCC__7 } /* canonicalcombiningclass=nk */,
+ { 4, 2324, 6103, 6, 13, UNI_MATHOPERATORS } /* block=mathoperators */,
+ { 1921, 4795, 2131, 14, 8, UNI_NV__2_SLASH_3 } /* numericvalue=6.667e-01 */,
+ { 516, 4089, 0, 4, 0, UNI_SIND } /* sind */,
+ { 0, 4424, 991, 17, 4, UNI_HATR } /* scriptextensions=hatr */,
+ { 4097, 2536, 2009, 3, 9, UNI_JG__SYRIACWAW } /* jg=syriacwaw */,
+ { 0, 423, 2705, 3, 13, UNI_ANCIENTSYMBOLS } /* inancientsymbols */,
+ { 108, 4360, 318, 10, 2, UNI_LB__AI } /* linebreak=ai */,
+ { 1, 461, 112, 2, 4, UNI_KITS } /* iskits */,
+ { 0, 1102, 1819, 4, 4, UNI_MONG } /* scx=mong */,
+ { 0, 1667, 527, 4, 6, UNI_INREJANG } /* blk=rejang */,
+ { 1, 6450, 535, 13, 3, UNI_SB__ST } /* sentencebreak=st */,
+ { 5294, 4424, 2735, 16, 7, UNI_ARAB } /* scriptextensions=arabic */,
+ { 14, 2514, 740, 3, 6, UNI_MAND } /* ismandaic */,
+ { 8, 2391, 6193, 8, 5, UNI_CYRILLICSUP } /* incyrillicsup */,
+ { 4140, 2766, 3558, 3, 9, UNI_Z } /* gc=separator */,
+ { 233, 3677, 0, 3, 0, UNI_L } /* isl */,
+ { 3, 1102, 1385, 4, 4, UNI_THAA } /* scx=thaa */,
+ { 8, 6163, 1517, 5, 5, UNI_INSC__BINDU } /* insc=bindu */,
+ { 0, 339, 391, 4, 2, UNI_CCC__34 } /* ccc=34 */,
+ { 0, 895, 891, 6, 2, UNI_AGE__11 } /* age=v110 */,
+ { 0, 6165, 224, 3, 4, UNI_XPEO } /* sc=xpeo */,
+ { 1, 461, 2483, 2, 11, UNI_CASEDLETTER } /* iscasedletter */,
+ { 0, 30, 1941, 1, 6, UNI_XPOSIXGRAPH } /* isgraph */,
+ { 0, 461, 1331, 2, 9, UNI_PERM } /* isoldpermic */,
+ { 0, 533, 306, 3, 2, UNI_SB__SP } /* sb=sp */,
+ { 2762, 4911, 0, 15, 0, UNI_DIACRITICALSSUP } /* diacriticalssup */,
+ { 0, 461, 4740, 2, 4, UNI_TALE } /* istale */,
+ { 1043, 2536, 4751, 3, 5, UNI_JG__SADHE } /* jg=sadhe */,
+ { 0, 1667, 6586, 4, 11, UNI_NUMBERFORMS } /* blk=numberforms */,
+ { 9, 578, 388, 5, 2, UNI_CCC__R } /* ccc=226 */,
+ { 0, 1075, 1805, 4, 7, UNI_NV__20000000 } /* nv=20000000 */,
+ { 2057, 2302, 585, 3, 5, UNI_IDC } /* idc=true */,
+ { 0, 1667, 718, 4, 7, UNI_INKANNADA } /* blk=kannada */,
+ { 0, 2287, 563, 3, 3, UNI_IN__8 } /* in=8.0 */,
+ { 2060, 2514, 4636, 3, 15, UNI_MISCMATHSYMBOLSB } /* ismiscmathsymbolsb */,
+ { 81, 1894, 585, 12, 5, UNI_BIDIM } /* bidimirrored=true */,
+ { 25, 4424, 1051, 17, 8, UNI_MAHJ } /* scriptextensions=mahajani */,
+ { 4097, 3026, 0, 2, 0, UNI_PS } /* ps */,
+ { 1178, 1667, 1191, 4, 7, UNI_INBENGALI } /* blk=bengali */,
+ { 0, 461, 2244, 2, 12, UNI_HUNG } /* isoldhungarian */,
+ { 10, 2324, 377, 9, 4, UNI_CJKEXTH } /* block=cjkexth */,
+ { 0, 461, 1894, 2, 5, UNI_BIDIM } /* isbidim */,
+ { 1735, 406, 585, 3, 2, UNI_DIA } /* dia=t */,
+ { 0, 6165, 1294, 3, 9, UNI_NBAT } /* sc=nabataean */,
+ { 0, 292, 1318, 3, 4, UNI_NV__2000 } /* nv=2000 */,
+ { 151, 2718, 4487, 3, 15, UNI_BC__CS } /* bc=commonseparator */,
+ { 0, 3677, 5848, 7, 9, UNI_LATINEXTA } /* islatinextendeda */,
+ { 298, 4845, 933, 16, 3, -UNI__PERL_PATWS } /* patternwhitespace=f */,
+ { 4163, 309, 1021, 2, 6, UNI_INWANCHO } /* inwancho */,
+ { 0, 1272, 204, 7, 2, UNI_CJKEXTF } /* iscjkextf */,
+ { 0, 54, 1105, 2, 5, UNI_TALU } /* sc=talu */,
+ { 0, 6165, 4487, 3, 6, UNI_SC__ZYYY } /* sc=common */,
+ { 8, 2718, 52, 3, 2, UNI_BC__AN } /* bc=an */,
+ { 38, 461, 2302, 2, 10, UNI_IDC } /* isidcontinue */,
+ { 0, 7752, 4756, 23, 5, UNI_JG__MANICHAEANZAYIN } /* joininggroup=manichaeanzayin */,
+ { 4336, 1667, 8214, 5, 24, UNI_DIACRITICALS } /* blk=combiningdiacriticalmarks */,
+ { 2, 2060, 585, 5, 2, UNI_XPOSIXALPHA } /* alpha=t */,
+ { 2254, 1530, 3746, 4, 14, UNI_KAKTOVIKNUMERALS } /* iskaktoviknumerals */,
+ { 2088, 1667, 1241, 4, 7, UNI_NB } /* blk=noblock */,
+ { 4098, 71, 0, 3, 0, UNI_CWU } /* cwu */,
+ { 0, 2324, 1404, 6, 10, UNI_ASCII } /* block=basiclatin */,
+ { 2, 1823, 861, 7, 7, UNI_TIBT } /* script=tibetan */,
+ { 0, 1667, 192, 4, 4, UNI_TAGS } /* blk=tags */,
+ { 1, 39, 0, 4, 0, UNI_BHKS } /* bhks */,
+ { 4494, 2004, 4191, 5, 5, UNI_POSIXLOWER } /* posixlower */,
+ { 0, 461, 2752, 2, 14, UNI_ECOMP } /* isemojicomponent */,
+ { 2096, 297, 0, 5, 0, UNI_ORYA } /* oriya */,
+ { 4160, 2536, 0, 3, 0, UNI_jg_values_index } /* jg= */,
+ { 5, 1667, 5876, 4, 9, UNI_INSUNDANESE } /* blk=sundanese */,
+ { 0, 292, 3405, 3, 2, UNI_NV__36 } /* nv=36 */,
+ { 0, 1667, 1853, 4, 11, UNI_INSYLOTINAGRI } /* blk=sylotinagri */,
+ { 2154, 6165, 426, 3, 3, UNI_MRO } /* sc=mro */,
+ { 4, 6735, 699, 14, 3, UNI_JG__MEEM } /* joininggroup=meem */,
+ { 0, 2401, 6193, 8, 12, UNI_ETHIOPICSUP } /* inethiopicsupplement */,
+ { 1024, 2280, 0, 12, 0, UNI_IN__14 } /* presentin=14 */,
+ { 1323, 1823, 868, 7, 7, UNI_SC__TIRH } /* script=tirhuta */,
+ { 5635, 2766, 248, 3, 5, UNI_XPOSIXCNTRL } /* gc=cntrl */,
+ { 0, 2536, 1046, 3, 5, UNI_JG__KHAPH } /* jg=khaph */,
+ { 0, 2494, 0, 6, 0, UNI_GEOR } /* isgeor */,
+ { 1, 6154, 0, 9, 0, UNI_XSUX } /* cuneiform */,
+ { 2689, 3391, 344, 13, 2, UNI_NV__21 } /* numericvalue=21 */,
+ { 2155, 2752, 934, 5, 6, -UNI_EMOJI } /* emoji=false */,
+ { 0, 2280, 2182, 9, 2, UNI_IN__4 } /* presentin=4 */,
+ { 3081, 1603, 0, 6, 0, UNI_L } /* letter */,
+ { 3, 1942, 352, 11, 2, UNI_grbase_values_index } /* graphemebase= */,
+ { 2224, 461, 430, 2, 4, UNI_NKO } /* isnkoo */,
+ { 15, 461, 5595, 2, 21, UNI_CWT } /* ischangeswhentitlecased */,
+ { 10, 7591, 4304, 5, 12, UNI_LB__SA } /* lb=complexcontext */,
+ { 4096, 1801, 0, 7, 0, UNI_NV__1000 } /* nv=1000 */,
+ { 7, 4424, 1438, 17, 10, UNI_CHRS } /* scriptextensions=chorasmian */,
+ { 364, 309, 4651, 2, 8, UNI_INBOPOMOFO } /* inbopomofo */,
+ { 4281, 1391, 1909, 2, 3, UNI_WB__KA } /* wb=ka */,
+ { 0, 2432, 2643, 3, 12, UNI_MISCTECHNICAL } /* inmisctechnical */,
+ { 1, 8246, 8508, 30, 14, UNI_INPC__TOPANDBOTTOMANDRIGHT } /* indicpositionalcategory=topandbottomandright */,
+ { 0, 309, 5440, 2, 20, UNI_INNYIAKENGPUACHUEHMONG } /* innyiakengpuachuehmong */,
+ { 2375, 2536, 783, 3, 3, UNI_JG__NYA } /* jg=nya */,
+ { 5, 1667, 1349, 4, 9, UNI_INOLDUYGHUR } /* blk=olduyghur */,
+ { 0, 1102, 5185, 4, 20, UNI_HLUW } /* scx=anatolianhieroglyphs */,
+ { 0, 4525, 0, 12, 0, UNI_CYRILLICEXTC } /* cyrillicextc */,
+ { 28, 7011, 2222, 23, 2, UNI_CCC__6 } /* canonicalcombiningclass=6 */,
+ { 1050, 4043, 353, 17, 4, UNI_IDSB } /* idsbinaryoperator=yes */,
+ { 23, 901, 0, 8, 0, UNI_ARMN } /* armenian */,
+ { 13, 3391, 1155, 13, 2, UNI_NV__35 } /* numericvalue=35 */,
+ { 0, 7011, 2742, 24, 4, UNI_CCC__6 } /* canonicalcombiningclass=hanr */,
+ { 4192, 597, 0, 7, 0, UNI_DT__NONE } /* dt=none */,
+ { 0, 1823, 5712, 7, 19, UNI_MERO } /* script=meroitichieroglyphs */,
+ { 0, 302, 934, 5, 6, -UNI__PERL_PATWS } /* patws=false */,
+ { 4116, 2324, 1522, 6, 8, UNI_INUGARITIC } /* block=ugaritic */,
+ { 0, 5532, 934, 21, 6, -UNI_CWCF } /* changeswhencasefolded=false */,
+ { 2061, 4424, 116, 17, 4, UNI_KNDA } /* scriptextensions=knda */,
+ { 0, 1530, 419, 3, 3, UNI_KHMR } /* iskhmr */,
+ { 2, 505, 1793, 3, 3, UNI_nfdqc_values_index } /* nfdqc= */,
+ { 5, 1011, 934, 2, 2, -UNI_CI } /* ci=f */,
+ { 2507, 309, 7036, 2, 26, UNI_HALFANDFULLFORMS } /* inhalfwidthandfullwidthforms */,
+ { 7, 461, 832, 2, 5, UNI_STERM } /* issterm */,
+ { 0, 2324, 840, 6, 7, UNI_INTAGALOG } /* block=tagalog */,
+ { 32, 1667, 1015, 4, 6, UNI_INTELUGU } /* blk=telugu */,
+ { 0, 3692, 0, 14, 0, UNI_LISUSUP } /* lisusupplement */,
+ { 295, 1667, 840, 4, 7, UNI_INTAGALOG } /* blk=tagalog */,
+ { 8, 3502, 1183, 5, 8, UNI_EMOTICONS } /* blk=emoticons */,
+ { 6172, 5532, 599, 21, 3, -UNI_CWCF } /* changeswhencasefolded=no */,
+ { 0, 461, 86, 2, 4, UNI_GREK } /* isgrek */,
+ { 0, 4424, 120, 17, 4, UNI_LAO } /* scriptextensions=laoo */,
+ { 459, 271, 3709, 4, 11, UNI_GCB__SM } /* gcb=spacingmark */,
+ { 9, 2525, 1082, 6, 4, UNI_XPOSIXWORD } /* xposixword */,
+ { 1, 875, 934, 5, 6, -UNI_UIDEO } /* uideo=false */,
+ { 0, 461, 997, 2, 6, UNI_KTHI } /* iskaithi */,
+ { 2056, 1667, 0, 11, 0, UNI_CJKEXTD } /* blk=cjkextd */,
+ { 3079, 312, 599, 5, 3, -UNI_QMARK } /* qmark=no */,
+ { 0, 1102, 1090, 4, 4, UNI_LINB } /* scx=linb */,
+ { 1, 271, 163, 4, 2, UNI_GCB__PP } /* gcb=pp */,
+ { 15, 7084, 1141, 8, 3, UNI_ARABICPFA } /* inarabicpfa */,
+ { 0, 30, 7854, 1, 12, UNI_IDEO } /* isideographic */,
+ { 4103, 461, 297, 2, 5, UNI_ORYA } /* isoriya */,
+ { 4527, 3014, 343, 12, 1, UNI_IN__1_DOT_1 } /* presentin=v11 */,
+ { 0, 19, 934, 4, 2, -UNI_POSIXXDIGIT } /* ahex=f */,
+ { 0, 2324, 4060, 6, 15, UNI_BRAI } /* block=braillepatterns */,
+ { 909, 2324, 8619, 6, 21, UNI_MATHOPERATORS } /* block=mathematicaloperators */,
+ { 4997, 1397, 934, 4, 2, -UNI_IDST } /* idst=f */,
+ { 0, 3635, 129, 11, 3, UNI_LATINEXTF } /* latinextendedf */,
+ { 1, 1823, 86, 7, 4, UNI_SC__GREK } /* script=grek */,
+ { 527, 4424, 493, 17, 6, UNI_KHOJ } /* scriptextensions=khojki */,
+ { 0, 1200, 6357, 3, 13, UNI_CJKCOMPAT } /* cjkcompatibility */,
+ { 2132, 3391, 6255, 14, 8, UNI_NV__1_SLASH_40 } /* numericvalue=2.500e-02 */,
+ { 2358, 6165, 5778, 3, 21, UNI_PRTI } /* sc=inscriptionalparthian */,
+ { 2912, 2324, 7724, 6, 18, UNI_INVS } /* block=variationselectors */,
+ { 0, 309, 673, 2, 5, UNI_INOSAGE } /* inosage */,
+ { 1682, 7537, 0, 27, 0, UNI_ALPHABETICPF } /* alphabeticpresentationforms */,
+ { 131, 261, 274, 5, 1, UNI_cwkcf_values_index } /* cwkcf= */,
+ { 0, 1102, 1086, 4, 4, UNI_KTHI } /* scx=kthi */,
+ { 0, 2, 1214, 1, 3, UNI_CHER } /* cher */,
+ { 0, 461, 1227, 2, 7, UNI_MAKA } /* ismakasar */,
+ { 1, 2752, 353, 5, 2, UNI_EMOJI } /* emoji=y */,
+ { 1, 2752, 0, 14, 0, UNI_ECOMP } /* emojicomponent */,
+ { 6218, 71, 934, 3, 6, -UNI_CWU } /* cwu=false */,
+ { 6, 895, 3876, 5, 2, UNI_AGE__8 } /* age=v80 */,
+ { 5511, 7267, 99, 16, 2, UNI_UPPERCASELETTER } /* generalcategory=lu */,
+ { 0, 1667, 6557, 7, 19, UNI_CJKCOMPATIDEOGRAPHSSUP } /* blk=cjkcompatideographssup */,
+ { 3, 739, 0, 4, 0, UNI_MAND } /* mand */,
+ { 2066, 30, 62, 1, 5, UNI_CPMN } /* iscpmn */,
+ { 0, 30, 832, 1, 5, UNI_TERM } /* isterm */,
+ { 0, 2842, 0, 10, 0, UNI_ETHI } /* isethiopic */,
+ { 0, 1667, 3538, 4, 16, UNI_CYPRIOTSYLLABARY } /* blk=cypriotsyllabary */,
+ { 1, 1667, 8660, 4, 42, UNI_UCASEXT } /* blk=unifiedcanadianaboriginalsyllabicsextended */,
+ { 0, 30, 633, 1, 8, UNI_HANO } /* ishanunoo */,
+ { 2188, 4536, 0, 18, 0, UNI_COPTICEPACTNUMBERS } /* copticepactnumbers */,
+ { 4936, 461, 1205, 2, 7, UNI_GRAN } /* isgrantha */,
+ { 0, 380, 353, 6, 2, UNI_HYPHEN } /* hyphen=y */,
+ { 2, 1726, 4511, 8, 9, UNI_ARABICEXTB } /* isarabicextendedb */,
+ { 0, 622, 598, 6, 3, -UNI_EXTPICT } /* extpict=n */,
+ { 0, 1102, 6082, 4, 8, UNI_GEOR } /* scx=georgian */,
+ { 0, 7591, 4407, 3, 17, UNI_RI } /* lb=regionalindicator */,
+ { 2486, 4424, 648, 17, 5, UNI_ADLM } /* scriptextensions=adlam */,
+ { 3, 5065, 600, 12, 4, UNI_JG__MANICHAEANONE } /* jg=manichaeanone */,
+ { 6356, 6165, 5958, 3, 4, UNI_SC__SINH } /* sc=sinh */,
+ { 0, 5857, 0, 9, 0, UNI_MONG } /* mongolian */,
+ { 20, 2324, 4536, 6, 18, UNI_COPTICEPACTNUMBERS } /* block=copticepactnumbers */,
+ { 4196, 1823, 1543, 7, 10, UNI_KHAR } /* script=kharoshthi */,
+ { 4864, 7752, 5079, 24, 5, UNI_JG__MANICHAEANTWENTY } /* joininggroup=manichaeantwenty */,
+ { 4160, 1102, 205, 5, 3, UNI_TFNG } /* scx=tfng */,
+ { 9, 7110, 0, 24, 0, UNI_DIACRITICALSFORSYMBOLS } /* combiningmarksforsymbols */,
+ { 3265, 1823, 1358, 7, 9, UNI_PALM } /* script=palmyrene */,
+ { 1, 7887, 6553, 27, 5, UNI_CJKEXTC } /* incjkunifiedideographsextensionc */,
+ { 5507, 4371, 0, 6, 0, UNI_XPOSIXSPACE } /* wspace */,
+ { 6145, 3001, 283, 12, 2, UNI_NT__NU } /* numerictype=nu */,
+ { 1550, 461, 1133, 2, 8, UNI_VITH } /* isvithkuqi */,
+ { 0, 895, 288, 5, 2, UNI_AGE__3 } /* age=v30 */,
+ { 2, 823, 585, 4, 5, UNI_DASH } /* dash=true */,
+ { 4615, 4424, 43, 17, 4, UNI_BUHD } /* scriptextensions=buhd */,
+ { 0, 2302, 933, 9, 3, -UNI_IDC } /* idcontinue=f */,
+ { 2068, 2536, 2539, 3, 10, UNI_JG__AFRICANFEH } /* jg=africanfeh */,
+ { 8, 461, 2526, 2, 10, UNI_POSIXBLANK } /* isposixblank */,
+ { 2325, 1243, 5067, 5, 11, UNI_INMANICHAEAN } /* block=manichaean */,
+ { 0, 8, 585, 3, 2, UNI_PCM } /* pcm=t */,
+ { 0, 4424, 5778, 17, 21, UNI_PRTI } /* scriptextensions=inscriptionalparthian */,
+ { 20, 1102, 673, 4, 5, UNI_OSGE } /* scx=osage */,
+ { 8, 4424, 156, 17, 4, UNI_OUGR } /* scriptextensions=ougr */,
+ { 0, 1823, 47, 7, 4, UNI_SC__CAKM } /* script=cakm */,
+ { 4112, 1667, 5373, 4, 18, UNI_TAIXUANJING } /* blk=taixuanjingsymbols */,
+ { 8, 7591, 18, 3, 2, UNI_LB__BA } /* lb=ba */,
+ { 1, 4424, 4740, 17, 4, UNI_TALE } /* scriptextensions=tale */,
+ { 0, 309, 4926, 2, 8, UNI_TAMILSUP } /* intamilsup */,
+ { 0, 7011, 345, 24, 2, UNI_CCC__18 } /* canonicalcombiningclass=18 */,
+ { 0, 2324, 6487, 6, 23, UNI_ZNAMENNYMUSIC } /* block=znamennymusicalnotation */,
+ { 14, 2247, 0, 4, 0, UNI_HUNG } /* hung */,
+ { 0, 527, 0, 6, 0, UNI_RJNG } /* rejang */,
+ { 2313, 461, 940, 2, 2, UNI_CO } /* isco */,
+ { 0, 309, 6797, 2, 19, UNI_DEVANAGARIEXTA } /* indevanagariextendeda */,
+ { 2946, 2536, 1767, 3, 2, UNI_JG__FE } /* jg=fe */,
+ { 0, 1102, 3349, 4, 15, UNI_MERC } /* scx=meroiticcursive */,
+ { 0, 2280, 2360, 10, 10, UNI_IN__NA } /* presentin=unassigned */,
+ { 1, 3514, 4987, 7, 9, UNI_ALCHEMICAL } /* block=alchemical */,
+ { 0, 461, 5185, 2, 20, UNI_HLUW } /* isanatolianhieroglyphs */,
+ { 1196, 946, 1847, 5, 6, UNI_SUPERANDSUB } /* superandsub */,
+ { 2226, 7274, 6514, 9, 10, UNI_CO } /* category=privateuse */,
+ { 7, 3502, 5820, 5, 18, UNI_ENCLOSEDALPHANUMSUP } /* blk=enclosedalphanumsup */,
+ { 3164, 2523, 248, 8, 5, UNI_XPOSIXCNTRL } /* isxposixcntrl */,
+ { 0, 292, 2656, 3, 9, UNI_NV__1_SLASH_2 } /* nv=5.000e-01 */,
+ { 4234, 3832, 1805, 14, 4, UNI_NV__50000 } /* numericvalue=50000 */,
+ { 0, 7011, 388, 24, 2, UNI_CCC__26 } /* canonicalcombiningclass=26 */,
+ { 711, 1823, 1021, 7, 6, UNI_WCHO } /* script=wancho */,
+ { 2144, 5958, 0, 21, 0, UNI_SINHALAARCHAICNUMBERS } /* sinhalaarchaicnumbers */,
+ { 2, 461, 115, 2, 2, UNI_SK } /* issk */,
+ { 4297, 833, 599, 4, 2, -UNI_TERM } /* term=n */,
+ { 20, 1409, 0, 5, 0, UNI_LATN } /* latin */,
+ { 0, 375, 353, 5, 2, UNI_GREXT } /* grext=y */,
+ { 2, 8505, 406, 3, 2, UNI_NT__DI } /* nt=di */
};
-MPH_VALt match_uniprop( const unsigned char * const key, const U16 key_len ) {
+MPH_VALt
+match_uniprop( const unsigned char * const key, const U16 key_len ) {
const unsigned char * ptr= key;
const unsigned char * ptr_end= key + key_len;
U32 h= MPH_SEED1;
U32 s;
U32 n;
+ /* this is FNV-1a 32bit unrolled. */
do {
h ^= NATIVE_TO_LATIN1(*ptr); /* table collated in Latin1 */
- h *= MPH_FNV_CONST;
+ h *= MPH_FNV32_PRIME;
} while ( ++ptr < ptr_end );
n= h % MPH_BUCKETS;
s = mph_table[n].seed2;
@@ -7494,58 +7707,59 @@ MPH_VALt match_uniprop( const unsigned char * const key, const U16 key_len ) {
#endif /* #if defined(PERL_CORE) || defined(PERL_EXT_RE_BUILD) */
/* Generated from:
- * d60b1a3dffe16c4aaaf3f00d21993bb320d05e9828b106182214764d4c69935c lib/Unicode/UCD.pm
- * ce96627d4fc91b4fd886c409caeb9b76cf7bd345e12f05c6701add7f233f6437 lib/unicore/ArabicShaping.txt
- * 0e69eef3da722cc104522d8372e86d5b86bb7afcc761b0c991e39e832294946d lib/unicore/BidiBrackets.txt
- * a00d9d21585106a52113fb7b1d3d0373a5835be72e76862fb559ebddd474d70e lib/unicore/BidiMirroring.txt
- * 81a82b6a9fcf1a9c12f588d7a1decd73a9afdc4cac95b0eb7e576e7942d6c19f lib/unicore/Blocks.txt
- * 99d231d7c91688bbe8ca8ccebcc2f46b5b222f844babe4827295bae11e2abe5f lib/unicore/CaseFolding.txt
- * 38badafd818d8405324fe298c0676be0c95186368c84b5368375fd871a645144 lib/unicore/CompositionExclusions.txt
- * e779a443d3aa2a3166a15becaa2b737c922480e32c0453d5956093633555078f lib/unicore/DAge.txt
- * a5d45f59b39deaab3c72ce8c1a2e212a5e086dff11b1f9d5bb0e352642e82248 lib/unicore/DCoreProperties.txt
- * 3ac44e11c84bdaf6b207d2c2c20eed857ae17052393fc7f71b0fe951186ba906 lib/unicore/DNormalizationProps.txt
- * 4f822ec7a9ebbb3138ad29bade8b9688d25b39c7a3c0b7431f01e7229e4fcb6e lib/unicore/EastAsianWidth.txt
- * fc535aa1047a70105ab9a22c2b4c3f363a2ff02fe48ebbc5eeb9873b2752ff0b lib/unicore/EquivalentUnifiedIdeograph.txt
- * b9c5158ce944d2fec57e0e4ecb716bdabfc3bdde73525f1772fe03f61a30d473 lib/unicore/HangulSyllableType.txt
- * 36c1b2a626ff1fb23b8b21e6ea8712698f8ce668dded1cb48b8ddf6a6a1b04e9 lib/unicore/IdStatus.txt
- * 4857c4ffa3898e6128b2d46b0a02e499a663fb91464a69ef3611096f01293acc lib/unicore/IdType.txt
- * 69197b019fa5f2fb0d8c6ed1ed8acb9f2e8b5b8f45a947953ffa652f3bf54983 lib/unicore/IndicPositionalCategory.txt
- * 6604e2f0fde7428675364aa0006bc686b79488dcc60ae8cb29800af2be3352e8 lib/unicore/IndicSyllabicCategory.txt
- * 84ead63924aaa74b988b2eaf254a8733276ed108633ce2ef77a9ee1de7818162 lib/unicore/Jamo.txt
- * d5abcd8f54c8a2aa912924c485ccf7f968ad98feaa303d8e9a29ad89172f1faf lib/unicore/LineBreak.txt
- * 985128e8c8b2540233331d9b27d897d2c23bd5bcf1d05da960befce6efc59542 lib/unicore/NameAliases.txt
- * 27282b8aa01d4d0c44aef436cb74195ae8639ffa187aeee4e6247af76febea76 lib/unicore/NamedSequences.txt
- * 485b5a3ed25dbf1f94dfa5a9b69d8b4550ffd0c33045ccc55ccfd7c80b2a40cf lib/unicore/PropList.txt
- * 6b3902e9268cd843fe65cbdea992108c9528343ec0679f800b96f356bb553e5a lib/unicore/PropValueAliases.txt
- * 2bd5777847e3d6add3c7e5c0d1393ddcab89e5a0ac3ff498cb0c53041f0b86e4 lib/unicore/PropertyAliases.txt
- * 03a61dc89422e44cc2b73e8e893321007880ab69e2a4d281c0f1bc29c602b9d0 lib/unicore/ScriptExtensions.txt
- * 9a5ed1ec9b5f0d7147e9371ad792ab39203611af7637cff2aa4a5c663b172cde lib/unicore/Scripts.txt
- * 6424312f1dc39b22e0ff9c0ffb13dfad424d9b03e6a6dc6bca941f6bf5ef1ffd lib/unicore/SpecialCasing.txt
- * bdbffbbfc8ad4d3a6d01b5891510458f3d36f7170422af4ea2bed3211a73e8bb lib/unicore/UnicodeData.txt
- * 160f41816234addb511901d5f21febd69574578dd93de6ef8153e35693325575 lib/unicore/VerticalOrientation.txt
- * 32dfb37d21db530529a6ec3dc13d96f21f8e7c7faf7ff3db8a9760cd76cec81d lib/unicore/auxiliary/GCBTest.txt
- * 2bd3c5e2d62701ff81fb3ec318e179a4618cabb1493b1e0dd2b4e7e56c5437c4 lib/unicore/auxiliary/GraphemeBreakProperty.txt
- * c51fbebfa82a0f36473b44bfd71d5ef6cb6a1f81fb313375dc9a1910d79bb2b6 lib/unicore/auxiliary/LBTest.txt
- * 80b0107750818d8f370bd120b6fe56b6855b60581f72affe8b60409a469b4b65 lib/unicore/auxiliary/SBTest.txt
- * 09e3166ebab166ac630a227f77f4e794ebd433271abd5588f5a67e7f199c71ee lib/unicore/auxiliary/SentenceBreakProperty.txt
- * bf5373ce28a5df06796c93dc159dd15a997bb2950c92704b40ae8190cfc3716d lib/unicore/auxiliary/WBTest.txt
- * a2b7373cf2fe3fa3b26dbb53405ca849985f771ff47f1c61743978003ff80499 lib/unicore/auxiliary/WordBreakProperty.txt
- * d2686f400a638c80775d7c662556fb8fa8dd3bbe4aa548d9d31624264c6e1bb1 lib/unicore/emoji/emoji.txt
- * b827ae5da8c2b08947cc9a120a7b7fd2f1676fb160b508df78075381635b127c lib/unicore/extracted/DBidiClass.txt
- * 6fdc5b5ef40444a8f0c772e6b67c00498d4216fe0c0fdf76744ce338f2ad3810 lib/unicore/extracted/DBinaryProperties.txt
- * e14928a5bf6ad5958a80332bd42e96e14420080a95c660e5da29384e496755d0 lib/unicore/extracted/DCombiningClass.txt
- * 579a03281fbe87b78d5d9a8523de4d255edd7e4ca6eab0e4c7729de97e9b89b1 lib/unicore/extracted/DDecompositionType.txt
- * ad83c59b257e9d480ffd3001d4ac240c5fed7cb1919453e1c4e8877035256bcd lib/unicore/extracted/DEastAsianWidth.txt
- * 4502f0969e4e6558c4b4c6ca4c23dad70b863d61dd3d5eed1a62a6c3c99fd570 lib/unicore/extracted/DGeneralCategory.txt
- * 00bb88b89e2adb646f3177f9444e2d3192386b81a5de9556104b338274b253e1 lib/unicore/extracted/DJoinGroup.txt
- * ac835b6e11a60c9820d3cf2d1cb0558dd68efb8f53f404a51632e4726690a6d7 lib/unicore/extracted/DJoinType.txt
- * baba9dfc133e3cb770a89aaf0973b1341fa61c2da6c176baf6428898b3b568d8 lib/unicore/extracted/DLineBreak.txt
- * 6d4a8c945dd7db83ed617cbb7d937de7f4ecf016ff22970d846e996a7c9a2a5d lib/unicore/extracted/DNumType.txt
- * 5b7c14380d5cceeaffcfbc18db1ed936391d2af2d51f5a41f1a17b692c77e59b lib/unicore/extracted/DNumValues.txt
- * 28076ceb3f4e2514ea9db243f4b918b9a7c2807b036237e2276b99b2659d9474 lib/unicore/mktables
- * 50b85a67451145545a65cea370dab8d3444fbfe07e9c34cef560c5b7da9d3eef lib/unicore/version
- * 24120d5e0c9685c442c93bc1dbea9b85ef973bf8e9474baf0e55b160c288226b regen/charset_translations.pl
- * 9f74e34278592ddf58fef8c32236b294e94ea5e12627f911f4563e8040a07292 regen/mk_PL_charclass.pl
- * 5eb9e6c825496cc9aa705e3cd33bc6d5a9657dcca16d4c4acc4824ff30b34a26 regen/mk_invlists.pl
- * cf1d68efb7d919d302c4005641eae8d36da6d7850816ad374b0c00b45e609f43 regen/mph.pl
- * ex: set ro: */
+ * 688d673ec947f7ccf898b4eae9848139d4d33676b688dee54f449f8bf9d3bbd2 lib/Unicode/UCD.pm
+ * eb840f36e0a7446293578c684a54c6d83d249abde7bdd4dfa89794af1d7fe9e9 lib/unicore/ArabicShaping.txt
+ * 333ae1e99db0504ca8a046a07dc45b5e7aa91869c685e6bf955ebe674804827a lib/unicore/BidiBrackets.txt
+ * b4b9e1d87d8ea273613880de9d2b2f0b0b696244b42152bfa0a3106e7d983a20 lib/unicore/BidiMirroring.txt
+ * 529dc5d0f6386d52f2f56e004bbfab48ce2d587eea9d38ba546c4052491bd820 lib/unicore/Blocks.txt
+ * cdd49e55eae3bbf1f0a3f6580c974a0263cb86a6a08daa10fbf705b4808a56f7 lib/unicore/CaseFolding.txt
+ * 3b019c0a33c3140cbc920c078f4f9af2680ba4f71869c8d4de5190667c70b6a3 lib/unicore/CompositionExclusions.txt
+ * 7570877e0fa197c45338f7c41a02636da4e14c8dba6a3611a01cd30bf329d5ca lib/unicore/DAge.txt
+ * d367290bc0867e6b484c68370530bdd1a08b6b32404601b8c7accaf83e05628d lib/unicore/DCoreProperties.txt
+ * d5687a48c95c7d6e1ec59cb29c0f2e8b052018eb069a4371b7368d0561e12a29 lib/unicore/DNormalizationProps.txt
+ * 743e7bc435c04ab1a8459710b1c3cad56eedced5b806b4659b6e69b85d0adf2a lib/unicore/EastAsianWidth.txt
+ * f2e04bae8c856fad3a16353a99d4cc2de6c72770260379f5e4974a97548aad2a lib/unicore/EquivalentUnifiedIdeograph.txt
+ * 9a3ab36d36a22bdb84de7a17b17e9b9c242134f0080f0a8b4b28d209465a8fc8 lib/unicore/HangulSyllableType.txt
+ * 790bc9595795c0e0a3860a21a7f97157a134b61a4fc4ab03c7d315d07c9a6eb7 lib/unicore/IdStatus.txt
+ * 71d3ed8f15cd5d8cd00cdebe62015ff26356462774b261b4a2b83d3bf46b1639 lib/unicore/IdType.txt
+ * 0ce56c1294da405c0a0a0071582ac839fd229bbf97bdd260462ee571309d4ec4 lib/unicore/IndicPositionalCategory.txt
+ * ffae561a51b47ddbbe267fdd8505ac3776b85b2932268809127acee84200b573 lib/unicore/IndicSyllabicCategory.txt
+ * 14733bcb6731ae0c07485bf59a41cb3db08785a50bd2b46b836b4341eab7ee46 lib/unicore/Jamo.txt
+ * 012bca868e2c4e59a5a10a7546baf0c6fb1b2ef458c277f054915c8a49d292bf lib/unicore/LineBreak.txt
+ * 3e39509e8fae3e5d50ba73759d0b97194501d14a9c63107a6372a46b38be18e8 lib/unicore/NameAliases.txt
+ * 1d5202155f14841973aa540b1625f4befbde185ac77ce5aceaaaa0501a68bd66 lib/unicore/NamedSequences.txt
+ * fb9ac8cc154a80cad6caac9897af55a4e75176af6f4e2bb6edc2bf8b1d57f326 lib/unicore/NormTest.txt
+ * e05c0a2811d113dae4abd832884199a3ea8d187ee1b872d8240a788a96540bfd lib/unicore/PropList.txt
+ * 13a7666843abea5c6b7eb8c057c57ab9bb2ba96cfc936e204224dd67d71cafad lib/unicore/PropValueAliases.txt
+ * e4935149af407fa455901832b710bccb63d2453e46d09190e234d019bcfbba45 lib/unicore/PropertyAliases.txt
+ * 7e07313d9d0bee42220c476b64485995130ae30917bbcf7780b602d677d7e33f lib/unicore/ScriptExtensions.txt
+ * cca85d830f46aece2e7c1459ef1249993dca8f2e46d51e869255be140d7ea4b0 lib/unicore/Scripts.txt
+ * 78b29c64b5840d25c11a9f31b665ee551b8a499eca6c70d770fcad7dd710f494 lib/unicore/SpecialCasing.txt
+ * 806e9aed65037197f1ec85e12be6e8cd870fc5608b4de0fffd990f689f376a73 lib/unicore/UnicodeData.txt
+ * ca6d332f485a6f5f452b29b4a74146af0f2c17b7577aa4c821d597210f70611a lib/unicore/VerticalOrientation.txt
+ * 0d2080d0def294a4b7660801cc03ddfe5866ff300c789c2cc1b50fd7802b2d97 lib/unicore/auxiliary/GCBTest.txt
+ * 5a0f8748575432f8ff95e1dd5bfaa27bda1a844809e17d6939ee912bba6568a1 lib/unicore/auxiliary/GraphemeBreakProperty.txt
+ * 371bde4052aa593b108684ae292d8ea2dbb93c19990e0cdf416fa7239557aac3 lib/unicore/auxiliary/LBTest.txt
+ * f62279d8fd10935ba0cf0d8417a1dcbe7ab0d4e62f59c17e02cbe40f580c4162 lib/unicore/auxiliary/SBTest.txt
+ * 61e4ba975b0a5bc1a76ee931b94914395d7289ef624e3c0d4d6b9460ee387bea lib/unicore/auxiliary/SentenceBreakProperty.txt
+ * 2a676130c71194245e7c74a837e58330f202600d8ddcf4518129dd476f26e18e lib/unicore/auxiliary/WBTest.txt
+ * 5188a56e91593467c2e912601ebc78750e6adc9b04541b8c5becb5441e388ce2 lib/unicore/auxiliary/WordBreakProperty.txt
+ * 29071dba22c72c27783a73016afb8ffaeb025866740791f9c2d0b55cc45a3470 lib/unicore/emoji/emoji.txt
+ * 4841f2090c2dbc592d3ce43bb74c2191b3da50fb9a0d00274f1448c202851b02 lib/unicore/extracted/DBidiClass.txt
+ * f10a35451429137f7348825f22d624b6390c526ead3d8e756d2af9e5ed5b2b67 lib/unicore/extracted/DBinaryProperties.txt
+ * ca54f6360cd288ad92113415bf1f77749015abe11cbd6798d21f7fa81f04205d lib/unicore/extracted/DCombiningClass.txt
+ * db059ce45e3cec49bfda56e262fa658b3a5561b1648de266c818d2a08a85b78a lib/unicore/extracted/DDecompositionType.txt
+ * d62e6950f086e53f47c593a38342621f8838f48c49a1de070cf83d3959bd1688 lib/unicore/extracted/DEastAsianWidth.txt
+ * fe29a45c0882500e591140aaa5c4f5067e6a5d746806148af34400c48b9c06f9 lib/unicore/extracted/DGeneralCategory.txt
+ * e13ca1344b16023aa38c6ada39f9658536fc6bb7c3c24d579f0bc316a4f4f1e0 lib/unicore/extracted/DJoinGroup.txt
+ * c4870b11e2b8b7d0eb70b99ce85608e5c28a399efa316cca97238a58ae160e5e lib/unicore/extracted/DJoinType.txt
+ * 3f4f32ed2a577344a508114527e721d7a8b633d32f38945d47fe0c743650c585 lib/unicore/extracted/DLineBreak.txt
+ * 710abf2d581ac9c57f244c0834f9d9969d9781e0396adccd330eaae658ac7d6b lib/unicore/extracted/DNumType.txt
+ * 6bd30f385f3baf3ab5d5308c111a81de87bea5f494ba0ba69e8ab45263b8c34d lib/unicore/extracted/DNumValues.txt
+ * f7265069b38ba9a0675a18600e241b1ec6fc8c55fd806fe4c13bc5d8cb0dc508 lib/unicore/mktables
+ * 55d90fdc3f902e5c0b16b3378f9eaa36e970a1c09723c33de7d47d0370044012 lib/unicore/version
+ * 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl
+ * c7ff8e0d207d3538c7feb4a1a152b159e5e902d20293b303569ea8323e84633e regen/mk_PL_charclass.pl
+ * cdbafee25193032242e77f2a6332b731d8392ce342fa616dbabc2c14c7b44eb6 regen/mk_invlists.pl
+ * d6987e01ad538d1567394851cf199f99815f7701bebd6092be4bc7a6d8f147c6 regen/mph.pl
+ * ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h b/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h
index eea66f6ba4f..07a02b300b2 100755
--- a/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h
+++ b/Master/tlpkg/tlperl/lib/CORE/unicode_constants.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
* !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
* This file is built by regen/unicode_constants.pl from Unicode data.
* Any changes made here will be lost!
@@ -45,7 +45,7 @@ bytes.
=cut
*/
-#define UNICODE_MAJOR_VERSION 13
+#define UNICODE_MAJOR_VERSION 15
#define UNICODE_DOT_VERSION 0
#define UNICODE_DOT_DOT_VERSION 0
@@ -89,9 +89,23 @@ bytes.
# define MICRO_SIGN_NATIVE 0xB5 /* U+00B5 */
# define MICRO_SIGN_UTF8 "\xC2\xB5" /* U+00B5 */
-# ifdef PERL_IN_REGCOMP_C
-# define MAX_PRINT_A 0x7E /* The max code point that isPRINT_A */
-# endif
+# ifdef PERL_IN_TOKE_C
+ /* Paired characters for quote-like operators, in UTF-8 */
+# define EXTRA_OPENING_UTF8_BRACKETS "\x28\x3C\x5B\x7B\xC2\xAB\xC2\xBB\xDC\x86\xE0\xBC\xBA\xE0\xBC\xBC\xE1\x9A\x9B\xE2\x80\x98\xE2\x80\x99\xE2\x80\x9C\xE2\x80\x9D\xE2\x80\xB5\xE2\x80\xB6\xE2\x80\xB7\xE2\x80\xB9\xE2\x80\xBA\xE2\x81\x85\xE2\x81\x8D\xE2\x81\xBD\xE2\x82\x8D\xE2\x86\x92\xE2\x86\x9B\xE2\x86\x9D\xE2\x86\xA0\xE2\x86\xA3\xE2\x86\xA6\xE2\x86\xAA\xE2\x86\xAC\xE2\x86\xB1\xE2\x86\xB3\xE2\x87\x80\xE2\x87\x81\xE2\x87\x89\xE2\x87\x8F\xE2\x87\x92\xE2\x87\x9B\xE2\x87\x9D\xE2\x87\xA2\xE2\x87\xA5\xE2\x87\xA8\xE2\x87\xB4\xE2\x87\xB6\xE2\x87\xB8\xE2\x87\xBB\xE2\x87\xBE\xE2\x88\x88\xE2\x88\x89\xE2\x88\x8A\xE2\x89\xA4\xE2\x89\xA6\xE2\x89\xA8\xE2\x89\xAA\xE2\x89\xAE\xE2\x89\xB0\xE2\x89\xB2\xE2\x89\xB4\xE2\x89\xBA\xE2\x89\xBC\xE2\x89\xBE\xE2\x8A\x80\xE2\x8A\x82\xE2\x8A\x84\xE2\x8A\x86\xE2\x8A\x88\xE2\x8A\x8A\xE2\x8A\xA3\xE2\x8A\xA6\xE2\x8A\xA8\xE2\x8A\xA9\xE2\x8A\xB0\xE2\x8B\x90\xE2\x8B\x96\xE2\x8B\x98\xE2\x8B\x9C\xE2\x8B\x9E\xE2\x8B\xA0\xE2\x8B\xA6\xE2\x8B\xA8\xE2\x8B\xB2\xE2\x8B\xB3\xE2\x8B\xB4\xE2\x8B\xB6\xE2\x8B\xB7\xE2\x8C\x88\xE2\x8C\x8A\xE2\x8C\xA6\xE2\x8C\xA9\xE2\x8D\x88\xE2\x8F\xA9\xE2\x8F\xAD\xE2\x98\x9B\xE2\x98\x9E\xE2\x9A\x9E\xE2\x9D\xA8\xE2\x9D\xAA\xE2\x9D\xAC\xE2\x9D\xAE\xE2\x9D\xB0\xE2\x9D\xB2\xE2\x9D\xB4\xE2\x9F\x83\xE2\x9F\x85\xE2\x9F\x88\xE2\x9F\x9E\xE2\x9F\xA6\xE2\x9F\xA8\xE2\x9F\xAA\xE2\x9F\xAC\xE2\x9F\xAE\xE2\x9F\xB4\xE2\x9F\xB6\xE2\x9F\xB9\xE2\x9F\xBC\xE2\x9F\xBE\xE2\x9F\xBF\xE2\xA4\x80\xE2\xA4\x81\xE2\xA4\x83\xE2\xA4\x85\xE2\xA4\x87\xE2\xA4\x8D\xE2\xA4\x8F\xE2\xA4\x90\xE2\xA4\x91\xE2\xA4\x94\xE2\xA4\x95\xE2\xA4\x96\xE2\xA4\x97\xE2\xA4\x98\xE2\xA4\x9A\xE2\xA4\x9C\xE2\xA4\x9E\xE2\xA4\xA0\xE2\xA4\xB3\xE2\xA4\xB7\xE2\xA5\x85\xE2\xA5\x87\xE2\xA5\x93\xE2\xA5\x97\xE2\xA5\x9B\xE2\xA5\x9F\xE2\xA5\xA4\xE2\xA5\xAC\xE2\xA5\xAD\xE2\xA5\xB1\xE2\xA5\xB2\xE2\xA5\xB4\xE2\xA5\xB5\xE2\xA5\xB9\xE2\xA6\x83\xE2\xA6\x85\xE2\xA6\x87\xE2\xA6\x89\xE2\xA6\x8B\xE2\xA6\x8D\xE2\xA6\x8F\xE2\xA6\x91\xE2\xA6\x93\xE2\xA6\x95\xE2\xA6\x97\xE2\xA6\xA8\xE2\xA6\xAA\xE2\xA6\xB3\xE2\xA7\x80\xE2\xA7\x98\xE2\xA7\x9A\xE2\xA7\xBC\xE2\xA9\xB9\xE2\xA9\xBB\xE2\xA9\xBD\xE2\xA9\xBF\xE2\xAA\x81\xE2\xAA\x83\xE2\xAA\x85\xE2\xAA\x87\xE2\xAA\x89\xE2\xAA\x8D\xE2\xAA\x95\xE2\xAA\x97\xE2\xAA\x99\xE2\xAA\x9B\xE2\xAA\x9D\xE2\xAA\x9F\xE2\xAA\xA1\xE2\xAA\xA6\xE2\xAA\xA8\xE2\xAA\xAA\xE2\xAA\xAC\xE2\xAA\xAF\xE2\xAA\xB1\xE2\xAA\xB3\xE2\xAA\xB5\xE2\xAA\xB7\xE2\xAA\xB9\xE2\xAA\xBB\xE2\xAA\xBD\xE2\xAA\xBF\xE2\xAB\x81\xE2\xAB\x83\xE2\xAB\x85\xE2\xAB\x87\xE2\xAB\x89\xE2\xAB\x8B\xE2\xAB\x8F\xE2\xAB\x91\xE2\xAB\x95\xE2\xAB\xA5\xE2\xAB\xB7\xE2\xAB\xB9\xE2\xAD\x86\xE2\xAD\x87\xE2\xAD\x88\xE2\xAD\x8C\xE2\xAD\xA2\xE2\xAD\xAC\xE2\xAD\xB2\xE2\xAD\xBC\xE2\xAE\x86\xE2\xAE\x8A\xE2\xAE\x95\xE2\xAE\x9A\xE2\xAE\x9E\xE2\xAE\xA1\xE2\xAE\xA3\xE2\xAE\xA9\xE2\xAE\xAB\xE2\xAE\xB1\xE2\xAE\xB3\xE2\xAF\xAE\xE2\xB8\x82\xE2\xB8\x83\xE2\xB8\x84\xE2\xB8\x85\xE2\xB8\x89\xE2\xB8\x8A\xE2\xB8\x8C\xE2\xB8\x8D\xE2\xB8\x91\xE2\xB8\x9C\xE2\xB8\x9D\xE2\xB8\xA0\xE2\xB8\xA1\xE2\xB8\xA2\xE2\xB8\xA4\xE2\xB8\xA6\xE2\xB8\xA8\xE2\xB8\xB6\xE2\xB9\x82\xE2\xB9\x95\xE2\xB9\x97\xE2\xB9\x99\xE2\xB9\x9B\xE3\x80\x88\xE3\x80\x8A\xE3\x80\x8C\xE3\x80\x8E\xE3\x80\x90\xE3\x80\x94\xE3\x80\x96\xE3\x80\x98\xE3\x80\x9A\xE3\x80\x9D\xEA\xA7\x81\xEF\xB4\xBE\xEF\xB9\x99\xEF\xB9\x9B\xEF\xB9\x9D\xEF\xB9\xA4\xEF\xBC\x88\xEF\xBC\x9C\xEF\xBC\xBB\xEF\xBD\x9B\xEF\xBD\x9F\xEF\xBD\xA2\xEF\xBF\xAB\xF0\x9D\x84\x83\xF0\x9D\x84\x86\xF0\x9F\x91\x89\xF0\x9F\x94\x88\xF0\x9F\x94\x89\xF0\x9F\x94\x8A\xF0\x9F\x95\xBB\xF0\x9F\x96\x99\xF0\x9F\x96\x9B\xF0\x9F\x96\x9D\xF0\x9F\x97\xA6\xF0\x9F\xA0\x82\xF0\x9F\xA0\x86\xF0\x9F\xA0\x8A\xF0\x9F\xA0\x92\xF0\x9F\xA0\x96\xF0\x9F\xA0\x9A\xF0\x9F\xA0\x9E\xF0\x9F\xA0\xA2\xF0\x9F\xA0\xA6\xF0\x9F\xA0\xAA\xF0\x9F\xA0\xAE\xF0\x9F\xA0\xB2\xF0\x9F\xA0\xB6\xF0\x9F\xA0\xBA\xF0\x9F\xA0\xBE\xF0\x9F\xA1\x82\xF0\x9F\xA1\x86\xF0\x9F\xA1\x92\xF0\x9F\xA1\xA2\xF0\x9F\xA1\xAA\xF0\x9F\xA1\xB2\xF0\x9F\xA1\xBA\xF0\x9F\xA2\x82\xF0\x9F\xA2\x92\xF0\x9F\xA2\x96\xF0\x9F\xA2\x9A\xF0\x9F\xA2\xA1\xF0\x9F\xA2\xA3\xF0\x9F\xA2\xA5\xF0\x9F\xA2\xA7\xF0\x9F\xA2\xA9\xF0\x9F\xA2\xAB"
+# define EXTRA_CLOSING_UTF8_BRACKETS "\x29\x3E\x5D\x7D\xC2\xBB\xC2\xAB\xDC\x87\xE0\xBC\xBB\xE0\xBC\xBD\xE1\x9A\x9C\xE2\x80\x99\xE2\x80\x98\xE2\x80\x9D\xE2\x80\x9C\xE2\x80\xB2\xE2\x80\xB3\xE2\x80\xB4\xE2\x80\xBA\xE2\x80\xB9\xE2\x81\x86\xE2\x81\x8C\xE2\x81\xBE\xE2\x82\x8E\xE2\x86\x90\xE2\x86\x9A\xE2\x86\x9C\xE2\x86\x9E\xE2\x86\xA2\xE2\x86\xA4\xE2\x86\xA9\xE2\x86\xAB\xE2\x86\xB0\xE2\x86\xB2\xE2\x86\xBC\xE2\x86\xBD\xE2\x87\x87\xE2\x87\x8D\xE2\x87\x90\xE2\x87\x9A\xE2\x87\x9C\xE2\x87\xA0\xE2\x87\xA4\xE2\x87\xA6\xE2\xAC\xB0\xE2\xAC\xB1\xE2\x87\xB7\xE2\x87\xBA\xE2\x87\xBD\xE2\x88\x8B\xE2\x88\x8C\xE2\x88\x8D\xE2\x89\xA5\xE2\x89\xA7\xE2\x89\xA9\xE2\x89\xAB\xE2\x89\xAF\xE2\x89\xB1\xE2\x89\xB3\xE2\x89\xB5\xE2\x89\xBB\xE2\x89\xBD\xE2\x89\xBF\xE2\x8A\x81\xE2\x8A\x83\xE2\x8A\x85\xE2\x8A\x87\xE2\x8A\x89\xE2\x8A\x8B\xE2\x8A\xA2\xE2\xAB\x9E\xE2\xAB\xA4\xE2\xAB\xA3\xE2\x8A\xB1\xE2\x8B\x91\xE2\x8B\x97\xE2\x8B\x99\xE2\x8B\x9D\xE2\x8B\x9F\xE2\x8B\xA1\xE2\x8B\xA7\xE2\x8B\xA9\xE2\x8B\xBA\xE2\x8B\xBB\xE2\x8B\xBC\xE2\x8B\xBD\xE2\x8B\xBE\xE2\x8C\x89\xE2\x8C\x8B\xE2\x8C\xAB\xE2\x8C\xAA\xE2\x8D\x87\xE2\x8F\xAA\xE2\x8F\xAE\xE2\x98\x9A\xE2\x98\x9C\xE2\x9A\x9F\xE2\x9D\xA9\xE2\x9D\xAB\xE2\x9D\xAD\xE2\x9D\xAF\xE2\x9D\xB1\xE2\x9D\xB3\xE2\x9D\xB5\xE2\x9F\x84\xE2\x9F\x86\xE2\x9F\x89\xE2\x9F\x9D\xE2\x9F\xA7\xE2\x9F\xA9\xE2\x9F\xAB\xE2\x9F\xAD\xE2\x9F\xAF\xE2\xAC\xB2\xE2\x9F\xB5\xE2\x9F\xB8\xE2\x9F\xBB\xE2\x9F\xBD\xE2\xAC\xB3\xE2\xAC\xB4\xE2\xAC\xB5\xE2\xA4\x82\xE2\xAC\xB6\xE2\xA4\x86\xE2\xA4\x8C\xE2\xA4\x8E\xE2\xAC\xB7\xE2\xAC\xB8\xE2\xAC\xB9\xE2\xAC\xBA\xE2\xAC\xBB\xE2\xAC\xBC\xE2\xAC\xBD\xE2\xA4\x99\xE2\xA4\x9B\xE2\xA4\x9D\xE2\xA4\x9F\xE2\xAC\xBF\xE2\xA4\xB6\xE2\xA5\x86\xE2\xAC\xBE\xE2\xA5\x92\xE2\xA5\x96\xE2\xA5\x9A\xE2\xA5\x9E\xE2\xA5\xA2\xE2\xA5\xAA\xE2\xA5\xAB\xE2\xAD\x80\xE2\xAD\x81\xE2\xAD\x8B\xE2\xAD\x82\xE2\xA5\xBB\xE2\xA6\x84\xE2\xA6\x86\xE2\xA6\x88\xE2\xA6\x8A\xE2\xA6\x8C\xE2\xA6\x90\xE2\xA6\x8E\xE2\xA6\x92\xE2\xA6\x94\xE2\xA6\x96\xE2\xA6\x98\xE2\xA6\xA9\xE2\xA6\xAB\xE2\xA6\xB4\xE2\xA7\x81\xE2\xA7\x99\xE2\xA7\x9B\xE2\xA7\xBD\xE2\xA9\xBA\xE2\xA9\xBC\xE2\xA9\xBE\xE2\xAA\x80\xE2\xAA\x82\xE2\xAA\x84\xE2\xAA\x86\xE2\xAA\x88\xE2\xAA\x8A\xE2\xAA\x8E\xE2\xAA\x96\xE2\xAA\x98\xE2\xAA\x9A\xE2\xAA\x9C\xE2\xAA\x9E\xE2\xAA\xA0\xE2\xAA\xA2\xE2\xAA\xA7\xE2\xAA\xA9\xE2\xAA\xAB\xE2\xAA\xAD\xE2\xAA\xB0\xE2\xAA\xB2\xE2\xAA\xB4\xE2\xAA\xB6\xE2\xAA\xB8\xE2\xAA\xBA\xE2\xAA\xBC\xE2\xAA\xBE\xE2\xAB\x80\xE2\xAB\x82\xE2\xAB\x84\xE2\xAB\x86\xE2\xAB\x88\xE2\xAB\x8A\xE2\xAB\x8C\xE2\xAB\x90\xE2\xAB\x92\xE2\xAB\x96\xE2\x8A\xAB\xE2\xAB\xB8\xE2\xAB\xBA\xE2\xAD\x85\xE2\xAD\x89\xE2\xAD\x8A\xE2\xA5\xB3\xE2\xAD\xA0\xE2\xAD\xAA\xE2\xAD\xB0\xE2\xAD\xBA\xE2\xAE\x84\xE2\xAE\x88\xE2\xAC\x85\xE2\xAE\x98\xE2\xAE\x9C\xE2\xAE\xA0\xE2\xAE\xA2\xE2\xAE\xA8\xE2\xAE\xAA\xE2\xAE\xB0\xE2\xAE\xB2\xE2\xAF\xAC\xE2\xB8\x83\xE2\xB8\x82\xE2\xB8\x85\xE2\xB8\x84\xE2\xB8\x8A\xE2\xB8\x89\xE2\xB8\x8D\xE2\xB8\x8C\xE2\xB8\x90\xE2\xB8\x9D\xE2\xB8\x9C\xE2\xB8\xA1\xE2\xB8\xA0\xE2\xB8\xA3\xE2\xB8\xA5\xE2\xB8\xA7\xE2\xB8\xA9\xE2\xB8\xB7\xE2\x80\x9E\xE2\xB9\x96\xE2\xB9\x98\xE2\xB9\x9A\xE2\xB9\x9C\xE3\x80\x89\xE3\x80\x8B\xE3\x80\x8D\xE3\x80\x8F\xE3\x80\x91\xE3\x80\x95\xE3\x80\x97\xE3\x80\x99\xE3\x80\x9B\xE3\x80\x9E\xEA\xA7\x82\xEF\xB4\xBF\xEF\xB9\x9A\xEF\xB9\x9C\xEF\xB9\x9E\xEF\xB9\xA5\xEF\xBC\x89\xEF\xBC\x9E\xEF\xBC\xBD\xEF\xBD\x9D\xEF\xBD\xA0\xEF\xBD\xA3\xEF\xBF\xA9\xF0\x9D\x84\x82\xF0\x9D\x84\x87\xF0\x9F\x91\x88\xF0\x9F\x95\xA8\xF0\x9F\x95\xA9\xF0\x9F\x95\xAA\xF0\x9F\x95\xBD\xF0\x9F\x96\x98\xF0\x9F\x96\x9A\xF0\x9F\x96\x9C\xF0\x9F\x97\xA7\xF0\x9F\xA0\x80\xF0\x9F\xA0\x84\xF0\x9F\xA0\x88\xF0\x9F\xA0\x90\xF0\x9F\xA0\x94\xF0\x9F\xA0\x98\xF0\x9F\xA0\x9C\xF0\x9F\xA0\xA0\xF0\x9F\xA0\xA4\xF0\x9F\xA0\xA8\xF0\x9F\xA0\xAC\xF0\x9F\xA0\xB0\xF0\x9F\xA0\xB4\xF0\x9F\xA0\xB8\xF0\x9F\xA0\xBC\xF0\x9F\xA1\x80\xF0\x9F\xA1\x84\xF0\x9F\xA1\x90\xF0\x9F\xA1\xA0\xF0\x9F\xA1\xA8\xF0\x9F\xA1\xB0\xF0\x9F\xA1\xB8\xF0\x9F\xA2\x80\xF0\x9F\xA2\x90\xF0\x9F\xA2\x94\xF0\x9F\xA2\x98\xF0\x9F\xA2\xA0\xF0\x9F\xA2\xA2\xF0\x9F\xA2\xA6\xF0\x9F\xA2\xA4\xF0\x9F\xA2\xA8\xF0\x9F\xA2\xAA"
+
+ /* And not in UTF-8 */
+# define EXTRA_OPENING_NON_UTF8_BRACKETS "\x28\x3C\x5B\x7B\xAB\xBB"
+# define EXTRA_CLOSING_NON_UTF8_BRACKETS "\x29\x3E\x5D\x7D\xBB\xAB"
+
+ /* And what's deprecated */
+# define DEPRECATED_OPENING_UTF8_BRACKETS "\xC2\xAB\xC2\xBB\xC2\xBB\xDC\x86\xDC\x87\xE0\xBC\xBA\xE0\xBC\xBB\xE0\xBC\xBC\xE0\xBC\xBD\xE1\x9A\x9B\xE1\x9A\x9C\xE2\x80\x98\xE2\x80\x99\xE2\x80\x99\xE2\x80\x9C\xE2\x80\x9D\xE2\x80\x9D\xE2\x80\xB5\xE2\x80\xB2\xE2\x80\xB6\xE2\x80\xB3\xE2\x80\xB7\xE2\x80\xB4\xE2\x80\xB9\xE2\x80\xBA\xE2\x80\xBA\xE2\x81\x85\xE2\x81\x86\xE2\x81\x8D\xE2\x81\x8C\xE2\x81\xBD\xE2\x81\xBE\xE2\x82\x8D\xE2\x82\x8E\xE2\x86\x92\xE2\x86\x90\xE2\x86\x9B\xE2\x86\x9A\xE2\x86\x9D\xE2\x86\x9C\xE2\x86\xA0\xE2\x86\x9E\xE2\x86\xA3\xE2\x86\xA2\xE2\x86\xA6\xE2\x86\xA4\xE2\x86\xAA\xE2\x86\xA9\xE2\x86\xAC\xE2\x86\xAB\xE2\x86\xB1\xE2\x86\xB0\xE2\x86\xB3\xE2\x86\xB2\xE2\x87\x80\xE2\x86\xBC\xE2\x87\x81\xE2\x86\xBD\xE2\x87\x89\xE2\x87\x87\xE2\x87\x8F\xE2\x87\x8D\xE2\x87\x92\xE2\x87\x90\xE2\x87\x9B\xE2\x87\x9A\xE2\x87\x9D\xE2\x87\x9C\xE2\x87\xA2\xE2\x87\xA0\xE2\x87\xA5\xE2\x87\xA4\xE2\x87\xA8\xE2\x87\xA6\xE2\x87\xB4\xE2\xAC\xB0\xE2\x87\xB6\xE2\xAC\xB1\xE2\x87\xB8\xE2\x87\xB7\xE2\x87\xBB\xE2\x87\xBA\xE2\x87\xBE\xE2\x87\xBD\xE2\x88\x88\xE2\x88\x8B\xE2\x88\x89\xE2\x88\x8C\xE2\x88\x8A\xE2\x88\x8D\xE2\x89\xA4\xE2\x89\xA5\xE2\x89\xA6\xE2\x89\xA7\xE2\x89\xA8\xE2\x89\xA9\xE2\x89\xAA\xE2\x89\xAB\xE2\x89\xAE\xE2\x89\xAF\xE2\x89\xB0\xE2\x89\xB1\xE2\x89\xB2\xE2\x89\xB3\xE2\x89\xB4\xE2\x89\xB5\xE2\x89\xBA\xE2\x89\xBB\xE2\x89\xBC\xE2\x89\xBD\xE2\x89\xBE\xE2\x89\xBF\xE2\x8A\x80\xE2\x8A\x81\xE2\x8A\x82\xE2\x8A\x83\xE2\x8A\x84\xE2\x8A\x85\xE2\x8A\x86\xE2\x8A\x87\xE2\x8A\x88\xE2\x8A\x89\xE2\x8A\x8A\xE2\x8A\x8B\xE2\x8A\xA3\xE2\x8A\xA2\xE2\x8A\xA6\xE2\xAB\x9E\xE2\x8A\xA8\xE2\xAB\xA4\xE2\x8A\xA9\xE2\xAB\xA3\xE2\x8A\xB0\xE2\x8A\xB1\xE2\x8B\x90\xE2\x8B\x91\xE2\x8B\x96\xE2\x8B\x97\xE2\x8B\x98\xE2\x8B\x99\xE2\x8B\x9C\xE2\x8B\x9D\xE2\x8B\x9E\xE2\x8B\x9F\xE2\x8B\xA0\xE2\x8B\xA1\xE2\x8B\xA6\xE2\x8B\xA7\xE2\x8B\xA8\xE2\x8B\xA9\xE2\x8B\xB2\xE2\x8B\xBA\xE2\x8B\xB3\xE2\x8B\xBB\xE2\x8B\xB4\xE2\x8B\xBC\xE2\x8B\xB6\xE2\x8B\xBD\xE2\x8B\xB7\xE2\x8B\xBE\xE2\x8C\x88\xE2\x8C\x89\xE2\x8C\x8A\xE2\x8C\x8B\xE2\x8C\xA6\xE2\x8C\xAB\xE2\x8C\xA9\xE2\x8C\xAA\xE2\x8D\x88\xE2\x8D\x87\xE2\x8F\xA9\xE2\x8F\xAA\xE2\x8F\xAD\xE2\x8F\xAE\xE2\x98\x9B\xE2\x98\x9A\xE2\x98\x9E\xE2\x98\x9C\xE2\x9A\x9E\xE2\x9A\x9F\xE2\x9D\xA8\xE2\x9D\xA9\xE2\x9D\xAA\xE2\x9D\xAB\xE2\x9D\xAC\xE2\x9D\xAD\xE2\x9D\xAE\xE2\x9D\xAF\xE2\x9D\xB0\xE2\x9D\xB1\xE2\x9D\xB2\xE2\x9D\xB3\xE2\x9D\xB4\xE2\x9D\xB5\xE2\x9F\x83\xE2\x9F\x84\xE2\x9F\x85\xE2\x9F\x86\xE2\x9F\x88\xE2\x9F\x89\xE2\x9F\x9E\xE2\x9F\x9D\xE2\x9F\xA6\xE2\x9F\xA7\xE2\x9F\xA8\xE2\x9F\xA9\xE2\x9F\xAA\xE2\x9F\xAB\xE2\x9F\xAC\xE2\x9F\xAD\xE2\x9F\xAE\xE2\x9F\xAF\xE2\x9F\xB4\xE2\xAC\xB2\xE2\x9F\xB6\xE2\x9F\xB5\xE2\x9F\xB9\xE2\x9F\xB8\xE2\x9F\xBC\xE2\x9F\xBB\xE2\x9F\xBE\xE2\x9F\xBD\xE2\x9F\xBF\xE2\xAC\xB3\xE2\xA4\x80\xE2\xAC\xB4\xE2\xA4\x81\xE2\xAC\xB5\xE2\xA4\x83\xE2\xA4\x82\xE2\xA4\x85\xE2\xAC\xB6\xE2\xA4\x87\xE2\xA4\x86\xE2\xA4\x8D\xE2\xA4\x8C\xE2\xA4\x8F\xE2\xA4\x8E\xE2\xA4\x90\xE2\xAC\xB7\xE2\xA4\x91\xE2\xAC\xB8\xE2\xA4\x94\xE2\xAC\xB9\xE2\xA4\x95\xE2\xAC\xBA\xE2\xA4\x96\xE2\xAC\xBB\xE2\xA4\x97\xE2\xAC\xBC\xE2\xA4\x98\xE2\xAC\xBD\xE2\xA4\x9A\xE2\xA4\x99\xE2\xA4\x9C\xE2\xA4\x9B\xE2\xA4\x9E\xE2\xA4\x9D\xE2\xA4\xA0\xE2\xA4\x9F\xE2\xA4\xB3\xE2\xAC\xBF\xE2\xA4\xB7\xE2\xA4\xB6\xE2\xA5\x85\xE2\xA5\x86\xE2\xA5\x87\xE2\xAC\xBE\xE2\xA5\x93\xE2\xA5\x92\xE2\xA5\x97\xE2\xA5\x96\xE2\xA5\x9B\xE2\xA5\x9A\xE2\xA5\x9F\xE2\xA5\x9E\xE2\xA5\xA4\xE2\xA5\xA2\xE2\xA5\xAC\xE2\xA5\xAA\xE2\xA5\xAD\xE2\xA5\xAB\xE2\xA5\xB1\xE2\xAD\x80\xE2\xA5\xB2\xE2\xAD\x81\xE2\xA5\xB4\xE2\xAD\x8B\xE2\xA5\xB5\xE2\xAD\x82\xE2\xA5\xB9\xE2\xA5\xBB\xE2\xA6\x83\xE2\xA6\x84\xE2\xA6\x85\xE2\xA6\x86\xE2\xA6\x87\xE2\xA6\x88\xE2\xA6\x89\xE2\xA6\x8A\xE2\xA6\x8B\xE2\xA6\x8C\xE2\xA6\x8D\xE2\xA6\x90\xE2\xA6\x8F\xE2\xA6\x8E\xE2\xA6\x91\xE2\xA6\x92\xE2\xA6\x93\xE2\xA6\x94\xE2\xA6\x95\xE2\xA6\x96\xE2\xA6\x97\xE2\xA6\x98\xE2\xA6\xA8\xE2\xA6\xA9\xE2\xA6\xAA\xE2\xA6\xAB\xE2\xA6\xB3\xE2\xA6\xB4\xE2\xA7\x80\xE2\xA7\x81\xE2\xA7\x98\xE2\xA7\x99\xE2\xA7\x9A\xE2\xA7\x9B\xE2\xA7\xBC\xE2\xA7\xBD\xE2\xA9\xB9\xE2\xA9\xBA\xE2\xA9\xBB\xE2\xA9\xBC\xE2\xA9\xBD\xE2\xA9\xBE\xE2\xA9\xBF\xE2\xAA\x80\xE2\xAA\x81\xE2\xAA\x82\xE2\xAA\x83\xE2\xAA\x84\xE2\xAA\x85\xE2\xAA\x86\xE2\xAA\x87\xE2\xAA\x88\xE2\xAA\x89\xE2\xAA\x8A\xE2\xAA\x8D\xE2\xAA\x8E\xE2\xAA\x95\xE2\xAA\x96\xE2\xAA\x97\xE2\xAA\x98\xE2\xAA\x99\xE2\xAA\x9A\xE2\xAA\x9B\xE2\xAA\x9C\xE2\xAA\x9D\xE2\xAA\x9E\xE2\xAA\x9F\xE2\xAA\xA0\xE2\xAA\xA1\xE2\xAA\xA2\xE2\xAA\xA6\xE2\xAA\xA7\xE2\xAA\xA8\xE2\xAA\xA9\xE2\xAA\xAA\xE2\xAA\xAB\xE2\xAA\xAC\xE2\xAA\xAD\xE2\xAA\xAF\xE2\xAA\xB0\xE2\xAA\xB1\xE2\xAA\xB2\xE2\xAA\xB3\xE2\xAA\xB4\xE2\xAA\xB5\xE2\xAA\xB6\xE2\xAA\xB7\xE2\xAA\xB8\xE2\xAA\xB9\xE2\xAA\xBA\xE2\xAA\xBB\xE2\xAA\xBC\xE2\xAA\xBD\xE2\xAA\xBE\xE2\xAA\xBF\xE2\xAB\x80\xE2\xAB\x81\xE2\xAB\x82\xE2\xAB\x83\xE2\xAB\x84\xE2\xAB\x85\xE2\xAB\x86\xE2\xAB\x87\xE2\xAB\x88\xE2\xAB\x89\xE2\xAB\x8A\xE2\xAB\x8B\xE2\xAB\x8C\xE2\xAB\x8F\xE2\xAB\x90\xE2\xAB\x91\xE2\xAB\x92\xE2\xAB\x95\xE2\xAB\x96\xE2\xAB\xA5\xE2\x8A\xAB\xE2\xAB\xB7\xE2\xAB\xB8\xE2\xAB\xB9\xE2\xAB\xBA\xE2\xAD\x86\xE2\xAD\x85\xE2\xAD\x87\xE2\xAD\x89\xE2\xAD\x88\xE2\xAD\x8A\xE2\xAD\x8C\xE2\xA5\xB3\xE2\xAD\xA2\xE2\xAD\xA0\xE2\xAD\xAC\xE2\xAD\xAA\xE2\xAD\xB2\xE2\xAD\xB0\xE2\xAD\xBC\xE2\xAD\xBA\xE2\xAE\x86\xE2\xAE\x84\xE2\xAE\x8A\xE2\xAE\x88\xE2\xAE\x95\xE2\xAC\x85\xE2\xAE\x9A\xE2\xAE\x98\xE2\xAE\x9E\xE2\xAE\x9C\xE2\xAE\xA1\xE2\xAE\xA0\xE2\xAE\xA3\xE2\xAE\xA2\xE2\xAE\xA9\xE2\xAE\xA8\xE2\xAE\xAB\xE2\xAE\xAA\xE2\xAE\xB1\xE2\xAE\xB0\xE2\xAE\xB3\xE2\xAE\xB2\xE2\xAF\xAE\xE2\xAF\xAC\xE2\xB8\x82\xE2\xB8\x83\xE2\xB8\x83\xE2\xB8\x84\xE2\xB8\x85\xE2\xB8\x85\xE2\xB8\x89\xE2\xB8\x8A\xE2\xB8\x8A\xE2\xB8\x8C\xE2\xB8\x8D\xE2\xB8\x8D\xE2\xB8\x91\xE2\xB8\x90\xE2\xB8\x9C\xE2\xB8\x9D\xE2\xB8\x9D\xE2\xB8\xA0\xE2\xB8\xA1\xE2\xB8\xA1\xE2\xB8\xA2\xE2\xB8\xA3\xE2\xB8\xA4\xE2\xB8\xA5\xE2\xB8\xA6\xE2\xB8\xA7\xE2\xB8\xA8\xE2\xB8\xA9\xE2\xB8\xB6\xE2\xB8\xB7\xE2\xB9\x82\xE2\x80\x9E\xE2\xB9\x95\xE2\xB9\x96\xE2\xB9\x97\xE2\xB9\x98\xE2\xB9\x99\xE2\xB9\x9A\xE2\xB9\x9B\xE2\xB9\x9C\xE3\x80\x88\xE3\x80\x89\xE3\x80\x8A\xE3\x80\x8B\xE3\x80\x8C\xE3\x80\x8D\xE3\x80\x8E\xE3\x80\x8F\xE3\x80\x90\xE3\x80\x91\xE3\x80\x94\xE3\x80\x95\xE3\x80\x96\xE3\x80\x97\xE3\x80\x98\xE3\x80\x99\xE3\x80\x9A\xE3\x80\x9B\xE3\x80\x9D\xE3\x80\x9E\xEA\xA7\x81\xEA\xA7\x82\xEF\xB4\xBE\xEF\xB4\xBF\xEF\xB9\x99\xEF\xB9\x9A\xEF\xB9\x9B\xEF\xB9\x9C\xEF\xB9\x9D\xEF\xB9\x9E\xEF\xB9\xA4\xEF\xB9\xA5\xEF\xBC\x88\xEF\xBC\x89\xEF\xBC\x9C\xEF\xBC\x9E\xEF\xBC\xBB\xEF\xBC\xBD\xEF\xBD\x9B\xEF\xBD\x9D\xEF\xBD\x9F\xEF\xBD\xA0\xEF\xBD\xA2\xEF\xBD\xA3\xEF\xBF\xAB\xEF\xBF\xA9\xF0\x9D\x84\x83\xF0\x9D\x84\x82\xF0\x9D\x84\x86\xF0\x9D\x84\x87\xF0\x9F\x91\x89\xF0\x9F\x91\x88\xF0\x9F\x94\x88\xF0\x9F\x95\xA8\xF0\x9F\x94\x89\xF0\x9F\x95\xA9\xF0\x9F\x94\x8A\xF0\x9F\x95\xAA\xF0\x9F\x95\xBB\xF0\x9F\x95\xBD\xF0\x9F\x96\x99\xF0\x9F\x96\x98\xF0\x9F\x96\x9B\xF0\x9F\x96\x9A\xF0\x9F\x96\x9D\xF0\x9F\x96\x9C\xF0\x9F\x97\xA6\xF0\x9F\x97\xA7\xF0\x9F\xA0\x82\xF0\x9F\xA0\x80\xF0\x9F\xA0\x86\xF0\x9F\xA0\x84\xF0\x9F\xA0\x8A\xF0\x9F\xA0\x88\xF0\x9F\xA0\x92\xF0\x9F\xA0\x90\xF0\x9F\xA0\x96\xF0\x9F\xA0\x94\xF0\x9F\xA0\x9A\xF0\x9F\xA0\x98\xF0\x9F\xA0\x9E\xF0\x9F\xA0\x9C\xF0\x9F\xA0\xA2\xF0\x9F\xA0\xA0\xF0\x9F\xA0\xA6\xF0\x9F\xA0\xA4\xF0\x9F\xA0\xAA\xF0\x9F\xA0\xA8\xF0\x9F\xA0\xAE\xF0\x9F\xA0\xAC\xF0\x9F\xA0\xB2\xF0\x9F\xA0\xB0\xF0\x9F\xA0\xB6\xF0\x9F\xA0\xB4\xF0\x9F\xA0\xBA\xF0\x9F\xA0\xB8\xF0\x9F\xA0\xBE\xF0\x9F\xA0\xBC\xF0\x9F\xA1\x82\xF0\x9F\xA1\x80\xF0\x9F\xA1\x86\xF0\x9F\xA1\x84\xF0\x9F\xA1\x92\xF0\x9F\xA1\x90\xF0\x9F\xA1\xA2\xF0\x9F\xA1\xA0\xF0\x9F\xA1\xAA\xF0\x9F\xA1\xA8\xF0\x9F\xA1\xB2\xF0\x9F\xA1\xB0\xF0\x9F\xA1\xBA\xF0\x9F\xA1\xB8\xF0\x9F\xA2\x82\xF0\x9F\xA2\x80\xF0\x9F\xA2\x92\xF0\x9F\xA2\x90\xF0\x9F\xA2\x96\xF0\x9F\xA2\x94\xF0\x9F\xA2\x9A\xF0\x9F\xA2\x98\xF0\x9F\xA2\xA1\xF0\x9F\xA2\xA0\xF0\x9F\xA2\xA3\xF0\x9F\xA2\xA2\xF0\x9F\xA2\xA5\xF0\x9F\xA2\xA6\xF0\x9F\xA2\xA7\xF0\x9F\xA2\xA4\xF0\x9F\xA2\xA9\xF0\x9F\xA2\xA8\xF0\x9F\xA2\xAB\xF0\x9F\xA2\xAA"
+# define DEPRECATED_OPENING_NON_UTF8_BRACKETS "\xAB\xBB"
+# endif
+
+# ifdef PERL_IN_REGCOMP_ANY
+# define MAX_PRINT_A 0x7E /* The max code point that isPRINT_A */
+# endif
#endif /* ASCII/Latin1 */
#if 'A' == 193 /* EBCDIC 1047 */ \
@@ -136,9 +150,23 @@ bytes.
# define MICRO_SIGN_NATIVE 0xA0 /* U+00B5 */
# define MICRO_SIGN_UTF8 "\x80\x64" /* U+00B5 */
-# ifdef PERL_IN_REGCOMP_C
-# define MAX_PRINT_A 0xF9 /* The max code point that isPRINT_A */
-# endif
+# ifdef PERL_IN_TOKE_C
+ /* Paired characters for quote-like operators, in UTF-8 */
+# define EXTRA_OPENING_UTF8_BRACKETS "\x4D\x4C\xAD\xC0\x80\x52\x80\x6A\xB8\x67\x47\xBA\x68\x69\xBA\x68\x70\xBC\x63\x6A\xCA\x41\x67\xCA\x41\x68\xCA\x41\x70\xCA\x41\x71\xCA\x42\x64\xCA\x42\x65\xCA\x42\x66\xCA\x42\x68\xCA\x42\x69\xCA\x43\x46\xCA\x43\x54\xCA\x44\x71\xCA\x45\x54\xCA\x53\x59\xCA\x53\x6A\xCA\x53\x71\xCA\x54\x41\xCA\x54\x44\xCA\x54\x47\xCA\x54\x51\xCA\x54\x53\xCA\x54\x58\xCA\x54\x62\xCA\x55\x41\xCA\x55\x42\xCA\x55\x4A\xCA\x55\x56\xCA\x55\x59\xCA\x55\x6A\xCA\x55\x71\xCA\x56\x43\xCA\x56\x46\xCA\x56\x49\xCA\x56\x63\xCA\x56\x65\xCA\x56\x67\xCA\x56\x6A\xCA\x56\x72\xCA\x57\x49\xCA\x57\x4A\xCA\x57\x51\xCA\x62\x45\xCA\x62\x47\xCA\x62\x49\xCA\x62\x51\xCA\x62\x55\xCA\x62\x57\xCA\x62\x59\xCA\x62\x63\xCA\x62\x69\xCA\x62\x70\xCA\x62\x72\xCA\x63\x41\xCA\x63\x43\xCA\x63\x45\xCA\x63\x47\xCA\x63\x49\xCA\x63\x51\xCA\x64\x44\xCA\x64\x47\xCA\x64\x49\xCA\x64\x4A\xCA\x64\x57\xCA\x65\x57\xCA\x65\x65\xCA\x65\x67\xCA\x65\x70\xCA\x65\x72\xCA\x66\x41\xCA\x66\x47\xCA\x66\x49\xCA\x66\x59\xCA\x66\x62\xCA\x66\x63\xCA\x66\x65\xCA\x66\x66\xCA\x67\x49\xCA\x67\x51\xCA\x68\x47\xCA\x68\x4A\xCA\x69\x49\xCA\x73\x4A\xCA\x73\x54\xCB\x57\x6A\xCB\x57\x72\xCB\x63\x72\xCB\x6A\x49\xCB\x6A\x51\xCB\x6A\x53\xCB\x6A\x55\xCB\x6A\x57\xCB\x6A\x59\xCB\x6A\x63\xCB\x72\x44\xCB\x72\x46\xCB\x72\x49\xCB\x72\x72\xCB\x73\x47\xCB\x73\x49\xCB\x73\x51\xCB\x73\x53\xCB\x73\x55\xCB\x73\x63\xCB\x73\x65\xCB\x73\x68\xCB\x73\x70\xCB\x73\x72\xCB\x73\x73\xCC\x49\x41\xCC\x49\x42\xCC\x49\x44\xCC\x49\x46\xCC\x49\x48\xCC\x49\x54\xCC\x49\x56\xCC\x49\x57\xCC\x49\x58\xCC\x49\x63\xCC\x49\x64\xCC\x49\x65\xCC\x49\x66\xCC\x49\x67\xCC\x49\x69\xCC\x49\x70\xCC\x49\x72\xCC\x4A\x41\xCC\x4A\x62\xCC\x4A\x66\xCC\x51\x46\xCC\x51\x48\xCC\x51\x62\xCC\x51\x66\xCC\x51\x6A\xCC\x51\x73\xCC\x52\x45\xCC\x52\x53\xCC\x52\x54\xCC\x52\x58\xCC\x52\x59\xCC\x52\x63\xCC\x52\x64\xCC\x52\x68\xCC\x53\x44\xCC\x53\x46\xCC\x53\x48\xCC\x53\x4A\xCC\x53\x52\xCC\x53\x54\xCC\x53\x56\xCC\x53\x58\xCC\x53\x62\xCC\x53\x64\xCC\x53\x66\xCC\x54\x49\xCC\x54\x51\xCC\x54\x62\xCC\x55\x41\xCC\x55\x67\xCC\x55\x69\xCC\x56\x70\xCC\x62\x68\xCC\x62\x6A\xCC\x62\x71\xCC\x62\x73\xCC\x63\x42\xCC\x63\x44\xCC\x63\x46\xCC\x63\x48\xCC\x63\x4A\xCC\x63\x54\xCC\x63\x64\xCC\x63\x66\xCC\x63\x68\xCC\x63\x6A\xCC\x63\x71\xCC\x63\x73\xCC\x64\x42\xCC\x64\x47\xCC\x64\x49\xCC\x64\x51\xCC\x64\x53\xCC\x64\x56\xCC\x64\x58\xCC\x64\x62\xCC\x64\x64\xCC\x64\x66\xCC\x64\x68\xCC\x64\x6A\xCC\x64\x71\xCC\x64\x73\xCC\x65\x42\xCC\x65\x44\xCC\x65\x46\xCC\x65\x48\xCC\x65\x4A\xCC\x65\x52\xCC\x65\x56\xCC\x65\x58\xCC\x65\x64\xCC\x66\x46\xCC\x66\x66\xCC\x66\x68\xCC\x69\x47\xCC\x69\x48\xCC\x69\x49\xCC\x69\x53\xCC\x6A\x43\xCC\x6A\x53\xCC\x6A\x59\xCC\x6A\x70\xCC\x70\x47\xCC\x70\x51\xCC\x70\x64\xCC\x70\x69\xCC\x70\x72\xCC\x71\x42\xCC\x71\x44\xCC\x71\x4A\xCC\x71\x52\xCC\x71\x58\xCC\x71\x62\xCC\x73\x55\xCD\x57\x43\xCD\x57\x44\xCD\x57\x45\xCD\x57\x46\xCD\x57\x4A\xCD\x57\x51\xCD\x57\x53\xCD\x57\x54\xCD\x57\x58\xCD\x57\x70\xCD\x57\x71\xCD\x58\x41\xCD\x58\x42\xCD\x58\x43\xCD\x58\x45\xCD\x58\x47\xCD\x58\x49\xCD\x58\x65\xCD\x59\x43\xCD\x59\x64\xCD\x59\x66\xCD\x59\x68\xCD\x59\x6A\xCE\x41\x49\xCE\x41\x51\xCE\x41\x53\xCE\x41\x55\xCE\x41\x57\xCE\x41\x63\xCE\x41\x65\xCE\x41\x67\xCE\x41\x69\xCE\x41\x71\xDD\x51\x55\x42\xDD\x73\x4A\x72\xDD\x73\x59\x68\xDD\x73\x59\x6A\xDD\x73\x59\x71\xDD\x73\x62\x45\xDD\x73\x67\x49\xDD\x73\x67\x70\xDD\x73\x68\x6A\xDD\x73\x69\x6A\xDD\x73\x69\x73\xDD\x73\x6A\x43\xDD\x73\x73\x52\xDF\x63\x49\x44\xDF\x63\x49\x47\xDF\x71\x43\x4A\xDF\x71\x49\x49\xDF\x71\x49\x4A\xDF\x71\x49\x51\xDF\x71\x52\x6A\xDF\x71\x53\x68\xDF\x71\x53\x6A\xDF\x71\x53\x71\xDF\x71\x56\x47\xDF\x72\x41\x43\xDF\x72\x41\x47\xDF\x72\x41\x51\xDF\x72\x41\x59\xDF\x72\x41\x65\xDF\x72\x41\x69\xDF\x72\x41\x72\xDF\x72\x42\x43\xDF\x72\x42\x47\xDF\x72\x42\x51\xDF\x72\x42\x55\xDF\x72\x42\x59\xDF\x72\x42\x65\xDF\x72\x42\x69\xDF\x72\x42\x72\xDF\x72\x43\x43\xDF\x72\x43\x47\xDF\x72\x43\x59\xDF\x72\x44\x43\xDF\x72\x44\x51\xDF\x72\x44\x59\xDF\x72\x44\x69\xDF\x72\x45\x43\xDF\x72\x45\x59\xDF\x72\x45\x65\xDF\x72\x45\x69\xDF\x72\x46\x42\xDF\x72\x46\x44\xDF\x72\x46\x46\xDF\x72\x46\x48\xDF\x72\x46\x4A\xDF\x72\x46\x52"
+# define EXTRA_CLOSING_UTF8_BRACKETS "\x5D\x6E\xBD\xD0\x80\x6A\x80\x52\xB8\x67\x48\xBA\x68\x6A\xBA\x68\x71\xBC\x63\x70\xCA\x41\x68\xCA\x41\x67\xCA\x41\x71\xCA\x41\x70\xCA\x42\x59\xCA\x42\x62\xCA\x42\x63\xCA\x42\x69\xCA\x42\x68\xCA\x43\x47\xCA\x43\x53\xCA\x44\x72\xCA\x45\x55\xCA\x53\x57\xCA\x53\x69\xCA\x53\x70\xCA\x53\x72\xCA\x54\x43\xCA\x54\x45\xCA\x54\x4A\xCA\x54\x52\xCA\x54\x57\xCA\x54\x59\xCA\x54\x70\xCA\x54\x71\xCA\x55\x48\xCA\x55\x54\xCA\x55\x57\xCA\x55\x69\xCA\x55\x70\xCA\x56\x41\xCA\x56\x45\xCA\x56\x47\xCC\x68\x57\xCC\x68\x58\xCA\x56\x66\xCA\x56\x69\xCA\x56\x71\xCA\x57\x52\xCA\x57\x53\xCA\x57\x54\xCA\x62\x46\xCA\x62\x48\xCA\x62\x4A\xCA\x62\x52\xCA\x62\x56\xCA\x62\x58\xCA\x62\x62\xCA\x62\x64\xCA\x62\x6A\xCA\x62\x71\xCA\x62\x73\xCA\x63\x42\xCA\x63\x44\xCA\x63\x46\xCA\x63\x48\xCA\x63\x4A\xCA\x63\x52\xCA\x64\x43\xCC\x65\x72\xCC\x66\x45\xCC\x66\x44\xCA\x64\x58\xCA\x65\x58\xCA\x65\x66\xCA\x65\x68\xCA\x65\x71\xCA\x65\x73\xCA\x66\x42\xCA\x66\x48\xCA\x66\x4A\xCA\x66\x69\xCA\x66\x6A\xCA\x66\x70\xCA\x66\x71\xCA\x66\x72\xCA\x67\x4A\xCA\x67\x52\xCA\x68\x52\xCA\x68\x51\xCA\x69\x48\xCA\x73\x51\xCA\x73\x55\xCB\x57\x69\xCB\x57\x70\xCB\x63\x73\xCB\x6A\x4A\xCB\x6A\x52\xCB\x6A\x54\xCB\x6A\x56\xCB\x6A\x58\xCB\x6A\x62\xCB\x6A\x64\xCB\x72\x45\xCB\x72\x47\xCB\x72\x4A\xCB\x72\x71\xCB\x73\x48\xCB\x73\x4A\xCB\x73\x52\xCB\x73\x54\xCB\x73\x56\xCC\x68\x59\xCB\x73\x64\xCB\x73\x67\xCB\x73\x6A\xCB\x73\x71\xCC\x68\x62\xCC\x68\x63\xCC\x68\x64\xCC\x49\x43\xCC\x68\x65\xCC\x49\x47\xCC\x49\x53\xCC\x49\x55\xCC\x68\x66\xCC\x68\x67\xCC\x68\x68\xCC\x68\x69\xCC\x68\x6A\xCC\x68\x70\xCC\x68\x71\xCC\x49\x68\xCC\x49\x6A\xCC\x49\x71\xCC\x49\x73\xCC\x68\x73\xCC\x4A\x65\xCC\x51\x47\xCC\x68\x72\xCC\x51\x59\xCC\x51\x65\xCC\x51\x69\xCC\x51\x72\xCC\x52\x43\xCC\x52\x51\xCC\x52\x52\xCC\x69\x41\xCC\x69\x42\xCC\x69\x52\xCC\x69\x43\xCC\x52\x6A\xCC\x53\x45\xCC\x53\x47\xCC\x53\x49\xCC\x53\x51\xCC\x53\x53\xCC\x53\x57\xCC\x53\x55\xCC\x53\x59\xCC\x53\x63\xCC\x53\x65\xCC\x53\x67\xCC\x54\x4A\xCC\x54\x52\xCC\x54\x63\xCC\x55\x42\xCC\x55\x68\xCC\x55\x6A\xCC\x56\x71\xCC\x62\x69\xCC\x62\x70\xCC\x62\x72\xCC\x63\x41\xCC\x63\x43\xCC\x63\x45\xCC\x63\x47\xCC\x63\x49\xCC\x63\x51\xCC\x63\x55\xCC\x63\x65\xCC\x63\x67\xCC\x63\x69\xCC\x63\x70\xCC\x63\x72\xCC\x64\x41\xCC\x64\x43\xCC\x64\x48\xCC\x64\x4A\xCC\x64\x52\xCC\x64\x54\xCC\x64\x57\xCC\x64\x59\xCC\x64\x63\xCC\x64\x65\xCC\x64\x67\xCC\x64\x69\xCC\x64\x70\xCC\x64\x72\xCC\x65\x41\xCC\x65\x43\xCC\x65\x45\xCC\x65\x47\xCC\x65\x49\xCC\x65\x51\xCC\x65\x53\xCC\x65\x57\xCC\x65\x59\xCC\x65\x65\xCA\x64\x52\xCC\x66\x67\xCC\x66\x69\xCC\x69\x46\xCC\x69\x4A\xCC\x69\x51\xCC\x52\x62\xCC\x6A\x41\xCC\x6A\x51\xCC\x6A\x57\xCC\x6A\x69\xCC\x70\x45\xCC\x70\x49\xCC\x67\x46\xCC\x70\x67\xCC\x70\x70\xCC\x71\x41\xCC\x71\x43\xCC\x71\x49\xCC\x71\x51\xCC\x71\x57\xCC\x71\x59\xCC\x73\x53\xCD\x57\x44\xCD\x57\x43\xCD\x57\x46\xCD\x57\x45\xCD\x57\x51\xCD\x57\x4A\xCD\x57\x54\xCD\x57\x53\xCD\x57\x57\xCD\x57\x71\xCD\x57\x70\xCD\x58\x42\xCD\x58\x41\xCD\x58\x44\xCD\x58\x46\xCD\x58\x48\xCD\x58\x4A\xCD\x58\x66\xCA\x41\x72\xCD\x59\x65\xCD\x59\x67\xCD\x59\x69\xCD\x59\x70\xCE\x41\x4A\xCE\x41\x52\xCE\x41\x54\xCE\x41\x56\xCE\x41\x58\xCE\x41\x64\xCE\x41\x66\xCE\x41\x68\xCE\x41\x6A\xCE\x41\x72\xDD\x51\x55\x43\xDD\x73\x4A\x73\xDD\x73\x59\x69\xDD\x73\x59\x70\xDD\x73\x59\x72\xDD\x73\x62\x46\xDD\x73\x67\x4A\xDD\x73\x67\x72\xDD\x73\x68\x71\xDD\x73\x69\x71\xDD\x73\x6A\x41\xDD\x73\x6A\x44\xDD\x73\x73\x4A\xDF\x63\x49\x43\xDF\x63\x49\x48\xDF\x71\x43\x49\xDF\x71\x52\x49\xDF\x71\x52\x4A\xDF\x71\x52\x51\xDF\x71\x52\x71\xDF\x71\x53\x67\xDF\x71\x53\x69\xDF\x71\x53\x70\xDF\x71\x56\x48\xDF\x72\x41\x41\xDF\x72\x41\x45\xDF\x72\x41\x49\xDF\x72\x41\x57\xDF\x72\x41\x63\xDF\x72\x41\x67\xDF\x72\x41\x70\xDF\x72\x42\x41\xDF\x72\x42\x45\xDF\x72\x42\x49\xDF\x72\x42\x53\xDF\x72\x42\x57\xDF\x72\x42\x63\xDF\x72\x42\x67\xDF\x72\x42\x70\xDF\x72\x43\x41\xDF\x72\x43\x45\xDF\x72\x43\x57\xDF\x72\x44\x41\xDF\x72\x44\x49\xDF\x72\x44\x57\xDF\x72\x44\x67\xDF\x72\x45\x41\xDF\x72\x45\x57\xDF\x72\x45\x63\xDF\x72\x45\x67\xDF\x72\x46\x41\xDF\x72\x46\x43\xDF\x72\x46\x47\xDF\x72\x46\x45\xDF\x72\x46\x49\xDF\x72\x46\x51"
+
+ /* And not in UTF-8 */
+# define EXTRA_OPENING_NON_UTF8_BRACKETS "\x4D\x4C\xAD\xC0\x8A\x8B"
+# define EXTRA_CLOSING_NON_UTF8_BRACKETS "\x5D\x6E\xBD\xD0\x8B\x8A"
+
+ /* And what's deprecated */
+# define DEPRECATED_OPENING_UTF8_BRACKETS "\x80\x52\x80\x6A\x80\x6A\xB8\x67\x47\xB8\x67\x48\xBA\x68\x69\xBA\x68\x6A\xBA\x68\x70\xBA\x68\x71\xBC\x63\x6A\xBC\x63\x70\xCA\x41\x67\xCA\x41\x68\xCA\x41\x68\xCA\x41\x70\xCA\x41\x71\xCA\x41\x71\xCA\x42\x64\xCA\x42\x59\xCA\x42\x65\xCA\x42\x62\xCA\x42\x66\xCA\x42\x63\xCA\x42\x68\xCA\x42\x69\xCA\x42\x69\xCA\x43\x46\xCA\x43\x47\xCA\x43\x54\xCA\x43\x53\xCA\x44\x71\xCA\x44\x72\xCA\x45\x54\xCA\x45\x55\xCA\x53\x59\xCA\x53\x57\xCA\x53\x6A\xCA\x53\x69\xCA\x53\x71\xCA\x53\x70\xCA\x54\x41\xCA\x53\x72\xCA\x54\x44\xCA\x54\x43\xCA\x54\x47\xCA\x54\x45\xCA\x54\x51\xCA\x54\x4A\xCA\x54\x53\xCA\x54\x52\xCA\x54\x58\xCA\x54\x57\xCA\x54\x62\xCA\x54\x59\xCA\x55\x41\xCA\x54\x70\xCA\x55\x42\xCA\x54\x71\xCA\x55\x4A\xCA\x55\x48\xCA\x55\x56\xCA\x55\x54\xCA\x55\x59\xCA\x55\x57\xCA\x55\x6A\xCA\x55\x69\xCA\x55\x71\xCA\x55\x70\xCA\x56\x43\xCA\x56\x41\xCA\x56\x46\xCA\x56\x45\xCA\x56\x49\xCA\x56\x47\xCA\x56\x63\xCC\x68\x57\xCA\x56\x65\xCC\x68\x58\xCA\x56\x67\xCA\x56\x66\xCA\x56\x6A\xCA\x56\x69\xCA\x56\x72\xCA\x56\x71\xCA\x57\x49\xCA\x57\x52\xCA\x57\x4A\xCA\x57\x53\xCA\x57\x51\xCA\x57\x54\xCA\x62\x45\xCA\x62\x46\xCA\x62\x47\xCA\x62\x48\xCA\x62\x49\xCA\x62\x4A\xCA\x62\x51\xCA\x62\x52\xCA\x62\x55\xCA\x62\x56\xCA\x62\x57\xCA\x62\x58\xCA\x62\x59\xCA\x62\x62\xCA\x62\x63\xCA\x62\x64\xCA\x62\x69\xCA\x62\x6A\xCA\x62\x70\xCA\x62\x71\xCA\x62\x72\xCA\x62\x73\xCA\x63\x41\xCA\x63\x42\xCA\x63\x43\xCA\x63\x44\xCA\x63\x45\xCA\x63\x46\xCA\x63\x47\xCA\x63\x48\xCA\x63\x49\xCA\x63\x4A\xCA\x63\x51\xCA\x63\x52\xCA\x64\x44\xCA\x64\x43\xCA\x64\x47\xCC\x65\x72\xCA\x64\x49\xCC\x66\x45\xCA\x64\x4A\xCC\x66\x44\xCA\x64\x57\xCA\x64\x58\xCA\x65\x57\xCA\x65\x58\xCA\x65\x65\xCA\x65\x66\xCA\x65\x67\xCA\x65\x68\xCA\x65\x70\xCA\x65\x71\xCA\x65\x72\xCA\x65\x73\xCA\x66\x41\xCA\x66\x42\xCA\x66\x47\xCA\x66\x48\xCA\x66\x49\xCA\x66\x4A\xCA\x66\x59\xCA\x66\x69\xCA\x66\x62\xCA\x66\x6A\xCA\x66\x63\xCA\x66\x70\xCA\x66\x65\xCA\x66\x71\xCA\x66\x66\xCA\x66\x72\xCA\x67\x49\xCA\x67\x4A\xCA\x67\x51\xCA\x67\x52\xCA\x68\x47\xCA\x68\x52\xCA\x68\x4A\xCA\x68\x51\xCA\x69\x49\xCA\x69\x48\xCA\x73\x4A\xCA\x73\x51\xCA\x73\x54\xCA\x73\x55\xCB\x57\x6A\xCB\x57\x69\xCB\x57\x72\xCB\x57\x70\xCB\x63\x72\xCB\x63\x73\xCB\x6A\x49\xCB\x6A\x4A\xCB\x6A\x51\xCB\x6A\x52\xCB\x6A\x53\xCB\x6A\x54\xCB\x6A\x55\xCB\x6A\x56\xCB\x6A\x57\xCB\x6A\x58\xCB\x6A\x59\xCB\x6A\x62\xCB\x6A\x63\xCB\x6A\x64\xCB\x72\x44\xCB\x72\x45\xCB\x72\x46\xCB\x72\x47\xCB\x72\x49\xCB\x72\x4A\xCB\x72\x72\xCB\x72\x71\xCB\x73\x47\xCB\x73\x48\xCB\x73\x49\xCB\x73\x4A\xCB\x73\x51\xCB\x73\x52\xCB\x73\x53\xCB\x73\x54\xCB\x73\x55\xCB\x73\x56\xCB\x73\x63\xCC\x68\x59\xCB\x73\x65\xCB\x73\x64\xCB\x73\x68\xCB\x73\x67\xCB\x73\x70\xCB\x73\x6A\xCB\x73\x72\xCB\x73\x71\xCB\x73\x73\xCC\x68\x62\xCC\x49\x41\xCC\x68\x63\xCC\x49\x42\xCC\x68\x64\xCC\x49\x44\xCC\x49\x43\xCC\x49\x46\xCC\x68\x65\xCC\x49\x48\xCC\x49\x47\xCC\x49\x54\xCC\x49\x53\xCC\x49\x56\xCC\x49\x55\xCC\x49\x57\xCC\x68\x66\xCC\x49\x58\xCC\x68\x67\xCC\x49\x63\xCC\x68\x68\xCC\x49\x64\xCC\x68\x69\xCC\x49\x65\xCC\x68\x6A\xCC\x49\x66\xCC\x68\x70\xCC\x49\x67\xCC\x68\x71\xCC\x49\x69\xCC\x49\x68\xCC\x49\x70\xCC\x49\x6A\xCC\x49\x72\xCC\x49\x71\xCC\x4A\x41\xCC\x49\x73\xCC\x4A\x62\xCC\x68\x73\xCC\x4A\x66\xCC\x4A\x65\xCC\x51\x46\xCC\x51\x47\xCC\x51\x48\xCC\x68\x72\xCC\x51\x62\xCC\x51\x59\xCC\x51\x66\xCC\x51\x65\xCC\x51\x6A\xCC\x51\x69\xCC\x51\x73\xCC\x51\x72\xCC\x52\x45\xCC\x52\x43\xCC\x52\x53\xCC\x52\x51\xCC\x52\x54\xCC\x52\x52\xCC\x52\x58\xCC\x69\x41\xCC\x52\x59\xCC\x69\x42\xCC\x52\x63\xCC\x69\x52\xCC\x52\x64\xCC\x69\x43\xCC\x52\x68\xCC\x52\x6A\xCC\x53\x44\xCC\x53\x45\xCC\x53\x46\xCC\x53\x47\xCC\x53\x48\xCC\x53\x49\xCC\x53\x4A\xCC\x53\x51\xCC\x53\x52\xCC\x53\x53\xCC\x53\x54\xCC\x53\x57\xCC\x53\x56\xCC\x53\x55\xCC\x53\x58\xCC\x53\x59\xCC\x53\x62\xCC\x53\x63\xCC\x53\x64\xCC\x53\x65\xCC\x53\x66\xCC\x53\x67\xCC\x54\x49\xCC\x54\x4A\xCC\x54\x51\xCC\x54\x52\xCC\x54\x62\xCC\x54\x63\xCC\x55\x41\xCC\x55\x42\xCC\x55\x67\xCC\x55\x68\xCC\x55\x69\xCC\x55\x6A\xCC\x56\x70\xCC\x56\x71\xCC\x62\x68\xCC\x62\x69\xCC\x62\x6A\xCC\x62\x70\xCC\x62\x71\xCC\x62\x72\xCC\x62\x73\xCC\x63\x41\xCC\x63\x42\xCC\x63\x43\xCC\x63\x44\xCC\x63\x45\xCC\x63\x46\xCC\x63\x47\xCC\x63\x48\xCC\x63\x49\xCC\x63\x4A\xCC\x63\x51\xCC\x63\x54\xCC\x63\x55\xCC\x63\x64\xCC\x63\x65\xCC\x63\x66\xCC\x63\x67\xCC\x63\x68\xCC\x63\x69\xCC\x63\x6A\xCC\x63\x70\xCC\x63\x71\xCC\x63\x72\xCC\x63\x73\xCC\x64\x41\xCC\x64\x42\xCC\x64\x43\xCC\x64\x47\xCC\x64\x48\xCC\x64\x49\xCC\x64\x4A\xCC\x64\x51\xCC\x64\x52\xCC\x64\x53\xCC\x64\x54\xCC\x64\x56\xCC\x64\x57\xCC\x64\x58\xCC\x64\x59\xCC\x64\x62\xCC\x64\x63\xCC\x64\x64\xCC\x64\x65\xCC\x64\x66\xCC\x64\x67\xCC\x64\x68\xCC\x64\x69\xCC\x64\x6A\xCC\x64\x70\xCC\x64\x71\xCC\x64\x72\xCC\x64\x73\xCC\x65\x41\xCC\x65\x42\xCC\x65\x43\xCC\x65\x44\xCC\x65\x45\xCC\x65\x46\xCC\x65\x47\xCC\x65\x48\xCC\x65\x49\xCC\x65\x4A\xCC\x65\x51\xCC\x65\x52\xCC\x65\x53\xCC\x65\x56\xCC\x65\x57\xCC\x65\x58\xCC\x65\x59\xCC\x65\x64\xCC\x65\x65\xCC\x66\x46\xCA\x64\x52\xCC\x66\x66\xCC\x66\x67\xCC\x66\x68\xCC\x66\x69\xCC\x69\x47\xCC\x69\x46\xCC\x69\x48\xCC\x69\x4A\xCC\x69\x49\xCC\x69\x51\xCC\x69\x53\xCC\x52\x62\xCC\x6A\x43\xCC\x6A\x41\xCC\x6A\x53\xCC\x6A\x51\xCC\x6A\x59\xCC\x6A\x57\xCC\x6A\x70\xCC\x6A\x69\xCC\x70\x47\xCC\x70\x45\xCC\x70\x51\xCC\x70\x49\xCC\x70\x64\xCC\x67\x46\xCC\x70\x69\xCC\x70\x67\xCC\x70\x72\xCC\x70\x70\xCC\x71\x42\xCC\x71\x41\xCC\x71\x44\xCC\x71\x43\xCC\x71\x4A\xCC\x71\x49\xCC\x71\x52\xCC\x71\x51\xCC\x71\x58\xCC\x71\x57\xCC\x71\x62\xCC\x71\x59\xCC\x73\x55\xCC\x73\x53\xCD\x57\x43\xCD\x57\x44\xCD\x57\x44\xCD\x57\x45\xCD\x57\x46\xCD\x57\x46\xCD\x57\x4A\xCD\x57\x51\xCD\x57\x51\xCD\x57\x53\xCD\x57\x54\xCD\x57\x54\xCD\x57\x58\xCD\x57\x57\xCD\x57\x70\xCD\x57\x71\xCD\x57\x71\xCD\x58\x41\xCD\x58\x42\xCD\x58\x42\xCD\x58\x43\xCD\x58\x44\xCD\x58\x45\xCD\x58\x46\xCD\x58\x47\xCD\x58\x48\xCD\x58\x49\xCD\x58\x4A\xCD\x58\x65\xCD\x58\x66\xCD\x59\x43\xCA\x41\x72\xCD\x59\x64\xCD\x59\x65\xCD\x59\x66\xCD\x59\x67\xCD\x59\x68\xCD\x59\x69\xCD\x59\x6A\xCD\x59\x70\xCE\x41\x49\xCE\x41\x4A\xCE\x41\x51\xCE\x41\x52\xCE\x41\x53\xCE\x41\x54\xCE\x41\x55\xCE\x41\x56\xCE\x41\x57\xCE\x41\x58\xCE\x41\x63\xCE\x41\x64\xCE\x41\x65\xCE\x41\x66\xCE\x41\x67\xCE\x41\x68\xCE\x41\x69\xCE\x41\x6A\xCE\x41\x71\xCE\x41\x72\xDD\x51\x55\x42\xDD\x51\x55\x43\xDD\x73\x4A\x72\xDD\x73\x4A\x73\xDD\x73\x59\x68\xDD\x73\x59\x69\xDD\x73\x59\x6A\xDD\x73\x59\x70\xDD\x73\x59\x71\xDD\x73\x59\x72\xDD\x73\x62\x45\xDD\x73\x62\x46\xDD\x73\x67\x49\xDD\x73\x67\x4A\xDD\x73\x67\x70\xDD\x73\x67\x72\xDD\x73\x68\x6A\xDD\x73\x68\x71\xDD\x73\x69\x6A\xDD\x73\x69\x71\xDD\x73\x69\x73\xDD\x73\x6A\x41\xDD\x73\x6A\x43\xDD\x73\x6A\x44\xDD\x73\x73\x52\xDD\x73\x73\x4A\xDF\x63\x49\x44\xDF\x63\x49\x43\xDF\x63\x49\x47\xDF\x63\x49\x48\xDF\x71\x43\x4A\xDF\x71\x43\x49\xDF\x71\x49\x49\xDF\x71\x52\x49\xDF\x71\x49\x4A\xDF\x71\x52\x4A\xDF\x71\x49\x51\xDF\x71\x52\x51\xDF\x71\x52\x6A\xDF\x71\x52\x71\xDF\x71\x53\x68\xDF\x71\x53\x67\xDF\x71\x53\x6A\xDF\x71\x53\x69\xDF\x71\x53\x71\xDF\x71\x53\x70\xDF\x71\x56\x47\xDF\x71\x56\x48\xDF\x72\x41\x43\xDF\x72\x41\x41\xDF\x72\x41\x47\xDF\x72\x41\x45\xDF\x72\x41\x51\xDF\x72\x41\x49\xDF\x72\x41\x59\xDF\x72\x41\x57\xDF\x72\x41\x65\xDF\x72\x41\x63\xDF\x72\x41\x69\xDF\x72\x41\x67\xDF\x72\x41\x72\xDF\x72\x41\x70\xDF\x72\x42\x43\xDF\x72\x42\x41\xDF\x72\x42\x47\xDF\x72\x42\x45\xDF\x72\x42\x51\xDF\x72\x42\x49\xDF\x72\x42\x55\xDF\x72\x42\x53\xDF\x72\x42\x59\xDF\x72\x42\x57\xDF\x72\x42\x65\xDF\x72\x42\x63\xDF\x72\x42\x69\xDF\x72\x42\x67\xDF\x72\x42\x72\xDF\x72\x42\x70\xDF\x72\x43\x43\xDF\x72\x43\x41\xDF\x72\x43\x47\xDF\x72\x43\x45\xDF\x72\x43\x59\xDF\x72\x43\x57\xDF\x72\x44\x43\xDF\x72\x44\x41\xDF\x72\x44\x51\xDF\x72\x44\x49\xDF\x72\x44\x59\xDF\x72\x44\x57\xDF\x72\x44\x69\xDF\x72\x44\x67\xDF\x72\x45\x43\xDF\x72\x45\x41\xDF\x72\x45\x59\xDF\x72\x45\x57\xDF\x72\x45\x65\xDF\x72\x45\x63\xDF\x72\x45\x69\xDF\x72\x45\x67\xDF\x72\x46\x42\xDF\x72\x46\x41\xDF\x72\x46\x44\xDF\x72\x46\x43\xDF\x72\x46\x46\xDF\x72\x46\x47\xDF\x72\x46\x48\xDF\x72\x46\x45\xDF\x72\x46\x4A\xDF\x72\x46\x49\xDF\x72\x46\x52\xDF\x72\x46\x51"
+# define DEPRECATED_OPENING_NON_UTF8_BRACKETS "\x8A\x8B"
+# endif
+
+# ifdef PERL_IN_REGCOMP_ANY
+# define MAX_PRINT_A 0xF9 /* The max code point that isPRINT_A */
+# endif
#endif /* EBCDIC 1047 */
#if 'A' == 193 /* EBCDIC 037 */ \
@@ -183,14 +211,28 @@ bytes.
# define MICRO_SIGN_NATIVE 0xA0 /* U+00B5 */
# define MICRO_SIGN_UTF8 "\x78\x63" /* U+00B5 */
-# ifdef PERL_IN_REGCOMP_C
-# define MAX_PRINT_A 0xF9 /* The max code point that isPRINT_A */
-# endif
+# ifdef PERL_IN_TOKE_C
+ /* Paired characters for quote-like operators, in UTF-8 */
+# define EXTRA_OPENING_UTF8_BRACKETS "\x4D\x4C\xBA\xC0\x78\x52\x78\x69\xB7\x66\x47\xB9\x67\x68\xB9\x67\x6A\xBD\x62\x69\xCA\x41\x66\xCA\x41\x67\xCA\x41\x6A\xCA\x41\x70\xCA\x42\x63\xCA\x42\x64\xCA\x42\x65\xCA\x42\x67\xCA\x42\x68\xCA\x43\x46\xCA\x43\x54\xCA\x44\x70\xCA\x45\x54\xCA\x53\x59\xCA\x53\x69\xCA\x53\x70\xCA\x54\x41\xCA\x54\x44\xCA\x54\x47\xCA\x54\x51\xCA\x54\x53\xCA\x54\x58\xCA\x54\x5F\xCA\x55\x41\xCA\x55\x42\xCA\x55\x4A\xCA\x55\x56\xCA\x55\x59\xCA\x55\x69\xCA\x55\x70\xCA\x56\x43\xCA\x56\x46\xCA\x56\x49\xCA\x56\x62\xCA\x56\x64\xCA\x56\x66\xCA\x56\x69\xCA\x56\x71\xCA\x57\x49\xCA\x57\x4A\xCA\x57\x51\xCA\x5F\x45\xCA\x5F\x47\xCA\x5F\x49\xCA\x5F\x51\xCA\x5F\x55\xCA\x5F\x57\xCA\x5F\x59\xCA\x5F\x62\xCA\x5F\x68\xCA\x5F\x6A\xCA\x5F\x71\xCA\x62\x41\xCA\x62\x43\xCA\x62\x45\xCA\x62\x47\xCA\x62\x49\xCA\x62\x51\xCA\x63\x44\xCA\x63\x47\xCA\x63\x49\xCA\x63\x4A\xCA\x63\x57\xCA\x64\x57\xCA\x64\x64\xCA\x64\x66\xCA\x64\x6A\xCA\x64\x71\xCA\x65\x41\xCA\x65\x47\xCA\x65\x49\xCA\x65\x59\xCA\x65\x5F\xCA\x65\x62\xCA\x65\x64\xCA\x65\x65\xCA\x66\x49\xCA\x66\x51\xCA\x67\x47\xCA\x67\x4A\xCA\x68\x49\xCA\x72\x4A\xCA\x72\x54\xCB\x57\x69\xCB\x57\x71\xCB\x62\x71\xCB\x69\x49\xCB\x69\x51\xCB\x69\x53\xCB\x69\x55\xCB\x69\x57\xCB\x69\x59\xCB\x69\x62\xCB\x71\x44\xCB\x71\x46\xCB\x71\x49\xCB\x71\x71\xCB\x72\x47\xCB\x72\x49\xCB\x72\x51\xCB\x72\x53\xCB\x72\x55\xCB\x72\x62\xCB\x72\x64\xCB\x72\x67\xCB\x72\x6A\xCB\x72\x71\xCB\x72\x72\xCC\x49\x41\xCC\x49\x42\xCC\x49\x44\xCC\x49\x46\xCC\x49\x48\xCC\x49\x54\xCC\x49\x56\xCC\x49\x57\xCC\x49\x58\xCC\x49\x62\xCC\x49\x63\xCC\x49\x64\xCC\x49\x65\xCC\x49\x66\xCC\x49\x68\xCC\x49\x6A\xCC\x49\x71\xCC\x4A\x41\xCC\x4A\x5F\xCC\x4A\x65\xCC\x51\x46\xCC\x51\x48\xCC\x51\x5F\xCC\x51\x65\xCC\x51\x69\xCC\x51\x72\xCC\x52\x45\xCC\x52\x53\xCC\x52\x54\xCC\x52\x58\xCC\x52\x59\xCC\x52\x62\xCC\x52\x63\xCC\x52\x67\xCC\x53\x44\xCC\x53\x46\xCC\x53\x48\xCC\x53\x4A\xCC\x53\x52\xCC\x53\x54\xCC\x53\x56\xCC\x53\x58\xCC\x53\x5F\xCC\x53\x63\xCC\x53\x65\xCC\x54\x49\xCC\x54\x51\xCC\x54\x5F\xCC\x55\x41\xCC\x55\x66\xCC\x55\x68\xCC\x56\x6A\xCC\x5F\x67\xCC\x5F\x69\xCC\x5F\x70\xCC\x5F\x72\xCC\x62\x42\xCC\x62\x44\xCC\x62\x46\xCC\x62\x48\xCC\x62\x4A\xCC\x62\x54\xCC\x62\x63\xCC\x62\x65\xCC\x62\x67\xCC\x62\x69\xCC\x62\x70\xCC\x62\x72\xCC\x63\x42\xCC\x63\x47\xCC\x63\x49\xCC\x63\x51\xCC\x63\x53\xCC\x63\x56\xCC\x63\x58\xCC\x63\x5F\xCC\x63\x63\xCC\x63\x65\xCC\x63\x67\xCC\x63\x69\xCC\x63\x70\xCC\x63\x72\xCC\x64\x42\xCC\x64\x44\xCC\x64\x46\xCC\x64\x48\xCC\x64\x4A\xCC\x64\x52\xCC\x64\x56\xCC\x64\x58\xCC\x64\x63\xCC\x65\x46\xCC\x65\x65\xCC\x65\x67\xCC\x68\x47\xCC\x68\x48\xCC\x68\x49\xCC\x68\x53\xCC\x69\x43\xCC\x69\x53\xCC\x69\x59\xCC\x69\x6A\xCC\x6A\x47\xCC\x6A\x51\xCC\x6A\x63\xCC\x6A\x68\xCC\x6A\x71\xCC\x70\x42\xCC\x70\x44\xCC\x70\x4A\xCC\x70\x52\xCC\x70\x58\xCC\x70\x5F\xCC\x72\x55\xCD\x57\x43\xCD\x57\x44\xCD\x57\x45\xCD\x57\x46\xCD\x57\x4A\xCD\x57\x51\xCD\x57\x53\xCD\x57\x54\xCD\x57\x58\xCD\x57\x6A\xCD\x57\x70\xCD\x58\x41\xCD\x58\x42\xCD\x58\x43\xCD\x58\x45\xCD\x58\x47\xCD\x58\x49\xCD\x58\x64\xCD\x59\x43\xCD\x59\x63\xCD\x59\x65\xCD\x59\x67\xCD\x59\x69\xCE\x41\x49\xCE\x41\x51\xCE\x41\x53\xCE\x41\x55\xCE\x41\x57\xCE\x41\x62\xCE\x41\x64\xCE\x41\x66\xCE\x41\x68\xCE\x41\x70\xDD\x51\x55\x42\xDD\x72\x4A\x71\xDD\x72\x59\x67\xDD\x72\x59\x69\xDD\x72\x59\x70\xDD\x72\x5F\x45\xDD\x72\x66\x49\xDD\x72\x66\x6A\xDD\x72\x67\x69\xDD\x72\x68\x69\xDD\x72\x68\x72\xDD\x72\x69\x43\xDD\x72\x72\x52\xDF\x62\x49\x44\xDF\x62\x49\x47\xDF\x70\x43\x4A\xDF\x70\x49\x49\xDF\x70\x49\x4A\xDF\x70\x49\x51\xDF\x70\x52\x69\xDF\x70\x53\x67\xDF\x70\x53\x69\xDF\x70\x53\x70\xDF\x70\x56\x47\xDF\x71\x41\x43\xDF\x71\x41\x47\xDF\x71\x41\x51\xDF\x71\x41\x59\xDF\x71\x41\x64\xDF\x71\x41\x68\xDF\x71\x41\x71\xDF\x71\x42\x43\xDF\x71\x42\x47\xDF\x71\x42\x51\xDF\x71\x42\x55\xDF\x71\x42\x59\xDF\x71\x42\x64\xDF\x71\x42\x68\xDF\x71\x42\x71\xDF\x71\x43\x43\xDF\x71\x43\x47\xDF\x71\x43\x59\xDF\x71\x44\x43\xDF\x71\x44\x51\xDF\x71\x44\x59\xDF\x71\x44\x68\xDF\x71\x45\x43\xDF\x71\x45\x59\xDF\x71\x45\x64\xDF\x71\x45\x68\xDF\x71\x46\x42\xDF\x71\x46\x44\xDF\x71\x46\x46\xDF\x71\x46\x48\xDF\x71\x46\x4A\xDF\x71\x46\x52"
+# define EXTRA_CLOSING_UTF8_BRACKETS "\x5D\x6E\xBB\xD0\x78\x69\x78\x52\xB7\x66\x48\xB9\x67\x69\xB9\x67\x70\xBD\x62\x6A\xCA\x41\x67\xCA\x41\x66\xCA\x41\x70\xCA\x41\x6A\xCA\x42\x59\xCA\x42\x5F\xCA\x42\x62\xCA\x42\x68\xCA\x42\x67\xCA\x43\x47\xCA\x43\x53\xCA\x44\x71\xCA\x45\x55\xCA\x53\x57\xCA\x53\x68\xCA\x53\x6A\xCA\x53\x71\xCA\x54\x43\xCA\x54\x45\xCA\x54\x4A\xCA\x54\x52\xCA\x54\x57\xCA\x54\x59\xCA\x54\x6A\xCA\x54\x70\xCA\x55\x48\xCA\x55\x54\xCA\x55\x57\xCA\x55\x68\xCA\x55\x6A\xCA\x56\x41\xCA\x56\x45\xCA\x56\x47\xCC\x67\x57\xCC\x67\x58\xCA\x56\x65\xCA\x56\x68\xCA\x56\x70\xCA\x57\x52\xCA\x57\x53\xCA\x57\x54\xCA\x5F\x46\xCA\x5F\x48\xCA\x5F\x4A\xCA\x5F\x52\xCA\x5F\x56\xCA\x5F\x58\xCA\x5F\x5F\xCA\x5F\x63\xCA\x5F\x69\xCA\x5F\x70\xCA\x5F\x72\xCA\x62\x42\xCA\x62\x44\xCA\x62\x46\xCA\x62\x48\xCA\x62\x4A\xCA\x62\x52\xCA\x63\x43\xCC\x64\x71\xCC\x65\x45\xCC\x65\x44\xCA\x63\x58\xCA\x64\x58\xCA\x64\x65\xCA\x64\x67\xCA\x64\x70\xCA\x64\x72\xCA\x65\x42\xCA\x65\x48\xCA\x65\x4A\xCA\x65\x68\xCA\x65\x69\xCA\x65\x6A\xCA\x65\x70\xCA\x65\x71\xCA\x66\x4A\xCA\x66\x52\xCA\x67\x52\xCA\x67\x51\xCA\x68\x48\xCA\x72\x51\xCA\x72\x55\xCB\x57\x68\xCB\x57\x6A\xCB\x62\x72\xCB\x69\x4A\xCB\x69\x52\xCB\x69\x54\xCB\x69\x56\xCB\x69\x58\xCB\x69\x5F\xCB\x69\x63\xCB\x71\x45\xCB\x71\x47\xCB\x71\x4A\xCB\x71\x70\xCB\x72\x48\xCB\x72\x4A\xCB\x72\x52\xCB\x72\x54\xCB\x72\x56\xCC\x67\x59\xCB\x72\x63\xCB\x72\x66\xCB\x72\x69\xCB\x72\x70\xCC\x67\x5F\xCC\x67\x62\xCC\x67\x63\xCC\x49\x43\xCC\x67\x64\xCC\x49\x47\xCC\x49\x53\xCC\x49\x55\xCC\x67\x65\xCC\x67\x66\xCC\x67\x67\xCC\x67\x68\xCC\x67\x69\xCC\x67\x6A\xCC\x67\x70\xCC\x49\x67\xCC\x49\x69\xCC\x49\x70\xCC\x49\x72\xCC\x67\x72\xCC\x4A\x64\xCC\x51\x47\xCC\x67\x71\xCC\x51\x59\xCC\x51\x64\xCC\x51\x68\xCC\x51\x71\xCC\x52\x43\xCC\x52\x51\xCC\x52\x52\xCC\x68\x41\xCC\x68\x42\xCC\x68\x52\xCC\x68\x43\xCC\x52\x69\xCC\x53\x45\xCC\x53\x47\xCC\x53\x49\xCC\x53\x51\xCC\x53\x53\xCC\x53\x57\xCC\x53\x55\xCC\x53\x59\xCC\x53\x62\xCC\x53\x64\xCC\x53\x66\xCC\x54\x4A\xCC\x54\x52\xCC\x54\x62\xCC\x55\x42\xCC\x55\x67\xCC\x55\x69\xCC\x56\x70\xCC\x5F\x68\xCC\x5F\x6A\xCC\x5F\x71\xCC\x62\x41\xCC\x62\x43\xCC\x62\x45\xCC\x62\x47\xCC\x62\x49\xCC\x62\x51\xCC\x62\x55\xCC\x62\x64\xCC\x62\x66\xCC\x62\x68\xCC\x62\x6A\xCC\x62\x71\xCC\x63\x41\xCC\x63\x43\xCC\x63\x48\xCC\x63\x4A\xCC\x63\x52\xCC\x63\x54\xCC\x63\x57\xCC\x63\x59\xCC\x63\x62\xCC\x63\x64\xCC\x63\x66\xCC\x63\x68\xCC\x63\x6A\xCC\x63\x71\xCC\x64\x41\xCC\x64\x43\xCC\x64\x45\xCC\x64\x47\xCC\x64\x49\xCC\x64\x51\xCC\x64\x53\xCC\x64\x57\xCC\x64\x59\xCC\x64\x64\xCA\x63\x52\xCC\x65\x66\xCC\x65\x68\xCC\x68\x46\xCC\x68\x4A\xCC\x68\x51\xCC\x52\x5F\xCC\x69\x41\xCC\x69\x51\xCC\x69\x57\xCC\x69\x68\xCC\x6A\x45\xCC\x6A\x49\xCC\x66\x46\xCC\x6A\x66\xCC\x6A\x6A\xCC\x70\x41\xCC\x70\x43\xCC\x70\x49\xCC\x70\x51\xCC\x70\x57\xCC\x70\x59\xCC\x72\x53\xCD\x57\x44\xCD\x57\x43\xCD\x57\x46\xCD\x57\x45\xCD\x57\x51\xCD\x57\x4A\xCD\x57\x54\xCD\x57\x53\xCD\x57\x57\xCD\x57\x70\xCD\x57\x6A\xCD\x58\x42\xCD\x58\x41\xCD\x58\x44\xCD\x58\x46\xCD\x58\x48\xCD\x58\x4A\xCD\x58\x65\xCA\x41\x71\xCD\x59\x64\xCD\x59\x66\xCD\x59\x68\xCD\x59\x6A\xCE\x41\x4A\xCE\x41\x52\xCE\x41\x54\xCE\x41\x56\xCE\x41\x58\xCE\x41\x63\xCE\x41\x65\xCE\x41\x67\xCE\x41\x69\xCE\x41\x71\xDD\x51\x55\x43\xDD\x72\x4A\x72\xDD\x72\x59\x68\xDD\x72\x59\x6A\xDD\x72\x59\x71\xDD\x72\x5F\x46\xDD\x72\x66\x4A\xDD\x72\x66\x71\xDD\x72\x67\x70\xDD\x72\x68\x70\xDD\x72\x69\x41\xDD\x72\x69\x44\xDD\x72\x72\x4A\xDF\x62\x49\x43\xDF\x62\x49\x48\xDF\x70\x43\x49\xDF\x70\x52\x49\xDF\x70\x52\x4A\xDF\x70\x52\x51\xDF\x70\x52\x70\xDF\x70\x53\x66\xDF\x70\x53\x68\xDF\x70\x53\x6A\xDF\x70\x56\x48\xDF\x71\x41\x41\xDF\x71\x41\x45\xDF\x71\x41\x49\xDF\x71\x41\x57\xDF\x71\x41\x62\xDF\x71\x41\x66\xDF\x71\x41\x6A\xDF\x71\x42\x41\xDF\x71\x42\x45\xDF\x71\x42\x49\xDF\x71\x42\x53\xDF\x71\x42\x57\xDF\x71\x42\x62\xDF\x71\x42\x66\xDF\x71\x42\x6A\xDF\x71\x43\x41\xDF\x71\x43\x45\xDF\x71\x43\x57\xDF\x71\x44\x41\xDF\x71\x44\x49\xDF\x71\x44\x57\xDF\x71\x44\x66\xDF\x71\x45\x41\xDF\x71\x45\x57\xDF\x71\x45\x62\xDF\x71\x45\x66\xDF\x71\x46\x41\xDF\x71\x46\x43\xDF\x71\x46\x47\xDF\x71\x46\x45\xDF\x71\x46\x49\xDF\x71\x46\x51"
+
+ /* And not in UTF-8 */
+# define EXTRA_OPENING_NON_UTF8_BRACKETS "\x4D\x4C\xBA\xC0\x8A\x8B"
+# define EXTRA_CLOSING_NON_UTF8_BRACKETS "\x5D\x6E\xBB\xD0\x8B\x8A"
+
+ /* And what's deprecated */
+# define DEPRECATED_OPENING_UTF8_BRACKETS "\x78\x52\x78\x69\x78\x69\xB7\x66\x47\xB7\x66\x48\xB9\x67\x68\xB9\x67\x69\xB9\x67\x6A\xB9\x67\x70\xBD\x62\x69\xBD\x62\x6A\xCA\x41\x66\xCA\x41\x67\xCA\x41\x67\xCA\x41\x6A\xCA\x41\x70\xCA\x41\x70\xCA\x42\x63\xCA\x42\x59\xCA\x42\x64\xCA\x42\x5F\xCA\x42\x65\xCA\x42\x62\xCA\x42\x67\xCA\x42\x68\xCA\x42\x68\xCA\x43\x46\xCA\x43\x47\xCA\x43\x54\xCA\x43\x53\xCA\x44\x70\xCA\x44\x71\xCA\x45\x54\xCA\x45\x55\xCA\x53\x59\xCA\x53\x57\xCA\x53\x69\xCA\x53\x68\xCA\x53\x70\xCA\x53\x6A\xCA\x54\x41\xCA\x53\x71\xCA\x54\x44\xCA\x54\x43\xCA\x54\x47\xCA\x54\x45\xCA\x54\x51\xCA\x54\x4A\xCA\x54\x53\xCA\x54\x52\xCA\x54\x58\xCA\x54\x57\xCA\x54\x5F\xCA\x54\x59\xCA\x55\x41\xCA\x54\x6A\xCA\x55\x42\xCA\x54\x70\xCA\x55\x4A\xCA\x55\x48\xCA\x55\x56\xCA\x55\x54\xCA\x55\x59\xCA\x55\x57\xCA\x55\x69\xCA\x55\x68\xCA\x55\x70\xCA\x55\x6A\xCA\x56\x43\xCA\x56\x41\xCA\x56\x46\xCA\x56\x45\xCA\x56\x49\xCA\x56\x47\xCA\x56\x62\xCC\x67\x57\xCA\x56\x64\xCC\x67\x58\xCA\x56\x66\xCA\x56\x65\xCA\x56\x69\xCA\x56\x68\xCA\x56\x71\xCA\x56\x70\xCA\x57\x49\xCA\x57\x52\xCA\x57\x4A\xCA\x57\x53\xCA\x57\x51\xCA\x57\x54\xCA\x5F\x45\xCA\x5F\x46\xCA\x5F\x47\xCA\x5F\x48\xCA\x5F\x49\xCA\x5F\x4A\xCA\x5F\x51\xCA\x5F\x52\xCA\x5F\x55\xCA\x5F\x56\xCA\x5F\x57\xCA\x5F\x58\xCA\x5F\x59\xCA\x5F\x5F\xCA\x5F\x62\xCA\x5F\x63\xCA\x5F\x68\xCA\x5F\x69\xCA\x5F\x6A\xCA\x5F\x70\xCA\x5F\x71\xCA\x5F\x72\xCA\x62\x41\xCA\x62\x42\xCA\x62\x43\xCA\x62\x44\xCA\x62\x45\xCA\x62\x46\xCA\x62\x47\xCA\x62\x48\xCA\x62\x49\xCA\x62\x4A\xCA\x62\x51\xCA\x62\x52\xCA\x63\x44\xCA\x63\x43\xCA\x63\x47\xCC\x64\x71\xCA\x63\x49\xCC\x65\x45\xCA\x63\x4A\xCC\x65\x44\xCA\x63\x57\xCA\x63\x58\xCA\x64\x57\xCA\x64\x58\xCA\x64\x64\xCA\x64\x65\xCA\x64\x66\xCA\x64\x67\xCA\x64\x6A\xCA\x64\x70\xCA\x64\x71\xCA\x64\x72\xCA\x65\x41\xCA\x65\x42\xCA\x65\x47\xCA\x65\x48\xCA\x65\x49\xCA\x65\x4A\xCA\x65\x59\xCA\x65\x68\xCA\x65\x5F\xCA\x65\x69\xCA\x65\x62\xCA\x65\x6A\xCA\x65\x64\xCA\x65\x70\xCA\x65\x65\xCA\x65\x71\xCA\x66\x49\xCA\x66\x4A\xCA\x66\x51\xCA\x66\x52\xCA\x67\x47\xCA\x67\x52\xCA\x67\x4A\xCA\x67\x51\xCA\x68\x49\xCA\x68\x48\xCA\x72\x4A\xCA\x72\x51\xCA\x72\x54\xCA\x72\x55\xCB\x57\x69\xCB\x57\x68\xCB\x57\x71\xCB\x57\x6A\xCB\x62\x71\xCB\x62\x72\xCB\x69\x49\xCB\x69\x4A\xCB\x69\x51\xCB\x69\x52\xCB\x69\x53\xCB\x69\x54\xCB\x69\x55\xCB\x69\x56\xCB\x69\x57\xCB\x69\x58\xCB\x69\x59\xCB\x69\x5F\xCB\x69\x62\xCB\x69\x63\xCB\x71\x44\xCB\x71\x45\xCB\x71\x46\xCB\x71\x47\xCB\x71\x49\xCB\x71\x4A\xCB\x71\x71\xCB\x71\x70\xCB\x72\x47\xCB\x72\x48\xCB\x72\x49\xCB\x72\x4A\xCB\x72\x51\xCB\x72\x52\xCB\x72\x53\xCB\x72\x54\xCB\x72\x55\xCB\x72\x56\xCB\x72\x62\xCC\x67\x59\xCB\x72\x64\xCB\x72\x63\xCB\x72\x67\xCB\x72\x66\xCB\x72\x6A\xCB\x72\x69\xCB\x72\x71\xCB\x72\x70\xCB\x72\x72\xCC\x67\x5F\xCC\x49\x41\xCC\x67\x62\xCC\x49\x42\xCC\x67\x63\xCC\x49\x44\xCC\x49\x43\xCC\x49\x46\xCC\x67\x64\xCC\x49\x48\xCC\x49\x47\xCC\x49\x54\xCC\x49\x53\xCC\x49\x56\xCC\x49\x55\xCC\x49\x57\xCC\x67\x65\xCC\x49\x58\xCC\x67\x66\xCC\x49\x62\xCC\x67\x67\xCC\x49\x63\xCC\x67\x68\xCC\x49\x64\xCC\x67\x69\xCC\x49\x65\xCC\x67\x6A\xCC\x49\x66\xCC\x67\x70\xCC\x49\x68\xCC\x49\x67\xCC\x49\x6A\xCC\x49\x69\xCC\x49\x71\xCC\x49\x70\xCC\x4A\x41\xCC\x49\x72\xCC\x4A\x5F\xCC\x67\x72\xCC\x4A\x65\xCC\x4A\x64\xCC\x51\x46\xCC\x51\x47\xCC\x51\x48\xCC\x67\x71\xCC\x51\x5F\xCC\x51\x59\xCC\x51\x65\xCC\x51\x64\xCC\x51\x69\xCC\x51\x68\xCC\x51\x72\xCC\x51\x71\xCC\x52\x45\xCC\x52\x43\xCC\x52\x53\xCC\x52\x51\xCC\x52\x54\xCC\x52\x52\xCC\x52\x58\xCC\x68\x41\xCC\x52\x59\xCC\x68\x42\xCC\x52\x62\xCC\x68\x52\xCC\x52\x63\xCC\x68\x43\xCC\x52\x67\xCC\x52\x69\xCC\x53\x44\xCC\x53\x45\xCC\x53\x46\xCC\x53\x47\xCC\x53\x48\xCC\x53\x49\xCC\x53\x4A\xCC\x53\x51\xCC\x53\x52\xCC\x53\x53\xCC\x53\x54\xCC\x53\x57\xCC\x53\x56\xCC\x53\x55\xCC\x53\x58\xCC\x53\x59\xCC\x53\x5F\xCC\x53\x62\xCC\x53\x63\xCC\x53\x64\xCC\x53\x65\xCC\x53\x66\xCC\x54\x49\xCC\x54\x4A\xCC\x54\x51\xCC\x54\x52\xCC\x54\x5F\xCC\x54\x62\xCC\x55\x41\xCC\x55\x42\xCC\x55\x66\xCC\x55\x67\xCC\x55\x68\xCC\x55\x69\xCC\x56\x6A\xCC\x56\x70\xCC\x5F\x67\xCC\x5F\x68\xCC\x5F\x69\xCC\x5F\x6A\xCC\x5F\x70\xCC\x5F\x71\xCC\x5F\x72\xCC\x62\x41\xCC\x62\x42\xCC\x62\x43\xCC\x62\x44\xCC\x62\x45\xCC\x62\x46\xCC\x62\x47\xCC\x62\x48\xCC\x62\x49\xCC\x62\x4A\xCC\x62\x51\xCC\x62\x54\xCC\x62\x55\xCC\x62\x63\xCC\x62\x64\xCC\x62\x65\xCC\x62\x66\xCC\x62\x67\xCC\x62\x68\xCC\x62\x69\xCC\x62\x6A\xCC\x62\x70\xCC\x62\x71\xCC\x62\x72\xCC\x63\x41\xCC\x63\x42\xCC\x63\x43\xCC\x63\x47\xCC\x63\x48\xCC\x63\x49\xCC\x63\x4A\xCC\x63\x51\xCC\x63\x52\xCC\x63\x53\xCC\x63\x54\xCC\x63\x56\xCC\x63\x57\xCC\x63\x58\xCC\x63\x59\xCC\x63\x5F\xCC\x63\x62\xCC\x63\x63\xCC\x63\x64\xCC\x63\x65\xCC\x63\x66\xCC\x63\x67\xCC\x63\x68\xCC\x63\x69\xCC\x63\x6A\xCC\x63\x70\xCC\x63\x71\xCC\x63\x72\xCC\x64\x41\xCC\x64\x42\xCC\x64\x43\xCC\x64\x44\xCC\x64\x45\xCC\x64\x46\xCC\x64\x47\xCC\x64\x48\xCC\x64\x49\xCC\x64\x4A\xCC\x64\x51\xCC\x64\x52\xCC\x64\x53\xCC\x64\x56\xCC\x64\x57\xCC\x64\x58\xCC\x64\x59\xCC\x64\x63\xCC\x64\x64\xCC\x65\x46\xCA\x63\x52\xCC\x65\x65\xCC\x65\x66\xCC\x65\x67\xCC\x65\x68\xCC\x68\x47\xCC\x68\x46\xCC\x68\x48\xCC\x68\x4A\xCC\x68\x49\xCC\x68\x51\xCC\x68\x53\xCC\x52\x5F\xCC\x69\x43\xCC\x69\x41\xCC\x69\x53\xCC\x69\x51\xCC\x69\x59\xCC\x69\x57\xCC\x69\x6A\xCC\x69\x68\xCC\x6A\x47\xCC\x6A\x45\xCC\x6A\x51\xCC\x6A\x49\xCC\x6A\x63\xCC\x66\x46\xCC\x6A\x68\xCC\x6A\x66\xCC\x6A\x71\xCC\x6A\x6A\xCC\x70\x42\xCC\x70\x41\xCC\x70\x44\xCC\x70\x43\xCC\x70\x4A\xCC\x70\x49\xCC\x70\x52\xCC\x70\x51\xCC\x70\x58\xCC\x70\x57\xCC\x70\x5F\xCC\x70\x59\xCC\x72\x55\xCC\x72\x53\xCD\x57\x43\xCD\x57\x44\xCD\x57\x44\xCD\x57\x45\xCD\x57\x46\xCD\x57\x46\xCD\x57\x4A\xCD\x57\x51\xCD\x57\x51\xCD\x57\x53\xCD\x57\x54\xCD\x57\x54\xCD\x57\x58\xCD\x57\x57\xCD\x57\x6A\xCD\x57\x70\xCD\x57\x70\xCD\x58\x41\xCD\x58\x42\xCD\x58\x42\xCD\x58\x43\xCD\x58\x44\xCD\x58\x45\xCD\x58\x46\xCD\x58\x47\xCD\x58\x48\xCD\x58\x49\xCD\x58\x4A\xCD\x58\x64\xCD\x58\x65\xCD\x59\x43\xCA\x41\x71\xCD\x59\x63\xCD\x59\x64\xCD\x59\x65\xCD\x59\x66\xCD\x59\x67\xCD\x59\x68\xCD\x59\x69\xCD\x59\x6A\xCE\x41\x49\xCE\x41\x4A\xCE\x41\x51\xCE\x41\x52\xCE\x41\x53\xCE\x41\x54\xCE\x41\x55\xCE\x41\x56\xCE\x41\x57\xCE\x41\x58\xCE\x41\x62\xCE\x41\x63\xCE\x41\x64\xCE\x41\x65\xCE\x41\x66\xCE\x41\x67\xCE\x41\x68\xCE\x41\x69\xCE\x41\x70\xCE\x41\x71\xDD\x51\x55\x42\xDD\x51\x55\x43\xDD\x72\x4A\x71\xDD\x72\x4A\x72\xDD\x72\x59\x67\xDD\x72\x59\x68\xDD\x72\x59\x69\xDD\x72\x59\x6A\xDD\x72\x59\x70\xDD\x72\x59\x71\xDD\x72\x5F\x45\xDD\x72\x5F\x46\xDD\x72\x66\x49\xDD\x72\x66\x4A\xDD\x72\x66\x6A\xDD\x72\x66\x71\xDD\x72\x67\x69\xDD\x72\x67\x70\xDD\x72\x68\x69\xDD\x72\x68\x70\xDD\x72\x68\x72\xDD\x72\x69\x41\xDD\x72\x69\x43\xDD\x72\x69\x44\xDD\x72\x72\x52\xDD\x72\x72\x4A\xDF\x62\x49\x44\xDF\x62\x49\x43\xDF\x62\x49\x47\xDF\x62\x49\x48\xDF\x70\x43\x4A\xDF\x70\x43\x49\xDF\x70\x49\x49\xDF\x70\x52\x49\xDF\x70\x49\x4A\xDF\x70\x52\x4A\xDF\x70\x49\x51\xDF\x70\x52\x51\xDF\x70\x52\x69\xDF\x70\x52\x70\xDF\x70\x53\x67\xDF\x70\x53\x66\xDF\x70\x53\x69\xDF\x70\x53\x68\xDF\x70\x53\x70\xDF\x70\x53\x6A\xDF\x70\x56\x47\xDF\x70\x56\x48\xDF\x71\x41\x43\xDF\x71\x41\x41\xDF\x71\x41\x47\xDF\x71\x41\x45\xDF\x71\x41\x51\xDF\x71\x41\x49\xDF\x71\x41\x59\xDF\x71\x41\x57\xDF\x71\x41\x64\xDF\x71\x41\x62\xDF\x71\x41\x68\xDF\x71\x41\x66\xDF\x71\x41\x71\xDF\x71\x41\x6A\xDF\x71\x42\x43\xDF\x71\x42\x41\xDF\x71\x42\x47\xDF\x71\x42\x45\xDF\x71\x42\x51\xDF\x71\x42\x49\xDF\x71\x42\x55\xDF\x71\x42\x53\xDF\x71\x42\x59\xDF\x71\x42\x57\xDF\x71\x42\x64\xDF\x71\x42\x62\xDF\x71\x42\x68\xDF\x71\x42\x66\xDF\x71\x42\x71\xDF\x71\x42\x6A\xDF\x71\x43\x43\xDF\x71\x43\x41\xDF\x71\x43\x47\xDF\x71\x43\x45\xDF\x71\x43\x59\xDF\x71\x43\x57\xDF\x71\x44\x43\xDF\x71\x44\x41\xDF\x71\x44\x51\xDF\x71\x44\x49\xDF\x71\x44\x59\xDF\x71\x44\x57\xDF\x71\x44\x68\xDF\x71\x44\x66\xDF\x71\x45\x43\xDF\x71\x45\x41\xDF\x71\x45\x59\xDF\x71\x45\x57\xDF\x71\x45\x64\xDF\x71\x45\x62\xDF\x71\x45\x68\xDF\x71\x45\x66\xDF\x71\x46\x42\xDF\x71\x46\x41\xDF\x71\x46\x44\xDF\x71\x46\x43\xDF\x71\x46\x46\xDF\x71\x46\x47\xDF\x71\x46\x48\xDF\x71\x46\x45\xDF\x71\x46\x4A\xDF\x71\x46\x49\xDF\x71\x46\x52\xDF\x71\x46\x51"
+# define DEPRECATED_OPENING_NON_UTF8_BRACKETS "\x8A\x8B"
+# endif
+
+# ifdef PERL_IN_REGCOMP_ANY
+# define MAX_PRINT_A 0xF9 /* The max code point that isPRINT_A */
+# endif
#endif /* EBCDIC 037 */
/* The number of code points not matching \pC */
-#ifdef PERL_IN_REGCOMP_C
-# define NON_OTHER_COUNT 143698
+#ifdef PERL_IN_REGCOMP_ANY
+# define NON_OTHER_COUNT 149016
#endif
/* The highest code point that has any type of case change */
@@ -200,4 +242,4 @@ bytes.
#endif /* PERL_UNICODE_CONSTANTS_H_ */
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/unixish.h b/Master/tlpkg/tlperl/lib/CORE/unixish.h
index eafc6f1e8b8..097b85da2fc 100644
--- a/Master/tlpkg/tlperl/lib/CORE/unixish.h
+++ b/Master/tlpkg/tlperl/lib/CORE/unixish.h
@@ -21,7 +21,7 @@
* This symbol, if defined, indicates that the ioctl() routine is
* available to set I/O characteristics
*/
-#define HAS_IOCTL /**/
+#define HAS_IOCTL /**/
/* HAS_UTIME:
* This symbol, if defined, indicates that the routine utime() is
@@ -136,28 +136,34 @@ int afstat(int fd, struct stat *statb);
#define Mkdir(path,mode) mkdir((path),(mode))
#if defined(__amigaos4__)
-# define PERL_SYS_INIT_BODY(c,v) \
- MALLOC_CHECK_TAINT2(*c,*v) PERL_FPU_INIT; PERLIO_INIT; MALLOC_INIT; amigaos4_init_fork_array(); amigaos4_init_environ_sema();
-# define PERL_SYS_TERM_BODY() \
- HINTS_REFCNT_TERM; KEYWORD_PLUGIN_MUTEX_TERM; \
- OP_CHECK_MUTEX_TERM; OP_REFCNT_TERM; PERLIO_TERM; \
- MALLOC_TERM; LOCALE_TERM; USER_PROP_MUTEX_TERM; \
- ENV_TERM; \
- amigaos4_dispose_fork_array();
+# define PLATFORM_SYS_TERM_ amigaos4_dispose_fork_array()
+# define PLATFORM_SYS_INIT_ STMT_START { \
+ amigaos4_init_fork_array(); \
+ amigaos4_init_environ_sema(); \
+ } STMT_END
+#else
+# define PLATFORM_SYS_TERM_ NOOP
+# define PLATFORM_SYS_INIT_ NOOP
#endif
#ifndef PERL_SYS_INIT_BODY
-# define PERL_SYS_INIT_BODY(c,v) \
- MALLOC_CHECK_TAINT2(*c,*v) PERL_FPU_INIT; PERLIO_INIT; MALLOC_INIT
+#define PERL_SYS_INIT_BODY(c,v) \
+ MALLOC_CHECK_TAINT2(*c,*v) PERL_FPU_INIT; PERLIO_INIT; \
+ MALLOC_INIT; PLATFORM_SYS_INIT_;
#endif
+/* Generally add things last-in first-terminated. IO and memory terminations
+ * need to be generally last
+ *
+ * BEWARE that using PerlIO in these will be using freed memory, so may appear
+ * to work, but must NOT be retained in production code. */
#ifndef PERL_SYS_TERM_BODY
-# define PERL_SYS_TERM_BODY() \
- HINTS_REFCNT_TERM; KEYWORD_PLUGIN_MUTEX_TERM; \
- OP_CHECK_MUTEX_TERM; OP_REFCNT_TERM; PERLIO_TERM; \
- MALLOC_TERM; LOCALE_TERM; USER_PROP_MUTEX_TERM; \
- ENV_TERM;
-
+# define PERL_SYS_TERM_BODY() \
+ ENV_TERM; USER_PROP_MUTEX_TERM; LOCALE_TERM; \
+ HINTS_REFCNT_TERM; KEYWORD_PLUGIN_MUTEX_TERM; \
+ OP_CHECK_MUTEX_TERM; OP_REFCNT_TERM; \
+ PERLIO_TERM; MALLOC_TERM; \
+ PLATFORM_SYS_TERM_;
#endif
#define BIT_BUCKET "/dev/null"
diff --git a/Master/tlpkg/tlperl/lib/CORE/utf8.h b/Master/tlpkg/tlperl/lib/CORE/utf8.h
index 3bec01989f9..3256cf649a8 100644
--- a/Master/tlpkg/tlperl/lib/CORE/utf8.h
+++ b/Master/tlpkg/tlperl/lib/CORE/utf8.h
@@ -12,11 +12,103 @@
* You may distribute under the terms of either the GNU General Public
* License or the Artistic License, as specified in the README file.
*
+ * A note on nomenclature: The term UTF-8 is used loosely and inconsistently
+ * in Perl documentation. For one, perl uses an extension of UTF-8 to
+ * represent code points that Unicode considers illegal. For another, ASCII
+ * platform UTF-8 is usually conflated with EBCDIC platform UTF-EBCDIC, because
+ * outside some of the macros in this this file, the differences are hopefully
+ * invisible at the semantic level.
+ *
+ * UTF-EBCDIC has an isomorphic translation named I8 (for "Intermediate eight")
+ * which differs from UTF-8 only in a few details. It is often useful to
+ * translate UTF-EBCDIC into this form for processing. In general, macros and
+ * functions that are expecting their inputs to be either in I8 or UTF-8 are
+ * named UTF_foo (without an '8'), to indicate this.
+ *
+ * Unfortunately there are inconsistencies.
+ *
*/
#ifndef PERL_UTF8_H_ /* Guard against recursive inclusion */
#define PERL_UTF8_H_ 1
+/*
+=for apidoc Ay||utf8ness_t
+
+This typedef is used by several core functions that return PV strings, to
+indicate the UTF-8ness of those strings.
+
+(If you write a new function, you probably should instead return the PV in an
+SV with the UTF-8 flag of the SV properly set, rather than use this mechanism.)
+
+The possible values this can be are:
+
+=over
+
+=item C<UTF8NESS_YES>
+
+This means the string definitely should be treated as a sequence of
+UTF-8-encoded characters.
+
+Most code that needs to handle this typedef should be of the form:
+
+ if (utf8ness_flag == UTF8NESS_YES) {
+ treat as utf8; // like turning on an SV UTF-8 flag
+ }
+
+=item C<UTF8NESS_NO>
+
+This means the string definitely should be treated as a sequence of bytes, not
+encoded as UTF-8.
+
+=item C<UTF8NESS_IMMATERIAL>
+
+This means it is equally valid to treat the string as bytes, or as UTF-8
+characters; use whichever way you want. This happens when the string consists
+entirely of characters which have the same representation whether encoded in
+UTF-8 or not.
+
+=item C<UTF8NESS_UNKNOWN>
+
+This means it is unknown how the string should be treated. No core function
+will ever return this value to a non-core caller. Instead, it is used by the
+caller to initialize a variable to a non-legal value. A typical call will look like:
+
+ utf8ness_t string_is_utf8 = UTF8NESS_UNKNOWN
+ const char * string = foo(arg1, arg2, ..., &string_is_utf8);
+ if (string_is_utf8 == UTF8NESS_YES) {
+ do something for UTF-8;
+ }
+
+=back
+
+The following relationships hold between the enum values:
+
+=over
+
+=item S<C<0 E<lt>= I<enum value> E<lt>= UTF8NESS_IMMATERIAL>>
+
+the string may be treated in code as non-UTF8
+
+=item S<C<UTF8NESS_IMMATERIAL E<lt>= <I<enum value>>>
+
+the string may be treated in code as encoded in UTF-8
+
+=back
+
+=cut
+*/
+
+typedef enum {
+ UTF8NESS_NO = 0, /* Definitely not UTF-8 */
+ UTF8NESS_IMMATERIAL = 1, /* Representation is the same in UTF-8 as
+ not, so the UTF8ness doesn't actually
+ matter */
+ UTF8NESS_YES = 2, /* Defintely is UTF-8, wideness
+ unspecified */
+ UTF8NESS_UNKNOWN = -1, /* Undetermined so far */
+} utf8ness_t;
+
/* Use UTF-8 as the default script encoding?
* Turning this on will break scripts having non-UTF-8 binary
* data (such as Latin-1) in string literals. */
@@ -67,6 +159,15 @@ the string is invariant.
#define utf8n_to_uvchr_error(s, len, lenp, flags, errors) \
utf8n_to_uvchr_msgs(s, len, lenp, flags, errors, 0)
+#define utf16_to_utf8(p, d, bytelen, newlen) \
+ utf16_to_utf8_base(p, d, bytelen, newlen, 0, 1)
+#define utf16_to_utf8_reversed(p, d, bytelen, newlen) \
+ utf16_to_utf8_base(p, d, bytelen, newlen, 1, 0)
+#define utf8_to_utf16(p, d, bytelen, newlen) \
+ utf8_to_utf16_base(p, d, bytelen, newlen, 0, 1)
+#define utf8_to_utf16_reversed(p, d, bytelen, newlen) \
+ utf8_to_utf16_base(p, d, bytelen, newlen, 1, 0)
+
#define to_uni_fold(c, p, lenp) _to_uni_fold_flags(c, p, lenp, FOLD_FLAGS_FULL)
#define foldEQ_utf8(s1, pe1, l1, u1, s2, pe2, l2, u2) \
@@ -78,32 +179,31 @@ the string is invariant.
#define FOLDEQ_S1_FOLDS_SANE (1 << 4)
#define FOLDEQ_S2_FOLDS_SANE (1 << 5)
-#ifdef EBCDIC
-/* The equivalent of these macros but implementing UTF-EBCDIC
- are in the following header file:
- */
-
-#include "utfebcdic.h"
+/* This will be described more fully below, but it turns out that the
+ * fundamental difference between UTF-8 and UTF-EBCDIC is that the former has
+ * the upper 2 bits of a continuation byte be '10', and the latter has the
+ * upper 3 bits be '101', leaving 6 and 5 significant bits respectively.
+ *
+ * It is helpful to know the EBCDIC value on ASCII platforms, mainly to avoid
+ * some #ifdef's */
+#define UTF_EBCDIC_CONTINUATION_BYTE_INFO_BITS 5
-#else /* ! EBCDIC */
-START_EXTERN_C
+/* See explanation below at 'UTF8_MAXBYTES' */
+#define ASCII_PLATFORM_UTF8_MAXBYTES 13
-/*
+#ifdef EBCDIC
-=for apidoc AmnU|STRLEN|UTF8_MAXBYTES
+/* The equivalent of the next few macros but implementing UTF-EBCDIC are in the
+ * following header file: */
+# include "utfebcdic.h"
-The maximum width of a single UTF-8 encoded character, in bytes.
+# else /* ! EBCDIC */
-NOTE: Strictly speaking Perl's UTF-8 should not be called UTF-8 since UTF-8
-is an encoding of Unicode, and Unicode's upper limit, 0x10FFFF, can be
-expressed with 4 bytes. However, Perl thinks of UTF-8 as a way to encode
-non-negative integers in a binary format, even those above Unicode.
-
-=cut
- */
-#define UTF8_MAXBYTES 13
+START_EXTERN_C
-#ifdef DOINIT
+# ifndef DOINIT
+EXTCONST unsigned char PL_utf8skip[];
+# else
EXTCONST unsigned char PL_utf8skip[] = {
/* 0x00 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
/* 0x10 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, /* ascii */
@@ -125,11 +225,9 @@ EXTCONST unsigned char PL_utf8skip[] = {
/* Perl extended (never was official UTF-8). Up to 36 bit */
/* 0xFE */ 7,
/* More extended, Up to 72 bits (64-bit + reserved) */
-/* 0xFF */ UTF8_MAXBYTES
+/* 0xFF */ ASCII_PLATFORM_UTF8_MAXBYTES
};
-#else
-EXTCONST unsigned char PL_utf8skip[];
-#endif
+# endif
END_EXTERN_C
@@ -178,8 +276,8 @@ adding no time nor space requirements to the implementation.
=cut
*/
-#define NATIVE_TO_LATIN1(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) ((ch) | 0)))
-#define LATIN1_TO_NATIVE(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) ((ch) | 0)))
+#define NATIVE_TO_LATIN1(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) (ch)))
+#define LATIN1_TO_NATIVE(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) (ch)))
/* I8 is an intermediate version of UTF-8 used only in UTF-EBCDIC. We thus
* consider it to be identical to UTF-8 on ASCII platforms. Strictly speaking
@@ -187,11 +285,11 @@ adding no time nor space requirements to the implementation.
* because they are 8-bit encodings that serve the same purpose in Perl, and
* rarely do we need to distinguish them. The term "NATIVE_UTF8" applies to
* whichever one is applicable on the current platform */
-#define NATIVE_UTF8_TO_I8(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) ((ch) | 0)))
-#define I8_TO_NATIVE_UTF8(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) ((ch) | 0)))
+#define NATIVE_UTF8_TO_I8(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) (ch)))
+#define I8_TO_NATIVE_UTF8(ch) (__ASSERT_(FITS_IN_8_BITS(ch)) ((U8) (ch)))
-#define UNI_TO_NATIVE(ch) ((UV) ((ch) | 0))
-#define NATIVE_TO_UNI(ch) ((UV) ((ch) | 0))
+#define UNI_TO_NATIVE(ch) ((UV) ASSERT_NOT_PTR(ch))
+#define NATIVE_TO_UNI(ch) ((UV) ASSERT_NOT_PTR(ch))
/*
@@ -226,10 +324,7 @@ possible to UTF-8-encode a single code point in different ways, but that is
explicitly forbidden, and the shortest possible encoding should always be used
(and that is what Perl does). The non-shortest ones are called 'overlongs'.
- */
-
-/*
- Another way to look at it, as bits:
+Another way to look at it, as bits:
Code Points 1st Byte 2nd Byte 3rd Byte 4th Byte
@@ -252,27 +347,30 @@ are in the character. */
* sequence contributes to the specification of the code point. In the bit
* maps above, you see that the first 2 bits are a constant '10', leaving 6 of
* real information */
-#define UTF_ACCUMULATION_SHIFT 6
+# define UTF_CONTINUATION_BYTE_INFO_BITS 6
/* ^? is defined to be DEL on ASCII systems. See the definition of toCTRL()
* for more */
-#define QUESTION_MARK_CTRL DEL_NATIVE
+# define QUESTION_MARK_CTRL DEL_NATIVE
-/* Surrogates, non-character code points and above-Unicode code points are
- * problematic in some contexts. This allows code that needs to check for
- * those to quickly exclude the vast majority of code points it will
- * encounter */
-#define isUTF8_POSSIBLY_PROBLEMATIC(c) (__ASSERT_(FITS_IN_8_BITS(c)) \
- (U8) c >= 0xED)
+#endif /* EBCDIC vs ASCII */
-#define UNICODE_IS_PERL_EXTENDED(uv) UNLIKELY((UV) (uv) > 0x7FFFFFFF)
+/* It turns out that in a number of cases, that handling ASCII vs EBCDIC is a
+ * matter of being off-by-one. So this is a convenience macro, used to avoid
+ * some #ifdefs. */
+#define ONE_IF_EBCDIC_ZERO_IF_NOT \
+ (UTF_CONTINUATION_BYTE_INFO_BITS == UTF_EBCDIC_CONTINUATION_BYTE_INFO_BITS)
-#endif /* EBCDIC vs ASCII */
+/* Since the significant bits in a continuation byte are stored in the
+ * least-significant positions, we often find ourselves shifting by that
+ * amount. This is a clearer name in such situations */
+#define UTF_ACCUMULATION_SHIFT UTF_CONTINUATION_BYTE_INFO_BITS
-/* 2**UTF_ACCUMULATION_SHIFT - 1. This masks out all but the bits that carry
- * real information in a continuation byte. This turns out to be 0x3F in
- * UTF-8, 0x1F in UTF-EBCDIC. */
-#define UTF_CONTINUATION_MASK ((U8) (nBIT_MASK(UTF_ACCUMULATION_SHIFT)))
+/* 2**info_bits - 1. This masks out all but the bits that carry real
+ * information in a continuation byte. This turns out to be 0x3F in UTF-8,
+ * 0x1F in UTF-EBCDIC. */
+#define UTF_CONTINUATION_MASK \
+ ((U8) nBIT_MASK(UTF_CONTINUATION_BYTE_INFO_BITS))
/* For use in UTF8_IS_CONTINUATION(). This turns out to be 0xC0 in UTF-8,
* E0 in UTF-EBCDIC */
@@ -281,9 +379,13 @@ are in the character. */
/* This defines the bits that are to be in the continuation bytes of a
* multi-byte UTF-8 encoded character that mark it is a continuation byte.
* This turns out to be 0x80 in UTF-8, 0xA0 in UTF-EBCDIC. (khw doesn't know
- * the underlying reason that B0 works here) */
+ * the underlying reason that B0 works here, except it just happens to work.
+ * One could solve for two linear equations and come up with it.) */
#define UTF_CONTINUATION_MARK (UTF_IS_CONTINUATION_MASK & 0xB0)
+/* This value is clearer in some contexts */
+#define UTF_MIN_CONTINUATION_BYTE UTF_CONTINUATION_MARK
+
/* Is the byte 'c' part of a multi-byte UTF8-8 encoded sequence, and not the
* first byte thereof? */
#define UTF8_IS_CONTINUATION(c) (__ASSERT_(FITS_IN_8_BITS(c)) \
@@ -293,7 +395,8 @@ are in the character. */
/* Is the representation of the Unicode code point 'cp' the same regardless of
* being encoded in UTF-8 or not? This is a fundamental property of
* UTF-8,EBCDIC */
-#define OFFUNI_IS_INVARIANT(c) (((WIDEST_UTYPE)(c)) < UTF_CONTINUATION_MARK)
+#define OFFUNI_IS_INVARIANT(c) \
+ (((WIDEST_UTYPE)(c)) < UTF_MIN_CONTINUATION_BYTE)
/*
=for apidoc Am|bool|UVCHR_IS_INVARIANT|UV cp
@@ -307,54 +410,142 @@ C<cp> is Unicode if above 255; otherwise is platform-native.
*/
#define UVCHR_IS_INVARIANT(cp) (OFFUNI_IS_INVARIANT(NATIVE_TO_UNI(cp)))
-/* Internal macro to be used only in this file to aid in constructing other
- * publicly accessible macros.
- * The number of bytes required to express this uv in UTF-8, for just those
- * uv's requiring 2 through 6 bytes, as these are common to all platforms and
- * word sizes. The number of bytes needed is given by the number of leading 1
- * bits in the start byte. There are 32 start bytes that have 2 initial 1 bits
- * (C0-DF); there are 16 that have 3 initial 1 bits (E0-EF); 8 that have 4
- * initial 1 bits (F0-F8); 4 that have 5 initial 1 bits (F9-FB), and 2 that
- * have 6 initial 1 bits (FC-FD). The largest number a string of n bytes can
- * represent is (the number of possible start bytes for 'n')
- * * (the number of possiblities for each start byte
- * The latter in turn is
- * 2 ** ( (how many continuation bytes there are)
- * * (the number of bits of information each
- * continuation byte holds))
+/* This defines the 1-bits that are to be in the first byte of a multi-byte
+ * UTF-8 encoded character that mark it as a start byte and give the number of
+ * bytes that comprise the character. 'len' is that number.
*
- * If we were on a platform where we could use a fast find first set bit
- * instruction (or count leading zeros instruction) this could be replaced by
- * using that to find the log2 of the uv, and divide that by the number of bits
- * of information in each continuation byte, adjusting for large cases and how
- * much information is in a start byte for that length */
-#define __COMMON_UNI_SKIP(uv) \
- (UV) (uv) < (32 * (1U << ( UTF_ACCUMULATION_SHIFT))) ? 2 : \
- (UV) (uv) < (16 * (1U << (2 * UTF_ACCUMULATION_SHIFT))) ? 3 : \
- (UV) (uv) < ( 8 * (1U << (3 * UTF_ACCUMULATION_SHIFT))) ? 4 : \
- (UV) (uv) < ( 4 * (1U << (4 * UTF_ACCUMULATION_SHIFT))) ? 5 : \
- (UV) (uv) < ( 2 * (1U << (5 * UTF_ACCUMULATION_SHIFT))) ? 6 :
-
-/* Internal macro to be used only in this file.
- * This adds to __COMMON_UNI_SKIP the details at this platform's upper range.
- * For any-sized EBCDIC platforms, or 64-bit ASCII ones, we need one more test
- * to see if just 7 bytes is needed, or if the maximum is needed. For 32-bit
- * ASCII platforms, everything is representable by 7 bytes */
-#if defined(UV_IS_QUAD) || defined(EBCDIC)
-# define __BASE_UNI_SKIP(uv) (__COMMON_UNI_SKIP(uv) \
- LIKELY((UV) (uv) < ((UV) 1U << (6 * UTF_ACCUMULATION_SHIFT))) \
- ? 7 \
- : UTF8_MAXBYTES)
-#else
-# define __BASE_UNI_SKIP(uv) (__COMMON_UNI_SKIP(uv) 7)
-#endif
+ * To illustrate: len = 2 => ((U8) ~ 0b0011_1111) or 1100_0000
+ * 7 => ((U8) ~ 0b0000_0001) or 1111_1110
+ * > 7 => 0xFF
+ *
+ * This is not to be used on a single-byte character. As in many places in
+ * perl, U8 must be 8 bits
+ */
+#define UTF_START_MARK(len) ((U8) ~(0xFF >> (len)))
-/* The next two macros use the base macro defined above, and add in the tests
- * at the low-end of the range, for just 1 byte, yielding complete macros,
- * publicly accessible. */
+/* Masks out the initial one bits in a start byte, leaving the following 0 bit
+ * and the real data bits. 'len' is the number of bytes in the multi-byte
+ * sequence that comprises the character.
+ *
+ * To illustrate: len = 2 => 0b0011_1111 works on start byte 110xxxxx
+ * 6 => 0b0000_0011 works on start byte 1111110x
+ * >= 7 => There are no data bits in the start byte
+ * Note that on ASCII platforms, this can be passed a len=1 byte; and all the
+ * real data bits will be returned:
+ len = 1 => 0b0111_1111
+ * This isn't true on EBCDIC platforms, where some len=1 bytes are of the form
+ * 0b101x_xxxx, so this can't be used there on single-byte characters. */
+#define UTF_START_MASK(len) (0xFF >> (len))
-/* Input is a true Unicode (not-native) code point */
-#define OFFUNISKIP(uv) (OFFUNI_IS_INVARIANT(uv) ? 1 : __BASE_UNI_SKIP(uv))
+/*
+
+=for apidoc AmnU|STRLEN|UTF8_MAXBYTES
+
+The maximum width of a single UTF-8 encoded character, in bytes.
+
+NOTE: Strictly speaking Perl's UTF-8 should not be called UTF-8 since UTF-8
+is an encoding of Unicode, and Unicode's upper limit, 0x10FFFF, can be
+expressed with 4 bytes. However, Perl thinks of UTF-8 as a way to encode
+non-negative integers in a binary format, even those above Unicode.
+
+=cut
+
+The start byte 0xFE, never used in any ASCII platform UTF-8 specification, has
+an obvious meaning, namely it has its upper 7 bits set, so it should start a
+sequence of 7 bytes. And in fact, this is exactly what standard UTF-EBCDIC
+does.
+
+The start byte FF, on the other hand could have several different plausible
+meanings:
+ 1) The meaning in standard UTF-EBCDIC, namely as an FE start byte, with the
+ bottom bit that should be a fixed '0' to form FE, instead acting as an
+ info bit, 0 or 1.
+ 2) That the sequence should have exactly 8 bytes.
+ 3) That the next byte is to be treated as a sort of extended start byte,
+ which in combination with this one gives the total length of the sequence.
+ There are published UTF-8 extensions that do this, some string together
+ multiple initial FF start bytes to achieve arbitrary precision.
+ 4) That the sequence has exactly n bytes, where n is what the implementation
+ chooses.
+
+Perl has chosen 4).
+The goal is to be able to represent 64-bit values in UTF-8 or UTF-EBCDIC. That
+rules out items 1) and 2). Item 3) has the deal-breaking disadvantage of
+requiring one to read more than one byte to determine the total length of the
+sequence. So in Perl, a start byte of FF indicates a UTF-8 string consisting
+of the start byte, plus enough continuation bytes to encode a 64 bit value.
+This turns out to be 13 total bytes in UTF-8 and 14 in UTF-EBCDIC. This is
+because we get zero info bits from the start byte, plus
+ 12 * 6 bits of info per continuation byte (could encode 72-bit numbers) on
+ UTF-8 (khw knows not why 11, which would encode 66 bits wasn't
+ chosen instead); and
+ 13 * 5 bits of info per byte (could encode 65-bit numbers) on UTF-EBCDIC
+
+The disadvantages of this method are:
+ 1) There's potentially a lot of wasted bytes for all but the largest values.
+ For example, something that could be represented by 7 continuation bytes,
+ instead requires the full 12 or 13.
+ 2) There would be problems should larger values, 128-bit say, ever need to be
+ represented.
+
+WARNING: This number must be in sync with the value in
+regen/charset_translations.pl. */
+#define UTF8_MAXBYTES \
+ (ASCII_PLATFORM_UTF8_MAXBYTES + ONE_IF_EBCDIC_ZERO_IF_NOT)
+
+/* Calculate how many bytes are necessary to represent a value whose most
+ * significant 1 bit is in bit position 'pos' of the word. For 0x1, 'pos would
+ * be 0; and for 0x400, 'pos' would be 10, and the result would be:
+ * EBCDIC floor((-1 + (10 + 5 - 1 - 1)) / (5 - 1))
+ * = floor((-1 + (13)) / 4)
+ * = floor(12 / 4)
+ * = 3
+ * ASCII floor(( 0 + (10 + 6 - 1 - 1)) / (6 - 1))
+ * = floor(14 / 5)
+ * = 2
+ * The reason this works is because the number of bits needed to represent a
+ * value is proportional to (UTF_CONTINUATION_BYTE_INFO_BITS - 1). The -1 is
+ * because each new continuation byte removes one bit of information from the
+ * start byte.
+ *
+ * This is a step function (we need to allocate a full extra byte if we
+ * overflow by just a single bit)
+ *
+ * The caller is responsible for making sure 'pos' is at least 8 (occupies 9
+ * bits), as it breaks down at the lower edge. At the high end, if it returns
+ * 8 or more, Perl instead anomalously uses MAX_BYTES, so this would be wrong.
+ * */
+#define UNISKIP_BY_MSB_(pos) \
+ ( ( -ONE_IF_EBCDIC_ZERO_IF_NOT /* platform break pos's are off-by-one */ \
+ + (pos) + ((UTF_CONTINUATION_BYTE_INFO_BITS - 1) - 1)) /* Step fcn */ \
+ / (UTF_CONTINUATION_BYTE_INFO_BITS - 1)) /* take floor of */
+
+/* Compute the number of UTF-8 bytes required for representing the input uv,
+ * which must be a Unicode, not native value.
+ *
+ * This uses msbit_pos() which doesn't work on NUL, and UNISKIP_BY_MSB_ breaks
+ * down for small code points. So first check if the input is invariant to get
+ * around that, and use a helper for high code points to accommodate the fact
+ * that above 7 btyes, the value is anomalous. The helper is empty on
+ * platforms that don't go that high */
+#define OFFUNISKIP(uv) \
+ ((OFFUNI_IS_INVARIANT(uv)) \
+ ? 1 \
+ : (OFFUNISKIP_helper_(uv) UNISKIP_BY_MSB_(msbit_pos(uv))))
+
+/* We need to go to MAX_BYTES when we can't represent 'uv' by the number of
+ * information bits in 6 continuation bytes (when we get to 6, the start byte
+ * has no information bits to add to the total). But on 32-bit ASCII
+ * platforms, that doesn't happen until 6*6 bits, so on those platforms, this
+ * will always be false */
+#if UVSIZE * CHARBITS > (6 * UTF_CONTINUATION_BYTE_INFO_BITS)
+# define HAS_EXTRA_LONG_UTF8
+# define OFFUNISKIP_helper_(uv) \
+ UNLIKELY(uv > nBIT_UMAX(6 * UTF_CONTINUATION_BYTE_INFO_BITS)) \
+ ? UTF8_MAXBYTES :
+#else
+# define OFFUNISKIP_helper_(uv)
+#endif
/*
@@ -365,10 +556,56 @@ encoded as UTF-8. C<cp> is a native (ASCII or EBCDIC) code point if less than
=cut
*/
-#define UVCHR_SKIP(uv) ( UVCHR_IS_INVARIANT(uv) ? 1 : __BASE_UNI_SKIP(uv))
+#define UVCHR_SKIP(uv) OFFUNISKIP(NATIVE_TO_UNI(uv))
+
+#define NATIVE_SKIP(uv) UVCHR_SKIP(uv) /* Old terminology */
+
+/* Most code which says UNISKIP is really thinking in terms of native code
+ * points (0-255) plus all those beyond. This is an imprecise term, but having
+ * it means existing code continues to work. For precision, use UVCHR_SKIP,
+ * NATIVE_SKIP, or OFFUNISKIP */
+#define UNISKIP(uv) UVCHR_SKIP(uv)
+
+/* Compute the start byte for a given code point. This requires the log2 of
+ * the code point, which is hard to compute at compile time, which this macro
+ * wants to be. (Perhaps deBruijn sequences could be used.) So a parameter
+ * for the number of bits the value occupies is passed in, which the programmer
+ * has had to figure out to get compile-time effect. And asserts are used to
+ * make sure the value is correct.
+ *
+ * Since we are interested only in the start byte, we ignore the lower bits
+ * accounted for by the continuation bytes. Each continuation byte eats up
+ * UTF_CONTINUATION_BYTE_INFO_BITS bits, so the number of continuation bytes
+ * needed is floor(bits / UTF_CONTINUATION_BYTE_INFO_BITS). That number is fed
+ * to UTF_START_MARK() to get the upper part of the start byte. The left over
+ * bits form the lower part which is OR'd with the mark
+ *
+ * Note that on EBCDIC platforms, this is actually the I8 */
+#define UTF_START_BYTE(uv, bits) \
+ (__ASSERT_((uv) >> ((bits) - 1)) /* At least 'bits' */ \
+ __ASSERT_(((uv) & ~nBIT_MASK(bits)) == 0) /* No extra bits */ \
+ UTF_START_MARK(UNISKIP_BY_MSB_((bits) - 1)) \
+ | ((uv) >> (((bits) / UTF_CONTINUATION_BYTE_INFO_BITS) \
+ * UTF_CONTINUATION_BYTE_INFO_BITS)))
+
+/* Compute the first continuation byte for a given code point. This is mostly
+ * for compile-time, so how many bits it occupies is also passed in).
+ *
+ * We are interested in the first continuation byte, so we ignore the lower
+ * bits accounted for by the rest of the continuation bytes by right shifting
+ * out their info bit, and mask out the higher bits that will go into the start
+ * byte.
+ *
+ * Note that on EBCDIC platforms, this is actually the I8 */
+#define UTF_FIRST_CONT_BYTE(uv, bits) \
+ (__ASSERT_((uv) >> ((bits) - 1)) /* At least 'bits' */ \
+ __ASSERT_(((uv) & ~nBIT_MASK(bits)) == 0) /* No extra bits */ \
+ UTF_CONTINUATION_MARK \
+ | ( UTF_CONTINUATION_MASK \
+ & ((uv) >> ((((bits) / UTF_CONTINUATION_BYTE_INFO_BITS) - 1) \
+ * UTF_CONTINUATION_BYTE_INFO_BITS))))
-#define UTF_MIN_START_BYTE \
- ((UTF_CONTINUATION_MARK >> UTF_ACCUMULATION_SHIFT) | UTF_START_MARK(2))
+#define UTF_MIN_START_BYTE UTF_START_BYTE(UTF_MIN_CONTINUATION_BYTE, 8)
/* Is the byte 'c' the first byte of a multi-byte UTF8-8 encoded sequence?
* This excludes invariants (they are single-byte). It also excludes the
@@ -385,8 +622,7 @@ encoded as UTF-8. C<cp> is a native (ASCII or EBCDIC) code point if less than
# define UTF8_IS_START(c) UTF8_IS_START_base(c)
#endif
-#define UTF_MIN_ABOVE_LATIN1_BYTE \
- ((0x100 >> UTF_ACCUMULATION_SHIFT) | UTF_START_MARK(2))
+#define UTF_MIN_ABOVE_LATIN1_BYTE UTF_START_BYTE(0x100, 9)
/* Is the UTF8-encoded byte 'c' the first byte of a sequence of bytes that
* represent a code point > 255? */
@@ -397,18 +633,27 @@ encoded as UTF-8. C<cp> is a native (ASCII or EBCDIC) code point if less than
* UTF8_IS_NEXT_CHAR_DOWNGRADEABLE() instead if the input isn't known to
* be well-formed. */
#define UTF8_IS_DOWNGRADEABLE_START(c) (__ASSERT_(FITS_IN_8_BITS(c)) \
- inRANGE(NATIVE_UTF8_TO_I8(c), \
+ inRANGE_helper_(U8, NATIVE_UTF8_TO_I8(c), \
UTF_MIN_START_BYTE, UTF_MIN_ABOVE_LATIN1_BYTE - 1))
/* The largest code point representable by two UTF-8 bytes on this platform.
- * As explained in the comments for __COMMON_UNI_SKIP, 32 start bytes with
- * UTF_ACCUMULATION_SHIFT bits of information each */
-#define MAX_UTF8_TWO_BYTE (32 * (1U << UTF_ACCUMULATION_SHIFT) - 1)
+ * The binary for that code point is:
+ * 1101_1111 10xx_xxxx in UTF-8, and
+ * 1101_1111 101y_yyyy in UTF-EBCDIC I8.
+ * where both x and y are 1, and shown this way to indicate there is one more x
+ * than there is y. The number of x and y bits are their platform's respective
+ * UTF_CONTINUATION_BYTE_INFO_BITS. Squeezing out the bits that don't
+ * contribute to the value, these evaluate to:
+ * 1_1111 xx_xxxx in UTF-8, and
+ * 1_1111 y_yyyy in UTF-EBCDIC I8.
+ * or, the maximum value of an unsigned with (5 + info_bit_count) bits */
+#define MAX_UTF8_TWO_BYTE nBIT_UMAX(5 + UTF_CONTINUATION_BYTE_INFO_BITS)
/* The largest code point representable by two UTF-8 bytes on any platform that
- * Perl runs on. This value is constrained by EBCDIC which has 5 bits per
- * continuation byte */
-#define MAX_PORTABLE_UTF8_TWO_BYTE (32 * nBIT_UMAX(5))
+ * Perl runs on. */
+#define MAX_PORTABLE_UTF8_TWO_BYTE \
+ nBIT_UMAX(5 + MIN( UTF_CONTINUATION_BYTE_INFO_BITS, \
+ UTF_EBCDIC_CONTINUATION_BYTE_INFO_BITS))
/*
@@ -428,8 +673,8 @@ uppercase/lowercase/titlecase/fold into.
*
=cut
*/
-#define UTF8_MAXBYTES_CASE \
- MAX(UTF8_MAXBYTES, UTF8_MAX_FOLD_CHAR_EXPAND * OFFUNISKIP(0x10FFFF))
+#define UTF8_MAXBYTES_CASE \
+ MAX(UTF8_MAXBYTES, UTF8_MAX_FOLD_CHAR_EXPAND * UNISKIP_BY_MSB_(20))
/* Rest of these are attributes of Unicode and perl's internals rather than the
* encoding, or happen to be the same in both ASCII and EBCDIC (at least at
@@ -448,19 +693,6 @@ uppercase/lowercase/titlecase/fold into.
#define I8_TO_NATIVE(ch) I8_TO_NATIVE_UTF8(ch)
#define NATIVE8_TO_UNI(ch) NATIVE_TO_LATIN1(ch)
-/* This defines the 1-bits that are to be in the first byte of a multi-byte
- * UTF-8 encoded character that mark it as a start byte and give the number of
- * bytes that comprise the character. 'len' is the number of bytes in the
- * multi-byte sequence. */
-#define UTF_START_MARK(len) (UNLIKELY((len) > 7) \
- ? 0xFF \
- : ((U8) (0xFE << (7-(len)))))
-
-/* Masks out the initial one bits in a start byte, leaving the real data ones.
- * Doesn't work on an invariant byte. 'len' is the number of bytes in the
- * multi-byte sequence that comprises the character. */
-#define UTF_START_MASK(len) (UNLIKELY((len) >= 7) ? 0x00 : (0x1F >> ((len)-2)))
-
/* Adds a UTF8 continuation byte 'new' of information to a running total code
* point 'old' of all the continuation bytes so far. This is designed to be
* used in a loop to convert from UTF-8 to the code point represented. Note
@@ -474,19 +706,10 @@ uppercase/lowercase/titlecase/fold into.
/* This works in the face of malformed UTF-8. */
#define UTF8_IS_NEXT_CHAR_DOWNGRADEABLE(s, e) \
- ( UTF8_IS_DOWNGRADEABLE_START(*(s)) \
- && ( (e) - (s) > 1) \
+ ( ( (e) - (s) > 1) \
+ && UTF8_IS_DOWNGRADEABLE_START(*(s)) \
&& UTF8_IS_CONTINUATION(*((s)+1)))
-/* Number of bytes a code point occupies in UTF-8. */
-#define NATIVE_SKIP(uv) UVCHR_SKIP(uv)
-
-/* Most code which says UNISKIP is really thinking in terms of native code
- * points (0-255) plus all those beyond. This is an imprecise term, but having
- * it means existing code continues to work. For precision, use UVCHR_SKIP,
- * NATIVE_SKIP, or OFFUNISKIP */
-#define UNISKIP(uv) UVCHR_SKIP(uv)
-
/* Longer, but more accurate name */
#define UTF8_IS_ABOVE_LATIN1_START(c) UTF8_IS_ABOVE_LATIN1(c)
@@ -513,7 +736,7 @@ uppercase/lowercase/titlecase/fold into.
#define TWO_BYTE_UTF8_TO_NATIVE(HI, LO) \
(__ASSERT_(FITS_IN_8_BITS(HI)) \
__ASSERT_(FITS_IN_8_BITS(LO)) \
- __ASSERT_(PL_utf8skip[HI] == 2) \
+ __ASSERT_(PL_utf8skip[(U8) HI] == 2) \
__ASSERT_(UTF8_IS_CONTINUATION(LO)) \
UNI_TO_NATIVE(UTF8_ACCUMULATE((NATIVE_UTF8_TO_I8(HI) & UTF_START_MASK(2)), \
(LO))))
@@ -545,7 +768,7 @@ of the input buffer.
=cut
*/
-#define UTF8SKIP(s) PL_utf8skip[*(const U8*)(s)]
+#define UTF8SKIP(s) PL_utf8skip[*(const U8*)(ASSERT_IS_PTR(s))]
/*
=for apidoc Am|STRLEN|UTF8_SKIP|char* s
@@ -615,10 +838,8 @@ The reason it works on both UTF-8 encoded strings and non-UTF-8 encoded, is
that it returns TRUE in each for the exact same set of bit patterns. It is
valid on a subset of what UVCHR_IS_INVARIANT is valid on, so can just use that;
and the compiler should optimize out anything extraneous given the
-implementation of the latter. The |0 makes sure this isn't mistakenly called
-with a ptr argument.
-*/
-#define UTF8_IS_INVARIANT(c) UVCHR_IS_INVARIANT((c) | 0)
+implementation of the latter. */
+#define UTF8_IS_INVARIANT(c) UVCHR_IS_INVARIANT(ASSERT_NOT_PTR(c))
/* Like the above, but its name implies a non-UTF8 input, which as the comments
* above show, doesn't matter as to its implementation */
@@ -695,12 +916,12 @@ with a ptr argument.
: isWORDCHAR_utf8_safe((U8 *) p, (U8 *) e))
#define isALNUM_lazy_if_safe(p, e, UTF) isWORDCHAR_lazy_if_safe(p, e, UTF)
-#define UTF8_MAXLEN UTF8_MAXBYTES
+#define UTF8_MAXLEN UTF8_MAXBYTES
/* A Unicode character can fold to up to 3 characters */
-#define UTF8_MAX_FOLD_CHAR_EXPAND 3
+#define UTF8_MAX_FOLD_CHAR_EXPAND 3
-#define IN_BYTES UNLIKELY(CopHINTS_get(PL_curcop) & HINT_BYTES)
+#define IN_BYTES UNLIKELY(CopHINTS_get(PL_curcop) & HINT_BYTES)
/*
@@ -717,8 +938,8 @@ case any call to string overloading updates the internal UTF-8 encoding flag.
/* Should all strings be treated as Unicode, and not just UTF-8 encoded ones?
* Is so within 'feature unicode_strings' or 'locale :not_characters', and not
- * within 'use bytes'. UTF-8 locales are not tested for here, but perhaps
- * could be */
+ * within 'use bytes'. UTF-8 locales are not tested for here, because it gets
+ * complicated by the probability of having categories in different locales. */
#define IN_UNI_8_BIT \
(( ( (CopHINTS_get(PL_curcop) & HINT_UNI_8_BIT)) \
|| ( CopHINTS_get(PL_curcop) & HINT_LOCALE_PARTIAL \
@@ -726,6 +947,188 @@ case any call to string overloading updates the internal UTF-8 encoding flag.
&& _is_in_locale_category(FALSE, -1))) \
&& (! IN_BYTES))
+#define UNICODE_SURROGATE_FIRST 0xD800
+#define UNICODE_SURROGATE_LAST 0xDFFF
+
+/*
+=for apidoc Am|bool|UNICODE_IS_SURROGATE|const UV uv
+
+Returns a boolean as to whether or not C<uv> is one of the Unicode surrogate
+code points
+
+=for apidoc Am|bool|UTF8_IS_SURROGATE|const U8 *s|const U8 *e
+
+Evaluates to non-zero if the first few bytes of the string starting at C<s> and
+looking no further than S<C<e - 1>> are well-formed UTF-8 that represents one
+of the Unicode surrogate code points; otherwise it evaluates to 0. If
+non-zero, the value gives how many bytes starting at C<s> comprise the code
+point's representation.
+
+=cut
+ */
+
+#define UNICODE_IS_SURROGATE(uv) UNLIKELY(inRANGE(uv, UNICODE_SURROGATE_FIRST, \
+ UNICODE_SURROGATE_LAST))
+#define UTF8_IS_SURROGATE(s, e) is_SURROGATE_utf8_safe(s, e)
+
+/*
+
+=for apidoc AmnU|UV|UNICODE_REPLACEMENT
+
+Evaluates to 0xFFFD, the code point of the Unicode REPLACEMENT CHARACTER
+
+=for apidoc Am|bool|UNICODE_IS_REPLACEMENT|const UV uv
+
+Returns a boolean as to whether or not C<uv> is the Unicode REPLACEMENT
+CHARACTER
+
+=for apidoc Am|bool|UTF8_IS_REPLACEMENT|const U8 *s|const U8 *e
+
+Evaluates to non-zero if the first few bytes of the string starting at C<s> and
+looking no further than S<C<e - 1>> are well-formed UTF-8 that represents the
+Unicode REPLACEMENT CHARACTER; otherwise it evaluates to 0. If non-zero, the
+value gives how many bytes starting at C<s> comprise the code point's
+representation.
+
+=cut
+ */
+#define UNICODE_REPLACEMENT 0xFFFD
+#define UNICODE_IS_REPLACEMENT(uv) UNLIKELY((UV) (uv) == UNICODE_REPLACEMENT)
+#define UTF8_IS_REPLACEMENT(s, send) \
+ UNLIKELY( \
+ ((send) - (s)) >= ((SSize_t)(sizeof(REPLACEMENT_CHARACTER_UTF8) - 1))\
+ && memEQ((s), REPLACEMENT_CHARACTER_UTF8, \
+ sizeof(REPLACEMENT_CHARACTER_UTF8) - 1))
+
+/* Max legal code point according to Unicode */
+#define PERL_UNICODE_MAX 0x10FFFF
+
+/*
+
+=for apidoc Am|bool|UNICODE_IS_SUPER|const UV uv
+
+Returns a boolean as to whether or not C<uv> is above the maximum legal Unicode
+code point of U+10FFFF.
+
+=cut
+*/
+
+#define UNICODE_IS_SUPER(uv) UNLIKELY((UV) (uv) > PERL_UNICODE_MAX)
+
+/*
+=for apidoc Am|bool|UTF8_IS_SUPER|const U8 *s|const U8 *e
+
+Recall that Perl recognizes an extension to UTF-8 that can encode code
+points larger than the ones defined by Unicode, which are 0..0x10FFFF.
+
+This macro evaluates to non-zero if the first few bytes of the string starting
+at C<s> and looking no further than S<C<e - 1>> are from this UTF-8 extension;
+otherwise it evaluates to 0. If non-zero, the return is how many bytes
+starting at C<s> comprise the code point's representation.
+
+0 is returned if the bytes are not well-formed extended UTF-8, or if they
+represent a code point that cannot fit in a UV on the current platform. Hence
+this macro can give different results when run on a 64-bit word machine than on
+one with a 32-bit word size.
+
+Note that it is illegal in Perl to have code points that are larger than what can
+fit in an IV on the current machine; and illegal in Unicode to have any that
+this macro matches
+
+=cut
+
+ * ASCII EBCDIC I8
+ * U+10FFFF: \xF4\x8F\xBF\xBF \xF9\xA1\xBF\xBF\xBF max legal Unicode
+ * U+110000: \xF4\x90\x80\x80 \xF9\xA2\xA0\xA0\xA0
+ * U+110001: \xF4\x90\x80\x81 \xF9\xA2\xA0\xA0\xA1
+ */
+#define UTF_START_BYTE_110000_ UTF_START_BYTE(PERL_UNICODE_MAX + 1, 21)
+#define UTF_FIRST_CONT_BYTE_110000_ \
+ UTF_FIRST_CONT_BYTE(PERL_UNICODE_MAX + 1, 21)
+#define UTF8_IS_SUPER(s, e) \
+ ( ((e) - (s)) >= UNISKIP_BY_MSB_(20) \
+ && ( NATIVE_UTF8_TO_I8(s[0]) >= UTF_START_BYTE_110000_ \
+ && ( NATIVE_UTF8_TO_I8(s[0]) > UTF_START_BYTE_110000_ \
+ || NATIVE_UTF8_TO_I8(s[1]) >= UTF_FIRST_CONT_BYTE_110000_))) \
+ ? isUTF8_CHAR(s, e) \
+ : 0
+
+/*
+=for apidoc Am|bool|UNICODE_IS_NONCHAR|const UV uv
+
+Returns a boolean as to whether or not C<uv> is one of the Unicode
+non-character code points
+
+=cut
+*/
+
+/* Is 'uv' one of the 32 contiguous-range noncharacters? */
+#define UNICODE_IS_32_CONTIGUOUS_NONCHARS(uv) \
+ UNLIKELY(inRANGE(uv, 0xFDD0, 0xFDEF))
+
+/* Is 'uv' one of the 34 plane-ending noncharacters 0xFFFE, 0xFFFF, 0x1FFFE,
+ * 0x1FFFF, ... 0x10FFFE, 0x10FFFF, given that we know that 'uv' is not above
+ * the Unicode legal max */
+#define UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER(uv) \
+ UNLIKELY(((UV) (uv) & 0xFFFE) == 0xFFFE)
+
+#define UNICODE_IS_NONCHAR(uv) \
+ ( UNLIKELY(UNICODE_IS_32_CONTIGUOUS_NONCHARS(uv)) \
+ || ( UNLIKELY(UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER(uv)) \
+ && LIKELY(! UNICODE_IS_SUPER(uv))))
+
+/*
+=for apidoc Am|bool|UTF8_IS_NONCHAR|const U8 *s|const U8 *e
+
+Evaluates to non-zero if the first few bytes of the string starting at C<s> and
+looking no further than S<C<e - 1>> are well-formed UTF-8 that represents one
+of the Unicode non-character code points; otherwise it evaluates to 0. If
+non-zero, the value gives how many bytes starting at C<s> comprise the code
+point's representation.
+
+=cut
+*/
+#define UTF8_IS_NONCHAR(s, e) is_NONCHAR_utf8_safe(s,e)
+
+/* This is now machine generated, and the 'given' clause is no longer
+ * applicable */
+#define UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC(s, e) \
+ UTF8_IS_NONCHAR(s, e)
+
+/* Surrogates, non-character code points and above-Unicode code points are
+ * problematic in some contexts. These macros allow code that needs to check
+ * for those to quickly exclude the vast majority of code points it will
+ * encounter.
+ *
+ * The lowest such code point is the smallest surrogate, U+D800. We calculate
+ * the start byte of that. 0xD800 occupies 16 bits. */
+#define isUNICODE_POSSIBLY_PROBLEMATIC(uv) ((uv) >= UNICODE_SURROGATE_FIRST)
+#define isUTF8_POSSIBLY_PROBLEMATIC(c) \
+ (NATIVE_UTF8_TO_I8(c) >= UTF_START_BYTE(UNICODE_SURROGATE_FIRST, 16))
+
+/* Perl extends Unicode so that it is possible to encode (as extended UTF-8 or
+ * UTF-EBCDIC) any 64-bit value. No standard known to khw ever encoded higher
+ * than a 31 bit value. On ASCII platforms this just meant arbitrarily saying
+ * nothing could be higher than this. On these the start byte FD gets you to
+ * 31 bits, and FE and FF are forbidden as start bytes. On EBCDIC platforms,
+ * FD gets you only to 26 bits; adding FE to mean 7 total bytes gets you to 30
+ * bits. To get to 31 bits, they treated an initial FF byte idiosyncratically.
+ * It was considered to be the start byte FE meaning it had 7 total bytes, and
+ * the final 1 was treated as an information bit, getting you to 31 bits.
+ *
+ * Perl used to accept this idiosyncratic interpretation of FF, but now rejects
+ * it in order to get to being able to encode 64 bits. The bottom line is that
+ * it is a Perl extension to use the start bytes FE and FF on ASCII platforms,
+ * and the start byte FF on EBCDIC ones. That translates into that it is a
+ * Perl extension to represent anything occupying more than 31 bits on ASCII
+ * platforms; 30 bits on EBCDIC. */
+#define UNICODE_IS_PERL_EXTENDED(uv) \
+ UNLIKELY((UV) (uv) > nBIT_UMAX(31 - ONE_IF_EBCDIC_ZERO_IF_NOT))
+#define UTF8_IS_PERL_EXTENDED(s) \
+ (UTF8SKIP(s) > 6 + ONE_IF_EBCDIC_ZERO_IF_NOT)
+
+/* Largest code point we accept from external sources */
+#define MAX_LEGAL_CP ((UV)IV_MAX)
#define UTF8_ALLOW_EMPTY 0x0001 /* Allow a zero length string */
#define UTF8_GOT_EMPTY UTF8_ALLOW_EMPTY
@@ -822,100 +1225,6 @@ case any call to string overloading updates the internal UTF-8 encoding flag.
#define UTF8_ALLOW_ANYUV 0
#define UTF8_ALLOW_DEFAULT UTF8_ALLOW_ANYUV
-/*
-=for apidoc Am|bool|UTF8_IS_SURROGATE|const U8 *s|const U8 *e
-
-Evaluates to non-zero if the first few bytes of the string starting at C<s> and
-looking no further than S<C<e - 1>> are well-formed UTF-8 that represents one
-of the Unicode surrogate code points; otherwise it evaluates to 0. If
-non-zero, the value gives how many bytes starting at C<s> comprise the code
-point's representation.
-
-=cut
- */
-#define UTF8_IS_SURROGATE(s, e) is_SURROGATE_utf8_safe(s, e)
-
-
-#define UTF8_IS_REPLACEMENT(s, send) is_REPLACEMENT_utf8_safe(s,send)
-
-#define MAX_LEGAL_CP ((UV)IV_MAX)
-
-/*
-=for apidoc Am|bool|UTF8_IS_SUPER|const U8 *s|const U8 *e
-
-Recall that Perl recognizes an extension to UTF-8 that can encode code
-points larger than the ones defined by Unicode, which are 0..0x10FFFF.
-
-This macro evaluates to non-zero if the first few bytes of the string starting
-at C<s> and looking no further than S<C<e - 1>> are from this UTF-8 extension;
-otherwise it evaluates to 0. If non-zero, the value gives how many bytes
-starting at C<s> comprise the code point's representation.
-
-0 is returned if the bytes are not well-formed extended UTF-8, or if they
-represent a code point that cannot fit in a UV on the current platform. Hence
-this macro can give different results when run on a 64-bit word machine than on
-one with a 32-bit word size.
-
-Note that it is illegal to have code points that are larger than what can
-fit in an IV on the current machine.
-
-=cut
-
- * ASCII EBCDIC I8
- * U+10FFFF: \xF4\x8F\xBF\xBF \xF9\xA1\xBF\xBF\xBF max legal Unicode
- * U+110000: \xF4\x90\x80\x80 \xF9\xA2\xA0\xA0\xA0
- * U+110001: \xF4\x90\x80\x81 \xF9\xA2\xA0\xA0\xA1
- */
-#ifdef EBCDIC
-# define UTF8_IS_SUPER(s, e) \
- (( ((e) > (s) + 4) \
- && (NATIVE_UTF8_TO_I8(*(s)) >= 0xF9) \
- && UNLIKELY( NATIVE_UTF8_TO_I8(*(s)) > 0xF9 \
- || (NATIVE_UTF8_TO_I8(*((s) + 1)) >= 0xA2)) \
- && LIKELY((s) + UTF8SKIP(s) <= (e))) \
- ? is_utf8_char_helper(s, s + UTF8SKIP(s), 0) : 0)
-#else
-# define UTF8_IS_SUPER(s, e) \
- (( ((e) > (s) + 3) \
- && (*(U8*) (s)) >= 0xF4 \
- && (UNLIKELY( ((*(U8*) (s)) > 0xF4) \
- || (*((U8*) (s) + 1) >= 0x90))) \
- && LIKELY((s) + UTF8SKIP(s) <= (e))) \
- ? is_utf8_char_helper(s, s + UTF8SKIP(s), 0) : 0)
-#endif
-
-/* These are now machine generated, and the 'given' clause is no longer
- * applicable */
-#define UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC(s, e) \
- cBOOL(is_NONCHAR_utf8_safe(s,e))
-
-/*
-=for apidoc Am|bool|UTF8_IS_NONCHAR|const U8 *s|const U8 *e
-
-Evaluates to non-zero if the first few bytes of the string starting at C<s> and
-looking no further than S<C<e - 1>> are well-formed UTF-8 that represents one
-of the Unicode non-character code points; otherwise it evaluates to 0. If
-non-zero, the value gives how many bytes starting at C<s> comprise the code
-point's representation.
-
-=for apidoc AmnU|UV|UNICODE_REPLACEMENT
-
-Evaluates to 0xFFFD, the code point of the Unicode REPLACEMENT CHARACTER
-
-=cut
- */
-#define UTF8_IS_NONCHAR(s, e) \
- UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC(s, e)
-
-#define UNICODE_SURROGATE_FIRST 0xD800
-#define UNICODE_SURROGATE_LAST 0xDFFF
-#define UNICODE_REPLACEMENT 0xFFFD
-#define UNICODE_BYTE_ORDER_MARK 0xFEFF
-
-/* Though our UTF-8 encoding can go beyond this,
- * let's be conservative and do as Unicode says. */
-#define PERL_UNICODE_MAX 0x10FFFF
-
#define UNICODE_WARN_SURROGATE 0x0001 /* UTF-16 surrogates */
#define UNICODE_WARN_NONCHAR 0x0002 /* Non-char code points */
#define UNICODE_WARN_SUPER 0x0004 /* Above 0x10FFFF */
@@ -950,31 +1259,9 @@ Evaluates to 0xFFFD, the code point of the Unicode REPLACEMENT CHARACTER
#define UNICODE_ALLOW_SUPER 0
#define UNICODE_ALLOW_ANY 0
-/* This matches the 2048 code points between UNICODE_SURROGATE_FIRST (0xD800) and
- * UNICODE_SURROGATE_LAST (0xDFFF) */
-#define UNICODE_IS_SURROGATE(uv) UNLIKELY(((UV) (uv) & (~0xFFFF | 0xF800)) \
- == 0xD800)
-
-#define UNICODE_IS_REPLACEMENT(uv) UNLIKELY((UV) (uv) == UNICODE_REPLACEMENT)
-#define UNICODE_IS_BYTE_ORDER_MARK(uv) UNLIKELY((UV) (uv) \
- == UNICODE_BYTE_ORDER_MARK)
-
-/* Is 'uv' one of the 32 contiguous-range noncharacters? */
-#define UNICODE_IS_32_CONTIGUOUS_NONCHARS(uv) UNLIKELY((UV) (uv) >= 0xFDD0 \
- && (UV) (uv) <= 0xFDEF)
-
-/* Is 'uv' one of the 34 plane-ending noncharacters 0xFFFE, 0xFFFF, 0x1FFFE,
- * 0x1FFFF, ... 0x10FFFE, 0x10FFFF, given that we know that 'uv' is not above
- * the Unicode legal max */
-#define UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER(uv) \
- UNLIKELY(((UV) (uv) & 0xFFFE) == 0xFFFE)
-
-#define UNICODE_IS_NONCHAR(uv) \
- ( UNICODE_IS_32_CONTIGUOUS_NONCHARS(uv) \
- || ( LIKELY( ! UNICODE_IS_SUPER(uv)) \
- && UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER(uv)))
-
-#define UNICODE_IS_SUPER(uv) UNLIKELY((UV) (uv) > PERL_UNICODE_MAX)
+#define UNICODE_BYTE_ORDER_MARK 0xFEFF
+#define UNICODE_IS_BYTE_ORDER_MARK(uv) UNLIKELY((UV) (uv) \
+ == UNICODE_BYTE_ORDER_MARK)
#define LATIN_SMALL_LETTER_SHARP_S LATIN_SMALL_LETTER_SHARP_S_NATIVE
#define LATIN_SMALL_LETTER_Y_WITH_DIAERESIS \
@@ -1020,45 +1307,6 @@ Evaluates to 0xFFFD, the code point of the Unicode REPLACEMENT CHARACTER
#define bytes_from_utf8(s, lenp, is_utf8p) \
bytes_from_utf8_loc(s, lenp, is_utf8p, 0)
-/*
-
-=for apidoc Am|STRLEN|isUTF8_CHAR_flags|const U8 *s|const U8 *e| const U32 flags
-
-Evaluates to non-zero if the first few bytes of the string starting at C<s> and
-looking no further than S<C<e - 1>> are well-formed UTF-8, as extended by Perl,
-that represents some code point, subject to the restrictions given by C<flags>;
-otherwise it evaluates to 0. If non-zero, the value gives how many bytes
-starting at C<s> comprise the code point's representation. Any bytes remaining
-before C<e>, but beyond the ones needed to form the first code point in C<s>,
-are not examined.
-
-If C<flags> is 0, this gives the same results as C<L</isUTF8_CHAR>>;
-if C<flags> is C<UTF8_DISALLOW_ILLEGAL_INTERCHANGE>, this gives the same results
-as C<L</isSTRICT_UTF8_CHAR>>;
-and if C<flags> is C<UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE>, this gives
-the same results as C<L</isC9_STRICT_UTF8_CHAR>>.
-Otherwise C<flags> may be any combination of the C<UTF8_DISALLOW_I<foo>> flags
-understood by C<L</utf8n_to_uvchr>>, with the same meanings.
-
-The three alternative macros are for the most commonly needed validations; they
-are likely to run somewhat faster than this more general one, as they can be
-inlined into your code.
-
-Use L</is_utf8_string_flags>, L</is_utf8_string_loc_flags>, and
-L</is_utf8_string_loclen_flags> to check entire strings.
-
-=cut
-*/
-
-#define isUTF8_CHAR_flags(s, e, flags) \
- (UNLIKELY((e) <= (s)) \
- ? 0 \
- : (UTF8_IS_INVARIANT(*s)) \
- ? 1 \
- : UNLIKELY(((e) - (s)) < UTF8SKIP(s)) \
- ? 0 \
- : is_utf8_char_helper(s, e, flags))
-
/* Do not use; should be deprecated. Use isUTF8_CHAR() instead; this is
* retained solely for backwards compatibility */
#define IS_UTF8_CHAR(p, n) (isUTF8_CHAR(p, (p) + (n)) == n)
diff --git a/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h b/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h
index ce9981b427b..347a7b121fc 100644
--- a/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h
+++ b/Master/tlpkg/tlperl/lib/CORE/utfebcdic.h
@@ -8,15 +8,18 @@
*
* Macros to implement UTF-EBCDIC as perl's internal encoding
* Adapted from version 7.1 of Unicode Technical Report #16:
- * http://www.unicode.org/unicode/reports/tr16
+ * http://www.unicode.org/reports/tr16
*
* To summarize, the way it works is:
* To convert an EBCDIC code point to UTF-EBCDIC:
- * 1) convert to Unicode. No conversion is necesary for code points above
+ * 1) convert to Unicode. No conversion is necessary for code points above
* 255, as Unicode and EBCDIC are identical in this range. For smaller
* code points, the conversion is done by lookup in the PL_e2a table (with
* inverse PL_a2e) in the generated file 'ebcdic_tables.h'. The 'a'
- * stands for ASCII platform, meaning 0-255 Unicode.
+ * stands for ASCII platform, meaning 0-255 Unicode. Use
+ * NATIVE_TO_LATIN1() and LATIN1_TO_NATIVE(), respectively to perform this
+ * lookup. NATIVE_TO_UNI() and UNI_TO_NATIVE() are similarly used for any
+ * input, and know to avoid the lookup for inputs above 255.
* 2) convert that to a utf8-like string called I8 ('I' stands for
* intermediate) with variant characters occupying multiple bytes. This
* step is similar to the utf8-creating step from Unicode, but the details
@@ -45,7 +48,8 @@
* so that lexically comparing two UTF-EBCDIC-variant characters yields
* the Unicode code point order. (To get native code point order, one has
* to convert the latin1-range characters to their native code point
- * value.)
+ * value.) The macros NATIVE_UTF8_TO_I8() and I8_TO_NATIVE_UTF8() do the
+ * table lookups.
*
* For example, the ordinal value of 'A' is 193 in EBCDIC, and also is 193 in
* UTF-EBCDIC. Step 1) converts it to 65, Step 2 leaves it at 65, and Step 3
@@ -65,10 +69,11 @@
*
* The purpose of Step 3 is to make the encoding be invariant for the chosen
* characters. This messes up the convenient patterns found in step 2, so
- * generally, one has to undo step 3 into a temporary to use them. However,
- * one "shadow", or parallel table, PL_utf8skip, has been constructed that
- * doesn't require undoing things. It is such that for each byte, it says
- * how long the sequence is if that (UTF-EBCDIC) byte were to begin it
+ * generally, one has to undo step 3 into a temporary to use them, using the
+ * macro NATIVE_TO_I8(). However, one "shadow", or parallel table,
+ * PL_utf8skip, has been constructed that doesn't require undoing things. It
+ * is such that for each byte, it says how long the sequence is if that
+ * (UTF-EBCDIC) byte were to begin it.
*
* There are actually 3 slightly different UTF-EBCDIC encodings in
* ebcdic_tables.h, one for each of the code pages recognized by Perl. That
@@ -136,20 +141,10 @@ END_EXTERN_C
#define I8_TO_NATIVE_UTF8(b) (__ASSERT_(FITS_IN_8_BITS(b)) PL_utf2e[(U8)(b)])
/* Transforms in wide UV chars */
-#define NATIVE_TO_UNI(ch) (FITS_IN_8_BITS(ch) ? NATIVE_TO_LATIN1(ch) : (UV) (ch))
-#define UNI_TO_NATIVE(ch) (FITS_IN_8_BITS(ch) ? LATIN1_TO_NATIVE(ch) : (UV) (ch))
-
-/* How wide can a single UTF-8 encoded character become in bytes. */
-/* NOTE: Strictly speaking Perl's UTF-8 should not be called UTF-8 since UTF-8
- * is an encoding of Unicode, and Unicode's upper limit, 0x10FFFF, can be
- * expressed with 5 bytes. However, Perl thinks of UTF-8 as a way to encode
- * non-negative integers in a binary format, even those above Unicode. 14 is
- * the smallest number that covers 2**64
- *
- * WARNING: This number must be in sync with the value in
- * regen/charset_translations.pl. */
-#define UTF8_MAXBYTES 14
-
+#define NATIVE_TO_UNI(ch) \
+ (FITS_IN_8_BITS(ch) ? NATIVE_TO_LATIN1(ch) : (UV) (ch))
+#define UNI_TO_NATIVE(ch) \
+ (FITS_IN_8_BITS(ch) ? LATIN1_TO_NATIVE(ch) : (UV) (ch))
/*
The following table is adapted from tr16, it shows the I8 encoding of Unicode code points.
@@ -202,276 +197,12 @@ possible to UTF-8-encode a single code point in different ways, but that is
explicitly forbidden, and the shortest possible encoding should always be used
(and that is what Perl does). */
-/* It turns out that just this one number is sufficient to derive all the basic
- * macros for UTF-8 and UTF-EBCDIC. Everything follows from the fact that
- * there are 6 bits of real information in a UTF-8 continuation byte vs. 5 bits
- * in a UTF-EBCDIC one. */
-
-#define UTF_ACCUMULATION_SHIFT 5
-
-/* Also needed is how perl handles a start byte of 8 one bits. The decision
- * was made to just append the minimal number of bytes after that so that code
- * points up to 64 bits wide could be represented. In UTF-8, that was an extra
- * 5 bytes, and in UTF-EBCDIC it's 6. The result is in UTF8_MAXBYTES defined
- * above. This implementation has the advantage that you have everything you
- * need in the first byte. Other ways of extending UTF-8 have been devised,
- * some to arbitrarily high code points. But they require looking at the next
- * byte(s) when the first one is 8 one bits. */
+#define UTF_CONTINUATION_BYTE_INFO_BITS UTF_EBCDIC_CONTINUATION_BYTE_INFO_BITS
-/* These others are for efficiency or for other decisions we've made */
-
-#define isUTF8_POSSIBLY_PROBLEMATIC(c) \
- _generic_isCC(c, _CC_UTF8_START_BYTE_IS_FOR_AT_LEAST_SURROGATE)
-
-/* ^? is defined to be APC on EBCDIC systems. See the definition of toCTRL()
- * for more */
+/* ^? is defined to be APC on EBCDIC systems, as specified in Unicode Technical
+ * Report #16. See the definition of toCTRL() for more */
#define QUESTION_MARK_CTRL LATIN1_TO_NATIVE(0x9F)
-#define UNICODE_IS_PERL_EXTENDED(uv) UNLIKELY((UV) (uv) > 0x3FFFFFFF)
-
-/* Helper macros for isUTF8_CHAR_foo, so use those instead of this. These were
- * generated by regen/regcharclass.pl, and then moved here. Then they were
- * hand-edited to add some LIKELY() calls, presuming that malformations are
- * unlikely. The lines that generated it were then commented out. This was
- * done because it takes on the order of 10 minutes to generate, and is never
- * going to change, unless the generated code is improved, and figuring out the
- * LIKELYs there would be hard.
- *
- */
-
-#if '^' == 95 /* CP 1047 */
-/* UTF8_CHAR: Matches legal UTF-EBCDIC variant code points up through 0x1FFFFFF
-
- 0xA0 - 0x1FFFFF
-*/
-
-/*** GENERATED CODE ***/
-#define is_UTF8_CHAR_utf8_no_length_checks(s) \
-( ( 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAC ) || ( 0xAE <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB6 ) ) ?\
- ( LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\
-: ( ( ( ((const U8*)s)[0] & 0xFC ) == 0xB8 ) || ((const U8*)s)[0] == 0xBC || ( ( ((const U8*)s)[0] & 0xFE ) == 0xBE ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\
- ( LIKELY( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\
-: ( 0xDC == ((const U8*)s)[0] ) ? \
- ( LIKELY( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
-: ( ( 0xDD <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xDF ) || 0xE1 == ((const U8*)s)[0] || ( 0xEA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) ) ?\
- ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
-: ( 0xED == ((const U8*)s)[0] ) ? \
- ( LIKELY( ( ( ( ( 0x49 == ((const U8*)s)[1] || 0x4A == ((const U8*)s)[1] ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\
-: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )
-
-/* UTF8_CHAR_STRICT: Matches legal Unicode UTF-8 variant code points, no
- surrrogates nor non-character code points */
-/*** GENERATED CODE ***/
-#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) \
-( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ?\
- ( LIKELY( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
- : ( 0x73 == ((const U8*)s)[1] ) ? \
- ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ?\
- ( LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ? 4 : 0 )\
- : LIKELY( ( 0x73 == ((const U8*)s)[2] ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFE ) == 0x70 ) ) ? 4 : 0 )\
- : 0 )
-
-
-/*** GENERATED CODE ***/
-#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) \
-( ( 0xED == ((const U8*)s)[0] ) ? \
- ( ( ( ( ((const U8*)s)[1] & 0xEF ) == 0x49 ) || ( ( ((const U8*)s)[1] & 0xF9 ) == 0x51 ) || ((const U8*)s)[1] == 0x63 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) || ((const U8*)s)[1] == 0x69 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x70 ) ) ?\
- ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\
- : ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x62 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x64 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x68 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x71 ) ) ?\
- ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ?\
- ( LIKELY( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\
- : ( 0x73 == ((const U8*)s)[2] ) ? \
- ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ?\
- ( LIKELY( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ? 5 : 0 )\
- : LIKELY( ( 0x73 == ((const U8*)s)[3] ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFE ) == 0x70 ) ) ? 5 : 0 )\
- : 0 ) \
- : 0 ) \
-: ( 0xEE == ((const U8*)s)[0] ) ? \
- ( ( 0x41 == ((const U8*)s)[1] ) ? \
- ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\
- : ( 0x42 == ((const U8*)s)[1] ) ? \
- ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ?\
- ( LIKELY( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\
- : ( 0x73 == ((const U8*)s)[2] ) ? \
- ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ?\
- ( LIKELY( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ? 5 : 0 )\
- : LIKELY( ( 0x73 == ((const U8*)s)[3] ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFE ) == 0x70 ) ) ? 5 : 0 )\
- : 0 ) \
- : 0 ) \
-: 0 )
-
-
-/*** GENERATED CODE ***/
-#define is_STRICT_UTF8_CHAR_utf8_no_length_checks(s) \
-( ( 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAC ) || ( 0xAE <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB6 ) ) ?\
- ( LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\
-: ( ( ( ((const U8*)s)[0] & 0xFC ) == 0xB8 ) || ((const U8*)s)[0] == 0xBC || ( ( ((const U8*)s)[0] & 0xFE ) == 0xBE ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\
- ( LIKELY( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\
-: ( 0xDC == ((const U8*)s)[0] ) ? \
- ( LIKELY( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
-: ( 0xDD == ((const U8*)s)[0] ) ? \
- ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x64 ) || ( 0x67 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ?\
- ( LIKELY( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
- : ( 0x73 == ((const U8*)s)[1] ) ? \
- ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x54 ) || ( 0x57 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ?\
- ( LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ? 4 : 0 )\
- : ( 0x55 == ((const U8*)s)[2] ) ? \
- ( LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\
- : ( 0x56 == ((const U8*)s)[2] ) ? \
- ( LIKELY( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ? 4 : 0 )\
- : LIKELY( ( 0x73 == ((const U8*)s)[2] ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFE ) == 0x70 ) ) ? 4 : 0 )\
- : 0 ) \
-: ( 0xDE == ((const U8*)s)[0] || 0xE1 == ((const U8*)s)[0] || 0xEB == ((const U8*)s)[0] ) ? \
- ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
-: ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ? is_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) : is_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) )
-
-/* C9_STRICT_UTF8_CHAR: Matches legal Unicode UTF-8 variant code points
- including non-character code points, no surrogates
- 0x00A0 - 0xD7FF
- 0xE000 - 0x10FFFF
-*/
-/*** GENERATED CODE ***/
-#define is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks(s) \
-( ( 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAC ) || ( 0xAE <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB6 ) ) ?\
- ( LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) ? 2 : 0 )\
-: ( ( ( ((const U8*)s)[0] & 0xFC ) == 0xB8 ) || ((const U8*)s)[0] == 0xBC || ( ( ((const U8*)s)[0] & 0xFE ) == 0xBE ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\
- ( LIKELY( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) ? 3 : 0 )\
-: ( 0xDC == ((const U8*)s)[0] ) ? \
- ( LIKELY( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
-: ( 0xDD == ((const U8*)s)[0] ) ? \
- ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x64 ) || ( 0x67 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
-: ( ( ((const U8*)s)[0] & 0xFE ) == 0xDE || 0xE1 == ((const U8*)s)[0] || ( 0xEA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) ) ?\
- ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) ? 4 : 0 )\
-: ( 0xED == ((const U8*)s)[0] ) ? \
- ( LIKELY( ( ( ( ( 0x49 == ((const U8*)s)[1] || 0x4A == ((const U8*)s)[1] ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFC ) == 0x70 ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )\
-: LIKELY( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] || 0x42 == ((const U8*)s)[1] ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFC ) == 0x70 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( ((const U8*)s)[4] & 0xFC ) == 0x70 ) ) ? 5 : 0 )
-
-#endif
-
-#if '^' == 176 /* CP 037 */
-
-/*** GENERATED CODE ***/
-#define is_UTF8_CHAR_utf8_no_length_checks(s) \
-( ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAF ) || ( 0xB1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB5 ) ) ?\
- ( LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\
-: ( ((const U8*)s)[0] == 0xB7 || ( ( ((const U8*)s)[0] & 0xFE ) == 0xB8 ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xBC ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\
- ( LIKELY( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\
-: ( 0xDC == ((const U8*)s)[0] ) ? \
- ( LIKELY( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
-: ( ( 0xDD <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xDF ) || 0xE1 == ((const U8*)s)[0] || ( 0xEA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) ) ?\
- ( LIKELY( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
-: ( 0xED == ((const U8*)s)[0] ) ? \
- ( LIKELY( ( ( ( ( 0x49 == ((const U8*)s)[1] || 0x4A == ((const U8*)s)[1] ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\
-: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && LIKELY( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && LIKELY( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )
-
-/* XXX Below do not have LIKELY() added */
-/*** GENERATED CODE ***/
-#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) \
-( ( ( ( ((const U8*)s)[1] & 0xEF ) == 0x49 ) || ( ( ((const U8*)s)[1] & 0xF9 ) == 0x51 ) || ((const U8*)s)[1] == 0x62 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x64 ) || ( ( ((const U8*)s)[1] & 0xFD ) == 0x68 ) || ((const U8*)s)[1] == 0x71 ) ?\
- ( ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\
- : ( ((const U8*)s)[1] == 0x4A || ((const U8*)s)[1] == 0x52 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x54 ) || ((const U8*)s)[1] == 0x58 || ((const U8*)s)[1] == 0x5F || ((const U8*)s)[1] == 0x63 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x65 ) || ((const U8*)s)[1] == 0x69 || ( ( ((const U8*)s)[1] & 0xFD ) == 0x70 ) ) ?\
- ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFE ) == 0x70 ) ?\
- ( ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\
- : ( 0x72 == ((const U8*)s)[2] ) ? \
- ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFE ) == 0x70 ) ?\
- ( ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ? 5 : 0 )\
- : ( ( 0x72 == ((const U8*)s)[3] ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || 0x70 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
- : 0 ) \
- : 0 )
-
-
-/*** GENERATED CODE ***/
-#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) \
-( ( 0xEE == ((const U8*)s)[0] ) ? \
- ( ( 0x41 == ((const U8*)s)[1] ) ? \
- ( ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\
- : ( 0x42 == ((const U8*)s)[1] ) ? \
- ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFE ) == 0x70 ) ?\
- ( ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\
- : ( 0x72 == ((const U8*)s)[2] ) ? \
- ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( ((const U8*)s)[3] & 0xFE ) == 0x70 ) ?\
- ( ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ? 5 : 0 )\
- : ( ( 0x72 == ((const U8*)s)[3] ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || 0x70 == ((const U8*)s)[4] ) ) ? 5 : 0 )\
- : 0 ) \
- : 0 ) \
-: 0 )
-
-
-/*** GENERATED CODE ***/
-#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part2(s) \
-( ( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )
-
-
-/*** GENERATED CODE ***/
-#define is_STRICT_UTF8_CHAR_utf8_no_length_checks_part3(s) \
-( ( 0xDD == ((const U8*)s)[0] ) ? \
- ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( ((const U8*)s)[1] & 0xFE ) == 0x62 || ( 0x66 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFE ) == 0x70 ) ?\
- ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
- : ( 0x72 == ((const U8*)s)[1] ) ? \
- ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x54 ) || ( 0x57 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFE ) == 0x70 ) ?\
- ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ? 4 : 0 )\
- : ( 0x55 == ((const U8*)s)[2] ) ? \
- ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x56 ) ) ? 4 : 0 )\
- : ( 0x56 == ((const U8*)s)[2] ) ? \
- ( ( ( 0x57 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ? 4 : 0 )\
- : ( ( 0x72 == ((const U8*)s)[2] ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || 0x70 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
- : 0 ) \
-: ( 0xDE == ((const U8*)s)[0] || 0xE1 == ((const U8*)s)[0] || 0xEB == ((const U8*)s)[0] ) ?\
- ( ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
-: ( 0xDF == ((const U8*)s)[0] || 0xEA == ((const U8*)s)[0] || 0xEC == ((const U8*)s)[0] ) ?\
- ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( ((const U8*)s)[1] & 0xFE ) == 0x70 ) ?\
- ( ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
- : ( 0x72 == ((const U8*)s)[1] ) ? \
- ( ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( ((const U8*)s)[2] & 0xFE ) == 0x70 ) ?\
- ( ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ? 4 : 0 )\
- : ( ( 0x72 == ((const U8*)s)[2] ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || 0x70 == ((const U8*)s)[3] ) ) ? 4 : 0 )\
- : 0 ) \
-: ( 0xED == ((const U8*)s)[0] ) ? is_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) : is_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) )
-
-
-/*** GENERATED CODE ***/
-#define is_STRICT_UTF8_CHAR_utf8_no_length_checks(s) \
-( ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAF ) || ( 0xB1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB5 ) ) ?\
- ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )\
-: ( ((const U8*)s)[0] == 0xB7 || ( ( ((const U8*)s)[0] & 0xFE ) == 0xB8 ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xBC ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\
- ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\
-: ( 0xDC == ((const U8*)s)[0] ) ? is_STRICT_UTF8_CHAR_utf8_no_length_checks_part2(s) : is_STRICT_UTF8_CHAR_utf8_no_length_checks_part3(s) )
-
-/* C9_STRICT_UTF8_CHAR: Matches legal Unicode UTF-8 variant code points
- including non-character code points, no surrogates
- 0x00A0 - 0xD7FF
- 0xE000 - 0x10FFFF
-*/
-/*** GENERATED CODE ***/
-#define is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) \
-( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) ? 2 : 0 )
-
-
-/*** GENERATED CODE ***/
-#define is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) \
-( ( ((const U8*)s)[0] == 0xB7 || ( ( ((const U8*)s)[0] & 0xFE ) == 0xB8 ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xBC ) || ( ( ((const U8*)s)[0] & 0xEE ) == 0xCA ) || ( ( ((const U8*)s)[0] & 0xFC ) == 0xCC ) ) ?\
- ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) ? 3 : 0 )\
-: ( 0xDC == ((const U8*)s)[0] ) ? \
- ( ( ( ( ( 0x57 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
-: ( 0xDD == ((const U8*)s)[0] ) ? \
- ( ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( ((const U8*)s)[1] & 0xFE ) == 0x62 || ( 0x66 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
-: ( ( ((const U8*)s)[0] & 0xFE ) == 0xDE || 0xE1 == ((const U8*)s)[0] || ( 0xEA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xEC ) ) ?\
- ( ( ( ( ( 0x41 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) ? 4 : 0 )\
-: ( 0xED == ((const U8*)s)[0] ) ? \
- ( ( ( ( ( ( 0x49 == ((const U8*)s)[1] || 0x4A == ((const U8*)s)[1] ) || ( 0x51 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x59 ) || 0x5F == ((const U8*)s)[1] || ( 0x62 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[1] && ((const U8*)s)[1] <= 0x72 ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )\
-: ( ( ( ( ( 0xEE == ((const U8*)s)[0] ) && ( 0x41 == ((const U8*)s)[1] || 0x42 == ((const U8*)s)[1] ) ) && ( ( 0x41 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x59 ) || 0x5F == ((const U8*)s)[2] || ( 0x62 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[2] && ((const U8*)s)[2] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x59 ) || 0x5F == ((const U8*)s)[3] || ( 0x62 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[3] && ((const U8*)s)[3] <= 0x72 ) ) ) && ( ( 0x41 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x4A ) || ( 0x51 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x59 ) || 0x5F == ((const U8*)s)[4] || ( 0x62 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x6A ) || ( 0x70 <= ((const U8*)s)[4] && ((const U8*)s)[4] <= 0x72 ) ) ) ? 5 : 0 )
-
-
-/*** GENERATED CODE ***/
-#define is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks(s) \
-( ( 0x78 == ((const U8*)s)[0] || 0x80 == ((const U8*)s)[0] || ( 0x8A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0x90 ) || ( 0x9A <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xA0 ) || ( 0xAA <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xAF ) || ( 0xB1 <= ((const U8*)s)[0] && ((const U8*)s)[0] <= 0xB5 ) ) ? is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part0(s) : is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part1(s) )
-
-#endif
-
-/* is_UTF8_CHAR_utf8_no_length_checks() in both code pages handles UTF-8 that
- * has this start byte (expressed in I8) as the maximum */
-#define _IS_UTF8_CHAR_HIGHEST_START_BYTE 0xF9
-
/*
* ex: set ts=8 sts=4 sw=4 et:
*/
diff --git a/Master/tlpkg/tlperl/lib/CORE/util.h b/Master/tlpkg/tlperl/lib/CORE/util.h
index b2e0b7797b5..d9b61611e48 100644
--- a/Master/tlpkg/tlperl/lib/CORE/util.h
+++ b/Master/tlpkg/tlperl/lib/CORE/util.h
@@ -23,11 +23,6 @@
# define PERL_FILE_IS_ABSOLUTE(f) \
(*(f) == '/' || *(f) == '\\' /* UNC/rooted path */ \
|| ((f)[0] && (f)[1] == ':')) /* drive name */
-#elif defined(NETWARE)
-# define PERL_FILE_IS_ABSOLUTE(f) \
- (((f)[0] && (f)[1] == ':') /* drive name */ \
- || ((f)[0] == '\\' && (f)[1] == '\\') /* UNC path */ \
- || ((f)[3] == ':')) /* volume name, currently only sys */
#elif defined(DOSISH)
# define PERL_FILE_IS_ABSOLUTE(f) \
(*(f) == '/' \
@@ -189,7 +184,7 @@ typedef struct {
/* uses var file to set default filename for newXS_deffile to use for CvFILE */
#define HSf_SETXSUBFN 0x00000020
#define HSf_POPMARK 0x00000040 /* popmark mode or you must supply ax and items */
-#define HSf_IMP_CXT 0x00000080 /* ABI, threaded/PERL_IMPLICIT_CONTEXT, pTHX_ present */
+#define HSf_IMP_CXT 0x00000080 /* ABI, threaded, MULTIPLICITY, pTHX_ present */
#define HSm_INTRPSIZE 0xFFFF0000 /* ABI, interp struct size */
/* A mask of bits in the key which must always match between a XS mod and interp.
Also if all ABI bits in a key are true, skip all ABI checks, it is very
@@ -203,7 +198,7 @@ typedef struct {
/* if in the future "" and NULL must be separated, XSVERLEN would be 0
means arg not present, 1 is empty string/null byte */
/* (((key) & 0x0000FF00) >> 8) is less efficient on Visual C */
-#define HS_GETXSVERLEN(key) ((key) >> 8 & 0xFF)
+#define HS_GETXSVERLEN(key) ((U8) ((key) >> 8))
#define HS_GETAPIVERLEN(key) ((key) & HSm_APIVERLEN)
/* internal to util.h macro to create a packed handshake key, all args must be constants */
@@ -226,7 +221,7 @@ means arg not present, 1 is empty string/null byte */
not public API. This more friendly version already collected all ABI info */
/* U32 return = (bool setxsubfn, bool popmark, "litteral_string_api_ver",
"litteral_string_xs_ver") */
-#ifdef PERL_IMPLICIT_CONTEXT
+#ifdef MULTIPLICITY
# define HS_KEY(setxsubfn, popmark, apiver, xsver) \
HS_KEYp(sizeof(PerlInterpreter), TRUE, setxsubfn, popmark, \
sizeof("" apiver "")-1, sizeof("" xsver "")-1)
@@ -252,7 +247,9 @@ returning NULL if not found. The terminating NUL bytes are not compared.
#ifdef HAS_MEMMEM
# define ninstr(big, bigend, little, lend) \
- ((char *) memmem((big), (bigend) - (big), \
+ (__ASSERT_(bigend >= big) \
+ __ASSERT_(lend >= little) \
+ (char *) memmem((big), (bigend) - (big), \
(little), (lend) - (little)))
#else
# define ninstr(a,b,c,d) Perl_ninstr(a,b,c,d)
diff --git a/Master/tlpkg/tlperl/lib/CORE/vmem.h b/Master/tlpkg/tlperl/lib/CORE/vmem.h
index bd765f68e22..c425ae187a3 100644
--- a/Master/tlpkg/tlperl/lib/CORE/vmem.h
+++ b/Master/tlpkg/tlperl/lib/CORE/vmem.h
@@ -64,19 +64,37 @@ inline void MEMODSlx(char *str, long x)
/*
* Pass all memory requests through to the compiler's msvcr*.dll.
- * Optionaly track by using a doubly linked header.
+ * Optionally track by using a doubly linked header.
*/
#ifdef _USE_LINKED_LIST
class VMem;
+
+/*
+ * Address an alignment issue with x64 mingw-w64 ports of gcc-12 and
+ * (presumably) later. We do the same thing again 16 lines further down.
+ * See https://github.com/Perl/perl5/issues/19824
+ */
+
+#if defined(__MINGW64__) && __GNUC__ > 11
+typedef struct _MemoryBlockHeader* PMEMORY_BLOCK_HEADER __attribute__ ((aligned(16)));
+#else
typedef struct _MemoryBlockHeader* PMEMORY_BLOCK_HEADER;
+#endif
+
typedef struct _MemoryBlockHeader {
PMEMORY_BLOCK_HEADER pNext;
PMEMORY_BLOCK_HEADER pPrev;
VMem *owner;
+
+#if defined(__MINGW64__) && __GNUC__ > 11
+} MEMORY_BLOCK_HEADER __attribute__ ((aligned(16))), *PMEMORY_BLOCK_HEADER;
+#else
} MEMORY_BLOCK_HEADER, *PMEMORY_BLOCK_HEADER;
#endif
+#endif
+
class VMem
{
public:
diff --git a/Master/tlpkg/tlperl/lib/CORE/vutil.h b/Master/tlpkg/tlperl/lib/CORE/vutil.h
index 61caf70ba54..9484e254838 100644
--- a/Master/tlpkg/tlperl/lib/CORE/vutil.h
+++ b/Master/tlpkg/tlperl/lib/CORE/vutil.h
@@ -10,122 +10,12 @@
* AV *av2 = MUTABLE_AV(sv); <== GOOD: it may warn
*/
-#ifndef MUTABLE_PTR
-# if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
-# define MUTABLE_PTR(p) ({ void *_p = (p); _p; })
-# else
-# define MUTABLE_PTR(p) ((void *) (p))
-# endif
-#endif
-
-#ifndef MUTABLE_AV
-# define MUTABLE_AV(p) ((AV *)MUTABLE_PTR(p))
-#endif
-#ifndef MUTABLE_CV
-# define MUTABLE_CV(p) ((CV *)MUTABLE_PTR(p))
-#endif
-#ifndef MUTABLE_GV
-# define MUTABLE_GV(p) ((GV *)MUTABLE_PTR(p))
-#endif
-#ifndef MUTABLE_HV
-# define MUTABLE_HV(p) ((HV *)MUTABLE_PTR(p))
-#endif
-#ifndef MUTABLE_IO
-# define MUTABLE_IO(p) ((IO *)MUTABLE_PTR(p))
-#endif
-#ifndef MUTABLE_SV
-# define MUTABLE_SV(p) ((SV *)MUTABLE_PTR(p))
-#endif
-
-#ifndef SvPVx_nolen_const
-# if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN)
-# define SvPVx_nolen_const(sv) ({SV *_sv = (sv); SvPV_nolen_const(_sv); })
-# else
-# define SvPVx_nolen_const(sv) (SvPV_nolen_const(sv))
-# endif
-#endif
-
-#ifndef PERL_ARGS_ASSERT_CK_WARNER
-static void Perl_ck_warner(pTHX_ U32 err, const char* pat, ...);
-
-# ifdef vwarner
-static
-void
-Perl_ck_warner(pTHX_ U32 err, const char* pat, ...)
-{
- va_list args;
-
- PERL_UNUSED_ARG(err);
- if (ckWARN(err)) {
- va_list args;
- va_start(args, pat);
- vwarner(err, pat, &args);
- va_end(args);
- }
-}
-# else
-/* yes this replicates my_warner */
-static
-void
-Perl_ck_warner(pTHX_ U32 err, const char* pat, ...)
-{
- SV *sv;
- va_list args;
-
- PERL_UNUSED_ARG(err);
-
- va_start(args, pat);
- sv = vnewSVpvf(pat, &args);
- va_end(args);
- sv_2mortal(sv);
- warn("%s", SvPV_nolen(sv));
-}
-# endif
-#endif
-
#if PERL_VERSION_LT(5,15,4)
# define ISA_VERSION_OBJ(v) (sv_isobject(v) && sv_derived_from(v,"version"))
#else
# define ISA_VERSION_OBJ(v) (sv_isobject(v) && sv_derived_from_pvn(v,"version",7,0))
#endif
-#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE
-#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)
-
-/* prototype to pass -Wmissing-prototypes */
-STATIC void
-S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params);
-
-STATIC void
-S_croak_xs_usage(pTHX_ const CV *const cv, const char *const params)
-{
- const GV *const gv = CvGV(cv);
-
- PERL_ARGS_ASSERT_CROAK_XS_USAGE;
-
- if (gv) {
- const char *const gvname = GvNAME(gv);
- const HV *const stash = GvSTASH(gv);
- const char *const hvname = stash ? HvNAME(stash) : NULL;
-
- if (hvname)
- Perl_croak_nocontext("Usage: %s::%s(%s)", hvname, gvname, params);
- else
- Perl_croak_nocontext("Usage: %s(%s)", gvname, params);
- } else {
- /* Pants. I don't think that it should be possible to get here. */
- Perl_croak_nocontext("Usage: CODE(0x%" UVxf ")(%s)", PTR2UV(cv), params);
- }
-}
-
-#ifdef PERL_IMPLICIT_CONTEXT
-#define croak_xs_usage(a,b) S_croak_xs_usage(aTHX_ a,b)
-#else
-#define croak_xs_usage S_croak_xs_usage
-#endif
-
-#endif
-
#if PERL_VERSION_GE(5,9,0) && !defined(PERL_CORE)
# define VUTIL_REPLACE_CORE 1
@@ -221,44 +111,4 @@ const char * Perl_prescan_version(pTHX_ const char *s, bool strict, const char**
assert(pat)
#endif
-
-#if PERL_VERSION_LT(5,27,9)
-# define LC_NUMERIC_LOCK(cond)
-# define LC_NUMERIC_UNLOCK
-# if PERL_VERSION_LT(5,19,0)
-# undef STORE_LC_NUMERIC_SET_STANDARD
-# undef RESTORE_LC_NUMERIC
-# undef DECLARATION_FOR_LC_NUMERIC_MANIPULATION
-# ifdef USE_LOCALE
-# define DECLARATION_FOR_LC_NUMERIC_MANIPULATION char *loc
-# define STORE_NUMERIC_SET_STANDARD()\
- loc = savepv(setlocale(LC_NUMERIC, NULL)); \
- SAVEFREEPV(loc); \
- setlocale(LC_NUMERIC, "C");
-# define RESTORE_LC_NUMERIC()\
- setlocale(LC_NUMERIC, loc);
-# else
-# define DECLARATION_FOR_LC_NUMERIC_MANIPULATION
-# define STORE_LC_NUMERIC_SET_STANDARD()
-# define RESTORE_LC_NUMERIC()
-# endif
-# endif
-#endif
-
-#ifndef LOCK_NUMERIC_STANDARD
-# define LOCK_NUMERIC_STANDARD()
-#endif
-
-#ifndef UNLOCK_NUMERIC_STANDARD
-# define UNLOCK_NUMERIC_STANDARD()
-#endif
-
-/* The names of these changed in 5.28 */
-#ifndef LOCK_LC_NUMERIC_STANDARD
-# define LOCK_LC_NUMERIC_STANDARD() LOCK_NUMERIC_STANDARD()
-#endif
-#ifndef UNLOCK_LC_NUMERIC_STANDARD
-# define UNLOCK_LC_NUMERIC_STANDARD() UNLOCK_NUMERIC_STANDARD()
-#endif
-
/* ex: set ro: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/warnings.h b/Master/tlpkg/tlperl/lib/CORE/warnings.h
index 5547a1161a9..ce1765e9832 100644
--- a/Master/tlpkg/tlperl/lib/CORE/warnings.h
+++ b/Master/tlpkg/tlperl/lib/CORE/warnings.h
@@ -1,4 +1,4 @@
-/* -*- buffer-read-only: t -*-
+/* -*- mode: C; buffer-read-only: t -*-
!!!!!!! DO NOT EDIT THIS FILE !!!!!!!
This file is built by regen/warnings.pl.
Any changes made here will be lost!
@@ -9,7 +9,6 @@
#define Perl_Warn_Bit_(x) (1 << ((x) % 8))
#define PerlWarnIsSet_(a, x) ((a)[Perl_Warn_Off_(x)] & Perl_Warn_Bit_(x))
-
#define G_WARN_OFF 0 /* $^W == 0 */
#define G_WARN_ON 1 /* -w flag and $^W != 0 */
#define G_WARN_ALL_ON 2 /* -W flag */
@@ -18,8 +17,8 @@
#define G_WARN_ALL_MASK (G_WARN_ALL_ON|G_WARN_ALL_OFF)
#define pWARN_STD NULL
-#define pWARN_ALL (STRLEN *) &PL_WARN_ALL /* use warnings 'all' */
-#define pWARN_NONE (STRLEN *) &PL_WARN_NONE /* no warnings 'all' */
+#define pWARN_ALL &PL_WARN_ALL /* use warnings 'all' */
+#define pWARN_NONE &PL_WARN_NONE /* no warnings 'all' */
#define specialWARN(x) ((x) == pWARN_STD || (x) == pWARN_ALL || \
(x) == pWARN_NONE)
@@ -81,75 +80,106 @@
#define WARN_IMPRECISION 46
#define WARN_ILLEGALPROTO 47
+/* Warnings Categories added in Perl 5.011003 */
+
+#define WARN_DEPRECATED__GOTO_CONSTRUCT 48
+#define WARN_DEPRECATED__UNICODE_PROPERTY_NAME 49
+
/* Warnings Categories added in Perl 5.013 */
-#define WARN_NON_UNICODE 48
-#define WARN_NONCHAR 49
-#define WARN_SURROGATE 50
+#define WARN_NON_UNICODE 50
+#define WARN_NONCHAR 51
+#define WARN_SURROGATE 52
/* Warnings Categories added in Perl 5.017 */
-#define WARN_EXPERIMENTAL 51
-#define WARN_EXPERIMENTAL__LEXICAL_SUBS 52
-#define WARN_EXPERIMENTAL__REGEX_SETS 53
-#define WARN_EXPERIMENTAL__SMARTMATCH 54
+#define WARN_EXPERIMENTAL 53
+#define WARN_EXPERIMENTAL__REGEX_SETS 54
/* Warnings Categories added in Perl 5.019 */
-#define WARN_EXPERIMENTAL__POSTDEREF 55
-#define WARN_EXPERIMENTAL__SIGNATURES 56
-#define WARN_SYSCALLS 57
+#define WARN_SYSCALLS 55
/* Warnings Categories added in Perl 5.021 */
-#define WARN_EXPERIMENTAL__BITWISE 58
-#define WARN_EXPERIMENTAL__CONST_ATTR 59
-#define WARN_EXPERIMENTAL__RE_STRICT 60
-#define WARN_EXPERIMENTAL__REFALIASING 61
-#define WARN_EXPERIMENTAL__WIN32_PERLIO 62
-#define WARN_LOCALE 63
-#define WARN_MISSING 64
-#define WARN_REDUNDANT 65
+#define WARN_EXPERIMENTAL__CONST_ATTR 56
+#define WARN_EXPERIMENTAL__RE_STRICT 57
+#define WARN_EXPERIMENTAL__REFALIASING 58
+#define WARN_LOCALE 59
+#define WARN_MISSING 60
+#define WARN_REDUNDANT 61
/* Warnings Categories added in Perl 5.025 */
-#define WARN_EXPERIMENTAL__DECLARED_REFS 66
+#define WARN_EXPERIMENTAL__DECLARED_REFS 62
+
+/* Warnings Categories added in Perl 5.025011 */
+
+#define WARN_DEPRECATED__DOT_IN_INC 63
/* Warnings Categories added in Perl 5.027 */
-#define WARN_EXPERIMENTAL__ALPHA_ASSERTIONS 67
-#define WARN_EXPERIMENTAL__SCRIPT_RUN 68
-#define WARN_SHADOW 69
+#define WARN_SHADOW 64
/* Warnings Categories added in Perl 5.029 */
-#define WARN_EXPERIMENTAL__PRIVATE_USE 70
-#define WARN_EXPERIMENTAL__UNIPROP_WILDCARDS 71
-#define WARN_EXPERIMENTAL__VLB 72
+#define WARN_EXPERIMENTAL__PRIVATE_USE 65
+#define WARN_EXPERIMENTAL__UNIPROP_WILDCARDS 66
+#define WARN_EXPERIMENTAL__VLB 67
-/* Warnings Categories added in Perl 5.031 */
+/* Warnings Categories added in Perl 5.033 */
-#define WARN_EXPERIMENTAL__ISA 73
+#define WARN_EXPERIMENTAL__TRY 68
-/* Warnings Categories added in Perl 5.033 */
+/* Warnings Categories added in Perl 5.035 */
+
+#define WARN_EXPERIMENTAL__ARGS_ARRAY_WITH_SIGNATURES 69
+#define WARN_EXPERIMENTAL__BUILTIN 70
+#define WARN_EXPERIMENTAL__DEFER 71
+#define WARN_EXPERIMENTAL__EXTRA_PAIRED_DELIMITERS 72
+#define WARN_EXPERIMENTAL__FOR_LIST 73
+#define WARN_SCALAR 74
+
+/* Warnings Categories added in Perl 5.035009 */
+
+#define WARN_DEPRECATED__VERSION_DOWNGRADE 75
+
+/* Warnings Categories added in Perl 5.03501 */
+
+#define WARN_DEPRECATED__DELIMITER_WILL_BE_PAIRED 76
+
+/* Warnings Categories added in Perl 5.037 */
+
+#define WARN_EXPERIMENTAL__CLASS 77
+
+/* Warnings Categories added in Perl 5.037009 */
+
+#define WARN_DEPRECATED__APOSTROPHE_AS_PACKAGE_SEPARATOR 78
+
+/* Warnings Categories added in Perl 5.03701 */
-#define WARN_EXPERIMENTAL__TRY 74
-#define WARNsize 19
-#define WARN_ALLstring "\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125"
-#define WARN_NONEstring "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+#define WARN_DEPRECATED__SMARTMATCH 79
+#define WARNsize 20
+#define WARN_ALLstring "\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125\125"
+#define WARN_NONEstring "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
#define isLEXWARN_on \
cBOOL(PL_curcop && PL_curcop->cop_warnings != pWARN_STD)
#define isLEXWARN_off \
cBOOL(!PL_curcop || PL_curcop->cop_warnings == pWARN_STD)
#define isWARN_ONCE (PL_dowarn & (G_WARN_ON|G_WARN_ONCE))
-#define isWARN_on(c,x) (PerlWarnIsSet_((U8 *)(c + 1), 2*(x)))
-#define isWARNf_on(c,x) (PerlWarnIsSet_((U8 *)(c + 1), 2*(x)+1))
+#define hasWARNBIT(c,x) (RCPV_LEN(c) > (2*(x)/8))
+#define isWARN_on(c,x) (hasWARNBIT(c,x) \
+ ? PerlWarnIsSet_((U8 *)(c), 2*(x)) \
+ : 0)
+#define isWARNf_on(c,x) (hasWARNBIT(c,x) \
+ ? PerlWarnIsSet_((U8 *)(c), 2*(x)+1) \
+ : 0)
#define DUP_WARNINGS(p) Perl_dup_warnings(aTHX_ p)
#define free_and_set_cop_warnings(cmp,w) STMT_START { \
- if (!specialWARN((cmp)->cop_warnings)) PerlMemShared_free((cmp)->cop_warnings); \
+ if (!specialWARN((cmp)->cop_warnings)) rcpv_free((cmp)->cop_warnings); \
(cmp)->cop_warnings = w; \
} STMT_END
@@ -224,10 +254,10 @@ category parameters passed.
#define packWARN3(a,b,c) ((a) | ((b)<<8) | ((c)<<16) )
#define packWARN4(a,b,c,d) ((a) | ((b)<<8) | ((c)<<16) | ((d) <<24))
-#define unpackWARN1(x) ((x) & 0xFF)
-#define unpackWARN2(x) (((x) >>8) & 0xFF)
-#define unpackWARN3(x) (((x) >>16) & 0xFF)
-#define unpackWARN4(x) (((x) >>24) & 0xFF)
+#define unpackWARN1(x) ((U8) (x) )
+#define unpackWARN2(x) ((U8) ((x) >> 8))
+#define unpackWARN3(x) ((U8) ((x) >> 16))
+#define unpackWARN4(x) ((U8) ((x) >> 24))
#define ckDEAD(x) \
(PL_curcop && \
@@ -291,37 +321,42 @@ category parameters passed.
=for apidoc Amnh||WARN_VOID
=for apidoc Amnh||WARN_IMPRECISION
=for apidoc Amnh||WARN_ILLEGALPROTO
+=for apidoc Amnh||WARN_DEPRECATED__GOTO_CONSTRUCT
+=for apidoc Amnh||WARN_DEPRECATED__UNICODE_PROPERTY_NAME
=for apidoc Amnh||WARN_NON_UNICODE
=for apidoc Amnh||WARN_NONCHAR
=for apidoc Amnh||WARN_SURROGATE
=for apidoc Amnh||WARN_EXPERIMENTAL
-=for apidoc Amnh||WARN_EXPERIMENTAL__LEXICAL_SUBS
=for apidoc Amnh||WARN_EXPERIMENTAL__REGEX_SETS
-=for apidoc Amnh||WARN_EXPERIMENTAL__SMARTMATCH
-=for apidoc Amnh||WARN_EXPERIMENTAL__POSTDEREF
-=for apidoc Amnh||WARN_EXPERIMENTAL__SIGNATURES
=for apidoc Amnh||WARN_SYSCALLS
-=for apidoc Amnh||WARN_EXPERIMENTAL__BITWISE
=for apidoc Amnh||WARN_EXPERIMENTAL__CONST_ATTR
=for apidoc Amnh||WARN_EXPERIMENTAL__RE_STRICT
=for apidoc Amnh||WARN_EXPERIMENTAL__REFALIASING
-=for apidoc Amnh||WARN_EXPERIMENTAL__WIN32_PERLIO
=for apidoc Amnh||WARN_LOCALE
=for apidoc Amnh||WARN_MISSING
=for apidoc Amnh||WARN_REDUNDANT
=for apidoc Amnh||WARN_EXPERIMENTAL__DECLARED_REFS
-=for apidoc Amnh||WARN_EXPERIMENTAL__ALPHA_ASSERTIONS
-=for apidoc Amnh||WARN_EXPERIMENTAL__SCRIPT_RUN
+=for apidoc Amnh||WARN_DEPRECATED__DOT_IN_INC
=for apidoc Amnh||WARN_SHADOW
=for apidoc Amnh||WARN_EXPERIMENTAL__PRIVATE_USE
=for apidoc Amnh||WARN_EXPERIMENTAL__UNIPROP_WILDCARDS
=for apidoc Amnh||WARN_EXPERIMENTAL__VLB
-=for apidoc Amnh||WARN_EXPERIMENTAL__ISA
=for apidoc Amnh||WARN_EXPERIMENTAL__TRY
+=for apidoc Amnh||WARN_EXPERIMENTAL__ARGS_ARRAY_WITH_SIGNATURES
+=for apidoc Amnh||WARN_EXPERIMENTAL__BUILTIN
+=for apidoc Amnh||WARN_EXPERIMENTAL__DEFER
+=for apidoc Amnh||WARN_EXPERIMENTAL__EXTRA_PAIRED_DELIMITERS
+=for apidoc Amnh||WARN_EXPERIMENTAL__FOR_LIST
+=for apidoc Amnh||WARN_SCALAR
+=for apidoc Amnh||WARN_DEPRECATED__VERSION_DOWNGRADE
+=for apidoc Amnh||WARN_DEPRECATED__DELIMITER_WILL_BE_PAIRED
+=for apidoc Amnh||WARN_EXPERIMENTAL__CLASS
+=for apidoc Amnh||WARN_DEPRECATED__APOSTROPHE_AS_PACKAGE_SEPARATOR
+=for apidoc Amnh||WARN_DEPRECATED__SMARTMATCH
=cut
*/
/* end of file warnings.h */
-/* ex: set ro: */
+/* ex: set ro ft=c: */
diff --git a/Master/tlpkg/tlperl/lib/CORE/win32.h b/Master/tlpkg/tlperl/lib/CORE/win32.h
index 6d5e186204d..211c55ce7ec 100644
--- a/Master/tlpkg/tlperl/lib/CORE/win32.h
+++ b/Master/tlpkg/tlperl/lib/CORE/win32.h
@@ -15,49 +15,19 @@
/* Win32 only optimizations for faster building */
#ifdef PERL_IS_MINIPERL
-/* this macro will remove Winsock only on miniperl, PERL_IMPLICIT_SYS and
- * makedef.pl create dependencies that will keep Winsock linked in even with
- * this macro defined, even though sockets will be umimplemented from a script
- * level in full perl
- */
-# define WIN32_NO_SOCKETS
/* less I/O calls during each require */
# define PERL_DISABLE_PMC
-/* unnecessery for miniperl to lookup anything from an "installed" perl */
+/* unnecessary for miniperl to lookup anything from an "installed" perl */
# define WIN32_NO_REGISTRY
/* allow minitest to work */
# define PERL_TEXTMODE_SCRIPTS
#endif
-#ifdef WIN32_NO_SOCKETS
-# undef HAS_SOCKET
-# undef HAS_GETPROTOBYNAME
-# undef HAS_GETPROTOBYNUMBER
-# undef HAS_GETPROTOENT
-# undef HAS_GETNETBYNAME
-# undef HAS_GETNETBYADDR
-# undef HAS_GETNETENT
-# undef HAS_GETSERVBYNAME
-# undef HAS_GETSERVBYPORT
-# undef HAS_GETSERVENT
-# undef HAS_GETHOSTBYNAME
-# undef HAS_GETHOSTBYADDR
-# undef HAS_GETHOSTENT
-# undef HAS_SELECT
-# undef HAS_IOCTL
-# undef HAS_NTOHL
-# undef HAS_HTONL
-# undef HAS_HTONS
-# undef HAS_NTOHS
-# define WIN32SCK_IS_STDSCK
-#endif
-
#if defined(PERL_IMPLICIT_SYS)
# define DYNAMIC_ENV_FETCH
# define HAS_GETENV_LEN
-# define prime_env_iter()
# define WIN32IO_IS_STDIO /* don't pull in custom stdio layer */
# define WIN32SCK_IS_STDSCK /* don't pull in custom wsock layer */
#endif
@@ -234,10 +204,10 @@ struct utsname {
/* access() mode bits */
#ifndef R_OK
-# define R_OK 4
-# define W_OK 2
-# define X_OK 1
-# define F_OK 0
+# define R_OK 4
+# define W_OK 2
+# define X_OK 1
+# define F_OK 0
#endif
/* for waitpid() */
@@ -261,17 +231,9 @@ typedef long uid_t;
typedef long gid_t;
typedef unsigned short mode_t;
-#if _MSC_VER < 1800
-#define isnan _isnan /* Defined already in VC++ 12.0 */
-#endif
#define snprintf _snprintf
#define vsnprintf _vsnprintf
-/* on VS2003, msvcrt.lib is missing these symbols */
-#if _MSC_VER >= 1300 && _MSC_VER < 1400
-# pragma intrinsic(_rotl64,_rotr64)
-#endif
-
MSVC_DIAG_IGNORE(4756 4056)
PERL_STATIC_INLINE
double S_Infinity() {
@@ -293,8 +255,8 @@ MSVC_DIAG_RESTORE
importing __PL_nan_u across DLL boundaries in size in the importing DLL
will be more than the 8 bytes it will take up being in each XS DLL if
that DLL actually uses __PL_nan_u */
-extern const __declspec(selectany) union { unsigned __int64 __q; double __d; }
-__PL_nan_u = { 0x7FF8000000000000UI64 };
+union PerlNan { unsigned __int64 __q; double __d; };
+extern const __declspec(selectany) union PerlNan __PL_nan_u = { 0x7FF8000000000000UI64 };
#define NV_NAN ((NV)__PL_nan_u.__d)
/* The CRT was rewritten in VS2015. */
@@ -464,7 +426,6 @@ DllExport void win32_get_child_IO(child_IO_table* ptr);
DllExport HWND win32_create_message_window(void);
DllExport int win32_async_check(pTHX);
-extern int my_fclose(FILE *);
extern char * win32_get_privlib(WIN32_NO_REGISTRY_M_(const char *pl) STRLEN *const len);
extern char * win32_get_sitelib(const char *pl, STRLEN *const len);
extern char * win32_get_vendorlib(const char *pl, STRLEN *const len);
@@ -604,113 +565,6 @@ void win32_wait_for_children(pTHX);
# define PERL_WAIT_FOR_CHILDREN win32_wait_for_children(aTHX)
#endif
-/* The following ioinfo struct manipulations had been removed but were
- * reinstated to fix RT#120091/118059. However, they do not work with
- * the rewritten CRT in VS2015 so they are removed once again for VS2015
- * onwards, which will therefore suffer from the reintroduction of the
- * close socket bug. */
-#if (!defined(_MSC_VER)) || (defined(_MSC_VER) && _MSC_VER < 1900)
-
-#ifdef PERL_CORE
-
-/* C doesn't like repeat struct definitions */
-#if defined(__MINGW32__) && (__MINGW32_MAJOR_VERSION>=3)
-# undef _CRTIMP
-#endif
-#ifndef _CRTIMP
-# define _CRTIMP __declspec(dllimport)
-#endif
-
-
-/* VS2005 has multiple ioinfo struct definitions through VS2005's release life
- * VS2008-2012 have been stable but do not assume future VSs will have the
- * same ioinfo struct, just because past struct stability. If research is done
- * on the CRTs of future VSs, the version check can be bumped up so the newer
- * VS uses a fixed ioinfo size. (Actually, only VS2013 (_MSC_VER 1800) hasn't
- * been looked at; after that we cannot use the ioinfo struct anyway (see the
- * #if above).)
- */
-#if ! (_MSC_VER < 1400 || (_MSC_VER >= 1500 && _MSC_VER <= 1700) \
- || defined(__MINGW32__))
-/* size of ioinfo struct is determined at runtime */
-# define WIN32_DYN_IOINFO_SIZE
-#endif
-
-#ifndef WIN32_DYN_IOINFO_SIZE
-/*
- * Control structure for lowio file handles
- */
-typedef struct {
- intptr_t osfhnd;/* underlying OS file HANDLE */
- char osfile; /* attributes of file (e.g., open in text mode?) */
- char pipech; /* one char buffer for handles opened on pipes */
- int lockinitflag;
- CRITICAL_SECTION lock;
-/* this struct definition breaks ABI compatibility with
- * not using, cl.exe's native VS version specitfic CRT. */
-# if _MSC_VER >= 1400 && _MSC_VER < 1500
-# error "This ioinfo struct is incomplete for Visual C 2005"
-# endif
-/* VS2005 CRT has at least 3 different definitions of this struct based on the
- * CRT DLL's build number. */
-# if _MSC_VER >= 1500
-# ifndef _SAFECRT_IMPL
- /* Not used in the safecrt downlevel. We do not define them, so we cannot
- * use them accidentally */
- char textmode : 7;/* __IOINFO_TM_ANSI or __IOINFO_TM_UTF8 or __IOINFO_TM_UTF16LE */
- char unicode : 1; /* Was the file opened as unicode? */
- char pipech2[2]; /* 2 more peak ahead chars for UNICODE mode */
- __int64 startpos; /* File position that matches buffer start */
- BOOL utf8translations; /* Buffer contains translations other than CRLF*/
- char dbcsBuffer; /* Buffer for the lead byte of dbcs when converting from dbcs to unicode */
- BOOL dbcsBufferUsed; /* Bool for the lead byte buffer is used or not */
-# endif
-# endif
-} ioinfo;
-#else
-typedef intptr_t ioinfo;
-#endif
-
-/*
- * Array of arrays of control structures for lowio files.
- */
-EXTERN_C _CRTIMP ioinfo* __pioinfo[];
-
-/*
- * Definition of IOINFO_L2E, the log base 2 of the number of elements in each
- * array of ioinfo structs.
- */
-#define IOINFO_L2E 5
-
-/*
- * Definition of IOINFO_ARRAY_ELTS, the number of elements in ioinfo array
- */
-#define IOINFO_ARRAY_ELTS (1 << IOINFO_L2E)
-
-/*
- * Access macros for getting at an ioinfo struct and its fields from a
- * file handle
- */
-#ifdef WIN32_DYN_IOINFO_SIZE
-# define _pioinfo(i) ((intptr_t *) \
- (((Size_t)__pioinfo[(i) >> IOINFO_L2E])/* * to head of array ioinfo [] */\
- /* offset to the head of a particular ioinfo struct */ \
- + (((i) & (IOINFO_ARRAY_ELTS - 1)) * w32_ioinfo_size)) \
- )
-/* first slice of ioinfo is always the OS handle */
-# define _osfhnd(i) (*(_pioinfo(i)))
-#else
-# define _pioinfo(i) (__pioinfo[(i) >> IOINFO_L2E] + ((i) & (IOINFO_ARRAY_ELTS - 1)))
-# define _osfhnd(i) (_pioinfo(i)->osfhnd)
-#endif
-
-/* since we are not doing a dup2(), this works fine */
-#define _set_osfhnd(fh, osfh) (void)(_osfhnd(fh) = (intptr_t)osfh)
-
-#endif /* PERL_CORE */
-
-#endif /* !defined(_MSC_VER) || _MSC_VER<1900 */
-
/* IO.xs and POSIX.xs define PERLIO_NOT_STDIO to 1 */
#if defined(PERL_EXT_IO) || defined(PERL_EXT_POSIX)
#undef PERLIO_NOT_STDIO
@@ -733,11 +587,20 @@ DllExport void *win32_signal_context(void);
/* ucrt at least seems to allocate a whole bit per type,
just mask off one bit from the mask for our symlink
- file type.
+ and socket file types.
*/
-#define _S_IFLNK ((unsigned)(_S_IFMT ^ (_S_IFMT & -_S_IFMT)))
+#define _S_IFLNK ((unsigned)(_S_IFDIR | _S_IFCHR))
+#define _S_IFSOCK ((unsigned)(_S_IFDIR | _S_IFIFO))
+/* mingw64 defines _S_IFBLK to 0x3000 which is _S_IFDIR | _S_IFIFO */
+#ifndef _S_IFBLK
+# define _S_IFBLK ((unsigned)(_S_IFCHR | _S_IFIFO))
+#endif
#undef S_ISLNK
#define S_ISLNK(mode) (((mode) & _S_IFMT) == _S_IFLNK)
+#undef S_ISSOCK
+#define S_ISSOCK(mode) (((mode) & _S_IFMT) == _S_IFSOCK)
+#undef S_ISBLK
+#define S_ISBLK(mode) (((mode) & _S_IFMT) == _S_IFBLK)
/*
diff --git a/Master/tlpkg/tlperl/lib/CORE/win32iop.h b/Master/tlpkg/tlperl/lib/CORE/win32iop.h
index 9733d7b5324..a50d840a2d1 100644
--- a/Master/tlpkg/tlperl/lib/CORE/win32iop.h
+++ b/Master/tlpkg/tlperl/lib/CORE/win32iop.h
@@ -200,7 +200,7 @@ END_EXTERN_C
#define stderr win32_stderr()
#define stdout win32_stdout()
-#define stdin win32_stdin()
+#define stdin win32_stdin()
#define feof(f) win32_feof(f)
#define ferror(f) win32_ferror(f)
#define errno (*win32_errno())
@@ -210,17 +210,17 @@ END_EXTERN_C
* redirect to our own version
*/
#undef fprintf
-#define fprintf win32_fprintf
-#define vfprintf win32_vfprintf
-#define printf win32_printf
-#define vprintf win32_vprintf
+#define fprintf win32_fprintf
+#define vfprintf win32_vfprintf
+#define printf win32_printf
+#define vprintf win32_vprintf
#define fread(buf,size,count,f) win32_fread(buf,size,count,f)
#define fwrite(buf,size,count,f) win32_fwrite(buf,size,count,f)
#define fopen win32_fopen
#undef fdopen
#define fdopen win32_fdopen
#define freopen win32_freopen
-#define fclose(f) win32_fclose(f)
+#define fclose(f) win32_fclose(f)
#define fputs(s,f) win32_fputs(s,f)
#define fputc(c,f) win32_fputc(c,f)
#define ungetc(c,f) win32_ungetc(c,f)
diff --git a/Master/tlpkg/tlperl/lib/CORE/zaphod32_hash.h b/Master/tlpkg/tlperl/lib/CORE/zaphod32_hash.h
index 8b15adfb454..834d8cb3fd8 100644
--- a/Master/tlpkg/tlperl/lib/CORE/zaphod32_hash.h
+++ b/Master/tlpkg/tlperl/lib/CORE/zaphod32_hash.h
@@ -133,12 +133,17 @@ void zaphod32_seed_state (
const U32 *seed= (const U32 *)seed_ch;
U32 *state= (U32 *)state_ch;
- /* hex expansion of pi, skipping first two digits. pi= 3.2[43f6...]*/
- /* pi value in hex from here:
- * http://turner.faculty.swau.edu/mathematics/materialslibrary/pi/pibases.html*/
- /* Ensure that the three state vectors are nonzero regardless of the seed. */
- /* The idea of these two steps is to ensure that the 0 state comes from a seed
- * utterly unlike that of the value we replace it with.*/
+ /* hex expansion of PI, skipping first two digits. PI= 3.2[43f6...]
+ *
+ * PI value in hex from here:
+ *
+ * http://turner.faculty.swau.edu/mathematics/materialslibrary/pi/pibases.html
+ *
+ * Ensure that the three state vectors are nonzero regardless of
+ * the seed. The idea of these two steps is to ensure that the 0
+ * state comes from a seed utterly unlike that of the value we
+ * replace it with.
+ */
state[0]= seed[0] ^ 0x43f6a888;
state[1]= seed[1] ^ 0x5a308d31;
state[2]= seed[2] ^ 0x3198a2e0;
@@ -178,7 +183,7 @@ U32 zaphod32_hash_with_state(
const U8 *key,
const STRLEN key_len
) {
- U32 *state= (U32 *)state_ch;
+ const U32 *state= (const U32 *)state_ch;
const U8 *end;
STRLEN len = key_len;
U32 v0= state[0];
diff --git a/Master/tlpkg/tlperl/lib/CPAN.pm b/Master/tlpkg/tlperl/lib/CPAN.pm
index c93d98e8db2..1e257b5c21f 100644
--- a/Master/tlpkg/tlperl/lib/CPAN.pm
+++ b/Master/tlpkg/tlperl/lib/CPAN.pm
@@ -2,7 +2,7 @@
# vim: ts=4 sts=4 sw=4:
use strict;
package CPAN;
-$CPAN::VERSION = '2.28';
+$CPAN::VERSION = '2.36';
$CPAN::VERSION =~ s/_//;
# we need to run chdir all over and we would get at wrong libraries
@@ -549,8 +549,9 @@ sub _yaml_module () {
# CPAN::_yaml_loadfile
sub _yaml_loadfile {
- my($self,$local_file) = @_;
+ my($self,$local_file,$opt) = @_;
return +[] unless -s $local_file;
+ my $opt_loadblessed = $opt->{loadblessed} || $CPAN::Config->{yaml_load_code} || 0;
my $yaml_module = _yaml_module;
if ($CPAN::META->has_inst($yaml_module)) {
# temporarily enable yaml code deserialisation
@@ -560,7 +561,7 @@ sub _yaml_loadfile {
my $old_loadcode = ${"$yaml_module\::LoadCode"};
my $old_loadblessed = ${"$yaml_module\::LoadBlessed"};
${ "$yaml_module\::LoadCode" } = $CPAN::Config->{yaml_load_code} || 0;
- ${ "$yaml_module\::LoadBlessed" } = 1;
+ ${ "$yaml_module\::LoadBlessed" } = $opt_loadblessed ? 1 : 0;
my ($code, @yaml);
if ($code = UNIVERSAL::can($yaml_module, "LoadFile")) {
@@ -1114,6 +1115,28 @@ sub has_usable {
sub {require Net::FTP},
sub {require Net::Config},
],
+ 'IO::Socket::SSL' => [
+ sub {
+ require IO::Socket::SSL;
+ unless (CPAN::Version->vge(IO::Socket::SSL::->VERSION,1.56)) {
+ for ("Will not use IO::Socket::SSL, need 1.56\n") {
+ $CPAN::Frontend->mywarn($_);
+ die $_;
+ }
+ }
+ }
+ ],
+ 'Net::SSLeay' => [
+ sub {
+ require Net::SSLeay;
+ unless (CPAN::Version->vge(Net::SSLeay::->VERSION,1.49)) {
+ for ("Will not use Net::SSLeay, need 1.49\n") {
+ $CPAN::Frontend->mywarn($_);
+ die $_;
+ }
+ }
+ }
+ ],
'HTTP::Tiny' => [
sub {
require HTTP::Tiny;
@@ -2252,6 +2275,8 @@ currently defined:
prefs_dir local directory to store per-distro build options
proxy_user username for accessing an authenticating proxy
proxy_pass password for accessing an authenticating proxy
+ pushy_https use https to cpan.org when possible, otherwise use http
+ to cpan.org and issue a warning
randomize_urllist add some randomness to the sequence of the urllist
recommends_policy whether recommended prerequisites should be included
scan_cache controls scanning of cache ('atstart', 'atexit' or 'never')
diff --git a/Master/tlpkg/tlperl/lib/CPAN/Distribution.pm b/Master/tlpkg/tlperl/lib/CPAN/Distribution.pm
index 34121085395..6ce0572ef7f 100644
--- a/Master/tlpkg/tlperl/lib/CPAN/Distribution.pm
+++ b/Master/tlpkg/tlperl/lib/CPAN/Distribution.pm
@@ -9,7 +9,7 @@ use File::Path ();
use POSIX ":sys_wait_h";
@CPAN::Distribution::ISA = qw(CPAN::InfoObj);
use vars qw($VERSION);
-$VERSION = "2.27";
+$VERSION = "2.34";
my $run_allow_installing_within_test = 1; # boolean; either in test or in install, there is no third option
@@ -1445,8 +1445,14 @@ sub verifyCHECKSUM {
local($") = "/";
if (my $size = -s $lc_want) {
$self->debug("lc_want[$lc_want]size[$size]") if $CPAN::DEBUG;
- if ($self->CHECKSUM_check_file($lc_want,1)) {
- return $self->{CHECKSUM_STATUS} = "OK";
+ my @stat = stat $lc_want;
+ my $epoch_starting_support_of_cpan_path = 1637471530;
+ if ($stat[9] >= $epoch_starting_support_of_cpan_path) {
+ if ($self->CHECKSUM_check_file($lc_want, 1)) {
+ return $self->{CHECKSUM_STATUS} = "OK";
+ }
+ } else {
+ unlink $lc_want;
}
}
$lc_file = CPAN::FTP->localize("authors/id/@local",
@@ -1473,18 +1479,32 @@ sub SIG_check_file {
my($self,$chk_file) = @_;
my $rv = eval { Module::Signature::_verify($chk_file) };
- if ($rv == Module::Signature::SIGNATURE_OK()) {
+ if ($rv eq Module::Signature::CANNOT_VERIFY()) {
+ $CPAN::Frontend->myprint(qq{\nSignature for }.
+ qq{file $chk_file could not be verified for an unknown reason. }.
+ $self->as_string.
+ qq{Module::Signature verification returned value $rv\n\n}
+ );
+
+ my $wrap = qq{The manual says for this case: Cannot verify the
+OpenPGP signature, maybe due to the lack of a network connection to
+the key server, or if neither gnupg nor Crypt::OpenPGP exists on the
+system. You probably want to analyse the situation and if you cannot
+fix it you will have to decide whether you want to stop this session
+or you want to turn off signature verification. The latter would be
+done with the command 'o conf init check_sigs'};
+
+ $CPAN::Frontend->mydie(Text::Wrap::wrap("","",$wrap));
+ } if ($rv == Module::Signature::SIGNATURE_OK()) {
$CPAN::Frontend->myprint("Signature for $chk_file ok\n");
return $self->{SIG_STATUS} = "OK";
} else {
- $CPAN::Frontend->myprint(qq{\nSignature invalid for }.
- qq{distribution file. }.
+ $CPAN::Frontend->mywarn(qq{\nSignature invalid for }.
+ qq{file $chk_file. }.
qq{Please investigate.\n\n}.
- $self->as_string,
- $CPAN::META->instance(
- 'CPAN::Author',
- $self->cpan_userid
- )->as_string);
+ $self->as_string.
+ qq{Module::Signature verification returned value $rv\n\n}
+ );
my $wrap = qq{I\'d recommend removing $chk_file. Its signature
is invalid. Maybe you have configured your 'urllist' with
@@ -1519,20 +1539,44 @@ sub CHECKSUM_check_file {
$file = $self->{localfile};
$basename = File::Basename::basename($file);
+ my($signed_data);
my $fh = FileHandle->new;
- if (open $fh, $chk_file) {
- local($/);
- my $eval = <$fh>;
- $eval =~ s/\015?\012/\n/g;
- close $fh;
- my($compmt) = Safe->new();
- $cksum = $compmt->reval($eval);
- if ($@) {
- rename $chk_file, "$chk_file.bad";
- Carp::confess($@) if $@;
+ if ($check_sigs) {
+ my $tempdir;
+ if ($CPAN::META->has_usable("File::Temp")) {
+ $tempdir = File::Temp::tempdir("CHECKSUMS-XXXX", CLEANUP => 1, DIR => "/tmp" );
+ } else {
+ $tempdir = File::Spec->catdir(File::Spec->tmpdir, "CHECKSUMS-$$");
+ File::Path::mkpath($tempdir);
}
+ my $tempfile = File::Spec->catfile($tempdir, "CHECKSUMS.$$");
+ unlink $tempfile; # ignore missing file
+ my $devnull = File::Spec->devnull;
+ my $gpg = $CPAN::Config->{gpg} or
+ $CPAN::Frontend->mydie("Your configuration suggests that you do not have 'gpg' installed. This is needed to verify checksums with the config variable 'check_sigs' on. Please configure it with 'o conf init gpg'");
+ my $system = qq{"$gpg" --verify --batch --no-tty --output "$tempfile" "$chk_file" 2> "$devnull"};
+ 0 == system $system or $CPAN::Frontend->mydie("gpg run was failing, cannot continue: $system");
+ open $fh, $tempfile or $CPAN::Frontend->mydie("Could not open $tempfile: $!");
+ local $/;
+ $signed_data = <$fh>;
+ close $fh;
+ File::Path::rmtree($tempdir);
} else {
- Carp::carp "Could not open $chk_file for reading";
+ my $fh = FileHandle->new;
+ if (open $fh, $chk_file) {
+ local($/);
+ $signed_data = <$fh>;
+ } else {
+ $CPAN::Frontend->mydie("Could not open $chk_file for reading");
+ }
+ close $fh;
+ }
+ $signed_data =~ s/\015?\012/\n/g;
+ my($compmt) = Safe->new();
+ $cksum = $compmt->reval($signed_data);
+ if ($@) {
+ rename $chk_file, "$chk_file.bad";
+ Carp::confess($@) if $@;
}
if (! ref $cksum or ref $cksum ne "HASH") {
@@ -1546,6 +1590,30 @@ for further processing, but got garbage instead.
$answer =~ /^\s*y/i or $CPAN::Frontend->mydie("Aborted.\n");
$self->{CHECKSUM_STATUS} = "NIL -- CHECKSUMS file broken";
return;
+ } elsif (exists $cksum->{$basename} && ! exists $cksum->{$basename}{cpan_path}) {
+ $CPAN::Frontend->mywarn(qq{
+Warning: checksum file '$chk_file' not conforming.
+
+The cksum does not contain the key 'cpan_path' for '$basename'.
+});
+ my $answer = CPAN::Shell::colorable_makemaker_prompt("Proceed nonetheless?", "no");
+ $answer =~ /^\s*y/i or $CPAN::Frontend->mydie("Aborted.\n");
+ $self->{CHECKSUM_STATUS} = "NIL -- CHECKSUMS file without cpan_path";
+ return;
+ } elsif (exists $cksum->{$basename} && substr($self->{ID},0,length($cksum->{$basename}{cpan_path}))
+ ne $cksum->{$basename}{cpan_path}) {
+ $CPAN::Frontend->mywarn(qq{
+Warning: checksum file not matching path '$self->{ID}'.
+
+The cksum contain the key 'cpan_path=$cksum->{$basename}{cpan_path}'
+which does not match the ID of the distribution '$self->{ID}'.
+Something's suspicious might be going on here. Please investigate.
+
+});
+ my $answer = CPAN::Shell::colorable_makemaker_prompt("Proceed nonetheless?", "no");
+ $answer =~ /^\s*y/i or $CPAN::Frontend->mydie("Aborted.\n");
+ $self->{CHECKSUM_STATUS} = "NIL -- CHECKSUMS non-matching cpan_path vs. ID";
+ return;
} elsif (exists $cksum->{$basename}{sha256}) {
$self->debug("Found checksum for $basename:" .
"$cksum->{$basename}{sha256}\n") if $CPAN::DEBUG;
@@ -2882,7 +2950,7 @@ sub prereqs_for_slot {
}
if (-f "Build.PL"
&& ! -f File::Spec->catfile($self->{build_dir},"Makefile.PL")
- && ! $merged->requirements_for_module("Module::Build")
+ && ! @{[ $merged->required_modules ]}
&& ! $CPAN::META->has_inst("Module::Build")
) {
$CPAN::Frontend->mywarn(
diff --git a/Master/tlpkg/tlperl/lib/CPAN/FTP.pm b/Master/tlpkg/tlperl/lib/CPAN/FTP.pm
index 268522f78fc..652f5be7740 100644
--- a/Master/tlpkg/tlperl/lib/CPAN/FTP.pm
+++ b/Master/tlpkg/tlperl/lib/CPAN/FTP.pm
@@ -15,7 +15,7 @@ use vars qw($connect_to_internet_ok $Ua $Thesite $ThesiteURL $Themethod);
use vars qw(
$VERSION
);
-$VERSION = "5.5013";
+$VERSION = "5.5016";
sub _plus_append_open {
my($fh, $file) = @_;
@@ -63,7 +63,7 @@ sub _ftp_statistics {
_plus_append_open($fh, $file);
}
}
- my $stats = eval { CPAN->_yaml_loadfile($file); };
+ my $stats = eval { CPAN->_yaml_loadfile($file, {loadblessed => 1}); };
if ($@) {
if (ref $@) {
if (ref $@ eq "CPAN::Exception::yaml_not_installed") {
@@ -319,6 +319,190 @@ sub localize {
my $longmess = Carp::longmess();
$self->debug("file[$file] aslocal[$aslocal] force[$force] carplongmess[$longmess]");
}
+ for ($CPAN::Config->{connect_to_internet_ok}) {
+ $connect_to_internet_ok = $_ if not defined $connect_to_internet_ok and defined $_;
+ }
+ my $ph = $CPAN::Config->{pushy_https};
+ if (!defined $ph || $ph) {
+ return $self->localize_2021($file,$aslocal,$force,$with_defaults);
+ } else {
+ return $self->localize_1995ff($file,$aslocal,$force,$with_defaults);
+ }
+}
+
+sub have_promising_aslocal {
+ my($self, $aslocal, $force) = @_;
+ if (-f $aslocal && -r _ && !($force & 1)) {
+ my $size;
+ if ($size = -s $aslocal) {
+ $self->debug("aslocal[$aslocal]size[$size]") if $CPAN::DEBUG;
+ return 1;
+ } else {
+ # empty file from a previous unsuccessful attempt to download it
+ unlink $aslocal or
+ $CPAN::Frontend->mydie("Found a zero-length '$aslocal' that I ".
+ "could not remove.");
+ }
+ }
+ return;
+}
+
+#-> sub CPAN::FTP::localize ;
+sub localize_2021 {
+ my($self,$file,$aslocal,$force,$with_defaults) = @_;
+ return $aslocal if $self->have_promising_aslocal($aslocal, $force);
+ my($aslocal_dir) = dirname($aslocal);
+ my $ret;
+ $self->mymkpath($aslocal_dir);
+ my $aslocal_tempfile = $aslocal . ".tmp" . $$;
+ my $base;
+ if (
+ ($CPAN::META->has_usable('HTTP::Tiny')
+ && $CPAN::META->has_usable('Net::SSLeay')
+ && $CPAN::META->has_usable('IO::Socket::SSL')
+ )
+ || $CPAN::Config->{curl}
+ || $CPAN::Config->{wget}
+ ) {
+ for my $prx (qw(https_proxy no_proxy)) {
+ $ENV{$prx} = $CPAN::Config->{$prx} if $CPAN::Config->{$prx};
+ }
+ $base = "https://cpan.org/";
+ } else {
+ my @missing_modules = grep { ! $CPAN::META->has_usable($_) } qw(HTTP::Tiny Net::SSLeay IO::Socket::SSL);
+ my $miss = join ", ", map { "'$_'" } @missing_modules;
+ my $modules = @missing_modules == 1 ? "module" : "modules";
+ $CPAN::Frontend->mywarn("Missing or unusable $modules $miss, and found neither curl nor wget installed.\n");
+ if ($CPAN::META->has_usable('HTTP::Tiny')) {
+ $CPAN::Frontend->mywarn("Need to fall back to http.\n")
+ }
+ for my $prx (qw(http_proxy no_proxy)) {
+ $ENV{$prx} = $CPAN::Config->{$prx} if $CPAN::Config->{$prx};
+ }
+ $base = "http://www.cpan.org/";
+ }
+ $ret = $self->hostdl_2021($base,$file,$aslocal_tempfile);
+ if ($ret) { # c&p from below
+ CPAN->debug("ret[$ret]aslocal[$aslocal]") if $CPAN::DEBUG;
+ if ($ret eq $aslocal_tempfile) {
+ # if we got it exactly as we asked for, only then we
+ # want to rename
+ rename $aslocal_tempfile, $aslocal
+ or $CPAN::Frontend->mydie("Error while trying to rename ".
+ "'$ret' to '$aslocal': $!");
+ $ret = $aslocal;
+ }
+ } else {
+ unlink $aslocal_tempfile;
+ return;
+ }
+ return $ret;
+}
+
+sub hostdl_2021 {
+ my($self, $base, $file, $aslocal) = @_; # the $aslocal is $aslocal_tempfile in the caller (old convention)
+ my $proxy_vars = $self->_proxy_vars($base);
+ my($proto) = $base =~ /^(https?)/;
+ my $url = "$base$file";
+ # hostdl_2021 may be called with either http or https urls
+ if (
+ $CPAN::META->has_usable('HTTP::Tiny')
+ &&
+ (
+ $proto eq "http"
+ ||
+ ( $CPAN::META->has_usable('Net::SSLeay')
+ && $CPAN::META->has_usable('IO::Socket::SSL') )
+ )
+ ){
+ # mostly c&p from below
+ require CPAN::HTTP::Client;
+ my $chc = CPAN::HTTP::Client->new(
+ proxy => $CPAN::Config->{http_proxy} || $ENV{http_proxy},
+ no_proxy => $CPAN::Config->{no_proxy} || $ENV{no_proxy},
+ );
+ for my $try ( $url, ( $url !~ /\.gz(?!\n)\Z/ ? "$url.gz" : () ) ) {
+ $CPAN::Frontend->myprint("Fetching with HTTP::Tiny:\n$try\n");
+ my $res = eval { $chc->mirror($try, $aslocal) };
+ if ( $res && $res->{success} ) {
+ my $now = time;
+ utime $now, $now, $aslocal; # download time is more
+ # important than upload
+ # time
+ return $aslocal;
+ }
+ elsif ( $res && $res->{status} ne '599') {
+ $CPAN::Frontend->myprint(sprintf(
+ "HTTP::Tiny failed with code[%s] message[%s]\n",
+ $res->{status},
+ $res->{reason},
+ )
+ );
+ }
+ elsif ( $res && $res->{status} eq '599') {
+ $CPAN::Frontend->myprint(sprintf(
+ "HTTP::Tiny failed with an internal error: %s\n",
+ $res->{content},
+ )
+ );
+ }
+ else {
+ my $err = $@ || 'Unknown error';
+ $CPAN::Frontend->myprint(sprintf(
+ "Error downloading with HTTP::Tiny: %s\n", $err
+ )
+ );
+ }
+ }
+ } elsif ($CPAN::Config->{curl} || $CPAN::Config->{wget}){
+ # c&p from further down
+ my($src_switch, $stdout_redir);
+ my($devnull) = $CPAN::Config->{devnull} || "";
+ DLPRG: for my $dlprg (qw(curl wget)) {
+ my $dlprg_configured = $CPAN::Config->{$dlprg};
+ next unless defined $dlprg_configured && length $dlprg_configured;
+ my $funkyftp = CPAN::HandleConfig->safe_quote($dlprg_configured);
+ if ($dlprg eq "wget") {
+ $src_switch = " -O \"$aslocal\"";
+ $stdout_redir = "";
+ } elsif ($dlprg eq 'curl') {
+ $src_switch = ' -L -f -s -S --netrc-optional';
+ $stdout_redir = " > \"$aslocal\"";
+ if ($proxy_vars->{http_proxy}) {
+ $src_switch .= qq{ -U "$proxy_vars->{proxy_user}:$proxy_vars->{proxy_pass}" -x "$proxy_vars->{http_proxy}"};
+ }
+ }
+ $CPAN::Frontend->myprint(
+ qq[
+Trying with
+ $funkyftp$src_switch
+to get
+ $url
+]);
+ my($system) =
+ "$funkyftp$src_switch \"$url\" $devnull$stdout_redir";
+ $self->debug("system[$system]") if $CPAN::DEBUG;
+ my($wstatus) = system($system);
+ if ($wstatus == 0) {
+ return $aslocal;
+ } else {
+ my $estatus = $wstatus >> 8;
+ my $size = -f $aslocal ?
+ ", left\n$aslocal with size ".-s _ :
+ "\nWarning: expected file [$aslocal] doesn't exist";
+ $CPAN::Frontend->myprint(qq{
+ Function system("$system")
+ returned status $estatus (wstat $wstatus)$size
+ });
+ }
+ } # DLPRG
+ } # curl, wget
+ return;
+}
+
+#-> sub CPAN::FTP::localize ;
+sub localize_1995ff {
+ my($self,$file,$aslocal,$force,$with_defaults) = @_;
if ($^O eq 'MacOS') {
# Comment by AK on 2000-09-03: Uniq short filenames would be
# available in CHECKSUMS file
@@ -343,18 +527,7 @@ sub localize {
}
}
- if (-f $aslocal && -r _ && !($force & 1)) {
- my $size;
- if ($size = -s $aslocal) {
- $self->debug("aslocal[$aslocal]size[$size]") if $CPAN::DEBUG;
- return $aslocal;
- } else {
- # empty file from a previous unsuccessful attempt to download it
- unlink $aslocal or
- $CPAN::Frontend->mydie("Found a zero-length '$aslocal' that I ".
- "could not remove.");
- }
- }
+ return $aslocal if $self->have_promising_aslocal($aslocal, $force);
my($maybe_restore) = 0;
if (-f $aslocal) {
rename $aslocal, "$aslocal.bak$$";
@@ -433,9 +606,6 @@ sub localize {
$CPAN::Config->{ftp_passive} : 1;
my $ret;
my $stats = $self->_new_stats($file);
- for ($CPAN::Config->{connect_to_internet_ok}) {
- $connect_to_internet_ok = $_ if not defined $connect_to_internet_ok and defined $_;
- }
LEVEL: for $levelno (0..$#levels) {
my $level_tuple = $levels[$levelno];
my($level,$scheme,$sitetag) = @$level_tuple;
diff --git a/Master/tlpkg/tlperl/lib/CPAN/FirstTime.pm b/Master/tlpkg/tlperl/lib/CPAN/FirstTime.pm
index 310e73abefe..8934f4a2c3c 100644
--- a/Master/tlpkg/tlperl/lib/CPAN/FirstTime.pm
+++ b/Master/tlpkg/tlperl/lib/CPAN/FirstTime.pm
@@ -11,7 +11,7 @@ use File::Spec ();
use CPAN::Mirrors ();
use CPAN::Version ();
use vars qw($VERSION $auto_config);
-$VERSION = "5.5315";
+$VERSION = "5.5317";
=head1 NAME
@@ -126,7 +126,7 @@ To considerably speed up the initial CPAN shell startup, it is
possible to use Storable to create a cache of metadata. If Storable is
not available, the normal index mechanism will be used.
-Note: this mechanism is not used when use_sqlite is on and SQLLite is
+Note: this mechanism is not used when use_sqlite is on and SQLite is
running.
Cache metadata (yes/no)?
@@ -451,6 +451,20 @@ Please set your policy to one of the three values.
Policy on building prerequisites (follow, ask or ignore)?
+=item pushy_https
+
+Boolean. Defaults to true. If this option is true, the cpan shell will
+use https://cpan.org/ to download stuff from the CPAN. It will fall
+back to http://cpan.org/ if it can't handle https for some reason
+(missing modules, missing programs). Whenever it falls back to the
+http protocol, it will issue a warning.
+
+If this option is true, the option C<urllist> will be ignored.
+Consequently, if you want to work with local mirrors via your own
+configured list of URLs, you will have to choose no below.
+
+Do you want to turn the pushy_https behaviour on?
+
=item randomize_urllist
CPAN.pm can introduce some randomness when using hosts for download
@@ -1315,6 +1329,7 @@ sub init {
# Let's assume they want to use the internet and make them turn it
# off if they really don't.
my_yn_prompt("connect_to_internet_ok" => 1, $matcher);
+ my_yn_prompt("pushy_https" => 1, $matcher);
# Allow matching but don't show during manual config
if ($matcher) {
@@ -1344,7 +1359,11 @@ sub init {
);
}
else {
- $CPAN::Config->{urllist} = [ 'http://www.cpan.org/' ];
+ # Hint: as of 2021-11: to get http, use http://www.cpan.org/
+ $CPAN::Config->{urllist} = [ 'https://cpan.org/' ];
+ $CPAN::Frontend->myprint(
+ "We initialized your 'urllist' to @{$CPAN::Config->{urllist}}. Type 'o conf init urllist' to change it.\n"
+ );
}
}
elsif (!$matcher || "urllist" =~ $matcher) {
@@ -1362,9 +1381,15 @@ sub init {
if ( $CPAN::Config->{install_help} eq 'local::lib' ) {
if ( ! @{ $CPAN::Config->{urllist} } ) {
$CPAN::Frontend->myprint(
- "Skipping local::lib bootstrap because 'urllist' is not configured.\n"
+ "\nALERT: Skipping local::lib bootstrap because 'urllist' is not configured.\n"
);
}
+ elsif (! $CPAN::Config->{make} ) {
+ $CPAN::Frontend->mywarn(
+ "\nALERT: Skipping local::lib bootstrap because 'make' is not configured.\n"
+ );
+ _beg_for_make(); # repetitive, but we don't want users to miss it
+ }
else {
$CPAN::Frontend->myprint("\nAttempting to bootstrap local::lib...\n");
$CPAN::Frontend->myprint("\nWriting $configpm for bootstrap...\n");
@@ -1645,12 +1670,17 @@ Windows users may want to follow this procedure when back in the CPAN shell:
perl alien_nmake.pl
This will install nmake on your system which can be used as a 'make'
-substitute. You can then revisit this dialog with
+substitute.
+
+HERE
+ }
+
+ $CPAN::Frontend->mywarn(<<"HERE");
+You can then retry the 'make' configuration step with
o conf init make
HERE
- }
}
sub init_cpan_home {
diff --git a/Master/tlpkg/tlperl/lib/CPAN/HTTP/Client.pm b/Master/tlpkg/tlperl/lib/CPAN/HTTP/Client.pm
index 4fc792c26a4..b2c86d0bd18 100644
--- a/Master/tlpkg/tlperl/lib/CPAN/HTTP/Client.pm
+++ b/Master/tlpkg/tlperl/lib/CPAN/HTTP/Client.pm
@@ -6,7 +6,7 @@ use vars qw(@ISA);
use CPAN::HTTP::Credentials;
use HTTP::Tiny 0.005;
-$CPAN::HTTP::Client::VERSION = $CPAN::HTTP::Client::VERSION = "1.9601";
+$CPAN::HTTP::Client::VERSION = $CPAN::HTTP::Client::VERSION = "1.9602";
# CPAN::HTTP::Client is adapted from parts of cpanm by Tatsuhiko Miyagawa
# and parts of LWP by Gisle Aas
@@ -32,6 +32,7 @@ sub mirror {
my $want_proxy = $self->_want_proxy($uri);
my $http = HTTP::Tiny->new(
+ verify_SSL => 1,
$want_proxy ? (proxy => $self->{proxy}) : ()
);
diff --git a/Master/tlpkg/tlperl/lib/CPAN/HandleConfig.pm b/Master/tlpkg/tlperl/lib/CPAN/HandleConfig.pm
index e24a969c11f..c9d0dc7056d 100644
--- a/Master/tlpkg/tlperl/lib/CPAN/HandleConfig.pm
+++ b/Master/tlpkg/tlperl/lib/CPAN/HandleConfig.pm
@@ -12,7 +12,7 @@ CPAN::HandleConfig - internal configuration handling for CPAN.pm
=cut
-$VERSION = "5.5011"; # see also CPAN::Config::VERSION at end of file
+$VERSION = "5.5012"; # see also CPAN::Config::VERSION at end of file
%can = (
commit => "Commit changes to disk",
@@ -25,8 +25,9 @@ $VERSION = "5.5011"; # see also CPAN::Config::VERSION at end of file
# A1: svn diff -r 757:758 # where dagolden added test_report [git e997b71de88f1019a1472fc13cb97b1b7f96610f]
# A2: svn diff -r 985:986 # where andk added yaml_module [git 312b6d9b12b1bdec0b6e282d853482145475021f]
# A3: 1. add new config option to %keys below
-# 2. add a Pod description in CPAN::FirstTime; it should include a
-# prompt line; see others for examples
+# 2. add a Pod description in CPAN::FirstTime in the DESCRIPTION
+# section; it should include a prompt line; see others for
+# examples
# 3. add a "matcher" section in CPAN::FirstTime::init that includes
# a prompt function; see others for examples
# 4. add config option to documentation section in CPAN.pm
@@ -98,6 +99,7 @@ $VERSION = "5.5011"; # see also CPAN::Config::VERSION at end of file
"prerequisites_policy",
"proxy_pass",
"proxy_user",
+ "pushy_https",
"randomize_urllist",
"recommends_policy",
"scan_cache",
@@ -561,6 +563,23 @@ sub load {
my @miss = $self->missing_config_data;
CPAN->debug("do_init[$do_init]loading[$loading]miss[@miss]") if $CPAN::DEBUG;
return unless $do_init || @miss;
+ if (@miss==1 and $miss[0] eq "pushy_https" && !$do_init) {
+ $CPAN::Frontend->myprint(<<'END');
+
+Starting with version 2.29 of the cpan shell, a new download mechanism
+is the default which exclusively uses cpan.org as the host to download
+from. The configuration variable pushy_https can be used to (de)select
+the new mechanism. Please read more about it and make your choice
+between the old and the new mechanism by running
+
+ o conf init pushy_https
+
+Once you have done that and stored the config variable this dialog
+will disappear.
+END
+
+ return;
+ }
# I'm not how we'd ever wind up in a recursive loop, but I'm leaving
# this here for safety's sake -- dagolden, 2011-01-19
@@ -677,6 +696,7 @@ sub missing_config_data {
"no_proxy",
#"pager",
"prerequisites_policy",
+ "pushy_https",
"scan_cache",
#"tar",
#"unzip",
@@ -776,7 +796,7 @@ sub prefs_lookup {
use strict;
use vars qw($AUTOLOAD $VERSION);
- $VERSION = "5.5011";
+ $VERSION = "5.5012";
# formerly CPAN::HandleConfig was known as CPAN::Config
sub AUTOLOAD { ## no critic
diff --git a/Master/tlpkg/tlperl/lib/CPAN/Index.pm b/Master/tlpkg/tlperl/lib/CPAN/Index.pm
index 59e75dcaeed..06b16b6958d 100644
--- a/Master/tlpkg/tlperl/lib/CPAN/Index.pm
+++ b/Master/tlpkg/tlperl/lib/CPAN/Index.pm
@@ -1,7 +1,7 @@
package CPAN::Index;
use strict;
use vars qw($LAST_TIME $DATE_OF_02 $DATE_OF_03 $HAVE_REANIMATED $VERSION);
-$VERSION = "2.12";
+$VERSION = "2.29";
@CPAN::Index::ISA = qw(CPAN::Debug);
$LAST_TIME ||= 0;
$DATE_OF_03 ||= 0;
@@ -137,7 +137,7 @@ sub reanimate_build_dir {
));
DISTRO: for $i (0..$#candidates) {
my $dirent = $candidates[$i];
- my $y = eval {CPAN->_yaml_loadfile(File::Spec->catfile($d,$dirent))};
+ my $y = eval {CPAN->_yaml_loadfile(File::Spec->catfile($d,$dirent), {loadblessed => 1})};
if ($@) {
warn "Error while parsing file '$dirent'; error: '$@'";
next DISTRO;
diff --git a/Master/tlpkg/tlperl/lib/Carp.pm b/Master/tlpkg/tlperl/lib/Carp.pm
index df563d06a25..20b970800ab 100644
--- a/Master/tlpkg/tlperl/lib/Carp.pm
+++ b/Master/tlpkg/tlperl/lib/Carp.pm
@@ -179,7 +179,7 @@ BEGIN {
? do { require "overload.pm"; _fetch_sub overload => 'mycan' }
: \&UNIVERSAL::can;
- # _blessed is either UNIVERAL::isa(...), or, in the presence of an
+ # _blessed is either UNIVERSAL::isa(...), or, in the presence of an
# override, a hideous, but fairly reliable, workaround.
*_blessed = $isa
? sub { &$isa($_[0], "UNIVERSAL") }
@@ -211,7 +211,7 @@ BEGIN {
}
-our $VERSION = '1.52';
+our $VERSION = '1.54';
$VERSION =~ tr/_//d;
our $MaxEvalLen = 0;
@@ -776,8 +776,8 @@ Carp - alternative warn and die for modules
# cluck, longmess and shortmess not exported by default
use Carp qw(cluck longmess shortmess);
cluck "This is how we got here!"; # warn with stack backtrace
- $long_message = longmess( "message from cluck() or confess()" );
- $short_message = shortmess( "message from carp() or croak()" );
+ my $long_message = longmess( "message from cluck() or confess()" );
+ my $short_message = shortmess( "message from carp() or croak()" );
=head1 DESCRIPTION
@@ -802,7 +802,7 @@ Of course, C<Carp> can't guarantee the latter.
You can also alter the way the output and logic of C<Carp> works, by
changing some global variables in the C<Carp> namespace. See the
-section on C<GLOBAL VARIABLES> below.
+section on L</GLOBAL VARIABLES> below.
Here is a more complete description of how C<carp> and C<croak> work.
What they do is search the call-stack for a function call stack where
@@ -868,7 +868,7 @@ or by including the string C<-MCarp=verbose> in the PERL5OPT
environment variable.
Alternately, you can set the global variable C<$Carp::Verbose> to true.
-See the C<GLOBAL VARIABLES> section below.
+See the L</GLOBAL VARIABLES> section below.
=head2 Stack Trace formatting
diff --git a/Master/tlpkg/tlperl/lib/Carp/Heavy.pm b/Master/tlpkg/tlperl/lib/Carp/Heavy.pm
index fdb3e52ef61..043e345620e 100644
--- a/Master/tlpkg/tlperl/lib/Carp/Heavy.pm
+++ b/Master/tlpkg/tlperl/lib/Carp/Heavy.pm
@@ -2,7 +2,7 @@ package Carp::Heavy;
use Carp ();
-our $VERSION = '1.52';
+our $VERSION = '1.54';
$VERSION =~ tr/_//d;
# Carp::Heavy was merged into Carp in version 1.12. Any mismatched versions
diff --git a/Master/tlpkg/tlperl/lib/Class/Struct.pm b/Master/tlpkg/tlperl/lib/Class/Struct.pm
index c593dc7c390..a574734e5cb 100644
--- a/Master/tlpkg/tlperl/lib/Class/Struct.pm
+++ b/Master/tlpkg/tlperl/lib/Class/Struct.pm
@@ -14,7 +14,7 @@ require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(struct);
-$VERSION = '0.66';
+$VERSION = '0.68';
my $print = 0;
sub printem {
@@ -84,7 +84,7 @@ sub struct {
}
else {
$base_type = 'ARRAY';
- $class = (caller())[0];
+ $class = caller();
@decls = @_;
}
@@ -275,24 +275,24 @@ Class::Struct - declare struct-like datatypes as Perl classes
# declare struct with four types of elements:
struct( s => '$', a => '@', h => '%', c => 'My_Other_Class' );
- $obj = new Myobj; # constructor
+ my $obj = Myobj->new; # constructor
# scalar type accessor:
- $element_value = $obj->s; # element value
+ my $element_value = $obj->s; # element value
$obj->s('new value'); # assign to element
# array type accessor:
- $ary_ref = $obj->a; # reference to whole array
- $ary_element_value = $obj->a(2); # array element value
+ my $ary_ref = $obj->a; # reference to whole array
+ my $ary_element_value = $obj->a(2); # array element value
$obj->a(2, 'new value'); # assign to array element
# hash type accessor:
- $hash_ref = $obj->h; # reference to whole hash
- $hash_element_value = $obj->h('x'); # hash element value
+ my $hash_ref = $obj->h; # reference to whole hash
+ my $hash_element_value = $obj->h('x'); # hash element value
$obj->h('x', 'new value'); # assign to hash element
# class type accessor:
- $element_value = $obj->c; # object reference
+ my $element_value = $obj->c; # object reference
$obj->c->method(...); # call method of object
$obj->c(new My_Other_Class); # assign a new object
diff --git a/Master/tlpkg/tlperl/lib/Compress/Raw/Bzip2.pm b/Master/tlpkg/tlperl/lib/Compress/Raw/Bzip2.pm
index 0b2bec0c6fe..94c04278da5 100644
--- a/Master/tlpkg/tlperl/lib/Compress/Raw/Bzip2.pm
+++ b/Master/tlpkg/tlperl/lib/Compress/Raw/Bzip2.pm
@@ -11,7 +11,7 @@ use Carp ;
use bytes ;
our ($VERSION, $XS_VERSION, @ISA, @EXPORT, $AUTOLOAD);
-$VERSION = '2.101';
+$VERSION = '2.204_001';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -384,7 +384,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/Compress/Raw/Zlib.pm b/Master/tlpkg/tlperl/lib/Compress/Raw/Zlib.pm
index 2cb6f1e48d3..7250f382a65 100644
--- a/Master/tlpkg/tlperl/lib/Compress/Raw/Zlib.pm
+++ b/Master/tlpkg/tlperl/lib/Compress/Raw/Zlib.pm
@@ -10,7 +10,7 @@ use warnings ;
use bytes ;
our ($VERSION, $XS_VERSION, @ISA, @EXPORT, %EXPORT_TAGS, @EXPORT_OK, $AUTOLOAD, %DEFLATE_CONSTANTS, @DEFLATE_CONSTANTS);
-$VERSION = '2.101';
+$VERSION = '2.204_001';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -96,6 +96,14 @@ $VERSION = eval $VERSION;
Z_UNKNOWN
Z_VERSION_ERROR
+ ZLIBNG_VERSION
+ ZLIBNG_VERNUM
+ ZLIBNG_VER_MAJOR
+ ZLIBNG_VER_MINOR
+ ZLIBNG_VER_REVISION
+ ZLIBNG_VER_STATUS
+ ZLIBNG_VER_MODIFIED
+
WANT_GZIP
WANT_GZIP_OR_ZLIB
);
@@ -598,7 +606,7 @@ __END__
=head1 NAME
-Compress::Raw::Zlib - Low-Level Interface to zlib compression library
+Compress::Raw::Zlib - Low-Level Interface to zlib or zlib-ng compression library
=head1 SYNOPSIS
@@ -641,11 +649,18 @@ Compress::Raw::Zlib - Low-Level Interface to zlib compression library
my $version = Compress::Raw::Zlib::zlib_version();
my $flags = Compress::Raw::Zlib::zlibCompileFlags();
+ is_zlib_native();
+ is_zlibng_native();
+ is_zlibng_compat();
+ is_zlibng();
+
=head1 DESCRIPTION
-The I<Compress::Raw::Zlib> module provides a Perl interface to the I<zlib>
-compression library (see L</AUTHOR> for details about where to get
-I<zlib>).
+The I<Compress::Raw::Zlib> module provides a Perl interface to the I<zlib> or I<zlib-ng>
+compression libraries (see L</SEE ALSO> for details about where to get
+I<zlib> or I<zlib-ng>).
+
+In the text below all references to I<zlib> are also applicable to I<zlib-ng> unless otherwise stated.
=head1 Compress::Raw::Zlib::Deflate
@@ -1300,12 +1315,20 @@ Refer to the I<zlib> documentation for more details.
=head2 my $version = Compress::Raw::Zlib::zlib_version();
-Returns the version of the zlib library.
+Returns the version of the I<zlib> library if this module has been built with the I<zlib> library.
+If this module has been built with I<zlib-ng> in native mode, this function will return a empty string.
+If this module has been built with I<zlib-ng> in compat mode, this function will return the Izlib> API
+verion that I<zlib-ng> is supporting.
+
+=head2 my $version = Compress::Raw::Zlib::zlibng_version();
+
+Returns the version of the zlib-ng library if this module has been built with the I<zlib-ng> library.
+If this module has been built with I<zlib>, this function will return a empty string.
=head2 my $flags = Compress::Raw::Zlib::zlibCompileFlags();
Returns the flags indicating compile-time options that were used to build
-the zlib library. See the zlib documentation for a description of the flags
+the zlib or zlib-ng library. See the zlib documentation for a description of the flags
returned by C<zlibCompileFlags>.
Note that when the zlib sources are built along with this module the
@@ -1313,6 +1336,21 @@ C<sprintf> flags (bits 24, 25 and 26) should be ignored.
If you are using zlib 1.2.0 or older, C<zlibCompileFlags> will return 0.
+=head2 is_zlib_native();
+=head2 is_zlibng_native();
+=head2 is_zlibng_compat();
+=head2 is_zlibng();
+
+These function can use used to check if C<Compress::Raw::Zlib> was been built with I<zlib> or I<zlib-ng>.
+
+The function C<is_zlib_native> returns true if C<Compress::Raw::Zlib> was built with I<zlib>.
+The function C<is_zlibng> returns true if C<Compress::Raw::Zlib> was built with I<zlib-ng>.
+
+The I<zlib-ng> library has an option to build with a zlib-compataible API.
+The c<is_zlibng_compat> function retuens true if zlib-ng has ben built with this API.
+
+Finally, C<is_zlibng_native> returns true if I<zlib-ng> was built with its native API.
+
=head1 The LimitOutput option.
By default C<< $i->inflate($input, $output) >> will uncompress I<all> data
@@ -1574,9 +1612,9 @@ L<Archive::Tar|Archive::Tar>,
L<IO::Zlib|IO::Zlib>
For RFC 1950, 1951 and 1952 see
-L<http://www.faqs.org/rfcs/rfc1950.html>,
-L<http://www.faqs.org/rfcs/rfc1951.html> and
-L<http://www.faqs.org/rfcs/rfc1952.html>
+L<https://datatracker.ietf.org/doc/html/rfc1950>,
+L<https://datatracker.ietf.org/doc/html/rfc1951> and
+L<https://datatracker.ietf.org/doc/html/rfc1952>
The I<zlib> compression library was written by Jean-loup Gailly
C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
@@ -1584,6 +1622,9 @@ C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
The primary site for the I<zlib> compression library is
L<http://www.zlib.org>.
+The primary site for the I<zlib-ng> compression library is
+L<https://github.com/zlib-ng/zlib-ng>.
+
The primary site for gzip is L<http://www.gzip.org>.
=head1 AUTHOR
@@ -1596,7 +1637,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/Compress/Zlib.pm b/Master/tlpkg/tlperl/lib/Compress/Zlib.pm
index 059571de1ef..68a5a5115af 100644
--- a/Master/tlpkg/tlperl/lib/Compress/Zlib.pm
+++ b/Master/tlpkg/tlperl/lib/Compress/Zlib.pm
@@ -7,17 +7,17 @@ use Carp ;
use IO::Handle ;
use Scalar::Util qw(dualvar);
-use IO::Compress::Base::Common 2.101 ;
-use Compress::Raw::Zlib 2.101 ;
-use IO::Compress::Gzip 2.101 ;
-use IO::Uncompress::Gunzip 2.101 ;
+use IO::Compress::Base::Common 2.204 ;
+use Compress::Raw::Zlib 2.204 ;
+use IO::Compress::Gzip 2.204 ;
+use IO::Uncompress::Gunzip 2.204 ;
use strict ;
use warnings ;
use bytes ;
our ($VERSION, $XS_VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-$VERSION = '2.102';
+$VERSION = '2.204';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -461,7 +461,7 @@ sub inflate
package Compress::Zlib ;
-use IO::Compress::Gzip::Constants 2.101 ;
+use IO::Compress::Gzip::Constants 2.204 ;
sub memGzip($)
{
@@ -1484,9 +1484,9 @@ L<Archive::Tar|Archive::Tar>,
L<IO::Zlib|IO::Zlib>
For RFC 1950, 1951 and 1952 see
-L<http://www.faqs.org/rfcs/rfc1950.html>,
-L<http://www.faqs.org/rfcs/rfc1951.html> and
-L<http://www.faqs.org/rfcs/rfc1952.html>
+L<https://datatracker.ietf.org/doc/html/rfc1950>,
+L<https://datatracker.ietf.org/doc/html/rfc1951> and
+L<https://datatracker.ietf.org/doc/html/rfc1952>
The I<zlib> compression library was written by Jean-loup Gailly
C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
@@ -1494,6 +1494,9 @@ C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
The primary site for the I<zlib> compression library is
L<http://www.zlib.org>.
+The primary site for the I<zlib-ng> compression library is
+L<https://github.com/zlib-ng/zlib-ng>.
+
The primary site for gzip is L<http://www.gzip.org>.
=head1 AUTHOR
@@ -1506,7 +1509,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 1995-2021 Paul Marquess. All rights reserved.
+Copyright (c) 1995-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/Config.pm.orig b/Master/tlpkg/tlperl/lib/Config.orig.pm
index 2afc712a6d3..df2a12b790b 100644..100755
--- a/Master/tlpkg/tlperl/lib/Config.pm.orig
+++ b/Master/tlpkg/tlperl/lib/Config.orig.pm
@@ -1,111 +1,111 @@
-# This file was created by configpm when Perl was built. Any changes
-# made to this file will be lost the next time perl is built.
-
-# for a description of the variables, please have a look at the
-# Glossary file, as written in the Porting folder, or use the url:
-# https://github.com/Perl/perl5/blob/blead/Porting/Glossary
-
-package Config;
-use strict;
-use warnings;
-our ( %Config, $VERSION );
-
-$VERSION = "5.034000";
-
-# Skip @Config::EXPORT because it only contains %Config, which we special
-# case below as it's not a function. @Config::EXPORT won't change in the
-# lifetime of Perl 5.
-my %Export_Cache = (myconfig => 1, config_sh => 1, config_vars => 1,
- config_re => 1, compile_date => 1, local_patches => 1,
- bincompat_options => 1, non_bincompat_options => 1,
- header_files => 1);
-
-@Config::EXPORT = qw(%Config);
-@Config::EXPORT_OK = keys %Export_Cache;
-
-# Need to stub all the functions to make code such as print Config::config_sh
-# keep working
-
-sub bincompat_options;
-sub compile_date;
-sub config_re;
-sub config_sh;
-sub config_vars;
-sub header_files;
-sub local_patches;
-sub myconfig;
-sub non_bincompat_options;
-
-# Define our own import method to avoid pulling in the full Exporter:
-sub import {
- shift;
- @_ = @Config::EXPORT unless @_;
-
- my @funcs = grep $_ ne '%Config', @_;
- my $export_Config = @funcs < @_ ? 1 : 0;
-
- no strict 'refs';
- my $callpkg = caller(0);
- foreach my $func (@funcs) {
- die qq{"$func" is not exported by the Config module\n}
- unless $Export_Cache{$func};
- *{$callpkg.'::'.$func} = \&{$func};
- }
-
- *{"$callpkg\::Config"} = \%Config if $export_Config;
- return;
-}
-
-die "$0: Perl lib version (5.34.0) doesn't match executable '$^X' version ($])"
- unless $^V;
-
-$^V eq 5.34.0
- or die sprintf "%s: Perl lib version (5.34.0) doesn't match executable '$^X' version (%vd)", $0, $^V;
-
-
-sub FETCH {
- my($self, $key) = @_;
-
- # check for cached value (which may be undef so we use exists not defined)
- return exists $self->{$key} ? $self->{$key} : $self->fetch_string($key);
-}
-
-sub TIEHASH {
- bless $_[1], $_[0];
-}
-
-sub DESTROY { }
-
-sub AUTOLOAD {
- require 'Config_heavy.pl';
- goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/;
- die "&Config::AUTOLOAD failed on $Config::AUTOLOAD";
-}
-
-# tie returns the object, so the value returned to require will be true.
-tie %Config, 'Config', {
- archlibexp => 'E:\\tlperl\\lib',
- archname => 'MSWin32-x64-multi-thread',
- cc => 'gcc',
- d_readlink => 'define',
- d_symlink => 'define',
- dlext => 'dll',
- dlsrc => 'dl_win32.xs',
- dont_use_nlink => undef,
- exe_ext => '.exe',
- inc_version_list => '',
- intsize => '4',
- ldlibpthname => '',
- libpth => 'E:\\mingw64\\lib E:\\mingw64\\x86_64-w64-mingw32\\lib E:\\mingw64\\lib\\gcc\\x86_64-w64-mingw32\\8.3.0',
- osname => 'MSWin32',
- osvers => '10.0.19042.508',
- path_sep => ';',
- privlibexp => 'E:\\tlperl\\lib',
- scriptdir => 'E:\\tlperl\\bin',
- sitearchexp => 'E:\\tlperl\\site\\lib',
- sitelibexp => 'E:\\tlperl\\site\\lib',
- so => 'dll',
- useithreads => 'define',
- usevendorprefix => undef,
- version => '5.34.0',
-};
+# This file was created by configpm when Perl was built. Any changes
+# made to this file will be lost the next time perl is built.
+
+# for a description of the variables, please have a look at the
+# Glossary file, as written in the Porting folder, or use the url:
+# https://github.com/Perl/perl5/blob/blead/Porting/Glossary
+
+package Config;
+use strict;
+use warnings;
+our ( %Config, $VERSION );
+
+$VERSION = "5.038002";
+
+# Skip @Config::EXPORT because it only contains %Config, which we special
+# case below as it's not a function. @Config::EXPORT won't change in the
+# lifetime of Perl 5.
+my %Export_Cache = (myconfig => 1, config_sh => 1, config_vars => 1,
+ config_re => 1, compile_date => 1, local_patches => 1,
+ bincompat_options => 1, non_bincompat_options => 1,
+ header_files => 1);
+
+@Config::EXPORT = qw(%Config);
+@Config::EXPORT_OK = keys %Export_Cache;
+
+# Need to stub all the functions to make code such as print Config::config_sh
+# keep working
+
+sub bincompat_options;
+sub compile_date;
+sub config_re;
+sub config_sh;
+sub config_vars;
+sub header_files;
+sub local_patches;
+sub myconfig;
+sub non_bincompat_options;
+
+# Define our own import method to avoid pulling in the full Exporter:
+sub import {
+ shift;
+ @_ = @Config::EXPORT unless @_;
+
+ my @funcs = grep $_ ne '%Config', @_;
+ my $export_Config = @funcs < @_ ? 1 : 0;
+
+ no strict 'refs';
+ my $callpkg = caller(0);
+ foreach my $func (@funcs) {
+ die qq{"$func" is not exported by the Config module\n}
+ unless $Export_Cache{$func};
+ *{$callpkg.'::'.$func} = \&{$func};
+ }
+
+ *{"$callpkg\::Config"} = \%Config if $export_Config;
+ return;
+}
+
+die "$0: Perl lib version (5.38.2) doesn't match executable '$^X' version ($])"
+ unless $^V;
+
+$^V eq 5.38.2
+ or die sprintf "%s: Perl lib version (5.38.2) doesn't match executable '$^X' version (%vd)", $0, $^V;
+
+
+sub FETCH {
+ my($self, $key) = @_;
+
+ # check for cached value (which may be undef so we use exists not defined)
+ return exists $self->{$key} ? $self->{$key} : $self->fetch_string($key);
+}
+
+sub TIEHASH {
+ bless $_[1], $_[0];
+}
+
+sub DESTROY { }
+
+sub AUTOLOAD {
+ require 'Config_heavy.pl';
+ goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/;
+ die "&Config::AUTOLOAD failed on $Config::AUTOLOAD";
+}
+
+# tie returns the object, so the value returned to require will be true.
+tie %Config, 'Config', {
+ archlibexp => 'd:\\tlperl\\lib',
+ archname => 'MSWin32-x64-multi-thread',
+ cc => 'cl',
+ d_readlink => 'define',
+ d_symlink => 'define',
+ dlext => 'dll',
+ dlsrc => 'dl_win32.xs',
+ dont_use_nlink => undef,
+ exe_ext => '.exe',
+ inc_version_list => '',
+ intsize => '4',
+ ldlibpthname => '',
+ libpth => '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.38.33130\\\\lib\\x64"',
+ osname => 'MSWin32',
+ osvers => '10.0.22631.3085',
+ path_sep => ';',
+ privlibexp => 'd:\\tlperl\\lib',
+ scriptdir => 'd:\\tlperl\\bin',
+ sitearchexp => 'd:\\tlperl\\site\\lib',
+ sitelibexp => 'd:\\tlperl\\site\\lib',
+ so => 'dll',
+ useithreads => 'define',
+ usevendorprefix => undef,
+ version => '5.38.2',
+};
diff --git a/Master/tlpkg/tlperl/lib/Config.pm b/Master/tlpkg/tlperl/lib/Config.pm
index de0e8b432af..39afdda3f96 100644
--- a/Master/tlpkg/tlperl/lib/Config.pm
+++ b/Master/tlpkg/tlperl/lib/Config.pm
@@ -10,15 +10,15 @@ use strict;
use warnings;
our ( %Config, $VERSION );
-$VERSION = "5.034000";
+$VERSION = "5.038002";
# Skip @Config::EXPORT because it only contains %Config, which we special
# case below as it's not a function. @Config::EXPORT won't change in the
# lifetime of Perl 5.
my %Export_Cache = (myconfig => 1, config_sh => 1, config_vars => 1,
- config_re => 1, compile_date => 1, local_patches => 1,
- bincompat_options => 1, non_bincompat_options => 1,
- header_files => 1);
+ config_re => 1, compile_date => 1, local_patches => 1,
+ bincompat_options => 1, non_bincompat_options => 1,
+ header_files => 1);
@Config::EXPORT = qw(%Config);
@Config::EXPORT_OK = keys %Export_Cache;
@@ -47,20 +47,20 @@ sub import {
no strict 'refs';
my $callpkg = caller(0);
foreach my $func (@funcs) {
- die qq{"$func" is not exported by the Config module\n}
- unless $Export_Cache{$func};
- *{$callpkg.'::'.$func} = \&{$func};
+ die qq{"$func" is not exported by the Config module\n}
+ unless $Export_Cache{$func};
+ *{$callpkg.'::'.$func} = \&{$func};
}
*{"$callpkg\::Config"} = \%Config if $export_Config;
return;
}
-die "$0: Perl lib version (5.34.0) doesn't match executable '$^X' version ($])"
+die "$0: Perl lib version (5.38.2) doesn't match executable '$^X' version ($])"
unless $^V;
-$^V eq 5.34.0
- or die sprintf "%s: Perl lib version (5.34.0) doesn't match executable '$^X' version (%vd)", $0, $^V;
+$^V eq 5.38.2
+ or die sprintf "%s: Perl lib version (5.38.2) doesn't match executable '$^X' version (%vd)", $0, $^V;
sub FETCH {
@@ -81,17 +81,16 @@ sub AUTOLOAD {
goto \&launcher unless $Config::AUTOLOAD =~ /launcher$/;
die "&Config::AUTOLOAD failed on $Config::AUTOLOAD";
}
-
+
my $rootdir = __FILE__;
$rootdir =~ s![\\/][^\\/]*[\\/][^\\/]*$!!;
$rootdir =~ s!/!\\!g;
-my $mingdir = "E:\\mingw64";
# tie returns the object, so the value returned to require will be true.
tie %Config, 'Config', {
archlibexp => "$rootdir\\lib",
archname => 'MSWin32-x64-multi-thread',
- cc => 'gcc',
+ cc => 'cl',
d_readlink => 'define',
d_symlink => 'define',
dlext => 'dll',
@@ -101,9 +100,9 @@ tie %Config, 'Config', {
inc_version_list => '',
intsize => '4',
ldlibpthname => '',
- libpth => "$mingdir\\lib $mingdir\\x86_64-w64-mingw32\\lib $mingdir\\lib\\gcc\\x86_64-w64-mingw32\\8.3.0",
+ libpth => '"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.38.33130\\\\lib\\x64"',
osname => 'MSWin32',
- osvers => '10.0.19042.508',
+ osvers => '10.0.22631.3085',
path_sep => ';',
privlibexp => "$rootdir\\lib",
scriptdir => "$rootdir\\bin",
@@ -112,5 +111,5 @@ tie %Config, 'Config', {
so => 'dll',
useithreads => 'define',
usevendorprefix => undef,
- version => '5.34.0',
+ version => '5.38.2',
};
diff --git a/Master/tlpkg/tlperl/lib/Config.pod b/Master/tlpkg/tlperl/lib/Config.pod
index 629d2eca92f..49edf62cd00 100644
--- a/Master/tlpkg/tlperl/lib/Config.pod
+++ b/Master/tlpkg/tlperl/lib/Config.pod
@@ -8,8 +8,8 @@ Config - access Perl configuration information
use Config;
if ($Config{usethreads}) {
- print "has thread support\n"
- }
+ print "has thread support\n"
+ }
use Config qw(myconfig config_sh config_vars config_re);
@@ -25,7 +25,7 @@ Config - access Perl configuration information
=head1 DESCRIPTION
The Config module contains all the information that was available to
-the C<Configure> program at Perl build time (over 900 values).
+the F<Configure> program at Perl build time (over 900 values).
Shell variables from the F<config.sh> file (written by Configure) are
stored in the readonly-variable C<%Config>, indexed by their names.
@@ -104,19 +104,19 @@ Here's a more sophisticated example of using %Config:
my %sig_num;
my @sig_name;
unless($Config{sig_name} && $Config{sig_num}) {
- die "No sigs?";
+ die "No sigs?";
} else {
- my @names = split ' ', $Config{sig_name};
- @sig_num{@names} = split ' ', $Config{sig_num};
- foreach (@names) {
- $sig_name[$sig_num{$_}] ||= $_;
- }
+ my @names = split ' ', $Config{sig_name};
+ @sig_num{@names} = split ' ', $Config{sig_num};
+ foreach (@names) {
+ $sig_name[$sig_num{$_}] ||= $_;
+ }
}
print "signal #17 = $sig_name[17]\n";
- if ($sig_num{ALRM}) {
- print "SIGALRM is $sig_num{ALRM}\n";
- }
+ if ($sig_num{ALRM}) {
+ print "SIGALRM is $sig_num{ALRM}\n";
+ }
=head1 WARNING
@@ -148,6 +148,80 @@ in such cases.
=cut
+=head2 P
+
+=over 4
+
+=item C<PERL_API_REVISION>
+
+From F<patchlevel.h>:
+
+This number describes the earliest compatible C<PERL_REVISION> of
+Perl (C<compatibility> here being defined as sufficient F<binary/C<API>>
+compatibility to run C<XS> code built with the older version).
+Normally this does not change across maintenance releases.
+Please read the comment in F<patchlevel.h>.
+
+=item C<PERL_API_SUBVERSION>
+
+From F<patchlevel.h>:
+
+This number describes the earliest compatible C<PERL_SUBVERSION> of
+Perl (C<compatibility> here being defined as sufficient F<binary/C<API>>
+compatibility to run C<XS> code built with the older version).
+Normally this does not change across maintenance releases.
+Please read the comment in F<patchlevel.h>.
+
+=item C<PERL_API_VERSION>
+
+From F<patchlevel.h>:
+
+This number describes the earliest compatible C<PERL_VERSION> of
+Perl (C<compatibility> here being defined as sufficient F<binary/C<API>>
+compatibility to run C<XS> code built with the older version).
+Normally this does not change across maintenance releases.
+Please read the comment in F<patchlevel.h>.
+
+=item C<PERL_CONFIG_SH>
+
+From F<Oldsyms.U>:
+
+This is set to C<true> in F<config.sh> so that a shell script
+sourcing F<config.sh> can tell if it has been sourced already.
+
+=item C<PERL_PATCHLEVEL>
+
+From F<Oldsyms.U>:
+
+This symbol reflects the patchlevel, if available. Will usually
+come from the F<.patch> file, which is available when the perl
+source tree was fetched with rsync.
+
+=item C<PERL_REVISION>
+
+From F<Oldsyms.U>:
+
+In a Perl version number such as 5.6.2, this is the 5.
+This value is manually set in F<patchlevel.h>
+
+=item C<PERL_SUBVERSION>
+
+From F<Oldsyms.U>:
+
+In a Perl version number such as 5.6.2, this is the 2.
+Values greater than 50 represent potentially unstable
+development subversions.
+This value is manually set in F<patchlevel.h>
+
+=item C<PERL_VERSION>
+
+From F<Oldsyms.U>:
+
+In a Perl version number such as 5.6.2, this is the 6.
+This value is manually set in F<patchlevel.h>
+
+=back
+
=head2 _
=over 4
@@ -771,6 +845,130 @@ is defined.
=over 4
+=item C<d_Gconvert>
+
+From F<d_gconvert.U>:
+
+This variable holds what Gconvert is defined as to convert
+floating point numbers into strings. By default, Configure
+sets C<this> macro to use the first of gconvert, gcvt, or sprintf
+that pass sprintf-%g-like behavior tests. If perl is using
+long doubles, the macro uses the first of the following
+functions that pass Configure's tests: qgcvt, sprintf (if
+Configure knows how to make sprintf format long doubles--see
+sPRIgldbl), gconvert, gcvt, and sprintf (casting to double).
+The gconvert_preference and gconvert_ld_preference variables
+can be used to alter Configure's preferences, for doubles and
+long doubles, respectively. If present, they contain a
+space-separated list of one or more of the above function
+names in the order they should be tried.
+
+d_Gconvert may be set to override Configure with a platform-
+specific function. If this function expects a double, a
+different value may need to be set by the F<uselongdouble.cbu>
+call-back unit so that long doubles can be formatted without
+loss of precision.
+
+=item C<d_PRIEUldbl>
+
+From F<longdblfio.U>:
+
+This variable conditionally defines the PERL_PRIfldbl symbol, which
+indicates that stdio has a symbol to print long doubles.
+The C<U> in the name is to separate this from d_PRIeldbl so that even
+case-blind systems can see the difference.
+
+=item C<d_PRIFUldbl>
+
+From F<longdblfio.U>:
+
+This variable conditionally defines the PERL_PRIfldbl symbol, which
+indicates that stdio has a symbol to print long doubles.
+The C<U> in the name is to separate this from d_PRIfldbl so that even
+case-blind systems can see the difference.
+
+=item C<d_PRIGUldbl>
+
+From F<longdblfio.U>:
+
+This variable conditionally defines the PERL_PRIfldbl symbol, which
+indicates that stdio has a symbol to print long doubles.
+The C<U> in the name is to separate this from d_PRIgldbl so that even
+case-blind systems can see the difference.
+
+=item C<d_PRIXU64>
+
+From F<quadfio.U>:
+
+This variable conditionally defines the PERL_PRIXU64 symbol, which
+indicates that stdio has a symbol to print 64-bit hExADECimAl numbers.
+The C<U> in the name is to separate this from d_PRIx64 so that even
+case-blind systems can see the difference.
+
+=item C<d_PRId64>
+
+From F<quadfio.U>:
+
+This variable conditionally defines the PERL_PRId64 symbol, which
+indicates that stdio has a symbol to print 64-bit decimal numbers.
+
+=item C<d_PRIeldbl>
+
+From F<longdblfio.U>:
+
+This variable conditionally defines the PERL_PRIfldbl symbol, which
+indicates that stdio has a symbol to print long doubles.
+
+=item C<d_PRIfldbl>
+
+From F<longdblfio.U>:
+
+This variable conditionally defines the PERL_PRIfldbl symbol, which
+indicates that stdio has a symbol to print long doubles.
+
+=item C<d_PRIgldbl>
+
+From F<longdblfio.U>:
+
+This variable conditionally defines the PERL_PRIfldbl symbol, which
+indicates that stdio has a symbol to print long doubles.
+
+=item C<d_PRIi64>
+
+From F<quadfio.U>:
+
+This variable conditionally defines the PERL_PRIi64 symbol, which
+indicates that stdio has a symbol to print 64-bit decimal numbers.
+
+=item C<d_PRIo64>
+
+From F<quadfio.U>:
+
+This variable conditionally defines the PERL_PRIo64 symbol, which
+indicates that stdio has a symbol to print 64-bit octal numbers.
+
+=item C<d_PRIu64>
+
+From F<quadfio.U>:
+
+This variable conditionally defines the PERL_PRIu64 symbol, which
+indicates that stdio has a symbol to print 64-bit unsigned decimal
+numbers.
+
+=item C<d_PRIx64>
+
+From F<quadfio.U>:
+
+This variable conditionally defines the PERL_PRIx64 symbol, which
+indicates that stdio has a symbol to print 64-bit hexadecimal numbers.
+
+=item C<d_SCNfldbl>
+
+From F<longdblfio.U>:
+
+This variable conditionally defines the PERL_PRIfldbl symbol, which
+indicates that stdio has a symbol to scan long doubles.
+
=item C<d__fwalk>
From F<d__fwalk.U>:
@@ -937,6 +1135,13 @@ indicates that the C compiler can know that certain variables
and arguments may not always be used, and to not throw warnings
if they don't get used.
+=item C<d_attribute_visibility>
+
+From F<d_attribut.U>:
+
+This variable conditionally defines the C<HASATTRIBUTE_VISIBILITY> symbol,
+and indicates different C<GCC> attribute visibility
+
=item C<d_attribute_warn_unused_result>
From F<d_attribut.U>:
@@ -1603,6 +1808,22 @@ From F<d_fegetround.U>:
This variable conditionally defines C<HAS_FEGETROUND> if fegetround() is
available to get the floating point rounding mode.
+=item C<d_ffs>
+
+From F<d_ffs.U>:
+
+This variable conditionally defines the C<HAS_FFS> symbol, which
+indicates to the C program that the ffs() routine is available
+to find the first bit which is set in its integer argument.
+
+=item C<d_ffsl>
+
+From F<d_ffs.U>:
+
+This variable conditionally defines the C<HAS_FFSL> symbol, which
+indicates to the C program that the ffsl() routine is available
+to find the first bit which is set in its long integer argument.
+
=item C<d_fgetpos>
From F<d_fgetpos.U>:
@@ -1827,30 +2048,6 @@ if the gai_strerror() routine is available and can be used to
translate error codes returned by getaddrinfo() into human
readable strings.
-=item C<d_Gconvert>
-
-From F<d_gconvert.U>:
-
-This variable holds what Gconvert is defined as to convert
-floating point numbers into strings. By default, Configure
-sets C<this> macro to use the first of gconvert, gcvt, or sprintf
-that pass sprintf-%g-like behavior tests. If perl is using
-long doubles, the macro uses the first of the following
-functions that pass Configure's tests: qgcvt, sprintf (if
-Configure knows how to make sprintf format long doubles--see
-sPRIgldbl), gconvert, gcvt, and sprintf (casting to double).
-The gconvert_preference and gconvert_ld_preference variables
-can be used to alter Configure's preferences, for doubles and
-long doubles, respectively. If present, they contain a
-space-separated list of one or more of the above function
-names in the order they should be tried.
-
-d_Gconvert may be set to override Configure with a platform-
-specific function. If this function expects a double, a
-different value may need to be set by the F<uselongdouble.cbu>
-call-back unit so that long doubles can be formatted without
-loss of precision.
-
=item C<d_gdbm_ndbm_h_uses_prototypes>
From F<i_ndbm.U>:
@@ -3221,6 +3418,22 @@ From F<d_nl_langinfo.U>:
This variable conditionally defines the C<HAS_NL_LANGINFO> symbol, which
indicates to the C program that the nl_langinfo() routine is available.
+=item C<d_nl_langinfo_l>
+
+From F<d_nl_langinfo_l.U>:
+
+This variable contains the eventual value of the
+C<HAS_NL_LANGINFO_L> symbol, which indicates if the
+nl_langinfo_l() function exists.
+
+=item C<d_non_int_bitfields>
+
+From F<d_bitfield.U>:
+
+This variable conditionally defines C<HAS_NON_INT_BITFIELDS>
+which indicates that the C compiler accepts struct bitfields of sizes
+that aren't C<int> or C<unsigned int>
+
=item C<d_nv_preserves_uv>
From F<perlxv.U>:
@@ -3361,68 +3574,6 @@ This variable conditionally defines the C<HAS_PRCTL_SET_NAME> symbol,
which indicates to the C program that the prctl() routine supports
the C<PR_SET_NAME> option.
-=item C<d_PRId64>
-
-From F<quadfio.U>:
-
-This variable conditionally defines the PERL_PRId64 symbol, which
-indicates that stdio has a symbol to print 64-bit decimal numbers.
-
-=item C<d_PRIeldbl>
-
-From F<longdblfio.U>:
-
-This variable conditionally defines the PERL_PRIfldbl symbol, which
-indicates that stdio has a symbol to print long doubles.
-
-=item C<d_PRIEUldbl>
-
-From F<longdblfio.U>:
-
-This variable conditionally defines the PERL_PRIfldbl symbol, which
-indicates that stdio has a symbol to print long doubles.
-The C<U> in the name is to separate this from d_PRIeldbl so that even
-case-blind systems can see the difference.
-
-=item C<d_PRIfldbl>
-
-From F<longdblfio.U>:
-
-This variable conditionally defines the PERL_PRIfldbl symbol, which
-indicates that stdio has a symbol to print long doubles.
-
-=item C<d_PRIFUldbl>
-
-From F<longdblfio.U>:
-
-This variable conditionally defines the PERL_PRIfldbl symbol, which
-indicates that stdio has a symbol to print long doubles.
-The C<U> in the name is to separate this from d_PRIfldbl so that even
-case-blind systems can see the difference.
-
-=item C<d_PRIgldbl>
-
-From F<longdblfio.U>:
-
-This variable conditionally defines the PERL_PRIfldbl symbol, which
-indicates that stdio has a symbol to print long doubles.
-
-=item C<d_PRIGUldbl>
-
-From F<longdblfio.U>:
-
-This variable conditionally defines the PERL_PRIfldbl symbol, which
-indicates that stdio has a symbol to print long doubles.
-The C<U> in the name is to separate this from d_PRIgldbl so that even
-case-blind systems can see the difference.
-
-=item C<d_PRIi64>
-
-From F<quadfio.U>:
-
-This variable conditionally defines the PERL_PRIi64 symbol, which
-indicates that stdio has a symbol to print 64-bit decimal numbers.
-
=item C<d_printf_format_null>
From F<d_attribut.U>:
@@ -3430,37 +3581,6 @@ From F<d_attribut.U>:
This variable conditionally defines C<PRINTF_FORMAT_NULL_OK>, which
indicates the C compiler allows printf-like formats to be null.
-=item C<d_PRIo64>
-
-From F<quadfio.U>:
-
-This variable conditionally defines the PERL_PRIo64 symbol, which
-indicates that stdio has a symbol to print 64-bit octal numbers.
-
-=item C<d_PRIu64>
-
-From F<quadfio.U>:
-
-This variable conditionally defines the PERL_PRIu64 symbol, which
-indicates that stdio has a symbol to print 64-bit unsigned decimal
-numbers.
-
-=item C<d_PRIx64>
-
-From F<quadfio.U>:
-
-This variable conditionally defines the PERL_PRIx64 symbol, which
-indicates that stdio has a symbol to print 64-bit hexadecimal numbers.
-
-=item C<d_PRIXU64>
-
-From F<quadfio.U>:
-
-This variable conditionally defines the PERL_PRIXU64 symbol, which
-indicates that stdio has a symbol to print 64-bit hExADECimAl numbers.
-The C<U> in the name is to separate this from d_PRIx64 so that even
-case-blind systems can see the difference.
-
=item C<d_procselfexe>
From F<d_procselfexe.U>:
@@ -3758,13 +3878,6 @@ This variable conditionally defines the C<HAS_SCM_RIGHTS> symbol,
which indicates that the C<SCM_RIGHTS> is available. #ifdef is
not enough because it may be an enum, glibc has been known to do this.
-=item C<d_SCNfldbl>
-
-From F<longdblfio.U>:
-
-This variable conditionally defines the PERL_PRIfldbl symbol, which
-indicates that stdio has a symbol to scan long doubles.
-
=item C<d_seekdir>
From F<d_readdir.U>:
@@ -3837,6 +3950,13 @@ This variable conditionally defines the C<HAS_SETEGID> symbol, which
indicates to the C program that the setegid() routine is available
to change the effective gid of the current program.
+=item C<d_setenv>
+
+From F<d_setenv.U>:
+
+This variable conditionally defines the C<HAS_SETENV> symbol, which
+indicates to the C program that the setenv routine is available.
+
=item C<d_seteuid>
From F<d_seteuid.U>:
@@ -4574,6 +4694,13 @@ From F<d_strxfrm.U>:
This variable conditionally defines C<HAS_STRXFRM> if strxfrm() is
available to transform strings.
+=item C<d_strxfrm_l>
+
+From F<d_strxfrm_l.U>:
+
+This variable conditionally defines C<HAS_STRXFRM_L> if strxfrm_l() is
+available to transform strings.
+
=item C<d_suidsafe>
From F<d_dosuid.U>:
@@ -4674,6 +4801,13 @@ This variable conditionally defines the C<HAS_TGAMMA> symbol, which
indicates to the C program that the tgamma() routine is available
for the gamma function. See also d_lgamma.
+=item C<d_thread_local>
+
+From F<d_thread_local.U>:
+
+This variable conditionally defines the C<PERL_THREAD_LOCAL> symbol. In
+turn that gives a linkage specification for thread-local storage.
+
=item C<d_thread_safe_nl_langinfo_l>
From F<d_nl_langinfo_l.U>:
@@ -5321,6 +5455,15 @@ This variable holds a list of extra modules to install.
=over 4
+=item C<fflushNULL>
+
+From F<fflushall.U>:
+
+This symbol, if defined, tells that fflush(C<NULL>) correctly
+flushes all pending stdio output without side effects. In
+particular, on some platforms calling fflush(C<NULL>) *still*
+corrupts C<STDIN> if it is a pipe.
+
=item C<fflushall>
From F<fflushall.U>:
@@ -5331,15 +5474,6 @@ the stdio file handles stored in an array and fflush them.
Note that if fflushNULL is defined, fflushall will not
even be probed for and will be left undefined.
-=item C<fflushNULL>
-
-From F<fflushall.U>:
-
-This symbol, if defined, tells that fflush(C<NULL>) correctly
-flushes all pending stdio output without side effects. In
-particular, on some platforms calling fflush(C<NULL>) *still*
-corrupts C<STDIN> if it is a pipe.
-
=item C<find>
From F<Loc.U>:
@@ -5840,6 +5974,13 @@ From F<perlxv.U>:
This variable contains the C type used for Perl's I16.
+=item C<i32dformat>
+
+From F<perlx32f.U>:
+
+This variable contains the format string used for printing
+a Perl I32 as a signed decimal integer.
+
=item C<i32size>
From F<perlxv.U>:
@@ -6344,6 +6485,13 @@ From F<i_sysstatvfs.U>:
This variable conditionally defines the C<I_SYSSTATVFS> symbol,
and indicates whether a C program should include <sys/statvfs.h>.
+=item C<i_syssyscall>
+
+From F<i_syssyscall.U>:
+
+This variable conditionally defines the C<I_SYS_SYSCALL> symbol,
+and indicates whether a C program should include <sys/syscall.h>.
+
=item C<i_systime>
From F<i_time.U>:
@@ -6478,8 +6626,8 @@ that indicates whether a C program may include <wctype.h>.
From F<d_newlocale.U>:
-This symbol, if defined, indicates to the C program that it should
-include <xlocale.h> to get uselocale() and its friends
+This symbol, if defined, indicates to the C program that the
+header F<xlocale.h> is available. See also xlocale_needed.
=item C<ignore_versioned_solibs>
@@ -7498,6 +7646,27 @@ This variable is used internally by Configure to determine the
full pathname (if any) of the nroff program. After Configure runs,
the value is reset to a plain C<nroff> and is not useful.
+=item C<nvEUformat>
+
+From F<perlxvf.U>:
+
+This variable contains the format string used for printing
+a Perl C<NV> using %E-ish floating point format.
+
+=item C<nvFUformat>
+
+From F<perlxvf.U>:
+
+This variable contains the format string used for printing
+a Perl C<NV> using %F-ish floating point format.
+
+=item C<nvGUformat>
+
+From F<perlxvf.U>:
+
+This variable contains the format string used for printing
+a Perl C<NV> using %G-ish floating point format.
+
=item C<nv_overflows_integers_at>
From F<perlxv.U>:
@@ -7520,13 +7689,6 @@ From F<perlxvf.U>:
This variable contains the format string used for printing
a Perl C<NV> using %e-ish floating point format.
-=item C<nvEUformat>
-
-From F<perlxvf.U>:
-
-This variable contains the format string used for printing
-a Perl C<NV> using %E-ish floating point format.
-
=item C<nvfformat>
From F<perlxvf.U>:
@@ -7534,13 +7696,6 @@ From F<perlxvf.U>:
This variable contains the format string used for printing
a Perl C<NV> using %f-ish floating point format.
-=item C<nvFUformat>
-
-From F<perlxvf.U>:
-
-This variable contains the format string used for printing
-a Perl C<NV> using %F-ish floating point format.
-
=item C<nvgformat>
From F<perlxvf.U>:
@@ -7548,13 +7703,6 @@ From F<perlxvf.U>:
This variable contains the format string used for printing
a Perl C<NV> using %g-ish floating point format.
-=item C<nvGUformat>
-
-From F<perlxvf.U>:
-
-This variable contains the format string used for printing
-a Perl C<NV> using %G-ish floating point format.
-
=item C<nvmantbits>
From F<mantbits.U>:
@@ -7717,57 +7865,6 @@ This variable contains the full path (if any) to a previously
installed F<perl5.005> or later suitable for running the script
to determine inc_version_list.
-=back
-
-=head2 P
-
-=over 4
-
-=item C<PERL_API_REVISION>
-
-From F<patchlevel.h>:
-
-This number describes the earliest compatible C<PERL_REVISION> of
-Perl (C<compatibility> here being defined as sufficient F<binary/C<API>>
-compatibility to run C<XS> code built with the older version).
-Normally this does not change across maintenance releases.
-Please read the comment in F<patchlevel.h>.
-
-=item C<PERL_API_SUBVERSION>
-
-From F<patchlevel.h>:
-
-This number describes the earliest compatible C<PERL_SUBVERSION> of
-Perl (C<compatibility> here being defined as sufficient F<binary/C<API>>
-compatibility to run C<XS> code built with the older version).
-Normally this does not change across maintenance releases.
-Please read the comment in F<patchlevel.h>.
-
-=item C<PERL_API_VERSION>
-
-From F<patchlevel.h>:
-
-This number describes the earliest compatible C<PERL_VERSION> of
-Perl (C<compatibility> here being defined as sufficient F<binary/C<API>>
-compatibility to run C<XS> code built with the older version).
-Normally this does not change across maintenance releases.
-Please read the comment in F<patchlevel.h>.
-
-=item C<PERL_CONFIG_SH>
-
-From F<Oldsyms.U>:
-
-This is set to C<true> in F<config.sh> so that a shell script
-sourcing F<config.sh> can tell if it has been sourced already.
-
-=item C<PERL_PATCHLEVEL>
-
-From F<Oldsyms.U>:
-
-This symbol reflects the patchlevel, if available. Will usually
-come from the F<.patch> file, which is available when the perl
-source tree was fetched with rsync.
-
=item C<perl_patchlevel>
From F<patchlevel.U>:
@@ -7779,13 +7876,6 @@ It does not correlate with the Perl version numbers or
the maintenance versus development dichotomy except
by also being increasing.
-=item C<PERL_REVISION>
-
-From F<Oldsyms.U>:
-
-In a Perl version number such as 5.6.2, this is the 5.
-This value is manually set in F<patchlevel.h>
-
=item C<perl_static_inline>
From F<d_static_inline.U>:
@@ -7799,21 +7889,12 @@ static __inline (C<MSVC>)
static _inline (older C<MSVC>)
static (c89 compilers)
-=item C<PERL_SUBVERSION>
-
-From F<Oldsyms.U>:
-
-In a Perl version number such as 5.6.2, this is the 2.
-Values greater than 50 represent potentially unstable
-development subversions.
-This value is manually set in F<patchlevel.h>
-
-=item C<PERL_VERSION>
+=item C<perl_thread_local>
-From F<Oldsyms.U>:
+From F<d_thread_local.U>:
-In a Perl version number such as 5.6.2, this is the 6.
-This value is manually set in F<patchlevel.h>
+This variable gives the value for the C<PERL_THREAD_LOCAL> symbol (when
+defined), which gives a linkage specification for thread-local storage.
=item C<perladmin>
@@ -8081,6 +8162,133 @@ of usenm and the flags on the Configure command line.
=over 4
+=item C<sGMTIME_max>
+
+From F<time_size.U>:
+
+This variable defines the maximum value of the time_t offset that
+the system function gmtime () accepts
+
+=item C<sGMTIME_min>
+
+From F<time_size.U>:
+
+This variable defines the minimum value of the time_t offset that
+the system function gmtime () accepts
+
+=item C<sLOCALTIME_max>
+
+From F<time_size.U>:
+
+This variable defines the maximum value of the time_t offset that
+the system function localtime () accepts
+
+=item C<sLOCALTIME_min>
+
+From F<time_size.U>:
+
+This variable defines the minimum value of the time_t offset that
+the system function localtime () accepts
+
+=item C<sPRIEUldbl>
+
+From F<longdblfio.U>:
+
+This variable, if defined, contains the string used by stdio to
+format long doubles (format C<E>) for output.
+The C<U> in the name is to separate this from sPRIeldbl so that even
+case-blind systems can see the difference.
+
+=item C<sPRIFUldbl>
+
+From F<longdblfio.U>:
+
+This variable, if defined, contains the string used by stdio to
+format long doubles (format C<F>) for output.
+The C<U> in the name is to separate this from sPRIfldbl so that even
+case-blind systems can see the difference.
+
+=item C<sPRIGUldbl>
+
+From F<longdblfio.U>:
+
+This variable, if defined, contains the string used by stdio to
+format long doubles (format C<G>) for output.
+The C<U> in the name is to separate this from sPRIgldbl so that even
+case-blind systems can see the difference.
+
+=item C<sPRIXU64>
+
+From F<quadfio.U>:
+
+This variable, if defined, contains the string used by stdio to
+format 64-bit hExADECimAl numbers (format C<X>) for output.
+The C<U> in the name is to separate this from sPRIx64 so that even
+case-blind systems can see the difference.
+
+=item C<sPRId64>
+
+From F<quadfio.U>:
+
+This variable, if defined, contains the string used by stdio to
+format 64-bit decimal numbers (format C<d>) for output.
+
+=item C<sPRIeldbl>
+
+From F<longdblfio.U>:
+
+This variable, if defined, contains the string used by stdio to
+format long doubles (format C<e>) for output.
+
+=item C<sPRIfldbl>
+
+From F<longdblfio.U>:
+
+This variable, if defined, contains the string used by stdio to
+format long doubles (format C<f>) for output.
+
+=item C<sPRIgldbl>
+
+From F<longdblfio.U>:
+
+This variable, if defined, contains the string used by stdio to
+format long doubles (format C<g>) for output.
+
+=item C<sPRIi64>
+
+From F<quadfio.U>:
+
+This variable, if defined, contains the string used by stdio to
+format 64-bit decimal numbers (format C<i>) for output.
+
+=item C<sPRIo64>
+
+From F<quadfio.U>:
+
+This variable, if defined, contains the string used by stdio to
+format 64-bit octal numbers (format C<o>) for output.
+
+=item C<sPRIu64>
+
+From F<quadfio.U>:
+
+This variable, if defined, contains the string used by stdio to
+format 64-bit unsigned decimal numbers (format C<u>) for output.
+
+=item C<sPRIx64>
+
+From F<quadfio.U>:
+
+This variable, if defined, contains the string used by stdio to
+format 64-bit hexadecimal numbers (format C<x>) for output.
+
+=item C<sSCNfldbl>
+
+From F<longdblfio.U>:
+
+This variable, if defined, contains the string used by stdio to
+format long doubles (format C<f>) for input.
+
=item C<sched_yield>
From F<d_pthread_y.U>:
@@ -8209,20 +8417,6 @@ It is zero if d_setservent_r is undef, and one of the
C<REENTRANT_PROTO_T_ABC> macros of F<reentr.h> if d_setservent_r
is defined.
-=item C<sGMTIME_max>
-
-From F<time_size.U>:
-
-This variable defines the maximum value of the time_t offset that
-the system function gmtime () accepts
-
-=item C<sGMTIME_min>
-
-From F<time_size.U>:
-
-This variable defines the minimum value of the time_t offset that
-the system function gmtime () accepts
-
=item C<sh>
From F<sh.U>:
@@ -8560,20 +8754,6 @@ From F<Loc.U>:
This variable is defined but not used by Configure.
The value is the empty string and is not useful.
-=item C<sLOCALTIME_max>
-
-From F<time_size.U>:
-
-This variable defines the maximum value of the time_t offset that
-the system function localtime () accepts
-
-=item C<sLOCALTIME_min>
-
-From F<time_size.U>:
-
-This variable defines the minimum value of the time_t offset that
-the system function localtime () accepts
-
=item C<smail>
From F<Loc.U>:
@@ -8631,98 +8811,6 @@ From F<spitshell.U>:
This variable contains the command necessary to spit out a runnable
shell on this system. It is either cat or a grep C<-v> for # comments.
-=item C<sPRId64>
-
-From F<quadfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format 64-bit decimal numbers (format C<d>) for output.
-
-=item C<sPRIeldbl>
-
-From F<longdblfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format long doubles (format C<e>) for output.
-
-=item C<sPRIEUldbl>
-
-From F<longdblfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format long doubles (format C<E>) for output.
-The C<U> in the name is to separate this from sPRIeldbl so that even
-case-blind systems can see the difference.
-
-=item C<sPRIfldbl>
-
-From F<longdblfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format long doubles (format C<f>) for output.
-
-=item C<sPRIFUldbl>
-
-From F<longdblfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format long doubles (format C<F>) for output.
-The C<U> in the name is to separate this from sPRIfldbl so that even
-case-blind systems can see the difference.
-
-=item C<sPRIgldbl>
-
-From F<longdblfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format long doubles (format C<g>) for output.
-
-=item C<sPRIGUldbl>
-
-From F<longdblfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format long doubles (format C<G>) for output.
-The C<U> in the name is to separate this from sPRIgldbl so that even
-case-blind systems can see the difference.
-
-=item C<sPRIi64>
-
-From F<quadfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format 64-bit decimal numbers (format C<i>) for output.
-
-=item C<sPRIo64>
-
-From F<quadfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format 64-bit octal numbers (format C<o>) for output.
-
-=item C<sPRIu64>
-
-From F<quadfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format 64-bit unsigned decimal numbers (format C<u>) for output.
-
-=item C<sPRIx64>
-
-From F<quadfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format 64-bit hexadecimal numbers (format C<x>) for output.
-
-=item C<sPRIXU64>
-
-From F<quadfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format 64-bit hExADECimAl numbers (format C<X>) for output.
-The C<U> in the name is to separate this from sPRIx64 so that even
-case-blind systems can see the difference.
-
=item C<srand48_r_proto>
From F<d_srand48_r.U>:
@@ -8749,13 +8837,6 @@ This variable holds the (possibly relative) path of the package source.
It is up to the Makefile to use this variable and set C<VPATH> accordingly
to find the sources remotely. Use $pkgsrc to have an absolute path.
-=item C<sSCNfldbl>
-
-From F<longdblfio.U>:
-
-This variable, if defined, contains the string used by stdio to
-format long doubles (format C<f>) for input.
-
=item C<ssizetype>
From F<ssizetype.U>:
@@ -8765,6 +8846,19 @@ long or int. It is used by functions that return a count
of bytes or an error condition. It must be a signed type.
We will pick a type such that sizeof(SSize_t) == sizeof(Size_t).
+=item C<st_dev_sign>
+
+From F<st_dev_def.U>:
+
+This variable contains the signedness of struct stat's st_dev.
+1 for unsigned, -1 for signed.
+
+=item C<st_dev_size>
+
+From F<st_dev_def.U>:
+
+This variable contains the size of struct stat's st_dev in bytes.
+
=item C<st_ino_sign>
From F<st_ino_def.U>:
@@ -8918,6 +9012,26 @@ From F<Loc.U>:
This variable is defined but not used by Configure.
The value is the empty string and is not useful.
+=item C<taint_disabled>
+
+From define: C<SILENT_NO_TAINT_SUPPORT> or C<NO_TAINT_SUPPORT>
+
+If this perl is compiled with support for taint mode this variable will
+be set to the empty string, if it was compiled with
+C<SILENT_NO_TAINT_SUPPORT> defined then it will be set to be "silent",
+and if it was compiled with C<NO_TAINT_SUPPORT> defined it will be
+'define'. Either of the above defines will results in it being a true
+value. This property was added in 5.37.11. See also L</taint_support>.
+
+=item C<taint_support>
+
+From define: C<SILENT_NO_TAINT_SUPPORT> or C<NO_TAINT_SUPPORT>
+
+If this perl is compiled with support for taint mode this variable will
+be set to 'define', if it is not it will be set to the empty string.
+Either of the above defines will result in it being empty. This property
+was added in version 5.37.11. See also L</taint_disabled>.
+
=item C<tar>
From F<Loc.U>:
@@ -9094,6 +9208,20 @@ From F<perlxv.U>:
This variable contains the C type used for Perl's U16.
+=item C<u32XUformat>
+
+From F<perlx32f.U>:
+
+This variable contains the format string used for printing
+a Perl U32 as an unsigned hexadecimal integer in uppercase C<ABCDEF>.
+
+=item C<u32oformat>
+
+From F<perlx32f.U>:
+
+This variable contains the format string used for printing
+a Perl U32 as an unsigned octal integer.
+
=item C<u32size>
From F<perlxv.U>:
@@ -9106,6 +9234,20 @@ From F<perlxv.U>:
This variable contains the C type used for Perl's U32.
+=item C<u32uformat>
+
+From F<perlx32f.U>:
+
+This variable contains the format string used for printing
+a Perl U32 as an unsigned decimal integer.
+
+=item C<u32xformat>
+
+From F<perlx32f.U>:
+
+This variable contains the format string used for printing
+a Perl U32 as an unsigned hexadecimal integer in lowercase abcdef.
+
=item C<u64size>
From F<perlxv.U>:
@@ -9463,6 +9605,13 @@ From F<Loc.U>:
This variable is defined but not used by Configure.
The value is the empty string and is not useful.
+=item C<uvXUformat>
+
+From F<perlxvf.U>:
+
+This variable contains the format string used for printing
+a Perl C<UV> as an unsigned hexadecimal integer in uppercase C<ABCDEF>.
+
=item C<uvoformat>
From F<perlxvf.U>:
@@ -9496,13 +9645,6 @@ From F<perlxvf.U>:
This variable contains the format string used for printing
a Perl C<UV> as an unsigned hexadecimal integer in lowercase abcdef.
-=item C<uvXUformat>
-
-From F<perlxvf.U>:
-
-This variable contains the format string used for printing
-a Perl C<UV> as an unsigned hexadecimal integer in uppercase C<ABCDEF>.
-
=back
=head2 v
@@ -9742,6 +9884,13 @@ This variable holds extra path (space-separated) used to find
libraries on this platform, for example C<CPU>-specific libraries
(on multi-C<CPU> platforms) may be listed here.
+=item C<xlocale_needed>
+
+From F<d_newlocale.U>:
+
+This symbol, if defined, indicates that the C program should
+include <xlocale.h> to get newlocale() and its friends.
+
=back
=head2 y
@@ -9783,9 +9932,9 @@ This variable is used internally by Configure to determine the
full pathname (if any) of the zip program. After Configure runs,
the value is reset to a plain C<zip> and is not useful.
-
=back
+
=head1 GIT DATA
Information on the git commit from which the current perl binary was compiled
diff --git a/Master/tlpkg/tlperl/lib/Config/Perl/V.pm b/Master/tlpkg/tlperl/lib/Config/Perl/V.pm
index 774446a83f6..d8fd2a8e4e1 100755
--- a/Master/tlpkg/tlperl/lib/Config/Perl/V.pm
+++ b/Master/tlpkg/tlperl/lib/Config/Perl/V.pm
@@ -6,7 +6,7 @@ use warnings;
use Config;
use Exporter;
use vars qw($VERSION @ISA @EXPORT_OK %EXPORT_TAGS);
-$VERSION = "0.33";
+$VERSION = "0.36";
@ISA = qw( Exporter );
@EXPORT_OK = qw( plv2hash summary myconfig signature );
%EXPORT_TAGS = (
@@ -29,6 +29,8 @@ my %BTD = map {( $_ => 0 )} qw(
DEBUGGING
NO_HASH_SEED
NO_MATHOMS
+ NO_PERL_INTERNAL_RAND_SEED
+ NO_PERL_RAND_SEED
NO_TAINT_SUPPORT
PERL_BOOL_AS_CHAR
PERL_COPY_ON_WRITE
@@ -57,9 +59,11 @@ my %BTD = map {( $_ => 0 )} qw(
PERL_PERTURB_KEYS_DISABLED
PERL_PERTURB_KEYS_RANDOM
PERL_PRESERVE_IVUV
+ PERL_RC_STACK
PERL_RELOCATABLE_INCPUSH
PERL_USE_DEVEL
PERL_USE_SAFE_PUTENV
+ PERL_USE_UNSHARED_KEYS_IN_LARGE_HASHES
SILENT_NO_TAINT_SUPPORT
UNLINK_ALL_VERSIONS
USE_ATTRIBUTES_FOR_PERLIO
@@ -81,10 +85,13 @@ my %BTD = map {( $_ => 0 )} qw(
HAVE_INTERP_INTERN
MULTIPLICITY
MYMALLOC
+ NO_HASH_SEED
PERL_DEBUG_READONLY_COW
PERL_DEBUG_READONLY_OPS
PERL_GLOBAL_STRUCT
PERL_GLOBAL_STRUCT_PRIVATE
+ PERL_HASH_NO_SBOX32
+ PERL_HASH_USE_SBOX32
PERL_IMPLICIT_CONTEXT
PERL_IMPLICIT_SYS
PERLIO_LAYERS
@@ -263,7 +270,10 @@ sub plv2hash {
$config{$k} = $v;
}
- if (my %kv = ($pv =~ m{\b
+ my %kv;
+ if ($pv =~ m{\S,? (?:osvers|archname)=}) { # attr is not the first on the line
+ # up to and including 5.24, a line could have multiple kv pairs
+ %kv = ($pv =~ m{\b
(\w+) # key
\s*= # assign
( '\s*[^']*?\s*' # quoted value
@@ -271,17 +281,27 @@ sub plv2hash {
| \S+ # unquoted value
| \s*\n # empty
)
- (?:,?\s+|\s*\n)? # separator (5.8.x reports did not have a ','
- }gx)) { # between every kv pair
-
- while (my ($k, $v) = each %kv) {
- $k =~ s{\s+$} {};
- $v =~ s{\s*\n\z} {};
- $v =~ s{,$} {};
- $v =~ m{^'(.*)'$} and $v = $1;
- $v =~ s{\s+$} {};
- $config{$k} = $v;
- }
+ (?:,?\s+|\s*\n)? # optional separator (5.8.x reports did
+ }gx); # not have a ',' between every kv pair)
+ }
+ else {
+ # as of 5.25, each kv pair is listed on its own line
+ %kv = ($pv =~ m{^
+ \s+
+ (\w+) # key
+ \s*=\s* # assign
+ (.*?) # value
+ \s*,?\s*$
+ }gmx);
+ }
+
+ while (my ($k, $v) = each %kv) {
+ $k =~ s{\s+$} {};
+ $v =~ s{\s*\n\z} {};
+ $v =~ s{,$} {};
+ $v =~ m{^'(.*)'$} and $v = $1;
+ $v =~ s{\s+$} {};
+ $config{$k} = $v;
}
my $build = { %empty_build };
@@ -554,7 +574,7 @@ H.Merijn Brand <h.m.brand@xs4all.nl>
=head1 COPYRIGHT AND LICENSE
-Copyright (C) 2009-2020 H.Merijn Brand
+Copyright (C) 2009-2023 H.Merijn Brand
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/Config_heavy.pl.orig b/Master/tlpkg/tlperl/lib/Config_heavy.orig.pl
index 56a868cc999..86ce1b9484e 100644..100755
--- a/Master/tlpkg/tlperl/lib/Config_heavy.pl.orig
+++ b/Master/tlpkg/tlperl/lib/Config_heavy.orig.pl
@@ -1,1470 +1,1507 @@
-# This file was created by configpm when Perl was built. Any changes
-# made to this file will be lost the next time perl is built.
-
-package Config;
-use strict;
-use warnings;
-our %Config;
-
-sub bincompat_options {
- return split ' ', (Internals::V())[0];
-}
-
-sub non_bincompat_options {
- return split ' ', (Internals::V())[1];
-}
-
-sub compile_date {
- return (Internals::V())[2]
-}
-
-sub local_patches {
- my (undef, undef, undef, @patches) = Internals::V();
- return @patches;
-}
-
-sub _V {
- die "Perl lib was built for 'MSWin32' but is being run on '$^O'"
- unless "MSWin32" eq $^O;
-
- my ($bincompat, $non_bincompat, $date, @patches) = Internals::V();
-
- my @opts = sort split ' ', "$bincompat $non_bincompat";
-
- print Config::myconfig();
- print "\nCharacteristics of this binary (from libperl): \n";
-
- print " Compile-time options:\n";
- print " $_\n" for @opts;
-
- if (@patches) {
- print " Locally applied patches:\n";
- print " $_\n" foreach @patches;
- }
-
- print " Built under MSWin32\n";
-
- print " $date\n" if defined $date;
-
- my @env = map { "$_=\"$ENV{$_}\"" } sort grep {/^PERL/} keys %ENV;
-
- if (@env) {
- print " \%ENV:\n";
- print " $_\n" foreach @env;
- }
- print " \@INC:\n";
- print " $_\n" foreach @INC;
-}
-
-sub header_files {
- return qw(EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h
- dosish.h embed.h embedvar.h form.h gv.h handy.h hv.h hv_func.h
- intrpvar.h iperlsys.h keywords.h mg.h nostdio.h op.h opcode.h
- pad.h parser.h patchlevel.h perl.h perlio.h perliol.h perlsdio.h
- perlvars.h perly.h pp.h pp_proto.h proto.h regcomp.h regexp.h
- regnodes.h scope.h sv.h thread.h time64.h unixish.h utf8.h
- util.h);
-}
-
-### Configured by: siepo@DESKTOP-7HC7FHH
-### Target system: WIN32
-
-our $summary = <<'!END!';
-Summary of my $package (revision $revision $version_patchlevel_string) configuration:
- $git_commit_id_title $git_commit_id$git_ancestor_line
- Platform:
- osname=$osname
- osvers=$osvers
- archname=$archname
- uname='$myuname'
- config_args='$config_args'
- hint=$hint
- useposix=$useposix
- d_sigaction=$d_sigaction
- useithreads=$useithreads
- usemultiplicity=$usemultiplicity
- use64bitint=$use64bitint
- use64bitall=$use64bitall
- uselongdouble=$uselongdouble
- usemymalloc=$usemymalloc
- default_inc_excludes_dot=$default_inc_excludes_dot
- Compiler:
- cc='$cc'
- ccflags ='$ccflags'
- optimize='$optimize'
- cppflags='$cppflags'
- ccversion='$ccversion'
- gccversion='$gccversion'
- gccosandvers='$gccosandvers'
- intsize=$intsize
- longsize=$longsize
- ptrsize=$ptrsize
- doublesize=$doublesize
- byteorder=$byteorder
- doublekind=$doublekind
- d_longlong=$d_longlong
- longlongsize=$longlongsize
- d_longdbl=$d_longdbl
- longdblsize=$longdblsize
- longdblkind=$longdblkind
- ivtype='$ivtype'
- ivsize=$ivsize
- nvtype='$nvtype'
- nvsize=$nvsize
- Off_t='$lseektype'
- lseeksize=$lseeksize
- alignbytes=$alignbytes
- prototype=$prototype
- Linker and Libraries:
- ld='$ld'
- ldflags ='$ldflags'
- libpth=$libpth
- libs=$libs
- perllibs=$perllibs
- libc=$libc
- so=$so
- useshrplib=$useshrplib
- libperl=$libperl
- gnulibc_version='$gnulibc_version'
- Dynamic Linking:
- dlsrc=$dlsrc
- dlext=$dlext
- d_dlsymun=$d_dlsymun
- ccdlflags='$ccdlflags'
- cccdlflags='$cccdlflags'
- lddlflags='$lddlflags'
-
-!END!
-my $summary_expanded;
-
-sub myconfig {
- return $summary_expanded if $summary_expanded;
- ($summary_expanded = $summary) =~ s{\$(\w+)}
- {
- my $c;
- if ($1 eq 'git_ancestor_line') {
- if ($Config::Config{git_ancestor}) {
- $c= "\n Ancestor: $Config::Config{git_ancestor}";
- } else {
- $c= "";
- }
- } else {
- $c = $Config::Config{$1};
- }
- defined($c) ? $c : 'undef'
- }ge;
- $summary_expanded;
-}
-
-local *_ = \my $a;
-$_ = <<'!END!';
-Author=''
-CONFIG='true'
-Date='$Date'
-Header=''
-Id='$Id'
-Locker=''
-Log='$Log'
-PATCHLEVEL='34'
-PERL_API_REVISION='5'
-PERL_API_SUBVERSION='0'
-PERL_API_VERSION='34'
-PERL_CONFIG_SH='true'
-PERL_PATCHLEVEL=''
-PERL_REVISION='5'
-PERL_SUBVERSION='0'
-PERL_VERSION='34'
-RCSfile='$RCSfile'
-Revision='$Revision'
-SUBVERSION='0'
-Source=''
-State=''
-_a='.a'
-_exe='.exe'
-_o='.o'
-afs='false'
-afsroot='/afs'
-alignbytes='8'
-aphostname=''
-api_revision='5'
-api_subversion='0'
-api_version='34'
-api_versionstring='5.34.0'
-ar='ar'
-archlib='E:\tlperl\lib'
-archlibexp='E:\tlperl\lib'
-archname='MSWin32-x64-multi-thread'
-archname64=''
-archobjs=''
-asctime_r_proto='0'
-awk='awk'
-baserev='5'
-bash=''
-bin='E:\tlperl\bin'
-binexp='E:\tlperl\bin'
-bison=''
-bootstrap_charset='undef'
-byacc='byacc'
-byteorder='1234'
-c=''
-castflags='0'
-cat='type'
-cc='gcc'
-cccdlflags=' '
-ccdlflags=' '
-ccflags=' -DWIN32 -DWIN64 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY -DUSE_PERLIO -D__USE_MINGW_ANSI_STDIO -fwrapv -fno-strict-aliasing -mms-bitfields'
-ccflags_uselargefiles=''
-ccname='gcc'
-ccsymbols=''
-ccversion=''
-cf_by='siepo'
-cf_email='siepo@DESKTOP-7HC7FHH'
-cf_time='Mon Jul 11 03:22:33 2022'
-charbits='8'
-chgrp=''
-chmod=''
-chown=''
-clocktype='clock_t'
-comm=''
-compress=''
-contains='grep'
-cp='copy'
-cpio=''
-cpp='gcc -E'
-cpp_stuff='42'
-cppccsymbols=''
-cppflags='-DWIN32'
-cpplast=''
-cppminus='-'
-cpprun='gcc -E'
-cppstdin='gcc -E'
-cppsymbols=''
-crypt_r_proto='0'
-cryptlib=''
-csh='undef'
-ctermid_r_proto='0'
-ctime_r_proto='0'
-d_Gconvert='sprintf((b),"%.*g",(n),(x))'
-d_PRIEUldbl='undef'
-d_PRIFUldbl='undef'
-d_PRIGUldbl='undef'
-d_PRIXU64='define'
-d_PRId64='define'
-d_PRIeldbl='undef'
-d_PRIfldbl='undef'
-d_PRIgldbl='undef'
-d_PRIi64='define'
-d_PRIo64='define'
-d_PRIu64='define'
-d_PRIx64='define'
-d_SCNfldbl='undef'
-d__fwalk='undef'
-d_accept4='undef'
-d_access='define'
-d_accessx='undef'
-d_acosh='define'
-d_aintl='undef'
-d_alarm='define'
-d_archlib='define'
-d_asctime64='undef'
-d_asctime_r='undef'
-d_asinh='define'
-d_atanh='define'
-d_atolf='undef'
-d_atoll='define'
-d_attribute_always_inline='undef'
-d_attribute_deprecated='undef'
-d_attribute_format='undef'
-d_attribute_malloc='undef'
-d_attribute_nonnull='undef'
-d_attribute_noreturn='undef'
-d_attribute_pure='undef'
-d_attribute_unused='undef'
-d_attribute_warn_unused_result='undef'
-d_backtrace='undef'
-d_bsd='define'
-d_bsdgetpgrp='undef'
-d_bsdsetpgrp='undef'
-d_builtin_add_overflow='undef'
-d_builtin_choose_expr='undef'
-d_builtin_expect='undef'
-d_builtin_mul_overflow='undef'
-d_builtin_sub_overflow='undef'
-d_c99_variadic_macros='undef'
-d_casti32='define'
-d_castneg='define'
-d_cbrt='define'
-d_chown='undef'
-d_chroot='undef'
-d_chsize='define'
-d_class='undef'
-d_clearenv='undef'
-d_closedir='define'
-d_cmsghdr_s='undef'
-d_copysign='define'
-d_copysignl='define'
-d_cplusplus='undef'
-d_crypt='define'
-d_crypt_r='undef'
-d_csh='undef'
-d_ctermid='undef'
-d_ctermid_r='undef'
-d_ctime64='undef'
-d_ctime_r='undef'
-d_cuserid='undef'
-d_dbl_dig='define'
-d_dbminitproto='undef'
-d_difftime='define'
-d_difftime64='undef'
-d_dir_dd_fd='undef'
-d_dirfd='undef'
-d_dirnamlen='define'
-d_dladdr='undef'
-d_dlerror='define'
-d_dlopen='define'
-d_dlsymun='undef'
-d_dosuid='undef'
-d_double_has_inf='define'
-d_double_has_nan='define'
-d_double_has_negative_zero='define'
-d_double_has_subnormals='define'
-d_double_style_cray='undef'
-d_double_style_ibm='undef'
-d_double_style_ieee='define'
-d_double_style_vax='undef'
-d_drand48_r='undef'
-d_drand48proto='undef'
-d_dup2='define'
-d_dup3='undef'
-d_duplocale='undef'
-d_eaccess='undef'
-d_endgrent='undef'
-d_endgrent_r='undef'
-d_endhent='undef'
-d_endhostent_r='undef'
-d_endnent='undef'
-d_endnetent_r='undef'
-d_endpent='undef'
-d_endprotoent_r='undef'
-d_endpwent='undef'
-d_endpwent_r='undef'
-d_endsent='undef'
-d_endservent_r='undef'
-d_eofnblk='define'
-d_erf='define'
-d_erfc='undef'
-d_eunice='undef'
-d_exp2='define'
-d_expm1='define'
-d_faststdio='define'
-d_fchdir='undef'
-d_fchmod='undef'
-d_fchmodat='undef'
-d_fchown='undef'
-d_fcntl='undef'
-d_fcntl_can_lock='undef'
-d_fd_macros='define'
-d_fd_set='define'
-d_fdclose='undef'
-d_fdim='undef'
-d_fds_bits='define'
-d_fegetround='undef'
-d_fgetpos='define'
-d_finite='define'
-d_finitel='undef'
-d_flexfnam='define'
-d_flock='define'
-d_flockproto='define'
-d_fma='undef'
-d_fmax='define'
-d_fmin='define'
-d_fork='undef'
-d_fp_class='undef'
-d_fp_classify='undef'
-d_fp_classl='undef'
-d_fpathconf='undef'
-d_fpclass='undef'
-d_fpclassify='undef'
-d_fpclassl='undef'
-d_fpgetround='undef'
-d_fpos64_t='undef'
-d_freelocale='undef'
-d_frexpl='define'
-d_fs_data_s='undef'
-d_fseeko='undef'
-d_fsetpos='define'
-d_fstatfs='undef'
-d_fstatvfs='undef'
-d_fsync='undef'
-d_ftello='undef'
-d_ftime='define'
-d_futimes='undef'
-d_gai_strerror='undef'
-d_gdbm_ndbm_h_uses_prototypes='undef'
-d_gdbmndbm_h_uses_prototypes='undef'
-d_getaddrinfo='undef'
-d_getcwd='define'
-d_getenv_preserves_other_thread='define'
-d_getespwnam='undef'
-d_getfsstat='undef'
-d_getgrent='undef'
-d_getgrent_r='undef'
-d_getgrgid_r='undef'
-d_getgrnam_r='undef'
-d_getgrps='undef'
-d_gethbyaddr='define'
-d_gethbyname='define'
-d_gethent='undef'
-d_gethname='define'
-d_gethostbyaddr_r='undef'
-d_gethostbyname_r='undef'
-d_gethostent_r='undef'
-d_gethostprotos='define'
-d_getitimer='undef'
-d_getlogin='define'
-d_getlogin_r='undef'
-d_getmnt='undef'
-d_getmntent='undef'
-d_getnameinfo='undef'
-d_getnbyaddr='undef'
-d_getnbyname='undef'
-d_getnent='undef'
-d_getnetbyaddr_r='undef'
-d_getnetbyname_r='undef'
-d_getnetent_r='undef'
-d_getnetprotos='undef'
-d_getpagsz='undef'
-d_getpbyname='define'
-d_getpbynumber='define'
-d_getpent='undef'
-d_getpgid='undef'
-d_getpgrp='undef'
-d_getpgrp2='undef'
-d_getppid='undef'
-d_getprior='undef'
-d_getprotobyname_r='undef'
-d_getprotobynumber_r='undef'
-d_getprotoent_r='undef'
-d_getprotoprotos='define'
-d_getprpwnam='undef'
-d_getpwent='undef'
-d_getpwent_r='undef'
-d_getpwnam_r='undef'
-d_getpwuid_r='undef'
-d_getsbyname='define'
-d_getsbyport='define'
-d_getsent='undef'
-d_getservbyname_r='undef'
-d_getservbyport_r='undef'
-d_getservent_r='undef'
-d_getservprotos='define'
-d_getspnam='undef'
-d_getspnam_r='undef'
-d_gettimeod='define'
-d_gmtime64='undef'
-d_gmtime_r='undef'
-d_gnulibc='undef'
-d_grpasswd='undef'
-d_has_C_UTF8='undef'
-d_hasmntopt='undef'
-d_htonl='define'
-d_hypot='define'
-d_ilogb='define'
-d_ilogbl='define'
-d_inc_version_list='undef'
-d_index='undef'
-d_inetaton='undef'
-d_inetntop='undef'
-d_inetpton='undef'
-d_int64_t='undef'
-d_ip_mreq='undef'
-d_ip_mreq_source='undef'
-d_ipv6_mreq='undef'
-d_ipv6_mreq_source='undef'
-d_isascii='define'
-d_isblank='undef'
-d_isfinite='undef'
-d_isfinitel='undef'
-d_isinf='define'
-d_isinfl='undef'
-d_isless='define'
-d_isnan='define'
-d_isnanl='define'
-d_isnormal='define'
-d_j0='define'
-d_j0l='undef'
-d_killpg='define'
-d_lc_monetary_2008='undef'
-d_lchown='undef'
-d_ldbl_dig='define'
-d_ldexpl='define'
-d_lgamma='define'
-d_lgamma_r='undef'
-d_libm_lib_version='undef'
-d_link='define'
-d_linkat='undef'
-d_llrint='define'
-d_llrintl='define'
-d_llround='define'
-d_llroundl='define'
-d_localeconv_l='undef'
-d_localtime64='undef'
-d_localtime_r='undef'
-d_localtime_r_needs_tzset='undef'
-d_locconv='define'
-d_lockf='undef'
-d_log1p='define'
-d_log2='define'
-d_logb='define'
-d_long_double_style_ieee='undef'
-d_long_double_style_ieee_doubledouble='undef'
-d_long_double_style_ieee_extended='define'
-d_long_double_style_ieee_std='undef'
-d_long_double_style_vax='undef'
-d_longdbl='define'
-d_longlong='define'
-d_lrint='define'
-d_lrintl='define'
-d_lround='define'
-d_lroundl='define'
-d_lseekproto='define'
-d_lstat='define'
-d_madvise='undef'
-d_malloc_good_size='undef'
-d_malloc_size='undef'
-d_mblen='define'
-d_mbrlen='undef'
-d_mbrtowc='undef'
-d_mbstowcs='define'
-d_mbtowc='define'
-d_memmem='undef'
-d_memrchr='undef'
-d_mkdir='define'
-d_mkdtemp='undef'
-d_mkfifo='undef'
-d_mkostemp='undef'
-d_mkstemp='undef'
-d_mkstemps='undef'
-d_mktime='define'
-d_mktime64='undef'
-d_mmap='undef'
-d_modfl='define'
-d_modfl_pow32_bug='undef'
-d_modflproto='define'
-d_mprotect='undef'
-d_msg='undef'
-d_msg_ctrunc='undef'
-d_msg_dontroute='undef'
-d_msg_oob='undef'
-d_msg_peek='undef'
-d_msg_proxy='undef'
-d_msgctl='undef'
-d_msgget='undef'
-d_msghdr_s='undef'
-d_msgrcv='undef'
-d_msgsnd='undef'
-d_msync='undef'
-d_munmap='undef'
-d_mymalloc='undef'
-d_nan='define'
-d_nanosleep='undef'
-d_ndbm='undef'
-d_ndbm_h_uses_prototypes='undef'
-d_nearbyint='define'
-d_newlocale='undef'
-d_nextafter='define'
-d_nexttoward='define'
-d_nice='undef'
-d_nl_langinfo='undef'
-d_nv_preserves_uv='undef'
-d_nv_zero_is_allbits_zero='define'
-d_off64_t='undef'
-d_old_pthread_create_joinable='undef'
-d_oldpthreads='undef'
-d_oldsock='undef'
-d_open3='undef'
-d_openat='undef'
-d_pathconf='undef'
-d_pause='define'
-d_perl_otherlibdirs='undef'
-d_phostname='undef'
-d_pipe='define'
-d_pipe2='undef'
-d_poll='undef'
-d_portable='define'
-d_prctl='undef'
-d_prctl_set_name='undef'
-d_printf_format_null='undef'
-d_procselfexe='undef'
-d_pseudofork='define'
-d_pthread_atfork='undef'
-d_pthread_attr_setscope='undef'
-d_pthread_yield='undef'
-d_ptrdiff_t='define'
-d_pwage='undef'
-d_pwchange='undef'
-d_pwclass='undef'
-d_pwcomment='undef'
-d_pwexpire='undef'
-d_pwgecos='undef'
-d_pwpasswd='undef'
-d_pwquota='undef'
-d_qgcvt='undef'
-d_quad='define'
-d_querylocale='undef'
-d_random_r='undef'
-d_readdir='define'
-d_readdir64_r='undef'
-d_readdir_r='undef'
-d_readlink='define'
-d_readv='undef'
-d_recvmsg='undef'
-d_regcomp='undef'
-d_remainder='define'
-d_remquo='define'
-d_rename='define'
-d_renameat='undef'
-d_rewinddir='define'
-d_rint='define'
-d_rmdir='define'
-d_round='define'
-d_sbrkproto='undef'
-d_scalbn='define'
-d_scalbnl='define'
-d_sched_yield='undef'
-d_scm_rights='undef'
-d_seekdir='define'
-d_select='define'
-d_sem='undef'
-d_semctl='undef'
-d_semctl_semid_ds='undef'
-d_semctl_semun='undef'
-d_semget='undef'
-d_semop='undef'
-d_sendmsg='undef'
-d_setegid='undef'
-d_seteuid='undef'
-d_setgrent='undef'
-d_setgrent_r='undef'
-d_setgrps='undef'
-d_sethent='undef'
-d_sethostent_r='undef'
-d_setitimer='undef'
-d_setlinebuf='undef'
-d_setlocale='define'
-d_setlocale_accepts_any_locale_name='undef'
-d_setlocale_r='undef'
-d_setnent='undef'
-d_setnetent_r='undef'
-d_setpent='undef'
-d_setpgid='undef'
-d_setpgrp='undef'
-d_setpgrp2='undef'
-d_setprior='undef'
-d_setproctitle='undef'
-d_setprotoent_r='undef'
-d_setpwent='undef'
-d_setpwent_r='undef'
-d_setregid='undef'
-d_setresgid='undef'
-d_setresuid='undef'
-d_setreuid='undef'
-d_setrgid='undef'
-d_setruid='undef'
-d_setsent='undef'
-d_setservent_r='undef'
-d_setsid='undef'
-d_setvbuf='define'
-d_shm='undef'
-d_shmat='undef'
-d_shmatprototype='undef'
-d_shmctl='undef'
-d_shmdt='undef'
-d_shmget='undef'
-d_sigaction='undef'
-d_siginfo_si_addr='undef'
-d_siginfo_si_band='undef'
-d_siginfo_si_errno='undef'
-d_siginfo_si_pid='undef'
-d_siginfo_si_status='undef'
-d_siginfo_si_uid='undef'
-d_siginfo_si_value='undef'
-d_signbit='define'
-d_sigprocmask='undef'
-d_sigsetjmp='undef'
-d_sin6_scope_id='define'
-d_sitearch='define'
-d_snprintf='define'
-d_sockaddr_in6='undef'
-d_sockaddr_sa_len='undef'
-d_sockaddr_storage='define'
-d_sockatmark='undef'
-d_sockatmarkproto='undef'
-d_socket='define'
-d_socklen_t='undef'
-d_sockpair='undef'
-d_socks5_init='undef'
-d_sqrtl='define'
-d_srand48_r='undef'
-d_srandom_r='undef'
-d_sresgproto='undef'
-d_sresuproto='undef'
-d_stat='define'
-d_statblks='undef'
-d_statfs_f_flags='undef'
-d_statfs_s='undef'
-d_static_inline='define'
-d_statvfs='undef'
-d_stdio_cnt_lval='define'
-d_stdio_ptr_lval='define'
-d_stdio_ptr_lval_nochange_cnt='define'
-d_stdio_ptr_lval_sets_cnt='undef'
-d_stdio_stream_array='undef'
-d_stdiobase='define'
-d_stdstdio='define'
-d_strcoll='define'
-d_strerror_l='undef'
-d_strerror_r='undef'
-d_strftime='define'
-d_strlcat='undef'
-d_strlcpy='undef'
-d_strnlen='undef'
-d_strtod='define'
-d_strtod_l='undef'
-d_strtol='define'
-d_strtold='undef'
-d_strtold_l='undef'
-d_strtoll='define'
-d_strtoq='undef'
-d_strtoul='define'
-d_strtoull='define'
-d_strtouq='undef'
-d_strxfrm='define'
-d_suidsafe='undef'
-d_symlink='define'
-d_syscall='undef'
-d_syscallproto='undef'
-d_sysconf='undef'
-d_sysernlst=''
-d_syserrlst='define'
-d_system='define'
-d_tcgetpgrp='undef'
-d_tcsetpgrp='undef'
-d_telldir='define'
-d_telldirproto='define'
-d_tgamma='define'
-d_thread_safe_nl_langinfo_l='undef'
-d_time='define'
-d_timegm='undef'
-d_times='define'
-d_tm_tm_gmtoff='undef'
-d_tm_tm_zone='undef'
-d_tmpnam_r='undef'
-d_towlower='undef'
-d_towupper='undef'
-d_trunc='define'
-d_truncate='undef'
-d_truncl='define'
-d_ttyname_r='undef'
-d_tzname='define'
-d_u32align='define'
-d_ualarm='undef'
-d_umask='define'
-d_uname='define'
-d_union_semun='define'
-d_unlinkat='undef'
-d_unordered='undef'
-d_unsetenv='undef'
-d_uselocale='undef'
-d_usleep='undef'
-d_usleepproto='undef'
-d_ustat='undef'
-d_vendorarch='undef'
-d_vendorbin='undef'
-d_vendorlib='undef'
-d_vendorscript='undef'
-d_vfork='undef'
-d_void_closedir='undef'
-d_voidsig='define'
-d_voidtty=''
-d_vsnprintf='define'
-d_wait4='undef'
-d_waitpid='define'
-d_wcrtomb='undef'
-d_wcscmp='define'
-d_wcstombs='define'
-d_wcsxfrm='define'
-d_wctomb='define'
-d_writev='undef'
-d_xenix='undef'
-date='date'
-db_hashtype='int'
-db_prefixtype='int'
-db_version_major='0'
-db_version_minor='0'
-db_version_patch='0'
-default_inc_excludes_dot='define'
-direntrytype='struct direct'
-dlext='dll'
-dlltool='dlltool'
-dlsrc='dl_win32.xs'
-doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
-doublekind='3'
-doublemantbits='52'
-doublenanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f'
-doublesize='8'
-drand01='Perl_drand48()'
-drand48_r_proto='0'
-dtrace=''
-dynamic_ext='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call Hash/Util Hash/Util/FieldHash I18N/Langinfo IO List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize Win32 Win32API/File XS/APItest XS/Typemap attributes mro re threads threads/shared'
-eagain='EAGAIN'
-ebcdic='undef'
-echo='echo'
-egrep='egrep'
-emacs=''
-endgrent_r_proto='0'
-endhostent_r_proto='0'
-endnetent_r_proto='0'
-endprotoent_r_proto='0'
-endpwent_r_proto='0'
-endservent_r_proto='0'
-eunicefix=':'
-exe_ext='.exe'
-expr='expr'
-extensions='Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version'
-extern_C='extern'
-extras=''
-fflushNULL='define'
-fflushall='undef'
-find='find'
-firstmakefile='makefile'
-flex=''
-fpossize='8'
-fpostype='fpos_t'
-freetype='void'
-from=':'
-full_ar=''
-full_csh=''
-full_sed=''
-gccansipedantic=''
-gccosandvers=''
-gccversion='8.3.0'
-getgrent_r_proto='0'
-getgrgid_r_proto='0'
-getgrnam_r_proto='0'
-gethostbyaddr_r_proto='0'
-gethostbyname_r_proto='0'
-gethostent_r_proto='0'
-getlogin_r_proto='0'
-getnetbyaddr_r_proto='0'
-getnetbyname_r_proto='0'
-getnetent_r_proto='0'
-getprotobyname_r_proto='0'
-getprotobynumber_r_proto='0'
-getprotoent_r_proto='0'
-getpwent_r_proto='0'
-getpwnam_r_proto='0'
-getpwuid_r_proto='0'
-getservbyname_r_proto='0'
-getservbyport_r_proto='0'
-getservent_r_proto='0'
-getspnam_r_proto='0'
-gidformat='"ld"'
-gidsign='-1'
-gidsize='4'
-gidtype='gid_t'
-glibpth='/usr/shlib /lib/pa1.1 /usr/lib/large /lib /usr/lib /usr/lib/386 /lib/386 /lib/large /usr/lib/small /lib/small /usr/ccs/lib /usr/ucblib /usr/shlib '
-gmake='gmake'
-gmtime_r_proto='0'
-gnulibc_version=''
-grep='grep'
-groupcat=''
-groupstype='gid_t'
-gzip='gzip'
-h_fcntl='false'
-h_sysfile='true'
-hint='recommended'
-hostcat='ypcat hosts'
-html1dir=' '
-html1direxp=''
-html3dir=' '
-html3direxp=''
-i16size='2'
-i16type='short'
-i32size='4'
-i32type='long'
-i64size='8'
-i64type='long long'
-i8size='1'
-i8type='char'
-i_arpainet='define'
-i_bfd='undef'
-i_bsdioctl=''
-i_crypt='undef'
-i_db='undef'
-i_dbm='undef'
-i_dirent='define'
-i_dlfcn='define'
-i_execinfo='undef'
-i_fcntl='define'
-i_fenv='undef'
-i_fp='undef'
-i_fp_class='undef'
-i_gdbm='undef'
-i_gdbm_ndbm='undef'
-i_gdbmndbm='undef'
-i_grp='undef'
-i_ieeefp='undef'
-i_inttypes='undef'
-i_langinfo='undef'
-i_libutil='undef'
-i_limits='define'
-i_locale='define'
-i_machcthr='undef'
-i_malloc='define'
-i_mallocmalloc='undef'
-i_mntent='undef'
-i_ndbm='undef'
-i_netdb='undef'
-i_neterrno='undef'
-i_netinettcp='undef'
-i_niin='undef'
-i_poll='undef'
-i_prot='undef'
-i_pthread='undef'
-i_pwd='undef'
-i_quadmath='undef'
-i_rpcsvcdbm='undef'
-i_sgtty='undef'
-i_shadow='undef'
-i_socks='undef'
-i_stdbool='define'
-i_stdint='define'
-i_stdlib='define'
-i_string='define'
-i_sunmath='undef'
-i_sysaccess='undef'
-i_sysdir='undef'
-i_sysfile='undef'
-i_sysfilio='define'
-i_sysin='undef'
-i_sysioctl='undef'
-i_syslog='undef'
-i_sysmman='undef'
-i_sysmode='undef'
-i_sysmount='undef'
-i_sysndir='undef'
-i_sysparam='undef'
-i_syspoll='undef'
-i_sysresrc='undef'
-i_syssecrt='undef'
-i_sysselct='undef'
-i_syssockio='undef'
-i_sysstat='define'
-i_sysstatfs='undef'
-i_sysstatvfs='undef'
-i_systime='undef'
-i_systimek='undef'
-i_systimes='undef'
-i_systypes='define'
-i_sysuio='undef'
-i_sysun='undef'
-i_sysutsname='undef'
-i_sysvfs='undef'
-i_syswait='undef'
-i_termio='undef'
-i_termios='undef'
-i_time='define'
-i_unistd='undef'
-i_ustat='undef'
-i_utime='define'
-i_vfork='undef'
-i_wchar='undef'
-i_wctype='undef'
-i_xlocale='undef'
-ignore_versioned_solibs=''
-inc_version_list=''
-inc_version_list_init='0'
-incpath='E:\mingw64\include'
-inews=''
-initialinstalllocation=''
-installarchlib='E:\tlperl\lib'
-installbin='E:\tlperl\bin'
-installhtml1dir=''
-installhtml3dir=''
-installhtmldir='E:\tlperl\html'
-installhtmlhelpdir='E:\tlperl\htmlhelp'
-installman1dir='E:\tlperl\man\man1'
-installman3dir='E:\tlperl\man\man3'
-installprefix='E:\tlperl'
-installprefixexp='E:\tlperl'
-installprivlib='E:\tlperl\lib'
-installscript='E:\tlperl\bin'
-installsitearch='E:\tlperl\site\lib'
-installsitebin='E:\tlperl\bin'
-installsitehtml1dir=''
-installsitehtml3dir=''
-installsitelib='E:\tlperl\site\lib'
-installsiteman1dir=''
-installsiteman3dir=''
-installsitescript=''
-installstyle='lib'
-installusrbinperl='undef'
-installvendorarch=''
-installvendorbin=''
-installvendorhtml1dir=''
-installvendorhtml3dir=''
-installvendorlib=''
-installvendorman1dir=''
-installvendorman3dir=''
-installvendorscript=''
-intsize='4'
-issymlink=''
-ivdformat='"I64d"'
-ivsize='8'
-ivtype='long long'
-known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version'
-ksh=''
-ld='g++'
-lddlflags='-mdll -s -L"E:\tlperl\lib\CORE" -L"E:\mingw64\lib" -L"E:\mingw64\x86_64-w64-mingw32\lib" -L"E:\mingw64\lib\gcc\x86_64-w64-mingw32\8.3.0"'
-ldflags='-s -L"E:\tlperl\lib\CORE" -L"E:\mingw64\lib" -L"E:\mingw64\x86_64-w64-mingw32\lib" -L"E:\mingw64\lib\gcc\x86_64-w64-mingw32\8.3.0"'
-ldflags_uselargefiles=''
-ldlibpthname=''
-less='less'
-lib_ext='.a'
-libc=''
-libperl='libperl534.a'
-libpth='E:\mingw64\lib E:\mingw64\x86_64-w64-mingw32\lib E:\mingw64\lib\gcc\x86_64-w64-mingw32\8.3.0'
-libs=' -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32'
-libsdirs=''
-libsfiles=''
-libsfound=''
-libspath=''
-libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x'
-libswanted_uselargefiles='net socket inet nsl nm ndbm gdbm dbm db malloc dl ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x'
-line='line'
-lint=''
-lkflags=''
-ln=''
-lns='copy'
-localtime_r_proto='0'
-locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
-loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
-longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00'
-longdblkind='3'
-longdblmantbits='64'
-longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00'
-longdblsize='16'
-longlongsize='8'
-longsize='4'
-lp=''
-lpr=''
-ls='dir'
-lseeksize='8'
-lseektype='long long'
-mad='undef'
-mail=''
-mailx=''
-make='gmake'
-make_set_make='#'
-mallocobj='malloc.o'
-mallocsrc='malloc.c'
-malloctype='void *'
-man1dir='E:\tlperl\man\man1'
-man1direxp='E:\tlperl\man\man1'
-man1ext='1'
-man3dir='E:\tlperl\man\man3'
-man3direxp='E:\tlperl\man\man3'
-man3ext='3'
-mips_type=''
-mistrustnm=''
-mkdir='mkdir'
-mmaptype='void *'
-modetype='mode_t'
-more='more /e'
-multiarch='undef'
-mv=''
-myarchname='MSWin32'
-mydomain=''
-myhostname=''
-myuname=''
-n='-n'
-need_va_copy='undef'
-netdb_hlen_type='int'
-netdb_host_type='char *'
-netdb_name_type='char *'
-netdb_net_type='long'
-nm='nm'
-nm_opt=''
-nm_so_opt=''
-nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version'
-nroff=''
-nvEUformat='"E"'
-nvFUformat='"F"'
-nvGUformat='"G"'
-nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0'
-nv_preserves_uv_bits='53'
-nveformat='"e"'
-nvfformat='"f"'
-nvgformat='"g"'
-nvmantbits='52'
-nvsize='8'
-nvtype='double'
-o_nonblock='O_NONBLOCK'
-obj_ext='.o'
-old_pthread_create_joinable=''
-optimize='-s -O2'
-orderlib='false'
-osname='MSWin32'
-osvers='10.0.19042.508'
-otherlibdirs=''
-package='perl5'
-pager='more /e'
-passcat=''
-patchlevel='34'
-path_sep=';'
-perl='perl'
-perl5=''
-perl_patchlevel=''
-perl_static_inline='static __inline__'
-perladmin=''
-perllibs=' -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32'
-perlpath='E:\tlperl\bin\perl.exe'
-pg=''
-phostname='hostname'
-pidtype='int'
-plibpth=''
-pmake=''
-pr=''
-prefix='E:\tlperl'
-prefixexp='E:\tlperl'
-privlib='E:\tlperl\lib'
-privlibexp='E:\tlperl\lib'
-procselfexe=''
-prototype='define'
-ptrsize='8'
-quadkind='3'
-quadtype='long long'
-randbits='48'
-randfunc='Perl_drand48'
-random_r_proto='0'
-randseedtype='U32'
-ranlib='rem'
-rd_nodata='-1'
-readdir64_r_proto='0'
-readdir_r_proto='0'
-revision='5'
-rm='del'
-rm_try=''
-rmail=''
-run=''
-runnm='true'
-sGMTIME_max="2147483647"
-sGMTIME_min="0"
-sLOCALTIME_max="2147483647"
-sLOCALTIME_min="0"
-sPRIEUldbl='"LE"'
-sPRIFUldbl='"LF"'
-sPRIGUldbl='"LG"'
-sPRIXU64='"I64X"'
-sPRId64='"I64d"'
-sPRIeldbl='"Le"'
-sPRIfldbl='"Lf"'
-sPRIgldbl='"Lg"'
-sPRIi64='"I64i"'
-sPRIo64='"I64o"'
-sPRIu64='"I64u"'
-sPRIx64='"I64x"'
-sSCNfldbl='"Lf"'
-sched_yield=''
-scriptdir='E:\tlperl\bin'
-scriptdirexp='E:\tlperl\bin'
-sed='sed'
-seedfunc='Perl_drand48_init'
-selectminbits='32'
-selecttype='Perl_fd_set *'
-sendmail='blat'
-setgrent_r_proto='0'
-sethostent_r_proto='0'
-setlocale_r_proto='0'
-setnetent_r_proto='0'
-setprotoent_r_proto='0'
-setpwent_r_proto='0'
-setservent_r_proto='0'
-sh='cmd /x /c'
-shar=''
-sharpbang='#!'
-shmattype='void *'
-shortsize='2'
-shrpenv=''
-shsharp='true'
-sig_count='26'
-sig_name='ZERO HUP INT QUIT ILL NUM05 NUM06 NUM07 FPE KILL NUM10 SEGV NUM12 PIPE ALRM TERM NUM16 NUM17 NUM18 NUM19 CHLD BREAK ABRT STOP NUM24 CONT CLD'
-sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", "FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", "NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0'
-sig_num='0 1 2 21 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 20'
-sig_num_init='0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 20, 0'
-sig_size='27'
-signal_t='void'
-sitearch='E:\tlperl\site\lib'
-sitearchexp='E:\tlperl\site\lib'
-sitebin='E:\tlperl\site\bin'
-sitebinexp='E:\tlperl\site\bin'
-sitehtml1dir=''
-sitehtml1direxp=''
-sitehtml3dir=''
-sitehtml3direxp=''
-sitelib='E:\tlperl\site\lib'
-sitelib_stem=''
-sitelibexp='E:\tlperl\site\lib'
-siteman1dir=''
-siteman1direxp=''
-siteman3dir=''
-siteman3direxp=''
-siteprefix='E:\tlperl\site'
-siteprefixexp='E:\tlperl\site'
-sitescript=''
-sitescriptexp=''
-sizesize='8'
-sizetype='size_t'
-sleep=''
-smail=''
-so='dll'
-sockethdr=''
-socketlib=''
-socksizetype='int'
-sort='sort'
-spackage='Perl5'
-spitshell=''
-srand48_r_proto='0'
-srandom_r_proto='0'
-src=''
-ssizetype='long long'
-st_ino_sign='1'
-st_ino_size='8'
-startperl='#!perl'
-startsh='#!/bin/sh'
-static_ext='Win32CORE'
-stdchar='char'
-stdio_base='((fp)->_base)'
-stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)'
-stdio_cnt='((fp)->_cnt)'
-stdio_filbuf=''
-stdio_ptr='((fp)->_ptr)'
-stdio_stream_array=''
-strerror_r_proto='0'
-strings='/usr/include/string.h'
-submit=''
-subversion='0'
-sysman='/usr/man/man1'
-tail=''
-tar=''
-targetarch=''
-targetsh='cmd /x /c'
-tbl=''
-tee=''
-test=''
-timeincl='/usr/include/sys/time.h '
-timetype='time_t'
-tmpnam_r_proto='0'
-to=':'
-touch='touch'
-tr=''
-trnl='\012'
-troff=''
-ttyname_r_proto='0'
-u16size='2'
-u16type='unsigned short'
-u32size='4'
-u32type='unsigned long'
-u64size='8'
-u64type='unsigned long long'
-u8size='1'
-u8type='unsigned char'
-uidformat='"ld"'
-uidsign='-1'
-uidsize='4'
-uidtype='uid_t'
-uname='uname'
-uniq='uniq'
-uquadtype='unsigned long long'
-use64bitall='undef'
-use64bitint='define'
-usecbacktrace='undef'
-usecrosscompile='undef'
-usedefaultstrict='undef'
-usedevel='undef'
-usedl='define'
-usedtrace='undef'
-usefaststdio='undef'
-useithreads='define'
-usekernprocpathname='undef'
-uselargefiles='define'
-uselongdouble='undef'
-usemallocwrap='define'
-usemorebits='undef'
-usemultiplicity='define'
-usemymalloc='n'
-usenm='false'
-usensgetexecutablepath='undef'
-useopcode='true'
-useperlio='define'
-useposix='true'
-usequadmath='undef'
-usereentrant='undef'
-userelocatableinc='undef'
-useshrplib='true'
-usesitecustomize='undef'
-usesocks='undef'
-usethreads='define'
-usevendorprefix='undef'
-usevfork='false'
-usrinc='/usr/include'
-uuname=''
-uvXUformat='"I64X"'
-uvoformat='"I64o"'
-uvsize='8'
-uvtype='unsigned long long'
-uvuformat='"I64u"'
-uvxformat='"I64x"'
-vendorarch=''
-vendorarchexp=''
-vendorbin=''
-vendorbinexp=''
-vendorhtml1dir=' '
-vendorhtml1direxp=''
-vendorhtml3dir=' '
-vendorhtml3direxp=''
-vendorlib=''
-vendorlib_stem=''
-vendorlibexp=''
-vendorman1dir=' '
-vendorman1direxp=''
-vendorman3dir=' '
-vendorman3direxp=''
-vendorprefix=''
-vendorprefixexp=''
-vendorscript=''
-vendorscriptexp=''
-version='5.34.0'
-version_patchlevel_string='version 34 subversion 0'
-versiononly='undef'
-vi=''
-xlibpth='/usr/lib/386 /lib/386'
-yacc='yacc'
-yaccflags=''
-zcat=''
-zip='zip'
-!END!
-
-my $i = ord(8);
-foreach my $c (7,6,5,4,3,2,1) { $i <<= 8; $i |= ord($c); }
-our $byteorder = join('', unpack('aaaaaaaa', pack('Q', $i)));
-s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m;
-
-my $config_sh_len = length $_;
-
-our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL';
-ccflags_nolargefiles=' -DWIN32 -DWIN64 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY -DUSE_PERLIO -D__USE_MINGW_ANSI_STDIO -fwrapv -fno-strict-aliasing -mms-bitfields'
-ldflags_nolargefiles='-s -L"E:\tlperl\lib\CORE" -L"E:\mingw64\lib" -L"E:\mingw64\x86_64-w64-mingw32\lib" -L"E:\mingw64\lib\gcc\x86_64-w64-mingw32\8.3.0"'
-libs_nolargefiles='-lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32'
-libswanted_nolargefiles=''
-EOVIRTUAL
-eval {
- # do not have hairy conniptions if this isnt available
- require 'Config_git.pl';
- $Config_SH_expanded .= $Config::Git_Data;
- 1;
-} or warn "Warning: failed to load Config_git.pl, something strange about this perl...\n";
-
-# Search for it in the big string
-sub fetch_string {
- my($self, $key) = @_;
-
- return undef unless my ($quote_type, $value) = $Config_SH_expanded =~ /\n$key=(['"])(.*?)\1\n/s;
-
- # If we had a double-quote, we'd better eval it so escape
- # sequences and such can be interpolated. Since the incoming
- # value is supposed to follow shell rules and not perl rules,
- # we escape any perl variable markers
-
- # Historically, since " 'support' was added in change 1409, the
- # interpolation was done before the undef. Stick to this arguably buggy
- # behaviour as we're refactoring.
- if ($quote_type eq '"') {
- $value =~ s/\$/\\\$/g;
- $value =~ s/\@/\\\@/g;
- eval "\$value = \"$value\"";
- }
-
- # So we can say "if $Config{'foo'}".
- $self->{$key} = $value eq 'undef' ? undef : $value; # cache it
-}
-
-my $prevpos = 0;
-
-sub FIRSTKEY {
- $prevpos = 0;
- substr($Config_SH_expanded, 1, index($Config_SH_expanded, '=') - 1 );
-}
-
-sub NEXTKEY {
- # Find out how the current key's quoted so we can skip to its end.
- my $quote = substr($Config_SH_expanded,
- index($Config_SH_expanded, "=", $prevpos)+1, 1);
- my $pos = index($Config_SH_expanded, qq($quote\n), $prevpos) + 2;
- my $len = index($Config_SH_expanded, "=", $pos) - $pos;
- $prevpos = $pos;
- $len > 0 ? substr($Config_SH_expanded, $pos, $len) : undef;
-}
-
-sub EXISTS {
- return 1 if exists($_[0]->{$_[1]});
-
- return(index($Config_SH_expanded, "\n$_[1]='") != -1
- or index($Config_SH_expanded, "\n$_[1]=\"") != -1
- );
-}
-
-sub STORE { die "\%Config::Config is read-only\n" }
-*DELETE = *CLEAR = \*STORE; # Typeglob aliasing uses less space
-
-sub config_sh {
- substr $Config_SH_expanded, 1, $config_sh_len;
-}
-
-sub config_re {
- my $re = shift;
- return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/,
- $Config_SH_expanded;
-}
-
-sub config_vars {
- # implements -V:cfgvar option (see perlrun -V:)
- foreach (@_) {
- # find optional leading, trailing colons; and query-spec
- my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft,
- # map colon-flags to print decorations
- my $prfx = $notag ? '': "$qry="; # tag-prefix for print
- my $lnend = $lncont ? ' ' : ";\n"; # line ending for print
-
- # all config-vars are by definition \w only, any \W means regex
- if ($qry =~ /\W/) {
- my @matches = config_re($qry);
- print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag;
- print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag;
- } else {
- my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry}
- : 'UNKNOWN';
- $v = 'undef' unless defined $v;
- print "${prfx}'${v}'$lnend";
- }
- }
-}
-
-# Called by the real AUTOLOAD
-sub launcher {
- undef &AUTOLOAD;
- goto \&$Config::AUTOLOAD;
-}
-
-1;
+# This file was created by configpm when Perl was built. Any changes
+# made to this file will be lost the next time perl is built.
+
+package Config;
+use strict;
+use warnings;
+our %Config;
+
+sub bincompat_options {
+ return split ' ', (Internals::V())[0];
+}
+
+sub non_bincompat_options {
+ return split ' ', (Internals::V())[1];
+}
+
+sub compile_date {
+ return (Internals::V())[2]
+}
+
+sub local_patches {
+ my (undef, undef, undef, @patches) = Internals::V();
+ return @patches;
+}
+
+sub _V {
+ die "Perl lib was built for 'MSWin32' but is being run on '$^O'"
+ unless "MSWin32" eq $^O;
+
+ my ($bincompat, $non_bincompat, $date, @patches) = Internals::V();
+
+ my @opts = sort split ' ', "$bincompat $non_bincompat";
+
+ print Config::myconfig();
+ print "\nCharacteristics of this binary (from libperl): \n";
+
+ print " Compile-time options:\n";
+ print " $_\n" for @opts;
+
+ if (@patches) {
+ print " Locally applied patches:\n";
+ print " $_\n" foreach @patches;
+ }
+
+ print " Built under MSWin32\n";
+
+ print " $date\n" if defined $date;
+
+ my @env = map { "$_=\"$ENV{$_}\"" } sort grep {/^PERL/} keys %ENV;
+
+ if (@env) {
+ print " \%ENV:\n";
+ print " $_\n" foreach @env;
+ }
+ print " \@INC:\n";
+ print " $_\n" foreach @INC;
+}
+
+sub header_files {
+ return qw(EXTERN.h INTERN.h XSUB.h av.h config.h cop.h cv.h
+ dosish.h embed.h embedvar.h form.h gv.h handy.h hv.h hv_func.h
+ intrpvar.h iperlsys.h keywords.h mg.h nostdio.h op.h opcode.h
+ pad.h parser.h patchlevel.h perl.h perlio.h perliol.h perlsdio.h
+ perlvars.h perly.h pp.h pp_proto.h proto.h regcomp.h regexp.h
+ regnodes.h scope.h sv.h thread.h time64.h unixish.h utf8.h
+ util.h);
+}
+
+### Configured by: tex-live@tug.org
+### Target system: WIN32
+
+our $summary = <<'!END!';
+Summary of my $package (revision $revision $version_patchlevel_string) configuration:
+ $git_commit_id_title $git_commit_id$git_ancestor_line
+ Platform:
+ osname=$osname
+ osvers=$osvers
+ archname=$archname
+ uname='$myuname'
+ config_args='$config_args'
+ hint=$hint
+ useposix=$useposix
+ d_sigaction=$d_sigaction
+ useithreads=$useithreads
+ usemultiplicity=$usemultiplicity
+ use64bitint=$use64bitint
+ use64bitall=$use64bitall
+ uselongdouble=$uselongdouble
+ usemymalloc=$usemymalloc
+ default_inc_excludes_dot=$default_inc_excludes_dot
+ Compiler:
+ cc='$cc'
+ ccflags ='$ccflags'
+ optimize='$optimize'
+ cppflags='$cppflags'
+ ccversion='$ccversion'
+ gccversion='$gccversion'
+ gccosandvers='$gccosandvers'
+ intsize=$intsize
+ longsize=$longsize
+ ptrsize=$ptrsize
+ doublesize=$doublesize
+ byteorder=$byteorder
+ doublekind=$doublekind
+ d_longlong=$d_longlong
+ longlongsize=$longlongsize
+ d_longdbl=$d_longdbl
+ longdblsize=$longdblsize
+ longdblkind=$longdblkind
+ ivtype='$ivtype'
+ ivsize=$ivsize
+ nvtype='$nvtype'
+ nvsize=$nvsize
+ Off_t='$lseektype'
+ lseeksize=$lseeksize
+ alignbytes=$alignbytes
+ prototype=$prototype
+ Linker and Libraries:
+ ld='$ld'
+ ldflags ='$ldflags'
+ libpth=$libpth
+ libs=$libs
+ perllibs=$perllibs
+ libc=$libc
+ so=$so
+ useshrplib=$useshrplib
+ libperl=$libperl
+ gnulibc_version='$gnulibc_version'
+ Dynamic Linking:
+ dlsrc=$dlsrc
+ dlext=$dlext
+ d_dlsymun=$d_dlsymun
+ ccdlflags='$ccdlflags'
+ cccdlflags='$cccdlflags'
+ lddlflags='$lddlflags'
+
+!END!
+my $summary_expanded;
+
+sub myconfig {
+ return $summary_expanded if $summary_expanded;
+ ($summary_expanded = $summary) =~ s{\$(\w+)}
+ {
+ my $c;
+ if ($1 eq 'git_ancestor_line') {
+ if ($Config::Config{git_ancestor}) {
+ $c= "\n Ancestor: $Config::Config{git_ancestor}";
+ } else {
+ $c= "";
+ }
+ } else {
+ $c = $Config::Config{$1};
+ }
+ defined($c) ? $c : 'undef'
+ }ge;
+ $summary_expanded;
+}
+
+local *_ = \my $a;
+$_ = <<'!END!';
+Author=''
+CONFIG='true'
+Date='$Date'
+Header=''
+Id='$Id'
+Locker=''
+Log='$Log'
+PATCHLEVEL='38'
+PERL_API_REVISION='5'
+PERL_API_SUBVERSION='0'
+PERL_API_VERSION='38'
+PERL_CONFIG_SH='true'
+PERL_PATCHLEVEL=''
+PERL_REVISION='5'
+PERL_SUBVERSION='2'
+PERL_VERSION='38'
+RCSfile='$RCSfile'
+Revision='$Revision'
+SUBVERSION='2'
+Source=''
+State=''
+_a='.lib'
+_exe='.exe'
+_o='.obj'
+afs='false'
+afsroot='/afs'
+alignbytes='8'
+aphostname=''
+api_revision='5'
+api_subversion='0'
+api_version='38'
+api_versionstring='5.38.0'
+ar='lib -ltcg'
+archlib='d:\tlperl\lib'
+archlibexp='d:\tlperl\lib'
+archname='MSWin32-x64-multi-thread'
+archname64=''
+archobjs=''
+asctime_r_proto='0'
+awk='awk'
+baserev='5'
+bash=''
+bin='d:\tlperl\bin'
+binexp='d:\tlperl\bin'
+bison=''
+bootstrap_charset='undef'
+byacc='byacc'
+byteorder='1234'
+c=''
+castflags='0'
+cat='type'
+cc='cl'
+cccdlflags=' '
+ccdlflags=' '
+ccflags='-nologo -GF -W3 -MD -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY'
+ccflags_uselargefiles=''
+ccname='cl'
+ccsymbols=''
+ccversion='19.38.33135'
+cf_by='siepo'
+cf_email='tex-live@tug.org'
+cf_time='Mon Feb 12 11:14:47 2024'
+charbits='8'
+chgrp=''
+chmod=''
+chown=''
+clocktype='clock_t'
+comm=''
+compress=''
+contains='grep'
+cp='copy'
+cpio=''
+cpp='cl -nologo -E'
+cpp_stuff='42'
+cppccsymbols=''
+cppflags='-DWIN32'
+cpplast=''
+cppminus=''
+cpprun='cl -nologo -E'
+cppstdin='cppstdin'
+cppsymbols=''
+crypt_r_proto='0'
+cryptlib=''
+csh='undef'
+ctermid_r_proto='0'
+ctime_r_proto='0'
+d_Gconvert='sprintf((b),"%.*g",(n),(x))'
+d_PRIEUldbl='undef'
+d_PRIFUldbl='undef'
+d_PRIGUldbl='undef'
+d_PRIXU64='define'
+d_PRId64='define'
+d_PRIeldbl='undef'
+d_PRIfldbl='undef'
+d_PRIgldbl='undef'
+d_PRIi64='define'
+d_PRIo64='define'
+d_PRIu64='define'
+d_PRIx64='define'
+d_SCNfldbl='undef'
+d__fwalk='undef'
+d_accept4='undef'
+d_access='define'
+d_accessx='undef'
+d_acosh='undef'
+d_aintl='undef'
+d_alarm='define'
+d_archlib='define'
+d_asctime64='undef'
+d_asctime_r='undef'
+d_asinh='undef'
+d_atanh='undef'
+d_atolf='undef'
+d_atoll='define'
+d_attribute_always_inline='undef'
+d_attribute_deprecated='undef'
+d_attribute_format='undef'
+d_attribute_malloc='undef'
+d_attribute_nonnull='undef'
+d_attribute_noreturn='undef'
+d_attribute_pure='undef'
+d_attribute_unused='undef'
+d_attribute_visibility='undef'
+d_attribute_warn_unused_result='undef'
+d_backtrace='undef'
+d_bsd='define'
+d_bsdgetpgrp='undef'
+d_bsdsetpgrp='undef'
+d_builtin_add_overflow='undef'
+d_builtin_choose_expr='undef'
+d_builtin_expect='undef'
+d_builtin_mul_overflow='undef'
+d_builtin_sub_overflow='undef'
+d_c99_variadic_macros='undef'
+d_casti32='undef'
+d_castneg='define'
+d_cbrt='undef'
+d_chown='undef'
+d_chroot='undef'
+d_chsize='define'
+d_class='undef'
+d_clearenv='undef'
+d_closedir='define'
+d_cmsghdr_s='undef'
+d_copysign='undef'
+d_copysignl='undef'
+d_cplusplus='undef'
+d_crypt='define'
+d_crypt_r='undef'
+d_csh='undef'
+d_ctermid='undef'
+d_ctermid_r='undef'
+d_ctime64='undef'
+d_ctime_r='undef'
+d_cuserid='undef'
+d_dbl_dig='define'
+d_dbminitproto='undef'
+d_difftime='define'
+d_difftime64='undef'
+d_dir_dd_fd='undef'
+d_dirfd='undef'
+d_dirnamlen='define'
+d_dladdr='undef'
+d_dlerror='define'
+d_dlopen='define'
+d_dlsymun='undef'
+d_dosuid='undef'
+d_double_has_inf='define'
+d_double_has_nan='define'
+d_double_has_negative_zero='define'
+d_double_has_subnormals='define'
+d_double_style_cray='undef'
+d_double_style_ibm='undef'
+d_double_style_ieee='define'
+d_double_style_vax='undef'
+d_drand48_r='undef'
+d_drand48proto='undef'
+d_dup2='define'
+d_dup3='undef'
+d_duplocale='undef'
+d_eaccess='undef'
+d_endgrent='undef'
+d_endgrent_r='undef'
+d_endhent='undef'
+d_endhostent_r='undef'
+d_endnent='undef'
+d_endnetent_r='undef'
+d_endpent='undef'
+d_endprotoent_r='undef'
+d_endpwent='undef'
+d_endpwent_r='undef'
+d_endsent='undef'
+d_endservent_r='undef'
+d_eofnblk='define'
+d_erf='undef'
+d_erfc='undef'
+d_eunice='undef'
+d_exp2='undef'
+d_expm1='undef'
+d_faststdio='define'
+d_fchdir='undef'
+d_fchmod='undef'
+d_fchmodat='undef'
+d_fchown='undef'
+d_fcntl='undef'
+d_fcntl_can_lock='undef'
+d_fd_macros='define'
+d_fd_set='define'
+d_fdclose='undef'
+d_fdim='undef'
+d_fds_bits='define'
+d_fegetround='undef'
+d_ffs='undef'
+d_ffsl='undef'
+d_fgetpos='define'
+d_finite='undef'
+d_finitel='undef'
+d_flexfnam='define'
+d_flock='define'
+d_flockproto='define'
+d_fma='undef'
+d_fmax='undef'
+d_fmin='undef'
+d_fork='undef'
+d_fp_class='undef'
+d_fp_classify='undef'
+d_fp_classl='undef'
+d_fpathconf='undef'
+d_fpclass='undef'
+d_fpclassify='undef'
+d_fpclassl='undef'
+d_fpgetround='undef'
+d_fpos64_t='undef'
+d_freelocale='undef'
+d_frexpl='undef'
+d_fs_data_s='undef'
+d_fseeko='undef'
+d_fsetpos='define'
+d_fstatfs='undef'
+d_fstatvfs='undef'
+d_fsync='undef'
+d_ftello='undef'
+d_ftime='define'
+d_futimes='undef'
+d_gai_strerror='undef'
+d_gdbm_ndbm_h_uses_prototypes='undef'
+d_gdbmndbm_h_uses_prototypes='undef'
+d_getaddrinfo='undef'
+d_getcwd='define'
+d_getenv_preserves_other_thread='define'
+d_getespwnam='undef'
+d_getfsstat='undef'
+d_getgrent='undef'
+d_getgrent_r='undef'
+d_getgrgid_r='undef'
+d_getgrnam_r='undef'
+d_getgrps='undef'
+d_gethbyaddr='define'
+d_gethbyname='define'
+d_gethent='undef'
+d_gethname='define'
+d_gethostbyaddr_r='undef'
+d_gethostbyname_r='undef'
+d_gethostent_r='undef'
+d_gethostprotos='define'
+d_getitimer='undef'
+d_getlogin='define'
+d_getlogin_r='undef'
+d_getmnt='undef'
+d_getmntent='undef'
+d_getnameinfo='undef'
+d_getnbyaddr='undef'
+d_getnbyname='undef'
+d_getnent='undef'
+d_getnetbyaddr_r='undef'
+d_getnetbyname_r='undef'
+d_getnetent_r='undef'
+d_getnetprotos='undef'
+d_getpagsz='undef'
+d_getpbyname='define'
+d_getpbynumber='define'
+d_getpent='undef'
+d_getpgid='undef'
+d_getpgrp='undef'
+d_getpgrp2='undef'
+d_getppid='undef'
+d_getprior='undef'
+d_getprotobyname_r='undef'
+d_getprotobynumber_r='undef'
+d_getprotoent_r='undef'
+d_getprotoprotos='define'
+d_getprpwnam='undef'
+d_getpwent='undef'
+d_getpwent_r='undef'
+d_getpwnam_r='undef'
+d_getpwuid_r='undef'
+d_getsbyname='define'
+d_getsbyport='define'
+d_getsent='undef'
+d_getservbyname_r='undef'
+d_getservbyport_r='undef'
+d_getservent_r='undef'
+d_getservprotos='define'
+d_getspnam='undef'
+d_getspnam_r='undef'
+d_gettimeod='define'
+d_gmtime64='undef'
+d_gmtime_r='undef'
+d_gnulibc='undef'
+d_grpasswd='undef'
+d_has_C_UTF8='undef'
+d_hasmntopt='undef'
+d_htonl='define'
+d_hypot='undef'
+d_ilogb='undef'
+d_ilogbl='undef'
+d_inc_version_list='undef'
+d_index='undef'
+d_inetaton='undef'
+d_inetntop='undef'
+d_inetpton='undef'
+d_int64_t='undef'
+d_ip_mreq='undef'
+d_ip_mreq_source='undef'
+d_ipv6_mreq='undef'
+d_ipv6_mreq_source='undef'
+d_isascii='define'
+d_isblank='undef'
+d_isfinite='undef'
+d_isfinitel='undef'
+d_isinf='undef'
+d_isinfl='undef'
+d_isless='undef'
+d_isnan='define'
+d_isnanl='undef'
+d_isnormal='undef'
+d_j0='undef'
+d_j0l='undef'
+d_killpg='define'
+d_lc_monetary_2008='undef'
+d_lchown='undef'
+d_ldbl_dig='define'
+d_ldexpl='undef'
+d_lgamma='undef'
+d_lgamma_r='undef'
+d_libm_lib_version='undef'
+d_link='define'
+d_linkat='undef'
+d_llrint='undef'
+d_llrintl='undef'
+d_llround='undef'
+d_llroundl='undef'
+d_localeconv_l='undef'
+d_localtime64='undef'
+d_localtime_r='undef'
+d_localtime_r_needs_tzset='undef'
+d_locconv='define'
+d_lockf='undef'
+d_log1p='undef'
+d_log2='undef'
+d_logb='undef'
+d_long_double_style_ieee='undef'
+d_long_double_style_ieee_doubledouble='undef'
+d_long_double_style_ieee_extended='define'
+d_long_double_style_ieee_std='undef'
+d_long_double_style_vax='undef'
+d_longdbl='define'
+d_longlong='undef'
+d_lrint='undef'
+d_lrintl='undef'
+d_lround='undef'
+d_lroundl='undef'
+d_lseekproto='define'
+d_lstat='define'
+d_madvise='undef'
+d_malloc_good_size='undef'
+d_malloc_size='undef'
+d_mblen='define'
+d_mbrlen='undef'
+d_mbrtowc='undef'
+d_mbstowcs='define'
+d_mbtowc='define'
+d_memmem='undef'
+d_memrchr='undef'
+d_mkdir='define'
+d_mkdtemp='undef'
+d_mkfifo='undef'
+d_mkostemp='undef'
+d_mkstemp='undef'
+d_mkstemps='undef'
+d_mktime='define'
+d_mktime64='undef'
+d_mmap='undef'
+d_modfl='undef'
+d_modfl_pow32_bug='undef'
+d_modflproto='undef'
+d_mprotect='undef'
+d_msg='undef'
+d_msg_ctrunc='undef'
+d_msg_dontroute='undef'
+d_msg_oob='undef'
+d_msg_peek='undef'
+d_msg_proxy='undef'
+d_msgctl='undef'
+d_msgget='undef'
+d_msghdr_s='undef'
+d_msgrcv='undef'
+d_msgsnd='undef'
+d_msync='undef'
+d_munmap='undef'
+d_mymalloc='undef'
+d_nan='undef'
+d_nanosleep='undef'
+d_ndbm='undef'
+d_ndbm_h_uses_prototypes='undef'
+d_nearbyint='undef'
+d_newlocale='undef'
+d_nextafter='undef'
+d_nexttoward='undef'
+d_nice='undef'
+d_nl_langinfo='undef'
+d_nl_langinfo_l='undef'
+d_non_int_bitfields='define'
+d_nv_preserves_uv='undef'
+d_nv_zero_is_allbits_zero='define'
+d_off64_t='undef'
+d_old_pthread_create_joinable='undef'
+d_oldpthreads='undef'
+d_oldsock='undef'
+d_open3='undef'
+d_openat='undef'
+d_pathconf='undef'
+d_pause='define'
+d_perl_otherlibdirs='undef'
+d_phostname='undef'
+d_pipe='define'
+d_pipe2='undef'
+d_poll='undef'
+d_portable='define'
+d_prctl='undef'
+d_prctl_set_name='undef'
+d_printf_format_null='undef'
+d_procselfexe='undef'
+d_pseudofork='define'
+d_pthread_atfork='undef'
+d_pthread_attr_setscope='undef'
+d_pthread_yield='undef'
+d_ptrdiff_t='define'
+d_pwage='undef'
+d_pwchange='undef'
+d_pwclass='undef'
+d_pwcomment='undef'
+d_pwexpire='undef'
+d_pwgecos='undef'
+d_pwpasswd='undef'
+d_pwquota='undef'
+d_qgcvt='undef'
+d_quad='define'
+d_querylocale='undef'
+d_random_r='undef'
+d_readdir='define'
+d_readdir64_r='undef'
+d_readdir_r='undef'
+d_readlink='define'
+d_readv='undef'
+d_recvmsg='undef'
+d_regcomp='undef'
+d_remainder='undef'
+d_remquo='undef'
+d_rename='define'
+d_renameat='undef'
+d_rewinddir='define'
+d_rint='undef'
+d_rmdir='define'
+d_round='undef'
+d_sbrkproto='undef'
+d_scalbn='undef'
+d_scalbnl='undef'
+d_sched_yield='undef'
+d_scm_rights='undef'
+d_seekdir='define'
+d_select='define'
+d_sem='undef'
+d_semctl='undef'
+d_semctl_semid_ds='undef'
+d_semctl_semun='undef'
+d_semget='undef'
+d_semop='undef'
+d_sendmsg='undef'
+d_setegid='undef'
+d_setenv='undef'
+d_seteuid='undef'
+d_setgrent='undef'
+d_setgrent_r='undef'
+d_setgrps='undef'
+d_sethent='undef'
+d_sethostent_r='undef'
+d_setitimer='undef'
+d_setlinebuf='undef'
+d_setlocale='define'
+d_setlocale_accepts_any_locale_name='undef'
+d_setlocale_r='undef'
+d_setnent='undef'
+d_setnetent_r='undef'
+d_setpent='undef'
+d_setpgid='undef'
+d_setpgrp='undef'
+d_setpgrp2='undef'
+d_setprior='undef'
+d_setproctitle='undef'
+d_setprotoent_r='undef'
+d_setpwent='undef'
+d_setpwent_r='undef'
+d_setregid='undef'
+d_setresgid='undef'
+d_setresuid='undef'
+d_setreuid='undef'
+d_setrgid='undef'
+d_setruid='undef'
+d_setsent='undef'
+d_setservent_r='undef'
+d_setsid='undef'
+d_setvbuf='define'
+d_shm='undef'
+d_shmat='undef'
+d_shmatprototype='undef'
+d_shmctl='undef'
+d_shmdt='undef'
+d_shmget='undef'
+d_sigaction='undef'
+d_siginfo_si_addr='undef'
+d_siginfo_si_band='undef'
+d_siginfo_si_errno='undef'
+d_siginfo_si_pid='undef'
+d_siginfo_si_status='undef'
+d_siginfo_si_uid='undef'
+d_siginfo_si_value='undef'
+d_signbit='undef'
+d_sigprocmask='undef'
+d_sigsetjmp='undef'
+d_sin6_scope_id='define'
+d_sitearch='define'
+d_snprintf='define'
+d_sockaddr_in6='undef'
+d_sockaddr_sa_len='undef'
+d_sockaddr_storage='define'
+d_sockatmark='undef'
+d_sockatmarkproto='undef'
+d_socket='define'
+d_socklen_t='undef'
+d_sockpair='undef'
+d_socks5_init='undef'
+d_sqrtl='undef'
+d_srand48_r='undef'
+d_srandom_r='undef'
+d_sresgproto='undef'
+d_sresuproto='undef'
+d_stat='define'
+d_statblks='undef'
+d_statfs_f_flags='undef'
+d_statfs_s='undef'
+d_static_inline='define'
+d_statvfs='undef'
+d_stdio_cnt_lval='define'
+d_stdio_ptr_lval='define'
+d_stdio_ptr_lval_nochange_cnt='define'
+d_stdio_ptr_lval_sets_cnt='undef'
+d_stdio_stream_array='undef'
+d_stdiobase='define'
+d_stdstdio='define'
+d_strcoll='define'
+d_strerror_l='undef'
+d_strerror_r='undef'
+d_strftime='define'
+d_strlcat='undef'
+d_strlcpy='undef'
+d_strnlen='undef'
+d_strtod='define'
+d_strtod_l='undef'
+d_strtol='define'
+d_strtold='undef'
+d_strtold_l='undef'
+d_strtoll='define'
+d_strtoq='undef'
+d_strtoul='define'
+d_strtoull='define'
+d_strtouq='undef'
+d_strxfrm='define'
+d_strxfrm_l='undef'
+d_suidsafe='undef'
+d_symlink='define'
+d_syscall='undef'
+d_syscallproto='undef'
+d_sysconf='undef'
+d_sysernlst=''
+d_syserrlst='define'
+d_system='define'
+d_tcgetpgrp='undef'
+d_tcsetpgrp='undef'
+d_telldir='define'
+d_telldirproto='define'
+d_tgamma='undef'
+d_thread_local='undef'
+d_thread_safe_nl_langinfo_l='undef'
+d_time='define'
+d_timegm='undef'
+d_times='define'
+d_tm_tm_gmtoff='undef'
+d_tm_tm_zone='undef'
+d_tmpnam_r='undef'
+d_towlower='undef'
+d_towupper='undef'
+d_trunc='undef'
+d_truncate='undef'
+d_truncl='undef'
+d_ttyname_r='undef'
+d_tzname='define'
+d_u32align='define'
+d_ualarm='undef'
+d_umask='define'
+d_uname='define'
+d_union_semun='define'
+d_unlinkat='undef'
+d_unordered='undef'
+d_unsetenv='undef'
+d_uselocale='undef'
+d_usleep='undef'
+d_usleepproto='undef'
+d_ustat='undef'
+d_vendorarch='undef'
+d_vendorbin='undef'
+d_vendorlib='undef'
+d_vendorscript='undef'
+d_vfork='undef'
+d_void_closedir='undef'
+d_voidsig='define'
+d_voidtty=''
+d_vsnprintf='define'
+d_wait4='undef'
+d_waitpid='define'
+d_wcrtomb='undef'
+d_wcscmp='define'
+d_wcstombs='define'
+d_wcsxfrm='define'
+d_wctomb='define'
+d_writev='undef'
+d_xenix='undef'
+date='date'
+db_hashtype='int'
+db_prefixtype='int'
+db_version_major='0'
+db_version_minor='0'
+db_version_patch='0'
+default_inc_excludes_dot='define'
+direntrytype='struct direct'
+dlext='dll'
+dlsrc='dl_win32.xs'
+doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
+doublekind='3'
+doublemantbits='52'
+doublenanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f'
+doublesize='8'
+drand01='Perl_drand48()'
+drand48_r_proto='0'
+dtrace=''
+dynamic_ext='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call Hash/Util Hash/Util/FieldHash I18N/Langinfo IO List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize Win32 Win32API/File XS/APItest XS/Typemap attributes mro re threads threads/shared'
+eagain='EAGAIN'
+ebcdic='undef'
+echo='echo'
+egrep='egrep'
+emacs=''
+endgrent_r_proto='0'
+endhostent_r_proto='0'
+endnetent_r_proto='0'
+endprotoent_r_proto='0'
+endpwent_r_proto='0'
+endservent_r_proto='0'
+eunicefix=':'
+exe_ext='.exe'
+expr='expr'
+extensions='Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version'
+extern_C='extern'
+extras=''
+fflushNULL='define'
+fflushall='undef'
+find='find'
+firstmakefile='makefile'
+flex=''
+fpossize='8'
+fpostype='fpos_t'
+freetype='void'
+from=':'
+full_ar=''
+full_csh=''
+full_sed=''
+gccansipedantic=''
+gccosandvers=''
+gccversion=''
+getgrent_r_proto='0'
+getgrgid_r_proto='0'
+getgrnam_r_proto='0'
+gethostbyaddr_r_proto='0'
+gethostbyname_r_proto='0'
+gethostent_r_proto='0'
+getlogin_r_proto='0'
+getnetbyaddr_r_proto='0'
+getnetbyname_r_proto='0'
+getnetent_r_proto='0'
+getprotobyname_r_proto='0'
+getprotobynumber_r_proto='0'
+getprotoent_r_proto='0'
+getpwent_r_proto='0'
+getpwnam_r_proto='0'
+getpwuid_r_proto='0'
+getservbyname_r_proto='0'
+getservbyport_r_proto='0'
+getservent_r_proto='0'
+getspnam_r_proto='0'
+gidformat='"ld"'
+gidsign='-1'
+gidsize='4'
+gidtype='gid_t'
+glibpth='/usr/shlib /lib/pa1.1 /usr/lib/large /lib /usr/lib /usr/lib/386 /lib/386 /lib/large /usr/lib/small /lib/small /usr/ccs/lib /usr/ucblib /usr/shlib '
+gmake='gmake'
+gmtime_r_proto='0'
+gnulibc_version=''
+grep='grep'
+groupcat=''
+groupstype='gid_t'
+gzip='gzip'
+h_fcntl='false'
+h_sysfile='true'
+hint='recommended'
+hostcat='ypcat hosts'
+html1dir=' '
+html1direxp=''
+html3dir=' '
+html3direxp=''
+i16size='2'
+i16type='short'
+i32dformat='"ld"'
+i32size='4'
+i32type='long'
+i64size='8'
+i64type='__int64'
+i8size='1'
+i8type='char'
+i_arpainet='define'
+i_bfd='undef'
+i_bsdioctl=''
+i_crypt='undef'
+i_db='undef'
+i_dbm='undef'
+i_dirent='define'
+i_dlfcn='define'
+i_execinfo='undef'
+i_fcntl='define'
+i_fenv='undef'
+i_fp='undef'
+i_fp_class='undef'
+i_gdbm='undef'
+i_gdbm_ndbm='undef'
+i_gdbmndbm='undef'
+i_grp='undef'
+i_ieeefp='undef'
+i_inttypes='undef'
+i_langinfo='undef'
+i_libutil='undef'
+i_limits='define'
+i_locale='define'
+i_machcthr='undef'
+i_malloc='define'
+i_mallocmalloc='undef'
+i_mntent='undef'
+i_ndbm='undef'
+i_netdb='undef'
+i_neterrno='undef'
+i_netinettcp='undef'
+i_niin='undef'
+i_poll='undef'
+i_prot='undef'
+i_pthread='undef'
+i_pwd='undef'
+i_quadmath='undef'
+i_rpcsvcdbm='undef'
+i_sgtty='undef'
+i_shadow='undef'
+i_socks='undef'
+i_stdbool='define'
+i_stdint='define'
+i_stdlib='define'
+i_string='define'
+i_sunmath='undef'
+i_sysaccess='undef'
+i_sysdir='undef'
+i_sysfile='undef'
+i_sysfilio='define'
+i_sysin='undef'
+i_sysioctl='undef'
+i_syslog='undef'
+i_sysmman='undef'
+i_sysmode='undef'
+i_sysmount='undef'
+i_sysndir='undef'
+i_sysparam='undef'
+i_syspoll='undef'
+i_sysresrc='undef'
+i_syssecrt='undef'
+i_sysselct='undef'
+i_syssockio='undef'
+i_sysstat='define'
+i_sysstatfs='undef'
+i_sysstatvfs='undef'
+i_syssyscall='undef'
+i_systime='undef'
+i_systimek='undef'
+i_systimes='undef'
+i_systypes='define'
+i_sysuio='undef'
+i_sysun='undef'
+i_sysutsname='undef'
+i_sysvfs='undef'
+i_syswait='undef'
+i_termio='undef'
+i_termios='undef'
+i_time='define'
+i_unistd='undef'
+i_ustat='undef'
+i_utime='define'
+i_vfork='undef'
+i_wchar='undef'
+i_wctype='undef'
+i_xlocale='undef'
+ignore_versioned_solibs=''
+inc_version_list=''
+inc_version_list_init='0'
+incpath='"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\\include"'
+inews=''
+initialinstalllocation=''
+installarchlib='d:\tlperl\lib'
+installbin='d:\tlperl\bin'
+installhtml1dir=''
+installhtml3dir=''
+installhtmldir='d:\tlperl\html'
+installhtmlhelpdir='d:\tlperl\htmlhelp'
+installman1dir='d:\tlperl\man\man1'
+installman3dir='d:\tlperl\man\man3'
+installprefix='d:\tlperl'
+installprefixexp='d:\tlperl'
+installprivlib='d:\tlperl\lib'
+installscript='d:\tlperl\bin'
+installsitearch='d:\tlperl\site\lib'
+installsitebin='d:\tlperl\bin'
+installsitehtml1dir=''
+installsitehtml3dir=''
+installsitelib='d:\tlperl\site\lib'
+installsiteman1dir=''
+installsiteman3dir=''
+installsitescript=''
+installstyle='lib'
+installusrbinperl='undef'
+installvendorarch=''
+installvendorbin=''
+installvendorhtml1dir=''
+installvendorhtml3dir=''
+installvendorlib=''
+installvendorman1dir=''
+installvendorman3dir=''
+installvendorscript=''
+intsize='4'
+issymlink=''
+ivdformat='"I64d"'
+ivsize='8'
+ivtype='__int64'
+known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version'
+ksh=''
+ld='link'
+lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"d:\tlperl\lib\CORE" -machine:AMD64 -subsystem:console,"5.02"'
+ldflags='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"d:\tlperl\lib\CORE" -machine:AMD64 -subsystem:console,"5.02"'
+ldflags_uselargefiles=''
+ldlibpthname=''
+less='less'
+lib_ext='.lib'
+libc='ucrt.lib'
+libperl='perl538.lib'
+libpth='"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\\lib\x64"'
+libs='oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib vcruntime.lib ucrt.lib'
+libsdirs=''
+libsfiles=''
+libsfound=''
+libspath=''
+libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x'
+libswanted_uselargefiles='net socket inet nsl nm ndbm gdbm dbm db malloc dl ld sun m c cposix posix ndir dir crypt ucb bsd BSD PW x'
+line='line'
+lint=''
+lkflags=''
+ln=''
+lns='copy'
+localtime_r_proto='0'
+locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
+loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
+longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
+longdblkind='0'
+longdblmantbits='52'
+longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f'
+longdblsize='8'
+longlongsize='8'
+longsize='4'
+lp=''
+lpr=''
+ls='dir'
+lseeksize='8'
+lseektype='__int64'
+mad='undef'
+mail=''
+mailx=''
+make='nmake'
+make_set_make='#'
+mallocobj='malloc.o'
+mallocsrc='malloc.c'
+malloctype='void *'
+man1dir='d:\tlperl\man\man1'
+man1direxp='d:\tlperl\man\man1'
+man1ext='1'
+man3dir='d:\tlperl\man\man3'
+man3direxp='d:\tlperl\man\man3'
+man3ext='3'
+mips_type=''
+mistrustnm=''
+mkdir='mkdir'
+mmaptype='void *'
+modetype='mode_t'
+more='more /e'
+multiarch='undef'
+mv=''
+myarchname='MSWin32'
+mydomain=''
+myhostname=''
+myuname=''
+n='-n'
+need_va_copy='undef'
+netdb_hlen_type='int'
+netdb_host_type='char *'
+netdb_name_type='char *'
+netdb_net_type='long'
+nm=''
+nm_opt=''
+nm_so_opt=''
+nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version'
+nroff=''
+nvEUformat='"E"'
+nvFUformat='"F"'
+nvGUformat='"G"'
+nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0'
+nv_preserves_uv_bits='53'
+nveformat='"e"'
+nvfformat='"f"'
+nvgformat='"g"'
+nvmantbits='52'
+nvsize='8'
+nvtype='double'
+o_nonblock='O_NONBLOCK'
+obj_ext='.obj'
+old_pthread_create_joinable=''
+optimize='-O1 -Zi -GL -fp:precise'
+orderlib='false'
+osname='MSWin32'
+osvers='10.0.22631.3085'
+otherlibdirs=''
+package='perl5'
+pager='more /e'
+passcat=''
+patchlevel='38'
+path_sep=';'
+perl='perl'
+perl5=''
+perl_patchlevel=''
+perl_static_inline='static __inline'
+perl_thread_local=''
+perladmin=''
+perllibs='oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib vcruntime.lib ucrt.lib'
+perlpath='d:\tlperl\bin\perl.exe'
+pg=''
+phostname='hostname'
+pidtype='int'
+plibpth=''
+pmake=''
+pr=''
+prefix='d:\tlperl'
+prefixexp='d:\tlperl'
+privlib='d:\tlperl\lib'
+privlibexp='d:\tlperl\lib'
+procselfexe=''
+prototype='define'
+ptrsize='8'
+quadkind='5'
+quadtype='__int64'
+randbits='48'
+randfunc='Perl_drand48'
+random_r_proto='0'
+randseedtype='U32'
+ranlib='rem'
+rd_nodata='-1'
+readdir64_r_proto='0'
+readdir_r_proto='0'
+revision='5'
+rm='del'
+rm_try=''
+rmail=''
+run=''
+runnm='true'
+sGMTIME_max='32535291599'
+sGMTIME_min="0"
+sLOCALTIME_max='32535244799'
+sLOCALTIME_min="0"
+sPRIEUldbl='"E"'
+sPRIFUldbl='"F"'
+sPRIGUldbl='"G"'
+sPRIXU64='"I64X"'
+sPRId64='"I64d"'
+sPRIeldbl='"e"'
+sPRIfldbl='"f"'
+sPRIgldbl='"g"'
+sPRIi64='"I64i"'
+sPRIo64='"I64o"'
+sPRIu64='"I64u"'
+sPRIx64='"I64x"'
+sSCNfldbl='"f"'
+sched_yield=''
+scriptdir='d:\tlperl\bin'
+scriptdirexp='d:\tlperl\bin'
+sed='sed'
+seedfunc='Perl_drand48_init'
+selectminbits='32'
+selecttype='Perl_fd_set *'
+sendmail='blat'
+setgrent_r_proto='0'
+sethostent_r_proto='0'
+setlocale_r_proto='0'
+setnetent_r_proto='0'
+setprotoent_r_proto='0'
+setpwent_r_proto='0'
+setservent_r_proto='0'
+sh='cmd /x /c'
+shar=''
+sharpbang='#!'
+shmattype='void *'
+shortsize='2'
+shrpenv=''
+shsharp='true'
+sig_count='26'
+sig_name='ZERO HUP INT QUIT ILL NUM05 NUM06 NUM07 FPE KILL NUM10 SEGV NUM12 PIPE ALRM TERM NUM16 NUM17 NUM18 NUM19 CHLD BREAK ABRT STOP NUM24 CONT CLD'
+sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "NUM05", "NUM06", "NUM07", "FPE", "KILL", "NUM10", "SEGV", "NUM12", "PIPE", "ALRM", "TERM", "NUM16", "NUM17", "NUM18", "NUM19", "CHLD", "BREAK", "ABRT", "STOP", "NUM24", "CONT", "CLD", 0'
+sig_num='0 1 2 21 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 20'
+sig_num_init='0, 1, 2, 21, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 20, 0'
+sig_size='27'
+signal_t='void'
+sitearch='d:\tlperl\site\lib'
+sitearchexp='d:\tlperl\site\lib'
+sitebin='d:\tlperl\site\bin'
+sitebinexp='d:\tlperl\site\bin'
+sitehtml1dir=''
+sitehtml1direxp=''
+sitehtml3dir=''
+sitehtml3direxp=''
+sitelib='d:\tlperl\site\lib'
+sitelib_stem=''
+sitelibexp='d:\tlperl\site\lib'
+siteman1dir=''
+siteman1direxp=''
+siteman3dir=''
+siteman3direxp=''
+siteprefix='d:\tlperl\site'
+siteprefixexp='d:\tlperl\site'
+sitescript=''
+sitescriptexp=''
+sizesize='8'
+sizetype='size_t'
+sleep=''
+smail=''
+so='dll'
+sockethdr=''
+socketlib=''
+socksizetype='int'
+sort='sort'
+spackage='Perl5'
+spitshell=''
+srand48_r_proto='0'
+srandom_r_proto='0'
+src=''
+ssizetype='__int64'
+st_dev_sign='1'
+st_dev_size='4'
+st_ino_sign='1'
+st_ino_size='8'
+startperl='#!perl'
+startsh='#!/bin/sh'
+static_ext='Win32CORE'
+stdchar='char'
+stdio_base='PERLIO_FILE_base(fp)'
+stdio_bufsiz='(PERLIO_FILE_cnt(fp) + PERLIO_FILE_ptr(fp) - PERLIO_FILE_base(fp))'
+stdio_cnt='PERLIO_FILE_cnt(fp)'
+stdio_filbuf=''
+stdio_ptr='PERLIO_FILE_ptr(fp)'
+stdio_stream_array=''
+strerror_r_proto='0'
+strings='/usr/include/string.h'
+submit=''
+subversion='2'
+sysman='/usr/man/man1'
+tail=''
+taint_disabled=''
+taint_support=''
+tar=''
+targetarch=''
+targetsh='cmd /x /c'
+tbl=''
+tee=''
+test=''
+timeincl='/usr/include/sys/time.h '
+timetype='time_t'
+tmpnam_r_proto='0'
+to=':'
+touch='touch'
+tr=''
+trnl='\012'
+troff=''
+ttyname_r_proto='0'
+u16size='2'
+u16type='unsigned short'
+u32XUformat='"lX"'
+u32oformat='"lo"'
+u32size='4'
+u32type='unsigned long'
+u32uformat='"lu"'
+u32xformat='"lx"'
+u64size='8'
+u64type='unsigned __int64'
+u8size='1'
+u8type='unsigned char'
+uidformat='"ld"'
+uidsign='-1'
+uidsize='4'
+uidtype='uid_t'
+uname='uname'
+uniq='uniq'
+uquadtype='unsigned __int64'
+use64bitall='undef'
+use64bitint='define'
+usecbacktrace='undef'
+usecrosscompile='undef'
+usedefaultstrict='undef'
+usedevel='undef'
+usedl='define'
+usedtrace='undef'
+usefaststdio='undef'
+useithreads='define'
+usekernprocpathname='undef'
+uselargefiles='define'
+uselongdouble='undef'
+usemallocwrap='define'
+usemorebits='undef'
+usemultiplicity='define'
+usemymalloc='n'
+usenm='false'
+usensgetexecutablepath='undef'
+useopcode='true'
+useperlio='define'
+useposix='true'
+usequadmath='undef'
+usereentrant='undef'
+userelocatableinc='undef'
+useshrplib='true'
+usesitecustomize='undef'
+usesocks='undef'
+usethreads='define'
+usevendorprefix='undef'
+usevfork='false'
+usrinc='/usr/include'
+uuname=''
+uvXUformat='"I64X"'
+uvoformat='"I64o"'
+uvsize='8'
+uvtype='unsigned __int64'
+uvuformat='"I64u"'
+uvxformat='"I64x"'
+vendorarch=''
+vendorarchexp=''
+vendorbin=''
+vendorbinexp=''
+vendorhtml1dir=' '
+vendorhtml1direxp=''
+vendorhtml3dir=' '
+vendorhtml3direxp=''
+vendorlib=''
+vendorlib_stem=''
+vendorlibexp=''
+vendorman1dir=' '
+vendorman1direxp=''
+vendorman3dir=' '
+vendorman3direxp=''
+vendorprefix=''
+vendorprefixexp=''
+vendorscript=''
+vendorscriptexp=''
+version='5.38.2'
+version_patchlevel_string='version 38 subversion 2'
+versiononly='undef'
+vi=''
+xlibpth='/usr/lib/386 /lib/386'
+xlocale_needed='undef'
+yacc='yacc'
+yaccflags=''
+zcat=''
+zip='zip'
+!END!
+
+my $i = ord(8);
+foreach my $c (7,6,5,4,3,2,1) { $i <<= 8; $i |= ord($c); }
+our $byteorder = join('', unpack('aaaaaaaa', pack('Q', $i)));
+s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m;
+
+{
+ # We have to set this up late as Win32 does not build miniperl
+ # with the same defines and CC flags as it builds perl itself.
+ my $defines = join " ", (Internals::V)[0,1];
+ if (
+ $defines =~ /\b(SILENT_NO_TAINT_SUPPORT)\b/ ||
+ $defines =~ /\b(NO_TAINT_SUPPORT)\b/
+ ){
+ my $which = $1;
+ my $taint_disabled = ($which eq "SILENT_NO_TAINT_SUPPORT")
+ ? "silent" : "define";
+ s/^(taint_disabled=['"])(["'])/$1$taint_disabled$2/m;
+ }
+ else {
+ my $taint_support = 'define';
+ s/^(taint_support=['"])(["'])/$1$taint_support$2/m;
+ }
+}
+my $config_sh_len = length $_;
+
+our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL';
+ccflags_nolargefiles='-nologo -GF -W3 -MD -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY'
+ldflags_nolargefiles='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"d:\tlperl\lib\CORE" -machine:AMD64 -subsystem:console,"5.02"'
+libs_nolargefiles=''
+libswanted_nolargefiles=''
+EOVIRTUAL
+eval {
+ # do not have hairy conniptions if this isnt available
+ require 'Config_git.pl';
+ $Config_SH_expanded .= $Config::Git_Data;
+ 1;
+} or warn "Warning: failed to load Config_git.pl, something strange about this perl...\n";
+
+# Search for it in the big string
+sub fetch_string {
+ my($self, $key) = @_;
+
+ return undef unless my ($quote_type, $value) = $Config_SH_expanded =~ /\n$key=(['"])(.*?)\1\n/s;
+
+ # If we had a double-quote, we'd better eval it so escape
+ # sequences and such can be interpolated. Since the incoming
+ # value is supposed to follow shell rules and not perl rules,
+ # we escape any perl variable markers
+
+ # Historically, since " 'support' was added in change 1409, the
+ # interpolation was done before the undef. Stick to this arguably buggy
+ # behaviour as we're refactoring.
+ if ($quote_type eq '"') {
+ $value =~ s/\$/\\\$/g;
+ $value =~ s/\@/\\\@/g;
+ eval "\$value = \"$value\"";
+ }
+
+ # So we can say "if $Config{'foo'}".
+ $self->{$key} = $value eq 'undef' ? undef : $value; # cache it
+}
+
+my $prevpos = 0;
+
+sub FIRSTKEY {
+ $prevpos = 0;
+ substr($Config_SH_expanded, 1, index($Config_SH_expanded, '=') - 1 );
+}
+
+sub NEXTKEY {
+ # Find out how the current key's quoted so we can skip to its end.
+ my $quote = substr($Config_SH_expanded,
+ index($Config_SH_expanded, "=", $prevpos)+1, 1);
+ my $pos = index($Config_SH_expanded, qq($quote\n), $prevpos) + 2;
+ my $len = index($Config_SH_expanded, "=", $pos) - $pos;
+ $prevpos = $pos;
+ $len > 0 ? substr($Config_SH_expanded, $pos, $len) : undef;
+}
+
+sub EXISTS {
+ return 1 if exists($_[0]->{$_[1]});
+
+ return(index($Config_SH_expanded, "\n$_[1]='") != -1
+ or index($Config_SH_expanded, "\n$_[1]=\"") != -1
+ );
+}
+
+sub STORE { die "\%Config::Config is read-only\n" }
+*DELETE = *CLEAR = \*STORE; # Typeglob aliasing uses less space
+
+sub config_sh {
+ substr $Config_SH_expanded, 1, $config_sh_len;
+}
+
+sub config_re {
+ my $re = shift;
+ return map { chomp; $_ } grep eval{ /^(?:$re)=/ }, split /^/,
+ $Config_SH_expanded;
+}
+
+sub config_vars {
+ # implements -V:cfgvar option (see perlrun -V:)
+ foreach (@_) {
+ # find optional leading, trailing colons; and query-spec
+ my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft,
+ # map colon-flags to print decorations
+ my $prfx = $notag ? '': "$qry="; # tag-prefix for print
+ my $lnend = $lncont ? ' ' : ";\n"; # line ending for print
+
+ # all config-vars are by definition \w only, any \W means regex
+ if ($qry =~ /\W/) {
+ my @matches = config_re($qry);
+ print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag;
+ print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag;
+ } else {
+ my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry}
+ : 'UNKNOWN';
+ $v = 'undef' unless defined $v;
+ print "${prfx}'${v}'$lnend";
+ }
+ }
+}
+
+# Called by the real AUTOLOAD
+sub launcher {
+ undef &AUTOLOAD;
+ goto \&$Config::AUTOLOAD;
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Config_heavy.pl b/Master/tlpkg/tlperl/lib/Config_heavy.pl
index 503a456327d..e1c691d9bbf 100644
--- a/Master/tlpkg/tlperl/lib/Config_heavy.pl
+++ b/Master/tlpkg/tlperl/lib/Config_heavy.pl
@@ -140,26 +140,25 @@ my $summary_expanded;
sub myconfig {
return $summary_expanded if $summary_expanded;
($summary_expanded = $summary) =~ s{\$(\w+)}
- {
- my $c;
- if ($1 eq 'git_ancestor_line') {
- if ($Config::Config{git_ancestor}) {
- $c= "\n Ancestor: $Config::Config{git_ancestor}";
- } else {
- $c= "";
- }
- } else {
- $c = $Config::Config{$1};
- }
- defined($c) ? $c : 'undef'
- }ge;
+ {
+ my $c;
+ if ($1 eq 'git_ancestor_line') {
+ if ($Config::Config{git_ancestor}) {
+ $c= "\n Ancestor: $Config::Config{git_ancestor}";
+ } else {
+ $c= "";
+ }
+ } else {
+ $c = $Config::Config{$1};
+ }
+ defined($c) ? $c : 'undef'
+ }ge;
$summary_expanded;
}
-
+
my $rootdir = __FILE__;
$rootdir =~ s![\\/][^\\/]*[\\/][^\\/]*$!!;
$rootdir =~ s!/!\\!g;
-my $mingdir = "E:\\mingw64";
local *_ = \my $a;
$_ = <<"!END!";
@@ -170,32 +169,32 @@ Header=''
Id='\$Id'
Locker=''
Log='\$Log'
-PATCHLEVEL='34'
+PATCHLEVEL='38'
PERL_API_REVISION='5'
PERL_API_SUBVERSION='0'
-PERL_API_VERSION='34'
+PERL_API_VERSION='38'
PERL_CONFIG_SH='true'
PERL_PATCHLEVEL=''
PERL_REVISION='5'
-PERL_SUBVERSION='0'
-PERL_VERSION='34'
+PERL_SUBVERSION='2'
+PERL_VERSION='38'
RCSfile='\$RCSfile'
Revision='\$Revision'
-SUBVERSION='0'
+SUBVERSION='2'
Source=''
State=''
-_a='.a'
+_a='.lib'
_exe='.exe'
-_o='.o'
+_o='.obj'
afs='false'
afsroot='/afs'
alignbytes='8'
aphostname=''
api_revision='5'
api_subversion='0'
-api_version='34'
-api_versionstring='5.34.0'
-ar='ar'
+api_version='38'
+api_versionstring='5.38.0'
+ar='lib -ltcg'
archlib='$rootdir\\lib'
archlibexp='$rootdir\\lib'
archname='MSWin32-x64-multi-thread'
@@ -214,17 +213,17 @@ byteorder='1234'
c=''
castflags='0'
cat='type'
-cc='gcc'
+cc='cl'
cccdlflags=' '
ccdlflags=' '
-ccflags=' -DWIN32 -DWIN64 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY -DUSE_PERLIO -D__USE_MINGW_ANSI_STDIO -fwrapv -fno-strict-aliasing -mms-bitfields'
+ccflags='-nologo -GF -W3 -MD -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY'
ccflags_uselargefiles=''
-ccname='gcc'
+ccname='cl'
ccsymbols=''
-ccversion=''
+ccversion='19.38.33135'
cf_by='siepo'
cf_email='tex-live\@tug.org'
-cf_time='Mon Jul 11 03:22:33 2022'
+cf_time='Mon Feb 12 11:14:47 2024'
charbits='8'
chgrp=''
chmod=''
@@ -235,14 +234,14 @@ compress=''
contains='grep'
cp='copy'
cpio=''
-cpp='gcc -E'
+cpp='cl -nologo -E'
cpp_stuff='42'
cppccsymbols=''
cppflags='-DWIN32'
cpplast=''
-cppminus='-'
-cpprun='gcc -E'
-cppstdin='gcc -E'
+cppminus=''
+cpprun='cl -nologo -E'
+cppstdin='cppstdin'
cppsymbols=''
crypt_r_proto='0'
cryptlib=''
@@ -267,14 +266,14 @@ d__fwalk='undef'
d_accept4='undef'
d_access='define'
d_accessx='undef'
-d_acosh='define'
+d_acosh='undef'
d_aintl='undef'
d_alarm='define'
d_archlib='define'
d_asctime64='undef'
d_asctime_r='undef'
-d_asinh='define'
-d_atanh='define'
+d_asinh='undef'
+d_atanh='undef'
d_atolf='undef'
d_atoll='define'
d_attribute_always_inline='undef'
@@ -285,6 +284,7 @@ d_attribute_nonnull='undef'
d_attribute_noreturn='undef'
d_attribute_pure='undef'
d_attribute_unused='undef'
+d_attribute_visibility='undef'
d_attribute_warn_unused_result='undef'
d_backtrace='undef'
d_bsd='define'
@@ -296,9 +296,9 @@ d_builtin_expect='undef'
d_builtin_mul_overflow='undef'
d_builtin_sub_overflow='undef'
d_c99_variadic_macros='undef'
-d_casti32='define'
+d_casti32='undef'
d_castneg='define'
-d_cbrt='define'
+d_cbrt='undef'
d_chown='undef'
d_chroot='undef'
d_chsize='define'
@@ -306,8 +306,8 @@ d_class='undef'
d_clearenv='undef'
d_closedir='define'
d_cmsghdr_s='undef'
-d_copysign='define'
-d_copysignl='define'
+d_copysign='undef'
+d_copysignl='undef'
d_cplusplus='undef'
d_crypt='define'
d_crypt_r='undef'
@@ -356,11 +356,11 @@ d_endpwent_r='undef'
d_endsent='undef'
d_endservent_r='undef'
d_eofnblk='define'
-d_erf='define'
+d_erf='undef'
d_erfc='undef'
d_eunice='undef'
-d_exp2='define'
-d_expm1='define'
+d_exp2='undef'
+d_expm1='undef'
d_faststdio='define'
d_fchdir='undef'
d_fchmod='undef'
@@ -374,15 +374,17 @@ d_fdclose='undef'
d_fdim='undef'
d_fds_bits='define'
d_fegetround='undef'
+d_ffs='undef'
+d_ffsl='undef'
d_fgetpos='define'
-d_finite='define'
+d_finite='undef'
d_finitel='undef'
d_flexfnam='define'
d_flock='define'
d_flockproto='define'
d_fma='undef'
-d_fmax='define'
-d_fmin='define'
+d_fmax='undef'
+d_fmin='undef'
d_fork='undef'
d_fp_class='undef'
d_fp_classify='undef'
@@ -394,7 +396,7 @@ d_fpclassl='undef'
d_fpgetround='undef'
d_fpos64_t='undef'
d_freelocale='undef'
-d_frexpl='define'
+d_frexpl='undef'
d_fs_data_s='undef'
d_fseeko='undef'
d_fsetpos='define'
@@ -473,9 +475,9 @@ d_grpasswd='undef'
d_has_C_UTF8='undef'
d_hasmntopt='undef'
d_htonl='define'
-d_hypot='define'
-d_ilogb='define'
-d_ilogbl='define'
+d_hypot='undef'
+d_ilogb='undef'
+d_ilogbl='undef'
d_inc_version_list='undef'
d_index='undef'
d_inetaton='undef'
@@ -490,48 +492,48 @@ d_isascii='define'
d_isblank='undef'
d_isfinite='undef'
d_isfinitel='undef'
-d_isinf='define'
+d_isinf='undef'
d_isinfl='undef'
-d_isless='define'
+d_isless='undef'
d_isnan='define'
-d_isnanl='define'
-d_isnormal='define'
-d_j0='define'
+d_isnanl='undef'
+d_isnormal='undef'
+d_j0='undef'
d_j0l='undef'
d_killpg='define'
d_lc_monetary_2008='undef'
d_lchown='undef'
d_ldbl_dig='define'
-d_ldexpl='define'
-d_lgamma='define'
+d_ldexpl='undef'
+d_lgamma='undef'
d_lgamma_r='undef'
d_libm_lib_version='undef'
d_link='define'
d_linkat='undef'
-d_llrint='define'
-d_llrintl='define'
-d_llround='define'
-d_llroundl='define'
+d_llrint='undef'
+d_llrintl='undef'
+d_llround='undef'
+d_llroundl='undef'
d_localeconv_l='undef'
d_localtime64='undef'
d_localtime_r='undef'
d_localtime_r_needs_tzset='undef'
d_locconv='define'
d_lockf='undef'
-d_log1p='define'
-d_log2='define'
-d_logb='define'
+d_log1p='undef'
+d_log2='undef'
+d_logb='undef'
d_long_double_style_ieee='undef'
d_long_double_style_ieee_doubledouble='undef'
d_long_double_style_ieee_extended='define'
d_long_double_style_ieee_std='undef'
d_long_double_style_vax='undef'
d_longdbl='define'
-d_longlong='define'
-d_lrint='define'
-d_lrintl='define'
-d_lround='define'
-d_lroundl='define'
+d_longlong='undef'
+d_lrint='undef'
+d_lrintl='undef'
+d_lround='undef'
+d_lroundl='undef'
d_lseekproto='define'
d_lstat='define'
d_madvise='undef'
@@ -553,9 +555,9 @@ d_mkstemps='undef'
d_mktime='define'
d_mktime64='undef'
d_mmap='undef'
-d_modfl='define'
+d_modfl='undef'
d_modfl_pow32_bug='undef'
-d_modflproto='define'
+d_modflproto='undef'
d_mprotect='undef'
d_msg='undef'
d_msg_ctrunc='undef'
@@ -571,16 +573,18 @@ d_msgsnd='undef'
d_msync='undef'
d_munmap='undef'
d_mymalloc='undef'
-d_nan='define'
+d_nan='undef'
d_nanosleep='undef'
d_ndbm='undef'
d_ndbm_h_uses_prototypes='undef'
-d_nearbyint='define'
+d_nearbyint='undef'
d_newlocale='undef'
-d_nextafter='define'
-d_nexttoward='define'
+d_nextafter='undef'
+d_nexttoward='undef'
d_nice='undef'
d_nl_langinfo='undef'
+d_nl_langinfo_l='undef'
+d_non_int_bitfields='define'
d_nv_preserves_uv='undef'
d_nv_zero_is_allbits_zero='define'
d_off64_t='undef'
@@ -625,17 +629,17 @@ d_readlink='define'
d_readv='undef'
d_recvmsg='undef'
d_regcomp='undef'
-d_remainder='define'
-d_remquo='define'
+d_remainder='undef'
+d_remquo='undef'
d_rename='define'
d_renameat='undef'
d_rewinddir='define'
-d_rint='define'
+d_rint='undef'
d_rmdir='define'
-d_round='define'
+d_round='undef'
d_sbrkproto='undef'
-d_scalbn='define'
-d_scalbnl='define'
+d_scalbn='undef'
+d_scalbnl='undef'
d_sched_yield='undef'
d_scm_rights='undef'
d_seekdir='define'
@@ -648,6 +652,7 @@ d_semget='undef'
d_semop='undef'
d_sendmsg='undef'
d_setegid='undef'
+d_setenv='undef'
d_seteuid='undef'
d_setgrent='undef'
d_setgrent_r='undef'
@@ -694,7 +699,7 @@ d_siginfo_si_pid='undef'
d_siginfo_si_status='undef'
d_siginfo_si_uid='undef'
d_siginfo_si_value='undef'
-d_signbit='define'
+d_signbit='undef'
d_sigprocmask='undef'
d_sigsetjmp='undef'
d_sin6_scope_id='define'
@@ -709,7 +714,7 @@ d_socket='define'
d_socklen_t='undef'
d_sockpair='undef'
d_socks5_init='undef'
-d_sqrtl='define'
+d_sqrtl='undef'
d_srand48_r='undef'
d_srandom_r='undef'
d_sresgproto='undef'
@@ -745,6 +750,7 @@ d_strtoul='define'
d_strtoull='define'
d_strtouq='undef'
d_strxfrm='define'
+d_strxfrm_l='undef'
d_suidsafe='undef'
d_symlink='define'
d_syscall='undef'
@@ -757,7 +763,8 @@ d_tcgetpgrp='undef'
d_tcsetpgrp='undef'
d_telldir='define'
d_telldirproto='define'
-d_tgamma='define'
+d_tgamma='undef'
+d_thread_local='undef'
d_thread_safe_nl_langinfo_l='undef'
d_time='define'
d_timegm='undef'
@@ -767,9 +774,9 @@ d_tm_tm_zone='undef'
d_tmpnam_r='undef'
d_towlower='undef'
d_towupper='undef'
-d_trunc='define'
+d_trunc='undef'
d_truncate='undef'
-d_truncl='define'
+d_truncl='undef'
d_ttyname_r='undef'
d_tzname='define'
d_u32align='define'
@@ -811,7 +818,6 @@ db_version_patch='0'
default_inc_excludes_dot='define'
direntrytype='struct direct'
dlext='dll'
-dlltool='dlltool'
dlsrc='dl_win32.xs'
doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
doublekind='3'
@@ -853,7 +859,7 @@ full_csh=''
full_sed=''
gccansipedantic=''
gccosandvers=''
-gccversion='8.3.0'
+gccversion=''
getgrent_r_proto='0'
getgrgid_r_proto='0'
getgrnam_r_proto='0'
@@ -896,10 +902,11 @@ html3dir=' '
html3direxp=''
i16size='2'
i16type='short'
+i32dformat='"ld"'
i32size='4'
i32type='long'
i64size='8'
-i64type='long long'
+i64type='__int64'
i8size='1'
i8type='char'
i_arpainet='define'
@@ -968,6 +975,7 @@ i_syssockio='undef'
i_sysstat='define'
i_sysstatfs='undef'
i_sysstatvfs='undef'
+i_syssyscall='undef'
i_systime='undef'
i_systimek='undef'
i_systimes='undef'
@@ -990,7 +998,7 @@ i_xlocale='undef'
ignore_versioned_solibs=''
inc_version_list=''
inc_version_list_init='0'
-incpath='$mingdir\\include'
+incpath='"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.38.33130\\include"'
inews=''
initialinstalllocation=''
installarchlib='$rootdir\\lib'
@@ -1027,20 +1035,20 @@ intsize='4'
issymlink=''
ivdformat='"I64d"'
ivsize='8'
-ivtype='long long'
+ivtype='__int64'
known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call FindBin GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version'
ksh=''
-ld='g++'
-lddlflags='-mdll -s -L"$rootdir\\lib\\CORE" -L"$mingdir\\lib" -L"$mingdir\\x86_64-w64-mingw32\lib" -L"$mingdir\\lib\\gcc\\x86_64-w64-mingw32\\8.3.0"'
-ldflags='-s -L"rootdir\\lib\\CORE" -L"mingdir\\lib" -L"$mingdir\\x86_64-w64-mingw32\\lib" -L"$mingdir\\lib\\gcc\\x86_64-w64-mingw32\\8.3.0"'
+ld='link'
+lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"$rootdir\\lib\\CORE" -machine:AMD64 -subsystem:console,"5.02"'
+ldflags='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"$rootdir\\lib\\CORE" -machine:AMD64 -subsystem:console,"5.02"'
ldflags_uselargefiles=''
ldlibpthname=''
less='less'
-lib_ext='.a'
-libc=''
-libperl='libperl534.a'
-libpth='$mingdir\\lib $mingdir\\x86_64-w64-mingw32\lib $mingdir\\lib\\gcc\\x86_64-w64-mingw32\\8.3.0'
-libs=' -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32'
+lib_ext='.lib'
+libc='ucrt.lib'
+libperl='perl538.lib'
+libpth='"C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.38.33130\\lib\\x64"'
+libs='oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib vcruntime.lib ucrt.lib'
libsdirs=''
libsfiles=''
libsfound=''
@@ -1055,22 +1063,22 @@ lns='copy'
localtime_r_proto='0'
locincpth='/usr/local/include /opt/local/include /usr/gnu/include /opt/gnu/include /usr/GNU/include /opt/GNU/include'
loclibpth='/usr/local/lib /opt/local/lib /usr/gnu/lib /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib'
-longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00'
-longdblkind='3'
-longdblmantbits='64'
-longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00'
-longdblsize='16'
+longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
+longdblkind='0'
+longdblmantbits='52'
+longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f'
+longdblsize='8'
longlongsize='8'
longsize='4'
lp=''
lpr=''
ls='dir'
lseeksize='8'
-lseektype='long long'
+lseektype='__int64'
mad='undef'
mail=''
mailx=''
-make='gmake'
+make='nmake'
make_set_make='#'
mallocobj='malloc.o'
mallocsrc='malloc.c'
@@ -1099,7 +1107,7 @@ netdb_hlen_type='int'
netdb_host_type='char *'
netdb_name_type='char *'
netdb_net_type='long'
-nm='nm'
+nm=''
nm_opt=''
nm_so_opt=''
nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/PL2Bat ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple FindBin Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version'
@@ -1116,24 +1124,25 @@ nvmantbits='52'
nvsize='8'
nvtype='double'
o_nonblock='O_NONBLOCK'
-obj_ext='.o'
+obj_ext='.obj'
old_pthread_create_joinable=''
-optimize='-s -O2'
+optimize='-O1 -Zi -GL -fp:precise'
orderlib='false'
osname='MSWin32'
-osvers='10.0.19042.508'
+osvers='10.0.22631.3085'
otherlibdirs=''
package='perl5'
pager='more /e'
passcat=''
-patchlevel='34'
+patchlevel='38'
path_sep=';'
perl='perl'
perl5=''
perl_patchlevel=''
-perl_static_inline='static __inline__'
+perl_static_inline='static __inline'
+perl_thread_local=''
perladmin=''
-perllibs=' -lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32'
+perllibs='oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib ws2_32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib comctl32.lib msvcrt.lib vcruntime.lib ucrt.lib'
perlpath='$rootdir\\bin\\perl.exe'
pg=''
phostname='hostname'
@@ -1148,8 +1157,8 @@ privlibexp='$rootdir\\lib'
procselfexe=''
prototype='define'
ptrsize='8'
-quadkind='3'
-quadtype='long long'
+quadkind='5'
+quadtype='__int64'
randbits='48'
randfunc='Perl_drand48'
random_r_proto='0'
@@ -1164,23 +1173,23 @@ rm_try=''
rmail=''
run=''
runnm='true'
-sGMTIME_max="2147483647"
+sGMTIME_max='32535291599'
sGMTIME_min="0"
-sLOCALTIME_max="2147483647"
+sLOCALTIME_max='32535244799'
sLOCALTIME_min="0"
-sPRIEUldbl='"LE"'
-sPRIFUldbl='"LF"'
-sPRIGUldbl='"LG"'
+sPRIEUldbl='"E"'
+sPRIFUldbl='"F"'
+sPRIGUldbl='"G"'
sPRIXU64='"I64X"'
sPRId64='"I64d"'
-sPRIeldbl='"Le"'
-sPRIfldbl='"Lf"'
-sPRIgldbl='"Lg"'
+sPRIeldbl='"e"'
+sPRIfldbl='"f"'
+sPRIgldbl='"g"'
sPRIi64='"I64i"'
sPRIo64='"I64o"'
sPRIu64='"I64u"'
sPRIx64='"I64x"'
-sSCNfldbl='"Lf"'
+sSCNfldbl='"f"'
sched_yield=''
scriptdir='$rootdir\\bin'
scriptdirexp='$rootdir\\bin'
@@ -1243,25 +1252,29 @@ spitshell=''
srand48_r_proto='0'
srandom_r_proto='0'
src=''
-ssizetype='long long'
+ssizetype='__int64'
+st_dev_sign='1'
+st_dev_size='4'
st_ino_sign='1'
st_ino_size='8'
startperl='#!perl'
startsh='#!/bin/sh'
static_ext='Win32CORE'
stdchar='char'
-stdio_base='((fp)->_base)'
-stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)'
-stdio_cnt='((fp)->_cnt)'
+stdio_base='PERLIO_FILE_base(fp)'
+stdio_bufsiz='(PERLIO_FILE_cnt(fp) + PERLIO_FILE_ptr(fp) - PERLIO_FILE_base(fp))'
+stdio_cnt='PERLIO_FILE_cnt(fp)'
stdio_filbuf=''
-stdio_ptr='((fp)->_ptr)'
+stdio_ptr='PERLIO_FILE_ptr(fp)'
stdio_stream_array=''
strerror_r_proto='0'
strings='/usr/include/string.h'
submit=''
-subversion='0'
+subversion='2'
sysman='/usr/man/man1'
tail=''
+taint_disabled=''
+taint_support=''
tar=''
targetarch=''
targetsh='cmd /x /c'
@@ -1279,10 +1292,14 @@ troff=''
ttyname_r_proto='0'
u16size='2'
u16type='unsigned short'
+u32XUformat='"lX"'
+u32oformat='"lo"'
u32size='4'
u32type='unsigned long'
+u32uformat='"lu"'
+u32xformat='"lx"'
u64size='8'
-u64type='unsigned long long'
+u64type='unsigned __int64'
u8size='1'
u8type='unsigned char'
uidformat='"ld"'
@@ -1291,7 +1308,7 @@ uidsize='4'
uidtype='uid_t'
uname='uname'
uniq='uniq'
-uquadtype='unsigned long long'
+uquadtype='unsigned __int64'
use64bitall='undef'
use64bitint='define'
usecbacktrace='undef'
@@ -1328,7 +1345,7 @@ uuname=''
uvXUformat='"I64X"'
uvoformat='"I64o"'
uvsize='8'
-uvtype='unsigned long long'
+uvtype='unsigned __int64'
uvuformat='"I64u"'
uvxformat='"I64x"'
vendorarch=''
@@ -1350,11 +1367,12 @@ vendorprefix=''
vendorprefixexp=''
vendorscript=''
vendorscriptexp=''
-version='5.34.0'
-version_patchlevel_string='version 34 subversion 0'
+version='5.38.2'
+version_patchlevel_string='version 38 subversion 2'
versiononly='undef'
vi=''
xlibpth='/usr/lib/386 /lib/386'
+xlocale_needed='undef'
yacc='yacc'
yaccflags=''
zcat=''
@@ -1366,19 +1384,37 @@ foreach my $c (7,6,5,4,3,2,1) { $i <<= 8; $i |= ord($c); }
our $byteorder = join('', unpack('aaaaaaaa', pack('Q', $i)));
s/(byteorder=)(['"]).*?\2/$1$2$Config::byteorder$2/m;
+{
+ # We have to set this up late as Win32 does not build miniperl
+ # with the same defines and CC flags as it builds perl itself.
+ my $defines = join " ", (Internals::V)[0,1];
+ if (
+ $defines =~ /\b(SILENT_NO_TAINT_SUPPORT)\b/ ||
+ $defines =~ /\b(NO_TAINT_SUPPORT)\b/
+ ){
+ my $which = $1;
+ my $taint_disabled = ($which eq "SILENT_NO_TAINT_SUPPORT")
+ ? "silent" : "define";
+ s/^(taint_disabled=['"])(["'])/$1$taint_disabled$2/m;
+ }
+ else {
+ my $taint_support = 'define';
+ s/^(taint_support=['"])(["'])/$1$taint_support$2/m;
+ }
+}
my $config_sh_len = length $_;
-our $Config_SH_expanded = "\n$_" . << "EOVIRTUAL";
-ccflags_nolargefiles=' -DWIN32 -DWIN64 -DPERL_TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY -DUSE_PERLIO -D__USE_MINGW_ANSI_STDIO -fwrapv -fno-strict-aliasing -mms-bitfields'
-ldflags_nolargefiles='-s -L"$rootdir\\lib\\CORE" -L"$mingdir\\lib" -L"mingdir\\x86_64-w64-mingw32\\lib" -L"$mingdir\\lib\\gcc\\x86_64-w64-mingw32\\8.3.0"'
-libs_nolargefiles='-lmoldname -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -lnetapi32 -luuid -lws2_32 -lmpr -lwinmm -lversion -lodbc32 -lodbccp32 -lcomctl32'
+our $Config_SH_expanded = "\n$_" . << 'EOVIRTUAL';
+ccflags_nolargefiles='-nologo -GF -W3 -MD -DWIN32 -D_CONSOLE -DNO_STRICT -DWIN64 -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -D_WINSOCK_DEPRECATED_NO_WARNINGS -DPERL_TEXTMODE_SCRIPTS -DMULTIPLICITY -DPERL_IMPLICIT_SYS -DWIN32_NO_REGISTRY'
+ldflags_nolargefiles='-nologo -nodefaultlib -debug -opt:ref,icf -ltcg -libpath:"$rootdir\\lib\\CORE" -machine:AMD64 -subsystem:console,"5.02"'
+libs_nolargefiles=''
libswanted_nolargefiles=''
EOVIRTUAL
eval {
- # do not have hairy conniptions if this isnt available
- require 'Config_git.pl';
- $Config_SH_expanded .= $Config::Git_Data;
- 1;
+ # do not have hairy conniptions if this isnt available
+ require 'Config_git.pl';
+ $Config_SH_expanded .= $Config::Git_Data;
+ 1;
} or warn "Warning: failed to load Config_git.pl, something strange about this perl...\n";
# Search for it in the big string
@@ -1396,9 +1432,9 @@ sub fetch_string {
# interpolation was done before the undef. Stick to this arguably buggy
# behaviour as we're refactoring.
if ($quote_type eq '"') {
- $value =~ s/\$/\\\$/g;
- $value =~ s/\@/\\\@/g;
- eval "\$value = \"$value\"";
+ $value =~ s/\$/\\\$/g;
+ $value =~ s/\@/\\\@/g;
+ eval "\$value = \"$value\"";
}
# So we can say "if $Config{'foo'}".
@@ -1415,7 +1451,7 @@ sub FIRSTKEY {
sub NEXTKEY {
# Find out how the current key's quoted so we can skip to its end.
my $quote = substr($Config_SH_expanded,
- index($Config_SH_expanded, "=", $prevpos)+1, 1);
+ index($Config_SH_expanded, "=", $prevpos)+1, 1);
my $pos = index($Config_SH_expanded, qq($quote\n), $prevpos) + 2;
my $len = index($Config_SH_expanded, "=", $pos) - $pos;
$prevpos = $pos;
@@ -1446,23 +1482,23 @@ sub config_re {
sub config_vars {
# implements -V:cfgvar option (see perlrun -V:)
foreach (@_) {
- # find optional leading, trailing colons; and query-spec
- my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft,
- # map colon-flags to print decorations
- my $prfx = $notag ? '': "$qry="; # tag-prefix for print
- my $lnend = $lncont ? ' ' : ";\n"; # line ending for print
+ # find optional leading, trailing colons; and query-spec
+ my ($notag,$qry,$lncont) = m/^(:)?(.*?)(:)?$/; # flags fore and aft,
+ # map colon-flags to print decorations
+ my $prfx = $notag ? '': "$qry="; # tag-prefix for print
+ my $lnend = $lncont ? ' ' : ";\n"; # line ending for print
- # all config-vars are by definition \w only, any \W means regex
- if ($qry =~ /\W/) {
- my @matches = config_re($qry);
- print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag;
- print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag;
- } else {
- my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry}
- : 'UNKNOWN';
- $v = 'undef' unless defined $v;
- print "${prfx}'${v}'$lnend";
- }
+ # all config-vars are by definition \w only, any \W means regex
+ if ($qry =~ /\W/) {
+ my @matches = config_re($qry);
+ print map "$_$lnend", @matches ? @matches : "$qry: not found" if !$notag;
+ print map { s/\w+=//; "$_$lnend" } @matches ? @matches : "$qry: not found" if $notag;
+ } else {
+ my $v = (exists $Config::Config{$qry}) ? $Config::Config{$qry}
+ : 'UNKNOWN';
+ $v = 'undef' unless defined $v;
+ print "${prfx}'${v}'$lnend";
+ }
}
}
diff --git a/Master/tlpkg/tlperl/lib/Cwd.pm b/Master/tlpkg/tlperl/lib/Cwd.pm
index 6a1d2f17ee5..dbf08a6059e 100644
--- a/Master/tlpkg/tlperl/lib/Cwd.pm
+++ b/Master/tlpkg/tlperl/lib/Cwd.pm
@@ -3,7 +3,7 @@ use strict;
use Exporter;
-our $VERSION = '3.80';
+our $VERSION = '3.89';
my $xs_version = $VERSION;
$VERSION =~ tr/_//d;
@@ -181,12 +181,6 @@ if ($^O =~ /android/) {
}
my $found_pwd_cmd = defined($pwd_cmd);
-unless ($pwd_cmd) {
- # Isn't this wrong? _backtick_pwd() will fail if someone has
- # pwd in their path but it is not /bin/pwd or /usr/bin/pwd?
- # See [perl #16774]. --jhi
- $pwd_cmd = 'pwd';
-}
# Lazy-load Carp
sub _carp { require Carp; Carp::carp(@_) }
@@ -198,8 +192,14 @@ sub _backtick_pwd {
# Localize %ENV entries in a way that won't create new hash keys.
# Under AmigaOS we don't want to localize as it stops perl from
# finding 'sh' in the PATH.
- my @localize = grep exists $ENV{$_}, qw(PATH IFS CDPATH ENV BASH_ENV) if $^O ne "amigaos";
+ my @localize = grep exists $ENV{$_}, qw(IFS CDPATH ENV BASH_ENV) if $^O ne "amigaos";
local @ENV{@localize} if @localize;
+ # empty PATH is the same as "." on *nix, so localize it to /something/
+ # we won't *use* the path as code above turns $pwd_cmd into a specific
+ # executable, but it will blow up anyway under taint. We could set it to
+ # anything absolute. Perhaps "/" would be better.
+ local $ENV{PATH}= "/usr/bin"
+ if $^O ne "amigaos";
my $cwd = `$pwd_cmd`;
# Belt-and-suspenders in case someone said "undef $/".
@@ -213,26 +213,13 @@ sub _backtick_pwd {
# we take care not to override an existing definition for cwd().
unless ($METHOD_MAP{$^O}{cwd} or defined &cwd) {
- # The pwd command is not available in some chroot(2)'ed environments
- my $sep = $Config::Config{path_sep} || ':';
- my $os = $^O; # Protect $^O from tainting
-
-
- # Try again to find a pwd, this time searching the whole PATH.
- if (defined $ENV{PATH} and $os ne 'MSWin32') { # no pwd on Windows
- my @candidates = split($sep, $ENV{PATH});
- while (!$found_pwd_cmd and @candidates) {
- my $candidate = shift @candidates;
- $found_pwd_cmd = 1 if -x "$candidate/pwd";
- }
- }
-
if( $found_pwd_cmd )
{
*cwd = \&_backtick_pwd;
}
else {
- *cwd = \&getcwd;
+ # getcwd() might have an empty prototype
+ *cwd = sub { getcwd(); };
}
}
@@ -275,7 +262,7 @@ sub fastcwd_ {
($odev, $oino) = ($cdev, $cino);
CORE::chdir('..') || return undef;
($cdev, $cino) = stat('.');
- last if $odev == $cdev && $oino == $cino;
+ last if $odev == $cdev && $oino eq $cino;
opendir(DIR, '.') || return undef;
for (;;) {
$direntry = readdir(DIR);
@@ -284,7 +271,7 @@ sub fastcwd_ {
next if $direntry eq '..';
($tdev, $tino) = lstat($direntry);
- last unless $tdev != $odev || $tino != $oino;
+ last unless $tdev != $odev || $tino ne $oino;
}
closedir(DIR);
return undef unless defined $direntry; # should never happen
@@ -298,7 +285,7 @@ sub fastcwd_ {
&& CORE::chdir($1) or return undef;
($cdev, $cino) = stat('.');
die "Unstable directory path, current directory changed unexpectedly"
- if $cdev != $orig_cdev || $cino != $orig_cino;
+ if $cdev != $orig_cdev || $cino ne $orig_cino;
$path;
}
if (not defined &fastcwd) { *fastcwd = \&fastcwd_ }
@@ -315,7 +302,7 @@ sub chdir_init {
if ($ENV{'PWD'} and $^O ne 'os2' and $^O ne 'dos' and $^O ne 'MSWin32') {
my($dd,$di) = stat('.');
my($pd,$pi) = stat($ENV{'PWD'});
- if (!defined $dd or !defined $pd or $di != $pi or $dd != $pd) {
+ if (!defined $dd or !defined $pd or $di ne $pi or $dd != $pd) {
$ENV{'PWD'} = cwd();
}
}
@@ -328,7 +315,7 @@ sub chdir_init {
if ($^O ne 'MSWin32' and $ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|s) {
my($pd,$pi) = stat($2);
my($dd,$di) = stat($1);
- if (defined $pd and defined $dd and $di == $pi and $dd == $pd) {
+ if (defined $pd and defined $dd and $di ne $pi and $dd == $pd) {
$ENV{'PWD'}="$2$3";
}
}
@@ -430,7 +417,7 @@ sub _perl_abs_path
$! = $e;
return undef;
}
- if ($pst[0] == $cst[0] && $pst[1] == $cst[1])
+ if ($pst[0] == $cst[0] && $pst[1] eq $cst[1])
{
$dir = undef;
}
@@ -448,7 +435,7 @@ sub _perl_abs_path
$tst[0] = $pst[0]+1 unless (@tst = lstat("$dotdots/$dir"))
}
while ($dir eq '.' || $dir eq '..' || $tst[0] != $pst[0] ||
- $tst[1] != $pst[1]);
+ $tst[1] ne $pst[1]);
}
$cwd = (defined $dir ? "$dir" : "" ) . "/$cwd" ;
closedir(PARENT);
@@ -820,9 +807,7 @@ C<fast_abs_path()>.
=head1 AUTHOR
-Originally by the perl5-porters.
-
-Maintained by Ken Williams <KWILLIAMS@cpan.org>
+Maintained by perl5-porters <F<perl5-porters@perl.org>>.
=head1 COPYRIGHT
diff --git a/Master/tlpkg/tlperl/lib/Data/Dumper.pm b/Master/tlpkg/tlperl/lib/Data/Dumper.pm
index 267cb92aae9..bb6d3caedb2 100644
--- a/Master/tlpkg/tlperl/lib/Data/Dumper.pm
+++ b/Master/tlpkg/tlperl/lib/Data/Dumper.pm
@@ -14,10 +14,11 @@ use warnings;
#$| = 1;
-use 5.006_001;
+use 5.008_001;
require Exporter;
use constant IS_PRE_516_PERL => $] < 5.016;
+use constant SUPPORTS_CORE_BOOLS => defined &builtin::is_bool;
use Carp ();
@@ -29,7 +30,7 @@ our ( $Indent, $Trailingcomma, $Purity, $Pad, $Varname, $Useqq, $Terse, $Freezer
our ( @ISA, @EXPORT, @EXPORT_OK, $VERSION );
BEGIN {
- $VERSION = '2.179'; # Don't forget to set version and release
+ $VERSION = '2.188'; # Don't forget to set version and release
# date in POD below!
@ISA = qw(Exporter);
@@ -123,46 +124,17 @@ sub new {
# Packed numeric addresses take less memory. Plus pack is faster than sprintf
-# Most users of current versions of Data::Dumper will be 5.008 or later.
-# Anyone on 5.6.1 and 5.6.2 upgrading will be rare (particularly judging by
-# the bug reports from users on those platforms), so for the common case avoid
-# complexity, and avoid even compiling the unneeded code.
-
-sub init_refaddr_format {
-}
-
sub format_refaddr {
require Scalar::Util;
pack "J", Scalar::Util::refaddr(shift);
};
-if ($] < 5.008) {
- eval <<'EOC' or die;
- no warnings 'redefine';
- my $refaddr_format;
- sub init_refaddr_format {
- require Config;
- my $f = $Config::Config{uvxformat};
- $f =~ tr/"//d;
- $refaddr_format = "0x%" . $f;
- }
-
- sub format_refaddr {
- require Scalar::Util;
- sprintf $refaddr_format, Scalar::Util::refaddr(shift);
- }
-
- 1
-EOC
-}
-
#
# add-to or query the table of already seen references
#
sub Seen {
my($s, $g) = @_;
if (defined($g) && (ref($g) eq 'HASH')) {
- init_refaddr_format();
my($k, $v, $id);
while (($k, $v) = each %$g) {
if (defined $v) {
@@ -252,7 +224,6 @@ sub Dumpperl {
my(@out, $val, $name);
my($i) = 0;
local(@post);
- init_refaddr_format();
$s = $s->new(@_) unless ref $s;
@@ -394,7 +365,16 @@ sub _dump {
else {
$pat = "$val";
}
- $pat =~ s <(\\.)|/> { $1 || '\\/' }ge;
+ $pat =~ s <
+ (\\.) # anything backslash escaped
+ | (\$)(?![)|]|\z) # any unescaped $, except $| $) and end
+ | / # any unescaped /
+ >
+ {
+ $1 ? $1
+ : $2 ? '${\q($)}'
+ : '\\/'
+ }gex;
$out .= "qr/$pat/$flags";
}
elsif ($realtype eq 'SCALAR' || $realtype eq 'REF'
@@ -545,7 +525,7 @@ sub _dump {
else {
local $s->{useqq} = IS_PRE_516_PERL && ($s->{useqq} || $name =~ /[^\x00-\x7f]/) ? 1 : $s->{useqq};
$sname = $s->_dump(
- $name eq 'main::' || $] < 5.007 && $name eq "main::\0"
+ $name eq 'main::'
? ''
: $name,
"",
@@ -572,13 +552,32 @@ sub _dump {
elsif (!defined($val)) {
$out .= "undef";
}
+ elsif (SUPPORTS_CORE_BOOLS && do {
+ BEGIN { SUPPORTS_CORE_BOOLS and warnings->unimport("experimental::builtin") }
+ builtin::is_bool($val)
+ }) {
+ $out .= $val ? '!!1' : '!!0';
+ }
+ # This calls the XSUB _vstring (if the XS code is loaded). I'm not *sure* if
+ # if belongs in the "Pure Perl" implementation. It sort of depends on what
+ # was meant by "Pure Perl", as this subroutine already relies Scalar::Util
+ # loading, which means that it has an XS dependency. De facto, it's the
+ # "Pure Perl" implementation of dumping (which uses XS helper code), as
+ # opposed to the C implementation (which calls out to Perl helper code).
+ # So in that sense this is fine - it just happens to be a local XS helper.
elsif (defined &_vstring and $v = _vstring($val)
and !_bad_vsmg || eval $v eq $val) {
$out .= $v;
}
+ # However the confusion comes here - if we *can't* find our XS helper, we
+ # fall back to this code, which generates different (worse) results. That's
+ # better than nothing, *but* it means that if you run the regression tests
+ # with Dumper.so missing, the test for "vstrings" fails, because this code
+ # here generates a different result. So there are actually "three" different
+ # implementations of Data::Dumper (kind of sort of) but we only test two.
elsif (!defined &_vstring
and ref $ref eq 'VSTRING' || eval{Scalar::Util::isvstring($val)}) {
- $out .= sprintf "%vd", $val;
+ $out .= sprintf "v%vd", $val;
}
# \d here would treat "1\x{660}" as a safe decimal number
elsif ($val =~ /^(?:0|-?[1-9][0-9]{0,8})\z/) { # safe decimal number
@@ -748,15 +747,15 @@ my %esc = (
"\e" => "\\e",
);
-my $low_controls = ($IS_ASCII)
-
- # This includes \177, because traditionally it has been
- # output as octal, even though it isn't really a "low"
- # control
- ? qr/[\0-\x1f\177]/
-
- # EBCDIC low controls.
- : qr/[\0-\x3f]/;
+# The low controls are considered to be everything below SPACE, plus the
+# outlier \c? control (but that wasn't properly in existence in early perls,
+# so reconstruct its value here. This abandons EBCDIC support for this
+# character for perls below 5.8)
+my $low_controls = join "", map { quotemeta chr $_ } 0.. (ord(" ") - 1);
+$low_controls .= ($] < 5.008 || $IS_ASCII)
+ ? "\x7f"
+ : chr utf8::unicode_to_native(0x9F);
+my $low_controls_re = qr/[$low_controls]/;
# put a string value in double quotes
sub qquote {
@@ -766,19 +765,10 @@ sub qquote {
# This efficiently changes the high ordinal characters to \x{} if the utf8
# flag is on. On ASCII platforms, the high ordinals are all the
# non-ASCII's. On EBCDIC platforms, we don't include in these the non-ASCII
- # controls whose ordinals are less than SPACE, excluded below by the range
- # \0-\x3f. On ASCII platforms this range just compiles as part of :ascii:.
- # On EBCDIC platforms, there is just one outlier high ordinal control, and
- # it gets output as \x{}.
+ # controls.
my $bytes; { use bytes; $bytes = length }
- s/([^[:ascii:]\0-\x3f])/sprintf("\\x{%x}",ord($1))/ge
- if $bytes > length
-
- # The above doesn't get the EBCDIC outlier high ordinal control when
- # the string is UTF-8 but there are no UTF-8 variant characters in it.
- # We want that to come out as \x{} anyway. We need is_utf8() to do
- # this.
- || (! $IS_ASCII && $] ge 5.008_001 && utf8::is_utf8($_));
+ s/([^[:ascii:]$low_controls])/sprintf("\\x{%x}",ord($1))/ge
+ if $bytes > length;
return qq("$_") unless /[[:^print:]]/; # fast exit if only printables
@@ -787,21 +777,17 @@ sub qquote {
s/([\a\b\t\n\f\r\e])/$esc{$1}/g;
# no need for 3 digits in escape for octals not followed by a digit.
- s/($low_controls)(?!\d)/'\\'.sprintf('%o',ord($1))/eg;
+ s/($low_controls_re)(?!\d)/'\\'.sprintf('%o',ord($1))/eg;
# But otherwise use 3 digits
- s/($low_controls)/'\\'.sprintf('%03o',ord($1))/eg;
+ s/($low_controls_re)/'\\'.sprintf('%03o',ord($1))/eg;
# all but last branch below not supported --BEHAVIOR SUBJECT TO CHANGE--
my $high = shift || "";
if ($high eq "iso8859") { # Doesn't escape the Latin1 printables
- if ($IS_ASCII) {
- s/([\200-\240])/'\\'.sprintf('%o',ord($1))/eg;
- }
- elsif ($] ge 5.007_003) {
- my $high_control = utf8::unicode_to_native(0x9F);
- s/$high_control/sprintf('\\%o',ord($1))/eg;
- }
+ # Could use /u and [:cntrl:] etc, if khw were confident it worked in
+ # early early perls
+ s/([\200-\240])/'\\'.sprintf('%o',ord($1))/eg if $IS_ASCII;
} elsif ($high eq "utf8") {
# Some discussion of what to do here is in
# https://rt.perl.org/Ticket/Display.html?id=113088
@@ -817,10 +803,6 @@ sub qquote {
return qq("$_");
}
-# helper sub to sort hash keys in Perl < 5.8.0 where we don't have
-# access to sortsv() from XS
-sub _sortkeys { [ sort keys %{$_[0]} ] }
-
sub _refine_name {
my $s = shift;
my ($name, $val, $i) = @_;
@@ -884,7 +866,7 @@ Data::Dumper - stringified perl data structures, suitable for both printing and
}
# OO usage
- $d = Data::Dumper->new([$foo, $bar], [qw(foo *ary)]);
+ my $d = Data::Dumper->new([$foo, $bar], [qw(foo *ary)]);
...
print $d->Dump;
...
@@ -909,7 +891,7 @@ to substructures within C<$VAR>I<n> will be appropriately labeled using arrow
notation. You can specify names for individual values to be dumped if you
use the C<Dump()> method, or you can change the default C<$VAR> prefix to
something else. See C<$Data::Dumper::Varname> and C<$Data::Dumper::Terse>
-below.
+in L</Configuration Variables or Methods> below.
The default output of self-referential structures can be C<eval>ed, but the
nested references to C<$VAR>I<n> will be undefined, since a recursive
@@ -1451,12 +1433,9 @@ for L<B::Deparse>.
SCALAR objects have the weirdest looking C<bless> workaround.
-Pure Perl version of C<Data::Dumper> escapes UTF-8 strings correctly
-only in Perl 5.8.0 and later.
-
=head2 NOTE
-Starting from Perl 5.8.1 different runs of Perl will have different
+Different runs of Perl will have different
ordering of hash keys. The change was done for greater security,
see L<perlsec/"Algorithmic Complexity Attacks">. This means that
different runs of Perl will have different Data::Dumper outputs if
@@ -1476,7 +1455,7 @@ modify it under the same terms as Perl itself.
=head1 VERSION
-Version 2.179
+Version 2.188
=head1 SEE ALSO
diff --git a/Master/tlpkg/tlperl/lib/Devel/PPPort.pm b/Master/tlpkg/tlperl/lib/Devel/PPPort.pm
index f047db1b9c8..90f0e06c978 100644
--- a/Master/tlpkg/tlperl/lib/Devel/PPPort.pm
+++ b/Master/tlpkg/tlperl/lib/Devel/PPPort.pm
@@ -56,7 +56,7 @@ C<Devel::PPPort> contains two functions, C<WriteFile> and C<GetFileContents>.
C<WriteFile>'s only purpose is to write the F<ppport.h> C header file.
This file contains a series of macros and, if explicitly requested, functions
that allow XS modules to be built using older versions of Perl. Currently,
-Perl versions from 5.003_07 to 5.33.1 are supported.
+Perl versions from 5.003_07 to 5.35.9 are supported.
C<GetFileContents> can be used to retrieve the file contents rather than
writing it out.
@@ -127,7 +127,7 @@ of the would-be file rather than writing it out.
=head1 COMPATIBILITY
-F<ppport.h> supports Perl versions from 5.003_07 to 5.33.1
+F<ppport.h> supports Perl versions from 5.003_07 to 5.35.9
in threaded and non-threaded configurations.
=head2 Provided Perl compatibility API
@@ -143,6 +143,7 @@ sorted by version> for that information.)
aMY_CXT
aMY_CXT_
__ASSERT_
+ ASSUME
aTHX
aTHX_
aTHXR
@@ -437,6 +438,7 @@ sorted by version> for that information.)
Newxc
Newxz
NOOP
+ NOT_REACHED
NUM2PTR
NVef
NVff
@@ -525,6 +527,7 @@ sorted by version> for that information.)
PERL_SHORT_MAX
PERL_SHORT_MIN
PERL_SIGNALS_UNSAFE_FLAG
+ PERL_STATIC_INLINE
PERL_UCHAR_MAX
PERL_UCHAR_MIN
PERL_UINT_MAX
@@ -662,6 +665,7 @@ sorted by version> for that information.)
SV_NOSTEAL
SvNV_nomg
SvPVbyte
+ SvPVCLEAR
SvPV_const
SvPV_flags
SvPV_flags_const
@@ -873,35 +877,108 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
=over 4
-=item perl 5.33.1
-
- dMY_CXT_SV
-
-=item perl 5.33.0
+=item perl 5.35.9
+ NV_ZERO_IS_ALLBITS_ZERO
PERL_INC_VERSION_LIST
+ sv_numeq
+ sv_numeq_flags
+ sv_streq
+ sv_streq_flags
USE_C_BACKTRACE
+ WARN_EXPERIMENTAL__ARGS_ARRAY_WITH_SIGNATURES
+ WARN_EXPERIMENTAL__BUILTIN
-=item perl 5.32.0
+=item perl 5.35.8
- HAS_SOCKADDR_STORAGE
+ op_wrap_finally (marked experimental)
-=item perl 5.31.7
+=item perl 5.35.7
- HASATTRIBUTE_ALWAYS_INLINE
- HAS_ISLESS
- HAS_WCRTOMB
- sv_isa_sv (marked experimental)
- WARN_EXPERIMENTAL__ISA
+ phase_name
+
+=item perl 5.35.6
+
+ CopFILEAVn
+ sv_setpvn_fresh
+
+=item perl 5.35.5
+
+ SAVESTRLEN
+ WARN_EXPERIMENTAL__FOR_LIST
+
+=item perl 5.35.4
-=item perl 5.31.6
+ newDEFEROP (marked experimental)
+ PERL_THREAD_LOCAL
+ ST_DEV_SIGN
+ ST_DEV_SIZE
+ SvIsBOOL
+ sv_setbool
+ sv_setbool_mg
+ sv_setrv_inc
+ sv_setrv_inc_mg
+ sv_setrv_noinc
+ sv_setrv_noinc_mg
+ WARN_EXPERIMENTAL__DEFER
+
+=item perl 5.35.1
+
+ av_new_alloc
+ HAS_FFS
+ HAS_FFSL
+ HAS_NL_LANGINFO_L
+ HAS_NON_INT_BITFIELDS
+ HAS_STRXFRM_L
+ newAV_alloc_x
+ newAV_alloc_xz
+
+=item perl 5.33.8
+
+ cophh_exists_pv (marked experimental)
+ cophh_exists_pvn (marked experimental)
+ cophh_exists_pvs (marked experimental)
+ cophh_exists_sv (marked experimental)
+ cop_hints_exists_pv
+ cop_hints_exists_pvn
+ cop_hints_exists_pvs
+ cop_hints_exists_sv
+
+=item perl 5.33.7
+
+ newTRYCATCHOP (marked experimental)
+ WARN_EXPERIMENTAL__TRY
+
+=item perl 5.33.5
+
+ GETENV_PRESERVES_OTHER_THREAD
+ pad_compname_type (DEPRECATED)
+
+=item perl 5.33.2
+
+ pack_cat (DEPRECATED)
+
+=item perl 5.32.1
GDBMNDBM_H_USES_PROTOTYPES
HAS_DBMINIT_PROTO
+ HAS_SOCKADDR_STORAGE
I_DBM
I_NDBM
NDBM_H_USES_PROTOTYPES
+=item perl 5.31.9
+
+ UNI_DISPLAY_BACKSPACE
+
+=item perl 5.31.7
+
+ HASATTRIBUTE_ALWAYS_INLINE
+ HAS_ISLESS
+ HAS_WCRTOMB
+ sv_isa_sv (marked experimental)
+ WARN_EXPERIMENTAL__ISA
+
=item perl 5.31.5
isALPHANUMERIC_utf8
@@ -928,10 +1005,11 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
=item perl 5.31.4
- sv_2pvbyte_flags
+ cop_fetch_label (marked experimental)
+ cop_store_label (marked experimental)
+ sv_2pvbyte_flags (undocumented)
sv_2pvutf8_flags (undocumented)
- SvAMAGIC_off
- SvAMAGIC_on
+ sv_nolocking (DEPRECATED)
SvPVbyte_nomg
SvPVbyte_or_null
SvPVbyte_or_null_nomg
@@ -1025,12 +1103,14 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
=item perl 5.27.2
Perl_setlocale
+ UNICODE_DISALLOW_PERL_EXTENDED
+ UNICODE_WARN_PERL_EXTENDED
UTF8_DISALLOW_PERL_EXTENDED
+ UTF8_GOT_PERL_EXTENDED
UTF8_WARN_PERL_EXTENDED
=item perl 5.27.1
- bytes_from_utf8_loc (marked experimental) (undocumented)
is_utf8_invariant_string_loc
=item perl 5.25.11
@@ -1080,6 +1160,15 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
is_utf8_string_loclen_flags
SvPVCLEAR
sv_setpv_bufsize
+ UTF8_GOT_CONTINUATION
+ UTF8_GOT_EMPTY
+ UTF8_GOT_LONG
+ UTF8_GOT_NONCHAR
+ UTF8_GOT_NON_CONTINUATION
+ UTF8_GOT_OVERFLOW
+ UTF8_GOT_SHORT
+ UTF8_GOT_SUPER
+ UTF8_GOT_SURROGATE
utf8n_to_uvchr_error
=item perl 5.25.5
@@ -1089,6 +1178,8 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
isUTF8_CHAR_flags
is_utf8_valid_partial_char
is_utf8_valid_partial_char_flags
+ UNICODE_DISALLOW_ILLEGAL_C9_INTERCHANGE
+ UNICODE_WARN_ILLEGAL_C9_INTERCHANGE
UTF8_DISALLOW_ILLEGAL_C9_INTERCHANGE
UTF8_WARN_ILLEGAL_C9_INTERCHANGE
@@ -1137,7 +1228,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
HAS_SIGINFO_SI_UID
HAS_SIGINFO_SI_VALUE
leave_adjust_stacks (marked experimental) (undocumented)
- savetmps (marked experimental) (undocumented)
+ Perl_savetmps (undocumented)
=item perl 5.23.6
@@ -1145,6 +1236,8 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_BE_LE
LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_BE
LONG_DOUBLE_IS_DOUBLEDOUBLE_128_BIT_LE_LE
+ UNICODE_DISALLOW_ABOVE_31_BIT
+ UNICODE_WARN_ABOVE_31_BIT
=item perl 5.23.5
@@ -1161,9 +1254,12 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
I_SYS_STATVFS
I_SYS_VFS
I_USTAT
+ sv_ref
=item perl 5.23.2
+ INT64_C
+ UINT64_C
UTF8_IS_NONCHAR
UTF8_IS_SUPER
UTF8_IS_SURROGATE
@@ -1219,6 +1315,8 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
=item perl 5.21.6
+ block_end
+ block_start
DOUBLE_IS_IEEE_754_128_BIT_BIG_ENDIAN
DOUBLE_IS_IEEE_754_128_BIT_LITTLE_ENDIAN
DOUBLE_IS_IEEE_754_32_BIT_BIG_ENDIAN
@@ -1264,6 +1362,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
HAS_SCALBN
HAS_TGAMMA
HAS_TRUNC
+ intro_my
newDEFSVOP
op_convert_list
WARN_LOCALE
@@ -1297,6 +1396,14 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
I_FENV
isinfnan
I_STDINT
+ Perl_acos
+ Perl_asin
+ Perl_atan
+ Perl_cosh
+ Perl_log10
+ Perl_sinh
+ Perl_tan
+ Perl_tanh
=item perl 5.21.3
@@ -1310,6 +1417,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
LONG_DOUBLE_IS_X86_80_BIT_BIG_ENDIAN
LONG_DOUBLE_IS_X86_80_BIT_LITTLE_ENDIAN
LONG_DOUBLEKIND
+ Perl_ldexp
=item perl 5.21.2
@@ -1328,7 +1436,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
HAS_WCSXFRM
I_EXECINFO
markstack_grow (undocumented)
- WARN_EXPERIMENTAL__WIN32_PERLIO
=item perl 5.19.10
@@ -1365,8 +1472,12 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
=item perl 5.19.1
toFOLD
+ toFOLD_A
+ toLOWER_A
toLOWER_L1
toTITLE
+ toTITLE_A
+ toUPPER_A
=item perl 5.18.0
@@ -1460,9 +1571,9 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
=item perl 5.15.4
- gv_autoload_pv
- gv_autoload_pvn
- gv_autoload_sv
+ gv_autoload_pv (undocumented)
+ gv_autoload_pvn (undocumented)
+ gv_autoload_sv (undocumented)
gv_fetchmethod_pv_flags (marked experimental) (undocumented)
gv_fetchmethod_pvn_flags (marked experimental) (undocumented)
gv_fetchmethod_sv_flags (marked experimental) (undocumented)
@@ -1485,7 +1596,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
sv_does_pv
sv_does_pvn
sv_does_sv
- sv_ref
whichsig_pv
whichsig_pvn
whichsig_sv
@@ -1502,21 +1612,24 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
ST_INO_SIGN
ST_INO_SIZE
- XS_EXTERNAL
- XS_INTERNAL
+ XS_EXTERNAL (undocumented)
+ XS_INTERNAL (undocumented)
=item perl 5.15.1
- cop_fetch_label (marked experimental)
- cop_store_label (marked experimental)
+ cv_clone
+ pad_add_anon
pad_add_name_pv
pad_add_name_pvn
pad_add_name_pvs
pad_add_name_sv
+ pad_alloc (marked experimental)
pad_findmy_pv
pad_findmy_pvn
pad_findmy_pvs
pad_findmy_sv
+ pad_new
+ pad_tidy (marked experimental)
=item perl 5.13.10
@@ -1528,6 +1641,16 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
HAS_SIN6_SCOPE_ID
PERL_PV_ESCAPE_NONASCII
+ UNICODE_DISALLOW_ILLEGAL_INTERCHANGE
+ UNICODE_DISALLOW_NONCHAR
+ UNICODE_DISALLOW_SUPER
+ UNICODE_DISALLOW_SURROGATE
+ UNICODE_IS_NONCHAR
+ UNICODE_IS_SUPER
+ UNICODE_WARN_ILLEGAL_INTERCHANGE
+ UNICODE_WARN_NONCHAR
+ UNICODE_WARN_SUPER
+ UNICODE_WARN_SURROGATE
UTF8_DISALLOW_ILLEGAL_INTERCHANGE
UTF8_DISALLOW_NONCHAR
UTF8_DISALLOW_SUPER
@@ -1570,9 +1693,9 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
cop_hints_fetch_pvn
cop_hints_fetch_pvs
cop_hints_fetch_sv
- custom_op_register
dirp_dup (undocumented)
HvENAME
+ lex_start (marked experimental)
newFOROP
newWHILEOP
OP_CLASS
@@ -1582,6 +1705,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
parse_block (marked experimental)
parse_label (marked experimental)
PARSE_OPTIONAL
+ Perl_custom_op_register (undocumented)
PL_phase
XopDISABLE
XopENABLE
@@ -1600,6 +1724,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
gv_fetchpvn
lex_stuff_pv (marked experimental)
LINKLIST
+ load_module_nocontext
mg_free_type
newSVpv_share
op_append_elem
@@ -1612,6 +1737,8 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
rv2cv_op_cv
RV2CVOPCV_MARK_EARLY
RV2CVOPCV_RETURN_NAME_GV
+ save_pushi32ptr (undocumented)
+ save_pushptrptr (undocumented)
savesharedpvs
savesharedsvpv
sv_catpv_flags
@@ -1628,9 +1755,11 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
=item perl 5.13.5
+ hv_copy_hints_hv
lex_stuff_pvs (marked experimental)
parse_fullstmt (marked experimental)
PL_rpeepp
+ save_hints (undocumented)
=item perl 5.13.4
@@ -1640,16 +1769,16 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
=item perl 5.13.3
- blockhook_register (marked experimental)
+ Perl_blockhook_register (undocumented)
=item perl 5.13.2
- clone_params_del (undocumented)
- clone_params_new (undocumented)
find_rundefsv
foldEQ
foldEQ_locale
- hv_fill
+ Perl_clone_params_del (undocumented)
+ Perl_clone_params_new (undocumented)
+ Perl_hv_fill (undocumented)
sv_dec_nomg
sv_dup_inc (undocumented)
sv_inc_nomg
@@ -1691,11 +1820,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
LEX_STUFF_UTF8
lex_unstuff (marked experimental)
PL_keyword_plugin (marked experimental)
-
-=item perl 5.11.1
-
- ck_warner
- ck_warner_d
+ toLOWER_LATIN1
=item perl 5.11.0
@@ -1711,6 +1836,8 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
save_aelem_flags (undocumented)
save_hdelete (undocumented)
save_helem_flags (undocumented)
+ setdefout
+ SV_FORCE_UTF8_UPGRADE
SvOOK_offset
SVt_REGEXP
sv_utf8_upgrade_flags_grow
@@ -1727,28 +1854,21 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
HAS_INETNTOP
HAS_INETPTON
HAS_TIMEGM
+ HvMROMETA
I_SYS_POLL
LOCALTIME_MAX
LOCALTIME_MIN
- mro_get_from_name (undocumented)
- mro_get_private_data
- mro_register
- mro_set_mro (undocumented)
- mro_set_private_data
- MUTABLE_AV
- MUTABLE_CV
- MUTABLE_GV
- MUTABLE_HV
- MUTABLE_IO
+ MRO_GET_PRIVATE_DATA
NV_OVERFLOWS_INTEGERS_AT
+ Perl_mro_get_from_name (undocumented)
+ Perl_mro_register (undocumented)
+ Perl_mro_set_mro (undocumented)
+ Perl_mro_set_private_data (undocumented)
PERL_USE_DEVEL
SAVEFREEOP
- save_hints (undocumented)
save_op (undocumented)
save_padsv_and_mortalize (undocumented)
- save_pushi32ptr (undocumented)
save_pushptr (undocumented)
- save_pushptrptr (undocumented)
sv_insert_flags
=item perl 5.10.0
@@ -1792,29 +1912,28 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
HAS_TMPNAM_R
HAS_TTYNAME_R
LOCALTIME_R_NEEDS_TZSET
- my_cxt_init (undocumented)
START_MY_CXT
sv_destroyable
USE_ITHREADS
+ UVf (DEPRECATED)
=item perl 5.9.5
- av_create_and_push (marked experimental)
- av_create_and_unshift_one (marked experimental)
CopLABEL
+ find_runcv
gv_fetchfile_flags
HAS_CTERMID
HAS_PTHREAD_YIELD
HAS_SIGNBIT
- lex_start (marked experimental)
L_R_TZSET
mro_get_linear_isa
mro_method_changed_in
my_dirfd (undocumented)
+ Perl_av_create_and_push (undocumented)
+ Perl_av_create_and_unshift_one (undocumented)
Perl_signbit (marked experimental)
pregcomp
PRINTF_FORMAT_NULL_OK
- ptr_table_clear (DEPRECATED) (undocumented)
ptr_table_fetch (undocumented)
ptr_table_free (undocumented)
ptr_table_new (undocumented)
@@ -1831,13 +1950,13 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
GV_NOTQUAL
HAS_BUILTIN_CHOOSE_EXPR
HAS_C99_VARIADIC_MACROS
- hv_copy_hints_hv
my_vsnprintf
newXS_flags (marked experimental) (undocumented)
- PerlIO_context_layers (undocumented)
PERL_MAGIC_hints
PERL_MAGIC_hintselem
+ Perl_PerlIO_context_layers (undocumented)
sv_does
+ sv_nounlocking (DEPRECATED)
sv_usepvn_flags
=item perl 5.9.3
@@ -1860,28 +1979,31 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
HAS_SNPRINTF
HAS_UNSETENV
HAS_VSNPRINTF
- hv_eiter_p (undocumented)
- hv_eiter_set (undocumented)
hv_name_set (undocumented)
- hv_placeholders_get (undocumented)
- hv_placeholders_set (undocumented)
- hv_riter_p (undocumented)
- hv_riter_set (undocumented)
is_utf8_string_loclen
LIBM_LIB_VERSION
MULTICALL
newGIVENOP
newSVhek
- NV_ZERO_IS_ALLBITS_ZERO
- pad_compname_type (DEPRECATED)
- PERLIO_FUNCS_DECL
+ Perl_hv_eiter_p (undocumented)
+ Perl_hv_eiter_set (undocumented)
+ Perl_hv_placeholders_get (undocumented)
+ Perl_hv_placeholders_set (undocumented)
+ Perl_hv_riter_p (undocumented)
+ Perl_hv_riter_set (undocumented)
+ PERLIO_FUNCS_DECL (undocumented)
PERL_MAGIC_arylen_p
PERL_MAGIC_rhash
PERL_MAGIC_symtab
POP_MULTICALL
savepvs
+ seed (undocumented)
+ share_hek (undocumented)
sortsv_flags
- SvPV_shrink_to_cur
+ SvPVbytex_nolen
+ SvPV_free
+ SvPVx_const
+ SvPVx_nolen
vverify
=item perl 5.9.2
@@ -1898,6 +2020,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
hv_clear_placeholders
hv_scalar
+ Perl_ceil
scan_version
sv_2iv_flags
sv_2uv_flags
@@ -1914,6 +2037,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
MY_CXT_INIT
new_version
parser_dup (undocumented)
+ Perl_my_cxt_init (undocumented)
_pMY_CXT
pMY_CXT
pMY_CXT_
@@ -1923,9 +2047,14 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
vnumify
vstringify
+=item perl 5.8.9
+
+ Perl_hv_assert (undocumented)
+
=item perl 5.8.8
__ASSERT_
+ rvpv_dup (undocumented)
=item perl 5.8.3
@@ -1935,7 +2064,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
=item perl 5.8.1
CvPADLIST (marked experimental)
- find_runcv
HAS_COPYSIGNL
HAS_FAST_STDIO
HAS_ILOGBL
@@ -1945,13 +2073,9 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
IN_PERL_RUNTIME
is_utf8_string_loc
packlist
- pad_add_anon
- pad_new
- pad_tidy (marked experimental)
PL_comppad (marked experimental)
SAVEBOOL
savestack_grow_cnt (undocumented)
- seed (undocumented)
sv_cat_decode
sv_setpviv (DEPRECATED)
sv_setpviv_mg (DEPRECATED)
@@ -2019,14 +2143,10 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
=item perl 5.7.3
- ckWARN3
- ckWARN3_d
- ckWARN4
- ckWARN4_d
+ atfork_lock (undocumented)
+ atfork_unlock (undocumented)
custom_op_desc (DEPRECATED)
custom_op_name (DEPRECATED)
- deb (undocumented)
- deb_nocontext (undocumented)
debstack (undocumented)
debstackptrs (undocumented)
foldEQ_utf8
@@ -2045,10 +2165,8 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
my_socketpair (undocumented)
OP_DESC
OP_NAME
- pack_cat (DEPRECATED)
- packWARN2
- packWARN3
- packWARN4
+ Perl_deb (undocumented)
+ Perl_deb_nocontext (undocumented)
perl_destruct
PERL_EXIT_DESTRUCT_END
PerlIO_clearerr
@@ -2056,12 +2174,12 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
PerlIO_eof
PerlIO_error
PerlIO_fileno
- PerlIO_fill (undocumented)
PerlIO_flush
PerlIO_get_base
PerlIO_get_bufsiz
PerlIO_get_cnt
PerlIO_get_ptr
+ PERLIO_K_MULTIARG
PerlIO_read
PerlIO_seek
PerlIO_set_cnt
@@ -2073,10 +2191,11 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
PerlIO_tell
PerlIO_unread (undocumented)
PerlIO_write
+ Perl_isfinite
+ Perl_isinf
PL_peepp
PROCSELFEXE_PATH
pv_uni_display
- rvpv_dup (undocumented)
savesharedpv
save_shared_pvref (undocumented)
si_dup (undocumented)
@@ -2086,22 +2205,21 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
sv_dup (undocumented)
SvLOCK
sv_magicext
- sv_nolocking (DEPRECATED)
sv_nosharing
- sv_nounlocking (DEPRECATED)
sv_recode_to_utf8
SvSHARE
sv_uni_display
SvUNLOCK
+ UNI_DISPLAY_BACKSLASH
+ UNI_DISPLAY_ISPRINT
+ UNI_DISPLAY_QQ
+ UNI_DISPLAY_REGEX
unpack_str (DEPRECATED)
uvchr_to_utf8_flags
vdeb (undocumented)
=item perl 5.7.2
- atfork_lock (undocumented)
- atfork_unlock (undocumented)
- calloc
DB_VERSION_MAJOR_CFG
DB_VERSION_MINOR_CFG
DB_VERSION_PATCH_CFG
@@ -2115,18 +2233,21 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
HAS_USLEEP_PROTO
I_LANGINFO
init_tm (undocumented)
- malloc
- mfree (undocumented)
mini_mktime
- my_strftime
op_null
OSVERS
+ Perl_calloc (undocumented)
+ Perl_malloc (undocumented)
+ Perl_mfree (undocumented)
+ Perl_my_strftime (undocumented)
+ Perl_realloc (undocumented)
PERL_TARGETARCH
- realloc
sv_catpvn_flags
sv_catsv_flags
sv_utf8_upgrade_flags
sv_utf8_upgrade_nomg
+ U_32
+ UNICODE_IS_REPLACEMENT
=item perl 5.7.1
@@ -2167,9 +2288,27 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
PerlIO_apply_layers
PerlIO_binmode
PerlIO_debug
- PERLIO_FUNCS_CAST
+ PERLIO_F_APPEND
+ PERLIO_F_CANREAD
+ PERLIO_F_CANWRITE
+ PERLIO_F_CRLF
+ PERLIO_F_EOF
+ PERLIO_F_ERROR
+ PERLIO_F_FASTGETS
+ PERLIO_F_LINEBUF
+ PERLIO_F_OPEN
+ PERLIO_F_RDBUF
+ PERLIO_F_TEMP
+ PERLIO_F_TRUNCATE
+ PERLIO_F_UNBUF
+ PERLIO_F_UTF8
+ PERLIO_F_WRBUF
+ PERLIO_K_BUFFERED
+ PERLIO_K_CANCRLF
+ PERLIO_K_FASTGETS
+ PERLIO_K_RAW
+ Perl_printf_nocontext (undocumented)
POPpbytex
- printf_nocontext (DEPRECATED) (undocumented)
SAVEMORTALIZESV
SIG_SIZE
STDIO_PTR_LVAL_SETS_CNT
@@ -2178,6 +2317,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
sv_unref_flags
sv_utf8_upgrade
U32_ALIGNMENT_REQUIRED
+ UNICODE_IS_SURROGATE
USE_PERLIO
UTF8_CHECK_ONLY
utf8_length
@@ -2185,6 +2325,14 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
uvchr_to_utf8
UVXf
+=item perl 5.7.0
+
+ FILE_base
+ FILE_bufsiz
+ FILE_cnt
+ FILE_ptr
+ PerlIO_fill (undocumented)
+
=item perl 5.6.1
apply_attrs_string (marked experimental) (undocumented)
@@ -2200,6 +2348,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
is_utf8_string
NV_PRESERVES_UV_BITS
NVSIZE
+ Perl_isnan
PERL_PRIeldbl
PERL_SCNfldbl
save_generic_pvref (undocumented)
@@ -2214,13 +2363,9 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
av_exists
call_atexit (undocumented)
caller_cx
- ckWARN2
- ckWARN2_d
- ckWARN_d
CopLINE
CPPLAST
CPPRUN
- die_nocontext
do_open9 (DEPRECATED) (undocumented)
DO_UTF8
Drand01
@@ -2230,8 +2375,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
dump_packsubs
dump_sub (undocumented)
FFLUSH_NULL
- form_nocontext
- fprintf_nocontext (DEPRECATED) (undocumented)
get_context (undocumented)
get_ppaddr (undocumented)
Gid_t_f
@@ -2333,7 +2476,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
I_SYSLOG
I_SYSUIO
I_SYSUTSNAME
- load_module_nocontext
LSEEKSIZE
magic_dump (undocumented)
Mmap_t
@@ -2342,17 +2484,28 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
my_fflush_all (undocumented)
newANONATTRSUB (undocumented)
newATTRSUB
- newSVpvf_nocontext
newXS
newXSproto
Off_t_size
op_dump
OPpEARLY_CV
+ PERL_ASYNC_CHECK
+ Perl_atan2
+ Perl_cos
PERL_EXIT_EXPECTED
+ Perl_exp
+ Perl_floor
+ Perl_fmod
+ Perl_frexp
+ Perl_log
+ Perl_modf
perl_parse
+ Perl_pow
PERL_PRIfldbl
PERL_PRIgldbl
PERL_REVISION (DEPRECATED)
+ Perl_sin
+ Perl_sqrt
PERL_SYS_INIT3
PHOSTNAME
PL_check
@@ -2373,6 +2526,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
safesysrealloc
save_alloc (undocumented)
SAVEDESTRUCTOR
+ SAVEDESTRUCTOR_X
SAVEI8
save_vptr (undocumented)
scan_bin
@@ -2387,14 +2541,12 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
Strtol
Strtoul
sv_2pvutf8
- sv_catpvf_mg_nocontext
- sv_catpvf_nocontext
sv_force_normal
SvIOK_notUV
SvIOK_only_UV
SvIOK_UV
sv_len_utf8
- sv_len_utf8_nomg (undocumented)
+ sv_len_utf8_nomg
SvPOK_only_UTF8
sv_pos_b2u
sv_pos_u2b
@@ -2407,8 +2559,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
SvPVutf8x
SvPVutf8x_force
sv_rvweaken
- sv_setpvf_mg_nocontext
- sv_setpvf_nocontext
SvUOK
sv_utf8_decode
sv_utf8_downgrade
@@ -2450,9 +2600,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
UTF8SKIP
vcroak
vform
- vwarn
- vwarner
- warn_nocontext
=item perl 5.005_03
@@ -2461,6 +2608,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
POPpx
save_generic_svref (undocumented)
SELECT_MIN_BITS
+ SvTIED_obj
USE_STAT_BLOCKS
=item perl 5.005
@@ -2524,11 +2672,15 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
Pid_t
PL_curpad (marked experimental)
PL_in_my_stash (undocumented)
+ PL_maxsysfd
PL_modglobal
+ PL_restartop
PTRSIZE
PWPASSWD
+ regdump (undocumented)
sv_peek (undocumented)
sv_pvn_nomg (DEPRECATED) (undocumented)
+ SvPVx_force
=item perl 5.004_05
@@ -2546,12 +2698,9 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
ARCHNAME
BIN_EXP
- block_end
block_gimme (undocumented)
- block_start
call_list (undocumented)
delimcpy
- form
GIMME_V
gv_autoload4
gv_fetchmethod_autoload
@@ -2570,7 +2719,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
IN_LOCALE
IN_LOCALE_COMPILETIME
IN_LOCALE_RUNTIME
- intro_my
isALNUM_LC
isALPHA_LC
isALPHANUMERIC_LC
@@ -2582,11 +2730,19 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
isSPACE_LC
isUPPER_LC
isWORDCHAR_LC
- mess
- mess_nocontext
+ JMPENV_JUMP
mess_sv
my_failure_exit (undocumented)
- newSVpvf
+ Perl_ck_warner (undocumented)
+ Perl_ck_warner_d (undocumented)
+ Perl_form (undocumented)
+ Perl_mess (undocumented)
+ Perl_newSVpvf (undocumented)
+ Perl_sv_catpvf (undocumented)
+ Perl_sv_catpvf_mg (undocumented)
+ Perl_sv_setpvf (undocumented)
+ Perl_sv_setpvf_mg (undocumented)
+ Perl_warner (undocumented)
Perl_warner_nocontext (undocumented)
PL_mess_sv (undocumented)
POPu
@@ -2595,17 +2751,12 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
save_gp
SAVEI16
SAVESTACK_POS
- share_hek (undocumented)
SHORTSIZE
- sv_catpvf
- sv_catpvf_mg
sv_cmp_locale
sv_derived_from
sv_magic_portable (undocumented)
SvSetMagicSV
SvSetMagicSV_nosteal
- sv_setpvf
- sv_setpvf_mg
SvSetSV_nosteal
SvTAINTED
SvTAINTED_off
@@ -2620,25 +2771,25 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
toLOWER_LC
vmess
vnewSVpvf
- warner
- warner_nocontext
+ vwarner
=item perl 5.003_07 (or maybe earlier)
amagic_call (undocumented)
ARCHLIB
ARCHLIB_EXP
+ ASSUME
aTHX
aTHX_
aTHXR (undocumented)
aTHXR_ (undocumented)
+ AvARRAY
av_clear
av_count
av_extend
av_fetch
av_fill
AvFILL
- AvFILLp
av_len
av_make
av_pop
@@ -2665,6 +2816,13 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
CAT2
cBOOL
ckWARN
+ ckWARN2
+ ckWARN2_d
+ ckWARN3
+ ckWARN3_d
+ ckWARN4
+ ckWARN4_d
+ ckWARN_d
CLASS
CopFILE
CopFILEAV
@@ -2681,16 +2839,12 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
CPERLscope (DEPRECATED)
CPPMINUS
CPPSTDIN
- croak
- croak_memory_wrap (undocumented)
- croak_nocontext
croak_no_modify
croak_sv
croak_xs_usage
CSH
- cv_clone
cv_const_sv
- CvDEPTH
+ CvDEPTH (undocumented)
CvGV
CvSTASH
cv_undef
@@ -2700,16 +2854,18 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
DB_Prefix_t
DEFSV
DEFSV_set
- die
die_sv
Direntry_t
dITEMS
dMARK
+ dMY_CXT_SV
dNOOP
do_close (undocumented)
do_join (undocumented)
do_open (undocumented)
dORIGMARK
+ do_sprintf (undocumented)
+ dounwind (undocumented)
dowantarray (undocumented)
dSP
dTARGET
@@ -2732,10 +2888,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
eval_sv
EXTEND
EXTERN_C
- FILE_base
- FILE_bufsiz
- FILE_cnt
- FILE_ptr
filter_add
filter_del (undocumented)
filter_read
@@ -2743,7 +2895,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
Fpos_t
Free_t
FREETMPS
- G_ARRAY
Gconvert
G_DISCARD
get_av
@@ -2756,6 +2907,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
Gid_t
GIMME (DEPRECATED)
G_KEEPERR
+ G_LIST
G_METHOD
G_NOARGS
gp_free (undocumented)
@@ -2914,12 +3066,12 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
hv_ksplit (undocumented)
hv_magic
HvNAME
- HvNAME_get
HvNAMELEN_get
hv_store
hv_store_ent
hv_stores
hv_undef
+ I_32
ibcmp
I_DIRENT
I_DLFCN
@@ -2928,7 +3080,9 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
I_NETINET_IN
IN_PERL_COMPILETIME
instr
+ INT16_C
INT2PTR
+ INT32_C
INTMAX_C
INTSIZE
I_PWD
@@ -3020,9 +3174,10 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
I_TIME
I_UNISTD
I_UTIME
+ I_V
IVdf
- IV_MAX (undocumented)
- IV_MIN (undocumented)
+ IV_MAX
+ IV_MIN
IVSIZE
IVTYPE
ix
@@ -3042,6 +3197,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
memEQs
memNE
memNEs
+ memzero
mg_clear
mg_copy
mg_find
@@ -3058,6 +3214,11 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
mPUSHp
mPUSHs
mPUSHu
+ MUTABLE_AV
+ MUTABLE_CV
+ MUTABLE_GV
+ MUTABLE_HV
+ MUTABLE_IO
MUTABLE_PTR
MUTABLE_SV
mXPUSHi
@@ -3069,7 +3230,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
my_pclose (undocumented)
my_popen (undocumented)
my_setenv
- my_snprintf
my_sprintf (DEPRECATED)
my_strlcat
my_strlcpy
@@ -3103,7 +3263,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
newPROG (undocumented)
newPVOP
newRANGE
- newRV (undocumented)
+ newRV
newRV_inc
newRV_noinc
newSLICEOP
@@ -3124,7 +3284,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
newSVREF (undocumented)
newSVrv
newSVsv
- newSVsv_flags (undocumented)
+ newSVsv_flags
newSVsv_nomg
newSV_type
newSVuv
@@ -3134,12 +3294,12 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
Newxz
ninstr
NOOP
+ NOT_REACHED (undocumented)
Nullav (DEPRECATED)
Nullch
Nullcv (DEPRECATED)
Nullhv (DEPRECATED)
Nullsv
- NUM2PTR
NVef
NVff
NVgf
@@ -3156,10 +3316,15 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
ORIGMARK
OSNAME
packWARN
- pad_alloc (marked experimental)
+ packWARN2
+ packWARN3
+ packWARN4
PERL_ABS
perl_alloc
+ PERL_BCDVERSION (undocumented)
perl_construct
+ Perl_croak (undocumented)
+ Perl_die (undocumented)
Perl_eval_pv (undocumented)
Perl_eval_sv (undocumented)
perl_free
@@ -3231,6 +3396,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
PERL_MAGIC_uvar_elem
PERL_MAGIC_vec
PERL_MAGIC_vstring
+ Perl_my_snprintf (undocumented)
PERL_PV_ESCAPE_ALL
PERL_PV_ESCAPE_FIRSTCHAR
PERL_PV_ESCAPE_NOBACKSLASH
@@ -3239,12 +3405,9 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
PERL_PV_ESCAPE_RE
PERL_PV_ESCAPE_UNI
PERL_PV_ESCAPE_UNI_DETECT
- PERL_PV_PRETTY_DUMP
PERL_PV_PRETTY_ELLIPSES
PERL_PV_PRETTY_LTGT
- PERL_PV_PRETTY_NOCLEAR
PERL_PV_PRETTY_QUOTE
- PERL_PV_PRETTY_REGPROP
PERL_QUAD_MAX
PERL_QUAD_MIN
perl_run
@@ -3279,6 +3442,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
PERL_VERSION_GT
PERL_VERSION_LE
PERL_VERSION_LT
+ Perl_warn (undocumented)
PL_bufend (undocumented)
PL_bufptr (undocumented)
PL_compiling (undocumented)
@@ -3286,14 +3450,10 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
PL_curcop
PL_curstash
PL_DBsignal (undocumented)
- PL_DBsingle
- PL_DBsub
- PL_DBtrace
PL_debstash (undocumented)
PL_defgv
PL_diehook (undocumented)
PL_dirty (undocumented)
- PL_dowarn
PL_errgv
PL_error_count (undocumented)
PL_expect (undocumented)
@@ -3317,7 +3477,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
PL_stack_sp (undocumented)
PL_statcache (undocumented)
PL_stdingv (undocumented)
- PL_Sv
PL_sv_arenaroot (undocumented)
PL_sv_no
PL_sv_undef
@@ -3347,7 +3506,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
PTR2NV
PTR2ul
PTR2UV
- PTRV
+ PTRV (undocumented)
PUSHi
PUSHMARK
PUSHmortal
@@ -3396,7 +3555,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
scan_hex
scan_oct
Select_fd_set_t
- setdefout
Shmat_t
SH_PATH
Sigjmp_buf
@@ -3435,10 +3593,8 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
sv_2io
sv_2mortal
sv_2pvbyte
- sv_2pvbyte_nolen
- sv_2pv_flags
- sv_2pv_nolen
- sv_2uv (undocumented)
+ SvAMAGIC_off (undocumented)
+ SvAMAGIC_on (undocumented)
sv_backoff
sv_bless
sv_catpv
@@ -3522,7 +3678,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
SvPV_const
SvPV_flags
SvPV_flags_const
- SvPV_flags_const_nolen
SvPV_flags_mutable
SvPV_force
SvPV_force_flags
@@ -3546,6 +3701,8 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
SvPVx
SvPVX_const
SvPVX_mutable
+ SvPVx_nolen_const
+ SvPVXx
SvREADONLY
SvREADONLY_off
SvREADONLY_on
@@ -3615,7 +3772,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
SvTRUE_nomg
SvTRUEx
SvTYPE
- svtype
+ svtype (undocumented)
sv_unmagic
sv_unmagicext
sv_unref
@@ -3625,7 +3782,6 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
sv_usepvn_mg
SvUTF8
SV_UTF8_NO_ENCODING (DEPRECATED)
- sv_uv (DEPRECATED)
SvUV
SvUV_nomg
SvUV_set
@@ -3635,12 +3791,16 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
SvVSTRING_mg
switch_to_global_locale
sync_locale
+ taint_env (undocumented)
+ taint_proper (undocumented)
TARG
THIS
Time_t
toLOWER
toUPPER
Uid_t
+ UINT16_C
+ UINT32_C
UINTMAX_C
UNDERBAR
UNICODE_REPLACEMENT
@@ -3652,10 +3812,11 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
UTF8fARG
UTF8_IS_INVARIANT
UTF8_MAXBYTES_CASE
+ U_V
UVCHR_IS_INVARIANT
UVCHR_SKIP
- UV_MAX (undocumented)
- UV_MIN (undocumented)
+ UV_MAX
+ UV_MIN
UVof
UVSIZE
UVTYPE
@@ -3664,7 +3825,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
VAL_EAGAIN
VAL_O_NONBLOCK
vload_module
- warn
+ vwarn
WARN_ALL
WARN_AMBIGUOUS
WARN_ASSERTIONS (undocumented)
@@ -3714,7 +3875,7 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
WARN_UTF8
WARN_VOID
whichsig
- WIDEST_UTYPE
+ WIDEST_UTYPE (undocumented)
XCPT_CATCH
XCPT_RETHROW
XCPT_TRY_END
@@ -3725,9 +3886,9 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
XPUSHp
XPUSHs
XPUSHu
- XS
+ XS (undocumented)
XSprePUSH (undocumented)
- XSPROTO
+ XSPROTO (undocumented)
XSRETURN
XSRETURN_EMPTY
XSRETURN_IV
@@ -3753,14 +3914,15 @@ backported, first send mail to L<mailto:perl5-porters@perl.org>.
LC_NUMERIC_LOCK (undocumented)
LC_NUMERIC_UNLOCK (undocumented)
- LOCK_LC_NUMERIC_STANDARD (undocumented)
LOCK_NUMERIC_STANDARD (undocumented)
- PERL_ARGS_ASSERT_CROAK_XS_USAGE (undocumented)
+ NUM2PTR (undocumented)
+ PERLIO_FUNCS_CAST (undocumented)
+ PERLIO_FUNCS_DECL (undocumented)
STORE_LC_NUMERIC_SET_STANDARD (undocumented)
STORE_NUMERIC_SET_STANDARD (undocumented)
- SvPVx_nolen_const (undocumented)
- UNLOCK_LC_NUMERIC_STANDARD (undocumented)
+ SvPV_flags_const_nolen (undocumented)
UNLOCK_NUMERIC_STANDARD (undocumented)
+ XSPROTO (undocumented)
=back
@@ -3807,7 +3969,7 @@ modify it under the same terms as Perl itself.
=head1 SEE ALSO
-See L<h2xs>, L<ppport.h>.
+See L<h2xs>, F<ppport.h>.
=cut
@@ -3816,7 +3978,7 @@ package Devel::PPPort;
use strict;
use vars qw($VERSION $data);
-$VERSION = '3.62';
+$VERSION = '3.71';
sub _init_data
{
@@ -3910,7 +4072,7 @@ SKIP
|>=head1 COMPATIBILITY
|>
|>This version of F<ppport.h> is designed to support operation with Perl
-|>installations back to 5.003_07, and has been tested up to 5.33.1.
+|>installations back to 5.003_07, and has been tested up to 5.35.9.
|>
|>=head1 OPTIONS
|>
@@ -4408,9 +4570,14 @@ sub _dictionary_order { # Sort caselessly, ignoring punct
$lc_b = lc $valid_b;
$squeezed_a = $lc_a;
- $squeezed_a =~ s/[\W_]//g; # No punct, including no underscore
+ $squeezed_a =~ s/^_+//g; # No leading underscores
+ $squeezed_a =~ s/\B_+\B//g; # No connecting underscores
+ $squeezed_a =~ s/[\W]//g; # No punct
+
$squeezed_b = $lc_b;
- $squeezed_b =~ s/[\W_]//g;
+ $squeezed_b =~ s/^_+//g;
+ $squeezed_b =~ s/\B_+\B//g;
+ $squeezed_b =~ s/[\W]//g;
return( $squeezed_a cmp $squeezed_b
or $lc_a cmp $lc_b
@@ -4420,9 +4587,9 @@ sub _dictionary_order { # Sort caselessly, ignoring punct
sub sort_api_lines # Sort lines of the form flags|return|name|args...
# by 'name'
{
- $a =~ / ^ [^|]* \| [^|]* \| (\w+) /x; # 3rd field '|' is sep
+ $a =~ / ^ [^|]* \| [^|]* \| ( [^|]* ) /x; # 3rd field '|' is sep
my $a_name = $1;
- $b =~ / ^ [^|]* \| [^|]* \| (\w+) /x;
+ $b =~ / ^ [^|]* \| [^|]* \| ( [^|]* ) /x;
my $b_name = $1;
return dictionary_order($a_name, $b_name);
}
@@ -4532,6 +4699,12 @@ abort|5.005000||Viu
abort_execution|5.025010||Viu
accept|5.005000||Viu
ACCEPT|5.009005||Viu
+ACCEPT_t8|5.035004||Viu
+ACCEPT_t8_p8|5.033003||Viu
+ACCEPT_t8_pb|5.033003||Viu
+ACCEPT_tb|5.035004||Viu
+ACCEPT_tb_p8|5.033003||Viu
+ACCEPT_tb_pb|5.033003||Viu
access|5.005000||Viu
add_above_Latin1_folds|5.021001||Viu
add_cp_to_invlist|5.013011||Viu
@@ -4545,6 +4718,20 @@ advance_one_SB|5.021009||Viu
advance_one_WB|5.021009||Viu
AHOCORASICK|5.009005||Viu
AHOCORASICKC|5.009005||Viu
+AHOCORASICKC_t8|5.035004||Viu
+AHOCORASICKC_t8_p8|5.033003||Viu
+AHOCORASICKC_t8_pb|5.033003||Viu
+AHOCORASICKC_tb|5.035004||Viu
+AHOCORASICKC_tb_p8|5.033003||Viu
+AHOCORASICKC_tb_pb|5.033003||Viu
+AHOCORASICK_t8|5.035004||Viu
+AHOCORASICK_t8_p8|5.033003||Viu
+AHOCORASICK_t8_pb|5.033003||Viu
+AHOCORASICK_tb|5.035004||Viu
+AHOCORASICK_tb_p8|5.033003||Viu
+AHOCORASICK_tb_pb|5.033003||Viu
+ALIGNED_TYPE_NAME|||Viu
+ALIGNED_TYPE|||Viu
alloccopstash|5.017001|5.017001|x
alloc_LOGOP|5.025004||xViu
allocmy|5.008001||Viu
@@ -4552,15 +4739,15 @@ ALLOC_THREAD_KEY|5.005003||Viu
ALT_DIGITS|5.027010||Viu
amagic_call|5.003007|5.003007|u
amagic_cmp|5.009003||Viu
-amagic_cmp_desc|5.031010||Viu
+amagic_cmp_desc|5.031011||Viu
amagic_cmp_locale|5.009003||Viu
-amagic_cmp_locale_desc|5.031010||Viu
+amagic_cmp_locale_desc|5.031011||Viu
amagic_deref_call|5.013007|5.013007|u
amagic_i_ncmp|5.009003||Viu
-amagic_i_ncmp_desc|5.031010||Viu
+amagic_i_ncmp_desc|5.031011||Viu
amagic_is_enabled|5.015008||Viu
amagic_ncmp|5.009003||Viu
-amagic_ncmp_desc|5.031010||Viu
+amagic_ncmp_desc|5.031011||Viu
AMG_CALLun|5.003007||Viu
AMG_CALLunary|5.013009||Viu
AMGfallNEVER|5.003007||Viu
@@ -4579,8 +4766,8 @@ AMT_AMAGIC_off|5.004000||Viu
AMT_AMAGIC_on|5.004000||Viu
AMTf_AMAGIC|5.004000||Viu
_aMY_CXT|5.009000|5.009000|p
-aMY_CXT_|5.009000|5.009000|p
aMY_CXT|5.009000|5.009000|p
+aMY_CXT_|5.009000|5.009000|p
anchored_end_shift|5.009005||Viu
anchored_offset|5.005000||Viu
anchored_substr|5.005000||Viu
@@ -4613,15 +4800,44 @@ ANYOF_CNTRL|5.006000||Viu
ANYOF_COMMON_FLAGS|5.019008||Viu
ANYOFD|5.023003||Viu
ANYOF_DIGIT|5.006000||Viu
+ANYOFD_t8|5.035004||Viu
+ANYOFD_t8_p8|5.033003||Viu
+ANYOFD_t8_pb|5.033003||Viu
+ANYOFD_tb|5.035004||Viu
+ANYOFD_tb_p8|5.033003||Viu
+ANYOFD_tb_pb|5.033003||Viu
ANYOF_FLAGS|5.006000||Viu
ANYOF_FLAGS_ALL|5.006000||Viu
-ANYOF_FOLD_SHARP_S|5.007003||Viu
ANYOF_GRAPH|5.006000||Viu
ANYOFH|5.029007||Viu
ANYOFHb|5.031001||Viu
+ANYOFHb_t8|5.035004||Viu
+ANYOFHb_t8_p8|5.033003||Viu
+ANYOFHb_t8_pb|5.033003||Viu
+ANYOFHb_tb|5.035004||Viu
+ANYOFHb_tb_p8|5.033003||Viu
+ANYOFHb_tb_pb|5.033003||Viu
ANYOF_HORIZWS|5.009005||Viu
ANYOFHr|5.031002||Viu
+ANYOFHr_t8|5.035004||Viu
+ANYOFHr_t8_p8|5.033003||Viu
+ANYOFHr_t8_pb|5.033003||Viu
+ANYOFHr_tb|5.035004||Viu
+ANYOFHr_tb_p8|5.033003||Viu
+ANYOFHr_tb_pb|5.033003||Viu
ANYOFHs|5.031007||Viu
+ANYOFHs_t8|5.035004||Viu
+ANYOFHs_t8_p8|5.033003||Viu
+ANYOFHs_t8_pb|5.033003||Viu
+ANYOFHs_tb|5.035004||Viu
+ANYOFHs_tb_p8|5.033003||Viu
+ANYOFHs_tb_pb|5.033003||Viu
+ANYOFH_t8|5.035004||Viu
+ANYOFH_t8_p8|5.033003||Viu
+ANYOFH_t8_pb|5.033003||Viu
+ANYOFH_tb|5.035004||Viu
+ANYOFH_tb_p8|5.033003||Viu
+ANYOFH_tb_pb|5.033003||Viu
ANYOF_INVERT|5.004000||Viu
ANYOFL|5.021008||Viu
ANYOFL_FOLD|5.023007||Viu
@@ -4629,11 +4845,23 @@ ANYOF_LOCALE_FLAGS|5.019005||Viu
ANYOF_LOWER|5.006000||Viu
ANYOFL_SHARED_UTF8_LOCALE_fold_HAS_MATCHES_nonfold_REQD|5.023007||Viu
ANYOFL_SOME_FOLDS_ONLY_IN_UTF8_LOCALE|5.023007||Viu
+ANYOFL_t8|5.035004||Viu
+ANYOFL_t8_p8|5.033003||Viu
+ANYOFL_t8_pb|5.033003||Viu
+ANYOFL_tb|5.035004||Viu
+ANYOFL_tb_p8|5.033003||Viu
+ANYOFL_tb_pb|5.033003||Viu
ANYOFL_UTF8_LOCALE_REQD|5.023007||Viu
ANYOFM|5.027009||Viu
ANYOF_MATCHES_ALL_ABOVE_BITMAP|5.021004||Viu
ANYOF_MATCHES_POSIXL|5.021004||Viu
ANYOF_MAX|5.006000||Viu
+ANYOFM_t8|5.035004||Viu
+ANYOFM_t8_p8|5.033003||Viu
+ANYOFM_t8_pb|5.033003||Viu
+ANYOFM_tb|5.035004||Viu
+ANYOFM_tb_p8|5.033003||Viu
+ANYOFM_tb_pb|5.033003||Viu
ANYOF_NALNUM|5.006000||Viu
ANYOF_NALNUML|5.004000||Viu
ANYOF_NALPHA|5.006000||Viu
@@ -4657,6 +4885,7 @@ ANYOF_NXDIGIT|5.006000||Viu
ANYOF_ONLY_HAS_BITMAP|5.021004||Viu
ANYOFPOSIXL|5.029004||Viu
ANYOF_POSIXL_AND|5.019005||Viu
+ANYOF_POSIXL_BITMAP|5.035003||Viu
ANYOF_POSIXL_CLEAR|5.019005||Viu
ANYOF_POSIXL_MAX|5.019005||Viu
ANYOF_POSIXL_OR|5.019005||Viu
@@ -4665,6 +4894,12 @@ ANYOF_POSIXL_SETALL|5.019005||Viu
ANYOF_POSIXL_SET_TO_BITMAP|5.029004||Viu
ANYOF_POSIXL_SSC_TEST_ALL_SET|5.019009||Viu
ANYOF_POSIXL_SSC_TEST_ANY_SET|5.019009||Viu
+ANYOFPOSIXL_t8|5.035004||Viu
+ANYOFPOSIXL_t8_p8|5.033003||Viu
+ANYOFPOSIXL_t8_pb|5.033003||Viu
+ANYOFPOSIXL_tb|5.035004||Viu
+ANYOFPOSIXL_tb_p8|5.033003||Viu
+ANYOFPOSIXL_tb_pb|5.033003||Viu
ANYOF_POSIXL_TEST|5.019005||Viu
ANYOF_POSIXL_TEST_ALL_SET|5.019005||Viu
ANYOF_POSIXL_TEST_ANY_SET|5.019005||Viu
@@ -4675,11 +4910,29 @@ ANYOFR|5.031007||Viu
ANYOFRb|5.031007||Viu
ANYOFRbase|5.031007||Viu
ANYOFR_BASE_BITS|5.031007||Viu
+ANYOFRb_t8|5.035004||Viu
+ANYOFRb_t8_p8|5.033003||Viu
+ANYOFRb_t8_pb|5.033003||Viu
+ANYOFRb_tb|5.035004||Viu
+ANYOFRb_tb_p8|5.033003||Viu
+ANYOFRb_tb_pb|5.033003||Viu
ANYOFRdelta|5.031007||Viu
+ANYOFR_t8|5.035004||Viu
+ANYOFR_t8_p8|5.033003||Viu
+ANYOFR_t8_pb|5.033003||Viu
+ANYOFR_tb|5.035004||Viu
+ANYOFR_tb_p8|5.033003||Viu
+ANYOFR_tb_pb|5.033003||Viu
ANYOF_SHARED_d_MATCHES_ALL_NON_UTF8_NON_ASCII_non_d_WARN_SUPER|5.023003||Viu
ANYOF_SHARED_d_UPPER_LATIN1_UTF8_STRING_MATCHES_non_d_RUNTIME_USER_PROP|5.023006||Viu
ANYOF_SPACE|5.006000||Viu
ANYOF_SPACEL|5.004000||Viu
+ANYOF_t8|5.035004||Viu
+ANYOF_t8_p8|5.033003||Viu
+ANYOF_t8_pb|5.033003||Viu
+ANYOF_tb|5.035004||Viu
+ANYOF_tb_p8|5.033003||Viu
+ANYOF_tb_pb|5.033003||Viu
ANYOF_UNIPROP|5.017006||Viu
ANYOF_UPPER|5.006000||Viu
ANYOF_VERTWS|5.009005||Viu
@@ -4706,9 +4959,9 @@ ARG2L_SET|5.009005||Viu
ARG2_SET|5.005000||Viu
ARG|5.005000||Viu
ARG_LOC|5.005000||Viu
-ARGp|5.031009||Viu
-ARGp_LOC|5.031009||Viu
-ARGp_SET|5.031009||Viu
+ARGp|5.031010||Viu
+ARGp_LOC|5.031010||Viu
+ARGp_SET|5.031010||Viu
ARG__SET|5.005000||Viu
ARG_SET|5.005000||Viu
ARGTARG|5.003007||Viu
@@ -4716,6 +4969,7 @@ ARG_VALUE|5.005000||Viu
argvout_final|5.029006||Viu
ASCIIish|5.005003||Viu
ASCII_MORE_RESTRICT_PAT_MODS|5.013010||Viu
+ASCII_PLATFORM_UTF8_MAXBYTES|5.035004||Viu
ASCII_RESTRICT_PAT_MOD|5.013009||Viu
ASCII_RESTRICT_PAT_MODS|5.013009||Viu
ASCII_TO_NATIVE|5.007001||Viu
@@ -4726,44 +4980,49 @@ assert|5.003007||Viu
__ASSERT_|5.019007|5.008008|p
ASSERT_CURPAD_ACTIVE|5.008001||Viu
ASSERT_CURPAD_LEGAL|5.008001||Viu
+ASSERT_IS_LITERAL|||Viu
+ASSERT_IS_PTR|||Viu
assert_not_glob|5.009004||Viu
+ASSERT_NOT_PTR|5.035004||Viu
assert_not_ROK|5.008001||Viu
assert_uft8_cache_coherent|5.013003||Viu
assignment_type|5.021005||Viu
-ASSUME|5.019006||Viu
-atfork_lock|5.007002|5.007002|nu
-atfork_unlock|5.007002|5.007002|nu
-aTHX_|5.006000|5.003007|p
+ASSUME|5.019006|5.003007|p
+atfork_lock|5.007003|5.007003|nu
+atfork_unlock|5.007003|5.007003|nu
aTHX|5.006000|5.003007|p
+aTHX_|5.006000|5.003007|p
aTHXa|5.017006||Viu
aTHXo|5.006000||Viu
-aTHXR_||5.003007|ponu
aTHXR||5.003007|ponu
+aTHXR_||5.003007|ponu
aTHXx|5.006000||Viu
Atof|5.006000||Viu
Atol|5.006000||Viu
atoll|5.008000||Viu
Atoul|5.006000||Viu
AvALLOC|5.003007||Viu
-AvARRAY|5.003007||Viu
+AvARRAY|5.003007|5.003007|
AvARYLEN|5.003007||Viu
av_arylen_p|||cu
av_clear|5.003007|5.003007|
av_count|5.033001|5.003007|p
-av_create_and_push|5.009005|5.009005|x
-av_create_and_unshift_one|5.009005|5.009005|x
+av_create_and_push|||
+av_create_and_unshift_one|||
av_delete|5.006000|5.006000|
av_exists|5.006000|5.006000|
av_extend|5.003007|5.003007|
av_extend_guts|5.017004||Viu
av_fetch|5.003007|5.003007|
+av_fetch_simple|5.035002||cV
av_fill|5.003007|5.003007|
AvFILL|5.003007|5.003007|
-AvFILLp|5.004005|5.003007|poV
+AvFILLp|5.004005||pcV
av_iter_p|||cu
av_len|5.003007|5.003007|
av_make|5.003007|5.003007|
AvMAX|5.003007||Viu
+av_new_alloc|5.035001|5.035001|
av_nonelem|5.027009||Viu
av_pop|5.003007|5.003007|
av_push|5.003007|5.003007|
@@ -4779,6 +5038,7 @@ AvREIFY_on|5.003007||Viu
AvREIFY_only|5.009003||Viu
av_shift|5.003007|5.003007|
av_store|5.003007|5.003007|
+av_store_simple|5.035002||cV
av_tindex|5.017009|5.003007|p
av_tindex_skip_len_mg|5.025010||Viu
av_top_index|5.017009|5.003007|p
@@ -4807,7 +5067,6 @@ BIN|5.003007|5.003007|Vn
bind|5.005000||Viu
bind_match|5.003007||Viu
BIN_EXP|5.004000|5.004000|Vn
-Bit|5.006000||Viu
BIT_BUCKET|5.003007||Viu
BIT_DIGITS|5.004000||Viu
BITMAP_BYTE|5.009005||Viu
@@ -4826,31 +5085,85 @@ blk_oldsp|5.003007||Viu
blk_old_tmpsfloor|5.023008||Viu
blk_sub|5.003007||Viu
blk_u16|5.011000||Viu
-block_end|5.004000|5.004000|
+block_end|5.021006|5.021006|
block_gimme|5.004000|5.004000|u
-blockhook_register|5.013003|5.013003|x
-block_start|5.004000|5.004000|
+blockhook_register|||x
+block_start|5.021006|5.021006|
BmFLAGS|5.009005||Viu
BmPREVIOUS|5.003007||Viu
BmRARE|5.003007||Viu
BmUSEFUL|5.003007||Viu
BOL|5.003007||Viu
+BOL_t8|5.035004||Viu
+BOL_t8_p8|5.033003||Viu
+BOL_t8_pb|5.033003||Viu
+BOL_tb|5.035004||Viu
+BOL_tb_p8|5.033003||Viu
+BOL_tb_pb|5.033003||Viu
BOM_UTF8|5.025005|5.003007|p
BOM_UTF8_FIRST_BYTE|5.019004||Viu
BOM_UTF8_TAIL|5.019004||Viu
-bool|5.003007||Viu
boolSV|5.004000|5.003007|p
+boot_core_builtin|5.035007||Viu
boot_core_mro|5.009005||Viu
boot_core_PerlIO|5.007002||Viu
boot_core_UNIVERSAL|5.003007||Viu
BOUND|5.003007||Viu
BOUNDA|5.013009||Viu
+BOUNDA_t8|5.035004||Viu
+BOUNDA_t8_p8|5.033003||Viu
+BOUNDA_t8_pb|5.033003||Viu
+BOUNDA_tb|5.035004||Viu
+BOUNDA_tb_p8|5.033003||Viu
+BOUNDA_tb_pb|5.033003||Viu
BOUNDL|5.004000||Viu
+BOUNDL_t8|5.035004||Viu
+BOUNDL_t8_p8|5.033003||Viu
+BOUNDL_t8_pb|5.033003||Viu
+BOUNDL_tb|5.035004||Viu
+BOUNDL_tb_p8|5.033003||Viu
+BOUNDL_tb_pb|5.033003||Viu
+BOUND_t8|5.035004||Viu
+BOUND_t8_p8|5.033003||Viu
+BOUND_t8_pb|5.033003||Viu
+BOUND_tb|5.035004||Viu
+BOUND_tb_p8|5.033003||Viu
+BOUND_tb_pb|5.033003||Viu
BOUNDU|5.013009||Viu
+BOUNDU_t8|5.035004||Viu
+BOUNDU_t8_p8|5.033003||Viu
+BOUNDU_t8_pb|5.033003||Viu
+BOUNDU_tb|5.035004||Viu
+BOUNDU_tb_p8|5.033003||Viu
+BOUNDU_tb_pb|5.033003||Viu
BRANCH|5.003007||Viu
BRANCHJ|5.005000||Viu
+BRANCHJ_t8|5.035004||Viu
+BRANCHJ_t8_p8|5.033003||Viu
+BRANCHJ_t8_pb|5.033003||Viu
+BRANCHJ_tb|5.035004||Viu
+BRANCHJ_tb_p8|5.033003||Viu
+BRANCHJ_tb_pb|5.033003||Viu
BRANCH_next|5.009005||Viu
BRANCH_next_fail|5.009005||Viu
+BRANCH_next_fail_t8|5.035004||Viu
+BRANCH_next_fail_t8_p8|5.033003||Viu
+BRANCH_next_fail_t8_pb|5.033003||Viu
+BRANCH_next_fail_tb|5.035004||Viu
+BRANCH_next_fail_tb_p8|5.033003||Viu
+BRANCH_next_fail_tb_pb|5.033003||Viu
+BRANCH_next_t8|5.035004||Viu
+BRANCH_next_t8_p8|5.033003||Viu
+BRANCH_next_t8_pb|5.033003||Viu
+BRANCH_next_tb|5.035004||Viu
+BRANCH_next_tb_p8|5.033003||Viu
+BRANCH_next_tb_pb|5.033003||Viu
+BRANCH_t8|5.035004||Viu
+BRANCH_t8_p8|5.033003||Viu
+BRANCH_t8_pb|5.033003||Viu
+BRANCH_tb|5.035004||Viu
+BRANCH_tb_p8|5.033003||Viu
+BRANCH_tb_pb|5.033003||Viu
BSD_GETPGRP|5.003007||Viu
BSDish|5.008001||Viu
BSD_SETPGRP|5.003007||Viu
@@ -4859,7 +5172,7 @@ _byte_dump_string|5.025006||cViu
BYTEORDER|5.003007|5.003007|Vn
bytes_cmp_utf8|5.013007|5.013007|
bytes_from_utf8|5.007001|5.007001|x
-bytes_from_utf8_loc|5.027001|5.027001|xnu
+bytes_from_utf8_loc|5.027001||xcVn
bytes_to_utf8|5.006001|5.006001|x
call_argv|5.006000|5.003007|p
call_atexit|5.006000|5.006000|u
@@ -4869,7 +5182,7 @@ caller_cx|5.013005|5.006000|p
CALL_FPTR|5.006000||Viu
call_list|5.004000|5.004000|u
call_method|5.006000|5.003007|p
-calloc|5.007002|5.007002|n
+calloc|5.029005||Vn
call_pv|5.006000|5.003007|p
CALLREGCOMP|5.005000||Viu
CALLREGCOMP_ENG|5.009005||Viu
@@ -5161,11 +5474,11 @@ case_99_SBOX32|5.027001||Viu
case_9_SBOX32|5.027001||Viu
CASE_STD_PMMOD_FLAGS_PARSE_SET|5.009005||Viu
CASTFLAGS|5.003007|5.003007|Vn
-cast_i32|5.006000||cVn
-cast_iv|5.006000||cVn
+cast_i32|5.006000||cVnu
+cast_iv|5.006000||cVnu
CASTNEGFLOAT|5.003007|5.003007|Vn
-cast_ulong|5.003007||cVn
-cast_uv|5.006000||cVn
+cast_ulong|5.003007||cVnu
+cast_uv|5.006000||cVnu
CAT2|5.003007|5.003007|Vn
CATCH_GET|5.004000||Viu
CATCH_SET|5.004000||Viu
@@ -5206,19 +5519,19 @@ ck_entersub_args_core|||iu
ck_entersub_args_list|5.013006|5.013006|
ck_entersub_args_proto|5.013006|5.013006|
ck_entersub_args_proto_or_list|5.013006|5.013006|
-ckWARN2|5.006000|5.006000|p
-ckWARN2_d|5.006000|5.006000|p
-ckWARN3|5.007003|5.007003|p
-ckWARN3_d|5.007003|5.007003|p
-ckWARN4|5.007003|5.007003|p
-ckWARN4_d|5.007003|5.007003|p
+ckWARN2|5.006000|5.003007|p
+ckWARN2_d|5.006000|5.003007|p
+ckWARN3|5.007003|5.003007|p
+ckWARN3_d|5.007003|5.003007|p
+ckWARN4|5.007003|5.003007|p
+ckWARN4_d|5.007003|5.003007|p
ckWARN|5.006000|5.003007|p
ckwarn_common|5.011001||Viu
ckwarn|||cu
-ckWARN_d|5.006000|5.006000|p
+ckWARN_d|5.006000|5.003007|p
ckwarn_d|||cu
-ck_warner|5.011001|5.011001|pv
-ck_warner_d|5.011001|5.011001|pv
+ck_warner|5.011001||pvV
+ck_warner_d|5.011001||pvV
CLANG_DIAG_IGNORE|5.023006||Viu
CLANG_DIAG_IGNORE_DECL|5.027007||Viu
CLANG_DIAG_IGNORE_STMT|5.027007||Viu
@@ -5244,8 +5557,8 @@ CLONEf_CLONE_HOST|5.007002||Viu
CLONEf_COPY_STACKS|5.007001||Viu
CLONEf_JOIN_IN|5.008001||Viu
CLONEf_KEEP_PTR_TABLE|5.007001||Viu
-clone_params_del|5.013002|5.013002|nu
-clone_params_new|5.013002|5.013002|nu
+clone_params_del|||nu
+clone_params_new|||nu
cLOOP|5.003007||Viu
cLOOPo|5.004005||Viu
cLOOPx|5.006000||Viu
@@ -5253,17 +5566,29 @@ CLOSE|5.003007||Viu
close|5.005000||Viu
closedir|5.005000||Viu
closest_cop|5.007002||Viu
+CLOSE_t8|5.035004||Viu
+CLOSE_t8_p8|5.033003||Viu
+CLOSE_t8_pb|5.033003||Viu
+CLOSE_tb|5.035004||Viu
+CLOSE_tb_p8|5.033003||Viu
+CLOSE_tb_pb|5.033003||Viu
CLUMP_2IV|5.006000||Viu
CLUMP_2UV|5.006000||Viu
CLUMP|5.006000||Viu
+CLUMP_t8|5.035004||Viu
+CLUMP_t8_p8|5.033003||Viu
+CLUMP_t8_pb|5.033003||Viu
+CLUMP_tb|5.035004||Viu
+CLUMP_tb_p8|5.033003||Viu
+CLUMP_tb_pb|5.033003||Viu
cMETHOPx|5.021005||Viu
cMETHOPx_meth|5.021005||Viu
cMETHOPx_rclass|5.021007||Viu
-cmpchain_extend|5.031010||Viu
-cmpchain_finish|5.031010||Viu
-cmpchain_start|5.031010||Viu
-cmp_desc|5.031010||Viu
-cmp_locale_desc|5.031010||Viu
+cmpchain_extend|5.031011||Viu
+cmpchain_finish|5.031011||Viu
+cmpchain_start|5.031011||Viu
+cmp_desc|5.031011||Viu
+cmp_locale_desc|5.031011||Viu
cntrl_to_mnemonic|5.021004||cVniu
CODESET|5.027010||Viu
COMBINING_DOT_ABOVE_UTF8|5.029008||Viu
@@ -5271,7 +5596,25 @@ COMBINING_GRAVE_ACCENT_UTF8|5.017004||Viu
COMMIT|5.009005||Viu
COMMIT_next|5.009005||Viu
COMMIT_next_fail|5.009005||Viu
-compile_wildcard|5.031009||Viu
+COMMIT_next_fail_t8|5.035004||Viu
+COMMIT_next_fail_t8_p8|5.033003||Viu
+COMMIT_next_fail_t8_pb|5.033003||Viu
+COMMIT_next_fail_tb|5.035004||Viu
+COMMIT_next_fail_tb_p8|5.033003||Viu
+COMMIT_next_fail_tb_pb|5.033003||Viu
+COMMIT_next_t8|5.035004||Viu
+COMMIT_next_t8_p8|5.033003||Viu
+COMMIT_next_t8_pb|5.033003||Viu
+COMMIT_next_tb|5.035004||Viu
+COMMIT_next_tb_p8|5.033003||Viu
+COMMIT_next_tb_pb|5.033003||Viu
+COMMIT_t8|5.035004||Viu
+COMMIT_t8_p8|5.033003||Viu
+COMMIT_t8_pb|5.033003||Viu
+COMMIT_tb|5.035004||Viu
+COMMIT_tb_p8|5.033003||Viu
+COMMIT_tb_pb|5.033003||Viu
+compile_wildcard|5.031010||Viu
compute_EXACTish|5.017003||Vniu
COND_BROADCAST|5.005000||Viu
COND_DESTROY|5.005000||Viu
@@ -5281,9 +5624,11 @@ COND_WAIT|5.005000||Viu
connect|5.005000||Viu
construct_ahocorasick_from_trie|5.021001||Viu
CONTINUE_PAT_MOD|5.009005||Viu
-cop_fetch_label|5.015001|5.015001|x
+cop_fetch_label|5.031004|5.031004|x
CopFILE|5.006000|5.003007|p
CopFILEAV|5.006000|5.003007|p
+CopFILEAVn|5.035006|5.035006|
+cop_file_avn|5.035006||cVu
CopFILEAVx|5.009003||Viu
CopFILE_free|5.007003||Viu
CopFILEGV|5.006000|5.003007|p
@@ -5298,6 +5643,11 @@ cophh_delete_pv|5.013007|5.013007|x
cophh_delete_pvn|5.013007|5.013007|x
cophh_delete_pvs|5.013007|5.013007|x
cophh_delete_sv|5.013007|5.013007|x
+COPHH_EXISTS|5.033008||Viu
+cophh_exists_pv|5.033008|5.033008|x
+cophh_exists_pvn|5.033008|5.033008|x
+cophh_exists_pvs|5.033008|5.033008|x
+cophh_exists_sv|5.033008|5.033008|x
cophh_fetch_pv|5.013007|5.013007|x
cophh_fetch_pvn|5.013007|5.013007|x
cophh_fetch_pvs|5.013007|5.013007|x
@@ -5312,6 +5662,10 @@ cophh_store_sv|5.013007|5.013007|x
CopHINTHASH_get|5.013007||Viu
CopHINTHASH_set|5.013007||Viu
cop_hints_2hv|5.013007|5.013007|
+cop_hints_exists_pv|5.033008|5.033008|
+cop_hints_exists_pvn|5.033008|5.033008|
+cop_hints_exists_pvs|5.033008|5.033008|
+cop_hints_exists_sv|5.033008|5.033008|
cop_hints_fetch_pv|5.013007|5.013007|
cop_hints_fetch_pvn|5.013007|5.013007|
cop_hints_fetch_pvs|5.013007|5.013007|
@@ -5335,9 +5689,10 @@ CopSTASH_ne|5.006000||Viu
CopSTASHPV|5.006000|5.003007|p
CopSTASHPV_set|5.017001|5.017001|p
CopSTASH_set|5.006000|5.003007|p
-cop_store_label|5.015001|5.015001|x
+cop_store_label|5.031004|5.031004|x
Copy|5.003007|5.003007|
CopyD|5.009002|5.003007|p
+copy_length|||Viu
core_prototype|5.015002||Vi
coresub_op|5.015003||Viu
CowREFCNT|5.017007||Viu
@@ -5359,10 +5714,10 @@ cPVOPx|5.006000||Viu
create_eval_scope|5.009004||xViu
CR_NATIVE|5.019004||Viu
CRNCYSTR|5.027010||Viu
-croak|5.006000|5.003007|v
+croak|5.003007||vV
croak_caller|5.025004||vVniu
-croak_memory_wrap|5.019003|5.003007|pocVnu
-croak_nocontext|5.006000|5.003007|pvn
+croak_memory_wrap|5.019003||pcVnu
+croak_nocontext|5.006000||pvVn
croak_no_mem|5.017006||Vniu
croak_no_modify|5.013003|5.003007|pn
croak_popstack|5.017008||cVniu
@@ -5397,17 +5752,101 @@ cUNOPx|5.006000||Viu
CURLY|5.003007||Viu
CURLY_B_max|5.009005||Viu
CURLY_B_max_fail|5.009005||Viu
+CURLY_B_max_fail_t8|5.035004||Viu
+CURLY_B_max_fail_t8_p8|5.033003||Viu
+CURLY_B_max_fail_t8_pb|5.033003||Viu
+CURLY_B_max_fail_tb|5.035004||Viu
+CURLY_B_max_fail_tb_p8|5.033003||Viu
+CURLY_B_max_fail_tb_pb|5.033003||Viu
+CURLY_B_max_t8|5.035004||Viu
+CURLY_B_max_t8_p8|5.033003||Viu
+CURLY_B_max_t8_pb|5.033003||Viu
+CURLY_B_max_tb|5.035004||Viu
+CURLY_B_max_tb_p8|5.033003||Viu
+CURLY_B_max_tb_pb|5.033003||Viu
CURLY_B_min|5.009005||Viu
CURLY_B_min_fail|5.009005||Viu
+CURLY_B_min_fail_t8|5.035004||Viu
+CURLY_B_min_fail_t8_p8|5.033003||Viu
+CURLY_B_min_fail_t8_pb|5.033003||Viu
+CURLY_B_min_fail_tb|5.035004||Viu
+CURLY_B_min_fail_tb_p8|5.033003||Viu
+CURLY_B_min_fail_tb_pb|5.033003||Viu
+CURLY_B_min_t8|5.035004||Viu
+CURLY_B_min_t8_p8|5.033003||Viu
+CURLY_B_min_t8_pb|5.033003||Viu
+CURLY_B_min_tb|5.035004||Viu
+CURLY_B_min_tb_p8|5.033003||Viu
+CURLY_B_min_tb_pb|5.033003||Viu
CURLYM|5.005000||Viu
CURLYM_A|5.009005||Viu
CURLYM_A_fail|5.009005||Viu
+CURLYM_A_fail_t8|5.035004||Viu
+CURLYM_A_fail_t8_p8|5.033003||Viu
+CURLYM_A_fail_t8_pb|5.033003||Viu
+CURLYM_A_fail_tb|5.035004||Viu
+CURLYM_A_fail_tb_p8|5.033003||Viu
+CURLYM_A_fail_tb_pb|5.033003||Viu
+CURLYM_A_t8|5.035004||Viu
+CURLYM_A_t8_p8|5.033003||Viu
+CURLYM_A_t8_pb|5.033003||Viu
+CURLYM_A_tb|5.035004||Viu
+CURLYM_A_tb_p8|5.033003||Viu
+CURLYM_A_tb_pb|5.033003||Viu
CURLYM_B|5.009005||Viu
CURLYM_B_fail|5.009005||Viu
+CURLYM_B_fail_t8|5.035004||Viu
+CURLYM_B_fail_t8_p8|5.033003||Viu
+CURLYM_B_fail_t8_pb|5.033003||Viu
+CURLYM_B_fail_tb|5.035004||Viu
+CURLYM_B_fail_tb_p8|5.033003||Viu
+CURLYM_B_fail_tb_pb|5.033003||Viu
+CURLYM_B_t8|5.035004||Viu
+CURLYM_B_t8_p8|5.033003||Viu
+CURLYM_B_t8_pb|5.033003||Viu
+CURLYM_B_tb|5.035004||Viu
+CURLYM_B_tb_p8|5.033003||Viu
+CURLYM_B_tb_pb|5.033003||Viu
+CURLYM_t8|5.035004||Viu
+CURLYM_t8_p8|5.033003||Viu
+CURLYM_t8_pb|5.033003||Viu
+CURLYM_tb|5.035004||Viu
+CURLYM_tb_p8|5.033003||Viu
+CURLYM_tb_pb|5.033003||Viu
CURLYN|5.005000||Viu
+CURLYN_t8|5.035004||Viu
+CURLYN_t8_p8|5.033003||Viu
+CURLYN_t8_pb|5.033003||Viu
+CURLYN_tb|5.035004||Viu
+CURLYN_tb_p8|5.033003||Viu
+CURLYN_tb_pb|5.033003||Viu
+CURLY_t8|5.035004||Viu
+CURLY_t8_p8|5.033003||Viu
+CURLY_t8_pb|5.033003||Viu
+CURLY_tb|5.035004||Viu
+CURLY_tb_p8|5.033003||Viu
+CURLY_tb_pb|5.033003||Viu
CURLYX|5.003007||Viu
CURLYX_end|5.009005||Viu
CURLYX_end_fail|5.009005||Viu
+CURLYX_end_fail_t8|5.035004||Viu
+CURLYX_end_fail_t8_p8|5.033003||Viu
+CURLYX_end_fail_t8_pb|5.033003||Viu
+CURLYX_end_fail_tb|5.035004||Viu
+CURLYX_end_fail_tb_p8|5.033003||Viu
+CURLYX_end_fail_tb_pb|5.033003||Viu
+CURLYX_end_t8|5.035004||Viu
+CURLYX_end_t8_p8|5.033003||Viu
+CURLYX_end_t8_pb|5.033003||Viu
+CURLYX_end_tb|5.035004||Viu
+CURLYX_end_tb_p8|5.033003||Viu
+CURLYX_end_tb_pb|5.033003||Viu
+CURLYX_t8|5.035004||Viu
+CURLYX_t8_p8|5.033003||Viu
+CURLYX_t8_pb|5.033003||Viu
+CURLYX_tb|5.035004||Viu
+CURLYX_tb_p8|5.033003||Viu
+CURLYX_tb_pb|5.033003||Viu
CURRENT_FEATURE_BUNDLE|5.015007||Viu
CURRENT_HINTS|5.015007||Viu
current_re_engine|5.017001||cViu
@@ -5415,10 +5854,28 @@ curse|5.013009||Viu
custom_op_desc|5.007003|5.007003|d
custom_op_get_field|5.019006||cViu
custom_op_name|5.007003|5.007003|d
-custom_op_register|5.013007|5.013007|
+custom_op_register|||
CUTGROUP|5.009005||Viu
CUTGROUP_next|5.009005||Viu
CUTGROUP_next_fail|5.009005||Viu
+CUTGROUP_next_fail_t8|5.035004||Viu
+CUTGROUP_next_fail_t8_p8|5.033003||Viu
+CUTGROUP_next_fail_t8_pb|5.033003||Viu
+CUTGROUP_next_fail_tb|5.035004||Viu
+CUTGROUP_next_fail_tb_p8|5.033003||Viu
+CUTGROUP_next_fail_tb_pb|5.033003||Viu
+CUTGROUP_next_t8|5.035004||Viu
+CUTGROUP_next_t8_p8|5.033003||Viu
+CUTGROUP_next_t8_pb|5.033003||Viu
+CUTGROUP_next_tb|5.035004||Viu
+CUTGROUP_next_tb_p8|5.033003||Viu
+CUTGROUP_next_tb_pb|5.033003||Viu
+CUTGROUP_t8|5.035004||Viu
+CUTGROUP_t8_p8|5.033003||Viu
+CUTGROUP_t8_pb|5.033003||Viu
+CUTGROUP_tb|5.035004||Viu
+CUTGROUP_tb_p8|5.033003||Viu
+CUTGROUP_tb_pb|5.033003||Viu
CvANON|5.003007||Viu
CvANONCONST|5.021008||Viu
CvANONCONST_off|5.021008||Viu
@@ -5430,8 +5887,8 @@ CvAUTOLOAD_off|5.015004||Viu
CvAUTOLOAD_on|5.015004||Viu
cv_ckproto|5.009004||Viu
cv_ckproto_len_flags|5.015004||xcViu
-cv_clone|5.003007|5.003007|
CvCLONE|5.003007||Viu
+cv_clone|5.015001|5.015001|
CvCLONED|5.003007||Viu
CvCLONED_off|5.003007||Viu
CvCLONED_on|5.003007||Viu
@@ -5446,7 +5903,7 @@ cv_const_sv_or_av|5.019003||Vniu
CvCVGV_RC|5.013003||Viu
CvCVGV_RC_off|5.013003||Viu
CvCVGV_RC_on|5.013003||Viu
-CvDEPTH|5.003007|5.003007|n
+CvDEPTH|5.003007|5.003007|nu
CvDEPTHunsafe|5.021006||Viu
cv_dump|5.006000||Vi
CvDYNFILE|5.015002||Viu
@@ -5476,6 +5933,7 @@ CVf_METHOD|5.005000||Viu
CVf_NAMED|5.017004||Viu
CVf_NODEBUG|5.004000||Viu
cv_forget_slab|5.017002||Vi
+CVf_SIGNATURE|5.035009||Viu
CVf_SLABBED|5.017002||Viu
CVf_UNIQUE|5.004000||Viu
CVf_WEAKOUTSIDE|5.008001||Viu
@@ -5520,6 +5978,9 @@ CvPROTOLEN|5.015004||Viu
CvROOT|5.003007||Viu
cv_set_call_checker|5.013006|5.013006|
cv_set_call_checker_flags|5.021004|5.021004|
+CvSIGNATURE|5.035009||Viu
+CvSIGNATURE_off|5.035009||Viu
+CvSIGNATURE_on|5.035009||Viu
CvSLABBED|5.017002||Viu
CvSLABBED_off|5.017002||Viu
CvSLABBED_on|5.017002||Viu
@@ -5547,6 +6008,7 @@ CX_CURPAD_SV|5.008001||Vi
CX_DEBUG|5.023008||Viu
cx_dump|5.003007||cVu
cx_dup|5.006000||cVu
+CxEVALBLOCK|5.033007||Viu
CxEVAL_TXT_REFCNTED|5.025007||Viu
CxFOREACH|5.009003||Viu
CxHASARGS|5.010001||Viu
@@ -5563,6 +6025,8 @@ CxOLD_IN_EVAL|5.010001||Viu
CxOLD_OP_TYPE|5.010001||Viu
CxONCE|5.010001||Viu
CxPADLOOP|5.006000||Viu
+CXp_EVALBLOCK|5.033007||Viu
+CXp_FINALLY|5.035008||Viu
CXp_FOR_DEF|5.027008||Viu
CXp_FOR_GV|5.023008||Viu
CXp_FOR_LVREF|5.021005||Viu
@@ -5585,6 +6049,7 @@ cx_popwhen|5.027008||xcVu
CXp_REAL|5.005003||Viu
CXp_SUB_RE|5.018000||Viu
CXp_SUB_RE_FAKE|5.018000||Viu
+CXp_TRY|5.033007||Viu
CXp_TRYBLOCK|5.006000||Viu
cx_pushblock|5.023008||xcVu
cx_pusheval|5.023008||xcVu
@@ -5595,12 +6060,14 @@ cx_pushloop_plain|5.023008||xcVu
cx_pushsub|5.023008||xcVu
CX_PUSHSUB_GET_LVALUE_MASK|5.023008||Viu
CX_PUSHSUBST|5.023008||Viu
+cx_pushtry|5.033007||xcVu
cx_pushwhen|5.027008||xcVu
CxREALEVAL|5.005003||Viu
cxstack|5.005000||Viu
cxstack_ix|5.005000||Viu
cxstack_max|5.005000||Viu
CXt_BLOCK|5.003007||Viu
+CXt_DEFER|5.035004||Viu
CXt_EVAL|5.003007||Viu
CXt_FORMAT|5.006000||Viu
CXt_GIVEN|5.027008||Viu
@@ -5611,6 +6078,7 @@ CXt_LOOP_LIST|5.023008||Viu
CXt_LOOP_PLAIN|5.011000||Viu
CXt_NULL|5.003007||Viu
cx_topblock|5.023008||xcVu
+CxTRY|5.033007||Viu
CxTRYBLOCK|5.006000||Viu
CXt_SUB|5.003007||Viu
CXt_SUBST|5.003007||Viu
@@ -5640,9 +6108,9 @@ DBVARMG_TRACE|5.021005||Viu
DB_VERSION_MAJOR_CFG|5.007002|5.007002|Vn
DB_VERSION_MINOR_CFG|5.007002|5.007002|Vn
DB_VERSION_PATCH_CFG|5.007002|5.007002|Vn
-deb|5.007003|5.007003|vu
+deb|5.003007||vVu
deb_curcv|5.007002||Viu
-deb_nocontext|5.007003|5.007003|vnu
+deb_nocontext|5.006000||vVnu
debop|5.005000|5.005000|u
debprof|5.005000||Viu
debprofdump|5.005000|5.005000|u
@@ -5656,6 +6124,7 @@ DEBUG_A_FLAG|5.009001||Viu
DEBUG_A_TEST|5.009001||Viu
DEBUG_B|5.011000||Viu
DEBUG_B_FLAG|5.011000||Viu
+DEBUG_BOTH_FLAGS_TEST|5.033007||Viu
DEBUG_B_TEST|5.011000||Viu
DEBUG_BUFFERS_r|5.009005||Viu
DEBUG_c|5.003007||Viu
@@ -5701,7 +6170,6 @@ DEBUG_M_FLAG|5.027008||Viu
DEBUG_m_TEST|5.007001||Viu
DEBUG_M_TEST|5.027008||Viu
DEBUG_o|5.003007||Viu
-DEBUG_OFFSETS_r|5.009002||Viu
DEBUG_o_FLAG|5.007001||Viu
DEBUG_OPTIMISE_MORE_r|5.009005||Viu
DEBUG_OPTIMISE_r|5.009002||Viu
@@ -5711,6 +6179,8 @@ DEBUG_p|5.003007||Viu
DEBUG_PARSE_r|5.009004||Viu
DEBUG_P_FLAG|5.007001||Viu
DEBUG_p_FLAG|5.007001||Viu
+DEBUG_POST_STMTS|5.033008||Viu
+DEBUG_PRE_STMTS|5.033008||Viu
DEBUG_P_TEST|5.007001||Viu
DEBUG_p_TEST|5.007001||Viu
DEBUG_Pv|5.013008||Viu
@@ -5731,7 +6201,6 @@ DEBUG_SCOPE|5.008001||Viu
DEBUG_s_FLAG|5.007001||Viu
DEBUG_S_FLAG|5.017002||Viu
DEBUG_STACK_r|5.009005||Viu
-DEBUG_STADTX_HASH|5.027001||Viu
debug_start_match|5.009004||Viu
DEBUG_STATE_r|5.009004||Viu
DEBUG_s_TEST|5.007001||Viu
@@ -5775,18 +6244,25 @@ DEBUG_yv|5.031007||Viu
DEBUG_yv_TEST|5.031007||Viu
DEBUG_ZAPHOD32_HASH|5.027001||Viu
DECLARATION_FOR_LC_NUMERIC_MANIPULATION|5.021010|5.021010|p
-DECLARE_AND_GET_RE_DEBUG_FLAGS|5.031010||Viu
-DECLARE_AND_GET_RE_DEBUG_FLAGS_NON_REGEX|5.031010||Viu
+DECLARE_AND_GET_RE_DEBUG_FLAGS|5.031011||Viu
+DECLARE_AND_GET_RE_DEBUG_FLAGS_NON_REGEX|5.031011||Viu
DEFAULT_INC_EXCLUDES_DOT|5.025011|5.025011|Vn
DEFAULT_PAT_MOD|5.013006||Viu
defelem_target|5.019002||Viu
DEFINE_INC_MACROS|5.027006||Viu
DEFINEP|5.009005||Viu
+DEFINEP_t8|5.035004||Viu
+DEFINEP_t8_p8|5.033003||Viu
+DEFINEP_t8_pb|5.033003||Viu
+DEFINEP_tb|5.035004||Viu
+DEFINEP_tb_p8|5.033003||Viu
+DEFINEP_tb_pb|5.033003||Viu
DEFSV|5.004005|5.003007|p
DEFSV_set|5.010001|5.003007|p
+del_body_by_type|||Viu
delete_eval_scope|5.009004||xViu
delimcpy|5.004000|5.004000|n
-delimcpy_no_escape|5.025005||Vni
+delimcpy_no_escape|5.025005||cVni
DEL_NATIVE|5.017010||Viu
del_sv|5.005000||Viu
DEPENDS_PAT_MOD|5.013009||Viu
@@ -5799,10 +6275,13 @@ destroy_matcher|5.027008||Viu
DETACH|5.005000||Viu
dEXT|5.003007||Viu
dEXTCONST|5.004000||Viu
+DFA_RETURN_FAILURE|5.035004||Viu
+DFA_RETURN_SUCCESS|5.035004||Viu
+DFA_TEASE_APART_FF|5.035004||Viu
D_FMT|5.027010||Viu
DIE|5.003007||Viu
-die|5.006000|5.003007|v
-die_nocontext|5.006000|5.006000|vn
+die|5.003007||vV
+die_nocontext|5.006000||vVn
die_sv|5.013001|5.003007|p
die_unwind|5.013001||Viu
Direntry_t|5.003007|5.003007|Vn
@@ -5823,7 +6302,7 @@ DM_UID|5.003007||Viu
dMULTICALL|5.009003|5.009003|
dMY_CXT|5.009000|5.009000|p
dMY_CXT_INTERP|5.009003||Viu
-dMY_CXT_SV|5.033001|5.033001|p
+dMY_CXT_SV|5.007003|5.003007|pV
dNOOP|5.006000|5.003007|p
do_aexec|5.009003||Viu
do_aexec5|5.006000||Viu
@@ -5882,15 +6361,15 @@ DOSISH|5.003007||Viu
do_smartmatch|5.027008||Viu
do_spawn|5.008000||Vu
do_spawn_nowait|5.008000||Vu
-do_sprintf|5.003007||cVu
+do_sprintf|5.003007|5.003007|u
do_sv_dump|5.006000||cVu
do_sysseek|5.004000||Viu
do_tell|5.003007||Viu
do_trans|5.003007||Viu
do_trans_complex|5.006001||Viu
do_trans_count|5.006001||Viu
-do_trans_count_invmap|5.031007||Viu
-do_trans_invmap|5.031007||Viu
+do_trans_count_invmap|5.031006||Viu
+do_trans_invmap|5.031006||Viu
do_trans_simple|5.006001||Viu
DOUBLE_BIG_ENDIAN|5.021009||Viu
DOUBLE_HAS_INF|5.025003|5.025003|Vn
@@ -5923,8 +6402,8 @@ DOUBLENANBYTES|5.023000|5.023000|Vn
DOUBLESIZE|5.005000|5.005000|Vn
DOUBLE_STYLE_IEEE|5.025007|5.025007|Vn
DOUBLE_VAX_ENDIAN|5.025003||Viu
-do_uniprop_match|5.031010||cVniu
-dounwind|5.003007||cVu
+do_uniprop_match|5.031011||cVniu
+dounwind|5.003007|5.003007|u
DO_UTF8|5.006000|5.006000|
do_vecget|5.006000||Viu
do_vecset|5.003007||Viu
@@ -5949,7 +6428,7 @@ dPOPXiirl_ul_nomg|5.013002||Viu
dPOPXnnrl|5.004000||Viu
dPOPXssrl|5.004000||Viu
DPTR2FPTR|5.009003||Viu
-Drand01|5.006000|5.006000|Vn
+Drand01|5.006000|5.006000|
drand48_init_r|||cniu
drand48_r|||cniu
DRAND48_R_PROTO|5.008000|5.008000|Vn
@@ -6027,6 +6506,12 @@ ENDGRENT_R_PROTO|5.008000|5.008000|Vn
endhostent|5.005000||Viu
ENDHOSTENT_R_PROTO|5.008000|5.008000|Vn
ENDLIKE|5.009005||Viu
+ENDLIKE_t8|5.035004||Viu
+ENDLIKE_t8_p8|5.033003||Viu
+ENDLIKE_t8_pb|5.033003||Viu
+ENDLIKE_tb|5.035004||Viu
+ENDLIKE_tb_p8|5.033003||Viu
+ENDLIKE_tb_pb|5.033003||Viu
endnetent|5.005000||Viu
ENDNETENT_R_PROTO|5.008000|5.008000|Vn
endprotoent|5.005000||Viu
@@ -6036,21 +6521,41 @@ ENDPWENT_R_HAS_FPTR|5.008000||Viu
ENDPWENT_R_PROTO|5.008000|5.008000|Vn
endservent|5.005000||Viu
ENDSERVENT_R_PROTO|5.008000|5.008000|Vn
+END_t8|5.035004||Viu
+END_t8_p8|5.033003||Viu
+END_t8_pb|5.033003||Viu
+END_tb|5.035004||Viu
+END_tb_p8|5.033003||Viu
+END_tb_pb|5.033003||Viu
ENTER|5.003007|5.003007|
ENTER_with_name|5.011002|5.011002|
-ENV_INIT|5.031010||Viu
+ENV_INIT|5.031011||Viu
environ|5.003007||Viu
-ENV_LOCALE_LOCK|5.031010||Viu
-ENV_LOCALE_READ_LOCK|5.031010||Viu
-ENV_LOCALE_READ_UNLOCK|5.031010||Viu
-ENV_LOCALE_UNLOCK|5.031010||Viu
-ENV_LOCK|5.031010||Viu
-ENV_TERM|5.031010||Viu
-ENV_UNLOCK|5.031010||Viu
+ENV_LOCALE_LOCK|5.031011||Viu
+ENV_LOCALE_READ_LOCK|5.031011||Viu
+ENV_LOCALE_READ_UNLOCK|5.031011||Viu
+ENV_LOCALE_UNLOCK|5.031011||Viu
+ENV_LOCK|5.031011||Viu
+ENV_READ_LOCK|5.033005||Viu
+ENV_READ_UNLOCK|5.033005||Viu
+ENV_TERM|5.031011||Viu
+ENV_UNLOCK|5.031011||Viu
EOF|5.003007||Viu
EOF_NONBLOCK|5.003007|5.003007|Vn
EOL|5.003007||Viu
+EOL_t8|5.035004||Viu
+EOL_t8_p8|5.033003||Viu
+EOL_t8_pb|5.033003||Viu
+EOL_tb|5.035004||Viu
+EOL_tb_p8|5.033003||Viu
+EOL_tb_pb|5.033003||Viu
EOS|5.005000||Viu
+EOS_t8|5.035004||Viu
+EOS_t8_p8|5.033003||Viu
+EOS_t8_pb|5.033003||Viu
+EOS_tb|5.035004||Viu
+EOS_tb_p8|5.033003||Viu
+EOS_tb_pb|5.033003||Viu
ERA|5.027010||Viu
ERA_D_FMT|5.027010||Viu
ERA_D_T_FMT|5.027010||Viu
@@ -6060,34 +6565,136 @@ ESC_NATIVE|5.021004||Viu
EVAL|5.005000||Viu
EVAL_B|5.025010||Viu
EVAL_B_fail|5.025010||Viu
+EVAL_B_fail_t8|5.035004||Viu
+EVAL_B_fail_t8_p8|5.033003||Viu
+EVAL_B_fail_t8_pb|5.033003||Viu
+EVAL_B_fail_tb|5.035004||Viu
+EVAL_B_fail_tb_p8|5.033003||Viu
+EVAL_B_fail_tb_pb|5.033003||Viu
+EVAL_B_t8|5.035004||Viu
+EVAL_B_t8_p8|5.033003||Viu
+EVAL_B_t8_pb|5.033003||Viu
+EVAL_B_tb|5.035004||Viu
+EVAL_B_tb_p8|5.033003||Viu
+EVAL_B_tb_pb|5.033003||Viu
EVAL_INEVAL|5.006000||Viu
EVAL_INREQUIRE|5.007001||Viu
EVAL_KEEPERR|5.006000||Viu
EVAL_NULL|5.006000||Viu
EVAL_postponed_AB|5.025010||Viu
EVAL_postponed_AB_fail|5.025010||Viu
+EVAL_postponed_AB_fail_t8|5.035004||Viu
+EVAL_postponed_AB_fail_t8_p8|5.033003||Viu
+EVAL_postponed_AB_fail_t8_pb|5.033003||Viu
+EVAL_postponed_AB_fail_tb|5.035004||Viu
+EVAL_postponed_AB_fail_tb_p8|5.033003||Viu
+EVAL_postponed_AB_fail_tb_pb|5.033003||Viu
+EVAL_postponed_AB_t8|5.035004||Viu
+EVAL_postponed_AB_t8_p8|5.033003||Viu
+EVAL_postponed_AB_t8_pb|5.033003||Viu
+EVAL_postponed_AB_tb|5.035004||Viu
+EVAL_postponed_AB_tb_p8|5.033003||Viu
+EVAL_postponed_AB_tb_pb|5.033003||Viu
eval_pv|5.006000|5.003007|p
EVAL_RE_REPARSING|5.017011||Viu
eval_sv|5.006000|5.003007|p
+EVAL_t8|5.035004||Viu
+EVAL_t8_p8|5.033003||Viu
+EVAL_t8_pb|5.033003||Viu
+EVAL_tb|5.035004||Viu
+EVAL_tb_p8|5.033003||Viu
+EVAL_tb_pb|5.033003||Viu
EVAL_WARNONLY|5.006000||Viu
EXACT|5.004000||Viu
EXACTF|5.004000||Viu
EXACTFAA|5.027009||Viu
EXACTFAA_NO_TRIE|5.027009||Viu
+EXACTFAA_NO_TRIE_t8|5.035004||Viu
+EXACTFAA_NO_TRIE_t8_p8|5.033003||Viu
+EXACTFAA_NO_TRIE_t8_pb|5.033003||Viu
+EXACTFAA_NO_TRIE_tb|5.035004||Viu
+EXACTFAA_NO_TRIE_tb_p8|5.033003||Viu
+EXACTFAA_NO_TRIE_tb_pb|5.033003||Viu
+EXACTFAA_t8|5.035004||Viu
+EXACTFAA_t8_p8|5.033003||Viu
+EXACTFAA_t8_pb|5.033003||Viu
+EXACTFAA_tb|5.035004||Viu
+EXACTFAA_tb_p8|5.033003||Viu
+EXACTFAA_tb_pb|5.033003||Viu
EXACTFL|5.004000||Viu
+EXACTFL_t8|5.035004||Viu
+EXACTFL_t8_p8|5.033003||Viu
+EXACTFL_t8_pb|5.033003||Viu
+EXACTFL_tb|5.035004||Viu
+EXACTFL_tb_p8|5.033003||Viu
+EXACTFL_tb_pb|5.033003||Viu
EXACTFLU8|5.021008||Viu
+EXACTFLU8_t8|5.035004||Viu
+EXACTFLU8_t8_p8|5.033003||Viu
+EXACTFLU8_t8_pb|5.033003||Viu
+EXACTFLU8_tb|5.035004||Viu
+EXACTFLU8_tb_p8|5.033003||Viu
+EXACTFLU8_tb_pb|5.033003||Viu
+EXACTF_t8|5.035004||Viu
+EXACTF_t8_p8|5.033003||Viu
+EXACTF_t8_pb|5.033003||Viu
+EXACTF_tb|5.035004||Viu
+EXACTF_tb_p8|5.033003||Viu
+EXACTF_tb_pb|5.033003||Viu
EXACTFU|5.013008||Viu
EXACTFUP|5.029007||Viu
+EXACTFUP_t8|5.035004||Viu
+EXACTFUP_t8_p8|5.033003||Viu
+EXACTFUP_t8_pb|5.033003||Viu
+EXACTFUP_tb|5.035004||Viu
+EXACTFUP_tb_p8|5.033003||Viu
+EXACTFUP_tb_pb|5.033003||Viu
EXACTFU_REQ8|5.031006||Viu
+EXACTFU_REQ8_t8|5.035004||Viu
+EXACTFU_REQ8_t8_p8|5.033003||Viu
+EXACTFU_REQ8_t8_pb|5.033003||Viu
+EXACTFU_REQ8_tb|5.035004||Viu
+EXACTFU_REQ8_tb_p8|5.033003||Viu
+EXACTFU_REQ8_tb_pb|5.033003||Viu
EXACTFU_S_EDGE|5.029007||Viu
+EXACTFU_S_EDGE_t8|5.035004||Viu
+EXACTFU_S_EDGE_t8_p8|5.033003||Viu
+EXACTFU_S_EDGE_t8_pb|5.033003||Viu
+EXACTFU_S_EDGE_tb|5.035004||Viu
+EXACTFU_S_EDGE_tb_p8|5.033003||Viu
+EXACTFU_S_EDGE_tb_pb|5.033003||Viu
+EXACTFU_t8|5.035004||Viu
+EXACTFU_t8_p8|5.033003||Viu
+EXACTFU_t8_pb|5.033003||Viu
+EXACTFU_tb|5.035004||Viu
+EXACTFU_tb_p8|5.033003||Viu
+EXACTFU_tb_pb|5.033003||Viu
EXACTL|5.021008||Viu
+EXACTL_t8|5.035004||Viu
+EXACTL_t8_p8|5.033003||Viu
+EXACTL_t8_pb|5.033003||Viu
+EXACTL_tb|5.035004||Viu
+EXACTL_tb_p8|5.033003||Viu
+EXACTL_tb_pb|5.033003||Viu
EXACT_REQ8|5.031006||Viu
+EXACT_REQ8_t8|5.035004||Viu
+EXACT_REQ8_t8_p8|5.033003||Viu
+EXACT_REQ8_t8_pb|5.033003||Viu
+EXACT_REQ8_tb|5.035004||Viu
+EXACT_REQ8_tb_p8|5.033003||Viu
+EXACT_REQ8_tb_pb|5.033003||Viu
+EXACT_t8|5.035004||Viu
+EXACT_t8_p8|5.033003||Viu
+EXACT_t8_pb|5.033003||Viu
+EXACT_tb|5.035004||Viu
+EXACT_tb_p8|5.033003||Viu
+EXACT_tb_pb|5.033003||Viu
EXEC_ARGV_CAST|5.007001||Viu
exec_failed|5.009004||Viu
execl|5.005000||Viu
EXEC_PAT_MOD|5.009005||Viu
EXEC_PAT_MODS|5.009005||Viu
-execute_wildcard|5.031009||Viu
+execute_wildcard|5.031010||Viu
execv|5.005000||Viu
execvp|5.005000||Viu
exit|5.005000||Viu
@@ -6102,7 +6709,6 @@ EXTEND_SKIP|5.027002||Viu
EXTERN_C|5.005000|5.003007|pV
EXT_MGVTBL|5.009004||Viu
EXT_PAT_MODS|5.009005||Viu
-EXTPERLIO|5.009003||Viu
EXTRA_SIZE|5.005000||Viu
EXTRA_STEP_2ARGS|5.005000||Viu
F0convert|5.009003||Vniu
@@ -6130,6 +6736,8 @@ fdopen|5.003007||Viu
FD_SET|5.008000||Viu
fd_set|5.008000||Viu
FD_ZERO|5.008000||Viu
+FEATURE_BAREWORD_FILEHANDLES_BIT|5.033006||Viu
+FEATURE_BAREWORD_FILEHANDLES_IS_ENABLED|5.033006||Viu
FEATURE_BITWISE_BIT|5.031006||Viu
FEATURE_BITWISE_IS_ENABLED|5.021009||Viu
FEATURE_BUNDLE_510|5.015007||Viu
@@ -6137,17 +6745,22 @@ FEATURE_BUNDLE_511|5.015007||Viu
FEATURE_BUNDLE_515|5.015007||Viu
FEATURE_BUNDLE_523|5.023001||Viu
FEATURE_BUNDLE_527|5.027008||Viu
+FEATURE_BUNDLE_535|5.035003||Viu
FEATURE_BUNDLE_CUSTOM|5.015007||Viu
FEATURE_BUNDLE_DEFAULT|5.015007||Viu
+FEATURE_DEFER_BIT|5.035004||Viu
+FEATURE_DEFER_IS_ENABLED|5.035004||Viu
FEATURE_EVALBYTES_BIT|5.031006||Viu
FEATURE_EVALBYTES_IS_ENABLED|5.015007||Viu
FEATURE_FC_BIT|5.031006||Viu
FEATURE_FC_IS_ENABLED|5.015008||Viu
-FEATURE_INDIRECT_BIT|5.031009||Viu
-FEATURE_INDIRECT_IS_ENABLED|5.031009||Viu
+FEATURE_INDIRECT_BIT|5.031010||Viu
+FEATURE_INDIRECT_IS_ENABLED|5.031010||Viu
FEATURE_ISA_BIT|5.031007||Viu
FEATURE_ISA_IS_ENABLED|5.031007||Viu
FEATURE_IS_ENABLED_MASK|5.031006||Viu
+FEATURE_MULTIDIMENSIONAL_BIT|5.033001||Viu
+FEATURE_MULTIDIMENSIONAL_IS_ENABLED|5.033001||Viu
FEATURE_MYREF_BIT|5.031006||Viu
FEATURE_MYREF_IS_ENABLED|5.025003||Viu
FEATURE_POSTDEREF_QQ_BIT|5.031006||Viu
@@ -6164,6 +6777,8 @@ FEATURE___SUB___BIT|5.031006||Viu
FEATURE___SUB___IS_ENABLED|5.015007||Viu
FEATURE_SWITCH_BIT|5.031006||Viu
FEATURE_SWITCH_IS_ENABLED|5.015007||Viu
+FEATURE_TRY_BIT|5.033007||Viu
+FEATURE_TRY_IS_ENABLED|5.033007||Viu
FEATURE_UNICODE_BIT|5.031006||Viu
FEATURE_UNICODE_IS_ENABLED|5.015007||Viu
FEATURE_UNIEVAL_BIT|5.031006||Viu
@@ -6197,15 +6812,15 @@ fgetc|5.003007||Viu
fgetpos|5.003007||Viu
fgets|5.003007||Viu
FILE|5.003007||Viu
-FILE_base|5.003007|5.003007|Vn
-FILE_bufsiz|5.003007|5.003007|Vn
-FILE_cnt|5.003007|5.003007|Vn
+FILE_base|5.007000|5.007000|
+FILE_bufsiz|5.007000|5.007000|
+FILE_cnt|5.007000|5.007000|
fileno|5.003007||Viu
-FILE_ptr|5.003007|5.003007|Vn
+FILE_ptr|5.007000|5.007000|
FILL_ADVANCE_NODE_2L_ARG|5.021005||Viu
FILL_ADVANCE_NODE|5.005000||Viu
FILL_ADVANCE_NODE_ARG|5.005000||Viu
-FILL_ADVANCE_NODE_ARGp|5.031009||Viu
+FILL_ADVANCE_NODE_ARGp|5.031010||Viu
FILL_NODE|5.029004||Viu
filter_add|5.003007|5.003007|
FILTER_DATA|5.003007||Viu
@@ -6226,7 +6841,7 @@ find_hash_subscript|5.009004||Viu
find_in_my_stash|5.006001||Viu
find_lexical_cv|5.019001||Viu
find_next_masked|5.027009||Vniu
-find_runcv|5.008001|5.008001|
+find_runcv|5.009005|5.009005|
FIND_RUNCV_level_eq|5.017002||Viu
FIND_RUNCV_padid_eq|5.017004||Viu
find_runcv_where|5.017002||Viu
@@ -6238,6 +6853,9 @@ find_span_end_mask|5.027009||Vniu
find_uninit_var|5.009002||xVi
FIRST_NON_ASCII_DECIMAL_DIGIT|5.027007||Viu
first_symbol|5.009003||Vniu
+FIT_ARENA0|||Viu
+FIT_ARENAn|||Viu
+FIT_ARENA|||Viu
FITS_IN_8_BITS|5.013005||Viu
fixup_errno_string|5.019007||Viu
FLAGS|5.013006||Viu
@@ -6256,14 +6874,14 @@ foldEQ|5.013002|5.013002|n
foldEQ_latin1|5.013008||cVnu
foldEQ_latin1_s2_folded|5.029007||Vniu
foldEQ_locale|5.013002|5.013002|n
-FOLDEQ_LOCALE|5.019009||Viu
-FOLDEQ_S1_ALREADY_FOLDED|5.015004||Viu
-FOLDEQ_S1_FOLDS_SANE|5.021008||Viu
-FOLDEQ_S2_ALREADY_FOLDED|5.015004||Viu
-FOLDEQ_S2_FOLDS_SANE|5.021008||Viu
+FOLDEQ_LOCALE|5.019009||cV
+FOLDEQ_S1_ALREADY_FOLDED|5.015004||cV
+FOLDEQ_S1_FOLDS_SANE|5.021008||cV
+FOLDEQ_S2_ALREADY_FOLDED|5.015004||cV
+FOLDEQ_S2_FOLDS_SANE|5.021008||cV
foldEQ_utf8|5.013002|5.007003|p
foldEQ_utf8_flags|5.013010||cVu
-FOLDEQ_UTF8_NOMIX_ASCII|5.013010||Viu
+FOLDEQ_UTF8_NOMIX_ASCII|5.013010||cV
FOLD_FLAGS_FULL|5.015006||Viu
FOLD_FLAGS_LOCALE|5.015006||Viu
FOLD_FLAGS_NOMIX_ASCII|5.017000||Viu
@@ -6278,23 +6896,23 @@ force_strict_version|5.011004||Viu
force_version|5.005000||Viu
force_word|5.003007||Viu
forget_pmop|5.017007||Viu
-form|5.006000|5.004000|v
+form|5.004000||vV
form_alien_digit_msg|5.031009||cViu
form_cp_too_large_msg|5.031009||cViu
-form_nocontext|5.006000|5.006000|vn
+form_nocontext|5.006000||vVn
fp_dup|5.007003|5.007003|u
Fpos_t|5.003007|5.003007|Vn
F_pow_amg|5.004000||Viu
FP_PINF|5.021004||Viu
FP_QNAN|5.021004||Viu
fprintf|5.003007||Viu
-fprintf_nocontext|5.006000|5.006000|vdnu
+fprintf_nocontext|5.006000||vdVnu
FPTR2DPTR|5.009003||Viu
fputc|5.003007||Viu
fputs|5.003007||Viu
fread|5.003007||Viu
free|5.003007||Viu
-free_and_set_cop_warnings|5.031010||Viu
+free_and_set_cop_warnings|5.031011||Viu
free_c_backtrace|5.021001||Vi
FreeOp|5.008001||Viu
Free_t|5.003007|5.003007|Vn
@@ -6320,7 +6938,7 @@ FUNCTION|5.009003||Viu
funlockfile|5.003007||Viu
fwrite1|5.003007||Viu
fwrite|5.003007||Viu
-G_ARRAY|5.003007|5.003007|
+G_ARRAY|5.003007||Viu
GCB_BREAKABLE|5.025003||Viu
GCB_EX_then_EM|5.025003||Viu
GCB_Maybe_Emoji_NonBreak|5.029002||Viu
@@ -6333,8 +6951,8 @@ GCC_DIAG_PRAGMA|5.021001||Viu
GCC_DIAG_RESTORE|5.019007||Viu
GCC_DIAG_RESTORE_DECL|5.027007||Viu
GCC_DIAG_RESTORE_STMT|5.027007||Viu
-Gconvert|5.003007|5.003007|Vn
-GDBMNDBM_H_USES_PROTOTYPES|5.031006|5.031006|Vn
+Gconvert|5.003007|5.003007|
+GDBMNDBM_H_USES_PROTOTYPES|5.032001|5.032001|Vn
G_DISCARD|5.003007|5.003007|
gen_constant_list|5.003007||Viu
get_and_check_backslash_N_name|5.017006||cViu
@@ -6355,10 +6973,13 @@ get_cvs|5.011000|5.003007|p
getcwd_sv|5.007002|5.007002|
get_db_sub|||iu
get_debug_opts|5.008001||Viu
-get_deprecated_property_msg|5.031010||cVniu
+get_deprecated_property_msg|5.031011||cVniu
getegid|5.005000||Viu
getenv|5.005000||Viu
getenv_len|5.006000||Viu
+GETENV_LOCK|5.033005||Viu
+GETENV_PRESERVES_OTHER_THREAD|5.033005|5.033005|Vn
+GETENV_UNLOCK|5.033005||Viu
geteuid|5.005000||Viu
getgid|5.005000||Viu
getgrent|5.009000||Viu
@@ -6421,8 +7042,8 @@ get_op_names|5.005000|5.005000|u
getpeername|5.005000||Viu
getpid|5.006000||Viu
get_ppaddr|5.006000|5.006000|u
-get_prop_definition|5.031010||cViu
-get_prop_values|5.031010||cVniu
+get_prop_definition|5.031011||cViu
+get_prop_values|5.031011||cVniu
getprotobyname|5.005000||Viu
GETPROTOBYNAME_R_HAS_BUFFER|5.008000||Viu
GETPROTOBYNAME_R_HAS_PTR|5.008000||Viu
@@ -6447,9 +7068,10 @@ GETPWNAM_R_PROTO|5.008000|5.008000|Vn
getpwuid|5.009000||Viu
GETPWUID_R_HAS_PTR|5.008000||Viu
GETPWUID_R_PROTO|5.008000|5.008000|Vn
+get_quantifier_value|5.033006||Viu
get_re_arg|||xciu
-get_re_gclass_nonbitmap_data|5.031010||Viu
-get_regclass_nonbitmap_data|5.031010||Viu
+get_re_gclass_nonbitmap_data|5.031011||Viu
+get_regclass_nonbitmap_data|5.031011||Viu
get_regex_charset_name|5.031004||Vniu
getservbyname|5.005000||Viu
GETSERVBYNAME_R_HAS_BUFFER|5.008000||Viu
@@ -6466,7 +7088,7 @@ GETSERVENT_R_PROTO|5.008000|5.008000|Vn
getsockname|5.005000||Viu
getsockopt|5.005000||Viu
getspnam|5.009000||Viu
-GETSPNAM_R_HAS_BUFFER|5.031010||Viu
+GETSPNAM_R_HAS_BUFFER|5.031011||Viu
GETSPNAM_R_HAS_PTR|5.008000||Viu
GETSPNAM_R_PROTO|5.008000|5.008000|Vn
get_sv|5.006000|5.003007|p
@@ -6486,21 +7108,34 @@ GIMME|5.003007|5.003007|d
GIMME_V|5.004000|5.004000|
gimme_V|5.031005||xcVu
G_KEEPERR|5.003007|5.003007|
+G_LIST|5.035001|5.003007|
glob_2number|5.009004||Viu
GLOBAL_PAT_MOD|5.009005||Viu
glob_assign_glob|5.009004||Viu
G_METHOD|5.006001|5.003007|p
G_METHOD_NAMED|5.019002|5.019002|
-gmtime|5.031010||Viu
+gmtime|5.031011||Viu
GMTIME_MAX|5.010001|5.010001|Vn
GMTIME_MIN|5.010001|5.010001|Vn
GMTIME_R_PROTO|5.008000|5.008000|Vn
G_NOARGS|5.003007|5.003007|
G_NODEBUG|5.004005||Viu
GOSUB|5.009005||Viu
+GOSUB_t8|5.035004||Viu
+GOSUB_t8_p8|5.033003||Viu
+GOSUB_t8_pb|5.033003||Viu
+GOSUB_tb|5.035004||Viu
+GOSUB_tb_p8|5.033003||Viu
+GOSUB_tb_pb|5.033003||Viu
gp_dup|5.007003|5.007003|u
gp_free|5.003007|5.003007|u
GPOS|5.004000||Viu
+GPOS_t8|5.035004||Viu
+GPOS_t8_p8|5.033003||Viu
+GPOS_t8_pb|5.033003||Viu
+GPOS_tb|5.035004||Viu
+GPOS_tb_p8|5.033003||Viu
+GPOS_tb_pb|5.033003||Viu
gp_ref|5.003007|5.003007|u
GREEK_CAPITAL_LETTER_MU|5.013011||Viu
GREEK_SMALL_LETTER_MU|5.013008||Viu
@@ -6523,6 +7158,18 @@ grok_oct|5.007003|5.003007|p
group_end|5.007003||Viu
GROUPP|5.005000||Viu
GROUPPN|5.031001||Viu
+GROUPPN_t8|5.035004||Viu
+GROUPPN_t8_p8|5.033003||Viu
+GROUPPN_t8_pb|5.033003||Viu
+GROUPPN_tb|5.035004||Viu
+GROUPPN_tb_p8|5.033003||Viu
+GROUPPN_tb_pb|5.033003||Viu
+GROUPP_t8|5.035004||Viu
+GROUPP_t8_p8|5.033003||Viu
+GROUPP_t8_pb|5.033003||Viu
+GROUPP_tb|5.035004||Viu
+GROUPP_tb_p8|5.033003||Viu
+GROUPP_tb_pb|5.033003||Viu
Groups_t|5.003007|5.003007|Vn
GRPASSWD|5.005000|5.005000|Vn
G_SCALAR|5.003007|5.003007|
@@ -6540,9 +7187,9 @@ GvASSUMECV_on|5.003007||Viu
gv_autoload4|5.004000|5.004000|
GV_AUTOLOAD|5.011000||Viu
GV_AUTOLOAD_ISMETHOD|5.015004||Viu
-gv_autoload_pv|5.015004|5.015004|
-gv_autoload_pvn|5.015004|5.015004|
-gv_autoload_sv|5.015004|5.015004|
+gv_autoload_pv|5.015004|5.015004|u
+gv_autoload_pvn|5.015004|5.015004|u
+gv_autoload_sv|5.015004|5.015004|u
GvAV|5.003007|5.003007|
gv_AVadd|5.003007|5.003007|u
GvAVn|5.003007||Viu
@@ -6601,6 +7248,7 @@ GVf_IMPORTED_SV|5.003007||Viu
GVf_INTRO|5.003007||Viu
GvFLAGS|5.003007||Viu
GVf_MULTI|5.003007||Viu
+GVF_NOADD|5.035006||Viu
GvFORM|5.003007||Viu
gv_fullname3|5.003007|5.003007|u
gv_fullname4|5.006001|5.006001|u
@@ -6663,6 +7311,7 @@ GV_NOEXPAND|5.009003|5.009003|
GV_NOINIT|5.004005|5.004005|
GV_NO_SVGMAGIC|5.015003|5.015003|
GV_NOTQUAL|5.009004|5.009004|
+GV_NOUNIVERSAL|5.033009||Viu
G_VOID|5.004000|5.004000|
gv_override|5.019006||Viu
GvREFCNT|5.003007||Viu
@@ -6688,8 +7337,9 @@ G_WARN_OFF|5.006000||Viu
G_WARN_ON|5.006000||Viu
G_WARN_ONCE|5.006000||Viu
G_WRITING_TO_STDERR|5.013009||Viu
+HADNV|||Viu
handle_named_backref|5.023008||Viu
-handle_names_wildcard|5.031010||Viu
+handle_names_wildcard|5.031011||Viu
handle_possible_posix|5.023008||Viu
handle_regex_sets|5.017009||Viu
handle_user_defined_property|5.029008||Viu
@@ -6697,6 +7347,7 @@ HAS_ACCEPT4|5.027008|5.027008|Vn
HAS_ACCESS|5.006000|5.006000|Vn
HAS_ACOSH|5.021004|5.021004|Vn
HAS_ALARM|5.003007|5.003007|Vn
+HASARENA|||Viu
HAS_ASCTIME_R|5.010000|5.010000|Vn
HAS_ASINH|5.021006|5.021006|Vn
HAS_ATANH|5.021006|5.021006|Vn
@@ -6711,9 +7362,9 @@ HASATTRIBUTE_PURE|5.009003|5.009003|Vn
HASATTRIBUTE_UNUSED|5.009003|5.009003|Vn
HASATTRIBUTE_WARN_UNUSED_RESULT|5.009003|5.009003|Vn
HAS_BACKTRACE|5.021001|5.021001|Vn
-HAS_BOOL|5.003007||Viu
HAS_BUILTIN_CHOOSE_EXPR|5.009004|5.009004|Vn
HAS_BUILTIN_EXPECT|5.010001|5.010001|Vn
+HAS_BUILTIN_UNREACHABLE|5.033003||Viu
HAS_C99|5.021004||Viu
HAS_C99_VARIADIC_MACROS|5.009004|5.009004|Vn
HAS_CBRT|5.021006|5.021006|Vn
@@ -6730,7 +7381,7 @@ HAS_CSH|5.005000|5.005000|Vn
HAS_CTERMID|5.009005|5.009005|Vn
HAS_CTIME_R|5.010000|5.010000|Vn
HAS_CUSERID|5.003007|5.003007|Vn
-HAS_DBMINIT_PROTO|5.031006|5.031006|Vn
+HAS_DBMINIT_PROTO|5.032001|5.032001|Vn
HAS_DIFFTIME|5.003007|5.003007|Vn
HAS_DIRFD|5.007003|5.007003|Vn
HAS_DLADDR|5.021001|5.021001|Vn
@@ -6751,6 +7402,7 @@ HAS_ERF|5.021006|5.021006|Vn
HAS_ERFC|5.021006|5.021006|Vn
HAS_EXP2|5.021006|5.021006|Vn
HAS_EXPM1|5.021006|5.021006|Vn
+HAS_EXTRA_LONG_UTF8|5.035004||Viu
HAS_FAST_STDIO|5.008001|5.008001|Vn
HAS_FCHDIR|5.007002|5.007002|Vn
HAS_FCHMOD|5.003007|5.003007|Vn
@@ -6760,6 +7412,8 @@ HAS_FCNTL|5.003007|5.003007|Vn
HAS_FDIM|5.021006|5.021006|Vn
HAS_FD_SET|5.006000|5.006000|Vn
HAS_FEGETROUND|5.021004|5.021004|Vn
+HAS_FFS|5.035001|5.035001|Vn
+HAS_FFSL|5.035001|5.035001|Vn
HAS_FGETPOS|5.003007|5.003007|Vn
HAS_FINITE|5.007003|5.007003|Vn
HAS_FINITEL|5.007003|5.007003|Vn
@@ -6922,6 +7576,10 @@ HAS_NEXTAFTER|5.021006|5.021006|Vn
HAS_NEXTTOWARD|5.021006|5.021006|Vn
HAS_NICE|5.003007|5.003007|Vn
HAS_NL_LANGINFO|5.007002|5.007002|Vn
+HAS_NL_LANGINFO_L|5.035001|5.035001|Vn
+HAS_NON_INT_BITFIELDS|5.035001|5.035001|Vn
+HAS_NONLATIN1_FOLD_CLOSURE|5.033005||Viu
+HAS_NONLATIN1_SIMPLE_FOLD_CLOSURE|5.033005||Viu
HAS_NTOHL|5.003007|5.003007|Vn
HAS_NTOHS|5.003007|5.003007|Vn
HAS_OFF64_T|5.010000|5.010000|Vn
@@ -7008,7 +7666,7 @@ HAS_SIN6_SCOPE_ID|5.013009|5.013009|Vn
HAS_SKIP_LOCALE_INIT|5.019002||Viu
HAS_SNPRINTF|5.009003|5.009003|Vn
HAS_SOCKADDR_IN6|5.015008|5.015008|Vn
-HAS_SOCKADDR_STORAGE|5.032000|5.032000|Vn
+HAS_SOCKADDR_STORAGE|5.032001|5.032001|Vn
HAS_SOCKATMARK|5.007001|5.007001|Vn
HAS_SOCKATMARK_PROTO|5.007002|5.007002|Vn
HAS_SOCKET|5.003007|5.003007|Vn
@@ -7038,6 +7696,7 @@ HAS_STRUCT_MSGHDR|5.007001|5.007001|Vn
HAS_STRUCT_STATFS|5.023005|5.023005|Vn
HAS_STRUCT_STATFS_F_FLAGS|5.023005|5.023005|Vn
HAS_STRXFRM|5.003007|5.003007|Vn
+HAS_STRXFRM_L|5.035001|5.035001|Vn
HAS_SYMLINK|5.003007|5.003007|Vn
HAS_SYSCALL|5.003007|5.003007|Vn
HAS_SYSCALL_PROTO|5.007002|5.007002|Vn
@@ -7085,6 +7744,7 @@ HAS_WCSTOMBS|5.003007|5.003007|Vn
HAS_WCSXFRM|5.021001|5.021001|Vn
HAS_WCTOMB|5.003007|5.003007|Vn
HAS_WRITEV|5.007001|5.007001|Vn
+HE_ARENA_ROOT_IX|5.035005||Viu
he_dup|5.007003|5.007003|u
HEf_SVKEY|5.003007|5.003007|p
HeHASH|5.003007|5.003007|
@@ -7116,12 +7776,12 @@ HePV|5.004000|5.004000|
HeSVKEY|5.003007|5.003007|
HeSVKEY_force|5.003007|5.003007|
HeSVKEY_set|5.004000|5.004000|
-HE_SVSLOT|5.009003||Viu
HeUTF8|5.010001|5.008000|p
HeVAL|5.003007|5.003007|
hfree_next_entry|||iu
HIGHEST_ANYOF_HRx_BYTE|5.031002||Viu
-HIGHEST_CASE_CHANGING_CP_FOR_USE_ONLY_BY_UTF8_DOT_C|5.023006||Viu
+HIGHEST_CASE_CHANGING_CP|5.033005||Viu
+HINT_ALL_STRICT|5.033002||Viu
HINT_BLOCK_SCOPE|5.003007||Viu
HINT_BYTES|5.007002||Viu
HINT_EXPLICIT_STRICT_REFS|5.016000||Viu
@@ -7145,8 +7805,7 @@ HINT_NO_AMAGIC|5.010001||Viu
HINT_RE_EVAL|5.005000||Viu
HINT_RE_FLAGS|5.013007||Viu
HINT_RE_TAINT|5.004005||Viu
-HINT_SORT_STABLE|5.007003||Viu
-HINT_SORT_UNSTABLE|5.027004||Viu
+HINTS_DEFAULT|5.033002||Viu
HINTS_REFCNT_INIT|5.009004||Viu
HINTS_REFCNT_LOCK|5.009004||Viu
HINTS_REFCNT_TERM|5.009004||Viu
@@ -7183,19 +7842,20 @@ HvAMAGIC|5.017000||Viu
HvAMAGIC_off|5.017000||Viu
HvAMAGIC_on|5.017000||Viu
HvARRAY|5.003007||Viu
-hv_assert|||c
+hv_assert|||
HvAUX|5.009003||Viu
+hv_auxalloc|||iu
+HVAUX_ARENA_ROOT_IX|5.035005||Viu
HvAUXf_NO_DEREF|5.019010||Viu
HvAUXf_SCAN_STASH|5.019010||Viu
hv_auxinit|5.009003||Viu
-hv_auxinit_internal|5.019010||Vniu
hv_backreferences_p|||xiu
hv_bucket_ratio|5.025003|5.025003|x
hv_clear|5.003007|5.003007|
hv_clear_placeholders|5.009001|5.009001|
hv_common|5.010000||cVu
hv_common_key_len|5.010000||cVu
-hv_copy_hints_hv|5.009004|5.009004|
+hv_copy_hints_hv|5.013005|5.013005|
hv_delayfree_ent|5.004000|5.004000|u
hv_delete|5.003007|5.003007|
HV_DELETE|5.009005||Viu
@@ -7206,9 +7866,9 @@ hv_deletes|5.025006||Viu
HV_DISABLE_UVAR_XKEY|5.010000||Viu
HvEITER|5.003007||Viu
HvEITER_get|5.009003||Viu
-hv_eiter_p|5.009003|5.009003|u
-hv_eiter_set|5.009003|5.009003|u
+hv_eiter_p|||u
HvEITER_set|5.009003||Viu
+hv_eiter_set|||u
HvENAME|5.013007|5.013007|
hv_ename_add|5.013007||Vi
hv_ename_delete|5.013007||Vi
@@ -7220,6 +7880,7 @@ HvENAMELEN_get|5.013007||Viu
HvENAMEUTF8|5.015004|5.015004|
hv_exists|5.003007|5.003007|
hv_exists_ent|5.003007|5.003007|
+hv_existshek|5.035003||Viu
hv_existss|5.025006||Viu
hv_fetch|5.003007|5.003007|
HV_FETCH_EMPTY_HE|5.013007||Viu
@@ -7230,8 +7891,8 @@ HV_FETCH_ISSTORE|5.009005||Viu
HV_FETCH_JUST_SV|5.009005||Viu
HV_FETCH_LVALUE|5.009005||Viu
hv_fetchs|5.009003|5.003007|p
+hv_fill|||
HvFILL|5.003007|5.003007|
-hv_fill|5.013002|5.013002|
hv_free_ent|5.004000|5.004000|u
hv_free_ent_ret|5.015000||Viu
hv_free_entries|5.027002||Viu
@@ -7264,9 +7925,9 @@ HvLAZYDEL_on|5.003007||Viu
hv_magic|5.003007|5.003007|
hv_magic_check|5.006000||Vniu
HvMAX|5.003007||Viu
-HvMROMETA|5.009005||Viu
+HvMROMETA|5.010001|5.010001|
HvNAME|5.003007|5.003007|
-HvNAME_get|5.009003|5.003007|pocV
+HvNAME_get|5.009003||pcV
HvNAME_HEK|5.009003||Viu
HvNAME_HEK_NN|5.013007||Viu
HvNAMELEN|5.015004|5.015004|
@@ -7277,11 +7938,11 @@ hv_name_sets|5.025006||Viu
HvNAMEUTF8|5.015004|5.015004|
hv_notallowed|5.008000||Viu
HvPLACEHOLDERS|5.007003||Viu
-hv_placeholders_get|5.009003|5.009003|u
HvPLACEHOLDERS_get|5.009003||Viu
+hv_placeholders_get|||u
hv_placeholders_p|||ciu
-hv_placeholders_set|5.009003|5.009003|u
HvPLACEHOLDERS_set|5.009003||Viu
+hv_placeholders_set|||u
hv_pushkv|5.027003||Viu
HvRAND_get|5.017011||Viu
hv_rand_set|5.018000|5.018000|u
@@ -7294,9 +7955,9 @@ HVrhek_undef|5.009004||Viu
HVrhek_UV|5.009004||Viu
HvRITER|5.003007||Viu
HvRITER_get|5.009003||Viu
-hv_riter_p|5.009003|5.009003|u
-hv_riter_set|5.009003|5.009003|u
+hv_riter_p|||u
HvRITER_set|5.009003||Viu
+hv_riter_set|||u
hv_scalar|5.009001|5.009001|
HvSHAREKEYS|5.003007||Viu
HvSHAREKEYS_off|5.003007||Viu
@@ -7315,7 +7976,7 @@ I16_MAX|5.003007||Viu
I16_MIN|5.003007||Viu
I16SIZE|5.006000|5.006000|Vn
I16TYPE|5.006000|5.006000|Vn
-I_32|5.003007||Viu
+I_32|5.006000|5.003007|
I32_MAX|5.003007||Viu
I32_MAX_P1|5.007002||Viu
I32_MIN|5.003007||Viu
@@ -7332,7 +7993,7 @@ ibcmp|5.003007|5.003007|
ibcmp_locale|5.004000|5.004000|
ibcmp_utf8|5.007003|5.007003|
I_CRYPT|5.008000|5.008000|Vn
-I_DBM|5.031006|5.031006|Vn
+I_DBM|5.032001|5.032001|Vn
I_DIRENT|5.003007|5.003007|Vn
I_DLFCN|5.003007|5.003007|Vn
I_EXECINFO|5.021001|5.021001|Vn
@@ -7340,7 +8001,31 @@ I_FENV|5.021004|5.021004|Vn
IFMATCH|5.003007||Viu
IFMATCH_A|5.009005||Viu
IFMATCH_A_fail|5.009005||Viu
+IFMATCH_A_fail_t8|5.035004||Viu
+IFMATCH_A_fail_t8_p8|5.033003||Viu
+IFMATCH_A_fail_t8_pb|5.033003||Viu
+IFMATCH_A_fail_tb|5.035004||Viu
+IFMATCH_A_fail_tb_p8|5.033003||Viu
+IFMATCH_A_fail_tb_pb|5.033003||Viu
+IFMATCH_A_t8|5.035004||Viu
+IFMATCH_A_t8_p8|5.033003||Viu
+IFMATCH_A_t8_pb|5.033003||Viu
+IFMATCH_A_tb|5.035004||Viu
+IFMATCH_A_tb_p8|5.033003||Viu
+IFMATCH_A_tb_pb|5.033003||Viu
+IFMATCH_t8|5.035004||Viu
+IFMATCH_t8_p8|5.033003||Viu
+IFMATCH_t8_pb|5.033003||Viu
+IFMATCH_tb|5.035004||Viu
+IFMATCH_tb_p8|5.033003||Viu
+IFMATCH_tb_pb|5.033003||Viu
IFTHEN|5.005000||Viu
+IFTHEN_t8|5.035004||Viu
+IFTHEN_t8_p8|5.033003||Viu
+IFTHEN_t8_pb|5.033003||Viu
+IFTHEN_tb|5.035004||Viu
+IFTHEN_tb_p8|5.033003||Viu
+IFTHEN_tb_pb|5.033003||Viu
I_GDBM|5.021007|5.021007|Vn
I_GDBMNDBM|5.021007|5.021007|Vn
IGNORE_PAT_MOD|5.009005||Viu
@@ -7371,7 +8056,7 @@ INCPUSH_SITEARCH_EXP|5.027006||Viu
INCPUSH_SITELIB_EXP|5.027006||Viu
INCPUSH_SITELIB_STEM|5.027006||Viu
incpush_use_sep|5.011000||Viu
-I_NDBM|5.031006|5.031006|Vn
+I_NDBM|5.032001|5.032001|Vn
inet_addr|5.005000||Viu
I_NETDB|5.005000|5.005000|Vn
I_NETINET_IN|5.003007|5.003007|Vn
@@ -7415,19 +8100,28 @@ IN_PERL_COMPILETIME|5.008001|5.003007|p
IN_PERL_RUNTIME|5.008001|5.008001|
inplace_aassign|5.015003||Viu
inRANGE|5.029010||Viu
+inRANGE_helper|5.033005||Viu
IN_SOME_LOCALE_FORM|5.015008||Viu
IN_SOME_LOCALE_FORM_COMPILETIME|5.015008||Viu
IN_SOME_LOCALE_FORM_RUNTIME|5.015008||Viu
instr|5.003007|5.003007|n
INSUBP|5.009005||Viu
+INSUBP_t8|5.035004||Viu
+INSUBP_t8_p8|5.033003||Viu
+INSUBP_t8_pb|5.033003||Viu
+INSUBP_tb|5.035004||Viu
+INSUBP_tb_p8|5.033003||Viu
+INSUBP_tb_pb|5.033003||Viu
+INT16_C|5.003007|5.003007|
INT2PTR|5.006000|5.003007|p
+INT32_C|5.003007|5.003007|
INT32_MIN|5.007002||Viu
-INT64_C|5.007001||Viu
+INT64_C|5.023002|5.023002|
INT64_MIN|5.007002||Viu
INT_64_T|5.011000||Viu
INTMAX_C|5.003007|5.003007|
INT_PAT_MODS|5.009005||Viu
-intro_my|5.004000|5.004000|
+intro_my|5.021006|5.021006|
INTSIZE|5.003007|5.003007|Vn
intuit_method|5.005000||Viu
intuit_more|5.003007||Viu
@@ -7464,7 +8158,7 @@ _invlist_subtract|5.015001||Viu
invlist_trim|5.013010||Vniu
_invlist_union|5.015001||cVu
_invlist_union_maybe_complement_2nd|5.015008||cViu
-invmap_dump|5.031007||Viu
+invmap_dump|5.031006||Viu
invoke_exception_hook|5.013001||Viu
IoANY|5.006001||Viu
IoBOTTOM_GV|5.003007||Viu
@@ -7581,9 +8275,6 @@ isBLANK_utf8|5.031005|5.031005|
isBLANK_utf8_safe|5.025009|5.006000|p
isBLANK_uvchr|5.023009|5.006000|p
isC9_STRICT_UTF8_CHAR|5.025005|5.025005|n
-is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks|5.025005||Viu
-is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part0|5.025008||Viu
-is_C9_STRICT_UTF8_CHAR_utf8_no_length_checks_part1|5.025008||Viu
is_c9strict_utf8_string|5.025006|5.025006|n
is_c9strict_utf8_string_loc|5.025006|5.025006|n
is_c9strict_utf8_string_loclen|5.025006|5.025006|n
@@ -7600,7 +8291,7 @@ isCNTRL_utf8|5.031005|5.031005|
isCNTRL_utf8_safe|5.025009|5.006000|p
isCNTRL_uvchr|5.023009|5.006000|p
_is_cur_LC_category_utf8|5.021001||cVu
-isDEBUG_WILDCARD|5.031010||Viu
+isDEBUG_WILDCARD|5.031011||Viu
isDIGIT|5.003007|5.003007|p
isDIGIT_A|5.013006|5.003007|p
isDIGIT_L1|5.013006|5.003007|p
@@ -7612,9 +8303,11 @@ isDIGIT_uni|5.006000||Viu
isDIGIT_utf8|5.031005|5.031005|
isDIGIT_utf8_safe|5.025009|5.006000|p
isDIGIT_uvchr|5.023009|5.006000|p
-isFF_OVERLONG|5.025007||Vniu
+isEXACTFish|5.033003||Viu
+isEXACT_REQ8|5.033003||Viu
+isFF_overlong|5.035004||Vniu
is_FOLDS_TO_MULTI_utf8|5.019009||Viu
-isFOO_lc|5.017007||cViu
+isFOO_lc|5.017007||Viu
isFOO_utf8_lc|5.017008||Viu
isGCB|5.021009||Viu
isGRAPH|5.006000|5.003007|p
@@ -7665,8 +8358,10 @@ isIDFIRST_uvchr|5.023009|5.006000|p
isinfnan|5.021004|5.021004|n
isinfnansv|5.021005||Vi
_is_in_locale_category|5.021001||cViu
+IS_IN_SOME_FOLD_L1|5.033005||Viu
is_invariant_string|5.021007|5.011000|pn
is_invlist|5.029002||Vniu
+is_LARGER_NON_CHARS_utf8|5.035003||Viu
is_LAX_VERSION|5.011004||Viu
isLB|5.023007||Viu
isLEXWARN_off|5.006000||Viu
@@ -7694,6 +8389,7 @@ is_MULTI_CHAR_FOLD_utf8_safe_part1|5.019010||Viu
is_MULTI_CHAR_FOLD_utf8_safe_part2|5.025008||Viu
is_MULTI_CHAR_FOLD_utf8_safe_part3|5.025008||Viu
is_NONCHAR_utf8_safe|5.025005||Viu
+IS_NON_FINAL_FOLD|5.033005||Viu
isnormal|5.021004||Viu
IS_NUMBER_GREATER_THAN_UV_MAX|5.007002|5.003007|p
IS_NUMBER_INFINITY|5.007002|5.003007|p
@@ -7708,7 +8404,6 @@ isOCTAL_A|5.013006|5.003007|p
isOCTAL_L1|5.013006|5.003007|p
IS_PADCONST|5.006000||Viu
IS_PADGV|5.006000||Viu
-is_PATWS_cp|5.017008||Viu
is_PATWS_safe|5.017008||Viu
isPOWER_OF_2|5.029006||Viu
isPRINT|5.004000|5.003007|p
@@ -7749,14 +8444,13 @@ isPUNCT_utf8|5.031005|5.031005|
isPUNCT_utf8_safe|5.025009|5.006000|p
isPUNCT_uvchr|5.023009|5.006000|p
is_QUOTEMETA_high|5.017004||Viu
-is_QUOTEMETA_high_part0|5.021001||Viu
-is_QUOTEMETA_high_part1|5.021001||Viu
isREGEXP|5.017006||Viu
IS_SAFE_PATHNAME|5.019004||Viu
IS_SAFE_SYSCALL|5.019004|5.019004|
is_safe_syscall|5.019004|5.019004|
isSB|5.021009||Viu
isSCRIPT_RUN|5.027008||cVi
+is_SHORTER_NON_CHARS_utf8|5.035003||Viu
isSPACE|5.003007|5.003007|p
isSPACE_A|5.013006|5.003007|p
isSPACE_L1|5.013006|5.003007|p
@@ -7770,15 +8464,11 @@ isSPACE_utf8_safe|5.025009|5.006000|p
isSPACE_uvchr|5.023009|5.006000|p
is_ssc_worth_it|5.021005||Vniu
isSTRICT_UTF8_CHAR|5.025005|5.025005|n
-is_STRICT_UTF8_CHAR_utf8_no_length_checks|5.025005||Viu
-is_STRICT_UTF8_CHAR_utf8_no_length_checks_part0|5.025005||Viu
-is_STRICT_UTF8_CHAR_utf8_no_length_checks_part1|5.025005||Viu
-is_STRICT_UTF8_CHAR_utf8_no_length_checks_part2|5.025008||Viu
-is_STRICT_UTF8_CHAR_utf8_no_length_checks_part3|5.025008||Viu
is_strict_utf8_string|5.025006|5.025006|n
is_strict_utf8_string_loc|5.025006|5.025006|n
is_strict_utf8_string_loclen|5.025006|5.025006|n
is_STRICT_VERSION|5.011004||Viu
+is_SURROGATE_utf8|5.035004||Viu
is_SURROGATE_utf8_safe|5.025005||Viu
I_STDARG|5.003007||Viu
I_STDBOOL|5.015003|5.015003|Vn
@@ -7788,6 +8478,7 @@ is_THREE_CHAR_FOLD_HEAD_utf8_safe|5.031007||Viu
is_THREE_CHAR_FOLD_latin1_safe|5.031007||Viu
is_THREE_CHAR_FOLD_utf8_safe|5.031007||Viu
IS_TRIE_AC|5.009005||Viu
+isUNICODE_POSSIBLY_PROBLEMATIC|5.035004||Viu
_is_uni_FOO|5.017008||cVu
_is_uni_perl_idcont|5.017008||cVu
_is_uni_perl_idstart|5.017007||cVu
@@ -7806,11 +8497,10 @@ is_utf8_char|5.006000|5.006000|dn
IS_UTF8_CHAR|5.009003||Viu
isUTF8_CHAR|5.021001|5.006001|pn
is_utf8_char_buf|5.015008|5.015008|n
-isUTF8_CHAR_flags|5.025005|5.025005|
-is_utf8_char_helper|5.031004||cVnu
-is_UTF8_CHAR_utf8_no_length_checks|5.021001||Viu
+isUTF8_CHAR_flags|5.025005|5.025005|n
+is_utf8_char_helper_|5.035004||cVnu
is_utf8_common|5.009003||Viu
-is_utf8_cp_above_31_bits|5.025005||Vniu
+is_utf8_FF_helper_|5.035004||cVnu
is_utf8_fixed_width_buf_flags|5.025006|5.025006|n
is_utf8_fixed_width_buf_loc_flags|5.025006|5.025006|n
is_utf8_fixed_width_buf_loclen_flags|5.025006|5.025006|n
@@ -7818,7 +8508,7 @@ _is_utf8_FOO|5.031006||cVu
is_utf8_invariant_string|5.025005|5.011000|pn
is_utf8_invariant_string_loc|5.027001|5.027001|n
is_utf8_non_invariant_string|5.027007||cVni
-is_utf8_overlong_given_start_byte_ok|5.025006||Vniu
+is_utf8_overlong|5.035004||Vniu
_is_utf8_perl_idcont|5.031006||cVu
_is_utf8_perl_idstart|5.031006||cVu
isUTF8_POSSIBLY_PROBLEMATIC|5.023003||Viu
@@ -7893,13 +8583,13 @@ I_TIME|5.003007|5.003007|Vn
I_UNISTD|5.003007|5.003007|Vn
I_USTAT|5.023005|5.023005|Vn
I_UTIME|5.003007|5.003007|Vn
-I_V|5.003007||Viu
-IVdf|5.006000|5.003007|p
+I_V|5.006000|5.003007|
+IVdf|5.006000|5.003007|poVn
IV_DIG|5.006000||Viu
IV_IS_QUAD|5.006000||Viu
-IV_MAX|5.003007|5.003007|oVnu
+IV_MAX|5.003007|5.003007|
IV_MAX_P1|5.007002||Viu
-IV_MIN|5.003007|5.003007|oVnu
+IV_MIN|5.003007|5.003007|
IVSIZE|5.006000|5.003007|poVn
IVTYPE|5.006000|5.003007|poVn
I_WCHAR|5.027006|5.027006|Vn
@@ -7911,7 +8601,7 @@ JE_OLD_STACK_HWM_save|5.027002||Viu
JE_OLD_STACK_HWM_zero|5.027002||Viu
jmaybe|5.003007||Viu
JMPENV_BOOTSTRAP|5.006000||Viu
-JMPENV_JUMP|5.004000||Viu
+JMPENV_JUMP|5.004000|5.004000|
JMPENV_POP|5.004000||Viu
JMPENV_PUSH|5.004000||Viu
JOIN|5.005000||Viu
@@ -7923,6 +8613,24 @@ KEEPCOPY_PAT_MODS|5.009005||Viu
KEEPS|5.009005||Viu
KEEPS_next|5.009005||Viu
KEEPS_next_fail|5.009005||Viu
+KEEPS_next_fail_t8|5.035004||Viu
+KEEPS_next_fail_t8_p8|5.033003||Viu
+KEEPS_next_fail_t8_pb|5.033003||Viu
+KEEPS_next_fail_tb|5.035004||Viu
+KEEPS_next_fail_tb_p8|5.033003||Viu
+KEEPS_next_fail_tb_pb|5.033003||Viu
+KEEPS_next_t8|5.035004||Viu
+KEEPS_next_t8_p8|5.033003||Viu
+KEEPS_next_t8_pb|5.033003||Viu
+KEEPS_next_tb|5.035004||Viu
+KEEPS_next_tb_p8|5.033003||Viu
+KEEPS_next_tb_pb|5.033003||Viu
+KEEPS_t8|5.035004||Viu
+KEEPS_t8_p8|5.033003||Viu
+KEEPS_t8_pb|5.033003||Viu
+KEEPS_tb|5.035004||Viu
+KEEPS_tb_p8|5.033003||Viu
+KEEPS_tb_pb|5.033003||Viu
KELVIN_SIGN|5.017003||Viu
KERNEL|5.003007||Viu
KEY_abs|5.003007||Viu
@@ -7937,6 +8645,7 @@ KEY_binmode|5.003007||Viu
KEY_bless|5.003007||Viu
KEY_break|5.027008||Viu
KEY_caller|5.003007||Viu
+KEY_catch|5.033007||Viu
KEY_chdir|5.003007||Viu
KEY_CHECK|5.006000||Viu
KEY_chmod|5.003007||Viu
@@ -7956,6 +8665,7 @@ KEY___DATA|5.003007||Viu
KEY_dbmclose|5.003007||Viu
KEY_dbmopen|5.003007||Viu
KEY_default|5.027008||Viu
+KEY_defer|5.035004||Viu
KEY_defined|5.003007||Viu
KEY_delete|5.003007||Viu
KEY_DESTROY|5.003007||Viu
@@ -7985,6 +8695,7 @@ KEY_fc|5.015008||Viu
KEY_fcntl|5.003007||Viu
KEY___FILE|5.003007||Viu
KEY_fileno|5.003007||Viu
+KEY_finally|5.035008||Viu
KEY_flock|5.003007||Viu
KEY_for|5.003007||Viu
KEY_foreach|5.003007||Viu
@@ -8018,7 +8729,7 @@ KEY_getservbyport|5.003007||Viu
KEY_getservent|5.003007||Viu
KEY_getsockname|5.003007||Viu
KEY_getsockopt|5.003007||Viu
-KEY_getspnam|5.031010||Viu
+KEY_getspnam|5.031011||Viu
KEY_given|5.009003||Viu
KEY_glob|5.003007||Viu
KEY_gmtime|5.003007||Viu
@@ -8158,6 +8869,7 @@ KEY_time|5.003007||Viu
KEY_times|5.003007||Viu
KEY_tr|5.003007||Viu
KEY_truncate|5.003007||Viu
+KEY_try|5.033007||Viu
KEY_uc|5.003007||Viu
KEY_ucfirst|5.003007||Viu
KEY_umask|5.003007||Viu
@@ -8221,6 +8933,7 @@ LATIN_SMALL_LETTER_LONG_S|5.017003||Viu
LATIN_SMALL_LETTER_LONG_S_UTF8|5.019001||Viu
LATIN_SMALL_LETTER_SHARP_S|5.011002||Viu
LATIN_SMALL_LETTER_SHARP_S_NATIVE|5.017004||Viu
+LATIN_SMALL_LETTER_SHARP_S_UTF8|5.033003||Viu
LATIN_SMALL_LETTER_Y_WITH_DIAERESIS|5.011002||Viu
LATIN_SMALL_LETTER_Y_WITH_DIAERESIS_NATIVE|5.017004||Viu
LATIN_SMALL_LIGATURE_LONG_S_T|5.019004||Viu
@@ -8237,8 +8950,8 @@ LB_RI_then_RI|5.025003||Viu
LB_SP_foo|5.023007||Viu
LB_SY_or_IS_then_various|5.023007||Viu
LB_various_then_PO_or_PR|5.023007||Viu
-LC_NUMERIC_LOCK|5.027009||pViu
-LC_NUMERIC_UNLOCK|5.027009||pViu
+LC_NUMERIC_LOCK|5.027009||pVu
+LC_NUMERIC_UNLOCK|5.027009||pVu
LDBL_DIG|5.006000||Viu
LEAVE|5.003007|5.003007|
leave_adjust_stacks|5.023008|5.023008|xu
@@ -8247,6 +8960,18 @@ LEAVE_SCOPE|5.003007||Viu
LEAVE_with_name|5.011002|5.011002|
LEXACT|5.031005||Viu
LEXACT_REQ8|5.031006||Viu
+LEXACT_REQ8_t8|5.035004||Viu
+LEXACT_REQ8_t8_p8|5.033003||Viu
+LEXACT_REQ8_t8_pb|5.033003||Viu
+LEXACT_REQ8_tb|5.035004||Viu
+LEXACT_REQ8_tb_p8|5.033003||Viu
+LEXACT_REQ8_tb_pb|5.033003||Viu
+LEXACT_t8|5.035004||Viu
+LEXACT_t8_p8|5.033003||Viu
+LEXACT_t8_pb|5.033003||Viu
+LEXACT_tb|5.035004||Viu
+LEXACT_tb_p8|5.033003||Viu
+LEXACT_tb_pb|5.033003||Viu
lex_bufutf8|5.011002|5.011002|x
lex_discard_to|5.011002|5.011002|x
LEX_DONT_CLOSE_RSFP|5.015009||Viu
@@ -8260,7 +8985,7 @@ lex_peek_unichar|5.011002|5.011002|x
lex_read_space|5.011002|5.011002|x
lex_read_to|5.011002|5.011002|x
lex_read_unichar|5.011002|5.011002|x
-lex_start|5.009005|5.009005|x
+lex_start|5.013007|5.013007|x
LEX_START_COPIED|5.015005||Viu
LEX_START_FLAGS|5.015005||Viu
LEX_START_SAME_FILTER|5.014000||Viu
@@ -8280,30 +9005,47 @@ list|5.003007||Viu
listen|5.005000||Viu
listkids|5.003007||Viu
LNBREAK|5.009005||Viu
-load_charnames|5.031009||cViu
+LNBREAK_t8|5.035004||Viu
+LNBREAK_t8_p8|5.033003||Viu
+LNBREAK_t8_pb|5.033003||Viu
+LNBREAK_tb|5.035004||Viu
+LNBREAK_tb_p8|5.033003||Viu
+LNBREAK_tb_pb|5.033003||Viu
+load_charnames|5.031010||cViu
load_module|5.006000|5.003007|pv
-load_module_nocontext|5.006000|5.006000|vn
+load_module_nocontext|5.013006|5.013006|vn
+LOCALECONV_LOCK|5.033005||Viu
+LOCALECONV_UNLOCK|5.033005||Viu
LOCALE_INIT|5.024000||Viu
+LOCALE_INIT_LC_NUMERIC|5.033005||Viu
LOCALE_LOCK|5.024000||Viu
-LOCALE_LOCK_V|5.027010||Viu
LOCALE_PAT_MOD|5.013006||Viu
LOCALE_PAT_MODS|5.013006||Viu
+LOCALE_READ_LOCK|5.033005||Viu
+LOCALE_READ_UNLOCK|5.033005||Viu
LOCALE_TERM|5.024000||Viu
+LOCALE_TERM_LC_NUMERIC|5.033005||Viu
+LOCALE_TERM_POSIX_2008|5.033005||Viu
LOCALE_UNLOCK|5.024000||Viu
-LOCALE_UNLOCK_V|5.027010||Viu
localize|5.003007||Viu
LOCAL_PATCH_COUNT|5.003007||Viu
-localtime|5.031010||Viu
+localtime|5.031011||Viu
LOCALTIME_MAX|5.010001|5.010001|Vn
LOCALTIME_MIN|5.010001|5.010001|Vn
LOCALTIME_R_NEEDS_TZSET|5.010000|5.010000|Vn
LOCALTIME_R_PROTO|5.008000|5.008000|Vn
LOCK_DOLLARZERO_MUTEX|5.008001||Viu
lockf|5.006000||Viu
-LOCK_LC_NUMERIC_STANDARD|5.021010||pViu
-LOCK_NUMERIC_STANDARD|5.021001||pViu
+LOCK_LC_NUMERIC_STANDARD|5.021010||poVnu
+LOCK_NUMERIC_STANDARD|||piu
LOC_SED|5.003007|5.003007|Vn
LOGICAL|5.005000||Viu
+LOGICAL_t8|5.035004||Viu
+LOGICAL_t8_p8|5.033003||Viu
+LOGICAL_t8_pb|5.033003||Viu
+LOGICAL_tb|5.035004||Viu
+LOGICAL_tb_p8|5.033003||Viu
+LOGICAL_tb_pb|5.033003||Viu
LONGDBLINFBYTES|5.023000|5.023000|Vn
LONGDBLMANTBITS|5.023000|5.023000|Vn
LONGDBLNANBYTES|5.023000|5.023000|Vn
@@ -8333,8 +9075,21 @@ LONGDOUBLE_VAX_ENDIAN|5.025004||Viu
LONGDOUBLE_X86_80_BIT|5.021009||Viu
LONGJMP|5.005000||Viu
longjmp|5.005000||Viu
+LONGJMP_t8|5.035004||Viu
+LONGJMP_t8_p8|5.033003||Viu
+LONGJMP_t8_pb|5.033003||Viu
+LONGJMP_tb|5.035004||Viu
+LONGJMP_tb_p8|5.033003||Viu
+LONGJMP_tb_pb|5.033003||Viu
LONGLONGSIZE|5.005000|5.005000|Vn
LONGSIZE|5.004000|5.003007|oVn
+LOOKBEHIND_END_t8_p8|||Viu
+LOOKBEHIND_END_t8_pb|||Viu
+LOOKBEHIND_END_t8|||Viu
+LOOKBEHIND_END_tb_p8|||Viu
+LOOKBEHIND_END_tb_pb|||Viu
+LOOKBEHIND_END_tb|||Viu
+LOOKBEHIND_END|||Viu
looks_like_bool|5.027008||Viu
looks_like_number|5.003007|5.003007|
LOOP_PAT_MODS|5.009005||Viu
@@ -8342,6 +9097,10 @@ lop|5.005000||Viu
lossless_NV_to_IV|5.031001||Vniu
LOWEST_ANYOF_HRx_BYTE|5.031002||Viu
L_R_TZSET|5.009005|5.009005|Vn
+lsbit_pos32|5.035003||cVnu
+lsbit_pos|5.035004||Viu
+lsbit_pos64|5.035003||cVnu
+lsbit_pos_uintmax|5.035003||Viu
lseek|5.005000||Viu
LSEEKSIZE|5.006000|5.006000|Vn
lstat|5.005000||Viu
@@ -8355,6 +9114,7 @@ LvTARG|5.003007||Viu
LvTARGLEN|5.003007||Viu
LvTARGOFF|5.003007||Viu
LvTYPE|5.003007||Viu
+LZC_TO_MSBIT_POS|5.035003||Viu
magic_clear_all_env|5.004001||Viu
magic_cleararylen_p|5.017002||Viu
magic_clearenv|5.003007||Viu
@@ -8367,7 +9127,10 @@ magic_copycallchecker|5.017000||Viu
magic_dump|5.006000|5.006000|u
magic_existspack|5.003007||Viu
magic_freearylen_p|5.009003||Viu
+magic_freecollxfrm|5.033004||Viu
+magic_freemglob|5.033004||Viu
magic_freeovrld|5.007001||Viu
+magic_freeutf8|5.033004||Viu
magic_get|5.003007||Viu
magic_getarylen|5.003007||Viu
magic_getdebugvar|5.021005||Viu
@@ -8408,6 +9171,7 @@ magic_setpack|5.003007||Viu
magic_setpos|5.003007||Viu
magic_setregexp|5.008001||Viu
magic_setsig|5.003007||Viu
+magic_setsigall|5.035001||Viu
magic_setsubstr|5.003007||Viu
magic_settaint|5.003007||Viu
magic_setutf8|5.008001||Viu
@@ -8415,10 +9179,10 @@ magic_setuvar|5.003007||Viu
magic_setvec|5.003007||Viu
magic_sizepack|5.005000||Viu
magic_wipepack|5.003007||Viu
-make_exactf_invlist|5.031007||Viu
+make_exactf_invlist|5.031006||Viu
make_matcher|5.027008||Viu
make_trie|5.009002||Viu
-malloc|5.007002|5.007002|n
+malloc|5.003007||Vn
MALLOC_CHECK_TAINT2|5.008001||Viu
MALLOC_CHECK_TAINT|5.008001||Viu
malloced_size|5.005000||Vniu
@@ -8432,6 +9196,24 @@ MARK|5.003007|5.003007|
MARKPOINT|5.009005||Viu
MARKPOINT_next|5.009005||Viu
MARKPOINT_next_fail|5.009005||Viu
+MARKPOINT_next_fail_t8|5.035004||Viu
+MARKPOINT_next_fail_t8_p8|5.033003||Viu
+MARKPOINT_next_fail_t8_pb|5.033003||Viu
+MARKPOINT_next_fail_tb|5.035004||Viu
+MARKPOINT_next_fail_tb_p8|5.033003||Viu
+MARKPOINT_next_fail_tb_pb|5.033003||Viu
+MARKPOINT_next_t8|5.035004||Viu
+MARKPOINT_next_t8_p8|5.033003||Viu
+MARKPOINT_next_t8_pb|5.033003||Viu
+MARKPOINT_next_tb|5.035004||Viu
+MARKPOINT_next_tb_p8|5.033003||Viu
+MARKPOINT_next_tb_pb|5.033003||Viu
+MARKPOINT_t8|5.035004||Viu
+MARKPOINT_t8_p8|5.033003||Viu
+MARKPOINT_t8_pb|5.033003||Viu
+MARKPOINT_tb|5.035004||Viu
+MARKPOINT_tb_p8|5.033003||Viu
+MARKPOINT_tb_pb|5.033003||Viu
markstack_grow|5.021001|5.021001|u
matcher_matches_sv|5.027008||Viu
MAX|5.025006||Viu
@@ -8441,10 +9223,11 @@ MAX_CHARSET_NAME_LENGTH|5.013009||Viu
MAX_FEATURE_LEN|5.013010||Viu
MAX_FOLD_FROMS|5.029006||Viu
MAX_LEGAL_CP|5.029002||Viu
+MAX_MATCHES|5.033005||Viu
MAXO|5.003007||Viu
MAXPATHLEN|5.006000||Viu
MAX_PORTABLE_UTF8_TWO_BYTE|5.011002||Viu
-MAX_PRINT_A_FOR_USE_ONLY_BY_REGCOMP_DOT_C|5.021004||Viu
+MAX_PRINT_A|5.033005||Viu
MAX_RECURSE_EVAL_NOCHANGE_DEPTH|5.009005||Viu
MAXSYSFD|5.003007||Viu
MAX_UNICODE_UTF8|5.027006||Viu
@@ -8455,7 +9238,17 @@ MAYBE_DEREF_GV_flags|5.015003||Viu
MAYBE_DEREF_GV_nomg|5.015003||Viu
maybe_multimagic_gv|5.019004||Viu
mayberelocate|5.015006||Viu
+MBLEN_LOCK|5.033005||Viu
+MBLEN_UNLOCK|5.033005||Viu
MBOL|5.003007||Viu
+MBOL_t8|5.035004||Viu
+MBOL_t8_p8|5.033003||Viu
+MBOL_t8_pb|5.033003||Viu
+MBOL_tb|5.035004||Viu
+MBOL_tb_p8|5.033003||Viu
+MBOL_tb_pb|5.033003||Viu
+MBTOWC_LOCK|5.033005||Viu
+MBTOWC_UNLOCK|5.033005||Viu
MDEREF_ACTION_MASK|5.021007||Viu
MDEREF_AV_gvav_aelem|5.021007||Viu
MDEREF_AV_gvsv_vivify_rv2av_aelem|5.021007||Viu
@@ -8483,7 +9276,7 @@ MEM_ALIGNBYTES|5.003007|5.003007|Vn
memBEGINPs|5.027006||Viu
memBEGINs|5.027006||Viu
MEMBER_TO_FPTR|5.006000||Viu
-memCHRs|5.031007|5.003007|p
+memCHRs|5.031008|5.003007|p
mem_collxfrm|5.003007||dViu
_mem_collxfrm|5.025002||Viu
memENDPs|5.027006||Viu
@@ -8496,8 +9289,10 @@ memLE|5.025005||Viu
MEM_LOG_ALLOC|5.009003||Viu
mem_log_alloc|5.024000||Vniu
mem_log_common|5.010001||Vniu
+MEM_LOG_DEL_SV|||Viu
MEM_LOG_FREE|5.009003||Viu
mem_log_free|5.024000||Vniu
+MEM_LOG_NEW_SV|||Viu
MEM_LOG_REALLOC|5.009003||Viu
mem_log_realloc|5.024000||Vniu
memLT|5.025005||Viu
@@ -8508,14 +9303,20 @@ MEM_SIZE_MAX|5.009005||Viu
MEM_WRAP_CHECK_1|5.009002||Viu
MEM_WRAP_CHECK|5.009002||Viu
MEM_WRAP_CHECK_s|5.027010||Viu
-memzero|5.003007||Viu
+memzero|5.003007|5.003007|
MEOL|5.003007||Viu
-mess|5.006000|5.004000|pv
+MEOL_t8|5.035004||Viu
+MEOL_t8_p8|5.033003||Viu
+MEOL_t8_pb|5.033003||Viu
+MEOL_tb|5.035004||Viu
+MEOL_tb_p8|5.033003||Viu
+MEOL_tb_pb|5.033003||Viu
+mess|5.003007||pvV
mess_alloc|5.005000||Viu
-mess_nocontext|5.006000|5.004000|pvn
+mess_nocontext|5.006000||pvVn
mess_sv|5.013001|5.004000|p
MEXTEND|5.003007||Viu
-mfree|5.007002|5.007002|nu
+mfree|||nu
MgBYTEPOS|5.019004||Viu
MgBYTEPOS_set|5.019004||Viu
mg_clear|5.003007|5.003007|
@@ -8546,17 +9347,24 @@ MgPV_const|5.009003||Viu
MgPV_nolen_const|5.009003||Viu
mg_set|5.003007|5.003007|
mg_size|5.005000|5.005000|u
+MgSV|5.033009||Viu
MgTAINTEDDIR|5.003007||Viu
MgTAINTEDDIR_off|5.004000||Viu
MgTAINTEDDIR_on|5.003007||Viu
MICRO_SIGN|5.011002||Viu
MICRO_SIGN_NATIVE|5.017004||Viu
+MICRO_SIGN_UTF8|5.033003||Viu
MIN|5.025006||Viu
mini_mktime|5.007002|5.007002|n
MINMOD|5.003007||Viu
+MINMOD_t8|5.035004||Viu
+MINMOD_t8_p8|5.033003||Viu
+MINMOD_t8_pb|5.033003||Viu
+MINMOD_tb|5.035004||Viu
+MINMOD_tb_p8|5.033003||Viu
+MINMOD_tb_pb|5.033003||Viu
minus_v|5.015006||Viu
missingterm|5.005000||Viu
-MJD_OFFSET_DEBUG|5.009004||Viu
Mkdir|5.004000||Viu
mkdir|5.005000||Viu
mktemp|5.005000||Viu
@@ -8576,10 +9384,10 @@ MON_6|5.027010||Viu
MON_7|5.027010||Viu
MON_8|5.027010||Viu
MON_9|5.027010||Viu
-more_bodies|||iu
-more_sv|5.009004||Viu
+more_bodies|||cu
+more_sv|5.009004||cVu
moreswitches|5.003007||cVu
-mortal_getenv|5.031010||cVnu
+mortal_getenv|5.031011||cVnu
Move|5.003007|5.003007|
MoveD|5.009002|5.003007|p
move_proto_attr|5.019005||Viu
@@ -8594,19 +9402,24 @@ mPUSHs|5.010001|5.003007|p
mPUSHu|5.009002|5.003007|p
mro_clean_isarev|5.013007||Viu
mro_gather_and_rename|5.013007||Viu
-mro_get_from_name|5.010001|5.010001|u
+mro_get_from_name|||u
mro_get_linear_isa|5.009005|5.009005|
+mro_get_linear_isa_c3|||i
mro_get_linear_isa_dfs|5.009005||Vi
-mro_get_private_data|5.010001|5.010001|
-MRO_GET_PRIVATE_DATA|5.010001||Viu
+MRO_GET_PRIVATE_DATA|5.010001|5.010001|
+mro_get_private_data|||cu
mro_isa_changed_in|5.009005||Vi
mro_meta_dup|5.009005||Viu
mro_meta_init|||ciu
mro_method_changed_in|5.009005|5.009005|
mro_package_moved|5.013006||Vi
-mro_register|5.010001|5.010001|
-mro_set_mro|5.010001|5.010001|u
-mro_set_private_data|5.010001|5.010001|
+mro_register|||
+mro_set_mro|||u
+mro_set_private_data|||
+msbit_pos32|5.035003||cVnu
+msbit_pos|5.035004||Viu
+msbit_pos64|5.035003||cVnu
+msbit_pos_uintmax|5.035003||Viu
MSPAGAIN|5.003007||Viu
MSVC_DIAG_IGNORE|5.029010||Viu
MSVC_DIAG_IGNORE_DECL|5.029010||Viu
@@ -8620,11 +9433,11 @@ multiconcat_stringify|5.027006||cViu
multideref_stringify|5.021009||cViu
MULTILINE_PAT_MOD|5.009005||Viu
MULTIPLICITY|5.006000|5.006000|Vn
-MUTABLE_AV|5.010001|5.010001|p
-MUTABLE_CV|5.010001|5.010001|p
-MUTABLE_GV|5.010001|5.010001|p
-MUTABLE_HV|5.010001|5.010001|p
-MUTABLE_IO|5.010001|5.010001|p
+MUTABLE_AV|5.010001|5.003007|p
+MUTABLE_CV|5.010001|5.003007|p
+MUTABLE_GV|5.010001|5.003007|p
+MUTABLE_HV|5.010001|5.003007|p
+MUTABLE_IO|5.010001|5.003007|p
MUTABLE_PTR|5.010001|5.003007|p
MUTABLE_SV|5.010001|5.003007|p
MUTEX_DESTROY|5.005000||Viu
@@ -8650,9 +9463,9 @@ MY_CXT|5.009000|5.009000|p
MY_CXT_CLONE|5.009002|5.009000|p
MY_CXT_INDEX|5.009005||Viu
MY_CXT_INIT|5.009000|5.009000|p
-my_cxt_init|5.010000|5.010000|u
MY_CXT_INIT_ARG|5.013005||Viu
MY_CXT_INIT_INTERP|5.009003||Viu
+my_cxt_init|||u
my_dirfd|5.009005|5.009005|nu
my_exit|5.003007|5.003007|
my_exit_jump|5.005000||Viu
@@ -8672,13 +9485,13 @@ my_pclose|5.003007|5.003007|u
my_popen|5.003007|5.003007|u
my_popen_list|5.007001|5.007001|u
my_setenv|5.003007|5.003007|
-my_snprintf|5.009004|5.003007|pvn
+my_snprintf|5.009004||pvVn
my_socketpair|5.007003|5.007003|nu
my_sprintf|5.009003|5.003007|pdn
my_stat|5.013003||Viu
my_stat_flags|5.013003||cViu
my_strerror|5.021001||Viu
-my_strftime|5.007002|5.007002|
+my_strftime|5.007002||V
my_strlcat|5.009004|5.003007|pn
my_strlcpy|5.009004|5.003007|pn
my_strnlen|5.027006|5.003007|pn
@@ -8699,6 +9512,12 @@ N8|5.029001||Viu
N9|5.029001||Viu
NAN_COMPARE_BROKEN|5.021005||Viu
NANYOFM|5.029005||Viu
+NANYOFM_t8|5.035004||Viu
+NANYOFM_t8_p8|5.033003||Viu
+NANYOFM_t8_pb|5.033003||Viu
+NANYOFM_tb|5.035004||Viu
+NANYOFM_tb_p8|5.033003||Viu
+NANYOFM_tb_pb|5.033003||Viu
NATIVE8_TO_UNI|5.011000||Viu
NATIVE_BYTE_IS_INVARIANT|5.019004||Viu
NATIVE_SKIP|5.019004||Viu
@@ -8713,13 +9532,36 @@ nBIT_MASK|5.033001||Viu
nBIT_UMAX|5.033001||Viu
NBOUND|5.003007||Viu
NBOUNDA|5.013009||Viu
+NBOUNDA_t8|5.035004||Viu
+NBOUNDA_t8_p8|5.033003||Viu
+NBOUNDA_t8_pb|5.033003||Viu
+NBOUNDA_tb|5.035004||Viu
+NBOUNDA_tb_p8|5.033003||Viu
+NBOUNDA_tb_pb|5.033003||Viu
NBOUNDL|5.004000||Viu
+NBOUNDL_t8|5.035004||Viu
+NBOUNDL_t8_p8|5.033003||Viu
+NBOUNDL_t8_pb|5.033003||Viu
+NBOUNDL_tb|5.035004||Viu
+NBOUNDL_tb_p8|5.033003||Viu
+NBOUNDL_tb_pb|5.033003||Viu
+NBOUND_t8|5.035004||Viu
+NBOUND_t8_p8|5.033003||Viu
+NBOUND_t8_pb|5.033003||Viu
+NBOUND_tb|5.035004||Viu
+NBOUND_tb_p8|5.033003||Viu
+NBOUND_tb_pb|5.033003||Viu
NBOUNDU|5.013009||Viu
+NBOUNDU_t8|5.035004||Viu
+NBOUNDU_t8_p8|5.033003||Viu
+NBOUNDU_t8_pb|5.033003||Viu
+NBOUNDU_tb|5.035004||Viu
+NBOUNDU_tb_p8|5.033003||Viu
+NBOUNDU_tb_pb|5.033003||Viu
NBSP_NATIVE|5.021001||Viu
NBSP_UTF8|5.021001||Viu
-NDBM_H_USES_PROTOTYPES|5.031006|5.031006|Vn
+NDBM_H_USES_PROTOTYPES|5.032001|5.032001|Vn
NDEBUG|5.021007||Viu
-NEED_PTHREAD_INIT|5.005000||Viu
need_utf8|5.009003||Vniu
NEED_VA_COPY|5.007001|5.007001|Vn
NEGATIVE_INDICES_VAR|5.008001||Viu
@@ -8737,8 +9579,12 @@ newASSIGNOP|5.003007|5.003007|
newATTRSUB|5.006000|5.006000|
newATTRSUB_x|5.019008||cVi
newAV|5.003007|5.003007|
+newAV_alloc_x|5.035001|5.035001|
+newAV_alloc_xz|5.035001|5.035001|
newAVREF|5.003007|5.003007|u
newBINOP|5.003007|5.003007|
+new_body_allocated|||Viu
+new_body_from_arena|||Viu
Newc|5.003007||Viu
new_collate|5.006000||Viu
newCONDOP|5.003007|5.003007|
@@ -8747,6 +9593,7 @@ newCONSTSUB|5.004005|5.003007|p
newCONSTSUB_flags|5.015006|5.015006|
new_ctype|5.006000||Viu
newCVREF|5.003007|5.003007|u
+newDEFEROP|5.035004|5.035004|x
newDEFSVOP|5.021006|5.021006|
newFORM|5.003007|5.003007|u
newFOROP|5.013007|5.013007|
@@ -8774,6 +9621,8 @@ newMETHOP_internal|5.021005||Viu
newMETHOP_named|5.021005|5.021005|
new_msg_hv|5.027009||Viu
newMYSUB|5.017004|5.017004|u
+new_NOARENA|||Viu
+new_NOARENAZ|||Viu
newNULLLIST|5.003007|5.003007|
new_numeric|5.006000||Viu
newOP|5.003007|5.003007|
@@ -8786,8 +9635,7 @@ newPMOP|5.003007|5.003007|
newPROG|5.003007|5.003007|u
newPVOP|5.003007|5.003007|
newRANGE|5.003007|5.003007|
-new_regcurly|5.027001||Vniu
-newRV|5.003007|5.003007|u
+newRV|5.003007|5.003007|
newRV_inc|5.004000|5.003007|p
newRV_noinc|5.004000|5.003007|p
newSLICEOP|5.003007|5.003007|
@@ -8804,8 +9652,8 @@ newSVnv|5.006000|5.003007|
newSVOP|5.003007|5.003007|
newSVpadname|5.017004|5.017004|x
newSVpv|5.003007|5.003007|
-newSVpvf|5.006000|5.004000|v
-newSVpvf_nocontext|5.006000|5.006000|vn
+newSVpvf|5.004000||vV
+newSVpvf_nocontext|5.006000||vVn
newSVpvn|5.004005|5.003007|p
newSVpvn_flags|5.010001|5.003007|p
newSVpvn_share|5.007001|5.003007|p
@@ -8817,10 +9665,13 @@ newSVpvs_share|5.009003|5.003007|p
newSVREF|5.003007|5.003007|u
newSVrv|5.003007|5.003007|
newSVsv|5.003007|5.003007|
-newSVsv_flags|5.029009|5.003007|pocVu
+newSVsv_flags|5.029009|5.003007|p
newSVsv_nomg|5.029009|5.003007|p
newSV_type|5.009005|5.003007|p
+newSV_type_mortal|||
newSVuv|5.006000|5.003007|p
+new_SV|||Viu
+newTRYCATCHOP|5.033007|5.033007|x
newUNOP|5.003007|5.003007|
newUNOP_AUX|5.021007|5.021007|
new_version|5.009000|5.009000|
@@ -8830,6 +9681,9 @@ newWHENOP|5.027008|5.027008|
newWHILEOP|5.013007|5.013007|
Newx|5.009003|5.003007|p
Newxc|5.009003|5.003007|p
+new_XNV|||Viu
+new_XPVMG|||Viu
+new_XPVNV|||Viu
newXS|5.006000|5.006000|
newXS_deffile|5.021006||cViu
newXS_flags|5.009004|5.009004|xu
@@ -8841,10 +9695,13 @@ nextargv|5.003007||Viu
nextchar|5.005000||Viu
NEXT_LINE_CHAR|5.007003||Viu
NEXT_OFF|5.005000||Viu
-NEXTOPER|5.003007||Viu
next_symbol|5.007003||Viu
ninstr|5.003007|5.003007|n
+NL_LANGINFO_LOCK|5.033005||Viu
+NL_LANGINFO_UNLOCK|5.033005||Viu
+NOARENA|||Viu
no_bareword_allowed|5.005004||Viu
+no_bareword_filehandle|5.033006||Viu
NOCAPTURE_PAT_MOD|5.021008||Viu
NOCAPTURE_PAT_MODS|5.021008||Viu
NODE_ALIGN|5.005000||Viu
@@ -8857,10 +9714,10 @@ NofAMmeth|5.003007||Viu
no_fh_allowed|5.003007||Viu
NOLINE|5.003007||Viu
NO_LOCALE|5.007000||Viu
-NO_LOCALECONV_MON_THOUSANDS_SEP|5.005000||Viu
NONDESTRUCT_PAT_MOD|5.013002||Viu
NONDESTRUCT_PAT_MODS|5.013002||Viu
-NON_OTHER_COUNT_FOR_USE_ONLY_BY_REGCOMP_DOT_C|5.021005||Viu
+NON_OTHER_COUNT|5.033005||Viu
+NONV|||Viu
no_op|5.003007||Viu
NOOP|5.005000|5.003007|p
noperl_die|5.021006||vVniu
@@ -8871,15 +9728,45 @@ NO_TAINT_SUPPORT|5.017006||Viu
not_a_number|5.005000||Viu
NOTE3|5.027001||Viu
NOTHING|5.003007||Viu
+NOTHING_t8|5.035004||Viu
+NOTHING_t8_p8|5.033003||Viu
+NOTHING_t8_pb|5.033003||Viu
+NOTHING_tb|5.035004||Viu
+NOTHING_tb_p8|5.033003||Viu
+NOTHING_tb_pb|5.033003||Viu
nothreadhook|5.008000|5.008000|
notify_parser_that_changed_to_utf8|5.025010||Viu
not_incrementable|5.021002||Viu
NOT_IN_PAD|5.005000||Viu
-NOT_REACHED|5.019006||Viu
+NOT_REACHED|5.019006|5.003007|poVnu
NPOSIXA|5.017003||Viu
+NPOSIXA_t8|5.035004||Viu
+NPOSIXA_t8_p8|5.033003||Viu
+NPOSIXA_t8_pb|5.033003||Viu
+NPOSIXA_tb|5.035004||Viu
+NPOSIXA_tb_p8|5.033003||Viu
+NPOSIXA_tb_pb|5.033003||Viu
NPOSIXD|5.017003||Viu
+NPOSIXD_t8|5.035004||Viu
+NPOSIXD_t8_p8|5.033003||Viu
+NPOSIXD_t8_pb|5.033003||Viu
+NPOSIXD_tb|5.035004||Viu
+NPOSIXD_tb_p8|5.033003||Viu
+NPOSIXD_tb_pb|5.033003||Viu
NPOSIXL|5.017003||Viu
+NPOSIXL_t8|5.035004||Viu
+NPOSIXL_t8_p8|5.033003||Viu
+NPOSIXL_t8_pb|5.033003||Viu
+NPOSIXL_tb|5.035004||Viu
+NPOSIXL_tb_p8|5.033003||Viu
+NPOSIXL_tb_pb|5.033003||Viu
NPOSIXU|5.017003||Viu
+NPOSIXU_t8|5.035004||Viu
+NPOSIXU_t8_p8|5.033003||Viu
+NPOSIXU_t8_pb|5.033003||Viu
+NPOSIXU_tb|5.035004||Viu
+NPOSIXU_tb_p8|5.033003||Viu
+NPOSIXU_tb_pb|5.033003||Viu
NSIG|5.009003||Viu
ntohi|5.003007||Viu
ntohl|5.003007||Viu
@@ -8896,16 +9783,16 @@ Nullhek|5.004000||Viu
Nullhv|5.003007|5.003007|d
Nullop|5.003007||Viu
Nullsv|5.003007|5.003007|
-NUM2PTR|5.006000|5.003007|pocV
+NUM2PTR|5.006000||pVu
NUM_ANYOF_CODE_POINTS|5.021004||Viu
NUM_CLASSES|5.029001||Viu
num_overflow|5.009001||Vniu
NV_BIG_ENDIAN|5.021009||Viu
NV_DIG|5.006000||Viu
-NVef|5.006001|5.003007|p
+NVef|5.006001|5.003007|poVn
NV_EPSILON|5.007003||Viu
-NVff|5.006001|5.003007|p
-NVgf|5.006001|5.003007|p
+NVff|5.006001|5.003007|poVn
+NVgf|5.006001|5.003007|poVn
NV_IMPLICIT_BIT|5.021009||Viu
NV_INF|5.007003||Viu
NV_LITTLE_ENDIAN|5.021009||Viu
@@ -8955,7 +9842,7 @@ NV_VAX_ENDIAN|5.025003||Viu
NV_WITHIN_IV|5.006000||Viu
NV_WITHIN_UV|5.006000||Viu
NV_X86_80_BIT|5.025004||Viu
-NV_ZERO_IS_ALLBITS_ZERO|5.009003|5.009003|Vn
+NV_ZERO_IS_ALLBITS_ZERO|5.035009|5.035009|Vn
OA_AVREF|5.003007||Viu
OA_BASEOP|5.005000||Viu
OA_BASEOP_OR_UNOP|5.005000||Viu
@@ -8994,20 +9881,20 @@ O_BINARY|5.006000||Viu
O_CREAT|5.006000||Viu
OCSHIFT|5.006000||Viu
OCTAL_VALUE|5.019008||Viu
-Off|5.006000||Viu
Off_t|5.003007|5.003007|Vn
Off_t_size|5.006000|5.006000|Vn
OFFUNI_IS_INVARIANT|5.023003||Viu
OFFUNISKIP|5.019004||Viu
+OFFUNISKIP_helper|5.035004||Viu
ONCE_PAT_MOD|5.009005||Viu
ONCE_PAT_MODS|5.009005||Viu
+ONE_IF_EBCDIC_ZERO_IF_NOT|5.035004||Viu
oopsAV|5.003007||Viu
oopsHV|5.003007||Viu
OP|5.003007||Viu
op_append_elem|5.013006|5.013006|
op_append_list|5.013006|5.013006|
opASSIGN|5.003007||Viu
-OP_BINARY|5.004000||Viu
OP_CHECK_MUTEX_INIT|5.015008||Viu
OP_CHECK_MUTEX_LOCK|5.015008||Viu
OP_CHECK_MUTEX_TERM|5.015008||Viu
@@ -9026,10 +9913,22 @@ opendir|5.005000||Viu
openn_cleanup|5.019010||Viu
openn_setup|5.019010||Viu
open_script|5.005000||Viu
+OPEN_t8|5.035004||Viu
+OPEN_t8_p8|5.033003||Viu
+OPEN_t8_pb|5.033003||Viu
+OPEN_tb|5.035004||Viu
+OPEN_tb_p8|5.033003||Viu
+OPEN_tb_pb|5.033003||Viu
OPERAND|5.003007||Viu
OPERANDl|5.031005||Viu
OPERANDs|5.031005||Viu
OPFAIL|5.009005||Viu
+OPFAIL_t8|5.035004||Viu
+OPFAIL_t8_p8|5.033003||Viu
+OPFAIL_t8_pb|5.033003||Viu
+OPFAIL_tb|5.035004||Viu
+OPFAIL_tb_p8|5.033003||Viu
+OPFAIL_tb_pb|5.033003||Viu
OPf_FOLDED|5.021007||Viu
OPf_KIDS|5.003007|5.003007|
OPf_KNOW|5.003007||Viu
@@ -9093,6 +9992,7 @@ OPpCOREARGS_DEREF1|5.015003||Viu
OPpCOREARGS_DEREF2|5.015003||Viu
OPpCOREARGS_PUSHMARK|5.015003||Viu
OPpCOREARGS_SCALARMOD|5.015003||Viu
+OPpDEFER_FINALLY|5.035008||Viu
OPpDEREF|5.004000||Viu
OPpDEREF_AV|5.003007||Viu
OPpDEREF_HV|5.003007||Viu
@@ -9164,15 +10064,13 @@ OPpSORT_INPLACE|5.009001||Viu
OPpSORT_INTEGER|5.006000||Viu
OPpSORT_NUMERIC|5.006000||Viu
OPpSORT_REVERSE|5.006000||Viu
-OPpSORT_STABLE|5.009003||Viu
-OPpSORT_UNSTABLE|5.027004||Viu
OPpSPLIT_ASSIGN|5.025006||Viu
OPpSPLIT_IMPLIM|5.019002||Viu
OPpSPLIT_LEX|5.025006||Viu
OPpSUBSTR_REPL_FIRST|5.015006||Viu
OPpTARGET_MY|5.006000||Viu
OPpTRANS_ALL|5.009001||Viu
-OPpTRANS_CAN_FORCE_UTF8|5.031007||Viu
+OPpTRANS_CAN_FORCE_UTF8|5.031006||Viu
OPpTRANS_COMPLEMENT|5.003007||Viu
OPpTRANS_DELETE|5.003007||Viu
OPpTRANS_FROM_UTF|5.006000||Viu
@@ -9180,8 +10078,9 @@ OPpTRANS_GROWS|5.006000||Viu
OPpTRANS_IDENTICAL|5.006000||Viu
OPpTRANS_SQUASH|5.003007||Viu
OPpTRANS_TO_UTF|5.006000||Viu
-OPpTRANS_USE_SVOP|5.031007||Viu
+OPpTRANS_USE_SVOP|5.031006||Viu
OPpTRUEBOOL|5.017004||Viu
+OPpUSEINT|5.035005||Viu
OpREFCNT_dec|5.006000||Viu
op_refcnt_dec|||xiu
OpREFCNT_inc|5.006000||Viu
@@ -9206,11 +10105,18 @@ OpslabREFCNT_dec|5.017002||Viu
OpslabREFCNT_dec_padok|5.017002||Viu
OpSLOT|5.017002||Viu
OPSLOT_HEADER|5.017002||Viu
-OPSLOT_HEADER_P|5.017002||Viu
+OpSLOToff|5.033001||Viu
op_std_init|5.015003||Viu
OPTIMIZED|5.005000||Viu
+OPTIMIZED_t8|5.035004||Viu
+OPTIMIZED_t8_p8|5.033003||Viu
+OPTIMIZED_t8_pb|5.033003||Viu
+OPTIMIZED_tb|5.035004||Viu
+OPTIMIZED_tb_p8|5.033003||Viu
+OPTIMIZED_tb_pb|5.033003||Viu
optimize_op|5.027006||Viu
optimize_optree|5.027006||Vi
+optimize_regclass|5.035001||Viu
OP_TYPE_IS|5.019007|5.019007|
OP_TYPE_IS_NN|5.019010||Viu
OP_TYPE_ISNT|5.019010||Viu
@@ -9220,6 +10126,7 @@ OP_TYPE_ISNT_NN|5.019010||Viu
OP_TYPE_IS_OR_WAS|5.019010|5.019010|
OP_TYPE_IS_OR_WAS_NN|5.019010||Viu
op_unscope|5.017003||xViu
+op_wrap_finally|5.035008|5.035008|x
O_RDONLY|5.006000||Viu
O_RDWR|5.006000||Viu
ORIGMARK|5.003007|5.003007|
@@ -9233,14 +10140,14 @@ O_VMS_DELETEONCLOSE|5.031002||Viu
O_WRONLY|5.006000||Viu
package|5.003007||Viu
package_version|5.011001||Viu
-pack_cat|5.007003|5.007003|d
+pack_cat|5.033002|5.033002|d
packlist|5.008001|5.008001|
pack_rec|5.008001||Viu
-packWARN2|5.007003|5.007003|p
-packWARN3|5.007003|5.007003|p
-packWARN4|5.007003|5.007003|p
+packWARN2|5.007003|5.003007|p
+packWARN3|5.007003|5.003007|p
+packWARN4|5.007003|5.003007|p
packWARN|5.007003|5.003007|p
-pad_add_anon|5.008001|5.008001|
+pad_add_anon|5.015001|5.015001|
pad_add_name_pv|5.015001|5.015001|
pad_add_name_pvn|5.015001|5.015001|
pad_add_name_pvs|5.015001|5.015001|
@@ -9250,7 +10157,7 @@ padadd_OUR|5.011002||Viu
padadd_STALEOK|5.017003||Viu
padadd_STATE|5.011002||Viu
pad_add_weakref|5.021007||Viu
-pad_alloc|5.003007|5.003007|x
+pad_alloc|5.015001|5.015001|x
pad_alloc_name|5.015001||Vi
PadARRAY|5.017004|5.017004|x
PAD_BASE_SV|5.008001||Vi
@@ -9266,7 +10173,7 @@ PAD_COMPNAME_OURSTASH|5.008001||Vi
PAD_COMPNAME_PV|5.008001||Vi
PAD_COMPNAME_SV|5.009005||Viu
PAD_COMPNAME_TYPE|5.008001||Vi
-pad_compname_type|5.009003|5.009003|d
+pad_compname_type|5.033005|5.033005|d
PAD_FAKELEX_ANON|5.009005||Viu
PAD_FAKELEX_MULTI|5.009005||Viu
pad_findlex|5.005000||Vi
@@ -9322,7 +10229,7 @@ PADNAMEt_TYPED|5.021007||Viu
PadnameTYPE|5.017004||Vi
PadnameTYPE_set|5.021007||Viu
PadnameUTF8|5.017004|5.017004|x
-pad_new|5.008001|5.008001|
+pad_new|5.015001|5.015001|
padnew_CLONE|5.008001||Viu
padnew_SAVE|5.008001||Viu
padnew_SAVESUB|5.008001||Viu
@@ -9340,7 +10247,7 @@ pad_sv|5.003007||cV
PAD_SV|5.003007||Vi
PAD_SVl|5.008001||Vi
pad_swipe|5.003007||Vi
-pad_tidy|5.008001|5.008001|x
+pad_tidy|5.015001|5.015001|x
panic_write2|5.008001||Viu
PARENT_FAKELEX_FLAGS|5.009005||Viu
PARENT_PAD_INDEX|5.009005||Viu
@@ -9372,7 +10279,7 @@ pclose|5.003007||Viu
peep|5.003007||Viu
pending_ident|5.017004||Viu
PERL_ABS|5.008001|5.003007|p
-Perl_acos|5.021004||Viu
+Perl_acos|5.021004|5.021004|n
perl_alloc|5.003007|5.003007|n
PERL_ALLOC_CHECK|5.006000||Viu
perl_alloc_using|5.006000||Vnu
@@ -9383,32 +10290,36 @@ PERL_API_VERSION|5.006000||Viu
PERL_API_VERSION_STRING|5.013004||Viu
PERL_ARENA_ROOTS_SIZE|5.009004||Viu
PERL_ARENA_SIZE|5.009003||Viu
-PERL_ARGS_ASSERT_CROAK_XS_USAGE|||piu
-Perl_asin|5.021004||Viu
+PERL_ARGS_ASSERT_CROAK_XS_USAGE|||ponu
+Perl_asin|5.021004|5.021004|n
Perl_assert|5.011000||Viu
perl_assert_ptr|5.027004||Viu
-PERL_ASYNC_CHECK|5.006000||Viu
-Perl_atan2|5.006000||Viu
-Perl_atan|5.021004||Viu
+PERL_ASYNC_CHECK|5.006000|5.006000|
+Perl_atan2|5.006000|5.006000|n
+Perl_atan|5.021004|5.021004|n
Perl_atof2|5.006001||Viu
Perl_atof|5.006000||Viu
+PERL_BCDVERSION||5.003007|onu
PERL_BISON_VERSION|5.023008||Viu
PERL_BITFIELD16|5.010001||Viu
PERL_BITFIELD32|5.010001||Viu
PERL_BITFIELD8|5.010001||Viu
PERL_CALLCONV|5.005002||Viu
PERL_CALLCONV_NO_RET|5.017002||Viu
-Perl_calloc|5.006000||Viu
-Perl_ceil|5.009001||Viu
+Perl_ceil|5.009001|5.009001|n
PERL_CKDEF|5.006000||Viu
perl_clone|5.006000||Vn
perl_clone_using|5.006000||Vnu
+PERL_CLZ_32|5.035003||Viu
+PERL_CLZ_64|5.035003||Viu
perl_construct|5.003007|5.003007|n
PERL_COP_SEQMAX|5.013010||Viu
PERL_COPY_ON_WRITE|5.023001||Viu
-Perl_cos|5.006000||Viu
-Perl_cosh|5.021004||Viu
+Perl_cos|5.006000|5.006000|n
+Perl_cosh|5.021004|5.021004|n
PERL_COUNT_MULTIPLIER|5.027007||Viu
+PERL_CTZ_32|5.035003||Viu
+PERL_CTZ_64|5.035003||Viu
Perl_custom_op_xop|5.019006||V
PERLDB_ALL|5.004002||Viu
PERLDBf_GOTO|5.004005||Viu
@@ -9440,6 +10351,10 @@ PERLDB_SUBLINE|5.004002||Viu
PERLDB_SUB_NN|5.004005||Viu
PERL_DEB2|5.021007||Viu
PERL_DEB|5.008001||Viu
+PERL_deBruijnMagic32|5.035003||Viu
+PERL_deBruijnMagic64|5.035003||Viu
+PERL_deBruijnShift32|5.035003||Viu
+PERL_deBruijnShift64|5.035003||Viu
PERL_DEBUG|5.008001||Viu
Perl_debug_log|5.003007||Viu
PERL_DEBUG_PAD|5.007003||Viu
@@ -9496,13 +10411,14 @@ PERL_EXIT_ABORT|5.019003|5.019003|
PERL_EXIT_DESTRUCT_END|5.007003|5.007003|
PERL_EXIT_EXPECTED|5.006000|5.006000|
PERL_EXIT_WARN|5.019003|5.019003|
-Perl_exp|5.006000||Viu
+Perl_exp|5.006000|5.006000|n
+Perl_fabs|5.035005||Viu
PERL_FEATURE_H|5.029006||Viu
PERL_FILE_IS_ABSOLUTE|5.006000||Viu
PERL_FILTER_EXISTS|5.009005||Viu
-Perl_floor|5.006000||Viu
+Perl_floor|5.006000|5.006000|n
PERL_FLUSHALL_FOR_CHILD|5.006000||Viu
-Perl_fmod|5.006000||Viu
+Perl_fmod|5.006000|5.006000|n
Perl_fp_class|5.007003||Viu
Perl_fp_class_denorm|5.007003||Viu
Perl_fp_class_inf|5.007003||Viu
@@ -9524,21 +10440,28 @@ PERL_FPU_POST_EXEC|5.008001||Viu
PERL_FPU_PRE_EXEC|5.008001||Viu
perl_free|5.003007|5.003007|n
Perl_free_c_backtrace|5.021001||Viu
-Perl_frexp|5.006000||Viu
+Perl_frexp|5.006000|5.006000|n
PERL_FS_VER_FMT|5.006000||Viu
PERL_FS_VERSION|5.010001||Viu
PERL_GCC_BRACE_GROUPS_FORBIDDEN|5.008001||Viu
+PERL_GCC_VERSION_GE|5.035003||Viu
+PERL_GCC_VERSION_GT|5.035003||Viu
+PERL_GCC_VERSION_LE|5.035003||Viu
+PERL_GCC_VERSION_LT|5.035003||Viu
PERL_GET_CONTEXT|5.006000||Viu
PERL_GET_INTERP|5.006000||Viu
PERL_GET_THX|5.006000||Viu
-PERL_GIT_UNCOMMITTED_CHANGES|5.033000||Viu
PERL_GIT_UNPUSHED_COMMITS|5.010001||Viu
PERL_GPROF_MONCONTROL|5.007002||Viu
PERL_HANDY_H|5.027001||Viu
+PERL_HAS_FAST_GET_LSB_POS32|5.035003||Viu
+PERL_HAS_FAST_GET_LSB_POS64|5.035003||Viu
+PERL_HAS_FAST_GET_MSB_POS32|5.035003||Viu
+PERL_HAS_FAST_GET_MSB_POS64|5.035003||Viu
PERL_HASH|5.003007|5.003007|p
PERL_HASH_DEFAULT_HvMAX|5.017011||Viu
PERL_HASH_FUNC|5.017006||Viu
-PERL_HASH_FUNC_STADTX|5.027001||Viu
+PERL_HASH_FUNC_SIPHASH13|5.033007||Viu
PERL_HASH_FUNC_ZAPHOD32|5.027001||Viu
PERL_HASH_INTERNAL|5.008002||Viu
PERL_HASH_ITER_BUCKET|5.018000||Viu
@@ -9546,15 +10469,16 @@ PERL_HASH_RANDOMIZE_KEYS|5.018000||Viu
PERL_HASH_SEED|5.008001||Viu
PERL_HASH_SEED_BYTES|5.017006||Viu
PERL_HASH_SEED_STATE|5.027001||Viu
+PERL_HASH_SEED_WORDS|5.033007||Viu
PERL_HASH_STATE_BYTES|5.027001||Viu
+PERL_HASH_STATE_WORDS|5.033007||Viu
PERL_HASH_USE_SBOX32_ALSO|5.027001||Viu
PERL_HASH_WITH_SEED|5.021001||Viu
PERL_HASH_WITH_STATE|5.027001||Viu
-PERL_HV_ALLOC_AUX_SIZE|5.019010||Viu
PERL_HV_ARRAY_ALLOC_BYTES|5.006000||Viu
PERL___I|5.009005||Viu
PERL_IMPLICIT_CONTEXT|5.006000||Viu
-PERL_INC_VERSION_LIST|5.033000|5.033000|Vn
+PERL_INC_VERSION_LIST|5.035009|5.035009|Vn
Perl_internal_drand48|5.027004||Viu
PERL_INTERPRETER_SIZE_UPTO_MEMBER|5.010000||Viu
PERL_INT_MAX|5.003007|5.003007|p
@@ -9569,39 +10493,39 @@ PERLIOBUF_DEFAULT_BUFSIZ|5.013007||Viu
PerlIO_canset_cnt|5.003007|5.003007|n
PerlIO_clearerr|5.007003|5.007003|
PerlIO_close|5.007003|5.007003|
-PerlIO_context_layers|5.009004|5.009004|u
+PerlIO_context_layers|||u
PerlIO_debug|5.007001|5.007001|
PERLIO_DUP_CLONE|5.007003||Viu
PERLIO_DUP_FD|5.007003||Viu
PerlIO_eof|5.007003|5.007003|
PerlIO_error|5.007003|5.007003|
PerlIO_exportFILE|5.003007|5.003007|n
-PERLIO_F_APPEND|5.007001||Viu
+PERLIO_F_APPEND|5.007001|5.007001|
PerlIO_fast_gets|5.003007|5.003007|n
-PERLIO_F_CANREAD|5.007001||Viu
-PERLIO_F_CANWRITE|5.007001||Viu
+PERLIO_F_CANREAD|5.007001|5.007001|
+PERLIO_F_CANWRITE|5.007001|5.007001|
PERLIO_F_CLEARED|5.013008||Viu
-PERLIO_F_CRLF|5.007001||Viu
+PERLIO_F_CRLF|5.007001|5.007001|
PerlIO_fdopen|5.003007|5.003007|n
-PERLIO_F_EOF|5.007001||Viu
-PERLIO_F_ERROR|5.007001||Viu
-PERLIO_F_FASTGETS|5.007001||Viu
+PERLIO_F_EOF|5.007001|5.007001|
+PERLIO_F_ERROR|5.007001|5.007001|
+PERLIO_F_FASTGETS|5.007001|5.007001|
PerlIO_fileno|5.007003|5.007003|
-PerlIO_fill|5.007003|5.007003|u
+PerlIO_fill|5.007000|5.007000|u
PerlIO_findFILE|5.003007|5.003007|n
-PERLIO_F_LINEBUF|5.007001||Viu
+PERLIO_F_LINEBUF|5.007001|5.007001|
PerlIO_flush|5.007003|5.007003|
PERLIO_F_NOTREG|5.008001||Viu
-PERLIO_F_OPEN|5.007001||Viu
-PERLIO_F_RDBUF|5.007001||Viu
-PERLIO_F_TEMP|5.007001||Viu
-PERLIO_F_TRUNCATE|5.007001||Viu
+PERLIO_F_OPEN|5.007001|5.007001|
+PERLIO_F_RDBUF|5.007001|5.007001|
+PERLIO_F_TEMP|5.007001|5.007001|
+PERLIO_F_TRUNCATE|5.007001|5.007001|
PERLIO_F_TTY|5.007001||Viu
-PERLIO_F_UNBUF|5.007001||Viu
-PERLIO_FUNCS_CAST|5.009003|5.007001|p
-PERLIO_FUNCS_DECL|5.009003|5.009003|pV
-PERLIO_F_UTF8|5.007001||Viu
-PERLIO_F_WRBUF|5.007001||Viu
+PERLIO_F_UNBUF|5.007001|5.007001|
+PERLIO_FUNCS_CAST|5.009003||pVu
+PERLIO_FUNCS_DECL|5.009003|5.009003|pVu
+PERLIO_F_UTF8|5.007001|5.007001|
+PERLIO_F_WRBUF|5.007001|5.007001|
PerlIO_get_base|5.007003|5.007003|
PerlIO_get_bufsiz|5.007003|5.007003|
PerlIO_getc|5.003007|5.003007|n
@@ -9613,13 +10537,13 @@ PerlIO_has_base|5.003007|5.003007|n
PerlIO_has_cntptr|5.003007|5.003007|n
PerlIO_importFILE|5.003007|5.003007|n
PERLIO_INIT|5.009005||Viu
-PERLIO_K_BUFFERED|5.007001||Viu
-PERLIO_K_CANCRLF|5.007001||Viu
+PERLIO_K_BUFFERED|5.007001|5.007001|
+PERLIO_K_CANCRLF|5.007001|5.007001|
PERLIO_K_DESTRUCT|5.007001||Viu
PERLIO_K_DUMMY|5.007001||Viu
-PERLIO_K_FASTGETS|5.007001||Viu
-PERLIO_K_MULTIARG|5.007003||Viu
-PERLIO_K_RAW|5.007001||Viu
+PERLIO_K_FASTGETS|5.007001|5.007001|
+PERLIO_K_MULTIARG|5.007003|5.007003|
+PERLIO_K_RAW|5.007001|5.007001|
PERLIO_K_UTF8|5.007001||Viu
PERLIO_LAYERS|5.007001||Viu
PERLIOL_H|5.027001||Viu
@@ -9631,7 +10555,7 @@ PerlIO_putc|5.003007|5.003007|n
PerlIO_puts|5.003007|5.003007|n
PerlIO_read|5.007003|5.007003|
PerlIO_releaseFILE|5.003007|5.003007|n
-PerlIO_reopen|5.003007|5.003007|
+PerlIO_reopen|5.003007|5.003007|n
PerlIO_restore_errno|5.021006||cViu
PerlIO_rewind|5.003007|5.003007|n
PerlIO_save_errno|5.021006||cViu
@@ -9654,16 +10578,18 @@ PERLIO_USING_CRLF|5.007003||Viu
PerlIOValid|5.007003||Viu
PerlIO_vprintf|5.003007|5.003007|n
PerlIO_write|5.007003|5.007003|
-Perl_isfinite|5.007003||Viu
+Perl_isfinite|5.007003|5.007003|n
Perl_isfinitel|5.021004||Viu
-PERL_IS_GCC|5.031011||Viu
-Perl_isinf|5.007003||Viu
-Perl_isnan|5.006001||Viu
+PERL_IS_GCC|5.032001||Viu
+Perl_isinf|5.007003|5.007003|n
+Perl_isnan|5.006001|5.006001|n
PERL_IS_SUBWORD_ADDR|5.027007||Viu
+PERL_IS_UTF8_CHAR_DFA|5.035004||Viu
+PERL_JNP_TO_DECIMAL|5.033001||Viu
Perl_langinfo|5.027004|5.027004|n
PERL_LANGINFO_H|5.027004||Viu
PERL_LAST_5_18_0_INTERP_MEMBER|5.017009||Viu
-Perl_ldexp|5.021003||Viu
+Perl_ldexp|5.021003|5.021003|n
PerlLIO_access|5.005000||Viu
PerlLIO_chmod|5.005000||Viu
PerlLIO_chown|5.005000||Viu
@@ -9686,9 +10612,11 @@ PerlLIO_open3_cloexec|5.027008||Viu
PerlLIO_open|5.005000||Viu
PerlLIO_open_cloexec|5.027008||Viu
PerlLIO_read|5.005000||Viu
+PerlLIO_readlink|5.033005||Viu
PerlLIO_rename|5.005000||Viu
PerlLIO_setmode|5.005000||Viu
PerlLIO_stat|5.005000||Viu
+PerlLIO_symlink|5.033005||Viu
PerlLIO_tmpnam|5.005000||Viu
PerlLIO_umask|5.005000||Viu
PerlLIO_unlink|5.005000||Viu
@@ -9697,8 +10625,8 @@ PerlLIO_write|5.005000||Viu
PERL_LOADMOD_DENY|5.006000|5.003007|
PERL_LOADMOD_IMPORT_OPS|5.006000|5.003007|
PERL_LOADMOD_NOIMPORT|5.006000|5.003007|
-Perl_log10|5.021004||Viu
-Perl_log|5.006000||Viu
+Perl_log10|5.021004|5.021004|n
+Perl_log|5.006000|5.006000|n
PERL_LONG_MAX|5.003007|5.003007|p
PERL_LONG_MIN|5.003007|5.003007|p
PERL_MAGIC_arylen|5.007002|5.003007|p
@@ -9755,7 +10683,6 @@ PERL_MAGIC_VALUE_MAGIC|5.015000||Viu
PERL_MAGIC_vec|5.007002|5.003007|p
PERL_MAGIC_vstring|5.008001|5.003007|p
PERL_MAGIC_VTABLE_MASK|5.015000||Viu
-Perl_malloc|5.006000||Viu
PERL_MALLOC_CTL_H|5.027001||Viu
Perl_malloc_good_size|5.010001||Viu
PERL_MALLOC_WRAP|5.009002|5.009002|Vn
@@ -9781,9 +10708,8 @@ PerlMemShared_get_lock|5.006000||Viu
PerlMemShared_is_locked|5.006000||Viu
PerlMemShared_malloc|5.006000||Viu
PerlMemShared_realloc|5.006000||Viu
-Perl_mfree|5.006000||Viu
PERL_MG_UFUNC|5.007001||Viu
-Perl_modf|5.006000||Viu
+Perl_modf|5.006000|5.006000|n
PERL_MULTICONCAT_HEADER_SIZE|5.027006||Viu
PERL_MULTICONCAT_IX_LENGTHS|5.027006||Viu
PERL_MULTICONCAT_IX_NARGS|5.027006||Viu
@@ -9799,6 +10725,7 @@ PERL_MY_SNPRINTF_POST_GUARD|5.021002||Viu
PERL_MY_VSNPRINTF_GUARDED|5.009004||Viu
PERL_MY_VSNPRINTF_POST_GUARD|5.021002||Viu
PERL_NO_DEV_RANDOM|5.009004||Viu
+PERL_NON_CORE_CHECK_EMPTY|5.035004||Viu
PERL_OBJECT_THIS|5.005000||Viu
PERL_OP_PARENT|5.025001||Viu
PERL_PADNAME_MINIMAL|5.021007||Viu
@@ -9807,7 +10734,7 @@ perl_parse|5.006000|5.006000|n
PERL_PATCHLEVEL_H_IMPLICIT|5.006000||Viu
PERL_PATCHNUM|5.010001||Viu
PERL_POISON_EXPR|5.019006||Viu
-Perl_pow|5.006000||Viu
+Perl_pow|5.006000|5.006000|n
Perl_pp_accept|5.013009||Viu
Perl_pp_aelemfast_lex|5.015000||Viu
Perl_pp_andassign|5.013009||Viu
@@ -9967,6 +10894,7 @@ perl_pthread_mutex_lock|5.023006||Viu
perl_pthread_mutex_unlock|5.023006||Viu
PERL_PV_ESCAPE_ALL|5.009004|5.003007|p
PERL_PV_ESCAPE_DWIM|5.019008||Viu
+PERL_PV_ESCAPE_DWIM_ALL_HEX|||Viu
PERL_PV_ESCAPE_FIRSTCHAR|5.009004|5.003007|p
PERL_PV_ESCAPE_NOBACKSLASH|5.009004|5.003007|p
PERL_PV_ESCAPE_NOCLEAR|5.009004|5.003007|p
@@ -9975,69 +10903,71 @@ PERL_PV_ESCAPE_QUOTE|5.009004|5.003007|p
PERL_PV_ESCAPE_RE|5.009005|5.003007|p
PERL_PV_ESCAPE_UNI|5.009004|5.003007|p
PERL_PV_ESCAPE_UNI_DETECT|5.009004|5.003007|p
-PERL_PV_PRETTY_DUMP|5.009004|5.003007|pocV
+PERL_PV_PRETTY_DUMP|5.009004||pcV
PERL_PV_PRETTY_ELLIPSES|5.010000|5.003007|p
PERL_PV_PRETTY_EXACTSIZE|5.021005||Viu
PERL_PV_PRETTY_LTGT|5.009004|5.003007|p
-PERL_PV_PRETTY_NOCLEAR|5.010000|5.003007|pocV
+PERL_PV_PRETTY_NOCLEAR|5.010000||pcV
PERL_PV_PRETTY_QUOTE|5.009004|5.003007|p
-PERL_PV_PRETTY_REGPROP|5.009004|5.003007|pocV
+PERL_PV_PRETTY_REGPROP|5.009004||pcV
PERL_QUAD_MAX|5.003007|5.003007|p
PERL_QUAD_MIN|5.003007|5.003007|p
-Perl_realloc|5.006000||Viu
+PERL_READ_LOCK|5.033005||Viu
+PERL_READ_UNLOCK|5.033005||Viu
PERL_REENTR_API|5.009005||Viu
PERL_REENTR_H|5.027001||Viu
-PERL_REENTR_USING_ASCTIME_R|5.031010||Viu
-PERL_REENTR_USING_CRYPT_R|5.031010||Viu
-PERL_REENTR_USING_CTERMID_R|5.031010||Viu
-PERL_REENTR_USING_CTIME_R|5.031010||Viu
-PERL_REENTR_USING_ENDGRENT_R|5.031010||Viu
-PERL_REENTR_USING_ENDHOSTENT_R|5.031010||Viu
-PERL_REENTR_USING_ENDNETENT_R|5.031010||Viu
-PERL_REENTR_USING_ENDPROTOENT_R|5.031010||Viu
-PERL_REENTR_USING_ENDPWENT_R|5.031010||Viu
-PERL_REENTR_USING_ENDSERVENT_R|5.031010||Viu
-PERL_REENTR_USING_GETGRENT_R|5.031010||Viu
-PERL_REENTR_USING_GETGRGID_R|5.031010||Viu
-PERL_REENTR_USING_GETGRNAM_R|5.031010||Viu
-PERL_REENTR_USING_GETHOSTBYADDR_R|5.031010||Viu
-PERL_REENTR_USING_GETHOSTBYNAME_R|5.031010||Viu
-PERL_REENTR_USING_GETHOSTENT_R|5.031010||Viu
-PERL_REENTR_USING_GETLOGIN_R|5.031010||Viu
-PERL_REENTR_USING_GETNETBYADDR_R|5.031010||Viu
-PERL_REENTR_USING_GETNETBYNAME_R|5.031010||Viu
-PERL_REENTR_USING_GETNETENT_R|5.031010||Viu
-PERL_REENTR_USING_GETPROTOBYNAME_R|5.031010||Viu
-PERL_REENTR_USING_GETPROTOBYNUMBER_R|5.031010||Viu
-PERL_REENTR_USING_GETPROTOENT_R|5.031010||Viu
-PERL_REENTR_USING_GETPWENT_R|5.031010||Viu
-PERL_REENTR_USING_GETPWNAM_R|5.031010||Viu
-PERL_REENTR_USING_GETPWUID_R|5.031010||Viu
-PERL_REENTR_USING_GETSERVBYNAME_R|5.031010||Viu
-PERL_REENTR_USING_GETSERVBYPORT_R|5.031010||Viu
-PERL_REENTR_USING_GETSERVENT_R|5.031010||Viu
-PERL_REENTR_USING_GETSPNAM_R|5.031010||Viu
-PERL_REENTR_USING_GMTIME_R|5.031010||Viu
-PERL_REENTR_USING_LOCALTIME_R|5.031010||Viu
-PERL_REENTR_USING_READDIR64_R|5.031010||Viu
-PERL_REENTR_USING_READDIR_R|5.031010||Viu
-PERL_REENTR_USING_SETGRENT_R|5.031010||Viu
-PERL_REENTR_USING_SETHOSTENT_R|5.031010||Viu
-PERL_REENTR_USING_SETLOCALE_R|5.031010||Viu
-PERL_REENTR_USING_SETNETENT_R|5.031010||Viu
-PERL_REENTR_USING_SETPROTOENT_R|5.031010||Viu
-PERL_REENTR_USING_SETPWENT_R|5.031010||Viu
-PERL_REENTR_USING_SETSERVENT_R|5.031010||Viu
-PERL_REENTR_USING_STRERROR_R|5.031010||Viu
-PERL_REENTR_USING_TMPNAM_R|5.031010||Viu
-PERL_REENTR_USING_TTYNAME_R|5.031010||Viu
+PERL_REENTR_USING_ASCTIME_R|5.031011||Viu
+PERL_REENTR_USING_CRYPT_R|5.031011||Viu
+PERL_REENTR_USING_CTERMID_R|5.031011||Viu
+PERL_REENTR_USING_CTIME_R|5.031011||Viu
+PERL_REENTR_USING_ENDGRENT_R|5.031011||Viu
+PERL_REENTR_USING_ENDHOSTENT_R|5.031011||Viu
+PERL_REENTR_USING_ENDNETENT_R|5.031011||Viu
+PERL_REENTR_USING_ENDPROTOENT_R|5.031011||Viu
+PERL_REENTR_USING_ENDPWENT_R|5.031011||Viu
+PERL_REENTR_USING_ENDSERVENT_R|5.031011||Viu
+PERL_REENTR_USING_GETGRENT_R|5.031011||Viu
+PERL_REENTR_USING_GETGRGID_R|5.031011||Viu
+PERL_REENTR_USING_GETGRNAM_R|5.031011||Viu
+PERL_REENTR_USING_GETHOSTBYADDR_R|5.031011||Viu
+PERL_REENTR_USING_GETHOSTBYNAME_R|5.031011||Viu
+PERL_REENTR_USING_GETHOSTENT_R|5.031011||Viu
+PERL_REENTR_USING_GETLOGIN_R|5.031011||Viu
+PERL_REENTR_USING_GETNETBYADDR_R|5.031011||Viu
+PERL_REENTR_USING_GETNETBYNAME_R|5.031011||Viu
+PERL_REENTR_USING_GETNETENT_R|5.031011||Viu
+PERL_REENTR_USING_GETPROTOBYNAME_R|5.031011||Viu
+PERL_REENTR_USING_GETPROTOBYNUMBER_R|5.031011||Viu
+PERL_REENTR_USING_GETPROTOENT_R|5.031011||Viu
+PERL_REENTR_USING_GETPWENT_R|5.031011||Viu
+PERL_REENTR_USING_GETPWNAM_R|5.031011||Viu
+PERL_REENTR_USING_GETPWUID_R|5.031011||Viu
+PERL_REENTR_USING_GETSERVBYNAME_R|5.031011||Viu
+PERL_REENTR_USING_GETSERVBYPORT_R|5.031011||Viu
+PERL_REENTR_USING_GETSERVENT_R|5.031011||Viu
+PERL_REENTR_USING_GETSPNAM_R|5.031011||Viu
+PERL_REENTR_USING_GMTIME_R|5.031011||Viu
+PERL_REENTR_USING_LOCALTIME_R|5.031011||Viu
+PERL_REENTR_USING_READDIR64_R|5.031011||Viu
+PERL_REENTR_USING_READDIR_R|5.031011||Viu
+PERL_REENTR_USING_SETGRENT_R|5.031011||Viu
+PERL_REENTR_USING_SETHOSTENT_R|5.031011||Viu
+PERL_REENTR_USING_SETLOCALE_R|5.031011||Viu
+PERL_REENTR_USING_SETNETENT_R|5.031011||Viu
+PERL_REENTR_USING_SETPROTOENT_R|5.031011||Viu
+PERL_REENTR_USING_SETPWENT_R|5.031011||Viu
+PERL_REENTR_USING_SETSERVENT_R|5.031011||Viu
+PERL_REENTR_USING_STRERROR_R|5.031011||Viu
+PERL_REENTR_USING_TMPNAM_R|5.031011||Viu
+PERL_REENTR_USING_TTYNAME_R|5.031011||Viu
PERL_REGCHARCLASS_H|5.027001||Viu
PERL_REGCOMP_H|5.029006||Viu
PERL_REGMATCH_SLAB_SLOTS|5.009004||Viu
PERL_RELOCATABLE_INC|5.017002|5.017002|Vn
PERL_REVISION|5.006000|5.006000|d
perl_run|5.003007|5.003007|n
-PERL_RVS_TO_DECIMAL|5.033000||Viu
+PERL_RW_MUTEX_DESTROY|5.033005||Viu
+PERL_RW_MUTEX_INIT|5.033005||Viu
Perl_safesysmalloc_size|5.010001||Viu
PERL_SAWAMPERSAND|5.017010||Viu
PERL_SCAN_ALLOW_MEDIAL_UNDERSCORES|5.031009||Viu
@@ -10068,8 +10998,8 @@ Perl_signbit|5.009005|5.009005|xn
PERLSI_MAGIC|5.005000||Viu
PERLSI_MAIN|5.005000||Viu
PERLSI_MULTICALL|5.023000||Viu
-Perl_sin|5.006000||Viu
-Perl_sinh|5.021004||Viu
+Perl_sin|5.006000|5.006000|n
+Perl_sinh|5.021004|5.021004|n
PerlSIO_canset_cnt|5.007001||Viu
PerlSIO_clearerr|5.007001||Viu
PerlSIO_fast_gets|5.007001||Viu
@@ -10115,14 +11045,13 @@ PerlSIO_ungetc|5.007001||Viu
PERLSI_OVERLOAD|5.005000||Viu
PerlSIO_vprintf|5.007001||Viu
PERL_SIPHASH_FNC|5.025008||Viu
-PERLSI_REGCOMP|5.031010||Viu
+PERLSI_REGCOMP|5.031011||Viu
PERLSI_REQUIRE|5.005000||Viu
PERLSI_SIGNAL|5.005000||Viu
PERLSI_SORT|5.005000||Viu
PERLSI_UNDEF|5.005000||Viu
PERLSI_UNKNOWN|5.005000||Viu
PERLSI_WARNHOOK|5.005000||Viu
-PERL_SMALL_MACRO_BUFFER|5.023008||Viu
PERL_SNPRINTF_CHECK|5.021002||Viu
PerlSock_accept|5.005000||Viu
PerlSock_accept_cloexec|5.027008||Viu
@@ -10172,11 +11101,11 @@ PerlSock_socket|5.005000||Viu
PerlSock_socket_cloexec|5.027008||Viu
PerlSock_socketpair|5.005000||Viu
PerlSock_socketpair_cloexec|5.027008||Viu
-Perl_sqrt|5.006000||Viu
+Perl_sqrt|5.006000|5.006000|n
PERL_STACK_OVERFLOW_CHECK|5.006000||Viu
-PERL_STATIC_FORCE_INLINE|5.031010||Viu
-PERL_STATIC_FORCE_INLINE_NO_RET|5.031010||Viu
-PERL_STATIC_INLINE|5.013004|5.013004|Vn
+PERL_STATIC_FORCE_INLINE|5.031011||Viu
+PERL_STATIC_FORCE_INLINE_NO_RET|5.031011||Viu
+PERL_STATIC_INLINE|5.013004|5.013004|poVn
PERL_STATIC_INLINE_NO_RET|5.017005||Viu
PERL_STATIC_NO_RET|5.017005||Viu
PERL_STRLEN_EXPAND_SHIFT|5.013004||Viu
@@ -10192,9 +11121,10 @@ PERL_SYS_INIT|5.003007|5.003007|
PERL_SYS_INIT_BODY|5.010000||Viu
PERL_SYS_TERM|5.003007|5.003007|
PERL_SYS_TERM_BODY|5.010000||Viu
-Perl_tan|5.021004||Viu
-Perl_tanh|5.021004||Viu
+Perl_tan|5.021004|5.021004|n
+Perl_tanh|5.021004|5.021004|n
PERL_TARGETARCH|5.007002|5.007002|Vn
+PERL_THREAD_LOCAL|5.035004|5.035004|Vn
PERL_TIME64_CONFIG_H|5.027001||Viu
PERL_TIME64_H|5.027001||Viu
PERL_TRACK_MEMPOOL|5.009003||Viu
@@ -10251,6 +11181,7 @@ PERL_UQUAD_MIN|5.003007|5.003007|p
PERL_USE_DEVEL|5.010001|5.010001|Vn
PERL_USE_GCC_BRACE_GROUPS|5.009004|5.003007|pV
PERL_USES_PL_PIDSTATUS|5.009003||Viu
+PERL_USE_THREAD_LOCAL|5.035004||Viu
PERL_USHORT_MAX|5.003007|5.003007|p
PERL_USHORT_MIN|5.003007|5.003007|p
PERL_UTF8_H|5.027001||Viu
@@ -10262,21 +11193,29 @@ PERLVARI|5.005000||Viu
PERL_VARIANTS_WORD_MASK|5.027007||Viu
PERLVARIC|5.005000||Viu
PERL_VERSION|5.006000|5.003007|d
-PERL_VERSION_EQ|5.033000||p
-PERL_VERSION_GE|5.033000|5.003007|p
-PERL_VERSION_GT|5.033000|5.003007|p
-PERL_VERSION_LE|5.033000|5.003007|p
-PERL_VERSION_LT|5.033000|5.003007|p
-PERL_VERSION_NE|5.033000||p
+PERL_VERSION_EQ|5.033001||p
+PERL_VERSION_GE|5.033001|5.003007|p
+PERL_VERSION_GT|5.033001|5.003007|p
+PERL_VERSION_LE|5.033001|5.003007|p
+PERL_VERSION_LT|5.033001|5.003007|p
+PERL_VERSION_MAJOR|5.033001||Viu
+PERL_VERSION_MINOR|5.033001||Viu
+PERL_VERSION_NE|5.033001||p
+PERL_VERSION_PATCH|5.033001||Viu
PERL_VERSION_STRING|5.010001||Viu
PERL_WAIT_FOR_CHILDREN|5.006000||Viu
+Perl_Warn_Bit|5.033003||Viu
Perl_warner_nocontext||5.004000|ponu
PERL_WARNHOOK_FATAL|5.009004||Viu
+Perl_Warn_Off|5.033003||Viu
PERL_WORD_BOUNDARY_MASK|5.027007||Viu
PERL_WORDSIZE|5.027007||Viu
+PERL_WRITE_LOCK|5.033005||Viu
PERL_WRITE_MSG_TO_CONSOLE|5.007003||Viu
+PERL_WRITE_UNLOCK|5.033005||Viu
PERL_XSUB_H|5.027001||Viu
perly_sighandler|5.031007||cVnu
+phase_name|5.035007|5.035007|
PHOSTNAME|5.006000|5.006000|Vn
pidgone|5.003007||Viu
Pid_t|5.005000|5.005000|Vn
@@ -10322,7 +11261,6 @@ PL_comppad_name_floor|5.005000||Viu
PL_constpadix|5.021004||Viu
PL_copline||5.003007|ponu
PL_cop_seqmax|5.005000||Viu
-PL_cryptseen|5.005000||Viu
PL_cshlen|5.005000||Viu
PL_curcop|5.004005|5.003007|p
PL_curcopdb|5.005000||Viu
@@ -10345,10 +11283,10 @@ PL_DBgv|5.005000||Viu
PL_DBline|5.005000||Viu
PL_DBsignal|5.005000|5.003007|poVnu
PL_DBsignal_iv|5.021005||Viu
-PL_DBsingle|5.005000|5.003007|poV
+PL_DBsingle|5.005000||pV
PL_DBsingle_iv|5.021005||Viu
-PL_DBsub|5.005000|5.003007|poV
-PL_DBtrace|5.005000|5.003007|poV
+PL_DBsub|5.005000||pV
+PL_DBtrace|5.005000||pV
PL_DBtrace_iv|5.021005||Viu
PL_debstash|5.005000|5.003007|poVnu
PL_debug|5.005000||Viu
@@ -10367,7 +11305,7 @@ PL_diehook|5.005000|5.003007|poVnu
PL_Dir|5.006000||Viu
PL_dirty|5.005000|5.003007|poVnu
PL_doswitches|5.005000||Viu
-PL_dowarn|5.005000|5.003007|poV
+PL_dowarn|5.005000||pV
PL_dumper_fd|5.009003||Viu
PL_dumpindent|5.006000||Viu
PL_dump_re_max_len|5.023008||Viu
@@ -10402,6 +11340,8 @@ PL_globhook|5.015005||Viu
PL_hash_rand_bits|5.017010||Viu
PL_HASH_RAND_BITS_ENABLED|5.018000||Viu
PL_hash_rand_bits_enabled|5.018000||Viu
+PL_hash_seed|5.033007||Viu
+PL_hash_state|5.033007||Viu
PL_HasMultiCharFold|5.017005||Viu
PL_hexdigit||5.003007|pn
PL_hintgv|5.005000||Viu
@@ -10451,10 +11391,11 @@ PL_markstack_max|5.005000||Viu
PL_markstack_ptr|5.005000||Viu
PL_max_intro_pending|5.005000||Viu
PL_maxo|5.005000||Viu
-PL_maxsysfd|5.005000||Viu
-PL_mbrlen_ps|5.031009||Viu
-PL_mbrtowc_ps|5.031009||Viu
+PL_maxsysfd|5.005000|5.005000|
+PL_mbrlen_ps|5.031010||Viu
+PL_mbrtowc_ps|5.031010||Viu
PL_Mem|5.006000||Viu
+PL_mem_log|5.033005||Viu
PL_memory_debug_header|5.009004||Viu
PL_MemParse|5.006000||Viu
PL_MemShared|5.006000||Viu
@@ -10510,6 +11451,7 @@ PL_pidstatus|5.005000||Viu
PL_Posix_ptrs|5.029000||Viu
PL_ppaddr||5.003007|ponu
PL_preambleav|5.005000||Viu
+PL_prevailing_version|5.035009||Viu
PL_Private_Use|5.029009||Viu
PL_Proc|5.006000||Viu
PL_profiledata|5.005000||Viu
@@ -10529,7 +11471,7 @@ PL_regmatch_slab|5.009004||Viu
PL_regmatch_state|5.009004||Viu
PL_replgv|5.005000||Viu
PL_restartjmpenv|5.013001||Viu
-PL_restartop|5.005000||Viu
+PL_restartop|5.005000|5.005000|
PL_rpeepp|5.013005|5.013005|
PL_rs|5.005000||Vi
PL_rsfp||5.003007|ponu
@@ -10585,7 +11527,7 @@ PL_strxfrm_NUL_replacement|5.025008||Viu
PL_sub_generation|5.005000||Viu
PL_subline|5.005000||Viu
PL_subname|5.005000||Viu
-PL_Sv|5.005000|5.003007|p
+PL_Sv|5.005000||pcV
PL_sv_arenaroot|5.005000|5.003007|poVnu
PL_sv_consts|5.019002||Viu
PL_sv_count|5.005000||Viu
@@ -10608,7 +11550,7 @@ PL_tmps_stack|5.005000||Viu
PL_tokenbuf||5.003007|ponu
PL_top_env|5.005000||Viu
PL_toptarget|5.005000||Viu
-PL_TR_SPECIAL_HANDLING_UTF8|5.031007||Viu
+PL_TR_SPECIAL_HANDLING_UTF8|5.031006||Viu
PL_underlying_numeric_obj|5.027009||Viu
PL_unicode|5.008001||Viu
PL_unitcheckav|5.009005||Viu
@@ -10617,6 +11559,12 @@ PL_unlockhook|5.007003||Viu
PL_unsafe|5.005000||Viu
PL_UpperLatin1|5.019005||Viu
PLUS|5.003007||Viu
+PLUS_t8|5.035004||Viu
+PLUS_t8_p8|5.033003||Viu
+PLUS_t8_pb|5.033003||Viu
+PLUS_tb|5.035004||Viu
+PLUS_tb_p8|5.033003||Viu
+PLUS_tb_pb|5.033003||Viu
PL_utf8cache|5.009004||Viu
PL_utf8_charname_begin|5.017006||Viu
PL_utf8_charname_continue|5.017006||Viu
@@ -10661,6 +11609,7 @@ PL_vtbl_pos|5.015000||Viu
PL_vtbl_regdata|5.015000||Viu
PL_vtbl_regdatum|5.015000||Viu
PL_vtbl_regexp|5.015000||Viu
+PL_vtbl_sig|5.035001||Viu
PL_vtbl_sigelem|5.015000||Viu
PL_vtbl_substr|5.015000||Viu
PL_vtbl_sv|5.015000||Viu
@@ -10673,7 +11622,7 @@ PL_warn_locale|5.021008||Viu
PL_watchaddr|5.006000||Viu
PL_watchok|5.006000||Viu
PL_WB_invlist|5.021009||Viu
-PL_wcrtomb_ps|5.031009||Viu
+PL_wcrtomb_ps|5.031010||Viu
PL_XPosix_ptrs|5.017008||Viu
PL_Xpv|5.005000|5.003007|poVnu
PL_xsubfilename|5.021006||Viu
@@ -10703,7 +11652,7 @@ PMf_SPLIT|5.017011||Viu
PMf_STRICT|5.021008||Viu
PMf_USED|5.009005||Viu
PMf_USE_RE_EVAL|5.017001||Viu
-PMf_WILDCARD|5.031009||Viu
+PMf_WILDCARD|5.031010||Viu
PM_GETRE|5.007002||Viu
pmop_dump|5.006000|5.006000|u
PmopSTASH|5.007001||Viu
@@ -10723,6 +11672,7 @@ Poison|5.008000|5.003007|p
PoisonFree|5.009004|5.003007|p
PoisonNew|5.009004|5.003007|p
PoisonPADLIST|5.021006||Viu
+POISON_SV_HEAD|||Viu
PoisonWith|5.009004|5.003007|p
popen|5.003007||Viu
POPi|5.003007|5.003007|
@@ -10743,14 +11693,38 @@ POPul|5.006000|5.006000|
populate_ANYOF_from_invlist|5.019005||Viu
populate_isa|||viu
POSIXA|5.017003||Viu
+POSIXA_t8|5.035004||Viu
+POSIXA_t8_p8|5.033003||Viu
+POSIXA_t8_pb|5.033003||Viu
+POSIXA_tb|5.035004||Viu
+POSIXA_tb_p8|5.033003||Viu
+POSIXA_tb_pb|5.033003||Viu
POSIX_CC_COUNT|5.017008||Viu
POSIXD|5.017003||Viu
+POSIXD_t8|5.035004||Viu
+POSIXD_t8_p8|5.033003||Viu
+POSIXD_t8_pb|5.033003||Viu
+POSIXD_tb|5.035004||Viu
+POSIXD_tb_p8|5.033003||Viu
+POSIXD_tb_pb|5.033003||Viu
POSIXL|5.017003||Viu
POSIXL_CLEAR|5.029004||Viu
POSIXL_SET|5.029004||Viu
+POSIXL_t8|5.035004||Viu
+POSIXL_t8_p8|5.033003||Viu
+POSIXL_t8_pb|5.033003||Viu
+POSIXL_tb|5.035004||Viu
+POSIXL_tb_p8|5.033003||Viu
+POSIXL_tb_pb|5.033003||Viu
POSIXL_TEST|5.029004||Viu
POSIXL_ZERO|5.029004||Viu
POSIXU|5.017003||Viu
+POSIXU_t8|5.035004||Viu
+POSIXU_t8_p8|5.033003||Viu
+POSIXU_t8_pb|5.033003||Viu
+POSIXU_tb|5.035004||Viu
+POSIXU_tb_p8|5.033003||Viu
+POSIXU_tb_pb|5.033003||Viu
PP|5.003007||Viu
pregcomp|5.009005|5.009005|
pregexec|5.003007|5.003007|
@@ -10773,21 +11747,32 @@ PREGf_VERBARG_SEEN|5.009005||Viu
prepare_SV_for_RV|5.010001||Viu
prescan_version|5.011004|5.011004|
PRESCAN_VERSION|5.019008||Viu
-PREVOPER|5.003007||Viu
PREV_RANGE_MATCHES_INVLIST|5.023002||Viu
printbuf|5.009004||Viu
print_bytes_for_locale|5.027002||Viu
print_collxfrm_input_and_return|5.025004||Viu
printf|5.003007||Viu
PRINTF_FORMAT_NULL_OK|5.009005|5.009005|Vn
-printf_nocontext|5.007001|5.007001|vdnu
+printf_nocontext|5.007001||vdVnu
PRIVLIB|5.003007|5.003007|Vn
PRIVLIB_EXP|5.003007|5.003007|Vn
PRIVSHIFT|5.003007||Viu
process_special_blocks|5.009005||Viu
PROCSELFEXE_PATH|5.007003|5.007003|Vn
PRUNE|5.009005||Viu
+PRUNE_t8|5.035004||Viu
+PRUNE_t8_p8|5.033003||Viu
+PRUNE_t8_pb|5.033003||Viu
+PRUNE_tb|5.035004||Viu
+PRUNE_tb_p8|5.033003||Viu
+PRUNE_tb_pb|5.033003||Viu
PSEUDO|5.009004||Viu
+PSEUDO_t8|5.035004||Viu
+PSEUDO_t8_p8|5.033003||Viu
+PSEUDO_t8_pb|5.033003||Viu
+PSEUDO_tb|5.035004||Viu
+PSEUDO_tb_p8|5.033003||Viu
+PSEUDO_tb_pb|5.033003||Viu
pthread_addr_t|5.005000||Viu
PTHREAD_ATFORK|5.007002||Viu
pthread_attr_init|5.006000||Viu
@@ -10808,13 +11793,13 @@ pTHX_1|5.006000||Viu
pTHX_2|5.006000||Viu
pTHX_3|5.006000||Viu
pTHX_4|5.006000||Viu
-pTHX_||5.003007|p
pTHX|5.006000|5.003007|p
pTHX_5|5.009003||Viu
pTHX_6|5.009003||Viu
pTHX_7|5.009003||Viu
pTHX_8|5.009003||Viu
pTHX_9|5.009003||Viu
+pTHX_||5.003007|p
pTHX__FORMAT|5.009002||Viu
pTHX_FORMAT|5.009002||Viu
pTHXo|5.006000||Viu
@@ -10829,14 +11814,13 @@ PTR2UV|5.006000|5.003007|p
Ptrdiff_t|5.029003||Viu
ptr_hash|5.017010||Vniu
PTRSIZE|5.005000|5.005000|Vn
-ptr_table_clear|5.009005|5.009005|du
ptr_table_fetch|5.009005|5.009005|u
ptr_table_find|5.009004||Vniu
ptr_table_free|5.009005|5.009005|u
ptr_table_new|5.009005|5.009005|u
ptr_table_split|5.009005|5.009005|u
ptr_table_store|5.009005|5.009005|u
-PTRV|5.006000|5.003007|pV
+PTRV|5.006000|5.003007|poVnu
PUSHi|5.003007|5.003007|
PUSHMARK|5.003007|5.003007|
PUSHmortal|5.009002|5.003007|p
@@ -10886,8 +11870,8 @@ RADIXCHAR|5.027010||Viu
RANDBITS|5.003007|5.003007|Vn
RANDOM_R_PROTO|5.008000|5.008000|Vn
Rand_seed_t|5.006000|5.006000|Vn
-RANGE_INDICATOR|5.031007||Viu
-rck_elide_nothing|5.032000||Viu
+RANGE_INDICATOR|5.031006||Viu
+rck_elide_nothing|5.032001||Viu
RD_NODATA|5.003007|5.003007|Vn
read|5.005000||Viu
readdir|5.005000||Viu
@@ -10895,7 +11879,7 @@ readdir64|5.009000||Viu
READDIR64_R_PROTO|5.008000|5.008000|Vn
READDIR_R_PROTO|5.008000|5.008000|Vn
READ_XDIGIT|5.017006|5.017006|
-realloc|5.007002|5.007002|n
+realloc|5.003007||Vn
ReANY|5.017006||cVnu
re_compile|5.009005|5.009005|u
RE_COMPILE_RECURSION_INIT|5.029009||Viu
@@ -10918,13 +11902,11 @@ RE_DEBUG_EXTRA_BUFFERS|5.009005||Viu
RE_DEBUG_EXTRA_DUMP_PRE_OPTIMIZE|5.031004||Viu
RE_DEBUG_EXTRA_GPOS|5.011000||Viu
RE_DEBUG_EXTRA_MASK|5.009004||Viu
-RE_DEBUG_EXTRA_OFFDEBUG|5.009005||Viu
-RE_DEBUG_EXTRA_OFFSETS|5.009004||Viu
RE_DEBUG_EXTRA_OPTIMISE|5.009005||Viu
RE_DEBUG_EXTRA_STACK|5.009005||Viu
RE_DEBUG_EXTRA_STATE|5.009004||Viu
RE_DEBUG_EXTRA_TRIE|5.009004||Viu
-RE_DEBUG_EXTRA_WILDCARD|5.031010||Viu
+RE_DEBUG_EXTRA_WILDCARD|5.031011||Viu
RE_DEBUG_FLAG|5.009004||Viu
RE_DEBUG_FLAGS|5.009002||Viu
re_dup_guts|5.011000|5.011000|
@@ -10996,7 +11978,7 @@ REENTRANT_PROTO_S_SBI|5.008000||Viu
REENTRANT_PROTO_S_SBIE|5.008000||Viu
REENTRANT_PROTO_S_SBW|5.008000||Viu
REENTRANT_PROTO_S_TISBI|5.008000||Viu
-REENTRANT_PROTO_S_TS|5.031010||Viu
+REENTRANT_PROTO_S_TS|5.031011||Viu
REENTRANT_PROTO_S_TSBI|5.008000||Viu
REENTRANT_PROTO_S_TSBIE|5.008000||Viu
REENTRANT_PROTO_S_TWISBIE|5.008000||Viu
@@ -11027,19 +12009,85 @@ refcounted_he_value|5.009004||Viu
REFF|5.004001||Viu
REFFA|5.013010||Viu
REFFAN|5.031001||Viu
+REFFAN_t8|5.035004||Viu
+REFFAN_t8_p8|5.033003||Viu
+REFFAN_t8_pb|5.033003||Viu
+REFFAN_tb|5.035004||Viu
+REFFAN_tb_p8|5.033003||Viu
+REFFAN_tb_pb|5.033003||Viu
+REFFA_t8|5.035004||Viu
+REFFA_t8_p8|5.033003||Viu
+REFFA_t8_pb|5.033003||Viu
+REFFA_tb|5.035004||Viu
+REFFA_tb_p8|5.033003||Viu
+REFFA_tb_pb|5.033003||Viu
REFFL|5.004001||Viu
REFFLN|5.031001||Viu
+REFFLN_t8|5.035004||Viu
+REFFLN_t8_p8|5.033003||Viu
+REFFLN_t8_pb|5.033003||Viu
+REFFLN_tb|5.035004||Viu
+REFFLN_tb_p8|5.033003||Viu
+REFFLN_tb_pb|5.033003||Viu
+REFFL_t8|5.035004||Viu
+REFFL_t8_p8|5.033003||Viu
+REFFL_t8_pb|5.033003||Viu
+REFFL_tb|5.035004||Viu
+REFFL_tb_p8|5.033003||Viu
+REFFL_tb_pb|5.033003||Viu
REFFN|5.031001||Viu
+REFFN_t8|5.035004||Viu
+REFFN_t8_p8|5.033003||Viu
+REFFN_t8_pb|5.033003||Viu
+REFFN_tb|5.035004||Viu
+REFFN_tb_p8|5.033003||Viu
+REFFN_tb_pb|5.033003||Viu
+REFF_t8|5.035004||Viu
+REFF_t8_p8|5.033003||Viu
+REFF_t8_pb|5.033003||Viu
+REFF_tb|5.035004||Viu
+REFF_tb_p8|5.033003||Viu
+REFF_tb_pb|5.033003||Viu
REFFU|5.013008||Viu
REFFUN|5.031001||Viu
+REFFUN_t8|5.035004||Viu
+REFFUN_t8_p8|5.033003||Viu
+REFFUN_t8_pb|5.033003||Viu
+REFFUN_tb|5.035004||Viu
+REFFUN_tb_p8|5.033003||Viu
+REFFUN_tb_pb|5.033003||Viu
+REFFU_t8|5.035004||Viu
+REFFU_t8_p8|5.033003||Viu
+REFFU_t8_pb|5.033003||Viu
+REFFU_tb|5.035004||Viu
+REFFU_tb_p8|5.033003||Viu
+REFFU_tb_pb|5.033003||Viu
REF_HE_KEY|5.009005||Viu
refkids|5.003007||Viu
REFN|5.031001||Viu
+REFN_t8|5.035004||Viu
+REFN_t8_p8|5.033003||Viu
+REFN_t8_pb|5.033003||Viu
+REFN_tb|5.035004||Viu
+REFN_tb_p8|5.033003||Viu
+REFN_tb_pb|5.033003||Viu
+REF_t8|5.035004||Viu
+REF_t8_p8|5.033003||Viu
+REF_t8_pb|5.033003||Viu
+REF_tb|5.035004||Viu
+REF_tb_p8|5.033003||Viu
+REF_tb_pb|5.033003||Viu
refto|5.005000||Viu
reg2Lanode|5.021005||Viu
reg|5.005000||Viu
reganode|5.005000||Viu
REG_ANY|5.006000||Viu
+REG_ANY_t8|5.035004||Viu
+REG_ANY_t8_p8|5.033003||Viu
+REG_ANY_t8_pb|5.033003||Viu
+REG_ANY_tb|5.035004||Viu
+REG_ANY_tb_p8|5.033003||Viu
+REG_ANY_tb_pb|5.033003||Viu
regatom|5.005000||Viu
regbranch|5.005000||Viu
reg_check_named_buff_matched|5.009005||Vniu
@@ -11047,15 +12095,21 @@ regclass|5.005000||Viu
regcppop|5.005000||Viu
regcppush|5.005000||Viu
regcp_restore|5.025006||Viu
-regcurly|5.013010||Vniu
+regcurly|5.013010||cVniu
REG_CUTGROUP_SEEN|5.019009||Viu
-regdump|5.003007||cVu
+regdump|5.005000|5.005000|u
regdump_extflags|5.009005||Viu
regdump_intflags|5.019002||Viu
regdupe_internal|5.009005||cVu
regexec_flags|5.005000||cVu
-REGEX_SET|5.031009||Viu
+REGEX_SET|5.031010||Viu
regex_set_precedence|5.021010||Vniu
+REGEX_SET_t8|5.035004||Viu
+REGEX_SET_t8_p8|5.033003||Viu
+REGEX_SET_t8_pb|5.033003||Viu
+REGEX_SET_tb|5.035004||Viu
+REGEX_SET_tb_p8|5.033003||Viu
+REGEX_SET_tb_pb|5.033003||Viu
REG_EXTFLAGS_NAME_SIZE|5.020000||Viu
regfree_internal|5.009005||cVu
REG_GPOS_SEEN|5.019009||Viu
@@ -11068,6 +12122,9 @@ reginitcolors|5.006000||cVu
reginsert|5.005000||Viu
REG_INTFLAGS_NAME_SIZE|5.020000||Viu
register|5.003007||Viu
+reg_la_NOTHING|||Viu
+reg_la_OPFAIL|||Viu
+REG_LB_SEEN|||Viu
REG_LOOKBEHIND_SEEN|5.019009||Viu
REG_MAGIC|5.006000||Viu
regmatch|5.005000||Viu
@@ -11082,7 +12139,10 @@ reg_named_buff_nextkey|5.009005||cVu
reg_named_buff_scalar|5.009005||cVu
regnext|5.003007||cVu
reg_node|5.005000||Viu
+REGNODE_AFTER|5.003007||Viu
+REGNODE_BEFORE|5.003007||Viu
regnode_guts|5.021005||Viu
+regnode_guts_debug|||Viu
REGNODE_MAX|5.009004||Viu
REGNODE_SIMPLE|5.013002||Viu
REGNODE_VARIES|5.013002||Viu
@@ -11090,7 +12150,7 @@ reg_numbered_buff_fetch|5.009005||cViu
reg_numbered_buff_length|5.009005||cViu
reg_numbered_buff_store|5.009005||cViu
regpiece|5.005000||Viu
-regpnode|5.031009||Viu
+regpnode|5.031010||Viu
regprop|5.003007||Viu
reg_qr_package|5.009005||cViu
REG_RECURSE_SEEN|5.019009||Viu
@@ -11114,6 +12174,12 @@ rename|5.005000||Viu
Renew|5.003007|5.003007|
Renewc|5.003007|5.003007|
RENUM|5.005000||Viu
+RENUM_t8|5.035004||Viu
+RENUM_t8_p8|5.033003||Viu
+RENUM_t8_pb|5.033003||Viu
+RENUM_tb|5.035004||Viu
+RENUM_tb_p8|5.033003||Viu
+RENUM_tb_pb|5.033003||Viu
re_op_compile|5.017001||Viu
repeatcpy|5.003007|5.003007|nu
REPLACEMENT_CHARACTER_UTF8|5.025005|5.003007|p
@@ -11138,7 +12204,6 @@ RE_SV_TAIL|5.009004||Viu
RETPUSHNO|5.003007||Viu
RETPUSHUNDEF|5.003007||Viu
RETPUSHYES|5.003007||Viu
-RE_TRACK_PATTERN_OFFSETS|5.009005||Viu
RE_TRIE_MAXBUF_INIT|5.009002||Viu
RE_TRIE_MAXBUF_NAME|5.009002||Viu
RETSETNO|5.003007||Viu
@@ -11194,7 +12259,7 @@ RV2CVOPCV_MARK_EARLY|5.013006|5.013006|
RV2CVOPCV_MAYBE_NAME_GV|5.021004||Viu
RV2CVOPCV_RETURN_NAME_GV|5.013006|5.013006|
RV2CVOPCV_RETURN_STUB|5.021004||Viu
-rvpv_dup|5.007003|5.007003|u
+rvpv_dup|5.008008|5.008008|u
RX_ANCHORED_SUBSTR|5.010001||Viu
RX_ANCHORED_UTF8|5.010001||Viu
RXapif_ALL|5.009005||Viu
@@ -11338,6 +12403,12 @@ SAFE_TRIE_NODENUM|5.009002||Viu
same_dirent|5.003007||Viu
SANE_ERRSV|5.031003|5.031003|
SANY|5.003007||Viu
+SANY_t8|5.035004||Viu
+SANY_t8_p8|5.033003||Viu
+SANY_t8_pb|5.033003||Viu
+SANY_tb|5.035004||Viu
+SANY_tb_p8|5.033003||Viu
+SANY_tb_pb|5.033003||Viu
save_adelete|5.011000|5.011000|u
SAVEADELETE|5.011000||Viu
save_aelem|5.004005|5.004005|u
@@ -11360,8 +12431,8 @@ SAVEDELETE|5.003007|5.003007|
save_delete|5.003007||cVu
save_destructor|5.003007||cVu
SAVEDESTRUCTOR|5.006000|5.006000|
+SAVEDESTRUCTOR_X|5.006000|5.006000|
save_destructor_x|5.006000||cVu
-SAVEDESTRUCTOR_X|5.006000||Viu
SAVE_ERRNO|5.010001||Vi
SAVEFEATUREBITS|5.031006||Viu
SAVEf_KEEPOLDELEM|5.011000||Viu
@@ -11386,7 +12457,7 @@ save_hek_flags|5.008000||Vniu
save_helem|5.004005|5.004005|u
save_helem_flags|5.011000|5.011000|u
SAVEHINTS|5.005000||Viu
-save_hints|5.010001|5.010001|u
+save_hints|5.013005|5.013005|u
save_hptr|5.003007|5.003007|
SAVEI16|5.004000|5.004000|
save_I16|5.004000||cVu
@@ -11416,10 +12487,10 @@ SAVEPADSV|||i
SAVEPARSER|5.009005||Viu
SAVEPPTR|5.003007|5.003007|
save_pptr|5.003007||cVu
-save_pushi32ptr|5.010001|5.010001|u
+save_pushi32ptr|5.013006|5.013006|u
save_pushptr|5.010001|5.010001|u
save_pushptri32ptr|5.010001||Viu
-save_pushptrptr|5.010001|5.010001|u
+save_pushptrptr|5.013006|5.013006|u
savepv|5.003007|5.003007|
savepvn|5.003007|5.003007|
savepvs|5.009003|5.009003|
@@ -11440,6 +12511,7 @@ savestack_grow|5.003007|5.003007|u
savestack_grow_cnt|5.008001|5.008001|u
SAVESTACK_POS|5.004000|5.004000|
save_strlen|5.019004||cViu
+SAVESTRLEN|5.035005|5.035005|
savesvpv|5.009002|5.009002|
save_svref|5.003007|5.003007|
SAVESWITCHSTACK|5.009002||Viu
@@ -11468,6 +12540,7 @@ SAVEt_GVSLOT|5.017007||Viu
SAVEt_GVSV|5.013005||Viu
SAVEt_HELEM|5.004005||Viu
SAVEt_HINTS|5.005000||Viu
+SAVEt_HINTS_HH|5.033001||Viu
SAVEt_HPTR|5.003007||Viu
SAVEt_HV|5.003007||Viu
SAVEt_I16|5.004000||Viu
@@ -11482,7 +12555,7 @@ SAVEt_IV|5.003007||Viu
SAVEt_LONG|5.003007||Viu
SAVEt_MORTALIZESV|5.007001||Viu
SAVETMPS|5.003007|5.003007|
-savetmps|5.023008|5.023008|xu
+savetmps|||xu
SAVEt_NSTAB|5.003007||Viu
save_to_buffer|5.027004||Vniu
SAVEt_OP|5.005000||Viu
@@ -11497,6 +12570,7 @@ SAVEt_SHARED_PVREF|5.007003||Viu
SAVEt_SPTR|5.003007||Viu
SAVEt_STACK_POS|5.004000||Viu
SAVEt_STRLEN|5.019004||Viu
+SAVEt_STRLEN_SMALL|5.033005||Viu
SAVEt_SV|5.003007||Viu
SAVEt_SVREF|5.003007||Viu
SAVEt_TMPSFLOOR|5.023008||Viu
@@ -11512,6 +12586,12 @@ sb_iters|5.003007||Viu
sb_m|5.003007||Viu
sb_maxiters|5.003007||Viu
SBOL|5.003007||Viu
+SBOL_t8|5.035004||Viu
+SBOL_t8_p8|5.033003||Viu
+SBOL_t8_pb|5.033003||Viu
+SBOL_tb|5.035004||Viu
+SBOL_tb_p8|5.033003||Viu
+SBOL_tb_pb|5.033003||Viu
sb_orig|5.003007||Viu
SBOX32_CHURN_ROUNDS|5.027001||Viu
SBOX32_MAX_LEN|5.027001||Viu
@@ -11539,7 +12619,6 @@ scalar|5.003007||Viu
scalarboolean|5.005000||Viu
scalarkids|5.003007||Viu
scalar_mod_type|5.006000||Vniu
-scalarseq|5.003007||Viu
scalarvoid|5.003007||Viu
scan_bin|5.006000|5.006000|
scan_commit|5.005000||Viu
@@ -11565,8 +12644,8 @@ scan_word|5.003007||xcViu
SCHED_YIELD|5.006000|5.006000|Vn
SCOPE_SAVES_SIGNAL_MASK|5.007001||Viu
search_const|5.010001||Viu
-seed|5.008001|5.008001|u
-seedDrand01|5.006000|5.006000|Vn
+seed|5.009003|5.009003|u
+seedDrand01|5.006000|5.006000|
SEEK_CUR|5.003007||Viu
seekdir|5.005000||Viu
SEEK_END|5.003007||Viu
@@ -11579,13 +12658,19 @@ semun|5.006000||Viu
send|5.005000||Viu
sendto|5.005000||Viu
SEOL|5.003007||Viu
+SEOL_t8|5.035004||Viu
+SEOL_t8_p8|5.033003||Viu
+SEOL_t8_pb|5.033003||Viu
+SEOL_tb|5.035004||Viu
+SEOL_tb_p8|5.033003||Viu
+SEOL_tb_pb|5.033003||Viu
sequence_num|5.009003||Viu
set_ANYOF_arg|5.019005||Viu
set_ANYOF_SYNTHETIC|5.019009||Viu
setbuf|5.003007||Viu
set_caret_X|5.019006||Viu
set_context|5.006000|5.006000|nu
-setdefout|5.003007|5.003007|
+setdefout|5.011000|5.011000|
SETERRNO|5.003007||Vi
setfd_cloexec|5.027008||Vniu
setfd_cloexec_for_nonsysfd|5.027008||Viu
@@ -11603,7 +12688,9 @@ setjmp|5.005000||Viu
setlinebuf|5.005000||Viu
setlocale|5.009000||Viu
setlocale_debug_string|5.027002||Vniu
+SETLOCALE_LOCK|5.033005||Viu
SETLOCALE_R_PROTO|5.008000|5.008000|Vn
+SETLOCALE_UNLOCK|5.033005||Viu
SET_MARK_OFFSET|5.006000||Viu
setmode|5.005000||Viu
SETn|5.003007||Viu
@@ -11638,7 +12725,7 @@ SETu|5.004000||Viu
setuid|5.005000||Viu
_setup_canned_invlist|5.019008||cViu
setvbuf|5.003007||Viu
-share_hek|5.004000|5.004000|u
+share_hek|5.009003|5.009003|u
share_hek_flags|5.008000||Viu
share_hek_hek|5.009003||Viu
sharepvn|5.005000||Viu
@@ -11646,7 +12733,7 @@ SHARP_S_SKIP|5.007003||Viu
Shmat_t|5.003007|5.003007|Vn
SHORTSIZE|5.004000|5.004000|Vn
should_warn_nl|5.021001||Vniu
-should_we_output_Debug_r|5.031010||Viu
+should_we_output_Debug_r|5.031011||Viu
SH_PATH|5.003007|5.003007|Vn
shutdown|5.005000||Viu
si_dup|5.007003|5.007003|u
@@ -11659,14 +12746,16 @@ sighandler3|5.031007||Vniu
sighandler|5.003007||Vniu
SIGILL|5.003007||Viu
Sigjmp_buf|5.003007|5.003007|Vn
-Siglongjmp|5.003007|5.003007|Vn
+Siglongjmp|5.003007|5.003007|
signal|5.005000||Viu
Signal_t|5.003007|5.003007|Vn
SIG_NAME|5.003007|5.003007|Vn
SIG_NUM|5.003007|5.003007|Vn
-Sigsetjmp|5.003007|5.003007|Vn
+Sigsetjmp|5.003007|5.003007|
SIG_SIZE|5.007001|5.007001|Vn
simplify_sort|5.006000||Viu
+single_1bit_pos32|5.035003||cVnu
+single_1bit_pos64|5.035003||cVnu
SINGLE_PAT_MOD|5.009005||Viu
SIPHASH_SEED_STATE|5.027001||Viu
SIPROUND|5.017006||Viu
@@ -11705,7 +12794,25 @@ Size_t_size|5.006000|5.006000|Vn
SKIP|5.009005||Viu
SKIP_next|5.009005||Viu
SKIP_next_fail|5.009005||Viu
+SKIP_next_fail_t8|5.035004||Viu
+SKIP_next_fail_t8_p8|5.033003||Viu
+SKIP_next_fail_t8_pb|5.033003||Viu
+SKIP_next_fail_tb|5.035004||Viu
+SKIP_next_fail_tb_p8|5.033003||Viu
+SKIP_next_fail_tb_pb|5.033003||Viu
+SKIP_next_t8|5.035004||Viu
+SKIP_next_t8_p8|5.033003||Viu
+SKIP_next_t8_pb|5.033003||Viu
+SKIP_next_tb|5.035004||Viu
+SKIP_next_tb_p8|5.033003||Viu
+SKIP_next_tb_pb|5.033003||Viu
skipspace_flags|5.019002||xcViu
+SKIP_t8|5.035004||Viu
+SKIP_t8_p8|5.033003||Viu
+SKIP_t8_pb|5.033003||Viu
+SKIP_tb|5.035004||Viu
+SKIP_tb_p8|5.033003||Viu
+SKIP_tb_pb|5.033003||Viu
skip_to_be_ignored_text|5.023004||Viu
Slab_Alloc|5.006000||cViu
Slab_Free|5.007003||cViu
@@ -11723,7 +12830,7 @@ sortcv_stacked|5.009003||Viu
sortcv_xsub|5.009003||Viu
sortsv|5.007003|5.007003|
sortsv_flags|5.009003|5.009003|
-sortsv_flags_impl|5.031010||Viu
+sortsv_flags_impl|5.031011||Viu
SP|5.003007|5.003007|
space_join_names_mortal|5.009004||Viu
SPAGAIN|5.003007|5.003007|
@@ -11732,7 +12839,19 @@ specialWARN|5.006000||Viu
SRAND48_R_PROTO|5.008000|5.008000|Vn
SRANDOM_R_PROTO|5.008000|5.008000|Vn
SRCLOSE|5.027008||Viu
+SRCLOSE_t8|5.035004||Viu
+SRCLOSE_t8_p8|5.033003||Viu
+SRCLOSE_t8_pb|5.033003||Viu
+SRCLOSE_tb|5.035004||Viu
+SRCLOSE_tb_p8|5.033003||Viu
+SRCLOSE_tb_pb|5.033003||Viu
SROPEN|5.027008||Viu
+SROPEN_t8|5.035004||Viu
+SROPEN_t8_p8|5.033003||Viu
+SROPEN_t8_pb|5.033003||Viu
+SROPEN_tb|5.035004||Viu
+SROPEN_tb_p8|5.033003||Viu
+SROPEN_tb_pb|5.033003||Viu
SS_ACCVIO|5.008001||Viu
SS_ADD_BOOL|5.017007||Viu
SS_ADD_DPTR|5.017007||Viu
@@ -11791,19 +12910,14 @@ SSPUSHPTR|5.003007||Viu
SSPUSHUV|5.013001||Viu
ST|5.003007|5.003007|
stack_grow|5.003007||cVu
-STADTX_HASH_H|5.027001||Viu
-STADTX_K0_U64|5.027001||Viu
-STADTX_K1_U64|5.027001||Viu
-STADTX_K2_U32|5.027001||Viu
-STADTX_K2_U64|5.027001||Viu
-STADTX_K3_U32|5.027001||Viu
-STADTX_K3_U64|5.027001||Viu
-STADTX_K4_U32|5.027001||Viu
-STADTX_K5_U32|5.027001||Viu
-STADTX_SCRAMBLE64|5.027001||Viu
-STADTX_STATIC_INLINE|5.027001||Viu
STANDARD_C|5.003007||Viu
STAR|5.003007||Viu
+STAR_t8|5.035004||Viu
+STAR_t8_p8|5.033003||Viu
+STAR_t8_pb|5.033003||Viu
+STAR_tb|5.035004||Viu
+STAR_tb_p8|5.033003||Viu
+STAR_tb_pb|5.033003||Viu
START_EXTERN_C|5.005000|5.003007|pV
start_glob|||xi
START_MY_CXT|5.010000|5.010000|p
@@ -11830,6 +12944,8 @@ STATUS_UNIX_EXIT_SET|5.009003||Viu
STATUS_UNIX_SET|5.009003||Viu
STDCHAR|5.003007|5.003007|Vn
stderr|5.003007||Viu
+ST_DEV_SIGN|5.035004|5.035004|Vn
+ST_DEV_SIZE|5.035004|5.035004|Vn
stdin|5.003007||Viu
STDIO_PTR_LVAL_SETS_CNT|5.007001|5.007001|Vn
STDIO_PTR_LVALUE|5.006000|5.006000|Vn
@@ -11845,10 +12961,10 @@ STMT_END|5.003007|5.003007|pV
STMT_START|5.003007|5.003007|pV
STOREFEATUREBITSHH|5.031006||Viu
STORE_LC_NUMERIC_FORCE_TO_UNDERLYING|5.021010|5.021010|
-STORE_LC_NUMERIC_SET_STANDARD|5.027009||pViu
+STORE_LC_NUMERIC_SET_STANDARD|5.027009||pVu
STORE_LC_NUMERIC_SET_TO_NEEDED|5.021010|5.021010|
STORE_LC_NUMERIC_SET_TO_NEEDED_IN|5.031003|5.031003|
-STORE_NUMERIC_SET_STANDARD|5.027009||pViu
+STORE_NUMERIC_SET_STANDARD|||piu
strBEGINs|5.027006||Viu
strEQ|5.003007|5.003007|
Strerror|5.003007||Viu
@@ -11893,7 +13009,19 @@ SUBST_TAINT_RETAINT|5.013010||Viu
SUBST_TAINT_STR|5.013010||Viu
SUBVERSION|5.003007||Viu
SUCCEED|5.003007||Viu
+SUCCEED_t8|5.035004||Viu
+SUCCEED_t8_p8|5.033003||Viu
+SUCCEED_t8_pb|5.033003||Viu
+SUCCEED_tb|5.035004||Viu
+SUCCEED_tb_p8|5.033003||Viu
+SUCCEED_tb_pb|5.033003||Viu
SUSPEND|5.005000||Viu
+SUSPEND_t8|5.035004||Viu
+SUSPEND_t8_p8|5.033003||Viu
+SUSPEND_t8_pb|5.033003||Viu
+SUSPEND_tb|5.035004||Viu
+SUSPEND_tb_p8|5.033003||Viu
+SUSPEND_tb_pb|5.033003||Viu
sv_2bool|5.013006||cV
sv_2bool_flags|5.013006||cV
sv_2bool_nomg|5.017002||Viu
@@ -11909,22 +13037,24 @@ sv_2nv|5.013001||Viu
sv_2nv_flags|5.013001|5.013001|
sv_2pv|5.005000||cVu
sv_2pvbyte|5.006000|5.003007|p
-sv_2pvbyte_flags|5.031004|5.031004|
-sv_2pvbyte_nolen|5.009003|5.003007|pocV
-sv_2pv_flags|5.007002|5.003007|pocV
-sv_2pv_nolen|5.009003|5.003007|pocV
+sv_2pvbyte_flags|5.031004|5.031004|u
+sv_2pvbyte_nolen|5.009003||pcV
+sv_2pv_flags|5.007002||pcV
+sv_2pv_nolen|5.009003||pcV
sv_2pv_nomg|5.007002||Viu
sv_2pvutf8|5.006000|5.006000|
sv_2pvutf8_flags|5.031004|5.031004|u
sv_2pvutf8_nolen|5.009003||cV
-sv_2uv|5.009001|5.003007|pocVu
+sv_2uv|5.009001||pcVu
sv_2uv_flags|5.009001|5.009001|
sv_add_arena|5.003007||Vi
sv_add_backref|||iu
SvAMAGIC|5.003007||Viu
-SvAMAGIC_off|5.031004|5.031004|n
-SvAMAGIC_on|5.031004|5.031004|n
+SvAMAGIC_off|5.003007|5.003007|nu
+SvAMAGIC_on|5.003007|5.003007|nu
SvANY|5.003007||Viu
+SvARENA_CHAIN_SET|||Viu
+SvARENA_CHAIN|||Viu
sv_backoff|5.003007|5.003007|n
sv_bless|5.003007|5.003007|
sv_buf_to_ro|5.019008||Viu
@@ -11935,11 +13065,11 @@ SV_CATBYTES|5.021005|5.021005|
sv_cat_decode|5.008001|5.008001|
sv_cathek|5.021004||Viu
sv_catpv|5.003007|5.003007|
-sv_catpvf|5.006000|5.004000|v
+sv_catpvf|5.004000||vV
sv_catpv_flags|5.013006|5.013006|
-sv_catpvf_mg|5.006000|5.004000|pv
-sv_catpvf_mg_nocontext|5.006000|5.006000|pvn
-sv_catpvf_nocontext|5.006000|5.006000|vn
+sv_catpvf_mg|5.004005||pvV
+sv_catpvf_mg_nocontext|5.006000||pvVn
+sv_catpvf_nocontext|5.006000||vVn
sv_catpv_mg|5.004005|5.003007|p
sv_catpvn|5.003007|5.003007|
sv_catpvn_flags|5.007002|5.007002|
@@ -12027,7 +13157,7 @@ sv_derived_from|5.004000|5.004000|
sv_derived_from_pv|5.015004|5.015004|
sv_derived_from_pvn|5.015004|5.015004|
sv_derived_from_sv|5.015004|5.015004|
-sv_derived_from_svpvn|5.031007||Viu
+sv_derived_from_svpvn|5.031006||Viu
sv_destroyable|5.010000|5.010000|
SvDESTROYABLE|5.010000||Viu
sv_display|5.021002||Viu
@@ -12066,7 +13196,7 @@ SVf_OK|5.003007||Viu
SVf_OOK|5.003007||Viu
sv_force_normal|5.006000|5.006000|
sv_force_normal_flags|5.007001|5.007001|
-SV_FORCE_UTF8_UPGRADE|5.011000||Viu
+SV_FORCE_UTF8_UPGRADE|5.011000|5.011000|
SVf_POK|5.003007||Viu
SVf_PROTECT|5.021005||Viu
SVf_READONLY|5.003007||Viu
@@ -12088,6 +13218,7 @@ SvGMAGICAL_on|5.003007||Viu
SvGROW|5.003007|5.003007|
sv_grow|5.003007||cV
Sv_Grow|5.003007||Viu
+sv_grow_fresh|5.035006||cV
SvGROW_mutable|5.009003||Viu
SV_HAS_TRAILING_NUL|5.009004|5.003007|p
SV_IMMEDIATE_UNREF|5.007001|5.003007|p
@@ -12096,7 +13227,7 @@ SvIMMORTAL_INTERP|5.027003||Viu
SvIMMORTAL_TRUE|5.027003||Viu
sv_inc|5.003007|5.003007|
sv_i_ncmp|5.009003||Viu
-sv_i_ncmp_desc|5.031010||Viu
+sv_i_ncmp_desc|5.031011||Viu
sv_inc_nomg|5.013002|5.013002|
sv_insert|5.003007|5.003007|
sv_insert_flags|5.010001|5.010001|
@@ -12113,6 +13244,7 @@ SvIOKp_on|5.003007||Viu
SvIOK_UV|5.006000|5.006000|
sv_isa|5.003007|5.003007|
sv_isa_sv|5.031007|5.031007|x
+SvIsBOOL|5.035004|5.035004|
SvIsCOW|5.008003|5.008003|
SvIsCOW_shared_hash|5.008003|5.008003|
SvIS_FREED|5.009003||Viu
@@ -12131,7 +13263,7 @@ sv_len|5.003007|5.003007|
SvLEN|5.003007|5.003007|
SvLEN_set|5.003007|5.003007|
sv_len_utf8|5.006000|5.006000|p
-sv_len_utf8_nomg|5.017004|5.006000|poViu
+sv_len_utf8_nomg||5.006000|p
SvLENx|5.003007||Viu
SvLOCK|5.007003|5.007003|
sv_magic|5.003007|5.003007|
@@ -12144,10 +13276,10 @@ sv_magicext_mglob|5.019002||cViu
sv_magic_portable||5.004000|pou
SvMAGIC_set|5.009003|5.003007|p
sv_mortalcopy|5.003007|5.003007|
-sv_mortalcopy_flags|5.017005|5.003007|p
+sv_mortalcopy_flags|5.031001|5.003007|p
SV_MUTABLE_RETURN|5.009003|5.003007|poVnu
sv_ncmp|5.009003||Viu
-sv_ncmp_desc|5.031010||Viu
+sv_ncmp_desc|5.031011||Viu
sv_newmortal|5.003007|5.003007|
sv_newref|5.003007||cV
SvNIOK|5.003007|5.003007|
@@ -12163,10 +13295,12 @@ SvNOK_on|5.003007|5.003007|
SvNOK_only|5.003007|5.003007|
SvNOKp|5.003007|5.003007|
SvNOKp_on|5.003007||Viu
-sv_nolocking|5.007003|5.007003|d
+sv_nolocking|5.031004|5.031004|d
sv_nosharing|5.007003|5.007003|
SV_NOSTEAL|5.009002|5.003007|p
-sv_nounlocking|5.007003|5.007003|d
+sv_nounlocking|5.009004|5.009004|d
+sv_numeq|5.035009|5.035009|
+sv_numeq_flags|5.035009|5.035009|
sv_nv|5.005000||dcV
SvNV|5.006000|5.003007|
SvNV_nomg|5.013002|5.003007|p
@@ -12231,6 +13365,7 @@ SvPOK_off|5.003007|5.003007|
SvPOK_on|5.003007|5.003007|
SvPOK_only|5.003007|5.003007|
SvPOK_only_UTF8|5.006000|5.006000|
+SvPOK_or_cached_IV|||Viu
SvPOKp|5.003007|5.003007|
SvPOKp_on|5.003007||Viu
SvPOK_pure_nogthink|5.017003||Viu
@@ -12246,6 +13381,7 @@ sv_pos_u2b_flags|5.011005|5.011005|
sv_pos_u2b_forwards|5.009004||Vniu
sv_pos_u2b_midway|5.009004||Vniu
SVp_POK|5.003007||Viu
+SVppv_STATIC|5.035004||Viu
SVprv_PCS_IMPORTED|5.009005||Viu
SVprv_WEAKREF|5.006000||Viu
SVp_SCREAM|5.003007||Viu
@@ -12256,19 +13392,18 @@ sv_pvbyte|5.008000||cV
SvPVbyte_force|5.009002|5.009002|
sv_pvbyten|5.006000||dcV
sv_pvbyten_force|5.006000||cV
-sv_pvbyten_force_wrapper|||iu
SvPVbyte_nolen|5.006000|5.006000|
SvPVbyte_nomg|5.031004|5.031004|
SvPVbyte_or_null|5.031004|5.031004|
SvPVbyte_or_null_nomg|5.031004|5.031004|
SvPVbytex|5.006000|5.006000|
SvPVbytex_force|5.006000|5.006000|
-SvPVbytex_nolen|5.009003||Viu
-SvPVCLEAR|5.025006|5.025006|
+SvPVbytex_nolen|5.009003|5.009003|
+SvPVCLEAR|5.025006|5.025006|p
SvPV_const|5.009003|5.003007|p
SvPV_flags|5.007002|5.003007|p
SvPV_flags_const|5.009003|5.003007|p
-SvPV_flags_const_nolen|5.009003|5.003007|p
+SvPV_flags_const_nolen|5.009003||pVu
SvPV_flags_mutable|5.009003|5.003007|p
SvPV_force|5.003007|5.003007|p
SvPV_force_flags|5.007002|5.003007|p
@@ -12278,7 +13413,7 @@ SvPV_force_mutable|5.009003|5.003007|p
SvPV_force_nolen|5.009003|5.003007|p
SvPV_force_nomg|5.007002|5.003007|p
SvPV_force_nomg_nolen|5.009003|5.003007|p
-SvPV_free|5.009003||Viu
+SvPV_free|5.009003|5.009003|
SvPV_mutable|5.009003|5.003007|p
sv_pvn|5.004000||dcV
sv_pvn_force|5.005000||cV
@@ -12293,13 +13428,12 @@ SvPV_nomg_const_nolen|5.009003|5.003007|p
SvPV_nomg_nolen|5.013007|5.003007|p
SvPV_renew|5.009003|5.003007|p
SvPV_set|5.003007|5.003007|
-SvPV_shrink_to_cur|5.009003|5.009003|
+SvPV_shrink_to_cur|5.009003||Viu
SvPVutf8|5.006000|5.006000|
sv_pvutf8|5.008000||cV
SvPVutf8_force|5.006000|5.006000|
sv_pvutf8n|5.006000||dcV
sv_pvutf8n_force|5.006000||cV
-sv_pvutf8n_force_wrapper|||iu
SvPVutf8_nolen|5.006000|5.006000|
SvPVutf8_nomg|5.031004|5.031004|
SvPVutf8_or_null|5.031004|5.031004|
@@ -12309,30 +13443,30 @@ SvPVutf8x_force|5.006000|5.006000|
SvPVX|5.003007|5.003007|
SvPVx|5.003007|5.003007|
SvPVX_const|5.009003|5.003007|p
-SvPVx_const|5.009003||Viu
-SvPVx_force|5.003007||Viu
+SvPVx_const|5.009003|5.009003|
+SvPVx_force|5.005000|5.005000|
SvPVX_mutable|5.009003|5.003007|p
-SvPVx_nolen|5.009003||Viu
-SvPVx_nolen_const|5.009003||pViu
+SvPVx_nolen|5.009003|5.009003|
+SvPVx_nolen_const|5.009003|5.003007|p
SvPVXtrue|5.017002||Viu
-SvPVXx|5.003007||Viu
+SvPVXx|5.003007|5.003007|
SvREADONLY|5.003007|5.003007|
SvREADONLY_off|5.003007|5.003007|
SvREADONLY_on|5.003007|5.003007|
sv_recode_to_utf8|5.007003|5.007003|
-sv_ref|5.015004|5.015004|
+sv_ref|5.023005|5.023005|
SvREFCNT|5.003007|5.003007|
SvREFCNT_dec|5.003007|5.003007|
SvREFCNT_dec_NN|5.017007|5.017007|
SvREFCNT_IMMORTAL|5.017008||Viu
SvREFCNT_inc|5.003007|5.003007|pn
SvREFCNT_inc_NN|5.009004|5.003007|pn
-SvREFCNT_inc_simple|5.009004|5.003007|p
-SvREFCNT_inc_simple_NN|5.009004|5.003007|p
-SvREFCNT_inc_simple_void|5.009004|5.003007|p
-SvREFCNT_inc_simple_void_NN|5.009004|5.003007|p
+SvREFCNT_inc_simple|5.009004|5.003007|pn
+SvREFCNT_inc_simple_NN|5.009004|5.003007|pn
+SvREFCNT_inc_simple_void|5.009004|5.003007|pn
+SvREFCNT_inc_simple_void_NN|5.009004|5.003007|pn
SvREFCNT_inc_void|5.009004|5.003007|pn
-SvREFCNT_inc_void_NN|5.009004|5.003007|p
+SvREFCNT_inc_void_NN|5.009004|5.003007|pn
sv_reftype|5.003007|5.003007|
sv_replace|5.003007|5.003007|
sv_report_used|5.003007|5.003007|
@@ -12356,6 +13490,8 @@ SV_SAVED_COPY|5.009005||Viu
SvSCREAM|5.003007||Viu
SvSCREAM_off|5.003007||Viu
SvSCREAM_on|5.003007||Viu
+sv_setbool|5.035004|5.035004|
+sv_setbool_mg|5.035004|5.035004|
sv_setgid|5.019001||Viu
sv_sethek|5.015004||cViu
sv_setiv|5.003007|5.003007|
@@ -12367,14 +13503,15 @@ sv_setnv|5.006000|5.003007|
sv_setnv_mg|5.006000|5.003007|p
sv_setpv|5.003007|5.003007|
sv_setpv_bufsize|5.025006|5.025006|
-sv_setpvf|5.006000|5.004000|v
-sv_setpvf_mg|5.006000|5.004000|pv
-sv_setpvf_mg_nocontext|5.006000|5.006000|pvn
-sv_setpvf_nocontext|5.006000|5.006000|vn
+sv_setpvf|5.004000||vV
+sv_setpvf_mg|5.004005||pvV
+sv_setpvf_mg_nocontext|5.006000||pvVn
+sv_setpvf_nocontext|5.006000||vVn
sv_setpviv|5.008001|5.008001|d
sv_setpviv_mg|5.008001|5.008001|d
sv_setpv_mg|5.004005|5.003007|p
sv_setpvn|5.003007|5.003007|
+sv_setpvn_fresh|5.035006|5.035006|
sv_setpvn_mg|5.004005|5.003007|p
sv_setpvs|5.009004|5.003007|p
sv_setpvs_mg|5.013006|5.013006|
@@ -12384,6 +13521,10 @@ sv_setref_pv|5.003007|5.003007|
sv_setref_pvn|5.003007|5.003007|
sv_setref_pvs|5.013006|5.013006|
sv_setref_uv|5.007001|5.007001|
+sv_setrv_inc|5.035004|5.035004|
+sv_setrv_inc_mg|5.035004|5.035004|
+sv_setrv_noinc|5.035004|5.035004|
+sv_setrv_noinc_mg|5.035004|5.035004|
sv_setsv|5.003007|5.003007|
SvSetSV|5.003007|5.003007|
sv_setsv_cow|5.009000||xcViu
@@ -12413,6 +13554,8 @@ SVs_SMG|5.003007||Viu
SvSTASH|5.003007|5.003007|
SvSTASH_set|5.009003|5.003007|p
SVs_TEMP|5.003007|5.003007|
+sv_streq|5.035009|5.035009|
+sv_streq_flags|5.035009|5.035009|
sv_string_from_errnum|5.027003|5.027003|
SvTAIL|5.003007||Viu
SvTAINT|5.003007|5.003007|
@@ -12427,7 +13570,7 @@ SvTEMP_on|5.003007||Viu
SVt_FIRST|5.021005||Viu
SvTHINKFIRST|5.003007||Vi
SvTIED_mg|5.005003||Viu
-SvTIED_obj|5.005003||Viu
+SvTIED_obj|5.005003|5.005003|
SVt_INVLIST|||c
SVt_IV|5.003007|5.003007|
SVt_MASK|5.015001||Viu
@@ -12448,14 +13591,13 @@ SVt_PVNV|5.003007|5.003007|
SVt_REGEXP|5.011000|5.011000|
SvTRUE|5.003007|5.003007|
sv_true|5.005000||cV
-SvTRUE_common|5.017002||cVu
+SvTRUE_common|5.033005||cVu
SvTRUE_NN|5.017007|5.017007|
SvTRUE_nomg|5.013006|5.003007|p
SvTRUE_nomg_NN|5.017007|5.017007|
SvTRUEx|5.003007|5.003007|
SvTRUEx_nomg|5.017002||Viu
SVt_RV|5.011000||Viu
-svtype||5.003007|
SvTYPE|5.003007|5.003007|
SVTYPEMASK|5.003007||Viu
SvUID|5.019001||Viu
@@ -12490,7 +13632,7 @@ sv_utf8_upgrade_flags|5.007002|5.007002|
sv_utf8_upgrade_flags_grow|5.011000|5.011000|
sv_utf8_upgrade_nomg|5.007002|5.007002|
SvUV|5.004000|5.003007|p
-sv_uv|5.005000|5.003007|podcV
+sv_uv|5.005000||pdcV
SvUV_nomg|5.009001|5.003007|p
SvUV_set|5.009003|5.003007|p
SvUVX|5.004000|5.003007|p
@@ -12525,15 +13667,21 @@ SYSTEM_LOCALTIME_MAX|5.011000||Viu
SYSTEM_LOCALTIME_MIN|5.011000||Viu
sys_term|||cnu
TAIL|5.005000||Viu
+TAIL_t8|5.035004||Viu
+TAIL_t8_p8|5.033003||Viu
+TAIL_t8_pb|5.033003||Viu
+TAIL_tb|5.035004||Viu
+TAIL_tb_p8|5.033003||Viu
+TAIL_tb_pb|5.033003||Viu
TAINT|5.004000||Viu
-taint_env|5.003007||cVu
+taint_env|5.003007|5.003007|u
TAINT_ENV|5.003007||Viu
TAINT_get|5.017006||Viu
TAINT_IF|5.003007||Viu
TAINTING_get|5.017006||Viu
TAINTING_set|5.017006||Viu
TAINT_NOT|5.003007||Viu
-taint_proper|5.003007||cVu
+taint_proper|5.003007|5.003007|u
TAINT_PROPER|5.003007||Viu
TAINT_set|5.017006||Viu
TAINT_WARN_get|5.017006||Viu
@@ -12565,9 +13713,10 @@ tmpnam|5.005000||Viu
TMPNAM_R_PROTO|5.008000|5.008000|Vn
tmps_grow_p|5.021005||cViu
to_byte_substr|5.008000||Viu
+to_case_cp_list|5.035004||Viu
toCTRL|5.004000||Viu
toFOLD|5.019001|5.019001|
-toFOLD_A|5.019001||Viu
+toFOLD_A|5.019001|5.019001|
_to_fold_latin1|5.015005||cVniu
toFOLD_LC|5.019001||Viu
toFOLD_uni|5.007003||Viu
@@ -12579,9 +13728,9 @@ tokenize_use|5.009003||Viu
tokeq|5.005000||Viu
tokereport|5.007001||Viu
toLOWER|5.003007|5.003007|
-toLOWER_A|5.019001||Viu
+toLOWER_A|5.019001|5.019001|
toLOWER_L1|5.019001|5.019001|
-toLOWER_LATIN1|5.011002||Viu
+toLOWER_LATIN1|5.013006|5.011002|
to_lower_latin1|5.015005||Vniu
toLOWER_LC|5.004000|5.004000|
toLOWER_uni|5.006000||Viu
@@ -12603,7 +13752,7 @@ TOPs|5.003007||Viu
TOPu|5.004000||Viu
TOPul|5.006000||Viu
toTITLE|5.019001|5.019001|
-toTITLE_A|5.019001||Viu
+toTITLE_A|5.019001|5.019001|
toTITLE_uni|5.006000||Viu
toTITLE_utf8|5.031005|5.031005|
toTITLE_utf8_safe|5.025009|5.006000|p
@@ -12614,7 +13763,7 @@ to_uni_lower|5.006000||cVu
to_uni_title|5.006000||cVu
to_uni_upper|5.006000||cVu
toUPPER|5.003007|5.003007|
-toUPPER_A|5.019001||Viu
+toUPPER_A|5.019001|5.019001|
toUPPER_LATIN1_MOD|5.011002||Viu
toUPPER_LC|5.004000||Viu
_to_upper_title_latin1|5.015005||Viu
@@ -12630,7 +13779,7 @@ _to_utf8_title_flags|5.015006||cVu
_to_utf8_upper_flags|5.015006||cVu
translate_substr_offsets|5.015006||Vniu
traverse_op_tree|5.029008||Vi
-TR_DELETE|5.031007||Viu
+TR_DELETE|5.031006||Viu
TRIE|5.009002||Viu
TRIE_BITMAP|5.009004||Viu
TRIE_BITMAP_BYTE|5.009004||Viu
@@ -12639,18 +13788,42 @@ TRIE_BITMAP_SET|5.009004||Viu
TRIE_BITMAP_TEST|5.009004||Viu
TRIEC|5.009004||Viu
TRIE_CHARCOUNT|5.009004||Viu
+TRIEC_t8|5.035004||Viu
+TRIEC_t8_p8|5.033003||Viu
+TRIEC_t8_pb|5.033003||Viu
+TRIEC_tb|5.035004||Viu
+TRIEC_tb_p8|5.033003||Viu
+TRIEC_tb_pb|5.033003||Viu
TRIE_next|5.009005||Viu
TRIE_next_fail|5.009005||Viu
+TRIE_next_fail_t8|5.035004||Viu
+TRIE_next_fail_t8_p8|5.033003||Viu
+TRIE_next_fail_t8_pb|5.033003||Viu
+TRIE_next_fail_tb|5.035004||Viu
+TRIE_next_fail_tb_p8|5.033003||Viu
+TRIE_next_fail_tb_pb|5.033003||Viu
+TRIE_next_t8|5.035004||Viu
+TRIE_next_t8_p8|5.033003||Viu
+TRIE_next_t8_pb|5.033003||Viu
+TRIE_next_tb|5.035004||Viu
+TRIE_next_tb_p8|5.033003||Viu
+TRIE_next_tb_pb|5.033003||Viu
TRIE_NODEIDX|5.009002||Viu
TRIE_NODENUM|5.009002||Viu
+TRIE_t8|5.035004||Viu
+TRIE_t8_p8|5.033003||Viu
+TRIE_t8_pb|5.033003||Viu
+TRIE_tb|5.035004||Viu
+TRIE_tb_p8|5.033003||Viu
+TRIE_tb_pb|5.033003||Viu
TRIE_WORDS_OFFSET|5.009005||Viu
-TR_OOB|5.031007||Viu
-TR_R_EMPTY|5.031007||Viu
-TR_SPECIAL_HANDLING|5.031007||Viu
+TR_OOB|5.031006||Viu
+TR_R_EMPTY|5.031006||Viu
+TR_SPECIAL_HANDLING|5.031006||Viu
TRUE|5.003007||Viu
truncate|5.006000||Viu
-TR_UNLISTED|5.031007||Viu
-TR_UNMAPPED|5.031007||Viu
+TR_UNLISTED|5.031006||Viu
+TR_UNMAPPED|5.031006||Viu
try_amagic_bin|||ciu
tryAMAGICbin_MG|5.013002||Viu
try_amagic_un|||ciu
@@ -12673,7 +13846,7 @@ U16_MAX|5.003007||Viu
U16_MIN|5.003007||Viu
U16SIZE|5.006000|5.006000|Vn
U16TYPE|5.006000|5.006000|Vn
-U_32|5.007002||Viu
+U_32|5.007002|5.007002|
U32|5.027001||Viu
U32_ALIGNMENT_REQUIRED|5.007001|5.007001|Vn
U32_MAX|5.003007||Viu
@@ -12699,10 +13872,10 @@ Uid_t|5.003007|5.003007|Vn
Uid_t_f|5.006000|5.006000|Vn
Uid_t_sign|5.006000|5.006000|Vn
Uid_t_size|5.006000|5.006000|Vn
-UINT16_C|5.027007||Viu
-UINT32_C|5.027007||Viu
+UINT16_C|5.003007|5.003007|
+UINT32_C|5.003007|5.003007|
UINT32_MIN|5.006000||Viu
-UINT64_C|5.007001||Viu
+UINT64_C|5.023002|5.023002|
UINT64_MIN|5.006000||Viu
UINTMAX_C|5.003007|5.003007|
uiv_2buf|5.009003||Vniu
@@ -12733,18 +13906,18 @@ UNI_ccc_values_index|5.029009||Viu
UNI_ce_values_index|5.029009||Viu
UNI_ci_values_index|5.029009||Viu
UNI_CNTRL|5.029002||Viu
-UNICODE_ALLOW_ABOVE_IV_MAX|5.031007||Viu
+UNICODE_ALLOW_ABOVE_IV_MAX|5.031006||Viu
UNICODE_ALLOW_ANY|5.007003||Viu
UNICODE_ALLOW_SUPER|5.007003||Viu
UNICODE_ALLOW_SURROGATE|5.007003||Viu
UNICODE_BYTE_ORDER_MARK|5.008000||Viu
-UNICODE_DISALLOW_ABOVE_31_BIT|5.023006||Viu
-UNICODE_DISALLOW_ILLEGAL_C9_INTERCHANGE|5.025005||Viu
-UNICODE_DISALLOW_ILLEGAL_INTERCHANGE|5.013009||Viu
-UNICODE_DISALLOW_NONCHAR|5.013009||Viu
-UNICODE_DISALLOW_PERL_EXTENDED|5.027002||Viu
-UNICODE_DISALLOW_SUPER|5.013009||Viu
-UNICODE_DISALLOW_SURROGATE|5.013009||Viu
+UNICODE_DISALLOW_ABOVE_31_BIT|5.023006|5.023006|
+UNICODE_DISALLOW_ILLEGAL_C9_INTERCHANGE|5.025005|5.025005|
+UNICODE_DISALLOW_ILLEGAL_INTERCHANGE|5.013009|5.013009|
+UNICODE_DISALLOW_NONCHAR|5.013009|5.013009|
+UNICODE_DISALLOW_PERL_EXTENDED|5.027002|5.027002|
+UNICODE_DISALLOW_SUPER|5.013009|5.013009|
+UNICODE_DISALLOW_SURROGATE|5.013009|5.013009|
UNICODE_DOT_DOT_VERSION|5.023002||Viu
UNICODE_DOT_VERSION|5.023002||Viu
UNICODE_GOT_NONCHAR|5.027009||Viu
@@ -12757,24 +13930,24 @@ UNICODE_GREEK_SMALL_LETTER_SIGMA|5.007003||Viu
UNICODE_IS_32_CONTIGUOUS_NONCHARS|5.023006||Viu
UNICODE_IS_BYTE_ORDER_MARK|5.007001||Viu
UNICODE_IS_END_PLANE_NONCHAR_GIVEN_NOT_SUPER|5.023006||Viu
-UNICODE_IS_NONCHAR|5.013009||Viu
+UNICODE_IS_NONCHAR|5.013009|5.013009|
UNICODE_IS_PERL_EXTENDED|5.027002||Viu
-UNICODE_IS_REPLACEMENT|5.007001||Viu
-UNICODE_IS_SUPER|5.013009||Viu
-UNICODE_IS_SURROGATE|5.007001||Viu
+UNICODE_IS_REPLACEMENT|5.007002|5.007002|
+UNICODE_IS_SUPER|5.013009|5.013009|
+UNICODE_IS_SURROGATE|5.007001|5.007001|
UNICODE_MAJOR_VERSION|5.023002||Viu
UNICODE_PAT_MOD|5.013006||Viu
UNICODE_PAT_MODS|5.013006||Viu
UNICODE_REPLACEMENT|5.007001|5.003007|p
UNICODE_SURROGATE_FIRST|5.007001||Viu
UNICODE_SURROGATE_LAST|5.007001||Viu
-UNICODE_WARN_ABOVE_31_BIT|5.023006||Viu
-UNICODE_WARN_ILLEGAL_C9_INTERCHANGE|5.025005||Viu
-UNICODE_WARN_ILLEGAL_INTERCHANGE|5.013009||Viu
-UNICODE_WARN_NONCHAR|5.013009||Viu
-UNICODE_WARN_PERL_EXTENDED|5.027002||Viu
-UNICODE_WARN_SUPER|5.013009||Viu
-UNICODE_WARN_SURROGATE|5.013009||Viu
+UNICODE_WARN_ABOVE_31_BIT|5.023006|5.023006|
+UNICODE_WARN_ILLEGAL_C9_INTERCHANGE|5.025005|5.025005|
+UNICODE_WARN_ILLEGAL_INTERCHANGE|5.013009|5.013009|
+UNICODE_WARN_NONCHAR|5.013009|5.013009|
+UNICODE_WARN_PERL_EXTENDED|5.027002|5.027002|
+UNICODE_WARN_SUPER|5.013009|5.013009|
+UNICODE_WARN_SURROGATE|5.013009|5.013009|
UNI_compex_values_index|5.029009||Viu
UNI_CONTROL|5.029002||Viu
UNI_cwcf_values_index|5.029009||Viu
@@ -12788,20 +13961,20 @@ UNI_DECIMALNUMBER|5.029002||Viu
UNI_dep_values_index|5.029009||Viu
UNI_dia_values_index|5.029009||Viu
UNI_DIGIT|5.029002||Viu
-UNI_DISPLAY_BACKSLASH|5.007003||Viu
-UNI_DISPLAY_BACKSPACE|5.031009||Viu
-UNI_DISPLAY_ISPRINT|5.007003||Viu
-UNI_DISPLAY_QQ|5.007003||Viu
-UNI_DISPLAY_REGEX|5.007003||Viu
+UNI_DISPLAY_BACKSLASH|5.007003|5.007003|
+UNI_DISPLAY_BACKSPACE|5.031009|5.031009|
+UNI_DISPLAY_ISPRINT|5.007003|5.007003|
+UNI_DISPLAY_QQ|5.007003|5.007003|
+UNI_DISPLAY_REGEX|5.007003|5.007003|
UNI_di_values_index|5.029009||Viu
UNI_dt_values_index|5.029009||Viu
UNI_ea_values_index|5.029009||Viu
-UNI_ebase_values_index|5.031009||Viu
-UNI_ecomp_values_index|5.031009||Viu
-UNI_emod_values_index|5.031009||Viu
-UNI_emoji_values_index|5.031009||Viu
-UNI_epres_values_index|5.031009||Viu
-UNI_extpict_values_index|5.031009||Viu
+UNI_ebase_values_index|5.031010||Viu
+UNI_ecomp_values_index|5.031010||Viu
+UNI_emod_values_index|5.031010||Viu
+UNI_emoji_values_index|5.031010||Viu
+UNI_epres_values_index|5.031010||Viu
+UNI_extpict_values_index|5.031010||Viu
UNI_ext_values_index|5.029009||Viu
UNI_gcb_values_index|5.029009||Viu
UNI_gc_values_index|5.029009||Viu
@@ -12816,8 +13989,8 @@ UNI_hst_values_index|5.029009||Viu
UNI_HYPHEN|5.029002||Viu
UNI_hyphen_values_index|5.029009||Viu
UNI_idc_values_index|5.029009||Viu
-UNI_identifierstatus_values_index|5.031009||Viu
-UNI_identifiertype_values_index|5.031009||Viu
+UNI_identifierstatus_values_index|5.031010||Viu
+UNI_identifiertype_values_index|5.031010||Viu
UNI_ideo_values_index|5.029009||Viu
UNI_idsb_values_index|5.029009||Viu
UNI_idst_values_index|5.029009||Viu
@@ -12864,6 +14037,7 @@ UNI_sc_values_index|5.029009||Viu
UNI_scx_values_index|5.029009||Viu
UNI_sd_values_index|5.029009||Viu
UNISKIP|5.007001||Viu
+UNISKIP_BY_MSB|5.035004||Viu
UNI_SPACE|5.029002||Viu
UNI_SPACEPERL|5.029002||Viu
UNI_sterm_values_index|5.029009||Viu
@@ -12888,13 +14062,19 @@ UNI_xids_values_index|5.029009||Viu
UNI_XPERLSPACE|5.029002||Viu
UNKNOWN_ERRNO_MSG|5.019007||Viu
UNLESSM|5.003007||Viu
+UNLESSM_t8|5.035004||Viu
+UNLESSM_t8_p8|5.033003||Viu
+UNLESSM_t8_pb|5.033003||Viu
+UNLESSM_tb|5.035004||Viu
+UNLESSM_tb_p8|5.033003||Viu
+UNLESSM_tb_pb|5.033003||Viu
UNLIKELY|5.009004|5.003007|p
UNLINK|5.003007||Viu
unlink|5.005000||Viu
unlnk|5.003007||cVu
UNLOCK_DOLLARZERO_MUTEX|5.008001||Viu
-UNLOCK_LC_NUMERIC_STANDARD|5.021010||pViu
-UNLOCK_NUMERIC_STANDARD|5.021001||pViu
+UNLOCK_LC_NUMERIC_STANDARD|5.021010||poVnu
+UNLOCK_NUMERIC_STANDARD|||piu
UNOP_AUX_item_sv|5.021007||Viu
unpack_rec|5.008001||Viu
unpack_str|5.007003|5.007003|d
@@ -12911,6 +14091,7 @@ unwind_handler_stack|5.009003||Viu
update_debugger_info|5.009005||Viu
upg_version|5.009005|5.009005|
UPG_VERSION|5.019008||Viu
+uproot_SV|||Viu
Uquad_t|5.006000|5.006000|Vn
U_S|5.003007||Viu
usage|5.005000||Viu
@@ -12919,7 +14100,7 @@ USE_64_BIT_INT|5.006000|5.006000|Vn
USE_64_BIT_RAWIO|5.006000||Viu
USE_64_BIT_STDIO|5.006000||Viu
USE_BSDPGRP|5.003007||Viu
-USE_C_BACKTRACE|5.033000|5.033000|Vn
+USE_C_BACKTRACE|5.035009|5.035009|Vn
USE_DYNAMIC_LOADING|5.003007|5.003007|Vn
USE_ENVIRON_ARRAY|5.007001||Viu
USE_GRENT_BUFFER|5.008000||Viu
@@ -12968,7 +14149,7 @@ USE_SEMCTL_SEMID_DS|5.004005|5.004005|Vn
USE_SEMCTL_SEMUN|5.004005|5.004005|Vn
USE_SERVENT_BUFFER|5.008000||Viu
USE_SERVENT_PTR|5.008000||Viu
-USE_SPENT_BUFFER|5.031010||Viu
+USE_SPENT_BUFFER|5.031011||Viu
USE_SPENT_PTR|5.008000||Viu
USE_STAT_BLOCKS|5.005003|5.005003|Vn
USE_STAT_RDEV|5.003007||Viu
@@ -12982,8 +14163,9 @@ USE_THREAD_SAFE_LOCALE|5.025004||Viu
USE_TM64|5.011000||Viu
USE_UTF8_IN_NAMES|5.007003||Viu
utf16_textfilter|5.011001||Viu
-utf16_to_utf8|5.006000||cViu
-utf16_to_utf8_reversed|5.006000||cViu
+utf16_to_utf8|5.035004||cViu
+utf16_to_utf8_base|5.035004||cViu
+utf16_to_utf8_reversed|5.035004||cViu
UTF8_ACCUMULATE|5.007001||Viu
UTF8_ALLOW_ANY|5.007001||Viu
UTF8_ALLOW_ANYUV|5.007001||Viu
@@ -13014,16 +14196,16 @@ UTF8_EIGHT_BIT_LO|5.007001||Viu
UTF8f|5.019001|5.003007|p
UTF8fARG|5.019002|5.003007|p
UTF8_GOT_ABOVE_31_BIT|5.025006||Viu
-UTF8_GOT_CONTINUATION|5.025006||Viu
-UTF8_GOT_EMPTY|5.025006||Viu
-UTF8_GOT_LONG|5.025006||Viu
-UTF8_GOT_NONCHAR|5.025006||Viu
-UTF8_GOT_NON_CONTINUATION|5.025006||Viu
-UTF8_GOT_OVERFLOW|5.025006||Viu
-UTF8_GOT_PERL_EXTENDED|5.027002||Viu
-UTF8_GOT_SHORT|5.025006||Viu
-UTF8_GOT_SUPER|5.025006||Viu
-UTF8_GOT_SURROGATE|5.025006||Viu
+UTF8_GOT_CONTINUATION|5.025006|5.025006|
+UTF8_GOT_EMPTY|5.025006|5.025006|
+UTF8_GOT_LONG|5.025006|5.025006|
+UTF8_GOT_NONCHAR|5.025006|5.025006|
+UTF8_GOT_NON_CONTINUATION|5.025006|5.025006|
+UTF8_GOT_OVERFLOW|5.025006|5.025006|
+UTF8_GOT_PERL_EXTENDED|5.027002|5.027002|
+UTF8_GOT_SHORT|5.025006|5.025006|
+UTF8_GOT_SUPER|5.025006|5.025006|
+UTF8_GOT_SURROGATE|5.025006|5.025006|
utf8_hop|5.006000|5.006000|n
utf8_hop_back|5.025007|5.025007|n
utf8_hop_forward|5.025007|5.025007|n
@@ -13037,7 +14219,8 @@ UTF8_IS_INVARIANT|5.007001|5.003007|p
UTF8_IS_NEXT_CHAR_DOWNGRADEABLE|5.017006||Viu
UTF8_IS_NONCHAR|5.023002|5.023002|
UTF8_IS_NONCHAR_GIVEN_THAT_NON_SUPER_AND_GE_PROBLEMATIC|5.013009||Viu
-UTF8_IS_REPLACEMENT|5.017000||Viu
+UTF8_IS_PERL_EXTENDED|5.035004||Viu
+UTF8_IS_REPLACEMENT|||
UTF8_IS_START|5.007001||Viu
UTF8_IS_START_base|5.031007||Viu
UTF8_IS_SUPER|5.023002|5.023002|
@@ -13058,6 +14241,9 @@ UTF8_SAFE_SKIP|5.029009|5.006000|p
UTF8SKIP|5.006000|5.006000|
UTF8_SKIP|5.023002|5.006000|p
utf8_to_bytes|5.006001|5.006001|x
+utf8_to_utf16|5.035004||Viu
+utf8_to_utf16_base|5.035004||xcViu
+utf8_to_utf16_reversed|5.035004||Viu
utf8_to_uvchr|5.007001|5.006001|pd
utf8_to_uvchr_buf|5.015009|5.006001|p
utf8_to_uvchr_buf_helper|5.031004||cVu
@@ -13076,38 +14262,45 @@ UTF8_WARN_PERL_EXTENDED|5.027002|5.027002|
UTF8_WARN_SUPER|5.013009|5.013009|
UTF8_WARN_SURROGATE|5.013009|5.013009|
UTF_ACCUMULATION_SHIFT|5.007001||Viu
+UTF_CONTINUATION_BYTE_INFO_BITS|5.035004||Viu
UTF_CONTINUATION_MARK|5.007001||Viu
UTF_CONTINUATION_MASK|5.007001||Viu
+UTF_EBCDIC_CONTINUATION_BYTE_INFO_BITS|5.035004||Viu
+UTF_FIRST_CONT_BYTE_110000|5.035004||Viu
+UTF_FIRST_CONT_BYTE|5.035004||Viu
UTF_IS_CONTINUATION_MASK|5.023006||Viu
UTF_MIN_ABOVE_LATIN1_BYTE|5.031006||Viu
+UTF_MIN_CONTINUATION_BYTE|5.035004||Viu
UTF_MIN_START_BYTE|5.031006||Viu
+UTF_START_BYTE_110000|5.035004||Viu
+UTF_START_BYTE|5.035004||Viu
UTF_START_MARK|5.007001||Viu
UTF_START_MASK|5.007001||Viu
UTF_TO_NATIVE|5.007001||Viu
utilize|5.003007||Viu
utime|5.005000||Viu
-U_V|5.003007||Viu
+U_V|5.006000|5.003007|
UVCHR_IS_INVARIANT|5.019004|5.003007|p
UVCHR_SKIP|5.022000|5.003007|p
uvchr_to_utf8|5.007001|5.007001|
uvchr_to_utf8_flags|5.007003|5.007003|
uvchr_to_utf8_flags_msgs|5.027009|5.027009|
UV_DIG|5.006000||Viu
-UVf|5.007001||Viu
+UVf|5.010000|5.010000|d
UV_IS_QUAD|5.006000||Viu
-UV_MAX|5.003007|5.003007|oVnu
+UV_MAX|5.003007|5.003007|
UV_MAX_P1|5.007002||Viu
UV_MAX_P1_HALF|5.007002||Viu
-UV_MIN|5.003007|5.003007|oVnu
-UVof|5.006000|5.003007|p
+UV_MIN|5.003007|5.003007|
+UVof|5.006000|5.003007|poVn
uvoffuni_to_utf8_flags|5.027009||cV
uvoffuni_to_utf8_flags_msgs|5.027009||cVu
UVSIZE|5.006000|5.003007|poVn
UVTYPE|5.006000|5.003007|poVn
-UVuf|5.006000|5.003007|p
+UVuf|5.006000|5.003007|poVn
uvuni_to_utf8|5.019004||cVu
uvuni_to_utf8_flags|5.007003||dcV
-UVxf|5.006000|5.003007|p
+UVxf|5.006000|5.003007|poVn
UVXf|5.007001|5.007001|poVn
VAL_EAGAIN|5.003007|5.003007|Vn
validate_proto|5.019002||xcVi
@@ -13123,6 +14316,12 @@ VCMP|5.019008||Viu
vcroak|5.006000|5.006000|
vdeb|5.007003|5.007003|u
VERB|5.009005||Viu
+VERB_t8|5.035004||Viu
+VERB_t8_p8|5.033003||Viu
+VERB_t8_pb|5.033003||Viu
+VERB_tb|5.035004||Viu
+VERB_tb_p8|5.033003||Viu
+VERB_tb_pb|5.033003||Viu
vform|5.006000|5.006000|
vfprintf|5.003007||Viu
visit|5.005000||Viu
@@ -13135,6 +14334,7 @@ vnormal|5.009002|5.009002|
VNORMAL|5.019008||Viu
vnumify|5.009000|5.009000|
VNUMIFY|5.019008||Viu
+voidnonfinal|5.035002||Viu
VOL|5.003007||Viu
vstringify|5.009000|5.009000|
VSTRINGIFY|5.019008||Viu
@@ -13172,13 +14372,13 @@ vtohs|5.003007||Viu
VUTIL_REPLACE_CORE|5.019008||Viu
vverify|5.009003|5.009003|
VVERIFY|5.019008||Viu
-vwarn|5.006000|5.006000|
-vwarner|5.006000|5.006000|p
+vwarn|5.006000|5.003007|
+vwarner|5.006000|5.004000|p
wait4pid|5.003007||Viu
wait|5.005000||Viu
want_vtbl_bm|5.015000||Viu
want_vtbl_fm|5.015000||Viu
-warn|5.006000|5.003007|v
+warn|5.003007||vV
WARN_ALL|5.006000|5.003007|p
WARN_ALLstring|5.006000||Viu
WARN_AMBIGUOUS|5.006000|5.003007|p
@@ -13189,15 +14389,19 @@ WARN_CLOSURE|5.006000|5.003007|p
WARN_DEBUGGING|5.006000|5.003007|p
WARN_DEPRECATED|5.006000|5.003007|p
WARN_DIGIT|5.006000|5.003007|p
-warner|5.006000|5.004000|pv
-warner_nocontext|5.006000|5.004000|vn
+warner|5.006000||pvV
+warner_nocontext|5.006000||vVn
WARN_EXEC|5.006000|5.003007|p
WARN_EXITING|5.006000|5.003007|p
WARN_EXPERIMENTAL|5.017004|5.017004|
WARN_EXPERIMENTAL__ALPHA_ASSERTIONS|5.027009|5.027009|
+WARN_EXPERIMENTAL__ARGS_ARRAY_WITH_SIGNATURES|5.035009|5.035009|
WARN_EXPERIMENTAL__BITWISE|5.021009|5.021009|
+WARN_EXPERIMENTAL__BUILTIN|5.035009|5.035009|
WARN_EXPERIMENTAL__CONST_ATTR|5.021008|5.021008|
WARN_EXPERIMENTAL__DECLARED_REFS|5.025003|5.025003|
+WARN_EXPERIMENTAL__DEFER|5.035004|5.035004|
+WARN_EXPERIMENTAL__FOR_LIST|5.035005|5.035005|
WARN_EXPERIMENTAL__ISA|5.031007|5.031007|
WARN_EXPERIMENTAL__LEXICAL_SUBS|5.017005|5.017005|
WARN_EXPERIMENTAL__POSTDEREF|5.019005|5.019005|
@@ -13208,9 +14412,9 @@ WARN_EXPERIMENTAL__RE_STRICT|5.021008|5.021008|
WARN_EXPERIMENTAL__SCRIPT_RUN|5.027008|5.027008|
WARN_EXPERIMENTAL__SIGNATURES|5.019009|5.019009|
WARN_EXPERIMENTAL__SMARTMATCH|5.017011|5.017011|
+WARN_EXPERIMENTAL__TRY|5.033007|5.033007|
WARN_EXPERIMENTAL__UNIPROP_WILDCARDS|5.029009|5.029009|
WARN_EXPERIMENTAL__VLB|5.029009|5.029009|
-WARN_EXPERIMENTAL__WIN32_PERLIO|5.021001|5.021001|
WARN_GLOB|5.006000|5.003007|p
WARN_ILLEGALPROTO|5.011004|5.011004|
WARN_IMPRECISION|5.011000|5.011000|
@@ -13223,7 +14427,7 @@ WARN_MALLOC|5.006000|5.003007|p
WARN_MISC|5.006000|5.003007|p
WARN_MISSING|5.021002|5.021002|
WARN_NEWLINE|5.006000|5.003007|p
-warn_nocontext|5.006000|5.006000|pvn
+warn_nocontext|5.006000||pvVn
WARN_NONCHAR|5.013010|5.013010|
WARN_NONEstring|5.006000||Viu
WARN_NON_UNICODE|5.013010|5.013010|
@@ -13277,7 +14481,18 @@ WB_MB_or_MN_or_SQ_then_NU|5.023008||Viu
WB_NOBREAK|5.023008||Viu
WB_NU_then_MB_or_MN_or_SQ|5.023008||Viu
WB_RI_then_RI|5.025003||Viu
-WEXITSTATUS|5.008001||Viu
+WCTOMB_LOCK|5.033005||Viu
+WCTOMB_UNLOCK|5.033005||Viu
+what_MULTI_CHAR_FOLD_latin1_safe|5.033005||Viu
+what_MULTI_CHAR_FOLD_utf8_safe|5.033005||Viu
+what_MULTI_CHAR_FOLD_utf8_safe_part0|5.033005||Viu
+what_MULTI_CHAR_FOLD_utf8_safe_part1|5.033005||Viu
+what_MULTI_CHAR_FOLD_utf8_safe_part2|5.033005||Viu
+what_MULTI_CHAR_FOLD_utf8_safe_part3|5.033005||Viu
+what_MULTI_CHAR_FOLD_utf8_safe_part4|5.033005||Viu
+what_MULTI_CHAR_FOLD_utf8_safe_part5|5.033005||Viu
+what_MULTI_CHAR_FOLD_utf8_safe_part6|5.033005||Viu
+what_MULTI_CHAR_FOLD_utf8_safe_part7|5.033005||Viu
whichsig|5.003007|5.003007|
whichsig_pv|5.015004|5.015004|
whichsig_pvn|5.015004|5.015004|
@@ -13285,39 +14500,100 @@ whichsig_sv|5.015004|5.015004|
WHILEM|5.003007||Viu
WHILEM_A_max|5.009005||Viu
WHILEM_A_max_fail|5.009005||Viu
+WHILEM_A_max_fail_t8|5.035004||Viu
+WHILEM_A_max_fail_t8_p8|5.033003||Viu
+WHILEM_A_max_fail_t8_pb|5.033003||Viu
+WHILEM_A_max_fail_tb|5.035004||Viu
+WHILEM_A_max_fail_tb_p8|5.033003||Viu
+WHILEM_A_max_fail_tb_pb|5.033003||Viu
+WHILEM_A_max_t8|5.035004||Viu
+WHILEM_A_max_t8_p8|5.033003||Viu
+WHILEM_A_max_t8_pb|5.033003||Viu
+WHILEM_A_max_tb|5.035004||Viu
+WHILEM_A_max_tb_p8|5.033003||Viu
+WHILEM_A_max_tb_pb|5.033003||Viu
WHILEM_A_min|5.009005||Viu
WHILEM_A_min_fail|5.009005||Viu
+WHILEM_A_min_fail_t8|5.035004||Viu
+WHILEM_A_min_fail_t8_p8|5.033003||Viu
+WHILEM_A_min_fail_t8_pb|5.033003||Viu
+WHILEM_A_min_fail_tb|5.035004||Viu
+WHILEM_A_min_fail_tb_p8|5.033003||Viu
+WHILEM_A_min_fail_tb_pb|5.033003||Viu
+WHILEM_A_min_t8|5.035004||Viu
+WHILEM_A_min_t8_p8|5.033003||Viu
+WHILEM_A_min_t8_pb|5.033003||Viu
+WHILEM_A_min_tb|5.035004||Viu
+WHILEM_A_min_tb_p8|5.033003||Viu
+WHILEM_A_min_tb_pb|5.033003||Viu
WHILEM_A_pre|5.009005||Viu
WHILEM_A_pre_fail|5.009005||Viu
+WHILEM_A_pre_fail_t8|5.035004||Viu
+WHILEM_A_pre_fail_t8_p8|5.033003||Viu
+WHILEM_A_pre_fail_t8_pb|5.033003||Viu
+WHILEM_A_pre_fail_tb|5.035004||Viu
+WHILEM_A_pre_fail_tb_p8|5.033003||Viu
+WHILEM_A_pre_fail_tb_pb|5.033003||Viu
+WHILEM_A_pre_t8|5.035004||Viu
+WHILEM_A_pre_t8_p8|5.033003||Viu
+WHILEM_A_pre_t8_pb|5.033003||Viu
+WHILEM_A_pre_tb|5.035004||Viu
+WHILEM_A_pre_tb_p8|5.033003||Viu
+WHILEM_A_pre_tb_pb|5.033003||Viu
WHILEM_B_max|5.009005||Viu
WHILEM_B_max_fail|5.009005||Viu
+WHILEM_B_max_fail_t8|5.035004||Viu
+WHILEM_B_max_fail_t8_p8|5.033003||Viu
+WHILEM_B_max_fail_t8_pb|5.033003||Viu
+WHILEM_B_max_fail_tb|5.035004||Viu
+WHILEM_B_max_fail_tb_p8|5.033003||Viu
+WHILEM_B_max_fail_tb_pb|5.033003||Viu
+WHILEM_B_max_t8|5.035004||Viu
+WHILEM_B_max_t8_p8|5.033003||Viu
+WHILEM_B_max_t8_pb|5.033003||Viu
+WHILEM_B_max_tb|5.035004||Viu
+WHILEM_B_max_tb_p8|5.033003||Viu
+WHILEM_B_max_tb_pb|5.033003||Viu
WHILEM_B_min|5.009005||Viu
WHILEM_B_min_fail|5.009005||Viu
-WIDEST_UTYPE|5.015004|5.003007|p
-WIFEXITED|5.008001||Viu
-WIFSIGNALED|5.008001||Viu
-WIFSTOPPED|5.008001||Viu
+WHILEM_B_min_fail_t8|5.035004||Viu
+WHILEM_B_min_fail_t8_p8|5.033003||Viu
+WHILEM_B_min_fail_t8_pb|5.033003||Viu
+WHILEM_B_min_fail_tb|5.035004||Viu
+WHILEM_B_min_fail_tb_p8|5.033003||Viu
+WHILEM_B_min_fail_tb_pb|5.033003||Viu
+WHILEM_B_min_t8|5.035004||Viu
+WHILEM_B_min_t8_p8|5.033003||Viu
+WHILEM_B_min_t8_pb|5.033003||Viu
+WHILEM_B_min_tb|5.035004||Viu
+WHILEM_B_min_tb_p8|5.033003||Viu
+WHILEM_B_min_tb_pb|5.033003||Viu
+WHILEM_t8|5.035004||Viu
+WHILEM_t8_p8|5.033003||Viu
+WHILEM_t8_pb|5.033003||Viu
+WHILEM_tb|5.035004||Viu
+WHILEM_tb_p8|5.033003||Viu
+WHILEM_tb_pb|5.033003||Viu
+WIDEST_UTYPE|5.015004|5.003007|poVnu
win32_croak_not_implemented|5.017006||Vniu
WIN32SCK_IS_STDSCK|5.007001||Viu
win32_setlocale|5.027006||Viu
withinCOUNT|5.031004||Viu
+withinCOUNT_KNOWN_VALID|5.033005||Viu
WITH_LC_NUMERIC_SET_TO_NEEDED|5.031003|5.031003|
WITH_LC_NUMERIC_SET_TO_NEEDED_IN|5.031003|5.031003|
with_queued_errors|5.013001||Viu
-WNOHANG|5.008001||Viu
+with_tp_UTF8ness|5.033003||Viu
+with_t_UTF8ness|5.035004||Viu
wrap_keyword_plugin|5.027006|5.027006|x
wrap_op_checker|5.015008|5.015008|
write|5.005000||Viu
write_to_stderr|5.008001||Viu
-WSTOPSIG|5.008001||Viu
-WTERMSIG|5.008001||Viu
-WUNTRACED|5.008001||Viu
XCPT_CATCH|5.009002|5.003007|p
XCPT_RETHROW|5.009002|5.003007|p
XCPT_TRY_END|5.009002|5.003007|p
XCPT_TRY_START|5.009002|5.003007|p
XDIGIT_VALUE|5.019008||Viu
-XHvTOTALKEYS|5.007003||Viu
xio_any|5.006001||Viu
xio_dirp|5.006001||Viu
xiv_iv|5.009003||Viu
@@ -13347,7 +14623,7 @@ XPUSHTARG|5.003007||Viu
XPUSHu|5.004000|5.003007|p
XPUSHundef|5.006000||Viu
xpv_len|5.017006||Viu
-XS|5.003007|5.003007|V
+XS|5.003007|5.003007|Vu
XSANY|5.003007||Viu
XS_APIVERSION_BOOTCHECK|5.013004|5.013004|
XS_APIVERSION_POPMARK_BOOTCHECK|5.021006||Viu
@@ -13357,15 +14633,15 @@ XS_BOTHVERSION_BOOTCHECK|5.021006||Viu
XS_BOTHVERSION_POPMARK_BOOTCHECK|5.021006||Viu
XS_BOTHVERSION_SETXSUBFN_POPMARK_BOOTCHECK|5.021006||Viu
XS_DYNAMIC_FILENAME|5.009004||Viu
-XS_EXTERNAL|5.015002|5.015002|V
+XS_EXTERNAL|5.015002|5.015002|Vu
xs_handshake|||vcniu
XSINTERFACE_CVT|5.005000||Viu
XSINTERFACE_CVT_ANON|5.010000||Viu
XSINTERFACE_FUNC|5.005000||Viu
XSINTERFACE_FUNC_SET|5.005000||Viu
-XS_INTERNAL|5.015002|5.015002|V
+XS_INTERNAL|5.015002|5.015002|Vu
XSprePUSH|5.006000|5.003007|poVnu
-XSPROTO|5.010000|5.003007|pV
+XSPROTO|5.010000|5.003007|pVu
XSRETURN|5.003007|5.003007|p
XSRETURN_EMPTY|5.003007|5.003007|
XSRETURN_IV|5.003007|5.003007|
@@ -14306,7 +15582,7 @@ __DATA__
#define DPPP_CAT2(x,y) CAT2(x,y)
#define DPPP_(name) DPPP_CAT2(DPPP_NAMESPACE, name)
-#define D_PPP_RELEASE_DATE 1602806400 /* 2020-10-16 */
+#define D_PPP_RELEASE_DATE 1647561600 /* 2022-03-18 */
#if ! defined(PERL_REVISION) && ! defined(PERL_VERSION_MAJOR)
# if ! defined(__PATCHLEVEL_H_INCLUDED__) \
@@ -15237,6 +16513,18 @@ DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
#ifndef PERL_MAGIC_ext
# define PERL_MAGIC_ext '~'
#endif
+
+#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+#ifndef PERL_STATIC_INLINE
+# define PERL_STATIC_INLINE static inline
+#endif
+
+#else
+#ifndef PERL_STATIC_INLINE
+# define PERL_STATIC_INLINE static
+#endif
+
+#endif
#ifndef cBOOL
# define cBOOL(cbool) ((cbool) ? (bool)1 : (bool)0)
#endif
@@ -15276,6 +16564,43 @@ DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
#endif
#endif
+#ifndef __has_builtin
+# define __has_builtin(x) 0
+#endif
+
+#if __has_builtin(__builtin_unreachable)
+# define D_PPP_HAS_BUILTIN_UNREACHABLE
+#elif (defined(__GNUC__) && ( __GNUC__ > 4 \
+ || __GNUC__ == 4 && __GNUC_MINOR__ >= 5))
+# define D_PPP_HAS_BUILTIN_UNREACHABLE
+#endif
+
+#ifndef ASSUME
+# ifdef DEBUGGING
+# define ASSUME(x) assert(x)
+# elif defined(_MSC_VER)
+# define ASSUME(x) __assume(x)
+# elif defined(__ARMCC_VERSION)
+# define ASSUME(x) __promise(x)
+# elif defined(D_PPP_HAS_BUILTIN_UNREACHABLE)
+# define ASSUME(x) ((x) ? (void) 0 : __builtin_unreachable())
+# else
+# define ASSUME(x) assert(x)
+# endif
+#endif
+
+#ifndef NOT_REACHED
+# ifdef D_PPP_HAS_BUILTIN_UNREACHABLE
+# define NOT_REACHED \
+ STMT_START { \
+ ASSUME(!"UNREACHABLE"); __builtin_unreachable(); \
+ } STMT_END
+# elif ! defined(__GNUC__) && (defined(__sun) || defined(__hpux))
+# define NOT_REACHED
+# else
+# define NOT_REACHED ASSUME(!"UNREACHABLE")
+# endif
+#endif
#ifndef WIDEST_UTYPE
# ifdef QUADKIND
@@ -15422,8 +16747,12 @@ DPPP_(my_newCONSTSUB)(HV *stash, const char *name, SV *sv)
# define NOOP /*EMPTY*/(void)0
#endif
+#if (PERL_BCDVERSION < 0x5006001) && (PERL_BCDVERSION < 0x5027007)
+#undef dNOOP
#ifndef dNOOP
-# define dNOOP extern int /*@unused@*/ Perl___notused PERL_UNUSED_DECL
+# define dNOOP struct Perl___notused_struct
+#endif
+
#endif
#ifndef NVTYPE
@@ -15498,7 +16827,9 @@ typedef NVTYPE NV;
# endif
#endif
-#if defined(__GNUC__) && !defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) && !defined(__cplusplus)
+#if ! defined(__GNUC__) || defined(PERL_GCC_BRACE_GROUPS_FORBIDDEN) || defined(__cplusplus)
+# undef PERL_USE_GCC_BRACE_GROUPS
+#else
# ifndef PERL_USE_GCC_BRACE_GROUPS
# define PERL_USE_GCC_BRACE_GROUPS
# endif
@@ -15506,17 +16837,12 @@ typedef NVTYPE NV;
#undef STMT_START
#undef STMT_END
-#ifdef PERL_USE_GCC_BRACE_GROUPS
-# define STMT_START (void)( /* gcc supports ``({ STATEMENTS; })'' */
-# define STMT_END )
-#else
-# if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__)
+#if defined(VOIDFLAGS) && (VOIDFLAGS) && (defined(sun) || defined(__sun__)) && !defined(__GNUC__)
# define STMT_START if (1)
# define STMT_END else (void)0
-# else
+#else
# define STMT_START do
# define STMT_END while (0)
-# endif
#endif
#ifndef boolSV
# define boolSV(b) ((b) ? &PL_sv_yes : &PL_sv_no)
@@ -15730,8 +17056,8 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
#ifdef EBCDIC
/* This is the first version where these macros are fully correct on EBCDIC
- * platforms. Relying on * the C library functions, as earlier releases did,
- * causes problems with * locales */
+ * platforms. Relying on the C library functions, as earlier releases did,
+ * causes problems with locales */
# if (PERL_BCDVERSION < 0x5022000)
# undef isALNUM
# undef isALNUM_A
@@ -15912,16 +17238,16 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
#endif
#ifndef isCNTRL_L1
-# define isCNTRL_L1(c) (isCNTRL(c) || ( (WIDEST_UTYPE) (c) <= 0x9F \
- && (WIDEST_UTYPE) (c) >= 0x80))
+# define isCNTRL_L1(c) ( (WIDEST_UTYPE) (c) < ' ' \
+ || inRANGE((c), 0x7F, 0x9F))
#endif
#ifndef isLOWER
-# define isLOWER(c) ((c) >= 'a' && (c) <= 'z')
+# define isLOWER(c) inRANGE((c), 'a', 'z')
#endif
#ifndef isUPPER
-# define isUPPER(c) ((c) <= 'Z' && (c) >= 'A')
+# define isUPPER(c) inRANGE((c), 'A', 'Z')
#endif
#endif /* Below are definitions common to EBCDIC and ASCII */
@@ -16115,8 +17441,8 @@ typedef OP* (CPERLscope(*Perl_check_t)) (pTHX_ OP*);
#ifndef isXDIGIT
# define isXDIGIT(c) ( isDIGIT(c) \
- || ((c) >= 'a' && (c) <= 'f') \
- || ((c) >= 'A' && (c) <= 'F'))
+ || inRANGE((c), 'a', 'f') \
+ || inRANGE((c), 'A', 'F'))
#endif
#ifndef isXDIGIT_L1
@@ -17222,6 +18548,9 @@ DPPP_(my_sv_setpvf_mg_nocontext)(SV * const sv, const char * const pat, ...)
(Malloc_t)SvPVX(sv), (MEM_SIZE)((n)))); \
} STMT_END
#endif
+#ifndef SvPVCLEAR
+# define SvPVCLEAR(sv) sv_setpvs((sv), "")
+#endif
#ifndef WARN_ALL
# define WARN_ALL 0
#endif
@@ -17804,17 +19133,18 @@ DPPP_(my_my_strnlen)(const char *str, Size_t maxlen)
# else
# define D_PPP_FIX_UTF8_ERRSV_FOR_SV(sv) STMT_START {} STMT_END
# endif
-# define croak_sv(sv) \
- STMT_START { \
- SV *_sv = (sv); \
- if (SvROK(_sv)) { \
- sv_setsv(ERRSV, _sv); \
- croak(NULL); \
- } else { \
- D_PPP_FIX_UTF8_ERRSV_FOR_SV(_sv); \
- croak("%" SVf, SVfARG(_sv)); \
- } \
- } STMT_END
+PERL_STATIC_INLINE void D_PPP_croak_sv(SV *sv) {
+ dTHX;
+ SV *_sv = (sv);
+ if (SvROK(_sv)) {
+ sv_setsv(ERRSV, _sv);
+ croak(NULL);
+ } else {
+ D_PPP_FIX_UTF8_ERRSV_FOR_SV(_sv);
+ croak("%" SVf, SVfARG(_sv));
+ }
+}
+# define croak_sv(sv) D_PPP_croak_sv(sv)
#elif (PERL_BCDVERSION >= 0x5004000)
# define croak_sv(sv) croak("%" SVf, SVfARG(sv))
#else
@@ -18021,7 +19351,8 @@ extern void DPPP_(my_croak_xs_usage)(const CV * const cv, const char * const par
#define croak_xs_usage DPPP_(my_croak_xs_usage)
#define Perl_croak_xs_usage DPPP_(my_croak_xs_usage)
-
+#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE
+#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)
void
DPPP_(my_croak_xs_usage)(const CV *const cv, const char *const params)
@@ -18029,11 +19360,7 @@ DPPP_(my_croak_xs_usage)(const CV *const cv, const char *const params)
dTHX;
const GV *const gv = CvGV(cv);
-#ifdef PERL_ARGS_ASSERT_CROAK_XS_USAGE
PERL_ARGS_ASSERT_CROAK_XS_USAGE;
-#else
- assert(cv); assert(params);
-#endif
if (gv) {
const char *const gvname = GvNAME(gv);
@@ -18051,6 +19378,7 @@ DPPP_(my_croak_xs_usage)(const CV *const cv, const char *const params)
}
#endif
#endif
+#endif
#ifndef mPUSHs
# define mPUSHs(s) PUSHs(sv_2mortal(s))
#endif
@@ -18139,6 +19467,9 @@ DPPP_(my_croak_xs_usage)(const CV *const cv, const char *const params)
#endif
#endif
+#ifndef G_LIST
+# define G_LIST G_ARRAY /* Replace */
+#endif
#ifndef PERL_LOADMOD_DENY
# define PERL_LOADMOD_DENY 0x1
#endif
@@ -18152,9 +19483,22 @@ DPPP_(my_croak_xs_usage)(const CV *const cv, const char *const params)
#endif
#if defined(PERL_USE_GCC_BRACE_GROUPS)
-# define D_PPP_CROAK_IF_ERROR(cond) ({ SV *_errsv; ((cond) && (_errsv = ERRSV) && (SvROK(_errsv) || SvTRUE(_errsv)) && (croak_sv(_errsv), 1)); })
+# define D_PPP_CROAK_IF_ERROR(cond) ({ \
+ SV *_errsv; \
+ ( (cond) \
+ && (_errsv = ERRSV) \
+ && (SvROK(_errsv) || SvTRUE(_errsv)) \
+ && (croak_sv(_errsv), 1)); \
+ })
#else
-# define D_PPP_CROAK_IF_ERROR(cond) ((cond) && (SvROK(ERRSV) || SvTRUE(ERRSV)) && (croak_sv(ERRSV), 1))
+ PERL_STATIC_INLINE void D_PPP_CROAK_IF_ERROR(int cond) {
+ dTHX;
+ SV *errsv;
+ if (!cond) return;
+ errsv = ERRSV;
+ if (SvROK(errsv) || SvTRUE(errsv)) croak_sv(errsv);
+ }
+# define D_PPP_CROAK_IF_ERROR(cond) D_PPP_CROAK_IF_ERROR(cond)
#endif
#ifndef G_METHOD
@@ -18261,9 +19605,9 @@ DPPP_(my_vload_module)(U32 flags, SV *name, SV *ver, va_list *args)
OP * const modname = newSVOP(OP_CONST, 0, name);
/* 5.005 has a somewhat hacky force_normal that doesn't croak on
- SvREADONLY() if PL_compling is true. Current perls take care in
+ SvREADONLY() if PL_compiling is true. Current perls take care in
ck_require() to correctly turn off SvREADONLY before calling
- force_normal_flags(). This seems a better fix than fudging PL_compling
+ force_normal_flags(). This seems a better fix than fudging PL_compiling
*/
SvREADONLY_off(((SVOP*)modname)->op_sv);
modname->op_private |= OPpCONST_BARE;
@@ -18548,11 +19892,25 @@ DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...)
#endif
#ifndef newSVpvn_flags
-#if defined(PERL_USE_GCC_BRACE_GROUPS)
-# define newSVpvn_flags(s, len, flags) ({ SV *_sv = newSVpvn(D_PPP_CONSTPV_ARG((s)), (len)); SvFLAGS(_sv) |= ((flags) & SVf_UTF8); ((flags) & SVs_TEMP) ? sv_2mortal(_sv) : _sv; })
-#else
-# define newSVpvn_flags(s, len, flags) ((PL_Sv = newSVpvn(D_PPP_CONSTPV_ARG((s)), (len))), SvFLAGS(PL_Sv) |= ((flags) & SVf_UTF8), (((flags) & SVs_TEMP) ? sv_2mortal(PL_Sv) : PL_Sv))
-#endif
+# if defined(PERL_USE_GCC_BRACE_GROUPS)
+# define newSVpvn_flags(s, len, flags) \
+ ({ \
+ SV * sv = newSVpvn(D_PPP_CONSTPV_ARG(s), (len)); \
+ SvFLAGS(sv) |= ((flags) & SVf_UTF8); \
+ if ((flags) & SVs_TEMP) sv = sv_2mortal(sv); \
+ sv; \
+ })
+# else
+ PERL_STATIC_INLINE SV* D_PPP_newSVpvn_flags(const char *const s, const STRLEN len, const U32 flags)
+ {
+ dTHX;
+ SV * sv = newSVpvn(s, len);
+ SvFLAGS(sv) |= (flags & SVf_UTF8);
+ if (flags & SVs_TEMP) return sv_2mortal(sv);
+ return sv;
+ }
+# define newSVpvn_flags(s, len, flags) D_PPP_newSVpvn_flags((s), (len), (flags))
+# endif
#endif
#ifndef SV_NOSTEAL
# define SV_NOSTEAL 16
@@ -18572,6 +19930,7 @@ DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...)
} \
} STMT_END
#else
+#define sv_setsv_flags(dstr, sstr, flags) \
( \
(((flags) & SV_NOSTEAL) && (sstr) && (SvFLAGS((SV *)(sstr)) & SVs_TEMP)) ? ( \
SvTEMP_off((SV *)(sstr)), \
@@ -18645,16 +20004,24 @@ DPPP_(my_load_module)(U32 flags, SV *name, SV *ver, ...)
#endif
-#if defined(PERL_USE_GCC_BRACE_GROUPS)
-#ifndef newSVsv_flags
-# define newSVsv_flags(sv, flags) ({ SV *_sv = newSV(0); sv_setsv_flags(_sv, (sv), (flags)); _sv; })
-#endif
-
-#else
#ifndef newSVsv_flags
-# define newSVsv_flags(sv, flags) ((PL_Sv = newSV(0)), sv_setsv_flags(PL_Sv, (sv), (flags)), PL_Sv)
-#endif
-
+# if defined(PERL_USE_GCC_BRACE_GROUPS)
+# define newSVsv_flags(sv, flags) \
+ ({ \
+ SV *n= newSV(0); \
+ sv_setsv_flags(n, (sv), (flags)); \
+ n; \
+ })
+# else
+ PERL_STATIC_INLINE SV* D_PPP_newSVsv_flags(SV *const old, I32 flags)
+ {
+ dTHX;
+ SV *n= newSV(0);
+ sv_setsv_flags(n, old, flags);
+ return n;
+ }
+# define newSVsv_flags(sv, flags) D_PPP_newSVsv_flags(sv, flags)
+# endif
#endif
#ifndef newSVsv_nomg
# define newSVsv_nomg(sv) newSVsv_flags((sv), SV_NOSTEAL)
@@ -18856,8 +20223,10 @@ DPPP_(my_newSVpvn_share)(pTHX_ const char *s, I32 len, U32 hash)
#ifndef get_cvs
# define get_cvs(name, flags) get_cvn_flags(name "", sizeof(name)-1, flags)
#endif
+
+#undef SvGETMAGIC
#ifndef SvGETMAGIC
-# define SvGETMAGIC(x) STMT_START { if (SvGMAGICAL(x)) mg_get(x); } STMT_END
+# define SvGETMAGIC(x) ((void)(UNLIKELY(SvGMAGICAL(x)) && mg_get(x)))
#endif
/* That's the best we can do... */
@@ -19086,10 +20455,10 @@ DPPP_(my_mg_findext)(const SV * sv, int type, const MGVTBL *vtbl) {
#if !defined(sv_unmagicext)
#if defined(NEED_sv_unmagicext)
-static int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, MGVTBL * vtbl);
+static int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, const MGVTBL * vtbl);
static
#else
-extern int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, MGVTBL * vtbl);
+extern int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, const MGVTBL * vtbl);
#endif
#if defined(NEED_sv_unmagicext) || defined(NEED_sv_unmagicext_GLOBAL)
@@ -19102,7 +20471,7 @@ extern int DPPP_(my_sv_unmagicext)(pTHX_ SV * const sv, const int type, MGVTBL *
int
-DPPP_(my_sv_unmagicext)(pTHX_ SV *const sv, const int type, MGVTBL *vtbl)
+DPPP_(my_sv_unmagicext)(pTHX_ SV *const sv, const int type, const MGVTBL *vtbl)
{
MAGIC* mg;
MAGIC** mgp;
@@ -20131,8 +21500,9 @@ DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size)
(((len) > 7) ? 0xFF : (0xFF & (0xFE << (7-(len)))))
#endif
-#if (PERL_BCDVERSION < 0x5018000) /* On non-EBCDIC was valid before this, */
- /* but easier to just do one check */
+/* On non-EBCDIC was valid for some releases earlier than this, but easier to
+ * just do one check */
+#if (PERL_BCDVERSION < 0x5018000)
# undef UTF8_MAXBYTES_CASE
#endif
@@ -20380,10 +21750,10 @@ DPPP_(my_my_strlcpy)(char *dst, const char *src, Size_t size)
# error Unknown character set
#endif
-#if (PERL_BCDVERSION < 0x5031004)
- /* Versions prior to this accepted things that are now considered
- * malformations, and didn't return -1 on error with warnings enabled
- * */
+#if (PERL_BCDVERSION < 0x5035010)
+ /* Versions prior to 5.31.4 accepted things that are now considered
+ * malformations, and didn't return -1 on error with warnings enabled.
+ * Versions before 5.35.10 dereferenced empty input without checking */
# undef utf8_to_uvchr_buf
#endif
@@ -20440,6 +21810,34 @@ extern UV DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 * s, const U8 * send, STRLE
UV
DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
{
+# if (PERL_BCDVERSION >= 0x5031004) /* But from above, must be < 5.35.10 */
+# if (PERL_BCDVERSION != 0x5035009)
+
+ /* Versions less than 5.35.9 could dereference s on zero length, so
+ * pass it something where no harm comes from that. */
+ if (send <= s) s = send = (U8 *) "?";
+ return Perl_utf8_to_uvchr_buf_helper(aTHX_ s, send, retlen);
+
+# else /* Below is 5.35.9, which also works on non-empty input, but
+ for empty input, can wrongly dereference, and additionally is
+ also just plain broken */
+ if (send > s) return Perl_utf8_to_uvchr_buf_helper(aTHX_ s, send, retlen);
+ if (! ckWARN_d(WARN_UTF8)) {
+ if (retlen) *retlen = 0;
+ return UNICODE_REPLACEMENT;
+ }
+ else {
+ s = send = (U8 *) "?";
+
+ /* Call just for its warning */
+ (void) Perl__utf8n_to_uvchr_msgs_helper(s, 0, NULL, 0, NULL, NULL);
+ if (retlen) *retlen = (STRLEN) -1;
+ return 0;
+ }
+
+# endif
+# else
+
UV ret;
STRLEN curlen;
bool overflows = 0;
@@ -20461,7 +21859,7 @@ DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
}
}
-# if (PERL_BCDVERSION < 0x5026000) && ! defined(EBCDIC)
+# if (PERL_BCDVERSION < 0x5026000) && ! defined(EBCDIC)
/* Perl did not properly detect overflow for much of its history on
* non-EBCDIC platforms, often returning an overlong value which may or may
@@ -20516,7 +21914,7 @@ DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
}
else
-# endif /* < 5.26 */
+# endif /* < 5.26 */
/* Here, we are either in a release that properly detects overflow, or
* we have checked for overflow and the next statement is executing as
@@ -20529,7 +21927,7 @@ DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
s, curlen, retlen, (UTF8_ALLOW_ANYUV
& ~(UTF8_ALLOW_LONG|UTF8_ALLOW_EMPTY)));
-# if (PERL_BCDVERSION >= 0x5026000) && (PERL_BCDVERSION < 0x5028000)
+# if (PERL_BCDVERSION >= 0x5026000) && (PERL_BCDVERSION < 0x5028000)
/* But actually, more modern versions restrict the UV to being no more than
* what an IV can hold, so it could still have gotten it wrong about
@@ -20538,7 +21936,7 @@ DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
overflows = 1;
}
-# endif
+# endif
if (UNLIKELY(overflows)) {
if (! do_warnings) {
@@ -20572,7 +21970,9 @@ DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
* disabled, so this 'if' will be true, and so later on, we know that
* 's' is dereferencible */
if (do_warnings) {
- *retlen = (STRLEN) -1;
+ if (retlen) {
+ *retlen = (STRLEN) -1;
+ }
}
else {
ret = D_PPP_utf8_to_uvchr_buf_callee(
@@ -20582,7 +21982,7 @@ DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
* modern version of this function returns */
ret = UNICODE_REPLACEMENT;
-# if (PERL_BCDVERSION < 0x5016000)
+# if (PERL_BCDVERSION < 0x5016000)
/* Versions earlier than this don't necessarily return the proper
* length. It should not extend past the end of string, nor past
@@ -20594,11 +21994,11 @@ DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
*retlen = D_PPP_MIN(*retlen, curlen);
*retlen = D_PPP_MIN(*retlen, UTF8SKIP(s));
do {
-# ifdef UTF8_IS_CONTINUATION
+# ifdef UTF8_IS_CONTINUATION
if (! UTF8_IS_CONTINUATION(s[i]))
-# else /* Versions without the above don't support EBCDIC anyway */
+# else /* Versions without the above don't support EBCDIC anyway */
if (s[i] < 0x80 || s[i] > 0xBF)
-# endif
+# endif
{
*retlen = i;
break;
@@ -20606,12 +22006,15 @@ DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
} while (++i < *retlen);
}
-# endif
+# endif /* end of < 5.16.0 */
}
}
return ret;
+
+# endif /* end of < 5.31.4 */
+
}
# endif
@@ -20642,29 +22045,80 @@ DPPP_(my_utf8_to_uvchr_buf)(pTHX_ const U8 *s, const U8 *send, STRLEN *retlen)
/* Replace utf8_to_uvchr with utf8_to_uvchr_buf */
#ifdef sv_len_utf8
- /* Older Perl versions have broken sv_len_utf8() when passed sv does not have SVf_UTF8 flag set */
- /* Also note that SvGETMAGIC() may change presence of SVf_UTF8 flag */
-# if (PERL_BCDVERSION < 0x5017005)
+# if (PERL_BCDVERSION >= 0x5017005)
+# ifndef sv_len_utf8_nomg
+# if defined(PERL_USE_GCC_BRACE_GROUPS)
+# define sv_len_utf8_nomg(sv) \
+ ({ \
+ SV *sv_ = (sv); \
+ sv_len_utf8(!SvGMAGICAL(sv_) \
+ ? sv_ \
+ : sv_mortalcopy_flags(sv_, SV_NOSTEAL)); \
+ })
+# else
+ PERL_STATIC_INLINE STRLEN D_PPP_sv_len_utf8_nomg(SV * sv)
+ {
+ dTHX;
+ if (SvGMAGICAL(sv))
+ return sv_len_utf8(sv_mortalcopy_flags(sv,
+ SV_NOSTEAL));
+ else return sv_len_utf8(sv);
+ }
+# define sv_len_utf8_nomg(sv) D_PPP_sv_len_utf8_nomg(sv)
+# endif
+# endif
+# else /* < 5.17.5 */
+ /* Older Perl versions have broken sv_len_utf8() when passed sv does not
+ * have SVf_UTF8 flag set */
+ /* Also note that SvGETMAGIC() may change presence of SVf_UTF8 flag */
# undef sv_len_utf8
# if defined(PERL_USE_GCC_BRACE_GROUPS)
-# define sv_len_utf8_nomg(sv) ({ SV *_sv2 = (sv); (SvUTF8(_sv2) ? Perl_sv_len_utf8(aTHX_ (!SvGMAGICAL(_sv2) ? _sv2 : sv_mortalcopy_flags(_sv2, SV_NOSTEAL))) : ({ STRLEN _len; SvPV_nomg(_sv2, _len); _len; })); })
-# define sv_len_utf8(sv) ({ SV *_sv1 = (sv); SvGETMAGIC(_sv1); sv_len_utf8_nomg(_sv1); })
-# else
-# define sv_len_utf8_nomg(sv) (PL_Sv = (sv), (SvUTF8(PL_Sv) ? Perl_sv_len_utf8(aTHX_ (!SvGMAGICAL(PL_Sv) ? PL_Sv : sv_mortalcopy_flags(PL_Sv, SV_NOSTEAL))) : (SvPV_nomg(PL_Sv, PL_na), PL_na)))
-# define sv_len_utf8(sv) (PL_Sv = (sv), SvGETMAGIC(PL_Sv), sv_len_utf8_nomg(PL_Sv))
+# define sv_len_utf8_nomg(sv) \
+ ({ \
+ SV *sv2 = (sv); \
+ STRLEN len; \
+ if (SvUTF8(sv2)) { \
+ if (SvGMAGICAL(sv2)) \
+ len = Perl_sv_len_utf8(aTHX_ \
+ sv_mortalcopy_flags(sv2, \
+ SV_NOSTEAL));\
+ else \
+ len = Perl_sv_len_utf8(aTHX_ sv2); \
+ } \
+ else SvPV_nomg(sv2, len); \
+ len; \
+ })
+# define sv_len_utf8(sv) ({ SV *_sv1 = (sv); \
+ SvGETMAGIC(_sv1); \
+ sv_len_utf8_nomg(_sv1); \
+ })
+# else /* Below is no brace groups */
+ PERL_STATIC_INLINE STRLEN D_PPP_sv_len_utf8_nomg(SV * sv)
+ {
+ dTHX;
+ STRLEN len;
+ if (SvUTF8(sv)) {
+ if (SvGMAGICAL(sv))
+ len = Perl_sv_len_utf8(aTHX_
+ sv_mortalcopy_flags(sv,
+ SV_NOSTEAL));
+ else
+ len = Perl_sv_len_utf8(aTHX_ sv);
+ }
+ else SvPV_nomg(sv, len);
+ return len;
+ }
+# define sv_len_utf8_nomg(sv) D_PPP_sv_len_utf8_nomg(sv)
+
+ PERL_STATIC_INLINE STRLEN D_PPP_sv_len_utf8(SV * sv)
+ {
+ dTHX;
+ SvGETMAGIC(sv);
+ return sv_len_utf8_nomg(sv);
+ }
+# define sv_len_utf8(sv) D_PPP_sv_len_utf8(sv)
# endif
-# endif
-# if defined(PERL_USE_GCC_BRACE_GROUPS)
-#ifndef sv_len_utf8_nomg
-# define sv_len_utf8_nomg(sv) ({ SV *_sv = (sv); sv_len_utf8(!SvGMAGICAL(_sv) ? _sv : sv_mortalcopy_flags(_sv, SV_NOSTEAL)); })
-#endif
-
-# else
-#ifndef sv_len_utf8_nomg
-# define sv_len_utf8_nomg(sv) ((PL_Sv = (sv)), sv_len_utf8(!SvGMAGICAL(PL_Sv) ? PL_Sv : sv_mortalcopy_flags(PL_Sv, SV_NOSTEAL)))
-#endif
-
-# endif
+# endif /* End of < 5.17.5 */
#endif
#ifndef PERL_PV_ESCAPE_QUOTE
# define PERL_PV_ESCAPE_QUOTE 0x0001
diff --git a/Master/tlpkg/tlperl/lib/Devel/Peek.pm b/Master/tlpkg/tlperl/lib/Devel/Peek.pm
index 1879bf9d6ed..f539650efb8 100644
--- a/Master/tlpkg/tlperl/lib/Devel/Peek.pm
+++ b/Master/tlpkg/tlperl/lib/Devel/Peek.pm
@@ -3,14 +3,13 @@
package Devel::Peek;
-$VERSION = '1.30';
+$VERSION = '1.33';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
require Exporter;
require XSLoader;
-@ISA = qw(Exporter);
@EXPORT = qw(Dump mstat DeadCode DumpArray DumpWithOP DumpProg
fill_mstats mstats_fillhash mstats2hash runops_debug debug_flags);
@EXPORT_OK = qw(SvREFCNT CvGV);
diff --git a/Master/tlpkg/tlperl/lib/Digest.pm b/Master/tlpkg/tlperl/lib/Digest.pm
index 97f55d048a1..b62ef64d859 100644
--- a/Master/tlpkg/tlperl/lib/Digest.pm
+++ b/Master/tlpkg/tlperl/lib/Digest.pm
@@ -3,7 +3,7 @@ package Digest;
use strict;
use warnings;
-our $VERSION = "1.19";
+our $VERSION = "1.20";
our %MMAP = (
"SHA-1" => [ [ "Digest::SHA", 1 ], "Digest::SHA1", [ "Digest::SHA2", 1 ] ],
diff --git a/Master/tlpkg/tlperl/lib/Digest/MD5.pm b/Master/tlpkg/tlperl/lib/Digest/MD5.pm
index 81e5142e4d8..65a86f4e358 100644
--- a/Master/tlpkg/tlperl/lib/Digest/MD5.pm
+++ b/Master/tlpkg/tlperl/lib/Digest/MD5.pm
@@ -3,7 +3,7 @@ package Digest::MD5;
use strict;
use warnings;
-our $VERSION = '2.58';
+our $VERSION = '2.58_01';
require Exporter;
*import = \&Exporter::import;
diff --git a/Master/tlpkg/tlperl/lib/Digest/SHA.pm b/Master/tlpkg/tlperl/lib/Digest/SHA.pm
index dccc0e7aeb3..37a31e969aa 100644
--- a/Master/tlpkg/tlperl/lib/Digest/SHA.pm
+++ b/Master/tlpkg/tlperl/lib/Digest/SHA.pm
@@ -6,9 +6,10 @@ use strict;
use warnings;
use vars qw($VERSION @ISA @EXPORT_OK $errmsg);
use Fcntl qw(O_RDONLY O_RDWR);
+use Cwd qw(getcwd);
use integer;
-$VERSION = '6.02';
+$VERSION = '6.04';
require Exporter;
@ISA = qw(Exporter);
@@ -120,9 +121,18 @@ sub addfile {
## by attempting to open with mode O_RDWR
local *FH;
- $file eq '-' and open(FH, '< -')
- or sysopen(FH, $file, -d $file ? O_RDWR : O_RDONLY)
+ if ($file eq '-') {
+ if (-d STDIN) {
+ sysopen(FH, getcwd(), O_RDWR)
+ or _bail('Open failed');
+ }
+ open(FH, '< -')
+ or _bail('Open failed');
+ }
+ else {
+ sysopen(FH, $file, -d $file ? O_RDWR : O_RDONLY)
or _bail('Open failed');
+ }
if ($BITS) {
my ($n, $buf) = (0, "");
@@ -810,7 +820,7 @@ darkness and moored it in so perfect a calm and in so brilliant a light"
=head1 COPYRIGHT AND LICENSE
-Copyright (C) 2003-2018 Mark Shelor
+Copyright (C) 2003-2022 Mark Shelor
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/Digest/base.pm b/Master/tlpkg/tlperl/lib/Digest/base.pm
index 0f3afcbda96..539559b261e 100644
--- a/Master/tlpkg/tlperl/lib/Digest/base.pm
+++ b/Master/tlpkg/tlperl/lib/Digest/base.pm
@@ -3,7 +3,7 @@ package Digest::base;
use strict;
use warnings;
-our $VERSION = "1.19";
+our $VERSION = "1.20";
# subclass is supposed to implement at least these
sub new;
diff --git a/Master/tlpkg/tlperl/lib/Digest/file.pm b/Master/tlpkg/tlperl/lib/Digest/file.pm
index 7d46938c0cd..088fabf4b94 100644
--- a/Master/tlpkg/tlperl/lib/Digest/file.pm
+++ b/Master/tlpkg/tlperl/lib/Digest/file.pm
@@ -7,7 +7,7 @@ use Exporter ();
use Carp qw(croak);
use Digest ();
-our $VERSION = "1.19";
+our $VERSION = "1.20";
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(digest_file_ctx digest_file digest_file_hex digest_file_base64);
diff --git a/Master/tlpkg/tlperl/lib/DynaLoader.pm b/Master/tlpkg/tlperl/lib/DynaLoader.pm
index a4d71b4a377..62369daf7c8 100644
--- a/Master/tlpkg/tlperl/lib/DynaLoader.pm
+++ b/Master/tlpkg/tlperl/lib/DynaLoader.pm
@@ -1,6 +1,8 @@
# Generated from DynaLoader_pm.PL, this file is unique for every OS
+use strict;
+
package DynaLoader;
# And Gandalf said: 'Many folk like to know beforehand what is to
@@ -16,9 +18,17 @@ package DynaLoader;
# Tim.Bunce@ig.co.uk, August 1994
BEGIN {
- $VERSION = '1.50';
+ our $VERSION = '1.54';
}
+# Note: in almost any other piece of code "our" would have been a better
+# option than "use vars", but DynaLoader's bootstrap files need the
+# side effect of the variable being declared in any scope whose current
+# package is DynaLoader, not just the current lexical one.
+use vars qw(@dl_library_path @dl_resolve_using @dl_require_symbols
+ $dl_debug @dl_librefs @dl_modules @dl_shared_objects
+ $dl_dlext $dl_so $dlsrc @args $module @dirs $file $bscode);
+
use Config;
# enable debug/trace messages from DynaLoader perl code
@@ -40,8 +50,11 @@ sub dl_load_flags { 0x00 }
($dl_dlext, $dl_so, $dlsrc) = @Config::Config{qw(dlext so dlsrc)};
-
-$do_expand = 0;
+# Some systems need special handling to expand file specifications
+# (VMS support by Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU>)
+# See dl_expandspec() for more details. Should be harmless but
+# inefficient to define on systems that don't need it.
+my $do_expand = 0;
@dl_require_symbols = (); # names of symbols we need
@dl_library_path = (); # path to look for files
@@ -96,6 +109,8 @@ sub croak { require Carp; Carp::croak(@_) }
sub bootstrap_inherit {
my $module = $_[0];
+
+ no strict qw/refs vars/;
local *isa = *{"$module\::ISA"};
local @isa = (@isa, 'DynaLoader');
# Cannot goto due to delocalization. Will report errors on a wrong line?
@@ -131,8 +146,6 @@ sub bootstrap {
# It may also edit @modparts if required.
$modfname = &mod2fname(\@modparts) if defined &mod2fname;
-
-
my $modpname = join('/',@modparts);
print STDERR "DynaLoader::bootstrap for $module ",
diff --git a/Master/tlpkg/tlperl/lib/Encode.pm b/Master/tlpkg/tlperl/lib/Encode.pm
index d3eb3c1b113..8a2727fc443 100644
--- a/Master/tlpkg/tlperl/lib/Encode.pm
+++ b/Master/tlpkg/tlperl/lib/Encode.pm
@@ -1,5 +1,5 @@
#
-# $Id: Encode.pm,v 3.08 2020/12/02 01:27:44 dankogai Exp $
+# $Id: Encode.pm,v 3.19 2022/08/04 04:42:30 dankogai Exp $
#
package Encode;
use strict;
@@ -7,7 +7,7 @@ use warnings;
use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG};
our $VERSION;
BEGIN {
- $VERSION = sprintf "%d.%02d", q$Revision: 3.08 $ =~ /(\d+)/g;
+ $VERSION = sprintf "%d.%02d", q$Revision: 3.19 $ =~ /(\d+)/g;
require XSLoader;
XSLoader::load( __PACKAGE__, $VERSION );
}
@@ -65,8 +65,8 @@ require Encode::Config;
eval {
local $SIG{__DIE__};
local $SIG{__WARN__};
- local @INC = @INC || ();
- pop @INC if $INC[-1] eq '.';
+ local @INC = @INC;
+ pop @INC if @INC && $INC[-1] eq '.';
require Encode::ConfigLocal;
};
@@ -202,18 +202,6 @@ if ($ON_EBCDIC) {
$_[1] = '' if $chk;
return $res;
}
-} else {
- package Encode::Internal;
- use parent 'Encode::Encoding';
- my $obj = bless { Name => "Internal" } => "Encode::Internal";
- Encode::define_encoding($obj, 'Unicode');
- sub decode {
- my ( undef, $str, $chk ) = @_;
- utf8::upgrade($str);
- $_[1] = '' if $chk;
- return $str;
- }
- *encode = \&decode;
}
{
@@ -499,19 +487,25 @@ followed by C<encode> as follows:
$octets = encode_utf8($string);
+B<WARNING>: L<This function can produce invalid UTF-8!|/UTF-8 vs. utf8 vs. UTF8>
+Do not use it for data exchange.
+Unless you want Perl's older "lax" mode, prefer
+C<$octets = encode("UTF-8", $string)>.
+
Equivalent to C<$octets = encode("utf8", $string)>. The characters in
$string are encoded in Perl's internal format, and the result is returned
as a sequence of octets. Because all possible characters in Perl have a
(loose, not strict) utf8 representation, this function cannot fail.
-B<WARNING>: do not use this function for data exchange as it can produce
-not strict utf8 $octets! For strictly valid UTF-8 output use
-C<$octets = encode("UTF-8", $string)>.
-
=head3 decode_utf8
$string = decode_utf8($octets [, CHECK]);
+B<WARNING>: L<This function accepts invalid UTF-8!|/UTF-8 vs. utf8 vs. UTF8>
+Do not use it for data exchange.
+Unless you want Perl's older "lax" mode, prefer
+C<$string = decode("UTF-8", $octets [, CHECK])>.
+
Equivalent to C<$string = decode("utf8", $octets [, CHECK])>.
The sequence of octets represented by $octets is decoded
from (loose, not strict) utf8 into a sequence of logical characters.
@@ -519,10 +513,6 @@ Because not all sequences of octets are valid not strict utf8,
it is quite possible for this function to fail.
For CHECK, see L</"Handling Malformed Data">.
-B<WARNING>: do not use this function for data exchange as it can produce
-$string with not strict utf8 representation! For strictly valid UTF-8
-$string representation use C<$string = decode("UTF-8", $octets [, CHECK])>.
-
B<CAVEAT>: the input I<$octets> might be modified in-place depending on
what is set in CHECK. See L</LEAVE_SRC> if you want your inputs to be
left unchanged.
@@ -927,6 +917,20 @@ important distinction between C<"UTF-8"> and C<"utf8">.
encode("utf8", "\x{FFFF_FFFF}", 1); # okay
encode("UTF-8", "\x{FFFF_FFFF}", 1); # croaks
+This distinction is also important for decoding. In the following,
+C<$s> stores character U+200000, which exceeds UTF-8's allowed range.
+C<$s> thus stores an invalid Unicode code point:
+
+ $s = decode("utf8", "\xf8\x88\x80\x80\x80");
+
+C<"UTF-8">, by contrast, will either coerce the input to something valid:
+
+ $s = decode("UTF-8", "\xf8\x88\x80\x80\x80"); # U+FFFD
+
+.. or croak:
+
+ decode("UTF-8", "\xf8\x88\x80\x80\x80", FB_CROAK|LEAVE_SRC);
+
In the C<Encode> module, C<"UTF-8"> is actually a canonical name for
C<"utf-8-strict">. That hyphen between the C<"UTF"> and the C<"8"> is
critical; without it, C<Encode> goes "liberal" and (perhaps overly-)permissive:
diff --git a/Master/tlpkg/tlperl/lib/Encode/Alias.pm b/Master/tlpkg/tlperl/lib/Encode/Alias.pm
index dbfa01b6182..cca72a3d849 100644
--- a/Master/tlpkg/tlperl/lib/Encode/Alias.pm
+++ b/Master/tlpkg/tlperl/lib/Encode/Alias.pm
@@ -1,7 +1,7 @@
package Encode::Alias;
use strict;
use warnings;
-our $VERSION = do { my @r = ( q$Revision: 2.24 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
+our $VERSION = do { my @r = ( q$Revision: 2.25 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
use constant DEBUG => !!$ENV{PERL_ENCODE_DEBUG};
use Exporter 'import';
@@ -162,6 +162,10 @@ sub init_aliases {
# Allow variants of iso-8859-1 etc.
define_alias( qr/\biso[-_]?(\d+)[-_](\d+)$/i => '"iso-$1-$2"' );
+ # ISO-8859-8-I => ISO-8859-8
+ # https://en.wikipedia.org/wiki/ISO-8859-8-I
+ define_alias( qr/\biso[-_]8859[-_]8[-_]I$/i => '"iso-8859-8"' );
+
# At least HP-UX has these.
define_alias( qr/\biso8859(\d+)$/i => '"iso-8859-$1"' );
diff --git a/Master/tlpkg/tlperl/lib/Encode/GSM0338.pm b/Master/tlpkg/tlperl/lib/Encode/GSM0338.pm
index 644d4452851..b149c6dc9ca 100644
--- a/Master/tlpkg/tlperl/lib/Encode/GSM0338.pm
+++ b/Master/tlpkg/tlperl/lib/Encode/GSM0338.pm
@@ -1,5 +1,5 @@
#
-# $Id: GSM0338.pm,v 2.9 2020/12/02 01:28:17 dankogai Exp dankogai $
+# $Id: GSM0338.pm,v 2.10 2021/05/24 10:56:53 dankogai Exp $
#
package Encode::GSM0338;
@@ -8,7 +8,7 @@ use warnings;
use Carp;
use vars qw($VERSION);
-$VERSION = do { my @r = ( q$Revision: 2.9 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
+$VERSION = do { my @r = ( q$Revision: 2.10 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
use Encode qw(:fallbacks);
@@ -159,12 +159,12 @@ our %UNI2GSM = (
"\x{20AC}" => "\x1B\x65", # EURO SIGN
);
our %GSM2UNI = reverse %UNI2GSM;
-our $ESC = "\x1b";
+our $ESC = "\x1b";
sub decode ($$;$) {
my ( $obj, $bytes, $chk ) = @_;
return undef unless defined $bytes;
- my $str = substr($bytes, 0, 0); # to propagate taintedness;
+ my $str = substr( $bytes, 0, 0 ); # to propagate taintedness;
while ( length $bytes ) {
my $seq = '';
my $c;
@@ -173,53 +173,57 @@ sub decode ($$;$) {
$seq .= $c;
} while ( length $bytes and $c eq $ESC );
my $u =
- exists $GSM2UNI{$seq}
- ? $GSM2UNI{$seq}
- : ($chk && ref $chk eq 'CODE')
- ? $chk->( unpack 'C*', $seq )
- : "\x{FFFD}";
+ exists $GSM2UNI{$seq} ? $GSM2UNI{$seq}
+ : ( $chk && ref $chk eq 'CODE' ) ? $chk->( unpack 'C*', $seq )
+ : "\x{FFFD}";
if ( not exists $GSM2UNI{$seq} and $chk and not ref $chk ) {
- if ( substr($seq, 0, 1) eq $ESC and ($chk & Encode::STOP_AT_PARTIAL) ) {
+ if ( substr( $seq, 0, 1 ) eq $ESC
+ and ( $chk & Encode::STOP_AT_PARTIAL ) )
+ {
$bytes .= $seq;
last;
}
- croak join( '', map { sprintf "\\x%02X", $_ } unpack 'C*', $seq ) . ' does not map to Unicode' if $chk & Encode::DIE_ON_ERR;
- carp join( '', map { sprintf "\\x%02X", $_ } unpack 'C*', $seq ) . ' does not map to Unicode' if $chk & Encode::WARN_ON_ERR;
- if ($chk & Encode::RETURN_ON_ERR) {
+ croak join( '', map { sprintf "\\x%02X", $_ } unpack 'C*', $seq )
+ . ' does not map to Unicode'
+ if $chk & Encode::DIE_ON_ERR;
+ carp join( '', map { sprintf "\\x%02X", $_ } unpack 'C*', $seq )
+ . ' does not map to Unicode'
+ if $chk & Encode::WARN_ON_ERR;
+ if ( $chk & Encode::RETURN_ON_ERR ) {
$bytes .= $seq;
last;
}
}
$str .= $u;
}
- $_[1] = $bytes if not ref $chk and $chk and !($chk & Encode::LEAVE_SRC);
+ $_[1] = $bytes if not ref $chk and $chk and !( $chk & Encode::LEAVE_SRC );
return $str;
}
sub encode($$;$) {
my ( $obj, $str, $chk ) = @_;
return undef unless defined $str;
- my $bytes = substr($str, 0, 0); # to propagate taintedness
+ my $bytes = substr( $str, 0, 0 ); # to propagate taintedness
while ( length $str ) {
my $u = substr( $str, 0, 1, '' );
my $c;
my $seq =
- exists $UNI2GSM{$u}
- ? $UNI2GSM{$u}
- : ($chk && ref $chk eq 'CODE')
- ? $chk->( ord($u) )
- : $UNI2GSM{'?'};
+ exists $UNI2GSM{$u} ? $UNI2GSM{$u}
+ : ( $chk && ref $chk eq 'CODE' ) ? $chk->( ord($u) )
+ : $UNI2GSM{'?'};
if ( not exists $UNI2GSM{$u} and $chk and not ref $chk ) {
- croak sprintf( "\\x{%04x} does not map to %s", ord($u), $obj->name ) if $chk & Encode::DIE_ON_ERR;
- carp sprintf( "\\x{%04x} does not map to %s", ord($u), $obj->name ) if $chk & Encode::WARN_ON_ERR;
- if ($chk & Encode::RETURN_ON_ERR) {
+ croak sprintf( "\\x{%04x} does not map to %s", ord($u), $obj->name )
+ if $chk & Encode::DIE_ON_ERR;
+ carp sprintf( "\\x{%04x} does not map to %s", ord($u), $obj->name )
+ if $chk & Encode::WARN_ON_ERR;
+ if ( $chk & Encode::RETURN_ON_ERR ) {
$str .= $u;
last;
}
}
$bytes .= $seq;
}
- $_[1] = $str if not ref $chk and $chk and !($chk & Encode::LEAVE_SRC);
+ $_[1] = $str if not ref $chk and $chk and !( $chk & Encode::LEAVE_SRC );
return $bytes;
}
diff --git a/Master/tlpkg/tlperl/lib/Encode/JP.pm b/Master/tlpkg/tlperl/lib/Encode/JP.pm
index 4251170c561..09efaaa8c31 100644
--- a/Master/tlpkg/tlperl/lib/Encode/JP.pm
+++ b/Master/tlpkg/tlperl/lib/Encode/JP.pm
@@ -7,7 +7,7 @@ BEGIN {
use strict;
use warnings;
use Encode;
-our $VERSION = do { my @r = ( q$Revision: 2.4 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
+our $VERSION = do { my @r = ( q$Revision: 2.5 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
use XSLoader;
XSLoader::load( __PACKAGE__, $VERSION );
@@ -50,8 +50,8 @@ supported are as follows.
cp932 /\bwindows-31j$/i Code Page 932
= Shift JIS + MS/IBM vendor mappings
jis0201-raw JIS0201, raw format
- jis0208-raw JIS0201, raw format
- jis0212-raw JIS0201, raw format
+ jis0208-raw JIS0208, raw format
+ jis0212-raw JIS0212, raw format
--------------------------------------------------------------------
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/Encode/MIME/Header.pm b/Master/tlpkg/tlperl/lib/Encode/MIME/Header.pm
index 848de99fa43..4d4574447e9 100644
--- a/Master/tlpkg/tlperl/lib/Encode/MIME/Header.pm
+++ b/Master/tlpkg/tlperl/lib/Encode/MIME/Header.pm
@@ -2,7 +2,7 @@ package Encode::MIME::Header;
use strict;
use warnings;
-our $VERSION = do { my @r = ( q$Revision: 2.28 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
+our $VERSION = do { my @r = ( q$Revision: 2.29 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
use Carp ();
use Encode ();
@@ -55,7 +55,7 @@ my $re_capture_encoded_word_split = qr/=\?($re_charset)((?:\*$re_language)?)\?($
# in strict mode check also for valid base64 characters and also for valid quoted printable codes
my $re_encoding_strict_b = qr/[Bb]/;
my $re_encoding_strict_q = qr/[Qq]/;
-my $re_encoded_text_strict_b = qr/[0-9A-Za-z\+\/]*={0,2}/;
+my $re_encoded_text_strict_b = qr/(?:[0-9A-Za-z\+\/]{4})*(?:[0-9A-Za-z\+\/]{2}==|[0-9A-Za-z\+\/]{3}=|)/;
my $re_encoded_text_strict_q = qr/(?:[\x21-\x3C\x3E\x40-\x7E]|=[0-9A-Fa-f]{2})*/; # NOTE: first part are printable US-ASCII except ?, =, SPACE and TAB
my $re_encoded_word_strict = qr/=\?$re_charset(?:\*$re_language)?\?(?:$re_encoding_strict_b\?$re_encoded_text_strict_b|$re_encoding_strict_q\?$re_encoded_text_strict_q)\?=/;
my $re_capture_encoded_word_strict = qr/=\?($re_charset)((?:\*$re_language)?)\?($re_encoding_strict_b\?$re_encoded_text_strict_b|$re_encoding_strict_q\?$re_encoded_text_strict_q)\?=/;
@@ -94,6 +94,10 @@ sub decode($$;$) {
$stop = 1 unless length($line) or length($sep);
+ # in non strict mode append missing '=' padding characters for b words
+ # fixes below concatenation of consecutive encoded mime words
+ 1 while not $STRICT_DECODE and $line =~ s/(=\?$re_charset(?:\*$re_language)?\?[Bb]\?)((?:[^\?]{4})*[^\?]{1,3})(\?=)/$1.$2.('='x(4-length($2)%4)).$3/se;
+
# NOTE: this code partially could break $chk support
# in non strict mode concat consecutive encoded mime words with same charset, language and encoding
# fixes breaking inside multi-byte characters
diff --git a/Master/tlpkg/tlperl/lib/Encode/Unicode.pm b/Master/tlpkg/tlperl/lib/Encode/Unicode.pm
index 540337e94f6..965803772fc 100644
--- a/Master/tlpkg/tlperl/lib/Encode/Unicode.pm
+++ b/Master/tlpkg/tlperl/lib/Encode/Unicode.pm
@@ -3,7 +3,7 @@ package Encode::Unicode;
use strict;
use warnings;
-our $VERSION = do { my @r = ( q$Revision: 2.18 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
+our $VERSION = do { my @r = ( q$Revision: 2.20 $ =~ /\d+/g ); sprintf "%d." . "%02d" x $#r, @r };
use XSLoader;
XSLoader::load( __PACKAGE__, $VERSION );
@@ -170,7 +170,7 @@ simply treated as a normal character (ZERO WIDTH NO-BREAK SPACE).
When BE or LE is omitted during decode(), it checks if BOM is at the
beginning of the string; if one is found, the endianness is set to
-what the BOM says.
+what the BOM says.
=item *
@@ -258,15 +258,15 @@ Consider that "division by zero" of Encode :)
=head1 SEE ALSO
-L<Encode>, L<Encode::Unicode::UTF7>, L<http://www.unicode.org/glossary/>,
-L<http://www.unicode.org/unicode/faq/utf_bom.html>,
+L<Encode>, L<Encode::Unicode::UTF7>, L<https://www.unicode.org/glossary/>,
+L<https://www.unicode.org/faq/utf_bom.html>,
RFC 2781 L<http://www.ietf.org/rfc/rfc2781.txt>,
-The whole Unicode standard L<http://www.unicode.org/unicode/uni2book/u2.html>
+The whole Unicode standard L<https://www.unicode.org/standard/standard.html>
-Ch. 15, pp. 403 of C<Programming Perl (3rd Edition)>
-by Larry Wall, Tom Christiansen, Jon Orwant;
-O'Reilly & Associates; ISBN 0-596-00027-8
+Ch. 6 pp. 275 of C<Programming Perl (3rd Edition)>
+by Tom Christiansen, brian d foy & Larry Wall;
+O'Reilly & Associates; ISBN 978-0-596-00492-7
=cut
diff --git a/Master/tlpkg/tlperl/lib/Env.pm b/Master/tlpkg/tlperl/lib/Env.pm
index eaf30f15a39..991afddc025 100644
--- a/Master/tlpkg/tlperl/lib/Env.pm
+++ b/Master/tlpkg/tlperl/lib/Env.pm
@@ -1,6 +1,6 @@
package Env;
-our $VERSION = '1.05';
+our $VERSION = '1.06';
=head1 NAME
@@ -75,7 +75,7 @@ Gregor N. Purdy E<lt>F<gregor@focusresearch.com>E<gt>
=cut
sub import {
- my ($callpack) = caller(0);
+ my $callpack = caller(0);
my $pack = shift;
my @vars = grep /^[\$\@]?[A-Za-z_]\w*$/, (@_ ? @_ : keys(%ENV));
return unless @vars;
diff --git a/Master/tlpkg/tlperl/lib/Errno.pm b/Master/tlpkg/tlperl/lib/Errno.pm
index e044eb982a1..d19804e0947 100644
--- a/Master/tlpkg/tlperl/lib/Errno.pm
+++ b/Master/tlpkg/tlperl/lib/Errno.pm
@@ -5,17 +5,16 @@
#
package Errno;
-require Exporter;
+use Exporter 'import';
use strict;
use Config;
"$Config{'archname'}-$Config{'osvers'}" eq
-"MSWin32-x64-multi-thread-10.0.19042.508" or
- die "Errno architecture (MSWin32-x64-multi-thread-10.0.19042.508) does not match executable architecture ($Config{'archname'}-$Config{'osvers'})";
+"MSWin32-x64-multi-thread-10.0.22631.3085" or
+ die "Errno architecture (MSWin32-x64-multi-thread-10.0.22631.3085) does not match executable architecture ($Config{'archname'}-$Config{'osvers'})";
-our $VERSION = "1.33";
+our $VERSION = "1.37";
$VERSION = eval $VERSION;
-our @ISA = 'Exporter';
my %err;
@@ -25,6 +24,7 @@ BEGIN {
ENUM_CURRENT_SETTINGS => -1,
EXCEPTION_CONTINUE_EXECUTION => -1,
EC_ENABLEALL => 0,
+ EFS_SUBVER_UNKNOWN => 0,
ELF_CULTURE_LATIN => 0,
ELF_VERSION => 0,
EMARCH_ENC_I17_IMM41c_INST_WORD_POS_X => 0,
@@ -43,10 +43,12 @@ BEGIN {
EXCEPTION_CONTINUE_SEARCH => 0,
EXCEPTION_READ_FAULT => 0,
EXIT_SUCCESS => 0,
- ExceptionContinueExecution => 0,
EC_LEFTMARGIN => 1,
EDD_GET_DEVICE_INTERFACE_NAME => 1,
EEInfoPreviousRecordsMissing => 1,
+ EFS_EFS_SUBVER_EFS_CERT => 1,
+ EFS_METADATA_ADD_USER => 1,
+ EFS_TRACKED_OFFSET_HEADER_FLAG => 1,
EFS_USE_RECOVERY_KEYS => 1,
EIMES_GETCOMPSTRATONCE => 1,
ELEMENT_STATUS_FULL => 1,
@@ -60,6 +62,9 @@ BEGIN {
EMSIS_COMPOSITIONSTRING => 1,
ENABLE_PROCESSED_INPUT => 1,
ENABLE_PROCESSED_OUTPUT => 1,
+ ENCLAVE_TYPE_SGX => 1,
+ ENCLAVE_VBS_FLAG_DEBUG => 1,
+ ENCRYPTED_DATA_INFO_SPARSE_FILE => 1,
ENCRYPTION_FORMAT_DEFAULT => 1,
ENDSESSION_CLOSEAPP => 1,
ENLISTMENT_MAXIMUM_OPTION => 1,
@@ -85,20 +90,21 @@ BEGIN {
EXCEPTION_NONCONTINUABLE => 1,
EXCEPTION_WRITE_FAULT => 1,
EXIT_FAILURE => 1,
- ExceptionContinueSearch => 1,
EC_QUERYWAITING => 2,
EC_RIGHTMARGIN => 2,
EDS_RAWMODE => 2,
EEInfoNextRecordsMissing => 2,
+ EFS_METADATA_REMOVE_USER => 2,
+ EFS_PFILE_SUBVER_RMS => 2,
EIMES_CANCELCOMPSTRINFOCUS => 2,
ELEMENT_STATUS_IMPEXP => 2,
EMARCH_ENC_I17_IMM41c_INST_WORD_X => 2,
EMR_POLYBEZIER => 2,
ENABLE_LINE_INPUT => 2,
ENABLE_WRAP_AT_EOL_OUTPUT => 2,
+ ENCLAVE_TYPE_SGX2 => 2,
ENLISTMENT_SET_INFORMATION => 2,
ENOENT => 2,
- ENOFILE => 2,
ERROR_FILE_NOT_FOUND => 2,
ERROR_LABEL_QUESTIONABLE => 2,
ESB_DISABLE_DOWN => 2,
@@ -117,7 +123,7 @@ BEGIN {
EWX_REBOOT => 2,
EXCEPTION_UNWINDING => 2,
EXTEND_IEPORT => 2,
- ExceptionNestedException => 2,
+ EFS_PFILE_SUBVER_APPX => 3,
EMARCH_ENC_I17_IC_INST_WORD_X => 3,
EMARCH_ENC_I17_IMM5C_INST_WORD_X => 3,
EMARCH_ENC_I17_IMM7B_INST_WORD_X => 3,
@@ -128,8 +134,9 @@ BEGIN {
ESB_DISABLE_BOTH => 3,
ESRCH => 3,
EVENT_SYSTEM_FOREGROUND => 3,
- ExceptionCollidedUnwind => 3,
+ EDS_ROTATEDMODE => 4,
EEInfoUseFileTime => 4,
+ EFS_METADATA_REPLACE_USER => 4,
EIMES_COMPLETECOMPSTRKILLFOCUS => 4,
EINTR => 4,
ELEMENT_STATUS_EXCEPT => 4,
@@ -137,6 +144,7 @@ BEGIN {
EMARCH_ENC_I17_IMM7B_INST_WORD_POS_X => 4,
EMR_POLYLINE => 4,
ENABLE_ECHO_INPUT => 4,
+ ENABLE_VIRTUAL_TERMINAL_PROCESSING => 4,
ENLISTMENT_RECOVER => 4,
ERROR_SLOT_NOT_PRESENT => 4,
ERROR_TOO_MANY_OPEN_FILES => 4,
@@ -152,8 +160,8 @@ BEGIN {
EXCEPTION_EXIT_UNWIND => 4,
EXIT_THREAD_DEBUG_EVENT => 4,
EXPORT_PRIVATE_KEYS => 4,
- ExceptionExecuteHandler => 4,
EDGE_RAISED => 5,
+ EFS_COMPATIBILITY_VERSION_NCRYPT_PROTECTOR => 5,
EIO => 5,
EMARCH_ENC_I17_IMM5C_SIZE_X => 5,
EMR_POLYBEZIERTO => 5,
@@ -161,6 +169,7 @@ BEGIN {
EVENT_SYSTEM_MENUEND => 5,
EXIT_PROCESS_DEBUG_EVENT => 5,
EDGE_ETCHED => 6,
+ EFS_COMPATIBILITY_VERSION_PFILE_PROTECTOR => 6,
EMR_POLYLINETO => 6,
ENXIO => 6,
ERROR_INVALID_HANDLE => 6,
@@ -173,6 +182,7 @@ BEGIN {
EVENT_SYSTEM_MENUPOPUPEND => 7,
EC_DISABLE => 8,
EFSRPC_SECURE_ONLY => 8,
+ EFS_METADATA_GENERAL_OP => 8,
ELEMENT_STATUS_ACCESS => 8,
EMARCH_ENC_I17_IMM41b_SIZE_X => 8,
EMR_POLYPOLYGON => 8,
@@ -180,6 +190,7 @@ BEGIN {
ENLISTMENT_SUBORDINATE_RIGHTS => 8,
ENOEXEC => 8,
ERROR_DRIVE_NOT_INSTALLED => 8,
+ ERROR_HISTORY_DIRECTORY_ENTRY_DEFAULT_COUNT => 8,
ERROR_NOT_ENOUGH_MEMORY => 8,
ES_UPPERCASE => 8,
EVENTLOG_AUDIT_SUCCESS => 8,
@@ -229,10 +240,14 @@ BEGIN {
EVENT_SYSTEM_DRAGDROPEND => 15,
EXCEPTION_MAXIMUM_PARAMETERS => 15,
EBUSY => 16,
+ EFS_DROP_ALTERNATE_STREAMS => 16,
ELEMENT_STATUS_EXENAB => 16,
EMARCH_ENC_I17_IMM5C_VAL_POS_X => 16,
EMR_SETMAPPERFLAGS => 16,
+ ENABLE_LVB_GRID_WORLDWIDE => 16,
ENABLE_MOUSE_INPUT => 16,
+ ENCLAVE_SHORT_ID_LENGTH => 16,
+ ENCLAVE_TYPE_VBS => 16,
ENLISTMENT_SUPERIOR_RIGHTS => 16,
ERROR_CURRENT_DIRECTORY => 16,
ERROR_TRAY_MALFUNCTION => 16,
@@ -246,6 +261,7 @@ BEGIN {
EXCEPTION_NESTED_CALL => 16,
EEXIST => 17,
EMR_SETMAPMODE => 17,
+ ENCLAVE_TYPE_VBS_BASIC => 17,
ERROR_INIT_STATUS_NEEDED => 17,
ERROR_NOT_SAME_DEVICE => 17,
EVENT_SYSTEM_DIALOGEND => 17,
@@ -308,9 +324,11 @@ BEGIN {
EMARCH_ENC_I17_IMM41b_VAL_POS_X => 32,
EMR_SCALEWINDOWEXTEX => 32,
ENABLE_INSERT_MODE => 32,
+ ENCLAVE_LONG_ID_LENGTH => 32,
EPIPE => 32,
ERROR_SHARING_VIOLATION => 32,
ES_PASSWORD => 32,
+ EVENT_SYSTEM_DESKTOPSWITCH => 32,
EV_RLSD => 32,
EWX_QUICKRESOLVE => 32,
EXCEPTION_TARGET_UNWIND => 32,
@@ -327,18 +345,23 @@ BEGIN {
EDEADLOCK => 36,
EMR_MODIFYWORLDTRANSFORM => 36,
ERROR_SHARING_BUFFER_EXCEEDED => 36,
+ EVENT_SYSTEM_SWITCHER_APPGRABBED => 36,
EMR_SELECTOBJECT => 37,
+ EVENT_SYSTEM_SWITCHER_APPOVERTARGET => 37,
EMR_CREATEPEN => 38,
ENAMETOOLONG => 38,
ERROR_HANDLE_EOF => 38,
+ EVENT_SYSTEM_SWITCHER_APPDROPPED => 38,
EMR_CREATEBRUSHINDIRECT => 39,
ENOLCK => 39,
ERROR_HANDLE_DISK_FULL => 39,
+ EVENT_SYSTEM_SWITCHER_CANCELLED => 39,
EMARCH_ENC_I17_IMM41c_VAL_POS_X => 40,
EMR_DELETEOBJECT => 40,
ENOSYS => 40,
EMR_ANGLEARC => 41,
ENOTEMPTY => 41,
+ EVENT_SYSTEM_IME_KEY_NOTIFICATION => 41,
EILSEQ => 42,
EMR_ELLIPSE => 42,
EMR_RECTANGLE => 43,
@@ -385,6 +408,7 @@ BEGIN {
ES_AUTOVSCROLL => 64,
ES_AWAYMODE_REQUIRED => 64,
EV_BREAK => 64,
+ EWX_RESTARTAPPS => 64,
EXCEPTION_COLLIDED_UNWIND => 64,
EMR_FLATTENPATH => 65,
ERROR_NETWORK_ACCESS_DENIED => 65,
@@ -524,10 +548,12 @@ BEGIN {
ES_AUTOHSCROLL => 128,
ETO_RTLREADING => 128,
EV_ERR => 128,
+ EXCEPTION_SOFTWARE_ORIGINATE => 128,
ENOTSUP => 129,
ERROR_CHILD_NOT_COMPLETE => 129,
EOPNOTSUPP => 130,
ERROR_DIRECT_ACCESS_HANDLE => 130,
+ EOTHER => 131,
ERROR_NEGATIVE_SEEK => 131,
EOVERFLOW => 132,
ERROR_SEEK_ON_DEVICE => 132,
@@ -572,6 +598,7 @@ BEGIN {
ERROR_MAX_THRDS_REACHED => 164,
ERROR_LOCK_FAILED => 167,
ERROR_BUSY => 170,
+ ERROR_DEVICE_SUPPORT_IN_PROGRESS => 171,
ERROR_CANCEL_VIOLATION => 173,
ERROR_ATOMIC_LOCKS_NOT_SUPPORTED => 174,
EM_GETSEL => 176,
@@ -648,6 +675,7 @@ BEGIN {
ERROR_EXE_MACHINE_TYPE_MISMATCH => 216,
EM_GETIMESTATUS => 217,
ERROR_EXE_CANNOT_MODIFY_SIGNED_BINARY => 217,
+ EM_ENABLEFEATURE => 218,
ERROR_EXE_CANNOT_MODIFY_STRONG_SIGNED_BINARY => 218,
ENABLE_DISABLE_AUTO_OFFLINE => 219,
ERROR_FILE_CHECKED_OUT => 220,
@@ -655,21 +683,26 @@ BEGIN {
ERROR_BAD_FILE_TYPE => 222,
ERROR_FILE_TOO_LARGE => 223,
ERROR_FORMS_AUTH_REQUIRED => 224,
+ ERROR_VIRUS_INFECTED => 225,
+ ERROR_VIRUS_DELETED => 226,
ERROR_PIPE_LOCAL => 229,
ERROR_BAD_PIPE => 230,
ERROR_PIPE_BUSY => 231,
ERROR_NO_DATA => 232,
ERROR_PIPE_NOT_CONNECTED => 233,
ERROR_MORE_DATA => 234,
+ ERROR_NO_WORK_DONE => 235,
EASTEUROPE_CHARSET => 238,
ERROR_VC_DISCONNECTED => 240,
ERROR_INVALID_EA_NAME => 254,
ERROR_EA_LIST_INCONSISTENT => 255,
+ EVENT_SYSTEM_END => 255,
ENABLE_AUTO_POSITION => 256,
ENHANCED_KEY => 256,
EN_SETFOCUS => 256,
ES_NOHIDESEL => 256,
EV_RING => 256,
+ EVENT_OEM_DEFINED_START => 257,
ERROR_NO_MORE_ITEMS => 259,
ERROR_CANNOT_COPY => 266,
ERROR_DIRECTORY => 267,
@@ -685,16 +718,386 @@ BEGIN {
ERROR_INVALID_OPLOCK_PROTOCOL => 301,
ERROR_DISK_TOO_FRAGMENTED => 302,
ERROR_DELETE_PENDING => 303,
+ ERROR_INCOMPATIBLE_WITH_GLOBAL_SHORT_NAME_REGISTRY_SETTING => 304,
+ ERROR_SHORT_NAMES_NOT_ENABLED_ON_VOLUME => 305,
+ ERROR_SECURITY_STREAM_IS_INCONSISTENT => 306,
+ ERROR_INVALID_LOCK_RANGE => 307,
+ ERROR_IMAGE_SUBSYSTEM_NOT_PRESENT => 308,
+ ERROR_NOTIFICATION_GUID_ALREADY_DEFINED => 309,
+ ERROR_INVALID_EXCEPTION_HANDLER => 310,
+ ERROR_DUPLICATE_PRIVILEGES => 311,
+ ERROR_NO_RANGES_PROCESSED => 312,
+ ERROR_NOT_ALLOWED_ON_SYSTEM_FILE => 313,
+ ERROR_DISK_RESOURCES_EXHAUSTED => 314,
ERROR_INVALID_TOKEN => 315,
+ ERROR_DEVICE_FEATURE_NOT_SUPPORTED => 316,
ERROR_MR_MID_NOT_FOUND => 317,
ERROR_SCOPE_NOT_FOUND => 318,
+ ERROR_UNDEFINED_SCOPE => 319,
+ ERROR_INVALID_CAP => 320,
+ ERROR_DEVICE_UNREACHABLE => 321,
+ ERROR_DEVICE_NO_RESOURCES => 322,
+ ERROR_DATA_CHECKSUM_ERROR => 323,
+ ERROR_INTERMIXED_KERNEL_EA_OPERATION => 324,
+ ERROR_FILE_LEVEL_TRIM_NOT_SUPPORTED => 326,
+ ERROR_OFFSET_ALIGNMENT_VIOLATION => 327,
+ ERROR_INVALID_FIELD_IN_PARAMETER_LIST => 328,
+ ERROR_OPERATION_IN_PROGRESS => 329,
+ ERROR_BAD_DEVICE_PATH => 330,
+ ERROR_TOO_MANY_DESCRIPTORS => 331,
+ ERROR_SCRUB_DATA_DISABLED => 332,
+ ERROR_NOT_REDUNDANT_STORAGE => 333,
+ ERROR_RESIDENT_FILE_NOT_SUPPORTED => 334,
+ ERROR_COMPRESSED_FILE_NOT_SUPPORTED => 335,
+ ERROR_DIRECTORY_NOT_SUPPORTED => 336,
+ ERROR_NOT_READ_FROM_COPY => 337,
+ ERROR_FT_WRITE_FAILURE => 338,
+ ERROR_FT_DI_SCAN_REQUIRED => 339,
+ ERROR_INVALID_KERNEL_INFO_VERSION => 340,
+ ERROR_INVALID_PEP_INFO_VERSION => 341,
+ ERROR_OBJECT_NOT_EXTERNALLY_BACKED => 342,
+ ERROR_EXTERNAL_BACKING_PROVIDER_UNKNOWN => 343,
+ ERROR_COMPRESSION_NOT_BENEFICIAL => 344,
+ ERROR_STORAGE_TOPOLOGY_ID_MISMATCH => 345,
+ ERROR_BLOCKED_BY_PARENTAL_CONTROLS => 346,
+ ERROR_BLOCK_TOO_MANY_REFERENCES => 347,
+ ERROR_MARKED_TO_DISALLOW_WRITES => 348,
+ ERROR_ENCLAVE_FAILURE => 349,
+ ERROR_FAIL_NOACTION_REBOOT => 350,
+ ERROR_FAIL_SHUTDOWN => 351,
+ ERROR_FAIL_RESTART => 352,
+ ERROR_MAX_SESSIONS_REACHED => 353,
+ ERROR_NETWORK_ACCESS_DENIED_EDP => 354,
+ ERROR_DEVICE_HINT_NAME_BUFFER_TOO_SMALL => 355,
+ ERROR_EDP_POLICY_DENIES_OPERATION => 356,
+ ERROR_EDP_DPL_POLICY_CANT_BE_SATISFIED => 357,
+ ERROR_CLOUD_FILE_SYNC_ROOT_METADATA_CORRUPT => 358,
+ ERROR_DEVICE_IN_MAINTENANCE => 359,
+ ERROR_NOT_SUPPORTED_ON_DAX => 360,
+ ERROR_DAX_MAPPING_EXISTS => 361,
+ ERROR_CLOUD_FILE_PROVIDER_NOT_RUNNING => 362,
+ ERROR_CLOUD_FILE_METADATA_CORRUPT => 363,
+ ERROR_CLOUD_FILE_METADATA_TOO_LARGE => 364,
+ ERROR_CLOUD_FILE_PROPERTY_BLOB_TOO_LARGE => 365,
+ ERROR_CLOUD_FILE_PROPERTY_BLOB_CHECKSUM_MISMATCH => 366,
+ ERROR_CHILD_PROCESS_BLOCKED => 367,
+ ERROR_STORAGE_LOST_DATA_PERSISTENCE => 368,
+ ERROR_FILE_SYSTEM_VIRTUALIZATION_UNAVAILABLE => 369,
+ ERROR_FILE_SYSTEM_VIRTUALIZATION_METADATA_CORRUPT => 370,
+ ERROR_FILE_SYSTEM_VIRTUALIZATION_BUSY => 371,
+ ERROR_FILE_SYSTEM_VIRTUALIZATION_PROVIDER_UNKNOWN => 372,
+ ERROR_GDI_HANDLE_LEAK => 373,
+ ERROR_CLOUD_FILE_TOO_MANY_PROPERTY_BLOBS => 374,
+ ERROR_CLOUD_FILE_PROPERTY_VERSION_NOT_SUPPORTED => 375,
+ ERROR_NOT_A_CLOUD_FILE => 376,
+ ERROR_CLOUD_FILE_NOT_IN_SYNC => 377,
+ ERROR_CLOUD_FILE_ALREADY_CONNECTED => 378,
+ ERROR_CLOUD_FILE_NOT_SUPPORTED => 379,
+ ERROR_CLOUD_FILE_INVALID_REQUEST => 380,
+ ERROR_CLOUD_FILE_READ_ONLY_VOLUME => 381,
+ ERROR_CLOUD_FILE_CONNECTED_PROVIDER_ONLY => 382,
+ ERROR_CLOUD_FILE_VALIDATION_FAILED => 383,
+ ERROR_SMB1_NOT_AVAILABLE => 384,
+ ERROR_FILE_SYSTEM_VIRTUALIZATION_INVALID_OPERATION => 385,
+ ERROR_CLOUD_FILE_AUTHENTICATION_FAILED => 386,
+ ERROR_CLOUD_FILE_INSUFFICIENT_RESOURCES => 387,
+ ERROR_CLOUD_FILE_NETWORK_UNAVAILABLE => 388,
+ ERROR_CLOUD_FILE_UNSUCCESSFUL => 389,
+ ERROR_CLOUD_FILE_NOT_UNDER_SYNC_ROOT => 390,
+ ERROR_CLOUD_FILE_IN_USE => 391,
+ ERROR_CLOUD_FILE_PINNED => 392,
+ ERROR_CLOUD_FILE_REQUEST_ABORTED => 393,
+ ERROR_CLOUD_FILE_PROPERTY_CORRUPT => 394,
+ ERROR_CLOUD_FILE_ACCESS_DENIED => 395,
+ ERROR_CLOUD_FILE_INCOMPATIBLE_HARDLINKS => 396,
+ ERROR_CLOUD_FILE_PROPERTY_LOCK_CONFLICT => 397,
+ ERROR_CLOUD_FILE_REQUEST_CANCELED => 398,
+ ERROR_EXTERNAL_SYSKEY_NOT_SUPPORTED => 399,
+ ERROR_THREAD_MODE_ALREADY_BACKGROUND => 400,
+ ERROR_THREAD_MODE_NOT_BACKGROUND => 401,
+ ERROR_PROCESS_MODE_ALREADY_BACKGROUND => 402,
+ ERROR_PROCESS_MODE_NOT_BACKGROUND => 403,
+ ERROR_CLOUD_FILE_PROVIDER_TERMINATED => 404,
+ ERROR_NOT_A_CLOUD_SYNC_ROOT => 405,
+ ERROR_FILE_PROTECTED_UNDER_DPL => 406,
+ ERROR_VOLUME_NOT_CLUSTER_ALIGNED => 407,
+ ERROR_NO_PHYSICALLY_ALIGNED_FREE_SPACE_FOUND => 408,
+ ERROR_APPX_FILE_NOT_ENCRYPTED => 409,
+ ERROR_RWRAW_ENCRYPTED_FILE_NOT_ENCRYPTED => 410,
+ ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILEOFFSET => 411,
+ ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_FILERANGE => 412,
+ ERROR_RWRAW_ENCRYPTED_INVALID_EDATAINFO_PARAMETER => 413,
+ ERROR_LINUX_SUBSYSTEM_NOT_PRESENT => 414,
+ ERROR_FT_READ_FAILURE => 415,
+ ERROR_STORAGE_RESERVE_ID_INVALID => 416,
+ ERROR_STORAGE_RESERVE_DOES_NOT_EXIST => 417,
+ ERROR_STORAGE_RESERVE_ALREADY_EXISTS => 418,
+ ERROR_STORAGE_RESERVE_NOT_EMPTY => 419,
+ ERROR_NOT_A_DAX_VOLUME => 420,
+ ERROR_NOT_DAX_MAPPABLE => 421,
+ ERROR_TIME_SENSITIVE_THREAD => 422,
+ ERROR_DPL_NOT_SUPPORTED_FOR_USER => 423,
+ ERROR_CASE_DIFFERING_NAMES_IN_DIR => 424,
+ ERROR_FILE_NOT_SUPPORTED => 425,
+ ERROR_CLOUD_FILE_REQUEST_TIMEOUT => 426,
+ ERROR_NO_TASK_QUEUE => 427,
+ ERROR_SRC_SRV_DLL_LOAD_FAILED => 428,
+ ERROR_NOT_SUPPORTED_WITH_BTT => 429,
+ ERROR_ENCRYPTION_DISABLED => 430,
+ ERROR_ENCRYPTING_METADATA_DISALLOWED => 431,
+ ERROR_CANT_CLEAR_ENCRYPTION_FLAG => 432,
+ ERROR_NO_SUCH_DEVICE => 433,
+ ERROR_CLOUD_FILE_DEHYDRATION_DISALLOWED => 434,
+ ERROR_FILE_SNAP_IN_PROGRESS => 435,
+ ERROR_FILE_SNAP_USER_SECTION_NOT_SUPPORTED => 436,
+ ERROR_FILE_SNAP_MODIFY_NOT_SUPPORTED => 437,
+ ERROR_FILE_SNAP_IO_NOT_COORDINATED => 438,
+ ERROR_FILE_SNAP_UNEXPECTED_ERROR => 439,
+ ERROR_FILE_SNAP_INVALID_PARAMETER => 440,
+ ERROR_UNSATISFIED_DEPENDENCIES => 441,
+ ERROR_CASE_SENSITIVE_PATH => 442,
+ ERROR_UNEXPECTED_NTCACHEMANAGER_ERROR => 443,
+ ERROR_LINUX_SUBSYSTEM_UPDATE_REQUIRED => 444,
+ ERROR_DLP_POLICY_WARNS_AGAINST_OPERATION => 445,
+ ERROR_DLP_POLICY_DENIES_OPERATION => 446,
+ ERROR_SECURITY_DENIES_OPERATION => 447,
+ ERROR_UNTRUSTED_MOUNT_POINT => 448,
+ ERROR_DLP_POLICY_SILENTLY_FAIL => 449,
+ ERROR_CAPAUTHZ_NOT_DEVUNLOCKED => 450,
+ ERROR_CAPAUTHZ_CHANGE_TYPE => 451,
+ ERROR_CAPAUTHZ_NOT_PROVISIONED => 452,
+ ERROR_CAPAUTHZ_NOT_AUTHORIZED => 453,
+ ERROR_CAPAUTHZ_NO_POLICY => 454,
+ ERROR_CAPAUTHZ_DB_CORRUPTED => 455,
+ ERROR_CAPAUTHZ_SCCD_INVALID_CATALOG => 456,
+ ERROR_CAPAUTHZ_SCCD_NO_AUTH_ENTITY => 457,
+ ERROR_CAPAUTHZ_SCCD_PARSE_ERROR => 458,
+ ERROR_CAPAUTHZ_SCCD_DEV_MODE_REQUIRED => 459,
+ ERROR_CAPAUTHZ_SCCD_NO_CAPABILITY_MATCH => 460,
+ ERROR_CIMFS_IMAGE_CORRUPT => 470,
+ ERROR_CIMFS_IMAGE_VERSION_NOT_SUPPORTED => 471,
+ ERROR_STORAGE_STACK_ACCESS_DENIED => 472,
+ ERROR_INSUFFICIENT_VIRTUAL_ADDR_RESOURCES => 473,
+ ERROR_INDEX_OUT_OF_BOUNDS => 474,
+ ERROR_CLOUD_FILE_US_MESSAGE_TIMEOUT => 475,
+ ERROR_PNP_QUERY_REMOVE_DEVICE_TIMEOUT => 480,
+ ERROR_PNP_QUERY_REMOVE_RELATED_DEVICE_TIMEOUT => 481,
+ ERROR_PNP_QUERY_REMOVE_UNRELATED_DEVICE_TIMEOUT => 482,
+ ERROR_DEVICE_HARDWARE_ERROR => 483,
ERROR_INVALID_ADDRESS => 487,
+ ERROR_HAS_SYSTEM_CRITICAL_FILES => 488,
+ ERROR_ENCRYPTED_FILE_NOT_SUPPORTED => 489,
+ ERROR_SPARSE_FILE_NOT_SUPPORTED => 490,
+ ERROR_PAGEFILE_NOT_SUPPORTED => 491,
+ ERROR_VOLUME_NOT_SUPPORTED => 492,
+ ERROR_NOT_SUPPORTED_WITH_BYPASSIO => 493,
+ ERROR_NO_BYPASSIO_DRIVER_SUPPORT => 494,
+ ERROR_NOT_SUPPORTED_WITH_ENCRYPTION => 495,
+ ERROR_NOT_SUPPORTED_WITH_COMPRESSION => 496,
+ ERROR_NOT_SUPPORTED_WITH_REPLICATION => 497,
+ ERROR_NOT_SUPPORTED_WITH_DEDUPLICATION => 498,
+ ERROR_NOT_SUPPORTED_WITH_AUDITING => 499,
+ ERROR_USER_PROFILE_LOAD => 500,
+ ERROR_SESSION_KEY_TOO_SHORT => 501,
+ ERROR_ACCESS_DENIED_APPDATA => 502,
+ ERROR_NOT_SUPPORTED_WITH_MONITORING => 503,
+ ERROR_NOT_SUPPORTED_WITH_SNAPSHOT => 504,
+ ERROR_NOT_SUPPORTED_WITH_VIRTUALIZATION => 505,
+ ERROR_BYPASSIO_FLT_NOT_SUPPORTED => 506,
+ ERROR_DEVICE_RESET_REQUIRED => 507,
+ ERROR_VOLUME_WRITE_ACCESS_DENIED => 508,
+ ERROR_NOT_SUPPORTED_WITH_CACHED_HANDLE => 509,
+ ERROR_FS_METADATA_INCONSISTENT => 510,
+ EVENT_OEM_DEFINED_END => 511,
+ ENABLE_VIRTUAL_TERMINAL_INPUT => 512,
EN_KILLFOCUS => 512,
EV_PERR => 512,
EXTTEXTOUT => 512,
ERROR_ARITHMETIC_OVERFLOW => 534,
ERROR_PIPE_CONNECTED => 535,
ERROR_PIPE_LISTENING => 536,
+ ERROR_VERIFIER_STOP => 537,
+ ERROR_ABIOS_ERROR => 538,
+ ERROR_WX86_WARNING => 539,
+ ERROR_WX86_ERROR => 540,
+ ERROR_TIMER_NOT_CANCELED => 541,
+ ERROR_UNWIND => 542,
+ ERROR_BAD_STACK => 543,
+ ERROR_INVALID_UNWIND_TARGET => 544,
+ ERROR_INVALID_PORT_ATTRIBUTES => 545,
+ ERROR_PORT_MESSAGE_TOO_LONG => 546,
+ ERROR_INVALID_QUOTA_LOWER => 547,
+ ERROR_DEVICE_ALREADY_ATTACHED => 548,
+ ERROR_INSTRUCTION_MISALIGNMENT => 549,
+ ERROR_PROFILING_NOT_STARTED => 550,
+ ERROR_PROFILING_NOT_STOPPED => 551,
+ ERROR_COULD_NOT_INTERPRET => 552,
+ ERROR_PROFILING_AT_LIMIT => 553,
+ ERROR_CANT_WAIT => 554,
+ ERROR_CANT_TERMINATE_SELF => 555,
+ ERROR_UNEXPECTED_MM_CREATE_ERR => 556,
+ ERROR_UNEXPECTED_MM_MAP_ERROR => 557,
+ ERROR_UNEXPECTED_MM_EXTEND_ERR => 558,
+ ERROR_BAD_FUNCTION_TABLE => 559,
+ ERROR_NO_GUID_TRANSLATION => 560,
+ ERROR_INVALID_LDT_SIZE => 561,
+ ERROR_INVALID_LDT_OFFSET => 563,
+ ERROR_INVALID_LDT_DESCRIPTOR => 564,
+ ERROR_TOO_MANY_THREADS => 565,
+ ERROR_THREAD_NOT_IN_PROCESS => 566,
+ ERROR_PAGEFILE_QUOTA_EXCEEDED => 567,
+ ERROR_LOGON_SERVER_CONFLICT => 568,
+ ERROR_SYNCHRONIZATION_REQUIRED => 569,
+ ERROR_NET_OPEN_FAILED => 570,
+ ERROR_IO_PRIVILEGE_FAILED => 571,
+ ERROR_CONTROL_C_EXIT => 572,
+ ERROR_MISSING_SYSTEMFILE => 573,
+ ERROR_UNHANDLED_EXCEPTION => 574,
+ ERROR_APP_INIT_FAILURE => 575,
+ ERROR_PAGEFILE_CREATE_FAILED => 576,
+ ERROR_INVALID_IMAGE_HASH => 577,
+ ERROR_NO_PAGEFILE => 578,
+ ERROR_ILLEGAL_FLOAT_CONTEXT => 579,
+ ERROR_NO_EVENT_PAIR => 580,
+ ERROR_DOMAIN_CTRLR_CONFIG_ERROR => 581,
+ ERROR_ILLEGAL_CHARACTER => 582,
+ ERROR_UNDEFINED_CHARACTER => 583,
+ ERROR_FLOPPY_VOLUME => 584,
+ ERROR_BIOS_FAILED_TO_CONNECT_INTERRUPT => 585,
+ ERROR_BACKUP_CONTROLLER => 586,
+ ERROR_MUTANT_LIMIT_EXCEEDED => 587,
+ ERROR_FS_DRIVER_REQUIRED => 588,
+ ERROR_CANNOT_LOAD_REGISTRY_FILE => 589,
+ ERROR_DEBUG_ATTACH_FAILED => 590,
+ ERROR_SYSTEM_PROCESS_TERMINATED => 591,
+ ERROR_DATA_NOT_ACCEPTED => 592,
+ ERROR_VDM_HARD_ERROR => 593,
+ ERROR_DRIVER_CANCEL_TIMEOUT => 594,
+ ERROR_REPLY_MESSAGE_MISMATCH => 595,
+ ERROR_LOST_WRITEBEHIND_DATA => 596,
+ ERROR_CLIENT_SERVER_PARAMETERS_INVALID => 597,
+ ERROR_NOT_TINY_STREAM => 598,
+ ERROR_STACK_OVERFLOW_READ => 599,
+ ERROR_CONVERT_TO_LARGE => 600,
+ ERROR_FOUND_OUT_OF_SCOPE => 601,
+ ERROR_ALLOCATE_BUCKET => 602,
+ ERROR_MARSHALL_OVERFLOW => 603,
+ ERROR_INVALID_VARIANT => 604,
+ ERROR_BAD_COMPRESSION_BUFFER => 605,
+ ERROR_AUDIT_FAILED => 606,
+ ERROR_TIMER_RESOLUTION_NOT_SET => 607,
+ ERROR_INSUFFICIENT_LOGON_INFO => 608,
+ ERROR_BAD_DLL_ENTRYPOINT => 609,
+ ERROR_BAD_SERVICE_ENTRYPOINT => 610,
+ ERROR_IP_ADDRESS_CONFLICT1 => 611,
+ ERROR_IP_ADDRESS_CONFLICT2 => 612,
+ ERROR_REGISTRY_QUOTA_LIMIT => 613,
+ ERROR_NO_CALLBACK_ACTIVE => 614,
+ ERROR_PWD_TOO_SHORT => 615,
+ ERROR_PWD_TOO_RECENT => 616,
+ ERROR_PWD_HISTORY_CONFLICT => 617,
+ ERROR_UNSUPPORTED_COMPRESSION => 618,
+ ERROR_INVALID_HW_PROFILE => 619,
+ ERROR_INVALID_PLUGPLAY_DEVICE_PATH => 620,
+ ERROR_QUOTA_LIST_INCONSISTENT => 621,
+ ERROR_EVALUATION_EXPIRATION => 622,
+ ERROR_ILLEGAL_DLL_RELOCATION => 623,
+ ERROR_DLL_INIT_FAILED_LOGOFF => 624,
+ ERROR_VALIDATE_CONTINUE => 625,
+ ERROR_NO_MORE_MATCHES => 626,
+ ERROR_RANGE_LIST_CONFLICT => 627,
+ ERROR_SERVER_SID_MISMATCH => 628,
+ ERROR_CANT_ENABLE_DENY_ONLY => 629,
+ ERROR_FLOAT_MULTIPLE_FAULTS => 630,
+ ERROR_FLOAT_MULTIPLE_TRAPS => 631,
+ ERROR_NOINTERFACE => 632,
+ ERROR_DRIVER_FAILED_SLEEP => 633,
+ ERROR_CORRUPT_SYSTEM_FILE => 634,
+ ERROR_COMMITMENT_MINIMUM => 635,
+ ERROR_PNP_RESTART_ENUMERATION => 636,
+ ERROR_SYSTEM_IMAGE_BAD_SIGNATURE => 637,
+ ERROR_PNP_REBOOT_REQUIRED => 638,
+ ERROR_INSUFFICIENT_POWER => 639,
+ ERROR_MULTIPLE_FAULT_VIOLATION => 640,
+ ERROR_SYSTEM_SHUTDOWN => 641,
+ ERROR_PORT_NOT_SET => 642,
+ ERROR_DS_VERSION_CHECK_FAILURE => 643,
+ ERROR_RANGE_NOT_FOUND => 644,
+ ERROR_NOT_SAFE_MODE_DRIVER => 646,
+ ERROR_FAILED_DRIVER_ENTRY => 647,
+ ERROR_DEVICE_ENUMERATION_ERROR => 648,
+ ERROR_MOUNT_POINT_NOT_RESOLVED => 649,
+ ERROR_INVALID_DEVICE_OBJECT_PARAMETER => 650,
+ ERROR_MCA_OCCURED => 651,
+ ERROR_DRIVER_DATABASE_ERROR => 652,
+ ERROR_SYSTEM_HIVE_TOO_LARGE => 653,
+ ERROR_DRIVER_FAILED_PRIOR_UNLOAD => 654,
+ ERROR_VOLSNAP_PREPARE_HIBERNATE => 655,
+ ERROR_HIBERNATION_FAILURE => 656,
+ ERROR_PWD_TOO_LONG => 657,
+ ERROR_FILE_SYSTEM_LIMITATION => 665,
+ ERROR_ASSERTION_FAILURE => 668,
+ ERROR_ACPI_ERROR => 669,
+ ERROR_WOW_ASSERTION => 670,
+ ERROR_PNP_BAD_MPS_TABLE => 671,
+ ERROR_PNP_TRANSLATION_FAILED => 672,
+ ERROR_PNP_IRQ_TRANSLATION_FAILED => 673,
+ ERROR_PNP_INVALID_ID => 674,
+ ERROR_WAKE_SYSTEM_DEBUGGER => 675,
+ ERROR_HANDLES_CLOSED => 676,
+ ERROR_EXTRANEOUS_INFORMATION => 677,
+ ERROR_RXACT_COMMIT_NECESSARY => 678,
+ ERROR_MEDIA_CHECK => 679,
+ ERROR_GUID_SUBSTITUTION_MADE => 680,
+ ERROR_STOPPED_ON_SYMLINK => 681,
+ ERROR_LONGJUMP => 682,
+ ERROR_PLUGPLAY_QUERY_VETOED => 683,
+ ERROR_UNWIND_CONSOLIDATE => 684,
+ ERROR_REGISTRY_HIVE_RECOVERED => 685,
+ ERROR_DLL_MIGHT_BE_INSECURE => 686,
+ ERROR_DLL_MIGHT_BE_INCOMPATIBLE => 687,
+ ERROR_DBG_EXCEPTION_NOT_HANDLED => 688,
+ ERROR_DBG_REPLY_LATER => 689,
+ ERROR_DBG_UNABLE_TO_PROVIDE_HANDLE => 690,
+ ERROR_DBG_TERMINATE_THREAD => 691,
+ ERROR_DBG_TERMINATE_PROCESS => 692,
+ ERROR_DBG_CONTROL_C => 693,
+ ERROR_DBG_PRINTEXCEPTION_C => 694,
+ ERROR_DBG_RIPEXCEPTION => 695,
+ ERROR_DBG_CONTROL_BREAK => 696,
+ ERROR_DBG_COMMAND_EXCEPTION => 697,
+ ERROR_OBJECT_NAME_EXISTS => 698,
+ ERROR_THREAD_WAS_SUSPENDED => 699,
+ ERROR_IMAGE_NOT_AT_BASE => 700,
+ ERROR_RXACT_STATE_CREATED => 701,
+ ERROR_SEGMENT_NOTIFICATION => 702,
+ ERROR_BAD_CURRENT_DIRECTORY => 703,
+ ERROR_FT_READ_RECOVERY_FROM_BACKUP => 704,
+ ERROR_FT_WRITE_RECOVERY => 705,
+ ERROR_IMAGE_MACHINE_TYPE_MISMATCH => 706,
+ ERROR_RECEIVE_PARTIAL => 707,
+ ERROR_RECEIVE_EXPEDITED => 708,
+ ERROR_RECEIVE_PARTIAL_EXPEDITED => 709,
+ ERROR_EVENT_DONE => 710,
+ ERROR_EVENT_PENDING => 711,
+ ERROR_CHECKING_FILE_SYSTEM => 712,
+ ERROR_FATAL_APP_EXIT => 713,
+ ERROR_PREDEFINED_HANDLE => 714,
+ ERROR_WAS_UNLOCKED => 715,
+ ERROR_SERVICE_NOTIFICATION => 716,
+ ERROR_WAS_LOCKED => 717,
+ ERROR_LOG_HARD_ERROR => 718,
+ ERROR_ALREADY_WIN32 => 719,
+ ERROR_IMAGE_MACHINE_TYPE_MISMATCH_EXE => 720,
+ ERROR_NO_YIELD_PERFORMED => 721,
+ ERROR_TIMER_RESUME_IGNORED => 722,
+ ERROR_ARBITRATION_UNHANDLED => 723,
+ ERROR_CARDBUS_NOT_SUPPORTED => 724,
+ ERROR_MP_PROCESSOR_MISMATCH => 725,
+ ERROR_HIBERNATED => 726,
+ ERROR_RESUME_HIBERNATION => 727,
+ ERROR_FIRMWARE_UPDATED => 728,
+ ERROR_DRIVERS_LEAKING_LOCKED_PAGES => 729,
ERROR_WAKE_SYSTEM => 730,
ERROR_WAIT_1 => 731,
ERROR_WAIT_2 => 732,
@@ -705,9 +1108,89 @@ BEGIN {
ERROR_USER_APC => 737,
ERROR_KERNEL_APC => 738,
ERROR_ALERTED => 739,
+ ERROR_ELEVATION_REQUIRED => 740,
+ ERROR_REPARSE => 741,
+ ERROR_OPLOCK_BREAK_IN_PROGRESS => 742,
+ ERROR_VOLUME_MOUNTED => 743,
+ ERROR_RXACT_COMMITTED => 744,
+ ERROR_NOTIFY_CLEANUP => 745,
+ ERROR_PRIMARY_TRANSPORT_CONNECT_FAILED => 746,
+ ERROR_PAGE_FAULT_TRANSITION => 747,
+ ERROR_PAGE_FAULT_DEMAND_ZERO => 748,
+ ERROR_PAGE_FAULT_COPY_ON_WRITE => 749,
+ ERROR_PAGE_FAULT_GUARD_PAGE => 750,
+ ERROR_PAGE_FAULT_PAGING_FILE => 751,
+ ERROR_CACHE_PAGE_LOCKED => 752,
+ ERROR_CRASH_DUMP => 753,
+ ERROR_BUFFER_ALL_ZEROS => 754,
+ ERROR_REPARSE_OBJECT => 755,
+ ERROR_RESOURCE_REQUIREMENTS_CHANGED => 756,
+ ERROR_TRANSLATION_COMPLETE => 757,
+ ERROR_NOTHING_TO_TERMINATE => 758,
+ ERROR_PROCESS_NOT_IN_JOB => 759,
+ ERROR_PROCESS_IN_JOB => 760,
+ ERROR_VOLSNAP_HIBERNATE_READY => 761,
+ ERROR_FSFILTER_OP_COMPLETED_SUCCESSFULLY => 762,
+ ERROR_INTERRUPT_VECTOR_ALREADY_CONNECTED => 763,
+ ERROR_INTERRUPT_STILL_CONNECTED => 764,
+ ERROR_WAIT_FOR_OPLOCK => 765,
+ ERROR_DBG_EXCEPTION_HANDLED => 766,
+ ERROR_DBG_CONTINUE => 767,
ENABLERELATIVEWIDTHS => 768,
EN_CHANGE => 768,
+ ERROR_CALLBACK_POP_STACK => 768,
ENABLEPAIRKERNING => 769,
+ ERROR_COMPRESSION_DISABLED => 769,
+ ERROR_CANTFETCHBACKWARDS => 770,
+ ERROR_CANTSCROLLBACKWARDS => 771,
+ ERROR_ROWSNOTRELEASED => 772,
+ ERROR_BAD_ACCESSOR_FLAGS => 773,
+ ERROR_ERRORS_ENCOUNTERED => 774,
+ ERROR_NOT_CAPABLE => 775,
+ ERROR_REQUEST_OUT_OF_SEQUENCE => 776,
+ ERROR_VERSION_PARSE_ERROR => 777,
+ ERROR_BADSTARTPOSITION => 778,
+ ERROR_MEMORY_HARDWARE => 779,
+ ERROR_DISK_REPAIR_DISABLED => 780,
+ ERROR_INSUFFICIENT_RESOURCE_FOR_SPECIFIED_SHARED_SECTION_SIZE => 781,
+ ERROR_SYSTEM_POWERSTATE_TRANSITION => 782,
+ ERROR_SYSTEM_POWERSTATE_COMPLEX_TRANSITION => 783,
+ ERROR_MCA_EXCEPTION => 784,
+ ERROR_ACCESS_AUDIT_BY_POLICY => 785,
+ ERROR_ACCESS_DISABLED_NO_SAFER_UI_BY_POLICY => 786,
+ ERROR_ABANDON_HIBERFILE => 787,
+ ERROR_LOST_WRITEBEHIND_DATA_NETWORK_DISCONNECTED => 788,
+ ERROR_LOST_WRITEBEHIND_DATA_NETWORK_SERVER_ERROR => 789,
+ ERROR_LOST_WRITEBEHIND_DATA_LOCAL_DISK_ERROR => 790,
+ ERROR_BAD_MCFG_TABLE => 791,
+ ERROR_DISK_REPAIR_REDIRECTED => 792,
+ ERROR_DISK_REPAIR_UNSUCCESSFUL => 793,
+ ERROR_CORRUPT_LOG_OVERFULL => 794,
+ ERROR_CORRUPT_LOG_CORRUPTED => 795,
+ ERROR_CORRUPT_LOG_UNAVAILABLE => 796,
+ ERROR_CORRUPT_LOG_DELETED_FULL => 797,
+ ERROR_CORRUPT_LOG_CLEARED => 798,
+ ERROR_ORPHAN_NAME_EXHAUSTED => 799,
+ ERROR_OPLOCK_SWITCHED_TO_NEW_HANDLE => 800,
+ ERROR_CANNOT_GRANT_REQUESTED_OPLOCK => 801,
+ ERROR_CANNOT_BREAK_OPLOCK => 802,
+ ERROR_OPLOCK_HANDLE_CLOSED => 803,
+ ERROR_NO_ACE_CONDITION => 804,
+ ERROR_INVALID_ACE_CONDITION => 805,
+ ERROR_FILE_HANDLE_REVOKED => 806,
+ ERROR_IMAGE_AT_DIFFERENT_BASE => 807,
+ ERROR_ENCRYPTED_IO_NOT_POSSIBLE => 808,
+ ERROR_FILE_METADATA_OPTIMIZATION_IN_PROGRESS => 809,
+ ERROR_QUOTA_ACTIVITY => 810,
+ ERROR_HANDLE_REVOKED => 811,
+ ERROR_CALLBACK_INVOKE_INLINE => 812,
+ ERROR_CPU_SET_INVALID => 813,
+ ERROR_ENCLAVE_NOT_TERMINATED => 814,
+ ERROR_ENCLAVE_VIOLATION => 815,
+ ERROR_SERVER_TRANSPORT_CONFLICT => 816,
+ ERROR_CERTIFICATE_VALIDATION_PREFERENCE_CONFLICT => 817,
+ ERROR_FT_READ_FROM_COPY_FAILURE => 818,
+ ERROR_SECTION_DIRECT_MAP_ONLY => 819,
ERROR_EA_ACCESS_DENIED => 994,
ERROR_OPERATION_ABORTED => 995,
ERROR_IO_INCOMPLETE => 996,
@@ -841,6 +1324,10 @@ BEGIN {
ERROR_JOURNAL_NOT_ACTIVE => 1179,
ERROR_POTENTIAL_FILE_FOUND => 1180,
ERROR_JOURNAL_ENTRY_DELETED => 1181,
+ ERROR_PARTITION_TERMINATING => 1184,
+ ERROR_SHUTDOWN_IS_SCHEDULED => 1190,
+ ERROR_SHUTDOWN_USERS_LOGGED_ON => 1191,
+ ERROR_SHUTDOWN_DISKS_NOT_IN_MAINTENANCE_MODE => 1192,
ERROR_BAD_DEVICE => 1200,
ERROR_CONNECTION_UNAVAIL => 1201,
ERROR_DEVICE_ALREADY_REMEMBERED => 1202,
@@ -908,6 +1395,7 @@ BEGIN {
ERROR_SMARTCARD_SUBSYSTEM_FAILURE => 1264,
ERROR_DOWNGRADE_DETECTED => 1265,
ERROR_MACHINE_LOCKED => 1271,
+ ERROR_SMB_GUEST_LOGON_BLOCKED => 1272,
ERROR_CALLBACK_SUPPLIED_INVALID_DATA => 1273,
ERROR_SYNC_FOREGROUND_REFRESH_REQUIRED => 1274,
ERROR_DRIVER_BLOCKED => 1275,
@@ -925,6 +1413,18 @@ BEGIN {
ERROR_DELAY_LOAD_FAILED => 1285,
ERROR_VDM_DISALLOWED => 1286,
ERROR_UNIDENTIFIED_ERROR => 1287,
+ ERROR_INVALID_CRUNTIME_PARAMETER => 1288,
+ ERROR_BEYOND_VDL => 1289,
+ ERROR_INCOMPATIBLE_SERVICE_SID_TYPE => 1290,
+ ERROR_DRIVER_PROCESS_TERMINATED => 1291,
+ ERROR_IMPLEMENTATION_LIMIT => 1292,
+ ERROR_PROCESS_IS_PROTECTED => 1293,
+ ERROR_SERVICE_NOTIFY_CLIENT_LAGGING => 1294,
+ ERROR_DISK_QUOTA_EXCEEDED => 1295,
+ ERROR_CONTENT_BLOCKED => 1296,
+ ERROR_INCOMPATIBLE_SERVICE_PRIVILEGE => 1297,
+ ERROR_APP_HANG => 1298,
+ ERROR_INVALID_LABEL => 1299,
ERROR_NOT_ALL_ASSIGNED => 1300,
ERROR_SOME_NOT_MAPPED => 1301,
ERROR_NO_QUOTAS_FOR_ACCOUNT => 1302,
@@ -1100,8 +1600,13 @@ BEGIN {
ERROR_EVENTLOG_CANT_START => 1501,
ERROR_LOG_FILE_FULL => 1502,
ERROR_EVENTLOG_FILE_CHANGED => 1503,
+ ERROR_CONTAINER_ASSIGNED => 1504,
+ ERROR_JOB_NO_CONTAINER => 1505,
EN_HSCROLL => 1537,
EN_VSCROLL => 1538,
+ ERROR_INVALID_TASK_NAME => 1550,
+ ERROR_INVALID_TASK_INDEX => 1551,
+ ERROR_THREAD_ALREADY_IN_TASK => 1552,
ERROR_INSTALL_SERVICE_FAILURE => 1601,
ERROR_INSTALL_USEREXIT => 1602,
ERROR_INSTALL_FAILURE => 1603,
@@ -1147,6 +1652,21 @@ BEGIN {
ERROR_PATCH_PACKAGE_REJECTED => 1643,
ERROR_INSTALL_TRANSFORM_REJECTED => 1644,
ERROR_INSTALL_REMOTE_PROHIBITED => 1645,
+ ERROR_PATCH_REMOVAL_UNSUPPORTED => 1646,
+ ERROR_UNKNOWN_PATCH => 1647,
+ ERROR_PATCH_NO_SEQUENCE => 1648,
+ ERROR_PATCH_REMOVAL_DISALLOWED => 1649,
+ ERROR_INVALID_PATCH_XML => 1650,
+ ERROR_PATCH_MANAGED_ADVERTISED_PRODUCT => 1651,
+ ERROR_INSTALL_SERVICE_SAFEBOOT => 1652,
+ ERROR_FAIL_FAST_EXCEPTION => 1653,
+ ERROR_INSTALL_REJECTED => 1654,
+ ERROR_DYNAMIC_CODE_BLOCKED => 1655,
+ ERROR_NOT_SAME_OBJECT => 1656,
+ ERROR_STRICT_CFG_VIOLATION => 1657,
+ ERROR_SET_CONTEXT_DENIED => 1660,
+ ERROR_CROSS_PARTITION_VIOLATION => 1661,
+ ERROR_RETURN_ADDRESS_HIJACK_ATTEMPT => 1662,
EPT_S_INVALID_ENTRY => 1751,
EPT_S_CANT_PERFORM_OP => 1752,
EPT_S_NOT_REGISTERED => 1753,
@@ -1203,6 +1723,9 @@ BEGIN {
ERROR_USER_DELETE_TRUST_QUOTA_EXCEEDED => 1934,
ERROR_AUTHENTICATION_FIREWALL_FAILED => 1935,
ERROR_REMOTE_PRINT_CONNECTIONS_BLOCKED => 1936,
+ ERROR_NTLM_BLOCKED => 1937,
+ ERROR_PASSWORD_CHANGE_REQUIRED => 1938,
+ ERROR_LOST_MODE_LOGON_RESTRICTION => 1939,
ERROR_INVALID_PIXEL_FORMAT => 2000,
ERROR_BAD_DRIVER => 2001,
ERROR_INVALID_WINDOW_STYLE => 2002,
@@ -1222,9 +1745,12 @@ BEGIN {
ERROR_INVALID_TRANSFORM => 2020,
ERROR_COLORSPACE_MISMATCH => 2021,
ERROR_INVALID_COLORINDEX => 2022,
+ ERROR_PROFILE_DOES_NOT_MATCH_DEVICE => 2023,
+ EN_BEFORE_PASTE => 2048,
ES_READONLY => 2048,
ETO_NUMERICSLATIN => 2048,
EV_EVENT1 => 2048,
+ EN_AFTER_PASTE => 2049,
ERROR_CONNECTED_OTHER_PASSWORD => 2108,
ERROR_CONNECTED_OTHER_PASSWORD_DEFAULT => 2109,
ERROR_BAD_USERNAME => 2202,
@@ -1247,6 +1773,47 @@ BEGIN {
ERROR_PRINTER_NOT_FOUND => 3012,
ERROR_PRINTER_DRIVER_WARNED => 3013,
ERROR_PRINTER_DRIVER_BLOCKED => 3014,
+ ERROR_PRINTER_DRIVER_PACKAGE_IN_USE => 3015,
+ ERROR_CORE_DRIVER_PACKAGE_NOT_FOUND => 3016,
+ ERROR_FAIL_REBOOT_REQUIRED => 3017,
+ ERROR_FAIL_REBOOT_INITIATED => 3018,
+ ERROR_PRINTER_DRIVER_DOWNLOAD_NEEDED => 3019,
+ ERROR_PRINT_JOB_RESTART_REQUIRED => 3020,
+ ERROR_INVALID_PRINTER_DRIVER_MANIFEST => 3021,
+ ERROR_PRINTER_NOT_SHAREABLE => 3022,
+ ERROR_REQUEST_PAUSED => 3050,
+ ERROR_APPEXEC_CONDITION_NOT_SATISFIED => 3060,
+ ERROR_APPEXEC_HANDLE_INVALIDATED => 3061,
+ ERROR_APPEXEC_INVALID_HOST_GENERATION => 3062,
+ ERROR_APPEXEC_UNEXPECTED_PROCESS_REGISTRATION => 3063,
+ ERROR_APPEXEC_INVALID_HOST_STATE => 3064,
+ ERROR_APPEXEC_NO_DONOR => 3065,
+ ERROR_APPEXEC_HOST_ID_MISMATCH => 3066,
+ ERROR_APPEXEC_UNKNOWN_USER => 3067,
+ ERROR_APPEXEC_APP_COMPAT_BLOCK => 3068,
+ ERROR_APPEXEC_CALLER_WAIT_TIMEOUT => 3069,
+ ERROR_APPEXEC_CALLER_WAIT_TIMEOUT_TERMINATION => 3070,
+ ERROR_APPEXEC_CALLER_WAIT_TIMEOUT_LICENSING => 3071,
+ ERROR_APPEXEC_CALLER_WAIT_TIMEOUT_RESOURCES => 3072,
+ ERROR_VRF_VOLATILE_CFG_AND_IO_ENABLED => 3080,
+ ERROR_VRF_VOLATILE_NOT_STOPPABLE => 3081,
+ ERROR_VRF_VOLATILE_SAFE_MODE => 3082,
+ ERROR_VRF_VOLATILE_NOT_RUNNABLE_SYSTEM => 3083,
+ ERROR_VRF_VOLATILE_NOT_SUPPORTED_RULECLASS => 3084,
+ ERROR_VRF_VOLATILE_PROTECTED_DRIVER => 3085,
+ ERROR_VRF_VOLATILE_NMI_REGISTERED => 3086,
+ ERROR_VRF_VOLATILE_SETTINGS_CONFLICT => 3087,
+ ERROR_DIF_IOCALLBACK_NOT_REPLACED => 3190,
+ ERROR_DIF_LIVEDUMP_LIMIT_EXCEEDED => 3191,
+ ERROR_DIF_VOLATILE_SECTION_NOT_LOCKED => 3192,
+ ERROR_DIF_VOLATILE_DRIVER_HOTPATCHED => 3193,
+ ERROR_DIF_VOLATILE_INVALID_INFO => 3194,
+ ERROR_DIF_VOLATILE_DRIVER_IS_NOT_RUNNING => 3195,
+ ERROR_DIF_VOLATILE_PLUGIN_IS_NOT_RUNNING => 3196,
+ ERROR_DIF_VOLATILE_PLUGIN_CHANGE_NOT_ALLOWED => 3197,
+ ERROR_DIF_VOLATILE_NOT_ALLOWED => 3198,
+ ERROR_DIF_BINDING_API_NOT_FOUND => 3199,
+ ERROR_IO_REISSUE_AS_CACHED => 3950,
ERROR_WINS_INTERNAL => 4000,
ERROR_CAN_NOT_DEL_LOCAL_WINS => 4001,
ERROR_STATIC_INIT => 4002,
@@ -1277,6 +1844,10 @@ BEGIN {
ERROR_WMI_ALREADY_DISABLED => 4212,
ERROR_WMI_READ_ONLY => 4213,
ERROR_WMI_SET_FAILURE => 4214,
+ ERROR_NOT_APPCONTAINER => 4250,
+ ERROR_APPCONTAINER_REQUIRED => 4251,
+ ERROR_NOT_SUPPORTED_IN_APPCONTAINER => 4252,
+ ERROR_INVALID_PACKAGE_SID_LENGTH => 4253,
ERROR_INVALID_MEDIA => 4300,
ERROR_INVALID_LIBRARY => 4301,
ERROR_INVALID_MEDIA_POOL => 4302,
@@ -1327,7 +1898,58 @@ BEGIN {
ERROR_INVALID_REPARSE_DATA => 4392,
ERROR_REPARSE_TAG_INVALID => 4393,
ERROR_REPARSE_TAG_MISMATCH => 4394,
+ ERROR_REPARSE_POINT_ENCOUNTERED => 4395,
+ ERROR_APP_DATA_NOT_FOUND => 4400,
+ ERROR_APP_DATA_EXPIRED => 4401,
+ ERROR_APP_DATA_CORRUPT => 4402,
+ ERROR_APP_DATA_LIMIT_EXCEEDED => 4403,
+ ERROR_APP_DATA_REBOOT_REQUIRED => 4404,
+ ERROR_SECUREBOOT_ROLLBACK_DETECTED => 4420,
+ ERROR_SECUREBOOT_POLICY_VIOLATION => 4421,
+ ERROR_SECUREBOOT_INVALID_POLICY => 4422,
+ ERROR_SECUREBOOT_POLICY_PUBLISHER_NOT_FOUND => 4423,
+ ERROR_SECUREBOOT_POLICY_NOT_SIGNED => 4424,
+ ERROR_SECUREBOOT_NOT_ENABLED => 4425,
+ ERROR_SECUREBOOT_FILE_REPLACED => 4426,
+ ERROR_SECUREBOOT_POLICY_NOT_AUTHORIZED => 4427,
+ ERROR_SECUREBOOT_POLICY_UNKNOWN => 4428,
+ ERROR_SECUREBOOT_POLICY_MISSING_ANTIROLLBACKVERSION => 4429,
+ ERROR_SECUREBOOT_PLATFORM_ID_MISMATCH => 4430,
+ ERROR_SECUREBOOT_POLICY_ROLLBACK_DETECTED => 4431,
+ ERROR_SECUREBOOT_POLICY_UPGRADE_MISMATCH => 4432,
+ ERROR_SECUREBOOT_REQUIRED_POLICY_FILE_MISSING => 4433,
+ ERROR_SECUREBOOT_NOT_BASE_POLICY => 4434,
+ ERROR_SECUREBOOT_NOT_SUPPLEMENTAL_POLICY => 4435,
+ ERROR_OFFLOAD_READ_FLT_NOT_SUPPORTED => 4440,
+ ERROR_OFFLOAD_WRITE_FLT_NOT_SUPPORTED => 4441,
+ ERROR_OFFLOAD_READ_FILE_NOT_SUPPORTED => 4442,
+ ERROR_OFFLOAD_WRITE_FILE_NOT_SUPPORTED => 4443,
+ ERROR_ALREADY_HAS_STREAM_ID => 4444,
+ ERROR_SMR_GARBAGE_COLLECTION_REQUIRED => 4445,
+ ERROR_WOF_WIM_HEADER_CORRUPT => 4446,
+ ERROR_WOF_WIM_RESOURCE_TABLE_CORRUPT => 4447,
+ ERROR_WOF_FILE_RESOURCE_TABLE_CORRUPT => 4448,
+ ERROR_OBJECT_IS_IMMUTABLE => 4449,
ERROR_VOLUME_NOT_SIS_ENABLED => 4500,
+ ERROR_SYSTEM_INTEGRITY_ROLLBACK_DETECTED => 4550,
+ ERROR_SYSTEM_INTEGRITY_POLICY_VIOLATION => 4551,
+ ERROR_SYSTEM_INTEGRITY_INVALID_POLICY => 4552,
+ ERROR_SYSTEM_INTEGRITY_POLICY_NOT_SIGNED => 4553,
+ ERROR_SYSTEM_INTEGRITY_TOO_MANY_POLICIES => 4554,
+ ERROR_SYSTEM_INTEGRITY_SUPPLEMENTAL_POLICY_NOT_AUTHORIZED => 4555,
+ ERROR_SYSTEM_INTEGRITY_REPUTATION_MALICIOUS => 4556,
+ ERROR_SYSTEM_INTEGRITY_REPUTATION_PUA => 4557,
+ ERROR_SYSTEM_INTEGRITY_REPUTATION_DANGEROUS_EXT => 4558,
+ ERROR_SYSTEM_INTEGRITY_REPUTATION_OFFLINE => 4559,
+ ERROR_VSM_NOT_INITIALIZED => 4560,
+ ERROR_VSM_DMA_PROTECTION_NOT_IN_USE => 4561,
+ ERROR_PLATFORM_MANIFEST_NOT_AUTHORIZED => 4570,
+ ERROR_PLATFORM_MANIFEST_INVALID => 4571,
+ ERROR_PLATFORM_MANIFEST_FILE_NOT_AUTHORIZED => 4572,
+ ERROR_PLATFORM_MANIFEST_CATALOG_NOT_AUTHORIZED => 4573,
+ ERROR_PLATFORM_MANIFEST_BINARY_ID_NOT_FOUND => 4574,
+ ERROR_PLATFORM_MANIFEST_NOT_ACTIVE => 4575,
+ ERROR_PLATFORM_MANIFEST_NOT_SIGNED => 4576,
ERROR_DEPENDENT_RESOURCE_EXISTS => 5001,
ERROR_DEPENDENCY_NOT_FOUND => 5002,
ERROR_DEPENDENCY_ALREADY_EXISTS => 5003,
@@ -1416,6 +2038,7 @@ BEGIN {
ERROR_DATABASE_BACKUP_CORRUPT => 5087,
ERROR_CLUSTER_NODE_ALREADY_HAS_DFS_ROOT => 5088,
ERROR_RESOURCE_PROPERTY_UNCHANGEABLE => 5089,
+ ERROR_NO_ADMIN_ACCESS_POINT => 5090,
ERROR_CLUSTER_MEMBERSHIP_INVALID_STATE => 5890,
ERROR_CLUSTER_QUORUMLOG_NOT_FOUND => 5891,
ERROR_CLUSTER_MEMBERSHIP_HALT => 5892,
@@ -1432,6 +2055,100 @@ BEGIN {
ERROR_CLUSCFG_SYSTEM_DISK_DRIVE_LETTER_CONFLICT => 5903,
ERROR_CLUSTER_OLD_VERSION => 5904,
ERROR_CLUSTER_MISMATCHED_COMPUTER_ACCT_NAME => 5905,
+ ERROR_CLUSTER_NO_NET_ADAPTERS => 5906,
+ ERROR_CLUSTER_POISONED => 5907,
+ ERROR_CLUSTER_GROUP_MOVING => 5908,
+ ERROR_CLUSTER_RESOURCE_TYPE_BUSY => 5909,
+ ERROR_RESOURCE_CALL_TIMED_OUT => 5910,
+ ERROR_INVALID_CLUSTER_IPV6_ADDRESS => 5911,
+ ERROR_CLUSTER_INTERNAL_INVALID_FUNCTION => 5912,
+ ERROR_CLUSTER_PARAMETER_OUT_OF_BOUNDS => 5913,
+ ERROR_CLUSTER_PARTIAL_SEND => 5914,
+ ERROR_CLUSTER_REGISTRY_INVALID_FUNCTION => 5915,
+ ERROR_CLUSTER_INVALID_STRING_TERMINATION => 5916,
+ ERROR_CLUSTER_INVALID_STRING_FORMAT => 5917,
+ ERROR_CLUSTER_DATABASE_TRANSACTION_IN_PROGRESS => 5918,
+ ERROR_CLUSTER_DATABASE_TRANSACTION_NOT_IN_PROGRESS => 5919,
+ ERROR_CLUSTER_NULL_DATA => 5920,
+ ERROR_CLUSTER_PARTIAL_READ => 5921,
+ ERROR_CLUSTER_PARTIAL_WRITE => 5922,
+ ERROR_CLUSTER_CANT_DESERIALIZE_DATA => 5923,
+ ERROR_DEPENDENT_RESOURCE_PROPERTY_CONFLICT => 5924,
+ ERROR_CLUSTER_NO_QUORUM => 5925,
+ ERROR_CLUSTER_INVALID_IPV6_NETWORK => 5926,
+ ERROR_CLUSTER_INVALID_IPV6_TUNNEL_NETWORK => 5927,
+ ERROR_QUORUM_NOT_ALLOWED_IN_THIS_GROUP => 5928,
+ ERROR_DEPENDENCY_TREE_TOO_COMPLEX => 5929,
+ ERROR_EXCEPTION_IN_RESOURCE_CALL => 5930,
+ ERROR_CLUSTER_RHS_FAILED_INITIALIZATION => 5931,
+ ERROR_CLUSTER_NOT_INSTALLED => 5932,
+ ERROR_CLUSTER_RESOURCES_MUST_BE_ONLINE_ON_THE_SAME_NODE => 5933,
+ ERROR_CLUSTER_MAX_NODES_IN_CLUSTER => 5934,
+ ERROR_CLUSTER_TOO_MANY_NODES => 5935,
+ ERROR_CLUSTER_OBJECT_ALREADY_USED => 5936,
+ ERROR_NONCORE_GROUPS_FOUND => 5937,
+ ERROR_FILE_SHARE_RESOURCE_CONFLICT => 5938,
+ ERROR_CLUSTER_EVICT_INVALID_REQUEST => 5939,
+ ERROR_CLUSTER_SINGLETON_RESOURCE => 5940,
+ ERROR_CLUSTER_GROUP_SINGLETON_RESOURCE => 5941,
+ ERROR_CLUSTER_RESOURCE_PROVIDER_FAILED => 5942,
+ ERROR_CLUSTER_RESOURCE_CONFIGURATION_ERROR => 5943,
+ ERROR_CLUSTER_GROUP_BUSY => 5944,
+ ERROR_CLUSTER_NOT_SHARED_VOLUME => 5945,
+ ERROR_CLUSTER_INVALID_SECURITY_DESCRIPTOR => 5946,
+ ERROR_CLUSTER_SHARED_VOLUMES_IN_USE => 5947,
+ ERROR_CLUSTER_USE_SHARED_VOLUMES_API => 5948,
+ ERROR_CLUSTER_BACKUP_IN_PROGRESS => 5949,
+ ERROR_NON_CSV_PATH => 5950,
+ ERROR_CSV_VOLUME_NOT_LOCAL => 5951,
+ ERROR_CLUSTER_WATCHDOG_TERMINATING => 5952,
+ ERROR_CLUSTER_RESOURCE_VETOED_MOVE_INCOMPATIBLE_NODES => 5953,
+ ERROR_CLUSTER_INVALID_NODE_WEIGHT => 5954,
+ ERROR_CLUSTER_RESOURCE_VETOED_CALL => 5955,
+ ERROR_RESMON_SYSTEM_RESOURCES_LACKING => 5956,
+ ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_DESTINATION => 5957,
+ ERROR_CLUSTER_RESOURCE_VETOED_MOVE_NOT_ENOUGH_RESOURCES_ON_SOURCE => 5958,
+ ERROR_CLUSTER_GROUP_QUEUED => 5959,
+ ERROR_CLUSTER_RESOURCE_LOCKED_STATUS => 5960,
+ ERROR_CLUSTER_SHARED_VOLUME_FAILOVER_NOT_ALLOWED => 5961,
+ ERROR_CLUSTER_NODE_DRAIN_IN_PROGRESS => 5962,
+ ERROR_CLUSTER_DISK_NOT_CONNECTED => 5963,
+ ERROR_DISK_NOT_CSV_CAPABLE => 5964,
+ ERROR_RESOURCE_NOT_IN_AVAILABLE_STORAGE => 5965,
+ ERROR_CLUSTER_SHARED_VOLUME_REDIRECTED => 5966,
+ ERROR_CLUSTER_SHARED_VOLUME_NOT_REDIRECTED => 5967,
+ ERROR_CLUSTER_CANNOT_RETURN_PROPERTIES => 5968,
+ ERROR_CLUSTER_RESOURCE_CONTAINS_UNSUPPORTED_DIFF_AREA_FOR_SHARED_VOLUMES => 5969,
+ ERROR_CLUSTER_RESOURCE_IS_IN_MAINTENANCE_MODE => 5970,
+ ERROR_CLUSTER_AFFINITY_CONFLICT => 5971,
+ ERROR_CLUSTER_RESOURCE_IS_REPLICA_VIRTUAL_MACHINE => 5972,
+ ERROR_CLUSTER_UPGRADE_INCOMPATIBLE_VERSIONS => 5973,
+ ERROR_CLUSTER_UPGRADE_FIX_QUORUM_NOT_SUPPORTED => 5974,
+ ERROR_CLUSTER_UPGRADE_RESTART_REQUIRED => 5975,
+ ERROR_CLUSTER_UPGRADE_IN_PROGRESS => 5976,
+ ERROR_CLUSTER_UPGRADE_INCOMPLETE => 5977,
+ ERROR_CLUSTER_NODE_IN_GRACE_PERIOD => 5978,
+ ERROR_CLUSTER_CSV_IO_PAUSE_TIMEOUT => 5979,
+ ERROR_NODE_NOT_ACTIVE_CLUSTER_MEMBER => 5980,
+ ERROR_CLUSTER_RESOURCE_NOT_MONITORED => 5981,
+ ERROR_CLUSTER_RESOURCE_DOES_NOT_SUPPORT_UNMONITORED => 5982,
+ ERROR_CLUSTER_RESOURCE_IS_REPLICATED => 5983,
+ ERROR_CLUSTER_NODE_ISOLATED => 5984,
+ ERROR_CLUSTER_NODE_QUARANTINED => 5985,
+ ERROR_CLUSTER_DATABASE_UPDATE_CONDITION_FAILED => 5986,
+ ERROR_CLUSTER_SPACE_DEGRADED => 5987,
+ ERROR_CLUSTER_TOKEN_DELEGATION_NOT_SUPPORTED => 5988,
+ ERROR_CLUSTER_CSV_INVALID_HANDLE => 5989,
+ ERROR_CLUSTER_CSV_SUPPORTED_ONLY_ON_COORDINATOR => 5990,
+ ERROR_GROUPSET_NOT_AVAILABLE => 5991,
+ ERROR_GROUPSET_NOT_FOUND => 5992,
+ ERROR_GROUPSET_CANT_PROVIDE => 5993,
+ ERROR_CLUSTER_FAULT_DOMAIN_PARENT_NOT_FOUND => 5994,
+ ERROR_CLUSTER_FAULT_DOMAIN_INVALID_HIERARCHY => 5995,
+ ERROR_CLUSTER_FAULT_DOMAIN_FAILED_S2D_VALIDATION => 5996,
+ ERROR_CLUSTER_FAULT_DOMAIN_S2D_CONNECTIVITY_LOSS => 5997,
+ ERROR_CLUSTER_INVALID_INFRASTRUCTURE_FILESERVER_NAME => 5998,
+ ERROR_CLUSTERSET_MANAGEMENT_CLUSTER_UNREACHABLE => 5999,
ERROR_ENCRYPTION_FAILED => 6000,
ERROR_DECRYPTION_FAILED => 6001,
ERROR_FILE_ENCRYPTED => 6002,
@@ -1449,7 +2166,150 @@ BEGIN {
ERROR_VOLUME_NOT_SUPPORT_EFS => 6014,
ERROR_EFS_DISABLED => 6015,
ERROR_EFS_VERSION_NOT_SUPPORT => 6016,
+ ERROR_CS_ENCRYPTION_INVALID_SERVER_RESPONSE => 6017,
+ ERROR_CS_ENCRYPTION_UNSUPPORTED_SERVER => 6018,
+ ERROR_CS_ENCRYPTION_EXISTING_ENCRYPTED_FILE => 6019,
+ ERROR_CS_ENCRYPTION_NEW_ENCRYPTED_FILE => 6020,
+ ERROR_CS_ENCRYPTION_FILE_NOT_CSE => 6021,
+ ERROR_ENCRYPTION_POLICY_DENIES_OPERATION => 6022,
+ ERROR_WIP_ENCRYPTION_FAILED => 6023,
ERROR_NO_BROWSER_SERVERS_FOUND => 6118,
+ ERROR_CLUSTER_OBJECT_IS_CLUSTER_SET_VM => 6250,
+ ERROR_LOG_SECTOR_INVALID => 6600,
+ ERROR_LOG_SECTOR_PARITY_INVALID => 6601,
+ ERROR_LOG_SECTOR_REMAPPED => 6602,
+ ERROR_LOG_BLOCK_INCOMPLETE => 6603,
+ ERROR_LOG_INVALID_RANGE => 6604,
+ ERROR_LOG_BLOCKS_EXHAUSTED => 6605,
+ ERROR_LOG_READ_CONTEXT_INVALID => 6606,
+ ERROR_LOG_RESTART_INVALID => 6607,
+ ERROR_LOG_BLOCK_VERSION => 6608,
+ ERROR_LOG_BLOCK_INVALID => 6609,
+ ERROR_LOG_READ_MODE_INVALID => 6610,
+ ERROR_LOG_NO_RESTART => 6611,
+ ERROR_LOG_METADATA_CORRUPT => 6612,
+ ERROR_LOG_METADATA_INVALID => 6613,
+ ERROR_LOG_METADATA_INCONSISTENT => 6614,
+ ERROR_LOG_RESERVATION_INVALID => 6615,
+ ERROR_LOG_CANT_DELETE => 6616,
+ ERROR_LOG_CONTAINER_LIMIT_EXCEEDED => 6617,
+ ERROR_LOG_START_OF_LOG => 6618,
+ ERROR_LOG_POLICY_ALREADY_INSTALLED => 6619,
+ ERROR_LOG_POLICY_NOT_INSTALLED => 6620,
+ ERROR_LOG_POLICY_INVALID => 6621,
+ ERROR_LOG_POLICY_CONFLICT => 6622,
+ ERROR_LOG_PINNED_ARCHIVE_TAIL => 6623,
+ ERROR_LOG_RECORD_NONEXISTENT => 6624,
+ ERROR_LOG_RECORDS_RESERVED_INVALID => 6625,
+ ERROR_LOG_SPACE_RESERVED_INVALID => 6626,
+ ERROR_LOG_TAIL_INVALID => 6627,
+ ERROR_LOG_FULL => 6628,
+ ERROR_COULD_NOT_RESIZE_LOG => 6629,
+ ERROR_LOG_MULTIPLEXED => 6630,
+ ERROR_LOG_DEDICATED => 6631,
+ ERROR_LOG_ARCHIVE_NOT_IN_PROGRESS => 6632,
+ ERROR_LOG_ARCHIVE_IN_PROGRESS => 6633,
+ ERROR_LOG_EPHEMERAL => 6634,
+ ERROR_LOG_NOT_ENOUGH_CONTAINERS => 6635,
+ ERROR_LOG_CLIENT_ALREADY_REGISTERED => 6636,
+ ERROR_LOG_CLIENT_NOT_REGISTERED => 6637,
+ ERROR_LOG_FULL_HANDLER_IN_PROGRESS => 6638,
+ ERROR_LOG_CONTAINER_READ_FAILED => 6639,
+ ERROR_LOG_CONTAINER_WRITE_FAILED => 6640,
+ ERROR_LOG_CONTAINER_OPEN_FAILED => 6641,
+ ERROR_LOG_CONTAINER_STATE_INVALID => 6642,
+ ERROR_LOG_STATE_INVALID => 6643,
+ ERROR_LOG_PINNED => 6644,
+ ERROR_LOG_METADATA_FLUSH_FAILED => 6645,
+ ERROR_LOG_INCONSISTENT_SECURITY => 6646,
+ ERROR_LOG_APPENDED_FLUSH_FAILED => 6647,
+ ERROR_LOG_PINNED_RESERVATION => 6648,
+ ERROR_INVALID_TRANSACTION => 6700,
+ ERROR_TRANSACTION_NOT_ACTIVE => 6701,
+ ERROR_TRANSACTION_REQUEST_NOT_VALID => 6702,
+ ERROR_TRANSACTION_NOT_REQUESTED => 6703,
+ ERROR_TRANSACTION_ALREADY_ABORTED => 6704,
+ ERROR_TRANSACTION_ALREADY_COMMITTED => 6705,
+ ERROR_TM_INITIALIZATION_FAILED => 6706,
+ ERROR_RESOURCEMANAGER_READ_ONLY => 6707,
+ ERROR_TRANSACTION_NOT_JOINED => 6708,
+ ERROR_TRANSACTION_SUPERIOR_EXISTS => 6709,
+ ERROR_CRM_PROTOCOL_ALREADY_EXISTS => 6710,
+ ERROR_TRANSACTION_PROPAGATION_FAILED => 6711,
+ ERROR_CRM_PROTOCOL_NOT_FOUND => 6712,
+ ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER => 6713,
+ ERROR_CURRENT_TRANSACTION_NOT_VALID => 6714,
+ ERROR_TRANSACTION_NOT_FOUND => 6715,
+ ERROR_RESOURCEMANAGER_NOT_FOUND => 6716,
+ ERROR_ENLISTMENT_NOT_FOUND => 6717,
+ ERROR_TRANSACTIONMANAGER_NOT_FOUND => 6718,
+ ERROR_TRANSACTIONMANAGER_NOT_ONLINE => 6719,
+ ERROR_TRANSACTIONMANAGER_RECOVERY_NAME_COLLISION => 6720,
+ ERROR_TRANSACTION_NOT_ROOT => 6721,
+ ERROR_TRANSACTION_OBJECT_EXPIRED => 6722,
+ ERROR_TRANSACTION_RESPONSE_NOT_ENLISTED => 6723,
+ ERROR_TRANSACTION_RECORD_TOO_LONG => 6724,
+ ERROR_IMPLICIT_TRANSACTION_NOT_SUPPORTED => 6725,
+ ERROR_TRANSACTION_INTEGRITY_VIOLATED => 6726,
+ ERROR_TRANSACTIONMANAGER_IDENTITY_MISMATCH => 6727,
+ ERROR_RM_CANNOT_BE_FROZEN_FOR_SNAPSHOT => 6728,
+ ERROR_TRANSACTION_MUST_WRITETHROUGH => 6729,
+ ERROR_TRANSACTION_NO_SUPERIOR => 6730,
+ ERROR_HEURISTIC_DAMAGE_POSSIBLE => 6731,
+ ERROR_TRANSACTIONAL_CONFLICT => 6800,
+ ERROR_RM_NOT_ACTIVE => 6801,
+ ERROR_RM_METADATA_CORRUPT => 6802,
+ ERROR_DIRECTORY_NOT_RM => 6803,
+ ERROR_TRANSACTIONS_UNSUPPORTED_REMOTE => 6805,
+ ERROR_LOG_RESIZE_INVALID_SIZE => 6806,
+ ERROR_OBJECT_NO_LONGER_EXISTS => 6807,
+ ERROR_STREAM_MINIVERSION_NOT_FOUND => 6808,
+ ERROR_STREAM_MINIVERSION_NOT_VALID => 6809,
+ ERROR_MINIVERSION_INACCESSIBLE_FROM_SPECIFIED_TRANSACTION => 6810,
+ ERROR_CANT_OPEN_MINIVERSION_WITH_MODIFY_INTENT => 6811,
+ ERROR_CANT_CREATE_MORE_STREAM_MINIVERSIONS => 6812,
+ ERROR_REMOTE_FILE_VERSION_MISMATCH => 6814,
+ ERROR_HANDLE_NO_LONGER_VALID => 6815,
+ ERROR_NO_TXF_METADATA => 6816,
+ ERROR_LOG_CORRUPTION_DETECTED => 6817,
+ ERROR_CANT_RECOVER_WITH_HANDLE_OPEN => 6818,
+ ERROR_RM_DISCONNECTED => 6819,
+ ERROR_ENLISTMENT_NOT_SUPERIOR => 6820,
+ ERROR_RECOVERY_NOT_NEEDED => 6821,
+ ERROR_RM_ALREADY_STARTED => 6822,
+ ERROR_FILE_IDENTITY_NOT_PERSISTENT => 6823,
+ ERROR_CANT_BREAK_TRANSACTIONAL_DEPENDENCY => 6824,
+ ERROR_CANT_CROSS_RM_BOUNDARY => 6825,
+ ERROR_TXF_DIR_NOT_EMPTY => 6826,
+ ERROR_INDOUBT_TRANSACTIONS_EXIST => 6827,
+ ERROR_TM_VOLATILE => 6828,
+ ERROR_ROLLBACK_TIMER_EXPIRED => 6829,
+ ERROR_TXF_ATTRIBUTE_CORRUPT => 6830,
+ ERROR_EFS_NOT_ALLOWED_IN_TRANSACTION => 6831,
+ ERROR_TRANSACTIONAL_OPEN_NOT_ALLOWED => 6832,
+ ERROR_LOG_GROWTH_FAILED => 6833,
+ ERROR_TRANSACTED_MAPPING_UNSUPPORTED_REMOTE => 6834,
+ ERROR_TXF_METADATA_ALREADY_PRESENT => 6835,
+ ERROR_TRANSACTION_SCOPE_CALLBACKS_NOT_SET => 6836,
+ ERROR_TRANSACTION_REQUIRED_PROMOTION => 6837,
+ ERROR_CANNOT_EXECUTE_FILE_IN_TRANSACTION => 6838,
+ ERROR_TRANSACTIONS_NOT_FROZEN => 6839,
+ ERROR_TRANSACTION_FREEZE_IN_PROGRESS => 6840,
+ ERROR_NOT_SNAPSHOT_VOLUME => 6841,
+ ERROR_NO_SAVEPOINT_WITH_OPEN_FILES => 6842,
+ ERROR_DATA_LOST_REPAIR => 6843,
+ ERROR_SPARSE_NOT_ALLOWED_IN_TRANSACTION => 6844,
+ ERROR_TM_IDENTITY_MISMATCH => 6845,
+ ERROR_FLOATED_SECTION => 6846,
+ ERROR_CANNOT_ACCEPT_TRANSACTED_WORK => 6847,
+ ERROR_CANNOT_ABORT_TRANSACTIONS => 6848,
+ ERROR_BAD_CLUSTERS => 6849,
+ ERROR_COMPRESSION_NOT_ALLOWED_IN_TRANSACTION => 6850,
+ ERROR_VOLUME_DIRTY => 6851,
+ ERROR_NO_LINK_TRACKING_IN_TRANSACTION => 6852,
+ ERROR_OPERATION_NOT_SUPPORTED_IN_TRANSACTION => 6853,
+ ERROR_EXPIRED_HANDLE => 6854,
+ ERROR_TRANSACTION_NOT_ENLISTED => 6855,
ERROR_CTX_WINSTATION_NAME_INVALID => 7001,
ERROR_CTX_INVALID_PD => 7002,
ERROR_CTX_PD_NOT_FOUND => 7003,
@@ -1490,6 +2350,17 @@ BEGIN {
ERROR_CTX_SHADOW_NOT_RUNNING => 7057,
ERROR_CTX_SHADOW_ENDED_BY_MODE_CHANGE => 7058,
ERROR_ACTIVATION_COUNT_EXCEEDED => 7059,
+ ERROR_CTX_WINSTATIONS_DISABLED => 7060,
+ ERROR_CTX_ENCRYPTION_LEVEL_REQUIRED => 7061,
+ ERROR_CTX_SESSION_IN_USE => 7062,
+ ERROR_CTX_NO_FORCE_LOGOFF => 7063,
+ ERROR_CTX_ACCOUNT_RESTRICTION => 7064,
+ ERROR_RDP_PROTOCOL_ERROR => 7065,
+ ERROR_CTX_CDM_CONNECT => 7066,
+ ERROR_CTX_CDM_DISCONNECT => 7067,
+ ERROR_CTX_SECURITY_LAYER_ERROR => 7068,
+ ERROR_TS_INCOMPATIBLE_SESSIONS => 7069,
+ ERROR_TS_VIDEO_SUBSYSTEM_ERROR => 7070,
ELEMENT_STATUS_ID_VALID => 8192,
ES_NUMBER => 8192,
ETO_PDY => 8192,
@@ -1555,6 +2426,7 @@ BEGIN {
ERROR_DS_REFERRAL_LIMIT_EXCEEDED => 8260,
ERROR_DS_SORT_CONTROL_MISSING => 8261,
ERROR_DS_OFFSET_RANGE_ERROR => 8262,
+ ERROR_DS_RIDMGR_DISABLED => 8263,
ERROR_DS_ROOT_MUST_BE_NC => 8301,
ERROR_DS_ADD_REPLICA_INHIBITED => 8302,
ERROR_DS_ATT_NOT_DEF_IN_SCHEMA => 8303,
@@ -1871,6 +2743,42 @@ BEGIN {
ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER => 8615,
ERROR_DS_LDAP_SEND_QUEUE_FULL => 8616,
ERROR_DS_DRA_OUT_SCHEDULE_WINDOW => 8617,
+ ERROR_DS_POLICY_NOT_KNOWN => 8618,
+ ERROR_NO_SITE_SETTINGS_OBJECT => 8619,
+ ERROR_NO_SECRETS => 8620,
+ ERROR_NO_WRITABLE_DC_FOUND => 8621,
+ ERROR_DS_NO_SERVER_OBJECT => 8622,
+ ERROR_DS_NO_NTDSA_OBJECT => 8623,
+ ERROR_DS_NON_ASQ_SEARCH => 8624,
+ ERROR_DS_AUDIT_FAILURE => 8625,
+ ERROR_DS_INVALID_SEARCH_FLAG_SUBTREE => 8626,
+ ERROR_DS_INVALID_SEARCH_FLAG_TUPLE => 8627,
+ ERROR_DS_HIERARCHY_TABLE_TOO_DEEP => 8628,
+ ERROR_DS_DRA_CORRUPT_UTD_VECTOR => 8629,
+ ERROR_DS_DRA_SECRETS_DENIED => 8630,
+ ERROR_DS_RESERVED_MAPI_ID => 8631,
+ ERROR_DS_MAPI_ID_NOT_AVAILABLE => 8632,
+ ERROR_DS_DRA_MISSING_KRBTGT_SECRET => 8633,
+ ERROR_DS_DOMAIN_NAME_EXISTS_IN_FOREST => 8634,
+ ERROR_DS_FLAT_NAME_EXISTS_IN_FOREST => 8635,
+ ERROR_INVALID_USER_PRINCIPAL_NAME => 8636,
+ ERROR_DS_OID_MAPPED_GROUP_CANT_HAVE_MEMBERS => 8637,
+ ERROR_DS_OID_NOT_FOUND => 8638,
+ ERROR_DS_DRA_RECYCLED_TARGET => 8639,
+ ERROR_DS_DISALLOWED_NC_REDIRECT => 8640,
+ ERROR_DS_HIGH_ADLDS_FFL => 8641,
+ ERROR_DS_HIGH_DSA_VERSION => 8642,
+ ERROR_DS_LOW_ADLDS_FFL => 8643,
+ ERROR_DOMAIN_SID_SAME_AS_LOCAL_WORKSTATION => 8644,
+ ERROR_DS_UNDELETE_SAM_VALIDATION_FAILED => 8645,
+ ERROR_INCORRECT_ACCOUNT_TYPE => 8646,
+ ERROR_DS_SPN_VALUE_NOT_UNIQUE_IN_FOREST => 8647,
+ ERROR_DS_UPN_VALUE_NOT_UNIQUE_IN_FOREST => 8648,
+ ERROR_DS_MISSING_FOREST_TRUST => 8649,
+ ERROR_DS_VALUE_KEY_NOT_UNIQUE => 8650,
+ ERROR_WEAK_WHFBKEY_BLOCKED => 8651,
+ ERROR_DS_PER_ATTRIBUTE_AUTHZ_FAILED_DURING_ADD => 8652,
+ ERROR_LOCAL_POLICY_MODIFICATION_NOT_SUPPORTED => 8653,
WSAEINTR => 10004,
WSAEBADF => 10009,
WSAEACCES => 10013,
@@ -1942,18 +2850,31 @@ BEGIN {
ERROR_IPSEC_MM_POLICY_NOT_FOUND => 13004,
ERROR_BIDI_SCHEMA_NOT_SUPPORTED => 13005,
ERROR_IPSEC_MM_POLICY_IN_USE => 13005,
+ ERROR_BIDI_SET_DIFFERENT_TYPE => 13006,
ERROR_IPSEC_MM_FILTER_EXISTS => 13006,
+ ERROR_BIDI_SET_MULTIPLE_SCHEMAPATH => 13007,
ERROR_IPSEC_MM_FILTER_NOT_FOUND => 13007,
+ ERROR_BIDI_SET_INVALID_SCHEMAPATH => 13008,
ERROR_IPSEC_TRANSPORT_FILTER_EXISTS => 13008,
+ ERROR_BIDI_SET_UNKNOWN_FAILURE => 13009,
ERROR_IPSEC_TRANSPORT_FILTER_NOT_FOUND => 13009,
+ ERROR_BIDI_SCHEMA_WRITE_ONLY => 13010,
ERROR_IPSEC_MM_AUTH_EXISTS => 13010,
+ ERROR_BIDI_GET_REQUIRES_ARGUMENT => 13011,
ERROR_IPSEC_MM_AUTH_NOT_FOUND => 13011,
+ ERROR_BIDI_GET_ARGUMENT_NOT_SUPPORTED => 13012,
ERROR_IPSEC_MM_AUTH_IN_USE => 13012,
+ ERROR_BIDI_GET_MISSING_ARGUMENT => 13013,
ERROR_IPSEC_DEFAULT_MM_POLICY_NOT_FOUND => 13013,
+ ERROR_BIDI_DEVICE_CONFIG_UNCHANGED => 13014,
ERROR_IPSEC_DEFAULT_MM_AUTH_NOT_FOUND => 13014,
+ ERROR_BIDI_NO_LOCALIZED_RESOURCES => 13015,
ERROR_IPSEC_DEFAULT_QM_POLICY_NOT_FOUND => 13015,
+ ERROR_BIDI_NO_BIDI_SCHEMA_EXTENSIONS => 13016,
ERROR_IPSEC_TUNNEL_FILTER_EXISTS => 13016,
+ ERROR_BIDI_UNSUPPORTED_CLIENT_LANGUAGE => 13017,
ERROR_IPSEC_TUNNEL_FILTER_NOT_FOUND => 13017,
+ ERROR_BIDI_UNSUPPORTED_RESOURCE_FORMAT => 13018,
ERROR_IPSEC_MM_FILTER_PENDING_DELETION => 13018,
ERROR_IPSEC_TRANSPORT_FILTER_PENDING_DELETION => 13019,
ERROR_IPSEC_TUNNEL_FILTER_PENDING_DELETION => 13020,
@@ -1981,7 +2902,9 @@ BEGIN {
ERROR_IPSEC_IKE_INVALID_KEY_USAGE => 13818,
ERROR_IPSEC_IKE_INVALID_CERT_TYPE => 13819,
ERROR_IPSEC_IKE_NO_PRIVATE_KEY => 13820,
+ ERROR_IPSEC_IKE_SIMULTANEOUS_REKEY => 13821,
ERROR_IPSEC_IKE_DH_FAIL => 13822,
+ ERROR_IPSEC_IKE_CRITICAL_PAYLOAD_NOT_RECOGNIZED => 13823,
ERROR_IPSEC_IKE_INVALID_HEADER => 13824,
ERROR_IPSEC_IKE_NO_POLICY => 13825,
ERROR_IPSEC_IKE_INVALID_SIGNATURE => 13826,
@@ -2038,6 +2961,7 @@ BEGIN {
ERROR_IPSEC_IKE_RPC_DELETE => 13877,
ERROR_IPSEC_IKE_BENIGN_REINIT => 13878,
ERROR_IPSEC_IKE_INVALID_RESPONDER_LIFETIME_NOTIFY => 13879,
+ ERROR_IPSEC_IKE_INVALID_MAJOR_VERSION => 13880,
ERROR_IPSEC_IKE_INVALID_CERT_KEYLEN => 13881,
ERROR_IPSEC_IKE_MM_LIMIT => 13882,
ERROR_IPSEC_IKE_NEGOTIATION_DISABLED => 13883,
@@ -2195,6 +3119,7 @@ BEGIN {
ERROR_SMI_PRIMITIVE_INSTALLER_FAILED => 14108,
ERROR_GENERIC_COMMAND_FAILED => 14109,
ERROR_SXS_FILE_HASH_MISSING => 14110,
+ ERROR_SXS_DUPLICATE_ACTIVATABLE_CLASS => 14111,
ERROR_EVT_INVALID_CHANNEL_PATH => 15000,
ERROR_EVT_INVALID_QUERY => 15001,
ERROR_EVT_PUBLISHER_METADATA_NOT_FOUND => 15002,
@@ -2269,6 +3194,26 @@ BEGIN {
ERROR_MRM_INDETERMINATE_QUALIFIER_VALUE => 15138,
ERROR_MRM_AUTOMERGE_ENABLED => 15139,
ERROR_MRM_TOO_MANY_RESOURCES => 15140,
+ ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_MERGE => 15141,
+ ERROR_MRM_UNSUPPORTED_FILE_TYPE_FOR_LOAD_UNLOAD_PRI_FILE => 15142,
+ ERROR_MRM_NO_CURRENT_VIEW_ON_THREAD => 15143,
+ ERROR_DIFFERENT_PROFILE_RESOURCE_MANAGER_EXIST => 15144,
+ ERROR_OPERATION_NOT_ALLOWED_FROM_SYSTEM_COMPONENT => 15145,
+ ERROR_MRM_DIRECT_REF_TO_NON_DEFAULT_RESOURCE => 15146,
+ ERROR_MRM_GENERATION_COUNT_MISMATCH => 15147,
+ ERROR_PRI_MERGE_VERSION_MISMATCH => 15148,
+ ERROR_PRI_MERGE_MISSING_SCHEMA => 15149,
+ ERROR_PRI_MERGE_LOAD_FILE_FAILED => 15150,
+ ERROR_PRI_MERGE_ADD_FILE_FAILED => 15151,
+ ERROR_PRI_MERGE_WRITE_FILE_FAILED => 15152,
+ ERROR_PRI_MERGE_MULTIPLE_PACKAGE_FAMILIES_NOT_ALLOWED => 15153,
+ ERROR_PRI_MERGE_MULTIPLE_MAIN_PACKAGES_NOT_ALLOWED => 15154,
+ ERROR_PRI_MERGE_BUNDLE_PACKAGES_NOT_ALLOWED => 15155,
+ ERROR_PRI_MERGE_MAIN_PACKAGE_REQUIRED => 15156,
+ ERROR_PRI_MERGE_RESOURCE_PACKAGE_REQUIRED => 15157,
+ ERROR_PRI_MERGE_INVALID_FILE_NAME => 15158,
+ ERROR_MRM_PACKAGE_NOT_FOUND => 15159,
+ ERROR_MRM_MISSING_DEFAULT_LANGUAGE => 15160,
ERROR_MCA_INVALID_CAPABILITIES_STRING => 15200,
ERROR_MCA_INVALID_VCP_VERSION => 15201,
ERROR_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION => 15202,
@@ -2322,6 +3267,49 @@ BEGIN {
ERROR_APPX_INTEGRITY_FAILURE_CLR_NGEN => 15624,
ERROR_RESILIENCY_FILE_CORRUPT => 15625,
ERROR_INSTALL_FIREWALL_SERVICE_NOT_RUNNING => 15626,
+ ERROR_PACKAGE_MOVE_FAILED => 15627,
+ ERROR_INSTALL_VOLUME_NOT_EMPTY => 15628,
+ ERROR_INSTALL_VOLUME_OFFLINE => 15629,
+ ERROR_INSTALL_VOLUME_CORRUPT => 15630,
+ ERROR_NEEDS_REGISTRATION => 15631,
+ ERROR_INSTALL_WRONG_PROCESSOR_ARCHITECTURE => 15632,
+ ERROR_DEV_SIDELOAD_LIMIT_EXCEEDED => 15633,
+ ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE => 15634,
+ ERROR_PACKAGE_NOT_SUPPORTED_ON_FILESYSTEM => 15635,
+ ERROR_PACKAGE_MOVE_BLOCKED_BY_STREAMING => 15636,
+ ERROR_INSTALL_OPTIONAL_PACKAGE_APPLICATIONID_NOT_UNIQUE => 15637,
+ ERROR_PACKAGE_STAGING_ONHOLD => 15638,
+ ERROR_INSTALL_INVALID_RELATED_SET_UPDATE => 15639,
+ ERROR_INSTALL_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY => 15640,
+ ERROR_DEPLOYMENT_BLOCKED_BY_USER_LOG_OFF => 15641,
+ ERROR_PROVISION_OPTIONAL_PACKAGE_REQUIRES_MAIN_PACKAGE_PROVISIONED => 15642,
+ ERROR_PACKAGES_REPUTATION_CHECK_FAILED => 15643,
+ ERROR_PACKAGES_REPUTATION_CHECK_TIMEDOUT => 15644,
+ ERROR_DEPLOYMENT_OPTION_NOT_SUPPORTED => 15645,
+ ERROR_APPINSTALLER_ACTIVATION_BLOCKED => 15646,
+ ERROR_REGISTRATION_FROM_REMOTE_DRIVE_NOT_SUPPORTED => 15647,
+ ERROR_APPX_RAW_DATA_WRITE_FAILED => 15648,
+ ERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_PACKAGE => 15649,
+ ERROR_DEPLOYMENT_BLOCKED_BY_VOLUME_POLICY_MACHINE => 15650,
+ ERROR_DEPLOYMENT_BLOCKED_BY_PROFILE_POLICY => 15651,
+ ERROR_DEPLOYMENT_FAILED_CONFLICTING_MUTABLE_PACKAGE_DIRECTORY => 15652,
+ ERROR_SINGLETON_RESOURCE_INSTALLED_IN_ACTIVE_USER => 15653,
+ ERROR_DIFFERENT_VERSION_OF_PACKAGED_SERVICE_INSTALLED => 15654,
+ ERROR_SERVICE_EXISTS_AS_NON_PACKAGED_SERVICE => 15655,
+ ERROR_PACKAGED_SERVICE_REQUIRES_ADMIN_PRIVILEGES => 15656,
+ ERROR_REDIRECTION_TO_DEFAULT_ACCOUNT_NOT_ALLOWED => 15657,
+ ERROR_PACKAGE_LACKS_CAPABILITY_TO_DEPLOY_ON_HOST => 15658,
+ ERROR_UNSIGNED_PACKAGE_INVALID_CONTENT => 15659,
+ ERROR_UNSIGNED_PACKAGE_INVALID_PUBLISHER_NAMESPACE => 15660,
+ ERROR_SIGNED_PACKAGE_INVALID_PUBLISHER_NAMESPACE => 15661,
+ ERROR_PACKAGE_EXTERNAL_LOCATION_NOT_ALLOWED => 15662,
+ ERROR_INSTALL_FULLTRUST_HOSTRUNTIME_REQUIRES_MAIN_PACKAGE_FULLTRUST_CAPABILITY => 15663,
+ ERROR_PACKAGE_LACKS_CAPABILITY_FOR_MANDATORY_STARTUPTASKS => 15664,
+ ERROR_INSTALL_RESOLVE_HOSTRUNTIME_DEPENDENCY_FAILED => 15665,
+ ERROR_MACHINE_SCOPE_NOT_ALLOWED => 15666,
+ ERROR_CLASSIC_COMPAT_MODE_NOT_ALLOWED => 15667,
+ ERROR_STAGEFROMUPDATEAGENT_PACKAGE_NOT_APPLICABLE => 15668,
+ ERROR_PACKAGE_NOT_REGISTERED_FOR_USER => 15669,
ERROR_STATE_LOAD_STORE_FAILED => 15800,
ERROR_STATE_GET_VERSION_FAILED => 15801,
ERROR_STATE_SET_VERSION_FAILED => 15802,
@@ -2349,6 +3337,11 @@ BEGIN {
EVENT_CONSOLE_LAYOUT => 16389,
EVENT_CONSOLE_START_APPLICATION => 16390,
EVENT_CONSOLE_END_APPLICATION => 16391,
+ EVENT_CONSOLE_END => 16639,
+ EVENT_UIA_EVENTID_START => 19968,
+ EVENT_UIA_EVENTID_END => 20223,
+ EVENT_UIA_PROPID_START => 29952,
+ EVENT_UIA_PROPID_END => 30207,
ELEMENT_STATUS_NOT_BUS => 32768,
EVENT_OBJECT_CREATE => 32768,
EVENT_OBJECT_DESTROY => 32769,
@@ -2369,8 +3362,30 @@ BEGIN {
EVENT_OBJECT_HELPCHANGE => 32784,
EVENT_OBJECT_DEFACTIONCHANGE => 32785,
EVENT_OBJECT_ACCELERATORCHANGE => 32786,
+ EVENT_OBJECT_INVOKED => 32787,
+ EVENT_OBJECT_TEXTSELECTIONCHANGED => 32788,
+ EVENT_OBJECT_CONTENTSCROLLED => 32789,
+ EVENT_SYSTEM_ARRANGMENTPREVIEW => 32790,
+ EVENT_OBJECT_CLOAKED => 32791,
+ EVENT_OBJECT_UNCLOAKED => 32792,
+ EVENT_OBJECT_LIVEREGIONCHANGED => 32793,
+ EVENT_OBJECT_HOSTEDOBJECTSINVALIDATED => 32800,
+ EVENT_OBJECT_DRAGSTART => 32801,
+ EVENT_OBJECT_DRAGCANCEL => 32802,
+ EVENT_OBJECT_DRAGCOMPLETE => 32803,
+ EVENT_OBJECT_DRAGENTER => 32804,
+ EVENT_OBJECT_DRAGLEAVE => 32805,
+ EVENT_OBJECT_DRAGDROPPED => 32806,
+ EVENT_OBJECT_IME_SHOW => 32807,
+ EVENT_OBJECT_IME_HIDE => 32808,
+ EVENT_OBJECT_IME_CHANGE => 32809,
+ EVENT_OBJECT_TEXTEDIT_CONVERSIONTARGETCHANGED => 32816,
+ EVENT_OBJECT_END => 33023,
+ EVENT_AIA_START => 40960,
+ EVENT_AIA_END => 45055,
EC_USEFONTINFO => 65535,
EMBDHLP_DELAYCREATE => 65536,
+ ETO_REVERSE_INDEX_MAP => 65536,
ENLISTMENT_GENERIC_READ => 131073,
ENLISTMENT_GENERIC_EXECUTE => 131100,
ENLISTMENT_GENERIC_WRITE => 131102,
@@ -2384,14 +3399,34 @@ BEGIN {
ENLISTMENT_ALL_ACCESS => 983071,
ERROR_FLT_IO_COMPLETE => 2031617,
EVENT_ALL_ACCESS => 2031619,
+ ERROR_MONITOR_NO_DESCRIPTOR => 2494465,
+ ERROR_MONITOR_UNKNOWN_DESCRIPTOR_FORMAT => 2494466,
+ ERROR_GRAPHICS_MODE_NOT_PINNED => 2499335,
+ ERROR_GRAPHICS_NO_PREFERRED_MODE => 2499358,
+ ERROR_GRAPHICS_DATASET_IS_EMPTY => 2499403,
+ ERROR_GRAPHICS_NO_MORE_ELEMENTS_IN_DATASET => 2499404,
+ ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_PINNED => 2499409,
+ ERROR_NDIS_INDICATION_REQUIRED => 3407873,
+ ERROR_HV_PENDING_PAGE_REQUESTS => 3473497,
ELEMENT_STATUS_INVERT => 4194304,
EWX_HYBRID_SHUTDOWN => 4194304,
ELEMENT_STATUS_SVALID => 8388608,
+ ERROR_SPACES_POOL_WAS_DELETED => 15138817,
EWX_BOOTOPTIONS => 16777216,
+ EWX_ARSO => 67108864,
+ EWX_CHECK_SAFE_FOR_SERVER => 134217728,
ELEMENT_STATUS_PVOLTAG => 268435456,
+ EWX_SYSTEM_INITIATED => 268435456,
ELEMENT_STATUS_AVOLTAG => 536870912,
ENDSESSION_CRITICAL => 1073741824,
ERROR_SEVERITY_INFORMATIONAL => 1073741824,
+ ERROR_GRAPHICS_PARTIAL_DATA_POPULATED => 1076240394,
+ ERROR_GRAPHICS_SKIP_ALLOCATION_PREPARATION => 1076240897,
+ ERROR_GRAPHICS_UNKNOWN_CHILD_STATUS => 1076241455,
+ ERROR_GRAPHICS_LEADLINK_START_DEFERRED => 1076241463,
+ ERROR_GRAPHICS_POLLING_TOO_FREQUENTLY => 1076241465,
+ ERROR_GRAPHICS_START_DEFERRED => 1076241466,
+ ERROR_GRAPHICS_DEPENDABLE_CHILD_STATUS => 1076241468,
ENHMETA_SIGNATURE => 1179469088,
EPS_SIGNATURE => 1179865157,
EVENT_MAX => 2147483647,
@@ -2404,6 +3439,15 @@ BEGIN {
EXCEPTION_BREAKPOINT => 2147483651,
EXCEPTION_SINGLE_STEP => 2147483652,
E_PENDING => 2147483658,
+ E_BOUNDS => 2147483659,
+ E_CHANGED_STATE => 2147483660,
+ E_ILLEGAL_STATE_CHANGE => 2147483661,
+ E_ILLEGAL_METHOD_CALL => 2147483662,
+ E_STRING_NOT_NULL_TERMINATED => 2147483671,
+ E_ILLEGAL_DELEGATE_ASSIGNMENT => 2147483672,
+ E_ASYNC_OPERATION_NOT_STARTED => 2147483673,
+ E_APPLICATION_EXITING => 2147483674,
+ E_APPLICATION_VIEW_EXITING => 2147483675,
E_NOTIMPL => 2147500033,
E_NOINTERFACE => 2147500034,
E_POINTER => 2147500035,
@@ -2434,6 +3478,7 @@ BEGIN {
E_HANDLE => 2147942406,
E_OUTOFMEMORY => 2147942414,
E_INVALIDARG => 2147942487,
+ ERROR_CRED_REQUIRES_CONFIRMATION => 2148102169,
ERROR_FLT_NO_HANDLER_DEFINED => 2149515265,
ERROR_FLT_CONTEXT_ALREADY_DEFINED => 2149515266,
ERROR_FLT_INVALID_ASYNCHRONOUS_REQUEST => 2149515267,
@@ -2464,6 +3509,230 @@ BEGIN {
ERROR_FLT_CONTEXT_ALREADY_LINKED => 2149515292,
ERROR_FLT_NO_WAITER_FOR_REPLY => 2149515296,
ERROR_FLT_REGISTRATION_BUSY => 2149515299,
+ ERROR_FLT_WCOS_NOT_SUPPORTED => 2149515300,
+ ERROR_HUNG_DISPLAY_DRIVER_THREAD => 2149974017,
+ E_MONITOR_RESOLUTION_TOO_LOW => 2150040144,
+ E_ELEVATED_ACTIVATION_NOT_SUPPORTED => 2150040145,
+ E_UAC_DISABLED => 2150040146,
+ E_FULL_ADMIN_NOT_SUPPORTED => 2150040147,
+ E_APPLICATION_NOT_REGISTERED => 2150040148,
+ E_MULTIPLE_EXTENSIONS_FOR_APPLICATION => 2150040149,
+ E_MULTIPLE_PACKAGES_FOR_FAMILY => 2150040150,
+ E_APPLICATION_MANAGER_NOT_RUNNING => 2150040151,
+ E_APPLICATION_ACTIVATION_TIMED_OUT => 2150040154,
+ E_APPLICATION_ACTIVATION_EXEC_FAILURE => 2150040155,
+ E_APPLICATION_TEMPORARY_LICENSE_ERROR => 2150040156,
+ E_APPLICATION_TRIAL_LICENSE_EXPIRED => 2150040157,
+ E_SKYDRIVE_ROOT_TARGET_FILE_SYSTEM_NOT_SUPPORTED => 2150040160,
+ E_SKYDRIVE_ROOT_TARGET_OVERLAP => 2150040161,
+ E_SKYDRIVE_ROOT_TARGET_CANNOT_INDEX => 2150040162,
+ E_SKYDRIVE_FILE_NOT_UPLOADED => 2150040163,
+ E_SKYDRIVE_UPDATE_AVAILABILITY_FAIL => 2150040164,
+ E_SKYDRIVE_ROOT_TARGET_VOLUME_ROOT_NOT_SUPPORTED => 2150040165,
+ ERROR_NDIS_INTERFACE_CLOSING => 2150891522,
+ ERROR_NDIS_BAD_VERSION => 2150891524,
+ ERROR_NDIS_BAD_CHARACTERISTICS => 2150891525,
+ ERROR_NDIS_ADAPTER_NOT_FOUND => 2150891526,
+ ERROR_NDIS_OPEN_FAILED => 2150891527,
+ ERROR_NDIS_DEVICE_FAILED => 2150891528,
+ ERROR_NDIS_MULTICAST_FULL => 2150891529,
+ ERROR_NDIS_MULTICAST_EXISTS => 2150891530,
+ ERROR_NDIS_MULTICAST_NOT_FOUND => 2150891531,
+ ERROR_NDIS_REQUEST_ABORTED => 2150891532,
+ ERROR_NDIS_RESET_IN_PROGRESS => 2150891533,
+ ERROR_NDIS_INVALID_PACKET => 2150891535,
+ ERROR_NDIS_INVALID_DEVICE_REQUEST => 2150891536,
+ ERROR_NDIS_ADAPTER_NOT_READY => 2150891537,
+ ERROR_NDIS_INVALID_LENGTH => 2150891540,
+ ERROR_NDIS_INVALID_DATA => 2150891541,
+ ERROR_NDIS_BUFFER_TOO_SHORT => 2150891542,
+ ERROR_NDIS_INVALID_OID => 2150891543,
+ ERROR_NDIS_ADAPTER_REMOVED => 2150891544,
+ ERROR_NDIS_UNSUPPORTED_MEDIA => 2150891545,
+ ERROR_NDIS_GROUP_ADDRESS_IN_USE => 2150891546,
+ ERROR_NDIS_FILE_NOT_FOUND => 2150891547,
+ ERROR_NDIS_ERROR_READING_FILE => 2150891548,
+ ERROR_NDIS_ALREADY_MAPPED => 2150891549,
+ ERROR_NDIS_RESOURCE_CONFLICT => 2150891550,
+ ERROR_NDIS_MEDIA_DISCONNECTED => 2150891551,
+ ERROR_NDIS_INVALID_ADDRESS => 2150891554,
+ ERROR_NDIS_PAUSED => 2150891562,
+ ERROR_NDIS_INTERFACE_NOT_FOUND => 2150891563,
+ ERROR_NDIS_UNSUPPORTED_REVISION => 2150891564,
+ ERROR_NDIS_INVALID_PORT => 2150891565,
+ ERROR_NDIS_INVALID_PORT_STATE => 2150891566,
+ ERROR_NDIS_LOW_POWER_STATE => 2150891567,
+ ERROR_NDIS_REINIT_REQUIRED => 2150891568,
+ ERROR_NDIS_NO_QUEUES => 2150891569,
+ ERROR_NDIS_NOT_SUPPORTED => 2150891707,
+ ERROR_NDIS_DOT11_AUTO_CONFIG_ENABLED => 2150899712,
+ ERROR_NDIS_DOT11_MEDIA_IN_USE => 2150899713,
+ ERROR_NDIS_DOT11_POWER_STATE_INVALID => 2150899714,
+ ERROR_NDIS_PM_WOL_PATTERN_LIST_FULL => 2150899715,
+ ERROR_NDIS_PM_PROTOCOL_OFFLOAD_LIST_FULL => 2150899716,
+ ERROR_NDIS_DOT11_AP_CHANNEL_CURRENTLY_NOT_AVAILABLE => 2150899717,
+ ERROR_NDIS_DOT11_AP_BAND_CURRENTLY_NOT_AVAILABLE => 2150899718,
+ ERROR_NDIS_DOT11_AP_CHANNEL_NOT_ALLOWED => 2150899719,
+ ERROR_NDIS_DOT11_AP_BAND_NOT_ALLOWED => 2150899720,
+ ERROR_VID_REMOTE_NODE_PARENT_GPA_PAGES_USED => 2151088129,
+ ERROR_VOLMGR_INCOMPLETE_REGENERATION => 2151153665,
+ ERROR_VOLMGR_INCOMPLETE_DISK_MIGRATION => 2151153666,
+ ERROR_BCD_NOT_ALL_ENTRIES_IMPORTED => 2151219201,
+ ERROR_BCD_NOT_ALL_ENTRIES_SYNCHRONIZED => 2151219203,
+ ERROR_QUERY_STORAGE_ERROR => 2151284737,
+ ERROR_QUIC_HANDSHAKE_FAILURE => 2151743488,
+ ERROR_QUIC_VER_NEG_FAILURE => 2151743489,
+ ERROR_QUIC_USER_CANCELED => 2151743490,
+ ERROR_QUIC_INTERNAL_ERROR => 2151743491,
+ ERROR_QUIC_PROTOCOL_VIOLATION => 2151743492,
+ ERROR_QUIC_CONNECTION_IDLE => 2151743493,
+ ERROR_QUIC_CONNECTION_TIMEOUT => 2151743494,
+ ERROR_QUIC_ALPN_NEG_FAILURE => 2151743495,
+ E_MBN_CONTEXT_NOT_ACTIVATED => 2153021953,
+ E_MBN_BAD_SIM => 2153021954,
+ E_MBN_DATA_CLASS_NOT_AVAILABLE => 2153021955,
+ E_MBN_INVALID_ACCESS_STRING => 2153021956,
+ E_MBN_MAX_ACTIVATED_CONTEXTS => 2153021957,
+ E_MBN_PACKET_SVC_DETACHED => 2153021958,
+ E_MBN_PROVIDER_NOT_VISIBLE => 2153021959,
+ E_MBN_RADIO_POWER_OFF => 2153021960,
+ E_MBN_SERVICE_NOT_ACTIVATED => 2153021961,
+ E_MBN_SIM_NOT_INSERTED => 2153021962,
+ E_MBN_VOICE_CALL_IN_PROGRESS => 2153021963,
+ E_MBN_INVALID_CACHE => 2153021964,
+ E_MBN_NOT_REGISTERED => 2153021965,
+ E_MBN_PROVIDERS_NOT_FOUND => 2153021966,
+ E_MBN_PIN_NOT_SUPPORTED => 2153021967,
+ E_MBN_PIN_REQUIRED => 2153021968,
+ E_MBN_PIN_DISABLED => 2153021969,
+ E_MBN_FAILURE => 2153021970,
+ E_MBN_INVALID_PROFILE => 2153021976,
+ E_MBN_DEFAULT_PROFILE_EXIST => 2153021977,
+ E_MBN_SMS_ENCODING_NOT_SUPPORTED => 2153021984,
+ E_MBN_SMS_FILTER_NOT_SUPPORTED => 2153021985,
+ E_MBN_SMS_INVALID_MEMORY_INDEX => 2153021986,
+ E_MBN_SMS_LANG_NOT_SUPPORTED => 2153021987,
+ E_MBN_SMS_MEMORY_FAILURE => 2153021988,
+ E_MBN_SMS_NETWORK_TIMEOUT => 2153021989,
+ E_MBN_SMS_UNKNOWN_SMSC_ADDRESS => 2153021990,
+ E_MBN_SMS_FORMAT_NOT_SUPPORTED => 2153021991,
+ E_MBN_SMS_OPERATION_NOT_ALLOWED => 2153021992,
+ E_MBN_SMS_MEMORY_FULL => 2153021993,
+ EAS_E_POLICY_NOT_MANAGED_BY_OS => 2153054209,
+ EAS_E_POLICY_COMPLIANT_WITH_ACTIONS => 2153054210,
+ EAS_E_REQUESTED_POLICY_NOT_ENFORCEABLE => 2153054211,
+ EAS_E_CURRENT_USER_HAS_BLANK_PASSWORD => 2153054212,
+ EAS_E_REQUESTED_POLICY_PASSWORD_EXPIRATION_INCOMPATIBLE => 2153054213,
+ EAS_E_USER_CANNOT_CHANGE_PASSWORD => 2153054214,
+ EAS_E_ADMINS_HAVE_BLANK_PASSWORD => 2153054215,
+ EAS_E_ADMINS_CANNOT_CHANGE_PASSWORD => 2153054216,
+ EAS_E_LOCAL_CONTROLLED_USERS_CANNOT_CHANGE_PASSWORD => 2153054217,
+ EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CONNECTED_ADMINS => 2153054218,
+ EAS_E_CONNECTED_ADMINS_NEED_TO_CHANGE_PASSWORD => 2153054219,
+ EAS_E_PASSWORD_POLICY_NOT_ENFORCEABLE_FOR_CURRENT_CONNECTED_USER => 2153054220,
+ EAS_E_CURRENT_CONNECTED_USER_NEED_TO_CHANGE_PASSWORD => 2153054221,
+ E_BLUETOOTH_ATT_INVALID_HANDLE => 2154102785,
+ E_BLUETOOTH_ATT_READ_NOT_PERMITTED => 2154102786,
+ E_BLUETOOTH_ATT_WRITE_NOT_PERMITTED => 2154102787,
+ E_BLUETOOTH_ATT_INVALID_PDU => 2154102788,
+ E_BLUETOOTH_ATT_INSUFFICIENT_AUTHENTICATION => 2154102789,
+ E_BLUETOOTH_ATT_REQUEST_NOT_SUPPORTED => 2154102790,
+ E_BLUETOOTH_ATT_INVALID_OFFSET => 2154102791,
+ E_BLUETOOTH_ATT_INSUFFICIENT_AUTHORIZATION => 2154102792,
+ E_BLUETOOTH_ATT_PREPARE_QUEUE_FULL => 2154102793,
+ E_BLUETOOTH_ATT_ATTRIBUTE_NOT_FOUND => 2154102794,
+ E_BLUETOOTH_ATT_ATTRIBUTE_NOT_LONG => 2154102795,
+ E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE => 2154102796,
+ E_BLUETOOTH_ATT_INVALID_ATTRIBUTE_VALUE_LENGTH => 2154102797,
+ E_BLUETOOTH_ATT_UNLIKELY => 2154102798,
+ E_BLUETOOTH_ATT_INSUFFICIENT_ENCRYPTION => 2154102799,
+ E_BLUETOOTH_ATT_UNSUPPORTED_GROUP_TYPE => 2154102800,
+ E_BLUETOOTH_ATT_INSUFFICIENT_RESOURCES => 2154102801,
+ E_BLUETOOTH_ATT_UNKNOWN_ERROR => 2154106880,
+ E_AUDIO_ENGINE_NODE_NOT_FOUND => 2154168321,
+ E_HDAUDIO_EMPTY_CONNECTION_LIST => 2154168322,
+ E_HDAUDIO_CONNECTION_LIST_NOT_SUPPORTED => 2154168323,
+ E_HDAUDIO_NO_LOGICAL_DEVICES_CREATED => 2154168324,
+ E_HDAUDIO_NULL_LINKED_LIST_ENTRY => 2154168325,
+ ERROR_VOLSNAP_BOOTFILE_NOT_VALID => 2156003329,
+ ERROR_VOLSNAP_ACTIVATION_TIMEOUT => 2156003330,
+ ERROR_VOLSNAP_NO_BYPASSIO_WITH_SNAPSHOT => 2156003331,
+ ERROR_TIERING_NOT_SUPPORTED_ON_VOLUME => 2156068865,
+ ERROR_TIERING_VOLUME_DISMOUNT_IN_PROGRESS => 2156068866,
+ ERROR_TIERING_STORAGE_TIER_NOT_FOUND => 2156068867,
+ ERROR_TIERING_INVALID_FILE_ID => 2156068868,
+ ERROR_TIERING_WRONG_CLUSTER_NODE => 2156068869,
+ ERROR_TIERING_ALREADY_PROCESSING => 2156068870,
+ ERROR_TIERING_CANNOT_PIN_OBJECT => 2156068871,
+ ERROR_TIERING_FILE_IS_NOT_PINNED => 2156068872,
+ ERROR_NOT_A_TIERED_VOLUME => 2156068873,
+ ERROR_ATTRIBUTE_NOT_PRESENT => 2156068874,
+ ERROR_DBG_CREATE_PROCESS_FAILURE_LOCKDOWN => 2159017985,
+ ERROR_DBG_ATTACH_PROCESS_FAILURE_LOCKDOWN => 2159017986,
+ ERROR_DBG_CONNECT_SERVER_FAILURE_LOCKDOWN => 2159017987,
+ ERROR_DBG_START_SERVER_FAILURE_LOCKDOWN => 2159017988,
+ ERROR_SPACES_FAULT_DOMAIN_TYPE_INVALID => 2162622465,
+ ERROR_SPACES_INTERNAL_ERROR => 2162622466,
+ ERROR_SPACES_RESILIENCY_TYPE_INVALID => 2162622467,
+ ERROR_SPACES_DRIVE_SECTOR_SIZE_INVALID => 2162622468,
+ ERROR_SPACES_DRIVE_REDUNDANCY_INVALID => 2162622470,
+ ERROR_SPACES_NUMBER_OF_DATA_COPIES_INVALID => 2162622471,
+ ERROR_SPACES_PARITY_LAYOUT_INVALID => 2162622472,
+ ERROR_SPACES_INTERLEAVE_LENGTH_INVALID => 2162622473,
+ ERROR_SPACES_NUMBER_OF_COLUMNS_INVALID => 2162622474,
+ ERROR_SPACES_NOT_ENOUGH_DRIVES => 2162622475,
+ ERROR_SPACES_EXTENDED_ERROR => 2162622476,
+ ERROR_SPACES_PROVISIONING_TYPE_INVALID => 2162622477,
+ ERROR_SPACES_ALLOCATION_SIZE_INVALID => 2162622478,
+ ERROR_SPACES_ENCLOSURE_AWARE_INVALID => 2162622479,
+ ERROR_SPACES_WRITE_CACHE_SIZE_INVALID => 2162622480,
+ ERROR_SPACES_NUMBER_OF_GROUPS_INVALID => 2162622481,
+ ERROR_SPACES_DRIVE_OPERATIONAL_STATE_INVALID => 2162622482,
+ ERROR_SPACES_ENTRY_INCOMPLETE => 2162622483,
+ ERROR_SPACES_ENTRY_INVALID => 2162622484,
+ ERROR_SPACES_UPDATE_COLUMN_STATE => 2162622485,
+ ERROR_SPACES_MAP_REQUIRED => 2162622486,
+ ERROR_SPACES_UNSUPPORTED_VERSION => 2162622487,
+ ERROR_SPACES_CORRUPT_METADATA => 2162622488,
+ ERROR_SPACES_DRT_FULL => 2162622489,
+ ERROR_SPACES_INCONSISTENCY => 2162622490,
+ ERROR_SPACES_LOG_NOT_READY => 2162622491,
+ ERROR_SPACES_NO_REDUNDANCY => 2162622492,
+ ERROR_SPACES_DRIVE_NOT_READY => 2162622493,
+ ERROR_SPACES_DRIVE_SPLIT => 2162622494,
+ ERROR_SPACES_DRIVE_LOST_DATA => 2162622495,
+ ERROR_SPACES_MARK_DIRTY => 2162622496,
+ ERROR_SPACES_FLUSH_METADATA => 2162622501,
+ ERROR_SPACES_CACHE_FULL => 2162622502,
+ E_INVALID_PROTOCOL_OPERATION => 2205548545,
+ E_INVALID_PROTOCOL_FORMAT => 2205548546,
+ E_PROTOCOL_EXTENSIONS_NOT_SUPPORTED => 2205548547,
+ E_SUBPROTOCOL_NOT_SUPPORTED => 2205548548,
+ E_PROTOCOL_VERSION_NOT_SUPPORTED => 2205548549,
+ E_SYNCENGINE_FILE_SIZE_OVER_LIMIT => 2281877505,
+ E_SYNCENGINE_FILE_SIZE_EXCEEDS_REMAINING_QUOTA => 2281877506,
+ E_SYNCENGINE_UNSUPPORTED_FILE_NAME => 2281877507,
+ E_SYNCENGINE_FOLDER_ITEM_COUNT_LIMIT_EXCEEDED => 2281877508,
+ E_SYNCENGINE_FILE_SYNC_PARTNER_ERROR => 2281877509,
+ E_SYNCENGINE_SYNC_PAUSED_BY_SERVICE => 2281877510,
+ E_SYNCENGINE_FILE_IDENTIFIER_UNKNOWN => 2281881602,
+ E_SYNCENGINE_SERVICE_AUTHENTICATION_FAILED => 2281881603,
+ E_SYNCENGINE_UNKNOWN_SERVICE_ERROR => 2281881604,
+ E_SYNCENGINE_SERVICE_RETURNED_UNEXPECTED_SIZE => 2281881605,
+ E_SYNCENGINE_REQUEST_BLOCKED_BY_SERVICE => 2281881606,
+ E_SYNCENGINE_REQUEST_BLOCKED_DUE_TO_CLIENT_ERROR => 2281881607,
+ E_SYNCENGINE_FOLDER_INACCESSIBLE => 2281885697,
+ E_SYNCENGINE_UNSUPPORTED_FOLDER_NAME => 2281885698,
+ E_SYNCENGINE_UNSUPPORTED_MARKET => 2281885699,
+ E_SYNCENGINE_PATH_LENGTH_LIMIT_EXCEEDED => 2281885700,
+ E_SYNCENGINE_REMOTE_PATH_LENGTH_LIMIT_EXCEEDED => 2281885701,
+ E_SYNCENGINE_CLIENT_UPDATE_NEEDED => 2281885702,
+ E_SYNCENGINE_PROXY_AUTHENTICATION_REQUIRED => 2281885703,
+ E_SYNCENGINE_STORAGE_SERVICE_PROVISIONING_FAILED => 2281885704,
+ E_SYNCENGINE_UNSUPPORTED_REPARSE_POINT => 2281885705,
+ E_SYNCENGINE_STORAGE_SERVICE_BLOCKED => 2281885706,
+ E_SYNCENGINE_FOLDER_IN_REDIRECTION => 2281885707,
+ ERROR_IO_PREEMPTED => 2298544129,
ERROR_SEVERITY_ERROR => 3221225472,
EXCEPTION_ACCESS_VIOLATION => 3221225477,
EXCEPTION_IN_PAGE_ERROR => 3221225478,
@@ -2485,6 +3754,490 @@ BEGIN {
EXCEPTION_STACK_OVERFLOW => 3221225725,
ERROR_AUDITING_DISABLED => 3221815297,
ERROR_ALL_SIDS_FILTERED => 3221815298,
+ ERROR_BIZRULES_NOT_ENABLED => 3221815299,
+ ERROR_GRAPHICS_SESSION_TYPE_CHANGE_IN_PROGRESS => 3223717352,
+ ERROR_MONITOR_INVALID_DESCRIPTOR_CHECKSUM => 3223719939,
+ ERROR_MONITOR_INVALID_STANDARD_TIMING_BLOCK => 3223719940,
+ ERROR_MONITOR_WMI_DATABLOCK_REGISTRATION_FAILED => 3223719941,
+ ERROR_MONITOR_INVALID_SERIAL_NUMBER_MONDSC_BLOCK => 3223719942,
+ ERROR_MONITOR_INVALID_USER_FRIENDLY_MONDSC_BLOCK => 3223719943,
+ ERROR_MONITOR_NO_MORE_DESCRIPTOR_DATA => 3223719944,
+ ERROR_MONITOR_INVALID_DETAILED_TIMING_BLOCK => 3223719945,
+ ERROR_MONITOR_INVALID_MANUFACTURE_DATE => 3223719946,
+ ERROR_GRAPHICS_NOT_EXCLUSIVE_MODE_OWNER => 3223724032,
+ ERROR_GRAPHICS_INSUFFICIENT_DMA_BUFFER => 3223724033,
+ ERROR_GRAPHICS_INVALID_DISPLAY_ADAPTER => 3223724034,
+ ERROR_GRAPHICS_ADAPTER_WAS_RESET => 3223724035,
+ ERROR_GRAPHICS_INVALID_DRIVER_MODEL => 3223724036,
+ ERROR_GRAPHICS_PRESENT_MODE_CHANGED => 3223724037,
+ ERROR_GRAPHICS_PRESENT_OCCLUDED => 3223724038,
+ ERROR_GRAPHICS_PRESENT_DENIED => 3223724039,
+ ERROR_GRAPHICS_CANNOTCOLORCONVERT => 3223724040,
+ ERROR_GRAPHICS_DRIVER_MISMATCH => 3223724041,
+ ERROR_GRAPHICS_PRESENT_REDIRECTION_DISABLED => 3223724043,
+ ERROR_GRAPHICS_PRESENT_UNOCCLUDED => 3223724044,
+ ERROR_GRAPHICS_WINDOWDC_NOT_AVAILABLE => 3223724045,
+ ERROR_GRAPHICS_WINDOWLESS_PRESENT_DISABLED => 3223724046,
+ ERROR_GRAPHICS_PRESENT_INVALID_WINDOW => 3223724047,
+ ERROR_GRAPHICS_PRESENT_BUFFER_NOT_BOUND => 3223724048,
+ ERROR_GRAPHICS_VAIL_STATE_CHANGED => 3223724049,
+ ERROR_GRAPHICS_INDIRECT_DISPLAY_ABANDON_SWAPCHAIN => 3223724050,
+ ERROR_GRAPHICS_INDIRECT_DISPLAY_DEVICE_STOPPED => 3223724051,
+ ERROR_GRAPHICS_VAIL_FAILED_TO_SEND_CREATE_SUPERWETINK_MESSAGE => 3223724052,
+ ERROR_GRAPHICS_VAIL_FAILED_TO_SEND_DESTROY_SUPERWETINK_MESSAGE => 3223724053,
+ ERROR_GRAPHICS_VAIL_FAILED_TO_SEND_COMPOSITION_WINDOW_DPI_MESSAGE => 3223724054,
+ ERROR_GRAPHICS_NO_VIDEO_MEMORY => 3223724288,
+ ERROR_GRAPHICS_CANT_LOCK_MEMORY => 3223724289,
+ ERROR_GRAPHICS_ALLOCATION_BUSY => 3223724290,
+ ERROR_GRAPHICS_TOO_MANY_REFERENCES => 3223724291,
+ ERROR_GRAPHICS_TRY_AGAIN_LATER => 3223724292,
+ ERROR_GRAPHICS_TRY_AGAIN_NOW => 3223724293,
+ ERROR_GRAPHICS_ALLOCATION_INVALID => 3223724294,
+ ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNAVAILABLE => 3223724295,
+ ERROR_GRAPHICS_UNSWIZZLING_APERTURE_UNSUPPORTED => 3223724296,
+ ERROR_GRAPHICS_CANT_EVICT_PINNED_ALLOCATION => 3223724297,
+ ERROR_GRAPHICS_INVALID_ALLOCATION_USAGE => 3223724304,
+ ERROR_GRAPHICS_CANT_RENDER_LOCKED_ALLOCATION => 3223724305,
+ ERROR_GRAPHICS_ALLOCATION_CLOSED => 3223724306,
+ ERROR_GRAPHICS_INVALID_ALLOCATION_INSTANCE => 3223724307,
+ ERROR_GRAPHICS_INVALID_ALLOCATION_HANDLE => 3223724308,
+ ERROR_GRAPHICS_WRONG_ALLOCATION_DEVICE => 3223724309,
+ ERROR_GRAPHICS_ALLOCATION_CONTENT_LOST => 3223724310,
+ ERROR_GRAPHICS_GPU_EXCEPTION_ON_DEVICE => 3223724544,
+ ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY => 3223724800,
+ ERROR_GRAPHICS_VIDPN_TOPOLOGY_NOT_SUPPORTED => 3223724801,
+ ERROR_GRAPHICS_VIDPN_TOPOLOGY_CURRENTLY_NOT_SUPPORTED => 3223724802,
+ ERROR_GRAPHICS_INVALID_VIDPN => 3223724803,
+ ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE => 3223724804,
+ ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET => 3223724805,
+ ERROR_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED => 3223724806,
+ ERROR_GRAPHICS_INVALID_VIDPN_SOURCEMODESET => 3223724808,
+ ERROR_GRAPHICS_INVALID_VIDPN_TARGETMODESET => 3223724809,
+ ERROR_GRAPHICS_INVALID_FREQUENCY => 3223724810,
+ ERROR_GRAPHICS_INVALID_ACTIVE_REGION => 3223724811,
+ ERROR_GRAPHICS_INVALID_TOTAL_REGION => 3223724812,
+ ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_SOURCE_MODE => 3223724816,
+ ERROR_GRAPHICS_INVALID_VIDEO_PRESENT_TARGET_MODE => 3223724817,
+ ERROR_GRAPHICS_PINNED_MODE_MUST_REMAIN_IN_SET => 3223724818,
+ ERROR_GRAPHICS_PATH_ALREADY_IN_TOPOLOGY => 3223724819,
+ ERROR_GRAPHICS_MODE_ALREADY_IN_MODESET => 3223724820,
+ ERROR_GRAPHICS_INVALID_VIDEOPRESENTSOURCESET => 3223724821,
+ ERROR_GRAPHICS_INVALID_VIDEOPRESENTTARGETSET => 3223724822,
+ ERROR_GRAPHICS_SOURCE_ALREADY_IN_SET => 3223724823,
+ ERROR_GRAPHICS_TARGET_ALREADY_IN_SET => 3223724824,
+ ERROR_GRAPHICS_INVALID_VIDPN_PRESENT_PATH => 3223724825,
+ ERROR_GRAPHICS_NO_RECOMMENDED_VIDPN_TOPOLOGY => 3223724826,
+ ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGESET => 3223724827,
+ ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE => 3223724828,
+ ERROR_GRAPHICS_FREQUENCYRANGE_NOT_IN_SET => 3223724829,
+ ERROR_GRAPHICS_FREQUENCYRANGE_ALREADY_IN_SET => 3223724831,
+ ERROR_GRAPHICS_STALE_MODESET => 3223724832,
+ ERROR_GRAPHICS_INVALID_MONITOR_SOURCEMODESET => 3223724833,
+ ERROR_GRAPHICS_INVALID_MONITOR_SOURCE_MODE => 3223724834,
+ ERROR_GRAPHICS_NO_RECOMMENDED_FUNCTIONAL_VIDPN => 3223724835,
+ ERROR_GRAPHICS_MODE_ID_MUST_BE_UNIQUE => 3223724836,
+ ERROR_GRAPHICS_EMPTY_ADAPTER_MONITOR_MODE_SUPPORT_INTERSECTION => 3223724837,
+ ERROR_GRAPHICS_VIDEO_PRESENT_TARGETS_LESS_THAN_SOURCES => 3223724838,
+ ERROR_GRAPHICS_PATH_NOT_IN_TOPOLOGY => 3223724839,
+ ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_SOURCE => 3223724840,
+ ERROR_GRAPHICS_ADAPTER_MUST_HAVE_AT_LEAST_ONE_TARGET => 3223724841,
+ ERROR_GRAPHICS_INVALID_MONITORDESCRIPTORSET => 3223724842,
+ ERROR_GRAPHICS_INVALID_MONITORDESCRIPTOR => 3223724843,
+ ERROR_GRAPHICS_MONITORDESCRIPTOR_NOT_IN_SET => 3223724844,
+ ERROR_GRAPHICS_MONITORDESCRIPTOR_ALREADY_IN_SET => 3223724845,
+ ERROR_GRAPHICS_MONITORDESCRIPTOR_ID_MUST_BE_UNIQUE => 3223724846,
+ ERROR_GRAPHICS_INVALID_VIDPN_TARGET_SUBSET_TYPE => 3223724847,
+ ERROR_GRAPHICS_RESOURCES_NOT_RELATED => 3223724848,
+ ERROR_GRAPHICS_SOURCE_ID_MUST_BE_UNIQUE => 3223724849,
+ ERROR_GRAPHICS_TARGET_ID_MUST_BE_UNIQUE => 3223724850,
+ ERROR_GRAPHICS_NO_AVAILABLE_VIDPN_TARGET => 3223724851,
+ ERROR_GRAPHICS_MONITOR_COULD_NOT_BE_ASSOCIATED_WITH_ADAPTER => 3223724852,
+ ERROR_GRAPHICS_NO_VIDPNMGR => 3223724853,
+ ERROR_GRAPHICS_NO_ACTIVE_VIDPN => 3223724854,
+ ERROR_GRAPHICS_STALE_VIDPN_TOPOLOGY => 3223724855,
+ ERROR_GRAPHICS_MONITOR_NOT_CONNECTED => 3223724856,
+ ERROR_GRAPHICS_SOURCE_NOT_IN_TOPOLOGY => 3223724857,
+ ERROR_GRAPHICS_INVALID_PRIMARYSURFACE_SIZE => 3223724858,
+ ERROR_GRAPHICS_INVALID_VISIBLEREGION_SIZE => 3223724859,
+ ERROR_GRAPHICS_INVALID_STRIDE => 3223724860,
+ ERROR_GRAPHICS_INVALID_PIXELFORMAT => 3223724861,
+ ERROR_GRAPHICS_INVALID_COLORBASIS => 3223724862,
+ ERROR_GRAPHICS_INVALID_PIXELVALUEACCESSMODE => 3223724863,
+ ERROR_GRAPHICS_TARGET_NOT_IN_TOPOLOGY => 3223724864,
+ ERROR_GRAPHICS_NO_DISPLAY_MODE_MANAGEMENT_SUPPORT => 3223724865,
+ ERROR_GRAPHICS_VIDPN_SOURCE_IN_USE => 3223724866,
+ ERROR_GRAPHICS_CANT_ACCESS_ACTIVE_VIDPN => 3223724867,
+ ERROR_GRAPHICS_INVALID_PATH_IMPORTANCE_ORDINAL => 3223724868,
+ ERROR_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION => 3223724869,
+ ERROR_GRAPHICS_PATH_CONTENT_GEOMETRY_TRANSFORMATION_NOT_SUPPORTED => 3223724870,
+ ERROR_GRAPHICS_INVALID_GAMMA_RAMP => 3223724871,
+ ERROR_GRAPHICS_GAMMA_RAMP_NOT_SUPPORTED => 3223724872,
+ ERROR_GRAPHICS_MULTISAMPLING_NOT_SUPPORTED => 3223724873,
+ ERROR_GRAPHICS_MODE_NOT_IN_MODESET => 3223724874,
+ ERROR_GRAPHICS_INVALID_VIDPN_TOPOLOGY_RECOMMENDATION_REASON => 3223724877,
+ ERROR_GRAPHICS_INVALID_PATH_CONTENT_TYPE => 3223724878,
+ ERROR_GRAPHICS_INVALID_COPYPROTECTION_TYPE => 3223724879,
+ ERROR_GRAPHICS_UNASSIGNED_MODESET_ALREADY_EXISTS => 3223724880,
+ ERROR_GRAPHICS_INVALID_SCANLINE_ORDERING => 3223724882,
+ ERROR_GRAPHICS_TOPOLOGY_CHANGES_NOT_ALLOWED => 3223724883,
+ ERROR_GRAPHICS_NO_AVAILABLE_IMPORTANCE_ORDINALS => 3223724884,
+ ERROR_GRAPHICS_INCOMPATIBLE_PRIVATE_FORMAT => 3223724885,
+ ERROR_GRAPHICS_INVALID_MODE_PRUNING_ALGORITHM => 3223724886,
+ ERROR_GRAPHICS_INVALID_MONITOR_CAPABILITY_ORIGIN => 3223724887,
+ ERROR_GRAPHICS_INVALID_MONITOR_FREQUENCYRANGE_CONSTRAINT => 3223724888,
+ ERROR_GRAPHICS_MAX_NUM_PATHS_REACHED => 3223724889,
+ ERROR_GRAPHICS_CANCEL_VIDPN_TOPOLOGY_AUGMENTATION => 3223724890,
+ ERROR_GRAPHICS_INVALID_CLIENT_TYPE => 3223724891,
+ ERROR_GRAPHICS_CLIENTVIDPN_NOT_SET => 3223724892,
+ ERROR_GRAPHICS_SPECIFIED_CHILD_ALREADY_CONNECTED => 3223725056,
+ ERROR_GRAPHICS_CHILD_DESCRIPTOR_NOT_SUPPORTED => 3223725057,
+ ERROR_GRAPHICS_NOT_A_LINKED_ADAPTER => 3223725104,
+ ERROR_GRAPHICS_LEADLINK_NOT_ENUMERATED => 3223725105,
+ ERROR_GRAPHICS_CHAINLINKS_NOT_ENUMERATED => 3223725106,
+ ERROR_GRAPHICS_ADAPTER_CHAIN_NOT_READY => 3223725107,
+ ERROR_GRAPHICS_CHAINLINKS_NOT_STARTED => 3223725108,
+ ERROR_GRAPHICS_CHAINLINKS_NOT_POWERED_ON => 3223725109,
+ ERROR_GRAPHICS_INCONSISTENT_DEVICE_LINK_STATE => 3223725110,
+ ERROR_GRAPHICS_NOT_POST_DEVICE_DRIVER => 3223725112,
+ ERROR_GRAPHICS_ADAPTER_ACCESS_NOT_EXCLUDED => 3223725115,
+ ERROR_GRAPHICS_OPM_NOT_SUPPORTED => 3223725312,
+ ERROR_GRAPHICS_COPP_NOT_SUPPORTED => 3223725313,
+ ERROR_GRAPHICS_UAB_NOT_SUPPORTED => 3223725314,
+ ERROR_GRAPHICS_OPM_INVALID_ENCRYPTED_PARAMETERS => 3223725315,
+ ERROR_GRAPHICS_OPM_NO_VIDEO_OUTPUTS_EXIST => 3223725317,
+ ERROR_GRAPHICS_OPM_INTERNAL_ERROR => 3223725323,
+ ERROR_GRAPHICS_OPM_INVALID_HANDLE => 3223725324,
+ ERROR_GRAPHICS_PVP_INVALID_CERTIFICATE_LENGTH => 3223725326,
+ ERROR_GRAPHICS_OPM_SPANNING_MODE_ENABLED => 3223725327,
+ ERROR_GRAPHICS_OPM_THEATER_MODE_ENABLED => 3223725328,
+ ERROR_GRAPHICS_PVP_HFS_FAILED => 3223725329,
+ ERROR_GRAPHICS_OPM_INVALID_SRM => 3223725330,
+ ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_HDCP => 3223725331,
+ ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_ACP => 3223725332,
+ ERROR_GRAPHICS_OPM_OUTPUT_DOES_NOT_SUPPORT_CGMSA => 3223725333,
+ ERROR_GRAPHICS_OPM_HDCP_SRM_NEVER_SET => 3223725334,
+ ERROR_GRAPHICS_OPM_RESOLUTION_TOO_HIGH => 3223725335,
+ ERROR_GRAPHICS_OPM_ALL_HDCP_HARDWARE_ALREADY_IN_USE => 3223725336,
+ ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_NO_LONGER_EXISTS => 3223725338,
+ ERROR_GRAPHICS_OPM_SESSION_TYPE_CHANGE_IN_PROGRESS => 3223725339,
+ ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_COPP_SEMANTICS => 3223725340,
+ ERROR_GRAPHICS_OPM_INVALID_INFORMATION_REQUEST => 3223725341,
+ ERROR_GRAPHICS_OPM_DRIVER_INTERNAL_ERROR => 3223725342,
+ ERROR_GRAPHICS_OPM_VIDEO_OUTPUT_DOES_NOT_HAVE_OPM_SEMANTICS => 3223725343,
+ ERROR_GRAPHICS_OPM_SIGNALING_NOT_SUPPORTED => 3223725344,
+ ERROR_GRAPHICS_OPM_INVALID_CONFIGURATION_REQUEST => 3223725345,
+ ERROR_GRAPHICS_I2C_NOT_SUPPORTED => 3223725440,
+ ERROR_GRAPHICS_I2C_DEVICE_DOES_NOT_EXIST => 3223725441,
+ ERROR_GRAPHICS_I2C_ERROR_TRANSMITTING_DATA => 3223725442,
+ ERROR_GRAPHICS_I2C_ERROR_RECEIVING_DATA => 3223725443,
+ ERROR_GRAPHICS_DDCCI_VCP_NOT_SUPPORTED => 3223725444,
+ ERROR_GRAPHICS_DDCCI_INVALID_DATA => 3223725445,
+ ERROR_GRAPHICS_DDCCI_MONITOR_RETURNED_INVALID_TIMING_STATUS_BYTE => 3223725446,
+ ERROR_GRAPHICS_MCA_INVALID_CAPABILITIES_STRING => 3223725447,
+ ERROR_GRAPHICS_MCA_INTERNAL_ERROR => 3223725448,
+ ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_COMMAND => 3223725449,
+ ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_LENGTH => 3223725450,
+ ERROR_GRAPHICS_DDCCI_INVALID_MESSAGE_CHECKSUM => 3223725451,
+ ERROR_GRAPHICS_INVALID_PHYSICAL_MONITOR_HANDLE => 3223725452,
+ ERROR_GRAPHICS_MONITOR_NO_LONGER_EXISTS => 3223725453,
+ ERROR_GRAPHICS_DDCCI_CURRENT_CURRENT_VALUE_GREATER_THAN_MAXIMUM_VALUE => 3223725528,
+ ERROR_GRAPHICS_MCA_INVALID_VCP_VERSION => 3223725529,
+ ERROR_GRAPHICS_MCA_MONITOR_VIOLATES_MCCS_SPECIFICATION => 3223725530,
+ ERROR_GRAPHICS_MCA_MCCS_VERSION_MISMATCH => 3223725531,
+ ERROR_GRAPHICS_MCA_UNSUPPORTED_MCCS_VERSION => 3223725532,
+ ERROR_GRAPHICS_MCA_INVALID_TECHNOLOGY_TYPE_RETURNED => 3223725534,
+ ERROR_GRAPHICS_MCA_UNSUPPORTED_COLOR_TEMPERATURE => 3223725535,
+ ERROR_GRAPHICS_ONLY_CONSOLE_SESSION_SUPPORTED => 3223725536,
+ ERROR_GRAPHICS_NO_DISPLAY_DEVICE_CORRESPONDS_TO_NAME => 3223725537,
+ ERROR_GRAPHICS_DISPLAY_DEVICE_NOT_ATTACHED_TO_DESKTOP => 3223725538,
+ ERROR_GRAPHICS_MIRRORING_DEVICES_NOT_SUPPORTED => 3223725539,
+ ERROR_GRAPHICS_INVALID_POINTER => 3223725540,
+ ERROR_GRAPHICS_NO_MONITORS_CORRESPOND_TO_DISPLAY_DEVICE => 3223725541,
+ ERROR_GRAPHICS_PARAMETER_ARRAY_TOO_SMALL => 3223725542,
+ ERROR_GRAPHICS_INTERNAL_ERROR => 3223725543,
+ ERROR_NDIS_OFFLOAD_POLICY => 3224637455,
+ ERROR_NDIS_OFFLOAD_CONNECTION_REJECTED => 3224637458,
+ ERROR_NDIS_OFFLOAD_PATH_REJECTED => 3224637459,
+ ERROR_HV_INVALID_HYPERCALL_CODE => 3224698882,
+ ERROR_HV_INVALID_HYPERCALL_INPUT => 3224698883,
+ ERROR_HV_INVALID_ALIGNMENT => 3224698884,
+ ERROR_HV_INVALID_PARAMETER => 3224698885,
+ ERROR_HV_ACCESS_DENIED => 3224698886,
+ ERROR_HV_INVALID_PARTITION_STATE => 3224698887,
+ ERROR_HV_OPERATION_DENIED => 3224698888,
+ ERROR_HV_UNKNOWN_PROPERTY => 3224698889,
+ ERROR_HV_PROPERTY_VALUE_OUT_OF_RANGE => 3224698890,
+ ERROR_HV_INSUFFICIENT_MEMORY => 3224698891,
+ ERROR_HV_PARTITION_TOO_DEEP => 3224698892,
+ ERROR_HV_INVALID_PARTITION_ID => 3224698893,
+ ERROR_HV_INVALID_VP_INDEX => 3224698894,
+ ERROR_HV_INVALID_PORT_ID => 3224698897,
+ ERROR_HV_INVALID_CONNECTION_ID => 3224698898,
+ ERROR_HV_INSUFFICIENT_BUFFERS => 3224698899,
+ ERROR_HV_NOT_ACKNOWLEDGED => 3224698900,
+ ERROR_HV_INVALID_VP_STATE => 3224698901,
+ ERROR_HV_ACKNOWLEDGED => 3224698902,
+ ERROR_HV_INVALID_SAVE_RESTORE_STATE => 3224698903,
+ ERROR_HV_INVALID_SYNIC_STATE => 3224698904,
+ ERROR_HV_OBJECT_IN_USE => 3224698905,
+ ERROR_HV_INVALID_PROXIMITY_DOMAIN_INFO => 3224698906,
+ ERROR_HV_NO_DATA => 3224698907,
+ ERROR_HV_INACTIVE => 3224698908,
+ ERROR_HV_NO_RESOURCES => 3224698909,
+ ERROR_HV_FEATURE_UNAVAILABLE => 3224698910,
+ ERROR_HV_INSUFFICIENT_BUFFER => 3224698931,
+ ERROR_HV_INSUFFICIENT_DEVICE_DOMAINS => 3224698936,
+ ERROR_HV_CPUID_FEATURE_VALIDATION => 3224698940,
+ ERROR_HV_CPUID_XSAVE_FEATURE_VALIDATION => 3224698941,
+ ERROR_HV_PROCESSOR_STARTUP_TIMEOUT => 3224698942,
+ ERROR_HV_SMX_ENABLED => 3224698943,
+ ERROR_HV_INVALID_LP_INDEX => 3224698945,
+ ERROR_HV_INVALID_REGISTER_VALUE => 3224698960,
+ ERROR_HV_INVALID_VTL_STATE => 3224698961,
+ ERROR_HV_NX_NOT_DETECTED => 3224698965,
+ ERROR_HV_INVALID_DEVICE_ID => 3224698967,
+ ERROR_HV_INVALID_DEVICE_STATE => 3224698968,
+ ERROR_HV_PAGE_REQUEST_INVALID => 3224698976,
+ ERROR_HV_INVALID_CPU_GROUP_ID => 3224698991,
+ ERROR_HV_INVALID_CPU_GROUP_STATE => 3224698992,
+ ERROR_HV_OPERATION_FAILED => 3224698993,
+ ERROR_HV_NOT_ALLOWED_WITH_NESTED_VIRT_ACTIVE => 3224698994,
+ ERROR_HV_INSUFFICIENT_ROOT_MEMORY => 3224698995,
+ ERROR_HV_EVENT_BUFFER_ALREADY_FREED => 3224698996,
+ ERROR_HV_INSUFFICIENT_CONTIGUOUS_MEMORY => 3224698997,
+ ERROR_HV_DEVICE_NOT_IN_DOMAIN => 3224698998,
+ ERROR_HV_NESTED_VM_EXIT => 3224698999,
+ ERROR_HV_MSR_ACCESS_FAILED => 3224699008,
+ ERROR_HV_NOT_PRESENT => 3224702976,
+ ERROR_VID_DUPLICATE_HANDLER => 3224829953,
+ ERROR_VID_TOO_MANY_HANDLERS => 3224829954,
+ ERROR_VID_QUEUE_FULL => 3224829955,
+ ERROR_VID_HANDLER_NOT_PRESENT => 3224829956,
+ ERROR_VID_INVALID_OBJECT_NAME => 3224829957,
+ ERROR_VID_PARTITION_NAME_TOO_LONG => 3224829958,
+ ERROR_VID_MESSAGE_QUEUE_NAME_TOO_LONG => 3224829959,
+ ERROR_VID_PARTITION_ALREADY_EXISTS => 3224829960,
+ ERROR_VID_PARTITION_DOES_NOT_EXIST => 3224829961,
+ ERROR_VID_PARTITION_NAME_NOT_FOUND => 3224829962,
+ ERROR_VID_MESSAGE_QUEUE_ALREADY_EXISTS => 3224829963,
+ ERROR_VID_EXCEEDED_MBP_ENTRY_MAP_LIMIT => 3224829964,
+ ERROR_VID_MB_STILL_REFERENCED => 3224829965,
+ ERROR_VID_CHILD_GPA_PAGE_SET_CORRUPTED => 3224829966,
+ ERROR_VID_INVALID_NUMA_SETTINGS => 3224829967,
+ ERROR_VID_INVALID_NUMA_NODE_INDEX => 3224829968,
+ ERROR_VID_NOTIFICATION_QUEUE_ALREADY_ASSOCIATED => 3224829969,
+ ERROR_VID_INVALID_MEMORY_BLOCK_HANDLE => 3224829970,
+ ERROR_VID_PAGE_RANGE_OVERFLOW => 3224829971,
+ ERROR_VID_INVALID_MESSAGE_QUEUE_HANDLE => 3224829972,
+ ERROR_VID_INVALID_GPA_RANGE_HANDLE => 3224829973,
+ ERROR_VID_NO_MEMORY_BLOCK_NOTIFICATION_QUEUE => 3224829974,
+ ERROR_VID_MEMORY_BLOCK_LOCK_COUNT_EXCEEDED => 3224829975,
+ ERROR_VID_INVALID_PPM_HANDLE => 3224829976,
+ ERROR_VID_MBPS_ARE_LOCKED => 3224829977,
+ ERROR_VID_MESSAGE_QUEUE_CLOSED => 3224829978,
+ ERROR_VID_VIRTUAL_PROCESSOR_LIMIT_EXCEEDED => 3224829979,
+ ERROR_VID_STOP_PENDING => 3224829980,
+ ERROR_VID_INVALID_PROCESSOR_STATE => 3224829981,
+ ERROR_VID_EXCEEDED_KM_CONTEXT_COUNT_LIMIT => 3224829982,
+ ERROR_VID_KM_INTERFACE_ALREADY_INITIALIZED => 3224829983,
+ ERROR_VID_MB_PROPERTY_ALREADY_SET_RESET => 3224829984,
+ ERROR_VID_MMIO_RANGE_DESTROYED => 3224829985,
+ ERROR_VID_INVALID_CHILD_GPA_PAGE_SET => 3224829986,
+ ERROR_VID_RESERVE_PAGE_SET_IS_BEING_USED => 3224829987,
+ ERROR_VID_RESERVE_PAGE_SET_TOO_SMALL => 3224829988,
+ ERROR_VID_MBP_ALREADY_LOCKED_USING_RESERVED_PAGE => 3224829989,
+ ERROR_VID_MBP_COUNT_EXCEEDED_LIMIT => 3224829990,
+ ERROR_VID_SAVED_STATE_CORRUPT => 3224829991,
+ ERROR_VID_SAVED_STATE_UNRECOGNIZED_ITEM => 3224829992,
+ ERROR_VID_SAVED_STATE_INCOMPATIBLE => 3224829993,
+ ERROR_VID_VTL_ACCESS_DENIED => 3224829994,
+ ERROR_VMCOMPUTE_TERMINATED_DURING_START => 3224830208,
+ ERROR_VMCOMPUTE_IMAGE_MISMATCH => 3224830209,
+ ERROR_VMCOMPUTE_HYPERV_NOT_INSTALLED => 3224830210,
+ ERROR_VMCOMPUTE_OPERATION_PENDING => 3224830211,
+ ERROR_VMCOMPUTE_TOO_MANY_NOTIFICATIONS => 3224830212,
+ ERROR_VMCOMPUTE_INVALID_STATE => 3224830213,
+ ERROR_VMCOMPUTE_UNEXPECTED_EXIT => 3224830214,
+ ERROR_VMCOMPUTE_TERMINATED => 3224830215,
+ ERROR_VMCOMPUTE_CONNECT_FAILED => 3224830216,
+ ERROR_VMCOMPUTE_TIMEOUT => 3224830217,
+ ERROR_VMCOMPUTE_CONNECTION_CLOSED => 3224830218,
+ ERROR_VMCOMPUTE_UNKNOWN_MESSAGE => 3224830219,
+ ERROR_VMCOMPUTE_UNSUPPORTED_PROTOCOL_VERSION => 3224830220,
+ ERROR_VMCOMPUTE_INVALID_JSON => 3224830221,
+ ERROR_VMCOMPUTE_SYSTEM_NOT_FOUND => 3224830222,
+ ERROR_VMCOMPUTE_SYSTEM_ALREADY_EXISTS => 3224830223,
+ ERROR_VMCOMPUTE_SYSTEM_ALREADY_STOPPED => 3224830224,
+ ERROR_VMCOMPUTE_PROTOCOL_ERROR => 3224830225,
+ ERROR_VMCOMPUTE_INVALID_LAYER => 3224830226,
+ ERROR_VMCOMPUTE_WINDOWS_INSIDER_REQUIRED => 3224830227,
+ ERROR_VNET_VIRTUAL_SWITCH_NAME_NOT_FOUND => 3224830464,
+ ERROR_VSMB_SAVED_STATE_FILE_NOT_FOUND => 3224830976,
+ ERROR_VSMB_SAVED_STATE_CORRUPT => 3224830977,
+ ERROR_VOLMGR_DATABASE_FULL => 3224895489,
+ ERROR_VOLMGR_DISK_CONFIGURATION_CORRUPTED => 3224895490,
+ ERROR_VOLMGR_DISK_CONFIGURATION_NOT_IN_SYNC => 3224895491,
+ ERROR_VOLMGR_PACK_CONFIG_UPDATE_FAILED => 3224895492,
+ ERROR_VOLMGR_DISK_CONTAINS_NON_SIMPLE_VOLUME => 3224895493,
+ ERROR_VOLMGR_DISK_DUPLICATE => 3224895494,
+ ERROR_VOLMGR_DISK_DYNAMIC => 3224895495,
+ ERROR_VOLMGR_DISK_ID_INVALID => 3224895496,
+ ERROR_VOLMGR_DISK_INVALID => 3224895497,
+ ERROR_VOLMGR_DISK_LAST_VOTER => 3224895498,
+ ERROR_VOLMGR_DISK_LAYOUT_INVALID => 3224895499,
+ ERROR_VOLMGR_DISK_LAYOUT_NON_BASIC_BETWEEN_BASIC_PARTITIONS => 3224895500,
+ ERROR_VOLMGR_DISK_LAYOUT_NOT_CYLINDER_ALIGNED => 3224895501,
+ ERROR_VOLMGR_DISK_LAYOUT_PARTITIONS_TOO_SMALL => 3224895502,
+ ERROR_VOLMGR_DISK_LAYOUT_PRIMARY_BETWEEN_LOGICAL_PARTITIONS => 3224895503,
+ ERROR_VOLMGR_DISK_LAYOUT_TOO_MANY_PARTITIONS => 3224895504,
+ ERROR_VOLMGR_DISK_MISSING => 3224895505,
+ ERROR_VOLMGR_DISK_NOT_EMPTY => 3224895506,
+ ERROR_VOLMGR_DISK_NOT_ENOUGH_SPACE => 3224895507,
+ ERROR_VOLMGR_DISK_REVECTORING_FAILED => 3224895508,
+ ERROR_VOLMGR_DISK_SECTOR_SIZE_INVALID => 3224895509,
+ ERROR_VOLMGR_DISK_SET_NOT_CONTAINED => 3224895510,
+ ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_MEMBERS => 3224895511,
+ ERROR_VOLMGR_DISK_USED_BY_MULTIPLE_PLEXES => 3224895512,
+ ERROR_VOLMGR_DYNAMIC_DISK_NOT_SUPPORTED => 3224895513,
+ ERROR_VOLMGR_EXTENT_ALREADY_USED => 3224895514,
+ ERROR_VOLMGR_EXTENT_NOT_CONTIGUOUS => 3224895515,
+ ERROR_VOLMGR_EXTENT_NOT_IN_PUBLIC_REGION => 3224895516,
+ ERROR_VOLMGR_EXTENT_NOT_SECTOR_ALIGNED => 3224895517,
+ ERROR_VOLMGR_EXTENT_OVERLAPS_EBR_PARTITION => 3224895518,
+ ERROR_VOLMGR_EXTENT_VOLUME_LENGTHS_DO_NOT_MATCH => 3224895519,
+ ERROR_VOLMGR_FAULT_TOLERANT_NOT_SUPPORTED => 3224895520,
+ ERROR_VOLMGR_INTERLEAVE_LENGTH_INVALID => 3224895521,
+ ERROR_VOLMGR_MAXIMUM_REGISTERED_USERS => 3224895522,
+ ERROR_VOLMGR_MEMBER_IN_SYNC => 3224895523,
+ ERROR_VOLMGR_MEMBER_INDEX_DUPLICATE => 3224895524,
+ ERROR_VOLMGR_MEMBER_INDEX_INVALID => 3224895525,
+ ERROR_VOLMGR_MEMBER_MISSING => 3224895526,
+ ERROR_VOLMGR_MEMBER_NOT_DETACHED => 3224895527,
+ ERROR_VOLMGR_MEMBER_REGENERATING => 3224895528,
+ ERROR_VOLMGR_ALL_DISKS_FAILED => 3224895529,
+ ERROR_VOLMGR_NO_REGISTERED_USERS => 3224895530,
+ ERROR_VOLMGR_NO_SUCH_USER => 3224895531,
+ ERROR_VOLMGR_NOTIFICATION_RESET => 3224895532,
+ ERROR_VOLMGR_NUMBER_OF_MEMBERS_INVALID => 3224895533,
+ ERROR_VOLMGR_NUMBER_OF_PLEXES_INVALID => 3224895534,
+ ERROR_VOLMGR_PACK_DUPLICATE => 3224895535,
+ ERROR_VOLMGR_PACK_ID_INVALID => 3224895536,
+ ERROR_VOLMGR_PACK_INVALID => 3224895537,
+ ERROR_VOLMGR_PACK_NAME_INVALID => 3224895538,
+ ERROR_VOLMGR_PACK_OFFLINE => 3224895539,
+ ERROR_VOLMGR_PACK_HAS_QUORUM => 3224895540,
+ ERROR_VOLMGR_PACK_WITHOUT_QUORUM => 3224895541,
+ ERROR_VOLMGR_PARTITION_STYLE_INVALID => 3224895542,
+ ERROR_VOLMGR_PARTITION_UPDATE_FAILED => 3224895543,
+ ERROR_VOLMGR_PLEX_IN_SYNC => 3224895544,
+ ERROR_VOLMGR_PLEX_INDEX_DUPLICATE => 3224895545,
+ ERROR_VOLMGR_PLEX_INDEX_INVALID => 3224895546,
+ ERROR_VOLMGR_PLEX_LAST_ACTIVE => 3224895547,
+ ERROR_VOLMGR_PLEX_MISSING => 3224895548,
+ ERROR_VOLMGR_PLEX_REGENERATING => 3224895549,
+ ERROR_VOLMGR_PLEX_TYPE_INVALID => 3224895550,
+ ERROR_VOLMGR_PLEX_NOT_RAID5 => 3224895551,
+ ERROR_VOLMGR_PLEX_NOT_SIMPLE => 3224895552,
+ ERROR_VOLMGR_STRUCTURE_SIZE_INVALID => 3224895553,
+ ERROR_VOLMGR_TOO_MANY_NOTIFICATION_REQUESTS => 3224895554,
+ ERROR_VOLMGR_TRANSACTION_IN_PROGRESS => 3224895555,
+ ERROR_VOLMGR_UNEXPECTED_DISK_LAYOUT_CHANGE => 3224895556,
+ ERROR_VOLMGR_VOLUME_CONTAINS_MISSING_DISK => 3224895557,
+ ERROR_VOLMGR_VOLUME_ID_INVALID => 3224895558,
+ ERROR_VOLMGR_VOLUME_LENGTH_INVALID => 3224895559,
+ ERROR_VOLMGR_VOLUME_LENGTH_NOT_SECTOR_SIZE_MULTIPLE => 3224895560,
+ ERROR_VOLMGR_VOLUME_NOT_MIRRORED => 3224895561,
+ ERROR_VOLMGR_VOLUME_NOT_RETAINED => 3224895562,
+ ERROR_VOLMGR_VOLUME_OFFLINE => 3224895563,
+ ERROR_VOLMGR_VOLUME_RETAINED => 3224895564,
+ ERROR_VOLMGR_NUMBER_OF_EXTENTS_INVALID => 3224895565,
+ ERROR_VOLMGR_DIFFERENT_SECTOR_SIZE => 3224895566,
+ ERROR_VOLMGR_BAD_BOOT_DISK => 3224895567,
+ ERROR_VOLMGR_PACK_CONFIG_OFFLINE => 3224895568,
+ ERROR_VOLMGR_PACK_CONFIG_ONLINE => 3224895569,
+ ERROR_VOLMGR_NOT_PRIMARY_PACK => 3224895570,
+ ERROR_VOLMGR_PACK_LOG_UPDATE_FAILED => 3224895571,
+ ERROR_VOLMGR_NUMBER_OF_DISKS_IN_PLEX_INVALID => 3224895572,
+ ERROR_VOLMGR_NUMBER_OF_DISKS_IN_MEMBER_INVALID => 3224895573,
+ ERROR_VOLMGR_VOLUME_MIRRORED => 3224895574,
+ ERROR_VOLMGR_PLEX_NOT_SIMPLE_SPANNED => 3224895575,
+ ERROR_VOLMGR_NO_VALID_LOG_COPIES => 3224895576,
+ ERROR_VOLMGR_PRIMARY_PACK_PRESENT => 3224895577,
+ ERROR_VOLMGR_NUMBER_OF_DISKS_INVALID => 3224895578,
+ ERROR_VOLMGR_MIRROR_NOT_SUPPORTED => 3224895579,
+ ERROR_VOLMGR_RAID5_NOT_SUPPORTED => 3224895580,
+ ERROR_BCD_TOO_MANY_ELEMENTS => 3224961026,
+ ERROR_VHD_DRIVE_FOOTER_MISSING => 3225026561,
+ ERROR_VHD_DRIVE_FOOTER_CHECKSUM_MISMATCH => 3225026562,
+ ERROR_VHD_DRIVE_FOOTER_CORRUPT => 3225026563,
+ ERROR_VHD_FORMAT_UNKNOWN => 3225026564,
+ ERROR_VHD_FORMAT_UNSUPPORTED_VERSION => 3225026565,
+ ERROR_VHD_SPARSE_HEADER_CHECKSUM_MISMATCH => 3225026566,
+ ERROR_VHD_SPARSE_HEADER_UNSUPPORTED_VERSION => 3225026567,
+ ERROR_VHD_SPARSE_HEADER_CORRUPT => 3225026568,
+ ERROR_VHD_BLOCK_ALLOCATION_FAILURE => 3225026569,
+ ERROR_VHD_BLOCK_ALLOCATION_TABLE_CORRUPT => 3225026570,
+ ERROR_VHD_INVALID_BLOCK_SIZE => 3225026571,
+ ERROR_VHD_BITMAP_MISMATCH => 3225026572,
+ ERROR_VHD_PARENT_VHD_NOT_FOUND => 3225026573,
+ ERROR_VHD_CHILD_PARENT_ID_MISMATCH => 3225026574,
+ ERROR_VHD_CHILD_PARENT_TIMESTAMP_MISMATCH => 3225026575,
+ ERROR_VHD_METADATA_READ_FAILURE => 3225026576,
+ ERROR_VHD_METADATA_WRITE_FAILURE => 3225026577,
+ ERROR_VHD_INVALID_SIZE => 3225026578,
+ ERROR_VHD_INVALID_FILE_SIZE => 3225026579,
+ ERROR_VIRTDISK_PROVIDER_NOT_FOUND => 3225026580,
+ ERROR_VIRTDISK_NOT_VIRTUAL_DISK => 3225026581,
+ ERROR_VHD_PARENT_VHD_ACCESS_DENIED => 3225026582,
+ ERROR_VHD_CHILD_PARENT_SIZE_MISMATCH => 3225026583,
+ ERROR_VHD_DIFFERENCING_CHAIN_CYCLE_DETECTED => 3225026584,
+ ERROR_VHD_DIFFERENCING_CHAIN_ERROR_IN_PARENT => 3225026585,
+ ERROR_VIRTUAL_DISK_LIMITATION => 3225026586,
+ ERROR_VHD_INVALID_TYPE => 3225026587,
+ ERROR_VHD_INVALID_STATE => 3225026588,
+ ERROR_VIRTDISK_UNSUPPORTED_DISK_SECTOR_SIZE => 3225026589,
+ ERROR_VIRTDISK_DISK_ALREADY_OWNED => 3225026590,
+ ERROR_VIRTDISK_DISK_ONLINE_AND_WRITABLE => 3225026591,
+ ERROR_CTLOG_TRACKING_NOT_INITIALIZED => 3225026592,
+ ERROR_CTLOG_LOGFILE_SIZE_EXCEEDED_MAXSIZE => 3225026593,
+ ERROR_CTLOG_VHD_CHANGED_OFFLINE => 3225026594,
+ ERROR_CTLOG_INVALID_TRACKING_STATE => 3225026595,
+ ERROR_CTLOG_INCONSISTENT_TRACKING_FILE => 3225026596,
+ ERROR_VHD_RESIZE_WOULD_TRUNCATE_DATA => 3225026597,
+ ERROR_VHD_COULD_NOT_COMPUTE_MINIMUM_VIRTUAL_SIZE => 3225026598,
+ ERROR_VHD_ALREADY_AT_OR_BELOW_MINIMUM_VIRTUAL_SIZE => 3225026599,
+ ERROR_VHD_METADATA_FULL => 3225026600,
+ ERROR_VHD_INVALID_CHANGE_TRACKING_ID => 3225026601,
+ ERROR_VHD_CHANGE_TRACKING_DISABLED => 3225026602,
+ ERROR_VHD_MISSING_CHANGE_TRACKING_INFORMATION => 3225026608,
+ ERROR_SVHDX_ERROR_STORED => 3227254784,
+ ERROR_SVHDX_ERROR_NOT_AVAILABLE => 3227320064,
+ ERROR_SVHDX_UNIT_ATTENTION_AVAILABLE => 3227320065,
+ ERROR_SVHDX_UNIT_ATTENTION_CAPACITY_DATA_CHANGED => 3227320066,
+ ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_PREEMPTED => 3227320067,
+ ERROR_SVHDX_UNIT_ATTENTION_RESERVATIONS_RELEASED => 3227320068,
+ ERROR_SVHDX_UNIT_ATTENTION_REGISTRATIONS_PREEMPTED => 3227320069,
+ ERROR_SVHDX_UNIT_ATTENTION_OPERATING_DEFINITION_CHANGED => 3227320070,
+ ERROR_SVHDX_RESERVATION_CONFLICT => 3227320071,
+ ERROR_SVHDX_WRONG_FILE_TYPE => 3227320072,
+ ERROR_SVHDX_VERSION_MISMATCH => 3227320073,
+ ERROR_VHD_SHARED => 3227320074,
+ ERROR_SVHDX_NO_INITIATOR => 3227320075,
+ ERROR_VHDSET_BACKING_STORAGE_NOT_FOUND => 3227320076,
+ ERROR_SMB_NO_PREAUTH_INTEGRITY_HASH_OVERLAP => 3227320320,
+ ERROR_SMB_BAD_CLUSTER_DIALECT => 3227320321,
+ ERROR_SMB_NO_SIGNING_ALGORITHM_OVERLAP => 3227320322,
+ ERROR_SECCORE_INVALID_COMMAND => 3236429824,
+ ERROR_NO_APPLICABLE_APP_LICENSES_FOUND => 3236560897,
+ ERROR_CLIP_LICENSE_NOT_FOUND => 3236560898,
+ ERROR_CLIP_DEVICE_LICENSE_MISSING => 3236560899,
+ ERROR_CLIP_LICENSE_INVALID_SIGNATURE => 3236560900,
+ ERROR_CLIP_KEYHOLDER_LICENSE_MISSING_OR_INVALID => 3236560901,
+ ERROR_CLIP_LICENSE_EXPIRED => 3236560902,
+ ERROR_CLIP_LICENSE_SIGNED_BY_UNKNOWN_SOURCE => 3236560903,
+ ERROR_CLIP_LICENSE_NOT_SIGNED => 3236560904,
+ ERROR_CLIP_LICENSE_HARDWARE_ID_OUT_OF_TOLERANCE => 3236560905,
+ ERROR_CLIP_LICENSE_DEVICE_ID_MISMATCH => 3236560906,
ENUM_ALL_CALENDARS => 4294967295,
ERROR_UNHANDLED_ERROR => 4294967295,
);
@@ -2525,17 +4278,17 @@ our %EXPORT_TAGS = (
ETXTBSY EUSERS EWOULDBLOCK EXDEV
)],
WINSOCK => [qw(
- WSAEINVALIDPROCTABLE WSAEWOULDBLOCK WSAETOOMANYREFS WSAEMSGSIZE
- WSAENOBUFS WSAEHOSTUNREACH WSAEREMOTE WSAENETDOWN WSAENOTCONN
- WSAEAFNOSUPPORT WSAEPROTONOSUPPORT WSAEINVAL WSAEPROVIDERFAILEDINIT
- WSAECANCELLED WSAEDQUOT WSAEREFUSED WSAESHUTDOWN WSAEUSERS
- WSAECONNABORTED WSAESOCKTNOSUPPORT WSAEADDRNOTAVAIL WSAEINTR WSAESTALE
- WSAENOMORE WSAENETRESET WSAEISCONN WSAEINPROGRESS WSAEDISCON WSAELOOP
- WSAEALREADY WSAEPROTOTYPE WSAEOPNOTSUPP WSAENAMETOOLONG WSAENOTEMPTY
- WSAEADDRINUSE WSAEPROCLIM WSAEPFNOSUPPORT WSAEACCES WSAEFAULT
- WSAEINVALIDPROVIDER WSAEBADF WSAEHOSTDOWN WSAENOTSOCK WSAECONNREFUSED
- WSAEMFILE WSAECONNRESET WSAEDESTADDRREQ WSAETIMEDOUT WSAENOPROTOOPT
- WSAENETUNREACH
+ WSAEACCES WSAEADDRINUSE WSAEADDRNOTAVAIL WSAEAFNOSUPPORT WSAEALREADY
+ WSAEBADF WSAECANCELLED WSAECONNABORTED WSAECONNREFUSED WSAECONNRESET
+ WSAEDESTADDRREQ WSAEDISCON WSAEDQUOT WSAEFAULT WSAEHOSTDOWN
+ WSAEHOSTUNREACH WSAEINPROGRESS WSAEINTR WSAEINVAL WSAEINVALIDPROCTABLE
+ WSAEINVALIDPROVIDER WSAEISCONN WSAELOOP WSAEMFILE WSAEMSGSIZE
+ WSAENAMETOOLONG WSAENETDOWN WSAENETRESET WSAENETUNREACH WSAENOBUFS
+ WSAENOMORE WSAENOPROTOOPT WSAENOTCONN WSAENOTEMPTY WSAENOTSOCK
+ WSAEOPNOTSUPP WSAEPFNOSUPPORT WSAEPROCLIM WSAEPROTONOSUPPORT
+ WSAEPROTOTYPE WSAEPROVIDERFAILEDINIT WSAEREFUSED WSAEREMOTE
+ WSAESHUTDOWN WSAESOCKTNOSUPPORT WSAESTALE WSAETIMEDOUT WSAETOOMANYREFS
+ WSAEUSERS WSAEWOULDBLOCK
)],
);
diff --git a/Master/tlpkg/tlperl/lib/Exporter.pm b/Master/tlpkg/tlperl/lib/Exporter.pm
index 28a6873d9f3..ab3cfd7fbb2 100644
--- a/Master/tlpkg/tlperl/lib/Exporter.pm
+++ b/Master/tlpkg/tlperl/lib/Exporter.pm
@@ -6,7 +6,7 @@ no strict 'refs';
our $Debug = 0;
our $ExportLevel = 0;
our $Verbose ||= 0;
-our $VERSION = '5.76';
+our $VERSION = '5.77';
our %Cache;
sub as_heavy {
@@ -102,14 +102,20 @@ Exporter - Implements default import method for modules
In module F<YourModule.pm>:
package YourModule;
+ use Exporter 'import';
+ our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request
+
+or
+
+ package YourModule;
require Exporter;
- our @ISA = qw(Exporter);
+ our @ISA = qw(Exporter); # inherit all of Exporter's methods
our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request
or
package YourModule;
- use Exporter 'import'; # gives you Exporter's import() method directly
+ use parent 'Exporter'; # inherit all of Exporter's methods
our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request
In other files which wish to use C<YourModule>:
@@ -143,8 +149,8 @@ symbols can represent functions, scalars, arrays, hashes, or typeglobs.
The symbols must be given by full name with the exception that the
ampersand in front of a function is optional, e.g.
- our @EXPORT = qw(afunc $scalar @array); # afunc is a function
- our @EXPORT_OK = qw(&bfunc %hash *typeglob); # explicit prefix on &bfunc
+ our @EXPORT = qw(afunc $scalar @array); # afunc is a function
+ our @EXPORT_OK = qw(&bfunc %hash *typeglob); # explicit prefix on &bfunc
If you are only exporting function names it is recommended to omit the
ampersand, as the implementation is faster this way.
@@ -309,7 +315,7 @@ Note: Be careful not to modify C<@_> at all before you call export_to_level
By including Exporter in your C<@ISA> you inherit an Exporter's import() method
but you also inherit several other helper methods which you probably don't
-want. To avoid this you can do:
+want and complicate the inheritance tree. To avoid this you can do:
package YourModule;
use Exporter qw(import);
@@ -473,8 +479,8 @@ This may happen for instance with mutually recursive
modules, which are affected by the time the relevant
constructions are executed.
-The ideal (but a bit ugly) way to never have to think
-about that is to use C<BEGIN> blocks. So the first part
+The ideal way to never have to think about that is to use
+C<BEGIN> blocks and the simple import method. So the first part
of the L</SYNOPSIS> code could be rewritten as:
package YourModule;
@@ -482,16 +488,27 @@ of the L</SYNOPSIS> code could be rewritten as:
use strict;
use warnings;
- our (@ISA, @EXPORT_OK);
+ use Exporter 'import';
+ BEGIN {
+ our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request
+ }
+
+Or if you need to inherit from Exporter:
+
+ package YourModule;
+
+ use strict;
+ use warnings;
+
BEGIN {
- require Exporter;
- @ISA = qw(Exporter);
- @EXPORT_OK = qw(munge frobnicate); # symbols to export on request
+ require Exporter;
+ our @ISA = qw(Exporter); # inherit all of Exporter's methods
+ our @EXPORT_OK = qw(munge frobnicate); # symbols to export on request
}
The C<BEGIN> will assure that the loading of F<Exporter.pm>
and the assignments to C<@ISA> and C<@EXPORT_OK> happen
-immediately, leaving no room for something to get awry
+immediately like C<use>, leaving no room for something to get awry
or just plain wrong.
With respect to loading C<Exporter> and inheriting, there
@@ -502,7 +519,7 @@ are alternatives with the use of modules like C<base> and C<parent>.
use parent qw(Exporter);
Any of these statements are nice replacements for
-C<BEGIN { require Exporter; @ISA = qw(Exporter); }>
+C<BEGIN { require Exporter; our @ISA = qw(Exporter); }>
with the same compile-time effect. The basic difference
is that C<base> code interacts with declared C<fields>
while C<parent> is a streamlined version of the older
diff --git a/Master/tlpkg/tlperl/lib/Exporter/Heavy.pm b/Master/tlpkg/tlperl/lib/Exporter/Heavy.pm
index 404b4c122be..338aae35eb4 100644
--- a/Master/tlpkg/tlperl/lib/Exporter/Heavy.pm
+++ b/Master/tlpkg/tlperl/lib/Exporter/Heavy.pm
@@ -4,7 +4,7 @@ use strict;
no strict 'refs';
# On one line so MakeMaker will see it.
-our $VERSION = '5.76';
+our $VERSION = '5.77';
=head1 NAME
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder.pm b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder.pm
index e470d41676b..705d30af034 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder.pm
@@ -7,7 +7,7 @@ use Perl::OSType qw/os_type/;
use warnings;
use strict;
-our $VERSION = '0.280236'; # VERSION
+our $VERSION = '0.280238'; # VERSION
our @ISA;
# We only use this once - don't waste a symbol table entry on it.
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Base.pm b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Base.pm
index 8ee248dfab1..0494cafd950 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Base.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Base.pm
@@ -9,7 +9,7 @@ use Text::ParseWords;
use IPC::Cmd qw(can_run);
use File::Temp qw(tempfile);
-our $VERSION = '0.280236'; # VERSION
+our $VERSION = '0.280238'; # VERSION
# More details about C/C++ compilers:
# http://developers.sun.com/sunstudio/documentation/product/compiler.jsp
@@ -335,10 +335,24 @@ sub _do_link {
return wantarray ? ($out, @temp_files) : $out;
}
+sub quote_literal {
+ my ($self, $string) = @_;
+
+ if (length $string && $string !~ /[^a-zA-Z0-9,._+@%\/-]/) {
+ return $string;
+ }
+
+ $string =~ s{'}{'\\''}g;
+
+ return "'$string'";
+}
sub do_system {
my ($self, @cmd) = @_;
- print "@cmd\n" if !$self->{quiet};
+ if (!$self->{quiet}) {
+ my $full = join ' ', map $self->quote_literal($_), @cmd;
+ print $full . "\n";
+ }
return !system(@cmd);
}
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Unix.pm b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Unix.pm
index 590068ca6f1..2eaf591bbe5 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Unix.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Unix.pm
@@ -4,7 +4,7 @@ use warnings;
use strict;
use ExtUtils::CBuilder::Base;
-our $VERSION = '0.280236'; # VERSION
+our $VERSION = '0.280238'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Base);
sub link_executable {
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/VMS.pm b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/VMS.pm
index d9b1fbd5712..d09a608fef3 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/VMS.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/VMS.pm
@@ -4,7 +4,7 @@ use warnings;
use strict;
use ExtUtils::CBuilder::Base;
-our $VERSION = '0.280236'; # VERSION
+our $VERSION = '0.280238'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Base);
use File::Spec::Functions qw(catfile catdir);
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows.pm b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows.pm
index b81384f629b..2fffc83d13c 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows.pm
@@ -8,7 +8,7 @@ use File::Spec;
use ExtUtils::CBuilder::Base;
use IO::File;
-our $VERSION = '0.280236'; # VERSION
+our $VERSION = '0.280238'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Base);
=begin comment
@@ -51,6 +51,22 @@ sub _compiler_type {
: 'GCC');
}
+# native quoting, not shell quoting
+sub quote_literal {
+ my ($self, $string) = @_;
+
+ # some of these characters don't need to be quoted for "native" quoting, but
+ # quote them anyway so they are more likely to make it through cmd.exe
+ if (length $string && $string !~ /[ \t\n\x0b"|<>%]/) {
+ return $string;
+ }
+
+ $string =~ s{(\\*)(?="|\z)}{$1$1}g;
+ $string =~ s{"}{\\"}g;
+
+ return qq{"$string"};
+}
+
sub split_like_shell {
# Since Windows will pass the whole command string (not an argument
# array) to the target program and make the program parse it itself,
@@ -65,10 +81,15 @@ sub split_like_shell {
sub do_system {
# See above
my $self = shift;
- my $cmd = join(" ",
- grep length,
- map {$a=$_;$a=~s/\t/ /g;$a=~s/^\s+|\s+$//;$a}
- grep defined, @_);
+ my $cmd = join ' ',
+ grep length,
+ map {$a=$_;$a=~s/\t/ /g;$a=~s/^\s+|\s+$//;$a}
+ grep defined, @_;
+
+ if (!$self->{quiet}) {
+ print $cmd . "\n";
+ }
+ local $self->{quiet} = 1;
return $self->SUPER::do_system($cmd);
}
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm
index 657241a2140..6ab48ba88ff 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/BCC.pm
@@ -1,6 +1,6 @@
package ExtUtils::CBuilder::Platform::Windows::BCC;
-our $VERSION = '0.280236'; # VERSION
+our $VERSION = '0.280238'; # VERSION
use strict;
use warnings;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm
index 52664c70834..c3eb7a0e633 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/GCC.pm
@@ -1,6 +1,6 @@
package ExtUtils::CBuilder::Platform::Windows::GCC;
-our $VERSION = '0.280236'; # VERSION
+our $VERSION = '0.280238'; # VERSION
use warnings;
use strict;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
index 6cbcc9b2768..ce5e99f0822 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/Windows/MSVC.pm
@@ -1,6 +1,6 @@
package ExtUtils::CBuilder::Platform::Windows::MSVC;
-our $VERSION = '0.280236'; # VERSION
+our $VERSION = '0.280238'; # VERSION
use warnings;
use strict;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/aix.pm b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/aix.pm
index 2ef8b38c060..35de7fa89cb 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/aix.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/aix.pm
@@ -5,7 +5,7 @@ use strict;
use ExtUtils::CBuilder::Platform::Unix;
use File::Spec;
-our $VERSION = '0.280236'; # VERSION
+our $VERSION = '0.280238'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Platform::Unix);
sub need_prelink { 1 }
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/android.pm b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/android.pm
index 8500ab93e3d..44ad646f1f3 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/android.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/android.pm
@@ -6,7 +6,7 @@ use File::Spec;
use ExtUtils::CBuilder::Platform::Unix;
use Config;
-our $VERSION = '0.280236'; # VERSION
+our $VERSION = '0.280238'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Platform::Unix);
# The Android linker will not recognize symbols from
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/cygwin.pm b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/cygwin.pm
index 3c8beacdeb7..14d814ca5a8 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/cygwin.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/cygwin.pm
@@ -5,7 +5,7 @@ use strict;
use File::Spec;
use ExtUtils::CBuilder::Platform::Unix;
-our $VERSION = '0.280236'; # VERSION
+our $VERSION = '0.280238'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Platform::Unix);
# TODO: If a specific exe_file name is requested, if the exe created
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/darwin.pm b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/darwin.pm
index e050e32ae7f..7e8ae7a4c71 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/darwin.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/darwin.pm
@@ -3,10 +3,14 @@ package ExtUtils::CBuilder::Platform::darwin;
use warnings;
use strict;
use ExtUtils::CBuilder::Platform::Unix;
+use Config;
-our $VERSION = '0.280236'; # VERSION
+our $VERSION = '0.280238'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Platform::Unix);
+my ($osver) = split /\./, $Config{osvers};
+my $apple_cor = $^X eq "/usr/bin/perl" && $osver >= 18;
+
sub compile {
my $self = shift;
my $cf = $self->{config};
@@ -22,5 +26,18 @@ sub compile {
$self->SUPER::compile(@_);
}
+sub arg_include_dirs {
+ my $self = shift;
+
+ if ($apple_cor) {
+ my $perl_inc = $self->perl_inc;
+ return map {
+ $_ eq $perl_inc ? ("-iwithsysroot", $_ ) : "-I$_"
+ } @_;
+ }
+ else {
+ return $self->SUPER::arg_include_dirs(@_);
+ }
+}
1;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/dec_osf.pm b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/dec_osf.pm
index 971cf93ff5f..6b97095b51d 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/dec_osf.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/dec_osf.pm
@@ -5,7 +5,7 @@ use strict;
use ExtUtils::CBuilder::Platform::Unix;
use File::Spec;
-our $VERSION = '0.280236'; # VERSION
+our $VERSION = '0.280238'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Platform::Unix);
sub link_executable {
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/os2.pm b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/os2.pm
index 58d316b57e9..a7d11dceea1 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/os2.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/CBuilder/Platform/os2.pm
@@ -4,7 +4,7 @@ use warnings;
use strict;
use ExtUtils::CBuilder::Platform::Unix;
-our $VERSION = '0.280236'; # VERSION
+our $VERSION = '0.280238'; # VERSION
our @ISA = qw(ExtUtils::CBuilder::Platform::Unix);
sub need_prelink { 1 }
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Command.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Command.pm
index e36453608ef..39cf5f2ffd5 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Command.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Command.pm
@@ -4,11 +4,10 @@ use 5.00503;
use strict;
use warnings;
require Exporter;
-use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION);
-@ISA = qw(Exporter);
-@EXPORT = qw(cp rm_f rm_rf mv cat eqtime mkpath touch test_f test_d chmod
- dos2unix);
-$VERSION = '7.62';
+our @ISA = qw(Exporter);
+our @EXPORT = qw(cp rm_f rm_rf mv cat eqtime mkpath touch test_f test_d chmod
+ dos2unix);
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
my $Is_VMS = $^O eq 'VMS';
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Command/MM.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Command/MM.pm
index 62fd8682d36..52198855ef5 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Command/MM.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Command/MM.pm
@@ -10,7 +10,7 @@ our @ISA = qw(Exporter);
our @EXPORT = qw(test_harness pod2man perllocal_install uninstall
warn_if_old_packlist test_s cp_nonempty);
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
my $Is_VMS = $^O eq 'VMS';
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Constant/Base.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Constant/Base.pm
index bd0d8a784b9..2500f8dcffc 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Constant/Base.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Constant/Base.pm
@@ -5,7 +5,7 @@ use vars qw($VERSION);
use Carp;
use Text::Wrap;
use ExtUtils::Constant::Utils qw(C_stringify perl_stringify);
-$VERSION = '0.06';
+$VERSION = '0.07';
use constant is_perl56 => ($] < 5.007 && $] > 5.005_50);
@@ -716,7 +716,7 @@ sub normalise_items
# tr///c is broken on 5.6.1 for utf8, so my original tr/\0-\177//c
# doesn't work. Upgrade to 5.8
# if ($name !~ tr/\0-\177//c || $] < 5.005_50) {
- if ($name =~ tr/\0-\177// == length $name || $] < 5.005_50
+ if ($name !~ /[[:^ascii:]]/ || $] < 5.005_50
|| $args->{disable_utf8_duplication}) {
# No characters outside 7 bit ASCII.
if (exists $items->{$name}) {
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Install.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Install.pm
index 96081806f78..83db80df500 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Install.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Install.pm
@@ -32,11 +32,11 @@ ExtUtils::Install - install files from here to there
=head1 VERSION
-2.20
+2.22
=cut
-our $VERSION = '2.20'; # <-- do not forget to update the POD section just above this line!
+our $VERSION = '2.22'; # <-- do not forget to update the POD section just above this line!
$VERSION = eval $VERSION;
=pod
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Installed.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Installed.pm
index 0cfd96b507d..c82861bd1da 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Installed.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Installed.pm
@@ -15,7 +15,7 @@ my $DOSISH = ($^O =~ /^(MSWin\d\d|os2|dos|mint)$/);
require VMS::Filespec if $Is_VMS;
-our $VERSION = '2.20';
+our $VERSION = '2.22';
$VERSION = eval $VERSION;
sub _is_prefix {
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Liblist.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Liblist.pm
index 16c13d91cf2..a21e16dc72e 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Liblist.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Liblist.pm
@@ -3,7 +3,7 @@ package ExtUtils::Liblist;
use strict;
use warnings;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
use File::Spec;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Liblist/Kid.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Liblist/Kid.pm
index 3a715fb0827..298a026bc4f 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Liblist/Kid.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Liblist/Kid.pm
@@ -11,7 +11,7 @@ use 5.006;
use strict;
use warnings;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
use ExtUtils::MakeMaker::Config;
@@ -58,6 +58,11 @@ sub _unix_os2_ext {
my ( $fullname, @fullname );
my ( $pwd ) = cwd(); # from Cwd.pm
my ( $found ) = 0;
+ if ($Config{gccversion}) {
+ chomp(my @incpath = grep s/^ //, grep { /^#include </ .. /^End of search / } `$Config{cc} -E -v - </dev/null 2>&1 >/dev/null`);
+ unshift @libpath, map { s{/include[^/]*}{/lib}; $_ } @incpath
+ }
+ @libpath = grep -d, @libpath;
if ( $^O eq 'darwin' or $^O eq 'next' ) {
# 'escape' Mach-O ld -framework and -F flags, so they aren't dropped later on
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM.pm
index b7765f05b2d..554e6fbb1cf 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM.pm
@@ -4,7 +4,7 @@ use strict;
use warnings;
use ExtUtils::MakeMaker::Config;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
require ExtUtils::Liblist;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_AIX.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_AIX.pm
index 562ee345204..d6519d2f4e3 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_AIX.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_AIX.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_AIX;
use strict;
use warnings;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
use ExtUtils::MakeMaker::Config;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_Any.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_Any.pm
index 69a94920eef..45136821c4a 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_Any.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_Any.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_Any;
use strict;
use warnings;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
use Carp;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_BeOS.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_BeOS.pm
index 2c12ad1be71..e544515a3fd 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_BeOS.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_BeOS.pm
@@ -27,7 +27,7 @@ require ExtUtils::MM_Any;
require ExtUtils::MM_Unix;
our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix );
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_Cygwin.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_Cygwin.pm
index 190db104bda..f44877b257f 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_Cygwin.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_Cygwin.pm
@@ -10,7 +10,7 @@ require ExtUtils::MM_Unix;
require ExtUtils::MM_Win32;
our @ISA = qw( ExtUtils::MM_Unix );
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_DOS.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_DOS.pm
index 5a9eb227076..c23ec5dcf21 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_DOS.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_DOS.pm
@@ -3,7 +3,7 @@ package ExtUtils::MM_DOS;
use strict;
use warnings;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
require ExtUtils::MM_Any;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_Darwin.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_Darwin.pm
index 5db448b9be9..24f48d902ee 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_Darwin.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_Darwin.pm
@@ -8,7 +8,7 @@ BEGIN {
our @ISA = qw( ExtUtils::MM_Unix );
}
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_MacOS.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_MacOS.pm
index 60c149157e5..e186b916d05 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_MacOS.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_MacOS.pm
@@ -3,7 +3,7 @@ package ExtUtils::MM_MacOS;
use strict;
use warnings;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
sub new {
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_NW5.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_NW5.pm
index c345fcb4d97..e2ba1dfcdb3 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_NW5.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_NW5.pm
@@ -23,7 +23,7 @@ use warnings;
use ExtUtils::MakeMaker::Config;
use File::Basename;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
require ExtUtils::MM_Win32;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_OS2.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_OS2.pm
index 788eb6ec012..2cbec89fd8f 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_OS2.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_OS2.pm
@@ -6,7 +6,7 @@ use warnings;
use ExtUtils::MakeMaker qw(neatvalue);
use File::Spec;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
require ExtUtils::MM_Any;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_OS390.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_OS390.pm
index 172d27c85fe..cb78ecaaf1f 100755
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_OS390.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_OS390.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_OS390;
use strict;
use warnings;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
use ExtUtils::MakeMaker::Config;
@@ -61,8 +61,8 @@ sub xs_make_dynamic_lib {
$ld_run_path_shell = 'LD_RUN_PATH="$(LD_RUN_PATH)" ';
}
- push @m, sprintf <<'MAKE', $ld_run_path_shell, $dlsyms_arg, $self->xs_obj_opt('$@'), $ldfrom, $libs, $exportlist;
- %s$(LD) $(LDDLFLAGS) %s $(OTHERLDFLAGS) %s $(MYEXTLIB) %s \
+ push @m, sprintf <<'MAKE', $ld_run_path_shell, $self->xs_obj_opt('$@'), $dlsyms_arg, $ldfrom, $libs, $exportlist;
+ %s$(LD) %s $(LDDLFLAGS) %s $(OTHERLDFLAGS) %s $(MYEXTLIB) \
$(PERL_ARCHIVE) %s $(PERL_ARCHIVE_AFTER) %s \
$(INST_DYNAMIC_FIX)
$(CHMOD) $(PERM_RWX) $@
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_QNX.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_QNX.pm
index 475711278c5..ee063648103 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_QNX.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_QNX.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_QNX;
use strict;
use warnings;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
require ExtUtils::MM_Unix;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_UWIN.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_UWIN.pm
index 4eabbcabd40..64852a127ea 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_UWIN.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_UWIN.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_UWIN;
use strict;
use warnings;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
require ExtUtils::MM_Unix;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_Unix.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_Unix.pm
index 977b50ed025..fe385984f12 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_Unix.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_Unix.pm
@@ -13,10 +13,11 @@ our %Config_Override;
use ExtUtils::MakeMaker qw($Verbose neatvalue _sprintf562);
-# If we make $VERSION an our variable parse_version() breaks
-use vars qw($VERSION);
-$VERSION = '7.62';
+# If $VERSION is in scope, parse_version() breaks
+{
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
+}
require ExtUtils::MM_Any;
our @ISA = qw(ExtUtils::MM_Any);
@@ -34,13 +35,16 @@ BEGIN {
$Is{SunOS4} = $^O eq 'sunos';
$Is{Solaris} = $^O eq 'solaris';
$Is{SunOS} = $Is{SunOS4} || $Is{Solaris};
- $Is{BSD} = ($^O =~ /^(?:free|net|open)bsd$/ or
+ $Is{BSD} = ($^O =~ /^(?:free|midnight|net|open)bsd$/ or
grep( $^O eq $_, qw(bsdos interix dragonfly) )
);
$Is{Android} = $^O =~ /android/;
- if ( $^O eq 'darwin' && $^X eq '/usr/bin/perl' ) {
+ if ( $^O eq 'darwin' ) {
my @osvers = split /\./, $Config{osvers};
- $Is{ApplCor} = ( $osvers[0] >= 18 );
+ if ( $^X eq '/usr/bin/perl' ) {
+ $Is{ApplCor} = ( $osvers[0] >= 18 );
+ }
+ $Is{AppleRPath} = ( $osvers[0] >= 9 );
}
}
@@ -141,9 +145,9 @@ sub c_o {
$flags =~ s/"-I(\$\(PERL_INC\))"/-iwithsysroot "$1"/;
}
- if (my $cpp = $Config{cpprun}) {
+ if (my $cpp = $self->{CPPRUN}) {
my $cpp_cmd = $self->const_cccmd;
- $cpp_cmd =~ s/^CCCMD\s*=\s*\$\(CC\)/$cpp/;
+ $cpp_cmd =~ s/^CCCMD\s*=\s*\$\(CC\)/\$(CPPRUN)/;
push @m, qq{
.c.i:
$cpp_cmd $flags \$*.c > \$*.i
@@ -1048,9 +1052,19 @@ sub xs_make_dynamic_lib {
}
$ldfrom = "-all $ldfrom -none" if $Is{OSF};
+ my $ldrun = '';
# The IRIX linker doesn't use LD_RUN_PATH
- my $ldrun = $Is{IRIX} && $self->{LD_RUN_PATH} ?
- qq{-rpath "$self->{LD_RUN_PATH}"} : '';
+ if ( $self->{LD_RUN_PATH} ) {
+ if ( $Is{IRIX} ) {
+ $ldrun = qq{-rpath "$self->{LD_RUN_PATH}"};
+ }
+ elsif ( $^O eq 'darwin' && $Is{AppleRPath} ) {
+ # both clang and gcc support -Wl,-rpath, but only clang supports
+ # -rpath so by using -Wl,-rpath we avoid having to check for the
+ # type of compiler
+ $ldrun = qq{-Wl,-rpath,"$self->{LD_RUN_PATH}"};
+ }
+ }
# For example in AIX the shared objects/libraries from previous builds
# linger quite a while in the shared dynalinker cache even when nobody
@@ -1315,7 +1329,7 @@ sub _fixin_replace_shebang {
if ($self->maybe_command($origcmd) && grep { $_ eq $origdir } @absdirs) {
my ($odev, $oino) = stat $origcmd;
my ($idev, $iino) = stat $interpreter;
- if ($odev == $idev && $oino == $iino) {
+ if ($odev == $idev && $oino eq $iino) {
warn "$origcmd is the same as $interpreter, leaving alone"
if $Verbose;
$interpreter = $origcmd;
@@ -2183,7 +2197,7 @@ Add MM_Unix_VERSION.
sub init_platform {
my($self) = shift;
- $self->{MM_Unix_VERSION} = $VERSION;
+ $self->{MM_Unix_VERSION} = our $VERSION;
$self->{PERL_MALLOC_DEF} = '-DPERL_EXTMALLOC_DEF -Dmalloc=Perl_malloc '.
'-Dfree=Perl_mfree -Drealloc=Perl_realloc '.
'-Dcalloc=Perl_calloc';
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_VMS.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_VMS.pm
index 414ee4b20c9..4ed4e26e722 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_VMS.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_VMS.pm
@@ -16,7 +16,7 @@ BEGIN {
use File::Basename;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
require ExtUtils::MM_Any;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_VOS.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_VOS.pm
index 72f472cca2e..cdbd1afdd6d 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_VOS.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_VOS.pm
@@ -2,7 +2,7 @@ package ExtUtils::MM_VOS;
use strict;
use warnings;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
require ExtUtils::MM_Unix;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_Win32.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_Win32.pm
index ab2e0b9b683..5d931b4e5aa 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_Win32.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_Win32.pm
@@ -27,7 +27,7 @@ use ExtUtils::MakeMaker qw(neatvalue _sprintf562);
require ExtUtils::MM_Any;
require ExtUtils::MM_Unix;
our @ISA = qw( ExtUtils::MM_Any ExtUtils::MM_Unix );
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
$ENV{EMXSHELL} = 'sh'; # to run `commands`
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MM_Win95.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MM_Win95.pm
index e415beb2ae7..e907fb1a399 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MM_Win95.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MM_Win95.pm
@@ -3,7 +3,7 @@ package ExtUtils::MM_Win95;
use strict;
use warnings;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
require ExtUtils::MM_Win32;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MY.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MY.pm
index 6640c331572..4b24422ee39 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MY.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MY.pm
@@ -3,7 +3,7 @@ package ExtUtils::MY;
use strict;
require ExtUtils::MM;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
our @ISA = qw(ExtUtils::MM);
@@ -30,7 +30,7 @@ ExtUtils::MY - ExtUtils::MakeMaker subclass for customization
B<FOR INTERNAL USE ONLY>
-ExtUtils::MY is a subclass of L<ExtUtils::MM>. Its provided in your
+ExtUtils::MY is a subclass of L<ExtUtils::MM>. It is provided in your
Makefile.PL for you to add and override MakeMaker functionality.
It also provides a convenient alias via the MY class.
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker.pm
index b9b38368e02..e8c3808b381 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker.pm
@@ -25,7 +25,7 @@ my %Recognized_Att_Keys;
our %macro_fsentity; # whether a macro is a filesystem name
our %macro_dep; # whether a macro is a dependency
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
# Emulate something resembling CVS $Revision$
@@ -393,7 +393,7 @@ sub full_setup {
# we will use all these variables in the Makefile
@Get_from_Config =
qw(
- ar cc cccdlflags ccdlflags dlext dlsrc exe_ext full_ar ld
+ ar cc cccdlflags ccdlflags cpprun dlext dlsrc exe_ext full_ar ld
lddlflags ldflags libc lib_ext obj_ext osname osvers ranlib
sitelibexp sitearchexp so
);
@@ -525,7 +525,10 @@ sub new {
# simulate "use warnings FATAL => 'all'" for vintage perls
die @_;
};
- version->new( $perl_version )->numify;
+ my $v = version->new($perl_version);
+ # we care about parse issues, not numify warnings
+ no warnings;
+ $v->numify;
};
$perl_version =~ tr/_//d
if defined $perl_version;
@@ -634,7 +637,7 @@ END
if (%unsatisfied && $self->{PREREQ_FATAL}){
my $failedprereqs = join "\n", map {" $_ $unsatisfied{$_}"}
- sort { $a cmp $b } keys %unsatisfied;
+ sort { lc $a cmp lc $b } keys %unsatisfied;
die <<"END";
MakeMaker FATAL: prerequisites not found.
$failedprereqs
@@ -720,7 +723,7 @@ END
# RT#91540 PREREQ_FATAL not recognized on command line
if (%unsatisfied && $self->{PREREQ_FATAL}){
my $failedprereqs = join "\n", map {" $_ $unsatisfied{$_}"}
- sort { $a cmp $b } keys %unsatisfied;
+ sort { lc $a cmp lc $b } keys %unsatisfied;
die <<"END";
MakeMaker FATAL: prerequisites not found.
$failedprereqs
@@ -1151,19 +1154,20 @@ sub check_hints {
}
sub _run_hintfile {
- my ($self, $hint_file) = @_;
+ our $self;
+ local($self) = shift; # make $self available to the hint file.
+ my($hint_file) = shift;
local($@, $!);
print "Processing hints file $hint_file\n" if $Verbose;
- if(open(my $fh, '<', $hint_file)) {
- my $hints_content = do { local $/; <$fh> };
- no strict;
- eval $hints_content;
- warn "Failed to run hint file $hint_file: $@" if $@;
- }
- else {
- warn "Could not open $hint_file for read: $!";
+ # Just in case the ./ isn't on the hint file, which File::Spec can
+ # often strip off, we bung the curdir into @INC
+ local @INC = (File::Spec->curdir, @INC);
+ my $ret = do $hint_file;
+ if( !defined $ret ) {
+ my $error = $@ || $!;
+ warn $error;
}
}
@@ -1262,6 +1266,7 @@ sub write_file_via_tmp {
die "write_file_via_tmp: 2nd arg must be ref" unless ref $contents;
for my $chunk (@$contents) {
my $to_write = $chunk;
+ $to_write = '' unless defined $to_write;
utf8::encode $to_write if !$CAN_DECODE && "$]" > 5.008;
print $fh "$to_write\n" or die "Can't write to MakeMaker.tmp: $!";
}
@@ -1331,26 +1336,6 @@ sub neatvalue {
return "{ ".join(', ',@m)." }";
}
-sub _find_magic_vstring {
- my $value = shift;
- return $value if $UNDER_CORE;
- my $tvalue = '';
- require B;
- my $sv = B::svref_2object(\$value);
- my $magic = ref($sv) eq 'B::PVMG' ? $sv->MAGIC : undef;
- while ( $magic ) {
- if ( $magic->TYPE eq 'V' ) {
- $tvalue = $magic->PTR;
- $tvalue =~ s/^v?(.+)$/v$1/;
- last;
- }
- else {
- $magic = $magic->MOREMAGIC;
- }
- }
- return $tvalue;
-}
-
sub selfdocument {
my($self) = @_;
my(@m);
@@ -1836,7 +1821,11 @@ currently used by MakeMaker but may be handy in Makefile.PLs.
=item CCFLAGS
String that will be included in the compiler call command line between
-the arguments INC and OPTIMIZE.
+the arguments INC and OPTIMIZE. Note that setting this will overwrite its
+default value (C<$Config::Config{ccflags}>); to preserve that, include
+the default value directly, e.g.:
+
+ CCFLAGS => "$Config::Config{ccflags} ..."
=item CONFIG
@@ -1846,6 +1835,7 @@ ar
cc
cccdlflags
ccdlflags
+cpprun
dlext
dlsrc
ld
@@ -2671,10 +2661,9 @@ instead. See above, or the L<ExtUtils::MakeMaker::FAQ> entry.
=item POLLUTE
-Release 5.005 grandfathered old global symbol names by providing preprocessor
-macros for extension source compatibility. As of release 5.6, these
-preprocessor definitions are not available by default. The POLLUTE flag
-specifies that the old names should still be defined:
+Prior to 5.6 various interpreter variables were available without a C<PL_>
+prefix, eg. C<PL_undef> was available as C<undef>. As of release 5.6, these
+are only defined if the POLLUTE flag is enabled:
perl Makefile.PL POLLUTE=1
@@ -3293,7 +3282,7 @@ are generated when F<Makefile.PL> generates a F<Makefile> (if L<CPAN::Meta>
is installed). Clients like L<CPAN> or L<CPANPLUS> will read these
files to see what prerequisites must be fulfilled before building or testing
the distribution. If you wish to shut this feature off, set the C<NO_MYMETA>
-C<WriteMakeFile()> flag to true.
+C<WriteMakefile()> flag to true.
=head2 Disabling an extension
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Config.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Config.pm
index 323b1575f7e..abc9db1adea 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Config.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Config.pm
@@ -3,7 +3,7 @@ package ExtUtils::MakeMaker::Config;
use strict;
use warnings;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
use Config ();
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/FAQ.pod b/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/FAQ.pod
index 4b0b237500d..76dca18e897 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/FAQ.pod
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/FAQ.pod
@@ -1,6 +1,6 @@
package ExtUtils::MakeMaker::FAQ;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
1;
@@ -129,7 +129,7 @@ Let's take the following test directory structure:
t/bar/othertest.t
t/bar/baz/anothertest.t
-Now, inside of the C<WriteMakeFile()> function in your F<Makefile.PL>, specify
+Now, inside of the C<WriteMakefile()> function in your F<Makefile.PL>, specify
where your tests are located with the C<test> directive:
test => {TESTS => 't/*.t t/*/*.t t/*/*/*.t'}
@@ -536,8 +536,7 @@ And of course a very basic test:
t/cool.t:
--------
- use Test;
- BEGIN { plan tests => 1 };
+ use Test::More tests => 1;
use Cool::Foo;
use Cool::Bar;
Cool::Foo::perl_rules();
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Locale.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Locale.pm
index a842bb40d6b..7a75411a7a0 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Locale.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Locale.pm
@@ -2,7 +2,7 @@ package ExtUtils::MakeMaker::Locale;
use strict;
use warnings;
-our $VERSION = "7.62";
+our $VERSION = "7.70";
$VERSION =~ tr/_//d;
use base 'Exporter';
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Tutorial.pod b/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Tutorial.pod
index eafccc9d101..9e545b37f9b 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Tutorial.pod
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/Tutorial.pod
@@ -1,6 +1,6 @@
package ExtUtils::MakeMaker::Tutorial;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
@@ -112,7 +112,7 @@ example:
t/foo/subdir_test.t
-To do this, you need to inform C<WriteMakeFile()> in your I<Makefile.PL> file
+To do this, you need to inform C<WriteMakefile()> in your I<Makefile.PL> file
in the following fashion:
test => {TESTS => 't/*.t t/*/*.t'}
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/version.pm b/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/version.pm
index 0208a1f9329..59fb20e5ce1 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/version.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/MakeMaker/version.pm
@@ -16,7 +16,7 @@ use warnings;
use vars qw(@ISA $VERSION $CLASS $STRICT $LAX *declare *qv);
-$VERSION = '7.62';
+$VERSION = '7.70';
$VERSION =~ tr/_//d;
$CLASS = 'version';
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Miniperl.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Miniperl.pm
index cdc1244f02e..18627f8a5e8 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Miniperl.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Miniperl.pm
@@ -1,12 +1,11 @@
#!./perl -w
package ExtUtils::Miniperl;
use strict;
-require Exporter;
+use Exporter 'import';
use ExtUtils::Embed 1.31, qw(xsi_header xsi_protos xsi_body);
-our @ISA = qw(Exporter);
our @EXPORT = qw(writemain);
-our $VERSION = '1.10';
+our $VERSION = '1.13';
# blead will run this with miniperl, hence we can't use autodie or File::Temp
my $temp;
@@ -100,9 +99,6 @@ main(int argc, char **argv, char **env)
#ifndef NO_ENV_ARRAY_IN_MAIN
PERL_UNUSED_ARG(env);
#endif
-#ifndef PERL_USE_SAFE_PUTENV
- PL_use_safe_putenv = FALSE;
-#endif /* PERL_USE_SAFE_PUTENV */
/* if user wants control of gprof profiling off by default */
/* noop unless Configure is given -Accflags=-DPERL_GPROF_CONTROL */
@@ -139,8 +135,29 @@ main(int argc, char **argv, char **env)
PL_perl_destruct_level = 0;
}
PL_exit_flags |= PERL_EXIT_DESTRUCT_END;
- if (!perl_parse(my_perl, xs_init, argc, argv, (char **)NULL))
+ if (!perl_parse(my_perl, xs_init, argc, argv, (char **)NULL)) {
+
+ /* perl_parse() may end up starting its own run loops, which
+ * might end up "leaking" PL_restartop from the parse phase into
+ * the run phase which then ends up confusing run_body(). This
+ * leakage shouldn't happen and if it does its a bug.
+ *
+ * Note we do not do this assert in perl_run() or perl_parse()
+ * as there are modules out there which explicitly set
+ * PL_restartop before calling perl_run() directly from XS code
+ * (Coro), and it is conceivable PL_restartop could be set prior
+ * to calling perl_parse() by XS code as well.
+ *
+ * What we want to check is that the top level perl_parse(),
+ * perl_run() pairing does not allow a leaking PL_restartop, as
+ * that indicates a bug in perl. By putting the assert here we
+ * can validate that Perl itself is operating correctly without
+ * risking breakage to XS code under DEBUGGING. - Yves
+ */
+ assert(!PL_restartop);
+
perl_run(my_perl);
+ }
#ifndef PERL_MICRO
/* Unregister our signal handler before destroying my_perl */
@@ -155,19 +172,6 @@ main(int argc, char **argv, char **env)
perl_free(my_perl);
-#if defined(USE_ENVIRON_ARRAY) && defined(PERL_TRACK_MEMPOOL) && !defined(NO_ENV_ARRAY_IN_MAIN)
- /*
- * The old environment may have been freed by perl_free()
- * when PERL_TRACK_MEMPOOL is defined, but without having
- * been restored by perl_destruct() before (this is only
- * done if destruct_level > 0).
- *
- * It is important to have a valid environment for atexit()
- * routines that are eventually called.
- */
- environ = env;
-#endif
-
PERL_SYS_TERM();
exit(exitstatus);
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Mkbootstrap.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Mkbootstrap.pm
index 1f14ee9e769..9a490a60a97 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Mkbootstrap.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Mkbootstrap.pm
@@ -3,7 +3,7 @@ package ExtUtils::Mkbootstrap;
use strict;
use warnings;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
require Exporter;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Mksymlists.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Mksymlists.pm
index 2a7c455e8e9..ec074dca224 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Mksymlists.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Mksymlists.pm
@@ -11,7 +11,7 @@ use Config;
our @ISA = qw(Exporter);
our @EXPORT = qw(&Mksymlists);
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
sub Mksymlists {
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/PL2Bat.pm b/Master/tlpkg/tlperl/lib/ExtUtils/PL2Bat.pm
index 070e186fecd..68074179455 100755
--- a/Master/tlpkg/tlperl/lib/ExtUtils/PL2Bat.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/PL2Bat.pm
@@ -1,5 +1,5 @@
package ExtUtils::PL2Bat;
-$ExtUtils::PL2Bat::VERSION = '0.004';
+$ExtUtils::PL2Bat::VERSION = '0.005';
use strict;
use warnings;
@@ -122,7 +122,7 @@ ExtUtils::PL2Bat - Batch file creation to run perl scripts on Windows
=head1 VERSION
-version 0.004
+version 0.005
=head1 OVERVIEW
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Packlist.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Packlist.pm
index 98d09e3d820..5fa93ff2740 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Packlist.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Packlist.pm
@@ -4,7 +4,7 @@ use strict;
use Carp qw();
use Config;
our $Relocations;
-our $VERSION = '2.20';
+our $VERSION = '2.22';
$VERSION = eval $VERSION;
# Used for generating filehandle globs. IO::File might not be available!
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS.pm b/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS.pm
index d2205acd5aa..07215822500 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS.pm
@@ -11,7 +11,7 @@ use Symbol;
our $VERSION;
BEGIN {
- $VERSION = '3.43';
+ $VERSION = '3.51';
require ExtUtils::ParseXS::Constants; ExtUtils::ParseXS::Constants->VERSION($VERSION);
require ExtUtils::ParseXS::CountLines; ExtUtils::ParseXS::CountLines->VERSION($VERSION);
require ExtUtils::ParseXS::Utilities; ExtUtils::ParseXS::Utilities->VERSION($VERSION);
@@ -31,6 +31,7 @@ use ExtUtils::ParseXS::Utilities qw(
analyze_preprocessor_statements
set_cond
Warn
+ WarnHint
current_line_number
blurt
death
@@ -47,7 +48,10 @@ our @EXPORT_OK = qw(
##############################
# A number of "constants"
-
+our $DIE_ON_ERROR;
+our $AUTHOR_WARNINGS;
+$AUTHOR_WARNINGS = ($ENV{AUTHOR_WARNINGS} || 0)
+ unless defined $AUTHOR_WARNINGS;
our ($C_group_rex, $C_arg);
# Group in C (no support for comments or literals)
$C_group_rex = qr/ [({\[]
@@ -103,6 +107,8 @@ sub process_file {
typemap => [],
versioncheck => 1,
FH => Symbol::gensym(),
+ die_on_error => $DIE_ON_ERROR, # if true we die() and not exit() after errors
+ author_warnings => $AUTHOR_WARNINGS,
%options,
);
$args{except} = $args{except} ? ' TRY' : '';
@@ -119,9 +125,9 @@ sub process_file {
}
@{ $self->{XSStack} } = ({type => 'none'});
$self->{InitFileCode} = [ @ExtUtils::ParseXS::Constants::InitFileCode ];
- $self->{Overload} = 0; # bool
+ $self->{Overloaded} = {}; # hashref of Package => Packid
+ $self->{Fallback} = {}; # hashref of Package => fallback setting
$self->{errors} = 0; # count
- $self->{Fallback} = '&PL_sv_undef';
# Most of the 1500 lines below uses these globals. We'll have to
# clean this up sometime, probably. For now, we just pull them out
@@ -133,6 +139,9 @@ sub process_file {
$self->{WantLineNumbers} = $args{linenumbers};
$self->{IncludedFiles} = {};
+ $self->{die_on_error} = $args{die_on_error};
+ $self->{author_warnings} = $args{author_warnings};
+
die "Missing required parameter 'filename'" unless $args{filename};
$self->{filepathname} = $args{filename};
($self->{dir}, $self->{filename}) =
@@ -301,6 +310,7 @@ EOM
$self->{interface_macro_set} = 'XSINTERFACE_FUNC_SET';
$self->{ProtoThisXSUB} = $self->{WantPrototypes}; # states 0 (none), 1 (yes), 2 (empty prototype)
$self->{ScopeThisXSUB} = 0; # bool
+ $self->{OverloadsThisXSUB} = {}; # overloaded operators (as hash keys, to de-dup)
my $xsreturn = 0;
@@ -626,7 +636,16 @@ EOF
$self->print_section();
$self->death("PPCODE must be last thing") if @{ $self->{line} };
print "\tLEAVE;\n" if $self->{ScopeThisXSUB};
+ print "#if defined(__HP_cc) || defined(__HP_aCC)\n",
+ "#pragma diag_suppress 2111\n",
+ "#endif\n"
+ if $^O eq "hpux";
print "\tPUTBACK;\n\treturn;\n";
+ print "#if defined(__HP_cc) || defined(__HP_aCC)\n",
+ "#pragma diag_default 2111\n",
+ "#endif\n"
+ if $^O eq "hpux";
+
}
elsif ($self->check_keyword("CODE")) {
my $consumed_code = $self->print_section();
@@ -690,10 +709,17 @@ EOF
do_push => undef,
} ) for grep $self->{in_out}->{$_} =~ /OUT$/, sort keys %{ $self->{in_out} };
- my $prepush_done;
+ my $outlist_count = @{ $outlist_ref };
+ if ($outlist_count) {
+ my $ext = $outlist_count;
+ ++$ext if $self->{gotRETVAL} || $wantRETVAL;
+ print "\tXSprePUSH;";
+ print "\tEXTEND(SP,$ext);\n";
+ }
# all OUTPUT done, so now push the return value on the stack
if ($self->{gotRETVAL} && $self->{RETVAL_code}) {
print "\t$self->{RETVAL_code}\n";
+ print "\t++SP;\n" if $outlist_count;
}
elsif ($self->{gotRETVAL} || $wantRETVAL) {
my $outputmap = $self->{typemap}->get_outputmap( ctype => $self->{ret_type} );
@@ -708,8 +734,9 @@ EOF
);
if (not $trgt->{with_size} and $trgt->{type} eq 'p') { # sv_setpv
# PUSHp corresponds to sv_setpvn. Treat sv_setpv directly
- print "\tsv_setpv(TARG, $what); XSprePUSH; PUSHTARG;\n";
- $prepush_done = 1;
+ print "\tsv_setpv(TARG, $what);\n";
+ print "\tXSprePUSH;\n" unless $outlist_count;
+ print "\tPUSHTARG;\n";
}
else {
my $tsize = $trgt->{what_size};
@@ -718,8 +745,8 @@ EOF
qq("$tsize"),
{var => $var, type => $self->{ret_type}}
);
- print "\tXSprePUSH; PUSH$trgt->{type}($what$tsize);\n";
- $prepush_done = 1;
+ print "\tXSprePUSH;\n" unless $outlist_count;
+ print "\tPUSH$trgt->{type}($what$tsize);\n";
}
}
else {
@@ -731,15 +758,13 @@ EOF
do_setmagic => 0,
do_push => undef,
} );
+ print "\t++SP;\n" if $outlist_count;
}
}
$xsreturn = 1 if $self->{ret_type} ne "void";
my $num = $xsreturn;
- my $c = @{ $outlist_ref };
- print "\tXSprePUSH;" if $c and not $prepush_done;
- print "\tEXTEND(SP,$c);\n" if $c;
- $xsreturn += $c;
+ $xsreturn += $outlist_count;
$self->generate_output( {
type => $self->{var_types}->{$_},
num => $num++,
@@ -782,6 +807,10 @@ EOF
# if (errbuf[0])
# Perl_croak(aTHX_ errbuf);
EOF
+ print "#if defined(__HP_cc) || defined(__HP_aCC)\n",
+ "#pragma diag_suppress 2128\n",
+ "#endif\n"
+ if $^O eq "hpux";
if ($xsreturn) {
print Q(<<"EOF") unless $PPCODE;
@@ -793,6 +822,10 @@ EOF
# XSRETURN_EMPTY;
EOF
}
+ print "#if defined(__HP_cc) || defined(__HP_aCC)\n",
+ "#pragma diag_default 2128\n",
+ "#endif\n"
+ if $^O eq "hpux";
print Q(<<"EOF");
#]]
@@ -865,12 +898,20 @@ EOF
push(@{ $self->{InitFileCode} },
" (void)$self->{newXS}(\"$self->{pname}\", XS_$self->{Full_func_name}$self->{file}$self->{proto});\n");
}
+
+ for my $operator (sort keys %{ $self->{OverloadsThisXSUB} }) {
+ $self->{Overloaded}->{$self->{Package}} = $self->{Packid};
+ my $overload = "$self->{Package}\::($operator";
+ push(@{ $self->{InitFileCode} },
+ " (void)$self->{newXS}(\"$overload\", XS_$self->{Full_func_name}$self->{file}$self->{proto});\n");
+ }
} # END 'PARAGRAPH' 'while' loop
- if ($self->{Overload}) { # make it findable with fetchmethod
+ for my $package (sort keys %{ $self->{Overloaded} }) { # make them findable with fetchmethod
+ my $packid = $self->{Overloaded}->{$package};
print Q(<<"EOF");
-#XS_EUPXS(XS_$self->{Packid}_nil); /* prototype to pass -Wmissing-prototypes */
-#XS_EUPXS(XS_$self->{Packid}_nil)
+#XS_EUPXS(XS_${packid}_nil); /* prototype to pass -Wmissing-prototypes */
+#XS_EUPXS(XS_${packid}_nil)
#{
# dXSARGS;
# PERL_UNUSED_VAR(items);
@@ -878,11 +919,11 @@ EOF
#}
#
EOF
- unshift(@{ $self->{InitFileCode} }, <<"MAKE_FETCHMETHOD_WORK");
- /* Making a sub named "$self->{Package}::()" allows the package */
- /* to be findable via fetchmethod(), and causes */
- /* overload::Overloaded("$self->{Package}") to return true. */
- (void)$self->{newXS}("$self->{Package}::()", XS_$self->{Packid}_nil$self->{file}$self->{proto});
+ unshift(@{ $self->{InitFileCode} }, Q(<<"MAKE_FETCHMETHOD_WORK"));
+# /* Making a sub named "${package}::()" allows the package */
+# /* to be findable via fetchmethod(), and causes */
+# /* overload::Overloaded("$package") to return true. */
+# (void)newXS_deffile("${package}::()", XS_${packid}_nil);
MAKE_FETCHMETHOD_WORK
}
@@ -890,7 +931,7 @@ MAKE_FETCHMETHOD_WORK
print Q(<<"EOF");
##ifdef __cplusplus
-#extern "C"
+#extern "C" {
##endif
EOF
@@ -953,19 +994,28 @@ EOF
#
EOF
- print Q(<<"EOF") if ($self->{Overload});
+ if (keys %{ $self->{Overloaded} }) {
+ # once if any overloads
+ print Q(<<"EOF");
# /* register the overloading (type 'A') magic */
##if PERL_VERSION_LE(5, 8, 999) /* PERL_VERSION_LT is 5.33+ */
# PL_amagic_generation++;
##endif
+EOF
+ for my $package (sort keys %{ $self->{Overloaded} }) {
+ # once for each package with overloads
+ my $fallback = $self->{Fallback}->{$package} || "&PL_sv_undef";
+ print Q(<<"EOF");
# /* The magic for overload gets a GV* via gv_fetchmeth as */
# /* mentioned above, and looks in the SV* slot of it for */
# /* the "fallback" status. */
# sv_setsv(
-# get_sv( "$self->{Package}::()", TRUE ),
-# $self->{Fallback}
+# get_sv( "${package}::()", TRUE ),
+# $fallback
# );
EOF
+ }
+ }
print @{ $self->{InitFileCode} };
@@ -992,6 +1042,9 @@ EOF
##endif
#]]
#
+##ifdef __cplusplus
+#}
+##endif
EOF
warn("Please specify prototyping behavior for $self->{filename} (see perlxs manual)\n")
@@ -1286,26 +1339,89 @@ sub get_aliases {
my ($line) = @_;
my ($orig) = $line;
+ # we use this later for symbolic aliases
+ my $fname = $self->{Packprefix} . $self->{func_name};
+
# Parse alias definitions
# format is
- # alias = value alias = value ...
-
- while ($line =~ s/^\s*([\w:]+)\s*=\s*(\w+)\s*//) {
- my ($alias, $value) = ($1, $2);
+ # alias = value Pack::alias = value ...
+ # or
+ # alias => other
+ # or
+ # alias => Pack::other
+ # or
+ # Pack::alias => Other::alias
+
+ while ($line =~ s/^\s*([\w:]+)\s*=(>?)\s*([\w:]+)\s*//) {
+ my ($alias, $is_symbolic, $value) = ($1, $2, $3);
my $orig_alias = $alias;
+ blurt( $self, "Error: In alias definition for '$alias' the value may not"
+ . " contain ':' unless it is symbolic.")
+ if !$is_symbolic and $value=~/:/;
+
# check for optional package definition in the alias
$alias = $self->{Packprefix} . $alias if $alias !~ /::/;
+ if ($is_symbolic) {
+ my $orig_value = $value;
+ $value = $self->{Packprefix} . $value if $value !~ /::/;
+ if (defined $self->{XsubAliases}->{$value}) {
+ $value = $self->{XsubAliases}->{$value};
+ } elsif ($value eq $fname) {
+ $value = 0;
+ } else {
+ blurt( $self, "Error: Unknown alias '$value' in symbolic definition for '$orig_alias'");
+ }
+ }
+
# check for duplicate alias name & duplicate value
- Warn( $self, "Warning: Ignoring duplicate alias '$orig_alias'")
- if defined $self->{XsubAliases}->{$alias};
+ my $prev_value = $self->{XsubAliases}->{$alias};
+ if (defined $prev_value) {
+ if ($prev_value eq $value) {
+ Warn( $self, "Warning: Ignoring duplicate alias '$orig_alias'")
+ } else {
+ Warn( $self, "Warning: Conflicting duplicate alias '$orig_alias'"
+ . " changes definition from '$prev_value' to '$value'");
+ delete $self->{XsubAliasValues}->{$prev_value}{$alias};
+ }
+ }
- Warn( $self, "Warning: Aliases '$orig_alias' and '$self->{XsubAliasValues}->{$value}' have identical values")
- if $self->{XsubAliasValues}->{$value};
+ # Check and see if this alias results in two aliases having the same
+ # value, we only check non-symbolic definitions as the whole point of
+ # symbolic definitions is to say we want to duplicate the value and
+ # it is NOT a mistake.
+ unless ($is_symbolic) {
+ my @keys= sort keys %{$self->{XsubAliasValues}->{$value}||{}};
+ # deal with an alias of 0, which might not be in the XsubAlias dataset
+ # yet as 0 is the default for the base function ($fname)
+ push @keys, $fname
+ if $value eq "0" and !defined $self->{XsubAlias}{$fname};
+ if (@keys and $self->{author_warnings}) {
+ # We do not warn about value collisions unless author_warnings
+ # are enabled. They aren't helpful to a module consumer, only
+ # the module author.
+ @keys= map { "'$_'" }
+ map { my $copy= $_;
+ $copy=~s/^$self->{Packprefix}//;
+ $copy
+ } @keys;
+ WarnHint( $self,
+ "Warning: Aliases '$orig_alias' and "
+ . join(", ", @keys)
+ . " have identical values of $value"
+ . ( $value eq "0"
+ ? " - the base function"
+ : "" ),
+ !$self->{XsubAliasValueClashHinted}++
+ ? "If this is deliberate use a symbolic alias instead."
+ : undef
+ );
+ }
+ }
$self->{XsubAliases}->{$alias} = $value;
- $self->{XsubAliasValues}->{$value} = $orig_alias;
+ $self->{XsubAliasValues}->{$value}{$alias}++;
}
blurt( $self, "Error: Cannot parse ALIAS definitions from '$orig'")
@@ -1342,10 +1458,7 @@ sub OVERLOAD_handler {
next unless /\S/;
trim_whitespace($_);
while ( s/^\s*([\w:"\\)\+\-\*\/\%\<\>\.\&\|\^\!\~\{\}\=]+)\s*//) {
- $self->{Overload} = 1 unless $self->{Overload};
- my $overload = "$self->{Package}\::(".$1;
- push(@{ $self->{InitFileCode} },
- " (void)$self->{newXS}(\"$overload\", XS_$self->{Full_func_name}$self->{file}$self->{proto});\n");
+ $self->{OverloadsThisXSUB}->{$1} = 1;
}
}
}
@@ -1368,7 +1481,7 @@ sub FALLBACK_handler {
# check for valid FALLBACK value
$self->death("Error: FALLBACK: TRUE/FALSE/UNDEF") unless exists $map{$setting};
- $self->{Fallback} = $map{$setting};
+ $self->{Fallback}->{$self->{Package}} = $map{$setting};
}
@@ -1779,11 +1892,17 @@ sub fetch_para {
$self->_process_module_xs_line($1, $2, $3);
}
+ # count how many #ifdef levels we see in this paragraph
+ # decrementing when we see an endif. if we see an elsif
+ # or endif without a corresponding #ifdef then we dont
+ # consider it part of this paragraph.
+ my $if_level = 0;
for (;;) {
$self->_maybe_skip_pod;
$self->_maybe_parse_typemap_block;
+ my $final;
if ($self->{lastline} !~ /^\s*#/ # not a CPP directive
# CPP directives:
# ANSI: if ifdef ifndef elif else endif define undef
@@ -1793,7 +1912,7 @@ sub fetch_para {
# others: ident (gcc notes that some cpps have this one)
|| $self->{lastline} =~ /^\#[ \t]*
(?:
- (?:if|ifn?def|elif|else|endif|
+ (?:if|ifn?def|elif|else|endif|elifn?def|
define|undef|pragma|error|
warning|line\s+\d+|ident)
\b
@@ -1804,6 +1923,31 @@ sub fetch_para {
)
{
last if $self->{lastline} =~ /^\S/ && @{ $self->{line} } && $self->{line}->[-1] eq "";
+ if ($self->{lastline}=~/^#[ \t]*(if|ifn?def|elif|else|endif|elifn?def)\b/) {
+ my $type = $1; # highest defined capture buffer, "if" for any if like condition
+ if ($type =~ /^if/) {
+ if (@{$self->{line}}) {
+ # increment level
+ $if_level++;
+ } else {
+ $final = 1;
+ }
+ } elsif ($type eq "endif") {
+ if ($if_level) { # are we in an if that was started in this paragraph?
+ $if_level--; # yep- so decrement to end this if block
+ } else {
+ $final = 1;
+ }
+ } elsif (!$if_level) {
+ # not in an #ifdef from this paragraph, thus
+ # this directive should not be part of this paragraph.
+ $final = 1;
+ }
+ }
+ if ($final and @{$self->{line}}) {
+ return 1;
+ }
+
push(@{ $self->{line} }, $self->{lastline});
push(@{ $self->{line_no} }, $self->{lastline_no});
}
@@ -1817,6 +1961,9 @@ sub fetch_para {
chomp $self->{lastline};
$self->{lastline} =~ s/^\s+$//;
+ if ($final) {
+ last;
+ }
}
# Nuke trailing "line" entries until there's one that's not empty
@@ -2022,8 +2169,9 @@ sub generate_output {
(my $ntype = $type) =~ s/\s*\*/Ptr/g;
$ntype =~ s/\(\)//g;
(my $subtype = $ntype) =~ s/(?:Array)?(?:Ptr)?$//;
+ $type =~ tr/:/_/ unless $self->{RetainCplusplusHierarchicalTypes};
- my $eval_vars = {%$argsref, subtype => $subtype, ntype => $ntype, arg => $arg};
+ my $eval_vars = {%$argsref, subtype => $subtype, ntype => $ntype, arg => $arg, type => $type };
my $expr = $outputmap->cleaned_code;
if ($expr =~ /DO_ARRAY_ELEM/) {
my $subtypemap = $typemaps->get_typemap(ctype => $subtype);
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS.pod b/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS.pod
index 80bf13fd071..093a3175fcd 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS.pod
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS.pod
@@ -19,6 +19,7 @@ ExtUtils::ParseXS - converts Perl XS code into C code
linenumbers => 1,
optimize => 1,
prototypes => 1,
+ die_on_error => 0,
);
# Legacy non-OO interface using a singleton:
@@ -119,6 +120,15 @@ Default is true.
I<Maintainer note:> I have no clue what this does. Strips function prefixes?
+=item B<die_on_error>
+
+Normally ExtUtils::ParseXS will terminate the program with an C<exit(1)> after
+printing the details of the exception to STDERR via (warn). This can be awkward
+when it is used programmatically and not via xsubpp, so this option can be used
+to cause it to die instead by providing a true value. When not provided this
+defaults to the value of C<$ExtUtils::ParseXS::DIE_ON_ERROR> which in turn
+defaults to false.
+
=back
=item $pxs->report_error_count()
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Constants.pm b/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Constants.pm
index d7668c4733d..012ba557cb0 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Constants.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Constants.pm
@@ -3,7 +3,7 @@ use strict;
use warnings;
use Symbol;
-our $VERSION = '3.43';
+our $VERSION = '3.51';
=head1 NAME
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/CountLines.pm b/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/CountLines.pm
index c592621e030..cca6e74c4a6 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/CountLines.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/CountLines.pm
@@ -1,7 +1,7 @@
package ExtUtils::ParseXS::CountLines;
use strict;
-our $VERSION = '3.43';
+our $VERSION = '3.51';
our $SECTION_END_MARKER;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Eval.pm b/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Eval.pm
index c509531d2f2..a7c3920e82e 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Eval.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Eval.pm
@@ -2,7 +2,7 @@ package ExtUtils::ParseXS::Eval;
use strict;
use warnings;
-our $VERSION = '3.43';
+our $VERSION = '3.51';
=head1 NAME
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Utilities.pm b/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Utilities.pm
index 6cc8a0e4085..b2674b36050 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Utilities.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/ParseXS/Utilities.pm
@@ -5,7 +5,7 @@ use Exporter;
use File::Spec;
use ExtUtils::ParseXS::Constants ();
-our $VERSION = '3.43';
+our $VERSION = '3.51';
our (@ISA, @EXPORT_OK);
@ISA = qw(Exporter);
@@ -21,6 +21,7 @@ our (@ISA, @EXPORT_OK);
analyze_preprocessor_statements
set_cond
Warn
+ WarnHint
current_line_number
blurt
death
@@ -654,18 +655,85 @@ sub current_line_number {
=item * Purpose
+Print warnings with line number details at the end.
+
=item * Arguments
+List of text to output.
+
=item * Return Value
+None.
+
=back
=cut
sub Warn {
+ my ($self)=shift;
+ $self->WarnHint(@_,undef);
+}
+
+=head2 C<WarnHint()>
+
+=over 4
+
+=item * Purpose
+
+Prints warning with line number details. The last argument is assumed
+to be a hint string.
+
+=item * Arguments
+
+List of strings to warn, followed by one argument representing a hint.
+If that argument is defined then it will be split on newlines and output
+line by line after the main warning.
+
+=item * Return Value
+
+None.
+
+=back
+
+=cut
+
+sub WarnHint {
+ warn _MsgHint(@_);
+}
+
+=head2 C<_MsgHint()>
+
+=over 4
+
+=item * Purpose
+
+Constructs an exception message with line number details. The last argument is
+assumed to be a hint string.
+
+=item * Arguments
+
+List of strings to warn, followed by one argument representing a hint.
+If that argument is defined then it will be split on newlines and concatenated
+line by line (parenthesized) after the main message.
+
+=item * Return Value
+
+The constructed string.
+
+=back
+
+=cut
+
+
+sub _MsgHint {
my $self = shift;
+ my $hint = pop;
my $warn_line_number = $self->current_line_number();
- print STDERR "@_ in $self->{filename}, line $warn_line_number\n";
+ my $ret = join("",@_) . " in $self->{filename}, line $warn_line_number\n";
+ if ($hint) {
+ $ret .= " ($_)\n" for split /\n/, $hint;
+ }
+ return $ret;
}
=head2 C<blurt()>
@@ -703,8 +771,13 @@ sub blurt {
=cut
sub death {
- my $self = shift;
- $self->Warn(@_);
+ my ($self) = (@_);
+ my $message = _MsgHint(@_,"");
+ if ($self->{die_on_error}) {
+ die $message;
+ } else {
+ warn $message;
+ }
exit 1;
}
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps.pm
index 62a2b1b606e..2a324a6459e 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps.pm
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps;
use 5.006001;
use strict;
use warnings;
-our $VERSION = '3.43';
+our $VERSION = '3.51';
require ExtUtils::ParseXS;
require ExtUtils::ParseXS::Constants;
@@ -378,7 +378,7 @@ sub remove_inputmap {
return $self->_remove($xstype, $self->{input_section}, $self->{input_lookup});
}
-=head2 remove_inputmap
+=head2 remove_outputmap
Removes an C<OUTPUT> entry from the typemap.
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/Cmd.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/Cmd.pm
index 5bddcc0569d..73f8b710caa 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/Cmd.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/Cmd.pm
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps::Cmd;
use 5.006001;
use strict;
use warnings;
-our $VERSION = '3.43';
+our $VERSION = '3.51';
use ExtUtils::Typemaps;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/InputMap.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/InputMap.pm
index fd2efc878d2..5b18021377f 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/InputMap.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/InputMap.pm
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps::InputMap;
use 5.006001;
use strict;
use warnings;
-our $VERSION = '3.43';
+our $VERSION = '3.51';
=head1 NAME
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/OutputMap.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/OutputMap.pm
index d4210c55767..d5aacdb7862 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/OutputMap.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/OutputMap.pm
@@ -2,7 +2,7 @@ package ExtUtils::Typemaps::OutputMap;
use 5.006001;
use strict;
use warnings;
-our $VERSION = '3.43';
+our $VERSION = '3.51';
=head1 NAME
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/Type.pm b/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/Type.pm
index 36d575339cd..9970281bfcd 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/Type.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/Typemaps/Type.pm
@@ -4,7 +4,7 @@ use strict;
use warnings;
require ExtUtils::Typemaps;
-our $VERSION = '3.43';
+our $VERSION = '3.51';
=head1 NAME
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/testlib.pm b/Master/tlpkg/tlperl/lib/ExtUtils/testlib.pm
index 5826a12736b..2de002827fa 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/testlib.pm
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/testlib.pm
@@ -3,7 +3,7 @@ package ExtUtils::testlib;
use strict;
use warnings;
-our $VERSION = '7.62';
+our $VERSION = '7.70';
$VERSION =~ tr/_//d;
use Cwd;
diff --git a/Master/tlpkg/tlperl/lib/ExtUtils/typemap b/Master/tlpkg/tlperl/lib/ExtUtils/typemap
index db700b75bf6..a07e83f9012 100644
--- a/Master/tlpkg/tlperl/lib/ExtUtils/typemap
+++ b/Master/tlpkg/tlperl/lib/ExtUtils/typemap
@@ -217,38 +217,54 @@ T_REF_IV_REF
IV tmp = SvIV((SV*)SvRV($arg));
$var = *INT2PTR($type *, tmp);
}
- else
- Perl_croak_nocontext(\"%s: %s is not of type %s\",
+ else {
+ const char* refstr = SvROK($arg) ? \"\" : SvOK($arg) ? \"scalar \" : \"undef\";
+ Perl_croak_nocontext(\"%s: Expected %s to be of type %s; got %s%\" SVf \" instead\",
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
- \"$var\", \"$ntype\")
+ \"$var\", \"$ntype\",
+ refstr, $arg
+ );
+ }
T_REF_IV_PTR
if (sv_isa($arg, \"${ntype}\")) {
IV tmp = SvIV((SV*)SvRV($arg));
$var = INT2PTR($type, tmp);
}
- else
- Perl_croak_nocontext(\"%s: %s is not of type %s\",
+ else {
+ const char* refstr = SvROK($arg) ? \"\" : SvOK($arg) ? \"scalar \" : \"undef\";
+ Perl_croak_nocontext(\"%s: Expected %s to be of type %s; got %s%\" SVf \" instead\",
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
- \"$var\", \"$ntype\")
+ \"$var\", \"$ntype\",
+ refstr, $arg
+ );
+ }
T_PTROBJ
if (SvROK($arg) && sv_derived_from($arg, \"${ntype}\")) {
IV tmp = SvIV((SV*)SvRV($arg));
$var = INT2PTR($type,tmp);
}
- else
- Perl_croak_nocontext(\"%s: %s is not of type %s\",
+ else {
+ const char* refstr = SvROK($arg) ? \"\" : SvOK($arg) ? \"scalar \" : \"undef\";
+ Perl_croak_nocontext(\"%s: Expected %s to be of type %s; got %s%\" SVf \" instead\",
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
- \"$var\", \"$ntype\")
+ \"$var\", \"$ntype\",
+ refstr, $arg
+ );
+ }
T_PTRDESC
if (sv_isa($arg, \"${ntype}\")) {
IV tmp = SvIV((SV*)SvRV($arg));
${type}_desc = (\U${type}_DESC\E*) tmp;
$var = ${type}_desc->ptr;
}
- else
- Perl_croak_nocontext(\"%s: %s is not of type %s\",
+ else {
+ const char* refstr = SvROK($arg) ? \"\" : SvOK($arg) ? \"scalar \" : \"undef\";
+ Perl_croak_nocontext(\"%s: Expected %s to be of type %s; got %s%\" SVf \" instead\",
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
- \"$var\", \"$ntype\")
+ \"$var\", \"$ntype\",
+ refstr, $arg
+ );
+ }
T_REFREF
if (SvROK($arg)) {
IV tmp = SvIV((SV*)SvRV($arg));
@@ -263,10 +279,14 @@ T_REFOBJ
IV tmp = SvIV((SV*)SvRV($arg));
$var = *INT2PTR($type,tmp);
}
- else
- Perl_croak_nocontext(\"%s: %s is not of type %s\",
+ else {
+ const char* refstr = SvROK($arg) ? \"\" : SvOK($arg) ? \"scalar \" : \"undef\";
+ Perl_croak_nocontext(\"%s: Expected %s to be of type %s; got %s%\" SVf \" instead\",
${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
- \"$var\", \"$ntype\")
+ \"$var\", \"$ntype\",
+ refstr, $arg
+ );
+ }
T_OPAQUE
$var = *($type *)SvPV_nolen($arg)
T_OPAQUEPTR
@@ -295,23 +315,23 @@ T_OUT
#############################################################################
OUTPUT
T_SV
- $arg = $var;
+ ${ "$var" eq "RETVAL" ? \"$arg = $var;" : \"sv_setsv_mg($arg, $var);" }
T_SVREF
$arg = newRV((SV*)$var);
T_SVREF_REFCOUNT_FIXED
- $arg = newRV_noinc((SV*)$var);
+ ${ "$var" eq "RETVAL" ? \"$arg = newRV_noinc((SV*)$var);" : \"sv_setrv_noinc($arg, (SV*)$var);" }
T_AVREF
$arg = newRV((SV*)$var);
T_AVREF_REFCOUNT_FIXED
- $arg = newRV_noinc((SV*)$var);
+ ${ "$var" eq "RETVAL" ? \"$arg = newRV_noinc((SV*)$var);" : \"sv_setrv_noinc($arg, (SV*)$var);" }
T_HVREF
$arg = newRV((SV*)$var);
T_HVREF_REFCOUNT_FIXED
- $arg = newRV_noinc((SV*)$var);
+ ${ "$var" eq "RETVAL" ? \"$arg = newRV_noinc((SV*)$var);" : \"sv_setrv_noinc($arg, (SV*)$var);" }
T_CVREF
$arg = newRV((SV*)$var);
T_CVREF_REFCOUNT_FIXED
- $arg = newRV_noinc((SV*)$var);
+ ${ "$var" eq "RETVAL" ? \"$arg = newRV_noinc((SV*)$var);" : \"sv_setrv_noinc($arg, (SV*)$var);" }
T_IV
sv_setiv($arg, (IV)$var);
T_UV
diff --git a/Master/tlpkg/tlperl/lib/Fatal.pm b/Master/tlpkg/tlperl/lib/Fatal.pm
index 744ca7228b8..debfc2d1af9 100644
--- a/Master/tlpkg/tlperl/lib/Fatal.pm
+++ b/Master/tlpkg/tlperl/lib/Fatal.pm
@@ -55,7 +55,7 @@ use constant ERROR_58_HINTS => q{Non-subroutine %s hints for %s are not supporte
use constant MIN_IPC_SYS_SIMPLE_VER => 0.12;
-our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg::Version
+our $VERSION = '2.36'; # VERSION: Generated by DZP::OurPkg::Version
our $Debug ||= 0;
@@ -170,6 +170,8 @@ my %TAGS = (
':2.32' => [qw(:default)],
':2.33' => [qw(:default)],
':2.34' => [qw(:default)],
+ ':2.35' => [qw(:default)],
+ ':2.36' => [qw(:default)],
);
@@ -1088,6 +1090,7 @@ sub _one_invocation {
my $code = qq[
no warnings qw(unopened uninitialized numeric);
no if \$\] >= 5.017011, warnings => "experimental::smartmatch";
+ no if \$warnings::Offsets{"deprecated::smartmatch"}, warnings => "deprecated";
if (wantarray) {
my \@results = $call(@argv);
diff --git a/Master/tlpkg/tlperl/lib/Fcntl.pm b/Master/tlpkg/tlperl/lib/Fcntl.pm
index d964b9d4ecb..57687e62889 100644
--- a/Master/tlpkg/tlperl/lib/Fcntl.pm
+++ b/Master/tlpkg/tlperl/lib/Fcntl.pm
@@ -56,17 +56,15 @@ See L<perlfunc/stat> about the S_I* constants.
=cut
use strict;
-our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-require Exporter;
+use Exporter 'import';
require XSLoader;
-@ISA = qw(Exporter);
-$VERSION = '1.14';
+our $VERSION = '1.15';
XSLoader::load();
# Named groups of exports
-%EXPORT_TAGS = (
+our %EXPORT_TAGS = (
'flock' => [qw(LOCK_SH LOCK_EX LOCK_NB LOCK_UN)],
'Fcompat' => [qw(FAPPEND FASYNC FCREAT FDEFER FDSYNC FEXCL FLARGEFILE
FNDELAY FNONBLOCK FRSYNC FSYNC FTRUNC)],
@@ -87,7 +85,7 @@ XSLoader::load();
# Items to export into callers namespace by default
# (move infrequently used names to @EXPORT_OK below)
-@EXPORT =
+our @EXPORT =
qw(
FD_CLOEXEC
F_ALLOCSP
@@ -160,7 +158,7 @@ XSLoader::load();
);
# Other items we are prepared to export if requested
-@EXPORT_OK = (qw(
+our @EXPORT_OK = (qw(
DN_ACCESS
DN_ATTRIB
DN_CREATE
diff --git a/Master/tlpkg/tlperl/lib/File/Basename.pm b/Master/tlpkg/tlperl/lib/File/Basename.pm
index 4b4fe95cfd7..c3c611fbbc2 100644
--- a/Master/tlpkg/tlperl/lib/File/Basename.pm
+++ b/Master/tlpkg/tlperl/lib/File/Basename.pm
@@ -6,11 +6,11 @@ File::Basename - Parse file paths into directory, filename and suffix.
use File::Basename;
- ($name,$path,$suffix) = fileparse($fullname,@suffixlist);
- $name = fileparse($fullname,@suffixlist);
+ my ($name, $path, $suffix) = fileparse($fullname, @suffixlist);
+ my $name = fileparse($fullname, @suffixlist);
- $basename = basename($fullname,@suffixlist);
- $dirname = dirname($fullname);
+ my $basename = basename($fullname, @suffixlist);
+ my $dirname = dirname($fullname);
=head1 DESCRIPTION
@@ -54,7 +54,7 @@ our(@ISA, @EXPORT, $VERSION, $Fileparse_fstype, $Fileparse_igncase);
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(fileparse fileparse_set_fstype basename dirname);
-$VERSION = "2.85";
+$VERSION = "2.86";
fileparse_set_fstype($^O);
diff --git a/Master/tlpkg/tlperl/lib/File/Compare.pm b/Master/tlpkg/tlperl/lib/File/Compare.pm
index 05e1c41d211..d6940d333b9 100644
--- a/Master/tlpkg/tlperl/lib/File/Compare.pm
+++ b/Master/tlpkg/tlperl/lib/File/Compare.pm
@@ -1,18 +1,14 @@
-package File::Compare;
+package File::Compare 1.1007;
-use 5.006;
-use strict;
+use v5.12;
use warnings;
-our($VERSION, @ISA, @EXPORT, @EXPORT_OK, $Too_Big);
-require Exporter;
+use Exporter 'import';
-$VERSION = '1.1006';
-@ISA = qw(Exporter);
-@EXPORT = qw(compare);
-@EXPORT_OK = qw(cmp compare_text);
+our @EXPORT = qw(compare);
+our @EXPORT_OK = qw(cmp compare_text);
-$Too_Big = 1024 * 1024 * 2;
+our $Too_Big = 1024 * 1024 * 2;
sub croak {
require Carp;
@@ -127,8 +123,7 @@ sub compare_text {
if @_ == 3 && ref($cmp) ne 'CODE';
# Using a negative buffer size puts compare into text_mode too
- $cmp = -1 unless defined $cmp;
- compare($from, $to, $cmp);
+ compare($from, $to, $cmp // -1);
}
1;
@@ -177,6 +172,3 @@ are equal, 1 if the files are unequal, or -1 if an error was encountered.
File::Compare was written by Nick Ing-Simmons.
Its original documentation was written by Chip Salzenberg.
-
-=cut
-
diff --git a/Master/tlpkg/tlperl/lib/File/Copy.pm b/Master/tlpkg/tlperl/lib/File/Copy.pm
index ac98cc2df02..1dc1d2d95c3 100644
--- a/Master/tlpkg/tlperl/lib/File/Copy.pm
+++ b/Master/tlpkg/tlperl/lib/File/Copy.pm
@@ -7,15 +7,14 @@
package File::Copy;
-use 5.006;
+use 5.035007;
use strict;
use warnings; no warnings 'newline';
+no warnings 'experimental::builtin';
+use builtin 'blessed';
+use overload;
use File::Spec;
use Config;
-# During perl build, we need File::Copy but Scalar::Util might not be built yet
-# And then we need these games to avoid loading overload, as that will
-# confuse miniperl during the bootstrap of perl.
-my $Scalar_Util_loaded = eval q{ require Scalar::Util; require overload; 1 };
# We want HiRes stat and utime if available
BEGIN { eval q{ use Time::HiRes qw( stat utime ) } };
our(@ISA, @EXPORT, @EXPORT_OK, $VERSION, $Too_Big, $Syscopy_is_copy);
@@ -24,7 +23,7 @@ sub syscopy;
sub cp;
sub mv;
-$VERSION = '2.35';
+$VERSION = '2.41';
require Exporter;
@ISA = qw(Exporter);
@@ -46,8 +45,8 @@ sub carp {
sub _catname {
my($from, $to) = @_;
if (not defined &basename) {
- require File::Basename;
- import File::Basename 'basename';
+ require File::Basename;
+ File::Basename->import( 'basename' );
}
return File::Spec->catfile($to, basename($from));
@@ -56,8 +55,7 @@ sub _catname {
# _eq($from, $to) tells whether $from and $to are identical
sub _eq {
my ($from, $to) = map {
- $Scalar_Util_loaded && Scalar::Util::blessed($_)
- && overload::Method($_, q{""})
+ blessed($_) && overload::Method($_, q{""})
? "$_"
: $_
} (@_);
@@ -104,7 +102,7 @@ sub copy {
my @fs = stat($from);
if (@fs) {
my @ts = stat($to);
- if (@ts && $fs[0] == $ts[0] && $fs[1] == $ts[1] && !-p $from) {
+ if (@ts && $fs[0] == $ts[0] && $fs[1] eq $ts[1] && !-p $from) {
carp("'$from' and '$to' are identical (not copied)");
return 0;
}
@@ -119,7 +117,6 @@ sub copy {
&& !$to_a_handle
&& !($from_a_handle && $^O eq 'os2' ) # OS/2 cannot handle handles
&& !($from_a_handle && $^O eq 'MSWin32')
- && !($from_a_handle && $^O eq 'NetWare')
)
{
if ($^O eq 'VMS' && -e $from
@@ -342,14 +339,14 @@ File::Copy - Copy files or filehandles
use File::Copy;
- copy("sourcefile","destinationfile") or die "Copy failed: $!";
- copy("Copy.pm",\*STDOUT);
- move("/dev1/sourcefile","/dev2/destinationfile");
+ copy("sourcefile", "destinationfile") or die "Copy failed: $!";
+ copy("Copy.pm", \*STDOUT);
+ move("/dev1/sourcefile", "/dev2/destinationfile");
use File::Copy "cp";
- $n = FileHandle->new("/a/file","r");
- cp($n,"x");
+ my $n = FileHandle->new("/a/file", "r");
+ cp($n, "x");
=head1 DESCRIPTION
@@ -398,9 +395,12 @@ You may use the syntax C<use File::Copy "cp"> to get at the C<cp>
alias for this function. The syntax is I<exactly> the same. The
behavior is nearly the same as well: as of version 2.15, C<cp> will
preserve the source file's permission bits like the shell utility
-C<cp(1)> would do, while C<copy> uses the default permissions for the
-target file (which may depend on the process' C<umask>, file
-ownership, inherited ACLs, etc.). If an error occurs in setting
+C<cp(1)> would do with default options, while C<copy> uses the default
+permissions for the target file (which may depend on the process'
+C<umask>, file ownership, inherited ACLs, etc.). That is, if the
+destination file already exists, C<cp> will leave its permissions
+unchanged; otherwise the permissions are taken from the source file
+and modified by the C<umask>. If an error occurs in setting
permissions, C<cp> will return 0, regardless of whether the file was
successfully copied.
diff --git a/Master/tlpkg/tlperl/lib/File/Fetch.pm b/Master/tlpkg/tlperl/lib/File/Fetch.pm
index 76c641d2e7b..157f308ade6 100644
--- a/Master/tlpkg/tlperl/lib/File/Fetch.pm
+++ b/Master/tlpkg/tlperl/lib/File/Fetch.pm
@@ -22,7 +22,7 @@ use vars qw[ $VERBOSE $PREFER_BIN $FROM_EMAIL $USER_AGENT
$FTP_PASSIVE $TIMEOUT $DEBUG $WARN $FORCEIPV4
];
-$VERSION = '1.00';
+$VERSION = '1.04';
$VERSION = eval $VERSION; # avoid warnings with development releases
$PREFER_BIN = 0; # XXX TODO implement
$FROM_EMAIL = 'File-Fetch@example.com';
@@ -359,7 +359,7 @@ sub _parse_uri {
$href->{scheme} = $1;
### See rfc 1738 section 3.10
- ### http://www.faqs.org/rfcs/rfc1738.html
+ ### https://datatracker.ietf.org/doc/html/rfc1738#section-3.10
### And wikipedia for more on windows file:// urls
### http://en.wikipedia.org/wiki/File://
if( $href->{scheme} eq 'file' ) {
@@ -906,7 +906,7 @@ sub _wget_fetch {
push(@$cmd, '--timeout=' . $TIMEOUT) if $TIMEOUT;
### run passive if specified ###
- push @$cmd, '--passive-ftp' if $FTP_PASSIVE;
+ push @$cmd, '--passive-ftp' if $self->scheme eq 'ftp' && $FTP_PASSIVE;
### set the output document, add the uri ###
push @$cmd, '--output-document', $to, $self->uri;
@@ -1315,7 +1315,7 @@ sub _fetch_fetch {
### use File::Copy for fetching file:// urls ###
###
-### See section 3.10 of RFC 1738 (http://www.faqs.org/rfcs/rfc1738.html)
+### See section 3.10 of RFC 1738 (https://datatracker.ietf.org/doc/html/rfc1738#section-3.10)
### Also see wikipedia on file:// (http://en.wikipedia.org/wiki/File://)
###
@@ -1698,7 +1698,7 @@ the C<URI::Escape> module from CPAN, and pre-encode your URI before
passing it to C<File::Fetch>. You can read about the details of URIs
and URI encoding here:
- http://www.faqs.org/rfcs/rfc2396.html
+L<https://datatracker.ietf.org/doc/html/rfc2396>
=head1 TODO
diff --git a/Master/tlpkg/tlperl/lib/File/Find.pm b/Master/tlpkg/tlperl/lib/File/Find.pm
index 5f5f1468e77..a41a6f5a566 100644
--- a/Master/tlpkg/tlperl/lib/File/Find.pm
+++ b/Master/tlpkg/tlperl/lib/File/Find.pm
@@ -3,11 +3,10 @@ use 5.006;
use strict;
use warnings;
use warnings::register;
-our $VERSION = '1.39';
-require Exporter;
+our $VERSION = '1.43';
+use Exporter 'import';
require Cwd;
-our @ISA = qw(Exporter);
our @EXPORT = qw(find finddepth);
@@ -44,25 +43,35 @@ sub contract_name {
return $abs_name;
}
+sub _is_absolute {
+ return $_[0] =~ m|^(?:[A-Za-z]:)?/| if $Is_Win32;
+ return substr($_[0], 0, 1) eq '/';
+}
+
+sub _is_root {
+ return $_[0] =~ m|^(?:[A-Za-z]:)?/\z| if $Is_Win32;
+ return $_[0] eq '/';
+}
+
sub PathCombine($$) {
my ($Base,$Name) = @_;
my $AbsName;
- if (substr($Name,0,1) eq '/') {
- $AbsName= $Name;
+ if (_is_absolute($Name)) {
+ $AbsName= $Name;
}
else {
- $AbsName= contract_name($Base,$Name);
+ $AbsName= contract_name($Base,$Name);
}
# (simple) check for recursion
my $newlen= length($AbsName);
if ($newlen <= length($Base)) {
- if (($newlen == length($Base) || substr($Base,$newlen,1) eq '/')
- && $AbsName eq substr($Base,0,$newlen))
- {
- return undef;
- }
+ if (($newlen == length($Base) || substr($Base,$newlen,1) eq '/')
+ && $AbsName eq substr($Base,0,$newlen))
+ {
+ return undef;
+ }
}
return $AbsName;
}
@@ -74,37 +83,40 @@ sub Follow_SymLink($) {
($DEV, $INO)= lstat $AbsName;
while (-l _) {
- if ($SLnkSeen{$DEV, $INO}++) {
- if ($follow_skip < 2) {
- die "$AbsName is encountered a second time";
- }
- else {
- return undef;
- }
- }
- $NewName= PathCombine($AbsName, readlink($AbsName));
- unless(defined $NewName) {
- if ($follow_skip < 2) {
- die "$AbsName is a recursive symbolic link";
- }
- else {
- return undef;
- }
- }
- else {
- $AbsName= $NewName;
- }
- ($DEV, $INO) = lstat($AbsName);
- return undef unless defined $DEV; # dangling symbolic link
+ if ($SLnkSeen{$DEV, $INO}++) {
+ if ($follow_skip < 2) {
+ die "$AbsName is encountered a second time";
+ }
+ else {
+ return undef;
+ }
+ }
+ my $Link = readlink($AbsName);
+ # canonicalize directory separators
+ $Link =~ s|\\|/|g if $Is_Win32;
+ $NewName= PathCombine($AbsName, $Link);
+ unless(defined $NewName) {
+ if ($follow_skip < 2) {
+ die "$AbsName is a recursive symbolic link";
+ }
+ else {
+ return undef;
+ }
+ }
+ else {
+ $AbsName= $NewName;
+ }
+ ($DEV, $INO) = lstat($AbsName);
+ return undef unless defined $DEV; # dangling symbolic link
}
if ($full_check && defined $DEV && $SLnkSeen{$DEV, $INO}++) {
- if ( ($follow_skip < 1) || ((-d _) && ($follow_skip < 2)) ) {
- die "$AbsName encountered a second time";
- }
- else {
- return undef;
- }
+ if ( ($follow_skip < 1) || ((-d _) && ($follow_skip < 2)) ) {
+ die "$AbsName encountered a second time";
+ }
+ else {
+ return undef;
+ }
}
return $AbsName;
@@ -124,6 +136,7 @@ sub is_tainted_pp {
return length($@) != 0;
}
+
sub _find_opt {
my $wanted = shift;
return unless @_;
@@ -134,25 +147,25 @@ sub _find_opt {
local %SLnkSeen;
local ($wanted_callback, $avoid_nlink, $bydepth, $no_chdir, $follow,
- $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat,
- $pre_process, $post_process, $dangling_symlinks);
+ $follow_skip, $full_check, $untaint, $untaint_skip, $untaint_pat,
+ $pre_process, $post_process, $dangling_symlinks);
local($dir, $name, $fullname, $prune);
local *_ = \my $a;
my $cwd = $wanted->{bydepth} ? Cwd::fastcwd() : Cwd::getcwd();
if ($Is_VMS) {
- # VMS returns this by default in VMS format which just doesn't
- # work for the rest of this module.
- $cwd = VMS::Filespec::unixpath($cwd);
-
- # Apparently this is not expected to have a trailing space.
- # To attempt to make VMS/UNIX conversions mostly reversible,
- # a trailing slash is needed. The run-time functions ignore the
- # resulting double slash, but it causes the perl tests to fail.
+ # VMS returns this by default in VMS format which just doesn't
+ # work for the rest of this module.
+ $cwd = VMS::Filespec::unixpath($cwd);
+
+ # Apparently this is not expected to have a trailing space.
+ # To attempt to make VMS/UNIX conversions mostly reversible,
+ # a trailing slash is needed. The run-time functions ignore the
+ # resulting double slash, but it causes the perl tests to fail.
$cwd =~ s#/\z##;
- # This comes up in upper case now, but should be lower.
- # In the future this could be exact case, no need to change.
+ # This comes up in upper case now, but should be lower.
+ # In the future this could be exact case, no need to change.
}
my $cwd_untainted = $cwd;
my $check_t_cwd = 1;
@@ -179,109 +192,107 @@ sub _find_opt {
Proc_Top_Item:
foreach my $TOP (@_) {
- my $top_item = $TOP;
- $top_item = VMS::Filespec::unixify($top_item) if $Is_VMS;
-
- ($topdev,$topino,$topmode,$topnlink) = $follow ? stat $top_item : lstat $top_item;
-
- if ($Is_Win32) {
- $top_item =~ s|[/\\]\z||
- unless $top_item =~ m{^(?:\w:)?[/\\]$};
- }
- else {
- $top_item =~ s|/\z|| unless $top_item eq '/';
- }
-
- $Is_Dir= 0;
-
- if ($follow) {
-
- if (substr($top_item,0,1) eq '/') {
- $abs_dir = $top_item;
- }
- elsif ($top_item eq $File::Find::current_dir) {
- $abs_dir = $cwd;
- }
- else { # care about any ../
- $top_item =~ s/\.dir\z//i if $Is_VMS;
- $abs_dir = contract_name("$cwd/",$top_item);
- }
- $abs_dir= Follow_SymLink($abs_dir);
- unless (defined $abs_dir) {
- if ($dangling_symlinks) {
- if (ref $dangling_symlinks eq 'CODE') {
- $dangling_symlinks->($top_item, $cwd);
- } else {
- warnings::warnif "$top_item is a dangling symbolic link\n";
- }
- }
- next Proc_Top_Item;
- }
-
- if (-d _) {
- $top_item =~ s/\.dir\z//i if $Is_VMS;
- _find_dir_symlnk($wanted, $abs_dir, $top_item);
- $Is_Dir= 1;
- }
- }
- else { # no follow
- $topdir = $top_item;
- unless (defined $topnlink) {
- warnings::warnif "Can't stat $top_item: $!\n";
- next Proc_Top_Item;
- }
- if (-d _) {
- $top_item =~ s/\.dir\z//i if $Is_VMS;
- _find_dir($wanted, $top_item, $topnlink);
- $Is_Dir= 1;
- }
- else {
- $abs_dir= $top_item;
- }
- }
-
- unless ($Is_Dir) {
- unless (($_,$dir) = File::Basename::fileparse($abs_dir)) {
- ($dir,$_) = ('./', $top_item);
- }
-
- $abs_dir = $dir;
- if (( $untaint ) && (is_tainted($dir) )) {
- ( $abs_dir ) = $dir =~ m|$untaint_pat|;
- unless (defined $abs_dir) {
- if ($untaint_skip == 0) {
- die "directory $dir is still tainted";
- }
- else {
- next Proc_Top_Item;
- }
- }
- }
-
- unless ($no_chdir || chdir $abs_dir) {
- warnings::warnif "Couldn't chdir $abs_dir: $!\n";
- next Proc_Top_Item;
- }
-
- $name = $abs_dir . $_; # $File::Find::name
- $_ = $name if $no_chdir;
-
- { $wanted_callback->() }; # protect against wild "next"
-
- }
-
- unless ( $no_chdir ) {
- if ( ($check_t_cwd) && (($untaint) && (is_tainted($cwd) )) ) {
- ( $cwd_untainted ) = $cwd =~ m|$untaint_pat|;
- unless (defined $cwd_untainted) {
- die "insecure cwd in find(depth)";
- }
- $check_t_cwd = 0;
- }
- unless (chdir $cwd_untainted) {
- die "Can't cd to $cwd: $!\n";
- }
- }
+ my $top_item = $TOP;
+ $top_item = VMS::Filespec::unixify($top_item) if $Is_VMS;
+
+ ($topdev,$topino,$topmode,$topnlink) = $follow ? stat $top_item : lstat $top_item;
+
+ # canonicalize directory separators
+ $top_item =~ s|[/\\]|/|g if $Is_Win32;
+
+ # no trailing / unless path is root
+ $top_item =~ s|/\z|| unless _is_root($top_item);
+
+ $Is_Dir= 0;
+
+ if ($follow) {
+
+ if (_is_absolute($top_item)) {
+ $abs_dir = $top_item;
+ }
+ elsif ($top_item eq $File::Find::current_dir) {
+ $abs_dir = $cwd;
+ }
+ else { # care about any ../
+ $top_item =~ s/\.dir\z//i if $Is_VMS;
+ $abs_dir = contract_name("$cwd/",$top_item);
+ }
+ $abs_dir= Follow_SymLink($abs_dir);
+ unless (defined $abs_dir) {
+ if ($dangling_symlinks) {
+ if (ref $dangling_symlinks eq 'CODE') {
+ $dangling_symlinks->($top_item, $cwd);
+ } else {
+ warnings::warnif "$top_item is a dangling symbolic link\n";
+ }
+ }
+ next Proc_Top_Item;
+ }
+
+ if (-d _) {
+ $top_item =~ s/\.dir\z//i if $Is_VMS;
+ _find_dir_symlnk($wanted, $abs_dir, $top_item);
+ $Is_Dir= 1;
+ }
+ }
+ else { # no follow
+ $topdir = $top_item;
+ unless (defined $topnlink) {
+ warnings::warnif "Can't stat $top_item: $!\n";
+ next Proc_Top_Item;
+ }
+ if (-d _) {
+ $top_item =~ s/\.dir\z//i if $Is_VMS;
+ _find_dir($wanted, $top_item, $topnlink);
+ $Is_Dir= 1;
+ }
+ else {
+ $abs_dir= $top_item;
+ }
+ }
+
+ unless ($Is_Dir) {
+ unless (($_,$dir) = File::Basename::fileparse($abs_dir)) {
+ ($dir,$_) = ('./', $top_item);
+ }
+
+ $abs_dir = $dir;
+ if (( $untaint ) && (is_tainted($dir) )) {
+ ( $abs_dir ) = $dir =~ m|$untaint_pat|;
+ unless (defined $abs_dir) {
+ if ($untaint_skip == 0) {
+ die "directory $dir is still tainted";
+ }
+ else {
+ next Proc_Top_Item;
+ }
+ }
+ }
+
+ unless ($no_chdir || chdir $abs_dir) {
+ warnings::warnif "Couldn't chdir $abs_dir: $!\n";
+ next Proc_Top_Item;
+ }
+
+ $name = $abs_dir . $_; # $File::Find::name
+ $_ = $name if $no_chdir;
+
+ { $wanted_callback->() }; # protect against wild "next"
+
+ }
+
+ unless ( $no_chdir ) {
+ if ( ($check_t_cwd) && (($untaint) && (is_tainted($cwd) )) ) {
+ ( $cwd_untainted ) = $cwd =~ m|$untaint_pat|;
+ unless (defined $cwd_untainted) {
+ die "insecure cwd in find(depth)";
+ }
+ $check_t_cwd = 0;
+ }
+ unless (chdir $cwd_untainted) {
+ die "Can't cd to $cwd: $!\n";
+ }
+ }
}
}
@@ -305,178 +316,170 @@ sub _find_dir($$$) {
my $tainted = 0;
my $no_nlink;
- if ($Is_Win32) {
- $dir_pref
- = ($p_dir =~ m{^(?:\w:[/\\]?|[/\\])$} ? $p_dir : "$p_dir/" );
- } elsif ($Is_VMS) {
-
- # VMS is returning trailing .dir on directories
- # and trailing . on files and symbolic links
- # in UNIX syntax.
- #
+ if ($Is_VMS) {
+ # VMS is returning trailing .dir on directories
+ # and trailing . on files and symbolic links
+ # in UNIX syntax.
+ #
- $p_dir =~ s/\.(dir)?$//i unless $p_dir eq '.';
+ $p_dir =~ s/\.(dir)?$//i unless $p_dir eq '.';
- $dir_pref = ($p_dir =~ m/[\]>]+$/ ? $p_dir : "$p_dir/" );
+ $dir_pref = ($p_dir =~ m/[\]>]+$/ ? $p_dir : "$p_dir/" );
}
else {
- $dir_pref= ( $p_dir eq '/' ? '/' : "$p_dir/" );
+ $dir_pref = _is_root($p_dir) ? $p_dir : "$p_dir/";
}
- local ($dir, $name, $prune, *DIR);
+ local ($dir, $name, $prune);
unless ( $no_chdir || ($p_dir eq $File::Find::current_dir)) {
- my $udir = $p_dir;
- if (( $untaint ) && (is_tainted($p_dir) )) {
- ( $udir ) = $p_dir =~ m|$untaint_pat|;
- unless (defined $udir) {
- if ($untaint_skip == 0) {
- die "directory $p_dir is still tainted";
- }
- else {
- return;
- }
- }
- }
- unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) {
- warnings::warnif "Can't cd to $udir: $!\n";
- return;
- }
+ my $udir = $p_dir;
+ if (( $untaint ) && (is_tainted($p_dir) )) {
+ ( $udir ) = $p_dir =~ m|$untaint_pat|;
+ unless (defined $udir) {
+ if ($untaint_skip == 0) {
+ die "directory $p_dir is still tainted";
+ }
+ else {
+ return;
+ }
+ }
+ }
+ unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) {
+ warnings::warnif "Can't cd to $udir: $!\n";
+ return;
+ }
}
# push the starting directory
push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth;
while (defined $SE) {
- unless ($bydepth) {
- $dir= $p_dir; # $File::Find::dir
- $name= $dir_name; # $File::Find::name
- $_= ($no_chdir ? $dir_name : $dir_rel ); # $_
- # prune may happen here
- $prune= 0;
- { $wanted_callback->() }; # protect against wild "next"
- next if $prune;
- }
-
- # change to that directory
- unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) {
- my $udir= $dir_rel;
- if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_rel) )) ) {
- ( $udir ) = $dir_rel =~ m|$untaint_pat|;
- unless (defined $udir) {
- if ($untaint_skip == 0) {
- die "directory (" . ($p_dir ne '/' ? $p_dir : '') . "/) $dir_rel is still tainted";
- } else { # $untaint_skip == 1
- next;
- }
- }
- }
- unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) {
- warnings::warnif "Can't cd to (" .
- ($p_dir ne '/' ? $p_dir : '') . "/) $udir: $!\n";
- next;
- }
- $CdLvl++;
- }
-
- $dir= $dir_name; # $File::Find::dir
-
- # Get the list of files in the current directory.
- unless (opendir DIR, ($no_chdir ? $dir_name : $File::Find::current_dir)) {
- warnings::warnif "Can't opendir($dir_name): $!\n";
- next;
- }
- @filenames = readdir DIR;
- closedir(DIR);
- @filenames = $pre_process->(@filenames) if $pre_process;
- push @Stack,[$CdLvl,$dir_name,"",-2] if $post_process;
-
- # default: use whatever was specified
+ unless ($bydepth) {
+ $dir= $p_dir; # $File::Find::dir
+ $name= $dir_name; # $File::Find::name
+ $_= ($no_chdir ? $dir_name : $dir_rel ); # $_
+ # prune may happen here
+ $prune= 0;
+ { $wanted_callback->() }; # protect against wild "next"
+ next if $prune;
+ }
+
+ # change to that directory
+ unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) {
+ my $udir= $dir_rel;
+ if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_rel) )) ) {
+ ( $udir ) = $dir_rel =~ m|$untaint_pat|;
+ unless (defined $udir) {
+ if ($untaint_skip == 0) {
+ die "directory (" . ($p_dir ne '/' ? $p_dir : '') . "/) $dir_rel is still tainted";
+ } else { # $untaint_skip == 1
+ next;
+ }
+ }
+ }
+ unless (chdir ($Is_VMS && $udir !~ /[\/\[<]+/ ? "./$udir" : $udir)) {
+ warnings::warnif "Can't cd to (" .
+ ($p_dir ne '/' ? $p_dir : '') . "/) $udir: $!\n";
+ next;
+ }
+ $CdLvl++;
+ }
+
+ $dir= $dir_name; # $File::Find::dir
+
+ # Get the list of files in the current directory.
+ my $dh;
+ unless (opendir $dh, ($no_chdir ? $dir_name : $File::Find::current_dir)) {
+ warnings::warnif "Can't opendir($dir_name): $!\n";
+ next;
+ }
+ @filenames = readdir $dh;
+ closedir($dh);
+ @filenames = $pre_process->(@filenames) if $pre_process;
+ push @Stack,[$CdLvl,$dir_name,"",-2] if $post_process;
+
+ # default: use whatever was specified
# (if $nlink >= 2, and $avoid_nlink == 0, this will switch back)
$no_nlink = $avoid_nlink;
# if dir has wrong nlink count, force switch to slower stat method
$no_nlink = 1 if ($nlink < 2);
- if ($nlink == 2 && !$no_nlink) {
- # This dir has no subdirectories.
- for my $FN (@filenames) {
- if ($Is_VMS) {
- # Big hammer here - Compensate for VMS trailing . and .dir
- # No win situation until this is changed, but this
- # will handle the majority of the cases with breaking the fewest
-
- $FN =~ s/\.dir\z//i;
- $FN =~ s#\.$## if ($FN ne '.');
- }
- next if $FN =~ $File::Find::skip_pattern;
-
- $name = $dir_pref . $FN; # $File::Find::name
- $_ = ($no_chdir ? $name : $FN); # $_
- { $wanted_callback->() }; # protect against wild "next"
- }
-
- }
- else {
- # This dir has subdirectories.
- $subcount = $nlink - 2;
-
- # HACK: insert directories at this position, so as to preserve
- # the user pre-processed ordering of files (thus ensuring
- # directory traversal is in user sorted order, not at random).
+ if ($nlink == 2 && !$no_nlink) {
+ # This dir has no subdirectories.
+ for my $FN (@filenames) {
+ if ($Is_VMS) {
+ # Big hammer here - Compensate for VMS trailing . and .dir
+ # No win situation until this is changed, but this
+ # will handle the majority of the cases with breaking the fewest
+
+ $FN =~ s/\.dir\z//i;
+ $FN =~ s#\.$## if ($FN ne '.');
+ }
+ next if $FN =~ $File::Find::skip_pattern;
+
+ $name = $dir_pref . $FN; # $File::Find::name
+ $_ = ($no_chdir ? $name : $FN); # $_
+ { $wanted_callback->() }; # protect against wild "next"
+ }
+
+ }
+ else {
+ # This dir has subdirectories.
+ $subcount = $nlink - 2;
+
+ # HACK: insert directories at this position, so as to preserve
+ # the user pre-processed ordering of files (thus ensuring
+ # directory traversal is in user sorted order, not at random).
my $stack_top = @Stack;
- for my $FN (@filenames) {
- next if $FN =~ $File::Find::skip_pattern;
- if ($subcount > 0 || $no_nlink) {
- # Seen all the subdirs?
- # check for directoriness.
- # stat is faster for a file in the current directory
- $sub_nlink = (lstat ($no_chdir ? $dir_pref . $FN : $FN))[3];
-
- if (-d _) {
- --$subcount;
- $FN =~ s/\.dir\z//i if $Is_VMS;
- # HACK: replace push to preserve dir traversal order
- #push @Stack,[$CdLvl,$dir_name,$FN,$sub_nlink];
- splice @Stack, $stack_top, 0,
- [$CdLvl,$dir_name,$FN,$sub_nlink];
- }
- else {
- $name = $dir_pref . $FN; # $File::Find::name
- $_= ($no_chdir ? $name : $FN); # $_
- { $wanted_callback->() }; # protect against wild "next"
- }
- }
- else {
- $name = $dir_pref . $FN; # $File::Find::name
- $_= ($no_chdir ? $name : $FN); # $_
- { $wanted_callback->() }; # protect against wild "next"
- }
- }
- }
+ for my $FN (@filenames) {
+ next if $FN =~ $File::Find::skip_pattern;
+ if ($subcount > 0 || $no_nlink) {
+ # Seen all the subdirs?
+ # check for directoriness.
+ # stat is faster for a file in the current directory
+ $sub_nlink = (lstat ($no_chdir ? $dir_pref . $FN : $FN))[3];
+
+ if (-d _) {
+ --$subcount;
+ $FN =~ s/\.dir\z//i if $Is_VMS;
+ # HACK: replace push to preserve dir traversal order
+ #push @Stack,[$CdLvl,$dir_name,$FN,$sub_nlink];
+ splice @Stack, $stack_top, 0,
+ [$CdLvl,$dir_name,$FN,$sub_nlink];
+ }
+ else {
+ $name = $dir_pref . $FN; # $File::Find::name
+ $_= ($no_chdir ? $name : $FN); # $_
+ { $wanted_callback->() }; # protect against wild "next"
+ }
+ }
+ else {
+ $name = $dir_pref . $FN; # $File::Find::name
+ $_= ($no_chdir ? $name : $FN); # $_
+ { $wanted_callback->() }; # protect against wild "next"
+ }
+ }
+ }
}
continue {
- while ( defined ($SE = pop @Stack) ) {
- ($Level, $p_dir, $dir_rel, $nlink) = @$SE;
- if ($CdLvl > $Level && !$no_chdir) {
- my $tmp;
- if ($Is_VMS) {
- $tmp = '[' . ('-' x ($CdLvl-$Level)) . ']';
- }
- else {
- $tmp = join('/',('..') x ($CdLvl-$Level));
- }
- die "Can't cd to $tmp from $dir_name: $!"
- unless chdir ($tmp);
- $CdLvl = $Level;
- }
-
- if ($Is_Win32) {
- $dir_name = ($p_dir =~ m{^(?:\w:[/\\]?|[/\\])$}
- ? "$p_dir$dir_rel" : "$p_dir/$dir_rel");
- $dir_pref = "$dir_name/";
- }
- elsif ($^O eq 'VMS') {
+ while ( defined ($SE = pop @Stack) ) {
+ ($Level, $p_dir, $dir_rel, $nlink) = @$SE;
+ if ($CdLvl > $Level && !$no_chdir) {
+ my $tmp;
+ if ($Is_VMS) {
+ $tmp = '[' . ('-' x ($CdLvl-$Level)) . ']';
+ }
+ else {
+ $tmp = join('/',('..') x ($CdLvl-$Level));
+ }
+ die "Can't cd to $tmp from $dir_name: $!"
+ unless chdir ($tmp);
+ $CdLvl = $Level;
+ }
+
+ if ($^O eq 'VMS') {
if ($p_dir =~ m/[\]>]+$/) {
$dir_name = $p_dir;
$dir_name =~ s/([\]>]+)$/.$dir_rel$1/;
@@ -486,34 +489,34 @@ sub _find_dir($$$) {
$dir_name = "$p_dir/$dir_rel";
$dir_pref = "$dir_name/";
}
- }
- else {
- $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel");
- $dir_pref = "$dir_name/";
- }
-
- if ( $nlink == -2 ) {
- $name = $dir = $p_dir; # $File::Find::name / dir
+ }
+ else {
+ $dir_name = _is_root($p_dir) ? "$p_dir$dir_rel" : "$p_dir/$dir_rel";
+ $dir_pref = "$dir_name/";
+ }
+
+ if ( $nlink == -2 ) {
+ $name = $dir = $p_dir; # $File::Find::name / dir
$_ = $File::Find::current_dir;
- $post_process->(); # End-of-directory processing
- }
- elsif ( $nlink < 0 ) { # must be finddepth, report dirname now
- $name = $dir_name;
- if ( substr($name,-2) eq '/.' ) {
- substr($name, length($name) == 2 ? -1 : -2) = '';
- }
- $dir = $p_dir;
- $_ = ($no_chdir ? $dir_name : $dir_rel );
- if ( substr($_,-2) eq '/.' ) {
- substr($_, length($_) == 2 ? -1 : -2) = '';
- }
- { $wanted_callback->() }; # protect against wild "next"
- }
- else {
- push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth;
- last;
- }
- }
+ $post_process->(); # End-of-directory processing
+ }
+ elsif ( $nlink < 0 ) { # must be finddepth, report dirname now
+ $name = $dir_name;
+ if ( substr($name,-2) eq '/.' ) {
+ substr($name, length($name) == 2 ? -1 : -2) = '';
+ }
+ $dir = $p_dir;
+ $_ = ($no_chdir ? $dir_name : $dir_rel );
+ if ( substr($_,-2) eq '/.' ) {
+ substr($_, length($_) == 2 ? -1 : -2) = '';
+ }
+ { $wanted_callback->() }; # protect against wild "next"
+ }
+ else {
+ push @Stack,[$CdLvl,$p_dir,$dir_rel,-1] if $bydepth;
+ last;
+ }
+ }
}
}
@@ -540,171 +543,172 @@ sub _find_dir_symlnk($$$) {
my $tainted = 0;
my $ok = 1;
- $dir_pref = ( $p_dir eq '/' ? '/' : "$p_dir/" );
- $loc_pref = ( $dir_loc eq '/' ? '/' : "$dir_loc/" );
+ $dir_pref = _is_root($p_dir) ? $p_dir : "$p_dir/";
+ $loc_pref = _is_root($dir_loc) ? $dir_loc : "$dir_loc/";
- local ($dir, $name, $fullname, $prune, *DIR);
+ local ($dir, $name, $fullname, $prune);
unless ($no_chdir) {
- # untaint the topdir
- if (( $untaint ) && (is_tainted($dir_loc) )) {
- ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; # parent dir, now untainted
- # once untainted, $updir_loc is pushed on the stack (as parent directory);
- # hence, we don't need to untaint the parent directory every time we chdir
- # to it later
- unless (defined $updir_loc) {
- if ($untaint_skip == 0) {
- die "directory $dir_loc is still tainted";
- }
- else {
- return;
- }
- }
- }
- $ok = chdir($updir_loc) unless ($p_dir eq $File::Find::current_dir);
- unless ($ok) {
- warnings::warnif "Can't cd to $updir_loc: $!\n";
- return;
- }
+ # untaint the topdir
+ if (( $untaint ) && (is_tainted($dir_loc) )) {
+ ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|; # parent dir, now untainted
+ # once untainted, $updir_loc is pushed on the stack (as parent directory);
+ # hence, we don't need to untaint the parent directory every time we chdir
+ # to it later
+ unless (defined $updir_loc) {
+ if ($untaint_skip == 0) {
+ die "directory $dir_loc is still tainted";
+ }
+ else {
+ return;
+ }
+ }
+ }
+ $ok = chdir($updir_loc) unless ($p_dir eq $File::Find::current_dir);
+ unless ($ok) {
+ warnings::warnif "Can't cd to $updir_loc: $!\n";
+ return;
+ }
}
push @Stack,[$dir_loc,$updir_loc,$p_dir,$dir_rel,-1] if $bydepth;
while (defined $SE) {
- unless ($bydepth) {
- # change (back) to parent directory (always untainted)
- unless ($no_chdir) {
- unless (chdir $updir_loc) {
- warnings::warnif "Can't cd to $updir_loc: $!\n";
- next;
- }
- }
- $dir= $p_dir; # $File::Find::dir
- $name= $dir_name; # $File::Find::name
- $_= ($no_chdir ? $dir_name : $dir_rel ); # $_
- $fullname= $dir_loc; # $File::Find::fullname
- # prune may happen here
- $prune= 0;
- lstat($_); # make sure file tests with '_' work
- { $wanted_callback->() }; # protect against wild "next"
- next if $prune;
- }
-
- # change to that directory
- unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) {
- $updir_loc = $dir_loc;
- if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_loc) )) ) {
- # untaint $dir_loc, what will be pushed on the stack as (untainted) parent dir
- ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|;
- unless (defined $updir_loc) {
- if ($untaint_skip == 0) {
- die "directory $dir_loc is still tainted";
- }
- else {
- next;
- }
- }
- }
- unless (chdir $updir_loc) {
- warnings::warnif "Can't cd to $updir_loc: $!\n";
- next;
- }
- }
-
- $dir = $dir_name; # $File::Find::dir
-
- # Get the list of files in the current directory.
- unless (opendir DIR, ($no_chdir ? $dir_loc : $File::Find::current_dir)) {
- warnings::warnif "Can't opendir($dir_loc): $!\n";
- next;
- }
- @filenames = readdir DIR;
- closedir(DIR);
-
- for my $FN (@filenames) {
- if ($Is_VMS) {
- # Big hammer here - Compensate for VMS trailing . and .dir
- # No win situation until this is changed, but this
- # will handle the majority of the cases with breaking the fewest.
-
- $FN =~ s/\.dir\z//i;
- $FN =~ s#\.$## if ($FN ne '.');
- }
- next if $FN =~ $File::Find::skip_pattern;
-
- # follow symbolic links / do an lstat
- $new_loc = Follow_SymLink($loc_pref.$FN);
-
- # ignore if invalid symlink
- unless (defined $new_loc) {
- if (!defined -l _ && $dangling_symlinks) {
+ unless ($bydepth) {
+ # change (back) to parent directory (always untainted)
+ unless ($no_chdir) {
+ unless (chdir $updir_loc) {
+ warnings::warnif "Can't cd to $updir_loc: $!\n";
+ next;
+ }
+ }
+ $dir= $p_dir; # $File::Find::dir
+ $name= $dir_name; # $File::Find::name
+ $_= ($no_chdir ? $dir_name : $dir_rel ); # $_
+ $fullname= $dir_loc; # $File::Find::fullname
+ # prune may happen here
+ $prune= 0;
+ lstat($_); # make sure file tests with '_' work
+ { $wanted_callback->() }; # protect against wild "next"
+ next if $prune;
+ }
+
+ # change to that directory
+ unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) {
+ $updir_loc = $dir_loc;
+ if ( ($untaint) && (($tainted) || ($tainted = is_tainted($dir_loc) )) ) {
+ # untaint $dir_loc, what will be pushed on the stack as (untainted) parent dir
+ ( $updir_loc ) = $dir_loc =~ m|$untaint_pat|;
+ unless (defined $updir_loc) {
+ if ($untaint_skip == 0) {
+ die "directory $dir_loc is still tainted";
+ }
+ else {
+ next;
+ }
+ }
+ }
+ unless (chdir $updir_loc) {
+ warnings::warnif "Can't cd to $updir_loc: $!\n";
+ next;
+ }
+ }
+
+ $dir = $dir_name; # $File::Find::dir
+
+ # Get the list of files in the current directory.
+ my $dh;
+ unless (opendir $dh, ($no_chdir ? $dir_loc : $File::Find::current_dir)) {
+ warnings::warnif "Can't opendir($dir_loc): $!\n";
+ next;
+ }
+ @filenames = readdir $dh;
+ closedir($dh);
+
+ for my $FN (@filenames) {
+ if ($Is_VMS) {
+ # Big hammer here - Compensate for VMS trailing . and .dir
+ # No win situation until this is changed, but this
+ # will handle the majority of the cases with breaking the fewest.
+
+ $FN =~ s/\.dir\z//i;
+ $FN =~ s#\.$## if ($FN ne '.');
+ }
+ next if $FN =~ $File::Find::skip_pattern;
+
+ # follow symbolic links / do an lstat
+ $new_loc = Follow_SymLink($loc_pref.$FN);
+
+ # ignore if invalid symlink
+ unless (defined $new_loc) {
+ if (!defined -l _ && $dangling_symlinks) {
$fullname = undef;
- if (ref $dangling_symlinks eq 'CODE') {
- $dangling_symlinks->($FN, $dir_pref);
- } else {
- warnings::warnif "$dir_pref$FN is a dangling symbolic link\n";
- }
- }
+ if (ref $dangling_symlinks eq 'CODE') {
+ $dangling_symlinks->($FN, $dir_pref);
+ } else {
+ warnings::warnif "$dir_pref$FN is a dangling symbolic link\n";
+ }
+ }
else {
$fullname = $loc_pref . $FN;
}
- $name = $dir_pref . $FN;
- $_ = ($no_chdir ? $name : $FN);
- { $wanted_callback->() };
- next;
- }
-
- if (-d _) {
- if ($Is_VMS) {
- $FN =~ s/\.dir\z//i;
- $FN =~ s#\.$## if ($FN ne '.');
- $new_loc =~ s/\.dir\z//i;
- $new_loc =~ s#\.$## if ($new_loc ne '.');
- }
- push @Stack,[$new_loc,$updir_loc,$dir_name,$FN,1];
- }
- else {
- $fullname = $new_loc; # $File::Find::fullname
- $name = $dir_pref . $FN; # $File::Find::name
- $_ = ($no_chdir ? $name : $FN); # $_
- { $wanted_callback->() }; # protect against wild "next"
- }
- }
+ $name = $dir_pref . $FN;
+ $_ = ($no_chdir ? $name : $FN);
+ { $wanted_callback->() };
+ next;
+ }
+
+ if (-d _) {
+ if ($Is_VMS) {
+ $FN =~ s/\.dir\z//i;
+ $FN =~ s#\.$## if ($FN ne '.');
+ $new_loc =~ s/\.dir\z//i;
+ $new_loc =~ s#\.$## if ($new_loc ne '.');
+ }
+ push @Stack,[$new_loc,$updir_loc,$dir_name,$FN,1];
+ }
+ else {
+ $fullname = $new_loc; # $File::Find::fullname
+ $name = $dir_pref . $FN; # $File::Find::name
+ $_ = ($no_chdir ? $name : $FN); # $_
+ { $wanted_callback->() }; # protect against wild "next"
+ }
+ }
}
continue {
- while (defined($SE = pop @Stack)) {
- ($dir_loc, $updir_loc, $p_dir, $dir_rel, $byd_flag) = @$SE;
- $dir_name = ($p_dir eq '/' ? "/$dir_rel" : "$p_dir/$dir_rel");
- $dir_pref = "$dir_name/";
- $loc_pref = "$dir_loc/";
- if ( $byd_flag < 0 ) { # must be finddepth, report dirname now
- unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) {
- unless (chdir $updir_loc) { # $updir_loc (parent dir) is always untainted
- warnings::warnif "Can't cd to $updir_loc: $!\n";
- next;
- }
- }
- $fullname = $dir_loc; # $File::Find::fullname
- $name = $dir_name; # $File::Find::name
- if ( substr($name,-2) eq '/.' ) {
- substr($name, length($name) == 2 ? -1 : -2) = ''; # $File::Find::name
- }
- $dir = $p_dir; # $File::Find::dir
- $_ = ($no_chdir ? $dir_name : $dir_rel); # $_
- if ( substr($_,-2) eq '/.' ) {
- substr($_, length($_) == 2 ? -1 : -2) = '';
- }
-
- lstat($_); # make sure file tests with '_' work
- { $wanted_callback->() }; # protect against wild "next"
- }
- else {
- push @Stack,[$dir_loc, $updir_loc, $p_dir, $dir_rel,-1] if $bydepth;
- last;
- }
- }
+ while (defined($SE = pop @Stack)) {
+ ($dir_loc, $updir_loc, $p_dir, $dir_rel, $byd_flag) = @$SE;
+ $dir_name = _is_root($p_dir) ? "$p_dir$dir_rel" : "$p_dir/$dir_rel";
+ $dir_pref = "$dir_name/";
+ $loc_pref = "$dir_loc/";
+ if ( $byd_flag < 0 ) { # must be finddepth, report dirname now
+ unless ($no_chdir || ($dir_rel eq $File::Find::current_dir)) {
+ unless (chdir $updir_loc) { # $updir_loc (parent dir) is always untainted
+ warnings::warnif "Can't cd to $updir_loc: $!\n";
+ next;
+ }
+ }
+ $fullname = $dir_loc; # $File::Find::fullname
+ $name = $dir_name; # $File::Find::name
+ if ( substr($name,-2) eq '/.' ) {
+ substr($name, length($name) == 2 ? -1 : -2) = ''; # $File::Find::name
+ }
+ $dir = $p_dir; # $File::Find::dir
+ $_ = ($no_chdir ? $dir_name : $dir_rel); # $_
+ if ( substr($_,-2) eq '/.' ) {
+ substr($_, length($_) == 2 ? -1 : -2) = '';
+ }
+
+ lstat($_); # make sure file tests with '_' work
+ { $wanted_callback->() }; # protect against wild "next"
+ }
+ else {
+ push @Stack,[$dir_loc, $updir_loc, $p_dir, $dir_rel,-1] if $bydepth;
+ last;
+ }
+ }
}
}
@@ -912,8 +916,6 @@ a dangling symbolic link, then fullname will be set to C<undef>.
=back
-This is a no-op on Win32.
-
=item C<follow_fast>
This is similar to I<follow> except that it may report some files more
@@ -922,8 +924,6 @@ have to be hashed, this is much cheaper both in space and time. If
processing a file more than once (by the user's C<wanted()> function)
is worse than just taking time, the option I<follow> should be used.
-This is also a no-op on Win32.
-
=item C<follow_skip>
C<follow_skip==1>, which is the default, causes all files which are
diff --git a/Master/tlpkg/tlperl/lib/File/Glob.pm b/Master/tlpkg/tlperl/lib/File/Glob.pm
index b7e71abcd3f..f7b89f490a4 100644
--- a/Master/tlpkg/tlperl/lib/File/Glob.pm
+++ b/Master/tlpkg/tlperl/lib/File/Glob.pm
@@ -1,16 +1,14 @@
package File::Glob;
use strict;
-our($VERSION, @ISA, @EXPORT_OK, @EXPORT_FAIL, %EXPORT_TAGS, $DEFAULT_FLAGS);
+our($DEFAULT_FLAGS);
require XSLoader;
-@ISA = qw(Exporter);
-
# NOTE: The glob() export is only here for compatibility with 5.6.0.
# csh_glob() should not be used directly, unless you know what you're doing.
-%EXPORT_TAGS = (
+our %EXPORT_TAGS = (
'glob' => [ qw(
GLOB_ABEND
GLOB_ALPHASORT
@@ -33,9 +31,9 @@ require XSLoader;
);
$EXPORT_TAGS{bsd_glob} = [@{$EXPORT_TAGS{glob}}];
-@EXPORT_OK = (@{$EXPORT_TAGS{'glob'}}, 'csh_glob');
+our @EXPORT_OK = (@{$EXPORT_TAGS{'glob'}}, 'csh_glob');
-$VERSION = '1.33';
+our $VERSION = '1.40';
sub import {
require Exporter;
@@ -66,7 +64,7 @@ sub import {
XSLoader::load();
$DEFAULT_FLAGS = GLOB_CSH();
-if ($^O =~ /^(?:MSWin32|VMS|os2|dos|riscos)$/) {
+if ($^O =~ /^(?:MSWin32|VMS|os2|riscos)$/) {
$DEFAULT_FLAGS |= GLOB_NOCASE();
}
diff --git a/Master/tlpkg/tlperl/lib/File/Spec.pm b/Master/tlpkg/tlperl/lib/File/Spec.pm
index 30d883b61b3..fc10c0f2447 100644
--- a/Master/tlpkg/tlperl/lib/File/Spec.pm
+++ b/Master/tlpkg/tlperl/lib/File/Spec.pm
@@ -2,7 +2,7 @@ package File::Spec;
use strict;
-our $VERSION = '3.80';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
my %module = (
@@ -33,13 +33,13 @@ File::Spec - portably perform operations on file names
use File::Spec;
- $x=File::Spec->catfile('a', 'b', 'c');
+ my $x = File::Spec->catfile('a', 'b', 'c');
which returns 'a/b/c' under Unix. Or:
use File::Spec::Functions;
- $x = catfile('a', 'b', 'c');
+ my $x = catfile('a', 'b', 'c');
=head1 DESCRIPTION
@@ -316,7 +316,7 @@ L<ExtUtils::MakeMaker>
=head1 AUTHOR
-Currently maintained by Ken Williams C<< <KWILLIAMS@cpan.org> >>.
+Maintained by perl5-porters <F<perl5-porters@perl.org>>.
The vast majority of the code was written by
Kenneth Albanowski C<< <kjahds@kjahds.com> >>,
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/AmigaOS.pm b/Master/tlpkg/tlperl/lib/File/Spec/AmigaOS.pm
index fd9da81cdf5..3fc3c989961 100644
--- a/Master/tlpkg/tlperl/lib/File/Spec/AmigaOS.pm
+++ b/Master/tlpkg/tlperl/lib/File/Spec/AmigaOS.pm
@@ -3,7 +3,7 @@ package File::Spec::AmigaOS;
use strict;
require File::Spec::Unix;
-our $VERSION = '3.80';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/Cygwin.pm b/Master/tlpkg/tlperl/lib/File/Spec/Cygwin.pm
index 953c23361a1..fb3eaaac3ee 100644
--- a/Master/tlpkg/tlperl/lib/File/Spec/Cygwin.pm
+++ b/Master/tlpkg/tlperl/lib/File/Spec/Cygwin.pm
@@ -3,7 +3,7 @@ package File::Spec::Cygwin;
use strict;
require File::Spec::Unix;
-our $VERSION = '3.80';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/Epoc.pm b/Master/tlpkg/tlperl/lib/File/Spec/Epoc.pm
index fcb9e894e33..9391f3a05a3 100644
--- a/Master/tlpkg/tlperl/lib/File/Spec/Epoc.pm
+++ b/Master/tlpkg/tlperl/lib/File/Spec/Epoc.pm
@@ -2,7 +2,7 @@ package File::Spec::Epoc;
use strict;
-our $VERSION = '3.80';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
require File::Spec::Unix;
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/Functions.pm b/Master/tlpkg/tlperl/lib/File/Spec/Functions.pm
index e14ad2f7453..a0d864182ae 100644
--- a/Master/tlpkg/tlperl/lib/File/Spec/Functions.pm
+++ b/Master/tlpkg/tlperl/lib/File/Spec/Functions.pm
@@ -3,7 +3,7 @@ package File::Spec::Functions;
use File::Spec;
use strict;
-our $VERSION = '3.80';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
require Exporter;
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/Mac.pm b/Master/tlpkg/tlperl/lib/File/Spec/Mac.pm
index 8026edcb126..5f5cca9cd7d 100644
--- a/Master/tlpkg/tlperl/lib/File/Spec/Mac.pm
+++ b/Master/tlpkg/tlperl/lib/File/Spec/Mac.pm
@@ -4,7 +4,7 @@ use strict;
use Cwd ();
require File::Spec::Unix;
-our $VERSION = '3.80';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/OS2.pm b/Master/tlpkg/tlperl/lib/File/Spec/OS2.pm
index 3c35ba99b48..eea5328124d 100644
--- a/Master/tlpkg/tlperl/lib/File/Spec/OS2.pm
+++ b/Master/tlpkg/tlperl/lib/File/Spec/OS2.pm
@@ -4,7 +4,7 @@ use strict;
use Cwd ();
require File::Spec::Unix;
-our $VERSION = '3.80';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/Unix.pm b/Master/tlpkg/tlperl/lib/File/Spec/Unix.pm
index c06d18f4681..2d5af108273 100644
--- a/Master/tlpkg/tlperl/lib/File/Spec/Unix.pm
+++ b/Master/tlpkg/tlperl/lib/File/Spec/Unix.pm
@@ -3,7 +3,7 @@ package File::Spec::Unix;
use strict;
use Cwd ();
-our $VERSION = '3.80';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
=head1 NAME
@@ -530,7 +530,7 @@ Copyright (c) 2004 by the Perl 5 Porters. All rights reserved.
This program is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
-Please submit bug reports and patches to perlbug@perl.org.
+Please submit bug reports at L<https://github.com/Perl/perl5/issues>.
=head1 SEE ALSO
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/VMS.pm b/Master/tlpkg/tlperl/lib/File/Spec/VMS.pm
index 9b78c8b4bc6..e5d5a38f208 100644
--- a/Master/tlpkg/tlperl/lib/File/Spec/VMS.pm
+++ b/Master/tlpkg/tlperl/lib/File/Spec/VMS.pm
@@ -4,7 +4,7 @@ use strict;
use Cwd ();
require File::Spec::Unix;
-our $VERSION = '3.80';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/Master/tlpkg/tlperl/lib/File/Spec/Win32.pm b/Master/tlpkg/tlperl/lib/File/Spec/Win32.pm
index 15374420233..292c2f8d1a0 100644
--- a/Master/tlpkg/tlperl/lib/File/Spec/Win32.pm
+++ b/Master/tlpkg/tlperl/lib/File/Spec/Win32.pm
@@ -5,7 +5,7 @@ use strict;
use Cwd ();
require File::Spec::Unix;
-our $VERSION = '3.80';
+our $VERSION = '3.88';
$VERSION =~ tr/_//d;
our @ISA = qw(File::Spec::Unix);
diff --git a/Master/tlpkg/tlperl/lib/File/stat.pm b/Master/tlpkg/tlperl/lib/File/stat.pm
index 863092c93dc..373afd22cb6 100644
--- a/Master/tlpkg/tlperl/lib/File/stat.pm
+++ b/Master/tlpkg/tlperl/lib/File/stat.pm
@@ -11,7 +11,7 @@ BEGIN { *warnif = \&warnings::warnif }
our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
-our $VERSION = '1.09';
+our $VERSION = '1.13';
our @fields;
our ( $st_dev, $st_ino, $st_mode,
@@ -83,7 +83,7 @@ sub _ingroup {
# component (at which point we might as well just call Perl_cando and
# have done with it).
-if (grep $^O eq $_, qw/os2 MSWin32 dos/) {
+if (grep $^O eq $_, qw/os2 MSWin32/) {
# from doio.c
*cando = sub { ($_[0][2] & $_[1]) ? 1 : "" };
@@ -233,8 +233,8 @@ File::stat - by-name interface to Perl's built-in stat() functions
=head1 SYNOPSIS
use File::stat;
- $st = stat($file) or die "No $file: $!";
- if ( ($st->mode & 0111) && $st->nlink > 1) ) {
+ my $st = stat($file) or die "No $file: $!";
+ if ( ($st->mode & 0111) && ($st->nlink > 1) ) {
print "$file is executable with lotsa links\n";
}
diff --git a/Master/tlpkg/tlperl/lib/FileHandle.pm b/Master/tlpkg/tlperl/lib/FileHandle.pm
index 133221bb6b5..a4ae1e437c6 100644
--- a/Master/tlpkg/tlperl/lib/FileHandle.pm
+++ b/Master/tlpkg/tlperl/lib/FileHandle.pm
@@ -4,7 +4,7 @@ use 5.006;
use strict;
our($VERSION, @ISA, @EXPORT, @EXPORT_OK);
-$VERSION = "2.03";
+$VERSION = "2.05";
require IO::File;
@ISA = qw(IO::File);
@@ -111,36 +111,36 @@ FileHandle - supply object methods for filehandles
use FileHandle;
- $fh = FileHandle->new;
+ my $fh = FileHandle->new;
if ($fh->open("< file")) {
print <$fh>;
$fh->close;
}
- $fh = FileHandle->new("> FOO");
+ my $fh = FileHandle->new("> FOO");
if (defined $fh) {
print $fh "bar\n";
$fh->close;
}
- $fh = FileHandle->new("file", "r");
+ my $fh = FileHandle->new("file", "r");
if (defined $fh) {
print <$fh>;
undef $fh; # automatically closes the file
}
- $fh = FileHandle->new("file", O_WRONLY|O_APPEND);
+ my $fh = FileHandle->new("file", O_WRONLY|O_APPEND);
if (defined $fh) {
print $fh "corge\n";
undef $fh; # automatically closes the file
}
- $pos = $fh->getpos;
+ my $pos = $fh->getpos;
$fh->setpos($pos);
- $fh->setvbuf($buffer_var, _IOLBF, 1024);
+ $fh->setvbuf(my $buffer_var, _IOLBF, 1024);
- ($readfh, $writefh) = FileHandle::pipe;
+ my ($readfh, $writefh) = FileHandle::pipe;
autoflush STDOUT 1;
@@ -149,7 +149,7 @@ FileHandle - supply object methods for filehandles
NOTE: This class is now a front-end to the IO::* classes.
C<FileHandle::new> creates a C<FileHandle>, which is a reference to a
-newly created symbol (see the C<Symbol> package). If it receives any
+newly created symbol (see the L<Symbol> package). If it receives any
parameters, they are passed to C<FileHandle::open>; if the open fails,
the C<FileHandle> object is destroyed. Otherwise, it is returned to
the caller.
diff --git a/Master/tlpkg/tlperl/lib/Filter/Util/Call.pm b/Master/tlpkg/tlperl/lib/Filter/Util/Call.pm
index 0805ae73350..8652a40988b 100644
--- a/Master/tlpkg/tlperl/lib/Filter/Util/Call.pm
+++ b/Master/tlpkg/tlperl/lib/Filter/Util/Call.pm
@@ -1,7 +1,7 @@
# Call.pm
#
# Copyright (c) 1995-2011 Paul Marquess. All rights reserved.
-# Copyright (c) 2011-2014 Reini Urban. All rights reserved.
+# Copyright (c) 2011-2014, 2018-2022 Reini Urban. All rights reserved.
# Copyright (c) 2014-2017 cPanel Inc. All rights reserved.
#
# This program is free software; you can redistribute it and/or
@@ -18,7 +18,7 @@ use warnings;
our @ISA = qw(Exporter);
our @EXPORT = qw( filter_add filter_del filter_read filter_read_exact) ;
-our $VERSION = "1.60" ;
+our $VERSION = "1.64" ;
our $XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -528,7 +528,7 @@ Paul Marquess
=head1 LICENSE
Copyright (c) 1995-2011 Paul Marquess. All rights reserved.
-Copyright (c) 2011-2014 Reini Urban. All rights reserved.
+Copyright (c) 2011-2014, 2018-2022 Reini Urban. All rights reserved.
Copyright (c) 2014-2017 cPanel Inc. All rights reserved.
This program is free software; you can redistribute it and/or
diff --git a/Master/tlpkg/tlperl/lib/FindBin.pm b/Master/tlpkg/tlperl/lib/FindBin.pm
index a1b768a1079..fa61dd334e1 100644
--- a/Master/tlpkg/tlperl/lib/FindBin.pm
+++ b/Master/tlpkg/tlperl/lib/FindBin.pm
@@ -61,9 +61,8 @@ workaround was to force the C<BEGIN> block to be executed again:
=head1 AUTHORS
-FindBin is supported as part of the core perl distribution. Please send bug
-reports to E<lt>F<perlbug@perl.org>E<gt> using the perlbug program
-included with perl.
+FindBin is supported as part of the core perl distribution. Please submit bug
+reports at L<https://github.com/Perl/perl5/issues>.
Graham Barr E<lt>F<gbarr@pobox.com>E<gt>
Nick Ing-Simmons E<lt>F<nik@tiuk.ti.com>E<gt>
@@ -91,7 +90,7 @@ our @EXPORT_OK = qw($Bin $Script $RealBin $RealScript $Dir $RealDir);
our %EXPORT_TAGS = (ALL => [qw($Bin $Script $RealBin $RealScript $Dir $RealDir)]);
our @ISA = qw(Exporter);
-our $VERSION = "1.52";
+our $VERSION = "1.53";
# needed for VMS-specific filename translation
if( $^O eq 'VMS' ) {
diff --git a/Master/tlpkg/tlperl/lib/Getopt/Long.pm b/Master/tlpkg/tlperl/lib/Getopt/Long.pm
index 8263e217131..fda1fc3a8f4 100644
--- a/Master/tlpkg/tlperl/lib/Getopt/Long.pm
+++ b/Master/tlpkg/tlperl/lib/Getopt/Long.pm
@@ -4,12 +4,14 @@
# Author : Johan Vromans
# Created On : Tue Sep 11 15:00:12 1990
# Last Modified By: Johan Vromans
-# Last Modified On: Tue Aug 18 14:48:05 2020
-# Update Count : 1739
+# Last Modified On: Thu Nov 17 17:45:27 2022
+# Update Count : 1777
# Status : Released
################ Module Preamble ################
+# There are no CPAN testers for very old versions of Perl.
+# Getopt::Long is reported to run under 5.8.
use 5.004;
use strict;
@@ -18,10 +20,10 @@ use warnings;
package Getopt::Long;
use vars qw($VERSION);
-$VERSION = 2.52;
+$VERSION = 2.54;
# For testing versions only.
use vars qw($VERSION_STRING);
-$VERSION_STRING = "2.52";
+$VERSION_STRING = "2.54";
use Exporter;
use vars qw(@ISA @EXPORT @EXPORT_OK);
@@ -258,9 +260,9 @@ use constant PAT_XINT =>
")";
use constant PAT_FLOAT =>
"[-+]?". # optional sign
- "(?=[0-9.])". # must start with digit or dec.point
+ "(?=\\.?[0-9])". # must start with digit or dec.point
"[0-9_]*". # digits before the dec.point
- "(\.[0-9_]+)?". # optional fraction
+ "(\\.[0-9_]*)?". # optional fraction
"([eE][-+]?[0-9_]+)?"; # optional exponent
sub GetOptions(@) {
@@ -525,8 +527,9 @@ sub GetOptionsFromArray(@) {
my $key; # key (if hash type)
my $arg; # option argument
my $ctl; # the opctl entry
+ my $starter; # the actual starter character(s)
- ($found, $opt, $ctl, $arg, $key) =
+ ($found, $opt, $ctl, $starter, $arg, $key) =
FindOption ($argv, $prefix, $argend, $opt, \%opctl);
if ( $found ) {
@@ -606,12 +609,13 @@ sub GetOptionsFromArray(@) {
eval {
&{$linkage{$opt}}
(Getopt::Long::CallBack->new
- (name => $opt,
- given => $given,
- ctl => $ctl,
- opctl => \%opctl,
- linkage => \%linkage,
- prefix => $prefix,
+ (name => $opt,
+ given => $given,
+ ctl => $ctl,
+ opctl => \%opctl,
+ linkage => \%linkage,
+ prefix => $prefix,
+ starter => $starter,
),
$ctl->[CTL_DEST] == CTL_DEST_HASH ? ($key) : (),
$arg);
@@ -818,7 +822,7 @@ sub ParseOptionSpec ($$) {
[=:] [ionfs] [@%]? (?: \{\d*,?\d*\} )?
|
# ... or an optional-with-default spec
- : (?: -?\d+ | \+ ) [@%]?
+ : (?: 0[0-7]+ | 0[xX][0-9a-fA-F]+ | 0[bB][01]+ | -?\d+ | \+ ) [@%]?
)?
$;x ) {
return (undef, "Error in option spec: \"$opt\"\n");
@@ -851,10 +855,23 @@ sub ParseOptionSpec ($$) {
# Fields are hard-wired here.
$entry = [$spec,$orig,undef,CTL_DEST_SCALAR,0,0];
}
- elsif ( $spec =~ /^:(-?\d+|\+)([@%])?$/ ) {
+ elsif ( $spec =~ /^:(0[0-7]+|0x[0-9a-f]+|0b[01]+|-?\d+|\+)([@%])?$/i ) {
my $def = $1;
my $dest = $2;
- my $type = $def eq '+' ? 'I' : 'i';
+ my $type = 'i'; # assume integer
+ if ( $def eq '+' ) {
+ # Increment.
+ $type = 'I';
+ }
+ elsif ( $def =~ /^(0[0-7]+|0[xX][0-9a-fA-F]+|0[bB][01]+)$/ ) {
+ # Octal, binary or hex.
+ $type = 'o';
+ $def = oct($def);
+ }
+ elsif ( $def =~ /^-?\d+$/ ) {
+ # Integer.
+ $def = 0 + $def;
+ }
$dest ||= '$';
$dest = $dest eq '@' ? CTL_DEST_ARRAY
: $dest eq '%' ? CTL_DEST_HASH : CTL_DEST_SCALAR;
@@ -923,7 +940,7 @@ sub ParseOptionSpec ($$) {
# Option lookup.
sub FindOption ($$$$$) {
- # returns (1, $opt, $ctl, $arg, $key) if okay,
+ # returns (1, $opt, $ctl, $starter, $arg, $key) if okay,
# returns (1, undef) if option in error,
# returns (0) otherwise.
@@ -1104,7 +1121,7 @@ sub FindOption ($$$$$) {
$arg = 0; # supply explicit value
}
unshift (@$argv, $starter.$rest) if defined $rest;
- return (1, $opt, $ctl, $arg);
+ return (1, $opt, $ctl, $starter, $arg);
}
# Get mandatory status and type info.
@@ -1127,15 +1144,15 @@ sub FindOption ($$$$$) {
# Fake incremental type.
my @c = @$ctl;
$c[CTL_TYPE] = '+';
- return (1, $opt, \@c, 1);
+ return (1, $opt, \@c, $starter, 1);
}
my $val
= defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT]
: $type eq 's' ? ''
: 0;
- return (1, $opt, $ctl, $val);
+ return (1, $opt, $ctl, $starter, $val);
}
- return (1, $opt, $ctl, $type eq 's' ? '' : 0)
+ return (1, $opt, $ctl, $starter, $type eq 's' ? '' : 0)
if $optargtype == 1; # --foo= -> return nothing
}
@@ -1155,9 +1172,9 @@ sub FindOption ($$$$$) {
# Fake incremental type.
my @c = @$ctl;
$c[CTL_TYPE] = '+';
- return (1, $opt, \@c, 1);
+ return (1, $opt, \@c, $starter, 1);
}
- return (1, $opt, $ctl,
+ return (1, $opt, $ctl, $starter,
defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] :
$type eq 's' ? '' : 0);
}
@@ -1187,16 +1204,16 @@ sub FindOption ($$$$$) {
if ( $type eq 's' ) { # string
# A mandatory string takes anything.
- return (1, $opt, $ctl, $arg, $key) if $mand;
+ return (1, $opt, $ctl, $starter, $arg, $key) if $mand;
# Same for optional string as a hash value
- return (1, $opt, $ctl, $arg, $key)
+ return (1, $opt, $ctl, $starter, $arg, $key)
if $ctl->[CTL_DEST] == CTL_DEST_HASH;
# An optional string takes almost anything.
- return (1, $opt, $ctl, $arg, $key)
+ return (1, $opt, $ctl, $starter, $arg, $key)
if defined $optarg || defined $rest;
- return (1, $opt, $ctl, $arg, $key) if $arg eq "-"; # ??
+ return (1, $opt, $ctl, $starter, $arg, $key) if $arg eq "-"; # ??
# Check for option or option list terminator.
if ($arg eq $argend ||
@@ -1248,7 +1265,7 @@ sub FindOption ($$$$$) {
# Fake incremental type.
my @c = @$ctl;
$c[CTL_TYPE] = '+';
- return (1, $opt, \@c, 1);
+ return (1, $opt, \@c, $starter, 1);
}
# Supply default value.
$arg = defined($ctl->[CTL_DEFAULT]) ? $ctl->[CTL_DEFAULT] : 0;
@@ -1293,7 +1310,7 @@ sub FindOption ($$$$$) {
else {
die("Getopt::Long internal error (Can't happen)\n");
}
- return (1, $opt, $ctl, $arg, $key);
+ return (1, $opt, $ctl, $starter, $arg, $key);
}
sub ValidValue ($$$$$) {
@@ -1529,8 +1546,9 @@ sub setup_pa_args($@) {
if ( UNIVERSAL::isa($pa, 'HASH') ) {
# Get rid of -msg vs. -message ambiguity.
- $pa->{-message} = $pa->{-msg};
- delete($pa->{-msg});
+ if (!defined $pa->{-message}) {
+ $pa->{-message} = delete($pa->{-msg});
+ }
}
elsif ( $pa =~ /^-?\d+$/ ) {
$pa = { -exitval => $pa };
@@ -1714,6 +1732,9 @@ disable C<$verbose> by setting its value to C<0>. Using a suitable
default value, the program can find out whether C<$verbose> is false
by default, or disabled by using C<--noverbose>.
+(If both C<--verbose> and C<--noverbose> are given, whichever is given
+last takes precedence.)
+
An incremental option is specified with a plus C<+> after the
option name:
@@ -1766,6 +1787,10 @@ of the equals sign indicates that the option value is optional. In
this case, if no suitable value is supplied, string valued options get
an empty string C<''> assigned, while numeric options are set to C<0>.
+(If the same option appears more than once on the command line, the
+last given value is used. If you want to take all the values, see
+below.)
+
=head2 Options with multiple values
Options sometimes take several values. For example, a program could
@@ -2010,6 +2035,8 @@ considered an option on itself.
Like C<:i>, but if the value is omitted, the I<number> will be assigned.
+If the I<number> is octal, hexadecimal or binary, behaves like C<:o>.
+
=item : + [ I<desttype> ]
Like C<:i>, but if the value is omitted, the current value for the
diff --git a/Master/tlpkg/tlperl/lib/HTTP/Tiny.pm b/Master/tlpkg/tlperl/lib/HTTP/Tiny.pm
index 5803e4599f0..8939b428671 100644
--- a/Master/tlpkg/tlperl/lib/HTTP/Tiny.pm
+++ b/Master/tlpkg/tlperl/lib/HTTP/Tiny.pm
@@ -4,7 +4,7 @@ use strict;
use warnings;
# ABSTRACT: A small, simple, correct HTTP/1.1 client
-our $VERSION = '0.076';
+our $VERSION = '0.086';
sub _croak { require Carp; Carp::croak(@_) }
@@ -26,8 +26,8 @@ sub _croak { require Carp; Carp::croak(@_) }
#pod scheme, host and port) (defaults to 1)
#pod * C<max_redirect> — Maximum number of redirects allowed (defaults to 5)
#pod * C<max_size> — Maximum response size in bytes (only when not using a data
-#pod callback). If defined, responses larger than this will return an
-#pod exception.
+#pod callback). If defined, requests with responses larger than this will return
+#pod a 599 status code.
#pod * C<http_proxy> — URL of a proxy server to use for HTTP connections
#pod (default is C<$ENV{http_proxy}> — if set)
#pod * C<https_proxy> — URL of a proxy server to use for HTTPS connections
@@ -38,23 +38,31 @@ sub _croak { require Carp; Carp::croak(@_) }
#pod be a comma-separated string or an array reference. (default is
#pod C<$ENV{no_proxy}> —)
#pod * C<timeout> — Request timeout in seconds (default is 60) If a socket open,
-#pod read or write takes longer than the timeout, an exception is thrown.
-#pod * C<verify_SSL> — A boolean that indicates whether to validate the SSL
-#pod certificate of an C<https> — connection (default is false)
+#pod read or write takes longer than the timeout, the request response status code
+#pod will be 599.
+#pod * C<verify_SSL> — A boolean that indicates whether to validate the TLS/SSL
+#pod certificate of an C<https> — connection (default is true). Changed from false
+#pod to true in version 0.083.
#pod * C<SSL_options> — A hashref of C<SSL_*> — options to pass through to
#pod L<IO::Socket::SSL>
+#pod * C<$ENV{PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT}> - Changes the default
+#pod certificate verification behavior to not check server identity if set to 1.
+#pod Only effective if C<verify_SSL> is not set. Added in version 0.083.
+#pod
+#pod
+#pod An accessor/mutator method exists for each attribute.
#pod
#pod Passing an explicit C<undef> for C<proxy>, C<http_proxy> or C<https_proxy> will
#pod prevent getting the corresponding proxies from the environment.
#pod
-#pod Exceptions from C<max_size>, C<timeout> or other errors will result in a
-#pod pseudo-HTTP status code of 599 and a reason of "Internal Exception". The
-#pod content field in the response will contain the text of the exception.
+#pod Errors during request execution will result in a pseudo-HTTP status code of 599
+#pod and a reason of "Internal Exception". The content field in the response will
+#pod contain the text of the error.
#pod
#pod The C<keep_alive> parameter enables a persistent connection, but only to a
-#pod single destination scheme, host and port. Also, if any connection-relevant
-#pod attributes are modified, or if the process ID or thread ID change, the
-#pod persistent connection will be dropped. If you want persistent connections
+#pod single destination scheme, host and port. If any connection-relevant
+#pod attributes are modified via accessor, or if the process ID or thread ID change,
+#pod the persistent connection will be dropped. If you want persistent connections
#pod across multiple destinations, use multiple HTTP::Tiny objects.
#pod
#pod See L</SSL SUPPORT> for more on the C<verify_SSL> and C<SSL_options> attributes.
@@ -108,11 +116,17 @@ sub timeout {
sub new {
my($class, %args) = @_;
+ # Support lower case verify_ssl argument, but only if verify_SSL is not
+ # true.
+ if ( exists $args{verify_ssl} ) {
+ $args{verify_SSL} ||= $args{verify_ssl};
+ }
+
my $self = {
max_redirect => 5,
timeout => defined $args{timeout} ? $args{timeout} : 60,
keep_alive => 1,
- verify_SSL => $args{verify_SSL} || $args{verify_ssl} || 0, # no verification by default
+ verify_SSL => defined $args{verify_SSL} ? $args{verify_SSL} : _verify_SSL_default(),
no_proxy => $ENV{no_proxy},
};
@@ -131,6 +145,13 @@ sub new {
return $self;
}
+sub _verify_SSL_default {
+ my ($self) = @_;
+ # Check if insecure default certificate verification behaviour has been
+ # changed by the user by setting PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT=1
+ return (($ENV{PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT} || '') eq '1') ? 0 : 1;
+}
+
sub _set_proxies {
my ($self) = @_;
@@ -152,7 +173,7 @@ sub _set_proxies {
# http proxy
if (! exists $self->{http_proxy} ) {
# under CGI, bypass HTTP_PROXY as request sets it from Proxy header
- local $ENV{HTTP_PROXY} if $ENV{REQUEST_METHOD};
+ local $ENV{HTTP_PROXY} = ($ENV{CGI_HTTP_PROXY} || "") if $ENV{REQUEST_METHOD};
$self->{http_proxy} = $ENV{http_proxy} || $ENV{HTTP_PROXY} || $self->{proxy};
}
@@ -186,7 +207,7 @@ sub _set_proxies {
return;
}
-#pod =method get|head|put|post|delete
+#pod =method get|head|put|post|patch|delete
#pod
#pod $response = $http->get($url);
#pod $response = $http->get($url, \%options);
@@ -200,7 +221,7 @@ sub _set_proxies {
#pod
#pod =cut
-for my $sub_name ( qw/get head put post delete/ ) {
+for my $sub_name ( qw/get head put post patch delete/ ) {
my $req_method = uc $sub_name;
no strict 'refs';
eval <<"HERE"; ## no critic
@@ -242,9 +263,10 @@ sub post_form {
while ( my ($key, $value) = each %{$args->{headers} || {}} ) {
$headers->{lc $key} = $value;
}
- delete $args->{headers};
return $self->request('POST', $url, {
+ # Any existing 'headers' key in $args will be overridden with a
+ # normalized version below.
%$args,
content => $self->www_form_urlencode($data),
headers => {
@@ -386,6 +408,10 @@ sub mirror {
#pod customizing the action of the callback based on the C<status> or C<headers>
#pod received prior to the content body.)
#pod
+#pod Content data in the request/response is handled as "raw bytes". Any
+#pod encoding/decoding (with associated headers) are the responsibility of the
+#pod caller.
+#pod
#pod The C<request> method returns a hashref containing the response. The hashref
#pod will have the following keys:
#pod
@@ -416,8 +442,8 @@ sub mirror {
#pod redirects in the same order that redirections occurred. If it does
#pod not exist, then no redirections occurred.
#pod
-#pod On an exception during the execution of the request, the C<status> field will
-#pod contain 599, and the C<content> field will contain the text of the exception.
+#pod On an error during the execution of the request, the C<status> field will
+#pod contain 599, and the C<content> field will contain the text of the error.
#pod
#pod =cut
@@ -434,7 +460,7 @@ sub request {
for ( 0 .. 1 ) {
$response = eval { $self->_request($method, $url, $args) };
last unless $@ && $idempotent{$method}
- && $@ =~ m{^(?:Socket closed|Unexpected end)};
+ && $@ =~ m{^(?:Socket closed|Unexpected end|SSL read error)};
}
if (my $e = $@) {
@@ -490,6 +516,8 @@ sub www_form_urlencode {
my @terms;
while( @params ) {
my ($key, $value) = splice(@params, 0, 2);
+ _croak("form data keys must not be undef")
+ if !defined($key);
if ( ref $value eq 'ARRAY' ) {
unshift @params, map { $key => $_ } @$value;
}
@@ -573,16 +601,8 @@ sub can_ssl {
sub connected {
my ($self) = @_;
- # If a socket exists...
- if ($self->{handle} && $self->{handle}{fh}) {
- my $socket = $self->{handle}{fh};
-
- # ...and is connected, return the peer host and port.
- if ($socket->connected) {
- return wantarray
- ? ($socket->peerhost, $socket->peerport)
- : join(':', $socket->peerhost, $socket->peerport);
- }
+ if ( $self->{handle} ) {
+ return $self->{handle}->connected;
}
return;
}
@@ -599,7 +619,9 @@ my %DefaultPort = (
sub _agent {
my $class = ref($_[0]) || $_[0];
(my $default_agent = $class) =~ s{::}{-}g;
- return $default_agent . "/" . $class->VERSION;
+ my $version = $class->VERSION;
+ $default_agent .= "/$version" if defined $version;
+ return $default_agent;
}
sub _request {
@@ -607,6 +629,10 @@ sub _request {
my ($scheme, $host, $port, $path_query, $auth) = $self->_split_url($url);
+ if ($scheme ne 'http' && $scheme ne 'https') {
+ die(qq/Unsupported URL scheme '$scheme'\n/);
+ }
+
my $request = {
method => $method,
scheme => $scheme,
@@ -659,6 +685,7 @@ sub _request {
}
if ( $self->{keep_alive}
+ && $handle->connected
&& $known_message_length
&& $response->{protocol} eq 'HTTP/1.1'
&& ($response->{headers}{connection} || '') ne 'close'
@@ -812,13 +839,25 @@ sub _prepare_headers_and_cb {
$request->{headers}{'connection'} = "close"
unless $self->{keep_alive};
+ # Some servers error on an empty-body PUT/POST without a content-length
+ if ( $request->{method} eq 'PUT' || $request->{method} eq 'POST' ) {
+ if (!defined($args->{content}) || !length($args->{content}) ) {
+ $request->{headers}{'content-length'} = 0;
+ }
+ }
+
if ( defined $args->{content} ) {
- if (ref $args->{content} eq 'CODE') {
- $request->{headers}{'content-type'} ||= "application/octet-stream";
- $request->{headers}{'transfer-encoding'} = 'chunked'
- unless $request->{headers}{'content-length'}
+ if ( ref $args->{content} eq 'CODE' ) {
+ if ( exists $request->{'content-length'} && $request->{'content-length'} == 0 ) {
+ $request->{cb} = sub { "" };
+ }
+ else {
+ $request->{headers}{'content-type'} ||= "application/octet-stream";
+ $request->{headers}{'transfer-encoding'} = 'chunked'
+ unless exists $request->{headers}{'content-length'}
|| $request->{headers}{'transfer-encoding'};
- $request->{cb} = $args->{content};
+ $request->{cb} = $args->{content};
+ }
}
elsif ( length $args->{content} ) {
my $content = $args->{content};
@@ -988,6 +1027,7 @@ my $unsafe_char = qr/[^A-Za-z0-9\-\._~]/;
sub _uri_escape {
my ($self, $str) = @_;
+ return "" if !defined $str;
if ( $] ge '5.008' ) {
utf8::encode($str);
}
@@ -1014,7 +1054,7 @@ use Socket qw[SOL_SOCKET SO_KEEPALIVE];
# not intended for general, per-client use and may be removed in the future
my $SOCKET_CLASS =
$ENV{PERL_HTTP_TINY_IPV4_ONLY} ? 'IO::Socket::INET' :
- eval { require IO::Socket::IP; IO::Socket::IP->VERSION(0.25) } ? 'IO::Socket::IP' :
+ eval { require IO::Socket::IP; IO::Socket::IP->VERSION(0.32) } ? 'IO::Socket::IP' :
'IO::Socket::INET';
sub BUFSIZE () { 32768 } ## no critic
@@ -1038,7 +1078,7 @@ sub new {
timeout => 60,
max_line_size => 16384,
max_header_lines => 64,
- verify_SSL => 0,
+ verify_SSL => HTTP::Tiny::_verify_SSL_default(),
SSL_options => {},
%args
}, $class;
@@ -1062,9 +1102,7 @@ sub connect {
if ( $scheme eq 'https' ) {
$self->_assert_ssl;
}
- elsif ( $scheme ne 'http' ) {
- die(qq/Unsupported URL scheme '$scheme'\n/);
- }
+
$self->{fh} = $SOCKET_CLASS->new(
PeerHost => $peer,
PeerPort => $port,
@@ -1097,6 +1135,16 @@ sub connect {
return $self;
}
+sub connected {
+ my ($self) = @_;
+ if ( $self->{fh} && $self->{fh}->connected ) {
+ return wantarray
+ ? ( $self->{fh}->peerhost, $self->{fh}->peerport )
+ : join( ':', $self->{fh}->peerhost, $self->{fh}->peerport );
+ }
+ return;
+}
+
sub start_ssl {
my ($self, $host) = @_;
@@ -1186,6 +1234,11 @@ sub read {
$len -= $take;
}
+ # Ignore SIGPIPE because SSL reads can result in writes that might error.
+ # See "Expecting exactly the same behavior as plain sockets" in
+ # https://metacpan.org/dist/IO-Socket-SSL/view/lib/IO/Socket/SSL.pod#Common-Usage-Errors
+ local $SIG{PIPE} = 'IGNORE';
+
while ($len > 0) {
$self->can_read
or die(q/Timed out while waiting for socket to become ready for reading/ . "\n");
@@ -1376,7 +1429,8 @@ sub read_body {
sub write_body {
@_ == 2 || die(q/Usage: $handle->write_body(request)/ . "\n");
my ($self, $request) = @_;
- if ($request->{headers}{'content-length'}) {
+ if (exists $request->{headers}{'content-length'}) {
+ return unless $request->{headers}{'content-length'};
return $self->write_content_body($request);
}
else {
@@ -1493,10 +1547,11 @@ sub read_response_header {
my $line = $self->readline;
- $line =~ /\A (HTTP\/(0*\d+\.0*\d+)) [\x09\x20]+ ([0-9]{3}) [\x09\x20]+ ([^\x0D\x0A]*) \x0D?\x0A/x
+ $line =~ /\A (HTTP\/(0*\d+\.0*\d+)) [\x09\x20]+ ([0-9]{3}) (?: [\x09\x20]+ ([^\x0D\x0A]*) )? \x0D?\x0A/x
or die(q/Malformed Status-Line: / . $Printable->($line). "\n");
my ($protocol, $version, $status, $reason) = ($1, $2, $3, $4);
+ $reason = "" unless defined $reason;
die (qq/Unsupported HTTP protocol: $protocol\n/)
unless $version =~ /0*1\.0*[01]/;
@@ -1672,7 +1727,7 @@ HTTP::Tiny - A small, simple, correct HTTP/1.1 client
=head1 VERSION
-version 0.076
+version 0.086
=head1 SYNOPSIS
@@ -1741,7 +1796,7 @@ C<max_redirect> — Maximum number of redirects allowed (defaults to 5)
=item *
-C<max_size> — Maximum response size in bytes (only when not using a data callback). If defined, responses larger than this will return an exception.
+C<max_size> — Maximum response size in bytes (only when not using a data callback). If defined, requests with responses larger than this will return a 599 status code.
=item *
@@ -1761,34 +1816,40 @@ C<no_proxy> — List of domain suffixes that should not be proxied. Must be a c
=item *
-C<timeout> — Request timeout in seconds (default is 60) If a socket open, read or write takes longer than the timeout, an exception is thrown.
+C<timeout> — Request timeout in seconds (default is 60) If a socket open, read or write takes longer than the timeout, the request response status code will be 599.
=item *
-C<verify_SSL> — A boolean that indicates whether to validate the SSL certificate of an C<https> — connection (default is false)
+C<verify_SSL> — A boolean that indicates whether to validate the TLS/SSL certificate of an C<https> — connection (default is true). Changed from false to true in version 0.083.
=item *
C<SSL_options> — A hashref of C<SSL_*> — options to pass through to L<IO::Socket::SSL>
+=item *
+
+C<$ENV{PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT}> - Changes the default certificate verification behavior to not check server identity if set to 1. Only effective if C<verify_SSL> is not set. Added in version 0.083.
+
=back
+An accessor/mutator method exists for each attribute.
+
Passing an explicit C<undef> for C<proxy>, C<http_proxy> or C<https_proxy> will
prevent getting the corresponding proxies from the environment.
-Exceptions from C<max_size>, C<timeout> or other errors will result in a
-pseudo-HTTP status code of 599 and a reason of "Internal Exception". The
-content field in the response will contain the text of the exception.
+Errors during request execution will result in a pseudo-HTTP status code of 599
+and a reason of "Internal Exception". The content field in the response will
+contain the text of the error.
The C<keep_alive> parameter enables a persistent connection, but only to a
-single destination scheme, host and port. Also, if any connection-relevant
-attributes are modified, or if the process ID or thread ID change, the
-persistent connection will be dropped. If you want persistent connections
+single destination scheme, host and port. If any connection-relevant
+attributes are modified via accessor, or if the process ID or thread ID change,
+the persistent connection will be dropped. If you want persistent connections
across multiple destinations, use multiple HTTP::Tiny objects.
See L</SSL SUPPORT> for more on the C<verify_SSL> and C<SSL_options> attributes.
-=head2 get|head|put|post|delete
+=head2 get|head|put|post|patch|delete
$response = $http->get($url);
$response = $http->get($url, \%options);
@@ -1909,6 +1970,10 @@ in-progress response hash reference, as described below. (This allows
customizing the action of the callback based on the C<status> or C<headers>
received prior to the content body.)
+Content data in the request/response is handled as "raw bytes". Any
+encoding/decoding (with associated headers) are the responsibility of the
+caller.
+
The C<request> method returns a hashref containing the response. The hashref
will have the following keys:
@@ -1948,8 +2013,8 @@ C<redirects> If this field exists, it is an arrayref of response hash references
=back
-On an exception during the execution of the request, the C<status> field will
-contain 599, and the C<content> field will contain the text of the exception.
+On an error during the execution of the request, the C<status> field will
+contain 599, and the C<content> field will contain the text of the error.
=head2 www_form_urlencode
@@ -2009,11 +2074,11 @@ proxy
timeout
verify_SSL
-=head1 SSL SUPPORT
+=head1 TLS/SSL SUPPORT
Direct C<https> connections are supported only if L<IO::Socket::SSL> 1.56 or
-greater and L<Net::SSLeay> 1.49 or greater are installed. An exception will be
-thrown if new enough versions of these modules are not installed or if the SSL
+greater and L<Net::SSLeay> 1.49 or greater are installed. An error will occur
+if new enough versions of these modules are not installed or if the TLS
encryption fails. You can also use C<HTTP::Tiny::can_ssl()> utility function
that returns boolean to see if the required modules are installed.
@@ -2021,7 +2086,7 @@ An C<https> connection may be made via an C<http> proxy that supports the CONNEC
command (i.e. RFC 2817). You may not proxy C<https> via a proxy that itself
requires C<https> to communicate.
-SSL provides two distinct capabilities:
+TLS/SSL provides two distinct capabilities:
=over 4
@@ -2035,24 +2100,17 @@ Verification of server identity
=back
-B<By default, HTTP::Tiny does not verify server identity>.
+B<By default, HTTP::Tiny verifies server identity>.
-Server identity verification is controversial and potentially tricky because it
-depends on a (usually paid) third-party Certificate Authority (CA) trust model
-to validate a certificate as legitimate. This discriminates against servers
-with self-signed certificates or certificates signed by free, community-driven
-CA's such as L<CAcert.org|http://cacert.org>.
+This was changed in version 0.083 due to security concerns. The previous default
+behavior can be enabled by setting C<$ENV{PERL_HTTP_TINY_SSL_INSECURE_BY_DEFAULT}>
+to 1.
-By default, HTTP::Tiny does not make any assumptions about your trust model,
-threat level or risk tolerance. It just aims to give you an encrypted channel
-when you need one.
-
-Setting the C<verify_SSL> attribute to a true value will make HTTP::Tiny verify
-that an SSL connection has a valid SSL certificate corresponding to the host
-name of the connection and that the SSL certificate has been verified by a CA.
-Assuming you trust the CA, this will protect against a L<man-in-the-middle
-attack|http://en.wikipedia.org/wiki/Man-in-the-middle_attack>. If you are
-concerned about security, you should enable this option.
+Verification is done by checking that that the TLS/SSL connection has a valid
+certificate corresponding to the host name of the connection and that the
+certificate has been verified by a CA. Assuming you trust the CA, this will
+protect against L<machine-in-the-middle
+attacks|http://en.wikipedia.org/wiki/Machine-in-the-middle_attack>.
Certificate verification requires a file containing trusted CA certificates.
@@ -2060,9 +2118,7 @@ If the environment variable C<SSL_CERT_FILE> is present, HTTP::Tiny
will try to find a CA certificate file in that location.
If the L<Mozilla::CA> module is installed, HTTP::Tiny will use the CA file
-included with it as a source of trusted CA's. (This means you trust Mozilla,
-the author of Mozilla::CA, the CPAN mirror where you got Mozilla::CA, the
-toolchain used to install it, and your operating system security, right?)
+included with it as a source of trusted CA's.
If that module is not available, then HTTP::Tiny will search several
system-specific default locations for a CA certificate file:
@@ -2081,13 +2137,33 @@ system-specific default locations for a CA certificate file:
/etc/ssl/ca-bundle.pem
+=item *
+
+/etc/openssl/certs/ca-certificates.crt
+
+=item *
+
+/etc/ssl/cert.pem
+
+=item *
+
+/usr/local/share/certs/ca-root-nss.crt
+
+=item *
+
+/etc/pki/tls/cacert.pem
+
+=item *
+
+/etc/certs/ca-certificates.crt
+
=back
-An exception will be raised if C<verify_SSL> is true and no CA certificate file
+An error will be occur if C<verify_SSL> is true and no CA certificate file
is available.
-If you desire complete control over SSL connections, the C<SSL_options> attribute
-lets you provide a hash reference that will be passed through to
+If you desire complete control over TLS/SSL connections, the C<SSL_options>
+attribute lets you provide a hash reference that will be passed through to
C<IO::Socket::SSL::start_SSL()>, overriding any options set by HTTP::Tiny. For
example, to provide your own trusted CA file:
@@ -2097,7 +2173,7 @@ example, to provide your own trusted CA file:
The C<SSL_options> attribute could also be used for such things as providing a
client certificate for authentication to a server or controlling the choice of
-cipher used for the SSL connection. See L<IO::Socket::SSL> documentation for
+cipher used for the TLS/SSL connection. See L<IO::Socket::SSL> documentation for
details.
=head1 PROXY SUPPORT
@@ -2127,7 +2203,7 @@ all_proxy or ALL_PROXY
If the C<REQUEST_METHOD> environment variable is set, then this might be a CGI
process and C<HTTP_PROXY> would be set from the C<Proxy:> header, which is a
security risk. If C<REQUEST_METHOD> is set, C<HTTP_PROXY> (the upper case
-variant only) is ignored.
+variant only) is ignored, but C<CGI_HTTP_PROXY> is considered instead.
Tunnelling C<https> over an C<http> proxy using the CONNECT method is
supported. If your proxy uses C<https> itself, you can not tunnel C<https>
@@ -2178,7 +2254,7 @@ L<HTTP/1.1 specifications|http://www.w3.org/Protocols/>:
It attempts to meet all "MUST" requirements of the specification, but does not
implement all "SHOULD" requirements. (Note: it was developed against the
earlier RFC 2616 specification and may not yet meet the revised RFC 7230-7235
-spec.)
+spec.) Additionally, HTTP::Tiny supports the C<PATCH> method of RFC 5789.
Some particular limitations of note include:
@@ -2268,7 +2344,7 @@ L<Net::SSLeay> - Required for SSL support
=back
-=for :stopwords cpan testmatrix url annocpan anno bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
+=for :stopwords cpan testmatrix url bugtracker rt cpants kwalitee diff irc mailto metadata placeholders metacpan
=head1 SUPPORT
@@ -2303,7 +2379,7 @@ David Golden <dagolden@cpan.org>
=head1 CONTRIBUTORS
-=for stopwords Alan Gardner Alessandro Ghedini A. Sinan Unur Brad Gilbert brian m. carlson Chris Nehren Weyl Claes Jakobsson Clinton Gormley Craig Berry David Golden Mitchell Dean Pearce Edward Zborowski Felipe Gasper James Raspass Jeremy Mates Jess Robinson Karen Etheridge Lukas Eklund Martin J. Evans Martin-Louis Bright Mike Doherty Nicolas Rochelemagne Olaf Alders Olivier Mengué Petr Písař Serguei Trouchelle Shoichi Kaji SkyMarshal Sören Kornetzki Steve Grazzini Syohei YOSHIDA Tatsuhiko Miyagawa Tom Hukins Tony Cook
+=for stopwords Alan Gardner Alessandro Ghedini A. Sinan Unur Brad Gilbert brian m. carlson Chris Nehren Weyl Claes Jakobsson Clinton Gormley Craig Berry David Golden Mitchell Dean Pearce Edward Zborowski Felipe Gasper Graham Knop Greg Kennedy James E Keenan Raspass Jeremy Mates Jess Robinson Karen Etheridge Lukas Eklund Martin J. Evans Martin-Louis Bright Matthew Horsfall Michael R. Davis Mike Doherty Nicolas Rochelemagne Olaf Alders Olivier Mengué Petr Písař sanjay-cpu Serguei Trouchelle Shoichi Kaji SkyMarshal Sören Kornetzki Steve Grazzini Stig Palmquist Syohei YOSHIDA Tatsuhiko Miyagawa Tom Hukins Tony Cook Xavier Guimard
=over 4
@@ -2373,6 +2449,18 @@ Felipe Gasper <felipe@felipegasper.com>
=item *
+Graham Knop <haarg@haarg.org>
+
+=item *
+
+Greg Kennedy <kennedy.greg@gmail.com>
+
+=item *
+
+James E Keenan <jkeenan@cpan.org>
+
+=item *
+
James Raspass <jraspass@gmail.com>
=item *
@@ -2401,6 +2489,14 @@ Martin-Louis Bright <mlbright@gmail.com>
=item *
+Matthew Horsfall <wolfsage@gmail.com>
+
+=item *
+
+Michael R. Davis <mrdvt92@users.noreply.github.com>
+
+=item *
+
Mike Doherty <doherty@cpan.org>
=item *
@@ -2421,6 +2517,10 @@ Petr Písař <ppisar@redhat.com>
=item *
+sanjay-cpu <snjkmr32@gmail.com>
+
+=item *
+
Serguei Trouchelle <stro@cpan.org>
=item *
@@ -2441,6 +2541,10 @@ Steve Grazzini <steve.grazzini@grantstreet.com>
=item *
+Stig Palmquist <git@stig.io>
+
+=item *
+
Syohei YOSHIDA <syohex@gmail.com>
=item *
@@ -2455,11 +2559,15 @@ Tom Hukins <tom@eborcom.com>
Tony Cook <tony@develop-help.com>
+=item *
+
+Xavier Guimard <yadd@debian.org>
+
=back
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2018 by Christian Hansen.
+This software is copyright (c) 2023 by Christian Hansen.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/Master/tlpkg/tlperl/lib/Hash/Util.pm b/Master/tlpkg/tlperl/lib/Hash/Util.pm
index 5a3e626be81..a0da8ba1b0b 100644
--- a/Master/tlpkg/tlperl/lib/Hash/Util.pm
+++ b/Master/tlpkg/tlperl/lib/Hash/Util.pm
@@ -6,10 +6,10 @@ use Carp;
use warnings;
no warnings 'uninitialized';
use warnings::register;
-use Scalar::Util qw(reftype);
+no warnings 'experimental::builtin';
+use builtin qw(reftype);
require Exporter;
-our @ISA = qw(Exporter);
our @EXPORT_OK = qw(
fieldhash fieldhashes
@@ -42,7 +42,7 @@ our @EXPORT_OK = qw(
BEGIN {
# make sure all our XS routines are available early so their prototypes
# are correctly applied in the following code.
- our $VERSION = '0.25';
+ our $VERSION = '0.30';
require XSLoader;
XSLoader::load();
}
@@ -92,7 +92,7 @@ Hash::Util - A selection of general-utility hash subroutines
hash_traversal_mask
);
- %hash = (foo => 42, bar => 23);
+ my %hash = (foo => 42, bar => 23);
# Ways to restrict a hash
lock_keys(%hash);
lock_keys(%hash, @keyset);
@@ -510,13 +510,22 @@ Perl has been built with. Possible sizes may be but are not limited to
=item B<hash_value>
my $hash_value = hash_value($string);
-
-hash_value() returns the current perl's internal hash value for a given
-string.
-
-Returns a 32 bit integer representing the hash value of the string passed
-in. This value is only reliable for the lifetime of the process. It may
-be different depending on invocation, environment variables, perl version,
+ my $hash_value = hash_value($string, $seed);
+
+C<hash_value($string)>
+returns
+the current perl's internal hash value for a given string.
+C<hash_value($string, $seed)>
+returns the hash value as if computed with a different seed.
+If the custom seed is too short, the function errors out.
+The minimum length of the seed is implementation-dependent.
+
+Returns a 32-bit integer
+representing the hash value of the string passed in.
+The 1-parameter value is only reliable
+for the lifetime of the process.
+It may be different
+depending on invocation, environment variables, perl version,
architectures, and build options.
B<Note that the hash value of a given string is sensitive information>:
@@ -833,6 +842,9 @@ hv_store() is from Array::RefElem, Copyright 2000 Gisle Aas.
Additional code by Yves Orton.
+Description of C<hash_value($string, $seed)>
+by Christopher Yeleighton <ne01026@shark.2a.pl>
+
=head1 SEE ALSO
L<Scalar::Util>, L<List::Util> and L<perlsec/"Algorithmic Complexity Attacks">.
diff --git a/Master/tlpkg/tlperl/lib/Hash/Util/FieldHash.pm b/Master/tlpkg/tlperl/lib/Hash/Util/FieldHash.pm
index 06343ae80a4..f010b2d03c7 100644
--- a/Master/tlpkg/tlperl/lib/Hash/Util/FieldHash.pm
+++ b/Master/tlpkg/tlperl/lib/Hash/Util/FieldHash.pm
@@ -1,14 +1,13 @@
package Hash::Util::FieldHash;
-use 5.009004;
use strict;
use warnings;
-use Scalar::Util qw( reftype);
+no warnings 'experimental::builtin';
+use builtin qw(reftype);
-our $VERSION = '1.21';
+our $VERSION = '1.26';
-require Exporter;
-our @ISA = qw(Exporter);
+use Exporter 'import';
our %EXPORT_TAGS = (
'all' => [ qw(
fieldhash
diff --git a/Master/tlpkg/tlperl/lib/I18N/LangTags/List.pm b/Master/tlpkg/tlperl/lib/I18N/LangTags/List.pm
index 5eef8eebafb..17ac9b111be 100644
--- a/Master/tlpkg/tlperl/lib/I18N/LangTags/List.pm
+++ b/Master/tlpkg/tlperl/lib/I18N/LangTags/List.pm
@@ -4,7 +4,7 @@ package I18N::LangTags::List;
# Time-stamp: "2004-10-06 23:26:21 ADT"
use strict;
our (%Name, %Is_Disrec, $Debug);
-our $VERSION = '0.40';
+our $VERSION = '0.41';
# POD at the end.
#----------------------------------------------------------------------
@@ -353,9 +353,9 @@ eq Zend
eq Azeri
Notable forms:
-{az-Arab} Azerbaijani in Arabic script;
-{az-Cyrl} Azerbaijani in Cyrillic script;
-{az-Latn} Azerbaijani in Latin script.
+{az-arab} Azerbaijani in Arabic script;
+{az-cyrl} Azerbaijani in Cyrillic script;
+{az-latn} Azerbaijani in Latin script.
=item {ban} : Balinese
@@ -473,8 +473,8 @@ eq Nyanja. eq Chinyanja.
Many forms are mutually un-intelligible in spoken media.
Notable forms:
-{zh-Hans} Chinese, in simplified script;
-{zh-Hant} Chinese, in traditional script;
+{zh-hans} Chinese, in simplified script;
+{zh-hant} Chinese, in traditional script;
{zh-tw} Taiwan Chinese;
{zh-cn} PRC Chinese;
{zh-sg} Singapore Chinese;
@@ -1370,8 +1370,8 @@ NOT Scots Gaelic!
eq Serb. NOT Sorbian.
Notable forms:
-{sr-Cyrl} : Serbian in Cyrillic script;
-{sr-Latn} : Serbian in Latin script.
+{sr-cyrl} : Serbian in Cyrillic script;
+{sr-latn} : Serbian in Latin script.
=item {srr} : Serer
@@ -1612,8 +1612,8 @@ Not a tag for normal use.
eq E<Ouml>zbek
Notable forms:
-{uz-Cyrl} Uzbek in Cyrillic script;
-{uz-Latn} Uzbek in Latin script.
+{uz-cyrl} Uzbek in Cyrillic script;
+{uz-latn} Uzbek in Latin script.
=item {vai} : Vai
diff --git a/Master/tlpkg/tlperl/lib/I18N/Langinfo.pm b/Master/tlpkg/tlperl/lib/I18N/Langinfo.pm
index 7206e1ce859..8ff6eda2d73 100644
--- a/Master/tlpkg/tlperl/lib/I18N/Langinfo.pm
+++ b/Master/tlpkg/tlperl/lib/I18N/Langinfo.pm
@@ -5,11 +5,9 @@ use strict;
use warnings;
use Carp;
-require Exporter;
+use Exporter 'import';
require XSLoader;
-our @ISA = qw(Exporter);
-
our @EXPORT = qw(langinfo);
our @EXPORT_OK = qw(
@@ -72,7 +70,7 @@ our @EXPORT_OK = qw(
YESSTR
);
-our $VERSION = '0.19';
+our $VERSION = '0.22';
XSLoader::load();
@@ -182,8 +180,11 @@ For the eras based on typically some ruler, such as the Japanese Emperor
=head2 For systems without C<nl_langinfo>
-Starting in Perl 5.28, this module is available even on systems that lack a
-native C<nl_langinfo>. On such systems, it uses various methods to construct
+This module originally was just a wrapper for the libc C<nl_langinfo>
+function, and did not work on systems lacking it, such as Windows.
+
+Starting in Perl 5.28, this module works on all platforms. When
+C<nl_langinfo> is not available, it uses various methods to construct
what that function, if present, would return. But there are potential
glitches. These are the items that could be different:
@@ -195,8 +196,11 @@ Unimplemented, so returns C<"">.
=item C<CODESET>
-Unimplemented, except on Windows, due to the vagaries of vendor locale names,
-returning C<""> on non-Windows.
+This should work properly for Windows platforms. On almost all other modern
+platforms, it will reliably return "UTF-8" if that is the code set.
+Otherwise, it depends on the locale's name. If that is of the form
+C<foo.bar>, it will assume C<bar> is the code set; and it also knows about the
+two locales "C" and "POSIX". If none of those apply it returns C<"">.
=item C<YESEXPR>
@@ -226,15 +230,14 @@ representation.
=item C<CRNCYSTR>
The return may be incorrect for those rare locales where the currency symbol
-replaces the radix character.
-Send email to L<mailto:perlbug@perl.org> if you have examples of it needing
-to work differently.
+replaces the radix character. If you have examples of it needing to work
+differently, please file a report at L<https://github.com/Perl/perl5/issues>.
=item C<ALT_DIGITS>
-Currently this gives the same results as Linux does.
-Send email to L<mailto:perlbug@perl.org> if you have examples of it needing
-to work differently.
+Currently this gives the same results as Linux does. If you have examples of
+it needing to work differently, please file a report at
+L<https://github.com/Perl/perl5/issues>.
=item C<ERA_D_FMT>
@@ -275,8 +278,6 @@ workaround for this; patches welcome: see L<perlapi/switch_to_global_locale>.
L<perllocale>, L<POSIX/localeconv>, L<POSIX/setlocale>, L<nl_langinfo(3)>.
-The langinfo() function is just a wrapper for the C nl_langinfo() interface.
-
=head1 AUTHOR
Jarkko Hietaniemi, E<lt>jhi@hut.fiE<gt>. Now maintained by Perl 5 porters.
diff --git a/Master/tlpkg/tlperl/lib/IO.pm b/Master/tlpkg/tlperl/lib/IO.pm
index 8c094f802e2..256f37507a7 100644
--- a/Master/tlpkg/tlperl/lib/IO.pm
+++ b/Master/tlpkg/tlperl/lib/IO.pm
@@ -7,7 +7,7 @@ use Carp;
use strict;
use warnings;
-our $VERSION = "1.46";
+our $VERSION = "1.52";
XSLoader::load 'IO', $VERSION;
sub import {
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Bzip2.pm b/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Bzip2.pm
index c157520f087..e19755123d1 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Bzip2.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Bzip2.pm
@@ -4,12 +4,12 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.101 qw(:Status);
+use IO::Compress::Base::Common 2.204 qw(:Status);
-use Compress::Raw::Bzip2 2.101 ;
+use Compress::Raw::Bzip2 2.204 ;
our ($VERSION);
-$VERSION = '2.102';
+$VERSION = '2.204';
sub mkCompObject
{
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Deflate.pm b/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Deflate.pm
index 1048dbda829..54696ffd781 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Deflate.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Deflate.pm
@@ -4,13 +4,13 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.101 qw(:Status);
-use Compress::Raw::Zlib 2.101 qw( !crc32 !adler32 ) ;
+use IO::Compress::Base::Common 2.204 qw(:Status);
+use Compress::Raw::Zlib 2.204 qw( !crc32 !adler32 ) ;
require Exporter;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, @EXPORT, %DEFLATE_CONSTANTS);
-$VERSION = '2.102';
+$VERSION = '2.204';
@ISA = qw(Exporter);
@EXPORT_OK = @Compress::Raw::Zlib::DEFLATE_CONSTANTS;
%EXPORT_TAGS = %Compress::Raw::Zlib::DEFLATE_CONSTANTS;
@@ -40,6 +40,29 @@ sub mkCompObject
} ;
}
+sub mkCompObject1
+{
+ my $crc32 = shift ;
+ my $adler32 = shift ;
+ my $level = shift ;
+ my $strategy = shift ;
+
+ my ($def, $status) = Compress::Raw::Zlib::Deflate->new(
+ -AppendOutput => 1,
+ -CRC32 => $crc32,
+ -ADLER32 => $adler32,
+ -Level => $level,
+ -Strategy => $strategy,
+ -WindowBits => MAX_WBITS);
+
+ return (undef, "Cannot create Deflate object: $status", $status)
+ if $status != Z_OK;
+
+ return bless {'Def' => $def,
+ 'Error' => '',
+ } ;
+}
+
sub compr
{
my $self = shift ;
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Identity.pm b/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Identity.pm
index 8b92a3cea61..5938d136978 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Identity.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/Adapter/Identity.pm
@@ -4,10 +4,10 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.101 qw(:Status);
+use IO::Compress::Base::Common 2.204 qw(:Status);
our ($VERSION);
-$VERSION = '2.102';
+$VERSION = '2.204';
sub mkCompObject
{
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/Base.pm b/Master/tlpkg/tlperl/lib/IO/Compress/Base.pm
index 269f10c7a45..37a0df94f34 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/Base.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/Base.pm
@@ -6,7 +6,7 @@ require 5.006 ;
use strict ;
use warnings;
-use IO::Compress::Base::Common 2.101 ;
+use IO::Compress::Base::Common 2.204 ;
use IO::File (); ;
use Scalar::Util ();
@@ -20,7 +20,7 @@ use Symbol();
our (@ISA, $VERSION);
@ISA = qw(IO::File Exporter);
-$VERSION = '2.102';
+$VERSION = '2.204';
#Can't locate object method "SWASHNEW" via package "utf8" (perhaps you forgot to load "utf8"?) at .../ext/Compress-Zlib/Gzip/blib/lib/Compress/Zlib/Common.pm line 16.
@@ -1051,7 +1051,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/Base/Common.pm b/Master/tlpkg/tlperl/lib/IO/Compress/Base/Common.pm
index 67882cf5158..32c4aa34642 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/Base/Common.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/Base/Common.pm
@@ -11,7 +11,7 @@ use File::GlobMapper;
require Exporter;
our ($VERSION, @ISA, @EXPORT, %EXPORT_TAGS, $HAS_ENCODE);
@ISA = qw(Exporter);
-$VERSION = '2.102';
+$VERSION = '2.204';
@EXPORT = qw( isaFilehandle isaFilename isaScalar
whatIsInput whatIsOutput
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/Bzip2.pm b/Master/tlpkg/tlperl/lib/IO/Compress/Bzip2.pm
index 2d333fd1e6d..6aa0ddd4cb4 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/Bzip2.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/Bzip2.pm
@@ -5,16 +5,16 @@ use warnings;
use bytes;
require Exporter ;
-use IO::Compress::Base 2.101 ;
+use IO::Compress::Base 2.204 ;
-use IO::Compress::Base::Common 2.101 qw();
-use IO::Compress::Adapter::Bzip2 2.101 ;
+use IO::Compress::Base::Common 2.204 qw();
+use IO::Compress::Adapter::Bzip2 2.204 ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bzip2Error);
-$VERSION = '2.102';
+$VERSION = '2.204';
$Bzip2Error = '';
@ISA = qw(IO::Compress::Base Exporter);
@@ -51,7 +51,7 @@ sub getExtraParams
{
my $self = shift ;
- use IO::Compress::Base::Common 2.101 qw(:Parse);
+ use IO::Compress::Base::Common 2.204 qw(:Parse);
return (
'blocksize100k' => [IO::Compress::Base::Common::Parse_unsigned, 1],
@@ -818,7 +818,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/Deflate.pm b/Master/tlpkg/tlperl/lib/IO/Compress/Deflate.pm
index 9e71977df49..a34a6ba6e69 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/Deflate.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/Deflate.pm
@@ -8,16 +8,16 @@ use bytes;
require Exporter ;
-use IO::Compress::RawDeflate 2.101 ();
-use IO::Compress::Adapter::Deflate 2.101 ;
+use IO::Compress::RawDeflate 2.204 ();
+use IO::Compress::Adapter::Deflate 2.204 ;
-use IO::Compress::Zlib::Constants 2.101 ;
-use IO::Compress::Base::Common 2.101 qw();
+use IO::Compress::Zlib::Constants 2.204 ;
+use IO::Compress::Base::Common 2.204 qw();
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $DeflateError);
-$VERSION = '2.102';
+$VERSION = '2.204';
$DeflateError = '';
@ISA = qw(IO::Compress::RawDeflate Exporter);
@@ -42,92 +42,35 @@ sub deflate
return $obj->_def(@_);
}
-
-sub bitmask($$$$)
-{
- my $into = shift ;
- my $value = shift ;
- my $offset = shift ;
- my $mask = shift ;
-
- return $into | (($value & $mask) << $offset ) ;
-}
-
-sub mkDeflateHdr($$$;$)
-{
- my $method = shift ;
- my $cinfo = shift;
- my $level = shift;
- my $fdict_adler = shift ;
-
- my $cmf = 0;
- my $flg = 0;
- my $fdict = 0;
- $fdict = 1 if defined $fdict_adler;
-
- $cmf = bitmask($cmf, $method, ZLIB_CMF_CM_OFFSET, ZLIB_CMF_CM_BITS);
- $cmf = bitmask($cmf, $cinfo, ZLIB_CMF_CINFO_OFFSET, ZLIB_CMF_CINFO_BITS);
-
- $flg = bitmask($flg, $fdict, ZLIB_FLG_FDICT_OFFSET, ZLIB_FLG_FDICT_BITS);
- $flg = bitmask($flg, $level, ZLIB_FLG_LEVEL_OFFSET, ZLIB_FLG_LEVEL_BITS);
-
- my $fcheck = 31 - ($cmf * 256 + $flg) % 31 ;
- $flg = bitmask($flg, $fcheck, ZLIB_FLG_FCHECK_OFFSET, ZLIB_FLG_FCHECK_BITS);
-
- my $hdr = pack("CC", $cmf, $flg) ;
- $hdr .= pack("N", $fdict_adler) if $fdict ;
-
- return $hdr;
-}
-
-sub mkHeader
+sub mkComp
{
my $self = shift ;
- my $param = shift ;
+ my $got = shift ;
- my $level = $param->getValue('level');
- my $strategy = $param->getValue('strategy');
+ my ($obj, $errstr, $errno) = IO::Compress::Adapter::Deflate::mkCompObject1(
+ $got->getValue('crc32'),
+ $got->getValue('adler32'),
+ $got->getValue('level'),
+ $got->getValue('strategy')
+ );
- my $lflag ;
- $level = 6
- if $level == Z_DEFAULT_COMPRESSION ;
+ return $self->saveErrorString(undef, $errstr, $errno)
+ if ! defined $obj;
- if (ZLIB_VERNUM >= 0x1210)
- {
- if ($strategy >= Z_HUFFMAN_ONLY || $level < 2)
- { $lflag = ZLIB_FLG_LEVEL_FASTEST }
- elsif ($level < 6)
- { $lflag = ZLIB_FLG_LEVEL_FAST }
- elsif ($level == 6)
- { $lflag = ZLIB_FLG_LEVEL_DEFAULT }
- else
- { $lflag = ZLIB_FLG_LEVEL_SLOWEST }
- }
- else
- {
- $lflag = ($level - 1) >> 1 ;
- $lflag = 3 if $lflag > 3 ;
- }
-
- #my $wbits = (MAX_WBITS - 8) << 4 ;
- my $wbits = 7;
- mkDeflateHdr(ZLIB_CMF_CM_DEFLATED, $wbits, $lflag);
+ return $obj;
}
-sub ckParams
+
+sub mkHeader
{
my $self = shift ;
- my $got = shift;
-
- $got->setValue('adler32' => 1);
- return 1 ;
+ return '';
}
-
sub mkTrailer
{
my $self = shift ;
- return pack("N", *$self->{Compress}->adler32()) ;
+ return '';
}
sub mkFinalTrailer
@@ -135,12 +78,6 @@ sub mkFinalTrailer
return '';
}
-#sub newHeader
-#{
-# my $self = shift ;
-# return *$self->{Header};
-#}
-
sub getExtraParams
{
my $self = shift ;
@@ -930,9 +867,9 @@ L<Archive::Tar|Archive::Tar>,
L<IO::Zlib|IO::Zlib>
For RFC 1950, 1951 and 1952 see
-L<http://www.faqs.org/rfcs/rfc1950.html>,
-L<http://www.faqs.org/rfcs/rfc1951.html> and
-L<http://www.faqs.org/rfcs/rfc1952.html>
+L<https://datatracker.ietf.org/doc/html/rfc1950>,
+L<https://datatracker.ietf.org/doc/html/rfc1951> and
+L<https://datatracker.ietf.org/doc/html/rfc1952>
The I<zlib> compression library was written by Jean-loup Gailly
C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
@@ -940,6 +877,9 @@ C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
The primary site for the I<zlib> compression library is
L<http://www.zlib.org>.
+The primary site for the I<zlib-ng> compression library is
+L<https://github.com/zlib-ng/zlib-ng>.
+
The primary site for gzip is L<http://www.gzip.org>.
=head1 AUTHOR
@@ -952,7 +892,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/FAQ.pod b/Master/tlpkg/tlperl/lib/IO/Compress/FAQ.pod
index 367468ec078..549ea2a7b4e 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/FAQ.pod
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/FAQ.pod
@@ -197,7 +197,7 @@ L<ftp://ftp.info-zip.org/pub/infozip/doc/>
=head2 Gzip Resources
The primary reference for gzip files is RFC 1952
-L<http://www.faqs.org/rfcs/rfc1952.html>
+L<https://datatracker.ietf.org/doc/html/rfc1952>
The primary site for gzip is L<http://www.gzip.org>.
@@ -682,7 +682,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/Gzip.pm b/Master/tlpkg/tlperl/lib/IO/Compress/Gzip.pm
index 4111d079381..6b142d45216 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/Gzip.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/Gzip.pm
@@ -8,12 +8,12 @@ use bytes;
require Exporter ;
-use IO::Compress::RawDeflate 2.101 () ;
-use IO::Compress::Adapter::Deflate 2.101 ;
+use IO::Compress::RawDeflate 2.204 () ;
+use IO::Compress::Adapter::Deflate 2.204 ;
-use IO::Compress::Base::Common 2.101 qw(:Status );
-use IO::Compress::Gzip::Constants 2.101 ;
-use IO::Compress::Zlib::Extra 2.101 ;
+use IO::Compress::Base::Common 2.204 qw(:Status );
+use IO::Compress::Gzip::Constants 2.204 ;
+use IO::Compress::Zlib::Extra 2.204 ;
BEGIN
{
@@ -25,7 +25,7 @@ BEGIN
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $GzipError);
-$VERSION = '2.102';
+$VERSION = '2.204';
$GzipError = '' ;
@ISA = qw(IO::Compress::RawDeflate Exporter);
@@ -1242,9 +1242,9 @@ L<Archive::Tar|Archive::Tar>,
L<IO::Zlib|IO::Zlib>
For RFC 1950, 1951 and 1952 see
-L<http://www.faqs.org/rfcs/rfc1950.html>,
-L<http://www.faqs.org/rfcs/rfc1951.html> and
-L<http://www.faqs.org/rfcs/rfc1952.html>
+L<https://datatracker.ietf.org/doc/html/rfc1950>,
+L<https://datatracker.ietf.org/doc/html/rfc1951> and
+L<https://datatracker.ietf.org/doc/html/rfc1952>
The I<zlib> compression library was written by Jean-loup Gailly
C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
@@ -1252,6 +1252,9 @@ C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
The primary site for the I<zlib> compression library is
L<http://www.zlib.org>.
+The primary site for the I<zlib-ng> compression library is
+L<https://github.com/zlib-ng/zlib-ng>.
+
The primary site for gzip is L<http://www.gzip.org>.
=head1 AUTHOR
@@ -1264,7 +1267,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/Gzip/Constants.pm b/Master/tlpkg/tlperl/lib/IO/Compress/Gzip/Constants.pm
index a3d09e2e214..f56612d7292 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/Gzip/Constants.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/Gzip/Constants.pm
@@ -9,7 +9,7 @@ require Exporter;
our ($VERSION, @ISA, @EXPORT, %GZIP_OS_Names);
our ($GZIP_FNAME_INVALID_CHAR_RE, $GZIP_FCOMMENT_INVALID_CHAR_RE);
-$VERSION = '2.102';
+$VERSION = '2.204';
@ISA = qw(Exporter);
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/RawDeflate.pm b/Master/tlpkg/tlperl/lib/IO/Compress/RawDeflate.pm
index 6a0ff6e0f3d..75ee62ba48f 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/RawDeflate.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/RawDeflate.pm
@@ -6,16 +6,16 @@ use strict ;
use warnings;
use bytes;
-use IO::Compress::Base 2.101 ;
-use IO::Compress::Base::Common 2.101 qw(:Status :Parse);
-use IO::Compress::Adapter::Deflate 2.101 ;
-use Compress::Raw::Zlib 2.101 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
+use IO::Compress::Base 2.204 ;
+use IO::Compress::Base::Common 2.204 qw(:Status :Parse);
+use IO::Compress::Adapter::Deflate 2.204 ;
+use Compress::Raw::Zlib 2.204 qw(Z_DEFLATED Z_DEFAULT_COMPRESSION Z_DEFAULT_STRATEGY);
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %DEFLATE_CONSTANTS, %EXPORT_TAGS, $RawDeflateError);
-$VERSION = '2.102';
+$VERSION = '2.204';
$RawDeflateError = '';
@ISA = qw(IO::Compress::Base Exporter);
@@ -985,9 +985,9 @@ L<Archive::Tar|Archive::Tar>,
L<IO::Zlib|IO::Zlib>
For RFC 1950, 1951 and 1952 see
-L<http://www.faqs.org/rfcs/rfc1950.html>,
-L<http://www.faqs.org/rfcs/rfc1951.html> and
-L<http://www.faqs.org/rfcs/rfc1952.html>
+L<https://datatracker.ietf.org/doc/html/rfc1950>,
+L<https://datatracker.ietf.org/doc/html/rfc1951> and
+L<https://datatracker.ietf.org/doc/html/rfc1952>
The I<zlib> compression library was written by Jean-loup Gailly
C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
@@ -995,6 +995,9 @@ C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
The primary site for the I<zlib> compression library is
L<http://www.zlib.org>.
+The primary site for the I<zlib-ng> compression library is
+L<https://github.com/zlib-ng/zlib-ng>.
+
The primary site for gzip is L<http://www.gzip.org>.
=head1 AUTHOR
@@ -1007,7 +1010,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/Zip.pm b/Master/tlpkg/tlperl/lib/IO/Compress/Zip.pm
index fea487af678..856ae7b08a1 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/Zip.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/Zip.pm
@@ -4,41 +4,41 @@ use strict ;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.101 qw(:Status );
-use IO::Compress::RawDeflate 2.101 ();
-use IO::Compress::Adapter::Deflate 2.101 ;
-use IO::Compress::Adapter::Identity 2.101 ;
-use IO::Compress::Zlib::Extra 2.101 ;
-use IO::Compress::Zip::Constants 2.101 ;
+use IO::Compress::Base::Common 2.204 qw(:Status );
+use IO::Compress::RawDeflate 2.204 ();
+use IO::Compress::Adapter::Deflate 2.204 ;
+use IO::Compress::Adapter::Identity 2.204 ;
+use IO::Compress::Zlib::Extra 2.204 ;
+use IO::Compress::Zip::Constants 2.204 ;
use File::Spec();
use Config;
-use Compress::Raw::Zlib 2.101 ();
+use Compress::Raw::Zlib 2.204 ();
BEGIN
{
eval { require IO::Compress::Adapter::Bzip2 ;
- IO::Compress::Adapter::Bzip2->import( 2.101 );
+ IO::Compress::Adapter::Bzip2->import( 2.201 );
require IO::Compress::Bzip2 ;
- IO::Compress::Bzip2->import( 2.101 );
+ IO::Compress::Bzip2->import( 2.201 );
} ;
eval { require IO::Compress::Adapter::Lzma ;
- IO::Compress::Adapter::Lzma->import( 2.101 );
+ IO::Compress::Adapter::Lzma->import( 2.201 );
require IO::Compress::Lzma ;
- IO::Compress::Lzma->import( 2.101 );
+ IO::Compress::Lzma->import( 2.201 );
} ;
eval { require IO::Compress::Adapter::Xz ;
- IO::Compress::Adapter::Xz->import( 2.101 );
+ IO::Compress::Adapter::Xz->import( 2.201 );
require IO::Compress::Xz ;
- IO::Compress::Xz->import( 2.101 );
+ IO::Compress::Xz->import( 2.201 );
} ;
eval { require IO::Compress::Adapter::Zstd ;
- IO::Compress::Adapter::Zstd->import( 2.101 );
+ IO::Compress::Adapter::Zstd->import( 2.201 );
require IO::Compress::Zstd ;
- IO::Compress::Zstd->import( 2.101 );
+ IO::Compress::Zstd->import( 2.201 );
} ;
}
@@ -47,7 +47,7 @@ require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $ZipError);
-$VERSION = '2.102';
+$VERSION = '2.204';
$ZipError = '';
@ISA = qw(IO::Compress::RawDeflate Exporter);
@@ -85,20 +85,24 @@ sub isMethodAvailable
if $method == ZIP_CM_STORE || $method == ZIP_CM_DEFLATE ;
return 1
- if $method == ZIP_CM_BZIP2 and
- defined $IO::Compress::Adapter::Bzip2::VERSION;
+ if $method == ZIP_CM_BZIP2 &&
+ defined $IO::Compress::Adapter::Bzip2::VERSION &&
+ defined &{ "IO::Compress::Adapter::Bzip2::mkRawZipCompObject" };
return 1
- if $method == ZIP_CM_LZMA and
- defined $IO::Compress::Adapter::Lzma::VERSION;
+ if $method == ZIP_CM_LZMA &&
+ defined $IO::Compress::Adapter::Lzma::VERSION &&
+ defined &{ "IO::Compress::Adapter::Lzma::mkRawZipCompObject" };
return 1
- if $method == ZIP_CM_XZ and
- defined $IO::Compress::Adapter::Xz::VERSION;
+ if $method == ZIP_CM_XZ &&
+ defined $IO::Compress::Adapter::Xz::VERSION &&
+ defined &{ "IO::Compress::Adapter::Xz::mkRawZipCompObject" };
return 1
- if $method == ZIP_CM_ZSTD and
- defined $IO::Compress::Adapter::ZSTD::VERSION;
+ if $method == ZIP_CM_ZSTD &&
+ defined $IO::Compress::Adapter::ZSTD::VERSION &&
+ defined &{ "IO::Compress::Adapter::ZSTD::mkRawZipCompObject" };
return 0;
}
@@ -566,6 +570,8 @@ sub mkFinalTrailer
$z64e .= U64::pack_V64 $entries ; # entries in central dir
$z64e .= U64::pack_V64 $cd_len ; # size of central dir
$z64e .= *$self->{ZipData}{Offset}->getPacked_V64() ; # offset to start central dir
+ $z64e .= *$self->{ZipData}{extrafieldzip64} # otional extra field
+ if defined *$self->{ZipData}{extrafieldzip64} ;
$z64e = pack("V", ZIP64_END_CENTRAL_REC_HDR_SIG) # signature
. U64::pack_V64(length $z64e)
@@ -638,7 +644,7 @@ sub ckParams
}
*$self->{ZipData}{AnyZip64} = 1
- if $got->getValue('zip64');
+ if $got->getValue('zip64') || $got->getValue('extrafieldzip64') ;
*$self->{ZipData}{Zip64} = $got->getValue('zip64');
*$self->{ZipData}{Stream} = $got->getValue('stream');
@@ -658,7 +664,7 @@ sub ckParams
*$self->{ZipData}{ZipComment} = $got->getValue('zipcomment') ;
- for my $name (qw( extrafieldlocal extrafieldcentral ))
+ for my $name (qw( extrafieldlocal extrafieldcentral extrafieldzip64))
{
my $data = $got->getValue($name) ;
if (defined $data) {
@@ -667,6 +673,7 @@ sub ckParams
if $bad ;
$got->setValue($name, $data) ;
+ *$self->{ZipData}{$name} = $data;
}
}
@@ -731,6 +738,7 @@ our %PARAMS = (
'textflag' => [IO::Compress::Base::Common::Parse_boolean, 0],
'extrafieldlocal' => [IO::Compress::Base::Common::Parse_any, undef],
'extrafieldcentral'=> [IO::Compress::Base::Common::Parse_any, undef],
+ 'extrafieldzip64' => [IO::Compress::Base::Common::Parse_any, undef],
# Lzma
'preset' => [IO::Compress::Base::Common::Parse_unsigned, 6],
@@ -1053,12 +1061,24 @@ See L<File::GlobMapper|File::GlobMapper> for more details.
If the C<$input_filename_or_reference> parameter is any other type,
C<undef> will be returned.
-In addition, if C<$input_filename_or_reference> is a simple filename,
-the default values for
-the C<Name>, C<Time>, C<TextFlag>, C<ExtAttr>, C<exUnixN> and C<exTime> options will be sourced from that file.
+In addition, if C<$input_filename_or_reference> corresponds to a filename
+from the filesystem, a number of zip file header fields will be populated by default
+using the following attributes from the input file
+
+=over 5
+
+=item * the full filename contained in C<$input_filename_or_reference>
+
+=item * the file protection attributes
+
+=item * the UID/GID for the file
+
+=item * the file timestamps
+
+=back
If you do not want to use these defaults they can be overridden by
-explicitly setting the C<Name>, C<Time>, C<TextFlag>, C<ExtAttr>, C<exUnixN> and C<exTime> options or by setting the
+explicitly setting one, or more, of the C<Name>, C<Time>, C<TextFlag>, C<ExtAttr>, C<exUnixN> and C<exTime> options or by setting the
C<Minimal> parameter.
=head3 The C<$output_filename_or_reference> parameter
@@ -2121,9 +2141,9 @@ L<Archive::Tar|Archive::Tar>,
L<IO::Zlib|IO::Zlib>
For RFC 1950, 1951 and 1952 see
-L<http://www.faqs.org/rfcs/rfc1950.html>,
-L<http://www.faqs.org/rfcs/rfc1951.html> and
-L<http://www.faqs.org/rfcs/rfc1952.html>
+L<https://datatracker.ietf.org/doc/html/rfc1950>,
+L<https://datatracker.ietf.org/doc/html/rfc1951> and
+L<https://datatracker.ietf.org/doc/html/rfc1952>
The I<zlib> compression library was written by Jean-loup Gailly
C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
@@ -2131,6 +2151,9 @@ C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
The primary site for the I<zlib> compression library is
L<http://www.zlib.org>.
+The primary site for the I<zlib-ng> compression library is
+L<https://github.com/zlib-ng/zlib-ng>.
+
The primary site for gzip is L<http://www.gzip.org>.
=head1 AUTHOR
@@ -2143,7 +2166,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/Zip/Constants.pm b/Master/tlpkg/tlperl/lib/IO/Compress/Zip/Constants.pm
index 7982fc32f6e..b6e0d35fed6 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/Zip/Constants.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/Zip/Constants.pm
@@ -7,7 +7,7 @@ require Exporter;
our ($VERSION, @ISA, @EXPORT, %ZIP_CM_MIN_VERSIONS);
-$VERSION = '2.102';
+$VERSION = '2.204';
@ISA = qw(Exporter);
@@ -20,6 +20,7 @@ $VERSION = '2.102';
ZIP_CM_PPMD
ZIP_CM_XZ
ZIP_CM_ZSTD
+ ZIP_CM_AES
ZIP_LOCAL_HDR_SIG
ZIP_DATA_HDR_SIG
@@ -69,6 +70,7 @@ use constant ZIP_CM_LZMA => 14 ;
use constant ZIP_CM_ZSTD => 93 ;
use constant ZIP_CM_XZ => 95 ;
use constant ZIP_CM_PPMD => 98 ; # Not Supported yet
+use constant ZIP_CM_AES => 99 ;
# General Purpose Flag
use constant ZIP_GP_FLAG_ENCRYPTED_MASK => (1 << 0) ;
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Constants.pm b/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Constants.pm
index 937101e4274..b0eb4cfcc33 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Constants.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Constants.pm
@@ -9,7 +9,7 @@ require Exporter;
our ($VERSION, @ISA, @EXPORT);
-$VERSION = '2.102';
+$VERSION = '2.204';
@ISA = qw(Exporter);
diff --git a/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Extra.pm b/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Extra.pm
index ab7446a4643..9767fe16940 100644
--- a/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Extra.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Compress/Zlib/Extra.pm
@@ -8,9 +8,9 @@ use bytes;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS);
-$VERSION = '2.102';
+$VERSION = '2.204';
-use IO::Compress::Gzip::Constants 2.101 ;
+use IO::Compress::Gzip::Constants 2.204 ;
sub ExtraFieldError
{
diff --git a/Master/tlpkg/tlperl/lib/IO/Dir.pm b/Master/tlpkg/tlperl/lib/IO/Dir.pm
index 3cfd5f3b480..72cbed35228 100644
--- a/Master/tlpkg/tlperl/lib/IO/Dir.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Dir.pm
@@ -18,7 +18,7 @@ use File::stat;
use File::Spec;
our @ISA = qw(Tie::Hash Exporter);
-our $VERSION = "1.46";
+our $VERSION = "1.52";
our @EXPORT_OK = qw(DIR_UNLINK);
@@ -153,7 +153,7 @@ IO::Dir - supply object methods for directory handles
=head1 SYNOPSIS
use IO::Dir;
- $d = IO::Dir->new(".");
+ my $d = IO::Dir->new(".");
if (defined $d) {
while (defined($_ = $d->read)) { something($_); }
$d->rewind;
@@ -161,7 +161,7 @@ IO::Dir - supply object methods for directory handles
undef $d;
}
- tie %dir, 'IO::Dir', ".";
+ tie my %dir, 'IO::Dir', ".";
foreach (keys %dir) {
print $_, " " , $dir{$_}->size,"\n";
}
@@ -236,7 +236,7 @@ L<File::stat>
=head1 AUTHOR
Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perlbug@perl.org>.
+bugs at L<https://github.com/Perl/perl5/issues>.
=head1 COPYRIGHT
diff --git a/Master/tlpkg/tlperl/lib/IO/File.pm b/Master/tlpkg/tlperl/lib/IO/File.pm
index e2accf7d2af..a3ff37af50c 100644
--- a/Master/tlpkg/tlperl/lib/IO/File.pm
+++ b/Master/tlpkg/tlperl/lib/IO/File.pm
@@ -10,29 +10,29 @@ IO::File - supply object methods for filehandles
use IO::File;
- $fh = IO::File->new();
+ my $fh = IO::File->new();
if ($fh->open("< file")) {
print <$fh>;
$fh->close;
}
- $fh = IO::File->new("> file");
+ my $fh = IO::File->new("> file");
if (defined $fh) {
print $fh "bar\n";
$fh->close;
}
- $fh = IO::File->new("file", "r");
+ my $fh = IO::File->new("file", "r");
if (defined $fh) {
print <$fh>;
undef $fh; # automatically closes the file
}
- $fh = IO::File->new("file", O_WRONLY|O_APPEND);
+ my $fh = IO::File->new("file", O_WRONLY|O_APPEND);
if (defined $fh) {
print $fh "corge\n";
- $pos = $fh->getpos;
+ my $pos = $fh->getpos;
$fh->setpos($pos);
undef $fh; # automatically closes the file
@@ -135,7 +135,7 @@ require Exporter;
our @ISA = qw(IO::Handle IO::Seekable Exporter);
-our $VERSION = "1.46";
+our $VERSION = "1.52";
our @EXPORT = @IO::Seekable::EXPORT;
diff --git a/Master/tlpkg/tlperl/lib/IO/Handle.pm b/Master/tlpkg/tlperl/lib/IO/Handle.pm
index 2010bb831ed..18fe7140c13 100644
--- a/Master/tlpkg/tlperl/lib/IO/Handle.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Handle.pm
@@ -8,20 +8,20 @@ IO::Handle - supply object methods for I/O handles
use IO::Handle;
- $io = IO::Handle->new();
+ my $io = IO::Handle->new();
if ($io->fdopen(fileno(STDIN),"r")) {
print $io->getline;
$io->close;
}
- $io = IO::Handle->new();
+ my $io = IO::Handle->new();
if ($io->fdopen(fileno(STDOUT),"w")) {
$io->print("Some text\n");
}
# setvbuf is not available by default on Perls 5.8.0 and later.
use IO::Handle '_IOLBF';
- $io->setvbuf($buffer_var, _IOLBF, 1024);
+ $io->setvbuf(my $buffer_var, _IOLBF, 1024);
undef $io; # automatically closes the file if it's open
@@ -234,7 +234,7 @@ the taint-clean flag failed. (eg invalid handle)
=head1 NOTE
An C<IO::Handle> object is a reference to a symbol/GLOB reference (see
-the C<Symbol> package). Some modules that
+the L<Symbol> package). Some modules that
inherit from C<IO::Handle> may want to keep object related variables
in the hash table part of the GLOB. In an attempt to prevent modules
trampling on each other I propose the that any such module should prefix
@@ -270,7 +270,7 @@ use IO (); # Load the XS module
require Exporter;
our @ISA = qw(Exporter);
-our $VERSION = "1.46";
+our $VERSION = "1.52";
our @EXPORT_OK = qw(
autoflush
diff --git a/Master/tlpkg/tlperl/lib/IO/Pipe.pm b/Master/tlpkg/tlperl/lib/IO/Pipe.pm
index 7b195ca6439..a99391edc4e 100644
--- a/Master/tlpkg/tlperl/lib/IO/Pipe.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Pipe.pm
@@ -13,7 +13,7 @@ use strict;
use Carp;
use Symbol;
-our $VERSION = "1.46";
+our $VERSION = "1.52";
sub new {
my $type = shift;
@@ -203,7 +203,7 @@ processes.
=item new ( [READER, WRITER] )
Creates an C<IO::Pipe>, which is a reference to a newly created symbol
-(see the C<Symbol> package). C<IO::Pipe::new> optionally takes two
+(see the L<Symbol> package). C<IO::Pipe::new> optionally takes two
arguments, which should be objects blessed into C<IO::Handle>, or a
subclass thereof. These two objects will be used for the system call
to C<pipe>. If no arguments are given then method C<handles> is called
@@ -245,7 +245,7 @@ L<IO::Handle>
=head1 AUTHOR
Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perlbug@perl.org>.
+bugs at L<https://github.com/Perl/perl5/issues>.
=head1 COPYRIGHT
diff --git a/Master/tlpkg/tlperl/lib/IO/Poll.pm b/Master/tlpkg/tlperl/lib/IO/Poll.pm
index 20f630bb736..091461f6d7a 100644
--- a/Master/tlpkg/tlperl/lib/IO/Poll.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Poll.pm
@@ -12,7 +12,7 @@ use IO::Handle;
use Exporter ();
our @ISA = qw(Exporter);
-our $VERSION = "1.46";
+our $VERSION = "1.52";
our @EXPORT = qw( POLLIN
POLLOUT
@@ -197,7 +197,7 @@ L<poll(2)>, L<IO::Handle>, L<IO::Select>
=head1 AUTHOR
Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perlbug@perl.org>.
+bugs at L<https://github.com/Perl/perl5/issues>.
=head1 COPYRIGHT
diff --git a/Master/tlpkg/tlperl/lib/IO/Seekable.pm b/Master/tlpkg/tlperl/lib/IO/Seekable.pm
index 5d44d7af070..c2a1b308b6c 100644
--- a/Master/tlpkg/tlperl/lib/IO/Seekable.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Seekable.pm
@@ -106,7 +106,7 @@ require Exporter;
our @EXPORT = qw(SEEK_SET SEEK_CUR SEEK_END);
our @ISA = qw(Exporter);
-our $VERSION = "1.46";
+our $VERSION = "1.52";
sub seek {
@_ == 3 or croak 'usage: $io->seek(POS, WHENCE)';
diff --git a/Master/tlpkg/tlperl/lib/IO/Select.pm b/Master/tlpkg/tlperl/lib/IO/Select.pm
index fe07f3b2e66..7eb99bd0eaa 100644
--- a/Master/tlpkg/tlperl/lib/IO/Select.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Select.pm
@@ -10,7 +10,7 @@ use strict;
use warnings::register;
require Exporter;
-our $VERSION = "1.46";
+our $VERSION = "1.52";
our @ISA = qw(Exporter); # This is only so we can do version checking
@@ -68,7 +68,7 @@ sub _fileno
# previously registered and has since been closed. ->remove still wants to
# know what fileno it had
foreach my $i ( FIRST_FD .. $#$self ) {
- return $i - FIRST_FD if $self->[$i] == $f;
+ return $i - FIRST_FD if defined $self->[$i] && $self->[$i] == $f;
}
return undef;
}
@@ -405,7 +405,7 @@ listening for more connections on a listen socket
=head1 AUTHOR
Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perlbug@perl.org>.
+bugs at L<https://github.com/Perl/perl5/issues>.
=head1 COPYRIGHT
diff --git a/Master/tlpkg/tlperl/lib/IO/Socket.pm b/Master/tlpkg/tlperl/lib/IO/Socket.pm
index b7cdf06d3a5..7c2540b35c4 100644
--- a/Master/tlpkg/tlperl/lib/IO/Socket.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Socket.pm
@@ -23,7 +23,7 @@ require IO::Socket::UNIX if ($^O ne 'epoc' && $^O ne 'symbian');
our @ISA = qw(IO::Handle);
-our $VERSION = "1.46";
+our $VERSION = "1.52";
our @EXPORT_OK = qw(sockatmark);
@@ -916,8 +916,8 @@ L<IO::Socket::IP>
=head1 AUTHOR
-Graham Barr. atmark() by Lincoln Stein. Currently maintained by the
-Perl Porters. Please report all bugs to <perlbug@perl.org>.
+Graham Barr. atmark() by Lincoln Stein. Currently maintained by the Perl 5
+Porters. Please report all bugs at L<https://github.com/Perl/perl5/issues>.
=head1 COPYRIGHT
diff --git a/Master/tlpkg/tlperl/lib/IO/Socket/INET.pm b/Master/tlpkg/tlperl/lib/IO/Socket/INET.pm
index 5b76c2e3f59..97d445043c4 100644
--- a/Master/tlpkg/tlperl/lib/IO/Socket/INET.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Socket/INET.pm
@@ -14,7 +14,7 @@ use Exporter;
use Errno;
our @ISA = qw(IO::Socket);
-our $VERSION = "1.46";
+our $VERSION = "1.52";
my $EINVAL = exists(&Errno::EINVAL) ? Errno::EINVAL() : 1;
@@ -330,7 +330,7 @@ inherits all the methods defined by L<IO::Socket>.
=item new ( [ARGS] )
Creates an C<IO::Socket::INET> object, which is a reference to a
-newly created symbol (see the C<Symbol> package). C<new>
+newly created symbol (see the L<Symbol> package). C<new>
optionally takes arguments, these arguments are in key-value pairs.
In addition to the key-value pairs accepted by L<IO::Socket>,
@@ -401,7 +401,7 @@ Examples:
$sock = IO::Socket::INET->new(
PeerPort => 9999,
PeerAddr => inet_ntoa(INADDR_BROADCAST),
- Proto => udp,
+ Proto => 'udp',
LocalAddr => 'localhost',
Broadcast => 1 )
or die "Can't bind : $IO::Socket::errstr\n";
@@ -460,7 +460,7 @@ L<Socket>, L<IO::Socket>
=head1 AUTHOR
Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perlbug@perl.org>.
+bugs at L<https://github.com/Perl/perl5/issues>.
=head1 COPYRIGHT
diff --git a/Master/tlpkg/tlperl/lib/IO/Socket/IP.pm b/Master/tlpkg/tlperl/lib/IO/Socket/IP.pm
index 3158ef55ab6..2601c716af4 100644
--- a/Master/tlpkg/tlperl/lib/IO/Socket/IP.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Socket/IP.pm
@@ -12,7 +12,8 @@ use warnings;
# $VERSION needs to be set before use base 'IO::Socket'
# - https://rt.cpan.org/Ticket/Display.html?id=92107
BEGIN {
- our $VERSION = '0.41';
+ our $VERSION = '0.41_01';
+ $VERSION = eval $VERSION;
}
use base qw( IO::Socket );
@@ -154,6 +155,12 @@ sub import
die "Cannot socket(PF_INET6) - $!";
if( setsockopt $testsock, IPPROTO_IPV6, IPV6_V6ONLY, 0 ) {
+ if ($^O eq "dragonfly") {
+ # dragonflybsd 6.4 lies about successfully turning this off
+ if (getsockopt $testsock, IPPROTO_IPV6, IPV6_V6ONLY) {
+ return $can_disable_v6only = 0;
+ }
+ }
return $can_disable_v6only = 1;
}
elsif( $! == EINVAL || $! == EOPNOTSUPP ) {
diff --git a/Master/tlpkg/tlperl/lib/IO/Socket/UNIX.pm b/Master/tlpkg/tlperl/lib/IO/Socket/UNIX.pm
index a93456c052a..89deec2620b 100644
--- a/Master/tlpkg/tlperl/lib/IO/Socket/UNIX.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Socket/UNIX.pm
@@ -11,7 +11,7 @@ use IO::Socket;
use Carp;
our @ISA = qw(IO::Socket);
-our $VERSION = "1.46";
+our $VERSION = "1.52";
IO::Socket::UNIX->register_domain( AF_UNIX );
@@ -111,7 +111,7 @@ inherits all the methods defined by L<IO::Socket>.
=item new ( [ARGS] )
Creates an C<IO::Socket::UNIX> object, which is a reference to a
-newly created symbol (see the C<Symbol> package). C<new>
+newly created symbol (see the L<Symbol> package). C<new>
optionally takes arguments, these arguments are in key-value pairs.
In addition to the key-value pairs accepted by L<IO::Socket>,
@@ -162,7 +162,7 @@ L<Socket>, L<IO::Socket>
=head1 AUTHOR
Graham Barr. Currently maintained by the Perl Porters. Please report all
-bugs to <perlbug@perl.org>.
+bugs at L<https://github.com/Perl/perl5/issues>.
=head1 COPYRIGHT
diff --git a/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Bunzip2.pm b/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Bunzip2.pm
index 29641251057..229f8fa4701 100644
--- a/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Bunzip2.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Bunzip2.pm
@@ -4,12 +4,12 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.101 qw(:Status);
+use IO::Compress::Base::Common 2.204 qw(:Status);
-use Compress::Raw::Bzip2 2.101 ;
+use Compress::Raw::Bzip2 2.204 ;
our ($VERSION, @ISA);
-$VERSION = '2.102';
+$VERSION = '2.204';
sub mkUncompObject
{
diff --git a/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Identity.pm b/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Identity.pm
index 4fedcae46af..bf64a79c9fc 100644
--- a/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Identity.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Identity.pm
@@ -4,14 +4,14 @@ use warnings;
use strict;
use bytes;
-use IO::Compress::Base::Common 2.101 qw(:Status);
+use IO::Compress::Base::Common 2.204 qw(:Status);
use IO::Compress::Zip::Constants ;
our ($VERSION);
-$VERSION = '2.102';
+$VERSION = '2.204';
-use Compress::Raw::Zlib 2.101 ();
+use Compress::Raw::Zlib 2.204 ();
sub mkUncompObject
{
diff --git a/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Inflate.pm b/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Inflate.pm
index 315b0c32ce5..7469c36a978 100644
--- a/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Inflate.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Uncompress/Adapter/Inflate.pm
@@ -4,11 +4,11 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.101 qw(:Status);
-use Compress::Raw::Zlib 2.101 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
+use IO::Compress::Base::Common 2.204 qw(:Status);
+use Compress::Raw::Zlib 2.204 qw(Z_OK Z_BUF_ERROR Z_STREAM_END Z_FINISH MAX_WBITS);
our ($VERSION);
-$VERSION = '2.102';
+$VERSION = '2.204';
diff --git a/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyInflate.pm b/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyInflate.pm
index 6de82bae878..5c542957e78 100644
--- a/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyInflate.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyInflate.pm
@@ -6,22 +6,22 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.101 qw(:Parse);
+use IO::Compress::Base::Common 2.204 qw(:Parse);
-use IO::Uncompress::Adapter::Inflate 2.101 ();
+use IO::Uncompress::Adapter::Inflate 2.204 ();
-use IO::Uncompress::Base 2.101 ;
-use IO::Uncompress::Gunzip 2.101 ;
-use IO::Uncompress::Inflate 2.101 ;
-use IO::Uncompress::RawInflate 2.101 ;
-use IO::Uncompress::Unzip 2.101 ;
+use IO::Uncompress::Base 2.204 ;
+use IO::Uncompress::Gunzip 2.204 ;
+use IO::Uncompress::Inflate 2.204 ;
+use IO::Uncompress::RawInflate 2.204 ;
+use IO::Uncompress::Unzip 2.204 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyInflateError);
-$VERSION = '2.102';
+$VERSION = '2.204';
$AnyInflateError = '';
@ISA = qw(IO::Uncompress::Base Exporter);
@@ -976,9 +976,9 @@ L<Archive::Tar|Archive::Tar>,
L<IO::Zlib|IO::Zlib>
For RFC 1950, 1951 and 1952 see
-L<http://www.faqs.org/rfcs/rfc1950.html>,
-L<http://www.faqs.org/rfcs/rfc1951.html> and
-L<http://www.faqs.org/rfcs/rfc1952.html>
+L<https://datatracker.ietf.org/doc/html/rfc1950>,
+L<https://datatracker.ietf.org/doc/html/rfc1951> and
+L<https://datatracker.ietf.org/doc/html/rfc1952>
The I<zlib> compression library was written by Jean-loup Gailly
C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
@@ -986,6 +986,9 @@ C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
The primary site for the I<zlib> compression library is
L<http://www.zlib.org>.
+The primary site for the I<zlib-ng> compression library is
+L<https://github.com/zlib-ng/zlib-ng>.
+
The primary site for gzip is L<http://www.gzip.org>.
=head1 AUTHOR
@@ -998,7 +1001,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyUncompress.pm b/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyUncompress.pm
index c922220ac2c..2e2d83c0f9f 100644
--- a/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyUncompress.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Uncompress/AnyUncompress.pm
@@ -4,16 +4,16 @@ use strict;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.101 ();
+use IO::Compress::Base::Common 2.204 ();
-use IO::Uncompress::Base 2.101 ;
+use IO::Uncompress::Base 2.204 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyUncompressError);
-$VERSION = '2.102';
+$VERSION = '2.204';
$AnyUncompressError = '';
@ISA = qw(IO::Uncompress::Base Exporter);
@@ -33,26 +33,26 @@ BEGIN
# Don't trigger any __DIE__ Hooks.
local $SIG{__DIE__};
- eval ' use IO::Uncompress::Adapter::Inflate 2.101 ;';
- eval ' use IO::Uncompress::Adapter::Bunzip2 2.101 ;';
- eval ' use IO::Uncompress::Adapter::LZO 2.101 ;';
- eval ' use IO::Uncompress::Adapter::Lzf 2.101 ;';
- eval ' use IO::Uncompress::Adapter::UnLzma 2.101 ;';
- eval ' use IO::Uncompress::Adapter::UnXz 2.101 ;';
- eval ' use IO::Uncompress::Adapter::UnZstd 2.101 ;';
- eval ' use IO::Uncompress::Adapter::UnLzip 2.101 ;';
-
- eval ' use IO::Uncompress::Bunzip2 2.101 ;';
- eval ' use IO::Uncompress::UnLzop 2.101 ;';
- eval ' use IO::Uncompress::Gunzip 2.101 ;';
- eval ' use IO::Uncompress::Inflate 2.101 ;';
- eval ' use IO::Uncompress::RawInflate 2.101 ;';
- eval ' use IO::Uncompress::Unzip 2.101 ;';
- eval ' use IO::Uncompress::UnLzf 2.101 ;';
- eval ' use IO::Uncompress::UnLzma 2.101 ;';
- eval ' use IO::Uncompress::UnXz 2.101 ;';
- eval ' use IO::Uncompress::UnZstd 2.101 ;';
- eval ' use IO::Uncompress::UnLzip 2.101 ;';
+ eval ' use IO::Uncompress::Adapter::Inflate 2.204 ;';
+ eval ' use IO::Uncompress::Adapter::Bunzip2 2.204 ;';
+ eval ' use IO::Uncompress::Adapter::LZO 2.204 ;';
+ eval ' use IO::Uncompress::Adapter::Lzf 2.204 ;';
+ eval ' use IO::Uncompress::Adapter::UnLzma 2.204 ;';
+ eval ' use IO::Uncompress::Adapter::UnXz 2.204 ;';
+ eval ' use IO::Uncompress::Adapter::UnZstd 2.204 ;';
+ eval ' use IO::Uncompress::Adapter::UnLzip 2.204 ;';
+
+ eval ' use IO::Uncompress::Bunzip2 2.204 ;';
+ eval ' use IO::Uncompress::UnLzop 2.204 ;';
+ eval ' use IO::Uncompress::Gunzip 2.204 ;';
+ eval ' use IO::Uncompress::Inflate 2.204 ;';
+ eval ' use IO::Uncompress::RawInflate 2.204 ;';
+ eval ' use IO::Uncompress::Unzip 2.204 ;';
+ eval ' use IO::Uncompress::UnLzf 2.204 ;';
+ eval ' use IO::Uncompress::UnLzma 2.204 ;';
+ eval ' use IO::Uncompress::UnXz 2.204 ;';
+ eval ' use IO::Uncompress::UnZstd 2.204 ;';
+ eval ' use IO::Uncompress::UnLzip 2.204 ;';
}
@@ -1077,7 +1077,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Uncompress/Base.pm b/Master/tlpkg/tlperl/lib/IO/Uncompress/Base.pm
index 31a34eb3f05..2ad0a769c02 100644
--- a/Master/tlpkg/tlperl/lib/IO/Uncompress/Base.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Uncompress/Base.pm
@@ -9,12 +9,12 @@ our (@ISA, $VERSION, @EXPORT_OK, %EXPORT_TAGS);
@ISA = qw(IO::File Exporter);
-$VERSION = '2.102';
+$VERSION = '2.204';
use constant G_EOF => 0 ;
use constant G_ERR => -1 ;
-use IO::Compress::Base::Common 2.101 ;
+use IO::Compress::Base::Common 2.204 ;
use IO::File ;
use Symbol;
@@ -1006,6 +1006,11 @@ sub nextStream
{
my $self = shift ;
+ # An uncompressed file cannot have a next stream, so
+ # return immediately.
+ return 0
+ if *$self->{Plain} ;
+
my $status = $self->gotoNextStream();
$status == 1
or return $status ;
@@ -1562,7 +1567,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Uncompress/Bunzip2.pm b/Master/tlpkg/tlperl/lib/IO/Uncompress/Bunzip2.pm
index 38fff645a3f..d234c464ff2 100644
--- a/Master/tlpkg/tlperl/lib/IO/Uncompress/Bunzip2.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Uncompress/Bunzip2.pm
@@ -4,15 +4,15 @@ use strict ;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.101 qw(:Status );
+use IO::Compress::Base::Common 2.204 qw(:Status );
-use IO::Uncompress::Base 2.101 ;
-use IO::Uncompress::Adapter::Bunzip2 2.101 ;
+use IO::Uncompress::Base 2.204 ;
+use IO::Uncompress::Adapter::Bunzip2 2.204 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $Bunzip2Error);
-$VERSION = '2.102';
+$VERSION = '2.204';
$Bunzip2Error = '';
@ISA = qw(IO::Uncompress::Base Exporter);
@@ -130,7 +130,9 @@ sub chkTrailer
sub isBzip2Magic
{
my $buffer = shift ;
- return $buffer =~ /^BZh\d$/;
+
+ # ASCII: B Z h 0 9
+ return $buffer =~ qr/^\x42\x5A\x68[\x30-\x39]$/;
}
1 ;
@@ -907,7 +909,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Uncompress/Gunzip.pm b/Master/tlpkg/tlperl/lib/IO/Uncompress/Gunzip.pm
index 54757132a62..eeadb214ff8 100644
--- a/Master/tlpkg/tlperl/lib/IO/Uncompress/Gunzip.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Uncompress/Gunzip.pm
@@ -9,12 +9,12 @@ use strict ;
use warnings;
use bytes;
-use IO::Uncompress::RawInflate 2.101 ;
+use IO::Uncompress::RawInflate 2.204 ;
-use Compress::Raw::Zlib 2.101 () ;
-use IO::Compress::Base::Common 2.101 qw(:Status );
-use IO::Compress::Gzip::Constants 2.101 ;
-use IO::Compress::Zlib::Extra 2.101 ;
+use Compress::Raw::Zlib 2.204 () ;
+use IO::Compress::Base::Common 2.204 qw(:Status );
+use IO::Compress::Gzip::Constants 2.204 ;
+use IO::Compress::Zlib::Extra 2.204 ;
require Exporter ;
@@ -28,7 +28,7 @@ Exporter::export_ok_tags('all');
$GunzipError = '';
-$VERSION = '2.102';
+$VERSION = '2.204';
sub new
{
@@ -1100,9 +1100,9 @@ L<Archive::Tar|Archive::Tar>,
L<IO::Zlib|IO::Zlib>
For RFC 1950, 1951 and 1952 see
-L<http://www.faqs.org/rfcs/rfc1950.html>,
-L<http://www.faqs.org/rfcs/rfc1951.html> and
-L<http://www.faqs.org/rfcs/rfc1952.html>
+L<https://datatracker.ietf.org/doc/html/rfc1950>,
+L<https://datatracker.ietf.org/doc/html/rfc1951> and
+L<https://datatracker.ietf.org/doc/html/rfc1952>
The I<zlib> compression library was written by Jean-loup Gailly
C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
@@ -1110,6 +1110,9 @@ C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
The primary site for the I<zlib> compression library is
L<http://www.zlib.org>.
+The primary site for the I<zlib-ng> compression library is
+L<https://github.com/zlib-ng/zlib-ng>.
+
The primary site for gzip is L<http://www.gzip.org>.
=head1 AUTHOR
@@ -1122,7 +1125,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Uncompress/Inflate.pm b/Master/tlpkg/tlperl/lib/IO/Uncompress/Inflate.pm
index 26d2e38acaf..1573ba3f42d 100644
--- a/Master/tlpkg/tlperl/lib/IO/Uncompress/Inflate.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Uncompress/Inflate.pm
@@ -5,15 +5,15 @@ use strict ;
use warnings;
use bytes;
-use IO::Compress::Base::Common 2.101 qw(:Status );
-use IO::Compress::Zlib::Constants 2.101 ;
+use IO::Compress::Base::Common 2.204 qw(:Status );
+use IO::Compress::Zlib::Constants 2.204 ;
-use IO::Uncompress::RawInflate 2.101 ;
+use IO::Uncompress::RawInflate 2.204 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $InflateError);
-$VERSION = '2.102';
+$VERSION = '2.204';
$InflateError = '';
@ISA = qw(IO::Uncompress::RawInflate Exporter);
@@ -972,9 +972,9 @@ L<Archive::Tar|Archive::Tar>,
L<IO::Zlib|IO::Zlib>
For RFC 1950, 1951 and 1952 see
-L<http://www.faqs.org/rfcs/rfc1950.html>,
-L<http://www.faqs.org/rfcs/rfc1951.html> and
-L<http://www.faqs.org/rfcs/rfc1952.html>
+L<https://datatracker.ietf.org/doc/html/rfc1950>,
+L<https://datatracker.ietf.org/doc/html/rfc1951> and
+L<https://datatracker.ietf.org/doc/html/rfc1952>
The I<zlib> compression library was written by Jean-loup Gailly
C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
@@ -982,6 +982,9 @@ C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
The primary site for the I<zlib> compression library is
L<http://www.zlib.org>.
+The primary site for the I<zlib-ng> compression library is
+L<https://github.com/zlib-ng/zlib-ng>.
+
The primary site for gzip is L<http://www.gzip.org>.
=head1 AUTHOR
@@ -994,7 +997,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Uncompress/RawInflate.pm b/Master/tlpkg/tlperl/lib/IO/Uncompress/RawInflate.pm
index 5d7d2e02588..80ff3f198e7 100644
--- a/Master/tlpkg/tlperl/lib/IO/Uncompress/RawInflate.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Uncompress/RawInflate.pm
@@ -5,16 +5,16 @@ use strict ;
use warnings;
use bytes;
-use Compress::Raw::Zlib 2.101 ;
-use IO::Compress::Base::Common 2.101 qw(:Status );
+use Compress::Raw::Zlib 2.204 ;
+use IO::Compress::Base::Common 2.204 qw(:Status );
-use IO::Uncompress::Base 2.101 ;
-use IO::Uncompress::Adapter::Inflate 2.101 ;
+use IO::Uncompress::Base 2.204 ;
+use IO::Uncompress::Adapter::Inflate 2.204 ;
require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, %DEFLATE_CONSTANTS, $RawInflateError);
-$VERSION = '2.102';
+$VERSION = '2.204';
$RawInflateError = '';
@ISA = qw(IO::Uncompress::Base Exporter);
@@ -1100,9 +1100,9 @@ L<Archive::Tar|Archive::Tar>,
L<IO::Zlib|IO::Zlib>
For RFC 1950, 1951 and 1952 see
-L<http://www.faqs.org/rfcs/rfc1950.html>,
-L<http://www.faqs.org/rfcs/rfc1951.html> and
-L<http://www.faqs.org/rfcs/rfc1952.html>
+L<https://datatracker.ietf.org/doc/html/rfc1950>,
+L<https://datatracker.ietf.org/doc/html/rfc1951> and
+L<https://datatracker.ietf.org/doc/html/rfc1952>
The I<zlib> compression library was written by Jean-loup Gailly
C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
@@ -1110,6 +1110,9 @@ C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
The primary site for the I<zlib> compression library is
L<http://www.zlib.org>.
+The primary site for the I<zlib-ng> compression library is
+L<https://github.com/zlib-ng/zlib-ng>.
+
The primary site for gzip is L<http://www.gzip.org>.
=head1 AUTHOR
@@ -1122,7 +1125,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Uncompress/Unzip.pm b/Master/tlpkg/tlperl/lib/IO/Uncompress/Unzip.pm
index 98fcea71a99..f1d806b4ac2 100644
--- a/Master/tlpkg/tlperl/lib/IO/Uncompress/Unzip.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Uncompress/Unzip.pm
@@ -9,14 +9,14 @@ use warnings;
use bytes;
use IO::File;
-use IO::Uncompress::RawInflate 2.101 ;
-use IO::Compress::Base::Common 2.101 qw(:Status );
-use IO::Uncompress::Adapter::Inflate 2.101 ;
-use IO::Uncompress::Adapter::Identity 2.101 ;
-use IO::Compress::Zlib::Extra 2.101 ;
-use IO::Compress::Zip::Constants 2.101 ;
+use IO::Uncompress::RawInflate 2.204 ;
+use IO::Compress::Base::Common 2.204 qw(:Status );
+use IO::Uncompress::Adapter::Inflate 2.204 ;
+use IO::Uncompress::Adapter::Identity 2.204 ;
+use IO::Compress::Zlib::Extra 2.204 ;
+use IO::Compress::Zip::Constants 2.204 ;
-use Compress::Raw::Zlib 2.101 () ;
+use Compress::Raw::Zlib 2.204 () ;
BEGIN
{
@@ -38,11 +38,11 @@ require Exporter ;
our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $UnzipError, %headerLookup);
-$VERSION = '2.102';
+$VERSION = '2.204';
$UnzipError = '';
@ISA = qw(IO::Uncompress::RawInflate Exporter);
-@EXPORT_OK = qw( $UnzipError unzip );
+@EXPORT_OK = qw($UnzipError unzip );
%EXPORT_TAGS = %IO::Uncompress::RawInflate::EXPORT_TAGS ;
push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ;
Exporter::export_ok_tags('all');
@@ -812,12 +812,11 @@ sub _dosToUnixTime
my $min = ( ( $dt >> 5 ) & 0x3f );
my $sec = ( ( $dt << 1 ) & 0x3e );
-
- use POSIX 'mktime';
-
- my $time_t = mktime( $sec, $min, $hour, $mday, $mon, $year, 0, 0, -1 );
+ use Time::Local ;
+ my $time_t = Time::Local::timelocal( $sec, $min, $hour, $mday, $mon, $year);
return 0 if ! defined $time_t;
- return $time_t;
+ return $time_t;
+
}
#sub scanCentralDirectory
@@ -1943,9 +1942,9 @@ L<Archive::Tar|Archive::Tar>,
L<IO::Zlib|IO::Zlib>
For RFC 1950, 1951 and 1952 see
-L<http://www.faqs.org/rfcs/rfc1950.html>,
-L<http://www.faqs.org/rfcs/rfc1951.html> and
-L<http://www.faqs.org/rfcs/rfc1952.html>
+L<https://datatracker.ietf.org/doc/html/rfc1950>,
+L<https://datatracker.ietf.org/doc/html/rfc1951> and
+L<https://datatracker.ietf.org/doc/html/rfc1952>
The I<zlib> compression library was written by Jean-loup Gailly
C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
@@ -1953,6 +1952,9 @@ C<gzip@prep.ai.mit.edu> and Mark Adler C<madler@alumni.caltech.edu>.
The primary site for the I<zlib> compression library is
L<http://www.zlib.org>.
+The primary site for the I<zlib-ng> compression library is
+L<https://github.com/zlib-ng/zlib-ng>.
+
The primary site for gzip is L<http://www.gzip.org>.
=head1 AUTHOR
@@ -1965,7 +1967,7 @@ See the Changes file.
=head1 COPYRIGHT AND LICENSE
-Copyright (c) 2005-2021 Paul Marquess. All rights reserved.
+Copyright (c) 2005-2023 Paul Marquess. All rights reserved.
This program is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/IO/Zlib.pm b/Master/tlpkg/tlperl/lib/IO/Zlib.pm
index 84aa5e428fd..2c2e869ff86 100644
--- a/Master/tlpkg/tlperl/lib/IO/Zlib.pm
+++ b/Master/tlpkg/tlperl/lib/IO/Zlib.pm
@@ -291,7 +291,7 @@ use Fcntl qw(SEEK_SET);
use Symbol;
use Tie::Handle;
-our $VERSION = "1.11";
+our $VERSION = "1.14";
our $AUTOLOAD;
our @ISA = qw(Tie::Handle);
diff --git a/Master/tlpkg/tlperl/lib/IPC/Open2.pm b/Master/tlpkg/tlperl/lib/IPC/Open2.pm
index cd330507990..4b8a43a44f4 100644
--- a/Master/tlpkg/tlperl/lib/IPC/Open2.pm
+++ b/Master/tlpkg/tlperl/lib/IPC/Open2.pm
@@ -1,14 +1,12 @@
package IPC::Open2;
use strict;
-our ($VERSION, @ISA, @EXPORT);
-require 5.000;
-require Exporter;
+require 5.006;
+use Exporter 'import';
-$VERSION = 1.05;
-@ISA = qw(Exporter);
-@EXPORT = qw(open2);
+our $VERSION = 1.06;
+our @EXPORT = qw(open2);
=head1 NAME
diff --git a/Master/tlpkg/tlperl/lib/IPC/Open3.pm b/Master/tlpkg/tlperl/lib/IPC/Open3.pm
index ce39d78f1ea..b74609db62f 100644
--- a/Master/tlpkg/tlperl/lib/IPC/Open3.pm
+++ b/Master/tlpkg/tlperl/lib/IPC/Open3.pm
@@ -2,16 +2,14 @@ package IPC::Open3;
use strict;
no strict 'refs'; # because users pass me bareword filehandles
-our ($VERSION, @ISA, @EXPORT);
-require Exporter;
+use Exporter 'import';
use Carp;
use Symbol qw(gensym qualify);
-$VERSION = '1.21';
-@ISA = qw(Exporter);
-@EXPORT = qw(open3);
+our $VERSION = '1.22';
+our @EXPORT = qw(open3);
=head1 NAME
diff --git a/Master/tlpkg/tlperl/lib/JSON/PP.pm b/Master/tlpkg/tlperl/lib/JSON/PP.pm
index 2475fe1e875..fc8fcbc8f04 100644
--- a/Master/tlpkg/tlperl/lib/JSON/PP.pm
+++ b/Master/tlpkg/tlperl/lib/JSON/PP.pm
@@ -2,21 +2,22 @@ package JSON::PP;
# JSON-2.0
-use 5.005;
+use 5.008;
use strict;
use Exporter ();
-BEGIN { @JSON::PP::ISA = ('Exporter') }
+BEGIN { our @ISA = ('Exporter') }
use overload ();
use JSON::PP::Boolean;
use Carp ();
+use Scalar::Util qw(blessed reftype refaddr);
#use Devel::Peek;
-$JSON::PP::VERSION = '4.06';
+our $VERSION = '4.16';
-@JSON::PP::EXPORT = qw(encode_json decode_json from_json to_json);
+our @EXPORT = qw(encode_json decode_json from_json to_json);
# instead of hash-access, i tried index-access for speed.
# but this method is not faster than what i expected. so it will be changed.
@@ -44,8 +45,19 @@ use constant P_AS_NONBLESSED => 17;
use constant P_ALLOW_UNKNOWN => 18;
use constant P_ALLOW_TAGS => 19;
-use constant OLD_PERL => $] < 5.008 ? 1 : 0;
use constant USE_B => $ENV{PERL_JSON_PP_USE_B} || 0;
+use constant CORE_BOOL => defined &builtin::is_bool;
+
+my $invalid_char_re;
+
+BEGIN {
+ $invalid_char_re = "[";
+ for my $i (0 .. 0x01F, 0x22, 0x5c) { # '/' is ok
+ $invalid_char_re .= quotemeta chr utf8::unicode_to_native($i);
+ }
+
+ $invalid_char_re = qr/$invalid_char_re]/;
+}
BEGIN {
if (USE_B) {
@@ -64,14 +76,6 @@ BEGIN {
allow_barekey escape_slash as_nonblessed
);
- # Perl version check, Unicode handling is enabled?
- # Helper module sets @JSON::PP::_properties.
- if ( OLD_PERL ) {
- my $helper = $] >= 5.006 ? 'JSON::PP::Compat5006' : 'JSON::PP::Compat5005';
- eval qq| require $helper |;
- if ($@) { Carp::croak $@; }
- }
-
for my $name (@xs_compati_bit_properties, @pp_bit_properties) {
my $property_id = 'P_' . uc($name);
@@ -201,13 +205,54 @@ sub boolean_values {
my ($false, $true) = @_;
$self->{false} = $false;
$self->{true} = $true;
+ if (CORE_BOOL) {
+ BEGIN { CORE_BOOL and warnings->unimport(qw(experimental::builtin)) }
+ if (builtin::is_bool($true) && builtin::is_bool($false) && $true && !$false) {
+ $self->{core_bools} = !!1;
+ }
+ else {
+ delete $self->{core_bools};
+ }
+ }
} else {
delete $self->{false};
delete $self->{true};
+ delete $self->{core_bools};
}
return $self;
}
+sub core_bools {
+ my $self = shift;
+ my $core_bools = defined $_[0] ? $_[0] : 1;
+ if ($core_bools) {
+ $self->{true} = !!1;
+ $self->{false} = !!0;
+ $self->{core_bools} = !!1;
+ }
+ else {
+ $self->{true} = $JSON::PP::true;
+ $self->{false} = $JSON::PP::false;
+ $self->{core_bools} = !!0;
+ }
+ return $self;
+}
+
+sub get_core_bools {
+ my $self = shift;
+ return !!$self->{core_bools};
+}
+
+sub unblessed_bool {
+ my $self = shift;
+ return $self->core_bools(@_);
+}
+
+sub get_unblessed_bool {
+ my $self = shift;
+ return $self->get_core_bools(@_);
+}
+
sub get_boolean_values {
my $self = shift;
if (exists $self->{true} and exists $self->{false}) {
@@ -326,14 +371,6 @@ sub allow_bigint {
$str .= "\n" if ( $indent ); # JSON::XS 2.26 compatible
- unless ($ascii or $latin1 or $utf8) {
- utf8::upgrade($str);
- }
-
- if ($props->[ P_SHRINK ]) {
- utf8::downgrade($str, 1);
- }
-
return $str;
}
@@ -412,7 +449,6 @@ sub allow_bigint {
my $del = ($space_before ? ' ' : '') . ':' . ($space_after ? ' ' : '');
for my $k ( _sort( $obj ) ) {
- if ( OLD_PERL ) { utf8::decode($k) } # key for Perl 5.6 / be optimized
push @res, $self->string_to_json( $k )
. $del
. ( ref $obj->{$k} ? $self->object_to_json( $obj->{$k} ) : $self->value_to_json( $obj->{$k} ) );
@@ -476,7 +512,11 @@ sub allow_bigint {
my $type = ref($value);
if (!$type) {
- if (_looks_like_number($value)) {
+ BEGIN { CORE_BOOL and warnings->unimport('experimental::builtin') }
+ if (CORE_BOOL && builtin::is_bool($value)) {
+ return $value ? 'true' : 'false';
+ }
+ elsif (_looks_like_number($value)) {
return $value;
}
return $self->string_to_json($value);
@@ -527,16 +567,18 @@ sub allow_bigint {
sub string_to_json {
my ($self, $arg) = @_;
- $arg =~ s/([\x22\x5c\n\r\t\f\b])/$esc{$1}/g;
+ $arg =~ s/(["\\\n\r\t\f\b])/$esc{$1}/g;
$arg =~ s/\//\\\//g if ($escape_slash);
- $arg =~ s/([\x00-\x08\x0b\x0e-\x1f])/'\\u00' . unpack('H2', $1)/eg;
+
+ # On ASCII platforms, matches [\x00-\x08\x0b\x0e-\x1f]
+ $arg =~ s/([^\n\t\c?[:^cntrl:][:^ascii:]])/'\\u00' . unpack('H2', $1)/eg;
if ($ascii) {
- $arg = JSON_PP_encode_ascii($arg);
+ $arg = _encode_ascii($arg);
}
if ($latin1) {
- $arg = JSON_PP_encode_latin1($arg);
+ $arg = _encode_latin1($arg);
}
if ($utf8) {
@@ -604,7 +646,7 @@ sub allow_bigint {
sub _encode_ascii {
join('',
map {
- $_ <= 127 ?
+ chr($_) =~ /[[:ascii:]]/ ?
chr($_) :
$_ <= 65535 ?
sprintf('\u%04x', $_) : sprintf('\u%x\u%x', _encode_surrogates($_));
@@ -658,11 +700,11 @@ BEGIN {
{ # PARSE
my %escapes = ( # by Jeremy Muhlich <jmuhlich [at] bitflood.org>
- b => "\x8",
- t => "\x9",
- n => "\xA",
- f => "\xC",
- r => "\xD",
+ b => "\b",
+ t => "\t",
+ n => "\n",
+ f => "\f",
+ r => "\r",
'\\' => '\\',
'"' => '"',
'/' => '/',
@@ -736,7 +778,6 @@ BEGIN {
}
}
else {
- utf8::upgrade( $text );
utf8::encode( $text );
}
@@ -845,7 +886,7 @@ BEGIN {
decode_error("missing high surrogate character in surrogate pair");
}
$is_utf8 = 1;
- $s .= JSON_PP_decode_surrogates($utf16, $u) || next;
+ $s .= _decode_surrogates($utf16, $u) || next;
$utf16 = undef;
}
else {
@@ -853,9 +894,10 @@ BEGIN {
decode_error("surrogate pair expected");
}
- if ( ( my $hex = hex( $u ) ) > 127 ) {
+ my $hex = hex( $u );
+ if ( chr $u =~ /[[:^ascii:]]/ ) {
$is_utf8 = 1;
- $s .= JSON_PP_decode_unicode($u) || next;
+ $s .= _decode_unicode($u) || next;
}
else {
$s .= chr $hex;
@@ -873,7 +915,7 @@ BEGIN {
}
else{
- if ( ord $ch > 127 ) {
+ if ( $ch =~ /[[:^ascii:]]/ ) {
unless( $ch = is_valid_utf8($ch) ) {
$at -= 1;
decode_error("malformed UTF-8 character in JSON string");
@@ -886,10 +928,12 @@ BEGIN {
}
if (!$loose) {
- if ($ch =~ /[\x00-\x1f\x22\x5c]/) { # '/' ok
+ if ($ch =~ $invalid_char_re) { # '/' ok
if (!$relaxed or $ch ne "\t") {
$at--;
- decode_error('invalid character encountered while parsing JSON string');
+ decode_error(sprintf "invalid character 0x%X"
+ . " encountered while parsing JSON string",
+ ord $ch);
}
}
}
@@ -1102,7 +1146,7 @@ BEGIN {
sub bareKey { # doesn't strictly follow Standard ECMA-262 3rd Edition
my $key;
- while($ch =~ /[^\x00-\x23\x25-\x2F\x3A-\x40\x5B-\x5E\x60\x7B-\x7F]/){
+ while($ch =~ /[\$\w[:^ascii:]]/){
$key .= $ch;
next_chr();
}
@@ -1235,31 +1279,55 @@ BEGIN {
return $is_dec ? $v/1.0 : 0+$v;
}
+ # Compute how many bytes are in the longest legal official Unicode
+ # character
+ my $max_unicode_length = do {
+ no warnings 'utf8';
+ chr 0x10FFFF;
+ };
+ utf8::encode($max_unicode_length);
+ $max_unicode_length = length $max_unicode_length;
sub is_valid_utf8 {
- $utf8_len = $_[0] =~ /[\x00-\x7F]/ ? 1
- : $_[0] =~ /[\xC2-\xDF]/ ? 2
- : $_[0] =~ /[\xE0-\xEF]/ ? 3
- : $_[0] =~ /[\xF0-\xF4]/ ? 4
- : 0
- ;
-
- return unless $utf8_len;
-
- my $is_valid_utf8 = substr($text, $at - 1, $utf8_len);
-
- return ( $is_valid_utf8 =~ /^(?:
- [\x00-\x7F]
- |[\xC2-\xDF][\x80-\xBF]
- |[\xE0][\xA0-\xBF][\x80-\xBF]
- |[\xE1-\xEC][\x80-\xBF][\x80-\xBF]
- |[\xED][\x80-\x9F][\x80-\xBF]
- |[\xEE-\xEF][\x80-\xBF][\x80-\xBF]
- |[\xF0][\x90-\xBF][\x80-\xBF][\x80-\xBF]
- |[\xF1-\xF3][\x80-\xBF][\x80-\xBF][\x80-\xBF]
- |[\xF4][\x80-\x8F][\x80-\xBF][\x80-\xBF]
- )$/x ) ? $is_valid_utf8 : '';
+ # Returns undef (setting $utf8_len to 0) unless the next bytes in $text
+ # comprise a well-formed UTF-8 encoded character, in which case,
+ # return those bytes, setting $utf8_len to their count.
+
+ my $start_point = substr($text, $at - 1);
+
+ # Look no further than the maximum number of bytes in a single
+ # character
+ my $limit = $max_unicode_length;
+ $limit = length($start_point) if $limit > length($start_point);
+
+ # Find the number of bytes comprising the first character in $text
+ # (without having to know the details of its internal representation).
+ # This loop will iterate just once on well-formed input.
+ while ($limit > 0) { # Until we succeed or exhaust the input
+ my $copy = substr($start_point, 0, $limit);
+
+ # decode() will return true if all bytes are valid; false
+ # if any aren't.
+ if (utf8::decode($copy)) {
+
+ # Is valid: get the first character, convert back to bytes,
+ # and return those bytes.
+ $copy = substr($copy, 0, 1);
+ utf8::encode($copy);
+ $utf8_len = length $copy;
+ return substr($start_point, 0, $utf8_len);
+ }
+
+ # If it didn't work, it could be that there is a full legal character
+ # followed by a partial or malformed one. Narrow the window and
+ # try again.
+ $limit--;
+ }
+
+ # Failed to find a legal UTF-8 character.
+ $utf8_len = 0;
+ return;
}
@@ -1270,22 +1338,15 @@ BEGIN {
my $mess = '';
my $type = 'U*';
- if ( OLD_PERL ) {
- my $type = $] < 5.006 ? 'C*'
- : utf8::is_utf8( $str ) ? 'U*' # 5.6
- : 'C*'
- ;
- }
-
for my $c ( unpack( $type, $str ) ) { # emulate pv_uni_display() ?
- $mess .= $c == 0x07 ? '\a'
- : $c == 0x09 ? '\t'
- : $c == 0x0a ? '\n'
- : $c == 0x0d ? '\r'
- : $c == 0x0c ? '\f'
- : $c < 0x20 ? sprintf('\x{%x}', $c)
- : $c == 0x5c ? '\\\\'
- : $c < 0x80 ? chr($c)
+ my $chr_c = chr($c);
+ $mess .= $chr_c eq '\\' ? '\\\\'
+ : $chr_c =~ /[[:print:]]/ ? $chr_c
+ : $chr_c eq '\a' ? '\a'
+ : $chr_c eq '\t' ? '\t'
+ : $chr_c eq '\n' ? '\n'
+ : $chr_c eq '\r' ? '\r'
+ : $chr_c eq '\f' ? '\f'
: sprintf('\x{%x}', $c)
;
if ( length $mess >= 20 ) {
@@ -1364,136 +1425,54 @@ sub _decode_unicode {
return $un;
}
-#
-# Setup for various Perl versions (the code from JSON::PP58)
-#
-
-BEGIN {
-
- unless ( defined &utf8::is_utf8 ) {
- require Encode;
- *utf8::is_utf8 = *Encode::is_utf8;
- }
-
- if ( !OLD_PERL ) {
- *JSON::PP::JSON_PP_encode_ascii = \&_encode_ascii;
- *JSON::PP::JSON_PP_encode_latin1 = \&_encode_latin1;
- *JSON::PP::JSON_PP_decode_surrogates = \&_decode_surrogates;
- *JSON::PP::JSON_PP_decode_unicode = \&_decode_unicode;
-
- if ($] < 5.008003) { # join() in 5.8.0 - 5.8.2 is broken.
- package JSON::PP;
- require subs;
- subs->import('join');
- eval q|
- sub join {
- return '' if (@_ < 2);
- my $j = shift;
- my $str = shift;
- for (@_) { $str .= $j . $_; }
- return $str;
- }
- |;
- }
- }
+sub incr_parse {
+ local $Carp::CarpLevel = 1;
+ ( $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new )->incr_parse( @_ );
+}
- sub JSON::PP::incr_parse {
- local $Carp::CarpLevel = 1;
- ( $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new )->incr_parse( @_ );
- }
+sub incr_skip {
+ ( $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new )->incr_skip;
+}
- sub JSON::PP::incr_skip {
- ( $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new )->incr_skip;
- }
+sub incr_reset {
+ ( $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new )->incr_reset;
+}
+sub incr_text : lvalue {
+ $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new;
- sub JSON::PP::incr_reset {
- ( $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new )->incr_reset;
+ if ( $_[0]->{_incr_parser}->{incr_pos} ) {
+ Carp::croak("incr_text cannot be called when the incremental parser already started parsing");
}
-
- eval q{
- sub JSON::PP::incr_text : lvalue {
- $_[0]->{_incr_parser} ||= JSON::PP::IncrParser->new;
-
- if ( $_[0]->{_incr_parser}->{incr_pos} ) {
- Carp::croak("incr_text cannot be called when the incremental parser already started parsing");
- }
- $_[0]->{_incr_parser}->{incr_text};
- }
- } if ( $] >= 5.006 );
-
-} # Setup for various Perl versions (the code from JSON::PP58)
+ $_[0]->{_incr_parser}->{incr_text};
+}
###############################
# Utilities
#
-BEGIN {
- eval 'require Scalar::Util';
- unless($@){
- *JSON::PP::blessed = \&Scalar::Util::blessed;
- *JSON::PP::reftype = \&Scalar::Util::reftype;
- *JSON::PP::refaddr = \&Scalar::Util::refaddr;
- }
- else{ # This code is from Scalar::Util.
- # warn $@;
- eval 'sub UNIVERSAL::a_sub_not_likely_to_be_here { ref($_[0]) }';
- *JSON::PP::blessed = sub {
- local($@, $SIG{__DIE__}, $SIG{__WARN__});
- ref($_[0]) ? eval { $_[0]->a_sub_not_likely_to_be_here } : undef;
- };
- require B;
- my %tmap = qw(
- B::NULL SCALAR
- B::HV HASH
- B::AV ARRAY
- B::CV CODE
- B::IO IO
- B::GV GLOB
- B::REGEXP REGEXP
- );
- *JSON::PP::reftype = sub {
- my $r = shift;
-
- return undef unless length(ref($r));
-
- my $t = ref(B::svref_2object($r));
-
- return
- exists $tmap{$t} ? $tmap{$t}
- : length(ref($$r)) ? 'REF'
- : 'SCALAR';
- };
- *JSON::PP::refaddr = sub {
- return undef unless length(ref($_[0]));
-
- my $addr;
- if(defined(my $pkg = blessed($_[0]))) {
- $addr .= bless $_[0], 'Scalar::Util::Fake';
- bless $_[0], $pkg;
- }
- else {
- $addr .= $_[0]
- }
-
- $addr =~ /0x(\w+)/;
- local $^W;
- #no warnings 'portable';
- hex($1);
- }
- }
-}
-
-
# shamelessly copied and modified from JSON::XS code.
$JSON::PP::true = do { bless \(my $dummy = 1), "JSON::PP::Boolean" };
$JSON::PP::false = do { bless \(my $dummy = 0), "JSON::PP::Boolean" };
-sub is_bool { blessed $_[0] and ( $_[0]->isa("JSON::PP::Boolean") or $_[0]->isa("Types::Serialiser::BooleanBase") or $_[0]->isa("JSON::XS::Boolean") ); }
+sub is_bool {
+ if (blessed $_[0]) {
+ return (
+ $_[0]->isa("JSON::PP::Boolean")
+ or $_[0]->isa("Types::Serialiser::BooleanBase")
+ or $_[0]->isa("JSON::XS::Boolean")
+ );
+ }
+ elsif (CORE_BOOL) {
+ BEGIN { CORE_BOOL and warnings->unimport('experimental::builtin') }
+ return builtin::is_bool($_[0]);
+ }
+ return !!0;
+}
sub true { $JSON::PP::true }
sub false { $JSON::PP::false }
@@ -1514,7 +1493,7 @@ use constant INCR_M_C1 => 5;
use constant INCR_M_TFN => 6;
use constant INCR_M_NUM => 7;
-$JSON::PP::IncrParser::VERSION = '1.01';
+our $VERSION = '1.01';
sub new {
my ( $class ) = @_;
@@ -1534,10 +1513,6 @@ sub incr_parse {
$self->{incr_text} = '' unless ( defined $self->{incr_text} );
if ( defined $text ) {
- if ( utf8::is_utf8( $text ) and !utf8::is_utf8( $self->{incr_text} ) ) {
- utf8::upgrade( $self->{incr_text} ) ;
- utf8::decode( $self->{incr_text} ) ;
- }
$self->{incr_text} .= $text;
}
@@ -1563,6 +1538,10 @@ sub incr_parse {
}
}
+ unless ( $coder->get_utf8 ) {
+ utf8::decode( $self->{incr_text} );
+ }
+
my ($obj, $offset) = $coder->PP_decode_json( $self->{incr_text}, 0x00000001 );
push @ret, $obj;
use bytes;
@@ -1600,7 +1579,7 @@ INCR_PARSE:
while ( $len > $p ) {
$s = substr( $text, $p, 1 );
last INCR_PARSE unless defined $s;
- if ( ord($s) > 0x20 ) {
+ if ( ord($s) > ord " " ) {
if ( $s eq '#' ) {
$self->{incr_mode} = INCR_M_C0;
redo INCR_PARSE;
@@ -1627,6 +1606,7 @@ INCR_PARSE:
}
next;
} elsif ( $mode == INCR_M_TFN ) {
+ last INCR_PARSE if $p >= $len && $self->{incr_nest};
while ( $len > $p ) {
$s = substr( $text, $p++, 1 );
next if defined $s and $s =~ /[rueals]/;
@@ -1638,6 +1618,7 @@ INCR_PARSE:
last INCR_PARSE unless $self->{incr_nest};
redo INCR_PARSE;
} elsif ( $mode == INCR_M_NUM ) {
+ last INCR_PARSE if $p >= $len && $self->{incr_nest};
while ( $len > $p ) {
$s = substr( $text, $p++, 1 );
next if defined $s and $s =~ /[0-9eE.+\-]/;
@@ -1674,7 +1655,7 @@ INCR_PARSE:
if ( $s eq "\x00" ) {
$p--;
last INCR_PARSE;
- } elsif ( $s eq "\x09" or $s eq "\x0a" or $s eq "\x0d" or $s eq "\x20" ) {
+ } elsif ( $s =~ /^[\t\n\r ]$/) {
if ( !$self->{incr_nest} ) {
$p--; # do not eat the whitespace, let the next round do it
last INCR_PARSE;
@@ -1770,10 +1751,6 @@ JSON::PP - JSON::XS compatible pure-Perl module.
use JSON;
-=head1 VERSION
-
- 4.05
-
=head1 DESCRIPTION
JSON::PP is a pure perl JSON decoder/encoder, and (almost) compatible to much
@@ -1833,6 +1810,9 @@ Returns true if the passed scalar represents either JSON::PP::true or
JSON::PP::false, two constants that act like C<1> and C<0> respectively
and are also used to represent JSON C<true> and C<false> in Perl strings.
+On perl 5.36 and above, will also return true when given one of perl's
+standard boolean values, such as the result of a comparison.
+
See L<MAPPING>, below, for more information on how JSON values are mapped to
Perl.
@@ -2249,6 +2229,22 @@ to their default values.
C<get_boolean_values> will return both C<$false> and C<$true> values, or
the empty list when they are set to the default.
+=head2 core_bools
+
+ $json->core_bools([$enable]);
+
+If C<$enable> is true (or missing), then C<decode>, will produce standard
+perl boolean values. Equivalent to calling:
+
+ $json->boolean_values(!!1, !!0)
+
+C<get_core_bools> will return true if this has been set. On perl 5.36, it will
+also return true if the boolean values have been set to perl's core booleans
+using the C<boolean_values> method.
+
+The methods C<unblessed_bool> and C<get_unblessed_bool> are provided as aliases
+for compatibility with L<Cpanel::JSON::XS>.
+
=head2 filter_json_object
$json = $json->filter_json_object([$coderef])
diff --git a/Master/tlpkg/tlperl/lib/JSON/PP/Boolean.pm b/Master/tlpkg/tlperl/lib/JSON/PP/Boolean.pm
index a6b9ee1137d..146446e93d7 100644
--- a/Master/tlpkg/tlperl/lib/JSON/PP/Boolean.pm
+++ b/Master/tlpkg/tlperl/lib/JSON/PP/Boolean.pm
@@ -1,8 +1,9 @@
package JSON::PP::Boolean;
use strict;
-require overload;
-local $^W;
+use warnings;
+use overload ();
+overload::unimport('overload', qw(0+ ++ -- fallback));
overload::import('overload',
"0+" => sub { ${$_[0]} },
"++" => sub { $_[0] = ${$_[0]} + 1 },
@@ -10,7 +11,7 @@ overload::import('overload',
fallback => 1,
);
-$JSON::PP::Boolean::VERSION = '4.06';
+our $VERSION = '4.16';
1;
diff --git a/Master/tlpkg/tlperl/lib/List/Util.pm b/Master/tlpkg/tlperl/lib/List/Util.pm
index e582d608743..3766b06d89f 100644
--- a/Master/tlpkg/tlperl/lib/List/Util.pm
+++ b/Master/tlpkg/tlperl/lib/List/Util.pm
@@ -13,10 +13,10 @@ require Exporter;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(
all any first min max minstr maxstr none notall product reduce reductions sum sum0
- sample shuffle uniq uniqint uniqnum uniqstr
+ sample shuffle uniq uniqint uniqnum uniqstr zip zip_longest zip_shortest mesh mesh_longest mesh_shortest
head tail pairs unpairs pairkeys pairvalues pairmap pairgrep pairfirst
);
-our $VERSION = "1.55";
+our $VERSION = "1.63";
our $XS_VERSION = $VERSION;
$VERSION =~ tr/_//d;
@@ -57,7 +57,7 @@ List::Util - A selection of general-utility list subroutines
pairs unpairs pairkeys pairvalues pairfirst pairgrep pairmap
- shuffle uniq uniqint uniqnum uniqstr
+ shuffle uniq uniqint uniqnum uniqstr zip mesh
);
=head1 DESCRIPTION
@@ -653,6 +653,83 @@ all but the first C<$size> elements from C<@list>.
@result = tail -2, qw( foo bar baz );
# baz
+=head2 zip
+
+ my @result = zip [1..3], ['a'..'c'];
+ # [1, 'a'], [2, 'b'], [3, 'c']
+
+I<Since version 1.56.>
+
+Returns a list of array references, composed of elements from the given list
+of array references. Each array in the returned list is composed of elements
+at that corresponding position from each of the given input arrays. If any
+input arrays run out of elements before others, then C<undef> will be inserted
+into the result to fill in the gaps.
+
+The C<zip> function is particularly handy for iterating over multiple arrays
+at the same time with a C<foreach> loop, taking one element from each:
+
+ foreach ( zip \@xs, \@ys, \@zs ) {
+ my ($x, $y, $z) = @$_;
+ ...
+ }
+
+B<NOTE> to users of L<List::MoreUtils>: This function does not behave the same
+as C<List::MoreUtils::zip>, but is actually a non-prototyped equivalent to
+C<List::MoreUtils::zip_unflatten>. This function does not apply a prototype,
+so make sure to invoke it with references to arrays.
+
+For a function similar to the C<zip> function from C<List::MoreUtils>, see
+L<mesh>.
+
+ my @result = zip_shortest ...
+
+A variation of the function that differs in how it behaves when given input
+arrays of differing lengths. C<zip_shortest> will stop as soon as any one of
+the input arrays run out of elements, discarding any remaining unused values
+from the others.
+
+ my @result = zip_longest ...
+
+C<zip_longest> is an alias to the C<zip> function, provided simply to be
+explicit about that behaviour as compared to C<zip_shortest>.
+
+=head2 mesh
+
+ my @result = mesh [1..3], ['a'..'c'];
+ # (1, 'a', 2, 'b', 3, 'c')
+
+I<Since version 1.56.>
+
+Returns a list of items collected from elements of the given list of array
+references. Each section of items in the returned list is composed of elements
+at the corresponding position from each of the given input arrays. If any
+input arrays run out of elements before others, then C<undef> will be inserted
+into the result to fill in the gaps.
+
+This is similar to L<zip>, except that all of the ranges in the result are
+returned in one long flattened list, instead of being bundled into separate
+arrays.
+
+Because it returns a flat list of items, the C<mesh> function is particularly
+useful for building a hash out of two separate arrays of keys and values:
+
+ my %hash = mesh \@keys, \@values;
+
+ my $href = { mesh \@keys, \@values };
+
+B<NOTE> to users of L<List::MoreUtils>: This function is a non-prototyped
+equivalent to C<List::MoreUtils::mesh> or C<List::MoreUtils::zip> (themselves
+aliases of each other). This function does not apply a prototype, so make sure
+to invoke it with references to arrays.
+
+ my @result = mesh_shortest ...
+
+ my @result = mesh_longest ...
+
+These variations are similar to those of L<zip>, in that they differ in
+behaviour when one of the input lists runs out of elements before the others.
+
=head1 CONFIGURATION VARIABLES
=head2 $RAND
diff --git a/Master/tlpkg/tlperl/lib/List/Util/XS.pm b/Master/tlpkg/tlperl/lib/List/Util/XS.pm
index 88f663f0ec4..28cf6928f4f 100644
--- a/Master/tlpkg/tlperl/lib/List/Util/XS.pm
+++ b/Master/tlpkg/tlperl/lib/List/Util/XS.pm
@@ -3,7 +3,7 @@ use strict;
use warnings;
use List::Util;
-our $VERSION = "1.55"; # FIXUP
+our $VERSION = "1.63"; # FIXUP
$VERSION =~ tr/_//d; # FIXUP
1;
diff --git a/Master/tlpkg/tlperl/lib/Locale/Maketext.pm b/Master/tlpkg/tlperl/lib/Locale/Maketext.pm
index f70438b78d4..8979c202f09 100644
--- a/Master/tlpkg/tlperl/lib/Locale/Maketext.pm
+++ b/Master/tlpkg/tlperl/lib/Locale/Maketext.pm
@@ -25,7 +25,7 @@ BEGIN {
}
-our $VERSION = '1.29';
+our $VERSION = '1.33';
our @ISA = ();
our $MATCH_SUPERS = 1;
@@ -136,19 +136,20 @@ sub fail_with { # an actual attribute method!
#--------------------------------------------------------------------------
-sub blacklist {
- my ( $handle, @methods ) = @_;
+sub _exclude {
+ my ( $handle, @methods ) = @_;
- unless ( defined $handle->{'blacklist'} ) {
+ unless ( defined $handle->{'denylist'} ) {
no strict 'refs';
# Don't let people call methods they're not supposed to from maketext.
# Explicitly exclude all methods in this package that start with an
# underscore on principle.
- $handle->{'blacklist'} = {
+ $handle->{'denylist'} = {
map { $_ => 1 } (
qw/
blacklist
+ denylist
encoding
fail_with
failure_handler_auto
@@ -160,30 +161,55 @@ sub blacklist {
maketext
new
whitelist
+ allowlist
/, grep { /^_/ } keys %{ __PACKAGE__ . "::" }
),
};
}
if ( scalar @methods ) {
- $handle->{'blacklist'} = { %{ $handle->{'blacklist'} }, map { $_ => 1 } @methods };
+ $handle->{'denylist'} = { %{ $handle->{'denylist'} }, map { $_ => 1 } @methods };
}
delete $handle->{'_external_lex_cache'};
return;
}
-sub whitelist {
+sub blacklist {
+ my ( $handle, @methods ) = @_;
+ _exclude ( $handle, @methods );
+ return;
+}
+
+sub denylist {
+ my ( $handle, @methods ) = @_;
+ _exclude ( $handle, @methods );
+ return;
+}
+
+sub _include {
my ( $handle, @methods ) = @_;
if ( scalar @methods ) {
- $handle->{'whitelist'} = {} unless defined $handle->{'whitelist'};
- $handle->{'whitelist'} = { %{ $handle->{'whitelist'} }, map { $_ => 1 } @methods };
+ $handle->{'allowlist'} = {} unless defined $handle->{'allowlist'};
+ $handle->{'allowlist'} = { %{ $handle->{'allowlist'} }, map { $_ => 1 } @methods };
}
delete $handle->{'_external_lex_cache'};
return;
}
+sub whitelist {
+ my ( $handle, @methods ) = @_;
+ _include ( $handle, @methods );
+ return;
+}
+
+sub allowlist {
+ my ( $handle, @methods ) = @_;
+ _include ( $handle, @methods );
+ return;
+}
+
#--------------------------------------------------------------------------
sub failure_handler_auto {
@@ -228,6 +254,7 @@ sub new {
my $class = ref($_[0]) || $_[0];
my $handle = bless {}, $class;
$handle->blacklist;
+ $handle->denylist;
$handle->init;
return $handle;
}
@@ -679,8 +706,10 @@ sub _compile {
}
elsif($m =~ /^\w+$/s
&& !$handle->{'blacklist'}{$m}
+ && !$handle->{'denylist'}{$m}
&& ( !defined $handle->{'whitelist'} || $handle->{'whitelist'}{$m} )
- # exclude anything fancy and restrict to the whitelist/blacklist.
+ && ( !defined $handle->{'allowlist'} || $handle->{'allowlist'}{$m} )
+ # exclude anything fancy and restrict to the allowlist/denylist (and historical whitelist/blacklist).
) {
push @code, ' $_[0]->' . $m . '(';
}
diff --git a/Master/tlpkg/tlperl/lib/Locale/Maketext.pod b/Master/tlpkg/tlperl/lib/Locale/Maketext.pod
index 26be348353d..761e6abc229 100644
--- a/Master/tlpkg/tlperl/lib/Locale/Maketext.pod
+++ b/Master/tlpkg/tlperl/lib/Locale/Maketext.pod
@@ -45,7 +45,7 @@ derive a "project class".
The project class (with a name like "TkBocciBall::Localize",
which you then use in your module) is in turn the base class
for all the "language classes" for your project
-(with names "TkBocciBall::Localize::it",
+(with names "TkBocciBall::Localize::it",
"TkBocciBall::Localize::en",
"TkBocciBall::Localize::fr", etc.).
@@ -122,9 +122,9 @@ If it runs thru the entire given list of language-tags, and finds no classes
for those exact terms, it then tries "superordinate" language classes.
So if no "en-US" class (i.e., YourProjClass::en_us)
was found, nor classes for anything else in that list, we then try
-its superordinate, "en" (i.e., YourProjClass::en), and so on thru
+its superordinate, "en" (i.e., YourProjClass::en), and so on thru
the other language-tags in the given list: "es".
-(The other language-tags in our example list:
+(The other language-tags in our example list:
happen to have no superordinates.)
If none of those language-tags leads to loadable classes, we then
@@ -307,9 +307,9 @@ interested in hearing about it.)
These two methods are discussed in the section "Controlling
Lookup Failure".
-=item $lh->blacklist(@list)
+=item $lh->denylist(@list) <or> $lh->blacklist(@list)
-=item $lh->whitelist(@list)
+=item $lh->allowlist(@list) <or> $lh->whitelist(@list)
These methods are discussed in the section "Bracket Notation
Security".
@@ -331,7 +331,7 @@ Bracket Notation or not).
=item $language->quant($number, $singular, $plural, $negative)
This is generally meant to be called from inside Bracket Notation
-(which is discussed later), as in
+(which is discussed later), as in
"Your search matched [quant,_1,document]!"
@@ -482,8 +482,8 @@ to YourProjClass . "::". So this:
'en-US', 'fr', 'kon', 'i-klingon', 'i-klingon-romanized'
);
-will try loading the classes
-YourProjClass::en_us (note lowercase!), YourProjClass::fr,
+will try loading the classes
+YourProjClass::en_us (note lowercase!), YourProjClass::fr,
YourProjClass::kon,
YourProjClass::i_klingon
and YourProjClass::i_klingon_romanized. (And it'll stop at the
@@ -875,17 +875,17 @@ bracket notation methods from normal class or object methods. This
design makes it vulnerable to format string attacks whenever it is
used to process strings provided by untrusted users.
-Locale::Maketext does support blacklist and whitelist functionality
+Locale::Maketext does support denylist and allowlist functionality
to limit which methods may be called as bracket notation methods.
-By default, Locale::Maketext blacklists all methods in the
+By default, Locale::Maketext denies all methods in the
Locale::Maketext namespace that begin with the '_' character,
and all methods which include Perl's namespace separator characters.
-The default blacklist for Locale::Maketext also prevents use of the
+The default denylist for Locale::Maketext also prevents use of the
following methods in bracket notation:
- blacklist
+ denylist
encoding
fail_with
failure_handler_auto
@@ -896,44 +896,56 @@ following methods in bracket notation:
language_tag
maketext
new
+ allowlist
whitelist
+ blacklist
-This list can be extended by either blacklisting additional "known bad"
-methods, or whitelisting only "known good" methods.
+This list can be extended by either deny-listing additional "known bad"
+methods, or allow-listing only "known good" methods.
To prevent specific methods from being called in bracket notation, use
-the blacklist() method:
+the denylist() method:
my $lh = MyProgram::L10N->get_handle();
- $lh->blacklist(qw{my_internal_method my_other_method});
+ $lh->denylist(qw{my_internal_method my_other_method});
$lh->maketext('[my_internal_method]'); # dies
To limit the allowed bracked notation methods to a specific list, use the
-whitelist() method:
+allowlist() method:
my $lh = MyProgram::L10N->get_handle();
- $lh->whitelist('numerate', 'numf');
+ $lh->allowlist('numerate', 'numf');
$lh->maketext('[_1] [numerate, _1,shoe,shoes]', 12); # works
$lh->maketext('[my_internal_method]'); # dies
-The blacklist() and whitelist() methods extend their internal lists
-whenever they are called. To reset the blacklist or whitelist, create
+The denylist() and allowlist() methods extend their internal lists
+whenever they are called. To reset the denylist or allowlist, create
a new maketext object.
my $lh = MyProgram::L10N->get_handle();
- $lh->blacklist('numerate');
- $lh->blacklist('numf');
+ $lh->denylist('numerate');
+ $lh->denylist('numf');
$lh->maketext('[_1] [numerate,_1,shoe,shoes]', 12); # dies
For lexicons that use an internal cache, translations which have already
been cached in their compiled form are not affected by subsequent changes
-to the whitelist or blacklist settings. Lexicons that use an external
-cache will have their cache cleared whenever the whitelist of blacklist
-setings change. The difference between the two types of caching is explained
+to the allowlist or denylist settings. Lexicons that use an external
+cache will have their cache cleared whenever the allowlist or denylist
+settings change. The difference between the two types of caching is explained
in the "Readonly Lexicons" section.
-Methods disallowed by the blacklist cannot be permitted by the
-whitelist.
+Methods disallowed by the denylist cannot be permitted by the
+allowlist.
+
+NOTE: denylist() is the preferred method name to use instead of the
+historical and non-inclusive method blacklist(). blacklist() may be
+removed in a future release of this package and so it's use should be
+removed from usage.
+
+NOTE: allowlist() is the preferred method name to use instead of the
+historical and non-inclusive method whitelist(). whitelist() may be
+removed in a future release of this package and so it's use should be
+removed from usage.
=head1 AUTO LEXICONS
@@ -981,7 +993,7 @@ but since you anticipate localizing this, you write:
}
Now, right after you've just written the above lines, you'd
-normally have to go open the file
+normally have to go open the file
ThisProject/I18N/en.pm, and immediately add an entry:
"Couldn't find file \"[_1]\"!\n"
@@ -1212,7 +1224,7 @@ _AUTO lexicon.)
=item *
-Go and write your program. Everywhere in your program where
+Go and write your program. Everywhere in your program where
you would say:
print "Foobar $thing stuff\n";
@@ -1256,7 +1268,7 @@ following phrase.
=item *
-You may at this point want to consider whether your base class
+You may at this point want to consider whether your base class
(Projname::L10N), from which all lexicons inherit from (Projname::L10N::en,
Projname::L10N::es, etc.), should be an _AUTO lexicon. It may be true
that in theory, all needed messages will be in each language class;
@@ -1375,7 +1387,7 @@ I recommend reading all of these:
L<Locale::Maketext::TPJ13|Locale::Maketext::TPJ13> -- my I<The Perl
Journal> article about Maketext. It explains many important concepts
underlying Locale::Maketext's design, and some insight into why
-Maketext is better than the plain old approach of having
+Maketext is better than the plain old approach of having
message catalogs that are just databases of sprintf formats.
L<File::Findgrep|File::Findgrep> is a sample application/module
diff --git a/Master/tlpkg/tlperl/lib/Locale/Maketext/Cookbook.pod b/Master/tlpkg/tlperl/lib/Locale/Maketext/Cookbook.pod
index 51fad9528b3..f71d71020a2 100644
--- a/Master/tlpkg/tlperl/lib/Locale/Maketext/Cookbook.pod
+++ b/Master/tlpkg/tlperl/lib/Locale/Maketext/Cookbook.pod
@@ -18,7 +18,7 @@ I<Adapted from a suggestion by Dan Muey>
It may be common (for example at your main lexicon) that
the hash keys and values coincide. Like that
- q{Hello, tell me your name}
+ q{Hello, tell me your name}
=> q{Hello, tell me your name}
It would be nice to just write:
@@ -27,10 +27,10 @@ It would be nice to just write:
and have this magically inflated to the first form.
Among the advantages of such representation, that would
-lead to
-smaller files, less prone to mistyping or mispasting,
-and handy to someone translating it which can simply
-copy the main lexicon and enter the translation
+lead to
+smaller files, less prone to mistyping or mispasting,
+and handy to someone translating it which can simply
+copy the main lexicon and enter the translation
instead of having to remove the value first.
That can be achieved by overriding C<init>
@@ -70,25 +70,25 @@ should be more time expensive as an option.
I<After CPAN RT #36136 (L<https://rt.cpan.org/Ticket/Display.html?id=36136>)>
-The documentation of L<Locale::Maketext> advises that
+The documentation of L<Locale::Maketext> advises that
the standard bracket method C<numf> is limited and that
you must override that for better results. It even
suggests the use of L<Number::Format>.
One such defect of standard C<numf> is to not be
able to use a certain decimal precision.
-For example,
+For example,
$lh->maketext('pi is [numf,_1]', 355/113);
outputs
- pi is 3.14159292035398
+ pi is 3.14159292035398
-Since pi ≈ 355/116 is only accurate
+Since pi ≈ 355/116 is only accurate
to 6 decimal places, you would want to say:
- $lh->maketext('pi is [numf,_1,6]', 355/113);
+ $lh->maketext('pi is [numf,_1,6]', 355/113);
and get "pi is 3.141592".
@@ -132,14 +132,14 @@ like that:
use base qw(Wuu);
-and then
+and then
my $lh = Wuu->get_handle('pt');
$lh->maketext('A [numf,_1,3] km de distância', 1550.2222);
would return "A 1.550,222 km de distância".
-Notice that the standard utility methods of
+Notice that the standard utility methods of
C<Locale::Maketext> are irremediably limited
because they could not aim to do everything
that could be expected from them in different languages,
diff --git a/Master/tlpkg/tlperl/lib/Locale/Maketext/TPJ13.pod b/Master/tlpkg/tlperl/lib/Locale/Maketext/TPJ13.pod
index 9ba7a32e04f..cb5ef14fd6c 100644
--- a/Master/tlpkg/tlperl/lib/Locale/Maketext/TPJ13.pod
+++ b/Master/tlpkg/tlperl/lib/Locale/Maketext/TPJ13.pod
@@ -237,7 +237,7 @@ merely needed further consideration.
=over
-"It is more complicated than you think."
+"It is more complicated than you think."
-- The Eighth Networking Truth, from RFC 1925
diff --git a/Master/tlpkg/tlperl/lib/MIME/Base64.pm b/Master/tlpkg/tlperl/lib/MIME/Base64.pm
index 923c888da4c..3605481a79c 100644
--- a/Master/tlpkg/tlperl/lib/MIME/Base64.pm
+++ b/Master/tlpkg/tlperl/lib/MIME/Base64.pm
@@ -8,7 +8,7 @@ our @ISA = qw(Exporter);
our @EXPORT = qw(encode_base64 decode_base64);
our @EXPORT_OK = qw(encode_base64url decode_base64url encoded_base64_length decoded_base64_length);
-our $VERSION = '3.16';
+our $VERSION = '3.16_01';
require XSLoader;
XSLoader::load('MIME::Base64', $VERSION);
diff --git a/Master/tlpkg/tlperl/lib/MIME/QuotedPrint.pm b/Master/tlpkg/tlperl/lib/MIME/QuotedPrint.pm
index fe792ad30ea..4539f00455c 100644
--- a/Master/tlpkg/tlperl/lib/MIME/QuotedPrint.pm
+++ b/Master/tlpkg/tlperl/lib/MIME/QuotedPrint.pm
@@ -7,7 +7,7 @@ require Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(encode_qp decode_qp);
-our $VERSION = '3.16';
+our $VERSION = '3.16_01';
use MIME::Base64; # will load XS version of {en,de}code_qp()
diff --git a/Master/tlpkg/tlperl/lib/Math/BigFloat.pm b/Master/tlpkg/tlperl/lib/Math/BigFloat.pm
index f1d7a1a0a0a..66300a49284 100644
--- a/Master/tlpkg/tlperl/lib/Math/BigFloat.pm
+++ b/Master/tlpkg/tlperl/lib/Math/BigFloat.pm
@@ -16,10 +16,12 @@ use 5.006001;
use strict;
use warnings;
-use Carp qw< carp croak >;
-use Math::BigInt ();
+use Carp qw< carp croak >;
+use Scalar::Util qw< blessed >;
+use Math::BigInt qw< >;
-our $VERSION = '1.999818';
+our $VERSION = '1.999837';
+$VERSION =~ tr/_//d;
require Exporter;
our @ISA = qw/Math::BigInt/;
@@ -58,21 +60,21 @@ use overload
# overload key: assign
- '+=' => sub { $_[0]->badd($_[1]); },
+ '+=' => sub { $_[0] -> badd($_[1]); },
- '-=' => sub { $_[0]->bsub($_[1]); },
+ '-=' => sub { $_[0] -> bsub($_[1]); },
- '*=' => sub { $_[0]->bmul($_[1]); },
+ '*=' => sub { $_[0] -> bmul($_[1]); },
- '/=' => sub { scalar $_[0]->bdiv($_[1]); },
+ '/=' => sub { scalar $_[0] -> bdiv($_[1]); },
- '%=' => sub { $_[0]->bmod($_[1]); },
+ '%=' => sub { $_[0] -> bmod($_[1]); },
- '**=' => sub { $_[0]->bpow($_[1]); },
+ '**=' => sub { $_[0] -> bpow($_[1]); },
- '<<=' => sub { $_[0]->blsft($_[1]); },
+ '<<=' => sub { $_[0] -> blsft($_[1]); },
- '>>=' => sub { $_[0]->brsft($_[1]); },
+ '>>=' => sub { $_[0] -> brsft($_[1]); },
# 'x=' => sub { },
@@ -194,7 +196,7 @@ use overload
'0+' => sub { $_[0] -> numify(); },
- '=' => sub { $_[0]->copy(); },
+ '=' => sub { $_[0] -> copy(); },
;
@@ -259,8 +261,7 @@ BEGIN {
$rnd_mode = 'even';
tie $rnd_mode, 'Math::BigFloat';
- # we need both of them in this package:
- *as_int = \&as_number;
+ *as_number = \&as_int;
}
sub DESTROY {
@@ -270,7 +271,6 @@ sub DESTROY {
sub AUTOLOAD {
# make fxxx and bxxx both work by selectively mapping fxxx() to MBF::bxxx()
my $name = $AUTOLOAD;
-
$name =~ s/(.*):://; # split package
my $c = $1 || __PACKAGE__;
no strict 'refs';
@@ -284,7 +284,8 @@ sub AUTOLOAD {
# delayed load of Carp and avoid recursion
croak("Can't call $c\-\>$name, not a valid method");
}
- # try one level up, but subst. bxxx() for fxxx() since MBI only got bxxx()
+ # try one level up, but subst. bxxx() for fxxx() since MBI only got
+ # bxxx()
$name =~ s/^f/b/;
return &{"Math::BigInt"."::$name"}(@_);
}
@@ -351,7 +352,8 @@ sub config {
###############################################################################
sub new {
- # Create a new Math::BigFloat object from a string or another bigfloat object.
+ # Create a new Math::BigFloat object from a string or another bigfloat
+ # object.
# _e: exponent
# _m: mantissa
# sign => ("+", "-", "+inf", "-inf", or "NaN")
@@ -360,193 +362,212 @@ sub new {
my $selfref = ref $self;
my $class = $selfref || $self;
- my ($wanted, @r) = @_;
+ # Make "require" work.
- # avoid numify-calls by not using || on $wanted!
+ $class -> import() if $IMPORT == 0;
- unless (defined $wanted) {
- #carp("Use of uninitialized value in new");
- return $self->bzero(@r);
- }
+ # Although this use has been discouraged for more than 10 years, people
+ # apparently still use it, so we still support it.
- # Using $wanted->isa("Math::BigFloat") here causes a 'Deep recursion on
- # subroutine "Math::BigFloat::as_number"' in some tests. Fixme!
+ return $class -> bzero() unless @_;
- if (UNIVERSAL::isa($wanted, 'Math::BigFloat')) {
- my $copy = $wanted -> copy();
- if ($selfref) { # if new() called as instance method
- %$self = %$copy;
- } else { # if new() called as class method
- $self = $copy;
- }
- return $copy;
+ my ($wanted, @r) = @_;
+
+ if (!defined($wanted)) {
+ #if (warnings::enabled("uninitialized")) {
+ # warnings::warn("uninitialized",
+ # "Use of uninitialized value in new()");
+ #}
+ return $class -> bzero(@r);
}
- $class->import() if $IMPORT == 0; # make require work
+ if (!ref($wanted) && $wanted eq "") {
+ #if (warnings::enabled("numeric")) {
+ # warnings::warn("numeric",
+ # q|Argument "" isn't numeric in new()|);
+ #}
+ #return $class -> bzero(@r);
+ return $class -> bnan(@r);
+ }
- # If called as a class method, initialize a new object.
+ # Initialize a new object.
$self = bless {}, $class unless $selfref;
- # shortcut for bigints and its subclasses
- if ((ref($wanted)) && $wanted -> can("as_number")) {
- $self->{_m} = $wanted->as_number()->{value}; # get us a bigint copy
- $self->{_e} = $LIB->_zero();
- $self->{_es} = '+';
- $self->{sign} = $wanted->sign();
- return $self->bnorm();
+ # Math::BigFloat or subclass
+
+ if (defined(blessed($wanted)) && $wanted -> isa($class)) {
+
+ # Don't copy the accuracy and precision, because a new object should get
+ # them from the global configuration.
+
+ $self -> {sign} = $wanted -> {sign};
+ $self -> {_m} = $LIB -> _copy($wanted -> {_m});
+ $self -> {_es} = $wanted -> {_es};
+ $self -> {_e} = $LIB -> _copy($wanted -> {_e});
+ $self = $self->round(@r)
+ unless @r >= 2 && !defined($r[0]) && !defined($r[1]);
+ return $self;
}
- # else: got a string or something masquerading as number (with overload)
+ # Shortcut for Math::BigInt and its subclasses. This should be improved.
+
+ if (defined(blessed($wanted))) {
+ if ($wanted -> isa('Math::BigInt')) {
+ $self->{sign} = $wanted -> {sign};
+ $self->{_m} = $LIB -> _copy($wanted -> {value});
+ $self->{_es} = '+';
+ $self->{_e} = $LIB -> _zero();
+ return $self -> bnorm();
+ }
+
+ if ($wanted -> can("as_number")) {
+ $self->{sign} = $wanted -> sign();
+ $self->{_m} = $wanted -> as_number() -> {value};
+ $self->{_es} = '+';
+ $self->{_e} = $LIB -> _zero();
+ return $self -> bnorm();
+ }
+ }
+
+ # Shortcut for simple forms like '123' that have no trailing zeros. Trailing
+ # zeros would require a non-zero exponent.
+
+ if ($wanted =~
+ / ^
+ \s* # optional leading whitespace
+ ( [+-]? ) # optional sign
+ 0* # optional leading zeros
+ ( [1-9] (?: [0-9]* [1-9] )? ) # significand
+ \s* # optional trailing whitespace
+ $
+ /x)
+ {
+ return $downgrade -> new($1 . $2) if defined $downgrade;
+ $self->{sign} = $1 || '+';
+ $self->{_m} = $LIB -> _new($2);
+ $self->{_es} = '+';
+ $self->{_e} = $LIB -> _zero();
+ $self = $self->round(@r)
+ unless @r >= 2 && !defined $r[0] && !defined $r[1];
+ return $self;
+ }
# Handle Infs.
- if ($wanted =~ /^\s*([+-]?)inf(inity)?\s*\z/i) {
- return $downgrade->new($wanted) if $downgrade;
+ if ($wanted =~ / ^
+ \s*
+ ( [+-]? )
+ inf (?: inity )?
+ \s*
+ \z
+ /ix)
+ {
my $sgn = $1 || '+';
- $self->{sign} = $sgn . 'inf'; # set a default sign for bstr()
- return $self->binf($sgn);
+ return $class -> binf($sgn, @r);
}
# Handle explicit NaNs (not the ones returned due to invalid input).
- if ($wanted =~ /^\s*([+-]?)nan\s*\z/i) {
- return $downgrade->new($wanted) if $downgrade;
- $self = $class -> bnan();
- $self->round(@r) unless @r >= 2 && !defined $r[0] && !defined $r[1];
- return $self;
+ if ($wanted =~ / ^
+ \s*
+ ( [+-]? )
+ nan
+ \s*
+ \z
+ /ix)
+ {
+ return $class -> bnan(@r);
}
- # Handle hexadecimal numbers. We auto-detect hexadecimal numbers if they
- # have a "0x" or "0X" prefix.
+ my @parts;
- if ($wanted =~ /^\s*[+-]?0[Xx]/) {
- $self = $class -> from_hex($wanted);
- $self->round(@r) unless @r >= 2 && !defined $r[0] && !defined $r[1];
- return $self;
- }
+ if (
+ # Handle hexadecimal numbers. We auto-detect hexadecimal numbers if they
+ # have a "0x", "0X", "x", or "X" prefix, cf. CORE::oct().
+
+ $wanted =~ /^\s*[+-]?0?[Xx]/ and
+ @parts = $class -> _hex_str_to_flt_lib_parts($wanted)
+
+ or
- # Handle octal numbers. We auto-detect octal numbers if they have a "0"
- # prefix and a binary exponent.
+ # Handle octal numbers. We auto-detect octal numbers if they have a
+ # "0o", "0O", "o", "O" prefix, cf. CORE::oct().
- if ($wanted =~ /
- ^
- \s*
+ $wanted =~ /^\s*[+-]?0?[Oo]/ and
+ @parts = $class -> _oct_str_to_flt_lib_parts($wanted)
- # sign
- [+-]?
+ or
- # prefix
- 0
+ # Handle binary numbers. We auto-detect binary numbers if they have a
+ # "0b", "0B", "b", or "B" prefix, cf. CORE::oct().
- # significand using the octal digits 0..7
- [0-7]+ (?: _ [0-7]+ )*
- (?:
- \.
- (?: [0-7]+ (?: _ [0-7]+ )* )?
- )?
+ $wanted =~ /^\s*[+-]?0?[Bb]/ and
+ @parts = $class -> _bin_str_to_flt_lib_parts($wanted)
- # exponent (power of 2) using decimal digits
- [Pp]
- [+-]?
- \d+ (?: _ \d+ )*
+ or
- \s*
- $
- /x)
+ # At this point, what is left are decimal numbers that aren't handled
+ # above and octal floating point numbers that don't have any of the
+ # "0o", "0O", "o", or "O" prefixes. First see if it is a decimal number.
+
+ @parts = $class -> _dec_str_to_flt_lib_parts($wanted)
+ or
+
+ # See if it is an octal floating point number. The extra check is
+ # included because _oct_str_to_flt_lib_parts() accepts octal numbers
+ # that don't have a prefix (this is needed to make it work with, e.g.,
+ # from_oct() that don't require a prefix). However, Perl requires a
+ # prefix for octal floating point literals. For example, "1p+0" is not
+ # valid, but "01p+0" and "0__1p+0" are.
+
+ $wanted =~ /^\s*[+-]?0_*\d/ and
+ @parts = $class -> _oct_str_to_flt_lib_parts($wanted))
{
- $self = $class -> from_oct($wanted);
- $self->round(@r) unless @r >= 2 && !defined $r[0] && !defined $r[1];
- return $self;
- }
+ ($self->{sign}, $self->{_m}, $self->{_es}, $self->{_e}) = @parts;
- # Handle binary numbers. We auto-detect binary numbers if they have a "0b"
- # or "0B" prefix.
+ $self = $self->round(@r)
+ unless @r >= 2 && !defined($r[0]) && !defined($r[1]);
- if ($wanted =~ /^\s*[+-]?0[Bb]/) {
- $self = $class -> from_bin($wanted);
- $self->round(@r) unless @r >= 2 && !defined $r[0] && !defined $r[1];
+ return $downgrade -> new($self -> bdstr(), @r)
+ if defined($downgrade) && $self -> is_int();
return $self;
}
- # Shortcut for simple forms like '12' that have no trailing zeros.
- if ($wanted =~ /^([+-]?)0*([1-9][0-9]*[1-9])$/) {
- $self->{_e} = $LIB -> _zero();
- $self->{_es} = '+';
- $self->{sign} = $1 || '+';
- $self->{_m} = $LIB -> _new($2);
- if (!$downgrade) {
- $self->round(@r) unless @r >= 2 && !defined $r[0] && !defined $r[1];
- return $self;
- }
- }
+ # If we get here, the value is neither a valid decimal, binary, octal, or
+ # hexadecimal number. It is not an explicit Inf or a NaN either.
- my ($mis, $miv, $mfv, $es, $ev) = Math::BigInt::_split($wanted);
- if (!ref $mis) {
- if ($_trap_nan) {
- croak("$wanted is not a number initialized to $class");
- }
+ return $class -> bnan(@r);
+}
- return $downgrade->bnan() if $downgrade;
+sub from_dec {
+ my $self = shift;
+ my $selfref = ref $self;
+ my $class = $selfref || $self;
- $self->{_e} = $LIB->_zero();
- $self->{_es} = '+';
- $self->{_m} = $LIB->_zero();
- $self->{sign} = $nan;
- } else {
- # make integer from mantissa by adjusting exp, then convert to int
- $self->{_e} = $LIB->_new($$ev); # exponent
- $self->{_es} = $$es || '+';
- my $mantissa = "$$miv$$mfv"; # create mant.
- $mantissa =~ s/^0+(\d)/$1/; # strip leading zeros
- $self->{_m} = $LIB->_new($mantissa); # create mant.
-
- # 3.123E0 = 3123E-3, and 3.123E-2 => 3123E-5
- if (CORE::length($$mfv) != 0) {
- my $len = $LIB->_new(CORE::length($$mfv));
- ($self->{_e}, $self->{_es}) =
- _e_sub($self->{_e}, $len, $self->{_es}, '+');
- }
- # we can only have trailing zeros on the mantissa if $$mfv eq ''
- else {
- # Use a regexp to count the trailing zeros in $$miv instead of
- # _zeros() because that is faster, especially when _m is not stored
- # in base 10.
- my $zeros = 0;
- $zeros = CORE::length($1) if $$miv =~ /[1-9](0*)$/;
- if ($zeros != 0) {
- my $z = $LIB->_new($zeros);
- # turn '120e2' into '12e3'
- $self->{_m} = $LIB->_rsft($self->{_m}, $z, 10);
- ($self->{_e}, $self->{_es}) =
- _e_add($self->{_e}, $z, $self->{_es}, '+');
- }
- }
- $self->{sign} = $$mis;
+ # Don't modify constant (read-only) objects.
- # for something like 0Ey, set y to 0, and -0 => +0
- # Check $$miv for being '0' and $$mfv eq '', because otherwise _m could not
- # have become 0. That's faster than to call $LIB->_is_zero().
- $self->{sign} = '+', $self->{_e} = $LIB->_zero()
- if $$miv eq '0' and $$mfv eq '';
+ return $self if $selfref && $self->modify('from_dec');
- if (!$downgrade) {
- $self->round(@r) unless @r >= 2 && !defined $r[0] && !defined $r[1];
- return $self;
- }
- }
+ my $str = shift;
+ my @r = @_;
- # if downgrade, inf, NaN or integers go down
+ # If called as a class method, initialize a new object.
- if ($downgrade && $self->{_es} eq '+') {
- if ($LIB->_is_zero($self->{_e})) {
- return $downgrade->new($$mis . $LIB->_str($self->{_m}));
- }
- return $downgrade->new($self->bsstr());
+ $self = bless {}, $class unless $selfref;
+
+ if (my @parts = $class -> _dec_str_to_flt_lib_parts($str)) {
+ ($self->{sign}, $self->{_m}, $self->{_es}, $self->{_e}) = @parts;
+
+ $self = $self->round(@r)
+ unless @r >= 2 && !defined($r[0]) && !defined($r[1]);
+
+ return $downgrade -> new($self -> bdstr(), @r)
+ if defined($downgrade) && $self -> is_int();
+ return $self;
}
- $self->bnorm();
- $self->round(@r) unless @r >= 2 && !defined $r[0] && !defined $r[1];
- return $self;
+
+ return $self -> bnan(@r);
}
sub from_hex {
@@ -556,88 +577,27 @@ sub from_hex {
# Don't modify constant (read-only) objects.
- return if $selfref && $self->modify('from_hex');
+ return $self if $selfref && $self->modify('from_hex');
my $str = shift;
+ my @r = @_;
# If called as a class method, initialize a new object.
- $self = $class -> bzero() unless $selfref;
-
- if ($str =~ s/
- ^
- \s*
-
- # sign
- ( [+-]? )
-
- # optional "hex marker"
- (?: 0? x )?
-
- # significand using the hex digits 0..9 and a..f
- (
- [0-9a-fA-F]+ (?: _ [0-9a-fA-F]+ )*
- (?:
- \.
- (?: [0-9a-fA-F]+ (?: _ [0-9a-fA-F]+ )* )?
- )?
- |
- \.
- [0-9a-fA-F]+ (?: _ [0-9a-fA-F]+ )*
- )
-
- # exponent (power of 2) using decimal digits
- (?:
- [Pp]
- ( [+-]? )
- ( \d+ (?: _ \d+ )* )
- )?
-
- \s*
- $
- //x)
- {
- my $s_sign = $1 || '+';
- my $s_value = $2;
- my $e_sign = $3 || '+';
- my $e_value = $4 || '0';
- $s_value =~ tr/_//d;
- $e_value =~ tr/_//d;
-
- # The significand must be multiplied by 2 raised to this exponent.
-
- my $two_expon = $class -> new($e_value);
- $two_expon -> bneg() if $e_sign eq '-';
-
- # If there is a dot in the significand, remove it and adjust the
- # exponent according to the number of digits in the fraction part of
- # the significand. Since the digits in the significand are in base 16,
- # but the exponent is only in base 2, multiply the exponent adjustment
- # value by log(16) / log(2) = 4.
-
- my $idx = index($s_value, '.');
- if ($idx >= 0) {
- substr($s_value, $idx, 1) = '';
- $two_expon -= $class -> new(CORE::length($s_value))
- -> bsub($idx)
- -> bmul("4");
- }
+ $self = bless {}, $class unless $selfref;
- $self -> {sign} = $s_sign;
- $self -> {_m} = $LIB -> _from_hex('0x' . $s_value);
+ if (my @parts = $class -> _hex_str_to_flt_lib_parts($str)) {
+ ($self->{sign}, $self->{_m}, $self->{_es}, $self->{_e}) = @parts;
- if ($two_expon > 0) {
- my $factor = $class -> new("2") -> bpow($two_expon);
- $self -> bmul($factor);
- } elsif ($two_expon < 0) {
- my $factor = $class -> new("0.5") -> bpow(-$two_expon);
- $self -> bmul($factor);
- }
+ $self = $self->round(@r)
+ unless @r >= 2 && !defined($r[0]) && !defined($r[1]);
+ return $downgrade -> new($self -> bdstr(), @r)
+ if defined($downgrade) && $self -> is_int();
return $self;
}
- return $self->bnan();
+ return $self -> bnan(@r);
}
sub from_oct {
@@ -647,85 +607,27 @@ sub from_oct {
# Don't modify constant (read-only) objects.
- return if $selfref && $self->modify('from_oct');
+ return $self if $selfref && $self->modify('from_oct');
my $str = shift;
+ my @r = @_;
# If called as a class method, initialize a new object.
- $self = $class -> bzero() unless $selfref;
-
- if ($str =~ s/
- ^
- \s*
-
- # sign
- ( [+-]? )
-
- # significand using the octal digits 0..7
- (
- [0-7]+ (?: _ [0-7]+ )*
- (?:
- \.
- (?: [0-7]+ (?: _ [0-7]+ )* )?
- )?
- |
- \.
- [0-7]+ (?: _ [0-7]+ )*
- )
-
- # exponent (power of 2) using decimal digits
- (?:
- [Pp]
- ( [+-]? )
- ( \d+ (?: _ \d+ )* )
- )?
-
- \s*
- $
- //x)
- {
- my $s_sign = $1 || '+';
- my $s_value = $2;
- my $e_sign = $3 || '+';
- my $e_value = $4 || '0';
- $s_value =~ tr/_//d;
- $e_value =~ tr/_//d;
-
- # The significand must be multiplied by 2 raised to this exponent.
-
- my $two_expon = $class -> new($e_value);
- $two_expon -> bneg() if $e_sign eq '-';
-
- # If there is a dot in the significand, remove it and adjust the
- # exponent according to the number of digits in the fraction part of
- # the significand. Since the digits in the significand are in base 8,
- # but the exponent is only in base 2, multiply the exponent adjustment
- # value by log(8) / log(2) = 3.
-
- my $idx = index($s_value, '.');
- if ($idx >= 0) {
- substr($s_value, $idx, 1) = '';
- $two_expon -= $class -> new(CORE::length($s_value))
- -> bsub($idx)
- -> bmul("3");
- }
+ $self = bless {}, $class unless $selfref;
- $self -> {sign} = $s_sign;
- $self -> {_m} = $LIB -> _from_oct($s_value);
+ if (my @parts = $class -> _oct_str_to_flt_lib_parts($str)) {
+ ($self->{sign}, $self->{_m}, $self->{_es}, $self->{_e}) = @parts;
- if ($two_expon > 0) {
- my $factor = $class -> new("2") -> bpow($two_expon);
- $self -> bmul($factor);
- } elsif ($two_expon < 0) {
- my $factor = $class -> new("0.5") -> bpow(-$two_expon);
- $self -> bmul($factor);
- }
+ $self = $self->round(@r)
+ unless @r >= 2 && !defined($r[0]) && !defined($r[1]);
+ return $downgrade -> new($self -> bdstr(), @r)
+ if defined($downgrade) && $self -> is_int();
return $self;
}
- return $self->bnan();
+ return $self -> bnan(@r);
}
sub from_bin {
@@ -735,85 +637,27 @@ sub from_bin {
# Don't modify constant (read-only) objects.
- return if $selfref && $self->modify('from_bin');
+ return $self if $selfref && $self->modify('from_bin');
my $str = shift;
+ my @r = @_;
# If called as a class method, initialize a new object.
- $self = $class -> bzero() unless $selfref;
-
- if ($str =~ s/
- ^
- \s*
-
- # sign
- ( [+-]? )
-
- # optional "bin marker"
- (?: 0? b )?
-
- # significand using the binary digits 0 and 1
- (
- [01]+ (?: _ [01]+ )*
- (?:
- \.
- (?: [01]+ (?: _ [01]+ )* )?
- )?
- |
- \.
- [01]+ (?: _ [01]+ )*
- )
-
- # exponent (power of 2) using decimal digits
- (?:
- [Pp]
- ( [+-]? )
- ( \d+ (?: _ \d+ )* )
- )?
-
- \s*
- $
- //x)
- {
- my $s_sign = $1 || '+';
- my $s_value = $2;
- my $e_sign = $3 || '+';
- my $e_value = $4 || '0';
- $s_value =~ tr/_//d;
- $e_value =~ tr/_//d;
-
- # The significand must be multiplied by 2 raised to this exponent.
-
- my $two_expon = $class -> new($e_value);
- $two_expon -> bneg() if $e_sign eq '-';
-
- # If there is a dot in the significand, remove it and adjust the
- # exponent according to the number of digits in the fraction part of
- # the significand.
-
- my $idx = index($s_value, '.');
- if ($idx >= 0) {
- substr($s_value, $idx, 1) = '';
- $two_expon -= $class -> new(CORE::length($s_value))
- -> bsub($idx);
- }
+ $self = bless {}, $class unless $selfref;
- $self -> {sign} = $s_sign;
- $self -> {_m} = $LIB -> _from_bin('0b' . $s_value);
+ if (my @parts = $class -> _bin_str_to_flt_lib_parts($str)) {
+ ($self->{sign}, $self->{_m}, $self->{_es}, $self->{_e}) = @parts;
- if ($two_expon > 0) {
- my $factor = $class -> new("2") -> bpow($two_expon);
- $self -> bmul($factor);
- } elsif ($two_expon < 0) {
- my $factor = $class -> new("0.5") -> bpow(-$two_expon);
- $self -> bmul($factor);
- }
+ $self = $self->round(@r)
+ unless @r >= 2 && !defined($r[0]) && !defined($r[1]);
+ return $downgrade -> new($self -> bdstr(), @r)
+ if defined($downgrade) && $self -> is_int();
return $self;
}
- return $self->bnan();
+ return $self -> bnan(@r);
}
sub from_ieee754 {
@@ -823,13 +667,14 @@ sub from_ieee754 {
# Don't modify constant (read-only) objects.
- return if $selfref && $self->modify('from_ieee754');
+ return $self if $selfref && $self->modify('from_ieee754');
my $in = shift; # input string (or raw bytes)
my $format = shift; # format ("binary32", "decimal64" etc.)
my $enc; # significand encoding (applies only to decimal)
my $k; # storage width in bits
my $b; # base
+ my @r = @_; # rounding parameters, if any
if ($format =~ /^binary(\d+)\z/) {
$k = $1;
@@ -890,7 +735,7 @@ sub from_ieee754 {
# The maximum exponent, minimum exponent, and exponent bias.
- my $emax = Math::BigInt -> new(2) -> bpow($w - 1) -> bdec();
+ my $emax = Math::BigFloat -> new(2) -> bpow($w - 1) -> bdec();
my $emin = 1 - $emax;
my $bias = $emax;
@@ -898,7 +743,7 @@ sub from_ieee754 {
unless (defined $in) {
carp("Input is undefined");
- return $self -> bzero();
+ return $self -> bzero(@r);
}
# Make sure input string is a string of zeros and ones.
@@ -927,7 +772,7 @@ sub from_ieee754 {
my $x;
- $expo -> bsub($bias); # subtract bias
+ $expo = $expo -> bsub($bias); # subtract bias
if ($expo < $emin) { # zero and subnormals
if ($mant == 0) { # zero
@@ -935,8 +780,8 @@ sub from_ieee754 {
} else { # subnormals
# compute (1/$b)**(N) rather than ($b)**(-N)
$x = $class -> new("0.5"); # 1/$b
- $x -> bpow($bias + $t - 1) -> bmul($mant);
- $x -> bneg() if $sign eq '-';
+ $x = $x -> bpow($bias + $t - 1) -> bmul($mant);
+ $x = $x -> bneg() if $sign eq '-';
}
}
@@ -944,7 +789,7 @@ sub from_ieee754 {
if ($mant == 0) { # inf
$x = $class -> binf($sign);
} else { # nan
- $x = $class -> bnan();
+ $x = $class -> bnan(@r);
}
}
@@ -953,12 +798,12 @@ sub from_ieee754 {
if ($expo < $t) {
# compute (1/$b)**(N) rather than ($b)**(-N)
$x = $class -> new("0.5"); # 1/$b
- $x -> bpow($t - $expo) -> bmul($mant);
+ $x = $x -> bpow($t - $expo) -> bmul($mant);
} else {
$x = $class -> new(2);
- $x -> bpow($expo - $t) -> bmul($mant);
+ $x = $x -> bpow($expo - $t) -> bmul($mant);
}
- $x -> bneg() if $sign eq '-';
+ $x = $x -> bneg() if $sign eq '-';
}
if ($selfref) {
@@ -969,7 +814,10 @@ sub from_ieee754 {
} else {
$self = $x;
}
- return $self;
+
+ return $downgrade -> new($self -> bdstr(), @r)
+ if defined($downgrade) && $self -> is_int();
+ return $self -> round(@r);
}
croak("The format '$format' is not yet supported.");
@@ -978,9 +826,12 @@ sub from_ieee754 {
sub bzero {
# create/assign '+0'
- if (@_ == 0) {
- #carp("Using bone() as a function is deprecated;",
- # " use bone() as a method instead");
+ # Class::method(...) -> Class->method(...)
+ unless (@_ && (defined(blessed($_[0])) && $_[0] -> isa(__PACKAGE__) ||
+ $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i))
+ {
+ #carp "Using ", (caller(0))[3], "() as a function is deprecated;",
+ # " use is as a method instead";
unshift @_, __PACKAGE__;
}
@@ -989,7 +840,18 @@ sub bzero {
my $class = $selfref || $self;
$self->import() if $IMPORT == 0; # make require work
- return if $selfref && $self->modify('bzero');
+
+ # Don't modify constant (read-only) objects.
+
+ return $self if $selfref && $self->modify('bzero');
+
+ # Get the rounding parameters, if any.
+
+ my @r = @_;
+
+ return $downgrade -> bzero(@r) if defined $downgrade;
+
+ # If called as a class method, initialize a new object.
$self = bless {}, $class unless $selfref;
@@ -1002,11 +864,13 @@ sub bzero {
# parameters are given, and if called as a class method initialize the new
# instance with the class variables.
- if (@_) {
+ #return $self -> round(@r); # this should work, but doesnt; fixme!
+
+ if (@r) {
croak "can't specify both accuracy and precision"
- if @_ >= 2 && defined $_[0] && defined $_[1];
- $self->{_a} = $_[0];
- $self->{_p} = $_[1];
+ if @r >= 2 && defined($r[0]) && defined($r[1]);
+ $self->{_a} = $r[0];
+ $self->{_p} = $r[1];
} else {
unless($selfref) {
$self->{_a} = $class -> accuracy();
@@ -1020,9 +884,12 @@ sub bzero {
sub bone {
# Create or assign '+1' (or -1 if given sign '-').
- if (@_ == 0 || (defined($_[0]) && ($_[0] eq '+' || $_[0] eq '-'))) {
- #carp("Using bone() as a function is deprecated;",
- # " use bone() as a method instead");
+ # Class::method(...) -> Class->method(...)
+ unless (@_ && (defined(blessed($_[0])) && $_[0] -> isa(__PACKAGE__) ||
+ $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i))
+ {
+ #carp "Using ", (caller(0))[3], "() as a function is deprecated;",
+ # " use is as a method instead";
unshift @_, __PACKAGE__;
}
@@ -1031,10 +898,26 @@ sub bone {
my $class = $selfref || $self;
$self->import() if $IMPORT == 0; # make require work
- return if $selfref && $self->modify('bone');
- my $sign = shift;
- $sign = defined $sign && $sign =~ /^\s*-/ ? "-" : "+";
+ # Don't modify constant (read-only) objects.
+
+ return $self if $selfref && $self->modify('bone');
+
+ return $downgrade -> bone(@_) if defined $downgrade;
+
+ # Get the sign.
+
+ my $sign = '+'; # default is to return +1
+ if (defined($_[0]) && $_[0] =~ /^\s*([+-])\s*$/) {
+ $sign = $1;
+ shift;
+ }
+
+ # Get the rounding parameters, if any.
+
+ my @r = @_;
+
+ # If called as a class method, initialize a new object.
$self = bless {}, $class unless $selfref;
@@ -1047,9 +930,11 @@ sub bone {
# parameters are given, and if called as a class method initialize the new
# instance with the class variables.
- if (@_) {
+ #return $self -> round(@r); # this should work, but doesnt; fixme!
+
+ if (@r) {
croak "can't specify both accuracy and precision"
- if @_ >= 2 && defined $_[0] && defined $_[1];
+ if @r >= 2 && defined($r[0]) && defined($r[1]);
$self->{_a} = $_[0];
$self->{_p} = $_[1];
} else {
@@ -1065,11 +950,12 @@ sub bone {
sub binf {
# create/assign a '+inf' or '-inf'
- if (@_ == 0 || (defined($_[0]) && !ref($_[0]) &&
- $_[0] =~ /^\s*[+-](inf(inity)?)?\s*$/))
+ # Class::method(...) -> Class->method(...)
+ unless (@_ && (defined(blessed($_[0])) && $_[0] -> isa(__PACKAGE__) ||
+ $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i))
{
- #carp("Using binf() as a function is deprecated;",
- # " use binf() as a method instead");
+ #carp "Using ", (caller(0))[3], "() as a function is deprecated;",
+ # " use is as a method instead";
unshift @_, __PACKAGE__;
}
@@ -1085,10 +971,26 @@ sub binf {
}
$self->import() if $IMPORT == 0; # make require work
- return if $selfref && $self->modify('binf');
- my $sign = shift;
- $sign = defined $sign && $sign =~ /^\s*-/ ? "-" : "+";
+ # Don't modify constant (read-only) objects.
+
+ return $self if $selfref && $self->modify('binf');
+
+ return $downgrade -> binf(@_) if $downgrade;
+
+ # Get the sign.
+
+ my $sign = '+'; # default is to return positive infinity
+ if (defined($_[0]) && $_[0] =~ /^\s*([+-])(inf|$)/i) {
+ $sign = $1;
+ shift;
+ }
+
+ # Get the rounding parameters, if any.
+
+ my @r = @_;
+
+ # If called as a class method, initialize a new object.
$self = bless {}, $class unless $selfref;
@@ -1101,11 +1003,13 @@ sub binf {
# parameters are given, and if called as a class method initialize the new
# instance with the class variables.
- if (@_) {
+ #return $self -> round(@r); # this should work, but doesnt; fixme!
+
+ if (@r) {
croak "can't specify both accuracy and precision"
- if @_ >= 2 && defined $_[0] && defined $_[1];
- $self->{_a} = $_[0];
- $self->{_p} = $_[1];
+ if @r >= 2 && defined($r[0]) && defined($r[1]);
+ $self->{_a} = $r[0];
+ $self->{_p} = $r[1];
} else {
unless($selfref) {
$self->{_a} = $class -> accuracy();
@@ -1119,9 +1023,12 @@ sub binf {
sub bnan {
# create/assign a 'NaN'
- if (@_ == 0) {
- #carp("Using bnan() as a function is deprecated;",
- # " use bnan() as a method instead");
+ # Class::method(...) -> Class->method(...)
+ unless (@_ && (defined(blessed($_[0])) && $_[0] -> isa(__PACKAGE__) ||
+ $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i))
+ {
+ #carp "Using ", (caller(0))[3], "() as a function is deprecated;",
+ # " use is as a method instead";
unshift @_, __PACKAGE__;
}
@@ -1137,7 +1044,18 @@ sub bnan {
}
$self->import() if $IMPORT == 0; # make require work
- return if $selfref && $self->modify('bnan');
+
+ # Don't modify constant (read-only) objects.
+
+ return $self if $selfref && $self->modify('bnan');
+
+ return $downgrade -> bnan(@_) if defined $downgrade;
+
+ # Get the rounding parameters, if any.
+
+ my @r = @_;
+
+ # If called as a class method, initialize a new object.
$self = bless {}, $class unless $selfref;
@@ -1150,11 +1068,13 @@ sub bnan {
# parameters are given, and if called as a class method initialize the new
# instance with the class variables.
- if (@_) {
+ #return $self -> round(@r); # this should work, but doesnt; fixme!
+
+ if (@r) {
croak "can't specify both accuracy and precision"
- if @_ >= 2 && defined $_[0] && defined $_[1];
- $self->{_a} = $_[0];
- $self->{_p} = $_[1];
+ if @r >= 2 && defined($r[0]) && defined($r[1]);
+ $self->{_a} = $r[0];
+ $self->{_p} = $r[1];
} else {
unless($selfref) {
$self->{_a} = $class -> accuracy();
@@ -1167,6 +1087,15 @@ sub bnan {
sub bpi {
+ # Class::method(...) -> Class->method(...)
+ unless (@_ && (defined(blessed($_[0])) && $_[0] -> isa(__PACKAGE__) ||
+ $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i))
+ {
+ #carp "Using ", (caller(0))[3], "() as a function is deprecated;",
+ # " use is as a method instead";
+ unshift @_, __PACKAGE__;
+ }
+
# Called as Argument list
# --------- -------------
# Math::BigFloat->bpi() ("Math::BigFloat")
@@ -1188,35 +1117,12 @@ sub bpi {
my $self = shift;
my $selfref = ref $self;
my $class = $selfref || $self;
+ my @r = @_; # rounding paramters
- my @r; # rounding paramters
-
- # If bpi() is called as a function ...
- #
- # This cludge is necessary because we still support bpi() as a function. If
- # bpi() is called with either no argument or one argument, and that one
- # argument is either undefined or a scalar that looks like a number, then
- # we assume bpi() is called as a function.
-
- if (@_ == 0 &&
- (defined($self) && !ref($self) && $self =~ /^\s*[+-]?\d/i)
- ||
- !defined($self))
- {
- $r[0] = $self;
- $class = __PACKAGE__;
- $self = $class -> bzero(@r); # initialize
- }
-
- # ... or if bpi() is called as a method ...
-
- else {
- @r = @_;
- if ($selfref) { # bpi() called as instance method
- return $self if $self -> modify('bpi');
- } else { # bpi() called as class method
- $self = $class -> bzero(@r); # initialize
- }
+ if ($selfref) { # bpi() called as an instance method
+ return $self if $self -> modify('bpi');
+ } else { # bpi() called as a class method
+ $self = bless {}, $class; # initialize new instance
}
($self, @r) = $self -> _find_round_parameters(@r);
@@ -1291,13 +1197,19 @@ EOF
if ($last_digit lt '9') {
substr($digits, -1, 1) = ++$last_digit;
} else {
- $digits =~ s/([0-8])(9+)$/ ($1 + 1) . ("0" x CORE::length($2)) /e;
+ $digits =~ s{([0-8])(9+)$}
+ { ($1 + 1) . ("0" x CORE::length($2)) }e;
}
}
- # Append the exponent and convert to an object.
+ # Convert to an object.
- $pi = Math::BigFloat -> new($digits . 'e-' . ($n - 1));
+ $pi = bless {
+ sign => '+',
+ _m => $LIB -> _new($digits),
+ _es => '-',
+ _e => $LIB -> _new($n - 1),
+ }, $class;
} else {
@@ -1308,20 +1220,21 @@ EOF
$n += 8;
$HALF = $class -> new($HALF) unless ref($HALF);
- my ($an, $bn, $tn, $pn) = ($class -> bone, $HALF -> copy() -> bsqrt($n),
- $HALF -> copy() -> bmul($HALF), $class -> bone);
+ my ($an, $bn, $tn, $pn)
+ = ($class -> bone, $HALF -> copy() -> bsqrt($n),
+ $HALF -> copy() -> bmul($HALF), $class -> bone);
while ($pn < $n) {
my $prev_an = $an -> copy();
- $an -> badd($bn) -> bmul($HALF, $n);
- $bn -> bmul($prev_an) -> bsqrt($n);
- $prev_an -> bsub($an);
- $tn -> bsub($pn * $prev_an * $prev_an);
- $pn -> badd($pn);
+ $an = $an -> badd($bn) -> bmul($HALF, $n);
+ $bn = $bn -> bmul($prev_an) -> bsqrt($n);
+ $prev_an = $prev_an -> bsub($an);
+ $tn = $tn -> bsub($pn * $prev_an * $prev_an);
+ $pn = $pn -> badd($pn);
}
- $an -> badd($bn);
- $an -> bmul($an, $n) -> bdiv(4 * $tn, $n);
+ $an = $an -> badd($bn);
+ $an = $an -> bmul($an, $n) -> bdiv(4 * $tn, $n);
- $an -> round(@r);
+ $an = $an -> round(@r);
$pi = $an;
}
@@ -1335,54 +1248,95 @@ EOF
$self -> {$key} = $pi -> {$key};
}
+ return $downgrade -> new($self -> bdstr(), @r)
+ if defined($downgrade) && $self->is_int();
return $self;
}
sub copy {
- my $self = shift;
- my $selfref = ref $self;
- my $class = $selfref || $self;
-
- # If called as a class method, the object to copy is the next argument.
+ my ($x, $class);
+ if (ref($_[0])) { # $y = $x -> copy()
+ $x = shift;
+ $class = ref($x);
+ } else { # $y = Math::BigInt -> copy($y)
+ $class = shift;
+ $x = shift;
+ }
- $self = shift() unless $selfref;
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @_;
my $copy = bless {}, $class;
- $copy->{sign} = $self->{sign};
- $copy->{_es} = $self->{_es};
- $copy->{_m} = $LIB->_copy($self->{_m});
- $copy->{_e} = $LIB->_copy($self->{_e});
- $copy->{_a} = $self->{_a} if exists $self->{_a};
- $copy->{_p} = $self->{_p} if exists $self->{_p};
+ $copy->{sign} = $x->{sign};
+ $copy->{_es} = $x->{_es};
+ $copy->{_m} = $LIB->_copy($x->{_m});
+ $copy->{_e} = $LIB->_copy($x->{_e});
+ $copy->{_a} = $x->{_a} if exists $x->{_a};
+ $copy->{_p} = $x->{_p} if exists $x->{_p};
return $copy;
}
-sub as_number {
+sub as_int {
# return copy as a bigint representation of this Math::BigFloat number
- my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
- return $x if $x->modify('as_number');
+ return $x -> copy() if $x -> isa("Math::BigInt");
- if (!$x->isa('Math::BigFloat')) {
- # if the object can as_number(), use it
- return $x->as_number() if $x->can('as_number');
- # otherwise, get us a float and then a number
- $x = $x->can('as_float') ? $x->as_float() : $class->new(0+"$x");
- }
+ # disable upgrading and downgrading
- return Math::BigInt->binf($x->sign()) if $x->is_inf();
- return Math::BigInt->bnan() if $x->is_nan();
+ require Math::BigInt;
+ my $upg = Math::BigInt -> upgrade();
+ my $dng = Math::BigInt -> downgrade();
+ Math::BigInt -> upgrade(undef);
+ Math::BigInt -> downgrade(undef);
- my $z = $LIB->_copy($x->{_m});
- if ($x->{_es} eq '-') { # < 0
- $z = $LIB->_rsft($z, $x->{_e}, 10);
- } elsif (! $LIB->_is_zero($x->{_e})) { # > 0
- $z = $LIB->_lsft($z, $x->{_e}, 10);
+ my $y;
+ if ($x -> is_inf()) {
+ $y = Math::BigInt -> binf($x->sign());
+ } elsif ($x -> is_nan()) {
+ $y = Math::BigInt -> bnan();
+ } else {
+ $y = $LIB->_copy($x->{_m});
+ if ($x->{_es} eq '-') { # < 0
+ $y = $LIB->_rsft($y, $x->{_e}, 10);
+ } elsif (! $LIB->_is_zero($x->{_e})) { # > 0
+ $y = $LIB->_lsft($y, $x->{_e}, 10);
+ }
+ $y = Math::BigInt->new($x->{sign} . $LIB->_str($y));
}
- $z = Math::BigInt->new($x->{sign} . $LIB->_str($z));
- $z;
+
+ # reset upgrading and downgrading
+
+ Math::BigInt -> upgrade($upg);
+ Math::BigInt -> downgrade($dng);
+
+ return $y;
+}
+
+sub as_float {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ return $x -> copy() if $x -> isa("Math::BigFloat");
+
+ # disable upgrading and downgrading
+
+ require Math::BigFloat;
+ my $upg = Math::BigFloat -> upgrade();
+ my $dng = Math::BigFloat -> downgrade();
+ Math::BigFloat -> upgrade(undef);
+ Math::BigFloat -> downgrade(undef);
+
+ my $y = Math::BigFloat -> new($x);
+
+ # reset upgrading and downgrading
+
+ Math::BigFloat -> upgrade($upg);
+ Math::BigFloat -> downgrade($dng);
+
+ return $y;
}
###############################################################################
@@ -1391,14 +1345,14 @@ sub as_number {
sub is_zero {
# return true if arg (BFLOAT or num_str) is zero
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my (undef, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
($x->{sign} eq '+' && $LIB->_is_zero($x->{_m})) ? 1 : 0;
}
sub is_one {
# return true if arg (BFLOAT or num_str) is +1 or -1 if signis given
- my ($class, $x, $sign) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+ my (undef, $x, $sign) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
$sign = '+' if !defined $sign || $sign ne '-';
@@ -1409,7 +1363,7 @@ sub is_one {
sub is_odd {
# return true if arg (BFLOAT or num_str) is odd or false if even
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my (undef, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
(($x->{sign} =~ /^[+-]$/) && # NaN & +-inf aren't
($LIB->_is_zero($x->{_e})) &&
@@ -1418,7 +1372,7 @@ sub is_odd {
sub is_even {
# return true if arg (BINT or num_str) is even or false if odd
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my (undef, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
(($x->{sign} =~ /^[+-]$/) && # NaN & +-inf aren't
($x->{_es} eq '+') && # 123.45 isn't
@@ -1427,7 +1381,7 @@ sub is_even {
sub is_int {
# return true if arg (BFLOAT or num_str) is an integer
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my (undef, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
(($x->{sign} =~ /^[+-]$/) && # NaN and +-inf aren't
($x->{_es} eq '+')) ? 1 : 0; # 1e-1 => no integer
@@ -1441,19 +1395,15 @@ sub bcmp {
# Compares 2 values. Returns one of undef, <0, =0, >0. (suitable for sort)
# set up parameters
- my ($class, $x, $y) = (ref($_[0]), @_);
-
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
- return $upgrade->bcmp($x, $y) if defined $upgrade &&
- ((!$x->isa($class)) || (!$y->isa($class)));
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
# Handle all 'nan' cases.
- return undef if ($x->{sign} eq $nan) || ($y->{sign} eq $nan);
+ return if ($x->{sign} eq $nan) || ($y->{sign} eq $nan);
# Handle all '+inf' and '-inf' cases.
@@ -1488,8 +1438,9 @@ sub bcmp {
my $mxl = $LIB->_len($x->{_m});
my $myl = $LIB->_len($y->{_m});
- # If the mantissas have the same length, there is no point in normalizing the
- # exponents by the length of the mantissas, so treat that as a special case.
+ # If the mantissas have the same length, there is no point in normalizing
+ # the exponents by the length of the mantissas, so treat that as a special
+ # case.
if ($mxl == $myl) {
@@ -1527,8 +1478,8 @@ sub bcmp {
if ($x->{_es} eq '+') {
- # If the exponent of x is >= 0 and the exponent of y is >= 0, there is no
- # need to do anything special.
+ # If the exponent of x is >= 0 and the exponent of y is >= 0, there is
+ # no need to do anything special.
if ($y->{_es} eq '+') {
$ex = $LIB->_copy($x->{_e});
@@ -1577,8 +1528,8 @@ sub bcmp {
return $cmp if $cmp;
# Compare the mantissas, but first normalize them by padding the shorter
- # mantissa with zeros (shift left) until it has the same length as the longer
- # mantissa.
+ # mantissa with zeros (shift left) until it has the same length as the
+ # longer mantissa.
my $mx = $x->{_m};
my $my = $y->{_m};
@@ -1600,20 +1551,17 @@ sub bacmp {
# Returns one of undef, <0, =0, >0. (suitable for sort)
# set up parameters
- my ($class, $x, $y) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
- return $upgrade->bacmp($x, $y) if defined $upgrade &&
- ((!$x->isa($class)) || (!$y->isa($class)));
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
# handle +-inf and NaN's
if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/) {
- return undef if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
- return 0 if ($x->is_inf() && $y->is_inf());
- return 1 if ($x->is_inf() && !$y->is_inf());
+ return if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+ return 0 if ($x->is_inf() && $y->is_inf());
+ return 1 if ($x->is_inf() && !$y->is_inf());
return -1;
}
@@ -1658,20 +1606,35 @@ sub bacmp {
sub bneg {
# (BINT or num_str) return BINT
# negate number or make a negated number from string
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my (undef, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
return $x if $x->modify('bneg');
- # for +0 do not negate (to have always normalized +0). Does nothing for 'NaN'
- $x->{sign} =~ tr/+-/-+/ unless ($x->{sign} eq '+' && $LIB->_is_zero($x->{_m}));
- $x;
+ return $x -> bnan(@r) if $x -> is_nan();
+
+ # For +0 do not negate (to have always normalized +0).
+ $x->{sign} =~ tr/+-/-+/
+ unless $x->{sign} eq '+' && $LIB->_is_zero($x->{_m});
+
+ return $downgrade -> new($x -> bdstr(), @r) if defined($downgrade)
+ && ($x -> is_int() || $x -> is_inf() || $x -> is_nan());
+ return $x -> round(@r);
}
sub bnorm {
+ # bnorm() can't support rounding, because bround() and bfround() call
+ # bnorm(), which would recurse indefinitely.
+
# adjust m and e so that m is smallest possible
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my (undef, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
- return $x if $x->{sign} !~ /^[+-]$/; # inf, nan etc
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # inf, nan etc
+ if ($x->{sign} !~ /^[+-]$/) {
+ return $downgrade -> new($x) if defined $downgrade;
+ return $x;
+ }
my $zeros = $LIB->_zeros($x->{_m}); # correct for trailing zeros
if ($zeros != 0) {
@@ -1690,12 +1653,17 @@ sub bnorm {
}
} else {
# $x can only be 0Ey if there are no trailing zeros ('0' has 0 trailing
- # zeros). So, for something like 0Ey, set y to 1, and -0 => +0
- $x->{sign} = '+', $x->{_es} = '+', $x->{_e} = $LIB->_one()
- if $LIB->_is_zero($x->{_m});
+ # zeros). So, for something like 0Ey, set y to 0, and -0 => +0
+ if ($LIB->_is_zero($x->{_m})) {
+ $x->{sign} = '+';
+ $x->{_es} = '+';
+ $x->{_e} = $LIB->_zero();
+ }
}
- $x;
+ return $downgrade -> new($x)
+ if defined($downgrade) && $x->is_int();
+ return $x;
}
sub binc {
@@ -1704,19 +1672,28 @@ sub binc {
return $x if $x->modify('binc');
+ # Inf and NaN
+
+ return $x -> bnan(@r) if $x -> is_nan();
+ return $x -> binf($x->{sign}, @r) if $x -> is_inf();
+
+ # Non-integer
+
if ($x->{_es} eq '-') {
- return $x->badd($class->bone(), @r); # digits after dot
+ return $x->badd($class->bone(), @r);
}
- if (!$LIB->_is_zero($x->{_e})) # _e == 0 for NaN, inf, -inf
- {
- # 1e2 => 100, so after the shift below _m has a '0' as last digit
+ # If the exponent is non-zero, convert the internal representation, so that,
+ # e.g., 12e+3 becomes 12000e+0 and we can easily increment the mantissa.
+
+ if (!$LIB->_is_zero($x->{_e})) {
$x->{_m} = $LIB->_lsft($x->{_m}, $x->{_e}, 10); # 1e2 => 100
- $x->{_e} = $LIB->_zero(); # normalize
+ $x->{_e} = $LIB->_zero(); # normalize
$x->{_es} = '+';
# we know that the last digit of $x will be '1' or '9', depending on the
# sign
}
+
# now $x->{_e} == 0
if ($x->{sign} eq '+') {
$x->{_m} = $LIB->_inc($x->{_m});
@@ -1726,8 +1703,10 @@ sub binc {
$x->{sign} = '+' if $LIB->_is_zero($x->{_m}); # -1 +1 => -0 => +0
return $x->bnorm()->bround(@r);
}
- # inf, nan handling etc
- $x->badd($class->bone(), @r); # badd() does round
+
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && $x -> is_int();
+ return $x;
}
sub bdec {
@@ -1736,143 +1715,167 @@ sub bdec {
return $x if $x->modify('bdec');
+ # Inf and NaN
+
+ return $x -> bnan(@r) if $x -> is_nan();
+ return $x -> binf($x->{sign}, @r) if $x -> is_inf();
+
+ # Non-integer
+
if ($x->{_es} eq '-') {
- return $x->badd($class->bone('-'), @r); # digits after dot
+ return $x->badd($class->bone('-'), @r);
}
+ # If the exponent is non-zero, convert the internal representation, so that,
+ # e.g., 12e+3 becomes 12000e+0 and we can easily increment the mantissa.
+
if (!$LIB->_is_zero($x->{_e})) {
$x->{_m} = $LIB->_lsft($x->{_m}, $x->{_e}, 10); # 1e2 => 100
- $x->{_e} = $LIB->_zero(); # normalize
+ $x->{_e} = $LIB->_zero(); # normalize
$x->{_es} = '+';
}
+
# now $x->{_e} == 0
my $zero = $x->is_zero();
- # <= 0
- if (($x->{sign} eq '-') || $zero) {
+ if (($x->{sign} eq '-') || $zero) { # x <= 0
$x->{_m} = $LIB->_inc($x->{_m});
$x->{sign} = '-' if $zero; # 0 => 1 => -1
$x->{sign} = '+' if $LIB->_is_zero($x->{_m}); # -1 +1 => -0 => +0
return $x->bnorm()->round(@r);
}
- # > 0
- elsif ($x->{sign} eq '+') {
+ elsif ($x->{sign} eq '+') { # x > 0
$x->{_m} = $LIB->_dec($x->{_m});
return $x->bnorm()->round(@r);
}
- # inf, nan handling etc
- $x->badd($class->bone('-'), @r); # does round
+
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && $x -> is_int();
+ return $x -> round(@r);
}
sub badd {
- # add second arg (BFLOAT or string) to first (BFLOAT) (modifies first)
- # return result as BFLOAT
-
# set up parameters
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return $x if $x->modify('badd');
# inf and NaN handling
- if (($x->{sign} !~ /^[+-]$/) || ($y->{sign} !~ /^[+-]$/)) {
- # NaN first
- return $x->bnan() if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
- # inf handling
- if (($x->{sign} =~ /^[+-]inf$/) && ($y->{sign} =~ /^[+-]inf$/)) {
- # +inf++inf or -inf+-inf => same, rest is NaN
- return $x if $x->{sign} eq $y->{sign};
- return $x->bnan();
+ if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/) {
+
+ # $x is NaN and/or $y is NaN
+ if ($x->{sign} eq $nan || $y->{sign} eq $nan) {
+ $x = $x->bnan();
}
- # +-inf + something => +inf; something +-inf => +-inf
- $x->{sign} = $y->{sign}, return $x if $y->{sign} =~ /^[+-]inf$/;
- return $x;
+
+ # $x is Inf and $y is Inf
+ elsif ($x->{sign} =~ /^[+-]inf$/ && $y->{sign} =~ /^[+-]inf$/) {
+ # +Inf + +Inf or -Inf + -Inf => same, rest is NaN
+ $x = $x->bnan() if $x->{sign} ne $y->{sign};
+ }
+
+ # +-inf + something => +-inf; something +-inf => +-inf
+ elsif ($y->{sign} =~ /^[+-]inf$/) {
+ $x->{sign} = $y->{sign};
+ }
+
+ return $downgrade -> new($x -> bdstr(), @r) if defined $downgrade;
+ return $x -> round(@r);
}
- return $upgrade->badd($x, $y, @r) if defined $upgrade &&
- ((!$x->isa($class)) || (!$y->isa($class)));
+ return $upgrade->badd($x, $y, @r) if defined $upgrade;
$r[3] = $y; # no push!
- # speed: no add for 0+y or x+0
- return $x->bround(@r) if $y->is_zero(); # x+0
- if ($x->is_zero()) # 0+y
- {
+ # for speed: no add for $x + 0
+ if ($y->is_zero()) {
+ $x = $x->round(@r);
+ }
+
+ # for speed: no add for 0 + $y
+ elsif ($x->is_zero()) {
# make copy, clobbering up x (modify in place!)
$x->{_e} = $LIB->_copy($y->{_e});
$x->{_es} = $y->{_es};
$x->{_m} = $LIB->_copy($y->{_m});
$x->{sign} = $y->{sign} || $nan;
- return $x->round(@r);
+ $x = $x->round(@r);
}
- # take lower of the two e's and adapt m1 to it to match m2
- my $e = $y->{_e};
- $e = $LIB->_zero() if !defined $e; # if no BFLOAT?
- $e = $LIB->_copy($e); # make copy (didn't do it yet)
+ # both $x and $y are non-zero
+ else {
- my $es;
+ # take lower of the two e's and adapt m1 to it to match m2
+ my $e = $y->{_e};
+ $e = $LIB->_zero() if !defined $e; # if no BFLOAT?
+ $e = $LIB->_copy($e); # make copy (didn't do it yet)
- ($e, $es) = _e_sub($e, $x->{_e}, $y->{_es} || '+', $x->{_es});
+ my $es;
- my $add = $LIB->_copy($y->{_m});
+ ($e, $es) = $LIB -> _ssub($e, $y->{_es} || '+', $x->{_e}, $x->{_es});
- if ($es eq '-') # < 0
- {
- $x->{_m} = $LIB->_lsft($x->{_m}, $e, 10);
- ($x->{_e}, $x->{_es}) = _e_add($x->{_e}, $e, $x->{_es}, $es);
- } elsif (!$LIB->_is_zero($e)) # > 0
- {
- $add = $LIB->_lsft($add, $e, 10);
- }
- # else: both e are the same, so just leave them
+ my $add = $LIB->_copy($y->{_m});
- if ($x->{sign} eq $y->{sign}) {
- # add
- $x->{_m} = $LIB->_add($x->{_m}, $add);
- } else {
- ($x->{_m}, $x->{sign}) =
- _e_add($x->{_m}, $add, $x->{sign}, $y->{sign});
+ if ($es eq '-') { # < 0
+ $x->{_m} = $LIB->_lsft($x->{_m}, $e, 10);
+ ($x->{_e}, $x->{_es}) = $LIB -> _sadd($x->{_e}, $x->{_es}, $e, $es);
+ } elsif (!$LIB->_is_zero($e)) { # > 0
+ $add = $LIB->_lsft($add, $e, 10);
+ }
+
+ # else: both e are the same, so just leave them
+
+ if ($x->{sign} eq $y->{sign}) {
+ $x->{_m} = $LIB->_add($x->{_m}, $add);
+ } else {
+ ($x->{_m}, $x->{sign}) =
+ $LIB -> _sadd($x->{_m}, $x->{sign}, $add, $y->{sign});
+ }
+
+ # delete trailing zeros, then round
+ $x = $x->bnorm()->round(@r);
}
- # delete trailing zeros, then round
- $x->bnorm()->round(@r);
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && $x -> is_int();
+ return $x; # rounding already done above
}
sub bsub {
- # (BINT or num_str, BINT or num_str) return BINT
- # subtract second arg from first, modify first
-
# set up parameters
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
-
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return $x if $x -> modify('bsub');
- return $upgrade -> new($x) -> bsub($upgrade -> new($y), @r)
- if defined $upgrade && (!$x -> isa($class) || !$y -> isa($class));
-
- return $x -> round(@r) if $y -> is_zero();
+ if ($y -> is_zero()) {
+ $x = $x -> round(@r);
+ } else {
- # To correctly handle the lone special case $x -> bsub($x), we note the
- # sign of $x, then flip the sign from $y, and if the sign of $x did change,
- # too, then we caught the special case:
+ # To correctly handle the special case $x -> bsub($x), we note the sign
+ # of $x, then flip the sign of $y, and if the sign of $x changed too,
+ # then we know that $x and $y are the same object.
- my $xsign = $x -> {sign};
- $y -> {sign} =~ tr/+-/-+/; # does nothing for NaN
- if ($xsign ne $x -> {sign}) {
- # special case of $x -> bsub($x) results in 0
- return $x -> bzero(@r) if $xsign =~ /^[+-]$/;
- return $x -> bnan(); # NaN, -inf, +inf
+ my $xsign = $x -> {sign};
+ $y -> {sign} =~ tr/+-/-+/; # does nothing for NaN
+ if ($xsign ne $x -> {sign}) {
+ # special case of $x -> bsub($x) results in 0
+ if ($xsign =~ /^[+-]$/) {
+ $x = $x -> bzero(@r);
+ } else {
+ $x = $x -> bnan(); # NaN, -inf, +inf
+ }
+ return $downgrade -> new($x -> bdstr(), @r) if defined $downgrade;
+ return $x -> round(@r);
+ }
+ $x = $x -> badd($y, @r); # badd does not leave internal zeros
+ $y -> {sign} =~ tr/+-/-+/; # reset $y (does nothing for NaN)
}
- $x -> badd($y, @r); # badd does not leave internal zeros
- $y -> {sign} =~ tr/+-/-+/; # refix $y (does nothing for NaN)
+
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && ($x->is_int() || $x->is_inf() || $x->is_nan());
$x; # already rounded by badd() or no rounding
}
@@ -1880,70 +1883,73 @@ sub bmul {
# multiply two numbers
# set up parameters
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return $x if $x->modify('bmul');
- return $x->bnan() if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+ return $x->bnan(@r) if ($x->{sign} eq $nan) || ($y->{sign} eq $nan);
# inf handling
if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/)) {
- return $x->bnan() if $x->is_zero() || $y->is_zero();
+ return $x->bnan(@r) if $x->is_zero() || $y->is_zero();
# result will always be +-inf:
# +inf * +/+inf => +inf, -inf * -/-inf => +inf
# +inf * -/-inf => -inf, -inf * +/+inf => -inf
- return $x->binf() if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
- return $x->binf() if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
- return $x->binf('-');
+ return $x->binf(@r) if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
+ return $x->binf(@r) if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
+ return $x->binf('-', @r);
}
- return $upgrade->bmul($x, $y, @r) if defined $upgrade &&
- ((!$x->isa($class)) || (!$y->isa($class)));
+ return $upgrade->bmul($x, $y, @r) if defined $upgrade;
# aEb * cEd = (a*c)E(b+d)
$x->{_m} = $LIB->_mul($x->{_m}, $y->{_m});
- ($x->{_e}, $x->{_es}) = _e_add($x->{_e}, $y->{_e}, $x->{_es}, $y->{_es});
+ ($x->{_e}, $x->{_es})
+ = $LIB -> _sadd($x->{_e}, $x->{_es}, $y->{_e}, $y->{_es});
$r[3] = $y; # no push!
# adjust sign:
$x->{sign} = $x->{sign} ne $y->{sign} ? '-' : '+';
- $x->bnorm->round(@r);
+ $x = $x->bnorm->round(@r);
+
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && ($x->is_int() || $x->is_inf() || $x->is_nan());
+ return $x;
}
sub bmuladd {
# multiply two numbers and add the third to the result
# set up parameters
- my ($class, $x, $y, $z, @r) = objectify(3, @_);
+ my ($class, $x, $y, $z, @r)
+ = ref($_[0]) && ref($_[0]) eq ref($_[1]) && ref($_[1]) eq ref($_[2])
+ ? (ref($_[0]), @_)
+ : objectify(3, @_);
return $x if $x->modify('bmuladd');
- return $x->bnan() if (($x->{sign} eq $nan) ||
- ($y->{sign} eq $nan) ||
- ($z->{sign} eq $nan));
+ return $x->bnan(@r) if (($x->{sign} eq $nan) ||
+ ($y->{sign} eq $nan) ||
+ ($z->{sign} eq $nan));
# inf handling
if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/)) {
- return $x->bnan() if $x->is_zero() || $y->is_zero();
+ return $x->bnan(@r) if $x->is_zero() || $y->is_zero();
# result will always be +-inf:
# +inf * +/+inf => +inf, -inf * -/-inf => +inf
# +inf * -/-inf => -inf, -inf * +/+inf => -inf
- return $x->binf() if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
- return $x->binf() if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
- return $x->binf('-');
+ return $x->binf(@r) if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
+ return $x->binf(@r) if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
+ return $x->binf('-', @r);
}
- return $upgrade->bmul($x, $y, @r) if defined $upgrade &&
- ((!$x->isa($class)) || (!$y->isa($class)));
-
# aEb * cEd = (a*c)E(b+d)
$x->{_m} = $LIB->_mul($x->{_m}, $y->{_m});
- ($x->{_e}, $x->{_es}) = _e_add($x->{_e}, $y->{_e}, $x->{_es}, $y->{_es});
+ ($x->{_e}, $x->{_es})
+ = $LIB -> _sadd($x->{_e}, $x->{_es}, $y->{_e}, $y->{_es});
$r[3] = $y; # no push!
@@ -1951,7 +1957,11 @@ sub bmuladd {
$x->{sign} = $x->{sign} ne $y->{sign} ? '-' : '+';
# z=inf handling (z=NaN handled above)
- $x->{sign} = $z->{sign}, return $x if $z->{sign} =~ /^[+-]inf$/;
+ if ($z->{sign} =~ /^[+-]inf$/) {
+ $x->{sign} = $z->{sign};
+ return $downgrade -> new($x -> bdstr(), @r) if defined $downgrade;
+ return $x -> round(@r);
+ }
# take lower of the two e's and adapt m1 to it to match m2
my $e = $z->{_e};
@@ -1960,14 +1970,14 @@ sub bmuladd {
my $es;
- ($e, $es) = _e_sub($e, $x->{_e}, $z->{_es} || '+', $x->{_es});
+ ($e, $es) = $LIB -> _ssub($e, $z->{_es} || '+', $x->{_e}, $x->{_es});
my $add = $LIB->_copy($z->{_m});
if ($es eq '-') # < 0
{
$x->{_m} = $LIB->_lsft($x->{_m}, $e, 10);
- ($x->{_e}, $x->{_es}) = _e_add($x->{_e}, $e, $x->{_es}, $es);
+ ($x->{_e}, $x->{_es}) = $LIB -> _sadd($x->{_e}, $x->{_es}, $e, $es);
} elsif (!$LIB->_is_zero($e)) # > 0
{
$add = $LIB->_lsft($add, $e, 10);
@@ -1979,11 +1989,15 @@ sub bmuladd {
$x->{_m} = $LIB->_add($x->{_m}, $add);
} else {
($x->{_m}, $x->{sign}) =
- _e_add($x->{_m}, $add, $x->{sign}, $z->{sign});
+ $LIB -> _sadd($x->{_m}, $x->{sign}, $add, $z->{sign});
}
# delete trailing zeros, then round
- $x->bnorm()->round(@r);
+ $x = $x->bnorm()->round(@r);
+
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && ($x->is_int() || $x->is_inf() || $x->is_nan());
+ return $x;
}
sub bdiv {
@@ -1991,10 +2005,10 @@ sub bdiv {
# (BFLOAT, BFLOAT) (quo, rem) or BFLOAT (only quo)
# set up parameters
- my ($class, $x, $y, $a, $p, $r) = (ref($_[0]), @_);
+ my ($class, $x, $y, @r) = (ref($_[0]), @_);
# objectify is costly, so avoid it
if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, $a, $p, $r) = objectify(2, @_);
+ ($class, $x, $y, @r) = objectify(2, @_);
}
return $x if $x->modify('bdiv');
@@ -2005,7 +2019,8 @@ sub bdiv {
# Math::BigInt -> bdiv().
if ($x -> is_nan() || $y -> is_nan()) {
- return $wantarray ? ($x -> bnan(), $class -> bnan()) : $x -> bnan();
+ return $wantarray ? ($x -> bnan(@r), $class -> bnan(@r))
+ : $x -> bnan(@r);
}
# Divide by zero and modulo zero. This is handled the same way as in
@@ -2015,12 +2030,14 @@ sub bdiv {
if ($y -> is_zero()) {
my ($quo, $rem);
if ($wantarray) {
- $rem = $x -> copy();
+ $rem = $x -> copy() -> round(@r);
+ $rem = $downgrade -> new($rem, @r)
+ if defined($downgrade) && $rem -> is_int();
}
if ($x -> is_zero()) {
- $quo = $x -> bnan();
+ $quo = $x -> bnan(@r);
} else {
- $quo = $x -> binf($x -> {sign});
+ $quo = $x -> binf($x -> {sign}, @r);
}
return $wantarray ? ($quo, $rem) : $quo;
}
@@ -2031,12 +2048,12 @@ sub bdiv {
if ($x -> is_inf()) {
my ($quo, $rem);
- $rem = $class -> bnan() if $wantarray;
+ $rem = $class -> bnan(@r) if $wantarray;
if ($y -> is_inf()) {
- $quo = $x -> bnan();
+ $quo = $x -> bnan(@r);
} else {
my $sign = $x -> bcmp(0) == $y -> bcmp(0) ? '+' : '-';
- $quo = $x -> binf($sign);
+ $quo = $x -> binf($sign, @r);
}
return $wantarray ? ($quo, $rem) : $quo;
}
@@ -2051,19 +2068,21 @@ sub bdiv {
my ($quo, $rem);
if ($wantarray) {
if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
- $rem = $x -> copy();
- $quo = $x -> bzero();
+ $rem = $x -> copy() -> round(@r);
+ $rem = $downgrade -> new($rem, @r)
+ if defined($downgrade) && $rem -> is_int();
+ $quo = $x -> bzero(@r);
} else {
- $rem = $class -> binf($y -> {sign});
- $quo = $x -> bone('-');
+ $rem = $class -> binf($y -> {sign}, @r);
+ $quo = $x -> bone('-', @r);
}
return ($quo, $rem);
} else {
if ($y -> is_inf()) {
if ($x -> is_nan() || $x -> is_inf()) {
- return $x -> bnan();
+ return $x -> bnan(@r);
} else {
- return $x -> bzero();
+ return $x -> bzero(@r);
}
}
}
@@ -2073,24 +2092,37 @@ sub bdiv {
# the denominator (divisor) is non-zero.
# x == 0?
- return wantarray ? ($x, $class->bzero()) : $x if $x->is_zero();
+ if ($x->is_zero()) {
+ my ($quo, $rem);
+ $quo = $x->round(@r);
+ $quo = $downgrade -> new($quo, @r)
+ if defined($downgrade) && $quo -> is_int();
+ if ($wantarray) {
+ $rem = $class -> bzero(@r);
+ return $quo, $rem;
+ }
+ return $quo;
+ }
+
+ # Division might return a value that we can not represent exactly, so
+ # upgrade, if upgrading is enabled.
- # upgrade ?
- return $upgrade->bdiv($upgrade->new($x), $y, $a, $p, $r) if defined $upgrade;
+ return $upgrade -> bdiv($x, $y, @r)
+ if defined($upgrade) && !wantarray && !$LIB -> _is_one($y -> {_m});
# we need to limit the accuracy to protect against overflow
my $fallback = 0;
my (@params, $scale);
- ($x, @params) = $x->_find_round_parameters($a, $p, $r, $y);
+ ($x, @params) = $x->_find_round_parameters($r[0], $r[1], $r[2], $y);
- return $x if $x->is_nan(); # error in _find_round_parameters?
+ return $x -> round(@r) if $x->is_nan(); # error in _find_round_parameters?
# no rounding at all, so must use fallback
if (scalar @params == 0) {
# simulate old behaviour
$params[0] = $class->div_scale(); # and round to it as accuracy
$scale = $params[0]+4; # at least four more for proper round
- $params[2] = $r; # round mode by caller or undef
+ $params[2] = $r[2]; # round mode by caller or undef
$fallback = 1; # to clear a/p afterwards
} else {
# the 4 below is empirical, and there might be cases where it is not
@@ -2103,7 +2135,8 @@ sub bdiv {
$y = $class->new($y) unless $y->isa('Math::BigFloat');
- my $lx = $LIB -> _len($x->{_m}); my $ly = $LIB -> _len($y->{_m});
+ my $lx = $LIB -> _len($x->{_m});
+ my $ly = $LIB -> _len($y->{_m});
$scale = $lx if $lx > $scale;
$scale = $ly if $ly > $scale;
my $diff = $ly - $lx;
@@ -2119,13 +2152,14 @@ sub bdiv {
if ($xsign ne $x->{sign}) {
# special case of $x /= $x results in 1
- $x->bone(); # "fixes" also sign of $y, since $x is $y
+ $x = $x->bone(); # "fixes" also sign of $y, since $x is $y
} else {
# correct $y's sign again
$y->{sign} =~ tr/+-/-+/;
# continue with normal div code:
- # make copy of $x in case of list context for later remainder calculation
+ # make copy of $x in case of list context for later remainder
+ # calculation
if (wantarray && $y_not_one) {
$rem = $x->copy();
}
@@ -2134,7 +2168,8 @@ sub bdiv {
# check for / +-1 (+/- 1E0)
if ($y_not_one) {
- # promote BigInts and it's subclasses (except when already a Math::BigFloat)
+ # promote Math::BigInt and its subclasses (except when already a
+ # Math::BigFloat)
$y = $class->new($y) unless $y->isa('Math::BigFloat');
# calculate the result to $scale digits and then round it
@@ -2143,70 +2178,77 @@ sub bdiv {
$x->{_m} = $LIB->_div($x->{_m}, $y->{_m}); # a/c
# correct exponent of $x
- ($x->{_e}, $x->{_es}) = _e_sub($x->{_e}, $y->{_e}, $x->{_es}, $y->{_es});
+ ($x->{_e}, $x->{_es})
+ = $LIB -> _ssub($x->{_e}, $x->{_es}, $y->{_e}, $y->{_es});
# correct for 10**scale
- ($x->{_e}, $x->{_es}) = _e_sub($x->{_e}, $LIB->_new($scale), $x->{_es}, '+');
- $x->bnorm(); # remove trailing 0's
+ ($x->{_e}, $x->{_es})
+ = $LIB -> _ssub($x->{_e}, $x->{_es}, $LIB->_new($scale), '+');
+ $x = $x->bnorm(); # remove trailing 0's
}
} # end else $x != $y
# shortcut to not run through _find_round_parameters again
if (defined $params[0]) {
delete $x->{_a}; # clear before round
- $x->bround($params[0], $params[2]); # then round accordingly
+ $x = $x->bround($params[0], $params[2]); # then round accordingly
} else {
delete $x->{_p}; # clear before round
- $x->bfround($params[1], $params[2]); # then round accordingly
+ $x = $x->bfround($params[1], $params[2]); # then round accordingly
}
if ($fallback) {
# clear a/p after round, since user did not request it
- delete $x->{_a}; delete $x->{_p};
+ delete $x->{_a};
+ delete $x->{_p};
}
if (wantarray) {
if ($y_not_one) {
- $x -> bfloor();
- $rem->bmod($y, @params); # copy already done
+ $x = $x -> bfloor();
+ $rem = $rem->bmod($y, @params); # copy already done
}
if ($fallback) {
# clear a/p after round, since user did not request it
- delete $rem->{_a}; delete $rem->{_p};
+ delete $rem->{_a};
+ delete $rem->{_p};
}
+ $x = $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && $x -> is_int();
+ $rem = $downgrade -> new($rem -> bdstr(), @r)
+ if defined($downgrade) && $rem -> is_int();
return ($x, $rem);
}
- $x;
+
+ $x = $downgrade -> new($x, @r)
+ if defined($downgrade) && $x -> is_int();
+ $x; # rounding already done above
}
sub bmod {
# (dividend: BFLOAT or num_str, divisor: BFLOAT or num_str) return remainder
# set up parameters
- my ($class, $x, $y, $a, $p, $r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, $a, $p, $r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return $x if $x->modify('bmod');
# At least one argument is NaN. This is handled the same way as in
# Math::BigInt -> bmod().
- if ($x -> is_nan() || $y -> is_nan()) {
- return $x -> bnan();
- }
+ return $x -> bnan(@r) if $x -> is_nan() || $y -> is_nan();
# Modulo zero. This is handled the same way as in Math::BigInt -> bmod().
if ($y -> is_zero()) {
- return $x;
+ return $x -> round(@r);
}
# Numerator (dividend) is +/-inf. This is handled the same way as in
# Math::BigInt -> bmod().
if ($x -> is_inf()) {
- return $x -> bnan();
+ return $x -> bnan(@r);
}
# Denominator (divisor) is +/-inf. This is handled the same way as in
@@ -2214,20 +2256,20 @@ sub bmod {
if ($y -> is_inf()) {
if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
- return $x;
+ return $x -> round(@r);
} else {
- return $x -> binf($y -> sign());
+ return $x -> binf($y -> sign(), @r);
}
}
- return $x->bzero() if $x->is_zero()
+ return $x->bzero(@r) if $x->is_zero()
|| ($x->is_int() &&
# check that $y == +1 or $y == -1:
($LIB->_is_zero($y->{_e}) && $LIB->_is_one($y->{_m})));
my $cmp = $x->bacmp($y); # equal or $x < $y?
if ($cmp == 0) { # $x == $y => result 0
- return $x -> bzero($a, $p);
+ return $x -> bzero(@r);
}
# only $y of the operands negative?
@@ -2235,7 +2277,7 @@ sub bmod {
$x->{sign} = $y->{sign}; # calc sign first
if ($cmp < 0 && $neg == 0) { # $x < $y => result $x
- return $x -> round($a, $p, $r);
+ return $x -> round(@r);
}
my $ym = $LIB->_copy($y->{_m});
@@ -2250,7 +2292,8 @@ sub bmod {
{
# 123 % 2.5 => 1230 % 25 => 5 => 0.5
$shifty = $LIB->_num($y->{_e}); # no more digits after dot
- $x->{_m} = $LIB->_lsft($x->{_m}, $y->{_e}, 10); # 123 => 1230, $y->{_m} is already 25
+ # 123 => 1230, $y->{_m} is already 25
+ $x->{_m} = $LIB->_lsft($x->{_m}, $y->{_e}, 10);
}
# $ym is now mantissa of $y based on exponent 0
@@ -2276,48 +2319,60 @@ sub bmod {
$x->{_m} = $LIB->_mod($x->{_m}, $ym);
$x->{sign} = '+' if $LIB->_is_zero($x->{_m}); # fix sign for -0
- $x->bnorm();
+ $x = $x->bnorm();
- if ($neg != 0 && ! $x -> is_zero()) # one of them negative => correct in place
- {
+ # if one of them negative => correct in place
+ if ($neg != 0 && ! $x -> is_zero()) {
my $r = $y - $x;
$x->{_m} = $r->{_m};
$x->{_e} = $r->{_e};
$x->{_es} = $r->{_es};
$x->{sign} = '+' if $LIB->_is_zero($x->{_m}); # fix sign for -0
- $x->bnorm();
+ $x = $x->bnorm();
}
- $x->round($a, $p, $r, $y); # round and return
+ $x = $x->round($r[0], $r[1], $r[2], $y);
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && ($x->is_int() || $x->is_inf() || $x->is_nan());
+ return $x;
}
sub bmodpow {
# takes a very large number to a very large exponent in a given very
# large modulus, quickly, thanks to binary exponentiation. Supports
# negative exponents.
- my ($class, $num, $exp, $mod) = objectify(3, @_);
+ my ($class, $num, $exp, $mod, @r)
+ = ref($_[0]) && ref($_[0]) eq ref($_[1]) && ref($_[1]) eq ref($_[2])
+ ? (ref($_[0]), @_)
+ : objectify(3, @_);
return $num if $num->modify('bmodpow');
+ return $num -> bnan(@r)
+ if $mod->is_nan() || $exp->is_nan() || $mod->is_nan();
+
# check modulus for valid values
- return $num->bnan() if ($mod->{sign} ne '+' # NaN, -, -inf, +inf
- || $mod->is_zero());
+ return $num->bnan(@r) if $mod->{sign} ne '+' || $mod->is_zero();
# check exponent for valid values
if ($exp->{sign} =~ /\w/) {
# i.e., if it's NaN, +inf, or -inf...
- return $num->bnan();
+ return $num->bnan(@r);
}
- $num->bmodinv ($mod) if ($exp->{sign} eq '-');
+ $num = $num->bmodinv($mod, @r) if $exp->{sign} eq '-';
# check num for valid values (also NaN if there was no inverse but $exp < 0)
- return $num->bnan() if $num->{sign} !~ /^[+-]$/;
+ return $num->bnan(@r) if $num->{sign} !~ /^[+-]$/;
# $mod is positive, sign on $exp is ignored, result also positive
# XXX TODO: speed it up when all three numbers are integers
- $num->bpow($exp)->bmod($mod);
+ $num = $num->bpow($exp)->bmod($mod);
+
+ return $downgrade -> new($num -> bdstr(), @r) if defined($downgrade)
+ && ($num->is_int() || $num->is_inf() || $num->is_nan());
+ return $num -> round(@r);
}
sub bpow {
@@ -2332,71 +2387,84 @@ sub bpow {
($class, $x, $y, $a, $p, $r) = objectify(2, @_);
}
- return $x if $x->modify('bpow');
+ return $x if $x -> modify('bpow');
# $x and/or $y is a NaN
- return $x->bnan() if $x->is_nan() || $y->is_nan();
+ return $x -> bnan() if $x -> is_nan() || $y -> is_nan();
# $x and/or $y is a +/-Inf
- if ($x->is_inf("-")) {
- return $x->bzero() if $y->is_negative();
- return $x->bnan() if $y->is_zero();
- return $x if $y->is_odd();
- return $x->bneg();
- } elsif ($x->is_inf("+")) {
- return $x->bzero() if $y->is_negative();
- return $x->bnan() if $y->is_zero();
+ if ($x -> is_inf("-")) {
+ return $x -> bzero() if $y -> is_negative();
+ return $x -> bnan() if $y -> is_zero();
+ return $x if $y -> is_odd();
+ return $x -> bneg();
+ } elsif ($x -> is_inf("+")) {
+ return $x -> bzero() if $y -> is_negative();
+ return $x -> bnan() if $y -> is_zero();
+ return $x;
+ } elsif ($y -> is_inf("-")) {
+ return $x -> bnan() if $x -> is_one("-");
+ return $x -> binf("+") if $x > -1 && $x < 1;
+ return $x -> bone() if $x -> is_one("+");
+ return $x -> bzero();
+ } elsif ($y -> is_inf("+")) {
+ return $x -> bnan() if $x -> is_one("-");
+ return $x -> bzero() if $x > -1 && $x < 1;
+ return $x -> bone() if $x -> is_one("+");
+ return $x -> binf("+");
+ }
+
+ if ($x -> is_zero()) {
+ return $x -> bone() if $y -> is_zero();
+ return $x -> binf() if $y -> is_negative();
return $x;
- } elsif ($y->is_inf("-")) {
- return $x->bnan() if $x -> is_one("-");
- return $x->binf("+") if $x > -1 && $x < 1;
- return $x->bone() if $x -> is_one("+");
- return $x->bzero();
- } elsif ($y->is_inf("+")) {
- return $x->bnan() if $x -> is_one("-");
- return $x->bzero() if $x > -1 && $x < 1;
- return $x->bone() if $x -> is_one("+");
- return $x->binf("+");
}
- # we don't support complex numbers, so return NaN
- return $x->bnan() if $x->is_negative() && !$y->is_int();
-
- # cache the result of is_zero
- my $y_is_zero = $y->is_zero();
- return $x->bone() if $y_is_zero;
- return $x if $x->is_one() || $y->is_one();
+ # We don't support complex numbers, so upgrade or return NaN.
- my $x_is_zero = $x->is_zero();
- return $x->_pow($y, $a, $p, $r) if !$x_is_zero && !$y->is_int();
-
- my $y1 = $y->as_number()->{value}; # make MBI part
+ if ($x -> is_negative() && !$y -> is_int()) {
+ return $upgrade -> bpow($x, $y, $a, $p, $r) if defined $upgrade;
+ return $x -> bnan();
+ }
- if ($x->is_one("-")) {
- # if $x == -1 and odd/even y => +1/-1 because +-1 ^ (+-1) => +-1
- return $LIB->_is_odd($y1) ? $x : $x->babs(1);
+ if ($x -> is_one("+") || $y -> is_one()) {
+ return $x;
}
- if ($x_is_zero) {
- return $x if $y->{sign} eq '+'; # 0**y => 0 (if not y <= 0)
- # 0 ** -y => 1 / (0 ** y) => 1 / 0! (1 / 0 => +inf)
- return $x->binf();
+
+ if ($x -> is_one("-")) {
+ return $x if $y -> is_odd();
+ return $x -> bneg();
}
+ return $x -> _pow($y, $a, $p, $r) if !$y -> is_int();
+
+ my $y1 = $y -> as_int()->{value}; # make MBI part
+
my $new_sign = '+';
- $new_sign = $LIB->_is_odd($y1) ? '-' : '+' if $x->{sign} ne '+';
+ $new_sign = $LIB -> _is_odd($y1) ? '-' : '+' if $x->{sign} ne '+';
# calculate $x->{_m} ** $y and $x->{_e} * $y separately (faster)
- $x->{_m} = $LIB->_pow($x->{_m}, $y1);
- $x->{_e} = $LIB->_mul ($x->{_e}, $y1);
+ $x->{_m} = $LIB -> _pow($x->{_m}, $y1);
+ $x->{_e} = $LIB -> _mul($x->{_e}, $y1);
$x->{sign} = $new_sign;
- $x->bnorm();
+ $x = $x -> bnorm();
+
+ # x ** (-y) = 1 / (x ** y)
+
if ($y->{sign} eq '-') {
# modify $x in place!
- my $z = $x->copy(); $x->bone();
- return scalar $x->bdiv($z, $a, $p, $r); # round in one go (might ignore y's A!)
+ my $z = $x -> copy();
+ $x = $x -> bone();
+ # round in one go (might ignore y's A!)
+ return scalar $x -> bdiv($z, $a, $p, $r);
}
- $x->round($a, $p, $r, $y);
+
+ $x = $x -> round($a, $p, $r, $y);
+
+ return $downgrade -> new($x)
+ if defined($downgrade) && ($x->is_int() || $x->is_inf() || $x->is_nan());
+ return $x;
}
sub blog {
@@ -2404,29 +2472,32 @@ sub blog {
# value is used as the base, otherwise the base is assumed to be Euler's
# constant.
- my ($class, $x, $base, $a, $p, $r);
+ my ($class, $x, $base, @r);
- # Don't objectify the base, since an undefined base, as in $x->blog() or
- # $x->blog(undef) signals that the base is Euler's number.
+ # Only objectify the base if it is defined, since an undefined base, as in
+ # $x->blog() or $x->blog(undef) signals that the base is Euler's number.
if (!ref($_[0]) && $_[0] =~ /^[A-Za-z]|::/) {
# E.g., Math::BigFloat->blog(256, 2)
- ($class, $x, $base, $a, $p, $r) =
+ ($class, $x, $base, @r) =
defined $_[2] ? objectify(2, @_) : objectify(1, @_);
} else {
# E.g., Math::BigFloat::blog(256, 2) or $x->blog(2)
- ($class, $x, $base, $a, $p, $r) =
+ ($class, $x, $base, @r) =
defined $_[1] ? objectify(2, @_) : objectify(1, @_);
}
return $x if $x->modify('blog');
- return $x -> bnan() if $x -> is_nan();
+ return $x -> bnan(@r) if $x -> is_nan();
+
+ return $upgrade -> blog($x, $base, @r)
+ if defined($upgrade) && $x -> is_neg();
# we need to limit the accuracy to protect against overflow
my $fallback = 0;
my ($scale, @params);
- ($x, @params) = $x->_find_round_parameters($a, $p, $r);
+ ($x, @params) = $x->_find_round_parameters(@r);
# no rounding at all, so must use fallback
if (scalar @params == 0) {
@@ -2434,7 +2505,7 @@ sub blog {
$params[0] = $class->div_scale(); # and round to it as accuracy
$params[1] = undef; # P = undef
$scale = $params[0]+4; # at least four more for proper round
- $params[2] = $r; # round mode by caller or undef
+ $params[2] = $r[2]; # round mode by caller or undef
$fallback = 1; # to clear a/p afterwards
} else {
# the 4 below is empirical, and there might be cases where it is not
@@ -2444,28 +2515,29 @@ sub blog {
my $done = 0;
if (defined $base) {
- $base = $class -> new($base) unless ref $base;
+ $base = $class -> new($base)
+ unless defined(blessed($base)) && $base -> isa($class);
if ($base -> is_nan() || $base -> is_one()) {
- $x -> bnan();
+ $x = $x -> bnan();
$done = 1;
} elsif ($base -> is_inf() || $base -> is_zero()) {
if ($x -> is_inf() || $x -> is_zero()) {
- $x -> bnan();
+ $x = $x -> bnan();
} else {
- $x -> bzero(@params);
+ $x = $x -> bzero(@params);
}
$done = 1;
} elsif ($base -> is_negative()) { # -inf < base < 0
if ($x -> is_one()) { # x = 1
- $x -> bzero(@params);
+ $x = $x -> bzero(@params);
} elsif ($x == $base) {
- $x -> bone('+', @params); # x = base
+ $x = $x -> bone('+', @params); # x = base
} else {
- $x -> bnan(); # otherwise
+ $x = $x -> bnan(); # otherwise
}
$done = 1;
} elsif ($x == $base) {
- $x -> bone('+', @params); # 0 < base && 0 < x < inf
+ $x = $x -> bone('+', @params); # 0 < base && 0 < x < inf
$done = 1;
}
}
@@ -2475,17 +2547,17 @@ sub blog {
unless ($done) {
if ($x -> is_inf()) { # x = +/-inf
my $sign = defined $base && $base < 1 ? '-' : '+';
- $x -> binf($sign);
+ $x = $x -> binf($sign);
$done = 1;
} elsif ($x -> is_neg()) { # -inf < x < 0
- $x -> bnan();
+ $x = $x -> bnan();
$done = 1;
} elsif ($x -> is_one()) { # x = 1
- $x -> bzero(@params);
+ $x = $x -> bzero(@params);
$done = 1;
} elsif ($x -> is_zero()) { # x = 0
my $sign = defined $base && $base < 1 ? '+' : '-';
- $x -> binf($sign);
+ $x = $x -> binf($sign);
$done = 1;
}
}
@@ -2496,69 +2568,61 @@ sub blog {
delete $x->{_a};
delete $x->{_p};
}
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && $x->is_int();
return $x;
}
# when user set globals, they would interfere with our calculation, so
# disable them and later re-enable them
no strict 'refs';
- my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
- my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
+ my $abr = "$class\::accuracy";
+ my $ab = $$abr;
+ $$abr = undef;
+ my $pbr = "$class\::precision";
+ my $pb = $$pbr;
+ $$pbr = undef;
# we also need to disable any set A or P on $x (_find_round_parameters took
# them already into account), since these would interfere, too
- delete $x->{_a}; delete $x->{_p};
- # need to disable $upgrade in BigInt, to avoid deep recursion
- local $Math::BigInt::upgrade = undef;
- local $Math::BigFloat::downgrade = undef;
-
- # upgrade $x if $x is not a Math::BigFloat (handle BigInt input)
- # XXX TODO: rebless!
- if (!$x->isa('Math::BigFloat')) {
- $x = Math::BigFloat->new($x);
- $class = ref($x);
- }
+ delete $x->{_a};
+ delete $x->{_p};
$done = 0;
- # If the base is defined and an integer, try to calculate integer result
- # first. This is very fast, and in case the real result was found, we can
- # stop right here.
- if (defined $base && $base->is_int() && $x->is_int()) {
- my $xint = Math::BigInt -> new($x -> bdstr());
- my $bint = Math::BigInt -> new($base -> bdstr());
- $xint->blog($bint);
-
- # if we found the exact result, we're done
- if ($bint -> bpow($xint) == $x) {
- my $xflt = Math::BigFloat -> new($xint -> bdstr());
- $x->{sign} = $xflt->{sign};
- $x->{_m} = $xflt->{_m};
- $x->{_es} = $xflt->{_es};
- $x->{_e} = $xflt->{_e};
+ # If both the invocand and the base are integers, try to calculate integer
+ # result first. This is very fast, and in case the real result was found, we
+ # can stop right here.
+
+ if (defined($base) && $base -> is_int() && $x -> is_int()) {
+ my $x_lib = $LIB -> _new($x -> bdstr());
+ my $b_lib = $LIB -> _new($base -> bdstr());
+ ($x_lib, my $exact) = $LIB -> _log_int($x_lib, $b_lib);
+ if ($exact) {
+ $x->{_m} = $x_lib;
+ $x->{_e} = $LIB -> _zero();
+ $x = $x -> bnorm();
$done = 1;
}
}
- if ($done == 0) {
+ unless ($done) {
+
# First calculate the log to base e (using reduction by 10 and possibly
- # also by 2):
- $x->_log_10($scale);
+ # also by 2), and if a different base was requested, convert the result.
- # and if a different base was requested, convert it
+ $x = $x->_log_10($scale);
if (defined $base) {
- $base = Math::BigFloat->new($base)
- unless $base->isa('Math::BigFloat');
# log_b(x) = ln(x) / ln(b), so compute ln(b)
my $base_log_e = $base->copy()->_log_10($scale);
- $x->bdiv($base_log_e, $scale);
+ $x = $x->bdiv($base_log_e, $scale);
}
}
# shortcut to not run through _find_round_parameters again
if (defined $params[0]) {
- $x->bround($params[0], $params[2]); # then round accordingly
+ $x = $x->bround($params[0], $params[2]); # then round accordingly
} else {
- $x->bfround($params[1], $params[2]); # then round accordingly
+ $x = $x->bfround($params[1], $params[2]); # then round accordingly
}
if ($fallback) {
# clear a/p after round, since user did not request it
@@ -2569,25 +2633,28 @@ sub blog {
$$abr = $ab;
$$pbr = $pb;
- $x;
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && $x->is_int();
+ return $x;
}
sub bexp {
# Calculate e ** X (Euler's number to the power of X)
- my ($class, $x, $a, $p, $r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return $x if $x->modify('bexp');
- return $x->binf() if $x->{sign} eq '+inf';
- return $x->bzero() if $x->{sign} eq '-inf';
+ return $x->bnan(@r) if $x -> is_nan();
+ return $x->binf(@r) if $x->{sign} eq '+inf';
+ return $x->bzero(@r) if $x->{sign} eq '-inf';
# we need to limit the accuracy to protect against overflow
my $fallback = 0;
my ($scale, @params);
- ($x, @params) = $x->_find_round_parameters($a, $p, $r);
+ ($x, @params) = $x->_find_round_parameters(@r);
- # also takes care of the "error in _find_round_parameters?" case
- return $x if $x->{sign} eq 'NaN';
+ # error in _find_round_parameters?
+ return $x->bnan(@r) if $x->{sign} eq 'NaN';
# no rounding at all, so must use fallback
if (scalar @params == 0) {
@@ -2595,7 +2662,7 @@ sub bexp {
$params[0] = $class->div_scale(); # and round to it as accuracy
$params[1] = undef; # P = undef
$scale = $params[0]+4; # at least four more for proper round
- $params[2] = $r; # round mode by caller or undef
+ $params[2] = $r[2]; # round mode by caller or undef
$fallback = 1; # to clear a/p afterwards
} else {
# the 4 below is empirical, and there might be cases where it's not
@@ -2613,13 +2680,21 @@ sub bexp {
# when user set globals, they would interfere with our calculation, so
# disable them and later re-enable them
no strict 'refs';
- my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
- my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
+ my $abr = "$class\::accuracy";
+ my $ab = $$abr;
+ $$abr = undef;
+ my $pbr = "$class\::precision";
+ my $pb = $$pbr;
+ $$pbr = undef;
# we also need to disable any set A or P on $x (_find_round_parameters took
# them already into account), since these would interfere, too
delete $x->{_a};
delete $x->{_p};
- # need to disable $upgrade in BigInt, to avoid deep recursion
+
+ # Disabling upgrading and downgrading is no longer necessary to avoid an
+ # infinite recursion, but it avoids unnecessary upgrading and downgrading in
+ # the intermediate computations.
+
local $Math::BigInt::upgrade = undef;
local $Math::BigFloat::downgrade = undef;
@@ -2682,13 +2757,15 @@ sub bexp {
} else {
# compute A and B so that e = A / B.
- # After some terms we end up with this, so we use it as a starting point:
+ # After some terms we end up with this, so we use it as a starting
+ # point:
my $A = $LIB->_new("9093339520860578540197197" .
"0164779391644753259799242");
my $F = $LIB->_new(42);
my $step = 42;
- # Compute how many steps we need to take to get $A and $B sufficiently big
+ # Compute how many steps we need to take to get $A and $B sufficiently
+ # big
my $steps = _len_to_steps($scale - 4);
# print STDERR "# Doing $steps steps for ", $scale-4, " digits\n";
while ($step++ <= $steps) {
@@ -2698,7 +2775,9 @@ sub bexp {
# increment f
$F = $LIB->_inc($F);
}
- # compute $B as factorial of $steps (this is faster than doing it manually)
+
+ # Compute $B as factorial of $steps (this is faster than doing it
+ # manually)
my $B = $LIB->_fac($LIB->_new($steps));
# print "A ", $LIB->_str($A), "\nB ", $LIB->_str($B), "\n";
@@ -2713,7 +2792,8 @@ sub bexp {
$x->{_e} = $LIB->_new($scale);
}
- # $x contains now an estimate of e, with some surplus digits, so we can round
+ # $x contains now an estimate of e, with some surplus digits, so we can
+ # round
if (!$x_org->is_one()) {
# Reduce size of fractional part, followup with integer power of two.
my $lshift = 0;
@@ -2722,10 +2802,11 @@ sub bexp {
}
# Raise $x to the wanted power and round it.
if ($lshift == 0) {
- $x->bpow($x_org, @params);
+ $x = $x->bpow($x_org, @params);
} else {
my($mul, $rescale) = (1 << $lshift, $scale+1+$lshift);
- $x->bpow(scalar $x_org->bdiv($mul, $rescale), $rescale)->bpow($mul, @params);
+ $x = $x -> bpow(scalar $x_org->bdiv($mul, $rescale), $rescale)
+ -> bpow($mul, @params);
}
} else {
# else just round the already computed result
@@ -2733,9 +2814,9 @@ sub bexp {
delete $x->{_p};
# shortcut to not run through _find_round_parameters again
if (defined $params[0]) {
- $x->bround($params[0], $params[2]); # then round accordingly
+ $x = $x->bround($params[0], $params[2]); # then round accordingly
} else {
- $x->bfround($params[1], $params[2]); # then round accordingly
+ $x = $x->bfround($params[1], $params[2]); # then round accordingly
}
}
if ($fallback) {
@@ -2747,18 +2828,19 @@ sub bexp {
$$abr = $ab;
$$pbr = $pb;
- $x; # return modified $x
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && $x -> is_int();
+ $x;
}
sub bnok {
# Calculate n over k (binomial coefficient or "choose" function) as integer.
# set up parameters
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
return $x if $x->modify('bnok');
@@ -2768,7 +2850,10 @@ sub bnok {
my $xint = Math::BigInt -> new($x -> bsstr());
my $yint = Math::BigInt -> new($y -> bsstr());
- $xint -> bnok($yint);
+ $xint = $xint -> bnok($yint);
+
+ return $xint if defined $downgrade;
+
my $xflt = Math::BigFloat -> new($xint);
$x->{_m} = $xflt->{_m};
@@ -2787,15 +2872,18 @@ sub bsin {
# sin = x - --- + --- - --- + --- ...
# 3! 5! 7! 9!
+ return $x if $x->modify('bsin');
+
+ return $x -> bzero(@r) if $x->is_zero();
+ return $x -> bnan(@r) if $x->is_nan() || $x->is_inf();
+
# we need to limit the accuracy to protect against overflow
my $fallback = 0;
my ($scale, @params);
($x, @params) = $x->_find_round_parameters(@r);
- # constant object or error in _find_round_parameters?
- return $x if $x->modify('bsin') || $x->is_nan();
-
- return $x->bzero(@r) if $x->is_zero();
+ # error in _find_round_parameters?
+ return $x->bnan(@r) if $x->is_nan();
# no rounding at all, so must use fallback
if (scalar @params == 0) {
@@ -2814,26 +2902,35 @@ sub bsin {
# when user set globals, they would interfere with our calculation, so
# disable them and later re-enable them
no strict 'refs';
- my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
- my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
+ my $abr = "$class\::accuracy";
+ my $ab = $$abr;
+ $$abr = undef;
+ my $pbr = "$class\::precision";
+ my $pb = $$pbr;
+ $$pbr = undef;
# we also need to disable any set A or P on $x (_find_round_parameters took
# them already into account), since these would interfere, too
delete $x->{_a};
delete $x->{_p};
- # need to disable $upgrade in BigInt, to avoid deep recursion
+
+ # Disabling upgrading and downgrading is no longer necessary to avoid an
+ # infinite recursion, but it avoids unnecessary upgrading and downgrading in
+ # the intermediate computations.
+
local $Math::BigInt::upgrade = undef;
+ local $Math::BigFloat::downgrade = undef;
my $over = $x * $x; # X ^ 2
my $x2 = $over->copy(); # X ^ 2; difference between terms
- $over->bmul($x); # X ^ 3 as starting value
+ $over = $over->bmul($x); # X ^ 3 as starting value
my $sign = 1; # start with -=
- my $below = $class->new(6); my $factorial = $class->new(4);
+ my $below = $class->new(6);
+ my $factorial = $class->new(4);
delete $x->{_a};
delete $x->{_p};
my $limit = $class->new("1E-". ($scale-1));
- #my $steps = 0;
- while (3 < 5) {
+ while (1) {
# we calculate the next term, and add it to the last
# when the next term is below our limit, it won't affect the outcome
# anymore, so we stop:
@@ -2841,22 +2938,24 @@ sub bsin {
last if $next->bacmp($limit) <= 0;
if ($sign == 0) {
- $x->badd($next);
+ $x = $x->badd($next);
} else {
- $x->bsub($next);
+ $x = $x->bsub($next);
}
$sign = 1-$sign; # alternate
# calculate things for the next term
- $over->bmul($x2); # $x*$x
- $below->bmul($factorial); $factorial->binc(); # n*(n+1)
- $below->bmul($factorial); $factorial->binc(); # n*(n+1)
+ $over = $over->bmul($x2); # $x*$x
+ $below = $below->bmul($factorial); # n*(n+1)
+ $factorial = $factorial->binc();
+ $below = $below -> bmul($factorial); # n*(n+1)
+ $factorial = $factorial->binc();
}
# shortcut to not run through _find_round_parameters again
if (defined $params[0]) {
- $x->bround($params[0], $params[2]); # then round accordingly
+ $x = $x->bround($params[0], $params[2]); # then round accordingly
} else {
- $x->bfround($params[1], $params[2]); # then round accordingly
+ $x = $x->bfround($params[1], $params[2]); # then round accordingly
}
if ($fallback) {
# clear a/p after round, since user did not request it
@@ -2866,6 +2965,9 @@ sub bsin {
# restore globals
$$abr = $ab;
$$pbr = $pb;
+
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && $x -> is_int();
$x;
}
@@ -2884,7 +2986,7 @@ sub bcos {
# constant object or error in _find_round_parameters?
return $x if $x->modify('bcos') || $x->is_nan();
-
+ return $x->bnan() if $x->is_inf();
return $x->bone(@r) if $x->is_zero();
# no rounding at all, so must use fallback
@@ -2904,20 +3006,23 @@ sub bcos {
# when user set globals, they would interfere with our calculation, so
# disable them and later re-enable them
no strict 'refs';
- my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
- my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
+ my $abr = "$class\::accuracy";
+ my $ab = $$abr;
+ $$abr = undef;
+ my $pbr = "$class\::precision";
+ my $pb = $$pbr;
+ $$pbr = undef;
# we also need to disable any set A or P on $x (_find_round_parameters took
# them already into account), since these would interfere, too
- delete $x->{_a}; delete $x->{_p};
- # need to disable $upgrade in BigInt, to avoid deep recursion
- local $Math::BigInt::upgrade = undef;
+ delete $x->{_a};
+ delete $x->{_p};
my $over = $x * $x; # X ^ 2
my $x2 = $over->copy(); # X ^ 2; difference between terms
my $sign = 1; # start with -=
my $below = $class->new(2);
my $factorial = $class->new(3);
- $x->bone();
+ $x = $x->bone();
delete $x->{_a};
delete $x->{_p};
@@ -2931,22 +3036,24 @@ sub bcos {
last if $next->bacmp($limit) <= 0;
if ($sign == 0) {
- $x->badd($next);
+ $x = $x->badd($next);
} else {
- $x->bsub($next);
+ $x = $x->bsub($next);
}
$sign = 1-$sign; # alternate
# calculate things for the next term
- $over->bmul($x2); # $x*$x
- $below->bmul($factorial); $factorial->binc(); # n*(n+1)
- $below->bmul($factorial); $factorial->binc(); # n*(n+1)
+ $over = $over->bmul($x2); # $x*$x
+ $below = $below->bmul($factorial); # n*(n+1)
+ $factorial = $factorial -> binc();
+ $below = $below->bmul($factorial); # n*(n+1)
+ $factorial = $factorial -> binc();
}
# shortcut to not run through _find_round_parameters again
if (defined $params[0]) {
- $x->bround($params[0], $params[2]); # then round accordingly
+ $x = $x->bround($params[0], $params[2]); # then round accordingly
} else {
- $x->bfround($params[1], $params[2]); # then round accordingly
+ $x = $x->bfround($params[1], $params[2]); # then round accordingly
}
if ($fallback) {
# clear a/p after round, since user did not request it
@@ -2956,48 +3063,50 @@ sub bcos {
# restore globals
$$abr = $ab;
$$pbr = $pb;
+
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && $x -> is_int();
$x;
}
sub batan {
# Calculate a arcus tangens of x.
-
- my $self = shift;
- my $selfref = ref $self;
- my $class = $selfref || $self;
-
- my (@r) = @_;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
# taylor: x^3 x^5 x^7 x^9
# atan = x - --- + --- - --- + --- ...
# 3 5 7 9
+ return $x if $x->modify('batan');
+
+ return $x -> bnan(@r) if $x->is_nan();
+
# We need to limit the accuracy to protect against overflow.
my $fallback = 0;
my ($scale, @params);
- ($self, @params) = $self->_find_round_parameters(@r);
+ ($x, @params) = $x->_find_round_parameters(@r);
- # Constant object or error in _find_round_parameters?
+ # Error in _find_round_parameters?
- return $self if $self->modify('batan') || $self->is_nan();
+ return $x -> bnan(@r) if $x->is_nan();
- if ($self->{sign} =~ /^[+-]inf\z/) {
+ if ($x->{sign} =~ /^[+-]inf\z/) {
# +inf result is PI/2
# -inf result is -PI/2
# calculate PI/2
my $pi = $class->bpi(@r);
- # modify $self in place
- $self->{_m} = $pi->{_m};
- $self->{_e} = $pi->{_e};
- $self->{_es} = $pi->{_es};
+ # modify $x in place
+ $x->{_m} = $pi->{_m};
+ $x->{_e} = $pi->{_e};
+ $x->{_es} = $pi->{_es};
# -y => -PI/2, +y => PI/2
- $self->{sign} = substr($self->{sign}, 0, 1); # "+inf" => "+"
- $self -> {_m} = $LIB->_div($self->{_m}, $LIB->_new(2));
- return $self;
+ $x->{sign} = substr($x->{sign}, 0, 1); # "+inf" => "+"
+ $x -> {_m} = $LIB->_div($x->{_m}, $LIB->_new(2));
+ return $x;
}
- return $self->bzero(@r) if $self->is_zero();
+ return $x->bzero(@r) if $x->is_zero();
# no rounding at all, so must use fallback
if (scalar @params == 0) {
@@ -3015,57 +3124,67 @@ sub batan {
# 1 or -1 => PI/4
# inlined is_one() && is_one('-')
- if ($LIB->_is_one($self->{_m}) && $LIB->_is_zero($self->{_e})) {
+ if ($LIB->_is_one($x->{_m}) && $LIB->_is_zero($x->{_e})) {
my $pi = $class->bpi($scale - 3);
- # modify $self in place
- $self->{_m} = $pi->{_m};
- $self->{_e} = $pi->{_e};
- $self->{_es} = $pi->{_es};
- # leave the sign of $self alone (+1 => +PI/4, -1 => -PI/4)
- $self->{_m} = $LIB->_div($self->{_m}, $LIB->_new(4));
- return $self;
+ # modify $x in place
+ $x->{_m} = $pi->{_m};
+ $x->{_e} = $pi->{_e};
+ $x->{_es} = $pi->{_es};
+ # leave the sign of $x alone (+1 => +PI/4, -1 => -PI/4)
+ $x->{_m} = $LIB->_div($x->{_m}, $LIB->_new(4));
+ return $x;
}
# This series is only valid if -1 < x < 1, so for other x we need to
# calculate PI/2 - atan(1/x):
my $pi = undef;
- if ($self->bacmp($self->copy()->bone) >= 0) {
+ if ($x->bacmp($x->copy()->bone) >= 0) {
# calculate PI/2
$pi = $class->bpi($scale - 3);
$pi->{_m} = $LIB->_div($pi->{_m}, $LIB->_new(2));
- # calculate 1/$self:
- my $self_copy = $self->copy();
- # modify $self in place
- $self->bone();
- $self->bdiv($self_copy, $scale);
+ # calculate 1/$x:
+ my $x_copy = $x->copy();
+ # modify $x in place
+ $x = $x->bone();
+ $x = $x->bdiv($x_copy, $scale);
}
my $fmul = 1;
foreach (0 .. int($scale / 20)) {
$fmul *= 2;
- $self->bdiv($self->copy()->bmul($self)->binc->bsqrt($scale + 4)->binc, $scale + 4);
+ $x = $x->bdiv($x->copy()->bmul($x)->binc()->bsqrt($scale + 4)->binc(),
+ $scale + 4);
}
# When user set globals, they would interfere with our calculation, so
# disable them and later re-enable them.
no strict 'refs';
- my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
- my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
- # We also need to disable any set A or P on $self (_find_round_parameters
+ my $abr = "$class\::accuracy";
+ my $ab = $$abr;
+ $$abr = undef;
+ my $pbr = "$class\::precision";
+ my $pb = $$pbr;
+ $$pbr = undef;
+ # We also need to disable any set A or P on $x (_find_round_parameters
# took them already into account), since these would interfere, too
- delete $self->{_a};
- delete $self->{_p};
- # Need to disable $upgrade in BigInt, to avoid deep recursion.
+ delete $x->{_a};
+ delete $x->{_p};
+
+ # Disabling upgrading and downgrading is no longer necessary to avoid an
+ # infinite recursion, but it avoids unnecessary upgrading and downgrading in
+ # the intermediate computations.
+
local $Math::BigInt::upgrade = undef;
+ local $Math::BigFloat::downgrade = undef;
- my $over = $self * $self; # X ^ 2
- my $self2 = $over->copy(); # X ^ 2; difference between terms
- $over->bmul($self); # X ^ 3 as starting value
+ my $over = $x * $x; # X ^ 2
+ my $x2 = $over->copy(); # X ^ 2; difference between terms
+ $over = $over->bmul($x); # X ^ 3 as starting value
my $sign = 1; # start with -=
my $below = $class->new(3);
my $two = $class->new(2);
- delete $self->{_a};
- delete $self->{_p};
+ delete $x->{_a};
+ delete $x->{_p};
my $limit = $class->new("1E-". ($scale-1));
#my $steps = 0;
@@ -3077,55 +3196,55 @@ sub batan {
last if $next->bacmp($limit) <= 0;
if ($sign == 0) {
- $self->badd($next);
+ $x = $x->badd($next);
} else {
- $self->bsub($next);
+ $x = $x->bsub($next);
}
$sign = 1-$sign; # alternatex
# calculate things for the next term
- $over->bmul($self2); # $self*$self
- $below->badd($two); # n += 2
+ $over = $over->bmul($x2); # $x*$x
+ $below = $below->badd($two); # n += 2
}
- $self->bmul($fmul);
+ $x = $x->bmul($fmul);
if (defined $pi) {
- my $self_copy = $self->copy();
- # modify $self in place
- $self->{_m} = $pi->{_m};
- $self->{_e} = $pi->{_e};
- $self->{_es} = $pi->{_es};
- # PI/2 - $self
- $self->bsub($self_copy);
+ my $x_copy = $x->copy();
+ # modify $x in place
+ $x->{_m} = $pi->{_m};
+ $x->{_e} = $pi->{_e};
+ $x->{_es} = $pi->{_es};
+ # PI/2 - $x
+ $x = $x->bsub($x_copy);
}
# Shortcut to not run through _find_round_parameters again.
if (defined $params[0]) {
- $self->bround($params[0], $params[2]); # then round accordingly
+ $x = $x->bround($params[0], $params[2]); # then round accordingly
} else {
- $self->bfround($params[1], $params[2]); # then round accordingly
+ $x = $x->bfround($params[1], $params[2]); # then round accordingly
}
if ($fallback) {
# Clear a/p after round, since user did not request it.
- delete $self->{_a};
- delete $self->{_p};
+ delete $x->{_a};
+ delete $x->{_p};
}
# restore globals
$$abr = $ab;
$$pbr = $pb;
- $self;
+
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && ($x -> is_int() || $x -> is_inf());
+ $x;
}
sub batan2 {
# $y -> batan2($x) returns the arcus tangens of $y / $x.
# Set up parameters.
- my ($class, $y, $x, @r) = (ref($_[0]), @_);
-
- # Objectify is costly, so avoid it if we can.
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $y, $x, @r) = objectify(2, @_);
- }
+ my ($class, $y, $x, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
# Quick exit if $y is read-only.
return $y if $y -> modify('batan2');
@@ -3155,52 +3274,52 @@ sub batan2 {
$scale = abs($params[0] || $params[1]) + 4; # take whatever is defined
}
- if ($x -> is_inf("+")) { # x = inf
- if ($y -> is_inf("+")) { # y = inf
- $y -> bpi($scale) -> bmul("0.25"); # pi/4
- } elsif ($y -> is_inf("-")) { # y = -inf
- $y -> bpi($scale) -> bmul("-0.25"); # -pi/4
- } else { # -inf < y < inf
- return $y -> bzero(@r); # 0
+ if ($x -> is_inf("+")) { # x = inf
+ if ($y -> is_inf("+")) { # y = inf
+ $y = $y -> bpi($scale) -> bmul("0.25"); # pi/4
+ } elsif ($y -> is_inf("-")) { # y = -inf
+ $y = $y -> bpi($scale) -> bmul("-0.25"); # -pi/4
+ } else { # -inf < y < inf
+ return $y -> bzero(@r); # 0
}
- } elsif ($x -> is_inf("-")) { # x = -inf
- if ($y -> is_inf("+")) { # y = inf
- $y -> bpi($scale) -> bmul("0.75"); # 3/4 pi
- } elsif ($y -> is_inf("-")) { # y = -inf
- $y -> bpi($scale) -> bmul("-0.75"); # -3/4 pi
- } elsif ($y >= 0) { # y >= 0
- $y -> bpi($scale); # pi
- } else { # y < 0
- $y -> bpi($scale) -> bneg(); # -pi
+ } elsif ($x -> is_inf("-")) { # x = -inf
+ if ($y -> is_inf("+")) { # y = inf
+ $y = $y -> bpi($scale) -> bmul("0.75"); # 3/4 pi
+ } elsif ($y -> is_inf("-")) { # y = -inf
+ $y = $y -> bpi($scale) -> bmul("-0.75"); # -3/4 pi
+ } elsif ($y >= 0) { # y >= 0
+ $y = $y -> bpi($scale); # pi
+ } else { # y < 0
+ $y = $y -> bpi($scale) -> bneg(); # -pi
}
- } elsif ($x > 0) { # 0 < x < inf
- if ($y -> is_inf("+")) { # y = inf
- $y -> bpi($scale) -> bmul("0.5"); # pi/2
- } elsif ($y -> is_inf("-")) { # y = -inf
- $y -> bpi($scale) -> bmul("-0.5"); # -pi/2
- } else { # -inf < y < inf
- $y -> bdiv($x, $scale) -> batan($scale); # atan(y/x)
+ } elsif ($x > 0) { # 0 < x < inf
+ if ($y -> is_inf("+")) { # y = inf
+ $y = $y -> bpi($scale) -> bmul("0.5"); # pi/2
+ } elsif ($y -> is_inf("-")) { # y = -inf
+ $y = $y -> bpi($scale) -> bmul("-0.5"); # -pi/2
+ } else { # -inf < y < inf
+ $y = $y -> bdiv($x, $scale) -> batan($scale); # atan(y/x)
}
- } elsif ($x < 0) { # -inf < x < 0
+ } elsif ($x < 0) { # -inf < x < 0
my $pi = $class -> bpi($scale);
- if ($y >= 0) { # y >= 0
- $y -> bdiv($x, $scale) -> batan() # atan(y/x) + pi
+ if ($y >= 0) { # y >= 0
+ $y = $y -> bdiv($x, $scale) -> batan() # atan(y/x) + pi
-> badd($pi);
- } else { # y < 0
- $y -> bdiv($x, $scale) -> batan() # atan(y/x) - pi
+ } else { # y < 0
+ $y = $y -> bdiv($x, $scale) -> batan() # atan(y/x) - pi
-> bsub($pi);
}
- } else { # x = 0
- if ($y > 0) { # y > 0
- $y -> bpi($scale) -> bmul("0.5"); # pi/2
- } elsif ($y < 0) { # y < 0
- $y -> bpi($scale) -> bmul("-0.5"); # -pi/2
- } else { # y = 0
- return $y -> bzero(@r); # 0
+ } else { # x = 0
+ if ($y > 0) { # y > 0
+ $y = $y -> bpi($scale) -> bmul("0.5"); # pi/2
+ } elsif ($y < 0) { # y < 0
+ $y = $y -> bpi($scale) -> bmul("-0.5"); # -pi/2
+ } else { # y = 0
+ return $y -> bzero(@r); # 0
}
}
- $y -> round(@r);
+ $y = $y -> round(@r);
if ($fallback) {
delete $y->{_a};
@@ -3209,31 +3328,40 @@ sub batan2 {
return $y;
}
-##############################################################################
sub bsqrt {
# calculate square root
- my ($class, $x, $a, $p, $r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return $x if $x->modify('bsqrt');
- return $x->bnan() if $x->{sign} !~ /^\+/; # NaN, -inf or < 0
- return $x if $x->{sign} eq '+inf'; # sqrt(inf) == inf
- return $x->round($a, $p, $r) if $x->is_zero() || $x->is_one();
+ # Handle trivial cases.
+
+ return $x -> bnan(@r) if $x->is_nan();
+ return $x -> binf("+", @r) if $x->{sign} eq '+inf';
+ return $x -> round(@r) if $x->is_zero() || $x->is_one();
+
+ # We don't support complex numbers.
+
+ if ($x -> is_neg()) {
+ return $upgrade -> bsqrt($x, @r) if defined($upgrade);
+ return $x -> bnan(@r);
+ }
# we need to limit the accuracy to protect against overflow
my $fallback = 0;
my (@params, $scale);
- ($x, @params) = $x->_find_round_parameters($a, $p, $r);
+ ($x, @params) = $x->_find_round_parameters(@r);
- return $x if $x->is_nan(); # error in _find_round_parameters?
+ # error in _find_round_parameters?
+ return $x -> bnan(@r) if $x->is_nan();
# no rounding at all, so must use fallback
if (scalar @params == 0) {
# simulate old behaviour
$params[0] = $class->div_scale(); # and round to it as accuracy
$scale = $params[0]+4; # at least four more for proper round
- $params[2] = $r; # round mode by caller or undef
+ $params[2] = $r[2]; # round mode by caller or undef
$fallback = 1; # to clear a/p afterwards
} else {
# the 4 below is empirical, and there might be cases where it is not
@@ -3244,14 +3372,23 @@ sub bsqrt {
# when user set globals, they would interfere with our calculation, so
# disable them and later re-enable them
no strict 'refs';
- my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
- my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
+ my $abr = "$class\::accuracy";
+ my $ab = $$abr;
+ $$abr = undef;
+ my $pbr = "$class\::precision";
+ my $pb = $$pbr;
+ $$pbr = undef;
# we also need to disable any set A or P on $x (_find_round_parameters took
# them already into account), since these would interfere, too
delete $x->{_a};
delete $x->{_p};
- # need to disable $upgrade in BigInt, to avoid deep recursion
- local $Math::BigInt::upgrade = undef; # should be really parent class vs MBI
+
+ # Disabling upgrading and downgrading is no longer necessary to avoid an
+ # infinite recursion, but it avoids unnecessary upgrading and downgrading in
+ # the intermediate computations.
+
+ local $Math::BigInt::upgrade = undef;
+ local $Math::BigFloat::downgrade = undef;
my $i = $LIB->_copy($x->{_m});
$i = $LIB->_lsft($i, $x->{_e}, 10) unless $LIB->_is_zero($x->{_e});
@@ -3268,12 +3405,12 @@ sub bsqrt {
$x->{_m} = $gs->{value};
$x->{_e} = $LIB->_zero();
$x->{_es} = '+';
- $x->bnorm();
+ $x = $x->bnorm();
# shortcut to not run through _find_round_parameters again
if (defined $params[0]) {
- $x->bround($params[0], $params[2]); # then round accordingly
+ $x = $x->bround($params[0], $params[2]); # then round accordingly
} else {
- $x->bfround($params[1], $params[2]); # then round accordingly
+ $x = $x->bfround($params[1], $params[2]); # then round accordingly
}
if ($fallback) {
# clear a/p after round, since user did not request it
@@ -3286,9 +3423,10 @@ sub bsqrt {
return $x;
}
- # sqrt(2) = 1.4 because sqrt(2*100) = 1.4*10; so we can increase the accuracy
- # of the result by multiplying the input by 100 and then divide the integer
- # result of sqrt(input) by 10. Rounding afterwards returns the real result.
+ # sqrt(2) = 1.4 because sqrt(2*100) = 1.4*10; so we can increase the
+ # accuracy of the result by multiplying the input by 100 and then divide the
+ # integer result of sqrt(input) by 10. Rounding afterwards returns the real
+ # result.
# The following steps will transform 123.456 (in $x) into 123456 (in $y1)
my $y1 = $LIB->_copy($x->{_m});
@@ -3348,13 +3486,13 @@ sub bsqrt {
$x->{_es} = '+';
}
$x->{_m} = $y1;
- $x->bnorm();
+ $x = $x->bnorm();
# shortcut to not run through _find_round_parameters again
if (defined $params[0]) {
- $x->bround($params[0], $params[2]); # then round accordingly
+ $x = $x->bround($params[0], $params[2]); # then round accordingly
} else {
- $x->bfround($params[1], $params[2]); # then round accordingly
+ $x = $x->bfround($params[1], $params[2]); # then round accordingly
}
if ($fallback) {
# clear a/p after round, since user did not request it
@@ -3364,6 +3502,9 @@ sub bsqrt {
# restore globals
$$abr = $ab;
$$pbr = $pb;
+
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && ($x -> is_int() || $x -> is_inf());
$x;
}
@@ -3371,14 +3512,24 @@ sub broot {
# calculate $y'th root of $x
# set up parameters
- my ($class, $x, $y, $a, $p, $r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, $a, $p, $r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return $x if $x->modify('broot');
+ # Handle trivial cases.
+
+ return $x -> bnan(@r) if $x->is_nan() || $y->is_nan();
+
+ if ($x -> is_neg()) {
+ # -27 ** (1/3) = -3
+ return $x -> broot($y -> copy() -> bneg(), @r) -> bneg()
+ if $x -> is_int() && $y -> is_int() && $y -> is_neg();
+ return $upgrade -> broot($x, $y, @r) if defined $upgrade;
+ return $x -> bnan(@r);
+ }
+
# NaN handling: $x ** 1/0, x or y NaN, or y inf/-inf or y == 0
return $x->bnan() if $x->{sign} !~ /^\+/ || $y->is_zero() ||
$y->{sign} !~ /^\+$/;
@@ -3388,7 +3539,7 @@ sub broot {
# we need to limit the accuracy to protect against overflow
my $fallback = 0;
my (@params, $scale);
- ($x, @params) = $x->_find_round_parameters($a, $p, $r);
+ ($x, @params) = $x->_find_round_parameters(@r);
return $x if $x->is_nan(); # error in _find_round_parameters?
@@ -3397,7 +3548,7 @@ sub broot {
# simulate old behaviour
$params[0] = $class->div_scale(); # and round to it as accuracy
$scale = $params[0]+4; # at least four more for proper round
- $params[2] = $r; # round mode by caller or undef
+ $params[2] = $r[2]; # round mode by caller or undef
$fallback = 1; # to clear a/p afterwards
} else {
# the 4 below is empirical, and there might be cases where it is not
@@ -3408,14 +3559,23 @@ sub broot {
# when user set globals, they would interfere with our calculation, so
# disable them and later re-enable them
no strict 'refs';
- my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
- my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
+ my $abr = "$class\::accuracy";
+ my $ab = $$abr;
+ $$abr = undef;
+ my $pbr = "$class\::precision";
+ my $pb = $$pbr;
+ $$pbr = undef;
# we also need to disable any set A or P on $x (_find_round_parameters took
# them already into account), since these would interfere, too
delete $x->{_a};
delete $x->{_p};
- # need to disable $upgrade in BigInt, to avoid deep recursion
- local $Math::BigInt::upgrade = undef; # should be really parent class vs MBI
+
+ # Disabling upgrading and downgrading is no longer necessary to avoid an
+ # infinite recursion, but it avoids unnecessary upgrading and downgrading in
+ # the intermediate computations.
+
+ local $Math::BigInt::upgrade = undef;
+ local $Math::BigFloat::downgrade = undef;
# remember sign and make $x positive, since -4 ** (1/2) => -2
my $sign = 0;
@@ -3424,14 +3584,15 @@ sub broot {
my $is_two = 0;
if ($y->isa('Math::BigFloat')) {
- $is_two = ($y->{sign} eq '+' && $LIB->_is_two($y->{_m}) && $LIB->_is_zero($y->{_e}));
+ $is_two = $y->{sign} eq '+' && $LIB->_is_two($y->{_m})
+ && $LIB->_is_zero($y->{_e});
} else {
- $is_two = ($y == 2);
+ $is_two = $y == 2;
}
# normal square root if $y == 2:
if ($is_two) {
- $x->bsqrt($scale+4);
+ $x = $x->bsqrt($scale+4);
} elsif ($y->is_one('-')) {
# $x ** -1 => 1/$x
my $u = $class->bone()->bdiv($x, $scale);
@@ -3449,30 +3610,31 @@ sub broot {
$i = $LIB->_lsft($i, $x->{_e}, 10) unless $LIB->_is_zero($x->{_e});
my $int = Math::BigInt->bzero();
$int->{value} = $i;
- $int->broot($y->as_number());
+ $int = $int->broot($y->as_number());
# if ($exact)
if ($int->copy()->bpow($y) == $x) {
# found result, return it
$x->{_m} = $int->{value};
$x->{_e} = $LIB->_zero();
$x->{_es} = '+';
- $x->bnorm();
+ $x = $x->bnorm();
$done = 1;
}
}
if ($done == 0) {
my $u = $class->bone()->bdiv($y, $scale+4);
- delete $u->{_a}; delete $u->{_p}; # otherwise it conflicts
- $x->bpow($u, $scale+4); # el cheapo
+ delete $u->{_a};
+ delete $u->{_p};
+ $x = $x->bpow($u, $scale+4); # el cheapo
}
}
- $x->bneg() if $sign == 1;
+ $x = $x->bneg() if $sign == 1;
# shortcut to not run through _find_round_parameters again
if (defined $params[0]) {
- $x->bround($params[0], $params[2]); # then round accordingly
+ $x = $x->bround($params[0], $params[2]); # then round accordingly
} else {
- $x->bfround($params[1], $params[2]); # then round accordingly
+ $x = $x->bfround($params[1], $params[2]); # then round accordingly
}
if ($fallback) {
# clear a/p after round, since user did not request it
@@ -3482,6 +3644,9 @@ sub broot {
# restore globals
$$abr = $ab;
$$pbr = $pb;
+
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && ($x -> is_int() || $x -> is_inf());
$x;
}
@@ -3490,16 +3655,19 @@ sub bfac {
# compute factorial number, modifies first argument
# set up parameters
- my ($class, $x, @r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- ($class, $x, @r) = objectify(1, @_) if !ref($x);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
# inf => inf
- return $x if $x->modify('bfac') || $x->{sign} eq '+inf';
+ return $x if $x->modify('bfac');
+
+ return $x -> bnan(@r) if $x->is_nan() || $x->is_inf("-");
+ return $x -> binf("+", @r) if $x->is_inf("+");
+ return $x -> bone(@r) if $x->is_zero() || $x->is_one();
- return $x->bnan()
- if (($x->{sign} ne '+') || # inf, NaN, <0 etc => NaN
- ($x->{_es} ne '+')); # digits after dot?
+ if ($x -> is_neg() || !$x -> is_int()) {
+ return $upgrade -> bfac($x, @r) if defined($upgrade);
+ return $x -> bnan(@r);
+ }
if (! $LIB->_is_zero($x->{_e})) {
$x->{_m} = $LIB->_lsft($x->{_m}, $x->{_e}, 10); # change 12e1 to 120e0
@@ -3507,23 +3675,31 @@ sub bfac {
$x->{_es} = '+';
}
$x->{_m} = $LIB->_fac($x->{_m}); # calculate factorial
- $x->bnorm()->round(@r); # norm again and round result
+
+ $x = $x->bnorm()->round(@r); # norm again and round result
+
+ return $downgrade -> new($x -> bdstr(), @r) if defined($downgrade)
+ && ($x -> is_int() || $x -> is_inf());
+ $x;
}
sub bdfac {
# compute double factorial
# set up parameters
- my ($class, $x, @r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- ($class, $x, @r) = objectify(1, @_) if !ref($x);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- # inf => inf
- return $x if $x->modify('bfac') || $x->{sign} eq '+inf';
+ return $x if $x->modify('bdfac');
+
+ return $x -> bnan(@r) if $x->is_nan() || $x->is_inf("-");
+ return $x -> binf("+", @r) if $x->is_inf("+");
+
+ if ($x <= -2 || !$x -> is_int()) {
+ return $upgrade -> bdfac($x, @r) if defined($upgrade);
+ return $x -> bnan(@r);
+ }
- return $x->bnan()
- if (($x->{sign} ne '+') || # inf, NaN, <0 etc => NaN
- ($x->{_es} ne '+')); # digits after dot?
+ return $x->bone() if $x <= 1;
croak("bdfac() requires a newer version of the $LIB library.")
unless $LIB->can('_dfac');
@@ -3534,59 +3710,137 @@ sub bdfac {
$x->{_es} = '+';
}
$x->{_m} = $LIB->_dfac($x->{_m}); # calculate factorial
- $x->bnorm()->round(@r); # norm again and round result
+
+ $x = $x->bnorm()->round(@r); # norm again and round result
+
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && $x -> is_int();
+ return $x;
}
-sub blsft {
- # shift left by $y (multiply by $b ** $y)
+sub btfac {
+ # compute triple factorial
# set up parameters
- my ($class, $x, $y, $b, $a, $p, $r) = (ref($_[0]), @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, $b, $a, $p, $r) = objectify(2, @_);
+ return $x if $x->modify('btfac');
+
+ return $x -> bnan(@r) if $x->is_nan() || $x->is_inf("-");
+ return $x -> binf("+", @r) if $x->is_inf("+");
+
+ if ($x <= -3 || !$x -> is_int()) {
+ return $upgrade -> btfac($x, @r) if defined($upgrade);
+ return $x -> bnan(@r);
+ }
+
+ my $k = $class -> new("3");
+ return $x->bnan(@r) if $x <= -$k;
+
+ my $one = $class -> bone();
+ return $x->bone(@r) if $x <= $one;
+
+ my $f = $x -> copy();
+ while ($f -> bsub($k) > $one) {
+ $x = $x -> bmul($f);
}
+ $x = $x->round(@r);
+
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && $x -> is_int();
+ return $x;
+}
+
+sub bmfac {
+ my ($class, $x, $k, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
+
+ return $x if $x->modify('bmfac');
+
+ return $x -> bnan(@r) if $x->is_nan() || $x->is_inf("-") || !$k->is_pos();
+ return $x -> binf("+", @r) if $x->is_inf("+");
+
+ if ($x <= -$k || !$x -> is_int() ||
+ ($k -> is_finite() && !$k -> is_int()))
+ {
+ return $upgrade -> bmfac($x, $k, @r) if defined($upgrade);
+ return $x -> bnan(@r);
+ }
+
+ my $one = $class -> bone();
+ return $x->bone(@r) if $x <= $one;
+
+ my $f = $x -> copy();
+ while ($f -> bsub($k) > $one) {
+ $x = $x -> bmul($f);
+ }
+
+ $x = $x->round(@r);
+
+ return $downgrade -> new($x -> bdstr(), @r)
+ if defined($downgrade) && $x -> is_int();
+ return $x;
+}
+
+sub blsft {
+ # shift left by $y (multiply by $b ** $y)
+
+ # set up parameters
+ my ($class, $x, $y, $b, @r)
+ = ref($_[0]) && ref($_[0]) eq ref($_[1]) && ref($_[1]) eq ref($_[2])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
+
return $x if $x -> modify('blsft');
- return $x if $x -> {sign} !~ /^[+-]$/; # nan, +inf, -inf
+
+ return $x -> bnan(@r) if $x -> is_nan() || $y -> is_nan();
$b = 2 if !defined $b;
$b = $class -> new($b) unless ref($b) && $b -> isa($class);
+ return $x -> bnan(@r) if $b -> is_nan();
- return $x -> bnan() if $x -> is_nan() || $y -> is_nan() || $b -> is_nan();
+ # There needs to be more checking for special cases here. Fixme!
# shift by a negative amount?
return $x -> brsft($y -> copy() -> babs(), $b) if $y -> {sign} =~ /^-/;
- $x -> bmul($b -> bpow($y), $a, $p, $r, $y);
+ $x = $x -> bmul($b -> bpow($y), $r[0], $r[1], $r[2], $y);
+
+ return $downgrade -> new($x -> bdstr(), @r) if defined($downgrade)
+ && ($x -> is_int() || $x -> is_inf() || $x -> is_nan());
+ return $x;
}
sub brsft {
# shift right by $y (divide $b ** $y)
# set up parameters
- my ($class, $x, $y, $b, $a, $p, $r) = (ref($_[0]), @_);
-
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, $b, $a, $p, $r) = objectify(2, @_);
- }
+ my ($class, $x, $y, $b, @r)
+ = ref($_[0]) && ref($_[0]) eq ref($_[1]) && ref($_[1]) eq ref($_[2])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return $x if $x -> modify('brsft');
- return $x if $x -> {sign} !~ /^[+-]$/; # nan, +inf, -inf
+
+ return $x -> bnan(@r) if $x -> is_nan() || $y -> is_nan();
+
+ # There needs to be more checking for special cases here. Fixme!
$b = 2 if !defined $b;
$b = $class -> new($b) unless ref($b) && $b -> isa($class);
-
- return $x -> bnan() if $x -> is_nan() || $y -> is_nan() || $b -> is_nan();
+ return $x -> bnan(@r) if $b -> is_nan();
# shift by a negative amount?
return $x -> blsft($y -> copy() -> babs(), $b) if $y -> {sign} =~ /^-/;
- # the following call to bdiv() will return either quotient (scalar context)
- # or quotient and remainder (list context).
- $x -> bdiv($b -> bpow($y), $a, $p, $r, $y);
+ # call bdiv()
+ $x = $x -> bdiv($b -> bpow($y), $r[0], $r[1], $r[2], $y);
+
+ return $downgrade -> new($x -> bdstr(), @r) if defined($downgrade)
+ && ($x -> is_int() || $x -> is_inf() || $x -> is_nan());
+ return $x;
}
###############################################################################
@@ -3594,24 +3848,20 @@ sub brsft {
###############################################################################
sub band {
- my $x = shift;
- my $xref = ref($x);
- my $class = $xref || $x;
-
- croak 'band() is an instance method, not a class method' unless $xref;
- croak 'Not enough arguments for band()' if @_ < 1;
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return if $x -> modify('band');
- my $y = shift;
- $y = $class -> new($y) unless ref($y);
-
- my @r = @_;
+ return $x -> bnan(@r) if $x -> is_nan() || $y -> is_nan();
my $xtmp = Math::BigInt -> new($x -> bint()); # to Math::BigInt
- $xtmp -> band($y);
- $xtmp = $class -> new($xtmp); # back to Math::BigFloat
+ $xtmp = $xtmp -> band($y);
+
+ return $xtmp -> round(@r) if defined $downgrade;
+ $xtmp = $class -> new($xtmp); # back to Math::BigFloat
$x -> {sign} = $xtmp -> {sign};
$x -> {_m} = $xtmp -> {_m};
$x -> {_es} = $xtmp -> {_es};
@@ -3621,24 +3871,20 @@ sub band {
}
sub bior {
- my $x = shift;
- my $xref = ref($x);
- my $class = $xref || $x;
-
- croak 'bior() is an instance method, not a class method' unless $xref;
- croak 'Not enough arguments for bior()' if @_ < 1;
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return if $x -> modify('bior');
- my $y = shift;
- $y = $class -> new($y) unless ref($y);
-
- my @r = @_;
+ return $x -> bnan(@r) if $x -> is_nan() || $y -> is_nan();
my $xtmp = Math::BigInt -> new($x -> bint()); # to Math::BigInt
- $xtmp -> bior($y);
- $xtmp = $class -> new($xtmp); # back to Math::BigFloat
+ $xtmp = $xtmp -> bior($y);
+
+ return $xtmp -> round(@r) if defined $downgrade;
+ $xtmp = $class -> new($xtmp); # back to Math::BigFloat
$x -> {sign} = $xtmp -> {sign};
$x -> {_m} = $xtmp -> {_m};
$x -> {_es} = $xtmp -> {_es};
@@ -3648,24 +3894,20 @@ sub bior {
}
sub bxor {
- my $x = shift;
- my $xref = ref($x);
- my $class = $xref || $x;
-
- croak 'bxor() is an instance method, not a class method' unless $xref;
- croak 'Not enough arguments for bxor()' if @_ < 1;
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return if $x -> modify('bxor');
- my $y = shift;
- $y = $class -> new($y) unless ref($y);
-
- my @r = @_;
+ return $x -> bnan(@r) if $x -> is_nan() || $y -> is_nan();
my $xtmp = Math::BigInt -> new($x -> bint()); # to Math::BigInt
- $xtmp -> bxor($y);
- $xtmp = $class -> new($xtmp); # back to Math::BigFloat
+ $xtmp = $xtmp -> bxor($y);
+ return $xtmp -> round(@r) if defined $downgrade;
+
+ $xtmp = $class -> new($xtmp); # back to Math::BigFloat
$x -> {sign} = $xtmp -> {sign};
$x -> {_m} = $xtmp -> {_m};
$x -> {_es} = $xtmp -> {_es};
@@ -3675,20 +3917,18 @@ sub bxor {
}
sub bnot {
- my $x = shift;
- my $xref = ref($x);
- my $class = $xref || $x;
-
- croak 'bnot() is an instance method, not a class method' unless $xref;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return if $x -> modify('bnot');
- my @r = @_;
+ return $x -> bnan(@r) if $x -> is_nan();
my $xtmp = Math::BigInt -> new($x -> bint()); # to Math::BigInt
- $xtmp -> bnot();
- $xtmp = $class -> new($xtmp); # back to Math::BigFloat
+ $xtmp = $xtmp -> bnot();
+ return $xtmp -> round(@r) if defined $downgrade;
+
+ $xtmp = $class -> new($xtmp); # back to Math::BigFloat
$x -> {sign} = $xtmp -> {sign};
$x -> {_m} = $xtmp -> {_m};
$x -> {_es} = $xtmp -> {_es};
@@ -3703,42 +3943,61 @@ sub bnot {
sub bround {
# accuracy: preserve $N digits, and overwrite the rest with 0's
- my $x = shift;
- my $class = ref($x) || $x;
- $x = $class->new(shift) if !ref($x);
- if (($_[0] || 0) < 0) {
+ my ($class, $x, @a) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ if (($a[0] || 0) < 0) {
croak('bround() needs positive accuracy');
}
- my ($scale, $mode) = $x->_scale_a(@_);
- return $x if !defined $scale || $x->modify('bround'); # no-op
+ return $x if $x->modify('bround');
+
+ my ($scale, $mode) = $x->_scale_a(@a);
+ if (!defined $scale) { # no-op
+ return $downgrade -> new($x) if defined($downgrade)
+ && ($x->is_int() || $x->is_inf() || $x->is_nan());
+ return $x;
+ }
- # scale is now either $x->{_a}, $accuracy, or the user parameter
- # test whether $x already has lower accuracy, do nothing in this case
- # but do round if the accuracy is the same, since a math operation might
- # want to round a number with A=5 to 5 digits afterwards again
- return $x if defined $x->{_a} && $x->{_a} < $scale;
+ # Scale is now either $x->{_a}, $accuracy, or the input argument. Test
+ # whether $x already has lower accuracy, do nothing in this case but do
+ # round if the accuracy is the same, since a math operation might want to
+ # round a number with A=5 to 5 digits afterwards again
+
+ if (defined $x->{_a} && $x->{_a} < $scale) {
+ return $downgrade -> new($x) if defined($downgrade)
+ && ($x->is_int() || $x->is_inf() || $x->is_nan());
+ return $x;
+ }
# scale < 0 makes no sense
# scale == 0 => keep all digits
# never round a +-inf, NaN
- return $x if ($scale <= 0) || $x->{sign} !~ /^[+-]$/;
+
+ if ($scale <= 0 || $x->{sign} !~ /^[+-]$/) {
+ return $downgrade -> new($x) if defined($downgrade)
+ && ($x->is_int() || $x->is_inf() || $x->is_nan());
+ return $x;
+ }
# 1: never round a 0
# 2: if we should keep more digits than the mantissa has, do nothing
if ($x->is_zero() || $LIB->_len($x->{_m}) <= $scale) {
$x->{_a} = $scale if !defined $x->{_a} || $x->{_a} > $scale;
+ return $downgrade -> new($x) if defined($downgrade)
+ && ($x->is_int() || $x->is_inf() || $x->is_nan());
return $x;
}
# pass sign to bround for '+inf' and '-inf' rounding modes
my $m = bless { sign => $x->{sign}, value => $x->{_m} }, 'Math::BigInt';
- $m->bround($scale, $mode); # round mantissa
- $x->{_m} = $m->{value}; # get our mantissa back
- $x->{_a} = $scale; # remember rounding
- delete $x->{_p}; # and clear P
+ $m = $m->bround($scale, $mode); # round mantissa
+ $x->{_m} = $m->{value}; # get our mantissa back
+ $x->{_a} = $scale; # remember rounding
+ delete $x->{_p}; # and clear P
+
+ # bnorm() downgrades if necessary, so no need to check whether to downgrade.
$x->bnorm(); # del trailing zeros gen. by bround()
}
@@ -3746,29 +4005,50 @@ sub bfround {
# precision: round to the $Nth digit left (+$n) or right (-$n) from the '.'
# $n == 0 means round to integer
# expects and returns normalized numbers!
- my $x = shift;
- my $class = ref($x) || $x;
- $x = $class->new(shift) if !ref($x);
- my ($scale, $mode) = $x->_scale_p(@_);
- return $x if !defined $scale || $x->modify('bfround'); # no-op
+ my ($class, $x, @p) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ return $x if $x->modify('bfround'); # no-op
+
+ my ($scale, $mode) = $x->_scale_p(@p);
+ if (!defined $scale) {
+ return $downgrade -> new($x) if defined($downgrade)
+ && ($x->is_int() || $x->is_inf() || $x->is_nan());
+ return $x;
+ }
# never round a 0, +-inf, NaN
+
if ($x->is_zero()) {
$x->{_p} = $scale if !defined $x->{_p} || $x->{_p} < $scale; # -3 < -2
+ return $downgrade -> new($x) if defined($downgrade)
+ && ($x->is_int() || $x->is_inf() || $x->is_nan());
+ return $x;
+ }
+
+ if ($x->{sign} !~ /^[+-]$/) {
+ return $downgrade -> new($x) if defined($downgrade)
+ && ($x->is_int() || $x->is_inf() || $x->is_nan());
return $x;
}
- return $x if $x->{sign} !~ /^[+-]$/;
# don't round if x already has lower precision
- return $x if (defined $x->{_p} && $x->{_p} < 0 && $scale < $x->{_p});
+ if (defined $x->{_p} && $x->{_p} < 0 && $scale < $x->{_p}) {
+ return $downgrade -> new($x) if defined($downgrade)
+ && ($x->is_int() || $x->is_inf() || $x->is_nan());
+ return $x;
+ }
$x->{_p} = $scale; # remember round in any case
delete $x->{_a}; # and clear A
if ($scale < 0) {
# round right from the '.'
- return $x if $x->{_es} eq '+'; # e >= 0 => nothing to round
+ if ($x->{_es} eq '+') { # e >= 0 => nothing to round
+ return $downgrade -> new($x) if defined($downgrade)
+ && ($x->is_int() || $x->is_inf() || $x->is_nan());
+ return $x;
+ }
$scale = -$scale; # positive for simplicity
my $len = $LIB->_len($x->{_m}); # length of mantissa
@@ -3788,13 +4068,23 @@ sub bfround {
# 1.2345 12345e-4 5 0 4
# do not round after/right of the $dad
- return $x if $scale > $dad; # 0.123, scale >= 3 => exit
+
+ if ($scale > $dad) { # 0.123, scale >= 3 => exit
+ return $downgrade -> new($x) if defined($downgrade)
+ && ($x->is_int() || $x->is_inf() || $x->is_nan());
+ return $x;
+ }
# round to zero if rounding inside the $zad, but not for last zero like:
- # 0.0065, scale -2, round last '0' with following '65' (scale == zad case)
- return $x->bzero() if $scale < $zad;
- if ($scale == $zad) # for 0.006, scale -3 and trunc
- {
+ # 0.0065, scale -2, round last '0' with following '65' (scale == zad
+ # case)
+ if ($scale < $zad) {
+ return $downgrade -> new($x) if defined($downgrade)
+ && ($x->is_int() || $x->is_inf() || $x->is_nan());
+ return $x->bzero();
+ }
+
+ if ($scale == $zad) { # for 0.006, scale -3 and trunc
$scale = -$len;
} else {
# adjust round-point to be inside mantissa
@@ -3817,12 +4107,17 @@ sub bfround {
# should be the same, so treat it as this
$scale = 1 if $scale == 0;
# shortcut if already integer
- return $x if $scale == 1 && $dbt <= $dbd;
+ if ($scale == 1 && $dbt <= $dbd) {
+ return $downgrade -> new($x) if defined($downgrade)
+ && ($x->is_int() || $x->is_inf() || $x->is_nan());
+ return $x;
+ }
# maximum digits before dot
++$dbd;
if ($scale > $dbd) {
# not enough digits before dot, so round to zero
+ return $downgrade -> new($x) if defined($downgrade);
return $x->bzero;
} elsif ($scale == $dbd) {
# maximum
@@ -3831,66 +4126,87 @@ sub bfround {
$scale = $dbd - $scale;
}
}
+
# pass sign to bround for rounding modes '+inf' and '-inf'
my $m = bless { sign => $x->{sign}, value => $x->{_m} }, 'Math::BigInt';
- $m->bround($scale, $mode);
+ $m = $m->bround($scale, $mode);
$x->{_m} = $m->{value}; # get our mantissa back
+
+ # bnorm() downgrades if necessary, so no need to check whether to downgrade.
$x->bnorm();
}
sub bfloor {
# round towards minus infinity
- my ($class, $x, $a, $p, $r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return $x if $x->modify('bfloor');
- return $x if $x->{sign} !~ /^[+-]$/; # nan, +inf, -inf
- # if $x has digits after dot
- if ($x->{_es} eq '-') {
- $x->{_m} = $LIB->_rsft($x->{_m}, $x->{_e}, 10); # cut off digits after dot
- $x->{_e} = $LIB->_zero(); # trunc/norm
- $x->{_es} = '+'; # abs e
- $x->{_m} = $LIB->_inc($x->{_m}) if $x->{sign} eq '-'; # increment if negative
+ return $x -> bnan(@r) if $x -> is_nan();
+
+ if ($x->{sign} =~ /^[+-]$/) {
+ # if $x has digits after dot, remove them
+ if ($x->{_es} eq '-') {
+ $x->{_m} = $LIB->_rsft($x->{_m}, $x->{_e}, 10);
+ $x->{_e} = $LIB->_zero();
+ $x->{_es} = '+';
+ # increment if negative
+ $x->{_m} = $LIB->_inc($x->{_m}) if $x->{sign} eq '-';
+ }
+ $x = $x->round(@r);
}
- $x->round($a, $p, $r);
+ return $downgrade -> new($x -> bdstr(), @r) if defined($downgrade);
+ return $x;
}
sub bceil {
# round towards plus infinity
- my ($class, $x, $a, $p, $r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return $x if $x->modify('bceil');
- return $x if $x->{sign} !~ /^[+-]$/; # nan, +inf, -inf
- # if $x has digits after dot
- if ($x->{_es} eq '-') {
- $x->{_m} = $LIB->_rsft($x->{_m}, $x->{_e}, 10); # cut off digits after dot
- $x->{_e} = $LIB->_zero(); # trunc/norm
- $x->{_es} = '+'; # abs e
- if ($x->{sign} eq '+') {
- $x->{_m} = $LIB->_inc($x->{_m}); # increment if positive
- } else {
- $x->{sign} = '+' if $LIB->_is_zero($x->{_m}); # avoid -0
+ return $x -> bnan(@r) if $x -> is_nan();
+
+ # if $x has digits after dot, remove them
+ if ($x->{sign} =~ /^[+-]$/) {
+ if ($x->{_es} eq '-') {
+ $x->{_m} = $LIB->_rsft($x->{_m}, $x->{_e}, 10);
+ $x->{_e} = $LIB->_zero();
+ $x->{_es} = '+';
+ if ($x->{sign} eq '+') {
+ $x->{_m} = $LIB->_inc($x->{_m}); # increment if positive
+ } else {
+ $x->{sign} = '+' if $LIB->_is_zero($x->{_m}); # avoid -0
+ }
}
+ $x = $x->round(@r);
}
- $x->round($a, $p, $r);
+
+ return $downgrade -> new($x -> bdstr(), @r) if defined($downgrade);
+ return $x;
}
sub bint {
# round towards zero
- my ($class, $x, $a, $p, $r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return $x if $x->modify('bint');
- return $x if $x->{sign} !~ /^[+-]$/; # nan, +inf, -inf
- # if $x has digits after the decimal point
- if ($x->{_es} eq '-') {
- $x->{_m} = $LIB->_rsft($x->{_m}, $x->{_e}, 10); # cut off digits after dot
- $x->{_e} = $LIB->_zero(); # truncate/normalize
- $x->{_es} = '+'; # abs e
- $x->{sign} = '+' if $LIB->_is_zero($x->{_m}); # avoid -0
+ return $x -> bnan(@r) if $x -> is_nan();
+
+ if ($x->{sign} =~ /^[+-]$/) {
+ # if $x has digits after the decimal point
+ if ($x->{_es} eq '-') {
+ $x->{_m} = $LIB->_rsft($x->{_m}, $x->{_e}, 10); # remove frac part
+ $x->{_e} = $LIB->_zero(); # truncate/normalize
+ $x->{_es} = '+'; # abs e
+ $x->{sign} = '+' if $LIB->_is_zero($x->{_m}); # avoid -0
+ }
+ $x = $x->round(@r);
}
- $x->round($a, $p, $r);
+
+ return $downgrade -> new($x -> bdstr(), @r) if defined($downgrade);
+ return $x;
}
###############################################################################
@@ -3901,8 +4217,14 @@ sub bgcd {
# (BINT or num_str, BINT or num_str) return BINT
# does not modify arguments, but returns new object
- unshift @_, __PACKAGE__
- unless ref($_[0]) || $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i;
+ # Class::method(...) -> Class->method(...)
+ unless (@_ && (defined(blessed($_[0])) && $_[0] -> isa(__PACKAGE__) ||
+ $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i))
+ {
+ #carp "Using ", (caller(0))[3], "() as a function is deprecated;",
+ # " use is as a method instead";
+ unshift @_, __PACKAGE__;
+ }
my ($class, @args) = objectify(0, @_);
@@ -3922,7 +4244,11 @@ sub bgcd {
last if $x -> is_one();
}
- return $x -> babs();
+ $x = $x -> babs();
+
+ return $downgrade -> new($x)
+ if defined $downgrade && $x->is_int();
+ return $x;
}
sub blcm {
@@ -3930,8 +4256,14 @@ sub blcm {
# does not modify arguments, but returns new object
# Least Common Multiple
- unshift @_, __PACKAGE__
- unless ref($_[0]) || $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i;
+ # Class::method(...) -> Class->method(...)
+ unless (@_ && (defined(blessed($_[0])) && $_[0] -> isa(__PACKAGE__) ||
+ $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i))
+ {
+ #carp "Using ", (caller(0))[3], "() as a function is deprecated;",
+ # " use is as a method instead";
+ unshift @_, __PACKAGE__;
+ }
my ($class, @args) = objectify(0, @_);
@@ -3944,10 +4276,14 @@ sub blcm {
$y = $class -> new($y) unless ref($y) && $y -> isa($class);
return $x->bnan() unless $y -> is_int();
my $gcd = $x -> bgcd($y);
- $x -> bdiv($gcd) -> bmul($y);
+ $x = $x -> bdiv($gcd) -> bmul($y);
}
- return $x -> babs();
+ $x = $x -> babs();
+
+ return $downgrade -> new($x)
+ if defined $downgrade && $x->is_int();
+ return $x;
}
###############################################################################
@@ -3955,9 +4291,9 @@ sub blcm {
###############################################################################
sub length {
- my $x = shift;
- my $class = ref($x) || $x;
- $x = $class->new(shift) unless ref($x);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
return 1 if $LIB->_is_zero($x->{_m});
@@ -3973,7 +4309,13 @@ sub length {
sub mantissa {
# return a copy of the mantissa
- my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ # The following line causes a lot of noise in the test suits for
+ # the Math-BigRat and bignum distributions. Fixme!
+ #carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ return $x -> bnan(@r) if $x -> is_nan();
if ($x->{sign} !~ /^[+-]$/) {
my $s = $x->{sign};
@@ -3981,14 +4323,19 @@ sub mantissa {
return Math::BigInt->new($s, undef, undef); # -inf, +inf => +inf
}
my $m = Math::BigInt->new($LIB->_str($x->{_m}), undef, undef);
- $m->bneg() if $x->{sign} eq '-';
-
+ $m = $m->bneg() if $x->{sign} eq '-';
$m;
}
sub exponent {
# return a copy of the exponent
- my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ # The following line causes a lot of noise in the test suits for
+ # the Math-BigRat and bignum distributions. Fixme!
+ #carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ return $x -> bnan(@r) if $x -> is_nan();
if ($x->{sign} !~ /^[+-]$/) {
my $s = $x->{sign};
@@ -4000,32 +4347,37 @@ sub exponent {
sub parts {
# return a copy of both the exponent and the mantissa
- my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
if ($x->{sign} !~ /^[+-]$/) {
my $s = $x->{sign};
$s =~ s/^\+//;
my $se = $s;
$se =~ s/^-//;
- return ($class->new($s), $class->new($se)); # +inf => inf and -inf, +inf => inf
+ # +inf => inf and -inf, +inf => inf
+ return ($class->new($s), $class->new($se));
}
my $m = Math::BigInt->bzero();
$m->{value} = $LIB->_copy($x->{_m});
- $m->bneg() if $x->{sign} eq '-';
+ $m = $m->bneg() if $x->{sign} eq '-';
($m, Math::BigInt->new($x->{_es} . $LIB->_num($x->{_e})));
}
+# Parts used for scientific notation with significand/mantissa and exponent as
+# integers. E.g., "12345.6789" is returned as "123456789" (mantissa) and "-4"
+# (exponent).
+
sub sparts {
- my $self = shift;
- my $class = ref $self;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- croak("sparts() is an instance method, not a class method")
- unless $class;
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
# Not-a-number.
- if ($self -> is_nan()) {
- my $mant = $self -> copy(); # mantissa
+ if ($x -> is_nan()) {
+ my $mant = $class -> bnan(); # mantissa
return $mant unless wantarray; # scalar context
my $expo = $class -> bnan(); # exponent
return ($mant, $expo); # list context
@@ -4033,8 +4385,8 @@ sub sparts {
# Infinity.
- if ($self -> is_inf()) {
- my $mant = $self -> copy(); # mantissa
+ if ($x -> is_inf()) {
+ my $mant = $class -> binf($x->{sign}); # mantissa
return $mant unless wantarray; # scalar context
my $expo = $class -> binf('+'); # exponent
return ($mant, $expo); # list context
@@ -4042,56 +4394,46 @@ sub sparts {
# Finite number.
- my $mant = $class -> bzero();
- $mant -> {sign} = $self -> {sign};
- $mant -> {_m} = $LIB->_copy($self -> {_m});
+ my $mant = $x -> copy();
+ $mant->{_es} = '+';
+ $mant->{_e} = $LIB->_zero();
+ $mant = $downgrade -> new($mant) if defined $downgrade;
return $mant unless wantarray;
- my $expo = $class -> bzero();
- $expo -> {sign} = $self -> {_es};
- $expo -> {_m} = $LIB->_copy($self -> {_e});
-
+ my $expo = bless { sign => $x -> {_es},
+ _m => $LIB->_copy($x -> {_e}),
+ _es => '+',
+ _e => $LIB->_zero(),
+ }, $class;
+ $expo = $downgrade -> new($expo) if defined $downgrade;
return ($mant, $expo);
}
-sub nparts {
- my $self = shift;
- my $class = ref $self;
+# Parts used for normalized notation with significand/mantissa as either 0 or a
+# number in the semi-open interval [1,10). E.g., "12345.6789" is returned as
+# "1.23456789" and "4".
- croak("nparts() is an instance method, not a class method")
- unless $class;
+sub nparts {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- # Not-a-number.
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
- if ($self -> is_nan()) {
- my $mant = $self -> copy(); # mantissa
- return $mant unless wantarray; # scalar context
- my $expo = $class -> bnan(); # exponent
- return ($mant, $expo); # list context
- }
-
- # Infinity.
+ # Not-a-number and Infinity.
- if ($self -> is_inf()) {
- my $mant = $self -> copy(); # mantissa
- return $mant unless wantarray; # scalar context
- my $expo = $class -> binf('+'); # exponent
- return ($mant, $expo); # list context
- }
+ return $x -> sparts() if $x -> is_nan() || $x -> is_inf();
# Finite number.
- my ($mant, $expo) = $self -> sparts();
+ my ($mant, $expo) = $x -> sparts();
if ($mant -> bcmp(0)) {
my ($ndigtot, $ndigfrac) = $mant -> length();
my $expo10adj = $ndigtot - $ndigfrac - 1;
- if ($expo10adj != 0) {
- my $factor = "1e" . -$expo10adj;
- $mant -> bmul($factor);
+ if ($expo10adj > 0) { # if mantissa is not an integer
+ $mant = $mant -> brsft($expo10adj, 10);
return $mant unless wantarray;
- $expo -> badd($expo10adj);
+ $expo = $expo -> badd($expo10adj);
return ($mant, $expo);
}
}
@@ -4100,63 +4442,182 @@ sub nparts {
return ($mant, $expo);
}
+# Parts used for engineering notation with significand/mantissa as either 0 or a
+# number in the semi-open interval [1,1000) and the exponent is a multiple of 3.
+# E.g., "12345.6789" is returned as "12.3456789" and "3".
+
sub eparts {
- my $self = shift;
- my $class = ref $self;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- croak("eparts() is an instance method, not a class method")
- unless $class;
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
# Not-a-number and Infinity.
- return $self -> sparts() if $self -> is_nan() || $self -> is_inf();
+ return $x -> sparts() if $x -> is_nan() || $x -> is_inf();
# Finite number.
- my ($mant, $expo) = $self -> nparts();
+ my ($mant, $expo) = $x -> nparts();
my $c = $expo -> copy() -> bmod(3);
- $mant -> blsft($c, 10);
+ $mant = $mant -> blsft($c, 10);
return $mant unless wantarray;
- $expo -> bsub($c);
+ $expo = $expo -> bsub($c);
return ($mant, $expo);
}
+# Parts used for decimal notation, e.g., "12345.6789" is returned as "12345"
+# (integer part) and "0.6789" (fraction part).
+
sub dparts {
- my $self = shift;
- my $class = ref $self;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- croak("dparts() is an instance method, not a class method")
- unless $class;
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
- # Not-a-number and Infinity.
+ # Not-a-number.
+
+ if ($x -> is_nan()) {
+ my $int = $class -> bnan();
+ return $int unless wantarray;
+ my $frc = $class -> bzero(); # or NaN?
+ return ($int, $frc);
+ }
+
+ # Infinity.
- if ($self -> is_nan() || $self -> is_inf()) {
- my $int = $self -> copy();
+ if ($x -> is_inf()) {
+ my $int = $class -> binf($x->{sign});
return $int unless wantarray;
my $frc = $class -> bzero();
return ($int, $frc);
}
- my $int = $self -> copy();
- my $frc = $class -> bzero();
+ # Finite number.
+
+ my $int = $x -> copy();
+ my $frc;
+
+ # If the input is an integer.
- # If the input has a fraction part.
+ if ($int->{_es} eq '+') {
+ $frc = $class -> bzero();
+ }
+
+ # If the input has a fraction part
- if ($int->{_es} eq '-') {
+ else {
$int->{_m} = $LIB -> _rsft($int->{_m}, $int->{_e}, 10);
$int->{_e} = $LIB -> _zero();
$int->{_es} = '+';
$int->{sign} = '+' if $LIB->_is_zero($int->{_m}); # avoid -0
-
return $int unless wantarray;
- $frc = $self -> copy() -> bsub($int);
+ $frc = $x -> copy() -> bsub($int);
return ($int, $frc);
}
+ $int = $downgrade -> new($int) if defined $downgrade;
return $int unless wantarray;
- return ($int, $frc);
+ return $int, $frc;
+}
+
+# Fractional parts with the numerator and denominator as integers. E.g.,
+# "123.4375" is returned as "1975" and "16".
+
+sub fparts {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # NaN => NaN/NaN
+
+ if ($x -> is_nan()) {
+ return $class -> bnan() unless wantarray;
+ return $class -> bnan(), $class -> bnan();
+ }
+
+ # ±Inf => ±Inf/1
+
+ if ($x -> is_inf()) {
+ my $numer = $class -> binf($x->{sign});
+ return $numer unless wantarray;
+ my $denom = $class -> bone();
+ return $numer, $denom;
+ }
+
+ # Finite number.
+
+ # If we get here, we know that the output is an integer.
+
+ $class = $downgrade if defined $downgrade;
+
+ my @flt_parts = ($x->{sign}, $x->{_m}, $x->{_es}, $x->{_e});
+ my @rat_parts = $class -> _flt_lib_parts_to_rat_lib_parts(@flt_parts);
+ my $num = $class -> new($LIB -> _str($rat_parts[1]));
+ my $den = $class -> new($LIB -> _str($rat_parts[2]));
+ $num = $num -> bneg() if $rat_parts[0] eq "-";
+ return $num unless wantarray;
+ return $num, $den;
+}
+
+# Given "123.4375", returns "1975", since "123.4375" is "1975/16".
+
+sub numerator {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ return $class -> bnan() if $x -> is_nan();
+ return $class -> binf($x -> sign()) if $x -> is_inf();
+ return $class -> bzero() if $x -> is_zero();
+
+ # If we get here, we know that the output is an integer.
+
+ $class = $downgrade if defined $downgrade;
+
+ if ($x -> {_es} eq '-') { # exponent < 0
+ my $numer_lib = $LIB -> _copy($x -> {_m});
+ my $denom_lib = $LIB -> _1ex($x -> {_e});
+ my $gcd_lib = $LIB -> _gcd($LIB -> _copy($numer_lib), $denom_lib);
+ $numer_lib = $LIB -> _div($numer_lib, $gcd_lib);
+ return $class -> new($x -> {sign} . $LIB -> _str($numer_lib));
+ }
+
+ elsif (! $LIB -> _is_zero($x -> {_e})) { # exponent > 0
+ my $numer_lib = $LIB -> _copy($x -> {_m});
+ $numer_lib = $LIB -> _lsft($numer_lib, $x -> {_e}, 10);
+ return $class -> new($x -> {sign} . $LIB -> _str($numer_lib));
+ }
+
+ else { # exponent = 0
+ return $class -> new($x -> {sign} . $LIB -> _str($x -> {_m}));
+ }
+}
+
+# Given "123.4375", returns "16", since "123.4375" is "1975/16".
+
+sub denominator {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ return $class -> bnan() if $x -> is_nan();
+
+ # If we get here, we know that the output is an integer.
+
+ $class = $downgrade if defined $downgrade;
+
+ if ($x -> {_es} eq '-') { # exponent < 0
+ my $numer_lib = $LIB -> _copy($x -> {_m});
+ my $denom_lib = $LIB -> _1ex($x -> {_e});
+ my $gcd_lib = $LIB -> _gcd($LIB -> _copy($numer_lib), $denom_lib);
+ $denom_lib = $LIB -> _div($denom_lib, $gcd_lib);
+ return $class -> new($LIB -> _str($denom_lib));
+ }
+
+ else { # exponent >= 0
+ return $class -> bone();
+ }
}
###############################################################################
@@ -4167,13 +4628,19 @@ sub bstr {
# (ref to BFLOAT or num_str) return num_str
# Convert number from internal format to (non-scientific) string format.
# internal format is always normalized (no leading zeros, "-0" => "+0")
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- if ($x->{sign} !~ /^[+-]$/) {
- return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
- return 'inf'; # +inf
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
+
+ if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
}
+ # Finite number
+
my $es = '0';
my $len = 1;
my $cad = 0;
@@ -4221,91 +4688,243 @@ sub bstr {
$es;
}
-# Decimal notation, e.g., "12345.6789".
+# Decimal notation, e.g., "12345.6789" (no exponent).
sub bdstr {
- my $x = shift;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
if ($x->{sign} ne '+' && $x->{sign} ne '-') {
- return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
- return 'inf'; # +inf
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
}
+ # Upgrade?
+
+ return $upgrade -> bdstr($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
+
my $mant = $LIB->_str($x->{_m});
- my $expo = $x -> exponent();
+ my $esgn = $x->{_es};
+ my $eabs = $LIB -> _num($x->{_e});
+
+ my $uintmax = ~0;
my $str = $mant;
- if ($expo >= 0) {
- $str .= "0" x $expo;
+ if ($esgn eq '+') {
+
+ croak("The absolute value of the exponent is too large")
+ if $eabs > $uintmax;
+
+ $str .= "0" x $eabs;
+
} else {
- my $mantlen = CORE::length($mant);
- my $c = $mantlen + $expo;
+ my $mlen = CORE::length($mant);
+ my $c = $mlen - $eabs;
+
+ my $intmax = ($uintmax - 1) / 2;
+ croak("The absolute value of the exponent is too large")
+ if (1 - $c) > $intmax;
+
$str = "0" x (1 - $c) . $str if $c <= 0;
- substr($str, $expo, 0) = '.';
+ substr($str, -$eabs, 0) = '.';
}
- return $x->{sign} eq '-' ? "-$str" : $str;
+ return $x->{sign} eq '-' ? '-' . $str : $str;
}
-# Scientific notation with significand/mantissa as an integer, e.g., "12345.6789"
-# is written as "123456789e-4".
+# Scientific notation with significand/mantissa and exponent as integers, e.g.,
+# "12345.6789" is written as "123456789e-4".
sub bsstr {
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
if ($x->{sign} ne '+' && $x->{sign} ne '-') {
- return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
- return 'inf'; # +inf
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
}
- my $str = $LIB->_str($x->{_m}) . 'e' . $x->{_es}. $LIB->_str($x->{_e});
- return $x->{sign} eq '-' ? "-$str" : $str;
+ # Upgrade?
+
+ return $upgrade -> bsstr($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
+
+ ($x->{sign} eq '-' ? '-' : '') . $LIB->_str($x->{_m})
+ . 'e' . $x->{_es} . $LIB->_str($x->{_e});
}
# Normalized notation, e.g., "12345.6789" is written as "1.23456789e+4".
sub bnstr {
- my $x = shift;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
if ($x->{sign} ne '+' && $x->{sign} ne '-') {
- return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
- return 'inf'; # +inf
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
}
- my ($mant, $expo) = $x -> nparts();
+ # Upgrade?
+
+ return $upgrade -> bnstr($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
- my $esgn = $expo < 0 ? '-' : '+';
- my $eabs = $expo -> babs() -> bfround(0) -> bstr();
- #$eabs = '0' . $eabs if length($eabs) < 2;
+ my $str = $x->{sign} eq '-' ? '-' : '';
- return $mant . 'e' . $esgn . $eabs;
+ # Get the mantissa and the length of the mantissa.
+
+ my $mant = $LIB->_str($x->{_m});
+ my $mantlen = CORE::length($mant);
+
+ if ($mantlen == 1) {
+
+ # Not decimal point when the mantissa has length one, i.e., return the
+ # number 2 as the string "2", not "2.".
+
+ $str .= $mant . 'e' . $x->{_es} . $LIB->_str($x->{_e});
+
+ } else {
+
+ # Compute new exponent where the original exponent is adjusted by the
+ # length of the mantissa minus one (because the decimal point is after
+ # one digit).
+
+ my ($eabs, $esgn) = $LIB -> _sadd($LIB -> _copy($x->{_e}), $x->{_es},
+ $LIB -> _new($mantlen - 1), "+");
+ substr $mant, 1, 0, ".";
+ $str .= $mant . 'e' . $esgn . $LIB->_str($eabs);
+
+ }
+
+ return $str;
}
# Engineering notation, e.g., "12345.6789" is written as "12.3456789e+3".
sub bestr {
- my $x = shift;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
if ($x->{sign} ne '+' && $x->{sign} ne '-') {
- return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
- return 'inf'; # +inf
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
+ }
+
+ # Upgrade?
+
+ return $upgrade -> bestr($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
+
+ my $str = $x->{sign} eq '-' ? '-' : '';
+
+ # Get the mantissa, the length of the mantissa, and adjust the exponent by
+ # the length of the mantissa minus 1 (because the dot is after one digit).
+
+ my $mant = $LIB->_str($x->{_m});
+ my $mantlen = CORE::length($mant);
+ my ($eabs, $esgn) = $LIB -> _sadd($LIB -> _copy($x->{_e}), $x->{_es},
+ $LIB -> _new($mantlen - 1), "+");
+
+ my $dotpos = 1;
+ my $mod = $LIB -> _mod($LIB -> _copy($eabs), $LIB -> _new("3"));
+ unless ($LIB -> _is_zero($mod)) {
+ if ($esgn eq '+') {
+ $eabs = $LIB -> _sub($eabs, $mod);
+ $dotpos += $LIB -> _num($mod);
+ } else {
+ my $delta = $LIB -> _sub($LIB -> _new("3"), $mod);
+ $eabs = $LIB -> _add($eabs, $delta);
+ $dotpos += $LIB -> _num($delta);
+ }
}
- my ($mant, $expo) = $x -> eparts();
+ if ($dotpos < $mantlen) {
+ substr $mant, $dotpos, 0, ".";
+ } elsif ($dotpos > $mantlen) {
+ $mant .= "0" x ($dotpos - $mantlen);
+ }
- my $esgn = $expo < 0 ? '-' : '+';
- my $eabs = $expo -> babs() -> bfround(0) -> bstr();
- #$eabs = '0' . $eabs if length($eabs) < 2;
+ $str .= $mant . 'e' . $esgn . $LIB->_str($eabs);
- return $mant . 'e' . $esgn . $eabs;
+ return $str;
+}
+
+# Fractional notation, e.g., "123.4375" is written as "1975/16".
+
+sub bfstr {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
+
+ if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
+ }
+
+ # Upgrade?
+
+ return $upgrade -> bfstr($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
+
+ my $str = $x->{sign} eq '-' ? '-' : '';
+
+ if ($x->{_es} eq '+') {
+ $str .= $LIB -> _str($x->{_m}) . ("0" x $LIB -> _num($x->{_e}));
+ } else {
+ my @flt_parts = ($x->{sign}, $x->{_m}, $x->{_es}, $x->{_e});
+ my @rat_parts = $class -> _flt_lib_parts_to_rat_lib_parts(@flt_parts);
+ $str = $LIB -> _str($rat_parts[1]) . "/" . $LIB -> _str($rat_parts[2]);
+ $str = "-" . $str if $rat_parts[0] eq "-";
+ }
+
+ return $str;
}
sub to_hex {
# return number as hexadecimal string (only for integers defined)
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
- my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
+
+ if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
+ }
+
+ # Upgrade?
+
+ return $upgrade -> to_hex($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
- return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
return '0' if $x->is_zero();
return $nan if $x->{_es} ne '+'; # how to do 1e-1 in hex?
@@ -4320,10 +4939,24 @@ sub to_hex {
sub to_oct {
# return number as octal digit string (only for integers defined)
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
- my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
+
+ if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
+ }
+
+ # Upgrade?
+
+ return $upgrade -> to_hex($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
- return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
return '0' if $x->is_zero();
return $nan if $x->{_es} ne '+'; # how to do 1e-1 in octal?
@@ -4338,10 +4971,24 @@ sub to_oct {
sub to_bin {
# return number as binary digit string (only for integers defined)
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
- my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
+
+ if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
+ }
+
+ # Upgrade?
+
+ return $upgrade -> to_hex($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
- return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
return '0' if $x->is_zero();
return $nan if $x->{_es} ne '+'; # how to do 1e-1 in binary?
@@ -4355,9 +5002,9 @@ sub to_bin {
}
sub to_ieee754 {
- my $x = shift;
- my $format = shift;
- my $class = ref $x;
+ my ($class, $x, $format, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
my $enc; # significand encoding (applies only to decimal)
my $k; # storage width in bits
@@ -4494,41 +5141,85 @@ sub to_ieee754 {
$expo = $class -> new($expo_est);
if ($expo_est > 0) {
- $mant -> bmul($binv -> copy() -> bpow($expo));
+ $mant = $mant -> bmul($binv -> copy() -> bpow($expo));
} elsif ($expo_est < 0) {
my $expo_abs = $expo -> copy() -> bneg();
- $mant -> bmul($b -> copy() -> bpow($expo_abs));
+ $mant = $mant -> bmul($b -> copy() -> bpow($expo_abs));
}
- # Final adjustment.
+ # Final adjustment of the estimate above.
while ($mant >= $b && $expo <= $emax) {
- $mant -> bmul($binv);
- $expo -> binc();
+ $mant = $mant -> bmul($binv);
+ $expo = $expo -> binc();
}
while ($mant < $one && $expo >= $emin) {
- $mant -> bmul($b);
- $expo -> bdec();
+ $mant = $mant -> bmul($b);
+ $expo = $expo -> bdec();
}
- # Encode as infinity, normal number or subnormal number?
+ # This is when the magnitude is larger than what can be represented
+ # in this format. Encode as infinity.
- if ($expo > $emax) { # overflow => infinity
- $expo = $emax -> copy() -> binc();
+ if ($expo > $emax) {
$mant = $class -> bzero();
- } elsif ($expo < $emin) { # subnormal number
- my $const = $class -> new(2) -> bpow($t - 1);
- $mant -> bmul($const);
- $mant -> bfround(0);
- } else { # normal number
- $mant -> bdec(); # remove implicit leading bit
- my $const = $class -> new(2) -> bpow($t);
- $mant -> bmul($const) -> bfround(0);
+ $expo = $emax -> copy() -> binc();
+ }
+
+ # This is when the magnitude is so small that the number is encoded
+ # as a subnormal number.
+ #
+ # If the magnitude is smaller than that of the smallest subnormal
+ # number, and rounded downwards, it is encoded as zero. This works
+ # transparently and does not need to be treated as a special case.
+ #
+ # If the number is between the largest subnormal number and the
+ # smallest normal number, and the value is rounded upwards, the
+ # value must be encoded as a normal number. This must be treated as
+ # a special case.
+
+ elsif ($expo < $emin) {
+
+ # Scale up the mantissa (significand), and round to integer.
+
+ my $const = $class -> new($b) -> bpow($t - 1);
+ $mant = $mant -> bmul($const);
+ $mant = $mant -> bfround(0);
+
+ # If the mantissa overflowed, encode as the smallest normal
+ # number.
+
+ if ($mant == $const -> bmul($b)) {
+ $mant = $mant -> bzero();
+ $expo = $expo -> binc();
+ }
+ }
+
+ # This is when the magnitude is within the range of what can be
+ # encoded as a normal number.
+
+ else {
+
+ # Remove implicit leading bit, scale up the mantissa
+ # (significand) to an integer, and round.
+
+ $mant = $mant -> bdec();
+ my $const = $class -> new($b) -> bpow($t);
+ $mant = $mant -> bmul($const) -> bfround(0);
+
+ # If the mantissa overflowed, encode as the next larger value.
+ # This works correctly also when the next larger value is
+ # infinity.
+
+ if ($mant == $const) {
+ $mant = $mant -> bzero();
+ $expo = $expo -> binc();
+ }
}
}
- $expo -> badd($bias); # add bias
+ $expo = $expo -> badd($bias); # add bias
my $signbit = "$sign";
@@ -4548,7 +5239,9 @@ sub to_ieee754 {
sub as_hex {
# return number as hexadecimal string (only for integers defined)
- my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+ my (undef, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
return '0x0' if $x->is_zero();
@@ -4566,7 +5259,9 @@ sub as_hex {
sub as_oct {
# return number as octal digit string (only for integers defined)
- my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+ my (undef, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
return '00' if $x->is_zero();
@@ -4584,7 +5279,9 @@ sub as_oct {
sub as_bin {
# return number as binary digit string (only for integers defined)
- my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+ my (undef, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
return '0b0' if $x->is_zero();
@@ -4601,21 +5298,25 @@ sub as_bin {
sub numify {
# Make a Perl scalar number from a Math::BigFloat object.
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+ my (undef, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
if ($x -> is_nan()) {
require Math::Complex;
- my $inf = Math::Complex::Inf();
+ my $inf = $Math::Complex::Inf;
return $inf - $inf;
}
if ($x -> is_inf()) {
require Math::Complex;
- my $inf = Math::Complex::Inf();
+ my $inf = $Math::Complex::Inf;
return $x -> is_negative() ? -$inf : $inf;
}
# Create a string and let Perl's atoi()/atof() handle the rest.
+
return 0 + $x -> bnstr();
}
@@ -4625,65 +5326,97 @@ sub numify {
sub import {
my $class = shift;
- my $l = scalar @_;
- my $lib = '';
- my @a;
- my $lib_kind = 'try';
- $IMPORT=1;
- for (my $i = 0; $i < $l ; $i++) {
- if ($_[$i] eq ':constant') {
- # This causes overlord er load to step in. 'binary' and 'integer'
- # are handled by BigInt.
- overload::constant float => sub { $class->new(shift); };
- } elsif ($_[$i] eq 'upgrade') {
- # this causes upgrading
- $upgrade = $_[$i+1]; # or undef to disable
- $i++;
- } elsif ($_[$i] eq 'downgrade') {
- # this causes downgrading
- $downgrade = $_[$i+1]; # or undef to disable
- $i++;
- } elsif ($_[$i] =~ /^(lib|try|only)\z/) {
- # alternative library
- $lib = $_[$i+1] || ''; # default Calc
- $lib_kind = $1; # lib, try or only
- $i++;
- } elsif ($_[$i] eq 'with') {
+ $IMPORT++; # remember we did import()
+
+ my @import = ('objectify');
+ my @a; # unrecognized arguments
+
+ while (@_) {
+ my $param = shift;
+
+ # Enable overloading of constants.
+
+ if ($param eq ':constant') {
+ overload::constant
+
+ integer => sub {
+ $class -> new(shift);
+ },
+
+ float => sub {
+ $class -> new(shift);
+ },
+
+ binary => sub {
+ # E.g., a literal 0377 shall result in an object whose value
+ # is decimal 255, but new("0377") returns decimal 377.
+ return $class -> from_oct($_[0]) if $_[0] =~ /^0_*[0-7]/;
+ $class -> new(shift);
+ };
+ next;
+ }
+
+ # Upgrading.
+
+ if ($param eq 'upgrade') {
+ $class -> upgrade(shift);
+ next;
+ }
+
+ # Downgrading.
+
+ if ($param eq 'downgrade') {
+ $class -> downgrade(shift);
+ next;
+ }
+
+ # Accuracy.
+
+ if ($param eq 'accuracy') {
+ $class -> accuracy(shift);
+ next;
+ }
+
+ # Precision.
+
+ if ($param eq 'precision') {
+ $class -> precision(shift);
+ next;
+ }
+
+ # Rounding mode.
+
+ if ($param eq 'round_mode') {
+ $class -> round_mode(shift);
+ next;
+ }
+
+ # Backend library.
+
+ if ($param =~ /^(lib|try|only)\z/) {
+ push @import, $param;
+ push @import, shift() if @_;
+ next;
+ }
+
+ if ($param eq 'with') {
# alternative class for our private parts()
# XXX: no longer supported
- # $LIB = $_[$i+1] || 'Math::BigInt';
- $i++;
- } else {
- push @a, $_[$i];
+ # $LIB = shift() || 'Calc';
+ # carp "'with' is no longer supported, use 'lib', 'try', or 'only'";
+ shift;
+ next;
}
- }
-
- $lib =~ tr/a-zA-Z0-9,://cd; # restrict to sane characters
- # let use Math::BigInt lib => 'GMP'; use Math::BigFloat; still work
- my $mbilib = eval { Math::BigInt->config('lib') };
- if ((defined $mbilib) && ($LIB eq 'Math::BigInt::Calc')) {
- # $LIB already loaded
- Math::BigInt->import($lib_kind, "$lib, $mbilib", 'objectify');
- } else {
- # $LIB not loaded, or with ne "Math::BigInt::Calc"
- $lib .= ",$mbilib" if defined $mbilib;
- $lib =~ s/^,//; # don't leave empty
- # replacement library can handle lib statement, but also could ignore it
+ # Unrecognized parameter.
- # Perl < 5.6.0 dies with "out of memory!" when eval() and ':constant' is
- # used in the same script, or eval inside import(). So we require MBI:
- require Math::BigInt;
- Math::BigInt->import($lib_kind => $lib, 'objectify');
+ push @a, $param;
}
- if ($@) {
- croak("Couldn't load $lib: $! $@");
- }
- # find out which one was actually loaded
- $LIB = Math::BigInt->config('lib');
- # register us with MBI to get notified of future lib changes
- Math::BigInt::_register_callback($class, sub { $LIB = $_[0]; });
+ Math::BigInt -> import(@import);
+
+ # find out which one was actually loaded
+ $LIB = Math::BigInt -> config('lib');
$class->export_to_level(1, $class, @a); # export wanted functions
}
@@ -4701,17 +5434,20 @@ sub _len_to_steps {
my $l = 40;
my $r = $d;
- # Otherwise this does not work under -Mbignum and we do not yet have "no bignum;" :(
+ # Otherwise this does not work under -Mbignum and we do not yet have "no
+ # bignum;" :(
$l = $l->numify if ref($l);
$r = $r->numify if ref($r);
$lg2 = $lg2->numify if ref($lg2);
$lg10 = $lg10->numify if ref($lg10);
- # binary search for the right value (could this be written as the reverse of lg(n!)?)
+ # binary search for the right value (could this be written as the reverse of
+ # lg(n!)?)
while ($r - $l > 1) {
my $n = int(($r - $l) / 2) + $l;
- my $ramanujan =
- int(($n * log($n) - $n + log($n * (1 + 4*$n*(1+2*$n))) / 6 + $lg2) / $lg10);
+ my $ramanujan
+ = int(($n * log($n) - $n + log($n * (1 + 4*$n*(1+2*$n))) / 6 + $lg2)
+ / $lg10);
$ramanujan > $d ? $r = $n : $l = $n;
}
$l;
@@ -4745,15 +5481,19 @@ sub _log {
my ($limit, $v, $u, $below, $factor, $next, $over, $f);
- $v = $x->copy(); $v->binc(); # v = x+1
- $x->bdec(); $u = $x->copy(); # u = x-1; x = x-1
- $x->bdiv($v, $scale); # first term: u/v
+ $v = $x->copy();
+ $v = $v -> binc(); # v = x+1
+ $x = $x->bdec();
+ $u = $x->copy(); # u = x-1; x = x-1
+ $x = $x->bdiv($v, $scale); # first term: u/v
$below = $v->copy();
$over = $u->copy();
- $u *= $u; $v *= $v; # u^2, v^2
- $below->bmul($v); # u^3, v^3
- $over->bmul($u);
- $factor = $class->new(3); $f = $class->new(2);
+ $u = $u -> bmul($u); # u^2
+ $v = $v -> bmul($v); # v^2
+ $below = $below->bmul($v); # u^3, v^3
+ $over = $over->bmul($u);
+ $factor = $class->new(3);
+ $f = $class->new(2);
$limit = $class->new("1E-". ($scale-1));
@@ -4769,27 +5509,24 @@ sub _log {
# round $over and $below first, we save a lot of time for the division
# (not with log(1.2345), but try log (123**123) to see what I mean. This
# can introduce a rounding error if the division result would be f.i.
- # 0.1234500000001 and we round it to 5 digits it would become 0.12346, but
- # if we truncated $over and $below we might get 0.12345. Does this matter
- # for the end result? So we give $over and $below 4 more digits to be
- # on the safe side (unscientific error handling as usual... :+D
+ # 0.1234500000001 and we round it to 5 digits it would become 0.12346,
+ # but if we truncated $over and $below we might get 0.12345. Does this
+ # matter for the end result? So we give $over and $below 4 more digits
+ # to be on the safe side (unscientific error handling as usual... :+D
$next = $over->copy()->bround($scale+4)
->bdiv($below->copy()->bmul($factor)->bround($scale+4),
$scale);
- ## old version:
- ## $next = $over->copy()->bdiv($below->copy()->bmul($factor), $scale);
-
last if $next->bacmp($limit) <= 0;
delete $next->{_a};
delete $next->{_p};
- $x->badd($next);
+ $x = $x->badd($next);
# calculate things for the next term
$over *= $u;
$below *= $v;
- $factor->badd($f);
+ $factor = $factor->badd($f);
}
$x->bmul($f); # $x *= 2
}
@@ -4808,9 +5545,9 @@ sub _log_10 {
# long, we make it faster by about a factor of 100 by dividing $x by 10.
# The same observation is valid for numbers smaller than 0.1, e.g. computing
- # log(1) is fastest, and the further away we get from 1, the longer it takes.
- # So we also 'break' this down by multiplying $x with 10 and subtract the
- # log(10) afterwards to get the correct result.
+ # log(1) is fastest, and the further away we get from 1, the longer it
+ # takes. So we also 'break' this down by multiplying $x with 10 and subtract
+ # the log(10) afterwards to get the correct result.
# To get $x even closer to 1, we also divide by 2 and then use log(2) to
# correct for this. For instance if $x is 2.4, we use the formula:
@@ -4841,8 +5578,8 @@ sub _log_10 {
$dbd = 0; # disable shortcut
# we can use the cached value in these cases
if ($scale <= $LOG_10_A) {
- $x->bzero();
- $x->badd($LOG_10); # modify $x in place
+ $x = $x->bzero();
+ $x = $x->badd($LOG_10); # modify $x in place
$calc = 0; # no need to calc, but round
}
# if we can't use the shortcut, we continue normally
@@ -4854,8 +5591,8 @@ sub _log_10 {
$dbd = 0; # disable shortcut
# we can use the cached value in these cases
if ($scale <= $LOG_2_A) {
- $x->bzero();
- $x->badd($LOG_2); # modify $x in place
+ $x = $x->bzero();
+ $x = $x->badd($LOG_2); # modify $x in place
$calc = 0; # no need to calc, but round
}
# if we can't use the shortcut, we continue normally
@@ -4871,8 +5608,8 @@ sub _log_10 {
$dbd = 0; # disable shortcut
# we can use the cached value in these cases
if ($scale <= $LOG_10_A) {
- $x->bzero();
- $x->bsub($LOG_10);
+ $x = $x->bzero();
+ $x = $x->bsub($LOG_10);
$calc = 0; # no need to calc, but round
}
}
@@ -4893,8 +5630,8 @@ sub _log_10 {
$LOG_10 = $class->new($LOG_10, undef, undef) unless ref $LOG_10;
#print "x = $x, dbd = $dbd, calc = $calc\n";
- # got more than one digit before the dot, or more than one zero after the
- # dot, so do:
+ # got more than one digit before the dot, or more than one zero after
+ # the dot, so do:
# log(123) == log(1.23) + log(10) * 2
# log(0.0123) == log(1.23) - log(10) * 2
@@ -4903,7 +5640,12 @@ sub _log_10 {
$l_10 = $LOG_10->copy(); # copy for mul
} else {
# else: slower, compute and cache result
- # also disable downgrade for this code path
+
+ # Disabling upgrading and downgrading is no longer necessary to
+ # avoid an infinite recursion, but it avoids unnecessary upgrading
+ # and downgrading in the intermediate computations.
+
+ local $Math::BigInt::upgrade = undef;
local $Math::BigFloat::downgrade = undef;
# shorten the time to calculate log(10) based on the following:
@@ -4918,7 +5660,7 @@ sub _log_10 {
} else {
# else: slower, compute and cache result
$l_2 = $two->copy();
- $l_2->_log($scale); # scale+4, actually
+ $l_2 = $l_2->_log($scale); # scale+4, actually
$LOG_2 = $l_2->copy(); # cache the result for later
# the copy() is for mul below
$LOG_2_A = $scale;
@@ -4926,26 +5668,25 @@ sub _log_10 {
# now calculate log(1.25):
$l_10 = $class->new('1.25');
- $l_10->_log($scale); # scale+4, actually
+ $l_10 = $l_10->_log($scale); # scale+4, actually
# log(1.25) + log(2) + log(2) + log(2):
- $l_10->badd($l_2);
- $l_10->badd($l_2);
- $l_10->badd($l_2);
+ $l_10 = $l_10->badd($l_2);
+ $l_10 = $l_10->badd($l_2);
+ $l_10 = $l_10->badd($l_2);
$LOG_10 = $l_10->copy(); # cache the result for later
# the copy() is for mul below
$LOG_10_A = $scale;
}
$dbd-- if ($dbd > 1); # 20 => dbd=2, so make it dbd=1
- $l_10->bmul($class->new($dbd)); # log(10) * (digits_before_dot-1)
+ $l_10 = $l_10->bmul($class->new($dbd)); # log(10) * (digits_before_dot-1)
my $dbd_sign = '+';
if ($dbd < 0) {
$dbd = -$dbd;
$dbd_sign = '-';
}
($x->{_e}, $x->{_es}) =
- _e_sub($x->{_e}, $LIB->_new($dbd), $x->{_es}, $dbd_sign); # 123 => 1.23
-
+ $LIB -> _ssub($x->{_e}, $x->{_es}, $LIB->_new($dbd), $dbd_sign);
}
# Now: 0.1 <= $x < 10 (and possible correction in l_10)
@@ -4958,13 +5699,13 @@ sub _log_10 {
my $twos = 0; # default: none (0 times)
while ($x->bacmp($HALF) <= 0) { # X <= 0.5
$twos--;
- $x->bmul($two);
+ $x = $x->bmul($two);
}
while ($x->bacmp($two) >= 0) { # X >= 2
$twos++;
- $x->bdiv($two, $scale+4); # keep all digits
+ $x = $x->bdiv($two, $scale+4); # keep all digits
}
- $x->bround($scale+4);
+ $x = $x->bround($scale+4);
# $twos > 0 => did mul 2, < 0 => did div 2 (but we never did both)
# So calculate correction factor based on ln(2):
if ($twos != 0) {
@@ -4974,69 +5715,33 @@ sub _log_10 {
$l_2 = $LOG_2->copy(); # copy() for the mul below
} else {
# else: slower, compute and cache result
- # also disable downgrade for this code path
+
+ # Disabling upgrading and downgrading is no longer necessary to
+ # avoid an infinite recursion, but it avoids unnecessary upgrading
+ # and downgrading in the intermediate computations.
+
+ local $Math::BigInt::upgrade = undef;
local $Math::BigFloat::downgrade = undef;
+
$l_2 = $two->copy();
- $l_2->_log($scale); # scale+4, actually
+ $l_2 = $l_2->_log($scale); # scale+4, actually
$LOG_2 = $l_2->copy(); # cache the result for later
# the copy() is for mul below
$LOG_2_A = $scale;
}
- $l_2->bmul($twos); # * -2 => subtract, * 2 => add
+ $l_2 = $l_2->bmul($twos); # * -2 => subtract, * 2 => add
} else {
undef $l_2;
}
- $x->_log($scale); # need to do the "normal" way
- $x->badd($l_10) if defined $l_10; # correct it by ln(10)
- $x->badd($l_2) if defined $l_2; # and maybe by ln(2)
+ $x = $x->_log($scale); # need to do the "normal" way
+ $x = $x->badd($l_10) if defined $l_10; # correct it by ln(10)
+ $x = $x->badd($l_2) if defined $l_2; # and maybe by ln(2)
# all done, $x contains now the result
$x;
}
-sub _e_add {
- # Internal helper sub to take two positive integers and their signs and
- # then add them. Input ($LIB, $LIB, ('+'|'-'), ('+'|'-')), output
- # ($LIB, ('+'|'-')).
-
- my ($x, $y, $xs, $ys) = @_;
-
- # if the signs are equal we can add them (-5 + -3 => -(5 + 3) => -8)
- if ($xs eq $ys) {
- $x = $LIB->_add($x, $y); # +a + +b or -a + -b
- } else {
- my $a = $LIB->_acmp($x, $y);
- if ($a == 0) {
- # This does NOT modify $x in-place. TODO: Fix this?
- $x = $LIB->_zero(); # result is 0
- $xs = '+';
- return ($x, $xs);
- }
- if ($a > 0) {
- $x = $LIB->_sub($x, $y); # abs sub
- } else { # a < 0
- $x = $LIB->_sub ($y, $x, 1); # abs sub
- $xs = $ys;
- }
- }
-
- $xs = '+' if $xs eq '-' && $LIB->_is_zero($x); # no "-0"
-
- return ($x, $xs);
-}
-
-sub _e_sub {
- # Internal helper sub to take two positive integers and their signs and
- # then subtract them. Input ($LIB, $LIB, ('+'|'-'), ('+'|'-')),
- # output ($LIB, ('+'|'-'))
- my ($x, $y, $xs, $ys) = @_;
-
- # flip sign
- $ys = $ys eq '+' ? '-' : '+'; # swap sign of second operand ...
- _e_add($x, $y, $xs, $ys); # ... and let _e_add() do the job
-}
-
sub _pow {
# Calculate a power where $y is a non-integer, like 2 ** 0.3
my ($x, $y, @r) = @_;
@@ -5079,23 +5784,32 @@ sub _pow {
# when user set globals, they would interfere with our calculation, so
# disable them and later re-enable them
no strict 'refs';
- my $abr = "$class\::accuracy"; my $ab = $$abr; $$abr = undef;
- my $pbr = "$class\::precision"; my $pb = $$pbr; $$pbr = undef;
+ my $abr = "$class\::accuracy";
+ my $ab = $$abr;
+ $$abr = undef;
+ my $pbr = "$class\::precision";
+ my $pb = $$pbr;
+ $$pbr = undef;
# we also need to disable any set A or P on $x (_find_round_parameters took
# them already into account), since these would interfere, too
delete $x->{_a};
delete $x->{_p};
- # need to disable $upgrade in BigInt, to avoid deep recursion
+
+ # Disabling upgrading and downgrading is no longer necessary to avoid an
+ # infinite recursion, but it avoids unnecessary upgrading and downgrading in
+ # the intermediate computations.
+
local $Math::BigInt::upgrade = undef;
+ local $Math::BigFloat::downgrade = undef;
my ($limit, $v, $u, $below, $factor, $next, $over);
$u = $x->copy()->blog(undef, $scale)->bmul($y);
my $do_invert = ($u->{sign} eq '-');
- $u->bneg() if $do_invert;
+ $u = $u->bneg() if $do_invert;
$v = $class->bone(); # 1
$factor = $class->new(2); # 2
- $x->bone(); # first term: 1
+ $x = $x->bone(); # first term: 1
$below = $v->copy();
$over = $u->copy();
@@ -5107,25 +5821,25 @@ sub _pow {
# anymore, so we stop:
$next = $over->copy()->bdiv($below, $scale);
last if $next->bacmp($limit) <= 0;
- $x->badd($next);
+ $x = $x->badd($next);
# calculate things for the next term
$over *= $u;
$below *= $factor;
- $factor->binc();
+ $factor = $factor->binc();
last if $x->{sign} !~ /^[-+]$/;
}
if ($do_invert) {
my $x_copy = $x->copy();
- $x->bone->bdiv($x_copy, $scale);
+ $x = $x->bone->bdiv($x_copy, $scale);
}
# shortcut to not run through _find_round_parameters again
if (defined $params[0]) {
- $x->bround($params[0], $params[2]); # then round accordingly
+ $x = $x->bround($params[0], $params[2]); # then round accordingly
} else {
- $x->bfround($params[1], $params[2]); # then round accordingly
+ $x = $x->bfround($params[1], $params[2]); # then round accordingly
}
if ($fallback) {
# clear a/p after round, since user did not request it
@@ -5138,6 +5852,19 @@ sub _pow {
$x;
}
+# These functions are only provided for backwards compabibility so that old
+# version of Math::BigRat etc. don't complain about missing them.
+
+sub _e_add {
+ my ($x, $y, $xs, $ys) = @_;
+ return $LIB -> _sadd($x, $xs, $y, $ys);
+}
+
+sub _e_sub {
+ my ($x, $y, $xs, $ys) = @_;
+ return $LIB -> _ssub($x, $xs, $y, $ys);
+}
+
1;
__END__
@@ -5146,7 +5873,7 @@ __END__
=head1 NAME
-Math::BigFloat - Arbitrary size floating point math package
+Math::BigFloat - arbitrary size floating point math package
=head1 SYNOPSIS
@@ -5169,10 +5896,13 @@ Math::BigFloat - Arbitrary size floating point math package
$x = Math::BigFloat->new($str); # defaults to 0
$x = Math::BigFloat->new('0x123'); # from hexadecimal
+ $x = Math::BigFloat->new('0o377'); # from octal
$x = Math::BigFloat->new('0b101'); # from binary
$x = Math::BigFloat->from_hex('0xc.afep+3'); # from hex
$x = Math::BigFloat->from_hex('cafe'); # ditto
$x = Math::BigFloat->from_oct('1.3267p-4'); # from octal
+ $x = Math::BigFloat->from_oct('01.3267p-4'); # ditto
+ $x = Math::BigFloat->from_oct('0o1.3267p-4'); # ditto
$x = Math::BigFloat->from_oct('0377'); # ditto
$x = Math::BigFloat->from_bin('0b1.1001p-4'); # from binary
$x = Math::BigFloat->from_bin('0101'); # ditto
@@ -5187,6 +5917,8 @@ Math::BigFloat - Arbitrary size floating point math package
$y = $x->copy(); # make a copy (unlike $y = $x)
$y = $x->as_int(); # return as BigInt
+ $y = $x->as_float(); # return as a Math::BigFloat
+ $y = $x->as_rat(); # return as a Math::BigRat
# Boolean methods (these don't modify the invocand)
@@ -5297,6 +6029,9 @@ Math::BigFloat - Arbitrary size floating point math package
$x->nparts(); # mantissa and exponent (normalised)
$x->eparts(); # mantissa and exponent (engineering notation)
$x->dparts(); # integer and fraction part
+ $x->fparts(); # numerator and denominator
+ $x->numerator(); # numerator
+ $x->denominator(); # denominator
# Conversion methods (do not modify the invocand)
@@ -5305,6 +6040,8 @@ Math::BigFloat - Arbitrary size floating point math package
$x->bnstr(); # string in normalized notation
$x->bestr(); # string in engineering notation
$x->bdstr(); # string in decimal notation
+ $x->bfstr(); # string in fractional notation
+
$x->as_hex(); # as signed hexadecimal string with prefixed 0x
$x->as_bin(); # as signed binary string with prefixed 0b
$x->as_oct(); # as signed octal string with prefixed 0
@@ -5330,7 +6067,8 @@ exactly what you expect.
=head2 Input
Input values to these routines may be any scalar number or string that looks
-like a number and represents a floating point number.
+like a number. Anything that is accepted by Perl as a literal numeric constant
+should be accepted by this module.
=over
@@ -5340,48 +6078,77 @@ Leading and trailing whitespace is ignored.
=item *
-Leading and trailing zeros are ignored.
+Leading zeros are ignored, except for floating point numbers with a binary
+exponent, in which case the number is interpreted as an octal floating point
+number. For example, "01.4p+0" gives 1.5, "00.4p+0" gives 0.5, but "0.4p+0"
+gives a NaN. And while "0377" gives 255, "0377p0" gives 255.
=item *
-If the string has a "0x" prefix, it is interpreted as a hexadecimal number.
+If the string has a "0x" or "0X" prefix, it is interpreted as a hexadecimal
+number.
=item *
-If the string has a "0b" prefix, it is interpreted as a binary number.
+If the string has a "0o" or "0O" prefix, it is interpreted as an octal number. A
+floating point literal with a "0" prefix is also interpreted as an octal number.
=item *
-For hexadecimal and binary numbers, the exponent must be separated from the
-significand (mantissa) by the letter "p" or "P", not "e" or "E" as with decimal
-numbers.
+If the string has a "0b" or "0B" prefix, it is interpreted as a binary number.
=item *
-One underline is allowed between any two digits, including hexadecimal and
-binary digits.
+Underline characters are allowed in the same way as they are allowed in literal
+numerical constants.
=item *
If the string can not be interpreted, NaN is returned.
-=back
+=item *
+
+For hexadecimal, octal, and binary floating point numbers, the exponent must be
+separated from the significand (mantissa) by the letter "p" or "P", not "e" or
+"E" as with decimal numbers.
-Octal numbers are typically prefixed by "0", but since leading zeros are
-stripped, these methods can not automatically recognize octal numbers, so use
-the constructor from_oct() to interpret octal strings.
+=back
Some examples of valid string input
Input string Resulting value
+
123 123
1.23e2 123
12300e-2 123
- 0xcafe 51966
- 0b1101 13
+
67_538_754 67538754
-4_5_6.7_8_9e+0_1_0 -4567890000000
+
+ 0x13a 314
+ 0x13ap0 314
+ 0x1.3ap+8 314
+ 0x0.00013ap+24 314
+ 0x13a000p-12 314
+
+ 0o472 314
+ 0o1.164p+8 314
+ 0o0.0001164p+20 314
+ 0o1164000p-10 314
+
+ 0472 472 Note!
+ 01.164p+8 314
+ 00.0001164p+20 314
+ 01164000p-10 314
+
+ 0b100111010 314
+ 0b1.0011101p+8 314
+ 0b0.00010011101p+12 314
+ 0b100111010000p-3 314
+
0x1.921fb5p+1 3.14159262180328369140625e+0
+ 0o1.2677025p1 2.71828174591064453125
+ 01.2677025p1 2.71828174591064453125
0b1.1001p-4 9.765625e-2
=head2 Output
@@ -5680,10 +6447,11 @@ supplied to the operation after the I<scale>:
Math::BigFloat->round_mode('zero');
$y = $x->copy()->bdiv(3,6); # will also give 0.666667
-Note that C<< Math::BigFloat->accuracy() >> and C<< Math::BigFloat->precision() >>
-set the global variables, and thus B<any> newly created number will be subject
-to the global rounding B<immediately>. This means that in the examples above, the
-C<3> as argument to C<bdiv()> will also get an accuracy of B<5>.
+Note that C<< Math::BigFloat->accuracy() >> and
+C<< Math::BigFloat->precision() >> set the global variables, and thus B<any>
+newly created number will be subject to the global rounding B<immediately>. This
+means that in the examples above, the C<3> as argument to C<bdiv()> will also
+get an accuracy of B<5>.
It is less confusing to either calculate the result fully, and afterwards
round it explicitly, or use the additional parameters to the math
@@ -5752,76 +6520,103 @@ C<as_number()>:
$x = Math::BigFloat->new(2.5);
$y = $x->as_number('odd'); # $y = 3
-=head1 Autocreating constants
+=head1 NUMERIC LITERALS
-After C<use Math::BigFloat ':constant'> all the floating point constants
-in the given scope are converted to C<Math::BigFloat>. This conversion
-happens at compile time.
+After C<use Math::BigFloat ':constant'> all numeric literals in the given scope
+are converted to C<Math::BigFloat> objects. This conversion happens at compile
+time.
-In particular
+For example,
- perl -MMath::BigFloat=:constant -e 'print 2E-100,"\n"'
+ perl -MMath::BigFloat=:constant -le 'print 2e-150'
-prints the value of C<2E-100>. Note that without conversion of
-constants the expression 2E-100 will be calculated as normal floating point
-number.
+prints the exact value of C<2e-150>. Note that without conversion of constants
+the expression C<2e-150> is calculated using Perl scalars, which leads to an
+inaccuracte result.
-Please note that ':constant' does not affect integer constants, nor binary
-nor hexadecimal constants. Use L<bignum> or L<Math::BigInt> to get this to
-work.
+Note that strings are not affected, so that
-=head2 Math library
+ use Math::BigFloat qw/:constant/;
-Math with the numbers is done (by default) by a module called
-Math::BigInt::Calc. This is equivalent to saying:
+ $y = "1234567890123456789012345678901234567890"
+ + "123456789123456789";
- use Math::BigFloat lib => 'Calc';
+does not give you what you expect. You need an explicit Math::BigFloat->new()
+around at least one of the operands. You should also quote large constants to
+prevent loss of precision:
-You can change this by using:
+ use Math::BigFloat;
- use Math::BigFloat lib => 'GMP';
+ $x = Math::BigFloat->new("1234567889123456789123456789123456789");
-B<Note>: General purpose packages should not be explicit about the library
-to use; let the script author decide which is best.
+Without the quotes Perl converts the large number to a floating point constant
+at compile time, and then converts the result to a Math::BigFloat object at
+runtime, which results in an inaccurate result.
-Note: The keyword 'lib' will warn when the requested library could not be
-loaded. To suppress the warning use 'try' instead:
+=head2 Hexadecimal, octal, and binary floating point literals
- use Math::BigFloat try => 'GMP';
+Perl (and this module) accepts hexadecimal, octal, and binary floating point
+literals, but use them with care with Perl versions before v5.32.0, because some
+versions of Perl silently give the wrong result. Below are some examples of
+different ways to write the number decimal 314.
-If your script works with huge numbers and Calc is too slow for them,
-you can also for the loading of one of these libraries and if none
-of them can be used, the code will die:
+Hexadecimal floating point literals:
- use Math::BigFloat only => 'GMP,Pari';
+ 0x1.3ap+8 0X1.3AP+8
+ 0x1.3ap8 0X1.3AP8
+ 0x13a0p-4 0X13A0P-4
-The following would first try to find Math::BigInt::Foo, then
-Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc:
+Octal floating point literals (with "0" prefix):
- use Math::BigFloat lib => 'Foo,Math::BigInt::Bar';
+ 01.164p+8 01.164P+8
+ 01.164p8 01.164P8
+ 011640p-4 011640P-4
-See the respective low-level library documentation for further details.
+Octal floating point literals (with "0o" prefix) (requires v5.34.0):
-Please note that Math::BigFloat does B<not> use the denoted library itself,
-but it merely passes the lib argument to Math::BigInt. So, instead of the need
-to do:
+ 0o1.164p+8 0O1.164P+8
+ 0o1.164p8 0O1.164P8
+ 0o11640p-4 0O11640P-4
- use Math::BigInt lib => 'GMP';
- use Math::BigFloat;
+Binary floating point literals:
+
+ 0b1.0011101p+8 0B1.0011101P+8
+ 0b1.0011101p8 0B1.0011101P8
+ 0b10011101000p-2 0B10011101000P-2
-you can roll it all into one line:
+=head2 Math library
- use Math::BigFloat lib => 'GMP';
+Math with the numbers is done (by default) by a module called
+Math::BigInt::Calc. This is equivalent to saying:
-It is also possible to just require Math::BigFloat:
+ use Math::BigFloat lib => "Calc";
- require Math::BigFloat;
+You can change this by using:
+
+ use Math::BigFloat lib => "GMP";
+
+B<Note>: General purpose packages should not be explicit about the library to
+use; let the script author decide which is best.
+
+Note: The keyword 'lib' will warn when the requested library could not be
+loaded. To suppress the warning use 'try' instead:
+
+ use Math::BigFloat try => "GMP";
-This will load the necessary things (like BigInt) when they are needed, and
-automatically.
+If your script works with huge numbers and Calc is too slow for them, you can
+also for the loading of one of these libraries and if none of them can be used,
+the code will die:
-See L<Math::BigInt> for more details than you ever wanted to know about using
-a different low-level library.
+ use Math::BigFloat only => "GMP,Pari";
+
+The following would first try to find Math::BigInt::Foo, then Math::BigInt::Bar,
+and when this also fails, revert to Math::BigInt::Calc:
+
+ use Math::BigFloat lib => "Foo,Math::BigInt::Bar";
+
+See the respective low-level library documentation for further details.
+
+See L<Math::BigInt> for more details about using a different low-level library.
=head2 Using Math::BigInt::Lite
@@ -5835,7 +6630,8 @@ math library for directly storing the number parts.
=head1 EXPORTS
-C<Math::BigFloat> exports nothing by default, but can export the C<bpi()> method:
+C<Math::BigFloat> exports nothing by default, but can export the C<bpi()>
+method:
use Math::BigFloat qw/bpi/;
@@ -5910,7 +6706,8 @@ a certain number of digits:
print "$z\n";
print $z->precision(),"\n"; # 4
-Replacing L</precision()> with L</accuracy()> is probably not what you want, either:
+Replacing L</precision()> with L</accuracy()> is probably not what you want,
+either:
use Math::BigFloat;
@@ -5944,8 +6741,7 @@ influence any further operation.
Please report any bugs or feature requests to
C<bug-math-bigint at rt.cpan.org>, or through the web interface at
-L<https://rt.cpan.org/Ticket/Create.html?Queue=Math-BigInt>
-(requires login).
+L<https://rt.cpan.org/Ticket/Create.html?Queue=Math-BigInt> (requires login).
We will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.
@@ -5959,17 +6755,13 @@ You can also look for information at:
=over 4
-=item * RT: CPAN's request tracker
-
-L<https://rt.cpan.org/Public/Dist/Display.html?Name=Math-BigInt>
-
-=item * AnnoCPAN: Annotated CPAN documentation
+=item * GitHub
-L<http://annocpan.org/dist/Math-BigInt>
+L<https://github.com/pjacklam/p5-Math-BigInt>
-=item * CPAN Ratings
+=item * RT: CPAN's request tracker
-L<https://cpanratings.perl.org/dist/Math-BigInt>
+L<https://rt.cpan.org/Dist/Display.html?Name=Math-BigInt>
=item * MetaCPAN
@@ -5979,6 +6771,10 @@ L<https://metacpan.org/release/Math-BigInt>
L<http://matrix.cpantesters.org/?dist=Math-BigInt>
+=item * CPAN Ratings
+
+L<https://cpanratings.perl.org/dist/Math-BigInt>
+
=item * The Bignum mailing list
=over 4
@@ -6006,11 +6802,10 @@ the same terms as Perl itself.
=head1 SEE ALSO
-L<Math::BigFloat> and L<Math::BigInt> as well as the backends
+L<Math::BigInt> and L<Math::BigInt> as well as the backends
L<Math::BigInt::FastCalc>, L<Math::BigInt::GMP>, and L<Math::BigInt::Pari>.
-The pragmas L<bignum>, L<bigint> and L<bigrat> also might be of interest
-because they solve the autoupgrading/downgrading issue, at least partly.
+The pragmas L<bignum>, L<bigint> and L<bigrat>.
=head1 AUTHORS
@@ -6030,7 +6825,7 @@ Florian Ragwitz E<lt>flora@cpan.orgE<gt>, 2010.
=item *
-Peter John Acklam E<lt>pjacklam@online.noE<gt>, 2011-.
+Peter John Acklam E<lt>pjacklam@gmail.comE<gt>, 2011-.
=back
diff --git a/Master/tlpkg/tlperl/lib/Math/BigFloat/Trace.pm b/Master/tlpkg/tlperl/lib/Math/BigFloat/Trace.pm
index 2fc069370ad..14baa9f292b 100644
--- a/Master/tlpkg/tlperl/lib/Math/BigFloat/Trace.pm
+++ b/Master/tlpkg/tlperl/lib/Math/BigFloat/Trace.pm
@@ -1,58 +1,76 @@
-#!perl
+# -*- mode: perl; -*-
package Math::BigFloat::Trace;
-require 5.010;
use strict;
use warnings;
use Exporter;
use Math::BigFloat;
-our ($accuracy, $precision, $round_mode, $div_scale);
-
our @ISA = qw(Exporter Math::BigFloat);
-our $VERSION = '0.51';
+our $VERSION = '0.66';
use overload; # inherit overload from Math::BigFloat
# Globals
-$accuracy = $precision = undef;
-$round_mode = 'even';
-$div_scale = 40;
+our $accuracy = undef;
+our $precision = undef;
+our $round_mode = 'even';
+our $div_scale = 40;
sub new {
my $proto = shift;
my $class = ref($proto) || $proto;
my $value = shift;
+
my $a = $accuracy;
$a = $_[0] if defined $_[0];
+
my $p = $precision;
$p = $_[1] if defined $_[1];
- my $self = Math::BigFloat->new($value, $a, $p, $round_mode);
- # remember, downgrading may return a BigInt, so don't meddle with class
- # bless $self, $class;
+ my $self = $class -> SUPER::new($value, $a, $p, $round_mode);
+
+ printf "Math::BigFloat new '%s' => '%s' (%s)\n",
+ $value, $self, ref($self);
- print "MBF new '$value' => '$self' (", ref($self), ")";
return $self;
}
sub import {
- print "MBF import ", join(' ', @_);
- my $self = shift;
+ my $class = shift;
+
+ printf "%s -> import(%s)\n", $class, join(", ", @_);
+
+ # we catch the constants, the rest goes to parent
+
+ my $constant = grep { $_ eq ':constant' } @_;
+ my @a = grep { $_ ne ':constant' } @_;
+
+ if ($constant) {
+ overload::constant
+
+ integer => sub {
+ $class -> new(shift);
+ },
+
+ float => sub {
+ $class -> new(shift);
+ },
- # we catch the constants, the rest goes go BigFloat
- my @a = ();
- foreach (@_) {
- push @a, $_ if $_ ne ':constant';
+ binary => sub {
+ # E.g., a literal 0377 shall result in an object whose value
+ # is decimal 255, but new("0377") returns decimal 377.
+ return $class -> from_oct($_[0]) if $_[0] =~ /^0_*[0-7]/;
+ $class -> new(shift);
+ };
}
- overload::constant float => sub { $self->new(shift); };
- Math::BigFloat->import(@a); # need it for subclasses
-# $self->export_to_level(1,$self,@_); # need this ?
+ $class -> SUPER::import(@a); # need it for subclasses
+ #$self -> export_to_level(1, $class, @_); # need this ?
}
1;
diff --git a/Master/tlpkg/tlperl/lib/Math/BigInt.pm b/Master/tlpkg/tlperl/lib/Math/BigInt.pm
index 185f8028350..65e14467bb5 100644
--- a/Master/tlpkg/tlperl/lib/Math/BigInt.pm
+++ b/Master/tlpkg/tlperl/lib/Math/BigInt.pm
@@ -20,9 +20,11 @@ use 5.006001;
use strict;
use warnings;
-use Carp qw< carp croak >;
+use Carp qw< carp croak >;
+use Scalar::Util qw< blessed refaddr >;
-our $VERSION = '1.999818';
+our $VERSION = '1.999837';
+$VERSION =~ tr/_//d;
require Exporter;
our @ISA = qw(Exporter);
@@ -45,44 +47,43 @@ use overload
'+' => sub { $_[0] -> copy() -> badd($_[1]); },
- '-' => sub { my $c = $_[0] -> copy;
+ '-' => sub { my $c = $_[0] -> copy();
$_[2] ? $c -> bneg() -> badd($_[1])
: $c -> bsub($_[1]); },
'*' => sub { $_[0] -> copy() -> bmul($_[1]); },
'/' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bdiv($_[0])
- : $_[0] -> copy -> bdiv($_[1]); },
+ : $_[0] -> copy() -> bdiv($_[1]); },
'%' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bmod($_[0])
- : $_[0] -> copy -> bmod($_[1]); },
-
+ : $_[0] -> copy() -> bmod($_[1]); },
'**' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bpow($_[0])
- : $_[0] -> copy -> bpow($_[1]); },
+ : $_[0] -> copy() -> bpow($_[1]); },
'<<' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> blsft($_[0])
- : $_[0] -> copy -> blsft($_[1]); },
+ : $_[0] -> copy() -> blsft($_[1]); },
'>>' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> brsft($_[0])
- : $_[0] -> copy -> brsft($_[1]); },
+ : $_[0] -> copy() -> brsft($_[1]); },
# overload key: assign
- '+=' => sub { $_[0]->badd($_[1]); },
+ '+=' => sub { $_[0] -> badd($_[1]); },
- '-=' => sub { $_[0]->bsub($_[1]); },
+ '-=' => sub { $_[0] -> bsub($_[1]); },
- '*=' => sub { $_[0]->bmul($_[1]); },
+ '*=' => sub { $_[0] -> bmul($_[1]); },
- '/=' => sub { scalar $_[0]->bdiv($_[1]); },
+ '/=' => sub { scalar $_[0] -> bdiv($_[1]); },
- '%=' => sub { $_[0]->bmod($_[1]); },
+ '%=' => sub { $_[0] -> bmod($_[1]); },
- '**=' => sub { $_[0]->bpow($_[1]); },
+ '**=' => sub { $_[0] -> bpow($_[1]); },
- '<<=' => sub { $_[0]->blsft($_[1]); },
+ '<<=' => sub { $_[0] -> blsft($_[1]); },
- '>>=' => sub { $_[0]->brsft($_[1]); },
+ '>>=' => sub { $_[0] -> brsft($_[1]); },
# 'x=' => sub { },
@@ -116,13 +117,13 @@ use overload
# overload key: str_comparison
-# 'lt' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrlt($_[0])
+# 'lt' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrlt($_[0])
# : $_[0] -> bstrlt($_[1]); },
#
# 'le' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrle($_[0])
# : $_[0] -> bstrle($_[1]); },
#
-# 'gt' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrgt($_[0])
+# 'gt' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrgt($_[0])
# : $_[0] -> bstrgt($_[1]); },
#
# 'ge' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bstrge($_[0])
@@ -135,17 +136,17 @@ use overload
# overload key: binary
'&' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> band($_[0])
- : $_[0] -> copy -> band($_[1]); },
+ : $_[0] -> copy() -> band($_[1]); },
'&=' => sub { $_[0] -> band($_[1]); },
'|' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bior($_[0])
- : $_[0] -> copy -> bior($_[1]); },
+ : $_[0] -> copy() -> bior($_[1]); },
'|=' => sub { $_[0] -> bior($_[1]); },
'^' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> bxor($_[0])
- : $_[0] -> copy -> bxor($_[1]); },
+ : $_[0] -> copy() -> bxor($_[1]); },
'^=' => sub { $_[0] -> bxor($_[1]); },
@@ -182,9 +183,9 @@ use overload
'atan2' => sub { $_[2] ? ref($_[0]) -> new($_[1]) -> batan2($_[0])
: $_[0] -> copy() -> batan2($_[1]); },
- 'cos' => sub { $_[0] -> copy -> bcos(); },
+ 'cos' => sub { $_[0] -> copy() -> bcos(); },
- 'sin' => sub { $_[0] -> copy -> bsin(); },
+ 'sin' => sub { $_[0] -> copy() -> bsin(); },
'exp' => sub { $_[0] -> copy() -> bexp($_[1]); },
@@ -204,7 +205,7 @@ use overload
'0+' => sub { $_[0] -> numify(); },
- '=' => sub { $_[0]->copy(); },
+ '=' => sub { $_[0] -> copy(); },
;
@@ -214,7 +215,8 @@ use overload
# These vars are public, but their direct usage is not recommended, use the
# accessor methods instead
-our $round_mode = 'even'; # one of 'even', 'odd', '+inf', '-inf', 'zero', 'trunc' or 'common'
+# $round_mode is 'even', 'odd', '+inf', '-inf', 'zero', 'trunc', or 'common'.
+our $round_mode = 'even';
our $accuracy = undef;
our $precision = undef;
our $div_scale = 40;
@@ -228,11 +230,14 @@ our $_trap_inf = 0; # are infs ok? set w/ config()
my $nan = 'NaN'; # constants for easier life
-my $LIB = 'Math::BigInt::Calc'; # module to do the low level math
- # default is Calc.pm
-my $IMPORT = 0; # was import() called yet?
- # used to make require work
-my %CALLBACKS; # callbacks to notify on lib loads
+# Module to do the low level math.
+
+my $DEFAULT_LIB = 'Math::BigInt::Calc';
+my $LIB;
+
+# Has import() been called yet? Needed to make "require" work.
+
+my $IMPORT = 0;
##############################################################################
# the old code had $rnd_mode, so we need to support it, too
@@ -257,9 +262,9 @@ BEGIN {
tie $rnd_mode, 'Math::BigInt';
# set up some handy alias names
- *as_int = \&as_number;
*is_pos = \&is_positive;
*is_neg = \&is_negative;
+ *as_number = \&as_int;
}
###############################################################################
@@ -267,18 +272,24 @@ BEGIN {
###############################################################################
sub round_mode {
- no strict 'refs';
- # make Class->round_mode() work
my $self = shift;
my $class = ref($self) || $self || __PACKAGE__;
- if (defined $_[0]) {
+
+ if (@_) { # setter
my $m = shift;
- if ($m !~ /^(even|odd|\+inf|\-inf|zero|trunc|common)$/) {
- croak("Unknown round mode '$m'");
- }
- return ${"${class}::round_mode"} = $m;
+ croak("The value for 'round_mode' must be defined")
+ unless defined $m;
+ croak("Unknown round mode '$m'")
+ unless $m =~ /^(even|odd|\+inf|\-inf|zero|trunc|common)$/;
+ no strict 'refs';
+ ${"${class}::round_mode"} = $m;
+ }
+
+ else { # getter
+ no strict 'refs';
+ my $m = ${"${class}::round_mode"};
+ defined($m) ? $m : $round_mode;
}
- ${"${class}::round_mode"};
}
sub upgrade {
@@ -286,6 +297,7 @@ sub upgrade {
# make Class->upgrade() work
my $self = shift;
my $class = ref($self) || $self || __PACKAGE__;
+
# need to set new value?
if (@_ > 0) {
return ${"${class}::upgrade"} = $_[0];
@@ -306,17 +318,23 @@ sub downgrade {
}
sub div_scale {
- no strict 'refs';
- # make Class->div_scale() work
my $self = shift;
my $class = ref($self) || $self || __PACKAGE__;
- if (defined $_[0]) {
- if ($_[0] < 0) {
- croak('div_scale must be greater than zero');
- }
- ${"${class}::div_scale"} = $_[0];
+
+ if (@_) { # setter
+ my $ds = shift;
+ croak("The value for 'div_scale' must be defined") unless defined $ds;
+ croak("The value for 'div_scale' must be positive") unless $ds > 0;
+ $ds = $ds -> numify() if defined(blessed($ds));
+ no strict 'refs';
+ ${"${class}::div_scale"} = $ds;
+ }
+
+ else { # getter
+ no strict 'refs';
+ my $ds = ${"${class}::div_scale"};
+ defined($ds) ? $ds : $div_scale;
}
- ${"${class}::div_scale"};
}
sub accuracy {
@@ -344,11 +362,11 @@ sub accuracy {
if (ref($x)) {
# Set instance variable.
- $x->bround($a) if $a; # not for undef, 0
+ $x = $x->bround($a) if $a; # not for undef, 0
$x->{_a} = $a; # set/overwrite, even if not rounded
delete $x->{_p}; # clear P
# Why return class variable here? Fixme!
- $a = ${"${class}::accuracy"} unless defined $a; # proper return value
+ $a = ${"${class}::accuracy"} unless defined $a;
} else {
# Set class variable.
${"${class}::accuracy"} = $a; # set global A
@@ -359,7 +377,7 @@ sub accuracy {
}
# Return instance variable.
- return $x->{_a} if ref($x) && (defined $x->{_a} || defined $x->{_p});
+ return $x->{_a} if ref($x) && (defined($x->{_a}) || defined($x->{_p}));
# Return class variable.
return ${"${class}::accuracy"};
@@ -386,11 +404,11 @@ sub precision {
if (ref($x)) {
# Set instance variable.
- $x->bfround($p) if $p; # not for undef, 0
+ $x = $x->bfround($p) if $p; # not for undef, 0
$x->{_p} = $p; # set/overwrite, even if not rounded
delete $x->{_a}; # clear A
# Why return class variable here? Fixme!
- $p = ${"${class}::precision"} unless defined $p; # proper return value
+ $p = ${"${class}::precision"} unless defined $p;
} else {
# Set class variable.
${"${class}::precision"} = $p; # set global P
@@ -401,7 +419,7 @@ sub precision {
}
# Return instance variable.
- return $x->{_p} if ref($x) && (defined $x->{_a} || defined $x->{_p});
+ return $x->{_p} if ref($x) && (defined($x->{_a}) || defined($x->{_p}));
# Return class variable.
return ${"${class}::precision"};
@@ -530,183 +548,195 @@ sub new {
my $selfref = ref $self;
my $class = $selfref || $self;
- # The POD says:
- #
- # "Currently, Math::BigInt->new() defaults to 0, while Math::BigInt->new('')
- # results in 'NaN'. This might change in the future, so use always the
- # following explicit forms to get a zero or NaN:
- # $zero = Math::BigInt->bzero();
- # $nan = Math::BigInt->bnan();
- #
- # But although this use has been discouraged for more than 10 years, people
- # apparently still use it, so we still support it.
+ # Make "require" work.
- return $self->bzero() unless @_;
+ $class -> import() if $IMPORT == 0;
- my ($wanted, $a, $p, $r) = @_;
+ # Calling new() with no input arguments has been discouraged for more than
+ # 10 years, but people apparently still use it, so we still support it.
- # Always return a new object, so if called as an instance method, copy the
- # invocand, and if called as a class method, initialize a new object.
+ return $class -> bzero() unless @_;
- $self = $selfref ? $self -> copy()
- : bless {}, $class;
+ my ($wanted, @r) = @_;
- unless (defined $wanted) {
- #carp("Use of uninitialized value in new()");
- return $self->bzero($a, $p, $r);
+ if (!defined($wanted)) {
+ #carp("Use of uninitialized value in new()")
+ # if warnings::enabled("uninitialized");
+ return $class -> bzero(@r);
}
- if (ref($wanted) && $wanted->isa($class)) { # MBI or subclass
- # Using "$copy = $wanted -> copy()" here fails some tests. Fixme!
- my $copy = $class -> copy($wanted);
- if ($selfref) {
- %$self = %$copy;
- } else {
- $self = $copy;
- }
- return $self;
+ if (!ref($wanted) && $wanted eq "") {
+ #carp(q|Argument "" isn't numeric in new()|)
+ # if warnings::enabled("numeric");
+ #return $class -> bzero(@r);
+ return $class -> bnan(@r);
}
- $class->import() if $IMPORT == 0; # make require work
+ # Initialize a new object.
+
+ $self = bless {}, $class;
+
+ # Math::BigInt or subclass
+
+ if (defined(blessed($wanted)) && $wanted -> isa($class)) {
+
+ # Don't copy the accuracy and precision, because a new object should get
+ # them from the global configuration.
+
+ $self -> {sign} = $wanted -> {sign};
+ $self -> {value} = $LIB -> _copy($wanted -> {value});
+ $self = $self->round(@r)
+ unless @r >= 2 && !defined($r[0]) && !defined($r[1]);
+ return $self;
+ }
# Shortcut for non-zero scalar integers with no non-zero exponent.
- if (!ref($wanted) &&
- $wanted =~ / ^
- ([+-]?) # optional sign
- ([1-9][0-9]*) # non-zero significand
- (\.0*)? # ... with optional zero fraction
- ([Ee][+-]?0+)? # optional zero exponent
- \z
- /x)
+ if ($wanted =~
+ / ^
+ ( [+-]? ) # optional sign
+ ( [1-9] [0-9]* ) # non-zero significand
+ ( \.0* )? # ... with optional zero fraction
+ ( [Ee] [+-]? 0+ )? # optional zero exponent
+ \z
+ /x)
{
my $sgn = $1;
my $abs = $2;
$self->{sign} = $sgn || '+';
$self->{value} = $LIB->_new($abs);
-
- no strict 'refs';
- if (defined($a) || defined($p)
- || defined(${"${class}::precision"})
- || defined(${"${class}::accuracy"}))
- {
- $self->round($a, $p, $r)
- unless @_ >= 3 && !defined $a && !defined $p;
- }
-
+ $self = $self->round(@r);
return $self;
}
# Handle Infs.
- if ($wanted =~ /^\s*([+-]?)inf(inity)?\s*\z/i) {
+ if ($wanted =~ / ^
+ \s*
+ ( [+-]? )
+ inf (?: inity )?
+ \s*
+ \z
+ /ix)
+ {
my $sgn = $1 || '+';
- $self->{sign} = $sgn . 'inf'; # set a default sign for bstr()
- return $class->binf($sgn);
+ return $class -> binf($sgn, @r);
}
# Handle explicit NaNs (not the ones returned due to invalid input).
- if ($wanted =~ /^\s*([+-]?)nan\s*\z/i) {
- $self = $class -> bnan();
- $self->round($a, $p, $r) unless @_ >= 3 && !defined $a && !defined $p;
- return $self;
+ if ($wanted =~ / ^
+ \s*
+ ( [+-]? )
+ nan
+ \s*
+ \z
+ /ix)
+ {
+ return $class -> bnan(@r);
}
- # Handle hexadecimal numbers.
+ my @parts;
- if ($wanted =~ /^\s*[+-]?0[Xx]/) {
- $self = $class -> from_hex($wanted);
- $self->round($a, $p, $r) unless @_ >= 3 && !defined $a && !defined $p;
- return $self;
- }
+ if (
+ # Handle hexadecimal numbers. We auto-detect hexadecimal numbers if they
+ # have a "0x", "0X", "x", or "X" prefix, cf. CORE::oct().
- # Handle binary numbers.
+ $wanted =~ /^\s*[+-]?0?[Xx]/ and
+ @parts = $class -> _hex_str_to_flt_lib_parts($wanted)
- if ($wanted =~ /^\s*[+-]?0[Bb]/) {
- $self = $class -> from_bin($wanted);
- $self->round($a, $p, $r) unless @_ >= 3 && !defined $a && !defined $p;
- return $self;
- }
+ or
- # Split string into mantissa, exponent, integer, fraction, value, and sign.
- my ($mis, $miv, $mfv, $es, $ev) = _split($wanted);
- if (!ref $mis) {
- if ($_trap_nan) {
- croak("$wanted is not a number in $class");
- }
- $self->{value} = $LIB->_zero();
- $self->{sign} = $nan;
- return $self;
- }
+ # Handle octal numbers. We auto-detect octal numbers if they have a
+ # "0o", "0O", "o", "O" prefix, cf. CORE::oct().
- if (!ref $miv) {
- # _from_hex or _from_bin
- $self->{value} = $mis->{value};
- $self->{sign} = $mis->{sign};
- return $self; # throw away $mis
- }
+ $wanted =~ /^\s*[+-]?0?[Oo]/ and
+ @parts = $class -> _oct_str_to_flt_lib_parts($wanted)
- # Make integer from mantissa by adjusting exponent, then convert to a
- # Math::BigInt.
- $self->{sign} = $$mis; # store sign
- $self->{value} = $LIB->_zero(); # for all the NaN cases
- my $e = int("$$es$$ev"); # exponent (avoid recursion)
- if ($e > 0) {
- my $diff = $e - CORE::length($$mfv);
- if ($diff < 0) { # Not integer
- if ($_trap_nan) {
- croak("$wanted not an integer in $class");
- }
- #print "NOI 1\n";
- return $upgrade->new($wanted, $a, $p, $r) if defined $upgrade;
- $self->{sign} = $nan;
- } else { # diff >= 0
- # adjust fraction and add it to value
- #print "diff > 0 $$miv\n";
- $$miv = $$miv . ($$mfv . '0' x $diff);
+ or
+
+ # Handle binary numbers. We auto-detect binary numbers if they have a
+ # "0b", "0B", "b", or "B" prefix, cf. CORE::oct().
+
+ $wanted =~ /^\s*[+-]?0?[Bb]/ and
+ @parts = $class -> _bin_str_to_flt_lib_parts($wanted)
+
+ or
+
+ # At this point, what is left are decimal numbers that aren't handled
+ # above and octal floating point numbers that don't have any of the
+ # "0o", "0O", "o", or "O" prefixes. First see if it is a decimal number.
+
+ @parts = $class -> _dec_str_to_flt_lib_parts($wanted)
+ or
+
+ # See if it is an octal floating point number. The extra check is
+ # included because _oct_str_to_flt_lib_parts() accepts octal numbers
+ # that don't have a prefix (this is needed to make it work with, e.g.,
+ # from_oct() that don't require a prefix). However, Perl requires a
+ # prefix for octal floating point literals. For example, "1p+0" is not
+ # valid, but "01p+0" and "0__1p+0" are.
+
+ $wanted =~ /^\s*[+-]?0_*\d/ and
+ @parts = $class -> _oct_str_to_flt_lib_parts($wanted))
+ {
+ # The value is an integer iff the exponent is non-negative.
+
+ if ($parts[2] eq '+') {
+ $self -> {sign} = $parts[0];
+ $self -> {value} = $LIB -> _lsft($parts[1], $parts[3], 10);
+ $self = $self->round(@r)
+ unless @r >= 2 && !defined($r[0]) && !defined($r[1]);
+ return $self;
}
+
+ # The value is not an integer, so upgrade if upgrading is enabled.
+
+ return $upgrade -> new($wanted, @r) if defined $upgrade;
}
- else {
- if ($$mfv ne '') { # e <= 0
- # fraction and negative/zero E => NOI
- if ($_trap_nan) {
- croak("$wanted not an integer in $class");
- }
- #print "NOI 2 \$\$mfv '$$mfv'\n";
- return $upgrade->new($wanted, $a, $p, $r) if defined $upgrade;
- $self->{sign} = $nan;
- } elsif ($e < 0) {
- # xE-y, and empty mfv
- # Split the mantissa at the decimal point. E.g., if
- # $$miv = 12345 and $e = -2, then $frac = 45 and $$miv = 123.
-
- my $frac = substr($$miv, $e); # $frac is fraction part
- substr($$miv, $e) = ""; # $$miv is now integer part
-
- if ($frac =~ /[^0]/) {
- if ($_trap_nan) {
- croak("$wanted not an integer in $class");
- }
- #print "NOI 3\n";
- return $upgrade->new($wanted, $a, $p, $r) if defined $upgrade;
- $self->{sign} = $nan;
- }
+ # If we get here, the value is neither a valid decimal, binary, octal, or
+ # hexadecimal number. It is not explicit an Inf or a NaN either.
+
+ return $class -> bnan(@r);
+}
+
+# Create a Math::BigInt from a decimal string. This is an equivalent to
+# from_hex(), from_oct(), and from_bin(). It is like new() except that it does
+# not accept anything but a string representing a finite decimal number.
+
+sub from_dec {
+ my $self = shift;
+ my $selfref = ref $self;
+ my $class = $selfref || $self;
+
+ # Don't modify constant (read-only) objects.
+
+ return $self if $selfref && $self->modify('from_dec');
+
+ my $str = shift;
+ my @r = @_;
+
+ # If called as a class method, initialize a new object.
+
+ $self = $class -> bzero(@r) unless $selfref;
+
+ if (my @parts = $class -> _dec_str_to_flt_lib_parts($str)) {
+
+ # The value is an integer iff the exponent is non-negative.
+
+ if ($parts[2] eq '+') {
+ $self -> {sign} = $parts[0];
+ $self -> {value} = $LIB -> _lsft($parts[1], $parts[3], 10);
+ return $self -> round(@r);
}
- }
- unless ($self->{sign} eq $nan) {
- $self->{sign} = '+' if $$miv eq '0'; # normalize -0 => +0
- $self->{value} = $LIB->_new($$miv) if $self->{sign} =~ /^[+-]$/;
- }
+ # The value is not an integer, so upgrade if upgrading is enabled.
- # If any of the globals are set, use them to round, and store them inside
- # $self. Do not round for new($x, undef, undef) since that is used by MBF
- # to signal no rounding.
+ return $upgrade -> new($str, @r) if defined $upgrade;
+ }
- $self->round($a, $p, $r) unless @_ >= 3 && !defined $a && !defined $p;
- $self;
+ return $self -> bnan(@r);
}
# Create a Math::BigInt from a hexadecimal string.
@@ -718,51 +748,31 @@ sub from_hex {
# Don't modify constant (read-only) objects.
- return if $selfref && $self->modify('from_hex');
+ return $self if $selfref && $self->modify('from_hex');
my $str = shift;
+ my @r = @_;
# If called as a class method, initialize a new object.
- $self = $class -> bzero() unless $selfref;
+ $self = $class -> bzero(@r) unless $selfref;
- if ($str =~ s/
- ^
- \s*
- ( [+-]? )
- (0?x)?
- (
- [0-9a-fA-F]*
- ( _ [0-9a-fA-F]+ )*
- )
- \s*
- $
- //x)
- {
- # Get a "clean" version of the string, i.e., non-emtpy and with no
- # underscores or invalid characters.
-
- my $sign = $1;
- my $chrs = $3;
- $chrs =~ tr/_//d;
- $chrs = '0' unless CORE::length $chrs;
+ if (my @parts = $class -> _hex_str_to_flt_lib_parts($str)) {
- # The library method requires a prefix.
+ # The value is an integer iff the exponent is non-negative.
- $self->{value} = $LIB->_from_hex('0x' . $chrs);
-
- # Place the sign.
+ if ($parts[2] eq '+') {
+ $self -> {sign} = $parts[0];
+ $self -> {value} = $LIB -> _lsft($parts[1], $parts[3], 10);
+ return $self -> round(@r);
+ }
- $self->{sign} = $sign eq '-' && ! $LIB->_is_zero($self->{value})
- ? '-' : '+';
+ # The value is not an integer, so upgrade if upgrading is enabled.
- return $self;
+ return $upgrade -> new($str, @r) if defined $upgrade;
}
- # CORE::hex() parses as much as it can, and ignores any trailing garbage.
- # For backwards compatibility, we return NaN.
-
- return $self->bnan();
+ return $self -> bnan(@r);
}
# Create a Math::BigInt from an octal string.
@@ -774,50 +784,31 @@ sub from_oct {
# Don't modify constant (read-only) objects.
- return if $selfref && $self->modify('from_oct');
+ return $self if $selfref && $self->modify('from_oct');
my $str = shift;
+ my @r = @_;
# If called as a class method, initialize a new object.
- $self = $class -> bzero() unless $selfref;
-
- if ($str =~ s/
- ^
- \s*
- ( [+-]? )
- (
- [0-7]*
- ( _ [0-7]+ )*
- )
- \s*
- $
- //x)
- {
- # Get a "clean" version of the string, i.e., non-emtpy and with no
- # underscores or invalid characters.
-
- my $sign = $1;
- my $chrs = $2;
- $chrs =~ tr/_//d;
- $chrs = '0' unless CORE::length $chrs;
+ $self = $class -> bzero(@r) unless $selfref;
- # The library method requires a prefix.
+ if (my @parts = $class -> _oct_str_to_flt_lib_parts($str)) {
- $self->{value} = $LIB->_from_oct('0' . $chrs);
+ # The value is an integer iff the exponent is non-negative.
- # Place the sign.
+ if ($parts[2] eq '+') {
+ $self -> {sign} = $parts[0];
+ $self -> {value} = $LIB -> _lsft($parts[1], $parts[3], 10);
+ return $self -> round(@r);
+ }
- $self->{sign} = $sign eq '-' && ! $LIB->_is_zero($self->{value})
- ? '-' : '+';
+ # The value is not an integer, so upgrade if upgrading is enabled.
- return $self;
+ return $upgrade -> new($str, @r) if defined $upgrade;
}
- # CORE::oct() parses as much as it can, and ignores any trailing garbage.
- # For backwards compatibility, we return NaN.
-
- return $self->bnan();
+ return $self -> bnan(@r);
}
# Create a Math::BigInt from a binary string.
@@ -829,52 +820,31 @@ sub from_bin {
# Don't modify constant (read-only) objects.
- return if $selfref && $self->modify('from_bin');
+ return $self if $selfref && $self->modify('from_bin');
my $str = shift;
+ my @r = @_;
# If called as a class method, initialize a new object.
- $self = $class -> bzero() unless $selfref;
-
- if ($str =~ s/
- ^
- \s*
- ( [+-]? )
- (0?b)?
- (
- [01]*
- ( _ [01]+ )*
- )
- \s*
- $
- //x)
- {
- # Get a "clean" version of the string, i.e., non-emtpy and with no
- # underscores or invalid characters.
-
- my $sign = $1;
- my $chrs = $3;
- $chrs =~ tr/_//d;
- $chrs = '0' unless CORE::length $chrs;
+ $self = $class -> bzero(@r) unless $selfref;
- # The library method requires a prefix.
+ if (my @parts = $class -> _bin_str_to_flt_lib_parts($str)) {
- $self->{value} = $LIB->_from_bin('0b' . $chrs);
+ # The value is an integer iff the exponent is non-negative.
- # Place the sign.
+ if ($parts[2] eq '+') {
+ $self -> {sign} = $parts[0];
+ $self -> {value} = $LIB -> _lsft($parts[1], $parts[3], 10);
+ return $self -> round(@r);
+ }
- $self->{sign} = $sign eq '-' && ! $LIB->_is_zero($self->{value})
- ? '-' : '+';
+ # The value is not an integer, so upgrade if upgrading is enabled.
- return $self;
+ return $upgrade -> new($str, @r) if defined $upgrade;
}
- # For consistency with from_hex() and from_oct(), we return NaN when the
- # input is invalid.
-
- return $self->bnan();
-
+ return $self -> bnan(@r);
}
# Create a Math::BigInt from a byte string.
@@ -886,19 +856,20 @@ sub from_bytes {
# Don't modify constant (read-only) objects.
- return if $selfref && $self->modify('from_bytes');
+ return $self if $selfref && $self->modify('from_bytes');
croak("from_bytes() requires a newer version of the $LIB library.")
unless $LIB->can('_from_bytes');
my $str = shift;
+ my @r = @_;
# If called as a class method, initialize a new object.
- $self = $class -> bzero() unless $selfref;
+ $self = $class -> bzero(@r) unless $selfref;
$self -> {sign} = '+';
$self -> {value} = $LIB -> _from_bytes($str);
- return $self;
+ return $self -> round(@r);
}
sub from_base {
@@ -908,11 +879,10 @@ sub from_base {
# Don't modify constant (read-only) objects.
- return if $selfref && $self->modify('from_base');
+ return $self if $selfref && $self->modify('from_base');
- my $str = shift;
+ my ($str, $base, $cs, @r) = @_; # $cs is the collation sequence
- my $base = shift;
$base = $class->new($base) unless ref($base);
croak("the base must be a finite integer >= 2")
@@ -925,14 +895,15 @@ sub from_base {
# If no collating sequence is given, pass some of the conversions to
# methods optimized for those cases.
- if (! @_) {
- return $self -> from_bin($str) if $base == 2;
- return $self -> from_oct($str) if $base == 8;
- return $self -> from_hex($str) if $base == 16;
+ unless (defined $cs) {
+ return $self -> from_bin($str, @r) if $base == 2;
+ return $self -> from_oct($str, @r) if $base == 8;
+ return $self -> from_hex($str, @r) if $base == 16;
if ($base == 10) {
- my $tmp = $class -> new($str);
+ my $tmp = $class -> from_dec($str, @r);
$self -> {value} = $tmp -> {value};
$self -> {sign} = '+';
+ return $self -> bround(@r);
}
}
@@ -941,16 +912,61 @@ sub from_base {
$self -> {sign} = '+';
$self -> {value}
- = $LIB->_from_base($str, $base -> {value}, @_ ? shift() : ());
- return $self
+ = $LIB->_from_base($str, $base -> {value}, defined($cs) ? $cs : ());
+ return $self -> bround(@r);
+}
+
+sub from_base_num {
+ my $self = shift;
+ my $selfref = ref $self;
+ my $class = $selfref || $self;
+
+ # Don't modify constant (read-only) objects.
+
+ return $self if $selfref && $self->modify('from_base_num');
+
+ # Make sure we have an array of non-negative, finite, numerical objects.
+
+ my $nums = shift;
+ $nums = [ @$nums ]; # create new reference
+
+ for my $i (0 .. $#$nums) {
+ # Make sure we have an object.
+ $nums -> [$i] = $class -> new($nums -> [$i])
+ unless ref($nums -> [$i]) && $nums -> [$i] -> isa($class);
+ # Make sure we have a finite, non-negative integer.
+ croak "the elements must be finite non-negative integers"
+ if $nums -> [$i] -> is_neg() || ! $nums -> [$i] -> is_int();
+ }
+
+ my $base = shift;
+ $base = $class -> new($base) unless ref($base) && $base -> isa($class);
+
+ my @r = @_;
+
+ # If called as a class method, initialize a new object.
+
+ $self = $class -> bzero(@r) unless $selfref;
+
+ croak("from_base_num() requires a newer version of the $LIB library.")
+ unless $LIB->can('_from_base_num');
+
+ $self -> {sign} = '+';
+ $self -> {value} = $LIB -> _from_base_num([ map { $_ -> {value} } @$nums ],
+ $base -> {value});
+
+ return $self -> round(@r);
}
sub bzero {
# create/assign '+0'
- if (@_ == 0) {
- #carp("Using bzero() as a function is deprecated;",
- # " use bzero() as a method instead");
+ # Class::method(...) -> Class->method(...)
+ unless (@_ && (defined(blessed($_[0])) && $_[0] -> isa(__PACKAGE__) ||
+ $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i))
+ {
+ #carp "Using ", (caller(0))[3], "() as a function is deprecated;",
+ # " use is as a method instead";
unshift @_, __PACKAGE__;
}
@@ -962,7 +978,13 @@ sub bzero {
# Don't modify constant (read-only) objects.
- return if $selfref && $self->modify('bzero');
+ return $self if $selfref && $self->modify('bzero');
+
+ # Get the rounding parameters, if any.
+
+ my @r = @_;
+
+ # If called as a class method, initialize a new object.
$self = bless {}, $class unless $selfref;
@@ -970,19 +992,17 @@ sub bzero {
$self->{value} = $LIB->_zero();
# If rounding parameters are given as arguments, use them. If no rounding
- # parameters are given, and if called as a class method initialize the new
+ # parameters are given, and if called as a class method, initialize the new
# instance with the class variables.
- if (@_) {
+ if (@r) {
croak "can't specify both accuracy and precision"
- if @_ >= 2 && defined $_[0] && defined $_[1];
+ if @r >= 2 && defined($r[0]) && defined($r[1]);
$self->{_a} = $_[0];
$self->{_p} = $_[1];
- } else {
- unless($selfref) {
- $self->{_a} = $class -> accuracy();
- $self->{_p} = $class -> precision();
- }
+ } elsif (!$selfref) {
+ $self->{_a} = $class -> accuracy();
+ $self->{_p} = $class -> precision();
}
return $self;
@@ -991,9 +1011,12 @@ sub bzero {
sub bone {
# Create or assign '+1' (or -1 if given sign '-').
- if (@_ == 0 || (defined($_[0]) && ($_[0] eq '+' || $_[0] eq '-'))) {
- #carp("Using bone() as a function is deprecated;",
- # " use bone() as a method instead");
+ # Class::method(...) -> Class->method(...)
+ unless (@_ && (defined(blessed($_[0])) && $_[0] -> isa(__PACKAGE__) ||
+ $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i))
+ {
+ #carp "Using ", (caller(0))[3], "() as a function is deprecated;",
+ # " use is as a method instead";
unshift @_, __PACKAGE__;
}
@@ -1005,33 +1028,38 @@ sub bone {
# Don't modify constant (read-only) objects.
- return if $selfref && $self->modify('bone');
+ return $self if $selfref && $self->modify('bone');
+
+ my ($sign, @r) = @_;
- my $sign = '+'; # default
- if (@_) {
- $sign = shift;
- $sign = $sign =~ /^\s*-/ ? "-" : "+";
+ # Get the sign.
+
+ if (defined($_[0]) && $_[0] =~ /^\s*([+-])\s*$/) {
+ $sign = $1;
+ shift;
+ } else {
+ $sign = '+';
}
+ # If called as a class method, initialize a new object.
+
$self = bless {}, $class unless $selfref;
$self->{sign} = $sign;
$self->{value} = $LIB->_one();
# If rounding parameters are given as arguments, use them. If no rounding
- # parameters are given, and if called as a class method initialize the new
+ # parameters are given, and if called as a class method, initialize the new
# instance with the class variables.
- if (@_) {
+ if (@r) {
croak "can't specify both accuracy and precision"
- if @_ >= 2 && defined $_[0] && defined $_[1];
+ if @r >= 2 && defined($r[0]) && defined($r[1]);
$self->{_a} = $_[0];
$self->{_p} = $_[1];
- } else {
- unless($selfref) {
- $self->{_a} = $class -> accuracy();
- $self->{_p} = $class -> precision();
- }
+ } elsif (!$selfref) {
+ $self->{_a} = $class -> accuracy();
+ $self->{_p} = $class -> precision();
}
return $self;
@@ -1040,11 +1068,12 @@ sub bone {
sub binf {
# create/assign a '+inf' or '-inf'
- if (@_ == 0 || (defined($_[0]) && !ref($_[0]) &&
- $_[0] =~ /^\s*[+-](inf(inity)?)?\s*$/))
+ # Class::method(...) -> Class->method(...)
+ unless (@_ && (defined(blessed($_[0])) && $_[0] -> isa(__PACKAGE__) ||
+ $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i))
{
- #carp("Using binf() as a function is deprecated;",
- # " use binf() as a method instead");
+ #carp "Using ", (caller(0))[3], "() as a function is deprecated;",
+ # " use is as a method instead";
unshift @_, __PACKAGE__;
}
@@ -1063,10 +1092,21 @@ sub binf {
# Don't modify constant (read-only) objects.
- return if $selfref && $self->modify('binf');
+ return $self if $selfref && $self->modify('binf');
- my $sign = shift;
- $sign = defined $sign && $sign =~ /^\s*-/ ? "-" : "+";
+ # Get the sign.
+
+ my $sign = '+'; # default is to return positive infinity
+ if (defined($_[0]) && $_[0] =~ /^\s*([+-])(inf|$)/i) {
+ $sign = $1;
+ shift;
+ }
+
+ # Get the rounding parameters, if any.
+
+ my @r = @_;
+
+ # If called as a class method, initialize a new object.
$self = bless {}, $class unless $selfref;
@@ -1074,19 +1114,17 @@ sub binf {
$self -> {value} = $LIB -> _zero();
# If rounding parameters are given as arguments, use them. If no rounding
- # parameters are given, and if called as a class method initialize the new
+ # parameters are given, and if called as a class method, initialize the new
# instance with the class variables.
- if (@_) {
+ if (@r) {
croak "can't specify both accuracy and precision"
- if @_ >= 2 && defined $_[0] && defined $_[1];
+ if @r >= 2 && defined($r[0]) && defined($r[1]);
$self->{_a} = $_[0];
$self->{_p} = $_[1];
- } else {
- unless($selfref) {
- $self->{_a} = $class -> accuracy();
- $self->{_p} = $class -> precision();
- }
+ } elsif (!$selfref) {
+ $self->{_a} = $class -> accuracy();
+ $self->{_p} = $class -> precision();
}
return $self;
@@ -1095,9 +1133,12 @@ sub binf {
sub bnan {
# create/assign a 'NaN'
- if (@_ == 0) {
- #carp("Using bnan() as a function is deprecated;",
- # " use bnan() as a method instead");
+ # Class::method(...) -> Class->method(...)
+ unless (@_ && (defined(blessed($_[0])) && $_[0] -> isa(__PACKAGE__) ||
+ $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i))
+ {
+ #carp "Using ", (caller(0))[3], "() as a function is deprecated;",
+ # " use is as a method instead";
unshift @_, __PACKAGE__;
}
@@ -1116,57 +1157,173 @@ sub bnan {
# Don't modify constant (read-only) objects.
- return if $selfref && $self->modify('bnan');
+ return $self if $selfref && $self->modify('bnan');
+
+ # Get the rounding parameters, if any.
+
+ my @r = @_;
$self = bless {}, $class unless $selfref;
$self -> {sign} = $nan;
$self -> {value} = $LIB -> _zero();
+ # If rounding parameters are given as arguments, use them. If no rounding
+ # parameters are given, and if called as a class method, initialize the new
+ # instance with the class variables.
+
+ if (@r) {
+ croak "can't specify both accuracy and precision"
+ if @r >= 2 && defined($r[0]) && defined($r[1]);
+ $self->{_a} = $_[0];
+ $self->{_p} = $_[1];
+ } elsif (!$selfref) {
+ $self->{_a} = $class -> accuracy();
+ $self->{_p} = $class -> precision();
+ }
+
return $self;
}
sub bpi {
- # Calculate PI to N digits. Unless upgrading is in effect, returns the
- # result truncated to an integer, that is, always returns '3'.
- my ($self, $n) = @_;
- if (@_ == 1) {
- # called like Math::BigInt::bpi(10);
- $n = $self;
- $self = __PACKAGE__;
- }
- $self = ref($self) if ref($self);
- return $upgrade->new($n) if defined $upgrade;
+ # Class::method(...) -> Class->method(...)
+ unless (@_ && (defined(blessed($_[0])) && $_[0] -> isa(__PACKAGE__) ||
+ $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i))
+ {
+ #carp "Using ", (caller(0))[3], "() as a function is deprecated;",
+ # " use is as a method instead";
+ unshift @_, __PACKAGE__;
+ }
- # hard-wired to "3"
- $self->new(3);
-}
+ # Called as Argument list
+ # --------- -------------
+ # Math::BigFloat->bpi() ("Math::BigFloat")
+ # Math::BigFloat->bpi(10) ("Math::BigFloat", 10)
+ # $x->bpi() ($x)
+ # $x->bpi(10) ($x, 10)
+ # Math::BigFloat::bpi() ()
+ # Math::BigFloat::bpi(10) (10)
+ #
+ # In ambiguous cases, we favour the OO-style, so the following case
+ #
+ # $n = Math::BigFloat->new("10");
+ # $x = Math::BigFloat->bpi($n);
+ #
+ # which gives an argument list with the single element $n, is resolved as
+ #
+ # $n->bpi();
-sub copy {
my $self = shift;
my $selfref = ref $self;
my $class = $selfref || $self;
+ my @r = @_; # rounding paramters
+
+ if ($selfref) { # bpi() called as an instance method
+ return $self if $self -> modify('bpi');
+ } else { # bpi() called as a class method
+ $self = bless {}, $class; # initialize new instance
+ }
+
+ return $upgrade -> bpi(@r) if defined $upgrade;
+
+ # hard-wired to "3"
+ $self -> {sign} = '+';
+ $self -> {value} = $LIB -> _new("3");
+ $self = $self -> round(@r);
+ return $self;
+}
- # If called as a class method, the object to copy is the next argument.
+sub copy {
+ my ($x, $class);
+ if (ref($_[0])) { # $y = $x -> copy()
+ $x = shift;
+ $class = ref($x);
+ } else { # $y = Math::BigInt -> copy($y)
+ $class = shift;
+ $x = shift;
+ }
- $self = shift() unless $selfref;
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @_;
my $copy = bless {}, $class;
- $copy->{sign} = $self->{sign};
- $copy->{value} = $LIB->_copy($self->{value});
- $copy->{_a} = $self->{_a} if exists $self->{_a};
- $copy->{_p} = $self->{_p} if exists $self->{_p};
+ $copy->{sign} = $x->{sign};
+ $copy->{value} = $LIB->_copy($x->{value});
+ $copy->{_a} = $x->{_a} if exists $x->{_a};
+ $copy->{_p} = $x->{_p} if exists $x->{_p};
return $copy;
}
-sub as_number {
- # An object might be asked to return itself as bigint on certain overloaded
- # operations. This does exactly this, so that sub classes can simple inherit
- # it or override with their own integer conversion routine.
- $_[0]->copy();
+sub as_int {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # If called as an instance method, and the instance class is something we
+ # upgrade to, $x might not be a Math::BigInt, so don't just call copy().
+
+ return $x -> copy() if $x -> isa("Math::BigInt");
+
+ # disable upgrading and downgrading
+
+ my $upg = Math::BigInt -> upgrade();
+ my $dng = Math::BigInt -> downgrade();
+ Math::BigInt -> upgrade(undef);
+ Math::BigInt -> downgrade(undef);
+
+ my $y = Math::BigInt -> new($x);
+
+ # reset upgrading and downgrading
+
+ Math::BigInt -> upgrade($upg);
+ Math::BigInt -> downgrade($dng);
+
+ return $y;
+}
+
+sub as_float {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # disable upgrading and downgrading
+
+ require Math::BigFloat;
+ my $upg = Math::BigFloat -> upgrade();
+ my $dng = Math::BigFloat -> downgrade();
+ Math::BigFloat -> upgrade(undef);
+ Math::BigFloat -> downgrade(undef);
+
+ my $y = Math::BigFloat -> new($x);
+
+ # reset upgrading and downgrading
+
+ Math::BigFloat -> upgrade($upg);
+ Math::BigFloat -> downgrade($dng);
+
+ return $y;
+}
+
+sub as_rat {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # disable upgrading and downgrading
+
+ require Math::BigRat;
+ my $upg = Math::BigRat -> upgrade();
+ my $dng = Math::BigRat -> downgrade();
+ Math::BigRat -> upgrade(undef);
+ Math::BigRat -> downgrade(undef);
+
+ my $y = Math::BigRat -> new($x);
+
+ # reset upgrading and downgrading
+
+ Math::BigRat -> upgrade($upg);
+ Math::BigRat -> downgrade($dng);
+
+ return $y;
}
###############################################################################
@@ -1175,7 +1332,7 @@ sub as_number {
sub is_zero {
# return true if arg (BINT or num_str) is zero (array '+', '0')
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my (undef, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
return 0 if $x->{sign} !~ /^\+$/; # -, NaN & +-inf aren't
$LIB->_is_zero($x->{value});
@@ -1183,22 +1340,22 @@ sub is_zero {
sub is_one {
# return true if arg (BINT or num_str) is +1, or -1 if sign is given
- my ($class, $x, $sign) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+ my (undef, $x, $sign) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
- $sign = '+' if !defined $sign || $sign ne '-';
+ $sign = '+' if !defined($sign) || $sign ne '-';
return 0 if $x->{sign} ne $sign; # -1 != +1, NaN, +-inf aren't either
$LIB->_is_one($x->{value});
}
sub is_finite {
- my $x = shift;
+ my (undef, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
return $x->{sign} eq '+' || $x->{sign} eq '-';
}
sub is_inf {
# return true if arg (BINT or num_str) is +-inf
- my ($class, $x, $sign) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+ my (undef, $x, $sign) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
if (defined $sign) {
$sign = '[+-]inf' if $sign eq ''; # +- doesn't matter, only that's inf
@@ -1210,14 +1367,14 @@ sub is_inf {
sub is_nan {
# return true if arg (BINT or num_str) is NaN
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my (undef, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
$x->{sign} eq $nan ? 1 : 0;
}
sub is_positive {
# return true when arg (BINT or num_str) is positive (> 0)
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my (undef, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
return 1 if $x->{sign} eq '+inf'; # +inf is positive
@@ -1227,14 +1384,14 @@ sub is_positive {
sub is_negative {
# return true when arg (BINT or num_str) is negative (< 0)
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my (undef, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
$x->{sign} =~ /^-/ ? 1 : 0; # -inf is negative, but NaN is not
}
sub is_non_negative {
# Return true if argument is non-negative (>= 0).
- my ($class, $x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+ my (undef, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
return 1 if $x->{sign} =~ /^\+/;
return 1 if $x -> is_zero();
@@ -1243,7 +1400,7 @@ sub is_non_negative {
sub is_non_positive {
# Return true if argument is non-positive (<= 0).
- my ($class, $x) = ref($_[0]) ? (undef,$_[0]) : objectify(1,@_);
+ my (undef, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
return 1 if $x->{sign} =~ /^\-/;
return 1 if $x -> is_zero();
@@ -1252,7 +1409,7 @@ sub is_non_positive {
sub is_odd {
# return true when arg (BINT or num_str) is odd, false for even
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my (undef, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
return 0 if $x->{sign} !~ /^[+-]$/; # NaN & +-inf aren't
$LIB->_is_odd($x->{value});
@@ -1260,7 +1417,7 @@ sub is_odd {
sub is_even {
# return true when arg (BINT or num_str) is even, false for odd
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my (undef, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
return 0 if $x->{sign} !~ /^[+-]$/; # NaN & +-inf aren't
$LIB->_is_even($x->{value});
@@ -1268,8 +1425,7 @@ sub is_even {
sub is_int {
# return true when arg (BINT or num_str) is an integer
- # always true for Math::BigInt, but different for Math::BigFloat objects
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my (undef, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
$x->{sign} =~ /^[+-]$/ ? 1 : 0; # inf/-inf/NaN aren't
}
@@ -1283,22 +1439,25 @@ sub bcmp {
# (BINT or num_str, BINT or num_str) return cond_code
# set up parameters
- my ($class, $x, $y) = ref($_[0]) && ref($_[0]) eq ref($_[1])
- ? (ref($_[0]), @_)
- : objectify(2, @_);
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
- return $upgrade->bcmp($x, $y) if defined $upgrade &&
- ((!$x->isa($class)) || (!$y->isa($class)));
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ return $upgrade->bcmp($x, $y)
+ if defined($upgrade) && (!$x->isa($class) || !$y->isa($class));
if (($x->{sign} !~ /^[+-]$/) || ($y->{sign} !~ /^[+-]$/)) {
# handle +-inf and NaN
- return undef if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
- return 0 if $x->{sign} eq $y->{sign} && $x->{sign} =~ /^[+-]inf$/;
+ return if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+ return 0 if $x->{sign} eq $y->{sign} && $x->{sign} =~ /^[+-]inf$/;
return +1 if $x->{sign} eq '+inf';
return -1 if $x->{sign} eq '-inf';
return -1 if $y->{sign} eq '+inf';
return +1;
}
+
# check sign for speed first
return 1 if $x->{sign} eq '+' && $y->{sign} eq '-'; # does also 0 <=> -y
return -1 if $x->{sign} eq '-' && $y->{sign} eq '+'; # does also -x <=> 0
@@ -1323,16 +1482,18 @@ sub bacmp {
# (BINT, BINT) return cond_code
# set up parameters
- my ($class, $x, $y) = ref($_[0]) && ref($_[0]) eq ref($_[1])
- ? (ref($_[0]), @_)
- : objectify(2, @_);
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
- return $upgrade->bacmp($x, $y) if defined $upgrade &&
- ((!$x->isa($class)) || (!$y->isa($class)));
+ return $upgrade->bacmp($x, $y)
+ if defined($upgrade) && (!$x->isa($class) || !$y->isa($class));
if (($x->{sign} !~ /^[+-]$/) || ($y->{sign} !~ /^[+-]$/)) {
# handle +-inf and NaN
- return undef if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+ return if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
return 0 if $x->{sign} =~ /^[+-]inf$/ && $y->{sign} =~ /^[+-]inf$/;
return 1 if $x->{sign} =~ /^[+-]inf$/ && $y->{sign} !~ /^[+-]inf$/;
return -1;
@@ -1341,69 +1502,68 @@ sub bacmp {
}
sub beq {
- my $self = shift;
- my $selfref = ref $self;
+ my (undef, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (undef, @_)
+ : objectify(2, @_);
- croak 'beq() is an instance method, not a class method' unless $selfref;
- croak 'Wrong number of arguments for beq()' unless @_ == 1;
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
- my $cmp = $self -> bcmp(shift);
- return defined($cmp) && ! $cmp;
+ my $cmp = $x -> bcmp($y); # bcmp() upgrades if necessary
+ return defined($cmp) && !$cmp;
}
sub bne {
- my $self = shift;
- my $selfref = ref $self;
+ my (undef, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (undef, @_)
+ : objectify(2, @_);
- croak 'bne() is an instance method, not a class method' unless $selfref;
- croak 'Wrong number of arguments for bne()' unless @_ == 1;
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
- my $cmp = $self -> bcmp(shift);
- return defined($cmp) && ! $cmp ? '' : 1;
+ my $cmp = $x -> bcmp($y); # bcmp() upgrades if necessary
+ return defined($cmp) && !$cmp ? '' : 1;
}
sub blt {
- my $self = shift;
- my $selfref = ref $self;
+ my (undef, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (undef, @_)
+ : objectify(2, @_);
- croak 'blt() is an instance method, not a class method' unless $selfref;
- croak 'Wrong number of arguments for blt()' unless @_ == 1;
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
- my $cmp = $self -> bcmp(shift);
+ my $cmp = $x -> bcmp($y); # bcmp() upgrades if necessary
return defined($cmp) && $cmp < 0;
}
sub ble {
- my $self = shift;
- my $selfref = ref $self;
+ my (undef, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (undef, @_)
+ : objectify(2, @_);
- croak 'ble() is an instance method, not a class method' unless $selfref;
- croak 'Wrong number of arguments for ble()' unless @_ == 1;
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
- my $cmp = $self -> bcmp(shift);
+ my $cmp = $x -> bcmp($y); # bcmp() upgrades if necessary
return defined($cmp) && $cmp <= 0;
}
sub bgt {
- my $self = shift;
- my $selfref = ref $self;
+ my (undef, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (undef, @_)
+ : objectify(2, @_);
- croak 'bgt() is an instance method, not a class method' unless $selfref;
- croak 'Wrong number of arguments for bgt()' unless @_ == 1;
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
- my $cmp = $self -> bcmp(shift);
+ my $cmp = $x -> bcmp($y); # bcmp() upgrades if necessary
return defined($cmp) && $cmp > 0;
}
sub bge {
- my $self = shift;
- my $selfref = ref $self;
+ my (undef, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (undef, @_)
+ : objectify(2, @_);
- croak 'bge() is an instance method, not a class method'
- unless $selfref;
- croak 'Wrong number of arguments for bge()' unless @_ == 1;
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
- my $cmp = $self -> bcmp(shift);
+ my $cmp = $x -> bcmp($y); # bcmp() upgrades if necessary
return defined($cmp) && $cmp >= 0;
}
@@ -1414,84 +1574,104 @@ sub bge {
sub bneg {
# (BINT or num_str) return BINT
# negate number or make a negated number from string
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return $x if $x->modify('bneg');
- # for +0 do not negate (to have always normalized +0). Does nothing for 'NaN'
- $x->{sign} =~ tr/+-/-+/ unless ($x->{sign} eq '+' && $LIB->_is_zero($x->{value}));
- $x;
+ return $upgrade -> bneg($x, @r) if defined($upgrade) && !$x->isa($class);
+
+ # Don't negate +0 so we always have the normalized form +0. Does nothing for
+ # 'NaN'.
+ $x->{sign} =~ tr/+-/-+/
+ unless $x->{sign} eq '+' && $LIB->_is_zero($x->{value});
+
+ $x -> round(@r);
}
sub babs {
# (BINT or num_str) return BINT
# make number absolute, or return absolute BINT from string
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return $x if $x->modify('babs');
- # post-normalized abs for internal use (does nothing for NaN)
+
+ return $upgrade -> babs($x, @r) if defined($upgrade) && !$x->isa($class);
+
$x->{sign} =~ s/^-/+/;
- $x;
+
+ $x -> round(@r);
}
sub bsgn {
# Signum function.
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- my $self = shift;
+ return $x if $x->modify('bsgn');
+
+ return $upgrade -> bsgn($x, @r) if defined($upgrade) && !$x->isa($class);
- return $self if $self->modify('bsgn');
+ return $x -> bone("+", @r) if $x -> is_pos();
+ return $x -> bone("-", @r) if $x -> is_neg();
- return $self -> bone("+") if $self -> is_pos();
- return $self -> bone("-") if $self -> is_neg();
- return $self; # zero or NaN
+ $x -> round(@r);
}
sub bnorm {
# (numstr or BINT) return BINT
# Normalize number -- no-op here
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+
+ # This method is called from the rounding methods, so if this method
+ # supports rounding by calling the rounding methods, we get an infinite
+ # recursion.
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
$x;
}
sub binc {
# increment arg by one
- my ($class, $x, $a, $p, $r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
return $x if $x->modify('binc');
+ return $x->round(@r) if $x -> is_inf() || $x -> is_nan();
+
+ return $upgrade -> binc($x, @r) if defined($upgrade) && !$x -> isa($class);
+
if ($x->{sign} eq '+') {
$x->{value} = $LIB->_inc($x->{value});
- return $x->round($a, $p, $r);
} elsif ($x->{sign} eq '-') {
$x->{value} = $LIB->_dec($x->{value});
$x->{sign} = '+' if $LIB->_is_zero($x->{value}); # -1 +1 => -0 => +0
- return $x->round($a, $p, $r);
}
- # inf, nan handling etc
- $x->badd($class->bone(), $a, $p, $r); # badd does round
+
+ return $x->round(@r);
}
sub bdec {
# decrement arg by one
my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
return $x if $x->modify('bdec');
+ return $x->round(@r) if $x -> is_inf() || $x -> is_nan();
+
+ return $upgrade -> bdec($x, @r) if defined($upgrade) && !$x -> isa($class);;
+
if ($x->{sign} eq '-') {
- # x already < 0
$x->{value} = $LIB->_inc($x->{value});
- } else {
- return $x->badd($class->bone('-'), @r)
- unless $x->{sign} eq '+'; # inf or NaN
- # >= 0
- if ($LIB->_is_zero($x->{value})) {
- # == 0
+ } elsif ($x->{sign} eq '+') {
+ if ($LIB->_is_zero($x->{value})) { # +1 - 1 => +0
$x->{value} = $LIB->_one();
- $x->{sign} = '-'; # 0 => -1
+ $x->{sign} = '-';
} else {
- # > 0
$x->{value} = $LIB->_dec($x->{value});
}
}
- $x->round(@r);
+
+ return $x->round(@r);
}
#sub bstrcmp {
@@ -1589,51 +1769,37 @@ sub badd {
# return result as BINT
# set up parameters
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return $x if $x->modify('badd');
- return $upgrade->badd($upgrade->new($x), $upgrade->new($y), @r) if defined $upgrade &&
- ((!$x->isa($class)) || (!$y->isa($class)));
$r[3] = $y; # no push!
- # inf and NaN handling
+
+ return $upgrade->badd($x, $y, @r)
+ if defined($upgrade) && (!$x->isa($class) || !$y->isa($class));
+
+ # Inf and NaN handling
if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/) {
# NaN first
- return $x->bnan() if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
- # inf handling
+ return $x->bnan(@r) if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+ # Inf handling
if (($x->{sign} =~ /^[+-]inf$/) && ($y->{sign} =~ /^[+-]inf$/)) {
- # +inf++inf or -inf+-inf => same, rest is NaN
- return $x if $x->{sign} eq $y->{sign};
- return $x->bnan();
+ # +Inf + +Inf or -Inf + -Inf => same, rest is NaN
+ return $x->round(@r) if $x->{sign} eq $y->{sign};
+ return $x->bnan(@r);
}
- # +-inf + something => +inf
- # something +-inf => +-inf
- $x->{sign} = $y->{sign}, return $x if $y->{sign} =~ /^[+-]inf$/;
- return $x;
- }
-
- my ($sx, $sy) = ($x->{sign}, $y->{sign}); # get signs
-
- if ($sx eq $sy) {
- $x->{value} = $LIB->_add($x->{value}, $y->{value}); # same sign, abs add
- } else {
- my $a = $LIB->_acmp ($y->{value}, $x->{value}); # absolute compare
- if ($a > 0) {
- $x->{value} = $LIB->_sub($y->{value}, $x->{value}, 1); # abs sub w/ swap
- $x->{sign} = $sy;
- } elsif ($a == 0) {
- # speedup, if equal, set result to 0
- $x->{value} = $LIB->_zero();
- $x->{sign} = '+';
- } else # a < 0
- {
- $x->{value} = $LIB->_sub($x->{value}, $y->{value}); # abs sub
+ # ±Inf + something => ±Inf
+ # something + ±Inf => ±Inf
+ if ($y->{sign} =~ /^[+-]inf$/) {
+ $x->{sign} = $y->{sign};
}
+ return $x -> round(@r);
}
+
+ ($x->{value}, $x->{sign})
+ = $LIB -> _sadd($x->{value}, $x->{sign}, $y->{value}, $y->{sign});
$x->round(@r);
}
@@ -1642,17 +1808,14 @@ sub bsub {
# subtract second arg from first, modify first
# set up parameters
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
-
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return $x if $x -> modify('bsub');
- return $upgrade -> new($x) -> bsub($upgrade -> new($y), @r)
- if defined $upgrade && (!$x -> isa($class) || !$y -> isa($class));
+ return $upgrade -> bsub($x, $y, @r)
+ if defined($upgrade) && (!$x->isa($class) || !$y->isa($class));
return $x -> round(@r) if $y -> is_zero();
@@ -1665,9 +1828,10 @@ sub bsub {
if ($xsign ne $x -> {sign}) {
# special case of $x -> bsub($x) results in 0
return $x -> bzero(@r) if $xsign =~ /^[+-]$/;
- return $x -> bnan(); # NaN, -inf, +inf
+ return $x -> bnan(@r); # NaN, -inf, +inf
}
- $x -> badd($y, @r); # badd does not leave internal zeros
+
+ $x = $x -> badd($y, @r); # badd() does not leave internal zeros
$y -> {sign} =~ tr/+-/-+/; # refix $y (does nothing for NaN)
$x; # already rounded by badd() or no rounding
}
@@ -1677,29 +1841,27 @@ sub bmul {
# (BINT or num_str, BINT or num_str) return BINT
# set up parameters
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return $x if $x->modify('bmul');
- return $x->bnan() if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+ return $x->bnan(@r) if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
# inf handling
if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/)) {
- return $x->bnan() if $x->is_zero() || $y->is_zero();
+ return $x->bnan(@r) if $x->is_zero() || $y->is_zero();
# result will always be +-inf:
# +inf * +/+inf => +inf, -inf * -/-inf => +inf
# +inf * -/-inf => -inf, -inf * +/+inf => -inf
- return $x->binf() if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
- return $x->binf() if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
- return $x->binf('-');
+ return $x->binf(@r) if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
+ return $x->binf(@r) if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
+ return $x->binf('-', @r);
}
- return $upgrade->bmul($x, $upgrade->new($y), @r)
- if defined $upgrade && !$y->isa($class);
+ return $upgrade->bmul($x, $y, @r)
+ if defined($upgrade) && (!$x->isa($class) || !$y->isa($class));
$r[3] = $y; # no push here
@@ -1716,60 +1878,143 @@ sub bmuladd {
# (BINT or num_str, BINT or num_str, BINT or num_str) return BINT
# set up parameters
- my ($class, $x, $y, $z, @r) = objectify(3, @_);
+ my ($class, $x, $y, $z, @r)
+ = ref($_[0]) && ref($_[0]) eq ref($_[1]) && ref($_[1]) eq ref($_[2])
+ ? (ref($_[0]), @_)
+ : objectify(3, @_);
return $x if $x->modify('bmuladd');
- return $x->bnan() if (($x->{sign} eq $nan) ||
- ($y->{sign} eq $nan) ||
- ($z->{sign} eq $nan));
+ # x, y, and z are finite numbers
- # inf handling of x and y
- if (($x->{sign} =~ /^[+-]inf$/) || ($y->{sign} =~ /^[+-]inf$/)) {
- return $x->bnan() if $x->is_zero() || $y->is_zero();
- # result will always be +-inf:
- # +inf * +/+inf => +inf, -inf * -/-inf => +inf
- # +inf * -/-inf => -inf, -inf * +/+inf => -inf
- return $x->binf() if ($x->{sign} =~ /^\+/ && $y->{sign} =~ /^\+/);
- return $x->binf() if ($x->{sign} =~ /^-/ && $y->{sign} =~ /^-/);
- return $x->binf('-');
- }
- # inf handling x*y and z
- if (($z->{sign} =~ /^[+-]inf$/)) {
- # something +-inf => +-inf
- $x->{sign} = $z->{sign}, return $x if $z->{sign} =~ /^[+-]inf$/;
+ if ($x->{sign} =~ /^[+-]$/ &&
+ $y->{sign} =~ /^[+-]$/ &&
+ $z->{sign} =~ /^[+-]$/)
+ {
+ return $upgrade->bmuladd($x, $y, $z, @r)
+ if defined($upgrade)
+ && (!$x->isa($class) || !$y->isa($class) || !$z->isa($class));
+
+ # TODO: what if $y and $z have A or P set?
+ $r[3] = $z; # no push here
+
+ my $zs = $z->{sign};
+ my $zv = $z->{value};
+ $zv = $LIB -> _copy($zv) if refaddr($x) eq refaddr($z);
+
+ $x->{sign} = $x->{sign} eq $y->{sign} ? '+' : '-'; # +1 * +1 or -1 * -1 => +
+ $x->{value} = $LIB->_mul($x->{value}, $y->{value}); # do actual math
+ $x->{sign} = '+' if $LIB->_is_zero($x->{value}); # no -0
+
+ ($x->{value}, $x->{sign})
+ = $LIB -> _sadd($x->{value}, $x->{sign}, $zv, $zs);
+ return $x->round(@r);
}
- return $upgrade->bmuladd($x, $upgrade->new($y), $upgrade->new($z), @r)
- if defined $upgrade && (!$y->isa($class) || !$z->isa($class) || !$x->isa($class));
+ # At least one of x, y, and z is a NaN
- # TODO: what if $y and $z have A or P set?
- $r[3] = $z; # no push here
+ return $x->bnan(@r) if (($x->{sign} eq $nan) ||
+ ($y->{sign} eq $nan) ||
+ ($z->{sign} eq $nan));
- $x->{sign} = $x->{sign} eq $y->{sign} ? '+' : '-'; # +1 * +1 or -1 * -1 => +
+ # At least one of x, y, and z is an Inf
- $x->{value} = $LIB->_mul($x->{value}, $y->{value}); # do actual math
- $x->{sign} = '+' if $LIB->_is_zero($x->{value}); # no -0
+ if ($x->{sign} eq "-inf") {
- my ($sx, $sz) = ( $x->{sign}, $z->{sign} ); # get signs
+ if ($y -> is_neg()) { # x = -inf, y < 0
+ if ($z->{sign} eq "-inf") {
+ return $x->bnan(@r);
+ } else {
+ return $x->binf("+", @r);
+ }
+ } elsif ($y -> is_zero()) { # x = -inf, y = 0
+ return $x->bnan(@r);
+ } else { # x = -inf, y > 0
+ if ($z->{sign} eq "+inf") {
+ return $x->bnan(@r);
+ } else {
+ return $x->binf("-", @r);
+ }
+ }
- if ($sx eq $sz) {
- $x->{value} = $LIB->_add($x->{value}, $z->{value}); # same sign, abs add
- } else {
- my $a = $LIB->_acmp ($z->{value}, $x->{value}); # absolute compare
- if ($a > 0) {
- $x->{value} = $LIB->_sub($z->{value}, $x->{value}, 1); # abs sub w/ swap
- $x->{sign} = $sz;
- } elsif ($a == 0) {
- # speedup, if equal, set result to 0
- $x->{value} = $LIB->_zero();
- $x->{sign} = '+';
- } else # a < 0
- {
- $x->{value} = $LIB->_sub($x->{value}, $z->{value}); # abs sub
+ } elsif ($x->{sign} eq "+inf") {
+
+ if ($y -> is_neg()) { # x = +inf, y < 0
+ if ($z->{sign} eq "+inf") {
+ return $x->bnan(@r);
+ } else {
+ return $x->binf("-", @r);
+ }
+ } elsif ($y -> is_zero()) { # x = +inf, y = 0
+ return $x->bnan(@r);
+ } else { # x = +inf, y > 0
+ if ($z->{sign} eq "-inf") {
+ return $x->bnan(@r);
+ } else {
+ return $x->binf("+", @r);
+ }
+ }
+
+ } elsif ($x -> is_neg()) {
+
+ if ($y->{sign} eq "-inf") { # -inf < x < 0, y = -inf
+ if ($z->{sign} eq "-inf") {
+ return $x->bnan(@r);
+ } else {
+ return $x->binf("+", @r);
+ }
+ } elsif ($y->{sign} eq "+inf") { # -inf < x < 0, y = +inf
+ if ($z->{sign} eq "+inf") {
+ return $x->bnan(@r);
+ } else {
+ return $x->binf("-", @r);
+ }
+ } else { # -inf < x < 0, -inf < y < +inf
+ if ($z->{sign} eq "-inf") {
+ return $x->binf("-", @r);
+ } elsif ($z->{sign} eq "+inf") {
+ return $x->binf("+", @r);
+ }
+ }
+
+ } elsif ($x -> is_zero()) {
+
+ if ($y->{sign} eq "-inf") { # x = 0, y = -inf
+ return $x->bnan(@r);
+ } elsif ($y->{sign} eq "+inf") { # x = 0, y = +inf
+ return $x->bnan(@r);
+ } else { # x = 0, -inf < y < +inf
+ if ($z->{sign} eq "-inf") {
+ return $x->binf("-", @r);
+ } elsif ($z->{sign} eq "+inf") {
+ return $x->binf("+", @r);
+ }
+ }
+
+ } elsif ($x -> is_pos()) {
+
+ if ($y->{sign} eq "-inf") { # 0 < x < +inf, y = -inf
+ if ($z->{sign} eq "+inf") {
+ return $x->bnan(@r);
+ } else {
+ return $x->binf("-", @r);
+ }
+ } elsif ($y->{sign} eq "+inf") { # 0 < x < +inf, y = +inf
+ if ($z->{sign} eq "-inf") {
+ return $x->bnan(@r);
+ } else {
+ return $x->binf("+", @r);
+ }
+ } else { # 0 < x < +inf, -inf < y < +inf
+ if ($z->{sign} eq "-inf") {
+ return $x->binf("-", @r);
+ } elsif ($z->{sign} eq "+inf") {
+ return $x->binf("+", @r);
+ }
}
}
- $x->round(@r);
+
+ die;
}
sub bdiv {
@@ -1778,12 +2023,9 @@ sub bdiv {
# sign as the divisor.
# Set up parameters.
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
-
- # objectify() is costly, so avoid it if we can.
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return $x if $x -> modify('bdiv');
@@ -1793,7 +2035,8 @@ sub bdiv {
# modulo/remainder.
if ($x -> is_nan() || $y -> is_nan()) {
- return $wantarray ? ($x -> bnan(), $class -> bnan()) : $x -> bnan();
+ return $wantarray ? ($x -> bnan(@r), $class -> bnan(@r))
+ : $x -> bnan(@r);
}
# Divide by zero and modulo zero.
@@ -1816,12 +2059,12 @@ sub bdiv {
if ($y -> is_zero()) {
my $rem;
if ($wantarray) {
- $rem = $x -> copy();
+ $rem = $x -> copy() -> round(@r);
}
if ($x -> is_zero()) {
- $x -> bnan();
+ $x = $x -> bnan(@r);
} else {
- $x -> binf($x -> {sign});
+ $x = $x -> binf($x -> {sign}, @r);
}
return $wantarray ? ($x, $rem) : $x;
}
@@ -1842,12 +2085,12 @@ sub bdiv {
if ($x -> is_inf()) {
my $rem;
- $rem = $class -> bnan() if $wantarray;
+ $rem = $class -> bnan(@r) if $wantarray;
if ($y -> is_inf()) {
- $x -> bnan();
+ $x = $x -> bnan(@r);
} else {
my $sign = $x -> bcmp(0) == $y -> bcmp(0) ? '+' : '-';
- $x -> binf($sign);
+ $x = $x -> binf($sign, @r);
}
return $wantarray ? ($x, $rem) : $x;
}
@@ -1868,11 +2111,11 @@ sub bdiv {
if ($y -> is_inf()) {
my $rem;
if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
- $rem = $x -> copy() if $wantarray;
- $x -> bzero();
+ $rem = $x -> copy() -> round(@r) if $wantarray;
+ $x = $x -> bzero(@r);
} else {
- $rem = $class -> binf($y -> {sign}) if $wantarray;
- $x -> bone('-');
+ $rem = $class -> binf($y -> {sign}, @r) if $wantarray;
+ $x = $x -> bone('-', @r);
}
return $wantarray ? ($x, $rem) : $x;
}
@@ -1880,8 +2123,10 @@ sub bdiv {
# At this point, both the numerator and denominator are finite numbers, and
# the denominator (divisor) is non-zero.
- return $upgrade -> bdiv($upgrade -> new($x), $upgrade -> new($y), @r)
- if defined $upgrade;
+ # Division might return a non-integer result, so upgrade unconditionally, if
+ # upgrading is enabled.
+
+ return $upgrade -> bdiv($x, $y, @r) if defined $upgrade;
$r[3] = $y; # no push!
@@ -1900,7 +2145,7 @@ sub bdiv {
$y -> {sign} = $ysign; # Re-insert the original sign.
if ($same) {
- $x -> bone();
+ $x = $x -> bone();
} else {
($x -> {value}, $rem -> {value}) =
$LIB -> _div($x -> {value}, $y -> {value});
@@ -1916,16 +2161,16 @@ sub bdiv {
$x -> {sign} = '+';
} else {
if ($xsign eq '+') {
- $x -> badd(1);
+ $x = $x -> badd(1);
} else {
- $x -> bsub(1);
+ $x = $x -> bsub(1);
}
$x -> {sign} = '-';
}
}
}
- $x -> round(@r);
+ $x = $x -> round(@r);
if ($wantarray) {
unless ($LIB -> _is_zero($rem -> {value})) {
@@ -1936,7 +2181,7 @@ sub bdiv {
}
$rem -> {_a} = $x -> {_a};
$rem -> {_p} = $x -> {_p};
- $rem -> round(@r);
+ $rem = $rem -> round(@r);
return ($x, $rem);
}
@@ -1951,12 +2196,9 @@ sub btdiv {
# and $q * $y + $r = $x.
# Set up parameters
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
-
- # objectify is costly, so avoid it if we can.
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return $x if $x -> modify('btdiv');
@@ -1966,7 +2208,8 @@ sub btdiv {
# modulo/remainder.
if ($x -> is_nan() || $y -> is_nan()) {
- return $wantarray ? ($x -> bnan(), $class -> bnan()) : $x -> bnan();
+ return $wantarray ? ($x -> bnan(@r), $class -> bnan(@r))
+ : $x -> bnan(@r);
}
# Divide by zero and modulo zero.
@@ -1989,12 +2232,12 @@ sub btdiv {
if ($y -> is_zero()) {
my $rem;
if ($wantarray) {
- $rem = $x -> copy();
+ $rem = $x -> copy(@r);
}
if ($x -> is_zero()) {
- $x -> bnan();
+ $x = $x -> bnan(@r);
} else {
- $x -> binf($x -> {sign});
+ $x = $x -> binf($x -> {sign}, @r);
}
return $wantarray ? ($x, $rem) : $x;
}
@@ -2015,12 +2258,12 @@ sub btdiv {
if ($x -> is_inf()) {
my $rem;
- $rem = $class -> bnan() if $wantarray;
+ $rem = $class -> bnan(@r) if $wantarray;
if ($y -> is_inf()) {
- $x -> bnan();
+ $x = $x -> bnan(@r);
} else {
my $sign = $x -> bcmp(0) == $y -> bcmp(0) ? '+' : '-';
- $x -> binf($sign);
+ $x = $x -> binf($sign,@r );
}
return $wantarray ? ($x, $rem) : $x;
}
@@ -2040,13 +2283,15 @@ sub btdiv {
if ($y -> is_inf()) {
my $rem;
- $rem = $x -> copy() if $wantarray;
- $x -> bzero();
+ $rem = $x -> copy() -> round(@r) if $wantarray;
+ $x = $x -> bzero(@r);
return $wantarray ? ($x, $rem) : $x;
}
- return $upgrade -> btdiv($upgrade -> new($x), $upgrade -> new($y), @r)
- if defined $upgrade;
+ # Division might return a non-integer result, so upgrade unconditionally, if
+ # upgrading is enabled.
+
+ return $upgrade -> btdiv($x, $y, @r) if defined $upgrade;
$r[3] = $y; # no push!
@@ -2065,14 +2310,14 @@ sub btdiv {
$y -> {sign} = $ysign; # Re-insert the original sign.
if ($same) {
- $x -> bone();
+ $x = $x -> bone(@r);
} else {
($x -> {value}, $rem -> {value}) =
$LIB -> _div($x -> {value}, $y -> {value});
$x -> {sign} = $xsign eq $ysign ? '+' : '-';
$x -> {sign} = '+' if $LIB -> _is_zero($x -> {value});
- $x -> round(@r);
+ $x = $x -> round(@r);
}
if (wantarray) {
@@ -2080,7 +2325,7 @@ sub btdiv {
$rem -> {sign} = '+' if $LIB -> _is_zero($rem -> {value});
$rem -> {_a} = $x -> {_a};
$rem -> {_p} = $x -> {_p};
- $rem -> round(@r);
+ $rem = $rem -> round(@r);
return ($x, $rem);
}
@@ -2091,44 +2336,45 @@ sub bmod {
# This is the remainder after floored division.
# Set up parameters.
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
-
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return $x if $x -> modify('bmod');
+
$r[3] = $y; # no push!
# At least one argument is NaN.
if ($x -> is_nan() || $y -> is_nan()) {
- return $x -> bnan();
+ return $x -> bnan(@r);
}
# Modulo zero. See documentation for bdiv().
if ($y -> is_zero()) {
- return $x;
+ return $x -> round(@r);
}
# Numerator (dividend) is +/-inf.
if ($x -> is_inf()) {
- return $x -> bnan();
+ return $x -> bnan(@r);
}
# Denominator (divisor) is +/-inf.
if ($y -> is_inf()) {
if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
- return $x;
+ return $x -> round(@r);
} else {
- return $x -> binf($y -> sign());
+ return $x -> binf($y -> sign(), @r);
}
}
+ return $upgrade -> bmod($x, $y, @r)
+ if defined($upgrade) && (!$x -> isa($class) || !$y -> isa($class));
+
# Calc new sign and in case $y == +/- 1, return $x.
$x -> {value} = $LIB -> _mod($x -> {value}, $y -> {value});
@@ -2147,41 +2393,38 @@ sub btmod {
# Remainder after truncated division.
# set up parameters
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
-
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return $x if $x -> modify('btmod');
# At least one argument is NaN.
if ($x -> is_nan() || $y -> is_nan()) {
- return $x -> bnan();
+ return $x -> bnan(@r);
}
# Modulo zero. See documentation for btdiv().
if ($y -> is_zero()) {
- return $x;
+ return $x -> round(@r);
}
# Numerator (dividend) is +/-inf.
if ($x -> is_inf()) {
- return $x -> bnan();
+ return $x -> bnan(@r);
}
# Denominator (divisor) is +/-inf.
if ($y -> is_inf()) {
- return $x;
+ return $x -> round(@r);
}
- return $upgrade -> btmod($upgrade -> new($x), $upgrade -> new($y), @r)
- if defined $upgrade;
+ return $upgrade -> btmod($x, $y, @r)
+ if defined($upgrade) && (!$x -> isa($class) || !$y -> isa($class));
$r[3] = $y; # no push!
@@ -2192,7 +2435,6 @@ sub btmod {
$x -> {sign} = $xsign;
$x -> {sign} = '+' if $LIB -> _is_zero($x -> {value});
$x -> round(@r);
- return $x;
}
sub bmodinv {
@@ -2208,28 +2450,29 @@ sub bmodinv {
# If no modular multiplicative inverse exists, NaN is returned.
# set up parameters
- my ($class, $x, $y, @r) = (undef, @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
return $x if $x->modify('bmodinv');
# Return NaN if one or both arguments is +inf, -inf, or nan.
- return $x->bnan() if ($y->{sign} !~ /^[+-]$/ ||
- $x->{sign} !~ /^[+-]$/);
+ return $x->bnan(@r) if ($y->{sign} !~ /^[+-]$/ ||
+ $x->{sign} !~ /^[+-]$/);
# Return NaN if $y is zero; 1 % 0 makes no sense.
- return $x->bnan() if $y->is_zero();
+ return $x->bnan(@r) if $y->is_zero();
# Return 0 in the trivial case. $x % 1 or $x % -1 is zero for all finite
# integers $x.
- return $x->bzero() if ($y->is_one() ||
- $y->is_one('-'));
+ return $x->bzero(@r) if ($y->is_one('+') ||
+ $y->is_one('-'));
+
+ return $upgrade -> bmodinv($x, $y, @r)
+ if defined($upgrade) && (!$x -> isa($class) || !$y -> isa($class));
# Return NaN if $x = 0, or $x modulo $y is zero. The only valid case when
# $x = 0 is when $y = 1 or $y = -1, but that was covered above.
@@ -2240,14 +2483,14 @@ sub bmodinv {
# $y = 7, the values fed to _modinv() are $x = 2 (= -5 % 7) and $y = 7.
# The value if $x is affected only when $x and $y have opposite signs.
- $x->bmod($y);
- return $x->bnan() if $x->is_zero();
+ $x = $x->bmod($y);
+ return $x->bnan(@r) if $x->is_zero();
# Compute the modular multiplicative inverse of the absolute values. We'll
# correct for the signs of $x and $y later. Return NaN if no GCD is found.
($x->{value}, $x->{sign}) = $LIB->_modinv($x->{value}, $y->{value});
- return $x->bnan() if !defined $x->{value};
+ return $x->bnan(@r) if !defined($x->{value});
# Library inconsistency workaround: _modinv() in Math::BigInt::GMP versions
# <= 1.32 return undef rather than a "+" for the sign.
@@ -2266,20 +2509,23 @@ sub bmodinv {
# inverse modulo. The net effect is that we must swap the sign of the
# result if $y is negative.
- $x -> bneg() if $y->{sign} eq '-';
+ $x = $x -> bneg() if $y->{sign} eq '-';
# Compute $x modulo $y again after correcting the sign.
- $x -> bmod($y) if $x->{sign} ne $y->{sign};
+ $x = $x -> bmod($y) if $x->{sign} ne $y->{sign};
- return $x;
+ $x -> round(@r);
}
sub bmodpow {
- # Modular exponentiation. Raises a very large number to a very large exponent
- # in a given very large modulus quickly, thanks to binary exponentiation.
- # Supports negative exponents.
- my ($class, $num, $exp, $mod, @r) = objectify(3, @_);
+ # Modular exponentiation. Raises a very large number to a very large
+ # exponent in a given very large modulus quickly, thanks to binary
+ # exponentiation. Supports negative exponents.
+ my ($class, $num, $exp, $mod, @r)
+ = ref($_[0]) && ref($_[0]) eq ref($_[1]) && ref($_[1]) eq ref($_[2])
+ ? (ref($_[0]), @_)
+ : objectify(3, @_);
return $num if $num->modify('bmodpow');
@@ -2288,25 +2534,30 @@ sub bmodpow {
#
# b^(-e) (mod m) = d^e (mod m) where b*d = 1 (mod m)
- $num->bmodinv($mod) if ($exp->{sign} eq '-');
+ $num = $num -> bmodinv($mod) if ($exp->{sign} eq '-');
- # Check for valid input. All operands must be finite, and the modulus must be
- # non-zero.
+ # Check for valid input. All operands must be finite, and the modulus must
+ # be non-zero.
- return $num->bnan() if ($num->{sign} =~ /NaN|inf/ || # NaN, -inf, +inf
- $exp->{sign} =~ /NaN|inf/ || # NaN, -inf, +inf
- $mod->{sign} =~ /NaN|inf/); # NaN, -inf, +inf
+ return $num->bnan(@r) if ($num->{sign} =~ /NaN|inf/ || # NaN, -inf, +inf
+ $exp->{sign} =~ /NaN|inf/ || # NaN, -inf, +inf
+ $mod->{sign} =~ /NaN|inf/); # NaN, -inf, +inf
# Modulo zero. See documentation for Math::BigInt's bmod() method.
if ($mod -> is_zero()) {
if ($num -> is_zero()) {
- return $class -> bnan();
+ return $class -> bnan(@r);
} else {
- return $num -> copy();
+ return $num -> copy(@r);
}
}
+ return $upgrade -> bmodinv($num, $exp, $mod, @r)
+ if defined($upgrade) && (!$num -> isa($class) ||
+ !$exp -> isa($class) ||
+ !$mod -> ($class));
+
# Compute 'a (mod m)', ignoring the signs on 'a' and 'm'. If the resulting
# value is zero, the output is also zero, regardless of the signs on 'a' and
# 'm'.
@@ -2379,53 +2630,67 @@ sub bpow {
# modifies first argument
# set up parameters
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
- return $x if $x->modify('bpow');
+ return $x if $x -> modify('bpow');
# $x and/or $y is a NaN
- return $x->bnan() if $x->is_nan() || $y->is_nan();
+ return $x -> bnan(@r) if $x -> is_nan() || $y -> is_nan();
# $x and/or $y is a +/-Inf
- if ($x->is_inf("-")) {
- return $x->bzero() if $y->is_negative();
- return $x->bnan() if $y->is_zero();
- return $x if $y->is_odd();
- return $x->bneg();
- } elsif ($x->is_inf("+")) {
- return $x->bzero() if $y->is_negative();
- return $x->bnan() if $y->is_zero();
- return $x;
- } elsif ($y->is_inf("-")) {
- return $x->bnan() if $x -> is_one("-");
- return $x->binf("+") if $x -> is_zero();
- return $x->bone() if $x -> is_one("+");
- return $x->bzero();
- } elsif ($y->is_inf("+")) {
- return $x->bnan() if $x -> is_one("-");
- return $x->bzero() if $x -> is_zero();
- return $x->bone() if $x -> is_one("+");
- return $x->binf("+");
+ if ($x -> is_inf("-")) {
+ return $x -> bzero(@r) if $y -> is_negative();
+ return $x -> bnan(@r) if $y -> is_zero();
+ return $x -> round(@r) if $y -> is_odd();
+ return $x -> bneg(@r);
+ } elsif ($x -> is_inf("+")) {
+ return $x -> bzero(@r) if $y -> is_negative();
+ return $x -> bnan(@r) if $y -> is_zero();
+ return $x -> round(@r);
+ } elsif ($y -> is_inf("-")) {
+ return $x -> bnan(@r) if $x -> is_one("-");
+ return $x -> binf("+", @r) if $x -> is_zero();
+ return $x -> bone(@r) if $x -> is_one("+");
+ return $x -> bzero(@r);
+ } elsif ($y -> is_inf("+")) {
+ return $x -> bnan(@r) if $x -> is_one("-");
+ return $x -> bzero(@r) if $x -> is_zero();
+ return $x -> bone(@r) if $x -> is_one("+");
+ return $x -> binf("+", @r);
+ }
+
+ if ($x -> is_zero()) {
+ return $x -> bone(@r) if $y -> is_zero();
+ return $x -> binf(@r) if $y -> is_negative();
+ return $x -> round(@r);
}
- return $upgrade->bpow($upgrade->new($x), $y, @r)
- if defined $upgrade && (!$y->isa($class) || $y->{sign} eq '-');
+ if ($x -> is_one("+")) {
+ return $x -> round(@r);
+ }
- $r[3] = $y; # no push!
+ if ($x -> is_one("-")) {
+ return $x -> round(@r) if $y -> is_odd();
+ return $x -> bneg(@r);
+ }
- # 0 ** -y => ( 1 / (0 ** y)) => 1 / 0 => +inf
- return $x->binf() if $y->is_negative() && $x->is_zero();
+ return $upgrade -> bpow($x, $y, @r) if defined $upgrade;
- # 1 ** -y => 1 / (1 ** |y|)
- return $x->bzero() if $y->is_negative() && !$LIB->_is_one($x->{value});
+ # We don't support finite non-integers, so return zero. The reason for
+ # returning zero, not NaN, is that all output is in the open interval (0,1),
+ # and truncating that to integer gives zero.
- $x->{value} = $LIB->_pow($x->{value}, $y->{value});
- $x->{sign} = $x->is_negative() && $y->is_odd() ? '-' : '+';
- $x->round(@r);
+ if ($y->{sign} eq '-' || !$y -> isa($class)) {
+ return $x -> bzero(@r);
+ }
+
+ $r[3] = $y; # no push!
+
+ $x->{value} = $LIB -> _pow($x->{value}, $y->{value});
+ $x->{sign} = $x -> is_negative() && $y -> is_odd() ? '-' : '+';
+ $x -> round(@r);
}
sub blog {
@@ -2438,12 +2703,12 @@ sub blog {
# Don't objectify the base, since an undefined base, as in $x->blog() or
# $x->blog(undef) signals that the base is Euler's number.
- if (!ref($_[0]) && $_[0] =~ /^[A-Za-z]|::/) {
+ if (!ref($_[0]) && $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i) {
# E.g., Math::BigInt->blog(256, 2)
($class, $x, $base, @r) =
defined $_[2] ? objectify(2, @_) : objectify(1, @_);
} else {
- # E.g., Math::BigInt::blog(256, 2) or $x->blog(2)
+ # E.g., $x->blog(2) or the deprecated Math::BigInt::blog(256, 2)
($class, $x, $base, @r) =
defined $_[1] ? objectify(2, @_) : objectify(1, @_);
}
@@ -2453,80 +2718,70 @@ sub blog {
# Handle all exception cases and all trivial cases. I have used Wolfram
# Alpha (http://www.wolframalpha.com) as the reference for these cases.
- return $x -> bnan() if $x -> is_nan();
+ return $x -> bnan(@r) if $x -> is_nan();
if (defined $base) {
$base = $class -> new($base) unless ref $base;
if ($base -> is_nan() || $base -> is_one()) {
- return $x -> bnan();
+ return $x -> bnan(@r);
} elsif ($base -> is_inf() || $base -> is_zero()) {
- return $x -> bnan() if $x -> is_inf() || $x -> is_zero();
- return $x -> bzero();
- } elsif ($base -> is_negative()) { # -inf < base < 0
- return $x -> bzero() if $x -> is_one(); # x = 1
- return $x -> bone() if $x == $base; # x = base
- return $x -> bnan(); # otherwise
+ return $x -> bnan(@r) if $x -> is_inf() || $x -> is_zero();
+ return $x -> bzero(@r);
+ } elsif ($base -> is_negative()) { # -inf < base < 0
+ return $x -> bzero(@r) if $x -> is_one(); # x = 1
+ return $x -> bone(@r) if $x == $base; # x = base
+ return $x -> bnan(@r); # otherwise
}
- return $x -> bone() if $x == $base; # 0 < base && 0 < x < inf
+ return $x -> bone(@r) if $x == $base; # 0 < base && 0 < x < inf
}
# We now know that the base is either undefined or >= 2 and finite.
- return $x -> binf('+') if $x -> is_inf(); # x = +/-inf
- return $x -> bnan() if $x -> is_neg(); # -inf < x < 0
- return $x -> bzero() if $x -> is_one(); # x = 1
- return $x -> binf('-') if $x -> is_zero(); # x = 0
+ return $x -> binf('+', @r) if $x -> is_inf(); # x = +/-inf
+ return $x -> bnan(@r) if $x -> is_neg(); # -inf < x < 0
+ return $x -> bzero(@r) if $x -> is_one(); # x = 1
+ return $x -> binf('-', @r) if $x -> is_zero(); # x = 0
# At this point we are done handling all exception cases and trivial cases.
- return $upgrade -> blog($upgrade -> new($x), $base, @r) if defined $upgrade;
+ return $upgrade -> blog($x, $base, @r) if defined $upgrade;
# fix for bug #24969:
# the default base is e (Euler's number) which is not an integer
if (!defined $base) {
require Math::BigFloat;
- my $u = Math::BigFloat->blog(Math::BigFloat->new($x))->as_int();
+ my $u = Math::BigFloat->blog($x)->as_int();
# modify $x in place
$x->{value} = $u->{value};
$x->{sign} = $u->{sign};
- return $x;
+ return $x -> round(@r);
}
my ($rc) = $LIB->_log_int($x->{value}, $base->{value});
- return $x->bnan() unless defined $rc; # not possible to take log?
+ return $x->bnan(@r) unless defined $rc; # not possible to take log?
$x->{value} = $rc;
- $x->round(@r);
+ $x = $x -> round(@r);
}
sub bexp {
# Calculate e ** $x (Euler's number to the power of X), truncated to
# an integer value.
my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
return $x if $x->modify('bexp');
# inf, -inf, NaN, <0 => NaN
- return $x->bnan() if $x->{sign} eq 'NaN';
- return $x->bone() if $x->is_zero();
- return $x if $x->{sign} eq '+inf';
- return $x->bzero() if $x->{sign} eq '-inf';
+ return $x -> bnan(@r) if $x->{sign} eq 'NaN';
+ return $x -> bone(@r) if $x->is_zero();
+ return $x -> round(@r) if $x->{sign} eq '+inf';
+ return $x -> bzero(@r) if $x->{sign} eq '-inf';
- my $u;
- {
- # run through Math::BigFloat unless told otherwise
- require Math::BigFloat unless defined $upgrade;
- local $upgrade = 'Math::BigFloat' unless defined $upgrade;
- # calculate result, truncate it to integer
- $u = $upgrade->bexp($upgrade->new($x), @r);
- }
+ return $upgrade -> bexp($x, @r) if defined $upgrade;
- if (defined $upgrade) {
- $x = $u;
- } else {
- $u = $u->as_int();
- # modify $x in place
- $x->{value} = $u->{value};
- $x->round(@r);
- }
+ require Math::BigFloat;
+ my $tmp = Math::BigFloat -> bexp($x, @r) -> as_int();
+ $x->{value} = $tmp->{value};
+ return $x -> round(@r);
}
sub bnok {
@@ -2534,49 +2789,51 @@ sub bnok {
# integer.
# Set up parameters.
- my ($self, $n, $k, @r) = (ref($_[0]), @_);
+ my ($class, $n, $k, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_)
+ : objectify(2, @_);
- # Objectify is costly, so avoid it.
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($self, $n, $k, @r) = objectify(2, @_);
- }
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
return $n if $n->modify('bnok');
# All cases where at least one argument is NaN.
- return $n->bnan() if $n->{sign} eq 'NaN' || $k->{sign} eq 'NaN';
+ return $n->bnan(@r) if $n->{sign} eq 'NaN' || $k->{sign} eq 'NaN';
# All cases where at least one argument is +/-inf.
if ($n -> is_inf()) {
if ($k -> is_inf()) { # bnok(+/-inf,+/-inf)
- return $n -> bnan();
+ return $n -> bnan(@r);
} elsif ($k -> is_neg()) { # bnok(+/-inf,k), k < 0
- return $n -> bzero();
+ return $n -> bzero(@r);
} elsif ($k -> is_zero()) { # bnok(+/-inf,k), k = 0
- return $n -> bone();
+ return $n -> bone(@r);
} else {
- if ($n -> is_inf("+")) { # bnok(+inf,k), 0 < k < +inf
+ if ($n -> is_inf("+", @r)) { # bnok(+inf,k), 0 < k < +inf
return $n -> binf("+");
} else { # bnok(-inf,k), k > 0
my $sign = $k -> is_even() ? "+" : "-";
- return $n -> binf($sign);
+ return $n -> binf($sign, @r);
}
}
}
elsif ($k -> is_inf()) { # bnok(n,+/-inf), -inf <= n <= inf
- return $n -> bnan();
+ return $n -> bnan(@r);
}
# At this point, both n and k are real numbers.
+ return $upgrade -> bnok($n, $k, @r)
+ if defined($upgrade) && (!$n -> isa($class) || !$k -> isa($class));
+
my $sign = 1;
if ($n >= 0) {
if ($k < 0 || $k > $n) {
- return $n -> bzero();
+ return $n -> bzero(@r);
}
} else {
@@ -2585,7 +2842,7 @@ sub bnok {
# n < 0 and k >= 0: bnok(n,k) = (-1)^k * bnok(-n+k-1,k)
$sign = (-1) ** $k;
- $n -> bneg() -> badd($k) -> bdec();
+ $n = $n -> bneg() -> badd($k) -> bdec();
} elsif ($k <= $n) {
@@ -2593,22 +2850,22 @@ sub bnok {
$sign = (-1) ** ($n - $k);
my $x0 = $n -> copy();
- $n -> bone() -> badd($k) -> bneg();
+ $n = $n -> bone() -> badd($k) -> bneg();
$k = $k -> copy();
- $k -> bneg() -> badd($x0);
+ $k = $k -> bneg() -> badd($x0);
} else {
# n < 0 and n < k < 0:
- return $n -> bzero();
+ return $n -> bzero(@r);
}
}
$n->{value} = $LIB->_nok($n->{value}, $k->{value});
- $n -> bneg() if $sign == -1;
+ $n = $n -> bneg() if $sign == -1;
- $n->round(@r);
+ $n -> round(@r);
}
sub buparrow {
@@ -2721,9 +2978,9 @@ sub ackermann {
} elsif ($m == $three) {
$n = $class -> bone() -> blsft($n + $three) -> bsub($three);
} elsif ($m == $two) {
- $n -> bmul($two) -> badd($three);
+ $n = $n -> bmul($two) -> badd($three);
} elsif ($m >= 0) {
- $n -> badd($m) -> binc();
+ $n = $n -> badd($m) -> binc();
} else {
die "negative m!";
}
@@ -2732,109 +2989,102 @@ sub ackermann {
}
sub bsin {
- # Calculate sinus(x) to N digits. Unless upgrading is in effect, returns the
+ # Calculate sin(x) to N digits. Unless upgrading is in effect, returns the
# result truncated to an integer.
- my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return $x if $x->modify('bsin');
- return $x->bnan() if $x->{sign} !~ /^[+-]\z/; # -inf +inf or NaN => NaN
+ return $x->bnan(@r) if $x->{sign} !~ /^[+-]\z/; # -inf +inf or NaN => NaN
+ return $x->bzero(@r) if $x->is_zero();
- return $upgrade->new($x)->bsin(@r) if defined $upgrade;
+ return $upgrade -> bsin($x, @r) if defined $upgrade;
require Math::BigFloat;
# calculate the result and truncate it to integer
my $t = Math::BigFloat->new($x)->bsin(@r)->as_int();
- $x->bone() if $t->is_one();
- $x->bzero() if $t->is_zero();
+ $x = $x->bone(@r) if $t->is_one();
+ $x = $x->bzero(@r) if $t->is_zero();
$x->round(@r);
}
sub bcos {
- # Calculate cosinus(x) to N digits. Unless upgrading is in effect, returns the
+ # Calculate cos(x) to N digits. Unless upgrading is in effect, returns the
# result truncated to an integer.
- my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return $x if $x->modify('bcos');
- return $x->bnan() if $x->{sign} !~ /^[+-]\z/; # -inf +inf or NaN => NaN
+ return $x->bnan(@r) if $x->{sign} !~ /^[+-]\z/; # -inf +inf or NaN => NaN
+ return $x->bone(@r) if $x->is_zero();
- return $upgrade->new($x)->bcos(@r) if defined $upgrade;
+ return $upgrade -> bcos($x, @r) if defined $upgrade;
require Math::BigFloat;
- # calculate the result and truncate it to integer
- my $t = Math::BigFloat->new($x)->bcos(@r)->as_int();
-
- $x->bone() if $t->is_one();
- $x->bzero() if $t->is_zero();
- $x->round(@r);
+ my $tmp = Math::BigFloat -> bcos($x, @r) -> as_int();
+ $x->{value} = $tmp->{value};
+ return $x -> round(@r);
}
sub batan {
- # Calculate arcus tangens of x to N digits. Unless upgrading is in effect, returns the
- # result truncated to an integer.
- my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+ # Calculate arctan(x) to N digits. Unless upgrading is in effect, returns
+ # the result truncated to an integer.
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return $x if $x->modify('batan');
- return $x->bnan() if $x->{sign} !~ /^[+-]\z/; # -inf +inf or NaN => NaN
+ return $x -> bnan(@r) if $x -> is_nan();
+ return $x -> bzero(@r) if $x -> is_zero();
- return $upgrade->new($x)->batan(@r) if defined $upgrade;
+ return $upgrade -> batan($x, @r) if defined $upgrade;
- # calculate the result and truncate it to integer
- my $tmp = Math::BigFloat->new($x)->batan(@r);
+ return $x -> bone("+", @r) if $x -> bgt("1");
+ return $x -> bone("-", @r) if $x -> blt("-1");
- $x->{value} = $LIB->_new($tmp->as_int()->bstr());
- $x->round(@r);
+ $x -> bzero(@r);
}
sub batan2 {
# calculate arcus tangens of ($y/$x)
- # set up parameters
- my ($class, $y, $x, @r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $y, $x, @r) = objectify(2, @_);
- }
+ my ($class, $y, $x, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_) : objectify(2, @_);
return $y if $y->modify('batan2');
return $y->bnan() if ($y->{sign} eq $nan) || ($x->{sign} eq $nan);
+ return $upgrade->batan2($y, $x, @r) if defined $upgrade;
+
# Y X
# != 0 -inf result is +- pi
if ($x->is_inf() || $y->is_inf()) {
- # upgrade to Math::BigFloat etc.
- return $upgrade->new($y)->batan2($upgrade->new($x), @r) if defined $upgrade;
if ($y->is_inf()) {
if ($x->{sign} eq '-inf') {
# calculate 3 pi/4 => 2.3.. => 2
- $y->bone(substr($y->{sign}, 0, 1));
- $y->bmul($class->new(2));
+ $y = $y->bone(substr($y->{sign}, 0, 1));
+ $y = $y->bmul($class->new(2));
} elsif ($x->{sign} eq '+inf') {
# calculate pi/4 => 0.7 => 0
- $y->bzero();
+ $y = $y->bzero();
} else {
# calculate pi/2 => 1.5 => 1
- $y->bone(substr($y->{sign}, 0, 1));
+ $y = $y->bone(substr($y->{sign}, 0, 1));
}
} else {
if ($x->{sign} eq '+inf') {
# calculate pi/4 => 0.7 => 0
- $y->bzero();
+ $y = $y->bzero();
} else {
# PI => 3.1415.. => 3
- $y->bone(substr($y->{sign}, 0, 1));
- $y->bmul($class->new(3));
+ $y = $y->bone(substr($y->{sign}, 0, 1));
+ $y = $y->bmul($class->new(3));
}
}
return $y;
}
- return $upgrade->new($y)->batan2($upgrade->new($x), @r) if defined $upgrade;
-
require Math::BigFloat;
my $r = Math::BigFloat->new($y)
->batan2(Math::BigFloat->new($x), @r)
@@ -2843,17 +3093,17 @@ sub batan2 {
$x->{value} = $r->{value};
$x->{sign} = $r->{sign};
- $x;
+ $x->round(@r);
}
sub bsqrt {
# calculate square root of $x
- my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return $x if $x->modify('bsqrt');
- return $x->bnan() if $x->{sign} !~ /^\+/; # -x or -inf or NaN => NaN
- return $x if $x->{sign} eq '+inf'; # sqrt(+inf) == inf
+ return $x->bnan(@r) if $x->{sign} !~ /^\+/; # -x or -inf or NaN => NaN
+ return $x->round(@r) if $x->{sign} eq '+inf'; # sqrt(+inf) == inf
return $upgrade->bsqrt($x, @r) if defined $upgrade;
@@ -2865,25 +3115,22 @@ sub broot {
# calculate $y'th root of $x
# set up parameters
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
- $y = $class->new(2) unless defined $y;
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_) : objectify(2, @_);
- # objectify is costly, so avoid it
- if ((!ref($x)) || (ref($x) ne ref($y))) {
- ($class, $x, $y, @r) = objectify(2, $class || $class, @_);
- }
+ $y = $class->new(2) unless defined $y;
return $x if $x->modify('broot');
# NaN handling: $x ** 1/0, x or y NaN, or y inf/-inf or y == 0
- return $x->bnan() if $x->{sign} !~ /^\+/ || $y->is_zero() ||
- $y->{sign} !~ /^\+$/;
+ return $x->bnan(@r) if $x->{sign} !~ /^\+/ || $y->is_zero() ||
+ $y->{sign} !~ /^\+$/;
return $x->round(@r)
if $x->is_zero() || $x->is_one() || $x->is_inf() || $y->is_one();
- return $upgrade->new($x)->broot($upgrade->new($y), @r) if defined $upgrade;
+ return $upgrade->broot($x, $y, @r) if defined $upgrade;
$x->{value} = $LIB->_root($x->{value}, $y->{value});
$x->round(@r);
@@ -2892,10 +3139,14 @@ sub broot {
sub bfac {
# (BINT or num_str, BINT or num_str) return BINT
# compute factorial number from $x, modify $x in place
- my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return $x if $x->modify('bfac') || $x->{sign} eq '+inf'; # inf => inf
- return $x->bnan() if $x->{sign} ne '+'; # NaN, <0 etc => NaN
+
+ return $x->bnan(@r) if $x->{sign} ne '+'; # NaN, <0 => NaN
+
+ return $upgrade -> bfac($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
$x->{value} = $LIB->_fac($x->{value});
$x->round(@r);
@@ -2903,10 +3154,15 @@ sub bfac {
sub bdfac {
# compute double factorial, modify $x in place
- my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return $x if $x->modify('bdfac') || $x->{sign} eq '+inf'; # inf => inf
- return $x->bnan() if $x->{sign} ne '+'; # NaN, <0 etc => NaN
+
+ return $x->bnan(@r) if $x->is_nan() || $x <= -2;
+ return $x->bone(@r) if $x <= 1;
+
+ return $upgrade -> bdfac($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
croak("bdfac() requires a newer version of the $LIB library.")
unless $LIB->can('_dfac');
@@ -2915,21 +3171,69 @@ sub bdfac {
$x->round(@r);
}
+sub btfac {
+ # compute triple factorial, modify $x in place
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ return $x if $x->modify('btfac') || $x->{sign} eq '+inf'; # inf => inf
+
+ return $x->bnan(@r) if $x->is_nan();
+
+ return $upgrade -> btfac($x, @r) if defined($upgrade) && !$x -> isa($class);
+
+ my $k = $class -> new("3");
+ return $x->bnan(@r) if $x <= -$k;
+
+ my $one = $class -> bone();
+ return $x->bone(@r) if $x <= $one;
+
+ my $f = $x -> copy();
+ while ($f -> bsub($k) > $one) {
+ $x = $x -> bmul($f);
+ }
+ $x->round(@r);
+}
+
+sub bmfac {
+ # compute multi-factorial
+
+ my ($class, $x, $k, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_) : objectify(2, @_);
+
+ return $x if $x->modify('bmfac') || $x->{sign} eq '+inf';
+ return $x->bnan(@r) if $x->is_nan() || $k->is_nan() || $k < 1 || $x <= -$k;
+
+ return $upgrade -> bmfac($x, $k, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ my $one = $class -> bone();
+ return $x->bone(@r) if $x <= $one;
+
+ my $f = $x -> copy();
+ while ($f -> bsub($k) > $one) {
+ $x = $x -> bmul($f);
+ }
+ $x->round(@r);
+}
+
sub bfib {
# compute Fibonacci number(s)
- my ($class, $x, @r) = objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
croak("bfib() requires a newer version of the $LIB library.")
unless $LIB->can('_fib');
return $x if $x->modify('bfib');
+ return $upgrade -> bfib($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
# List context.
if (wantarray) {
- return () if $x -> is_nan();
+ return () if $x -> is_nan();
croak("bfib() can't return an infinitely long list of numbers")
- if $x -> is_inf();
+ if $x -> is_inf();
# Use the backend library to compute the first $x Fibonacci numbers.
@@ -2939,7 +3243,7 @@ sub bfib {
# invocand.
for (my $i = 0 ; $i < $#values ; ++ $i) {
- my $fib = $class -> bzero();
+ my $fib = $class -> bzero();
$fib -> {value} = $values[$i];
$values[$i] = $fib;
}
@@ -2973,13 +3277,16 @@ sub bfib {
sub blucas {
# compute Lucas number(s)
- my ($class, $x, @r) = objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
croak("blucas() requires a newer version of the $LIB library.")
unless $LIB->can('_lucas');
return $x if $x->modify('blucas');
+ return $upgrade -> blucas($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
# List context.
if (wantarray) {
@@ -3050,8 +3357,19 @@ sub blsft {
return $x -> bnan() if ($x -> {sign} !~ /^[+-]$/ ||
$y -> {sign} !~ /^[+-]$/);
return $x -> round(@r) if $y -> is_zero();
+ return $x -> bzero(@r) if $x -> is_zero(); # 0 => 0
+
+ $b = 2 if !defined $b;
+ return $x -> bnan(@r) if $b <= 0 || $y -> {sign} eq '-';
+ $b = $class -> new($b) unless defined(blessed($b));
- $b = defined($b) ? $b -> numify() : 2;
+ #return $upgrade -> blsft($x, $y, $b, @r)
+ # if defined($upgrade) && (!$x -> isa($class) ||
+ # !$y -> isa($class) ||
+ # !$b -> isa($class));
+
+ # shift by a negative amount?
+ #return $x -> brsft($y -> copy() -> babs(), $b) if $y -> {sign} =~ /^-/;
# While some of the libraries support an arbitrarily large base, not all of
# them do, so rather than returning an incorrect result in those cases,
@@ -3060,6 +3378,8 @@ sub blsft {
my $uintmax = ~0;
croak("Base is too large.") if $b > $uintmax;
+ $b = $b -> numify();
+
return $x -> bnan() if $b <= 0 || $y -> {sign} eq '-';
$x -> {value} = $LIB -> _lsft($x -> {value}, $y -> {value}, $b);
@@ -3070,21 +3390,48 @@ sub brsft {
# (BINT or num_str, BINT or num_str) return BINT
# compute x >> y, base n, y >= 0
- # set up parameters
my ($class, $x, $y, $b, @r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, $b, @r) = objectify(2, @_);
+ # Objectify the base only when it is defined, since an undefined base, as
+ # in $x->blsft(3) or $x->blog(3, undef) means use the default base 2.
+
+ if (!ref($_[0]) && $_[0] =~ /^[A-Za-z]|::/) {
+ # E.g., Math::BigInt->blog(256, 5, 2)
+ ($class, $x, $y, $b, @r) =
+ defined $_[3] ? objectify(3, @_) : objectify(2, @_);
+ } else {
+ # E.g., Math::BigInt::blog(256, 5, 2) or $x->blog(5, 2)
+ ($class, $x, $y, $b, @r) =
+ defined $_[2] ? objectify(3, @_) : objectify(2, @_);
}
return $x if $x -> modify('brsft');
- return $x -> bnan() if ($x -> {sign} !~ /^[+-]$/ || $y -> {sign} !~ /^[+-]$/);
+ return $x -> bnan(@r) if $x -> {sign} !~ /^[+-]$/ ||
+ $y -> {sign} !~ /^[+-]$/;
return $x -> round(@r) if $y -> is_zero();
return $x -> bzero(@r) if $x -> is_zero(); # 0 => 0
$b = 2 if !defined $b;
- return $x -> bnan() if $b <= 0 || $y -> {sign} eq '-';
+ return $x -> bnan(@r) if $b <= 0 || $y -> {sign} eq '-';
+ $b = $class -> new($b) unless defined(blessed($b));
+
+ # Shifting right by a positive amount might lead to a non-integer result, so
+ # include this case in the test.
+
+ return $upgrade -> brsft($x, $y, $b, @r)
+ if defined($upgrade) && (!$x -> isa($class) ||
+ !$y -> isa($class) ||
+ !$b -> isa($class) ||
+ $y -> is_pos());
+
+ # While some of the libraries support an arbitrarily large base, not all of
+ # them do, so rather than returning an incorrect result in those cases,
+ # disallow bases that don't work with all libraries.
+
+ my $uintmax = ~0;
+ croak("Base is too large.") if $b > $uintmax;
+
+ $b = $b -> numify();
# this only works for negative numbers when shifting in base 2
if (($x -> {sign} eq '-') && ($b == 2)) {
@@ -3095,7 +3442,7 @@ sub brsft {
# shift...
# if $y != 1, we must simulate it by doing:
# convert to bin, flip all bits, shift, and be done
- $x -> binc(); # -3 => -2
+ $x = $x -> binc(); # -3 => -2
my $bin = $x -> as_bin();
$bin =~ s/^-0b//; # strip '-0b' prefix
$bin =~ tr/10/01/; # flip bits
@@ -3111,13 +3458,13 @@ sub brsft {
$bin =~ tr/10/01/; # flip bits back
}
my $res = $class -> new('0b' . $bin); # add prefix and convert back
- $res -> binc(); # remember to increment
+ $res = $res -> binc(); # remember to increment
$x -> {value} = $res -> {value}; # take over value
return $x -> round(@r); # we are done now, magic, isn't?
}
# x < 0, n == 2, y == 1
- $x -> bdec(); # n == 2, but $y == 1: this fixes it
+ $x = $x -> bdec(); # n == 2, but $y == 1: this fixes it
}
$x -> {value} = $LIB -> _rsft($x -> {value}, $y -> {value}, $b);
@@ -3132,18 +3479,18 @@ sub band {
#(BINT or num_str, BINT or num_str) return BINT
# compute x & y
- # set up parameters
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_) : objectify(2, @_);
return $x if $x->modify('band');
+ return $upgrade -> band($x, $y, @r)
+ if defined($upgrade) && (!$x -> isa($class) ||
+ !$y -> isa($class));
+
$r[3] = $y; # no push!
- return $x->bnan() if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/);
+ return $x->bnan(@r) if $x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/;
if ($x->{sign} eq '+' && $y->{sign} eq '+') {
$x->{value} = $LIB->_and($x->{value}, $y->{value});
@@ -3158,15 +3505,15 @@ sub bior {
#(BINT or num_str, BINT or num_str) return BINT
# compute x | y
- # set up parameters
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_) : objectify(2, @_);
return $x if $x->modify('bior');
+ return $upgrade -> bior($x, $y, @r)
+ if defined($upgrade) && (!$x -> isa($class) ||
+ !$y -> isa($class));
+
$r[3] = $y; # no push!
return $x->bnan() if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/);
@@ -3184,18 +3531,18 @@ sub bxor {
#(BINT or num_str, BINT or num_str) return BINT
# compute x ^ y
- # set up parameters
- my ($class, $x, $y, @r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- if ((!ref($_[0])) || (ref($_[0]) ne ref($_[1]))) {
- ($class, $x, $y, @r) = objectify(2, @_);
- }
+ my ($class, $x, $y, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_) : objectify(2, @_);
return $x if $x->modify('bxor');
+ return $upgrade -> bxor($x, $y, @r)
+ if defined($upgrade) && (!$x -> isa($class) ||
+ !$y -> isa($class));
+
$r[3] = $y; # no push!
- return $x->bnan() if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/);
+ return $x->bnan(@r) if $x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/;
if ($x->{sign} eq '+' && $y->{sign} eq '+') {
$x->{value} = $LIB->_xor($x->{value}, $y->{value});
@@ -3209,11 +3556,14 @@ sub bxor {
sub bnot {
# (num_str or BINT) return BINT
# represent ~x as twos-complement number
- # we don't need $class, so undef instead of ref($_[0]) make it slightly faster
- my ($class, $x) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
return $x if $x->modify('bnot');
- $x->binc()->bneg(); # binc already does round
+
+ return $upgrade -> bnot($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ $x -> binc() -> bneg(@r);
}
###############################################################################
@@ -3224,22 +3574,39 @@ sub round {
# Round $self according to given parameters, or given second argument's
# parameters or global defaults
- # for speed reasons, _find_round_parameters is embedded here:
+ my ($class, $self, @args) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ # $x->round(undef, undef) signals no rounding
+
+ if (@args >= 2 && @args <= 3 && !defined($args[0]) && !defined($args[1])) {
+ $self->{_a} = undef;
+ $self->{_p} = undef;
+ return $self;
+ }
+
+ my ($a, $p, $r) = splice @args, 0, 3;
- my ($self, $a, $p, $r, @args) = @_;
# $a accuracy, if given by caller
# $p precision, if given by caller
# $r round_mode, if given by caller
# @args all 'other' arguments (0 for unary, 1 for binary ops)
- my $class = ref($self); # find out class of argument(s)
- no strict 'refs';
+ if (defined $a) {
+ croak "accuracy must be a number, not '$a'"
+ unless $a =~/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[Ee][+-]?\d+)?\z/;
+ }
+
+ if (defined $p) {
+ croak "precision must be a number, not '$p'"
+ unless $p =~/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[Ee][+-]?\d+)?\z/;
+ }
# now pick $a or $p, but only if we have got "arguments"
if (!defined $a) {
foreach ($self, @args) {
# take the defined one, or if both defined, the one that is smaller
- $a = $_->{_a} if (defined $_->{_a}) && (!defined $a || $_->{_a} < $a);
+ $a = $_->{_a}
+ if (defined $_->{_a}) && (!defined $a || $_->{_a} < $a);
}
}
if (!defined $p) {
@@ -3247,10 +3614,13 @@ sub round {
foreach ($self, @args) {
# take the defined one, or if both defined, the one that is bigger
# -2 > -3, and 3 > 2
- $p = $_->{_p} if (defined $_->{_p}) && (!defined $p || $_->{_p} > $p);
+ $p = $_->{_p}
+ if (defined $_->{_p}) && (!defined $p || $_->{_p} > $p);
}
}
+ no strict 'refs';
+
# if still none defined, use globals
unless (defined $a || defined $p) {
$a = ${"$class\::accuracy"};
@@ -3273,9 +3643,11 @@ sub round {
# now round, by calling either bround or bfround:
if (defined $a) {
- $self->bround(int($a), $r) if !defined $self->{_a} || $self->{_a} >= $a;
+ $self = $self->bround(int($a), $r)
+ if !defined $self->{_a} || $self->{_a} >= $a;
} else { # both can't be undefined due to early out
- $self->bfround(int($p), $r) if !defined $self->{_p} || $self->{_p} <= $p;
+ $self = $self->bfround(int($p), $r)
+ if !defined $self->{_p} || $self->{_p} <= $p;
}
# bround() or bfround() already called bnorm() if nec.
@@ -3289,9 +3661,9 @@ sub bround {
# and overwrite the rest with 0's, return normalized number
# do not return $x->bnorm(), but $x
- my $x = shift;
- $x = __PACKAGE__->new($x) unless ref $x;
- my ($scale, $mode) = $x->_scale_a(@_);
+ my ($class, $x, @a) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ my ($scale, $mode) = $x->_scale_a(@a);
return $x if !defined $scale || $x->modify('bround'); # no-op
if ($x->is_zero() || $scale == 0) {
@@ -3303,8 +3675,8 @@ sub bround {
# we have fewer digits than we want to scale to
my $len = $x->length();
# convert $scale to a scalar in case it is an object (put's a limit on the
- # number length, but this would already limited by memory constraints), makes
- # it faster
+ # number length, but this would already limited by memory constraints),
+ # makes it faster
$scale = $scale->numify() if ref ($scale);
# scale < 0, but > -len (not >=!)
@@ -3352,9 +3724,10 @@ sub bround {
if (($pad > 0) && ($pad <= $len)) {
substr($xs, -$pad, $pad) = '0' x $pad; # replace with '00...'
+ $xs =~ s/^0+(\d)/$1/; # "00000" -> "0"
$put_back = 1; # need to put back
} elsif ($pad > $len) {
- $x->bzero(); # round to '0'
+ $x = $x->bzero(); # round to '0'
}
if ($round_up) { # what gave test above?
@@ -3373,7 +3746,6 @@ sub bround {
last if $c != 0; # no overflow => early out
}
$xs = '1'.$xs if $c == 0;
-
}
$x->{value} = $LIB->_new($xs) if $put_back == 1; # put back, if needed
@@ -3388,16 +3760,15 @@ sub bround {
sub bfround {
# precision: round to the $Nth digit left (+$n) or right (-$n) from the '.'
# $n == 0 || $n == 1 => round to integer
- my $x = shift;
- my $class = ref($x) || $x;
- $x = $class->new($x) unless ref $x;
- my ($scale, $mode) = $x->_scale_p(@_);
+ my ($class, $x, @p) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ my ($scale, $mode) = $x->_scale_p(@p);
return $x if !defined $scale || $x->modify('bfround'); # no-op
# no-op for Math::BigInt objects if $n <= 0
- $x->bround($x->length()-$scale, $mode) if $scale > 0;
+ $x = $x->bround($x->length()-$scale, $mode) if $scale > 0;
delete $x->{_a}; # delete to save memory
$x->{_p} = $scale; # store new _p
@@ -3414,21 +3785,30 @@ sub fround {
sub bfloor {
# round towards minus infinity; no-op since it's already integer
- my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ return $upgrade -> bfloor($x)
+ if defined($upgrade) && !$x -> isa($class);
$x->round(@r);
}
sub bceil {
# round towards plus infinity; no-op since it's already int
- my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ return $upgrade -> bceil($x)
+ if defined($upgrade) && !$x -> isa($class);
$x->round(@r);
}
sub bint {
# round towards zero; no-op since it's already integer
- my ($class, $x, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ return $upgrade -> bint($x)
+ if defined($upgrade) && !$x -> isa($class);
$x->round(@r);
}
@@ -3442,8 +3822,30 @@ sub bgcd {
# does not modify arguments, but returns new object
# GCD -- Euclid's algorithm, variant C (Knuth Vol 3, pg 341 ff)
+ # Class::method(...) -> Class->method(...)
+ unless (@_ && (defined(blessed($_[0])) && $_[0] -> isa(__PACKAGE__) ||
+ $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i))
+ {
+ #carp "Using ", (caller(0))[3], "() as a function is deprecated;",
+ # " use is as a method instead";
+ unshift @_, __PACKAGE__;
+ }
+
my ($class, @args) = objectify(0, @_);
+ # Upgrade?
+
+ if (defined $upgrade) {
+ my $do_upgrade = 0;
+ for my $arg (@args) {
+ unless ($arg -> isa($class)) {
+ $do_upgrade = 1;
+ last;
+ }
+ }
+ return $upgrade -> bgcd(@args) if $do_upgrade;
+ }
+
my $x = shift @args;
$x = ref($x) && $x -> isa($class) ? $x -> copy() : $class -> new($x);
@@ -3465,8 +3867,30 @@ sub blcm {
# does not modify arguments, but returns new object
# Least Common Multiple
+ # Class::method(...) -> Class->method(...)
+ unless (@_ && (defined(blessed($_[0])) && $_[0] -> isa(__PACKAGE__) ||
+ $_[0] =~ /^[a-z]\w*(?:::[a-z]\w*)*$/i))
+ {
+ #carp "Using ", (caller(0))[3], "() as a function is deprecated;",
+ # " use is as a method instead";
+ unshift @_, __PACKAGE__;
+ }
+
my ($class, @args) = objectify(0, @_);
+ # Upgrade?
+
+ if (defined $upgrade) {
+ my $do_upgrade = 0;
+ for my $arg (@args) {
+ unless ($arg -> isa($class)) {
+ $do_upgrade = 1;
+ last;
+ }
+ }
+ return $upgrade -> blcm(@args) if $do_upgrade;
+ }
+
my $x = shift @args;
$x = ref($x) && $x -> isa($class) ? $x -> copy() : $class -> new($x);
return $class->bnan() if $x->{sign} !~ /^[+-]$/; # x NaN?
@@ -3487,14 +3911,18 @@ sub blcm {
sub sign {
# return the sign of the number: +/-/-inf/+inf/NaN
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
$x->{sign};
}
sub digit {
# return the nth decimal digit, negative values count backward, 0 is right
- my ($class, $x, $n) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+ my (undef, $x, $n, @r) = ref($_[0]) ? (undef, @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
$n = $n->numify() if ref($n);
$LIB->_digit($x->{value}, $n || 0);
@@ -3502,7 +3930,9 @@ sub digit {
sub bdigitsum {
# like digitsum(), but assigns the result to the invocand
- my $x = shift;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
return $x if $x -> is_nan();
return $x -> bnan() if $x -> is_inf();
@@ -3514,19 +3944,22 @@ sub bdigitsum {
sub digitsum {
# compute sum of decimal digits and return it
- my $x = shift;
- my $class = ref $x;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
return $class -> bnan() if $x -> is_nan();
return $class -> bnan() if $x -> is_inf();
my $y = $class -> bzero();
$y -> {value} = $LIB -> _digitsum($x -> {value});
- return $y;
+ $y -> round(@r);
}
sub length {
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
my $e = $LIB->_len($x->{value});
wantarray ? ($e, 0) : $e;
@@ -3534,26 +3967,40 @@ sub length {
sub exponent {
# return a copy of the exponent (here always 0, NaN or 1 for $m == 0)
- my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Upgrade?
+
+ return $upgrade -> exponent($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
if ($x->{sign} !~ /^[+-]$/) {
my $s = $x->{sign};
$s =~ s/^[+-]//; # NaN, -inf, +inf => NaN or inf
- return $class->new($s);
+ return $class->new($s, @r);
}
- return $class->bzero() if $x->is_zero();
+ return $class->bzero(@r) if $x->is_zero();
# 12300 => 2 trailing zeros => exponent is 2
- $class->new($LIB->_zeros($x->{value}));
+ $class->new($LIB->_zeros($x->{value}), @r);
}
sub mantissa {
# return the mantissa (compatible to Math::BigFloat, e.g. reduced)
- my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Upgrade?
+
+ return $upgrade -> mantissa($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
if ($x->{sign} !~ /^[+-]$/) {
# for NaN, +inf, -inf: keep the sign
- return $class->new($x->{sign});
+ return $class->new($x->{sign}, @r);
}
my $m = $x->copy();
delete $m->{_p};
@@ -3561,92 +4008,100 @@ sub mantissa {
# that's a bit inefficient:
my $zeros = $LIB->_zeros($m->{value});
- $m->brsft($zeros, 10) if $zeros != 0;
- $m;
+ $m = $m->brsft($zeros, 10) if $zeros != 0;
+ $m -> round(@r);
}
sub parts {
# return a copy of both the exponent and the mantissa
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Upgrade?
- ($x->mantissa(), $x->exponent());
+ return $upgrade -> parts($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ ($x->mantissa(@r), $x->exponent(@r));
}
+# Parts used for scientific notation with significand/mantissa and exponent as
+# integers. E.g., "12345.6789" is returned as "123456789" (mantissa) and "-4"
+# (exponent).
+
sub sparts {
- my $self = shift;
- my $class = ref $self;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- croak("sparts() is an instance method, not a class method")
- unless $class;
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
# Not-a-number.
- if ($self -> is_nan()) {
- my $mant = $self -> copy(); # mantissa
+ if ($x -> is_nan()) {
+ my $mant = $class -> bnan(@r); # mantissa
return $mant unless wantarray; # scalar context
- my $expo = $class -> bnan(); # exponent
+ my $expo = $class -> bnan(@r); # exponent
return ($mant, $expo); # list context
}
# Infinity.
- if ($self -> is_inf()) {
- my $mant = $self -> copy(); # mantissa
- return $mant unless wantarray; # scalar context
- my $expo = $class -> binf('+'); # exponent
- return ($mant, $expo); # list context
+ if ($x -> is_inf()) {
+ my $mant = $class -> binf($x->{sign}, @r); # mantissa
+ return $mant unless wantarray; # scalar context
+ my $expo = $class -> binf('+', @r); # exponent
+ return ($mant, $expo); # list context
}
+ # Upgrade?
+
+ return $upgrade -> sparts($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
# Finite number.
- my $mant = $self -> copy();
+ my $mant = $x -> copy();
my $nzeros = $LIB -> _zeros($mant -> {value});
- $mant -> brsft($nzeros, 10) if $nzeros != 0;
+ $mant -> {value}
+ = $LIB -> _rsft($mant -> {value}, $LIB -> _new($nzeros), 10)
+ if $nzeros != 0;
return $mant unless wantarray;
- my $expo = $class -> new($nzeros);
+ my $expo = $class -> new($nzeros, @r);
return ($mant, $expo);
}
+# Parts used for normalized notation with significand/mantissa as either 0 or a
+# number in the semi-open interval [1,10). E.g., "12345.6789" is returned as
+# "1.23456789" and "4".
+
sub nparts {
- my $self = shift;
- my $class = ref $self;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- croak("nparts() is an instance method, not a class method")
- unless $class;
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
- # Not-a-number.
+ # Not-a-Number and Infinity.
- if ($self -> is_nan()) {
- my $mant = $self -> copy(); # mantissa
- return $mant unless wantarray; # scalar context
- my $expo = $class -> bnan(); # exponent
- return ($mant, $expo); # list context
- }
+ return $x -> sparts(@r) if $x -> is_nan() || $x -> is_inf();
- # Infinity.
+ # Upgrade?
- if ($self -> is_inf()) {
- my $mant = $self -> copy(); # mantissa
- return $mant unless wantarray; # scalar context
- my $expo = $class -> binf('+'); # exponent
- return ($mant, $expo); # list context
- }
+ return $upgrade -> nparts($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
# Finite number.
- my ($mant, $expo) = $self -> sparts();
-
+ my ($mant, $expo) = $x -> sparts(@r);
if ($mant -> bcmp(0)) {
my ($ndigtot, $ndigfrac) = $mant -> length();
my $expo10adj = $ndigtot - $ndigfrac - 1;
- if ($expo10adj != 0) {
- return $upgrade -> new($self) -> nparts() if $upgrade;
- $mant -> bnan();
+ if ($expo10adj > 0) { # if mantissa is not an integer
+ return $upgrade -> nparts($x, @r) if defined $upgrade;
+ $mant = $mant -> bnan(@r);
return $mant unless wantarray;
- $expo -> badd($expo10adj);
+ $expo = $expo -> badd($expo10adj, @r);
return ($mant, $expo);
}
}
@@ -3655,70 +4110,174 @@ sub nparts {
return ($mant, $expo);
}
+# Parts used for engineering notation with significand/mantissa as either 0 or a
+# number in the semi-open interval [1,1000) and the exponent is a multiple of 3.
+# E.g., "12345.6789" is returned as "12.3456789" and "3".
+
sub eparts {
- my $self = shift;
- my $class = ref $self;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- croak("eparts() is an instance method, not a class method")
- unless $class;
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
# Not-a-number and Infinity.
- return $self -> sparts() if $self -> is_nan() || $self -> is_inf();
+ return $x -> sparts(@r) if $x -> is_nan() || $x -> is_inf();
+
+ # Upgrade?
+
+ return $upgrade -> eparts($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
# Finite number.
- my ($mant, $expo) = $self -> sparts();
+ my ($mant, $expo) = $x -> sparts(@r);
if ($mant -> bcmp(0)) {
my $ndigmant = $mant -> length();
- $expo -> badd($ndigmant);
+ $expo = $expo -> badd($ndigmant, @r);
# $c is the number of digits that will be in the integer part of the
# final mantissa.
my $c = $expo -> copy() -> bdec() -> bmod(3) -> binc();
- $expo -> bsub($c);
+ $expo = $expo -> bsub($c);
if ($ndigmant > $c) {
- return $upgrade -> new($self) -> eparts() if $upgrade;
- $mant -> bnan();
+ return $upgrade -> eparts($x, @r) if defined $upgrade;
+ $mant = $mant -> bnan(@r);
return $mant unless wantarray;
return ($mant, $expo);
}
- $mant -> blsft($c - $ndigmant, 10);
+ $mant = $mant -> blsft($c - $ndigmant, 10, @r);
}
return $mant unless wantarray;
return ($mant, $expo);
}
+# Parts used for decimal notation, e.g., "12345.6789" is returned as "12345"
+# (integer part) and "0.6789" (fraction part).
+
sub dparts {
- my $self = shift;
- my $class = ref $self;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
- croak("dparts() is an instance method, not a class method")
- unless $class;
+ # Not-a-number.
+
+ if ($x -> is_nan()) {
+ my $int = $class -> bnan(@r);
+ return $int unless wantarray;
+ my $frc = $class -> bzero(@r); # or NaN?
+ return ($int, $frc);
+ }
+
+ # Infinity.
+
+ if ($x -> is_inf()) {
+ my $int = $class -> binf($x->{sign}, @r);
+ return $int unless wantarray;
+ my $frc = $class -> bzero(@r);
+ return ($int, $frc);
+ }
+
+ # Upgrade?
- my $int = $self -> copy();
+ return $upgrade -> dparts($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number.
+
+ my $int = $x -> copy() -> round(@r);
return $int unless wantarray;
- my $frc = $class -> bzero();
+ my $frc = $class -> bzero(@r);
return ($int, $frc);
}
+# Fractional parts with the numerator and denominator as integers. E.g.,
+# "123.4375" is returned as "1975" and "16".
+
+sub fparts {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # NaN => NaN/NaN
+
+ if ($x -> is_nan()) {
+ return $class -> bnan(@r) unless wantarray;
+ return $class -> bnan(@r), $class -> bnan(@r);
+ }
+
+ # ±Inf => ±Inf/1
+
+ if ($x -> is_inf()) {
+ my $numer = $class -> binf($x->{sign}, @r);
+ return $numer unless wantarray;
+ my $denom = $class -> bone(@r);
+ return $numer, $denom;
+ }
+
+ # Upgrade?
+
+ return $upgrade -> fparts($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # N => N/1
+
+ my $numer = $x -> copy() -> round(@r);
+ return $numer unless wantarray;
+ my $denom = $class -> bone(@r);
+ return $numer, $denom;
+}
+
+sub numerator {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ return $upgrade -> numerator($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ return $x -> copy() -> round(@r);
+}
+
+sub denominator {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ return $upgrade -> denominator($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ return $x -> is_nan() ? $class -> bnan(@r) : $class -> bone(@r);
+}
+
###############################################################################
# String conversion methods
###############################################################################
sub bstr {
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
if ($x->{sign} ne '+' && $x->{sign} ne '-') {
return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
return 'inf'; # +inf
}
+
+ # Upgrade?
+
+ return $upgrade -> bstr($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
+
my $str = $LIB->_str($x->{value});
return $x->{sign} eq '-' ? "-$str" : $str;
}
@@ -3727,125 +4286,223 @@ sub bstr {
# written as "1.2345e+4".
sub bsstr {
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
if ($x->{sign} ne '+' && $x->{sign} ne '-') {
return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
return 'inf'; # +inf
}
- my ($m, $e) = $x -> parts();
- my $str = $LIB->_str($m->{value}) . 'e+' . $LIB->_str($e->{value});
- return $x->{sign} eq '-' ? "-$str" : $str;
+
+ # Upgrade?
+
+ return $upgrade -> bsstr($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
+
+ my $expo = $LIB -> _zeros($x->{value});
+ my $mant = $LIB -> _str($x->{value});
+ $mant = substr($mant, 0, -$expo) if $expo; # strip trailing zeros
+
+ ($x->{sign} eq '-' ? '-' : '') . $mant . 'e+' . $expo;
}
-# Normalized notation, e.g., "12345" is written as "12345e+0".
+# Normalized notation, e.g., "12345" is written as "1.2345e+4".
sub bnstr {
- my $x = shift;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
if ($x->{sign} ne '+' && $x->{sign} ne '-') {
return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
return 'inf'; # +inf
}
- return $x -> bstr() if $x -> is_nan() || $x -> is_inf();
+ # Upgrade?
- my ($mant, $expo) = $x -> parts();
+ return $upgrade -> bnstr($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
- # The "fraction posision" is the position (offset) for the decimal point
- # relative to the end of the digit string.
+ # Finite number
- my $fracpos = $mant -> length() - 1;
- if ($fracpos == 0) {
- my $str = $LIB->_str($mant->{value}) . "e+" . $LIB->_str($expo->{value});
- return $x->{sign} eq '-' ? "-$str" : $str;
- }
+ my $expo = $LIB -> _zeros($x->{value});
+ my $mant = $LIB -> _str($x->{value});
+ $mant = substr($mant, 0, -$expo) if $expo; # strip trailing zeros
- $expo += $fracpos;
- my $mantstr = $LIB->_str($mant -> {value});
- substr($mantstr, -$fracpos, 0) = '.';
+ my $mantlen = CORE::length($mant);
+ if ($mantlen > 1) {
+ $expo += $mantlen - 1; # adjust exponent
+ substr $mant, 1, 0, "."; # insert decimal point
+ }
- my $str = $mantstr . 'e+' . $LIB->_str($expo -> {value});
- return $x->{sign} eq '-' ? "-$str" : $str;
+ ($x->{sign} eq '-' ? '-' : '') . $mant . 'e+' . $expo;
}
# Engineering notation, e.g., "12345" is written as "12.345e+3".
sub bestr {
- my $x = shift;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
if ($x->{sign} ne '+' && $x->{sign} ne '-') {
return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
return 'inf'; # +inf
}
- my ($mant, $expo) = $x -> parts();
+ # Upgrade?
- my $sign = $mant -> sign();
- $mant -> babs();
+ return $upgrade -> bestr($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
- my $mantstr = $LIB->_str($mant -> {value});
- my $mantlen = CORE::length($mantstr);
+ # Finite number
- my $dotidx = 1;
- $expo += $mantlen - 1;
+ my $expo = $LIB -> _zeros($x->{value}); # number of trailing zeros
+ my $mant = $LIB -> _str($x->{value}); # mantissa as a string
+ $mant = substr($mant, 0, -$expo) if $expo; # strip trailing zeros
+ my $mantlen = CORE::length($mant); # length of mantissa
+ $expo += $mantlen;
- my $c = $expo -> copy() -> bmod(3);
- $expo -= $c;
- $dotidx += $c;
+ my $dotpos = ($expo - 1) % 3 + 1; # offset of decimal point
+ $expo -= $dotpos;
- if ($mantlen < $dotidx) {
- $mantstr .= "0" x ($dotidx - $mantlen);
- } elsif ($mantlen > $dotidx) {
- substr($mantstr, $dotidx, 0) = ".";
+ if ($dotpos < $mantlen) {
+ substr $mant, $dotpos, 0, "."; # insert decimal point
+ } elsif ($dotpos > $mantlen) {
+ $mant .= "0" x ($dotpos - $mantlen); # append zeros
}
- my $str = $mantstr . 'e+' . $LIB->_str($expo -> {value});
- return $sign eq "-" ? "-$str" : $str;
+ ($x->{sign} eq '-' ? '-' : '') . $mant . 'e+' . $expo;
}
-# Decimal notation, e.g., "12345".
+# Decimal notation, e.g., "12345" (no exponent).
sub bdstr {
- my $x = shift;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
if ($x->{sign} ne '+' && $x->{sign} ne '-') {
- return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
- return 'inf'; # +inf
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
}
- my $str = $LIB->_str($x->{value});
- return $x->{sign} eq '-' ? "-$str" : $str;
+ # Upgrade?
+
+ return $upgrade -> bdstr($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
+
+ ($x->{sign} eq '-' ? '-' : '') . $LIB->_str($x->{value});
+}
+
+# Fraction notation, e.g., "123.4375" is written as "1975/16", but "123" is
+# written as "123", not "123/1".
+
+sub bfstr {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
+
+ if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
+ }
+
+ # Upgrade?
+
+ return $upgrade -> bfstr($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
+
+ ($x->{sign} eq '-' ? '-' : '') . $LIB->_str($x->{value});
}
sub to_hex {
- # return as hex string, with prefixed 0x
- my $x = shift;
- $x = __PACKAGE__->new($x) if !ref($x);
+ # return as hex string with no prefix
- return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
+
+ if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
+ }
+
+ # Upgrade?
+
+ return $upgrade -> to_hex($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
my $hex = $LIB->_to_hex($x->{value});
return $x->{sign} eq '-' ? "-$hex" : $hex;
}
sub to_oct {
- # return as octal string, with prefixed 0
- my $x = shift;
- $x = __PACKAGE__->new($x) if !ref($x);
+ # return as octal string with no prefix
- return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
+
+ if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
+ }
+
+ # Upgrade?
+
+ return $upgrade -> to_oct($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
my $oct = $LIB->_to_oct($x->{value});
return $x->{sign} eq '-' ? "-$oct" : $oct;
}
sub to_bin {
- # return as binary string, with prefixed 0b
- my $x = shift;
- $x = __PACKAGE__->new($x) if !ref($x);
+ # return as binary string with no prefix
- return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
+
+ if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
+ }
+
+ # Upgrade?
+
+ return $upgrade -> to_bin($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
my $bin = $LIB->_to_bin($x->{value});
return $x->{sign} eq '-' ? "-$bin" : $bin;
@@ -3853,12 +4510,17 @@ sub to_bin {
sub to_bytes {
# return a byte string
- my $x = shift;
- $x = __PACKAGE__->new($x) if !ref($x);
+
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
croak("to_bytes() requires a finite, non-negative integer")
if $x -> is_neg() || ! $x -> is_int();
+ return $upgrade -> to_bytes($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
croak("to_bytes() requires a newer version of the $LIB library.")
unless $LIB->can('_to_bytes');
@@ -3867,22 +4529,23 @@ sub to_bytes {
sub to_base {
# return a base anything string
- my $x = shift;
- $x = __PACKAGE__->new($x) if !ref($x);
+
+ # $cs is the collation sequence
+ my ($class, $x, $base, $cs, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_) : objectify(2, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
croak("the value to convert must be a finite, non-negative integer")
if $x -> is_neg() || !$x -> is_int();
- my $base = shift;
- $base = __PACKAGE__->new($base) unless ref($base);
-
croak("the base must be a finite integer >= 2")
if $base < 2 || ! $base -> is_int();
# If no collating sequence is given, pass some of the conversions to
# methods optimized for those cases.
- if (! @_) {
+ unless (defined $cs) {
return $x -> to_bin() if $base == 2;
return $x -> to_oct() if $base == 8;
return uc $x -> to_hex() if $base == 16;
@@ -3892,38 +4555,93 @@ sub to_base {
croak("to_base() requires a newer version of the $LIB library.")
unless $LIB->can('_to_base');
- return $LIB->_to_base($x->{value}, $base -> {value}, @_ ? shift() : ());
+ return $upgrade -> to_base($x, $base, $cs, @r)
+ if defined($upgrade) && (!$x -> isa($class) || !$base -> isa($class));
+
+ return $LIB->_to_base($x->{value}, $base -> {value},
+ defined($cs) ? $cs : ());
+}
+
+sub to_base_num {
+ # return a base anything array ref, e.g.,
+ # Math::BigInt -> new(255) -> to_base_num(10) returns [2, 5, 5];
+
+ # $cs is the collation sequence
+ my ($class, $x, $base, @r) = ref($_[0]) && ref($_[0]) eq ref($_[1])
+ ? (ref($_[0]), @_) : objectify(2, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ croak("the value to convert must be a finite non-negative integer")
+ if $x -> is_neg() || !$x -> is_int();
+
+ croak("the base must be a finite integer >= 2")
+ if $base < 2 || ! $base -> is_int();
+
+ croak("to_base() requires a newer version of the $LIB library.")
+ unless $LIB->can('_to_base');
+
+ return $upgrade -> to_base_num($x, $base, @r)
+ if defined($upgrade) && (!$x -> isa($class) || !$base -> isa($class));
+
+ # Get a reference to an array of library thingies, and replace each element
+ # with a Math::BigInt object using that thingy.
+
+ my $vals = $LIB -> _to_base_num($x->{value}, $base -> {value});
+
+ for my $i (0 .. $#$vals) {
+ my $x = $class -> bzero();
+ $x -> {value} = $vals -> [$i];
+ $vals -> [$i] = $x;
+ }
+
+ return $vals;
}
sub as_hex {
# return as hex string, with prefixed 0x
- my $x = shift;
- $x = __PACKAGE__->new($x) if !ref($x);
+
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
+ return $upgrade -> as_hex($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
my $hex = $LIB->_as_hex($x->{value});
return $x->{sign} eq '-' ? "-$hex" : $hex;
}
sub as_oct {
# return as octal string, with prefixed 0
- my $x = shift;
- $x = __PACKAGE__->new($x) if !ref($x);
+
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
+ return $upgrade -> as_oct($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
my $oct = $LIB->_as_oct($x->{value});
return $x->{sign} eq '-' ? "-$oct" : $oct;
}
sub as_bin {
# return as binary string, with prefixed 0b
- my $x = shift;
- $x = __PACKAGE__->new($x) if !ref($x);
+
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
return $x->bstr() if $x->{sign} !~ /^[+-]$/; # inf, nan etc
+ return $upgrade -> as_bin($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
my $bin = $LIB->_as_bin($x->{value});
return $x->{sign} eq '-' ? "-$bin" : $bin;
}
@@ -3936,21 +4654,25 @@ sub as_bin {
sub numify {
# Make a Perl scalar number from a Math::BigInt object.
- my $x = shift;
- $x = __PACKAGE__->new($x) unless ref $x;
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
if ($x -> is_nan()) {
require Math::Complex;
- my $inf = Math::Complex::Inf();
+ my $inf = $Math::Complex::Inf;
return $inf - $inf;
}
if ($x -> is_inf()) {
require Math::Complex;
- my $inf = Math::Complex::Inf();
+ my $inf = $Math::Complex::Inf;
return $x -> is_negative() ? -$inf : $inf;
}
+ return $upgrade -> numify($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
my $num = 0 + $LIB->_num($x->{value});
return $x->{sign} eq '-' ? -$num : $num;
}
@@ -4015,9 +4737,13 @@ sub objectify {
no strict 'refs';
- # What we upgrade to, if anything.
+ # What we upgrade to, if anything. Note that we need the whole upgrade
+ # chain, since there might be multiple levels of upgrading. E.g., class A
+ # upgrades to class B, which upgrades to class C. Delay getting the chain
+ # until we actually need it.
- my $up = ${"$a[0]::upgrade"};
+ my @upg = ();
+ my $have_upgrade_chain = 0;
# Disable downgrading, because Math::BigFloat -> foo('1.0', '2.0') needs
# floats.
@@ -4028,7 +4754,7 @@ sub objectify {
${"$a[0]::downgrade"} = undef;
}
- for my $i (1 .. $count) {
+ ARG: for my $i (1 .. $count) {
my $ref = ref $a[$i];
@@ -4043,10 +4769,23 @@ sub objectify {
next if $ref -> isa($a[0]);
- # Upgrading is OK, so skip further tests if the argument is upgraded.
+ # Upgrading is OK, so skip further tests if the argument is upgraded,
+ # but first get the whole upgrade chain if we haven't got it yet.
+
+ unless ($have_upgrade_chain) {
+ my $cls = $class;
+ my $upg = $cls -> upgrade();
+ while (defined $upg) {
+ last if $upg eq $cls;
+ push @upg, $upg;
+ $cls = $upg;
+ $upg = $cls -> upgrade();
+ }
+ $have_upgrade_chain = 1;
+ }
- if (defined $up && $ref -> isa($up)) {
- next;
+ for my $upg (@upg) {
+ next ARG if $ref -> isa($upg);
}
# See if we can call one of the as_xxx() methods. We don't know whether
@@ -4105,233 +4844,190 @@ sub import {
my $class = shift;
$IMPORT++; # remember we did import()
my @a; # unrecognized arguments
- my $warn_or_die = 0; # 0 - no warn, 1 - warn, 2 - die
- for (my $i = 0; $i <= $#_ ; $i++) {
- if ($_[$i] eq ':constant') {
- # this causes overlord er load to step in
+
+ while (@_) {
+ my $param = shift;
+
+ # Enable overloading of constants.
+
+ if ($param eq ':constant') {
overload::constant
- integer => sub { $class->new(shift) },
- binary => sub { $class->new(shift) };
- } elsif ($_[$i] eq 'upgrade') {
- # this causes upgrading
- $upgrade = $_[$i+1]; # or undef to disable
- $i++;
- } elsif ($_[$i] =~ /^(lib|try|only)\z/) {
- # this causes a different low lib to take care...
- $LIB = $_[$i+1] || '';
- # try => 0 (no warn)
- # lib => 1 (warn on fallback)
- # only => 2 (die on fallback)
- $warn_or_die = 1 if $_[$i] eq 'lib';
- $warn_or_die = 2 if $_[$i] eq 'only';
- $i++;
- } else {
- push @a, $_[$i];
+
+ integer => sub {
+ $class -> new(shift);
+ },
+
+ float => sub {
+ $class -> new(shift);
+ },
+
+ binary => sub {
+ # E.g., a literal 0377 shall result in an object whose value
+ # is decimal 255, but new("0377") returns decimal 377.
+ return $class -> from_oct($_[0]) if $_[0] =~ /^0_*[0-7]/;
+ $class -> new(shift);
+ };
+ next;
}
- }
- # any non :constant stuff is handled by our parent, Exporter
- if (@a > 0) {
- $class->SUPER::import(@a); # need it for subclasses
- $class->export_to_level(1, $class, @a); # need it for MBF
- }
-
- # try to load core math lib
- my @c = split /\s*,\s*/, $LIB;
- foreach (@c) {
- tr/a-zA-Z0-9://cd; # limit to sane characters
- }
- push @c, \'Calc' # if all fail, try these
- if $warn_or_die < 2; # but not for "only"
- $LIB = ''; # signal error
- foreach my $l (@c) {
- # fallback libraries are "marked" as \'string', extract string if nec.
- my $lib = $l;
- $lib = $$l if ref($l);
-
- next unless defined($lib) && CORE::length($lib);
- $lib = 'Math::BigInt::'.$lib if $lib !~ /^Math::BigInt/i;
- $lib =~ s/\.pm$//;
- my @parts = split /::/, $lib; # Math::BigInt => Math BigInt
- $parts[-1] .= '.pm'; # BigInt => BigInt.pm
- require File::Spec;
- my $file = File::Spec->catfile(@parts);
- eval { require $file; };
- if ($@ eq '') {
- $lib->import();
- $LIB = $lib;
- if ($warn_or_die > 0 && ref($l)) {
- my $msg = "Math::BigInt: couldn't load specified"
- . " math lib(s), fallback to $lib";
- carp($msg) if $warn_or_die == 1;
- croak($msg) if $warn_or_die == 2;
- }
- last; # found a usable one, break
+
+ # Upgrading.
+
+ if ($param eq 'upgrade') {
+ $class -> upgrade(shift);
+ next;
}
- }
- if ($LIB eq '') {
- if ($warn_or_die == 2) {
- croak("Couldn't load specified math lib(s)" .
- " and fallback disallowed");
- } else {
- croak("Couldn't load any math lib(s), not even fallback to Calc.pm");
+
+ # Downgrading.
+
+ if ($param eq 'downgrade') {
+ $class -> downgrade(shift);
+ next;
}
- }
- # notify callbacks
- foreach my $class (keys %CALLBACKS) {
- &{$CALLBACKS{$class}}($LIB);
- }
+ # Accuracy.
- # import done
-}
+ if ($param eq 'accuracy') {
+ $class -> accuracy(shift);
+ next;
+ }
-sub _register_callback {
- my ($class, $callback) = @_;
+ # Precision.
- if (ref($callback) ne 'CODE') {
- croak("$callback is not a coderef");
- }
- $CALLBACKS{$class} = $callback;
-}
+ if ($param eq 'precision') {
+ $class -> precision(shift);
+ next;
+ }
-sub _split_dec_string {
- my $str = shift;
+ # Rounding mode.
- if ($str =~ s/
- ^
+ if ($param eq 'round_mode') {
+ $class -> round_mode(shift);
+ next;
+ }
- # leading whitespace
- ( \s* )
+ # Backend library.
- # optional sign
- ( [+-]? )
+ if ($param =~ /^(lib|try|only)\z/) {
+ # try => 0 (no warn if unavailable module)
+ # lib => 1 (warn on fallback)
+ # only => 2 (die on fallback)
- # significand
- (
- \d+ (?: _ \d+ )*
- (?:
- \.
- (?: \d+ (?: _ \d+ )* )?
- )?
- |
- \.
- \d+ (?: _ \d+ )*
- )
-
- # optional exponent
- (?:
- [Ee]
- ( [+-]? )
- ( \d+ (?: _ \d+ )* )
- )?
-
- # trailing stuff
- ( \D .*? )?
+ # Get the list of user-specified libraries.
- \z
- //x) {
- my $leading = $1;
- my $significand_sgn = $2 || '+';
- my $significand_abs = $3;
- my $exponent_sgn = $4 || '+';
- my $exponent_abs = $5 || '0';
- my $trailing = $6;
-
- # Remove underscores and leading zeros.
-
- $significand_abs =~ tr/_//d;
- $exponent_abs =~ tr/_//d;
-
- $significand_abs =~ s/^0+(.)/$1/;
- $exponent_abs =~ s/^0+(.)/$1/;
-
- # If the significand contains a dot, remove it and adjust the exponent
- # accordingly. E.g., "1234.56789e+3" -> "123456789e-2"
-
- my $idx = index $significand_abs, '.';
- if ($idx > -1) {
- $significand_abs =~ s/0+\z//;
- substr($significand_abs, $idx, 1) = '';
- my $exponent = $exponent_sgn . $exponent_abs;
- $exponent .= $idx - CORE::length($significand_abs);
- $exponent_abs = abs $exponent;
- $exponent_sgn = $exponent < 0 ? '-' : '+';
- }
+ croak "Library argument for import parameter '$param' is missing"
+ unless @_;
+ my $libs = shift;
+ croak "Library argument for import parameter '$param' is undefined"
+ unless defined($libs);
- return($leading,
- $significand_sgn, $significand_abs,
- $exponent_sgn, $exponent_abs,
- $trailing);
- }
+ # Check and clean up the list of user-specified libraries.
- return undef;
-}
+ my @libs;
+ for my $lib (split /,/, $libs) {
+ $lib =~ s/^\s+//;
+ $lib =~ s/\s+$//;
-sub _split {
- # input: num_str; output: undef for invalid or
- # (\$mantissa_sign, \$mantissa_value, \$mantissa_fraction,
- # \$exp_sign, \$exp_value)
- # Internal, take apart a string and return the pieces.
- # Strip leading/trailing whitespace, leading zeros, underscore and reject
- # invalid input.
- my $x = shift;
+ if ($lib =~ /[^a-zA-Z0-9_:]/) {
+ carp "Library name '$lib' contains invalid characters";
+ next;
+ }
+
+ if (! CORE::length $lib) {
+ carp "Library name is empty";
+ next;
+ }
- # strip white space at front, also extraneous leading zeros
- $x =~ s/^\s*([-]?)0*([0-9])/$1$2/g; # will not strip ' .2'
- $x =~ s/^\s+//; # but this will
- $x =~ s/\s+$//g; # strip white space at end
+ $lib = "Math::BigInt::$lib" if $lib !~ /^Math::BigInt::/i;
- # shortcut, if nothing to split, return early
- if ($x =~ /^[+-]?[0-9]+\z/) {
- $x =~ s/^([+-])0*([0-9])/$2/;
- my $sign = $1 || '+';
- return (\$sign, \$x, \'', \'', \0);
- }
+ # If a library has already been loaded, that is OK only if the
+ # requested library is identical to the loaded one.
- # invalid starting char?
- return if $x !~ /^[+-]?(\.?[0-9]|0b[0-1]|0x[0-9a-fA-F])/;
+ if (defined($LIB)) {
+ if ($lib ne $LIB) {
+ #carp "Library '$LIB' has already been loaded, so",
+ # " ignoring requested library '$lib'";
+ }
+ next;
+ }
- return Math::BigInt->from_hex($x) if $x =~ /^[+-]?0x/; # hex string
- return Math::BigInt->from_bin($x) if $x =~ /^[+-]?0b/; # binary string
+ push @libs, $lib;
+ }
- # strip underscores between digits
- $x =~ s/([0-9])_([0-9])/$1$2/g;
- $x =~ s/([0-9])_([0-9])/$1$2/g; # do twice for 1_2_3
+ next if defined $LIB;
- # some possible inputs:
- # 2.1234 # 0.12 # 1 # 1E1 # 2.134E1 # 434E-10 # 1.02009E-2
- # .2 # 1_2_3.4_5_6 # 1.4E1_2_3 # 1e3 # +.2 # 0e999
+ croak "Library list contains no valid libraries" unless @libs;
- my ($m, $e, $last) = split /[Ee]/, $x;
- return if defined $last; # last defined => 1e2E3 or others
- $e = '0' if !defined $e || $e eq "";
+ # Try to load the specified libraries, if any.
- # sign, value for exponent, mantint, mantfrac
- my ($es, $ev, $mis, $miv, $mfv);
- # valid exponent?
- if ($e =~ /^([+-]?)0*([0-9]+)$/) # strip leading zeros
- {
- $es = $1;
- $ev = $2;
- # valid mantissa?
- return if $m eq '.' || $m eq '';
- my ($mi, $mf, $lastf) = split /\./, $m;
- return if defined $lastf; # lastf defined => 1.2.3 or others
- $mi = '0' if !defined $mi;
- $mi .= '0' if $mi =~ /^[\-\+]?$/;
- $mf = '0' if !defined $mf || $mf eq '';
- if ($mi =~ /^([+-]?)0*([0-9]+)$/) # strip leading zeros
- {
- $mis = $1 || '+';
- $miv = $2;
- return unless ($mf =~ /^([0-9]*?)0*$/); # strip trailing zeros
- $mfv = $1;
- # handle the 0e999 case here
- $ev = 0 if $miv eq '0' && $mfv eq '';
- return (\$mis, \$miv, \$mfv, \$es, \$ev);
+ for (my $i = 0 ; $i <= $#libs ; $i++) {
+ my $lib = $libs[$i];
+ eval "require $lib";
+ unless ($@) {
+ $LIB = $lib;
+ last;
+ }
+ }
+
+ next if defined $LIB;
+
+ # No library has been loaded, and none of the requested libraries
+ # could be loaded, and fallback and the user doesn't allow fallback.
+
+ if ($param eq 'only') {
+ croak "Couldn't load the specified math lib(s) ",
+ join(", ", map "'$_'", @libs),
+ ", and fallback to '$DEFAULT_LIB' is not allowed";
+ }
+
+ # No library has been loaded, and none of the requested libraries
+ # could be loaded, but the user accepts the use of a fallback
+ # library, so try to load it.
+
+ eval "require $DEFAULT_LIB";
+ if ($@) {
+ croak "Couldn't load the specified math lib(s) ",
+ join(", ", map "'$_'", @libs),
+ ", not even the fallback lib '$DEFAULT_LIB'";
+ }
+
+ # The fallback library was successfully loaded, but the user
+ # might want to know that we are using the fallback.
+
+ if ($param eq 'lib') {
+ carp "Couldn't load the specified math lib(s) ",
+ join(", ", map "'$_'", @libs),
+ ", so using fallback lib '$DEFAULT_LIB'";
+ }
+
+ next;
}
+
+ # Unrecognized parameter.
+
+ push @a, $param;
+ }
+
+ # Any non-':constant' stuff is handled by our parent, Exporter
+
+ if (@a) {
+ $class->SUPER::import(@a); # need it for subclasses
+ $class->export_to_level(1, $class, @a); # need it for Math::BigFloat
+ }
+
+ # We might not have loaded any backend library yet, either because the user
+ # didn't specify any, or because the specified libraries failed to load and
+ # the user allows the use of a fallback library.
+
+ unless (defined $LIB) {
+ eval "require $DEFAULT_LIB";
+ if ($@) {
+ croak "No lib specified, and couldn't load the default",
+ " lib '$DEFAULT_LIB'";
+ }
+ $LIB = $DEFAULT_LIB;
}
- return; # NaN, not a number
+
+ # import done
}
sub _trailing_zeros {
@@ -4386,7 +5082,8 @@ sub _find_round_parameters {
if (!defined $a) {
foreach ($self, @args) {
# take the defined one, or if both defined, the one that is smaller
- $a = $_->{_a} if (defined $_->{_a}) && (!defined $a || $_->{_a} < $a);
+ $a = $_->{_a}
+ if (defined $_->{_a}) && (!defined $a || $_->{_a} < $a);
}
}
if (!defined $p) {
@@ -4394,7 +5091,8 @@ sub _find_round_parameters {
foreach ($self, @args) {
# take the defined one, or if both defined, the one that is bigger
# -2 > -3, and 3 > 2
- $p = $_->{_p} if (defined $_->{_p}) && (!defined $p || $_->{_p} > $p);
+ $p = $_->{_p}
+ if (defined $_->{_p}) && (!defined $p || $_->{_p} > $p);
}
}
@@ -4422,6 +5120,699 @@ sub _find_round_parameters {
($self, $a, $p, $r);
}
+# Return true if the input is numeric and false if it is a string.
+
+sub _is_numeric {
+ shift; # class name
+ my $value = shift;
+ no warnings 'numeric';
+ # detect numbers
+ # string & "" -> ""
+ # number & "" -> 0 (with warning)
+ # nan and inf can detect as numbers, so check with * 0
+ return unless CORE::length((my $dummy = "") & $value);
+ return unless 0 + $value eq $value;
+ return 1 if $value * 0 == 0;
+ return -1; # Inf/NaN
+}
+
+# Trims the sign of the significand, the (absolute value of the) significand,
+# the sign of the exponent, and the (absolute value of the) exponent. The
+# returned values have no underscores ("_") or unnecessary leading or trailing
+# zeros.
+
+sub _trim_split_parts {
+ shift; # class name
+
+ my $sig_sgn = shift() || '+';
+ my $sig_str = shift() || '0';
+ my $exp_sgn = shift() || '+';
+ my $exp_str = shift() || '0';
+
+ $sig_str =~ tr/_//d; # "1.0_0_0" -> "1.000"
+ $sig_str =~ s/^0+//; # "01.000" -> "1.000"
+ $sig_str =~ s/\.0*$// # "1.000" -> "1"
+ || $sig_str =~ s/(\..*[^0])0+$/$1/; # "1.010" -> "1.01"
+ $sig_str = '0' unless CORE::length($sig_str);
+
+ return '+', '0', '+', '0' if $sig_str eq '0';
+
+ $exp_str =~ tr/_//d; # "01_234" -> "01234"
+ $exp_str =~ s/^0+//; # "01234" -> "1234"
+ $exp_str = '0' unless CORE::length($exp_str);
+ $exp_sgn = '+' if $exp_str eq '0'; # "+3e-0" -> "+3e+0"
+
+ return $sig_sgn, $sig_str, $exp_sgn, $exp_str;
+}
+
+# Takes any string representing a valid decimal number and splits it into four
+# strings: the sign of the significand, the absolute value of the significand,
+# the sign of the exponent, and the absolute value of the exponent. Both the
+# significand and the exponent are in base 10.
+#
+# Perl accepts literals like the following. The value is 100.1.
+#
+# 1__0__.__0__1__e+0__1__ (prints "Misplaced _ in number")
+# 1_0.0_1e+0_1
+#
+# Strings representing decimal numbers do not allow underscores, so only the
+# following is valid
+#
+# "10.01e+01"
+
+sub _dec_str_to_dec_str_parts {
+ my $class = shift;
+ my $str = shift;
+
+ if ($str =~ /
+ ^
+
+ # optional leading whitespace
+ \s*
+
+ # optional sign
+ ( [+-]? )
+
+ # significand
+ (
+ # integer part and optional fraction part ...
+ \d+ (?: _+ \d+ )* _*
+ (?:
+ \.
+ (?: _* \d+ (?: _+ \d+ )* _* )?
+ )?
+ |
+ # ... or mandatory fraction part
+ \.
+ \d+ (?: _+ \d+ )* _*
+ )
+
+ # optional exponent
+ (?:
+ [Ee]
+ ( [+-]? )
+ ( \d+ (?: _+ \d+ )* _* )
+ )?
+
+ # optional trailing whitespace
+ \s*
+
+ $
+ /x)
+ {
+ return $class -> _trim_split_parts($1, $2, $3, $4);
+ }
+
+ return;
+}
+
+# Takes any string representing a valid hexadecimal number and splits it into
+# four strings: the sign of the significand, the absolute value of the
+# significand, the sign of the exponent, and the absolute value of the exponent.
+# The significand is in base 16, and the exponent is in base 2.
+#
+# Perl accepts literals like the following. The "x" might be a capital "X". The
+# value is 32.0078125.
+#
+# 0x__1__0__.0__1__p+0__1__ (prints "Misplaced _ in number")
+# 0x1_0.0_1p+0_1
+#
+# The CORE::hex() function does not accept floating point accepts
+#
+# "0x_1_0"
+# "x_1_0"
+# "_1_0"
+
+sub _hex_str_to_hex_str_parts {
+ my $class = shift;
+ my $str = shift;
+
+ if ($str =~ /
+ ^
+
+ # optional leading whitespace
+ \s*
+
+ # optional sign
+ ( [+-]? )
+
+ # optional hex prefix
+ (?: 0? [Xx] _* )?
+
+ # significand using the hex digits 0..9 and a..f
+ (
+ # integer part and optional fraction part ...
+ [0-9a-fA-F]+ (?: _+ [0-9a-fA-F]+ )* _*
+ (?:
+ \.
+ (?: _* [0-9a-fA-F]+ (?: _+ [0-9a-fA-F]+ )* _* )?
+ )?
+ |
+ # ... or mandatory fraction part
+ \.
+ [0-9a-fA-F]+ (?: _+ [0-9a-fA-F]+ )* _*
+ )
+
+ # optional exponent (power of 2) using decimal digits
+ (?:
+ [Pp]
+ ( [+-]? )
+ ( \d+ (?: _+ \d+ )* _* )
+ )?
+
+ # optional trailing whitespace
+ \s*
+
+ $
+ /x)
+ {
+ return $class -> _trim_split_parts($1, $2, $3, $4);
+ }
+
+ return;
+}
+
+# Takes any string representing a valid octal number and splits it into four
+# strings: the sign of the significand, the absolute value of the significand,
+# the sign of the exponent, and the absolute value of the exponent. The
+# significand is in base 8, and the exponent is in base 2.
+
+sub _oct_str_to_oct_str_parts {
+ my $class = shift;
+ my $str = shift;
+
+ if ($str =~ /
+ ^
+
+ # optional leading whitespace
+ \s*
+
+ # optional sign
+ ( [+-]? )
+
+ # optional octal prefix
+ (?: 0? [Oo] _* )?
+
+ # significand using the octal digits 0..7
+ (
+ # integer part and optional fraction part ...
+ [0-7]+ (?: _+ [0-7]+ )* _*
+ (?:
+ \.
+ (?: _* [0-7]+ (?: _+ [0-7]+ )* _* )?
+ )?
+ |
+ # ... or mandatory fraction part
+ \.
+ [0-7]+ (?: _+ [0-7]+ )* _*
+ )
+
+ # optional exponent (power of 2) using decimal digits
+ (?:
+ [Pp]
+ ( [+-]? )
+ ( \d+ (?: _+ \d+ )* _* )
+ )?
+
+ # optional trailing whitespace
+ \s*
+
+ $
+ /x)
+ {
+ return $class -> _trim_split_parts($1, $2, $3, $4);
+ }
+
+ return;
+}
+
+# Takes any string representing a valid binary number and splits it into four
+# strings: the sign of the significand, the absolute value of the significand,
+# the sign of the exponent, and the absolute value of the exponent. The
+# significand is in base 2, and the exponent is in base 2.
+
+sub _bin_str_to_bin_str_parts {
+ my $class = shift;
+ my $str = shift;
+
+ if ($str =~ /
+ ^
+
+ # optional leading whitespace
+ \s*
+
+ # optional sign
+ ( [+-]? )
+
+ # optional binary prefix
+ (?: 0? [Bb] _* )?
+
+ # significand using the binary digits 0 and 1
+ (
+ # integer part and optional fraction part ...
+ [01]+ (?: _+ [01]+ )* _*
+ (?:
+ \.
+ (?: _* [01]+ (?: _+ [01]+ )* _* )?
+ )?
+ |
+ # ... or mandatory fraction part
+ \.
+ [01]+ (?: _+ [01]+ )* _*
+ )
+
+ # optional exponent (power of 2) using decimal digits
+ (?:
+ [Pp]
+ ( [+-]? )
+ ( \d+ (?: _+ \d+ )* _* )
+ )?
+
+ # optional trailing whitespace
+ \s*
+
+ $
+ /x)
+ {
+ return $class -> _trim_split_parts($1, $2, $3, $4);
+ }
+
+ return;
+}
+
+# Takes any string representing a valid decimal number and splits it into four
+# parts: the sign of the significand, the absolute value of the significand as a
+# libray thingy, the sign of the exponent, and the absolute value of the
+# exponent as a library thingy.
+
+sub _dec_str_parts_to_flt_lib_parts {
+ shift; # class name
+
+ my ($sig_sgn, $sig_str, $exp_sgn, $exp_str) = @_;
+
+ # Handle zero.
+
+ if ($sig_str eq '0') {
+ return '+', $LIB -> _zero(), '+', $LIB -> _zero();
+ }
+
+ # Absolute value of exponent as library "object".
+
+ my $exp_lib = $LIB -> _new($exp_str);
+
+ # If there is a dot in the significand, remove it so the significand
+ # becomes an integer and adjust the exponent accordingly. Also remove
+ # leading zeros which might now appear in the significand. E.g.,
+ #
+ # 12.345e-2 -> 12345e-5
+ # 12.345e+2 -> 12345e-1
+ # 0.0123e+5 -> 00123e+1 -> 123e+1
+
+ my $idx = index $sig_str, '.';
+ if ($idx >= 0) {
+ substr($sig_str, $idx, 1) = '';
+
+ # delta = length - index
+ my $delta = $LIB -> _new(CORE::length($sig_str));
+ $delta = $LIB -> _sub($delta, $LIB -> _new($idx));
+
+ # exponent - delta
+ ($exp_lib, $exp_sgn) = $LIB -> _ssub($exp_lib, $exp_sgn, $delta, '+');
+
+ $sig_str =~ s/^0+//;
+ }
+
+ # If there are trailing zeros in the significand, remove them and
+ # adjust the exponent. E.g.,
+ #
+ # 12340e-5 -> 1234e-4
+ # 12340e-1 -> 1234e0
+ # 12340e+3 -> 1234e4
+
+ if ($sig_str =~ s/(0+)\z//) {
+ my $len = CORE::length($1);
+ ($exp_lib, $exp_sgn) =
+ $LIB -> _sadd($exp_lib, $exp_sgn, $LIB -> _new($len), '+');
+ }
+
+ # At this point, the significand is empty or an integer with no trailing
+ # zeros. The exponent is in base 10.
+
+ unless (CORE::length $sig_str) {
+ return '+', $LIB -> _zero(), '+', $LIB -> _zero();
+ }
+
+ # Absolute value of significand as library "object".
+
+ my $sig_lib = $LIB -> _new($sig_str);
+
+ return $sig_sgn, $sig_lib, $exp_sgn, $exp_lib;
+}
+
+# Takes any string representing a valid binary number and splits it into four
+# parts: the sign of the significand, the absolute value of the significand as a
+# libray thingy, the sign of the exponent, and the absolute value of the
+# exponent as a library thingy.
+
+sub _bin_str_parts_to_flt_lib_parts {
+ shift; # class name
+
+ my ($sig_sgn, $sig_str, $exp_sgn, $exp_str, $bpc) = @_;
+ my $bpc_lib = $LIB -> _new($bpc);
+
+ # Handle zero.
+
+ if ($sig_str eq '0') {
+ return '+', $LIB -> _zero(), '+', $LIB -> _zero();
+ }
+
+ # Absolute value of exponent as library "object".
+
+ my $exp_lib = $LIB -> _new($exp_str);
+
+ # If there is a dot in the significand, remove it so the significand
+ # becomes an integer and adjust the exponent accordingly. Also remove
+ # leading zeros which might now appear in the significand. E.g., with
+ # hexadecimal numbers
+ #
+ # 12.345p-2 -> 12345p-14
+ # 12.345p+2 -> 12345p-10
+ # 0.0123p+5 -> 00123p-11 -> 123p-11
+
+ my $idx = index $sig_str, '.';
+ if ($idx >= 0) {
+ substr($sig_str, $idx, 1) = '';
+
+ # delta = (length - index) * bpc
+ my $delta = $LIB -> _new(CORE::length($sig_str));
+ $delta = $LIB -> _sub($delta, $LIB -> _new($idx));
+ $delta = $LIB -> _mul($delta, $bpc_lib) if $bpc != 1;
+
+ # exponent - delta
+ ($exp_lib, $exp_sgn) = $LIB -> _ssub($exp_lib, $exp_sgn, $delta, '+');
+
+ $sig_str =~ s/^0+//;
+ }
+
+ # If there are trailing zeros in the significand, remove them and
+ # adjust the exponent accordingly. E.g., with hexadecimal numbers
+ #
+ # 12340p-5 -> 1234p-1
+ # 12340p-1 -> 1234p+3
+ # 12340p+3 -> 1234p+7
+
+ if ($sig_str =~ s/(0+)\z//) {
+
+ # delta = length * bpc
+ my $delta = $LIB -> _new(CORE::length($1));
+ $delta = $LIB -> _mul($delta, $bpc_lib) if $bpc != 1;
+
+ # exponent + delta
+ ($exp_lib, $exp_sgn) = $LIB -> _sadd($exp_lib, $exp_sgn, $delta, '+');
+ }
+
+ # At this point, the significand is empty or an integer with no leading
+ # or trailing zeros. The exponent is in base 2.
+
+ unless (CORE::length $sig_str) {
+ return '+', $LIB -> _zero(), '+', $LIB -> _zero();
+ }
+
+ # Absolute value of significand as library "object".
+
+ my $sig_lib = $bpc == 1 ? $LIB -> _from_bin('0b' . $sig_str)
+ : $bpc == 3 ? $LIB -> _from_oct('0' . $sig_str)
+ : $bpc == 4 ? $LIB -> _from_hex('0x' . $sig_str)
+ : die "internal error: invalid exponent multiplier";
+
+ # If the exponent (in base 2) is positive or zero ...
+
+ if ($exp_sgn eq '+') {
+
+ if (!$LIB -> _is_zero($exp_lib)) {
+
+ # Multiply significand by 2 raised to the exponent.
+
+ my $p = $LIB -> _pow($LIB -> _two(), $exp_lib);
+ $sig_lib = $LIB -> _mul($sig_lib, $p);
+ $exp_lib = $LIB -> _zero();
+ }
+ }
+
+ # ... else if the exponent is negative ...
+
+ else {
+
+ # Rather than dividing the significand by 2 raised to the absolute
+ # value of the exponent, multiply the significand by 5 raised to the
+ # absolute value of the exponent and let the exponent be in base 10:
+ #
+ # a * 2^(-b) = a * 5^b * 10^(-b) = c * 10^(-b), where c = a * 5^b
+
+ my $p = $LIB -> _pow($LIB -> _new("5"), $exp_lib);
+ $sig_lib = $LIB -> _mul($sig_lib, $p);
+ }
+
+ # Adjust for the case when the conversion to decimal introduced trailing
+ # zeros in the significand.
+
+ my $n = $LIB -> _zeros($sig_lib);
+ if ($n) {
+ $n = $LIB -> _new($n);
+ $sig_lib = $LIB -> _rsft($sig_lib, $n, 10);
+ ($exp_lib, $exp_sgn) = $LIB -> _sadd($exp_lib, $exp_sgn, $n, '+');
+ }
+
+ return $sig_sgn, $sig_lib, $exp_sgn, $exp_lib;
+}
+
+# Takes any string representing a valid hexadecimal number and splits it into
+# four parts: the sign of the significand, the absolute value of the significand
+# as a libray thingy, the sign of the exponent, and the absolute value of the
+# exponent as a library thingy.
+
+sub _hex_str_to_flt_lib_parts {
+ my $class = shift;
+ my $str = shift;
+ if (my @parts = $class -> _hex_str_to_hex_str_parts($str)) {
+ return $class -> _bin_str_parts_to_flt_lib_parts(@parts, 4); # 4 bits pr. chr
+ }
+ return;
+}
+
+# Takes any string representing a valid octal number and splits it into four
+# parts: the sign of the significand, the absolute value of the significand as a
+# libray thingy, the sign of the exponent, and the absolute value of the
+# exponent as a library thingy.
+
+sub _oct_str_to_flt_lib_parts {
+ my $class = shift;
+ my $str = shift;
+ if (my @parts = $class -> _oct_str_to_oct_str_parts($str)) {
+ return $class -> _bin_str_parts_to_flt_lib_parts(@parts, 3); # 3 bits pr. chr
+ }
+ return;
+}
+
+# Takes any string representing a valid binary number and splits it into four
+# parts: the sign of the significand, the absolute value of the significand as a
+# libray thingy, the sign of the exponent, and the absolute value of the
+# exponent as a library thingy.
+
+sub _bin_str_to_flt_lib_parts {
+ my $class = shift;
+ my $str = shift;
+ if (my @parts = $class -> _bin_str_to_bin_str_parts($str)) {
+ return $class -> _bin_str_parts_to_flt_lib_parts(@parts, 1); # 1 bit pr. chr
+ }
+ return;
+}
+
+# Decimal string is split into the sign of the signficant, the absolute value of
+# the significand as library thingy, the sign of the exponent, and the absolute
+# value of the exponent as a a library thingy.
+
+sub _dec_str_to_flt_lib_parts {
+ my $class = shift;
+ my $str = shift;
+ if (my @parts = $class -> _dec_str_to_dec_str_parts($str)) {
+ return $class -> _dec_str_parts_to_flt_lib_parts(@parts);
+ }
+ return;
+}
+
+# Hexdecimal string to a string using decimal floating point notation.
+
+sub hex_str_to_dec_flt_str {
+ my $class = shift;
+ my $str = shift;
+ if (my @parts = $class -> _hex_str_to_flt_lib_parts($str)) {
+ return $class -> _flt_lib_parts_to_flt_str(@parts);
+ }
+ return;
+}
+
+# Octal string to a string using decimal floating point notation.
+
+sub oct_str_to_dec_flt_str {
+ my $class = shift;
+ my $str = shift;
+ if (my @parts = $class -> _oct_str_to_flt_lib_parts($str)) {
+ return $class -> _flt_lib_parts_to_flt_str(@parts);
+ }
+ return;
+}
+
+# Binary string to a string decimal floating point notation.
+
+sub bin_str_to_dec_flt_str {
+ my $class = shift;
+ my $str = shift;
+ if (my @parts = $class -> _bin_str_to_flt_lib_parts($str)) {
+ return $class -> _flt_lib_parts_to_flt_str(@parts);
+ }
+ return;
+}
+
+# Decimal string to a string using decimal floating point notation.
+
+sub dec_str_to_dec_flt_str {
+ my $class = shift;
+ my $str = shift;
+ if (my @parts = $class -> _dec_str_to_flt_lib_parts($str)) {
+ return $class -> _flt_lib_parts_to_flt_str(@parts);
+ }
+ return;
+}
+
+# Hexdecimal string to decimal notation (no exponent).
+
+sub hex_str_to_dec_str {
+ my $class = shift;
+ my $str = shift;
+ if (my @parts = $class -> _dec_str_to_flt_lib_parts($str)) {
+ return $class -> _flt_lib_parts_to_dec_str(@parts);
+ }
+ return;
+}
+
+# Octal string to decimal notation (no exponent).
+
+sub oct_str_to_dec_str {
+ my $class = shift;
+ my $str = shift;
+ if (my @parts = $class -> _oct_str_to_flt_lib_parts($str)) {
+ return $class -> _flt_lib_parts_to_dec_str(@parts);
+ }
+ return;
+}
+
+# Binary string to decimal notation (no exponent).
+
+sub bin_str_to_dec_str {
+ my $class = shift;
+ my $str = shift;
+ if (my @parts = $class -> _bin_str_to_flt_lib_parts($str)) {
+ return $class -> _flt_lib_parts_to_dec_str(@parts);
+ }
+ return;
+}
+
+# Decimal string to decimal notation (no exponent).
+
+sub dec_str_to_dec_str {
+ my $class = shift;
+ my $str = shift;
+ if (my @parts = $class -> _dec_str_to_flt_lib_parts($str)) {
+ return $class -> _flt_lib_parts_to_dec_str(@parts);
+ }
+ return;
+}
+
+sub _flt_lib_parts_to_flt_str {
+ my $class = shift;
+ my @parts = @_;
+ return $parts[0] . $LIB -> _str($parts[1])
+ . 'e' . $parts[2] . $LIB -> _str($parts[3]);
+}
+
+sub _flt_lib_parts_to_dec_str {
+ my $class = shift;
+ my @parts = @_;
+
+ # The number is an integer iff the exponent is non-negative.
+
+ if ($parts[2] eq '+') {
+ my $str = $parts[0]
+ . $LIB -> _str($LIB -> _lsft($parts[1], $parts[3], 10));
+ return $str;
+ }
+
+ # If it is not an integer, add a decimal point.
+
+ else {
+ my $mant = $LIB -> _str($parts[1]);
+ my $mant_len = CORE::length($mant);
+ my $expo = $LIB -> _num($parts[3]);
+ my $len_cmp = $mant_len <=> $expo;
+ if ($len_cmp <= 0) {
+ return $parts[0] . '0.' . '0' x ($expo - $mant_len) . $mant;
+ } else {
+ substr $mant, $mant_len - $expo, 0, '.';
+ return $parts[0] . $mant;
+ }
+ }
+}
+
+# Takes four arguments, the sign of the significand, the absolute value of the
+# significand as a libray thingy, the sign of the exponent, and the absolute
+# value of the exponent as a library thingy, and returns three parts: the sign
+# of the rational number, the absolute value of the numerator as a libray
+# thingy, and the absolute value of the denominator as a library thingy.
+#
+# For example, to convert data representing the value "+12e-2", then
+#
+# $sm = "+";
+# $m = $LIB -> _new("12");
+# $se = "-";
+# $e = $LIB -> _new("2");
+# ($sr, $n, $d) = $class -> _flt_lib_parts_to_rat_lib_parts($sm, $m, $se, $e);
+#
+# returns data representing the same value written as the fraction "+3/25"
+#
+# $sr = "+"
+# $n = $LIB -> _new("3");
+# $d = $LIB -> _new("12");
+
+sub _flt_lib_parts_to_rat_lib_parts {
+ my $self = shift;
+ my ($msgn, $mabs, $esgn, $eabs) = @_;
+
+ if ($esgn eq '-') { # "12e-2" -> "12/100" -> "3/25"
+ my $num_lib = $LIB -> _copy($mabs);
+ my $den_lib = $LIB -> _1ex($LIB -> _num($eabs));
+ my $gcd_lib = $LIB -> _gcd($LIB -> _copy($num_lib), $den_lib);
+ $num_lib = $LIB -> _div($LIB -> _copy($num_lib), $gcd_lib);
+ $den_lib = $LIB -> _div($den_lib, $gcd_lib);
+ return $msgn, $num_lib, $den_lib;
+ }
+
+ elsif (!$LIB -> _is_zero($eabs)) { # "12e+2" -> "1200" -> "1200/1"
+ return $msgn, $LIB -> _lsft($LIB -> _copy($mabs), $eabs, 10),
+ $LIB -> _one();
+ }
+
+ else { # "12e+0" -> "12" -> "12/1"
+ return $msgn, $mabs, $LIB -> _one();
+ }
+}
+
+# Add the function _register_callback() to Math::BigInt. It is provided for
+# backwards compabibility so that old version of Math::BigRat etc. don't
+# complain about missing it.
+
+sub _register_callback { }
+
###############################################################################
# this method returns 0 if the object can be modified, or 1 if not.
# We use a fast constant sub() here, to avoid costly calls. Subclasses
@@ -4437,7 +5828,7 @@ __END__
=head1 NAME
-Math::BigInt - Arbitrary size integer/float math package
+Math::BigInt - arbitrary size integer math package
=head1 SYNOPSIS
@@ -4448,19 +5839,15 @@ Math::BigInt - Arbitrary size integer/float math package
# pure Perl if the GMP library is not installed):
# (See also the L<MATH LIBRARY> section!)
- # warns if Math::BigInt::GMP cannot be found
+ # to warn if Math::BigInt::GMP cannot be found, use
use Math::BigInt lib => 'GMP';
- # to suppress the warning use this:
+ # to suppress the warning if Math::BigInt::GMP cannot be found, use
# use Math::BigInt try => 'GMP';
- # dies if GMP cannot be loaded:
+ # to die if Math::BigInt::GMP cannot be found, use
# use Math::BigInt only => 'GMP';
- my $str = '1234567890';
- my @values = (64, 74, 18);
- my $n = 1; my $sign = '-';
-
# Configuration methods (may be used as class methods and instance methods)
Math::BigInt->accuracy(); # get class accuracy
@@ -4483,6 +5870,7 @@ Math::BigInt - Arbitrary size integer/float math package
$x = Math::BigInt->from_oct('377'); # from octal
$x = Math::BigInt->from_bin('1101'); # from binary
$x = Math::BigInt->from_base('why', 36); # from any base
+ $x = Math::BigInt->from_base_num([1, 0], 2); # from any base
$x = Math::BigInt->bzero(); # create a +0
$x = Math::BigInt->bone(); # create a +1
$x = Math::BigInt->bone('-'); # create a -1
@@ -4491,8 +5879,10 @@ Math::BigInt - Arbitrary size integer/float math package
$x = Math::BigInt->bnan(); # create a Not-A-Number
$x = Math::BigInt->bpi(); # returns pi
- $y = $x->copy(); # make a copy (unlike $y = $x)
- $y = $x->as_int(); # return as a Math::BigInt
+ $y = $x->copy(); # make a copy (unlike $y = $x)
+ $y = $x->as_int(); # return as a Math::BigInt
+ $y = $x->as_float(); # return as a Math::BigFloat
+ $y = $x->as_rat(); # return as a Math::BigRat
# Boolean methods (these don't modify the invocand)
@@ -4559,6 +5949,9 @@ Math::BigInt - Arbitrary size integer/float math package
$x->bsqrt(); # calculate square root
$x->broot($y); # $y'th root of $x (e.g. $y == 3 => cubic root)
$x->bfac(); # factorial of $x (1*2*3*4*..$x)
+ $x->bdfac(); # double factorial of $x ($x*($x-2)*($x-4)*...)
+ $x->btfac(); # triple factorial of $x ($x*($x-3)*($x-6)*...)
+ $x->bmfac($k); # $k'th multi-factorial of $x ($x*($x-$k)*...)
$x->blsft($n); # left shift $n places in base 2
$x->blsft($n,$b); # left shift $n places in base $b
@@ -4605,6 +5998,9 @@ Math::BigInt - Arbitrary size integer/float math package
$x->nparts(); # mantissa and exponent (normalised)
$x->eparts(); # mantissa and exponent (engineering notation)
$x->dparts(); # integer and fraction part
+ $x->fparts(); # numerator and denominator
+ $x->numerator(); # numerator
+ $x->denominator(); # denominator
# Conversion methods (do not modify the invocand)
@@ -4612,13 +6008,14 @@ Math::BigInt - Arbitrary size integer/float math package
$x->bsstr(); # string in scientific notation with integers
$x->bnstr(); # string in normalized notation
$x->bestr(); # string in engineering notation
- $x->bdstr(); # string in decimal notation
+ $x->bfstr(); # string in fractional notation
$x->to_hex(); # as signed hexadecimal string
$x->to_bin(); # as signed binary string
$x->to_oct(); # as signed octal string
$x->to_bytes(); # as byte string
$x->to_base($b); # as string in any base
+ $x->to_base_num($b); # as array of integers in any base
$x->as_hex(); # as signed hexadecimal string with prefixed 0x
$x->as_bin(); # as signed binary string with prefixed 0b
@@ -4636,7 +6033,9 @@ also provided for Perl operators.
=head2 Input
Input values to these routines may be any scalar number or string that looks
-like a number and represents an integer.
+like a number and represents an integer. Anything that is accepted by Perl as a
+literal numeric constant should be accepted by this module, except that finite
+non-integers return NaN.
=over
@@ -4646,53 +6045,86 @@ Leading and trailing whitespace is ignored.
=item *
-Leading and trailing zeros are ignored.
+Leading zeros are ignored, except for floating point numbers with a binary
+exponent, in which case the number is interpreted as an octal floating point
+number. For example, "01.4p+0" gives 1.5, "00.4p+0" gives 0.5, but "0.4p+0"
+gives a NaN. And while "0377" gives 255, "0377p0" gives 255.
=item *
-If the string has a "0x" prefix, it is interpreted as a hexadecimal number.
+If the string has a "0x" or "0X" prefix, it is interpreted as a hexadecimal
+number.
=item *
-If the string has a "0b" prefix, it is interpreted as a binary number.
+If the string has a "0o" or "0O" prefix, it is interpreted as an octal number. A
+floating point literal with a "0" prefix is also interpreted as an octal number.
=item *
-One underline is allowed between any two digits.
+If the string has a "0b" or "0B" prefix, it is interpreted as a binary number.
=item *
-If the string can not be interpreted, NaN is returned.
+Underline characters are allowed in the same way as they are allowed in literal
+numerical constants.
-=back
+=item *
-Octal numbers are typically prefixed by "0", but since leading zeros are
-stripped, these methods can not automatically recognize octal numbers, so use
-the constructor from_oct() to interpret octal strings.
+If the string can not be interpreted, or does not represent a finite integer,
+NaN is returned.
+
+=item *
+
+For hexadecimal, octal, and binary floating point numbers, the exponent must be
+separated from the significand (mantissa) by the letter "p" or "P", not "e" or
+"E" as with decimal numbers.
+
+=back
Some examples of valid string input
Input string Resulting value
+
123 123
1.23e2 123
12300e-2 123
- 0xcafe 51966
- 0b1101 13
+
67_538_754 67538754
-4_5_6.7_8_9e+0_1_0 -4567890000000
+ 0x13a 314
+ 0x13ap0 314
+ 0x1.3ap+8 314
+ 0x0.00013ap+24 314
+ 0x13a000p-12 314
+
+ 0o472 314
+ 0o1.164p+8 314
+ 0o0.0001164p+20 314
+ 0o1164000p-10 314
+
+ 0472 472 Note!
+ 01.164p+8 314
+ 00.0001164p+20 314
+ 01164000p-10 314
+
+ 0b100111010 314
+ 0b1.0011101p+8 314
+ 0b0.00010011101p+12 314
+ 0b100111010000p-3 314
+
Input given as scalar numbers might lose precision. Quote your input to ensure
that no digits are lost:
$x = Math::BigInt->new( 56789012345678901234 ); # bad
$x = Math::BigInt->new('56789012345678901234'); # good
-Currently, Math::BigInt->new() defaults to 0, while Math::BigInt->new('')
-results in 'NaN'. This might change in the future, so use always the following
-explicit forms to get a zero or NaN:
+Currently, C<Math::BigInt->new()> (no input argument) and
+C<Math::BigInt->new("")> return 0. This might change in the future, so always
+use the following explicit forms to get a zero:
$zero = Math::BigInt->bzero();
- $nan = Math::BigInt->bnan();
=head2 Output
@@ -4802,18 +6234,25 @@ Set/get the rounding mode.
Set/get the class for upgrading. When a computation might result in a
non-integer, the operands are upgraded to this class. This is used for instance
-by L<bignum>. The default is C<undef>, thus the following operation creates
-a Math::BigInt, not a Math::BigFloat:
+by L<bignum>. The default is C<undef>, i.e., no upgrading.
- my $i = Math::BigInt->new(123);
- my $f = Math::BigFloat->new('123.1');
+ # with no upgrading
+ $x = Math::BigInt->new(12);
+ $y = Math::BigInt->new(5);
+ print $x / $y, "\n"; # 2 as a Math::BigInt
- print $i + $f, "\n"; # prints 246
+ # with upgrading to Math::BigFloat
+ Math::BigInt -> upgrade("Math::BigFloat");
+ print $x / $y, "\n"; # 2.4 as a Math::BigFloat
+
+ # with upgrading to Math::BigRat (after loading Math::BigRat)
+ Math::BigInt -> upgrade("Math::BigRat");
+ print $x / $y, "\n"; # 12/5 as a Math::BigRat
=item downgrade()
-Set/get the class for downgrading. The default is C<undef>. Downgrading is not
-done by Math::BigInt.
+Set/get the class for downgrading. The default is C<undef>, i.e., no
+downgrading. Downgrading is not done by Math::BigInt.
=item modify()
@@ -4871,11 +6310,18 @@ parameters are marked as RW. The following parameters are supported.
$x = Math::BigInt->new($str,$A,$P,$R);
Creates a new Math::BigInt object from a scalar or another Math::BigInt object.
-The input is accepted as decimal, hexadecimal (with leading '0x') or binary
-(with leading '0b').
+The input is accepted as decimal, hexadecimal (with leading '0x'), octal (with
+leading ('0o') or binary (with leading '0b').
See L</Input> for more info on accepted input formats.
+=item from_dec()
+
+ $x = Math::BigInt->from_dec("314159"); # input is decimal
+
+Interpret input as a decimal. It is equivalent to new(), but does not accept
+anything but strings representing finite, decimal numbers.
+
=item from_hex()
$x = Math::BigInt->from_hex("0xcafe"); # input is hexadecimal
@@ -4969,6 +6415,16 @@ are equivalent
$x = Math::BigInt->from_base("100", 2, "01"); # $x is 4
$x = Math::BigInt->from_base("|--", 2, "-|"); # $x is 4
+=item from_base_num()
+
+Returns a new Math::BigInt object given an array of values and a base. This
+method is equivalent to C<from_base()>, but works on numbers in an array rather
+than characters in a string. Unlike C<from_base()>, all input values may be
+arbitrarily large.
+
+ $x = Math::BigInt->from_base_num([1, 1, 0, 1], 2) # $x is 13
+ $x = Math::BigInt->from_base_num([3, 125, 39], 128) # $x is 65191
+
=item bzero()
$x = Math::BigInt->bzero();
@@ -5055,6 +6511,14 @@ v1.22, while C<as_int()> was introduced in v1.68.
In Math::BigInt, C<as_int()> has the same effect as C<copy()>.
+=item as_float()
+
+Return the argument as a Math::BigFloat object.
+
+=item as_rat()
+
+Return the argument as a Math::BigRat object.
+
=back
=head2 Boolean methods
@@ -5539,19 +7003,35 @@ Calculates the N'th root of C<$x>.
=item bfac()
- $x->bfac(); # factorial of $x (1*2*3*4*..*$x)
+ $x->bfac(); # factorial of $x
-Returns the factorial of C<$x>, i.e., the product of all positive integers up
-to and including C<$x>.
+Returns the factorial of C<$x>, i.e., $x*($x-1)*($x-2)*...*2*1, the product of
+all positive integers up to and including C<$x>. C<$x> must be > -1. The
+factorial of N is commonly written as N!, or N!1, when using the multifactorial
+notation.
=item bdfac()
- $x->bdfac(); # double factorial of $x (1*2*3*4*..*$x)
+ $x->bdfac(); # double factorial of $x
+
+Returns the double factorial of C<$x>, i.e., $x*($x-2)*($x-4)*... C<$x> must be
+> -2. The double factorial of N is commonly written as N!!, or N!2, when using
+the multifactorial notation.
+
+=item btfac()
-Returns the double factorial of C<$x>. If C<$x> is an even integer, returns the
-product of all positive, even integers up to and including C<$x>, i.e.,
-2*4*6*...*$x. If C<$x> is an odd integer, returns the product of all positive,
-odd integers, i.e., 1*3*5*...*$x.
+ $x->btfac(); # triple factorial of $x
+
+Returns the triple factorial of C<$x>, i.e., $x*($x-3)*($x-6)*... C<$x> must be
+> -3. The triple factorial of N is commonly written as N!!!, or N!3, when using
+the multifactorial notation.
+
+=item bmfac()
+
+ $x->bmfac($k); # $k'th multifactorial of $x
+
+Returns the multi-factorial of C<$x>, i.e., $x*($x-$k)*($x-2*$k)*... C<$x> must
+be > -$k. The multi-factorial of N is commonly written as N!K.
=item bfib()
@@ -5847,6 +7327,24 @@ Returns the integer part and the fraction part. If the fraction part can not be
represented as an integer, upgrading is performed or NaN is returned. The
output of C<dparts()> corresponds to the output from C<bdstr()>.
+=item fparts()
+
+Returns the smallest possible numerator and denominator so that the numerator
+divided by the denominator gives back the original value. For finite numbers,
+both values are integers. Mnemonic: fraction.
+
+=item numerator()
+
+Together with L</denominator()>, returns the smallest integers so that the
+numerator divided by the denominator reproduces the original value. With
+Math::BigInt, numerator() simply returns a copy of the invocand.
+
+=item denominator()
+
+Together with L</numerator()>, returns the smallest integers so that the
+numerator divided by the denominator reproduces the original value. With
+Math::BigInt, denominator() always returns either a 1 or a NaN.
+
=back
=head2 String conversion methods
@@ -5908,6 +7406,17 @@ corresponds to the output from C<dparts()>.
12000 is returned as "12000"
10000 is returned as "10000"
+=item bfstr()
+
+Returns a string representing the number using fractional notation. The output
+corresponds to the output from C<fparts()>.
+
+ 12.345 is returned as "2469/200"
+ 123.45 is returned as "2469/20"
+ 1234.5 is returned as "2469/2"
+ 12345 is returned as "12345"
+ 123450 is returned as "123450"
+
=item to_hex()
$x->to_hex();
@@ -5931,8 +7440,8 @@ Returns an octal string representation of the number. See also from_oct().
$x = Math::BigInt->new("1667327589");
$s = $x->to_bytes(); # $s = "cafe"
-Returns a byte string representation of the number using big endian byte
-order. The invocand must be a non-negative, finite integer. See also from_bytes().
+Returns a byte string representation of the number using big endian byte order.
+The invocand must be a non-negative, finite integer. See also from_bytes().
=item to_base()
@@ -5954,6 +7463,19 @@ Here are some more examples
See from_base() for information and examples.
+=item to_base_num()
+
+Converts the given number to the given base. This method is equivalent to
+C<_to_base()>, but returns numbers in an array rather than characters in a
+string. In the output, the first element is the most significant. Unlike
+C<_to_base()>, all input values may be arbitrarily large.
+
+ $x = Math::BigInt->new(13);
+ $x->to_base_num(2); # returns [1, 1, 0, 1]
+
+ $x = Math::BigInt->new(65191);
+ $x->to_base_num(128); # returns [3, 125, 39]
+
=item as_hex()
$x->as_hex();
@@ -5991,6 +7513,94 @@ needed, for instance in array index operations.
=back
+=head2 Utility methods
+
+These utility methods are made public
+
+=over
+
+=item dec_str_to_dec_flt_str()
+
+Takes a string representing any valid number using decimal notation and converts
+it to a string representing the same number using decimal floating point
+notation. The output consists of five parts joined together: the sign of the
+significand, the absolute value of the significand as the smallest possible
+integer, the letter "e", the sign of the exponent, and the absolute value of the
+exponent. If the input is invalid, nothing is returned.
+
+ $str2 = $class -> dec_str_to_dec_flt_str($str1);
+
+Some examples
+
+ Input Output
+ 31400.00e-4 +314e-2
+ -0.00012300e8 -123e+2
+ 0 +0e+0
+
+=item hex_str_to_dec_flt_str()
+
+Takes a string representing any valid number using hexadecimal notation and
+converts it to a string representing the same number using decimal floating
+point notation. The output has the same format as that of
+L</dec_str_to_dec_flt_str()>.
+
+ $str2 = $class -> hex_str_to_dec_flt_str($str1);
+
+Some examples
+
+ Input Output
+ 0xff +255e+0
+
+Some examples
+
+=item oct_str_to_dec_flt_str()
+
+Takes a string representing any valid number using octal notation and converts
+it to a string representing the same number using decimal floating point
+notation. The output has the same format as that of
+L</dec_str_to_dec_flt_str()>.
+
+ $str2 = $class -> oct_str_to_dec_flt_str($str1);
+
+=item bin_str_to_dec_flt_str()
+
+Takes a string representing any valid number using binary notation and converts
+it to a string representing the same number using decimal floating point
+notation. The output has the same format as that of
+L</dec_str_to_dec_flt_str()>.
+
+ $str2 = $class -> bin_str_to_dec_flt_str($str1);
+
+=item dec_str_to_dec_str()
+
+Takes a string representing any valid number using decimal notation and converts
+it to a string representing the same number using decimal notation. If the
+number represents an integer, the output consists of a sign and the absolute
+value. If the number represents a non-integer, the output consists of a sign,
+the integer part of the number, the decimal point ".", and the fraction part of
+the number without any trailing zeros. If the input is invalid, nothing is
+returned.
+
+=item hex_str_to_dec_str()
+
+Takes a string representing any valid number using hexadecimal notation and
+converts it to a string representing the same number using decimal notation. The
+output has the same format as that of L</dec_str_to_dec_str()>.
+
+=item oct_str_to_dec_str()
+
+Takes a string representing any valid number using octal notation and converts
+it to a string representing the same number using decimal notation. The
+output has the same format as that of L</dec_str_to_dec_str()>.
+
+=item bin_str_to_dec_str()
+
+Takes a string representing any valid number using binary notation and converts
+it to a string representing the same number using decimal notation. The output
+has the same format as that of L</dec_str_to_dec_str()>.
+
+=back
+
=head1 ACCURACY and PRECISION
Math::BigInt and Math::BigFloat have full support for accuracy and precision
@@ -6182,7 +7792,7 @@ This is how it works now:
* You can also set P globally by using Math::SomeClass->precision()
likewise.
* Globals are classwide, and not inherited by subclasses.
- * to undefine A, use Math::SomeCLass->accuracy(undef);
+ * to undefine A, use Math::SomeClass->accuracy(undef);
* to undefine P, use Math::SomeClass->precision(undef);
* Setting Math::SomeClass->accuracy() clears automatically
Math::SomeClass->precision(), and vice versa.
@@ -6217,8 +7827,8 @@ This is how it works now:
use Math::BigInt;
Math::BigInt->accuracy(2);
- Math::BigInt::SomeSubClass->accuracy(3);
- $x = Math::BigInt::SomeSubClass->new(1234);
+ Math::BigInt::SomeSubclass->accuracy(3);
+ $x = Math::BigInt::SomeSubclass->new(1234);
$x is now 1230, and not 1200. A subclass might choose to implement
this otherwise, e.g. falling back to the parent's A and P.
@@ -6385,52 +7995,80 @@ instead relying on the internal representation.
=head2 MATH LIBRARY
-Math with the numbers is done (by default) by a module called
-C<Math::BigInt::Calc>. This is equivalent to saying:
+The mathematical computations are performed by a backend library. It is not
+required to specify which backend library to use, but some backend libraries
+are much faster than the default library.
+
+=head3 The default library
+
+The default library is L<Math::BigInt::Calc>, which is implemented in pure Perl
+and hence does not require a compiler.
+
+=head3 Specifying a library
+
+The simple case
+
+ use Math::BigInt;
+
+is equivalent to saying
use Math::BigInt try => 'Calc';
-You can change this backend library by using:
+You can use a different backend library with, e.g.,
use Math::BigInt try => 'GMP';
-B<Note>: General purpose packages should not be explicit about the library to
-use; let the script author decide which is best.
+which attempts to load the L<Math::BigInt::GMP> library, and falls back to the
+default library if the specified library can't be loaded.
+
+Multiple libraries can be specified by separating them by a comma, e.g.,
+
+ use Math::BigInt try => 'GMP,Pari';
-If your script works with huge numbers and Calc is too slow for them, you can
-also for the loading of one of these libraries and if none of them can be used,
-the code dies:
+If you request a specific set of libraries and do not allow fallback to the
+default library, specify them using "only",
use Math::BigInt only => 'GMP,Pari';
-The following would first try to find Math::BigInt::Foo, then
-Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc:
+If you prefer a specific set of libraries, but want to see a warning if the
+fallback library is used, specify them using "lib",
- use Math::BigInt try => 'Foo,Math::BigInt::Bar';
+ use Math::BigInt lib => 'GMP,Pari';
+
+The following first tries to find Math::BigInt::Foo, then Math::BigInt::Bar, and
+if this also fails, reverts to Math::BigInt::Calc:
-The library that is loaded last is used. Note that this can be overwritten at
-any time by loading a different library, and numbers constructed with different
-libraries cannot be used in math operations together.
+ use Math::BigInt try => 'Foo,Math::BigInt::Bar';
-=head3 What library to use?
+=head3 Which library to use?
B<Note>: General purpose packages should not be explicit about the library to
use; let the script author decide which is best.
-L<Math::BigInt::GMP> and L<Math::BigInt::Pari> are in cases involving big
-numbers much faster than Calc, however it is slower when dealing with very
-small numbers (less than about 20 digits) and when converting very large
-numbers to decimal (for instance for printing, rounding, calculating their
-length in decimal etc).
+L<Math::BigInt::GMP>, L<Math::BigInt::Pari>, and L<Math::BigInt::GMPz> are in
+cases involving big numbers much faster than L<Math::BigInt::Calc>. However
+these libraries are slower when dealing with very small numbers (less than about
+20 digits) and when converting very large numbers to decimal (for instance for
+printing, rounding, calculating their length in decimal etc.).
So please select carefully what library you want to use.
-Different low-level libraries use different formats to store the numbers.
-However, you should B<NOT> depend on the number having a specific format
-internally.
+Different low-level libraries use different formats to store the numbers, so
+mixing them won't work. You should not depend on the number having a specific
+internal format.
See the respective math library module documentation for further details.
+=head3 Loading multiple libraries
+
+The first library that is successfully loaded is the one that will be used. Any
+further attempts at loading a different module will be ignored. This is to avoid
+the situation where module A requires math library X, and module B requires math
+library Y, causing modules A and B to be incompatible. For example,
+
+ use Math::BigInt; # loads default "Calc"
+ use Math::BigFloat only => "GMP"; # ignores "GMP"
+
=head2 SIGN
The sign is either '+', '-', 'NaN', '+inf' or '-inf'.
@@ -6452,7 +8090,7 @@ when dividing any negative number by 0.
$x = Math::BigInt->babs("-12345"); # Math::BigInt "12345"
$x = Math::BigInt->bnorm("-0.00"); # Math::BigInt "0"
$x = bigint(1) + bigint(2); # Math::BigInt "3"
- $x = bigint(1) + "2"; # ditto (auto-Math::BigIntify of "2")
+ $x = bigint(1) + "2"; # ditto ("2" becomes a Math::BigInt)
$x = bigint(1); # Math::BigInt "1"
$x = $x + 5 / 2; # Math::BigInt "3"
$x = $x ** 3; # Math::BigInt "27"
@@ -6491,49 +8129,69 @@ Examples for converting:
my $x = Math::BigInt->new('0b1'.'01' x 123);
print "bin: ",$x->as_bin()," hex:",$x->as_hex()," dec: ",$x,"\n";
-=head1 Autocreating constants
+=head1 NUMERIC LITERALS
-After C<use Math::BigInt ':constant'> all the B<integer> decimal, hexadecimal
-and binary constants in the given scope are converted to C<Math::BigInt>. This
-conversion happens at compile time.
+After C<use Math::BigInt ':constant'> all numeric literals in the given scope
+are converted to C<Math::BigInt> objects. This conversion happens at compile
+time. Every non-integer is convert to a NaN.
-In particular,
+For example,
- perl -MMath::BigInt=:constant -e 'print 2**100,"\n"'
+ perl -MMath::BigInt=:constant -le 'print 2**150'
-prints the integer value of C<2**100>. Note that without conversion of
-constants the expression 2**100 is calculated using Perl scalars.
+prints the exact value of C<2**150>. Note that without conversion of constants
+to objects the expression C<2**150> is calculated using Perl scalars, which
+leads to an inaccurate result.
-Please note that strings and floating point constants are not affected, so that
+Please note that strings are not affected, so that
use Math::BigInt qw/:constant/;
- $x = 1234567890123456789012345678901234567890
- + 123456789123456789;
- $y = '1234567890123456789012345678901234567890'
- + '123456789123456789';
+ $x = "1234567890123456789012345678901234567890"
+ + "123456789123456789";
-does not give you what you expect. You need an explicit Math::BigInt->new()
-around one of the operands. You should also quote large constants to protect
+does give you what you expect. You need an explicit Math::BigInt->new() around
+at least one of the operands. You should also quote large constants to prevent
loss of precision:
use Math::BigInt;
- $x = Math::BigInt->new('1234567889123456789123456789123456789');
+ $x = Math::BigInt->new("1234567889123456789123456789123456789");
+
+Without the quotes Perl first converts the large number to a floating point
+constant at compile time, and then converts the result to a Math::BigInt object
+at run time, which results in an inaccurate result.
+
+=head2 Hexadecimal, octal, and binary floating point literals
+
+Perl (and this module) accepts hexadecimal, octal, and binary floating point
+literals, but use them with care with Perl versions before v5.32.0, because some
+versions of Perl silently give the wrong result. Below are some examples of
+different ways to write the number decimal 314.
-Without the quotes Perl would convert the large number to a floating point
-constant at compile time and then hand the result to Math::BigInt, which
-results in an truncated result or a NaN.
+Hexadecimal floating point literals:
-This also applies to integers that look like floating point constants:
+ 0x1.3ap+8 0X1.3AP+8
+ 0x1.3ap8 0X1.3AP8
+ 0x13a0p-4 0X13A0P-4
- use Math::BigInt ':constant';
+Octal floating point literals (with "0" prefix):
- print ref(123e2),"\n";
- print ref(123.2e2),"\n";
+ 01.164p+8 01.164P+8
+ 01.164p8 01.164P8
+ 011640p-4 011640P-4
-prints nothing but newlines. Use either L<bignum> or L<Math::BigFloat> to get
-this to work.
+Octal floating point literals (with "0o" prefix) (requires v5.34.0):
+
+ 0o1.164p+8 0O1.164P+8
+ 0o1.164p8 0O1.164P8
+ 0o11640p-4 0O11640P-4
+
+Binary floating point literals:
+
+ 0b1.0011101p+8 0B1.0011101P+8
+ 0b1.0011101p8 0B1.0011101P8
+ 0b10011101000p-2 0B10011101000P-2
=head1 PERFORMANCE
@@ -6727,11 +8385,12 @@ strings:
use Test::More tests => 3;
use Math::BigInt;
- $x = Math::BigInt->new('1e56'); $y = 1e56;
+ $x = Math::BigInt->new('1e56');
+ $y = 1e56;
is($x,$y); # fails
- is($x->bsstr(),$y); # okay
+ is($x->bsstr(), $y); # okay
$y = Math::BigInt->new($y);
- is($x,$y); # okay
+ is($x, $y); # okay
Alternatively, simply use C<< <=> >> for comparisons, this always gets it
right. There is not yet a way to get a number automatically represented as a
@@ -6871,17 +8530,13 @@ You can also look for information at:
=over 4
-=item * RT: CPAN's request tracker
-
-L<https://rt.cpan.org/Public/Dist/Display.html?Name=Math-BigInt>
-
-=item * AnnoCPAN: Annotated CPAN documentation
+=item * GitHub
-L<http://annocpan.org/dist/Math-BigInt>
+L<https://github.com/pjacklam/p5-Math-BigInt>
-=item * CPAN Ratings
+=item * RT: CPAN's request tracker
-L<https://cpanratings.perl.org/dist/Math-BigInt>
+L<https://rt.cpan.org/Dist/Display.html?Name=Math-BigInt>
=item * MetaCPAN
@@ -6891,6 +8546,10 @@ L<https://metacpan.org/release/Math-BigInt>
L<http://matrix.cpantesters.org/?dist=Math-BigInt>
+=item * CPAN Ratings
+
+L<https://cpanratings.perl.org/dist/Math-BigInt>
+
=item * The Bignum mailing list
=over 4
@@ -6942,7 +8601,7 @@ Florian Ragwitz E<lt>flora@cpan.orgE<gt>, 2010.
=item *
-Peter John Acklam E<lt>pjacklam@online.noE<gt>, 2011-.
+Peter John Acklam E<lt>pjacklam@gmail.comE<gt>, 2011-.
=back
diff --git a/Master/tlpkg/tlperl/lib/Math/BigInt/Calc.pm b/Master/tlpkg/tlperl/lib/Math/BigInt/Calc.pm
index cd8f1ee44e6..a5429dce62f 100644
--- a/Master/tlpkg/tlperl/lib/Math/BigInt/Calc.pm
+++ b/Master/tlpkg/tlperl/lib/Math/BigInt/Calc.pm
@@ -7,89 +7,171 @@ use warnings;
use Carp qw< carp croak >;
use Math::BigInt::Lib;
-our $VERSION = '1.999818';
+our $VERSION = '1.999837';
+$VERSION =~ tr/_//d;
our @ISA = ('Math::BigInt::Lib');
# Package to store unsigned big integers in decimal and do math with them
-
+#
# Internally the numbers are stored in an array with at least 1 element, no
# leading zero parts (except the first) and in base 1eX where X is determined
# automatically at loading time to be the maximum possible value
-
+#
# todo:
# - fully remove funky $# stuff in div() (maybe - that code scares me...)
-# USE_MUL: due to problems on certain os (os390, posix-bc) "* 1e-5" is used
-# instead of "/ 1e5" at some places, (marked with USE_MUL). Other platforms
-# BS2000, some Crays need USE_DIV instead.
-# The BEGIN block is used to determine which of the two variants gives the
-# correct result.
-
-# Beware of things like:
-# $i = $i * $y + $car; $car = int($i / $BASE); $i = $i % $BASE;
-# This works on x86, but fails on ARM (SA1100, iPAQ) due to who knows what
-# reasons. So, use this instead (slower, but correct):
-# $i = $i * $y + $car; $car = int($i / $BASE); $i -= $BASE * $car;
-
##############################################################################
# global constants, flags and accessory
# constants for easier life
-my ($BASE, $BASE_LEN, $RBASE, $MAX_VAL);
-my ($AND_BITS, $XOR_BITS, $OR_BITS);
-my ($AND_MASK, $XOR_MASK, $OR_MASK);
-sub _base_len {
- # Set/get the BASE_LEN and assorted other, related values.
- # Used only by the testsuite, the set variant is used only by the BEGIN
- # block below:
-
- my ($class, $b, $int) = @_;
- if (defined $b) {
- no warnings "redefine";
-
- if ($] >= 5.008 && $int && $b > 7) {
- $BASE_LEN = $b;
- *_mul = \&_mul_use_div_64;
- *_div = \&_div_use_div_64;
- $BASE = int("1e" . $BASE_LEN);
- $MAX_VAL = $BASE-1;
- return $BASE_LEN unless wantarray;
- return ($BASE_LEN, $BASE, $AND_BITS, $XOR_BITS, $OR_BITS, $BASE_LEN, $MAX_VAL);
- }
+my $MAX_EXP_F; # the maximum possible base 10 exponent with "no integer"
+my $MAX_EXP_I; # the maximum possible base 10 exponent with "use integer"
+
+my $MAX_BITS; # the maximum possible number of bits for $AND_BITS etc.
+
+my $BASE_LEN; # the current base exponent in use
+my $USE_INT; # whether "use integer" is used in the computations
+
+my $BASE; # the current base, e.g., 10000 if $BASE_LEN is 5
+my $MAX_VAL; # maximum value for an element, i.e., $BASE - 1
+
+my $AND_BITS; # maximum value used in binary and, e.g., 0xffff
+my $OR_BITS; # ditto for binary or
+my $XOR_BITS; # ditto for binary xor
+
+my $AND_MASK; # $AND_BITS + 1, e.g., 0x10000 if $AND_BITS is 0xffff
+my $OR_MASK; # ditto for binary or
+my $XOR_MASK; # ditto for binary xor
+
+sub config {
+ my $self = shift;
- # find whether we can use mul or div in mul()/div()
- $BASE_LEN = $b + 1;
- my $caught = 0;
- while (--$BASE_LEN > 5) {
- $BASE = int("1e" . $BASE_LEN);
- $RBASE = abs('1e-' . $BASE_LEN); # see USE_MUL
- $caught = 0;
- $caught += 1 if (int($BASE * $RBASE) != 1); # should be 1
- $caught += 2 if (int($BASE / $BASE) != 1); # should be 1
- last if $caught != 3;
+ croak "Missing input argument" unless @_;
+
+ # Called as a getter.
+
+ if (@_ == 1) {
+ my $param = shift;
+ croak "Parameter name must be a non-empty string"
+ unless defined $param && length $param;
+ return $BASE_LEN if $param eq 'base_len';
+ return $USE_INT if $param eq 'use_int';
+ croak "Unknown parameter '$param'";
+ }
+
+ # Called as a setter.
+
+ my $opts;
+ while (@_) {
+ my $param = shift;
+ croak "Parameter name must be a non-empty string"
+ unless defined $param && length $param;
+ croak "Missing value for parameter '$param'"
+ unless @_;
+ my $value = shift;
+
+ if ($param eq 'base_len' || $param eq 'use_int') {
+ $opts -> {$param} = $value;
+ next;
}
- $BASE = int("1e" . $BASE_LEN);
- $RBASE = abs('1e-' . $BASE_LEN); # see USE_MUL
- $MAX_VAL = $BASE-1;
- # ($caught & 1) != 0 => cannot use MUL
- # ($caught & 2) != 0 => cannot use DIV
- if ($caught == 2) # 2
+ croak "Unknown parameter '$param'";
+ }
+
+ $BASE_LEN = $opts -> {base_len} if exists $opts -> {base_len};
+ $USE_INT = $opts -> {use_int} if exists $opts -> {use_int};
+ __PACKAGE__ -> _base_len($BASE_LEN, $USE_INT);
+
+ return $self;
+}
+
+sub _base_len {
+ #my $class = shift; # $class is not used
+ shift;
+
+ if (@_) { # if called as setter ...
+ my ($base_len, $use_int) = @_;
+
+ croak "The base length must be a positive integer"
+ unless defined($base_len) && $base_len == int($base_len)
+ && $base_len > 0;
+
+ if ( $use_int && ($base_len > $MAX_EXP_I) ||
+ !$use_int && ($base_len > $MAX_EXP_F))
{
- # must USE_MUL since we cannot use DIV
- *_mul = \&_mul_use_mul;
- *_div = \&_div_use_mul;
- } else # 0 or 1
+ croak "The maximum base length (exponent) is $MAX_EXP_I with",
+ " 'use integer' and $MAX_EXP_F without 'use integer'. The",
+ " requested settings, a base length of $base_len ",
+ $use_int ? "with" : "without", " 'use integer', is invalid.";
+ }
+
+ $BASE_LEN = $base_len;
+ $BASE = 0 + ("1" . ("0" x $BASE_LEN));
+ $MAX_VAL = $BASE - 1;
+ $USE_INT = $use_int ? 1 : 0;
+
{
- # can USE_DIV instead
- *_mul = \&_mul_use_div;
- *_div = \&_div_use_div;
+ no warnings "redefine";
+ if ($use_int) {
+ *_mul = \&_mul_use_int;
+ *_div = \&_div_use_int;
+ } else {
+ *_mul = \&_mul_no_int;
+ *_div = \&_div_no_int;
+ }
}
}
+
+ # Find max bits. This is the largest power of two that is both no larger
+ # than $BASE and no larger than the maximum integer (i.e., ~0). We need
+ # this limitation because _and(), _or(), and _xor() only work on one
+ # element at a time.
+
+ my $umax = ~0; # largest unsigned integer
+ my $tmp = $umax < $BASE ? $umax : $BASE;
+
+ $MAX_BITS = 0;
+ while ($tmp >>= 1) {
+ $MAX_BITS++;
+ }
+
+ # Limit to 32 bits for portability. Is this really necessary? XXX
+
+ $MAX_BITS = 32 if $MAX_BITS > 32;
+
+ # Find out how many bits _and, _or and _xor can take (old default = 16).
+ # Are these tests really necessary? Can't we just use $MAX_BITS? XXX
+
+ for ($AND_BITS = $MAX_BITS ; $AND_BITS > 0 ; $AND_BITS--) {
+ my $x = CORE::oct('0b' . '1' x $AND_BITS);
+ my $y = $x & $x;
+ my $z = 2 * (2 ** ($AND_BITS - 1)) + 1;
+ last unless $AND_BITS < $MAX_BITS && $x == $z && $y == $x;
+ }
+
+ for ($XOR_BITS = $MAX_BITS ; $XOR_BITS > 0 ; $XOR_BITS--) {
+ my $x = CORE::oct('0b' . '1' x $XOR_BITS);
+ my $y = $x ^ $x;
+ my $z = 2 * (2 ** ($XOR_BITS - 1)) + 1;
+ last unless $XOR_BITS < $MAX_BITS && $x == $z && $y == $x;
+ }
+
+ for ($OR_BITS = $MAX_BITS ; $OR_BITS > 0 ; $OR_BITS--) {
+ my $x = CORE::oct('0b' . '1' x $OR_BITS);
+ my $y = $x | $x;
+ my $z = 2 * (2 ** ($OR_BITS - 1)) + 1;
+ last unless $OR_BITS < $MAX_BITS && $x == $z && $y == $x;
+ }
+
+ $AND_MASK = __PACKAGE__->_new(( 2 ** $AND_BITS ));
+ $XOR_MASK = __PACKAGE__->_new(( 2 ** $XOR_BITS ));
+ $OR_MASK = __PACKAGE__->_new(( 2 ** $OR_BITS ));
+
return $BASE_LEN unless wantarray;
- return ($BASE_LEN, $BASE, $AND_BITS, $XOR_BITS, $OR_BITS, $BASE_LEN, $MAX_VAL);
+ return ($BASE_LEN, $BASE, $AND_BITS, $XOR_BITS, $OR_BITS, $BASE_LEN, $MAX_VAL,
+ $MAX_BITS, $MAX_EXP_F, $MAX_EXP_I, $USE_INT);
}
sub _new {
@@ -116,89 +198,98 @@ sub _new {
}
BEGIN {
- # from Daniel Pfeiffer: determine largest group of digits that is precisely
- # multipliable with itself plus carry
- # Test now changed to expect the proper pattern, not a result off by 1 or 2
- my ($e, $num) = 3; # lowest value we will use is 3+1-1 = 3
- do {
- $num = '9' x ++$e;
- $num *= $num + 1;
- } while $num =~ /9{$e}0{$e}/; # must be a certain pattern
- $e--; # last test failed, so retract one step
- # the limits below brush the problems with the test above under the rug:
- # the test should be able to find the proper $e automatically
- $e = 5 if $^O =~ /^uts/; # UTS get's some special treatment
- $e = 5 if $^O =~ /^unicos/; # unicos is also problematic (6 seems to work
- # there, but we play safe)
-
- my $int = 0;
- if ($e > 7) {
- use integer;
- my $e1 = 7;
- $num = 7;
- do {
- $num = ('9' x ++$e1) + 0;
- $num *= $num + 1;
- } while ("$num" =~ /9{$e1}0{$e1}/); # must be a certain pattern
- $e1--; # last test failed, so retract one step
- if ($e1 > 7) {
- $int = 1;
- $e = $e1;
- }
- }
- __PACKAGE__ -> _base_len($e, $int); # set and store
+ # Compute $MAX_EXP_F, the maximum usable base 10 exponent.
- use integer;
- # find out how many bits _and, _or and _xor can take (old default = 16)
- # I don't think anybody has yet 128 bit scalars, so let's play safe.
- local $^W = 0; # don't warn about 'nonportable number'
- $AND_BITS = 15;
- $XOR_BITS = 15;
- $OR_BITS = 15;
-
- # find max bits, we will not go higher than numberofbits that fit into $BASE
- # to make _and etc simpler (and faster for smaller, slower for large numbers)
- my $max = 16;
- while (2 ** $max < $BASE) {
- $max++;
- }
- {
- no integer;
- $max = 16 if $] < 5.006; # older Perls might not take >16 too well
- }
- my ($x, $y, $z);
-
- do {
- $AND_BITS++;
- $x = CORE::oct('0b' . '1' x $AND_BITS);
- $y = $x & $x;
- $z = (2 ** $AND_BITS) - 1;
- } while ($AND_BITS < $max && $x == $z && $y == $x);
- $AND_BITS --; # retreat one step
-
- do {
- $XOR_BITS++;
- $x = CORE::oct('0b' . '1' x $XOR_BITS);
- $y = $x ^ 0;
- $z = (2 ** $XOR_BITS) - 1;
- } while ($XOR_BITS < $max && $x == $z && $y == $x);
- $XOR_BITS --; # retreat one step
-
- do {
- $OR_BITS++;
- $x = CORE::oct('0b' . '1' x $OR_BITS);
- $y = $x | $x;
- $z = (2 ** $OR_BITS) - 1;
- } while ($OR_BITS < $max && $x == $z && $y == $x);
- $OR_BITS--; # retreat one step
-
- $AND_MASK = __PACKAGE__->_new(( 2 ** $AND_BITS ));
- $XOR_MASK = __PACKAGE__->_new(( 2 ** $XOR_BITS ));
- $OR_MASK = __PACKAGE__->_new(( 2 ** $OR_BITS ));
-
- # We can compute the approximate length no faster than the real length:
- *_alen = \&_len;
+ # The largest element in base 10**$BASE_LEN is 10**$BASE_LEN-1. For instance,
+ # with $BASE_LEN = 5, the largest element is 99_999, and the largest carry is
+ #
+ # int( 99_999 * 99_999 / 100_000 ) = 99_998
+ #
+ # so make sure that 99_999 * 99_999 + 99_998 is within the range of integers
+ # that can be represented accuratly.
+ #
+ # Note that on some systems with quadmath support, the following is within
+ # the range of numbers that can be represented exactly, but it still gives
+ # the incorrect value $r = 2 (even though POSIX::fmod($x, $y) gives the
+ # correct value of 1:
+ #
+ # $x = 99999999999999999;
+ # $y = 100000000000000000;
+ # $r = $x * $x % $y; # should be 1
+ #
+ # so also check for this.
+
+ for ($MAX_EXP_F = 1 ; ; $MAX_EXP_F++) { # when $MAX_EXP_F = 5
+ my $MAX_EXP_FM1 = $MAX_EXP_F - 1; # = 4
+ my $bs = "1" . ("0" x $MAX_EXP_F); # = "100000"
+ my $xs = "9" x $MAX_EXP_F; # = "99999"
+ my $cs = ("9" x $MAX_EXP_FM1) . "8"; # = "99998"
+ my $ys = $cs . ("0" x $MAX_EXP_FM1) . "1"; # = "9999800001"
+
+ # Compute and check the product.
+ my $yn = $xs * $xs; # = 9999800001
+ last if $yn != $ys;
+
+ # Compute and check the remainder.
+ my $rn = $yn % $bs; # = 1
+ last if $rn != 1;
+
+ # Compute and check the carry. The division here is exact.
+ my $cn = ($yn - $rn) / $bs; # = 99998
+ last if $cn != $cs;
+
+ # Compute and check product plus carry.
+ my $zs = $cs . ("9" x $MAX_EXP_F); # = "9999899999"
+ my $zn = $yn + $cn; # = 99998999999
+ last if $zn != $zs;
+ last if $zn - ($zn - 1) != 1;
+ }
+ $MAX_EXP_F--; # last test failed, so retract one step
+
+ # Compute $MAX_EXP_I, the maximum usable base 10 exponent within the range
+ # of what is available with "use integer". On older versions of Perl,
+ # integers are converted to floating point numbers, even though they are
+ # within the range of what can be represented as integers. For example, on
+ # some 64 bit Perls, 999999999 * 999999999 becomes 999999998000000000, not
+ # 999999998000000001, even though the latter is less than the maximum value
+ # for a 64 bit integer, 18446744073709551615.
+
+ my $umax = ~0; # largest unsigned integer
+ for ($MAX_EXP_I = int(0.5 * log($umax) / log(10));
+ $MAX_EXP_I > 0;
+ $MAX_EXP_I--)
+ { # when $MAX_EXP_I = 5
+ my $MAX_EXP_IM1 = $MAX_EXP_I - 1; # = 4
+ my $bs = "1" . ("0" x $MAX_EXP_I); # = "100000"
+ my $xs = "9" x $MAX_EXP_I; # = "99999"
+ my $cs = ("9" x $MAX_EXP_IM1) . "8"; # = "99998"
+ my $ys = $cs . ("0" x $MAX_EXP_IM1) . "1"; # = "9999800001"
+
+ # Compute and check the product.
+ my $yn = $xs * $xs; # = 9999800001
+ next if $yn != $ys;
+
+ # Compute and check the remainder.
+ my $rn = $yn % $bs; # = 1
+ next if $rn != 1;
+
+ # Compute and check the carry. The division here is exact.
+ my $cn = ($yn - $rn) / $bs; # = 99998
+ next if $cn != $cs;
+
+ # Compute and check product plus carry.
+ my $zs = $cs . ("9" x $MAX_EXP_I); # = "9999899999"
+ my $zn = $yn + $cn; # = 99998999999
+ next if $zn != $zs;
+ next if $zn - ($zn - 1) != 1;
+ last;
+ }
+
+ ($BASE_LEN, $USE_INT) = $MAX_EXP_F > $MAX_EXP_I
+ ? ($MAX_EXP_F, 0) : ($MAX_EXP_I, 1);
+
+ __PACKAGE__ -> _base_len($BASE_LEN, $USE_INT);
}
###############################################################################
@@ -224,18 +315,20 @@ sub _two {
sub _ten {
# create a 10
my $class = shift;
- bless [ 10 ], $class;
+ my $self = $BASE_LEN == 1 ? [ 0, 1 ] : [ 10 ];
+ bless $self, $class;
}
sub _1ex {
# create a 1Ex
my $class = shift;
- my $rem = $_[0] % $BASE_LEN; # remainder
- my $parts = $_[0] / $BASE_LEN; # parts
+ my $rem = $_[0] % $BASE_LEN; # remainder
+ my $div = ($_[0] - $rem) / $BASE_LEN; # parts
- # 000000, 000000, 100
- bless [ (0) x $parts, '1' . ('0' x $rem) ], $class;
+ # With a $BASE_LEN of 6, 1e14 becomes
+ # [ 000000, 000000, 100 ] -> [ 0, 0, 100 ]
+ bless [ (0) x $div, 0 + ("1" . ("0" x $rem)) ], $class;
}
sub _copy {
@@ -244,8 +337,33 @@ sub _copy {
return bless [ @{ $_[0] } ], $class;
}
-# catch and throw away
-sub import { }
+sub import {
+ my $self = shift;
+
+ my $opts;
+ my ($base_len, $use_int);
+ while (@_) {
+ my $param = shift;
+ croak "Parameter name must be a non-empty string"
+ unless defined $param && length $param;
+ croak "Missing value for parameter '$param'"
+ unless @_;
+ my $value = shift;
+
+ if ($param eq 'base_len' || $param eq 'use_int') {
+ $opts -> {$param} = $value;
+ next;
+ }
+
+ croak "Unknown parameter '$param'";
+ }
+
+ $base_len = exists $opts -> {base_len} ? $opts -> {base_len} : $BASE_LEN;
+ $use_int = exists $opts -> {use_int} ? $opts -> {use_int} : $USE_INT;
+ __PACKAGE__ -> _base_len($base_len, $use_int);
+
+ return $self;
+}
##############################################################################
# convert back to string and number
@@ -319,10 +437,10 @@ sub _add {
# For each in Y, add Y to X and carry. If after that, something is left in
# X, foreach in X add carry to X and then return X, carry. Trades one
# "$j++" for having to shift arrays.
- my $i;
+
my $car = 0;
my $j = 0;
- for $i (@$y) {
+ for my $i (@$y) {
$x->[$j] -= $BASE if $car = (($x->[$j] += $i + $car) >= $BASE) ? 1 : 0;
$j++;
}
@@ -368,10 +486,9 @@ sub _sub {
my ($c, $sx, $sy, $s) = @_;
my $car = 0;
- my $i;
my $j = 0;
if (!$s) {
- for $i (@$sx) {
+ for my $i (@$sx) {
last unless defined $sy->[$j] || $car;
$i += $BASE if $car = (($i -= ($sy->[$j] || 0) + $car) < 0);
$j++;
@@ -379,7 +496,7 @@ sub _sub {
# might leave leading zeros, so fix that
return __strip_zeros($sx);
}
- for $i (@$sx) {
+ for my $i (@$sx) {
# We can't do an early out if $x < $y, since we need to copy the high
# chunks from $y. Found by Bob Mathews.
#last unless defined $sy->[$j] || $car;
@@ -391,76 +508,12 @@ sub _sub {
__strip_zeros($sy);
}
-sub _mul_use_mul {
- # (ref to int_num_array, ref to int_num_array)
- # multiply two numbers in internal representation
- # modifies first arg, second need not be different from first
- my ($c, $xv, $yv) = @_;
-
- if (@$yv == 1) {
- # shortcut for two very short numbers (improved by Nathan Zook) works
- # also if xv and yv are the same reference, and handles also $x == 0
- if (@$xv == 1) {
- if (($xv->[0] *= $yv->[0]) >= $BASE) {
- my $rem = $xv->[0] % $BASE;
- $xv->[1] = ($xv->[0] - $rem) * $RBASE;
- $xv->[0] = $rem;
- }
- return $xv;
- }
- # $x * 0 => 0
- if ($yv->[0] == 0) {
- @$xv = (0);
- return $xv;
- }
-
- # multiply a large number a by a single element one, so speed up
- my $y = $yv->[0];
- my $car = 0;
- my $rem;
- foreach my $i (@$xv) {
- $i = $i * $y + $car;
- $rem = $i % $BASE;
- $car = ($i - $rem) * $RBASE;
- $i = $rem;
- }
- push @$xv, $car if $car != 0;
- return $xv;
- }
-
- # shortcut for result $x == 0 => result = 0
- return $xv if @$xv == 1 && $xv->[0] == 0;
-
- # since multiplying $x with $x fails, make copy in this case
- $yv = $c->_copy($xv) if $xv == $yv; # same references?
-
- my @prod = ();
- my ($prod, $rem, $car, $cty, $xi, $yi);
- for $xi (@$xv) {
- $car = 0;
- $cty = 0;
- # looping through this if $xi == 0 is silly - so optimize it away!
- $xi = (shift(@prod) || 0), next if $xi == 0;
- for $yi (@$yv) {
- $prod = $xi * $yi + ($prod[$cty] || 0) + $car;
- $rem = $prod % $BASE;
- $car = int(($prod - $rem) * $RBASE);
- $prod[$cty++] = $rem;
- }
- $prod[$cty] += $car if $car; # need really to check for 0?
- $xi = shift(@prod) || 0; # || 0 makes v5.005_3 happy
- }
- push @$xv, @prod;
- $xv;
-}
-
-sub _mul_use_div_64 {
+sub _mul_use_int {
# (ref to int_num_array, ref to int_num_array)
# multiply two numbers in internal representation
# modifies first arg, second need not be different from first
# works for 64 bit integer with "use integer"
my ($c, $xv, $yv) = @_;
-
use integer;
if (@$yv == 1) {
@@ -498,13 +551,13 @@ sub _mul_use_div_64 {
$yv = $c->_copy($xv) if $xv == $yv; # same references?
my @prod = ();
- my ($prod, $car, $cty, $xi, $yi);
- for $xi (@$xv) {
+ my ($prod, $car, $cty);
+ for my $xi (@$xv) {
$car = 0;
$cty = 0;
# looping through this if $xi == 0 is silly - so optimize it away!
$xi = (shift(@prod) || 0), next if $xi == 0;
- for $yi (@$yv) {
+ for my $yi (@$yv) {
$prod = $xi * $yi + ($prod[$cty] || 0) + $car;
$prod[$cty++] = $prod - ($car = $prod / $BASE) * $BASE;
}
@@ -515,7 +568,7 @@ sub _mul_use_div_64 {
$xv;
}
-sub _mul_use_div {
+sub _mul_no_int {
# (ref to int_num_array, ref to int_num_array)
# multiply two numbers in internal representation
# modifies first arg, second need not be different from first
@@ -559,13 +612,13 @@ sub _mul_use_div {
$yv = $c->_copy($xv) if $xv == $yv; # same references?
my @prod = ();
- my ($prod, $rem, $car, $cty, $xi, $yi);
- for $xi (@$xv) {
+ my ($prod, $rem, $car, $cty);
+ for my $xi (@$xv) {
$car = 0;
$cty = 0;
# looping through this if $xi == 0 is silly - so optimize it away!
$xi = (shift(@prod) || 0), next if $xi == 0;
- for $yi (@$yv) {
+ for my $yi (@$yv) {
$prod = $xi * $yi + ($prod[$cty] || 0) + $car;
$rem = $prod % $BASE;
$car = ($prod - $rem) / $BASE;
@@ -578,166 +631,7 @@ sub _mul_use_div {
$xv;
}
-sub _div_use_mul {
- # ref to array, ref to array, modify first array and return remainder if
- # in list context
-
- my ($c, $x, $yorg) = @_;
-
- # the general div algorithm here is about O(N*N) and thus quite slow, so
- # we first check for some special cases and use shortcuts to handle them.
-
- # if both numbers have only one element:
- if (@$x == 1 && @$yorg == 1) {
- # shortcut, $yorg and $x are two small numbers
- my $rem = [ $x->[0] % $yorg->[0] ];
- bless $rem, $c;
- $x->[0] = ($x->[0] - $rem->[0]) / $yorg->[0];
- return ($x, $rem) if wantarray;
- return $x;
- }
-
- # if x has more than one, but y has only one element:
- if (@$yorg == 1) {
- my $rem;
- $rem = $c->_mod($c->_copy($x), $yorg) if wantarray;
-
- # shortcut, $y is < $BASE
- my $j = @$x;
- my $r = 0;
- my $y = $yorg->[0];
- my $b;
- while ($j-- > 0) {
- $b = $r * $BASE + $x->[$j];
- $r = $b % $y;
- $x->[$j] = ($b - $r) / $y;
- }
- pop(@$x) if @$x > 1 && $x->[-1] == 0; # remove any trailing zero
- return ($x, $rem) if wantarray;
- return $x;
- }
-
- # now x and y have more than one element
-
- # check whether y has more elements than x, if so, the result is 0
- if (@$yorg > @$x) {
- my $rem;
- $rem = $c->_copy($x) if wantarray; # make copy
- @$x = 0; # set to 0
- return ($x, $rem) if wantarray; # including remainder?
- return $x; # only x, which is [0] now
- }
-
- # check whether the numbers have the same number of elements, in that case
- # the result will fit into one element and can be computed efficiently
- if (@$yorg == @$x) {
- my $cmp = 0;
- for (my $j = $#$x ; $j >= 0 ; --$j) {
- last if $cmp = $x->[$j] - $yorg->[$j];
- }
-
- if ($cmp == 0) { # x = y
- @$x = 1;
- return $x, $c->_zero() if wantarray;
- return $x;
- }
-
- if ($cmp < 0) { # x < y
- if (wantarray) {
- my $rem = $c->_copy($x);
- @$x = 0;
- return $x, $rem;
- }
- @$x = 0;
- return $x;
- }
- }
-
- # all other cases:
-
- my $y = $c->_copy($yorg); # always make copy to preserve
-
- my $tmp = $y->[-1] + 1;
- my $rem = $BASE % $tmp;
- my $dd = ($BASE - $rem) / $tmp;
- if ($dd != 1) {
- my $car = 0;
- for my $xi (@$x) {
- $xi = $xi * $dd + $car;
- $xi -= ($car = int($xi * $RBASE)) * $BASE; # see USE_MUL
- }
- push(@$x, $car);
- $car = 0;
- for my $yi (@$y) {
- $yi = $yi * $dd + $car;
- $yi -= ($car = int($yi * $RBASE)) * $BASE; # see USE_MUL
- }
- } else {
- push(@$x, 0);
- }
-
- # @q will accumulate the final result, $q contains the current computed
- # part of the final result
-
- my @q = ();
- my ($v2, $v1) = @$y[-2, -1];
- $v2 = 0 unless $v2;
- while ($#$x > $#$y) {
- my ($u2, $u1, $u0) = @$x[-3 .. -1];
- $u2 = 0 unless $u2;
- #warn "oups v1 is 0, u0: $u0 $y->[-2] $y->[-1] l ",scalar @$y,"\n"
- # if $v1 == 0;
- my $tmp = $u0 * $BASE + $u1;
- my $rem = $tmp % $v1;
- my $q = $u0 == $v1 ? $MAX_VAL : (($tmp - $rem) / $v1);
- --$q while $v2 * $q > ($u0 * $BASE + $u1 - $q * $v1) * $BASE + $u2;
- if ($q) {
- my $prd;
- my ($car, $bar) = (0, 0);
- for (my $yi = 0, my $xi = $#$x - $#$y - 1; $yi <= $#$y; ++$yi, ++$xi) {
- $prd = $q * $y->[$yi] + $car;
- $prd -= ($car = int($prd * $RBASE)) * $BASE; # see USE_MUL
- $x->[$xi] += $BASE if $bar = (($x->[$xi] -= $prd + $bar) < 0);
- }
- if ($x->[-1] < $car + $bar) {
- $car = 0;
- --$q;
- for (my $yi = 0, my $xi = $#$x - $#$y - 1; $yi <= $#$y; ++$yi, ++$xi) {
- $x->[$xi] -= $BASE
- if $car = (($x->[$xi] += $y->[$yi] + $car) >= $BASE);
- }
- }
- }
- pop(@$x);
- unshift(@q, $q);
- }
-
- if (wantarray) {
- my $d = bless [], $c;
- if ($dd != 1) {
- my $car = 0;
- my ($prd, $rem);
- for my $xi (reverse @$x) {
- $prd = $car * $BASE + $xi;
- $rem = $prd % $dd;
- $tmp = ($prd - $rem) / $dd;
- $car = $rem;
- unshift @$d, $tmp;
- }
- } else {
- @$d = @$x;
- }
- @$x = @q;
- __strip_zeros($x);
- __strip_zeros($d);
- return ($x, $d);
- }
- @$x = @q;
- __strip_zeros($x);
- $x;
-}
-
-sub _div_use_div_64 {
+sub _div_use_int {
# ref to array, ref to array, modify first array and return remainder if
# in list context
@@ -900,7 +794,7 @@ sub _div_use_div_64 {
$x;
}
-sub _div_use_div {
+sub _div_no_int {
# ref to array, ref to array, modify first array and return remainder if
# in list context
@@ -1157,12 +1051,12 @@ sub _is_zero {
sub _is_even {
# return true if arg is even
- $_[1]->[0] & 1 ? 0 : 1;
+ $_[1]->[0] % 2 ? 0 : 1;
}
sub _is_odd {
# return true if arg is odd
- $_[1]->[0] & 1 ? 1 : 0;
+ $_[1]->[0] % 2 ? 1 : 0;
}
sub _is_one {
@@ -1177,7 +1071,11 @@ sub _is_two {
sub _is_ten {
# return true if arg is ten
- @{$_[1]} == 1 && $_[1]->[0] == 10 ? 1 : 0;
+ if ($BASE_LEN == 1) {
+ @{$_[1]} == 2 && $_[1]->[0] == 0 && $_[1]->[1] == 1 ? 1 : 0;
+ } else {
+ @{$_[1]} == 1 && $_[1]->[0] == 10 ? 1 : 0;
+ }
}
sub __strip_zeros {
@@ -1316,17 +1214,21 @@ sub _mod {
# shifts
sub _rsft {
- my ($c, $x, $y, $n) = @_;
+ my ($c, $x, $n, $b) = @_;
+ return $x if $c->_is_zero($x) || $c->_is_zero($n);
+
+ # For backwards compatibility, allow the base $b to be a scalar.
+
+ $b = $c->_new($b) unless ref $b;
- if ($n != 10) {
- $n = $c->_new($n);
- return scalar $c->_div($x, $c->_pow($n, $y));
+ if ($c -> _acmp($b, $c -> _ten())) {
+ return scalar $c->_div($x, $c->_pow($c->_copy($b), $n));
}
# shortcut (faster) for shifting by 10)
# multiples of $BASE_LEN
my $dst = 0; # destination
- my $src = $c->_num($y); # as normal int
+ my $src = $c->_num($n); # as normal int
my $xlen = (@$x - 1) * $BASE_LEN + length(int($x->[-1]));
if ($src >= $xlen or ($src == $xlen and !defined $x->[1])) {
# 12345 67890 shifted right by more than 10 digits => 0
@@ -1519,27 +1421,50 @@ sub _nok {
return $n;
}
-my @factorials = (
- 1,
- 1,
- 2,
- 2*3,
- 2*3*4,
- 2*3*4*5,
- 2*3*4*5*6,
- 2*3*4*5*6*7,
- );
-
sub _fac {
# factorial of $x
# ref to array, return ref to array
my ($c, $cx) = @_;
- if ((@$cx == 1) && ($cx->[0] <= 7)) {
- $cx->[0] = $factorials[$cx->[0]]; # 0 => 1, 1 => 1, 2 => 2 etc.
+ # We cache the smallest values. Don't assume that a single element has a
+ # value larger than 9 or else it won't work with a $BASE_LEN of 1.
+
+ if (@$cx == 1) {
+ my @factorials =
+ (
+ '1',
+ '1',
+ '2',
+ '6',
+ '24',
+ '120',
+ '720',
+ '5040',
+ '40320',
+ '362880',
+ );
+ if ($cx->[0] <= $#factorials) {
+ my $tmp = $c -> _new($factorials[ $cx->[0] ]);
+ @$cx = @$tmp;
+ return $cx;
+ }
+ }
+
+ # The old code further below doesn't work for small values of $BASE_LEN.
+ # Alas, I have not been able to (or taken the time to) decipher it, so for
+ # the case when $BASE_LEN is small, we call the parent class. This code
+ # works in for every value of $x and $BASE_LEN. We could use this code for
+ # all cases, but it is a little slower than the code further below, so at
+ # least for now we keep the code below.
+
+ if ($BASE_LEN <= 2) {
+ my $tmp = $c -> SUPER::_fac($cx);
+ @$cx = @$tmp;
return $cx;
}
+ # This code does not work for small values of $BASE_LEN.
+
if ((@$cx == 1) && # we do this only if $x >= 12 and $x <= 7000
($cx->[0] >= 12 && $cx->[0] < 7000)) {
@@ -1759,9 +1684,9 @@ sub _log_int {
$log += (@$base - 1) * $BASE_LEN;
# calculate now a guess based on the values obtained above:
- my $res = int($len / $log);
+ my $res = $c->_new(int($len / $log));
- @$x = $res;
+ @$x = @$res;
my $trial = $c->_pow($c->_copy($base), $x);
my $acmp = $c->_acmp($trial, $x_org);
@@ -1795,9 +1720,8 @@ my $steps = 0;
sub steps { $steps };
sub _sqrt {
- # square-root of $x in place
- # Compute a guess of the result (by rule of thumb), then improve it via
- # Newton's method.
+ # square-root of $x in-place
+
my ($c, $x) = @_;
if (@$x == 1) {
@@ -1805,68 +1729,65 @@ sub _sqrt {
$x->[0] = int(sqrt($x->[0]));
return $x;
}
- my $y = $c->_copy($x);
- # hopefully _len/2 is < $BASE, the -1 is to always undershot the guess
- # since our guess will "grow"
- my $l = int(($c->_len($x)-1) / 2);
-
- my $lastelem = $x->[-1]; # for guess
- my $elems = @$x - 1;
- # not enough digits, but could have more?
- if ((length($lastelem) <= 3) && ($elems > 1)) {
- # right-align with zero pad
- my $len = length($lastelem) & 1;
- print "$lastelem => " if DEBUG;
- $lastelem .= substr($x->[-2] . '0' x $BASE_LEN, 0, $BASE_LEN);
- # former odd => make odd again, or former even to even again
- $lastelem = $lastelem / 10 if (length($lastelem) & 1) != $len;
- print "$lastelem\n" if DEBUG;
- }
-
- # construct $x (instead of $c->_lsft($x, $l, 10)
- my $r = $l % $BASE_LEN; # 10000 00000 00000 00000 ($BASE_LEN=5)
- $l = int($l / $BASE_LEN);
- print "l = $l " if DEBUG;
-
- splice @$x, $l; # keep ref($x), but modify it
-
- # we make the first part of the guess not '1000...0' but int(sqrt($lastelem))
- # that gives us:
- # 14400 00000 => sqrt(14400) => guess first digits to be 120
- # 144000 000000 => sqrt(144000) => guess 379
-
- print "$lastelem (elems $elems) => " if DEBUG;
- $lastelem = $lastelem / 10 if ($elems & 1 == 1); # odd or even?
- my $g = sqrt($lastelem);
- $g =~ s/\.//; # 2.345 => 2345
- $r -= 1 if $elems & 1 == 0; # 70 => 7
-
- # padd with zeros if result is too short
- $x->[$l--] = int(substr($g . '0' x $r, 0, $r+1));
- print "now ", $x->[-1] if DEBUG;
- print " would have been ", int('1' . '0' x $r), "\n" if DEBUG;
-
- # If @$x > 1, we could compute the second elem of the guess, too, to create
- # an even better guess. Not implemented yet. Does it improve performance?
- $x->[$l--] = 0 while ($l >= 0); # all other digits of guess are zero
-
- print "start x= ", $c->_str($x), "\n" if DEBUG;
- my $two = $c->_two();
- my $last = $c->_zero();
- my $lastlast = $c->_zero();
- $steps = 0 if DEBUG;
- while ($c->_acmp($last, $x) != 0 && $c->_acmp($lastlast, $x) != 0) {
- $steps++ if DEBUG;
- $lastlast = $c->_copy($last);
- $last = $c->_copy($x);
- $c->_add($x, $c->_div($c->_copy($y), $x));
- $c->_div($x, $two );
- print " x= ", $c->_str($x), "\n" if DEBUG;
- }
- print "\nsteps in sqrt: $steps, " if DEBUG;
- $c->_dec($x) if $c->_acmp($y, $c->_mul($c->_copy($x), $x)) < 0; # overshot?
- print " final ", $x->[-1], "\n" if DEBUG;
- $x;
+
+ # Create an initial guess for the square root.
+
+ my $s;
+ if (@$x % 2) {
+ $s = [ (0) x ((@$x - 1) / 2), int(sqrt($x->[-1])) ];
+ } else {
+ $s = [ (0) x ((@$x - 2) / 2), int(sqrt($x->[-2] + $x->[-1] * $BASE)) ];
+ }
+
+ # Newton's method for the square root of y:
+ #
+ # x(n) * x(n) - y
+ # x(n+1) = x(n) - -----------------
+ # 2 * x(n)
+
+ my $cmp;
+ while (1) {
+ my $sq = $c -> _mul($c -> _copy($s), $s);
+ $cmp = $c -> _acmp($sq, $x);
+
+ # If x(n)*x(n) > y, compute
+ #
+ # x(n) * x(n) - y
+ # x(n+1) = x(n) - -----------------
+ # 2 * x(n)
+
+ if ($cmp > 0) {
+ my $num = $c -> _sub($c -> _copy($sq), $x);
+ my $den = $c -> _mul($c -> _two(), $s);
+ my $delta = $c -> _div($num, $den);
+ last if $c -> _is_zero($delta);
+ $s = $c -> _sub($s, $delta);
+ }
+
+ # If x(n)*x(n) < y, compute
+ #
+ # y - x(n) * x(n)
+ # x(n+1) = x(n) + -----------------
+ # 2 * x(n)
+
+ elsif ($cmp < 0) {
+ my $num = $c -> _sub($c -> _copy($x), $sq);
+ my $den = $c -> _mul($c -> _two(), $s);
+ my $delta = $c -> _div($num, $den);
+ last if $c -> _is_zero($delta);
+ $s = $c -> _add($s, $delta);
+ }
+
+ # If x(n)*x(n) = y, we have the exact result.
+
+ else {
+ last;
+ }
+ }
+
+ $s = $c -> _dec($s) if $cmp > 0; # never overshoot
+ @$x = @$s;
+ return $x;
}
sub _root {
@@ -1876,14 +1797,18 @@ sub _root {
# Small numbers.
- if (@$x == 1 && @$n == 1) {
- # Result can be computed directly. Adjust initial result for numerical
- # errors, e.g., int(1000**(1/3)) is 2, not 3.
- my $y = int($x->[0] ** (1 / $n->[0]));
- my $yp1 = $y + 1;
- $y = $yp1 if $yp1 ** $n->[0] == $x->[0];
- $x->[0] = $y;
- return $x;
+ if (@$x == 1) {
+ return $x if $x -> [0] == 0 || $x -> [0] == 1;
+
+ if (@$n == 1) {
+ # Result can be computed directly. Adjust initial result for
+ # numerical errors, e.g., int(1000**(1/3)) is 2, not 3.
+ my $y = int($x->[0] ** (1 / $n->[0]));
+ my $yp1 = $y + 1;
+ $y = $yp1 if $yp1 ** $n->[0] == $x->[0];
+ $x->[0] = $y;
+ return $x;
+ }
}
# If x <= n, the result is always (truncated to) 1.
@@ -1891,7 +1816,7 @@ sub _root {
if ((@$x > 1 || $x -> [0] > 0) && # if x is non-zero ...
$c -> _acmp($x, $n) <= 0) # ... and x <= n
{
- my $one = $x -> _one();
+ my $one = $c -> _one();
@$x = @$one;
return $x;
}
@@ -2173,7 +2098,6 @@ sub _or {
# $b = 1; $xrr = 0; foreach (@$xr) { $xrr += $_ * $b; $b *= $BASE; }
# $b = 1; $yrr = 0; foreach (@$yr) { $yrr += $_ * $b; $b *= $BASE; }
# $c->_add($x, $c->_mul(_new( $c, ($xrr | $yrr) ), $m) );
-
$c->_add($z, $c->_mul([ 0 + $xr->[0] | 0 + $yr->[0] ], $m));
$c->_mul($m, $mask);
}
@@ -2191,94 +2115,70 @@ sub _as_hex {
# convert a decimal number to hex (ref to array, return ref to string)
my ($c, $x) = @_;
- # fits into one element (handle also 0x0 case)
- return sprintf("0x%x", $x->[0]) if @$x == 1;
+ return "0x0" if @$x == 1 && $x->[0] == 0;
my $x1 = $c->_copy($x);
+ my $x10000 = [ 0x10000 ];
+
my $es = '';
- my ($xr, $h, $x10000);
- if ($] >= 5.006) {
- $x10000 = [ 0x10000 ];
- $h = 'h4';
- } else {
- $x10000 = [ 0x1000 ];
- $h = 'h3';
- }
- while (@$x1 != 1 || $x1->[0] != 0) # _is_zero()
- {
+ my $xr;
+ until (@$x1 == 1 && $x1->[0] == 0) { # _is_zero()
($x1, $xr) = $c->_div($x1, $x10000);
- $es .= unpack($h, pack('V', $xr->[0]));
+ $es = sprintf('%04x', $xr->[0]) . $es;
}
- $es = reverse $es;
- $es =~ s/^[0]+//; # strip leading zeros
- '0x' . $es; # return result prepended with 0x
+ #$es = reverse $es;
+ $es =~ s/^0*/0x/;
+ return $es;
}
sub _as_bin {
# convert a decimal number to bin (ref to array, return ref to string)
my ($c, $x) = @_;
- # fits into one element (and Perl recent enough), handle also 0b0 case
- # handle zero case for older Perls
- if ($] <= 5.005 && @$x == 1 && $x->[0] == 0) {
- my $t = '0b0';
- return $t;
- }
- if (@$x == 1 && $] >= 5.006) {
- my $t = sprintf("0b%b", $x->[0]);
- return $t;
- }
+ return "0b0" if @$x == 1 && $x->[0] == 0;
+
my $x1 = $c->_copy($x);
+ my $x10000 = [ 0x10000 ];
+
my $es = '';
- my ($xr, $b, $x10000);
- if ($] >= 5.006) {
- $x10000 = [ 0x10000 ];
- $b = 'b16';
- } else {
- $x10000 = [ 0x1000 ];
- $b = 'b12';
- }
- while (!(@$x1 == 1 && $x1->[0] == 0)) # _is_zero()
- {
+ my $xr;
+
+ until (@$x1 == 1 && $x1->[0] == 0) { # _is_zero()
($x1, $xr) = $c->_div($x1, $x10000);
- $es .= unpack($b, pack('v', $xr->[0]));
+ $es = sprintf('%016b', $xr->[0]) . $es;
}
- $es = reverse $es;
- $es =~ s/^[0]+//; # strip leading zeros
- '0b' . $es; # return result prepended with 0b
+ $es =~ s/^0*/0b/;
+ return $es;
}
sub _as_oct {
# convert a decimal number to octal (ref to array, return ref to string)
my ($c, $x) = @_;
- # fits into one element (handle also 0 case)
- return sprintf("0%o", $x->[0]) if @$x == 1;
+ return "00" if @$x == 1 && $x->[0] == 0;
my $x1 = $c->_copy($x);
+ my $x1000 = [ 1 << 15 ]; # 15 bits = 32768 = 0100000
+
my $es = '';
my $xr;
- my $x1000 = [ 0100000 ];
- while (@$x1 != 1 || $x1->[0] != 0) # _is_zero()
- {
+ until (@$x1 == 1 && $x1->[0] == 0) { # _is_zero()
($x1, $xr) = $c->_div($x1, $x1000);
- $es .= reverse sprintf("%05o", $xr->[0]);
+ $es = sprintf("%05o", $xr->[0]) . $es;
}
- $es = reverse $es;
- $es =~ s/^0+//; # strip leading zeros
- '0' . $es; # return result prepended with 0
+ $es =~ s/^0*/0/; # excactly one leading zero
+ return $es;
}
sub _from_oct {
# convert a octal number to decimal (string, return ref to array)
my ($c, $os) = @_;
- # for older Perls, play safe
- my $m = [ 0100000 ];
- my $d = 5; # 5 digits at a time
+ my $m = $c->_new(1 << 30); # 30 bits at a time (<32 bits!)
+ my $d = 10; # 10 octal digits at a time
my $mul = $c->_one();
my $x = $c->_zero();
@@ -2291,7 +2191,7 @@ sub _from_oct {
$val = CORE::oct($val);
$i -= $d;
$len --;
- my $adder = [ $val ];
+ my $adder = $c -> _new($val);
$c->_add($x, $c->_mul($adder, $mul)) if $val != 0;
$c->_mul($mul, $m) if $len >= 0; # skip last mul
}
@@ -2302,8 +2202,8 @@ sub _from_hex {
# convert a hex number to decimal (string, return ref to array)
my ($c, $hs) = @_;
- my $m = $c->_new(0x10000000); # 28 bit at a time (<32 bit!)
- my $d = 7; # 7 digits at a time
+ my $m = $c->_new(0x10000000); # 28 bit at a time (<32 bit!)
+ my $d = 7; # 7 hexadecimal digits at a time
my $mul = $c->_one();
my $x = $c->_zero();
@@ -2316,7 +2216,7 @@ sub _from_hex {
$val = CORE::hex($val); # hex does not like wrong chars
$i -= $d;
$len --;
- my $adder = [ $val ];
+ my $adder = $c->_new($val);
# if the resulting number was to big to fit into one element, create a
# two-element version (bug found by Mark Lakata - Thanx!)
if (CORE::length($val) > $BASE_LEN) {
@@ -2348,12 +2248,13 @@ sub _from_bin {
# special modulus functions
sub _modinv {
+
# modular multiplicative inverse
my ($c, $x, $y) = @_;
# modulo zero
if ($c->_is_zero($y)) {
- return undef, undef;
+ return;
}
# modulo one
@@ -2384,7 +2285,7 @@ sub _modinv {
}
# if the gcd is not 1, then return NaN
- return (undef, undef) unless $c->_is_one($a);
+ return unless $c->_is_one($a);
($v, $sign == 1 ? '+' : '-');
}
@@ -2471,7 +2372,7 @@ sub _gcd {
=head1 NAME
-Math::BigInt::Calc - Pure Perl module to support Math::BigInt
+Math::BigInt::Calc - pure Perl module to support Math::BigInt
=head1 SYNOPSIS
@@ -2484,25 +2385,76 @@ Math::BigInt::Calc - Pure Perl module to support Math::BigInt
# to use it with Math::BigRat
use Math::BigRat lib => 'Calc';
+ # explicitly set base length and whether to "use integer"
+ use Math::BigInt::Calc base_len => 4, use_int => 1;
+ use Math::BigInt lib => 'Calc';
+
=head1 DESCRIPTION
Math::BigInt::Calc inherits from Math::BigInt::Lib.
-In this library, the numbers are represented in base B = 10**N, where N is the
-largest possible value that does not cause overflow in the intermediate
-computations. The base B elements are stored in an array, with the least
-significant element stored in array element zero. There are no leading zero
-elements, except a single zero element when the number is zero.
+In this library, the numbers are represented interenally in base B = 10**N,
+where N is the largest possible integer that does not cause overflow in the
+intermediate computations. The base B elements are stored in an array, with the
+least significant element stored in array element zero. There are no leading
+zero elements, except a single zero element when the number is zero. For
+instance, if B = 10000, the number 1234567890 is represented internally as
+[7890, 3456, 12].
+
+=head1 OPTIONS
+
+When the module is loaded, it computes the maximum exponent, i.e., power of 10,
+that can be used with and without "use integer" in the computations. The default
+is to use this maximum exponent. If the combination of the 'base_len' value and
+the 'use_int' value exceeds the maximum value, an error is thrown.
+
+=over 4
+
+=item base_len
+
+The base length can be specified explicitly with the 'base_len' option. The
+value must be a positive integer.
+
+ use Math::BigInt::Calc base_len => 4; # use 10000 as internal base
+
+=item use_int
+
+This option is used to specify whether "use integer" should be used in the
+internal computations. The value is interpreted as a boolean value, so use 0 or
+"" for false and anything else for true. If the 'base_len' is not specified
+together with 'use_int', the current value for the base length is used.
+
+ use Math::BigInt::Calc use_int => 1; # use "use integer" internally
+
+=back
+
+=head1 METHODS
+
+This overview constains only the methods that are specific to
+C<Math::BigInt::Calc>. For the other methods, see L<Math::BigInt::Lib>.
+
+=over 4
+
+=item _base_len()
+
+Specify the desired base length and whether to enable "use integer" in the
+computations.
+
+ Math::BigInt::Calc -> _base_len($base_len, $use_int);
+
+Note that it is better to specify the base length and whether to use integers as
+options when the module is loaded, for example like this
+
+ use Math::BigInt::Calc base_len => 6, use_int => 1;
-For instance, if B = 10000, the number 1234567890 is represented internally
-as [7890, 3456, 12].
+=back
=head1 SEE ALSO
L<Math::BigInt::Lib> for a description of the API.
-Alternative libraries L<Math::BigInt::FastCalc>, L<Math::BigInt::GMP>, and
-L<Math::BigInt::Pari>.
+Alternative libraries L<Math::BigInt::FastCalc>, L<Math::BigInt::GMP>,
+L<Math::BigInt::Pari>, L<Math::BigInt::GMPz>, and L<Math::BigInt::BitVect>.
Some of the modules that use these libraries L<Math::BigInt>,
L<Math::BigFloat>, and L<Math::BigRat>.
diff --git a/Master/tlpkg/tlperl/lib/Math/BigInt/FastCalc.pm b/Master/tlpkg/tlperl/lib/Math/BigInt/FastCalc.pm
index 4e903bd4f10..ee2c29de3b0 100644
--- a/Master/tlpkg/tlperl/lib/Math/BigInt/FastCalc.pm
+++ b/Master/tlpkg/tlperl/lib/Math/BigInt/FastCalc.pm
@@ -1,28 +1,89 @@
package Math::BigInt::FastCalc;
-use 5.006;
+use 5.006001;
use strict;
use warnings;
+use Carp qw< carp croak >;
+
use Math::BigInt::Calc 1.999801;
-our @ISA = qw< Math::BigInt::Calc >;
+BEGIN {
+ our @ISA = qw< Math::BigInt::Calc >;
+}
+
+our $VERSION = '0.5013';
+
+my $MAX_EXP_F; # the maximum possible base 10 exponent with "no integer"
+my $MAX_EXP_I; # the maximum possible base 10 exponent with "use integer"
+my $BASE_LEN; # the current base exponent in use
+my $USE_INT; # whether "use integer" is used in the computations
+
+sub _base_len {
+ my $class = shift;
+
+ if (@_) { # if called as setter ...
+ my ($base_len, $use_int) = @_;
+
+ croak "The base length must be a positive integer"
+ unless defined($base_len) && $base_len == int($base_len)
+ && $base_len > 0;
+
+ if ( $use_int && ($base_len > $MAX_EXP_I) ||
+ !$use_int && ($base_len > $MAX_EXP_F))
+ {
+ croak "The maximum base length (exponent) is $MAX_EXP_I with",
+ " 'use integer' and $MAX_EXP_F without 'use integer'. The",
+ " requested settings, a base length of $base_len ",
+ $use_int ? "with" : "without", " 'use integer', is invalid.";
+ }
+
+ return $class -> SUPER::_base_len($base_len, $use_int);
+ }
+
+ return $class -> SUPER::_base_len();
+}
-our $VERSION = '0.5009';
+BEGIN {
+
+ my @params = Math::BigInt::FastCalc -> SUPER::_base_len();
+ $BASE_LEN = $params[0];
+ $MAX_EXP_F = $params[8];
+ $MAX_EXP_I = $params[9];
+
+ # With quadmath support it should work with a base length of 17, because the
+ # maximum intermediate value used in the computations is less than 2**113.
+ # However, for some reason a base length of 17 doesn't work, but trial and
+ # error shows that a base length of 15 works for all methods except
+ # _is_odd() and _is_even(). These two methods determine whether the least
+ # significand component is odd or even by converting it to a UV and do a
+ # bitwise & operation. Because of this, we need to limit the base length to
+ # what fits inside an UV.
+
+ require Config;
+ my $max_exp_i = int(8 * $Config::Config{uvsize} * log(2) / log(10));
+ $MAX_EXP_I = $max_exp_i if $max_exp_i < $MAX_EXP_I;
+ $MAX_EXP_F = $MAX_EXP_I if $MAX_EXP_I < $MAX_EXP_F;
+
+ ($BASE_LEN, $USE_INT) = $MAX_EXP_I > $MAX_EXP_F ? ($MAX_EXP_I, 1)
+ : ($MAX_EXP_F, 0);
+
+ Math::BigInt::FastCalc -> SUPER::_base_len($BASE_LEN, $USE_INT);
+}
##############################################################################
# global constants, flags and accessory
-# announce that we are compatible with MBI v1.83 and up
-sub api_version () { 2; }
+# Announce that we are compatible with MBI v1.83 and up. This method has been
+# made redundant. Each backend is now a subclass of Math::BigInt::Lib, which
+# provides the methods not present in the subclasses.
-# use Calc to override the methods that we do not provide in XS
+sub api_version () { 2; }
require XSLoader;
XSLoader::load(__PACKAGE__, $VERSION, Math::BigInt::Calc->_base_len());
##############################################################################
-##############################################################################
1;
@@ -57,12 +118,20 @@ In order to allow for multiple big integer libraries, Math::BigInt was
rewritten to use library modules for core math routines. Any module which
follows the same API as this can be used instead by using the following:
- use Math::BigInt lib => 'libname';
+ use Math::BigInt lib => 'libname';
'libname' is either the long name ('Math::BigInt::Pari'), or only the short
version like 'Pari'. To use this library:
- use Math::BigInt lib => 'FastCalc';
+ use Math::BigInt lib => 'FastCalc';
+
+The default behaviour is to chose the best internal representation of big
+integers, but the base length used in the internal representation can be
+specified explicitly. Note that this must be done before Math::BigInt is loaded.
+For example,
+
+ use Math::BigInt::FastCalc base_len => 3;
+ use Math::BigInt lib => 'FastCalc';
=head1 STORAGE
@@ -73,25 +142,25 @@ stored in decimal form chopped into parts.
The following functions are now implemented in FastCalc.xs:
- _is_odd _is_even _is_one _is_zero
- _is_two _is_ten
- _zero _one _two _ten
- _acmp _len
- _inc _dec
- __strip_zeros _copy
+ _is_odd _is_even _is_one _is_zero
+ _is_two _is_ten
+ _zero _one _two _ten
+ _acmp _len
+ _inc _dec
+ __strip_zeros _copy
=head1 BUGS
Please report any bugs or feature requests to
C<bug-math-bigint-fastcalc at rt.cpan.org>, or through the web interface at
L<https://rt.cpan.org/Ticket/Create.html?Queue=Math-BigInt-FastCalc>
-(requires login).
-We will be notified, and then you'll automatically be notified of progress on
-your bug as I make changes.
+(requires login). We will be notified, and then you'll automatically be
+notified of progress on your bug as I make changes.
=head1 SUPPORT
-You can find documentation for this module with the perldoc command.
+After installing, you can find documentation for this module with the perldoc
+command.
perldoc Math::BigInt::FastCalc
@@ -99,43 +168,25 @@ You can also look for information at:
=over 4
-=item * RT: CPAN's request tracker
+=item GitHub
-L<https://rt.cpan.org/Public/Dist/Display.html?Name=Math-BigInt-FastCalc>
+L<https://github.com/pjacklam/p5-Math-BigInt-FastCalc>
-=item * AnnoCPAN: Annotated CPAN documentation
+=item RT: CPAN's request tracker
-L<http://annocpan.org/dist/Math-BigInt-FastCalc>
+L<https://rt.cpan.org/Dist/Display.html?Name=Math-BigInt-FastCalc>
-=item * CPAN Ratings
+=item MetaCPAN
-L<http://cpanratings.perl.org/dist/Math-BigInt-FastCalc>
+L<https://metacpan.org/release/Math-BigInt-FastCalc>
-=item * Search CPAN
-
-L<http://search.cpan.org/dist/Math-BigInt-FastCalc/>
-
-=item * CPAN Testers Matrix
+=item CPAN Testers Matrix
L<http://matrix.cpantesters.org/?dist=Math-BigInt-FastCalc>
-=item * The Bignum mailing list
-
-=over 4
-
-=item * Post to mailing list
-
-C<bignum at lists.scsys.co.uk>
-
-=item * View mailing list
-
-L<http://lists.scsys.co.uk/pipermail/bignum/>
+=item CPAN Ratings
-=item * Subscribe/Unsubscribe
-
-L<http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/bignum>
-
-=back
+L<https://cpanratings.perl.org/dist/Math-BigInt-FastCalc>
=back
@@ -148,12 +199,13 @@ the same terms as Perl itself.
Original math code by Mark Biggar, rewritten by Tels L<http://bloodgate.com/>
in late 2000.
-Separated from BigInt and shaped API with the help of John Peacock.
+
+Separated from Math::BigInt and shaped API with the help of John Peacock.
Fixed, sped-up and enhanced by Tels http://bloodgate.com 2001-2003.
Further streamlining (api_version 1 etc.) by Tels 2004-2007.
-Bug-fixing by Peter John Acklam E<lt>pjacklam@online.noE<gt> 2010-2016.
+Maintained by Peter John Acklam E<lt>pjacklam@gmail.comE<gt> 2010-2021.
=head1 SEE ALSO
diff --git a/Master/tlpkg/tlperl/lib/Math/BigInt/Lib.pm b/Master/tlpkg/tlperl/lib/Math/BigInt/Lib.pm
index fde281297fb..37fa9b94de5 100755
--- a/Master/tlpkg/tlperl/lib/Math/BigInt/Lib.pm
+++ b/Master/tlpkg/tlperl/lib/Math/BigInt/Lib.pm
@@ -4,7 +4,8 @@ use 5.006001;
use strict;
use warnings;
-our $VERSION = '1.999818';
+our $VERSION = '1.999837';
+$VERSION =~ tr/_//d;
use Carp;
@@ -88,7 +89,7 @@ use overload
$x = $_[0];
$y = ref($_[1]) ? $class -> _num($_[1]) : $_[1];
}
- return $class -> _blsft($x, $y);
+ return $class -> _lsft($x, $y);
},
'>>' => sub {
@@ -101,7 +102,7 @@ use overload
$x = $class -> _copy($_[0]);
$y = ref($_[1]) ? $_[1] : $class -> _new($_[1]);
}
- return $class -> _brsft($x, $y);
+ return $class -> _rsft($x, $y);
},
# overload key: num_comparison
@@ -352,6 +353,56 @@ sub _dec {
$class -> _sub($x, $class -> _one());
}
+# Signed addition. If the flag is false, $xa might be modified, but not $ya. If
+# the false is true, $ya might be modified, but not $xa.
+
+sub _sadd {
+ my $class = shift;
+ my ($xa, $xs, $ya, $ys, $flag) = @_;
+ my ($za, $zs);
+
+ # If the signs are equal we can add them (-5 + -3 => -(5 + 3) => -8)
+
+ if ($xs eq $ys) {
+ if ($flag) {
+ $za = $class -> _add($ya, $xa);
+ } else {
+ $za = $class -> _add($xa, $ya);
+ }
+ $zs = $class -> _is_zero($za) ? '+' : $xs;
+ return $za, $zs;
+ }
+
+ my $acmp = $class -> _acmp($xa, $ya); # abs(x) = abs(y)
+
+ if ($acmp == 0) { # x = -y or -x = y
+ $za = $class -> _zero();
+ $zs = '+';
+ return $za, $zs;
+ }
+
+ if ($acmp > 0) { # abs(x) > abs(y)
+ $za = $class -> _sub($xa, $ya, $flag);
+ $zs = $xs;
+ } else { # abs(x) < abs(y)
+ $za = $class -> _sub($ya, $xa, !$flag);
+ $zs = $ys;
+ }
+ return $za, $zs;
+}
+
+# Signed subtraction. If the flag is false, $xa might be modified, but not $ya.
+# If the false is true, $ya might be modified, but not $xa.
+
+sub _ssub {
+ my $class = shift;
+ my ($xa, $xs, $ya, $ys, $flag) = @_;
+
+ # Swap sign of second operand and let _sadd() do the job.
+ $ys = $ys eq '+' ? '-' : '+';
+ $class -> _sadd($xa, $xs, $ya, $ys, $flag);
+}
+
##############################################################################
# testing
@@ -573,23 +624,54 @@ sub _nok {
return $n;
}
+#sub _fac {
+# # factorial
+# my ($class, $x) = @_;
+#
+# my $two = $class -> _two();
+#
+# if ($class -> _acmp($x, $two) < 0) {
+# return $class -> _one();
+# }
+#
+# my $i = $class -> _copy($x);
+# while ($class -> _acmp($i, $two) > 0) {
+# $i = $class -> _dec($i);
+# $x = $class -> _mul($x, $i);
+# }
+#
+# return $x;
+#}
+
sub _fac {
# factorial
my ($class, $x) = @_;
- my $two = $class -> _two();
+ # This is an implementation of the split recursive algorithm. See
+ # http://www.luschny.de/math/factorial/csharp/FactorialSplit.cs.html
- if ($class -> _acmp($x, $two) < 0) {
- return $class -> _one();
- }
+ my $p = $class -> _one();
+ my $r = $class -> _one();
+ my $two = $class -> _two();
- my $i = $class -> _copy($x);
- while ($class -> _acmp($i, $two) > 0) {
- $i = $class -> _dec($i);
- $x = $class -> _mul($x, $i);
+ my ($log2n) = $class -> _log_int($class -> _copy($x), $two);
+ my $h = $class -> _zero();
+ my $shift = $class -> _zero();
+ my $k = $class -> _one();
+
+ while ($class -> _acmp($h, $x)) {
+ $shift = $class -> _add($shift, $h);
+ $h = $class -> _rsft($class -> _copy($x), $log2n, $two);
+ $log2n = $class -> _dec($log2n) if !$class -> _is_zero($log2n);
+ my $high = $class -> _copy($h);
+ $high = $class -> _dec($high) if $class -> _is_even($h);
+ while ($class -> _acmp($k, $high)) {
+ $k = $class -> _add($k, $two);
+ $p = $class -> _mul($p, $k);
+ }
+ $r = $class -> _mul($r, $p);
}
-
- return $x;
+ return $class -> _lsft($r, $shift, $two);
}
sub _dfac {
@@ -725,7 +807,7 @@ sub _sqrt {
#
# x(i+1) = x(i) - f(x(i)) / f'(x(i))
# = x(i) - (x(i)^2 - y) / (2 * x(i)) # use if x(i)^2 > y
- # = y(i) + (y - x(i)^2) / (2 * x(i)) # use if x(i)^2 < y
+ # = x(i) + (y - x(i)^2) / (2 * x(i)) # use if x(i)^2 < y
# Determine if x, our guess, is too small, correct, or too large.
@@ -1433,7 +1515,9 @@ sub _to_base {
my $collseq;
if (@_) {
- $collseq = shift();
+ $collseq = shift;
+ croak "The collation sequence must be a non-empty string"
+ unless defined($collseq) && length($collseq);
} else {
if ($class -> _acmp($base, $class -> _new("94")) <= 0) {
$collseq = '0123456789' # 48 .. 57
@@ -1461,10 +1545,40 @@ sub _to_base {
my $chr = $collseq[$num];
$str = $chr . $str;
}
- return "0" unless length $str;
+ return $collseq[0] unless length $str;
return $str;
}
+sub _to_base_num {
+ # Convert the number to an array of integers in any base.
+ my ($class, $x, $base) = @_;
+
+ # Make sure the base is an object and >= 2.
+ $base = $class -> _new($base) unless ref($base);
+ my $two = $class -> _two();
+ croak "base must be >= 2" unless $class -> _acmp($base, $two) >= 0;
+
+ my $out = [];
+ my $xcopy = $class -> _copy($x);
+ my $rem;
+
+ # Do all except the last (most significant) element.
+ until ($class -> _acmp($xcopy, $base) < 0) {
+ ($xcopy, $rem) = $class -> _div($xcopy, $base);
+ unshift @$out, $rem;
+ }
+
+ # Do the last (most significant element).
+ unless ($class -> _is_zero($xcopy)) {
+ unshift @$out, $xcopy;
+ }
+
+ # $out is empty if $x is zero.
+ unshift @$out, $class -> _zero() unless @$out;
+
+ return $out;
+}
+
sub _from_hex {
# Convert a string of hexadecimal digits to a number.
@@ -1622,6 +1736,32 @@ sub _from_base {
return $x;
}
+sub _from_base_num {
+ # Convert an array in the given base to a number.
+ my ($class, $in, $base) = @_;
+
+ # Make sure the base is an object and >= 2.
+ $base = $class -> _new($base) unless ref($base);
+ my $two = $class -> _two();
+ croak "base must be >= 2" unless $class -> _acmp($base, $two) >= 0;
+
+ # @$in = map { ref($_) ? $_ : $class -> _new($_) } @$in;
+
+ my $ele = $in -> [0];
+
+ $ele = $class -> _new($ele) unless ref($ele);
+ my $x = $class -> _copy($ele);
+
+ for my $i (1 .. $#$in) {
+ $x = $class -> _mul($x, $base);
+ $ele = $in -> [$i];
+ $ele = $class -> _new($ele) unless ref($ele);
+ $x = $class -> _add($x, $ele);
+ }
+
+ return $x;
+}
+
##############################################################################
# special modulus functions
@@ -1631,7 +1771,7 @@ sub _modinv {
# modulo zero
if ($class -> _is_zero($y)) {
- return (undef, undef);
+ return;
}
# modulo one
@@ -1661,7 +1801,7 @@ sub _modinv {
}
# if the gcd is not 1, there exists no modular multiplicative inverse
- return (undef, undef) unless $class -> _is_one($a);
+ return unless $class -> _is_one($a);
($v, $sign == 1 ? '+' : '-');
}
@@ -1786,8 +1926,6 @@ sub _lucas {
return @y;
}
- require Scalar::Util;
-
# In scalar context use that lucas(n) = fib(n-1) + fib(n+1).
#
# Remember that _fib() behaves differently in scalar context and list
@@ -1795,8 +1933,8 @@ sub _lucas {
return $class -> _two() if $n == 0;
- return $class -> _add(scalar $class -> _fib($n - 1),
- scalar $class -> _fib($n + 1));
+ return $class -> _add(scalar($class -> _fib($n - 1)),
+ scalar($class -> _fib($n + 1)));
}
sub _fib {
@@ -1876,8 +2014,8 @@ Math::BigInt::Lib - virtual parent class for Math::BigInt libraries
package Math::BigInt::MyBackend;
- use Math::BigInt::lib;
- our @ISA = qw< Math::BigInt::lib >;
+ use Math::BigInt::Lib;
+ our @ISA = qw< Math::BigInt::Lib >;
sub _new { ... }
sub _str { ... }
@@ -2035,6 +2173,16 @@ Some more examples, all returning 250:
$x = $class -> _from_base("42", 62)
$x = $class -> _from_base("2!", 94)
+=item CLASS-E<gt>_from_base_num(ARRAY, BASE)
+
+Returns an object given an array of values and a base. This method is
+equivalent to C<_from_base()>, but works on numbers in an array rather than
+characters in a string. Unlike C<_from_base()>, all input values may be
+arbitrarily large.
+
+ $x = $class -> _from_base_num([1, 1, 0, 1], 2) # $x is 13
+ $x = $class -> _from_base_num([3, 125, 39], 128) # $x is 65191
+
=back
=head3 Mathematical functions
@@ -2043,24 +2191,38 @@ Some more examples, all returning 250:
=item CLASS-E<gt>_add(OBJ1, OBJ2)
-Returns the result of adding OBJ2 to OBJ1.
+Addition. Returns the result of adding OBJ2 to OBJ1.
=item CLASS-E<gt>_mul(OBJ1, OBJ2)
-Returns the result of multiplying OBJ2 and OBJ1.
+Multiplication. Returns the result of multiplying OBJ2 and OBJ1.
=item CLASS-E<gt>_div(OBJ1, OBJ2)
-In scalar context, returns the quotient after dividing OBJ1 by OBJ2 and
-truncating the result to an integer. In list context, return the quotient and
-the remainder.
+Division. In scalar context, returns the quotient after dividing OBJ1 by OBJ2
+and truncating the result to an integer. In list context, return the quotient
+and the remainder.
=item CLASS-E<gt>_sub(OBJ1, OBJ2, FLAG)
=item CLASS-E<gt>_sub(OBJ1, OBJ2)
-Returns the result of subtracting OBJ2 by OBJ1. If C<flag> is false or omitted,
-OBJ1 might be modified. If C<flag> is true, OBJ2 might be modified.
+Subtraction. Returns the result of subtracting OBJ2 by OBJ1. If C<flag> is false
+or omitted, OBJ1 might be modified. If C<flag> is true, OBJ2 might be modified.
+
+=item CLASS-E<gt>_sadd(OBJ1, SIGN1, OBJ2, SIGN2)
+
+Signed addition. Returns the result of adding OBJ2 with sign SIGN2 to OBJ1 with
+sign SIGN1.
+
+ ($obj3, $sign3) = $class -> _sadd($obj1, $sign1, $obj2, $sign2);
+
+=item CLASS-E<gt>_ssub(OBJ1, SIGN1, OBJ2, SIGN2)
+
+Signed subtraction. Returns the result of subtracting OBJ2 with sign SIGN2 to
+OBJ1 with sign SIGN1.
+
+ ($obj3, $sign3) = $class -> _sadd($obj1, $sign1, $obj2, $sign2);
=item CLASS-E<gt>_dec(OBJ)
@@ -2268,6 +2430,16 @@ COLLSEQ.
See _from_base() for more information.
+=item CLASS-E<gt>_to_base_num(OBJ, BASE)
+
+Converts the given number to the given base. This method is equivalent to
+C<_to_base()>, but returns numbers in an array rather than characters in a
+string. In the output, the first element is the most significant. Unlike
+C<_to_base()>, all input values may be arbitrarily large.
+
+ $x = $class -> _to_base_num(13, 2) # $x is [1, 1, 0, 1]
+ $x = $class -> _to_base_num(65191, 128) # $x is [3, 125, 39]
+
=item CLASS-E<gt>_as_bin(OBJ)
Like C<_to_bin()> but with a '0b' prefix.
@@ -2460,7 +2632,7 @@ the same terms as Perl itself.
=head1 AUTHOR
-Peter John Acklam, E<lt>pjacklam@online.noE<gt>
+Peter John Acklam, E<lt>pjacklam@gmail.comE<gt>
Code and documentation based on the Math::BigInt::Calc module by Tels
E<lt>nospam-abuse@bloodgate.comE<gt>
diff --git a/Master/tlpkg/tlperl/lib/Math/BigInt/Trace.pm b/Master/tlpkg/tlperl/lib/Math/BigInt/Trace.pm
index 5517bedad99..16ac187abbf 100644
--- a/Master/tlpkg/tlperl/lib/Math/BigInt/Trace.pm
+++ b/Master/tlpkg/tlperl/lib/Math/BigInt/Trace.pm
@@ -1,48 +1,76 @@
-#!perl
+# -*- mode: perl; -*-
package Math::BigInt::Trace;
-require 5.010;
use strict;
use warnings;
use Exporter;
use Math::BigInt;
-our ($accuracy, $precision, $round_mode, $div_scale);
-
our @ISA = qw(Exporter Math::BigInt);
-our $VERSION = '0.51';
+our $VERSION = '0.66';
use overload; # inherit overload from Math::BigInt
# Globals
-$accuracy = $precision = undef;
-$round_mode = 'even';
-$div_scale = 40;
+our $accuracy = undef;
+our $precision = undef;
+our $round_mode = 'even';
+our $div_scale = 40;
sub new {
my $proto = shift;
my $class = ref($proto) || $proto;
my $value = shift;
+
my $a = $accuracy;
$a = $_[0] if defined $_[0];
+
my $p = $precision;
$p = $_[1] if defined $_[1];
- my $self = Math::BigInt->new($value, $a, $p, $round_mode);
- bless $self, $class;
- print "MBI new '$value' => '$self' (", ref($self), ")";
+
+ my $self = $class -> SUPER::new($value, $a, $p, $round_mode);
+
+ printf "Math::BigInt new '%s' => '%s' (%s)\n",
+ $value, $self, ref($self);
+
return $self;
}
sub import {
- print "MBI import ", join(' ', @_);
- my $self = shift;
- Math::BigInt::import($self, @_); # need it for subclasses
-# $self->export_to_level(1, $self, @_); # need this ?
- @_ = ();
+ my $class = shift;
+
+ printf "%s -> import(%s)\n", $class, join(", ", @_);
+
+ # we catch the constants, the rest goes to parent
+
+ my $constant = grep { $_ eq ':constant' } @_;
+ my @a = grep { $_ ne ':constant' } @_;
+
+ if ($constant) {
+ overload::constant
+
+ integer => sub {
+ $class -> new(shift);
+ },
+
+ float => sub {
+ $class -> new(shift);
+ },
+
+ binary => sub {
+ # E.g., a literal 0377 shall result in an object whose value
+ # is decimal 255, but new("0377") returns decimal 377.
+ return $class -> from_oct($_[0]) if $_[0] =~ /^0_*[0-7]/;
+ $class -> new(shift);
+ };
+ }
+
+ $class -> SUPER::import(@a); # need it for subclasses
+ #$self -> export_to_level(1, $class, @_); # need this ?
}
1;
diff --git a/Master/tlpkg/tlperl/lib/Math/BigRat.pm b/Master/tlpkg/tlperl/lib/Math/BigRat.pm
index e3d172836c0..0d0f2467957 100644
--- a/Master/tlpkg/tlperl/lib/Math/BigRat.pm
+++ b/Master/tlpkg/tlperl/lib/Math/BigRat.pm
@@ -16,11 +16,12 @@ use 5.006;
use strict;
use warnings;
-use Carp qw< carp croak >;
+use Carp qw< carp croak >;
+use Scalar::Util qw< blessed >;
-use Math::BigFloat 1.999718;
+use Math::BigFloat ();
-our $VERSION = '0.2614';
+our $VERSION = '0.2624';
our @ISA = qw(Math::BigFloat);
@@ -199,12 +200,6 @@ use overload
BEGIN {
*objectify = \&Math::BigInt::objectify; # inherit this from BigInt
*AUTOLOAD = \&Math::BigFloat::AUTOLOAD; # can't inherit AUTOLOAD
- # We inherit these from BigFloat because currently it is not possible that
- # Math::BigFloat has a different $LIB variable than we, because
- # Math::BigFloat also uses Math::BigInt::config->('lib') (there is always
- # only one library loaded)
- *_e_add = \&Math::BigFloat::_e_add;
- *_e_sub = \&Math::BigFloat::_e_sub;
*as_number = \&as_int;
*is_pos = \&is_positive;
*is_neg = \&is_negative;
@@ -305,20 +300,32 @@ sub new {
unless (defined $d) {
#return $n -> copy($n) if $n -> isa('Math::BigRat');
- return $class -> copy($n) if $n -> isa('Math::BigRat');
- return $class -> bnan() if $n -> is_nan();
- return $class -> binf($n -> sign()) if $n -> is_inf();
+ if ($n -> isa('Math::BigRat')) {
+ return $downgrade -> new($n)
+ if defined($downgrade) && $n -> is_int();
+ return $class -> copy($n);
+ }
+
+ if ($n -> is_nan()) {
+ return $class -> bnan();
+ }
+
+ if ($n -> is_inf()) {
+ return $class -> binf($n -> sign());
+ }
if ($n -> isa('Math::BigInt')) {
- $self -> {_n} = $LIB -> _new($n -> copy() -> babs() -> bstr());
+ $self -> {_n} = $LIB -> _new($n -> copy() -> babs(undef, undef)
+ -> bstr());
$self -> {_d} = $LIB -> _one();
$self -> {sign} = $n -> sign();
+ return $downgrade -> new($n) if defined $downgrade;
return $self;
}
if ($n -> isa('Math::BigFloat')) {
- my $m = $n -> mantissa() -> babs();
- my $e = $n -> exponent();
+ my $m = $n -> mantissa(undef, undef) -> babs(undef, undef);
+ my $e = $n -> exponent(undef, undef);
$self -> {_n} = $LIB -> _new($m -> bstr());
$self -> {_d} = $LIB -> _one();
@@ -329,7 +336,8 @@ sub new {
$self -> {_d} = $LIB -> _lsft($self -> {_d},
$LIB -> _new(-$e -> bstr()), 10);
- my $gcd = $LIB -> _gcd($LIB -> _copy($self -> {_n}), $self -> {_d});
+ my $gcd = $LIB -> _gcd($LIB -> _copy($self -> {_n}),
+ $self -> {_d});
if (!$LIB -> _is_one($gcd)) {
$self -> {_n} = $LIB -> _div($self->{_n}, $gcd);
$self -> {_d} = $LIB -> _div($self->{_d}, $gcd);
@@ -337,6 +345,8 @@ sub new {
}
$self -> {sign} = $n -> sign();
+ return $downgrade -> new($n, undef, undef)
+ if defined($downgrade) && $n -> is_int();
return $self;
}
@@ -353,19 +363,30 @@ sub new {
# At this point both $n and $d are objects.
- return $class -> bnan() if $n -> is_nan() || $d -> is_nan();
+ if ($n -> is_nan() || $d -> is_nan()) {
+ return $class -> bnan();
+ }
# At this point neither $n nor $d is a NaN.
if ($n -> is_zero()) {
- return $class -> bnan() if $d -> is_zero(); # 0/0 = NaN
+ if ($d -> is_zero()) { # 0/0 = NaN
+ return $class -> bnan();
+ }
return $class -> bzero();
}
- return $class -> binf($d -> sign()) if $d -> is_zero();
+ if ($d -> is_zero()) {
+ return $class -> binf($d -> sign());
+ }
# At this point, neither $n nor $d is a NaN or a zero.
+ # Copy them now before manipulating them.
+
+ $n = $n -> copy();
+ $d = $d -> copy();
+
if ($d < 0) { # make sure denominator is positive
$n -> bneg();
$d -> bneg();
@@ -411,6 +432,8 @@ sub new {
$self -> {_d} = $LIB -> _mul($LIB -> _div($LIB -> _copy($q), $gcd_sq),
$LIB -> _div($LIB -> _copy($r), $gcd_pr));
+ return $downgrade -> new($n->bstr())
+ if defined($downgrade) && $self -> is_int();
return $self; # no need for $self -> bnorm() here
}
@@ -516,6 +539,8 @@ sub new {
}
}
+ return $downgrade -> new($self -> bstr())
+ if defined($downgrade) && $self -> is_int();
return $self;
}
@@ -553,6 +578,8 @@ sub bnan {
croak ("Tried to set a variable to NaN in $class->bnan()");
}
+ return $downgrade -> bnan() if defined $downgrade;
+
$self -> {sign} = $nan;
$self -> {_n} = $LIB -> _zero();
$self -> {_d} = $LIB -> _one();
@@ -577,6 +604,8 @@ sub binf {
croak ("Tried to set a variable to +-inf in $class->binf()");
}
+ return $downgrade -> binf($sign) if defined $downgrade;
+
$self -> {sign} = $sign;
$self -> {_n} = $LIB -> _zero();
$self -> {_d} = $LIB -> _one();
@@ -592,11 +621,12 @@ sub bone {
my $selfref = ref $self;
my $class = $selfref || $self;
- $self = bless {}, $class unless $selfref;
-
my $sign = shift();
$sign = '+' unless defined($sign) && $sign eq '-';
+ return $downgrade -> bone($sign) if defined $downgrade;
+
+ $self = bless {}, $class unless $selfref;
$self -> {sign} = $sign;
$self -> {_n} = $LIB -> _one();
$self -> {_d} = $LIB -> _one();
@@ -612,8 +642,9 @@ sub bzero {
my $selfref = ref $self;
my $class = $selfref || $self;
- $self = bless {}, $class unless $selfref;
+ return $downgrade -> bzero() if defined $downgrade;
+ $self = bless {}, $class unless $selfref;
$self -> {sign} = '+';
$self -> {_n} = $LIB -> _zero();
$self -> {_d} = $LIB -> _one();
@@ -644,36 +675,86 @@ sub config {
$cfg;
}
-##############################################################################
+###############################################################################
+# String conversion methods
+###############################################################################
sub bstr {
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
- if ($x->{sign} !~ /^[+-]$/) { # inf, NaN etc
- my $s = $x->{sign};
- $s =~ s/^\+//; # +inf => inf
- return $s;
+ if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
}
+ # Upgrade?
+
+ return $upgrade -> bstr($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
+
my $s = '';
$s = $x->{sign} if $x->{sign} ne '+'; # '+3/2' => '3/2'
- return $s . $LIB->_str($x->{_n}) if $LIB->_is_one($x->{_d});
- $s . $LIB->_str($x->{_n}) . '/' . $LIB->_str($x->{_d});
+ my $str = $x->{sign} eq '-' ? '-' : '';
+ $str .= $LIB->_str($x->{_n});
+ $str .= '/' . $LIB->_str($x->{_d}) unless $LIB -> _is_one($x->{_d});
+ return $str;
}
sub bsstr {
- my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
- if ($x->{sign} !~ /^[+-]$/) { # inf, NaN etc
- my $s = $x->{sign};
- $s =~ s/^\+//; # +inf => inf
- return $s;
+ # Inf and NaN
+
+ if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
}
- my $s = '';
- $s = $x->{sign} if $x->{sign} ne '+'; # +3 vs 3
- $s . $LIB->_str($x->{_n}) . '/' . $LIB->_str($x->{_d});
+ # Upgrade?
+
+ return $upgrade -> bsstr($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
+
+ my $str = $x->{sign} eq '-' ? '-' : '';
+ $str .= $LIB->_str($x->{_n});
+ $str .= '/' . $LIB->_str($x->{_d}) unless $LIB -> _is_one($x->{_d});
+ return $str;
+}
+
+sub bfstr {
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+
+ carp "Rounding is not supported for ", (caller(0))[3], "()" if @r;
+
+ # Inf and NaN
+
+ if ($x->{sign} ne '+' && $x->{sign} ne '-') {
+ return $x->{sign} unless $x->{sign} eq '+inf'; # -inf, NaN
+ return 'inf'; # +inf
+ }
+
+ # Upgrade?
+
+ return $upgrade -> bfstr($x, @r)
+ if defined($upgrade) && !$x -> isa($class);
+
+ # Finite number
+
+ my $str = $x->{sign} eq '-' ? '-' : '';
+ $str .= $LIB->_str($x->{_n});
+ $str .= '/' . $LIB->_str($x->{_d}) unless $LIB -> _is_one($x->{_d});
+ return $str;
}
sub bnorm {
@@ -689,16 +770,24 @@ sub bnorm {
}
# no normalize for NaN, inf etc.
- return $x if $x->{sign} !~ /^[+-]$/;
+ if ($x->{sign} !~ /^[+-]$/) {
+ return $downgrade -> new($x) if defined $downgrade;
+ return $x;
+ }
# normalize zeros to 0/1
if ($LIB->_is_zero($x->{_n})) {
+ return $downgrade -> bzero() if defined($downgrade);
$x->{sign} = '+'; # never leave a -0
$x->{_d} = $LIB->_one() unless $LIB->_is_one($x->{_d});
return $x;
}
- return $x if $LIB->_is_one($x->{_d}); # no need to reduce
+ # n/1
+ if ($LIB->_is_one($x->{_d})) {
+ return $downgrade -> new($x) if defined($downgrade);
+ return $x; # no need to reduce
+ }
# Compute the GCD.
my $gcd = $LIB->_gcd($LIB->_copy($x->{_n}), $x->{_d});
@@ -723,56 +812,10 @@ sub bneg {
# for +0 do not negate (to have always normalized +0). Does nothing for 'NaN'
$x->{sign} =~ tr/+-/-+/
unless ($x->{sign} eq '+' && $LIB->_is_zero($x->{_n}));
- $x;
-}
-
-##############################################################################
-# special values
-
-sub _bnan {
- # used by parent class bnan() to initialize number to NaN
- my $self = shift;
-
- if ($_trap_nan) {
- my $class = ref($self);
- # "$self" below will stringify the object, this blows up if $self is a
- # partial object (happens under trap_nan), so fix it beforehand
- $self->{_d} = $LIB->_zero() unless defined $self->{_d};
- $self->{_n} = $LIB->_zero() unless defined $self->{_n};
- croak ("Tried to set $self to NaN in $class\::_bnan()");
- }
- $self->{_n} = $LIB->_zero();
- $self->{_d} = $LIB->_zero();
-}
-
-sub _binf {
- # used by parent class bone() to initialize number to +inf/-inf
- my $self = shift;
-
- if ($_trap_inf) {
- my $class = ref($self);
- # "$self" below will stringify the object, this blows up if $self is a
- # partial object (happens under trap_nan), so fix it beforehand
- $self->{_d} = $LIB->_zero() unless defined $self->{_d};
- $self->{_n} = $LIB->_zero() unless defined $self->{_n};
- croak ("Tried to set $self to inf in $class\::_binf()");
- }
- $self->{_n} = $LIB->_zero();
- $self->{_d} = $LIB->_zero();
-}
-
-sub _bone {
- # used by parent class bone() to initialize number to +1/-1
- my $self = shift;
- $self->{_n} = $LIB->_one();
- $self->{_d} = $LIB->_one();
-}
-sub _bzero {
- # used by parent class bzero() to initialize number to 0
- my $self = shift;
- $self->{_n} = $LIB->_zero();
- $self->{_d} = $LIB->_one();
+ return $downgrade -> new($x)
+ if defined($downgrade) && $LIB -> _is_one($x->{_d});
+ $x;
}
##############################################################################
@@ -788,12 +831,21 @@ sub badd {
($class, $x, $y, @r) = objectify(2, @_);
}
- # +inf + +inf => +inf, -inf + -inf => -inf
- return $x->binf(substr($x->{sign}, 0, 1))
- if $x->{sign} eq $y->{sign} && $x->{sign} =~ /^[+-]inf$/;
-
- # +inf + -inf or -inf + +inf => NaN
- return $x->bnan() if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/);
+ unless ($x -> is_finite() && $y -> is_finite()) {
+ if ($x -> is_nan() || $y -> is_nan()) {
+ return $x -> bnan(@r);
+ } elsif ($x -> is_inf("+")) {
+ return $x -> bnan(@r) if $y -> is_inf("-");
+ return $x -> binf("+", @r);
+ } elsif ($x -> is_inf("-")) {
+ return $x -> bnan(@r) if $y -> is_inf("+");
+ return $x -> binf("-", @r);
+ } elsif ($y -> is_inf("+")) {
+ return $x -> binf("+", @r);
+ } elsif ($y -> is_inf("-")) {
+ return $x -> binf("-", @r);
+ }
+ }
# 1 1 gcd(3, 4) = 1 1*3 + 1*4 7
# - + - = --------- = --
@@ -813,7 +865,7 @@ sub badd {
my $m = $LIB->_mul($LIB->_copy($y->{_n}), $x->{_d});
# 5 * 3 + 7 * 4
- ($x->{_n}, $x->{sign}) = _e_add($x->{_n}, $m, $x->{sign}, $y->{sign});
+ ($x->{_n}, $x->{sign}) = $LIB -> _sadd($x->{_n}, $x->{sign}, $m, $y->{sign});
# 4 * 3
$x->{_d} = $LIB->_mul($x->{_d}, $y->{_d});
@@ -834,12 +886,12 @@ sub bsub {
# flip sign of $x, call badd(), then flip sign of result
$x->{sign} =~ tr/+-/-+/
- unless $x->{sign} eq '+' && $LIB->_is_zero($x->{_n}); # not -0
- $x->badd($y, @r); # does norm and round
+ unless $x->{sign} eq '+' && $x -> is_zero(); # not -0
+ $x = $x->badd($y, @r); # does norm and round
$x->{sign} =~ tr/+-/-+/
- unless $x->{sign} eq '+' && $LIB->_is_zero($x->{_n}); # not -0
+ unless $x->{sign} eq '+' && $x -> is_zero(); # not -0
- $x;
+ $x->bnorm();
}
sub bmul {
@@ -866,10 +918,13 @@ sub bmul {
}
# x == 0 # also: or y == 1 or y == -1
- return wantarray ? ($x, $class->bzero()) : $x if $x -> is_zero();
+ if ($x -> is_zero()) {
+ $x = $downgrade -> bzero($x) if defined $downgrade;
+ return wantarray ? ($x, $class->bzero()) : $x;
+ }
if ($y -> is_zero()) {
- $x -> bzero();
+ $x = defined($downgrade) ? $downgrade -> bzero($x) : $x -> bzero();
return wantarray ? ($x, $class->bzero()) : $x;
}
@@ -893,7 +948,7 @@ sub bmul {
# compute new sign
$x->{sign} = $x->{sign} eq $y->{sign} ? '+' : '-';
- $x->round(@r);
+ $x->bnorm()->round(@r);
}
sub bdiv {
@@ -916,7 +971,15 @@ sub bdiv {
# method.
if ($x -> is_nan() || $y -> is_nan()) {
- return $wantarray ? ($x -> bnan(), $class -> bnan()) : $x -> bnan();
+ if ($wantarray) {
+ return $downgrade -> bnan(), $downgrade -> bnan()
+ if defined($downgrade);
+ return $x -> bnan(), $class -> bnan();
+ } else {
+ return $downgrade -> bnan()
+ if defined($downgrade);
+ return $x -> bnan();
+ }
}
# Divide by zero and modulo zero. This is handled the same way as in
@@ -933,6 +996,11 @@ sub bdiv {
} else {
$quo = $x -> binf($x -> {sign});
}
+
+ $quo = $downgrade -> new($quo)
+ if defined($downgrade) && $quo -> is_int();
+ $rem = $downgrade -> new($rem)
+ if $wantarray && defined($downgrade) && $rem -> is_int();
return $wantarray ? ($quo, $rem) : $quo;
}
@@ -949,6 +1017,11 @@ sub bdiv {
my $sign = $x -> bcmp(0) == $y -> bcmp(0) ? '+' : '-';
$quo = $x -> binf($sign);
}
+
+ $quo = $downgrade -> new($quo)
+ if defined($downgrade) && $quo -> is_int();
+ $rem = $downgrade -> new($rem)
+ if $wantarray && defined($downgrade) && $rem -> is_int();
return $wantarray ? ($quo, $rem) : $quo;
}
@@ -966,12 +1039,18 @@ sub bdiv {
$rem = $class -> binf($y -> {sign});
$quo = $x -> bone('-');
}
+ $quo = $downgrade -> new($quo)
+ if defined($downgrade) && $quo -> is_int();
+ $rem = $downgrade -> new($rem)
+ if defined($downgrade) && $rem -> is_int();
return ($quo, $rem);
} else {
if ($y -> is_inf()) {
if ($x -> is_nan() || $x -> is_inf()) {
+ return $downgrade -> bnan() if defined $downgrade;
return $x -> bnan();
} else {
+ return $downgrade -> bzero() if defined $downgrade;
return $x -> bzero();
}
}
@@ -982,7 +1061,11 @@ sub bdiv {
# the denominator (divisor) is non-zero.
# x == 0?
- return wantarray ? ($x, $class->bzero()) : $x if $x->is_zero();
+ if ($x->is_zero()) {
+ return $wantarray ? ($downgrade -> bzero(), $downgrade -> bzero())
+ : $downgrade -> bzero() if defined $downgrade;
+ return $wantarray ? ($x, $class->bzero()) : $x;
+ }
# XXX TODO: list context, upgrade
# According to Knuth, this can be optimized by doing gcd twice (for d and n)
@@ -1001,13 +1084,14 @@ sub bdiv {
$x -> bnorm();
if (wantarray) {
my $rem = $x -> copy();
- $x -> bfloor();
- $x -> round(@r);
- $rem -> bsub($x -> copy()) -> bmul($y);
+ $x = $x -> bfloor();
+ $x = $x -> round(@r);
+ $rem = $rem -> bsub($x -> copy()) -> bmul($y);
+ $x = $downgrade -> new($x) if defined($downgrade) && $x -> is_int();
+ $rem = $downgrade -> new($rem) if defined($downgrade) && $rem -> is_int();
return $x, $rem;
} else {
- $x -> round(@r);
- return $x;
+ return $x -> round(@r);
}
}
@@ -1033,6 +1117,7 @@ sub bmod {
# Modulo zero. This is handled the same way as in Math::BigInt -> bmod().
if ($y -> is_zero()) {
+ return $downgrade -> bzero() if defined $downgrade;
return $x;
}
@@ -1048,8 +1133,10 @@ sub bmod {
if ($y -> is_inf()) {
if ($x -> is_zero() || $x -> bcmp(0) == $y -> bcmp(0)) {
+ return $downgrade -> new($x) if defined($downgrade) && $x -> is_int();
return $x;
} else {
+ return $downgrade -> binf($y -> sign()) if defined($downgrade);
return $x -> binf($y -> sign());
}
}
@@ -1057,7 +1144,10 @@ sub bmod {
# At this point, both the numerator and denominator are finite numbers, and
# the denominator (divisor) is non-zero.
- return $x if $x->is_zero(); # 0 / 7 = 0, mod 0
+ if ($x->is_zero()) { # 0 / 7 = 0, mod 0
+ return $downgrade -> bzero() if defined $downgrade;
+ return $x;
+ }
# Compute $x - $y * floor($x/$y). This can probably be optimized by working
# on a lower level.
@@ -1073,7 +1163,10 @@ sub bdec {
# decrement value (subtract 1)
my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- return $x if $x->{sign} !~ /^[+-]$/; # NaN, inf, -inf
+ if ($x->{sign} !~ /^[+-]$/) { # NaN, inf, -inf
+ return $downgrade -> new($x) if defined $downgrade;
+ return $x;
+ }
if ($x->{sign} eq '-') {
$x->{_n} = $LIB->_add($x->{_n}, $x->{_d}); # -5/2 => -7/2
@@ -1094,7 +1187,10 @@ sub binc {
# increment value (add 1)
my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- return $x if $x->{sign} !~ /^[+-]$/; # NaN, inf, -inf
+ if ($x->{sign} !~ /^[+-]$/) { # NaN, inf, -inf
+ return $downgrade -> new($x) if defined $downgrade;
+ return $x;
+ }
if ($x->{sign} eq '-') {
if ($LIB->_acmp($x->{_n}, $x->{_d}) < 0) {
@@ -1110,6 +1206,20 @@ sub binc {
$x->bnorm()->round(@r);
}
+sub binv {
+ my $x = shift;
+ my @r = @_;
+
+ return $x if $x->modify('binv');
+
+ return $x if $x -> is_nan();
+ return $x -> bzero() if $x -> is_inf();
+ return $x -> binf("+") if $x -> is_zero();
+
+ ($x -> {_n}, $x -> {_d}) = ($x -> {_d}, $x -> {_n});
+ $x -> round(@r);
+}
+
##############################################################################
# is_foo methods (the rest is inherited)
@@ -1201,6 +1311,53 @@ sub parts {
($n, $d);
}
+sub dparts {
+ my $x = shift;
+ my $class = ref $x;
+
+ croak("dparts() is an instance method") unless $class;
+
+ if ($x -> is_nan()) {
+ return $class -> bnan(), $class -> bnan() if wantarray;
+ return $class -> bnan();
+ }
+
+ if ($x -> is_inf()) {
+ return $class -> binf($x -> sign()), $class -> bzero() if wantarray;
+ return $class -> binf($x -> sign());
+ }
+
+ # 355/113 => 3 + 16/113
+
+ my ($q, $r) = $LIB -> _div($LIB -> _copy($x -> {_n}), $x -> {_d});
+
+ my $int = Math::BigRat -> new($x -> {sign} . $LIB -> _str($q));
+ return $int unless wantarray;
+
+ my $frc = Math::BigRat -> new($x -> {sign} . $LIB -> _str($r),
+ $LIB -> _str($x -> {_d}));
+
+ return $int, $frc;
+}
+
+sub fparts {
+ my $x = shift;
+ my $class = ref $x;
+
+ croak("fparts() is an instance method") unless $class;
+
+ return ($class -> bnan(),
+ $class -> bnan()) if $x -> is_nan();
+
+ my $numer = $x -> copy();
+ my $denom = $class -> bzero();
+
+ $denom -> {_n} = $numer -> {_d};
+ $numer -> {_d} = $LIB -> _one();
+
+ return ($numer, $denom);
+}
+
sub length {
my ($class, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
@@ -1221,37 +1378,52 @@ sub digit {
sub bceil {
my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
- return $x if ($x->{sign} !~ /^[+-]$/ || # not for NaN, inf
- $LIB->_is_one($x->{_d})); # 22/1 => 22, 0/1 => 0
+ if ($x->{sign} !~ /^[+-]$/ || # NaN or inf or
+ $LIB->_is_one($x->{_d})) # integer
+ {
+ return $downgrade -> new($x) if defined $downgrade;
+ return $x;
+ }
$x->{_n} = $LIB->_div($x->{_n}, $x->{_d}); # 22/7 => 3/1 w/ truncate
$x->{_d} = $LIB->_one(); # d => 1
$x->{_n} = $LIB->_inc($x->{_n}) if $x->{sign} eq '+'; # +22/7 => 4/1
$x->{sign} = '+' if $x->{sign} eq '-' && $LIB->_is_zero($x->{_n}); # -0 => 0
+ return $downgrade -> new($x) if defined $downgrade;
$x;
}
sub bfloor {
my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
- return $x if ($x->{sign} !~ /^[+-]$/ || # not for NaN, inf
- $LIB->_is_one($x->{_d})); # 22/1 => 22, 0/1 => 0
+ if ($x->{sign} !~ /^[+-]$/ || # NaN or inf or
+ $LIB->_is_one($x->{_d})) # integer
+ {
+ return $downgrade -> new($x) if defined $downgrade;
+ return $x;
+ }
$x->{_n} = $LIB->_div($x->{_n}, $x->{_d}); # 22/7 => 3/1 w/ truncate
$x->{_d} = $LIB->_one(); # d => 1
$x->{_n} = $LIB->_inc($x->{_n}) if $x->{sign} eq '-'; # -22/7 => -4/1
+ return $downgrade -> new($x) if defined $downgrade;
$x;
}
sub bint {
- my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
+ my ($class, $x) = ref($_[0]) ? (ref($_[0]), $_[0]) : objectify(1, @_);
- return $x if ($x->{sign} !~ /^[+-]$/ || # +/-inf or NaN
- $LIB -> _is_one($x->{_d})); # already an integer
+ if ($x->{sign} !~ /^[+-]$/ || # NaN or inf or
+ $LIB->_is_one($x->{_d})) # integer
+ {
+ return $downgrade -> new($x) if defined $downgrade;
+ return $x;
+ }
$x->{_n} = $LIB->_div($x->{_n}, $x->{_d}); # 22/7 => 3/1 w/ truncate
$x->{_d} = $LIB->_one(); # d => 1
$x->{sign} = '+' if $x->{sign} eq '-' && $LIB -> _is_zero($x->{_n});
+ return $downgrade -> new($x) if defined $downgrade;
return $x;
}
@@ -1279,6 +1451,8 @@ sub bpow {
($class, $x, $y, @r) = objectify(2, @_);
}
+ return $x if $x->modify('bpow');
+
# $x and/or $y is a NaN
return $x->bnan() if $x->is_nan() || $y->is_nan();
@@ -1304,21 +1478,28 @@ sub bpow {
return $x->binf("+");
}
- if ($x->is_zero()) {
- return $x->binf() if $y->is_negative();
- return $x->bone("+") if $y->is_zero();
+ if ($x -> is_zero()) {
+ return $x -> bone() if $y -> is_zero();
+ return $x -> binf() if $y -> is_negative();
return $x;
- } elsif ($x->is_one()) {
- return $x->round(@r) if $y->is_odd(); # x is -1, y is odd => -1
- return $x->babs()->round(@r); # x is -1, y is even => 1
- } elsif ($y->is_zero()) {
- return $x->bone(@r); # x^0 and x != 0 => 1
- } elsif ($y->is_one()) {
- return $x->round(@r); # x^1 => x
}
- # we don't support complex numbers, so return NaN
- return $x->bnan() if $x->is_negative() && !$y->is_int();
+ # We don't support complex numbers, so upgrade or return NaN.
+
+ if ($x -> is_negative() && !$y -> is_int()) {
+ return $upgrade -> bpow($upgrade -> new($x), $y, @r)
+ if defined $upgrade;
+ return $x -> bnan();
+ }
+
+ if ($x -> is_one("+") || $y -> is_one()) {
+ return $x;
+ }
+
+ if ($x -> is_one("-")) {
+ return $x if $y -> is_odd();
+ return $x -> bneg();
+ }
# (a/b)^-(c/d) = (b/a)^(c/d)
($x->{_n}, $x->{_d}) = ($x->{_d}, $x->{_n}) if $y->is_negative();
@@ -1348,11 +1529,11 @@ sub blog {
# $x->blog(undef) signals that the base is Euler's number.
if (!ref($_[0]) && $_[0] =~ /^[A-Za-z]|::/) {
- # E.g., Math::BigFloat->blog(256, 2)
+ # E.g., Math::BigRat->blog(256, 2)
($class, $x, $base, @r) =
defined $_[2] ? objectify(2, @_) : objectify(1, @_);
} else {
- # E.g., Math::BigFloat::blog(256, 2) or $x->blog(2)
+ # E.g., Math::BigRat::blog(256, 2) or $x->blog(2)
($class, $x, $base, @r) =
defined $_[1] ? objectify(2, @_) : objectify(1, @_);
}
@@ -1393,20 +1574,50 @@ sub blog {
return $x -> binf($sign);
}
+ # Now take care of the cases where $x and/or $base is 1/N.
+ #
+ # log(1/N) / log(B) = -log(N)/log(B)
+ # log(1/N) / log(1/B) = log(N)/log(B)
+ # log(N) / log(1/B) = -log(N)/log(B)
+
+ my $neg = 0;
+ if ($x -> numerator() -> is_one()) {
+ $x -> binv();
+ $neg = !$neg;
+ }
+ if (defined(blessed($base)) && $base -> isa($class)) {
+ if ($base -> numerator() -> is_one()) {
+ $base = $base -> copy() -> binv();
+ $neg = !$neg;
+ }
+ }
+
+ # disable upgrading and downgrading
+
+ require Math::BigFloat;
+ my $upg = Math::BigFloat -> upgrade();
+ my $dng = Math::BigFloat -> downgrade();
+ Math::BigFloat -> upgrade(undef);
+ Math::BigFloat -> downgrade(undef);
+
# At this point we are done handling all exception cases and trivial cases.
$base = Math::BigFloat -> new($base) if defined $base;
+ my $xnum = Math::BigFloat -> new($LIB -> _str($x->{_n}));
+ my $xden = Math::BigFloat -> new($LIB -> _str($x->{_d}));
+ my $xstr = $xnum -> bdiv($xden) -> blog($base, @r) -> bsstr();
- my $xn = Math::BigFloat -> new($LIB -> _str($x->{_n}));
- my $xd = Math::BigFloat -> new($LIB -> _str($x->{_d}));
+ # reset upgrading and downgrading
- my $xtmp = Math::BigRat -> new($xn -> bdiv($xd) -> blog($base, @r) -> bsstr());
+ Math::BigFloat -> upgrade($upg);
+ Math::BigFloat -> downgrade($dng);
- $x -> {sign} = $xtmp -> {sign};
- $x -> {_n} = $xtmp -> {_n};
- $x -> {_d} = $xtmp -> {_d};
+ my $xobj = Math::BigRat -> new($xstr);
+ $x -> {sign} = $xobj -> {sign};
+ $x -> {_n} = $xobj -> {_n};
+ $x -> {_d} = $xobj -> {_d};
- return $x;
+ return $neg ? $x -> bneg() : $x;
}
sub bexp {
@@ -1513,13 +1724,18 @@ sub bnok {
($class, $x, $y, @r) = objectify(2, @_);
}
- my $xint = Math::BigInt -> new($x -> bint() -> bsstr());
- my $yint = Math::BigInt -> new($y -> bint() -> bsstr());
+ return $x->bnan() if $x->is_nan() || $y->is_nan();
+ return $x->bnan() if (($x->is_finite() && !$x->is_int()) ||
+ ($y->is_finite() && !$y->is_int()));
+
+ my $xint = Math::BigInt -> new($x -> bstr());
+ my $yint = Math::BigInt -> new($y -> bstr());
$xint -> bnok($yint);
+ my $xrat = Math::BigRat -> new($xint);
- $x -> {sign} = $xint -> {sign};
- $x -> {_n} = $xint -> {_n};
- $x -> {_d} = $xint -> {_d};
+ $x -> {sign} = $xrat -> {sign};
+ $x -> {_n} = $xrat -> {_n};
+ $x -> {_d} = $xrat -> {_d};
return $x;
}
@@ -1570,7 +1786,7 @@ sub bmodpow {
my $yint = Math::BigInt -> new($y -> copy() -> bint());
my $mint = Math::BigInt -> new($m -> copy() -> bint());
- $xint -> bmodpow($y, $m, @r);
+ $xint -> bmodpow($yint, $mint, @r);
my $xtmp = Math::BigRat -> new($xint -> bsstr());
$x -> {sign} = $xtmp -> {sign};
@@ -1592,7 +1808,7 @@ sub bmodinv {
my $xint = Math::BigInt -> new($x -> copy() -> bint());
my $yint = Math::BigInt -> new($y -> copy() -> bint());
- $xint -> bmodinv($y, @r);
+ $xint -> bmodinv($yint, @r);
my $xtmp = Math::BigRat -> new($xint -> bsstr());
$x -> {sign} = $xtmp -> {sign};
@@ -1651,7 +1867,7 @@ sub bsqrt {
}
sub blsft {
- my ($class, $x, $y, $b, @r) = objectify(2, @_);
+ my ($class, $x, $y, $b) = objectify(2, @_);
$b = 2 if !defined $b;
$b = $class -> new($b) unless ref($b) && $b -> isa($class);
@@ -1665,7 +1881,7 @@ sub blsft {
}
sub brsft {
- my ($class, $x, $y, $b, @r) = objectify(2, @_);
+ my ($class, $x, $y, $b) = objectify(2, @_);
$b = 2 if !defined $b;
$b = $class -> new($b) unless ref($b) && $b -> isa($class);
@@ -1776,15 +1992,24 @@ sub bnot {
# round
sub round {
- $_[0];
+ my $x = shift;
+ return $downgrade -> new($x) if defined($downgrade) &&
+ ($x -> is_int() || $x -> is_inf() || $x -> is_nan());
+ $x;
}
sub bround {
- $_[0];
+ my $x = shift;
+ return $downgrade -> new($x) if defined($downgrade) &&
+ ($x -> is_int() || $x -> is_inf() || $x -> is_nan());
+ $x;
}
sub bfround {
- $_[0];
+ my $x = shift;
+ return $downgrade -> new($x) if defined($downgrade) &&
+ ($x -> is_int() || $x -> is_inf() || $x -> is_nan());
+ $x;
}
##############################################################################
@@ -1803,9 +2028,9 @@ sub bcmp {
if ($x->{sign} !~ /^[+-]$/ || $y->{sign} !~ /^[+-]$/) {
# $x is NaN and/or $y is NaN
- return undef if $x->{sign} eq $nan || $y->{sign} eq $nan;
+ return if $x->{sign} eq $nan || $y->{sign} eq $nan;
# $x and $y are both either +inf or -inf
- return 0 if $x->{sign} eq $y->{sign} && $x->{sign} =~ /^[+-]inf$/;
+ return 0 if $x->{sign} eq $y->{sign} && $x->{sign} =~ /^[+-]inf$/;
# $x = +inf and $y < +inf
return +1 if $x->{sign} eq '+inf';
# $x = -inf and $y > -inf
@@ -1850,9 +2075,9 @@ sub bacmp {
if (($x->{sign} !~ /^[+-]$/) || ($y->{sign} !~ /^[+-]$/)) {
# handle +-inf and NaN
- return undef if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
- return 0 if $x->{sign} =~ /^[+-]inf$/ && $y->{sign} =~ /^[+-]inf$/;
- return 1 if $x->{sign} =~ /^[+-]inf$/ && $y->{sign} !~ /^[+-]inf$/;
+ return if (($x->{sign} eq $nan) || ($y->{sign} eq $nan));
+ return 0 if $x->{sign} =~ /^[+-]inf$/ && $y->{sign} =~ /^[+-]inf$/;
+ return 1 if $x->{sign} =~ /^[+-]inf$/ && $y->{sign} !~ /^[+-]inf$/;
return -1;
}
@@ -1864,7 +2089,7 @@ sub bacmp {
sub beq {
my $self = shift;
my $selfref = ref $self;
- my $class = $selfref || $self;
+ #my $class = $selfref || $self;
croak 'beq() is an instance method, not a class method' unless $selfref;
croak 'Wrong number of arguments for beq()' unless @_ == 1;
@@ -1876,7 +2101,7 @@ sub beq {
sub bne {
my $self = shift;
my $selfref = ref $self;
- my $class = $selfref || $self;
+ #my $class = $selfref || $self;
croak 'bne() is an instance method, not a class method' unless $selfref;
croak 'Wrong number of arguments for bne()' unless @_ == 1;
@@ -1888,7 +2113,7 @@ sub bne {
sub blt {
my $self = shift;
my $selfref = ref $self;
- my $class = $selfref || $self;
+ #my $class = $selfref || $self;
croak 'blt() is an instance method, not a class method' unless $selfref;
croak 'Wrong number of arguments for blt()' unless @_ == 1;
@@ -1900,7 +2125,7 @@ sub blt {
sub ble {
my $self = shift;
my $selfref = ref $self;
- my $class = $selfref || $self;
+ #my $class = $selfref || $self;
croak 'ble() is an instance method, not a class method' unless $selfref;
croak 'Wrong number of arguments for ble()' unless @_ == 1;
@@ -1912,7 +2137,7 @@ sub ble {
sub bgt {
my $self = shift;
my $selfref = ref $self;
- my $class = $selfref || $self;
+ #my $class = $selfref || $self;
croak 'bgt() is an instance method, not a class method' unless $selfref;
croak 'Wrong number of arguments for bgt()' unless @_ == 1;
@@ -1924,7 +2149,7 @@ sub bgt {
sub bge {
my $self = shift;
my $selfref = ref $self;
- my $class = $selfref || $self;
+ #my $class = $selfref || $self;
croak 'bge() is an instance method, not a class method'
unless $selfref;
@@ -1943,7 +2168,17 @@ sub numify {
# Non-finite number.
- return $x->bstr() if $x->{sign} !~ /^[+-]$/;
+ if ($x -> is_nan()) {
+ require Math::Complex;
+ my $inf = $Math::Complex::Inf;
+ return $inf - $inf;
+ }
+
+ if ($x -> is_inf()) {
+ require Math::Complex;
+ my $inf = $Math::Complex::Inf;
+ return $x -> is_negative() ? -$inf : $inf;
+ }
# Finite number.
@@ -1956,34 +2191,70 @@ sub numify {
}
sub as_int {
- my ($self, $x) = ref($_[0]) ? (undef, $_[0]) : objectify(1, @_);
+ my ($class, $x) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- # NaN, inf etc
- return Math::BigInt->new($x->{sign}) if $x->{sign} !~ /^[+-]$/;
+ return $x -> copy() if $x -> isa("Math::BigInt");
- my $u = Math::BigInt->bzero();
- $u->{value} = $LIB->_div($LIB->_copy($x->{_n}), $x->{_d}); # 22/7 => 3
- $u->bneg if $x->{sign} eq '-'; # no negative zero
- $u;
+ # disable upgrading and downgrading
+
+ require Math::BigInt;
+ my $upg = Math::BigInt -> upgrade();
+ my $dng = Math::BigInt -> downgrade();
+ Math::BigInt -> upgrade(undef);
+ Math::BigInt -> downgrade(undef);
+
+ my $y;
+ if ($x -> is_inf()) {
+ $y = Math::BigInt -> binf($x->sign());
+ } elsif ($x -> is_nan()) {
+ $y = Math::BigInt -> bnan();
+ } else {
+ my $int = $LIB -> _div($LIB -> _copy($x->{_n}), $x->{_d}); # 22/7 => 3
+ $y = Math::BigInt -> new($LIB -> _str($int));
+ $y = $y -> bneg() if $x -> is_neg();
+ }
+
+ # reset upgrading and downgrading
+
+ Math::BigInt -> upgrade($upg);
+ Math::BigInt -> downgrade($dng);
+
+ return $y;
}
sub as_float {
- # return N/D as Math::BigFloat
+ my ($class, $x, @r) = ref($_[0]) ? (ref($_[0]), @_) : objectify(1, @_);
- # set up parameters
- my ($class, $x, @r) = (ref($_[0]), @_);
- # objectify is costly, so avoid it
- ($class, $x, @r) = objectify(1, @_) unless ref $_[0];
+ return $x -> copy() if $x -> isa("Math::BigFloat");
- # NaN, inf etc
- return Math::BigFloat->new($x->{sign}) if $x->{sign} !~ /^[+-]$/;
+ # disable upgrading and downgrading
- my $xd = Math::BigFloat -> new($LIB -> _str($x->{_d}));
- my $xflt = Math::BigFloat -> new($LIB -> _str($x->{_n}));
- $xflt -> {sign} = $x -> {sign};
- $xflt -> bdiv($xd, @r);
+ require Math::BigFloat;
+ my $upg = Math::BigFloat -> upgrade();
+ my $dng = Math::BigFloat -> downgrade();
+ Math::BigFloat -> upgrade(undef);
+ Math::BigFloat -> downgrade(undef);
+
+ my $y;
+ if ($x -> is_inf()) {
+ $y = Math::BigFloat -> binf($x->sign());
+ } elsif ($x -> is_nan()) {
+ $y = Math::BigFloat -> bnan();
+ } else {
+ $y = Math::BigFloat -> new($LIB -> _str($x->{_n}));
+ $y -> {sign} = $x -> {sign};
+ unless ($LIB -> _is_one($x->{_d})) {
+ my $xd = Math::BigFloat -> new($LIB -> _str($x->{_d}));
+ $y -> bdiv($xd, @r);
+ }
+ }
+
+ # reset upgrading and downgrading
- return $xflt;
+ Math::BigFloat -> upgrade($upg);
+ Math::BigFloat -> downgrade($dng);
+
+ return $y;
}
sub as_bin {
@@ -2019,18 +2290,27 @@ sub as_oct {
sub from_hex {
my $class = shift;
- $class->new(@_);
+ # The relationship should probably go the otherway, i.e, that new() calls
+ # from_hex(). Fixme!
+ my ($x, @r) = @_;
+ $x =~ s|^\s*(?:0?[Xx]_*)?|0x|;
+ $class->new($x, @r);
}
sub from_bin {
my $class = shift;
- $class->new(@_);
+ # The relationship should probably go the otherway, i.e, that new() calls
+ # from_bin(). Fixme!
+ my ($x, @r) = @_;
+ $x =~ s|^\s*(?:0?[Bb]_*)?|0b|;
+ $class->new($x, @r);
}
sub from_oct {
my $class = shift;
+ # Why is this different from from_hex() and from_bin()? Fixme!
my @parts;
for my $c (@_) {
push @parts, Math::BigInt->from_oct($c);
@@ -2043,57 +2323,101 @@ sub from_oct {
sub import {
my $class = shift;
- my $l = scalar @_;
- my $lib = ''; my @a;
- my $try = 'try';
-
- for (my $i = 0; $i < $l ; $i++) {
- if ($_[$i] eq ':constant') {
- # this rest causes overlord er load to step in
- overload::constant float => sub { $class->new(shift); };
+ my @a; # unrecognized arguments
+ my $lib_param = '';
+ my $lib_value = '';
+
+ while (@_) {
+ my $param = shift;
+
+ # Enable overloading of constants.
+
+ if ($param eq ':constant') {
+ overload::constant
+
+ integer => sub {
+ $class -> new(shift);
+ },
+
+ float => sub {
+ $class -> new(shift);
+ },
+
+ binary => sub {
+ # E.g., a literal 0377 shall result in an object whose value
+ # is decimal 255, but new("0377") returns decimal 377.
+ return $class -> from_oct($_[0]) if $_[0] =~ /^0_*[0-7]/;
+ $class -> new(shift);
+ };
+ next;
}
- # elsif ($_[$i] eq 'upgrade')
- # {
- # # this causes upgrading
- # $upgrade = $_[$i+1]; # or undef to disable
- # $i++;
- # }
- elsif ($_[$i] eq 'downgrade') {
- # this causes downgrading
- $downgrade = $_[$i+1]; # or undef to disable
- $i++;
- } elsif ($_[$i] =~ /^(lib|try|only)\z/) {
- $lib = $_[$i+1] || ''; # default Calc
- $try = $1; # lib, try or only
- $i++;
- } elsif ($_[$i] eq 'with') {
- # this argument is no longer used
- #$LIB = $_[$i+1] || 'Math::BigInt::Calc'; # default Math::BigInt::Calc
- $i++;
- } else {
- push @a, $_[$i];
+
+ # Upgrading.
+
+ if ($param eq 'upgrade') {
+ $class -> upgrade(shift);
+ next;
}
- }
- require Math::BigInt;
- # let use Math::BigInt lib => 'GMP'; use Math::BigRat; still have GMP
- if ($lib ne '') {
- my @c = split /\s*,\s*/, $lib;
- foreach (@c) {
- $_ =~ tr/a-zA-Z0-9://cd; # limit to sane characters
+ # Downgrading.
+
+ if ($param eq 'downgrade') {
+ $class -> downgrade(shift);
+ next;
}
- $lib = join(",", @c);
+
+ # Accuracy.
+
+ if ($param eq 'accuracy') {
+ $class -> accuracy(shift);
+ next;
+ }
+
+ # Precision.
+
+ if ($param eq 'precision') {
+ $class -> precision(shift);
+ next;
+ }
+
+ # Rounding mode.
+
+ if ($param eq 'round_mode') {
+ $class -> round_mode(shift);
+ next;
+ }
+
+ # Backend library.
+
+ if ($param =~ /^(lib|try|only)\z/) {
+ # alternative library
+ $lib_param = $param; # "lib", "try", or "only"
+ $lib_value = shift;
+ next;
+ }
+
+ if ($param eq 'with') {
+ # alternative class for our private parts()
+ # XXX: no longer supported
+ # $LIB = shift() || 'Calc';
+ # carp "'with' is no longer supported, use 'lib', 'try', or 'only'";
+ shift;
+ next;
+ }
+
+ # Unrecognized parameter.
+
+ push @a, $param;
}
- my @import = ('objectify');
- push @import, $try => $lib if $lib ne '';
- # LIB already loaded, so feed it our lib arguments
- Math::BigInt->import(@import);
+ require Math::BigInt;
- $LIB = Math::BigFloat->config("lib");
+ my @import = ('objectify');
+ push @import, $lib_param, $lib_value if $lib_param ne '';
+ Math::BigInt -> import(@import);
- # register us with LIB to get notified of future lib changes
- Math::BigInt::_register_callback($class, sub { $LIB = $_[0]; });
+ # find out which one was actually loaded
+ $LIB = Math::BigInt -> config("lib");
# any non :constant stuff is handled by Exporter (loaded by parent class)
# even if @_ is empty, to give it a chance
@@ -2109,7 +2433,7 @@ __END__
=head1 NAME
-Math::BigRat - Arbitrary big rational numbers
+Math::BigRat - arbitrary size rational number math package
=head1 SYNOPSIS
@@ -2201,6 +2525,16 @@ Returns a copy of the denominator (the part under the line) as positive BigInt.
Return a list consisting of (signed) numerator and (unsigned) denominator as
BigInts.
+=item dparts()
+
+Returns the integer part and the fraction part.
+
+=item fparts()
+
+Returns the smallest possible numerator and denominator so that the numerator
+divided by the denominator gives back the original value. For finite numbers,
+both values are integers. Mnemonic: fraction.
+
=item numify()
my $y = $x->numify();
@@ -2513,7 +2847,13 @@ Subtracts $y from $x and returns the result.
In scalar context, divides $x by $y and returns the result. In list context,
does floored division (F-division), returning an integer $q and a remainder $r
so that $x = $q * $y + $r. The remainer (modulo) is equal to what is returned
-by C<$x->bmod($y)>.
+by C<< $x->bmod($y) >>.
+
+=item binv()
+
+ $x->binv();
+
+Inverse of $x.
=item bdec()
@@ -2695,6 +3035,70 @@ supported.
=back
+=head1 NUMERIC LITERALS
+
+After C<use Math::BigRat ':constant'> all numeric literals in the given scope
+are converted to C<Math::BigRat> objects. This conversion happens at compile
+time. Every non-integer is convert to a NaN.
+
+For example,
+
+ perl -MMath::BigRat=:constant -le 'print 2**150'
+
+prints the exact value of C<2**150>. Note that without conversion of constants
+to objects the expression C<2**150> is calculated using Perl scalars, which
+leads to an inaccurate result.
+
+Please note that strings are not affected, so that
+
+ use Math::BigRat qw/:constant/;
+
+ $x = "1234567890123456789012345678901234567890"
+ + "123456789123456789";
+
+does give you what you expect. You need an explicit Math::BigRat->new() around
+at least one of the operands. You should also quote large constants to prevent
+loss of precision:
+
+ use Math::BigRat;
+
+ $x = Math::BigRat->new("1234567889123456789123456789123456789");
+
+Without the quotes Perl first converts the large number to a floating point
+constant at compile time, and then converts the result to a Math::BigRat object
+at run time, which results in an inaccurate result.
+
+=head2 Hexadecimal, octal, and binary floating point literals
+
+Perl (and this module) accepts hexadecimal, octal, and binary floating point
+literals, but use them with care with Perl versions before v5.32.0, because some
+versions of Perl silently give the wrong result. Below are some examples of
+different ways to write the number decimal 314.
+
+Hexadecimal floating point literals:
+
+ 0x1.3ap+8 0X1.3AP+8
+ 0x1.3ap8 0X1.3AP8
+ 0x13a0p-4 0X13A0P-4
+
+Octal floating point literals (with "0" prefix):
+
+ 01.164p+8 01.164P+8
+ 01.164p8 01.164P8
+ 011640p-4 011640P-4
+
+Octal floating point literals (with "0o" prefix) (requires v5.34.0):
+
+ 0o1.164p+8 0O1.164P+8
+ 0o1.164p8 0O1.164P8
+ 0o11640p-4 0O11640P-4
+
+Binary floating point literals:
+
+ 0b1.0011101p+8 0B1.0011101P+8
+ 0b1.0011101p8 0B1.0011101P8
+ 0b10011101000p-2 0B10011101000P-2
+
=head1 BUGS
Please report any bugs or feature requests to
@@ -2714,43 +3118,25 @@ You can also look for information at:
=over 4
-=item * RT: CPAN's request tracker
-
-L<https://rt.cpan.org/Public/Dist/Display.html?Name=Math-BigRat>
-
-=item * AnnoCPAN: Annotated CPAN documentation
+=item * GitHub
-L<http://annocpan.org/dist/Math-BigRat>
+L<https://github.com/pjacklam/p5-Math-BigRat>
-=item * CPAN Ratings
+=item * RT: CPAN's request tracker
-L<http://cpanratings.perl.org/dist/Math-BigRat>
+L<https://rt.cpan.org/Dist/Display.html?Name=Math-BigRat>
-=item * Search CPAN
+=item * MetaCPAN
-L<http://search.cpan.org/dist/Math-BigRat/>
+L<https://metacpan.org/release/Math-BigRat>
=item * CPAN Testers Matrix
L<http://matrix.cpantesters.org/?dist=Math-BigRat>
-=item * The Bignum mailing list
-
-=over 4
-
-=item * Post to mailing list
-
-C<bignum at lists.scsys.co.uk>
-
-=item * View mailing list
-
-L<http://lists.scsys.co.uk/pipermail/bignum/>
-
-=item * Subscribe/Unsubscribe
-
-L<http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/bignum>
+=item * CPAN Ratings
-=back
+L<https://cpanratings.perl.org/dist/Math-BigRat>
=back
@@ -2774,7 +3160,7 @@ Tels L<http://bloodgate.com/> 2001-2009.
=item *
-Maintained by Peter John Acklam <pjacklam@online.no> 2011-
+Maintained by Peter John Acklam <pjacklam@gmail.com> 2011-
=back
diff --git a/Master/tlpkg/tlperl/lib/Math/BigRat/Trace.pm b/Master/tlpkg/tlperl/lib/Math/BigRat/Trace.pm
new file mode 100755
index 00000000000..e61df01317c
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Math/BigRat/Trace.pm
@@ -0,0 +1,76 @@
+# -*- mode: perl; -*-
+
+package Math::BigRat::Trace;
+
+use strict;
+use warnings;
+
+use Exporter;
+use Math::BigRat;
+
+our @ISA = qw(Exporter Math::BigRat);
+
+our $VERSION = '0.66';
+
+use overload; # inherit overload from Math::BigRat
+
+# Globals
+our $accuracy = undef;
+our $precision = undef;
+our $round_mode = 'even';
+our $div_scale = 40;
+
+sub new {
+ my $proto = shift;
+ my $class = ref($proto) || $proto;
+
+ my $value = shift;
+
+ my $a = $accuracy;
+ $a = $_[0] if defined $_[0];
+
+ my $p = $precision;
+ $p = $_[1] if defined $_[1];
+
+ my $self = $class -> SUPER::new($value, $a, $p, $round_mode);
+
+ printf "Math::BigRat new '%s' => '%s' (%s)\n",
+ $value, $self, ref($self);
+
+ return $self;
+}
+
+sub import {
+ my $class = shift;
+
+ printf "%s -> import(%s)\n", $class, join(", ", @_);
+
+ # we catch the constants, the rest goes to parent
+
+ my $constant = grep { $_ eq ':constant' } @_;
+ my @a = grep { $_ ne ':constant' } @_;
+
+ if ($constant) {
+ overload::constant
+
+ integer => sub {
+ $class -> new(shift);
+ },
+
+ float => sub {
+ $class -> new(shift);
+ },
+
+ binary => sub {
+ # E.g., a literal 0377 shall result in an object whose value
+ # is decimal 255, but new("0377") returns decimal 377.
+ return $class -> from_oct($_[0]) if $_[0] =~ /^0_*[0-7]/;
+ $class -> new(shift);
+ };
+ }
+
+ $class -> SUPER::import(@a); # need it for subclasses
+ #$self -> export_to_level(1, $class, @_); # need this ?
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/lib/Math/Complex.pm b/Master/tlpkg/tlperl/lib/Math/Complex.pm
index 6cab2689bdc..e6d15b70b9a 100644
--- a/Master/tlpkg/tlperl/lib/Math/Complex.pm
+++ b/Master/tlpkg/tlperl/lib/Math/Complex.pm
@@ -10,7 +10,7 @@ package Math::Complex;
{ use 5.006; }
use strict;
-our $VERSION = 1.59_02;
+our $VERSION = 1.62;
use Config;
@@ -1847,7 +1847,7 @@ number mathematicians call C<j> such that:
is a simple matter of writing:
- $j = ((root(1, 3))[1];
+ $j = (root(1, 3))[1];
The I<k>th root for C<z = [r,t]> is given by:
diff --git a/Master/tlpkg/tlperl/lib/Math/Trig.pm b/Master/tlpkg/tlperl/lib/Math/Trig.pm
index 1d9612a41c2..218ab690a5f 100644
--- a/Master/tlpkg/tlperl/lib/Math/Trig.pm
+++ b/Master/tlpkg/tlperl/lib/Math/Trig.pm
@@ -15,7 +15,7 @@ require Exporter;
our @ISA = qw(Exporter);
-our $VERSION = 1.23;
+our $VERSION = 1.62;
my @angcnv = qw(rad2deg rad2grad
deg2rad deg2grad
@@ -47,8 +47,9 @@ my @pi = qw(pi pi2 pi4 pip2 pip4);
our @EXPORT_OK = (@rdlcnv, @greatcircle, @pi, 'Inf');
# See e.g. the following pages:
-# http://www.movable-type.co.uk/scripts/LatLong.html
-# http://williams.best.vwh.net/avform.htm
+# https://www.movable-type.co.uk/scripts/latlong.html
+# https://edwilliams.org/avform.htm
+# https://en.wikipedia.org/wiki/Great-circle_distance
our %EXPORT_TAGS = ('radial' => [ @rdlcnv ],
'great_circle' => [ @greatcircle ],
@@ -153,12 +154,19 @@ sub great_circle_distance {
$rho = 1 unless defined $rho; # Default to the unit sphere.
- my $lat0 = pip2 - $phi0;
- my $lat1 = pip2 - $phi1;
+ my $dphi = $phi1 - $phi0;
+ my $dtheta = $theta1 - $theta0;
+
+ # A formula that is accurate for all distances is the following special
+ # case of the Vincenty formula for an ellipsoid with equal major and minor
+ # axes. See
+ # https://en.wikipedia.org/wiki/Great-circle_distance#Computational_formulas
- return $rho *
- acos_real( cos( $lat0 ) * cos( $lat1 ) * cos( $theta0 - $theta1 ) +
- sin( $lat0 ) * sin( $lat1 ) );
+ my $c1 = sin($phi1) * sin($dtheta);
+ my $c2 = sin($phi1) * cos($dtheta);
+ my $c3 = sin($phi0) * cos($phi1) - cos($phi0) * $c2;
+ my $c4 = cos($phi0) * cos($phi1) + sin($phi0) * $c2;
+ return $rho * atan2(sqrt($c1 * $c1 + $c3 * $c3), $c4);
}
sub great_circle_direction {
@@ -247,7 +255,7 @@ Math::Trig - trigonometric functions
$rad = deg2rad(120);
- # Import constants pi2, pip2, pip4 (2*pi, pi/2, pi/4).
+ # Import constants pi2, pi4, pip2, pip4 (2*pi, 4*pi, pi/2, pi/4).
use Math::Trig ':pi';
# Import the conversions between cartesian/spherical/cylindrical.
@@ -417,7 +425,7 @@ and the imaginary part of approximately C<-1.317>.
=back
The full circle is 2 I<pi> radians or I<360> degrees or I<400> gradians.
-The result is by default wrapped to be inside the [0, {2pi,360,400}[ circle.
+The result is by default wrapped to be inside the [0, {2pi,360,400}] circle.
If you don't want this, supply a true second argument:
$zillions_of_radians = deg2rad($zillions_of_degrees, 1);
@@ -465,15 +473,15 @@ B<All angles are in radians>.
B<Cartesian> coordinates are the usual rectangular I<(x, y, z)>-coordinates.
-Spherical coordinates, I<(rho, theta, pi)>, are three-dimensional
+Spherical coordinates, I<(rho, theta, phi)>, are three-dimensional
coordinates which define a point in three-dimensional space. They are
based on a sphere surface. The radius of the sphere is B<rho>, also
known as the I<radial> coordinate. The angle in the I<xy>-plane
(around the I<z>-axis) is B<theta>, also known as the I<azimuthal>
coordinate. The angle from the I<z>-axis is B<phi>, also known as the
-I<polar> coordinate. The North Pole is therefore I<0, 0, rho>, and
-the Gulf of Guinea (think of the missing big chunk of Africa) I<0,
-pi/2, rho>. In geographical terms I<phi> is latitude (northward
+I<polar> coordinate. The North Pole is therefore I<rho, 0, 0>, and
+the Gulf of Guinea (think of the missing big chunk of Africa) I<rho,
+0, pi/2>. In geographical terms I<phi> is latitude (northward
positive, southward negative) and I<theta> is longitude (eastward
positive, westward negative).
@@ -537,26 +545,19 @@ points.
=head2 great_circle_distance
-You can compute spherical distances, called B<great circle distances>,
-by importing the great_circle_distance() function:
+Returns the great circle distance between two points on a sphere.
- use Math::Trig 'great_circle_distance';
+ $distance = great_circle_distance($theta0, $phi0, $theta1, $phi1, [, $rho]);
- $distance = great_circle_distance($theta0, $phi0, $theta1, $phi1, [, $rho]);
+Where ($theta0, $phi0) and ($theta1, $phi1) are the spherical coordinates of
+the two points, respectively. The distance is in C<$rho> units. The C<$rho>
+is optional. It defaults to 1 (the unit sphere).
-The I<great circle distance> is the shortest distance between two
-points on a sphere. The distance is in C<$rho> units. The C<$rho> is
-optional, it defaults to 1 (the unit sphere), therefore the distance
-defaults to radians.
-
-If you think geographically the I<theta> are longitudes: zero at the
-Greenwhich meridian, eastward positive, westward negative -- and the
-I<phi> are latitudes: zero at the North Pole, northward positive,
-southward negative. B<NOTE>: this formula thinks in mathematics, not
-geographically: the I<phi> zero is at the North Pole, not at the
-Equator on the west coast of Africa (Bay of Guinea). You need to
-subtract your geographical coordinates from I<pi/2> (also known as 90
-degrees).
+If you are using geographic coordinates, latitude and longitude, you need to
+adjust for the fact that latitude is zero at the equator increasing towards
+the north and decreasing towards the south. Assuming ($lat0, $lon0) and
+($lat1, $lon1) are the geographic coordinates in radians of the two points,
+the distance can be computed with
$distance = great_circle_distance($lon0, pi/2 - $lat0,
$lon1, pi/2 - $lat1, $rho);
@@ -617,15 +618,22 @@ The great_circle_midpoint() is just a special case of
($thetai, $phii) =
great_circle_waypoint($theta0, $phi0, $theta1, $phi1, $way);
-Where the $way is a value from zero ($theta0, $phi0) to one ($theta1,
-$phi1). Note that antipodal points (where their distance is I<pi>
-radians) do not have waypoints between them (they would have an an
-"equator" between them), and therefore C<undef> is returned for
-antipodal points. If the points are the same and the distance
-therefore zero and all waypoints therefore identical, the first point
-(either point) is returned.
+Where $way indicates the position of the waypoint along the great
+circle arc through the starting point ($theta0, $phi0) and the end
+point ($theta1, $phi1) relative to the distance from the starting
+point to the end point. So $way = 0 gives the starting point, $way = 1
+gives the end point, $way < 0 gives a point "behind" the starting
+point, and $way > 1 gives a point beyond the end point. $way defaults
+to 0.5 if not given.
+
+Note that antipodal points (where their distance is I<pi> radians) do
+not have unique waypoints between them, and therefore C<undef> is
+returned in such cases. If the points are the same, so the distance
+between them is zero, all waypoints are identical to the starting/end
+point.
-The thetas, phis, direction, and distance in the above are all in radians.
+The thetas, phis, direction, and distance in the above are all in
+radians.
You can import all the great circle formulas by
@@ -661,11 +669,13 @@ straight north being zero, straight east being pi/2).
The midpoint between London and Tokyo being
- use Math::Trig qw(great_circle_midpoint);
+ use Math::Trig qw(great_circle_midpoint rad2deg);
my @M = great_circle_midpoint(@L, @T);
+ sub SWNE { rad2deg( $_[0] ), 90 - rad2deg( $_[1] ) }
+ my @lonlat = SWNE(@M);
-or about 69 N 89 E, in the frozen wastes of Siberia.
+or about 69 N 89 E, on the Putorana Plateau of Siberia.
B<NOTE>: you B<cannot> get from A to B like this:
@@ -743,6 +753,8 @@ an answer instead of giving a fatal runtime error.
Do not attempt navigation using these formulas.
+=head1 SEE ALSO
+
L<Math::Complex>
=head1 AUTHORS
diff --git a/Master/tlpkg/tlperl/lib/Memoize.pm b/Master/tlpkg/tlperl/lib/Memoize.pm
index f4e6522d483..845e0b06952 100644
--- a/Master/tlpkg/tlperl/lib/Memoize.pm
+++ b/Master/tlpkg/tlperl/lib/Memoize.pm
@@ -1,207 +1,120 @@
# -*- mode: perl; perl-indent-level: 2; -*-
+# vim: ts=8 sw=2 sts=2 noexpandtab
+
# Memoize.pm
#
-# Transparent memoization of idempotent functions
-#
# Copyright 1998, 1999, 2000, 2001, 2012 M. J. Dominus.
# You may copy and distribute this program under the
-# same terms as Perl itself. If in doubt,
-# write to mjd-perl-memoize+@plover.com for a license.
-
-package Memoize;
-$VERSION = '1.03_01';
-
-# Compile-time constants
-sub SCALAR () { 0 }
-sub LIST () { 1 }
+# same terms as Perl itself.
+use strict; use warnings;
-#
-# Usage memoize(functionname/ref,
-# { NORMALIZER => coderef, INSTALL => name,
-# LIST_CACHE => descriptor, SCALAR_CACHE => descriptor }
-#
+package Memoize;
+our $VERSION = '1.16';
use Carp;
-use Exporter;
-use vars qw($DEBUG);
-use Config; # Dammit.
-@ISA = qw(Exporter);
-@EXPORT = qw(memoize);
-@EXPORT_OK = qw(unmemoize flush_cache);
-use strict;
+use Scalar::Util 1.11 (); # for set_prototype
-my %memotable;
-my %revmemotable;
-my @CONTEXT_TAGS = qw(MERGE TIE MEMORY FAULT HASH);
-my %IS_CACHE_TAG = map {($_ => 1)} @CONTEXT_TAGS;
+BEGIN { require Exporter; *import = \&Exporter::import }
+our @EXPORT = qw(memoize);
+our @EXPORT_OK = qw(unmemoize flush_cache);
-# Raise an error if the user tries to specify one of thesepackage as a
-# tie for LIST_CACHE
+my %memotable;
-my %scalar_only = map {($_ => 1)} qw(DB_File GDBM_File SDBM_File ODBM_File NDBM_File);
+sub CLONE {
+ my @info = values %memotable;
+ %memotable = map +($_->{WRAPPER} => $_), @info;
+}
sub memoize {
my $fn = shift;
my %options = @_;
- my $options = \%options;
-
+
unless (defined($fn) &&
(ref $fn eq 'CODE' || ref $fn eq '')) {
croak "Usage: memoize 'functionname'|coderef {OPTIONS}";
}
my $uppack = caller; # TCL me Elmo!
- my $cref; # Code reference to original function
my $name = (ref $fn ? undef : $fn);
-
- # Convert function names to code references
- $cref = &_make_cref($fn, $uppack);
-
- # Locate function prototype, if any
- my $proto = prototype $cref;
- if (defined $proto) { $proto = "($proto)" }
- else { $proto = "" }
-
- # I would like to get rid of the eval, but there seems not to be any
- # other way to set the prototype properly. The switch here for
- # 'usethreads' works around a bug in threadperl having to do with
- # magic goto. It would be better to fix the bug and use the magic
- # goto version everywhere.
- my $wrapper =
- $Config{usethreads}
- ? eval "sub $proto { &_memoizer(\$cref, \@_); }"
- : eval "sub $proto { unshift \@_, \$cref; goto &_memoizer; }";
+ my $cref = _make_cref($fn, $uppack);
my $normalizer = $options{NORMALIZER};
if (defined $normalizer && ! ref $normalizer) {
$normalizer = _make_cref($normalizer, $uppack);
}
-
- my $install_name;
- if (defined $options->{INSTALL}) {
- # INSTALL => name
- $install_name = $options->{INSTALL};
- } elsif (! exists $options->{INSTALL}) {
- # No INSTALL option provided; use original name if possible
- $install_name = $name;
- } else {
- # INSTALL => undef means don't install
- }
+
+ my $install_name = exists $options{INSTALL}
+ ? $options{INSTALL} # use given name (or, if undef: do not install)
+ : $name; # no INSTALL option provided: default to original name if possible
if (defined $install_name) {
$install_name = $uppack . '::' . $install_name
unless $install_name =~ /::/;
- no strict;
- local($^W) = 0; # ``Subroutine $install_name redefined at ...''
- *{$install_name} = $wrapper; # Install memoized version
}
- $revmemotable{$wrapper} = "" . $cref; # Turn code ref into hash key
+ # convert LIST_CACHE => MERGE to SCALAR_CACHE => MERGE
+ # to ensure TIE/HASH will always be checked by _check_suitable
+ if (($options{LIST_CACHE} || '') eq 'MERGE') {
+ $options{LIST_CACHE} = $options{SCALAR_CACHE};
+ $options{SCALAR_CACHE} = 'MERGE';
+ }
# These will be the caches
my %caches;
- for my $context (qw(SCALAR LIST)) {
- # suppress subsequent 'uninitialized value' warnings
- $options{"${context}_CACHE"} ||= '';
-
- my $cache_opt = $options{"${context}_CACHE"};
- my @cache_opt_args;
- if (ref $cache_opt) {
- @cache_opt_args = @$cache_opt;
- $cache_opt = shift @cache_opt_args;
- }
+ for my $context (qw(LIST SCALAR)) { # SCALAR_CACHE must be last, to process MERGE
+ my $fullopt = $options{"${context}_CACHE"} ||= 'MEMORY';
+ my ($cache_opt, @cache_opt_args) = ref $fullopt ? @$fullopt : $fullopt;
if ($cache_opt eq 'FAULT') { # no cache
$caches{$context} = undef;
} elsif ($cache_opt eq 'HASH') { # user-supplied hash
my $cache = $cache_opt_args[0];
- my $package = ref(tied %$cache);
- if ($context eq 'LIST' && $scalar_only{$package}) {
- croak("You can't use $package for LIST_CACHE because it can only store scalars");
- }
+ _check_suitable($context, ref tied %$cache);
$caches{$context} = $cache;
- } elsif ($cache_opt eq '' || $IS_CACHE_TAG{$cache_opt}) {
- # default is that we make up an in-memory hash
+ } elsif ($cache_opt eq 'TIE') {
+ carp("TIE option to memoize() is deprecated; use HASH instead")
+ if warnings::enabled('all');
+ my $module = shift(@cache_opt_args) || '';
+ _check_suitable($context, $module);
+ my $hash = $caches{$context} = {};
+ (my $modulefile = $module . '.pm') =~ s{::}{/}g;
+ require $modulefile;
+ tie(%$hash, $module, @cache_opt_args)
+ or croak "Couldn't tie memoize hash to `$module': $!";
+ } elsif ($cache_opt eq 'MEMORY') {
$caches{$context} = {};
- # (this might get tied later, or MERGEd away)
+ } elsif ($cache_opt eq 'MERGE' and not ref $fullopt) { # ['MERGE'] was never supported
+ die "cannot MERGE $context\_CACHE" if $context ne 'SCALAR'; # should never happen
+ die 'bad cache setup order' if not exists $caches{LIST}; # should never happen
+ $options{MERGED} = 1;
+ $caches{SCALAR} = $caches{LIST};
} else {
- croak "Unrecognized option to `${context}_CACHE': `$cache_opt' should be one of (@CONTEXT_TAGS); aborting";
+ croak "Unrecognized option to `${context}_CACHE': `$cache_opt' should be one of (MERGE TIE MEMORY FAULT HASH)";
}
}
- # Perhaps I should check here that you didn't supply *both* merge
- # options. But if you did, it does do something reasonable: They
- # both get merged to the same in-memory hash.
- if ($options{SCALAR_CACHE} eq 'MERGE' || $options{LIST_CACHE} eq 'MERGE') {
- $options{MERGED} = 1;
- $caches{SCALAR} = $caches{LIST};
- }
+ my $wrapper = _wrap($install_name, $cref, $normalizer, $options{MERGED}, \%caches);
- # Now deal with the TIE options
- {
- my $context;
- foreach $context (qw(SCALAR LIST)) {
- # If the relevant option wasn't `TIE', this call does nothing.
- _my_tie($context, $caches{$context}, $options); # Croaks on failure
- }
+ if (defined $install_name) {
+ no strict;
+ no warnings 'redefine';
+ *{$install_name} = $wrapper;
}
-
- # We should put some more stuff in here eventually.
- # We've been saying that for serveral versions now.
- # And you know what? More stuff keeps going in!
- $memotable{$cref} =
- {
- O => $options, # Short keys here for things we need to access frequently
- N => $normalizer,
+
+ $memotable{$wrapper} = {
+ L => $caches{LIST},
+ S => $caches{SCALAR},
U => $cref,
- MEMOIZED => $wrapper,
- PACKAGE => $uppack,
NAME => $install_name,
- S => $caches{SCALAR},
- L => $caches{LIST},
+ WRAPPER => $wrapper,
};
$wrapper # Return just memoized version
}
-# This function tries to load a tied hash class and tie the hash to it.
-sub _my_tie {
- my ($context, $hash, $options) = @_;
- my $fullopt = $options->{"${context}_CACHE"};
-
- # We already checked to make sure that this works.
- my $shortopt = (ref $fullopt) ? $fullopt->[0] : $fullopt;
-
- return unless defined $shortopt && $shortopt eq 'TIE';
- carp("TIE option to memoize() is deprecated; use HASH instead")
- if $^W;
-
- my @args = ref $fullopt ? @$fullopt : ();
- shift @args;
- my $module = shift @args;
- if ($context eq 'LIST' && $scalar_only{$module}) {
- croak("You can't use $module for LIST_CACHE because it can only store scalars");
- }
- my $modulefile = $module . '.pm';
- $modulefile =~ s{::}{/}g;
- eval {
- local @INC = @INC;
- pop @INC if $INC[-1] eq '.';
- require $modulefile
- };
- if ($@) {
- croak "Memoize: Couldn't load hash tie module `$module': $@; aborting";
- }
- my $rc = (tie %$hash => $module, @args);
- unless ($rc) {
- croak "Memoize: Couldn't tie hash to `$module': $!; aborting";
- }
- 1;
-}
-
sub flush_cache {
my $func = _make_cref($_[0], scalar caller);
- my $info = $memotable{$revmemotable{$func}};
+ my $info = $memotable{$func};
die "$func not memoized" unless defined $info;
for my $context (qw(S L)) {
my $cache = $info->{$context};
@@ -216,58 +129,39 @@ sub flush_cache {
}
}
-# This is the function that manages the memo tables.
-sub _memoizer {
- my $orig = shift; # stringized version of ref to original func.
- my $info = $memotable{$orig};
- my $normalizer = $info->{N};
-
- my $argstr;
- my $context = (wantarray() ? LIST : SCALAR);
-
- if (defined $normalizer) {
- no strict;
- if ($context == SCALAR) {
- $argstr = &{$normalizer}(@_);
- } elsif ($context == LIST) {
- ($argstr) = &{$normalizer}(@_);
- } else {
- croak "Internal error \#41; context was neither LIST nor SCALAR\n";
- }
- } else { # Default normalizer
- local $^W = 0;
- $argstr = join chr(28),@_;
- }
-
- if ($context == SCALAR) {
- my $cache = $info->{S};
- _crap_out($info->{NAME}, 'scalar') unless $cache;
- if (exists $cache->{$argstr}) {
- return $info->{O}{MERGED}
- ? $cache->{$argstr}[0] : $cache->{$argstr};
- } else {
- my $val = &{$info->{U}}(@_);
- # Scalars are considered to be lists; store appropriately
- if ($info->{O}{MERGED}) {
- $cache->{$argstr} = [$val];
- } else {
- $cache->{$argstr} = $val;
- }
- $val;
- }
- } elsif ($context == LIST) {
- my $cache = $info->{L};
- _crap_out($info->{NAME}, 'list') unless $cache;
- if (exists $cache->{$argstr}) {
- return @{$cache->{$argstr}};
+sub _wrap {
+ my ($name, $orig, $normalizer, $merged, $caches) = @_;
+ my ($cache_L, $cache_S) = @$caches{qw(LIST SCALAR)};
+ undef $caches; # keep the pad from keeping the hash alive forever
+ Scalar::Util::set_prototype(sub {
+ my $argstr = do {
+ no warnings 'uninitialized';
+ defined $normalizer
+ ? ( wantarray ? ( $normalizer->( @_ ) )[0] : $normalizer->( @_ ) )
+ . '' # coerce undef to string while the warning is off
+ : join chr(28), @_;
+ };
+
+ if (wantarray) {
+ _crap_out($name, 'list') unless $cache_L;
+ exists $cache_L->{$argstr} ? (
+ @{$cache_L->{$argstr}}
+ ) : do {
+ my @q = do { no warnings 'recursion'; &$orig };
+ $cache_L->{$argstr} = \@q;
+ @q;
+ };
} else {
- my @q = &{$info->{U}}(@_);
- $cache->{$argstr} = \@q;
- @q;
+ _crap_out($name, 'scalar') unless $cache_S;
+ exists $cache_S->{$argstr} ? (
+ $merged ? $cache_S->{$argstr}[0] : $cache_S->{$argstr}
+ ) : do {
+ my $val = do { no warnings 'recursion'; &$orig };
+ $cache_S->{$argstr} = $merged ? [$val] : $val;
+ $val;
+ };
}
- } else {
- croak "Internal error \#42; context was neither LIST nor SCALAR\n";
- }
+ }, prototype $orig);
}
sub unmemoize {
@@ -275,35 +169,21 @@ sub unmemoize {
my $uppack = caller;
my $cref = _make_cref($f, $uppack);
- unless (exists $revmemotable{$cref}) {
+ unless (exists $memotable{$cref}) {
croak "Could not unmemoize function `$f', because it was not memoized to begin with";
}
-
- my $tabent = $memotable{$revmemotable{$cref}};
+
+ my $tabent = $memotable{$cref};
unless (defined $tabent) {
croak "Could not figure out how to unmemoize function `$f'";
}
my $name = $tabent->{NAME};
if (defined $name) {
no strict;
- local($^W) = 0; # ``Subroutine $install_name redefined at ...''
+ no warnings 'redefine';
*{$name} = $tabent->{U}; # Replace with original function
}
- undef $memotable{$revmemotable{$cref}};
- undef $revmemotable{$cref};
-
- # This removes the last reference to the (possibly tied) memo tables
- # my ($old_function, $memotabs) = @{$tabent}{'U','S','L'};
- # undef $tabent;
-
-# # Untie the memo tables if they were tied.
-# my $i;
-# for $i (0,1) {
-# if (tied %{$memotabs->[$i]}) {
-# warn "Untying hash #$i\n";
-# untie %{$memotabs->[$i]};
-# }
-# }
+ delete $memotable{$cref};
$tabent->{U};
}
@@ -332,7 +212,7 @@ sub _make_cref {
my $parent = (caller(1))[3]; # Function that called _make_cref
croak "Usage: argument 1 to `$parent' must be a function name or reference.\n";
}
- $DEBUG and warn "${name}($fn) => $cref in _make_cref\n";
+ our $DEBUG and warn "${name}($fn) => $cref in _make_cref\n";
$cref;
}
@@ -345,11 +225,20 @@ sub _crap_out {
}
}
-1;
-
+# Raise an error if the user tries to specify one of these packages as a
+# tie for LIST_CACHE
+my %scalar_only = map {($_ => 1)} qw(DB_File GDBM_File SDBM_File ODBM_File), map +($_, "Memoize::$_"), qw(AnyDBM_File NDBM_File);
+sub _check_suitable {
+ my ($context, $package) = @_;
+ croak "You can't use $package for LIST_CACHE because it can only store scalars"
+ if $context eq 'LIST' and $scalar_only{$package};
+}
+1;
+__END__
+=pod
=head1 NAME
@@ -357,7 +246,6 @@ Memoize - Make functions faster by trading space for time
=head1 SYNOPSIS
- # This is the documentation for Memoize 1.03
use Memoize;
memoize('slow_function');
slow_function(arguments); # Is faster than it was before
@@ -384,12 +272,14 @@ Options include:
=head1 DESCRIPTION
-`Memoizing' a function makes it faster by trading space for time. It
+I<Memoizing> a function makes it faster by trading space for time. It
does this by caching the return values of the function in a table.
If you call the function again with the same arguments, C<memoize>
jumps in and gives you the value out of the table, instead of letting
the function compute the value all over again.
+=head1 EXAMPLE
+
Here is an extreme example. Consider the Fibonacci sequence, defined
by the following function:
@@ -412,14 +302,14 @@ run---fib(14) makes 1,200 extra recursive calls to itself, to compute
and recompute things that it already computed.
This function is a good candidate for memoization. If you memoize the
-`fib' function above, it will compute fib(14) exactly once, the first
+C<fib> function above, it will compute fib(14) exactly once, the first
time it needs to, and then save the result in a table. Then if you
ask for fib(14) again, it gives you the result out of the table.
While computing fib(14), instead of computing fib(12) twice, it does
it once; the second time it needs the value it gets it from the table.
It doesn't compute fib(11) four times; it computes it once, getting it
from the table the next three times. Instead of making 1,200
-recursive calls to `fib', it makes 15. This makes the function about
+recursive calls to C<fib>, it makes 15. This makes the function about
150 times faster.
You could do the memoization yourself, by rewriting the function, like
@@ -446,8 +336,8 @@ This makes it easy to turn memoizing on and off.
Here's an even simpler example: I wrote a simple ray tracer; the
program would look in a certain direction, figure out what it was
-looking at, and then convert the `color' value (typically a string
-like `red') of that object to a red, green, and blue pixel value, like
+looking at, and then convert the C<color> value (typically a string
+like C<red>) of that object to a red, green, and blue pixel value, like
this:
for ($direction = 0; $direction < 300; $direction++) {
@@ -718,7 +608,7 @@ should abort the program. The error message is one of
=item C<MERGE>
C<MERGE> normally means that the memoized function does not
-distinguish between list and sclar context, and that return values in
+distinguish between list and scalar context, and that return values in
both contexts should be stored together. Both C<LIST_CACHE =E<gt>
MERGE> and C<SCALAR_CACHE =E<gt> MERGE> mean the same thing.
@@ -740,7 +630,7 @@ if C<complicated> is memoized:
$z = complicated(142);
The first call will cache the result, say 37, in the scalar cache; the
-second will cach the list C<(37)> in the list cache. The third call
+second will cache the list C<(37)> in the list cache. The third call
doesn't call the real C<complicated> function; it gets the value 37
from the scalar cache.
@@ -749,9 +639,11 @@ storing its return value is a waste of space. Specifying C<LIST_CACHE
=E<gt> MERGE> will make C<memoize> use the same cache for scalar and
list context return values, so that the second call uses the scalar
cache that was populated by the first call. C<complicated> ends up
-being called only once, and both subsequent calls return C<3> from the
+being called only once, and both subsequent calls return C<37> from the
cache, regardless of the calling context.
+=back
+
=head3 List values in scalar context
Consider this function:
@@ -783,7 +675,8 @@ stored in the same disk file; this saves you from having to deal with
two disk files instead of one. You can use a normalizer function to
keep the two sets of return values separate. For example:
- tie my %cache => 'MLDBM', 'DB_File', $filename, ...;
+ local $MLDBM::UseDB = 'DB_File';
+ tie my %cache => 'MLDBM', $filename, ...;
memoize 'myfunc',
NORMALIZER => 'n',
@@ -801,8 +694,6 @@ This normalizer function will store scalar context return values in
the disk file under keys that begin with C<S:>, and list context
return values under keys that begin with C<L:>.
-=back
-
=head1 OTHER FACILITIES
=head2 C<unmemoize>
@@ -877,7 +768,7 @@ Do not memoize a function with side effects.
}
This function accepts two arguments, adds them, and prints their sum.
-Its return value is the numuber of characters it printed, but you
+Its return value is the number of characters it printed, but you
probably didn't care about that. But C<Memoize> doesn't understand
that. If you memoize this function, you will get the result you
expect the first time you ask it to print the sum of 2 and 3, but
@@ -984,8 +875,8 @@ function (or when your program exits):
tie my %cache => 'Memoize::Storable', $filename, 'nstore';
memoize 'function', SCALAR_CACHE => [HASH => \%cache];
-Include the `nstore' option to have the C<Storable> database written
-in `network order'. (See L<Storable> for more details about this.)
+Include the C<nstore> option to have the C<Storable> database written
+in I<network order>. (See L<Storable> for more details about this.)
The C<flush_cache()> function will raise a run-time error unless the
tied package provides a C<CLEAR> method.
@@ -1016,38 +907,17 @@ C<f()> (C<f> called with no arguments) will not be memoized. If this
is a big problem, you can supply a normalizer function that prepends
C<"x"> to every key.
-=head1 MAILING LIST
-
-To join a very low-traffic mailing list for announcements about
-C<Memoize>, send an empty note to C<mjd-perl-memoize-request@plover.com>.
-
-=head1 AUTHOR
+=head1 SEE ALSO
-Mark-Jason Dominus (C<mjd-perl-memoize+@plover.com>), Plover Systems co.
-
-See the C<Memoize.pm> Page at http://perl.plover.com/Memoize/
-for news and upgrades. Near this page, at
-http://perl.plover.com/MiniMemoize/ there is an article about
+At L<https://perl.plover.com/MiniMemoize/> there is an article about
memoization and about the internals of Memoize that appeared in The
-Perl Journal, issue #13. (This article is also included in the
-Memoize distribution as `article.html'.)
+Perl Journal, issue #13.
-The author's book I<Higher-Order Perl> (2005, ISBN 1558607013, published
+Mark-Jason Dominus's book I<Higher-Order Perl> (2005, ISBN 1558607013,
+published
by Morgan Kaufmann) discusses memoization (and many other
topics) in tremendous detail. It is available on-line for free.
-For more information, visit http://hop.perl.plover.com/ .
-
-To join a mailing list for announcements about C<Memoize>, send an
-empty message to C<mjd-perl-memoize-request@plover.com>. This mailing
-list is for announcements only and has extremely low traffic---fewer than
-two messages per year.
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright 1998, 1999, 2000, 2001, 2012 by Mark Jason Dominus
-
-This library is free software; you may redistribute it and/or modify
-it under the same terms as Perl itself.
+For more information, visit L<https://hop.perl.plover.com/>.
=head1 THANK YOU
@@ -1074,4 +944,15 @@ Special thanks to Jarkko Hietaniemi, the 5.8.0 pumpking, for including
this module in the core and for his patient and helpful guidance
during the integration process.
+=head1 AUTHOR
+
+Mark Jason Dominus
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2012 by Mark Jason Dominus.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
=cut
diff --git a/Master/tlpkg/tlperl/lib/Memoize/AnyDBM_File.pm b/Master/tlpkg/tlperl/lib/Memoize/AnyDBM_File.pm
index cf5f7f5bc21..c0aa5e6d360 100644
--- a/Master/tlpkg/tlperl/lib/Memoize/AnyDBM_File.pm
+++ b/Master/tlpkg/tlperl/lib/Memoize/AnyDBM_File.pm
@@ -1,31 +1,37 @@
+use strict; use warnings;
+
package Memoize::AnyDBM_File;
+our $VERSION = '1.16';
-=head1 NAME
+our @ISA = qw(DB_File GDBM_File Memoize::NDBM_File SDBM_File ODBM_File) unless @ISA;
-Memoize::AnyDBM_File - glue to provide EXISTS for AnyDBM_File for Storable use
+for my $mod (@ISA) {
+ if (eval "require $mod") {
+ $mod = 'NDBM_File'
+ if $mod eq 'Memoize::NDBM_File'
+ and eval { NDBM_File->VERSION( '1.16' ) };
+ print STDERR "AnyDBM_File => Selected $mod.\n" if our $Verbose;
+ @ISA = $mod;
+ return 1;
+ }
+}
-=head1 DESCRIPTION
+die "No DBM package was successfully found or installed";
-See L<Memoize>.
+__END__
-=cut
+=pod
-use vars qw(@ISA $VERSION);
-$VERSION = '1.03';
-@ISA = qw(DB_File GDBM_File Memoize::NDBM_File Memoize::SDBM_File ODBM_File) unless @ISA;
+=head1 NAME
-my $verbose = 1;
+Memoize::AnyDBM_File - glue to provide EXISTS for AnyDBM_File for Storable use
-my $mod;
-for $mod (@ISA) {
-# (my $truemod = $mod) =~ s/^Memoize:://;
-# my $file = "$mod.pm";
-# $file =~ s{::}{/}g;
- if (eval "require $mod") {
- print STDERR "AnyDBM_File => Selected $mod.\n" if $Verbose;
- @ISA = ($mod); # if we leave @ISA alone, warnings abound
- return 1;
- }
-}
+=head1 DESCRIPTION
-die "No DBM package was successfully found or installed";
+This class does the same thing as L<AnyDBM_File>, except that instead of
+L<NDBM_File> itself it loads L<Memoize::NDBM_File> if L<NDBM_File> lacks
+L<EXISTS|perltie/C<EXISTS>> support.
+
+Code which requires perl 5.37.3 or newer should simply use L<AnyBDM_File> directly.
+
+=cut
diff --git a/Master/tlpkg/tlperl/lib/Memoize/Expire.pm b/Master/tlpkg/tlperl/lib/Memoize/Expire.pm
index 9b3b94444c1..0683ecd711d 100644
--- a/Master/tlpkg/tlperl/lib/Memoize/Expire.pm
+++ b/Master/tlpkg/tlperl/lib/Memoize/Expire.pm
@@ -1,23 +1,16 @@
+use strict; use warnings;
package Memoize::Expire;
-# require 5.00556;
+our $VERSION = '1.16';
+
use Carp;
-$DEBUG = 0;
-$VERSION = '1.03';
+our $DEBUG;
-# This package will implement expiration by prepending a fixed-length header
-# to the font of the cached data. The format of the header will be:
+# The format of the metadata is:
# (4-byte number of last-access-time) (For LRU when I implement it)
# (4-byte expiration time: unsigned seconds-since-unix-epoch)
# (2-byte number-of-uses-before-expire)
-sub _header_fmt () { "N N n" }
-sub _header_size () { length(_header_fmt) }
-
-# Usage: memoize func
-# TIE => [Memoize::Expire, LIFETIME => sec, NUM_USES => n,
-# TIE => [...] ]
-
BEGIN {
eval {require Time::HiRes};
unless ($@) {
@@ -43,7 +36,7 @@ sub TIEHASH {
}
$args{LIFETIME} ||= 0;
$args{NUM_USES} ||= 0;
- $args{C} = \%cache;
+ $args{C} = delete $args{HASH} || \%cache;
bless \%args => $package;
}
@@ -54,27 +47,25 @@ sub STORE {
# The call that results in a value to store into the cache is the
# first of the NUM_USES allowed calls.
my $header = _make_header(time, $expire_time, $self->{NUM_USES}-1);
- $self->{C}{$key} = $header . $value;
+ @{$self->{C}}{"H$key", "V$key"} = ($header, $value);
$value;
}
sub FETCH {
$DEBUG and print STDERR " >> Fetch cached value for $_[1]\n";
- my ($data, $last_access, $expire_time, $num_uses_left) = _get_item($_[0]{C}{$_[1]});
+ my ($last_access, $expire_time, $num_uses_left) = _get_header($_[0]{C}{"H$_[1]"});
$DEBUG and print STDERR " >> (ttl: ", ($expire_time-time()), ", nuses: $num_uses_left)\n";
- $num_uses_left--;
- $last_access = time;
- _set_header(@_, $data, $last_access, $expire_time, $num_uses_left);
- $data;
+ $_[0]{C}{"H$_[1]"} = _make_header(time, $expire_time, --$num_uses_left);
+ $_[0]{C}{"V$_[1]"};
}
sub EXISTS {
$DEBUG and print STDERR " >> Exists $_[1]\n";
- unless (exists $_[0]{C}{$_[1]}) {
+ unless (exists $_[0]{C}{"V$_[1]"}) {
$DEBUG and print STDERR " Not in underlying hash at all.\n";
return 0;
}
- my $item = $_[0]{C}{$_[1]};
+ my $item = $_[0]{C}{"H$_[1]"};
my ($last_access, $expire_time, $num_uses_left) = _get_header($item);
my $ttl = $expire_time - time;
if ($DEBUG) {
@@ -91,26 +82,21 @@ sub EXISTS {
}
}
-# Arguments: last access time, expire time, number of uses remaining
-sub _make_header {
- pack "N N n", @_;
+sub FIRSTKEY {
+ scalar keys %{$_[0]{C}};
+ &NEXTKEY;
}
-sub _strip_header {
- substr($_[0], 10);
+sub NEXTKEY {
+ while (defined(my $key = each %{$_[0]{C}})) {
+ return substr $key, 1 if 'V' eq substr $key, 0, 1;
+ }
+ undef;
}
# Arguments: last access time, expire time, number of uses remaining
-sub _set_header {
- my ($self, $key, $data, @header) = @_;
- $self->{C}{$key} = _make_header(@header) . $data;
-}
-
-sub _get_item {
- my $data = substr($_[0], 10);
- my @header = unpack "N N n", substr($_[0], 0, 10);
-# print STDERR " >> _get_item: $data => $data @header\n";
- ($data, @header);
+sub _make_header {
+ pack "N N n", @_;
}
# Return last access time, expire time, number of uses remaining
@@ -120,6 +106,10 @@ sub _get_header {
1;
+__END__
+
+=pod
+
=head1 NAME
Memoize::Expire - Plug-in module for automatic expiration of memoized values
@@ -249,7 +239,7 @@ the cache, and it should return the cache object to the caller.
For example, MyExpirePolicy::TIEHASH might create an object that
contains a regular Perl hash (which it will to store the cached
values) and some extra information about the arguments and how old the
-data is and things like that. Let us call this object `C'.
+data is and things like that. Let us call this object I<C<C>>.
When Memoize needs to check to see if an entry is in the cache
already, it will invoke C<< C->EXISTS(key) >>. C<key> is the normalized
@@ -282,7 +272,7 @@ cache item after ten seconds.
$cache->{$key}{EXPIRE_TIME} > time) {
return 1
} else {
- return 0; # Do NOT return `undef' here.
+ return 0; # Do NOT return undef here
}
}
@@ -318,11 +308,10 @@ See the documentation for details.
=head1 ALTERNATIVES
-Brent Powers has a C<Memoize::ExpireLRU> module that was designed to
+Brent Powers has a L<Memoize::ExpireLRU> module that was designed to
work with Memoize and provides expiration of least-recently-used data.
The cache is held at a fixed number of entries, and when new data
-comes in, the least-recently used data is expired. See
-L<http://search.cpan.org/search?mode=module&query=ExpireLRU>.
+comes in, the least-recently used data is expired.
Joshua Chamas's Tie::Cache module may be useful as an expiration
manager. (If you try this, let me know how it works out.)
@@ -349,7 +338,7 @@ C<Time::HiRes> installed.
=head1 AUTHOR
-Mark-Jason Dominus (mjd-perl-memoize+@plover.com)
+Mark-Jason Dominus
Mike Cariaso provided valuable insight into the best way to solve this
problem.
@@ -360,11 +349,4 @@ perl(1)
The Memoize man page.
-http://www.plover.com/~mjd/perl/Memoize/ (for news and updates)
-
-I maintain a mailing list on which I occasionally announce new
-versions of Memoize. The list is for announcements only, not
-discussion. To join, send an empty message to
-mjd-perl-memoize-request@Plover.com.
-
=cut
diff --git a/Master/tlpkg/tlperl/lib/Memoize/ExpireFile.pm b/Master/tlpkg/tlperl/lib/Memoize/ExpireFile.pm
deleted file mode 100644
index 06b72f8ef2a..00000000000
--- a/Master/tlpkg/tlperl/lib/Memoize/ExpireFile.pm
+++ /dev/null
@@ -1,52 +0,0 @@
-package Memoize::ExpireFile;
-
-=head1 NAME
-
-Memoize::ExpireFile - test for Memoize expiration semantics
-
-=head1 DESCRIPTION
-
-See L<Memoize::Expire>.
-
-=cut
-
-$VERSION = '1.03';
-use Carp;
-
-my $Zero = pack("N", 0);
-
-sub TIEHASH {
- my ($package, %args) = @_;
- my $cache = $args{HASH} || {};
- bless {ARGS => \%args, C => $cache} => $package;
-}
-
-
-sub STORE {
-# print "Expiry manager STORE handler\n";
- my ($self, $key, $data) = @_;
- my $cache = $self->{C};
- my $cur_date = pack("N", (stat($key))[9]);
- $cache->{"C$key"} = $data;
- $cache->{"T$key"} = $cur_date;
-}
-
-sub FETCH {
- my ($self, $key) = @_;
- $self->{C}{"C$key"};
-}
-
-sub EXISTS {
-# print "Expiry manager EXISTS handler\n";
- my ($self, $key) = @_;
- my $cache_date = $self->{C}{"T$key"} || $Zero;
- my $file_date = pack("N", (stat($key))[9]);#
-# if ($self->{ARGS}{CHECK_DATE} && $old_date gt $cur_date) {
-# return $self->{ARGS}{CHECK_DATE}->($key, $old_date, $cur_date);
-# }
- my $res = $cache_date ge $file_date;
-# print $res ? "... still good\n" : "... expired\n";
- $res;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Memoize/ExpireTest.pm b/Master/tlpkg/tlperl/lib/Memoize/ExpireTest.pm
deleted file mode 100644
index 7f7dd28af6f..00000000000
--- a/Master/tlpkg/tlperl/lib/Memoize/ExpireTest.pm
+++ /dev/null
@@ -1,49 +0,0 @@
-package Memoize::ExpireTest;
-
-=head1 NAME
-
-Memoize::ExpireTest - test for Memoize expiration semantics
-
-=head1 DESCRIPTION
-
-This module is just for testing expiration semantics. It's not a very
-good example of how to write an expiration module.
-
-If you are looking for an example, I recommend that you look at the
-simple example in the Memoize::Expire documentation, or at the code
-for Memoize::Expire itself.
-
-If you have questions, I will be happy to answer them if you send them
-to mjd-perl-memoize+@plover.com.
-
-=cut
-
-$VERSION = '1.03';
-my %cache;
-
-sub TIEHASH {
- my ($pack) = @_;
- bless \%cache => $pack;
-}
-
-sub EXISTS {
- my ($cache, $key) = @_;
- exists $cache->{$key} ? 1 : 0;
-}
-
-sub FETCH {
- my ($cache, $key) = @_;
- $cache->{$key};
-}
-
-sub STORE {
- my ($cache, $key, $val) = @_;
- $cache->{$key} = $val;
-}
-
-sub expire {
- my ($key) = @_;
- delete $cache{$key};
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/lib/Memoize/NDBM_File.pm b/Master/tlpkg/tlperl/lib/Memoize/NDBM_File.pm
index ff934c656bc..fc29f799866 100644
--- a/Master/tlpkg/tlperl/lib/Memoize/NDBM_File.pm
+++ b/Master/tlpkg/tlperl/lib/Memoize/NDBM_File.pm
@@ -1,77 +1,38 @@
-package Memoize::NDBM_File;
-
-=head1 NAME
-
-Memoize::NDBM_File - glue to provide EXISTS for NDBM_File for Storable use
-
-=head1 DESCRIPTION
+use strict; use warnings;
-See L<Memoize>.
-
-=cut
+package Memoize::NDBM_File;
+our $VERSION = '1.16';
use NDBM_File;
-@ISA = qw(NDBM_File);
-$VERSION = '1.03';
-
-$Verbose = 0;
+our @ISA = qw(NDBM_File);
-sub AUTOLOAD {
- warn "Nonexistent function $AUTOLOAD invoked in Memoize::NDBM_File\n";
-}
-
-sub import {
- warn "Importing Memoize::NDBM_File\n" if $Verbose;
+# NDBM_File cannot store undef and will store an empty string if you try
+# but it does return undef if you try to read a non-existent key
+# so we can emulate exists() using defined()
+sub EXISTS {
+ defined shift->FETCH(@_);
}
+# Perl 5.37.3 adds this EXISTS emulation to NDBM_File itself
+delete $Memoize::NDBM_File::{'EXISTS'}
+ if eval { NDBM_File->VERSION( '1.16' ) };
-my %keylist;
-
-# This is so ridiculous...
-sub _backhash {
- my $self = shift;
- my %fakehash;
- my $k;
- for ($k = $self->FIRSTKEY(); defined $k; $k = $self->NEXTKEY($k)) {
- $fakehash{$k} = undef;
- }
- $keylist{$self} = \%fakehash;
-}
-
-sub EXISTS {
- warn "Memoize::NDBM_File EXISTS (@_)\n" if $Verbose;
- my $self = shift;
- _backhash($self) unless exists $keylist{$self};
- my $r = exists $keylist{$self}{$_[0]};
- warn "Memoize::NDBM_File EXISTS (@_) ==> $r\n" if $Verbose;
- $r;
-}
+1;
-sub DEFINED {
- warn "Memoize::NDBM_File DEFINED (@_)\n" if $Verbose;
- my $self = shift;
- _backhash($self) unless exists $keylist{$self};
- defined $keylist{$self}{$_[0]};
-}
+__END__
-sub DESTROY {
- warn "Memoize::NDBM_File DESTROY (@_)\n" if $Verbose;
- my $self = shift;
- delete $keylist{$self}; # So much for reference counting...
- $self->SUPER::DESTROY(@_);
-}
+=pod
-# Maybe establish the keylist at TIEHASH time instead?
+=head1 NAME
-sub STORE {
- warn "Memoize::NDBM_File STORE (@_)\n" if $VERBOSE;
- my $self = shift;
- $keylist{$self}{$_[0]} = undef;
- $self->SUPER::STORE(@_);
-}
+Memoize::NDBM_File - glue to provide EXISTS for NDBM_File for Storable use
+=head1 DESCRIPTION
+This class provides L<EXISTS|perltie/C<EXISTS>> support for L<NDBM_File>.
-# Inherit FETCH and TIEHASH
+L<In Perl 5.37.3|https://github.com/Perl/perl5/commit/c0a1a377c02ed789f5eff667f46a2314a05c5a4c>,
+support for C<EXISTS> was added to L<NDBM_File> itself.
+Code which requires such a perl should simply use L<NBDM_File> directly.
-1;
+=cut
diff --git a/Master/tlpkg/tlperl/lib/Memoize/SDBM_File.pm b/Master/tlpkg/tlperl/lib/Memoize/SDBM_File.pm
index 7cfaa4afb98..87ef28e1ef0 100644
--- a/Master/tlpkg/tlperl/lib/Memoize/SDBM_File.pm
+++ b/Master/tlpkg/tlperl/lib/Memoize/SDBM_File.pm
@@ -1,75 +1,27 @@
-package Memoize::SDBM_File;
-
-=head1 NAME
-
-Memoize::SDBM_File - glue to provide EXISTS for SDBM_File for Storable use
-
-=head1 DESCRIPTION
-
-See L<Memoize>.
-
-=cut
+use strict; use warnings;
-use SDBM_File;
-@ISA = qw(SDBM_File);
-$VERSION = '1.03';
-
-$Verbose = 0;
-
-sub AUTOLOAD {
- warn "Nonexistent function $AUTOLOAD invoked in Memoize::SDBM_File\n";
-}
-
-sub import {
- warn "Importing Memoize::SDBM_File\n" if $Verbose;
-}
+package Memoize::SDBM_File;
+our $VERSION = '1.16';
+use SDBM_File 1.01; # for EXISTS support
+our @ISA = qw(SDBM_File);
-my %keylist;
+1;
-# This is so ridiculous...
-sub _backhash {
- my $self = shift;
- my %fakehash;
- my $k;
- for ($k = $self->FIRSTKEY(); defined $k; $k = $self->NEXTKEY($k)) {
- $fakehash{$k} = undef;
- }
- $keylist{$self} = \%fakehash;
-}
+__END__
-sub EXISTS {
- warn "Memoize::SDBM_File EXISTS (@_)\n" if $Verbose;
- my $self = shift;
- _backhash($self) unless exists $keylist{$self};
- my $r = exists $keylist{$self}{$_[0]};
- warn "Memoize::SDBM_File EXISTS (@_) ==> $r\n" if $Verbose;
- $r;
-}
+=pod
-sub DEFINED {
- warn "Memoize::SDBM_File DEFINED (@_)\n" if $Verbose;
- my $self = shift;
- _backhash($self) unless exists $keylist{$self};
- defined $keylist{$self}{$_[0]};
-}
+=head1 NAME
-sub DESTROY {
- warn "Memoize::SDBM_File DESTROY (@_)\n" if $Verbose;
- my $self = shift;
- delete $keylist{$self}; # So much for reference counting...
- $self->SUPER::DESTROY(@_);
-}
+Memoize::SDBM_File - DEPRECATED compability shim
-# Maybe establish the keylist at TIEHASH time instead?
+=head1 DESCRIPTION
-sub STORE {
- warn "Memoize::SDBM_File STORE (@_)\n" if $VERBOSE;
- my $self = shift;
- $keylist{$self}{$_[0]} = undef;
- $self->SUPER::STORE(@_);
-}
+This class used to provide L<EXISTS|perltie/C<EXISTS>> support for L<SDBM_File>
+before support for C<EXISTS> was added to L<SDBM_File> itself
+L<in Perl 5.6.0|perl56delta/SDBM_File>.
-# Inherit FETCH and TIEHASH
+Any code still using this class should be rewritten to use L<SBDM_File> directly.
-1;
+=cut
diff --git a/Master/tlpkg/tlperl/lib/Memoize/Storable.pm b/Master/tlpkg/tlperl/lib/Memoize/Storable.pm
index 13147972972..923e57dc572 100644
--- a/Master/tlpkg/tlperl/lib/Memoize/Storable.pm
+++ b/Master/tlpkg/tlperl/lib/Memoize/Storable.pm
@@ -1,27 +1,19 @@
-package Memoize::Storable;
-
-=head1 NAME
-
-Memoize::Storable - store Memoized data in Storable database
-
-=head1 DESCRIPTION
+use strict; use warnings;
-See L<Memoize>.
+package Memoize::Storable;
+our $VERSION = '1.16';
-=cut
+use Storable 1.002 (); # for lock_* function variants
-use Storable ();
-$VERSION = '1.03';
-$Verbose = 0;
+our $Verbose;
sub TIEHASH {
- require Carp if $Verbose;
my $package = shift;
my $filename = shift;
- my $truehash = (-e $filename) ? Storable::retrieve($filename) : {};
+ my $truehash = (-e $filename) ? Storable::lock_retrieve($filename) : {};
my %options;
print STDERR "Memoize::Storable::TIEHASH($filename, @_)\n" if $Verbose;
- @options{@_} = ();
+ @options{@_} = (1) x @_;
my $self =
{FILENAME => $filename,
H => $truehash,
@@ -31,34 +23,30 @@ sub TIEHASH {
}
sub STORE {
- require Carp if $Verbose;
my $self = shift;
print STDERR "Memoize::Storable::STORE(@_)\n" if $Verbose;
$self->{H}{$_[0]} = $_[1];
}
sub FETCH {
- require Carp if $Verbose;
my $self = shift;
print STDERR "Memoize::Storable::FETCH(@_)\n" if $Verbose;
$self->{H}{$_[0]};
}
sub EXISTS {
- require Carp if $Verbose;
my $self = shift;
print STDERR "Memoize::Storable::EXISTS(@_)\n" if $Verbose;
exists $self->{H}{$_[0]};
}
sub DESTROY {
- require Carp if $Verbose;
my $self= shift;
print STDERR "Memoize::Storable::DESTROY(@_)\n" if $Verbose;
if ($self->{OPTIONS}{'nstore'}) {
- Storable::nstore($self->{H}, $self->{FILENAME});
+ Storable::lock_nstore($self->{H}, $self->{FILENAME});
} else {
- Storable::store($self->{H}, $self->{FILENAME});
+ Storable::lock_store($self->{H}, $self->{FILENAME});
}
}
@@ -69,4 +57,19 @@ sub FIRSTKEY {
sub NEXTKEY {
undef;
}
+
1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+Memoize::Storable - store Memoized data in Storable database
+
+=head1 DESCRIPTION
+
+See L<Memoize>.
+
+=cut
diff --git a/Master/tlpkg/tlperl/lib/Module/CoreList.pm b/Master/tlpkg/tlperl/lib/Module/CoreList.pm
index b4f49bd3424..d20e23cc40c 100644
--- a/Master/tlpkg/tlperl/lib/Module/CoreList.pm
+++ b/Master/tlpkg/tlperl/lib/Module/CoreList.pm
@@ -4,7 +4,7 @@ use strict;
our ( %released, %version, %families, %upstream, %bug_tracker, %deprecated, %delta );
use version;
-our $VERSION = '5.20210520';
+our $VERSION = '5.20231129';
sub PKG_PATTERN () { q#\A[a-zA-Z_][0-9a-zA-Z_]*(?:(::|')[0-9a-zA-Z_]+)*\z# }
sub _looks_like_invocant ($) { local $@; !!eval { $_[0]->isa(__PACKAGE__) } }
@@ -378,6 +378,45 @@ sub changes_between {
5.033008 => '2021-03-20',
5.033009 => '2021-04-20',
5.034000 => '2021-05-20',
+ 5.035000 => '2021-05-21',
+ 5.035001 => '2021-06-20',
+ 5.035002 => '2021-07-23',
+ 5.035003 => '2021-08-20',
+ 5.035004 => '2021-09-20',
+ 5.035005 => '2021-10-21',
+ 5.035006 => '2021-11-20',
+ 5.035007 => '2021-12-20',
+ 5.035008 => '2022-01-20',
+ 5.035009 => '2022-02-20',
+ 5.034001 => '2022-03-13',
+ 5.035010 => '2022-03-20',
+ 5.035011 => '2022-04-20',
+ 5.036000 => '2022-05-27',
+ 5.037000 => '2022-05-27',
+ 5.037001 => '2022-06-20',
+ 5.037002 => '2022-07-20',
+ 5.037003 => '2022-08-20',
+ 5.037004 => '2022-09-20',
+ 5.037005 => '2022-10-20',
+ 5.037006 => '2022-11-20',
+ 5.037007 => '2022-12-20',
+ 5.037008 => '2023-01-20',
+ 5.037009 => '2023-02-20',
+ 5.037010 => '2023-03-20',
+ 5.037011 => '2023-04-20',
+ 5.036001 => '2023-04-23',
+ 5.038000 => '2023-07-02',
+ 5.039001 => '2023-07-20',
+ 5.039002 => '2023-08-20',
+ 5.039003 => '2023-09-20',
+ 5.039004 => '2023-10-25',
+ 5.039005 => '2023-11-20',
+ 5.034002 => '2023-11-25',
+ 5.036002 => '2023-11-25',
+ 5.038001 => '2023-11-25',
+ 5.034003 => '2023-11-29',
+ 5.036003 => '2023-11-29',
+ 5.038002 => '2023-11-29',
);
for my $version ( sort { $a <=> $b } keys %released ) {
@@ -18522,6 +18561,2578 @@ for my $version ( sort { $a <=> $b } keys %released ) {
removed => {
}
},
+ 5.035000 => {
+ delta_from => 5.034,
+ changed => {
+ 'B::Op_private' => '5.035000',
+ 'Config' => '5.035',
+ 'Module::CoreList' => '5.20210521',
+ 'Module::CoreList::Utils'=> '5.20210521',
+ 'feature' => '1.65',
+ },
+ removed => {
+ }
+ },
+ 5.035001 => {
+ delta_from => 5.035000,
+ changed => {
+ 'B::Deparse' => '1.57',
+ 'B::Op_private' => '5.035001',
+ 'Config' => '5.035001',
+ 'Cwd' => '3.81',
+ 'Data::Dumper' => '2.181',
+ 'File::Copy' => '2.36',
+ 'File::Glob' => '1.35',
+ 'File::Spec' => '3.81',
+ 'File::Spec::AmigaOS' => '3.81',
+ 'File::Spec::Cygwin' => '3.81',
+ 'File::Spec::Epoc' => '3.81',
+ 'File::Spec::Functions' => '3.81',
+ 'File::Spec::Mac' => '3.81',
+ 'File::Spec::OS2' => '3.81',
+ 'File::Spec::Unix' => '3.81',
+ 'File::Spec::VMS' => '3.81',
+ 'File::Spec::Win32' => '3.81',
+ 'File::stat' => '1.10',
+ 'IO' => '1.47',
+ 'IO::Dir' => '1.47',
+ 'IO::File' => '1.47',
+ 'IO::Handle' => '1.47',
+ 'IO::Pipe' => '1.47',
+ 'IO::Poll' => '1.47',
+ 'IO::Seekable' => '1.47',
+ 'IO::Select' => '1.47',
+ 'IO::Socket' => '1.47',
+ 'IO::Socket::INET' => '1.47',
+ 'IO::Socket::UNIX' => '1.47',
+ 'List::Util' => '1.56',
+ 'List::Util::XS' => '1.56',
+ 'Module::CoreList' => '5.20210620',
+ 'Module::CoreList::Utils'=> '5.20210620',
+ 'Opcode' => '1.51',
+ 'POSIX' => '1.98',
+ 'Scalar::Util' => '1.56',
+ 'Socket' => '2.032',
+ 'Sub::Util' => '1.56',
+ 'Test2' => '1.302185',
+ 'Test2::API' => '1.302185',
+ 'Test2::API::Breakage' => '1.302185',
+ 'Test2::API::Context' => '1.302185',
+ 'Test2::API::Instance' => '1.302185',
+ 'Test2::API::InterceptResult'=> '1.302185',
+ 'Test2::API::InterceptResult::Event'=> '1.302185',
+ 'Test2::API::InterceptResult::Facet'=> '1.302185',
+ 'Test2::API::InterceptResult::Hub'=> '1.302185',
+ 'Test2::API::InterceptResult::Squasher'=> '1.302185',
+ 'Test2::API::Stack' => '1.302185',
+ 'Test2::Event' => '1.302185',
+ 'Test2::Event::Bail' => '1.302185',
+ 'Test2::Event::Diag' => '1.302185',
+ 'Test2::Event::Encoding'=> '1.302185',
+ 'Test2::Event::Exception'=> '1.302185',
+ 'Test2::Event::Fail' => '1.302185',
+ 'Test2::Event::Generic' => '1.302185',
+ 'Test2::Event::Note' => '1.302185',
+ 'Test2::Event::Ok' => '1.302185',
+ 'Test2::Event::Pass' => '1.302185',
+ 'Test2::Event::Plan' => '1.302185',
+ 'Test2::Event::Skip' => '1.302185',
+ 'Test2::Event::Subtest' => '1.302185',
+ 'Test2::Event::TAP::Version'=> '1.302185',
+ 'Test2::Event::V2' => '1.302185',
+ 'Test2::Event::Waiting' => '1.302185',
+ 'Test2::EventFacet' => '1.302185',
+ 'Test2::EventFacet::About'=> '1.302185',
+ 'Test2::EventFacet::Amnesty'=> '1.302185',
+ 'Test2::EventFacet::Assert'=> '1.302185',
+ 'Test2::EventFacet::Control'=> '1.302185',
+ 'Test2::EventFacet::Error'=> '1.302185',
+ 'Test2::EventFacet::Hub'=> '1.302185',
+ 'Test2::EventFacet::Info'=> '1.302185',
+ 'Test2::EventFacet::Info::Table'=> '1.302185',
+ 'Test2::EventFacet::Meta'=> '1.302185',
+ 'Test2::EventFacet::Parent'=> '1.302185',
+ 'Test2::EventFacet::Plan'=> '1.302185',
+ 'Test2::EventFacet::Render'=> '1.302185',
+ 'Test2::EventFacet::Trace'=> '1.302185',
+ 'Test2::Formatter' => '1.302185',
+ 'Test2::Formatter::TAP' => '1.302185',
+ 'Test2::Hub' => '1.302185',
+ 'Test2::Hub::Interceptor'=> '1.302185',
+ 'Test2::Hub::Interceptor::Terminator'=> '1.302185',
+ 'Test2::Hub::Subtest' => '1.302185',
+ 'Test2::IPC' => '1.302185',
+ 'Test2::IPC::Driver' => '1.302185',
+ 'Test2::IPC::Driver::Files'=> '1.302185',
+ 'Test2::Tools::Tiny' => '1.302185',
+ 'Test2::Util' => '1.302185',
+ 'Test2::Util::ExternalMeta'=> '1.302185',
+ 'Test2::Util::Facets2Legacy'=> '1.302185',
+ 'Test2::Util::HashBase' => '1.302185',
+ 'Test2::Util::Trace' => '1.302185',
+ 'Test::Builder' => '1.302185',
+ 'Test::Builder::Formatter'=> '1.302185',
+ 'Test::Builder::Module' => '1.302185',
+ 'Test::Builder::Tester' => '1.302185',
+ 'Test::Builder::Tester::Color'=> '1.302185',
+ 'Test::Builder::TodoDiag'=> '1.302185',
+ 'Test::More' => '1.302185',
+ 'Test::Simple' => '1.302185',
+ 'Test::Tester' => '1.302185',
+ 'Test::Tester::Capture' => '1.302185',
+ 'Test::Tester::CaptureRunner'=> '1.302185',
+ 'Test::Tester::Delegate'=> '1.302185',
+ 'Test::use::ok' => '1.302185',
+ 'Unicode::Collate' => '1.30',
+ 'Unicode::Collate::CJK::Big5'=> '1.30',
+ 'Unicode::Collate::CJK::GB2312'=> '1.30',
+ 'Unicode::Collate::CJK::JISX0208'=> '1.30',
+ 'Unicode::Collate::CJK::Korean'=> '1.30',
+ 'Unicode::Collate::CJK::Pinyin'=> '1.30',
+ 'Unicode::Collate::CJK::Stroke'=> '1.30',
+ 'Unicode::Collate::CJK::Zhuyin'=> '1.30',
+ 'Unicode::Collate::Locale'=> '1.30',
+ 'Unicode::UCD' => '0.76',
+ 'XS::APItest' => '1.17',
+ 'feature' => '1.66',
+ 'ok' => '1.302185',
+ 'open' => '1.13',
+ 'perlfaq' => '5.20210520',
+ 'version' => '0.9929',
+ 'version::regex' => '0.9929',
+ },
+ removed => {
+ }
+ },
+ 5.035002 => {
+ delta_from => 5.035001,
+ changed => {
+ 'Amiga::ARexx' => '0.06',
+ 'Amiga::Exec' => '0.03',
+ 'B::Concise' => '1.005',
+ 'B::Op_private' => '5.035002',
+ 'Config' => '5.035002',
+ 'Cwd' => '3.82',
+ 'DB_File' => '1.856',
+ 'Data::Dumper' => '2.183',
+ 'Devel::PPPort' => '3.63',
+ 'Devel::Peek' => '1.31',
+ 'DynaLoader' => '1.51',
+ 'Encode' => '3.10',
+ 'Encode::JP' => '2.05',
+ 'Errno' => '1.34',
+ 'ExtUtils::Miniperl' => '1.11',
+ 'Fcntl' => '1.15',
+ 'File::Find' => '1.39_01',
+ 'File::Glob' => '1.36',
+ 'File::stat' => '1.11',
+ 'GDBM_File' => '1.20',
+ 'Hash::Util' => '0.26',
+ 'Hash::Util::FieldHash' => '1.22',
+ 'I18N::Langinfo' => '0.20',
+ 'IPC::Open2' => '1.06',
+ 'IPC::Open3' => '1.22',
+ 'Math::BigFloat' => '1.999823',
+ 'Math::BigFloat::Trace' => '0.53',
+ 'Math::BigInt' => '1.999823',
+ 'Math::BigInt::Calc' => '1.999823',
+ 'Math::BigInt::FastCalc'=> '0.5010',
+ 'Math::BigInt::Lib' => '1.999823',
+ 'Math::BigInt::Trace' => '0.53',
+ 'Math::BigRat' => '0.2617',
+ 'Module::CoreList' => '5.20210723',
+ 'Module::CoreList::Utils'=> '5.20210723',
+ 'Opcode' => '1.52',
+ 'PerlIO' => '1.12',
+ 'Pod::Functions' => '1.14',
+ 'Pod::Functions::Functions'=> '1.14',
+ 'Pod::Html' => '1.31',
+ 'Pod::Html::Util' => '1.31',
+ 'Pod::Simple' => '3.43',
+ 'Pod::Simple::BlackBox' => '3.43',
+ 'Pod::Simple::Checker' => '3.43',
+ 'Pod::Simple::Debug' => '3.43',
+ 'Pod::Simple::DumpAsText'=> '3.43',
+ 'Pod::Simple::DumpAsXML'=> '3.43',
+ 'Pod::Simple::HTML' => '3.43',
+ 'Pod::Simple::HTMLBatch'=> '3.43',
+ 'Pod::Simple::LinkSection'=> '3.43',
+ 'Pod::Simple::Methody' => '3.43',
+ 'Pod::Simple::Progress' => '3.43',
+ 'Pod::Simple::PullParser'=> '3.43',
+ 'Pod::Simple::PullParserEndToken'=> '3.43',
+ 'Pod::Simple::PullParserStartToken'=> '3.43',
+ 'Pod::Simple::PullParserTextToken'=> '3.43',
+ 'Pod::Simple::PullParserToken'=> '3.43',
+ 'Pod::Simple::RTF' => '3.43',
+ 'Pod::Simple::Search' => '3.43',
+ 'Pod::Simple::SimpleTree'=> '3.43',
+ 'Pod::Simple::Text' => '3.43',
+ 'Pod::Simple::TextContent'=> '3.43',
+ 'Pod::Simple::TiedOutFH'=> '3.43',
+ 'Pod::Simple::Transcode'=> '3.43',
+ 'Pod::Simple::TranscodeDumb'=> '3.43',
+ 'Pod::Simple::TranscodeSmart'=> '3.43',
+ 'Pod::Simple::XHTML' => '3.43',
+ 'Pod::Simple::XMLOutStream'=> '3.43',
+ 'Sys::Hostname' => '1.24',
+ 'Text::Tabs' => '2021.0717',
+ 'Text::Wrap' => '2021.0717',
+ 'Time::HiRes' => '1.9768',
+ 'Unicode::UCD' => '0.77',
+ 'VMS::Filespec' => '1.13',
+ 'VMS::Stdio' => '2.46',
+ 'XSLoader' => '0.31',
+ 'bigint' => '0.53',
+ 'bignum' => '0.53',
+ 'bigrat' => '0.53',
+ 'if' => '0.0610',
+ 'threads' => '2.27',
+ 'warnings' => '1.52',
+ },
+ removed => {
+ }
+ },
+ 5.035003 => {
+ delta_from => 5.035002,
+ changed => {
+ 'Archive::Tar' => '2.40',
+ 'Archive::Tar::Constant'=> '2.40',
+ 'Archive::Tar::File' => '2.40',
+ 'B::Op_private' => '5.035003',
+ 'Config' => '5.035003',
+ 'Encode' => '3.12',
+ 'Encode::GSM0338' => '2.10',
+ 'Encode::Unicode' => '2.19',
+ 'Module::CoreList' => '5.20210820',
+ 'Module::CoreList::Utils'=> '5.20210820',
+ 'Net::hostent' => '1.03',
+ 'Opcode' => '1.53',
+ 'POSIX' => '1.99',
+ 'Pod::Html' => '1.32',
+ 'Pod::Html::Util' => '1.32',
+ 'Storable' => '3.24',
+ 'Text::Tabs' => '2021.0804',
+ 'Text::Wrap' => '2021.0804',
+ 'Time::HiRes' => '1.9769',
+ 'Unicode::Normalize' => '1.30',
+ 'XS::APItest' => '1.18',
+ 'diagnostics' => '1.38',
+ 'feature' => '1.67',
+ 'sort' => '2.05',
+ 'threads::shared' => '1.63',
+ 'warnings' => '1.53',
+ },
+ removed => {
+ }
+ },
+ 5.035004 => {
+ delta_from => 5.035003,
+ changed => {
+ 'B' => '1.83',
+ 'B::Deparse' => '1.58',
+ 'B::Op_private' => '5.035004',
+ 'Config' => '5.035004',
+ 'Devel::Peek' => '1.32',
+ 'Exporter' => '5.77',
+ 'Exporter::Heavy' => '5.77',
+ 'ExtUtils::ParseXS' => '3.44',
+ 'ExtUtils::ParseXS::Constants'=> '3.44',
+ 'ExtUtils::ParseXS::CountLines'=> '3.44',
+ 'ExtUtils::ParseXS::Eval'=> '3.44',
+ 'ExtUtils::ParseXS::Utilities'=> '3.44',
+ 'ExtUtils::Typemaps' => '3.44',
+ 'ExtUtils::Typemaps::Cmd'=> '3.44',
+ 'ExtUtils::Typemaps::InputMap'=> '3.44',
+ 'ExtUtils::Typemaps::OutputMap'=> '3.44',
+ 'ExtUtils::Typemaps::Type'=> '3.44',
+ 'Hash::Util::FieldHash' => '1.23',
+ 'IO' => '1.48',
+ 'IO::Dir' => '1.48',
+ 'IO::File' => '1.48',
+ 'IO::Handle' => '1.48',
+ 'IO::Pipe' => '1.48',
+ 'IO::Poll' => '1.48',
+ 'IO::Seekable' => '1.48',
+ 'IO::Select' => '1.48',
+ 'IO::Socket' => '1.48',
+ 'IO::Socket::INET' => '1.48',
+ 'IO::Socket::UNIX' => '1.48',
+ 'List::Util' => '1.56_001',
+ 'List::Util::XS' => '1.56_001',
+ 'Module::CoreList' => '5.20210920',
+ 'Module::CoreList::Utils'=> '5.20210920',
+ 'Opcode' => '1.54',
+ 'Pod::Html' => '1.33',
+ 'Pod::Html::Util' => '1.33',
+ 'Scalar::Util' => '1.56_001',
+ 'Storable' => '3.25',
+ 'Sub::Util' => '1.56_001',
+ 'Text::Tabs' => '2021.0814',
+ 'Text::Wrap' => '2021.0814',
+ 'UNIVERSAL' => '1.14',
+ 'Unicode' => '14.0.0',
+ 'Unicode::Collate' => '1.31',
+ 'Unicode::Collate::CJK::Big5'=> '1.31',
+ 'Unicode::Collate::CJK::GB2312'=> '1.31',
+ 'Unicode::Collate::CJK::JISX0208'=> '1.31',
+ 'Unicode::Collate::CJK::Korean'=> '1.31',
+ 'Unicode::Collate::CJK::Pinyin'=> '1.31',
+ 'Unicode::Collate::CJK::Stroke'=> '1.31',
+ 'Unicode::Collate::CJK::Zhuyin'=> '1.31',
+ 'Unicode::Collate::Locale'=> '1.31',
+ 'Unicode::UCD' => '0.78',
+ 'XS::APItest' => '1.19',
+ 'XS::Typemap' => '0.19',
+ 'attributes' => '0.34',
+ 'feature' => '1.68',
+ 'mro' => '1.26',
+ 'threads::shared' => '1.64',
+ 'warnings' => '1.54',
+ },
+ removed => {
+ }
+ },
+ 5.035005 => {
+ delta_from => 5.035004,
+ changed => {
+ 'B::Concise' => '1.006',
+ 'B::Deparse' => '1.59',
+ 'B::Op_private' => '5.035005',
+ 'Config' => '5.035005',
+ 'Digest' => '1.20',
+ 'Digest::base' => '1.20',
+ 'Digest::file' => '1.20',
+ 'DynaLoader' => '1.52',
+ 'Encode' => '3.16',
+ 'Errno' => '1.35',
+ 'File::Copy' => '2.37',
+ 'File::Spec::Unix' => '3.82',
+ 'FindBin' => '1.53',
+ 'GDBM_File' => '1.21',
+ 'HTTP::Tiny' => '0.078',
+ 'I18N::Langinfo' => '0.21',
+ 'IO::Dir' => '1.49',
+ 'IO::Pipe' => '1.49',
+ 'IO::Poll' => '1.49',
+ 'IO::Select' => '1.49',
+ 'IO::Socket' => '1.49',
+ 'IO::Socket::INET' => '1.49',
+ 'IO::Socket::UNIX' => '1.49',
+ 'List::Util' => '1.60',
+ 'List::Util::XS' => '1.60',
+ 'Math::BigRat::Trace' => '0.63',
+ 'Module::CoreList' => '5.20211020',
+ 'Module::CoreList::Utils'=> '5.20211020',
+ 'POSIX' => '2.01',
+ 'Scalar::Util' => '1.60',
+ 'Sub::Util' => '1.60',
+ 'Test2' => '1.302188',
+ 'Test2::API' => '1.302188',
+ 'Test2::API::Breakage' => '1.302188',
+ 'Test2::API::Context' => '1.302188',
+ 'Test2::API::Instance' => '1.302188',
+ 'Test2::API::InterceptResult'=> '1.302188',
+ 'Test2::API::InterceptResult::Event'=> '1.302188',
+ 'Test2::API::InterceptResult::Facet'=> '1.302188',
+ 'Test2::API::InterceptResult::Hub'=> '1.302188',
+ 'Test2::API::InterceptResult::Squasher'=> '1.302188',
+ 'Test2::API::Stack' => '1.302188',
+ 'Test2::Event' => '1.302188',
+ 'Test2::Event::Bail' => '1.302188',
+ 'Test2::Event::Diag' => '1.302188',
+ 'Test2::Event::Encoding'=> '1.302188',
+ 'Test2::Event::Exception'=> '1.302188',
+ 'Test2::Event::Fail' => '1.302188',
+ 'Test2::Event::Generic' => '1.302188',
+ 'Test2::Event::Note' => '1.302188',
+ 'Test2::Event::Ok' => '1.302188',
+ 'Test2::Event::Pass' => '1.302188',
+ 'Test2::Event::Plan' => '1.302188',
+ 'Test2::Event::Skip' => '1.302188',
+ 'Test2::Event::Subtest' => '1.302188',
+ 'Test2::Event::TAP::Version'=> '1.302188',
+ 'Test2::Event::V2' => '1.302188',
+ 'Test2::Event::Waiting' => '1.302188',
+ 'Test2::EventFacet' => '1.302188',
+ 'Test2::EventFacet::About'=> '1.302188',
+ 'Test2::EventFacet::Amnesty'=> '1.302188',
+ 'Test2::EventFacet::Assert'=> '1.302188',
+ 'Test2::EventFacet::Control'=> '1.302188',
+ 'Test2::EventFacet::Error'=> '1.302188',
+ 'Test2::EventFacet::Hub'=> '1.302188',
+ 'Test2::EventFacet::Info'=> '1.302188',
+ 'Test2::EventFacet::Info::Table'=> '1.302188',
+ 'Test2::EventFacet::Meta'=> '1.302188',
+ 'Test2::EventFacet::Parent'=> '1.302188',
+ 'Test2::EventFacet::Plan'=> '1.302188',
+ 'Test2::EventFacet::Render'=> '1.302188',
+ 'Test2::EventFacet::Trace'=> '1.302188',
+ 'Test2::Formatter' => '1.302188',
+ 'Test2::Formatter::TAP' => '1.302188',
+ 'Test2::Hub' => '1.302188',
+ 'Test2::Hub::Interceptor'=> '1.302188',
+ 'Test2::Hub::Interceptor::Terminator'=> '1.302188',
+ 'Test2::Hub::Subtest' => '1.302188',
+ 'Test2::IPC' => '1.302188',
+ 'Test2::IPC::Driver' => '1.302188',
+ 'Test2::IPC::Driver::Files'=> '1.302188',
+ 'Test2::Tools::Tiny' => '1.302188',
+ 'Test2::Util' => '1.302188',
+ 'Test2::Util::ExternalMeta'=> '1.302188',
+ 'Test2::Util::Facets2Legacy'=> '1.302188',
+ 'Test2::Util::HashBase' => '1.302188',
+ 'Test2::Util::Trace' => '1.302188',
+ 'Test::Builder' => '1.302188',
+ 'Test::Builder::Formatter'=> '1.302188',
+ 'Test::Builder::Module' => '1.302188',
+ 'Test::Builder::Tester' => '1.302188',
+ 'Test::Builder::Tester::Color'=> '1.302188',
+ 'Test::Builder::TodoDiag'=> '1.302188',
+ 'Test::More' => '1.302188',
+ 'Test::Simple' => '1.302188',
+ 'Test::Tester' => '1.302188',
+ 'Test::Tester::Capture' => '1.302188',
+ 'Test::Tester::CaptureRunner'=> '1.302188',
+ 'Test::Tester::Delegate'=> '1.302188',
+ 'Test::use::ok' => '1.302188',
+ 'Tie::Handle' => '4.3',
+ 'Tie::Hash' => '1.06',
+ 'Tie::Scalar' => '1.06',
+ 'XS::APItest' => '1.20',
+ 'experimental' => '0.025',
+ 'ok' => '1.302188',
+ 'warnings' => '1.55',
+ },
+ removed => {
+ }
+ },
+ 5.035006 => {
+ delta_from => 5.035005,
+ changed => {
+ 'B::Op_private' => '5.035006',
+ 'Config' => '5.035006',
+ 'File::Glob' => '1.37',
+ 'File::stat' => '1.12',
+ 'GDBM_File' => '1.22',
+ 'HTTP::Tiny' => '0.080',
+ 'Math::BigFloat' => '1.999827',
+ 'Math::BigFloat::Trace' => '0.63',
+ 'Math::BigInt' => '1.999827',
+ 'Math::BigInt::Calc' => '1.999827',
+ 'Math::BigInt::FastCalc'=> '0.5012',
+ 'Math::BigInt::Lib' => '1.999827',
+ 'Math::BigInt::Trace' => '0.63',
+ 'Math::BigRat' => '0.2620',
+ 'Module::CoreList' => '5.20211120',
+ 'Module::CoreList::Utils'=> '5.20211120',
+ 'POSIX' => '2.02',
+ 'bigint' => '0.63',
+ 'bignum' => '0.63',
+ 'bigrat' => '0.63',
+ 'diagnostics' => '1.39',
+ 'feature' => '1.69',
+ 'warnings' => '1.56',
+ },
+ removed => {
+ }
+ },
+ 5.035007 => {
+ delta_from => 5.035006,
+ changed => {
+ 'B::Deparse' => '1.60',
+ 'B::Op_private' => '5.035007',
+ 'CPAN' => '2.29',
+ 'CPAN::Distribution' => '2.29',
+ 'CPAN::FTP' => '5.5014',
+ 'CPAN::FirstTime' => '5.5316',
+ 'CPAN::HandleConfig' => '5.5012',
+ 'CPAN::Index' => '2.29',
+ 'Config' => '5.035007',
+ 'Cwd' => '3.83',
+ 'ExtUtils::Command' => '7.64',
+ 'ExtUtils::Command::MM' => '7.64',
+ 'ExtUtils::Liblist' => '7.64',
+ 'ExtUtils::Liblist::Kid'=> '7.64',
+ 'ExtUtils::MM' => '7.64',
+ 'ExtUtils::MM_AIX' => '7.64',
+ 'ExtUtils::MM_Any' => '7.64',
+ 'ExtUtils::MM_BeOS' => '7.64',
+ 'ExtUtils::MM_Cygwin' => '7.64',
+ 'ExtUtils::MM_DOS' => '7.64',
+ 'ExtUtils::MM_Darwin' => '7.64',
+ 'ExtUtils::MM_MacOS' => '7.64',
+ 'ExtUtils::MM_NW5' => '7.64',
+ 'ExtUtils::MM_OS2' => '7.64',
+ 'ExtUtils::MM_OS390' => '7.64',
+ 'ExtUtils::MM_QNX' => '7.64',
+ 'ExtUtils::MM_UWIN' => '7.64',
+ 'ExtUtils::MM_Unix' => '7.64',
+ 'ExtUtils::MM_VMS' => '7.64',
+ 'ExtUtils::MM_VOS' => '7.64',
+ 'ExtUtils::MM_Win32' => '7.64',
+ 'ExtUtils::MM_Win95' => '7.64',
+ 'ExtUtils::MY' => '7.64',
+ 'ExtUtils::MakeMaker' => '7.64',
+ 'ExtUtils::MakeMaker::Config'=> '7.64',
+ 'ExtUtils::MakeMaker::Locale'=> '7.64',
+ 'ExtUtils::MakeMaker::version'=> '7.64',
+ 'ExtUtils::MakeMaker::version::regex'=> '7.64',
+ 'ExtUtils::Mkbootstrap' => '7.64',
+ 'ExtUtils::Mksymlists' => '7.64',
+ 'ExtUtils::testlib' => '7.64',
+ 'File::Compare' => '1.1007',
+ 'File::Copy' => '2.38',
+ 'File::Spec' => '3.83',
+ 'File::Spec::AmigaOS' => '3.83',
+ 'File::Spec::Cygwin' => '3.83',
+ 'File::Spec::Epoc' => '3.83',
+ 'File::Spec::Functions' => '3.83',
+ 'File::Spec::Mac' => '3.83',
+ 'File::Spec::OS2' => '3.83',
+ 'File::Spec::Unix' => '3.83',
+ 'File::Spec::VMS' => '3.83',
+ 'File::Spec::Win32' => '3.83',
+ 'Hash::Util' => '0.27',
+ 'Hash::Util::FieldHash' => '1.24',
+ 'IO' => '1.49',
+ 'JSON::PP' => '4.07',
+ 'JSON::PP::Boolean' => '4.07',
+ 'Math::BigFloat' => '1.999828',
+ 'Math::BigInt' => '1.999828',
+ 'Math::BigInt::Calc' => '1.999828',
+ 'Math::BigInt::Lib' => '1.999828',
+ 'Module::CoreList' => '5.20211220',
+ 'Module::CoreList::Utils'=> '5.20211220',
+ 'Opcode' => '1.55',
+ 'builtin' => '0.001',
+ 'overload' => '1.34',
+ },
+ removed => {
+ }
+ },
+ 5.035008 => {
+ delta_from => 5.035007,
+ changed => {
+ 'B::Deparse' => '1.61',
+ 'B::Op_private' => '5.035008',
+ 'Config' => '5.035008',
+ 'Data::Dumper' => '2.184',
+ 'Errno' => '1.36',
+ 'File::Fetch' => '1.04',
+ 'File::Find' => '1.40',
+ 'Hash::Util::FieldHash' => '1.25',
+ 'Locale::Maketext' => '1.30',
+ 'Math::BigFloat' => '1.999829',
+ 'Math::BigFloat::Trace' => '0.64',
+ 'Math::BigInt' => '1.999829',
+ 'Math::BigInt::Calc' => '1.999829',
+ 'Math::BigInt::Lib' => '1.999829',
+ 'Math::BigInt::Trace' => '0.64',
+ 'Math::BigRat::Trace' => '0.64',
+ 'Module::CoreList' => '5.20220120',
+ 'Module::CoreList::Utils'=> '5.20220120',
+ 'NEXT' => '0.69',
+ 'POSIX' => '2.03',
+ 'Win32' => '0.58',
+ '_charnames' => '1.49',
+ 'bigint' => '0.64',
+ 'bignum' => '0.64',
+ 'bigrat' => '0.64',
+ 'charnames' => '1.49',
+ },
+ removed => {
+ }
+ },
+ 5.035009 => {
+ delta_from => 5.035008,
+ changed => {
+ 'App::Cpan' => '1.678',
+ 'B::Deparse' => '1.62',
+ 'B::Op_private' => '5.035009',
+ 'CPAN' => '2.33',
+ 'CPAN::Distribution' => '2.33',
+ 'CPAN::FTP' => '5.5016',
+ 'CPAN::FirstTime' => '5.5317',
+ 'Config' => '5.035009',
+ 'Devel::PPPort' => '3.64',
+ 'File::Copy' => '2.39',
+ 'Hash::Util' => '0.28',
+ 'Hash::Util::FieldHash' => '1.26',
+ 'List::Util' => '1.61',
+ 'List::Util::XS' => '1.61',
+ 'Module::CoreList' => '5.20220220',
+ 'Module::CoreList::Utils'=> '5.20220220',
+ 'Opcode' => '1.56',
+ 'Scalar::Util' => '1.61',
+ 'Sub::Util' => '1.61',
+ 'Tie::SubstrHash' => '1.01',
+ 'XS::APItest' => '1.21',
+ '_charnames' => '1.50',
+ 'builtin' => '0.002',
+ 'charnames' => '1.50',
+ 'experimental' => '0.027',
+ 'feature' => '1.70',
+ 'overload' => '1.35',
+ 're' => '0.42',
+ 'sigtrap' => '1.10',
+ 'warnings' => '1.57',
+ },
+ removed => {
+ }
+ },
+ 5.034001 => {
+ delta_from => 5.034000,
+ changed => {
+ 'B::Deparse' => '1.57',
+ 'B::Op_private' => '5.034001',
+ 'Config' => '5.034001',
+ 'Encode' => '3.08_01',
+ 'GDBM_File' => '1.19_01',
+ 'Module::CoreList' => '5.20220313',
+ 'Module::CoreList::Utils'=> '5.20220313',
+ },
+ removed => {
+ }
+ },
+ 5.035010 => {
+ delta_from => 5.035009,
+ changed => {
+ 'Attribute::Handlers' => '1.02',
+ 'B::Deparse' => '1.63',
+ 'B::Op_private' => '5.035010',
+ 'Config' => '5.03501',
+ 'Cwd' => '3.84',
+ 'DB_File' => '1.857',
+ 'Devel::PPPort' => '3.68',
+ 'ExtUtils::ParseXS' => '3.45',
+ 'ExtUtils::ParseXS::Constants'=> '3.45',
+ 'ExtUtils::ParseXS::CountLines'=> '3.45',
+ 'ExtUtils::ParseXS::Eval'=> '3.45',
+ 'ExtUtils::ParseXS::Utilities'=> '3.45',
+ 'ExtUtils::Typemaps' => '3.45',
+ 'ExtUtils::Typemaps::Cmd'=> '3.45',
+ 'ExtUtils::Typemaps::InputMap'=> '3.45',
+ 'ExtUtils::Typemaps::OutputMap'=> '3.45',
+ 'ExtUtils::Typemaps::Type'=> '3.45',
+ 'File::Spec' => '3.84',
+ 'File::Spec::AmigaOS' => '3.84',
+ 'File::Spec::Cygwin' => '3.84',
+ 'File::Spec::Epoc' => '3.84',
+ 'File::Spec::Functions' => '3.84',
+ 'File::Spec::Mac' => '3.84',
+ 'File::Spec::OS2' => '3.84',
+ 'File::Spec::Unix' => '3.84',
+ 'File::Spec::VMS' => '3.84',
+ 'File::Spec::Win32' => '3.84',
+ 'GDBM_File' => '1.23',
+ 'List::Util' => '1.62',
+ 'List::Util::XS' => '1.62',
+ 'Module::CoreList' => '5.20220320',
+ 'Module::CoreList::Utils'=> '5.20220320',
+ 'Opcode' => '1.57',
+ 'Scalar::Util' => '1.62',
+ 'Sub::Util' => '1.62',
+ 'Test2' => '1.302190',
+ 'Test2::API' => '1.302190',
+ 'Test2::API::Breakage' => '1.302190',
+ 'Test2::API::Context' => '1.302190',
+ 'Test2::API::Instance' => '1.302190',
+ 'Test2::API::InterceptResult'=> '1.302190',
+ 'Test2::API::InterceptResult::Event'=> '1.302190',
+ 'Test2::API::InterceptResult::Facet'=> '1.302190',
+ 'Test2::API::InterceptResult::Hub'=> '1.302190',
+ 'Test2::API::InterceptResult::Squasher'=> '1.302190',
+ 'Test2::API::Stack' => '1.302190',
+ 'Test2::Event' => '1.302190',
+ 'Test2::Event::Bail' => '1.302190',
+ 'Test2::Event::Diag' => '1.302190',
+ 'Test2::Event::Encoding'=> '1.302190',
+ 'Test2::Event::Exception'=> '1.302190',
+ 'Test2::Event::Fail' => '1.302190',
+ 'Test2::Event::Generic' => '1.302190',
+ 'Test2::Event::Note' => '1.302190',
+ 'Test2::Event::Ok' => '1.302190',
+ 'Test2::Event::Pass' => '1.302190',
+ 'Test2::Event::Plan' => '1.302190',
+ 'Test2::Event::Skip' => '1.302190',
+ 'Test2::Event::Subtest' => '1.302190',
+ 'Test2::Event::TAP::Version'=> '1.302190',
+ 'Test2::Event::V2' => '1.302190',
+ 'Test2::Event::Waiting' => '1.302190',
+ 'Test2::EventFacet' => '1.302190',
+ 'Test2::EventFacet::About'=> '1.302190',
+ 'Test2::EventFacet::Amnesty'=> '1.302190',
+ 'Test2::EventFacet::Assert'=> '1.302190',
+ 'Test2::EventFacet::Control'=> '1.302190',
+ 'Test2::EventFacet::Error'=> '1.302190',
+ 'Test2::EventFacet::Hub'=> '1.302190',
+ 'Test2::EventFacet::Info'=> '1.302190',
+ 'Test2::EventFacet::Info::Table'=> '1.302190',
+ 'Test2::EventFacet::Meta'=> '1.302190',
+ 'Test2::EventFacet::Parent'=> '1.302190',
+ 'Test2::EventFacet::Plan'=> '1.302190',
+ 'Test2::EventFacet::Render'=> '1.302190',
+ 'Test2::EventFacet::Trace'=> '1.302190',
+ 'Test2::Formatter' => '1.302190',
+ 'Test2::Formatter::TAP' => '1.302190',
+ 'Test2::Hub' => '1.302190',
+ 'Test2::Hub::Interceptor'=> '1.302190',
+ 'Test2::Hub::Interceptor::Terminator'=> '1.302190',
+ 'Test2::Hub::Subtest' => '1.302190',
+ 'Test2::IPC' => '1.302190',
+ 'Test2::IPC::Driver' => '1.302190',
+ 'Test2::IPC::Driver::Files'=> '1.302190',
+ 'Test2::Tools::Tiny' => '1.302190',
+ 'Test2::Util' => '1.302190',
+ 'Test2::Util::ExternalMeta'=> '1.302190',
+ 'Test2::Util::Facets2Legacy'=> '1.302190',
+ 'Test2::Util::HashBase' => '1.302190',
+ 'Test2::Util::Trace' => '1.302190',
+ 'Test::Builder' => '1.302190',
+ 'Test::Builder::Formatter'=> '1.302190',
+ 'Test::Builder::Module' => '1.302190',
+ 'Test::Builder::Tester' => '1.302190',
+ 'Test::Builder::Tester::Color'=> '1.302190',
+ 'Test::Builder::TodoDiag'=> '1.302190',
+ 'Test::More' => '1.302190',
+ 'Test::Simple' => '1.302190',
+ 'Test::Tester' => '1.302190',
+ 'Test::Tester::Capture' => '1.302190',
+ 'Test::Tester::CaptureRunner'=> '1.302190',
+ 'Test::Tester::Delegate'=> '1.302190',
+ 'Test::use::ok' => '1.302190',
+ 'XS::APItest' => '1.22',
+ 'builtin' => '0.004',
+ 'experimental' => '0.028',
+ 'feature' => '1.71',
+ 'ok' => '1.302190',
+ 'warnings' => '1.58',
+ },
+ removed => {
+ }
+ },
+ 5.035011 => {
+ delta_from => 5.03501,
+ changed => {
+ 'App::Prove' => '3.44',
+ 'App::Prove::State' => '3.44',
+ 'App::Prove::State::Result'=> '3.44',
+ 'App::Prove::State::Result::Test'=> '3.44',
+ 'B::Deparse' => '1.64',
+ 'B::Op_private' => '5.035011',
+ 'Compress::Raw::Bzip2' => '2.103',
+ 'Compress::Raw::Zlib' => '2.103',
+ 'Compress::Zlib' => '2.106',
+ 'Config' => '5.035011',
+ 'Encode' => '3.17',
+ 'Encode::Unicode' => '2.20',
+ 'ExtUtils::Constant::Base'=> '0.07',
+ 'IO' => '1.49_01',
+ 'IO::Compress::Adapter::Bzip2'=> '2.106',
+ 'IO::Compress::Adapter::Deflate'=> '2.106',
+ 'IO::Compress::Adapter::Identity'=> '2.106',
+ 'IO::Compress::Base' => '2.106',
+ 'IO::Compress::Base::Common'=> '2.106',
+ 'IO::Compress::Bzip2' => '2.106',
+ 'IO::Compress::Deflate' => '2.106',
+ 'IO::Compress::Gzip' => '2.106',
+ 'IO::Compress::Gzip::Constants'=> '2.106',
+ 'IO::Compress::RawDeflate'=> '2.106',
+ 'IO::Compress::Zip' => '2.106',
+ 'IO::Compress::Zip::Constants'=> '2.106',
+ 'IO::Compress::Zlib::Constants'=> '2.106',
+ 'IO::Compress::Zlib::Extra'=> '2.106',
+ 'IO::Uncompress::Adapter::Bunzip2'=> '2.106',
+ 'IO::Uncompress::Adapter::Identity'=> '2.106',
+ 'IO::Uncompress::Adapter::Inflate'=> '2.106',
+ 'IO::Uncompress::AnyInflate'=> '2.106',
+ 'IO::Uncompress::AnyUncompress'=> '2.106',
+ 'IO::Uncompress::Base' => '2.106',
+ 'IO::Uncompress::Bunzip2'=> '2.106',
+ 'IO::Uncompress::Gunzip'=> '2.106',
+ 'IO::Uncompress::Inflate'=> '2.106',
+ 'IO::Uncompress::RawInflate'=> '2.106',
+ 'IO::Uncompress::Unzip' => '2.106',
+ 'Locale::Maketext' => '1.31',
+ 'Math::BigFloat' => '1.999830',
+ 'Math::BigFloat::Trace' => '0.65',
+ 'Math::BigInt' => '1.999830',
+ 'Math::BigInt::Calc' => '1.999830',
+ 'Math::BigInt::Lib' => '1.999830',
+ 'Math::BigInt::Trace' => '0.65',
+ 'Math::BigRat' => '0.2621',
+ 'Math::BigRat::Trace' => '0.65',
+ 'Module::CoreList' => '5.20220420',
+ 'Module::CoreList::Utils'=> '5.20220420',
+ 'Net::Cmd' => '3.14',
+ 'Net::Config' => '3.14',
+ 'Net::Domain' => '3.14',
+ 'Net::FTP' => '3.14',
+ 'Net::FTP::A' => '3.14',
+ 'Net::FTP::E' => '3.14',
+ 'Net::FTP::I' => '3.14',
+ 'Net::FTP::L' => '3.14',
+ 'Net::FTP::dataconn' => '3.14',
+ 'Net::NNTP' => '3.14',
+ 'Net::Netrc' => '3.14',
+ 'Net::POP3' => '3.14',
+ 'Net::SMTP' => '3.14',
+ 'Net::Time' => '3.14',
+ 'Socket' => '2.033',
+ 'Storable' => '3.26',
+ 'TAP::Base' => '3.44',
+ 'TAP::Formatter::Base' => '3.44',
+ 'TAP::Formatter::Color' => '3.44',
+ 'TAP::Formatter::Console'=> '3.44',
+ 'TAP::Formatter::Console::ParallelSession'=> '3.44',
+ 'TAP::Formatter::Console::Session'=> '3.44',
+ 'TAP::Formatter::File' => '3.44',
+ 'TAP::Formatter::File::Session'=> '3.44',
+ 'TAP::Formatter::Session'=> '3.44',
+ 'TAP::Harness' => '3.44',
+ 'TAP::Harness::Env' => '3.44',
+ 'TAP::Object' => '3.44',
+ 'TAP::Parser' => '3.44',
+ 'TAP::Parser::Aggregator'=> '3.44',
+ 'TAP::Parser::Grammar' => '3.44',
+ 'TAP::Parser::Iterator' => '3.44',
+ 'TAP::Parser::Iterator::Array'=> '3.44',
+ 'TAP::Parser::Iterator::Process'=> '3.44',
+ 'TAP::Parser::Iterator::Stream'=> '3.44',
+ 'TAP::Parser::IteratorFactory'=> '3.44',
+ 'TAP::Parser::Multiplexer'=> '3.44',
+ 'TAP::Parser::Result' => '3.44',
+ 'TAP::Parser::Result::Bailout'=> '3.44',
+ 'TAP::Parser::Result::Comment'=> '3.44',
+ 'TAP::Parser::Result::Plan'=> '3.44',
+ 'TAP::Parser::Result::Pragma'=> '3.44',
+ 'TAP::Parser::Result::Test'=> '3.44',
+ 'TAP::Parser::Result::Unknown'=> '3.44',
+ 'TAP::Parser::Result::Version'=> '3.44',
+ 'TAP::Parser::Result::YAML'=> '3.44',
+ 'TAP::Parser::ResultFactory'=> '3.44',
+ 'TAP::Parser::Scheduler'=> '3.44',
+ 'TAP::Parser::Scheduler::Job'=> '3.44',
+ 'TAP::Parser::Scheduler::Spinner'=> '3.44',
+ 'TAP::Parser::Source' => '3.44',
+ 'TAP::Parser::SourceHandler'=> '3.44',
+ 'TAP::Parser::SourceHandler::Executable'=> '3.44',
+ 'TAP::Parser::SourceHandler::File'=> '3.44',
+ 'TAP::Parser::SourceHandler::Handle'=> '3.44',
+ 'TAP::Parser::SourceHandler::Perl'=> '3.44',
+ 'TAP::Parser::SourceHandler::RawTAP'=> '3.44',
+ 'TAP::Parser::YAMLish::Reader'=> '3.44',
+ 'TAP::Parser::YAMLish::Writer'=> '3.44',
+ 'Test::Harness' => '3.44',
+ 'Text::ParseWords' => '3.31',
+ 'Time::HiRes' => '1.9770',
+ 'Unicode::Normalize' => '1.31',
+ 'bigfloat' => '0.65',
+ 'bigint' => '0.65',
+ 'bignum' => '0.65',
+ 'bigrat' => '0.65',
+ 'builtin' => '0.005',
+ 're' => '0.43',
+ },
+ removed => {
+ }
+ },
+ 5.036000 => {
+ delta_from => 5.035011,
+ changed => {
+ 'Amiga::Exec' => '0.04',
+ 'B::Op_private' => '5.036000',
+ 'Compress::Raw::Zlib' => '2.105',
+ 'Config' => '5.036',
+ 'IO' => '1.50',
+ 'Module::CoreList' => '5.20220520',
+ 'Module::CoreList::Utils'=> '5.20220520',
+ 'Win32' => '0.59',
+ 'builtin' => '0.006',
+ 'feature' => '1.72',
+ },
+ removed => {
+ }
+ },
+ 5.037000 => {
+ delta_from => 5.036000,
+ changed => {
+ 'feature' => '1.73',
+ 'Module::CoreList' => '5.20220527',
+ 'Module::CoreList::Utils'=> '5.20220527',
+ },
+ removed => {
+ }
+ },
+ 5.037001 => {
+ delta_from => 5.037000,
+ changed => {
+ 'B' => '1.84',
+ 'B::Op_private' => '5.037001',
+ 'Carp' => '1.53',
+ 'Carp::Heavy' => '1.53',
+ 'Config' => '5.037001',
+ 'Cwd' => '3.85',
+ 'Data::Dumper' => '2.185',
+ 'ExtUtils::CBuilder' => '0.280237',
+ 'ExtUtils::CBuilder::Base'=> '0.280237',
+ 'ExtUtils::CBuilder::Platform::Unix'=> '0.280237',
+ 'ExtUtils::CBuilder::Platform::VMS'=> '0.280237',
+ 'ExtUtils::CBuilder::Platform::Windows'=> '0.280237',
+ 'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280237',
+ 'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280237',
+ 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280237',
+ 'ExtUtils::CBuilder::Platform::aix'=> '0.280237',
+ 'ExtUtils::CBuilder::Platform::android'=> '0.280237',
+ 'ExtUtils::CBuilder::Platform::cygwin'=> '0.280237',
+ 'ExtUtils::CBuilder::Platform::darwin'=> '0.280237',
+ 'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280237',
+ 'ExtUtils::CBuilder::Platform::os2'=> '0.280237',
+ 'ExtUtils::Miniperl' => '1.12',
+ 'File::Spec' => '3.85',
+ 'File::Spec::AmigaOS' => '3.85',
+ 'File::Spec::Cygwin' => '3.85',
+ 'File::Spec::Epoc' => '3.85',
+ 'File::Spec::Functions' => '3.85',
+ 'File::Spec::Mac' => '3.85',
+ 'File::Spec::OS2' => '3.85',
+ 'File::Spec::Unix' => '3.85',
+ 'File::Spec::VMS' => '3.85',
+ 'File::Spec::Win32' => '3.85',
+ 'FileHandle' => '2.04',
+ 'GDBM_File' => '1.24',
+ 'IO::Handle' => '1.49',
+ 'IO::Pipe' => '1.50',
+ 'IO::Socket::INET' => '1.50',
+ 'IO::Socket::UNIX' => '1.50',
+ 'Module::CoreList' => '5.20220620',
+ 'Module::CoreList::Utils'=> '5.20220620',
+ 'ODBM_File' => '1.18',
+ 'OS2::REXX' => '1.06',
+ 'Opcode' => '1.58',
+ 'POSIX' => '2.04',
+ 'SDBM_File' => '1.16',
+ 'Unicode::Normalize' => '1.32',
+ 'XS::APItest' => '1.23',
+ 'builtin' => '0.007',
+ 'encoding::warnings' => '0.14',
+ 'feature' => '1.74',
+ 'threads' => '2.28',
+ },
+ removed => {
+ }
+ },
+ 5.037002 => {
+ delta_from => 5.037001,
+ changed => {
+ 'B' => '1.85',
+ 'B::Concise' => '1.007',
+ 'B::Deparse' => '1.65',
+ 'B::Op_private' => '5.037002',
+ 'CPAN' => '2.34',
+ 'CPAN::Distribution' => '2.34',
+ 'Compress::Raw::Bzip2' => '2.201',
+ 'Compress::Raw::Zlib' => '2.202',
+ 'Compress::Zlib' => '2.201',
+ 'Config' => '5.037002',
+ 'Cwd' => '3.86',
+ 'DB_File' => '1.858',
+ 'Data::Dumper' => '2.186',
+ 'Encode' => '3.18',
+ 'Encode::MIME::Header' => '2.29',
+ 'File::Glob' => '1.38',
+ 'File::Spec' => '3.86',
+ 'File::Spec::AmigaOS' => '3.86',
+ 'File::Spec::Cygwin' => '3.86',
+ 'File::Spec::Epoc' => '3.86',
+ 'File::Spec::Functions' => '3.86',
+ 'File::Spec::Mac' => '3.86',
+ 'File::Spec::OS2' => '3.86',
+ 'File::Spec::Unix' => '3.86',
+ 'File::Spec::VMS' => '3.86',
+ 'File::Spec::Win32' => '3.86',
+ 'Filter::Util::Call' => '1.61',
+ 'Hash::Util' => '0.29',
+ 'I18N::LangTags::List' => '0.41',
+ 'IO::Compress::Adapter::Bzip2'=> '2.201',
+ 'IO::Compress::Adapter::Deflate'=> '2.201',
+ 'IO::Compress::Adapter::Identity'=> '2.201',
+ 'IO::Compress::Base' => '2.201',
+ 'IO::Compress::Base::Common'=> '2.201',
+ 'IO::Compress::Bzip2' => '2.201',
+ 'IO::Compress::Deflate' => '2.201',
+ 'IO::Compress::Gzip' => '2.201',
+ 'IO::Compress::Gzip::Constants'=> '2.201',
+ 'IO::Compress::RawDeflate'=> '2.201',
+ 'IO::Compress::Zip' => '2.201',
+ 'IO::Compress::Zip::Constants'=> '2.201',
+ 'IO::Compress::Zlib::Constants'=> '2.201',
+ 'IO::Compress::Zlib::Extra'=> '2.201',
+ 'IO::Uncompress::Adapter::Bunzip2'=> '2.201',
+ 'IO::Uncompress::Adapter::Identity'=> '2.201',
+ 'IO::Uncompress::Adapter::Inflate'=> '2.201',
+ 'IO::Uncompress::AnyInflate'=> '2.201',
+ 'IO::Uncompress::AnyUncompress'=> '2.201',
+ 'IO::Uncompress::Base' => '2.201',
+ 'IO::Uncompress::Bunzip2'=> '2.201',
+ 'IO::Uncompress::Gunzip'=> '2.201',
+ 'IO::Uncompress::Inflate'=> '2.201',
+ 'IO::Uncompress::RawInflate'=> '2.201',
+ 'IO::Uncompress::Unzip' => '2.201',
+ 'JSON::PP' => '4.10',
+ 'JSON::PP::Boolean' => '4.10',
+ 'Math::BigFloat' => '1.999837',
+ 'Math::BigFloat::Trace' => '0.66',
+ 'Math::BigInt' => '1.999837',
+ 'Math::BigInt::Calc' => '1.999837',
+ 'Math::BigInt::FastCalc'=> '0.5013',
+ 'Math::BigInt::Lib' => '1.999837',
+ 'Math::BigInt::Trace' => '0.66',
+ 'Math::BigRat' => '0.2624',
+ 'Math::BigRat::Trace' => '0.66',
+ 'Module::CoreList' => '5.20220720',
+ 'Module::CoreList::Utils'=> '5.20220720',
+ 'Opcode' => '1.59',
+ 'PerlIO::via::QuotedPrint'=> '0.10',
+ 'Pod::Checker' => '1.75',
+ 'Pod::Usage' => '2.03',
+ 'Socket' => '2.035',
+ 'Storable' => '3.27',
+ 'Test2' => '1.302191',
+ 'Test2::API' => '1.302191',
+ 'Test2::API::Breakage' => '1.302191',
+ 'Test2::API::Context' => '1.302191',
+ 'Test2::API::Instance' => '1.302191',
+ 'Test2::API::InterceptResult'=> '1.302191',
+ 'Test2::API::InterceptResult::Event'=> '1.302191',
+ 'Test2::API::InterceptResult::Facet'=> '1.302191',
+ 'Test2::API::InterceptResult::Hub'=> '1.302191',
+ 'Test2::API::InterceptResult::Squasher'=> '1.302191',
+ 'Test2::API::Stack' => '1.302191',
+ 'Test2::Event' => '1.302191',
+ 'Test2::Event::Bail' => '1.302191',
+ 'Test2::Event::Diag' => '1.302191',
+ 'Test2::Event::Encoding'=> '1.302191',
+ 'Test2::Event::Exception'=> '1.302191',
+ 'Test2::Event::Fail' => '1.302191',
+ 'Test2::Event::Generic' => '1.302191',
+ 'Test2::Event::Note' => '1.302191',
+ 'Test2::Event::Ok' => '1.302191',
+ 'Test2::Event::Pass' => '1.302191',
+ 'Test2::Event::Plan' => '1.302191',
+ 'Test2::Event::Skip' => '1.302191',
+ 'Test2::Event::Subtest' => '1.302191',
+ 'Test2::Event::TAP::Version'=> '1.302191',
+ 'Test2::Event::V2' => '1.302191',
+ 'Test2::Event::Waiting' => '1.302191',
+ 'Test2::EventFacet' => '1.302191',
+ 'Test2::EventFacet::About'=> '1.302191',
+ 'Test2::EventFacet::Amnesty'=> '1.302191',
+ 'Test2::EventFacet::Assert'=> '1.302191',
+ 'Test2::EventFacet::Control'=> '1.302191',
+ 'Test2::EventFacet::Error'=> '1.302191',
+ 'Test2::EventFacet::Hub'=> '1.302191',
+ 'Test2::EventFacet::Info'=> '1.302191',
+ 'Test2::EventFacet::Info::Table'=> '1.302191',
+ 'Test2::EventFacet::Meta'=> '1.302191',
+ 'Test2::EventFacet::Parent'=> '1.302191',
+ 'Test2::EventFacet::Plan'=> '1.302191',
+ 'Test2::EventFacet::Render'=> '1.302191',
+ 'Test2::EventFacet::Trace'=> '1.302191',
+ 'Test2::Formatter' => '1.302191',
+ 'Test2::Formatter::TAP' => '1.302191',
+ 'Test2::Hub' => '1.302191',
+ 'Test2::Hub::Interceptor'=> '1.302191',
+ 'Test2::Hub::Interceptor::Terminator'=> '1.302191',
+ 'Test2::Hub::Subtest' => '1.302191',
+ 'Test2::IPC' => '1.302191',
+ 'Test2::IPC::Driver' => '1.302191',
+ 'Test2::IPC::Driver::Files'=> '1.302191',
+ 'Test2::Tools::Tiny' => '1.302191',
+ 'Test2::Util' => '1.302191',
+ 'Test2::Util::ExternalMeta'=> '1.302191',
+ 'Test2::Util::Facets2Legacy'=> '1.302191',
+ 'Test2::Util::HashBase' => '1.302191',
+ 'Test2::Util::Trace' => '1.302191',
+ 'Test::Builder' => '1.302191',
+ 'Test::Builder::Formatter'=> '1.302191',
+ 'Test::Builder::Module' => '1.302191',
+ 'Test::Builder::Tester' => '1.302191',
+ 'Test::Builder::Tester::Color'=> '1.302191',
+ 'Test::Builder::TodoDiag'=> '1.302191',
+ 'Test::More' => '1.302191',
+ 'Test::Simple' => '1.302191',
+ 'Test::Tester' => '1.302191',
+ 'Test::Tester::Capture' => '1.302191',
+ 'Test::Tester::CaptureRunner'=> '1.302191',
+ 'Test::Tester::Delegate'=> '1.302191',
+ 'Test::use::ok' => '1.302191',
+ 'Text::Balanced' => '2.06',
+ 'XS::APItest' => '1.24',
+ 'bigfloat' => '0.66',
+ 'bigint' => '0.66',
+ 'bignum' => '0.66',
+ 'bigrat' => '0.66',
+ 'builtin' => '0.008',
+ 'feature' => '1.75',
+ 'ok' => '1.302191',
+ 'threads::shared' => '1.65',
+ },
+ removed => {
+ }
+ },
+ 5.037003 => {
+ delta_from => 5.037002,
+ changed => {
+ 'B' => '1.86',
+ 'B::Deparse' => '1.68',
+ 'B::Op_private' => '5.037003',
+ 'Config' => '5.037003',
+ 'Digest::SHA' => '6.03',
+ 'DynaLoader' => '1.53',
+ 'Encode' => '3.19',
+ 'Encode::Alias' => '2.25',
+ 'ExtUtils::PL2Bat' => '0.005',
+ 'File::Find' => '1.41',
+ 'Filter::Util::Call' => '1.64',
+ 'HTTP::Tiny' => '0.082',
+ 'JSON::PP' => '4.11',
+ 'JSON::PP::Boolean' => '4.11',
+ 'List::Util' => '1.63',
+ 'List::Util::XS' => '1.63',
+ 'Memoize' => '1.10',
+ 'Memoize::AnyDBM_File' => '1.10',
+ 'Memoize::Expire' => '1.10',
+ 'Memoize::NDBM_File' => '1.10',
+ 'Memoize::SDBM_File' => '1.10',
+ 'Memoize::Storable' => '1.10',
+ 'Module::CoreList' => '5.20220820',
+ 'Module::CoreList::Utils'=> '5.20220820',
+ 'NDBM_File' => '1.16',
+ 'Opcode' => '1.60',
+ 'Scalar::Util' => '1.63',
+ 'Socket' => '2.036',
+ 'Sub::Util' => '1.63',
+ 'XS::APItest' => '1.25',
+ 'attributes' => '0.35',
+ 'threads' => '2.29',
+ },
+ removed => {
+ 'Memoize::ExpireFile' => 1,
+ 'Memoize::ExpireTest' => 1,
+ }
+ },
+ 5.037004 => {
+ delta_from => 5.037003,
+ changed => {
+ 'B::Deparse' => '1.69',
+ 'B::Op_private' => '5.037004',
+ 'Carp' => '1.54',
+ 'Carp::Heavy' => '1.54',
+ 'Class::Struct' => '0.67',
+ 'Config' => '5.037004',
+ 'Config::Perl::V' => '0.34',
+ 'Errno' => '1.37',
+ 'ExtUtils::ParseXS' => '3.46',
+ 'ExtUtils::ParseXS::Constants'=> '3.46',
+ 'ExtUtils::ParseXS::CountLines'=> '3.46',
+ 'ExtUtils::ParseXS::Eval'=> '3.46',
+ 'ExtUtils::ParseXS::Utilities'=> '3.46',
+ 'ExtUtils::Typemaps' => '3.46',
+ 'ExtUtils::Typemaps::Cmd'=> '3.46',
+ 'ExtUtils::Typemaps::InputMap'=> '3.46',
+ 'ExtUtils::Typemaps::OutputMap'=> '3.46',
+ 'ExtUtils::Typemaps::Type'=> '3.46',
+ 'File::Basename' => '2.86',
+ 'File::Copy' => '2.40',
+ 'File::Spec' => '3.87',
+ 'File::stat' => '1.13',
+ 'FileHandle' => '2.05',
+ 'Hash::Util' => '0.30',
+ 'I18N::Langinfo' => '0.22',
+ 'IO' => '1.51',
+ 'IO::Dir' => '1.51',
+ 'IO::File' => '1.51',
+ 'IO::Handle' => '1.51',
+ 'IO::Pipe' => '1.51',
+ 'IO::Poll' => '1.51',
+ 'IO::Seekable' => '1.51',
+ 'IO::Select' => '1.51',
+ 'IO::Socket' => '1.51',
+ 'IO::Socket::INET' => '1.51',
+ 'IO::Socket::UNIX' => '1.51',
+ 'Locale::Maketext' => '1.32',
+ 'Module::CoreList' => '5.20220920',
+ 'Module::CoreList::Utils'=> '5.20220920',
+ 'Net::protoent' => '1.02',
+ 'Net::servent' => '1.03',
+ 'Opcode' => '1.61',
+ 'POSIX' => '2.06',
+ 'Safe' => '2.44',
+ 'Sys::Hostname' => '1.25',
+ 'Time::HiRes' => '1.9771',
+ 'User::grent' => '1.04',
+ 'User::pwent' => '1.02',
+ 'XS::APItest' => '1.26',
+ 'XSLoader' => '0.32',
+ 'feature' => '1.76',
+ },
+ removed => {
+ }
+ },
+ 5.037005 => {
+ delta_from => 5.037004,
+ changed => {
+ 'B::Deparse' => '1.70',
+ 'B::Op_private' => '5.037005',
+ 'Config' => '5.037005',
+ 'JSON::PP' => '4.12',
+ 'JSON::PP::Boolean' => '4.12',
+ 'Math::Complex' => '1.5903',
+ 'Math::Trig' => '1.2301',
+ 'Memoize' => '1.14',
+ 'Memoize::AnyDBM_File' => '1.14',
+ 'Memoize::Expire' => '1.14',
+ 'Memoize::NDBM_File' => '1.14',
+ 'Memoize::SDBM_File' => '1.14',
+ 'Memoize::Storable' => '1.14',
+ 'Module::CoreList' => '5.20221020',
+ 'Module::CoreList::Utils'=> '5.20221020',
+ 'Net::Ping' => '2.75',
+ 'POSIX' => '2.07',
+ 'Unicode' => '15.0.0',
+ 'threads' => '2.31',
+ 'warnings' => '1.59',
+ },
+ removed => {
+ }
+ },
+ 5.037006 => {
+ delta_from => 5.037005,
+ changed => {
+ 'Attribute::Handlers' => '1.03',
+ 'B' => '1.87',
+ 'B::Deparse' => '1.71',
+ 'B::Op_private' => '5.037006',
+ 'Config' => '5.037006',
+ 'Data::Dumper' => '2.187',
+ 'Devel::PPPort' => '3.69',
+ 'ExtUtils::CBuilder' => '0.280238',
+ 'ExtUtils::CBuilder::Base'=> '0.280238',
+ 'ExtUtils::CBuilder::Platform::Unix'=> '0.280238',
+ 'ExtUtils::CBuilder::Platform::VMS'=> '0.280238',
+ 'ExtUtils::CBuilder::Platform::Windows'=> '0.280238',
+ 'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280238',
+ 'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280238',
+ 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280238',
+ 'ExtUtils::CBuilder::Platform::aix'=> '0.280238',
+ 'ExtUtils::CBuilder::Platform::android'=> '0.280238',
+ 'ExtUtils::CBuilder::Platform::cygwin'=> '0.280238',
+ 'ExtUtils::CBuilder::Platform::darwin'=> '0.280238',
+ 'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280238',
+ 'ExtUtils::CBuilder::Platform::os2'=> '0.280238',
+ 'ExtUtils::ParseXS' => '3.48',
+ 'ExtUtils::ParseXS::Constants'=> '3.48',
+ 'ExtUtils::ParseXS::CountLines'=> '3.48',
+ 'ExtUtils::ParseXS::Eval'=> '3.48',
+ 'ExtUtils::ParseXS::Utilities'=> '3.48',
+ 'ExtUtils::Typemaps' => '3.48',
+ 'ExtUtils::Typemaps::Cmd'=> '3.48',
+ 'ExtUtils::Typemaps::InputMap'=> '3.48',
+ 'ExtUtils::Typemaps::OutputMap'=> '3.48',
+ 'ExtUtils::Typemaps::Type'=> '3.48',
+ 'Getopt::Long' => '2.54',
+ 'Memoize' => '1.15',
+ 'Memoize::AnyDBM_File' => '1.15',
+ 'Memoize::Expire' => '1.15',
+ 'Memoize::NDBM_File' => '1.15',
+ 'Memoize::SDBM_File' => '1.15',
+ 'Memoize::Storable' => '1.15',
+ 'Module::CoreList' => '5.20221120',
+ 'Module::CoreList::Utils'=> '5.20221120',
+ 'Opcode' => '1.62',
+ 'POSIX' => '2.08',
+ 'Storable' => '3.28',
+ 'Time::HiRes' => '1.9772',
+ 'XS::APItest' => '1.27',
+ 'experimental' => '0.029',
+ 'feature' => '1.77',
+ 'overload' => '1.36',
+ 'threads' => '2.32',
+ 'utf8' => '1.25',
+ 'warnings' => '1.61',
+ },
+ removed => {
+ }
+ },
+ 5.037007 => {
+ delta_from => 5.037006,
+ changed => {
+ 'B::Deparse' => '1.72',
+ 'B::Op_private' => '5.037007',
+ 'Config' => '5.037007',
+ 'Cwd' => '3.88',
+ 'ExtUtils::Miniperl' => '1.13',
+ 'ExtUtils::ParseXS' => '3.49',
+ 'ExtUtils::ParseXS::Constants'=> '3.49',
+ 'ExtUtils::ParseXS::CountLines'=> '3.49',
+ 'ExtUtils::ParseXS::Eval'=> '3.49',
+ 'ExtUtils::ParseXS::Utilities'=> '3.49',
+ 'ExtUtils::Typemaps' => '3.49',
+ 'ExtUtils::Typemaps::Cmd'=> '3.49',
+ 'ExtUtils::Typemaps::InputMap'=> '3.49',
+ 'ExtUtils::Typemaps::OutputMap'=> '3.49',
+ 'ExtUtils::Typemaps::Type'=> '3.49',
+ 'File::Glob' => '1.39',
+ 'File::Spec' => '3.88',
+ 'File::Spec::AmigaOS' => '3.88',
+ 'File::Spec::Cygwin' => '3.88',
+ 'File::Spec::Epoc' => '3.88',
+ 'File::Spec::Functions' => '3.88',
+ 'File::Spec::Mac' => '3.88',
+ 'File::Spec::OS2' => '3.88',
+ 'File::Spec::Unix' => '3.88',
+ 'File::Spec::VMS' => '3.88',
+ 'File::Spec::Win32' => '3.88',
+ 'Module::CoreList' => '5.20221220',
+ 'Module::CoreList::Utils'=> '5.20221220',
+ 'Opcode' => '1.63',
+ 'POSIX' => '2.10',
+ 'Pod::Html' => '1.34',
+ 'Pod::Html::Util' => '1.34',
+ 'Pod::Man' => '5.00',
+ 'Pod::ParseLink' => '5.00',
+ 'Pod::Text' => '5.00',
+ 'Pod::Text::Color' => '5.00',
+ 'Pod::Text::Overstrike' => '5.00',
+ 'Pod::Text::Termcap' => '5.00',
+ 'XS::APItest' => '1.28',
+ 'experimental' => '0.030',
+ 'feature' => '1.78',
+ 'parent' => '0.239',
+ 'threads' => '2.33',
+ },
+ removed => {
+ }
+ },
+ 5.037008 => {
+ delta_from => 5.037007,
+ changed => {
+ 'B::Op_private' => '5.037008',
+ 'Config' => '5.037008',
+ 'Config::Perl::V' => '0.35',
+ 'ExtUtils::Command' => '7.66',
+ 'ExtUtils::Command::MM' => '7.66',
+ 'ExtUtils::Install' => '2.22',
+ 'ExtUtils::Installed' => '2.22',
+ 'ExtUtils::Liblist' => '7.66',
+ 'ExtUtils::Liblist::Kid'=> '7.66',
+ 'ExtUtils::MM' => '7.66',
+ 'ExtUtils::MM_AIX' => '7.66',
+ 'ExtUtils::MM_Any' => '7.66',
+ 'ExtUtils::MM_BeOS' => '7.66',
+ 'ExtUtils::MM_Cygwin' => '7.66',
+ 'ExtUtils::MM_DOS' => '7.66',
+ 'ExtUtils::MM_Darwin' => '7.66',
+ 'ExtUtils::MM_MacOS' => '7.66',
+ 'ExtUtils::MM_NW5' => '7.66',
+ 'ExtUtils::MM_OS2' => '7.66',
+ 'ExtUtils::MM_OS390' => '7.66',
+ 'ExtUtils::MM_QNX' => '7.66',
+ 'ExtUtils::MM_UWIN' => '7.66',
+ 'ExtUtils::MM_Unix' => '7.66',
+ 'ExtUtils::MM_VMS' => '7.66',
+ 'ExtUtils::MM_VOS' => '7.66',
+ 'ExtUtils::MM_Win32' => '7.66',
+ 'ExtUtils::MM_Win95' => '7.66',
+ 'ExtUtils::MY' => '7.66',
+ 'ExtUtils::MakeMaker' => '7.66',
+ 'ExtUtils::MakeMaker::Config'=> '7.66',
+ 'ExtUtils::MakeMaker::Locale'=> '7.66',
+ 'ExtUtils::MakeMaker::version'=> '7.66',
+ 'ExtUtils::MakeMaker::version::regex'=> '7.66',
+ 'ExtUtils::Mkbootstrap' => '7.66',
+ 'ExtUtils::Mksymlists' => '7.66',
+ 'ExtUtils::Packlist' => '2.22',
+ 'ExtUtils::testlib' => '7.66',
+ 'File::Find' => '1.42',
+ 'IO::Zlib' => '1.14',
+ 'JSON::PP' => '4.16',
+ 'JSON::PP::Boolean' => '4.16',
+ 'Math::Complex' => '1.6',
+ 'Math::Trig' => '1.6',
+ 'Module::CoreList' => '5.20230120',
+ 'Module::CoreList::Utils'=> '5.20230120',
+ 'POSIX' => '2.11',
+ 'Pod::Man' => '5.01',
+ 'Pod::ParseLink' => '5.01',
+ 'Pod::Text' => '5.01',
+ 'Pod::Text::Color' => '5.01',
+ 'Pod::Text::Overstrike' => '5.01',
+ 'Pod::Text::Termcap' => '5.01',
+ 'Storable' => '3.29',
+ 'XS::APItest' => '1.30',
+ 'feature' => '1.79',
+ 're' => '0.44',
+ 'threads' => '2.34',
+ },
+ removed => {
+ }
+ },
+ 5.037009 => {
+ delta_from => 5.037008,
+ changed => {
+ 'B' => '1.88',
+ 'B::Op_private' => '5.037009',
+ 'Compress::Raw::Bzip2' => '2.204',
+ 'Compress::Raw::Zlib' => '2.204',
+ 'Compress::Zlib' => '2.204',
+ 'Config' => '5.037009',
+ 'Devel::PPPort' => '3.70',
+ 'Devel::Peek' => '1.33',
+ 'Fatal' => '2.36',
+ 'File::Find' => '1.43',
+ 'IO::Compress::Adapter::Bzip2'=> '2.204',
+ 'IO::Compress::Adapter::Deflate'=> '2.204',
+ 'IO::Compress::Adapter::Identity'=> '2.204',
+ 'IO::Compress::Base' => '2.204',
+ 'IO::Compress::Base::Common'=> '2.204',
+ 'IO::Compress::Bzip2' => '2.204',
+ 'IO::Compress::Deflate' => '2.204',
+ 'IO::Compress::Gzip' => '2.204',
+ 'IO::Compress::Gzip::Constants'=> '2.204',
+ 'IO::Compress::RawDeflate'=> '2.204',
+ 'IO::Compress::Zip' => '2.204',
+ 'IO::Compress::Zip::Constants'=> '2.204',
+ 'IO::Compress::Zlib::Constants'=> '2.204',
+ 'IO::Compress::Zlib::Extra'=> '2.204',
+ 'IO::Uncompress::Adapter::Bunzip2'=> '2.204',
+ 'IO::Uncompress::Adapter::Identity'=> '2.204',
+ 'IO::Uncompress::Adapter::Inflate'=> '2.204',
+ 'IO::Uncompress::AnyInflate'=> '2.204',
+ 'IO::Uncompress::AnyUncompress'=> '2.204',
+ 'IO::Uncompress::Base' => '2.204',
+ 'IO::Uncompress::Bunzip2'=> '2.204',
+ 'IO::Uncompress::Gunzip'=> '2.204',
+ 'IO::Uncompress::Inflate'=> '2.204',
+ 'IO::Uncompress::RawInflate'=> '2.204',
+ 'IO::Uncompress::Unzip' => '2.204',
+ 'Math::Complex' => '1.61',
+ 'Math::Trig' => '1.61',
+ 'Memoize' => '1.16',
+ 'Memoize::AnyDBM_File' => '1.16',
+ 'Memoize::Expire' => '1.16',
+ 'Memoize::NDBM_File' => '1.16',
+ 'Memoize::SDBM_File' => '1.16',
+ 'Memoize::Storable' => '1.16',
+ 'Module::CoreList' => '5.20230220',
+ 'Module::CoreList::Utils'=> '5.20230220',
+ 'Opcode' => '1.64',
+ 'Term::Cap' => '1.18',
+ 'Test2' => '1.302192',
+ 'Test2::API' => '1.302192',
+ 'Test2::API::Breakage' => '1.302192',
+ 'Test2::API::Context' => '1.302192',
+ 'Test2::API::Instance' => '1.302192',
+ 'Test2::API::InterceptResult'=> '1.302192',
+ 'Test2::API::InterceptResult::Event'=> '1.302192',
+ 'Test2::API::InterceptResult::Facet'=> '1.302192',
+ 'Test2::API::InterceptResult::Hub'=> '1.302192',
+ 'Test2::API::InterceptResult::Squasher'=> '1.302192',
+ 'Test2::API::Stack' => '1.302192',
+ 'Test2::Event' => '1.302192',
+ 'Test2::Event::Bail' => '1.302192',
+ 'Test2::Event::Diag' => '1.302192',
+ 'Test2::Event::Encoding'=> '1.302192',
+ 'Test2::Event::Exception'=> '1.302192',
+ 'Test2::Event::Fail' => '1.302192',
+ 'Test2::Event::Generic' => '1.302192',
+ 'Test2::Event::Note' => '1.302192',
+ 'Test2::Event::Ok' => '1.302192',
+ 'Test2::Event::Pass' => '1.302192',
+ 'Test2::Event::Plan' => '1.302192',
+ 'Test2::Event::Skip' => '1.302192',
+ 'Test2::Event::Subtest' => '1.302192',
+ 'Test2::Event::TAP::Version'=> '1.302192',
+ 'Test2::Event::V2' => '1.302192',
+ 'Test2::Event::Waiting' => '1.302192',
+ 'Test2::EventFacet' => '1.302192',
+ 'Test2::EventFacet::About'=> '1.302192',
+ 'Test2::EventFacet::Amnesty'=> '1.302192',
+ 'Test2::EventFacet::Assert'=> '1.302192',
+ 'Test2::EventFacet::Control'=> '1.302192',
+ 'Test2::EventFacet::Error'=> '1.302192',
+ 'Test2::EventFacet::Hub'=> '1.302192',
+ 'Test2::EventFacet::Info'=> '1.302192',
+ 'Test2::EventFacet::Info::Table'=> '1.302192',
+ 'Test2::EventFacet::Meta'=> '1.302192',
+ 'Test2::EventFacet::Parent'=> '1.302192',
+ 'Test2::EventFacet::Plan'=> '1.302192',
+ 'Test2::EventFacet::Render'=> '1.302192',
+ 'Test2::EventFacet::Trace'=> '1.302192',
+ 'Test2::Formatter' => '1.302192',
+ 'Test2::Formatter::TAP' => '1.302192',
+ 'Test2::Hub' => '1.302192',
+ 'Test2::Hub::Interceptor'=> '1.302192',
+ 'Test2::Hub::Interceptor::Terminator'=> '1.302192',
+ 'Test2::Hub::Subtest' => '1.302192',
+ 'Test2::IPC' => '1.302192',
+ 'Test2::IPC::Driver' => '1.302192',
+ 'Test2::IPC::Driver::Files'=> '1.302192',
+ 'Test2::Tools::Tiny' => '1.302192',
+ 'Test2::Util' => '1.302192',
+ 'Test2::Util::ExternalMeta'=> '1.302192',
+ 'Test2::Util::Facets2Legacy'=> '1.302192',
+ 'Test2::Util::HashBase' => '1.302192',
+ 'Test2::Util::Trace' => '1.302192',
+ 'Test::Builder' => '1.302192',
+ 'Test::Builder::Formatter'=> '1.302192',
+ 'Test::Builder::Module' => '1.302192',
+ 'Test::Builder::Tester' => '1.302192',
+ 'Test::Builder::Tester::Color'=> '1.302192',
+ 'Test::Builder::TodoDiag'=> '1.302192',
+ 'Test::More' => '1.302192',
+ 'Test::Simple' => '1.302192',
+ 'Test::Tester' => '1.302192',
+ 'Test::Tester::Capture' => '1.302192',
+ 'Test::Tester::CaptureRunner'=> '1.302192',
+ 'Test::Tester::Delegate'=> '1.302192',
+ 'Test::use::ok' => '1.302192',
+ 'Tie::File' => '1.07',
+ 'UNIVERSAL' => '1.15',
+ 'autodie' => '2.36',
+ 'autodie::Scope::Guard' => '2.36',
+ 'autodie::Scope::GuardStack'=> '2.36',
+ 'autodie::Util' => '2.36',
+ 'autodie::exception' => '2.36',
+ 'autodie::exception::system'=> '2.36',
+ 'autodie::hints' => '2.36',
+ 'autodie::skip' => '2.36',
+ 'experimental' => '0.031',
+ 'feature' => '1.80',
+ 'mro' => '1.28',
+ 'ok' => '1.302192',
+ 'parent' => '0.241',
+ 'stable' => '0.031',
+ 'warnings' => '1.62',
+ },
+ removed => {
+ }
+ },
+ 5.037010 => {
+ delta_from => 5.037009,
+ changed => {
+ 'B::Op_private' => '5.037010',
+ 'Benchmark' => '1.24',
+ 'Class::Struct' => '0.68',
+ 'Config' => '5.03701',
+ 'Config::Perl::V' => '0.36',
+ 'Cwd' => '3.89',
+ 'Data::Dumper' => '2.188',
+ 'Digest::SHA' => '6.04',
+ 'Env' => '1.06',
+ 'Math::Complex' => '1.62',
+ 'Math::Trig' => '1.62',
+ 'Module::CoreList' => '5.20230320',
+ 'Module::CoreList::Utils'=> '5.20230320',
+ 'Net::Cmd' => '3.15',
+ 'Net::Config' => '3.15',
+ 'Net::Domain' => '3.15',
+ 'Net::FTP' => '3.15',
+ 'Net::FTP::A' => '3.15',
+ 'Net::FTP::E' => '3.15',
+ 'Net::FTP::I' => '3.15',
+ 'Net::FTP::L' => '3.15',
+ 'Net::FTP::dataconn' => '3.15',
+ 'Net::NNTP' => '3.15',
+ 'Net::Netrc' => '3.15',
+ 'Net::POP3' => '3.15',
+ 'Net::SMTP' => '3.15',
+ 'Net::Time' => '3.15',
+ 'POSIX' => '2.12',
+ 'Storable' => '3.31',
+ 'Test2' => '1.302194',
+ 'Test2::API' => '1.302194',
+ 'Test2::API::Breakage' => '1.302194',
+ 'Test2::API::Context' => '1.302194',
+ 'Test2::API::Instance' => '1.302194',
+ 'Test2::API::InterceptResult'=> '1.302194',
+ 'Test2::API::InterceptResult::Event'=> '1.302194',
+ 'Test2::API::InterceptResult::Facet'=> '1.302194',
+ 'Test2::API::InterceptResult::Hub'=> '1.302194',
+ 'Test2::API::InterceptResult::Squasher'=> '1.302194',
+ 'Test2::API::Stack' => '1.302194',
+ 'Test2::Event' => '1.302194',
+ 'Test2::Event::Bail' => '1.302194',
+ 'Test2::Event::Diag' => '1.302194',
+ 'Test2::Event::Encoding'=> '1.302194',
+ 'Test2::Event::Exception'=> '1.302194',
+ 'Test2::Event::Fail' => '1.302194',
+ 'Test2::Event::Generic' => '1.302194',
+ 'Test2::Event::Note' => '1.302194',
+ 'Test2::Event::Ok' => '1.302194',
+ 'Test2::Event::Pass' => '1.302194',
+ 'Test2::Event::Plan' => '1.302194',
+ 'Test2::Event::Skip' => '1.302194',
+ 'Test2::Event::Subtest' => '1.302194',
+ 'Test2::Event::TAP::Version'=> '1.302194',
+ 'Test2::Event::V2' => '1.302194',
+ 'Test2::Event::Waiting' => '1.302194',
+ 'Test2::EventFacet' => '1.302194',
+ 'Test2::EventFacet::About'=> '1.302194',
+ 'Test2::EventFacet::Amnesty'=> '1.302194',
+ 'Test2::EventFacet::Assert'=> '1.302194',
+ 'Test2::EventFacet::Control'=> '1.302194',
+ 'Test2::EventFacet::Error'=> '1.302194',
+ 'Test2::EventFacet::Hub'=> '1.302194',
+ 'Test2::EventFacet::Info'=> '1.302194',
+ 'Test2::EventFacet::Info::Table'=> '1.302194',
+ 'Test2::EventFacet::Meta'=> '1.302194',
+ 'Test2::EventFacet::Parent'=> '1.302194',
+ 'Test2::EventFacet::Plan'=> '1.302194',
+ 'Test2::EventFacet::Render'=> '1.302194',
+ 'Test2::EventFacet::Trace'=> '1.302194',
+ 'Test2::Formatter' => '1.302194',
+ 'Test2::Formatter::TAP' => '1.302194',
+ 'Test2::Hub' => '1.302194',
+ 'Test2::Hub::Interceptor'=> '1.302194',
+ 'Test2::Hub::Interceptor::Terminator'=> '1.302194',
+ 'Test2::Hub::Subtest' => '1.302194',
+ 'Test2::IPC' => '1.302194',
+ 'Test2::IPC::Driver' => '1.302194',
+ 'Test2::IPC::Driver::Files'=> '1.302194',
+ 'Test2::Tools::Tiny' => '1.302194',
+ 'Test2::Util' => '1.302194',
+ 'Test2::Util::ExternalMeta'=> '1.302194',
+ 'Test2::Util::Facets2Legacy'=> '1.302194',
+ 'Test2::Util::HashBase' => '1.302194',
+ 'Test2::Util::Trace' => '1.302194',
+ 'Test::Builder' => '1.302194',
+ 'Test::Builder::Formatter'=> '1.302194',
+ 'Test::Builder::Module' => '1.302194',
+ 'Test::Builder::Tester' => '1.302194',
+ 'Test::Builder::Tester::Color'=> '1.302194',
+ 'Test::Builder::TodoDiag'=> '1.302194',
+ 'Test::More' => '1.302194',
+ 'Test::Simple' => '1.302194',
+ 'Test::Tester' => '1.302194',
+ 'Test::Tester::Capture' => '1.302194',
+ 'Test::Tester::CaptureRunner'=> '1.302194',
+ 'Test::Tester::Delegate'=> '1.302194',
+ 'Test::use::ok' => '1.302194',
+ 'Time::HiRes' => '1.9774',
+ 'XS::APItest' => '1.32',
+ 'feature' => '1.81',
+ 'ok' => '1.302194',
+ 'overload' => '1.37',
+ 'threads' => '2.35',
+ 'threads::shared' => '1.67',
+ 'warnings' => '1.63',
+ 'warnings::register' => '1.05',
+ },
+ removed => {
+ }
+ },
+ 5.037011 => {
+ delta_from => 5.037010,
+ changed => {
+ 'B::Deparse' => '1.73',
+ 'B::Op_private' => '5.037011',
+ 'Config' => '5.037011',
+ 'Devel::PPPort' => '3.71',
+ 'ExtUtils::Command' => '7.70',
+ 'ExtUtils::Command::MM' => '7.70',
+ 'ExtUtils::Liblist' => '7.70',
+ 'ExtUtils::Liblist::Kid'=> '7.70',
+ 'ExtUtils::MM' => '7.70',
+ 'ExtUtils::MM_AIX' => '7.70',
+ 'ExtUtils::MM_Any' => '7.70',
+ 'ExtUtils::MM_BeOS' => '7.70',
+ 'ExtUtils::MM_Cygwin' => '7.70',
+ 'ExtUtils::MM_DOS' => '7.70',
+ 'ExtUtils::MM_Darwin' => '7.70',
+ 'ExtUtils::MM_MacOS' => '7.70',
+ 'ExtUtils::MM_NW5' => '7.70',
+ 'ExtUtils::MM_OS2' => '7.70',
+ 'ExtUtils::MM_OS390' => '7.70',
+ 'ExtUtils::MM_QNX' => '7.70',
+ 'ExtUtils::MM_UWIN' => '7.70',
+ 'ExtUtils::MM_Unix' => '7.70',
+ 'ExtUtils::MM_VMS' => '7.70',
+ 'ExtUtils::MM_VOS' => '7.70',
+ 'ExtUtils::MM_Win32' => '7.70',
+ 'ExtUtils::MM_Win95' => '7.70',
+ 'ExtUtils::MY' => '7.70',
+ 'ExtUtils::MakeMaker' => '7.70',
+ 'ExtUtils::MakeMaker::Config'=> '7.70',
+ 'ExtUtils::MakeMaker::Locale'=> '7.70',
+ 'ExtUtils::MakeMaker::version'=> '7.70',
+ 'ExtUtils::MakeMaker::version::regex'=> '7.70',
+ 'ExtUtils::Mkbootstrap' => '7.70',
+ 'ExtUtils::Mksymlists' => '7.70',
+ 'ExtUtils::ParseXS' => '3.50',
+ 'ExtUtils::ParseXS::Constants'=> '3.50',
+ 'ExtUtils::ParseXS::CountLines'=> '3.50',
+ 'ExtUtils::ParseXS::Eval'=> '3.50',
+ 'ExtUtils::ParseXS::Utilities'=> '3.50',
+ 'ExtUtils::testlib' => '7.70',
+ 'File::Copy' => '2.41',
+ 'Locale::Maketext' => '1.33',
+ 'Module::CoreList' => '5.20230420',
+ 'Module::CoreList::Utils'=> '5.20230420',
+ 'Net::Ping' => '2.76',
+ 'feature' => '1.82',
+ 'threads' => '2.36',
+ 'threads::shared' => '1.68',
+ 'warnings' => '1.64',
+ },
+ removed => {
+ }
+ },
+ 5.036001 => {
+ delta_from => 5.036000,
+ changed => {
+ 'B::Op_private' => '5.036001',
+ 'Config' => '5.036001',
+ 'Module::CoreList' => '5.20230423',
+ 'Module::CoreList::Utils'=> '5.20230423',
+ },
+ removed => {
+ }
+ },
+ 5.038000 => {
+ delta_from => 5.037011,
+ changed => {
+ 'B::Deparse' => '1.74',
+ 'B::Op_private' => '5.038000',
+ 'CPAN' => '2.36',
+ 'CPAN::HTTP::Client' => '1.9602',
+ 'Compress::Raw::Bzip2' => '2.204_001',
+ 'Compress::Raw::Zlib' => '2.204_001',
+ 'Config' => '5.038',
+ 'Digest::MD5' => '2.58_01',
+ 'DynaLoader' => '1.54',
+ 'ExtUtils::ParseXS' => '3.51',
+ 'ExtUtils::ParseXS::Constants'=> '3.51',
+ 'ExtUtils::ParseXS::CountLines'=> '3.51',
+ 'ExtUtils::ParseXS::Eval'=> '3.51',
+ 'ExtUtils::ParseXS::Utilities'=> '3.51',
+ 'ExtUtils::Typemaps' => '3.51',
+ 'ExtUtils::Typemaps::Cmd'=> '3.51',
+ 'ExtUtils::Typemaps::InputMap'=> '3.51',
+ 'ExtUtils::Typemaps::OutputMap'=> '3.51',
+ 'ExtUtils::Typemaps::Type'=> '3.51',
+ 'File::Glob' => '1.40',
+ 'HTTP::Tiny' => '0.086',
+ 'IO' => '1.52',
+ 'IO::Dir' => '1.52',
+ 'IO::File' => '1.52',
+ 'IO::Handle' => '1.52',
+ 'IO::Pipe' => '1.52',
+ 'IO::Poll' => '1.52',
+ 'IO::Seekable' => '1.52',
+ 'IO::Select' => '1.52',
+ 'IO::Socket' => '1.52',
+ 'IO::Socket::INET' => '1.52',
+ 'IO::Socket::IP' => '0.41_01',
+ 'IO::Socket::UNIX' => '1.52',
+ 'MIME::Base64' => '3.16_01',
+ 'MIME::QuotedPrint' => '3.16_01',
+ 'Module::CoreList' => '5.20230520',
+ 'Module::CoreList::Utils'=> '5.20230520',
+ 'POSIX' => '2.13',
+ 'SDBM_File' => '1.17',
+ 'Storable' => '3.32',
+ 'Time::HiRes' => '1.9775',
+ 'Time::Piece' => '1.3401_01',
+ 'warnings' => '1.65',
+ },
+ removed => {
+ }
+ },
+ 5.039001 => {
+ delta_from => 5.038000,
+ changed => {
+ 'B::Op_private' => '5.039001',
+ 'CPAN::Meta::Requirements'=> '2.143',
+ 'CPAN::Meta::Requirements::Range'=> '2.143',
+ 'Compress::Raw::Bzip2' => '2.205',
+ 'Compress::Raw::Zlib' => '2.205',
+ 'Compress::Zlib' => '2.205',
+ 'Config' => '5.039001',
+ 'Errno' => '1.38',
+ 'ExtUtils::CBuilder' => '0.280239',
+ 'ExtUtils::CBuilder::Base'=> '0.280239',
+ 'ExtUtils::CBuilder::Platform::Unix'=> '0.280239',
+ 'ExtUtils::CBuilder::Platform::VMS'=> '0.280239',
+ 'ExtUtils::CBuilder::Platform::Windows'=> '0.280239',
+ 'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280239',
+ 'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280239',
+ 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280239',
+ 'ExtUtils::CBuilder::Platform::aix'=> '0.280239',
+ 'ExtUtils::CBuilder::Platform::android'=> '0.280239',
+ 'ExtUtils::CBuilder::Platform::cygwin'=> '0.280239',
+ 'ExtUtils::CBuilder::Platform::darwin'=> '0.280239',
+ 'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280239',
+ 'ExtUtils::CBuilder::Platform::os2'=> '0.280239',
+ 'ExtUtils::Manifest' => '1.75',
+ 'IO::Compress::Adapter::Bzip2'=> '2.205',
+ 'IO::Compress::Adapter::Deflate'=> '2.205',
+ 'IO::Compress::Adapter::Identity'=> '2.205',
+ 'IO::Compress::Base' => '2.205',
+ 'IO::Compress::Base::Common'=> '2.205',
+ 'IO::Compress::Bzip2' => '2.205',
+ 'IO::Compress::Deflate' => '2.205',
+ 'IO::Compress::Gzip' => '2.205',
+ 'IO::Compress::Gzip::Constants'=> '2.205',
+ 'IO::Compress::RawDeflate'=> '2.205',
+ 'IO::Compress::Zip' => '2.205',
+ 'IO::Compress::Zip::Constants'=> '2.205',
+ 'IO::Compress::Zlib::Constants'=> '2.205',
+ 'IO::Compress::Zlib::Extra'=> '2.205',
+ 'IO::Uncompress::Adapter::Bunzip2'=> '2.205',
+ 'IO::Uncompress::Adapter::Identity'=> '2.205',
+ 'IO::Uncompress::Adapter::Inflate'=> '2.205',
+ 'IO::Uncompress::AnyInflate'=> '2.205',
+ 'IO::Uncompress::AnyUncompress'=> '2.205',
+ 'IO::Uncompress::Base' => '2.205',
+ 'IO::Uncompress::Bunzip2'=> '2.205',
+ 'IO::Uncompress::Gunzip'=> '2.205',
+ 'IO::Uncompress::Inflate'=> '2.205',
+ 'IO::Uncompress::RawInflate'=> '2.205',
+ 'IO::Uncompress::Unzip' => '2.205',
+ 'Math::BigFloat' => '1.999839',
+ 'Math::BigInt' => '1.999839',
+ 'Math::BigInt::Calc' => '1.999839',
+ 'Math::BigInt::FastCalc'=> '0.5014',
+ 'Math::BigInt::Lib' => '1.999839',
+ 'Module::CoreList' => '5.20230720',
+ 'Module::CoreList::Utils'=> '5.20230720',
+ 'Module::Metadata' => '1.000038',
+ 'POSIX' => '2.14',
+ 'Socket' => '2.037',
+ 'Test2' => '1.302195',
+ 'Test2::API' => '1.302195',
+ 'Test2::API::Breakage' => '1.302195',
+ 'Test2::API::Context' => '1.302195',
+ 'Test2::API::Instance' => '1.302195',
+ 'Test2::API::InterceptResult'=> '1.302195',
+ 'Test2::API::InterceptResult::Event'=> '1.302195',
+ 'Test2::API::InterceptResult::Facet'=> '1.302195',
+ 'Test2::API::InterceptResult::Hub'=> '1.302195',
+ 'Test2::API::InterceptResult::Squasher'=> '1.302195',
+ 'Test2::API::Stack' => '1.302195',
+ 'Test2::Event' => '1.302195',
+ 'Test2::Event::Bail' => '1.302195',
+ 'Test2::Event::Diag' => '1.302195',
+ 'Test2::Event::Encoding'=> '1.302195',
+ 'Test2::Event::Exception'=> '1.302195',
+ 'Test2::Event::Fail' => '1.302195',
+ 'Test2::Event::Generic' => '1.302195',
+ 'Test2::Event::Note' => '1.302195',
+ 'Test2::Event::Ok' => '1.302195',
+ 'Test2::Event::Pass' => '1.302195',
+ 'Test2::Event::Plan' => '1.302195',
+ 'Test2::Event::Skip' => '1.302195',
+ 'Test2::Event::Subtest' => '1.302195',
+ 'Test2::Event::TAP::Version'=> '1.302195',
+ 'Test2::Event::V2' => '1.302195',
+ 'Test2::Event::Waiting' => '1.302195',
+ 'Test2::EventFacet' => '1.302195',
+ 'Test2::EventFacet::About'=> '1.302195',
+ 'Test2::EventFacet::Amnesty'=> '1.302195',
+ 'Test2::EventFacet::Assert'=> '1.302195',
+ 'Test2::EventFacet::Control'=> '1.302195',
+ 'Test2::EventFacet::Error'=> '1.302195',
+ 'Test2::EventFacet::Hub'=> '1.302195',
+ 'Test2::EventFacet::Info'=> '1.302195',
+ 'Test2::EventFacet::Info::Table'=> '1.302195',
+ 'Test2::EventFacet::Meta'=> '1.302195',
+ 'Test2::EventFacet::Parent'=> '1.302195',
+ 'Test2::EventFacet::Plan'=> '1.302195',
+ 'Test2::EventFacet::Render'=> '1.302195',
+ 'Test2::EventFacet::Trace'=> '1.302195',
+ 'Test2::Formatter' => '1.302195',
+ 'Test2::Formatter::TAP' => '1.302195',
+ 'Test2::Hub' => '1.302195',
+ 'Test2::Hub::Interceptor'=> '1.302195',
+ 'Test2::Hub::Interceptor::Terminator'=> '1.302195',
+ 'Test2::Hub::Subtest' => '1.302195',
+ 'Test2::IPC' => '1.302195',
+ 'Test2::IPC::Driver' => '1.302195',
+ 'Test2::IPC::Driver::Files'=> '1.302195',
+ 'Test2::Tools::Tiny' => '1.302195',
+ 'Test2::Util' => '1.302195',
+ 'Test2::Util::ExternalMeta'=> '1.302195',
+ 'Test2::Util::Facets2Legacy'=> '1.302195',
+ 'Test2::Util::HashBase' => '1.302195',
+ 'Test2::Util::Trace' => '1.302195',
+ 'Test::Builder' => '1.302195',
+ 'Test::Builder::Formatter'=> '1.302195',
+ 'Test::Builder::Module' => '1.302195',
+ 'Test::Builder::Tester' => '1.302195',
+ 'Test::Builder::Tester::Color'=> '1.302195',
+ 'Test::Builder::TodoDiag'=> '1.302195',
+ 'Test::More' => '1.302195',
+ 'Test::Simple' => '1.302195',
+ 'Test::Tester' => '1.302195',
+ 'Test::Tester::Capture' => '1.302195',
+ 'Test::Tester::CaptureRunner'=> '1.302195',
+ 'Test::Tester::Delegate'=> '1.302195',
+ 'Test::use::ok' => '1.302195',
+ 'Text::Tabs' => '2023.0511',
+ 'Text::Wrap' => '2023.0511',
+ 'Time::HiRes' => '1.9776',
+ 'Time::Local' => '1.35',
+ 'UNIVERSAL' => '1.16',
+ 'feature' => '1.83',
+ 'ok' => '1.302195',
+ 'perlfaq' => '5.20230701',
+ 'threads' => '2.37',
+ 'warnings' => '1.66',
+ 'warnings::register' => '1.06',
+ },
+ removed => {
+ }
+ },
+ 5.039002 => {
+ delta_from => 5.039001,
+ changed => {
+ 'App::Prove' => '3.47',
+ 'App::Prove::State' => '3.47',
+ 'App::Prove::State::Result'=> '3.47',
+ 'App::Prove::State::Result::Test'=> '3.47',
+ 'B::Op_private' => '5.039002',
+ 'Compress::Raw::Bzip2' => '2.206',
+ 'Compress::Raw::Zlib' => '2.206',
+ 'Compress::Zlib' => '2.206',
+ 'Config' => '5.039002',
+ 'Cwd' => '3.90',
+ 'Devel::Peek' => '1.34',
+ 'ExtUtils::Miniperl' => '1.14',
+ 'File::Spec' => '3.90',
+ 'File::Spec::AmigaOS' => '3.90',
+ 'File::Spec::Cygwin' => '3.90',
+ 'File::Spec::Epoc' => '3.90',
+ 'File::Spec::Functions' => '3.90',
+ 'File::Spec::Mac' => '3.90',
+ 'File::Spec::OS2' => '3.90',
+ 'File::Spec::Unix' => '3.90',
+ 'File::Spec::VMS' => '3.90',
+ 'File::Spec::Win32' => '3.90',
+ 'HTTP::Tiny' => '0.088',
+ 'IO::Compress::Adapter::Bzip2'=> '2.206',
+ 'IO::Compress::Adapter::Deflate'=> '2.206',
+ 'IO::Compress::Adapter::Identity'=> '2.206',
+ 'IO::Compress::Base' => '2.206',
+ 'IO::Compress::Base::Common'=> '2.206',
+ 'IO::Compress::Bzip2' => '2.206',
+ 'IO::Compress::Deflate' => '2.206',
+ 'IO::Compress::Gzip' => '2.206',
+ 'IO::Compress::Gzip::Constants'=> '2.206',
+ 'IO::Compress::RawDeflate'=> '2.206',
+ 'IO::Compress::Zip' => '2.206',
+ 'IO::Compress::Zip::Constants'=> '2.206',
+ 'IO::Compress::Zlib::Constants'=> '2.206',
+ 'IO::Compress::Zlib::Extra'=> '2.206',
+ 'IO::Socket::IP' => '0.42',
+ 'IO::Uncompress::Adapter::Bunzip2'=> '2.206',
+ 'IO::Uncompress::Adapter::Identity'=> '2.206',
+ 'IO::Uncompress::Adapter::Inflate'=> '2.206',
+ 'IO::Uncompress::AnyInflate'=> '2.206',
+ 'IO::Uncompress::AnyUncompress'=> '2.206',
+ 'IO::Uncompress::Base' => '2.206',
+ 'IO::Uncompress::Bunzip2'=> '2.206',
+ 'IO::Uncompress::Gunzip'=> '2.206',
+ 'IO::Uncompress::Inflate'=> '2.206',
+ 'IO::Uncompress::RawInflate'=> '2.206',
+ 'IO::Uncompress::Unzip' => '2.206',
+ 'Module::CoreList' => '5.20230820',
+ 'Module::CoreList::Utils'=> '5.20230820',
+ 'NDBM_File' => '1.17',
+ 'Opcode' => '1.65',
+ 'POSIX' => '2.15',
+ 'PerlIO::scalar' => '0.32',
+ 'PerlIO::via' => '0.19',
+ 'Pod::Html' => '1.35',
+ 'Pod::Html::Util' => '1.35',
+ 'Pod::Simple' => '3.45',
+ 'Pod::Simple::BlackBox' => '3.45',
+ 'Pod::Simple::Checker' => '3.45',
+ 'Pod::Simple::Debug' => '3.45',
+ 'Pod::Simple::DumpAsText'=> '3.45',
+ 'Pod::Simple::DumpAsXML'=> '3.45',
+ 'Pod::Simple::HTML' => '3.45',
+ 'Pod::Simple::HTMLBatch'=> '3.45',
+ 'Pod::Simple::HTMLLegacy'=> '5.02',
+ 'Pod::Simple::LinkSection'=> '3.45',
+ 'Pod::Simple::Methody' => '3.45',
+ 'Pod::Simple::Progress' => '3.45',
+ 'Pod::Simple::PullParser'=> '3.45',
+ 'Pod::Simple::PullParserEndToken'=> '3.45',
+ 'Pod::Simple::PullParserStartToken'=> '3.45',
+ 'Pod::Simple::PullParserTextToken'=> '3.45',
+ 'Pod::Simple::PullParserToken'=> '3.45',
+ 'Pod::Simple::RTF' => '3.45',
+ 'Pod::Simple::Search' => '3.45',
+ 'Pod::Simple::SimpleTree'=> '3.45',
+ 'Pod::Simple::Text' => '3.45',
+ 'Pod::Simple::TextContent'=> '3.45',
+ 'Pod::Simple::TiedOutFH'=> '3.45',
+ 'Pod::Simple::Transcode'=> '3.45',
+ 'Pod::Simple::TranscodeDumb'=> '3.45',
+ 'Pod::Simple::TranscodeSmart'=> '3.45',
+ 'Pod::Simple::XHTML' => '3.45',
+ 'Pod::Simple::XMLOutStream'=> '3.45',
+ 'Safe' => '2.45',
+ 'TAP::Base' => '3.47',
+ 'TAP::Formatter::Base' => '3.47',
+ 'TAP::Formatter::Color' => '3.47',
+ 'TAP::Formatter::Console'=> '3.47',
+ 'TAP::Formatter::Console::ParallelSession'=> '3.47',
+ 'TAP::Formatter::Console::Session'=> '3.47',
+ 'TAP::Formatter::File' => '3.47',
+ 'TAP::Formatter::File::Session'=> '3.47',
+ 'TAP::Formatter::Session'=> '3.47',
+ 'TAP::Harness' => '3.47',
+ 'TAP::Harness::Env' => '3.47',
+ 'TAP::Object' => '3.47',
+ 'TAP::Parser' => '3.47',
+ 'TAP::Parser::Aggregator'=> '3.47',
+ 'TAP::Parser::Grammar' => '3.47',
+ 'TAP::Parser::Iterator' => '3.47',
+ 'TAP::Parser::Iterator::Array'=> '3.47',
+ 'TAP::Parser::Iterator::Process'=> '3.47',
+ 'TAP::Parser::Iterator::Stream'=> '3.47',
+ 'TAP::Parser::IteratorFactory'=> '3.47',
+ 'TAP::Parser::Multiplexer'=> '3.47',
+ 'TAP::Parser::Result' => '3.47',
+ 'TAP::Parser::Result::Bailout'=> '3.47',
+ 'TAP::Parser::Result::Comment'=> '3.47',
+ 'TAP::Parser::Result::Plan'=> '3.47',
+ 'TAP::Parser::Result::Pragma'=> '3.47',
+ 'TAP::Parser::Result::Test'=> '3.47',
+ 'TAP::Parser::Result::Unknown'=> '3.47',
+ 'TAP::Parser::Result::Version'=> '3.47',
+ 'TAP::Parser::Result::YAML'=> '3.47',
+ 'TAP::Parser::ResultFactory'=> '3.47',
+ 'TAP::Parser::Scheduler'=> '3.47',
+ 'TAP::Parser::Scheduler::Job'=> '3.47',
+ 'TAP::Parser::Scheduler::Spinner'=> '3.47',
+ 'TAP::Parser::Source' => '3.47',
+ 'TAP::Parser::SourceHandler'=> '3.47',
+ 'TAP::Parser::SourceHandler::Executable'=> '3.47',
+ 'TAP::Parser::SourceHandler::File'=> '3.47',
+ 'TAP::Parser::SourceHandler::Handle'=> '3.47',
+ 'TAP::Parser::SourceHandler::Perl'=> '3.47',
+ 'TAP::Parser::SourceHandler::RawTAP'=> '3.47',
+ 'TAP::Parser::YAMLish::Reader'=> '3.47',
+ 'TAP::Parser::YAMLish::Writer'=> '3.47',
+ 'Test::Harness' => '3.47',
+ 'XS::APItest' => '1.33',
+ 'builtin' => '0.009',
+ 'feature' => '1.84',
+ 'perlfaq' => '5.20230812',
+ 'strict' => '1.13',
+ 'threads' => '2.38',
+ 'warnings' => '1.67',
+ },
+ removed => {
+ }
+ },
+ 5.039003 => {
+ delta_from => 5.039002,
+ changed => {
+ 'B' => '1.89',
+ 'B::Op_private' => '5.039003',
+ 'Config' => '5.039003',
+ 'DB_File' => '1.859',
+ 'Data::Dumper' => '2.189',
+ 'Devel::PPPort' => '3.72',
+ 'ExtUtils::CBuilder' => '0.280240',
+ 'ExtUtils::CBuilder::Base'=> '0.280240',
+ 'ExtUtils::CBuilder::Platform::Unix'=> '0.280240',
+ 'ExtUtils::CBuilder::Platform::VMS'=> '0.280240',
+ 'ExtUtils::CBuilder::Platform::Windows'=> '0.280240',
+ 'ExtUtils::CBuilder::Platform::Windows::BCC'=> '0.280240',
+ 'ExtUtils::CBuilder::Platform::Windows::GCC'=> '0.280240',
+ 'ExtUtils::CBuilder::Platform::Windows::MSVC'=> '0.280240',
+ 'ExtUtils::CBuilder::Platform::aix'=> '0.280240',
+ 'ExtUtils::CBuilder::Platform::android'=> '0.280240',
+ 'ExtUtils::CBuilder::Platform::cygwin'=> '0.280240',
+ 'ExtUtils::CBuilder::Platform::darwin'=> '0.280240',
+ 'ExtUtils::CBuilder::Platform::dec_osf'=> '0.280240',
+ 'ExtUtils::CBuilder::Platform::os2'=> '0.280240',
+ 'File::Compare' => '1.1008',
+ 'File::Spec::AmigaOS' => '3.91',
+ 'File::Spec::Cygwin' => '3.91',
+ 'File::Spec::Epoc' => '3.91',
+ 'File::Spec::Functions' => '3.91',
+ 'File::Spec::Mac' => '3.91',
+ 'File::Spec::OS2' => '3.91',
+ 'File::Spec::Unix' => '3.91',
+ 'File::Spec::VMS' => '3.91',
+ 'File::Spec::Win32' => '3.91',
+ 'FindBin' => '1.54',
+ 'Getopt::Std' => '1.14',
+ 'IO' => '1.53',
+ 'IO::Dir' => '1.53',
+ 'IO::File' => '1.53',
+ 'IO::Handle' => '1.53',
+ 'IO::Pipe' => '1.53',
+ 'IO::Poll' => '1.53',
+ 'IO::Seekable' => '1.53',
+ 'IO::Select' => '1.53',
+ 'IO::Socket' => '1.53',
+ 'IO::Socket::INET' => '1.53',
+ 'IO::Socket::UNIX' => '1.53',
+ 'Module::CoreList' => '5.20230920',
+ 'Module::CoreList::Utils'=> '5.20230920',
+ 'builtin' => '0.010',
+ 'fields' => '2.25',
+ 'threads' => '2.39',
+ 'threads::shared' => '1.69',
+ },
+ removed => {
+ }
+ },
+ 5.039004 => {
+ delta_from => 5.039003,
+ changed => {
+ 'App::Prove' => '3.48',
+ 'App::Prove::State' => '3.48',
+ 'App::Prove::State::Result'=> '3.48',
+ 'App::Prove::State::Result::Test'=> '3.48',
+ 'B::Op_private' => '5.039004',
+ 'Config' => '5.039004',
+ 'File::Find' => '1.44',
+ 'File::stat' => '1.14',
+ 'Math::BigFloat' => '1.999842',
+ 'Math::BigInt' => '1.999842',
+ 'Math::BigInt::Calc' => '1.999842',
+ 'Math::BigInt::FastCalc'=> '0.5015',
+ 'Math::BigInt::Lib' => '1.999842',
+ 'Module::CoreList' => '5.20231025',
+ 'Module::CoreList::Utils'=> '5.20231025',
+ 'Net::hostent' => '1.04',
+ 'Net::netent' => '1.02',
+ 'Net::protoent' => '1.03',
+ 'Net::servent' => '1.04',
+ 'POSIX' => '2.16',
+ 'TAP::Base' => '3.48',
+ 'TAP::Formatter::Base' => '3.48',
+ 'TAP::Formatter::Color' => '3.48',
+ 'TAP::Formatter::Console'=> '3.48',
+ 'TAP::Formatter::Console::ParallelSession'=> '3.48',
+ 'TAP::Formatter::Console::Session'=> '3.48',
+ 'TAP::Formatter::File' => '3.48',
+ 'TAP::Formatter::File::Session'=> '3.48',
+ 'TAP::Formatter::Session'=> '3.48',
+ 'TAP::Harness' => '3.48',
+ 'TAP::Harness::Env' => '3.48',
+ 'TAP::Object' => '3.48',
+ 'TAP::Parser' => '3.48',
+ 'TAP::Parser::Aggregator'=> '3.48',
+ 'TAP::Parser::Grammar' => '3.48',
+ 'TAP::Parser::Iterator' => '3.48',
+ 'TAP::Parser::Iterator::Array'=> '3.48',
+ 'TAP::Parser::Iterator::Process'=> '3.48',
+ 'TAP::Parser::Iterator::Stream'=> '3.48',
+ 'TAP::Parser::IteratorFactory'=> '3.48',
+ 'TAP::Parser::Multiplexer'=> '3.48',
+ 'TAP::Parser::Result' => '3.48',
+ 'TAP::Parser::Result::Bailout'=> '3.48',
+ 'TAP::Parser::Result::Comment'=> '3.48',
+ 'TAP::Parser::Result::Plan'=> '3.48',
+ 'TAP::Parser::Result::Pragma'=> '3.48',
+ 'TAP::Parser::Result::Test'=> '3.48',
+ 'TAP::Parser::Result::Unknown'=> '3.48',
+ 'TAP::Parser::Result::Version'=> '3.48',
+ 'TAP::Parser::Result::YAML'=> '3.48',
+ 'TAP::Parser::ResultFactory'=> '3.48',
+ 'TAP::Parser::Scheduler'=> '3.48',
+ 'TAP::Parser::Scheduler::Job'=> '3.48',
+ 'TAP::Parser::Scheduler::Spinner'=> '3.48',
+ 'TAP::Parser::Source' => '3.48',
+ 'TAP::Parser::SourceHandler'=> '3.48',
+ 'TAP::Parser::SourceHandler::Executable'=> '3.48',
+ 'TAP::Parser::SourceHandler::File'=> '3.48',
+ 'TAP::Parser::SourceHandler::Handle'=> '3.48',
+ 'TAP::Parser::SourceHandler::Perl'=> '3.48',
+ 'TAP::Parser::SourceHandler::RawTAP'=> '3.48',
+ 'TAP::Parser::YAMLish::Reader'=> '3.48',
+ 'TAP::Parser::YAMLish::Writer'=> '3.48',
+ 'Term::Table' => '0.017',
+ 'Term::Table::Cell' => '0.017',
+ 'Term::Table::CellStack'=> '0.017',
+ 'Term::Table::HashBase' => '0.017',
+ 'Term::Table::LineBreak'=> '0.017',
+ 'Term::Table::Spacer' => '0.017',
+ 'Term::Table::Util' => '0.017',
+ 'Test2::AsyncSubtest' => '0.000156',
+ 'Test2::AsyncSubtest::Event::Attach'=> '0.000156',
+ 'Test2::AsyncSubtest::Event::Detach'=> '0.000156',
+ 'Test2::AsyncSubtest::Formatter'=> '0.000156',
+ 'Test2::AsyncSubtest::Hub'=> '0.000156',
+ 'Test2::Bundle' => '0.000156',
+ 'Test2::Bundle::Extended'=> '0.000156',
+ 'Test2::Bundle::More' => '0.000156',
+ 'Test2::Bundle::Simple' => '0.000156',
+ 'Test2::Compare' => '0.000156',
+ 'Test2::Compare::Array' => '0.000156',
+ 'Test2::Compare::Bag' => '0.000156',
+ 'Test2::Compare::Base' => '0.000156',
+ 'Test2::Compare::Bool' => '0.000156',
+ 'Test2::Compare::Custom'=> '0.000156',
+ 'Test2::Compare::DeepRef'=> '0.000156',
+ 'Test2::Compare::Delta' => '0.000156',
+ 'Test2::Compare::Event' => '0.000156',
+ 'Test2::Compare::EventMeta'=> '0.000156',
+ 'Test2::Compare::Float' => '0.000156',
+ 'Test2::Compare::Hash' => '0.000156',
+ 'Test2::Compare::Isa' => '0.000156',
+ 'Test2::Compare::Meta' => '0.000156',
+ 'Test2::Compare::Negatable'=> '0.000156',
+ 'Test2::Compare::Number'=> '0.000156',
+ 'Test2::Compare::Object'=> '0.000156',
+ 'Test2::Compare::OrderedSubset'=> '0.000156',
+ 'Test2::Compare::Pattern'=> '0.000156',
+ 'Test2::Compare::Ref' => '0.000156',
+ 'Test2::Compare::Regex' => '0.000156',
+ 'Test2::Compare::Scalar'=> '0.000156',
+ 'Test2::Compare::Set' => '0.000156',
+ 'Test2::Compare::String'=> '0.000156',
+ 'Test2::Compare::Undef' => '0.000156',
+ 'Test2::Compare::Wildcard'=> '0.000156',
+ 'Test2::Manual' => '0.000156',
+ 'Test2::Manual::Anatomy'=> '0.000156',
+ 'Test2::Manual::Anatomy::API'=> '0.000156',
+ 'Test2::Manual::Anatomy::Context'=> '0.000156',
+ 'Test2::Manual::Anatomy::EndToEnd'=> '0.000156',
+ 'Test2::Manual::Anatomy::Event'=> '0.000156',
+ 'Test2::Manual::Anatomy::Hubs'=> '0.000156',
+ 'Test2::Manual::Anatomy::IPC'=> '0.000156',
+ 'Test2::Manual::Anatomy::Utilities'=> '0.000156',
+ 'Test2::Manual::Concurrency'=> '0.000156',
+ 'Test2::Manual::Contributing'=> '0.000156',
+ 'Test2::Manual::Testing'=> '0.000156',
+ 'Test2::Manual::Testing::Introduction'=> '0.000156',
+ 'Test2::Manual::Testing::Migrating'=> '0.000156',
+ 'Test2::Manual::Testing::Planning'=> '0.000156',
+ 'Test2::Manual::Testing::Todo'=> '0.000156',
+ 'Test2::Manual::Tooling'=> '0.000156',
+ 'Test2::Manual::Tooling::FirstTool'=> '0.000156',
+ 'Test2::Manual::Tooling::Formatter'=> '0.000156',
+ 'Test2::Manual::Tooling::Nesting'=> '0.000156',
+ 'Test2::Manual::Tooling::Plugin::TestExit'=> '0.000156',
+ 'Test2::Manual::Tooling::Plugin::TestingDone'=> '0.000156',
+ 'Test2::Manual::Tooling::Plugin::ToolCompletes'=> '0.000156',
+ 'Test2::Manual::Tooling::Plugin::ToolStarts'=> '0.000156',
+ 'Test2::Manual::Tooling::Subtest'=> '0.000156',
+ 'Test2::Manual::Tooling::TestBuilder'=> '0.000156',
+ 'Test2::Manual::Tooling::Testing'=> '0.000156',
+ 'Test2::Mock' => '0.000156',
+ 'Test2::Plugin' => '0.000156',
+ 'Test2::Plugin::BailOnFail'=> '0.000156',
+ 'Test2::Plugin::DieOnFail'=> '0.000156',
+ 'Test2::Plugin::ExitSummary'=> '0.000156',
+ 'Test2::Plugin::SRand' => '0.000156',
+ 'Test2::Plugin::Times' => '0.000156',
+ 'Test2::Plugin::UTF8' => '0.000156',
+ 'Test2::Require' => '0.000156',
+ 'Test2::Require::AuthorTesting'=> '0.000156',
+ 'Test2::Require::EnvVar'=> '0.000156',
+ 'Test2::Require::Fork' => '0.000156',
+ 'Test2::Require::Module'=> '0.000156',
+ 'Test2::Require::Perl' => '0.000156',
+ 'Test2::Require::RealFork'=> '0.000156',
+ 'Test2::Require::Threads'=> '0.000156',
+ 'Test2::Suite' => '0.000156',
+ 'Test2::Todo' => '0.000156',
+ 'Test2::Tools' => '0.000156',
+ 'Test2::Tools::AsyncSubtest'=> '0.000156',
+ 'Test2::Tools::Basic' => '0.000156',
+ 'Test2::Tools::Class' => '0.000156',
+ 'Test2::Tools::ClassicCompare'=> '0.000156',
+ 'Test2::Tools::Compare' => '0.000156',
+ 'Test2::Tools::Defer' => '0.000156',
+ 'Test2::Tools::Encoding'=> '0.000156',
+ 'Test2::Tools::Event' => '0.000156',
+ 'Test2::Tools::Exception'=> '0.000156',
+ 'Test2::Tools::Exports' => '0.000156',
+ 'Test2::Tools::GenTemp' => '0.000156',
+ 'Test2::Tools::Grab' => '0.000156',
+ 'Test2::Tools::Mock' => '0.000156',
+ 'Test2::Tools::Ref' => '0.000156',
+ 'Test2::Tools::Refcount'=> '0.000156',
+ 'Test2::Tools::Spec' => '0.000156',
+ 'Test2::Tools::Subtest' => '0.000156',
+ 'Test2::Tools::Target' => '0.000156',
+ 'Test2::Tools::Tester' => '0.000156',
+ 'Test2::Tools::Warnings'=> '0.000156',
+ 'Test2::Util::Grabber' => '0.000156',
+ 'Test2::Util::Guard' => '0.000156',
+ 'Test2::Util::Importer' => '0.000156',
+ 'Test2::Util::Ref' => '0.000156',
+ 'Test2::Util::Stash' => '0.000156',
+ 'Test2::Util::Sub' => '0.000156',
+ 'Test2::Util::Table' => '0.000156',
+ 'Test2::Util::Table::Cell'=> '0.000156',
+ 'Test2::Util::Table::LineBreak'=> '0.000156',
+ 'Test2::Util::Term' => '0.000156',
+ 'Test2::Util::Times' => '0.000156',
+ 'Test2::V0' => '0.000156',
+ 'Test2::Workflow' => '0.000156',
+ 'Test2::Workflow::BlockBase'=> '0.000156',
+ 'Test2::Workflow::Build'=> '0.000156',
+ 'Test2::Workflow::Runner'=> '0.000156',
+ 'Test2::Workflow::Task' => '0.000156',
+ 'Test2::Workflow::Task::Action'=> '0.000156',
+ 'Test2::Workflow::Task::Group'=> '0.000156',
+ 'Test::Harness' => '3.48',
+ 'Time::gmtime' => '1.05',
+ 'Time::localtime' => '1.04',
+ 'Time::tm' => '1.01',
+ 'User::grent' => '1.05',
+ 'User::pwent' => '1.03',
+ 'XS::APItest' => '1.34',
+ 'XS::Typemap' => '0.20',
+ 'builtin' => '0.011',
+ 'feature' => '1.85',
+ 'version' => '0.9930',
+ 'version::regex' => '0.9930',
+ },
+ removed => {
+ }
+ },
+ 5.039005 => {
+ delta_from => 5.039004,
+ changed => {
+ 'B::Op_private' => '5.039005',
+ 'Benchmark' => '1.25',
+ 'Config' => '5.039005',
+ 'Encode' => '3.20',
+ 'Getopt::Long' => '2.57',
+ 'Getopt::Long::Parser' => '2.57',
+ 'IO' => '1.54',
+ 'IO::Dir' => '1.54',
+ 'IO::File' => '1.54',
+ 'IO::Handle' => '1.54',
+ 'IO::Pipe' => '1.54',
+ 'IO::Poll' => '1.54',
+ 'IO::Seekable' => '1.54',
+ 'IO::Select' => '1.54',
+ 'IO::Socket' => '1.54',
+ 'IO::Socket::INET' => '1.54',
+ 'IO::Socket::UNIX' => '1.54',
+ 'Math::BigFloat' => '2.001000',
+ 'Math::BigInt' => '2.001000',
+ 'Math::BigInt::Calc' => '2.001000',
+ 'Math::BigInt::Lib' => '2.001000',
+ 'Math::BigRat' => '2.001000',
+ 'Module::CoreList' => '5.20231120',
+ 'Module::CoreList::Utils'=> '5.20231120',
+ 'POSIX' => '2.17',
+ 'Term::Table' => '0.018',
+ 'Term::Table::Cell' => '0.018',
+ 'Term::Table::CellStack'=> '0.018',
+ 'Term::Table::HashBase' => '0.018',
+ 'Term::Table::LineBreak'=> '0.018',
+ 'Term::Table::Spacer' => '0.018',
+ 'Term::Table::Util' => '0.018',
+ 'Test2::AsyncSubtest' => '0.000159',
+ 'Test2::AsyncSubtest::Event::Attach'=> '0.000159',
+ 'Test2::AsyncSubtest::Event::Detach'=> '0.000159',
+ 'Test2::AsyncSubtest::Formatter'=> '0.000159',
+ 'Test2::AsyncSubtest::Hub'=> '0.000159',
+ 'Test2::Bundle' => '0.000159',
+ 'Test2::Bundle::Extended'=> '0.000159',
+ 'Test2::Bundle::More' => '0.000159',
+ 'Test2::Bundle::Simple' => '0.000159',
+ 'Test2::Compare' => '0.000159',
+ 'Test2::Compare::Array' => '0.000159',
+ 'Test2::Compare::Bag' => '0.000159',
+ 'Test2::Compare::Base' => '0.000159',
+ 'Test2::Compare::Bool' => '0.000159',
+ 'Test2::Compare::Custom'=> '0.000159',
+ 'Test2::Compare::DeepRef'=> '0.000159',
+ 'Test2::Compare::Delta' => '0.000159',
+ 'Test2::Compare::Event' => '0.000159',
+ 'Test2::Compare::EventMeta'=> '0.000159',
+ 'Test2::Compare::Float' => '0.000159',
+ 'Test2::Compare::Hash' => '0.000159',
+ 'Test2::Compare::Isa' => '0.000159',
+ 'Test2::Compare::Meta' => '0.000159',
+ 'Test2::Compare::Negatable'=> '0.000159',
+ 'Test2::Compare::Number'=> '0.000159',
+ 'Test2::Compare::Object'=> '0.000159',
+ 'Test2::Compare::OrderedSubset'=> '0.000159',
+ 'Test2::Compare::Pattern'=> '0.000159',
+ 'Test2::Compare::Ref' => '0.000159',
+ 'Test2::Compare::Regex' => '0.000159',
+ 'Test2::Compare::Scalar'=> '0.000159',
+ 'Test2::Compare::Set' => '0.000159',
+ 'Test2::Compare::String'=> '0.000159',
+ 'Test2::Compare::Undef' => '0.000159',
+ 'Test2::Compare::Wildcard'=> '0.000159',
+ 'Test2::Manual' => '0.000159',
+ 'Test2::Manual::Anatomy'=> '0.000159',
+ 'Test2::Manual::Anatomy::API'=> '0.000159',
+ 'Test2::Manual::Anatomy::Context'=> '0.000159',
+ 'Test2::Manual::Anatomy::EndToEnd'=> '0.000159',
+ 'Test2::Manual::Anatomy::Event'=> '0.000159',
+ 'Test2::Manual::Anatomy::Hubs'=> '0.000159',
+ 'Test2::Manual::Anatomy::IPC'=> '0.000159',
+ 'Test2::Manual::Anatomy::Utilities'=> '0.000159',
+ 'Test2::Manual::Concurrency'=> '0.000159',
+ 'Test2::Manual::Contributing'=> '0.000159',
+ 'Test2::Manual::Testing'=> '0.000159',
+ 'Test2::Manual::Testing::Introduction'=> '0.000159',
+ 'Test2::Manual::Testing::Migrating'=> '0.000159',
+ 'Test2::Manual::Testing::Planning'=> '0.000159',
+ 'Test2::Manual::Testing::Todo'=> '0.000159',
+ 'Test2::Manual::Tooling'=> '0.000159',
+ 'Test2::Manual::Tooling::FirstTool'=> '0.000159',
+ 'Test2::Manual::Tooling::Formatter'=> '0.000159',
+ 'Test2::Manual::Tooling::Nesting'=> '0.000159',
+ 'Test2::Manual::Tooling::Plugin::TestExit'=> '0.000159',
+ 'Test2::Manual::Tooling::Plugin::TestingDone'=> '0.000159',
+ 'Test2::Manual::Tooling::Plugin::ToolCompletes'=> '0.000159',
+ 'Test2::Manual::Tooling::Plugin::ToolStarts'=> '0.000159',
+ 'Test2::Manual::Tooling::Subtest'=> '0.000159',
+ 'Test2::Manual::Tooling::TestBuilder'=> '0.000159',
+ 'Test2::Manual::Tooling::Testing'=> '0.000159',
+ 'Test2::Mock' => '0.000159',
+ 'Test2::Plugin' => '0.000159',
+ 'Test2::Plugin::BailOnFail'=> '0.000159',
+ 'Test2::Plugin::DieOnFail'=> '0.000159',
+ 'Test2::Plugin::ExitSummary'=> '0.000159',
+ 'Test2::Plugin::SRand' => '0.000159',
+ 'Test2::Plugin::Times' => '0.000159',
+ 'Test2::Plugin::UTF8' => '0.000159',
+ 'Test2::Require' => '0.000159',
+ 'Test2::Require::AuthorTesting'=> '0.000159',
+ 'Test2::Require::EnvVar'=> '0.000159',
+ 'Test2::Require::Fork' => '0.000159',
+ 'Test2::Require::Module'=> '0.000159',
+ 'Test2::Require::Perl' => '0.000159',
+ 'Test2::Require::RealFork'=> '0.000159',
+ 'Test2::Require::Threads'=> '0.000159',
+ 'Test2::Suite' => '0.000159',
+ 'Test2::Todo' => '0.000159',
+ 'Test2::Tools' => '0.000159',
+ 'Test2::Tools::AsyncSubtest'=> '0.000159',
+ 'Test2::Tools::Basic' => '0.000159',
+ 'Test2::Tools::Class' => '0.000159',
+ 'Test2::Tools::ClassicCompare'=> '0.000159',
+ 'Test2::Tools::Compare' => '0.000159',
+ 'Test2::Tools::Defer' => '0.000159',
+ 'Test2::Tools::Encoding'=> '0.000159',
+ 'Test2::Tools::Event' => '0.000159',
+ 'Test2::Tools::Exception'=> '0.000159',
+ 'Test2::Tools::Exports' => '0.000159',
+ 'Test2::Tools::GenTemp' => '0.000159',
+ 'Test2::Tools::Grab' => '0.000159',
+ 'Test2::Tools::Mock' => '0.000159',
+ 'Test2::Tools::Ref' => '0.000159',
+ 'Test2::Tools::Refcount'=> '0.000159',
+ 'Test2::Tools::Spec' => '0.000159',
+ 'Test2::Tools::Subtest' => '0.000159',
+ 'Test2::Tools::Target' => '0.000159',
+ 'Test2::Tools::Tester' => '0.000159',
+ 'Test2::Tools::Warnings'=> '0.000159',
+ 'Test2::Util::Grabber' => '0.000159',
+ 'Test2::Util::Guard' => '0.000159',
+ 'Test2::Util::Importer' => '0.000159',
+ 'Test2::Util::Ref' => '0.000159',
+ 'Test2::Util::Stash' => '0.000159',
+ 'Test2::Util::Sub' => '0.000159',
+ 'Test2::Util::Table' => '0.000159',
+ 'Test2::Util::Table::Cell'=> '0.000159',
+ 'Test2::Util::Table::LineBreak'=> '0.000159',
+ 'Test2::Util::Term' => '0.000159',
+ 'Test2::Util::Times' => '0.000159',
+ 'Test2::V0' => '0.000159',
+ 'Test2::Workflow' => '0.000159',
+ 'Test2::Workflow::BlockBase'=> '0.000159',
+ 'Test2::Workflow::Build'=> '0.000159',
+ 'Test2::Workflow::Runner'=> '0.000159',
+ 'Test2::Workflow::Task' => '0.000159',
+ 'Test2::Workflow::Task::Action'=> '0.000159',
+ 'Test2::Workflow::Task::Group'=> '0.000159',
+ 'builtin' => '0.012',
+ 'locale' => '1.11',
+ },
+ removed => {
+ }
+ },
+ 5.034002 => {
+ delta_from => 5.034001,
+ changed => {
+ 'B::Op_private' => '5.034002',
+ 'Config' => '5.034002',
+ 'Module::CoreList' => '5.20231125',
+ 'Module::CoreList::Utils'=> '5.20231125',
+ },
+ removed => {
+ }
+ },
+ 5.036002 => {
+ delta_from => 5.036001,
+ changed => {
+ 'B::Op_private' => '5.036002',
+ 'Config' => '5.036002',
+ 'Module::CoreList' => '5.20231125',
+ 'Module::CoreList::Utils'=> '5.20231125',
+ },
+ removed => {
+ }
+ },
+ 5.038001 => {
+ delta_from => 5.038000,
+ changed => {
+ 'B::Op_private' => '5.038001',
+ 'Config' => '5.038001',
+ 'Module::CoreList' => '5.20231125',
+ 'Module::CoreList::Utils'=> '5.20231125',
+ },
+ removed => {
+ }
+ },
+ 5.034003 => {
+ delta_from => 5.034002,
+ changed => {
+ 'B::Op_private' => '5.034003',
+ 'Config' => '5.034003',
+ 'Module::CoreList' => '5.20231129',
+ 'Module::CoreList::Utils'=> '5.20231129',
+ },
+ removed => {
+ }
+ },
+ 5.036003 => {
+ delta_from => 5.036002,
+ changed => {
+ 'B::Op_private' => '5.036003',
+ 'Config' => '5.036003',
+ 'Module::CoreList' => '5.20231129',
+ 'Module::CoreList::Utils'=> '5.20231129',
+ },
+ removed => {
+ }
+ },
+ 5.038002 => {
+ delta_from => 5.038001,
+ changed => {
+ 'B::Op_private' => '5.038002',
+ 'Config' => '5.038002',
+ 'Module::CoreList' => '5.20231129',
+ 'Module::CoreList::Utils'=> '5.20231129',
+ },
+ removed => {
+ }
+ },
);
sub is_core
@@ -19727,6 +22338,279 @@ sub is_core
removed => {
}
},
+ 5.035000 => {
+ delta_from => 5.034,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035001 => {
+ delta_from => 5.035,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035002 => {
+ delta_from => 5.035001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035003 => {
+ delta_from => 5.035002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035004 => {
+ delta_from => 5.035003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035005 => {
+ delta_from => 5.035004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035006 => {
+ delta_from => 5.035005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035007 => {
+ delta_from => 5.035006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035008 => {
+ delta_from => 5.035007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035009 => {
+ delta_from => 5.035008,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.034001 => {
+ delta_from => 5.034000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035010 => {
+ delta_from => 5.035009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035011 => {
+ delta_from => 5.035010,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.036000 => {
+ delta_from => 5.035011,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037000 => {
+ delta_from => 5.036000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037001 => {
+ delta_from => 5.037000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037002 => {
+ delta_from => 5.037001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037003 => {
+ delta_from => 5.037002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037004 => {
+ delta_from => 5.037003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037005 => {
+ delta_from => 5.037004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037006 => {
+ delta_from => 5.037005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037007 => {
+ delta_from => 5.037006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037008 => {
+ delta_from => 5.037007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037009 => {
+ delta_from => 5.037008,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037010 => {
+ delta_from => 5.037009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037011 => {
+ delta_from => 5.037010,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.036001 => {
+ delta_from => 5.036,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.038000 => {
+ delta_from => 5.037011,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.039001 => {
+ delta_from => 5.038,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.039002 => {
+ delta_from => 5.039001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.039003 => {
+ delta_from => 5.039002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.039004 => {
+ delta_from => 5.039003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.039005 => {
+ delta_from => 5.039004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.034002 => {
+ delta_from => 5.034001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.036002 => {
+ delta_from => 5.036001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.038001 => {
+ delta_from => 5.038,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.034003 => {
+ delta_from => 5.034002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.036003 => {
+ delta_from => 5.036002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.038002 => {
+ delta_from => 5.038001,
+ changed => {
+ },
+ removed => {
+ }
+ },
);
%deprecated = _undelta(\%deprecated);
@@ -19773,6 +22657,7 @@ sub is_core
'CPAN::Meta::Merge' => 'cpan',
'CPAN::Meta::Prereqs' => 'cpan',
'CPAN::Meta::Requirements'=> 'cpan',
+ 'CPAN::Meta::Requirements::Range'=> 'cpan',
'CPAN::Meta::Spec' => 'cpan',
'CPAN::Meta::Validator' => 'cpan',
'CPAN::Meta::YAML' => 'cpan',
@@ -19869,6 +22754,7 @@ sub is_core
'File::Temp' => 'cpan',
'Filter::Util::Call' => 'cpan',
'Getopt::Long' => 'cpan',
+ 'Getopt::Long::Parser' => 'cpan',
'HTTP::Tiny' => 'cpan',
'IO::Compress::Adapter::Bzip2'=> 'cpan',
'IO::Compress::Adapter::Deflate'=> 'cpan',
@@ -19917,13 +22803,10 @@ sub is_core
'Math::BigInt::Lib' => 'cpan',
'Math::BigInt::Trace' => 'cpan',
'Math::BigRat' => 'cpan',
- 'Math::Complex' => 'cpan',
- 'Math::Trig' => 'cpan',
+ 'Math::BigRat::Trace' => 'cpan',
'Memoize' => 'cpan',
'Memoize::AnyDBM_File' => 'cpan',
'Memoize::Expire' => 'cpan',
- 'Memoize::ExpireFile' => 'cpan',
- 'Memoize::ExpireTest' => 'cpan',
'Memoize::NDBM_File' => 'cpan',
'Memoize::SDBM_File' => 'cpan',
'Memoize::Storable' => 'cpan',
@@ -20051,6 +22934,13 @@ sub is_core
'TAP::Parser::YAMLish::Writer'=> 'cpan',
'Term::ANSIColor' => 'cpan',
'Term::Cap' => 'cpan',
+ 'Term::Table' => 'cpan',
+ 'Term::Table::Cell' => 'cpan',
+ 'Term::Table::CellStack'=> 'cpan',
+ 'Term::Table::HashBase' => 'cpan',
+ 'Term::Table::LineBreak'=> 'cpan',
+ 'Term::Table::Spacer' => 'cpan',
+ 'Term::Table::Util' => 'cpan',
'Test2' => 'cpan',
'Test2::API' => 'cpan',
'Test2::API::Breakage' => 'cpan',
@@ -20062,6 +22952,41 @@ sub is_core
'Test2::API::InterceptResult::Hub'=> 'cpan',
'Test2::API::InterceptResult::Squasher'=> 'cpan',
'Test2::API::Stack' => 'cpan',
+ 'Test2::AsyncSubtest' => 'cpan',
+ 'Test2::AsyncSubtest::Event::Attach'=> 'cpan',
+ 'Test2::AsyncSubtest::Event::Detach'=> 'cpan',
+ 'Test2::AsyncSubtest::Formatter'=> 'cpan',
+ 'Test2::AsyncSubtest::Hub'=> 'cpan',
+ 'Test2::Bundle' => 'cpan',
+ 'Test2::Bundle::Extended'=> 'cpan',
+ 'Test2::Bundle::More' => 'cpan',
+ 'Test2::Bundle::Simple' => 'cpan',
+ 'Test2::Compare' => 'cpan',
+ 'Test2::Compare::Array' => 'cpan',
+ 'Test2::Compare::Bag' => 'cpan',
+ 'Test2::Compare::Base' => 'cpan',
+ 'Test2::Compare::Bool' => 'cpan',
+ 'Test2::Compare::Custom'=> 'cpan',
+ 'Test2::Compare::DeepRef'=> 'cpan',
+ 'Test2::Compare::Delta' => 'cpan',
+ 'Test2::Compare::Event' => 'cpan',
+ 'Test2::Compare::EventMeta'=> 'cpan',
+ 'Test2::Compare::Float' => 'cpan',
+ 'Test2::Compare::Hash' => 'cpan',
+ 'Test2::Compare::Isa' => 'cpan',
+ 'Test2::Compare::Meta' => 'cpan',
+ 'Test2::Compare::Negatable'=> 'cpan',
+ 'Test2::Compare::Number'=> 'cpan',
+ 'Test2::Compare::Object'=> 'cpan',
+ 'Test2::Compare::OrderedSubset'=> 'cpan',
+ 'Test2::Compare::Pattern'=> 'cpan',
+ 'Test2::Compare::Ref' => 'cpan',
+ 'Test2::Compare::Regex' => 'cpan',
+ 'Test2::Compare::Scalar'=> 'cpan',
+ 'Test2::Compare::Set' => 'cpan',
+ 'Test2::Compare::String'=> 'cpan',
+ 'Test2::Compare::Undef' => 'cpan',
+ 'Test2::Compare::Wildcard'=> 'cpan',
'Test2::Event' => 'cpan',
'Test2::Event::Bail' => 'cpan',
'Test2::Event::Diag' => 'cpan',
@@ -20101,12 +23026,97 @@ sub is_core
'Test2::IPC' => 'cpan',
'Test2::IPC::Driver' => 'cpan',
'Test2::IPC::Driver::Files'=> 'cpan',
+ 'Test2::Manual' => 'cpan',
+ 'Test2::Manual::Anatomy'=> 'cpan',
+ 'Test2::Manual::Anatomy::API'=> 'cpan',
+ 'Test2::Manual::Anatomy::Context'=> 'cpan',
+ 'Test2::Manual::Anatomy::EndToEnd'=> 'cpan',
+ 'Test2::Manual::Anatomy::Event'=> 'cpan',
+ 'Test2::Manual::Anatomy::Hubs'=> 'cpan',
+ 'Test2::Manual::Anatomy::IPC'=> 'cpan',
+ 'Test2::Manual::Anatomy::Utilities'=> 'cpan',
+ 'Test2::Manual::Concurrency'=> 'cpan',
+ 'Test2::Manual::Contributing'=> 'cpan',
+ 'Test2::Manual::Testing'=> 'cpan',
+ 'Test2::Manual::Testing::Introduction'=> 'cpan',
+ 'Test2::Manual::Testing::Migrating'=> 'cpan',
+ 'Test2::Manual::Testing::Planning'=> 'cpan',
+ 'Test2::Manual::Testing::Todo'=> 'cpan',
+ 'Test2::Manual::Tooling'=> 'cpan',
+ 'Test2::Manual::Tooling::FirstTool'=> 'cpan',
+ 'Test2::Manual::Tooling::Formatter'=> 'cpan',
+ 'Test2::Manual::Tooling::Nesting'=> 'cpan',
+ 'Test2::Manual::Tooling::Plugin::TestExit'=> 'cpan',
+ 'Test2::Manual::Tooling::Plugin::TestingDone'=> 'cpan',
+ 'Test2::Manual::Tooling::Plugin::ToolCompletes'=> 'cpan',
+ 'Test2::Manual::Tooling::Plugin::ToolStarts'=> 'cpan',
+ 'Test2::Manual::Tooling::Subtest'=> 'cpan',
+ 'Test2::Manual::Tooling::TestBuilder'=> 'cpan',
+ 'Test2::Manual::Tooling::Testing'=> 'cpan',
+ 'Test2::Mock' => 'cpan',
+ 'Test2::Plugin' => 'cpan',
+ 'Test2::Plugin::BailOnFail'=> 'cpan',
+ 'Test2::Plugin::DieOnFail'=> 'cpan',
+ 'Test2::Plugin::ExitSummary'=> 'cpan',
+ 'Test2::Plugin::SRand' => 'cpan',
+ 'Test2::Plugin::Times' => 'cpan',
+ 'Test2::Plugin::UTF8' => 'cpan',
+ 'Test2::Require' => 'cpan',
+ 'Test2::Require::AuthorTesting'=> 'cpan',
+ 'Test2::Require::EnvVar'=> 'cpan',
+ 'Test2::Require::Fork' => 'cpan',
+ 'Test2::Require::Module'=> 'cpan',
+ 'Test2::Require::Perl' => 'cpan',
+ 'Test2::Require::RealFork'=> 'cpan',
+ 'Test2::Require::Threads'=> 'cpan',
+ 'Test2::Suite' => 'cpan',
+ 'Test2::Todo' => 'cpan',
+ 'Test2::Tools' => 'cpan',
+ 'Test2::Tools::AsyncSubtest'=> 'cpan',
+ 'Test2::Tools::Basic' => 'cpan',
+ 'Test2::Tools::Class' => 'cpan',
+ 'Test2::Tools::ClassicCompare'=> 'cpan',
+ 'Test2::Tools::Compare' => 'cpan',
+ 'Test2::Tools::Defer' => 'cpan',
+ 'Test2::Tools::Encoding'=> 'cpan',
+ 'Test2::Tools::Event' => 'cpan',
+ 'Test2::Tools::Exception'=> 'cpan',
+ 'Test2::Tools::Exports' => 'cpan',
+ 'Test2::Tools::GenTemp' => 'cpan',
+ 'Test2::Tools::Grab' => 'cpan',
+ 'Test2::Tools::Mock' => 'cpan',
+ 'Test2::Tools::Ref' => 'cpan',
+ 'Test2::Tools::Refcount'=> 'cpan',
+ 'Test2::Tools::Spec' => 'cpan',
+ 'Test2::Tools::Subtest' => 'cpan',
+ 'Test2::Tools::Target' => 'cpan',
+ 'Test2::Tools::Tester' => 'cpan',
'Test2::Tools::Tiny' => 'cpan',
+ 'Test2::Tools::Warnings'=> 'cpan',
'Test2::Util' => 'cpan',
'Test2::Util::ExternalMeta'=> 'cpan',
'Test2::Util::Facets2Legacy'=> 'cpan',
+ 'Test2::Util::Grabber' => 'cpan',
+ 'Test2::Util::Guard' => 'cpan',
'Test2::Util::HashBase' => 'cpan',
+ 'Test2::Util::Importer' => 'cpan',
+ 'Test2::Util::Ref' => 'cpan',
+ 'Test2::Util::Stash' => 'cpan',
+ 'Test2::Util::Sub' => 'cpan',
+ 'Test2::Util::Table' => 'cpan',
+ 'Test2::Util::Table::Cell'=> 'cpan',
+ 'Test2::Util::Table::LineBreak'=> 'cpan',
+ 'Test2::Util::Term' => 'cpan',
+ 'Test2::Util::Times' => 'cpan',
'Test2::Util::Trace' => 'cpan',
+ 'Test2::V0' => 'cpan',
+ 'Test2::Workflow' => 'cpan',
+ 'Test2::Workflow::BlockBase'=> 'cpan',
+ 'Test2::Workflow::Build'=> 'cpan',
+ 'Test2::Workflow::Runner'=> 'cpan',
+ 'Test2::Workflow::Task' => 'cpan',
+ 'Test2::Workflow::Task::Action'=> 'cpan',
+ 'Test2::Workflow::Task::Group'=> 'cpan',
'Test::Builder' => 'cpan',
'Test::Builder::Formatter'=> 'cpan',
'Test::Builder::IO::Scalar'=> 'cpan',
@@ -20149,6 +23159,7 @@ sub is_core
'autodie::exception::system'=> 'cpan',
'autodie::hints' => 'cpan',
'autodie::skip' => 'cpan',
+ 'bigfloat' => 'cpan',
'bigint' => 'cpan',
'bignum' => 'cpan',
'bigrat' => 'cpan',
@@ -20157,6 +23168,7 @@ sub is_core
'ok' => 'cpan',
'parent' => 'cpan',
'perlfaq' => 'cpan',
+ 'stable' => 'cpan',
'version' => 'cpan',
'version::regex' => 'cpan',
);
@@ -20201,6 +23213,7 @@ sub is_core
'CPAN::Meta::Merge' => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
'CPAN::Meta::Prereqs' => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
'CPAN::Meta::Requirements'=> 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta-Requirements/issues',
+ 'CPAN::Meta::Requirements::Range'=> 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta-Requirements/issues',
'CPAN::Meta::Spec' => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
'CPAN::Meta::Validator' => 'https://github.com/Perl-Toolchain-Gang/CPAN-Meta/issues',
'CPAN::Meta::YAML' => 'https://github.com/Perl-Toolchain-Gang/YAML-Tiny/issues',
@@ -20296,8 +23309,9 @@ sub is_core
'File::Path' => undef,
'File::Temp' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=File-Temp',
'Filter::Util::Call' => undef,
- 'Getopt::Long' => undef,
- 'HTTP::Tiny' => 'https://github.com/chansen/p5-http-tiny/issues',
+ 'Getopt::Long' => 'https://github.com/sciurius/perl-Getopt-Long/issues',
+ 'Getopt::Long::Parser' => 'https://github.com/sciurius/perl-Getopt-Long/issues',
+ 'HTTP::Tiny' => 'https://github.com/Perl-Toolchain-Gang/HTTP-Tiny/issues',
'IO::Compress::Adapter::Bzip2'=> 'https://github.com/pmqs/IO-Compress/issues',
'IO::Compress::Adapter::Deflate'=> 'https://github.com/pmqs/IO-Compress/issues',
'IO::Compress::Adapter::Identity'=> 'https://github.com/pmqs/IO-Compress/issues',
@@ -20345,16 +23359,13 @@ sub is_core
'Math::BigInt::Lib' => undef,
'Math::BigInt::Trace' => undef,
'Math::BigRat' => undef,
- 'Math::Complex' => undef,
- 'Math::Trig' => undef,
- 'Memoize' => undef,
- 'Memoize::AnyDBM_File' => undef,
- 'Memoize::Expire' => undef,
- 'Memoize::ExpireFile' => undef,
- 'Memoize::ExpireTest' => undef,
- 'Memoize::NDBM_File' => undef,
- 'Memoize::SDBM_File' => undef,
- 'Memoize::Storable' => undef,
+ 'Math::BigRat::Trace' => undef,
+ 'Memoize' => 'https://rt.cpan.org/Dist/Display.html?Name=Memoize',
+ 'Memoize::AnyDBM_File' => 'https://rt.cpan.org/Dist/Display.html?Name=Memoize',
+ 'Memoize::Expire' => 'https://rt.cpan.org/Dist/Display.html?Name=Memoize',
+ 'Memoize::NDBM_File' => 'https://rt.cpan.org/Dist/Display.html?Name=Memoize',
+ 'Memoize::SDBM_File' => 'https://rt.cpan.org/Dist/Display.html?Name=Memoize',
+ 'Memoize::Storable' => 'https://rt.cpan.org/Dist/Display.html?Name=Memoize',
'Module::Load' => undef,
'Module::Load::Conditional'=> undef,
'Module::Loaded' => undef,
@@ -20380,8 +23391,8 @@ sub is_core
'PerlIO::via::QuotedPrint'=> undef,
'Pod::Checker' => undef,
'Pod::Escapes' => undef,
- 'Pod::Man' => 'https://rt.cpan.org/Dist/Display.html?Name=podlators',
- 'Pod::ParseLink' => 'https://rt.cpan.org/Dist/Display.html?Name=podlators',
+ 'Pod::Man' => 'https://github.com/rra/podlators/issues',
+ 'Pod::ParseLink' => 'https://github.com/rra/podlators/issues',
'Pod::Perldoc' => undef,
'Pod::Perldoc::BaseTo' => undef,
'Pod::Perldoc::GetOptsOO'=> undef,
@@ -20424,10 +23435,10 @@ sub is_core
'Pod::Simple::TranscodeSmart'=> 'https://github.com/perl-pod/pod-simple/issues',
'Pod::Simple::XHTML' => 'https://github.com/perl-pod/pod-simple/issues',
'Pod::Simple::XMLOutStream'=> 'https://github.com/perl-pod/pod-simple/issues',
- 'Pod::Text' => 'https://rt.cpan.org/Dist/Display.html?Name=podlators',
- 'Pod::Text::Color' => 'https://rt.cpan.org/Dist/Display.html?Name=podlators',
- 'Pod::Text::Overstrike' => 'https://rt.cpan.org/Dist/Display.html?Name=podlators',
- 'Pod::Text::Termcap' => 'https://rt.cpan.org/Dist/Display.html?Name=podlators',
+ 'Pod::Text' => 'https://github.com/rra/podlators/issues',
+ 'Pod::Text::Color' => 'https://github.com/rra/podlators/issues',
+ 'Pod::Text::Overstrike' => 'https://github.com/rra/podlators/issues',
+ 'Pod::Text::Termcap' => 'https://github.com/rra/podlators/issues',
'Pod::Usage' => 'https://github.com/Dual-Life/Pod-Usage/issues',
'Scalar::Util' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Scalar-List-Utils',
'Socket' => undef,
@@ -20479,6 +23490,13 @@ sub is_core
'TAP::Parser::YAMLish::Writer'=> 'http://rt.cpan.org/Public/Dist/Display.html?Name=Test-Harness',
'Term::ANSIColor' => 'https://rt.cpan.org/Dist/Display.html?Name=Term-ANSIColor',
'Term::Cap' => undef,
+ 'Term::Table' => 'http://github.com/exodist/Term-Table/issues',
+ 'Term::Table::Cell' => 'http://github.com/exodist/Term-Table/issues',
+ 'Term::Table::CellStack'=> 'http://github.com/exodist/Term-Table/issues',
+ 'Term::Table::HashBase' => 'http://github.com/exodist/Term-Table/issues',
+ 'Term::Table::LineBreak'=> 'http://github.com/exodist/Term-Table/issues',
+ 'Term::Table::Spacer' => 'http://github.com/exodist/Term-Table/issues',
+ 'Term::Table::Util' => 'http://github.com/exodist/Term-Table/issues',
'Test2' => 'http://github.com/Test-More/test-more/issues',
'Test2::API' => 'http://github.com/Test-More/test-more/issues',
'Test2::API::Breakage' => 'http://github.com/Test-More/test-more/issues',
@@ -20490,6 +23508,41 @@ sub is_core
'Test2::API::InterceptResult::Hub'=> 'http://github.com/Test-More/test-more/issues',
'Test2::API::InterceptResult::Squasher'=> 'http://github.com/Test-More/test-more/issues',
'Test2::API::Stack' => 'http://github.com/Test-More/test-more/issues',
+ 'Test2::AsyncSubtest' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::AsyncSubtest::Event::Attach'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::AsyncSubtest::Event::Detach'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::AsyncSubtest::Formatter'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::AsyncSubtest::Hub'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Bundle' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Bundle::Extended'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Bundle::More' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Bundle::Simple' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Array' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Bag' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Base' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Bool' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Custom'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::DeepRef'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Delta' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Event' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::EventMeta'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Float' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Hash' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Isa' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Meta' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Negatable'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Number'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Object'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::OrderedSubset'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Pattern'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Ref' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Regex' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Scalar'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Set' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::String'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Undef' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Compare::Wildcard'=> 'http://github.com/Test-More/Test2-Suite/issues',
'Test2::Event' => 'http://github.com/Test-More/test-more/issues',
'Test2::Event::Bail' => 'http://github.com/Test-More/test-more/issues',
'Test2::Event::Diag' => 'http://github.com/Test-More/test-more/issues',
@@ -20529,12 +23582,97 @@ sub is_core
'Test2::IPC' => 'http://github.com/Test-More/test-more/issues',
'Test2::IPC::Driver' => 'http://github.com/Test-More/test-more/issues',
'Test2::IPC::Driver::Files'=> 'http://github.com/Test-More/test-more/issues',
+ 'Test2::Manual' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Anatomy'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Anatomy::API'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Anatomy::Context'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Anatomy::EndToEnd'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Anatomy::Event'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Anatomy::Hubs'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Anatomy::IPC'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Anatomy::Utilities'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Concurrency'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Contributing'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Testing'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Testing::Introduction'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Testing::Migrating'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Testing::Planning'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Testing::Todo'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Tooling'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Tooling::FirstTool'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Tooling::Formatter'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Tooling::Nesting'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Tooling::Plugin::TestExit'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Tooling::Plugin::TestingDone'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Tooling::Plugin::ToolCompletes'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Tooling::Plugin::ToolStarts'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Tooling::Subtest'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Tooling::TestBuilder'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Manual::Tooling::Testing'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Mock' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Plugin' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Plugin::BailOnFail'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Plugin::DieOnFail'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Plugin::ExitSummary'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Plugin::SRand' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Plugin::Times' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Plugin::UTF8' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Require' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Require::AuthorTesting'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Require::EnvVar'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Require::Fork' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Require::Module'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Require::Perl' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Require::RealFork'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Require::Threads'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Suite' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Todo' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::AsyncSubtest'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Basic' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Class' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::ClassicCompare'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Compare' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Defer' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Encoding'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Event' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Exception'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Exports' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::GenTemp' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Grab' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Mock' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Ref' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Refcount'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Spec' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Subtest' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Target' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Tools::Tester' => 'http://github.com/Test-More/Test2-Suite/issues',
'Test2::Tools::Tiny' => 'http://github.com/Test-More/test-more/issues',
+ 'Test2::Tools::Warnings'=> 'http://github.com/Test-More/Test2-Suite/issues',
'Test2::Util' => 'http://github.com/Test-More/test-more/issues',
'Test2::Util::ExternalMeta'=> 'http://github.com/Test-More/test-more/issues',
'Test2::Util::Facets2Legacy'=> 'http://github.com/Test-More/test-more/issues',
+ 'Test2::Util::Grabber' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Util::Guard' => 'http://github.com/Test-More/Test2-Suite/issues',
'Test2::Util::HashBase' => 'http://github.com/Test-More/test-more/issues',
+ 'Test2::Util::Importer' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Util::Ref' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Util::Stash' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Util::Sub' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Util::Table' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Util::Table::Cell'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Util::Table::LineBreak'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Util::Term' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Util::Times' => 'http://github.com/Test-More/Test2-Suite/issues',
'Test2::Util::Trace' => 'http://github.com/Test-More/test-more/issues',
+ 'Test2::V0' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Workflow' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Workflow::BlockBase'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Workflow::Build'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Workflow::Runner'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Workflow::Task' => 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Workflow::Task::Action'=> 'http://github.com/Test-More/Test2-Suite/issues',
+ 'Test2::Workflow::Task::Group'=> 'http://github.com/Test-More/Test2-Suite/issues',
'Test::Builder' => 'http://github.com/Test-More/test-more/issues',
'Test::Builder::Formatter'=> 'http://github.com/Test-More/test-more/issues',
'Test::Builder::IO::Scalar'=> 'http://github.com/Test-More/test-more/issues',
@@ -20552,8 +23690,8 @@ sub is_core
'Test::use::ok' => 'http://github.com/Test-More/test-more/issues',
'Text::Balanced' => undef,
'Text::ParseWords' => undef,
- 'Text::Tabs' => undef,
- 'Text::Wrap' => undef,
+ 'Text::Tabs' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Text-Tabs%2BWrap',
+ 'Text::Wrap' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Text-Tabs%2BWrap',
'Tie::RefHash' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Tie-RefHash',
'Time::Local' => 'https://github.com/houseabsolute/Time-Local/issues',
'Time::Piece' => undef,
@@ -20577,6 +23715,7 @@ sub is_core
'autodie::exception::system'=> 'https://github.com/pjf/autodie/issues',
'autodie::hints' => 'https://github.com/pjf/autodie/issues',
'autodie::skip' => 'https://github.com/pjf/autodie/issues',
+ 'bigfloat' => undef,
'bigint' => undef,
'bignum' => undef,
'bigrat' => undef,
@@ -20585,6 +23724,7 @@ sub is_core
'ok' => 'http://github.com/Test-More/test-more/issues',
'parent' => undef,
'perlfaq' => 'https://github.com/perl-doc-cats/perlfaq/issues',
+ 'stable' => 'http://rt.cpan.org/Public/Dist/Display.html?Name=experimental',
'version' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=version',
'version::regex' => 'https://rt.cpan.org/Public/Dist/Display.html?Name=version',
);
diff --git a/Master/tlpkg/tlperl/lib/Module/CoreList/Utils.pm b/Master/tlpkg/tlperl/lib/Module/CoreList/Utils.pm
index dfe62c53297..3c3d215ca46 100755
--- a/Master/tlpkg/tlperl/lib/Module/CoreList/Utils.pm
+++ b/Master/tlpkg/tlperl/lib/Module/CoreList/Utils.pm
@@ -4,7 +4,7 @@ use strict;
use warnings;
use Module::CoreList;
-our $VERSION = '5.20210520';
+our $VERSION = '5.20231129';
our %utilities;
sub utilities {
@@ -1706,6 +1706,279 @@ my %delta = (
removed => {
}
},
+ 5.035000 => {
+ delta_from => 5.034000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035001 => {
+ delta_from => 5.035,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035002 => {
+ delta_from => 5.035001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035003 => {
+ delta_from => 5.035002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035004 => {
+ delta_from => 5.035003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035005 => {
+ delta_from => 5.035004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035006 => {
+ delta_from => 5.035005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035007 => {
+ delta_from => 5.035006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035008 => {
+ delta_from => 5.035007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035009 => {
+ delta_from => 5.035008,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.034001 => {
+ delta_from => 5.034000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035010 => {
+ delta_from => 5.035009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.035011 => {
+ delta_from => 5.035010,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.036000 => {
+ delta_from => 5.035011,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037000 => {
+ delta_from => 5.036000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037001 => {
+ delta_from => 5.037,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037002 => {
+ delta_from => 5.037001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037003 => {
+ delta_from => 5.037002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037004 => {
+ delta_from => 5.037003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037005 => {
+ delta_from => 5.037004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037006 => {
+ delta_from => 5.037005,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037007 => {
+ delta_from => 5.037006,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037008 => {
+ delta_from => 5.037007,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037009 => {
+ delta_from => 5.037008,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037010 => {
+ delta_from => 5.037009,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.037011 => {
+ delta_from => 5.03701,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.036001 => {
+ delta_from => 5.036000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.038000 => {
+ delta_from => 5.037011,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.039001 => {
+ delta_from => 5.038,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.039002 => {
+ delta_from => 5.039001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.039003 => {
+ delta_from => 5.039002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.039004 => {
+ delta_from => 5.039003,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.039005 => {
+ delta_from => 5.039004,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.034002 => {
+ delta_from => 5.034001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.036002 => {
+ delta_from => 5.036001,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.038001 => {
+ delta_from => 5.038000,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.034003 => {
+ delta_from => 5.034002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.036003 => {
+ delta_from => 5.036002,
+ changed => {
+ },
+ removed => {
+ }
+ },
+ 5.038002 => {
+ delta_from => 5.038001,
+ changed => {
+ },
+ removed => {
+ }
+ },
);
%utilities = Module::CoreList::_undelta(\%delta);
diff --git a/Master/tlpkg/tlperl/lib/NEXT.pm b/Master/tlpkg/tlperl/lib/NEXT.pm
index 15b0e01c25c..067929053ad 100644
--- a/Master/tlpkg/tlperl/lib/NEXT.pm
+++ b/Master/tlpkg/tlperl/lib/NEXT.pm
@@ -5,7 +5,7 @@ use strict;
use warnings;
use overload ();
-our $VERSION = '0.68';
+our $VERSION = '0.69';
sub NEXT::ELSEWHERE::ancestors
{
diff --git a/Master/tlpkg/tlperl/lib/Net/Cmd.pm b/Master/tlpkg/tlperl/lib/Net/Cmd.pm
index 41df8a264ac..f10df74354f 100644
--- a/Master/tlpkg/tlperl/lib/Net/Cmd.pm
+++ b/Master/tlpkg/tlperl/lib/Net/Cmd.pm
@@ -1,7 +1,7 @@
# Net::Cmd.pm
#
# Copyright (C) 1995-2006 Graham Barr. All rights reserved.
-# Copyright (C) 2013-2016, 2020 Steve Hay. All rights reserved.
+# Copyright (C) 2013-2016, 2020, 2022 Steve Hay. All rights reserved.
# This module is free software; you can redistribute it and/or modify it under
# the same terms as Perl itself, i.e. under the terms of either the GNU General
# Public License or the Artistic License, as specified in the F<LICENCE> file.
@@ -19,14 +19,14 @@ use Symbol 'gensym';
use Errno 'EINTR';
BEGIN {
- if ($^O eq 'os390') {
+ if (ord "A" == 193) {
require Convert::EBCDIC;
# Convert::EBCDIC->import;
}
}
-our $VERSION = "3.13";
+our $VERSION = "3.15";
our @ISA = qw(Exporter);
our @EXPORT = qw(CMD_INFO CMD_OK CMD_MORE CMD_REJECT CMD_ERROR CMD_PENDING);
@@ -41,7 +41,7 @@ use constant DEF_REPLY_CODE => 421;
my %debug = ();
-my $tr = $^O eq 'os390' ? Convert::EBCDIC->new() : undef;
+my $tr = ord "A" == 193 ? Convert::EBCDIC->new() : undef;
sub toebcdic {
my $cmd = shift;
@@ -887,7 +887,7 @@ libnet as of version 1.22_02.
Copyright (C) 1995-2006 Graham Barr. All rights reserved.
-Copyright (C) 2013-2016, 2020 Steve Hay. All rights reserved.
+Copyright (C) 2013-2016, 2020, 2022 Steve Hay. All rights reserved.
=head1 LICENCE
@@ -897,11 +897,11 @@ License or the Artistic License, as specified in the F<LICENCE> file.
=head1 VERSION
-Version 3.13
+Version 3.15
=head1 DATE
-23 Dec 2020
+20 March 2023
=head1 HISTORY
diff --git a/Master/tlpkg/tlperl/lib/Net/Config.pm b/Master/tlpkg/tlperl/lib/Net/Config.pm
index 2f8417f01a5..bdbd0034d87 100644
--- a/Master/tlpkg/tlperl/lib/Net/Config.pm
+++ b/Master/tlpkg/tlperl/lib/Net/Config.pm
@@ -18,7 +18,7 @@ use Socket qw(inet_aton inet_ntoa);
our @EXPORT = qw(%NetConfig);
our @ISA = qw(Net::LocalCfg Exporter);
-our $VERSION = "3.13";
+our $VERSION = "3.15";
our($CONFIGURE, $LIBNET_CFG);
@@ -368,11 +368,11 @@ License or the Artistic License, as specified in the F<LICENCE> file.
=head1 VERSION
-Version 3.13
+Version 3.15
=head1 DATE
-23 Dec 2020
+20 March 2023
=head1 HISTORY
diff --git a/Master/tlpkg/tlperl/lib/Net/Domain.pm b/Master/tlpkg/tlperl/lib/Net/Domain.pm
index d69ac5ba805..bf1ad2547bd 100644
--- a/Master/tlpkg/tlperl/lib/Net/Domain.pm
+++ b/Master/tlpkg/tlperl/lib/Net/Domain.pm
@@ -19,7 +19,7 @@ use Net::Config;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(hostname hostdomain hostfqdn domainname);
-our $VERSION = "3.13";
+our $VERSION = "3.15";
my ($host, $domain, $fqdn) = (undef, undef, undef);
@@ -395,11 +395,11 @@ License or the Artistic License, as specified in the F<LICENCE> file.
=head1 VERSION
-Version 3.13
+Version 3.15
=head1 DATE
-23 Dec 2020
+20 March 2023
=head1 HISTORY
diff --git a/Master/tlpkg/tlperl/lib/Net/FTP.pm b/Master/tlpkg/tlperl/lib/Net/FTP.pm
index 37836bf6578..cee0b2846be 100644
--- a/Master/tlpkg/tlperl/lib/Net/FTP.pm
+++ b/Master/tlpkg/tlperl/lib/Net/FTP.pm
@@ -1,7 +1,7 @@
# Net::FTP.pm
#
# Copyright (C) 1995-2004 Graham Barr. All rights reserved.
-# Copyright (C) 2013-2017, 2020 Steve Hay. All rights reserved.
+# Copyright (C) 2013-2017, 2020, 2022 Steve Hay. All rights reserved.
# This module is free software; you can redistribute it and/or modify it under
# the same terms as Perl itself, i.e. under the terms of either the GNU General
# Public License or the Artistic License, as specified in the F<LICENCE> file.
@@ -23,7 +23,7 @@ use Net::Config;
use Socket;
use Time::Local;
-our $VERSION = '3.13';
+our $VERSION = '3.15';
our $IOCLASS;
my $family_key;
@@ -66,7 +66,7 @@ use constant TELNET_IAC => 255;
use constant TELNET_IP => 244;
use constant TELNET_DM => 242;
-use constant EBCDIC => $^O eq 'os390';
+use constant EBCDIC => ord 'A' == 193;
sub new {
my $pkg = shift;
@@ -1052,14 +1052,7 @@ sub _dataconn {
Timeout => $ftp->timeout,
can_ssl() ? (
SSL_startHandshake => 0,
- $ftp->is_SSL ? (
- SSL_reuse_ctx => $ftp,
- SSL_verifycn_name => ${*$ftp}{net_ftp_tlsargs}{SSL_verifycn_name},
- # This will cause the use of SNI if supported by IO::Socket::SSL.
- $ftp->can_client_sni ? (
- SSL_hostname => ${*$ftp}{net_ftp_tlsargs}{SSL_hostname}
- ):(),
- ) :( %{${*$ftp}{net_ftp_tlsargs}} ),
+ %{${*$ftp}{net_ftp_tlsargs}},
):(),
) or return;
} elsif (my $listen = delete ${*$ftp}{net_ftp_listen}) {
@@ -1966,19 +1959,6 @@ Reinitialize the connection, flushing all I/O and account information.
=back
-=head1 EXAMPLES
-
-For an example of the use of Net::FTP see
-
-=over 4
-
-=item L<https://www.csh.rit.edu/~adam/Progs/>
-
-C<autoftp> is a program that can retrieve, send, or list files via
-the FTP protocol in a non-interactive manner.
-
-=back
-
=head1 EXPORTS
I<None>.
@@ -2034,7 +2014,7 @@ libnet as of version 1.22_02.
Copyright (C) 1995-2004 Graham Barr. All rights reserved.
-Copyright (C) 2013-2017, 2020 Steve Hay. All rights reserved.
+Copyright (C) 2013-2017, 2020, 2022 Steve Hay. All rights reserved.
=head1 LICENCE
@@ -2044,11 +2024,11 @@ License or the Artistic License, as specified in the F<LICENCE> file.
=head1 VERSION
-Version 3.13
+Version 3.15
=head1 DATE
-23 Dec 2020
+20 March 2023
=head1 HISTORY
diff --git a/Master/tlpkg/tlperl/lib/Net/FTP/A.pm b/Master/tlpkg/tlperl/lib/Net/FTP/A.pm
index 53446386c18..9b93e16cbc8 100644
--- a/Master/tlpkg/tlperl/lib/Net/FTP/A.pm
+++ b/Master/tlpkg/tlperl/lib/Net/FTP/A.pm
@@ -13,7 +13,7 @@ use Carp;
use Net::FTP::dataconn;
our @ISA = qw(Net::FTP::dataconn);
-our $VERSION = "3.13";
+our $VERSION = "3.15";
our $buf;
diff --git a/Master/tlpkg/tlperl/lib/Net/FTP/E.pm b/Master/tlpkg/tlperl/lib/Net/FTP/E.pm
index 9b1370778a8..a10b9729f00 100644
--- a/Master/tlpkg/tlperl/lib/Net/FTP/E.pm
+++ b/Master/tlpkg/tlperl/lib/Net/FTP/E.pm
@@ -8,6 +8,6 @@ use warnings;
use Net::FTP::I;
our @ISA = qw(Net::FTP::I);
-our $VERSION = "3.13";
+our $VERSION = "3.15";
1;
diff --git a/Master/tlpkg/tlperl/lib/Net/FTP/I.pm b/Master/tlpkg/tlperl/lib/Net/FTP/I.pm
index 726cba197c3..1c2b8a60882 100644
--- a/Master/tlpkg/tlperl/lib/Net/FTP/I.pm
+++ b/Master/tlpkg/tlperl/lib/Net/FTP/I.pm
@@ -13,7 +13,7 @@ use Carp;
use Net::FTP::dataconn;
our @ISA = qw(Net::FTP::dataconn);
-our $VERSION = "3.13";
+our $VERSION = "3.15";
our $buf;
diff --git a/Master/tlpkg/tlperl/lib/Net/FTP/L.pm b/Master/tlpkg/tlperl/lib/Net/FTP/L.pm
index ac5e27ebadc..d04fd920aac 100644
--- a/Master/tlpkg/tlperl/lib/Net/FTP/L.pm
+++ b/Master/tlpkg/tlperl/lib/Net/FTP/L.pm
@@ -8,6 +8,6 @@ use warnings;
use Net::FTP::I;
our @ISA = qw(Net::FTP::I);
-our $VERSION = "3.13";
+our $VERSION = "3.15";
1;
diff --git a/Master/tlpkg/tlperl/lib/Net/FTP/dataconn.pm b/Master/tlpkg/tlperl/lib/Net/FTP/dataconn.pm
index 5a257e677ff..3db008df957 100644
--- a/Master/tlpkg/tlperl/lib/Net/FTP/dataconn.pm
+++ b/Master/tlpkg/tlperl/lib/Net/FTP/dataconn.pm
@@ -13,7 +13,7 @@ use Carp;
use Errno;
use Net::Cmd;
-our $VERSION = '3.13';
+our $VERSION = '3.15';
$Net::FTP::IOCLASS or die "please load Net::FTP before Net::FTP::dataconn";
our @ISA = $Net::FTP::IOCLASS;
@@ -224,11 +224,11 @@ License or the Artistic License, as specified in the F<LICENCE> file.
=head1 VERSION
-Version 3.13
+Version 3.15
=head1 DATE
-23 Dec 2020
+20 March 2023
=head1 HISTORY
diff --git a/Master/tlpkg/tlperl/lib/Net/NNTP.pm b/Master/tlpkg/tlperl/lib/Net/NNTP.pm
index 3187f519619..59ed0ef5b39 100644
--- a/Master/tlpkg/tlperl/lib/Net/NNTP.pm
+++ b/Master/tlpkg/tlperl/lib/Net/NNTP.pm
@@ -19,7 +19,7 @@ use Net::Cmd;
use Net::Config;
use Time::Local;
-our $VERSION = "3.13";
+our $VERSION = "3.15";
# Code for detecting if we can use SSL
my $ssl_class = eval {
@@ -1308,11 +1308,11 @@ License or the Artistic License, as specified in the F<LICENCE> file.
=head1 VERSION
-Version 3.13
+Version 3.15
=head1 DATE
-23 Dec 2020
+20 March 2023
=head1 HISTORY
diff --git a/Master/tlpkg/tlperl/lib/Net/Netrc.pm b/Master/tlpkg/tlperl/lib/Net/Netrc.pm
index 50688eefd62..fe9abb9ddd3 100644
--- a/Master/tlpkg/tlperl/lib/Net/Netrc.pm
+++ b/Master/tlpkg/tlperl/lib/Net/Netrc.pm
@@ -16,7 +16,7 @@ use warnings;
use Carp;
use FileHandle;
-our $VERSION = "3.13";
+our $VERSION = "3.15";
our $TESTING;
@@ -353,11 +353,11 @@ License or the Artistic License, as specified in the F<LICENCE> file.
=head1 VERSION
-Version 3.13
+Version 3.15
=head1 DATE
-23 Dec 2020
+20 March 2023
=head1 HISTORY
diff --git a/Master/tlpkg/tlperl/lib/Net/POP3.pm b/Master/tlpkg/tlperl/lib/Net/POP3.pm
index 55f7be1342e..e6239c7c86b 100644
--- a/Master/tlpkg/tlperl/lib/Net/POP3.pm
+++ b/Master/tlpkg/tlperl/lib/Net/POP3.pm
@@ -18,7 +18,7 @@ use IO::Socket;
use Net::Cmd;
use Net::Config;
-our $VERSION = "3.13";
+our $VERSION = "3.15";
# Code for detecting if we can use SSL
my $ssl_class = eval {
@@ -869,11 +869,11 @@ License or the Artistic License, as specified in the F<LICENCE> file.
=head1 VERSION
-Version 3.13
+Version 3.15
=head1 DATE
-23 Dec 2020
+20 March 2023
=head1 HISTORY
diff --git a/Master/tlpkg/tlperl/lib/Net/Ping.pm b/Master/tlpkg/tlperl/lib/Net/Ping.pm
index 19bb51ec1ac..b4c8f2f80bf 100644
--- a/Master/tlpkg/tlperl/lib/Net/Ping.pm
+++ b/Master/tlpkg/tlperl/lib/Net/Ping.pm
@@ -22,7 +22,7 @@ use Time::HiRes;
@ISA = qw(Exporter);
@EXPORT = qw(pingecho);
@EXPORT_OK = qw(wakeonlan);
-$VERSION = "2.74";
+$VERSION = "2.76";
# Globals
@@ -1081,8 +1081,7 @@ sub tcp_connect
sub DESTROY {
my $self = shift;
- if ($self->{'proto'} eq 'tcp' &&
- $self->{'tcp_chld'}) {
+ if ($self->{'proto'} && ($self->{'proto'} eq 'tcp') && $self->{'tcp_chld'}) {
# Put that choking client out of its misery
kill "KILL", $self->{'tcp_chld'};
# Clean off the zombie
@@ -2004,13 +2003,13 @@ Net::Ping - check a remote host for reachability
use Net::Ping;
- $p = Net::Ping->new();
+ my $p = Net::Ping->new();
print "$host is alive.\n" if $p->ping($host);
$p->close();
- $p = Net::Ping->new("icmp");
+ my $p = Net::Ping->new("icmp");
$p->bind($my_addr); # Specify source interface of pings
- foreach $host (@host_array)
+ foreach my $host (@host_array)
{
print "$host is ";
print "NOT " unless $p->ping($host, 2);
@@ -2019,11 +2018,11 @@ Net::Ping - check a remote host for reachability
}
$p->close();
- $p = Net::Ping->new("icmpv6");
- $ip = "[fd00:dead:beef::4e]";
+ my $p = Net::Ping->new("icmpv6");
+ my $ip = "[fd00:dead:beef::4e]";
print "$ip is alive.\n" if $p->ping($ip);
- $p = Net::Ping->new("tcp", 2);
+ my $p = Net::Ping->new("tcp", 2);
# Try connecting to the www port instead of the echo port
$p->port_number(scalar(getservbyname("http", "tcp")));
while ($stop_time > time())
@@ -2035,19 +2034,19 @@ Net::Ping - check a remote host for reachability
undef($p);
# Like tcp protocol, but with many hosts
- $p = Net::Ping->new("syn");
+ my $p = Net::Ping->new("syn");
$p->port_number(getservbyname("http", "tcp"));
- foreach $host (@host_array) {
+ foreach my $host (@host_array) {
$p->ping($host);
}
- while (($host,$rtt,$ip) = $p->ack) {
+ while (my ($host, $rtt, $ip) = $p->ack) {
print "HOST: $host [$ip] ACKed in $rtt seconds.\n";
}
# High precision syntax (requires Time::HiRes)
- $p = Net::Ping->new();
+ my $p = Net::Ping->new();
$p->hires();
- ($ret, $duration, $ip) = $p->ping($host, 5.5);
+ my ($ret, $duration, $ip) = $p->ping($host, 5.5);
printf("$host [ip: $ip] is alive (packet return time: %.2f ms)\n",
1000 * $duration)
if $ret;
diff --git a/Master/tlpkg/tlperl/lib/Net/SMTP.pm b/Master/tlpkg/tlperl/lib/Net/SMTP.pm
index 354ed8e38f3..e592bb53e45 100644
--- a/Master/tlpkg/tlperl/lib/Net/SMTP.pm
+++ b/Master/tlpkg/tlperl/lib/Net/SMTP.pm
@@ -19,7 +19,7 @@ use Net::Cmd;
use Net::Config;
use Socket;
-our $VERSION = "3.13";
+our $VERSION = "3.15";
# Code for detecting if we can use SSL
my $ssl_class = eval {
@@ -1052,11 +1052,11 @@ License or the Artistic License, as specified in the F<LICENCE> file.
=head1 VERSION
-Version 3.13
+Version 3.15
=head1 DATE
-23 Dec 2020
+20 March 2023
=head1 HISTORY
diff --git a/Master/tlpkg/tlperl/lib/Net/Time.pm b/Master/tlpkg/tlperl/lib/Net/Time.pm
index 7f0a724cd3a..237c1747a48 100644
--- a/Master/tlpkg/tlperl/lib/Net/Time.pm
+++ b/Master/tlpkg/tlperl/lib/Net/Time.pm
@@ -22,7 +22,7 @@ use Net::Config;
our @ISA = qw(Exporter);
our @EXPORT_OK = qw(inet_time inet_daytime);
-our $VERSION = "3.13";
+our $VERSION = "3.15";
our $TIMEOUT = 120;
@@ -190,11 +190,11 @@ License or the Artistic License, as specified in the F<LICENCE> file.
=head1 VERSION
-Version 3.13
+Version 3.15
=head1 DATE
-23 Dec 2020
+20 March 2023
=head1 HISTORY
diff --git a/Master/tlpkg/tlperl/lib/Net/hostent.pm b/Master/tlpkg/tlperl/lib/Net/hostent.pm
index 8831919fb43..babcdc165a8 100644
--- a/Master/tlpkg/tlperl/lib/Net/hostent.pm
+++ b/Master/tlpkg/tlperl/lib/Net/hostent.pm
@@ -2,7 +2,7 @@ package Net::hostent;
use strict;
use 5.006_001;
-our $VERSION = '1.02';
+our $VERSION = '1.03';
our (@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
our (
$h_name, @h_aliases,
@@ -58,13 +58,14 @@ sub gethostbyaddr ($;$) {
}
sub gethost($) {
- if ($_[0] =~ /^\d+(?:\.\d+(?:\.\d+(?:\.\d+)?)?)?$/) {
- require Socket;
- &gethostbyaddr(Socket::inet_aton(shift));
+ my $addr = shift;
+ if ($addr =~ /^\d+(?:\.\d+(?:\.\d+(?:\.\d+)?)?)?$/) {
+ require Socket;
+ &gethostbyaddr(Socket::inet_aton($addr));
} else {
- &gethostbyname;
- }
-}
+ &gethostbyname($addr);
+ }
+}
1;
__END__
diff --git a/Master/tlpkg/tlperl/lib/Net/protoent.pm b/Master/tlpkg/tlperl/lib/Net/protoent.pm
index cef20fbd0b0..18dc777d0fb 100644
--- a/Master/tlpkg/tlperl/lib/Net/protoent.pm
+++ b/Master/tlpkg/tlperl/lib/Net/protoent.pm
@@ -2,7 +2,7 @@ package Net::protoent;
use strict;
use 5.006_001;
-our $VERSION = '1.01';
+our $VERSION = '1.02';
our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
our ( $p_name, @p_aliases, $p_proto );
BEGIN {
@@ -51,7 +51,7 @@ Net::protoent - by-name interface to Perl's built-in getproto*() functions
=head1 SYNOPSIS
use Net::protoent;
- $p = getprotobyname(shift || 'tcp') || die "no proto";
+ my $p = getprotobyname(shift || 'tcp') || die "no proto";
printf "proto for %s is %d, aliases are %s\n",
$p->name, $p->proto, "@{$p->aliases}";
diff --git a/Master/tlpkg/tlperl/lib/Net/servent.pm b/Master/tlpkg/tlperl/lib/Net/servent.pm
index a3b2bad2c2b..3aa8389f99c 100644
--- a/Master/tlpkg/tlperl/lib/Net/servent.pm
+++ b/Master/tlpkg/tlperl/lib/Net/servent.pm
@@ -2,7 +2,7 @@ package Net::servent;
use strict;
use 5.006_001;
-our $VERSION = '1.02';
+our $VERSION = '1.03';
our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
our ( $s_name, @s_aliases, $s_port, $s_proto );
BEGIN {
@@ -53,7 +53,7 @@ Net::servent - by-name interface to Perl's built-in getserv*() functions
=head1 SYNOPSIS
use Net::servent;
- $s = getservbyname(shift || 'ftp') || die "no service";
+ my $s = getservbyname(shift || 'ftp') || die "no service";
printf "port for %s is %s, aliases are %s\n",
$s->name, $s->port, "@{$s->aliases}";
diff --git a/Master/tlpkg/tlperl/lib/Opcode.pm b/Master/tlpkg/tlperl/lib/Opcode.pm
index 0501fb8f396..b4aead9e401 100644
--- a/Master/tlpkg/tlperl/lib/Opcode.pm
+++ b/Master/tlpkg/tlperl/lib/Opcode.pm
@@ -1,32 +1,21 @@
-package Opcode;
-
-use 5.006_001;
+package Opcode 1.64;
use strict;
-our($VERSION, @ISA, @EXPORT_OK);
-
-$VERSION = "1.50";
-
use Carp;
-use Exporter ();
+use Exporter 'import';
use XSLoader;
-BEGIN {
- @ISA = qw(Exporter);
- @EXPORT_OK = qw(
+sub opset (;@);
+sub opset_to_hex ($);
+sub opdump (;$);
+use subs our @EXPORT_OK = qw(
opset ops_to_opset
opset_to_ops opset_to_hex invert_opset
empty_opset full_opset
opdesc opcodes opmask define_optag
opmask_add verify_opset opdump
- );
-}
-
-sub opset (;@);
-sub opset_to_hex ($);
-sub opdump (;$);
-use subs @EXPORT_OK;
+);
XSLoader::load();
@@ -313,10 +302,10 @@ invert_opset function.
null stub scalar pushmark wantarray const defined undef
- rv2sv sassign
+ rv2sv sassign padsv_store
rv2av aassign aelem aelemfast aelemfast_lex aslice kvaslice
- av2arylen
+ av2arylen aelemfastlex_store
rv2hv helem hslice kvhslice each values keys exists delete
aeach akeys avalues multideref argelem argdefelem argcheck
@@ -343,10 +332,12 @@ invert_opset function.
list lslice splice push pop shift unshift reverse
cond_expr flip flop andassign orassign dorassign and or dor xor
+ helemexistsor
warn die lineseq nextstate scope enter leave
rv2cv anoncode prototype coreargs avhvswitch anonconst
+ emptyavhv
entersub leavesub leavesublv return method method_named
method_super method_redir method_redir_super
@@ -354,9 +345,14 @@ invert_opset function.
cmpchain_and cmpchain_dup
+ is_bool
+ is_weak weaken unweaken
+
leaveeval -- needed for Safe to operate, is safe
without entereval
+ methstart initfield
+
=item :base_mem
These memory related ops are not included in :base_core because they
@@ -415,6 +411,7 @@ These are a hotchpotch of opcodes still waiting to be considered
once
rv2gv refgen srefgen ref refassign lvref lvrefslice lvavref
+ blessed refaddr reftype
bless -- could be used to change ownership of objects
(reblessing)
@@ -442,8 +439,14 @@ These are a hotchpotch of opcodes still waiting to be considered
break continue
smartmatch
+ pushdefer
+
custom -- where should this go
+ ceil floor
+
+ is_tainted
+
=item :base_math
These ops are not included in :base_core because of the risk of them being
@@ -611,4 +614,3 @@ Split out from Safe module version 1, named opcode tags and other
changes added by Tim Bunce.
=cut
-
diff --git a/Master/tlpkg/tlperl/lib/POSIX.pm b/Master/tlpkg/tlperl/lib/POSIX.pm
index 08986d26577..48b224a36ec 100644
--- a/Master/tlpkg/tlperl/lib/POSIX.pm
+++ b/Master/tlpkg/tlperl/lib/POSIX.pm
@@ -4,7 +4,7 @@ use warnings;
our ($AUTOLOAD, %SIGRT);
-our $VERSION = '1.97';
+our $VERSION = '2.13';
require XSLoader;
@@ -12,7 +12,7 @@ use Fcntl qw(FD_CLOEXEC F_DUPFD F_GETFD F_GETFL F_GETLK F_RDLCK F_SETFD
F_SETFL F_SETLK F_SETLKW F_UNLCK F_WRLCK O_ACCMODE O_APPEND
O_CREAT O_EXCL O_NOCTTY O_NONBLOCK O_RDONLY O_RDWR O_TRUNC
O_WRONLY SEEK_CUR SEEK_END SEEK_SET
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISREG
+ S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISLNK S_ISREG S_ISSOCK
S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU S_ISGID S_ISUID
S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR);
@@ -176,7 +176,7 @@ sub import {
load_imports() unless $loaded++;
- # Grandfather old foo_h form to new :foo_h form
+ # Rewrite legacy foo_h form to new :foo_h form
s/^(?=\w+_h$)/:/ for my @list = @_;
my @unimpl = sort grep { exists $replacement{$_} } @list;
@@ -278,7 +278,7 @@ my %default_export_tags = ( # cf. exports policy below
creat
SEEK_CUR SEEK_END SEEK_SET
S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG S_ISUID
+ S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISLNK S_ISREG S_ISSOCK S_ISUID
S_IWGRP S_IWOTH S_IWUSR)],
float_h => [qw(DBL_DIG DBL_EPSILON DBL_MANT_DIG
@@ -307,7 +307,7 @@ my %default_export_tags = ( # cf. exports policy below
locale_h => [qw(LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES
LC_MONETARY LC_NUMERIC LC_TIME LC_IDENTIFICATION
- LC_MEASUREMENT LC_PAPER LC_TELEPHONE LC_ADDRESS
+ LC_MEASUREMENT LC_PAPER LC_TELEPHONE LC_ADDRESS LC_NAME
LC_SYNTAX LC_TOD NULL
localeconv setlocale)],
@@ -357,7 +357,7 @@ my %default_export_tags = ( # cf. exports policy below
strtok strxfrm)],
sys_stat_h => [qw(S_IRGRP S_IROTH S_IRUSR S_IRWXG S_IRWXO S_IRWXU
- S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISREG
+ S_ISBLK S_ISCHR S_ISDIR S_ISFIFO S_ISGID S_ISLNK S_ISREG S_ISSOCK
S_ISUID S_IWGRP S_IWOTH S_IWUSR S_IXGRP S_IXOTH S_IXUSR
fstat mkfifo)],
diff --git a/Master/tlpkg/tlperl/lib/POSIX.pod b/Master/tlpkg/tlperl/lib/POSIX.pod
index 4f85f35c8c7..d3720da9b50 100644
--- a/Master/tlpkg/tlperl/lib/POSIX.pod
+++ b/Master/tlpkg/tlperl/lib/POSIX.pod
@@ -10,9 +10,9 @@ POSIX - Perl interface to IEEE Std 1003.1
printf "EINTR is %d\n", EINTR;
- $sess_id = POSIX::setsid();
+ my $sess_id = POSIX::setsid();
- $fd = POSIX::open($path, O_CREAT|O_EXCL|O_WRONLY, 0644);
+ my $fd = POSIX::open($path, O_CREAT|O_EXCL|O_WRONLY, 0644);
# note: that's a filedescriptor, *NOT* a filehandle
=head1 DESCRIPTION
@@ -501,7 +501,7 @@ than the explicit two operations [C99]. Added in Perl v5.22.
Maximum of C<x> and C<y>, except when either is C<NaN>, returns the other [C99].
Added in Perl v5.22.
- my $min = POSIX::fmax($x, $y);
+ my $max = POSIX::fmax($x, $y);
=item C<fmin>
@@ -825,11 +825,12 @@ to use instead. See L<perlrecharclass/POSIX Character Classes>.
Returns true if the argument is C<NaN> (not-a-number) [C99]. Added in
Perl v5.22.
-Note that you cannot test for "C<NaN>-ness" with
+Note that you can also test for "C<NaN>-ness" with
+L<equality operators|perlop/"Equality Operators"> (C<==> or C<!=>), as in
- $x == $x
+ print "x is not a NaN\n" if $x == $x;
-since the C<NaN> is not equivalent to anything, B<including itself>.
+since the C<NaN> is not equal to anything, B<including itself>.
See also L</nan>, L</NaN>, L</isinf>, and L</fpclassify>.
@@ -1014,6 +1015,18 @@ Here is how to query the database for the B<de> (Deutsch or German) locale.
The members whose names begin with C<int_p_> and C<int_n_> were added by
POSIX.1-2008 and are only available on systems that support them.
+A value of -1 returned for numeric entries indicates that the field is
+not applicable to the locale. This is rare except in the C and related
+locales, which don't have most monetary values defined. It can also
+happen, quirkily, in fields that are otherwise boolean to indicate that
+the value is kind of neither true nor false. This happens in C<p_cs_precedes>
+and C<int_p_cs_precedes> when the currency symbol neither precedes nor
+succeeds a positive value but is infixed, by replacing the radix
+character.
+
+Prior to Perl v5.37.7, empty string fields and numeric fields with value
+-1 were omittted from the returned hash.
+
=item C<localtime>
This is identical to Perl's builtin C<localtime()> function for
@@ -1133,9 +1146,10 @@ parameter is stored. The optional third parameter is ignored if it is
larger than the actual length of the second parameter string.
Use C<undef> as the second parameter to this function to get the effect
-of passing NULL as the second parameter to C<mbtowc>. This resets any
-shift state to its initial value. The return value is undefined if
-C<mbrtowc> was substituted, so you should never rely on it.
+of passing NULL as the second parameter to C<mbtowc>. This ignores the
+first parameter, and resets any shift state to its initial value. The
+return value is undefined if C<mbrtowc> was substituted, so you should
+never rely on it.
When the second parameter is a scalar containing a value that either is
a PV string or can be forced into one, the return value is the number of
@@ -1623,7 +1637,7 @@ will change only the real user identifier.
Detailed signal management. This uses C<POSIX::SigAction> objects for
the C<action> and C<oldaction> arguments (the oldaction can also be
just a hash reference). Consult your system's C<sigaction> manpage
-for details, see also C<POSIX::SigRt>.
+for details, see also L</POSIX::SigRt>.
Synopsis:
@@ -1826,7 +1840,7 @@ about these and the other arguments.
If you want your code to be portable, your format (C<fmt>) argument
should use only the conversion specifiers defined by the ANSI C
-standard (C89, to play safe). These are C<aAbBcdHIjmMpSUwWxXyYZ%>.
+standard (C99, to play safe). These are C<aAbBcdHIjmMpSUwWxXyYZ%>.
But even then, the B<results> of some of the conversion specifiers are
non-portable. For example, the specifiers C<aAbBcpZ> change according
to the locale settings of the user, and both how to set locales (the
@@ -1971,9 +1985,14 @@ Used with C<eq> or C<cmp> as an alternative to C<L</strcoll>>.
Not really needed since Perl can do this transparently, see
L<perllocale>.
-Beware that in a UTF-8 locale, anything you pass to this function must
-be in UTF-8; and when not in a UTF-8 locale, anything passed must not be
-UTF-8 encoded.
+Unlike the libc C<strxfrm>, this allows NUL characters in the input
+C<$src>.
+
+It doesn't make sense for a string to be encoded in one locale (say,
+ISO-8859-6, Arabic) and to collate it based on another (like ISO-8859-7,
+Greek). Perl assumes that the current C<LC_CTYPE> locale correctly
+represents the encoding of C<$src>, and ignores the value of
+C<LC_COLLATE>.
=item C<sysconf>
@@ -2196,9 +2215,10 @@ L</mblen> and L</mbtowc> may be used to roll your own decoding/encoding
of other types of multi-byte locales.
Use C<undef> as the first parameter to this function to get the effect
-of passing NULL as the first parameter to C<wctomb>. This resets any
-shift state to its initial value. The return value is undefined if
-C<wcrtomb> was substituted, so you should never rely on it.
+of passing NULL as the first parameter to C<wctomb>. This ignores the
+second parameter, and resets any shift state to its initial value. The
+return value is undefined if C<wcrtomb> was substituted, so you should
+never rely on it.
When the first parameter is a scalar, the code point contained in the
scalar second parameter is converted into a multi-byte string and stored
@@ -2739,7 +2759,7 @@ C<S_IWUSR> C<S_IXGRP> C<S_IXOTH> C<S_IXUSR>
=item Macros
-C<S_ISBLK> C<S_ISCHR> C<S_ISDIR> C<S_ISFIFO> C<S_ISREG>
+C<S_ISBLK> C<S_ISCHR> C<S_ISDIR> C<S_ISFIFO> C<S_ISLNK> C<S_ISREG> C<S_ISSOCK>
=back
diff --git a/Master/tlpkg/tlperl/lib/PerlIO.pm b/Master/tlpkg/tlperl/lib/PerlIO.pm
index 85dd083cc02..01a02cf6486 100644
--- a/Master/tlpkg/tlperl/lib/PerlIO.pm
+++ b/Master/tlpkg/tlperl/lib/PerlIO.pm
@@ -1,6 +1,6 @@
package PerlIO;
-our $VERSION = '1.11';
+our $VERSION = '1.12';
# Map layer name to package that defines it
our %alias;
@@ -235,12 +235,6 @@ like C<:utf8>. An example of a possible use might be:
A more elegant (and safer) interface is needed.
-=item :win32
-
-On Win32 platforms this I<experimental> layer uses the native "handle" IO
-rather than the unix-like numeric file descriptor layer. Known to be
-buggy as of Perl 5.8.2.
-
=back
=head2 Custom Layers
diff --git a/Master/tlpkg/tlperl/lib/PerlIO/via/QuotedPrint.pm b/Master/tlpkg/tlperl/lib/PerlIO/via/QuotedPrint.pm
index d02ec682ae5..6a407da2771 100644
--- a/Master/tlpkg/tlperl/lib/PerlIO/via/QuotedPrint.pm
+++ b/Master/tlpkg/tlperl/lib/PerlIO/via/QuotedPrint.pm
@@ -12,7 +12,7 @@ use 5.008001;
# be as strict as possible
use strict;
-our $VERSION = '0.09';
+our $VERSION = '0.10';
# modules that we need
use MIME::QuotedPrint (); # no need to pollute this namespace
@@ -163,11 +163,11 @@ Public License or the Artistic License, as specified in the F<LICENCE> file.
=head1 VERSION
-Version 0.09
+Version 0.10
=head1 DATE
-08 Dec 2020
+22 May 2022
=head1 HISTORY
diff --git a/Master/tlpkg/tlperl/lib/Pod/Checker.pm b/Master/tlpkg/tlperl/lib/Pod/Checker.pm
index bee20d0bfad..1dfb58b1284 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Checker.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Checker.pm
@@ -10,7 +10,7 @@ package Pod::Checker;
use strict;
use warnings;
-our $VERSION = '1.74'; ## Current version of this package
+our $VERSION = '1.75'; ## Current version of this package
=head1 NAME
@@ -1112,7 +1112,10 @@ sub new {
$self->{'-line'} ||= $caller->{'_line'};
$self->{'-type'} ||= $simple_link->{'type'};
-
+ # preserve raw link text for additional checks
+ $self->{'-raw-link-text'} = (exists $simple_link->{'raw'})
+ ? "$simple_link->{'raw'}"
+ : "";
# Force stringification of page and node. (This expands any E<>.)
$self->{'-page'} = exists $simple_link->{'to'} ? "$simple_link->{'to'}" : "";
$self->{'-node'} = exists $simple_link->{'section'} ? "$simple_link->{'section'}" : "";
diff --git a/Master/tlpkg/tlperl/lib/Pod/Functions.pm b/Master/tlpkg/tlperl/lib/Pod/Functions.pm
index f4e2a9464c4..727c7fd0d44 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Functions.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Functions.pm
@@ -54,11 +54,10 @@ L<perlfunc/"Perl Functions by Category"> section.
=cut
-our $VERSION = '1.13';
+our $VERSION = '1.14';
-require Exporter;
+use Exporter 'import';
-our @ISA = qw(Exporter);
our @EXPORT = qw(%Kinds %Type %Flavor %Type_Description @Type_Order);
our(%Kinds, %Type, %Flavor, %Type_Description, @Type_Order);
@@ -142,6 +141,7 @@ chop String remove the last character from a string
chown File change the ownership on a list of files
chr String get character this number represents
chroot File make directory new root for path lookups
+class Namespace Objects declare a separate global namespace that is an object class
close I/O close file (or pipe or socket) handle
closedir I/O close directory handle
connect Socket connect to a remote socket
@@ -171,6 +171,7 @@ exit Flow terminate this program
exp Math raise I<e> to a power
fc String return casefolded version of a string
fcntl File file control system call
+field Namespace Objects declare a field variable of the current class
__FILE__ Flow the name of the current source file
fileno I/O return file descriptor from filehandle
flock I/O lock an entire file with an advisory lock
@@ -229,6 +230,7 @@ log Math retrieve the natural logarithm for a number
lstat File stat a symbolic link
m// Regexp match a string with a regular expression pattern
map LIST apply a change to a list to get back a new list with the changes
+method Flow Objects declare a method of a class
mkdir File create a directory
msgctl SysV SysV IPC message control operations
msgget SysV get SysV IPC message queue
@@ -332,14 +334,14 @@ times Process Time return elapsed time for self and child processes
tr/// String transliterate a string
truncate I/O shorten a file
uc String return upper-case version of a string
-ucfirst String return a string with just the next letter in upper case
+ucfirst String return a string with the first letter in upper case
umask File set file creation mode mask
undef Misc remove a variable or function definition
unlink File remove one link to a file
unpack Binary LIST convert binary structure into normal perl variables
unshift ARRAY prepend more elements to the beginning of a list
untie Objects break a tie binding to a variable
-use Modules Namespace Objects load in a module at compile time and import its namespace
+use Modules Namespace Objects enable Perl language features and declare required version
utime File set a file's last access and modify times
values ARRAY HASH return a list of the values in a hash
vec Binary test or set particular bits in a string
diff --git a/Master/tlpkg/tlperl/lib/Pod/Html.pm b/Master/tlpkg/tlperl/lib/Pod/Html.pm
index ba0ab0b39ac..7c568f9e913 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Html.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Html.pm
@@ -1,22 +1,27 @@
package Pod::Html;
use strict;
-require Exporter;
+use Exporter 'import';
-our $VERSION = 1.27;
-our @ISA = qw(Exporter);
-our @EXPORT = qw(pod2html htmlify);
-our @EXPORT_OK = qw(anchorify relativize_url);
+our $VERSION = 1.34;
+$VERSION = eval $VERSION;
+our @EXPORT = qw(pod2html);
-use Carp;
use Config;
use Cwd;
use File::Basename;
use File::Spec;
-use File::Spec::Unix;
-use Getopt::Long;
use Pod::Simple::Search;
use Pod::Simple::SimpleTree ();
-use Text::Tabs;
+use Pod::Html::Util qw(
+ html_escape
+ process_command_line
+ trim_leading_whitespace
+ unixify
+ usage
+ htmlify
+ anchorify
+ relativize_url
+);
use locale; # make \w work right in non-ASCII lands
=head1 NAME
@@ -189,20 +194,26 @@ Display progress messages. By default, they won't be displayed.
=back
-=head2 htmlify
+=head2 Formerly Exported Auxiliary Functions
- htmlify($heading);
+Prior to perl-5.36, the following three functions were exported by
+F<Pod::Html>, either by default or on request:
+
+=over 4
-Converts a pod section specification to a suitable section specification
-for HTML. Note that we keep spaces and special characters except
-C<", ?> (Netscape problem) and the hyphen (writer's problem...).
+=item * C<htmlify()> (by default)
-=head2 anchorify
+=item * C<anchorify()> (upon request)
+
+=item * C<relativize_url()> (upon request)
+
+=back
- anchorify(@heading);
+The definition and documentation of these functions have been moved to
+F<Pod::Html::Util>, viewable via C<perldoc Pod::Html::Util>.
-Similar to C<htmlify()>, but turns non-alphanumerics into underscores. Note
-that C<anchorify()> is not exported by default.
+Beginning with perl-5.38 these functions must be explicitly imported from
+F<Pod::Html::Util>. Please modify your code as needed.
=head1 ENVIRONMENT
@@ -224,386 +235,234 @@ This program is distributed under the Artistic License.
=cut
-# This sub duplicates the guts of Pod::Simple::FromTree. We could have
-# used that module, except that it would have been a non-core dependency.
-sub feed_tree_to_parser {
- my($parser, $tree) = @_;
- if(ref($tree) eq "") {
- $parser->_handle_text($tree);
- } elsif(!($tree->[0] eq "X" && $parser->nix_X_codes)) {
- $parser->_handle_element_start($tree->[0], $tree->[1]);
- feed_tree_to_parser($parser, $_) foreach @{$tree}[2..$#$tree];
- $parser->_handle_element_end($tree->[0]);
- }
-}
-
-my $Cachedir;
-my $Dircache;
-my($Htmlroot, $Htmldir, $Htmlfile, $Htmlfileurl);
-my($Podfile, @Podpath, $Podroot);
-my $Poderrors;
-my $Css;
-
-my $Recurse;
-my $Quiet;
-my $Verbose;
-my $Doindex;
-
-my $Backlink;
-
-my($Title, $Header);
-
-my %Pages = (); # associative array used to find the location
- # of pages referenced by L<> links.
-
-my $Curdir = File::Spec->curdir;
-
-sub init_globals {
- $Cachedir = "."; # The directory to which directory caches
- # will be written.
-
- $Dircache = "pod2htmd.tmp";
-
- $Htmlroot = "/"; # http-server base directory from which all
- # relative paths in $podpath stem.
- $Htmldir = ""; # The directory to which the html pages
- # will (eventually) be written.
- $Htmlfile = ""; # write to stdout by default
- $Htmlfileurl = ""; # The url that other files would use to
- # refer to this file. This is only used
- # to make relative urls that point to
- # other files.
-
- $Poderrors = 1;
- $Podfile = ""; # read from stdin by default
- @Podpath = (); # list of directories containing library pods.
- $Podroot = $Curdir; # filesystem base directory from which all
- # relative paths in $podpath stem.
- $Css = ''; # Cascading style sheet
- $Recurse = 1; # recurse on subdirectories in $podpath.
- $Quiet = 0; # not quiet by default
- $Verbose = 0; # not verbose by default
- $Doindex = 1; # non-zero if we should generate an index
- $Backlink = 0; # no backlinks added by default
- $Header = 0; # produce block header/footer
- $Title = undef; # title to give the pod(s)
+sub new {
+ my $class = shift;
+ return bless {}, $class;
}
sub pod2html {
local(@ARGV) = @_;
local $_;
- init_globals();
- parse_command_line();
+ my $self = Pod::Html->new();
+ $self->init_globals();
- # prevent '//' in urls
- $Htmlroot = "" if $Htmlroot eq "/";
- $Htmldir =~ s#/\z##;
+ my $opts = process_command_line;
+ $self->process_options($opts);
- if ( $Htmlroot eq ''
- && defined( $Htmldir )
- && $Htmldir ne ''
- && substr( $Htmlfile, 0, length( $Htmldir ) ) eq $Htmldir
- ) {
- # Set the 'base' url for this file, so that we can use it
- # as the location from which to calculate relative links
- # to other files. If this is '', then absolute links will
- # be used throughout.
- #$Htmlfileurl = "$Htmldir/" . substr( $Htmlfile, length( $Htmldir ) + 1);
- # Is the above not just "$Htmlfileurl = $Htmlfile"?
- $Htmlfileurl = Pod::Html::_unixify($Htmlfile);
-
- }
+ $self->refine_globals();
# load or generate/cache %Pages
- unless (get_cache($Dircache, \@Podpath, $Podroot, $Recurse)) {
+ unless ($self->get_cache()) {
# generate %Pages
- my $pwd = getcwd();
- chdir($Podroot) ||
- die "$0: error changing to directory $Podroot: $!\n";
-
- # find all pod modules/pages in podpath, store in %Pages
- # - callback used to remove Podroot and extension from each file
- # - laborious to allow '.' in dirnames (e.g., /usr/share/perl/5.14.1)
- Pod::Simple::Search->new->inc(0)->verbose($Verbose)->laborious(1)
- ->callback(\&_save_page)->recurse($Recurse)->survey(@Podpath);
-
- chdir($pwd) || die "$0: error changing to directory $pwd: $!\n";
-
- # cache the directory list for later use
- warn "caching directories for later use\n" if $Verbose;
- open my $cache, '>', $Dircache
- or die "$0: error open $Dircache for writing: $!\n";
-
- print $cache join(":", @Podpath) . "\n$Podroot\n";
- my $_updirs_only = ($Podroot =~ /\.\./) && !($Podroot =~ /[^\.\\\/]/);
- foreach my $key (keys %Pages) {
- if($_updirs_only) {
- my $_dirlevel = $Podroot;
- while($_dirlevel =~ /\.\./) {
- $_dirlevel =~ s/\.\.//;
- # Assume $Pages{$key} has '/' separators (html dir separators).
- $Pages{$key} =~ s/^[\w\s\-\.]+\///;
- }
- }
- print $cache "$key $Pages{$key}\n";
- }
-
- close $cache or die "error closing $Dircache: $!";
+ #%Pages = $self->generate_cache(\%Pages);
+ $self->generate_cache($self->{Pages});
}
-
- my $input;
- unless (@ARGV && $ARGV[0]) {
- if ($Podfile and $Podfile ne '-') {
- $input = $Podfile;
- } else {
- $input = '-'; # XXX: make a test case for this
- }
- } else {
- $Podfile = $ARGV[0];
- $input = *ARGV;
- }
-
- # set options for input parser
- my $parser = Pod::Simple::SimpleTree->new;
- # Normalize whitespace indenting
- $parser->strip_verbatim_indent(\&trim_leading_whitespace);
-
- $parser->codes_in_verbatim(0);
- $parser->accept_targets(qw(html HTML));
- $parser->no_errata_section(!$Poderrors); # note the inverse
-
- warn "Converting input file $Podfile\n" if $Verbose;
- my $podtree = $parser->parse_file($input)->root;
-
- unless(defined $Title) {
- if($podtree->[0] eq "Document" && ref($podtree->[2]) eq "ARRAY" &&
- $podtree->[2]->[0] eq "head1" && @{$podtree->[2]} == 3 &&
- ref($podtree->[2]->[2]) eq "" && $podtree->[2]->[2] eq "NAME" &&
- ref($podtree->[3]) eq "ARRAY" && $podtree->[3]->[0] eq "Para" &&
- @{$podtree->[3]} >= 3 &&
- !(grep { ref($_) ne "" }
- @{$podtree->[3]}[2..$#{$podtree->[3]}]) &&
- (@$podtree == 4 ||
- (ref($podtree->[4]) eq "ARRAY" &&
- $podtree->[4]->[0] eq "head1"))) {
- $Title = join("", @{$podtree->[3]}[2..$#{$podtree->[3]}]);
- }
- }
-
- $Title //= "";
- $Title = html_escape($Title);
+ my $input = $self->identify_input();
+ my $podtree = $self->parse_input_for_podtree($input);
+ $self->set_Title_from_podtree($podtree);
# set options for the HTML generator
- $parser = Pod::Simple::XHTML::LocalPodLinks->new();
+ my $parser = Pod::Simple::XHTML::LocalPodLinks->new();
$parser->codes_in_verbatim(0);
$parser->anchor_items(1); # the old Pod::Html always did
- $parser->backlink($Backlink); # linkify =head1 directives
- $parser->force_title($Title);
- $parser->htmldir($Htmldir);
- $parser->htmlfileurl($Htmlfileurl);
- $parser->htmlroot($Htmlroot);
- $parser->index($Doindex);
- $parser->output_string(\my $output); # written to file later
- $parser->pages(\%Pages);
- $parser->quiet($Quiet);
- $parser->verbose($Verbose);
+ $parser->backlink($self->{Backlink}); # linkify =head1 directives
+ $parser->force_title($self->{Title});
+ $parser->htmldir($self->{Htmldir});
+ $parser->htmlfileurl($self->{Htmlfileurl});
+ $parser->htmlroot($self->{Htmlroot});
+ $parser->index($self->{Doindex});
+ $parser->output_string(\$self->{output}); # written to file later
+ #$parser->pages(\%Pages);
+ $parser->pages($self->{Pages});
+ $parser->quiet($self->{Quiet});
+ $parser->verbose($self->{Verbose});
+
+ $parser = $self->refine_parser($parser);
+ $self->feed_tree_to_parser($parser, $podtree);
+ $self->write_file();
+}
- # We need to add this ourselves because we use our own header, not
- # ::XHTML's header. We need to set $parser->backlink to linkify
- # the =head1 directives
- my $bodyid = $Backlink ? ' id="_podtop_"' : '';
+sub init_globals {
+ my $self = shift;
+ $self->{Cachedir} = "."; # The directory to which directory caches
+ # will be written.
+
+ $self->{Dircache} = "pod2htmd.tmp";
+
+ $self->{Htmlroot} = "/"; # http-server base directory from which all
+ # relative paths in $podpath stem.
+ $self->{Htmldir} = ""; # The directory to which the html pages
+ # will (eventually) be written.
+ $self->{Htmlfile} = ""; # write to stdout by default
+ $self->{Htmlfileurl} = ""; # The url that other files would use to
+ # refer to this file. This is only used
+ # to make relative urls that point to
+ # other files.
+
+ $self->{Poderrors} = 1;
+ $self->{Podfile} = ""; # read from stdin by default
+ $self->{Podpath} = []; # list of directories containing library pods.
+ $self->{Podroot} = $self->{Curdir} = File::Spec->curdir;
+ # filesystem base directory from which all
+ # relative paths in $podpath stem.
+ $self->{Css} = ''; # Cascading style sheet
+ $self->{Recurse} = 1; # recurse on subdirectories in $podpath.
+ $self->{Quiet} = 0; # not quiet by default
+ $self->{Verbose} = 0; # not verbose by default
+ $self->{Doindex} = 1; # non-zero if we should generate an index
+ $self->{Backlink} = 0; # no backlinks added by default
+ $self->{Header} = 0; # produce block header/footer
+ $self->{Title} = undef; # title to give the pod(s)
+ $self->{Saved_Cache_Key} = '';
+ $self->{Pages} = {};
+ return $self;
+}
- my $csslink = '';
- my $tdstyle = ' style="background-color: #cccccc; color: #000"';
+sub process_options {
+ my ($self, $opts) = @_;
+
+ $self->{Podpath} = (defined $opts->{podpath})
+ ? [ split(":", $opts->{podpath}) ]
+ : [];
+
+ $self->{Backlink} = $opts->{backlink} if defined $opts->{backlink};
+ $self->{Cachedir} = unixify($opts->{cachedir}) if defined $opts->{cachedir};
+ $self->{Css} = $opts->{css} if defined $opts->{css};
+ $self->{Header} = $opts->{header} if defined $opts->{header};
+ $self->{Htmldir} = unixify($opts->{htmldir}) if defined $opts->{htmldir};
+ $self->{Htmlroot} = unixify($opts->{htmlroot}) if defined $opts->{htmlroot};
+ $self->{Doindex} = $opts->{index} if defined $opts->{index};
+ $self->{Podfile} = unixify($opts->{infile}) if defined $opts->{infile};
+ $self->{Htmlfile} = unixify($opts->{outfile}) if defined $opts->{outfile};
+ $self->{Poderrors} = $opts->{poderrors} if defined $opts->{poderrors};
+ $self->{Podroot} = unixify($opts->{podroot}) if defined $opts->{podroot};
+ $self->{Quiet} = $opts->{quiet} if defined $opts->{quiet};
+ $self->{Recurse} = $opts->{recurse} if defined $opts->{recurse};
+ $self->{Title} = $opts->{title} if defined $opts->{title};
+ $self->{Verbose} = $opts->{verbose} if defined $opts->{verbose};
- if ($Css) {
- $csslink = qq(\n<link rel="stylesheet" href="$Css" type="text/css" />);
- $csslink =~ s,\\,/,g;
- $csslink =~ s,(/.):,$1|,;
- $tdstyle= '';
+ warn "Flushing directory caches\n"
+ if $opts->{verbose} && defined $opts->{flush};
+ $self->{Dircache} = "$self->{Cachedir}/pod2htmd.tmp";
+ if (defined $opts->{flush}) {
+ 1 while unlink($self->{Dircache});
}
+ return $self;
+}
- # header/footer block
- my $block = $Header ? <<END_OF_BLOCK : '';
-<table border="0" width="100%" cellspacing="0" cellpadding="3">
-<tr><td class="_podblock_"$tdstyle valign="middle">
-<big><strong><span class="_podblock_">&nbsp;$Title</span></strong></big>
-</td></tr>
-</table>
-END_OF_BLOCK
-
- # create own header/footer because of --header
- $parser->html_header(<<"HTMLHEAD");
-<?xml version="1.0" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>$Title</title>$csslink
-<meta http-equiv="content-type" content="text/html; charset=utf-8" />
-<link rev="made" href="mailto:$Config{perladmin}" />
-</head>
-
-<body$bodyid>
-$block
-HTMLHEAD
-
- $parser->html_footer(<<"HTMLFOOT");
-$block
-</body>
-
-</html>
-HTMLFOOT
+sub refine_globals {
+ my $self = shift;
- feed_tree_to_parser($parser, $podtree);
+ # prevent '//' in urls
+ $self->{Htmlroot} = "" if $self->{Htmlroot} eq "/";
+ $self->{Htmldir} =~ s#/\z##;
- # Write output to file
- $Htmlfile = "-" unless $Htmlfile; # stdout
- my $fhout;
- if($Htmlfile and $Htmlfile ne '-') {
- open $fhout, ">", $Htmlfile
- or die "$0: cannot open $Htmlfile file for output: $!\n";
- } else {
- open $fhout, ">-";
+ if ( $self->{Htmlroot} eq ''
+ && defined( $self->{Htmldir} )
+ && $self->{Htmldir} ne ''
+ && substr( $self->{Htmlfile}, 0, length( $self->{Htmldir} ) ) eq $self->{Htmldir}
+ ) {
+ # Set the 'base' url for this file, so that we can use it
+ # as the location from which to calculate relative links
+ # to other files. If this is '', then absolute links will
+ # be used throughout.
+ #$self->{Htmlfileurl} = "$self->{Htmldir}/" . substr( $self->{Htmlfile}, length( $self->{Htmldir} ) + 1);
+ # Is the above not just "$self->{Htmlfileurl} = $self->{Htmlfile}"?
+ $self->{Htmlfileurl} = unixify($self->{Htmlfile});
}
- binmode $fhout, ":utf8";
- print $fhout $output;
- close $fhout or die "Failed to close $Htmlfile: $!";
- chmod 0644, $Htmlfile unless $Htmlfile eq '-';
+ return $self;
}
-##############################################################################
-
-sub usage {
- my $podfile = shift;
- warn "$0: $podfile: @_\n" if @_;
- die <<END_OF_USAGE;
-Usage: $0 --help --htmldir=<name> --htmlroot=<URL>
- --infile=<name> --outfile=<name>
- --podpath=<name>:...:<name> --podroot=<name>
- --cachedir=<name> --flush --recurse --norecurse
- --quiet --noquiet --verbose --noverbose
- --index --noindex --backlink --nobacklink
- --header --noheader --poderrors --nopoderrors
- --css=<URL> --title=<name>
-
- --[no]backlink - turn =head1 directives into links pointing to the top of
- the page (off by default).
- --cachedir - directory for the directory cache files.
- --css - stylesheet URL
- --flush - flushes the directory cache.
- --[no]header - produce block header/footer (default is no headers).
- --help - prints this message.
- --htmldir - directory for resulting HTML files.
- --htmlroot - http-server base directory from which all relative paths
- in podpath stem (default is /).
- --[no]index - generate an index at the top of the resulting html
- (default behaviour).
- --infile - filename for the pod to convert (input taken from stdin
- by default).
- --outfile - filename for the resulting html file (output sent to
- stdout by default).
- --[no]poderrors - include a POD ERRORS section in the output if there were
- any POD errors in the input (default behavior).
- --podpath - colon-separated list of directories containing library
- pods (empty by default).
- --podroot - filesystem base directory from which all relative paths
- in podpath stem (default is .).
- --[no]quiet - suppress some benign warning messages (default is off).
- --[no]recurse - recurse on those subdirectories listed in podpath
- (default behaviour).
- --title - title that will appear in resulting html file.
- --[no]verbose - self-explanatory (off by default).
-
-END_OF_USAGE
+sub generate_cache {
+ my $self = shift;
+ my $pwd = getcwd();
+ chdir($self->{Podroot}) ||
+ die "$0: error changing to directory $self->{Podroot}: $!\n";
+
+ # find all pod modules/pages in podpath, store in %Pages
+ # - inc(0): do not prepend directories in @INC to search list;
+ # limit search to those in @{$self->{Podpath}}
+ # - verbose: report (via 'warn') what search is doing
+ # - laborious: to allow '.' in dirnames (e.g., /usr/share/perl/5.14.1)
+ # - recurse: go into subdirectories
+ # - survey: search for POD files in PodPath
+ my ($name2path, $path2name) =
+ Pod::Simple::Search->new->inc(0)->verbose($self->{Verbose})->laborious(1)
+ ->recurse($self->{Recurse})->survey(@{$self->{Podpath}});
+ # remove Podroot and extension from each file
+ for my $k (keys %{$name2path}) {
+ $self->{Pages}{$k} = _transform($self, $name2path->{$k});
+ }
+ chdir($pwd) || die "$0: error changing to directory $pwd: $!\n";
+
+ # cache the directory list for later use
+ warn "caching directories for later use\n" if $self->{Verbose};
+ open my $cache, '>', $self->{Dircache}
+ or die "$0: error open $self->{Dircache} for writing: $!\n";
+
+ print $cache join(":", @{$self->{Podpath}}) . "\n$self->{Podroot}\n";
+ my $_updirs_only = ($self->{Podroot} =~ /\.\./) && !($self->{Podroot} =~ /[^\.\\\/]/);
+ foreach my $key (keys %{$self->{Pages}}) {
+ if($_updirs_only) {
+ my $_dirlevel = $self->{Podroot};
+ while($_dirlevel =~ /\.\./) {
+ $_dirlevel =~ s/\.\.//;
+ # Assume $Pagesref->{$key} has '/' separators (html dir separators).
+ $self->{Pages}->{$key} =~ s/^[\w\s\-\.]+\///;
+ }
+ }
+ print $cache "$key $self->{Pages}->{$key}\n";
+ }
+ close $cache or die "error closing $self->{Dircache}: $!";
}
-sub parse_command_line {
- my ($opt_backlink,$opt_cachedir,$opt_css,$opt_flush,$opt_header,
- $opt_help,$opt_htmldir,$opt_htmlroot,$opt_index,$opt_infile,
- $opt_outfile,$opt_poderrors,$opt_podpath,$opt_podroot,
- $opt_quiet,$opt_recurse,$opt_title,$opt_verbose);
-
- unshift @ARGV, split ' ', $Config{pod2html} if $Config{pod2html};
- my $result = GetOptions(
- 'backlink!' => \$opt_backlink,
- 'cachedir=s' => \$opt_cachedir,
- 'css=s' => \$opt_css,
- 'flush' => \$opt_flush,
- 'help' => \$opt_help,
- 'header!' => \$opt_header,
- 'htmldir=s' => \$opt_htmldir,
- 'htmlroot=s' => \$opt_htmlroot,
- 'index!' => \$opt_index,
- 'infile=s' => \$opt_infile,
- 'outfile=s' => \$opt_outfile,
- 'poderrors!' => \$opt_poderrors,
- 'podpath=s' => \$opt_podpath,
- 'podroot=s' => \$opt_podroot,
- 'quiet!' => \$opt_quiet,
- 'recurse!' => \$opt_recurse,
- 'title=s' => \$opt_title,
- 'verbose!' => \$opt_verbose,
- );
- usage("-", "invalid parameters") if not $result;
-
- usage("-") if defined $opt_help; # see if the user asked for help
- $opt_help = ""; # just to make -w shut-up.
-
- @Podpath = split(":", $opt_podpath) if defined $opt_podpath;
-
- $Backlink = $opt_backlink if defined $opt_backlink;
- $Cachedir = _unixify($opt_cachedir) if defined $opt_cachedir;
- $Css = $opt_css if defined $opt_css;
- $Header = $opt_header if defined $opt_header;
- $Htmldir = _unixify($opt_htmldir) if defined $opt_htmldir;
- $Htmlroot = _unixify($opt_htmlroot) if defined $opt_htmlroot;
- $Doindex = $opt_index if defined $opt_index;
- $Podfile = _unixify($opt_infile) if defined $opt_infile;
- $Htmlfile = _unixify($opt_outfile) if defined $opt_outfile;
- $Poderrors = $opt_poderrors if defined $opt_poderrors;
- $Podroot = _unixify($opt_podroot) if defined $opt_podroot;
- $Quiet = $opt_quiet if defined $opt_quiet;
- $Recurse = $opt_recurse if defined $opt_recurse;
- $Title = $opt_title if defined $opt_title;
- $Verbose = $opt_verbose if defined $opt_verbose;
+sub _transform {
+ my ($self, $v) = @_;
+ $v = $self->{Podroot} eq File::Spec->curdir
+ ? File::Spec->abs2rel($v)
+ : File::Spec->abs2rel($v,
+ File::Spec->canonpath($self->{Podroot}));
- warn "Flushing directory caches\n"
- if $opt_verbose && defined $opt_flush;
- $Dircache = "$Cachedir/pod2htmd.tmp";
- if (defined $opt_flush) {
- 1 while unlink($Dircache);
- }
-}
+ # Convert path to unix style path
+ $v = unixify($v);
-my $Saved_Cache_Key;
+ my ($file, $dir) = fileparse($v, qr/\.[^.]*/); # strip .ext
+ return $dir.$file;
+}
sub get_cache {
- my($dircache, $podpath, $podroot, $recurse) = @_;
+ my $self = shift;
# A first-level cache:
# Don't bother reading the cache files if they still apply
# and haven't changed since we last read them.
- my $this_cache_key = cache_key($dircache, $podpath, $podroot, $recurse);
- return 1 if $Saved_Cache_Key and $this_cache_key eq $Saved_Cache_Key;
- $Saved_Cache_Key = $this_cache_key;
+ my $this_cache_key = $self->cache_key();
+ return 1 if $self->{Saved_Cache_Key} and $this_cache_key eq $self->{Saved_Cache_Key};
+ $self->{Saved_Cache_Key} = $this_cache_key;
# load the cache of %Pages if possible. $tests will be
# non-zero if successful.
my $tests = 0;
- if (-f $dircache) {
- warn "scanning for directory cache\n" if $Verbose;
- $tests = load_cache($dircache, $podpath, $podroot);
+ if (-f $self->{Dircache}) {
+ warn "scanning for directory cache\n" if $self->{Verbose};
+ $tests = $self->load_cache();
}
return $tests;
}
sub cache_key {
- my($dircache, $podpath, $podroot, $recurse) = @_;
- return join('!',$dircache,$recurse,@$podpath,$podroot,stat($dircache));
+ my $self = shift;
+ return join('!',
+ $self->{Dircache},
+ $self->{Recurse},
+ @{$self->{Podpath}},
+ $self->{Podroot},
+ stat($self->{Dircache}),
+ );
}
#
@@ -611,24 +470,24 @@ sub cache_key {
# cache of %Pages. if so, it loads them and returns a non-zero value.
#
sub load_cache {
- my($dircache, $podpath, $podroot) = @_;
+ my $self = shift;
my $tests = 0;
local $_;
- warn "scanning for directory cache\n" if $Verbose;
- open(my $cachefh, '<', $dircache) ||
- die "$0: error opening $dircache for reading: $!\n";
+ warn "scanning for directory cache\n" if $self->{Verbose};
+ open(my $cachefh, '<', $self->{Dircache}) ||
+ die "$0: error opening $self->{Dircache} for reading: $!\n";
$/ = "\n";
# is it the same podpath?
$_ = <$cachefh>;
chomp($_);
- $tests++ if (join(":", @$podpath) eq $_);
+ $tests++ if (join(":", @{$self->{Podpath}}) eq $_);
# is it the same podroot?
$_ = <$cachefh>;
chomp($_);
- $tests++ if ($podroot eq $_);
+ $tests++ if ($self->{Podroot} eq $_);
# load the cache if its good
if ($tests != 2) {
@@ -636,96 +495,147 @@ sub load_cache {
return 0;
}
- warn "loading directory cache\n" if $Verbose;
+ warn "loading directory cache\n" if $self->{Verbose};
while (<$cachefh>) {
/(.*?) (.*)$/;
- $Pages{$1} = $2;
+ $self->{Pages}->{$1} = $2;
}
close($cachefh);
return 1;
}
-
-#
-# html_escape: make text safe for HTML
-#
-sub html_escape {
- my $rest = $_[0];
- $rest =~ s/&/&amp;/g;
- $rest =~ s/</&lt;/g;
- $rest =~ s/>/&gt;/g;
- $rest =~ s/"/&quot;/g;
- $rest =~ s/([[:^print:]])/sprintf("&#x%x;", ord($1))/aeg;
- return $rest;
+sub identify_input {
+ my $self = shift;
+ my $input;
+ unless (@ARGV && $ARGV[0]) {
+ if ($self->{Podfile} and $self->{Podfile} ne '-') {
+ $input = $self->{Podfile};
+ } else {
+ $input = '-'; # XXX: make a test case for this
+ }
+ } else {
+ $self->{Podfile} = $ARGV[0];
+ $input = *ARGV;
+ }
+ return $input;
}
-#
-# htmlify - converts a pod section specification to a suitable section
-# specification for HTML. We adopt the mechanism used by the formatter
-# that we use.
-#
-sub htmlify {
- my( $heading) = @_;
- return Pod::Simple::XHTML->can("idify")->(undef, $heading, 1);
+sub parse_input_for_podtree {
+ my ($self, $input) = @_;
+ # set options for input parser
+ my $input_parser = Pod::Simple::SimpleTree->new;
+ # Normalize whitespace indenting
+ $input_parser->strip_verbatim_indent(\&trim_leading_whitespace);
+
+ $input_parser->codes_in_verbatim(0);
+ $input_parser->accept_targets(qw(html HTML));
+ $input_parser->no_errata_section(!$self->{Poderrors}); # note the inverse
+
+ warn "Converting input file $self->{Podfile}\n" if $self->{Verbose};
+ my $podtree = $input_parser->parse_file($input)->root;
+ return $podtree;
}
-#
-# similar to htmlify, but turns non-alphanumerics into underscores
-#
-sub anchorify {
- my ($anchor) = @_;
- $anchor = htmlify($anchor);
- $anchor =~ s/\W/_/g;
- return $anchor;
+sub set_Title_from_podtree {
+ my ($self, $podtree) = @_;
+ unless(defined $self->{Title}) {
+ if($podtree->[0] eq "Document" && ref($podtree->[2]) eq "ARRAY" &&
+ $podtree->[2]->[0] eq "head1" && @{$podtree->[2]} == 3 &&
+ ref($podtree->[2]->[2]) eq "" && $podtree->[2]->[2] eq "NAME" &&
+ ref($podtree->[3]) eq "ARRAY" && $podtree->[3]->[0] eq "Para" &&
+ @{$podtree->[3]} >= 3 &&
+ !(grep { ref($_) ne "" }
+ @{$podtree->[3]}[2..$#{$podtree->[3]}]) &&
+ (@$podtree == 4 ||
+ (ref($podtree->[4]) eq "ARRAY" &&
+ $podtree->[4]->[0] eq "head1"))) {
+ $self->{Title} = join("", @{$podtree->[3]}[2..$#{$podtree->[3]}]);
+ }
+ }
+
+ $self->{Title} //= "";
+ $self->{Title} = html_escape($self->{Title});
+ return $self;
}
-#
-# store POD files in %Pages
-#
-sub _save_page {
- my ($modspec, $modname) = @_;
+sub refine_parser {
+ my ($self, $parser) = @_;
+ # We need to add this ourselves because we use our own header, not
+ # ::XHTML's header. We need to set $parser->backlink to linkify
+ # the =head1 directives
+ my $bodyid = $self->{Backlink} ? ' id="_podtop_"' : '';
- # Remove Podroot from path
- $modspec = $Podroot eq File::Spec->curdir
- ? File::Spec->abs2rel($modspec)
- : File::Spec->abs2rel($modspec,
- File::Spec->canonpath($Podroot));
+ my $csslink = '';
+ my $tdstyle = ' style="background-color: #cccccc; color: #000"';
- # Convert path to unix style path
- $modspec = Pod::Html::_unixify($modspec);
+ if ($self->{Css}) {
+ $csslink = qq(\n<link rel="stylesheet" href="$self->{Css}" type="text/css" />);
+ $csslink =~ s,\\,/,g;
+ $csslink =~ s,(/.):,$1|,;
+ $tdstyle= '';
+ }
+
+ # header/footer block
+ my $block = $self->{Header} ? <<END_OF_BLOCK : '';
+<table border="0" width="100%" cellspacing="0" cellpadding="3">
+<tr><td class="_podblock_"$tdstyle valign="middle">
+<big><strong><span class="_podblock_">&nbsp;$self->{Title}</span></strong></big>
+</td></tr>
+</table>
+END_OF_BLOCK
+
+ # create own header/footer because of --header
+ $parser->html_header(<<"HTMLHEAD");
+<?xml version="1.0" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>$self->{Title}</title>$csslink
+<meta http-equiv="content-type" content="text/html; charset=utf-8" />
+<link rev="made" href="mailto:$Config{perladmin}" />
+</head>
+
+<body$bodyid>
+$block
+HTMLHEAD
+
+ $parser->html_footer(<<"HTMLFOOT");
+$block
+</body>
- my ($file, $dir) = fileparse($modspec, qr/\.[^.]*/); # strip .ext
- $Pages{$modname} = $dir.$file;
+</html>
+HTMLFOOT
+ return $parser;
}
-sub _unixify {
- my $full_path = shift;
- return '' unless $full_path;
- return $full_path if $full_path eq '/';
-
- my ($vol, $dirs, $file) = File::Spec->splitpath($full_path);
- my @dirs = $dirs eq File::Spec->curdir()
- ? (File::Spec::Unix->curdir())
- : File::Spec->splitdir($dirs);
- if (defined($vol) && $vol) {
- $vol =~ s/:$// if $^O eq 'VMS';
- $vol = uc $vol if $^O eq 'MSWin32';
-
- if( $dirs[0] ) {
- unshift @dirs, $vol;
- }
- else {
- $dirs[0] = $vol;
- }
+# This sub duplicates the guts of Pod::Simple::FromTree. We could have
+# used that module, except that it would have been a non-core dependency.
+sub feed_tree_to_parser {
+ my($self, $parser, $tree) = @_;
+ if(ref($tree) eq "") {
+ $parser->_handle_text($tree);
+ } elsif(!($tree->[0] eq "X" && $parser->nix_X_codes)) {
+ $parser->_handle_element_start($tree->[0], $tree->[1]);
+ $self->feed_tree_to_parser($parser, $_) foreach @{$tree}[2..$#$tree];
+ $parser->_handle_element_end($tree->[0]);
}
- unshift @dirs, '' if File::Spec->file_name_is_absolute($full_path);
- return $file unless scalar(@dirs);
- $full_path = File::Spec::Unix->catfile(File::Spec::Unix->catdir(@dirs),
- $file);
- $full_path =~ s|^\/|| if $^O eq 'MSWin32'; # C:/foo works, /C:/foo doesn't
- $full_path =~ s/\^\././g if $^O eq 'VMS'; # unescape dots
- return $full_path;
+}
+
+sub write_file {
+ my $self = shift;
+ $self->{Htmlfile} = "-" unless $self->{Htmlfile}; # stdout
+ my $fhout;
+ if($self->{Htmlfile} and $self->{Htmlfile} ne '-') {
+ open $fhout, ">", $self->{Htmlfile}
+ or die "$0: cannot open $self->{Htmlfile} file for output: $!\n";
+ } else {
+ open $fhout, ">-";
+ }
+ binmode $fhout, ":utf8";
+ print $fhout $self->{output};
+ close $fhout or die "Failed to close $self->{Htmlfile}: $!";
+ chmod 0644, $self->{Htmlfile} unless $self->{Htmlfile} eq '-';
}
package Pod::Simple::XHTML::LocalPodLinks;
@@ -795,15 +705,15 @@ sub resolve_pod_page_link {
$path = $self->pages->{$to};
}
- my $url = File::Spec::Unix->catfile(Pod::Html::_unixify($self->htmlroot),
+ my $url = File::Spec::Unix->catfile(Pod::Html::Util::unixify($self->htmlroot),
$path);
if ($self->htmlfileurl ne '') {
# then $self->htmlroot eq '' (by definition of htmlfileurl) so
# $self->htmldir needs to be prepended to link to get the absolute path
# that will be relativized
- $url = Pod::Html::relativize_url(
- File::Spec::Unix->catdir(Pod::Html::_unixify($self->htmldir), $url),
+ $url = Pod::Html::Util::relativize_url(
+ File::Spec::Unix->catdir(Pod::Html::Util::unixify($self->htmldir), $url),
$self->htmlfileurl # already unixified
);
}
@@ -811,56 +721,4 @@ sub resolve_pod_page_link {
return $url . ".html$section";
}
-package Pod::Html;
-
-#
-# relativize_url - convert an absolute URL to one relative to a base URL.
-# Assumes both end in a filename.
-#
-sub relativize_url {
- my ($dest, $source) = @_;
-
- # Remove each file from its path
- my ($dest_volume, $dest_directory, $dest_file) =
- File::Spec::Unix->splitpath( $dest );
- $dest = File::Spec::Unix->catpath( $dest_volume, $dest_directory, '' );
-
- my ($source_volume, $source_directory, $source_file) =
- File::Spec::Unix->splitpath( $source );
- $source = File::Spec::Unix->catpath( $source_volume, $source_directory, '' );
-
- my $rel_path = '';
- if ($dest ne '') {
- $rel_path = File::Spec::Unix->abs2rel( $dest, $source );
- }
-
- if ($rel_path ne '' && substr( $rel_path, -1 ) ne '/') {
- $rel_path .= "/$dest_file";
- } else {
- $rel_path .= "$dest_file";
- }
-
- return $rel_path;
-}
-
-# Remove any level of indentation (spaces or tabs) from each code block consistently
-# Adapted from: https://metacpan.org/source/HAARG/MetaCPAN-Pod-XHTML-0.002001/lib/Pod/Simple/Role/StripVerbatimIndent.pm
-sub trim_leading_whitespace {
- my ($para) = @_;
-
- # Start by converting tabs to spaces
- @$para = Text::Tabs::expand(@$para);
-
- # Find the line with the least amount of indent, as that's our "base"
- my @indent_levels = (sort(map { $_ =~ /^( *)./mg } @$para));
- my $indent = $indent_levels[0] || "";
-
- # Remove the "base" amount of indent from each line
- foreach (@$para) {
- $_ =~ s/^\Q$indent//mg;
- }
-
- return;
-}
-
1;
diff --git a/Master/tlpkg/tlperl/lib/Pod/Html/Util.pm b/Master/tlpkg/tlperl/lib/Pod/Html/Util.pm
new file mode 100755
index 00000000000..88452d4d4e8
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Pod/Html/Util.pm
@@ -0,0 +1,282 @@
+package Pod::Html::Util;
+use strict;
+use Exporter 'import';
+
+our $VERSION = 1.34; # Please keep in synch with lib/Pod/Html.pm
+$VERSION = eval $VERSION;
+our @EXPORT_OK = qw(
+ anchorify
+ html_escape
+ htmlify
+ process_command_line
+ relativize_url
+ trim_leading_whitespace
+ unixify
+ usage
+);
+
+use Config;
+use File::Spec;
+use File::Spec::Unix;
+use Getopt::Long;
+use Pod::Simple::XHTML;
+use Text::Tabs;
+use locale; # make \w work right in non-ASCII lands
+
+=head1 NAME
+
+Pod::Html::Util - helper functions for Pod-Html
+
+=head1 SUBROUTINES
+
+B<Note:> While these functions are importable on request from
+F<Pod::Html::Util>, they are specifically intended for use within (a) the
+F<Pod-Html> distribution (modules and test programs) shipped as part of the
+Perl 5 core and (b) other parts of the core such as the F<installhtml>
+program. These functions may be modified or relocated within the core
+distribution -- or removed entirely therefrom -- as the core's needs evolve.
+Hence, you should not rely on these functions in situations other than those
+just described.
+
+=cut
+
+=head2 C<process_command_line()>
+
+Process command-line switches (options). Returns a reference to a hash. Will
+provide usage message if C<--help> switch is present or if parameters are
+invalid.
+
+Calling this subroutine may modify C<@ARGV>.
+
+=cut
+
+sub process_command_line {
+ my %opts = map { $_ => undef } (qw|
+ backlink cachedir css flush
+ header help htmldir htmlroot
+ index infile outfile poderrors
+ podpath podroot quiet recurse
+ title verbose
+ |);
+ unshift @ARGV, split ' ', $Config{pod2html} if $Config{pod2html};
+ my $result = GetOptions(\%opts,
+ 'backlink!',
+ 'cachedir=s',
+ 'css=s',
+ 'flush',
+ 'help',
+ 'header!',
+ 'htmldir=s',
+ 'htmlroot=s',
+ 'index!',
+ 'infile=s',
+ 'outfile=s',
+ 'poderrors!',
+ 'podpath=s',
+ 'podroot=s',
+ 'quiet!',
+ 'recurse!',
+ 'title=s',
+ 'verbose!',
+ );
+ usage("-", "invalid parameters") if not $result;
+ usage("-") if defined $opts{help}; # see if the user asked for help
+ $opts{help} = ""; # just to make -w shut-up.
+ return \%opts;
+}
+
+=head2 C<usage()>
+
+Display customary Pod::Html usage information on STDERR.
+
+=cut
+
+sub usage {
+ my $podfile = shift;
+ warn "$0: $podfile: @_\n" if @_;
+ die <<END_OF_USAGE;
+Usage: $0 --help --htmldir=<name> --htmlroot=<URL>
+ --infile=<name> --outfile=<name>
+ --podpath=<name>:...:<name> --podroot=<name>
+ --cachedir=<name> --flush --recurse --norecurse
+ --quiet --noquiet --verbose --noverbose
+ --index --noindex --backlink --nobacklink
+ --header --noheader --poderrors --nopoderrors
+ --css=<URL> --title=<name>
+
+ --[no]backlink - turn =head1 directives into links pointing to the top of
+ the page (off by default).
+ --cachedir - directory for the directory cache files.
+ --css - stylesheet URL
+ --flush - flushes the directory cache.
+ --[no]header - produce block header/footer (default is no headers).
+ --help - prints this message.
+ --htmldir - directory for resulting HTML files.
+ --htmlroot - http-server base directory from which all relative paths
+ in podpath stem (default is /).
+ --[no]index - generate an index at the top of the resulting html
+ (default behaviour).
+ --infile - filename for the pod to convert (input taken from stdin
+ by default).
+ --outfile - filename for the resulting html file (output sent to
+ stdout by default).
+ --[no]poderrors - include a POD ERRORS section in the output if there were
+ any POD errors in the input (default behavior).
+ --podpath - colon-separated list of directories containing library
+ pods (empty by default).
+ --podroot - filesystem base directory from which all relative paths
+ in podpath stem (default is .).
+ --[no]quiet - suppress some benign warning messages (default is off).
+ --[no]recurse - recurse on those subdirectories listed in podpath
+ (default behaviour).
+ --title - title that will appear in resulting html file.
+ --[no]verbose - self-explanatory (off by default).
+
+END_OF_USAGE
+
+}
+
+=head2 C<unixify()>
+
+Ensure that F<Pod::Html>'s internals and tests handle paths consistently
+across Unix, Windows and VMS.
+
+=cut
+
+sub unixify {
+ my $full_path = shift;
+ return '' unless $full_path;
+ return $full_path if $full_path eq '/';
+
+ my ($vol, $dirs, $file) = File::Spec->splitpath($full_path);
+ my @dirs = $dirs eq File::Spec->curdir()
+ ? (File::Spec::Unix->curdir())
+ : File::Spec->splitdir($dirs);
+ if (defined($vol) && $vol) {
+ $vol =~ s/:$// if $^O eq 'VMS';
+ $vol = uc $vol if $^O eq 'MSWin32';
+
+ if( $dirs[0] ) {
+ unshift @dirs, $vol;
+ }
+ else {
+ $dirs[0] = $vol;
+ }
+ }
+ unshift @dirs, '' if File::Spec->file_name_is_absolute($full_path);
+ return $file unless scalar(@dirs);
+ $full_path = File::Spec::Unix->catfile(File::Spec::Unix->catdir(@dirs),
+ $file);
+ $full_path =~ s|^\/|| if $^O eq 'MSWin32'; # C:/foo works, /C:/foo doesn't
+ $full_path =~ s/\^\././g if $^O eq 'VMS'; # unescape dots
+ return $full_path;
+}
+
+=head2 C<relativize_url()>
+
+Convert an absolute URL to one relative to a base URL.
+Assumes both end in a filename.
+
+=cut
+
+sub relativize_url {
+ my ($dest, $source) = @_;
+
+ # Remove each file from its path
+ my ($dest_volume, $dest_directory, $dest_file) =
+ File::Spec::Unix->splitpath( $dest );
+ $dest = File::Spec::Unix->catpath( $dest_volume, $dest_directory, '' );
+
+ my ($source_volume, $source_directory, $source_file) =
+ File::Spec::Unix->splitpath( $source );
+ $source = File::Spec::Unix->catpath( $source_volume, $source_directory, '' );
+
+ my $rel_path = '';
+ if ($dest ne '') {
+ $rel_path = File::Spec::Unix->abs2rel( $dest, $source );
+ }
+
+ if ($rel_path ne '' && substr( $rel_path, -1 ) ne '/') {
+ $rel_path .= "/$dest_file";
+ } else {
+ $rel_path .= "$dest_file";
+ }
+
+ return $rel_path;
+}
+
+=head2 C<html_escape()>
+
+Make text safe for HTML.
+
+=cut
+
+sub html_escape {
+ my $rest = $_[0];
+ $rest =~ s/&/&amp;/g;
+ $rest =~ s/</&lt;/g;
+ $rest =~ s/>/&gt;/g;
+ $rest =~ s/"/&quot;/g;
+ $rest =~ s/([[:^print:]])/sprintf("&#x%x;", ord($1))/aeg;
+ return $rest;
+}
+
+=head2 C<htmlify()>
+
+ htmlify($heading);
+
+Converts a pod section specification to a suitable section specification
+for HTML. Note that we keep spaces and special characters except
+C<", ?> (Netscape problem) and the hyphen (writer's problem...).
+
+=cut
+
+sub htmlify {
+ my( $heading) = @_;
+ return Pod::Simple::XHTML->can("idify")->(undef, $heading, 1);
+}
+
+=head2 C<anchorify()>
+
+ anchorify(@heading);
+
+Similar to C<htmlify()>, but turns non-alphanumerics into underscores. Note
+that C<anchorify()> is not exported by default.
+
+=cut
+
+sub anchorify {
+ my ($anchor) = @_;
+ $anchor = htmlify($anchor);
+ $anchor =~ s/\W/_/g;
+ return $anchor;
+}
+
+=head2 C<trim_leading_whitespace()>
+
+Remove any level of indentation (spaces or tabs) from each code block
+consistently. Adapted from:
+https://metacpan.org/source/HAARG/MetaCPAN-Pod-XHTML-0.002001/lib/Pod/Simple/Role/StripVerbatimIndent.pm
+
+=cut
+
+sub trim_leading_whitespace {
+ my ($para) = @_;
+
+ # Start by converting tabs to spaces
+ @$para = Text::Tabs::expand(@$para);
+
+ # Find the line with the least amount of indent, as that's our "base"
+ my @indent_levels = (sort(map { $_ =~ /^( *)./mg } @$para));
+ my $indent = $indent_levels[0] || "";
+
+ # Remove the "base" amount of indent from each line
+ foreach (@$para) {
+ $_ =~ s/^\Q$indent//mg;
+ }
+
+ return;
+}
+
+1;
+
diff --git a/Master/tlpkg/tlperl/lib/Pod/Man.pm b/Master/tlpkg/tlperl/lib/Pod/Man.pm
index d7c029357a2..5ed95bbc90d 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Man.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Man.pm
@@ -14,36 +14,33 @@
package Pod::Man;
-use 5.008;
+use 5.010;
use strict;
use warnings;
-use subs qw(makespace);
-use vars qw(@ISA %ESCAPES $PREAMBLE $VERSION);
-
use Carp qw(carp croak);
use Pod::Simple ();
# Conditionally import Encode and set $HAS_ENCODE if it is available. This is
# required to support building as part of Perl core, since podlators is built
# before Encode is.
-our $HAS_ENCODE;
+my $HAS_ENCODE;
BEGIN {
$HAS_ENCODE = eval { require Encode };
}
-@ISA = qw(Pod::Simple);
-
-$VERSION = '4.14';
-
-# Set the debugging level. If someone has inserted a debug function into this
-# class already, use that. Otherwise, use any Pod::Simple debug function
-# that's defined, and failing that, define a debug level of 10.
-BEGIN {
- my $parent = defined (&Pod::Simple::DEBUG) ? \&Pod::Simple::DEBUG : undef;
- unless (defined &DEBUG) {
- *DEBUG = $parent || sub () { 10 };
- }
+our @ISA = qw(Pod::Simple);
+our $VERSION = '5.01';
+
+# Ensure that $Pod::Simple::nbsp and $Pod::Simple::shy are available. Code
+# taken from Pod::Simple 3.32, but was only added in 3.30.
+my ($NBSP, $SHY);
+if ($Pod::Simple::VERSION ge 3.30) {
+ $NBSP = $Pod::Simple::nbsp;
+ $SHY = $Pod::Simple::shy;
+} else {
+ $NBSP = chr utf8::unicode_to_native(0xA0);
+ $SHY = chr utf8::unicode_to_native(0xAD);
}
# Import the ASCII constant from Pod::Simple. This is true iff we're in an
@@ -51,15 +48,12 @@ BEGIN {
# generally only false for EBCDIC.
BEGIN { *ASCII = \&Pod::Simple::ASCII }
-# Pretty-print a data structure. Only used for debugging.
-BEGIN { *pretty = \&Pod::Simple::pretty }
-
# Formatting instructions for various types of blocks. cleanup makes hyphens
# hard, adds spaces between consecutive underscores, and escapes backslashes.
# convert translates characters into escapes. guesswork means to apply the
-# transformations done by the guesswork sub. literal says to protect literal
-# quotes from being turned into UTF-8 quotes. By default, all transformations
-# are on except literal, but some elements override.
+# transformations done by the guesswork sub (if enabled). literal says to
+# protect literal quotes from being turned into UTF-8 quotes. By default, all
+# transformations are on except literal, but some elements override.
#
# DEFAULT specifies the default settings. All other elements should list only
# those settings that they are overriding. Data indicates =for roff blocks,
@@ -75,6 +69,98 @@ my %FORMATTING = (
X => { cleanup => 0, guesswork => 0 },
);
+# Try to map an encoding as understood by Perl Encode to an encoding
+# understood by groff's preconv. Encode doesn't care about hyphens or
+# capitalization, but preconv does. The key is the canonicalized Encode
+# encoding, and the value is something preconv might understand.
+#
+# FreeBSD mandoc only understands utf-8 and iso-latin-1 as of 2022-09-24.
+# groff preconv prefers iso-8859-1, but also understands iso-latin-1, so
+# convert ISO-8859-1 to iso-latin-1 for FreeBSD.
+my %ENCODINGS = (
+ ascii => 'us-ascii',
+ big5 => 'big5',
+ big5eten => 'big5',
+ cp950 => 'big5',
+ cp1047 => 'cp1047',
+ euccn => 'gb2312',
+ eucjp => 'euc-jp',
+ euckr => 'euc-kr',
+ gb2312 => 'gb2312',
+ gb2312raw => 'gb2312',
+ iso88591 => 'iso-latin-1',
+ iso88592 => 'iso-8859-2',
+ iso88595 => 'iso-8859-5',
+ iso88597 => 'iso-8859-7',
+ iso88599 => 'iso-8859-9',
+ iso885913 => 'iso-8859-13',
+ iso885915 => 'iso-8859-15',
+ koi8r => 'koi8-r',
+ latin1 => 'iso-8859-1',
+ usascii => 'us-ascii',
+ utf8 => 'utf-8',
+ utf16 => 'utf-16',
+ utf16be => 'utf-16be',
+ utf16le => 'utf-16le',
+);
+
+##############################################################################
+# Translation tables
+##############################################################################
+
+# The following table is adapted from Tom Christiansen's pod2man. It is only
+# used with roff output. It assumes that the standard preamble has already
+# been printed, since that's what defines all of the accent marks. We really
+# want to do something better than this when *roff actually supports other
+# character sets itself, since these results are pretty poor.
+#
+# This only works in an ASCII world. What to do in a non-ASCII world is very
+# unclear, so we just output what we get and hope for the best.
+my %ESCAPES;
+@ESCAPES{0xA0 .. 0xFF} = (
+ $NBSP, undef, undef, undef, undef, undef, undef, undef,
+ undef, undef, undef, undef, undef, $SHY, undef, undef,
+
+ undef, undef, undef, undef, undef, undef, undef, undef,
+ undef, undef, undef, undef, undef, undef, undef, undef,
+
+ "A\\*`", "A\\*'", "A\\*^", "A\\*~", "A\\*:", "A\\*o", "\\*(Ae", "C\\*,",
+ "E\\*`", "E\\*'", "E\\*^", "E\\*:", "I\\*`", "I\\*'", "I\\*^", "I\\*:",
+
+ "\\*(D-", "N\\*~", "O\\*`", "O\\*'", "O\\*^", "O\\*~", "O\\*:", undef,
+ "O\\*/", "U\\*`", "U\\*'", "U\\*^", "U\\*:", "Y\\*'", "\\*(Th", "\\*8",
+
+ "a\\*`", "a\\*'", "a\\*^", "a\\*~", "a\\*:", "a\\*o", "\\*(ae", "c\\*,",
+ "e\\*`", "e\\*'", "e\\*^", "e\\*:", "i\\*`", "i\\*'", "i\\*^", "i\\*:",
+
+ "\\*(d-", "n\\*~", "o\\*`", "o\\*'", "o\\*^", "o\\*~", "o\\*:", undef,
+ "o\\*/" , "u\\*`", "u\\*'", "u\\*^", "u\\*:", "y\\*'", "\\*(th", "y\\*:",
+) if ASCII;
+
+##############################################################################
+# Utility functions
+##############################################################################
+
+# Quote an argument to a macro.
+#
+# $arg - Intended argument to the macro
+#
+# Returns: $arg suitably escaped and quoted
+sub _quote_macro_argument {
+ my ($arg) = @_;
+ if (length($arg) > 0 && $arg !~ m{ [\s\"] }xms) {
+ return $arg;
+ }
+ $arg =~ s{ \" }{""}xmsg;
+ return qq("$arg");
+}
+
+# Returns whether the given encoding needs a call to Encode::encode.
+sub _needs_encode {
+ my ($encoding) = @_;
+ return $encoding ne 'roff' && $encoding ne 'groff';
+}
+
##############################################################################
# Object initialization
##############################################################################
@@ -88,9 +174,6 @@ sub new {
my $class = shift;
my $self = $class->SUPER::new;
- # Tell Pod::Simple not to handle S<> by automatically inserting &nbsp;.
- $self->nbsp_for_S (1);
-
# Tell Pod::Simple to keep whitespace whenever possible.
if (my $preserve_whitespace = $self->can ('preserve_whitespace')) {
$self->$preserve_whitespace (1);
@@ -109,63 +192,84 @@ sub new {
# to put them in our object as hash keys and values. This could cause
# problems if we ever clash with Pod::Simple's own internal class
# variables.
- %$self = (%$self, @_);
+ my %opts = @_;
+ my @opts = map { ("opt_$_", $opts{$_}) } keys %opts;
+ %$self = (%$self, @opts);
+
+ # Pod::Simple uses encoding internally, so we need to store it as
+ # ENCODING. Set the default to UTF-8 if not specified.
+ #
+ # Degrade to the old roff encoding if Encode is not available.
+ #
+ # Suppress the warning message when PERL_CORE is set, indicating this is
+ # running as part of the core Perl build. Perl builds podlators (and all
+ # pure Perl modules) before Encode and other XS modules, so Encode won't
+ # yet be available. Rely on the Perl core build to generate man pages
+ # later, after all the modules are available, so that UTF-8 handling will
+ # be correct.
+ my %options = @_;
+ if (defined $self->{opt_encoding}) {
+ $$self{ENCODING} = $self->{opt_encoding};
+ } elsif (ASCII) {
+ $$self{ENCODING} = 'UTF-8';
+ } else {
+ $$self{ENCODING} = 'groff';
+ }
+ if (_needs_encode($$self{ENCODING}) && !$HAS_ENCODE) {
+ if (!$ENV{PERL_CORE}) {
+ carp ('encoding requested but Encode module not available,'
+ . ' falling back to groff escapes');
+ }
+ $$self{ENCODING} = 'groff';
+ }
# Send errors to stderr if requested.
- if ($$self{stderr} and not $$self{errors}) {
- $$self{errors} = 'stderr';
+ if ($self->{opt_stderr} and not $self->{opt_errors}) {
+ $self->{opt_errors} = 'stderr';
}
- delete $$self{stderr};
+ delete $self->{opt_stderr};
# Validate the errors parameter and act on it.
- if (not defined $$self{errors}) {
- $$self{errors} = 'pod';
- }
- if ($$self{errors} eq 'stderr' || $$self{errors} eq 'die') {
+ $self->{opt_errors} //= 'pod';
+ if ($self->{opt_errors} eq 'stderr' || $self->{opt_errors} eq 'die') {
$self->no_errata_section (1);
$self->complain_stderr (1);
- if ($$self{errors} eq 'die') {
- $$self{complain_die} = 1;
+ if ($self->{opt_errors} eq 'die') {
+ $self->{complain_die} = 1;
}
- } elsif ($$self{errors} eq 'pod') {
+ } elsif ($self->{opt_errors} eq 'pod') {
$self->no_errata_section (0);
$self->complain_stderr (0);
- } elsif ($$self{errors} eq 'none') {
+ } elsif ($self->{opt_errors} eq 'none') {
$self->no_errata_section (1);
$self->no_whining (1);
} else {
- croak (qq(Invalid errors setting: "$$self{errors}"));
- }
- delete $$self{errors};
-
- # Degrade back to non-utf8 if Encode is not available.
- #
- # Suppress the warning message when PERL_CORE is set, indicating this is
- # running as part of the core Perl build. Perl builds podlators (and all
- # pure Perl modules) before Encode and other XS modules, so Encode won't
- # yet be available. Rely on the Perl core build to generate man pages
- # later, after all the modules are available, so that UTF-8 handling will
- # be correct.
- if ($$self{utf8} and !$HAS_ENCODE) {
- if (!$ENV{PERL_CORE}) {
- carp ('utf8 mode requested but Encode module not available,'
- . ' falling back to non-utf8');
- }
- delete $$self{utf8};
+ croak (qq(Invalid errors setting: "$self->{opt_errors}"));
}
+ delete $self->{opt_errors};
# Initialize various other internal constants based on our arguments.
$self->init_fonts;
$self->init_quotes;
$self->init_page;
- # For right now, default to turning on all of the magic.
- $$self{MAGIC_CPP} = 1;
- $$self{MAGIC_EMDASH} = 1;
- $$self{MAGIC_FUNC} = 1;
- $$self{MAGIC_MANREF} = 1;
- $$self{MAGIC_SMALLCAPS} = 1;
- $$self{MAGIC_VARS} = 1;
+ # Configure guesswork based on options.
+ my $guesswork = $self->{opt_guesswork} || q{};
+ my %guesswork = map { $_ => 1 } split(m{,}xms, $guesswork);
+ if (!%guesswork || $guesswork{all}) {
+ #<<<
+ $$self{GUESSWORK} = {
+ functions => 1,
+ manref => 1,
+ quoting => 1,
+ variables => 1,
+ };
+ #>>>
+ } elsif ($guesswork{none}) {
+ $$self{GUESSWORK} = {};
+ } else {
+ $$self{GUESSWORK} = {%guesswork};
+ }
return $self;
}
@@ -182,29 +286,41 @@ sub init_fonts {
# Figure out the fixed-width font. If user-supplied, make sure that they
# are the right length.
- for (qw/fixed fixedbold fixeditalic fixedbolditalic/) {
- my $font = $$self{$_};
- if (defined ($font) && (length ($font) < 1 || length ($font) > 2)) {
- croak qq(roff font should be 1 or 2 chars, not "$font");
+ for (qw(fixed fixedbold fixeditalic fixedbolditalic)) {
+ my $font = $self->{"opt_$_"};
+ if (defined($font) && (length($font) < 1 || length($font) > 2)) {
+ croak(qq(roff font should be 1 or 2 chars, not "$font"));
}
}
# Set the default fonts. We can't be sure portably across different
# implementations what fixed bold-italic may be called (if it's even
# available), so default to just bold.
- $$self{fixed} ||= 'CW';
- $$self{fixedbold} ||= 'CB';
- $$self{fixeditalic} ||= 'CI';
- $$self{fixedbolditalic} ||= 'CB';
+ #<<<
+ $self->{opt_fixed} ||= 'CW';
+ $self->{opt_fixedbold} ||= 'CB';
+ $self->{opt_fixeditalic} ||= 'CI';
+ $self->{opt_fixedbolditalic} ||= 'CB';
+ #>>>
# Set up a table of font escapes. First number is fixed-width, second is
# bold, third is italic.
- $$self{FONTS} = { '000' => '\fR', '001' => '\fI',
- '010' => '\fB', '011' => '\f(BI',
- '100' => toescape ($$self{fixed}),
- '101' => toescape ($$self{fixeditalic}),
- '110' => toescape ($$self{fixedbold}),
- '111' => toescape ($$self{fixedbolditalic}) };
+ $self->{FONTS} = {
+ '000' => '\fR',
+ '001' => '\fI',
+ '010' => '\fB',
+ '011' => '\f(BI',
+ '100' => toescape($self->{opt_fixed}),
+ '101' => toescape($self->{opt_fixeditalic}),
+ '110' => toescape($self->{opt_fixedbold}),
+ '111' => toescape($self->{opt_fixedbolditalic}),
+ };
+
+ # Precalculate a regex that matches all fixed-width fonts, which will be
+ # used later by switchquotes.
+ my @fixedpat = map { quotemeta($self->{FONTS}{$_}) } qw(100 101 110 111);
+ my $fixedpat = join('|', @fixedpat);
+ $self->{FIXEDPAT} = qr{ $fixedpat }xms;
}
# Initialize the quotes that we'll be using for C<> text. This requires some
@@ -215,32 +331,28 @@ sub init_quotes {
my ($self) = (@_);
# Handle the quotes option first, which sets both quotes at once.
- $$self{quotes} ||= '"';
- if ($$self{quotes} eq 'none') {
+ $self->{opt_quotes} ||= '"';
+ if ($self->{opt_quotes} eq 'none') {
$$self{LQUOTE} = $$self{RQUOTE} = '';
- } elsif (length ($$self{quotes}) == 1) {
- $$self{LQUOTE} = $$self{RQUOTE} = $$self{quotes};
- } elsif (length ($$self{quotes}) % 2 == 0) {
- my $length = length ($$self{quotes}) / 2;
- $$self{LQUOTE} = substr ($$self{quotes}, 0, $length);
- $$self{RQUOTE} = substr ($$self{quotes}, $length);
+ } elsif (length ($self->{opt_quotes}) == 1) {
+ $$self{LQUOTE} = $$self{RQUOTE} = $self->{opt_quotes};
+ } elsif (length ($self->{opt_quotes}) % 2 == 0) {
+ my $length = length ($self->{opt_quotes}) / 2;
+ $$self{LQUOTE} = substr ($self->{opt_quotes}, 0, $length);
+ $$self{RQUOTE} = substr ($self->{opt_quotes}, $length);
} else {
- croak(qq(Invalid quote specification "$$self{quotes}"))
+ croak(qq(Invalid quote specification "$self->{opt_quotes}"))
}
# Now handle the lquote and rquote options.
- if (defined $$self{lquote}) {
- $$self{LQUOTE} = $$self{lquote} eq 'none' ? q{} : $$self{lquote};
+ if (defined($self->{opt_lquote})) {
+ $self->{opt_lquote} = q{} if $self->{opt_lquote} eq 'none';
+ $$self{LQUOTE} = $self->{opt_lquote};
}
- if (defined $$self{rquote}) {
- $$self{RQUOTE} = $$self{rquote} eq 'none' ? q{} : $$self{rquote};
+ if (defined $self->{opt_rquote}) {
+ $self->{opt_rquote} = q{} if $self->{opt_rquote} eq 'none';
+ $$self{RQUOTE} = $self->{opt_rquote};
}
-
- # Double the first quote; note that this should not be s///g as two double
- # quotes is represented in *roff as three double quotes, not four. Weird,
- # I know.
- $$self{LQUOTE} =~ s/\"/\"\"/;
- $$self{RQUOTE} =~ s/\"/\"\"/;
}
# Initialize the page title information and indentation from our arguments.
@@ -254,17 +366,9 @@ sub init_page {
# Set the defaults for page titles and indentation if the user didn't
# override anything.
- $$self{center} = 'User Contributed Perl Documentation'
- unless defined $$self{center};
- $$self{release} = 'perl v' . $version
- unless defined $$self{release};
- $$self{indent} = 4
- unless defined $$self{indent};
-
- # Double quotes in things that will be quoted.
- for (qw/center release/) {
- $$self{$_} =~ s/\"/\"\"/g if $$self{$_};
- }
+ $self->{opt_center} //= 'User Contributed Perl Documentation';
+ $self->{opt_release} //= 'perl v' . $version;
+ $self->{opt_indent} //= 4;
}
##############################################################################
@@ -289,7 +393,6 @@ sub init_page {
# according to the current formatting instructions as we do.
sub _handle_text {
my ($self, $text) = @_;
- DEBUG > 3 and print "== $text\n";
my $tag = $$self{PENDING}[-1];
$$tag[2] .= $self->format_text ($$tag[1], $text);
}
@@ -308,7 +411,6 @@ sub method_for_element {
# text and nested elements. Otherwise, if start_element is defined, call it.
sub _handle_element_start {
my ($self, $element, $attrs) = @_;
- DEBUG > 3 and print "++ $element (<", join ('> <', %$attrs), ">)\n";
my $method = $self->method_for_element ($element);
# If we have a command handler, we need to accumulate the contents of the
@@ -316,7 +418,6 @@ sub _handle_element_start {
# <Para> and the formatting codes so that IN_NAME isn't still set for the
# first heading after the NAME heading.
if ($self->can ("cmd_$method")) {
- DEBUG > 2 and print "<$element> starts saving a tag\n";
$$self{IN_NAME} = 0 if ($element ne 'Para' && length ($element) > 1);
# How we're going to format embedded text blocks depends on the tag
@@ -328,11 +429,8 @@ sub _handle_element_start {
%{ $FORMATTING{$element} || {} },
};
push (@{ $$self{PENDING} }, [ $attrs, $formatting, '' ]);
- DEBUG > 4 and print "Pending: [", pretty ($$self{PENDING}), "]\n";
} elsif (my $start_method = $self->can ("start_$method")) {
$self->$start_method ($attrs, '');
- } else {
- DEBUG > 2 and print "No $method start method, skipping\n";
}
}
@@ -341,16 +439,12 @@ sub _handle_element_start {
# an end_ method for the element, call that.
sub _handle_element_end {
my ($self, $element) = @_;
- DEBUG > 3 and print "-- $element\n";
my $method = $self->method_for_element ($element);
# If we have a command handler, pull off the pending text and pass it to
# the handler along with the saved attribute hash.
if (my $cmd_method = $self->can ("cmd_$method")) {
- DEBUG > 2 and print "</$element> stops saving a tag\n";
my $tag = pop @{ $$self{PENDING} };
- DEBUG > 4 and print "Popped: [", pretty ($tag), "]\n";
- DEBUG > 4 and print "Pending: [", pretty ($$self{PENDING}), "]\n";
my $text = $self->$cmd_method ($$tag[0], $$tag[2]);
if (defined $text) {
if (@{ $$self{PENDING} } > 1) {
@@ -361,8 +455,6 @@ sub _handle_element_end {
}
} elsif (my $end_method = $self->can ("end_$method")) {
$self->$end_method ();
- } else {
- DEBUG > 2 and print "No $method end method, skipping\n";
}
}
@@ -381,31 +473,40 @@ sub format_text {
my $literal = $$options{literal};
# Cleanup just tidies up a few things, telling *roff that the hyphens are
- # hard, putting a bit of space between consecutive underscores, and
- # escaping backslashes. Be careful not to mangle our character
- # translations by doing this before processing character translation.
+ # hard, putting a bit of space between consecutive underscores, escaping
+ # backslashes, and converting zero-width spaces to zero-width break
+ # points.
if ($cleanup) {
$text =~ s/\\/\\e/g;
$text =~ s/-/\\-/g;
$text =~ s/_(?=_)/_\\|/g;
+ $text =~ s/\x{200B}/\\:/g;
}
- # Normally we do character translation, but we won't even do that in
- # <Data> blocks or if UTF-8 output is desired.
- if ($convert && !$$self{utf8} && ASCII) {
- $text =~ s/([^\x00-\x7F])/$ESCAPES{ord ($1)} || "X"/eg;
+ # Except in <Data> blocks, if groff or roff encoding is requested and
+ # we're in an ASCII environment, do the encoding. For EBCDIC, we just
+ # write what we get and hope for the best. Leave non-breaking spaces and
+ # soft hyphens alone; we'll convert those at the last minute.
+ if ($convert) {
+ if (ASCII) {
+ if ($$self{ENCODING} eq 'groff') {
+ $text =~ s{ ([^\x00-\x7F\xA0\xAD]) }{
+ '\\[u' . sprintf('%04X', ord($1)) . ']'
+ }xmsge;
+ } elsif ($$self{ENCODING} eq 'roff') {
+ $text =~ s/([^\x00-\x7F\xA0\xAD])/$ESCAPES{ord ($1)} || "X"/eg;
+ }
+ }
}
# Ensure that *roff doesn't convert literal quotes to UTF-8 single quotes,
- # but don't mess up our accept escapes.
+ # but don't mess up accent escapes.
if ($literal) {
$text =~ s/(?<!\\\*)\'/\\*\(Aq/g;
$text =~ s/(?<!\\\*)\`/\\\`/g;
}
- # If guesswork is asked for, do that. This involves more substantial
- # formatting based on various heuristics that may only be appropriate for
- # particular documents.
+ # If guesswork is is viable for this block, do that.
if ($guesswork) {
$text = $self->guesswork ($text);
}
@@ -420,31 +521,45 @@ sub quote_literal {
my $self = shift;
local $_ = shift;
+ # If in NAME section, just return an ASCII quoted string to avoid
+ # confusing tools like whatis.
+ if ($$self{IN_NAME}) {
+ return $self->{LQUOTE} . $_ . $self->{RQUOTE};
+ }
+
# A regex that matches the portion of a variable reference that's the
# array or hash index, separated out just because we want to use it in
# several places in the following regex.
- my $index = '(?: \[.*\] | \{.*\} )?';
-
- # If in NAME section, just return an ASCII quoted string to avoid
- # confusing tools like whatis.
- return qq{"$_"} if $$self{IN_NAME};
+ my $index = '(?: \[[^]]+\] | \{[^}]+\} )?';
# Check for things that we don't want to quote, and if we find any of
# them, return the string with just a font change and no quoting.
+ #
+ # Traditionally, Pod::Man has not quoted Perl variables, functions,
+ # numbers, or hex constants, but this is not always desirable. Make this
+ # optional on the quoting guesswork flag.
+ my $extra = qr{(?!)}xms; # never matches
+ if ($$self{GUESSWORK}{quoting}) {
+ $extra = qr{
+ \$+ [\#^]? \S $index # special ($^F, $")
+ | [\$\@%&*]+ \#? [:\'\w]+ $index # plain var or func
+ | [\$\@%&*]* [:\'\w]+
+ (?: \\-> )? \(\s*[^\s,\)]*\s*\) # 0/1-arg func call
+ | (?: [+] || \\- )? ( \d[\d.]* | \.\d+ )
+ (?: [eE] (?: [+] || \\- )? \d+ )? # a number
+ | 0x [a-fA-F\d]+ # a hex constant
+ }xms;
+ }
m{
^\s*
(?:
- ( [\'\`\"] ) .* \1 # already quoted
- | \\\*\(Aq .* \\\*\(Aq # quoted and escaped
- | \\?\` .* ( \' | \\\*\(Aq ) # `quoted'
- | \$+ [\#^]? \S $index # special ($^Foo, $")
- | [\$\@%&*]+ \#? [:\'\w]+ $index # plain var or func
- | [\$\@%&*]* [:\'\w]+ (?: -> )? \(\s*[^\s,]\s*\) # 0/1-arg func call
- | [-+]? ( \d[\d.]* | \.\d+ ) (?: [eE][-+]?\d+ )? # a number
- | 0x [a-fA-F\d]+ # a hex constant
+ ( [\'\"] ) .* \1 # already quoted
+ | \\\*\(Aq .* \\\*\(Aq # quoted and escaped
+ | \\?\` .* ( \' | \\?\` | \\\*\(Aq ) # `quoted' or `quoted`
+ | $extra
)
\s*\z
- }xso and return '\f(FS' . $_ . '\f(FE';
+ }xms and return '\f(FS' . $_ . '\f(FE';
# If we didn't return, go ahead and quote the text.
return '\f(FS\*(C`' . $_ . "\\*(C'\\f(FE";
@@ -453,10 +568,8 @@ sub quote_literal {
# Takes a text block to perform guesswork on. Returns the text block with
# formatting codes added. This is the code that marks up various Perl
# constructs and things commonly used in man pages without requiring the user
-# to add any explicit markup, and is applied to all non-literal text. We're
-# guaranteed that the text we're applying guesswork to does not contain any
-# *roff formatting codes. Note that the inserted font sequences must be
-# treated later with mapfonts or textmapfonts.
+# to add any explicit markup, and is applied to all non-literal text. Note
+# that the inserted font sequences must be treated later with mapfonts.
#
# This method is very fragile, both in the regular expressions it uses and in
# the ordering of those modifications. Care and testing is required when
@@ -464,7 +577,6 @@ sub quote_literal {
sub guesswork {
my $self = shift;
local $_ = shift;
- DEBUG > 5 and print " Guesswork called on [$_]\n";
# By the time we reach this point, all hyphens will be escaped by adding a
# backslash. We want to undo that escaping if they're part of regular
@@ -475,9 +587,9 @@ sub guesswork {
# Note that this is not user-controllable; we pretty much have to do this
# transformation or *roff will mangle the output in unacceptable ways.
s{
- ( (?:\G|^|\s) [\(\"]* [a-zA-Z] ) ( \\- )?
+ ( (?:\G|^|\s|$NBSP) [\(\"]* [a-zA-Z] ) ( \\- )?
( (?: [a-zA-Z\']+ \\-)+ )
- ( [a-zA-Z\']+ ) (?= [\)\".?!,;:]* (?:\s|\Z|\\\ ) )
+ ( [a-zA-Z\']+ ) (?= [\)\".?!,;:]* (?:\s|$NBSP|\Z|\\\ ) )
\b
} {
my ($prefix, $hyphen, $main, $suffix) = ($1, $2, $3, $4);
@@ -486,52 +598,17 @@ sub guesswork {
$prefix . $hyphen . $main . $suffix;
}egx;
- # Translate "--" into a real em-dash if it's used like one. This means
- # that it's either surrounded by whitespace, it follows a regular word, or
- # it occurs between two regular words.
- if ($$self{MAGIC_EMDASH}) {
- s{ (\s) \\-\\- (\s) } { $1 . '\*(--' . $2 }egx;
- s{ (\b[a-zA-Z]+) \\-\\- (\s|\Z|[a-zA-Z]+\b) } { $1 . '\*(--' . $2 }egx;
- }
-
- # Make words in all-caps a little bit smaller; they look better that way.
- # However, we don't want to change Perl code (like @ARGV), nor do we want
- # to fix the MIME in MIME-Version since it looks weird with the
- # full-height V.
- #
- # We change only a string of all caps (2) either at the beginning of the
- # line or following regular punctuation (like quotes) or whitespace (1),
- # and followed by either similar punctuation, an em-dash, or the end of
- # the line (3).
- #
- # Allow the text we're changing to small caps to include double quotes,
- # commas, newlines, and periods as long as it doesn't otherwise interrupt
- # the string of small caps and still fits the criteria. This lets us turn
- # entire warranty disclaimers in man page output into small caps.
- if ($$self{MAGIC_SMALLCAPS}) {
- s{
- ( ^ | [\s\(\"\'\`\[\{<>] | \\[ ] ) # (1)
- ( [A-Z] [A-Z] (?: \s? [/A-Z+:\d_\$&] | \\- | \s? [.,\"] )* ) # (2)
- (?= [\s>\}\]\(\)\'\".?!,;] | \\*\(-- | \\[ ] | $ ) # (3)
- } {
- $1 . '\s-1' . $2 . '\s0'
- }egx;
- }
-
- # Note that from this point forward, we have to adjust for \s-1 and \s-0
- # strings inserted around things that we've made small-caps if later
- # transforms should work on those strings.
-
# Embolden functions in the form func(), including functions that are in
- # all capitals, but don't embolden if there's anything between the parens.
+ # all capitals, but don't embolden if there's anything inside the parens.
# The function must start with an alphabetic character or underscore and
# then consist of word characters or colons.
- if ($$self{MAGIC_FUNC}) {
+ if ($$self{GUESSWORK}{functions}) {
s{
- ( \b | \\s-1 )
- ( [A-Za-z_] ([:\w] | \\s-?[01])+ \(\) )
+ (?<! \\ )
+ \b
+ ( [A-Za-z_] [:\w]+ \(\) )
} {
- $1 . '\f(BS' . $2 . '\f(BE'
+ '\f(BS' . $1 . '\f(BE'
}egx;
}
@@ -542,21 +619,21 @@ sub guesswork {
# configuration file man pages), or colons, and n is a single digit,
# optionally followed by some number of lowercase letters. Note that this
# does not recognize man page references like perl(l) or socket(3SOCKET).
- if ($$self{MAGIC_MANREF}) {
+ if ($$self{GUESSWORK}{manref}) {
s{
- ( \b | \\s-1 )
- (?<! \\ ) # rule out \s0(1)
- ( [A-Za-z_] (?:[.:\w] | \\- | \\s-?[01])+ )
+ \b
+ (?<! \\ ) # rule out \e0(1)
+ ( [A-Za-z_] (?:[.:\w] | \\-)+ )
( \( \d [a-z]* \) )
} {
- $1 . '\f(BS' . $2 . '\f(BE\|' . $3
+ '\f(BS' . $1 . '\f(BE\|' . $2
}egx;
}
# Convert simple Perl variable references to a fixed-width font. Be
# careful not to convert functions, though; there are too many subtleties
# with them to want to perform this transformation.
- if ($$self{MAGIC_VARS}) {
+ if ($$self{GUESSWORK}{variables}) {
s{
( ^ | \s+ )
( [\$\@%] [\w:]+ )
@@ -566,19 +643,7 @@ sub guesswork {
}egx;
}
- # Fix up double quotes. Unfortunately, we miss this transformation if the
- # quoted text contains any code with formatting codes and there's not much
- # we can effectively do about that, which makes it somewhat unclear if
- # this is really a good idea.
- s{ \" ([^\"]+) \" } { '\*(L"' . $1 . '\*(R"' }egx;
-
- # Make C++ into \*(C+, which is a squinched version.
- if ($$self{MAGIC_CPP}) {
- s{ \b C\+\+ } {\\*\(C+}gx;
- }
-
# Done.
- DEBUG > 5 and print " Guesswork returning [$_]\n";
return $_;
}
@@ -592,111 +657,106 @@ sub guesswork {
# the right start and end codes.
#
# We add this level of complexity because the old pod2man didn't get code like
-# B<someI<thing> else> right; after I<> it switched back to normal text rather
-# than bold. We take care of this by using variables that state whether bold,
-# italic, or fixed are turned on as a combined pointer to our current font
-# sequence, and set each to the number of current nestings of start tags for
-# that font.
+# B<< someI<thing> else>> right. After I<> it switched back to normal text
+# rather than bold. We take care of this by using variables that state
+# whether bold, italic, or fixed are turned on as a combined pointer to our
+# current font sequence, and set each to the number of current nestings of
+# start tags for that font.
+#
+# The base font must be either \fP or \fR. \fP changes to the previous font,
+# but only one previous font is kept. Unfortunately, there is a bug in
+# Solaris 2.6 nroff (not present in GNU groff) where the sequence
+# \fB\fP\f(CW\fP leaves the font set to B rather than R, presumably because
+# \f(CW doesn't actually do a font change. Because of this, we prefer to use
+# \fR where possible.
+#
+# Unfortunately, this isn't possible for arguments to heading macros, since
+# there we don't know what the outside level font is. In that case, arrange
+# things so that the outside font is always the "previous" font and end with
+# \fP instead of \fR. Idea from Zack Weinberg.
#
-# \fP changes to the previous font, but only one previous font is kept. We
-# don't know what the outside level font is; normally it's R, but if we're
-# inside a heading it could be something else. So arrange things so that the
-# outside font is always the "previous" font and end with \fP instead of \fR.
-# Idea from Zack Weinberg.
+# This function used to be much simpler outside of macro arguments because it
+# went directly from \fB to \f(CW and relied on \f(CW clearing bold since it
+# wasn't \f(CB. Unfortunately, while this works for mandoc, this is not how
+# groff works; \fBfoo\f(CWbar still prints bar in bold. Therefore, we force
+# the font back to the base font before each font change.
sub mapfonts {
- my ($self, $text) = @_;
+ my ($self, $text, $base) = @_;
+
+ # The closure used to process each font escape, expected to be called from
+ # the right-hand side of an s/// expression.
my ($fixed, $bold, $italic) = (0, 0, 0);
my %magic = (F => \$fixed, B => \$bold, I => \$italic);
my $last = '\fR';
- $text =~ s<
- \\f\((.)(.)
- > <
- my $sequence = '';
- my $f;
- if ($last ne '\fR') { $sequence = '\fP' }
- ${ $magic{$1} } += ($2 eq 'S') ? 1 : -1;
- $f = $$self{FONTS}{ ($fixed && 1) . ($bold && 1) . ($italic && 1) };
- if ($f eq $last) {
- '';
- } else {
- if ($f ne '\fR') { $sequence .= $f }
- $last = $f;
- $sequence;
+ my $process = sub {
+ my ($style, $start_stop) = @_;
+ my $sequence = ($last ne '\fR') ? $base : q{};
+ ${ $magic{$style} } += ($start_stop eq 'S') ? 1 : -1;
+ my $f = $self->{FONTS}{($fixed && 1) . ($bold && 1) . ($italic && 1)};
+ return q{} if ($f eq $last);
+ if ($f ne '\fR') {
+ $sequence .= $f;
}
- >gxe;
- return $text;
-}
+ $last = $f;
+ return $sequence;
+ };
+
+ # Now, do the actual work.
+ $text =~ s{ \\f\((.)(.) }{$process->($1, $2)}xmsge;
+
+ # We can do a bit of cleanup by collapsing sequences like \fR\fB\fR\fI
+ # into just \fI.
+ $text =~ s{ (?: \\fR )? (?: \\f (.|\(..) \\fR )+ }{\\fR}xms;
-# Unfortunately, there is a bug in Solaris 2.6 nroff (not present in GNU
-# groff) where the sequence \fB\fP\f(CW\fP leaves the font set to B rather
-# than R, presumably because \f(CW doesn't actually do a font change. To work
-# around this, use a separate textmapfonts for text blocks where the default
-# font is always R and only use the smart mapfonts for headings.
-sub textmapfonts {
- my ($self, $text) = @_;
- my ($fixed, $bold, $italic) = (0, 0, 0);
- my %magic = (F => \$fixed, B => \$bold, I => \$italic);
- $text =~ s<
- \\f\((.)(.)
- > <
- ${ $magic{$1} } += ($2 eq 'S') ? 1 : -1;
- $$self{FONTS}{ ($fixed && 1) . ($bold && 1) . ($italic && 1) };
- >gxe;
return $text;
}
# Given a command and a single argument that may or may not contain double
-# quotes, handle double-quote formatting for it. If there are no double
-# quotes, just return the command followed by the argument in double quotes.
-# If there are double quotes, use an if statement to test for nroff, and for
-# nroff output the command followed by the argument in double quotes with
-# embedded double quotes doubled. For other formatters, remap paired double
-# quotes to LQUOTE and RQUOTE.
+# quotes and fixed-width text, handle double-quote formatting for it. If
+# there is no fixed-width text, just return the command followed by the
+# argument with proper quoting. If there is fixed-width text, work around a
+# Solaris nroff bug with fixed-width fonts by converting fixed-width to
+# regular fonts (nroff sees no difference).
sub switchquotes {
my ($self, $command, $text, $extra) = @_;
- $text =~ s/\\\*\([LR]\"/\"/g;
-
- # We also have to deal with \*C` and \*C', which are used to add the
- # quotes around C<> text, since they may expand to " and if they do this
- # confuses the .SH macros and the like no end. Expand them ourselves.
- # Also separate troff from nroff if there are any fixed-width fonts in use
- # to work around problems with Solaris nroff.
- my $c_is_quote = ($$self{LQUOTE} =~ /\"/) || ($$self{RQUOTE} =~ /\"/);
- my $fixedpat = join '|', @{ $$self{FONTS} }{'100', '101', '110', '111'};
- $fixedpat =~ s/\\/\\\\/g;
- $fixedpat =~ s/\(/\\\(/g;
- if ($text =~ m/\"/ || $text =~ m/$fixedpat/) {
- $text =~ s/\"/\"\"/g;
+
+ # Separate troff from nroff if there are any fixed-width fonts in use to
+ # work around problems with Solaris nroff.
+ if ($text =~ $self->{FIXEDPAT}) {
my $nroff = $text;
my $troff = $text;
- $troff =~ s/\"\"([^\"]*)\"\"/\`\`$1\'\'/g;
- if ($c_is_quote and $text =~ m/\\\*\(C[\'\`]/) {
- $nroff =~ s/\\\*\(C\`/$$self{LQUOTE}/g;
- $nroff =~ s/\\\*\(C\'/$$self{RQUOTE}/g;
- $troff =~ s/\\\*\(C[\'\`]//g;
- }
- $nroff = qq("$nroff") . ($extra ? " $extra" : '');
- $troff = qq("$troff") . ($extra ? " $extra" : '');
# Work around the Solaris nroff bug where \f(CW\fP leaves the font set
# to Roman rather than the actual previous font when used in headings.
# troff output may still be broken, but at least we can fix nroff by
# just switching the font changes to the non-fixed versions.
- my $font_end = "(?:\\f[PR]|\Q$$self{FONTS}{100}\E)";
- $nroff =~ s/\Q$$self{FONTS}{100}\E(.*?)\\f([PR])/$1/g;
- $nroff =~ s/\Q$$self{FONTS}{101}\E(.*?)$font_end/\\fI$1\\fP/g;
- $nroff =~ s/\Q$$self{FONTS}{110}\E(.*?)$font_end/\\fB$1\\fP/g;
- $nroff =~ s/\Q$$self{FONTS}{111}\E(.*?)$font_end/\\f\(BI$1\\fP/g;
+ my $font_end = qr{ (?: \\f[PR] | \Q$self->{FONTS}{100}\E ) }xms;
+ $nroff =~ s{\Q$self->{FONTS}{100}\E(.*?)\\f([PR])}{$1}xmsg;
+ $nroff =~ s{\Q$self->{FONTS}{101}\E}{\\fI}xmsg;
+ $nroff =~ s{\Q$self->{FONTS}{110}\E}{\\fB}xmsg;
+ $nroff =~ s{\Q$self->{FONTS}{111}\E}{\\f\(BI}xmsg;
+
+ # We have to deal with \*C` and \*C', which are used to add the quotes
+ # around C<> text, since they may expand to " and if they do this
+ # confuses the .SH macros and the like no end. Expand them ourselves.
+ my $c_is_quote = index("$self->{LQUOTE}$self->{RQUOTE}", qq(\")) != -1;
+ if ($c_is_quote && $text =~ m{ \\[*]\(C[\'\`] }xms) {
+ $nroff =~ s{ \\[*]\(C\` }{$self->{LQUOTE}}xmsg;
+ $nroff =~ s{ \\[*]\(C\' }{$self->{RQUOTE}}xmsg;
+ $troff =~ s{ \\[*]\(C[\'\`] }{}xmsg;
+ }
# Now finally output the command. Bother with .ie only if the nroff
# and troff output aren't the same.
+ $nroff = _quote_macro_argument($nroff) . ($extra ? " $extra" : '');
+ $troff = _quote_macro_argument($troff) . ($extra ? " $extra" : '');
if ($nroff ne $troff) {
return ".ie n $command $nroff\n.el $command $troff\n";
} else {
return "$command $nroff\n";
}
} else {
- $text = qq("$text") . ($extra ? " $extra" : '');
+ $text = _quote_macro_argument($text) . ($extra ? " $extra" : '');
return "$command $text\n";
}
}
@@ -761,10 +821,22 @@ sub outindex {
# Output some text, without any additional changes.
sub output {
my ($self, @text) = @_;
- if ($$self{ENCODE}) {
- print { $$self{output_fh} } Encode::encode ('UTF-8', join ('', @text));
+ my $text = join('', @text);
+ $text =~ s{$NBSP}{\\ }g;
+ $text =~ s{$SHY}{\\%}g;
+
+ if ($$self{ENCODE} && _needs_encode($$self{ENCODING})) {
+ my $check = sub {
+ my ($char) = @_;
+ my $display = '"\x{' . hex($char) . '}"';
+ my $error = "$display does not map to $$self{ENCODING}";
+ $self->whine ($self->line_count(), $error);
+ return Encode::encode ($$self{ENCODING}, chr($char));
+ };
+ my $output = Encode::encode ($$self{ENCODING}, $text, $check);
+ print { $$self{output_fh} } $output;
} else {
- print { $$self{output_fh} } @text;
+ print { $$self{output_fh} } $text;
}
}
@@ -777,21 +849,20 @@ sub output {
sub start_document {
my ($self, $attrs) = @_;
if ($$attrs{contentless} && !$$self{ALWAYS_EMIT_SOMETHING}) {
- DEBUG and print "Document is contentless\n";
$$self{CONTENTLESS} = 1;
} else {
delete $$self{CONTENTLESS};
}
- # When UTF-8 output is set, check whether our output file handle already
- # has a PerlIO encoding layer set. If it does not, we'll need to encode
- # our output before printing it (handled in the output() sub). Wrap the
- # check in an eval to handle versions of Perl without PerlIO.
+ # When an encoding is requested, check whether our output file handle
+ # already has a PerlIO encoding layer set. If it does not, we'll need to
+ # encode our output before printing it (handled in the output() sub).
+ # Wrap the check in an eval to handle versions of Perl without PerlIO.
#
# PerlIO::get_layers still requires its argument be a glob, so coerce the
# file handle to a glob.
$$self{ENCODE} = 0;
- if ($$self{utf8}) {
+ if ($$self{ENCODING}) {
$$self{ENCODE} = 1;
eval {
my @options = (output => 1, details => 1);
@@ -806,15 +877,15 @@ sub start_document {
# document was content-free.
if (!$$self{CONTENTLESS}) {
my ($name, $section);
- if (defined $$self{name}) {
- $name = $$self{name};
- $section = $$self{section} || 1;
+ if (defined $self->{opt_name}) {
+ $name = $self->{opt_name};
+ $section = $self->{opt_section} || 1;
} else {
($name, $section) = $self->devise_title;
}
- my $date = defined($$self{date}) ? $$self{date} : $self->devise_date;
+ my $date = $self->{opt_date} // $self->devise_date();
$self->preamble ($name, $section, $date)
- unless $self->bare_output or DEBUG > 9;
+ unless $self->bare_output;
}
# Initialize a few per-document variables.
@@ -839,7 +910,6 @@ sub end_document {
}
return if $self->bare_output;
return if ($$self{CONTENTLESS} && !$$self{ALWAYS_EMIT_SOMETHING});
- $self->output (q(.\" [End document]) . "\n") if DEBUG;
}
# Try to figure out the name and section from the file name and return them as
@@ -848,8 +918,8 @@ sub end_document {
sub devise_title {
my ($self) = @_;
my $name = $self->source_filename || '';
- my $section = $$self{section} || 1;
- $section = 3 if (!$$self{section} && $name =~ /\.pm\z/i);
+ my $section = $self->{opt_section} || 1;
+ $section = 3 if (!$self->{opt_section} && $name =~ /\.pm\z/i);
$name =~ s/\.p(od|[lm])\z//i;
# If Pod::Parser gave us an IO::File reference as the source file name,
@@ -981,34 +1051,53 @@ sub devise_date {
# module, but this order is correct for both Solaris and Linux.
sub preamble {
my ($self, $name, $section, $date) = @_;
- my $preamble = $self->preamble_template (!$$self{utf8});
+ my $preamble = $self->preamble_template();
- # Build the index line and make sure that it will be syntactically valid.
- my $index = "$name $section";
- $index =~ s/\"/\"\"/g;
-
- # If name or section contain spaces, quote them (section really never
- # should, but we may as well be cautious).
- for ($name, $section) {
- if (/\s/) {
- s/\"/\"\"/g;
- $_ = '"' . $_ . '"';
+ # groff's preconv script will use this line to correctly determine the
+ # input encoding if the encoding is one of the ones it recognizes. It
+ # must be the first or second line.
+ #
+ # If the output encoding is some version of Unicode, we could also add a
+ # Unicode Byte Order Mark to the start of the file, but the BOM is now
+ # deprecated and I am concerned that may break a *roff implementation that
+ # might otherwise cope with Unicode. Revisit this if someone files a bug
+ # report about it.
+ if (_needs_encode($$self{ENCODING})) {
+ my $normalized = lc($$self{ENCODING});
+ $normalized =~ s{-}{}g;
+ my $coding = $ENCODINGS{$normalized} || lc($$self{ENCODING});
+ if ($coding ne 'us-ascii') {
+ $self->output(qq{.\\\" -*- mode: troff; coding: $coding -*-\n});
}
}
- # Double quotes in date, since it will be quoted.
- $date =~ s/\"/\"\"/g;
-
- # Substitute into the preamble the configuration options.
- $preamble =~ s/\@CFONT\@/$$self{fixed}/;
- $preamble =~ s/\@LQUOTE\@/$$self{LQUOTE}/;
- $preamble =~ s/\@RQUOTE\@/$$self{RQUOTE}/;
- chomp $preamble;
+ # Substitute into the preamble the configuration options. Because it's
+ # used as the argument to defining a string, any leading double quote (but
+ # no other double quotes) in LQUOTE and RQUOTE has to be doubled.
+ $preamble =~ s{ [@] CFONT [@] }{$self->{opt_fixed}}xms;
+ my $lquote = $self->{LQUOTE};
+ my $rquote = $self->{RQUOTE};
+ $lquote =~ s{ \A \" }{""}xms;
+ $rquote =~ s{ \A \" }{""}xms;
+ $preamble =~ s{ [@] LQUOTE [@] }{$lquote}xms;
+ $preamble =~ s{ [@] RQUOTE [@] }{$rquote}xms;
+ chomp($preamble);
# Get the version information.
- my $version = $self->version_report;
+ my $version = $self->version_report();
- # Finally output everything.
+ # Build the index line and make sure that it will be syntactically valid.
+ my $index = _quote_macro_argument("$name $section");
+
+ # Quote the arguments to the .TH macro. (Section should never require
+ # this, but we may as well be cautious.)
+ $name = _quote_macro_argument($name);
+ $section = _quote_macro_argument($section);
+ $date = _quote_macro_argument($date);
+ my $center = _quote_macro_argument($self->{opt_center});
+ my $release = _quote_macro_argument($self->{opt_release});
+
+ # Output the majority of the preamble.
$self->output (<<"----END OF HEADER----");
.\\" Automatically generated by $version
.\\"
@@ -1017,14 +1106,19 @@ sub preamble {
$preamble
.\\" ========================================================================
.\\"
-.IX Title "$index"
-.TH $name $section "$date" "$$self{release}" "$$self{center}"
+.IX Title $index
+.TH $name $section $date $release $center
.\\" For nroff, turn off justification. Always turn off hyphenation; it makes
.\\" way too many mistakes in technical documents.
.if n .ad l
.nh
----END OF HEADER----
- $self->output (".\\\" [End of preamble]\n") if DEBUG;
+
+ # If the language was specified, output the language configuration.
+ if ($self->{opt_language}) {
+ $self->output(".mso $self->{opt_language}.tmac\n");
+ $self->output(".hla $self->{opt_language}\n");
+ }
}
##############################################################################
@@ -1049,11 +1143,6 @@ sub cmd_para {
$$self{SHIFTWAIT} = 0;
}
- # Add the line number for debugging, but not in the NAME section just in
- # case the comment would confuse apropos.
- $self->output (".\\\" [At source line $line]\n")
- if defined ($line) && DEBUG && !$$self{IN_NAME};
-
# Force exactly one newline at the end and strip unwanted trailing
# whitespace at the end, but leave "\ " backslashed space from an S< > at
# the end of a line. Reverse the text first, to avoid having to scan the
@@ -1063,8 +1152,8 @@ sub cmd_para {
$text = reverse $text;
# Output the paragraph.
- $self->output ($self->protect ($self->textmapfonts ($text)));
- $self->outindex;
+ $self->output($self->protect($self->mapfonts($text, '\fR')));
+ $self->outindex();
$$self{NEEDSPACE} = 1;
return '';
}
@@ -1076,45 +1165,44 @@ sub cmd_verbatim {
my ($self, $attrs, $text) = @_;
# Ignore an empty verbatim paragraph.
- return unless $text =~ /\S/;
+ return if $text !~ m{ \S }xms;
# Force exactly one newline at the end and strip unwanted trailing
- # whitespace at the end. Reverse the text first, to avoid having to scan
- # the entire paragraph.
- $text = reverse $text;
- $text =~ s/\A\s*/\n/;
- $text = reverse $text;
+ # whitespace at the end.
+ $text =~ s{ \s* \z }{\n}xms;
# Get a count of the number of lines before the first blank line, which
# we'll pass to .Vb as its parameter. This tells *roff to keep that many
# lines together. We don't want to tell *roff to keep huge blocks
# together.
- my @lines = split (/\n/, $text);
+ my @lines = split (m{ \n }xms, $text);
my $unbroken = 0;
- for (@lines) {
- last if /^\s*$/;
+ for my $line (@lines) {
+ last if $line =~ m{ \A \s* \z }xms;
$unbroken++;
}
- $unbroken = 10 if ($unbroken > 12 && !$$self{MAGIC_VNOPAGEBREAK_LIMIT});
+ if ($unbroken > 12) {
+ $unbroken = 10;
+ }
- # Prepend a null token to each line.
- $text =~ s/^/\\&/gm;
+ # Prepend a null token to each line to preserve indentation.
+ $text =~ s{ ^ }{\\&}xmsg;
# Output the results.
- $self->makespace;
- $self->output (".Vb $unbroken\n$text.Ve\n");
+ $self->makespace();
+ $self->output(".Vb $unbroken\n$text.Ve\n");
$$self{NEEDSPACE} = 1;
- return '';
+ return q{};
}
# Handle literal text (produced by =for and similar constructs). Just output
# it with the minimum of changes.
sub cmd_data {
my ($self, $attrs, $text) = @_;
- $text =~ s/^\n+//;
- $text =~ s/\n{0,2}$/\n/;
- $self->output ($text);
- return '';
+ $text =~ s{ \A \n+ }{}xms;
+ $text =~ s{ \n{0,2} \z }{\n}xms;
+ $self->output($text);
+ return q{};
}
##############################################################################
@@ -1136,9 +1224,6 @@ sub heading_common {
$self->output (".PD\n");
}
- # Output the current source line.
- $self->output ( ".\\\" [At source line $line]\n" )
- if defined ($line) && DEBUG;
return $text;
}
@@ -1151,7 +1236,7 @@ sub cmd_head1 {
$text =~ s/\\s-?\d//g;
$text = $self->heading_common ($text, $$attrs{start_line});
my $isname = ($text eq 'NAME' || $text =~ /\(NAME\)/);
- $self->output ($self->switchquotes ('.SH', $self->mapfonts ($text)));
+ $self->output($self->switchquotes('.SH', $self->mapfonts($text, '\fP')));
$self->outindex ('Header', $text) unless $isname;
$$self{NEEDSPACE} = 0;
$$self{IN_NAME} = $isname;
@@ -1162,7 +1247,7 @@ sub cmd_head1 {
sub cmd_head2 {
my ($self, $attrs, $text) = @_;
$text = $self->heading_common ($text, $$attrs{start_line});
- $self->output ($self->switchquotes ('.SS', $self->mapfonts ($text)));
+ $self->output($self->switchquotes('.SS', $self->mapfonts($text, '\fP')));
$self->outindex ('Subsection', $text);
$$self{NEEDSPACE} = 0;
return '';
@@ -1174,7 +1259,7 @@ sub cmd_head3 {
my ($self, $attrs, $text) = @_;
$text = $self->heading_common ($text, $$attrs{start_line});
$self->makespace;
- $self->output ($self->textmapfonts ('\f(IS' . $text . '\f(IE') . "\n");
+ $self->output($self->mapfonts('\f(IS' . $text . '\f(IE', '\fR') . "\n");
$self->outindex ('Subsection', $text);
$$self{NEEDSPACE} = 1;
return '';
@@ -1186,7 +1271,7 @@ sub cmd_head4 {
my ($self, $attrs, $text) = @_;
$text = $self->heading_common ($text, $$attrs{start_line});
$self->makespace;
- $self->output ($self->textmapfonts ($text) . "\n");
+ $self->output($self->mapfonts($text, '\fR') . "\n");
$self->outindex ('Subsection', $text);
$$self{NEEDSPACE} = 1;
return '';
@@ -1203,6 +1288,13 @@ sub cmd_i { return $_[0]->{IN_NAME} ? $_[2] : '\f(IS' . $_[2] . '\f(IE' }
sub cmd_f { return $_[0]->{IN_NAME} ? $_[2] : '\f(IS' . $_[2] . '\f(IE' }
sub cmd_c { return $_[0]->quote_literal ($_[2]) }
+# Convert all internal whitespace to $NBSP.
+sub cmd_s {
+ my ($self, $attrs, $text) = @_;
+ $text =~ s{ \s }{$NBSP}xmsg;
+ return $text;
+}
+
# Index entries are just added to the pending entries.
sub cmd_x {
my ($self, $attrs, $text) = @_;
@@ -1224,7 +1316,7 @@ sub cmd_l {
}
if (not defined ($to) or $to eq $text) {
return "<$text>";
- } elsif ($$self{nourls}) {
+ } elsif ($self->{opt_nourls}) {
return $text;
} else {
return "$text <$$attrs{to}>";
@@ -1245,12 +1337,10 @@ sub over_common_start {
my ($self, $type, $attrs) = @_;
my $line = $$attrs{start_line};
my $indent = $$attrs{indent};
- DEBUG > 3 and print " Starting =over $type (line $line, indent ",
- ($indent || '?'), "\n";
# Find the indentation level.
unless (defined ($indent) && $indent =~ /^[-+]?\d{1,4}\s*$/) {
- $indent = $$self{indent};
+ $indent = $self->{opt_indent};
}
# If we've gotten multiple indentations in a row, we need to emit the
@@ -1279,7 +1369,6 @@ sub over_common_start {
# .RE and then a new .RS to unconfuse *roff.
sub over_common_end {
my ($self) = @_;
- DEBUG > 3 and print " Ending =over\n";
$$self{INDENT} = pop @{ $$self{INDENTS} };
pop @{ $$self{ITEMTYPES} };
@@ -1318,7 +1407,6 @@ sub end_over_block { $_[0]->over_common_end }
sub item_common {
my ($self, $type, $attrs, $text) = @_;
my $line = $$attrs{start_line};
- DEBUG > 3 and print " $type item (line $line): $text\n";
# Clean up the text. We want to end up with two variables, one ($text)
# which contains any body text after taking out the item portion, and
@@ -1350,8 +1438,8 @@ sub item_common {
$self->output (".PD 0\n") if ($$self{ITEMS} == 1);
# Now, output the item tag itself.
- $item = $self->textmapfonts ($item);
- $self->output ($self->switchquotes ('.IP', $item, $$self{INDENT}));
+ $item = $self->mapfonts($item, '\fR');
+ $self->output($self->switchquotes('.IP', $item, $$self{INDENT}));
$$self{NEEDSPACE} = 0;
$$self{ITEMS}++;
$$self{SHIFTWAIT} = 0;
@@ -1360,7 +1448,7 @@ sub item_common {
if ($text) {
$text =~ s/\s*$/\n/;
$self->makespace;
- $self->output ($self->protect ($self->textmapfonts ($text)));
+ $self->output($self->protect($self->mapfonts($text, '\fR')));
$$self{NEEDSPACE} = 1;
}
$self->outindex ($index ? ('Item', $index) : ());
@@ -1448,48 +1536,15 @@ sub parse_string_document {
}
##############################################################################
-# Translation tables
-##############################################################################
-
-# The following table is adapted from Tom Christiansen's pod2man. It assumes
-# that the standard preamble has already been printed, since that's what
-# defines all of the accent marks. We really want to do something better than
-# this when *roff actually supports other character sets itself, since these
-# results are pretty poor.
-#
-# This only works in an ASCII world. What to do in a non-ASCII world is very
-# unclear -- hopefully we can assume UTF-8 and just leave well enough alone.
-@ESCAPES{0xA0 .. 0xFF} = (
- "\\ ", undef, undef, undef, undef, undef, undef, undef,
- undef, undef, undef, undef, undef, "\\%", undef, undef,
-
- undef, undef, undef, undef, undef, undef, undef, undef,
- undef, undef, undef, undef, undef, undef, undef, undef,
-
- "A\\*`", "A\\*'", "A\\*^", "A\\*~", "A\\*:", "A\\*o", "\\*(Ae", "C\\*,",
- "E\\*`", "E\\*'", "E\\*^", "E\\*:", "I\\*`", "I\\*'", "I\\*^", "I\\*:",
-
- "\\*(D-", "N\\*~", "O\\*`", "O\\*'", "O\\*^", "O\\*~", "O\\*:", undef,
- "O\\*/", "U\\*`", "U\\*'", "U\\*^", "U\\*:", "Y\\*'", "\\*(Th", "\\*8",
-
- "a\\*`", "a\\*'", "a\\*^", "a\\*~", "a\\*:", "a\\*o", "\\*(ae", "c\\*,",
- "e\\*`", "e\\*'", "e\\*^", "e\\*:", "i\\*`", "i\\*'", "i\\*^", "i\\*:",
-
- "\\*(d-", "n\\*~", "o\\*`", "o\\*'", "o\\*^", "o\\*~", "o\\*:", undef,
- "o\\*/" , "u\\*`", "u\\*'", "u\\*^", "u\\*:", "y\\*'", "\\*(th", "y\\*:",
-) if ASCII;
-
-##############################################################################
# Premable
##############################################################################
-# The following is the static preamble which starts all *roff output we
-# generate. Most is static except for the font to use as a fixed-width font,
-# which is designed by @CFONT@, and the left and right quotes to use for C<>
-# text, designated by @LQOUTE@ and @RQUOTE@. However, the second part, which
-# defines the accent marks, is only used if $escapes is set to true.
+# The preamble which starts all *roff output we generate. Most is static
+# except for the font to use as a fixed-width font (designed by @CFONT@), and
+# the left and right quotes to use for C<> text (designated by @LQOUTE@ and
+# @RQUOTE@). Accent marks are only defined if the output encoding is roff.
sub preamble_template {
- my ($self, $accents) = @_;
+ my ($self) = @_;
my $preamble = <<'----END OF PREAMBLE----';
.de Sp \" Vertical space (when we can't use .PP)
.if t .sp .5v
@@ -1504,29 +1559,12 @@ sub preamble_template {
.ft R
.fi
..
-.\" Set up some character translations and predefined strings. \*(-- will
-.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
-.\" double quote, and \*(R" will give a right double quote. \*(C+ will
-.\" give a nicer C++. Capital omega is used to do unbreakable dashes and
-.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff,
-.\" nothing in troff, for use with C<>.
-.tr \(*W-
-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
+.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
.ie n \{\
-. ds -- \(*W-
-. ds PI pi
-. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
-. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
-. ds L" ""
-. ds R" ""
. ds C` @LQUOTE@
. ds C' @RQUOTE@
'br\}
.el\{\
-. ds -- \|\(em\|
-. ds PI \(*p
-. ds L" ``
-. ds R" ''
. ds C`
. ds C'
'br\}
@@ -1560,7 +1598,7 @@ sub preamble_template {
----END OF PREAMBLE----
#'# for cperl-mode
- if ($accents) {
+ if ($$self{ENCODING} eq 'roff') {
$preamble .= <<'----END OF PREAMBLE----'
.\"
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
@@ -1590,7 +1628,7 @@ sub preamble_template {
. ds /
.\}
.if t \{\
-. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
+. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h'|\\n:u'
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
@@ -1637,10 +1675,13 @@ sub preamble_template {
1;
__END__
+=encoding UTF-8
+
=for stopwords
en em ALLCAPS teeny fixedbold fixeditalic fixedbolditalic stderr utf8 UTF-8
Allbery Sean Burke Ossanna Solaris formatters troff uppercased Christiansen
-nourls parsers Kernighan lquote rquote
+nourls parsers Kernighan lquote rquote unrepresentable mandoc NetBSD PostScript
+SMP macOS EBCDIC fallbacks manref reflowed reflowing FH overridable
=head1 NAME
@@ -1666,100 +1707,197 @@ using L<nroff(1)>, normally via L<man(1)>, or printing using L<troff(1)>.
It is conventionally invoked using the driver script B<pod2man>, but it can
also be used directly.
-As a derived class from Pod::Simple, Pod::Man supports the same methods and
-interfaces. See L<Pod::Simple> for all the details.
-
-new() can take options, in the form of key/value pairs that control the
-behavior of the parser. See below for details.
-
-If no options are given, Pod::Man uses the name of the input file with any
-trailing C<.pod>, C<.pm>, or C<.pl> stripped as the man page title, to
-section 1 unless the file ended in C<.pm> in which case it defaults to
-section 3, to a centered title of "User Contributed Perl Documentation", to
-a centered footer of the Perl version it is run with, and to a left-hand
-footer of the modification date of its input (or the current date if given
-C<STDIN> for input).
-
-Pod::Man assumes that your *roff formatters have a fixed-width font named
-C<CW>. If yours is called something else (like C<CR>), use the C<fixed>
-option to specify it. This generally only matters for troff output for
-printing. Similarly, you can set the fonts used for bold, italic, and
-bold italic fixed-width output.
-
-Besides the obvious pod conversions, Pod::Man also takes care of
-formatting func(), func(3), and simple variable references like $foo or
-@bar so you don't have to use code escapes for them; complex expressions
-like C<$fred{'stuff'}> will still need to be escaped, though. It also
-translates dashes that aren't used as hyphens into en dashes, makes long
-dashes--like this--into proper em dashes, fixes "paired quotes," makes C++
-look right, puts a little space between double underscores, makes ALLCAPS
-a teeny bit smaller in B<troff>, and escapes stuff that *roff treats as
-special so that you don't have to.
-
-The recognized options to new() are as follows. All options take a single
-argument.
+By default (on non-EBCDIC systems), Pod::Man outputs UTF-8. Its output should
+work with the B<man> program on systems that use B<groff> (most Linux
+distributions) or B<mandoc> (most BSD variants), but may result in mangled
+output on older UNIX systems. To choose a different, possibly more
+backward-compatible output mangling on such systems, set the C<encoding>
+option to C<roff> (the default in earlier Pod::Man versions). See the
+C<encoding> option and L</ENCODING> for more details.
+
+See L</COMPATIBILTY> for the versions of Pod::Man with significant
+backward-incompatible changes (other than constructor options, whose versions
+are documented below), and the versions of Perl that included them.
+
+=head1 CLASS METHODS
+
+=over 4
+
+=item new(ARGS)
+
+Create a new Pod::Man object. ARGS should be a list of key/value pairs, where
+the keys are chosen from the following. Each option is annotated with the
+version of Pod::Man in which that option was added with its current meaning.
=over 4
=item center
-Sets the centered page header for the C<.TH> macro. The default, if this
-option is not specified, is "User Contributed Perl Documentation".
+[1.00] Sets the centered page header for the C<.TH> macro. The default, if
+this option is not specified, is C<User Contributed Perl Documentation>.
=item date
-Sets the left-hand footer for the C<.TH> macro. If this option is not set,
-the contents of the environment variable POD_MAN_DATE, if set, will be used.
-Failing that, the value of SOURCE_DATE_EPOCH, the modification date of the
-input file, or the current time if stat() can't find that file (which will be
-the case if the input is from C<STDIN>) will be used. If obtained from the
-file modification date or the current time, the date will be formatted as
-C<YYYY-MM-DD> and will be based on UTC (so that the output will be
-reproducible regardless of local time zone).
+[4.00] Sets the left-hand footer for the C<.TH> macro. If this option is not
+set, the contents of the environment variable POD_MAN_DATE, if set, will be
+used. Failing that, the value of SOURCE_DATE_EPOCH, the modification date of
+the input file, or the current time if stat() can't find that file (which will
+be the case if the input is from C<STDIN>) will be used. If taken from any
+source other than POD_MAN_DATE (which is used verbatim), the date will be
+formatted as C<YYYY-MM-DD> and will be based on UTC (so that the output will
+be reproducible regardless of local time zone).
+
+=item encoding
+
+[5.00] Specifies the encoding of the output. The value must be an encoding
+recognized by the L<Encode> module (see L<Encode::Supported>), or the special
+values C<roff> or C<groff>. The default on non-EBCDIC systems is UTF-8.
+
+If the output contains characters that cannot be represented in this encoding,
+that is an error that will be reported as configured by the C<errors> option.
+If error handling is other than C<die>, the unrepresentable character will be
+replaced with the Encode substitution character (normally C<?>).
+
+If the C<encoding> option is set to the special value C<groff> (the default on
+EBCDIC systems), or if the Encode module is not available and the encoding is
+set to anything other than C<roff>, Pod::Man will translate all non-ASCII
+characters to C<\[uNNNN]> Unicode escapes. These are not traditionally part
+of the *roff language, but are supported by B<groff> and B<mandoc> and thus by
+the majority of manual page processors in use today.
+
+If the C<encoding> option is set to the special value C<roff>, Pod::Man will
+do its historic transformation of (some) ISO 8859-1 characters into *roff
+escapes that may be adequate in troff and may be readable (if ugly) in nroff.
+This was the default behavior of versions of Pod::Man before 5.00. With this
+encoding, all other non-ASCII characters will be replaced with C<X>. It may
+be required for very old troff and nroff implementations that do not support
+UTF-8, but its representation of any non-ASCII character is very poor and
+often specific to European languages.
+
+If the output file handle has a PerlIO encoding layer set, setting C<encoding>
+to anything other than C<groff> or C<roff> will be ignored and no encoding
+will be done by Pod::Man. It will instead rely on the encoding layer to make
+whatever output encoding transformations are desired.
+
+WARNING: The input encoding of the POD source is independent from the output
+encoding, and setting this option does not affect the interpretation of the
+POD input. Unless your POD source is US-ASCII, its encoding should be
+declared with the C<=encoding> command in the source. If this is not done,
+Pod::Simple will will attempt to guess the encoding and may be successful if
+it's Latin-1 or UTF-8, but it will produce warnings. See L<perlpod(1)> for
+more information.
=item errors
-How to report errors. C<die> says to throw an exception on any POD
-formatting error. C<stderr> says to report errors on standard error, but
-not to throw an exception. C<pod> says to include a POD ERRORS section
-in the resulting documentation summarizing the errors. C<none> ignores
-POD errors entirely, as much as possible.
+[2.27] How to report errors. C<die> says to throw an exception on any POD
+formatting error. C<stderr> says to report errors on standard error, but not
+to throw an exception. C<pod> says to include a POD ERRORS section in the
+resulting documentation summarizing the errors. C<none> ignores POD errors
+entirely, as much as possible.
The default is C<pod>.
=item fixed
-The fixed-width font to use for verbatim text and code. Defaults to
-C<CW>. Some systems may want C<CR> instead. Only matters for B<troff>
-output.
+[1.00] The fixed-width font to use for verbatim text and code. Defaults to
+C<CW>. Some systems prefer C<CR> instead. Only matters for B<troff> output.
=item fixedbold
-Bold version of the fixed-width font. Defaults to C<CB>. Only matters
+[1.00] Bold version of the fixed-width font. Defaults to C<CB>. Only matters
for B<troff> output.
=item fixeditalic
-Italic version of the fixed-width font (actually, something of a misnomer,
-since most fixed-width fonts only have an oblique version, not an italic
-version). Defaults to C<CI>. Only matters for B<troff> output.
+[1.00] Italic version of the fixed-width font (something of a misnomer, since
+most fixed-width fonts only have an oblique version, not an italic version).
+Defaults to C<CI>. Only matters for B<troff> output.
=item fixedbolditalic
-Bold italic (probably actually oblique) version of the fixed-width font.
-Pod::Man doesn't assume you have this, and defaults to C<CB>. Some
-systems (such as Solaris) have this font available as C<CX>. Only matters
-for B<troff> output.
+[1.00] Bold italic (in theory, probably oblique in practice) version of the
+fixed-width font. Pod::Man doesn't assume you have this, and defaults to
+C<CB>. Some systems (such as Solaris) have this font available as C<CX>.
+Only matters for B<troff> output.
+
+=item guesswork
+
+[5.00] By default, Pod::Man applies some default formatting rules based on
+guesswork and regular expressions that are intended to make writing Perl
+documentation easier and require less explicit markup. These rules may not
+always be appropriate, particularly for documentation that isn't about Perl.
+This option allows turning all or some of it off.
+
+The special value C<all> enables all guesswork. This is also the default for
+backward compatibility reasons. The special value C<none> disables all
+guesswork. Otherwise, the value of this option should be a comma-separated
+list of one or more of the following keywords:
+
+=over 4
+
+=item functions
+
+Convert function references like C<foo()> to bold even if they have no markup.
+The function name accepts valid Perl characters for function names (including
+C<:>), and the trailing parentheses must be present and empty.
+
+=item manref
+
+Make the first part (before the parentheses) of manual page references like
+C<foo(1)> bold even if they have no markup. The section must be a single
+number optionally followed by lowercase letters.
+
+=item quoting
+
+If no guesswork is enabled, any text enclosed in CZ<><> is surrounded by
+double quotes in nroff (terminal) output unless the contents are already
+quoted. When this guesswork is enabled, quote marks will also be suppressed
+for Perl variables, function names, function calls, numbers, and hex
+constants.
+
+=item variables
+
+Convert Perl variable names to a fixed-width font even if they have no markup.
+This transformation will only be apparent in troff output, or some other
+output format (unlike nroff terminal output) that supports fixed-width fonts.
+
+=back
+
+Any unknown guesswork name is silently ignored (for potential future
+compatibility), so be careful about spelling.
+
+=item language
+
+[5.00] Add commands telling B<groff> that the input file is in the given
+language. The value of this setting must be a language abbreviation for which
+B<groff> provides supplemental configuration, such as C<ja> (for Japanese) or
+C<zh> (for Chinese).
+
+Specifically, this adds:
+
+ .mso <language>.tmac
+ .hla <language>
+
+to the start of the file, which configure correct line breaking for the
+specified language. Without these commands, groff may not know how to add
+proper line breaks for Chinese and Japanese text if the manual page is
+installed into the normal manual page directory, such as F</usr/share/man>.
+
+On many systems, this will be done automatically if the manual page is
+installed into a language-specific manual page directory, such as
+F</usr/share/man/zh_CN>. In that case, this option is not required.
+
+Unfortunately, the commands added with this option are specific to B<groff>
+and will not work with other B<troff> and B<nroff> implementations.
=item lquote
=item rquote
-Sets the quote marks used to surround CE<lt>> text. C<lquote> sets the
-left quote mark and C<rquote> sets the right quote mark. Either may also
-be set to the special value C<none>, in which case no quote mark is added
-on that side of CE<lt>> text (but the font is still changed for troff
-output).
+[4.08] Sets the quote marks used to surround CE<lt>> text. C<lquote> sets the
+left quote mark and C<rquote> sets the right quote mark. Either may also be
+set to the special value C<none>, in which case no quote mark is added on that
+side of CE<lt>> text (but the font is still changed for troff output).
Also see the C<quotes> option, which can be used to set both quotes at once.
If both C<quotes> and one of the other options is set, C<lquote> or C<rquote>
@@ -1767,21 +1905,21 @@ overrides C<quotes>.
=item name
-Set the name of the manual page for the C<.TH> macro. Without this
-option, the manual name is set to the uppercased base name of the file
-being converted unless the manual section is 3, in which case the path is
-parsed to see if it is a Perl module path. If it is, a path like
-C<.../lib/Pod/Man.pm> is converted into a name like C<Pod::Man>. This
-option, if given, overrides any automatic determination of the name.
+[4.08] Set the name of the manual page for the C<.TH> macro. Without this
+option, the manual name is set to the uppercased base name of the file being
+converted unless the manual section is 3, in which case the path is parsed to
+see if it is a Perl module path. If it is, a path like C<.../lib/Pod/Man.pm>
+is converted into a name like C<Pod::Man>. This option, if given, overrides
+any automatic determination of the name.
If generating a manual page from standard input, the name will be set to
-C<STDIN> if this option is not provided. Providing this option is strongly
-recommended to set a meaningful manual page name.
+C<STDIN> if this option is not provided. In this case, providing this option
+is strongly recommended to set a meaningful manual page name.
=item nourls
-Normally, LZ<><> formatting codes with a URL but anchor text are formatted
-to show both the anchor text and the URL. In other words:
+[2.27] Normally, LZ<><> formatting codes with a URL but anchor text are
+formatted to show both the anchor text and the URL. In other words:
L<foo|http://example.com/>
@@ -1796,10 +1934,10 @@ important.
=item quotes
-Sets the quote marks used to surround CE<lt>> text. If the value is a
-single character, it is used as both the left and right quote. Otherwise,
-it is split in half, and the first half of the string is used as the left
-quote and the second is used as the right quote.
+[4.00] Sets the quote marks used to surround CE<lt>> text. If the value is a
+single character, it is used as both the left and right quote. Otherwise, it
+is split in half, and the first half of the string is used as the left quote
+and the second is used as the right quote.
This may also be set to the special value C<none>, in which case no quote
marks are added around CE<lt>> text (but the font is still changed for troff
@@ -1811,82 +1949,258 @@ options is set, C<lquote> or C<rquote> overrides C<quotes>.
=item release
-Set the centered footer for the C<.TH> macro. By default, this is set to
-the version of Perl you run Pod::Man under. Setting this to the empty
-string will cause some *roff implementations to use the system default
-value.
+[1.00] Set the centered footer for the C<.TH> macro. By default, this is set
+to the version of Perl you run Pod::Man under. Setting this to the empty
+string will cause some *roff implementations to use the system default value.
-Note that some system C<an> macro sets assume that the centered footer
-will be a modification date and will prepend something like "Last
-modified: ". If this is the case for your target system, you may want to
-set C<release> to the last modified date and C<date> to the version
-number.
+Note that some system C<an> macro sets assume that the centered footer will be
+a modification date and will prepend something like C<Last modified: >. If
+this is the case for your target system, you may want to set C<release> to the
+last modified date and C<date> to the version number.
=item section
-Set the section for the C<.TH> macro. The standard section numbering
-convention is to use 1 for user commands, 2 for system calls, 3 for
-functions, 4 for devices, 5 for file formats, 6 for games, 7 for
-miscellaneous information, and 8 for administrator commands. There is a lot
-of variation here, however; some systems (like Solaris) use 4 for file
-formats, 5 for miscellaneous information, and 7 for devices. Still others
-use 1m instead of 8, or some mix of both. About the only section numbers
-that are reliably consistent are 1, 2, and 3.
+[1.00] Set the section for the C<.TH> macro. The standard section numbering
+convention is to use 1 for user commands, 2 for system calls, 3 for functions,
+4 for devices, 5 for file formats, 6 for games, 7 for miscellaneous
+information, and 8 for administrator commands. There is a lot of variation
+here, however; some systems (like Solaris) use 4 for file formats, 5 for
+miscellaneous information, and 7 for devices. Still others use 1m instead of
+8, or some mix of both. About the only section numbers that are reliably
+consistent are 1, 2, and 3.
By default, section 1 will be used unless the file ends in C<.pm> in which
case section 3 will be selected.
=item stderr
-Send error messages about invalid POD to standard error instead of
-appending a POD ERRORS section to the generated *roff output. This is
-equivalent to setting C<errors> to C<stderr> if C<errors> is not already
-set. It is supported for backward compatibility.
+[2.19] If set to a true value, send error messages about invalid POD to
+standard error instead of appending a POD ERRORS section to the generated
+*roff output. This is equivalent to setting C<errors> to C<stderr> if
+C<errors> is not already set.
+
+This option is for backward compatibility with Pod::Man versions that did not
+support C<errors>. Normally, the C<errors> option should be used instead.
=item utf8
-By default, Pod::Man produces the most conservative possible *roff output
-to try to ensure that it will work with as many different *roff
-implementations as possible. Many *roff implementations cannot handle
-non-ASCII characters, so this means all non-ASCII characters are converted
-either to a *roff escape sequence that tries to create a properly accented
-character (at least for troff output) or to C<X>.
-
-If this option is set, Pod::Man will instead output UTF-8. If your *roff
-implementation can handle it, this is the best output format to use and
-avoids corruption of documents containing non-ASCII characters. However,
-be warned that *roff source with literal UTF-8 characters is not supported
-by many implementations and may even result in segfaults and other bad
-behavior.
-
-Be aware that, when using this option, the input encoding of your POD
-source should be properly declared unless it's US-ASCII. Pod::Simple will
-attempt to guess the encoding and may be successful if it's Latin-1 or
-UTF-8, but it will produce warnings. Use the C<=encoding> command to
-declare the encoding. See L<perlpod(1)> for more information.
+[2.21] This option used to set the output encoding to UTF-8. Since this is
+now the default, it is ignored and does nothing.
+
+=back
=back
-The standard Pod::Simple method parse_file() takes one argument naming the
-POD file to read from. By default, the output is sent to C<STDOUT>, but
-this can be changed with the output_fh() method.
+=head1 INSTANCE METHODS
+
+As a derived class from Pod::Simple, Pod::Man supports the same methods and
+interfaces. See L<Pod::Simple> for all the details. This section summarizes
+the most-frequently-used methods and the ones added by Pod::Man.
+
+=over 4
+
+=item output_fh(FH)
+
+Direct the output from parse_file(), parse_lines(), or parse_string_document()
+to the file handle FH instead of C<STDOUT>.
+
+=item output_string(REF)
+
+Direct the output from parse_file(), parse_lines(), or parse_string_document()
+to the scalar variable pointed to by REF, rather than C<STDOUT>. For example:
+
+ my $man = Pod::Man->new();
+ my $output;
+ $man->output_string(\$output);
+ $man->parse_file('/some/input/file');
-The standard Pod::Simple method parse_from_file() takes up to two
-arguments, the first being the input file to read POD from and the second
-being the file to write the formatted output to.
+Be aware that the output in that variable will already be encoded in UTF-8.
-You can also call parse_lines() to parse an array of lines or
-parse_string_document() to parse a document already in memory. As with
-parse_file(), parse_lines() and parse_string_document() default to sending
-their output to C<STDOUT> unless changed with the output_fh() method. Be
-aware that parse_lines() and parse_string_document() both expect raw bytes,
-not decoded characters.
+=item parse_file(PATH)
-To put the output from any parse method into a string instead of a file
-handle, call the output_string() method instead of output_fh().
+Read the POD source from PATH and format it. By default, the output is sent
+to C<STDOUT>, but this can be changed with the output_fh() or output_string()
+methods.
-See L<Pod::Simple> for more specific details on the methods available to
-all derived parsers.
+=item parse_from_file(INPUT, OUTPUT)
+
+=item parse_from_filehandle(FH, OUTPUT)
+
+Read the POD source from INPUT, format it, and output the results to OUTPUT.
+
+parse_from_filehandle() is provided for backward compatibility with older
+versions of Pod::Man. parse_from_file() should be used instead.
+
+=item parse_lines(LINES[, ...[, undef]])
+
+Parse the provided lines as POD source, writing the output to either C<STDOUT>
+or the file handle set with the output_fh() or output_string() methods. This
+method can be called repeatedly to provide more input lines. An explicit
+C<undef> should be passed to indicate the end of input.
+
+This method expects raw bytes, not decoded characters.
+
+=item parse_string_document(INPUT)
+
+Parse the provided scalar variable as POD source, writing the output to either
+C<STDOUT> or the file handle set with the output_fh() or output_string()
+methods.
+
+This method expects raw bytes, not decoded characters.
+
+=back
+
+=head1 ENCODING
+
+As of Pod::Man 5.00, the default output encoding for Pod::Man is UTF-8. This
+should work correctly on any modern system that uses either B<groff> (most
+Linux distributions) or B<mandoc> (Alpine Linux and most BSD variants,
+including macOS).
+
+The user will probably have to use a UTF-8 locale to see correct output. This
+may be done by default; if not, set the LANG or LC_CTYPE environment variables
+to an appropriate local. The locale C<C.UTF-8> is available on most systems
+if one wants correct output without changing the other things locales affect,
+such as collation.
+
+The backward-compatible output format used in Pod::Man versions before 5.00 is
+available by setting the C<encoding> option to C<roff>. This may produce
+marginally nicer results on older UNIX versions that do not use B<groff> or
+B<mandoc>, but none of the available options will correctly render Unicode
+characters on those systems.
+
+Below are some additional details about how this choice was made and some
+discussion of alternatives.
+
+=head2 History
+
+The default output encoding for Pod::Man has been a long-standing problem.
+B<troff> and B<nroff> predate Unicode by a significant margin, and their
+implementations for many UNIX systems reflect that legacy. It's common for
+Unicode to not be supported in any form.
+
+Because of this, versions of Pod::Man prior to 5.00 maintained the highly
+conservative output of the original pod2man, which output pure ASCII with
+complex macros to simulate common western European accented characters when
+processed with troff. The nroff output was awkward and sometimes incorrect,
+and characters not used in western European scripts were replaced with C<X>.
+This choice maximized backwards compatibility with B<man> and
+B<nroff>/B<troff> implementations at the cost of incorrect rendering of many
+POD documents, particularly those containing people's names.
+
+The modern implementations, B<groff> (used in most Linux distributions) and
+B<mandoc> (used by most BSD variants), do now support Unicode. Other UNIX
+systems often do not, but they're now a tiny minority of the systems people
+use on a daily basis. It's increasingly common (for very good reasons) to use
+Unicode characters for POD documents rather than using ASCII conversions of
+people's names or avoiding non-English text, making the limitations in the old
+output format more apparent.
+
+Four options have been proposed to fix this:
+
+=over 2
+
+=item *
+
+Optionally support UTF-8 output but don't change the default. This is the
+approach taken since Pod::Man 2.1.0, which added the C<utf8> option. Some
+Pod::Man users use this option for better output on platforms known to support
+Unicode, but since the defaults have not changed, people continued to
+encounter (and file bug reports about) the poor default rendering.
+
+=item *
+
+Convert characters to troff C<\(xx> escapes. This requires maintaining a
+large translation table and addresses only a tiny part of the problem, since
+many Unicode characters have no standard troff name. B<groff> has the largest
+list, but if one is willing to assume B<groff> is the formatter, the next
+option is better.
+
+=item *
+
+Convert characters to groff C<\[uNNNN]> escapes. This is implemented as the
+C<groff> encoding for those who want to use it, and is supported by both
+B<groff> and B<mandoc>. However, it is no better than UTF-8 output for
+portability to other implementations. See L</Testing results> for more
+details.
+
+=item *
+
+Change the default output format to UTF-8 and ask those who want maximum
+backward compatibility to explicitly select the old encoding. This fixes the
+issue for most users at the cost of backwards compatibility. While the
+rendering of non-ASCII characters is different on older systems that don't
+support UTF-8, it's not always worse than the old output.
+
+=back
+
+Pod::Man 5.00 and later makes the last choice. This arguably produces worse
+output when manual pages are formatted with B<troff> into PostScript or PDF,
+but doing this is rare and normally manual, so the encoding can be changed in
+those cases. The older output encoding is available by setting C<encoding> to
+C<roff>.
+
+=head2 Testing results
+
+Here is the results of testing C<encoding> values of C<utf-8> and C<groff> on
+various operating systems. The testing methodology was to create F<man/man1>
+in the current directory, copy F<encoding.utf8> or F<encoding.groff> from the
+podlators 5.00 distribution to F<man/man1/encoding.1>, and then run:
+
+ LANG=C.UTF-8 MANPATH=$(pwd)/man man 1 encoding
+
+If the locale is not explicitly set to one that includes UTF-8, the Unicode
+characters were usually converted to ASCII (by, for example, dropping an
+accent) or deleted or replaced with C<< <?> >> if there was no conversion.
+
+Tested on 2022-09-25. Many thanks to the GCC Compile Farm project for access
+to testing hosts.
+
+ OS UTF-8 groff
+ ------------------ ------- -------
+ AIX 7.1 no [1] no [2]
+ Alpine 3.15.0 yes yes
+ CentOS 7.9 yes yes
+ Debian 7 yes yes
+ FreeBSD 13.0 yes yes
+ NetBSD 9.2 yes yes
+ OpenBSD 7.1 yes yes
+ openSUSE Leap 15.4 yes yes
+ Solaris 10 yes no [2]
+ Solaris 11 no [3] no [3]
+
+I did not have access to a macOS system for testing, but since it uses
+B<mandoc>, it's behavior is probably the same as the BSD hosts.
+
+Notes:
+
+=over 4
+
+=item [1]
+
+Unicode characters were converted to one or two random ASCII characters
+unrelated to the original character.
+
+=item [2]
+
+Unicode characters were shown as the body of the groff escape rather than the
+indicated character (in other words, text like C<[u00EF]>).
+
+=item [3]
+
+Unicode characters were deleted entirely, as if they weren't there. Using
+C<nroff -man> instead of B<man> to format the page showed the same results as
+Solaris 10. Using C<groff -k -man -Tutf8> to format the page produced the
+correct output.
+
+=back
+
+PostScript and PDF output using groff on a Debian 12 system do not support
+combining accent marks or SMP characters due to a lack of support in the
+default output font.
+
+Testing on additional platforms is welcome. Please let the author know if you
+have additional results.
=head1 DIAGNOSTICS
@@ -1922,9 +2236,9 @@ option was set to C<die>.
=item PERL_CORE
-If set and Encode is not available, silently fall back to non-UTF-8 mode
-without complaining to standard error. This environment variable is set
-during Perl core builds, which build Encode after podlators. Encode is
+If set and Encode is not available, silently fall back to an encoding of
+C<groff> without complaining to standard error. This environment variable is
+set during Perl core builds, which build Encode after podlators. Encode is
expected to not (yet) be available in that case.
=item POD_MAN_DATE
@@ -1953,65 +2267,104 @@ reliable if this variable overrode the timestamp of the input file.)
=back
-=head1 BUGS
+=head1 COMPATIBILITY
-Encoding handling assumes that PerlIO is available and does not work
-properly if it isn't. The C<utf8> option is therefore not supported
-unless Perl is built with PerlIO support.
+Pod::Man 1.02 (based on L<Pod::Parser>) was the first version included with
+Perl, in Perl 5.6.0.
-There is currently no way to turn off the guesswork that tries to format
-unmarked text appropriately, and sometimes it isn't wanted (particularly
-when using POD to document something other than Perl). Most of the work
-toward fixing this has now been done, however, and all that's still needed
-is a user interface.
+The current API based on L<Pod::Simple> was added in Pod::Man 2.00. Pod::Man
+2.04 was included in Perl 5.9.3, the first version of Perl to incorporate
+those changes. This is the first version that correctly supports all modern
+POD syntax. The parse_from_filehandle() method was re-added for backward
+compatibility in Pod::Man 2.09, included in Perl 5.9.4.
-The NAME section should be recognized specially and index entries emitted
-for everything in that section. This would have to be deferred until the
-next section, since extraneous things in NAME tends to confuse various man
-page processors. Currently, no index entries are emitted for anything in
-NAME.
+Support for anchor text in LZ<><> links of type URL was added in Pod::Man
+2.23, included in Perl 5.11.5.
-Pod::Man doesn't handle font names longer than two characters. Neither do
-most B<troff> implementations, but GNU troff does as an extension. It would
-be nice to support as an option for those who want to use it.
+parse_lines(), parse_string_document(), and parse_file() set a default output
+file handle of C<STDOUT> if one was not already set as of Pod::Man 2.28,
+included in Perl 5.19.5.
+
+Support for SOURCE_DATE_EPOCH and POD_MAN_DATE was added in Pod::Man 4.00,
+included in Perl 5.23.7, and generated dates were changed to use UTC instead
+of the local time zone. This is also the first release that aligned the
+module version and the version of the podlators distribution. All modules
+included in podlators, and the podlators distribution itself, share the same
+version number from this point forward.
-The preamble added to each output file is rather verbose, and most of it
-is only necessary in the presence of non-ASCII characters. It would
-ideally be nice if all of those definitions were only output if needed,
-perhaps on the fly as the characters are used.
+Pod::Man 4.10, included in Perl 5.27.8, changed the formatting for manual page
+references and function names to bold instead of italic, following the current
+Linux manual page standard.
-Pod::Man is excessively slow.
+Pod::Man 5.00 changed the default output encoding to UTF-8, overridable with
+the new C<encoding> option. It also fixed problems with bold or italic
+extending too far when used with CZ<><> escapes, and began converting Unicode
+zero-width spaces (U+200B) to the C<\:> *roff escape. It also dropped
+attempts to add subtle formatting corrections in the output that would only be
+visible when typeset with B<troff>, which had previously been a significant
+source of bugs.
+
+=head1 BUGS
+
+There are numerous bugs and language-specific assumptions in the nroff
+fallbacks for accented characters in the C<roff> encoding. Since the point of
+this encoding is backward compatibility with the output from earlier versions
+of Pod::Man, and it is deprecated except when necessary to support old
+systems, those bugs are unlikely to ever be fixed.
+
+Pod::Man doesn't handle font names longer than two characters. Neither do
+most B<troff> implementations, but groff does as an extension. It would be
+nice to support as an option for those who want to use it.
=head1 CAVEATS
-If Pod::Man is given the C<utf8> option, the encoding of its output file
-handle will be forced to UTF-8 if possible, overriding any existing
-encoding. This will be done even if the file handle is not created by
-Pod::Man and was passed in from outside. This maintains consistency
-regardless of PERL_UNICODE and other settings.
+=head2 Sentence spacing
+
+Pod::Man copies the input spacing verbatim to the output *roff document. This
+means your output will be affected by how B<nroff> generally handles sentence
+spacing.
+
+B<nroff> dates from an era in which it was standard to use two spaces after
+sentences, and will always add two spaces after a line-ending period (or
+similar punctuation) when reflowing text. For example, the following input:
+
+ =pod
-The handling of hyphens and em dashes is somewhat fragile, and one may get
-the wrong one under some circumstances. This should only matter for
-B<troff> output.
+ One sentence.
+ Another sentence.
-When and whether to use small caps is somewhat tricky, and Pod::Man doesn't
-necessarily get it right.
+will result in two spaces after the period when the text is reflowed. If you
+use two spaces after sentences anyway, this will be consistent, although you
+will have to be careful to not end a line with an abbreviation such as C<e.g.>
+or C<Ms.>. Output will also be consistent if you use the *roff style guide
+(and L<XKCD 1285|https://xkcd.com/1285/>) recommendation of putting a line
+break after each sentence, although that will consistently produce two spaces
+after each sentence, which may not be what you want.
-Converting neutral double quotes to properly matched double quotes doesn't
-work unless there are no formatting codes between the quote marks. This
-only matters for troff output.
+If you prefer one space after sentences (which is the more modern style), you
+will unfortunately need to ensure that no line in the middle of a paragraph
+ends in a period or similar sentence-ending paragraph. Otherwise, B<nroff>
+will add a two spaces after that sentence when reflowing, and your output
+document will have inconsistent spacing.
+
+=head2 Hyphens
+
+The handling of hyphens versus dashes is somewhat fragile, and one may get a
+the wrong one under some circumstances. This will normally only matter for
+line breaking and possibly for troff output.
=head1 AUTHOR
-Russ Allbery <rra@cpan.org>, based I<very> heavily on the original B<pod2man>
-by Tom Christiansen <tchrist@mox.perl.com>. The modifications to work with
-Pod::Simple instead of Pod::Parser were originally contributed by Sean Burke
-<sburke@cpan.org> (but I've since hacked them beyond recognition and all bugs
-are mine).
+Written by Russ Allbery <rra@cpan.org>, based on the original B<pod2man> by
+Tom Christiansen <tchrist@mox.perl.com>.
+
+The modifications to work with Pod::Simple instead of Pod::Parser were
+contributed by Sean Burke <sburke@cpan.org>, but I've since hacked them beyond
+recognition and all bugs are mine.
=head1 COPYRIGHT AND LICENSE
-Copyright 1999-2010, 2012-2019 Russ Allbery <rra@cpan.org>
+Copyright 1999-2010, 2012-2020, 2022 Russ Allbery <rra@cpan.org>
Substantial contributions by Sean Burke <sburke@cpan.org>.
@@ -2020,18 +2373,19 @@ under the same terms as Perl itself.
=head1 SEE ALSO
-L<Pod::Simple>, L<perlpod(1)>, L<pod2man(1)>, L<nroff(1)>, L<troff(1)>,
-L<man(1)>, L<man(7)>
+L<Encode::Supported>, L<Pod::Simple>, L<perlpod(1)>, L<pod2man(1)>,
+L<nroff(1)>, L<troff(1)>, L<man(1)>, L<man(7)>
Ossanna, Joseph F., and Brian W. Kernighan. "Troff User's Manual,"
Computing Science Technical Report No. 54, AT&T Bell Laboratories. This is
the best documentation of standard B<nroff> and B<troff>. At the time of
this writing, it's available at L<http://www.troff.org/54.pdf>.
-The man page documenting the man macro set may be L<man(5)> instead of
-L<man(7)> on your system. Also, please see L<pod2man(1)> for extensive
-documentation on writing manual pages if you've not done it before and
-aren't familiar with the conventions.
+The manual page documenting the man macro set may be L<man(5)> instead of
+L<man(7)> on your system.
+
+See L<perlpodstyle(1)> for documentation on writing manual pages in POD if
+you've not done it before and aren't familiar with the conventions.
The current version of this module is always available from its web site at
L<https://www.eyrie.org/~eagle/software/podlators/>. It is also part of the
diff --git a/Master/tlpkg/tlperl/lib/Pod/ParseLink.pm b/Master/tlpkg/tlperl/lib/Pod/ParseLink.pm
index 273c95847ac..83bc3f7565b 100644
--- a/Master/tlpkg/tlperl/lib/Pod/ParseLink.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/ParseLink.pm
@@ -13,17 +13,15 @@
package Pod::ParseLink;
-use 5.008;
+use 5.010;
use strict;
use warnings;
-use vars qw(@EXPORT @ISA $VERSION);
-
use Exporter;
-@ISA = qw(Exporter);
-@EXPORT = qw(parselink);
-$VERSION = '4.14';
+our @ISA = qw(Exporter);
+our @EXPORT = qw(parselink);
+our $VERSION = '5.01';
##############################################################################
# Implementation
@@ -171,7 +169,7 @@ Russ Allbery <rra@cpan.org>
=head1 COPYRIGHT AND LICENSE
-Copyright 2001, 2008, 2009, 2014, 2018-2019 Russ Allbery <rra@cpan.org>
+Copyright 2001, 2008, 2009, 2014, 2018-2019, 2022 Russ Allbery <rra@cpan.org>
This program is free software; you may redistribute it and/or modify it
under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple.pm b/Master/tlpkg/tlperl/lib/Pod/Simple.pm
index f2544d0ef10..ee89c0a4898 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple.pm
@@ -8,6 +8,7 @@ use integer;
use Pod::Escapes 1.04 ();
use Pod::Simple::LinkSection ();
use Pod::Simple::BlackBox ();
+use Pod::Simple::TiedOutFH;
#use utf8;
use vars qw(
@@ -18,7 +19,7 @@ use vars qw(
);
@ISA = ('Pod::Simple::BlackBox');
-$VERSION = '3.42';
+$VERSION = '3.43';
@Known_formatting_codes = qw(I B C L E F S X Z);
%Known_formatting_codes = map(($_=>1), @Known_formatting_codes);
@@ -202,7 +203,6 @@ sub output_string {
my $this = shift;
return $this->{'output_string'} unless @_; # GET.
- require Pod::Simple::TiedOutFH;
my $x = (defined($_[0]) and ref($_[0])) ? $_[0] : \( $_[0] );
$$x = '' unless defined $$x;
DEBUG > 4 and print STDERR "# Output string set to $x ($$x)\n";
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/BlackBox.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/BlackBox.pm
index 03dede7c34c..7c0d9aa469a 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/BlackBox.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/BlackBox.pm
@@ -22,7 +22,7 @@ use integer; # vroom!
use strict;
use Carp ();
use vars qw($VERSION );
-$VERSION = '3.42';
+$VERSION = '3.43';
#use constant DEBUG => 7;
sub my_qr ($$) {
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/Checker.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/Checker.pm
index 65f4d54243f..3b22a3d6cd9 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/Checker.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/Checker.pm
@@ -9,7 +9,7 @@ use Carp ();
use Pod::Simple::Methody ();
use Pod::Simple ();
use vars qw( @ISA $VERSION );
-$VERSION = '3.42';
+$VERSION = '3.43';
@ISA = ('Pod::Simple::Methody');
BEGIN { *DEBUG = defined(&Pod::Simple::DEBUG)
? \&Pod::Simple::DEBUG
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/Debug.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/Debug.pm
index 6b9aa327c01..7f51efa9dc4 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/Debug.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/Debug.pm
@@ -2,7 +2,7 @@ require 5;
package Pod::Simple::Debug;
use strict;
use vars qw($VERSION );
-$VERSION = '3.42';
+$VERSION = '3.43';
sub import {
my($value,$variable);
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/DumpAsText.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/DumpAsText.pm
index a22603043bd..dfcee5d2b4a 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/DumpAsText.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/DumpAsText.pm
@@ -1,7 +1,7 @@
require 5;
package Pod::Simple::DumpAsText;
-$VERSION = '3.42';
+$VERSION = '3.43';
use Pod::Simple ();
BEGIN {@ISA = ('Pod::Simple')}
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/DumpAsXML.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/DumpAsXML.pm
index 024e4b7b819..c5e719cdf8e 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/DumpAsXML.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/DumpAsXML.pm
@@ -1,7 +1,7 @@
require 5;
package Pod::Simple::DumpAsXML;
-$VERSION = '3.42';
+$VERSION = '3.43';
use Pod::Simple ();
BEGIN {@ISA = ('Pod::Simple')}
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/HTML.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/HTML.pm
index f930a512172..cebf5702a8b 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/HTML.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/HTML.pm
@@ -9,7 +9,7 @@ use vars qw(
$Doctype_decl $Content_decl
);
@ISA = ('Pod::Simple::PullParser');
-$VERSION = '3.42';
+$VERSION = '3.43';
BEGIN {
if(defined &DEBUG) { } # no-op
elsif( defined &Pod::Simple::DEBUG ) { *DEBUG = \&Pod::Simple::DEBUG }
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/HTMLBatch.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/HTMLBatch.pm
index 6a06173f471..cd33a4c97c1 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/HTMLBatch.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/HTMLBatch.pm
@@ -5,7 +5,7 @@ use strict;
use vars qw( $VERSION $HTML_RENDER_CLASS $HTML_EXTENSION
$CSS $JAVASCRIPT $SLEEPY $SEARCH_CLASS @ISA
);
-$VERSION = '3.42';
+$VERSION = '3.43';
@ISA = (); # Yup, we're NOT a subclass of Pod::Simple::HTML!
# TODO: nocontents stylesheets. Strike some of the color variations?
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/LinkSection.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/LinkSection.pm
index a6898caec43..c14dabcea27 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/LinkSection.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/LinkSection.pm
@@ -6,7 +6,7 @@ package Pod::Simple::LinkSection;
use strict;
use Pod::Simple::BlackBox;
use vars qw($VERSION );
-$VERSION = '3.42';
+$VERSION = '3.43';
use overload( # So it'll stringify nice
'""' => \&Pod::Simple::BlackBox::stringify_lol,
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/Methody.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/Methody.pm
index 45e26cf4637..cc096facbb5 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/Methody.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/Methody.pm
@@ -4,7 +4,7 @@ package Pod::Simple::Methody;
use strict;
use Pod::Simple ();
use vars qw(@ISA $VERSION);
-$VERSION = '3.42';
+$VERSION = '3.43';
@ISA = ('Pod::Simple');
# Yes, we could use named variables, but I want this to be impose
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/Progress.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/Progress.pm
index 77de9ae86f4..d1eaba2d6f7 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/Progress.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/Progress.pm
@@ -1,7 +1,7 @@
require 5;
package Pod::Simple::Progress;
-$VERSION = '3.42';
+$VERSION = '3.43';
use strict;
# Objects of this class are used for noting progress of an
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/PullParser.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/PullParser.pm
index 57aad9ac085..8c00592fba7 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/PullParser.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/PullParser.pm
@@ -1,6 +1,6 @@
require 5;
package Pod::Simple::PullParser;
-$VERSION = '3.42';
+$VERSION = '3.43';
use Pod::Simple ();
BEGIN {@ISA = ('Pod::Simple')}
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserEndToken.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserEndToken.pm
index dbff3df249d..2d656e088fb 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserEndToken.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserEndToken.pm
@@ -5,7 +5,7 @@ use Pod::Simple::PullParserToken ();
use strict;
use vars qw(@ISA $VERSION);
@ISA = ('Pod::Simple::PullParserToken');
-$VERSION = '3.42';
+$VERSION = '3.43';
sub new { # Class->new(tagname);
my $class = shift;
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserStartToken.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserStartToken.pm
index 1ab33cc6e0a..5e1bf71ed9a 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserStartToken.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserStartToken.pm
@@ -5,7 +5,7 @@ use Pod::Simple::PullParserToken ();
use strict;
use vars qw(@ISA $VERSION);
@ISA = ('Pod::Simple::PullParserToken');
-$VERSION = '3.42';
+$VERSION = '3.43';
sub new { # Class->new(tagname, optional_attrhash);
my $class = shift;
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserTextToken.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserTextToken.pm
index cdce959db4b..159839952e0 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserTextToken.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserTextToken.pm
@@ -5,7 +5,7 @@ use Pod::Simple::PullParserToken ();
use strict;
use vars qw(@ISA $VERSION);
@ISA = ('Pod::Simple::PullParserToken');
-$VERSION = '3.42';
+$VERSION = '3.43';
sub new { # Class->new(text);
my $class = shift;
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserToken.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserToken.pm
index 63a2dabe6f3..48cece540f5 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserToken.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/PullParserToken.pm
@@ -3,7 +3,7 @@ require 5;
package Pod::Simple::PullParserToken;
# Base class for tokens gotten from Pod::Simple::PullParser's $parser->get_token
@ISA = ();
-$VERSION = '3.42';
+$VERSION = '3.43';
use strict;
sub new { # Class->new('type', stuff...); ## Overridden in derived classes anyway
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/RTF.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/RTF.pm
index 10e05c5d0a4..793a8b2a498 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/RTF.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/RTF.pm
@@ -8,7 +8,7 @@ package Pod::Simple::RTF;
use strict;
use vars qw($VERSION @ISA %Escape $WRAP %Tagmap);
-$VERSION = '3.42';
+$VERSION = '3.43';
use Pod::Simple::PullParser ();
BEGIN {@ISA = ('Pod::Simple::PullParser')}
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/Search.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/Search.pm
index ad610654c99..6462549492d 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/Search.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/Search.pm
@@ -3,7 +3,7 @@ package Pod::Simple::Search;
use strict;
use vars qw($VERSION $MAX_VERSION_WITHIN $SLEEPY);
-$VERSION = '3.42'; ## Current version of this package
+$VERSION = '3.43'; ## Current version of this package
BEGIN { *DEBUG = sub () {0} unless defined &DEBUG; } # set DEBUG level
use Carp ();
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/SimpleTree.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/SimpleTree.pm
index 38a2704f876..15f457baaff 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/SimpleTree.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/SimpleTree.pm
@@ -5,7 +5,7 @@ use strict;
use Carp ();
use Pod::Simple ();
use vars qw( $ATTR_PAD @ISA $VERSION $SORT_ATTRS);
-$VERSION = '3.42';
+$VERSION = '3.43';
BEGIN {
@ISA = ('Pod::Simple');
*DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG;
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/Text.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/Text.pm
index 2f0254ec37d..f44987f4e43 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/Text.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/Text.pm
@@ -6,7 +6,7 @@ use Carp ();
use Pod::Simple::Methody ();
use Pod::Simple ();
use vars qw( @ISA $VERSION $FREAKYMODE);
-$VERSION = '3.42';
+$VERSION = '3.43';
@ISA = ('Pod::Simple::Methody');
BEGIN { *DEBUG = defined(&Pod::Simple::DEBUG)
? \&Pod::Simple::DEBUG
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/TextContent.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/TextContent.pm
index ccbf4242214..9c2932e37d1 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/TextContent.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/TextContent.pm
@@ -6,7 +6,7 @@ use strict;
use Carp ();
use Pod::Simple ();
use vars qw( @ISA $VERSION );
-$VERSION = '3.42';
+$VERSION = '3.43';
@ISA = ('Pod::Simple');
sub new {
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/TiedOutFH.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/TiedOutFH.pm
index cbf58b37069..af5e745a302 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/TiedOutFH.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/TiedOutFH.pm
@@ -4,7 +4,7 @@ package Pod::Simple::TiedOutFH;
use Symbol ('gensym');
use Carp ();
use vars qw($VERSION );
-$VERSION = '3.42';
+$VERSION = '3.43';
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/Transcode.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/Transcode.pm
index bdb7181af64..fef5d17d45d 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/Transcode.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/Transcode.pm
@@ -3,7 +3,7 @@ require 5;
package Pod::Simple::Transcode;
use strict;
use vars qw($VERSION @ISA);
-$VERSION = '3.42';
+$VERSION = '3.43';
BEGIN {
if(defined &DEBUG) {;} # Okay
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/TranscodeDumb.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/TranscodeDumb.pm
index 96e6a544102..776b0676459 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/TranscodeDumb.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/TranscodeDumb.pm
@@ -5,7 +5,7 @@ require 5;
package Pod::Simple::TranscodeDumb;
use strict;
use vars qw($VERSION %Supported);
-$VERSION = '3.42';
+$VERSION = '3.43';
# This module basically pretends it knows how to transcode, except
# only for null-transcodings! We use this when Encode isn't
# available.
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/TranscodeSmart.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/TranscodeSmart.pm
index 3f3224f917b..f46d1f9d05a 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/TranscodeSmart.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/TranscodeSmart.pm
@@ -9,7 +9,7 @@ use strict;
use Pod::Simple;
require Encode;
use vars qw($VERSION );
-$VERSION = '3.42';
+$VERSION = '3.43';
sub is_dumb {0}
sub is_smart {1}
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/XHTML.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/XHTML.pm
index 9049ce755ff..e8d7e111270 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/XHTML.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/XHTML.pm
@@ -45,7 +45,7 @@ declare the output character set as UTF-8 before parsing, like so:
package Pod::Simple::XHTML;
use strict;
use vars qw( $VERSION @ISA $HAS_HTML_ENTITIES );
-$VERSION = '3.42';
+$VERSION = '3.43';
use Pod::Simple::Methody ();
@ISA = ('Pod::Simple::Methody');
diff --git a/Master/tlpkg/tlperl/lib/Pod/Simple/XMLOutStream.pm b/Master/tlpkg/tlperl/lib/Pod/Simple/XMLOutStream.pm
index a891a3341f5..74d8c16b7b6 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Simple/XMLOutStream.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Simple/XMLOutStream.pm
@@ -5,7 +5,7 @@ use strict;
use Carp ();
use Pod::Simple ();
use vars qw( $ATTR_PAD @ISA $VERSION $SORT_ATTRS);
-$VERSION = '3.42';
+$VERSION = '3.43';
BEGIN {
@ISA = ('Pod::Simple');
*DEBUG = \&Pod::Simple::DEBUG unless defined &DEBUG;
diff --git a/Master/tlpkg/tlperl/lib/Pod/Text.pm b/Master/tlpkg/tlperl/lib/Pod/Text.pm
index 56e6e78a86c..83a7ce22a82 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Text.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Text.pm
@@ -14,23 +14,20 @@
package Pod::Text;
-use 5.008;
+use 5.010;
use strict;
use warnings;
-use vars qw(@ISA @EXPORT %ESCAPES $VERSION);
-
use Carp qw(carp croak);
use Encode qw(encode);
use Exporter ();
use Pod::Simple ();
-@ISA = qw(Pod::Simple Exporter);
+our @ISA = qw(Pod::Simple Exporter);
+our $VERSION = '5.01';
# We have to export pod2text for backward compatibility.
-@EXPORT = qw(pod2text);
-
-$VERSION = '4.14';
+our @EXPORT = qw(pod2text);
# Ensure that $Pod::Simple::nbsp and $Pod::Simple::shy are available. Code
# taken from Pod::Simple 3.32, but was only added in 3.30.
@@ -43,6 +40,11 @@ if ($Pod::Simple::VERSION ge 3.30) {
$SHY = chr utf8::unicode_to_native(0xAD);
}
+# Import the ASCII constant from Pod::Simple. This is true iff we're in an
+# ASCII-based universe (including such things as ISO 8859-1 and UTF-8), and is
+# generally only false for EBCDIC.
+BEGIN { *ASCII = \&Pod::Simple::ASCII }
+
##############################################################################
# Initialization
##############################################################################
@@ -64,9 +66,6 @@ sub new {
my $class = shift;
my $self = $class->SUPER::new;
- # Tell Pod::Simple to handle S<> by automatically inserting &nbsp;.
- $self->nbsp_for_S (1);
-
# Tell Pod::Simple to keep whitespace whenever possible.
if ($self->can ('preserve_whitespace')) {
$self->preserve_whitespace (1);
@@ -89,16 +88,20 @@ sub new {
my @opts = map { ("opt_$_", $opts{$_}) } keys %opts;
%$self = (%$self, @opts);
- # Send errors to stderr if requested.
+ # Backwards-compatibility support for the stderr option.
if ($$self{opt_stderr} and not $$self{opt_errors}) {
$$self{opt_errors} = 'stderr';
}
delete $$self{opt_stderr};
- # Validate the errors parameter and act on it.
- if (not defined $$self{opt_errors}) {
- $$self{opt_errors} = 'pod';
+ # Backwards-compatibility support for the utf8 option.
+ if ($$self{opt_utf8} && !$$self{opt_encoding}) {
+ $$self{opt_encoding} = 'UTF-8';
}
+ delete $$self{opt_utf8};
+
+ # Validate the errors parameter and act on it.
+ $$self{opt_errors} //= 'pod';
if ($$self{opt_errors} eq 'stderr' || $$self{opt_errors} eq 'die') {
$self->no_errata_section (1);
$self->complain_stderr (1);
@@ -117,12 +120,12 @@ sub new {
delete $$self{errors};
# Initialize various things from our parameters.
- $$self{opt_alt} = 0 unless defined $$self{opt_alt};
- $$self{opt_indent} = 4 unless defined $$self{opt_indent};
- $$self{opt_margin} = 0 unless defined $$self{opt_margin};
- $$self{opt_loose} = 0 unless defined $$self{opt_loose};
- $$self{opt_sentence} = 0 unless defined $$self{opt_sentence};
- $$self{opt_width} = 76 unless defined $$self{opt_width};
+ $$self{opt_alt} //= 0;
+ $$self{opt_indent} //= 4;
+ $$self{opt_margin} //= 0;
+ $$self{opt_loose} //= 0;
+ $$self{opt_sentence} //= 0;
+ $$self{opt_width} //= 76;
# Figure out what quotes we'll be using for C<> text.
$$self{opt_quotes} ||= '"';
@@ -138,6 +141,17 @@ sub new {
croak qq(Invalid quote specification "$$self{opt_quotes}");
}
+ # Configure guesswork based on options.
+ my $guesswork = $self->{opt_guesswork} || q{};
+ my %guesswork = map { $_ => 1 } split(m{,}xms, $guesswork);
+ if (!%guesswork || $guesswork{all}) {
+ $$self{GUESSWORK} = {quoting => 1};
+ } elsif ($guesswork{none}) {
+ $$self{GUESSWORK} = {};
+ } else {
+ $$self{GUESSWORK} = {%guesswork};
+ }
+
# If requested, do something with the non-POD text.
$self->code_handler (\&handle_code) if $$self{opt_code};
@@ -272,9 +286,7 @@ sub reformat {
}
# Output text to the output device. Replace non-breaking spaces with spaces
-# and soft hyphens with nothing, and then try to fix the output encoding if
-# necessary to match the input encoding unless UTF-8 output is forced. This
-# preserves the traditional pass-through behavior of Pod::Text.
+# and soft hyphens with nothing, and then determine the output encoding.
sub output {
my ($self, @text) = @_;
my $text = join ('', @text);
@@ -284,15 +296,39 @@ sub output {
if ($SHY) {
$text =~ s/$SHY//g;
}
- unless ($$self{opt_utf8}) {
- my $encoding = $$self{encoding} || '';
- if ($encoding && $encoding ne $$self{ENCODING}) {
- $$self{ENCODING} = $encoding;
- eval { binmode ($$self{output_fh}, ":encoding($encoding)") };
- }
- }
+
+ # The logic used here is described in the POD documentation. Prefer the
+ # configured encoding, then the pass-through option of using the same
+ # encoding as the input, and then UTF-8, but commit to an encoding for the
+ # document.
+ #
+ # ENCODE says whether to encode or not and is turned off if there is a
+ # PerlIO encoding layer (in start_document). ENCODING is the encoding
+ # that we previously committed to and is cleared at the start of each
+ # document.
if ($$self{ENCODE}) {
- print { $$self{output_fh} } encode ('UTF-8', $text);
+ my $encoding = $$self{ENCODING};
+ if (!$encoding) {
+ $encoding = $self->encoding();
+ if (!$encoding && ASCII && $text =~ /[^\x00-\x7F]/) {
+ $encoding = 'UTF-8';
+ }
+ if ($encoding) {
+ $$self{ENCODING} = $encoding;
+ }
+ }
+ if ($encoding) {
+ my $check = sub {
+ my ($char) = @_;
+ my $display = '"\x{' . hex($char) . '}"';
+ my $error = "$display does not map to $$self{ENCODING}";
+ $self->whine ($self->line_count(), $error);
+ return Encode::encode ($$self{ENCODING}, chr($char));
+ };
+ print { $$self{output_fh} } encode ($encoding, $text, $check);
+ } else {
+ print { $$self{output_fh} } $text;
+ }
} else {
print { $$self{output_fh} } $text;
}
@@ -322,24 +358,18 @@ sub start_document {
$$self{MARGIN} = $margin; # Default left margin.
$$self{PENDING} = [[]]; # Pending output.
- # We have to redo encoding handling for each document.
- $$self{ENCODING} = '';
-
- # When UTF-8 output is set, check whether our output file handle already
- # has a PerlIO encoding layer set. If it does not, we'll need to encode
- # our output before printing it (handled in the output() sub).
- $$self{ENCODE} = 0;
- if ($$self{opt_utf8}) {
- $$self{ENCODE} = 1;
- eval {
- my @options = (output => 1, details => 1);
- my $flag = (PerlIO::get_layers ($$self{output_fh}, @options))[-1];
- if ($flag && ($flag & PerlIO::F_UTF8 ())) {
- $$self{ENCODE} = 0;
- $$self{ENCODING} = 'UTF-8';
- }
- };
- }
+ # We have to redo encoding handling for each document. Check whether the
+ # output file handle already has a PerlIO encoding layer set and, if so,
+ # disable encoding.
+ $$self{ENCODE} = 1;
+ eval {
+ my @options = (output => 1, details => 1);
+ my $flag = (PerlIO::get_layers ($$self{output_fh}, @options))[-1];
+ if ($flag && ($flag & PerlIO::F_UTF8 ())) {
+ $$self{ENCODE} = 0;
+ }
+ };
+ $$self{ENCODING} = $$self{opt_encoding};
return '';
}
@@ -383,8 +413,7 @@ sub item {
# Calculate the indentation and margin. $fits is set to true if the tag
# will fit into the margin of the paragraph given our indentation level.
- my $indent = $$self{INDENTS}[-1];
- $indent = $$self{opt_indent} unless defined $indent;
+ my $indent = $$self{INDENTS}[-1] // $$self{opt_indent};
my $margin = ' ' x $$self{opt_margin};
my $tag_length = length ($self->strip_format ($tag));
my $fits = ($$self{MARGIN} - $indent >= $tag_length + 1);
@@ -588,6 +617,13 @@ sub cmd_f { return $_[0]{alt} ? "\"$_[2]\"" : $_[2] }
sub cmd_i { return '*' . $_[2] . '*' }
sub cmd_x { return '' }
+# Convert all internal whitespace to $NBSP.
+sub cmd_s {
+ my ($self, $attrs, $text) = @_;
+ $text =~ s{ \s }{$NBSP}xmsg;
+ return $text;
+}
+
# Apply a whole bunch of messy heuristics to not quote things that don't
# benefit from being quoted. These originally come from Barrie Slaymaker and
# largely duplicate code in Pod::Man.
@@ -597,23 +633,35 @@ sub cmd_c {
# A regex that matches the portion of a variable reference that's the
# array or hash index, separated out just because we want to use it in
# several places in the following regex.
- my $index = '(?: \[.*\] | \{.*\} )?';
+ my $index = '(?: \[[^]]+\] | \{[^}]+\} )?';
# Check for things that we don't want to quote, and if we find any of
# them, return the string with just a font change and no quoting.
+ #
+ # Traditionally, Pod::Text has not quoted Perl variables, functions,
+ # numbers, or hex constants, but this is not always desirable. Make this
+ # optional on the quoting guesswork flag.
+ my $extra = qr{(?!)}xms; # never matches
+ if ($$self{GUESSWORK}{quoting}) {
+ $extra = qr{
+ \$+ [\#^]? \S $index # special ($^F, $")
+ | [\$\@%&*]+ \#? [:\'\w]+ $index # plain var or func
+ | [\$\@%&*]* [:\'\w]+
+ (?: -> )? \(\s*[^\s,\)]*\s*\) # 0/1-arg func call
+ | [+-]? ( \d[\d.]* | \.\d+ )
+ (?: [eE][+-]?\d+ )? # a number
+ | 0x [a-fA-F\d]+ # a hex constant
+ }xms;
+ }
$text =~ m{
^\s*
(?:
- ( [\'\`\"] ) .* \1 # already quoted
- | \` .* \' # `quoted'
- | \$+ [\#^]? \S $index # special ($^Foo, $")
- | [\$\@%&*]+ \#? [:\'\w]+ $index # plain var or func
- | [\$\@%&*]* [:\'\w]+ (?: -> )? \(\s*[^\s,]\s*\) # 0/1-arg func call
- | [+-]? ( \d[\d.]* | \.\d+ ) (?: [eE][+-]?\d+ )? # a number
- | 0x [a-fA-F\d]+ # a hex constant
+ ( [\'\`\"] ) .* \1 # already quoted
+ | \` .* \' # `quoted'
+ | $extra
)
\s*\z
- }xo && return $text;
+ }xms and return $text;
# If we didn't return, go ahead and quote the text.
return $$self{opt_alt}
@@ -766,7 +814,7 @@ __END__
=for stopwords
alt stderr Allbery Sean Burke's Christiansen UTF-8 pre-Unicode utf8 nourls
-parsers
+parsers EBCDIC autodetecting superset unrepresentable FH NNN
=head1 NAME
@@ -785,67 +833,180 @@ Pod::Text - Convert POD data to formatted text
=head1 DESCRIPTION
-Pod::Text is a module that can convert documentation in the POD format
-(the preferred language for documenting Perl) into formatted text. It
-uses no special formatting controls or codes whatsoever, and its output is
-therefore suitable for nearly any device.
+Pod::Text is a module that can convert documentation in the POD format (the
+preferred language for documenting Perl) into formatted text. It uses no
+special formatting controls or codes, and its output is therefore suitable for
+nearly any device.
-As a derived class from Pod::Simple, Pod::Text supports the same methods and
-interfaces. See L<Pod::Simple> for all the details; briefly, one creates a
-new parser with C<< Pod::Text->new() >> and then normally calls parse_file().
+=head2 Encoding
-new() can take options, in the form of key/value pairs, that control the
-behavior of the parser. The currently recognized options are:
+Pod::Text uses the following logic to choose an output encoding, in order:
+
+=over 4
+
+=item 1.
+
+If a PerlIO encoding layer is set on the output file handle, do not do any
+output encoding and will instead rely on the PerlIO encoding layer.
+
+=item 2.
+
+If the C<encoding> or C<utf8> options are set, use the output encoding
+specified by those options.
+
+=item 3.
+
+If the input encoding of the POD source file was explicitly specified (using
+C<=encoding>) or automatically detected by Pod::Simple, use that as the output
+encoding as well.
+
+=item 4.
+
+Otherwise, if running on a non-EBCDIC system, use UTF-8 as the output
+encoding. Since this is a superset of ASCII, this will result in ASCII output
+unless the POD input contains non-ASCII characters without declaring or
+autodetecting an encoding (usually via EZ<><> escapes).
+
+=item 5.
+
+Otherwise, for EBCDIC systems, output without doing any encoding and hope
+this works.
+
+=back
+
+One caveat: Pod::Text has to commit to an output encoding the first time it
+outputs a non-ASCII character, and then has to stick with it for consistency.
+However, C<=encoding> commands don't have to be at the beginning of a POD
+document. If someone uses a non-ASCII character early in a document with an
+escape, such as EZ<><0xEF>, and then puts C<=encoding iso-8859-1> later,
+ideally Pod::Text would follow rule 3 and output the entire document as ISO
+8859-1. Instead, it will commit to UTF-8 following rule 4 as soon as it sees
+that escape, and then stick with that encoding for the rest of the document.
+
+Unfortunately, there's no universally good choice for an output encoding.
+Each choice will be incorrect in some circumstances. This approach was chosen
+primarily for backwards compatibility. Callers should consider forcing the
+output encoding via C<encoding> if they have any knowledge about what encoding
+the user may expect.
+
+In particular, consider importing the L<Encode::Locale> module, if available,
+and setting C<encoding> to C<locale> to use an output encoding appropriate to
+the user's locale. But be aware that if the user is not using locales or is
+using a locale of C<C>, Encode::Locale will set the output encoding to
+US-ASCII. This will cause all non-ASCII characters will be replaced with C<?>
+and produce a flurry of warnings about unsupported characters, which may or
+may not be what you want.
+
+=head1 CLASS METHODS
+
+=over 4
+
+=item new(ARGS)
+
+Create a new Pod::Text object. ARGS should be a list of key/value pairs,
+where the keys are chosen from the following. Each option is annotated with
+the version of Pod::Text in which that option was added with its current
+meaning.
=over 4
=item alt
-If set to a true value, selects an alternate output format that, among other
-things, uses a different heading style and marks C<=item> entries with a
+[2.00] If set to a true value, selects an alternate output format that, among
+other things, uses a different heading style and marks C<=item> entries with a
colon in the left margin. Defaults to false.
=item code
-If set to a true value, the non-POD parts of the input file will be included
-in the output. Useful for viewing code documented with POD blocks with the
-POD rendered and the code left intact.
+[2.13] If set to a true value, the non-POD parts of the input file will be
+included in the output. Useful for viewing code documented with POD blocks
+with the POD rendered and the code left intact.
+
+=item encoding
+
+[5.00] Specifies the encoding of the output. The value must be an encoding
+recognized by the L<Encode> module (see L<Encode::Supported>). If the output
+contains characters that cannot be represented in this encoding, that is an
+error that will be reported as configured by the C<errors> option. If error
+handling is other than C<die>, the unrepresentable character will be replaced
+with the Encode substitution character (normally C<?>).
+
+If the output file handle has a PerlIO encoding layer set, this parameter will
+be ignored and no encoding will be done by Pod::Man. It will instead rely on
+the encoding layer to make whatever output encoding transformations are
+desired.
+
+WARNING: The input encoding of the POD source is independent from the output
+encoding, and setting this option does not affect the interpretation of the
+POD input. Unless your POD source is US-ASCII, its encoding should be
+declared with the C<=encoding> command in the source, as near to the top of
+the file as possible. If this is not done, Pod::Simple will will attempt to
+guess the encoding and may be successful if it's Latin-1 or UTF-8, but it will
+produce warnings. See L<perlpod(1)> for more information.
=item errors
-How to report errors. C<die> says to throw an exception on any POD
-formatting error. C<stderr> says to report errors on standard error, but
-not to throw an exception. C<pod> says to include a POD ERRORS section
-in the resulting documentation summarizing the errors. C<none> ignores
-POD errors entirely, as much as possible.
+[3.17] How to report errors. C<die> says to throw an exception on any POD
+formatting error. C<stderr> says to report errors on standard error, but not
+to throw an exception. C<pod> says to include a POD ERRORS section in the
+resulting documentation summarizing the errors. C<none> ignores POD errors
+entirely, as much as possible.
The default is C<pod>.
+=item guesswork
+
+[5.01] By default, Pod::Text applies some default formatting rules based on
+guesswork and regular expressions that are intended to make writing Perl
+documentation easier and require less explicit markup. These rules may not
+always be appropriate, particularly for documentation that isn't about Perl.
+This option allows turning all or some of it off.
+
+The special value C<all> enables all guesswork. This is also the default for
+backward compatibility reasons. The special value C<none> disables all
+guesswork. Otherwise, the value of this option should be a comma-separated
+list of one or more of the following keywords:
+
+=over 4
+
+=item quoting
+
+If no guesswork is enabled, any text enclosed in CZ<><> is surrounded by
+double quotes in nroff (terminal) output unless the contents are already
+quoted. When this guesswork is enabled, quote marks will also be suppressed
+for Perl variables, function names, function calls, numbers, and hex
+constants.
+
+=back
+
+Any unknown guesswork name is silently ignored (for potential future
+compatibility), so be careful about spelling.
+
=item indent
-The number of spaces to indent regular text, and the default indentation for
-C<=over> blocks. Defaults to 4.
+[2.00] The number of spaces to indent regular text, and the default
+indentation for C<=over> blocks. Defaults to 4.
=item loose
-If set to a true value, a blank line is printed after a C<=head1> heading.
-If set to false (the default), no blank line is printed after C<=head1>,
-although one is still printed after C<=head2>. This is the default because
-it's the expected formatting for manual pages; if you're formatting
+[2.00] If set to a true value, a blank line is printed after a C<=head1>
+heading. If set to false (the default), no blank line is printed after
+C<=head1>, although one is still printed after C<=head2>. This is the default
+because it's the expected formatting for manual pages; if you're formatting
arbitrary text documents, setting this to true may result in more pleasing
output.
=item margin
-The width of the left margin in spaces. Defaults to 0. This is the margin
-for all text, including headings, not the amount by which regular text is
-indented; for the latter, see the I<indent> option. To set the right
+[2.21] The width of the left margin in spaces. Defaults to 0. This is the
+margin for all text, including headings, not the amount by which regular text
+is indented; for the latter, see the I<indent> option. To set the right
margin, see the I<width> option.
=item nourls
-Normally, LZ<><> formatting codes with a URL but anchor text are formatted
-to show both the anchor text and the URL. In other words:
+[3.17] Normally, LZ<><> formatting codes with a URL but anchor text are
+formatted to show both the anchor text and the URL. In other words:
L<foo|http://example.com/>
@@ -853,74 +1014,131 @@ is formatted as:
foo <http://example.com/>
-This option, if set to a true value, suppresses the URL when anchor text
-is given, so this example would be formatted as just C<foo>. This can
-produce less cluttered output in cases where the URLs are not particularly
-important.
+This option, if set to a true value, suppresses the URL when anchor text is
+given, so this example would be formatted as just C<foo>. This can produce
+less cluttered output in cases where the URLs are not particularly important.
=item quotes
-Sets the quote marks used to surround CE<lt>> text. If the value is a
-single character, it is used as both the left and right quote. Otherwise,
-it is split in half, and the first half of the string is used as the left
-quote and the second is used as the right quote.
+[4.00] Sets the quote marks used to surround CE<lt>> text. If the value is a
+single character, it is used as both the left and right quote. Otherwise, it
+is split in half, and the first half of the string is used as the left quote
+and the second is used as the right quote.
This may also be set to the special value C<none>, in which case no quote
marks are added around CE<lt>> text.
=item sentence
-If set to a true value, Pod::Text will assume that each sentence ends in two
-spaces, and will try to preserve that spacing. If set to false, all
-consecutive whitespace in non-verbatim paragraphs is compressed into a
-single space. Defaults to false.
+[3.00] If set to a true value, Pod::Text will assume that each sentence ends
+in two spaces, and will try to preserve that spacing. If set to false, all
+consecutive whitespace in non-verbatim paragraphs is compressed into a single
+space. Defaults to false.
=item stderr
-Send error messages about invalid POD to standard error instead of
-appending a POD ERRORS section to the generated output. This is
-equivalent to setting C<errors> to C<stderr> if C<errors> is not already
-set. It is supported for backward compatibility.
+[3.10] Send error messages about invalid POD to standard error instead of
+appending a POD ERRORS section to the generated output. This is equivalent to
+setting C<errors> to C<stderr> if C<errors> is not already set. It is
+supported for backward compatibility.
=item utf8
-By default, Pod::Text uses the same output encoding as the input encoding
-of the POD source (provided that Perl was built with PerlIO; otherwise, it
-doesn't encode its output). If this option is given, the output encoding
-is forced to UTF-8.
-
-Be aware that, when using this option, the input encoding of your POD
-source should be properly declared unless it's US-ASCII. Pod::Simple will
-attempt to guess the encoding and may be successful if it's Latin-1 or
-UTF-8, but it will produce warnings. Use the C<=encoding> command to
-declare the encoding. See L<perlpod(1)> for more information.
+[3.12] If this option is set to a true value, the output encoding is set to
+UTF-8. This is equivalent to setting C<encoding> to C<UTF-8> if C<encoding>
+is not already set. It is supported for backward compatibility.
=item width
-The column at which to wrap text on the right-hand side. Defaults to 76.
+[2.00] The column at which to wrap text on the right-hand side. Defaults to
+76.
+
+=back
+
+=back
+
+=head1 INSTANCE METHODS
+
+As a derived class from Pod::Simple, Pod::Text supports the same methods and
+interfaces. See L<Pod::Simple> for all the details. This section summarizes
+the most-frequently-used methods and the ones added by Pod::Text.
+
+=over 4
+
+=item output_fh(FH)
+
+Direct the output from parse_file(), parse_lines(), or parse_string_document()
+to the file handle FH instead of C<STDOUT>.
+
+=item output_string(REF)
+
+Direct the output from parse_file(), parse_lines(), or parse_string_document()
+to the scalar variable pointed to by REF, rather than C<STDOUT>. For example:
+
+ my $man = Pod::Man->new();
+ my $output;
+ $man->output_string(\$output);
+ $man->parse_file('/some/input/file');
+
+Be aware that the output in that variable will already be encoded (see
+L</Encoding>).
+
+=item parse_file(PATH)
+
+Read the POD source from PATH and format it. By default, the output is sent
+to C<STDOUT>, but this can be changed with the output_fh() or output_string()
+methods.
+
+=item parse_from_file(INPUT, OUTPUT)
+
+=item parse_from_filehandle(FH, OUTPUT)
+
+Read the POD source from INPUT, format it, and output the results to OUTPUT.
+
+parse_from_filehandle() is provided for backward compatibility with older
+versions of Pod::Man. parse_from_file() should be used instead.
+
+=item parse_lines(LINES[, ...[, undef]])
+
+Parse the provided lines as POD source, writing the output to either C<STDOUT>
+or the file handle set with the output_fh() or output_string() methods. This
+method can be called repeatedly to provide more input lines. An explicit
+C<undef> should be passed to indicate the end of input.
+
+This method expects raw bytes, not decoded characters.
+
+=item parse_string_document(INPUT)
+
+Parse the provided scalar variable as POD source, writing the output to either
+C<STDOUT> or the file handle set with the output_fh() or output_string()
+methods.
+
+This method expects raw bytes, not decoded characters.
=back
-The standard Pod::Simple method parse_file() takes one argument naming the
-POD file to read from. By default, the output is sent to C<STDOUT>, but
-this can be changed with the output_fh() method.
+=head1 FUNCTIONS
-The standard Pod::Simple method parse_from_file() takes up to two
-arguments, the first being the input file to read POD from and the second
-being the file to write the formatted output to.
+Pod::Text exports one function for backward compatibility with older versions.
+This function is deprecated; instead, use the object-oriented interface
+described above.
-You can also call parse_lines() to parse an array of lines or
-parse_string_document() to parse a document already in memory. As with
-parse_file(), parse_lines() and parse_string_document() default to sending
-their output to C<STDOUT> unless changed with the output_fh() method. Be
-aware that parse_lines() and parse_string_document() both expect raw bytes,
-not decoded characters.
+=over 4
+
+=item pod2text([[-a,] [-NNN,]] INPUT[, OUTPUT])
+
+Convert the POD source from INPUT to text and write it to OUTPUT. If OUTPUT
+is not given, defaults to C<STDOUT>. INPUT can be any expression supported as
+the second argument to two-argument open().
-To put the output from any parse method into a string instead of a file
-handle, call the output_string() method instead of output_fh().
+If C<-a> is given as an initial argument, pass the C<alt> option to the
+Pod::Text constructor. This enables alternative formatting.
-See L<Pod::Simple> for more specific details on the methods available to
-all derived parsers.
+If C<-NNN> is given as an initial argument, pass the C<width> option to the
+Pod::Text constructor with the number C<NNN> as its argument. This sets the
+wrap line width to NNN.
+
+=back
=head1 DIAGNOSTICS
@@ -955,61 +1173,66 @@ option was set to C<die>.
=back
-=head1 BUGS
+=head1 COMPATIBILITY
-Encoding handling assumes that PerlIO is available and does not work
-properly if it isn't. The C<utf8> option is therefore not supported
-unless Perl is built with PerlIO support.
+Pod::Text 2.03 (based on L<Pod::Parser>) was the first version of this module
+included with Perl, in Perl 5.6.0. Earlier versions of Perl had a different
+Pod::Text module, with a different API.
-=head1 CAVEATS
+The current API based on L<Pod::Simple> was added in Pod::Text 3.00.
+Pod::Text 3.01 was included in Perl 5.9.3, the first version of Perl to
+incorporate those changes. This is the first version that correctly supports
+all modern POD syntax. The parse_from_filehandle() method was re-added for
+backward compatibility in Pod::Text 3.07, included in Perl 5.9.4.
-If Pod::Text is given the C<utf8> option, the encoding of its output file
-handle will be forced to UTF-8 if possible, overriding any existing
-encoding. This will be done even if the file handle is not created by
-Pod::Text and was passed in from outside. This maintains consistency
-regardless of PERL_UNICODE and other settings.
+Pod::Text 3.12, included in Perl 5.10.1, first implemented the current
+practice of attempting to match the default output encoding with the input
+encoding of the POD source, unless overridden by the C<utf8> option or (added
+later) the C<encoding> option.
-If the C<utf8> option is not given, the encoding of its output file handle
-will be forced to the detected encoding of the input POD, which preserves
-whatever the input text is. This ensures backward compatibility with
-earlier, pre-Unicode versions of this module, without large numbers of
-Perl warnings.
+Support for anchor text in LZ<><> links of type URL was added in Pod::Text
+3.14, included in Perl 5.11.5.
-This is not ideal, but it seems to be the best compromise. If it doesn't
-work for you, please let me know the details of how it broke.
+parse_lines(), parse_string_document(), and parse_file() set a default output
+file handle of C<STDOUT> if one was not already set as of Pod::Text 3.18,
+included in Perl 5.19.5.
-=head1 NOTES
+Pod::Text 4.00, included in Perl 5.23.7, aligned the module version and the
+version of the podlators distribution. All modules included in podlators, and
+the podlators distribution itself, share the same version number from this
+point forward.
-This is a replacement for an earlier Pod::Text module written by Tom
-Christiansen. It has a revamped interface, since it now uses Pod::Simple,
-but an interface roughly compatible with the old Pod::Text::pod2text()
-function is still available. Please change to the new calling convention,
-though.
+Pod::Text 4.09, included in Perl 5.25.7, fixed a serious bug on EBCDIC
+systems, present in all versions back to 3.00, that would cause opening
+brackets to disappear.
-The original Pod::Text contained code to do formatting via termcap
-sequences, although it wasn't turned on by default and it was problematic to
-get it to work at all. This rewrite doesn't even try to do that, but a
-subclass of it does. Look for L<Pod::Text::Termcap>.
+Pod::Text 5.00 now defaults, on non-EBCDIC systems, to UTF-8 encoding if it
+sees a non-ASCII character in the input and the input encoding is not
+specified. It also commits to an encoding with the first non-ASCII character
+and does not change the output encoding if the input encoding changes. The
+L<Encode> module is now used for all output encoding rather than PerlIO
+layers, which fixes earlier problems with output to scalars.
=head1 AUTHOR
-Russ Allbery <rra@cpan.org>, based I<very> heavily on the original
-Pod::Text by Tom Christiansen <tchrist@mox.perl.com> and its conversion to
-Pod::Parser by Brad Appleton <bradapp@enteract.com>. Sean Burke's initial
-conversion of Pod::Man to use Pod::Simple provided much-needed guidance on
-how to use Pod::Simple.
+Russ Allbery <rra@cpan.org>, based I<very> heavily on the original Pod::Text
+by Tom Christiansen <tchrist@mox.perl.com> and its conversion to Pod::Parser
+by Brad Appleton <bradapp@enteract.com>. Sean Burke's initial conversion of
+Pod::Man to use Pod::Simple provided much-needed guidance on how to use
+Pod::Simple.
=head1 COPYRIGHT AND LICENSE
-Copyright 1999-2002, 2004, 2006, 2008-2009, 2012-2016, 2018-2019 Russ Allbery
-<rra@cpan.org>
+Copyright 1999-2002, 2004, 2006, 2008-2009, 2012-2016, 2018-2019, 2022 Russ
+Allbery <rra@cpan.org>
This program is free software; you may redistribute it and/or modify it
under the same terms as Perl itself.
=head1 SEE ALSO
-L<Pod::Simple>, L<Pod::Text::Termcap>, L<perlpod(1)>, L<pod2text(1)>
+L<Encode::Locale>, L<Encode::Supproted>, L<Pod::Simple>,
+L<Pod::Text::Termcap>, L<perlpod(1)>, L<pod2text(1)>
The current version of this module is always available from its web site at
L<https://www.eyrie.org/~eagle/software/podlators/>. It is also part of the
diff --git a/Master/tlpkg/tlperl/lib/Pod/Text/Color.pm b/Master/tlpkg/tlperl/lib/Pod/Text/Color.pm
index 5d47c5ecb3b..2d656d6a3dc 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Text/Color.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Text/Color.pm
@@ -12,18 +12,15 @@
package Pod::Text::Color;
-use 5.008;
+use 5.010;
use strict;
use warnings;
use Pod::Text ();
use Term::ANSIColor qw(color colored);
-use vars qw(@ISA $VERSION);
-
-@ISA = qw(Pod::Text);
-
-$VERSION = '4.14';
+our @ISA = qw(Pod::Text);
+our $VERSION = '5.01';
##############################################################################
# Overrides
@@ -170,11 +167,22 @@ options.
Term::ANSIColor is used to get colors and therefore must be installed to use
this module.
-=head1 BUGS
+=head1 COMPATIBILITY
+
+Pod::Text::Color 0.05 (based on L<Pod::Parser>) was the first version of this
+module included with Perl, in Perl 5.6.0.
+
+The current API based on L<Pod::Simple> was added in Pod::Text::Color 2.00.
+Pod::Text::Color 2.01 was included in Perl 5.9.3, the first version of Perl to
+incorporate those changes.
+
+Several problems with wrapping and line length were fixed as recently as
+Pod::Text::Color 4.11, included in Perl 5.29.1.
-This is just a basic proof of concept. It should be seriously expanded to
-support configurable coloration via options passed to the constructor, and
-B<pod2text> should be taught about those.
+This module inherits its API and most behavior from Pod::Text, so the details
+in L<Pod::Text/COMPATIBILITY> also apply. Pod::Text and Pod::Text::Color have
+had the same module version since 4.00, included in Perl 5.23.7. (They
+unfortunately diverge in confusing ways prior to that.)
=head1 AUTHOR
@@ -182,7 +190,7 @@ Russ Allbery <rra@cpan.org>.
=head1 COPYRIGHT AND LICENSE
-Copyright 1999, 2001, 2004, 2006, 2008, 2009, 2018-2019 Russ Allbery
+Copyright 1999, 2001, 2004, 2006, 2008, 2009, 2018-2019, 2022 Russ Allbery
<rra@cpan.org>
This program is free software; you may redistribute it and/or modify it
diff --git a/Master/tlpkg/tlperl/lib/Pod/Text/Overstrike.pm b/Master/tlpkg/tlperl/lib/Pod/Text/Overstrike.pm
index 53bc6afef23..3135c8863cb 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Text/Overstrike.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Text/Overstrike.pm
@@ -19,17 +19,14 @@
package Pod::Text::Overstrike;
-use 5.008;
+use 5.010;
use strict;
use warnings;
-use vars qw(@ISA $VERSION);
-
use Pod::Text ();
-@ISA = qw(Pod::Text);
-
-$VERSION = '4.14';
+our @ISA = qw(Pod::Text);
+our $VERSION = '5.01';
##############################################################################
# Overrides
@@ -176,6 +173,22 @@ Currently, the outermost formatting instruction wins, so for example
underlined text inside a region of bold text is displayed as simply bold.
There may be some better approach possible.
+=head1 COMPATIBILITY
+
+Pod::Text::Overstrike 1.01 (based on L<Pod::Parser>) was the first version of
+this module included with Perl, in Perl 5.6.1.
+
+The current API based on L<Pod::Simple> was added in Pod::Text::Overstrike
+2.00, included in Perl 5.9.3.
+
+Several problems with wrapping and line length were fixed as recently as
+Pod::Text::Overstrike 2.04, included in Perl 5.11.5.
+
+This module inherits its API and most behavior from Pod::Text, so the details
+in L<Pod::Text/COMPATIBILITY> also apply. Pod::Text and Pod::Text::Overstrike
+have had the same module version since 4.00, included in Perl 5.23.7. (They
+unfortunately diverge in confusing ways prior to that.)
+
=head1 AUTHOR
Originally written by Joe Smith <Joe.Smith@inwap.com>, using the framework
@@ -185,7 +198,7 @@ created by Russ Allbery <rra@cpan.org>. Subsequently updated by Russ Allbery.
Copyright 2000 by Joe Smith <Joe.Smith@inwap.com>
-Copyright 2001, 2004, 2008, 2014, 2018-2019 by Russ Allbery <rra@cpan.org>
+Copyright 2001, 2004, 2008, 2014, 2018-2019, 2022 by Russ Allbery <rra@cpan.org>
This program is free software; you may redistribute it and/or modify it
under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/Pod/Text/Termcap.pm b/Master/tlpkg/tlperl/lib/Pod/Text/Termcap.pm
index be218f0bf04..d4b74874d87 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Text/Termcap.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Text/Termcap.pm
@@ -12,7 +12,7 @@
package Pod::Text::Termcap;
-use 5.008;
+use 5.010;
use strict;
use warnings;
@@ -20,11 +20,8 @@ use Pod::Text ();
use POSIX ();
use Term::Cap;
-use vars qw(@ISA $VERSION);
-
-@ISA = qw(Pod::Text);
-
-$VERSION = '4.14';
+our @ISA = qw(Pod::Text);
+our $VERSION = '5.01';
##############################################################################
# Overrides
@@ -204,13 +201,13 @@ sub wrap {
1;
__END__
+=for stopwords
+ECMA-48 VT100 Allbery Solaris TERMPATH unformatted
+
=head1 NAME
Pod::Text::Termcap - Convert POD data to ASCII text with format escapes
-=for stopwords
-ECMA-48 VT100 Allbery Solaris TERMPATH
-
=head1 SYNOPSIS
use Pod::Text::Termcap;
@@ -235,14 +232,37 @@ and how to override that behavior if necessary. If unable to find control
strings for bold and underscore formatting, that formatting is skipped,
resulting in the same output as Pod::Text.
+=head1 COMPATIBILITY
+
+Pod::Text::Termcap 0.04 (based on L<Pod::Parser>) was the first version of
+this module included with Perl, in Perl 5.6.0.
+
+The current API based on L<Pod::Simple> was added in Pod::Text::Termcap 2.00.
+Pod::Text::Termcap 2.01 was included in Perl 5.9.3, the first version of Perl
+to incorporate those changes.
+
+Several problems with wrapping and line length were fixed as recently as
+Pod::Text::Termcap 4.11, included in Perl 5.29.1.
+
+Pod::Text::Termcap 4.13 stopped setting the TERMPATH environment variable
+during module load. It also stopped falling back on VT100 escape sequences if
+Term::Cap was not able to find usable escape sequences, instead producing
+unformatted output for better results on dumb terminals. The next version to
+be incorporated into Perl, 4.14, was included in Perl 5.31.8.
+
+This module inherits its API and most behavior from Pod::Text, so the details
+in L<Pod::Text/COMPATIBILITY> also apply. Pod::Text and Pod::Text::Termcap
+have had the same module version since 4.00, included in Perl 5.23.7. (They
+unfortunately diverge in confusing ways prior to that.)
+
=head1 AUTHOR
Russ Allbery <rra@cpan.org>
=head1 COPYRIGHT AND LICENSE
-Copyright 1999, 2001-2002, 2004, 2006, 2008-2009, 2014-2015, 2018-2019 Russ
-Allbery <rra@cpan.org>
+Copyright 1999, 2001-2002, 2004, 2006, 2008-2009, 2014-2015, 2018-2019, 2022
+Russ Allbery <rra@cpan.org>
This program is free software; you may redistribute it and/or modify it
under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/lib/Pod/Usage.pm b/Master/tlpkg/tlperl/lib/Pod/Usage.pm
index c290f2baf1e..0ed3a60315a 100644
--- a/Master/tlpkg/tlperl/lib/Pod/Usage.pm
+++ b/Master/tlpkg/tlperl/lib/Pod/Usage.pm
@@ -18,7 +18,7 @@ use Config;
use Exporter;
use File::Spec;
-our $VERSION = '2.01';
+our $VERSION = '2.03';
our @EXPORT = qw(&pod2usage);
our @ISA;
diff --git a/Master/tlpkg/tlperl/lib/SDBM_File.pm b/Master/tlpkg/tlperl/lib/SDBM_File.pm
index 30e380a6bb8..6ba1ab8aadf 100644
--- a/Master/tlpkg/tlperl/lib/SDBM_File.pm
+++ b/Master/tlpkg/tlperl/lib/SDBM_File.pm
@@ -7,7 +7,7 @@ require Tie::Hash;
require XSLoader;
our @ISA = qw(Tie::Hash);
-our $VERSION = "1.15";
+our $VERSION = "1.17";
our @EXPORT_OK = qw(PAGFEXT DIRFEXT PAIRMAX);
use Exporter "import";
diff --git a/Master/tlpkg/tlperl/lib/Safe.pm b/Master/tlpkg/tlperl/lib/Safe.pm
index 38791ce9ad6..32eb3eb6d59 100644
--- a/Master/tlpkg/tlperl/lib/Safe.pm
+++ b/Master/tlpkg/tlperl/lib/Safe.pm
@@ -3,7 +3,7 @@ package Safe;
use 5.003_11;
use Scalar::Util qw(reftype refaddr);
-$Safe::VERSION = "2.43";
+$Safe::VERSION = "2.44";
# *** Don't declare any lexicals above this point ***
#
diff --git a/Master/tlpkg/tlperl/lib/Scalar/Util.pm b/Master/tlpkg/tlperl/lib/Scalar/Util.pm
index a7345aad78a..760e641ebf2 100644
--- a/Master/tlpkg/tlperl/lib/Scalar/Util.pm
+++ b/Master/tlpkg/tlperl/lib/Scalar/Util.pm
@@ -17,33 +17,17 @@ our @EXPORT_OK = qw(
dualvar isdual isvstring looks_like_number openhandle readonly set_prototype
tainted
);
-our $VERSION = "1.55";
+our $VERSION = "1.63";
$VERSION =~ tr/_//d;
require List::Util; # List::Util loads the XS
List::Util->VERSION( $VERSION ); # Ensure we got the right XS version (RT#100863)
-our @EXPORT_FAIL;
-
-unless (defined &weaken) {
- push @EXPORT_FAIL, qw(weaken);
-}
-unless (defined &isweak) {
- push @EXPORT_FAIL, qw(isweak isvstring);
-}
-unless (defined &isvstring) {
- push @EXPORT_FAIL, qw(isvstring);
-}
-
+# populating @EXPORT_FAIL is done in the XS code
sub export_fail {
- if (grep { /^(?:weaken|isweak)$/ } @_ ) {
- require Carp;
- Carp::croak("Weak references are not implemented in the version of perl");
- }
-
if (grep { /^isvstring$/ } @_ ) {
require Carp;
- Carp::croak("Vstrings are not implemented in the version of perl");
+ Carp::croak("Vstrings are not implemented in this version of perl");
}
@_;
@@ -80,6 +64,21 @@ being individual extensions would be wasteful.
By default C<Scalar::Util> does not export any subroutines.
+=head2 Core Perl C<builtin> Functions
+
+Many functions in this module have served as the inspiration for a new
+experimental facility in recent versions of Perl. From various development
+versions, starting at 5.35.7, equivalent functions to many of these utilities
+are available in the C<builtin::> package.
+
+ use Scalar::Util qw(blessed);
+
+ $class = blessed $obj;
+
+ $class = builtin::blessed $obj; # equivalent
+
+For more information, see the documentation on L<builtin>.
+
=cut
=head1 FUNCTIONS FOR REFERENCES
@@ -105,6 +104,9 @@ into is returned. Otherwise C<undef> is returned.
Take care when using this function simply as a truth test (such as in
C<if(blessed $ref)...>) because the package name C<"0"> is defined yet false.
+I<Since Perl version 5.35.7> an equivalent function is available as
+C<builtin::blessed>.
+
=head2 refaddr
my $addr = refaddr( $ref );
@@ -119,6 +121,9 @@ returned as a plain integer. Otherwise C<undef> is returned.
$obj = bless {}, "Foo";
$addr = refaddr $obj; # eg 88123488
+I<Since Perl version 5.35.7> an equivalent function is available as
+C<builtin::refaddr>.
+
=head2 reftype
my $type = reftype( $ref );
@@ -139,6 +144,9 @@ blessed references; thus C<ref()> returns the package name string C<"Regexp">
on these but C<reftype()> will return the underlying C structure type of
C<"REGEXP"> in all capitals.
+I<Since Perl version 5.35.7> an equivalent function is available as
+C<builtin::reftype>.
+
=head2 weaken
weaken( $ref );
@@ -178,6 +186,9 @@ references to objects will be strong, causing the remaining objects to never be
destroyed because there is now always a strong reference to them in the @object
array.
+I<Since Perl version 5.35.7> an equivalent function is available as
+C<builtin::weaken>.
+
=head2 unweaken
unweaken( $ref );
@@ -199,6 +210,9 @@ otherwise-equivalent code
(because in particular, simply assigning a weak reference back to itself does
not work to unweaken it; C<$REF = $REF> does not work).
+I<Since Perl version 5.35.7> an equivalent function is available as
+C<builtin::unweaken>.
+
=head2 isweak
my $weak = isweak( $ref );
@@ -215,6 +229,9 @@ B<NOTE>: Copying a weak reference creates a normal, strong, reference.
$copy = $ref;
$weak = isweak($copy); # false
+I<Since Perl version 5.35.7> an equivalent function is available as
+C<builtin::is_weak>.
+
=head1 OTHER FUNCTIONS
=head2 dualvar
@@ -241,24 +258,24 @@ true.
$dual = isdual($foo); # true
Note that a scalar can be made to have both string and numeric content through
-numeric operations:
+standard operations:
$foo = "10";
$dual = isdual($foo); # false
$bar = $foo + 0;
$dual = isdual($foo); # true
-Note that although C<$!> appears to be a dual-valued variable, it is
-actually implemented as a magical variable inside the interpreter:
+The C<$!> variable is commonly dual-valued, though it is also magical in other
+ways:
$! = 1;
+ $dual = isdual($!); # true
print("$!\n"); # "Operation not permitted"
- $dual = isdual($!); # false
-
-You can capture its numeric and string content using:
- $err = dualvar $!, $!;
- $dual = isdual($err); # true
+B<CAUTION>: This function is not as useful as it may seem. Dualvars are not a
+distinct concept in Perl, but a standard internal construct of all scalar
+values. Almost any value could be considered as a dualvar by this function
+through the course of normal operations.
=head2 isvstring
@@ -324,12 +341,7 @@ Module use may give one of the following errors during import.
=over
-=item Weak references are not implemented in the version of perl
-
-The version of perl that you are using does not implement weak references, to
-use L</isweak> or L</weaken> you will need to use a newer release of perl.
-
-=item Vstrings are not implemented in the version of perl
+=item Vstrings are not implemented in this version of perl
The version of perl that you are using does not implement Vstrings, to use
L</isvstring> you will need to use a newer release of perl.
diff --git a/Master/tlpkg/tlperl/lib/Socket.pm b/Master/tlpkg/tlperl/lib/Socket.pm
index fe47ef67ec0..6b012565231 100644
--- a/Master/tlpkg/tlperl/lib/Socket.pm
+++ b/Master/tlpkg/tlperl/lib/Socket.pm
@@ -3,7 +3,7 @@ package Socket;
use strict;
{ use v5.6.1; }
-our $VERSION = '2.031';
+our $VERSION = '2.036';
=head1 NAME
@@ -793,7 +793,8 @@ our @EXPORT_OK = qw(
IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_RECVERR IPV6_ROUTER_ALERT
IPV6_UNICAST_HOPS IPV6_V6ONLY
- SO_LOCK_FILTER SO_RCVBUFFORCE SO_SNDBUFFORCE
+ SO_INCOMING_CPU SO_INCOMING_NAPI_ID SO_LOCK_FILTER SO_RCVBUFFORCE
+ SO_SNDBUFFORCE
pack_ip_mreq unpack_ip_mreq pack_ip_mreq_source unpack_ip_mreq_source
diff --git a/Master/tlpkg/tlperl/lib/Storable.pm b/Master/tlpkg/tlperl/lib/Storable.pm
index 27c9cf54c34..d531f2b8d09 100644
--- a/Master/tlpkg/tlperl/lib/Storable.pm
+++ b/Master/tlpkg/tlperl/lib/Storable.pm
@@ -28,7 +28,7 @@ our @EXPORT_OK = qw(
our ($canonical, $forgive_me);
BEGIN {
- our $VERSION = '3.23';
+ our $VERSION = '3.32';
}
our $recursion_limit;
@@ -1197,11 +1197,16 @@ compartment:
=head1 SECURITY WARNING
-B<Do not accept Storable documents from untrusted sources!>
+B<Do not accept Storable documents from untrusted sources!> There is
+B<no> way to configure Storable so that it can be used safely to process
+untrusted data. While there I<are> various options that can be used to
+mitigate specific security issues these options do I<not> comprise a
+complete safety net for the user, and processing untrusted data may
+result in segmentation faults, remote code execution, or privilege
+escalation. The following lists some known features which represent
+security issues that should be considered by users of this module.
-Some features of Storable can lead to security vulnerabilities if you
-accept Storable documents from untrusted sources with the default
-flags. Most obviously, the optional (off by default) CODE reference
+Most obviously, the optional (off by default) CODE reference
serialization feature allows transfer of code to the deserializing
process. Furthermore, any serialized object will cause Storable to
helpfully load the module corresponding to the class of the object in
@@ -1224,12 +1229,15 @@ With the default setting of C<$Storable::flags> = 6, creating or destroying
random objects, even renamed objects can be controlled by an attacker.
See CVE-2015-1592 and its metasploit module.
-If your application requires accepting data from untrusted sources,
-you are best off with a less powerful and more-likely safe
-serialization format and implementation. If your data is sufficiently
-simple, L<Cpanel::JSON::XS>, L<Data::MessagePack> or L<Sereal> are the best
-choices and offer maximum interoperability, but note that Sereal is
-L<unsafe by default|Sereal::Decoder/ROBUSTNESS>.
+If your application requires accepting data from untrusted sources, you
+are best off with a less powerful and more-likely safe serialization
+format and implementation. If your data is sufficiently simple,
+L<Cpanel::JSON::XS> or L<Data::MessagePack> are fine alternatives. For
+more complex data structures containing various Perl specific data types
+like regular expressions or aliased data L<Sereal> is the best
+alternative and offers maximum interoperability. Note that Sereal is
+L<unsafe by default|Sereal::Decoder/ROBUSTNESS>, but you can configure
+the encoder and decoder to mitigate any security issues.
=head1 WARNING
diff --git a/Master/tlpkg/tlperl/lib/Sub/Util.pm b/Master/tlpkg/tlperl/lib/Sub/Util.pm
index d7b59aebab8..f96e857c281 100644
--- a/Master/tlpkg/tlperl/lib/Sub/Util.pm
+++ b/Master/tlpkg/tlperl/lib/Sub/Util.pm
@@ -15,7 +15,7 @@ our @EXPORT_OK = qw(
subname set_subname
);
-our $VERSION = "1.55";
+our $VERSION = "1.63";
$VERSION =~ tr/_//d;
require List::Util; # as it has the XS
diff --git a/Master/tlpkg/tlperl/lib/Sys/Hostname.pm b/Master/tlpkg/tlperl/lib/Sys/Hostname.pm
index 2284e1f81cc..8e4f41f72f2 100644
--- a/Master/tlpkg/tlperl/lib/Sys/Hostname.pm
+++ b/Master/tlpkg/tlperl/lib/Sys/Hostname.pm
@@ -4,9 +4,8 @@ use strict;
use Carp;
-require Exporter;
+use Exporter 'import';
-our @ISA = qw/ Exporter /;
our @EXPORT = qw/ hostname /;
our $VERSION;
@@ -16,7 +15,7 @@ use warnings ();
our $host;
BEGIN {
- $VERSION = '1.23';
+ $VERSION = '1.25';
{
local $SIG{__DIE__};
eval {
@@ -132,7 +131,7 @@ Sys::Hostname - Try every conceivable way to get hostname
=head1 SYNOPSIS
use Sys::Hostname;
- $host = hostname;
+ my $host = hostname;
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Base.pm b/Master/tlpkg/tlperl/lib/TAP/Base.pm
index 289f093bc6f..d3de9339e06 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Base.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Base.pm
@@ -12,11 +12,11 @@ and L<TAP::Harness>
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
use constant GOT_TIME_HIRES => do {
eval 'use Time::HiRes qw(time);';
diff --git a/Master/tlpkg/tlperl/lib/TAP/Formatter/Base.pm b/Master/tlpkg/tlperl/lib/TAP/Formatter/Base.pm
index a9c0e3b04b0..33fdd991f50 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Formatter/Base.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Formatter/Base.pm
@@ -58,11 +58,11 @@ TAP::Formatter::Base - Base class for harness output delegates
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
@@ -387,7 +387,30 @@ sub _summary_test_header {
$spaces = ' ' unless $spaces;
my $output = $self->_get_output_method($parser);
my $wait = $parser->wait;
- defined $wait or $wait = '(none)';
+
+ if (defined $wait) {
+ my $signum = $wait & 0x7f;
+
+ my $description;
+
+ if ($signum) {
+ require Config;
+ my @names = split ' ', $Config::Config{'sig_name'};
+ $description = "Signal: $names[$signum]";
+
+ my $dumped = $wait & 0x80;
+ $description .= ', dumped core' if $dumped;
+ }
+ elsif ($wait != 0) {
+ $description = sprintf 'exited %d', ($wait >> 8);
+ }
+
+ $wait .= " ($description)" if $wait != 0;
+ }
+ else {
+ $wait = '(none)';
+ }
+
$self->$output(
sprintf "$test$spaces(Wstat: %s Tests: %d Failed: %d)\n",
$wait, $parser->tests_run, scalar $parser->failed
diff --git a/Master/tlpkg/tlperl/lib/TAP/Formatter/Color.pm b/Master/tlpkg/tlperl/lib/TAP/Formatter/Color.pm
index 0f08edfe787..b10f2d5c362 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Formatter/Color.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Formatter/Color.pm
@@ -39,11 +39,11 @@ TAP::Formatter::Color - Run Perl test scripts with color
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Formatter/Console.pm b/Master/tlpkg/tlperl/lib/TAP/Formatter/Console.pm
index 3217099a712..d7df761cf84 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Formatter/Console.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Formatter/Console.pm
@@ -11,11 +11,11 @@ TAP::Formatter::Console - Harness output delegate for default console output
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Formatter/Console/ParallelSession.pm b/Master/tlpkg/tlperl/lib/TAP/Formatter/Console/ParallelSession.pm
index 7f6767c7000..867e025e638 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Formatter/Console/ParallelSession.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Formatter/Console/ParallelSession.pm
@@ -41,11 +41,11 @@ TAP::Formatter::Console::ParallelSession - Harness output delegate for parallel
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Formatter/Console/Session.pm b/Master/tlpkg/tlperl/lib/TAP/Formatter/Console/Session.pm
index 8c2f95734dc..aba854c4ead 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Formatter/Console/Session.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Formatter/Console/Session.pm
@@ -26,11 +26,11 @@ TAP::Formatter::Console::Session - Harness output delegate for default console o
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Formatter/File.pm b/Master/tlpkg/tlperl/lib/TAP/Formatter/File.pm
index 5a3a55813e1..c103e52cce3 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Formatter/File.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Formatter/File.pm
@@ -13,11 +13,11 @@ TAP::Formatter::File - Harness output delegate for file output
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Formatter/File/Session.pm b/Master/tlpkg/tlperl/lib/TAP/Formatter/File/Session.pm
index fb7b1829bae..e167bc5cec5 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Formatter/File/Session.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Formatter/File/Session.pm
@@ -10,11 +10,11 @@ TAP::Formatter::File::Session - Harness output delegate for file output
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Formatter/Session.pm b/Master/tlpkg/tlperl/lib/TAP/Formatter/Session.pm
index a26048d9d95..59b6afa3007 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Formatter/Session.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Formatter/Session.pm
@@ -23,11 +23,11 @@ TAP::Formatter::Session - Abstract base class for harness output delegate
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 METHODS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Harness.pm b/Master/tlpkg/tlperl/lib/TAP/Harness.pm
index 1b8ee87a659..54782decf4b 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Harness.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Harness.pm
@@ -16,11 +16,11 @@ TAP::Harness - Run test scripts with statistics
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
$ENV{HARNESS_ACTIVE} = 1;
$ENV{HARNESS_VERSION} = $VERSION;
@@ -555,8 +555,11 @@ sub runtests {
$self->_make_callback( 'after_runtests', $aggregate );
};
my $run = sub {
- $self->aggregate_tests( $aggregate, @tests );
+ my $bailout;
+ eval { $self->aggregate_tests( $aggregate, @tests ); 1 }
+ or do { $bailout = $@ || 'unknown_error' };
$finish->();
+ die $bailout if defined $bailout;
};
if ( $self->trap ) {
@@ -595,7 +598,12 @@ sub _after_test {
}
sub _bailout {
- my ( $self, $result ) = @_;
+ my ( $self, $result, $parser, $session, $aggregate, $job ) = @_;
+
+ $self->finish_parser( $parser, $session );
+ $self->_after_test( $aggregate, $job, $parser );
+ $job->finish;
+
my $explanation = $result->explanation;
die "FAILED--Further testing stopped"
. ( $explanation ? ": $explanation\n" : ".\n" );
@@ -629,7 +637,8 @@ sub _aggregate_parallel {
my ( $session, $job ) = @$stash;
if ( defined $result ) {
$session->result($result);
- $self->_bailout($result) if $result->is_bailout;
+ $self->_bailout($result, $parser, $session, $aggregate, $job )
+ if $result->is_bailout;
}
else {
@@ -661,7 +670,7 @@ sub _aggregate_single {
# Keep reading until input is exhausted in the hope
# of allowing any pending diagnostics to show up.
1 while $parser->next;
- $self->_bailout($result);
+ $self->_bailout($result, $parser, $session, $aggregate, $job );
}
}
diff --git a/Master/tlpkg/tlperl/lib/TAP/Harness/Env.pm b/Master/tlpkg/tlperl/lib/TAP/Harness/Env.pm
index 78e75fb92da..c27f3e5fbba 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Harness/Env.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Harness/Env.pm
@@ -7,7 +7,7 @@ use constant IS_VMS => ( $^O eq 'VMS' );
use TAP::Object;
use Text::ParseWords qw/shellwords/;
-our $VERSION = '3.43';
+our $VERSION = '3.44';
# Get the parts of @INC which are changed from the stock list AND
# preserve reordering of stock directories.
@@ -126,7 +126,7 @@ TAP::Harness::Env - Parsing harness related environmental variables where approp
=head1 VERSION
-Version 3.43
+Version 3.44
=head1 SYNOPSIS
@@ -189,7 +189,7 @@ C<file.tgz>
=item C<< fPackage-With-Dashes >>
Set the formatter_class of the harness being run. Since the C<HARNESS_OPTIONS>
-is seperated by C<:>, we use C<-> instead.
+is separated by C<:>, we use C<-> instead.
=back
diff --git a/Master/tlpkg/tlperl/lib/TAP/Object.pm b/Master/tlpkg/tlperl/lib/TAP/Object.pm
index d3063c2b27a..ac7c1951792 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Object.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Object.pm
@@ -9,11 +9,11 @@ TAP::Object - Base class that provides common functionality to all C<TAP::*> mod
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser.pm b/Master/tlpkg/tlperl/lib/TAP/Parser.pm
index e8d51b12c8a..8f0d7e17fc7 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser.pm
@@ -27,11 +27,11 @@ TAP::Parser - Parse L<TAP|Test::Harness::TAP> output
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
my $DEFAULT_TAP_VERSION = 12;
my $MAX_TAP_VERSION = 13;
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Aggregator.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Aggregator.pm
index 1f4ff5d9612..af961e8b737 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Aggregator.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Aggregator.pm
@@ -12,11 +12,11 @@ TAP::Parser::Aggregator - Aggregate TAP::Parser results
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Grammar.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Grammar.pm
index 0cf4d5b4c7d..398396ca13b 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Grammar.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Grammar.pm
@@ -14,11 +14,11 @@ TAP::Parser::Grammar - A grammar for the Test Anything Protocol.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator.pm
index b516929b053..1ce907f49da 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator.pm
@@ -11,11 +11,11 @@ TAP::Parser::Iterator - Base class for TAP source iterators
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Array.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Array.pm
index 3ea348d6086..8f8dc4681e4 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Array.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Array.pm
@@ -11,11 +11,11 @@ TAP::Parser::Iterator::Array - Iterator for array-based TAP sources
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Process.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Process.pm
index 8e95a44a23c..144fc13fcf0 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Process.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Process.pm
@@ -16,11 +16,11 @@ TAP::Parser::Iterator::Process - Iterator for process-based TAP sources
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Stream.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Stream.pm
index 305453124fd..dab28ea11a4 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Stream.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Iterator/Stream.pm
@@ -11,11 +11,11 @@ TAP::Parser::Iterator::Stream - Iterator for filehandle-based TAP sources
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/IteratorFactory.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/IteratorFactory.pm
index 3529c2f86c6..1a61e8260ea 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/IteratorFactory.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/IteratorFactory.pm
@@ -16,11 +16,11 @@ TAP::Parser::IteratorFactory - Figures out which SourceHandler objects to use fo
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Multiplexer.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Multiplexer.pm
index 164e9af4771..328aa49cc0e 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Multiplexer.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Multiplexer.pm
@@ -4,6 +4,7 @@ use strict;
use warnings;
use IO::Select;
+use Errno;
use base 'TAP::Object';
@@ -17,11 +18,11 @@ TAP::Parser::Multiplexer - Multiplex multiple TAP::Parsers
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
@@ -130,9 +131,10 @@ sub _iter {
return ( $parser, $stash, $result );
}
- unless (@ready) {
+ until (@ready) {
return unless $sel->count;
@ready = $sel->can_read;
+ last if @ready || $! != Errno::EINTR;
}
my ( $h, $parser, $stash, @handles ) = @{ shift @ready };
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Result.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Result.pm
index 698402ab83e..f5d1c211da7 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Result.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Result.pm
@@ -24,11 +24,11 @@ TAP::Parser::Result - Base class for TAP::Parser output objects
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Bailout.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Bailout.pm
index 38ee45853ca..528b0194b9b 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Bailout.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Bailout.pm
@@ -11,11 +11,11 @@ TAP::Parser::Result::Bailout - Bailout result token.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Comment.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Comment.pm
index a07308ea811..20cac164874 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Comment.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Comment.pm
@@ -11,11 +11,11 @@ TAP::Parser::Result::Comment - Comment result token.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Plan.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Plan.pm
index 1029694d57c..7da449208d2 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Plan.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Plan.pm
@@ -11,11 +11,11 @@ TAP::Parser::Result::Plan - Plan result token.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Pragma.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Pragma.pm
index 897e0da6584..04a0e178514 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Pragma.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Pragma.pm
@@ -11,11 +11,11 @@ TAP::Parser::Result::Pragma - TAP pragma token.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Test.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Test.pm
index e2c9781e16f..dbe0817484e 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Test.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Test.pm
@@ -11,11 +11,11 @@ TAP::Parser::Result::Test - Test result token.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Unknown.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Unknown.pm
index cc04c8a385d..1c77dc072c5 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Unknown.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Unknown.pm
@@ -11,11 +11,11 @@ TAP::Parser::Result::Unknown - Unknown result token.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Version.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Version.pm
index 8a2bd7ec442..c73a7620041 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Version.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/Version.pm
@@ -11,11 +11,11 @@ TAP::Parser::Result::Version - TAP syntax version token.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/YAML.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/YAML.pm
index 17de945ef06..e20975b7578 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Result/YAML.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Result/YAML.pm
@@ -11,11 +11,11 @@ TAP::Parser::Result::YAML - YAML result token.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/ResultFactory.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/ResultFactory.pm
index 54d29a265da..894636269bf 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/ResultFactory.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/ResultFactory.pm
@@ -29,11 +29,11 @@ TAP::Parser::ResultFactory - Factory for creating TAP::Parser output objects
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head2 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler.pm
index 7e3ddc2c086..3ec5b7ca897 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler.pm
@@ -13,11 +13,11 @@ TAP::Parser::Scheduler - Schedule tests during parallel testing
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler/Job.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler/Job.pm
index bfcb0f76b3b..ce6ef14a43c 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler/Job.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler/Job.pm
@@ -10,11 +10,11 @@ TAP::Parser::Scheduler::Job - A single testing job.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler/Spinner.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler/Spinner.pm
index 29f5c0daf16..4cb974c8758 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler/Spinner.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Scheduler/Spinner.pm
@@ -10,11 +10,11 @@ TAP::Parser::Scheduler::Spinner - A no-op job.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/Source.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/Source.pm
index 74c22cce8b4..e91439ac03b 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/Source.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/Source.pm
@@ -14,11 +14,11 @@ TAP::Parser::Source - a TAP source & meta data about it
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler.pm
index f80c1ca25c1..b41ca010655 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler.pm
@@ -12,11 +12,11 @@ TAP::Parser::SourceHandler - Base class for different TAP source handlers
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Executable.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Executable.pm
index 0ad412bc492..0aa78ad7311 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Executable.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Executable.pm
@@ -16,11 +16,11 @@ TAP::Parser::SourceHandler::Executable - Stream output from an executable TAP so
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/File.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/File.pm
index 48f98210519..e93f786b332 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/File.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/File.pm
@@ -16,11 +16,11 @@ TAP::Parser::SourceHandler::File - Stream TAP from a text file.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Handle.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Handle.pm
index 751e68aa307..1b9881cd010 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Handle.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Handle.pm
@@ -16,11 +16,11 @@ TAP::Parser::SourceHandler::Handle - Stream TAP from an IO::Handle or a GLOB.
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Perl.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Perl.pm
index 26b408a4583..ce7a2b427bc 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Perl.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/Perl.pm
@@ -21,11 +21,11 @@ TAP::Parser::SourceHandler::Perl - Stream TAP from a Perl executable
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
@@ -62,7 +62,7 @@ won't need to use this module directly.
Only votes if $source looks like a file. Casts the following votes:
0.9 if it has a shebang ala "#!...perl"
- 0.75 if it has any shebang
+ 0.3 if it has any shebang
0.8 if it's a .t file
0.9 if it's a .pl file
0.75 if it's in a 't' directory
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/RawTAP.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/RawTAP.pm
index 9bf3b272a8e..c311935bf8a 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/RawTAP.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/SourceHandler/RawTAP.pm
@@ -16,11 +16,11 @@ TAP::Parser::SourceHandler::RawTAP - Stream output from raw TAP in a scalar/arra
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/YAMLish/Reader.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/YAMLish/Reader.pm
index eafc37aa0c7..1c122300a39 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/YAMLish/Reader.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/YAMLish/Reader.pm
@@ -5,16 +5,21 @@ use warnings;
use base 'TAP::Object';
-our $VERSION = '3.43';
+our $VERSION = '3.44';
+
+ # No EBCDIC support on early perls
+*to_native = (ord "A" == 65 || $] < 5.008)
+ ? sub { return shift }
+ : sub { utf8::unicode_to_native(shift) };
# TODO:
# Handle blessed object syntax
# Printable characters for escapes
my %UNESCAPES = (
- z => "\x00", a => "\x07", t => "\x09",
- n => "\x0a", v => "\x0b", f => "\x0c",
- r => "\x0d", e => "\x1b", '\\' => '\\',
+ z => "\x00", a => "\a", t => "\t",
+ n => "\n", v => "\cK", f => "\f",
+ r => "\r", e => "\e", '\\' => '\\',
);
my $QQ_STRING = qr{ " (?:\\. | [^"])* " }x;
@@ -22,6 +27,7 @@ my $HASH_LINE = qr{ ^ ($QQ_STRING|\S+) \s* : \s* (?: (.+?) \s* )? $ }x;
my $IS_HASH_KEY = qr{ ^ [\w\'\"] }x;
my $IS_END_YAML = qr{ ^ \.\.\. \s* $ }x;
my $IS_QQ_STRING = qr{ ^ $QQ_STRING $ }x;
+my $IS_ARRAY_LINE = qr{ ^ - \s* ($QQ_STRING|\S+) }x;
# new() implementation supplied by TAP::Object
@@ -117,7 +123,8 @@ sub _read_qq {
$str =~ s/\\"/"/gx;
$str =~ s/ \\ ( [tartan\\favez] | x([0-9a-fA-F]{2}) )
- / (length($1) > 1) ? pack("H2", $2) : $UNESCAPES{$1} /gex;
+ / (length($1) > 1) ? pack("H2", to_native($2))
+ : $UNESCAPES{$1} /gex;
return $str;
}
@@ -240,9 +247,17 @@ sub _read_hash {
my ( $key, $value ) = ( $self->_read_scalar($1), $2 );
$self->_next;
+ my ( $next_line, $next_indent ) = $self->_peek;
+
if ( defined $value ) {
$hash->{$key} = $self->_read_scalar($value);
}
+ elsif (not defined $value # no explicit undef ("~") given
+ and $next_indent <= $limit # next line is same or less indentation
+ and $next_line !~ $IS_ARRAY_LINE) # arrays can start at same indent
+ {
+ $hash->{$key} = undef;
+ }
else {
$hash->{$key} = $self->_read_nested;
}
@@ -269,7 +284,7 @@ TAP::Parser::YAMLish::Reader - Read YAMLish data from iterator
=head1 VERSION
-Version 3.43
+Version 3.44
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/TAP/Parser/YAMLish/Writer.pm b/Master/tlpkg/tlperl/lib/TAP/Parser/YAMLish/Writer.pm
index 9d6366c3253..1199cf45bf3 100644
--- a/Master/tlpkg/tlperl/lib/TAP/Parser/YAMLish/Writer.pm
+++ b/Master/tlpkg/tlperl/lib/TAP/Parser/YAMLish/Writer.pm
@@ -5,17 +5,26 @@ use warnings;
use base 'TAP::Object';
-our $VERSION = '3.43';
+our $VERSION = '3.44';
-my $ESCAPE_CHAR = qr{ [ \x00-\x1f \" ] }x;
+ # No EBCDIC support on early perls
+*from_native = (ord "A" == 65 || $] < 5.008)
+ ? sub { return shift }
+ : sub { utf8::native_to_unicode(shift) };
+
+my $ESCAPE_CHAR = qr{ [ [:cntrl:] \" ] }x;
my $ESCAPE_KEY = qr{ (?: ^\W ) | $ESCAPE_CHAR }x;
-my @UNPRINTABLE = qw(
- z x01 x02 x03 x04 x05 x06 a
- x08 t n v f r x0e x0f
- x10 x11 x12 x13 x14 x15 x16 x17
- x18 x19 x1a e x1c x1d x1e x1f
-);
+my @UNPRINTABLE;
+$UNPRINTABLE[$_] = sprintf("x%02x", from_native($_)) for 0 .. ord(" ") - 1;
+$UNPRINTABLE[ord "\0"] = 'z';
+$UNPRINTABLE[ord "\a"] = 'a';
+$UNPRINTABLE[ord "\t"] = 't';
+$UNPRINTABLE[ord "\n"] = 'n';
+$UNPRINTABLE[ord "\cK"] = 'v';
+$UNPRINTABLE[ord "\f"] = 'f';
+$UNPRINTABLE[ord "\r"] = 'r';
+$UNPRINTABLE[ord "\e"] = 'e';
# new() implementation supplied by TAP::Object
@@ -76,7 +85,7 @@ sub _enc_scalar {
if ( $val =~ /$rule/ ) {
$val =~ s/\\/\\\\/g;
$val =~ s/"/\\"/g;
- $val =~ s/ ( [\x00-\x1f] ) / '\\' . $UNPRINTABLE[ ord($1) ] /gex;
+ $val =~ s/ ( [[:cntrl:]] ) / '\\' . $UNPRINTABLE[ ord($1) ] /gex;
return qq{"$val"};
}
@@ -146,7 +155,7 @@ TAP::Parser::YAMLish::Writer - Write YAMLish data
=head1 VERSION
-Version 3.43
+Version 3.44
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/Term/Cap.pm b/Master/tlpkg/tlperl/lib/Term/Cap.pm
index 12d8299a3a4..54ee1784849 100644
--- a/Master/tlpkg/tlperl/lib/Term/Cap.pm
+++ b/Master/tlpkg/tlperl/lib/Term/Cap.pm
@@ -19,7 +19,7 @@ use strict;
use vars qw($VERSION $VMS_TERMCAP);
use vars qw($termpat $state $first $entry);
-$VERSION = '1.17';
+$VERSION = '1.18';
# TODO:
# support Berkeley DB termcaps
@@ -33,7 +33,7 @@ Term::Cap - Perl termcap interface
=head1 SYNOPSIS
require Term::Cap;
- $terminal = Tgetent Term::Cap { TERM => undef, OSPEED => $ospeed };
+ $terminal = Term::Cap->Tgetent({ TERM => undef, OSPEED => $ospeed });
$terminal->Trequire(qw/ce ku kd/);
$terminal->Tgoto('cm', $col, $row, $FH);
$terminal->Tputs('dl', $count, $FH);
@@ -91,7 +91,7 @@ sub termcap_path
{
# Add the users $TERMPATH
- push( @termcap_path, split( /(:|\s+)/, $ENV{TERMPATH} ) );
+ push( @termcap_path, split( /:|\s+/, $ENV{TERMPATH} ) );
}
else
{
@@ -702,7 +702,7 @@ sub Trequire
# Get terminal output speed
require POSIX;
- my $termios = new POSIX::Termios;
+ my $termios = POSIX::Termios->new;
$termios->getattr;
my $ospeed = $termios->getospeed;
@@ -712,7 +712,7 @@ sub Trequire
# ($ispeed,$ospeed) = unpack('cc',$sgtty);
# allocate and initialize a terminal structure
- $terminal = Tgetent Term::Cap { TERM => undef, OSPEED => $ospeed };
+ my $terminal = Term::Cap->Tgetent({ TERM => undef, OSPEED => $ospeed });
# require certain capabilities to be available
$terminal->Trequire(qw/ce ku kd/);
diff --git a/Master/tlpkg/tlperl/lib/Test/Builder.pm b/Master/tlpkg/tlperl/lib/Test/Builder.pm
index 6c3cceec997..4c14dc4817b 100644
--- a/Master/tlpkg/tlperl/lib/Test/Builder.pm
+++ b/Master/tlpkg/tlperl/lib/Test/Builder.pm
@@ -4,7 +4,7 @@ use 5.006;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN {
if( $] < 5.008 ) {
@@ -655,6 +655,8 @@ sub skip_all {
die 'Label not found for "last T2_SUBTEST_WRAPPER"' if $begin && $ctx->hub->meta(__PACKAGE__, {})->{parent};
}
+ $reason = "$reason" if defined $reason;
+
$ctx->plan(0, SKIP => $reason);
}
@@ -765,7 +767,7 @@ sub _unoverload {
require overload;
}
my $string_meth = overload::Method( $$thing, $type ) || return;
- $$thing = $$thing->$string_meth();
+ $$thing = $$thing->$string_meth(undef, 0);
}
sub _unoverload_str {
@@ -1000,15 +1002,7 @@ END
$self->_is_diag( $got, $type, $expect );
}
elsif( $type =~ /^(ne|!=)$/ ) {
- no warnings;
- my $eq = ($got eq $expect || $got == $expect)
- && (
- (defined($got) xor defined($expect))
- || (length($got) != length($expect))
- );
- use warnings;
-
- if ($eq) {
+ if (defined($got) xor defined($expect)) {
$self->_cmp_diag( $got, $type, $expect );
}
else {
@@ -1072,6 +1066,13 @@ sub skip {
my $ctx = $self->ctx;
+ $name = "$name";
+ $why = "$why";
+
+ $name =~ s|#|\\#|g; # # in a name can confuse Test::Harness.
+ $name =~ s{\n}{\n# }sg;
+ $why =~ s{\n}{\n# }sg;
+
$ctx->hub->meta(__PACKAGE__, {})->{Test_Results}[ $ctx->hub->count ] = {
'ok' => 1,
actual_ok => 1,
@@ -1080,10 +1081,6 @@ sub skip {
reason => $why,
} unless $self->{no_log_results};
- $name =~ s|#|\\#|g; # # in a name can confuse Test::Harness.
- $name =~ s{\n}{\n# }sg;
- $why =~ s{\n}{\n# }sg;
-
my $tctx = $ctx->snapshot;
$tctx->skip('', $why);
diff --git a/Master/tlpkg/tlperl/lib/Test/Builder/Formatter.pm b/Master/tlpkg/tlperl/lib/Test/Builder/Formatter.pm
index e2acbc58314..4f3bee0dec8 100755
--- a/Master/tlpkg/tlperl/lib/Test/Builder/Formatter.pm
+++ b/Master/tlpkg/tlperl/lib/Test/Builder/Formatter.pm
@@ -2,7 +2,7 @@ package Test::Builder::Formatter;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::Formatter::TAP; our @ISA = qw(Test2::Formatter::TAP) }
diff --git a/Master/tlpkg/tlperl/lib/Test/Builder/Module.pm b/Master/tlpkg/tlperl/lib/Test/Builder/Module.pm
index 40cf5d61f7d..c5a24e60716 100644
--- a/Master/tlpkg/tlperl/lib/Test/Builder/Module.pm
+++ b/Master/tlpkg/tlperl/lib/Test/Builder/Module.pm
@@ -7,7 +7,7 @@ use Test::Builder;
require Exporter;
our @ISA = qw(Exporter);
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
=head1 NAME
diff --git a/Master/tlpkg/tlperl/lib/Test/Builder/Tester.pm b/Master/tlpkg/tlperl/lib/Test/Builder/Tester.pm
index 5bbe300fb35..a171b01eaf3 100644
--- a/Master/tlpkg/tlperl/lib/Test/Builder/Tester.pm
+++ b/Master/tlpkg/tlperl/lib/Test/Builder/Tester.pm
@@ -1,7 +1,7 @@
package Test::Builder::Tester;
use strict;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Test::Builder;
use Symbol;
diff --git a/Master/tlpkg/tlperl/lib/Test/Builder/Tester/Color.pm b/Master/tlpkg/tlperl/lib/Test/Builder/Tester/Color.pm
index 1fb4a694c01..31a4c28a328 100644
--- a/Master/tlpkg/tlperl/lib/Test/Builder/Tester/Color.pm
+++ b/Master/tlpkg/tlperl/lib/Test/Builder/Tester/Color.pm
@@ -1,7 +1,7 @@
package Test::Builder::Tester::Color;
use strict;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
require Test::Builder::Tester;
diff --git a/Master/tlpkg/tlperl/lib/Test/Builder/TodoDiag.pm b/Master/tlpkg/tlperl/lib/Test/Builder/TodoDiag.pm
index 6e04f5c53d6..56d3fcbf253 100755
--- a/Master/tlpkg/tlperl/lib/Test/Builder/TodoDiag.pm
+++ b/Master/tlpkg/tlperl/lib/Test/Builder/TodoDiag.pm
@@ -2,7 +2,7 @@ package Test::Builder::TodoDiag;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::Event::Diag; our @ISA = qw(Test2::Event::Diag) }
diff --git a/Master/tlpkg/tlperl/lib/Test/Harness.pm b/Master/tlpkg/tlperl/lib/Test/Harness.pm
index 7084d624e1d..ea2302bd660 100644
--- a/Master/tlpkg/tlperl/lib/Test/Harness.pm
+++ b/Master/tlpkg/tlperl/lib/Test/Harness.pm
@@ -31,11 +31,11 @@ Test::Harness - Run Perl standard test scripts with statistics
=head1 VERSION
-Version 3.43
+Version 3.44
=cut
-our $VERSION = '3.43';
+our $VERSION = '3.44';
# Backwards compatibility for exportable variable names.
*verbose = *Verbose;
@@ -550,7 +550,7 @@ C<file.tgz>
=item C<< fPackage-With-Dashes >>
Set the formatter_class of the harness being run. Since the C<HARNESS_OPTIONS>
-is seperated by C<:>, we use C<-> instead.
+is separated by C<:>, we use C<-> instead.
=back
diff --git a/Master/tlpkg/tlperl/lib/Test/More.pm b/Master/tlpkg/tlperl/lib/Test/More.pm
index 7212d25d6af..f1f9e37e8de 100644
--- a/Master/tlpkg/tlperl/lib/Test/More.pm
+++ b/Master/tlpkg/tlperl/lib/Test/More.pm
@@ -17,7 +17,7 @@ sub _carp {
return warn @_, " at $file line $line\n";
}
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Test::Builder::Module;
our @ISA = qw(Test::Builder::Module);
@@ -394,8 +394,13 @@ different from some other value:
isnt $obj, $clone, "clone() produces a different object";
-For those grammatical pedants out there, there's an C<isn't()>
-function which is an alias of C<isnt()>.
+Historically we supported an C<isn't()> function as an alias of
+C<isnt()>, however in Perl 5.37.9 support for the use of aprostrophe as
+a package separator was deprecated and by Perl 5.42.0 support for it
+will have been removed completely. Accordingly use of C<isn't()> is also
+deprecated, and will produce warnings when used unless 'deprecated'
+warnings are specifically disabled in the scope where it is used. You
+are strongly advised to migrate to using C<isnt()> instead.
=cut
@@ -411,8 +416,25 @@ sub isnt ($$;$) {
return $tb->isnt_eq(@_);
}
-*isn't = \&isnt;
-# ' to unconfuse syntax higlighters
+# Historically it was possible to use apostrophes as a package
+# separator. make this available as isn't() for perl's that support it.
+# However in 5.37.9 the apostrophe as a package separator was
+# deprecated, so warn users of isn't() that they should use isnt()
+# instead. We assume that if they are calling isn::t() they are doing so
+# via isn't() as we have no way to be sure that they aren't spelling it
+# with a double colon. We only trigger the warning if deprecation
+# warnings are enabled, so the user can silence the warning if they
+# wish.
+sub isn::t {
+ local ($@, $!, $?);
+ if (warnings::enabled("deprecated")) {
+ _carp
+ "Use of apostrophe as package separator was deprecated in Perl 5.37.9,\n",
+ "and will be removed in Perl 5.42.0. You should change code that uses\n",
+ "Test::More::isn't() to use Test::More::isnt() as a replacement";
+ }
+ goto &isnt;
+}
=item B<like>
@@ -1409,6 +1431,15 @@ and you'll know immediately when they're fixed.
Once a todo test starts succeeding, simply move it outside the block.
When the block is empty, delete it.
+Note that, if you leave $TODO unset or undef, Test::More reports failures
+as normal. This can be useful to mark the tests as expected to fail only
+in certain conditions, e.g.:
+
+ TODO: {
+ local $TODO = "$^O doesn't work yet. :(" if !_os_is_supported($^O);
+
+ ...
+ }
=item B<todo_skip>
@@ -1761,8 +1792,8 @@ sub eq_set {
Sometimes the Test::More interface isn't quite enough. Fortunately,
Test::More is built on top of L<Test::Builder> which provides a single,
unified backend for any test library to use. This means two test
-libraries which both use <Test::Builder> B<can> be used together in the
-same program>.
+libraries which both use L<Test::Builder> B<can> be used together in the
+same program.
If you simply want to do a little tweaking of how the tests behave,
you can access the underlying L<Test::Builder> object like so:
diff --git a/Master/tlpkg/tlperl/lib/Test/Simple.pm b/Master/tlpkg/tlperl/lib/Test/Simple.pm
index b8a6c7ca402..a7649f47875 100644
--- a/Master/tlpkg/tlperl/lib/Test/Simple.pm
+++ b/Master/tlpkg/tlperl/lib/Test/Simple.pm
@@ -4,7 +4,7 @@ use 5.006;
use strict;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Test::Builder::Module;
our @ISA = qw(Test::Builder::Module);
diff --git a/Master/tlpkg/tlperl/lib/Test/Tester.pm b/Master/tlpkg/tlperl/lib/Test/Tester.pm
index 506734ea8bc..9e91222ab7c 100644
--- a/Master/tlpkg/tlperl/lib/Test/Tester.pm
+++ b/Master/tlpkg/tlperl/lib/Test/Tester.pm
@@ -18,7 +18,7 @@ require Exporter;
use vars qw( @ISA @EXPORT );
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
@EXPORT = qw( run_tests check_tests check_test cmp_results show_space );
@ISA = qw( Exporter );
diff --git a/Master/tlpkg/tlperl/lib/Test/Tester/Capture.pm b/Master/tlpkg/tlperl/lib/Test/Tester/Capture.pm
index 71324b03d18..7c7e8545f8c 100644
--- a/Master/tlpkg/tlperl/lib/Test/Tester/Capture.pm
+++ b/Master/tlpkg/tlperl/lib/Test/Tester/Capture.pm
@@ -2,7 +2,7 @@ use strict;
package Test::Tester::Capture;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Test::Builder;
diff --git a/Master/tlpkg/tlperl/lib/Test/Tester/CaptureRunner.pm b/Master/tlpkg/tlperl/lib/Test/Tester/CaptureRunner.pm
index ffd6e99f2e8..574de86cdaf 100644
--- a/Master/tlpkg/tlperl/lib/Test/Tester/CaptureRunner.pm
+++ b/Master/tlpkg/tlperl/lib/Test/Tester/CaptureRunner.pm
@@ -3,7 +3,7 @@ use strict;
package Test::Tester::CaptureRunner;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Test::Tester::Capture;
diff --git a/Master/tlpkg/tlperl/lib/Test/Tester/Delegate.pm b/Master/tlpkg/tlperl/lib/Test/Tester/Delegate.pm
index 826c21e71e3..1c8d873cdd3 100644
--- a/Master/tlpkg/tlperl/lib/Test/Tester/Delegate.pm
+++ b/Master/tlpkg/tlperl/lib/Test/Tester/Delegate.pm
@@ -3,7 +3,7 @@ use warnings;
package Test::Tester::Delegate;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Scalar::Util();
diff --git a/Master/tlpkg/tlperl/lib/Test/use/ok.pm b/Master/tlpkg/tlperl/lib/Test/use/ok.pm
index 1e2f0df2c1c..757e1684aac 100644
--- a/Master/tlpkg/tlperl/lib/Test/use/ok.pm
+++ b/Master/tlpkg/tlperl/lib/Test/use/ok.pm
@@ -1,7 +1,7 @@
package Test::use::ok;
use 5.005;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
__END__
diff --git a/Master/tlpkg/tlperl/lib/Test2.pm b/Master/tlpkg/tlperl/lib/Test2.pm
index 7b8984beaf2..f6d47c47098 100755
--- a/Master/tlpkg/tlperl/lib/Test2.pm
+++ b/Master/tlpkg/tlperl/lib/Test2.pm
@@ -2,7 +2,7 @@ package Test2;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
1;
diff --git a/Master/tlpkg/tlperl/lib/Test2/API.pm b/Master/tlpkg/tlperl/lib/Test2/API.pm
index 6c663468ab0..68034c29d18 100755
--- a/Master/tlpkg/tlperl/lib/Test2/API.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/API.pm
@@ -2,6 +2,7 @@ package Test2::API;
use strict;
use warnings;
+use Time::HiRes qw/time/;
use Test2::Util qw/USE_THREADS/;
BEGIN {
@@ -9,7 +10,7 @@ BEGIN {
$ENV{TEST2_ACTIVE} = 1;
}
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
my $INST;
@@ -680,6 +681,8 @@ sub run_subtest {
};
}
+ my $start_stamp = time;
+
my ($ok, $err, $finished);
T2_SUBTEST_WRAPPER: {
# Do not use 'try' cause it localizes __DIE__
@@ -696,6 +699,8 @@ sub run_subtest {
}
}
+ my $stop_stamp = time;
+
if ($params->{no_fork}) {
if ($$ != $ctx->trace->pid) {
warn $ok ? "Forked inside subtest, but subtest never finished!\n" : $err;
@@ -746,6 +751,8 @@ sub run_subtest {
subtest_uuid => $hub->uuid,
buffered => $buffered,
subevents => \@events,
+ start_stamp => $start_stamp,
+ stop_stamp => $stop_stamp,
);
my $plan_ok = $hub->check_plan;
diff --git a/Master/tlpkg/tlperl/lib/Test2/API/Breakage.pm b/Master/tlpkg/tlperl/lib/Test2/API/Breakage.pm
index b661b9e2b8a..50234af864b 100755
--- a/Master/tlpkg/tlperl/lib/Test2/API/Breakage.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/API/Breakage.pm
@@ -2,7 +2,7 @@ package Test2::API::Breakage;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Test2::Util qw/pkg_to_file/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/API/Context.pm b/Master/tlpkg/tlperl/lib/Test2/API/Context.pm
index f94993c8e85..c6b638d0152 100755
--- a/Master/tlpkg/tlperl/lib/Test2/API/Context.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/API/Context.pm
@@ -2,7 +2,7 @@ package Test2::API::Context;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Carp qw/confess croak/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/API/Instance.pm b/Master/tlpkg/tlperl/lib/Test2/API/Instance.pm
index 8a0ef99e3d3..9a9ef58e3cc 100755
--- a/Master/tlpkg/tlperl/lib/Test2/API/Instance.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/API/Instance.pm
@@ -2,7 +2,7 @@ package Test2::API::Instance;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
our @CARP_NOT = qw/Test2::API Test2::API::Instance Test2::IPC::Driver Test2::Formatter/;
use Carp qw/confess carp/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult.pm b/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult.pm
index a679ac4806e..1d07841f1ca 100755
--- a/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult.pm
@@ -2,7 +2,7 @@ package Test2::API::InterceptResult;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Scalar::Util qw/blessed/;
use Test2::Util qw/pkg_to_file/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Event.pm b/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Event.pm
index 860f4966ee8..a93c4fd3c13 100755
--- a/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Event.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Event.pm
@@ -2,7 +2,7 @@ package Test2::API::InterceptResult::Event;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use List::Util qw/first/;
use Test2::Util qw/pkg_to_file/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Facet.pm b/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Facet.pm
index ca4a9b38b5b..54589fa5af2 100755
--- a/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Facet.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Facet.pm
@@ -2,7 +2,7 @@ package Test2::API::InterceptResult::Facet;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN {
require Test2::EventFacet;
diff --git a/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Hub.pm b/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Hub.pm
index aeb92c7b54e..fa0c329a0dd 100755
--- a/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Hub.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Hub.pm
@@ -2,7 +2,7 @@ package Test2::API::InterceptResult::Hub;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::Hub; our @ISA = qw(Test2::Hub) }
use Test2::Util::HashBase;
diff --git a/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Squasher.pm b/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Squasher.pm
index ace805e7816..670b9c7a992 100755
--- a/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Squasher.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/API/InterceptResult/Squasher.pm
@@ -2,7 +2,7 @@ package Test2::API::InterceptResult::Squasher;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Carp qw/croak/;
use List::Util qw/first/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/API/Stack.pm b/Master/tlpkg/tlperl/lib/Test2/API/Stack.pm
index b5585a8ef4a..98147b2a960 100755
--- a/Master/tlpkg/tlperl/lib/Test2/API/Stack.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/API/Stack.pm
@@ -2,7 +2,7 @@ package Test2::API::Stack;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Test2::Hub();
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event.pm b/Master/tlpkg/tlperl/lib/Test2/Event.pm
index 99a6fd43cb1..b914bd84cfa 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Event.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event.pm
@@ -2,7 +2,7 @@ package Test2::Event;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Scalar::Util qw/blessed reftype/;
use Carp qw/croak/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/Bail.pm b/Master/tlpkg/tlperl/lib/Test2/Event/Bail.pm
index 9b5092def83..49b8fe06826 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Event/Bail.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/Bail.pm
@@ -2,7 +2,7 @@ package Test2::Event::Bail;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/Diag.pm b/Master/tlpkg/tlperl/lib/Test2/Event/Diag.pm
index fb752352338..5ea440904eb 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Event/Diag.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/Diag.pm
@@ -2,7 +2,7 @@ package Test2::Event::Diag;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/Encoding.pm b/Master/tlpkg/tlperl/lib/Test2/Event/Encoding.pm
index 831fcebb4da..7f69da1b31c 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Event/Encoding.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/Encoding.pm
@@ -2,7 +2,7 @@ package Test2::Event::Encoding;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Carp qw/croak/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/Exception.pm b/Master/tlpkg/tlperl/lib/Test2/Event/Exception.pm
index a02a6012ac1..5898dc76b42 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Event/Exception.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/Exception.pm
@@ -2,7 +2,7 @@ package Test2::Event::Exception;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/Fail.pm b/Master/tlpkg/tlperl/lib/Test2/Event/Fail.pm
index 7a1eaa94f24..444c3f6c06e 100644
--- a/Master/tlpkg/tlperl/lib/Test2/Event/Fail.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/Fail.pm
@@ -2,7 +2,7 @@ package Test2::Event::Fail;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Test2::EventFacet::Info;
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/Generic.pm b/Master/tlpkg/tlperl/lib/Test2/Event/Generic.pm
index 409fb77bc49..170aa631bde 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Event/Generic.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/Generic.pm
@@ -5,7 +5,7 @@ use warnings;
use Carp qw/croak/;
use Scalar::Util qw/reftype/;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
use Test2::Util::HashBase;
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/Note.pm b/Master/tlpkg/tlperl/lib/Test2/Event/Note.pm
index 13613f8c961..d8e81eae042 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Event/Note.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/Note.pm
@@ -2,7 +2,7 @@ package Test2::Event::Note;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/Ok.pm b/Master/tlpkg/tlperl/lib/Test2/Event/Ok.pm
index d39c1dbf844..847baede3ca 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Event/Ok.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/Ok.pm
@@ -2,7 +2,7 @@ package Test2::Event::Ok;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/Pass.pm b/Master/tlpkg/tlperl/lib/Test2/Event/Pass.pm
index b5050459ce7..108ad5a0a27 100644
--- a/Master/tlpkg/tlperl/lib/Test2/Event/Pass.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/Pass.pm
@@ -2,7 +2,7 @@ package Test2::Event::Pass;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Test2::EventFacet::Info;
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/Plan.pm b/Master/tlpkg/tlperl/lib/Test2/Event/Plan.pm
index cc9d8049e33..b40b332c972 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Event/Plan.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/Plan.pm
@@ -2,7 +2,7 @@ package Test2::Event::Plan;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/Skip.pm b/Master/tlpkg/tlperl/lib/Test2/Event/Skip.pm
index 75d7db1bd8e..de73c68ef18 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Event/Skip.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/Skip.pm
@@ -2,7 +2,7 @@ package Test2::Event::Skip;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) }
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/Subtest.pm b/Master/tlpkg/tlperl/lib/Test2/Event/Subtest.pm
index 89081fa2251..6e8ebc9a09d 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Event/Subtest.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/Subtest.pm
@@ -2,10 +2,10 @@ package Test2::Event::Subtest;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::Event::Ok; our @ISA = qw(Test2::Event::Ok) }
-use Test2::Util::HashBase qw{subevents buffered subtest_id subtest_uuid};
+use Test2::Util::HashBase qw{subevents buffered subtest_id subtest_uuid start_stamp stop_stamp};
sub init {
my $self = shift;
@@ -68,10 +68,15 @@ sub facet_data {
my $out = $self->SUPER::facet_data();
+ my $start = $self->start_stamp;
+ my $stop = $self->stop_stamp;
+
$out->{parent} = {
hid => $self->subtest_id,
children => [map {$_->facet_data} @{$self->{+SUBEVENTS}}],
buffered => $self->{+BUFFERED},
+ $start ? (start_stamp => $start) : (),
+ $stop ? (stop_stamp => $stop) : (),
};
return $out;
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/TAP/Version.pm b/Master/tlpkg/tlperl/lib/Test2/Event/TAP/Version.pm
index bb90cc5f492..f52290fcad5 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Event/TAP/Version.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/TAP/Version.pm
@@ -2,7 +2,7 @@ package Test2::Event::TAP::Version;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Carp qw/croak/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/V2.pm b/Master/tlpkg/tlperl/lib/Test2/Event/V2.pm
index accab090d6c..f94b76c21ea 100644
--- a/Master/tlpkg/tlperl/lib/Test2/Event/V2.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/V2.pm
@@ -2,7 +2,7 @@ package Test2::Event::V2;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Scalar::Util qw/reftype/;
use Carp qw/croak/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/Event/Waiting.pm b/Master/tlpkg/tlperl/lib/Test2/Event/Waiting.pm
index 0f92a910b79..d031430b7af 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Event/Waiting.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Event/Waiting.pm
@@ -2,7 +2,7 @@ package Test2::Event::Waiting;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::Event; our @ISA = qw(Test2::Event) }
diff --git a/Master/tlpkg/tlperl/lib/Test2/EventFacet.pm b/Master/tlpkg/tlperl/lib/Test2/EventFacet.pm
index 171e005f859..96bf6c5e08a 100644
--- a/Master/tlpkg/tlperl/lib/Test2/EventFacet.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/EventFacet.pm
@@ -2,7 +2,7 @@ package Test2::EventFacet;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Test2::Util::HashBase qw/-details/;
use Carp qw/croak/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/EventFacet/About.pm b/Master/tlpkg/tlperl/lib/Test2/EventFacet/About.pm
index 50dfa4dfe01..e0a9ad6d938 100644
--- a/Master/tlpkg/tlperl/lib/Test2/EventFacet/About.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/EventFacet/About.pm
@@ -2,7 +2,7 @@ package Test2::EventFacet::About;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
use Test2::Util::HashBase qw{ -package -no_display -uuid -eid };
diff --git a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Amnesty.pm b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Amnesty.pm
index fb65846f16d..4850aa377df 100644
--- a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Amnesty.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Amnesty.pm
@@ -2,7 +2,7 @@ package Test2::EventFacet::Amnesty;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
sub is_list { 1 }
diff --git a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Assert.pm b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Assert.pm
index ffe2b054393..52554c9ab5f 100644
--- a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Assert.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Assert.pm
@@ -2,7 +2,7 @@ package Test2::EventFacet::Assert;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
use Test2::Util::HashBase qw{ -pass -no_debug -number };
diff --git a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Control.pm b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Control.pm
index 891d38f6dd4..e8cc63ac3b1 100644
--- a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Control.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Control.pm
@@ -2,7 +2,7 @@ package Test2::EventFacet::Control;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
use Test2::Util::HashBase qw{ -global -terminate -halt -has_callback -encoding -phase };
diff --git a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Error.pm b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Error.pm
index 407e7e73680..8772e9d4f66 100644
--- a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Error.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Error.pm
@@ -2,7 +2,7 @@ package Test2::EventFacet::Error;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
sub facet_key { 'errors' }
sub is_list { 1 }
diff --git a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Hub.pm b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Hub.pm
index 35a75c13a72..f8f6f3f90b9 100644
--- a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Hub.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Hub.pm
@@ -2,7 +2,7 @@ package Test2::EventFacet::Hub;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
sub is_list { 1 }
sub facet_key { 'hubs' }
diff --git a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Info.pm b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Info.pm
index 2aa38e96bd7..753344753ad 100644
--- a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Info.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Info.pm
@@ -2,7 +2,7 @@ package Test2::EventFacet::Info;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
sub is_list { 1 }
diff --git a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Info/Table.pm b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Info/Table.pm
index 351e88b4fa8..8ed95371b04 100755
--- a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Info/Table.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Info/Table.pm
@@ -2,7 +2,7 @@ package Test2::EventFacet::Info::Table;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Carp qw/confess/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Meta.pm b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Meta.pm
index 17f78bd59d4..59729a1bdb1 100644
--- a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Meta.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Meta.pm
@@ -2,7 +2,7 @@ package Test2::EventFacet::Meta;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
use vars qw/$AUTOLOAD/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Parent.pm b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Parent.pm
index 82521cd63d5..aab230c8ca3 100644
--- a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Parent.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Parent.pm
@@ -2,12 +2,12 @@ package Test2::EventFacet::Parent;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Carp qw/confess/;
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
-use Test2::Util::HashBase qw{ -hid -children -buffered };
+use Test2::Util::HashBase qw{-hid -children -buffered -start_stamp -stop_stamp};
sub init {
confess "Attribute 'hid' must be set"
diff --git a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Plan.pm b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Plan.pm
index 99349b35755..de22be47173 100644
--- a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Plan.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Plan.pm
@@ -2,7 +2,7 @@ package Test2::EventFacet::Plan;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
use Test2::Util::HashBase qw{ -count -skip -none };
diff --git a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Render.pm b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Render.pm
index 8cc8b7a8e52..2a38d1b75e5 100644
--- a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Render.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Render.pm
@@ -2,7 +2,7 @@ package Test2::EventFacet::Render;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
sub is_list { 1 }
diff --git a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Trace.pm b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Trace.pm
index 6c4e4550b51..fbdfa2b70dc 100644
--- a/Master/tlpkg/tlperl/lib/Test2/EventFacet/Trace.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/EventFacet/Trace.pm
@@ -2,7 +2,7 @@ package Test2::EventFacet::Trace;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::EventFacet; our @ISA = qw(Test2::EventFacet) }
diff --git a/Master/tlpkg/tlperl/lib/Test2/Formatter.pm b/Master/tlpkg/tlperl/lib/Test2/Formatter.pm
index 981baba2d1d..93117a08985 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Formatter.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Formatter.pm
@@ -2,7 +2,7 @@ package Test2::Formatter;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
my %ADDED;
diff --git a/Master/tlpkg/tlperl/lib/Test2/Formatter/TAP.pm b/Master/tlpkg/tlperl/lib/Test2/Formatter/TAP.pm
index 0b1e9475d00..ae381d7e9df 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Formatter/TAP.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Formatter/TAP.pm
@@ -2,7 +2,7 @@ package Test2::Formatter::TAP;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Test2::Util qw/clone_io/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/Hub.pm b/Master/tlpkg/tlperl/lib/Test2/Hub.pm
index 207099b2502..5ee50809bf3 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Hub.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Hub.pm
@@ -2,7 +2,7 @@ package Test2::Hub;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Carp qw/carp croak confess/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/Hub/Interceptor.pm b/Master/tlpkg/tlperl/lib/Test2/Hub/Interceptor.pm
index 13930c55bd4..c1c86d818d9 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Hub/Interceptor.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Hub/Interceptor.pm
@@ -2,7 +2,7 @@ package Test2::Hub::Interceptor;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Test2::Hub::Interceptor::Terminator();
diff --git a/Master/tlpkg/tlperl/lib/Test2/Hub/Interceptor/Terminator.pm b/Master/tlpkg/tlperl/lib/Test2/Hub/Interceptor/Terminator.pm
index b37f505745b..90c03f91b73 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Hub/Interceptor/Terminator.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Hub/Interceptor/Terminator.pm
@@ -2,7 +2,7 @@ package Test2::Hub::Interceptor::Terminator;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
1;
diff --git a/Master/tlpkg/tlperl/lib/Test2/Hub/Subtest.pm b/Master/tlpkg/tlperl/lib/Test2/Hub/Subtest.pm
index 7c75eed0a87..89dde5b432e 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Hub/Subtest.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Hub/Subtest.pm
@@ -2,7 +2,7 @@ package Test2::Hub::Subtest;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::Hub; our @ISA = qw(Test2::Hub) }
use Test2::Util::HashBase qw/nested exit_code manual_skip_all/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/IPC.pm b/Master/tlpkg/tlperl/lib/Test2/IPC.pm
index 1f6478b6add..807bd6c6290 100755
--- a/Master/tlpkg/tlperl/lib/Test2/IPC.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/IPC.pm
@@ -2,7 +2,7 @@ package Test2::IPC;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Test2::API::Instance;
diff --git a/Master/tlpkg/tlperl/lib/Test2/IPC/Driver.pm b/Master/tlpkg/tlperl/lib/Test2/IPC/Driver.pm
index 35978070e20..a00e1ec4c86 100755
--- a/Master/tlpkg/tlperl/lib/Test2/IPC/Driver.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/IPC/Driver.pm
@@ -2,7 +2,7 @@ package Test2::IPC::Driver;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Carp qw/confess/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/IPC/Driver/Files.pm b/Master/tlpkg/tlperl/lib/Test2/IPC/Driver/Files.pm
index a443c9193a1..4edd40c4631 100755
--- a/Master/tlpkg/tlperl/lib/Test2/IPC/Driver/Files.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/IPC/Driver/Files.pm
@@ -2,7 +2,7 @@ package Test2::IPC::Driver::Files;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Test2::IPC::Driver; our @ISA = qw(Test2::IPC::Driver) }
@@ -296,8 +296,8 @@ sub parse_event_filename {
return {
file => $file,
- ready => $ready,
- complete => $complete,
+ ready => !!$ready,
+ complete => !!$complete,
global => $global,
type => $type,
hid => $hid,
diff --git a/Master/tlpkg/tlperl/lib/Test2/Tools/Tiny.pm b/Master/tlpkg/tlperl/lib/Test2/Tools/Tiny.pm
index c9c5bb3215c..636ba2f6729 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Tools/Tiny.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Tools/Tiny.pm
@@ -16,7 +16,7 @@ use Test2::API qw/context run_subtest test2_stack/;
use Test2::Hub::Interceptor();
use Test2::Hub::Interceptor::Terminator();
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
BEGIN { require Exporter; our @ISA = qw(Exporter) }
our @EXPORT = qw{
diff --git a/Master/tlpkg/tlperl/lib/Test2/Util.pm b/Master/tlpkg/tlperl/lib/Test2/Util.pm
index b78f80a9040..aebfc2fd69e 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Util.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Util.pm
@@ -2,7 +2,7 @@ package Test2::Util;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use POSIX();
use Config qw/%Config/;
@@ -49,7 +49,8 @@ sub _can_thread {
# Threads are broken on perl 5.10.0 built with gcc 4.8+
if ($] == 5.010000 && $Config{'ccname'} eq 'gcc' && $Config{'gccversion'}) {
- my @parts = split /\./, $Config{'gccversion'};
+ return 0 unless $Config{'gccversion'} =~ m/^(\d+)\.(\d+)/;
+ my @parts = split /[\.\s]+/, $Config{'gccversion'};
return 0 if $parts[0] > 4 || ($parts[0] == 4 && $parts[1] >= 8);
}
diff --git a/Master/tlpkg/tlperl/lib/Test2/Util/ExternalMeta.pm b/Master/tlpkg/tlperl/lib/Test2/Util/ExternalMeta.pm
index cfa0a5699b8..774870c6893 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Util/ExternalMeta.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Util/ExternalMeta.pm
@@ -2,7 +2,7 @@ package Test2::Util::ExternalMeta;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Carp qw/croak/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/Util/Facets2Legacy.pm b/Master/tlpkg/tlperl/lib/Test2/Util/Facets2Legacy.pm
index 0e0ed65dbbc..d8d77d52e16 100644
--- a/Master/tlpkg/tlperl/lib/Test2/Util/Facets2Legacy.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Util/Facets2Legacy.pm
@@ -2,7 +2,7 @@ package Test2::Util::Facets2Legacy;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use Carp qw/croak confess/;
use Scalar::Util qw/blessed/;
diff --git a/Master/tlpkg/tlperl/lib/Test2/Util/HashBase.pm b/Master/tlpkg/tlperl/lib/Test2/Util/HashBase.pm
index da1bf916a85..c0c61a1bce8 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Util/HashBase.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Util/HashBase.pm
@@ -2,7 +2,7 @@ package Test2::Util::HashBase;
use strict;
use warnings;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
#################################################################
# #
diff --git a/Master/tlpkg/tlperl/lib/Test2/Util/Trace.pm b/Master/tlpkg/tlperl/lib/Test2/Util/Trace.pm
index b374064cbe4..ad80226cae5 100755
--- a/Master/tlpkg/tlperl/lib/Test2/Util/Trace.pm
+++ b/Master/tlpkg/tlperl/lib/Test2/Util/Trace.pm
@@ -6,7 +6,7 @@ use strict;
our @ISA = ('Test2::EventFacet::Trace');
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
1;
diff --git a/Master/tlpkg/tlperl/lib/Text/Balanced.pm b/Master/tlpkg/tlperl/lib/Text/Balanced.pm
index 324a023f385..49f3d8926c7 100644
--- a/Master/tlpkg/tlperl/lib/Text/Balanced.pm
+++ b/Master/tlpkg/tlperl/lib/Text/Balanced.pm
@@ -1,6 +1,7 @@
# Copyright (C) 1997-2001 Damian Conway. All rights reserved.
# Copyright (C) 2009 Adam Kennedy.
-# Copyright (C) 2015 Steve Hay. All rights reserved.
+# Copyright (C) 2015, 2022 Steve Hay and other contributors. All rights
+# reserved.
# This module is free software; you can redistribute it and/or modify it under
# the same terms as Perl itself, i.e. under the terms of either the GNU General
@@ -17,7 +18,7 @@ use Exporter ();
use vars qw { $VERSION @ISA %EXPORT_TAGS };
BEGIN {
- $VERSION = '2.04';
+ $VERSION = '2.06';
@ISA = 'Exporter';
%EXPORT_TAGS = (
ALL => [ qw{
@@ -37,14 +38,22 @@ BEGIN {
Exporter::export_ok_tags('ALL');
-## no critic (Subroutines::ProhibitSubroutinePrototypes)
-
-# PROTOTYPES
-
-sub _match_bracketed($$$$$$);
-sub _match_variable($$);
-sub _match_codeblock($$$$$$$);
-sub _match_quotelike($$$$);
+our $RE_PREREGEX_PAT = qr#(
+ [!=]~
+ | split|grep|map
+ | not|and|or|xor
+)#x;
+our $RE_EXPR_PAT = qr#(
+ (?:\*\*|&&|\|\||<<|>>|//|[-+*x%^&|.])=?
+ | /(?:[^/])
+ | =(?!>)
+ | return
+ | [\(\[]
+)#x;
+our $RE_NUM = qr/\s*[+\-.0-9][+\-.0-9e]*/i; # numerical constant
+
+our %ref2slashvalid; # is quotelike /.../ pattern valid here for given textref?
+our %ref2qmarkvalid; # is quotelike ?...? pattern valid here for given textref?
# HANDLE RETURN VALUES IN VARIOUS CONTEXTS
@@ -99,6 +108,7 @@ sub _succeed {
}
# BUILD A PATTERN MATCHING A SIMPLE DELIMITED STRING
+## no critic (Subroutines::ProhibitSubroutinePrototypes)
sub gen_delimited_pat($;$) # ($delimiters;$escapes)
{
@@ -132,6 +142,7 @@ sub gen_delimited_pat($;$) # ($delimiters;$escapes)
sub extract_delimited (;$$$$)
{
my $textref = defined $_[0] ? \$_[0] : \$_;
+ $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 if !pos($$textref); # reset
my $wantarray = wantarray;
my $del = defined $_[1] ? $_[1] : qq{\'\"\`};
my $pre = defined $_[2] ? $_[2] : '\s*';
@@ -149,33 +160,45 @@ sub extract_delimited (;$$$$)
$startpos, $prelen; # PREFIX
}
-sub extract_bracketed (;$$$)
-{
- my $textref = defined $_[0] ? \$_[0] : \$_;
- my $ldel = defined $_[1] ? $_[1] : '{([<';
- my $pre = defined $_[2] ? $_[2] : '\s*';
- my $wantarray = wantarray;
+my %eb_delim_cache;
+sub _eb_delims {
+ my ($ldel_orig) = @_;
+ return @{ $eb_delim_cache{$ldel_orig} } if $eb_delim_cache{$ldel_orig};
my $qdel = "";
my $quotelike;
+ my $ldel = $ldel_orig;
$ldel =~ s/'//g and $qdel .= q{'};
$ldel =~ s/"//g and $qdel .= q{"};
$ldel =~ s/`//g and $qdel .= q{`};
$ldel =~ s/q//g and $quotelike = 1;
$ldel =~ tr/[](){}<>\0-\377/[[(({{<</ds;
my $rdel = $ldel;
- unless ($rdel =~ tr/[({</])}>/)
+ return @{ $eb_delim_cache{$ldel_orig} = [] } unless $rdel =~ tr/[({</])}>/;
+ my $posbug = pos;
+ $ldel = join('|', map { quotemeta $_ } split('', $ldel));
+ $rdel = join('|', map { quotemeta $_ } split('', $rdel));
+ pos = $posbug;
+ @{ $eb_delim_cache{$ldel_orig} = [
+ qr/\G($ldel)/, $qdel && qr/\G([$qdel])/, $quotelike, qr/\G($rdel)/
+ ] };
+}
+sub extract_bracketed (;$$$)
+{
+ my $textref = defined $_[0] ? \$_[0] : \$_;
+ $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 if !pos($$textref); # reset
+ my $ldel = defined $_[1] ? $_[1] : '{([<';
+ my $pre = defined $_[2] ? qr/\G$_[2]/ : qr/\G\s*/;
+ my $wantarray = wantarray;
+ my @ret = _eb_delims($ldel);
+ unless (@ret)
{
return _fail $wantarray, $textref,
"Did not find a suitable bracket in delimiter: \"$_[1]\"",
0;
}
- my $posbug = pos;
- $ldel = join('|', map { quotemeta $_ } split('', $ldel));
- $rdel = join('|', map { quotemeta $_ } split('', $rdel));
- pos = $posbug;
my $startpos = pos $$textref || 0;
- my @match = _match_bracketed($textref,$pre, $ldel, $qdel, $quotelike, $rdel);
+ my @match = _match_bracketed($textref, $pre, @ret);
return _fail ($wantarray, $textref) unless @match;
@@ -186,11 +209,11 @@ sub extract_bracketed (;$$$)
);
}
-sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rdel
+sub _match_bracketed # $textref, $pre, $ldel, $qdel, $quotelike, $rdel
{
my ($textref, $pre, $ldel, $qdel, $quotelike, $rdel) = @_;
my ($startpos, $ldelpos, $endpos) = (pos $$textref = pos $$textref||0);
- unless ($$textref =~ m/\G$pre/gc)
+ unless ($$textref =~ m/$pre/gc)
{
_failmsg "Did not find prefix: /$pre/", $startpos;
return;
@@ -198,7 +221,7 @@ sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rde
$ldelpos = pos $$textref;
- unless ($$textref =~ m/\G($ldel)/gc)
+ unless ($$textref =~ m/$ldel/gc)
{
_failmsg "Did not find opening bracket after prefix: \"$pre\"",
pos $$textref;
@@ -212,11 +235,11 @@ sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rde
{
next if $$textref =~ m/\G\\./gcs;
- if ($$textref =~ m/\G($ldel)/gc)
+ if ($$textref =~ m/$ldel/gc)
{
push @nesting, $1;
}
- elsif ($$textref =~ m/\G($rdel)/gc)
+ elsif ($$textref =~ m/$rdel/gc)
{
my ($found, $brackettype) = ($1, $1);
if ($#nesting < 0)
@@ -237,7 +260,7 @@ sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rde
}
last if $#nesting < 0;
}
- elsif ($qdel && $$textref =~ m/\G([$qdel])/gc)
+ elsif ($qdel && $$textref =~ m/$qdel/gc)
{
$$textref =~ m/\G[^\\$1]*(?:\\.[^\\$1]*)*(\Q$1\E)/gsc and next;
_failmsg "Unmatched embedded quote ($1)",
@@ -245,8 +268,9 @@ sub _match_bracketed($$$$$$) # $textref, $pre, $ldel, $qdel, $quotelike, $rde
pos $$textref = $startpos;
return;
}
- elsif ($quotelike && _match_quotelike($textref,"",1,0))
+ elsif ($quotelike && _match_quotelike($textref,qr/\G()/,$ref2slashvalid{$textref},$ref2qmarkvalid{$textref}))
{
+ $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 1; # back-compat
next;
}
@@ -281,12 +305,14 @@ sub _revbracket($)
my $XMLNAME = q{[a-zA-Z_:][a-zA-Z0-9_:.-]*};
+my $et_default_ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>';
sub extract_tagged (;$$$$$) # ($text, $opentag, $closetag, $pre, \%options)
{
my $textref = defined $_[0] ? \$_[0] : \$_;
+ $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 if !pos($$textref); # reset
my $ldel = $_[1];
my $rdel = $_[2];
- my $pre = defined $_[3] ? $_[3] : '\s*';
+ my $pre = defined $_[3] ? qr/\G$_[3]/ : qr/\G\s*/;
my %options = defined $_[4] ? %{$_[4]} : ();
my $omode = defined $options{fail} ? $options{fail} : '';
my $bad = ref($options{reject}) eq 'ARRAY' ? join('|', @{$options{reject}})
@@ -298,7 +324,7 @@ sub extract_tagged (;$$$$$) # ($text, $opentag, $closetag, $pre, \%options)
: ''
;
- if (!defined $ldel) { $ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; }
+ $ldel = $et_default_ldel if !defined $ldel;
$@ = undef;
my @match = _match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore);
@@ -316,7 +342,7 @@ sub _match_tagged # ($$$$$$$)
my ($startpos, $opentagpos, $textpos, $parapos, $closetagpos, $endpos) = ( pos($$textref) = pos($$textref)||0 );
- unless ($$textref =~ m/\G($pre)/gc)
+ unless ($$textref =~ m/$pre/gc)
{
_failmsg "Did not find prefix: /$pre/", pos $$textref;
goto failed;
@@ -433,7 +459,8 @@ sub extract_variable (;$$)
{
my $textref = defined $_[0] ? \$_[0] : \$_;
return ("","","") unless defined $$textref;
- my $pre = defined $_[1] ? $_[1] : '\s*';
+ $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 if !pos($$textref); # reset
+ my $pre = defined $_[1] ? qr/\G$_[1]/ : qr/\G\s*/;
my @match = _match_variable($textref,$pre);
@@ -443,14 +470,14 @@ sub extract_variable (;$$)
@match[2..3,4..5,0..1]; # MATCH, REMAINDER, PREFIX
}
-sub _match_variable($$)
+sub _match_variable
{
# $#
# $^
# $$
my ($textref, $pre) = @_;
my $startpos = pos($$textref) = pos($$textref)||0;
- unless ($$textref =~ m/\G($pre)/gc)
+ unless ($$textref =~ m/$pre/gc)
{
_failmsg "Did not find prefix: /$pre/", pos $$textref;
return;
@@ -467,8 +494,9 @@ sub _match_variable($$)
my $deref = $1;
unless ($$textref =~ m/\G\s*(?:::|')?(?:[_a-z]\w*(?:::|'))*[_a-z]\w*/gci
- or _match_codeblock($textref, "", '\{', '\}', '\{', '\}', 0)
- or $deref eq '$#' or $deref eq '$$' )
+ or _match_codeblock($textref, qr/\G()/, '\{', qr/\G\s*(\})/, '\{', '\}', 0, 1)
+ or $deref eq '$#' or $deref eq '$$'
+ or pos($$textref) == length $$textref )
{
_failmsg "Bad identifier after dereferencer", pos $$textref;
pos $$textref = $startpos;
@@ -480,16 +508,17 @@ sub _match_variable($$)
{
next if $$textref =~ m/\G\s*(?:->)?\s*[{]\w+[}]/gc;
next if _match_codeblock($textref,
- qr/\s*->\s*(?:[_a-zA-Z]\w+\s*)?/,
- qr/[({[]/, qr/[)}\]]/,
- qr/[({[]/, qr/[)}\]]/, 0);
+ qr/\G\s*->\s*(?:[_a-zA-Z]\w+\s*)?/,
+ qr/[({[]/, qr/\G\s*([)}\]])/,
+ qr/[({[]/, qr/[)}\]]/, 0, 1);
next if _match_codeblock($textref,
- qr/\s*/, qr/[{[]/, qr/[}\]]/,
- qr/[{[]/, qr/[}\]]/, 0);
- next if _match_variable($textref,'\s*->\s*');
+ qr/\G\s*/, qr/[{[]/, qr/\G\s*([}\]])/,
+ qr/[{[]/, qr/[}\]]/, 0, 1);
+ next if _match_variable($textref,qr/\G\s*->\s*/);
next if $$textref =~ m/\G\s*->\s*\w+(?![{([])/gc;
last;
}
+ $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 0;
my $endpos = pos($$textref);
return ($startpos, $varpos-$startpos,
@@ -498,14 +527,11 @@ sub _match_variable($$)
);
}
-sub extract_codeblock (;$$$$$)
-{
- my $textref = defined $_[0] ? \$_[0] : \$_;
- my $wantarray = wantarray;
- my $ldel_inner = defined $_[1] ? $_[1] : '{';
- my $pre = defined $_[2] ? $_[2] : '\s*';
- my $ldel_outer = defined $_[3] ? $_[3] : $ldel_inner;
- my $rd = $_[4];
+my %ec_delim_cache;
+sub _ec_delims {
+ my ($ldel_inner, $ldel_outer) = @_;
+ return @{ $ec_delim_cache{$ldel_outer}{$ldel_inner} }
+ if $ec_delim_cache{$ldel_outer}{$ldel_inner};
my $rdel_inner = $ldel_inner;
my $rdel_outer = $ldel_outer;
my $posbug = pos;
@@ -516,23 +542,34 @@ sub extract_codeblock (;$$$$$)
$_ = '('.join('|',map { quotemeta $_ } split('',$_)).')'
}
pos = $posbug;
+ @{ $ec_delim_cache{$ldel_outer}{$ldel_inner} = [
+ $ldel_outer, qr/\G\s*($rdel_outer)/, $ldel_inner, $rdel_inner
+ ] };
+}
+sub extract_codeblock (;$$$$$)
+{
+ my $textref = defined $_[0] ? \$_[0] : \$_;
+ $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 if !pos($$textref); # reset
+ my $wantarray = wantarray;
+ my $ldel_inner = defined $_[1] ? $_[1] : '{';
+ my $pre = !defined $_[2] ? qr/\G\s*/ : qr/\G$_[2]/;
+ my $ldel_outer = defined $_[3] ? $_[3] : $ldel_inner;
+ my $rd = $_[4];
+ my @delims = _ec_delims($ldel_inner, $ldel_outer);
- my @match = _match_codeblock($textref, $pre,
- $ldel_outer, $rdel_outer,
- $ldel_inner, $rdel_inner,
- $rd);
+ my @match = _match_codeblock($textref, $pre, @delims, $rd, 1);
return _fail($wantarray, $textref) unless @match;
return _succeed($wantarray, $textref,
@match[2..3,4..5,0..1] # MATCH, REMAINDER, PREFIX
);
-
}
-sub _match_codeblock($$$$$$$)
+sub _match_codeblock
{
- my ($textref, $pre, $ldel_outer, $rdel_outer, $ldel_inner, $rdel_inner, $rd) = @_;
+ my ($textref, $pre, $ldel_outer, $rdel_outer, $ldel_inner, $rdel_inner, $rd, $no_backcompat) = @_;
+ $rdel_outer = qr/\G\s*($rdel_outer)/ if !$no_backcompat; # Switch calls this func directly
my $startpos = pos($$textref) = pos($$textref) || 0;
- unless ($$textref =~ m/\G($pre)/gc)
+ unless ($$textref =~ m/$pre/gc)
{
_failmsg qq{Did not match prefix /$pre/ at"} .
substr($$textref,pos($$textref),20) .
@@ -553,13 +590,13 @@ sub _match_codeblock($$$$$$$)
my $closing = $1;
$closing =~ tr/([<{/)]>}/;
my $matched;
- my $patvalid = 1;
+ $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0
+ if !pos($$textref) or !defined $ref2slashvalid{$textref}; # default, or reset
while (pos($$textref) < length($$textref))
{
- $matched = '';
if ($rd && $$textref =~ m#\G(\Q(?)\E|\Q(s?)\E|\Q(s)\E)#gc)
{
- $patvalid = 0;
+ $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 0;
next;
}
@@ -568,7 +605,7 @@ sub _match_codeblock($$$$$$$)
next;
}
- if ($$textref =~ m/\G\s*($rdel_outer)/gc)
+ if ($$textref =~ m/$rdel_outer/gc)
{
unless ($matched = ($closing && $1 eq $closing) )
{
@@ -581,31 +618,22 @@ sub _match_codeblock($$$$$$$)
last;
}
- if (_match_variable($textref,'\s*') ||
- _match_quotelike($textref,'\s*',$patvalid,$patvalid) )
+ if (_match_variable($textref,qr/\G\s*/) ||
+ _match_quotelike($textref,qr/\G\s*/,$ref2slashvalid{$textref},$ref2qmarkvalid{$textref}) )
{
- $patvalid = 0;
+ $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 0;
next;
}
-
- # NEED TO COVER MANY MORE CASES HERE!!!
- if ($$textref =~ m#\G\s*(?!$ldel_inner)
- ( [-+*x/%^&|.]=?
- | [!=]~
- | =(?!>)
- | (\*\*|&&|\|\||<<|>>)=?
- | split|grep|map|return
- | [([]
- )#gcx)
+ if ($$textref =~ m#\G\s*(?!$ldel_inner)(?:$RE_PREREGEX_PAT|$RE_EXPR_PAT)#gc)
{
- $patvalid = 1;
+ $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 1;
next;
}
- if ( _match_codeblock($textref, '\s*', $ldel_inner, $rdel_inner, $ldel_inner, $rdel_inner, $rd) )
+ if ( _match_codeblock($textref, qr/\G\s*/, $ldel_inner, qr/\G\s*($rdel_inner)/, $ldel_inner, $rdel_inner, $rd, 1) )
{
- $patvalid = 1;
+ $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 1;
next;
}
@@ -618,7 +646,7 @@ sub _match_codeblock($$$$$$$)
last;
}
- $patvalid = 0;
+ $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 0;
$$textref =~ m/\G\s*(\w+|[-=>]>|.|\Z)/gc;
}
continue { $@ = undef }
@@ -630,6 +658,7 @@ sub _match_codeblock($$$$$$$)
return;
}
+ $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = undef;
my $endpos = pos($$textref);
return ( $startpos, $codepos-$startpos,
$codepos, $endpos-$codepos,
@@ -654,10 +683,11 @@ my %mods = (
sub extract_quotelike (;$$)
{
my $textref = $_[0] ? \$_[0] : \$_;
+ $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 if !pos($$textref); # reset
my $wantarray = wantarray;
- my $pre = defined $_[1] ? $_[1] : '\s*';
+ my $pre = defined $_[1] ? qr/\G$_[1]/ : qr/\G\s*/;
- my @match = _match_quotelike($textref,$pre,1,0);
+ my @match = _match_quotelike($textref,$pre,$ref2slashvalid{$textref},$ref2qmarkvalid{$textref});
return _fail($wantarray, $textref) unless @match;
return _succeed($wantarray, $textref,
$match[2], $match[18]-$match[2], # MATCH
@@ -668,17 +698,19 @@ sub extract_quotelike (;$$)
);
};
-sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match)
+my %maybe_quote = map +($_=>1), qw(" ' `);
+sub _match_quotelike
{
- my ($textref, $pre, $rawmatch, $qmark) = @_;
+ my ($textref, $pre, $allow_slash_match, $allow_qmark_match) = @_;
+ $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0
+ if !pos($$textref) or !defined $ref2slashvalid{$textref}; # default, or reset
my ($textlen,$startpos,
- $oppos,
$preld1pos,$ld1pos,$str1pos,$rd1pos,
$preld2pos,$ld2pos,$str2pos,$rd2pos,
$modpos) = ( length($$textref), pos($$textref) = pos($$textref) || 0 );
- unless ($$textref =~ m/\G($pre)/gc)
+ unless ($$textref =~ m/$pre/gc)
{
_failmsg qq{Did not find prefix /$pre/ at "} .
substr($$textref, pos($$textref), 20) .
@@ -686,15 +718,13 @@ sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match)
pos $$textref;
return;
}
- $oppos = pos($$textref);
-
+ my $oppos = pos($$textref);
my $initial = substr($$textref,$oppos,1);
-
- if ($initial && $initial =~ m|^[\"\'\`]|
- || $rawmatch && $initial =~ m|^/|
- || $qmark && $initial =~ m|^\?|)
+ if ($initial && $maybe_quote{$initial}
+ || $allow_slash_match && $initial eq '/'
+ || $allow_qmark_match && $initial eq '?')
{
- unless ($$textref =~ m/ \Q$initial\E [^\\$initial]* (\\.[^\\$initial]*)* \Q$initial\E /gcsx)
+ unless ($$textref =~ m/\G \Q$initial\E [^\\$initial]* (\\.[^\\$initial]*)* \Q$initial\E /gcsx)
{
_failmsg qq{Did not find closing delimiter to match '$initial' at "} .
substr($$textref, $oppos, 20) .
@@ -712,6 +742,7 @@ sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match)
}
my $endpos = pos($$textref);
+ $ref2qmarkvalid{$textref} = $ref2slashvalid{$textref} = 0;
return (
$startpos, $oppos-$startpos, # PREFIX
$oppos, 0, # NO OPERATOR
@@ -726,7 +757,7 @@ sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match)
);
}
- unless ($$textref =~ m{\G(\b(?:m|s|qq|qx|qw|q|qr|tr|y)\b(?=\s*\S)|<<)}gc)
+ unless ($$textref =~ m{\G(\b(?:m|s|qq|qx|qw|q|qr|tr|y)\b(?=\s*\S)|<<(?=[a-zA-Z]|\s*['"`;,]))}gc)
{
_failmsg q{No quotelike operator found after prefix at "} .
substr($$textref, pos($$textref), 20) .
@@ -767,6 +798,7 @@ sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match)
$rd1pos = pos($$textref);
$$textref =~ m{\Q$label\E\n}gc;
$ld2pos = pos($$textref);
+ $ref2qmarkvalid{$textref} = $ref2slashvalid{$textref} = 0;
return (
$startpos, $oppos-$startpos, # PREFIX
$oppos, length($op), # OPERATOR
@@ -786,19 +818,26 @@ sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match)
$ld1pos = pos($$textref);
$str1pos = $ld1pos+1;
- unless ($$textref =~ m/\G(\S)/gc) # SHOULD USE LOOKAHEAD
+ if ($$textref !~ m/\G(\S)/gc) # SHOULD USE LOOKAHEAD
{
_failmsg "No block delimiter found after quotelike $op",
pos $$textref;
pos $$textref = $startpos;
return;
}
+ elsif (substr($$textref, $ld1pos, 2) eq '=>')
+ {
+ _failmsg "quotelike $op was actually quoted by '=>'",
+ pos $$textref;
+ pos $$textref = $startpos;
+ return;
+ }
pos($$textref) = $ld1pos; # HAVE TO DO THIS BECAUSE LOOKAHEAD BROKEN
my ($ldel1, $rdel1) = ("\Q$1","\Q$1");
if ($ldel1 =~ /[[(<{]/)
{
$rdel1 =~ tr/[({</])}>/;
- defined(_match_bracketed($textref,"",$ldel1,"","",$rdel1))
+ defined(_match_bracketed($textref,qr/\G/,qr/\G($ldel1)/,"","",qr/\G($rdel1)/))
|| do { pos $$textref = $startpos; return };
$ld2pos = pos($$textref);
$rd1pos = $ld2pos-1;
@@ -835,7 +874,7 @@ sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match)
if ($ldel2 =~ /[[(<{]/)
{
pos($$textref)--; # OVERCOME BROKEN LOOKAHEAD
- defined(_match_bracketed($textref,"",$ldel2,"","",$rdel2))
+ defined(_match_bracketed($textref,qr/\G/,qr/\G($ldel2)/,"","",qr/\G($rdel2)/))
|| do { pos $$textref = $startpos; return };
}
else
@@ -854,6 +893,7 @@ sub _match_quotelike($$$$) # ($textref, $prepat, $allow_raw_match)
$$textref =~ m/\G($mods{$op})/gc;
my $endpos = pos $$textref;
+ $ref2qmarkvalid{$textref} = $ref2slashvalid{$textref} = undef;
return (
$startpos, $oppos-$startpos, # PREFIX
@@ -874,10 +914,26 @@ my $def_func = [
sub { extract_quotelike($_[0],'') },
sub { extract_codeblock($_[0],'{}','') },
];
+my %ref_not_regex = map +($_=>1), qw(CODE Text::Balanced::Extractor);
+sub _update_patvalid {
+ my ($textref, $text) = @_;
+ if ($ref2slashvalid{$textref} && $text =~ m/(?:$RE_NUM|[\)\]])\s*$/)
+ {
+ $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 0;
+ } elsif (!$ref2slashvalid{$textref} && $text =~ m/$RE_PREREGEX_PAT\s*$/)
+ {
+ $ref2slashvalid{$textref} = $ref2qmarkvalid{$textref} = 1;
+ } elsif (!$ref2slashvalid{$textref} && $text =~ m/$RE_EXPR_PAT\s*$/)
+ {
+ $ref2slashvalid{$textref} = 1;
+ $ref2qmarkvalid{$textref} = 0;
+ }
+}
sub extract_multiple (;$$$$) # ($text, $functions_ref, $max_fields, $ignoreunknown)
{
my $textref = defined($_[0]) ? \$_[0] : \$_;
+ $ref2slashvalid{$textref} = 1, $ref2qmarkvalid{$textref} = 0 if !pos($$textref); # reset
my $posbug = pos;
my ($lastpos, $firstpos);
my @fields = ();
@@ -898,39 +954,28 @@ sub extract_multiple (;$$$$) # ($text, $functions_ref, $max_fields, $ignoreun
$max = 1
}
- my $unkpos;
- my $class;
-
my @class;
foreach my $func ( @func )
{
- if (ref($func) eq 'HASH')
- {
- push @class, (keys %$func)[0];
- $func = (values %$func)[0];
- }
- else
- {
- push @class, undef;
- }
+ push @class, undef;
+ ($class[-1], $func) = %$func if ref($func) eq 'HASH';
+ $func = qr/\G$func/ if !$ref_not_regex{ref $func};
}
+ my $unkpos;
FIELD: while (pos($$textref) < length($$textref))
{
- my ($field, $rem);
- my @bits;
foreach my $i ( 0..$#func )
{
- my $pref;
- my $func = $func[$i];
- $class = $class[$i];
+ my ($field, $pref);
+ my ($class, $func) = ($class[$i], $func[$i]);
$lastpos = pos $$textref;
if (ref($func) eq 'CODE')
- { ($field,$rem,$pref) = @bits = $func->($$textref) }
+ { ($field,undef,$pref) = $func->($$textref) }
elsif (ref($func) eq 'Text::Balanced::Extractor')
- { @bits = $field = $func->extract($$textref) }
- elsif( $$textref =~ m/\G$func/gc )
- { @bits = $field = defined($1)
+ { $field = $func->extract($$textref) }
+ elsif( $$textref =~ m/$func[$i]/gc )
+ { $field = defined($1)
? $1
: substr($$textref, $-[0], $+[0] - $-[0])
}
@@ -948,9 +993,8 @@ sub extract_multiple (;$$$$) # ($text, $functions_ref, $max_fields, $ignoreun
last FIELD if @fields == $max;
}
}
- push @fields, $class
- ? bless (\$field, $class)
- : $field;
+ push @fields, $class ? bless(\$field, $class) : $field;
+ _update_patvalid($textref, $fields[-1]);
$firstpos = $lastpos unless defined $firstpos;
$lastpos = pos $$textref;
last FIELD if @fields == $max;
@@ -961,6 +1005,7 @@ sub extract_multiple (;$$$$) # ($text, $functions_ref, $max_fields, $ignoreun
{
$unkpos = pos($$textref)-1
unless $igunk || defined $unkpos;
+ _update_patvalid($textref, substr $$textref, $unkpos, pos($$textref)-$unkpos);
}
}
@@ -986,7 +1031,7 @@ sub gen_extract_tagged # ($opentag, $closetag, $pre, \%options)
{
my $ldel = $_[0];
my $rdel = $_[1];
- my $pre = defined $_[2] ? $_[2] : '\s*';
+ my $pre = defined $_[2] ? qr/\G$_[2]/ : qr/\G\s*/;
my %options = defined $_[3] ? %{$_[3]} : ();
my $omode = defined $options{fail} ? $options{fail} : '';
my $bad = ref($options{reject}) eq 'ARRAY' ? join('|', @{$options{reject}})
@@ -998,16 +1043,16 @@ sub gen_extract_tagged # ($opentag, $closetag, $pre, \%options)
: ''
;
- if (!defined $ldel) { $ldel = '<\w+(?:' . gen_delimited_pat(q{'"}) . '|[^>])*>'; }
+ $ldel = $et_default_ldel if !defined $ldel;
my $posbug = pos;
- for ($ldel, $pre, $bad, $ignore) { $_ = qr/$_/ if $_ }
+ for ($ldel, $bad, $ignore) { $_ = qr/$_/ if $_ }
pos = $posbug;
my $closure = sub
{
my $textref = defined $_[0] ? \$_[0] : \$_;
- my @match = Text::Balanced::_match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore);
+ my @match = _match_tagged($textref, $pre, $ldel, $rdel, $omode, $bad, $ignore);
return _fail(wantarray, $textref) unless @match;
return _succeed wantarray, $textref,
@@ -1027,7 +1072,9 @@ sub extract($$) # ($self, $text)
package Text::Balanced::ErrorMsg;
-use overload '""' => sub { "$_[0]->{error}, detected at offset $_[0]->{pos}" };
+use overload
+ '""' => sub { "$_[0]->{error}, detected at offset $_[0]->{pos}" },
+ fallback => 1;
1;
@@ -1450,7 +1497,7 @@ A string to be processed (C<$_> if the string is omitted or C<undef>)
=item 2.
-A string specifying a pattern to be matched as the opening tag.
+A string specifying a pattern (i.e. regex) to be matched as the opening tag.
If the pattern string is omitted (or C<undef>) then a pattern
that matches any standard XML tag is used.
@@ -1854,7 +1901,8 @@ C<"extract_quotelike">.
C<extract_codeblock> takes the same initial three parameters as C<extract_bracketed>:
a text to process, a set of delimiter brackets to look for, and a prefix to
match first. It also takes an optional fourth parameter, which allows the
-outermost delimiter brackets to be specified separately (see below).
+outermost delimiter brackets to be specified separately (see below),
+and a fifth parameter used only by L<Parse::RecDescent>.
Omitting the first argument (input text) means process C<$_> instead.
Omitting the second argument (delimiter brackets) indicates that only C<'{'> is to be used.
@@ -2063,12 +2111,14 @@ operator (and removes it from $text):
Finally, here is yet another way to do comma-separated value parsing:
+ $csv_text = "a,'x b',c";
@fields = extract_multiple($csv_text,
[
sub { extract_delimited($_[0],q{'"}) },
- qr/([^,]+)(.*)/,
+ qr/([^,]+)/,
],
undef,1);
+ # @fields is now ('a', "'x b'", 'c')
The list in the second argument means:
I<"Try and extract a ' or " delimited string, otherwise extract anything up to a comma...">.
@@ -2084,7 +2134,7 @@ just make the last parameter undefined (or remove it).
=item C<gen_delimited_pat>
The C<gen_delimited_pat> subroutine takes a single (string) argument and
- > builds a Friedl-style optimized regex that matches a string delimited
+builds a Friedl-style optimized regex that matches a string delimited
by any one of the characters in the single argument. For example:
gen_delimited_pat(q{'"})
@@ -2360,7 +2410,8 @@ Copyright (C) 1997-2001 Damian Conway. All rights reserved.
Copyright (C) 2009 Adam Kennedy.
-Copyright (C) 2015, 2020 Steve Hay. All rights reserved.
+Copyright (C) 2015, 2020, 2022 Steve Hay and other contributors. All rights
+reserved.
=head1 LICENCE
@@ -2370,11 +2421,11 @@ License or the Artistic License, as specified in the F<LICENCE> file.
=head1 VERSION
-Version 2.04
+Version 2.06
=head1 DATE
-11 Dec 2020
+05 Jun 2022
=head1 HISTORY
diff --git a/Master/tlpkg/tlperl/lib/Text/ParseWords.pm b/Master/tlpkg/tlperl/lib/Text/ParseWords.pm
index 87f9c70a216..2bfe74d4a31 100644
--- a/Master/tlpkg/tlperl/lib/Text/ParseWords.pm
+++ b/Master/tlpkg/tlperl/lib/Text/ParseWords.pm
@@ -1,8 +1,9 @@
package Text::ParseWords;
use strict;
+use warnings;
require 5.006;
-our $VERSION = "3.30";
+our $VERSION = "3.31";
use Exporter;
@@ -190,31 +191,46 @@ Text::ParseWords - parse text into an array of tokens or array of arrays
=head1 DESCRIPTION
-The &nested_quotewords() and &quotewords() functions accept a delimiter
+The C<nested_quotewords()> and C<quotewords()> functions accept a delimiter
(which can be a regular expression)
and a list of lines and then breaks those lines up into a list of
-words ignoring delimiters that appear inside quotes. &quotewords()
-returns all of the tokens in a single long list, while &nested_quotewords()
-returns a list of token lists corresponding to the elements of @lines.
-&parse_line() does tokenizing on a single string. The &*quotewords()
-functions simply call &parse_line(), so if you're only splitting
-one line you can call &parse_line() directly and save a function
+words ignoring delimiters that appear inside quotes. C<quotewords()>
+returns all of the tokens in a single long list, while C<nested_quotewords()>
+returns a list of token lists corresponding to the elements of C<@lines>.
+C<parse_line()> does tokenizing on a single string. The C<*quotewords()>
+functions simply call C<parse_line()>, so if you're only splitting
+one line you can call C<parse_line()> directly and save a function
call.
-The $keep argument is a boolean flag. If true, then the tokens are
-split on the specified delimiter, but all other characters (including
-quotes and backslashes) are kept in the tokens. If $keep is false then the
-&*quotewords() functions remove all quotes and backslashes that are
+The C<$keep> controls what happens with delimters and special characters:
+
+=over 4
+
+=item true
+
+If true, then the tokens are split on the specified delimiter,
+but all other characters (including quotes and backslashes)
+are kept in the tokens.
+
+=item false
+
+If $keep is false then the C<*quotewords()> functions
+remove all quotes and backslashes that are
not themselves backslash-escaped or inside of single quotes (i.e.,
-&quotewords() tries to interpret these characters just like the Bourne
+C<quotewords()> tries to interpret these characters just like the Bourne
shell). NB: these semantics are significantly different from the
original version of this module shipped with Perl 5.000 through 5.004.
+
+=item C<"delimiters">
+
As an additional feature, $keep may be the keyword "delimiters" which
causes the functions to preserve the delimiters in each string as
tokens in the token lists, in addition to preserving quote and
backslash characters.
-&shellwords() is written as a special case of &quotewords(), and it
+=back
+
+C<shellwords()> is written as a special case of C<quotewords()>, and it
does token parsing with whitespace as a delimiter-- similar to most
Unix shells.
@@ -280,20 +296,28 @@ L<Text::CSV> - for parsing CSV files
=head1 AUTHORS
-Maintainer: Alexandr Ciornii <alexchornyATgmail.com>.
+The original author is unknown,
+but presumably this evolved from C<shellwords.pl> in Perl 4.
+
+Much of the code for C<parse_line()>
+(including the primary regexp)
+came from Joerk Behrends E<lt>jbehrends@multimediaproduzenten.deE<gt>.
+
+Examples section and other documentation provided by
+John Heidemann E<lt>johnh@ISI.EDUE<gt>.
-Previous maintainer: Hal Pomeranz <pomeranz@netcom.com>, 1994-1997 (Original
-author unknown). Much of the code for &parse_line() (including the
-primary regexp) from Joerk Behrends <jbehrends@multimediaproduzenten.de>.
+Hal Pomeranz E<lt>pomeranz@netcom.comE<gt>
+maintained this from 1994 through 1999,
+and did the first CPAN release.
-Examples section another documentation provided by John Heidemann
-<johnh@ISI.EDU>
+Alexandr Ciornii E<lt>alexchornyATgmail.comE<gt>
+maintained this from 2008 to 2015.
-Bug reports, patches, and nagging provided by lots of folks-- thanks
-everybody! Special thanks to Michael Schwern <schwern@envirolink.org>
-for assuring me that a &nested_quotewords() would be useful, and to
-Jeff Friedl <jfriedl@yahoo-inc.com> for telling me not to worry about
-error-checking (sort of-- you had to be there).
+Many other people have contributed,
+with special thanks due to
+Michael Schwern E<lt>schwern@envirolink.orgE<gt>
+and
+Jeff Friedl E<lt>jfriedl@yahoo-inc.comE<gt>.
=head1 COPYRIGHT AND LICENSE
diff --git a/Master/tlpkg/tlperl/lib/Text/Tabs.pm b/Master/tlpkg/tlperl/lib/Text/Tabs.pm
index 07fe2b8b021..b6c826ded93 100644
--- a/Master/tlpkg/tlperl/lib/Text/Tabs.pm
+++ b/Master/tlpkg/tlperl/lib/Text/Tabs.pm
@@ -1,44 +1,32 @@
-package Text::Tabs;
-
-require Exporter;
-
-@ISA = (Exporter);
-@EXPORT = qw(expand unexpand $tabstop);
+use strict; use warnings;
-use vars qw($VERSION $SUBVERSION $tabstop $debug);
-$VERSION = 2013.0523;
-$SUBVERSION = 'modern';
-
-use strict;
+package Text::Tabs;
-use 5.010_000;
+BEGIN { require Exporter; *import = \&Exporter::import }
-BEGIN {
- $tabstop = 8;
- $debug = 0;
-}
+our @EXPORT = qw( expand unexpand $tabstop );
-my $CHUNK = qr/\X/;
+our $VERSION = '2021.0814';
+our $SUBVERSION = 'modern'; # back-compat vestige
-sub _xlen (_) { scalar(() = $_[0] =~ /$CHUNK/g) }
-sub _xpos (_) { _xlen( substr( $_[0], 0, pos($_[0]) ) ) }
+our $tabstop = 8;
sub expand {
my @l;
my $pad;
for ( @_ ) {
+ defined or do { push @l, ''; next };
my $s = '';
for (split(/^/m, $_, -1)) {
- my $offs = 0;
- s{\t}{
- # this works on both 5.10 and 5.11
- $pad = $tabstop - (_xlen(${^PREMATCH}) + $offs) % $tabstop;
- # this works on 5.11, but fails on 5.10
- #XXX# $pad = $tabstop - (_xpos() + $offs) % $tabstop;
- $offs += $pad - 1;
- " " x $pad;
- }peg;
- $s .= $_;
+ my $offs;
+ for (split(/\t/, $_, -1)) {
+ if (defined $offs) {
+ $pad = $tabstop - $offs % $tabstop;
+ $s .= " " x $pad;
+ }
+ $s .= $_;
+ $offs = () = /\PM/g;
+ }
}
push(@l, $s);
}
@@ -56,21 +44,17 @@ sub unexpand
my $lastbit;
my $ts_as_space = " " x $tabstop;
for $x (@l) {
+ defined $x or next;
@lines = split("\n", $x, -1);
for $line (@lines) {
$line = expand($line);
- @e = split(/(${CHUNK}{$tabstop})/,$line,-1);
+ @e = split(/((?:\PM\pM*){$tabstop})/,$line,-1);
$lastbit = pop(@e);
$lastbit = ''
unless defined $lastbit;
$lastbit = "\t"
if $lastbit eq $ts_as_space;
for $_ (@e) {
- if ($debug) {
- my $x = $_;
- $x =~ s/\t/^I\t/gs;
- print "sub on '$x'\n";
- }
s/ +$/\t/;
}
$line = join('',@e, $lastbit);
@@ -82,22 +66,8 @@ sub unexpand
}
1;
-__END__
-
-sub expand
-{
- my (@l) = @_;
- for $_ (@l) {
- 1 while s/(^|\n)([^\t\n]*)(\t+)/
- $1. $2 . (" " x
- ($tabstop * length($3)
- - (length($2) % $tabstop)))
- /sex;
- }
- return @l if wantarray;
- return $l[0];
-}
+__END__
=head1 NAME
@@ -164,17 +134,6 @@ Instead of the shell's C<unexpand -a> command, use:
perl -MText::Tabs -n -e 'print unexpand $_'
-=head1 SUBVERSION
-
-This module comes in two flavors: one for modern perls (5.10 and above)
-and one for ancient obsolete perls. The version for modern perls has
-support for Unicode. The version for old perls does not. You can tell
-which version you have installed by looking at C<$Text::Tabs::SUBVERSION>:
-it is C<old> for obsolete perls and C<modern> for current perls.
-
-This man page is for the version for modern perls and so that's probably
-what you've got.
-
=head1 BUGS
Text::Tabs handles only tabs (C<"\t">) and combining characters (C</\pM/>). It doesn't
diff --git a/Master/tlpkg/tlperl/lib/Text/Wrap.pm b/Master/tlpkg/tlperl/lib/Text/Wrap.pm
index db0d15f6106..eff0e717c49 100644
--- a/Master/tlpkg/tlperl/lib/Text/Wrap.pm
+++ b/Master/tlpkg/tlperl/lib/Text/Wrap.pm
@@ -1,42 +1,32 @@
+use strict; use warnings;
+
package Text::Wrap;
use warnings::register;
-require Exporter;
-
-@ISA = qw(Exporter);
-@EXPORT = qw(wrap fill);
-@EXPORT_OK = qw($columns $break $huge);
-$VERSION = 2013.0523;
-$SUBVERSION = 'modern';
+BEGIN { require Exporter; *import = \&Exporter::import }
-use 5.010_000;
+our @EXPORT = qw( wrap fill );
+our @EXPORT_OK = qw( $columns $break $huge );
-use vars qw($VERSION $SUBVERSION $columns $debug $break $huge $unexpand $tabstop $separator $separator2);
-use strict;
-
-BEGIN {
- $columns = 76; # <= screen width
- $debug = 0;
- $break = '(?=\s)\X';
- $huge = 'wrap'; # alternatively: 'die' or 'overflow'
- $unexpand = 1;
- $tabstop = 8;
- $separator = "\n";
- $separator2 = undef;
-}
+our $VERSION = '2021.0814';
+our $SUBVERSION = 'modern'; # back-compat vestige
-my $CHUNK = qr/\X/;
+our $columns = 76; # <= screen width
+our $break = '(?=\s)(?:\r\n|\PM\pM*)';
+our $huge = 'wrap'; # alternatively: 'die' or 'overflow'
+our $unexpand = 1;
+our $tabstop = 8;
+our $separator = "\n";
+our $separator2 = undef;
-sub _xlen(_) { scalar(() = $_[0] =~ /$CHUNK/g) }
-
-sub _xpos(_) { _xlen( substr( $_[0], 0, pos($_[0]) ) ) }
+sub _xlen { () = $_[0] =~ /\PM/g }
use Text::Tabs qw(expand unexpand);
sub wrap
{
- my ($ip, $xp, @t) = @_;
+ my ($ip, $xp, @t) = map +( defined $_ ? $_ : '' ), @_;
local($Text::Tabs::tabstop) = $tabstop;
my $r = "";
@@ -59,17 +49,17 @@ sub wrap
pos($t) = 0;
while ($t !~ /\G(?:$break)*\Z/gc) {
- if ($t =~ /\G((?:(?=[^\n])\X){0,$ll})($break|\n+|\z)/xmgc) {
+ if ($t =~ /\G((?:(?!\n)\PM\pM*){0,$ll})($break|\n+|\z)/xmgc) {
$r .= $unexpand
? unexpand($nl . $lead . $1)
: $nl . $lead . $1;
$remainder = $2;
- } elsif ($huge eq 'wrap' && $t =~ /\G((?:(?=[^\n])\X){$ll})/gc) {
+ } elsif ($huge eq 'wrap' && $t =~ /\G((?:(?!\n)\PM\pM*){$ll})/gc) {
$r .= $unexpand
? unexpand($nl . $lead . $1)
: $nl . $lead . $1;
$remainder = defined($separator2) ? $separator2 : $separator;
- } elsif ($huge eq 'overflow' && $t =~ /\G((?:(?=[^\n])\X)*?)($break|\n+|\z)/xmgc) {
+ } elsif ($huge eq 'overflow' && $t =~ /\G((?:(?!\n)\PM\pM*)*?)($break|\n+|\z)/xmgc) {
$r .= $unexpand
? unexpand($nl . $lead . $1)
: $nl . $lead . $1;
@@ -79,7 +69,7 @@ sub wrap
} elsif ($columns < 2) {
warnings::warnif "Increasing \$Text::Wrap::columns from $columns to 2";
$columns = 2;
- return ($ip, $xp, @t);
+ return @_;
} else {
die "This shouldn't happen";
}
@@ -94,23 +84,15 @@ sub wrap
}
$r .= $remainder;
- print "-----------$r---------\n" if $debug;
-
- print "Finish up with '$lead'\n" if $debug;
-
- my($opos) = pos($t);
-
$r .= $lead . substr($t, pos($t), length($t) - pos($t))
if pos($t) ne length($t);
- print "-----------$r---------\n" if $debug;;
-
return $r;
}
sub fill
{
- my ($ip, $xp, @raw) = @_;
+ my ($ip, $xp, @raw) = map +( defined $_ ? $_ : '' ), @_;
my @para;
my $pp;
@@ -128,6 +110,7 @@ sub fill
}
1;
+
__END__
=head1 NAME
@@ -269,17 +252,6 @@ Result:
"This is a bit of|text that forms a|normal book-style|paragraph"
-=head1 SUBVERSION
-
-This module comes in two flavors: one for modern perls (5.10 and above)
-and one for ancient obsolete perls. The version for modern perls has
-support for Unicode. The version for old perls does not. You can tell
-which version you have installed by looking at C<$Text::Wrap::SUBVERSION>:
-it is C<old> for obsolete perls and C<modern> for current perls.
-
-This man page is for the version for modern perls and so that's probably
-what you've got.
-
=head1 SEE ALSO
For correct handling of East Asian half- and full-width characters,
diff --git a/Master/tlpkg/tlperl/lib/Tie/File.pm b/Master/tlpkg/tlperl/lib/Tie/File.pm
index 824789337be..13d4fa6839b 100644
--- a/Master/tlpkg/tlperl/lib/Tie/File.pm
+++ b/Master/tlpkg/tlperl/lib/Tie/File.pm
@@ -11,7 +11,7 @@ use Fcntl 'O_CREAT', 'O_RDWR', 'LOCK_EX', 'LOCK_SH', 'O_WRONLY', 'O_RDONLY';
sub O_ACCMODE () { O_RDONLY | O_RDWR | O_WRONLY }
-our $VERSION = "1.06";
+our $VERSION = "1.07";
my $DEFAULT_MEMORY_SIZE = 1<<21; # 2 megabytes
my $DEFAULT_AUTODEFER_THRESHHOLD = 3; # 3 records
my $DEFAULT_AUTODEFER_FILELEN_THRESHHOLD = 65536; # 16 disk blocksful
diff --git a/Master/tlpkg/tlperl/lib/Tie/Handle.pm b/Master/tlpkg/tlperl/lib/Tie/Handle.pm
index 4e92f75a3d1..e6aa34bc927 100644
--- a/Master/tlpkg/tlperl/lib/Tie/Handle.pm
+++ b/Master/tlpkg/tlperl/lib/Tie/Handle.pm
@@ -1,7 +1,7 @@
package Tie::Handle;
use 5.006_001;
-our $VERSION = '4.2';
+our $VERSION = '4.3';
# Tie::StdHandle used to be inside Tie::Handle. For backwards compatibility
# loading Tie::Handle has to make Tie::StdHandle available.
@@ -128,7 +128,7 @@ sub new {
$pkg->TIEHANDLE(@_);
}
-# "Grandfather" the new, a la Tie::Hash
+# Legacy support for new(), a la Tie::Hash
sub TIEHANDLE {
my $pkg = shift;
diff --git a/Master/tlpkg/tlperl/lib/Tie/Hash.pm b/Master/tlpkg/tlperl/lib/Tie/Hash.pm
index 89a6181a335..03493e06509 100644
--- a/Master/tlpkg/tlperl/lib/Tie/Hash.pm
+++ b/Master/tlpkg/tlperl/lib/Tie/Hash.pm
@@ -1,6 +1,6 @@
package Tie::Hash;
-our $VERSION = '1.05';
+our $VERSION = '1.06';
=head1 NAME
@@ -60,7 +60,7 @@ as methods C<TIEHASH>, C<EXISTS> and C<CLEAR>. The B<Tie::StdHash> and
B<Tie::ExtraHash> packages
provide most methods for hashes described in L<perltie> (the exceptions
are C<UNTIE> and C<DESTROY>). They cause tied hashes to behave exactly like standard hashes,
-and allow for selective overwriting of methods. B<Tie::Hash> grandfathers the
+and allow for selective overwriting of methods. B<Tie::Hash> has legacy support for the
C<new> method: it is used if C<TIEHASH> is not defined
in the case a class forgets to include a C<TIEHASH> method.
@@ -195,7 +195,7 @@ sub new {
$pkg->TIEHASH(@_);
}
-# Grandfather "new"
+# Legacy support for new()
sub TIEHASH {
my $pkg = shift;
diff --git a/Master/tlpkg/tlperl/lib/Tie/Scalar.pm b/Master/tlpkg/tlperl/lib/Tie/Scalar.pm
index 62f89f88c88..b8d6e8ffcee 100644
--- a/Master/tlpkg/tlperl/lib/Tie/Scalar.pm
+++ b/Master/tlpkg/tlperl/lib/Tie/Scalar.pm
@@ -1,6 +1,6 @@
package Tie::Scalar;
-our $VERSION = '1.05';
+our $VERSION = '1.06';
=head1 NAME
@@ -41,7 +41,7 @@ as methods C<TIESCALAR>, C<FETCH> and C<STORE>. The B<Tie::StdScalar>
package provides all the methods specified in L<perltie>. It inherits from
B<Tie::Scalar> and causes scalars tied to it to behave exactly like the
built-in scalars, allowing for selective overloading of methods. The C<new>
-method is provided as a means of grandfathering, for classes that forget to
+method is provided as a means of legacy support for classes that forget to
provide their own C<TIESCALAR> method.
For developers wishing to write their own tied-scalar classes, the methods
@@ -101,7 +101,7 @@ sub new {
$pkg->TIESCALAR(@_);
}
-# "Grandfather" the new, a la Tie::Hash
+# Legacy support for new(), a la Tie::Hash
sub TIESCALAR {
my $pkg = shift;
diff --git a/Master/tlpkg/tlperl/lib/Tie/SubstrHash.pm b/Master/tlpkg/tlperl/lib/Tie/SubstrHash.pm
index 476dd686787..f2677a616f8 100644
--- a/Master/tlpkg/tlperl/lib/Tie/SubstrHash.pm
+++ b/Master/tlpkg/tlperl/lib/Tie/SubstrHash.pm
@@ -1,6 +1,4 @@
-package Tie::SubstrHash;
-
-our $VERSION = '1.00';
+package Tie::SubstrHash 1.01;
=head1 NAME
@@ -39,114 +37,116 @@ The hash does not support exists().
=cut
+use strict;
+use warnings;
+no warnings 'experimental::builtin';
+
use Carp;
sub TIEHASH {
- my $pack = shift;
- my ($klen, $vlen, $tsize) = @_;
+ my ($pack, $klen, $vlen, $tsize) = @_;
my $rlen = 1 + $klen + $vlen;
- $tsize = [$tsize,
- findgteprime($tsize * 1.1)]; # Allow 10% empty.
- local $self = bless ["\0", $klen, $vlen, $tsize, $rlen, 0, -1];
- $$self[0] x= $rlen * $tsize->[1];
+ $tsize = [$tsize, findgteprime($tsize * 1.1)]; # Allow 10% empty.
+ my $self = bless ["\0", $klen, $vlen, $tsize, $rlen, 0, -1];
+ $self->[0] x= $rlen * $tsize->[1];
$self;
}
sub CLEAR {
- local($self) = @_;
- $$self[0] = "\0" x ($$self[4] * $$self[3]->[1]);
- $$self[5] = 0;
- $$self[6] = -1;
+ my ($self) = @_;
+ $self->[0] = "\0" x ($self->[4] * $self->[3][1]);
+ $self->[5] = 0;
+ $self->[6] = -1;
}
sub FETCH {
- local($self,$key) = @_;
- local($klen, $vlen, $tsize, $rlen) = @$self[1..4];
- &hashkey;
- for (;;) {
- $offset = $hash * $rlen;
- $record = substr($$self[0], $offset, $rlen);
- if (ord($record) == 0) {
- return undef;
- }
- elsif (ord($record) == 1) {
- }
- elsif (substr($record, 1, $klen) eq $key) {
- return substr($record, 1+$klen, $vlen);
- }
- &rehash;
+ my ($self, $key) = @_;
+ my (undef, $klen, $vlen, $tsize, $rlen) = @$self;
+ my $hashbase = my $hash = hashkey($key, $klen, $tsize);
+ while (1) {
+ my $offset = $hash * $rlen;
+ my $record = substr($self->[0], $offset, $rlen);
+ if (ord($record) == 0) {
+ return undef;
+ }
+ elsif (ord($record) == 1) {
+ }
+ elsif (substr($record, 1, $klen) eq $key) {
+ return substr($record, 1+$klen, $vlen);
+ }
+ $hash = rehash($hash, $hashbase, $tsize);
}
}
sub STORE {
- local($self,$key,$val) = @_;
- local($klen, $vlen, $tsize, $rlen) = @$self[1..4];
- croak("Table is full ($tsize->[0] elements)") if $$self[5] > $tsize->[0];
+ my ($self, $key, $val) = @_;
+ my (undef, $klen, $vlen, $tsize, $rlen) = @$self;
+ croak("Table is full ($tsize->[0] elements)") if $self->[5] > $tsize->[0];
croak(qq/Value "$val" is not $vlen characters long/)
- if length($val) != $vlen;
+ if length($val) != $vlen;
my $writeoffset;
- &hashkey;
- for (;;) {
- $offset = $hash * $rlen;
- $record = substr($$self[0], $offset, $rlen);
- if (ord($record) == 0) {
- $record = "\2". $key . $val;
- die "panic" unless length($record) == $rlen;
- $writeoffset = $offset unless defined $writeoffset;
- substr($$self[0], $writeoffset, $rlen) = $record;
- ++$$self[5];
- return;
- }
- elsif (ord($record) == 1) {
- $writeoffset = $offset unless defined $writeoffset;
- }
- elsif (substr($record, 1, $klen) eq $key) {
- $record = "\2". $key . $val;
- die "panic" unless length($record) == $rlen;
- substr($$self[0], $offset, $rlen) = $record;
- return;
- }
- &rehash;
+ my $hashbase = my $hash = hashkey($key, $klen, $tsize);
+ while (1) {
+ my $offset = $hash * $rlen;
+ my $record = substr($self->[0], $offset, $rlen);
+ if (ord($record) == 0) {
+ $record = "\2". $key . $val;
+ die "panic" unless length($record) == $rlen;
+ $writeoffset //= $offset;
+ substr($self->[0], $writeoffset, $rlen) = $record;
+ ++$self->[5];
+ return;
+ }
+ elsif (ord($record) == 1) {
+ $writeoffset //= $offset;
+ }
+ elsif (substr($record, 1, $klen) eq $key) {
+ $record = "\2". $key . $val;
+ die "panic" unless length($record) == $rlen;
+ substr($self->[0], $offset, $rlen) = $record;
+ return;
+ }
+ $hash = rehash($hash, $hashbase, $tsize);
}
}
sub DELETE {
- local($self,$key) = @_;
- local($klen, $vlen, $tsize, $rlen) = @$self[1..4];
- &hashkey;
- for (;;) {
- $offset = $hash * $rlen;
- $record = substr($$self[0], $offset, $rlen);
- if (ord($record) == 0) {
- return undef;
- }
- elsif (ord($record) == 1) {
- }
- elsif (substr($record, 1, $klen) eq $key) {
- substr($$self[0], $offset, 1) = "\1";
- return substr($record, 1+$klen, $vlen);
- --$$self[5];
- }
- &rehash;
+ my ($self, $key) = @_;
+ my (undef, $klen, $vlen, $tsize, $rlen) = @$self;
+ my $hashbase = my $hash = hashkey($key, $klen, $tsize);
+ while (1) {
+ my $offset = $hash * $rlen;
+ my $record = substr($self->[0], $offset, $rlen);
+ if (ord($record) == 0) {
+ return undef;
+ }
+ elsif (ord($record) == 1) {
+ }
+ elsif (substr($record, 1, $klen) eq $key) {
+ substr($self->[0], $offset, 1) = "\1";
+ return substr($record, 1+$klen, $vlen);
+ --$self->[5];
+ }
+ $hash = rehash($hash, $hashbase, $tsize);
}
}
sub FIRSTKEY {
- local($self) = @_;
- $$self[6] = -1;
- &NEXTKEY;
+ my ($self) = @_;
+ $self->[6] = -1;
+ goto &NEXTKEY;
}
sub NEXTKEY {
- local($self) = @_;
- local($klen, $vlen, $tsize, $rlen, $entries, $iterix) = @$self[1..6];
+ my ($self) = @_;
+ my (undef, $klen, $vlen, $tsize, $rlen, $entries, $iterix) = @$self;
for (++$iterix; $iterix < $tsize->[1]; ++$iterix) {
- next unless substr($$self[0], $iterix * $rlen, 1) eq "\2";
- $$self[6] = $iterix;
- return substr($$self[0], $iterix * $rlen + 1, $klen);
+ next unless substr($self->[0], $iterix * $rlen, 1) eq "\2";
+ $self->[6] = $iterix;
+ return substr($self->[0], $iterix * $rlen + 1, $klen);
}
- $$self[6] = -1;
+ $self->[6] = -1;
undef;
}
@@ -155,32 +155,29 @@ sub EXISTS {
}
sub hashkey {
+ my ($key, $klen, $tsize) = @_;
croak(qq/Key "$key" is not $klen characters long/)
- if length($key) != $klen;
- $hash = 2;
+ if length($key) != $klen;
+ my $hash = 2;
for (unpack('C*', $key)) {
- $hash = $hash * 33 + $_;
- &_hashwrap if $hash >= 1e13;
+ $hash = $hash * 33 + $_;
+ $hash = _hashwrap($hash, $tsize) if $hash >= 1e13;
}
- &_hashwrap if $hash >= $tsize->[1];
- $hash = 1 unless $hash;
- $hashbase = $hash;
+ $hash = _hashwrap($hash, $tsize) if $hash >= $tsize->[1];
+ $hash ||= 1;
+ return $hash;
}
sub _hashwrap {
- $hash -= int($hash / $tsize->[1]) * $tsize->[1];
+ my ($hash, $tsize) = @_;
+ return $hash - int($hash / $tsize->[1]) * $tsize->[1];
}
sub rehash {
+ my ($hash, $hashbase, $tsize) = @_;
$hash += $hashbase;
$hash -= $tsize->[1] if $hash >= $tsize->[1];
-}
-
-# using POSIX::ceil() would be too heavy, and not all platforms have it.
-sub ceil {
- my $num = shift;
- $num = int($num + 1) unless $num == int $num;
- return $num;
+ return $hash;
}
# See:
@@ -191,21 +188,20 @@ sub ceil {
sub findgteprime { # find the smallest prime integer greater than or equal to
use integer;
- my $num = ceil(shift);
+ my $num = builtin::ceil(shift);
return 2 if $num <= 2;
$num++ unless $num % 2;
- my $i;
my $sqrtnum = int sqrt $num;
my $sqrtnumsquared = $sqrtnum * $sqrtnum;
NUM:
for (;; $num += 2) {
- if ($sqrtnumsquared < $num) {
- $sqrtnum++;
- $sqrtnumsquared = $sqrtnum * $sqrtnum;
- }
- for ($i = 3; $i <= $sqrtnum; $i += 2) {
+ if ($sqrtnumsquared < $num) {
+ $sqrtnum++;
+ $sqrtnumsquared = $sqrtnum * $sqrtnum;
+ }
+ for (my $i = 3; $i <= $sqrtnum; $i += 2) {
next NUM unless $num % $i;
}
return $num;
diff --git a/Master/tlpkg/tlperl/lib/Time/HiRes.pm b/Master/tlpkg/tlperl/lib/Time/HiRes.pm
index 9377c3479fb..b8cd263c3e5 100644
--- a/Master/tlpkg/tlperl/lib/Time/HiRes.pm
+++ b/Master/tlpkg/tlperl/lib/Time/HiRes.pm
@@ -50,7 +50,7 @@ our @EXPORT_OK = qw (usleep sleep ualarm alarm gettimeofday time tv_interval
stat lstat utime
);
-our $VERSION = '1.9767';
+our $VERSION = '1.9775';
our $XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
diff --git a/Master/tlpkg/tlperl/lib/Time/Piece.pm b/Master/tlpkg/tlperl/lib/Time/Piece.pm
index f5d87cd0316..58dc5af0efe 100644
--- a/Master/tlpkg/tlperl/lib/Time/Piece.pm
+++ b/Master/tlpkg/tlperl/lib/Time/Piece.pm
@@ -19,7 +19,7 @@ our %EXPORT_TAGS = (
':override' => 'internal',
);
-our $VERSION = '1.3401';
+our $VERSION = '1.3401_01';
XSLoader::load( 'Time::Piece', $VERSION );
diff --git a/Master/tlpkg/tlperl/lib/UNIVERSAL.pm b/Master/tlpkg/tlperl/lib/UNIVERSAL.pm
index 12800fb54cc..96ecfe6e432 100644
--- a/Master/tlpkg/tlperl/lib/UNIVERSAL.pm
+++ b/Master/tlpkg/tlperl/lib/UNIVERSAL.pm
@@ -1,6 +1,6 @@
package UNIVERSAL;
-our $VERSION = '1.13';
+our $VERSION = '1.15';
# UNIVERSAL should not contain any extra subs/methods beyond those
# that it exists to define. The existence of import() below is a historical
@@ -24,21 +24,21 @@ UNIVERSAL - base class for ALL classes (blessed references)
=head1 SYNOPSIS
- $is_io = $fd->isa("IO::Handle");
- $is_io = Class->isa("IO::Handle");
+ my $obj_is_io = $fd->isa("IO::Handle");
+ my $cls_is_io = Class->isa("IO::Handle");
- $does_log = $obj->DOES("Logger");
- $does_log = Class->DOES("Logger");
+ my $obj_does_log = $obj->DOES("Logger");
+ my $cls_does_log = Class->DOES("Logger");
- $sub = $obj->can("print");
- $sub = Class->can("print");
+ my $obj_sub = $obj->can("print");
+ my $cls_sub = Class->can("print");
- $sub = eval { $ref->can("fandango") };
- $ver = $obj->VERSION;
+ my $eval_sub = eval { $ref->can("fandango") };
+ my $ver = $obj->VERSION;
# but never do this!
- $is_io = UNIVERSAL::isa($fd, "IO::Handle");
- $sub = UNIVERSAL::can($obj, "print");
+ my $is_io = UNIVERSAL::isa($fd, "IO::Handle");
+ my $sub = UNIVERSAL::can($obj, "print");
=head1 DESCRIPTION
@@ -87,7 +87,10 @@ inherits from (or is itself) the name of the package C<TYPE> or
inherits from package C<TYPE>.
If you're not sure what you have (the C<VAL> case), wrap the method call in an
-C<eval> block to catch the exception if C<VAL> is undefined.
+C<eval> block to catch the exception if C<VAL> is undefined or an unblessed
+reference. The L<C<isa> operator|perlop/"Class Instance Operator"> is an
+alternative that simply returns false in this case, so the C<eval> is not
+needed.
If you want to be sure that you're calling C<isa> as a method, not a class,
check the invocand with C<blessed> from L<Scalar::Util> first:
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate.pm b/Master/tlpkg/tlperl/lib/Unicode/Collate.pm
index e57cdf8d6e5..7b8e5470733 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate.pm
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate.pm
@@ -1,14 +1,5 @@
package Unicode::Collate;
-BEGIN {
- unless ("A" eq pack('U', 0x41)) {
- die "Unicode::Collate cannot stringify a Unicode code point\n";
- }
- unless (0x41 == unpack('U', 'A')) {
- die "Unicode::Collate cannot get a Unicode code point\n";
- }
-}
-
use 5.006;
use strict;
use warnings;
@@ -17,7 +8,7 @@ use File::Spec;
no warnings 'utf8';
-our $VERSION = '1.29';
+our $VERSION = '1.31';
our $PACKAGE = __PACKAGE__;
### begin XS only ###
@@ -94,13 +85,24 @@ sub Base_Unicode_Version { '13.0.0' }
######
+my $native_to_unicode = ($::IS_ASCII || $] < 5.008)
+ ? sub { return shift }
+ : sub { utf8::native_to_unicode(shift) };
+
+my $unicode_to_native = ($::IS_ASCII || $] < 5.008)
+ ? sub { return shift }
+ : sub { utf8::unicode_to_native(shift) };
+
+# pack_U() should get Unicode code points.
sub pack_U {
- return pack('U*', @_);
+ return pack('U*', map $unicode_to_native->($_), @_);
}
+# unpack_U() should return Unicode code points.
sub unpack_U {
- return unpack('U*', shift(@_).pack('U*'));
+ return map $native_to_unicode->($_), unpack('U*', shift(@_).pack('U*'));
}
+# for older perl version, pack('U*') generates empty string with utf8 flag.
######
@@ -2101,12 +2103,14 @@ C<variable =E<gt> "non-ignorable", level =E<gt> 3)> should be used.
B<Unicode::Normalize is required to try The Conformance Test.>
+B<EBCDIC-SUPPORT IS EXPERIMENTAL.>
+
=back
=head1 AUTHOR, COPYRIGHT AND LICENSE
The Unicode::Collate module for perl was written by SADAHIRO Tomoyuki,
-<SADAHIRO@cpan.org>. This module is Copyright(C) 2001-2020,
+<SADAHIRO@cpan.org>. This module is Copyright(C) 2001-2021,
SADAHIRO Tomoyuki. Japan. All rights reserved.
This module is free software; you can redistribute it and/or
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Big5.pm b/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Big5.pm
index b0eb54ce5c2..ebc2be2ee58 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Big5.pm
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Big5.pm
@@ -4,7 +4,7 @@ use 5.006;
use strict;
use warnings;
-our $VERSION = '1.29';
+our $VERSION = '1.31';
my %u2p;
my $wt = 0x8000;
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/GB2312.pm b/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/GB2312.pm
index a0c328d3282..5e1f9f9b75b 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/GB2312.pm
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/GB2312.pm
@@ -4,7 +4,7 @@ use 5.006;
use strict;
use warnings;
-our $VERSION = '1.29';
+our $VERSION = '1.31';
my %u2p;
my $wt = 0x8000;
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/JISX0208.pm b/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/JISX0208.pm
index 566852de6b2..4e8ffabcc1e 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/JISX0208.pm
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/JISX0208.pm
@@ -4,7 +4,7 @@ use 5.006;
use strict;
use warnings;
-our $VERSION = '1.29';
+our $VERSION = '1.31';
my %u2p;
my $wt = 0x8000;
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Korean.pm b/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Korean.pm
index 2a2d2bb8cba..f83f8247f7d 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Korean.pm
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Korean.pm
@@ -4,7 +4,7 @@ use 5.006;
use strict;
use warnings;
-our $VERSION = '1.29';
+our $VERSION = '1.31';
my %jamo2prim = (
'1100', 0x4175, '1101', 0x4176, '1102', 0x4177, '1103', 0x4178,
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Pinyin.pm b/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Pinyin.pm
index 287bd025ad6..e650d7684c0 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Pinyin.pm
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Pinyin.pm
@@ -4,7 +4,7 @@ use 5.006;
use strict;
use warnings;
-our $VERSION = '1.29';
+our $VERSION = '1.31';
my %u2p;
my $wt = 0x8000;
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Stroke.pm b/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Stroke.pm
index 3837d739f50..ff5c4d9ed1a 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Stroke.pm
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Stroke.pm
@@ -4,7 +4,7 @@ use 5.006;
use strict;
use warnings;
-our $VERSION = '1.29';
+our $VERSION = '1.31';
my %u2p;
my $wt = 0x8000;
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Zhuyin.pm b/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Zhuyin.pm
index 0e6a82e6972..acfe6863070 100755
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Zhuyin.pm
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/CJK/Zhuyin.pm
@@ -4,7 +4,7 @@ use 5.006;
use strict;
use warnings;
-our $VERSION = '1.29';
+our $VERSION = '1.31';
my %u2p;
my $wt = 0x8000;
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale.pm b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale.pm
index a4ac7ec6681..185d0a8d223 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale.pm
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale.pm
@@ -5,7 +5,7 @@ use warnings;
use Carp;
use base qw(Unicode::Collate);
-our $VERSION = '1.29';
+our $VERSION = '1.31';
my $PL_EXT = '.pl';
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/af.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/af.pl
index 7d52d3c021e..b0cc371e793 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/af.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/af.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0149 ; [.2118.0020.0009] # LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
ENTRY
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ar.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ar.pl
index 7911239195a..787a4f44ba1 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ar.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ar.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0629 ; [.2685.0021.0002] # ARABIC LETTER TEH MARBUTA
FE94 ; [.2685.0021.0019] # ARABIC LETTER TEH MARBUTA FINAL FORM
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/as.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/as.pl
index 48c2d709fea..0d86a679bae 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/as.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/as.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0982 ; [.2A4B.0020.0002][.FFF1.0000.0000] # BENGALI SIGN ANUSVARA
0981 ; [.2A4B.0020.0002][.FFF2.0000.0000] # BENGALI SIGN CANDRABINDU
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/az.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/az.pl
index 3375c677c5c..bda9ad35fda 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/az.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/az.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
# schwa doesn't require tailoring
entry => <<'ENTRY', # for DUCET v13.0.0
00E7 ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/be.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/be.pl
index 0dc9bf8b54f..de97d045f2a 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/be.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/be.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0451 ; [.23C0.0020.0002] # CYRILLIC SMALL LETTER IO
0435 0308 ; [.23C0.0020.0002] # CYRILLIC SMALL LETTER IO
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/bn.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/bn.pl
index 451156593a8..12305aa0115 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/bn.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/bn.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0982 ; [.2A4B.0020.0002][.FFF1.0000.0000] # BENGALI SIGN ANUSVARA
0983 ; [.2A4B.0020.0002][.FFF2.0000.0000] # BENGALI SIGN VISARGA
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ca.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ca.pl
index 608650de56f..0a94d3162a9 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ca.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ca.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0063 0068 ; [.1FD7.0020.0002] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
0063 0048 ; [.1FD7.0020.0007][.0000.0000.0002] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER H>
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cs.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cs.pl
index 1782e3ded36..6f6c1944d99 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cs.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cs.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
010D ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON
0063 030C ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cu.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cu.pl
index 338e0cf6580..24eeba8e311 100755
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cu.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cu.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
upper_before_lower => 1,
backwards => 2,
suppress => [0x0418, 0x0438],
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cy.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cy.pl
index 7d9370334f0..8d806736763 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cy.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/cy.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0063 0068 ; [.1FD7.0020.0002] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
0043 0068 ; [.1FD7.0020.0007] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/da.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/da.pl
index eb5d1fb59f0..282a81c6a36 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/da.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/da.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
upper_before_lower => 1,
entry => <<'ENTRY', # for DUCET v13.0.0
0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/de_at_ph.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/de_at_ph.pl
index 472c15de925..a298f1442ec 100755
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/de_at_ph.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/de_at_ph.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
00E4 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS
0061 0308 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/de_phone.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/de_phone.pl
index c2632a189b7..398bad76f65 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/de_phone.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/de_phone.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
00E4 ; [.1FA2.0021.0002][.2007.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS
0061 0308 ; [.1FA2.0021.0002][.2007.0021.0002] # LATIN SMALL LETTER A WITH DIAERESIS
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/dsb.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/dsb.pl
index b76c808763d..e4dc49e30e5 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/dsb.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/dsb.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
010D ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON
0063 030C ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ee.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ee.pl
index 111f8c228d8..b21ba43e72f 100755
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ee.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ee.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
# d-tail, open-e, f-hook, gamma, eng, open-o, v-hook don't require tailoring
entry => <<'ENTRY', # for DUCET v13.0.0
0302 ; [.0000.0029.0002] # COMBINING CIRCUMFLEX ACCENT
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/eo.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/eo.pl
index a469adeffc5..f835b1d84f6 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/eo.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/eo.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0109 ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CIRCUMFLEX
0063 0302 ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CIRCUMFLEX
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/es.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/es.pl
index 3d7df84ee87..599ff8c25da 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/es.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/es.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
00F1 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH TILDE
006E 0303 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH TILDE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/es_trad.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/es_trad.pl
index 4d8175cc87a..6753ebda8e7 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/es_trad.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/es_trad.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0063 0068 ; [.1FD7.0020.0002] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
0043 0068 ; [.1FD7.0020.0007] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/et.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/et.pl
index e2a22e7aa81..aee11ab6218 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/et.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/et.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0161 ; [.21F4.0020.0002] # LATIN SMALL LETTER S WITH CARON
0073 030C ; [.21F4.0020.0002] # LATIN SMALL LETTER S WITH CARON
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fa.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fa.pl
index d394e0acb62..59db813b61f 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fa.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fa.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0650 ; [.0000.0077.0002] # ARABIC KASRA
064B ; [.0000.007B.0002] # ARABIC FATHATAN
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fi.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fi.pl
index fd1f494cd82..301f63c55ce 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fi.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fi.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
# in cldr test/fi.xml why x{110}x < xdx though xd < x{110} ?
entry => <<'ENTRY', # for DUCET v13.0.0
0111 ; [.1FEB.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER D WITH STROKE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fi_phone.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fi_phone.pl
index 2389e928c94..3b15ff33a91 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fi_phone.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fi_phone.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
# in cldr test/fi.xml why x{110}x < xdx though xd < x{110} ?
entry => <<'ENTRY', # for DUCET v13.0.0
0111 ; [.1FEB.0021.0002][.0000.0039.0002] # LATIN SMALL LETTER D WITH STROKE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fil.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fil.pl
index a9ecdc974cc..88a28b4119b 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fil.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fil.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
00F1 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH TILDE
006E 0303 ; [.2119.0020.0002] # LATIN SMALL LETTER N WITH TILDE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fo.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fo.pl
index 983b317dea0..13d22fd9f82 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fo.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fo.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE
0064 0335 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fr_ca.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fr_ca.pl
index 54adfc61ead..9cffbd039a3 100755
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fr_ca.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/fr_ca.pl
@@ -1,4 +1,4 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
backwards => 2,
};
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/gu.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/gu.pl
index cb4294003f8..ed8e223bfd3 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/gu.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/gu.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0A82 ; [.2AB8.0020.0002][.FFF1.0000.0000] # GUJARATI SIGN ANUSVARA
0A81 ; [.2AB8.0021.0002][.FFF1.0000.0000] # GUJARATI SIGN CANDRABINDU
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ha.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ha.pl
index ab68bb77d91..0dcac73c7e5 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ha.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ha.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
# b-hook, d-hook, k-hook, y-hook don't require tailoring
entry => <<'ENTRY', # for DUCET v13.0.0
0073 0068 ; [.21D3.0020.0002] # <LATIN SMALL LETTER S, LATIN SMALL LETTER H>
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/haw.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/haw.pl
index d85d5a8cf30..cf8b460f36c 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/haw.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/haw.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0065 ; [.1FA3.0020.0002][.FFF1.0000.0000] # LATIN SMALL LETTER E
0045 ; [.1FA3.0020.0008][.FFF1.0000.0000] # LATIN CAPITAL LETTER E
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/he.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/he.pl
index bd4f066dedd..483bb6d3c6e 100755
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/he.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/he.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
05F3 ; [*0316.001F.0002] # HEBREW PUNCTUATION GERESH
05F4 ; [*031D.001F.0002] # HEBREW PUNCTUATION GERSHAYIM
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hi.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hi.pl
index 4c4fb43e9f7..310201fca72 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hi.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hi.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0902 ; [.29D7.0020.0002][.FFF1.0000.0000] # DEVANAGARI SIGN ANUSVARA
0901 ; [.29D7.0021.0002][.FFF1.0000.0000] # DEVANAGARI SIGN CANDRABINDU
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hr.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hr.pl
index abec51a5501..faa3655a967 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hr.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hr.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
010D ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON
0063 030C ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hu.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hu.pl
index 979b61ab5e1..ae1809a678f 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hu.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hu.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0063 0073 ; [.1FD7.0020.0002] # <LATIN SMALL LETTER C, LATIN SMALL LETTER S>
0063 0053 ; [.1FD7.0020.0007][.0000.0000.0002] # <LATIN SMALL LETTER C, LATIN CAPITAL LETTER S>
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hy.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hy.pl
index e89cc048bba..e03cba74715 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hy.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/hy.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0587 ; [.261A.0020.0002][.FFF1.0000.0000] # ARMENIAN SMALL LIGATURE ECH YIWN
0584 ; [.261A.0020.0002][.FFF0.0000.0000] # ARMENIAN SMALL LETTER KEH
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ig.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ig.pl
index fd26dcc3f72..99681bab1b3 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ig.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ig.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0063 0068 ; [.1FBD.0020.0002] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
0043 0068 ; [.1FBD.0020.0007] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/is.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/is.pl
index 93427d84954..8ae880f97c7 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/is.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/is.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
00E1 ; [.1FBB.0020.0002] # LATIN SMALL LETTER A WITH ACUTE
0061 0301 ; [.1FBB.0020.0002] # LATIN SMALL LETTER A WITH ACUTE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ja.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ja.pl
index c582f0a37bf..9008202dcd3 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ja.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ja.pl
@@ -1,6 +1,6 @@
use Unicode::Collate::CJK::JISX0208;
+{
- locale_version => 1.29,
+ locale_version => 1.31,
overrideCJK => \&Unicode::Collate::CJK::JISX0208::weightJISX0208,
entry => <<'ENTRY', # for DUCET v13.0.0
30A1 ; [.42DA.0020.000F.0002] # KATAKANA LETTER SMALL A
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kk.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kk.pl
index 9b951c0a880..49ab3303dbd 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kk.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kk.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0451 ; [.23C0.0020.0002] # CYRILLIC SMALL LETTER IO
0435 0308 ; [.23C0.0020.0002] # CYRILLIC SMALL LETTER IO
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kl.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kl.pl
index 25ddb54f3fb..be88f6e6d1a 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kl.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kl.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE
0064 0335 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kn.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kn.pl
index 0c4b1dbcedc..e1cadd31a2a 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kn.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kn.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0C82 ; [.2BCB.0020.0002][.FFF1.0000.0000] # KANNADA SIGN ANUSVARA
0C83 ; [.2BCB.0020.0002][.FFF2.0000.0000] # KANNADA SIGN VISARGA
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ko.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ko.pl
index 222b0c977c1..e45f1be9b26 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ko.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ko.pl
@@ -1,6 +1,6 @@
use Unicode::Collate::CJK::Korean;
+{
- locale_version => 1.29,
+ locale_version => 1.31,
overrideCJK => \&Unicode::Collate::CJK::Korean::weightKorean,
entry => <<'ENTRY', # for DUCET v13.0.0
F967 ; [.417C.0021.0002.4E0D][.4200.0020.0002] # CJK COMPATIBILITY IDEOGRAPH-F967
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kok.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kok.pl
index 28c3c778854..7a528f2fcfd 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kok.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/kok.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0902 ; [.29D7.0020.0002][.FFF1.0000.0000] # DEVANAGARI SIGN ANUSVARA
0901 ; [.29D7.0021.0002][.FFF1.0000.0000] # DEVANAGARI SIGN CANDRABINDU
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lkt.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lkt.pl
index ad06d4a7216..a5aa78b5443 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lkt.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lkt.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
010D ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON
0063 030C ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ln.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ln.pl
index 9a6dcd91340..c90ec82717a 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ln.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ln.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
025B ; [.2008.0020.0002] # LATIN SMALL LETTER OPEN E
0190 ; [.2008.0020.0008] # LATIN CAPITAL LETTER OPEN E
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lt.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lt.pl
index b0b2a3b1e2b..53211cbf266 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lt.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lt.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
# in cldr test/lt.xml why I-dot-acute > I-dot though i-dot-acute < i-dot ?
entry => <<'ENTRY', # for DUCET v13.0.0
0049 0307 ; [.2090.0020.0008][.0000.002E.0002] # <LATIN CAPITAL LETTER I, COMBINING DOT ABOVE>
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lv.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lv.pl
index c1b0a34d50b..3f7a2d2fd04 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lv.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/lv.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
010D ; [.1FEA.0020.0002] # LATIN SMALL LETTER C WITH CARON
0063 030C ; [.1FEA.0020.0002] # LATIN SMALL LETTER C WITH CARON
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mk.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mk.pl
index a86272c5f32..53429b23052 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mk.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mk.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
suppress => [0x0418, 0x0438],
entry => <<'ENTRY', # for DUCET v13.0.0
0453 ; [.23BB.0020.0002] # CYRILLIC SMALL LETTER GJE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ml.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ml.pl
index c025ef653a2..57f45d684e4 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ml.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ml.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0D3D ; [.0000.00C6.0002] # MALAYALAM SIGN AVAGRAHA
0D57 ; [.2C4D.0020.0002] # MALAYALAM AU LENGTH MARK
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mr.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mr.pl
index b111cdcbf20..fd786ee6d33 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mr.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mr.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0902 ; [.29D7.0020.0002][.FFF1.0000.0000] # DEVANAGARI SIGN ANUSVARA
0901 ; [.29D7.0021.0002][.FFF1.0000.0000] # DEVANAGARI SIGN CANDRABINDU
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mt.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mt.pl
index 2851cc724aa..b4fec802c70 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mt.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/mt.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
upper_before_lower => 1,
entry => <<'ENTRY', # for DUCET v13.0.0
010B ; [.1FD5.0020.0002] # LATIN SMALL LETTER C WITH DOT ABOVE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nb.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nb.pl
index c263f78d3a1..a1c27e1c085 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nb.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nb.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE
0064 0335 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nn.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nn.pl
index c263f78d3a1..a1c27e1c085 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nn.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nn.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE
0064 0335 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nso.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nso.pl
index 65b2add51d5..1614979c4f8 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nso.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/nso.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
00EA ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX
0065 0302 ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/om.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/om.pl
index d125766a111..de08ffbcff3 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/om.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/om.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0063 0068 ; [.2287.0020.0002] # <LATIN SMALL LETTER C, LATIN SMALL LETTER H>
0043 0068 ; [.2287.0020.0007] # <LATIN CAPITAL LETTER C, LATIN SMALL LETTER H>
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/or.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/or.pl
index def98b6232f..52e029c23bb 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/or.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/or.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0B01 ; [.2B0A.0020.0002][.FFF1.0000.0000] # ORIYA SIGN CANDRABINDU
0B02 ; [.2B0A.0020.0002][.FFF2.0000.0000] # ORIYA SIGN ANUSVARA
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/pa.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/pa.pl
index 4400dce5d7e..2c8ce36feca 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/pa.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/pa.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0A71 ; [.0000.00C4.0002] # GURMUKHI ADDAK
0A03 ; [.0000.00C3.0002] # GURMUKHI SIGN VISARGA
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/pl.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/pl.pl
index b573a034246..998663e3502 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/pl.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/pl.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0105 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH OGONEK
0061 0328 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH OGONEK
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ro.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ro.pl
index b8f24fc5348..09eeb5c92c1 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ro.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ro.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0103 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH BREVE
0061 0306 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH BREVE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sa.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sa.pl
index b111cdcbf20..fd786ee6d33 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sa.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sa.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0902 ; [.29D7.0020.0002][.FFF1.0000.0000] # DEVANAGARI SIGN ANUSVARA
0901 ; [.29D7.0021.0002][.FFF1.0000.0000] # DEVANAGARI SIGN CANDRABINDU
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/se.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/se.pl
index 83bf5eae3b6..7fb613a611f 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/se.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/se.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
# eng, g-stroke, t-stroke don't require tailoring
entry => <<'ENTRY', # for DUCET v13.0.0
00E1 ; [.1FBB.0020.0002] # LATIN SMALL LETTER A WITH ACUTE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/si.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/si.pl
index 0e2679408f0..2d73b243d66 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/si.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/si.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0D82 ; [.2C61.0020.0002][.FFF1.0000.0000] # SINHALA SIGN ANUSVARAYA
0D83 ; [.2C61.0020.0002][.FFF2.0000.0000] # SINHALA SIGN VISARGAYA
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/si_dict.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/si_dict.pl
index aa6faf5cf72..31b499e1986 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/si_dict.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/si_dict.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0D82 ; [.2C61.0020.0002][.FFF1.0000.0000] # SINHALA SIGN ANUSVARAYA
0D83 ; [.2C61.0020.0002][.FFF2.0000.0000] # SINHALA SIGN VISARGAYA
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sk.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sk.pl
index 9861405933b..8db55fbe839 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sk.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sk.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
00E4 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS
0061 0308 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sl.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sl.pl
index 218682554f1..65a683a50ad 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sl.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sl.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
010D ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON
0063 030C ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CARON
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sq.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sq.pl
index 33a85b9bc7a..f4bfbfa45ea 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sq.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sq.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
00E7 ; [.1FEA.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA
0063 0327 ; [.1FEA.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sr.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sr.pl
index 3a49fbb1921..5194ceea57c 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sr.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sr.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
suppress => [0x0418, 0x0438],
entry => <<'ENTRY', # for DUCET v13.0.0
0439 ; [.23E5.0020.0002][.0000.0026.0002] # CYRILLIC SMALL LETTER SHORT I
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sv.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sv.pl
index ffcadbb58c3..1e47fc4bee6 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sv.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sv.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE
0064 0335 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sv_refo.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sv_refo.pl
index 0ca1b9742e0..cecb12f0a30 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sv_refo.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/sv_refo.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0111 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE
0064 0335 ; [.1FEB.0021.0002] # LATIN SMALL LETTER D WITH STROKE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ta.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ta.pl
index 3b8cce1fd43..e719e95d526 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ta.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ta.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0B82 ; [.2B4D.0020.0002][.FFF0.0000.0000] # TAMIL SIGN ANUSVARA
0B83 ; [.2B4D.0020.0002][.FFF1.0000.0000] # TAMIL SIGN VISARGA
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/te.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/te.pl
index b331de00e5c..dbba1fe4650 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/te.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/te.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0C01 ; [.2B81.0020.0002][.FFF1.0000.0000] # TELUGU SIGN CANDRABINDU
0C02 ; [.2B81.0020.0002][.FFF2.0000.0000] # TELUGU SIGN ANUSVARA
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/th.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/th.pl
index b0466726ac2..ff8ebbf9369 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/th.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/th.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
variable => 'shifted',
alternate => 'shifted',
entry => <<'ENTRY', # for DUCET v13.0.0
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/tn.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/tn.pl
index 65b2add51d5..1614979c4f8 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/tn.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/tn.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
00EA ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX
0065 0302 ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH CIRCUMFLEX
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/to.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/to.pl
index 11cb0b27c75..0317d3b5180 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/to.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/to.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
006E 0067 ; [.2119.0020.0002] # <LATIN SMALL LETTER N, LATIN SMALL LETTER G>
004E 0067 ; [.2119.0020.0007] # <LATIN CAPITAL LETTER N, LATIN SMALL LETTER G>
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/tr.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/tr.pl
index da9922f7b8f..f3e2f61f12d 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/tr.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/tr.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
00E7 ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA
0063 0327 ; [.1FD7.0020.0002] # LATIN SMALL LETTER C WITH CEDILLA
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ug_cyrl.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ug_cyrl.pl
index b85d5f2519a..6f3ee57bcae 100755
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ug_cyrl.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ug_cyrl.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
04D9 ; [.23C0.0020.0002] # CYRILLIC SMALL LETTER SCHWA
04D8 ; [.23C0.0020.0008] # CYRILLIC CAPITAL LETTER SCHWA
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/uk.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/uk.pl
index 12ff02d3c0a..f1eb2d2aca0 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/uk.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/uk.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0491 ; [.239C.0020.0002] # CYRILLIC SMALL LETTER GHE WITH UPTURN
0490 ; [.239C.0020.0008] # CYRILLIC CAPITAL LETTER GHE WITH UPTURN
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ur.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ur.pl
index 2f6cb094394..400ee1c507f 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ur.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/ur.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0623 ; [.2672.0021.0002] # ARABIC LETTER ALEF WITH HAMZA ABOVE
0627 0654 ; [.2672.0021.0002] # ARABIC LETTER ALEF WITH HAMZA ABOVE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/vi.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/vi.pl
index b82cc07eb08..f729103a1d2 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/vi.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/vi.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
# 0306 is not a Vietnamese tone, just to avoid \x{306} eq. to something.
entry => <<'ENTRY', # for DUCET v13.0.0
0309 ; [.0000.0026.0002][.0000.00F0.0000] # COMBINING HOOK ABOVE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/vo.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/vo.pl
index 37187197cc1..58457a35f66 100755
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/vo.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/vo.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
00E4 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS
0061 0308 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH DIAERESIS
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/wae.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/wae.pl
index 6681a3493ad..6b16cf6b3a6 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/wae.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/wae.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0061 0061 ; [.1FA2.0020.0002][.0000.0024.0002] # <LATIN SMALL LETTER A, LATIN SMALL LETTER A>
00E4 00E4 ; [.1FA2.0020.0002][.0000.002D.0002] # <LATIN SMALL LETTER A WITH DIAERESIS, LATIN SMALL LETTER A WITH DIAERESIS>
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/wo.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/wo.pl
index 2c5ed11636f..6491f60b56b 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/wo.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/wo.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
# eng doesn't require tailoring
entry => <<'ENTRY', # for DUCET v13.0.0
00E0 ; [.1FA3.0020.0002] # LATIN SMALL LETTER A WITH GRAVE
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/yo.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/yo.pl
index 765e68b45b0..44f8aa7d0a4 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/yo.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/yo.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
1EB9 ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH DOT BELOW
0065 0323 ; [.2008.0020.0002] # LATIN SMALL LETTER E WITH DOT BELOW
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh.pl
index c3df346f605..63dff38029e 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh.pl
@@ -1,5 +1,5 @@
+{
- locale_version => 1.29,
+ locale_version => 1.31,
entry => <<'ENTRY', # for DUCET v13.0.0
0101 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON
0061 0304 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_big5.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_big5.pl
index 528ce258cc2..b62f740682a 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_big5.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_big5.pl
@@ -1,6 +1,6 @@
use Unicode::Collate::CJK::Big5;
+{
- locale_version => 1.29,
+ locale_version => 1.31,
overrideCJK => \&Unicode::Collate::CJK::Big5::weightBig5,
entry => <<'ENTRY', # for DUCET v13.0.0
0101 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_gb.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_gb.pl
index f327cd86690..308c6405b1c 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_gb.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_gb.pl
@@ -1,6 +1,6 @@
use Unicode::Collate::CJK::GB2312;
+{
- locale_version => 1.29,
+ locale_version => 1.31,
overrideCJK => \&Unicode::Collate::CJK::GB2312::weightGB2312,
entry => <<'ENTRY', # for DUCET v13.0.0
0101 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_pin.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_pin.pl
index 30d636f2195..13e21cce3bb 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_pin.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_pin.pl
@@ -1,6 +1,6 @@
use Unicode::Collate::CJK::Pinyin;
+{
- locale_version => 1.29,
+ locale_version => 1.31,
overrideCJK => \&Unicode::Collate::CJK::Pinyin::weightPinyin,
entry => <<'ENTRY', # for DUCET v13.0.0
0101 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_strk.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_strk.pl
index 08c733032bb..7df2564e3c2 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_strk.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_strk.pl
@@ -1,6 +1,6 @@
use Unicode::Collate::CJK::Stroke;
+{
- locale_version => 1.29,
+ locale_version => 1.31,
overrideCJK => \&Unicode::Collate::CJK::Stroke::weightStroke,
entry => <<'ENTRY', # for DUCET v13.0.0
0101 ; [.1FA2.001C.0002] # LATIN SMALL LETTER A WITH MACRON
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_zhu.pl b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_zhu.pl
index d2a80c8e9b5..c65cdaf7bae 100755
--- a/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_zhu.pl
+++ b/Master/tlpkg/tlperl/lib/Unicode/Collate/Locale/zh_zhu.pl
@@ -1,6 +1,6 @@
use Unicode::Collate::CJK::Zhuyin;
+{
- locale_version => 1.29,
+ locale_version => 1.31,
overrideCJK => \&Unicode::Collate::CJK::Zhuyin::weightZhuyin,
entry => <<'ENTRY', # for DUCET v13.0.0
02C9 ; [.0000.0199.0002] # MODIFIER LETTER MACRON
diff --git a/Master/tlpkg/tlperl/lib/Unicode/Normalize.pm b/Master/tlpkg/tlperl/lib/Unicode/Normalize.pm
index fd6f1cb700f..c8053f7d382 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/Normalize.pm
+++ b/Master/tlpkg/tlperl/lib/Unicode/Normalize.pm
@@ -1,14 +1,5 @@
package Unicode::Normalize;
-BEGIN {
- unless ('A' eq pack('U', 0x41)) {
- die "Unicode::Normalize cannot stringify a Unicode code point\n";
- }
- unless (0x41 == unpack('U', 'A')) {
- die "Unicode::Normalize cannot get Unicode code point\n";
- }
-}
-
use 5.006;
use strict;
use warnings;
@@ -16,7 +7,7 @@ use Carp;
no warnings 'utf8';
-our $VERSION = '1.28';
+our $VERSION = '1.32';
our $PACKAGE = __PACKAGE__;
our @EXPORT = qw( NFC NFD NFKC NFKD );
@@ -40,16 +31,58 @@ our %EXPORT_TAGS = (
## utilities for tests
##
-sub pack_U {
- return pack('U*', @_);
+ # No EBCDIC support on early perls
+*to_native = ($::IS_ASCII || $] < 5.008)
+ ? sub { return shift }
+ : sub { utf8::unicode_to_native(shift) };
+
+*from_native = ($::IS_ASCII || $] < 5.008)
+ ? sub { return shift }
+ : sub { utf8::native_to_unicode(shift) };
+
+# The .t files are all in terms of Unicode, so xlate to/from native
+sub dot_t_pack_U {
+ return pack('U*', map { to_native($_) } @_);
}
-sub unpack_U {
+sub dot_t_unpack_U {
# The empty pack returns an empty UTF-8 string, so the effect is to force
# the shifted parameter into being UTF-8. This allows this to work on
# Perl 5.6, where there is no utf8::upgrade().
- return unpack('U*', shift(@_).pack('U*'));
+ return map { from_native($_) } unpack('U*', shift(@_).pack('U*'));
+}
+
+sub get_printable_string ($) {
+ use bytes;
+ my $s = shift;
+
+ # DeMorgan's laws cause this to mean ascii printables
+ return $s if $s =~ /[^[:^ascii:][:^print:]]/;
+
+ return join " ", map { sprintf "\\x%02x", ord $_ } split "", $s;
+}
+
+sub ok ($$;$) {
+ my $count_ref = shift; # Test number in caller
+ my $p = my $r = shift;
+ my $x;
+ if (@_) {
+ $x = shift;
+ $p = !defined $x ? !defined $r : !defined $r ? 0 : $r eq $x;
+ }
+
+ print $p ? "ok" : "not ok", ' ', ++$$count_ref, "\n";
+
+ return if $p;
+
+ my (undef, $file, $line) = caller(1);
+ print STDERR "# Failed test $$count_ref at $file line $line\n";
+
+ return unless defined $x;
+
+ print STDERR "# got ", get_printable_string($r), "\n";
+ print STDERR "# expected ", get_printable_string($x), "\n";
}
require Exporter;
@@ -343,7 +376,7 @@ Note that C<$unprocessed> will be modified as a side-effect.
=head2 Quick Check
-(see Annex 8, UAX #15; and F<DerivedNormalizationProps.txt>)
+(see Annex 8, UAX #15; and F<lib/unicore/DerivedNormalizationProps.txt>)
The following functions check whether the string is in that normalization form.
@@ -571,8 +604,10 @@ so one could cause Unicode 3.2 to be used in any perl version starting with
In older Unicode versions, a small number of characters (all of which are
CJK compatibility ideographs as far as they have been found) may have
-an erroneous decomposition mapping (see F<NormalizationCorrections.txt>).
-Anyhow, this module will neither refer to F<NormalizationCorrections.txt>
+an erroneous decomposition mapping (see
+F<lib/unicore/NormalizationCorrections.txt>).
+Anyhow, this module will neither refer to
+F<lib/unicore/NormalizationCorrections.txt>
nor provide any specific version of normalization. Therefore this module
running on an older perl with an older Unicode database may use
the erroneous decomposition mapping blindly conforming to the Unicode database.
diff --git a/Master/tlpkg/tlperl/lib/Unicode/UCD.pm b/Master/tlpkg/tlperl/lib/Unicode/UCD.pm
index 11fa2bef6a4..6f4c4b25028 100644
--- a/Master/tlpkg/tlperl/lib/Unicode/UCD.pm
+++ b/Master/tlpkg/tlperl/lib/Unicode/UCD.pm
@@ -5,7 +5,7 @@ use warnings;
no warnings 'surrogate'; # surrogates can be inputs to this
use charnames ();
-our $VERSION = '0.75';
+our $VERSION = '0.78';
sub DEBUG () { 0 }
$|=1 if DEBUG;
@@ -1972,7 +1972,7 @@ Locale is not completely independent. The I<turkic> field contains results to
use when the locale is a Turkic language.
For more information about case mappings see
-L<http://www.unicode.org/unicode/reports/tr21>
+L<http://www.unicode.org/reports/tr21>
=cut
@@ -2219,7 +2219,7 @@ hash will not have any of the base keys, like C<code>, C<upper>, etc., but
will contain only locale keys.
For more information about case mappings see
-L<http://www.unicode.org/unicode/reports/tr21/>
+L<http://www.unicode.org/reports/tr21/>
=cut
@@ -2346,25 +2346,23 @@ my %NAMEDSEQ;
sub _namedseq {
unless (%NAMEDSEQ) {
- my $namedseqfh = openunicode("Name.pl");
- local $_;
- local $/ = "\n";
- while (<$namedseqfh>) {
- next if m/ ^ \s* \# /x;
-
- # Each entry is currently two lines. The first contains the code
+ my @list = split "\n", do "unicore/Name.pl";
+ for (my $i = 0; $i < @list; $i += 3) {
+ # Each entry is currently three lines. The first contains the code
# points in the sequence separated by spaces. If this entry
# doesn't have spaces, it isn't a named sequence.
- if (/^ [0-9A-F]{4,5} (?: \ [0-9A-F]{4,5} )+ $ /x) {
- my $sequence = $_;
- chomp $sequence;
-
- # And the second is the name
- my $name = <$namedseqfh>;
- chomp $name;
- my @s = map { chr(hex($_)) } split(' ', $sequence);
- $NAMEDSEQ{$name} = join("", @s);
- }
+ next unless $list[$i] =~ /^ [0-9A-F]{4,5} (?: \ [0-9A-F]{4,5} )+ $ /x;
+
+ my $sequence = $list[$i];
+ chomp $sequence;
+
+ # And the second is the name
+ my $name = $list[$i+1];
+ chomp $name;
+ my @s = map { chr(hex($_)) } split(' ', $sequence);
+ $NAMEDSEQ{$name} = join("", @s);
+
+ # And the third is empty
}
}
}
@@ -2448,7 +2446,7 @@ sub _numeric {
use Unicode::UCD 'num';
my $val = num("123");
- my $one_quarter = num("\N{VULGAR FRACTION 1/4}");
+ my $one_quarter = num("\N{VULGAR FRACTION ONE QUARTER}");
my $val = num("12a", \$valid_length); # $valid_length contains 2
C<num()> returns the numeric value of the input Unicode string; or C<undef> if it
@@ -3473,7 +3471,7 @@ points 97 through 122. To get the mapping for any code point in this range,
you take the offset it has from the beginning code point of the range, and add
that to the mapping for that first code point. So, the mapping for 122 ("z")
is derived by taking the offset of 122 from 97 (=25) and adding that to 65,
-yielding 90 ("z"). Likewise for everything in between.
+yielding 90 ("Z"). Likewise for everything in between.
Requiring this simple adjustment allows the returned arrays to be
significantly smaller than otherwise, up to a factor of 10, speeding up
@@ -4727,7 +4725,7 @@ nor the punctuation.
For blocks see L<http://www.unicode.org/Public/UNIDATA/Blocks.txt>
-For scripts see UTR #24: L<http://www.unicode.org/unicode/reports/tr24/>
+For scripts see UTR #24: L<http://www.unicode.org/reports/tr24/>
=head2 B<Matching Scripts and Blocks>
diff --git a/Master/tlpkg/tlperl/lib/User/grent.pm b/Master/tlpkg/tlperl/lib/User/grent.pm
index 9f95541729c..5774132e8f5 100644
--- a/Master/tlpkg/tlperl/lib/User/grent.pm
+++ b/Master/tlpkg/tlperl/lib/User/grent.pm
@@ -2,7 +2,7 @@ package User::grent;
use strict;
use 5.006_001;
-our $VERSION = '1.03';
+our $VERSION = '1.04';
our(@EXPORT, @EXPORT_OK, %EXPORT_TAGS);
our ($gr_name, $gr_gid, $gr_passwd, @gr_members);
BEGIN {
@@ -46,7 +46,7 @@ User::grent - by-name interface to Perl's built-in getgr*() functions
=head1 SYNOPSIS
use User::grent;
- $gr = getgrgid(0) or die "No group zero";
+ my $gr = getgrgid(0) or die "No group zero";
if ( $gr->name eq 'wheel' && @{$gr->members} > 1 ) {
print "gid zero name wheel, with other members";
}
@@ -57,7 +57,7 @@ User::grent - by-name interface to Perl's built-in getgr*() functions
print "gid zero name wheel, with other members";
}
- $gr = getgr($whoever);
+ my $gr = getgr($whoever);
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/lib/User/pwent.pm b/Master/tlpkg/tlperl/lib/User/pwent.pm
index 3f82e8c8615..ff8fbd58777 100644
--- a/Master/tlpkg/tlperl/lib/User/pwent.pm
+++ b/Master/tlpkg/tlperl/lib/User/pwent.pm
@@ -1,7 +1,7 @@
package User::pwent;
use 5.006;
-our $VERSION = '1.01';
+our $VERSION = '1.02';
use strict;
use warnings;
@@ -189,14 +189,14 @@ User::pwent - by-name interface to Perl's built-in getpw*() functions
=head1 SYNOPSIS
use User::pwent;
- $pw = getpwnam('daemon') || die "No daemon user";
+ my $pw = getpwnam('daemon') || die "No daemon user";
if ( $pw->uid == 1 && $pw->dir =~ m#^/(bin|tmp)?\z#s ) {
print "gid 1 on root dir";
}
- $real_shell = $pw->shell || '/bin/sh';
+ my $real_shell = $pw->shell || '/bin/sh';
- for (($fullname, $office, $workphone, $homephone) =
+ for (my ($fullname, $office, $workphone, $homephone) =
split /\s*,\s*/, $pw->gecos)
{
s/&/ucfirst(lc($pw->name))/ge;
@@ -208,7 +208,7 @@ User::pwent - by-name interface to Perl's built-in getpw*() functions
print "gid 1 on root dir";
}
- $pw = getpw($whoever);
+ my $pw = getpw($whoever);
use User::pwent qw/:DEFAULT pw_has/;
if (pw_has(qw[gecos expire quota])) { .... }
diff --git a/Master/tlpkg/tlperl/lib/Win32.pm b/Master/tlpkg/tlperl/lib/Win32.pm
index 1092c5ab521..2ad726a99a4 100644
--- a/Master/tlpkg/tlperl/lib/Win32.pm
+++ b/Master/tlpkg/tlperl/lib/Win32.pm
@@ -8,7 +8,7 @@ package Win32;
require DynaLoader;
@ISA = qw|Exporter DynaLoader|;
- $VERSION = '0.57';
+ $VERSION = '0.59';
$XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -306,6 +306,8 @@ sub PRODUCT_EDUCATION_N () { 0x7A } # Windows 10 Education
sub PRODUCT_UNLICENSED () { 0xABCDABCD } # product has not been activated and is no longer in the grace period
+sub PROCESSOR_ARCHITECTURE_ARM64 () { 12 } # ARM64
+sub PROCESSOR_ARCHITECTURE_ARM () { 5 } # ARM
sub PROCESSOR_ARCHITECTURE_AMD64 () { 9 } # x64 (AMD or Intel)
sub PROCESSOR_ARCHITECTURE_IA64 () { 6 } # Intel Itanium Processor Family (IPF)
sub PROCESSOR_ARCHITECTURE_INTEL () { 0 } # x86
@@ -319,6 +321,14 @@ sub _GetProcessorArchitecture {
2200 => PROCESSOR_ARCHITECTURE_IA64,
8664 => PROCESSOR_ARCHITECTURE_AMD64,
}->{Win32::GetChipName()};
+
+ if (!defined($arch)) {
+ $arch = {
+ 5 => PROCESSOR_ARCHITECTURE_ARM,
+ 12 => PROCESSOR_ARCHITECTURE_ARM64,
+ }->{Win32::GetChipArch()};
+ }
+
return defined($arch) ? $arch : PROCESSOR_ARCHITECTURE_UNKNOWN;
}
@@ -890,10 +900,17 @@ $ENV{PROCESSOR_ARCHITECTURE}. This might not work on Win9X.
=item Win32::GetChipName()
-Returns the processor type: 386, 486 or 586 for x86 processors, 8664
-for the x64 processor and 2200 for the Itanium. Since it returns the
-native processor type it will return a 64-bit processor type even when
-called from a 32-bit Perl running on 64-bit Windows.
+Returns the processor type: 386, 486 or 586 for x86 processors, 8664 for the x64
+processor and 2200 for the Itanium. For arm/arm64 processor, the value is marked
+as "Reserved" (not specified, but usually 0) in Microsoft documentation, so it's
+better to use GetChipArch(). Since it returns the native processor type it will
+return a 64-bit processor type even when called from a 32-bit Perl running on
+64-bit Windows.
+
+=item Win32::GetChipArch()
+
+Returns the processor architecture: 0 for x86 processors, 5 for arm, 6 for
+Itanium, 9 for x64 and 12 for arm64, and 0xFFFF for unknown architecture.
=item Win32::GetConsoleCP()
@@ -1305,11 +1322,52 @@ of hex digits with surrounding braces. For example:
{09531CF1-D0C7-4860-840C-1C8C8735E2AD}
+=item Win32::HttpGetFile(URL, FILENAME [, IGNORE_CERT_ERRORS])
+
+Uses the WinHttp library to download the file specified by the URL
+parameter to the local file specified by FILENAME. The optional third
+parameter, if true, indicates that certficate errors are to be ignored
+for https connections; please use with caution in a safe environment,
+such as when testing locally using a self-signed certificate.
+
+Only http and https protocols are supported. Authentication is not
+supported. The function is not available when building with gcc prior to
+4.8.0 because the WinHttp library is not available.
+
+In scalar context returns a boolean success or failure, and in list
+context also returns, in addition to the boolean status, a second
+value containing message text related to the status.
+
+If the call fails, C<Win32::GetLastError()> will return a numeric
+error code, which may be a system error, a WinHttp error, or a
+user-defined error composed of 1e9 plus the HTTP status code.
+
+Scalar context example:
+
+ print Win32::GetLastError()
+ unless Win32::HttpGetFile('http://example.com/somefile.tar.gz',
+ '.\file.tgz');
+
+List context example:
+
+ my ($ok, $msg) = Win32::HttpGetFile('http://example.com/somefile.tar.gz',
+ '.\file.tgz');
+ if ($ok) {
+ print "Success!: $msg\n";
+ }
+ else {
+ print "Failure!: $msg\n";
+ my $err = Win32::GetLastError();
+ if ($err > 1e9) {
+ printf "HTTP status: %d\n", ($err - 1e9);
+ }
+ }
+
=item Win32::InitiateSystemShutdown
(MACHINE, MESSAGE, TIMEOUT, FORCECLOSE, REBOOT)
-Shutsdown the specified MACHINE, notifying users with the
+Shuts down the specified MACHINE, notifying users with the
supplied MESSAGE, within the specified TIMEOUT interval. Forces
closing of all documents without prompting the user if FORCECLOSE is
true, and reboots the machine if REBOOT is true. This function works
diff --git a/Master/tlpkg/tlperl/lib/XSLoader.pm b/Master/tlpkg/tlperl/lib/XSLoader.pm
index 538e54e1785..a671f24056d 100644
--- a/Master/tlpkg/tlperl/lib/XSLoader.pm
+++ b/Master/tlpkg/tlperl/lib/XSLoader.pm
@@ -1,11 +1,12 @@
# Generated from XSLoader_pm.PL (resolved %Config::Config value)
# This file is unique for every OS
-package XSLoader;
+use strict;
+no strict 'refs';
-$VERSION = "0.30"; # remember to update version in POD!
+package XSLoader;
-#use strict;
+our $VERSION = "0.32"; # remember to update version in POD!
package DynaLoader;
@@ -111,6 +112,9 @@ sub load {
return &$xs(@_);
}
+# Can't test with DynaLoader->can('bootstrap_inherit') when building in the
+# core, as XSLoader gets built before DynaLoader.
+
sub bootstrap_inherit {
require DynaLoader;
goto \&DynaLoader::bootstrap_inherit;
@@ -118,7 +122,6 @@ sub bootstrap_inherit {
1;
-
__END__
=head1 NAME
@@ -127,7 +130,7 @@ XSLoader - Dynamically load C libraries into Perl code
=head1 VERSION
-Version 0.30
+Version 0.32
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/_charnames.pm b/Master/tlpkg/tlperl/lib/_charnames.pm
index b38028d24a7..909109d624b 100644
--- a/Master/tlpkg/tlperl/lib/_charnames.pm
+++ b/Master/tlpkg/tlperl/lib/_charnames.pm
@@ -6,7 +6,7 @@
package _charnames;
use strict;
use warnings;
-our $VERSION = '1.48';
+our $VERSION = '1.50';
use unicore::Name; # mktables-generated algorithmically-defined names
use bytes (); # for $bytes::hint_bits
@@ -484,6 +484,7 @@ sub lookup_name ($$$;$) {
# Keep in mind that $lookup_name has had the metas quoted.
my $scripts_trie = "";
my $name_has_uppercase;
+ my @scripts;
if (($^H{charnames_short})
&& $lookup_name =~ /^ (?: \\ \s)* # Quoted space
(.+?) # $1 = the script
@@ -506,18 +507,33 @@ sub lookup_name ($$$;$) {
$name_has_uppercase = $name =~ /[[:upper:]]/;
}
else { # Otherwise look in allowed scripts
- $scripts_trie = $^H{charnames_scripts};
+ # We want to search first by script name then by letter name, so that
+ # if the user imported `use charnames qw(arabic hebrew)` and asked for
+ # \N{alef} they get ARABIC LETTER ALEF, and if they imported
+ # `... (hebrew arabic)` and ask for \N{alef} they get HEBREW LETTER ALEF.
+ # We can't rely on the regex engine to preserve ordering like that, so
+ # pick the pipe-seperated string apart so we can iterate over it.
+ @scripts = split(/\|/, $^H{charnames_scripts});
# Use original name to find its input casing
$name_has_uppercase = $name =~ /[[:upper:]]/;
}
-
my $case = $name_has_uppercase ? "CAPITAL" : "SMALL";
- return if (! $scripts_trie || $txt !~
- /^ (?: $scripts_trie ) \ (?:$case\ )? LETTER \ \U$lookup_name $/xm);
- # Here have found the input name in the table.
- @off = ($-[0], $+[0]);
+ if(@scripts) {
+ SCRIPTS: foreach my $script (@scripts) {
+ if($txt =~ /^ (?: $script ) \ (?:$case\ )? LETTER \ \U$lookup_name $/xm) {
+ @off = ($-[0], $+[0]);
+ last SCRIPTS;
+ }
+ }
+ return unless(@off);
+ }
+ else {
+ return if (! $scripts_trie || $txt !~
+ /^ (?: $scripts_trie ) \ (?:$case\ )? LETTER \ \U$lookup_name $/xm);
+ @off = ($-[0], $+[0]);
+ }
}
# Here, the input name has been found; we haven't set up the output,
@@ -653,6 +669,8 @@ sub import
{
shift; ## ignore class name
+ populate_txt() unless $txt;
+
if (not @_) {
carp("'use charnames' needs explicit imports list");
}
@@ -704,15 +722,13 @@ sub import
$^H{charnames_full} = delete $h{':full'} || 0;
$^H{charnames_loose} = delete $h{':loose'} || 0;
$^H{charnames_short} = delete $h{':short'} || 0;
- my @scripts = map { uc quotemeta } keys %h;
+ my @scripts = map { uc quotemeta } grep { /^[^:]/ } @args;
##
## If utf8? warnings are enabled, and some scripts were given,
## see if at least we can find one letter from each script.
##
if (warnings::enabled('utf8') && @scripts) {
- populate_txt() unless $txt;
-
for my $script (@scripts) {
if (not $txt =~ m/^$script (?:CAPITAL |SMALL )?LETTER /m) {
warnings::warn('utf8', "No such script: '$script'");
@@ -740,6 +756,23 @@ sub import
}
}
+ my %letters_by_script = map {
+ $_ => [
+ ($txt =~ m/$_(?: (?:small|capital))? letter (.*)/ig)
+ ]
+ } @scripts;
+ SCRIPTS: foreach my $this_script (@scripts) {
+ my @other_scripts = grep { $_ ne $this_script } @scripts;
+ my @this_script_letters = @{$letters_by_script{$this_script}};
+ my @other_script_letters = map { @{$letters_by_script{$_}} } @other_scripts;
+ foreach my $this_letter (@this_script_letters) {
+ if(grep { $_ eq $this_letter } @other_script_letters) {
+ warn "charnames: some short character names may clash in [".join(', ', sort @scripts)."], for example $this_letter\n";
+ last SCRIPTS;
+ }
+ }
+ }
+
$^H{charnames_scripts} = join "|", @scripts; # Stringifiy them as a trie
} # import
diff --git a/Master/tlpkg/tlperl/lib/attributes.pm b/Master/tlpkg/tlperl/lib/attributes.pm
index c60f9406b99..313763c6acd 100644
--- a/Master/tlpkg/tlperl/lib/attributes.pm
+++ b/Master/tlpkg/tlperl/lib/attributes.pm
@@ -1,6 +1,6 @@
package attributes;
-our $VERSION = 0.33;
+our $VERSION = 0.35;
@EXPORT_OK = qw(get reftype);
@EXPORT = ();
diff --git a/Master/tlpkg/tlperl/lib/auto/B/B.dll b/Master/tlpkg/tlperl/lib/auto/B/B.dll
index 8c628f646fe..64d043e3f76 100755
--- a/Master/tlpkg/tlperl/lib/auto/B/B.dll
+++ b/Master/tlpkg/tlperl/lib/auto/B/B.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/B/B.pdb b/Master/tlpkg/tlperl/lib/auto/B/B.pdb
new file mode 100755
index 00000000000..d827e4bfb7a
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/B/B.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Bzip2/Bzip2.dll b/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Bzip2/Bzip2.dll
index 21e46eafce8..3254c1ce752 100755
--- a/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Bzip2/Bzip2.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Bzip2/Bzip2.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Bzip2/Bzip2.pdb b/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Bzip2/Bzip2.pdb
new file mode 100755
index 00000000000..0fc55eb494a
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Bzip2/Bzip2.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Zlib/Zlib.dll b/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Zlib/Zlib.dll
index ce18a9c9226..636a123e3f6 100755
--- a/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Zlib/Zlib.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Zlib/Zlib.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Zlib/Zlib.pdb b/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Zlib/Zlib.pdb
new file mode 100755
index 00000000000..1207555d938
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Compress/Raw/Zlib/Zlib.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.dll b/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.dll
index f374b3f41ca..0833f87b89b 100755
--- a/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.pdb b/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.pdb
new file mode 100755
index 00000000000..0e90bc088a3
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Cwd/Cwd.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.dll b/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.dll
index 75099d75aa4..a06d9f0f769 100755
--- a/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.pdb b/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.pdb
new file mode 100755
index 00000000000..95b41940539
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Data/Dumper/Dumper.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Devel/Peek/Peek.dll b/Master/tlpkg/tlperl/lib/auto/Devel/Peek/Peek.dll
index 5f9dd698008..65aa5e35b0f 100755
--- a/Master/tlpkg/tlperl/lib/auto/Devel/Peek/Peek.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Devel/Peek/Peek.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Devel/Peek/Peek.pdb b/Master/tlpkg/tlperl/lib/auto/Devel/Peek/Peek.pdb
new file mode 100755
index 00000000000..ceda68cbc8f
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Devel/Peek/Peek.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.dll b/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.dll
index 8add20eb135..9c09376c5ba 100755
--- a/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.pdb b/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.pdb
new file mode 100755
index 00000000000..0ce81a71c4a
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Digest/MD5/MD5.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Digest/SHA/SHA.dll b/Master/tlpkg/tlperl/lib/auto/Digest/SHA/SHA.dll
index cc77b2cdbff..7bc0f7ee4e4 100755
--- a/Master/tlpkg/tlperl/lib/auto/Digest/SHA/SHA.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Digest/SHA/SHA.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Digest/SHA/SHA.pdb b/Master/tlpkg/tlperl/lib/auto/Digest/SHA/SHA.pdb
new file mode 100755
index 00000000000..481a20e5468
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Digest/SHA/SHA.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.dll b/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.dll
index aedd30ab45b..39da0042b9d 100755
--- a/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.pdb b/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.pdb
new file mode 100755
index 00000000000..907de1c679c
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/Byte/Byte.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/CN/CN.dll b/Master/tlpkg/tlperl/lib/auto/Encode/CN/CN.dll
index 369f97160e3..53db456509e 100755
--- a/Master/tlpkg/tlperl/lib/auto/Encode/CN/CN.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/CN/CN.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/CN/CN.pdb b/Master/tlpkg/tlperl/lib/auto/Encode/CN/CN.pdb
new file mode 100755
index 00000000000..a6a7e6d50f7
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/CN/CN.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/EBCDIC/EBCDIC.dll b/Master/tlpkg/tlperl/lib/auto/Encode/EBCDIC/EBCDIC.dll
index 09521443c1d..8d5da817e7b 100755
--- a/Master/tlpkg/tlperl/lib/auto/Encode/EBCDIC/EBCDIC.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/EBCDIC/EBCDIC.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/EBCDIC/EBCDIC.pdb b/Master/tlpkg/tlperl/lib/auto/Encode/EBCDIC/EBCDIC.pdb
new file mode 100755
index 00000000000..cca1c0c4966
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/EBCDIC/EBCDIC.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Encode.dll b/Master/tlpkg/tlperl/lib/auto/Encode/Encode.dll
index 140bc5b8100..b2ed28f9f21 100755
--- a/Master/tlpkg/tlperl/lib/auto/Encode/Encode.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/Encode.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Encode.pdb b/Master/tlpkg/tlperl/lib/auto/Encode/Encode.pdb
new file mode 100755
index 00000000000..3094db1bb82
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/Encode.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/JP/JP.dll b/Master/tlpkg/tlperl/lib/auto/Encode/JP/JP.dll
index ca42946a30b..d8fcd4e89a5 100755
--- a/Master/tlpkg/tlperl/lib/auto/Encode/JP/JP.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/JP/JP.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/JP/JP.pdb b/Master/tlpkg/tlperl/lib/auto/Encode/JP/JP.pdb
new file mode 100755
index 00000000000..cf7af7f21e9
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/JP/JP.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/KR/KR.dll b/Master/tlpkg/tlperl/lib/auto/Encode/KR/KR.dll
index bf2ff9f37e6..41e786dcc20 100755
--- a/Master/tlpkg/tlperl/lib/auto/Encode/KR/KR.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/KR/KR.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/KR/KR.pdb b/Master/tlpkg/tlperl/lib/auto/Encode/KR/KR.pdb
new file mode 100755
index 00000000000..d75ce572579
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/KR/KR.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.dll b/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.dll
index 2e7222e411c..65ce692b3f3 100755
--- a/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.pdb b/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.pdb
new file mode 100755
index 00000000000..53a8890be6f
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/Symbol/Symbol.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/TW/TW.dll b/Master/tlpkg/tlperl/lib/auto/Encode/TW/TW.dll
index 83cb3cbf321..f0e107d1c1d 100755
--- a/Master/tlpkg/tlperl/lib/auto/Encode/TW/TW.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/TW/TW.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/TW/TW.pdb b/Master/tlpkg/tlperl/lib/auto/Encode/TW/TW.pdb
new file mode 100755
index 00000000000..a9159a13292
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/TW/TW.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.dll b/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.dll
index 62a7f7f2c55..78669b306d4 100755
--- a/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.pdb b/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.pdb
new file mode 100755
index 00000000000..3f1a10bfc8e
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Encode/Unicode/Unicode.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.dll b/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.dll
index 34eb6899538..d9fbfb426d3 100755
--- a/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.pdb b/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.pdb
new file mode 100755
index 00000000000..518290c0f20
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Fcntl/Fcntl.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/File/DosGlob/DosGlob.dll b/Master/tlpkg/tlperl/lib/auto/File/DosGlob/DosGlob.dll
index 409fcc085a4..10f811154b6 100755
--- a/Master/tlpkg/tlperl/lib/auto/File/DosGlob/DosGlob.dll
+++ b/Master/tlpkg/tlperl/lib/auto/File/DosGlob/DosGlob.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/File/DosGlob/DosGlob.pdb b/Master/tlpkg/tlperl/lib/auto/File/DosGlob/DosGlob.pdb
new file mode 100755
index 00000000000..6e2a6d367df
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/File/DosGlob/DosGlob.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.dll b/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.dll
index 14f7011f4fe..c876073ab29 100755
--- a/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.dll
+++ b/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.pdb b/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.pdb
new file mode 100755
index 00000000000..8278804e5ba
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/File/Glob/Glob.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Filter/Util/Call/Call.dll b/Master/tlpkg/tlperl/lib/auto/Filter/Util/Call/Call.dll
index 215325ef0e3..9a1bdbb277a 100755
--- a/Master/tlpkg/tlperl/lib/auto/Filter/Util/Call/Call.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Filter/Util/Call/Call.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Filter/Util/Call/Call.pdb b/Master/tlpkg/tlperl/lib/auto/Filter/Util/Call/Call.pdb
new file mode 100755
index 00000000000..21526460fd6
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Filter/Util/Call/Call.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Hash/Util/FieldHash/FieldHash.dll b/Master/tlpkg/tlperl/lib/auto/Hash/Util/FieldHash/FieldHash.dll
index 39fead36ef0..f7c178f44ec 100755
--- a/Master/tlpkg/tlperl/lib/auto/Hash/Util/FieldHash/FieldHash.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Hash/Util/FieldHash/FieldHash.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Hash/Util/FieldHash/FieldHash.pdb b/Master/tlpkg/tlperl/lib/auto/Hash/Util/FieldHash/FieldHash.pdb
new file mode 100755
index 00000000000..6012deaaa0b
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Hash/Util/FieldHash/FieldHash.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Hash/Util/Util.dll b/Master/tlpkg/tlperl/lib/auto/Hash/Util/Util.dll
index 8288d4237dd..c0b80ed3c19 100755
--- a/Master/tlpkg/tlperl/lib/auto/Hash/Util/Util.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Hash/Util/Util.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Hash/Util/Util.pdb b/Master/tlpkg/tlperl/lib/auto/Hash/Util/Util.pdb
new file mode 100755
index 00000000000..98f31f569e1
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Hash/Util/Util.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/I18N/Langinfo/Langinfo.dll b/Master/tlpkg/tlperl/lib/auto/I18N/Langinfo/Langinfo.dll
index 28a55014542..a4df9a48763 100755
--- a/Master/tlpkg/tlperl/lib/auto/I18N/Langinfo/Langinfo.dll
+++ b/Master/tlpkg/tlperl/lib/auto/I18N/Langinfo/Langinfo.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/I18N/Langinfo/Langinfo.pdb b/Master/tlpkg/tlperl/lib/auto/I18N/Langinfo/Langinfo.pdb
new file mode 100755
index 00000000000..4acbcdd7684
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/I18N/Langinfo/Langinfo.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/IO/IO.dll b/Master/tlpkg/tlperl/lib/auto/IO/IO.dll
index 3fe3e68d283..9c83ed3925e 100755
--- a/Master/tlpkg/tlperl/lib/auto/IO/IO.dll
+++ b/Master/tlpkg/tlperl/lib/auto/IO/IO.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/IO/IO.pdb b/Master/tlpkg/tlperl/lib/auto/IO/IO.pdb
new file mode 100755
index 00000000000..f3d32a9f4a8
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/IO/IO.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/List/Util/Util.dll b/Master/tlpkg/tlperl/lib/auto/List/Util/Util.dll
index 242c99371e9..6b457ccfcd8 100755
--- a/Master/tlpkg/tlperl/lib/auto/List/Util/Util.dll
+++ b/Master/tlpkg/tlperl/lib/auto/List/Util/Util.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/List/Util/Util.pdb b/Master/tlpkg/tlperl/lib/auto/List/Util/Util.pdb
new file mode 100755
index 00000000000..82943708472
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/List/Util/Util.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/MIME/Base64/Base64.dll b/Master/tlpkg/tlperl/lib/auto/MIME/Base64/Base64.dll
index bdf89b5d839..661e8a6cea0 100755
--- a/Master/tlpkg/tlperl/lib/auto/MIME/Base64/Base64.dll
+++ b/Master/tlpkg/tlperl/lib/auto/MIME/Base64/Base64.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/MIME/Base64/Base64.pdb b/Master/tlpkg/tlperl/lib/auto/MIME/Base64/Base64.pdb
new file mode 100755
index 00000000000..922264173db
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/MIME/Base64/Base64.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Math/BigInt/FastCalc/FastCalc.dll b/Master/tlpkg/tlperl/lib/auto/Math/BigInt/FastCalc/FastCalc.dll
index d94cdcb8c81..cf113352061 100755
--- a/Master/tlpkg/tlperl/lib/auto/Math/BigInt/FastCalc/FastCalc.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Math/BigInt/FastCalc/FastCalc.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Math/BigInt/FastCalc/FastCalc.pdb b/Master/tlpkg/tlperl/lib/auto/Math/BigInt/FastCalc/FastCalc.pdb
new file mode 100755
index 00000000000..d4ac4ea22cf
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Math/BigInt/FastCalc/FastCalc.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.dll b/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.dll
index c6cad72314d..5c059bb99fd 100755
--- a/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.pdb b/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.pdb
new file mode 100755
index 00000000000..100f345ee84
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Opcode/Opcode.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.dll b/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.dll
index 0ac89d72be3..63558f50e42 100755
--- a/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.dll
+++ b/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.pdb b/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.pdb
new file mode 100755
index 00000000000..6cf073ad253
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/POSIX/POSIX.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/PerlIO/encoding/encoding.dll b/Master/tlpkg/tlperl/lib/auto/PerlIO/encoding/encoding.dll
index fd021ccf1c5..755a24f08fc 100755
--- a/Master/tlpkg/tlperl/lib/auto/PerlIO/encoding/encoding.dll
+++ b/Master/tlpkg/tlperl/lib/auto/PerlIO/encoding/encoding.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/PerlIO/encoding/encoding.pdb b/Master/tlpkg/tlperl/lib/auto/PerlIO/encoding/encoding.pdb
new file mode 100755
index 00000000000..342f0b11ddb
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/PerlIO/encoding/encoding.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/PerlIO/mmap/mmap.dll b/Master/tlpkg/tlperl/lib/auto/PerlIO/mmap/mmap.dll
index 2de4d00c681..8f54040a9fd 100755
--- a/Master/tlpkg/tlperl/lib/auto/PerlIO/mmap/mmap.dll
+++ b/Master/tlpkg/tlperl/lib/auto/PerlIO/mmap/mmap.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/PerlIO/mmap/mmap.pdb b/Master/tlpkg/tlperl/lib/auto/PerlIO/mmap/mmap.pdb
new file mode 100755
index 00000000000..30f9cdda10c
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/PerlIO/mmap/mmap.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/PerlIO/scalar/scalar.dll b/Master/tlpkg/tlperl/lib/auto/PerlIO/scalar/scalar.dll
index 4a35545cb5a..6b771eebcce 100755
--- a/Master/tlpkg/tlperl/lib/auto/PerlIO/scalar/scalar.dll
+++ b/Master/tlpkg/tlperl/lib/auto/PerlIO/scalar/scalar.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/PerlIO/scalar/scalar.pdb b/Master/tlpkg/tlperl/lib/auto/PerlIO/scalar/scalar.pdb
new file mode 100755
index 00000000000..fdf0e01e351
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/PerlIO/scalar/scalar.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/PerlIO/via/via.dll b/Master/tlpkg/tlperl/lib/auto/PerlIO/via/via.dll
index cfde854f2a9..014ad3f1aea 100755
--- a/Master/tlpkg/tlperl/lib/auto/PerlIO/via/via.dll
+++ b/Master/tlpkg/tlperl/lib/auto/PerlIO/via/via.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/PerlIO/via/via.pdb b/Master/tlpkg/tlperl/lib/auto/PerlIO/via/via.pdb
new file mode 100755
index 00000000000..db3242326ff
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/PerlIO/via/via.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.dll b/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.dll
index 5c1691ce4f2..bff30ed3f4a 100755
--- a/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.dll
+++ b/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.pdb b/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.pdb
new file mode 100755
index 00000000000..7f88af9469e
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/SDBM_File/SDBM_File.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Socket/Socket.dll b/Master/tlpkg/tlperl/lib/auto/Socket/Socket.dll
index 42ed349d586..f2e27612658 100755
--- a/Master/tlpkg/tlperl/lib/auto/Socket/Socket.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Socket/Socket.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Socket/Socket.pdb b/Master/tlpkg/tlperl/lib/auto/Socket/Socket.pdb
new file mode 100755
index 00000000000..5a7de73c20c
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Socket/Socket.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Storable/Storable.dll b/Master/tlpkg/tlperl/lib/auto/Storable/Storable.dll
index 9040a0304ed..2f01f82769a 100755
--- a/Master/tlpkg/tlperl/lib/auto/Storable/Storable.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Storable/Storable.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Storable/Storable.pdb b/Master/tlpkg/tlperl/lib/auto/Storable/Storable.pdb
new file mode 100755
index 00000000000..7dc64087718
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Storable/Storable.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Sys/Hostname/Hostname.dll b/Master/tlpkg/tlperl/lib/auto/Sys/Hostname/Hostname.dll
index 4771cb7788f..b4b3de6cd59 100755
--- a/Master/tlpkg/tlperl/lib/auto/Sys/Hostname/Hostname.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Sys/Hostname/Hostname.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Sys/Hostname/Hostname.pdb b/Master/tlpkg/tlperl/lib/auto/Sys/Hostname/Hostname.pdb
new file mode 100755
index 00000000000..5338f485c7e
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Sys/Hostname/Hostname.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.dll b/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.dll
index cabb5fd9959..f566737cde3 100755
--- a/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.pdb b/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.pdb
new file mode 100755
index 00000000000..0896f446572
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Time/HiRes/HiRes.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Time/Piece/Piece.dll b/Master/tlpkg/tlperl/lib/auto/Time/Piece/Piece.dll
index 265b09b261b..560c511967d 100755
--- a/Master/tlpkg/tlperl/lib/auto/Time/Piece/Piece.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Time/Piece/Piece.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Time/Piece/Piece.pdb b/Master/tlpkg/tlperl/lib/auto/Time/Piece/Piece.pdb
new file mode 100755
index 00000000000..73745a0f83a
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Time/Piece/Piece.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Unicode/Collate/Collate.dll b/Master/tlpkg/tlperl/lib/auto/Unicode/Collate/Collate.dll
index da3748b64e1..39cc0653ed5 100755
--- a/Master/tlpkg/tlperl/lib/auto/Unicode/Collate/Collate.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Unicode/Collate/Collate.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Unicode/Collate/Collate.pdb b/Master/tlpkg/tlperl/lib/auto/Unicode/Collate/Collate.pdb
new file mode 100755
index 00000000000..313fb90748a
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Unicode/Collate/Collate.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Unicode/Normalize/Normalize.dll b/Master/tlpkg/tlperl/lib/auto/Unicode/Normalize/Normalize.dll
index aa5e9b7d325..f6053c0f501 100755
--- a/Master/tlpkg/tlperl/lib/auto/Unicode/Normalize/Normalize.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Unicode/Normalize/Normalize.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Unicode/Normalize/Normalize.pdb b/Master/tlpkg/tlperl/lib/auto/Unicode/Normalize/Normalize.pdb
new file mode 100755
index 00000000000..5e4cace5132
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Unicode/Normalize/Normalize.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Win32.dll b/Master/tlpkg/tlperl/lib/auto/Win32/Win32.dll
index c99e4869852..e0d47528531 100755
--- a/Master/tlpkg/tlperl/lib/auto/Win32/Win32.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Win32/Win32.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32/Win32.pdb b/Master/tlpkg/tlperl/lib/auto/Win32/Win32.pdb
new file mode 100755
index 00000000000..963f66f1dbc
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Win32/Win32.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32API/File/File.dll b/Master/tlpkg/tlperl/lib/auto/Win32API/File/File.dll
index 445e7a9685b..d9ad28921df 100755
--- a/Master/tlpkg/tlperl/lib/auto/Win32API/File/File.dll
+++ b/Master/tlpkg/tlperl/lib/auto/Win32API/File/File.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/Win32API/File/File.pdb b/Master/tlpkg/tlperl/lib/auto/Win32API/File/File.pdb
new file mode 100755
index 00000000000..377c691f24d
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/Win32API/File/File.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/attributes/attributes.dll b/Master/tlpkg/tlperl/lib/auto/attributes/attributes.dll
index fd053f9caee..300d80c9ead 100755
--- a/Master/tlpkg/tlperl/lib/auto/attributes/attributes.dll
+++ b/Master/tlpkg/tlperl/lib/auto/attributes/attributes.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/attributes/attributes.pdb b/Master/tlpkg/tlperl/lib/auto/attributes/attributes.pdb
new file mode 100755
index 00000000000..a7a74aeba86
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/attributes/attributes.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/mro/mro.dll b/Master/tlpkg/tlperl/lib/auto/mro/mro.dll
index 7b8fbd178d0..1a9db43b9b8 100755
--- a/Master/tlpkg/tlperl/lib/auto/mro/mro.dll
+++ b/Master/tlpkg/tlperl/lib/auto/mro/mro.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/mro/mro.pdb b/Master/tlpkg/tlperl/lib/auto/mro/mro.pdb
new file mode 100755
index 00000000000..ff7094ec7e1
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/mro/mro.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/re/re.dll b/Master/tlpkg/tlperl/lib/auto/re/re.dll
index d6f00569549..294144b1c41 100755
--- a/Master/tlpkg/tlperl/lib/auto/re/re.dll
+++ b/Master/tlpkg/tlperl/lib/auto/re/re.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/re/re.pdb b/Master/tlpkg/tlperl/lib/auto/re/re.pdb
new file mode 100755
index 00000000000..f296d9a5023
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/re/re.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/threads/shared/shared.dll b/Master/tlpkg/tlperl/lib/auto/threads/shared/shared.dll
index aeae6cd3017..f63db0b6152 100755
--- a/Master/tlpkg/tlperl/lib/auto/threads/shared/shared.dll
+++ b/Master/tlpkg/tlperl/lib/auto/threads/shared/shared.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/threads/shared/shared.pdb b/Master/tlpkg/tlperl/lib/auto/threads/shared/shared.pdb
new file mode 100755
index 00000000000..398a80b8376
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/threads/shared/shared.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/threads/threads.dll b/Master/tlpkg/tlperl/lib/auto/threads/threads.dll
index 399d70f984f..eeee0ffccff 100755
--- a/Master/tlpkg/tlperl/lib/auto/threads/threads.dll
+++ b/Master/tlpkg/tlperl/lib/auto/threads/threads.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/auto/threads/threads.pdb b/Master/tlpkg/tlperl/lib/auto/threads/threads.pdb
new file mode 100755
index 00000000000..3f299c59169
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/auto/threads/threads.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/lib/autodie.pm b/Master/tlpkg/tlperl/lib/autodie.pm
index 0c1b9ac04c4..61e894066d6 100644
--- a/Master/tlpkg/tlperl/lib/autodie.pm
+++ b/Master/tlpkg/tlperl/lib/autodie.pm
@@ -9,7 +9,7 @@ our $VERSION;
# ABSTRACT: Replace functions with ones that succeed or die with lexical scope
BEGIN {
- our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg::Version
+ our $VERSION = '2.36'; # VERSION: Generated by DZP::OurPkg::Version
}
use constant ERROR_WRONG_FATAL => q{
diff --git a/Master/tlpkg/tlperl/lib/autodie/Scope/Guard.pm b/Master/tlpkg/tlperl/lib/autodie/Scope/Guard.pm
index 2be221d410b..1ee8a466817 100644
--- a/Master/tlpkg/tlperl/lib/autodie/Scope/Guard.pm
+++ b/Master/tlpkg/tlperl/lib/autodie/Scope/Guard.pm
@@ -4,7 +4,7 @@ use strict;
use warnings;
# ABSTRACT: Wrapper class for calling subs at end of scope
-our $VERSION = '2.34'; # VERSION
+our $VERSION = '2.36'; # VERSION
# This code schedules the cleanup of subroutines at the end of
# scope. It's directly inspired by chocolateboy's excellent
diff --git a/Master/tlpkg/tlperl/lib/autodie/Scope/GuardStack.pm b/Master/tlpkg/tlperl/lib/autodie/Scope/GuardStack.pm
index 8cb1be1fa21..8365b161f4d 100644
--- a/Master/tlpkg/tlperl/lib/autodie/Scope/GuardStack.pm
+++ b/Master/tlpkg/tlperl/lib/autodie/Scope/GuardStack.pm
@@ -6,7 +6,7 @@ use warnings;
use autodie::Scope::Guard;
# ABSTRACT: Hook stack for managing scopes via %^H
-our $VERSION = '2.34'; # VERSION
+our $VERSION = '2.36'; # VERSION
my $H_KEY_STEM = __PACKAGE__ . '/guard';
my $COUNTER = 0;
diff --git a/Master/tlpkg/tlperl/lib/autodie/Util.pm b/Master/tlpkg/tlperl/lib/autodie/Util.pm
index 95de13eb224..9988b59ae10 100644
--- a/Master/tlpkg/tlperl/lib/autodie/Util.pm
+++ b/Master/tlpkg/tlperl/lib/autodie/Util.pm
@@ -14,7 +14,7 @@ our @EXPORT_OK = qw(
on_end_of_compile_scope
);
-our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg:Version
+our $VERSION = '2.36'; # VERSION: Generated by DZP::OurPkg:Version
# ABSTRACT: Internal Utility subroutines for autodie and Fatal
@@ -179,7 +179,7 @@ autodie::Util - Internal Utility subroutines for autodie and Fatal
=head1 DESCRIPTION
-Interal Utilities for autodie and Fatal! This module is not a part of
+Internal Utilities for autodie and Fatal! This module is not a part of
autodie's public API.
This module contains utility subroutines for abstracting away the
@@ -237,7 +237,7 @@ this subroutine.
Given a package name and a hashref mapping names to a subroutine
reference (or C<undef>), this subroutine will install said subroutines
on their given name in that module. If a name mapes to C<undef>, any
-subroutine with that name in the target module will be remove
+subroutine with that name in the target module will be removed
(possibly "unshadowing" a CORE sub of same name).
=head1 AUTHOR
diff --git a/Master/tlpkg/tlperl/lib/autodie/exception.pm b/Master/tlpkg/tlperl/lib/autodie/exception.pm
index f4035d28c7f..36439d2b811 100644
--- a/Master/tlpkg/tlperl/lib/autodie/exception.pm
+++ b/Master/tlpkg/tlperl/lib/autodie/exception.pm
@@ -6,7 +6,7 @@ use Carp qw(croak);
use Scalar::Util qw(blessed);
-our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg:Version
+our $VERSION = '2.36'; # VERSION: Generated by DZP::OurPkg:Version
# ABSTRACT: Exceptions from autodying functions.
our $DEBUG = 0;
diff --git a/Master/tlpkg/tlperl/lib/autodie/exception/system.pm b/Master/tlpkg/tlperl/lib/autodie/exception/system.pm
index afe1617c84a..0a1ada68dfd 100644
--- a/Master/tlpkg/tlperl/lib/autodie/exception/system.pm
+++ b/Master/tlpkg/tlperl/lib/autodie/exception/system.pm
@@ -5,7 +5,7 @@ use warnings;
use parent 'autodie::exception';
use Carp qw(croak);
-our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg:Version
+our $VERSION = '2.36'; # VERSION: Generated by DZP::OurPkg:Version
# ABSTRACT: Exceptions from autodying system().
diff --git a/Master/tlpkg/tlperl/lib/autodie/hints.pm b/Master/tlpkg/tlperl/lib/autodie/hints.pm
index 3778cc75dd4..42e6e9b4dae 100644
--- a/Master/tlpkg/tlperl/lib/autodie/hints.pm
+++ b/Master/tlpkg/tlperl/lib/autodie/hints.pm
@@ -5,7 +5,7 @@ use warnings;
use constant PERL58 => ( $] < 5.009 );
-our $VERSION = '2.34'; # VERSION: Generated by DZP::OurPkg:Version
+our $VERSION = '2.36'; # VERSION: Generated by DZP::OurPkg:Version
# ABSTRACT: Provide hints about user subroutines to autodie
diff --git a/Master/tlpkg/tlperl/lib/autodie/skip.pm b/Master/tlpkg/tlperl/lib/autodie/skip.pm
index 32aba04fa51..4df68914979 100644
--- a/Master/tlpkg/tlperl/lib/autodie/skip.pm
+++ b/Master/tlpkg/tlperl/lib/autodie/skip.pm
@@ -2,7 +2,7 @@ package autodie::skip;
use strict;
use warnings;
-our $VERSION = '2.34'; # VERSION
+our $VERSION = '2.36'; # VERSION
# This package exists purely so people can inherit from it,
# which isn't at all how roles are supposed to work, but it's
diff --git a/Master/tlpkg/tlperl/lib/bigfloat.pm b/Master/tlpkg/tlperl/lib/bigfloat.pm
new file mode 100755
index 00000000000..c1b6111ea94
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/bigfloat.pm
@@ -0,0 +1,851 @@
+package bigfloat;
+
+use strict;
+use warnings;
+
+use Carp qw< carp croak >;
+
+our $VERSION = '0.66';
+
+use Exporter;
+our @ISA = qw( Exporter );
+our @EXPORT_OK = qw( PI e bpi bexp hex oct );
+our @EXPORT = qw( inf NaN );
+
+use overload;
+
+my $obj_class = "Math::BigFloat";
+
+##############################################################################
+
+sub accuracy {
+ my $self = shift;
+ $obj_class -> accuracy(@_);
+}
+
+sub precision {
+ my $self = shift;
+ $obj_class -> precision(@_);
+}
+
+sub round_mode {
+ my $self = shift;
+ $obj_class -> round_mode(@_);
+}
+
+sub div_scale {
+ my $self = shift;
+ $obj_class -> div_scale(@_);
+}
+
+sub upgrade {
+ my $self = shift;
+ $obj_class -> upgrade(@_);
+}
+
+sub downgrade {
+ my $self = shift;
+ $obj_class -> downgrade(@_);
+}
+
+sub in_effect {
+ my $level = shift || 0;
+ my $hinthash = (caller($level))[10];
+ $hinthash->{bigfloat};
+}
+
+sub _float_constant {
+ my $str = shift;
+
+ # See if we can convert the input string to a string using a normalized form
+ # consisting of the significand as a signed integer, the character "e", and
+ # the exponent as a signed integer, e.g., "+0e+0", "+314e-2", and "-1e+3".
+
+ my $nstr;
+
+ if (
+ # See if it is an octal number. An octal number like '0377' is also
+ # accepted by the functions parsing decimal and hexadecimal numbers, so
+ # handle octal numbers before decimal and hexadecimal numbers.
+
+ $str =~ /^0(?:[Oo]|_*[0-7])/ and
+ $nstr = Math::BigInt -> oct_str_to_dec_flt_str($str)
+
+ or
+
+ # See if it is decimal number.
+
+ $nstr = Math::BigInt -> dec_str_to_dec_flt_str($str)
+
+ or
+
+ # See if it is a hexadecimal number. Every hexadecimal number has a
+ # prefix, but the functions parsing numbers don't require it, so check
+ # to see if it actually is a hexadecimal number.
+
+ $str =~ /^0[Xx]/ and
+ $nstr = Math::BigInt -> hex_str_to_dec_flt_str($str)
+
+ or
+
+ # See if it is a binary numbers. Every binary number has a prefix, but
+ # the functions parsing numbers don't require it, so check to see if it
+ # actually is a binary number.
+
+ $str =~ /^0[Bb]/ and
+ $nstr = Math::BigInt -> bin_str_to_dec_flt_str($str))
+ {
+ return $obj_class -> new($nstr);
+ }
+
+ # If we get here, there is a bug in the code above this point.
+
+ warn "Internal error: unable to handle literal constant '$str'.",
+ " This is a bug, so please report this to the module author.";
+ return $obj_class -> bnan();
+}
+
+#############################################################################
+# the following two routines are for "use bigfloat qw/hex oct/;":
+
+use constant LEXICAL => $] > 5.009004;
+
+# Internal function with the same semantics as CORE::hex(). This function is
+# not used directly, but rather by other front-end functions.
+
+sub _hex_core {
+ my $str = shift;
+
+ # Strip off, clean, and parse as much as we can from the beginning.
+
+ my $x;
+ if ($str =~ s/ ^ ( 0? [xX] )? ( [0-9a-fA-F]* ( _ [0-9a-fA-F]+ )* ) //x) {
+ my $chrs = $2;
+ $chrs =~ tr/_//d;
+ $chrs = '0' unless CORE::length $chrs;
+ $x = $obj_class -> from_hex($chrs);
+ } else {
+ $x = $obj_class -> bzero();
+ }
+
+ # Warn about trailing garbage.
+
+ if (CORE::length($str)) {
+ require Carp;
+ Carp::carp(sprintf("Illegal hexadecimal digit '%s' ignored",
+ substr($str, 0, 1)));
+ }
+
+ return $x;
+}
+
+# Internal function with the same semantics as CORE::oct(). This function is
+# not used directly, but rather by other front-end functions.
+
+sub _oct_core {
+ my $str = shift;
+
+ $str =~ s/^\s*//;
+
+ # Hexadecimal input.
+
+ return _hex_core($str) if $str =~ /^0?[xX]/;
+
+ my $x;
+
+ # Binary input.
+
+ if ($str =~ /^0?[bB]/) {
+
+ # Strip off, clean, and parse as much as we can from the beginning.
+
+ if ($str =~ s/ ^ ( 0? [bB] )? ( [01]* ( _ [01]+ )* ) //x) {
+ my $chrs = $2;
+ $chrs =~ tr/_//d;
+ $chrs = '0' unless CORE::length $chrs;
+ $x = $obj_class -> from_bin($chrs);
+ }
+
+ # Warn about trailing garbage.
+
+ if (CORE::length($str)) {
+ require Carp;
+ Carp::carp(sprintf("Illegal binary digit '%s' ignored",
+ substr($str, 0, 1)));
+ }
+
+ return $x;
+ }
+
+ # Octal input. Strip off, clean, and parse as much as we can from the
+ # beginning.
+
+ if ($str =~ s/ ^ ( 0? [oO] )? ( [0-7]* ( _ [0-7]+ )* ) //x) {
+ my $chrs = $2;
+ $chrs =~ tr/_//d;
+ $chrs = '0' unless CORE::length $chrs;
+ $x = $obj_class -> from_oct($chrs);
+ }
+
+ # Warn about trailing garbage. CORE::oct() only warns about 8 and 9, but it
+ # is more helpful to warn about all invalid digits.
+
+ if (CORE::length($str)) {
+ require Carp;
+ Carp::carp(sprintf("Illegal octal digit '%s' ignored",
+ substr($str, 0, 1)));
+ }
+
+ return $x;
+}
+
+{
+ my $proto = LEXICAL ? '_' : ';$';
+ eval '
+sub hex(' . $proto . ') {' . <<'.';
+ my $str = @_ ? $_[0] : $_;
+ _hex_core($str);
+}
+.
+
+ eval '
+sub oct(' . $proto . ') {' . <<'.';
+ my $str = @_ ? $_[0] : $_;
+ _oct_core($str);
+}
+.
+}
+
+#############################################################################
+# the following two routines are for Perl 5.9.4 or later and are lexical
+
+my ($prev_oct, $prev_hex, $overridden);
+
+if (LEXICAL) { eval <<'.' }
+sub _hex(_) {
+ my $hh = (caller 0)[10];
+ return $$hh{bigfloat} ? bigfloat::_hex_core($_[0])
+ : $$hh{bigrat} ? bigrat::_hex_core($_[0])
+ : $$hh{bigint} ? bigint::_hex_core($_[0])
+ : $prev_hex ? &$prev_hex($_[0])
+ : CORE::hex($_[0]);
+}
+
+sub _oct(_) {
+ my $hh = (caller 0)[10];
+ return $$hh{bigfloat} ? bigfloat::_oct_core($_[0])
+ : $$hh{bigrat} ? bigrat::_oct_core($_[0])
+ : $$hh{bigint} ? bigint::_oct_core($_[0])
+ : $prev_oct ? &$prev_oct($_[0])
+ : CORE::oct($_[0]);
+}
+.
+
+sub _override {
+ return if $overridden;
+ $prev_oct = *CORE::GLOBAL::oct{CODE};
+ $prev_hex = *CORE::GLOBAL::hex{CODE};
+ no warnings 'redefine';
+ *CORE::GLOBAL::oct = \&_oct;
+ *CORE::GLOBAL::hex = \&_hex;
+ $overridden = 1;
+}
+
+sub unimport {
+ $^H{bigfloat} = undef; # no longer in effect
+ overload::remove_constant('binary', '', 'float', '', 'integer');
+}
+
+sub import {
+ my $class = shift;
+
+ $^H{bigfloat} = 1; # we are in effect
+ $^H{bigint} = undef;
+ $^H{bigrat} = undef;
+
+ # for newer Perls always override hex() and oct() with a lexical version:
+ if (LEXICAL) {
+ _override();
+ }
+
+ my @import = ();
+ my @a = (); # unrecognized arguments
+ my $ver; # version?
+
+ while (@_) {
+ my $param = shift;
+
+ # Accuracy.
+
+ if ($param =~ /^a(ccuracy)?$/) {
+ push @import, 'accuracy', shift();
+ next;
+ }
+
+ # Precision.
+
+ if ($param =~ /^p(recision)?$/) {
+ push @import, 'precision', shift();
+ next;
+ }
+
+ # Rounding mode.
+
+ if ($param eq 'round_mode') {
+ push @import, 'round_mode', shift();
+ next;
+ }
+
+ # Backend library.
+
+ if ($param =~ /^(l|lib|try|only)$/) {
+ push @import, $param eq 'l' ? 'lib' : $param;
+ push @import, shift() if @_;
+ next;
+ }
+
+ if ($param =~ /^(v|version)$/) {
+ $ver = 1;
+ next;
+ }
+
+ if ($param =~ /^(t|trace)$/) {
+ $obj_class .= "::Trace";
+ eval "require $obj_class";
+ die $@ if $@;
+ next;
+ }
+
+ if ($param =~ /^(PI|e|bexp|bpi|hex|oct)\z/) {
+ push @a, $param;
+ next;
+ }
+
+ croak("Unknown option '$param'");
+ }
+
+ eval "require $obj_class";
+ die $@ if $@;
+ $obj_class -> import(@import);
+
+ if ($ver) {
+ printf "%-31s v%s\n", $class, $class -> VERSION();
+ printf " lib => %-23s v%s\n",
+ $obj_class -> config("lib"), $obj_class -> config("lib_version");
+ printf "%-31s v%s\n", $obj_class, $obj_class -> VERSION();
+ exit;
+ }
+
+ $class -> export_to_level(1, $class, @a); # export inf, NaN, etc.
+
+ overload::constant
+
+ # This takes care each number written as decimal integer and within the
+ # range of what perl can represent as an integer, e.g., "314", but not
+ # "3141592653589793238462643383279502884197169399375105820974944592307".
+
+ integer => sub {
+ #printf "Value '%s' handled by the 'integer' sub.\n", $_[0];
+ my $str = shift;
+ return $obj_class -> new($str);
+ },
+
+ # This takes care of each number written with a decimal point and/or
+ # using floating point notation, e.g., "3.", "3.0", "3.14e+2" (decimal),
+ # "0b1.101p+2" (binary), "03.14p+2" and "0o3.14p+2" (octal), and
+ # "0x3.14p+2" (hexadecimal).
+
+ float => sub {
+ #printf "# Value '%s' handled by the 'float' sub.\n", $_[0];
+ _float_constant(shift);
+ },
+
+ # Take care of each number written as an integer (no decimal point or
+ # exponent) using binary, octal, or hexadecimal notation, e.g., "0b101"
+ # (binary), "0314" and "0o314" (octal), and "0x314" (hexadecimal).
+
+ binary => sub {
+ #printf "# Value '%s' handled by the 'binary' sub.\n", $_[0];
+ my $str = shift;
+ return $obj_class -> new($str) if $str =~ /^0[XxBb]/;
+ $obj_class -> from_oct($str);
+ };
+}
+
+sub inf () { $obj_class -> binf(); }
+sub NaN () { $obj_class -> bnan(); }
+
+# This should depend on the current accuracy/precision. Fixme!
+sub PI () { $obj_class -> new('3.141592653589793238462643383279502884197'); }
+sub e () { $obj_class -> new('2.718281828459045235360287471352662497757'); }
+
+sub bpi ($) {
+ my $up = Math::BigFloat -> upgrade(); # get current upgrading, if any ...
+ Math::BigFloat -> upgrade(undef); # ... and disable
+
+ my $x = Math::BigFloat -> bpi(@_);
+
+ Math::BigFloat -> upgrade($up); # reset the upgrading
+
+ return $x;
+}
+
+sub bexp ($$) {
+ my $up = Math::BigFloat -> upgrade(); # get current upgrading, if any ...
+ Math::BigFloat -> upgrade(undef); # ... and disable
+
+ my $x = Math::BigFloat -> new(shift);
+ $x -> bexp(@_);
+
+ Math::BigFloat -> upgrade($up); # reset the upgrading
+
+ return $x;
+}
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+bigfloat - transparent big floating point number support for Perl
+
+=head1 SYNOPSIS
+
+ use bigfloat;
+
+ $x = 2 + 4.5; # Math::BigFloat 6.5
+ print 2 ** 512 * 0.1; # Math::BigFloat 134...09.6
+ print inf + 42; # Math::BigFloat inf
+ print NaN * 7; # Math::BigFloat NaN
+ print hex("0x1234567890123490"); # Perl v5.10.0 or later
+
+ {
+ no bigfloat;
+ print 2 ** 256; # a normal Perl scalar now
+ }
+
+ # for older Perls, import into current package:
+ use bigfloat qw/hex oct/;
+ print hex("0x1234567890123490");
+ print oct("01234567890123490");
+
+=head1 DESCRIPTION
+
+All numeric literals in the given scope are converted to Math::BigFloat objects.
+
+All operators (including basic math operations) except the range operator C<..>
+are overloaded.
+
+So, the following:
+
+ use bigfloat;
+ $x = 1234;
+
+creates a Math::BigFloat and stores a reference to in $x. This happens
+transparently and behind your back, so to speak.
+
+You can see this with the following:
+
+ perl -Mbigfloat -le 'print ref(1234)'
+
+Since numbers are actually objects, you can call all the usual methods from
+Math::BigFloat on them. This even works to some extent on expressions:
+
+ perl -Mbigfloat -le '$x = 1234; print $x->bdec()'
+ perl -Mbigfloat -le 'print 1234->copy()->binc();'
+ perl -Mbigfloat -le 'print 1234->copy()->binc->badd(6);'
+ perl -Mbigfloat -le 'print +(1234)->copy()->binc()'
+
+(Note that print doesn't do what you expect if the expression starts with
+'(' hence the C<+>)
+
+You can even chain the operations together as usual:
+
+ perl -Mbigfloat -le 'print 1234->copy()->binc->badd(6);'
+ 1241
+
+Please note the following does not work as expected (prints nothing), since
+overloading of '..' is not yet possible in Perl (as of v5.8.0):
+
+ perl -Mbigfloat -le 'for (1..2) { print ref($_); }'
+
+=head2 Options
+
+C<bigfloat> recognizes some options that can be passed while loading it via via
+C<use>. The following options exist:
+
+=over 4
+
+=item a or accuracy
+
+This sets the accuracy for all math operations. The argument must be greater
+than or equal to zero. See Math::BigInt's bround() method for details.
+
+ perl -Mbigfloat=a,50 -le 'print sqrt(20)'
+
+Note that setting precision and accuracy at the same time is not possible.
+
+=item p or precision
+
+This sets the precision for all math operations. The argument can be any
+integer. Negative values mean a fixed number of digits after the dot, while a
+positive value rounds to this digit left from the dot. 0 means round to integer.
+See Math::BigInt's bfround() method for details.
+
+ perl -Mbigfloat=p,-50 -le 'print sqrt(20)'
+
+Note that setting precision and accuracy at the same time is not possible.
+
+=item t or trace
+
+This enables a trace mode and is primarily for debugging.
+
+=item l, lib, try, or only
+
+Load a different math lib, see L<Math Library>.
+
+ perl -Mbigfloat=l,GMP -e 'print 2 ** 512'
+ perl -Mbigfloat=lib,GMP -e 'print 2 ** 512'
+ perl -Mbigfloat=try,GMP -e 'print 2 ** 512'
+ perl -Mbigfloat=only,GMP -e 'print 2 ** 512'
+
+=item hex
+
+Override the built-in hex() method with a version that can handle big numbers.
+This overrides it by exporting it to the current package. Under Perl v5.10.0 and
+higher, this is not so necessary, as hex() is lexically overridden in the
+current scope whenever the C<bigfloat> pragma is active.
+
+=item oct
+
+Override the built-in oct() method with a version that can handle big numbers.
+This overrides it by exporting it to the current package. Under Perl v5.10.0 and
+higher, this is not so necessary, as oct() is lexically overridden in the
+current scope whenever the C<bigfloat> pragma is active.
+
+=item v or version
+
+this prints out the name and version of the modules and then exits.
+
+ perl -Mbigfloat=v
+
+=back
+
+=head2 Math Library
+
+Math with the numbers is done (by default) by a backend library module called
+Math::BigInt::Calc. The default is equivalent to saying:
+
+ use bigfloat lib => 'Calc';
+
+you can change this by using:
+
+ use bigfloat lib => 'GMP';
+
+The following would first try to find Math::BigInt::Foo, then Math::BigInt::Bar,
+and if this also fails, revert to Math::BigInt::Calc:
+
+ use bigfloat lib => 'Foo,Math::BigInt::Bar';
+
+Using c<lib> warns if none of the specified libraries can be found and
+L<Math::BigInt> fell back to one of the default libraries. To suppress this
+warning, use c<try> instead:
+
+ use bigfloat try => 'GMP';
+
+If you want the code to die instead of falling back, use C<only> instead:
+
+ use bigfloat only => 'GMP';
+
+Please see respective module documentation for further details.
+
+=head2 Method calls
+
+Since all numbers are now objects, you can use all methods that are part of the
+Math::BigFloat API.
+
+But a warning is in order. When using the following to make a copy of a number,
+only a shallow copy will be made.
+
+ $x = 9; $y = $x;
+ $x = $y = 7;
+
+Using the copy or the original with overloaded math is okay, e.g., the following
+work:
+
+ $x = 9; $y = $x;
+ print $x + 1, " ", $y,"\n"; # prints 10 9
+
+but calling any method that modifies the number directly will result in B<both>
+the original and the copy being destroyed:
+
+ $x = 9; $y = $x;
+ print $x->badd(1), " ", $y,"\n"; # prints 10 10
+
+ $x = 9; $y = $x;
+ print $x->binc(1), " ", $y,"\n"; # prints 10 10
+
+ $x = 9; $y = $x;
+ print $x->bmul(2), " ", $y,"\n"; # prints 18 18
+
+Using methods that do not modify, but test that the contents works:
+
+ $x = 9; $y = $x;
+ $z = 9 if $x->is_zero(); # works fine
+
+See the documentation about the copy constructor and C<=> in overload, as well
+as the documentation in Math::BigFloat for further details.
+
+=head2 Methods
+
+=over 4
+
+=item inf()
+
+A shortcut to return Math::BigFloat->binf(). Useful because Perl does not always
+handle bareword C<inf> properly.
+
+=item NaN()
+
+A shortcut to return Math::BigFloat->bnan(). Useful because Perl does not always
+handle bareword C<NaN> properly.
+
+=item e
+
+ # perl -Mbigfloat=e -wle 'print e'
+
+Returns Euler's number C<e>, aka exp(1)
+
+=item PI
+
+ # perl -Mbigfloat=PI -wle 'print PI'
+
+Returns PI.
+
+=item bexp()
+
+ bexp($power, $accuracy);
+
+Returns Euler's number C<e> raised to the appropriate power, to the wanted
+accuracy.
+
+Example:
+
+ # perl -Mbigfloat=bexp -wle 'print bexp(1,80)'
+
+=item bpi()
+
+ bpi($accuracy);
+
+Returns PI to the wanted accuracy.
+
+Example:
+
+ # perl -Mbigfloat=bpi -wle 'print bpi(80)'
+
+=item accuracy()
+
+Set or get the accuracy.
+
+=item precision()
+
+Set or get the precision.
+
+=item round_mode()
+
+Set or get the rounding mode.
+
+=item div_scale()
+
+Set or get the division scale.
+
+=item upgrade()
+
+Set or get the class that the downgrade class upgrades to, if any. Set the
+upgrade class to C<undef> to disable upgrading.
+
+Upgrading is disabled by default.
+
+=item downgrade()
+
+Set or get the class that the upgrade class downgrades to, if any. Set the
+downgrade class to C<undef> to disable upgrading.
+
+Downgrading is disabled by default.
+
+=item in_effect()
+
+ use bigfloat;
+
+ print "in effect\n" if bigfloat::in_effect; # true
+ {
+ no bigfloat;
+ print "in effect\n" if bigfloat::in_effect; # false
+ }
+
+Returns true or false if C<bigfloat> is in effect in the current scope.
+
+This method only works on Perl v5.9.4 or later.
+
+=back
+
+=head1 CAVEATS
+
+=over 4
+
+=item Hexadecimal, octal, and binary floating point literals
+
+Perl (and this module) accepts hexadecimal, octal, and binary floating point
+literals, but use them with care with Perl versions before v5.32.0, because some
+versions of Perl silently give the wrong result.
+
+=item Operator vs literal overloading
+
+C<bigrat> works by overloading handling of integer and floating point literals,
+converting them to L<Math::BigRat> objects.
+
+This means that arithmetic involving only string values or string literals are
+performed using Perl's built-in operators.
+
+For example:
+
+ use bigrat;
+ my $x = "900000000000000009";
+ my $y = "900000000000000007";
+ print $x - $y;
+
+outputs C<0> on default 32-bit builds, since C<bigfloat> never sees the string
+literals. To ensure the expression is all treated as C<Math::BigFloat> objects,
+use a literal number in the expression:
+
+ print +(0+$x) - $y;
+
+=item Ranges
+
+Perl does not allow overloading of ranges, so you can neither safely use ranges
+with C<bigfloat> endpoints, nor is the iterator variable a C<Math::BigFloat>.
+
+ use 5.010;
+ for my $i (12..13) {
+ for my $j (20..21) {
+ say $i ** $j; # produces a floating-point number,
+ # not an object
+ }
+ }
+
+=item in_effect()
+
+This method only works on Perl v5.9.4 or later.
+
+=item hex()/oct()
+
+C<bigfloat> overrides these routines with versions that can also handle big
+integer values. Under Perl prior to version v5.9.4, however, this will not
+happen unless you specifically ask for it with the two import tags "hex" and
+"oct" - and then it will be global and cannot be disabled inside a scope with
+C<no bigfloat>:
+
+ use bigfloat qw/hex oct/;
+
+ print hex("0x1234567890123456");
+ {
+ no bigfloat;
+ print hex("0x1234567890123456");
+ }
+
+The second call to hex() will warn about a non-portable constant.
+
+Compare this to:
+
+ use bigfloat;
+
+ # will warn only under Perl older than v5.9.4
+ print hex("0x1234567890123456");
+
+=back
+
+=head1 EXAMPLES
+
+Some cool command line examples to impress the Python crowd ;)
+
+ perl -Mbigfloat -le 'print sqrt(33)'
+ perl -Mbigfloat -le 'print 2**255'
+ perl -Mbigfloat -le 'print 4.5+2**255'
+ perl -Mbigfloat -le 'print 3/7 + 5/7 + 8/3'
+ perl -Mbigfloat -le 'print 123->is_odd()'
+ perl -Mbigfloat -le 'print log(2)'
+ perl -Mbigfloat -le 'print exp(1)'
+ perl -Mbigfloat -le 'print 2 ** 0.5'
+ perl -Mbigfloat=a,65 -le 'print 2 ** 0.2'
+ perl -Mbigfloat=l,GMP -le 'print 7 ** 7777'
+
+=head1 BUGS
+
+Please report any bugs or feature requests to
+C<bug-bignum at rt.cpan.org>, or through the web interface at
+L<https://rt.cpan.org/Ticket/Create.html?Queue=bignum> (requires login).
+We will be notified, and then you'll automatically be notified of
+progress on your bug as I make changes.
+
+=head1 SUPPORT
+
+You can find documentation for this module with the perldoc command.
+
+ perldoc bigfloat
+
+You can also look for information at:
+
+=over 4
+
+=item * GitHub
+
+L<https://github.com/pjacklam/p5-bignum>
+
+=item * RT: CPAN's request tracker
+
+L<https://rt.cpan.org/Dist/Display.html?Name=bignum>
+
+=item * MetaCPAN
+
+L<https://metacpan.org/release/bignum>
+
+=item * CPAN Testers Matrix
+
+L<http://matrix.cpantesters.org/?dist=bignum>
+
+=item * CPAN Ratings
+
+L<https://cpanratings.perl.org/dist/bignum>
+
+=back
+
+=head1 LICENSE
+
+This program is free software; you may redistribute it and/or modify it under
+the same terms as Perl itself.
+
+=head1 SEE ALSO
+
+L<bigint> and L<bigrat>.
+
+L<Math::BigInt>, L<Math::BigFloat>, L<Math::BigRat> and L<Math::Big> as well as
+L<Math::BigInt::FastCalc>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
+
+=head1 AUTHORS
+
+=over 4
+
+=item *
+
+(C) by Tels L<http://bloodgate.com/> in early 2002 - 2007.
+
+=item *
+
+Maintained by Peter John Acklam E<lt>pjacklam@gmail.comE<gt>, 2014-.
+
+=back
+
+=cut
diff --git a/Master/tlpkg/tlperl/lib/bigint.pm b/Master/tlpkg/tlperl/lib/bigint.pm
index 8d7048b5927..d5038f42a03 100644
--- a/Master/tlpkg/tlperl/lib/bigint.pm
+++ b/Master/tlpkg/tlperl/lib/bigint.pm
@@ -1,10 +1,11 @@
package bigint;
-use 5.010;
use strict;
use warnings;
-our $VERSION = '0.51';
+use Carp qw< carp croak >;
+
+our $VERSION = '0.66';
use Exporter;
our @ISA = qw( Exporter );
@@ -13,99 +14,106 @@ our @EXPORT = qw( inf NaN );
use overload;
-##############################################################################
+my $obj_class = "Math::BigInt";
-# These are all alike, and thus faked by AUTOLOAD
-
-my @faked = qw/round_mode accuracy precision div_scale/;
-our ($AUTOLOAD, $_lite); # _lite for testsuite
-
-sub AUTOLOAD {
- my $name = $AUTOLOAD;
-
- $name =~ s/.*:://; # split package
- no strict 'refs';
- foreach my $n (@faked) {
- if ($n eq $name) {
- *{"bigint::$name"} =
- sub {
- my $self = shift;
- no strict 'refs';
- if (defined $_[0]) {
- return Math::BigInt->$name($_[0]);
- }
- return Math::BigInt->$name();
- };
- return &$name;
- }
- }
+##############################################################################
- # delayed load of Carp and avoid recursion
- require Carp;
- Carp::croak ("Can't call bigint\-\>$name, not a valid method");
+sub accuracy {
+ my $self = shift;
+ $obj_class -> accuracy(@_);
}
-sub upgrade {
- $Math::BigInt::upgrade;
+sub precision {
+ my $self = shift;
+ $obj_class -> precision(@_);
}
-sub _binary_constant {
- # this takes a binary/hexadecimal/octal constant string and returns it
- # as string suitable for new. Basically it converts octal to decimal, and
- # passes every thing else unmodified back.
- my $string = shift;
+sub round_mode {
+ my $self = shift;
+ $obj_class -> round_mode(@_);
+}
- return Math::BigInt->new($string) if $string =~ /^0[bx]/;
+sub div_scale {
+ my $self = shift;
+ $obj_class -> div_scale(@_);
+}
- # so it must be an octal constant
- Math::BigInt->from_oct($string);
+sub in_effect {
+ my $level = shift || 0;
+ my $hinthash = (caller($level))[10];
+ $hinthash->{bigint};
}
sub _float_constant {
- # this takes a floating point constant string and returns it truncated to
- # integer. For instance, '4.5' => '4', '1.234e2' => '123' etc
- my $float = shift;
-
- # some simple cases first
- return $float if ($float =~ /^[+-]?[0-9]+$/); # '+123','-1','0' etc
- return $float
- if ($float =~ /^[+-]?[0-9]+\.?[eE]\+?[0-9]+$/); # 123e2, 123.e+2
- return '0' if ($float =~ /^[+-]?[0]*\.[0-9]+$/); # .2, 0.2, -.1
- if ($float =~ /^[+-]?[0-9]+\.[0-9]*$/) { # 1., 1.23, -1.2 etc
- $float =~ s/\..*//;
- return $float;
- }
- my ($mis, $miv, $mfv, $es, $ev) = Math::BigInt::_split($float);
- return $float if !defined $mis; # doesn't look like a number to me
- my $ec = int($$ev);
- my $sign = $$mis;
- $sign = '' if $sign eq '+';
- if ($$es eq '-') {
- # ignore fraction part entirely
- if ($ec >= length($$miv)) { # 123.23E-4
- return '0';
+ my $str = shift;
+
+ # We can't pass input directly to new() because of the way it handles the
+ # combination of non-integers with no upgrading. Such cases are by
+ # Math::BigInt returned as NaN, but we truncate to an integer.
+
+ # See if we can convert the input string to a string using a normalized form
+ # consisting of the significand as a signed integer, the character "e", and
+ # the exponent as a signed integer, e.g., "+0e+0", "+314e-2", and "-1e+3".
+
+ my $nstr;
+
+ if (
+ # See if it is an octal number. An octal number like '0377' is also
+ # accepted by the functions parsing decimal and hexadecimal numbers, so
+ # handle octal numbers before decimal and hexadecimal numbers.
+
+ $str =~ /^0(?:[Oo]|_*[0-7])/ and
+ $nstr = Math::BigInt -> oct_str_to_dec_flt_str($str)
+
+ or
+
+ # See if it is decimal number.
+
+ $nstr = Math::BigInt -> dec_str_to_dec_flt_str($str)
+
+ or
+
+ # See if it is a hexadecimal number. Every hexadecimal number has a
+ # prefix, but the functions parsing numbers don't require it, so check
+ # to see if it actually is a hexadecimal number.
+
+ $str =~ /^0[Xx]/ and
+ $nstr = Math::BigInt -> hex_str_to_dec_flt_str($str)
+
+ or
+
+ # See if it is a binary numbers. Every binary number has a prefix, but
+ # the functions parsing numbers don't require it, so check to see if it
+ # actually is a binary number.
+
+ $str =~ /^0[Bb]/ and
+ $nstr = Math::BigInt -> bin_str_to_dec_flt_str($str))
+ {
+ my $pos = index($nstr, 'e');
+ my $expo_sgn = substr($nstr, $pos + 1, 1);
+ my $sign = substr($nstr, 0, 1);
+ my $mant = substr($nstr, 1, $pos - 1);
+ my $mant_len = CORE::length($mant);
+ my $expo = substr($nstr, $pos + 2);
+
+ if ($expo_sgn eq '-') {
+ if ($mant_len <= $expo) {
+ return $obj_class -> bzero(); # underflow
+ } else {
+ $mant = substr $mant, 0, $mant_len - $expo; # truncate
+ return $obj_class -> new($sign . $mant);
+ }
+ } else {
+ $mant .= "0" x $expo; # pad with zeros
+ return $obj_class -> new($sign . $mant);
}
- return $sign . substr($$miv, 0, length($$miv) - $ec); # 1234.45E-2 = 12
}
- # xE+y
- if ($ec >= length($$mfv)) {
- $ec -= length($$mfv);
- return $sign.$$miv.$$mfv if $ec == 0; # 123.45E+2 => 12345
- return $sign.$$miv.$$mfv.'E'.$ec; # 123.45e+3 => 12345e1
- }
- $mfv = substr($$mfv, 0, $ec);
- $sign.$$miv.$mfv; # 123.45e+1 => 1234
-}
-sub unimport {
- $^H{bigint} = undef; # no longer in effect
- overload::remove_constant('binary', '', 'float', '', 'integer');
-}
+ # If we get here, there is a bug in the code above this point.
-sub in_effect {
- my $level = shift || 0;
- my $hinthash = (caller($level))[10];
- $hinthash->{bigint};
+ warn "Internal error: unable to handle literal constant '$str'.",
+ " This is a bug, so please report this to the module author.";
+ return $obj_class -> bnan();
}
#############################################################################
@@ -122,13 +130,13 @@ sub _hex_core {
# Strip off, clean, and parse as much as we can from the beginning.
my $x;
- if ($str =~ s/ ^ (0?[xX])? ( [0-9a-fA-F]* ( _ [0-9a-fA-F]+ )* ) //x) {
+ if ($str =~ s/ ^ ( 0? [xX] )? ( [0-9a-fA-F]* ( _ [0-9a-fA-F]+ )* ) //x) {
my $chrs = $2;
$chrs =~ tr/_//d;
$chrs = '0' unless CORE::length $chrs;
- $x = Math::BigInt -> from_hex($chrs);
+ $x = $obj_class -> from_hex($chrs);
} else {
- $x = Math::BigInt -> bzero();
+ $x = $obj_class -> bzero();
}
# Warn about trailing garbage.
@@ -162,11 +170,11 @@ sub _oct_core {
# Strip off, clean, and parse as much as we can from the beginning.
- if ($str =~ s/ ^ (0?[bB])? ( [01]* ( _ [01]+ )* ) //x) {
+ if ($str =~ s/ ^ ( 0? [bB] )? ( [01]* ( _ [01]+ )* ) //x) {
my $chrs = $2;
$chrs =~ tr/_//d;
$chrs = '0' unless CORE::length $chrs;
- $x = Math::BigInt -> from_bin($chrs);
+ $x = $obj_class -> from_bin($chrs);
}
# Warn about trailing garbage.
@@ -183,21 +191,20 @@ sub _oct_core {
# Octal input. Strip off, clean, and parse as much as we can from the
# beginning.
- if ($str =~ s/ ^ ( [0-7]* ( _ [0-7]+ )* ) //x) {
- my $chrs = $1;
+ if ($str =~ s/ ^ ( 0? [oO] )? ( [0-7]* ( _ [0-7]+ )* ) //x) {
+ my $chrs = $2;
$chrs =~ tr/_//d;
$chrs = '0' unless CORE::length $chrs;
- $x = Math::BigInt -> from_oct($chrs);
+ $x = $obj_class -> from_oct($chrs);
}
- # Warn about trailing garbage. CORE::oct() only warns about 8 and 9.
+ # Warn about trailing garbage. CORE::oct() only warns about 8 and 9, but it
+ # is more helpful to warn about all invalid digits.
if (CORE::length($str)) {
- my $chr = substr($str, 0, 1);
- if ($chr eq '8' || $chr eq '9') {
- require Carp;
- Carp::carp(sprintf("Illegal octal digit '%s' ignored", $chr));
- }
+ require Carp;
+ Carp::carp(sprintf("Illegal octal digit '%s' ignored",
+ substr($str, 0, 1)));
}
return $x;
@@ -228,16 +235,20 @@ my ($prev_oct, $prev_hex, $overridden);
if (LEXICAL) { eval <<'.' }
sub _hex(_) {
my $hh = (caller 0)[10];
- return $prev_hex ? &$prev_hex($_[0]) : CORE::hex($_[0])
- unless $$hh{bigint}||$$hh{bignum}||$$hh{bigrat};
- _hex_core($_[0]);
+ return $$hh{bigint} ? bigint::_hex_core($_[0])
+ : $$hh{bigfloat} ? bigfloat::_hex_core($_[0])
+ : $$hh{bigrat} ? bigrat::_hex_core($_[0])
+ : $prev_hex ? &$prev_hex($_[0])
+ : CORE::hex($_[0]);
}
sub _oct(_) {
my $hh = (caller 0)[10];
- return $prev_oct ? &$prev_oct($_[0]) : CORE::oct($_[0])
- unless $$hh{bigint}||$$hh{bignum}||$$hh{bigrat};
- _oct_core($_[0]);
+ return $$hh{bigint} ? bigint::_oct_core($_[0])
+ : $$hh{bigfloat} ? bigfloat::_oct_core($_[0])
+ : $$hh{bigrat} ? bigrat::_oct_core($_[0])
+ : $prev_oct ? &$prev_oct($_[0])
+ : CORE::oct($_[0]);
}
.
@@ -248,128 +259,141 @@ sub _override {
no warnings 'redefine';
*CORE::GLOBAL::oct = \&_oct;
*CORE::GLOBAL::hex = \&_hex;
- $overridden++;
+ $overridden = 1;
+}
+
+sub unimport {
+ $^H{bigint} = undef; # no longer in effect
+ overload::remove_constant('binary', '', 'float', '', 'integer');
}
sub import {
- my $self = shift;
+ my $class = shift;
- $^H{bigint} = 1; # we are in effect
+ $^H{bigint} = 1; # we are in effect
+ $^H{bigfloat} = undef;
+ $^H{bigrat} = undef;
# for newer Perls always override hex() and oct() with a lexical version:
if (LEXICAL) {
_override();
}
- # some defaults
- my $lib = '';
- my $lib_kind = 'try';
-
- my @import = (':constant'); # drive it w/ constant
- my @a = @_;
- my $l = scalar @_;
- my $j = 0;
- my ($ver, $trace); # version? trace?
- my ($a, $p); # accuracy, precision
- for (my $i = 0; $i < $l; $i++, $j++) {
- if ($_[$i] =~ /^(l|lib|try|only)$/) {
- # this causes a different low lib to take care...
- $lib_kind = $1;
- $lib_kind = 'lib' if $lib_kind eq 'l';
- $lib = $_[$i + 1] || '';
- my $s = 2;
- $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..."
- splice @a, $j, $s;
- $j -= $s;
- $i++;
- } elsif ($_[$i] =~ /^(a|accuracy)$/) {
- $a = $_[$i + 1];
- my $s = 2;
- $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..."
- splice @a, $j, $s;
- $j -= $s;
- $i++;
- } elsif ($_[$i] =~ /^(p|precision)$/) {
- $p = $_[$i + 1];
- my $s = 2;
- $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..."
- splice @a, $j, $s;
- $j -= $s;
- $i++;
- } elsif ($_[$i] =~ /^(v|version)$/) {
+
+ my @import = ();
+ my @a = (); # unrecognized arguments
+ my $ver; # version? trace?
+
+ while (@_) {
+ my $param = shift;
+
+ # Accuracy.
+
+ if ($param =~ /^a(ccuracy)?$/) {
+ push @import, 'accuracy', shift();
+ next;
+ }
+
+ # Precision.
+
+ if ($param =~ /^p(recision)?$/) {
+ push @import, 'precision', shift();
+ next;
+ }
+
+ # Rounding mode.
+
+ if ($param eq 'round_mode') {
+ push @import, 'round_mode', shift();
+ next;
+ }
+
+ # Backend library.
+
+ if ($param =~ /^(l|lib|try|only)$/) {
+ push @import, $param eq 'l' ? 'lib' : $param;
+ push @import, shift() if @_;
+ next;
+ }
+
+ if ($param =~ /^(v|version)$/) {
$ver = 1;
- splice @a, $j, 1;
- $j--;
- } elsif ($_[$i] =~ /^(t|trace)$/) {
- $trace = 1;
- splice @a, $j, 1;
- $j--;
- } elsif ($_[$i] !~ /^(PI|e|bpi|bexp|hex|oct)\z/) {
- die ("unknown option $_[$i]");
+ next;
}
- }
- my $class;
- $_lite = 0; # using M::BI::L ?
- if ($trace) {
- require Math::BigInt::Trace;
- $class = 'Math::BigInt::Trace';
- } else {
- # see if we can find Math::BigInt::Lite
- if (!defined $a && !defined $p) { # rounding won't work to well
- local @INC = @INC;
- pop @INC if $INC[-1] eq '.';
- if (eval { require Math::BigInt::Lite; 1 }) {
- @import = (); # :constant in Lite, not MBI
- Math::BigInt::Lite->import(':constant');
- $_lite = 1; # signal okay
- }
+
+ if ($param =~ /^(t|trace)$/) {
+ $obj_class .= "::Trace";
+ eval "require $obj_class";
+ die $@ if $@;
+ next;
+ }
+
+ if ($param =~ /^(PI|e|bexp|bpi|hex|oct)\z/) {
+ push @a, $param;
+ next;
}
- require Math::BigInt if $_lite == 0; # not already loaded?
- $class = 'Math::BigInt'; # regardless of MBIL or not
+
+ croak("Unknown option '$param'");
}
- push @import, $lib_kind => $lib if $lib ne '';
- # Math::BigInt::Trace or plain Math::BigInt
- $class->import(@import);
- bigint->accuracy($a) if defined $a;
- bigint->precision($p) if defined $p;
+ eval "require $obj_class";
+ die $@ if $@;
+ $obj_class -> import(@import);
+
if ($ver) {
- print "bigint\t\t\t v$VERSION\n";
- print "Math::BigInt::Lite\t v$Math::BigInt::Lite::VERSION\n" if $_lite;
- print "Math::BigInt\t\t v$Math::BigInt::VERSION";
- my $config = Math::BigInt->config();
- print " lib => $config->{lib} v$config->{lib_version}\n";
+ printf "%-31s v%s\n", $class, $class -> VERSION();
+ printf " lib => %-23s v%s\n",
+ $obj_class -> config("lib"), $obj_class -> config("lib_version");
+ printf "%-31s v%s\n", $obj_class, $obj_class -> VERSION();
exit;
}
- # we take care of floating point constants, since BigFloat isn't available
- # and BigInt doesn't like them:
- overload::constant float =>
- sub {
- Math::BigInt->new(_float_constant(shift));
- };
- # Take care of octal/hexadecimal constants
- overload::constant binary =>
- sub {
- _binary_constant(shift);
- };
- # if another big* was already loaded:
- my ($package) = caller();
+ $class -> export_to_level(1, $class, @a); # export inf, NaN, etc.
- no strict 'refs';
- if (!defined *{"${package}::inf"}) {
- $self->export_to_level(1, $self, @a); # export inf and NaN, e and PI
- }
+ overload::constant
+
+ # This takes care each number written as decimal integer and within the
+ # range of what perl can represent as an integer, e.g., "314", but not
+ # "3141592653589793238462643383279502884197169399375105820974944592307".
+
+ integer => sub {
+ #printf "Value '%s' handled by the 'integer' sub.\n", $_[0];
+ my $str = shift;
+ return $obj_class -> new($str);
+ },
+
+ # This takes care of each number written with a decimal point and/or
+ # using floating point notation, e.g., "3.", "3.0", "3.14e+2" (decimal),
+ # "0b1.101p+2" (binary), "03.14p+2" and "0o3.14p+2" (octal), and
+ # "0x3.14p+2" (hexadecimal).
+
+ float => sub {
+ #printf "# Value '%s' handled by the 'float' sub.\n", $_[0];
+ _float_constant(shift);
+ },
+
+ # Take care of each number written as an integer (no decimal point or
+ # exponent) using binary, octal, or hexadecimal notation, e.g., "0b101"
+ # (binary), "0314" and "0o314" (octal), and "0x314" (hexadecimal).
+
+ binary => sub {
+ #printf "# Value '%s' handled by the 'binary' sub.\n", $_[0];
+ my $str = shift;
+ return $obj_class -> new($str) if $str =~ /^0[XxBb]/;
+ $obj_class -> from_oct($str);
+ };
}
-sub inf () { Math::BigInt->binf(); }
-sub NaN () { Math::BigInt->bnan(); }
+sub inf () { $obj_class -> binf(); }
+sub NaN () { $obj_class -> bnan(); }
+
+sub PI () { $obj_class -> new(3); }
+sub e () { $obj_class -> new(2); }
+
+sub bpi ($) { $obj_class -> new(3); }
-sub PI () { Math::BigInt->new(3); }
-sub e () { Math::BigInt->new(2); }
-sub bpi ($) { Math::BigInt->new(3); }
sub bexp ($$) {
- my $x = Math::BigInt->new($_[0]);
- $x->bexp($_[1]);
+ my $x = $obj_class -> new(shift);
+ $x -> bexp(@_);
}
1;
@@ -380,66 +404,104 @@ __END__
=head1 NAME
-bigint - Transparent BigInteger support for Perl
+bigint - transparent big integer support for Perl
=head1 SYNOPSIS
- use bigint;
+ use bigint;
- $x = 2 + 4.5,"\n"; # BigInt 6
- print 2 ** 512,"\n"; # really is what you think it is
- print inf + 42,"\n"; # inf
- print NaN * 7,"\n"; # NaN
- print hex("0x1234567890123490"),"\n"; # Perl v5.10.0 or later
+ $x = 2 + 4.5; # Math::BigInt 6
+ print 2 ** 512; # Math::BigInt 134...096
+ print inf + 42; # Math::BigInt inf
+ print NaN * 7; # Math::BigInt NaN
+ print hex("0x1234567890123490"); # Perl v5.10.0 or later
- {
- no bigint;
- print 2 ** 256,"\n"; # a normal Perl scalar now
- }
+ {
+ no bigint;
+ print 2 ** 256; # a normal Perl scalar now
+ }
- # Import into current package:
- use bigint qw/hex oct/;
- print hex("0x1234567890123490"),"\n";
- print oct("01234567890123490"),"\n";
+ # for older Perls, import into current package:
+ use bigint qw/hex oct/;
+ print hex("0x1234567890123490");
+ print oct("01234567890123490");
=head1 DESCRIPTION
+All numeric literal in the given scope are converted to Math::BigInt objects.
+Numeric literal that represent non-integers are truncated to an integer. All
+results of expressions are also truncated to integer.
+
All operators (including basic math operations) except the range operator C<..>
-are overloaded. Integer constants are created as proper BigInts.
+are overloaded.
+
+Unlike the L<integer> pragma, the C<bigint> pragma creates integers that are
+only limited in their size by the available memory.
+
+So, the following:
+
+ use bigint;
+ $x = 1234;
+
+creates a Math::BigInt and stores a reference to in $x. This happens
+transparently and behind your back, so to speak.
+
+You can see this with the following:
+
+ perl -Mbigint -le 'print ref(1234)'
+
+Since numbers are actually objects, you can call all the usual methods from
+Math::BigFloat on them. This even works to some extent on expressions:
+
+ perl -Mbigint -le '$x = 1234; print $x->bdec()'
+ perl -Mbigint -le 'print 1234->copy()->binc();'
+ perl -Mbigint -le 'print 1234->copy()->binc->badd(6);'
+ perl -Mbigint -le 'print +(1234)->copy()->binc()'
+
+(Note that print doesn't do what you expect if the expression starts with
+'(' hence the C<+>)
+
+You can even chain the operations together as usual:
-Floating point constants are truncated to integer. All parts and results of
-expressions are also truncated.
+ perl -Mbigint -le 'print 1234->copy()->binc->badd(6);'
+ 1241
-Unlike L<integer>, this pragma creates integer constants that are only
-limited in their size by the available memory and CPU time.
+Please note the following does not work as expected (prints nothing), since
+overloading of '..' is not yet possible in Perl (as of v5.8.0):
+
+ perl -Mbigint -le 'for (1..2) { print ref($_); }'
=head2 use integer vs. use bigint
-There is one small difference between C<use integer> and C<use bigint>: the
-former will not affect assignments to variables and the return value of
-some functions. C<bigint> truncates these results to integer too:
-
- # perl -Minteger -wle 'print 3.2'
- 3.2
- # perl -Minteger -wle 'print 3.2 + 0'
- 3
- # perl -Mbigint -wle 'print 3.2'
- 3
- # perl -Mbigint -wle 'print 3.2 + 0'
- 3
-
- # perl -Mbigint -wle 'print exp(1) + 0'
- 2
- # perl -Mbigint -wle 'print exp(1)'
- 2
- # perl -Minteger -wle 'print exp(1)'
- 2.71828182845905
- # perl -Minteger -wle 'print exp(1) + 0'
- 2
-
-In practice this makes seldom a difference as B<parts and results> of
-expressions will be truncated anyway, but this can, for instance, affect the
-return value of subroutines:
+There are some difference between C<use integer> and C<use bigint>.
+
+Whereas C<use integer> is limited to what can be handled as a Perl scalar, C<use
+bigint> can handle arbitrarily large integers.
+
+Also, C<use integer> does affect assignments to variables and the return value
+of some functions. C<use bigint> truncates these results to integer:
+
+ # perl -Minteger -wle 'print 3.2'
+ 3.2
+ # perl -Minteger -wle 'print 3.2 + 0'
+ 3
+ # perl -Mbigint -wle 'print 3.2'
+ 3
+ # perl -Mbigint -wle 'print 3.2 + 0'
+ 3
+
+ # perl -Mbigint -wle 'print exp(1) + 0'
+ 2
+ # perl -Mbigint -wle 'print exp(1)'
+ 2
+ # perl -Minteger -wle 'print exp(1)'
+ 2.71828182845905
+ # perl -Minteger -wle 'print exp(1) + 0'
+ 2
+
+In practice this seldom makes a difference for small integers as B<parts and
+results> of expressions are truncated anyway, but this can, for instance, affect
+the return value of subroutines:
sub three_integer { use integer; return 3.2; }
sub three_bigint { use bigint; return 3.2; }
@@ -448,168 +510,135 @@ return value of subroutines:
=head2 Options
-bigint recognizes some options that can be passed while loading it via use.
-The options can (currently) be either a single letter form, or the long form.
-The following options exist:
+C<bigint> recognizes some options that can be passed while loading it via
+C<use>. The following options exist:
-=over 2
+=over 4
=item a or accuracy
This sets the accuracy for all math operations. The argument must be greater
-than or equal to zero. See Math::BigInt's bround() function for details.
+than or equal to zero. See Math::BigInt's bround() method for details.
- perl -Mbigint=a,2 -le 'print 12345+1'
+ perl -Mbigint=a,2 -le 'print 12345+1'
Note that setting precision and accuracy at the same time is not possible.
=item p or precision
This sets the precision for all math operations. The argument can be any
-integer. Negative values mean a fixed number of digits after the dot, and
-are <B>ignored</B> since all operations happen in integer space.
-A positive value rounds to this digit left from the dot. 0 or 1 mean round to
-integer and are ignore like negative values.
-
-See Math::BigInt's bfround() function for details.
+integer. Negative values mean a fixed number of digits after the dot, and are
+ignored since all operations happen in integer space. A positive value rounds to
+this digit left from the dot. 0 means round to integer. See Math::BigInt's
+bfround() method for details.
- perl -Mbignum=p,5 -le 'print 123456789+123'
+ perl -mbigint=p,5 -le 'print 123456789+123'
Note that setting precision and accuracy at the same time is not possible.
=item t or trace
-This enables a trace mode and is primarily for debugging bigint or
-Math::BigInt.
-
-=item hex
-
-Override the built-in hex() method with a version that can handle big
-integers. This overrides it by exporting it to the current package. Under
-Perl v5.10.0 and higher, this is not so necessary, as hex() is lexically
-overridden in the current scope whenever the bigint pragma is active.
-
-=item oct
+This enables a trace mode and is primarily for debugging.
-Override the built-in oct() method with a version that can handle big
-integers. This overrides it by exporting it to the current package. Under
-Perl v5.10.0 and higher, this is not so necessary, as oct() is lexically
-overridden in the current scope whenever the bigint pragma is active.
-
-=item l, lib, try or only
+=item l, lib, try, or only
Load a different math lib, see L<Math Library>.
- perl -Mbigint=lib,GMP -e 'print 2 ** 512'
- perl -Mbigint=try,GMP -e 'print 2 ** 512'
- perl -Mbigint=only,GMP -e 'print 2 ** 512'
+ perl -Mbigint=l,GMP -e 'print 2 ** 512'
+ perl -Mbigint=lib,GMP -e 'print 2 ** 512'
+ perl -Mbigint=try,GMP -e 'print 2 ** 512'
+ perl -Mbigint=only,GMP -e 'print 2 ** 512'
+
+=item hex
-Currently there is no way to specify more than one library on the command
-line. This means the following does not work:
+Override the built-in hex() method with a version that can handle big numbers.
+This overrides it by exporting it to the current package. Under Perl v5.10.0 and
+higher, this is not necessary, as hex() is lexically overridden in the current
+scope whenever the C<bigint> pragma is active.
- perl -Mbignum=l,GMP,Pari -e 'print 2 ** 512'
+=item oct
-This will be hopefully fixed soon ;)
+Override the built-in oct() method with a version that can handle big numbers.
+This overrides it by exporting it to the current package. Under Perl v5.10.0 and
+higher, this is not so necessary, as oct() is lexically overridden in the
+current scope whenever the C<bigint> pragma is active.
=item v or version
-This prints out the name and version of all modules used and then exits.
+this prints out the name and version of the modules and then exits.
- perl -Mbigint=v
+ perl -Mbigint=v
=back
=head2 Math Library
-Math with the numbers is done (by default) by a module called
-Math::BigInt::Calc. This is equivalent to saying:
+Math with the numbers is done (by default) by a backend library module called
+Math::BigInt::Calc. The default is equivalent to saying:
- use bigint lib => 'Calc';
+ use bigint lib => 'Calc';
-You can change this by using:
+you can change this by using:
- use bignum lib => 'GMP';
+ use bigint lib => 'GMP';
-The following would first try to find Math::BigInt::Foo, then
-Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc:
+The following would first try to find Math::BigInt::Foo, then Math::BigInt::Bar,
+and if this also fails, revert to Math::BigInt::Calc:
- use bigint lib => 'Foo,Math::BigInt::Bar';
+ use bigint lib => 'Foo,Math::BigInt::Bar';
-Using C<lib> warns if none of the specified libraries can be found and
-L<Math::BigInt> did fall back to one of the default libraries.
-To suppress this warning, use C<try> instead:
+Using c<lib> warns if none of the specified libraries can be found and
+L<Math::BigInt> fell back to one of the default libraries. To suppress this
+warning, use c<try> instead:
- use bignum try => 'GMP';
+ use bigint try => 'GMP';
If you want the code to die instead of falling back, use C<only> instead:
- use bignum only => 'GMP';
-
-Please see respective module documentation for further details.
-
-=head2 Internal Format
-
-The numbers are stored as objects, and their internals might change at anytime,
-especially between math operations. The objects also might belong to different
-classes, like Math::BigInt, or Math::BigInt::Lite. Mixing them together, even
-with normal scalars is not extraordinary, but normal and expected.
+ use bigint only => 'GMP';
-You should not depend on the internal format, all accesses must go through
-accessor methods. E.g. looking at $x->{sign} is not a good idea since there
-is no guaranty that the object in question has such a hash key, nor is a hash
-underneath at all.
-
-=head2 Sign
-
-The sign is either '+', '-', 'NaN', '+inf' or '-inf'.
-You can access it with the sign() method.
-
-A sign of 'NaN' is used to represent the result when input arguments are not
-numbers or as a result of 0/0. '+inf' and '-inf' represent plus respectively
-minus infinity. You will get '+inf' when dividing a positive number by 0, and
-'-inf' when dividing any negative number by 0.
+Please see the respective module documentation for further details.
=head2 Method calls
-Since all numbers are now objects, you can use all functions that are part of
-the BigInt API. You can only use the bxxx() notation, and not the fxxx()
-notation, though.
+Since all numbers are now objects, you can use all methods that are part of the
+Math::BigInt API.
But a warning is in order. When using the following to make a copy of a number,
only a shallow copy will be made.
- $x = 9; $y = $x;
- $x = $y = 7;
+ $x = 9; $y = $x;
+ $x = $y = 7;
-Using the copy or the original with overloaded math is okay, e.g. the
-following work:
+Using the copy or the original with overloaded math is okay, e.g., the following
+work:
- $x = 9; $y = $x;
- print $x + 1, " ", $y,"\n"; # prints 10 9
+ $x = 9; $y = $x;
+ print $x + 1, " ", $y,"\n"; # prints 10 9
-but calling any method that modifies the number directly will result in
-B<both> the original and the copy being destroyed:
+but calling any method that modifies the number directly will result in B<both>
+the original and the copy being destroyed:
- $x = 9; $y = $x;
- print $x->badd(1), " ", $y,"\n"; # prints 10 10
+ $x = 9; $y = $x;
+ print $x->badd(1), " ", $y,"\n"; # prints 10 10
- $x = 9; $y = $x;
- print $x->binc(1), " ", $y,"\n"; # prints 10 10
+ $x = 9; $y = $x;
+ print $x->binc(1), " ", $y,"\n"; # prints 10 10
- $x = 9; $y = $x;
- print $x->bmul(2), " ", $y,"\n"; # prints 18 18
+ $x = 9; $y = $x;
+ print $x->bmul(2), " ", $y,"\n"; # prints 18 18
Using methods that do not modify, but test that the contents works:
- $x = 9; $y = $x;
- $z = 9 if $x->is_zero(); # works fine
+ $x = 9; $y = $x;
+ $z = 9 if $x->is_zero(); # works fine
-See the documentation about the copy constructor and C<=> in overload, as
-well as the documentation in BigInt for further details.
+See the documentation about the copy constructor and C<=> in overload, as well
+as the documentation in Math::BigInt for further details.
=head2 Methods
-=over 2
+=over 4
=item inf()
@@ -623,56 +652,66 @@ handle bareword C<NaN> properly.
=item e
- # perl -Mbigint=e -wle 'print e'
+ # perl -Mbigint=e -wle 'print e'
-Returns Euler's number C<e>, aka exp(1). Note that under bigint, this is
-truncated to an integer, and hence simple '2'.
+Returns Euler's number C<e>, aka exp(1). Note that under C<bigint>, this is
+truncated to an integer, i.e., 2.
=item PI
- # perl -Mbigint=PI -wle 'print PI'
+ # perl -Mbigint=PI -wle 'print PI'
-Returns PI. Note that under bigint, this is truncated to an integer, and hence
-simple '3'.
+Returns PI. Note that under C<bigint>, this is truncated to an integer, i.e., 3.
=item bexp()
- bexp($power,$accuracy);
+ bexp($power, $accuracy);
-Returns Euler's number C<e> raised to the appropriate power, to
-the wanted accuracy.
+Returns Euler's number C<e> raised to the appropriate power, to the wanted
+accuracy.
-Note that under bigint, the result is truncated to an integer.
+Note that under C<bigint>, the result is truncated to an integer.
Example:
- # perl -Mbigint=bexp -wle 'print bexp(1,80)'
+ # perl -Mbigint=bexp -wle 'print bexp(1,80)'
=item bpi()
- bpi($accuracy);
+ bpi($accuracy);
-Returns PI to the wanted accuracy. Note that under bigint, this is truncated
-to an integer, and hence simple '3'.
+Returns PI to the wanted accuracy. Note that under C<bigint>, this is truncated
+to an integer, i.e., 3.
Example:
- # perl -Mbigint=bpi -wle 'print bpi(80)'
+ # perl -Mbigint=bpi -wle 'print bpi(80)'
+
+=item accuracy()
+
+Set or get the accuracy.
+
+=item precision()
+
+Set or get the precision.
+
+=item round_mode()
+
+Set or get the rounding mode.
-=item upgrade()
+=item div_scale()
-Return the class that numbers are upgraded to, is in fact returning
-C<$Math::BigInt::upgrade>.
+Set or get the division scale.
=item in_effect()
- use bigint;
+ use bigint;
- print "in effect\n" if bigint::in_effect; # true
- {
- no bigint;
- print "in effect\n" if bigint::in_effect; # false
- }
+ print "in effect\n" if bigint::in_effect; # true
+ {
+ no bigint;
+ print "in effect\n" if bigint::in_effect; # false
+ }
Returns true or false if C<bigint> is in effect in the current scope.
@@ -682,41 +721,47 @@ This method only works on Perl v5.9.4 or later.
=head1 CAVEATS
-=over 2
+=over 4
+
+=item Hexadecimal, octal, and binary floating point literals
+
+Perl (and this module) accepts hexadecimal, octal, and binary floating point
+literals, but use them with care with Perl versions before v5.32.0, because some
+versions of Perl silently give the wrong result.
=item Operator vs literal overloading
-C<bigint> works by overloading handling of integer and floating point
-literals, converting them to L<Math::BigInt> objects.
+C<bigint> works by overloading handling of integer and floating point literals,
+converting them to L<Math::BigInt> objects.
-This means that arithmetic involving only string values or string
-literals will be performed using Perl's built-in operators.
+This means that arithmetic involving only string values or string literals are
+performed using Perl's built-in operators.
For example:
- use bignum;
+ use bigint;
my $x = "900000000000000009";
my $y = "900000000000000007";
print $x - $y;
-will output C<0> on default 32-bit builds, since C<bigint> never sees
-the string literals. To ensure the expression is all treated as
-C<Math::BigInt> objects, use a literal number in the expression:
+outputs C<0> on default 32-bit builds, since C<bigint> never sees the string
+literals. To ensure the expression is all treated as C<Math::BigInt> objects,
+use a literal number in the expression:
print +(0+$x) - $y;
-=item ranges
+=item Ranges
-Perl does not allow overloading of ranges, so you can neither safely use
-ranges with bigint endpoints, nor is the iterator variable a bigint.
+Perl does not allow overloading of ranges, so you can neither safely use ranges
+with C<bigint> endpoints, nor is the iterator variable a C<Math::BigInt>.
- use 5.010;
- for my $i (12..13) {
- for my $j (20..21) {
- say $i ** $j; # produces a floating-point number,
- # not a big integer
- }
- }
+ use 5.010;
+ for my $i (12..13) {
+ for my $j (20..21) {
+ say $i ** $j; # produces a floating-point number,
+ # not an object
+ }
+ }
=item in_effect()
@@ -724,63 +769,49 @@ This method only works on Perl v5.9.4 or later.
=item hex()/oct()
-C<bigint> overrides these routines with versions that can also handle
-big integer values. Under Perl prior to version v5.9.4, however, this
-will not happen unless you specifically ask for it with the two
-import tags "hex" and "oct" - and then it will be global and cannot be
-disabled inside a scope with "no bigint":
+C<bigint> overrides these routines with versions that can also handle big
+integer values. Under Perl prior to version v5.9.4, however, this will not
+happen unless you specifically ask for it with the two import tags "hex" and
+"oct" - and then it will be global and cannot be disabled inside a scope with
+C<no bigint>:
- use bigint qw/hex oct/;
+ use bigint qw/hex oct/;
+ print hex("0x1234567890123456");
+ {
+ no bigint;
print hex("0x1234567890123456");
- {
- no bigint;
- print hex("0x1234567890123456");
- }
+ }
The second call to hex() will warn about a non-portable constant.
Compare this to:
- use bigint;
+ use bigint;
- # will warn only under Perl older than v5.9.4
- print hex("0x1234567890123456");
+ # will warn only under Perl older than v5.9.4
+ print hex("0x1234567890123456");
=back
-=head1 MODULES USED
-
-C<bigint> is just a thin wrapper around various modules of the Math::BigInt
-family. Think of it as the head of the family, who runs the shop, and orders
-the others to do the work.
-
-The following modules are currently used by bigint:
-
- Math::BigInt::Lite (for speed, and only if it is loadable)
- Math::BigInt
-
=head1 EXAMPLES
Some cool command line examples to impress the Python crowd ;) You might want
-to compare them to the results under -Mbignum or -Mbigrat:
-
- perl -Mbigint -le 'print sqrt(33)'
- perl -Mbigint -le 'print 2*255'
- perl -Mbigint -le 'print 4.5+2*255'
- perl -Mbigint -le 'print 3/7 + 5/7 + 8/3'
- perl -Mbigint -le 'print 123->is_odd()'
- perl -Mbigint -le 'print log(2)'
- perl -Mbigint -le 'print 2 ** 0.5'
- perl -Mbigint=a,65 -le 'print 2 ** 0.2'
- perl -Mbignum=a,65,l,GMP -le 'print 7 ** 7777'
+to compare them to the results under -Mbigfloat or -Mbigrat:
-=head1 BUGS
+ perl -Mbigint -le 'print sqrt(33)'
+ perl -Mbigint -le 'print 2**255'
+ perl -Mbigint -le 'print 4.5+2**255'
+ perl -Mbigint -le 'print 123->is_odd()'
+ perl -Mbigint=l,GMP -le 'print 7 ** 7777'
-For information about bugs and how to report them, see the BUGS section in the
-documentation available with the perldoc command.
+=head1 BUGS
- perldoc bignum
+Please report any bugs or feature requests to
+C<bug-bignum at rt.cpan.org>, or through the web interface at
+L<https://rt.cpan.org/Ticket/Create.html?Queue=bignum> (requires login).
+We will be notified, and then you'll automatically be notified of
+progress on your bug as I make changes.
=head1 SUPPORT
@@ -788,10 +819,31 @@ You can find documentation for this module with the perldoc command.
perldoc bigint
-For more information, see the SUPPORT section in the documentation available
-with the perldoc command.
+You can also look for information at:
+
+=over 4
+
+=item * GitHub
+
+L<https://github.com/pjacklam/p5-bignum>
- perldoc bignum
+=item * RT: CPAN's request tracker
+
+L<https://rt.cpan.org/Dist/Display.html?Name=bignum>
+
+=item * MetaCPAN
+
+L<https://metacpan.org/release/bignum>
+
+=item * CPAN Testers Matrix
+
+L<http://matrix.cpantesters.org/?dist=bignum>
+
+=item * CPAN Ratings
+
+L<https://cpanratings.perl.org/dist/bignum>
+
+=back
=head1 LICENSE
@@ -815,7 +867,7 @@ L<Math::BigInt::FastCalc>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
=item *
-Maintained by Peter John Acklam E<lt>pjacklam@gmail.com<gt>, 2014-.
+Maintained by Peter John Acklam E<lt>pjacklam@gmail.comE<gt>, 2014-.
=back
diff --git a/Master/tlpkg/tlperl/lib/bignum.pm b/Master/tlpkg/tlperl/lib/bignum.pm
index 55300c8273f..d738d6dc987 100644
--- a/Master/tlpkg/tlperl/lib/bignum.pm
+++ b/Master/tlpkg/tlperl/lib/bignum.pm
@@ -1,62 +1,60 @@
package bignum;
-use 5.010;
use strict;
use warnings;
-our $VERSION = '0.51';
+use Carp qw< carp croak >;
+
+our $VERSION = '0.66';
use Exporter;
-our @ISA = qw( bigint );
+our @ISA = qw( Exporter );
our @EXPORT_OK = qw( PI e bpi bexp hex oct );
our @EXPORT = qw( inf NaN );
use overload;
-use bigint ();
+
+# Defaults: When a constant is an integer, Inf or NaN, it is converted to an
+# object of class $int_class. When a constant is a finite non-integer, it is
+# converted to an object of class $float_class.
+
+my $int_class = 'Math::BigInt';
+my $float_class = 'Math::BigFloat';
##############################################################################
-BEGIN {
- *inf = \&bigint::inf;
- *NaN = \&bigint::NaN;
- *hex = \&bigint::hex;
- *oct = \&bigint::oct;
+sub accuracy {
+ shift;
+ $int_class -> accuracy(@_);
+ $float_class -> accuracy(@_);
}
-# These are all alike, and thus faked by AUTOLOAD
-
-my @faked = qw/round_mode accuracy precision div_scale/;
-our ($AUTOLOAD, $_lite); # _lite for testsuite
-
-sub AUTOLOAD {
- my $name = $AUTOLOAD;
-
- $name =~ s/.*:://; # split package
- no strict 'refs';
- foreach my $n (@faked) {
- if ($n eq $name) {
- *{"bignum::$name"} =
- sub {
- my $self = shift;
- no strict 'refs';
- if (defined $_[0]) {
- Math::BigInt->$name($_[0]);
- return Math::BigFloat->$name($_[0]);
- }
- return Math::BigInt->$name();
- };
- return &$name;
- }
- }
+sub precision {
+ shift;
+ $int_class -> precision(@_);
+ $float_class -> precision(@_);
+}
- # delayed load of Carp and avoid recursion
- require Carp;
- Carp::croak ("Can't call bignum\-\>$name, not a valid method");
+sub round_mode {
+ shift;
+ $int_class -> round_mode(@_);
+ $float_class -> round_mode(@_);
}
-sub unimport {
- $^H{bignum} = undef; # no longer in effect
- overload::remove_constant('binary', '', 'float', '', 'integer');
+sub div_scale {
+ shift;
+ $int_class -> div_scale(@_);
+ $float_class -> div_scale(@_);
+}
+
+sub upgrade {
+ shift;
+ $int_class -> upgrade(@_);
+}
+
+sub downgrade {
+ shift;
+ $float_class -> downgrade(@_);
}
sub in_effect {
@@ -65,157 +63,386 @@ sub in_effect {
$hinthash->{bignum};
}
+sub _float_constant {
+ my $str = shift;
+
+ # See if we can convert the input string to a string using a normalized form
+ # consisting of the significand as a signed integer, the character "e", and
+ # the exponent as a signed integer, e.g., "+0e+0", "+314e-2", and "-1e+3".
+
+ my $nstr;
+
+ if (
+ # See if it is an octal number. An octal number like '0377' is also
+ # accepted by the functions parsing decimal and hexadecimal numbers, so
+ # handle octal numbers before decimal and hexadecimal numbers.
+
+ $str =~ /^0(?:[Oo]|_*[0-7])/ and
+ $nstr = Math::BigInt -> oct_str_to_dec_flt_str($str)
+
+ or
+
+ # See if it is decimal number.
+
+ $nstr = Math::BigInt -> dec_str_to_dec_flt_str($str)
+
+ or
+
+ # See if it is a hexadecimal number. Every hexadecimal number has a
+ # prefix, but the functions parsing numbers don't require it, so check
+ # to see if it actually is a hexadecimal number.
+
+ $str =~ /^0[Xx]/ and
+ $nstr = Math::BigInt -> hex_str_to_dec_flt_str($str)
+
+ or
+
+ # See if it is a binary numbers. Every binary number has a prefix, but
+ # the functions parsing numbers don't require it, so check to see if it
+ # actually is a binary number.
+
+ $str =~ /^0[Bb]/ and
+ $nstr = Math::BigInt -> bin_str_to_dec_flt_str($str))
+ {
+ my $pos = index($nstr, 'e');
+ my $expo_sgn = substr($nstr, $pos + 1, 1);
+ my $sign = substr($nstr, 0, 1);
+ my $mant = substr($nstr, 1, $pos - 1);
+ my $mant_len = CORE::length($mant);
+ my $expo = substr($nstr, $pos + 2);
+
+ # The number is a non-integer if and only if the exponent is negative.
+
+ if ($expo_sgn eq '-') {
+ return $float_class -> new($str);
+
+ my $upgrade = $int_class -> upgrade();
+ return $upgrade -> new($nstr) if defined $upgrade;
+
+ if ($mant_len <= $expo) {
+ return $int_class -> bzero(); # underflow
+ } else {
+ $mant = substr $mant, 0, $mant_len - $expo; # truncate
+ return $int_class -> new($sign . $mant);
+ }
+ } else {
+ $mant .= "0" x $expo; # pad with zeros
+ return $int_class -> new($sign . $mant);
+ }
+ }
+
+ # If we get here, there is a bug in the code above this point.
+
+ warn "Internal error: unable to handle literal constant '$str'.",
+ " This is a bug, so please report this to the module author.";
+ return $int_class -> bnan();
+}
+
+#############################################################################
+# the following two routines are for "use bignum qw/hex oct/;":
+
+use constant LEXICAL => $] > 5.009004;
+
+# Internal function with the same semantics as CORE::hex(). This function is
+# not used directly, but rather by other front-end functions.
+
+sub _hex_core {
+ my $str = shift;
+
+ # Strip off, clean, and parse as much as we can from the beginning.
+
+ my $x;
+ if ($str =~ s/ ^ ( 0? [xX] )? ( [0-9a-fA-F]* ( _ [0-9a-fA-F]+ )* ) //x) {
+ my $chrs = $2;
+ $chrs =~ tr/_//d;
+ $chrs = '0' unless CORE::length $chrs;
+ $x = $int_class -> from_hex($chrs);
+ } else {
+ $x = $int_class -> bzero();
+ }
+
+ # Warn about trailing garbage.
+
+ if (CORE::length($str)) {
+ require Carp;
+ Carp::carp(sprintf("Illegal hexadecimal digit '%s' ignored",
+ substr($str, 0, 1)));
+ }
+
+ return $x;
+}
+
+# Internal function with the same semantics as CORE::oct(). This function is
+# not used directly, but rather by other front-end functions.
+
+sub _oct_core {
+ my $str = shift;
+
+ $str =~ s/^\s*//;
+
+ # Hexadecimal input.
+
+ return _hex_core($str) if $str =~ /^0?[xX]/;
+
+ my $x;
+
+ # Binary input.
+
+ if ($str =~ /^0?[bB]/) {
+
+ # Strip off, clean, and parse as much as we can from the beginning.
+
+ if ($str =~ s/ ^ ( 0? [bB] )? ( [01]* ( _ [01]+ )* ) //x) {
+ my $chrs = $2;
+ $chrs =~ tr/_//d;
+ $chrs = '0' unless CORE::length $chrs;
+ $x = $int_class -> from_bin($chrs);
+ }
+
+ # Warn about trailing garbage.
+
+ if (CORE::length($str)) {
+ require Carp;
+ Carp::carp(sprintf("Illegal binary digit '%s' ignored",
+ substr($str, 0, 1)));
+ }
+
+ return $x;
+ }
+
+ # Octal input. Strip off, clean, and parse as much as we can from the
+ # beginning.
+
+ if ($str =~ s/ ^ ( 0? [oO] )? ( [0-7]* ( _ [0-7]+ )* ) //x) {
+ my $chrs = $2;
+ $chrs =~ tr/_//d;
+ $chrs = '0' unless CORE::length $chrs;
+ $x = $int_class -> from_oct($chrs);
+ }
+
+ # Warn about trailing garbage. CORE::oct() only warns about 8 and 9, but it
+ # is more helpful to warn about all invalid digits.
+
+ if (CORE::length($str)) {
+ require Carp;
+ Carp::carp(sprintf("Illegal octal digit '%s' ignored",
+ substr($str, 0, 1)));
+ }
+
+ return $x;
+}
+
+{
+ my $proto = LEXICAL ? '_' : ';$';
+ eval '
+sub hex(' . $proto . ') {' . <<'.';
+ my $str = @_ ? $_[0] : $_;
+ _hex_core($str);
+}
+.
+
+ eval '
+sub oct(' . $proto . ') {' . <<'.';
+ my $str = @_ ? $_[0] : $_;
+ _oct_core($str);
+}
+.
+}
+
#############################################################################
+# the following two routines are for Perl 5.9.4 or later and are lexical
+
+my ($prev_oct, $prev_hex, $overridden);
+
+if (LEXICAL) { eval <<'.' }
+sub _hex(_) {
+ my $hh = (caller 0)[10];
+ return $$hh{bignum} ? bignum::_hex_core($_[0])
+ : $$hh{bigrat} ? bigrat::_hex_core($_[0])
+ : $$hh{bigint} ? bigint::_hex_core($_[0])
+ : $prev_hex ? &$prev_hex($_[0])
+ : CORE::hex($_[0]);
+}
+
+sub _oct(_) {
+ my $hh = (caller 0)[10];
+ return $$hh{bignum} ? bignum::_oct_core($_[0])
+ : $$hh{bigrat} ? bigrat::_oct_core($_[0])
+ : $$hh{bigint} ? bigint::_oct_core($_[0])
+ : $prev_oct ? &$prev_oct($_[0])
+ : CORE::oct($_[0]);
+}
+.
+
+sub _override {
+ return if $overridden;
+ $prev_oct = *CORE::GLOBAL::oct{CODE};
+ $prev_hex = *CORE::GLOBAL::hex{CODE};
+ no warnings 'redefine';
+ *CORE::GLOBAL::oct = \&_oct;
+ *CORE::GLOBAL::hex = \&_hex;
+ $overridden = 1;
+}
+
+sub unimport {
+ $^H{bignum} = undef; # no longer in effect
+ overload::remove_constant('binary', '', 'float', '', 'integer');
+}
sub import {
- my $self = shift;
+ my $class = shift;
- $^H{bignum} = 1; # we are in effect
+ $^H{bignum} = 1; # we are in effect
+ $^H{bigint} = undef;
+ $^H{bigrat} = undef;
- # for newer Perls override hex() and oct() with a lexical version:
- if ($] > 5.009004) {
- bigint::_override();
+ # for newer Perls always override hex() and oct() with a lexical version:
+ if (LEXICAL) {
+ _override();
}
- # some defaults
- my $lib = '';
- my $lib_kind = 'try';
- my $upgrade = 'Math::BigFloat';
- my $downgrade = 'Math::BigInt';
-
- my @import = (':constant'); # drive it w/ constant
- my @a = @_;
- my $l = scalar @_;
- my $j = 0;
- my ($ver, $trace); # version? trace?
- my ($a, $p); # accuracy, precision
- for (my $i = 0; $i < $l; $i++, $j++) {
- if ($_[$i] eq 'upgrade') {
- # this causes upgrading
- $upgrade = $_[$i + 1]; # or undef to disable
- my $s = 2;
- $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..."
- splice @a, $j, $s;
- $j -= $s;
- $i++;
- } elsif ($_[$i] eq 'downgrade') {
- # this causes downgrading
- $downgrade = $_[$i + 1]; # or undef to disable
- my $s = 2;
- $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..."
- splice @a, $j, $s;
- $j -= $s;
- $i++;
- } elsif ($_[$i] =~ /^(l|lib|try|only)$/) {
- # this causes a different low lib to take care...
- $lib_kind = $1;
- $lib_kind = 'lib' if $lib_kind eq 'l';
- $lib = $_[$i + 1] || '';
- my $s = 2;
- $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..."
- splice @a, $j, $s;
- $j -= $s;
- $i++;
+ my @import = (); # common options
+ my @int_import = (upgrade => $float_class); # int class only options
+ my @flt_import = (downgrade => $int_class); # float class only options
+ my @a = (); # unrecognized arguments
+ my $ver; # display version info?
+
+ while (@_) {
+ my $param = shift;
+
+ # Upgrading.
+
+ if ($param eq 'upgrade') {
+ my $arg = shift;
+ $float_class = $arg if defined $arg;
+ push @int_import, 'upgrade', $arg;
+ next;
+ }
+
+ # Downgrading.
+
+ if ($param eq 'downgrade') {
+ my $arg = shift;
+ $int_class = $arg if defined $arg;
+ push @flt_import, 'downgrade', $arg;
+ next;
}
- elsif ($_[$i] =~ /^(a|accuracy)$/) {
- $a = $_[$i + 1];
- my $s = 2;
- $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..."
- splice @a, $j, $s;
- $j -= $s;
- $i++;
+
+ # Accuracy.
+
+ if ($param =~ /^a(ccuracy)?$/) {
+ push @import, 'accuracy', shift();
+ next;
}
- elsif ($_[$i] =~ /^(p|precision)$/) {
- $p = $_[$i + 1];
- my $s = 2;
- $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..."
- splice @a, $j, $s;
- $j -= $s;
- $i++;
+
+ # Precision.
+
+ if ($param =~ /^p(recision)?$/) {
+ push @import, 'precision', shift();
+ next;
}
- elsif ($_[$i] =~ /^(v|version)$/) {
- $ver = 1;
- splice @a, $j, 1;
- $j--;
+
+ # Rounding mode.
+
+ if ($param eq 'round_mode') {
+ push @import, 'round_mode', shift();
+ next;
}
- elsif ($_[$i] =~ /^(t|trace)$/) {
- $trace = 1;
- splice @a, $j, 1;
- $j--;
+
+ # Backend library.
+
+ if ($param =~ /^(l|lib|try|only)$/) {
+ push @import, $param eq 'l' ? 'lib' : $param;
+ push @import, shift() if @_;
+ next;
}
- elsif ($_[$i] !~ /^(PI|e|bexp|bpi|hex|oct)\z/) {
- die ("unknown option $_[$i]");
+
+ if ($param =~ /^(v|version)$/) {
+ $ver = 1;
+ next;
}
- }
- my $class;
- $_lite = 0; # using M::BI::L ?
- if ($trace) {
- require Math::BigInt::Trace;
- $class = 'Math::BigInt::Trace';
- $upgrade = 'Math::BigFloat::Trace';
- }
- else {
- # see if we can find Math::BigInt::Lite
- if (!defined $a && !defined $p) { # rounding won't work to well
- local @INC = @INC;
- pop @INC if $INC[-1] eq '.';
- if (eval { require Math::BigInt::Lite; 1 }) {
- @import = (); # :constant in Lite, not MBI
- Math::BigInt::Lite->import(':constant');
- $_lite = 1; # signal okay
- }
+
+ if ($param =~ /^(PI|e|bexp|bpi|hex|oct)\z/) {
+ push @a, $param;
+ next;
}
- require Math::BigInt if $_lite == 0; # not already loaded?
- $class = 'Math::BigInt'; # regardless of MBIL or not
- }
- push @import, $lib_kind => $lib if $lib ne '';
- # Math::BigInt::Trace or plain Math::BigInt
- $class->import(@import, upgrade => $upgrade);
-
- if ($trace) {
- require Math::BigFloat::Trace;
- $class = 'Math::BigFloat::Trace';
- $downgrade = 'Math::BigInt::Trace';
- }
- else {
- require Math::BigFloat;
- $class = 'Math::BigFloat';
+
+ croak("Unknown option '$param'");
}
- $class->import(':constant', 'downgrade', $downgrade);
- bignum->accuracy($a) if defined $a;
- bignum->precision($p) if defined $p;
+ eval "require $int_class";
+ die $@ if $@;
+ $int_class -> import(@int_import, @import);
+
+ eval "require $float_class";
+ die $@ if $@;
+ $float_class -> import(@flt_import, @import);
+
if ($ver) {
- print "bignum\t\t\t v$VERSION\n";
- print "Math::BigInt::Lite\t v$Math::BigInt::Lite::VERSION\n" if $_lite;
- print "Math::BigInt\t\t v$Math::BigInt::VERSION";
- my $config = Math::BigInt->config();
- print " lib => $config->{lib} v$config->{lib_version}\n";
- print "Math::BigFloat\t\t v$Math::BigFloat::VERSION\n";
+ printf "%-31s v%s\n", $class, $class -> VERSION();
+ printf " lib => %-23s v%s\n",
+ $int_class -> config("lib"), $int_class -> config("lib_version");
+ printf "%-31s v%s\n", $int_class, $int_class -> VERSION();
exit;
}
- # Take care of octal/hexadecimal constants
- overload::constant binary =>
- sub {
- bigint::_binary_constant(shift);
+ $class -> export_to_level(1, $class, @a); # export inf, NaN, etc.
+
+ overload::constant
+
+ # This takes care each number written as decimal integer and within the
+ # range of what perl can represent as an integer, e.g., "314", but not
+ # "3141592653589793238462643383279502884197169399375105820974944592307".
+
+ integer => sub {
+ #printf "Value '%s' handled by the 'integer' sub.\n", $_[0];
+ my $str = shift;
+ return $int_class -> new($str);
+ },
+
+ # This takes care of each number written with a decimal point and/or
+ # using floating point notation, e.g., "3.", "3.0", "3.14e+2" (decimal),
+ # "0b1.101p+2" (binary), "03.14p+2" and "0o3.14p+2" (octal), and
+ # "0x3.14p+2" (hexadecimal).
+
+ float => sub {
+ #printf "# Value '%s' handled by the 'float' sub.\n", $_[0];
+ _float_constant(shift);
+ },
+
+ # Take care of each number written as an integer (no decimal point or
+ # exponent) using binary, octal, or hexadecimal notation, e.g., "0b101"
+ # (binary), "0314" and "0o314" (octal), and "0x314" (hexadecimal).
+
+ binary => sub {
+ #printf "# Value '%s' handled by the 'binary' sub.\n", $_[0];
+ my $str = shift;
+ return $int_class -> new($str) if $str =~ /^0[XxBb]/;
+ $int_class -> from_oct($str);
};
+}
- # if another big* was already loaded:
- my ($package) = caller();
+sub inf () { $int_class -> binf(); }
+sub NaN () { $int_class -> bnan(); }
- no strict 'refs';
- if (!defined *{"${package}::inf"}) {
- $self->export_to_level(1, $self, @a); # export inf and NaN
- }
+# This should depend on the current accuracy/precision. Fixme!
+sub PI () { $float_class -> new('3.141592653589793238462643383279502884197'); }
+sub e () { $float_class -> new('2.718281828459045235360287471352662497757'); }
+
+sub bpi ($) {
+ my $up = Math::BigFloat -> upgrade(); # get current upgrading, if any ...
+ Math::BigFloat -> upgrade(undef); # ... and disable
+ my $x = Math::BigFloat -> bpi(@_);
+ Math::BigFloat -> upgrade($up); # reset the upgrading
+ return $x;
}
-sub PI () { Math::BigFloat->new('3.141592653589793238462643383279502884197'); }
-sub e () { Math::BigFloat->new('2.718281828459045235360287471352662497757'); }
-sub bpi ($) { Math::BigFloat->bpi(@_); }
sub bexp ($$) {
- my $x = Math::BigFloat->new($_[0]);
- $x->bexp($_[1]);
+ my $up = Math::BigFloat -> upgrade(); # get current upgrading, if any ...
+ Math::BigFloat -> upgrade(undef); # ... and disable
+ my $x = Math::BigFloat -> new(shift) -> bexp(@_);
+ Math::BigFloat -> upgrade($up); # reset the upgrading
+ return $x;
}
1;
@@ -226,446 +453,478 @@ __END__
=head1 NAME
-bignum - Transparent BigNumber support for Perl
+bignum - transparent big number support for Perl
=head1 SYNOPSIS
- use bignum;
+ use bignum;
- $x = 2 + 4.5,"\n"; # BigFloat 6.5
- print 2 ** 512 * 0.1,"\n"; # really is what you think it is
- print inf * inf,"\n"; # prints inf
- print NaN * 3,"\n"; # prints NaN
+ $x = 2 + 4.5; # Math::BigFloat 6.5
+ print 2 ** 512 * 0.1; # Math::BigFloat 134...09.6
+ print 2 ** 512; # Math::BigInt 134...096
+ print inf + 42; # Math::BigInt inf
+ print NaN * 7; # Math::BigInt NaN
+ print hex("0x1234567890123490"); # Perl v5.10.0 or later
- {
- no bignum;
- print 2 ** 256,"\n"; # a normal Perl scalar now
- }
+ {
+ no bignum;
+ print 2 ** 256; # a normal Perl scalar now
+ }
- # for older Perls, import into current package:
- use bignum qw/hex oct/;
- print hex("0x1234567890123490"),"\n";
- print oct("01234567890123490"),"\n";
+ # for older Perls, import into current package:
+ use bignum qw/hex oct/;
+ print hex("0x1234567890123490");
+ print oct("01234567890123490");
=head1 DESCRIPTION
-All operators (including basic math operations) are overloaded. Integer and
-floating-point constants are created as proper BigInts or BigFloats,
-respectively.
-
-If you do
-
- use bignum;
+=head2 Literal numeric constants
-at the top of your script, Math::BigFloat and Math::BigInt will be loaded
-and any constant number will be converted to an object (Math::BigFloat for
-floats like 3.1415 and Math::BigInt for integers like 1234).
+By default, every literal integer becomes a Math::BigInt object, and literal
+non-integer becomes a Math::BigFloat object. Whether a numeric literal is
+considered an integer or non-integers depends only on the value of the constant,
+not on how it is represented. For instance, the constants 3.14e2 and 0x1.3ap8
+become Math::BigInt objects, because they both represent the integer value
+decimal 314.
-So, the following line:
+The default C<use bignum;> is equivalent to
- $x = 1234;
+ use bignum downgrade => "Math::BigInt", upgrade => "Math::BigFloat";
-creates actually a Math::BigInt and stores a reference to in $x.
-This happens transparently and behind your back, so to speak.
+The classes used for integers and non-integers can be set at compile time with
+the C<downgrade> and C<upgrade> options, for example
-You can see this with the following:
+ # use Math::BigInt for integers and Math::BigRat for non-integers
+ use bignum upgrade => "Math::BigRat";
- perl -Mbignum -le 'print ref(1234)'
+Note that disabling downgrading and upgrading does not affect how numeric
+literals are converted to objects
-Don't worry if it says Math::BigInt::Lite, bignum and friends will use Lite
-if it is installed since it is faster for some operations. It will be
-automatically upgraded to BigInt whenever necessary:
+ # disable both downgrading and upgrading
+ use bignum downgrade => undef, upgrade => undef;
+ $x = 2.4; # becomes 2.4 as a Math::BigFloat
+ $y = 2; # becomes 2 as a Math::BigInt
- perl -Mbignum -le 'print ref(2**255)'
+=head2 Upgrading and downgrading
-This also means it is a bad idea to check for some specific package, since
-the actual contents of $x might be something unexpected. Due to the
-transparent way of bignum C<ref()> should not be necessary, anyway.
+By default, when the result of a computation is an integer, an Inf, or a NaN,
+the result is downgraded even when all the operands are instances of the upgrade
+class.
-Since Math::BigInt and BigFloat also overload the normal math operations,
-the following line will still work:
+ use bignum;
+ $x = 2.4; # becomes 2.4 as a Math::BigFloat
+ $y = 1.2; # becomes 1.2 as a Math::BigFloat
+ $z = $x / $y; # becomes 2 as a Math::BigInt due to downgrading
- perl -Mbignum -le 'print ref(1234+1234)'
+Equivalently, by default, when the result of a computation is a finite
+non-integer, the result is upgraded even when all the operands are instances of
+the downgrade class.
-Since numbers are actually objects, you can call all the usual methods from
-BigInt/BigFloat on them. This even works to some extent on expressions:
+ use bignum;
+ $x = 7; # becomes 7 as a Math::BigInt
+ $y = 2; # becomes 2 as a Math::BigInt
+ $z = $x / $y; # becomes 3.5 as a Math::BigFloat due to upgrading
- perl -Mbignum -le '$x = 1234; print $x->bdec()'
- perl -Mbignum -le 'print 1234->copy()->binc();'
- perl -Mbignum -le 'print 1234->copy()->binc->badd(6);'
- perl -Mbignum -le 'print +(1234)->copy()->binc()'
+The classes used for downgrading and upgrading can be set at runtime with the
+L</downgrade()> and L</upgrade()> methods, but see L</CAVEATS> below.
-(Note that print doesn't do what you expect if the expression starts with
-'(' hence the C<+>)
+The upgrade and downgrade classes don't have to be Math::BigInt and
+Math::BigFloat. For example, to use Math::BigRat as the upgrade class, use
-You can even chain the operations together as usual:
+ use bignum upgrade => "Math::BigRat";
+ $x = 2; # becomes 2 as a Math::BigInt
+ $y = 3.6; # becomes 18/5 as a Math::BigRat
- perl -Mbignum -le 'print 1234->copy()->binc->badd(6);'
- 1241
+The upgrade and downgrade classes can be modified at runtime
-Under bignum (or bigint or bigrat), Perl will "upgrade" the numbers
-appropriately. This means that:
+ use bignum;
+ $x = 3; # becomes 3 as a Math::BigInt
+ $y = 2; # becomes 2 as a Math::BigInt
+ $z = $x / $y; # becomes 1.5 as a Math::BigFlaot
- perl -Mbignum -le 'print 1234+4.5'
- 1238.5
+ bignum -> upgrade("Math::BigRat");
+ $w = $x / $y; # becomes 3/2 as a Math::BigRat
-will work correctly. These mixed cases don't do always work when using
-Math::BigInt or Math::BigFloat alone, or at least not in the way normal Perl
-scalars work.
+Disabling downgrading doesn't change the fact that literal constant integers are
+converted to the downgrade class, it only prevents downgrading as a result of a
+computation. E.g.,
-If you do want to work with large integers like under C<use integer;>, try
-C<use bigint;>:
+ use bignum downgrade => undef;
+ $x = 2; # becomes 2 as a Math::BigInt
+ $y = 2.4; # becomes 2.4 as a Math::BigFloat
+ $z = 1.2; # becomes 1.2 as a Math::BigFloat
+ $w = $x / $y; # becomes 2 as a Math::BigFloat due to no downgrading
- perl -Mbigint -le 'print 1234.5+4.5'
- 1238
+If you want all numeric literals, both integers and non-integers, to become
+Math::BigFloat objects, use the L<bigfloat> pragma.
-There is also C<use bigrat;> which gives you big rationals:
+Equivalently, disabling upgrading doesn't change the fact that literal constant
+non-integers are converted to the upgrade class, it only prevents upgrading as a
+result of a computation. E.g.,
- perl -Mbigrat -le 'print 1234+4.1'
- 12381/10
+ use bignum upgrade => undef;
+ $x = 2.5; # becomes 2.5 as a Math::BigFloat
+ $y = 7; # becomes 7 as a Math::BigInt
+ $z = 2; # becomes 2 as a Math::BigInt
+ $w = $x / $y; # becomes 3 as a Math::BigInt due to no upgrading
-The entire upgrading/downgrading is still experimental and might not work
-as you expect or may even have bugs. You might get errors like this:
+If you want all numeric literals, both integers and non-integers, to become
+Math::BigInt objects, use the L<bigint> pragma.
- Can't use an undefined value as an ARRAY reference at
- /usr/local/lib/perl5/5.8.0/Math/BigInt/Calc.pm line 864
+You can even do
-This means somewhere a routine got a BigFloat/Lite but expected a BigInt (or
-vice versa) and the upgrade/downgrad path was missing. This is a bug, please
-report it so that we can fix it.
+ use bignum upgrade => "Math::BigRat", upgrade => undef;
-You might consider using just Math::BigInt or Math::BigFloat, since they
-allow you finer control over what get's done in which module/space. For
-instance, simple loop counters will be Math::BigInts under C<use bignum;> and
-this is slower than keeping them as Perl scalars:
+which converts all integer literals to Math::BigInt objects and all non-integer
+literals to Math::BigRat objects. However, when the result of a computation
+involving two Math::BigInt objects results in a non-integer (e.g., 7/2), the
+result will be truncted to a Math::BigInt rather than being upgraded to a
+Math::BigRat, since upgrading is disabled.
- perl -Mbignum -le 'for ($i = 0; $i < 10; $i++) { print ref($i); }'
+=head2 Overloading
-Please note the following does not work as expected (prints nothing), since
-overloading of '..' is not yet possible in Perl (as of v5.8.0):
+Since all numeric literals become objects, you can call all the usual methods
+from Math::BigInt and Math::BigFloat on them. This even works to some extent on
+expressions:
- perl -Mbignum -le 'for (1..2) { print ref($_); }'
+ perl -Mbignum -le '$x = 1234; print $x->bdec()'
+ perl -Mbignum -le 'print 1234->copy()->binc();'
+ perl -Mbignum -le 'print 1234->copy()->binc()->badd(6);'
=head2 Options
-bignum recognizes some options that can be passed while loading it via use.
-The options can (currently) be either a single letter form, or the long form.
-The following options exist:
+C<bignum> recognizes some options that can be passed while loading it via via
+C<use>. The following options exist:
-=over 2
+=over 4
=item a or accuracy
This sets the accuracy for all math operations. The argument must be greater
-than or equal to zero. See Math::BigInt's bround() function for details.
+than or equal to zero. See Math::BigInt's bround() method for details.
- perl -Mbignum=a,50 -le 'print sqrt(20)'
+ perl -Mbignum=a,50 -le 'print sqrt(20)'
Note that setting precision and accuracy at the same time is not possible.
=item p or precision
This sets the precision for all math operations. The argument can be any
-integer. Negative values mean a fixed number of digits after the dot, while
-a positive value rounds to this digit left from the dot. 0 or 1 mean round to
-integer. See Math::BigInt's bfround() function for details.
+integer. Negative values mean a fixed number of digits after the dot, while a
+positive value rounds to this digit left from the dot. 0 means round to integer.
+See Math::BigInt's bfround() method for details.
- perl -Mbignum=p,-50 -le 'print sqrt(20)'
+ perl -Mbignum=p,-50 -le 'print sqrt(20)'
Note that setting precision and accuracy at the same time is not possible.
-=item t or trace
-
-This enables a trace mode and is primarily for debugging bignum or
-Math::BigInt/Math::BigFloat.
-
-=item l or lib
+=item l, lib, try, or only
Load a different math lib, see L<Math Library>.
- perl -Mbignum=l,GMP -e 'print 2 ** 512'
-
-Currently there is no way to specify more than one library on the command
-line. This means the following does not work:
-
- perl -Mbignum=l,GMP,Pari -e 'print 2 ** 512'
-
-This will be hopefully fixed soon ;)
+ perl -Mbignum=l,GMP -e 'print 2 ** 512'
+ perl -Mbignum=lib,GMP -e 'print 2 ** 512'
+ perl -Mbignum=try,GMP -e 'print 2 ** 512'
+ perl -Mbignum=only,GMP -e 'print 2 ** 512'
=item hex
-Override the built-in hex() method with a version that can handle big
-numbers. This overrides it by exporting it to the current package. Under
-Perl v5.10.0 and higher, this is not so necessary, as hex() is lexically
-overridden in the current scope whenever the bignum pragma is active.
+Override the built-in hex() method with a version that can handle big numbers.
+This overrides it by exporting it to the current package. Under Perl v5.10.0 and
+higher, this is not so necessary, as hex() is lexically overridden in the
+current scope whenever the C<bignum> pragma is active.
=item oct
-Override the built-in oct() method with a version that can handle big
-numbers. This overrides it by exporting it to the current package. Under
-Perl v5.10.0 and higher, this is not so necessary, as oct() is lexically
-overridden in the current scope whenever the bigint pragma is active.
+Override the built-in oct() method with a version that can handle big numbers.
+This overrides it by exporting it to the current package. Under Perl v5.10.0 and
+higher, this is not so necessary, as oct() is lexically overridden in the
+current scope whenever the C<bignum> pragma is active.
=item v or version
-This prints out the name and version of all modules used and then exits.
+this prints out the name and version of the modules and then exits.
- perl -Mbignum=v
+ perl -Mbignum=v
=back
-=head2 Methods
+=head2 Math Library
+
+Math with the numbers is done (by default) by a backend library module called
+Math::BigInt::Calc. The default is equivalent to saying:
+
+ use bignum lib => 'Calc';
+
+you can change this by using:
+
+ use bignum lib => 'GMP';
+
+The following would first try to find Math::BigInt::Foo, then Math::BigInt::Bar,
+and if this also fails, revert to Math::BigInt::Calc:
+
+ use bignum lib => 'Foo,Math::BigInt::Bar';
+
+Using c<lib> warns if none of the specified libraries can be found and
+L<Math::BigInt> and L<Math::BigFloat> fell back to one of the default
+libraries. To suppress this warning, use C<try> instead:
+
+ use bignum try => 'GMP';
+
+If you want the code to die instead of falling back, use C<only> instead:
-Beside import() and AUTOLOAD() there are only a few other methods.
+ use bignum only => 'GMP';
-Since all numbers are now objects, you can use all functions that are part of
-the BigInt or BigFloat API. It is wise to use only the bxxx() notation, and not
-the fxxx() notation, though. This makes it possible that the underlying object
-might morph into a different class than BigFloat.
+Please see respective module documentation for further details.
+
+=head2 Method calls
-=head2 Caveats
+Since all numbers are now objects, you can use the methods that are part of the
+Math::BigInt and Math::BigFloat API.
But a warning is in order. When using the following to make a copy of a number,
only a shallow copy will be made.
- $x = 9; $y = $x;
- $x = $y = 7;
+ $x = 9; $y = $x;
+ $x = $y = 7;
-If you want to make a real copy, use the following:
+Using the copy or the original with overloaded math is okay, e.g., the following
+work:
- $y = $x->copy();
+ $x = 9; $y = $x;
+ print $x + 1, " ", $y,"\n"; # prints 10 9
-Using the copy or the original with overloaded math is okay, e.g. the
-following work:
+but calling any method that modifies the number directly will result in B<both>
+the original and the copy being destroyed:
- $x = 9; $y = $x;
- print $x + 1, " ", $y,"\n"; # prints 10 9
+ $x = 9; $y = $x;
+ print $x->badd(1), " ", $y,"\n"; # prints 10 10
-but calling any method that modifies the number directly will result in
-B<both> the original and the copy being destroyed:
+ $x = 9; $y = $x;
+ print $x->binc(1), " ", $y,"\n"; # prints 10 10
- $x = 9; $y = $x;
- print $x->badd(1), " ", $y,"\n"; # prints 10 10
+ $x = 9; $y = $x;
+ print $x->bmul(2), " ", $y,"\n"; # prints 18 18
- $x = 9; $y = $x;
- print $x->binc(1), " ", $y,"\n"; # prints 10 10
+Using methods that do not modify, but test that the contents works:
- $x = 9; $y = $x;
- print $x->bmul(2), " ", $y,"\n"; # prints 18 18
+ $x = 9; $y = $x;
+ $z = 9 if $x->is_zero(); # works fine
-Using methods that do not modify, but test the contents works:
+See the documentation about the copy constructor and C<=> in overload, as well
+as the documentation in Math::BigFloat for further details.
- $x = 9; $y = $x;
- $z = 9 if $x->is_zero(); # works fine
-
-See the documentation about the copy constructor and C<=> in overload, as
-well as the documentation in BigInt for further details.
+=head2 Methods
-=over 2
+=over 4
=item inf()
-A shortcut to return Math::BigInt->binf(). Useful because Perl does not always
+A shortcut to return C<inf> as an object. Useful because Perl does not always
handle bareword C<inf> properly.
=item NaN()
-A shortcut to return Math::BigInt->bnan(). Useful because Perl does not always
+A shortcut to return C<NaN> as an object. Useful because Perl does not always
handle bareword C<NaN> properly.
=item e
- # perl -Mbignum=e -wle 'print e'
+ # perl -Mbignum=e -wle 'print e'
-Returns Euler's number C<e>, aka exp(1).
+Returns Euler's number C<e>, aka exp(1) (= 2.7182818284...).
-=item PI()
+=item PI
- # perl -Mbignum=PI -wle 'print PI'
+ # perl -Mbignum=PI -wle 'print PI'
-Returns PI.
+Returns PI (= 3.1415926532..).
=item bexp()
- bexp($power,$accuracy);
+ bexp($power, $accuracy);
-Returns Euler's number C<e> raised to the appropriate power, to
-the wanted accuracy.
+Returns Euler's number C<e> raised to the appropriate power, to the wanted
+accuracy.
Example:
- # perl -Mbignum=bexp -wle 'print bexp(1,80)'
+ # perl -Mbignum=bexp -wle 'print bexp(1,80)'
=item bpi()
- bpi($accuracy);
+ bpi($accuracy);
Returns PI to the wanted accuracy.
Example:
- # perl -Mbignum=bpi -wle 'print bpi(80)'
+ # perl -Mbignum=bpi -wle 'print bpi(80)'
-=item upgrade()
+=item accuracy()
-Return the class that numbers are upgraded to, is in fact returning
-C<$Math::BigInt::upgrade>.
+Set or get the accuracy.
-=item in_effect()
+=item precision()
- use bignum;
+Set or get the precision.
- print "in effect\n" if bignum::in_effect; # true
- {
- no bignum;
- print "in effect\n" if bignum::in_effect; # false
- }
+=item round_mode()
-Returns true or false if C<bignum> is in effect in the current scope.
+Set or get the rounding mode.
-This method only works on Perl v5.9.4 or later.
+=item div_scale()
-=back
+Set or get the division scale.
-=head2 Math Library
+=item upgrade()
-Math with the numbers is done (by default) by a module called
-Math::BigInt::Calc. This is equivalent to saying:
+Set or get the class that the downgrade class upgrades to, if any. Set the
+upgrade class to C<undef> to disable upgrading. See C</CAVEATS> below.
- use bignum lib => 'Calc';
+=item downgrade()
-You can change this by using:
+Set or get the class that the upgrade class downgrades to, if any. Set the
+downgrade class to C<undef> to disable upgrading. See L</CAVEATS> below.
- use bignum lib => 'GMP';
+=item in_effect()
+
+ use bignum;
-The following would first try to find Math::BigInt::Foo, then
-Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc:
+ print "in effect\n" if bignum::in_effect; # true
+ {
+ no bignum;
+ print "in effect\n" if bignum::in_effect; # false
+ }
- use bignum lib => 'Foo,Math::BigInt::Bar';
+Returns true or false if C<bignum> is in effect in the current scope.
-Please see respective module documentation for further details.
+This method only works on Perl v5.9.4 or later.
-Using C<lib> warns if none of the specified libraries can be found and
-L<Math::BigInt> did fall back to one of the default libraries.
-To suppress this warning, use C<try> instead:
+=back
- use bignum try => 'GMP';
+=head1 CAVEATS
-If you want the code to die instead of falling back, use C<only> instead:
+=over 4
- use bignum only => 'GMP';
+=item The upgrade() and downgrade() methods
-=head2 INTERNAL FORMAT
+Note that setting both the upgrade and downgrade classes at runtime with the
+L</upgrade()> and L</downgrade()> methods, might not do what you expect:
-The numbers are stored as objects, and their internals might change at anytime,
-especially between math operations. The objects also might belong to different
-classes, like Math::BigInt, or Math::BigFloat. Mixing them together, even
-with normal scalars is not extraordinary, but normal and expected.
+ # Assuming that downgrading and upgrading hasn't been modified so far, so
+ # the downgrade and upgrade classes are Math::BigInt and Math::BigFloat,
+ # respectively, the following sets the upgrade class to Math::BigRat, i.e.,
+ # makes Math::BigInt upgrade to Math::BigRat:
-You should not depend on the internal format, all accesses must go through
-accessor methods. E.g. looking at $x->{sign} is not a bright idea since there
-is no guaranty that the object in question has such a hashkey, nor is a hash
-underneath at all.
+ bignum -> upgrade("Math::BigRat");
-=head2 SIGN
+ # The following sets the downgrade class to Math::BigInt::Lite, i.e., makes
+ # the new upgrade class Math::BigRat downgrade to Math::BigInt::Lite
-The sign is either '+', '-', 'NaN', '+inf' or '-inf' and stored separately.
-You can access it with the sign() method.
+ bignum -> downgrade("Math::BigInt::Lite");
-A sign of 'NaN' is used to represent the result when input arguments are not
-numbers or as a result of 0/0. '+inf' and '-inf' represent plus respectively
-minus infinity. You will get '+inf' when dividing a positive number by 0, and
-'-inf' when dividing any negative number by 0.
+ # Note that at this point, it is still Math::BigInt, not Math::BigInt::Lite,
+ # that upgrades to Math::BigRat, so to get Math::BigInt::Lite to upgrade to
+ # Math::BigRat, we need to do the following (again):
-=head1 CAVEATS
+ bignum -> upgrade("Math::BigRat");
-=over 2
+A simpler way to do this at runtime is to use import(),
+
+ bignum -> import(upgrade => "Math::BigRat",
+ downgrade => "Math::BigInt::Lite");
+
+=item Hexadecimal, octal, and binary floating point literals
+
+Perl (and this module) accepts hexadecimal, octal, and binary floating point
+literals, but use them with care with Perl versions before v5.32.0, because some
+versions of Perl silently give the wrong result.
=item Operator vs literal overloading
-C<bignum> works by overloading handling of integer and floating point
-literals, converting them to L<Math::BigInt> or L<Math::BigFloat>
-objects.
+C<bigrat> works by overloading handling of integer and floating point literals,
+converting them to L<Math::BigRat> objects.
-This means that arithmetic involving only string values or string
-literals will be performed using Perl's built-in operators.
+This means that arithmetic involving only string values or string literals are
+performed using Perl's built-in operators.
For example:
- use bignum;
+ use bigrat;
my $x = "900000000000000009";
my $y = "900000000000000007";
print $x - $y;
-will output C<0> on default 32-bit builds, since C<bigrat> never sees
-the string literals. To ensure the expression is all treated as
-C<Math::BigInt> or C<BigFloat> objects, use a literal number in the
-expression:
+outputs C<0> on default 32-bit builds, since C<bignum> never sees the string
+literals. To ensure the expression is all treated as C<Math::BigFloat> objects,
+use a literal number in the expression:
print +(0+$x) - $y;
+=item Ranges
+
+Perl does not allow overloading of ranges, so you can neither safely use ranges
+with C<bignum> endpoints, nor is the iterator variable a C<Math::BigFloat>.
+
+ use 5.010;
+ for my $i (12..13) {
+ for my $j (20..21) {
+ say $i ** $j; # produces a floating-point number,
+ # not an object
+ }
+ }
+
=item in_effect()
This method only works on Perl v5.9.4 or later.
=item hex()/oct()
-C<bigint> overrides these routines with versions that can also handle
-big integer values. Under Perl prior to version v5.9.4, however, this
-will not happen unless you specifically ask for it with the two
-import tags "hex" and "oct" - and then it will be global and cannot be
-disabled inside a scope with "no bigint":
+C<bignum> overrides these routines with versions that can also handle big
+integer values. Under Perl prior to version v5.9.4, however, this will not
+happen unless you specifically ask for it with the two import tags "hex" and
+"oct" - and then it will be global and cannot be disabled inside a scope with
+C<no bignum>:
- use bigint qw/hex oct/;
+ use bignum qw/hex oct/;
+ print hex("0x1234567890123456");
+ {
+ no bignum;
print hex("0x1234567890123456");
- {
- no bigint;
- print hex("0x1234567890123456");
- }
+ }
The second call to hex() will warn about a non-portable constant.
Compare this to:
- use bigint;
+ use bignum;
- # will warn only under older than v5.9.4
- print hex("0x1234567890123456");
+ # will warn only under Perl older than v5.9.4
+ print hex("0x1234567890123456");
=back
-=head1 MODULES USED
-
-C<bignum> is just a thin wrapper around various modules of the Math::BigInt
-family. Think of it as the head of the family, who runs the shop, and orders
-the others to do the work.
-
-The following modules are currently used by bignum:
-
- Math::BigInt::Lite (for speed, and only if it is loadable)
- Math::BigInt
- Math::BigFloat
-
=head1 EXAMPLES
Some cool command line examples to impress the Python crowd ;)
- perl -Mbignum -le 'print sqrt(33)'
- perl -Mbignum -le 'print 2*255'
- perl -Mbignum -le 'print 4.5+2*255'
- perl -Mbignum -le 'print 3/7 + 5/7 + 8/3'
- perl -Mbignum -le 'print 123->is_odd()'
- perl -Mbignum -le 'print log(2)'
- perl -Mbignum -le 'print exp(1)'
- perl -Mbignum -le 'print 2 ** 0.5'
- perl -Mbignum=a,65 -le 'print 2 ** 0.2'
- perl -Mbignum=a,65,l,GMP -le 'print 7 ** 7777'
+ perl -Mbignum -le 'print sqrt(33)'
+ perl -Mbignum -le 'print 2**255'
+ perl -Mbignum -le 'print 4.5+2**255'
+ perl -Mbignum -le 'print 3/7 + 5/7 + 8/3'
+ perl -Mbignum -le 'print 123->is_odd()'
+ perl -Mbignum -le 'print log(2)'
+ perl -Mbignum -le 'print exp(1)'
+ perl -Mbignum -le 'print 2 ** 0.5'
+ perl -Mbignum=a,65 -le 'print 2 ** 0.2'
+ perl -Mbignum=l,GMP -le 'print 7 ** 7777'
=head1 BUGS
Please report any bugs or feature requests to
-C<bug-math-bigint at rt.cpan.org>, or through the web interface at
+C<bug-bignum at rt.cpan.org>, or through the web interface at
L<https://rt.cpan.org/Ticket/Create.html?Queue=bignum> (requires login).
We will be notified, and then you'll automatically be notified of
progress on your bug as I make changes.
@@ -680,26 +939,26 @@ You can also look for information at:
=over 4
-=item * RT: CPAN's request tracker
-
-L<https://rt.cpan.org/Public/Dist/Display.html?Name=bignum>
+=item * GitHub
-=item * AnnoCPAN: Annotated CPAN documentation
+L<https://github.com/pjacklam/p5-bignum>
-L<http://annocpan.org/dist/bignum>
-
-=item * CPAN Ratings
+=item * RT: CPAN's request tracker
-L<http://cpanratings.perl.org/dist/bignum>
+L<https://rt.cpan.org/Dist/Display.html?Name=bignum>
-=item * Search CPAN
+=item * MetaCPAN
-L<http://search.cpan.org/dist/bignum/>
+L<https://metacpan.org/release/bignum>
=item * CPAN Testers Matrix
L<http://matrix.cpantesters.org/?dist=bignum>
+=item * CPAN Ratings
+
+L<https://cpanratings.perl.org/dist/bignum>
+
=back
=head1 LICENSE
@@ -724,7 +983,7 @@ L<Math::BigInt::FastCalc>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
=item *
-Maintained by Peter John Acklam E<lt>pjacklam@gmail.com<gt>, 2014-.
+Maintained by Peter John Acklam E<lt>pjacklam@gmail.comE<gt>, 2014-.
=back
diff --git a/Master/tlpkg/tlperl/lib/bigrat.pm b/Master/tlpkg/tlperl/lib/bigrat.pm
index 0a981471b2c..8dabb93f11a 100644
--- a/Master/tlpkg/tlperl/lib/bigrat.pm
+++ b/Master/tlpkg/tlperl/lib/bigrat.pm
@@ -1,63 +1,41 @@
package bigrat;
-use 5.010;
use strict;
use warnings;
-our $VERSION = '0.51';
+use Carp qw< carp croak >;
+
+our $VERSION = '0.66';
use Exporter;
-our @ISA = qw( bigint );
+our @ISA = qw( Exporter );
our @EXPORT_OK = qw( PI e bpi bexp hex oct );
our @EXPORT = qw( inf NaN );
use overload;
-use bigint ();
+
+my $obj_class = "Math::BigRat";
##############################################################################
-BEGIN {
- *inf = \&bigint::inf;
- *NaN = \&bigint::NaN;
- *hex = \&bigint::hex;
- *oct = \&bigint::oct;
+sub accuracy {
+ my $self = shift;
+ $obj_class -> accuracy(@_);
}
-# These are all alike, and thus faked by AUTOLOAD
-
-my @faked = qw/round_mode accuracy precision div_scale/;
-our ($AUTOLOAD, $_lite); # _lite for testsuite
-
-sub AUTOLOAD {
- my $name = $AUTOLOAD;
-
- $name =~ s/.*:://; # split package
- no strict 'refs';
- foreach my $n (@faked) {
- if ($n eq $name) {
- *{"bigrat::$name"} =
- sub {
- my $self = shift;
- no strict 'refs';
- if (defined $_[0]) {
- Math::BigInt->$name($_[0]);
- Math::BigFloat->$name($_[0]);
- return Math::BigRat->$name($_[0]);
- }
- return Math::BigInt->$name();
- };
- return &$name;
- }
- }
+sub precision {
+ my $self = shift;
+ $obj_class -> precision(@_);
+}
- # delayed load of Carp and avoid recursion
- require Carp;
- Carp::croak ("Can't call bigrat\-\>$name, not a valid method");
+sub round_mode {
+ my $self = shift;
+ $obj_class -> round_mode(@_);
}
-sub unimport {
- $^H{bigrat} = undef; # no longer in effect
- overload::remove_constant('binary', '', 'float', '', 'integer');
+sub div_scale {
+ my $self = shift;
+ $obj_class -> div_scale(@_);
}
sub in_effect {
@@ -66,150 +44,346 @@ sub in_effect {
$hinthash->{bigrat};
}
+sub _float_constant {
+ my $str = shift;
+
+ # See if we can convert the input string to a string using a normalized form
+ # consisting of the significand as a signed integer, the character "e", and
+ # the exponent as a signed integer, e.g., "+0e+0", "+314e-2", and "-1e+3".
+
+ my $nstr;
+
+ if (
+ # See if it is an octal number. An octal number like '0377' is also
+ # accepted by the functions parsing decimal and hexadecimal numbers, so
+ # handle octal numbers before decimal and hexadecimal numbers.
+
+ $str =~ /^0(?:[Oo]|_*[0-7])/ and
+ $nstr = Math::BigInt -> oct_str_to_dec_flt_str($str)
+
+ or
+
+ # See if it is decimal number.
+
+ $nstr = Math::BigInt -> dec_str_to_dec_flt_str($str)
+
+ or
+
+ # See if it is a hexadecimal number. Every hexadecimal number has a
+ # prefix, but the functions parsing numbers don't require it, so check
+ # to see if it actually is a hexadecimal number.
+
+ $str =~ /^0[Xx]/ and
+ $nstr = Math::BigInt -> hex_str_to_dec_flt_str($str)
+
+ or
+
+ # See if it is a binary numbers. Every binary number has a prefix, but
+ # the functions parsing numbers don't require it, so check to see if it
+ # actually is a binary number.
+
+ $str =~ /^0[Bb]/ and
+ $nstr = Math::BigInt -> bin_str_to_dec_flt_str($str))
+ {
+ return $obj_class -> new($nstr);
+ }
+
+ # If we get here, there is a bug in the code above this point.
+
+ warn "Internal error: unable to handle literal constant '$str'.",
+ " This is a bug, so please report this to the module author.";
+ return $obj_class -> bnan();
+}
+
#############################################################################
+# the following two routines are for "use bigrat qw/hex oct/;":
-sub import {
- my $self = shift;
+use constant LEXICAL => $] > 5.009004;
+
+# Internal function with the same semantics as CORE::hex(). This function is
+# not used directly, but rather by other front-end functions.
+
+sub _hex_core {
+ my $str = shift;
+
+ # Strip off, clean, and parse as much as we can from the beginning.
+
+ my $x;
+ if ($str =~ s/ ^ ( 0? [xX] )? ( [0-9a-fA-F]* ( _ [0-9a-fA-F]+ )* ) //x) {
+ my $chrs = $2;
+ $chrs =~ tr/_//d;
+ $chrs = '0' unless CORE::length $chrs;
+ $x = $obj_class -> from_hex($chrs);
+ } else {
+ $x = $obj_class -> bzero();
+ }
+
+ # Warn about trailing garbage.
+
+ if (CORE::length($str)) {
+ require Carp;
+ Carp::carp(sprintf("Illegal hexadecimal digit '%s' ignored",
+ substr($str, 0, 1)));
+ }
- # see also bignum->import() for additional comments
+ return $x;
+}
+
+# Internal function with the same semantics as CORE::oct(). This function is
+# not used directly, but rather by other front-end functions.
+
+sub _oct_core {
+ my $str = shift;
+
+ $str =~ s/^\s*//;
+
+ # Hexadecimal input.
+
+ return _hex_core($str) if $str =~ /^0?[xX]/;
+
+ my $x;
- $^H{bigrat} = 1; # we are in effect
+ # Binary input.
+
+ if ($str =~ /^0?[bB]/) {
+
+ # Strip off, clean, and parse as much as we can from the beginning.
+
+ if ($str =~ s/ ^ ( 0? [bB] )? ( [01]* ( _ [01]+ )* ) //x) {
+ my $chrs = $2;
+ $chrs =~ tr/_//d;
+ $chrs = '0' unless CORE::length $chrs;
+ $x = $obj_class -> from_bin($chrs);
+ }
+
+ # Warn about trailing garbage.
+
+ if (CORE::length($str)) {
+ require Carp;
+ Carp::carp(sprintf("Illegal binary digit '%s' ignored",
+ substr($str, 0, 1)));
+ }
+
+ return $x;
+ }
+
+ # Octal input. Strip off, clean, and parse as much as we can from the
+ # beginning.
+
+ if ($str =~ s/ ^ ( 0? [oO] )? ( [0-7]* ( _ [0-7]+ )* ) //x) {
+ my $chrs = $2;
+ $chrs =~ tr/_//d;
+ $chrs = '0' unless CORE::length $chrs;
+ $x = $obj_class -> from_oct($chrs);
+ }
+
+ # Warn about trailing garbage. CORE::oct() only warns about 8 and 9, but it
+ # is more helpful to warn about all invalid digits.
+
+ if (CORE::length($str)) {
+ require Carp;
+ Carp::carp(sprintf("Illegal octal digit '%s' ignored",
+ substr($str, 0, 1)));
+ }
+
+ return $x;
+}
+
+{
+ my $proto = LEXICAL ? '_' : ';$';
+ eval '
+sub hex(' . $proto . ') {' . <<'.';
+ my $str = @_ ? $_[0] : $_;
+ _hex_core($str);
+}
+.
+
+ eval '
+sub oct(' . $proto . ') {' . <<'.';
+ my $str = @_ ? $_[0] : $_;
+ _oct_core($str);
+}
+.
+}
+
+#############################################################################
+# the following two routines are for Perl 5.9.4 or later and are lexical
+
+my ($prev_oct, $prev_hex, $overridden);
+
+if (LEXICAL) { eval <<'.' }
+sub _hex(_) {
+ my $hh = (caller 0)[10];
+ return $$hh{bigrat} ? bigrat::_hex_core($_[0])
+ : $$hh{bigfloat} ? bigfloat::_hex_core($_[0])
+ : $$hh{bigint} ? bigint::_hex_core($_[0])
+ : $prev_hex ? &$prev_hex($_[0])
+ : CORE::hex($_[0]);
+}
+
+sub _oct(_) {
+ my $hh = (caller 0)[10];
+ return $$hh{bigrat} ? bigrat::_oct_core($_[0])
+ : $$hh{bigfloat} ? bigfloat::_oct_core($_[0])
+ : $$hh{bigint} ? bigint::_oct_core($_[0])
+ : $prev_oct ? &$prev_oct($_[0])
+ : CORE::oct($_[0]);
+}
+.
+
+sub _override {
+ return if $overridden;
+ $prev_oct = *CORE::GLOBAL::oct{CODE};
+ $prev_hex = *CORE::GLOBAL::hex{CODE};
+ no warnings 'redefine';
+ *CORE::GLOBAL::oct = \&_oct;
+ *CORE::GLOBAL::hex = \&_hex;
+ $overridden = 1;
+}
+
+sub unimport {
+ $^H{bigrat} = undef; # no longer in effect
+ overload::remove_constant('binary', '', 'float', '', 'integer');
+}
+
+sub import {
+ my $class = shift;
+
+ $^H{bigrat} = 1; # we are in effect
+ $^H{bigint} = undef;
+ $^H{bigfloat} = undef;
# for newer Perls always override hex() and oct() with a lexical version:
- if ($] > 5.009004) {
- bigint::_override();
+ if (LEXICAL) {
+ _override();
}
- # some defaults
- my $lib = '';
- my $lib_kind = 'try';
- my $upgrade = 'Math::BigFloat';
-
- my @import = (':constant'); # drive it w/ constant
- my @a = @_;
- my $l = scalar @_;
- my $j = 0;
- my ($a, $p);
- my ($ver, $trace); # version? trace?
- for (my $i = 0; $i < $l ; $i++, $j++) {
- if ($_[$i] eq 'upgrade') {
- # this causes upgrading
- $upgrade = $_[$i + 1]; # or undef to disable
- my $s = 2;
- $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..."
- splice @a, $j, $s;
- $j -= $s;
+
+ my @import = ();
+ my @a = (); # unrecognized arguments
+ my $ver; # version?
+
+ while (@_) {
+ my $param = shift;
+
+ # Accuracy.
+
+ if ($param =~ /^a(ccuracy)?$/) {
+ push @import, 'accuracy', shift();
+ next;
}
- elsif ($_[$i] =~ /^(l|lib|try|only)$/) {
- # this causes a different low lib to take care...
- $lib_kind = $1;
- $lib_kind = 'lib' if $lib_kind eq 'l';
- $lib = $_[$i + 1] || '';
- my $s = 2;
- $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..."
- splice @a, $j, $s;
- $j -= $s;
- $i++;
+
+ # Precision.
+
+ if ($param =~ /^p(recision)?$/) {
+ push @import, 'precision', shift();
+ next;
}
- elsif ($_[$i] =~ /^(a|accuracy)$/) {
- $a = $_[$i + 1];
- my $s = 2;
- $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..."
- splice @a, $j, $s;
- $j -= $s;
- $i++;
+
+ # Rounding mode.
+
+ if ($param eq 'round_mode') {
+ push @import, 'round_mode', shift();
+ next;
}
- elsif ($_[$i] =~ /^(p|precision)$/) {
- $p = $_[$i + 1];
- my $s = 2;
- $s = 1 if @a - $j < 2; # avoid "can not modify non-existent..."
- splice @a, $j, $s;
- $j -= $s;
- $i++;
+
+ # Backend library.
+
+ if ($param =~ /^(l|lib|try|only)$/) {
+ push @import, $param eq 'l' ? 'lib' : $param;
+ push @import, shift() if @_;
+ next;
}
- elsif ($_[$i] =~ /^(v|version)$/) {
+
+ if ($param =~ /^(v|version)$/) {
$ver = 1;
- splice @a, $j, 1;
- $j--;
+ next;
}
- elsif ($_[$i] =~ /^(t|trace)$/) {
- $trace = 1;
- splice @a, $j, 1;
- $j--;
- }
- elsif ($_[$i] !~ /^(PI|e|bpi|bexp|hex|oct)\z/) {
- die ("unknown option $_[$i]");
+
+ if ($param =~ /^(t|trace)$/) {
+ $obj_class .= "::Trace";
+ eval "require $obj_class";
+ die $@ if $@;
+ next;
}
- }
- my $class;
- $_lite = 0; # using M::BI::L ?
- if ($trace) {
- require Math::BigInt::Trace;
- $class = 'Math::BigInt::Trace';
- $upgrade = 'Math::BigFloat::Trace';
- }
- else {
- # see if we can find Math::BigInt::Lite
- if (!defined $a && !defined $p) { # rounding won't work to well
- local @INC = @INC;
- pop @INC if $INC[-1] eq '.';
- if (eval { require Math::BigInt::Lite; 1 }) {
- @import = (); # :constant in Lite, not MBI
- Math::BigInt::Lite->import(':constant');
- $_lite = 1; # signal okay
- }
+
+ if ($param =~ /^(PI|e|bexp|bpi|hex|oct)\z/) {
+ push @a, $param;
+ next;
}
- require Math::BigInt if $_lite == 0; # not already loaded?
- $class = 'Math::BigInt'; # regardless of MBIL or not
+
+ croak("Unknown option '$param'");
}
- push @import, $lib_kind => $lib if $lib ne '';
- # Math::BigInt::Trace or plain Math::BigInt
- $class->import(@import, upgrade => $upgrade);
- require Math::BigFloat;
- Math::BigFloat->import(upgrade => 'Math::BigRat', ':constant');
- require Math::BigRat;
- Math::BigRat->import(@import);
+ eval "require $obj_class";
+ die $@ if $@;
+ $obj_class -> import(@import);
- bigrat->accuracy($a) if defined $a;
- bigrat->precision($p) if defined $p;
if ($ver) {
- print "bigrat\t\t\t v$VERSION\n";
- print "Math::BigInt::Lite\t v$Math::BigInt::Lite::VERSION\n" if $_lite;
- print "Math::BigInt\t\t v$Math::BigInt::VERSION";
- my $config = Math::BigInt->config();
- print " lib => $config->{lib} v$config->{lib_version}\n";
- print "Math::BigFloat\t\t v$Math::BigFloat::VERSION\n";
- print "Math::BigRat\t\t v$Math::BigRat::VERSION\n";
+ printf "%-31s v%s\n", $class, $class -> VERSION();
+ printf " lib => %-23s v%s\n",
+ $obj_class -> config("lib"), $obj_class -> config("lib_version");
+ printf "%-31s v%s\n", $obj_class, $obj_class -> VERSION();
exit;
}
- # Take care of octal/hexadecimal constants
- overload::constant binary =>
- sub {
- bigint::_binary_constant(shift);
- };
+ $class -> export_to_level(1, $class, @a); # export inf, NaN, etc.
- # if another big* was already loaded:
- my ($package) = caller();
+ overload::constant
- no strict 'refs';
- if (!defined *{"${package}::inf"}) {
- $self->export_to_level(1, $self, @a); # export inf and NaN
- }
+ # This takes care each number written as decimal integer and within the
+ # range of what perl can represent as an integer, e.g., "314", but not
+ # "3141592653589793238462643383279502884197169399375105820974944592307".
+
+ integer => sub {
+ #printf "Value '%s' handled by the 'integer' sub.\n", $_[0];
+ my $str = shift;
+ return $obj_class -> new($str);
+ },
+
+ # This takes care of each number written with a decimal point and/or
+ # using floating point notation, e.g., "3.", "3.0", "3.14e+2" (decimal),
+ # "0b1.101p+2" (binary), "03.14p+2" and "0o3.14p+2" (octal), and
+ # "0x3.14p+2" (hexadecimal).
+
+ float => sub {
+ #printf "# Value '%s' handled by the 'float' sub.\n", $_[0];
+ _float_constant(shift);
+ },
+
+ # Take care of each number written as an integer (no decimal point or
+ # exponent) using binary, octal, or hexadecimal notation, e.g., "0b101"
+ # (binary), "0314" and "0o314" (octal), and "0x314" (hexadecimal).
+
+ binary => sub {
+ #printf "# Value '%s' handled by the 'binary' sub.\n", $_[0];
+ my $str = shift;
+ return $obj_class -> new($str) if $str =~ /^0[XxBb]/;
+ $obj_class -> from_oct($str);
+ };
}
-sub PI () { Math::BigFloat->new('3.141592653589793238462643383279502884197'); }
-sub e () { Math::BigFloat->new('2.718281828459045235360287471352662497757'); }
+sub inf () { $obj_class -> binf(); }
+sub NaN () { $obj_class -> bnan(); }
+
+# This should depend on the current accuracy/precision. Fixme!
+sub PI () { $obj_class -> new('3.141592653589793238462643383279502884197'); }
+sub e () { $obj_class -> new('2.718281828459045235360287471352662497757'); }
sub bpi ($) {
- local $Math::BigFloat::upgrade;
- Math::BigFloat->bpi(@_);
+ my $up = Math::BigFloat -> upgrade(); # get current upgrading, if any ...
+ Math::BigFloat -> upgrade(undef); # ... and disable
+ my $x = Math::BigFloat -> bpi(@_);
+ Math::BigFloat -> upgrade($up); # reset the upgrading
+ return $obj_class -> new($x);
}
sub bexp ($$) {
- local $Math::BigFloat::upgrade;
- my $x = Math::BigFloat->new($_[0]);
- $x->bexp($_[1]);
+ my $up = Math::BigFloat -> upgrade(); # get current upgrading, if any ...
+ Math::BigFloat -> upgrade(undef); # ... and disable
+ my $x = Math::BigFloat -> new(shift);
+ $x -> bexp(@_);
+ Math::BigFloat -> upgrade($up); # reset the upgrading
+ return $obj_class -> new($x);
}
1;
@@ -220,279 +394,291 @@ __END__
=head1 NAME
-bigrat - Transparent BigNumber/BigRational support for Perl
+bigrat - transparent big rational number support for Perl
=head1 SYNOPSIS
- use bigrat;
+ use bigrat;
- print 2 + 4.5,"\n"; # BigFloat 6.5
- print 1/3 + 1/4,"\n"; # produces 7/12
+ print 2 + 4.5; # Math::BigRat 13/2
+ print 1/3 + 1/4; # Math::BigRat 7/12
+ print inf + 42; # Math::BigRat inf
+ print NaN * 7; # Math::BigRat NaN
+ print hex("0x1234567890123490"); # Perl v5.10.0 or later
- {
- no bigrat;
- print 1/3,"\n"; # 0.33333...
- }
+ {
+ no bigrat;
+ print 1/3; # 0.33333...
+ }
- # Import into current package:
- use bigrat qw/hex oct/;
- print hex("0x1234567890123490"),"\n";
- print oct("01234567890123490"),"\n";
+ # for older Perls, import into current package:
+ use bigrat qw/hex oct/;
+ print hex("0x1234567890123490");
+ print oct("01234567890123490");
=head1 DESCRIPTION
-All operators (including basic math operations) are overloaded. Integer and
-floating-point constants are created as proper BigInts or BigFloats,
-respectively.
+All numeric literal in the given scope are converted to Math::BigRat objects.
-Other than L<bignum>, this module upgrades to Math::BigRat, meaning that
-instead of 2.5 you will get 2+1/2 as output.
+All operators (including basic math operations) except the range operator C<..>
+are overloaded.
-=head2 Modules Used
+So, the following:
-C<bigrat> is just a thin wrapper around various modules of the Math::BigInt
-family. Think of it as the head of the family, who runs the shop, and orders
-the others to do the work.
+ use bigrat;
+ $x = 1234;
-The following modules are currently used by bignum:
+creates a Math::BigRat and stores a reference to in $x. This happens
+transparently and behind your back, so to speak.
- Math::BigInt::Lite (for speed, and only if it is loadable)
- Math::BigInt
- Math::BigFloat
- Math::BigRat
+You can see this with the following:
-=head2 Math Library
+ perl -Mbigrat -le 'print ref(1234)'
-Math with the numbers is done (by default) by a module called
-Math::BigInt::Calc. This is equivalent to saying:
+Since numbers are actually objects, you can call all the usual methods from
+Math::BigRat on them. This even works to some extent on expressions:
- use bigrat lib => 'Calc';
+ perl -Mbigrat -le '$x = 1234; print $x->bdec()'
+ perl -Mbigrat -le 'print 1234->copy()->binc();'
+ perl -Mbigrat -le 'print 1234->copy()->binc->badd(6);'
+ perl -Mbigrat -le 'print +(1234)->copy()->binc()'
-You can change this by using:
+(Note that print doesn't do what you expect if the expression starts with
+'(' hence the C<+>)
- use bignum lib => 'GMP';
+You can even chain the operations together as usual:
-The following would first try to find Math::BigInt::Foo, then
-Math::BigInt::Bar, and when this also fails, revert to Math::BigInt::Calc:
+ perl -Mbigrat -le 'print 1234->copy()->binc->badd(6);'
+ 1241
- use bigrat lib => 'Foo,Math::BigInt::Bar';
+Please note the following does not work as expected (prints nothing), since
+overloading of '..' is not yet possible in Perl (as of v5.8.0):
-Using C<lib> warns if none of the specified libraries can be found and
-L<Math::BigInt> did fall back to one of the default libraries.
-To suppress this warning, use C<try> instead:
+ perl -Mbigrat -le 'for (1..2) { print ref($_); }'
- use bignum try => 'GMP';
+=head2 Options
-If you want the code to die instead of falling back, use C<only> instead:
+C<bigrat> recognizes some options that can be passed while loading it via
+C<use>. The following options exist:
- use bignum only => 'GMP';
+=over 4
-Please see respective module documentation for further details.
+=item a or accuracy
-=head2 Sign
+This sets the accuracy for all math operations. The argument must be greater
+than or equal to zero. See Math::BigInt's bround() method for details.
-The sign is either '+', '-', 'NaN', '+inf' or '-inf'.
+ perl -Mbigrat=a,50 -le 'print sqrt(20)'
-A sign of 'NaN' is used to represent the result when input arguments are not
-numbers or as a result of 0/0. '+inf' and '-inf' represent plus respectively
-minus infinity. You will get '+inf' when dividing a positive number by 0, and
-'-inf' when dividing any negative number by 0.
+Note that setting precision and accuracy at the same time is not possible.
-=head2 Methods
+=item p or precision
-Since all numbers are not objects, you can use all functions that are part of
-the BigInt or BigFloat API. It is wise to use only the bxxx() notation, and not
-the fxxx() notation, though. This makes you independent on the fact that the
-underlying object might morph into a different class than BigFloat.
+This sets the precision for all math operations. The argument can be any
+integer. Negative values mean a fixed number of digits after the dot, while a
+positive value rounds to this digit left from the dot. 0 means round to integer.
+See Math::BigInt's bfround() method for details.
-=over 2
+ perl -Mbigrat=p,-50 -le 'print sqrt(20)'
-=item inf()
+Note that setting precision and accuracy at the same time is not possible.
-A shortcut to return Math::BigInt->binf(). Useful because Perl does not always
-handle bareword C<inf> properly.
+=item t or trace
-=item NaN()
+This enables a trace mode and is primarily for debugging.
-A shortcut to return Math::BigInt->bnan(). Useful because Perl does not always
-handle bareword C<NaN> properly.
+=item l, lib, try, or only
-=item e
+Load a different math lib, see L<Math Library>.
- # perl -Mbigrat=e -wle 'print e'
+ perl -Mbigrat=l,GMP -e 'print 2 ** 512'
+ perl -Mbigrat=lib,GMP -e 'print 2 ** 512'
+ perl -Mbigrat=try,GMP -e 'print 2 ** 512'
+ perl -Mbigrat=only,GMP -e 'print 2 ** 512'
-Returns Euler's number C<e>, aka exp(1).
+=item hex
-=item PI
+Override the built-in hex() method with a version that can handle big numbers.
+This overrides it by exporting it to the current package. Under Perl v5.10.0 and
+higher, this is not so necessary, as hex() is lexically overridden in the
+current scope whenever the C<bigrat> pragma is active.
- # perl -Mbigrat=PI -wle 'print PI'
+=item oct
-Returns PI.
+Override the built-in oct() method with a version that can handle big numbers.
+This overrides it by exporting it to the current package. Under Perl v5.10.0 and
+higher, this is not so necessary, as oct() is lexically overridden in the
+current scope whenever the C<bigrat> pragma is active.
-=item bexp()
+=item v or version
- bexp($power,$accuracy);
+this prints out the name and version of the modules and then exits.
-Returns Euler's number C<e> raised to the appropriate power, to
-the wanted accuracy.
+ perl -Mbigrat=v
-Example:
+=back
- # perl -Mbigrat=bexp -wle 'print bexp(1,80)'
+=head2 Math Library
-=item bpi()
+Math with the numbers is done (by default) by a backend library module called
+Math::BigInt::Calc. The default is equivalent to saying:
- bpi($accuracy);
+ use bigrat lib => 'Calc';
-Returns PI to the wanted accuracy.
+you can change this by using:
-Example:
+ use bigrat lib => 'GMP';
- # perl -Mbigrat=bpi -wle 'print bpi(80)'
+The following would first try to find Math::BigInt::Foo, then Math::BigInt::Bar,
+and if this also fails, revert to Math::BigInt::Calc:
-=item upgrade()
+ use bigrat lib => 'Foo,Math::BigInt::Bar';
-Return the class that numbers are upgraded to, is in fact returning
-C<$Math::BigInt::upgrade>.
+Using c<lib> warns if none of the specified libraries can be found and
+L<Math::BigInt> fell back to one of the default libraries. To suppress this
+warning, use c<try> instead:
-=item in_effect()
+ use bigrat try => 'GMP';
- use bigrat;
+If you want the code to die instead of falling back, use C<only> instead:
- print "in effect\n" if bigrat::in_effect; # true
- {
- no bigrat;
- print "in effect\n" if bigrat::in_effect; # false
- }
+ use bigrat only => 'GMP';
-Returns true or false if C<bigrat> is in effect in the current scope.
+Please see the respective module documentation for further details.
-This method only works on Perl v5.9.4 or later.
+=head2 Method calls
-=back
+Since all numbers are now objects, you can use all methods that are part of the
+Math::BigRat API.
-=head2 MATH LIBRARY
+But a warning is in order. When using the following to make a copy of a number,
+only a shallow copy will be made.
-Math with the numbers is done (by default) by a module called
+ $x = 9; $y = $x;
+ $x = $y = 7;
-=head2 Caveat
+Using the copy or the original with overloaded math is okay, e.g., the following
+work:
-But a warning is in order. When using the following to make a copy of a number,
-only a shallow copy will be made.
+ $x = 9; $y = $x;
+ print $x + 1, " ", $y,"\n"; # prints 10 9
- $x = 9; $y = $x;
- $x = $y = 7;
+but calling any method that modifies the number directly will result in B<both>
+the original and the copy being destroyed:
-If you want to make a real copy, use the following:
+ $x = 9; $y = $x;
+ print $x->badd(1), " ", $y,"\n"; # prints 10 10
- $y = $x->copy();
+ $x = 9; $y = $x;
+ print $x->binc(1), " ", $y,"\n"; # prints 10 10
-Using the copy or the original with overloaded math is okay, e.g. the
-following work:
+ $x = 9; $y = $x;
+ print $x->bmul(2), " ", $y,"\n"; # prints 18 18
- $x = 9; $y = $x;
- print $x + 1, " ", $y,"\n"; # prints 10 9
+Using methods that do not modify, but test that the contents works:
-but calling any method that modifies the number directly will result in
-B<both> the original and the copy being destroyed:
+ $x = 9; $y = $x;
+ $z = 9 if $x->is_zero(); # works fine
- $x = 9; $y = $x;
- print $x->badd(1), " ", $y,"\n"; # prints 10 10
+See the documentation about the copy constructor and C<=> in overload, as well
+as the documentation in Math::BigFloat for further details.
- $x = 9; $y = $x;
- print $x->binc(1), " ", $y,"\n"; # prints 10 10
+=head2 Methods
- $x = 9; $y = $x;
- print $x->bmul(2), " ", $y,"\n"; # prints 18 18
+=over 4
-Using methods that do not modify, but testthe contents works:
+=item inf()
- $x = 9; $y = $x;
- $z = 9 if $x->is_zero(); # works fine
+A shortcut to return Math::BigRat->binf(). Useful because Perl does not always
+handle bareword C<inf> properly.
-See the documentation about the copy constructor and C<=> in overload, as
-well as the documentation in BigInt for further details.
+=item NaN()
-=head2 Options
+A shortcut to return Math::BigRat->bnan(). Useful because Perl does not always
+handle bareword C<NaN> properly.
-bignum recognizes some options that can be passed while loading it via use.
-The options can (currently) be either a single letter form, or the long form.
-The following options exist:
+=item e
-=over 2
+ # perl -Mbigrat=e -wle 'print e'
-=item a or accuracy
+Returns Euler's number C<e>, aka exp(1).
-This sets the accuracy for all math operations. The argument must be greater
-than or equal to zero. See Math::BigInt's bround() function for details.
+=item PI
- perl -Mbigrat=a,50 -le 'print sqrt(20)'
+ # perl -Mbigrat=PI -wle 'print PI'
-Note that setting precision and accuracy at the same time is not possible.
+Returns PI.
-=item p or precision
+=item bexp()
-This sets the precision for all math operations. The argument can be any
-integer. Negative values mean a fixed number of digits after the dot, while
-a positive value rounds to this digit left from the dot. 0 or 1 mean round to
-integer. See Math::BigInt's bfround() function for details.
+ bexp($power, $accuracy);
- perl -Mbigrat=p,-50 -le 'print sqrt(20)'
+Returns Euler's number C<e> raised to the appropriate power, to the wanted
+accuracy.
-Note that setting precision and accuracy at the same time is not possible.
+Example:
-=item t or trace
+ # perl -Mbigrat=bexp -wle 'print bexp(1,80)'
+
+=item bpi()
-This enables a trace mode and is primarily for debugging bignum or
-Math::BigInt/Math::BigFloat.
+ bpi($accuracy);
-=item l or lib
+Returns PI to the wanted accuracy.
-Load a different math lib, see L<MATH LIBRARY>.
+Example:
- perl -Mbigrat=l,GMP -e 'print 2 ** 512'
+ # perl -Mbigrat=bpi -wle 'print bpi(80)'
-Currently there is no way to specify more than one library on the command
-line. This means the following does not work:
+=item accuracy()
- perl -Mbignum=l,GMP,Pari -e 'print 2 ** 512'
+Set or get the accuracy.
-This will be hopefully fixed soon ;)
+=item precision()
-=item hex
+Set or get the precision.
-Override the built-in hex() method with a version that can handle big
-numbers. This overrides it by exporting it to the current package. Under
-Perl v5.10.0 and higher, this is not so necessary, as hex() is lexically
-overridden in the current scope whenever the bigrat pragma is active.
+=item round_mode()
-=item oct
+Set or get the rounding mode.
-Override the built-in oct() method with a version that can handle big
-numbers. This overrides it by exporting it to the current package. Under
-Perl v5.10.0 and higher, this is not so necessary, as oct() is lexically
-overridden in the current scope whenever the bigrat pragma is active.
+=item div_scale()
-=item v or version
+Set or get the division scale.
-This prints out the name and version of all modules used and then exits.
+=item in_effect()
+
+ use bigrat;
+
+ print "in effect\n" if bigrat::in_effect; # true
+ {
+ no bigrat;
+ print "in effect\n" if bigrat::in_effect; # false
+ }
+
+Returns true or false if C<bigrat> is in effect in the current scope.
- perl -Mbigrat=v
+This method only works on Perl v5.9.4 or later.
=back
=head1 CAVEATS
-=over 2
+=over 4
+
+=item Hexadecimal, octal, and binary floating point literals
+
+Perl (and this module) accepts hexadecimal, octal, and binary floating point
+literals, but use them with care with Perl versions before v5.32.0, because some
+versions of Perl silently give the wrong result.
=item Operator vs literal overloading
-C<bigrat> works by overloading handling of integer and floating point
-literals, converting them to L<Math::BigInt> or L<Math::BigRat>
-objects.
+C<bigrat> works by overloading handling of integer and floating point literals,
+converting them to L<Math::BigRat> objects.
-This means that arithmetic involving only string values or string
-literals will be performed using Perl's built-in operators.
+This means that arithmetic involving only string values or string literals are
+performed using Perl's built-in operators.
For example:
@@ -501,59 +687,72 @@ For example:
my $y = "900000000000000007";
print $x - $y;
-will output C<0> on default 32-bit builds, since C<bigrat> never sees
-the string literals. To ensure the expression is all treated as
-C<Math::BigInt> or C<Math::BigRat> objects, use a literal number in
-the expression:
+outputs C<0> on default 32-bit builds, since C<bigrat> never sees the string
+literals. To ensure the expression is all treated as C<Math::BigRat> objects,
+use a literal number in the expression:
print +(0+$x) - $y;
+=item Ranges
+
+Perl does not allow overloading of ranges, so you can neither safely use ranges
+with C<bigrat> endpoints, nor is the iterator variable a C<Math::BigRat>.
+
+ use 5.010;
+ for my $i (12..13) {
+ for my $j (20..21) {
+ say $i ** $j; # produces a floating-point number,
+ # not an object
+ }
+ }
+
=item in_effect()
This method only works on Perl v5.9.4 or later.
=item hex()/oct()
-C<bigint> overrides these routines with versions that can also handle
-big integer values. Under Perl prior to version v5.9.4, however, this
-will not happen unless you specifically ask for it with the two
-import tags "hex" and "oct" - and then it will be global and cannot be
-disabled inside a scope with "no bigint":
+C<bigrat> overrides these routines with versions that can also handle big
+integer values. Under Perl prior to version v5.9.4, however, this will not
+happen unless you specifically ask for it with the two import tags "hex" and
+"oct" - and then it will be global and cannot be disabled inside a scope with
+C<no bigrat>:
- use bigint qw/hex oct/;
+ use bigrat qw/hex oct/;
+ print hex("0x1234567890123456");
+ {
+ no bigrat;
print hex("0x1234567890123456");
- {
- no bigint;
- print hex("0x1234567890123456");
- }
+ }
The second call to hex() will warn about a non-portable constant.
Compare this to:
- use bigint;
+ use bigrat;
- # will warn only under Perl older than v5.9.4
- print hex("0x1234567890123456");
+ # will warn only under Perl older than v5.9.4
+ print hex("0x1234567890123456");
=back
=head1 EXAMPLES
- perl -Mbigrat -le 'print sqrt(33)'
- perl -Mbigrat -le 'print 2*255'
- perl -Mbigrat -le 'print 4.5+2*255'
- perl -Mbigrat -le 'print 3/7 + 5/7 + 8/3'
- perl -Mbigrat -le 'print 12->is_odd()';
- perl -Mbignum=l,GMP -le 'print 7 ** 7777'
+ perl -Mbigrat -le 'print sqrt(33)'
+ perl -Mbigrat -le 'print 2**255'
+ perl -Mbigrat -le 'print 4.5+2**255'
+ perl -Mbigrat -le 'print 3/7 + 5/7 + 8/3'
+ perl -Mbigrat -le 'print 12->is_odd()';
+ perl -Mbigrat=l,GMP -le 'print 7 ** 7777'
=head1 BUGS
-For information about bugs and how to report them, see the BUGS section in the
-documentation available with the perldoc command.
-
- perldoc bignum
+Please report any bugs or feature requests to
+C<bug-bignum at rt.cpan.org>, or through the web interface at
+L<https://rt.cpan.org/Ticket/Create.html?Queue=bignum> (requires login).
+We will be notified, and then you'll automatically be notified of
+progress on your bug as I make changes.
=head1 SUPPORT
@@ -561,10 +760,31 @@ You can find documentation for this module with the perldoc command.
perldoc bigrat
-For more information, see the SUPPORT section in the documentation available
-with the perldoc command.
+You can also look for information at:
- perldoc bignum
+=over 4
+
+=item * GitHub
+
+L<https://github.com/pjacklam/p5-bignum>
+
+=item * RT: CPAN's request tracker
+
+L<https://rt.cpan.org/Dist/Display.html?Name=bignum>
+
+=item * MetaCPAN
+
+L<https://metacpan.org/release/bignum>
+
+=item * CPAN Testers Matrix
+
+L<http://matrix.cpantesters.org/?dist=bignum>
+
+=item * CPAN Ratings
+
+L<https://cpanratings.perl.org/dist/bignum>
+
+=back
=head1 LICENSE
@@ -588,7 +808,7 @@ L<Math::BigInt::FastCalc>, L<Math::BigInt::Pari> and L<Math::BigInt::GMP>.
=item *
-Peter John Acklam E<lt>pjacklam@gmail.com<gt>, 2014-.
+Maintained by Peter John Acklam E<lt>pjacklam@gmail.comE<gt>, 2014-.
=back
diff --git a/Master/tlpkg/tlperl/lib/builtin.pm b/Master/tlpkg/tlperl/lib/builtin.pm
new file mode 100755
index 00000000000..bf601fd5432
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/builtin.pm
@@ -0,0 +1,323 @@
+package builtin 0.008;
+
+use strict;
+use warnings;
+
+# All code, including &import, is implemented by always-present functions in
+# the perl interpreter itself.
+# See also `builtin.c` in perl source
+
+1;
+__END__
+
+=head1 NAME
+
+builtin - Perl pragma to import built-in utility functions
+
+=head1 SYNOPSIS
+
+ use builtin qw(
+ true false is_bool
+ weaken unweaken is_weak
+ blessed refaddr reftype
+ created_as_string created_as_number
+ ceil floor
+ indexed
+ trim
+ is_tainted
+ export_lexically
+ );
+
+=head1 DESCRIPTION
+
+Perl provides several utility functions in the C<builtin> package. These are
+plain functions, and look and behave just like regular user-defined functions
+do. They do not provide new syntax or require special parsing. These functions
+are always present in the interpreter and can be called at any time by their
+fully-qualified names. By default they are not available as short names, but
+can be requested for convenience.
+
+Individual named functions can be imported by listing them as import
+parameters on the C<use> statement for this pragma.
+
+The overall C<builtin> mechanism, as well as every individual function it
+provides, are currently B<experimental>.
+
+B<Warning>: At present, the entire C<builtin> namespace is experimental.
+Calling functions in it will trigger warnings of the C<experimental::builtin>
+category.
+
+=head2 Lexical Import
+
+This pragma module creates I<lexical> aliases in the currently-compiling scope
+to these builtin functions. This is similar to the lexical effect of other
+pragmas such as L<strict> and L<feature>.
+
+ sub classify
+ {
+ my $val = shift;
+
+ use builtin 'is_bool';
+ return is_bool($val) ? "boolean" : "not a boolean";
+ }
+
+ # the is_bool() function is no longer visible here
+ # but may still be called by builtin::is_bool()
+
+Because these functions are imported lexically, rather than by package
+symbols, the user does not need to take any special measures to ensure they
+don't accidentally appear as object methods from a class.
+
+ package An::Object::Class {
+ use builtin 'true', 'false';
+ ...
+ }
+
+ # does not appear as a method
+ An::Object::Class->true;
+
+ # Can't locate object method "true" via package "An::Object::Class"
+ # at ...
+
+=head1 FUNCTIONS
+
+=head2 true
+
+ $val = true;
+
+Returns the boolean truth value. While any scalar value can be tested for
+truth and most defined, non-empty and non-zero values are considered "true"
+by perl, this one is special in that L</is_bool> considers it to be a
+distinguished boolean value.
+
+This gives an equivalent value to expressions like C<!!1> or C<!0>.
+
+=head2 false
+
+ $val = false;
+
+Returns the boolean fiction value. While any non-true scalar value is
+considered "false" by perl, this one is special in that L</is_bool> considers
+it to be a distinguished boolean value.
+
+This gives an equivalent value to expressions like C<!!0> or C<!1>.
+
+=head2 is_bool
+
+ $bool = is_bool($val);
+
+Returns true when given a distinguished boolean value, or false if not. A
+distinguished boolean value is the result of any boolean-returning builtin
+function (such as C<true> or C<is_bool> itself), boolean-returning operator
+(such as the C<eq> or C<==> comparison tests or the C<!> negation operator),
+or any variable containing one of these results.
+
+This function used to be named C<isbool>. A compatibility alias is provided
+currently but will be removed in a later version.
+
+=head2 weaken
+
+ weaken($ref);
+
+Weakens a reference. A weakened reference does not contribute to the reference
+count of its referent. If only weakened references to a referent remain, it
+will be disposed of, and all remaining weak references to it will have their
+value set to C<undef>.
+
+=head2 unweaken
+
+ unweaken($ref);
+
+Strengthens a reference, undoing the effects of a previous call to L</weaken>.
+
+=head2 is_weak
+
+ $bool = is_weak($ref);
+
+Returns true when given a weakened reference, or false if not a reference or
+not weak.
+
+This function used to be named C<isweak>. A compatibility alias is provided
+currently but will be removed in a later version.
+
+=head2 blessed
+
+ $str = blessed($ref);
+
+Returns the package name for an object reference, or C<undef> for a
+non-reference or reference that is not an object.
+
+=head2 refaddr
+
+ $num = refaddr($ref);
+
+Returns the memory address for a reference, or C<undef> for a non-reference.
+This value is not likely to be very useful for pure Perl code, but is handy as
+a means to test for referential identity or uniqueness.
+
+=head2 reftype
+
+ $str = reftype($ref);
+
+Returns the basic container type of the referent of a reference, or C<undef>
+for a non-reference. This is returned as a string in all-capitals, such as
+C<ARRAY> for array references, or C<HASH> for hash references.
+
+=head2 created_as_string
+
+ $bool = created_as_string($val);
+
+Returns a boolean representing if the argument value was originally created as
+a string. It will return true for any scalar expression whose most recent
+assignment or modification was of a string-like nature - such as assignment
+from a string literal, or the result of a string operation such as
+concatenation or regexp. It will return false for references (including any
+object), numbers, booleans and undef.
+
+It is unlikely that you will want to use this for regular data validation
+within Perl, as it will not return true for regular numbers that are still
+perfectly usable as strings, nor for any object reference - especially objects
+that overload the stringification operator in an attempt to behave more like
+strings. For example
+
+ my $val = URI->new( "https://metacpan.org/" );
+
+ if( created_as_string $val ) { ... } # this will not execute
+
+=head2 created_as_number
+
+ $bool = created_as_number($val);
+
+Returns a boolean representing if the argument value was originally created as
+a number. It will return true for any scalar expression whose most recent
+assignment or modification was of a numerical nature - such as assignment from
+a number literal, or the result of a numerical operation such as addition. It
+will return false for references (including any object), strings, booleans and
+undef.
+
+It is unlikely that you will want to use this for regular data validation
+within Perl, as it will not return true for regular strings of decimal digits
+that are still perfectly usable as numbers, nor for any object reference -
+especially objects that overload the numification operator in an attempt to
+behave more like numbers. For example
+
+ my $val = Math::BigInt->new( 123 );
+
+ if( created_as_number $val ) { ... } # this will not execute
+
+While most Perl code should operate on scalar values without needing to know
+their creation history, these two functions are intended to be used by data
+serialisation modules such as JSON encoders or similar situations, where
+language interoperability concerns require making a distinction between values
+that are fundamentally stringlike versus numberlike in nature.
+
+=head2 ceil
+
+ $num = ceil($num);
+
+Returns the smallest integer value greater than or equal to the given
+numerical argument.
+
+=head2 floor
+
+ $num = floor($num);
+
+Returns the largest integer value less than or equal to the given numerical
+argument.
+
+=head2 indexed
+
+ @ivpairs = indexed(@items)
+
+Returns an even-sized list of number/value pairs, where each pair is formed
+of a number giving an index in the original list followed by the value at that
+position in it. I.e. returns a list twice the size of the original, being
+equal to
+
+ (0, $items[0], 1, $items[1], 2, $items[2], ...)
+
+Note that unlike the core C<values> function, this function returns copies of
+its original arguments, not aliases to them. Any modifications of these copies
+are I<not> reflected in modifications to the original.
+
+ my @x = ...;
+ $_++ for indexed @x; # The @x array remains unaffected
+
+This function is primarily intended to be useful combined with multi-variable
+C<foreach> loop syntax; as
+
+ foreach my ($index, $value) (indexed LIST) {
+ ...
+ }
+
+In scalar context this function returns the size of the list that it would
+otherwise have returned, and provokes a warning in the C<scalar> category.
+
+=head2 trim
+
+ $stripped = trim($string);
+
+Returns the input string with whitespace stripped from the beginning
+and end. trim() will remove these characters:
+
+" ", an ordinary space.
+
+"\t", a tab.
+
+"\n", a new line (line feed).
+
+"\r", a carriage return.
+
+and all other Unicode characters that are flagged as whitespace.
+A complete list is in L<perlrecharclass/Whitespace>.
+
+ $var = " Hello world "; # "Hello world"
+ $var = "\t\t\tHello world"; # "Hello world"
+ $var = "Hello world\n"; # "Hello world"
+ $var = "\x{2028}Hello world\x{3000}"; # "Hello world"
+
+C<trim> is equivalent to:
+
+ $str =~ s/\A\s+|\s+\z//urg;
+
+For Perl versions where this feature is not available look at the
+L<String::Util> module for a comparable implementation.
+
+=head2 is_tainted
+
+ $bool = is_tainted($var);
+
+Returns true when given a tainted variable.
+
+=head2 export_lexically
+
+ export_lexically($name1, $ref1, $name2, $ref2, ...)
+
+Exports new lexical names into the scope currently being compiled. Names given
+by the first of each pair of values will refer to the corresponding item whose
+reference is given by the second. Types of item that are permitted are
+subroutines, and scalar, array, and hash variables. If the item is a
+subroutine, the name may optionally be prefixed with the C<&> sigil, but for
+convenience it doesn't have to. For items that are variables the sigil is
+required, and must match the type of the variable.
+
+ export_lexically func => \&func,
+ '&func' => \&func; # same as above
+
+ export_lexically '$scalar' => \my $var;
+
+Z<>
+
+ # The following are not permitted
+ export_lexically '$var' => \@arr; # sigil does not match
+ export_lexically name => \$scalar; # implied '&' sigil does not match
+
+ export_lexically '*name' => \*globref; # globrefs are not supported
+
+This must be called at compile time; which typically means during a C<BEGIN>
+block. Usually this would be used as part of an C<import> method of a module,
+when invoked as part of a C<use ...> statement.
+
+=head1 SEE ALSO
+
+L<perlop>, L<perlfunc>, L<Scalar::Util>
diff --git a/Master/tlpkg/tlperl/lib/charnames.pm b/Master/tlpkg/tlperl/lib/charnames.pm
index 0fb341fd1dd..472773dece4 100644
--- a/Master/tlpkg/tlperl/lib/charnames.pm
+++ b/Master/tlpkg/tlperl/lib/charnames.pm
@@ -1,7 +1,7 @@
package charnames;
use strict;
use warnings;
-our $VERSION = '1.48';
+our $VERSION = '1.50';
use unicore::Name; # mktables-generated algorithmically-defined names
use _charnames (); # The submodule for this where most of the work gets done
@@ -50,7 +50,8 @@ sub vianame
# can't change it because of backward compatibility. New code can use
# string_vianame() instead.
my $ord = CORE::hex $1;
- return pack("U", $ord) if $ord <= 255 || ! ((caller 0)[8] & $bytes::hint_bits);
+ return chr utf8::unicode_to_native($ord) if $ord <= 255
+ || ! ((caller 0)[8] & $bytes::hint_bits);
_charnames::carp _charnames::not_legal_use_bytes_msg($arg, chr $ord);
return;
}
@@ -76,7 +77,8 @@ sub string_vianame {
if ($arg =~ /^U\+([0-9a-fA-F]+)$/) {
my $ord = CORE::hex $1;
- return pack("U", $ord) if $ord <= 255 || ! ((caller 0)[8] & $bytes::hint_bits);
+ return chr utf8::unicode_to_native($ord) if $ord <= 255
+ || ! ((caller 0)[8] & $bytes::hint_bits);
_charnames::carp _charnames::not_legal_use_bytes_msg($arg, chr $ord);
return;
diff --git a/Master/tlpkg/tlperl/lib/diagnostics.pm b/Master/tlpkg/tlperl/lib/diagnostics.pm
index a9de570adab..7074be6e2e1 100644
--- a/Master/tlpkg/tlperl/lib/diagnostics.pm
+++ b/Master/tlpkg/tlperl/lib/diagnostics.pm
@@ -72,7 +72,7 @@ trace.
=head2 The I<splain> Program
-While apparently a whole nuther program, I<splain> is actually nothing
+Another program, I<splain> is actually nothing
more than a link to the (executable) F<diagnostics.pm> module, as well as
a link to the F<diagnostics.pod> documentation. The B<-v> flag is like
the C<use diagnostics -verbose> directive.
@@ -186,7 +186,7 @@ use 5.009001;
use Carp;
$Carp::Internal{__PACKAGE__.""}++;
-our $VERSION = '1.37';
+our $VERSION = '1.39';
our $DEBUG;
our $VERBOSE;
our $PRETTY;
@@ -281,7 +281,8 @@ if (eof(POD_DIAG)) {
'sol' => '/', # Forward slash / solidus
'verbar' => '|', # vertical bar
- "Aacute" => "\xC1" # capital A, acute accent
+ # # capital A, acute accent
+ "Aacute" => chr utf8::unicode_to_native(0xC1)
# etc
);
diff --git a/Master/tlpkg/tlperl/lib/encoding/warnings.pm b/Master/tlpkg/tlperl/lib/encoding/warnings.pm
index d75277e2109..e09836d845e 100644
--- a/Master/tlpkg/tlperl/lib/encoding/warnings.pm
+++ b/Master/tlpkg/tlperl/lib/encoding/warnings.pm
@@ -1,5 +1,5 @@
package encoding::warnings;
-$encoding::warnings::VERSION = '0.13';
+$encoding::warnings::VERSION = '0.14';
use strict;
use 5.007;
@@ -32,7 +32,7 @@ thereafter.
use encoding::warnings; # or 'FATAL' to raise fatal exceptions
utf8::encode($a = chr(20000)); # a byte-string (raw bytes)
- $b = chr(20000); # a unicode-string (wide characters)
+ $b = chr(20000); # a unicode-string (wide characters)
# "Bytes implicitly upgraded into wide characters as iso-8859-1"
$c = $a . $b;
@@ -133,9 +133,9 @@ some people:
use encoding 'big5';
my $byte_string = pack("C*", 0xA4, 0x40);
- print length $a; # 2 here.
- $a .= ""; # concatenating with a unicode string...
- print length $a; # 1 here!
+ print length $a; # 2 here.
+ $a .= ""; # concatenating with a unicode string...
+ print length $a; # 1 here!
In other words, do not C<use encoding> unless you are certain that the
program will not deal with any raw, 8-bit binary data at all.
@@ -162,11 +162,11 @@ sub FATAL () { 2 }
sub import {
if ($] >= 5.025003) {
- require Carp;
- Carp::cluck(
- "encoding::warnings is not supported on Perl 5.26.0 and later"
- );
- return;
+ require Carp;
+ Carp::cluck(
+ "encoding::warnings is not supported on Perl 5.26.0 and later"
+ );
+ return;
}
# Install a ${^ENCODING} handler if no other one are already in place.
@@ -185,11 +185,11 @@ sub import {
# Install a warning handler for decode()
my $decoder = bless(
- [
- $ascii,
- $latin1,
- (($fatal eq 'FATAL') ? 'Carp::croak' : 'Carp::carp'),
- ], $class,
+ [
+ $ascii,
+ $latin1,
+ (($fatal eq 'FATAL') ? 'Carp::croak' : 'Carp::carp'),
+ ], $class,
);
no warnings 'deprecated';
diff --git a/Master/tlpkg/tlperl/lib/experimental.pm b/Master/tlpkg/tlperl/lib/experimental.pm
index 2d58dfdf25b..3d89cbd5b11 100644
--- a/Master/tlpkg/tlperl/lib/experimental.pm
+++ b/Master/tlpkg/tlperl/lib/experimental.pm
@@ -1,5 +1,5 @@
package experimental;
-$experimental::VERSION = '0.024';
+$experimental::VERSION = '0.031';
use strict;
use warnings;
use version ();
@@ -8,6 +8,7 @@ BEGIN { eval { require feature } };
use Carp qw/croak carp/;
my %warnings = map { $_ => 1 } grep { /^experimental::/ } keys %warnings::Offsets;
+my %removed_warnings = map { $_ => 1 } grep { /^experimental::/ } keys %warnings::NoOp;
my %features = map { $_ => 1 } $] > 5.015006 ? keys %feature::feature : do {
my @features;
if ($] >= 5.010) {
@@ -18,14 +19,19 @@ my %features = map { $_ => 1 } $] > 5.015006 ? keys %feature::feature : do {
};
my %min_version = (
+ args_array_with_signatures => '5.20.0',
array_base => '5',
autoderef => '5.14.0',
bitwise => '5.22.0',
+ builtin => '5.35.7',
const_attr => '5.22.0',
current_sub => '5.16.0',
declared_refs => '5.26.0',
+ defer => '5.35.4',
evalbytes => '5.16.0',
+ extra_paired_delimiters => '5.35.9',
fc => '5.16.0',
+ for_list => '5.35.5',
isa => '5.31.7',
lexical_topic => '5.10.0',
lexical_subs => '5.18.0',
@@ -38,14 +44,14 @@ my %min_version = (
signatures => '5.20.0',
state => '5.10.0',
switch => '5.10.0',
- try => '5.33.6',
+ try => '5.34.0',
unicode_eval => '5.16.0',
unicode_strings => '5.12.0',
);
my %removed_in_version = (
- array_base => '5.29.4',
- autoderef => '5.23.1',
- lexical_topic => '5.23.4',
+ array_base => '5.30.0',
+ autoderef => '5.24.0',
+ lexical_topic => '5.24.0',
);
$_ = version->new($_) for values %min_version;
@@ -68,16 +74,15 @@ sub _enable {
feature->import($pragma);
_enable(@{ $additional{$pragma} }) if $additional{$pragma};
}
+ elsif ($removed_warnings{"experimental::$pragma"}) {
+ _enable(@{ $additional{$pragma} }) if $additional{$pragma};
+ }
elsif (not exists $min_version{$pragma}) {
croak "Can't enable unknown feature $pragma";
}
elsif ($] < $min_version{$pragma}) {
- my $stable = $min_version{$pragma};
- if ($stable->{version}[1] % 2) {
- $stable = version->new(
- "5.".($stable->{version}[1]+1).'.0'
- );
- }
+ my $stable = $min_version{$pragma}->stringify;
+ $stable =~ s/^ 5\. ([0-9]?[13579]) \. \d+ $/"5." . ($1 + 1) . ".0"/xe;
croak "Need perl $stable or later for feature $pragma";
}
elsif ($] >= ($removed_in_version{$pragma} || 7)) {
@@ -135,12 +140,12 @@ experimental - Experimental features made easy
=head1 VERSION
-version 0.024
+version 0.031
=head1 SYNOPSIS
- use experimental 'lexical_subs', 'smartmatch';
- my sub foo { $_[0] ~~ 1 }
+ use experimental 'lexical_subs', 'signatures';
+ my sub plus_one($value) { $value + 1 }
=head1 DESCRIPTION
@@ -168,18 +173,26 @@ The supported features, documented further below, are:
=over 4
+=item * C<args_array_with_signatures> - allow C<@_> to be used in signatured subs.
+
+This is supported on perl 5.20.0 and above, but is likely to be removed in the future.
+
=item * C<array_base> - allow the use of C<$[> to change the starting index of C<@array>.
-This is supported on all versions of perl.
+This was removed in perl 5.30.0.
=item * C<autoderef> - allow push, each, keys, and other built-ins on references.
-This was added in perl 5.14.0 and removed in perl 5.23.1.
+This was added in perl 5.14.0 and removed in perl 5.24.0.
=item * C<bitwise> - allow the new stringwise bit operators
This was added in perl 5.22.0.
+=item * C<builtin> - allow the use of the functions in the builtin:: namespace
+
+This was added in perl 5.36.0
+
=item * C<const_attr> - allow the :const attribute on subs
This was added in perl 5.22.0.
@@ -188,17 +201,30 @@ This was added in perl 5.22.0.
This was added in perl 5.26.0.
+=item * C<defer> - enables the use of defer blocks
+
+This was added in perl 5.36.0
+
+=item * C<extra_paired_delimiters> - enables the use of more paired string delimiters than the
+traditional four, S<C<< < > >>>, S<C<( )>>, S<C<{ }>>, and S<C<[ ]>>.
+
+This was added in perl 5.36.
+
+=item * C<for_list> - allows iterating over multiple values at a time with C<for>
+
+This was added in perl 5.36.0
+
=item * C<isa> - allow the use of the C<isa> infix operator
This was added in perl 5.32.0.
=item * C<lexical_topic> - allow the use of lexical C<$_> via C<my $_>.
-This was added in perl 5.10.0 and removed in perl 5.23.4.
+This was added in perl 5.10.0 and removed in perl 5.24.0.
=item * C<lexical_subs> - allow the use of lexical subroutines.
-This was added in 5.18.0.
+This was added in 5.18.0, and became non-experimental (and always enabled) in 5.26.0.
=item * C<postderef> - allow the use of postfix dereferencing expressions
@@ -229,10 +255,18 @@ This was added in perl 5.20.0.
This was added in perl 5.10.0, but it should be noted there are significant
incompatibilities between 5.10.0 and 5.10.1.
+The feature is going to be deprecated in perl 5.38.0, and removed in 5.42.0.
+
=item * C<switch> - allow the use of C<~~>, given, and when
This was added in perl 5.10.0.
+The feature is going to be deprecated in perl 5.38.0, and removed in 5.42.0.
+
+=item * C<try> - allow the use of C<try> and C<catch>
+
+This was added in perl 5.34.0
+
=item * C<win32_perlio> - allows the use of the :win32 IO layer.
This was added on perl 5.22.0.
diff --git a/Master/tlpkg/tlperl/lib/feature.pm b/Master/tlpkg/tlperl/lib/feature.pm
index 5ebb4a3f789..44252250687 100644
--- a/Master/tlpkg/tlperl/lib/feature.pm
+++ b/Master/tlpkg/tlperl/lib/feature.pm
@@ -1,31 +1,34 @@
-# -*- buffer-read-only: t -*-
+# -*- mode: Perl; buffer-read-only: t -*-
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
# This file is built by regen/feature.pl.
# Any changes made here will be lost!
package feature;
-
-our $VERSION = '1.64';
+our $VERSION = '1.82';
our %feature = (
- fc => 'feature_fc',
- isa => 'feature_isa',
- say => 'feature_say',
- try => 'feature_try',
- state => 'feature_state',
- switch => 'feature_switch',
- bitwise => 'feature_bitwise',
- indirect => 'feature_indirect',
- evalbytes => 'feature_evalbytes',
- signatures => 'feature_signatures',
- current_sub => 'feature___SUB__',
- refaliasing => 'feature_refaliasing',
- postderef_qq => 'feature_postderef_qq',
- unicode_eval => 'feature_unieval',
- declared_refs => 'feature_myref',
- unicode_strings => 'feature_unicode',
- multidimensional => 'feature_multidimensional',
- bareword_filehandles => 'feature_bareword_filehandles',
+ fc => 'feature_fc',
+ isa => 'feature_isa',
+ say => 'feature_say',
+ try => 'feature_try',
+ class => 'feature_class',
+ defer => 'feature_defer',
+ state => 'feature_state',
+ switch => 'feature_switch',
+ bitwise => 'feature_bitwise',
+ indirect => 'feature_indirect',
+ evalbytes => 'feature_evalbytes',
+ signatures => 'feature_signatures',
+ current_sub => 'feature___SUB__',
+ module_true => 'feature_module_true',
+ refaliasing => 'feature_refaliasing',
+ postderef_qq => 'feature_postderef_qq',
+ unicode_eval => 'feature_unieval',
+ declared_refs => 'feature_myref',
+ unicode_strings => 'feature_unicode',
+ multidimensional => 'feature_multidimensional',
+ bareword_filehandles => 'feature_bareword_filehandles',
+ extra_paired_delimiters => 'feature_more_delims',
);
our %feature_bundle = (
@@ -34,7 +37,9 @@ our %feature_bundle = (
"5.15" => [qw(bareword_filehandles current_sub evalbytes fc indirect multidimensional say state switch unicode_eval unicode_strings)],
"5.23" => [qw(bareword_filehandles current_sub evalbytes fc indirect multidimensional postderef_qq say state switch unicode_eval unicode_strings)],
"5.27" => [qw(bareword_filehandles bitwise current_sub evalbytes fc indirect multidimensional postderef_qq say state switch unicode_eval unicode_strings)],
- "all" => [qw(bareword_filehandles bitwise current_sub declared_refs evalbytes fc indirect isa multidimensional postderef_qq refaliasing say signatures state switch try unicode_eval unicode_strings)],
+ "5.35" => [qw(bareword_filehandles bitwise current_sub evalbytes fc isa postderef_qq say signatures state unicode_eval unicode_strings)],
+ "5.37" => [qw(bitwise current_sub evalbytes fc isa module_true postderef_qq say signatures state unicode_eval unicode_strings)],
+ "all" => [qw(bareword_filehandles bitwise class current_sub declared_refs defer evalbytes extra_paired_delimiters fc indirect isa module_true multidimensional postderef_qq refaliasing say signatures state switch try unicode_eval unicode_strings)],
"default" => [qw(bareword_filehandles indirect multidimensional)],
);
@@ -58,6 +63,8 @@ $feature_bundle{"5.31"} = $feature_bundle{"5.27"};
$feature_bundle{"5.32"} = $feature_bundle{"5.27"};
$feature_bundle{"5.33"} = $feature_bundle{"5.27"};
$feature_bundle{"5.34"} = $feature_bundle{"5.27"};
+$feature_bundle{"5.36"} = $feature_bundle{"5.35"};
+$feature_bundle{"5.38"} = $feature_bundle{"5.37"};
$feature_bundle{"5.9.5"} = $feature_bundle{"5.10"};
my %noops = (
postderef => 1,
@@ -69,7 +76,7 @@ my %removed = (
our $hint_shift = 26;
our $hint_mask = 0x3c000000;
-our @hint_bundles = qw( default 5.10 5.11 5.15 5.23 5.27 );
+our @hint_bundles = qw( default 5.10 5.11 5.15 5.23 5.27 5.35 5.37 );
# This gets set (for now) in $^H as well as in %^H,
# for runtime speed of the uc/lc/ucfirst/lcfirst functions.
@@ -79,6 +86,8 @@ our $hint_uni8bit = 0x00000800;
# TODO:
# - think about versioned features (use feature switch => 2)
+=encoding utf8
+
=head1 NAME
feature - Perl pragma to enable new features
@@ -92,13 +101,13 @@ feature - Perl pragma to enable new features
say "The case-folded version of $x is: " . fc $x;
- # set features to match the :5.10 bundle, which may turn off or on
- # multiple features (see below)
- use feature ':5.10';
+ # set features to match the :5.36 bundle, which may turn off or on
+ # multiple features (see "FEATURE BUNDLES" below)
+ use feature ':5.36';
- # implicitly loads :5.10 feature bundle
- use v5.10;
+ # implicitly loads :5.36 feature bundle
+ use v5.36;
=head1 DESCRIPTION
@@ -140,6 +149,8 @@ disable I<all> features (an unusual request!) use C<no feature ':all'>.
=head1 AVAILABLE FEATURES
+Read L</"FEATURE BUNDLES"> for the feature cheat sheet summary.
+
=head2 The 'say' feature
C<use feature 'say'> tells the compiler to enable the Raku-inspired
@@ -172,6 +183,9 @@ given/when construct.
See L<perlsyn/"Switch Statements"> for details.
This feature is available starting with Perl 5.10.
+It is deprecated starting with Perl 5.38, and using
+C<given>, C<when> or smartmatch will throw a warning.
+It will be removed in Perl 5.42.
=head2 The 'unicode_strings' feature
@@ -209,8 +223,8 @@ couldn't be changed without breaking some things that had come to rely on
them, so the feature can be enabled and disabled. Details are at
L<perlfunc/Under the "unicode_eval" feature>.
-C<evalbytes> is like string C<eval>, but operating on a byte stream that is
-not UTF-8 encoded. Details are at L<perlfunc/evalbytes EXPR>. Without a
+C<evalbytes> is like string C<eval>, but it treats its argument as a byte
+string. Details are at L<perlfunc/evalbytes EXPR>. Without a
S<C<use feature 'evalbytes'>> nor a S<C<use v5.16>> (or higher) declaration in
the current scope, you can still access it by instead writing
C<CORE::evalbytes>.
@@ -262,9 +276,10 @@ regardless of what feature declarations are in scope.
=head2 The 'postderef' and 'postderef_qq' features
The 'postderef_qq' feature extends the applicability of L<postfix
-dereference syntax|perlref/Postfix Dereference Syntax> so that postfix array
-and scalar dereference are available in double-quotish interpolations. For
-example, it makes the following two statements equivalent:
+dereference syntax|perlref/Postfix Dereference Syntax> so that
+postfix array dereference, postfix scalar dereference, and
+postfix array highest index access are available in double-quotish interpolations.
+For example, it makes the following two statements equivalent:
my $s = "[@{ $h->{a} }]";
my $s = "[$h->{a}->@*]";
@@ -288,22 +303,27 @@ regardless of what feature declarations are in scope.
=head2 The 'signatures' feature
-B<WARNING>: This feature is still experimental and the implementation may
-change or be removed in future versions of Perl. For this reason, Perl will
-warn when you use the feature, unless you have explicitly disabled the warning:
-
- no warnings "experimental::signatures";
-
-This enables unpacking of subroutine arguments into lexical variables
-by syntax such as
+This enables syntax for declaring subroutine arguments as lexical variables.
+For example, for this subroutine:
sub foo ($left, $right) {
- return $left + $right;
+ return $left + $right;
}
+Calling C<foo(3, 7)> will assign C<3> into C<$left> and C<7> into C<$right>.
+
See L<perlsub/Signatures> for details.
-This feature is available from Perl 5.20 onwards.
+This feature is available from Perl 5.20 onwards. From Perl 5.20 to 5.34,
+it was classed as experimental, and Perl emitted a warning for its usage,
+except when explicitly disabled:
+
+ no warnings "experimental::signatures";
+
+As of Perl 5.36, use of this feature no longer triggers a warning, though the
+C<experimental::signatures> warning category still exists (for compatibility
+with code that disables it). This feature is now considered stable, and is
+enabled automatically by C<use v5.36> (or higher).
=head2 The 'refaliasing' feature
@@ -350,7 +370,7 @@ warn when you use the feature, unless you have explicitly disabled the warning:
no warnings "experimental::declared_refs";
This allows a reference to a variable to be declared with C<my>, C<state>,
-our C<our>, or localized with C<local>. It is intended mainly for use in
+or C<our>, or localized with C<local>. It is intended mainly for use in
conjunction with the "refaliasing" feature. See L<perlref/Declaring a
Reference to a Variable> for examples.
@@ -358,17 +378,20 @@ This feature is available from Perl 5.26 onwards.
=head2 The 'isa' feature
-B<WARNING>: This feature is still experimental and the implementation may
-change or be removed in future versions of Perl. For this reason, Perl will
-warn when you use the feature, unless you have explicitly disabled the warning:
-
- no warnings "experimental::isa";
-
This allows the use of the C<isa> infix operator, which tests whether the
scalar given by the left operand is an object of the class given by the
right operand. See L<perlop/Class Instance Operator> for more details.
-This feature is available from Perl 5.32 onwards.
+This feature is available from Perl 5.32 onwards. From Perl 5.32 to 5.34,
+it was classed as experimental, and Perl emitted a warning for its usage,
+except when explicitly disabled:
+
+ no warnings "experimental::isa";
+
+As of Perl 5.36, use of this feature no longer triggers a warning (though the
+C<experimental::isa> warning category stilll exists for compatibility with
+code that disables it). This feature is now considered stable, and is enabled
+automatically by C<use v5.36> (or higher).
=head2 The 'indirect' feature
@@ -399,7 +422,7 @@ previous versions, it was simply on all the time.
You can use the L<multidimensional> module on CPAN to disable
multidimensional array emulation for older versions of Perl.
-=head2 The 'bareword_filehandles' feature.
+=head2 The 'bareword_filehandles' feature
This feature enables bareword filehandles for builtin functions
operations, a generally discouraged practice. It is enabled by
@@ -415,7 +438,7 @@ previous versions it was simply on all the time.
You can use the L<bareword::filehandles> module on CPAN to disable
bareword filehandles for older versions of perl.
-=head2 The 'try' feature.
+=head2 The 'try' feature
B<WARNING>: This feature is still experimental and the implementation may
change or be removed in future versions of Perl. For this reason, Perl will
@@ -429,6 +452,445 @@ C<try> are caught by executing the body of the C<catch> block.
For more information, see L<perlsyn/"Try Catch Exception Handling">.
+=head2 The 'defer' feature
+
+B<WARNING>: This feature is still experimental and the implementation may
+change or be removed in future versions of Perl. For this reason, Perl will
+warn when you use the feature, unless you have explicitly disabled the warning:
+
+ no warnings "experimental::defer";
+
+This feature enables the C<defer> block syntax, which allows a block of code
+to be deferred until when the flow of control leaves the block which contained
+it. For more details, see L<perlsyn/defer>.
+
+=head2 The 'extra_paired_delimiters' feature
+
+B<WARNING>: This feature is still experimental and the implementation may
+change or be removed in future versions of Perl. For this reason, Perl will
+warn when you use the feature, unless you have explicitly disabled the warning:
+
+ no warnings "experimental::extra_paired_delimiters";
+
+This feature enables the use of more paired string delimiters than the
+traditional four, S<C<< < > >>>, S<C<( )>>, S<C<{ }>>, and S<C<[ ]>>. When
+this feature is on, for example, you can say S<C<qrE<171>patE<187>>>.
+
+As with any usage of non-ASCII delimiters in a UTF-8-encoded source file, you
+will want to ensure the parser will decode the source code from UTF-8 bytes
+with a declaration such as C<use utf8>.
+
+This feature is available starting in Perl 5.36.
+
+The complete list of accepted paired delimiters as of Unicode 14.0 is:
+
+ ( ) U+0028, U+0029 LEFT/RIGHT PARENTHESIS
+ < > U+003C, U+003E LESS-THAN/GREATER-THAN SIGN
+ [ ] U+005B, U+005D LEFT/RIGHT SQUARE BRACKET
+ { } U+007B, U+007D LEFT/RIGHT CURLY BRACKET
+ « » U+00AB, U+00BB LEFT/RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ » « U+00BB, U+00AB RIGHT/LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ ܆ ܇ U+0706, U+0707 SYRIAC COLON SKEWED LEFT/RIGHT
+ ༺ ༻ U+0F3A, U+0F3B TIBETAN MARK GUG RTAGS GYON, TIBETAN MARK GUG
+ RTAGS GYAS
+ ༼ ༽ U+0F3C, U+0F3D TIBETAN MARK ANG KHANG GYON, TIBETAN MARK ANG
+ KHANG GYAS
+ ᚛ ᚜ U+169B, U+169C OGHAM FEATHER MARK, OGHAM REVERSED FEATHER MARK
+ ‘ ’ U+2018, U+2019 LEFT/RIGHT SINGLE QUOTATION MARK
+ ’ ‘ U+2019, U+2018 RIGHT/LEFT SINGLE QUOTATION MARK
+ “ ” U+201C, U+201D LEFT/RIGHT DOUBLE QUOTATION MARK
+ ” “ U+201D, U+201C RIGHT/LEFT DOUBLE QUOTATION MARK
+ ‵ ′ U+2035, U+2032 REVERSED PRIME, PRIME
+ ‶ ″ U+2036, U+2033 REVERSED DOUBLE PRIME, DOUBLE PRIME
+ ‷ ‴ U+2037, U+2034 REVERSED TRIPLE PRIME, TRIPLE PRIME
+ ‹ › U+2039, U+203A SINGLE LEFT/RIGHT-POINTING ANGLE QUOTATION MARK
+ › ‹ U+203A, U+2039 SINGLE RIGHT/LEFT-POINTING ANGLE QUOTATION MARK
+ ⁅ ⁆ U+2045, U+2046 LEFT/RIGHT SQUARE BRACKET WITH QUILL
+ ⁍ ⁌ U+204D, U+204C BLACK RIGHT/LEFTWARDS BULLET
+ ⁽ ⁾ U+207D, U+207E SUPERSCRIPT LEFT/RIGHT PARENTHESIS
+ ₍ ₎ U+208D, U+208E SUBSCRIPT LEFT/RIGHT PARENTHESIS
+ → ← U+2192, U+2190 RIGHT/LEFTWARDS ARROW
+ ↛ ↚ U+219B, U+219A RIGHT/LEFTWARDS ARROW WITH STROKE
+ ↝ ↜ U+219D, U+219C RIGHT/LEFTWARDS WAVE ARROW
+ ↠ ↞ U+21A0, U+219E RIGHT/LEFTWARDS TWO HEADED ARROW
+ ↣ ↢ U+21A3, U+21A2 RIGHT/LEFTWARDS ARROW WITH TAIL
+ ↦ ↤ U+21A6, U+21A4 RIGHT/LEFTWARDS ARROW FROM BAR
+ ↪ ↩ U+21AA, U+21A9 RIGHT/LEFTWARDS ARROW WITH HOOK
+ ↬ ↫ U+21AC, U+21AB RIGHT/LEFTWARDS ARROW WITH LOOP
+ ↱ ↰ U+21B1, U+21B0 UPWARDS ARROW WITH TIP RIGHT/LEFTWARDS
+ ↳ ↲ U+21B3, U+21B2 DOWNWARDS ARROW WITH TIP RIGHT/LEFTWARDS
+ ⇀ ↼ U+21C0, U+21BC RIGHT/LEFTWARDS HARPOON WITH BARB UPWARDS
+ ⇁ ↽ U+21C1, U+21BD RIGHT/LEFTWARDS HARPOON WITH BARB DOWNWARDS
+ ⇉ ⇇ U+21C9, U+21C7 RIGHT/LEFTWARDS PAIRED ARROWS
+ ⇏ ⇍ U+21CF, U+21CD RIGHT/LEFTWARDS DOUBLE ARROW WITH STROKE
+ ⇒ ⇐ U+21D2, U+21D0 RIGHT/LEFTWARDS DOUBLE ARROW
+ ⇛ ⇚ U+21DB, U+21DA RIGHT/LEFTWARDS TRIPLE ARROW
+ ⇝ ⇜ U+21DD, U+21DC RIGHT/LEFTWARDS SQUIGGLE ARROW
+ ⇢ ⇠ U+21E2, U+21E0 RIGHT/LEFTWARDS DASHED ARROW
+ ⇥ ⇤ U+21E5, U+21E4 RIGHT/LEFTWARDS ARROW TO BAR
+ ⇨ ⇦ U+21E8, U+21E6 RIGHT/LEFTWARDS WHITE ARROW
+ ⇴ ⬰ U+21F4, U+2B30 RIGHT/LEFT ARROW WITH SMALL CIRCLE
+ ⇶ ⬱ U+21F6, U+2B31 THREE RIGHT/LEFTWARDS ARROWS
+ ⇸ ⇷ U+21F8, U+21F7 RIGHT/LEFTWARDS ARROW WITH VERTICAL STROKE
+ ⇻ ⇺ U+21FB, U+21FA RIGHT/LEFTWARDS ARROW WITH DOUBLE VERTICAL
+ STROKE
+ ⇾ ⇽ U+21FE, U+21FD RIGHT/LEFTWARDS OPEN-HEADED ARROW
+ ∈ ∋ U+2208, U+220B ELEMENT OF, CONTAINS AS MEMBER
+ ∉ ∌ U+2209, U+220C NOT AN ELEMENT OF, DOES NOT CONTAIN AS MEMBER
+ ∊ ∍ U+220A, U+220D SMALL ELEMENT OF, SMALL CONTAINS AS MEMBER
+ ≤ ≥ U+2264, U+2265 LESS-THAN/GREATER-THAN OR EQUAL TO
+ ≦ ≧ U+2266, U+2267 LESS-THAN/GREATER-THAN OVER EQUAL TO
+ ≨ ≩ U+2268, U+2269 LESS-THAN/GREATER-THAN BUT NOT EQUAL TO
+ ≪ ≫ U+226A, U+226B MUCH LESS-THAN/GREATER-THAN
+ ≮ ≯ U+226E, U+226F NOT LESS-THAN/GREATER-THAN
+ ≰ ≱ U+2270, U+2271 NEITHER LESS-THAN/GREATER-THAN NOR EQUAL TO
+ ≲ ≳ U+2272, U+2273 LESS-THAN/GREATER-THAN OR EQUIVALENT TO
+ ≴ ≵ U+2274, U+2275 NEITHER LESS-THAN/GREATER-THAN NOR EQUIVALENT TO
+ ≺ ≻ U+227A, U+227B PRECEDES/SUCCEEDS
+ ≼ ≽ U+227C, U+227D PRECEDES/SUCCEEDS OR EQUAL TO
+ ≾ ≿ U+227E, U+227F PRECEDES/SUCCEEDS OR EQUIVALENT TO
+ ⊀ ⊁ U+2280, U+2281 DOES NOT PRECEDE/SUCCEED
+ ⊂ ⊃ U+2282, U+2283 SUBSET/SUPERSET OF
+ ⊄ ⊅ U+2284, U+2285 NOT A SUBSET/SUPERSET OF
+ ⊆ ⊇ U+2286, U+2287 SUBSET/SUPERSET OF OR EQUAL TO
+ ⊈ ⊉ U+2288, U+2289 NEITHER A SUBSET/SUPERSET OF NOR EQUAL TO
+ ⊊ ⊋ U+228A, U+228B SUBSET/SUPERSET OF WITH NOT EQUAL TO
+ ⊣ ⊢ U+22A3, U+22A2 LEFT/RIGHT TACK
+ ⊦ ⫞ U+22A6, U+2ADE ASSERTION, SHORT LEFT TACK
+ ⊨ ⫤ U+22A8, U+2AE4 TRUE, VERTICAL BAR DOUBLE LEFT TURNSTILE
+ ⊩ ⫣ U+22A9, U+2AE3 FORCES, DOUBLE VERTICAL BAR LEFT TURNSTILE
+ ⊰ ⊱ U+22B0, U+22B1 PRECEDES/SUCCEEDS UNDER RELATION
+ ⋐ ⋑ U+22D0, U+22D1 DOUBLE SUBSET/SUPERSET
+ ⋖ ⋗ U+22D6, U+22D7 LESS-THAN/GREATER-THAN WITH DOT
+ ⋘ ⋙ U+22D8, U+22D9 VERY MUCH LESS-THAN/GREATER-THAN
+ ⋜ ⋝ U+22DC, U+22DD EQUAL TO OR LESS-THAN/GREATER-THAN
+ ⋞ ⋟ U+22DE, U+22DF EQUAL TO OR PRECEDES/SUCCEEDS
+ ⋠ ⋡ U+22E0, U+22E1 DOES NOT PRECEDE/SUCCEED OR EQUAL
+ ⋦ ⋧ U+22E6, U+22E7 LESS-THAN/GREATER-THAN BUT NOT EQUIVALENT TO
+ ⋨ ⋩ U+22E8, U+22E9 PRECEDES/SUCCEEDS BUT NOT EQUIVALENT TO
+ ⋲ ⋺ U+22F2, U+22FA ELEMENT OF/CONTAINS WITH LONG HORIZONTAL STROKE
+ ⋳ ⋻ U+22F3, U+22FB ELEMENT OF/CONTAINS WITH VERTICAL BAR AT END OF
+ HORIZONTAL STROKE
+ ⋴ ⋼ U+22F4, U+22FC SMALL ELEMENT OF/CONTAINS WITH VERTICAL BAR AT
+ END OF HORIZONTAL STROKE
+ ⋶ ⋽ U+22F6, U+22FD ELEMENT OF/CONTAINS WITH OVERBAR
+ ⋷ ⋾ U+22F7, U+22FE SMALL ELEMENT OF/CONTAINS WITH OVERBAR
+ ⌈ ⌉ U+2308, U+2309 LEFT/RIGHT CEILING
+ ⌊ ⌋ U+230A, U+230B LEFT/RIGHT FLOOR
+ ⌦ ⌫ U+2326, U+232B ERASE TO THE RIGHT/LEFT
+ 〈 〉 U+2329, U+232A LEFT/RIGHT-POINTING ANGLE BRACKET
+ ⍈ ⍇ U+2348, U+2347 APL FUNCTIONAL SYMBOL QUAD RIGHT/LEFTWARDS ARROW
+ ⏩ ⏪ U+23E9, U+23EA BLACK RIGHT/LEFT-POINTING DOUBLE TRIANGLE
+ ⏭ ⏮ U+23ED, U+23EE BLACK RIGHT/LEFT-POINTING DOUBLE TRIANGLE WITH
+ VERTICAL BAR
+ ☛ ☚ U+261B, U+261A BLACK RIGHT/LEFT POINTING INDEX
+ ☞ ☜ U+261E, U+261C WHITE RIGHT/LEFT POINTING INDEX
+ ⚞ ⚟ U+269E, U+269F THREE LINES CONVERGING RIGHT/LEFT
+ ❨ ❩ U+2768, U+2769 MEDIUM LEFT/RIGHT PARENTHESIS ORNAMENT
+ ❪ ❫ U+276A, U+276B MEDIUM FLATTENED LEFT/RIGHT PARENTHESIS ORNAMENT
+ ❬ ❭ U+276C, U+276D MEDIUM LEFT/RIGHT-POINTING ANGLE BRACKET
+ ORNAMENT
+ ❮ ❯ U+276E, U+276F HEAVY LEFT/RIGHT-POINTING ANGLE QUOTATION MARK
+ ORNAMENT
+ ❰ ❱ U+2770, U+2771 HEAVY LEFT/RIGHT-POINTING ANGLE BRACKET ORNAMENT
+ ❲ ❳ U+2772, U+2773 LIGHT LEFT/RIGHT TORTOISE SHELL BRACKET ORNAMENT
+ ❴ ❵ U+2774, U+2775 MEDIUM LEFT/RIGHT CURLY BRACKET ORNAMENT
+ ⟃ ⟄ U+27C3, U+27C4 OPEN SUBSET/SUPERSET
+ ⟅ ⟆ U+27C5, U+27C6 LEFT/RIGHT S-SHAPED BAG DELIMITER
+ ⟈ ⟉ U+27C8, U+27C9 REVERSE SOLIDUS PRECEDING SUBSET, SUPERSET
+ PRECEDING SOLIDUS
+ ⟞ ⟝ U+27DE, U+27DD LONG LEFT/RIGHT TACK
+ ⟦ ⟧ U+27E6, U+27E7 MATHEMATICAL LEFT/RIGHT WHITE SQUARE BRACKET
+ ⟨ ⟩ U+27E8, U+27E9 MATHEMATICAL LEFT/RIGHT ANGLE BRACKET
+ ⟪ ⟫ U+27EA, U+27EB MATHEMATICAL LEFT/RIGHT DOUBLE ANGLE BRACKET
+ ⟬ ⟭ U+27EC, U+27ED MATHEMATICAL LEFT/RIGHT WHITE TORTOISE SHELL
+ BRACKET
+ ⟮ ⟯ U+27EE, U+27EF MATHEMATICAL LEFT/RIGHT FLATTENED PARENTHESIS
+ ⟴ ⬲ U+27F4, U+2B32 RIGHT/LEFT ARROW WITH CIRCLED PLUS
+ ⟶ ⟵ U+27F6, U+27F5 LONG RIGHT/LEFTWARDS ARROW
+ ⟹ ⟸ U+27F9, U+27F8 LONG RIGHT/LEFTWARDS DOUBLE ARROW
+ ⟼ ⟻ U+27FC, U+27FB LONG RIGHT/LEFTWARDS ARROW FROM BAR
+ ⟾ ⟽ U+27FE, U+27FD LONG RIGHT/LEFTWARDS DOUBLE ARROW FROM BAR
+ ⟿ ⬳ U+27FF, U+2B33 LONG RIGHT/LEFTWARDS SQUIGGLE ARROW
+ ⤀ ⬴ U+2900, U+2B34 RIGHT/LEFTWARDS TWO-HEADED ARROW WITH VERTICAL
+ STROKE
+ ⤁ ⬵ U+2901, U+2B35 RIGHT/LEFTWARDS TWO-HEADED ARROW WITH DOUBLE
+ VERTICAL STROKE
+ ⤃ ⤂ U+2903, U+2902 RIGHT/LEFTWARDS DOUBLE ARROW WITH VERTICAL
+ STROKE
+ ⤅ ⬶ U+2905, U+2B36 RIGHT/LEFTWARDS TWO-HEADED ARROW FROM BAR
+ ⤇ ⤆ U+2907, U+2906 RIGHT/LEFTWARDS DOUBLE ARROW FROM BAR
+ ⤍ ⤌ U+290D, U+290C RIGHT/LEFTWARDS DOUBLE DASH ARROW
+ ⤏ ⤎ U+290F, U+290E RIGHT/LEFTWARDS TRIPLE DASH ARROW
+ ⤐ ⬷ U+2910, U+2B37 RIGHT/LEFTWARDS TWO-HEADED TRIPLE DASH ARROW
+ ⤑ ⬸ U+2911, U+2B38 RIGHT/LEFTWARDS ARROW WITH DOTTED STEM
+ ⤔ ⬹ U+2914, U+2B39 RIGHT/LEFTWARDS ARROW WITH TAIL WITH VERTICAL
+ STROKE
+ ⤕ ⬺ U+2915, U+2B3A RIGHT/LEFTWARDS ARROW WITH TAIL WITH DOUBLE
+ VERTICAL STROKE
+ ⤖ ⬻ U+2916, U+2B3B RIGHT/LEFTWARDS TWO-HEADED ARROW WITH TAIL
+ ⤗ ⬼ U+2917, U+2B3C RIGHT/LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH
+ VERTICAL STROKE
+ ⤘ ⬽ U+2918, U+2B3D RIGHT/LEFTWARDS TWO-HEADED ARROW WITH TAIL WITH
+ DOUBLE VERTICAL STROKE
+ ⤚ ⤙ U+291A, U+2919 RIGHT/LEFTWARDS ARROW-TAIL
+ ⤜ ⤛ U+291C, U+291B RIGHT/LEFTWARDS DOUBLE ARROW-TAIL
+ ⤞ ⤝ U+291E, U+291D RIGHT/LEFTWARDS ARROW TO BLACK DIAMOND
+ ⤠ ⤟ U+2920, U+291F RIGHT/LEFTWARDS ARROW FROM BAR TO BLACK DIAMOND
+ ⤳ ⬿ U+2933, U+2B3F WAVE ARROW POINTING DIRECTLY RIGHT/LEFT
+ ⤷ ⤶ U+2937, U+2936 ARROW POINTING DOWNWARDS THEN CURVING RIGHT/
+ LEFTWARDS
+ ⥅ ⥆ U+2945, U+2946 RIGHT/LEFTWARDS ARROW WITH PLUS BELOW
+ ⥇ ⬾ U+2947, U+2B3E RIGHT/LEFTWARDS ARROW THROUGH X
+ ⥓ ⥒ U+2953, U+2952 RIGHT/LEFTWARDS HARPOON WITH BARB UP TO BAR
+ ⥗ ⥖ U+2957, U+2956 RIGHT/LEFTWARDS HARPOON WITH BARB DOWN TO BAR
+ ⥛ ⥚ U+295B, U+295A RIGHT/LEFTWARDS HARPOON WITH BARB UP FROM BAR
+ ⥟ ⥞ U+295F, U+295E RIGHT/LEFTWARDS HARPOON WITH BARB DOWN FROM BAR
+ ⥤ ⥢ U+2964, U+2962 RIGHT/LEFTWARDS HARPOON WITH BARB UP ABOVE
+ RIGHT/LEFTWARDS HARPOON WITH BARB DOWN
+ ⥬ ⥪ U+296C, U+296A RIGHT/LEFTWARDS HARPOON WITH BARB UP ABOVE LONG
+ DASH
+ ⥭ ⥫ U+296D, U+296B RIGHT/LEFTWARDS HARPOON WITH BARB DOWN BELOW
+ LONG DASH
+ ⥱ ⭀ U+2971, U+2B40 EQUALS SIGN ABOVE RIGHT/LEFTWARDS ARROW
+ ⥲ ⭁ U+2972, U+2B41 TILDE OPERATOR ABOVE RIGHTWARDS ARROW, REVERSE
+ TILDE OPERATOR ABOVE LEFTWARDS ARROW
+ ⥴ ⭋ U+2974, U+2B4B RIGHTWARDS ARROW ABOVE TILDE OPERATOR,
+ LEFTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+ ⥵ ⭂ U+2975, U+2B42 RIGHTWARDS ARROW ABOVE ALMOST EQUAL TO,
+ LEFTWARDS ARROW ABOVE REVERSE ALMOST EQUAL TO
+ ⥹ ⥻ U+2979, U+297B SUBSET/SUPERSET ABOVE RIGHT/LEFTWARDS ARROW
+ ⦃ ⦄ U+2983, U+2984 LEFT/RIGHT WHITE CURLY BRACKET
+ ⦅ ⦆ U+2985, U+2986 LEFT/RIGHT WHITE PARENTHESIS
+ ⦇ ⦈ U+2987, U+2988 Z NOTATION LEFT/RIGHT IMAGE BRACKET
+ ⦉ ⦊ U+2989, U+298A Z NOTATION LEFT/RIGHT BINDING BRACKET
+ ⦋ ⦌ U+298B, U+298C LEFT/RIGHT SQUARE BRACKET WITH UNDERBAR
+ ⦍ ⦐ U+298D, U+2990 LEFT/RIGHT SQUARE BRACKET WITH TICK IN TOP
+ CORNER
+ ⦏ ⦎ U+298F, U+298E LEFT/RIGHT SQUARE BRACKET WITH TICK IN BOTTOM
+ CORNER
+ ⦑ ⦒ U+2991, U+2992 LEFT/RIGHT ANGLE BRACKET WITH DOT
+ ⦓ ⦔ U+2993, U+2994 LEFT/RIGHT ARC LESS-THAN/GREATER-THAN BRACKET
+ ⦕ ⦖ U+2995, U+2996 DOUBLE LEFT/RIGHT ARC GREATER-THAN/LESS-THAN
+ BRACKET
+ ⦗ ⦘ U+2997, U+2998 LEFT/RIGHT BLACK TORTOISE SHELL BRACKET
+ ⦨ ⦩ U+29A8, U+29A9 MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW
+ POINTING UP AND RIGHT/LEFT
+ ⦪ ⦫ U+29AA, U+29AB MEASURED ANGLE WITH OPEN ARM ENDING IN ARROW
+ POINTING DOWN AND RIGHT/LEFT
+ ⦳ ⦴ U+29B3, U+29B4 EMPTY SET WITH RIGHT/LEFT ARROW ABOVE
+ ⧀ ⧁ U+29C0, U+29C1 CIRCLED LESS-THAN/GREATER-THAN
+ ⧘ ⧙ U+29D8, U+29D9 LEFT/RIGHT WIGGLY FENCE
+ ⧚ ⧛ U+29DA, U+29DB LEFT/RIGHT DOUBLE WIGGLY FENCE
+ ⧼ ⧽ U+29FC, U+29FD LEFT/RIGHT-POINTING CURVED ANGLE BRACKET
+ ⩹ ⩺ U+2A79, U+2A7A LESS-THAN/GREATER-THAN WITH CIRCLE INSIDE
+ ⩻ ⩼ U+2A7B, U+2A7C LESS-THAN/GREATER-THAN WITH QUESTION MARK ABOVE
+ ⩽ ⩾ U+2A7D, U+2A7E LESS-THAN/GREATER-THAN OR SLANTED EQUAL TO
+ ⩿ ⪀ U+2A7F, U+2A80 LESS-THAN/GREATER-THAN OR SLANTED EQUAL TO WITH
+ DOT INSIDE
+ ⪁ ⪂ U+2A81, U+2A82 LESS-THAN/GREATER-THAN OR SLANTED EQUAL TO WITH
+ DOT ABOVE
+ ⪃ ⪄ U+2A83, U+2A84 LESS-THAN/GREATER-THAN OR SLANTED EQUAL TO WITH
+ DOT ABOVE RIGHT/LEFT
+ ⪅ ⪆ U+2A85, U+2A86 LESS-THAN/GREATER-THAN OR APPROXIMATE
+ ⪇ ⪈ U+2A87, U+2A88 LESS-THAN/GREATER-THAN AND SINGLE-LINE NOT
+ EQUAL TO
+ ⪉ ⪊ U+2A89, U+2A8A LESS-THAN/GREATER-THAN AND NOT APPROXIMATE
+ ⪍ ⪎ U+2A8D, U+2A8E LESS-THAN/GREATER-THAN ABOVE SIMILAR OR EQUAL
+ ⪕ ⪖ U+2A95, U+2A96 SLANTED EQUAL TO OR LESS-THAN/GREATER-THAN
+ ⪗ ⪘ U+2A97, U+2A98 SLANTED EQUAL TO OR LESS-THAN/GREATER-THAN WITH
+ DOT INSIDE
+ ⪙ ⪚ U+2A99, U+2A9A DOUBLE-LINE EQUAL TO OR LESS-THAN/GREATER-THAN
+ ⪛ ⪜ U+2A9B, U+2A9C DOUBLE-LINE SLANTED EQUAL TO OR LESS-THAN/
+ GREATER-THAN
+ ⪝ ⪞ U+2A9D, U+2A9E SIMILAR OR LESS-THAN/GREATER-THAN
+ ⪟ ⪠ U+2A9F, U+2AA0 SIMILAR ABOVE LESS-THAN/GREATER-THAN ABOVE
+ EQUALS SIGN
+ ⪡ ⪢ U+2AA1, U+2AA2 DOUBLE NESTED LESS-THAN/GREATER-THAN
+ ⪦ ⪧ U+2AA6, U+2AA7 LESS-THAN/GREATER-THAN CLOSED BY CURVE
+ ⪨ ⪩ U+2AA8, U+2AA9 LESS-THAN/GREATER-THAN CLOSED BY CURVE ABOVE
+ SLANTED EQUAL
+ ⪪ ⪫ U+2AAA, U+2AAB SMALLER THAN/LARGER THAN
+ ⪬ ⪭ U+2AAC, U+2AAD SMALLER THAN/LARGER THAN OR EQUAL TO
+ ⪯ ⪰ U+2AAF, U+2AB0 PRECEDES/SUCCEEDS ABOVE SINGLE-LINE EQUALS SIGN
+ ⪱ ⪲ U+2AB1, U+2AB2 PRECEDES/SUCCEEDS ABOVE SINGLE-LINE NOT EQUAL TO
+ ⪳ ⪴ U+2AB3, U+2AB4 PRECEDES/SUCCEEDS ABOVE EQUALS SIGN
+ ⪵ ⪶ U+2AB5, U+2AB6 PRECEDES/SUCCEEDS ABOVE NOT EQUAL TO
+ ⪷ ⪸ U+2AB7, U+2AB8 PRECEDES/SUCCEEDS ABOVE ALMOST EQUAL TO
+ ⪹ ⪺ U+2AB9, U+2ABA PRECEDES/SUCCEEDS ABOVE NOT ALMOST EQUAL TO
+ ⪻ ⪼ U+2ABB, U+2ABC DOUBLE PRECEDES/SUCCEEDS
+ ⪽ ⪾ U+2ABD, U+2ABE SUBSET/SUPERSET WITH DOT
+ ⪿ ⫀ U+2ABF, U+2AC0 SUBSET/SUPERSET WITH PLUS SIGN BELOW
+ ⫁ ⫂ U+2AC1, U+2AC2 SUBSET/SUPERSET WITH MULTIPLICATION SIGN BELOW
+ ⫃ ⫄ U+2AC3, U+2AC4 SUBSET/SUPERSET OF OR EQUAL TO WITH DOT ABOVE
+ ⫅ ⫆ U+2AC5, U+2AC6 SUBSET/SUPERSET OF ABOVE EQUALS SIGN
+ ⫇ ⫈ U+2AC7, U+2AC8 SUBSET/SUPERSET OF ABOVE TILDE OPERATOR
+ ⫉ ⫊ U+2AC9, U+2ACA SUBSET/SUPERSET OF ABOVE ALMOST EQUAL TO
+ ⫋ ⫌ U+2ACB, U+2ACC SUBSET/SUPERSET OF ABOVE NOT EQUAL TO
+ ⫏ ⫐ U+2ACF, U+2AD0 CLOSED SUBSET/SUPERSET
+ ⫑ ⫒ U+2AD1, U+2AD2 CLOSED SUBSET/SUPERSET OR EQUAL TO
+ ⫕ ⫖ U+2AD5, U+2AD6 SUBSET/SUPERSET ABOVE SUBSET/SUPERSET
+ ⫥ ⊫ U+2AE5, U+22AB DOUBLE VERTICAL BAR DOUBLE LEFT/RIGHT TURNSTILE
+ ⫷ ⫸ U+2AF7, U+2AF8 TRIPLE NESTED LESS-THAN/GREATER-THAN
+ ⫹ ⫺ U+2AF9, U+2AFA DOUBLE-LINE SLANTED LESS-THAN/GREATER-THAN OR
+ EQUAL TO
+ ⭆ ⭅ U+2B46, U+2B45 RIGHT/LEFTWARDS QUADRUPLE ARROW
+ ⭇ ⭉ U+2B47, U+2B49 REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW,
+ TILDE OPERATOR ABOVE LEFTWARDS ARROW
+ ⭈ ⭊ U+2B48, U+2B4A RIGHTWARDS ARROW ABOVE REVERSE ALMOST EQUAL
+ TO, LEFTWARDS ARROW ABOVE ALMOST EQUAL TO
+ ⭌ ⥳ U+2B4C, U+2973 RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR,
+ LEFTWARDS ARROW ABOVE TILDE OPERATOR
+ ⭢ ⭠ U+2B62, U+2B60 RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW
+ ⭬ ⭪ U+2B6C, U+2B6A RIGHT/LEFTWARDS TRIANGLE-HEADED DASHED ARROW
+ ⭲ ⭰ U+2B72, U+2B70 RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW TO BAR
+ ⭼ ⭺ U+2B7C, U+2B7A RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW WITH
+ DOUBLE VERTICAL STROKE
+ ⮆ ⮄ U+2B86, U+2B84 RIGHT/LEFTWARDS TRIANGLE-HEADED PAIRED ARROWS
+ ⮊ ⮈ U+2B8A, U+2B88 RIGHT/LEFTWARDS BLACK CIRCLED WHITE ARROW
+ ⮕ ⬅ U+2B95, U+2B05 RIGHT/LEFTWARDS BLACK ARROW
+ ⮚ ⮘ U+2B9A, U+2B98 THREE-D TOP-LIGHTED RIGHT/LEFTWARDS EQUILATERAL
+ ARROWHEAD
+ ⮞ ⮜ U+2B9E, U+2B9C BLACK RIGHT/LEFTWARDS EQUILATERAL ARROWHEAD
+ ⮡ ⮠ U+2BA1, U+2BA0 DOWNWARDS TRIANGLE-HEADED ARROW WITH LONG TIP
+ RIGHT/LEFTWARDS
+ ⮣ ⮢ U+2BA3, U+2BA2 UPWARDS TRIANGLE-HEADED ARROW WITH LONG TIP
+ RIGHT/LEFTWARDS
+ ⮩ ⮨ U+2BA9, U+2BA8 BLACK CURVED DOWNWARDS AND RIGHT/LEFTWARDS ARROW
+ ⮫ ⮪ U+2BAB, U+2BAA BLACK CURVED UPWARDS AND RIGHT/LEFTWARDS ARROW
+ ⮱ ⮰ U+2BB1, U+2BB0 RIBBON ARROW DOWN RIGHT/LEFT
+ ⮳ ⮲ U+2BB3, U+2BB2 RIBBON ARROW UP RIGHT/LEFT
+ ⯮ ⯬ U+2BEE, U+2BEC RIGHT/LEFTWARDS TWO-HEADED ARROW WITH TRIANGLE
+ ARROWHEADS
+ ⸂ ⸃ U+2E02, U+2E03 LEFT/RIGHT SUBSTITUTION BRACKET
+ ⸃ ⸂ U+2E03, U+2E02 RIGHT/LEFT SUBSTITUTION BRACKET
+ ⸄ ⸅ U+2E04, U+2E05 LEFT/RIGHT DOTTED SUBSTITUTION BRACKET
+ ⸅ ⸄ U+2E05, U+2E04 RIGHT/LEFT DOTTED SUBSTITUTION BRACKET
+ ⸉ ⸊ U+2E09, U+2E0A LEFT/RIGHT TRANSPOSITION BRACKET
+ ⸊ ⸉ U+2E0A, U+2E09 RIGHT/LEFT TRANSPOSITION BRACKET
+ ⸌ ⸍ U+2E0C, U+2E0D LEFT/RIGHT RAISED OMISSION BRACKET
+ ⸍ ⸌ U+2E0D, U+2E0C RIGHT/LEFT RAISED OMISSION BRACKET
+ ⸑ ⸐ U+2E11, U+2E10 REVERSED FORKED PARAGRAPHOS, FORKED PARAGRAPHOS
+ ⸜ ⸝ U+2E1C, U+2E1D LEFT/RIGHT LOW PARAPHRASE BRACKET
+ ⸝ ⸜ U+2E1D, U+2E1C RIGHT/LEFT LOW PARAPHRASE BRACKET
+ ⸠ ⸡ U+2E20, U+2E21 LEFT/RIGHT VERTICAL BAR WITH QUILL
+ ⸡ ⸠ U+2E21, U+2E20 RIGHT/LEFT VERTICAL BAR WITH QUILL
+ ⸢ ⸣ U+2E22, U+2E23 TOP LEFT/RIGHT HALF BRACKET
+ ⸤ ⸥ U+2E24, U+2E25 BOTTOM LEFT/RIGHT HALF BRACKET
+ ⸦ ⸧ U+2E26, U+2E27 LEFT/RIGHT SIDEWAYS U BRACKET
+ ⸨ ⸩ U+2E28, U+2E29 LEFT/RIGHT DOUBLE PARENTHESIS
+ ⸶ ⸷ U+2E36, U+2E37 DAGGER WITH LEFT/RIGHT GUARD
+ ⹂ „ U+2E42, U+201E DOUBLE LOW-REVERSED-9 QUOTATION MARK, DOUBLE
+ LOW-9 QUOTATION MARK
+ ⹕ ⹖ U+2E55, U+2E56 LEFT/RIGHT SQUARE BRACKET WITH STROKE
+ ⹗ ⹘ U+2E57, U+2E58 LEFT/RIGHT SQUARE BRACKET WITH DOUBLE STROKE
+ ⹙ ⹚ U+2E59, U+2E5A TOP HALF LEFT/RIGHT PARENTHESIS
+ ⹛ ⹜ U+2E5B, U+2E5C BOTTOM HALF LEFT/RIGHT PARENTHESIS
+ 〈 〉 U+3008, U+3009 LEFT/RIGHT ANGLE BRACKET
+ 《 》 U+300A, U+300B LEFT/RIGHT DOUBLE ANGLE BRACKET
+ 「 」 U+300C, U+300D LEFT/RIGHT CORNER BRACKET
+ 『 』 U+300E, U+300F LEFT/RIGHT WHITE CORNER BRACKET
+ 【 】 U+3010, U+3011 LEFT/RIGHT BLACK LENTICULAR BRACKET
+ 〔 〕 U+3014, U+3015 LEFT/RIGHT TORTOISE SHELL BRACKET
+ 〖 〗 U+3016, U+3017 LEFT/RIGHT WHITE LENTICULAR BRACKET
+ 〘 〙 U+3018, U+3019 LEFT/RIGHT WHITE TORTOISE SHELL BRACKET
+ 〚 〛 U+301A, U+301B LEFT/RIGHT WHITE SQUARE BRACKET
+ 〝 〞 U+301D, U+301E REVERSED DOUBLE PRIME QUOTATION MARK, DOUBLE
+ PRIME QUOTATION MARK
+ ꧁ ꧂ U+A9C1, U+A9C2 JAVANESE LEFT/RIGHT RERENGGAN
+ ﴾ ﴿ U+FD3E, U+FD3F ORNATE LEFT/RIGHT PARENTHESIS
+ ﹙ ﹚ U+FE59, U+FE5A SMALL LEFT/RIGHT PARENTHESIS
+ ﹛ ﹜ U+FE5B, U+FE5C SMALL LEFT/RIGHT CURLY BRACKET
+ ﹝ ﹞ U+FE5D, U+FE5E SMALL LEFT/RIGHT TORTOISE SHELL BRACKET
+ ﹤ ﹥ U+FE64, U+FE65 SMALL LESS-THAN/GREATER-THAN SIGN
+ ( ) U+FF08, U+FF09 FULLWIDTH LEFT/RIGHT PARENTHESIS
+ < > U+FF1C, U+FF1E FULLWIDTH LESS-THAN/GREATER-THAN SIGN
+ [ ] U+FF3B, U+FF3D FULLWIDTH LEFT/RIGHT SQUARE BRACKET
+ { } U+FF5B, U+FF5D FULLWIDTH LEFT/RIGHT CURLY BRACKET
+ ⦅ ⦆ U+FF5F, U+FF60 FULLWIDTH LEFT/RIGHT WHITE PARENTHESIS
+ 「 」 U+FF62, U+FF63 HALFWIDTH LEFT/RIGHT CORNER BRACKET
+ → ← U+FFEB, U+FFE9 HALFWIDTH RIGHT/LEFTWARDS ARROW
+ 𝄃 𝄂 U+1D103, U+1D102 MUSICAL SYMBOL REVERSE FINAL BARLINE, MUSICAL
+ SYMBOL FINAL BARLINE
+ 𝄆 𝄇 U+1D106, U+1D107 MUSICAL SYMBOL LEFT/RIGHT REPEAT SIGN
+ 👉 👈 U+1F449, U+1F448 WHITE RIGHT/LEFT POINTING BACKHAND INDEX
+ 🔈 🕨 U+1F508, U+1F568 SPEAKER, RIGHT SPEAKER
+ 🔉 🕩 U+1F509, U+1F569 SPEAKER WITH ONE SOUND WAVE, RIGHT SPEAKER WITH
+ ONE SOUND WAVE
+ 🔊 🕪 U+1F50A, U+1F56A SPEAKER WITH THREE SOUND WAVES, RIGHT SPEAKER
+ WITH THREE SOUND WAVES
+ 🕻 🕽 U+1F57B, U+1F57D LEFT/RIGHT HAND TELEPHONE RECEIVER
+ 🖙 🖘 U+1F599, U+1F598 SIDEWAYS WHITE RIGHT/LEFT POINTING INDEX
+ 🖛 🖚 U+1F59B, U+1F59A SIDEWAYS BLACK RIGHT/LEFT POINTING INDEX
+ 🖝 🖜 U+1F59D, U+1F59C BLACK RIGHT/LEFT POINTING BACKHAND INDEX
+ 🗦 🗧 U+1F5E6, U+1F5E7 THREE RAYS LEFT/RIGHT
+ 🠂 🠀 U+1F802, U+1F800 RIGHT/LEFTWARDS ARROW WITH SMALL TRIANGLE
+ ARROWHEAD
+ 🠆 🠄 U+1F806, U+1F804 RIGHT/LEFTWARDS ARROW WITH MEDIUM TRIANGLE
+ ARROWHEAD
+ 🠊 🠈 U+1F80A, U+1F808 RIGHT/LEFTWARDS ARROW WITH LARGE TRIANGLE
+ ARROWHEAD
+ 🠒 🠐 U+1F812, U+1F810 RIGHT/LEFTWARDS ARROW WITH SMALL EQUILATERAL
+ ARROWHEAD
+ 🠖 🠔 U+1F816, U+1F814 RIGHT/LEFTWARDS ARROW WITH EQUILATERAL ARROWHEAD
+ 🠚 🠘 U+1F81A, U+1F818 HEAVY RIGHT/LEFTWARDS ARROW WITH EQUILATERAL
+ ARROWHEAD
+ 🠞 🠜 U+1F81E, U+1F81C HEAVY RIGHT/LEFTWARDS ARROW WITH LARGE
+ EQUILATERAL ARROWHEAD
+ 🠢 🠠 U+1F822, U+1F820 RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW WITH
+ NARROW SHAFT
+ 🠦 🠤 U+1F826, U+1F824 RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW WITH
+ MEDIUM SHAFT
+ 🠪 🠨 U+1F82A, U+1F828 RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW WITH BOLD
+ SHAFT
+ 🠮 🠬 U+1F82E, U+1F82C RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW WITH
+ HEAVY SHAFT
+ 🠲 🠰 U+1F832, U+1F830 RIGHT/LEFTWARDS TRIANGLE-HEADED ARROW WITH VERY
+ HEAVY SHAFT
+ 🠶 🠴 U+1F836, U+1F834 RIGHT/LEFTWARDS FINGER-POST ARROW
+ 🠺 🠸 U+1F83A, U+1F838 RIGHT/LEFTWARDS SQUARED ARROW
+ 🠾 🠼 U+1F83E, U+1F83C RIGHT/LEFTWARDS COMPRESSED ARROW
+ 🡂 🡀 U+1F842, U+1F840 RIGHT/LEFTWARDS HEAVY COMPRESSED ARROW
+ 🡆 🡄 U+1F846, U+1F844 RIGHT/LEFTWARDS HEAVY ARROW
+ 🡒 🡐 U+1F852, U+1F850 RIGHT/LEFTWARDS SANS-SERIF ARROW
+ 🡢 🡠 U+1F862, U+1F860 WIDE-HEADED RIGHT/LEFTWARDS LIGHT BARB ARROW
+ 🡪 🡨 U+1F86A, U+1F868 WIDE-HEADED RIGHT/LEFTWARDS BARB ARROW
+ 🡲 🡰 U+1F872, U+1F870 WIDE-HEADED RIGHT/LEFTWARDS MEDIUM BARB ARROW
+ 🡺 🡸 U+1F87A, U+1F878 WIDE-HEADED RIGHT/LEFTWARDS HEAVY BARB ARROW
+ 🢂 🢀 U+1F882, U+1F880 WIDE-HEADED RIGHT/LEFTWARDS VERY HEAVY BARB
+ ARROW
+ 🢒 🢐 U+1F892, U+1F890 RIGHT/LEFTWARDS TRIANGLE ARROWHEAD
+ 🢖 🢔 U+1F896, U+1F894 RIGHT/LEFTWARDS WHITE ARROW WITHIN TRIANGLE
+ ARROWHEAD
+ 🢚 🢘 U+1F89A, U+1F898 RIGHT/LEFTWARDS ARROW WITH NOTCHED TAIL
+ 🢡 🢠 U+1F8A1, U+1F8A0 RIGHTWARDS BOTTOM SHADED WHITE ARROW,
+ LEFTWARDS BOTTOM-SHADED WHITE ARROW
+ 🢣 🢢 U+1F8A3, U+1F8A2 RIGHT/LEFTWARDS TOP SHADED WHITE ARROW
+ 🢥 🢦 U+1F8A5, U+1F8A6 RIGHT/LEFTWARDS RIGHT-SHADED WHITE ARROW
+ 🢧 🢤 U+1F8A7, U+1F8A4 RIGHT/LEFTWARDS LEFT-SHADED WHITE ARROW
+ 🢩 🢨 U+1F8A9, U+1F8A8 RIGHT/LEFTWARDS BACK-TILTED SHADOWED WHITE ARROW
+ 🢫 🢪 U+1F8AB, U+1F8AA RIGHT/LEFTWARDS FRONT-TILTED SHADOWED WHITE
+ ARROW
+
+=head2 The 'module_true' feature
+
+This feature removes the need to return a true value at the end of a module
+loaded with C<require> or C<use>. Any errors during compilation will cause
+failures, but reaching the end of the module when this feature is in effect
+will prevent C<perl> from throwing an exception that the module "did not return
+a true value".
+
+=head2 The 'class' feature
+
+B<WARNING>: This feature is still experimental and the implementation may
+change or be removed in future versions of Perl. For this reason, Perl will
+warn when you use the feature, unless you have explicitly disabled the warning:
+
+ no warnings "experimental::class";
+
+This feature enables the C<class> block syntax and other associated keywords
+which implement the "new" object system, previously codenamed "Corinna".
+
=head1 FEATURE BUNDLES
It's possible to load multiple features together, using
@@ -501,6 +963,14 @@ The following feature bundles are available:
postderef_qq say state switch unicode_eval
unicode_strings
+ :5.36 bareword_filehandles bitwise current_sub
+ evalbytes fc isa postderef_qq say signatures
+ state unicode_eval unicode_strings
+
+ :5.38 bitwise current_sub evalbytes fc isa
+ module_true postderef_qq say signatures
+ state unicode_eval unicode_strings
+
The C<:default> bundle represents the feature set that is enabled before
any C<use feature> or C<no feature> declaration.
@@ -530,12 +1000,12 @@ main compilation unit (that is, the one-liner that follows C<-E>).
By explicitly requiring a minimum Perl version number for your program, with
the C<use VERSION> construct. That is,
- use v5.10.0;
+ use v5.36.0;
will do an implicit
no feature ':all';
- use feature ':5.10';
+ use feature ':5.36';
and so on. Note how the trailing sub-version
is automatically stripped from the
@@ -543,7 +1013,7 @@ version.
But to avoid portability warnings (see L<perlfunc/use>), you may prefer:
- use 5.010;
+ use 5.036;
with the same effect.
@@ -555,6 +1025,76 @@ also does the equivalent of C<use strict>; see L<perlfunc/use> for details.
=back
+=head1 CHECKING FEATURES
+
+C<feature> provides some simple APIs to check which features are enabled.
+
+These functions cannot be imported and must be called by their fully
+qualified names. If you don't otherwise need to set a feature you will
+need to ensure C<feature> is loaded with:
+
+ use feature ();
+
+=over
+
+=item feature_enabled($feature)
+
+=item feature_enabled($feature, $depth)
+
+ package MyStandardEnforcer;
+ use feature ();
+ use Carp "croak";
+ sub import {
+ croak "disable indirect!" if feature::feature_enabled("indirect");
+ }
+
+Test whether a named feature is enabled at a given level in the call
+stack, returning a true value if it is. C<$depth> defaults to 1,
+which checks the scope that called the scope calling
+feature::feature_enabled().
+
+croaks for an unknown feature name.
+
+=item features_enabled()
+
+=item features_enabled($depth)
+
+ package ReportEnabledFeatures;
+ use feature "say";
+ sub import {
+ say STDERR join " ", feature::features_enabled();
+ }
+
+Returns a list of the features enabled at a given level in the call
+stack. C<$depth> defaults to 1, which checks the scope that called
+the scope calling feature::features_enabled().
+
+=item feature_bundle()
+
+=item feature_bundle($depth)
+
+Returns the feature bundle, if any, selected at a given level in the
+call stack. C<$depth> defaults to 1, which checks the scope that called
+the scope calling feature::feature_bundle().
+
+Returns an undefined value if no feature bundle is selected in the
+scope.
+
+The bundle name returned will be for the earliest bundle matching the
+selected bundle, so:
+
+ use feature ();
+ use v5.12;
+ BEGIN { print feature::feature_bundle(0); }
+
+will print C<5.11>.
+
+This returns internal state, at this point C<use v5.12;> sets the
+feature bundle, but C< use feature ":5.12"; > does not set the feature
+bundle. This may change in a future release of perl.
+
+=back
+
=cut
sub import {
@@ -644,6 +1184,67 @@ sub croak {
Carp::croak(@_);
}
+sub features_enabled {
+ my ($depth) = @_;
+
+ $depth //= 1;
+ my @frame = caller($depth+1)
+ or return;
+ my ($hints, $hinthash) = @frame[8, 10];
+
+ my $bundle_number = $hints & $hint_mask;
+ if ($bundle_number != $hint_mask) {
+ return $feature_bundle{$hint_bundles[$bundle_number >> $hint_shift]}->@*;
+ }
+ else {
+ my @features;
+ for my $feature (sort keys %feature) {
+ if ($hinthash->{$feature{$feature}}) {
+ push @features, $feature;
+ }
+ }
+ return @features;
+ }
+}
+
+sub feature_enabled {
+ my ($feature, $depth) = @_;
+
+ $depth //= 1;
+ my @frame = caller($depth+1)
+ or return;
+ my ($hints, $hinthash) = @frame[8, 10];
+
+ my $hint_feature = $feature{$feature}
+ or croak "Unknown feature $feature";
+ my $bundle_number = $hints & $hint_mask;
+ if ($bundle_number != $hint_mask) {
+ my $bundle = $hint_bundles[$bundle_number >> $hint_shift];
+ for my $bundle_feature ($feature_bundle{$bundle}->@*) {
+ return 1 if $bundle_feature eq $feature;
+ }
+ return 0;
+ }
+ else {
+ return $hinthash->{$hint_feature} // 0;
+ }
+}
+
+sub feature_bundle {
+ my $depth = shift;
+
+ $depth //= 1;
+ my @frame = caller($depth+1)
+ or return;
+ my $bundle_number = $frame[8] & $hint_mask;
+ if ($bundle_number != $hint_mask) {
+ return $hint_bundles[$bundle_number >> $hint_shift];
+ }
+ else {
+ return undef;
+ }
+}
+
1;
-# ex: set ro:
+# ex: set ro ft=perl:
diff --git a/Master/tlpkg/tlperl/lib/if.pm b/Master/tlpkg/tlperl/lib/if.pm
index 87f93806df0..7386822346b 100644
--- a/Master/tlpkg/tlperl/lib/if.pm
+++ b/Master/tlpkg/tlperl/lib/if.pm
@@ -1,6 +1,6 @@
package if;
use strict;
-our $VERSION = '0.0609';
+our $VERSION = '0.0610';
sub work {
my $method = shift() ? 'import' : 'unimport';
@@ -92,7 +92,7 @@ version of the module.
=head1 SEE ALSO
-L<Module::Requires> can be used to conditionally load one or modules,
+L<Module::Requires> can be used to conditionally load one or more modules,
with constraints based on the version of the module.
Unlike C<if> though, L<Module::Requires> is not a core module.
diff --git a/Master/tlpkg/tlperl/lib/meta_notation.pm b/Master/tlpkg/tlperl/lib/meta_notation.pm
index eea85875c9f..e856bb950f0 100644
--- a/Master/tlpkg/tlperl/lib/meta_notation.pm
+++ b/Master/tlpkg/tlperl/lib/meta_notation.pm
@@ -42,7 +42,6 @@ sub _meta_notation ($) {
$string =~ s/([\240-\377])/sprintf("M-%c" ,ord($1)&0177)/eg;
}
else {
- no warnings 'experimental::regex_sets';
# Leave alone things above \xff
$string =~ s/( (?[ [\x00-\xFF] & [:^print:]])) /
sprintf("\\x{%X}", ord($1))/xaeg;
diff --git a/Master/tlpkg/tlperl/lib/mro.pm b/Master/tlpkg/tlperl/lib/mro.pm
index 1889bd67f62..6637ea8eb7e 100644
--- a/Master/tlpkg/tlperl/lib/mro.pm
+++ b/Master/tlpkg/tlperl/lib/mro.pm
@@ -12,7 +12,7 @@ use warnings;
# mro.pm versions < 1.00 reserved for MRO::Compat
# for partial back-compat to 5.[68].x
-our $VERSION = '1.25_001';
+our $VERSION = '1.28';
require XSLoader;
XSLoader::load('mro');
diff --git a/Master/tlpkg/tlperl/lib/ok.pm b/Master/tlpkg/tlperl/lib/ok.pm
index 880e4371bb5..437c938ce6f 100644
--- a/Master/tlpkg/tlperl/lib/ok.pm
+++ b/Master/tlpkg/tlperl/lib/ok.pm
@@ -1,5 +1,5 @@
package ok;
-our $VERSION = '1.302183';
+our $VERSION = '1.302194';
use strict;
use Test::More ();
diff --git a/Master/tlpkg/tlperl/lib/open.pm b/Master/tlpkg/tlperl/lib/open.pm
index 3e213816f92..86111ca8640 100644
--- a/Master/tlpkg/tlperl/lib/open.pm
+++ b/Master/tlpkg/tlperl/lib/open.pm
@@ -1,7 +1,7 @@
package open;
use warnings;
-our $VERSION = '1.12';
+our $VERSION = '1.13';
require 5.008001; # for PerlIO::get_layers()
@@ -120,20 +120,11 @@ sub import {
${^OPEN} = join("\0", $in, $out);
if ($std) {
if ($in) {
- if ($in =~ /:utf8\b/) {
- binmode(STDIN, ":utf8");
- } elsif ($in =~ /(\w+\(.+\))/) {
- binmode(STDIN, ":$1");
- }
+ binmode STDIN, $in;
}
if ($out) {
- if ($out =~ /:utf8\b/) {
- binmode(STDOUT, ":utf8");
- binmode(STDERR, ":utf8");
- } elsif ($out =~ /(\w+\(.+\))/) {
- binmode(STDOUT, ":$1");
- binmode(STDERR, ":$1");
- }
+ binmode(STDOUT, $out);
+ binmode(STDERR, $out);
}
}
}
@@ -243,6 +234,10 @@ to this pragma in its own lexical scope.
{ use open ':std', IO => ':encoding(UTF-8)' }
+Before Perl 5.34, C<:std> would only apply the first layer provided that is
+either C<:utf8> or has a layer argument, e.g. C<:encoding(UTF-8)>. Since
+Perl 5.34 it will apply the same layer stack it provides to C<${^OPEN}>.
+
=head1 IMPLEMENTATION DETAILS
There is a class method in C<PerlIO::Layer> C<find> which is
diff --git a/Master/tlpkg/tlperl/lib/overload.pm b/Master/tlpkg/tlperl/lib/overload.pm
index 8a5eeb8df80..d782271296c 100644
--- a/Master/tlpkg/tlperl/lib/overload.pm
+++ b/Master/tlpkg/tlperl/lib/overload.pm
@@ -3,7 +3,7 @@ package overload;
use strict;
no strict 'refs';
-our $VERSION = '1.33';
+our $VERSION = '1.37';
our %ops = (
with_assign => "+ - * / % ** << >> x .",
@@ -29,153 +29,151 @@ my %ops_seen;
sub nil {}
sub OVERLOAD {
- my $package = shift;
- my %arg = @_;
- my $sub;
- *{$package . "::(("} = \&nil; # Make it findable via fetchmethod.
- for (keys %arg) {
- if ($_ eq 'fallback') {
- for my $sym (*{$package . "::()"}) {
- *$sym = \&nil; # Make it findable via fetchmethod.
- $$sym = $arg{$_};
- }
- } else {
- warnings::warnif("overload arg '$_' is invalid")
- unless exists $ops_seen{$_};
- $sub = $arg{$_};
- if (not ref $sub) {
- $ {$package . "::(" . $_} = $sub;
- $sub = \&nil;
- }
- #print STDERR "Setting '$ {'package'}::\cO$_' to \\&'$sub'.\n";
- *{$package . "::(" . $_} = \&{ $sub };
+ my $package = shift;
+ my %arg = @_;
+ my $sub;
+ *{$package . "::(("} = \&nil; # Make it findable via fetchmethod.
+ for (keys %arg) {
+ if ($_ eq 'fallback') {
+ for my $sym (*{$package . "::()"}) {
+ *$sym = \&nil; # Make it findable via fetchmethod.
+ $$sym = $arg{$_};
+ }
+ } else {
+ warnings::warnif("overload arg '$_' is invalid")
+ unless exists $ops_seen{$_};
+ $sub = $arg{$_};
+ if (not ref $sub) {
+ $ {$package . "::(" . $_} = $sub;
+ $sub = \&nil;
+ }
+ #print STDERR "Setting '$ {'package'}::\cO$_' to \\&'$sub'.\n";
+ *{$package . "::(" . $_} = \&{ $sub };
+ }
}
- }
}
sub import {
- my $package = (caller())[0];
- # *{$package . "::OVERLOAD"} = \&OVERLOAD;
- shift;
- $package->overload::OVERLOAD(@_);
+ my $package = caller();
+ # *{$package . "::OVERLOAD"} = \&OVERLOAD;
+ shift;
+ $package->overload::OVERLOAD(@_);
}
sub unimport {
- my $package = (caller())[0];
- shift;
- *{$package . "::(("} = \&nil;
- for (@_) {
- warnings::warnif("overload arg '$_' is invalid")
- unless exists $ops_seen{$_};
- delete $ {$package . "::"}{$_ eq 'fallback' ? '()' : "(" .$_};
- }
+ my $package = caller();
+ shift;
+ *{$package . "::(("} = \&nil;
+ for (@_) {
+ warnings::warnif("overload arg '$_' is invalid")
+ unless exists $ops_seen{$_};
+ delete $ {$package . "::"}{$_ eq 'fallback' ? '()' : "(" .$_};
+ }
}
sub Overloaded {
- my $package = shift;
- $package = ref $package if ref $package;
- mycan ($package, '()') || mycan ($package, '((');
+ my $package = shift;
+ $package = ref $package if ref $package;
+ mycan ($package, '()') || mycan ($package, '((');
}
sub ov_method {
- my $globref = shift;
- return undef unless $globref;
- my $sub = \&{*$globref};
- no overloading;
- return $sub if $sub != \&nil;
- return shift->can($ {*$globref});
+ my $globref = shift;
+ return undef unless $globref;
+ my $sub = \&{*$globref};
+ no overloading;
+ return $sub if $sub != \&nil;
+ return shift->can($ {*$globref});
}
sub OverloadedStringify {
- my $package = shift;
- $package = ref $package if ref $package;
- #$package->can('(""')
- ov_method mycan($package, '(""'), $package
- or ov_method mycan($package, '(0+'), $package
- or ov_method mycan($package, '(bool'), $package
- or ov_method mycan($package, '(nomethod'), $package;
+ my $package = shift;
+ $package = ref $package if ref $package;
+ #$package->can('(""')
+ ov_method mycan($package, '(""'), $package
+ or ov_method mycan($package, '(0+'), $package
+ or ov_method mycan($package, '(bool'), $package
+ or ov_method mycan($package, '(nomethod'), $package;
}
sub Method {
- my $package = shift;
- if(ref $package) {
- local $@;
- local $!;
- require Scalar::Util;
- $package = Scalar::Util::blessed($package);
- return undef if !defined $package;
- }
- #my $meth = $package->can('(' . shift);
- ov_method mycan($package, '(' . shift), $package;
- #return $meth if $meth ne \&nil;
- #return $ {*{$meth}};
+ my $package = shift;
+ if (ref $package) {
+ no warnings 'experimental::builtin';
+ $package = builtin::blessed($package);
+ return undef if !defined $package;
+ }
+ #my $meth = $package->can('(' . shift);
+ ov_method mycan($package, '(' . shift), $package;
+ #return $meth if $meth ne \&nil;
+ #return $ {*{$meth}};
}
sub AddrRef {
- no overloading;
- "$_[0]";
+ no overloading;
+ "$_[0]";
}
*StrVal = *AddrRef;
-sub mycan { # Real can would leave stubs.
- my ($package, $meth) = @_;
+sub mycan { # Real can would leave stubs.
+ my ($package, $meth) = @_;
- local $@;
- local $!;
- require mro;
+ local $@;
+ local $!;
+ require mro;
- my $mro = mro::get_linear_isa($package);
- foreach my $p (@$mro) {
- my $fqmeth = $p . q{::} . $meth;
- return \*{$fqmeth} if defined &{$fqmeth};
- }
+ my $mro = mro::get_linear_isa($package);
+ foreach my $p (@$mro) {
+ my $fqmeth = $p . q{::} . $meth;
+ return \*{$fqmeth} if defined &{$fqmeth};
+ }
- return undef;
+ return undef;
}
my %constants = (
- 'integer' => 0x1000, # HINT_NEW_INTEGER
- 'float' => 0x2000, # HINT_NEW_FLOAT
- 'binary' => 0x4000, # HINT_NEW_BINARY
- 'q' => 0x8000, # HINT_NEW_STRING
- 'qr' => 0x10000, # HINT_NEW_RE
- );
+ 'integer' => 0x1000, # HINT_NEW_INTEGER
+ 'float' => 0x2000, # HINT_NEW_FLOAT
+ 'binary' => 0x4000, # HINT_NEW_BINARY
+ 'q' => 0x8000, # HINT_NEW_STRING
+ 'qr' => 0x10000, # HINT_NEW_RE
+);
use warnings::register;
sub constant {
- # Arguments: what, sub
- while (@_) {
- if (@_ == 1) {
- warnings::warnif ("Odd number of arguments for overload::constant");
- last;
- }
- elsif (!exists $constants {$_ [0]}) {
- warnings::warnif ("'$_[0]' is not an overloadable type");
- }
- elsif (!ref $_ [1] || "$_[1]" !~ /(^|=)CODE\(0x[0-9a-f]+\)$/) {
- # Can't use C<ref $_[1] eq "CODE"> above as code references can be
- # blessed, and C<ref> would return the package the ref is blessed into.
- if (warnings::enabled) {
- $_ [1] = "undef" unless defined $_ [1];
- warnings::warn ("'$_[1]' is not a code reference");
+ # Arguments: what, sub
+ while (@_) {
+ if (@_ == 1) {
+ warnings::warnif ("Odd number of arguments for overload::constant");
+ last;
}
+ elsif (!exists $constants {$_ [0]}) {
+ warnings::warnif ("'$_[0]' is not an overloadable type");
+ }
+ elsif (!ref $_ [1] || "$_[1]" !~ /(^|=)CODE\(0x[0-9a-f]+\)$/) {
+ # Can't use C<ref $_[1] eq "CODE"> above as code references can be
+ # blessed, and C<ref> would return the package the ref is blessed into.
+ if (warnings::enabled) {
+ $_ [1] = "undef" unless defined $_ [1];
+ warnings::warn ("'$_[1]' is not a code reference");
+ }
+ }
+ else {
+ $^H{$_[0]} = $_[1];
+ $^H |= $constants{$_[0]};
+ }
+ shift, shift;
}
- else {
- $^H{$_[0]} = $_[1];
- $^H |= $constants{$_[0]};
- }
- shift, shift;
- }
}
sub remove_constant {
- # Arguments: what, sub
- while (@_) {
- delete $^H{$_[0]};
- $^H &= ~ $constants{$_[0]};
- shift, shift;
- }
+ # Arguments: what, sub
+ while (@_) {
+ delete $^H{$_[0]};
+ $^H &= ~ $constants{$_[0]};
+ shift, shift;
+ }
}
1;
@@ -191,9 +189,9 @@ overload - Package for overloading Perl operations
package SomeThing;
use overload
- '+' => \&myadd,
- '-' => \&mysub;
- # etc
+ '+' => \&myadd,
+ '-' => \&mysub;
+ # etc
...
package main;
@@ -365,21 +363,21 @@ The complete list of keys that can be specified in the C<use overload>
directive are given, separated by spaces, in the values of the
hash C<%overload::ops>:
- with_assign => '+ - * / % ** << >> x .',
- assign => '+= -= *= /= %= **= <<= >>= x= .=',
- num_comparison => '< <= > >= == !=',
- '3way_comparison'=> '<=> cmp',
- str_comparison => 'lt le gt ge eq ne',
- binary => '& &= | |= ^ ^= &. &.= |. |.= ^. ^.=',
- unary => 'neg ! ~ ~.',
- mutators => '++ --',
- func => 'atan2 cos sin exp abs log sqrt int',
- conversion => 'bool "" 0+ qr',
- iterators => '<>',
- filetest => '-X',
- dereferencing => '${} @{} %{} &{} *{}',
- matching => '~~',
- special => 'nomethod fallback ='
+ with_assign => '+ - * / % ** << >> x .',
+ assign => '+= -= *= /= %= **= <<= >>= x= .=',
+ num_comparison => '< <= > >= == !=',
+ '3way_comparison' => '<=> cmp',
+ str_comparison => 'lt le gt ge eq ne',
+ binary => '& &= | |= ^ ^= &. &.= |. |.= ^. ^.=',
+ unary => 'neg ! ~ ~.',
+ mutators => '++ --',
+ func => 'atan2 cos sin exp abs log sqrt int',
+ conversion => 'bool "" 0+ qr',
+ iterators => '<>',
+ filetest => '-X',
+ dereferencing => '${} @{} %{} &{} *{}',
+ matching => '~~',
+ special => 'nomethod fallback =',
Most of the overloadable operators map one-to-one to these keys.
Exceptions, including additional overloadable operations not
@@ -922,7 +920,7 @@ Inheritance interacts with overloading in two ways.
If C<value> in
- use overload key => value;
+ use overload key => value;
is a string, it is interpreted as a method name - which may
(in the usual way) be inherited from another class.
@@ -943,7 +941,7 @@ be called to implement operation C<+> for an object in package C<A>.
=back
Note that in Perl version prior to 5.18 inheritance of the C<fallback> key
-was not governed by the above rules. The value of C<fallback> in the first
+was not governed by the above rules. The value of C<fallback> in the first
overloaded ancestor was used. This was fixed in 5.18 to follow the usual
rules of inheritance.
@@ -972,7 +970,7 @@ Gives the string value of C<arg> as in the
absence of stringify overloading. If you
are using this to get the address of a reference (useful for checking if two
references point to the same thing) then you may be better off using
-C<Scalar::Util::refaddr()>, which is faster.
+C<builtin::refaddr()> or C<Scalar::Util::refaddr()>, which are faster.
=item overload::Overloaded(arg)
@@ -982,6 +980,9 @@ Returns true if C<arg> is subject to overloading of some operations.
Returns C<undef> or a reference to the method that implements C<op>.
+Such a method always takes three arguments, which will be enforced if
+it is an XS method.
+
=back
=head2 Overloading Constants
@@ -1041,10 +1042,10 @@ and overload::remove_constant() from anywhere but import() and unimport() method
From these methods they may be called as
sub import {
- shift;
- return unless @_;
- die "unknown import: @_" unless @_ == 1 and $_[0] eq ':constant';
- overload::constant integer => sub {Math::BigInt->new(shift)};
+ shift;
+ return unless @_;
+ die "unknown import: @_" unless @_ == 1 and $_[0] eq ':constant';
+ overload::constant integer => sub {Math::BigInt->new(shift)};
}
=head1 IMPLEMENTATION
@@ -1082,66 +1083,66 @@ Please add examples to what follows!
Put this in F<two_face.pm> in your Perl library directory:
- package two_face; # Scalars with separate string and
- # numeric values.
- sub new { my $p = shift; bless [@_], $p }
- use overload '""' => \&str, '0+' => \&num, fallback => 1;
- sub num {shift->[1]}
- sub str {shift->[0]}
+ package two_face; # Scalars with separate string and
+ # numeric values.
+ sub new { my $p = shift; bless [@_], $p }
+ use overload '""' => \&str, '0+' => \&num, fallback => 1;
+ sub num {shift->[1]}
+ sub str {shift->[0]}
Use it as follows:
- require two_face;
- my $seven = two_face->new("vii", 7);
- printf "seven=$seven, seven=%d, eight=%d\n", $seven, $seven+1;
- print "seven contains 'i'\n" if $seven =~ /i/;
+ require two_face;
+ my $seven = two_face->new("vii", 7);
+ printf "seven=$seven, seven=%d, eight=%d\n", $seven, $seven+1;
+ print "seven contains 'i'\n" if $seven =~ /i/;
(The second line creates a scalar which has both a string value, and a
numeric value.) This prints:
- seven=vii, seven=7, eight=8
- seven contains 'i'
+ seven=vii, seven=7, eight=8
+ seven contains 'i'
=head2 Two-face References
Suppose you want to create an object which is accessible as both an
array reference and a hash reference.
- package two_refs;
- use overload '%{}' => \&gethash, '@{}' => sub { $ {shift()} };
- sub new {
- my $p = shift;
- bless \ [@_], $p;
- }
- sub gethash {
- my %h;
- my $self = shift;
- tie %h, ref $self, $self;
- \%h;
- }
-
- sub TIEHASH { my $p = shift; bless \ shift, $p }
- my %fields;
- my $i = 0;
- $fields{$_} = $i++ foreach qw{zero one two three};
- sub STORE {
- my $self = ${shift()};
- my $key = $fields{shift()};
- defined $key or die "Out of band access";
- $$self->[$key] = shift;
- }
- sub FETCH {
- my $self = ${shift()};
- my $key = $fields{shift()};
- defined $key or die "Out of band access";
- $$self->[$key];
- }
+ package two_refs;
+ use overload '%{}' => \&gethash, '@{}' => sub { $ {shift()} };
+ sub new {
+ my $p = shift;
+ bless \ [@_], $p;
+ }
+ sub gethash {
+ my %h;
+ my $self = shift;
+ tie %h, ref $self, $self;
+ \%h;
+ }
+
+ sub TIEHASH { my $p = shift; bless \ shift, $p }
+ my %fields;
+ my $i = 0;
+ $fields{$_} = $i++ foreach qw{zero one two three};
+ sub STORE {
+ my $self = ${shift()};
+ my $key = $fields{shift()};
+ defined $key or die "Out of band access";
+ $$self->[$key] = shift;
+ }
+ sub FETCH {
+ my $self = ${shift()};
+ my $key = $fields{shift()};
+ defined $key or die "Out of band access";
+ $$self->[$key];
+ }
Now one can access an object using both the array and hash syntax:
- my $bar = two_refs->new(3,4,5,6);
- $bar->[2] = 11;
- $bar->{two} == 11 or die 'bad hash fetch';
+ my $bar = two_refs->new(3,4,5,6);
+ $bar->[2] = 11;
+ $bar->{two} == 11 or die 'bad hash fetch';
Note several important features of this example. First of all, the
I<actual> type of $bar is a scalar reference, and we do not overload
@@ -1160,51 +1161,53 @@ hash itself, the only problem one has to circumvent is how to access
this I<actual> hash (as opposed to the I<virtual> hash exhibited by the
overloaded dereference operator). Here is one possible fetching routine:
- sub access_hash {
- my ($self, $key) = (shift, shift);
- my $class = ref $self;
- bless $self, 'overload::dummy'; # Disable overloading of %{}
- my $out = $self->{$key};
- bless $self, $class; # Restore overloading
- $out;
- }
+ sub access_hash {
+ my ($self, $key) = (shift, shift);
+ my $class = ref $self;
+ bless $self, 'overload::dummy'; # Disable overloading of %{}
+ my $out = $self->{$key};
+ bless $self, $class; # Restore overloading
+ $out;
+ }
To remove creation of the tied hash on each access, one may an extra
level of indirection which allows a non-circular structure of references:
- package two_refs1;
- use overload '%{}' => sub { ${shift()}->[1] },
- '@{}' => sub { ${shift()}->[0] };
- sub new {
- my $p = shift;
- my $a = [@_];
- my %h;
- tie %h, $p, $a;
- bless \ [$a, \%h], $p;
- }
- sub gethash {
- my %h;
- my $self = shift;
- tie %h, ref $self, $self;
- \%h;
- }
-
- sub TIEHASH { my $p = shift; bless \ shift, $p }
- my %fields;
- my $i = 0;
- $fields{$_} = $i++ foreach qw{zero one two three};
- sub STORE {
- my $a = ${shift()};
- my $key = $fields{shift()};
- defined $key or die "Out of band access";
- $a->[$key] = shift;
- }
- sub FETCH {
- my $a = ${shift()};
- my $key = $fields{shift()};
- defined $key or die "Out of band access";
- $a->[$key];
- }
+ package two_refs1;
+ use overload
+ '%{}' => sub { ${shift()}->[1] },
+ '@{}' => sub { ${shift()}->[0] };
+
+ sub new {
+ my $p = shift;
+ my $a = [@_];
+ my %h;
+ tie %h, $p, $a;
+ bless \ [$a, \%h], $p;
+ }
+ sub gethash {
+ my %h;
+ my $self = shift;
+ tie %h, ref $self, $self;
+ \%h;
+ }
+
+ sub TIEHASH { my $p = shift; bless \ shift, $p }
+ my %fields;
+ my $i = 0;
+ $fields{$_} = $i++ foreach qw{zero one two three};
+ sub STORE {
+ my $a = ${shift()};
+ my $key = $fields{shift()};
+ defined $key or die "Out of band access";
+ $a->[$key] = shift;
+ }
+ sub FETCH {
+ my $a = ${shift()};
+ my $key = $fields{shift()};
+ defined $key or die "Out of band access";
+ $a->[$key];
+ }
Now if $baz is overloaded like this, then C<$baz> is a reference to a
reference to the intermediate array, which keeps a reference to an
@@ -1230,15 +1233,15 @@ overloaded operations.
Put this in F<symbolic.pm> in your Perl library directory:
- package symbolic; # Primitive symbolic calculator
- use overload nomethod => \&wrap;
+ package symbolic; # Primitive symbolic calculator
+ use overload nomethod => \&wrap;
- sub new { shift; bless ['n', @_] }
- sub wrap {
- my ($obj, $other, $inv, $meth) = @_;
- ($obj, $other) = ($other, $obj) if $inv;
- bless [$meth, $obj, $other];
- }
+ sub new { shift; bless ['n', @_] }
+ sub wrap {
+ my ($obj, $other, $inv, $meth) = @_;
+ ($obj, $other) = ($other, $obj) if $inv;
+ bless [$meth, $obj, $other];
+ }
This module is very unusual as overloaded modules go: it does not
provide any usual overloaded operators, instead it provides an
@@ -1250,20 +1253,20 @@ symbolic->new(3) >> contains C<['+', 2, ['n', 3]]>.
Here is an example of the script which "calculates" the side of
circumscribed octagon using the above package:
- require symbolic;
- my $iter = 1; # 2**($iter+2) = 8
- my $side = symbolic->new(1);
- my $cnt = $iter;
+ require symbolic;
+ my $iter = 1; # 2**($iter+2) = 8
+ my $side = symbolic->new(1);
+ my $cnt = $iter;
- while ($cnt--) {
- $side = (sqrt(1 + $side**2) - 1)/$side;
- }
- print "OK\n";
+ while ($cnt--) {
+ $side = (sqrt(1 + $side**2) - 1)/$side;
+ }
+ print "OK\n";
The value of $side is
- ['/', ['-', ['sqrt', ['+', 1, ['**', ['n', 1], 2]],
- undef], 1], ['n', 1]]
+ ['/', ['-', ['sqrt', ['+', 1, ['**', ['n', 1], 2]],
+ undef], 1], ['n', 1]]
Note that while we obtained this value using a nice little script,
there is no simple way to I<use> this value. In fact this value may
@@ -1277,18 +1280,18 @@ again of type C<symbolic>, which will lead to an infinite loop.
Add a pretty-printer method to the module F<symbolic.pm>:
- sub pretty {
- my ($meth, $a, $b) = @{+shift};
- $a = 'u' unless defined $a;
- $b = 'u' unless defined $b;
- $a = $a->pretty if ref $a;
- $b = $b->pretty if ref $b;
- "[$meth $a $b]";
- }
+ sub pretty {
+ my ($meth, $a, $b) = @{+shift};
+ $a = 'u' unless defined $a;
+ $b = 'u' unless defined $b;
+ $a = $a->pretty if ref $a;
+ $b = $b->pretty if ref $b;
+ "[$meth $a $b]";
+ }
Now one can finish the script by
- print "side = ", $side->pretty, "\n";
+ print "side = ", $side->pretty, "\n";
The method C<pretty> is doing object-to-string conversion, so it
is natural to overload the operator C<""> using this method. However,
@@ -1299,21 +1302,21 @@ and $b. If these components use overloading, the catenation operator
will look for an overloaded operator C<.>; if not present, it will
look for an overloaded operator C<"">. Thus it is enough to use
- use overload nomethod => \&wrap, '""' => \&str;
- sub str {
- my ($meth, $a, $b) = @{+shift};
- $a = 'u' unless defined $a;
- $b = 'u' unless defined $b;
- "[$meth $a $b]";
- }
+ use overload nomethod => \&wrap, '""' => \&str;
+ sub str {
+ my ($meth, $a, $b) = @{+shift};
+ $a = 'u' unless defined $a;
+ $b = 'u' unless defined $b;
+ "[$meth $a $b]";
+ }
Now one can change the last line of the script to
- print "side = $side\n";
+ print "side = $side\n";
which outputs
- side = [/ [- [sqrt [+ 1 [** [n 1 u] 2]] u] 1] [n 1 u]]
+ side = [/ [- [sqrt [+ 1 [** [n 1 u] 2]] u] 1] [n 1 u]]
and one can inspect the value in debugger using all the possible
methods.
@@ -1332,41 +1335,42 @@ conversion routine.
Here is the text of F<symbolic.pm> with such a routine added (and
slightly modified str()):
- package symbolic; # Primitive symbolic calculator
- use overload
- nomethod => \&wrap, '""' => \&str, '0+' => \&num;
-
- sub new { shift; bless ['n', @_] }
- sub wrap {
- my ($obj, $other, $inv, $meth) = @_;
- ($obj, $other) = ($other, $obj) if $inv;
- bless [$meth, $obj, $other];
- }
- sub str {
- my ($meth, $a, $b) = @{+shift};
- $a = 'u' unless defined $a;
- if (defined $b) {
- "[$meth $a $b]";
- } else {
- "[$meth $a]";
+ package symbolic; # Primitive symbolic calculator
+ use overload
+ nomethod => \&wrap, '""' => \&str, '0+' => \&num;
+
+ sub new { shift; bless ['n', @_] }
+ sub wrap {
+ my ($obj, $other, $inv, $meth) = @_;
+ ($obj, $other) = ($other, $obj) if $inv;
+ bless [$meth, $obj, $other];
+ }
+ sub str {
+ my ($meth, $a, $b) = @{+shift};
+ $a = 'u' unless defined $a;
+ if (defined $b) {
+ "[$meth $a $b]";
+ } else {
+ "[$meth $a]";
+ }
+ }
+ my %subr = (
+ n => sub {$_[0]},
+ sqrt => sub {sqrt $_[0]},
+ '-' => sub {shift() - shift()},
+ '+' => sub {shift() + shift()},
+ '/' => sub {shift() / shift()},
+ '*' => sub {shift() * shift()},
+ '**' => sub {shift() ** shift()},
+ );
+ sub num {
+ my ($meth, $a, $b) = @{+shift};
+ my $subr = $subr{$meth}
+ or die "Do not know how to ($meth) in symbolic";
+ $a = $a->num if ref $a eq __PACKAGE__;
+ $b = $b->num if ref $b eq __PACKAGE__;
+ $subr->($a,$b);
}
- }
- my %subr = ( n => sub {$_[0]},
- sqrt => sub {sqrt $_[0]},
- '-' => sub {shift() - shift()},
- '+' => sub {shift() + shift()},
- '/' => sub {shift() / shift()},
- '*' => sub {shift() * shift()},
- '**' => sub {shift() ** shift()},
- );
- sub num {
- my ($meth, $a, $b) = @{+shift};
- my $subr = $subr{$meth}
- or die "Do not know how to ($meth) in symbolic";
- $a = $a->num if ref $a eq __PACKAGE__;
- $b = $b->num if ref $b eq __PACKAGE__;
- $subr->($a,$b);
- }
All the work of numeric conversion is done in %subr and num(). Of
course, %subr is not complete, it contains only operators used in the
@@ -1375,24 +1379,24 @@ explicit recursion in num()? (Answer is at the end of this section.)
Use this module like this:
- require symbolic;
- my $iter = symbolic->new(2); # 16-gon
- my $side = symbolic->new(1);
- my $cnt = $iter;
+ require symbolic;
+ my $iter = symbolic->new(2); # 16-gon
+ my $side = symbolic->new(1);
+ my $cnt = $iter;
- while ($cnt) {
- $cnt = $cnt - 1; # Mutator '--' not implemented
- $side = (sqrt(1 + $side**2) - 1)/$side;
- }
- printf "%s=%f\n", $side, $side;
- printf "pi=%f\n", $side*(2**($iter+2));
+ while ($cnt) {
+ $cnt = $cnt - 1; # Mutator '--' not implemented
+ $side = (sqrt(1 + $side**2) - 1)/$side;
+ }
+ printf "%s=%f\n", $side, $side;
+ printf "pi=%f\n", $side*(2**($iter+2));
It prints (without so many line breaks)
- [/ [- [sqrt [+ 1 [** [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1]
- [n 1]] 2]]] 1]
- [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1] [n 1]]]=0.198912
- pi=3.182598
+ [/ [- [sqrt [+ 1 [** [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1]
+ [n 1]] 2]]] 1]
+ [/ [- [sqrt [+ 1 [** [n 1] 2]]] 1] [n 1]]]=0.198912
+ pi=3.182598
The above module is very primitive. It does not implement
mutator methods (C<++>, C<-=> and so on), does not do deep copying
@@ -1402,18 +1406,18 @@ operations which are used in the example.
To implement most arithmetic operations is easy; one should just use
the tables of operations, and change the code which fills %subr to
- my %subr = ( 'n' => sub {$_[0]} );
- foreach my $op (split " ", $overload::ops{with_assign}) {
- $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}";
- }
- my @bins = qw(binary 3way_comparison num_comparison str_comparison);
- foreach my $op (split " ", "@overload::ops{ @bins }") {
- $subr{$op} = eval "sub {shift() $op shift()}";
- }
- foreach my $op (split " ", "@overload::ops{qw(unary func)}") {
- print "defining '$op'\n";
- $subr{$op} = eval "sub {$op shift()}";
- }
+ my %subr = ( 'n' => sub {$_[0]} );
+ foreach my $op (split " ", $overload::ops{with_assign}) {
+ $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}";
+ }
+ my @bins = qw(binary 3way_comparison num_comparison str_comparison);
+ foreach my $op (split " ", "@overload::ops{ @bins }") {
+ $subr{$op} = eval "sub {shift() $op shift()}";
+ }
+ foreach my $op (split " ", "@overload::ops{qw(unary func)}") {
+ print "defining '$op'\n";
+ $subr{$op} = eval "sub {$op shift()}";
+ }
Since subroutines implementing assignment operators are not required
to modify their operands (see L</Overloadable Operations> above),
@@ -1427,42 +1431,42 @@ To implement a copy constructor, add C<< '=' => \&cpy >> to C<use overload>
line, and code (this code assumes that mutators change things one level
deep only, so recursive copying is not needed):
- sub cpy {
- my $self = shift;
- bless [@$self], ref $self;
- }
+ sub cpy {
+ my $self = shift;
+ bless [@$self], ref $self;
+ }
To make C<++> and C<--> work, we need to implement actual mutators,
either directly, or in C<nomethod>. We continue to do things inside
C<nomethod>, thus add
if ($meth eq '++' or $meth eq '--') {
- @$obj = ($meth, (bless [@$obj]), 1); # Avoid circular reference
- return $obj;
+ @$obj = ($meth, (bless [@$obj]), 1); # Avoid circular reference
+ return $obj;
}
after the first line of wrap(). This is not a most effective
implementation, one may consider
- sub inc { $_[0] = bless ['++', shift, 1]; }
+ sub inc { $_[0] = bless ['++', shift, 1]; }
instead.
As a final remark, note that one can fill %subr by
- my %subr = ( 'n' => sub {$_[0]} );
- foreach my $op (split " ", $overload::ops{with_assign}) {
- $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}";
- }
- my @bins = qw(binary 3way_comparison num_comparison str_comparison);
- foreach my $op (split " ", "@overload::ops{ @bins }") {
- $subr{$op} = eval "sub {shift() $op shift()}";
- }
- foreach my $op (split " ", "@overload::ops{qw(unary func)}") {
- $subr{$op} = eval "sub {$op shift()}";
- }
- $subr{'++'} = $subr{'+'};
- $subr{'--'} = $subr{'-'};
+ my %subr = ( 'n' => sub {$_[0]} );
+ foreach my $op (split " ", $overload::ops{with_assign}) {
+ $subr{$op} = $subr{"$op="} = eval "sub {shift() $op shift()}";
+ }
+ my @bins = qw(binary 3way_comparison num_comparison str_comparison);
+ foreach my $op (split " ", "@overload::ops{ @bins }") {
+ $subr{$op} = eval "sub {shift() $op shift()}";
+ }
+ foreach my $op (split " ", "@overload::ops{qw(unary func)}") {
+ $subr{$op} = eval "sub {$op shift()}";
+ }
+ $subr{'++'} = $subr{'+'};
+ $subr{'--'} = $subr{'-'};
This finishes implementation of a primitive symbolic calculator in
50 lines of Perl code. Since the numeric values of subexpressions
@@ -1491,21 +1495,21 @@ until the value is I<used>.
To see it in action, add a method
- sub STORE {
- my $obj = shift;
- $#$obj = 1;
- @$obj->[0,1] = ('=', shift);
- }
+ sub STORE {
+ my $obj = shift;
+ $#$obj = 1;
+ @$obj->[0,1] = ('=', shift);
+ }
to the package C<symbolic>. After this change one can do
- my $a = symbolic->new(3);
- my $b = symbolic->new(4);
- my $c = sqrt($a**2 + $b**2);
+ my $a = symbolic->new(3);
+ my $b = symbolic->new(4);
+ my $c = sqrt($a**2 + $b**2);
and the numeric value of $c becomes 5. However, after calling
- $a->STORE(12); $b->STORE(5);
+ $a->STORE(12); $b->STORE(5);
the numeric value of $c becomes 13. There is no doubt now that the module
symbolic provides a I<symbolic> calculator indeed.
@@ -1513,35 +1517,35 @@ symbolic provides a I<symbolic> calculator indeed.
To hide the rough edges under the hood, provide a tie()d interface to the
package C<symbolic>. Add methods
- sub TIESCALAR { my $pack = shift; $pack->new(@_) }
- sub FETCH { shift }
- sub nop { } # Around a bug
+ sub TIESCALAR { my $pack = shift; $pack->new(@_) }
+ sub FETCH { shift }
+ sub nop { } # Around a bug
(the bug, fixed in Perl 5.14, is described in L<"BUGS">). One can use this
new interface as
- tie $a, 'symbolic', 3;
- tie $b, 'symbolic', 4;
- $a->nop; $b->nop; # Around a bug
+ tie $a, 'symbolic', 3;
+ tie $b, 'symbolic', 4;
+ $a->nop; $b->nop; # Around a bug
- my $c = sqrt($a**2 + $b**2);
+ my $c = sqrt($a**2 + $b**2);
Now numeric value of $c is 5. After C<$a = 12; $b = 5> the numeric value
of $c becomes 13. To insulate the user of the module add a method
- sub vars { my $p = shift; tie($_, $p), $_->nop foreach @_; }
+ sub vars { my $p = shift; tie($_, $p), $_->nop foreach @_; }
Now
- my ($a, $b);
- symbolic->vars($a, $b);
- my $c = sqrt($a**2 + $b**2);
+ my ($a, $b);
+ symbolic->vars($a, $b);
+ my $c = sqrt($a**2 + $b**2);
- $a = 3; $b = 4;
- printf "c5 %s=%f\n", $c, $c;
+ $a = 3; $b = 4;
+ printf "c5 %s=%f\n", $c, $c;
- $a = 12; $b = 5;
- printf "c13 %s=%f\n", $c, $c;
+ $a = 12; $b = 5;
+ printf "c13 %s=%f\n", $c, $c;
shows that the numeric value of $c follows changes to the values of $a
and $b.
@@ -1604,11 +1608,11 @@ A pitfall when fallback is TRUE and Perl resorts to a built-in
implementation of an operator is that some operators have more
than one semantic, for example C<|>:
- use overload '0+' => sub { $_[0]->{n}; },
- fallback => 1;
- my $x = bless { n => 4 }, "main";
- my $y = bless { n => 8 }, "main";
- print $x | $y, "\n";
+ use overload '0+' => sub { $_[0]->{n}; },
+ fallback => 1;
+ my $x = bless { n => 4 }, "main";
+ my $y = bless { n => 8 }, "main";
+ print $x | $y, "\n";
You might expect this to output "12".
In fact, it prints "<": the ASCII result of treating "|"
@@ -1694,3 +1698,4 @@ The range operator C<..> cannot be overloaded.
=cut
+# ex: set ts=8 sts=4 sw=4 et:
diff --git a/Master/tlpkg/tlperl/lib/overload/numbers.pm b/Master/tlpkg/tlperl/lib/overload/numbers.pm
index ccea9e17bc8..9a6f457e529 100644
--- a/Master/tlpkg/tlperl/lib/overload/numbers.pm
+++ b/Master/tlpkg/tlperl/lib/overload/numbers.pm
@@ -1,4 +1,4 @@
-# -*- buffer-read-only: t -*-
+# -*- mode: Perl; buffer-read-only: t -*-
#
# lib/overload/numbers.pm
#
@@ -173,4 +173,4 @@ our @enums = qw#
{ my $i = 0; our %enums = map { $_ => $i++ } @enums }
-# ex: set ro:
+# ex: set ro ft=perl:
diff --git a/Master/tlpkg/tlperl/lib/parent.pm b/Master/tlpkg/tlperl/lib/parent.pm
index f2405efe7ee..483aa3e0257 100644
--- a/Master/tlpkg/tlperl/lib/parent.pm
+++ b/Master/tlpkg/tlperl/lib/parent.pm
@@ -1,7 +1,7 @@
package parent;
use strict;
-our $VERSION = '0.238';
+our $VERSION = '0.241';
sub import {
my $class = shift;
diff --git a/Master/tlpkg/tlperl/lib/perl5db.pl b/Master/tlpkg/tlperl/lib/perl5db.pl
index 3ab6e577a2f..51da5740f80 100644
--- a/Master/tlpkg/tlperl/lib/perl5db.pl
+++ b/Master/tlpkg/tlperl/lib/perl5db.pl
@@ -10,7 +10,7 @@ perl5db.pl - the perl debugger
=head1 DESCRIPTION
C<perl5db.pl> is the perl debugger. It is loaded automatically by Perl when
-you invoke a script with C<perl -d>. This documentation tries to outline the
+you invoke a script with S<C<perl -d>>. This documentation tries to outline the
structure and services provided by C<perl5db.pl>, and to describe how you
can use them.
@@ -137,7 +137,7 @@ it?
=item *
First, doing an arithmetical or bitwise operation on a scalar is
-just about the fastest thing you can do in Perl: C<use constant> actually
+just about the fastest thing you can do in Perl: S<C<use constant>> actually
creates a subroutine call, and array and hash lookups are much slower. Is
this over-optimization at the expense of readability? Possibly, but the
debugger accesses these variables a I<lot>. Any rewrite of the code will
@@ -191,7 +191,7 @@ Values are magical in numeric context: 1 if the line is breakable, 0 if not.
The scalar C<${"_<$filename"}> simply contains the string C<$filename>.
This is also the case for evaluated strings that contain subroutines, or
which are currently being executed. The $filename for C<eval>ed strings looks
-like C<(eval 34)>.
+like S<C<(eval 34)>>.
=head1 DEBUGGER STARTUP
@@ -324,7 +324,7 @@ is entered or exited.
=back
-To get everything, use C<$frame=30> (or C<o f=30> as a debugger command).
+To get everything, use C<$frame=30> (or S<C<o f=30>> as a debugger command).
The debugger internally juggles the value of C<$frame> during execution to
protect external modules that the debugger uses from getting traced.
@@ -393,9 +393,10 @@ Controls the output of trace information.
=back
-=head4 C<$slave_editor>
+=head4 C<$client_editor>
-1 if C<LINEINFO> was directed to a pipe; 0 otherwise.
+1 if C<LINEINFO> was directed to a pipe; 0 otherwise. (The term
+C<$slave_editor> was formerly used here.)
=head4 C<@cmdfhs>
@@ -531,7 +532,7 @@ BEGIN {
use vars qw($VERSION $header);
# bump to X.XX in blead, only use X.XX_XX in maint
-$VERSION = '1.60';
+$VERSION = '1.77';
$header = "perl5db.pl version $VERSION";
@@ -857,7 +858,8 @@ in a currently executing thread, you will stay there until it completes. With
the current implementation it is not currently possible to hop from one thread
to another.
-The C<e> and C<E> commands are currently fairly minimal - see C<h e> and C<h E>.
+The C<e> and C<E> commands are currently fairly minimal - see
+S<C<h e>> and S<C<h E>>.
Note that threading support was built into the debugger as of Perl version
C<5.8.6> and debugger version C<1.2.8>.
@@ -875,8 +877,8 @@ BEGIN {
lock($DBGR);
print "Threads support enabled\n";
} else {
- *lock = sub(*) {};
- *share = sub(\[$@%]) {};
+ *lock = sub :prototype(*) {};
+ *share = sub :prototype(\[$@%]) {};
}
}
@@ -1221,9 +1223,9 @@ else {
use vars qw($pidprompt);
$pidprompt = '';
-# Sets up $emacs as a synonym for $slave_editor.
-our ($slave_editor);
-*emacs = $slave_editor if $slave_editor; # May be used in afterinit()...
+# Sets up $emacs as a synonym for $client_editor.
+our ($client_editor);
+*emacs = $client_editor if $client_editor; # May be used in afterinit()...
=head2 READING THE RC FILE
@@ -1504,7 +1506,7 @@ if ($notty) {
=pod
If there is a TTY, we have to determine who it belongs to before we can
-proceed. If this is a slave editor or graphical debugger (denoted by
+proceed. If this is a client editor or graphical debugger (denoted by
the first command-line switch being '-emacs'), we shift this off and
set C<$rl> to 0 (XXX ostensibly to do straight reads).
@@ -1512,9 +1514,9 @@ set C<$rl> to 0 (XXX ostensibly to do straight reads).
else {
- # Is Perl being run from a slave editor or graphical debugger?
- # If so, don't use readline, and set $slave_editor = 1.
- if ($slave_editor = ( @main::ARGV && ( $main::ARGV[0] eq '-emacs' ) )) {
+ # Is Perl being run from a client editor or graphical debugger?
+ # If so, don't use readline, and set $client_editor = 1.
+ if ($client_editor = ( @main::ARGV && ( $main::ARGV[0] eq '-emacs' ) )) {
$rl = 0;
shift(@main::ARGV);
}
@@ -1537,11 +1539,11 @@ We then determine what the console should be on various systems:
undef $console;
}
-=item * Windows or MSDOS - use C<con>.
+=item * Windows - use C<con>.
=cut
- elsif ( $^O eq 'dos' or -e "con" or $^O eq 'MSWin32' ) {
+ elsif ( $^O eq 'MSWin32' and -e "con" ) {
$console = "con";
}
@@ -1583,19 +1585,13 @@ We then determine what the console should be on various systems:
=back
-Several other systems don't use a specific console. We C<undef $console>
-for those (Windows using a slave editor/graphical debugger, NetWare, OS/2
-with a slave editor).
+Several other systems don't use a specific console. We S<C<undef $console>>
+for those (Windows using a client editor/graphical debugger, OS/2
+with a client editor).
=cut
- if ( ( $^O eq 'MSWin32' ) and ( $slave_editor or defined $ENV{EMACS} ) ) {
-
- # /dev/tty is binary. use stdin for textmode
- $console = undef;
- }
-
- if ( $^O eq 'NetWare' ) {
+ if ( ( $^O eq 'MSWin32' ) and ( $client_editor or defined $ENV{EMACS} ) ) {
# /dev/tty is binary. use stdin for textmode
$console = undef;
@@ -1603,7 +1599,7 @@ with a slave editor).
# In OS/2, we need to use STDIN to get textmode too, even though
# it pretty much looks like Unix otherwise.
- if ( defined $ENV{OS2_SHELL} and ( $slave_editor or $ENV{WINDOWID} ) )
+ if ( defined $ENV{OS2_SHELL} and ( $client_editor or $ENV{WINDOWID} ) )
{ # In OS/2
$console = undef;
}
@@ -1698,7 +1694,7 @@ and if we can.
_autoflush($OUT);
# Line info goes to debugger output unless pointed elsewhere.
- # Pointing elsewhere makes it possible for slave editors to
+ # Pointing elsewhere makes it possible for client editors to
# keep track of file and position. We have both a filehandle
# and a I/O description to keep track of.
$LINEINFO = $OUT unless defined $LINEINFO;
@@ -1725,7 +1721,7 @@ and then call the C<afterinit()> subroutine if there is one.
print $OUT "\nLoading DB routines from $header\n";
print $OUT (
"Editor support ",
- $slave_editor ? "enabled" : "available", ".\n"
+ $client_editor ? "enabled" : "available", ".\n"
);
print $OUT
"\nEnter h or 'h h' for help, or '$doccmd perldebug' for more help.\n\n";
@@ -2121,6 +2117,9 @@ sub _DB__handle_c_command {
return;
}
+my $sub_twice = chr utf8::unicode_to_native(032);
+$sub_twice = $sub_twice x 2;
+
sub _DB__handle_forward_slash_command {
my ($obj) = @_;
@@ -2182,9 +2181,9 @@ sub _DB__handle_forward_slash_command {
# expression would be better, so the user could
# do case-sensitive matching if desired.
if ($dbline[$start] =~ m/$pat/i) {
- if ($slave_editor) {
- # Handle proper escaping in the slave.
- print {$OUT} "\032\032$filename:$start:0\n";
+ if ($client_editor) {
+ # Handle proper escaping in the client.
+ print {$OUT} "$sub_twice$filename:$start:0\n";
}
else {
# Just print the line normally.
@@ -2260,9 +2259,9 @@ sub _DB__handle_question_mark_command {
# Match?
if ($dbline[$start] =~ m/$pat/i) {
- if ($slave_editor) {
- # Yep, follow slave editor requirements.
- print $OUT "\032\032$filename:$start:0\n";
+ if ($client_editor) {
+ # Yep, follow client editor requirements.
+ print $OUT "$sub_twice$filename:$start:0\n";
}
else {
# Yep, just print normally.
@@ -2544,7 +2543,7 @@ sub _DB__handle_i_command {
next CMD;
}
-=head3 C<cmd_l> - list lines (command)
+=head3 C<_cmd_l_main> - list lines (command)
Most of the command is taken up with transforming all the different line
specification syntaxes into 'start-stop'. After that is done, the command
@@ -2641,7 +2640,7 @@ sub _cmd_l_handle_subname {
# If we're not in that file, switch over to it.
if ( $file ne $filename ) {
- if (! $slave_editor) {
+ if (! $client_editor) {
print {$OUT} "Switching to file '$file'.\n";
}
@@ -2721,9 +2720,9 @@ sub _cmd_l_range {
my ($end, $i) =
_cmd_l_calc_initial_end_and_i($spec, $start_match, $end_match);
- # If we're running under a slave editor, force it to show the lines.
- if ($slave_editor) {
- print {$OUT} "\032\032$filename:$i:0\n";
+ # If we're running under a client editor, force it to show the lines.
+ if ($client_editor) {
+ print {$OUT} "$sub_twice$filename:$i:0\n";
$i = $end;
}
# We're doing it ourselves. We want to show the line and special
@@ -2768,7 +2767,7 @@ sub _cmd_l_range {
if ($dbline[ $i - 1 ] !~ /\n\z/) {
print {$OUT} "\n";
}
- } ## end else [ if ($slave_editor)
+ } ## end else [ if ($client_editor)
# Save the point we last listed to in case another relative 'l'
# command is desired. Don't let it run off the end.
@@ -2808,7 +2807,7 @@ sub _cmd_l_main {
}
return;
-} ## end sub cmd_l
+} ## end sub _cmd_l_main
sub _DB__handle_l_command {
my $self = shift;
@@ -3244,7 +3243,7 @@ and then we look up the line in the magical C<%dbline> hash.
We change C<$start> to be one window back; if we go back past the first line,
we set it to be the first line. We set C<$incr> to put us back at the
-currently-executing line, and then put a C<l $start +> (list one window from
+currently-executing line, and then put a S<C<l $start +>> (list one window from
C<$start>) in C<$cmd> to be executed later.
=head3 PRE-580 COMMANDS VS. NEW COMMANDS: C<a, A, b, B, h, l, L, M, o, O, P, v, w, W, E<lt>, E<lt>E<lt>, E<0x7B>, E<0x7B>E<0x7B>>
@@ -3259,7 +3258,7 @@ deal with them instead of processing them in-line.
=head4 C<y> - List lexicals in higher scope
Uses C<PadWalker> to find the lexicals supplied as arguments in a scope
-above the current one and then displays then using C<dumpvar.pl>.
+above the current one and then displays them using F<dumpvar.pl>.
=head3 COMMANDS NOT WORKING AFTER PROGRAM ENDS
@@ -3272,7 +3271,9 @@ they can't.
=head4 C<n> - single step, but don't trace down into subs
Done by setting C<$single> to 2, which forces subs to execute straight through
-when entered (see C<DB::sub>). We also save the C<n> command in C<$laststep>,
+when entered (see C<DB::sub> in L</DEBUGGER INTERFACE VARIABLES>). We also
+save the C<n> command in C<$laststep>,
+
so a null command knows what to re-execute.
=head4 C<s> - single-step, entering subs
@@ -3489,7 +3490,9 @@ again.
=cut
# No more commands? Quit.
- $fall_off_end = 1 unless defined $cmd; # Emulate 'q' on EOF
+ unless (defined $cmd) {
+ DB::Obj::_do_quit();
+ }
# Evaluate post-prompt commands.
foreach $evalarg (@$post) {
@@ -3630,10 +3633,10 @@ sub _DB__grab_control
my $self = shift;
# Yes, grab control.
- if ($slave_editor) {
+ if ($client_editor) {
# Tell the editor to update its position.
- $self->position("\032\032${DB::filename}:$line:0\n");
+ $self->position("$sub_twice${DB::filename}:$line:0\n");
DB::print_lineinfo($self->position());
}
@@ -3655,7 +3658,7 @@ to enter commands and have a valid context to be in.
DB::print_help(<<EOP);
Debugged program terminated. Use B<q> to quit or B<R> to restart,
use B<o> I<inhibit_exit> to avoid stopping after program termination,
-B<h q>, B<h R> or B<h o> to get additional info.
+S<B<h q>>, S<B<h R>> or S<B<h o>> to get additional info.
EOP
$DB::package = 'main';
@@ -3724,7 +3727,7 @@ number information, and print that.
$self->append_to_position($incr_pos);
$self->_my_print_lineinfo($i, $incr_pos);
} ## end for ($i = $line + 1 ; $i...
- } ## end else [ if ($slave_editor)
+ } ## end else [ if ($client_editor)
return;
}
@@ -4293,13 +4296,17 @@ sub _handle_x_command {
return;
}
+sub _do_quit {
+ $fall_off_end = 1;
+ DB::clean_ENV();
+ exit $?;
+}
+
sub _handle_q_command {
my $self = shift;
if ($self->_is_full('q')) {
- $fall_off_end = 1;
- DB::clean_ENV();
- exit $?;
+ _do_quit();
}
return;
@@ -4390,7 +4397,7 @@ The subroutine name; C<(eval)> if an C<eval>().
=item * C<$evaltext>
-The C<eval>() text, if any (undefined for C<eval BLOCK>)
+The C<eval>() text, if any (undefined for S<C<eval BLOCK>>)
=item * C<$is_require>
@@ -5137,8 +5144,10 @@ to the actual current file (the one we're executing in) and
C<$filename_error> is restored to C<"">. This restores everything to
the way it was before the second function was called at all.
-See the comments in C<breakable_line> and C<breakable_line_in_file> for more
-details.
+See the comments in L<S<C<sub breakable_line>>|/breakable_line(from, to) (API)>
+and
+L<S<C<sub breakable_line_in_filename>>|/breakable_line_in_filename(file, from, to) (API)>
+for more details.
=back
@@ -6001,7 +6010,7 @@ sub cmd_O {
=head3 C<cmd_v> - view window (command)
Uses the C<$preview> variable set in the second C<BEGIN> block (q.v.) to
-move back a few lines to list the selected line in context. Uses C<cmd_l>
+move back a few lines to list the selected line in context. Uses C<_cmd_l_main>
to do the actual listing after figuring out the range of line to request.
=cut
@@ -6027,11 +6036,11 @@ sub cmd_v {
# Back up by the context amount.
$start -= $preview;
- # Put together a linespec that cmd_l will like.
+ # Put together a linespec that _cmd_l_main will like.
$line = $start . '-' . ( $start + $incr );
# List the lines.
- cmd_l( 'l', $line );
+ _cmd_l_main( $line );
} ## end if ($line =~ /^(\d*)$/)
} ## end sub cmd_v
@@ -6185,7 +6194,7 @@ sub save {
print_lineinfo prints whatever it is that it is handed; it prints it to the
C<$LINEINFO> filehandle instead of just printing it to STDOUT. This allows
-us to feed line information to a slave editor without messing up the
+us to feed line information to a client editor without messing up the
debugger output.
=cut
@@ -6272,8 +6281,8 @@ sub postponed_sub {
Called after each required file is compiled, but before it is executed;
also called if the name of a just-compiled subroutine is a key of
-C<%postponed>. Propagates saved breakpoints (from C<b compile>, C<b load>,
-etc.) into the just-compiled code.
+C<%postponed>. Propagates saved breakpoints (from S<C<b compile>>,
+S<C<b load>>, etc.) into the just-compiled code.
If this is a C<require>'d file, the incoming parameter is the glob
C<*{"_<$filename"}>, with C<$filename> the name of the C<require>'d file.
@@ -6459,10 +6468,10 @@ sub print_trace {
local $\ = '';
my $fh = shift;
- # If this is going to a slave editor, but we're not the primary
+ # If this is going to a client editor, but we're not the primary
# debugger, reset it first.
resetterm(1)
- if $fh eq $LINEINFO # slave editor
+ if $fh eq $LINEINFO # client editor
and $LINEINFO eq $OUT # normal output
and $term_pid != $$; # not the primary
@@ -7217,7 +7226,7 @@ EOP
B<DB::get_fork_TTY()> returning this.
On I<UNIX>-like systems one can get the name of a I<TTY> for the given window
- by typing B<tty>, and disconnect the I<shell> from I<TTY> by B<sleep 1000000>.
+ by typing B<tty>, and disconnect the I<shell> from I<TTY> by S<B<sleep 1000000>>.
EOP
} ## end if (not defined $in)
@@ -7619,7 +7628,6 @@ sub set_list {
for my $i ( 0 .. $#list ) {
$val = $list[$i];
$val =~ s/\\/\\\\/g;
- no warnings 'experimental::regex_sets';
$val =~ s/ ( (?[ [\000-\xFF] & [:^print:] ]) ) /
"\\0x" . unpack('H2',$1)/xaeg;
$ENV{"${stem}_$i"} = $val;
@@ -7983,8 +7991,8 @@ sub LineInfo {
# '>' onto the front.
my $stream = ( $lineinfo =~ /^(\+?\>|\|)/ ) ? $lineinfo : ">$lineinfo";
- # If this is a pipe, the stream points to a slave editor.
- $slave_editor = ( $stream =~ /^\|/ );
+ # If this is a pipe, the stream points to a client editor.
+ $client_editor = ( $stream =~ /^\|/ );
my $new_lineinfo_fh;
# Open it up and unbuffer it.
@@ -8182,7 +8190,7 @@ B<|>I<dbcmd> Run debugger command, piping DB::OUT to current pager.
B<||>I<dbcmd> Same as B<|>I<dbcmd> but DB::OUT is temporarily select()ed as well.
B<\=> [I<alias> I<value>] Define a command alias, or list current aliases.
I<command> Execute as a perl statement in current package.
-B<R> Pure-man-restart of debugger, some of debugger state
+B<R> Poor man's restart of the debugger, some of debugger state
and command-line options may be lost.
Currently the following settings are preserved:
history, breakpoints and actions, debugger B<O>ptions
@@ -8358,7 +8366,7 @@ B<||>I<dbcmd> Same as B<|>I<dbcmd> but DB::OUT is temporarilly select()ed
B<\=> [I<alias> I<value>] Define a command alias, or list current aliases.
I<command> Execute as a perl statement in current package.
B<v> Show versions of loaded modules.
-B<R> Pure-man-restart of debugger, some of debugger state
+B<R> Poor man's restart of the debugger, some of debugger state
and command-line options may be lost.
Currently the following settings are preserved:
history, breakpoints and actions, debugger B<O>ptions
@@ -8975,7 +8983,7 @@ Just checks the contents of C<$^O> and sets the C<$doccmd> global accordingly.
=cut
sub setman {
- $doccmd = $^O !~ /^(?:MSWin32|VMS|os2|dos|amigaos|riscos|NetWare)\z/s
+ $doccmd = $^O !~ /^(?:MSWin32|VMS|os2|amigaos|riscos)\z/s
? "man" # O Happy Day!
: "perldoc"; # Alas, poor unfortunates
} ## end sub setman
@@ -9906,10 +9914,10 @@ from the environment.
# And run Perl again. Add the "-d" flag, all the
# flags we built up, the script (whether a one-liner
- # or a file), add on the -emacs flag for a slave editor,
+ # or a file), add on the -emacs flag for a client editor,
# and then the old arguments.
- return ($^X, '-d', @flags, @script, ($slave_editor ? '-emacs' : ()), @ARGS);
+ return ($^X, '-d', @flags, @script, ($client_editor ? '-emacs' : ()), @ARGS);
}; # end restart
@@ -10368,7 +10376,8 @@ sub cmd_prepost {
Contains the C<at_exit> routine that the debugger uses to issue the
C<Debugged program terminated ...> message after the program completes. See
-the C<END> block documentation for more details.
+the L<C<END>|/END PROCESSING - THE END BLOCK> block documentation for more
+details.
=cut
diff --git a/Master/tlpkg/tlperl/lib/perlfaq.pm b/Master/tlpkg/tlperl/lib/perlfaq.pm
index dcb5ea730b8..b1d29115e99 100644
--- a/Master/tlpkg/tlperl/lib/perlfaq.pm
+++ b/Master/tlpkg/tlperl/lib/perlfaq.pm
@@ -2,6 +2,6 @@ use strict;
use warnings;
package perlfaq;
-our $VERSION = '5.20210411';
+our $VERSION = '5.20210520';
1;
diff --git a/Master/tlpkg/tlperl/lib/perllocal.pod b/Master/tlpkg/tlperl/lib/perllocal.pod
index d08e2c9a36e..2a9e58b7cf1 100644
--- a/Master/tlpkg/tlperl/lib/perllocal.pod
+++ b/Master/tlpkg/tlperl/lib/perllocal.pod
@@ -1,10 +1,10 @@
-=head2 Tue Jul 12 09:48:50 2022: C<Module> L<Math::Int64|Math::Int64>
+=head2 Tue Feb 13 14:47:28 2024: C<Module> L<Math::Int64|Math::Int64>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -12,7 +12,7 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 0.54>
+C<VERSION: 0.57>
=item *
@@ -20,13 +20,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 09:54:16 2022: C<Module> L<IO::String|IO::String>
+=head2 Tue Feb 13 14:47:56 2024: C<Module> L<IO::String|IO::String>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -42,13 +42,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 09:54:45 2022: C<Module> L<File::Which|File::Which>
+=head2 Tue Feb 13 14:48:56 2024: C<Module> L<File::Which|File::Which>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -64,13 +64,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 09:55:07 2022: C<Module> L<Digest::SHA|Digest::SHA>
+=head2 Tue Feb 13 14:50:16 2024: C<Module> L<Digest::SHA|Digest::SHA>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -78,7 +78,7 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 6.02>
+C<VERSION: 6.04>
=item *
@@ -86,13 +86,13 @@ C<EXE_FILES: shasum>
=back
-=head2 Tue Jul 12 09:56:10 2022: C<Module> L<Encode::compat|Encode::compat>
+=head2 Tue Feb 13 14:51:10 2024: C<Module> L<Encode::compat|Encode::compat>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -108,13 +108,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 09:56:29 2022: C<Module> L<Encode::Locale|Encode::Locale>
+=head2 Tue Feb 13 14:51:36 2024: C<Module> L<Encode::Locale|Encode::Locale>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -130,13 +130,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 09:56:51 2022: C<Module> L<Win32::API|Win32::API>
+=head2 Tue Feb 13 14:52:37 2024: C<Module> L<Win32::API|Win32::API>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -152,13 +152,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 09:59:18 2022: C<Module> L<Win32API::Registry|Win32API::Registry>
+=head2 Tue Feb 13 14:54:26 2024: C<Module> L<Win32API::Registry|Win32API::Registry>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -174,13 +174,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:00:04 2022: C<Module> L<Win32::Console|Win32::Console>
+=head2 Tue Feb 13 14:55:31 2024: C<Module> L<Win32::Console|Win32::Console>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -196,13 +196,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:00:32 2022: C<Module> L<Win32::TieRegistry|Win32::TieRegistry>
+=head2 Tue Feb 13 14:56:13 2024: C<Module> L<Win32::TieRegistry|Win32::TieRegistry>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -218,13 +218,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:00:51 2022: C<Module> L<Win32::Shortcut|Win32::Shortcut>
+=head2 Tue Feb 13 14:56:47 2024: C<Module> L<Win32::Shortcut|Win32::Shortcut>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -240,13 +240,57 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:01:24 2022: C<Module> L<Date::Parse|Date::Parse>
+=head2 Tue Feb 13 14:59:52 2024: C<Module> L<Cpanel::JSON::XS|Cpanel::JSON::XS>
+
+=over 4
+
+=item *
+
+C<installed into: d:\tlperl\site\lib>
+
+=item *
+
+C<LINKTYPE: dynamic>
+
+=item *
+
+C<VERSION: 4.37>
+
+=item *
+
+C<EXE_FILES: bin/cpanel_json_xs>
+
+=back
+
+=head2 Tue Feb 13 19:02:15 2024: C<Module> L<Socket|Socket>
+
+=over 4
+
+=item *
+
+C<installed into: d:\tlperl\site\lib>
+
+=item *
+
+C<LINKTYPE: dynamic>
+
+=item *
+
+C<VERSION: 2.037>
+
+=item *
+
+C<EXE_FILES: >
+
+=back
+
+=head2 Tue Feb 13 19:03:02 2024: C<Module> L<Date::Parse|Date::Parse>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -262,13 +306,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:01:51 2022: C<Module> L<HTTP::Date|HTTP::Date>
+=head2 Tue Feb 13 19:08:57 2024: C<Module> L<HTTP::Date|HTTP::Date>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -276,7 +320,7 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 6.05>
+C<VERSION: 6.06>
=item *
@@ -284,13 +328,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:02:10 2022: C<Module> L<File::Listing|File::Listing>
+=head2 Tue Feb 13 19:09:20 2024: C<Module> L<File::Listing|File::Listing>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -298,7 +342,7 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 6.14>
+C<VERSION: 6.16>
=item *
@@ -306,13 +350,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:02:32 2022: C<Module> L<IO::HTML|IO::HTML>
+=head2 Tue Feb 13 19:09:58 2024: C<Module> L<IO::HTML|IO::HTML>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -328,13 +372,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:02:51 2022: C<Module> L<Try::Tiny|Try::Tiny>
+=head2 Tue Feb 13 19:10:35 2024: C<Module> L<Try::Tiny|Try::Tiny>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -350,13 +394,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:19:14 2022: C<Module> L<Test::Fatal|Test::Fatal>
+=head2 Tue Feb 13 19:11:32 2024: C<Module> L<Test::Fatal|Test::Fatal>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -364,7 +408,7 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 0.016>
+C<VERSION: 0.017>
=item *
@@ -372,13 +416,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:19:35 2022: C<Module> L<Test::Needs|Test::Needs>
+=head2 Tue Feb 13 19:12:32 2024: C<Module> L<Test::Needs|Test::Needs>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -386,7 +430,7 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 0.002009>
+C<VERSION: 0.002010>
=item *
@@ -394,13 +438,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:19:51 2022: C<Module> L<LWP::MediaTypes|LWP::MediaTypes>
+=head2 Tue Feb 13 19:13:04 2024: C<Module> L<LWP::MediaTypes|LWP::MediaTypes>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -416,13 +460,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:20:09 2022: C<Module> L<URI|URI>
+=head2 Tue Feb 13 19:22:03 2024: C<Module> L<Test::Warnings|Test::Warnings>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -430,7 +474,7 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 5.10>
+C<VERSION: 0.033>
=item *
@@ -438,13 +482,57 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:20:26 2022: C<Module> L<HTTP::Message|HTTP::Message>
+=head2 Tue Feb 13 19:22:35 2024: C<Module> L<URI|URI>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
+
+=item *
+
+C<LINKTYPE: dynamic>
+
+=item *
+
+C<VERSION: 5.27>
+
+=item *
+
+C<EXE_FILES: >
+
+=back
+
+=head2 Tue Feb 13 19:27:56 2024: C<Module> L<Test::Harness|Test::Harness>
+
+=over 4
+
+=item *
+
+C<installed into: d:\tlperl\site\lib>
+
+=item *
+
+C<LINKTYPE: dynamic>
+
+=item *
+
+C<VERSION: 3.48>
+
+=item *
+
+C<EXE_FILES: bin/prove>
+
+=back
+
+=head2 Tue Feb 13 19:36:19 2024: C<Module> L<HTTP::Message|HTTP::Message>
+
+=over 4
+
+=item *
+
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -460,13 +548,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:20:44 2022: C<Module> L<HTML::Tagset|HTML::Tagset>
+=head2 Tue Feb 13 19:41:22 2024: C<Module> L<HTML::Tagset|HTML::Tagset>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -482,13 +570,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:21:26 2022: C<Module> L<HTML::Parser|HTML::Parser>
+=head2 Tue Feb 13 19:42:23 2024: C<Module> L<HTML::Parser|HTML::Parser>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -496,7 +584,7 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 3.76>
+C<VERSION: 3.81>
=item *
@@ -504,13 +592,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:21:50 2022: C<Module> L<WWW::RobotRules|WWW::RobotRules>
+=head2 Tue Feb 13 19:44:00 2024: C<Module> L<WWW::RobotRules|WWW::RobotRules>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -526,13 +614,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:22:07 2022: C<Module> L<HTTP::Negotiate|HTTP::Negotiate>
+=head2 Tue Feb 13 19:44:29 2024: C<Module> L<HTTP::Negotiate|HTTP::Negotiate>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -548,13 +636,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:22:31 2022: C<Module> L<Net::HTTP|Net::HTTP>
+=head2 Tue Feb 13 19:45:04 2024: C<Module> L<Net::HTTP|Net::HTTP>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -562,7 +650,7 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 6.22>
+C<VERSION: 6.23>
=item *
@@ -570,13 +658,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:22:48 2022: C<Module> L<Mozilla::CA|Mozilla::CA>
+=head2 Tue Feb 13 19:45:43 2024: C<Module> L<Mozilla::CA|Mozilla::CA>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -584,7 +672,7 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 20211001>
+C<VERSION: 20231213>
=item *
@@ -592,13 +680,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:23:15 2022: C<Module> L<HTTP::Daemon|HTTP::Daemon>
+=head2 Tue Feb 13 19:46:18 2024: C<Module> L<HTTP::Daemon|HTTP::Daemon>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -606,7 +694,7 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 6.14>
+C<VERSION: 6.16>
=item *
@@ -614,13 +702,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:44:24 2022: C<Module> L<HTTP::Cookies|HTTP::Cookies>
+=head2 Tue Feb 13 19:56:31 2024: C<Module> L<ExtUtils::Config|ExtUtils::Config>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -628,7 +716,7 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 6.10>
+C<VERSION: 0.008>
=item *
@@ -636,13 +724,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:44:56 2022: C<Module> L<Test::RequiresInternet|Test::RequiresInternet>
+=head2 Tue Feb 13 19:57:40 2024: C<Module> L<ExtUtils::Config|ExtUtils::Config>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -650,7 +738,7 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 0.05>
+C<VERSION: 0.008>
=item *
@@ -658,13 +746,13 @@ C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:45:58 2022: C<Module> L<libwww::perl|libwww::perl>
+=head2 Tue Feb 13 20:03:27 2024: C<Module> L<ExtUtils::Helpers|ExtUtils::Helpers>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -672,21 +760,21 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 6.61>
+C<VERSION: 0.026>
=item *
-C<EXE_FILES: bin/lwp-download bin/lwp-dump bin/lwp-mirror bin/lwp-request>
+C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:46:22 2022: C<Module> L<Cpanel::JSON::XS|Cpanel::JSON::XS>
+=head2 Tue Feb 13 20:08:52 2024: C<Module> L<ExtUtils::InstallPaths|ExtUtils::InstallPaths>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
@@ -694,21 +782,87 @@ C<LINKTYPE: dynamic>
=item *
-C<VERSION: 4.27>
+C<VERSION: 0.012>
=item *
-C<EXE_FILES: bin/cpanel_json_xs>
+C<EXE_FILES: >
+
+=back
+
+=head2 Tue Feb 13 20:18:08 2024: C<Module> L<HTTP::Daemon|HTTP::Daemon>
+
+=over 4
+
+=item *
+
+C<installed into: d:\tlperl\site\lib>
+
+=item *
+
+C<LINKTYPE: dynamic>
+
+=item *
+
+C<VERSION: 6.16>
+
+=item *
+
+C<EXE_FILES: >
+
+=back
+
+=head2 Tue Feb 13 20:19:09 2024: C<Module> L<HTTP::Cookies|HTTP::Cookies>
+
+=over 4
+
+=item *
+
+C<installed into: d:\tlperl\site\lib>
+
+=item *
+
+C<LINKTYPE: dynamic>
+
+=item *
+
+C<VERSION: 6.11>
+
+=item *
+
+C<EXE_FILES: >
+
+=back
+
+=head2 Tue Feb 13 20:19:35 2024: C<Module> L<Test::RequiresInternet|Test::RequiresInternet>
+
+=over 4
+
+=item *
+
+C<installed into: d:\tlperl\site\lib>
+
+=item *
+
+C<LINKTYPE: dynamic>
+
+=item *
+
+C<VERSION: 0.05>
+
+=item *
+
+C<EXE_FILES: >
=back
-=head2 Tue Jul 12 10:46:50 2022: C<Module> L<JSON::MaybeXS|JSON::MaybeXS>
+=head2 Thu Feb 15 14:10:53 2024: C<Module> L<JSON::MaybeXS|JSON::MaybeXS>
=over 4
=item *
-C<installed into: E:\tlperl\site\lib>
+C<installed into: d:\tlperl\site\lib>
=item *
diff --git a/Master/tlpkg/tlperl/lib/re.pm b/Master/tlpkg/tlperl/lib/re.pm
index d1db4625c00..6da4e02f324 100644
--- a/Master/tlpkg/tlperl/lib/re.pm
+++ b/Master/tlpkg/tlperl/lib/re.pm
@@ -4,7 +4,7 @@ package re;
use strict;
use warnings;
-our $VERSION = "0.41";
+our $VERSION = "0.44";
our @ISA = qw(Exporter);
our @EXPORT_OK = qw{
is_regexp regexp_pattern
@@ -71,8 +71,6 @@ my %flags = (
EXTRA => 0x3FF0000,
TRIEM => 0x0010000,
- OFFSETS => 0x0020000,
- OFFSETSDBG => 0x0040000,
STATE => 0x0080000,
OPTIMISEM => 0x0100000,
STACK => 0x0280000,
@@ -81,9 +79,7 @@ my %flags = (
DUMP_PRE_OPTIMIZE => 0x1000000,
WILDCARD => 0x2000000,
);
-$flags{ALL} = -1 & ~($flags{OFFSETS}
- |$flags{OFFSETSDBG}
- |$flags{BUFFERS}
+$flags{ALL} = -1 & ~($flags{BUFFERS}
|$flags{DUMP_PRE_OPTIMIZE}
|$flags{WILDCARD}
);
@@ -517,6 +513,12 @@ comma-separated list of C<termcap> properties to use for highlighting
strings on/off, pre-point part on/off.
See L<perldebug/"Debugging Regular Expressions"> for additional info.
+B<NOTE> that the exact format of the C<debug> mode is B<NOT> considered
+to be an officially supported API of Perl. It is intended for debugging
+only and may change as the core development team deems appropriate
+without notice or deprecation in any release of Perl, major or minor.
+Any documentation of the output is purely advisory.
+
As of 5.9.5 the directive C<use re 'debug'> and its equivalents are
lexically scoped, as the other directives are. However they have both
compile-time and run-time effects.
@@ -529,7 +531,17 @@ Similarly C<use re 'Debug'> produces debugging output, the difference
being that it allows the fine tuning of what debugging output will be
emitted. Options are divided into three groups, those related to
compilation, those related to execution and those related to special
-purposes. The options are as follows:
+purposes.
+
+B<NOTE> that the options provided under the C<Debug> mode and the exact
+format of the output they create is B<NOT> considered to be an
+officially supported API of Perl. It is intended for debugging only and
+may change as the core development team deems appropriate without notice
+or deprecation in any release of Perl, major or minor. Any documentation
+of the format or options available is advisory only and is subject to
+change without notice.
+
+The options are as follows:
=over 4
@@ -626,26 +638,6 @@ Enable debugging of the \G modifier.
Enable enhanced optimisation debugging and start-point optimisations.
Probably not useful except when debugging the regexp engine itself.
-=item OFFSETS
-
-Dump offset information. This can be used to see how regops correlate
-to the pattern. Output format is
-
- NODENUM:POSITION[LENGTH]
-
-Where 1 is the position of the first char in the string. Note that position
-can be 0, or larger than the actual length of the pattern, likewise length
-can be zero.
-
-=item OFFSETSDBG
-
-Enable debugging of offsets information. This emits copious
-amounts of trace information and doesn't mesh well with other
-debug options.
-
-Almost definitely only useful to people hacking
-on the offsets part of the debug engine.
-
=item DUMP_PRE_OPTIMIZE
Enable the dumping of the compiled pattern before the optimization phase.
@@ -687,8 +679,7 @@ These are useful shortcuts to save on the typing.
=item ALL
-Enable all options at once except OFFSETS, OFFSETSDBG, BUFFERS, WILDCARD, and
-DUMP_PRE_OPTIMIZE.
+Enable all options at once except BUFFERS, WILDCARD, and DUMP_PRE_OPTIMIZE.
(To get every single option without exception, use both ALL and EXTRA, or
starting in 5.30 on a C<-DDEBUGGING>-enabled perl interpreter, use
the B<-Drv> command-line switches.)
diff --git a/Master/tlpkg/tlperl/lib/sigtrap.pm b/Master/tlpkg/tlperl/lib/sigtrap.pm
index 11d670942bb..4e5be44e855 100644
--- a/Master/tlpkg/tlperl/lib/sigtrap.pm
+++ b/Master/tlpkg/tlperl/lib/sigtrap.pm
@@ -8,7 +8,7 @@ sigtrap - Perl pragma to enable simple signal handling
use Carp;
-$VERSION = 1.09;
+$VERSION = '1.10';
$Verbose ||= 0;
sub import {
@@ -184,7 +184,7 @@ handlers. You can have it install one of two handlers supplied by
B<sigtrap> itself (one which provides a Perl stack trace and one which
simply C<die()>s), or alternately you can supply your own handler for it
to install. It can be told only to install a handler for signals which
-are either untrapped or ignored. It has a couple of lists of signals to
+are either untrapped or ignored. It has three lists of signals to
trap, plus you can supply your own list of signals.
The arguments passed to the C<use> statement which invokes B<sigtrap>
@@ -307,7 +307,7 @@ signals which are already trapped or ignored:
use sigtrap qw(die untrapped normal-signals);
-Die on receipt one of an of the B<normal-signals> which is currently
+Die on receipt one of any of the B<normal-signals> which is currently
B<untrapped>, provide a stack trace on receipt of B<any> of the
B<error-signals>:
diff --git a/Master/tlpkg/tlperl/lib/sort.pm b/Master/tlpkg/tlperl/lib/sort.pm
index 659f3e4f4d8..f76a30bfc52 100644
--- a/Master/tlpkg/tlperl/lib/sort.pm
+++ b/Master/tlpkg/tlperl/lib/sort.pm
@@ -1,14 +1,9 @@
package sort;
-our $VERSION = '2.04';
-
-# The hints for pp_sort are now stored in $^H{sort}; older versions
-# of perl used the global variable $sort::hints. -- rjh 2005-12-19
-
-$sort::stable_bit = 0x00000100;
-$sort::unstable_bit = 0x00000200;
-
use strict;
+use warnings;
+
+our $VERSION = '2.05';
sub import {
shift;
@@ -16,18 +11,12 @@ sub import {
require Carp;
Carp::croak("sort pragma requires arguments");
}
- local $_;
$^H{sort} //= 0;
- while ($_ = shift(@_)) {
- if ($_ eq 'stable') {
- $^H{sort} |= $sort::stable_bit;
- $^H{sort} &= ~$sort::unstable_bit;
- } elsif ($_ eq 'defaults') {
- $^H{sort} = 0;
- } else {
- require Carp;
- Carp::croak("sort: unknown subpragma '$_'");
- }
+ for my $subpragma (@_) {
+ next
+ if $subpragma eq 'stable' || $subpragma eq 'defaults';
+ require Carp;
+ Carp::croak("sort: unknown subpragma '$_'");
}
}
@@ -37,25 +26,17 @@ sub unimport {
require Carp;
Carp::croak("sort pragma requires arguments");
}
- local $_;
- no warnings 'uninitialized'; # bitops would warn
- while ($_ = shift(@_)) {
- if ($_ eq 'stable') {
- $^H{sort} &= ~$sort::stable_bit;
- $^H{sort} |= $sort::unstable_bit;
- } else {
- require Carp;
- Carp::croak("sort: unknown subpragma '$_'");
- }
+ for my $subpragma (@_) {
+ next
+ if $subpragma eq 'stable';
+ require Carp;
+ Carp::croak("sort: unknown subpragma '$_'");
}
}
sub current {
- my @sort;
- if ($^H{sort}) {
- push @sort, 'stable' if $^H{sort} & $sort::stable_bit;
- }
- join(' ', @sort);
+ warnings::warnif("deprecated", "sort::current is deprecated, and will always return 'stable'");
+ return 'stable';
}
1;
@@ -67,86 +48,54 @@ sort - perl pragma to control sort() behaviour
=head1 SYNOPSIS
+The sort pragma is now a no-op, and its use is discouraged. These three
+operations are valid, but have no effect:
+
use sort 'stable'; # guarantee stability
use sort 'defaults'; # revert to default behavior
no sort 'stable'; # stability not important
- my $current;
- BEGIN {
- $current = sort::current(); # identify prevailing pragmata
- }
-
=head1 DESCRIPTION
-With the C<sort> pragma you can control the behaviour of the builtin
+Historically the C<sort> pragma you can control the behaviour of the builtin
C<sort()> function.
-A stable sort means that for records that compare equal, the original
-input ordering is preserved.
-Stability will matter only if elements that compare equal can be
-distinguished in some other way. That means that simple numerical
-and lexical sorts do not profit from stability, since equal elements
-are indistinguishable. However, with a comparison such as
+Prior to v5.28.0 there were two other options:
- { substr($a, 0, 3) cmp substr($b, 0, 3) }
+ use sort '_mergesort';
+ use sort '_qsort'; # or '_quicksort'
-stability might matter because elements that compare equal on the
-first 3 characters may be distinguished based on subsequent characters.
+If you try and specify either of these in v5.28+ it will croak.
-Whether sorting is stable by default is an accident of implementation
-that can change (and has changed) between Perl versions.
-If stability is important, be sure to
-say so with a
+The default sort has been stable since v5.8.0, and given this consistent
+behaviour for almost two decades, everyone has come to assume stability.
- use sort 'stable';
+Stability will remain the default - hence there is no need for a pragma for
+code to opt into stability "just in case" this changes - it won't.
-The C<no sort> pragma doesn't
-I<forbid> what follows, it just leaves the choice open. Thus, after
+We do not foresee going back to offering multiple implementations of general
+purpose sorting - hence there is no future need to offer a pragma to choose
+between them.
- no sort 'stable';
+If you know that you care that much about performance of your sorting, and
+that for your use case and your data, it was worth investigating
+alternatives, possible to identify an alternative from our default that was
+better, and the cost of switching was worth it, then you know more than we
+do. Likely whatever choices we can give are not as good as implementing your
+own. (For example, a Radix sort can be faster than O(n log n), but can't be
+used for all keys and has larger overheads.)
-sorting may happen to be stable anyway.
+We are not averse to B<changing> the sort algorithm, but we don't see the
+benefit in offering the choice of two general purpose implementations.
=head1 CAVEATS
-As of Perl 5.10, this pragma is lexically scoped and takes effect
-at compile time. In earlier versions its effect was global and took
-effect at run-time; the documentation suggested using C<eval()> to
-change the behaviour:
-
- { eval 'no sort "stable"'; # stability not wanted
- print sort::current . "\n";
- @a = sort @b;
- eval 'use sort "defaults"'; # clean up, for others
- }
- { eval 'use sort qw(defaults stable)'; # force stability
- print sort::current . "\n";
- @c = sort @d;
- eval 'use sort "defaults"'; # clean up, for others
- }
-
-Such code no longer has the desired effect, for two reasons.
-Firstly, the use of C<eval()> means that the sorting algorithm
-is not changed until runtime, by which time it's too late to
-have any effect. Secondly, C<sort::current> is also called at
-run-time, when in fact the compile-time value of C<sort::current>
-is the one that matters.
-
-So now this code would be written:
-
- { no sort "stable"; # stability not wanted
- my $current;
- BEGIN { $current = sort::current; }
- print "$current\n";
- @a = sort @b;
- # Pragmas go out of scope at the end of the block
- }
- { use sort qw(defaults stable); # force stability
- my $current;
- BEGIN { $current = sort::current; }
- print "$current\n";
- @c = sort @d;
- }
+The function C<sort::current()> was provided to report the current state of
+the sort pragmata. This function was not exported, and there is no code to
+call it on CPAN. It is now deprecated, and will warn by default.
-=cut
+As we no longer store any sort "state", it can no longer return the correct
+value, so it will always return the string C<stable>, as this is consistent
+with what we actually have implemented.
+=cut
diff --git a/Master/tlpkg/tlperl/lib/stable.pm b/Master/tlpkg/tlperl/lib/stable.pm
new file mode 100755
index 00000000000..7922a2e91b6
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/stable.pm
@@ -0,0 +1,159 @@
+package stable;
+$stable::VERSION = '0.031';
+use strict;
+use warnings;
+use version ();
+
+use experimental ();
+use Carp qw/croak carp/;
+
+my %allow_at = (
+ bitwise => 5.022000,
+ isa => 5.032000,
+ lexical_subs => 5.022000,
+ postderef => 5.020000,
+);
+
+sub import {
+ my ($self, @pragmas) = @_;
+
+ for my $pragma (@pragmas) {
+ my $min_ver = $allow_at{$pragma};
+ croak "unknown stablized experiment $pragma" unless defined $min_ver;
+ croak "requested stablized experiment $pragma, which is stable at $min_ver but this is $]"
+ unless $] >= $min_ver;
+ }
+
+ experimental->import(@pragmas);
+ return;
+}
+
+sub unimport {
+ my ($self, @pragmas) = @_;
+
+ # Look, we could say "You can't unimport stable experiment 'bitwise' on
+ # 5.20" but it just seems weird. -- rjbs, 2022-03-05
+ experimental->unimport(@pragmas);
+ return;
+}
+
+1;
+
+#ABSTRACT: Experimental features made easy, once we know they're stable
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+stable - Experimental features made easy, once we know they're stable
+
+=head1 VERSION
+
+version 0.031
+
+=head1 SYNOPSIS
+
+ use stable 'lexical_subs', 'bitwise';
+ my sub is_odd($value) { $value & 1 }
+
+=head1 DESCRIPTION
+
+The L<experimental> pragma makes it easy to turn on experimental while turning
+off associated warnings. You should read about it, if you don't already know
+what it does.
+
+Seeing C<use experimental> in code might be scary. In fact, it probably should
+be! Code that uses experimental features might break in the future if the perl
+development team decides that the experiment needs to be altered. When
+experiments become stable, because the developers decide they're a success, the
+warnings associated with them go away. When that happens, they can generally
+be turned on with C<use feature>.
+
+This is great, if you are using a version of perl where the feature you want is
+already stable. If you're using an older perl, though, it might be the case
+that you want to use an experimental feature that still warns, even though
+there's no risk in using it, because subsequent versions of perl have that
+feature unchanged and now stable.
+
+Here's an example: The C<postderef> feature was added in perl 5.20.0. In perl
+5.24.0, it was marked stable. Using it would no longer trigger a warning. The
+behavior of the feature didn't change between 5.20.0 and 5.24.0. That means
+that it's perfectly safe to use the feature on 5.20 or 5.22, even though
+there's a warning.
+
+In that case, you could very justifiably add C<use experimental 'postderef'>
+but the casual reader may still be worried at seeing that. The C<stable>
+pragma exists to turn on experimental features only when it's known that
+their behavior in the running perl is their stable behavior.
+
+If you try to use an experimental feature that isn't stable or available on
+the running version of perl, an exception will be thrown. You should also take
+care that you've required the version of C<stable> that you need!
+
+If it's not immediately obvious why, here's a bit of explanation:
+
+=over 4
+
+=item *
+
+C<stable> comes with perl, starting with perl v5.38.
+
+=item *
+
+Imagine that v5.38 adds a feature called "florps". It will stop being
+experimental in v5.42.
+
+=item *
+
+The version of C<stable> that comes with perl v5.38 can't know that the
+I<florps> experiment will succeed, so you can't C<use stable 'florps'> on the
+version of stable ships with v5.38, because it can't see the future!
+
+=item *
+
+You'll need to write C<use stable 1.234 'florps'> to say that you need version
+1.234 of stable, which is when I<florps> became known to stable.
+
+=back
+
+Sure, it's a little weird, but it's worth it! The documentation of this pragma
+will tell you what version of C<stable> you need to require in order to use
+various features. See below.
+
+At present there are only a few "stable" features:
+
+=over 4
+
+=item * C<bitwise> - stable as of perl 5.22, available via stable 0.031
+
+=item * C<isa> - stable as of perl 5.32, available via stable 0.031
+
+=item * C<lexical_subs> - stable as of perl 5.22, available via stable 0.031
+
+Lexical subroutines were actually added in 5.18, and their design did not
+change, but significant bugs makes them unsafe to use before 5.22.
+
+=item * C<postderef> - stable as of perl 5.20, available via stable 0.031
+
+=back
+
+=head1 SEE ALSO
+
+L<perlexperiment|perlexperiment> contains more information about experimental features.
+
+=head1 AUTHOR
+
+Leon Timmermans <leont@cpan.org>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2013 by Leon Timmermans.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+=cut
diff --git a/Master/tlpkg/tlperl/lib/threads.pm b/Master/tlpkg/tlperl/lib/threads.pm
index 4453a8d48e6..ecf025d2755 100644
--- a/Master/tlpkg/tlperl/lib/threads.pm
+++ b/Master/tlpkg/tlperl/lib/threads.pm
@@ -5,7 +5,7 @@ use 5.008;
use strict;
use warnings;
-our $VERSION = '2.26'; # remember to update version in POD!
+our $VERSION = '2.36'; # remember to update version in POD!
my $XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -134,7 +134,7 @@ threads - Perl interpreter-based threads
=head1 VERSION
-This document describes threads version 2.26
+This document describes threads version 2.36
=head1 WARNING
@@ -1026,7 +1026,7 @@ signalling behavior is only in effect in the following situations:
=over 4
-=item * Perl has been built with C<PERL_OLD_SIGNALS> (see C<perl -V>).
+=item * Perl has been built with C<PERL_OLD_SIGNALS> (see S<C<perl -V>>).
=item * The environment variable C<PERL_SIGNALS> is set to C<unsafe>
(see L<perlrun/"PERL_SIGNALS">).
diff --git a/Master/tlpkg/tlperl/lib/threads/shared.pm b/Master/tlpkg/tlperl/lib/threads/shared.pm
index 3674d833251..6e67acd438f 100644
--- a/Master/tlpkg/tlperl/lib/threads/shared.pm
+++ b/Master/tlpkg/tlperl/lib/threads/shared.pm
@@ -8,7 +8,7 @@ use Config;
use Scalar::Util qw(reftype refaddr blessed);
-our $VERSION = '1.62'; # Please update the pod, too.
+our $VERSION = '1.68'; # Please update the pod, too.
my $XS_VERSION = $VERSION;
$VERSION = eval $VERSION;
@@ -196,7 +196,7 @@ threads::shared - Perl extension for sharing data structures between threads
=head1 VERSION
-This document describes threads::shared version 1.62
+This document describes threads::shared version 1.68
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/lib/unicore/Blocks.txt b/Master/tlpkg/tlperl/lib/unicore/Blocks.txt
index 56877db10f3..12684594c9f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/Blocks.txt
+++ b/Master/tlpkg/tlperl/lib/unicore/Blocks.txt
@@ -1,10 +1,10 @@
-# Blocks-13.0.0.txt
-# Date: 2019-07-10, 19:06:00 GMT [KW]
-# © 2019 Unicode®, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
+# Blocks-15.0.0.txt
+# Date: 2022-01-28, 20:58:00 GMT [KW]
+# © 2022 Unicode®, Inc.
+# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
-# For documentation, see http://www.unicode.org/reports/tr44/
+# For documentation, see https://www.unicode.org/reports/tr44/
#
# Format:
# Start Code..End Code; Block Name
@@ -15,7 +15,7 @@
# and underbars are ignored.
# For example, "Latin Extended-A" and "latin extended a" are equivalent.
# For more information on the comparison of property values,
-# see UAX #44: http://www.unicode.org/reports/tr44/
+# see UAX #44: https://www.unicode.org/reports/tr44/
#
# All block ranges start with a value where (cp MOD 16) = 0,
# and end with a value where (cp MOD 16) = 15. In other words,
@@ -52,6 +52,7 @@
0800..083F; Samaritan
0840..085F; Mandaic
0860..086F; Syriac Supplement
+0870..089F; Arabic Extended-B
08A0..08FF; Arabic Extended-A
0900..097F; Devanagari
0980..09FF; Bengali
@@ -215,7 +216,9 @@ FFF0..FFFF; Specials
104B0..104FF; Osage
10500..1052F; Elbasan
10530..1056F; Caucasian Albanian
+10570..105BF; Vithkuqi
10600..1077F; Linear A
+10780..107BF; Latin Extended-F
10800..1083F; Cypriot Syllabary
10840..1085F; Imperial Aramaic
10860..1087F; Palmyrene
@@ -238,8 +241,10 @@ FFF0..FFFF; Specials
10D00..10D3F; Hanifi Rohingya
10E60..10E7F; Rumi Numeral Symbols
10E80..10EBF; Yezidi
+10EC0..10EFF; Arabic Extended-C
10F00..10F2F; Old Sogdian
10F30..10F6F; Sogdian
+10F70..10FAF; Old Uyghur
10FB0..10FDF; Chorasmian
10FE0..10FFF; Elymaic
11000..1107F; Brahmi
@@ -259,29 +264,34 @@ FFF0..FFFF; Specials
11600..1165F; Modi
11660..1167F; Mongolian Supplement
11680..116CF; Takri
-11700..1173F; Ahom
+11700..1174F; Ahom
11800..1184F; Dogra
118A0..118FF; Warang Citi
11900..1195F; Dives Akuru
119A0..119FF; Nandinagari
11A00..11A4F; Zanabazar Square
11A50..11AAF; Soyombo
+11AB0..11ABF; Unified Canadian Aboriginal Syllabics Extended-A
11AC0..11AFF; Pau Cin Hau
+11B00..11B5F; Devanagari Extended-A
11C00..11C6F; Bhaiksuki
11C70..11CBF; Marchen
11D00..11D5F; Masaram Gondi
11D60..11DAF; Gunjala Gondi
11EE0..11EFF; Makasar
+11F00..11F5F; Kawi
11FB0..11FBF; Lisu Supplement
11FC0..11FFF; Tamil Supplement
12000..123FF; Cuneiform
12400..1247F; Cuneiform Numbers and Punctuation
12480..1254F; Early Dynastic Cuneiform
+12F90..12FFF; Cypro-Minoan
13000..1342F; Egyptian Hieroglyphs
-13430..1343F; Egyptian Hieroglyph Format Controls
+13430..1345F; Egyptian Hieroglyph Format Controls
14400..1467F; Anatolian Hieroglyphs
16800..16A3F; Bamum Supplement
16A40..16A6F; Mro
+16A70..16ACF; Tangsa
16AD0..16AFF; Bassa Vah
16B00..16B8F; Pahawh Hmong
16E40..16E9F; Medefaidrin
@@ -290,24 +300,32 @@ FFF0..FFFF; Specials
17000..187FF; Tangut
18800..18AFF; Tangut Components
18B00..18CFF; Khitan Small Script
-18D00..18D8F; Tangut Supplement
+18D00..18D7F; Tangut Supplement
+1AFF0..1AFFF; Kana Extended-B
1B000..1B0FF; Kana Supplement
1B100..1B12F; Kana Extended-A
1B130..1B16F; Small Kana Extension
1B170..1B2FF; Nushu
1BC00..1BC9F; Duployan
1BCA0..1BCAF; Shorthand Format Controls
+1CF00..1CFCF; Znamenny Musical Notation
1D000..1D0FF; Byzantine Musical Symbols
1D100..1D1FF; Musical Symbols
1D200..1D24F; Ancient Greek Musical Notation
+1D2C0..1D2DF; Kaktovik Numerals
1D2E0..1D2FF; Mayan Numerals
1D300..1D35F; Tai Xuan Jing Symbols
1D360..1D37F; Counting Rod Numerals
1D400..1D7FF; Mathematical Alphanumeric Symbols
1D800..1DAAF; Sutton SignWriting
+1DF00..1DFFF; Latin Extended-G
1E000..1E02F; Glagolitic Supplement
+1E030..1E08F; Cyrillic Extended-D
1E100..1E14F; Nyiakeng Puachue Hmong
+1E290..1E2BF; Toto
1E2C0..1E2FF; Wancho
+1E4D0..1E4FF; Nag Mundari
+1E7E0..1E7FF; Ethiopic Extended-B
1E800..1E8DF; Mende Kikakui
1E900..1E95F; Adlam
1EC70..1ECBF; Indic Siyaq Numbers
@@ -336,6 +354,7 @@ FFF0..FFFF; Specials
2CEB0..2EBEF; CJK Unified Ideographs Extension F
2F800..2FA1F; CJK Compatibility Ideographs Supplement
30000..3134F; CJK Unified Ideographs Extension G
+31350..323AF; CJK Unified Ideographs Extension H
E0000..E007F; Tags
E0100..E01EF; Variation Selectors Supplement
F0000..FFFFF; Supplementary Private Use Area-A
diff --git a/Master/tlpkg/tlperl/lib/unicore/CombiningClass.pl b/Master/tlpkg/tlperl/lib/unicore/CombiningClass.pl
index 439074fb75f..d946964ac43 100644
--- a/Master/tlpkg/tlperl/lib/unicore/CombiningClass.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/CombiningClass.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -137,7 +137,11 @@ return <<'END';
825 827 230
829 82D 230
859 85B 220
-8D3 220
+898 230
+899 89B 220
+89C 89F 230
+8CA 8CE 230
+8CF 8D3 220
8D4 8E1 230
8E3 220
8E4 8E5 230
@@ -169,6 +173,7 @@ ACD 9
B3C 7
B4D 9
BCD 9
+C3C 7
C4D 9
C55 84
C56 91
@@ -200,7 +205,7 @@ FC6 220
1039 103A 9
108D 220
135D 135F 230
-1714 9
+1714 1715 9
1734 9
17D2 9
17DD 230
@@ -218,6 +223,11 @@ FC6 220
1ABB 1ABC 230
1ABD 220
1ABF 1AC0 220
+1AC1 1AC2 230
+1AC3 1AC4 220
+1AC5 1AC9 230
+1ACA 220
+1ACB 1ACE 230
1B34 7
1B44 9
1B6B 230
@@ -250,6 +260,7 @@ FC6 220
1DF6 232
1DF7 1DF8 228
1DF9 220
+1DFA 218
1DFB 230
1DFC 233
1DFD 220
@@ -314,12 +325,18 @@ FE2E FE2F 230
10AE6 220
10D24 10D27 230
10EAB 10EAC 230
+10EFD 10EFF 220
10F46 10F47 220
10F48 10F4A 230
10F4B 220
10F4C 230
10F4D 10F50 220
+10F82 230
+10F83 220
+10F84 230
+10F85 220
11046 9
+11070 9
1107F 9
110B9 9
110BA 7
@@ -359,6 +376,7 @@ FE2E FE2F 230
11D42 7
11D44 11D45 9
11D97 9
+11F41 11F42 9
16AF0 16AF4 1
16B30 16B36 230
16FF0 16FF1 6
@@ -377,8 +395,13 @@ FE2E FE2F 230
1E01B 1E021 230
1E023 1E024 230
1E026 1E02A 230
+1E08F 230
1E130 1E136 230
+1E2AE 230
1E2EC 1E2EF 230
+1E4EC 1E4ED 232
+1E4EE 220
+1E4EF 230
1E8D0 1E8D6 220
1E944 1E949 230
1E94A 7
diff --git a/Master/tlpkg/tlperl/lib/unicore/Decomposition.pl b/Master/tlpkg/tlperl/lib/unicore/Decomposition.pl
index d682190ee8c..235581b9e60 100644
--- a/Master/tlpkg/tlperl/lib/unicore/Decomposition.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/Decomposition.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -2338,6 +2338,9 @@ FB9 0F90 0FB5
A69C <super> 044A
A69D <super> 044C
A770 <super> A76F
+A7F2 <super> 0043
+A7F3 <super> 0046
+A7F4 <super> 0051
A7F8 <super> 0126
A7F9 <super> 0153
AB5C <super> A727
@@ -3876,6 +3879,62 @@ FFEB <narrow> 2192
FFEC <narrow> 2193
FFED <narrow> 25A0
FFEE <narrow> 25CB
+10781 <super> 02D0
+10782 <super> 02D1
+10783 <super> 00E6
+10784 <super> 0299
+10785 <super> 0253
+10787 <super> 02A3
+10788 <super> AB66
+10789 <super> 02A5
+1078A <super> 02A4
+1078B <super> 0256
+1078C <super> 0257
+1078D <super> 1D91
+1078E <super> 0258
+1078F <super> 025E
+10790 <super> 02A9
+10791 <super> 0264
+10792 <super> 0262
+10793 <super> 0260
+10794 <super> 029B
+10795 <super> 0127
+10796 <super> 029C
+10797 <super> 0267
+10798 <super> 0284
+10799 <super> 02AA
+1079A <super> 02AB
+1079B <super> 026C
+1079C <super> 1DF04
+1079D <super> A78E
+1079E <super> 026E
+1079F <super> 1DF05
+107A0 <super> 028E
+107A1 <super> 1DF06
+107A2 <super> 00F8
+107A3 <super> 0276
+107A4 <super> 0277
+107A5 <super> 0071
+107A6 <super> 027A
+107A7 <super> 1DF08
+107A8 <super> 027D
+107A9 <super> 027E
+107AA <super> 0280
+107AB <super> 02A8
+107AC <super> 02A6
+107AD <super> AB67
+107AE <super> 02A7
+107AF <super> 0288
+107B0 <super> 2C71
+107B2 <super> 028F
+107B3 <super> 02A1
+107B4 <super> 02A2
+107B5 <super> 0298
+107B6 <super> 01C0
+107B7 <super> 01C1
+107B8 <super> 01C2
+107B9 <super> 1DF0A
+107BA <super> 1DF1E
1109A 11099 110BA
1109C 1109B 110BA
110AB 110A5 110BA
@@ -4898,6 +4957,68 @@ FFEE <narrow> 25CB
1D7FD <font> 0037
1D7FE <font> 0038
1D7FF <font> 0039
+1E030 <super> 0430
+1E031 <super> 0431
+1E032 <super> 0432
+1E033 <super> 0433
+1E034 <super> 0434
+1E035 <super> 0435
+1E036 <super> 0436
+1E037 <super> 0437
+1E038 <super> 0438
+1E039 <super> 043A
+1E03A <super> 043B
+1E03B <super> 043C
+1E03C <super> 043E
+1E03D <super> 043F
+1E03E <super> 0440
+1E03F <super> 0441
+1E040 <super> 0442
+1E041 <super> 0443
+1E042 <super> 0444
+1E043 <super> 0445
+1E044 <super> 0446
+1E045 <super> 0447
+1E046 <super> 0448
+1E047 <super> 044B
+1E048 <super> 044D
+1E049 <super> 044E
+1E04A <super> A689
+1E04B <super> 04D9
+1E04C <super> 0456
+1E04D <super> 0458
+1E04E <super> 04E9
+1E04F <super> 04AF
+1E050 <super> 04CF
+1E051 <sub> 0430
+1E052 <sub> 0431
+1E053 <sub> 0432
+1E054 <sub> 0433
+1E055 <sub> 0434
+1E056 <sub> 0435
+1E057 <sub> 0436
+1E058 <sub> 0437
+1E059 <sub> 0438
+1E05A <sub> 043A
+1E05B <sub> 043B
+1E05C <sub> 043E
+1E05D <sub> 043F
+1E05E <sub> 0441
+1E05F <sub> 0443
+1E060 <sub> 0444
+1E061 <sub> 0445
+1E062 <sub> 0446
+1E063 <sub> 0447
+1E064 <sub> 0448
+1E065 <sub> 044A
+1E066 <sub> 044B
+1E067 <sub> 0491
+1E068 <sub> 0456
+1E069 <sub> 0455
+1E06A <sub> 045F
+1E06B <super> 04AB
+1E06C <super> A651
+1E06D <super> 04B1
1EE00 <font> 0627
1EE01 <font> 0628
1EE02 <font> 062C
diff --git a/Master/tlpkg/tlperl/lib/unicore/Name.pl b/Master/tlpkg/tlperl/lib/unicore/Name.pl
index 09749b42d6d..31f4c5efd12 100644
--- a/Master/tlpkg/tlperl/lib/unicore/Name.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/Name.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -200,6 +200,9 @@ CAN
END OF MEDIUM
00019
+EM
+
+00019
EOM
0001A
@@ -4871,6 +4874,9 @@ ARABIC SIGN TAKHALLUS
ARABIC SMALL HIGH TAH
00616
+ARABIC SMALL HIGH LIGATURE ALEF WITH YEH BARREE
+
+00616
ARABIC SMALL HIGH LIGATURE ALEF WITH LAM WITH YEH
00617
@@ -4894,6 +4900,9 @@ ARABIC LETTER MARK
0061C
ALM
+0061D
+ARABIC END OF TEXT MARK
+
0061E
ARABIC TRIPLE DOT PUNCTUATION MARK
@@ -6589,6 +6598,129 @@ SYRIAC LETTER MALAYALAM LLLA
0086A
SYRIAC LETTER MALAYALAM SSA
+00870
+ARABIC LETTER ALEF WITH ATTACHED FATHA
+
+00871
+ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA
+
+00872
+ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE
+
+00873
+ARABIC LETTER ALEF WITH LEFT MIDDLE STROKE
+
+00874
+ARABIC LETTER ALEF WITH ATTACHED KASRA
+
+00875
+ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA
+
+00876
+ARABIC LETTER ALEF WITH ATTACHED ROUND DOT ABOVE
+
+00877
+ARABIC LETTER ALEF WITH ATTACHED RIGHT ROUND DOT
+
+00878
+ARABIC LETTER ALEF WITH ATTACHED LEFT ROUND DOT
+
+00879
+ARABIC LETTER ALEF WITH ATTACHED ROUND DOT BELOW
+
+0087A
+ARABIC LETTER ALEF WITH DOT ABOVE
+
+0087B
+ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA AND DOT ABOVE
+
+0087C
+ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE AND DOT ABOVE
+
+0087D
+ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND DOT ABOVE
+
+0087E
+ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA AND LEFT RING
+
+0087F
+ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE AND LEFT RING
+
+00880
+ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND LEFT RING
+
+00881
+ARABIC LETTER ALEF WITH ATTACHED RIGHT HAMZA
+
+00882
+ARABIC LETTER ALEF WITH ATTACHED LEFT HAMZA
+
+00883
+ARABIC TATWEEL WITH OVERSTRUCK HAMZA
+
+00884
+ARABIC TATWEEL WITH OVERSTRUCK WAW
+
+00885
+ARABIC TATWEEL WITH TWO DOTS BELOW
+
+00886
+ARABIC LETTER THIN YEH
+
+00887
+ARABIC BASELINE ROUND DOT
+
+00888
+ARABIC RAISED ROUND DOT
+
+00889
+ARABIC LETTER NOON WITH INVERTED SMALL V
+
+0088A
+ARABIC LETTER HAH WITH INVERTED SMALL V BELOW
+
+0088B
+ARABIC LETTER TAH WITH DOT BELOW
+
+0088C
+ARABIC LETTER TAH WITH THREE DOTS BELOW
+
+0088D
+ARABIC LETTER KEHEH WITH TWO DOTS VERTICALLY BELOW
+
+0088E
+ARABIC VERTICAL TAIL
+
+00890
+ARABIC POUND MARK ABOVE
+
+00891
+ARABIC PIASTRE MARK ABOVE
+
+00898
+ARABIC SMALL HIGH WORD AL-JUZ
+
+00899
+ARABIC SMALL LOW WORD ISHMAAM
+
+0089A
+ARABIC SMALL LOW WORD IMAALA
+
+0089B
+ARABIC SMALL LOW WORD TASHEEL
+
+0089C
+ARABIC MADDA WAAJIB
+
+0089D
+ARABIC SUPERSCRIPT ALEF MOKHASSAS
+
+0089E
+ARABIC DOUBLED MADDA
+
+0089F
+ARABIC HALF MADDA OVER MADDA
+
008A0
ARABIC LETTER BEH WITH SMALL V BELOW
@@ -6652,6 +6784,9 @@ ARABIC LETTER AIN WITH THREE DOTS BELOW
008B4
ARABIC LETTER KAF WITH DOT BELOW
+008B5
+ARABIC LETTER QAF WITH DOT BELOW AND NO DOTS ABOVE
+
008B6
ARABIC LETTER BEH WITH SMALL MEEM ABOVE
@@ -6706,6 +6841,39 @@ ARABIC LETTER JEEM WITH THREE DOTS BELOW
008C7
ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE
+008C8
+ARABIC LETTER GRAF
+
+008C9
+ARABIC SMALL FARSI YEH
+
+008CA
+ARABIC SMALL HIGH FARSI YEH
+
+008CB
+ARABIC SMALL HIGH YEH BARREE WITH TWO DOTS BELOW
+
+008CC
+ARABIC SMALL HIGH WORD SAH
+
+008CD
+ARABIC SMALL HIGH ZAH
+
+008CE
+ARABIC LARGE ROUND DOT ABOVE
+
+008CF
+ARABIC LARGE ROUND DOT BELOW
+
+008D0
+ARABIC SUKUN BELOW
+
+008D1
+ARABIC LARGE CIRCLE BELOW
+
+008D2
+ARABIC LARGE ROUND DOT INSIDE CIRCLE BELOW
+
008D3
ARABIC SMALL LOW WAW
@@ -8680,6 +8848,9 @@ TELUGU LETTER SA
00C39
TELUGU LETTER HA
+00C3C
+TELUGU SIGN NUKTA
+
00C3D
TELUGU SIGN AVAGRAHA
@@ -8740,6 +8911,9 @@ TELUGU LETTER DZA
00C5A
TELUGU LETTER RRRA
+00C5D
+TELUGU LETTER NAKAARA POLLU
+
00C60
TELUGU LETTER VOCALIC RR
@@ -9025,6 +9199,9 @@ KANNADA LENGTH MARK
00CD6
KANNADA AI LENGTH MARK
+00CDD
+KANNADA LETTER NAKAARA POLLU
+
00CDE
KANNADA LETTER LLLA
@@ -9079,6 +9256,9 @@ KANNADA SIGN JIHVAMULIYA
00CF2
KANNADA SIGN UPADHMANIYA
+00CF3
+KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
+
00D00
MALAYALAM SIGN COMBINING ANUSVARA ABOVE
@@ -10183,6 +10363,9 @@ LAO CANCELLATION MARK
00ECD
LAO NIGGAHITA
+00ECE
+LAO YAMAKKAN
+
00ED0
LAO DIGIT ZERO
@@ -16126,6 +16309,9 @@ TAGALOG LETTER MA
0170C
TAGALOG LETTER YA
+0170D
+TAGALOG LETTER RA
+
0170E
TAGALOG LETTER LA
@@ -16147,6 +16333,12 @@ TAGALOG VOWEL SIGN U
01714
TAGALOG SIGN VIRAMA
+01715
+TAGALOG SIGN PAMUDPOD
+
+0171F
+TAGALOG LETTER ARCHAIC RA
+
01720
HANUNOO LETTER A
@@ -16729,6 +16921,12 @@ MONGOLIAN VOWEL SEPARATOR
0180E
MVS
+0180F
+MONGOLIAN FREE VARIATION SELECTOR FOUR
+
+0180F
+FVS4
+
01810
MONGOLIAN DIGIT ZERO
@@ -18541,6 +18739,48 @@ COMBINING LATIN SMALL LETTER W BELOW
01AC0
COMBINING LATIN SMALL LETTER TURNED W BELOW
+01AC1
+COMBINING LEFT PARENTHESIS ABOVE LEFT
+
+01AC2
+COMBINING RIGHT PARENTHESIS ABOVE RIGHT
+
+01AC3
+COMBINING LEFT PARENTHESIS BELOW LEFT
+
+01AC4
+COMBINING RIGHT PARENTHESIS BELOW RIGHT
+
+01AC5
+COMBINING SQUARE BRACKETS ABOVE
+
+01AC6
+COMBINING NUMBER SIGN ABOVE
+
+01AC7
+COMBINING INVERTED DOUBLE ARCH ABOVE
+
+01AC8
+COMBINING PLUS SIGN ABOVE
+
+01AC9
+COMBINING DOUBLE PLUS SIGN ABOVE
+
+01ACA
+COMBINING DOUBLE PLUS SIGN BELOW
+
+01ACB
+COMBINING TRIPLE ACUTE ACCENT
+
+01ACC
+COMBINING LATIN SMALL LETTER INSULAR G
+
+01ACD
+COMBINING LATIN SMALL LETTER INSULAR R
+
+01ACE
+COMBINING LATIN SMALL LETTER INSULAR T
+
01B00
BALINESE SIGN ULU RICEM
@@ -18769,6 +19009,9 @@ BALINESE LETTER ZAL SASAK
01B4B
BALINESE LETTER ASYURA SASAK
+01B4C
+BALINESE LETTER ARCHAIC JNYA
+
01B50
BALINESE DIGIT ZERO
@@ -18904,6 +19147,12 @@ BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK
01B7C
BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
+01B7D
+BALINESE PANTI LANTANG
+
+01B7E
+BALINESE PAMADA LANTANG
+
01B80
SUNDANESE SIGN PANYECEK
@@ -19088,6 +19337,9 @@ SUNDANESE LETTER REU
SUNDANESE LETTER LEU
01BBD
+SUNDANESE LETTER ARCHAIC I
+
+01BBD
SUNDANESE LETTER BHA
01BBE
@@ -20698,6 +20950,9 @@ COMBINING DOT ABOVE LEFT
01DF9
COMBINING WIDE INVERTED BRIDGE BELOW
+01DFA
+COMBINING DOT BELOW LEFT
+
01DFB
COMBINING DELETION MARK
@@ -22786,6 +23041,9 @@ LARI SIGN
020BF
BITCOIN SIGN
+020C0
+SOM SIGN
+
020D0
COMBINING LEFT HARPOON ABOVE
@@ -31330,6 +31588,9 @@ GLAGOLITIC CAPITAL LETTER TROKUTASTI A
02C2E
GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+02C2F
+GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI
+
02C30
GLAGOLITIC SMALL LETTER AZU
@@ -31471,6 +31732,9 @@ GLAGOLITIC SMALL LETTER TROKUTASTI A
02C5E
GLAGOLITIC SMALL LETTER LATINATE MYSLITE
+02C5F
+GLAGOLITIC SMALL LETTER CAUDATE CHRIVI
+
02C60
LATIN CAPITAL LETTER L WITH DOUBLE BAR
@@ -32815,6 +33079,39 @@ CROSS PATTY WITH LEFT CROSSBAR
02E52
TIRONIAN SIGN CAPITAL ET
+02E53
+MEDIEVAL EXCLAMATION MARK
+
+02E54
+MEDIEVAL QUESTION MARK
+
+02E55
+LEFT SQUARE BRACKET WITH STROKE
+
+02E56
+RIGHT SQUARE BRACKET WITH STROKE
+
+02E57
+LEFT SQUARE BRACKET WITH DOUBLE STROKE
+
+02E58
+RIGHT SQUARE BRACKET WITH DOUBLE STROKE
+
+02E59
+TOP HALF LEFT PARENTHESIS
+
+02E5A
+TOP HALF RIGHT PARENTHESIS
+
+02E5B
+BOTTOM HALF LEFT PARENTHESIS
+
+02E5C
+BOTTOM HALF RIGHT PARENTHESIS
+
+02E5D
+OBLIQUE HYPHEN
+
02E80
CJK RADICAL REPEAT
@@ -42868,6 +43165,12 @@ LATIN CAPITAL LETTER GLOTTAL U
0A7BF
LATIN SMALL LETTER GLOTTAL U
+0A7C0
+LATIN CAPITAL LETTER OLD POLISH O
+
+0A7C1
+LATIN SMALL LETTER OLD POLISH O
+
0A7C2
LATIN CAPITAL LETTER ANGLICANA W
@@ -42895,6 +43198,39 @@ LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
0A7CA
LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+0A7D0
+LATIN CAPITAL LETTER CLOSED INSULAR G
+
+0A7D1
+LATIN SMALL LETTER CLOSED INSULAR G
+
+0A7D3
+LATIN SMALL LETTER DOUBLE THORN
+
+0A7D5
+LATIN SMALL LETTER DOUBLE WYNN
+
+0A7D6
+LATIN CAPITAL LETTER MIDDLE SCOTS S
+
+0A7D7
+LATIN SMALL LETTER MIDDLE SCOTS S
+
+0A7D8
+LATIN CAPITAL LETTER SIGMOID S
+
+0A7D9
+LATIN SMALL LETTER SIGMOID S
+
+0A7F2
+MODIFIER LETTER CAPITAL C
+
+0A7F3
+MODIFIER LETTER CAPITAL F
+
+0A7F4
+MODIFIER LETTER CAPITAL Q
+
0A7F5
LATIN CAPITAL LETTER REVERSED HALF H
@@ -44603,6 +44939,9 @@ MYANMAR LETTER KHAMTI SA
MYANMAR LETTER KHAMTI HA
0AA6E
+MYANMAR LETTER KHAMTI LLA
+
+0AA6E
MYANMAR LETTER KHAMTI HHA
0AA6F
@@ -46357,6 +46696,9 @@ ARABIC SYMBOL SMALL TAH ABOVE
0FBC1
ARABIC SYMBOL SMALL TAH BELOW
+0FBC2
+ARABIC SYMBOL WASLA ABOVE
+
0FBD3
ARABIC LETTER NG ISOLATED FORM
@@ -47452,6 +47794,54 @@ ORNATE LEFT PARENTHESIS
0FD3F
ORNATE RIGHT PARENTHESIS
+0FD40
+ARABIC LIGATURE RAHIMAHU ALLAAH
+
+0FD41
+ARABIC LIGATURE RADI ALLAAHU ANH
+
+0FD42
+ARABIC LIGATURE RADI ALLAAHU ANHAA
+
+0FD43
+ARABIC LIGATURE RADI ALLAAHU ANHUM
+
+0FD44
+ARABIC LIGATURE RADI ALLAAHU ANHUMAA
+
+0FD45
+ARABIC LIGATURE RADI ALLAAHU ANHUNNA
+
+0FD46
+ARABIC LIGATURE SALLALLAAHU ALAYHI WA-AALIH
+
+0FD47
+ARABIC LIGATURE ALAYHI AS-SALAAM
+
+0FD48
+ARABIC LIGATURE ALAYHIM AS-SALAAM
+
+0FD49
+ARABIC LIGATURE ALAYHIMAA AS-SALAAM
+
+0FD4A
+ARABIC LIGATURE ALAYHI AS-SALAATU WAS-SALAAM
+
+0FD4B
+ARABIC LIGATURE QUDDISA SIRRAH
+
+0FD4C
+ARABIC LIGATURE SALLALLAHU ALAYHI WAAALIHEE WA-SALLAM
+
+0FD4D
+ARABIC LIGATURE ALAYHAA AS-SALAAM
+
+0FD4E
+ARABIC LIGATURE TABAARAKA WA-TAAALAA
+
+0FD4F
+ARABIC LIGATURE RAHIMAHUM ALLAAH
+
0FD50
ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
@@ -47806,6 +48196,9 @@ ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
0FDC7
ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+0FDCF
+ARABIC LIGATURE SALAAMUHU ALAYNAA
+
0FDF0
ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
@@ -47848,6 +48241,12 @@ RIAL SIGN
0FDFD
ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
+0FDFE
+ARABIC LIGATURE SUBHAANAHU WA TAAALAA
+
+0FDFF
+ARABIC LIGATURE AZZA WA JALL
+
0FE00
VARIATION SELECTOR-1
@@ -52429,6 +52828,216 @@ CAUCASIAN ALBANIAN LETTER KIW
1056F
CAUCASIAN ALBANIAN CITATION MARK
+10570
+VITHKUQI CAPITAL LETTER A
+
+10571
+VITHKUQI CAPITAL LETTER BBE
+
+10572
+VITHKUQI CAPITAL LETTER BE
+
+10573
+VITHKUQI CAPITAL LETTER CE
+
+10574
+VITHKUQI CAPITAL LETTER CHE
+
+10575
+VITHKUQI CAPITAL LETTER DE
+
+10576
+VITHKUQI CAPITAL LETTER DHE
+
+10577
+VITHKUQI CAPITAL LETTER EI
+
+10578
+VITHKUQI CAPITAL LETTER E
+
+10579
+VITHKUQI CAPITAL LETTER FE
+
+1057A
+VITHKUQI CAPITAL LETTER GA
+
+1057C
+VITHKUQI CAPITAL LETTER HA
+
+1057D
+VITHKUQI CAPITAL LETTER HHA
+
+1057E
+VITHKUQI CAPITAL LETTER I
+
+1057F
+VITHKUQI CAPITAL LETTER IJE
+
+10580
+VITHKUQI CAPITAL LETTER JE
+
+10581
+VITHKUQI CAPITAL LETTER KA
+
+10582
+VITHKUQI CAPITAL LETTER LA
+
+10583
+VITHKUQI CAPITAL LETTER LLA
+
+10584
+VITHKUQI CAPITAL LETTER ME
+
+10585
+VITHKUQI CAPITAL LETTER NE
+
+10586
+VITHKUQI CAPITAL LETTER NJE
+
+10587
+VITHKUQI CAPITAL LETTER O
+
+10588
+VITHKUQI CAPITAL LETTER PE
+
+10589
+VITHKUQI CAPITAL LETTER QA
+
+1058A
+VITHKUQI CAPITAL LETTER RE
+
+1058C
+VITHKUQI CAPITAL LETTER SE
+
+1058D
+VITHKUQI CAPITAL LETTER SHE
+
+1058E
+VITHKUQI CAPITAL LETTER TE
+
+1058F
+VITHKUQI CAPITAL LETTER THE
+
+10590
+VITHKUQI CAPITAL LETTER U
+
+10591
+VITHKUQI CAPITAL LETTER VE
+
+10592
+VITHKUQI CAPITAL LETTER XE
+
+10594
+VITHKUQI CAPITAL LETTER Y
+
+10595
+VITHKUQI CAPITAL LETTER ZE
+
+10597
+VITHKUQI SMALL LETTER A
+
+10598
+VITHKUQI SMALL LETTER BBE
+
+10599
+VITHKUQI SMALL LETTER BE
+
+1059A
+VITHKUQI SMALL LETTER CE
+
+1059B
+VITHKUQI SMALL LETTER CHE
+
+1059C
+VITHKUQI SMALL LETTER DE
+
+1059D
+VITHKUQI SMALL LETTER DHE
+
+1059E
+VITHKUQI SMALL LETTER EI
+
+1059F
+VITHKUQI SMALL LETTER E
+
+105A0
+VITHKUQI SMALL LETTER FE
+
+105A1
+VITHKUQI SMALL LETTER GA
+
+105A3
+VITHKUQI SMALL LETTER HA
+
+105A4
+VITHKUQI SMALL LETTER HHA
+
+105A5
+VITHKUQI SMALL LETTER I
+
+105A6
+VITHKUQI SMALL LETTER IJE
+
+105A7
+VITHKUQI SMALL LETTER JE
+
+105A8
+VITHKUQI SMALL LETTER KA
+
+105A9
+VITHKUQI SMALL LETTER LA
+
+105AA
+VITHKUQI SMALL LETTER LLA
+
+105AB
+VITHKUQI SMALL LETTER ME
+
+105AC
+VITHKUQI SMALL LETTER NE
+
+105AD
+VITHKUQI SMALL LETTER NJE
+
+105AE
+VITHKUQI SMALL LETTER O
+
+105AF
+VITHKUQI SMALL LETTER PE
+
+105B0
+VITHKUQI SMALL LETTER QA
+
+105B1
+VITHKUQI SMALL LETTER RE
+
+105B3
+VITHKUQI SMALL LETTER SE
+
+105B4
+VITHKUQI SMALL LETTER SHE
+
+105B5
+VITHKUQI SMALL LETTER TE
+
+105B6
+VITHKUQI SMALL LETTER THE
+
+105B7
+VITHKUQI SMALL LETTER U
+
+105B8
+VITHKUQI SMALL LETTER VE
+
+105B9
+VITHKUQI SMALL LETTER XE
+
+105BB
+VITHKUQI SMALL LETTER Y
+
+105BC
+VITHKUQI SMALL LETTER ZE
+
10600
LINEAR A SIGN AB001
@@ -53452,6 +54061,177 @@ LINEAR A SIGN A806
10767
LINEAR A SIGN A807
+10780
+MODIFIER LETTER SMALL CAPITAL AA
+
+10781
+MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON
+
+10782
+MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON
+
+10783
+MODIFIER LETTER SMALL AE
+
+10784
+MODIFIER LETTER SMALL CAPITAL B
+
+10785
+MODIFIER LETTER SMALL B WITH HOOK
+
+10787
+MODIFIER LETTER SMALL DZ DIGRAPH
+
+10788
+MODIFIER LETTER SMALL DZ DIGRAPH WITH RETROFLEX HOOK
+
+10789
+MODIFIER LETTER SMALL DZ DIGRAPH WITH CURL
+
+1078A
+MODIFIER LETTER SMALL DEZH DIGRAPH
+
+1078B
+MODIFIER LETTER SMALL D WITH TAIL
+
+1078C
+MODIFIER LETTER SMALL D WITH HOOK
+
+1078D
+MODIFIER LETTER SMALL D WITH HOOK AND TAIL
+
+1078E
+MODIFIER LETTER SMALL REVERSED E
+
+1078F
+MODIFIER LETTER SMALL CLOSED REVERSED OPEN E
+
+10790
+MODIFIER LETTER SMALL FENG DIGRAPH
+
+10791
+MODIFIER LETTER SMALL RAMS HORN
+
+10792
+MODIFIER LETTER SMALL CAPITAL G
+
+10793
+MODIFIER LETTER SMALL G WITH HOOK
+
+10794
+MODIFIER LETTER SMALL CAPITAL G WITH HOOK
+
+10795
+MODIFIER LETTER SMALL H WITH STROKE
+
+10796
+MODIFIER LETTER SMALL CAPITAL H
+
+10797
+MODIFIER LETTER SMALL HENG WITH HOOK
+
+10798
+MODIFIER LETTER SMALL DOTLESS J WITH STROKE AND HOOK
+
+10799
+MODIFIER LETTER SMALL LS DIGRAPH
+
+1079A
+MODIFIER LETTER SMALL LZ DIGRAPH
+
+1079B
+MODIFIER LETTER SMALL L WITH BELT
+
+1079C
+MODIFIER LETTER SMALL CAPITAL L WITH BELT
+
+1079D
+MODIFIER LETTER SMALL L WITH RETROFLEX HOOK AND BELT
+
+1079E
+MODIFIER LETTER SMALL LEZH
+
+1079F
+MODIFIER LETTER SMALL LEZH WITH RETROFLEX HOOK
+
+107A0
+MODIFIER LETTER SMALL TURNED Y
+
+107A1
+MODIFIER LETTER SMALL TURNED Y WITH BELT
+
+107A2
+MODIFIER LETTER SMALL O WITH STROKE
+
+107A3
+MODIFIER LETTER SMALL CAPITAL OE
+
+107A4
+MODIFIER LETTER SMALL CLOSED OMEGA
+
+107A5
+MODIFIER LETTER SMALL Q
+
+107A6
+MODIFIER LETTER SMALL TURNED R WITH LONG LEG
+
+107A7
+MODIFIER LETTER SMALL TURNED R WITH LONG LEG AND RETROFLEX HOOK
+
+107A8
+MODIFIER LETTER SMALL R WITH TAIL
+
+107A9
+MODIFIER LETTER SMALL R WITH FISHHOOK
+
+107AA
+MODIFIER LETTER SMALL CAPITAL R
+
+107AB
+MODIFIER LETTER SMALL TC DIGRAPH WITH CURL
+
+107AC
+MODIFIER LETTER SMALL TS DIGRAPH
+
+107AD
+MODIFIER LETTER SMALL TS DIGRAPH WITH RETROFLEX HOOK
+
+107AE
+MODIFIER LETTER SMALL TESH DIGRAPH
+
+107AF
+MODIFIER LETTER SMALL T WITH RETROFLEX HOOK
+
+107B0
+MODIFIER LETTER SMALL V WITH RIGHT HOOK
+
+107B2
+MODIFIER LETTER SMALL CAPITAL Y
+
+107B3
+MODIFIER LETTER GLOTTAL STOP WITH STROKE
+
+107B4
+MODIFIER LETTER REVERSED GLOTTAL STOP WITH STROKE
+
+107B5
+MODIFIER LETTER BILABIAL CLICK
+
+107B6
+MODIFIER LETTER DENTAL CLICK
+
+107B7
+MODIFIER LETTER LATERAL CLICK
+
+107B8
+MODIFIER LETTER ALVEOLAR CLICK
+
+107B9
+MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK
+
+107BA
+MODIFIER LETTER SMALL S WITH CURL
+
10800
CYPRIOT SYLLABLE A
@@ -56455,6 +57235,15 @@ YEZIDI LETTER LAM WITH DOT ABOVE
10EB1
YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+10EFD
+ARABIC SMALL LOW WORD SAKTA
+
+10EFE
+ARABIC SMALL LOW WORD QASR
+
+10EFF
+ARABIC SMALL LOW WORD MADDA
+
10F00
OLD SOGDIAN LETTER ALEPH
@@ -56701,6 +57490,84 @@ SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS
10F59
SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
+10F70
+OLD UYGHUR LETTER ALEPH
+
+10F71
+OLD UYGHUR LETTER BETH
+
+10F72
+OLD UYGHUR LETTER GIMEL-HETH
+
+10F73
+OLD UYGHUR LETTER WAW
+
+10F74
+OLD UYGHUR LETTER ZAYIN
+
+10F75
+OLD UYGHUR LETTER FINAL HETH
+
+10F76
+OLD UYGHUR LETTER YODH
+
+10F77
+OLD UYGHUR LETTER KAPH
+
+10F78
+OLD UYGHUR LETTER LAMEDH
+
+10F79
+OLD UYGHUR LETTER MEM
+
+10F7A
+OLD UYGHUR LETTER NUN
+
+10F7B
+OLD UYGHUR LETTER SAMEKH
+
+10F7C
+OLD UYGHUR LETTER PE
+
+10F7D
+OLD UYGHUR LETTER SADHE
+
+10F7E
+OLD UYGHUR LETTER RESH
+
+10F7F
+OLD UYGHUR LETTER SHIN
+
+10F80
+OLD UYGHUR LETTER TAW
+
+10F81
+OLD UYGHUR LETTER LESH
+
+10F82
+OLD UYGHUR COMBINING DOT ABOVE
+
+10F83
+OLD UYGHUR COMBINING DOT BELOW
+
+10F84
+OLD UYGHUR COMBINING TWO DOTS ABOVE
+
+10F85
+OLD UYGHUR COMBINING TWO DOTS BELOW
+
+10F86
+OLD UYGHUR PUNCTUATION BAR
+
+10F87
+OLD UYGHUR PUNCTUATION TWO BARS
+
+10F88
+OLD UYGHUR PUNCTUATION TWO DOTS
+
+10F89
+OLD UYGHUR PUNCTUATION FOUR DOTS
+
10FB0
CHORASMIAN LETTER ALEPH
@@ -57178,6 +58045,24 @@ BRAHMI DIGIT EIGHT
1106F
BRAHMI DIGIT NINE
+11070
+BRAHMI SIGN OLD TAMIL VIRAMA
+
+11071
+BRAHMI LETTER OLD TAMIL SHORT E
+
+11072
+BRAHMI LETTER OLD TAMIL SHORT O
+
+11073
+BRAHMI VOWEL SIGN OLD TAMIL SHORT E
+
+11074
+BRAHMI VOWEL SIGN OLD TAMIL SHORT O
+
+11075
+BRAHMI LETTER OLD TAMIL LLA
+
1107F
BRAHMI NUMBER JOINER
@@ -57379,6 +58264,9 @@ KAITHI DANDA
110C1
KAITHI DOUBLE DANDA
+110C2
+KAITHI VOWEL SIGN VOCALIC R
+
110CD
KAITHI NUMBER SIGN ABOVE
@@ -58351,6 +59239,15 @@ KHOJKI ABBREVIATION SIGN
1123E
KHOJKI SIGN SUKUN
+1123F
+KHOJKI LETTER QA
+
+11240
+KHOJKI LETTER SHORT I
+
+11241
+KHOJKI VOWEL SIGN VOCALIC R
+
11280
MULTANI LETTER A
@@ -60190,6 +61087,9 @@ TAKRI SIGN NUKTA
116B8
TAKRI LETTER ARCHAIC KHA
+116B9
+TAKRI ABBREVIATION SIGN
+
116C0
TAKRI DIGIT ZERO
@@ -60394,6 +61294,27 @@ AHOM SIGN RULAI
1173F
AHOM SYMBOL VI
+11740
+AHOM LETTER CA
+
+11741
+AHOM LETTER TTA
+
+11742
+AHOM LETTER TTHA
+
+11743
+AHOM LETTER DDA
+
+11744
+AHOM LETTER DDHA
+
+11745
+AHOM LETTER NNA
+
+11746
+AHOM LETTER LLA
+
11800
DOGRA LETTER A
@@ -61702,6 +62623,54 @@ SOYOMBO TERMINAL MARK-1
11AA2
SOYOMBO TERMINAL MARK-2
+11AB0
+CANADIAN SYLLABICS NATTILIK HI
+
+11AB1
+CANADIAN SYLLABICS NATTILIK HII
+
+11AB2
+CANADIAN SYLLABICS NATTILIK HO
+
+11AB3
+CANADIAN SYLLABICS NATTILIK HOO
+
+11AB4
+CANADIAN SYLLABICS NATTILIK HA
+
+11AB5
+CANADIAN SYLLABICS NATTILIK HAA
+
+11AB6
+CANADIAN SYLLABICS NATTILIK SHRI
+
+11AB7
+CANADIAN SYLLABICS NATTILIK SHRII
+
+11AB8
+CANADIAN SYLLABICS NATTILIK SHRO
+
+11AB9
+CANADIAN SYLLABICS NATTILIK SHROO
+
+11ABA
+CANADIAN SYLLABICS NATTILIK SHRA
+
+11ABB
+CANADIAN SYLLABICS NATTILIK SHRAA
+
+11ABC
+CANADIAN SYLLABICS SPE
+
+11ABD
+CANADIAN SYLLABICS SPI
+
+11ABE
+CANADIAN SYLLABICS SPO
+
+11ABF
+CANADIAN SYLLABICS SPA
+
11AC0
PAU CIN HAU LETTER PA
@@ -61873,6 +62842,36 @@ PAU CIN HAU LOW-FALLING TONE FINAL
11AF8
PAU CIN HAU GLOTTAL STOP FINAL
+11B00
+DEVANAGARI HEAD MARK
+
+11B01
+DEVANAGARI HEAD MARK WITH HEADSTROKE
+
+11B02
+DEVANAGARI SIGN BHALE
+
+11B03
+DEVANAGARI SIGN BHALE WITH HOOK
+
+11B04
+DEVANAGARI SIGN EXTENDED BHALE
+
+11B05
+DEVANAGARI SIGN EXTENDED BHALE WITH HOOK
+
+11B06
+DEVANAGARI SIGN WESTERN FIVE-LIKE BHALE
+
+11B07
+DEVANAGARI SIGN WESTERN NINE-LIKE BHALE
+
+11B08
+DEVANAGARI SIGN REVERSED NINE-LIKE BHALE
+
+11B09
+DEVANAGARI SIGN MINDU
+
11C00
BHAIKSUKI LETTER A
@@ -62857,6 +63856,264 @@ MAKASAR PASSIMBANG
11EF8
MAKASAR END OF SECTION
+11F00
+KAWI SIGN CANDRABINDU
+
+11F01
+KAWI SIGN ANUSVARA
+
+11F02
+KAWI SIGN REPHA
+
+11F03
+KAWI SIGN VISARGA
+
+11F04
+KAWI LETTER A
+
+11F05
+KAWI LETTER AA
+
+11F06
+KAWI LETTER I
+
+11F07
+KAWI LETTER II
+
+11F08
+KAWI LETTER U
+
+11F09
+KAWI LETTER UU
+
+11F0A
+KAWI LETTER VOCALIC R
+
+11F0B
+KAWI LETTER VOCALIC RR
+
+11F0C
+KAWI LETTER VOCALIC L
+
+11F0D
+KAWI LETTER VOCALIC LL
+
+11F0E
+KAWI LETTER E
+
+11F0F
+KAWI LETTER AI
+
+11F10
+KAWI LETTER O
+
+11F12
+KAWI LETTER KA
+
+11F13
+KAWI LETTER KHA
+
+11F14
+KAWI LETTER GA
+
+11F15
+KAWI LETTER GHA
+
+11F16
+KAWI LETTER NGA
+
+11F17
+KAWI LETTER CA
+
+11F18
+KAWI LETTER CHA
+
+11F19
+KAWI LETTER JA
+
+11F1A
+KAWI LETTER JHA
+
+11F1B
+KAWI LETTER NYA
+
+11F1C
+KAWI LETTER TTA
+
+11F1D
+KAWI LETTER TTHA
+
+11F1E
+KAWI LETTER DDA
+
+11F1F
+KAWI LETTER DDHA
+
+11F20
+KAWI LETTER NNA
+
+11F21
+KAWI LETTER TA
+
+11F22
+KAWI LETTER THA
+
+11F23
+KAWI LETTER DA
+
+11F24
+KAWI LETTER DHA
+
+11F25
+KAWI LETTER NA
+
+11F26
+KAWI LETTER PA
+
+11F27
+KAWI LETTER PHA
+
+11F28
+KAWI LETTER BA
+
+11F29
+KAWI LETTER BHA
+
+11F2A
+KAWI LETTER MA
+
+11F2B
+KAWI LETTER YA
+
+11F2C
+KAWI LETTER RA
+
+11F2D
+KAWI LETTER LA
+
+11F2E
+KAWI LETTER WA
+
+11F2F
+KAWI LETTER SHA
+
+11F30
+KAWI LETTER SSA
+
+11F31
+KAWI LETTER SA
+
+11F32
+KAWI LETTER HA
+
+11F33
+KAWI LETTER JNYA
+
+11F34
+KAWI VOWEL SIGN AA
+
+11F35
+KAWI VOWEL SIGN ALTERNATE AA
+
+11F36
+KAWI VOWEL SIGN I
+
+11F37
+KAWI VOWEL SIGN II
+
+11F38
+KAWI VOWEL SIGN U
+
+11F39
+KAWI VOWEL SIGN UU
+
+11F3A
+KAWI VOWEL SIGN VOCALIC R
+
+11F3E
+KAWI VOWEL SIGN E
+
+11F3F
+KAWI VOWEL SIGN AI
+
+11F40
+KAWI VOWEL SIGN EU
+
+11F41
+KAWI SIGN KILLER
+
+11F42
+KAWI CONJOINER
+
+11F43
+KAWI DANDA
+
+11F44
+KAWI DOUBLE DANDA
+
+11F45
+KAWI PUNCTUATION SECTION MARKER
+
+11F46
+KAWI PUNCTUATION ALTERNATE SECTION MARKER
+
+11F47
+KAWI PUNCTUATION FLOWER
+
+11F48
+KAWI PUNCTUATION SPACE FILLER
+
+11F49
+KAWI PUNCTUATION DOT
+
+11F4A
+KAWI PUNCTUATION DOUBLE DOT
+
+11F4B
+KAWI PUNCTUATION TRIPLE DOT
+
+11F4C
+KAWI PUNCTUATION CIRCLE
+
+11F4D
+KAWI PUNCTUATION FILLED CIRCLE
+
+11F4E
+KAWI PUNCTUATION SPIRAL
+
+11F4F
+KAWI PUNCTUATION CLOSING SPIRAL
+
+11F50
+KAWI DIGIT ZERO
+
+11F51
+KAWI DIGIT ONE
+
+11F52
+KAWI DIGIT TWO
+
+11F53
+KAWI DIGIT THREE
+
+11F54
+KAWI DIGIT FOUR
+
+11F55
+KAWI DIGIT FIVE
+
+11F56
+KAWI DIGIT SIX
+
+11F57
+KAWI DIGIT SEVEN
+
+11F58
+KAWI DIGIT EIGHT
+
+11F59
+KAWI DIGIT NINE
+
11FB0
LISU LETTER YHA
@@ -66721,6 +67978,303 @@ CUNEIFORM SIGN ZU OVER ZU PLUS SAR
12543
CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
+12F90
+CYPRO-MINOAN SIGN CM001
+
+12F91
+CYPRO-MINOAN SIGN CM002
+
+12F92
+CYPRO-MINOAN SIGN CM004
+
+12F93
+CYPRO-MINOAN SIGN CM005
+
+12F94
+CYPRO-MINOAN SIGN CM006
+
+12F95
+CYPRO-MINOAN SIGN CM007
+
+12F96
+CYPRO-MINOAN SIGN CM008
+
+12F97
+CYPRO-MINOAN SIGN CM009
+
+12F98
+CYPRO-MINOAN SIGN CM010
+
+12F99
+CYPRO-MINOAN SIGN CM011
+
+12F9A
+CYPRO-MINOAN SIGN CM012
+
+12F9B
+CYPRO-MINOAN SIGN CM012B
+
+12F9C
+CYPRO-MINOAN SIGN CM013
+
+12F9D
+CYPRO-MINOAN SIGN CM015
+
+12F9E
+CYPRO-MINOAN SIGN CM017
+
+12F9F
+CYPRO-MINOAN SIGN CM019
+
+12FA0
+CYPRO-MINOAN SIGN CM021
+
+12FA1
+CYPRO-MINOAN SIGN CM023
+
+12FA2
+CYPRO-MINOAN SIGN CM024
+
+12FA3
+CYPRO-MINOAN SIGN CM025
+
+12FA4
+CYPRO-MINOAN SIGN CM026
+
+12FA5
+CYPRO-MINOAN SIGN CM027
+
+12FA6
+CYPRO-MINOAN SIGN CM028
+
+12FA7
+CYPRO-MINOAN SIGN CM029
+
+12FA8
+CYPRO-MINOAN SIGN CM030
+
+12FA9
+CYPRO-MINOAN SIGN CM033
+
+12FAA
+CYPRO-MINOAN SIGN CM034
+
+12FAB
+CYPRO-MINOAN SIGN CM035
+
+12FAC
+CYPRO-MINOAN SIGN CM036
+
+12FAD
+CYPRO-MINOAN SIGN CM037
+
+12FAE
+CYPRO-MINOAN SIGN CM038
+
+12FAF
+CYPRO-MINOAN SIGN CM039
+
+12FB0
+CYPRO-MINOAN SIGN CM040
+
+12FB1
+CYPRO-MINOAN SIGN CM041
+
+12FB2
+CYPRO-MINOAN SIGN CM044
+
+12FB3
+CYPRO-MINOAN SIGN CM046
+
+12FB4
+CYPRO-MINOAN SIGN CM047
+
+12FB5
+CYPRO-MINOAN SIGN CM049
+
+12FB6
+CYPRO-MINOAN SIGN CM050
+
+12FB7
+CYPRO-MINOAN SIGN CM051
+
+12FB8
+CYPRO-MINOAN SIGN CM052
+
+12FB9
+CYPRO-MINOAN SIGN CM053
+
+12FBA
+CYPRO-MINOAN SIGN CM054
+
+12FBB
+CYPRO-MINOAN SIGN CM055
+
+12FBC
+CYPRO-MINOAN SIGN CM056
+
+12FBD
+CYPRO-MINOAN SIGN CM058
+
+12FBE
+CYPRO-MINOAN SIGN CM059
+
+12FBF
+CYPRO-MINOAN SIGN CM060
+
+12FC0
+CYPRO-MINOAN SIGN CM061
+
+12FC1
+CYPRO-MINOAN SIGN CM062
+
+12FC2
+CYPRO-MINOAN SIGN CM063
+
+12FC3
+CYPRO-MINOAN SIGN CM064
+
+12FC4
+CYPRO-MINOAN SIGN CM066
+
+12FC5
+CYPRO-MINOAN SIGN CM067
+
+12FC6
+CYPRO-MINOAN SIGN CM068
+
+12FC7
+CYPRO-MINOAN SIGN CM069
+
+12FC8
+CYPRO-MINOAN SIGN CM070
+
+12FC9
+CYPRO-MINOAN SIGN CM071
+
+12FCA
+CYPRO-MINOAN SIGN CM072
+
+12FCB
+CYPRO-MINOAN SIGN CM073
+
+12FCC
+CYPRO-MINOAN SIGN CM074
+
+12FCD
+CYPRO-MINOAN SIGN CM075
+
+12FCE
+CYPRO-MINOAN SIGN CM075B
+
+12FCF
+CYPRO-MINOAN SIGN CM076
+
+12FD0
+CYPRO-MINOAN SIGN CM078
+
+12FD1
+CYPRO-MINOAN SIGN CM079
+
+12FD2
+CYPRO-MINOAN SIGN CM080
+
+12FD3
+CYPRO-MINOAN SIGN CM081
+
+12FD4
+CYPRO-MINOAN SIGN CM082
+
+12FD5
+CYPRO-MINOAN SIGN CM083
+
+12FD6
+CYPRO-MINOAN SIGN CM084
+
+12FD7
+CYPRO-MINOAN SIGN CM085
+
+12FD8
+CYPRO-MINOAN SIGN CM086
+
+12FD9
+CYPRO-MINOAN SIGN CM087
+
+12FDA
+CYPRO-MINOAN SIGN CM088
+
+12FDB
+CYPRO-MINOAN SIGN CM089
+
+12FDC
+CYPRO-MINOAN SIGN CM090
+
+12FDD
+CYPRO-MINOAN SIGN CM091
+
+12FDE
+CYPRO-MINOAN SIGN CM092
+
+12FDF
+CYPRO-MINOAN SIGN CM094
+
+12FE0
+CYPRO-MINOAN SIGN CM095
+
+12FE1
+CYPRO-MINOAN SIGN CM096
+
+12FE2
+CYPRO-MINOAN SIGN CM097
+
+12FE3
+CYPRO-MINOAN SIGN CM098
+
+12FE4
+CYPRO-MINOAN SIGN CM099
+
+12FE5
+CYPRO-MINOAN SIGN CM100
+
+12FE6
+CYPRO-MINOAN SIGN CM101
+
+12FE7
+CYPRO-MINOAN SIGN CM102
+
+12FE8
+CYPRO-MINOAN SIGN CM103
+
+12FE9
+CYPRO-MINOAN SIGN CM104
+
+12FEA
+CYPRO-MINOAN SIGN CM105
+
+12FEB
+CYPRO-MINOAN SIGN CM107
+
+12FEC
+CYPRO-MINOAN SIGN CM108
+
+12FED
+CYPRO-MINOAN SIGN CM109
+
+12FEE
+CYPRO-MINOAN SIGN CM110
+
+12FEF
+CYPRO-MINOAN SIGN CM112
+
+12FF0
+CYPRO-MINOAN SIGN CM114
+
+12FF1
+CYPRO-MINOAN SIGN CM301
+
+12FF2
+CYPRO-MINOAN SIGN CM302
+
13000
EGYPTIAN HIEROGLYPH A001
@@ -69934,6 +71488,9 @@ EGYPTIAN HIEROGLYPH AA031
1342E
EGYPTIAN HIEROGLYPH AA032
+1342F
+EGYPTIAN HIEROGLYPH V011D
+
13430
EGYPTIAN HIEROGLYPH VERTICAL JOINER
@@ -69961,6 +71518,93 @@ EGYPTIAN HIEROGLYPH BEGIN SEGMENT
13438
EGYPTIAN HIEROGLYPH END SEGMENT
+13439
+EGYPTIAN HIEROGLYPH INSERT AT MIDDLE
+
+1343A
+EGYPTIAN HIEROGLYPH INSERT AT TOP
+
+1343B
+EGYPTIAN HIEROGLYPH INSERT AT BOTTOM
+
+1343C
+EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE
+
+1343D
+EGYPTIAN HIEROGLYPH END ENCLOSURE
+
+1343E
+EGYPTIAN HIEROGLYPH BEGIN WALLED ENCLOSURE
+
+1343F
+EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE
+
+13440
+EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
+
+13441
+EGYPTIAN HIEROGLYPH FULL BLANK
+
+13442
+EGYPTIAN HIEROGLYPH HALF BLANK
+
+13443
+EGYPTIAN HIEROGLYPH LOST SIGN
+
+13444
+EGYPTIAN HIEROGLYPH HALF LOST SIGN
+
+13445
+EGYPTIAN HIEROGLYPH TALL LOST SIGN
+
+13446
+EGYPTIAN HIEROGLYPH WIDE LOST SIGN
+
+13447
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START
+
+13448
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START
+
+13449
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START
+
+1344A
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP END
+
+1344B
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP
+
+1344C
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START AND TOP END
+
+1344D
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND TOP
+
+1344E
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM END
+
+1344F
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START AND BOTTOM END
+
+13450
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM
+
+13451
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND BOTTOM
+
+13452
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT END
+
+13453
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP AND END
+
+13454
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM AND END
+
+13455
+EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+
14400
ANATOLIAN HIEROGLYPH A001
@@ -73546,6 +75190,273 @@ MRO DANDA
16A6F
MRO DOUBLE DANDA
+16A70
+TANGSA LETTER OZ
+
+16A71
+TANGSA LETTER OC
+
+16A72
+TANGSA LETTER OQ
+
+16A73
+TANGSA LETTER OX
+
+16A74
+TANGSA LETTER AZ
+
+16A75
+TANGSA LETTER AC
+
+16A76
+TANGSA LETTER AQ
+
+16A77
+TANGSA LETTER AX
+
+16A78
+TANGSA LETTER VZ
+
+16A79
+TANGSA LETTER VC
+
+16A7A
+TANGSA LETTER VQ
+
+16A7B
+TANGSA LETTER VX
+
+16A7C
+TANGSA LETTER EZ
+
+16A7D
+TANGSA LETTER EC
+
+16A7E
+TANGSA LETTER EQ
+
+16A7F
+TANGSA LETTER EX
+
+16A80
+TANGSA LETTER IZ
+
+16A81
+TANGSA LETTER IC
+
+16A82
+TANGSA LETTER IQ
+
+16A83
+TANGSA LETTER IX
+
+16A84
+TANGSA LETTER UZ
+
+16A85
+TANGSA LETTER UC
+
+16A86
+TANGSA LETTER UQ
+
+16A87
+TANGSA LETTER UX
+
+16A88
+TANGSA LETTER AWZ
+
+16A89
+TANGSA LETTER AWC
+
+16A8A
+TANGSA LETTER AWQ
+
+16A8B
+TANGSA LETTER AWX
+
+16A8C
+TANGSA LETTER UIZ
+
+16A8D
+TANGSA LETTER UIC
+
+16A8E
+TANGSA LETTER UIQ
+
+16A8F
+TANGSA LETTER UIX
+
+16A90
+TANGSA LETTER FINAL NG
+
+16A91
+TANGSA LETTER LONG UEX
+
+16A92
+TANGSA LETTER SHORT UEZ
+
+16A93
+TANGSA LETTER SHORT AWX
+
+16A94
+TANGSA LETTER UEC
+
+16A95
+TANGSA LETTER UEZ
+
+16A96
+TANGSA LETTER UEQ
+
+16A97
+TANGSA LETTER UEX
+
+16A98
+TANGSA LETTER UIUZ
+
+16A99
+TANGSA LETTER UIUC
+
+16A9A
+TANGSA LETTER UIUQ
+
+16A9B
+TANGSA LETTER UIUX
+
+16A9C
+TANGSA LETTER MZ
+
+16A9D
+TANGSA LETTER MC
+
+16A9E
+TANGSA LETTER MQ
+
+16A9F
+TANGSA LETTER MX
+
+16AA0
+TANGSA LETTER KA
+
+16AA1
+TANGSA LETTER KHA
+
+16AA2
+TANGSA LETTER GA
+
+16AA3
+TANGSA LETTER NGA
+
+16AA4
+TANGSA LETTER SA
+
+16AA5
+TANGSA LETTER YA
+
+16AA6
+TANGSA LETTER WA
+
+16AA7
+TANGSA LETTER PA
+
+16AA8
+TANGSA LETTER NYA
+
+16AA9
+TANGSA LETTER PHA
+
+16AAA
+TANGSA LETTER BA
+
+16AAB
+TANGSA LETTER MA
+
+16AAC
+TANGSA LETTER NA
+
+16AAD
+TANGSA LETTER HA
+
+16AAE
+TANGSA LETTER LA
+
+16AAF
+TANGSA LETTER HTA
+
+16AB0
+TANGSA LETTER TA
+
+16AB1
+TANGSA LETTER DA
+
+16AB2
+TANGSA LETTER RA
+
+16AB3
+TANGSA LETTER NHA
+
+16AB4
+TANGSA LETTER SHA
+
+16AB5
+TANGSA LETTER CA
+
+16AB6
+TANGSA LETTER TSA
+
+16AB7
+TANGSA LETTER GHA
+
+16AB8
+TANGSA LETTER HTTA
+
+16AB9
+TANGSA LETTER THA
+
+16ABA
+TANGSA LETTER XA
+
+16ABB
+TANGSA LETTER FA
+
+16ABC
+TANGSA LETTER DHA
+
+16ABD
+TANGSA LETTER CHA
+
+16ABE
+TANGSA LETTER ZA
+
+16AC0
+TANGSA DIGIT ZERO
+
+16AC1
+TANGSA DIGIT ONE
+
+16AC2
+TANGSA DIGIT TWO
+
+16AC3
+TANGSA DIGIT THREE
+
+16AC4
+TANGSA DIGIT FOUR
+
+16AC5
+TANGSA DIGIT FIVE
+
+16AC6
+TANGSA DIGIT SIX
+
+16AC7
+TANGSA DIGIT SEVEN
+
+16AC8
+TANGSA DIGIT EIGHT
+
+16AC9
+TANGSA DIGIT NINE
+
16AD0
BASSA VAH LETTER ENNI
@@ -77092,6 +79003,45 @@ TANGUT COMPONENT-767
18AFF
TANGUT COMPONENT-768
+1AFF0
+KATAKANA LETTER MINNAN TONE-2
+
+1AFF1
+KATAKANA LETTER MINNAN TONE-3
+
+1AFF2
+KATAKANA LETTER MINNAN TONE-4
+
+1AFF3
+KATAKANA LETTER MINNAN TONE-5
+
+1AFF5
+KATAKANA LETTER MINNAN TONE-7
+
+1AFF6
+KATAKANA LETTER MINNAN TONE-8
+
+1AFF7
+KATAKANA LETTER MINNAN NASALIZED TONE-1
+
+1AFF8
+KATAKANA LETTER MINNAN NASALIZED TONE-2
+
+1AFF9
+KATAKANA LETTER MINNAN NASALIZED TONE-3
+
+1AFFA
+KATAKANA LETTER MINNAN NASALIZED TONE-4
+
+1AFFB
+KATAKANA LETTER MINNAN NASALIZED TONE-5
+
+1AFFD
+KATAKANA LETTER MINNAN NASALIZED TONE-7
+
+1AFFE
+KATAKANA LETTER MINNAN NASALIZED TONE-8
+
1B000
KATAKANA LETTER ARCHAIC E
@@ -77956,6 +79906,21 @@ HENTAIGANA LETTER N-MU-MO-1
1B11E
HENTAIGANA LETTER N-MU-MO-2
+1B11F
+HIRAGANA LETTER ARCHAIC WU
+
+1B120
+KATAKANA LETTER ARCHAIC YI
+
+1B121
+KATAKANA LETTER ARCHAIC YE
+
+1B122
+KATAKANA LETTER ARCHAIC WU
+
+1B132
+HIRAGANA LETTER SMALL KO
+
1B150
HIRAGANA LETTER SMALL WI
@@ -77965,6 +79930,9 @@ HIRAGANA LETTER SMALL WE
1B152
HIRAGANA LETTER SMALL WO
+1B155
+KATAKANA LETTER SMALL KO
+
1B164
KATAKANA LETTER SMALL WI
@@ -78418,6 +80386,561 @@ SHORTHAND FORMAT DOWN STEP
1BCA3
SHORTHAND FORMAT UP STEP
+1CF00
+ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT
+
+1CF01
+ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON LEFT
+
+1CF02
+ZNAMENNY COMBINING MARK TSATA ON LEFT
+
+1CF03
+ZNAMENNY COMBINING MARK GORAZDO NIZKO ON LEFT
+
+1CF04
+ZNAMENNY COMBINING MARK NIZKO ON LEFT
+
+1CF05
+ZNAMENNY COMBINING MARK SREDNE ON LEFT
+
+1CF06
+ZNAMENNY COMBINING MARK MALO POVYSHE ON LEFT
+
+1CF07
+ZNAMENNY COMBINING MARK POVYSHE ON LEFT
+
+1CF08
+ZNAMENNY COMBINING MARK VYSOKO ON LEFT
+
+1CF09
+ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON LEFT
+
+1CF0A
+ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON LEFT
+
+1CF0B
+ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON LEFT
+
+1CF0C
+ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON RIGHT
+
+1CF0D
+ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON RIGHT
+
+1CF0E
+ZNAMENNY COMBINING MARK TSATA ON RIGHT
+
+1CF0F
+ZNAMENNY COMBINING MARK GORAZDO NIZKO ON RIGHT
+
+1CF10
+ZNAMENNY COMBINING MARK NIZKO ON RIGHT
+
+1CF11
+ZNAMENNY COMBINING MARK SREDNE ON RIGHT
+
+1CF12
+ZNAMENNY COMBINING MARK MALO POVYSHE ON RIGHT
+
+1CF13
+ZNAMENNY COMBINING MARK POVYSHE ON RIGHT
+
+1CF14
+ZNAMENNY COMBINING MARK VYSOKO ON RIGHT
+
+1CF15
+ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON RIGHT
+
+1CF16
+ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON RIGHT
+
+1CF17
+ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON RIGHT
+
+1CF18
+ZNAMENNY COMBINING MARK TSATA S KRYZHEM
+
+1CF19
+ZNAMENNY COMBINING MARK MALO POVYSHE S KRYZHEM
+
+1CF1A
+ZNAMENNY COMBINING MARK STRANNO MALO POVYSHE
+
+1CF1B
+ZNAMENNY COMBINING MARK POVYSHE S KRYZHEM
+
+1CF1C
+ZNAMENNY COMBINING MARK POVYSHE STRANNO
+
+1CF1D
+ZNAMENNY COMBINING MARK VYSOKO S KRYZHEM
+
+1CF1E
+ZNAMENNY COMBINING MARK MALO POVYSHE STRANNO
+
+1CF1F
+ZNAMENNY COMBINING MARK GORAZDO VYSOKO
+
+1CF20
+ZNAMENNY COMBINING MARK ZELO
+
+1CF21
+ZNAMENNY COMBINING MARK ON
+
+1CF22
+ZNAMENNY COMBINING MARK RAVNO
+
+1CF23
+ZNAMENNY COMBINING MARK TIKHAYA
+
+1CF24
+ZNAMENNY COMBINING MARK BORZAYA
+
+1CF25
+ZNAMENNY COMBINING MARK UDARKA
+
+1CF26
+ZNAMENNY COMBINING MARK PODVERTKA
+
+1CF27
+ZNAMENNY COMBINING MARK LOMKA
+
+1CF28
+ZNAMENNY COMBINING MARK KUPNAYA
+
+1CF29
+ZNAMENNY COMBINING MARK KACHKA
+
+1CF2A
+ZNAMENNY COMBINING MARK ZEVOK
+
+1CF2B
+ZNAMENNY COMBINING MARK SKOBA
+
+1CF2C
+ZNAMENNY COMBINING MARK RAZSEKA
+
+1CF2D
+ZNAMENNY COMBINING MARK KRYZH ON LEFT
+
+1CF30
+ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO
+
+1CF31
+ZNAMENNY COMBINING TONAL RANGE MARK SVETLO
+
+1CF32
+ZNAMENNY COMBINING TONAL RANGE MARK TRESVETLO
+
+1CF33
+ZNAMENNY COMBINING MARK ZADERZHKA
+
+1CF34
+ZNAMENNY COMBINING MARK DEMESTVENNY ZADERZHKA
+
+1CF35
+ZNAMENNY COMBINING MARK OTSECHKA
+
+1CF36
+ZNAMENNY COMBINING MARK PODCHASHIE
+
+1CF37
+ZNAMENNY COMBINING MARK PODCHASHIE WITH VERTICAL STROKE
+
+1CF38
+ZNAMENNY COMBINING MARK CHASHKA
+
+1CF39
+ZNAMENNY COMBINING MARK CHASHKA POLNAYA
+
+1CF3A
+ZNAMENNY COMBINING MARK OBLACHKO
+
+1CF3B
+ZNAMENNY COMBINING MARK SOROCHYA NOZHKA
+
+1CF3C
+ZNAMENNY COMBINING MARK TOCHKA
+
+1CF3D
+ZNAMENNY COMBINING MARK DVOETOCHIE
+
+1CF3E
+ZNAMENNY COMBINING ATTACHING VERTICAL OMET
+
+1CF3F
+ZNAMENNY COMBINING MARK CURVED OMET
+
+1CF40
+ZNAMENNY COMBINING MARK KRYZH
+
+1CF41
+ZNAMENNY COMBINING LOWER TONAL RANGE INDICATOR
+
+1CF42
+ZNAMENNY PRIZNAK MODIFIER LEVEL-2
+
+1CF43
+ZNAMENNY PRIZNAK MODIFIER LEVEL-3
+
+1CF44
+ZNAMENNY PRIZNAK MODIFIER DIRECTION FLIP
+
+1CF45
+ZNAMENNY PRIZNAK MODIFIER KRYZH
+
+1CF46
+ZNAMENNY PRIZNAK MODIFIER ROG
+
+1CF50
+ZNAMENNY NEUME KRYUK
+
+1CF51
+ZNAMENNY NEUME KRYUK TIKHY
+
+1CF52
+ZNAMENNY NEUME PARAKLIT
+
+1CF53
+ZNAMENNY NEUME DVA V CHELNU
+
+1CF54
+ZNAMENNY NEUME KLYUCH
+
+1CF55
+ZNAMENNY NEUME ZANOZHEK
+
+1CF56
+ZNAMENNY NEUME STOPITSA
+
+1CF57
+ZNAMENNY NEUME STOPITSA S OCHKOM
+
+1CF58
+ZNAMENNY NEUME PEREVODKA
+
+1CF59
+ZNAMENNY NEUME PEREVODKA NEPOSTOYANNAYA
+
+1CF5A
+ZNAMENNY NEUME STOPITSA WITH SOROCHYA NOZHKA
+
+1CF5B
+ZNAMENNY NEUME CHELYUSTKA
+
+1CF5C
+ZNAMENNY NEUME PALKA
+
+1CF5D
+ZNAMENNY NEUME ZAPYATAYA
+
+1CF5E
+ZNAMENNY NEUME GOLUBCHIK BORZY
+
+1CF5F
+ZNAMENNY NEUME GOLUBCHIK TIKHY
+
+1CF60
+ZNAMENNY NEUME GOLUBCHIK MRACHNY
+
+1CF61
+ZNAMENNY NEUME GOLUBCHIK SVETLY
+
+1CF62
+ZNAMENNY NEUME GOLUBCHIK TRESVETLY
+
+1CF63
+ZNAMENNY NEUME VRAKHIYA PROSTAYA
+
+1CF64
+ZNAMENNY NEUME VRAKHIYA MRACHNAYA
+
+1CF65
+ZNAMENNY NEUME VRAKHIYA SVETLAYA
+
+1CF66
+ZNAMENNY NEUME VRAKHIYA TRESVETLAYA
+
+1CF67
+ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA PROSTAYA
+
+1CF68
+ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA MRACHNAYA
+
+1CF69
+ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA SVETLAYA
+
+1CF6A
+ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA TRESVETLAYA
+
+1CF6B
+ZNAMENNY NEUME DOUBLE ZAPYATAYA
+
+1CF6C
+ZNAMENNY NEUME REVERSED CHELYUSTKA
+
+1CF6D
+ZNAMENNY NEUME DERBITSA
+
+1CF6E
+ZNAMENNY NEUME KHAMILO
+
+1CF6F
+ZNAMENNY NEUME CHASHKA
+
+1CF70
+ZNAMENNY NEUME PODCHASHIE
+
+1CF71
+ZNAMENNY NEUME SKAMEYTSA MRACHNAYA
+
+1CF72
+ZNAMENNY NEUME SKAMEYTSA SVETLAYA
+
+1CF73
+ZNAMENNY NEUME SKAMEYTSA TRESVETLAYA
+
+1CF74
+ZNAMENNY NEUME SKAMEYTSA TIKHAYA
+
+1CF75
+ZNAMENNY NEUME DEMESTVENNY KLYUCH
+
+1CF76
+ZNAMENNY NEUME SKAMEYTSA KLYUCHEVAYA SVETLAYA
+
+1CF77
+ZNAMENNY NEUME SKAMEYTSA KLYUCHENEPOSTOYANNAYA
+
+1CF78
+ZNAMENNY NEUME SKAMEYTSA KLYUCHEVAYA TIKHAYA
+
+1CF79
+ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA PROSTAYA
+
+1CF7A
+ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA SVETLAYA
+
+1CF7B
+ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA NEPOSTOYANNAYA
+
+1CF7C
+ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA KLYUCHEVAYA
+
+1CF7D
+ZNAMENNY NEUME SLOZHITIE
+
+1CF7E
+ZNAMENNY NEUME SLOZHITIE S ZAPYATOY
+
+1CF7F
+ZNAMENNY NEUME SLOZHITIE ZAKRYTOE
+
+1CF80
+ZNAMENNY NEUME SLOZHITIE S KRYZHEM
+
+1CF81
+ZNAMENNY NEUME KRYZH
+
+1CF82
+ZNAMENNY NEUME ROG
+
+1CF83
+ZNAMENNY NEUME FITA
+
+1CF84
+ZNAMENNY NEUME KOBYLA
+
+1CF85
+ZNAMENNY NEUME ZMEYTSA
+
+1CF86
+ZNAMENNY NEUME STATYA
+
+1CF87
+ZNAMENNY NEUME STATYA S ZAPYATOY
+
+1CF88
+ZNAMENNY NEUME STATYA S KRYZHEM
+
+1CF89
+ZNAMENNY NEUME STATYA S ZAPYATOY I KRYZHEM
+
+1CF8A
+ZNAMENNY NEUME STATYA S KRYZHEM I ZAPYATOY
+
+1CF8B
+ZNAMENNY NEUME STATYA ZAKRYTAYA
+
+1CF8C
+ZNAMENNY NEUME STATYA ZAKRYTAYA S ZAPYATOY
+
+1CF8D
+ZNAMENNY NEUME STATYA S ROGOM
+
+1CF8E
+ZNAMENNY NEUME STATYA S DVUMYA ZAPYATYMI
+
+1CF8F
+ZNAMENNY NEUME STATYA S ZAPYATOY I PODCHASHIEM
+
+1CF90
+ZNAMENNY NEUME POLKULIZMY
+
+1CF91
+ZNAMENNY NEUME STATYA NEPOSTOYANNAYA
+
+1CF92
+ZNAMENNY NEUME STRELA PROSTAYA
+
+1CF93
+ZNAMENNY NEUME STRELA MRACHNOTIKHAYA
+
+1CF94
+ZNAMENNY NEUME STRELA KRYZHEVAYA
+
+1CF95
+ZNAMENNY NEUME STRELA POLUPOVODNAYA
+
+1CF96
+ZNAMENNY NEUME STRELA POVODNAYA
+
+1CF97
+ZNAMENNY NEUME STRELA NEPOSTOYANNAYA
+
+1CF98
+ZNAMENNY NEUME STRELA KLYUCHEPOVODNAYA
+
+1CF99
+ZNAMENNY NEUME STRELA KLYUCHENEPOSTOYANNAYA
+
+1CF9A
+ZNAMENNY NEUME STRELA TIKHAYA PUTNAYA
+
+1CF9B
+ZNAMENNY NEUME STRELA DVOECHELNAYA
+
+1CF9C
+ZNAMENNY NEUME STRELA DVOECHELNOKRYZHEVAYA
+
+1CF9D
+ZNAMENNY NEUME STRELA DVOECHELNOPOVODNAYA
+
+1CF9E
+ZNAMENNY NEUME STRELA DVOECHELNAYA KLYUCHEVAYA
+
+1CF9F
+ZNAMENNY NEUME STRELA DVOECHELNOPOVODNAYA KLYUCHEVAYA
+
+1CFA0
+ZNAMENNY NEUME STRELA GROMNAYA WITH SINGLE ZAPYATAYA
+
+1CFA1
+ZNAMENNY NEUME STRELA GROMOPOVODNAYA WITH SINGLE ZAPYATAYA
+
+1CFA2
+ZNAMENNY NEUME STRELA GROMNAYA
+
+1CFA3
+ZNAMENNY NEUME STRELA GROMOPOVODNAYA
+
+1CFA4
+ZNAMENNY NEUME STRELA GROMOPOVODNAYA WITH DOUBLE ZAPYATAYA
+
+1CFA5
+ZNAMENNY NEUME STRELA GROMOKRYZHEVAYA
+
+1CFA6
+ZNAMENNY NEUME STRELA GROMOKRYZHEVAYA POVODNAYA
+
+1CFA7
+ZNAMENNY NEUME MECHIK
+
+1CFA8
+ZNAMENNY NEUME MECHIK POVODNY
+
+1CFA9
+ZNAMENNY NEUME MECHIK KLYUCHEVOY
+
+1CFAA
+ZNAMENNY NEUME MECHIK KLYUCHEPOVODNY
+
+1CFAB
+ZNAMENNY NEUME MECHIK KLYUCHENEPOSTOYANNY
+
+1CFAC
+ZNAMENNY NEUME STRELA TRYASOGLASNAYA
+
+1CFAD
+ZNAMENNY NEUME STRELA TRYASOPOVODNAYA
+
+1CFAE
+ZNAMENNY NEUME STRELA TRYASOSTRELNAYA
+
+1CFAF
+ZNAMENNY NEUME OSOKA
+
+1CFB0
+ZNAMENNY NEUME OSOKA SVETLAYA
+
+1CFB1
+ZNAMENNY NEUME OSOKA TRESVETLAYA
+
+1CFB2
+ZNAMENNY NEUME OSOKA KRYUKOVAYA SVETLAYA
+
+1CFB3
+ZNAMENNY NEUME OSOKA KLYUCHEVAYA SVETLAYA
+
+1CFB4
+ZNAMENNY NEUME OSOKA KLYUCHEVAYA NEPOSTOYANNAYA
+
+1CFB5
+ZNAMENNY NEUME STRELA KRYUKOVAYA
+
+1CFB6
+ZNAMENNY NEUME STRELA KRYUKOVAYA POVODNAYA
+
+1CFB7
+ZNAMENNY NEUME STRELA KRYUKOVAYA GROMNAYA WITH SINGLE ZAPYATAYA
+
+1CFB8
+ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA WITH SINGLE ZAPYATAYA
+
+1CFB9
+ZNAMENNY NEUME STRELA KRYUKOVAYA GROMNAYA
+
+1CFBA
+ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA
+
+1CFBB
+ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA WITH DOUBLE ZAPYATAYA
+
+1CFBC
+ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOKRYZHEVAYA
+
+1CFBD
+ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOKRYZHEVAYA POVODNAYA
+
+1CFBE
+ZNAMENNY NEUME STRELA KRYUKOVAYA TRYASKA
+
+1CFBF
+ZNAMENNY NEUME KUFISMA
+
+1CFC0
+ZNAMENNY NEUME OBLAKO
+
+1CFC1
+ZNAMENNY NEUME DUDA
+
+1CFC2
+ZNAMENNY NEUME NEMKA
+
+1CFC3
+ZNAMENNY NEUME PAUK
+
1D000
BYZANTINE MUSICAL SYMBOL PSILI
@@ -79852,6 +82375,12 @@ MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP
1D1E8
MUSICAL SYMBOL KIEVAN FLAT SIGN
+1D1E9
+MUSICAL SYMBOL SORI
+
+1D1EA
+MUSICAL SYMBOL KORON
+
1D200
GREEK VOCAL NOTATION SYMBOL-1
@@ -80062,6 +82591,66 @@ COMBINING GREEK MUSICAL PENTASEME
1D245
GREEK MUSICAL LEIMMA
+1D2C0
+KAKTOVIK NUMERAL ZERO
+
+1D2C1
+KAKTOVIK NUMERAL ONE
+
+1D2C2
+KAKTOVIK NUMERAL TWO
+
+1D2C3
+KAKTOVIK NUMERAL THREE
+
+1D2C4
+KAKTOVIK NUMERAL FOUR
+
+1D2C5
+KAKTOVIK NUMERAL FIVE
+
+1D2C6
+KAKTOVIK NUMERAL SIX
+
+1D2C7
+KAKTOVIK NUMERAL SEVEN
+
+1D2C8
+KAKTOVIK NUMERAL EIGHT
+
+1D2C9
+KAKTOVIK NUMERAL NINE
+
+1D2CA
+KAKTOVIK NUMERAL TEN
+
+1D2CB
+KAKTOVIK NUMERAL ELEVEN
+
+1D2CC
+KAKTOVIK NUMERAL TWELVE
+
+1D2CD
+KAKTOVIK NUMERAL THIRTEEN
+
+1D2CE
+KAKTOVIK NUMERAL FOURTEEN
+
+1D2CF
+KAKTOVIK NUMERAL FIFTEEN
+
+1D2D0
+KAKTOVIK NUMERAL SIXTEEN
+
+1D2D1
+KAKTOVIK NUMERAL SEVENTEEN
+
+1D2D2
+KAKTOVIK NUMERAL EIGHTEEN
+
+1D2D3
+KAKTOVIK NUMERAL NINETEEN
+
1D2E0
MAYAN NUMERAL ZERO
@@ -85462,6 +88051,117 @@ SIGNWRITING ROTATION MODIFIER-15
1DAAF
SIGNWRITING ROTATION MODIFIER-16
+1DF00
+LATIN SMALL LETTER FENG DIGRAPH WITH TRILL
+
+1DF01
+LATIN SMALL LETTER REVERSED SCRIPT G
+
+1DF02
+LATIN LETTER SMALL CAPITAL TURNED G
+
+1DF03
+LATIN SMALL LETTER REVERSED K
+
+1DF04
+LATIN LETTER SMALL CAPITAL L WITH BELT
+
+1DF05
+LATIN SMALL LETTER LEZH WITH RETROFLEX HOOK
+
+1DF06
+LATIN SMALL LETTER TURNED Y WITH BELT
+
+1DF07
+LATIN SMALL LETTER REVERSED ENG
+
+1DF08
+LATIN SMALL LETTER TURNED R WITH LONG LEG AND RETROFLEX HOOK
+
+1DF09
+LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK
+
+1DF0A
+LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK
+
+1DF0B
+LATIN SMALL LETTER ESH WITH DOUBLE BAR
+
+1DF0C
+LATIN SMALL LETTER ESH WITH DOUBLE BAR AND CURL
+
+1DF0D
+LATIN SMALL LETTER TURNED T WITH CURL
+
+1DF0E
+LATIN LETTER INVERTED GLOTTAL STOP WITH CURL
+
+1DF0F
+LATIN LETTER STRETCHED C WITH CURL
+
+1DF10
+LATIN LETTER SMALL CAPITAL TURNED K
+
+1DF11
+LATIN SMALL LETTER L WITH FISHHOOK
+
+1DF12
+LATIN SMALL LETTER DEZH DIGRAPH WITH PALATAL HOOK
+
+1DF13
+LATIN SMALL LETTER L WITH BELT AND PALATAL HOOK
+
+1DF14
+LATIN SMALL LETTER ENG WITH PALATAL HOOK
+
+1DF15
+LATIN SMALL LETTER TURNED R WITH PALATAL HOOK
+
+1DF16
+LATIN SMALL LETTER R WITH FISHHOOK AND PALATAL HOOK
+
+1DF17
+LATIN SMALL LETTER TESH DIGRAPH WITH PALATAL HOOK
+
+1DF18
+LATIN SMALL LETTER EZH WITH PALATAL HOOK
+
+1DF19
+LATIN SMALL LETTER DEZH DIGRAPH WITH RETROFLEX HOOK
+
+1DF1A
+LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK
+
+1DF1B
+LATIN SMALL LETTER O WITH RETROFLEX HOOK
+
+1DF1C
+LATIN SMALL LETTER TESH DIGRAPH WITH RETROFLEX HOOK
+
+1DF1D
+LATIN SMALL LETTER C WITH RETROFLEX HOOK
+
+1DF1E
+LATIN SMALL LETTER S WITH CURL
+
+1DF25
+LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK
+
+1DF26
+LATIN SMALL LETTER L WITH MID-HEIGHT LEFT HOOK
+
+1DF27
+LATIN SMALL LETTER N WITH MID-HEIGHT LEFT HOOK
+
+1DF28
+LATIN SMALL LETTER R WITH MID-HEIGHT LEFT HOOK
+
+1DF29
+LATIN SMALL LETTER S WITH MID-HEIGHT LEFT HOOK
+
+1DF2A
+LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
+
1E000
COMBINING GLAGOLITIC LETTER AZU
@@ -85576,6 +88276,195 @@ COMBINING GLAGOLITIC LETTER IOTATED BIG YUS
1E02A
COMBINING GLAGOLITIC LETTER FITA
+1E030
+MODIFIER LETTER CYRILLIC SMALL A
+
+1E031
+MODIFIER LETTER CYRILLIC SMALL BE
+
+1E032
+MODIFIER LETTER CYRILLIC SMALL VE
+
+1E033
+MODIFIER LETTER CYRILLIC SMALL GHE
+
+1E034
+MODIFIER LETTER CYRILLIC SMALL DE
+
+1E035
+MODIFIER LETTER CYRILLIC SMALL IE
+
+1E036
+MODIFIER LETTER CYRILLIC SMALL ZHE
+
+1E037
+MODIFIER LETTER CYRILLIC SMALL ZE
+
+1E038
+MODIFIER LETTER CYRILLIC SMALL I
+
+1E039
+MODIFIER LETTER CYRILLIC SMALL KA
+
+1E03A
+MODIFIER LETTER CYRILLIC SMALL EL
+
+1E03B
+MODIFIER LETTER CYRILLIC SMALL EM
+
+1E03C
+MODIFIER LETTER CYRILLIC SMALL O
+
+1E03D
+MODIFIER LETTER CYRILLIC SMALL PE
+
+1E03E
+MODIFIER LETTER CYRILLIC SMALL ER
+
+1E03F
+MODIFIER LETTER CYRILLIC SMALL ES
+
+1E040
+MODIFIER LETTER CYRILLIC SMALL TE
+
+1E041
+MODIFIER LETTER CYRILLIC SMALL U
+
+1E042
+MODIFIER LETTER CYRILLIC SMALL EF
+
+1E043
+MODIFIER LETTER CYRILLIC SMALL HA
+
+1E044
+MODIFIER LETTER CYRILLIC SMALL TSE
+
+1E045
+MODIFIER LETTER CYRILLIC SMALL CHE
+
+1E046
+MODIFIER LETTER CYRILLIC SMALL SHA
+
+1E047
+MODIFIER LETTER CYRILLIC SMALL YERU
+
+1E048
+MODIFIER LETTER CYRILLIC SMALL E
+
+1E049
+MODIFIER LETTER CYRILLIC SMALL YU
+
+1E04A
+MODIFIER LETTER CYRILLIC SMALL DZZE
+
+1E04B
+MODIFIER LETTER CYRILLIC SMALL SCHWA
+
+1E04C
+MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I
+
+1E04D
+MODIFIER LETTER CYRILLIC SMALL JE
+
+1E04E
+MODIFIER LETTER CYRILLIC SMALL BARRED O
+
+1E04F
+MODIFIER LETTER CYRILLIC SMALL STRAIGHT U
+
+1E050
+MODIFIER LETTER CYRILLIC SMALL PALOCHKA
+
+1E051
+CYRILLIC SUBSCRIPT SMALL LETTER A
+
+1E052
+CYRILLIC SUBSCRIPT SMALL LETTER BE
+
+1E053
+CYRILLIC SUBSCRIPT SMALL LETTER VE
+
+1E054
+CYRILLIC SUBSCRIPT SMALL LETTER GHE
+
+1E055
+CYRILLIC SUBSCRIPT SMALL LETTER DE
+
+1E056
+CYRILLIC SUBSCRIPT SMALL LETTER IE
+
+1E057
+CYRILLIC SUBSCRIPT SMALL LETTER ZHE
+
+1E058
+CYRILLIC SUBSCRIPT SMALL LETTER ZE
+
+1E059
+CYRILLIC SUBSCRIPT SMALL LETTER I
+
+1E05A
+CYRILLIC SUBSCRIPT SMALL LETTER KA
+
+1E05B
+CYRILLIC SUBSCRIPT SMALL LETTER EL
+
+1E05C
+CYRILLIC SUBSCRIPT SMALL LETTER O
+
+1E05D
+CYRILLIC SUBSCRIPT SMALL LETTER PE
+
+1E05E
+CYRILLIC SUBSCRIPT SMALL LETTER ES
+
+1E05F
+CYRILLIC SUBSCRIPT SMALL LETTER U
+
+1E060
+CYRILLIC SUBSCRIPT SMALL LETTER EF
+
+1E061
+CYRILLIC SUBSCRIPT SMALL LETTER HA
+
+1E062
+CYRILLIC SUBSCRIPT SMALL LETTER TSE
+
+1E063
+CYRILLIC SUBSCRIPT SMALL LETTER CHE
+
+1E064
+CYRILLIC SUBSCRIPT SMALL LETTER SHA
+
+1E065
+CYRILLIC SUBSCRIPT SMALL LETTER HARD SIGN
+
+1E066
+CYRILLIC SUBSCRIPT SMALL LETTER YERU
+
+1E067
+CYRILLIC SUBSCRIPT SMALL LETTER GHE WITH UPTURN
+
+1E068
+CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+
+1E069
+CYRILLIC SUBSCRIPT SMALL LETTER DZE
+
+1E06A
+CYRILLIC SUBSCRIPT SMALL LETTER DZHE
+
+1E06B
+MODIFIER LETTER CYRILLIC SMALL ES WITH DESCENDER
+
+1E06C
+MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER
+
+1E06D
+MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+
+1E08F
+COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+
1E100
NYIAKENG PUACHUE HMONG LETTER MA
@@ -85789,6 +88678,99 @@ NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
1E14F
NYIAKENG PUACHUE HMONG CIRCLED CA
+1E290
+TOTO LETTER PA
+
+1E291
+TOTO LETTER BA
+
+1E292
+TOTO LETTER TA
+
+1E293
+TOTO LETTER DA
+
+1E294
+TOTO LETTER KA
+
+1E295
+TOTO LETTER GA
+
+1E296
+TOTO LETTER MA
+
+1E297
+TOTO LETTER NA
+
+1E298
+TOTO LETTER NGA
+
+1E299
+TOTO LETTER SA
+
+1E29A
+TOTO LETTER CHA
+
+1E29B
+TOTO LETTER YA
+
+1E29C
+TOTO LETTER WA
+
+1E29D
+TOTO LETTER JA
+
+1E29E
+TOTO LETTER HA
+
+1E29F
+TOTO LETTER RA
+
+1E2A0
+TOTO LETTER LA
+
+1E2A1
+TOTO LETTER I
+
+1E2A2
+TOTO LETTER BREATHY I
+
+1E2A3
+TOTO LETTER IU
+
+1E2A4
+TOTO LETTER BREATHY IU
+
+1E2A5
+TOTO LETTER U
+
+1E2A6
+TOTO LETTER E
+
+1E2A7
+TOTO LETTER BREATHY E
+
+1E2A8
+TOTO LETTER EO
+
+1E2A9
+TOTO LETTER BREATHY EO
+
+1E2AA
+TOTO LETTER O
+
+1E2AB
+TOTO LETTER AE
+
+1E2AC
+TOTO LETTER BREATHY AE
+
+1E2AD
+TOTO LETTER A
+
+1E2AE
+TOTO SIGN RISING TONE
+
1E2C0
WANCHO LETTER AA
@@ -85966,6 +88948,216 @@ WANCHO DIGIT NINE
1E2FF
WANCHO NGUN SIGN
+1E4D0
+NAG MUNDARI LETTER O
+
+1E4D1
+NAG MUNDARI LETTER OP
+
+1E4D2
+NAG MUNDARI LETTER OL
+
+1E4D3
+NAG MUNDARI LETTER OY
+
+1E4D4
+NAG MUNDARI LETTER ONG
+
+1E4D5
+NAG MUNDARI LETTER A
+
+1E4D6
+NAG MUNDARI LETTER AJ
+
+1E4D7
+NAG MUNDARI LETTER AB
+
+1E4D8
+NAG MUNDARI LETTER ANY
+
+1E4D9
+NAG MUNDARI LETTER AH
+
+1E4DA
+NAG MUNDARI LETTER I
+
+1E4DB
+NAG MUNDARI LETTER IS
+
+1E4DC
+NAG MUNDARI LETTER IDD
+
+1E4DD
+NAG MUNDARI LETTER IT
+
+1E4DE
+NAG MUNDARI LETTER IH
+
+1E4DF
+NAG MUNDARI LETTER U
+
+1E4E0
+NAG MUNDARI LETTER UC
+
+1E4E1
+NAG MUNDARI LETTER UD
+
+1E4E2
+NAG MUNDARI LETTER UK
+
+1E4E3
+NAG MUNDARI LETTER UR
+
+1E4E4
+NAG MUNDARI LETTER E
+
+1E4E5
+NAG MUNDARI LETTER ENN
+
+1E4E6
+NAG MUNDARI LETTER EG
+
+1E4E7
+NAG MUNDARI LETTER EM
+
+1E4E8
+NAG MUNDARI LETTER EN
+
+1E4E9
+NAG MUNDARI LETTER ETT
+
+1E4EA
+NAG MUNDARI LETTER ELL
+
+1E4EB
+NAG MUNDARI SIGN OJOD
+
+1E4EC
+NAG MUNDARI SIGN MUHOR
+
+1E4ED
+NAG MUNDARI SIGN TOYOR
+
+1E4EE
+NAG MUNDARI SIGN IKIR
+
+1E4EF
+NAG MUNDARI SIGN SUTUH
+
+1E4F0
+NAG MUNDARI DIGIT ZERO
+
+1E4F1
+NAG MUNDARI DIGIT ONE
+
+1E4F2
+NAG MUNDARI DIGIT TWO
+
+1E4F3
+NAG MUNDARI DIGIT THREE
+
+1E4F4
+NAG MUNDARI DIGIT FOUR
+
+1E4F5
+NAG MUNDARI DIGIT FIVE
+
+1E4F6
+NAG MUNDARI DIGIT SIX
+
+1E4F7
+NAG MUNDARI DIGIT SEVEN
+
+1E4F8
+NAG MUNDARI DIGIT EIGHT
+
+1E4F9
+NAG MUNDARI DIGIT NINE
+
+1E7E0
+ETHIOPIC SYLLABLE HHYA
+
+1E7E1
+ETHIOPIC SYLLABLE HHYU
+
+1E7E2
+ETHIOPIC SYLLABLE HHYI
+
+1E7E3
+ETHIOPIC SYLLABLE HHYAA
+
+1E7E4
+ETHIOPIC SYLLABLE HHYEE
+
+1E7E5
+ETHIOPIC SYLLABLE HHYE
+
+1E7E6
+ETHIOPIC SYLLABLE HHYO
+
+1E7E8
+ETHIOPIC SYLLABLE GURAGE HHWA
+
+1E7E9
+ETHIOPIC SYLLABLE HHWI
+
+1E7EA
+ETHIOPIC SYLLABLE HHWEE
+
+1E7EB
+ETHIOPIC SYLLABLE HHWE
+
+1E7ED
+ETHIOPIC SYLLABLE GURAGE MWI
+
+1E7EE
+ETHIOPIC SYLLABLE GURAGE MWEE
+
+1E7F0
+ETHIOPIC SYLLABLE GURAGE QWI
+
+1E7F1
+ETHIOPIC SYLLABLE GURAGE QWEE
+
+1E7F2
+ETHIOPIC SYLLABLE GURAGE QWE
+
+1E7F3
+ETHIOPIC SYLLABLE GURAGE BWI
+
+1E7F4
+ETHIOPIC SYLLABLE GURAGE BWEE
+
+1E7F5
+ETHIOPIC SYLLABLE GURAGE KWI
+
+1E7F6
+ETHIOPIC SYLLABLE GURAGE KWEE
+
+1E7F7
+ETHIOPIC SYLLABLE GURAGE KWE
+
+1E7F8
+ETHIOPIC SYLLABLE GURAGE GWI
+
+1E7F9
+ETHIOPIC SYLLABLE GURAGE GWEE
+
+1E7FA
+ETHIOPIC SYLLABLE GURAGE GWE
+
+1E7FB
+ETHIOPIC SYLLABLE GURAGE FWI
+
+1E7FC
+ETHIOPIC SYLLABLE GURAGE FWEE
+
+1E7FD
+ETHIOPIC SYLLABLE GURAGE PWI
+
+1E7FE
+ETHIOPIC SYLLABLE GURAGE PWEE
+
1E800
MENDE KIKAKUI SYLLABLE M001 KI
@@ -92107,6 +95299,18 @@ HUT
1F6D7
ELEVATOR
+1F6DC
+WIRELESS
+
+1F6DD
+PLAYGROUND SLIDE
+
+1F6DE
+WHEEL
+
+1F6DF
+RING BUOY
+
1F6E0
HAMMER AND WRENCH
@@ -92533,6 +95737,30 @@ ALCHEMICAL SYMBOL FOR HALF DRAM
1F773
ALCHEMICAL SYMBOL FOR HALF OUNCE
+1F774
+LOT OF FORTUNE
+
+1F775
+OCCULTATION
+
+1F776
+LUNAR ECLIPSE
+
+1F77B
+HAUMEA
+
+1F77C
+MAKEMAKE
+
+1F77D
+GONGGONG
+
+1F77E
+QUAOAR
+
+1F77F
+ORCUS
+
1F780
BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE
@@ -92800,6 +96028,9 @@ CIRCLED SQUARE
1F7D8
NEGATIVE CIRCLED SQUARE
+1F7D9
+NINE POINTED WHITE STAR
+
1F7E0
LARGE ORANGE CIRCLE
@@ -92836,6 +96067,9 @@ LARGE PURPLE SQUARE
1F7EB
LARGE BROWN SQUARE
+1F7F0
+HEAVY EQUALS SIGN
+
1F800
LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD
@@ -93649,6 +96883,9 @@ NINJA
1F978
DISGUISED FACE
+1F979
+FACE HOLDING BACK TEARS
+
1F97A
FACE WITH PLEADING EYES
@@ -93895,6 +97132,9 @@ ICE CUBE
1F9CB
BUBBLE TEA
+1F9CC
+TROLL
+
1F9CD
STANDING PERSON
@@ -94357,6 +97597,15 @@ SHORTS
1FA74
THONG SANDAL
+1FA75
+LIGHT BLUE HEART
+
+1FA76
+GREY HEART
+
+1FA77
+PINK HEART
+
1FA78
DROP OF BLOOD
@@ -94366,6 +97615,12 @@ ADHESIVE BANDAGE
1FA7A
STETHOSCOPE
+1FA7B
+X-RAY
+
+1FA7C
+CRUTCH
+
1FA80
YO-YO
@@ -94387,6 +97642,12 @@ PINATA
1FA86
NESTING DOLLS
+1FA87
+MARACAS
+
+1FA88
+FLUTE
+
1FA90
RINGED PLANET
@@ -94462,6 +97723,27 @@ PLACARD
1FAA8
ROCK
+1FAA9
+MIRROR BALL
+
+1FAAA
+IDENTIFICATION CARD
+
+1FAAB
+LOW BATTERY
+
+1FAAC
+HAMSA
+
+1FAAD
+FOLDING HAND FAN
+
+1FAAE
+HAIR PICK
+
+1FAAF
+KHANDA
+
1FAB0
FLY
@@ -94483,6 +97765,30 @@ WOOD
1FAB6
FEATHER
+1FAB7
+LOTUS
+
+1FAB8
+CORAL
+
+1FAB9
+EMPTY NEST
+
+1FABA
+NEST WITH EGGS
+
+1FABB
+HYACINTH
+
+1FABC
+JELLYFISH
+
+1FABD
+WING
+
+1FABF
+GOOSE
+
1FAC0
ANATOMICAL HEART
@@ -94492,6 +97798,21 @@ LUNGS
1FAC2
PEOPLE HUGGING
+1FAC3
+PREGNANT MAN
+
+1FAC4
+PREGNANT PERSON
+
+1FAC5
+PERSON WITH CROWN
+
+1FACE
+MOOSE
+
+1FACF
+DONKEY
+
1FAD0
BLUEBERRIES
@@ -94513,6 +97834,75 @@ FONDUE
1FAD6
TEAPOT
+1FAD7
+POURING LIQUID
+
+1FAD8
+BEANS
+
+1FAD9
+JAR
+
+1FADA
+GINGER ROOT
+
+1FADB
+PEA POD
+
+1FAE0
+MELTING FACE
+
+1FAE1
+SALUTING FACE
+
+1FAE2
+FACE WITH OPEN EYES AND HAND OVER MOUTH
+
+1FAE3
+FACE WITH PEEKING EYE
+
+1FAE4
+FACE WITH DIAGONAL MOUTH
+
+1FAE5
+DOTTED LINE FACE
+
+1FAE6
+BITING LIP
+
+1FAE7
+BUBBLES
+
+1FAE8
+SHAKING FACE
+
+1FAF0
+HAND WITH INDEX FINGER AND THUMB CROSSED
+
+1FAF1
+RIGHTWARDS HAND
+
+1FAF2
+LEFTWARDS HAND
+
+1FAF3
+PALM DOWN HAND
+
+1FAF4
+PALM UP HAND
+
+1FAF5
+INDEX POINTING AT THE VIEWER
+
+1FAF6
+HEART HANDS
+
+1FAF7
+LEFTWARDS PUSHING HAND
+
+1FAF8
+RIGHTWARDS PUSHING HAND
+
1FB00
BLOCK SEXTANT-1
@@ -97150,6 +100540,63 @@ ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH AE
00646 006A9
ARABIC SEQUENCE NOON WITH KEHEH
+00915 0093C
+DEVANAGARI SEQUENCE FOR LETTER QA
+
+00916 0093C
+DEVANAGARI SEQUENCE FOR LETTER KHHA
+
+00917 0093C
+DEVANAGARI SEQUENCE FOR LETTER GHHA
+
+0091C 0093C
+DEVANAGARI SEQUENCE FOR LETTER ZA
+
+00921 0093C
+DEVANAGARI SEQUENCE FOR LETTER DDDHA
+
+00922 0093C
+DEVANAGARI SEQUENCE FOR LETTER RHA
+
+0092B 0093C
+DEVANAGARI SEQUENCE FOR LETTER FA
+
+0092F 0093C
+DEVANAGARI SEQUENCE FOR LETTER YYA
+
+009A1 009BC
+BENGALI SEQUENCE FOR LETTER RRA
+
+009A2 009BC
+BENGALI SEQUENCE FOR LETTER RHA
+
+009AF 009BC
+BENGALI SEQUENCE FOR LETTER YYA
+
+00A32 00A3C
+GURMUKHI SEQUENCE FOR LETTER LLA
+
+00A38 00A3C
+GURMUKHI SEQUENCE FOR LETTER SHA
+
+00A16 00A3C
+GURMUKHI SEQUENCE FOR LETTER KHHA
+
+00A17 00A3C
+GURMUKHI SEQUENCE FOR LETTER GHHA
+
+00A1C 00A3C
+GURMUKHI SEQUENCE FOR LETTER ZA
+
+00A2B 00A3C
+GURMUKHI SEQUENCE FOR LETTER FA
+
+00B21 00B3C
+ORIYA SEQUENCE FOR LETTER RRA
+
+00B22 00B3C
+ORIYA SEQUENCE FOR LETTER RHA
+
00995 009CD 009B7
BENGALI LETTER KHINYA
diff --git a/Master/tlpkg/tlperl/lib/unicore/Name.pm b/Master/tlpkg/tlperl/lib/unicore/Name.pm
index 8074bd58754..3cb96e08888 100644
--- a/Master/tlpkg/tlperl/lib/unicore/Name.pm
+++ b/Master/tlpkg/tlperl/lib/unicore/Name.pm
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
@@ -10,6 +10,7 @@
# base.
+
package charnames;
# This module contains machine-generated tables and code for the
@@ -52,13 +53,14 @@ package charnames;
'high' =>
[
19903,
-40956,
-173789,
-177972,
+40959,
+173791,
+177977,
178205,
183969,
191456,
201546,
+205743,
],
'low' =>
[
@@ -70,6 +72,7 @@ package charnames;
178208,
183984,
196608,
+201552,
],
},
'KHITAN SMALL SCRIPT CHARACTER' =>
@@ -142,13 +145,14 @@ package charnames;
'high' =>
[
19903,
-40956,
-173789,
-177972,
+40959,
+173791,
+177977,
178205,
183969,
191456,
201546,
+205743,
],
'low' =>
[
@@ -160,6 +164,7 @@ package charnames;
178208,
183984,
196608,
+201552,
],
},
'KHITANSMALLSCRIPTCHARACTER' =>
@@ -222,7 +227,7 @@ package charnames;
'name' => 'CJK UNIFIED IDEOGRAPH',
},
{
-'high' => 40956,
+'high' => 40959,
'legal' =>
'
-0123456789ABCDEFGHIJKNOPRU',
@@ -278,7 +283,7 @@ package charnames;
'name' => 'NUSHU CHARACTER',
},
{
-'high' => 173789,
+'high' => 173791,
'legal' =>
'
-0123456789ABCDEFGHIJKNOPRU',
@@ -286,7 +291,7 @@ package charnames;
'name' => 'CJK UNIFIED IDEOGRAPH',
},
{
-'high' => 177972,
+'high' => 177977,
'legal' =>
'
-0123456789ABCDEFGHIJKNOPRU',
@@ -333,6 +338,14 @@ package charnames;
'low' => 196608,
'name' => 'CJK UNIFIED IDEOGRAPH',
},
+{
+'high' => 205743,
+'legal' =>
+'
+ -0123456789ABCDEFGHIJKNOPRU',
+'low' => 201552,
+'name' => 'CJK UNIFIED IDEOGRAPH',
+},
,
);
diff --git a/Master/tlpkg/tlperl/lib/unicore/NamedSequences.txt b/Master/tlpkg/tlperl/lib/unicore/NamedSequences.txt
index b3c64f18c24..273eeeabad8 100644
--- a/Master/tlpkg/tlperl/lib/unicore/NamedSequences.txt
+++ b/Master/tlpkg/tlperl/lib/unicore/NamedSequences.txt
@@ -1,10 +1,10 @@
-# NamedSequences-13.0.0.txt
-# Date: 2020-01-22, 19:12:00 GMT [KW, LI]
-# © 2020 Unicode®, Inc.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
+# NamedSequences-15.0.0.txt
+# Date: 2021-12-07, 17:18:00 GMT [KW]
+# © 2021 Unicode®, Inc.
+# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
-# For documentation, see http://www.unicode.org/reports/tr44/
+# For documentation, see https://www.unicode.org/reports/tr44/
#
# Unicode Named Character Sequences
#
@@ -28,7 +28,7 @@
# <1000, 1001, 1002>
#
# For more information, see UAX #34: Unicode Named Character
-# Sequences, at http://www.unicode.org/unicode/reports/tr34/
+# Sequences, at https://www.unicode.org/reports/tr34/
#
# Note: The order of entries in this file is not significant.
# However, entries are generally in script order corresponding
@@ -168,6 +168,35 @@ ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH E;0626 06D0
ARABIC SEQUENCE YEH WITH HAMZA ABOVE WITH AE;0626 06D5
ARABIC SEQUENCE NOON WITH KEHEH;0646 06A9
+# Entries that correspond to Indic characters with nuktas
+# that are also listed in CompositionExclusions.txt.
+# These characters decompose for normalized text, even
+# in NFC. Having named sequences for these helps in
+# certain specifications, including Label Generation Rules (LGR)
+# for Internationalized Domain Names (IDN).
+#
+# Provisional 2020-01-16, Approved 2021-07-27
+
+DEVANAGARI SEQUENCE FOR LETTER QA; 0915 093C
+DEVANAGARI SEQUENCE FOR LETTER KHHA; 0916 093C
+DEVANAGARI SEQUENCE FOR LETTER GHHA; 0917 093C
+DEVANAGARI SEQUENCE FOR LETTER ZA; 091C 093C
+DEVANAGARI SEQUENCE FOR LETTER DDDHA; 0921 093C
+DEVANAGARI SEQUENCE FOR LETTER RHA; 0922 093C
+DEVANAGARI SEQUENCE FOR LETTER FA; 092B 093C
+DEVANAGARI SEQUENCE FOR LETTER YYA; 092F 093C
+BENGALI SEQUENCE FOR LETTER RRA; 09A1 09BC
+BENGALI SEQUENCE FOR LETTER RHA; 09A2 09BC
+BENGALI SEQUENCE FOR LETTER YYA; 09AF 09BC
+GURMUKHI SEQUENCE FOR LETTER LLA; 0A32 0A3C
+GURMUKHI SEQUENCE FOR LETTER SHA; 0A38 0A3C
+GURMUKHI SEQUENCE FOR LETTER KHHA; 0A16 0A3C
+GURMUKHI SEQUENCE FOR LETTER GHHA; 0A17 0A3C
+GURMUKHI SEQUENCE FOR LETTER ZA; 0A1C 0A3C
+GURMUKHI SEQUENCE FOR LETTER FA; 0A2B 0A3C
+ORIYA SEQUENCE FOR LETTER RRA; 0B21 0B3C
+ORIYA SEQUENCE FOR LETTER RHA; 0B22 0B3C
+
# Entry for a Bangla entity.
# Provisional 2009-08-10, Approved 2010-05-14
#
@@ -180,7 +209,7 @@ BENGALI LETTER KHINYA;0995 09CD 09B7
#
# A visual display of the Tamil named character sequences is available
# in the documentation for the Unicode Standard. See Section 12.6, Tamil in
-# http://www.unicode.org/versions/latest/
+# https://www.unicode.org/versions/latest/
TAMIL CONSONANT K; 0B95 0BCD
TAMIL CONSONANT NG; 0B99 0BCD
diff --git a/Master/tlpkg/tlperl/lib/unicore/SpecialCasing.txt b/Master/tlpkg/tlperl/lib/unicore/SpecialCasing.txt
index 2a1a5a1d6b1..08d04fa9421 100644
--- a/Master/tlpkg/tlperl/lib/unicore/SpecialCasing.txt
+++ b/Master/tlpkg/tlperl/lib/unicore/SpecialCasing.txt
@@ -1,11 +1,11 @@
-# SpecialCasing-13.0.0.txt
-# Date: 2019-09-08, 23:31:24 GMT
-# © 2019 Unicode®, Inc.
+# SpecialCasing-15.0.0.txt
+# Date: 2022-02-02, 23:35:52 GMT
+# © 2022 Unicode®, Inc.
# Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
-# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For terms of use, see https://www.unicode.org/terms_of_use.html
#
# Unicode Character Database
-# For documentation, see http://www.unicode.org/reports/tr44/
+# For documentation, see https://www.unicode.org/reports/tr44/
#
# Special Casing
#
diff --git a/Master/tlpkg/tlperl/lib/unicore/TestNorm.pl b/Master/tlpkg/tlperl/lib/unicore/TestNorm.pl
new file mode 100755
index 00000000000..d881addc49d
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/unicore/TestNorm.pl
@@ -0,0 +1,19134 @@
+use utf8;
+use Test::More;
+
+sub ord_string { # Convert packed ords to printable string
+ use charnames ();
+ return "'" . join("", map { '\N{' . charnames::viacode($_) . '}' }
+ unpack "U*", shift) . "'";
+ #return "'" . join(" ", map { sprintf "%04X", $_ } unpack "U*", shift) . "'";
+}
+
+sub Test_N {
+ my ($source, $nfc, $nfd, $nfkc, $nfkd) = @_;
+ my $display_source = ord_string($source);
+ my $display_nfc = ord_string($nfc);
+ my $display_nfd = ord_string($nfd);
+ my $display_nfkc = ord_string($nfkc);
+ my $display_nfkd = ord_string($nfkd);
+
+ use Unicode::Normalize;
+ # NFC
+ # nfc == toNFC(source) == toNFC(nfc) == toNFC(nfd)
+ # nfkc == toNFC(nfkc) == toNFC(nfkd)
+ #
+ # NFD
+ # nfd == toNFD(source) == toNFD(nfc) == toNFD(nfd)
+ # nfkd == toNFD(nfkc) == toNFD(nfkd)
+ #
+ # NFKC
+ # nfkc == toNFKC(source) == toNFKC(nfc) == toNFKC(nfd) ==
+ # toNFKC(nfkc) == toNFKC(nfkd)
+ #
+ # NFKD
+ # nfkd == toNFKD(source) == toNFKD(nfc) == toNFKD(nfd) ==
+ # toNFKD(nfkc) == toNFKD(nfkd)
+
+ is(NFC($source), $nfc, "NFC($display_source) eq $display_nfc");
+ is(NFC($nfc), $nfc, "NFC($display_nfc) eq $display_nfc");
+ is(NFC($nfd), $nfc, "NFC($display_nfd) eq $display_nfc");
+ is(NFC($nfkc), $nfkc, "NFC($display_nfkc) eq $display_nfkc");
+ is(NFC($nfkd), $nfkc, "NFC($display_nfkd) eq $display_nfkc");
+
+ is(NFD($source), $nfd, "NFD($display_source) eq $display_nfd");
+ is(NFD($nfc), $nfd, "NFD($display_nfc) eq $display_nfd");
+ is(NFD($nfd), $nfd, "NFD($display_nfd) eq $display_nfd");
+ is(NFD($nfkc), $nfkd, "NFD($display_nfkc) eq $display_nfkd");
+ is(NFD($nfkd), $nfkd, "NFD($display_nfkd) eq $display_nfkd");
+
+ is(NFKC($source), $nfkc, "NFKC($display_source) eq $display_nfkc");
+ is(NFKC($nfc), $nfkc, "NFKC($display_nfc) eq $display_nfkc");
+ is(NFKC($nfd), $nfkc, "NFKC($display_nfd) eq $display_nfkc");
+ is(NFKC($nfkc), $nfkc, "NFKC($display_nfkc) eq $display_nfkc");
+ is(NFKC($nfkd), $nfkc, "NFKC($display_nfkd) eq $display_nfkc");
+
+ is(NFKD($source), $nfkd, "NFKD($display_source) eq $display_nfkd");
+ is(NFKD($nfc), $nfkd, "NFKD($display_nfc) eq $display_nfkd");
+ is(NFKD($nfd), $nfkd, "NFKD($display_nfd) eq $display_nfkd");
+ is(NFKD($nfkc), $nfkd, "NFKD($display_nfkc) eq $display_nfkd");
+ is(NFKD($nfkd), $nfkd, "NFKD($display_nfkd) eq $display_nfkd");
+}
+Test_N(qḊ, qḊ, qḊ, qḊ, qḊ);
+Test_N(qḌ, qḌ, qḌ, qḌ, qḌ);
+Test_N(qḌ̇, qḌ̇, qḌ̇, qḌ̇, qḌ̇);
+Test_N(qḌ̇, qḌ̇, qḌ̇, qḌ̇, qḌ̇);
+Test_N(qḌ̇, qḌ̇, qḌ̇, qḌ̇, qḌ̇);
+Test_N(qḌ̇, qḌ̇, qḌ̇, qḌ̇, qḌ̇);
+Test_N(qḊ̛, qḊ̛, qḊ̛, qḊ̛, qḊ̛);
+Test_N(qḌ̛, qḌ̛, qḌ̛, qḌ̛, qḌ̛);
+Test_N(qḌ̛̇, qḌ̛̇, qḌ̛̇, qḌ̛̇, qḌ̛̇);
+Test_N(qḌ̛̇, qḌ̛̇, qḌ̛̇, qḌ̛̇, qḌ̛̇);
+Test_N(qḌ̛̇, qḌ̛̇, qḌ̛̇, qḌ̛̇, qḌ̛̇);
+Test_N(qḌ̛̇, qḌ̛̇, qḌ̛̇, qḌ̛̇, qḌ̛̇);
+Test_N(qÈ, qÈ, qÈ, qÈ, qÈ);
+Test_N(qĒ, qĒ, qĒ, qĒ, qĒ);
+Test_N(qÈ, qÈ, qÈ, qÈ, qÈ);
+Test_N(qĒ, qĒ, qĒ, qĒ, qĒ);
+Test_N(qḔ, qḔ, qḔ, qḔ, qḔ);
+Test_N(qḔ, qḔ, qḔ, qḔ, qḔ);
+Test_N(qḔ̄, qḔ̄, qḔ̄, qḔ̄, qḔ̄);
+Test_N(qḔ, qḔ, qḔ, qḔ, qḔ);
+Test_N(qÈ̄, qÈ̄, qÈ̄, qÈ̄, qÈ̄);
+Test_N(qֱָֹ֑׃ְ֬֟, qֱָֹ֑׃ְ֬֟, qֱָֹ֑׃ְ֬֟, qֱָֹ֑׃ְ֬֟, qֱָֹ֑׃ְ֬֟);
+Test_N(qְַּ֥֒׀֭ׄ, qְַּ֥֒׀֭ׄ, qְַּ֥֒׀֭ׄ, qְַּ֥֒׀֭ׄ, qְַּ֥֒׀֭ׄ);
+Test_N(qᄀ각, qᄀ각, qᄀ각, qᄀ각, qᄀ각);
+Test_N(qᄀ각ᆨ, qᄀ각ᆨ, qᄀ각ᆨ, qᄀ각ᆨ, qᄀ각ᆨ);
+Test_N(q , q , q , q , q );
+Test_N(q¨, q¨, q¨, q ̈, q ̈);
+Test_N(qª, qª, qª, qa, qa);
+Test_N(q¯, q¯, q¯, q ̄, q ̄);
+Test_N(q², q², q², q2, q2);
+Test_N(q³, q³, q³, q3, q3);
+Test_N(q´, q´, q´, q ́, q ́);
+Test_N(qµ, qµ, qµ, qμ, qμ);
+Test_N(q¸, q¸, q¸, q ̧, q ̧);
+Test_N(q¹, q¹, q¹, q1, q1);
+Test_N(qº, qº, qº, qo, qo);
+Test_N(q¼, q¼, q¼, q1⁄4, q1⁄4);
+Test_N(q½, q½, q½, q1⁄2, q1⁄2);
+Test_N(q¾, q¾, q¾, q3⁄4, q3⁄4);
+Test_N(qÀ, qÀ, qÀ, qÀ, qÀ);
+Test_N(qÁ, qÁ, qÁ, qÁ, qÁ);
+Test_N(qÂ, qÂ, qÂ, qÂ, qÂ);
+Test_N(qÃ, qÃ, qÃ, qÃ, qÃ);
+Test_N(qÄ, qÄ, qÄ, qÄ, qÄ);
+Test_N(qÅ, qÅ, qÅ, qÅ, qÅ);
+Test_N(qÇ, qÇ, qÇ, qÇ, qÇ);
+Test_N(qÈ, qÈ, qÈ, qÈ, qÈ);
+Test_N(qÉ, qÉ, qÉ, qÉ, qÉ);
+Test_N(qÊ, qÊ, qÊ, qÊ, qÊ);
+Test_N(qË, qË, qË, qË, qË);
+Test_N(qÌ, qÌ, qÌ, qÌ, qÌ);
+Test_N(qÍ, qÍ, qÍ, qÍ, qÍ);
+Test_N(qÎ, qÎ, qÎ, qÎ, qÎ);
+Test_N(qÏ, qÏ, qÏ, qÏ, qÏ);
+Test_N(qÑ, qÑ, qÑ, qÑ, qÑ);
+Test_N(qÒ, qÒ, qÒ, qÒ, qÒ);
+Test_N(qÓ, qÓ, qÓ, qÓ, qÓ);
+Test_N(qÔ, qÔ, qÔ, qÔ, qÔ);
+Test_N(qÕ, qÕ, qÕ, qÕ, qÕ);
+Test_N(qÖ, qÖ, qÖ, qÖ, qÖ);
+Test_N(qÙ, qÙ, qÙ, qÙ, qÙ);
+Test_N(qÚ, qÚ, qÚ, qÚ, qÚ);
+Test_N(qÛ, qÛ, qÛ, qÛ, qÛ);
+Test_N(qÜ, qÜ, qÜ, qÜ, qÜ);
+Test_N(qÝ, qÝ, qÝ, qÝ, qÝ);
+Test_N(qà, qà, qà, qà, qà);
+Test_N(qá, qá, qá, qá, qá);
+Test_N(qâ, qâ, qâ, qâ, qâ);
+Test_N(qã, qã, qã, qã, qã);
+Test_N(qä, qä, qä, qä, qä);
+Test_N(qå, qå, qå, qå, qå);
+Test_N(qç, qç, qç, qç, qç);
+Test_N(qè, qè, qè, qè, qè);
+Test_N(qé, qé, qé, qé, qé);
+Test_N(qê, qê, qê, qê, qê);
+Test_N(që, që, që, që, që);
+Test_N(qì, qì, qì, qì, qì);
+Test_N(qí, qí, qí, qí, qí);
+Test_N(qî, qî, qî, qî, qî);
+Test_N(qï, qï, qï, qï, qï);
+Test_N(qñ, qñ, qñ, qñ, qñ);
+Test_N(qò, qò, qò, qò, qò);
+Test_N(qó, qó, qó, qó, qó);
+Test_N(qô, qô, qô, qô, qô);
+Test_N(qõ, qõ, qõ, qõ, qõ);
+Test_N(qö, qö, qö, qö, qö);
+Test_N(qù, qù, qù, qù, qù);
+Test_N(qú, qú, qú, qú, qú);
+Test_N(qû, qû, qû, qû, qû);
+Test_N(qü, qü, qü, qü, qü);
+Test_N(qý, qý, qý, qý, qý);
+Test_N(qÿ, qÿ, qÿ, qÿ, qÿ);
+Test_N(qĀ, qĀ, qĀ, qĀ, qĀ);
+Test_N(qā, qā, qā, qā, qā);
+Test_N(qĂ, qĂ, qĂ, qĂ, qĂ);
+Test_N(qă, qă, qă, qă, qă);
+Test_N(qĄ, qĄ, qĄ, qĄ, qĄ);
+Test_N(qą, qą, qą, qą, qą);
+Test_N(qĆ, qĆ, qĆ, qĆ, qĆ);
+Test_N(qć, qć, qć, qć, qć);
+Test_N(qĈ, qĈ, qĈ, qĈ, qĈ);
+Test_N(qĉ, qĉ, qĉ, qĉ, qĉ);
+Test_N(qĊ, qĊ, qĊ, qĊ, qĊ);
+Test_N(qċ, qċ, qċ, qċ, qċ);
+Test_N(qČ, qČ, qČ, qČ, qČ);
+Test_N(qč, qč, qč, qč, qč);
+Test_N(qĎ, qĎ, qĎ, qĎ, qĎ);
+Test_N(qď, qď, qď, qď, qď);
+Test_N(qĒ, qĒ, qĒ, qĒ, qĒ);
+Test_N(qē, qē, qē, qē, qē);
+Test_N(qĔ, qĔ, qĔ, qĔ, qĔ);
+Test_N(qĕ, qĕ, qĕ, qĕ, qĕ);
+Test_N(qĖ, qĖ, qĖ, qĖ, qĖ);
+Test_N(qė, qė, qė, qė, qė);
+Test_N(qĘ, qĘ, qĘ, qĘ, qĘ);
+Test_N(qę, qę, qę, qę, qę);
+Test_N(qĚ, qĚ, qĚ, qĚ, qĚ);
+Test_N(qě, qě, qě, qě, qě);
+Test_N(qĜ, qĜ, qĜ, qĜ, qĜ);
+Test_N(qĝ, qĝ, qĝ, qĝ, qĝ);
+Test_N(qĞ, qĞ, qĞ, qĞ, qĞ);
+Test_N(qğ, qğ, qğ, qğ, qğ);
+Test_N(qĠ, qĠ, qĠ, qĠ, qĠ);
+Test_N(qġ, qġ, qġ, qġ, qġ);
+Test_N(qĢ, qĢ, qĢ, qĢ, qĢ);
+Test_N(qģ, qģ, qģ, qģ, qģ);
+Test_N(qĤ, qĤ, qĤ, qĤ, qĤ);
+Test_N(qĥ, qĥ, qĥ, qĥ, qĥ);
+Test_N(qĨ, qĨ, qĨ, qĨ, qĨ);
+Test_N(qĩ, qĩ, qĩ, qĩ, qĩ);
+Test_N(qĪ, qĪ, qĪ, qĪ, qĪ);
+Test_N(qī, qī, qī, qī, qī);
+Test_N(qĬ, qĬ, qĬ, qĬ, qĬ);
+Test_N(qĭ, qĭ, qĭ, qĭ, qĭ);
+Test_N(qĮ, qĮ, qĮ, qĮ, qĮ);
+Test_N(qį, qį, qį, qį, qį);
+Test_N(qİ, qİ, qİ, qİ, qİ);
+Test_N(qIJ, qIJ, qIJ, qIJ, qIJ);
+Test_N(qij, qij, qij, qij, qij);
+Test_N(qĴ, qĴ, qĴ, qĴ, qĴ);
+Test_N(qĵ, qĵ, qĵ, qĵ, qĵ);
+Test_N(qĶ, qĶ, qĶ, qĶ, qĶ);
+Test_N(qķ, qķ, qķ, qķ, qķ);
+Test_N(qĹ, qĹ, qĹ, qĹ, qĹ);
+Test_N(qĺ, qĺ, qĺ, qĺ, qĺ);
+Test_N(qĻ, qĻ, qĻ, qĻ, qĻ);
+Test_N(qļ, qļ, qļ, qļ, qļ);
+Test_N(qĽ, qĽ, qĽ, qĽ, qĽ);
+Test_N(qľ, qľ, qľ, qľ, qľ);
+Test_N(qĿ, qĿ, qĿ, qL·, qL·);
+Test_N(qŀ, qŀ, qŀ, ql·, ql·);
+Test_N(qŃ, qŃ, qŃ, qŃ, qŃ);
+Test_N(qń, qń, qń, qń, qń);
+Test_N(qŅ, qŅ, qŅ, qŅ, qŅ);
+Test_N(qņ, qņ, qņ, qņ, qņ);
+Test_N(qŇ, qŇ, qŇ, qŇ, qŇ);
+Test_N(qň, qň, qň, qň, qň);
+Test_N(qʼn, qʼn, qʼn, qʼn, qʼn);
+Test_N(qŌ, qŌ, qŌ, qŌ, qŌ);
+Test_N(qō, qō, qō, qō, qō);
+Test_N(qŎ, qŎ, qŎ, qŎ, qŎ);
+Test_N(qŏ, qŏ, qŏ, qŏ, qŏ);
+Test_N(qŐ, qŐ, qŐ, qŐ, qŐ);
+Test_N(qő, qő, qő, qő, qő);
+Test_N(qŔ, qŔ, qŔ, qŔ, qŔ);
+Test_N(qŕ, qŕ, qŕ, qŕ, qŕ);
+Test_N(qŖ, qŖ, qŖ, qŖ, qŖ);
+Test_N(qŗ, qŗ, qŗ, qŗ, qŗ);
+Test_N(qŘ, qŘ, qŘ, qŘ, qŘ);
+Test_N(qř, qř, qř, qř, qř);
+Test_N(qŚ, qŚ, qŚ, qŚ, qŚ);
+Test_N(qś, qś, qś, qś, qś);
+Test_N(qŜ, qŜ, qŜ, qŜ, qŜ);
+Test_N(qŝ, qŝ, qŝ, qŝ, qŝ);
+Test_N(qŞ, qŞ, qŞ, qŞ, qŞ);
+Test_N(qş, qş, qş, qş, qş);
+Test_N(qŠ, qŠ, qŠ, qŠ, qŠ);
+Test_N(qš, qš, qš, qš, qš);
+Test_N(qŢ, qŢ, qŢ, qŢ, qŢ);
+Test_N(qţ, qţ, qţ, qţ, qţ);
+Test_N(qŤ, qŤ, qŤ, qŤ, qŤ);
+Test_N(qť, qť, qť, qť, qť);
+Test_N(qŨ, qŨ, qŨ, qŨ, qŨ);
+Test_N(qũ, qũ, qũ, qũ, qũ);
+Test_N(qŪ, qŪ, qŪ, qŪ, qŪ);
+Test_N(qū, qū, qū, qū, qū);
+Test_N(qŬ, qŬ, qŬ, qŬ, qŬ);
+Test_N(qŭ, qŭ, qŭ, qŭ, qŭ);
+Test_N(qŮ, qŮ, qŮ, qŮ, qŮ);
+Test_N(qů, qů, qů, qů, qů);
+Test_N(qŰ, qŰ, qŰ, qŰ, qŰ);
+Test_N(qű, qű, qű, qű, qű);
+Test_N(qŲ, qŲ, qŲ, qŲ, qŲ);
+Test_N(qų, qų, qų, qų, qų);
+Test_N(qŴ, qŴ, qŴ, qŴ, qŴ);
+Test_N(qŵ, qŵ, qŵ, qŵ, qŵ);
+Test_N(qŶ, qŶ, qŶ, qŶ, qŶ);
+Test_N(qŷ, qŷ, qŷ, qŷ, qŷ);
+Test_N(qŸ, qŸ, qŸ, qŸ, qŸ);
+Test_N(qŹ, qŹ, qŹ, qŹ, qŹ);
+Test_N(qź, qź, qź, qź, qź);
+Test_N(qŻ, qŻ, qŻ, qŻ, qŻ);
+Test_N(qż, qż, qż, qż, qż);
+Test_N(qŽ, qŽ, qŽ, qŽ, qŽ);
+Test_N(qž, qž, qž, qž, qž);
+Test_N(qſ, qſ, qſ, qs, qs);
+Test_N(qƠ, qƠ, qƠ, qƠ, qƠ);
+Test_N(qơ, qơ, qơ, qơ, qơ);
+Test_N(qƯ, qƯ, qƯ, qƯ, qƯ);
+Test_N(qư, qư, qư, qư, qư);
+Test_N(qDŽ, qDŽ, qDŽ, qDŽ, qDŽ);
+Test_N(qDž, qDž, qDž, qDž, qDž);
+Test_N(qdž, qdž, qdž, qdž, qdž);
+Test_N(qLJ, qLJ, qLJ, qLJ, qLJ);
+Test_N(qLj, qLj, qLj, qLj, qLj);
+Test_N(qlj, qlj, qlj, qlj, qlj);
+Test_N(qNJ, qNJ, qNJ, qNJ, qNJ);
+Test_N(qNj, qNj, qNj, qNj, qNj);
+Test_N(qnj, qnj, qnj, qnj, qnj);
+Test_N(qǍ, qǍ, qǍ, qǍ, qǍ);
+Test_N(qǎ, qǎ, qǎ, qǎ, qǎ);
+Test_N(qǏ, qǏ, qǏ, qǏ, qǏ);
+Test_N(qǐ, qǐ, qǐ, qǐ, qǐ);
+Test_N(qǑ, qǑ, qǑ, qǑ, qǑ);
+Test_N(qǒ, qǒ, qǒ, qǒ, qǒ);
+Test_N(qǓ, qǓ, qǓ, qǓ, qǓ);
+Test_N(qǔ, qǔ, qǔ, qǔ, qǔ);
+Test_N(qǕ, qǕ, qǕ, qǕ, qǕ);
+Test_N(qǖ, qǖ, qǖ, qǖ, qǖ);
+Test_N(qǗ, qǗ, qǗ, qǗ, qǗ);
+Test_N(qǘ, qǘ, qǘ, qǘ, qǘ);
+Test_N(qǙ, qǙ, qǙ, qǙ, qǙ);
+Test_N(qǚ, qǚ, qǚ, qǚ, qǚ);
+Test_N(qǛ, qǛ, qǛ, qǛ, qǛ);
+Test_N(qǜ, qǜ, qǜ, qǜ, qǜ);
+Test_N(qǞ, qǞ, qǞ, qǞ, qǞ);
+Test_N(qǟ, qǟ, qǟ, qǟ, qǟ);
+Test_N(qǠ, qǠ, qǠ, qǠ, qǠ);
+Test_N(qǡ, qǡ, qǡ, qǡ, qǡ);
+Test_N(qǢ, qǢ, qǢ, qǢ, qǢ);
+Test_N(qǣ, qǣ, qǣ, qǣ, qǣ);
+Test_N(qǦ, qǦ, qǦ, qǦ, qǦ);
+Test_N(qǧ, qǧ, qǧ, qǧ, qǧ);
+Test_N(qǨ, qǨ, qǨ, qǨ, qǨ);
+Test_N(qǩ, qǩ, qǩ, qǩ, qǩ);
+Test_N(qǪ, qǪ, qǪ, qǪ, qǪ);
+Test_N(qǫ, qǫ, qǫ, qǫ, qǫ);
+Test_N(qǬ, qǬ, qǬ, qǬ, qǬ);
+Test_N(qǭ, qǭ, qǭ, qǭ, qǭ);
+Test_N(qǮ, qǮ, qǮ, qǮ, qǮ);
+Test_N(qǯ, qǯ, qǯ, qǯ, qǯ);
+Test_N(qǰ, qǰ, qǰ, qǰ, qǰ);
+Test_N(qDZ, qDZ, qDZ, qDZ, qDZ);
+Test_N(qDz, qDz, qDz, qDz, qDz);
+Test_N(qdz, qdz, qdz, qdz, qdz);
+Test_N(qǴ, qǴ, qǴ, qǴ, qǴ);
+Test_N(qǵ, qǵ, qǵ, qǵ, qǵ);
+Test_N(qǸ, qǸ, qǸ, qǸ, qǸ);
+Test_N(qǹ, qǹ, qǹ, qǹ, qǹ);
+Test_N(qǺ, qǺ, qǺ, qǺ, qǺ);
+Test_N(qǻ, qǻ, qǻ, qǻ, qǻ);
+Test_N(qǼ, qǼ, qǼ, qǼ, qǼ);
+Test_N(qǽ, qǽ, qǽ, qǽ, qǽ);
+Test_N(qǾ, qǾ, qǾ, qǾ, qǾ);
+Test_N(qǿ, qǿ, qǿ, qǿ, qǿ);
+Test_N(qȀ, qȀ, qȀ, qȀ, qȀ);
+Test_N(qȁ, qȁ, qȁ, qȁ, qȁ);
+Test_N(qȂ, qȂ, qȂ, qȂ, qȂ);
+Test_N(qȃ, qȃ, qȃ, qȃ, qȃ);
+Test_N(qȄ, qȄ, qȄ, qȄ, qȄ);
+Test_N(qȅ, qȅ, qȅ, qȅ, qȅ);
+Test_N(qȆ, qȆ, qȆ, qȆ, qȆ);
+Test_N(qȇ, qȇ, qȇ, qȇ, qȇ);
+Test_N(qȈ, qȈ, qȈ, qȈ, qȈ);
+Test_N(qȉ, qȉ, qȉ, qȉ, qȉ);
+Test_N(qȊ, qȊ, qȊ, qȊ, qȊ);
+Test_N(qȋ, qȋ, qȋ, qȋ, qȋ);
+Test_N(qȌ, qȌ, qȌ, qȌ, qȌ);
+Test_N(qȍ, qȍ, qȍ, qȍ, qȍ);
+Test_N(qȎ, qȎ, qȎ, qȎ, qȎ);
+Test_N(qȏ, qȏ, qȏ, qȏ, qȏ);
+Test_N(qȐ, qȐ, qȐ, qȐ, qȐ);
+Test_N(qȑ, qȑ, qȑ, qȑ, qȑ);
+Test_N(qȒ, qȒ, qȒ, qȒ, qȒ);
+Test_N(qȓ, qȓ, qȓ, qȓ, qȓ);
+Test_N(qȔ, qȔ, qȔ, qȔ, qȔ);
+Test_N(qȕ, qȕ, qȕ, qȕ, qȕ);
+Test_N(qȖ, qȖ, qȖ, qȖ, qȖ);
+Test_N(qȗ, qȗ, qȗ, qȗ, qȗ);
+Test_N(qȘ, qȘ, qȘ, qȘ, qȘ);
+Test_N(qș, qș, qș, qș, qș);
+Test_N(qȚ, qȚ, qȚ, qȚ, qȚ);
+Test_N(qț, qț, qț, qț, qț);
+Test_N(qȞ, qȞ, qȞ, qȞ, qȞ);
+Test_N(qȟ, qȟ, qȟ, qȟ, qȟ);
+Test_N(qȦ, qȦ, qȦ, qȦ, qȦ);
+Test_N(qȧ, qȧ, qȧ, qȧ, qȧ);
+Test_N(qȨ, qȨ, qȨ, qȨ, qȨ);
+Test_N(qȩ, qȩ, qȩ, qȩ, qȩ);
+Test_N(qȪ, qȪ, qȪ, qȪ, qȪ);
+Test_N(qȫ, qȫ, qȫ, qȫ, qȫ);
+Test_N(qȬ, qȬ, qȬ, qȬ, qȬ);
+Test_N(qȭ, qȭ, qȭ, qȭ, qȭ);
+Test_N(qȮ, qȮ, qȮ, qȮ, qȮ);
+Test_N(qȯ, qȯ, qȯ, qȯ, qȯ);
+Test_N(qȰ, qȰ, qȰ, qȰ, qȰ);
+Test_N(qȱ, qȱ, qȱ, qȱ, qȱ);
+Test_N(qȲ, qȲ, qȲ, qȲ, qȲ);
+Test_N(qȳ, qȳ, qȳ, qȳ, qȳ);
+Test_N(qʰ, qʰ, qʰ, qh, qh);
+Test_N(qʱ, qʱ, qʱ, qɦ, qɦ);
+Test_N(qʲ, qʲ, qʲ, qj, qj);
+Test_N(qʳ, qʳ, qʳ, qr, qr);
+Test_N(qʴ, qʴ, qʴ, qɹ, qɹ);
+Test_N(qʵ, qʵ, qʵ, qɻ, qɻ);
+Test_N(qʶ, qʶ, qʶ, qʁ, qʁ);
+Test_N(qʷ, qʷ, qʷ, qw, qw);
+Test_N(qʸ, qʸ, qʸ, qy, qy);
+Test_N(q˘, q˘, q˘, q ̆, q ̆);
+Test_N(q˙, q˙, q˙, q ̇, q ̇);
+Test_N(q˚, q˚, q˚, q ̊, q ̊);
+Test_N(q˛, q˛, q˛, q ̨, q ̨);
+Test_N(q˜, q˜, q˜, q ̃, q ̃);
+Test_N(q˝, q˝, q˝, q ̋, q ̋);
+Test_N(qˠ, qˠ, qˠ, qɣ, qɣ);
+Test_N(qˡ, qˡ, qˡ, ql, ql);
+Test_N(qˢ, qˢ, qˢ, qs, qs);
+Test_N(qˣ, qˣ, qˣ, qx, qx);
+Test_N(qˤ, qˤ, qˤ, qʕ, qʕ);
+Test_N(q̀, q̀, q̀, q̀, q̀);
+Test_N(q́, q́, q́, q́, q́);
+Test_N(q̓, q̓, q̓, q̓, q̓);
+Test_N(q̈́, q̈́, q̈́, q̈́, q̈́);
+Test_N(qʹ, qʹ, qʹ, qʹ, qʹ);
+Test_N(qͺ, qͺ, qͺ, q ͅ, q ͅ);
+Test_N(q;, q;, q;, q;, q;);
+Test_N(q΄, q΄, q΄, q ́, q ́);
+Test_N(q΅, q΅, q΅, q ̈́, q ̈́);
+Test_N(qΆ, qΆ, qΆ, qΆ, qΆ);
+Test_N(q·, q·, q·, q·, q·);
+Test_N(qΈ, qΈ, qΈ, qΈ, qΈ);
+Test_N(qΉ, qΉ, qΉ, qΉ, qΉ);
+Test_N(qΊ, qΊ, qΊ, qΊ, qΊ);
+Test_N(qΌ, qΌ, qΌ, qΌ, qΌ);
+Test_N(qΎ, qΎ, qΎ, qΎ, qΎ);
+Test_N(qΏ, qΏ, qΏ, qΏ, qΏ);
+Test_N(qΐ, qΐ, qΐ, qΐ, qΐ);
+Test_N(qΪ, qΪ, qΪ, qΪ, qΪ);
+Test_N(qΫ, qΫ, qΫ, qΫ, qΫ);
+Test_N(qά, qά, qά, qά, qά);
+Test_N(qέ, qέ, qέ, qέ, qέ);
+Test_N(qή, qή, qή, qή, qή);
+Test_N(qί, qί, qί, qί, qί);
+Test_N(qΰ, qΰ, qΰ, qΰ, qΰ);
+Test_N(qϊ, qϊ, qϊ, qϊ, qϊ);
+Test_N(qϋ, qϋ, qϋ, qϋ, qϋ);
+Test_N(qό, qό, qό, qό, qό);
+Test_N(qύ, qύ, qύ, qύ, qύ);
+Test_N(qώ, qώ, qώ, qώ, qώ);
+Test_N(qϐ, qϐ, qϐ, qβ, qβ);
+Test_N(qϑ, qϑ, qϑ, qθ, qθ);
+Test_N(qϒ, qϒ, qϒ, qΥ, qΥ);
+Test_N(qϓ, qϓ, qϓ, qΎ, qΎ);
+Test_N(qϔ, qϔ, qϔ, qΫ, qΫ);
+Test_N(qϕ, qϕ, qϕ, qφ, qφ);
+Test_N(qϖ, qϖ, qϖ, qπ, qπ);
+Test_N(qϰ, qϰ, qϰ, qκ, qκ);
+Test_N(qϱ, qϱ, qϱ, qρ, qρ);
+Test_N(qϲ, qϲ, qϲ, qς, qς);
+Test_N(qϴ, qϴ, qϴ, qΘ, qΘ);
+Test_N(qϵ, qϵ, qϵ, qε, qε);
+Test_N(qϹ, qϹ, qϹ, qΣ, qΣ);
+Test_N(qЀ, qЀ, qЀ, qЀ, qЀ);
+Test_N(qЁ, qЁ, qЁ, qЁ, qЁ);
+Test_N(qЃ, qЃ, qЃ, qЃ, qЃ);
+Test_N(qЇ, qЇ, qЇ, qЇ, qЇ);
+Test_N(qЌ, qЌ, qЌ, qЌ, qЌ);
+Test_N(qЍ, qЍ, qЍ, qЍ, qЍ);
+Test_N(qЎ, qЎ, qЎ, qЎ, qЎ);
+Test_N(qЙ, qЙ, qЙ, qЙ, qЙ);
+Test_N(qй, qй, qй, qй, qй);
+Test_N(qѐ, qѐ, qѐ, qѐ, qѐ);
+Test_N(qё, qё, qё, qё, qё);
+Test_N(qѓ, qѓ, qѓ, qѓ, qѓ);
+Test_N(qї, qї, qї, qї, qї);
+Test_N(qќ, qќ, qќ, qќ, qќ);
+Test_N(qѝ, qѝ, qѝ, qѝ, qѝ);
+Test_N(qў, qў, qў, qў, qў);
+Test_N(qѶ, qѶ, qѶ, qѶ, qѶ);
+Test_N(qѷ, qѷ, qѷ, qѷ, qѷ);
+Test_N(qӁ, qӁ, qӁ, qӁ, qӁ);
+Test_N(qӂ, qӂ, qӂ, qӂ, qӂ);
+Test_N(qӐ, qӐ, qӐ, qӐ, qӐ);
+Test_N(qӑ, qӑ, qӑ, qӑ, qӑ);
+Test_N(qӒ, qӒ, qӒ, qӒ, qӒ);
+Test_N(qӓ, qӓ, qӓ, qӓ, qӓ);
+Test_N(qӖ, qӖ, qӖ, qӖ, qӖ);
+Test_N(qӗ, qӗ, qӗ, qӗ, qӗ);
+Test_N(qӚ, qӚ, qӚ, qӚ, qӚ);
+Test_N(qӛ, qӛ, qӛ, qӛ, qӛ);
+Test_N(qӜ, qӜ, qӜ, qӜ, qӜ);
+Test_N(qӝ, qӝ, qӝ, qӝ, qӝ);
+Test_N(qӞ, qӞ, qӞ, qӞ, qӞ);
+Test_N(qӟ, qӟ, qӟ, qӟ, qӟ);
+Test_N(qӢ, qӢ, qӢ, qӢ, qӢ);
+Test_N(qӣ, qӣ, qӣ, qӣ, qӣ);
+Test_N(qӤ, qӤ, qӤ, qӤ, qӤ);
+Test_N(qӥ, qӥ, qӥ, qӥ, qӥ);
+Test_N(qӦ, qӦ, qӦ, qӦ, qӦ);
+Test_N(qӧ, qӧ, qӧ, qӧ, qӧ);
+Test_N(qӪ, qӪ, qӪ, qӪ, qӪ);
+Test_N(qӫ, qӫ, qӫ, qӫ, qӫ);
+Test_N(qӬ, qӬ, qӬ, qӬ, qӬ);
+Test_N(qӭ, qӭ, qӭ, qӭ, qӭ);
+Test_N(qӮ, qӮ, qӮ, qӮ, qӮ);
+Test_N(qӯ, qӯ, qӯ, qӯ, qӯ);
+Test_N(qӰ, qӰ, qӰ, qӰ, qӰ);
+Test_N(qӱ, qӱ, qӱ, qӱ, qӱ);
+Test_N(qӲ, qӲ, qӲ, qӲ, qӲ);
+Test_N(qӳ, qӳ, qӳ, qӳ, qӳ);
+Test_N(qӴ, qӴ, qӴ, qӴ, qӴ);
+Test_N(qӵ, qӵ, qӵ, qӵ, qӵ);
+Test_N(qӸ, qӸ, qӸ, qӸ, qӸ);
+Test_N(qӹ, qӹ, qӹ, qӹ, qӹ);
+Test_N(qև, qև, qև, qեւ, qեւ);
+Test_N(qآ, qآ, qآ, qآ, qآ);
+Test_N(qأ, qأ, qأ, qأ, qأ);
+Test_N(qؤ, qؤ, qؤ, qؤ, qؤ);
+Test_N(qإ, qإ, qإ, qإ, qإ);
+Test_N(qئ, qئ, qئ, qئ, qئ);
+Test_N(qٵ, qٵ, qٵ, qاٴ, qاٴ);
+Test_N(qٶ, qٶ, qٶ, qوٴ, qوٴ);
+Test_N(qٷ, qٷ, qٷ, qۇٴ, qۇٴ);
+Test_N(qٸ, qٸ, qٸ, qيٴ, qيٴ);
+Test_N(qۀ, qۀ, qۀ, qۀ, qۀ);
+Test_N(qۂ, qۂ, qۂ, qۂ, qۂ);
+Test_N(qۓ, qۓ, qۓ, qۓ, qۓ);
+Test_N(qऩ, qऩ, qऩ, qऩ, qऩ);
+Test_N(qऱ, qऱ, qऱ, qऱ, qऱ);
+Test_N(qऴ, qऴ, qऴ, qऴ, qऴ);
+Test_N(qक़, qक़, qक़, qक़, qक़);
+Test_N(qख़, qख़, qख़, qख़, qख़);
+Test_N(qग़, qग़, qग़, qग़, qग़);
+Test_N(qज़, qज़, qज़, qज़, qज़);
+Test_N(qड़, qड़, qड़, qड़, qड़);
+Test_N(qढ़, qढ़, qढ़, qढ़, qढ़);
+Test_N(qफ़, qफ़, qफ़, qफ़, qफ़);
+Test_N(qय़, qय़, qय़, qय़, qय़);
+Test_N(qো, qো, qো, qো, qো);
+Test_N(qৌ, qৌ, qৌ, qৌ, qৌ);
+Test_N(qড়, qড়, qড়, qড়, qড়);
+Test_N(qঢ়, qঢ়, qঢ়, qঢ়, qঢ়);
+Test_N(qয়, qয়, qয়, qয়, qয়);
+Test_N(qਲ਼, qਲ਼, qਲ਼, qਲ਼, qਲ਼);
+Test_N(qਸ਼, qਸ਼, qਸ਼, qਸ਼, qਸ਼);
+Test_N(qਖ਼, qਖ਼, qਖ਼, qਖ਼, qਖ਼);
+Test_N(qਗ਼, qਗ਼, qਗ਼, qਗ਼, qਗ਼);
+Test_N(qਜ਼, qਜ਼, qਜ਼, qਜ਼, qਜ਼);
+Test_N(qਫ਼, qਫ਼, qਫ਼, qਫ਼, qਫ਼);
+Test_N(qୈ, qୈ, qୈ, qୈ, qୈ);
+Test_N(qୋ, qୋ, qୋ, qୋ, qୋ);
+Test_N(qୌ, qୌ, qୌ, qୌ, qୌ);
+Test_N(qଡ଼, qଡ଼, qଡ଼, qଡ଼, qଡ଼);
+Test_N(qଢ଼, qଢ଼, qଢ଼, qଢ଼, qଢ଼);
+Test_N(qஔ, qஔ, qஔ, qஔ, qஔ);
+Test_N(qொ, qொ, qொ, qொ, qொ);
+Test_N(qோ, qோ, qோ, qோ, qோ);
+Test_N(qௌ, qௌ, qௌ, qௌ, qௌ);
+Test_N(qై, qై, qై, qై, qై);
+Test_N(qೀ, qೀ, qೀ, qೀ, qೀ);
+Test_N(qೇ, qೇ, qೇ, qೇ, qೇ);
+Test_N(qೈ, qೈ, qೈ, qೈ, qೈ);
+Test_N(qೊ, qೊ, qೊ, qೊ, qೊ);
+Test_N(qೋ, qೋ, qೋ, qೋ, qೋ);
+Test_N(qൊ, qൊ, qൊ, qൊ, qൊ);
+Test_N(qോ, qോ, qോ, qോ, qോ);
+Test_N(qൌ, qൌ, qൌ, qൌ, qൌ);
+Test_N(qේ, qේ, qේ, qේ, qේ);
+Test_N(qො, qො, qො, qො, qො);
+Test_N(qෝ, qෝ, qෝ, qෝ, qෝ);
+Test_N(qෞ, qෞ, qෞ, qෞ, qෞ);
+Test_N(qำ, qำ, qำ, qํา, qํา);
+Test_N(qຳ, qຳ, qຳ, qໍາ, qໍາ);
+Test_N(qໜ, qໜ, qໜ, qຫນ, qຫນ);
+Test_N(qໝ, qໝ, qໝ, qຫມ, qຫມ);
+Test_N(q༌, q༌, q༌, q་, q་);
+Test_N(qགྷ, qགྷ, qགྷ, qགྷ, qགྷ);
+Test_N(qཌྷ, qཌྷ, qཌྷ, qཌྷ, qཌྷ);
+Test_N(qདྷ, qདྷ, qདྷ, qདྷ, qདྷ);
+Test_N(qབྷ, qབྷ, qབྷ, qབྷ, qབྷ);
+Test_N(qཛྷ, qཛྷ, qཛྷ, qཛྷ, qཛྷ);
+Test_N(qཀྵ, qཀྵ, qཀྵ, qཀྵ, qཀྵ);
+Test_N(qཱི, qཱི, qཱི, qཱི, qཱི);
+Test_N(qཱུ, qཱུ, qཱུ, qཱུ, qཱུ);
+Test_N(qྲྀ, qྲྀ, qྲྀ, qྲྀ, qྲྀ);
+Test_N(qཷ, qཷ, qཷ, qྲཱྀ, qྲཱྀ);
+Test_N(qླྀ, qླྀ, qླྀ, qླྀ, qླྀ);
+Test_N(qཹ, qཹ, qཹ, qླཱྀ, qླཱྀ);
+Test_N(qཱྀ, qཱྀ, qཱྀ, qཱྀ, qཱྀ);
+Test_N(qྒྷ, qྒྷ, qྒྷ, qྒྷ, qྒྷ);
+Test_N(qྜྷ, qྜྷ, qྜྷ, qྜྷ, qྜྷ);
+Test_N(qྡྷ, qྡྷ, qྡྷ, qྡྷ, qྡྷ);
+Test_N(qྦྷ, qྦྷ, qྦྷ, qྦྷ, qྦྷ);
+Test_N(qྫྷ, qྫྷ, qྫྷ, qྫྷ, qྫྷ);
+Test_N(qྐྵ, qྐྵ, qྐྵ, qྐྵ, qྐྵ);
+Test_N(qဦ, qဦ, qဦ, qဦ, qဦ);
+Test_N(qჼ, qჼ, qჼ, qნ, qნ);
+Test_N(qᬆ, qᬆ, qᬆ, qᬆ, qᬆ);
+Test_N(qᬈ, qᬈ, qᬈ, qᬈ, qᬈ);
+Test_N(qᬊ, qᬊ, qᬊ, qᬊ, qᬊ);
+Test_N(qᬌ, qᬌ, qᬌ, qᬌ, qᬌ);
+Test_N(qᬎ, qᬎ, qᬎ, qᬎ, qᬎ);
+Test_N(qᬒ, qᬒ, qᬒ, qᬒ, qᬒ);
+Test_N(qᬻ, qᬻ, qᬻ, qᬻ, qᬻ);
+Test_N(qᬽ, qᬽ, qᬽ, qᬽ, qᬽ);
+Test_N(qᭀ, qᭀ, qᭀ, qᭀ, qᭀ);
+Test_N(qᭁ, qᭁ, qᭁ, qᭁ, qᭁ);
+Test_N(qᭃ, qᭃ, qᭃ, qᭃ, qᭃ);
+Test_N(qᴬ, qᴬ, qᴬ, qA, qA);
+Test_N(qᴭ, qᴭ, qᴭ, qÆ, qÆ);
+Test_N(qᴮ, qᴮ, qᴮ, qB, qB);
+Test_N(qᴰ, qᴰ, qᴰ, qD, qD);
+Test_N(qᴱ, qᴱ, qᴱ, qE, qE);
+Test_N(qᴲ, qᴲ, qᴲ, qƎ, qƎ);
+Test_N(qᴳ, qᴳ, qᴳ, qG, qG);
+Test_N(qᴴ, qᴴ, qᴴ, qH, qH);
+Test_N(qᴵ, qᴵ, qᴵ, qI, qI);
+Test_N(qᴶ, qᴶ, qᴶ, qJ, qJ);
+Test_N(qᴷ, qᴷ, qᴷ, qK, qK);
+Test_N(qᴸ, qᴸ, qᴸ, qL, qL);
+Test_N(qᴹ, qᴹ, qᴹ, qM, qM);
+Test_N(qᴺ, qᴺ, qᴺ, qN, qN);
+Test_N(qᴼ, qᴼ, qᴼ, qO, qO);
+Test_N(qᴽ, qᴽ, qᴽ, qȢ, qȢ);
+Test_N(qᴾ, qᴾ, qᴾ, qP, qP);
+Test_N(qᴿ, qᴿ, qᴿ, qR, qR);
+Test_N(qᵀ, qᵀ, qᵀ, qT, qT);
+Test_N(qᵁ, qᵁ, qᵁ, qU, qU);
+Test_N(qᵂ, qᵂ, qᵂ, qW, qW);
+Test_N(qᵃ, qᵃ, qᵃ, qa, qa);
+Test_N(qᵄ, qᵄ, qᵄ, qɐ, qɐ);
+Test_N(qᵅ, qᵅ, qᵅ, qɑ, qɑ);
+Test_N(qᵆ, qᵆ, qᵆ, qᴂ, qᴂ);
+Test_N(qᵇ, qᵇ, qᵇ, qb, qb);
+Test_N(qᵈ, qᵈ, qᵈ, qd, qd);
+Test_N(qᵉ, qᵉ, qᵉ, qe, qe);
+Test_N(qᵊ, qᵊ, qᵊ, qə, qə);
+Test_N(qᵋ, qᵋ, qᵋ, qɛ, qɛ);
+Test_N(qᵌ, qᵌ, qᵌ, qɜ, qɜ);
+Test_N(qᵍ, qᵍ, qᵍ, qg, qg);
+Test_N(qᵏ, qᵏ, qᵏ, qk, qk);
+Test_N(qᵐ, qᵐ, qᵐ, qm, qm);
+Test_N(qᵑ, qᵑ, qᵑ, qŋ, qŋ);
+Test_N(qᵒ, qᵒ, qᵒ, qo, qo);
+Test_N(qᵓ, qᵓ, qᵓ, qɔ, qɔ);
+Test_N(qᵔ, qᵔ, qᵔ, qᴖ, qᴖ);
+Test_N(qᵕ, qᵕ, qᵕ, qᴗ, qᴗ);
+Test_N(qᵖ, qᵖ, qᵖ, qp, qp);
+Test_N(qᵗ, qᵗ, qᵗ, qt, qt);
+Test_N(qᵘ, qᵘ, qᵘ, qu, qu);
+Test_N(qᵙ, qᵙ, qᵙ, qᴝ, qᴝ);
+Test_N(qᵚ, qᵚ, qᵚ, qɯ, qɯ);
+Test_N(qᵛ, qᵛ, qᵛ, qv, qv);
+Test_N(qᵜ, qᵜ, qᵜ, qᴥ, qᴥ);
+Test_N(qᵝ, qᵝ, qᵝ, qβ, qβ);
+Test_N(qᵞ, qᵞ, qᵞ, qγ, qγ);
+Test_N(qᵟ, qᵟ, qᵟ, qδ, qδ);
+Test_N(qᵠ, qᵠ, qᵠ, qφ, qφ);
+Test_N(qᵡ, qᵡ, qᵡ, qχ, qχ);
+Test_N(qᵢ, qᵢ, qᵢ, qi, qi);
+Test_N(qᵣ, qᵣ, qᵣ, qr, qr);
+Test_N(qᵤ, qᵤ, qᵤ, qu, qu);
+Test_N(qᵥ, qᵥ, qᵥ, qv, qv);
+Test_N(qᵦ, qᵦ, qᵦ, qβ, qβ);
+Test_N(qᵧ, qᵧ, qᵧ, qγ, qγ);
+Test_N(qᵨ, qᵨ, qᵨ, qρ, qρ);
+Test_N(qᵩ, qᵩ, qᵩ, qφ, qφ);
+Test_N(qᵪ, qᵪ, qᵪ, qχ, qχ);
+Test_N(qᵸ, qᵸ, qᵸ, qн, qн);
+Test_N(qᶛ, qᶛ, qᶛ, qɒ, qɒ);
+Test_N(qᶜ, qᶜ, qᶜ, qc, qc);
+Test_N(qᶝ, qᶝ, qᶝ, qɕ, qɕ);
+Test_N(qᶞ, qᶞ, qᶞ, qð, qð);
+Test_N(qᶟ, qᶟ, qᶟ, qɜ, qɜ);
+Test_N(qᶠ, qᶠ, qᶠ, qf, qf);
+Test_N(qᶡ, qᶡ, qᶡ, qɟ, qɟ);
+Test_N(qᶢ, qᶢ, qᶢ, qɡ, qɡ);
+Test_N(qᶣ, qᶣ, qᶣ, qɥ, qɥ);
+Test_N(qᶤ, qᶤ, qᶤ, qɨ, qɨ);
+Test_N(qᶥ, qᶥ, qᶥ, qɩ, qɩ);
+Test_N(qᶦ, qᶦ, qᶦ, qɪ, qɪ);
+Test_N(qᶧ, qᶧ, qᶧ, qᵻ, qᵻ);
+Test_N(qᶨ, qᶨ, qᶨ, qʝ, qʝ);
+Test_N(qᶩ, qᶩ, qᶩ, qɭ, qɭ);
+Test_N(qᶪ, qᶪ, qᶪ, qᶅ, qᶅ);
+Test_N(qᶫ, qᶫ, qᶫ, qʟ, qʟ);
+Test_N(qᶬ, qᶬ, qᶬ, qɱ, qɱ);
+Test_N(qᶭ, qᶭ, qᶭ, qɰ, qɰ);
+Test_N(qᶮ, qᶮ, qᶮ, qɲ, qɲ);
+Test_N(qᶯ, qᶯ, qᶯ, qɳ, qɳ);
+Test_N(qᶰ, qᶰ, qᶰ, qɴ, qɴ);
+Test_N(qᶱ, qᶱ, qᶱ, qɵ, qɵ);
+Test_N(qᶲ, qᶲ, qᶲ, qɸ, qɸ);
+Test_N(qᶳ, qᶳ, qᶳ, qʂ, qʂ);
+Test_N(qᶴ, qᶴ, qᶴ, qʃ, qʃ);
+Test_N(qᶵ, qᶵ, qᶵ, qƫ, qƫ);
+Test_N(qᶶ, qᶶ, qᶶ, qʉ, qʉ);
+Test_N(qᶷ, qᶷ, qᶷ, qʊ, qʊ);
+Test_N(qᶸ, qᶸ, qᶸ, qᴜ, qᴜ);
+Test_N(qᶹ, qᶹ, qᶹ, qʋ, qʋ);
+Test_N(qᶺ, qᶺ, qᶺ, qʌ, qʌ);
+Test_N(qᶻ, qᶻ, qᶻ, qz, qz);
+Test_N(qᶼ, qᶼ, qᶼ, qʐ, qʐ);
+Test_N(qᶽ, qᶽ, qᶽ, qʑ, qʑ);
+Test_N(qᶾ, qᶾ, qᶾ, qʒ, qʒ);
+Test_N(qᶿ, qᶿ, qᶿ, qθ, qθ);
+Test_N(qḀ, qḀ, qḀ, qḀ, qḀ);
+Test_N(qḁ, qḁ, qḁ, qḁ, qḁ);
+Test_N(qḂ, qḂ, qḂ, qḂ, qḂ);
+Test_N(qḃ, qḃ, qḃ, qḃ, qḃ);
+Test_N(qḄ, qḄ, qḄ, qḄ, qḄ);
+Test_N(qḅ, qḅ, qḅ, qḅ, qḅ);
+Test_N(qḆ, qḆ, qḆ, qḆ, qḆ);
+Test_N(qḇ, qḇ, qḇ, qḇ, qḇ);
+Test_N(qḈ, qḈ, qḈ, qḈ, qḈ);
+Test_N(qḉ, qḉ, qḉ, qḉ, qḉ);
+Test_N(qḊ, qḊ, qḊ, qḊ, qḊ);
+Test_N(qḋ, qḋ, qḋ, qḋ, qḋ);
+Test_N(qḌ, qḌ, qḌ, qḌ, qḌ);
+Test_N(qḍ, qḍ, qḍ, qḍ, qḍ);
+Test_N(qḎ, qḎ, qḎ, qḎ, qḎ);
+Test_N(qḏ, qḏ, qḏ, qḏ, qḏ);
+Test_N(qḐ, qḐ, qḐ, qḐ, qḐ);
+Test_N(qḑ, qḑ, qḑ, qḑ, qḑ);
+Test_N(qḒ, qḒ, qḒ, qḒ, qḒ);
+Test_N(qḓ, qḓ, qḓ, qḓ, qḓ);
+Test_N(qḔ, qḔ, qḔ, qḔ, qḔ);
+Test_N(qḕ, qḕ, qḕ, qḕ, qḕ);
+Test_N(qḖ, qḖ, qḖ, qḖ, qḖ);
+Test_N(qḗ, qḗ, qḗ, qḗ, qḗ);
+Test_N(qḘ, qḘ, qḘ, qḘ, qḘ);
+Test_N(qḙ, qḙ, qḙ, qḙ, qḙ);
+Test_N(qḚ, qḚ, qḚ, qḚ, qḚ);
+Test_N(qḛ, qḛ, qḛ, qḛ, qḛ);
+Test_N(qḜ, qḜ, qḜ, qḜ, qḜ);
+Test_N(qḝ, qḝ, qḝ, qḝ, qḝ);
+Test_N(qḞ, qḞ, qḞ, qḞ, qḞ);
+Test_N(qḟ, qḟ, qḟ, qḟ, qḟ);
+Test_N(qḠ, qḠ, qḠ, qḠ, qḠ);
+Test_N(qḡ, qḡ, qḡ, qḡ, qḡ);
+Test_N(qḢ, qḢ, qḢ, qḢ, qḢ);
+Test_N(qḣ, qḣ, qḣ, qḣ, qḣ);
+Test_N(qḤ, qḤ, qḤ, qḤ, qḤ);
+Test_N(qḥ, qḥ, qḥ, qḥ, qḥ);
+Test_N(qḦ, qḦ, qḦ, qḦ, qḦ);
+Test_N(qḧ, qḧ, qḧ, qḧ, qḧ);
+Test_N(qḨ, qḨ, qḨ, qḨ, qḨ);
+Test_N(qḩ, qḩ, qḩ, qḩ, qḩ);
+Test_N(qḪ, qḪ, qḪ, qḪ, qḪ);
+Test_N(qḫ, qḫ, qḫ, qḫ, qḫ);
+Test_N(qḬ, qḬ, qḬ, qḬ, qḬ);
+Test_N(qḭ, qḭ, qḭ, qḭ, qḭ);
+Test_N(qḮ, qḮ, qḮ, qḮ, qḮ);
+Test_N(qḯ, qḯ, qḯ, qḯ, qḯ);
+Test_N(qḰ, qḰ, qḰ, qḰ, qḰ);
+Test_N(qḱ, qḱ, qḱ, qḱ, qḱ);
+Test_N(qḲ, qḲ, qḲ, qḲ, qḲ);
+Test_N(qḳ, qḳ, qḳ, qḳ, qḳ);
+Test_N(qḴ, qḴ, qḴ, qḴ, qḴ);
+Test_N(qḵ, qḵ, qḵ, qḵ, qḵ);
+Test_N(qḶ, qḶ, qḶ, qḶ, qḶ);
+Test_N(qḷ, qḷ, qḷ, qḷ, qḷ);
+Test_N(qḸ, qḸ, qḸ, qḸ, qḸ);
+Test_N(qḹ, qḹ, qḹ, qḹ, qḹ);
+Test_N(qḺ, qḺ, qḺ, qḺ, qḺ);
+Test_N(qḻ, qḻ, qḻ, qḻ, qḻ);
+Test_N(qḼ, qḼ, qḼ, qḼ, qḼ);
+Test_N(qḽ, qḽ, qḽ, qḽ, qḽ);
+Test_N(qḾ, qḾ, qḾ, qḾ, qḾ);
+Test_N(qḿ, qḿ, qḿ, qḿ, qḿ);
+Test_N(qṀ, qṀ, qṀ, qṀ, qṀ);
+Test_N(qṁ, qṁ, qṁ, qṁ, qṁ);
+Test_N(qṂ, qṂ, qṂ, qṂ, qṂ);
+Test_N(qṃ, qṃ, qṃ, qṃ, qṃ);
+Test_N(qṄ, qṄ, qṄ, qṄ, qṄ);
+Test_N(qṅ, qṅ, qṅ, qṅ, qṅ);
+Test_N(qṆ, qṆ, qṆ, qṆ, qṆ);
+Test_N(qṇ, qṇ, qṇ, qṇ, qṇ);
+Test_N(qṈ, qṈ, qṈ, qṈ, qṈ);
+Test_N(qṉ, qṉ, qṉ, qṉ, qṉ);
+Test_N(qṊ, qṊ, qṊ, qṊ, qṊ);
+Test_N(qṋ, qṋ, qṋ, qṋ, qṋ);
+Test_N(qṌ, qṌ, qṌ, qṌ, qṌ);
+Test_N(qṍ, qṍ, qṍ, qṍ, qṍ);
+Test_N(qṎ, qṎ, qṎ, qṎ, qṎ);
+Test_N(qṏ, qṏ, qṏ, qṏ, qṏ);
+Test_N(qṐ, qṐ, qṐ, qṐ, qṐ);
+Test_N(qṑ, qṑ, qṑ, qṑ, qṑ);
+Test_N(qṒ, qṒ, qṒ, qṒ, qṒ);
+Test_N(qṓ, qṓ, qṓ, qṓ, qṓ);
+Test_N(qṔ, qṔ, qṔ, qṔ, qṔ);
+Test_N(qṕ, qṕ, qṕ, qṕ, qṕ);
+Test_N(qṖ, qṖ, qṖ, qṖ, qṖ);
+Test_N(qṗ, qṗ, qṗ, qṗ, qṗ);
+Test_N(qṘ, qṘ, qṘ, qṘ, qṘ);
+Test_N(qṙ, qṙ, qṙ, qṙ, qṙ);
+Test_N(qṚ, qṚ, qṚ, qṚ, qṚ);
+Test_N(qṛ, qṛ, qṛ, qṛ, qṛ);
+Test_N(qṜ, qṜ, qṜ, qṜ, qṜ);
+Test_N(qṝ, qṝ, qṝ, qṝ, qṝ);
+Test_N(qṞ, qṞ, qṞ, qṞ, qṞ);
+Test_N(qṟ, qṟ, qṟ, qṟ, qṟ);
+Test_N(qṠ, qṠ, qṠ, qṠ, qṠ);
+Test_N(qṡ, qṡ, qṡ, qṡ, qṡ);
+Test_N(qṢ, qṢ, qṢ, qṢ, qṢ);
+Test_N(qṣ, qṣ, qṣ, qṣ, qṣ);
+Test_N(qṤ, qṤ, qṤ, qṤ, qṤ);
+Test_N(qṥ, qṥ, qṥ, qṥ, qṥ);
+Test_N(qṦ, qṦ, qṦ, qṦ, qṦ);
+Test_N(qṧ, qṧ, qṧ, qṧ, qṧ);
+Test_N(qṨ, qṨ, qṨ, qṨ, qṨ);
+Test_N(qṩ, qṩ, qṩ, qṩ, qṩ);
+Test_N(qṪ, qṪ, qṪ, qṪ, qṪ);
+Test_N(qṫ, qṫ, qṫ, qṫ, qṫ);
+Test_N(qṬ, qṬ, qṬ, qṬ, qṬ);
+Test_N(qṭ, qṭ, qṭ, qṭ, qṭ);
+Test_N(qṮ, qṮ, qṮ, qṮ, qṮ);
+Test_N(qṯ, qṯ, qṯ, qṯ, qṯ);
+Test_N(qṰ, qṰ, qṰ, qṰ, qṰ);
+Test_N(qṱ, qṱ, qṱ, qṱ, qṱ);
+Test_N(qṲ, qṲ, qṲ, qṲ, qṲ);
+Test_N(qṳ, qṳ, qṳ, qṳ, qṳ);
+Test_N(qṴ, qṴ, qṴ, qṴ, qṴ);
+Test_N(qṵ, qṵ, qṵ, qṵ, qṵ);
+Test_N(qṶ, qṶ, qṶ, qṶ, qṶ);
+Test_N(qṷ, qṷ, qṷ, qṷ, qṷ);
+Test_N(qṸ, qṸ, qṸ, qṸ, qṸ);
+Test_N(qṹ, qṹ, qṹ, qṹ, qṹ);
+Test_N(qṺ, qṺ, qṺ, qṺ, qṺ);
+Test_N(qṻ, qṻ, qṻ, qṻ, qṻ);
+Test_N(qṼ, qṼ, qṼ, qṼ, qṼ);
+Test_N(qṽ, qṽ, qṽ, qṽ, qṽ);
+Test_N(qṾ, qṾ, qṾ, qṾ, qṾ);
+Test_N(qṿ, qṿ, qṿ, qṿ, qṿ);
+Test_N(qẀ, qẀ, qẀ, qẀ, qẀ);
+Test_N(qẁ, qẁ, qẁ, qẁ, qẁ);
+Test_N(qẂ, qẂ, qẂ, qẂ, qẂ);
+Test_N(qẃ, qẃ, qẃ, qẃ, qẃ);
+Test_N(qẄ, qẄ, qẄ, qẄ, qẄ);
+Test_N(qẅ, qẅ, qẅ, qẅ, qẅ);
+Test_N(qẆ, qẆ, qẆ, qẆ, qẆ);
+Test_N(qẇ, qẇ, qẇ, qẇ, qẇ);
+Test_N(qẈ, qẈ, qẈ, qẈ, qẈ);
+Test_N(qẉ, qẉ, qẉ, qẉ, qẉ);
+Test_N(qẊ, qẊ, qẊ, qẊ, qẊ);
+Test_N(qẋ, qẋ, qẋ, qẋ, qẋ);
+Test_N(qẌ, qẌ, qẌ, qẌ, qẌ);
+Test_N(qẍ, qẍ, qẍ, qẍ, qẍ);
+Test_N(qẎ, qẎ, qẎ, qẎ, qẎ);
+Test_N(qẏ, qẏ, qẏ, qẏ, qẏ);
+Test_N(qẐ, qẐ, qẐ, qẐ, qẐ);
+Test_N(qẑ, qẑ, qẑ, qẑ, qẑ);
+Test_N(qẒ, qẒ, qẒ, qẒ, qẒ);
+Test_N(qẓ, qẓ, qẓ, qẓ, qẓ);
+Test_N(qẔ, qẔ, qẔ, qẔ, qẔ);
+Test_N(qẕ, qẕ, qẕ, qẕ, qẕ);
+Test_N(qẖ, qẖ, qẖ, qẖ, qẖ);
+Test_N(qẗ, qẗ, qẗ, qẗ, qẗ);
+Test_N(qẘ, qẘ, qẘ, qẘ, qẘ);
+Test_N(qẙ, qẙ, qẙ, qẙ, qẙ);
+Test_N(qẚ, qẚ, qẚ, qaʾ, qaʾ);
+Test_N(qẛ, qẛ, qẛ, qṡ, qṡ);
+Test_N(qẠ, qẠ, qẠ, qẠ, qẠ);
+Test_N(qạ, qạ, qạ, qạ, qạ);
+Test_N(qẢ, qẢ, qẢ, qẢ, qẢ);
+Test_N(qả, qả, qả, qả, qả);
+Test_N(qẤ, qẤ, qẤ, qẤ, qẤ);
+Test_N(qấ, qấ, qấ, qấ, qấ);
+Test_N(qẦ, qẦ, qẦ, qẦ, qẦ);
+Test_N(qầ, qầ, qầ, qầ, qầ);
+Test_N(qẨ, qẨ, qẨ, qẨ, qẨ);
+Test_N(qẩ, qẩ, qẩ, qẩ, qẩ);
+Test_N(qẪ, qẪ, qẪ, qẪ, qẪ);
+Test_N(qẫ, qẫ, qẫ, qẫ, qẫ);
+Test_N(qẬ, qẬ, qẬ, qẬ, qẬ);
+Test_N(qậ, qậ, qậ, qậ, qậ);
+Test_N(qẮ, qẮ, qẮ, qẮ, qẮ);
+Test_N(qắ, qắ, qắ, qắ, qắ);
+Test_N(qẰ, qẰ, qẰ, qẰ, qẰ);
+Test_N(qằ, qằ, qằ, qằ, qằ);
+Test_N(qẲ, qẲ, qẲ, qẲ, qẲ);
+Test_N(qẳ, qẳ, qẳ, qẳ, qẳ);
+Test_N(qẴ, qẴ, qẴ, qẴ, qẴ);
+Test_N(qẵ, qẵ, qẵ, qẵ, qẵ);
+Test_N(qẶ, qẶ, qẶ, qẶ, qẶ);
+Test_N(qặ, qặ, qặ, qặ, qặ);
+Test_N(qẸ, qẸ, qẸ, qẸ, qẸ);
+Test_N(qẹ, qẹ, qẹ, qẹ, qẹ);
+Test_N(qẺ, qẺ, qẺ, qẺ, qẺ);
+Test_N(qẻ, qẻ, qẻ, qẻ, qẻ);
+Test_N(qẼ, qẼ, qẼ, qẼ, qẼ);
+Test_N(qẽ, qẽ, qẽ, qẽ, qẽ);
+Test_N(qẾ, qẾ, qẾ, qẾ, qẾ);
+Test_N(qế, qế, qế, qế, qế);
+Test_N(qỀ, qỀ, qỀ, qỀ, qỀ);
+Test_N(qề, qề, qề, qề, qề);
+Test_N(qỂ, qỂ, qỂ, qỂ, qỂ);
+Test_N(qể, qể, qể, qể, qể);
+Test_N(qỄ, qỄ, qỄ, qỄ, qỄ);
+Test_N(qễ, qễ, qễ, qễ, qễ);
+Test_N(qỆ, qỆ, qỆ, qỆ, qỆ);
+Test_N(qệ, qệ, qệ, qệ, qệ);
+Test_N(qỈ, qỈ, qỈ, qỈ, qỈ);
+Test_N(qỉ, qỉ, qỉ, qỉ, qỉ);
+Test_N(qỊ, qỊ, qỊ, qỊ, qỊ);
+Test_N(qị, qị, qị, qị, qị);
+Test_N(qỌ, qỌ, qỌ, qỌ, qỌ);
+Test_N(qọ, qọ, qọ, qọ, qọ);
+Test_N(qỎ, qỎ, qỎ, qỎ, qỎ);
+Test_N(qỏ, qỏ, qỏ, qỏ, qỏ);
+Test_N(qỐ, qỐ, qỐ, qỐ, qỐ);
+Test_N(qố, qố, qố, qố, qố);
+Test_N(qỒ, qỒ, qỒ, qỒ, qỒ);
+Test_N(qồ, qồ, qồ, qồ, qồ);
+Test_N(qỔ, qỔ, qỔ, qỔ, qỔ);
+Test_N(qổ, qổ, qổ, qổ, qổ);
+Test_N(qỖ, qỖ, qỖ, qỖ, qỖ);
+Test_N(qỗ, qỗ, qỗ, qỗ, qỗ);
+Test_N(qỘ, qỘ, qỘ, qỘ, qỘ);
+Test_N(qộ, qộ, qộ, qộ, qộ);
+Test_N(qỚ, qỚ, qỚ, qỚ, qỚ);
+Test_N(qớ, qớ, qớ, qớ, qớ);
+Test_N(qỜ, qỜ, qỜ, qỜ, qỜ);
+Test_N(qờ, qờ, qờ, qờ, qờ);
+Test_N(qỞ, qỞ, qỞ, qỞ, qỞ);
+Test_N(qở, qở, qở, qở, qở);
+Test_N(qỠ, qỠ, qỠ, qỠ, qỠ);
+Test_N(qỡ, qỡ, qỡ, qỡ, qỡ);
+Test_N(qỢ, qỢ, qỢ, qỢ, qỢ);
+Test_N(qợ, qợ, qợ, qợ, qợ);
+Test_N(qỤ, qỤ, qỤ, qỤ, qỤ);
+Test_N(qụ, qụ, qụ, qụ, qụ);
+Test_N(qỦ, qỦ, qỦ, qỦ, qỦ);
+Test_N(qủ, qủ, qủ, qủ, qủ);
+Test_N(qỨ, qỨ, qỨ, qỨ, qỨ);
+Test_N(qứ, qứ, qứ, qứ, qứ);
+Test_N(qỪ, qỪ, qỪ, qỪ, qỪ);
+Test_N(qừ, qừ, qừ, qừ, qừ);
+Test_N(qỬ, qỬ, qỬ, qỬ, qỬ);
+Test_N(qử, qử, qử, qử, qử);
+Test_N(qỮ, qỮ, qỮ, qỮ, qỮ);
+Test_N(qữ, qữ, qữ, qữ, qữ);
+Test_N(qỰ, qỰ, qỰ, qỰ, qỰ);
+Test_N(qự, qự, qự, qự, qự);
+Test_N(qỲ, qỲ, qỲ, qỲ, qỲ);
+Test_N(qỳ, qỳ, qỳ, qỳ, qỳ);
+Test_N(qỴ, qỴ, qỴ, qỴ, qỴ);
+Test_N(qỵ, qỵ, qỵ, qỵ, qỵ);
+Test_N(qỶ, qỶ, qỶ, qỶ, qỶ);
+Test_N(qỷ, qỷ, qỷ, qỷ, qỷ);
+Test_N(qỸ, qỸ, qỸ, qỸ, qỸ);
+Test_N(qỹ, qỹ, qỹ, qỹ, qỹ);
+Test_N(qἀ, qἀ, qἀ, qἀ, qἀ);
+Test_N(qἁ, qἁ, qἁ, qἁ, qἁ);
+Test_N(qἂ, qἂ, qἂ, qἂ, qἂ);
+Test_N(qἃ, qἃ, qἃ, qἃ, qἃ);
+Test_N(qἄ, qἄ, qἄ, qἄ, qἄ);
+Test_N(qἅ, qἅ, qἅ, qἅ, qἅ);
+Test_N(qἆ, qἆ, qἆ, qἆ, qἆ);
+Test_N(qἇ, qἇ, qἇ, qἇ, qἇ);
+Test_N(qἈ, qἈ, qἈ, qἈ, qἈ);
+Test_N(qἉ, qἉ, qἉ, qἉ, qἉ);
+Test_N(qἊ, qἊ, qἊ, qἊ, qἊ);
+Test_N(qἋ, qἋ, qἋ, qἋ, qἋ);
+Test_N(qἌ, qἌ, qἌ, qἌ, qἌ);
+Test_N(qἍ, qἍ, qἍ, qἍ, qἍ);
+Test_N(qἎ, qἎ, qἎ, qἎ, qἎ);
+Test_N(qἏ, qἏ, qἏ, qἏ, qἏ);
+Test_N(qἐ, qἐ, qἐ, qἐ, qἐ);
+Test_N(qἑ, qἑ, qἑ, qἑ, qἑ);
+Test_N(qἒ, qἒ, qἒ, qἒ, qἒ);
+Test_N(qἓ, qἓ, qἓ, qἓ, qἓ);
+Test_N(qἔ, qἔ, qἔ, qἔ, qἔ);
+Test_N(qἕ, qἕ, qἕ, qἕ, qἕ);
+Test_N(qἘ, qἘ, qἘ, qἘ, qἘ);
+Test_N(qἙ, qἙ, qἙ, qἙ, qἙ);
+Test_N(qἚ, qἚ, qἚ, qἚ, qἚ);
+Test_N(qἛ, qἛ, qἛ, qἛ, qἛ);
+Test_N(qἜ, qἜ, qἜ, qἜ, qἜ);
+Test_N(qἝ, qἝ, qἝ, qἝ, qἝ);
+Test_N(qἠ, qἠ, qἠ, qἠ, qἠ);
+Test_N(qἡ, qἡ, qἡ, qἡ, qἡ);
+Test_N(qἢ, qἢ, qἢ, qἢ, qἢ);
+Test_N(qἣ, qἣ, qἣ, qἣ, qἣ);
+Test_N(qἤ, qἤ, qἤ, qἤ, qἤ);
+Test_N(qἥ, qἥ, qἥ, qἥ, qἥ);
+Test_N(qἦ, qἦ, qἦ, qἦ, qἦ);
+Test_N(qἧ, qἧ, qἧ, qἧ, qἧ);
+Test_N(qἨ, qἨ, qἨ, qἨ, qἨ);
+Test_N(qἩ, qἩ, qἩ, qἩ, qἩ);
+Test_N(qἪ, qἪ, qἪ, qἪ, qἪ);
+Test_N(qἫ, qἫ, qἫ, qἫ, qἫ);
+Test_N(qἬ, qἬ, qἬ, qἬ, qἬ);
+Test_N(qἭ, qἭ, qἭ, qἭ, qἭ);
+Test_N(qἮ, qἮ, qἮ, qἮ, qἮ);
+Test_N(qἯ, qἯ, qἯ, qἯ, qἯ);
+Test_N(qἰ, qἰ, qἰ, qἰ, qἰ);
+Test_N(qἱ, qἱ, qἱ, qἱ, qἱ);
+Test_N(qἲ, qἲ, qἲ, qἲ, qἲ);
+Test_N(qἳ, qἳ, qἳ, qἳ, qἳ);
+Test_N(qἴ, qἴ, qἴ, qἴ, qἴ);
+Test_N(qἵ, qἵ, qἵ, qἵ, qἵ);
+Test_N(qἶ, qἶ, qἶ, qἶ, qἶ);
+Test_N(qἷ, qἷ, qἷ, qἷ, qἷ);
+Test_N(qἸ, qἸ, qἸ, qἸ, qἸ);
+Test_N(qἹ, qἹ, qἹ, qἹ, qἹ);
+Test_N(qἺ, qἺ, qἺ, qἺ, qἺ);
+Test_N(qἻ, qἻ, qἻ, qἻ, qἻ);
+Test_N(qἼ, qἼ, qἼ, qἼ, qἼ);
+Test_N(qἽ, qἽ, qἽ, qἽ, qἽ);
+Test_N(qἾ, qἾ, qἾ, qἾ, qἾ);
+Test_N(qἿ, qἿ, qἿ, qἿ, qἿ);
+Test_N(qὀ, qὀ, qὀ, qὀ, qὀ);
+Test_N(qὁ, qὁ, qὁ, qὁ, qὁ);
+Test_N(qὂ, qὂ, qὂ, qὂ, qὂ);
+Test_N(qὃ, qὃ, qὃ, qὃ, qὃ);
+Test_N(qὄ, qὄ, qὄ, qὄ, qὄ);
+Test_N(qὅ, qὅ, qὅ, qὅ, qὅ);
+Test_N(qὈ, qὈ, qὈ, qὈ, qὈ);
+Test_N(qὉ, qὉ, qὉ, qὉ, qὉ);
+Test_N(qὊ, qὊ, qὊ, qὊ, qὊ);
+Test_N(qὋ, qὋ, qὋ, qὋ, qὋ);
+Test_N(qὌ, qὌ, qὌ, qὌ, qὌ);
+Test_N(qὍ, qὍ, qὍ, qὍ, qὍ);
+Test_N(qὐ, qὐ, qὐ, qὐ, qὐ);
+Test_N(qὑ, qὑ, qὑ, qὑ, qὑ);
+Test_N(qὒ, qὒ, qὒ, qὒ, qὒ);
+Test_N(qὓ, qὓ, qὓ, qὓ, qὓ);
+Test_N(qὔ, qὔ, qὔ, qὔ, qὔ);
+Test_N(qὕ, qὕ, qὕ, qὕ, qὕ);
+Test_N(qὖ, qὖ, qὖ, qὖ, qὖ);
+Test_N(qὗ, qὗ, qὗ, qὗ, qὗ);
+Test_N(qὙ, qὙ, qὙ, qὙ, qὙ);
+Test_N(qὛ, qὛ, qὛ, qὛ, qὛ);
+Test_N(qὝ, qὝ, qὝ, qὝ, qὝ);
+Test_N(qὟ, qὟ, qὟ, qὟ, qὟ);
+Test_N(qὠ, qὠ, qὠ, qὠ, qὠ);
+Test_N(qὡ, qὡ, qὡ, qὡ, qὡ);
+Test_N(qὢ, qὢ, qὢ, qὢ, qὢ);
+Test_N(qὣ, qὣ, qὣ, qὣ, qὣ);
+Test_N(qὤ, qὤ, qὤ, qὤ, qὤ);
+Test_N(qὥ, qὥ, qὥ, qὥ, qὥ);
+Test_N(qὦ, qὦ, qὦ, qὦ, qὦ);
+Test_N(qὧ, qὧ, qὧ, qὧ, qὧ);
+Test_N(qὨ, qὨ, qὨ, qὨ, qὨ);
+Test_N(qὩ, qὩ, qὩ, qὩ, qὩ);
+Test_N(qὪ, qὪ, qὪ, qὪ, qὪ);
+Test_N(qὫ, qὫ, qὫ, qὫ, qὫ);
+Test_N(qὬ, qὬ, qὬ, qὬ, qὬ);
+Test_N(qὭ, qὭ, qὭ, qὭ, qὭ);
+Test_N(qὮ, qὮ, qὮ, qὮ, qὮ);
+Test_N(qὯ, qὯ, qὯ, qὯ, qὯ);
+Test_N(qὰ, qὰ, qὰ, qὰ, qὰ);
+Test_N(qά, qά, qά, qά, qά);
+Test_N(qὲ, qὲ, qὲ, qὲ, qὲ);
+Test_N(qέ, qέ, qέ, qέ, qέ);
+Test_N(qὴ, qὴ, qὴ, qὴ, qὴ);
+Test_N(qή, qή, qή, qή, qή);
+Test_N(qὶ, qὶ, qὶ, qὶ, qὶ);
+Test_N(qί, qί, qί, qί, qί);
+Test_N(qὸ, qὸ, qὸ, qὸ, qὸ);
+Test_N(qό, qό, qό, qό, qό);
+Test_N(qὺ, qὺ, qὺ, qὺ, qὺ);
+Test_N(qύ, qύ, qύ, qύ, qύ);
+Test_N(qὼ, qὼ, qὼ, qὼ, qὼ);
+Test_N(qώ, qώ, qώ, qώ, qώ);
+Test_N(qᾀ, qᾀ, qᾀ, qᾀ, qᾀ);
+Test_N(qᾁ, qᾁ, qᾁ, qᾁ, qᾁ);
+Test_N(qᾂ, qᾂ, qᾂ, qᾂ, qᾂ);
+Test_N(qᾃ, qᾃ, qᾃ, qᾃ, qᾃ);
+Test_N(qᾄ, qᾄ, qᾄ, qᾄ, qᾄ);
+Test_N(qᾅ, qᾅ, qᾅ, qᾅ, qᾅ);
+Test_N(qᾆ, qᾆ, qᾆ, qᾆ, qᾆ);
+Test_N(qᾇ, qᾇ, qᾇ, qᾇ, qᾇ);
+Test_N(qᾈ, qᾈ, qᾈ, qᾈ, qᾈ);
+Test_N(qᾉ, qᾉ, qᾉ, qᾉ, qᾉ);
+Test_N(qᾊ, qᾊ, qᾊ, qᾊ, qᾊ);
+Test_N(qᾋ, qᾋ, qᾋ, qᾋ, qᾋ);
+Test_N(qᾌ, qᾌ, qᾌ, qᾌ, qᾌ);
+Test_N(qᾍ, qᾍ, qᾍ, qᾍ, qᾍ);
+Test_N(qᾎ, qᾎ, qᾎ, qᾎ, qᾎ);
+Test_N(qᾏ, qᾏ, qᾏ, qᾏ, qᾏ);
+Test_N(qᾐ, qᾐ, qᾐ, qᾐ, qᾐ);
+Test_N(qᾑ, qᾑ, qᾑ, qᾑ, qᾑ);
+Test_N(qᾒ, qᾒ, qᾒ, qᾒ, qᾒ);
+Test_N(qᾓ, qᾓ, qᾓ, qᾓ, qᾓ);
+Test_N(qᾔ, qᾔ, qᾔ, qᾔ, qᾔ);
+Test_N(qᾕ, qᾕ, qᾕ, qᾕ, qᾕ);
+Test_N(qᾖ, qᾖ, qᾖ, qᾖ, qᾖ);
+Test_N(qᾗ, qᾗ, qᾗ, qᾗ, qᾗ);
+Test_N(qᾘ, qᾘ, qᾘ, qᾘ, qᾘ);
+Test_N(qᾙ, qᾙ, qᾙ, qᾙ, qᾙ);
+Test_N(qᾚ, qᾚ, qᾚ, qᾚ, qᾚ);
+Test_N(qᾛ, qᾛ, qᾛ, qᾛ, qᾛ);
+Test_N(qᾜ, qᾜ, qᾜ, qᾜ, qᾜ);
+Test_N(qᾝ, qᾝ, qᾝ, qᾝ, qᾝ);
+Test_N(qᾞ, qᾞ, qᾞ, qᾞ, qᾞ);
+Test_N(qᾟ, qᾟ, qᾟ, qᾟ, qᾟ);
+Test_N(qᾠ, qᾠ, qᾠ, qᾠ, qᾠ);
+Test_N(qᾡ, qᾡ, qᾡ, qᾡ, qᾡ);
+Test_N(qᾢ, qᾢ, qᾢ, qᾢ, qᾢ);
+Test_N(qᾣ, qᾣ, qᾣ, qᾣ, qᾣ);
+Test_N(qᾤ, qᾤ, qᾤ, qᾤ, qᾤ);
+Test_N(qᾥ, qᾥ, qᾥ, qᾥ, qᾥ);
+Test_N(qᾦ, qᾦ, qᾦ, qᾦ, qᾦ);
+Test_N(qᾧ, qᾧ, qᾧ, qᾧ, qᾧ);
+Test_N(qᾨ, qᾨ, qᾨ, qᾨ, qᾨ);
+Test_N(qᾩ, qᾩ, qᾩ, qᾩ, qᾩ);
+Test_N(qᾪ, qᾪ, qᾪ, qᾪ, qᾪ);
+Test_N(qᾫ, qᾫ, qᾫ, qᾫ, qᾫ);
+Test_N(qᾬ, qᾬ, qᾬ, qᾬ, qᾬ);
+Test_N(qᾭ, qᾭ, qᾭ, qᾭ, qᾭ);
+Test_N(qᾮ, qᾮ, qᾮ, qᾮ, qᾮ);
+Test_N(qᾯ, qᾯ, qᾯ, qᾯ, qᾯ);
+Test_N(qᾰ, qᾰ, qᾰ, qᾰ, qᾰ);
+Test_N(qᾱ, qᾱ, qᾱ, qᾱ, qᾱ);
+Test_N(qᾲ, qᾲ, qᾲ, qᾲ, qᾲ);
+Test_N(qᾳ, qᾳ, qᾳ, qᾳ, qᾳ);
+Test_N(qᾴ, qᾴ, qᾴ, qᾴ, qᾴ);
+Test_N(qᾶ, qᾶ, qᾶ, qᾶ, qᾶ);
+Test_N(qᾷ, qᾷ, qᾷ, qᾷ, qᾷ);
+Test_N(qᾸ, qᾸ, qᾸ, qᾸ, qᾸ);
+Test_N(qᾹ, qᾹ, qᾹ, qᾹ, qᾹ);
+Test_N(qᾺ, qᾺ, qᾺ, qᾺ, qᾺ);
+Test_N(qΆ, qΆ, qΆ, qΆ, qΆ);
+Test_N(qᾼ, qᾼ, qᾼ, qᾼ, qᾼ);
+Test_N(q᾽, q᾽, q᾽, q ̓, q ̓);
+Test_N(qι, qι, qι, qι, qι);
+Test_N(q᾿, q᾿, q᾿, q ̓, q ̓);
+Test_N(q῀, q῀, q῀, q ͂, q ͂);
+Test_N(q῁, q῁, q῁, q ̈͂, q ̈͂);
+Test_N(qῂ, qῂ, qῂ, qῂ, qῂ);
+Test_N(qῃ, qῃ, qῃ, qῃ, qῃ);
+Test_N(qῄ, qῄ, qῄ, qῄ, qῄ);
+Test_N(qῆ, qῆ, qῆ, qῆ, qῆ);
+Test_N(qῇ, qῇ, qῇ, qῇ, qῇ);
+Test_N(qῈ, qῈ, qῈ, qῈ, qῈ);
+Test_N(qΈ, qΈ, qΈ, qΈ, qΈ);
+Test_N(qῊ, qῊ, qῊ, qῊ, qῊ);
+Test_N(qΉ, qΉ, qΉ, qΉ, qΉ);
+Test_N(qῌ, qῌ, qῌ, qῌ, qῌ);
+Test_N(q῍, q῍, q῍, q ̓̀, q ̓̀);
+Test_N(q῎, q῎, q῎, q ̓́, q ̓́);
+Test_N(q῏, q῏, q῏, q ̓͂, q ̓͂);
+Test_N(qῐ, qῐ, qῐ, qῐ, qῐ);
+Test_N(qῑ, qῑ, qῑ, qῑ, qῑ);
+Test_N(qῒ, qῒ, qῒ, qῒ, qῒ);
+Test_N(qΐ, qΐ, qΐ, qΐ, qΐ);
+Test_N(qῖ, qῖ, qῖ, qῖ, qῖ);
+Test_N(qῗ, qῗ, qῗ, qῗ, qῗ);
+Test_N(qῘ, qῘ, qῘ, qῘ, qῘ);
+Test_N(qῙ, qῙ, qῙ, qῙ, qῙ);
+Test_N(qῚ, qῚ, qῚ, qῚ, qῚ);
+Test_N(qΊ, qΊ, qΊ, qΊ, qΊ);
+Test_N(q῝, q῝, q῝, q ̔̀, q ̔̀);
+Test_N(q῞, q῞, q῞, q ̔́, q ̔́);
+Test_N(q῟, q῟, q῟, q ̔͂, q ̔͂);
+Test_N(qῠ, qῠ, qῠ, qῠ, qῠ);
+Test_N(qῡ, qῡ, qῡ, qῡ, qῡ);
+Test_N(qῢ, qῢ, qῢ, qῢ, qῢ);
+Test_N(qΰ, qΰ, qΰ, qΰ, qΰ);
+Test_N(qῤ, qῤ, qῤ, qῤ, qῤ);
+Test_N(qῥ, qῥ, qῥ, qῥ, qῥ);
+Test_N(qῦ, qῦ, qῦ, qῦ, qῦ);
+Test_N(qῧ, qῧ, qῧ, qῧ, qῧ);
+Test_N(qῨ, qῨ, qῨ, qῨ, qῨ);
+Test_N(qῩ, qῩ, qῩ, qῩ, qῩ);
+Test_N(qῪ, qῪ, qῪ, qῪ, qῪ);
+Test_N(qΎ, qΎ, qΎ, qΎ, qΎ);
+Test_N(qῬ, qῬ, qῬ, qῬ, qῬ);
+Test_N(q῭, q῭, q῭, q ̈̀, q ̈̀);
+Test_N(q΅, q΅, q΅, q ̈́, q ̈́);
+Test_N(q`, q`, q`, q`, q`);
+Test_N(qῲ, qῲ, qῲ, qῲ, qῲ);
+Test_N(qῳ, qῳ, qῳ, qῳ, qῳ);
+Test_N(qῴ, qῴ, qῴ, qῴ, qῴ);
+Test_N(qῶ, qῶ, qῶ, qῶ, qῶ);
+Test_N(qῷ, qῷ, qῷ, qῷ, qῷ);
+Test_N(qῸ, qῸ, qῸ, qῸ, qῸ);
+Test_N(qΌ, qΌ, qΌ, qΌ, qΌ);
+Test_N(qῺ, qῺ, qῺ, qῺ, qῺ);
+Test_N(qΏ, qΏ, qΏ, qΏ, qΏ);
+Test_N(qῼ, qῼ, qῼ, qῼ, qῼ);
+Test_N(q´, q´, q´, q ́, q ́);
+Test_N(q῾, q῾, q῾, q ̔, q ̔);
+Test_N(q , q , q , q , q );
+Test_N(q , q , q , q , q );
+Test_N(q , q , q , q , q );
+Test_N(q , q , q , q , q );
+Test_N(q , q , q , q , q );
+Test_N(q , q , q , q , q );
+Test_N(q , q , q , q , q );
+Test_N(q , q , q , q , q );
+Test_N(q , q , q , q , q );
+Test_N(q , q , q , q , q );
+Test_N(q , q , q , q , q );
+Test_N(q‑, q‑, q‑, q‐, q‐);
+Test_N(q‗, q‗, q‗, q ̳, q ̳);
+Test_N(q․, q․, q․, q., q.);
+Test_N(q‥, q‥, q‥, q.., q..);
+Test_N(q…, q…, q…, q..., q...);
+Test_N(q , q , q , q , q );
+Test_N(q″, q″, q″, q′′, q′′);
+Test_N(q‴, q‴, q‴, q′′′, q′′′);
+Test_N(q‶, q‶, q‶, q‵‵, q‵‵);
+Test_N(q‷, q‷, q‷, q‵‵‵, q‵‵‵);
+Test_N(q‼, q‼, q‼, q!!, q!!);
+Test_N(q‾, q‾, q‾, q ̅, q ̅);
+Test_N(q⁇, q⁇, q⁇, q??, q??);
+Test_N(q⁈, q⁈, q⁈, q?!, q?!);
+Test_N(q⁉, q⁉, q⁉, q!?, q!?);
+Test_N(q⁗, q⁗, q⁗, q′′′′, q′′′′);
+Test_N(q , q , q , q , q );
+Test_N(q⁰, q⁰, q⁰, q0, q0);
+Test_N(qⁱ, qⁱ, qⁱ, qi, qi);
+Test_N(q⁴, q⁴, q⁴, q4, q4);
+Test_N(q⁵, q⁵, q⁵, q5, q5);
+Test_N(q⁶, q⁶, q⁶, q6, q6);
+Test_N(q⁷, q⁷, q⁷, q7, q7);
+Test_N(q⁸, q⁸, q⁸, q8, q8);
+Test_N(q⁹, q⁹, q⁹, q9, q9);
+Test_N(q⁺, q⁺, q⁺, q+, q+);
+Test_N(q⁻, q⁻, q⁻, q−, q−);
+Test_N(q⁼, q⁼, q⁼, q=, q=);
+Test_N(q⁽, q⁽, q⁽, q(, q();
+Test_N(q⁾, q⁾, q⁾, q), q));
+Test_N(qⁿ, qⁿ, qⁿ, qn, qn);
+Test_N(q₀, q₀, q₀, q0, q0);
+Test_N(q₁, q₁, q₁, q1, q1);
+Test_N(q₂, q₂, q₂, q2, q2);
+Test_N(q₃, q₃, q₃, q3, q3);
+Test_N(q₄, q₄, q₄, q4, q4);
+Test_N(q₅, q₅, q₅, q5, q5);
+Test_N(q₆, q₆, q₆, q6, q6);
+Test_N(q₇, q₇, q₇, q7, q7);
+Test_N(q₈, q₈, q₈, q8, q8);
+Test_N(q₉, q₉, q₉, q9, q9);
+Test_N(q₊, q₊, q₊, q+, q+);
+Test_N(q₋, q₋, q₋, q−, q−);
+Test_N(q₌, q₌, q₌, q=, q=);
+Test_N(q₍, q₍, q₍, q(, q();
+Test_N(q₎, q₎, q₎, q), q));
+Test_N(qₐ, qₐ, qₐ, qa, qa);
+Test_N(qₑ, qₑ, qₑ, qe, qe);
+Test_N(qₒ, qₒ, qₒ, qo, qo);
+Test_N(qₓ, qₓ, qₓ, qx, qx);
+Test_N(qₔ, qₔ, qₔ, qə, qə);
+Test_N(qₕ, qₕ, qₕ, qh, qh);
+Test_N(qₖ, qₖ, qₖ, qk, qk);
+Test_N(qₗ, qₗ, qₗ, ql, ql);
+Test_N(qₘ, qₘ, qₘ, qm, qm);
+Test_N(qₙ, qₙ, qₙ, qn, qn);
+Test_N(qₚ, qₚ, qₚ, qp, qp);
+Test_N(qₛ, qₛ, qₛ, qs, qs);
+Test_N(qₜ, qₜ, qₜ, qt, qt);
+Test_N(q₨, q₨, q₨, qRs, qRs);
+Test_N(q℀, q℀, q℀, qa/c, qa/c);
+Test_N(q℁, q℁, q℁, qa/s, qa/s);
+Test_N(qℂ, qℂ, qℂ, qC, qC);
+Test_N(q℃, q℃, q℃, q°C, q°C);
+Test_N(q℅, q℅, q℅, qc/o, qc/o);
+Test_N(q℆, q℆, q℆, qc/u, qc/u);
+Test_N(qℇ, qℇ, qℇ, qƐ, qƐ);
+Test_N(q℉, q℉, q℉, q°F, q°F);
+Test_N(qℊ, qℊ, qℊ, qg, qg);
+Test_N(qℋ, qℋ, qℋ, qH, qH);
+Test_N(qℌ, qℌ, qℌ, qH, qH);
+Test_N(qℍ, qℍ, qℍ, qH, qH);
+Test_N(qℎ, qℎ, qℎ, qh, qh);
+Test_N(qℏ, qℏ, qℏ, qħ, qħ);
+Test_N(qℐ, qℐ, qℐ, qI, qI);
+Test_N(qℑ, qℑ, qℑ, qI, qI);
+Test_N(qℒ, qℒ, qℒ, qL, qL);
+Test_N(qℓ, qℓ, qℓ, ql, ql);
+Test_N(qℕ, qℕ, qℕ, qN, qN);
+Test_N(q№, q№, q№, qNo, qNo);
+Test_N(qℙ, qℙ, qℙ, qP, qP);
+Test_N(qℚ, qℚ, qℚ, qQ, qQ);
+Test_N(qℛ, qℛ, qℛ, qR, qR);
+Test_N(qℜ, qℜ, qℜ, qR, qR);
+Test_N(qℝ, qℝ, qℝ, qR, qR);
+Test_N(q℠, q℠, q℠, qSM, qSM);
+Test_N(q℡, q℡, q℡, qTEL, qTEL);
+Test_N(q™, q™, q™, qTM, qTM);
+Test_N(qℤ, qℤ, qℤ, qZ, qZ);
+Test_N(qΩ, qΩ, qΩ, qΩ, qΩ);
+Test_N(qℨ, qℨ, qℨ, qZ, qZ);
+Test_N(qK, qK, qK, qK, qK);
+Test_N(qÅ, qÅ, qÅ, qÅ, qÅ);
+Test_N(qℬ, qℬ, qℬ, qB, qB);
+Test_N(qℭ, qℭ, qℭ, qC, qC);
+Test_N(qℯ, qℯ, qℯ, qe, qe);
+Test_N(qℰ, qℰ, qℰ, qE, qE);
+Test_N(qℱ, qℱ, qℱ, qF, qF);
+Test_N(qℳ, qℳ, qℳ, qM, qM);
+Test_N(qℴ, qℴ, qℴ, qo, qo);
+Test_N(qℵ, qℵ, qℵ, qא, qא);
+Test_N(qℶ, qℶ, qℶ, qב, qב);
+Test_N(qℷ, qℷ, qℷ, qג, qג);
+Test_N(qℸ, qℸ, qℸ, qד, qד);
+Test_N(qℹ, qℹ, qℹ, qi, qi);
+Test_N(q℻, q℻, q℻, qFAX, qFAX);
+Test_N(qℼ, qℼ, qℼ, qπ, qπ);
+Test_N(qℽ, qℽ, qℽ, qγ, qγ);
+Test_N(qℾ, qℾ, qℾ, qΓ, qΓ);
+Test_N(qℿ, qℿ, qℿ, qΠ, qΠ);
+Test_N(q⅀, q⅀, q⅀, q∑, q∑);
+Test_N(qⅅ, qⅅ, qⅅ, qD, qD);
+Test_N(qⅆ, qⅆ, qⅆ, qd, qd);
+Test_N(qⅇ, qⅇ, qⅇ, qe, qe);
+Test_N(qⅈ, qⅈ, qⅈ, qi, qi);
+Test_N(qⅉ, qⅉ, qⅉ, qj, qj);
+Test_N(q⅐, q⅐, q⅐, q1⁄7, q1⁄7);
+Test_N(q⅑, q⅑, q⅑, q1⁄9, q1⁄9);
+Test_N(q⅒, q⅒, q⅒, q1⁄10, q1⁄10);
+Test_N(q⅓, q⅓, q⅓, q1⁄3, q1⁄3);
+Test_N(q⅔, q⅔, q⅔, q2⁄3, q2⁄3);
+Test_N(q⅕, q⅕, q⅕, q1⁄5, q1⁄5);
+Test_N(q⅖, q⅖, q⅖, q2⁄5, q2⁄5);
+Test_N(q⅗, q⅗, q⅗, q3⁄5, q3⁄5);
+Test_N(q⅘, q⅘, q⅘, q4⁄5, q4⁄5);
+Test_N(q⅙, q⅙, q⅙, q1⁄6, q1⁄6);
+Test_N(q⅚, q⅚, q⅚, q5⁄6, q5⁄6);
+Test_N(q⅛, q⅛, q⅛, q1⁄8, q1⁄8);
+Test_N(q⅜, q⅜, q⅜, q3⁄8, q3⁄8);
+Test_N(q⅝, q⅝, q⅝, q5⁄8, q5⁄8);
+Test_N(q⅞, q⅞, q⅞, q7⁄8, q7⁄8);
+Test_N(q⅟, q⅟, q⅟, q1⁄, q1⁄);
+Test_N(qⅠ, qⅠ, qⅠ, qI, qI);
+Test_N(qⅡ, qⅡ, qⅡ, qII, qII);
+Test_N(qⅢ, qⅢ, qⅢ, qIII, qIII);
+Test_N(qⅣ, qⅣ, qⅣ, qIV, qIV);
+Test_N(qⅤ, qⅤ, qⅤ, qV, qV);
+Test_N(qⅥ, qⅥ, qⅥ, qVI, qVI);
+Test_N(qⅦ, qⅦ, qⅦ, qVII, qVII);
+Test_N(qⅧ, qⅧ, qⅧ, qVIII, qVIII);
+Test_N(qⅨ, qⅨ, qⅨ, qIX, qIX);
+Test_N(qⅩ, qⅩ, qⅩ, qX, qX);
+Test_N(qⅪ, qⅪ, qⅪ, qXI, qXI);
+Test_N(qⅫ, qⅫ, qⅫ, qXII, qXII);
+Test_N(qⅬ, qⅬ, qⅬ, qL, qL);
+Test_N(qⅭ, qⅭ, qⅭ, qC, qC);
+Test_N(qⅮ, qⅮ, qⅮ, qD, qD);
+Test_N(qⅯ, qⅯ, qⅯ, qM, qM);
+Test_N(qⅰ, qⅰ, qⅰ, qi, qi);
+Test_N(qⅱ, qⅱ, qⅱ, qii, qii);
+Test_N(qⅲ, qⅲ, qⅲ, qiii, qiii);
+Test_N(qⅳ, qⅳ, qⅳ, qiv, qiv);
+Test_N(qⅴ, qⅴ, qⅴ, qv, qv);
+Test_N(qⅵ, qⅵ, qⅵ, qvi, qvi);
+Test_N(qⅶ, qⅶ, qⅶ, qvii, qvii);
+Test_N(qⅷ, qⅷ, qⅷ, qviii, qviii);
+Test_N(qⅸ, qⅸ, qⅸ, qix, qix);
+Test_N(qⅹ, qⅹ, qⅹ, qx, qx);
+Test_N(qⅺ, qⅺ, qⅺ, qxi, qxi);
+Test_N(qⅻ, qⅻ, qⅻ, qxii, qxii);
+Test_N(qⅼ, qⅼ, qⅼ, ql, ql);
+Test_N(qⅽ, qⅽ, qⅽ, qc, qc);
+Test_N(qⅾ, qⅾ, qⅾ, qd, qd);
+Test_N(qⅿ, qⅿ, qⅿ, qm, qm);
+Test_N(q↉, q↉, q↉, q0⁄3, q0⁄3);
+Test_N(q↚, q↚, q↚, q↚, q↚);
+Test_N(q↛, q↛, q↛, q↛, q↛);
+Test_N(q↮, q↮, q↮, q↮, q↮);
+Test_N(q⇍, q⇍, q⇍, q⇍, q⇍);
+Test_N(q⇎, q⇎, q⇎, q⇎, q⇎);
+Test_N(q⇏, q⇏, q⇏, q⇏, q⇏);
+Test_N(q∄, q∄, q∄, q∄, q∄);
+Test_N(q∉, q∉, q∉, q∉, q∉);
+Test_N(q∌, q∌, q∌, q∌, q∌);
+Test_N(q∤, q∤, q∤, q∤, q∤);
+Test_N(q∦, q∦, q∦, q∦, q∦);
+Test_N(q∬, q∬, q∬, q∫∫, q∫∫);
+Test_N(q∭, q∭, q∭, q∫∫∫, q∫∫∫);
+Test_N(q∯, q∯, q∯, q∮∮, q∮∮);
+Test_N(q∰, q∰, q∰, q∮∮∮, q∮∮∮);
+Test_N(q≁, q≁, q≁, q≁, q≁);
+Test_N(q≄, q≄, q≄, q≄, q≄);
+Test_N(q≇, q≇, q≇, q≇, q≇);
+Test_N(q≉, q≉, q≉, q≉, q≉);
+Test_N(q≠, q≠, q≠, q≠, q≠);
+Test_N(q≢, q≢, q≢, q≢, q≢);
+Test_N(q≭, q≭, q≭, q≭, q≭);
+Test_N(q≮, q≮, q≮, q≮, q≮);
+Test_N(q≯, q≯, q≯, q≯, q≯);
+Test_N(q≰, q≰, q≰, q≰, q≰);
+Test_N(q≱, q≱, q≱, q≱, q≱);
+Test_N(q≴, q≴, q≴, q≴, q≴);
+Test_N(q≵, q≵, q≵, q≵, q≵);
+Test_N(q≸, q≸, q≸, q≸, q≸);
+Test_N(q≹, q≹, q≹, q≹, q≹);
+Test_N(q⊀, q⊀, q⊀, q⊀, q⊀);
+Test_N(q⊁, q⊁, q⊁, q⊁, q⊁);
+Test_N(q⊄, q⊄, q⊄, q⊄, q⊄);
+Test_N(q⊅, q⊅, q⊅, q⊅, q⊅);
+Test_N(q⊈, q⊈, q⊈, q⊈, q⊈);
+Test_N(q⊉, q⊉, q⊉, q⊉, q⊉);
+Test_N(q⊬, q⊬, q⊬, q⊬, q⊬);
+Test_N(q⊭, q⊭, q⊭, q⊭, q⊭);
+Test_N(q⊮, q⊮, q⊮, q⊮, q⊮);
+Test_N(q⊯, q⊯, q⊯, q⊯, q⊯);
+Test_N(q⋠, q⋠, q⋠, q⋠, q⋠);
+Test_N(q⋡, q⋡, q⋡, q⋡, q⋡);
+Test_N(q⋢, q⋢, q⋢, q⋢, q⋢);
+Test_N(q⋣, q⋣, q⋣, q⋣, q⋣);
+Test_N(q⋪, q⋪, q⋪, q⋪, q⋪);
+Test_N(q⋫, q⋫, q⋫, q⋫, q⋫);
+Test_N(q⋬, q⋬, q⋬, q⋬, q⋬);
+Test_N(q⋭, q⋭, q⋭, q⋭, q⋭);
+Test_N(q〈, q〈, q〈, q〈, q〈);
+Test_N(q〉, q〉, q〉, q〉, q〉);
+Test_N(q①, q①, q①, q1, q1);
+Test_N(q②, q②, q②, q2, q2);
+Test_N(q③, q③, q③, q3, q3);
+Test_N(q④, q④, q④, q4, q4);
+Test_N(q⑤, q⑤, q⑤, q5, q5);
+Test_N(q⑥, q⑥, q⑥, q6, q6);
+Test_N(q⑦, q⑦, q⑦, q7, q7);
+Test_N(q⑧, q⑧, q⑧, q8, q8);
+Test_N(q⑨, q⑨, q⑨, q9, q9);
+Test_N(q⑩, q⑩, q⑩, q10, q10);
+Test_N(q⑪, q⑪, q⑪, q11, q11);
+Test_N(q⑫, q⑫, q⑫, q12, q12);
+Test_N(q⑬, q⑬, q⑬, q13, q13);
+Test_N(q⑭, q⑭, q⑭, q14, q14);
+Test_N(q⑮, q⑮, q⑮, q15, q15);
+Test_N(q⑯, q⑯, q⑯, q16, q16);
+Test_N(q⑰, q⑰, q⑰, q17, q17);
+Test_N(q⑱, q⑱, q⑱, q18, q18);
+Test_N(q⑲, q⑲, q⑲, q19, q19);
+Test_N(q⑳, q⑳, q⑳, q20, q20);
+Test_N(q⑴, q⑴, q⑴, q(1), q(1));
+Test_N(q⑵, q⑵, q⑵, q(2), q(2));
+Test_N(q⑶, q⑶, q⑶, q(3), q(3));
+Test_N(q⑷, q⑷, q⑷, q(4), q(4));
+Test_N(q⑸, q⑸, q⑸, q(5), q(5));
+Test_N(q⑹, q⑹, q⑹, q(6), q(6));
+Test_N(q⑺, q⑺, q⑺, q(7), q(7));
+Test_N(q⑻, q⑻, q⑻, q(8), q(8));
+Test_N(q⑼, q⑼, q⑼, q(9), q(9));
+Test_N(q⑽, q⑽, q⑽, q(10), q(10));
+Test_N(q⑾, q⑾, q⑾, q(11), q(11));
+Test_N(q⑿, q⑿, q⑿, q(12), q(12));
+Test_N(q⒀, q⒀, q⒀, q(13), q(13));
+Test_N(q⒁, q⒁, q⒁, q(14), q(14));
+Test_N(q⒂, q⒂, q⒂, q(15), q(15));
+Test_N(q⒃, q⒃, q⒃, q(16), q(16));
+Test_N(q⒄, q⒄, q⒄, q(17), q(17));
+Test_N(q⒅, q⒅, q⒅, q(18), q(18));
+Test_N(q⒆, q⒆, q⒆, q(19), q(19));
+Test_N(q⒇, q⒇, q⒇, q(20), q(20));
+Test_N(q⒈, q⒈, q⒈, q1., q1.);
+Test_N(q⒉, q⒉, q⒉, q2., q2.);
+Test_N(q⒊, q⒊, q⒊, q3., q3.);
+Test_N(q⒋, q⒋, q⒋, q4., q4.);
+Test_N(q⒌, q⒌, q⒌, q5., q5.);
+Test_N(q⒍, q⒍, q⒍, q6., q6.);
+Test_N(q⒎, q⒎, q⒎, q7., q7.);
+Test_N(q⒏, q⒏, q⒏, q8., q8.);
+Test_N(q⒐, q⒐, q⒐, q9., q9.);
+Test_N(q⒑, q⒑, q⒑, q10., q10.);
+Test_N(q⒒, q⒒, q⒒, q11., q11.);
+Test_N(q⒓, q⒓, q⒓, q12., q12.);
+Test_N(q⒔, q⒔, q⒔, q13., q13.);
+Test_N(q⒕, q⒕, q⒕, q14., q14.);
+Test_N(q⒖, q⒖, q⒖, q15., q15.);
+Test_N(q⒗, q⒗, q⒗, q16., q16.);
+Test_N(q⒘, q⒘, q⒘, q17., q17.);
+Test_N(q⒙, q⒙, q⒙, q18., q18.);
+Test_N(q⒚, q⒚, q⒚, q19., q19.);
+Test_N(q⒛, q⒛, q⒛, q20., q20.);
+Test_N(q⒜, q⒜, q⒜, q(a), q(a));
+Test_N(q⒝, q⒝, q⒝, q(b), q(b));
+Test_N(q⒞, q⒞, q⒞, q(c), q(c));
+Test_N(q⒟, q⒟, q⒟, q(d), q(d));
+Test_N(q⒠, q⒠, q⒠, q(e), q(e));
+Test_N(q⒡, q⒡, q⒡, q(f), q(f));
+Test_N(q⒢, q⒢, q⒢, q(g), q(g));
+Test_N(q⒣, q⒣, q⒣, q(h), q(h));
+Test_N(q⒤, q⒤, q⒤, q(i), q(i));
+Test_N(q⒥, q⒥, q⒥, q(j), q(j));
+Test_N(q⒦, q⒦, q⒦, q(k), q(k));
+Test_N(q⒧, q⒧, q⒧, q(l), q(l));
+Test_N(q⒨, q⒨, q⒨, q(m), q(m));
+Test_N(q⒩, q⒩, q⒩, q(n), q(n));
+Test_N(q⒪, q⒪, q⒪, q(o), q(o));
+Test_N(q⒫, q⒫, q⒫, q(p), q(p));
+Test_N(q⒬, q⒬, q⒬, q(q), q(q));
+Test_N(q⒭, q⒭, q⒭, q(r), q(r));
+Test_N(q⒮, q⒮, q⒮, q(s), q(s));
+Test_N(q⒯, q⒯, q⒯, q(t), q(t));
+Test_N(q⒰, q⒰, q⒰, q(u), q(u));
+Test_N(q⒱, q⒱, q⒱, q(v), q(v));
+Test_N(q⒲, q⒲, q⒲, q(w), q(w));
+Test_N(q⒳, q⒳, q⒳, q(x), q(x));
+Test_N(q⒴, q⒴, q⒴, q(y), q(y));
+Test_N(q⒵, q⒵, q⒵, q(z), q(z));
+Test_N(qⒶ, qⒶ, qⒶ, qA, qA);
+Test_N(qⒷ, qⒷ, qⒷ, qB, qB);
+Test_N(qⒸ, qⒸ, qⒸ, qC, qC);
+Test_N(qⒹ, qⒹ, qⒹ, qD, qD);
+Test_N(qⒺ, qⒺ, qⒺ, qE, qE);
+Test_N(qⒻ, qⒻ, qⒻ, qF, qF);
+Test_N(qⒼ, qⒼ, qⒼ, qG, qG);
+Test_N(qⒽ, qⒽ, qⒽ, qH, qH);
+Test_N(qⒾ, qⒾ, qⒾ, qI, qI);
+Test_N(qⒿ, qⒿ, qⒿ, qJ, qJ);
+Test_N(qⓀ, qⓀ, qⓀ, qK, qK);
+Test_N(qⓁ, qⓁ, qⓁ, qL, qL);
+Test_N(qⓂ, qⓂ, qⓂ, qM, qM);
+Test_N(qⓃ, qⓃ, qⓃ, qN, qN);
+Test_N(qⓄ, qⓄ, qⓄ, qO, qO);
+Test_N(qⓅ, qⓅ, qⓅ, qP, qP);
+Test_N(qⓆ, qⓆ, qⓆ, qQ, qQ);
+Test_N(qⓇ, qⓇ, qⓇ, qR, qR);
+Test_N(qⓈ, qⓈ, qⓈ, qS, qS);
+Test_N(qⓉ, qⓉ, qⓉ, qT, qT);
+Test_N(qⓊ, qⓊ, qⓊ, qU, qU);
+Test_N(qⓋ, qⓋ, qⓋ, qV, qV);
+Test_N(qⓌ, qⓌ, qⓌ, qW, qW);
+Test_N(qⓍ, qⓍ, qⓍ, qX, qX);
+Test_N(qⓎ, qⓎ, qⓎ, qY, qY);
+Test_N(qⓏ, qⓏ, qⓏ, qZ, qZ);
+Test_N(qⓐ, qⓐ, qⓐ, qa, qa);
+Test_N(qⓑ, qⓑ, qⓑ, qb, qb);
+Test_N(qⓒ, qⓒ, qⓒ, qc, qc);
+Test_N(qⓓ, qⓓ, qⓓ, qd, qd);
+Test_N(qⓔ, qⓔ, qⓔ, qe, qe);
+Test_N(qⓕ, qⓕ, qⓕ, qf, qf);
+Test_N(qⓖ, qⓖ, qⓖ, qg, qg);
+Test_N(qⓗ, qⓗ, qⓗ, qh, qh);
+Test_N(qⓘ, qⓘ, qⓘ, qi, qi);
+Test_N(qⓙ, qⓙ, qⓙ, qj, qj);
+Test_N(qⓚ, qⓚ, qⓚ, qk, qk);
+Test_N(qⓛ, qⓛ, qⓛ, ql, ql);
+Test_N(qⓜ, qⓜ, qⓜ, qm, qm);
+Test_N(qⓝ, qⓝ, qⓝ, qn, qn);
+Test_N(qⓞ, qⓞ, qⓞ, qo, qo);
+Test_N(qⓟ, qⓟ, qⓟ, qp, qp);
+Test_N(qⓠ, qⓠ, qⓠ, qq, qq);
+Test_N(qⓡ, qⓡ, qⓡ, qr, qr);
+Test_N(qⓢ, qⓢ, qⓢ, qs, qs);
+Test_N(qⓣ, qⓣ, qⓣ, qt, qt);
+Test_N(qⓤ, qⓤ, qⓤ, qu, qu);
+Test_N(qⓥ, qⓥ, qⓥ, qv, qv);
+Test_N(qⓦ, qⓦ, qⓦ, qw, qw);
+Test_N(qⓧ, qⓧ, qⓧ, qx, qx);
+Test_N(qⓨ, qⓨ, qⓨ, qy, qy);
+Test_N(qⓩ, qⓩ, qⓩ, qz, qz);
+Test_N(q⓪, q⓪, q⓪, q0, q0);
+Test_N(q⨌, q⨌, q⨌, q∫∫∫∫, q∫∫∫∫);
+Test_N(q⩴, q⩴, q⩴, q::=, q::=);
+Test_N(q⩵, q⩵, q⩵, q==, q==);
+Test_N(q⩶, q⩶, q⩶, q===, q===);
+Test_N(q⫝̸, q⫝̸, q⫝̸, q⫝̸, q⫝̸);
+Test_N(qⱼ, qⱼ, qⱼ, qj, qj);
+Test_N(qⱽ, qⱽ, qⱽ, qV, qV);
+Test_N(qⵯ, qⵯ, qⵯ, qⵡ, qⵡ);
+Test_N(q⺟, q⺟, q⺟, q母, q母);
+Test_N(q⻳, q⻳, q⻳, q龟, q龟);
+Test_N(q⼀, q⼀, q⼀, q一, q一);
+Test_N(q⼁, q⼁, q⼁, q丨, q丨);
+Test_N(q⼂, q⼂, q⼂, q丶, q丶);
+Test_N(q⼃, q⼃, q⼃, q丿, q丿);
+Test_N(q⼄, q⼄, q⼄, q乙, q乙);
+Test_N(q⼅, q⼅, q⼅, q亅, q亅);
+Test_N(q⼆, q⼆, q⼆, q二, q二);
+Test_N(q⼇, q⼇, q⼇, q亠, q亠);
+Test_N(q⼈, q⼈, q⼈, q人, q人);
+Test_N(q⼉, q⼉, q⼉, q儿, q儿);
+Test_N(q⼊, q⼊, q⼊, q入, q入);
+Test_N(q⼋, q⼋, q⼋, q八, q八);
+Test_N(q⼌, q⼌, q⼌, q冂, q冂);
+Test_N(q⼍, q⼍, q⼍, q冖, q冖);
+Test_N(q⼎, q⼎, q⼎, q冫, q冫);
+Test_N(q⼏, q⼏, q⼏, q几, q几);
+Test_N(q⼐, q⼐, q⼐, q凵, q凵);
+Test_N(q⼑, q⼑, q⼑, q刀, q刀);
+Test_N(q⼒, q⼒, q⼒, q力, q力);
+Test_N(q⼓, q⼓, q⼓, q勹, q勹);
+Test_N(q⼔, q⼔, q⼔, q匕, q匕);
+Test_N(q⼕, q⼕, q⼕, q匚, q匚);
+Test_N(q⼖, q⼖, q⼖, q匸, q匸);
+Test_N(q⼗, q⼗, q⼗, q十, q十);
+Test_N(q⼘, q⼘, q⼘, q卜, q卜);
+Test_N(q⼙, q⼙, q⼙, q卩, q卩);
+Test_N(q⼚, q⼚, q⼚, q厂, q厂);
+Test_N(q⼛, q⼛, q⼛, q厶, q厶);
+Test_N(q⼜, q⼜, q⼜, q又, q又);
+Test_N(q⼝, q⼝, q⼝, q口, q口);
+Test_N(q⼞, q⼞, q⼞, q囗, q囗);
+Test_N(q⼟, q⼟, q⼟, q土, q土);
+Test_N(q⼠, q⼠, q⼠, q士, q士);
+Test_N(q⼡, q⼡, q⼡, q夂, q夂);
+Test_N(q⼢, q⼢, q⼢, q夊, q夊);
+Test_N(q⼣, q⼣, q⼣, q夕, q夕);
+Test_N(q⼤, q⼤, q⼤, q大, q大);
+Test_N(q⼥, q⼥, q⼥, q女, q女);
+Test_N(q⼦, q⼦, q⼦, q子, q子);
+Test_N(q⼧, q⼧, q⼧, q宀, q宀);
+Test_N(q⼨, q⼨, q⼨, q寸, q寸);
+Test_N(q⼩, q⼩, q⼩, q小, q小);
+Test_N(q⼪, q⼪, q⼪, q尢, q尢);
+Test_N(q⼫, q⼫, q⼫, q尸, q尸);
+Test_N(q⼬, q⼬, q⼬, q屮, q屮);
+Test_N(q⼭, q⼭, q⼭, q山, q山);
+Test_N(q⼮, q⼮, q⼮, q巛, q巛);
+Test_N(q⼯, q⼯, q⼯, q工, q工);
+Test_N(q⼰, q⼰, q⼰, q己, q己);
+Test_N(q⼱, q⼱, q⼱, q巾, q巾);
+Test_N(q⼲, q⼲, q⼲, q干, q干);
+Test_N(q⼳, q⼳, q⼳, q幺, q幺);
+Test_N(q⼴, q⼴, q⼴, q广, q广);
+Test_N(q⼵, q⼵, q⼵, q廴, q廴);
+Test_N(q⼶, q⼶, q⼶, q廾, q廾);
+Test_N(q⼷, q⼷, q⼷, q弋, q弋);
+Test_N(q⼸, q⼸, q⼸, q弓, q弓);
+Test_N(q⼹, q⼹, q⼹, q彐, q彐);
+Test_N(q⼺, q⼺, q⼺, q彡, q彡);
+Test_N(q⼻, q⼻, q⼻, q彳, q彳);
+Test_N(q⼼, q⼼, q⼼, q心, q心);
+Test_N(q⼽, q⼽, q⼽, q戈, q戈);
+Test_N(q⼾, q⼾, q⼾, q戶, q戶);
+Test_N(q⼿, q⼿, q⼿, q手, q手);
+Test_N(q⽀, q⽀, q⽀, q支, q支);
+Test_N(q⽁, q⽁, q⽁, q攴, q攴);
+Test_N(q⽂, q⽂, q⽂, q文, q文);
+Test_N(q⽃, q⽃, q⽃, q斗, q斗);
+Test_N(q⽄, q⽄, q⽄, q斤, q斤);
+Test_N(q⽅, q⽅, q⽅, q方, q方);
+Test_N(q⽆, q⽆, q⽆, q无, q无);
+Test_N(q⽇, q⽇, q⽇, q日, q日);
+Test_N(q⽈, q⽈, q⽈, q曰, q曰);
+Test_N(q⽉, q⽉, q⽉, q月, q月);
+Test_N(q⽊, q⽊, q⽊, q木, q木);
+Test_N(q⽋, q⽋, q⽋, q欠, q欠);
+Test_N(q⽌, q⽌, q⽌, q止, q止);
+Test_N(q⽍, q⽍, q⽍, q歹, q歹);
+Test_N(q⽎, q⽎, q⽎, q殳, q殳);
+Test_N(q⽏, q⽏, q⽏, q毋, q毋);
+Test_N(q⽐, q⽐, q⽐, q比, q比);
+Test_N(q⽑, q⽑, q⽑, q毛, q毛);
+Test_N(q⽒, q⽒, q⽒, q氏, q氏);
+Test_N(q⽓, q⽓, q⽓, q气, q气);
+Test_N(q⽔, q⽔, q⽔, q水, q水);
+Test_N(q⽕, q⽕, q⽕, q火, q火);
+Test_N(q⽖, q⽖, q⽖, q爪, q爪);
+Test_N(q⽗, q⽗, q⽗, q父, q父);
+Test_N(q⽘, q⽘, q⽘, q爻, q爻);
+Test_N(q⽙, q⽙, q⽙, q爿, q爿);
+Test_N(q⽚, q⽚, q⽚, q片, q片);
+Test_N(q⽛, q⽛, q⽛, q牙, q牙);
+Test_N(q⽜, q⽜, q⽜, q牛, q牛);
+Test_N(q⽝, q⽝, q⽝, q犬, q犬);
+Test_N(q⽞, q⽞, q⽞, q玄, q玄);
+Test_N(q⽟, q⽟, q⽟, q玉, q玉);
+Test_N(q⽠, q⽠, q⽠, q瓜, q瓜);
+Test_N(q⽡, q⽡, q⽡, q瓦, q瓦);
+Test_N(q⽢, q⽢, q⽢, q甘, q甘);
+Test_N(q⽣, q⽣, q⽣, q生, q生);
+Test_N(q⽤, q⽤, q⽤, q用, q用);
+Test_N(q⽥, q⽥, q⽥, q田, q田);
+Test_N(q⽦, q⽦, q⽦, q疋, q疋);
+Test_N(q⽧, q⽧, q⽧, q疒, q疒);
+Test_N(q⽨, q⽨, q⽨, q癶, q癶);
+Test_N(q⽩, q⽩, q⽩, q白, q白);
+Test_N(q⽪, q⽪, q⽪, q皮, q皮);
+Test_N(q⽫, q⽫, q⽫, q皿, q皿);
+Test_N(q⽬, q⽬, q⽬, q目, q目);
+Test_N(q⽭, q⽭, q⽭, q矛, q矛);
+Test_N(q⽮, q⽮, q⽮, q矢, q矢);
+Test_N(q⽯, q⽯, q⽯, q石, q石);
+Test_N(q⽰, q⽰, q⽰, q示, q示);
+Test_N(q⽱, q⽱, q⽱, q禸, q禸);
+Test_N(q⽲, q⽲, q⽲, q禾, q禾);
+Test_N(q⽳, q⽳, q⽳, q穴, q穴);
+Test_N(q⽴, q⽴, q⽴, q立, q立);
+Test_N(q⽵, q⽵, q⽵, q竹, q竹);
+Test_N(q⽶, q⽶, q⽶, q米, q米);
+Test_N(q⽷, q⽷, q⽷, q糸, q糸);
+Test_N(q⽸, q⽸, q⽸, q缶, q缶);
+Test_N(q⽹, q⽹, q⽹, q网, q网);
+Test_N(q⽺, q⽺, q⽺, q羊, q羊);
+Test_N(q⽻, q⽻, q⽻, q羽, q羽);
+Test_N(q⽼, q⽼, q⽼, q老, q老);
+Test_N(q⽽, q⽽, q⽽, q而, q而);
+Test_N(q⽾, q⽾, q⽾, q耒, q耒);
+Test_N(q⽿, q⽿, q⽿, q耳, q耳);
+Test_N(q⾀, q⾀, q⾀, q聿, q聿);
+Test_N(q⾁, q⾁, q⾁, q肉, q肉);
+Test_N(q⾂, q⾂, q⾂, q臣, q臣);
+Test_N(q⾃, q⾃, q⾃, q自, q自);
+Test_N(q⾄, q⾄, q⾄, q至, q至);
+Test_N(q⾅, q⾅, q⾅, q臼, q臼);
+Test_N(q⾆, q⾆, q⾆, q舌, q舌);
+Test_N(q⾇, q⾇, q⾇, q舛, q舛);
+Test_N(q⾈, q⾈, q⾈, q舟, q舟);
+Test_N(q⾉, q⾉, q⾉, q艮, q艮);
+Test_N(q⾊, q⾊, q⾊, q色, q色);
+Test_N(q⾋, q⾋, q⾋, q艸, q艸);
+Test_N(q⾌, q⾌, q⾌, q虍, q虍);
+Test_N(q⾍, q⾍, q⾍, q虫, q虫);
+Test_N(q⾎, q⾎, q⾎, q血, q血);
+Test_N(q⾏, q⾏, q⾏, q行, q行);
+Test_N(q⾐, q⾐, q⾐, q衣, q衣);
+Test_N(q⾑, q⾑, q⾑, q襾, q襾);
+Test_N(q⾒, q⾒, q⾒, q見, q見);
+Test_N(q⾓, q⾓, q⾓, q角, q角);
+Test_N(q⾔, q⾔, q⾔, q言, q言);
+Test_N(q⾕, q⾕, q⾕, q谷, q谷);
+Test_N(q⾖, q⾖, q⾖, q豆, q豆);
+Test_N(q⾗, q⾗, q⾗, q豕, q豕);
+Test_N(q⾘, q⾘, q⾘, q豸, q豸);
+Test_N(q⾙, q⾙, q⾙, q貝, q貝);
+Test_N(q⾚, q⾚, q⾚, q赤, q赤);
+Test_N(q⾛, q⾛, q⾛, q走, q走);
+Test_N(q⾜, q⾜, q⾜, q足, q足);
+Test_N(q⾝, q⾝, q⾝, q身, q身);
+Test_N(q⾞, q⾞, q⾞, q車, q車);
+Test_N(q⾟, q⾟, q⾟, q辛, q辛);
+Test_N(q⾠, q⾠, q⾠, q辰, q辰);
+Test_N(q⾡, q⾡, q⾡, q辵, q辵);
+Test_N(q⾢, q⾢, q⾢, q邑, q邑);
+Test_N(q⾣, q⾣, q⾣, q酉, q酉);
+Test_N(q⾤, q⾤, q⾤, q釆, q釆);
+Test_N(q⾥, q⾥, q⾥, q里, q里);
+Test_N(q⾦, q⾦, q⾦, q金, q金);
+Test_N(q⾧, q⾧, q⾧, q長, q長);
+Test_N(q⾨, q⾨, q⾨, q門, q門);
+Test_N(q⾩, q⾩, q⾩, q阜, q阜);
+Test_N(q⾪, q⾪, q⾪, q隶, q隶);
+Test_N(q⾫, q⾫, q⾫, q隹, q隹);
+Test_N(q⾬, q⾬, q⾬, q雨, q雨);
+Test_N(q⾭, q⾭, q⾭, q靑, q靑);
+Test_N(q⾮, q⾮, q⾮, q非, q非);
+Test_N(q⾯, q⾯, q⾯, q面, q面);
+Test_N(q⾰, q⾰, q⾰, q革, q革);
+Test_N(q⾱, q⾱, q⾱, q韋, q韋);
+Test_N(q⾲, q⾲, q⾲, q韭, q韭);
+Test_N(q⾳, q⾳, q⾳, q音, q音);
+Test_N(q⾴, q⾴, q⾴, q頁, q頁);
+Test_N(q⾵, q⾵, q⾵, q風, q風);
+Test_N(q⾶, q⾶, q⾶, q飛, q飛);
+Test_N(q⾷, q⾷, q⾷, q食, q食);
+Test_N(q⾸, q⾸, q⾸, q首, q首);
+Test_N(q⾹, q⾹, q⾹, q香, q香);
+Test_N(q⾺, q⾺, q⾺, q馬, q馬);
+Test_N(q⾻, q⾻, q⾻, q骨, q骨);
+Test_N(q⾼, q⾼, q⾼, q高, q高);
+Test_N(q⾽, q⾽, q⾽, q髟, q髟);
+Test_N(q⾾, q⾾, q⾾, q鬥, q鬥);
+Test_N(q⾿, q⾿, q⾿, q鬯, q鬯);
+Test_N(q⿀, q⿀, q⿀, q鬲, q鬲);
+Test_N(q⿁, q⿁, q⿁, q鬼, q鬼);
+Test_N(q⿂, q⿂, q⿂, q魚, q魚);
+Test_N(q⿃, q⿃, q⿃, q鳥, q鳥);
+Test_N(q⿄, q⿄, q⿄, q鹵, q鹵);
+Test_N(q⿅, q⿅, q⿅, q鹿, q鹿);
+Test_N(q⿆, q⿆, q⿆, q麥, q麥);
+Test_N(q⿇, q⿇, q⿇, q麻, q麻);
+Test_N(q⿈, q⿈, q⿈, q黃, q黃);
+Test_N(q⿉, q⿉, q⿉, q黍, q黍);
+Test_N(q⿊, q⿊, q⿊, q黑, q黑);
+Test_N(q⿋, q⿋, q⿋, q黹, q黹);
+Test_N(q⿌, q⿌, q⿌, q黽, q黽);
+Test_N(q⿍, q⿍, q⿍, q鼎, q鼎);
+Test_N(q⿎, q⿎, q⿎, q鼓, q鼓);
+Test_N(q⿏, q⿏, q⿏, q鼠, q鼠);
+Test_N(q⿐, q⿐, q⿐, q鼻, q鼻);
+Test_N(q⿑, q⿑, q⿑, q齊, q齊);
+Test_N(q⿒, q⿒, q⿒, q齒, q齒);
+Test_N(q⿓, q⿓, q⿓, q龍, q龍);
+Test_N(q⿔, q⿔, q⿔, q龜, q龜);
+Test_N(q⿕, q⿕, q⿕, q龠, q龠);
+Test_N(q , q , q , q , q );
+Test_N(q〶, q〶, q〶, q〒, q〒);
+Test_N(q〸, q〸, q〸, q十, q十);
+Test_N(q〹, q〹, q〹, q卄, q卄);
+Test_N(q〺, q〺, q〺, q卅, q卅);
+Test_N(qが, qが, qが, qが, qが);
+Test_N(qぎ, qぎ, qぎ, qぎ, qぎ);
+Test_N(qぐ, qぐ, qぐ, qぐ, qぐ);
+Test_N(qげ, qげ, qげ, qげ, qげ);
+Test_N(qご, qご, qご, qご, qご);
+Test_N(qざ, qざ, qざ, qざ, qざ);
+Test_N(qじ, qじ, qじ, qじ, qじ);
+Test_N(qず, qず, qず, qず, qず);
+Test_N(qぜ, qぜ, qぜ, qぜ, qぜ);
+Test_N(qぞ, qぞ, qぞ, qぞ, qぞ);
+Test_N(qだ, qだ, qだ, qだ, qだ);
+Test_N(qぢ, qぢ, qぢ, qぢ, qぢ);
+Test_N(qづ, qづ, qづ, qづ, qづ);
+Test_N(qで, qで, qで, qで, qで);
+Test_N(qど, qど, qど, qど, qど);
+Test_N(qば, qば, qば, qば, qば);
+Test_N(qぱ, qぱ, qぱ, qぱ, qぱ);
+Test_N(qび, qび, qび, qび, qび);
+Test_N(qぴ, qぴ, qぴ, qぴ, qぴ);
+Test_N(qぶ, qぶ, qぶ, qぶ, qぶ);
+Test_N(qぷ, qぷ, qぷ, qぷ, qぷ);
+Test_N(qべ, qべ, qべ, qべ, qべ);
+Test_N(qぺ, qぺ, qぺ, qぺ, qぺ);
+Test_N(qぼ, qぼ, qぼ, qぼ, qぼ);
+Test_N(qぽ, qぽ, qぽ, qぽ, qぽ);
+Test_N(qゔ, qゔ, qゔ, qゔ, qゔ);
+Test_N(q゛, q゛, q゛, q ゙, q ゙);
+Test_N(q゜, q゜, q゜, q ゚, q ゚);
+Test_N(qゞ, qゞ, qゞ, qゞ, qゞ);
+Test_N(qゟ, qゟ, qゟ, qより, qより);
+Test_N(qガ, qガ, qガ, qガ, qガ);
+Test_N(qギ, qギ, qギ, qギ, qギ);
+Test_N(qグ, qグ, qグ, qグ, qグ);
+Test_N(qゲ, qゲ, qゲ, qゲ, qゲ);
+Test_N(qゴ, qゴ, qゴ, qゴ, qゴ);
+Test_N(qザ, qザ, qザ, qザ, qザ);
+Test_N(qジ, qジ, qジ, qジ, qジ);
+Test_N(qズ, qズ, qズ, qズ, qズ);
+Test_N(qゼ, qゼ, qゼ, qゼ, qゼ);
+Test_N(qゾ, qゾ, qゾ, qゾ, qゾ);
+Test_N(qダ, qダ, qダ, qダ, qダ);
+Test_N(qヂ, qヂ, qヂ, qヂ, qヂ);
+Test_N(qヅ, qヅ, qヅ, qヅ, qヅ);
+Test_N(qデ, qデ, qデ, qデ, qデ);
+Test_N(qド, qド, qド, qド, qド);
+Test_N(qバ, qバ, qバ, qバ, qバ);
+Test_N(qパ, qパ, qパ, qパ, qパ);
+Test_N(qビ, qビ, qビ, qビ, qビ);
+Test_N(qピ, qピ, qピ, qピ, qピ);
+Test_N(qブ, qブ, qブ, qブ, qブ);
+Test_N(qプ, qプ, qプ, qプ, qプ);
+Test_N(qベ, qベ, qベ, qベ, qベ);
+Test_N(qペ, qペ, qペ, qペ, qペ);
+Test_N(qボ, qボ, qボ, qボ, qボ);
+Test_N(qポ, qポ, qポ, qポ, qポ);
+Test_N(qヴ, qヴ, qヴ, qヴ, qヴ);
+Test_N(qヷ, qヷ, qヷ, qヷ, qヷ);
+Test_N(qヸ, qヸ, qヸ, qヸ, qヸ);
+Test_N(qヹ, qヹ, qヹ, qヹ, qヹ);
+Test_N(qヺ, qヺ, qヺ, qヺ, qヺ);
+Test_N(qヾ, qヾ, qヾ, qヾ, qヾ);
+Test_N(qヿ, qヿ, qヿ, qコト, qコト);
+Test_N(qㄱ, qㄱ, qㄱ, qᄀ, qᄀ);
+Test_N(qㄲ, qㄲ, qㄲ, qᄁ, qᄁ);
+Test_N(qㄳ, qㄳ, qㄳ, qᆪ, qᆪ);
+Test_N(qㄴ, qㄴ, qㄴ, qᄂ, qᄂ);
+Test_N(qㄵ, qㄵ, qㄵ, qᆬ, qᆬ);
+Test_N(qㄶ, qㄶ, qㄶ, qᆭ, qᆭ);
+Test_N(qㄷ, qㄷ, qㄷ, qᄃ, qᄃ);
+Test_N(qㄸ, qㄸ, qㄸ, qᄄ, qᄄ);
+Test_N(qㄹ, qㄹ, qㄹ, qᄅ, qᄅ);
+Test_N(qㄺ, qㄺ, qㄺ, qᆰ, qᆰ);
+Test_N(qㄻ, qㄻ, qㄻ, qᆱ, qᆱ);
+Test_N(qㄼ, qㄼ, qㄼ, qᆲ, qᆲ);
+Test_N(qㄽ, qㄽ, qㄽ, qᆳ, qᆳ);
+Test_N(qㄾ, qㄾ, qㄾ, qᆴ, qᆴ);
+Test_N(qㄿ, qㄿ, qㄿ, qᆵ, qᆵ);
+Test_N(qㅀ, qㅀ, qㅀ, qᄚ, qᄚ);
+Test_N(qㅁ, qㅁ, qㅁ, qᄆ, qᄆ);
+Test_N(qㅂ, qㅂ, qㅂ, qᄇ, qᄇ);
+Test_N(qㅃ, qㅃ, qㅃ, qᄈ, qᄈ);
+Test_N(qㅄ, qㅄ, qㅄ, qᄡ, qᄡ);
+Test_N(qㅅ, qㅅ, qㅅ, qᄉ, qᄉ);
+Test_N(qㅆ, qㅆ, qㅆ, qᄊ, qᄊ);
+Test_N(qㅇ, qㅇ, qㅇ, qᄋ, qᄋ);
+Test_N(qㅈ, qㅈ, qㅈ, qᄌ, qᄌ);
+Test_N(qㅉ, qㅉ, qㅉ, qᄍ, qᄍ);
+Test_N(qㅊ, qㅊ, qㅊ, qᄎ, qᄎ);
+Test_N(qㅋ, qㅋ, qㅋ, qᄏ, qᄏ);
+Test_N(qㅌ, qㅌ, qㅌ, qᄐ, qᄐ);
+Test_N(qㅍ, qㅍ, qㅍ, qᄑ, qᄑ);
+Test_N(qㅎ, qㅎ, qㅎ, qᄒ, qᄒ);
+Test_N(qㅏ, qㅏ, qㅏ, qᅡ, qᅡ);
+Test_N(qㅐ, qㅐ, qㅐ, qᅢ, qᅢ);
+Test_N(qㅑ, qㅑ, qㅑ, qᅣ, qᅣ);
+Test_N(qㅒ, qㅒ, qㅒ, qᅤ, qᅤ);
+Test_N(qㅓ, qㅓ, qㅓ, qᅥ, qᅥ);
+Test_N(qㅔ, qㅔ, qㅔ, qᅦ, qᅦ);
+Test_N(qㅕ, qㅕ, qㅕ, qᅧ, qᅧ);
+Test_N(qㅖ, qㅖ, qㅖ, qᅨ, qᅨ);
+Test_N(qㅗ, qㅗ, qㅗ, qᅩ, qᅩ);
+Test_N(qㅘ, qㅘ, qㅘ, qᅪ, qᅪ);
+Test_N(qㅙ, qㅙ, qㅙ, qᅫ, qᅫ);
+Test_N(qㅚ, qㅚ, qㅚ, qᅬ, qᅬ);
+Test_N(qㅛ, qㅛ, qㅛ, qᅭ, qᅭ);
+Test_N(qㅜ, qㅜ, qㅜ, qᅮ, qᅮ);
+Test_N(qㅝ, qㅝ, qㅝ, qᅯ, qᅯ);
+Test_N(qㅞ, qㅞ, qㅞ, qᅰ, qᅰ);
+Test_N(qㅟ, qㅟ, qㅟ, qᅱ, qᅱ);
+Test_N(qㅠ, qㅠ, qㅠ, qᅲ, qᅲ);
+Test_N(qㅡ, qㅡ, qㅡ, qᅳ, qᅳ);
+Test_N(qㅢ, qㅢ, qㅢ, qᅴ, qᅴ);
+Test_N(qㅣ, qㅣ, qㅣ, qᅵ, qᅵ);
+Test_N(qㅤ, qㅤ, qㅤ, qᅠ, qᅠ);
+Test_N(qㅥ, qㅥ, qㅥ, qᄔ, qᄔ);
+Test_N(qㅦ, qㅦ, qㅦ, qᄕ, qᄕ);
+Test_N(qㅧ, qㅧ, qㅧ, qᇇ, qᇇ);
+Test_N(qㅨ, qㅨ, qㅨ, qᇈ, qᇈ);
+Test_N(qㅩ, qㅩ, qㅩ, qᇌ, qᇌ);
+Test_N(qㅪ, qㅪ, qㅪ, qᇎ, qᇎ);
+Test_N(qㅫ, qㅫ, qㅫ, qᇓ, qᇓ);
+Test_N(qㅬ, qㅬ, qㅬ, qᇗ, qᇗ);
+Test_N(qㅭ, qㅭ, qㅭ, qᇙ, qᇙ);
+Test_N(qㅮ, qㅮ, qㅮ, qᄜ, qᄜ);
+Test_N(qㅯ, qㅯ, qㅯ, qᇝ, qᇝ);
+Test_N(qㅰ, qㅰ, qㅰ, qᇟ, qᇟ);
+Test_N(qㅱ, qㅱ, qㅱ, qᄝ, qᄝ);
+Test_N(qㅲ, qㅲ, qㅲ, qᄞ, qᄞ);
+Test_N(qㅳ, qㅳ, qㅳ, qᄠ, qᄠ);
+Test_N(qㅴ, qㅴ, qㅴ, qᄢ, qᄢ);
+Test_N(qㅵ, qㅵ, qㅵ, qᄣ, qᄣ);
+Test_N(qㅶ, qㅶ, qㅶ, qᄧ, qᄧ);
+Test_N(qㅷ, qㅷ, qㅷ, qᄩ, qᄩ);
+Test_N(qㅸ, qㅸ, qㅸ, qᄫ, qᄫ);
+Test_N(qㅹ, qㅹ, qㅹ, qᄬ, qᄬ);
+Test_N(qㅺ, qㅺ, qㅺ, qᄭ, qᄭ);
+Test_N(qㅻ, qㅻ, qㅻ, qᄮ, qᄮ);
+Test_N(qㅼ, qㅼ, qㅼ, qᄯ, qᄯ);
+Test_N(qㅽ, qㅽ, qㅽ, qᄲ, qᄲ);
+Test_N(qㅾ, qㅾ, qㅾ, qᄶ, qᄶ);
+Test_N(qㅿ, qㅿ, qㅿ, qᅀ, qᅀ);
+Test_N(qㆀ, qㆀ, qㆀ, qᅇ, qᅇ);
+Test_N(qㆁ, qㆁ, qㆁ, qᅌ, qᅌ);
+Test_N(qㆂ, qㆂ, qㆂ, qᇱ, qᇱ);
+Test_N(qㆃ, qㆃ, qㆃ, qᇲ, qᇲ);
+Test_N(qㆄ, qㆄ, qㆄ, qᅗ, qᅗ);
+Test_N(qㆅ, qㆅ, qㆅ, qᅘ, qᅘ);
+Test_N(qㆆ, qㆆ, qㆆ, qᅙ, qᅙ);
+Test_N(qㆇ, qㆇ, qㆇ, qᆄ, qᆄ);
+Test_N(qㆈ, qㆈ, qㆈ, qᆅ, qᆅ);
+Test_N(qㆉ, qㆉ, qㆉ, qᆈ, qᆈ);
+Test_N(qㆊ, qㆊ, qㆊ, qᆑ, qᆑ);
+Test_N(qㆋ, qㆋ, qㆋ, qᆒ, qᆒ);
+Test_N(qㆌ, qㆌ, qㆌ, qᆔ, qᆔ);
+Test_N(qㆍ, qㆍ, qㆍ, qᆞ, qᆞ);
+Test_N(qㆎ, qㆎ, qㆎ, qᆡ, qᆡ);
+Test_N(q㆒, q㆒, q㆒, q一, q一);
+Test_N(q㆓, q㆓, q㆓, q二, q二);
+Test_N(q㆔, q㆔, q㆔, q三, q三);
+Test_N(q㆕, q㆕, q㆕, q四, q四);
+Test_N(q㆖, q㆖, q㆖, q上, q上);
+Test_N(q㆗, q㆗, q㆗, q中, q中);
+Test_N(q㆘, q㆘, q㆘, q下, q下);
+Test_N(q㆙, q㆙, q㆙, q甲, q甲);
+Test_N(q㆚, q㆚, q㆚, q乙, q乙);
+Test_N(q㆛, q㆛, q㆛, q丙, q丙);
+Test_N(q㆜, q㆜, q㆜, q丁, q丁);
+Test_N(q㆝, q㆝, q㆝, q天, q天);
+Test_N(q㆞, q㆞, q㆞, q地, q地);
+Test_N(q㆟, q㆟, q㆟, q人, q人);
+Test_N(q㈀, q㈀, q㈀, q(ᄀ), q(ᄀ));
+Test_N(q㈁, q㈁, q㈁, q(ᄂ), q(ᄂ));
+Test_N(q㈂, q㈂, q㈂, q(ᄃ), q(ᄃ));
+Test_N(q㈃, q㈃, q㈃, q(ᄅ), q(ᄅ));
+Test_N(q㈄, q㈄, q㈄, q(ᄆ), q(ᄆ));
+Test_N(q㈅, q㈅, q㈅, q(ᄇ), q(ᄇ));
+Test_N(q㈆, q㈆, q㈆, q(ᄉ), q(ᄉ));
+Test_N(q㈇, q㈇, q㈇, q(ᄋ), q(ᄋ));
+Test_N(q㈈, q㈈, q㈈, q(ᄌ), q(ᄌ));
+Test_N(q㈉, q㈉, q㈉, q(ᄎ), q(ᄎ));
+Test_N(q㈊, q㈊, q㈊, q(ᄏ), q(ᄏ));
+Test_N(q㈋, q㈋, q㈋, q(ᄐ), q(ᄐ));
+Test_N(q㈌, q㈌, q㈌, q(ᄑ), q(ᄑ));
+Test_N(q㈍, q㈍, q㈍, q(ᄒ), q(ᄒ));
+Test_N(q㈎, q㈎, q㈎, q(가), q(가));
+Test_N(q㈏, q㈏, q㈏, q(나), q(나));
+Test_N(q㈐, q㈐, q㈐, q(다), q(다));
+Test_N(q㈑, q㈑, q㈑, q(라), q(라));
+Test_N(q㈒, q㈒, q㈒, q(마), q(마));
+Test_N(q㈓, q㈓, q㈓, q(바), q(바));
+Test_N(q㈔, q㈔, q㈔, q(사), q(사));
+Test_N(q㈕, q㈕, q㈕, q(아), q(아));
+Test_N(q㈖, q㈖, q㈖, q(자), q(자));
+Test_N(q㈗, q㈗, q㈗, q(차), q(차));
+Test_N(q㈘, q㈘, q㈘, q(카), q(카));
+Test_N(q㈙, q㈙, q㈙, q(타), q(타));
+Test_N(q㈚, q㈚, q㈚, q(파), q(파));
+Test_N(q㈛, q㈛, q㈛, q(하), q(하));
+Test_N(q㈜, q㈜, q㈜, q(주), q(주));
+Test_N(q㈝, q㈝, q㈝, q(오전), q(오전));
+Test_N(q㈞, q㈞, q㈞, q(오후), q(오후));
+Test_N(q㈠, q㈠, q㈠, q(一), q(一));
+Test_N(q㈡, q㈡, q㈡, q(二), q(二));
+Test_N(q㈢, q㈢, q㈢, q(三), q(三));
+Test_N(q㈣, q㈣, q㈣, q(四), q(四));
+Test_N(q㈤, q㈤, q㈤, q(五), q(五));
+Test_N(q㈥, q㈥, q㈥, q(六), q(六));
+Test_N(q㈦, q㈦, q㈦, q(七), q(七));
+Test_N(q㈧, q㈧, q㈧, q(八), q(八));
+Test_N(q㈨, q㈨, q㈨, q(九), q(九));
+Test_N(q㈩, q㈩, q㈩, q(十), q(十));
+Test_N(q㈪, q㈪, q㈪, q(月), q(月));
+Test_N(q㈫, q㈫, q㈫, q(火), q(火));
+Test_N(q㈬, q㈬, q㈬, q(水), q(水));
+Test_N(q㈭, q㈭, q㈭, q(木), q(木));
+Test_N(q㈮, q㈮, q㈮, q(金), q(金));
+Test_N(q㈯, q㈯, q㈯, q(土), q(土));
+Test_N(q㈰, q㈰, q㈰, q(日), q(日));
+Test_N(q㈱, q㈱, q㈱, q(株), q(株));
+Test_N(q㈲, q㈲, q㈲, q(有), q(有));
+Test_N(q㈳, q㈳, q㈳, q(社), q(社));
+Test_N(q㈴, q㈴, q㈴, q(名), q(名));
+Test_N(q㈵, q㈵, q㈵, q(特), q(特));
+Test_N(q㈶, q㈶, q㈶, q(財), q(財));
+Test_N(q㈷, q㈷, q㈷, q(祝), q(祝));
+Test_N(q㈸, q㈸, q㈸, q(労), q(労));
+Test_N(q㈹, q㈹, q㈹, q(代), q(代));
+Test_N(q㈺, q㈺, q㈺, q(呼), q(呼));
+Test_N(q㈻, q㈻, q㈻, q(学), q(学));
+Test_N(q㈼, q㈼, q㈼, q(監), q(監));
+Test_N(q㈽, q㈽, q㈽, q(企), q(企));
+Test_N(q㈾, q㈾, q㈾, q(資), q(資));
+Test_N(q㈿, q㈿, q㈿, q(協), q(協));
+Test_N(q㉀, q㉀, q㉀, q(祭), q(祭));
+Test_N(q㉁, q㉁, q㉁, q(休), q(休));
+Test_N(q㉂, q㉂, q㉂, q(自), q(自));
+Test_N(q㉃, q㉃, q㉃, q(至), q(至));
+Test_N(q㉄, q㉄, q㉄, q問, q問);
+Test_N(q㉅, q㉅, q㉅, q幼, q幼);
+Test_N(q㉆, q㉆, q㉆, q文, q文);
+Test_N(q㉇, q㉇, q㉇, q箏, q箏);
+Test_N(q㉐, q㉐, q㉐, qPTE, qPTE);
+Test_N(q㉑, q㉑, q㉑, q21, q21);
+Test_N(q㉒, q㉒, q㉒, q22, q22);
+Test_N(q㉓, q㉓, q㉓, q23, q23);
+Test_N(q㉔, q㉔, q㉔, q24, q24);
+Test_N(q㉕, q㉕, q㉕, q25, q25);
+Test_N(q㉖, q㉖, q㉖, q26, q26);
+Test_N(q㉗, q㉗, q㉗, q27, q27);
+Test_N(q㉘, q㉘, q㉘, q28, q28);
+Test_N(q㉙, q㉙, q㉙, q29, q29);
+Test_N(q㉚, q㉚, q㉚, q30, q30);
+Test_N(q㉛, q㉛, q㉛, q31, q31);
+Test_N(q㉜, q㉜, q㉜, q32, q32);
+Test_N(q㉝, q㉝, q㉝, q33, q33);
+Test_N(q㉞, q㉞, q㉞, q34, q34);
+Test_N(q㉟, q㉟, q㉟, q35, q35);
+Test_N(q㉠, q㉠, q㉠, qᄀ, qᄀ);
+Test_N(q㉡, q㉡, q㉡, qᄂ, qᄂ);
+Test_N(q㉢, q㉢, q㉢, qᄃ, qᄃ);
+Test_N(q㉣, q㉣, q㉣, qᄅ, qᄅ);
+Test_N(q㉤, q㉤, q㉤, qᄆ, qᄆ);
+Test_N(q㉥, q㉥, q㉥, qᄇ, qᄇ);
+Test_N(q㉦, q㉦, q㉦, qᄉ, qᄉ);
+Test_N(q㉧, q㉧, q㉧, qᄋ, qᄋ);
+Test_N(q㉨, q㉨, q㉨, qᄌ, qᄌ);
+Test_N(q㉩, q㉩, q㉩, qᄎ, qᄎ);
+Test_N(q㉪, q㉪, q㉪, qᄏ, qᄏ);
+Test_N(q㉫, q㉫, q㉫, qᄐ, qᄐ);
+Test_N(q㉬, q㉬, q㉬, qᄑ, qᄑ);
+Test_N(q㉭, q㉭, q㉭, qᄒ, qᄒ);
+Test_N(q㉮, q㉮, q㉮, q가, q가);
+Test_N(q㉯, q㉯, q㉯, q나, q나);
+Test_N(q㉰, q㉰, q㉰, q다, q다);
+Test_N(q㉱, q㉱, q㉱, q라, q라);
+Test_N(q㉲, q㉲, q㉲, q마, q마);
+Test_N(q㉳, q㉳, q㉳, q바, q바);
+Test_N(q㉴, q㉴, q㉴, q사, q사);
+Test_N(q㉵, q㉵, q㉵, q아, q아);
+Test_N(q㉶, q㉶, q㉶, q자, q자);
+Test_N(q㉷, q㉷, q㉷, q차, q차);
+Test_N(q㉸, q㉸, q㉸, q카, q카);
+Test_N(q㉹, q㉹, q㉹, q타, q타);
+Test_N(q㉺, q㉺, q㉺, q파, q파);
+Test_N(q㉻, q㉻, q㉻, q하, q하);
+Test_N(q㉼, q㉼, q㉼, q참고, q참고);
+Test_N(q㉽, q㉽, q㉽, q주의, q주의);
+Test_N(q㉾, q㉾, q㉾, q우, q우);
+Test_N(q㊀, q㊀, q㊀, q一, q一);
+Test_N(q㊁, q㊁, q㊁, q二, q二);
+Test_N(q㊂, q㊂, q㊂, q三, q三);
+Test_N(q㊃, q㊃, q㊃, q四, q四);
+Test_N(q㊄, q㊄, q㊄, q五, q五);
+Test_N(q㊅, q㊅, q㊅, q六, q六);
+Test_N(q㊆, q㊆, q㊆, q七, q七);
+Test_N(q㊇, q㊇, q㊇, q八, q八);
+Test_N(q㊈, q㊈, q㊈, q九, q九);
+Test_N(q㊉, q㊉, q㊉, q十, q十);
+Test_N(q㊊, q㊊, q㊊, q月, q月);
+Test_N(q㊋, q㊋, q㊋, q火, q火);
+Test_N(q㊌, q㊌, q㊌, q水, q水);
+Test_N(q㊍, q㊍, q㊍, q木, q木);
+Test_N(q㊎, q㊎, q㊎, q金, q金);
+Test_N(q㊏, q㊏, q㊏, q土, q土);
+Test_N(q㊐, q㊐, q㊐, q日, q日);
+Test_N(q㊑, q㊑, q㊑, q株, q株);
+Test_N(q㊒, q㊒, q㊒, q有, q有);
+Test_N(q㊓, q㊓, q㊓, q社, q社);
+Test_N(q㊔, q㊔, q㊔, q名, q名);
+Test_N(q㊕, q㊕, q㊕, q特, q特);
+Test_N(q㊖, q㊖, q㊖, q財, q財);
+Test_N(q㊗, q㊗, q㊗, q祝, q祝);
+Test_N(q㊘, q㊘, q㊘, q労, q労);
+Test_N(q㊙, q㊙, q㊙, q秘, q秘);
+Test_N(q㊚, q㊚, q㊚, q男, q男);
+Test_N(q㊛, q㊛, q㊛, q女, q女);
+Test_N(q㊜, q㊜, q㊜, q適, q適);
+Test_N(q㊝, q㊝, q㊝, q優, q優);
+Test_N(q㊞, q㊞, q㊞, q印, q印);
+Test_N(q㊟, q㊟, q㊟, q注, q注);
+Test_N(q㊠, q㊠, q㊠, q項, q項);
+Test_N(q㊡, q㊡, q㊡, q休, q休);
+Test_N(q㊢, q㊢, q㊢, q写, q写);
+Test_N(q㊣, q㊣, q㊣, q正, q正);
+Test_N(q㊤, q㊤, q㊤, q上, q上);
+Test_N(q㊥, q㊥, q㊥, q中, q中);
+Test_N(q㊦, q㊦, q㊦, q下, q下);
+Test_N(q㊧, q㊧, q㊧, q左, q左);
+Test_N(q㊨, q㊨, q㊨, q右, q右);
+Test_N(q㊩, q㊩, q㊩, q医, q医);
+Test_N(q㊪, q㊪, q㊪, q宗, q宗);
+Test_N(q㊫, q㊫, q㊫, q学, q学);
+Test_N(q㊬, q㊬, q㊬, q監, q監);
+Test_N(q㊭, q㊭, q㊭, q企, q企);
+Test_N(q㊮, q㊮, q㊮, q資, q資);
+Test_N(q㊯, q㊯, q㊯, q協, q協);
+Test_N(q㊰, q㊰, q㊰, q夜, q夜);
+Test_N(q㊱, q㊱, q㊱, q36, q36);
+Test_N(q㊲, q㊲, q㊲, q37, q37);
+Test_N(q㊳, q㊳, q㊳, q38, q38);
+Test_N(q㊴, q㊴, q㊴, q39, q39);
+Test_N(q㊵, q㊵, q㊵, q40, q40);
+Test_N(q㊶, q㊶, q㊶, q41, q41);
+Test_N(q㊷, q㊷, q㊷, q42, q42);
+Test_N(q㊸, q㊸, q㊸, q43, q43);
+Test_N(q㊹, q㊹, q㊹, q44, q44);
+Test_N(q㊺, q㊺, q㊺, q45, q45);
+Test_N(q㊻, q㊻, q㊻, q46, q46);
+Test_N(q㊼, q㊼, q㊼, q47, q47);
+Test_N(q㊽, q㊽, q㊽, q48, q48);
+Test_N(q㊾, q㊾, q㊾, q49, q49);
+Test_N(q㊿, q㊿, q㊿, q50, q50);
+Test_N(q㋀, q㋀, q㋀, q1月, q1月);
+Test_N(q㋁, q㋁, q㋁, q2月, q2月);
+Test_N(q㋂, q㋂, q㋂, q3月, q3月);
+Test_N(q㋃, q㋃, q㋃, q4月, q4月);
+Test_N(q㋄, q㋄, q㋄, q5月, q5月);
+Test_N(q㋅, q㋅, q㋅, q6月, q6月);
+Test_N(q㋆, q㋆, q㋆, q7月, q7月);
+Test_N(q㋇, q㋇, q㋇, q8月, q8月);
+Test_N(q㋈, q㋈, q㋈, q9月, q9月);
+Test_N(q㋉, q㋉, q㋉, q10月, q10月);
+Test_N(q㋊, q㋊, q㋊, q11月, q11月);
+Test_N(q㋋, q㋋, q㋋, q12月, q12月);
+Test_N(q㋌, q㋌, q㋌, qHg, qHg);
+Test_N(q㋍, q㋍, q㋍, qerg, qerg);
+Test_N(q㋎, q㋎, q㋎, qeV, qeV);
+Test_N(q㋏, q㋏, q㋏, qLTD, qLTD);
+Test_N(q㋐, q㋐, q㋐, qア, qア);
+Test_N(q㋑, q㋑, q㋑, qイ, qイ);
+Test_N(q㋒, q㋒, q㋒, qウ, qウ);
+Test_N(q㋓, q㋓, q㋓, qエ, qエ);
+Test_N(q㋔, q㋔, q㋔, qオ, qオ);
+Test_N(q㋕, q㋕, q㋕, qカ, qカ);
+Test_N(q㋖, q㋖, q㋖, qキ, qキ);
+Test_N(q㋗, q㋗, q㋗, qク, qク);
+Test_N(q㋘, q㋘, q㋘, qケ, qケ);
+Test_N(q㋙, q㋙, q㋙, qコ, qコ);
+Test_N(q㋚, q㋚, q㋚, qサ, qサ);
+Test_N(q㋛, q㋛, q㋛, qシ, qシ);
+Test_N(q㋜, q㋜, q㋜, qス, qス);
+Test_N(q㋝, q㋝, q㋝, qセ, qセ);
+Test_N(q㋞, q㋞, q㋞, qソ, qソ);
+Test_N(q㋟, q㋟, q㋟, qタ, qタ);
+Test_N(q㋠, q㋠, q㋠, qチ, qチ);
+Test_N(q㋡, q㋡, q㋡, qツ, qツ);
+Test_N(q㋢, q㋢, q㋢, qテ, qテ);
+Test_N(q㋣, q㋣, q㋣, qト, qト);
+Test_N(q㋤, q㋤, q㋤, qナ, qナ);
+Test_N(q㋥, q㋥, q㋥, qニ, qニ);
+Test_N(q㋦, q㋦, q㋦, qヌ, qヌ);
+Test_N(q㋧, q㋧, q㋧, qネ, qネ);
+Test_N(q㋨, q㋨, q㋨, qノ, qノ);
+Test_N(q㋩, q㋩, q㋩, qハ, qハ);
+Test_N(q㋪, q㋪, q㋪, qヒ, qヒ);
+Test_N(q㋫, q㋫, q㋫, qフ, qフ);
+Test_N(q㋬, q㋬, q㋬, qヘ, qヘ);
+Test_N(q㋭, q㋭, q㋭, qホ, qホ);
+Test_N(q㋮, q㋮, q㋮, qマ, qマ);
+Test_N(q㋯, q㋯, q㋯, qミ, qミ);
+Test_N(q㋰, q㋰, q㋰, qム, qム);
+Test_N(q㋱, q㋱, q㋱, qメ, qメ);
+Test_N(q㋲, q㋲, q㋲, qモ, qモ);
+Test_N(q㋳, q㋳, q㋳, qヤ, qヤ);
+Test_N(q㋴, q㋴, q㋴, qユ, qユ);
+Test_N(q㋵, q㋵, q㋵, qヨ, qヨ);
+Test_N(q㋶, q㋶, q㋶, qラ, qラ);
+Test_N(q㋷, q㋷, q㋷, qリ, qリ);
+Test_N(q㋸, q㋸, q㋸, qル, qル);
+Test_N(q㋹, q㋹, q㋹, qレ, qレ);
+Test_N(q㋺, q㋺, q㋺, qロ, qロ);
+Test_N(q㋻, q㋻, q㋻, qワ, qワ);
+Test_N(q㋼, q㋼, q㋼, qヰ, qヰ);
+Test_N(q㋽, q㋽, q㋽, qヱ, qヱ);
+Test_N(q㋾, q㋾, q㋾, qヲ, qヲ);
+Test_N(q㋿, q㋿, q㋿, q令和, q令和);
+Test_N(q㌀, q㌀, q㌀, qアパート, qアパート);
+Test_N(q㌁, q㌁, q㌁, qアルファ, qアルファ);
+Test_N(q㌂, q㌂, q㌂, qアンペア, qアンペア);
+Test_N(q㌃, q㌃, q㌃, qアール, qアール);
+Test_N(q㌄, q㌄, q㌄, qイニング, qイニング);
+Test_N(q㌅, q㌅, q㌅, qインチ, qインチ);
+Test_N(q㌆, q㌆, q㌆, qウォン, qウォン);
+Test_N(q㌇, q㌇, q㌇, qエスクード, qエスクード);
+Test_N(q㌈, q㌈, q㌈, qエーカー, qエーカー);
+Test_N(q㌉, q㌉, q㌉, qオンス, qオンス);
+Test_N(q㌊, q㌊, q㌊, qオーム, qオーム);
+Test_N(q㌋, q㌋, q㌋, qカイリ, qカイリ);
+Test_N(q㌌, q㌌, q㌌, qカラット, qカラット);
+Test_N(q㌍, q㌍, q㌍, qカロリー, qカロリー);
+Test_N(q㌎, q㌎, q㌎, qガロン, qガロン);
+Test_N(q㌏, q㌏, q㌏, qガンマ, qガンマ);
+Test_N(q㌐, q㌐, q㌐, qギガ, qギガ);
+Test_N(q㌑, q㌑, q㌑, qギニー, qギニー);
+Test_N(q㌒, q㌒, q㌒, qキュリー, qキュリー);
+Test_N(q㌓, q㌓, q㌓, qギルダー, qギルダー);
+Test_N(q㌔, q㌔, q㌔, qキロ, qキロ);
+Test_N(q㌕, q㌕, q㌕, qキログラム, qキログラム);
+Test_N(q㌖, q㌖, q㌖, qキロメートル, qキロメートル);
+Test_N(q㌗, q㌗, q㌗, qキロワット, qキロワット);
+Test_N(q㌘, q㌘, q㌘, qグラム, qグラム);
+Test_N(q㌙, q㌙, q㌙, qグラムトン, qグラムトン);
+Test_N(q㌚, q㌚, q㌚, qクルゼイロ, qクルゼイロ);
+Test_N(q㌛, q㌛, q㌛, qクローネ, qクローネ);
+Test_N(q㌜, q㌜, q㌜, qケース, qケース);
+Test_N(q㌝, q㌝, q㌝, qコルナ, qコルナ);
+Test_N(q㌞, q㌞, q㌞, qコーポ, qコーポ);
+Test_N(q㌟, q㌟, q㌟, qサイクル, qサイクル);
+Test_N(q㌠, q㌠, q㌠, qサンチーム, qサンチーム);
+Test_N(q㌡, q㌡, q㌡, qシリング, qシリング);
+Test_N(q㌢, q㌢, q㌢, qセンチ, qセンチ);
+Test_N(q㌣, q㌣, q㌣, qセント, qセント);
+Test_N(q㌤, q㌤, q㌤, qダース, qダース);
+Test_N(q㌥, q㌥, q㌥, qデシ, qデシ);
+Test_N(q㌦, q㌦, q㌦, qドル, qドル);
+Test_N(q㌧, q㌧, q㌧, qトン, qトン);
+Test_N(q㌨, q㌨, q㌨, qナノ, qナノ);
+Test_N(q㌩, q㌩, q㌩, qノット, qノット);
+Test_N(q㌪, q㌪, q㌪, qハイツ, qハイツ);
+Test_N(q㌫, q㌫, q㌫, qパーセント, qパーセント);
+Test_N(q㌬, q㌬, q㌬, qパーツ, qパーツ);
+Test_N(q㌭, q㌭, q㌭, qバーレル, qバーレル);
+Test_N(q㌮, q㌮, q㌮, qピアストル, qピアストル);
+Test_N(q㌯, q㌯, q㌯, qピクル, qピクル);
+Test_N(q㌰, q㌰, q㌰, qピコ, qピコ);
+Test_N(q㌱, q㌱, q㌱, qビル, qビル);
+Test_N(q㌲, q㌲, q㌲, qファラッド, qファラッド);
+Test_N(q㌳, q㌳, q㌳, qフィート, qフィート);
+Test_N(q㌴, q㌴, q㌴, qブッシェル, qブッシェル);
+Test_N(q㌵, q㌵, q㌵, qフラン, qフラン);
+Test_N(q㌶, q㌶, q㌶, qヘクタール, qヘクタール);
+Test_N(q㌷, q㌷, q㌷, qペソ, qペソ);
+Test_N(q㌸, q㌸, q㌸, qペニヒ, qペニヒ);
+Test_N(q㌹, q㌹, q㌹, qヘルツ, qヘルツ);
+Test_N(q㌺, q㌺, q㌺, qペンス, qペンス);
+Test_N(q㌻, q㌻, q㌻, qページ, qページ);
+Test_N(q㌼, q㌼, q㌼, qベータ, qベータ);
+Test_N(q㌽, q㌽, q㌽, qポイント, qポイント);
+Test_N(q㌾, q㌾, q㌾, qボルト, qボルト);
+Test_N(q㌿, q㌿, q㌿, qホン, qホン);
+Test_N(q㍀, q㍀, q㍀, qポンド, qポンド);
+Test_N(q㍁, q㍁, q㍁, qホール, qホール);
+Test_N(q㍂, q㍂, q㍂, qホーン, qホーン);
+Test_N(q㍃, q㍃, q㍃, qマイクロ, qマイクロ);
+Test_N(q㍄, q㍄, q㍄, qマイル, qマイル);
+Test_N(q㍅, q㍅, q㍅, qマッハ, qマッハ);
+Test_N(q㍆, q㍆, q㍆, qマルク, qマルク);
+Test_N(q㍇, q㍇, q㍇, qマンション, qマンション);
+Test_N(q㍈, q㍈, q㍈, qミクロン, qミクロン);
+Test_N(q㍉, q㍉, q㍉, qミリ, qミリ);
+Test_N(q㍊, q㍊, q㍊, qミリバール, qミリバール);
+Test_N(q㍋, q㍋, q㍋, qメガ, qメガ);
+Test_N(q㍌, q㍌, q㍌, qメガトン, qメガトン);
+Test_N(q㍍, q㍍, q㍍, qメートル, qメートル);
+Test_N(q㍎, q㍎, q㍎, qヤード, qヤード);
+Test_N(q㍏, q㍏, q㍏, qヤール, qヤール);
+Test_N(q㍐, q㍐, q㍐, qユアン, qユアン);
+Test_N(q㍑, q㍑, q㍑, qリットル, qリットル);
+Test_N(q㍒, q㍒, q㍒, qリラ, qリラ);
+Test_N(q㍓, q㍓, q㍓, qルピー, qルピー);
+Test_N(q㍔, q㍔, q㍔, qルーブル, qルーブル);
+Test_N(q㍕, q㍕, q㍕, qレム, qレム);
+Test_N(q㍖, q㍖, q㍖, qレントゲン, qレントゲン);
+Test_N(q㍗, q㍗, q㍗, qワット, qワット);
+Test_N(q㍘, q㍘, q㍘, q0点, q0点);
+Test_N(q㍙, q㍙, q㍙, q1点, q1点);
+Test_N(q㍚, q㍚, q㍚, q2点, q2点);
+Test_N(q㍛, q㍛, q㍛, q3点, q3点);
+Test_N(q㍜, q㍜, q㍜, q4点, q4点);
+Test_N(q㍝, q㍝, q㍝, q5点, q5点);
+Test_N(q㍞, q㍞, q㍞, q6点, q6点);
+Test_N(q㍟, q㍟, q㍟, q7点, q7点);
+Test_N(q㍠, q㍠, q㍠, q8点, q8点);
+Test_N(q㍡, q㍡, q㍡, q9点, q9点);
+Test_N(q㍢, q㍢, q㍢, q10点, q10点);
+Test_N(q㍣, q㍣, q㍣, q11点, q11点);
+Test_N(q㍤, q㍤, q㍤, q12点, q12点);
+Test_N(q㍥, q㍥, q㍥, q13点, q13点);
+Test_N(q㍦, q㍦, q㍦, q14点, q14点);
+Test_N(q㍧, q㍧, q㍧, q15点, q15点);
+Test_N(q㍨, q㍨, q㍨, q16点, q16点);
+Test_N(q㍩, q㍩, q㍩, q17点, q17点);
+Test_N(q㍪, q㍪, q㍪, q18点, q18点);
+Test_N(q㍫, q㍫, q㍫, q19点, q19点);
+Test_N(q㍬, q㍬, q㍬, q20点, q20点);
+Test_N(q㍭, q㍭, q㍭, q21点, q21点);
+Test_N(q㍮, q㍮, q㍮, q22点, q22点);
+Test_N(q㍯, q㍯, q㍯, q23点, q23点);
+Test_N(q㍰, q㍰, q㍰, q24点, q24点);
+Test_N(q㍱, q㍱, q㍱, qhPa, qhPa);
+Test_N(q㍲, q㍲, q㍲, qda, qda);
+Test_N(q㍳, q㍳, q㍳, qAU, qAU);
+Test_N(q㍴, q㍴, q㍴, qbar, qbar);
+Test_N(q㍵, q㍵, q㍵, qoV, qoV);
+Test_N(q㍶, q㍶, q㍶, qpc, qpc);
+Test_N(q㍷, q㍷, q㍷, qdm, qdm);
+Test_N(q㍸, q㍸, q㍸, qdm2, qdm2);
+Test_N(q㍹, q㍹, q㍹, qdm3, qdm3);
+Test_N(q㍺, q㍺, q㍺, qIU, qIU);
+Test_N(q㍻, q㍻, q㍻, q平成, q平成);
+Test_N(q㍼, q㍼, q㍼, q昭和, q昭和);
+Test_N(q㍽, q㍽, q㍽, q大正, q大正);
+Test_N(q㍾, q㍾, q㍾, q明治, q明治);
+Test_N(q㍿, q㍿, q㍿, q株式会社, q株式会社);
+Test_N(q㎀, q㎀, q㎀, qpA, qpA);
+Test_N(q㎁, q㎁, q㎁, qnA, qnA);
+Test_N(q㎂, q㎂, q㎂, qμA, qμA);
+Test_N(q㎃, q㎃, q㎃, qmA, qmA);
+Test_N(q㎄, q㎄, q㎄, qkA, qkA);
+Test_N(q㎅, q㎅, q㎅, qKB, qKB);
+Test_N(q㎆, q㎆, q㎆, qMB, qMB);
+Test_N(q㎇, q㎇, q㎇, qGB, qGB);
+Test_N(q㎈, q㎈, q㎈, qcal, qcal);
+Test_N(q㎉, q㎉, q㎉, qkcal, qkcal);
+Test_N(q㎊, q㎊, q㎊, qpF, qpF);
+Test_N(q㎋, q㎋, q㎋, qnF, qnF);
+Test_N(q㎌, q㎌, q㎌, qμF, qμF);
+Test_N(q㎍, q㎍, q㎍, qμg, qμg);
+Test_N(q㎎, q㎎, q㎎, qmg, qmg);
+Test_N(q㎏, q㎏, q㎏, qkg, qkg);
+Test_N(q㎐, q㎐, q㎐, qHz, qHz);
+Test_N(q㎑, q㎑, q㎑, qkHz, qkHz);
+Test_N(q㎒, q㎒, q㎒, qMHz, qMHz);
+Test_N(q㎓, q㎓, q㎓, qGHz, qGHz);
+Test_N(q㎔, q㎔, q㎔, qTHz, qTHz);
+Test_N(q㎕, q㎕, q㎕, qμl, qμl);
+Test_N(q㎖, q㎖, q㎖, qml, qml);
+Test_N(q㎗, q㎗, q㎗, qdl, qdl);
+Test_N(q㎘, q㎘, q㎘, qkl, qkl);
+Test_N(q㎙, q㎙, q㎙, qfm, qfm);
+Test_N(q㎚, q㎚, q㎚, qnm, qnm);
+Test_N(q㎛, q㎛, q㎛, qμm, qμm);
+Test_N(q㎜, q㎜, q㎜, qmm, qmm);
+Test_N(q㎝, q㎝, q㎝, qcm, qcm);
+Test_N(q㎞, q㎞, q㎞, qkm, qkm);
+Test_N(q㎟, q㎟, q㎟, qmm2, qmm2);
+Test_N(q㎠, q㎠, q㎠, qcm2, qcm2);
+Test_N(q㎡, q㎡, q㎡, qm2, qm2);
+Test_N(q㎢, q㎢, q㎢, qkm2, qkm2);
+Test_N(q㎣, q㎣, q㎣, qmm3, qmm3);
+Test_N(q㎤, q㎤, q㎤, qcm3, qcm3);
+Test_N(q㎥, q㎥, q㎥, qm3, qm3);
+Test_N(q㎦, q㎦, q㎦, qkm3, qkm3);
+Test_N(q㎧, q㎧, q㎧, qm∕s, qm∕s);
+Test_N(q㎨, q㎨, q㎨, qm∕s2, qm∕s2);
+Test_N(q㎩, q㎩, q㎩, qPa, qPa);
+Test_N(q㎪, q㎪, q㎪, qkPa, qkPa);
+Test_N(q㎫, q㎫, q㎫, qMPa, qMPa);
+Test_N(q㎬, q㎬, q㎬, qGPa, qGPa);
+Test_N(q㎭, q㎭, q㎭, qrad, qrad);
+Test_N(q㎮, q㎮, q㎮, qrad∕s, qrad∕s);
+Test_N(q㎯, q㎯, q㎯, qrad∕s2, qrad∕s2);
+Test_N(q㎰, q㎰, q㎰, qps, qps);
+Test_N(q㎱, q㎱, q㎱, qns, qns);
+Test_N(q㎲, q㎲, q㎲, qμs, qμs);
+Test_N(q㎳, q㎳, q㎳, qms, qms);
+Test_N(q㎴, q㎴, q㎴, qpV, qpV);
+Test_N(q㎵, q㎵, q㎵, qnV, qnV);
+Test_N(q㎶, q㎶, q㎶, qμV, qμV);
+Test_N(q㎷, q㎷, q㎷, qmV, qmV);
+Test_N(q㎸, q㎸, q㎸, qkV, qkV);
+Test_N(q㎹, q㎹, q㎹, qMV, qMV);
+Test_N(q㎺, q㎺, q㎺, qpW, qpW);
+Test_N(q㎻, q㎻, q㎻, qnW, qnW);
+Test_N(q㎼, q㎼, q㎼, qμW, qμW);
+Test_N(q㎽, q㎽, q㎽, qmW, qmW);
+Test_N(q㎾, q㎾, q㎾, qkW, qkW);
+Test_N(q㎿, q㎿, q㎿, qMW, qMW);
+Test_N(q㏀, q㏀, q㏀, qkΩ, qkΩ);
+Test_N(q㏁, q㏁, q㏁, qMΩ, qMΩ);
+Test_N(q㏂, q㏂, q㏂, qa.m., qa.m.);
+Test_N(q㏃, q㏃, q㏃, qBq, qBq);
+Test_N(q㏄, q㏄, q㏄, qcc, qcc);
+Test_N(q㏅, q㏅, q㏅, qcd, qcd);
+Test_N(q㏆, q㏆, q㏆, qC∕kg, qC∕kg);
+Test_N(q㏇, q㏇, q㏇, qCo., qCo.);
+Test_N(q㏈, q㏈, q㏈, qdB, qdB);
+Test_N(q㏉, q㏉, q㏉, qGy, qGy);
+Test_N(q㏊, q㏊, q㏊, qha, qha);
+Test_N(q㏋, q㏋, q㏋, qHP, qHP);
+Test_N(q㏌, q㏌, q㏌, qin, qin);
+Test_N(q㏍, q㏍, q㏍, qKK, qKK);
+Test_N(q㏎, q㏎, q㏎, qKM, qKM);
+Test_N(q㏏, q㏏, q㏏, qkt, qkt);
+Test_N(q㏐, q㏐, q㏐, qlm, qlm);
+Test_N(q㏑, q㏑, q㏑, qln, qln);
+Test_N(q㏒, q㏒, q㏒, qlog, qlog);
+Test_N(q㏓, q㏓, q㏓, qlx, qlx);
+Test_N(q㏔, q㏔, q㏔, qmb, qmb);
+Test_N(q㏕, q㏕, q㏕, qmil, qmil);
+Test_N(q㏖, q㏖, q㏖, qmol, qmol);
+Test_N(q㏗, q㏗, q㏗, qPH, qPH);
+Test_N(q㏘, q㏘, q㏘, qp.m., qp.m.);
+Test_N(q㏙, q㏙, q㏙, qPPM, qPPM);
+Test_N(q㏚, q㏚, q㏚, qPR, qPR);
+Test_N(q㏛, q㏛, q㏛, qsr, qsr);
+Test_N(q㏜, q㏜, q㏜, qSv, qSv);
+Test_N(q㏝, q㏝, q㏝, qWb, qWb);
+Test_N(q㏞, q㏞, q㏞, qV∕m, qV∕m);
+Test_N(q㏟, q㏟, q㏟, qA∕m, qA∕m);
+Test_N(q㏠, q㏠, q㏠, q1日, q1日);
+Test_N(q㏡, q㏡, q㏡, q2日, q2日);
+Test_N(q㏢, q㏢, q㏢, q3日, q3日);
+Test_N(q㏣, q㏣, q㏣, q4日, q4日);
+Test_N(q㏤, q㏤, q㏤, q5日, q5日);
+Test_N(q㏥, q㏥, q㏥, q6日, q6日);
+Test_N(q㏦, q㏦, q㏦, q7日, q7日);
+Test_N(q㏧, q㏧, q㏧, q8日, q8日);
+Test_N(q㏨, q㏨, q㏨, q9日, q9日);
+Test_N(q㏩, q㏩, q㏩, q10日, q10日);
+Test_N(q㏪, q㏪, q㏪, q11日, q11日);
+Test_N(q㏫, q㏫, q㏫, q12日, q12日);
+Test_N(q㏬, q㏬, q㏬, q13日, q13日);
+Test_N(q㏭, q㏭, q㏭, q14日, q14日);
+Test_N(q㏮, q㏮, q㏮, q15日, q15日);
+Test_N(q㏯, q㏯, q㏯, q16日, q16日);
+Test_N(q㏰, q㏰, q㏰, q17日, q17日);
+Test_N(q㏱, q㏱, q㏱, q18日, q18日);
+Test_N(q㏲, q㏲, q㏲, q19日, q19日);
+Test_N(q㏳, q㏳, q㏳, q20日, q20日);
+Test_N(q㏴, q㏴, q㏴, q21日, q21日);
+Test_N(q㏵, q㏵, q㏵, q22日, q22日);
+Test_N(q㏶, q㏶, q㏶, q23日, q23日);
+Test_N(q㏷, q㏷, q㏷, q24日, q24日);
+Test_N(q㏸, q㏸, q㏸, q25日, q25日);
+Test_N(q㏹, q㏹, q㏹, q26日, q26日);
+Test_N(q㏺, q㏺, q㏺, q27日, q27日);
+Test_N(q㏻, q㏻, q㏻, q28日, q28日);
+Test_N(q㏼, q㏼, q㏼, q29日, q29日);
+Test_N(q㏽, q㏽, q㏽, q30日, q30日);
+Test_N(q㏾, q㏾, q㏾, q31日, q31日);
+Test_N(q㏿, q㏿, q㏿, qgal, qgal);
+Test_N(qꚜ, qꚜ, qꚜ, qъ, qъ);
+Test_N(qꚝ, qꚝ, qꚝ, qь, qь);
+Test_N(qꝰ, qꝰ, qꝰ, qꝯ, qꝯ);
+Test_N(qꟲ, qꟲ, qꟲ, qC, qC);
+Test_N(qꟳ, qꟳ, qꟳ, qF, qF);
+Test_N(qꟴ, qꟴ, qꟴ, qQ, qQ);
+Test_N(qꟸ, qꟸ, qꟸ, qĦ, qĦ);
+Test_N(qꟹ, qꟹ, qꟹ, qœ, qœ);
+Test_N(qꭜ, qꭜ, qꭜ, qꜧ, qꜧ);
+Test_N(qꭝ, qꭝ, qꭝ, qꬷ, qꬷ);
+Test_N(qꭞ, qꭞ, qꭞ, qɫ, qɫ);
+Test_N(qꭟ, qꭟ, qꭟ, qꭒ, qꭒ);
+Test_N(qꭩ, qꭩ, qꭩ, qʍ, qʍ);
+Test_N(q가, q가, q가, q가, q가);
+Test_N(q각, q각, q각, q각, q각);
+Test_N(q갂, q갂, q갂, q갂, q갂);
+Test_N(q갃, q갃, q갃, q갃, q갃);
+Test_N(q간, q간, q간, q간, q간);
+Test_N(q갅, q갅, q갅, q갅, q갅);
+Test_N(q갆, q갆, q갆, q갆, q갆);
+Test_N(q갇, q갇, q갇, q갇, q갇);
+Test_N(q갈, q갈, q갈, q갈, q갈);
+Test_N(q갉, q갉, q갉, q갉, q갉);
+Test_N(q갊, q갊, q갊, q갊, q갊);
+Test_N(q갋, q갋, q갋, q갋, q갋);
+Test_N(q갌, q갌, q갌, q갌, q갌);
+Test_N(q갍, q갍, q갍, q갍, q갍);
+Test_N(q갎, q갎, q갎, q갎, q갎);
+Test_N(q갏, q갏, q갏, q갏, q갏);
+Test_N(q감, q감, q감, q감, q감);
+Test_N(q갑, q갑, q갑, q갑, q갑);
+Test_N(q값, q값, q값, q값, q값);
+Test_N(q갓, q갓, q갓, q갓, q갓);
+Test_N(q갔, q갔, q갔, q갔, q갔);
+Test_N(q강, q강, q강, q강, q강);
+Test_N(q갖, q갖, q갖, q갖, q갖);
+Test_N(q갗, q갗, q갗, q갗, q갗);
+Test_N(q갘, q갘, q갘, q갘, q갘);
+Test_N(q같, q같, q같, q같, q같);
+Test_N(q갚, q갚, q갚, q갚, q갚);
+Test_N(q갛, q갛, q갛, q갛, q갛);
+Test_N(q개, q개, q개, q개, q개);
+Test_N(q객, q객, q객, q객, q객);
+Test_N(q갞, q갞, q갞, q갞, q갞);
+Test_N(q갟, q갟, q갟, q갟, q갟);
+Test_N(q갠, q갠, q갠, q갠, q갠);
+Test_N(q갡, q갡, q갡, q갡, q갡);
+Test_N(q갢, q갢, q갢, q갢, q갢);
+Test_N(q갣, q갣, q갣, q갣, q갣);
+Test_N(q갤, q갤, q갤, q갤, q갤);
+Test_N(q갥, q갥, q갥, q갥, q갥);
+Test_N(q갦, q갦, q갦, q갦, q갦);
+Test_N(q갧, q갧, q갧, q갧, q갧);
+Test_N(q갨, q갨, q갨, q갨, q갨);
+Test_N(q갩, q갩, q갩, q갩, q갩);
+Test_N(q갪, q갪, q갪, q갪, q갪);
+Test_N(q갫, q갫, q갫, q갫, q갫);
+Test_N(q갬, q갬, q갬, q갬, q갬);
+Test_N(q갭, q갭, q갭, q갭, q갭);
+Test_N(q갮, q갮, q갮, q갮, q갮);
+Test_N(q갯, q갯, q갯, q갯, q갯);
+Test_N(q갰, q갰, q갰, q갰, q갰);
+Test_N(q갱, q갱, q갱, q갱, q갱);
+Test_N(q갲, q갲, q갲, q갲, q갲);
+Test_N(q갳, q갳, q갳, q갳, q갳);
+Test_N(q갴, q갴, q갴, q갴, q갴);
+Test_N(q갵, q갵, q갵, q갵, q갵);
+Test_N(q갶, q갶, q갶, q갶, q갶);
+Test_N(q갷, q갷, q갷, q갷, q갷);
+Test_N(q갸, q갸, q갸, q갸, q갸);
+Test_N(q갹, q갹, q갹, q갹, q갹);
+Test_N(q갺, q갺, q갺, q갺, q갺);
+Test_N(q갻, q갻, q갻, q갻, q갻);
+Test_N(q갼, q갼, q갼, q갼, q갼);
+Test_N(q갽, q갽, q갽, q갽, q갽);
+Test_N(q갾, q갾, q갾, q갾, q갾);
+Test_N(q갿, q갿, q갿, q갿, q갿);
+Test_N(q걀, q걀, q걀, q걀, q걀);
+Test_N(q걁, q걁, q걁, q걁, q걁);
+Test_N(q걂, q걂, q걂, q걂, q걂);
+Test_N(q걃, q걃, q걃, q걃, q걃);
+Test_N(q걄, q걄, q걄, q걄, q걄);
+Test_N(q걅, q걅, q걅, q걅, q걅);
+Test_N(q걆, q걆, q걆, q걆, q걆);
+Test_N(q걇, q걇, q걇, q걇, q걇);
+Test_N(q걈, q걈, q걈, q걈, q걈);
+Test_N(q걉, q걉, q걉, q걉, q걉);
+Test_N(q걊, q걊, q걊, q걊, q걊);
+Test_N(q걋, q걋, q걋, q걋, q걋);
+Test_N(q걌, q걌, q걌, q걌, q걌);
+Test_N(q걍, q걍, q걍, q걍, q걍);
+Test_N(q걎, q걎, q걎, q걎, q걎);
+Test_N(q걏, q걏, q걏, q걏, q걏);
+Test_N(q걐, q걐, q걐, q걐, q걐);
+Test_N(q걑, q걑, q걑, q걑, q걑);
+Test_N(q걒, q걒, q걒, q걒, q걒);
+Test_N(q걓, q걓, q걓, q걓, q걓);
+Test_N(q걔, q걔, q걔, q걔, q걔);
+Test_N(q걕, q걕, q걕, q걕, q걕);
+Test_N(q걖, q걖, q걖, q걖, q걖);
+Test_N(q걗, q걗, q걗, q걗, q걗);
+Test_N(q걘, q걘, q걘, q걘, q걘);
+Test_N(q걙, q걙, q걙, q걙, q걙);
+Test_N(q걚, q걚, q걚, q걚, q걚);
+Test_N(q걛, q걛, q걛, q걛, q걛);
+Test_N(q걜, q걜, q걜, q걜, q걜);
+Test_N(q걝, q걝, q걝, q걝, q걝);
+Test_N(q걞, q걞, q걞, q걞, q걞);
+Test_N(q걟, q걟, q걟, q걟, q걟);
+Test_N(q걠, q걠, q걠, q걠, q걠);
+Test_N(q걡, q걡, q걡, q걡, q걡);
+Test_N(q걢, q걢, q걢, q걢, q걢);
+Test_N(q걣, q걣, q걣, q걣, q걣);
+Test_N(q걤, q걤, q걤, q걤, q걤);
+Test_N(q걥, q걥, q걥, q걥, q걥);
+Test_N(q걦, q걦, q걦, q걦, q걦);
+Test_N(q걧, q걧, q걧, q걧, q걧);
+Test_N(q걨, q걨, q걨, q걨, q걨);
+Test_N(q걩, q걩, q걩, q걩, q걩);
+Test_N(q걪, q걪, q걪, q걪, q걪);
+Test_N(q걫, q걫, q걫, q걫, q걫);
+Test_N(q걬, q걬, q걬, q걬, q걬);
+Test_N(q걭, q걭, q걭, q걭, q걭);
+Test_N(q걮, q걮, q걮, q걮, q걮);
+Test_N(q걯, q걯, q걯, q걯, q걯);
+Test_N(q거, q거, q거, q거, q거);
+Test_N(q걱, q걱, q걱, q걱, q걱);
+Test_N(q걲, q걲, q걲, q걲, q걲);
+Test_N(q걳, q걳, q걳, q걳, q걳);
+Test_N(q건, q건, q건, q건, q건);
+Test_N(q걵, q걵, q걵, q걵, q걵);
+Test_N(q걶, q걶, q걶, q걶, q걶);
+Test_N(q걷, q걷, q걷, q걷, q걷);
+Test_N(q걸, q걸, q걸, q걸, q걸);
+Test_N(q걹, q걹, q걹, q걹, q걹);
+Test_N(q걺, q걺, q걺, q걺, q걺);
+Test_N(q걻, q걻, q걻, q걻, q걻);
+Test_N(q걼, q걼, q걼, q걼, q걼);
+Test_N(q걽, q걽, q걽, q걽, q걽);
+Test_N(q걾, q걾, q걾, q걾, q걾);
+Test_N(q걿, q걿, q걿, q걿, q걿);
+Test_N(q검, q검, q검, q검, q검);
+Test_N(q겁, q겁, q겁, q겁, q겁);
+Test_N(q겂, q겂, q겂, q겂, q겂);
+Test_N(q것, q것, q것, q것, q것);
+Test_N(q겄, q겄, q겄, q겄, q겄);
+Test_N(q겅, q겅, q겅, q겅, q겅);
+Test_N(q겆, q겆, q겆, q겆, q겆);
+Test_N(q겇, q겇, q겇, q겇, q겇);
+Test_N(q겈, q겈, q겈, q겈, q겈);
+Test_N(q겉, q겉, q겉, q겉, q겉);
+Test_N(q겊, q겊, q겊, q겊, q겊);
+Test_N(q겋, q겋, q겋, q겋, q겋);
+Test_N(q게, q게, q게, q게, q게);
+Test_N(q겍, q겍, q겍, q겍, q겍);
+Test_N(q겎, q겎, q겎, q겎, q겎);
+Test_N(q겏, q겏, q겏, q겏, q겏);
+Test_N(q겐, q겐, q겐, q겐, q겐);
+Test_N(q겑, q겑, q겑, q겑, q겑);
+Test_N(q겒, q겒, q겒, q겒, q겒);
+Test_N(q겓, q겓, q겓, q겓, q겓);
+Test_N(q겔, q겔, q겔, q겔, q겔);
+Test_N(q겕, q겕, q겕, q겕, q겕);
+Test_N(q겖, q겖, q겖, q겖, q겖);
+Test_N(q겗, q겗, q겗, q겗, q겗);
+Test_N(q겘, q겘, q겘, q겘, q겘);
+Test_N(q겙, q겙, q겙, q겙, q겙);
+Test_N(q겚, q겚, q겚, q겚, q겚);
+Test_N(q겛, q겛, q겛, q겛, q겛);
+Test_N(q겜, q겜, q겜, q겜, q겜);
+Test_N(q겝, q겝, q겝, q겝, q겝);
+Test_N(q겞, q겞, q겞, q겞, q겞);
+Test_N(q겟, q겟, q겟, q겟, q겟);
+Test_N(q겠, q겠, q겠, q겠, q겠);
+Test_N(q겡, q겡, q겡, q겡, q겡);
+Test_N(q겢, q겢, q겢, q겢, q겢);
+Test_N(q겣, q겣, q겣, q겣, q겣);
+Test_N(q겤, q겤, q겤, q겤, q겤);
+Test_N(q겥, q겥, q겥, q겥, q겥);
+Test_N(q겦, q겦, q겦, q겦, q겦);
+Test_N(q겧, q겧, q겧, q겧, q겧);
+Test_N(q겨, q겨, q겨, q겨, q겨);
+Test_N(q격, q격, q격, q격, q격);
+Test_N(q겪, q겪, q겪, q겪, q겪);
+Test_N(q겫, q겫, q겫, q겫, q겫);
+Test_N(q견, q견, q견, q견, q견);
+Test_N(q겭, q겭, q겭, q겭, q겭);
+Test_N(q겮, q겮, q겮, q겮, q겮);
+Test_N(q겯, q겯, q겯, q겯, q겯);
+Test_N(q결, q결, q결, q결, q결);
+Test_N(q겱, q겱, q겱, q겱, q겱);
+Test_N(q겲, q겲, q겲, q겲, q겲);
+Test_N(q겳, q겳, q겳, q겳, q겳);
+Test_N(q겴, q겴, q겴, q겴, q겴);
+Test_N(q겵, q겵, q겵, q겵, q겵);
+Test_N(q겶, q겶, q겶, q겶, q겶);
+Test_N(q겷, q겷, q겷, q겷, q겷);
+Test_N(q겸, q겸, q겸, q겸, q겸);
+Test_N(q겹, q겹, q겹, q겹, q겹);
+Test_N(q겺, q겺, q겺, q겺, q겺);
+Test_N(q겻, q겻, q겻, q겻, q겻);
+Test_N(q겼, q겼, q겼, q겼, q겼);
+Test_N(q경, q경, q경, q경, q경);
+Test_N(q겾, q겾, q겾, q겾, q겾);
+Test_N(q겿, q겿, q겿, q겿, q겿);
+Test_N(q곀, q곀, q곀, q곀, q곀);
+Test_N(q곁, q곁, q곁, q곁, q곁);
+Test_N(q곂, q곂, q곂, q곂, q곂);
+Test_N(q곃, q곃, q곃, q곃, q곃);
+Test_N(q계, q계, q계, q계, q계);
+Test_N(q곅, q곅, q곅, q곅, q곅);
+Test_N(q곆, q곆, q곆, q곆, q곆);
+Test_N(q곇, q곇, q곇, q곇, q곇);
+Test_N(q곈, q곈, q곈, q곈, q곈);
+Test_N(q곉, q곉, q곉, q곉, q곉);
+Test_N(q곊, q곊, q곊, q곊, q곊);
+Test_N(q곋, q곋, q곋, q곋, q곋);
+Test_N(q곌, q곌, q곌, q곌, q곌);
+Test_N(q곍, q곍, q곍, q곍, q곍);
+Test_N(q곎, q곎, q곎, q곎, q곎);
+Test_N(q곏, q곏, q곏, q곏, q곏);
+Test_N(q곐, q곐, q곐, q곐, q곐);
+Test_N(q곑, q곑, q곑, q곑, q곑);
+Test_N(q곒, q곒, q곒, q곒, q곒);
+Test_N(q곓, q곓, q곓, q곓, q곓);
+Test_N(q곔, q곔, q곔, q곔, q곔);
+Test_N(q곕, q곕, q곕, q곕, q곕);
+Test_N(q곖, q곖, q곖, q곖, q곖);
+Test_N(q곗, q곗, q곗, q곗, q곗);
+Test_N(q곘, q곘, q곘, q곘, q곘);
+Test_N(q곙, q곙, q곙, q곙, q곙);
+Test_N(q곚, q곚, q곚, q곚, q곚);
+Test_N(q곛, q곛, q곛, q곛, q곛);
+Test_N(q곜, q곜, q곜, q곜, q곜);
+Test_N(q곝, q곝, q곝, q곝, q곝);
+Test_N(q곞, q곞, q곞, q곞, q곞);
+Test_N(q곟, q곟, q곟, q곟, q곟);
+Test_N(q고, q고, q고, q고, q고);
+Test_N(q곡, q곡, q곡, q곡, q곡);
+Test_N(q곢, q곢, q곢, q곢, q곢);
+Test_N(q곣, q곣, q곣, q곣, q곣);
+Test_N(q곤, q곤, q곤, q곤, q곤);
+Test_N(q곥, q곥, q곥, q곥, q곥);
+Test_N(q곦, q곦, q곦, q곦, q곦);
+Test_N(q곧, q곧, q곧, q곧, q곧);
+Test_N(q골, q골, q골, q골, q골);
+Test_N(q곩, q곩, q곩, q곩, q곩);
+Test_N(q곪, q곪, q곪, q곪, q곪);
+Test_N(q곫, q곫, q곫, q곫, q곫);
+Test_N(q곬, q곬, q곬, q곬, q곬);
+Test_N(q곭, q곭, q곭, q곭, q곭);
+Test_N(q곮, q곮, q곮, q곮, q곮);
+Test_N(q곯, q곯, q곯, q곯, q곯);
+Test_N(q곰, q곰, q곰, q곰, q곰);
+Test_N(q곱, q곱, q곱, q곱, q곱);
+Test_N(q곲, q곲, q곲, q곲, q곲);
+Test_N(q곳, q곳, q곳, q곳, q곳);
+Test_N(q곴, q곴, q곴, q곴, q곴);
+Test_N(q공, q공, q공, q공, q공);
+Test_N(q곶, q곶, q곶, q곶, q곶);
+Test_N(q곷, q곷, q곷, q곷, q곷);
+Test_N(q곸, q곸, q곸, q곸, q곸);
+Test_N(q곹, q곹, q곹, q곹, q곹);
+Test_N(q곺, q곺, q곺, q곺, q곺);
+Test_N(q곻, q곻, q곻, q곻, q곻);
+Test_N(q과, q과, q과, q과, q과);
+Test_N(q곽, q곽, q곽, q곽, q곽);
+Test_N(q곾, q곾, q곾, q곾, q곾);
+Test_N(q곿, q곿, q곿, q곿, q곿);
+Test_N(q관, q관, q관, q관, q관);
+Test_N(q괁, q괁, q괁, q괁, q괁);
+Test_N(q괂, q괂, q괂, q괂, q괂);
+Test_N(q괃, q괃, q괃, q괃, q괃);
+Test_N(q괄, q괄, q괄, q괄, q괄);
+Test_N(q괅, q괅, q괅, q괅, q괅);
+Test_N(q괆, q괆, q괆, q괆, q괆);
+Test_N(q괇, q괇, q괇, q괇, q괇);
+Test_N(q괈, q괈, q괈, q괈, q괈);
+Test_N(q괉, q괉, q괉, q괉, q괉);
+Test_N(q괊, q괊, q괊, q괊, q괊);
+Test_N(q괋, q괋, q괋, q괋, q괋);
+Test_N(q괌, q괌, q괌, q괌, q괌);
+Test_N(q괍, q괍, q괍, q괍, q괍);
+Test_N(q괎, q괎, q괎, q괎, q괎);
+Test_N(q괏, q괏, q괏, q괏, q괏);
+Test_N(q괐, q괐, q괐, q괐, q괐);
+Test_N(q광, q광, q광, q광, q광);
+Test_N(q괒, q괒, q괒, q괒, q괒);
+Test_N(q괓, q괓, q괓, q괓, q괓);
+Test_N(q괔, q괔, q괔, q괔, q괔);
+Test_N(q괕, q괕, q괕, q괕, q괕);
+Test_N(q괖, q괖, q괖, q괖, q괖);
+Test_N(q괗, q괗, q괗, q괗, q괗);
+Test_N(q괘, q괘, q괘, q괘, q괘);
+Test_N(q괙, q괙, q괙, q괙, q괙);
+Test_N(q괚, q괚, q괚, q괚, q괚);
+Test_N(q괛, q괛, q괛, q괛, q괛);
+Test_N(q괜, q괜, q괜, q괜, q괜);
+Test_N(q괝, q괝, q괝, q괝, q괝);
+Test_N(q괞, q괞, q괞, q괞, q괞);
+Test_N(q괟, q괟, q괟, q괟, q괟);
+Test_N(q괠, q괠, q괠, q괠, q괠);
+Test_N(q괡, q괡, q괡, q괡, q괡);
+Test_N(q괢, q괢, q괢, q괢, q괢);
+Test_N(q괣, q괣, q괣, q괣, q괣);
+Test_N(q괤, q괤, q괤, q괤, q괤);
+Test_N(q괥, q괥, q괥, q괥, q괥);
+Test_N(q괦, q괦, q괦, q괦, q괦);
+Test_N(q괧, q괧, q괧, q괧, q괧);
+Test_N(q괨, q괨, q괨, q괨, q괨);
+Test_N(q괩, q괩, q괩, q괩, q괩);
+Test_N(q괪, q괪, q괪, q괪, q괪);
+Test_N(q괫, q괫, q괫, q괫, q괫);
+Test_N(q괬, q괬, q괬, q괬, q괬);
+Test_N(q괭, q괭, q괭, q괭, q괭);
+Test_N(q괮, q괮, q괮, q괮, q괮);
+Test_N(q괯, q괯, q괯, q괯, q괯);
+Test_N(q괰, q괰, q괰, q괰, q괰);
+Test_N(q괱, q괱, q괱, q괱, q괱);
+Test_N(q괲, q괲, q괲, q괲, q괲);
+Test_N(q괳, q괳, q괳, q괳, q괳);
+Test_N(q괴, q괴, q괴, q괴, q괴);
+Test_N(q괵, q괵, q괵, q괵, q괵);
+Test_N(q괶, q괶, q괶, q괶, q괶);
+Test_N(q괷, q괷, q괷, q괷, q괷);
+Test_N(q괸, q괸, q괸, q괸, q괸);
+Test_N(q괹, q괹, q괹, q괹, q괹);
+Test_N(q괺, q괺, q괺, q괺, q괺);
+Test_N(q괻, q괻, q괻, q괻, q괻);
+Test_N(q괼, q괼, q괼, q괼, q괼);
+Test_N(q괽, q괽, q괽, q괽, q괽);
+Test_N(q괾, q괾, q괾, q괾, q괾);
+Test_N(q괿, q괿, q괿, q괿, q괿);
+Test_N(q굀, q굀, q굀, q굀, q굀);
+Test_N(q굁, q굁, q굁, q굁, q굁);
+Test_N(q굂, q굂, q굂, q굂, q굂);
+Test_N(q굃, q굃, q굃, q굃, q굃);
+Test_N(q굄, q굄, q굄, q굄, q굄);
+Test_N(q굅, q굅, q굅, q굅, q굅);
+Test_N(q굆, q굆, q굆, q굆, q굆);
+Test_N(q굇, q굇, q굇, q굇, q굇);
+Test_N(q굈, q굈, q굈, q굈, q굈);
+Test_N(q굉, q굉, q굉, q굉, q굉);
+Test_N(q굊, q굊, q굊, q굊, q굊);
+Test_N(q굋, q굋, q굋, q굋, q굋);
+Test_N(q굌, q굌, q굌, q굌, q굌);
+Test_N(q굍, q굍, q굍, q굍, q굍);
+Test_N(q굎, q굎, q굎, q굎, q굎);
+Test_N(q굏, q굏, q굏, q굏, q굏);
+Test_N(q교, q교, q교, q교, q교);
+Test_N(q굑, q굑, q굑, q굑, q굑);
+Test_N(q굒, q굒, q굒, q굒, q굒);
+Test_N(q굓, q굓, q굓, q굓, q굓);
+Test_N(q굔, q굔, q굔, q굔, q굔);
+Test_N(q굕, q굕, q굕, q굕, q굕);
+Test_N(q굖, q굖, q굖, q굖, q굖);
+Test_N(q굗, q굗, q굗, q굗, q굗);
+Test_N(q굘, q굘, q굘, q굘, q굘);
+Test_N(q굙, q굙, q굙, q굙, q굙);
+Test_N(q굚, q굚, q굚, q굚, q굚);
+Test_N(q굛, q굛, q굛, q굛, q굛);
+Test_N(q굜, q굜, q굜, q굜, q굜);
+Test_N(q굝, q굝, q굝, q굝, q굝);
+Test_N(q굞, q굞, q굞, q굞, q굞);
+Test_N(q굟, q굟, q굟, q굟, q굟);
+Test_N(q굠, q굠, q굠, q굠, q굠);
+Test_N(q굡, q굡, q굡, q굡, q굡);
+Test_N(q굢, q굢, q굢, q굢, q굢);
+Test_N(q굣, q굣, q굣, q굣, q굣);
+Test_N(q굤, q굤, q굤, q굤, q굤);
+Test_N(q굥, q굥, q굥, q굥, q굥);
+Test_N(q굦, q굦, q굦, q굦, q굦);
+Test_N(q굧, q굧, q굧, q굧, q굧);
+Test_N(q굨, q굨, q굨, q굨, q굨);
+Test_N(q굩, q굩, q굩, q굩, q굩);
+Test_N(q굪, q굪, q굪, q굪, q굪);
+Test_N(q굫, q굫, q굫, q굫, q굫);
+Test_N(q구, q구, q구, q구, q구);
+Test_N(q국, q국, q국, q국, q국);
+Test_N(q굮, q굮, q굮, q굮, q굮);
+Test_N(q굯, q굯, q굯, q굯, q굯);
+Test_N(q군, q군, q군, q군, q군);
+Test_N(q굱, q굱, q굱, q굱, q굱);
+Test_N(q굲, q굲, q굲, q굲, q굲);
+Test_N(q굳, q굳, q굳, q굳, q굳);
+Test_N(q굴, q굴, q굴, q굴, q굴);
+Test_N(q굵, q굵, q굵, q굵, q굵);
+Test_N(q굶, q굶, q굶, q굶, q굶);
+Test_N(q굷, q굷, q굷, q굷, q굷);
+Test_N(q굸, q굸, q굸, q굸, q굸);
+Test_N(q굹, q굹, q굹, q굹, q굹);
+Test_N(q굺, q굺, q굺, q굺, q굺);
+Test_N(q굻, q굻, q굻, q굻, q굻);
+Test_N(q굼, q굼, q굼, q굼, q굼);
+Test_N(q굽, q굽, q굽, q굽, q굽);
+Test_N(q굾, q굾, q굾, q굾, q굾);
+Test_N(q굿, q굿, q굿, q굿, q굿);
+Test_N(q궀, q궀, q궀, q궀, q궀);
+Test_N(q궁, q궁, q궁, q궁, q궁);
+Test_N(q궂, q궂, q궂, q궂, q궂);
+Test_N(q궃, q궃, q궃, q궃, q궃);
+Test_N(q궄, q궄, q궄, q궄, q궄);
+Test_N(q궅, q궅, q궅, q궅, q궅);
+Test_N(q궆, q궆, q궆, q궆, q궆);
+Test_N(q궇, q궇, q궇, q궇, q궇);
+Test_N(q궈, q궈, q궈, q궈, q궈);
+Test_N(q궉, q궉, q궉, q궉, q궉);
+Test_N(q궊, q궊, q궊, q궊, q궊);
+Test_N(q궋, q궋, q궋, q궋, q궋);
+Test_N(q권, q권, q권, q권, q권);
+Test_N(q궍, q궍, q궍, q궍, q궍);
+Test_N(q궎, q궎, q궎, q궎, q궎);
+Test_N(q궏, q궏, q궏, q궏, q궏);
+Test_N(q궐, q궐, q궐, q궐, q궐);
+Test_N(q궑, q궑, q궑, q궑, q궑);
+Test_N(q궒, q궒, q궒, q궒, q궒);
+Test_N(q궓, q궓, q궓, q궓, q궓);
+Test_N(q궔, q궔, q궔, q궔, q궔);
+Test_N(q궕, q궕, q궕, q궕, q궕);
+Test_N(q궖, q궖, q궖, q궖, q궖);
+Test_N(q궗, q궗, q궗, q궗, q궗);
+Test_N(q궘, q궘, q궘, q궘, q궘);
+Test_N(q궙, q궙, q궙, q궙, q궙);
+Test_N(q궚, q궚, q궚, q궚, q궚);
+Test_N(q궛, q궛, q궛, q궛, q궛);
+Test_N(q궜, q궜, q궜, q궜, q궜);
+Test_N(q궝, q궝, q궝, q궝, q궝);
+Test_N(q궞, q궞, q궞, q궞, q궞);
+Test_N(q궟, q궟, q궟, q궟, q궟);
+Test_N(q궠, q궠, q궠, q궠, q궠);
+Test_N(q궡, q궡, q궡, q궡, q궡);
+Test_N(q궢, q궢, q궢, q궢, q궢);
+Test_N(q궣, q궣, q궣, q궣, q궣);
+Test_N(q궤, q궤, q궤, q궤, q궤);
+Test_N(q궥, q궥, q궥, q궥, q궥);
+Test_N(q궦, q궦, q궦, q궦, q궦);
+Test_N(q궧, q궧, q궧, q궧, q궧);
+Test_N(q궨, q궨, q궨, q궨, q궨);
+Test_N(q궩, q궩, q궩, q궩, q궩);
+Test_N(q궪, q궪, q궪, q궪, q궪);
+Test_N(q궫, q궫, q궫, q궫, q궫);
+Test_N(q궬, q궬, q궬, q궬, q궬);
+Test_N(q궭, q궭, q궭, q궭, q궭);
+Test_N(q궮, q궮, q궮, q궮, q궮);
+Test_N(q궯, q궯, q궯, q궯, q궯);
+Test_N(q궰, q궰, q궰, q궰, q궰);
+Test_N(q궱, q궱, q궱, q궱, q궱);
+Test_N(q궲, q궲, q궲, q궲, q궲);
+Test_N(q궳, q궳, q궳, q궳, q궳);
+Test_N(q궴, q궴, q궴, q궴, q궴);
+Test_N(q궵, q궵, q궵, q궵, q궵);
+Test_N(q궶, q궶, q궶, q궶, q궶);
+Test_N(q궷, q궷, q궷, q궷, q궷);
+Test_N(q궸, q궸, q궸, q궸, q궸);
+Test_N(q궹, q궹, q궹, q궹, q궹);
+Test_N(q궺, q궺, q궺, q궺, q궺);
+Test_N(q궻, q궻, q궻, q궻, q궻);
+Test_N(q궼, q궼, q궼, q궼, q궼);
+Test_N(q궽, q궽, q궽, q궽, q궽);
+Test_N(q궾, q궾, q궾, q궾, q궾);
+Test_N(q궿, q궿, q궿, q궿, q궿);
+Test_N(q귀, q귀, q귀, q귀, q귀);
+Test_N(q귁, q귁, q귁, q귁, q귁);
+Test_N(q귂, q귂, q귂, q귂, q귂);
+Test_N(q귃, q귃, q귃, q귃, q귃);
+Test_N(q귄, q귄, q귄, q귄, q귄);
+Test_N(q귅, q귅, q귅, q귅, q귅);
+Test_N(q귆, q귆, q귆, q귆, q귆);
+Test_N(q귇, q귇, q귇, q귇, q귇);
+Test_N(q귈, q귈, q귈, q귈, q귈);
+Test_N(q귉, q귉, q귉, q귉, q귉);
+Test_N(q귊, q귊, q귊, q귊, q귊);
+Test_N(q귋, q귋, q귋, q귋, q귋);
+Test_N(q귌, q귌, q귌, q귌, q귌);
+Test_N(q귍, q귍, q귍, q귍, q귍);
+Test_N(q귎, q귎, q귎, q귎, q귎);
+Test_N(q귏, q귏, q귏, q귏, q귏);
+Test_N(q귐, q귐, q귐, q귐, q귐);
+Test_N(q귑, q귑, q귑, q귑, q귑);
+Test_N(q귒, q귒, q귒, q귒, q귒);
+Test_N(q귓, q귓, q귓, q귓, q귓);
+Test_N(q귔, q귔, q귔, q귔, q귔);
+Test_N(q귕, q귕, q귕, q귕, q귕);
+Test_N(q귖, q귖, q귖, q귖, q귖);
+Test_N(q귗, q귗, q귗, q귗, q귗);
+Test_N(q귘, q귘, q귘, q귘, q귘);
+Test_N(q귙, q귙, q귙, q귙, q귙);
+Test_N(q귚, q귚, q귚, q귚, q귚);
+Test_N(q귛, q귛, q귛, q귛, q귛);
+Test_N(q규, q규, q규, q규, q규);
+Test_N(q귝, q귝, q귝, q귝, q귝);
+Test_N(q귞, q귞, q귞, q귞, q귞);
+Test_N(q귟, q귟, q귟, q귟, q귟);
+Test_N(q균, q균, q균, q균, q균);
+Test_N(q귡, q귡, q귡, q귡, q귡);
+Test_N(q귢, q귢, q귢, q귢, q귢);
+Test_N(q귣, q귣, q귣, q귣, q귣);
+Test_N(q귤, q귤, q귤, q귤, q귤);
+Test_N(q귥, q귥, q귥, q귥, q귥);
+Test_N(q귦, q귦, q귦, q귦, q귦);
+Test_N(q귧, q귧, q귧, q귧, q귧);
+Test_N(q귨, q귨, q귨, q귨, q귨);
+Test_N(q귩, q귩, q귩, q귩, q귩);
+Test_N(q귪, q귪, q귪, q귪, q귪);
+Test_N(q귫, q귫, q귫, q귫, q귫);
+Test_N(q귬, q귬, q귬, q귬, q귬);
+Test_N(q귭, q귭, q귭, q귭, q귭);
+Test_N(q귮, q귮, q귮, q귮, q귮);
+Test_N(q귯, q귯, q귯, q귯, q귯);
+Test_N(q귰, q귰, q귰, q귰, q귰);
+Test_N(q귱, q귱, q귱, q귱, q귱);
+Test_N(q귲, q귲, q귲, q귲, q귲);
+Test_N(q귳, q귳, q귳, q귳, q귳);
+Test_N(q귴, q귴, q귴, q귴, q귴);
+Test_N(q귵, q귵, q귵, q귵, q귵);
+Test_N(q귶, q귶, q귶, q귶, q귶);
+Test_N(q귷, q귷, q귷, q귷, q귷);
+Test_N(q그, q그, q그, q그, q그);
+Test_N(q극, q극, q극, q극, q극);
+Test_N(q귺, q귺, q귺, q귺, q귺);
+Test_N(q귻, q귻, q귻, q귻, q귻);
+Test_N(q근, q근, q근, q근, q근);
+Test_N(q귽, q귽, q귽, q귽, q귽);
+Test_N(q귾, q귾, q귾, q귾, q귾);
+Test_N(q귿, q귿, q귿, q귿, q귿);
+Test_N(q글, q글, q글, q글, q글);
+Test_N(q긁, q긁, q긁, q긁, q긁);
+Test_N(q긂, q긂, q긂, q긂, q긂);
+Test_N(q긃, q긃, q긃, q긃, q긃);
+Test_N(q긄, q긄, q긄, q긄, q긄);
+Test_N(q긅, q긅, q긅, q긅, q긅);
+Test_N(q긆, q긆, q긆, q긆, q긆);
+Test_N(q긇, q긇, q긇, q긇, q긇);
+Test_N(q금, q금, q금, q금, q금);
+Test_N(q급, q급, q급, q급, q급);
+Test_N(q긊, q긊, q긊, q긊, q긊);
+Test_N(q긋, q긋, q긋, q긋, q긋);
+Test_N(q긌, q긌, q긌, q긌, q긌);
+Test_N(q긍, q긍, q긍, q긍, q긍);
+Test_N(q긎, q긎, q긎, q긎, q긎);
+Test_N(q긏, q긏, q긏, q긏, q긏);
+Test_N(q긐, q긐, q긐, q긐, q긐);
+Test_N(q긑, q긑, q긑, q긑, q긑);
+Test_N(q긒, q긒, q긒, q긒, q긒);
+Test_N(q긓, q긓, q긓, q긓, q긓);
+Test_N(q긔, q긔, q긔, q긔, q긔);
+Test_N(q긕, q긕, q긕, q긕, q긕);
+Test_N(q긖, q긖, q긖, q긖, q긖);
+Test_N(q긗, q긗, q긗, q긗, q긗);
+Test_N(q긘, q긘, q긘, q긘, q긘);
+Test_N(q긙, q긙, q긙, q긙, q긙);
+Test_N(q긚, q긚, q긚, q긚, q긚);
+Test_N(q긛, q긛, q긛, q긛, q긛);
+Test_N(q긜, q긜, q긜, q긜, q긜);
+Test_N(q긝, q긝, q긝, q긝, q긝);
+Test_N(q긞, q긞, q긞, q긞, q긞);
+Test_N(q긟, q긟, q긟, q긟, q긟);
+Test_N(q긠, q긠, q긠, q긠, q긠);
+Test_N(q긡, q긡, q긡, q긡, q긡);
+Test_N(q긢, q긢, q긢, q긢, q긢);
+Test_N(q긣, q긣, q긣, q긣, q긣);
+Test_N(q긤, q긤, q긤, q긤, q긤);
+Test_N(q긥, q긥, q긥, q긥, q긥);
+Test_N(q긦, q긦, q긦, q긦, q긦);
+Test_N(q긧, q긧, q긧, q긧, q긧);
+Test_N(q긨, q긨, q긨, q긨, q긨);
+Test_N(q긩, q긩, q긩, q긩, q긩);
+Test_N(q긪, q긪, q긪, q긪, q긪);
+Test_N(q긫, q긫, q긫, q긫, q긫);
+Test_N(q긬, q긬, q긬, q긬, q긬);
+Test_N(q긭, q긭, q긭, q긭, q긭);
+Test_N(q긮, q긮, q긮, q긮, q긮);
+Test_N(q긯, q긯, q긯, q긯, q긯);
+Test_N(q기, q기, q기, q기, q기);
+Test_N(q긱, q긱, q긱, q긱, q긱);
+Test_N(q긲, q긲, q긲, q긲, q긲);
+Test_N(q긳, q긳, q긳, q긳, q긳);
+Test_N(q긴, q긴, q긴, q긴, q긴);
+Test_N(q긵, q긵, q긵, q긵, q긵);
+Test_N(q긶, q긶, q긶, q긶, q긶);
+Test_N(q긷, q긷, q긷, q긷, q긷);
+Test_N(q길, q길, q길, q길, q길);
+Test_N(q긹, q긹, q긹, q긹, q긹);
+Test_N(q긺, q긺, q긺, q긺, q긺);
+Test_N(q긻, q긻, q긻, q긻, q긻);
+Test_N(q긼, q긼, q긼, q긼, q긼);
+Test_N(q긽, q긽, q긽, q긽, q긽);
+Test_N(q긾, q긾, q긾, q긾, q긾);
+Test_N(q긿, q긿, q긿, q긿, q긿);
+Test_N(q김, q김, q김, q김, q김);
+Test_N(q깁, q깁, q깁, q깁, q깁);
+Test_N(q깂, q깂, q깂, q깂, q깂);
+Test_N(q깃, q깃, q깃, q깃, q깃);
+Test_N(q깄, q깄, q깄, q깄, q깄);
+Test_N(q깅, q깅, q깅, q깅, q깅);
+Test_N(q깆, q깆, q깆, q깆, q깆);
+Test_N(q깇, q깇, q깇, q깇, q깇);
+Test_N(q깈, q깈, q깈, q깈, q깈);
+Test_N(q깉, q깉, q깉, q깉, q깉);
+Test_N(q깊, q깊, q깊, q깊, q깊);
+Test_N(q깋, q깋, q깋, q깋, q깋);
+Test_N(q까, q까, q까, q까, q까);
+Test_N(q깍, q깍, q깍, q깍, q깍);
+Test_N(q깎, q깎, q깎, q깎, q깎);
+Test_N(q깏, q깏, q깏, q깏, q깏);
+Test_N(q깐, q깐, q깐, q깐, q깐);
+Test_N(q깑, q깑, q깑, q깑, q깑);
+Test_N(q깒, q깒, q깒, q깒, q깒);
+Test_N(q깓, q깓, q깓, q깓, q깓);
+Test_N(q깔, q깔, q깔, q깔, q깔);
+Test_N(q깕, q깕, q깕, q깕, q깕);
+Test_N(q깖, q깖, q깖, q깖, q깖);
+Test_N(q깗, q깗, q깗, q깗, q깗);
+Test_N(q깘, q깘, q깘, q깘, q깘);
+Test_N(q깙, q깙, q깙, q깙, q깙);
+Test_N(q깚, q깚, q깚, q깚, q깚);
+Test_N(q깛, q깛, q깛, q깛, q깛);
+Test_N(q깜, q깜, q깜, q깜, q깜);
+Test_N(q깝, q깝, q깝, q깝, q깝);
+Test_N(q깞, q깞, q깞, q깞, q깞);
+Test_N(q깟, q깟, q깟, q깟, q깟);
+Test_N(q깠, q깠, q깠, q깠, q깠);
+Test_N(q깡, q깡, q깡, q깡, q깡);
+Test_N(q깢, q깢, q깢, q깢, q깢);
+Test_N(q깣, q깣, q깣, q깣, q깣);
+Test_N(q깤, q깤, q깤, q깤, q깤);
+Test_N(q깥, q깥, q깥, q깥, q깥);
+Test_N(q깦, q깦, q깦, q깦, q깦);
+Test_N(q깧, q깧, q깧, q깧, q깧);
+Test_N(q깨, q깨, q깨, q깨, q깨);
+Test_N(q깩, q깩, q깩, q깩, q깩);
+Test_N(q깪, q깪, q깪, q깪, q깪);
+Test_N(q깫, q깫, q깫, q깫, q깫);
+Test_N(q깬, q깬, q깬, q깬, q깬);
+Test_N(q깭, q깭, q깭, q깭, q깭);
+Test_N(q깮, q깮, q깮, q깮, q깮);
+Test_N(q깯, q깯, q깯, q깯, q깯);
+Test_N(q깰, q깰, q깰, q깰, q깰);
+Test_N(q깱, q깱, q깱, q깱, q깱);
+Test_N(q깲, q깲, q깲, q깲, q깲);
+Test_N(q깳, q깳, q깳, q깳, q깳);
+Test_N(q깴, q깴, q깴, q깴, q깴);
+Test_N(q깵, q깵, q깵, q깵, q깵);
+Test_N(q깶, q깶, q깶, q깶, q깶);
+Test_N(q깷, q깷, q깷, q깷, q깷);
+Test_N(q깸, q깸, q깸, q깸, q깸);
+Test_N(q깹, q깹, q깹, q깹, q깹);
+Test_N(q깺, q깺, q깺, q깺, q깺);
+Test_N(q깻, q깻, q깻, q깻, q깻);
+Test_N(q깼, q깼, q깼, q깼, q깼);
+Test_N(q깽, q깽, q깽, q깽, q깽);
+Test_N(q깾, q깾, q깾, q깾, q깾);
+Test_N(q깿, q깿, q깿, q깿, q깿);
+Test_N(q꺀, q꺀, q꺀, q꺀, q꺀);
+Test_N(q꺁, q꺁, q꺁, q꺁, q꺁);
+Test_N(q꺂, q꺂, q꺂, q꺂, q꺂);
+Test_N(q꺃, q꺃, q꺃, q꺃, q꺃);
+Test_N(q꺄, q꺄, q꺄, q꺄, q꺄);
+Test_N(q꺅, q꺅, q꺅, q꺅, q꺅);
+Test_N(q꺆, q꺆, q꺆, q꺆, q꺆);
+Test_N(q꺇, q꺇, q꺇, q꺇, q꺇);
+Test_N(q꺈, q꺈, q꺈, q꺈, q꺈);
+Test_N(q꺉, q꺉, q꺉, q꺉, q꺉);
+Test_N(q꺊, q꺊, q꺊, q꺊, q꺊);
+Test_N(q꺋, q꺋, q꺋, q꺋, q꺋);
+Test_N(q꺌, q꺌, q꺌, q꺌, q꺌);
+Test_N(q꺍, q꺍, q꺍, q꺍, q꺍);
+Test_N(q꺎, q꺎, q꺎, q꺎, q꺎);
+Test_N(q꺏, q꺏, q꺏, q꺏, q꺏);
+Test_N(q꺐, q꺐, q꺐, q꺐, q꺐);
+Test_N(q꺑, q꺑, q꺑, q꺑, q꺑);
+Test_N(q꺒, q꺒, q꺒, q꺒, q꺒);
+Test_N(q꺓, q꺓, q꺓, q꺓, q꺓);
+Test_N(q꺔, q꺔, q꺔, q꺔, q꺔);
+Test_N(q꺕, q꺕, q꺕, q꺕, q꺕);
+Test_N(q꺖, q꺖, q꺖, q꺖, q꺖);
+Test_N(q꺗, q꺗, q꺗, q꺗, q꺗);
+Test_N(q꺘, q꺘, q꺘, q꺘, q꺘);
+Test_N(q꺙, q꺙, q꺙, q꺙, q꺙);
+Test_N(q꺚, q꺚, q꺚, q꺚, q꺚);
+Test_N(q꺛, q꺛, q꺛, q꺛, q꺛);
+Test_N(q꺜, q꺜, q꺜, q꺜, q꺜);
+Test_N(q꺝, q꺝, q꺝, q꺝, q꺝);
+Test_N(q꺞, q꺞, q꺞, q꺞, q꺞);
+Test_N(q꺟, q꺟, q꺟, q꺟, q꺟);
+Test_N(q꺠, q꺠, q꺠, q꺠, q꺠);
+Test_N(q꺡, q꺡, q꺡, q꺡, q꺡);
+Test_N(q꺢, q꺢, q꺢, q꺢, q꺢);
+Test_N(q꺣, q꺣, q꺣, q꺣, q꺣);
+Test_N(q꺤, q꺤, q꺤, q꺤, q꺤);
+Test_N(q꺥, q꺥, q꺥, q꺥, q꺥);
+Test_N(q꺦, q꺦, q꺦, q꺦, q꺦);
+Test_N(q꺧, q꺧, q꺧, q꺧, q꺧);
+Test_N(q꺨, q꺨, q꺨, q꺨, q꺨);
+Test_N(q꺩, q꺩, q꺩, q꺩, q꺩);
+Test_N(q꺪, q꺪, q꺪, q꺪, q꺪);
+Test_N(q꺫, q꺫, q꺫, q꺫, q꺫);
+Test_N(q꺬, q꺬, q꺬, q꺬, q꺬);
+Test_N(q꺭, q꺭, q꺭, q꺭, q꺭);
+Test_N(q꺮, q꺮, q꺮, q꺮, q꺮);
+Test_N(q꺯, q꺯, q꺯, q꺯, q꺯);
+Test_N(q꺰, q꺰, q꺰, q꺰, q꺰);
+Test_N(q꺱, q꺱, q꺱, q꺱, q꺱);
+Test_N(q꺲, q꺲, q꺲, q꺲, q꺲);
+Test_N(q꺳, q꺳, q꺳, q꺳, q꺳);
+Test_N(q꺴, q꺴, q꺴, q꺴, q꺴);
+Test_N(q꺵, q꺵, q꺵, q꺵, q꺵);
+Test_N(q꺶, q꺶, q꺶, q꺶, q꺶);
+Test_N(q꺷, q꺷, q꺷, q꺷, q꺷);
+Test_N(q꺸, q꺸, q꺸, q꺸, q꺸);
+Test_N(q꺹, q꺹, q꺹, q꺹, q꺹);
+Test_N(q꺺, q꺺, q꺺, q꺺, q꺺);
+Test_N(q꺻, q꺻, q꺻, q꺻, q꺻);
+Test_N(q꺼, q꺼, q꺼, q꺼, q꺼);
+Test_N(q꺽, q꺽, q꺽, q꺽, q꺽);
+Test_N(q꺾, q꺾, q꺾, q꺾, q꺾);
+Test_N(q꺿, q꺿, q꺿, q꺿, q꺿);
+Test_N(q껀, q껀, q껀, q껀, q껀);
+Test_N(q껁, q껁, q껁, q껁, q껁);
+Test_N(q껂, q껂, q껂, q껂, q껂);
+Test_N(q껃, q껃, q껃, q껃, q껃);
+Test_N(q껄, q껄, q껄, q껄, q껄);
+Test_N(q껅, q껅, q껅, q껅, q껅);
+Test_N(q껆, q껆, q껆, q껆, q껆);
+Test_N(q껇, q껇, q껇, q껇, q껇);
+Test_N(q껈, q껈, q껈, q껈, q껈);
+Test_N(q껉, q껉, q껉, q껉, q껉);
+Test_N(q껊, q껊, q껊, q껊, q껊);
+Test_N(q껋, q껋, q껋, q껋, q껋);
+Test_N(q껌, q껌, q껌, q껌, q껌);
+Test_N(q껍, q껍, q껍, q껍, q껍);
+Test_N(q껎, q껎, q껎, q껎, q껎);
+Test_N(q껏, q껏, q껏, q껏, q껏);
+Test_N(q껐, q껐, q껐, q껐, q껐);
+Test_N(q껑, q껑, q껑, q껑, q껑);
+Test_N(q껒, q껒, q껒, q껒, q껒);
+Test_N(q껓, q껓, q껓, q껓, q껓);
+Test_N(q껔, q껔, q껔, q껔, q껔);
+Test_N(q껕, q껕, q껕, q껕, q껕);
+Test_N(q껖, q껖, q껖, q껖, q껖);
+Test_N(q껗, q껗, q껗, q껗, q껗);
+Test_N(q께, q께, q께, q께, q께);
+Test_N(q껙, q껙, q껙, q껙, q껙);
+Test_N(q껚, q껚, q껚, q껚, q껚);
+Test_N(q껛, q껛, q껛, q껛, q껛);
+Test_N(q껜, q껜, q껜, q껜, q껜);
+Test_N(q껝, q껝, q껝, q껝, q껝);
+Test_N(q껞, q껞, q껞, q껞, q껞);
+Test_N(q껟, q껟, q껟, q껟, q껟);
+Test_N(q껠, q껠, q껠, q껠, q껠);
+Test_N(q껡, q껡, q껡, q껡, q껡);
+Test_N(q껢, q껢, q껢, q껢, q껢);
+Test_N(q껣, q껣, q껣, q껣, q껣);
+Test_N(q껤, q껤, q껤, q껤, q껤);
+Test_N(q껥, q껥, q껥, q껥, q껥);
+Test_N(q껦, q껦, q껦, q껦, q껦);
+Test_N(q껧, q껧, q껧, q껧, q껧);
+Test_N(q껨, q껨, q껨, q껨, q껨);
+Test_N(q껩, q껩, q껩, q껩, q껩);
+Test_N(q껪, q껪, q껪, q껪, q껪);
+Test_N(q껫, q껫, q껫, q껫, q껫);
+Test_N(q껬, q껬, q껬, q껬, q껬);
+Test_N(q껭, q껭, q껭, q껭, q껭);
+Test_N(q껮, q껮, q껮, q껮, q껮);
+Test_N(q껯, q껯, q껯, q껯, q껯);
+Test_N(q껰, q껰, q껰, q껰, q껰);
+Test_N(q껱, q껱, q껱, q껱, q껱);
+Test_N(q껲, q껲, q껲, q껲, q껲);
+Test_N(q껳, q껳, q껳, q껳, q껳);
+Test_N(q껴, q껴, q껴, q껴, q껴);
+Test_N(q껵, q껵, q껵, q껵, q껵);
+Test_N(q껶, q껶, q껶, q껶, q껶);
+Test_N(q껷, q껷, q껷, q껷, q껷);
+Test_N(q껸, q껸, q껸, q껸, q껸);
+Test_N(q껹, q껹, q껹, q껹, q껹);
+Test_N(q껺, q껺, q껺, q껺, q껺);
+Test_N(q껻, q껻, q껻, q껻, q껻);
+Test_N(q껼, q껼, q껼, q껼, q껼);
+Test_N(q껽, q껽, q껽, q껽, q껽);
+Test_N(q껾, q껾, q껾, q껾, q껾);
+Test_N(q껿, q껿, q껿, q껿, q껿);
+Test_N(q꼀, q꼀, q꼀, q꼀, q꼀);
+Test_N(q꼁, q꼁, q꼁, q꼁, q꼁);
+Test_N(q꼂, q꼂, q꼂, q꼂, q꼂);
+Test_N(q꼃, q꼃, q꼃, q꼃, q꼃);
+Test_N(q꼄, q꼄, q꼄, q꼄, q꼄);
+Test_N(q꼅, q꼅, q꼅, q꼅, q꼅);
+Test_N(q꼆, q꼆, q꼆, q꼆, q꼆);
+Test_N(q꼇, q꼇, q꼇, q꼇, q꼇);
+Test_N(q꼈, q꼈, q꼈, q꼈, q꼈);
+Test_N(q꼉, q꼉, q꼉, q꼉, q꼉);
+Test_N(q꼊, q꼊, q꼊, q꼊, q꼊);
+Test_N(q꼋, q꼋, q꼋, q꼋, q꼋);
+Test_N(q꼌, q꼌, q꼌, q꼌, q꼌);
+Test_N(q꼍, q꼍, q꼍, q꼍, q꼍);
+Test_N(q꼎, q꼎, q꼎, q꼎, q꼎);
+Test_N(q꼏, q꼏, q꼏, q꼏, q꼏);
+Test_N(q꼐, q꼐, q꼐, q꼐, q꼐);
+Test_N(q꼑, q꼑, q꼑, q꼑, q꼑);
+Test_N(q꼒, q꼒, q꼒, q꼒, q꼒);
+Test_N(q꼓, q꼓, q꼓, q꼓, q꼓);
+Test_N(q꼔, q꼔, q꼔, q꼔, q꼔);
+Test_N(q꼕, q꼕, q꼕, q꼕, q꼕);
+Test_N(q꼖, q꼖, q꼖, q꼖, q꼖);
+Test_N(q꼗, q꼗, q꼗, q꼗, q꼗);
+Test_N(q꼘, q꼘, q꼘, q꼘, q꼘);
+Test_N(q꼙, q꼙, q꼙, q꼙, q꼙);
+Test_N(q꼚, q꼚, q꼚, q꼚, q꼚);
+Test_N(q꼛, q꼛, q꼛, q꼛, q꼛);
+Test_N(q꼜, q꼜, q꼜, q꼜, q꼜);
+Test_N(q꼝, q꼝, q꼝, q꼝, q꼝);
+Test_N(q꼞, q꼞, q꼞, q꼞, q꼞);
+Test_N(q꼟, q꼟, q꼟, q꼟, q꼟);
+Test_N(q꼠, q꼠, q꼠, q꼠, q꼠);
+Test_N(q꼡, q꼡, q꼡, q꼡, q꼡);
+Test_N(q꼢, q꼢, q꼢, q꼢, q꼢);
+Test_N(q꼣, q꼣, q꼣, q꼣, q꼣);
+Test_N(q꼤, q꼤, q꼤, q꼤, q꼤);
+Test_N(q꼥, q꼥, q꼥, q꼥, q꼥);
+Test_N(q꼦, q꼦, q꼦, q꼦, q꼦);
+Test_N(q꼧, q꼧, q꼧, q꼧, q꼧);
+Test_N(q꼨, q꼨, q꼨, q꼨, q꼨);
+Test_N(q꼩, q꼩, q꼩, q꼩, q꼩);
+Test_N(q꼪, q꼪, q꼪, q꼪, q꼪);
+Test_N(q꼫, q꼫, q꼫, q꼫, q꼫);
+Test_N(q꼬, q꼬, q꼬, q꼬, q꼬);
+Test_N(q꼭, q꼭, q꼭, q꼭, q꼭);
+Test_N(q꼮, q꼮, q꼮, q꼮, q꼮);
+Test_N(q꼯, q꼯, q꼯, q꼯, q꼯);
+Test_N(q꼰, q꼰, q꼰, q꼰, q꼰);
+Test_N(q꼱, q꼱, q꼱, q꼱, q꼱);
+Test_N(q꼲, q꼲, q꼲, q꼲, q꼲);
+Test_N(q꼳, q꼳, q꼳, q꼳, q꼳);
+Test_N(q꼴, q꼴, q꼴, q꼴, q꼴);
+Test_N(q꼵, q꼵, q꼵, q꼵, q꼵);
+Test_N(q꼶, q꼶, q꼶, q꼶, q꼶);
+Test_N(q꼷, q꼷, q꼷, q꼷, q꼷);
+Test_N(q꼸, q꼸, q꼸, q꼸, q꼸);
+Test_N(q꼹, q꼹, q꼹, q꼹, q꼹);
+Test_N(q꼺, q꼺, q꼺, q꼺, q꼺);
+Test_N(q꼻, q꼻, q꼻, q꼻, q꼻);
+Test_N(q꼼, q꼼, q꼼, q꼼, q꼼);
+Test_N(q꼽, q꼽, q꼽, q꼽, q꼽);
+Test_N(q꼾, q꼾, q꼾, q꼾, q꼾);
+Test_N(q꼿, q꼿, q꼿, q꼿, q꼿);
+Test_N(q꽀, q꽀, q꽀, q꽀, q꽀);
+Test_N(q꽁, q꽁, q꽁, q꽁, q꽁);
+Test_N(q꽂, q꽂, q꽂, q꽂, q꽂);
+Test_N(q꽃, q꽃, q꽃, q꽃, q꽃);
+Test_N(q꽄, q꽄, q꽄, q꽄, q꽄);
+Test_N(q꽅, q꽅, q꽅, q꽅, q꽅);
+Test_N(q꽆, q꽆, q꽆, q꽆, q꽆);
+Test_N(q꽇, q꽇, q꽇, q꽇, q꽇);
+Test_N(q꽈, q꽈, q꽈, q꽈, q꽈);
+Test_N(q꽉, q꽉, q꽉, q꽉, q꽉);
+Test_N(q꽊, q꽊, q꽊, q꽊, q꽊);
+Test_N(q꽋, q꽋, q꽋, q꽋, q꽋);
+Test_N(q꽌, q꽌, q꽌, q꽌, q꽌);
+Test_N(q꽍, q꽍, q꽍, q꽍, q꽍);
+Test_N(q꽎, q꽎, q꽎, q꽎, q꽎);
+Test_N(q꽏, q꽏, q꽏, q꽏, q꽏);
+Test_N(q꽐, q꽐, q꽐, q꽐, q꽐);
+Test_N(q꽑, q꽑, q꽑, q꽑, q꽑);
+Test_N(q꽒, q꽒, q꽒, q꽒, q꽒);
+Test_N(q꽓, q꽓, q꽓, q꽓, q꽓);
+Test_N(q꽔, q꽔, q꽔, q꽔, q꽔);
+Test_N(q꽕, q꽕, q꽕, q꽕, q꽕);
+Test_N(q꽖, q꽖, q꽖, q꽖, q꽖);
+Test_N(q꽗, q꽗, q꽗, q꽗, q꽗);
+Test_N(q꽘, q꽘, q꽘, q꽘, q꽘);
+Test_N(q꽙, q꽙, q꽙, q꽙, q꽙);
+Test_N(q꽚, q꽚, q꽚, q꽚, q꽚);
+Test_N(q꽛, q꽛, q꽛, q꽛, q꽛);
+Test_N(q꽜, q꽜, q꽜, q꽜, q꽜);
+Test_N(q꽝, q꽝, q꽝, q꽝, q꽝);
+Test_N(q꽞, q꽞, q꽞, q꽞, q꽞);
+Test_N(q꽟, q꽟, q꽟, q꽟, q꽟);
+Test_N(q꽠, q꽠, q꽠, q꽠, q꽠);
+Test_N(q꽡, q꽡, q꽡, q꽡, q꽡);
+Test_N(q꽢, q꽢, q꽢, q꽢, q꽢);
+Test_N(q꽣, q꽣, q꽣, q꽣, q꽣);
+Test_N(q꽤, q꽤, q꽤, q꽤, q꽤);
+Test_N(q꽥, q꽥, q꽥, q꽥, q꽥);
+Test_N(q꽦, q꽦, q꽦, q꽦, q꽦);
+Test_N(q꽧, q꽧, q꽧, q꽧, q꽧);
+Test_N(q꽨, q꽨, q꽨, q꽨, q꽨);
+Test_N(q꽩, q꽩, q꽩, q꽩, q꽩);
+Test_N(q꽪, q꽪, q꽪, q꽪, q꽪);
+Test_N(q꽫, q꽫, q꽫, q꽫, q꽫);
+Test_N(q꽬, q꽬, q꽬, q꽬, q꽬);
+Test_N(q꽭, q꽭, q꽭, q꽭, q꽭);
+Test_N(q꽮, q꽮, q꽮, q꽮, q꽮);
+Test_N(q꽯, q꽯, q꽯, q꽯, q꽯);
+Test_N(q꽰, q꽰, q꽰, q꽰, q꽰);
+Test_N(q꽱, q꽱, q꽱, q꽱, q꽱);
+Test_N(q꽲, q꽲, q꽲, q꽲, q꽲);
+Test_N(q꽳, q꽳, q꽳, q꽳, q꽳);
+Test_N(q꽴, q꽴, q꽴, q꽴, q꽴);
+Test_N(q꽵, q꽵, q꽵, q꽵, q꽵);
+Test_N(q꽶, q꽶, q꽶, q꽶, q꽶);
+Test_N(q꽷, q꽷, q꽷, q꽷, q꽷);
+Test_N(q꽸, q꽸, q꽸, q꽸, q꽸);
+Test_N(q꽹, q꽹, q꽹, q꽹, q꽹);
+Test_N(q꽺, q꽺, q꽺, q꽺, q꽺);
+Test_N(q꽻, q꽻, q꽻, q꽻, q꽻);
+Test_N(q꽼, q꽼, q꽼, q꽼, q꽼);
+Test_N(q꽽, q꽽, q꽽, q꽽, q꽽);
+Test_N(q꽾, q꽾, q꽾, q꽾, q꽾);
+Test_N(q꽿, q꽿, q꽿, q꽿, q꽿);
+Test_N(q꾀, q꾀, q꾀, q꾀, q꾀);
+Test_N(q꾁, q꾁, q꾁, q꾁, q꾁);
+Test_N(q꾂, q꾂, q꾂, q꾂, q꾂);
+Test_N(q꾃, q꾃, q꾃, q꾃, q꾃);
+Test_N(q꾄, q꾄, q꾄, q꾄, q꾄);
+Test_N(q꾅, q꾅, q꾅, q꾅, q꾅);
+Test_N(q꾆, q꾆, q꾆, q꾆, q꾆);
+Test_N(q꾇, q꾇, q꾇, q꾇, q꾇);
+Test_N(q꾈, q꾈, q꾈, q꾈, q꾈);
+Test_N(q꾉, q꾉, q꾉, q꾉, q꾉);
+Test_N(q꾊, q꾊, q꾊, q꾊, q꾊);
+Test_N(q꾋, q꾋, q꾋, q꾋, q꾋);
+Test_N(q꾌, q꾌, q꾌, q꾌, q꾌);
+Test_N(q꾍, q꾍, q꾍, q꾍, q꾍);
+Test_N(q꾎, q꾎, q꾎, q꾎, q꾎);
+Test_N(q꾏, q꾏, q꾏, q꾏, q꾏);
+Test_N(q꾐, q꾐, q꾐, q꾐, q꾐);
+Test_N(q꾑, q꾑, q꾑, q꾑, q꾑);
+Test_N(q꾒, q꾒, q꾒, q꾒, q꾒);
+Test_N(q꾓, q꾓, q꾓, q꾓, q꾓);
+Test_N(q꾔, q꾔, q꾔, q꾔, q꾔);
+Test_N(q꾕, q꾕, q꾕, q꾕, q꾕);
+Test_N(q꾖, q꾖, q꾖, q꾖, q꾖);
+Test_N(q꾗, q꾗, q꾗, q꾗, q꾗);
+Test_N(q꾘, q꾘, q꾘, q꾘, q꾘);
+Test_N(q꾙, q꾙, q꾙, q꾙, q꾙);
+Test_N(q꾚, q꾚, q꾚, q꾚, q꾚);
+Test_N(q꾛, q꾛, q꾛, q꾛, q꾛);
+Test_N(q꾜, q꾜, q꾜, q꾜, q꾜);
+Test_N(q꾝, q꾝, q꾝, q꾝, q꾝);
+Test_N(q꾞, q꾞, q꾞, q꾞, q꾞);
+Test_N(q꾟, q꾟, q꾟, q꾟, q꾟);
+Test_N(q꾠, q꾠, q꾠, q꾠, q꾠);
+Test_N(q꾡, q꾡, q꾡, q꾡, q꾡);
+Test_N(q꾢, q꾢, q꾢, q꾢, q꾢);
+Test_N(q꾣, q꾣, q꾣, q꾣, q꾣);
+Test_N(q꾤, q꾤, q꾤, q꾤, q꾤);
+Test_N(q꾥, q꾥, q꾥, q꾥, q꾥);
+Test_N(q꾦, q꾦, q꾦, q꾦, q꾦);
+Test_N(q꾧, q꾧, q꾧, q꾧, q꾧);
+Test_N(q꾨, q꾨, q꾨, q꾨, q꾨);
+Test_N(q꾩, q꾩, q꾩, q꾩, q꾩);
+Test_N(q꾪, q꾪, q꾪, q꾪, q꾪);
+Test_N(q꾫, q꾫, q꾫, q꾫, q꾫);
+Test_N(q꾬, q꾬, q꾬, q꾬, q꾬);
+Test_N(q꾭, q꾭, q꾭, q꾭, q꾭);
+Test_N(q꾮, q꾮, q꾮, q꾮, q꾮);
+Test_N(q꾯, q꾯, q꾯, q꾯, q꾯);
+Test_N(q꾰, q꾰, q꾰, q꾰, q꾰);
+Test_N(q꾱, q꾱, q꾱, q꾱, q꾱);
+Test_N(q꾲, q꾲, q꾲, q꾲, q꾲);
+Test_N(q꾳, q꾳, q꾳, q꾳, q꾳);
+Test_N(q꾴, q꾴, q꾴, q꾴, q꾴);
+Test_N(q꾵, q꾵, q꾵, q꾵, q꾵);
+Test_N(q꾶, q꾶, q꾶, q꾶, q꾶);
+Test_N(q꾷, q꾷, q꾷, q꾷, q꾷);
+Test_N(q꾸, q꾸, q꾸, q꾸, q꾸);
+Test_N(q꾹, q꾹, q꾹, q꾹, q꾹);
+Test_N(q꾺, q꾺, q꾺, q꾺, q꾺);
+Test_N(q꾻, q꾻, q꾻, q꾻, q꾻);
+Test_N(q꾼, q꾼, q꾼, q꾼, q꾼);
+Test_N(q꾽, q꾽, q꾽, q꾽, q꾽);
+Test_N(q꾾, q꾾, q꾾, q꾾, q꾾);
+Test_N(q꾿, q꾿, q꾿, q꾿, q꾿);
+Test_N(q꿀, q꿀, q꿀, q꿀, q꿀);
+Test_N(q꿁, q꿁, q꿁, q꿁, q꿁);
+Test_N(q꿂, q꿂, q꿂, q꿂, q꿂);
+Test_N(q꿃, q꿃, q꿃, q꿃, q꿃);
+Test_N(q꿄, q꿄, q꿄, q꿄, q꿄);
+Test_N(q꿅, q꿅, q꿅, q꿅, q꿅);
+Test_N(q꿆, q꿆, q꿆, q꿆, q꿆);
+Test_N(q꿇, q꿇, q꿇, q꿇, q꿇);
+Test_N(q꿈, q꿈, q꿈, q꿈, q꿈);
+Test_N(q꿉, q꿉, q꿉, q꿉, q꿉);
+Test_N(q꿊, q꿊, q꿊, q꿊, q꿊);
+Test_N(q꿋, q꿋, q꿋, q꿋, q꿋);
+Test_N(q꿌, q꿌, q꿌, q꿌, q꿌);
+Test_N(q꿍, q꿍, q꿍, q꿍, q꿍);
+Test_N(q꿎, q꿎, q꿎, q꿎, q꿎);
+Test_N(q꿏, q꿏, q꿏, q꿏, q꿏);
+Test_N(q꿐, q꿐, q꿐, q꿐, q꿐);
+Test_N(q꿑, q꿑, q꿑, q꿑, q꿑);
+Test_N(q꿒, q꿒, q꿒, q꿒, q꿒);
+Test_N(q꿓, q꿓, q꿓, q꿓, q꿓);
+Test_N(q꿔, q꿔, q꿔, q꿔, q꿔);
+Test_N(q꿕, q꿕, q꿕, q꿕, q꿕);
+Test_N(q꿖, q꿖, q꿖, q꿖, q꿖);
+Test_N(q꿗, q꿗, q꿗, q꿗, q꿗);
+Test_N(q꿘, q꿘, q꿘, q꿘, q꿘);
+Test_N(q꿙, q꿙, q꿙, q꿙, q꿙);
+Test_N(q꿚, q꿚, q꿚, q꿚, q꿚);
+Test_N(q꿛, q꿛, q꿛, q꿛, q꿛);
+Test_N(q꿜, q꿜, q꿜, q꿜, q꿜);
+Test_N(q꿝, q꿝, q꿝, q꿝, q꿝);
+Test_N(q꿞, q꿞, q꿞, q꿞, q꿞);
+Test_N(q꿟, q꿟, q꿟, q꿟, q꿟);
+Test_N(q꿠, q꿠, q꿠, q꿠, q꿠);
+Test_N(q꿡, q꿡, q꿡, q꿡, q꿡);
+Test_N(q꿢, q꿢, q꿢, q꿢, q꿢);
+Test_N(q꿣, q꿣, q꿣, q꿣, q꿣);
+Test_N(q꿤, q꿤, q꿤, q꿤, q꿤);
+Test_N(q꿥, q꿥, q꿥, q꿥, q꿥);
+Test_N(q꿦, q꿦, q꿦, q꿦, q꿦);
+Test_N(q꿧, q꿧, q꿧, q꿧, q꿧);
+Test_N(q꿨, q꿨, q꿨, q꿨, q꿨);
+Test_N(q꿩, q꿩, q꿩, q꿩, q꿩);
+Test_N(q꿪, q꿪, q꿪, q꿪, q꿪);
+Test_N(q꿫, q꿫, q꿫, q꿫, q꿫);
+Test_N(q꿬, q꿬, q꿬, q꿬, q꿬);
+Test_N(q꿭, q꿭, q꿭, q꿭, q꿭);
+Test_N(q꿮, q꿮, q꿮, q꿮, q꿮);
+Test_N(q꿯, q꿯, q꿯, q꿯, q꿯);
+Test_N(q꿰, q꿰, q꿰, q꿰, q꿰);
+Test_N(q꿱, q꿱, q꿱, q꿱, q꿱);
+Test_N(q꿲, q꿲, q꿲, q꿲, q꿲);
+Test_N(q꿳, q꿳, q꿳, q꿳, q꿳);
+Test_N(q꿴, q꿴, q꿴, q꿴, q꿴);
+Test_N(q꿵, q꿵, q꿵, q꿵, q꿵);
+Test_N(q꿶, q꿶, q꿶, q꿶, q꿶);
+Test_N(q꿷, q꿷, q꿷, q꿷, q꿷);
+Test_N(q꿸, q꿸, q꿸, q꿸, q꿸);
+Test_N(q꿹, q꿹, q꿹, q꿹, q꿹);
+Test_N(q꿺, q꿺, q꿺, q꿺, q꿺);
+Test_N(q꿻, q꿻, q꿻, q꿻, q꿻);
+Test_N(q꿼, q꿼, q꿼, q꿼, q꿼);
+Test_N(q꿽, q꿽, q꿽, q꿽, q꿽);
+Test_N(q꿾, q꿾, q꿾, q꿾, q꿾);
+Test_N(q꿿, q꿿, q꿿, q꿿, q꿿);
+Test_N(q뀀, q뀀, q뀀, q뀀, q뀀);
+Test_N(q뀁, q뀁, q뀁, q뀁, q뀁);
+Test_N(q뀂, q뀂, q뀂, q뀂, q뀂);
+Test_N(q뀃, q뀃, q뀃, q뀃, q뀃);
+Test_N(q뀄, q뀄, q뀄, q뀄, q뀄);
+Test_N(q뀅, q뀅, q뀅, q뀅, q뀅);
+Test_N(q뀆, q뀆, q뀆, q뀆, q뀆);
+Test_N(q뀇, q뀇, q뀇, q뀇, q뀇);
+Test_N(q뀈, q뀈, q뀈, q뀈, q뀈);
+Test_N(q뀉, q뀉, q뀉, q뀉, q뀉);
+Test_N(q뀊, q뀊, q뀊, q뀊, q뀊);
+Test_N(q뀋, q뀋, q뀋, q뀋, q뀋);
+Test_N(q뀌, q뀌, q뀌, q뀌, q뀌);
+Test_N(q뀍, q뀍, q뀍, q뀍, q뀍);
+Test_N(q뀎, q뀎, q뀎, q뀎, q뀎);
+Test_N(q뀏, q뀏, q뀏, q뀏, q뀏);
+Test_N(q뀐, q뀐, q뀐, q뀐, q뀐);
+Test_N(q뀑, q뀑, q뀑, q뀑, q뀑);
+Test_N(q뀒, q뀒, q뀒, q뀒, q뀒);
+Test_N(q뀓, q뀓, q뀓, q뀓, q뀓);
+Test_N(q뀔, q뀔, q뀔, q뀔, q뀔);
+Test_N(q뀕, q뀕, q뀕, q뀕, q뀕);
+Test_N(q뀖, q뀖, q뀖, q뀖, q뀖);
+Test_N(q뀗, q뀗, q뀗, q뀗, q뀗);
+Test_N(q뀘, q뀘, q뀘, q뀘, q뀘);
+Test_N(q뀙, q뀙, q뀙, q뀙, q뀙);
+Test_N(q뀚, q뀚, q뀚, q뀚, q뀚);
+Test_N(q뀛, q뀛, q뀛, q뀛, q뀛);
+Test_N(q뀜, q뀜, q뀜, q뀜, q뀜);
+Test_N(q뀝, q뀝, q뀝, q뀝, q뀝);
+Test_N(q뀞, q뀞, q뀞, q뀞, q뀞);
+Test_N(q뀟, q뀟, q뀟, q뀟, q뀟);
+Test_N(q뀠, q뀠, q뀠, q뀠, q뀠);
+Test_N(q뀡, q뀡, q뀡, q뀡, q뀡);
+Test_N(q뀢, q뀢, q뀢, q뀢, q뀢);
+Test_N(q뀣, q뀣, q뀣, q뀣, q뀣);
+Test_N(q뀤, q뀤, q뀤, q뀤, q뀤);
+Test_N(q뀥, q뀥, q뀥, q뀥, q뀥);
+Test_N(q뀦, q뀦, q뀦, q뀦, q뀦);
+Test_N(q뀧, q뀧, q뀧, q뀧, q뀧);
+Test_N(q뀨, q뀨, q뀨, q뀨, q뀨);
+Test_N(q뀩, q뀩, q뀩, q뀩, q뀩);
+Test_N(q뀪, q뀪, q뀪, q뀪, q뀪);
+Test_N(q뀫, q뀫, q뀫, q뀫, q뀫);
+Test_N(q뀬, q뀬, q뀬, q뀬, q뀬);
+Test_N(q뀭, q뀭, q뀭, q뀭, q뀭);
+Test_N(q뀮, q뀮, q뀮, q뀮, q뀮);
+Test_N(q뀯, q뀯, q뀯, q뀯, q뀯);
+Test_N(q뀰, q뀰, q뀰, q뀰, q뀰);
+Test_N(q뀱, q뀱, q뀱, q뀱, q뀱);
+Test_N(q뀲, q뀲, q뀲, q뀲, q뀲);
+Test_N(q뀳, q뀳, q뀳, q뀳, q뀳);
+Test_N(q뀴, q뀴, q뀴, q뀴, q뀴);
+Test_N(q뀵, q뀵, q뀵, q뀵, q뀵);
+Test_N(q뀶, q뀶, q뀶, q뀶, q뀶);
+Test_N(q뀷, q뀷, q뀷, q뀷, q뀷);
+Test_N(q뀸, q뀸, q뀸, q뀸, q뀸);
+Test_N(q뀹, q뀹, q뀹, q뀹, q뀹);
+Test_N(q뀺, q뀺, q뀺, q뀺, q뀺);
+Test_N(q뀻, q뀻, q뀻, q뀻, q뀻);
+Test_N(q뀼, q뀼, q뀼, q뀼, q뀼);
+Test_N(q뀽, q뀽, q뀽, q뀽, q뀽);
+Test_N(q뀾, q뀾, q뀾, q뀾, q뀾);
+Test_N(q뀿, q뀿, q뀿, q뀿, q뀿);
+Test_N(q끀, q끀, q끀, q끀, q끀);
+Test_N(q끁, q끁, q끁, q끁, q끁);
+Test_N(q끂, q끂, q끂, q끂, q끂);
+Test_N(q끃, q끃, q끃, q끃, q끃);
+Test_N(q끄, q끄, q끄, q끄, q끄);
+Test_N(q끅, q끅, q끅, q끅, q끅);
+Test_N(q끆, q끆, q끆, q끆, q끆);
+Test_N(q끇, q끇, q끇, q끇, q끇);
+Test_N(q끈, q끈, q끈, q끈, q끈);
+Test_N(q끉, q끉, q끉, q끉, q끉);
+Test_N(q끊, q끊, q끊, q끊, q끊);
+Test_N(q끋, q끋, q끋, q끋, q끋);
+Test_N(q끌, q끌, q끌, q끌, q끌);
+Test_N(q끍, q끍, q끍, q끍, q끍);
+Test_N(q끎, q끎, q끎, q끎, q끎);
+Test_N(q끏, q끏, q끏, q끏, q끏);
+Test_N(q끐, q끐, q끐, q끐, q끐);
+Test_N(q끑, q끑, q끑, q끑, q끑);
+Test_N(q끒, q끒, q끒, q끒, q끒);
+Test_N(q끓, q끓, q끓, q끓, q끓);
+Test_N(q끔, q끔, q끔, q끔, q끔);
+Test_N(q끕, q끕, q끕, q끕, q끕);
+Test_N(q끖, q끖, q끖, q끖, q끖);
+Test_N(q끗, q끗, q끗, q끗, q끗);
+Test_N(q끘, q끘, q끘, q끘, q끘);
+Test_N(q끙, q끙, q끙, q끙, q끙);
+Test_N(q끚, q끚, q끚, q끚, q끚);
+Test_N(q끛, q끛, q끛, q끛, q끛);
+Test_N(q끜, q끜, q끜, q끜, q끜);
+Test_N(q끝, q끝, q끝, q끝, q끝);
+Test_N(q끞, q끞, q끞, q끞, q끞);
+Test_N(q끟, q끟, q끟, q끟, q끟);
+Test_N(q끠, q끠, q끠, q끠, q끠);
+Test_N(q끡, q끡, q끡, q끡, q끡);
+Test_N(q끢, q끢, q끢, q끢, q끢);
+Test_N(q끣, q끣, q끣, q끣, q끣);
+Test_N(q끤, q끤, q끤, q끤, q끤);
+Test_N(q끥, q끥, q끥, q끥, q끥);
+Test_N(q끦, q끦, q끦, q끦, q끦);
+Test_N(q끧, q끧, q끧, q끧, q끧);
+Test_N(q끨, q끨, q끨, q끨, q끨);
+Test_N(q끩, q끩, q끩, q끩, q끩);
+Test_N(q끪, q끪, q끪, q끪, q끪);
+Test_N(q끫, q끫, q끫, q끫, q끫);
+Test_N(q끬, q끬, q끬, q끬, q끬);
+Test_N(q끭, q끭, q끭, q끭, q끭);
+Test_N(q끮, q끮, q끮, q끮, q끮);
+Test_N(q끯, q끯, q끯, q끯, q끯);
+Test_N(q끰, q끰, q끰, q끰, q끰);
+Test_N(q끱, q끱, q끱, q끱, q끱);
+Test_N(q끲, q끲, q끲, q끲, q끲);
+Test_N(q끳, q끳, q끳, q끳, q끳);
+Test_N(q끴, q끴, q끴, q끴, q끴);
+Test_N(q끵, q끵, q끵, q끵, q끵);
+Test_N(q끶, q끶, q끶, q끶, q끶);
+Test_N(q끷, q끷, q끷, q끷, q끷);
+Test_N(q끸, q끸, q끸, q끸, q끸);
+Test_N(q끹, q끹, q끹, q끹, q끹);
+Test_N(q끺, q끺, q끺, q끺, q끺);
+Test_N(q끻, q끻, q끻, q끻, q끻);
+Test_N(q끼, q끼, q끼, q끼, q끼);
+Test_N(q끽, q끽, q끽, q끽, q끽);
+Test_N(q끾, q끾, q끾, q끾, q끾);
+Test_N(q끿, q끿, q끿, q끿, q끿);
+Test_N(q낀, q낀, q낀, q낀, q낀);
+Test_N(q낁, q낁, q낁, q낁, q낁);
+Test_N(q낂, q낂, q낂, q낂, q낂);
+Test_N(q낃, q낃, q낃, q낃, q낃);
+Test_N(q낄, q낄, q낄, q낄, q낄);
+Test_N(q낅, q낅, q낅, q낅, q낅);
+Test_N(q낆, q낆, q낆, q낆, q낆);
+Test_N(q낇, q낇, q낇, q낇, q낇);
+Test_N(q낈, q낈, q낈, q낈, q낈);
+Test_N(q낉, q낉, q낉, q낉, q낉);
+Test_N(q낊, q낊, q낊, q낊, q낊);
+Test_N(q낋, q낋, q낋, q낋, q낋);
+Test_N(q낌, q낌, q낌, q낌, q낌);
+Test_N(q낍, q낍, q낍, q낍, q낍);
+Test_N(q낎, q낎, q낎, q낎, q낎);
+Test_N(q낏, q낏, q낏, q낏, q낏);
+Test_N(q낐, q낐, q낐, q낐, q낐);
+Test_N(q낑, q낑, q낑, q낑, q낑);
+Test_N(q낒, q낒, q낒, q낒, q낒);
+Test_N(q낓, q낓, q낓, q낓, q낓);
+Test_N(q낔, q낔, q낔, q낔, q낔);
+Test_N(q낕, q낕, q낕, q낕, q낕);
+Test_N(q낖, q낖, q낖, q낖, q낖);
+Test_N(q낗, q낗, q낗, q낗, q낗);
+Test_N(q나, q나, q나, q나, q나);
+Test_N(q낙, q낙, q낙, q낙, q낙);
+Test_N(q낚, q낚, q낚, q낚, q낚);
+Test_N(q낛, q낛, q낛, q낛, q낛);
+Test_N(q난, q난, q난, q난, q난);
+Test_N(q낝, q낝, q낝, q낝, q낝);
+Test_N(q낞, q낞, q낞, q낞, q낞);
+Test_N(q낟, q낟, q낟, q낟, q낟);
+Test_N(q날, q날, q날, q날, q날);
+Test_N(q낡, q낡, q낡, q낡, q낡);
+Test_N(q낢, q낢, q낢, q낢, q낢);
+Test_N(q낣, q낣, q낣, q낣, q낣);
+Test_N(q낤, q낤, q낤, q낤, q낤);
+Test_N(q낥, q낥, q낥, q낥, q낥);
+Test_N(q낦, q낦, q낦, q낦, q낦);
+Test_N(q낧, q낧, q낧, q낧, q낧);
+Test_N(q남, q남, q남, q남, q남);
+Test_N(q납, q납, q납, q납, q납);
+Test_N(q낪, q낪, q낪, q낪, q낪);
+Test_N(q낫, q낫, q낫, q낫, q낫);
+Test_N(q났, q났, q났, q났, q났);
+Test_N(q낭, q낭, q낭, q낭, q낭);
+Test_N(q낮, q낮, q낮, q낮, q낮);
+Test_N(q낯, q낯, q낯, q낯, q낯);
+Test_N(q낰, q낰, q낰, q낰, q낰);
+Test_N(q낱, q낱, q낱, q낱, q낱);
+Test_N(q낲, q낲, q낲, q낲, q낲);
+Test_N(q낳, q낳, q낳, q낳, q낳);
+Test_N(q내, q내, q내, q내, q내);
+Test_N(q낵, q낵, q낵, q낵, q낵);
+Test_N(q낶, q낶, q낶, q낶, q낶);
+Test_N(q낷, q낷, q낷, q낷, q낷);
+Test_N(q낸, q낸, q낸, q낸, q낸);
+Test_N(q낹, q낹, q낹, q낹, q낹);
+Test_N(q낺, q낺, q낺, q낺, q낺);
+Test_N(q낻, q낻, q낻, q낻, q낻);
+Test_N(q낼, q낼, q낼, q낼, q낼);
+Test_N(q낽, q낽, q낽, q낽, q낽);
+Test_N(q낾, q낾, q낾, q낾, q낾);
+Test_N(q낿, q낿, q낿, q낿, q낿);
+Test_N(q냀, q냀, q냀, q냀, q냀);
+Test_N(q냁, q냁, q냁, q냁, q냁);
+Test_N(q냂, q냂, q냂, q냂, q냂);
+Test_N(q냃, q냃, q냃, q냃, q냃);
+Test_N(q냄, q냄, q냄, q냄, q냄);
+Test_N(q냅, q냅, q냅, q냅, q냅);
+Test_N(q냆, q냆, q냆, q냆, q냆);
+Test_N(q냇, q냇, q냇, q냇, q냇);
+Test_N(q냈, q냈, q냈, q냈, q냈);
+Test_N(q냉, q냉, q냉, q냉, q냉);
+Test_N(q냊, q냊, q냊, q냊, q냊);
+Test_N(q냋, q냋, q냋, q냋, q냋);
+Test_N(q냌, q냌, q냌, q냌, q냌);
+Test_N(q냍, q냍, q냍, q냍, q냍);
+Test_N(q냎, q냎, q냎, q냎, q냎);
+Test_N(q냏, q냏, q냏, q냏, q냏);
+Test_N(q냐, q냐, q냐, q냐, q냐);
+Test_N(q냑, q냑, q냑, q냑, q냑);
+Test_N(q냒, q냒, q냒, q냒, q냒);
+Test_N(q냓, q냓, q냓, q냓, q냓);
+Test_N(q냔, q냔, q냔, q냔, q냔);
+Test_N(q냕, q냕, q냕, q냕, q냕);
+Test_N(q냖, q냖, q냖, q냖, q냖);
+Test_N(q냗, q냗, q냗, q냗, q냗);
+Test_N(q냘, q냘, q냘, q냘, q냘);
+Test_N(q냙, q냙, q냙, q냙, q냙);
+Test_N(q냚, q냚, q냚, q냚, q냚);
+Test_N(q냛, q냛, q냛, q냛, q냛);
+Test_N(q냜, q냜, q냜, q냜, q냜);
+Test_N(q냝, q냝, q냝, q냝, q냝);
+Test_N(q냞, q냞, q냞, q냞, q냞);
+Test_N(q냟, q냟, q냟, q냟, q냟);
+Test_N(q냠, q냠, q냠, q냠, q냠);
+Test_N(q냡, q냡, q냡, q냡, q냡);
+Test_N(q냢, q냢, q냢, q냢, q냢);
+Test_N(q냣, q냣, q냣, q냣, q냣);
+Test_N(q냤, q냤, q냤, q냤, q냤);
+Test_N(q냥, q냥, q냥, q냥, q냥);
+Test_N(q냦, q냦, q냦, q냦, q냦);
+Test_N(q냧, q냧, q냧, q냧, q냧);
+Test_N(q냨, q냨, q냨, q냨, q냨);
+Test_N(q냩, q냩, q냩, q냩, q냩);
+Test_N(q냪, q냪, q냪, q냪, q냪);
+Test_N(q냫, q냫, q냫, q냫, q냫);
+Test_N(q냬, q냬, q냬, q냬, q냬);
+Test_N(q냭, q냭, q냭, q냭, q냭);
+Test_N(q냮, q냮, q냮, q냮, q냮);
+Test_N(q냯, q냯, q냯, q냯, q냯);
+Test_N(q냰, q냰, q냰, q냰, q냰);
+Test_N(q냱, q냱, q냱, q냱, q냱);
+Test_N(q냲, q냲, q냲, q냲, q냲);
+Test_N(q냳, q냳, q냳, q냳, q냳);
+Test_N(q냴, q냴, q냴, q냴, q냴);
+Test_N(q냵, q냵, q냵, q냵, q냵);
+Test_N(q냶, q냶, q냶, q냶, q냶);
+Test_N(q냷, q냷, q냷, q냷, q냷);
+Test_N(q냸, q냸, q냸, q냸, q냸);
+Test_N(q냹, q냹, q냹, q냹, q냹);
+Test_N(q냺, q냺, q냺, q냺, q냺);
+Test_N(q냻, q냻, q냻, q냻, q냻);
+Test_N(q냼, q냼, q냼, q냼, q냼);
+Test_N(q냽, q냽, q냽, q냽, q냽);
+Test_N(q냾, q냾, q냾, q냾, q냾);
+Test_N(q냿, q냿, q냿, q냿, q냿);
+Test_N(q넀, q넀, q넀, q넀, q넀);
+Test_N(q넁, q넁, q넁, q넁, q넁);
+Test_N(q넂, q넂, q넂, q넂, q넂);
+Test_N(q넃, q넃, q넃, q넃, q넃);
+Test_N(q넄, q넄, q넄, q넄, q넄);
+Test_N(q넅, q넅, q넅, q넅, q넅);
+Test_N(q넆, q넆, q넆, q넆, q넆);
+Test_N(q넇, q넇, q넇, q넇, q넇);
+Test_N(q너, q너, q너, q너, q너);
+Test_N(q넉, q넉, q넉, q넉, q넉);
+Test_N(q넊, q넊, q넊, q넊, q넊);
+Test_N(q넋, q넋, q넋, q넋, q넋);
+Test_N(q넌, q넌, q넌, q넌, q넌);
+Test_N(q넍, q넍, q넍, q넍, q넍);
+Test_N(q넎, q넎, q넎, q넎, q넎);
+Test_N(q넏, q넏, q넏, q넏, q넏);
+Test_N(q널, q널, q널, q널, q널);
+Test_N(q넑, q넑, q넑, q넑, q넑);
+Test_N(q넒, q넒, q넒, q넒, q넒);
+Test_N(q넓, q넓, q넓, q넓, q넓);
+Test_N(q넔, q넔, q넔, q넔, q넔);
+Test_N(q넕, q넕, q넕, q넕, q넕);
+Test_N(q넖, q넖, q넖, q넖, q넖);
+Test_N(q넗, q넗, q넗, q넗, q넗);
+Test_N(q넘, q넘, q넘, q넘, q넘);
+Test_N(q넙, q넙, q넙, q넙, q넙);
+Test_N(q넚, q넚, q넚, q넚, q넚);
+Test_N(q넛, q넛, q넛, q넛, q넛);
+Test_N(q넜, q넜, q넜, q넜, q넜);
+Test_N(q넝, q넝, q넝, q넝, q넝);
+Test_N(q넞, q넞, q넞, q넞, q넞);
+Test_N(q넟, q넟, q넟, q넟, q넟);
+Test_N(q넠, q넠, q넠, q넠, q넠);
+Test_N(q넡, q넡, q넡, q넡, q넡);
+Test_N(q넢, q넢, q넢, q넢, q넢);
+Test_N(q넣, q넣, q넣, q넣, q넣);
+Test_N(q네, q네, q네, q네, q네);
+Test_N(q넥, q넥, q넥, q넥, q넥);
+Test_N(q넦, q넦, q넦, q넦, q넦);
+Test_N(q넧, q넧, q넧, q넧, q넧);
+Test_N(q넨, q넨, q넨, q넨, q넨);
+Test_N(q넩, q넩, q넩, q넩, q넩);
+Test_N(q넪, q넪, q넪, q넪, q넪);
+Test_N(q넫, q넫, q넫, q넫, q넫);
+Test_N(q넬, q넬, q넬, q넬, q넬);
+Test_N(q넭, q넭, q넭, q넭, q넭);
+Test_N(q넮, q넮, q넮, q넮, q넮);
+Test_N(q넯, q넯, q넯, q넯, q넯);
+Test_N(q넰, q넰, q넰, q넰, q넰);
+Test_N(q넱, q넱, q넱, q넱, q넱);
+Test_N(q넲, q넲, q넲, q넲, q넲);
+Test_N(q넳, q넳, q넳, q넳, q넳);
+Test_N(q넴, q넴, q넴, q넴, q넴);
+Test_N(q넵, q넵, q넵, q넵, q넵);
+Test_N(q넶, q넶, q넶, q넶, q넶);
+Test_N(q넷, q넷, q넷, q넷, q넷);
+Test_N(q넸, q넸, q넸, q넸, q넸);
+Test_N(q넹, q넹, q넹, q넹, q넹);
+Test_N(q넺, q넺, q넺, q넺, q넺);
+Test_N(q넻, q넻, q넻, q넻, q넻);
+Test_N(q넼, q넼, q넼, q넼, q넼);
+Test_N(q넽, q넽, q넽, q넽, q넽);
+Test_N(q넾, q넾, q넾, q넾, q넾);
+Test_N(q넿, q넿, q넿, q넿, q넿);
+Test_N(q녀, q녀, q녀, q녀, q녀);
+Test_N(q녁, q녁, q녁, q녁, q녁);
+Test_N(q녂, q녂, q녂, q녂, q녂);
+Test_N(q녃, q녃, q녃, q녃, q녃);
+Test_N(q년, q년, q년, q년, q년);
+Test_N(q녅, q녅, q녅, q녅, q녅);
+Test_N(q녆, q녆, q녆, q녆, q녆);
+Test_N(q녇, q녇, q녇, q녇, q녇);
+Test_N(q녈, q녈, q녈, q녈, q녈);
+Test_N(q녉, q녉, q녉, q녉, q녉);
+Test_N(q녊, q녊, q녊, q녊, q녊);
+Test_N(q녋, q녋, q녋, q녋, q녋);
+Test_N(q녌, q녌, q녌, q녌, q녌);
+Test_N(q녍, q녍, q녍, q녍, q녍);
+Test_N(q녎, q녎, q녎, q녎, q녎);
+Test_N(q녏, q녏, q녏, q녏, q녏);
+Test_N(q념, q념, q념, q념, q념);
+Test_N(q녑, q녑, q녑, q녑, q녑);
+Test_N(q녒, q녒, q녒, q녒, q녒);
+Test_N(q녓, q녓, q녓, q녓, q녓);
+Test_N(q녔, q녔, q녔, q녔, q녔);
+Test_N(q녕, q녕, q녕, q녕, q녕);
+Test_N(q녖, q녖, q녖, q녖, q녖);
+Test_N(q녗, q녗, q녗, q녗, q녗);
+Test_N(q녘, q녘, q녘, q녘, q녘);
+Test_N(q녙, q녙, q녙, q녙, q녙);
+Test_N(q녚, q녚, q녚, q녚, q녚);
+Test_N(q녛, q녛, q녛, q녛, q녛);
+Test_N(q녜, q녜, q녜, q녜, q녜);
+Test_N(q녝, q녝, q녝, q녝, q녝);
+Test_N(q녞, q녞, q녞, q녞, q녞);
+Test_N(q녟, q녟, q녟, q녟, q녟);
+Test_N(q녠, q녠, q녠, q녠, q녠);
+Test_N(q녡, q녡, q녡, q녡, q녡);
+Test_N(q녢, q녢, q녢, q녢, q녢);
+Test_N(q녣, q녣, q녣, q녣, q녣);
+Test_N(q녤, q녤, q녤, q녤, q녤);
+Test_N(q녥, q녥, q녥, q녥, q녥);
+Test_N(q녦, q녦, q녦, q녦, q녦);
+Test_N(q녧, q녧, q녧, q녧, q녧);
+Test_N(q녨, q녨, q녨, q녨, q녨);
+Test_N(q녩, q녩, q녩, q녩, q녩);
+Test_N(q녪, q녪, q녪, q녪, q녪);
+Test_N(q녫, q녫, q녫, q녫, q녫);
+Test_N(q녬, q녬, q녬, q녬, q녬);
+Test_N(q녭, q녭, q녭, q녭, q녭);
+Test_N(q녮, q녮, q녮, q녮, q녮);
+Test_N(q녯, q녯, q녯, q녯, q녯);
+Test_N(q녰, q녰, q녰, q녰, q녰);
+Test_N(q녱, q녱, q녱, q녱, q녱);
+Test_N(q녲, q녲, q녲, q녲, q녲);
+Test_N(q녳, q녳, q녳, q녳, q녳);
+Test_N(q녴, q녴, q녴, q녴, q녴);
+Test_N(q녵, q녵, q녵, q녵, q녵);
+Test_N(q녶, q녶, q녶, q녶, q녶);
+Test_N(q녷, q녷, q녷, q녷, q녷);
+Test_N(q노, q노, q노, q노, q노);
+Test_N(q녹, q녹, q녹, q녹, q녹);
+Test_N(q녺, q녺, q녺, q녺, q녺);
+Test_N(q녻, q녻, q녻, q녻, q녻);
+Test_N(q논, q논, q논, q논, q논);
+Test_N(q녽, q녽, q녽, q녽, q녽);
+Test_N(q녾, q녾, q녾, q녾, q녾);
+Test_N(q녿, q녿, q녿, q녿, q녿);
+Test_N(q놀, q놀, q놀, q놀, q놀);
+Test_N(q놁, q놁, q놁, q놁, q놁);
+Test_N(q놂, q놂, q놂, q놂, q놂);
+Test_N(q놃, q놃, q놃, q놃, q놃);
+Test_N(q놄, q놄, q놄, q놄, q놄);
+Test_N(q놅, q놅, q놅, q놅, q놅);
+Test_N(q놆, q놆, q놆, q놆, q놆);
+Test_N(q놇, q놇, q놇, q놇, q놇);
+Test_N(q놈, q놈, q놈, q놈, q놈);
+Test_N(q놉, q놉, q놉, q놉, q놉);
+Test_N(q놊, q놊, q놊, q놊, q놊);
+Test_N(q놋, q놋, q놋, q놋, q놋);
+Test_N(q놌, q놌, q놌, q놌, q놌);
+Test_N(q농, q농, q농, q농, q농);
+Test_N(q놎, q놎, q놎, q놎, q놎);
+Test_N(q놏, q놏, q놏, q놏, q놏);
+Test_N(q놐, q놐, q놐, q놐, q놐);
+Test_N(q놑, q놑, q놑, q놑, q놑);
+Test_N(q높, q높, q높, q높, q높);
+Test_N(q놓, q놓, q놓, q놓, q놓);
+Test_N(q놔, q놔, q놔, q놔, q놔);
+Test_N(q놕, q놕, q놕, q놕, q놕);
+Test_N(q놖, q놖, q놖, q놖, q놖);
+Test_N(q놗, q놗, q놗, q놗, q놗);
+Test_N(q놘, q놘, q놘, q놘, q놘);
+Test_N(q놙, q놙, q놙, q놙, q놙);
+Test_N(q놚, q놚, q놚, q놚, q놚);
+Test_N(q놛, q놛, q놛, q놛, q놛);
+Test_N(q놜, q놜, q놜, q놜, q놜);
+Test_N(q놝, q놝, q놝, q놝, q놝);
+Test_N(q놞, q놞, q놞, q놞, q놞);
+Test_N(q놟, q놟, q놟, q놟, q놟);
+Test_N(q놠, q놠, q놠, q놠, q놠);
+Test_N(q놡, q놡, q놡, q놡, q놡);
+Test_N(q놢, q놢, q놢, q놢, q놢);
+Test_N(q놣, q놣, q놣, q놣, q놣);
+Test_N(q놤, q놤, q놤, q놤, q놤);
+Test_N(q놥, q놥, q놥, q놥, q놥);
+Test_N(q놦, q놦, q놦, q놦, q놦);
+Test_N(q놧, q놧, q놧, q놧, q놧);
+Test_N(q놨, q놨, q놨, q놨, q놨);
+Test_N(q놩, q놩, q놩, q놩, q놩);
+Test_N(q놪, q놪, q놪, q놪, q놪);
+Test_N(q놫, q놫, q놫, q놫, q놫);
+Test_N(q놬, q놬, q놬, q놬, q놬);
+Test_N(q놭, q놭, q놭, q놭, q놭);
+Test_N(q놮, q놮, q놮, q놮, q놮);
+Test_N(q놯, q놯, q놯, q놯, q놯);
+Test_N(q놰, q놰, q놰, q놰, q놰);
+Test_N(q놱, q놱, q놱, q놱, q놱);
+Test_N(q놲, q놲, q놲, q놲, q놲);
+Test_N(q놳, q놳, q놳, q놳, q놳);
+Test_N(q놴, q놴, q놴, q놴, q놴);
+Test_N(q놵, q놵, q놵, q놵, q놵);
+Test_N(q놶, q놶, q놶, q놶, q놶);
+Test_N(q놷, q놷, q놷, q놷, q놷);
+Test_N(q놸, q놸, q놸, q놸, q놸);
+Test_N(q놹, q놹, q놹, q놹, q놹);
+Test_N(q놺, q놺, q놺, q놺, q놺);
+Test_N(q놻, q놻, q놻, q놻, q놻);
+Test_N(q놼, q놼, q놼, q놼, q놼);
+Test_N(q놽, q놽, q놽, q놽, q놽);
+Test_N(q놾, q놾, q놾, q놾, q놾);
+Test_N(q놿, q놿, q놿, q놿, q놿);
+Test_N(q뇀, q뇀, q뇀, q뇀, q뇀);
+Test_N(q뇁, q뇁, q뇁, q뇁, q뇁);
+Test_N(q뇂, q뇂, q뇂, q뇂, q뇂);
+Test_N(q뇃, q뇃, q뇃, q뇃, q뇃);
+Test_N(q뇄, q뇄, q뇄, q뇄, q뇄);
+Test_N(q뇅, q뇅, q뇅, q뇅, q뇅);
+Test_N(q뇆, q뇆, q뇆, q뇆, q뇆);
+Test_N(q뇇, q뇇, q뇇, q뇇, q뇇);
+Test_N(q뇈, q뇈, q뇈, q뇈, q뇈);
+Test_N(q뇉, q뇉, q뇉, q뇉, q뇉);
+Test_N(q뇊, q뇊, q뇊, q뇊, q뇊);
+Test_N(q뇋, q뇋, q뇋, q뇋, q뇋);
+Test_N(q뇌, q뇌, q뇌, q뇌, q뇌);
+Test_N(q뇍, q뇍, q뇍, q뇍, q뇍);
+Test_N(q뇎, q뇎, q뇎, q뇎, q뇎);
+Test_N(q뇏, q뇏, q뇏, q뇏, q뇏);
+Test_N(q뇐, q뇐, q뇐, q뇐, q뇐);
+Test_N(q뇑, q뇑, q뇑, q뇑, q뇑);
+Test_N(q뇒, q뇒, q뇒, q뇒, q뇒);
+Test_N(q뇓, q뇓, q뇓, q뇓, q뇓);
+Test_N(q뇔, q뇔, q뇔, q뇔, q뇔);
+Test_N(q뇕, q뇕, q뇕, q뇕, q뇕);
+Test_N(q뇖, q뇖, q뇖, q뇖, q뇖);
+Test_N(q뇗, q뇗, q뇗, q뇗, q뇗);
+Test_N(q뇘, q뇘, q뇘, q뇘, q뇘);
+Test_N(q뇙, q뇙, q뇙, q뇙, q뇙);
+Test_N(q뇚, q뇚, q뇚, q뇚, q뇚);
+Test_N(q뇛, q뇛, q뇛, q뇛, q뇛);
+Test_N(q뇜, q뇜, q뇜, q뇜, q뇜);
+Test_N(q뇝, q뇝, q뇝, q뇝, q뇝);
+Test_N(q뇞, q뇞, q뇞, q뇞, q뇞);
+Test_N(q뇟, q뇟, q뇟, q뇟, q뇟);
+Test_N(q뇠, q뇠, q뇠, q뇠, q뇠);
+Test_N(q뇡, q뇡, q뇡, q뇡, q뇡);
+Test_N(q뇢, q뇢, q뇢, q뇢, q뇢);
+Test_N(q뇣, q뇣, q뇣, q뇣, q뇣);
+Test_N(q뇤, q뇤, q뇤, q뇤, q뇤);
+Test_N(q뇥, q뇥, q뇥, q뇥, q뇥);
+Test_N(q뇦, q뇦, q뇦, q뇦, q뇦);
+Test_N(q뇧, q뇧, q뇧, q뇧, q뇧);
+Test_N(q뇨, q뇨, q뇨, q뇨, q뇨);
+Test_N(q뇩, q뇩, q뇩, q뇩, q뇩);
+Test_N(q뇪, q뇪, q뇪, q뇪, q뇪);
+Test_N(q뇫, q뇫, q뇫, q뇫, q뇫);
+Test_N(q뇬, q뇬, q뇬, q뇬, q뇬);
+Test_N(q뇭, q뇭, q뇭, q뇭, q뇭);
+Test_N(q뇮, q뇮, q뇮, q뇮, q뇮);
+Test_N(q뇯, q뇯, q뇯, q뇯, q뇯);
+Test_N(q뇰, q뇰, q뇰, q뇰, q뇰);
+Test_N(q뇱, q뇱, q뇱, q뇱, q뇱);
+Test_N(q뇲, q뇲, q뇲, q뇲, q뇲);
+Test_N(q뇳, q뇳, q뇳, q뇳, q뇳);
+Test_N(q뇴, q뇴, q뇴, q뇴, q뇴);
+Test_N(q뇵, q뇵, q뇵, q뇵, q뇵);
+Test_N(q뇶, q뇶, q뇶, q뇶, q뇶);
+Test_N(q뇷, q뇷, q뇷, q뇷, q뇷);
+Test_N(q뇸, q뇸, q뇸, q뇸, q뇸);
+Test_N(q뇹, q뇹, q뇹, q뇹, q뇹);
+Test_N(q뇺, q뇺, q뇺, q뇺, q뇺);
+Test_N(q뇻, q뇻, q뇻, q뇻, q뇻);
+Test_N(q뇼, q뇼, q뇼, q뇼, q뇼);
+Test_N(q뇽, q뇽, q뇽, q뇽, q뇽);
+Test_N(q뇾, q뇾, q뇾, q뇾, q뇾);
+Test_N(q뇿, q뇿, q뇿, q뇿, q뇿);
+Test_N(q눀, q눀, q눀, q눀, q눀);
+Test_N(q눁, q눁, q눁, q눁, q눁);
+Test_N(q눂, q눂, q눂, q눂, q눂);
+Test_N(q눃, q눃, q눃, q눃, q눃);
+Test_N(q누, q누, q누, q누, q누);
+Test_N(q눅, q눅, q눅, q눅, q눅);
+Test_N(q눆, q눆, q눆, q눆, q눆);
+Test_N(q눇, q눇, q눇, q눇, q눇);
+Test_N(q눈, q눈, q눈, q눈, q눈);
+Test_N(q눉, q눉, q눉, q눉, q눉);
+Test_N(q눊, q눊, q눊, q눊, q눊);
+Test_N(q눋, q눋, q눋, q눋, q눋);
+Test_N(q눌, q눌, q눌, q눌, q눌);
+Test_N(q눍, q눍, q눍, q눍, q눍);
+Test_N(q눎, q눎, q눎, q눎, q눎);
+Test_N(q눏, q눏, q눏, q눏, q눏);
+Test_N(q눐, q눐, q눐, q눐, q눐);
+Test_N(q눑, q눑, q눑, q눑, q눑);
+Test_N(q눒, q눒, q눒, q눒, q눒);
+Test_N(q눓, q눓, q눓, q눓, q눓);
+Test_N(q눔, q눔, q눔, q눔, q눔);
+Test_N(q눕, q눕, q눕, q눕, q눕);
+Test_N(q눖, q눖, q눖, q눖, q눖);
+Test_N(q눗, q눗, q눗, q눗, q눗);
+Test_N(q눘, q눘, q눘, q눘, q눘);
+Test_N(q눙, q눙, q눙, q눙, q눙);
+Test_N(q눚, q눚, q눚, q눚, q눚);
+Test_N(q눛, q눛, q눛, q눛, q눛);
+Test_N(q눜, q눜, q눜, q눜, q눜);
+Test_N(q눝, q눝, q눝, q눝, q눝);
+Test_N(q눞, q눞, q눞, q눞, q눞);
+Test_N(q눟, q눟, q눟, q눟, q눟);
+Test_N(q눠, q눠, q눠, q눠, q눠);
+Test_N(q눡, q눡, q눡, q눡, q눡);
+Test_N(q눢, q눢, q눢, q눢, q눢);
+Test_N(q눣, q눣, q눣, q눣, q눣);
+Test_N(q눤, q눤, q눤, q눤, q눤);
+Test_N(q눥, q눥, q눥, q눥, q눥);
+Test_N(q눦, q눦, q눦, q눦, q눦);
+Test_N(q눧, q눧, q눧, q눧, q눧);
+Test_N(q눨, q눨, q눨, q눨, q눨);
+Test_N(q눩, q눩, q눩, q눩, q눩);
+Test_N(q눪, q눪, q눪, q눪, q눪);
+Test_N(q눫, q눫, q눫, q눫, q눫);
+Test_N(q눬, q눬, q눬, q눬, q눬);
+Test_N(q눭, q눭, q눭, q눭, q눭);
+Test_N(q눮, q눮, q눮, q눮, q눮);
+Test_N(q눯, q눯, q눯, q눯, q눯);
+Test_N(q눰, q눰, q눰, q눰, q눰);
+Test_N(q눱, q눱, q눱, q눱, q눱);
+Test_N(q눲, q눲, q눲, q눲, q눲);
+Test_N(q눳, q눳, q눳, q눳, q눳);
+Test_N(q눴, q눴, q눴, q눴, q눴);
+Test_N(q눵, q눵, q눵, q눵, q눵);
+Test_N(q눶, q눶, q눶, q눶, q눶);
+Test_N(q눷, q눷, q눷, q눷, q눷);
+Test_N(q눸, q눸, q눸, q눸, q눸);
+Test_N(q눹, q눹, q눹, q눹, q눹);
+Test_N(q눺, q눺, q눺, q눺, q눺);
+Test_N(q눻, q눻, q눻, q눻, q눻);
+Test_N(q눼, q눼, q눼, q눼, q눼);
+Test_N(q눽, q눽, q눽, q눽, q눽);
+Test_N(q눾, q눾, q눾, q눾, q눾);
+Test_N(q눿, q눿, q눿, q눿, q눿);
+Test_N(q뉀, q뉀, q뉀, q뉀, q뉀);
+Test_N(q뉁, q뉁, q뉁, q뉁, q뉁);
+Test_N(q뉂, q뉂, q뉂, q뉂, q뉂);
+Test_N(q뉃, q뉃, q뉃, q뉃, q뉃);
+Test_N(q뉄, q뉄, q뉄, q뉄, q뉄);
+Test_N(q뉅, q뉅, q뉅, q뉅, q뉅);
+Test_N(q뉆, q뉆, q뉆, q뉆, q뉆);
+Test_N(q뉇, q뉇, q뉇, q뉇, q뉇);
+Test_N(q뉈, q뉈, q뉈, q뉈, q뉈);
+Test_N(q뉉, q뉉, q뉉, q뉉, q뉉);
+Test_N(q뉊, q뉊, q뉊, q뉊, q뉊);
+Test_N(q뉋, q뉋, q뉋, q뉋, q뉋);
+Test_N(q뉌, q뉌, q뉌, q뉌, q뉌);
+Test_N(q뉍, q뉍, q뉍, q뉍, q뉍);
+Test_N(q뉎, q뉎, q뉎, q뉎, q뉎);
+Test_N(q뉏, q뉏, q뉏, q뉏, q뉏);
+Test_N(q뉐, q뉐, q뉐, q뉐, q뉐);
+Test_N(q뉑, q뉑, q뉑, q뉑, q뉑);
+Test_N(q뉒, q뉒, q뉒, q뉒, q뉒);
+Test_N(q뉓, q뉓, q뉓, q뉓, q뉓);
+Test_N(q뉔, q뉔, q뉔, q뉔, q뉔);
+Test_N(q뉕, q뉕, q뉕, q뉕, q뉕);
+Test_N(q뉖, q뉖, q뉖, q뉖, q뉖);
+Test_N(q뉗, q뉗, q뉗, q뉗, q뉗);
+Test_N(q뉘, q뉘, q뉘, q뉘, q뉘);
+Test_N(q뉙, q뉙, q뉙, q뉙, q뉙);
+Test_N(q뉚, q뉚, q뉚, q뉚, q뉚);
+Test_N(q뉛, q뉛, q뉛, q뉛, q뉛);
+Test_N(q뉜, q뉜, q뉜, q뉜, q뉜);
+Test_N(q뉝, q뉝, q뉝, q뉝, q뉝);
+Test_N(q뉞, q뉞, q뉞, q뉞, q뉞);
+Test_N(q뉟, q뉟, q뉟, q뉟, q뉟);
+Test_N(q뉠, q뉠, q뉠, q뉠, q뉠);
+Test_N(q뉡, q뉡, q뉡, q뉡, q뉡);
+Test_N(q뉢, q뉢, q뉢, q뉢, q뉢);
+Test_N(q뉣, q뉣, q뉣, q뉣, q뉣);
+Test_N(q뉤, q뉤, q뉤, q뉤, q뉤);
+Test_N(q뉥, q뉥, q뉥, q뉥, q뉥);
+Test_N(q뉦, q뉦, q뉦, q뉦, q뉦);
+Test_N(q뉧, q뉧, q뉧, q뉧, q뉧);
+Test_N(q뉨, q뉨, q뉨, q뉨, q뉨);
+Test_N(q뉩, q뉩, q뉩, q뉩, q뉩);
+Test_N(q뉪, q뉪, q뉪, q뉪, q뉪);
+Test_N(q뉫, q뉫, q뉫, q뉫, q뉫);
+Test_N(q뉬, q뉬, q뉬, q뉬, q뉬);
+Test_N(q뉭, q뉭, q뉭, q뉭, q뉭);
+Test_N(q뉮, q뉮, q뉮, q뉮, q뉮);
+Test_N(q뉯, q뉯, q뉯, q뉯, q뉯);
+Test_N(q뉰, q뉰, q뉰, q뉰, q뉰);
+Test_N(q뉱, q뉱, q뉱, q뉱, q뉱);
+Test_N(q뉲, q뉲, q뉲, q뉲, q뉲);
+Test_N(q뉳, q뉳, q뉳, q뉳, q뉳);
+Test_N(q뉴, q뉴, q뉴, q뉴, q뉴);
+Test_N(q뉵, q뉵, q뉵, q뉵, q뉵);
+Test_N(q뉶, q뉶, q뉶, q뉶, q뉶);
+Test_N(q뉷, q뉷, q뉷, q뉷, q뉷);
+Test_N(q뉸, q뉸, q뉸, q뉸, q뉸);
+Test_N(q뉹, q뉹, q뉹, q뉹, q뉹);
+Test_N(q뉺, q뉺, q뉺, q뉺, q뉺);
+Test_N(q뉻, q뉻, q뉻, q뉻, q뉻);
+Test_N(q뉼, q뉼, q뉼, q뉼, q뉼);
+Test_N(q뉽, q뉽, q뉽, q뉽, q뉽);
+Test_N(q뉾, q뉾, q뉾, q뉾, q뉾);
+Test_N(q뉿, q뉿, q뉿, q뉿, q뉿);
+Test_N(q늀, q늀, q늀, q늀, q늀);
+Test_N(q늁, q늁, q늁, q늁, q늁);
+Test_N(q늂, q늂, q늂, q늂, q늂);
+Test_N(q늃, q늃, q늃, q늃, q늃);
+Test_N(q늄, q늄, q늄, q늄, q늄);
+Test_N(q늅, q늅, q늅, q늅, q늅);
+Test_N(q늆, q늆, q늆, q늆, q늆);
+Test_N(q늇, q늇, q늇, q늇, q늇);
+Test_N(q늈, q늈, q늈, q늈, q늈);
+Test_N(q늉, q늉, q늉, q늉, q늉);
+Test_N(q늊, q늊, q늊, q늊, q늊);
+Test_N(q늋, q늋, q늋, q늋, q늋);
+Test_N(q늌, q늌, q늌, q늌, q늌);
+Test_N(q늍, q늍, q늍, q늍, q늍);
+Test_N(q늎, q늎, q늎, q늎, q늎);
+Test_N(q늏, q늏, q늏, q늏, q늏);
+Test_N(q느, q느, q느, q느, q느);
+Test_N(q늑, q늑, q늑, q늑, q늑);
+Test_N(q늒, q늒, q늒, q늒, q늒);
+Test_N(q늓, q늓, q늓, q늓, q늓);
+Test_N(q는, q는, q는, q는, q는);
+Test_N(q늕, q늕, q늕, q늕, q늕);
+Test_N(q늖, q늖, q늖, q늖, q늖);
+Test_N(q늗, q늗, q늗, q늗, q늗);
+Test_N(q늘, q늘, q늘, q늘, q늘);
+Test_N(q늙, q늙, q늙, q늙, q늙);
+Test_N(q늚, q늚, q늚, q늚, q늚);
+Test_N(q늛, q늛, q늛, q늛, q늛);
+Test_N(q늜, q늜, q늜, q늜, q늜);
+Test_N(q늝, q늝, q늝, q늝, q늝);
+Test_N(q늞, q늞, q늞, q늞, q늞);
+Test_N(q늟, q늟, q늟, q늟, q늟);
+Test_N(q늠, q늠, q늠, q늠, q늠);
+Test_N(q늡, q늡, q늡, q늡, q늡);
+Test_N(q늢, q늢, q늢, q늢, q늢);
+Test_N(q늣, q늣, q늣, q늣, q늣);
+Test_N(q늤, q늤, q늤, q늤, q늤);
+Test_N(q능, q능, q능, q능, q능);
+Test_N(q늦, q늦, q늦, q늦, q늦);
+Test_N(q늧, q늧, q늧, q늧, q늧);
+Test_N(q늨, q늨, q늨, q늨, q늨);
+Test_N(q늩, q늩, q늩, q늩, q늩);
+Test_N(q늪, q늪, q늪, q늪, q늪);
+Test_N(q늫, q늫, q늫, q늫, q늫);
+Test_N(q늬, q늬, q늬, q늬, q늬);
+Test_N(q늭, q늭, q늭, q늭, q늭);
+Test_N(q늮, q늮, q늮, q늮, q늮);
+Test_N(q늯, q늯, q늯, q늯, q늯);
+Test_N(q늰, q늰, q늰, q늰, q늰);
+Test_N(q늱, q늱, q늱, q늱, q늱);
+Test_N(q늲, q늲, q늲, q늲, q늲);
+Test_N(q늳, q늳, q늳, q늳, q늳);
+Test_N(q늴, q늴, q늴, q늴, q늴);
+Test_N(q늵, q늵, q늵, q늵, q늵);
+Test_N(q늶, q늶, q늶, q늶, q늶);
+Test_N(q늷, q늷, q늷, q늷, q늷);
+Test_N(q늸, q늸, q늸, q늸, q늸);
+Test_N(q늹, q늹, q늹, q늹, q늹);
+Test_N(q늺, q늺, q늺, q늺, q늺);
+Test_N(q늻, q늻, q늻, q늻, q늻);
+Test_N(q늼, q늼, q늼, q늼, q늼);
+Test_N(q늽, q늽, q늽, q늽, q늽);
+Test_N(q늾, q늾, q늾, q늾, q늾);
+Test_N(q늿, q늿, q늿, q늿, q늿);
+Test_N(q닀, q닀, q닀, q닀, q닀);
+Test_N(q닁, q닁, q닁, q닁, q닁);
+Test_N(q닂, q닂, q닂, q닂, q닂);
+Test_N(q닃, q닃, q닃, q닃, q닃);
+Test_N(q닄, q닄, q닄, q닄, q닄);
+Test_N(q닅, q닅, q닅, q닅, q닅);
+Test_N(q닆, q닆, q닆, q닆, q닆);
+Test_N(q닇, q닇, q닇, q닇, q닇);
+Test_N(q니, q니, q니, q니, q니);
+Test_N(q닉, q닉, q닉, q닉, q닉);
+Test_N(q닊, q닊, q닊, q닊, q닊);
+Test_N(q닋, q닋, q닋, q닋, q닋);
+Test_N(q닌, q닌, q닌, q닌, q닌);
+Test_N(q닍, q닍, q닍, q닍, q닍);
+Test_N(q닎, q닎, q닎, q닎, q닎);
+Test_N(q닏, q닏, q닏, q닏, q닏);
+Test_N(q닐, q닐, q닐, q닐, q닐);
+Test_N(q닑, q닑, q닑, q닑, q닑);
+Test_N(q닒, q닒, q닒, q닒, q닒);
+Test_N(q닓, q닓, q닓, q닓, q닓);
+Test_N(q닔, q닔, q닔, q닔, q닔);
+Test_N(q닕, q닕, q닕, q닕, q닕);
+Test_N(q닖, q닖, q닖, q닖, q닖);
+Test_N(q닗, q닗, q닗, q닗, q닗);
+Test_N(q님, q님, q님, q님, q님);
+Test_N(q닙, q닙, q닙, q닙, q닙);
+Test_N(q닚, q닚, q닚, q닚, q닚);
+Test_N(q닛, q닛, q닛, q닛, q닛);
+Test_N(q닜, q닜, q닜, q닜, q닜);
+Test_N(q닝, q닝, q닝, q닝, q닝);
+Test_N(q닞, q닞, q닞, q닞, q닞);
+Test_N(q닟, q닟, q닟, q닟, q닟);
+Test_N(q닠, q닠, q닠, q닠, q닠);
+Test_N(q닡, q닡, q닡, q닡, q닡);
+Test_N(q닢, q닢, q닢, q닢, q닢);
+Test_N(q닣, q닣, q닣, q닣, q닣);
+Test_N(q다, q다, q다, q다, q다);
+Test_N(q닥, q닥, q닥, q닥, q닥);
+Test_N(q닦, q닦, q닦, q닦, q닦);
+Test_N(q닧, q닧, q닧, q닧, q닧);
+Test_N(q단, q단, q단, q단, q단);
+Test_N(q닩, q닩, q닩, q닩, q닩);
+Test_N(q닪, q닪, q닪, q닪, q닪);
+Test_N(q닫, q닫, q닫, q닫, q닫);
+Test_N(q달, q달, q달, q달, q달);
+Test_N(q닭, q닭, q닭, q닭, q닭);
+Test_N(q닮, q닮, q닮, q닮, q닮);
+Test_N(q닯, q닯, q닯, q닯, q닯);
+Test_N(q닰, q닰, q닰, q닰, q닰);
+Test_N(q닱, q닱, q닱, q닱, q닱);
+Test_N(q닲, q닲, q닲, q닲, q닲);
+Test_N(q닳, q닳, q닳, q닳, q닳);
+Test_N(q담, q담, q담, q담, q담);
+Test_N(q답, q답, q답, q답, q답);
+Test_N(q닶, q닶, q닶, q닶, q닶);
+Test_N(q닷, q닷, q닷, q닷, q닷);
+Test_N(q닸, q닸, q닸, q닸, q닸);
+Test_N(q당, q당, q당, q당, q당);
+Test_N(q닺, q닺, q닺, q닺, q닺);
+Test_N(q닻, q닻, q닻, q닻, q닻);
+Test_N(q닼, q닼, q닼, q닼, q닼);
+Test_N(q닽, q닽, q닽, q닽, q닽);
+Test_N(q닾, q닾, q닾, q닾, q닾);
+Test_N(q닿, q닿, q닿, q닿, q닿);
+Test_N(q대, q대, q대, q대, q대);
+Test_N(q댁, q댁, q댁, q댁, q댁);
+Test_N(q댂, q댂, q댂, q댂, q댂);
+Test_N(q댃, q댃, q댃, q댃, q댃);
+Test_N(q댄, q댄, q댄, q댄, q댄);
+Test_N(q댅, q댅, q댅, q댅, q댅);
+Test_N(q댆, q댆, q댆, q댆, q댆);
+Test_N(q댇, q댇, q댇, q댇, q댇);
+Test_N(q댈, q댈, q댈, q댈, q댈);
+Test_N(q댉, q댉, q댉, q댉, q댉);
+Test_N(q댊, q댊, q댊, q댊, q댊);
+Test_N(q댋, q댋, q댋, q댋, q댋);
+Test_N(q댌, q댌, q댌, q댌, q댌);
+Test_N(q댍, q댍, q댍, q댍, q댍);
+Test_N(q댎, q댎, q댎, q댎, q댎);
+Test_N(q댏, q댏, q댏, q댏, q댏);
+Test_N(q댐, q댐, q댐, q댐, q댐);
+Test_N(q댑, q댑, q댑, q댑, q댑);
+Test_N(q댒, q댒, q댒, q댒, q댒);
+Test_N(q댓, q댓, q댓, q댓, q댓);
+Test_N(q댔, q댔, q댔, q댔, q댔);
+Test_N(q댕, q댕, q댕, q댕, q댕);
+Test_N(q댖, q댖, q댖, q댖, q댖);
+Test_N(q댗, q댗, q댗, q댗, q댗);
+Test_N(q댘, q댘, q댘, q댘, q댘);
+Test_N(q댙, q댙, q댙, q댙, q댙);
+Test_N(q댚, q댚, q댚, q댚, q댚);
+Test_N(q댛, q댛, q댛, q댛, q댛);
+Test_N(q댜, q댜, q댜, q댜, q댜);
+Test_N(q댝, q댝, q댝, q댝, q댝);
+Test_N(q댞, q댞, q댞, q댞, q댞);
+Test_N(q댟, q댟, q댟, q댟, q댟);
+Test_N(q댠, q댠, q댠, q댠, q댠);
+Test_N(q댡, q댡, q댡, q댡, q댡);
+Test_N(q댢, q댢, q댢, q댢, q댢);
+Test_N(q댣, q댣, q댣, q댣, q댣);
+Test_N(q댤, q댤, q댤, q댤, q댤);
+Test_N(q댥, q댥, q댥, q댥, q댥);
+Test_N(q댦, q댦, q댦, q댦, q댦);
+Test_N(q댧, q댧, q댧, q댧, q댧);
+Test_N(q댨, q댨, q댨, q댨, q댨);
+Test_N(q댩, q댩, q댩, q댩, q댩);
+Test_N(q댪, q댪, q댪, q댪, q댪);
+Test_N(q댫, q댫, q댫, q댫, q댫);
+Test_N(q댬, q댬, q댬, q댬, q댬);
+Test_N(q댭, q댭, q댭, q댭, q댭);
+Test_N(q댮, q댮, q댮, q댮, q댮);
+Test_N(q댯, q댯, q댯, q댯, q댯);
+Test_N(q댰, q댰, q댰, q댰, q댰);
+Test_N(q댱, q댱, q댱, q댱, q댱);
+Test_N(q댲, q댲, q댲, q댲, q댲);
+Test_N(q댳, q댳, q댳, q댳, q댳);
+Test_N(q댴, q댴, q댴, q댴, q댴);
+Test_N(q댵, q댵, q댵, q댵, q댵);
+Test_N(q댶, q댶, q댶, q댶, q댶);
+Test_N(q댷, q댷, q댷, q댷, q댷);
+Test_N(q댸, q댸, q댸, q댸, q댸);
+Test_N(q댹, q댹, q댹, q댹, q댹);
+Test_N(q댺, q댺, q댺, q댺, q댺);
+Test_N(q댻, q댻, q댻, q댻, q댻);
+Test_N(q댼, q댼, q댼, q댼, q댼);
+Test_N(q댽, q댽, q댽, q댽, q댽);
+Test_N(q댾, q댾, q댾, q댾, q댾);
+Test_N(q댿, q댿, q댿, q댿, q댿);
+Test_N(q덀, q덀, q덀, q덀, q덀);
+Test_N(q덁, q덁, q덁, q덁, q덁);
+Test_N(q덂, q덂, q덂, q덂, q덂);
+Test_N(q덃, q덃, q덃, q덃, q덃);
+Test_N(q덄, q덄, q덄, q덄, q덄);
+Test_N(q덅, q덅, q덅, q덅, q덅);
+Test_N(q덆, q덆, q덆, q덆, q덆);
+Test_N(q덇, q덇, q덇, q덇, q덇);
+Test_N(q덈, q덈, q덈, q덈, q덈);
+Test_N(q덉, q덉, q덉, q덉, q덉);
+Test_N(q덊, q덊, q덊, q덊, q덊);
+Test_N(q덋, q덋, q덋, q덋, q덋);
+Test_N(q덌, q덌, q덌, q덌, q덌);
+Test_N(q덍, q덍, q덍, q덍, q덍);
+Test_N(q덎, q덎, q덎, q덎, q덎);
+Test_N(q덏, q덏, q덏, q덏, q덏);
+Test_N(q덐, q덐, q덐, q덐, q덐);
+Test_N(q덑, q덑, q덑, q덑, q덑);
+Test_N(q덒, q덒, q덒, q덒, q덒);
+Test_N(q덓, q덓, q덓, q덓, q덓);
+Test_N(q더, q더, q더, q더, q더);
+Test_N(q덕, q덕, q덕, q덕, q덕);
+Test_N(q덖, q덖, q덖, q덖, q덖);
+Test_N(q덗, q덗, q덗, q덗, q덗);
+Test_N(q던, q던, q던, q던, q던);
+Test_N(q덙, q덙, q덙, q덙, q덙);
+Test_N(q덚, q덚, q덚, q덚, q덚);
+Test_N(q덛, q덛, q덛, q덛, q덛);
+Test_N(q덜, q덜, q덜, q덜, q덜);
+Test_N(q덝, q덝, q덝, q덝, q덝);
+Test_N(q덞, q덞, q덞, q덞, q덞);
+Test_N(q덟, q덟, q덟, q덟, q덟);
+Test_N(q덠, q덠, q덠, q덠, q덠);
+Test_N(q덡, q덡, q덡, q덡, q덡);
+Test_N(q덢, q덢, q덢, q덢, q덢);
+Test_N(q덣, q덣, q덣, q덣, q덣);
+Test_N(q덤, q덤, q덤, q덤, q덤);
+Test_N(q덥, q덥, q덥, q덥, q덥);
+Test_N(q덦, q덦, q덦, q덦, q덦);
+Test_N(q덧, q덧, q덧, q덧, q덧);
+Test_N(q덨, q덨, q덨, q덨, q덨);
+Test_N(q덩, q덩, q덩, q덩, q덩);
+Test_N(q덪, q덪, q덪, q덪, q덪);
+Test_N(q덫, q덫, q덫, q덫, q덫);
+Test_N(q덬, q덬, q덬, q덬, q덬);
+Test_N(q덭, q덭, q덭, q덭, q덭);
+Test_N(q덮, q덮, q덮, q덮, q덮);
+Test_N(q덯, q덯, q덯, q덯, q덯);
+Test_N(q데, q데, q데, q데, q데);
+Test_N(q덱, q덱, q덱, q덱, q덱);
+Test_N(q덲, q덲, q덲, q덲, q덲);
+Test_N(q덳, q덳, q덳, q덳, q덳);
+Test_N(q덴, q덴, q덴, q덴, q덴);
+Test_N(q덵, q덵, q덵, q덵, q덵);
+Test_N(q덶, q덶, q덶, q덶, q덶);
+Test_N(q덷, q덷, q덷, q덷, q덷);
+Test_N(q델, q델, q델, q델, q델);
+Test_N(q덹, q덹, q덹, q덹, q덹);
+Test_N(q덺, q덺, q덺, q덺, q덺);
+Test_N(q덻, q덻, q덻, q덻, q덻);
+Test_N(q덼, q덼, q덼, q덼, q덼);
+Test_N(q덽, q덽, q덽, q덽, q덽);
+Test_N(q덾, q덾, q덾, q덾, q덾);
+Test_N(q덿, q덿, q덿, q덿, q덿);
+Test_N(q뎀, q뎀, q뎀, q뎀, q뎀);
+Test_N(q뎁, q뎁, q뎁, q뎁, q뎁);
+Test_N(q뎂, q뎂, q뎂, q뎂, q뎂);
+Test_N(q뎃, q뎃, q뎃, q뎃, q뎃);
+Test_N(q뎄, q뎄, q뎄, q뎄, q뎄);
+Test_N(q뎅, q뎅, q뎅, q뎅, q뎅);
+Test_N(q뎆, q뎆, q뎆, q뎆, q뎆);
+Test_N(q뎇, q뎇, q뎇, q뎇, q뎇);
+Test_N(q뎈, q뎈, q뎈, q뎈, q뎈);
+Test_N(q뎉, q뎉, q뎉, q뎉, q뎉);
+Test_N(q뎊, q뎊, q뎊, q뎊, q뎊);
+Test_N(q뎋, q뎋, q뎋, q뎋, q뎋);
+Test_N(q뎌, q뎌, q뎌, q뎌, q뎌);
+Test_N(q뎍, q뎍, q뎍, q뎍, q뎍);
+Test_N(q뎎, q뎎, q뎎, q뎎, q뎎);
+Test_N(q뎏, q뎏, q뎏, q뎏, q뎏);
+Test_N(q뎐, q뎐, q뎐, q뎐, q뎐);
+Test_N(q뎑, q뎑, q뎑, q뎑, q뎑);
+Test_N(q뎒, q뎒, q뎒, q뎒, q뎒);
+Test_N(q뎓, q뎓, q뎓, q뎓, q뎓);
+Test_N(q뎔, q뎔, q뎔, q뎔, q뎔);
+Test_N(q뎕, q뎕, q뎕, q뎕, q뎕);
+Test_N(q뎖, q뎖, q뎖, q뎖, q뎖);
+Test_N(q뎗, q뎗, q뎗, q뎗, q뎗);
+Test_N(q뎘, q뎘, q뎘, q뎘, q뎘);
+Test_N(q뎙, q뎙, q뎙, q뎙, q뎙);
+Test_N(q뎚, q뎚, q뎚, q뎚, q뎚);
+Test_N(q뎛, q뎛, q뎛, q뎛, q뎛);
+Test_N(q뎜, q뎜, q뎜, q뎜, q뎜);
+Test_N(q뎝, q뎝, q뎝, q뎝, q뎝);
+Test_N(q뎞, q뎞, q뎞, q뎞, q뎞);
+Test_N(q뎟, q뎟, q뎟, q뎟, q뎟);
+Test_N(q뎠, q뎠, q뎠, q뎠, q뎠);
+Test_N(q뎡, q뎡, q뎡, q뎡, q뎡);
+Test_N(q뎢, q뎢, q뎢, q뎢, q뎢);
+Test_N(q뎣, q뎣, q뎣, q뎣, q뎣);
+Test_N(q뎤, q뎤, q뎤, q뎤, q뎤);
+Test_N(q뎥, q뎥, q뎥, q뎥, q뎥);
+Test_N(q뎦, q뎦, q뎦, q뎦, q뎦);
+Test_N(q뎧, q뎧, q뎧, q뎧, q뎧);
+Test_N(q뎨, q뎨, q뎨, q뎨, q뎨);
+Test_N(q뎩, q뎩, q뎩, q뎩, q뎩);
+Test_N(q뎪, q뎪, q뎪, q뎪, q뎪);
+Test_N(q뎫, q뎫, q뎫, q뎫, q뎫);
+Test_N(q뎬, q뎬, q뎬, q뎬, q뎬);
+Test_N(q뎭, q뎭, q뎭, q뎭, q뎭);
+Test_N(q뎮, q뎮, q뎮, q뎮, q뎮);
+Test_N(q뎯, q뎯, q뎯, q뎯, q뎯);
+Test_N(q뎰, q뎰, q뎰, q뎰, q뎰);
+Test_N(q뎱, q뎱, q뎱, q뎱, q뎱);
+Test_N(q뎲, q뎲, q뎲, q뎲, q뎲);
+Test_N(q뎳, q뎳, q뎳, q뎳, q뎳);
+Test_N(q뎴, q뎴, q뎴, q뎴, q뎴);
+Test_N(q뎵, q뎵, q뎵, q뎵, q뎵);
+Test_N(q뎶, q뎶, q뎶, q뎶, q뎶);
+Test_N(q뎷, q뎷, q뎷, q뎷, q뎷);
+Test_N(q뎸, q뎸, q뎸, q뎸, q뎸);
+Test_N(q뎹, q뎹, q뎹, q뎹, q뎹);
+Test_N(q뎺, q뎺, q뎺, q뎺, q뎺);
+Test_N(q뎻, q뎻, q뎻, q뎻, q뎻);
+Test_N(q뎼, q뎼, q뎼, q뎼, q뎼);
+Test_N(q뎽, q뎽, q뎽, q뎽, q뎽);
+Test_N(q뎾, q뎾, q뎾, q뎾, q뎾);
+Test_N(q뎿, q뎿, q뎿, q뎿, q뎿);
+Test_N(q돀, q돀, q돀, q돀, q돀);
+Test_N(q돁, q돁, q돁, q돁, q돁);
+Test_N(q돂, q돂, q돂, q돂, q돂);
+Test_N(q돃, q돃, q돃, q돃, q돃);
+Test_N(q도, q도, q도, q도, q도);
+Test_N(q독, q독, q독, q독, q독);
+Test_N(q돆, q돆, q돆, q돆, q돆);
+Test_N(q돇, q돇, q돇, q돇, q돇);
+Test_N(q돈, q돈, q돈, q돈, q돈);
+Test_N(q돉, q돉, q돉, q돉, q돉);
+Test_N(q돊, q돊, q돊, q돊, q돊);
+Test_N(q돋, q돋, q돋, q돋, q돋);
+Test_N(q돌, q돌, q돌, q돌, q돌);
+Test_N(q돍, q돍, q돍, q돍, q돍);
+Test_N(q돎, q돎, q돎, q돎, q돎);
+Test_N(q돏, q돏, q돏, q돏, q돏);
+Test_N(q돐, q돐, q돐, q돐, q돐);
+Test_N(q돑, q돑, q돑, q돑, q돑);
+Test_N(q돒, q돒, q돒, q돒, q돒);
+Test_N(q돓, q돓, q돓, q돓, q돓);
+Test_N(q돔, q돔, q돔, q돔, q돔);
+Test_N(q돕, q돕, q돕, q돕, q돕);
+Test_N(q돖, q돖, q돖, q돖, q돖);
+Test_N(q돗, q돗, q돗, q돗, q돗);
+Test_N(q돘, q돘, q돘, q돘, q돘);
+Test_N(q동, q동, q동, q동, q동);
+Test_N(q돚, q돚, q돚, q돚, q돚);
+Test_N(q돛, q돛, q돛, q돛, q돛);
+Test_N(q돜, q돜, q돜, q돜, q돜);
+Test_N(q돝, q돝, q돝, q돝, q돝);
+Test_N(q돞, q돞, q돞, q돞, q돞);
+Test_N(q돟, q돟, q돟, q돟, q돟);
+Test_N(q돠, q돠, q돠, q돠, q돠);
+Test_N(q돡, q돡, q돡, q돡, q돡);
+Test_N(q돢, q돢, q돢, q돢, q돢);
+Test_N(q돣, q돣, q돣, q돣, q돣);
+Test_N(q돤, q돤, q돤, q돤, q돤);
+Test_N(q돥, q돥, q돥, q돥, q돥);
+Test_N(q돦, q돦, q돦, q돦, q돦);
+Test_N(q돧, q돧, q돧, q돧, q돧);
+Test_N(q돨, q돨, q돨, q돨, q돨);
+Test_N(q돩, q돩, q돩, q돩, q돩);
+Test_N(q돪, q돪, q돪, q돪, q돪);
+Test_N(q돫, q돫, q돫, q돫, q돫);
+Test_N(q돬, q돬, q돬, q돬, q돬);
+Test_N(q돭, q돭, q돭, q돭, q돭);
+Test_N(q돮, q돮, q돮, q돮, q돮);
+Test_N(q돯, q돯, q돯, q돯, q돯);
+Test_N(q돰, q돰, q돰, q돰, q돰);
+Test_N(q돱, q돱, q돱, q돱, q돱);
+Test_N(q돲, q돲, q돲, q돲, q돲);
+Test_N(q돳, q돳, q돳, q돳, q돳);
+Test_N(q돴, q돴, q돴, q돴, q돴);
+Test_N(q돵, q돵, q돵, q돵, q돵);
+Test_N(q돶, q돶, q돶, q돶, q돶);
+Test_N(q돷, q돷, q돷, q돷, q돷);
+Test_N(q돸, q돸, q돸, q돸, q돸);
+Test_N(q돹, q돹, q돹, q돹, q돹);
+Test_N(q돺, q돺, q돺, q돺, q돺);
+Test_N(q돻, q돻, q돻, q돻, q돻);
+Test_N(q돼, q돼, q돼, q돼, q돼);
+Test_N(q돽, q돽, q돽, q돽, q돽);
+Test_N(q돾, q돾, q돾, q돾, q돾);
+Test_N(q돿, q돿, q돿, q돿, q돿);
+Test_N(q됀, q됀, q됀, q됀, q됀);
+Test_N(q됁, q됁, q됁, q됁, q됁);
+Test_N(q됂, q됂, q됂, q됂, q됂);
+Test_N(q됃, q됃, q됃, q됃, q됃);
+Test_N(q됄, q됄, q됄, q됄, q됄);
+Test_N(q됅, q됅, q됅, q됅, q됅);
+Test_N(q됆, q됆, q됆, q됆, q됆);
+Test_N(q됇, q됇, q됇, q됇, q됇);
+Test_N(q됈, q됈, q됈, q됈, q됈);
+Test_N(q됉, q됉, q됉, q됉, q됉);
+Test_N(q됊, q됊, q됊, q됊, q됊);
+Test_N(q됋, q됋, q됋, q됋, q됋);
+Test_N(q됌, q됌, q됌, q됌, q됌);
+Test_N(q됍, q됍, q됍, q됍, q됍);
+Test_N(q됎, q됎, q됎, q됎, q됎);
+Test_N(q됏, q됏, q됏, q됏, q됏);
+Test_N(q됐, q됐, q됐, q됐, q됐);
+Test_N(q됑, q됑, q됑, q됑, q됑);
+Test_N(q됒, q됒, q됒, q됒, q됒);
+Test_N(q됓, q됓, q됓, q됓, q됓);
+Test_N(q됔, q됔, q됔, q됔, q됔);
+Test_N(q됕, q됕, q됕, q됕, q됕);
+Test_N(q됖, q됖, q됖, q됖, q됖);
+Test_N(q됗, q됗, q됗, q됗, q됗);
+Test_N(q되, q되, q되, q되, q되);
+Test_N(q됙, q됙, q됙, q됙, q됙);
+Test_N(q됚, q됚, q됚, q됚, q됚);
+Test_N(q됛, q됛, q됛, q됛, q됛);
+Test_N(q된, q된, q된, q된, q된);
+Test_N(q됝, q됝, q됝, q됝, q됝);
+Test_N(q됞, q됞, q됞, q됞, q됞);
+Test_N(q됟, q됟, q됟, q됟, q됟);
+Test_N(q될, q될, q될, q될, q될);
+Test_N(q됡, q됡, q됡, q됡, q됡);
+Test_N(q됢, q됢, q됢, q됢, q됢);
+Test_N(q됣, q됣, q됣, q됣, q됣);
+Test_N(q됤, q됤, q됤, q됤, q됤);
+Test_N(q됥, q됥, q됥, q됥, q됥);
+Test_N(q됦, q됦, q됦, q됦, q됦);
+Test_N(q됧, q됧, q됧, q됧, q됧);
+Test_N(q됨, q됨, q됨, q됨, q됨);
+Test_N(q됩, q됩, q됩, q됩, q됩);
+Test_N(q됪, q됪, q됪, q됪, q됪);
+Test_N(q됫, q됫, q됫, q됫, q됫);
+Test_N(q됬, q됬, q됬, q됬, q됬);
+Test_N(q됭, q됭, q됭, q됭, q됭);
+Test_N(q됮, q됮, q됮, q됮, q됮);
+Test_N(q됯, q됯, q됯, q됯, q됯);
+Test_N(q됰, q됰, q됰, q됰, q됰);
+Test_N(q됱, q됱, q됱, q됱, q됱);
+Test_N(q됲, q됲, q됲, q됲, q됲);
+Test_N(q됳, q됳, q됳, q됳, q됳);
+Test_N(q됴, q됴, q됴, q됴, q됴);
+Test_N(q됵, q됵, q됵, q됵, q됵);
+Test_N(q됶, q됶, q됶, q됶, q됶);
+Test_N(q됷, q됷, q됷, q됷, q됷);
+Test_N(q됸, q됸, q됸, q됸, q됸);
+Test_N(q됹, q됹, q됹, q됹, q됹);
+Test_N(q됺, q됺, q됺, q됺, q됺);
+Test_N(q됻, q됻, q됻, q됻, q됻);
+Test_N(q됼, q됼, q됼, q됼, q됼);
+Test_N(q됽, q됽, q됽, q됽, q됽);
+Test_N(q됾, q됾, q됾, q됾, q됾);
+Test_N(q됿, q됿, q됿, q됿, q됿);
+Test_N(q둀, q둀, q둀, q둀, q둀);
+Test_N(q둁, q둁, q둁, q둁, q둁);
+Test_N(q둂, q둂, q둂, q둂, q둂);
+Test_N(q둃, q둃, q둃, q둃, q둃);
+Test_N(q둄, q둄, q둄, q둄, q둄);
+Test_N(q둅, q둅, q둅, q둅, q둅);
+Test_N(q둆, q둆, q둆, q둆, q둆);
+Test_N(q둇, q둇, q둇, q둇, q둇);
+Test_N(q둈, q둈, q둈, q둈, q둈);
+Test_N(q둉, q둉, q둉, q둉, q둉);
+Test_N(q둊, q둊, q둊, q둊, q둊);
+Test_N(q둋, q둋, q둋, q둋, q둋);
+Test_N(q둌, q둌, q둌, q둌, q둌);
+Test_N(q둍, q둍, q둍, q둍, q둍);
+Test_N(q둎, q둎, q둎, q둎, q둎);
+Test_N(q둏, q둏, q둏, q둏, q둏);
+Test_N(q두, q두, q두, q두, q두);
+Test_N(q둑, q둑, q둑, q둑, q둑);
+Test_N(q둒, q둒, q둒, q둒, q둒);
+Test_N(q둓, q둓, q둓, q둓, q둓);
+Test_N(q둔, q둔, q둔, q둔, q둔);
+Test_N(q둕, q둕, q둕, q둕, q둕);
+Test_N(q둖, q둖, q둖, q둖, q둖);
+Test_N(q둗, q둗, q둗, q둗, q둗);
+Test_N(q둘, q둘, q둘, q둘, q둘);
+Test_N(q둙, q둙, q둙, q둙, q둙);
+Test_N(q둚, q둚, q둚, q둚, q둚);
+Test_N(q둛, q둛, q둛, q둛, q둛);
+Test_N(q둜, q둜, q둜, q둜, q둜);
+Test_N(q둝, q둝, q둝, q둝, q둝);
+Test_N(q둞, q둞, q둞, q둞, q둞);
+Test_N(q둟, q둟, q둟, q둟, q둟);
+Test_N(q둠, q둠, q둠, q둠, q둠);
+Test_N(q둡, q둡, q둡, q둡, q둡);
+Test_N(q둢, q둢, q둢, q둢, q둢);
+Test_N(q둣, q둣, q둣, q둣, q둣);
+Test_N(q둤, q둤, q둤, q둤, q둤);
+Test_N(q둥, q둥, q둥, q둥, q둥);
+Test_N(q둦, q둦, q둦, q둦, q둦);
+Test_N(q둧, q둧, q둧, q둧, q둧);
+Test_N(q둨, q둨, q둨, q둨, q둨);
+Test_N(q둩, q둩, q둩, q둩, q둩);
+Test_N(q둪, q둪, q둪, q둪, q둪);
+Test_N(q둫, q둫, q둫, q둫, q둫);
+Test_N(q둬, q둬, q둬, q둬, q둬);
+Test_N(q둭, q둭, q둭, q둭, q둭);
+Test_N(q둮, q둮, q둮, q둮, q둮);
+Test_N(q둯, q둯, q둯, q둯, q둯);
+Test_N(q둰, q둰, q둰, q둰, q둰);
+Test_N(q둱, q둱, q둱, q둱, q둱);
+Test_N(q둲, q둲, q둲, q둲, q둲);
+Test_N(q둳, q둳, q둳, q둳, q둳);
+Test_N(q둴, q둴, q둴, q둴, q둴);
+Test_N(q둵, q둵, q둵, q둵, q둵);
+Test_N(q둶, q둶, q둶, q둶, q둶);
+Test_N(q둷, q둷, q둷, q둷, q둷);
+Test_N(q둸, q둸, q둸, q둸, q둸);
+Test_N(q둹, q둹, q둹, q둹, q둹);
+Test_N(q둺, q둺, q둺, q둺, q둺);
+Test_N(q둻, q둻, q둻, q둻, q둻);
+Test_N(q둼, q둼, q둼, q둼, q둼);
+Test_N(q둽, q둽, q둽, q둽, q둽);
+Test_N(q둾, q둾, q둾, q둾, q둾);
+Test_N(q둿, q둿, q둿, q둿, q둿);
+Test_N(q뒀, q뒀, q뒀, q뒀, q뒀);
+Test_N(q뒁, q뒁, q뒁, q뒁, q뒁);
+Test_N(q뒂, q뒂, q뒂, q뒂, q뒂);
+Test_N(q뒃, q뒃, q뒃, q뒃, q뒃);
+Test_N(q뒄, q뒄, q뒄, q뒄, q뒄);
+Test_N(q뒅, q뒅, q뒅, q뒅, q뒅);
+Test_N(q뒆, q뒆, q뒆, q뒆, q뒆);
+Test_N(q뒇, q뒇, q뒇, q뒇, q뒇);
+Test_N(q뒈, q뒈, q뒈, q뒈, q뒈);
+Test_N(q뒉, q뒉, q뒉, q뒉, q뒉);
+Test_N(q뒊, q뒊, q뒊, q뒊, q뒊);
+Test_N(q뒋, q뒋, q뒋, q뒋, q뒋);
+Test_N(q뒌, q뒌, q뒌, q뒌, q뒌);
+Test_N(q뒍, q뒍, q뒍, q뒍, q뒍);
+Test_N(q뒎, q뒎, q뒎, q뒎, q뒎);
+Test_N(q뒏, q뒏, q뒏, q뒏, q뒏);
+Test_N(q뒐, q뒐, q뒐, q뒐, q뒐);
+Test_N(q뒑, q뒑, q뒑, q뒑, q뒑);
+Test_N(q뒒, q뒒, q뒒, q뒒, q뒒);
+Test_N(q뒓, q뒓, q뒓, q뒓, q뒓);
+Test_N(q뒔, q뒔, q뒔, q뒔, q뒔);
+Test_N(q뒕, q뒕, q뒕, q뒕, q뒕);
+Test_N(q뒖, q뒖, q뒖, q뒖, q뒖);
+Test_N(q뒗, q뒗, q뒗, q뒗, q뒗);
+Test_N(q뒘, q뒘, q뒘, q뒘, q뒘);
+Test_N(q뒙, q뒙, q뒙, q뒙, q뒙);
+Test_N(q뒚, q뒚, q뒚, q뒚, q뒚);
+Test_N(q뒛, q뒛, q뒛, q뒛, q뒛);
+Test_N(q뒜, q뒜, q뒜, q뒜, q뒜);
+Test_N(q뒝, q뒝, q뒝, q뒝, q뒝);
+Test_N(q뒞, q뒞, q뒞, q뒞, q뒞);
+Test_N(q뒟, q뒟, q뒟, q뒟, q뒟);
+Test_N(q뒠, q뒠, q뒠, q뒠, q뒠);
+Test_N(q뒡, q뒡, q뒡, q뒡, q뒡);
+Test_N(q뒢, q뒢, q뒢, q뒢, q뒢);
+Test_N(q뒣, q뒣, q뒣, q뒣, q뒣);
+Test_N(q뒤, q뒤, q뒤, q뒤, q뒤);
+Test_N(q뒥, q뒥, q뒥, q뒥, q뒥);
+Test_N(q뒦, q뒦, q뒦, q뒦, q뒦);
+Test_N(q뒧, q뒧, q뒧, q뒧, q뒧);
+Test_N(q뒨, q뒨, q뒨, q뒨, q뒨);
+Test_N(q뒩, q뒩, q뒩, q뒩, q뒩);
+Test_N(q뒪, q뒪, q뒪, q뒪, q뒪);
+Test_N(q뒫, q뒫, q뒫, q뒫, q뒫);
+Test_N(q뒬, q뒬, q뒬, q뒬, q뒬);
+Test_N(q뒭, q뒭, q뒭, q뒭, q뒭);
+Test_N(q뒮, q뒮, q뒮, q뒮, q뒮);
+Test_N(q뒯, q뒯, q뒯, q뒯, q뒯);
+Test_N(q뒰, q뒰, q뒰, q뒰, q뒰);
+Test_N(q뒱, q뒱, q뒱, q뒱, q뒱);
+Test_N(q뒲, q뒲, q뒲, q뒲, q뒲);
+Test_N(q뒳, q뒳, q뒳, q뒳, q뒳);
+Test_N(q뒴, q뒴, q뒴, q뒴, q뒴);
+Test_N(q뒵, q뒵, q뒵, q뒵, q뒵);
+Test_N(q뒶, q뒶, q뒶, q뒶, q뒶);
+Test_N(q뒷, q뒷, q뒷, q뒷, q뒷);
+Test_N(q뒸, q뒸, q뒸, q뒸, q뒸);
+Test_N(q뒹, q뒹, q뒹, q뒹, q뒹);
+Test_N(q뒺, q뒺, q뒺, q뒺, q뒺);
+Test_N(q뒻, q뒻, q뒻, q뒻, q뒻);
+Test_N(q뒼, q뒼, q뒼, q뒼, q뒼);
+Test_N(q뒽, q뒽, q뒽, q뒽, q뒽);
+Test_N(q뒾, q뒾, q뒾, q뒾, q뒾);
+Test_N(q뒿, q뒿, q뒿, q뒿, q뒿);
+Test_N(q듀, q듀, q듀, q듀, q듀);
+Test_N(q듁, q듁, q듁, q듁, q듁);
+Test_N(q듂, q듂, q듂, q듂, q듂);
+Test_N(q듃, q듃, q듃, q듃, q듃);
+Test_N(q듄, q듄, q듄, q듄, q듄);
+Test_N(q듅, q듅, q듅, q듅, q듅);
+Test_N(q듆, q듆, q듆, q듆, q듆);
+Test_N(q듇, q듇, q듇, q듇, q듇);
+Test_N(q듈, q듈, q듈, q듈, q듈);
+Test_N(q듉, q듉, q듉, q듉, q듉);
+Test_N(q듊, q듊, q듊, q듊, q듊);
+Test_N(q듋, q듋, q듋, q듋, q듋);
+Test_N(q듌, q듌, q듌, q듌, q듌);
+Test_N(q듍, q듍, q듍, q듍, q듍);
+Test_N(q듎, q듎, q듎, q듎, q듎);
+Test_N(q듏, q듏, q듏, q듏, q듏);
+Test_N(q듐, q듐, q듐, q듐, q듐);
+Test_N(q듑, q듑, q듑, q듑, q듑);
+Test_N(q듒, q듒, q듒, q듒, q듒);
+Test_N(q듓, q듓, q듓, q듓, q듓);
+Test_N(q듔, q듔, q듔, q듔, q듔);
+Test_N(q듕, q듕, q듕, q듕, q듕);
+Test_N(q듖, q듖, q듖, q듖, q듖);
+Test_N(q듗, q듗, q듗, q듗, q듗);
+Test_N(q듘, q듘, q듘, q듘, q듘);
+Test_N(q듙, q듙, q듙, q듙, q듙);
+Test_N(q듚, q듚, q듚, q듚, q듚);
+Test_N(q듛, q듛, q듛, q듛, q듛);
+Test_N(q드, q드, q드, q드, q드);
+Test_N(q득, q득, q득, q득, q득);
+Test_N(q듞, q듞, q듞, q듞, q듞);
+Test_N(q듟, q듟, q듟, q듟, q듟);
+Test_N(q든, q든, q든, q든, q든);
+Test_N(q듡, q듡, q듡, q듡, q듡);
+Test_N(q듢, q듢, q듢, q듢, q듢);
+Test_N(q듣, q듣, q듣, q듣, q듣);
+Test_N(q들, q들, q들, q들, q들);
+Test_N(q듥, q듥, q듥, q듥, q듥);
+Test_N(q듦, q듦, q듦, q듦, q듦);
+Test_N(q듧, q듧, q듧, q듧, q듧);
+Test_N(q듨, q듨, q듨, q듨, q듨);
+Test_N(q듩, q듩, q듩, q듩, q듩);
+Test_N(q듪, q듪, q듪, q듪, q듪);
+Test_N(q듫, q듫, q듫, q듫, q듫);
+Test_N(q듬, q듬, q듬, q듬, q듬);
+Test_N(q듭, q듭, q듭, q듭, q듭);
+Test_N(q듮, q듮, q듮, q듮, q듮);
+Test_N(q듯, q듯, q듯, q듯, q듯);
+Test_N(q듰, q듰, q듰, q듰, q듰);
+Test_N(q등, q등, q등, q등, q등);
+Test_N(q듲, q듲, q듲, q듲, q듲);
+Test_N(q듳, q듳, q듳, q듳, q듳);
+Test_N(q듴, q듴, q듴, q듴, q듴);
+Test_N(q듵, q듵, q듵, q듵, q듵);
+Test_N(q듶, q듶, q듶, q듶, q듶);
+Test_N(q듷, q듷, q듷, q듷, q듷);
+Test_N(q듸, q듸, q듸, q듸, q듸);
+Test_N(q듹, q듹, q듹, q듹, q듹);
+Test_N(q듺, q듺, q듺, q듺, q듺);
+Test_N(q듻, q듻, q듻, q듻, q듻);
+Test_N(q듼, q듼, q듼, q듼, q듼);
+Test_N(q듽, q듽, q듽, q듽, q듽);
+Test_N(q듾, q듾, q듾, q듾, q듾);
+Test_N(q듿, q듿, q듿, q듿, q듿);
+Test_N(q딀, q딀, q딀, q딀, q딀);
+Test_N(q딁, q딁, q딁, q딁, q딁);
+Test_N(q딂, q딂, q딂, q딂, q딂);
+Test_N(q딃, q딃, q딃, q딃, q딃);
+Test_N(q딄, q딄, q딄, q딄, q딄);
+Test_N(q딅, q딅, q딅, q딅, q딅);
+Test_N(q딆, q딆, q딆, q딆, q딆);
+Test_N(q딇, q딇, q딇, q딇, q딇);
+Test_N(q딈, q딈, q딈, q딈, q딈);
+Test_N(q딉, q딉, q딉, q딉, q딉);
+Test_N(q딊, q딊, q딊, q딊, q딊);
+Test_N(q딋, q딋, q딋, q딋, q딋);
+Test_N(q딌, q딌, q딌, q딌, q딌);
+Test_N(q딍, q딍, q딍, q딍, q딍);
+Test_N(q딎, q딎, q딎, q딎, q딎);
+Test_N(q딏, q딏, q딏, q딏, q딏);
+Test_N(q딐, q딐, q딐, q딐, q딐);
+Test_N(q딑, q딑, q딑, q딑, q딑);
+Test_N(q딒, q딒, q딒, q딒, q딒);
+Test_N(q딓, q딓, q딓, q딓, q딓);
+Test_N(q디, q디, q디, q디, q디);
+Test_N(q딕, q딕, q딕, q딕, q딕);
+Test_N(q딖, q딖, q딖, q딖, q딖);
+Test_N(q딗, q딗, q딗, q딗, q딗);
+Test_N(q딘, q딘, q딘, q딘, q딘);
+Test_N(q딙, q딙, q딙, q딙, q딙);
+Test_N(q딚, q딚, q딚, q딚, q딚);
+Test_N(q딛, q딛, q딛, q딛, q딛);
+Test_N(q딜, q딜, q딜, q딜, q딜);
+Test_N(q딝, q딝, q딝, q딝, q딝);
+Test_N(q딞, q딞, q딞, q딞, q딞);
+Test_N(q딟, q딟, q딟, q딟, q딟);
+Test_N(q딠, q딠, q딠, q딠, q딠);
+Test_N(q딡, q딡, q딡, q딡, q딡);
+Test_N(q딢, q딢, q딢, q딢, q딢);
+Test_N(q딣, q딣, q딣, q딣, q딣);
+Test_N(q딤, q딤, q딤, q딤, q딤);
+Test_N(q딥, q딥, q딥, q딥, q딥);
+Test_N(q딦, q딦, q딦, q딦, q딦);
+Test_N(q딧, q딧, q딧, q딧, q딧);
+Test_N(q딨, q딨, q딨, q딨, q딨);
+Test_N(q딩, q딩, q딩, q딩, q딩);
+Test_N(q딪, q딪, q딪, q딪, q딪);
+Test_N(q딫, q딫, q딫, q딫, q딫);
+Test_N(q딬, q딬, q딬, q딬, q딬);
+Test_N(q딭, q딭, q딭, q딭, q딭);
+Test_N(q딮, q딮, q딮, q딮, q딮);
+Test_N(q딯, q딯, q딯, q딯, q딯);
+Test_N(q따, q따, q따, q따, q따);
+Test_N(q딱, q딱, q딱, q딱, q딱);
+Test_N(q딲, q딲, q딲, q딲, q딲);
+Test_N(q딳, q딳, q딳, q딳, q딳);
+Test_N(q딴, q딴, q딴, q딴, q딴);
+Test_N(q딵, q딵, q딵, q딵, q딵);
+Test_N(q딶, q딶, q딶, q딶, q딶);
+Test_N(q딷, q딷, q딷, q딷, q딷);
+Test_N(q딸, q딸, q딸, q딸, q딸);
+Test_N(q딹, q딹, q딹, q딹, q딹);
+Test_N(q딺, q딺, q딺, q딺, q딺);
+Test_N(q딻, q딻, q딻, q딻, q딻);
+Test_N(q딼, q딼, q딼, q딼, q딼);
+Test_N(q딽, q딽, q딽, q딽, q딽);
+Test_N(q딾, q딾, q딾, q딾, q딾);
+Test_N(q딿, q딿, q딿, q딿, q딿);
+Test_N(q땀, q땀, q땀, q땀, q땀);
+Test_N(q땁, q땁, q땁, q땁, q땁);
+Test_N(q땂, q땂, q땂, q땂, q땂);
+Test_N(q땃, q땃, q땃, q땃, q땃);
+Test_N(q땄, q땄, q땄, q땄, q땄);
+Test_N(q땅, q땅, q땅, q땅, q땅);
+Test_N(q땆, q땆, q땆, q땆, q땆);
+Test_N(q땇, q땇, q땇, q땇, q땇);
+Test_N(q땈, q땈, q땈, q땈, q땈);
+Test_N(q땉, q땉, q땉, q땉, q땉);
+Test_N(q땊, q땊, q땊, q땊, q땊);
+Test_N(q땋, q땋, q땋, q땋, q땋);
+Test_N(q때, q때, q때, q때, q때);
+Test_N(q땍, q땍, q땍, q땍, q땍);
+Test_N(q땎, q땎, q땎, q땎, q땎);
+Test_N(q땏, q땏, q땏, q땏, q땏);
+Test_N(q땐, q땐, q땐, q땐, q땐);
+Test_N(q땑, q땑, q땑, q땑, q땑);
+Test_N(q땒, q땒, q땒, q땒, q땒);
+Test_N(q땓, q땓, q땓, q땓, q땓);
+Test_N(q땔, q땔, q땔, q땔, q땔);
+Test_N(q땕, q땕, q땕, q땕, q땕);
+Test_N(q땖, q땖, q땖, q땖, q땖);
+Test_N(q땗, q땗, q땗, q땗, q땗);
+Test_N(q땘, q땘, q땘, q땘, q땘);
+Test_N(q땙, q땙, q땙, q땙, q땙);
+Test_N(q땚, q땚, q땚, q땚, q땚);
+Test_N(q땛, q땛, q땛, q땛, q땛);
+Test_N(q땜, q땜, q땜, q땜, q땜);
+Test_N(q땝, q땝, q땝, q땝, q땝);
+Test_N(q땞, q땞, q땞, q땞, q땞);
+Test_N(q땟, q땟, q땟, q땟, q땟);
+Test_N(q땠, q땠, q땠, q땠, q땠);
+Test_N(q땡, q땡, q땡, q땡, q땡);
+Test_N(q땢, q땢, q땢, q땢, q땢);
+Test_N(q땣, q땣, q땣, q땣, q땣);
+Test_N(q땤, q땤, q땤, q땤, q땤);
+Test_N(q땥, q땥, q땥, q땥, q땥);
+Test_N(q땦, q땦, q땦, q땦, q땦);
+Test_N(q땧, q땧, q땧, q땧, q땧);
+Test_N(q땨, q땨, q땨, q땨, q땨);
+Test_N(q땩, q땩, q땩, q땩, q땩);
+Test_N(q땪, q땪, q땪, q땪, q땪);
+Test_N(q땫, q땫, q땫, q땫, q땫);
+Test_N(q땬, q땬, q땬, q땬, q땬);
+Test_N(q땭, q땭, q땭, q땭, q땭);
+Test_N(q땮, q땮, q땮, q땮, q땮);
+Test_N(q땯, q땯, q땯, q땯, q땯);
+Test_N(q땰, q땰, q땰, q땰, q땰);
+Test_N(q땱, q땱, q땱, q땱, q땱);
+Test_N(q땲, q땲, q땲, q땲, q땲);
+Test_N(q땳, q땳, q땳, q땳, q땳);
+Test_N(q땴, q땴, q땴, q땴, q땴);
+Test_N(q땵, q땵, q땵, q땵, q땵);
+Test_N(q땶, q땶, q땶, q땶, q땶);
+Test_N(q땷, q땷, q땷, q땷, q땷);
+Test_N(q땸, q땸, q땸, q땸, q땸);
+Test_N(q땹, q땹, q땹, q땹, q땹);
+Test_N(q땺, q땺, q땺, q땺, q땺);
+Test_N(q땻, q땻, q땻, q땻, q땻);
+Test_N(q땼, q땼, q땼, q땼, q땼);
+Test_N(q땽, q땽, q땽, q땽, q땽);
+Test_N(q땾, q땾, q땾, q땾, q땾);
+Test_N(q땿, q땿, q땿, q땿, q땿);
+Test_N(q떀, q떀, q떀, q떀, q떀);
+Test_N(q떁, q떁, q떁, q떁, q떁);
+Test_N(q떂, q떂, q떂, q떂, q떂);
+Test_N(q떃, q떃, q떃, q떃, q떃);
+Test_N(q떄, q떄, q떄, q떄, q떄);
+Test_N(q떅, q떅, q떅, q떅, q떅);
+Test_N(q떆, q떆, q떆, q떆, q떆);
+Test_N(q떇, q떇, q떇, q떇, q떇);
+Test_N(q떈, q떈, q떈, q떈, q떈);
+Test_N(q떉, q떉, q떉, q떉, q떉);
+Test_N(q떊, q떊, q떊, q떊, q떊);
+Test_N(q떋, q떋, q떋, q떋, q떋);
+Test_N(q떌, q떌, q떌, q떌, q떌);
+Test_N(q떍, q떍, q떍, q떍, q떍);
+Test_N(q떎, q떎, q떎, q떎, q떎);
+Test_N(q떏, q떏, q떏, q떏, q떏);
+Test_N(q떐, q떐, q떐, q떐, q떐);
+Test_N(q떑, q떑, q떑, q떑, q떑);
+Test_N(q떒, q떒, q떒, q떒, q떒);
+Test_N(q떓, q떓, q떓, q떓, q떓);
+Test_N(q떔, q떔, q떔, q떔, q떔);
+Test_N(q떕, q떕, q떕, q떕, q떕);
+Test_N(q떖, q떖, q떖, q떖, q떖);
+Test_N(q떗, q떗, q떗, q떗, q떗);
+Test_N(q떘, q떘, q떘, q떘, q떘);
+Test_N(q떙, q떙, q떙, q떙, q떙);
+Test_N(q떚, q떚, q떚, q떚, q떚);
+Test_N(q떛, q떛, q떛, q떛, q떛);
+Test_N(q떜, q떜, q떜, q떜, q떜);
+Test_N(q떝, q떝, q떝, q떝, q떝);
+Test_N(q떞, q떞, q떞, q떞, q떞);
+Test_N(q떟, q떟, q떟, q떟, q떟);
+Test_N(q떠, q떠, q떠, q떠, q떠);
+Test_N(q떡, q떡, q떡, q떡, q떡);
+Test_N(q떢, q떢, q떢, q떢, q떢);
+Test_N(q떣, q떣, q떣, q떣, q떣);
+Test_N(q떤, q떤, q떤, q떤, q떤);
+Test_N(q떥, q떥, q떥, q떥, q떥);
+Test_N(q떦, q떦, q떦, q떦, q떦);
+Test_N(q떧, q떧, q떧, q떧, q떧);
+Test_N(q떨, q떨, q떨, q떨, q떨);
+Test_N(q떩, q떩, q떩, q떩, q떩);
+Test_N(q떪, q떪, q떪, q떪, q떪);
+Test_N(q떫, q떫, q떫, q떫, q떫);
+Test_N(q떬, q떬, q떬, q떬, q떬);
+Test_N(q떭, q떭, q떭, q떭, q떭);
+Test_N(q떮, q떮, q떮, q떮, q떮);
+Test_N(q떯, q떯, q떯, q떯, q떯);
+Test_N(q떰, q떰, q떰, q떰, q떰);
+Test_N(q떱, q떱, q떱, q떱, q떱);
+Test_N(q떲, q떲, q떲, q떲, q떲);
+Test_N(q떳, q떳, q떳, q떳, q떳);
+Test_N(q떴, q떴, q떴, q떴, q떴);
+Test_N(q떵, q떵, q떵, q떵, q떵);
+Test_N(q떶, q떶, q떶, q떶, q떶);
+Test_N(q떷, q떷, q떷, q떷, q떷);
+Test_N(q떸, q떸, q떸, q떸, q떸);
+Test_N(q떹, q떹, q떹, q떹, q떹);
+Test_N(q떺, q떺, q떺, q떺, q떺);
+Test_N(q떻, q떻, q떻, q떻, q떻);
+Test_N(q떼, q떼, q떼, q떼, q떼);
+Test_N(q떽, q떽, q떽, q떽, q떽);
+Test_N(q떾, q떾, q떾, q떾, q떾);
+Test_N(q떿, q떿, q떿, q떿, q떿);
+Test_N(q뗀, q뗀, q뗀, q뗀, q뗀);
+Test_N(q뗁, q뗁, q뗁, q뗁, q뗁);
+Test_N(q뗂, q뗂, q뗂, q뗂, q뗂);
+Test_N(q뗃, q뗃, q뗃, q뗃, q뗃);
+Test_N(q뗄, q뗄, q뗄, q뗄, q뗄);
+Test_N(q뗅, q뗅, q뗅, q뗅, q뗅);
+Test_N(q뗆, q뗆, q뗆, q뗆, q뗆);
+Test_N(q뗇, q뗇, q뗇, q뗇, q뗇);
+Test_N(q뗈, q뗈, q뗈, q뗈, q뗈);
+Test_N(q뗉, q뗉, q뗉, q뗉, q뗉);
+Test_N(q뗊, q뗊, q뗊, q뗊, q뗊);
+Test_N(q뗋, q뗋, q뗋, q뗋, q뗋);
+Test_N(q뗌, q뗌, q뗌, q뗌, q뗌);
+Test_N(q뗍, q뗍, q뗍, q뗍, q뗍);
+Test_N(q뗎, q뗎, q뗎, q뗎, q뗎);
+Test_N(q뗏, q뗏, q뗏, q뗏, q뗏);
+Test_N(q뗐, q뗐, q뗐, q뗐, q뗐);
+Test_N(q뗑, q뗑, q뗑, q뗑, q뗑);
+Test_N(q뗒, q뗒, q뗒, q뗒, q뗒);
+Test_N(q뗓, q뗓, q뗓, q뗓, q뗓);
+Test_N(q뗔, q뗔, q뗔, q뗔, q뗔);
+Test_N(q뗕, q뗕, q뗕, q뗕, q뗕);
+Test_N(q뗖, q뗖, q뗖, q뗖, q뗖);
+Test_N(q뗗, q뗗, q뗗, q뗗, q뗗);
+Test_N(q뗘, q뗘, q뗘, q뗘, q뗘);
+Test_N(q뗙, q뗙, q뗙, q뗙, q뗙);
+Test_N(q뗚, q뗚, q뗚, q뗚, q뗚);
+Test_N(q뗛, q뗛, q뗛, q뗛, q뗛);
+Test_N(q뗜, q뗜, q뗜, q뗜, q뗜);
+Test_N(q뗝, q뗝, q뗝, q뗝, q뗝);
+Test_N(q뗞, q뗞, q뗞, q뗞, q뗞);
+Test_N(q뗟, q뗟, q뗟, q뗟, q뗟);
+Test_N(q뗠, q뗠, q뗠, q뗠, q뗠);
+Test_N(q뗡, q뗡, q뗡, q뗡, q뗡);
+Test_N(q뗢, q뗢, q뗢, q뗢, q뗢);
+Test_N(q뗣, q뗣, q뗣, q뗣, q뗣);
+Test_N(q뗤, q뗤, q뗤, q뗤, q뗤);
+Test_N(q뗥, q뗥, q뗥, q뗥, q뗥);
+Test_N(q뗦, q뗦, q뗦, q뗦, q뗦);
+Test_N(q뗧, q뗧, q뗧, q뗧, q뗧);
+Test_N(q뗨, q뗨, q뗨, q뗨, q뗨);
+Test_N(q뗩, q뗩, q뗩, q뗩, q뗩);
+Test_N(q뗪, q뗪, q뗪, q뗪, q뗪);
+Test_N(q뗫, q뗫, q뗫, q뗫, q뗫);
+Test_N(q뗬, q뗬, q뗬, q뗬, q뗬);
+Test_N(q뗭, q뗭, q뗭, q뗭, q뗭);
+Test_N(q뗮, q뗮, q뗮, q뗮, q뗮);
+Test_N(q뗯, q뗯, q뗯, q뗯, q뗯);
+Test_N(q뗰, q뗰, q뗰, q뗰, q뗰);
+Test_N(q뗱, q뗱, q뗱, q뗱, q뗱);
+Test_N(q뗲, q뗲, q뗲, q뗲, q뗲);
+Test_N(q뗳, q뗳, q뗳, q뗳, q뗳);
+Test_N(q뗴, q뗴, q뗴, q뗴, q뗴);
+Test_N(q뗵, q뗵, q뗵, q뗵, q뗵);
+Test_N(q뗶, q뗶, q뗶, q뗶, q뗶);
+Test_N(q뗷, q뗷, q뗷, q뗷, q뗷);
+Test_N(q뗸, q뗸, q뗸, q뗸, q뗸);
+Test_N(q뗹, q뗹, q뗹, q뗹, q뗹);
+Test_N(q뗺, q뗺, q뗺, q뗺, q뗺);
+Test_N(q뗻, q뗻, q뗻, q뗻, q뗻);
+Test_N(q뗼, q뗼, q뗼, q뗼, q뗼);
+Test_N(q뗽, q뗽, q뗽, q뗽, q뗽);
+Test_N(q뗾, q뗾, q뗾, q뗾, q뗾);
+Test_N(q뗿, q뗿, q뗿, q뗿, q뗿);
+Test_N(q똀, q똀, q똀, q똀, q똀);
+Test_N(q똁, q똁, q똁, q똁, q똁);
+Test_N(q똂, q똂, q똂, q똂, q똂);
+Test_N(q똃, q똃, q똃, q똃, q똃);
+Test_N(q똄, q똄, q똄, q똄, q똄);
+Test_N(q똅, q똅, q똅, q똅, q똅);
+Test_N(q똆, q똆, q똆, q똆, q똆);
+Test_N(q똇, q똇, q똇, q똇, q똇);
+Test_N(q똈, q똈, q똈, q똈, q똈);
+Test_N(q똉, q똉, q똉, q똉, q똉);
+Test_N(q똊, q똊, q똊, q똊, q똊);
+Test_N(q똋, q똋, q똋, q똋, q똋);
+Test_N(q똌, q똌, q똌, q똌, q똌);
+Test_N(q똍, q똍, q똍, q똍, q똍);
+Test_N(q똎, q똎, q똎, q똎, q똎);
+Test_N(q똏, q똏, q똏, q똏, q똏);
+Test_N(q또, q또, q또, q또, q또);
+Test_N(q똑, q똑, q똑, q똑, q똑);
+Test_N(q똒, q똒, q똒, q똒, q똒);
+Test_N(q똓, q똓, q똓, q똓, q똓);
+Test_N(q똔, q똔, q똔, q똔, q똔);
+Test_N(q똕, q똕, q똕, q똕, q똕);
+Test_N(q똖, q똖, q똖, q똖, q똖);
+Test_N(q똗, q똗, q똗, q똗, q똗);
+Test_N(q똘, q똘, q똘, q똘, q똘);
+Test_N(q똙, q똙, q똙, q똙, q똙);
+Test_N(q똚, q똚, q똚, q똚, q똚);
+Test_N(q똛, q똛, q똛, q똛, q똛);
+Test_N(q똜, q똜, q똜, q똜, q똜);
+Test_N(q똝, q똝, q똝, q똝, q똝);
+Test_N(q똞, q똞, q똞, q똞, q똞);
+Test_N(q똟, q똟, q똟, q똟, q똟);
+Test_N(q똠, q똠, q똠, q똠, q똠);
+Test_N(q똡, q똡, q똡, q똡, q똡);
+Test_N(q똢, q똢, q똢, q똢, q똢);
+Test_N(q똣, q똣, q똣, q똣, q똣);
+Test_N(q똤, q똤, q똤, q똤, q똤);
+Test_N(q똥, q똥, q똥, q똥, q똥);
+Test_N(q똦, q똦, q똦, q똦, q똦);
+Test_N(q똧, q똧, q똧, q똧, q똧);
+Test_N(q똨, q똨, q똨, q똨, q똨);
+Test_N(q똩, q똩, q똩, q똩, q똩);
+Test_N(q똪, q똪, q똪, q똪, q똪);
+Test_N(q똫, q똫, q똫, q똫, q똫);
+Test_N(q똬, q똬, q똬, q똬, q똬);
+Test_N(q똭, q똭, q똭, q똭, q똭);
+Test_N(q똮, q똮, q똮, q똮, q똮);
+Test_N(q똯, q똯, q똯, q똯, q똯);
+Test_N(q똰, q똰, q똰, q똰, q똰);
+Test_N(q똱, q똱, q똱, q똱, q똱);
+Test_N(q똲, q똲, q똲, q똲, q똲);
+Test_N(q똳, q똳, q똳, q똳, q똳);
+Test_N(q똴, q똴, q똴, q똴, q똴);
+Test_N(q똵, q똵, q똵, q똵, q똵);
+Test_N(q똶, q똶, q똶, q똶, q똶);
+Test_N(q똷, q똷, q똷, q똷, q똷);
+Test_N(q똸, q똸, q똸, q똸, q똸);
+Test_N(q똹, q똹, q똹, q똹, q똹);
+Test_N(q똺, q똺, q똺, q똺, q똺);
+Test_N(q똻, q똻, q똻, q똻, q똻);
+Test_N(q똼, q똼, q똼, q똼, q똼);
+Test_N(q똽, q똽, q똽, q똽, q똽);
+Test_N(q똾, q똾, q똾, q똾, q똾);
+Test_N(q똿, q똿, q똿, q똿, q똿);
+Test_N(q뙀, q뙀, q뙀, q뙀, q뙀);
+Test_N(q뙁, q뙁, q뙁, q뙁, q뙁);
+Test_N(q뙂, q뙂, q뙂, q뙂, q뙂);
+Test_N(q뙃, q뙃, q뙃, q뙃, q뙃);
+Test_N(q뙄, q뙄, q뙄, q뙄, q뙄);
+Test_N(q뙅, q뙅, q뙅, q뙅, q뙅);
+Test_N(q뙆, q뙆, q뙆, q뙆, q뙆);
+Test_N(q뙇, q뙇, q뙇, q뙇, q뙇);
+Test_N(q뙈, q뙈, q뙈, q뙈, q뙈);
+Test_N(q뙉, q뙉, q뙉, q뙉, q뙉);
+Test_N(q뙊, q뙊, q뙊, q뙊, q뙊);
+Test_N(q뙋, q뙋, q뙋, q뙋, q뙋);
+Test_N(q뙌, q뙌, q뙌, q뙌, q뙌);
+Test_N(q뙍, q뙍, q뙍, q뙍, q뙍);
+Test_N(q뙎, q뙎, q뙎, q뙎, q뙎);
+Test_N(q뙏, q뙏, q뙏, q뙏, q뙏);
+Test_N(q뙐, q뙐, q뙐, q뙐, q뙐);
+Test_N(q뙑, q뙑, q뙑, q뙑, q뙑);
+Test_N(q뙒, q뙒, q뙒, q뙒, q뙒);
+Test_N(q뙓, q뙓, q뙓, q뙓, q뙓);
+Test_N(q뙔, q뙔, q뙔, q뙔, q뙔);
+Test_N(q뙕, q뙕, q뙕, q뙕, q뙕);
+Test_N(q뙖, q뙖, q뙖, q뙖, q뙖);
+Test_N(q뙗, q뙗, q뙗, q뙗, q뙗);
+Test_N(q뙘, q뙘, q뙘, q뙘, q뙘);
+Test_N(q뙙, q뙙, q뙙, q뙙, q뙙);
+Test_N(q뙚, q뙚, q뙚, q뙚, q뙚);
+Test_N(q뙛, q뙛, q뙛, q뙛, q뙛);
+Test_N(q뙜, q뙜, q뙜, q뙜, q뙜);
+Test_N(q뙝, q뙝, q뙝, q뙝, q뙝);
+Test_N(q뙞, q뙞, q뙞, q뙞, q뙞);
+Test_N(q뙟, q뙟, q뙟, q뙟, q뙟);
+Test_N(q뙠, q뙠, q뙠, q뙠, q뙠);
+Test_N(q뙡, q뙡, q뙡, q뙡, q뙡);
+Test_N(q뙢, q뙢, q뙢, q뙢, q뙢);
+Test_N(q뙣, q뙣, q뙣, q뙣, q뙣);
+Test_N(q뙤, q뙤, q뙤, q뙤, q뙤);
+Test_N(q뙥, q뙥, q뙥, q뙥, q뙥);
+Test_N(q뙦, q뙦, q뙦, q뙦, q뙦);
+Test_N(q뙧, q뙧, q뙧, q뙧, q뙧);
+Test_N(q뙨, q뙨, q뙨, q뙨, q뙨);
+Test_N(q뙩, q뙩, q뙩, q뙩, q뙩);
+Test_N(q뙪, q뙪, q뙪, q뙪, q뙪);
+Test_N(q뙫, q뙫, q뙫, q뙫, q뙫);
+Test_N(q뙬, q뙬, q뙬, q뙬, q뙬);
+Test_N(q뙭, q뙭, q뙭, q뙭, q뙭);
+Test_N(q뙮, q뙮, q뙮, q뙮, q뙮);
+Test_N(q뙯, q뙯, q뙯, q뙯, q뙯);
+Test_N(q뙰, q뙰, q뙰, q뙰, q뙰);
+Test_N(q뙱, q뙱, q뙱, q뙱, q뙱);
+Test_N(q뙲, q뙲, q뙲, q뙲, q뙲);
+Test_N(q뙳, q뙳, q뙳, q뙳, q뙳);
+Test_N(q뙴, q뙴, q뙴, q뙴, q뙴);
+Test_N(q뙵, q뙵, q뙵, q뙵, q뙵);
+Test_N(q뙶, q뙶, q뙶, q뙶, q뙶);
+Test_N(q뙷, q뙷, q뙷, q뙷, q뙷);
+Test_N(q뙸, q뙸, q뙸, q뙸, q뙸);
+Test_N(q뙹, q뙹, q뙹, q뙹, q뙹);
+Test_N(q뙺, q뙺, q뙺, q뙺, q뙺);
+Test_N(q뙻, q뙻, q뙻, q뙻, q뙻);
+Test_N(q뙼, q뙼, q뙼, q뙼, q뙼);
+Test_N(q뙽, q뙽, q뙽, q뙽, q뙽);
+Test_N(q뙾, q뙾, q뙾, q뙾, q뙾);
+Test_N(q뙿, q뙿, q뙿, q뙿, q뙿);
+Test_N(q뚀, q뚀, q뚀, q뚀, q뚀);
+Test_N(q뚁, q뚁, q뚁, q뚁, q뚁);
+Test_N(q뚂, q뚂, q뚂, q뚂, q뚂);
+Test_N(q뚃, q뚃, q뚃, q뚃, q뚃);
+Test_N(q뚄, q뚄, q뚄, q뚄, q뚄);
+Test_N(q뚅, q뚅, q뚅, q뚅, q뚅);
+Test_N(q뚆, q뚆, q뚆, q뚆, q뚆);
+Test_N(q뚇, q뚇, q뚇, q뚇, q뚇);
+Test_N(q뚈, q뚈, q뚈, q뚈, q뚈);
+Test_N(q뚉, q뚉, q뚉, q뚉, q뚉);
+Test_N(q뚊, q뚊, q뚊, q뚊, q뚊);
+Test_N(q뚋, q뚋, q뚋, q뚋, q뚋);
+Test_N(q뚌, q뚌, q뚌, q뚌, q뚌);
+Test_N(q뚍, q뚍, q뚍, q뚍, q뚍);
+Test_N(q뚎, q뚎, q뚎, q뚎, q뚎);
+Test_N(q뚏, q뚏, q뚏, q뚏, q뚏);
+Test_N(q뚐, q뚐, q뚐, q뚐, q뚐);
+Test_N(q뚑, q뚑, q뚑, q뚑, q뚑);
+Test_N(q뚒, q뚒, q뚒, q뚒, q뚒);
+Test_N(q뚓, q뚓, q뚓, q뚓, q뚓);
+Test_N(q뚔, q뚔, q뚔, q뚔, q뚔);
+Test_N(q뚕, q뚕, q뚕, q뚕, q뚕);
+Test_N(q뚖, q뚖, q뚖, q뚖, q뚖);
+Test_N(q뚗, q뚗, q뚗, q뚗, q뚗);
+Test_N(q뚘, q뚘, q뚘, q뚘, q뚘);
+Test_N(q뚙, q뚙, q뚙, q뚙, q뚙);
+Test_N(q뚚, q뚚, q뚚, q뚚, q뚚);
+Test_N(q뚛, q뚛, q뚛, q뚛, q뚛);
+Test_N(q뚜, q뚜, q뚜, q뚜, q뚜);
+Test_N(q뚝, q뚝, q뚝, q뚝, q뚝);
+Test_N(q뚞, q뚞, q뚞, q뚞, q뚞);
+Test_N(q뚟, q뚟, q뚟, q뚟, q뚟);
+Test_N(q뚠, q뚠, q뚠, q뚠, q뚠);
+Test_N(q뚡, q뚡, q뚡, q뚡, q뚡);
+Test_N(q뚢, q뚢, q뚢, q뚢, q뚢);
+Test_N(q뚣, q뚣, q뚣, q뚣, q뚣);
+Test_N(q뚤, q뚤, q뚤, q뚤, q뚤);
+Test_N(q뚥, q뚥, q뚥, q뚥, q뚥);
+Test_N(q뚦, q뚦, q뚦, q뚦, q뚦);
+Test_N(q뚧, q뚧, q뚧, q뚧, q뚧);
+Test_N(q뚨, q뚨, q뚨, q뚨, q뚨);
+Test_N(q뚩, q뚩, q뚩, q뚩, q뚩);
+Test_N(q뚪, q뚪, q뚪, q뚪, q뚪);
+Test_N(q뚫, q뚫, q뚫, q뚫, q뚫);
+Test_N(q뚬, q뚬, q뚬, q뚬, q뚬);
+Test_N(q뚭, q뚭, q뚭, q뚭, q뚭);
+Test_N(q뚮, q뚮, q뚮, q뚮, q뚮);
+Test_N(q뚯, q뚯, q뚯, q뚯, q뚯);
+Test_N(q뚰, q뚰, q뚰, q뚰, q뚰);
+Test_N(q뚱, q뚱, q뚱, q뚱, q뚱);
+Test_N(q뚲, q뚲, q뚲, q뚲, q뚲);
+Test_N(q뚳, q뚳, q뚳, q뚳, q뚳);
+Test_N(q뚴, q뚴, q뚴, q뚴, q뚴);
+Test_N(q뚵, q뚵, q뚵, q뚵, q뚵);
+Test_N(q뚶, q뚶, q뚶, q뚶, q뚶);
+Test_N(q뚷, q뚷, q뚷, q뚷, q뚷);
+Test_N(q뚸, q뚸, q뚸, q뚸, q뚸);
+Test_N(q뚹, q뚹, q뚹, q뚹, q뚹);
+Test_N(q뚺, q뚺, q뚺, q뚺, q뚺);
+Test_N(q뚻, q뚻, q뚻, q뚻, q뚻);
+Test_N(q뚼, q뚼, q뚼, q뚼, q뚼);
+Test_N(q뚽, q뚽, q뚽, q뚽, q뚽);
+Test_N(q뚾, q뚾, q뚾, q뚾, q뚾);
+Test_N(q뚿, q뚿, q뚿, q뚿, q뚿);
+Test_N(q뛀, q뛀, q뛀, q뛀, q뛀);
+Test_N(q뛁, q뛁, q뛁, q뛁, q뛁);
+Test_N(q뛂, q뛂, q뛂, q뛂, q뛂);
+Test_N(q뛃, q뛃, q뛃, q뛃, q뛃);
+Test_N(q뛄, q뛄, q뛄, q뛄, q뛄);
+Test_N(q뛅, q뛅, q뛅, q뛅, q뛅);
+Test_N(q뛆, q뛆, q뛆, q뛆, q뛆);
+Test_N(q뛇, q뛇, q뛇, q뛇, q뛇);
+Test_N(q뛈, q뛈, q뛈, q뛈, q뛈);
+Test_N(q뛉, q뛉, q뛉, q뛉, q뛉);
+Test_N(q뛊, q뛊, q뛊, q뛊, q뛊);
+Test_N(q뛋, q뛋, q뛋, q뛋, q뛋);
+Test_N(q뛌, q뛌, q뛌, q뛌, q뛌);
+Test_N(q뛍, q뛍, q뛍, q뛍, q뛍);
+Test_N(q뛎, q뛎, q뛎, q뛎, q뛎);
+Test_N(q뛏, q뛏, q뛏, q뛏, q뛏);
+Test_N(q뛐, q뛐, q뛐, q뛐, q뛐);
+Test_N(q뛑, q뛑, q뛑, q뛑, q뛑);
+Test_N(q뛒, q뛒, q뛒, q뛒, q뛒);
+Test_N(q뛓, q뛓, q뛓, q뛓, q뛓);
+Test_N(q뛔, q뛔, q뛔, q뛔, q뛔);
+Test_N(q뛕, q뛕, q뛕, q뛕, q뛕);
+Test_N(q뛖, q뛖, q뛖, q뛖, q뛖);
+Test_N(q뛗, q뛗, q뛗, q뛗, q뛗);
+Test_N(q뛘, q뛘, q뛘, q뛘, q뛘);
+Test_N(q뛙, q뛙, q뛙, q뛙, q뛙);
+Test_N(q뛚, q뛚, q뛚, q뛚, q뛚);
+Test_N(q뛛, q뛛, q뛛, q뛛, q뛛);
+Test_N(q뛜, q뛜, q뛜, q뛜, q뛜);
+Test_N(q뛝, q뛝, q뛝, q뛝, q뛝);
+Test_N(q뛞, q뛞, q뛞, q뛞, q뛞);
+Test_N(q뛟, q뛟, q뛟, q뛟, q뛟);
+Test_N(q뛠, q뛠, q뛠, q뛠, q뛠);
+Test_N(q뛡, q뛡, q뛡, q뛡, q뛡);
+Test_N(q뛢, q뛢, q뛢, q뛢, q뛢);
+Test_N(q뛣, q뛣, q뛣, q뛣, q뛣);
+Test_N(q뛤, q뛤, q뛤, q뛤, q뛤);
+Test_N(q뛥, q뛥, q뛥, q뛥, q뛥);
+Test_N(q뛦, q뛦, q뛦, q뛦, q뛦);
+Test_N(q뛧, q뛧, q뛧, q뛧, q뛧);
+Test_N(q뛨, q뛨, q뛨, q뛨, q뛨);
+Test_N(q뛩, q뛩, q뛩, q뛩, q뛩);
+Test_N(q뛪, q뛪, q뛪, q뛪, q뛪);
+Test_N(q뛫, q뛫, q뛫, q뛫, q뛫);
+Test_N(q뛬, q뛬, q뛬, q뛬, q뛬);
+Test_N(q뛭, q뛭, q뛭, q뛭, q뛭);
+Test_N(q뛮, q뛮, q뛮, q뛮, q뛮);
+Test_N(q뛯, q뛯, q뛯, q뛯, q뛯);
+Test_N(q뛰, q뛰, q뛰, q뛰, q뛰);
+Test_N(q뛱, q뛱, q뛱, q뛱, q뛱);
+Test_N(q뛲, q뛲, q뛲, q뛲, q뛲);
+Test_N(q뛳, q뛳, q뛳, q뛳, q뛳);
+Test_N(q뛴, q뛴, q뛴, q뛴, q뛴);
+Test_N(q뛵, q뛵, q뛵, q뛵, q뛵);
+Test_N(q뛶, q뛶, q뛶, q뛶, q뛶);
+Test_N(q뛷, q뛷, q뛷, q뛷, q뛷);
+Test_N(q뛸, q뛸, q뛸, q뛸, q뛸);
+Test_N(q뛹, q뛹, q뛹, q뛹, q뛹);
+Test_N(q뛺, q뛺, q뛺, q뛺, q뛺);
+Test_N(q뛻, q뛻, q뛻, q뛻, q뛻);
+Test_N(q뛼, q뛼, q뛼, q뛼, q뛼);
+Test_N(q뛽, q뛽, q뛽, q뛽, q뛽);
+Test_N(q뛾, q뛾, q뛾, q뛾, q뛾);
+Test_N(q뛿, q뛿, q뛿, q뛿, q뛿);
+Test_N(q뜀, q뜀, q뜀, q뜀, q뜀);
+Test_N(q뜁, q뜁, q뜁, q뜁, q뜁);
+Test_N(q뜂, q뜂, q뜂, q뜂, q뜂);
+Test_N(q뜃, q뜃, q뜃, q뜃, q뜃);
+Test_N(q뜄, q뜄, q뜄, q뜄, q뜄);
+Test_N(q뜅, q뜅, q뜅, q뜅, q뜅);
+Test_N(q뜆, q뜆, q뜆, q뜆, q뜆);
+Test_N(q뜇, q뜇, q뜇, q뜇, q뜇);
+Test_N(q뜈, q뜈, q뜈, q뜈, q뜈);
+Test_N(q뜉, q뜉, q뜉, q뜉, q뜉);
+Test_N(q뜊, q뜊, q뜊, q뜊, q뜊);
+Test_N(q뜋, q뜋, q뜋, q뜋, q뜋);
+Test_N(q뜌, q뜌, q뜌, q뜌, q뜌);
+Test_N(q뜍, q뜍, q뜍, q뜍, q뜍);
+Test_N(q뜎, q뜎, q뜎, q뜎, q뜎);
+Test_N(q뜏, q뜏, q뜏, q뜏, q뜏);
+Test_N(q뜐, q뜐, q뜐, q뜐, q뜐);
+Test_N(q뜑, q뜑, q뜑, q뜑, q뜑);
+Test_N(q뜒, q뜒, q뜒, q뜒, q뜒);
+Test_N(q뜓, q뜓, q뜓, q뜓, q뜓);
+Test_N(q뜔, q뜔, q뜔, q뜔, q뜔);
+Test_N(q뜕, q뜕, q뜕, q뜕, q뜕);
+Test_N(q뜖, q뜖, q뜖, q뜖, q뜖);
+Test_N(q뜗, q뜗, q뜗, q뜗, q뜗);
+Test_N(q뜘, q뜘, q뜘, q뜘, q뜘);
+Test_N(q뜙, q뜙, q뜙, q뜙, q뜙);
+Test_N(q뜚, q뜚, q뜚, q뜚, q뜚);
+Test_N(q뜛, q뜛, q뜛, q뜛, q뜛);
+Test_N(q뜜, q뜜, q뜜, q뜜, q뜜);
+Test_N(q뜝, q뜝, q뜝, q뜝, q뜝);
+Test_N(q뜞, q뜞, q뜞, q뜞, q뜞);
+Test_N(q뜟, q뜟, q뜟, q뜟, q뜟);
+Test_N(q뜠, q뜠, q뜠, q뜠, q뜠);
+Test_N(q뜡, q뜡, q뜡, q뜡, q뜡);
+Test_N(q뜢, q뜢, q뜢, q뜢, q뜢);
+Test_N(q뜣, q뜣, q뜣, q뜣, q뜣);
+Test_N(q뜤, q뜤, q뜤, q뜤, q뜤);
+Test_N(q뜥, q뜥, q뜥, q뜥, q뜥);
+Test_N(q뜦, q뜦, q뜦, q뜦, q뜦);
+Test_N(q뜧, q뜧, q뜧, q뜧, q뜧);
+Test_N(q뜨, q뜨, q뜨, q뜨, q뜨);
+Test_N(q뜩, q뜩, q뜩, q뜩, q뜩);
+Test_N(q뜪, q뜪, q뜪, q뜪, q뜪);
+Test_N(q뜫, q뜫, q뜫, q뜫, q뜫);
+Test_N(q뜬, q뜬, q뜬, q뜬, q뜬);
+Test_N(q뜭, q뜭, q뜭, q뜭, q뜭);
+Test_N(q뜮, q뜮, q뜮, q뜮, q뜮);
+Test_N(q뜯, q뜯, q뜯, q뜯, q뜯);
+Test_N(q뜰, q뜰, q뜰, q뜰, q뜰);
+Test_N(q뜱, q뜱, q뜱, q뜱, q뜱);
+Test_N(q뜲, q뜲, q뜲, q뜲, q뜲);
+Test_N(q뜳, q뜳, q뜳, q뜳, q뜳);
+Test_N(q뜴, q뜴, q뜴, q뜴, q뜴);
+Test_N(q뜵, q뜵, q뜵, q뜵, q뜵);
+Test_N(q뜶, q뜶, q뜶, q뜶, q뜶);
+Test_N(q뜷, q뜷, q뜷, q뜷, q뜷);
+Test_N(q뜸, q뜸, q뜸, q뜸, q뜸);
+Test_N(q뜹, q뜹, q뜹, q뜹, q뜹);
+Test_N(q뜺, q뜺, q뜺, q뜺, q뜺);
+Test_N(q뜻, q뜻, q뜻, q뜻, q뜻);
+Test_N(q뜼, q뜼, q뜼, q뜼, q뜼);
+Test_N(q뜽, q뜽, q뜽, q뜽, q뜽);
+Test_N(q뜾, q뜾, q뜾, q뜾, q뜾);
+Test_N(q뜿, q뜿, q뜿, q뜿, q뜿);
+Test_N(q띀, q띀, q띀, q띀, q띀);
+Test_N(q띁, q띁, q띁, q띁, q띁);
+Test_N(q띂, q띂, q띂, q띂, q띂);
+Test_N(q띃, q띃, q띃, q띃, q띃);
+Test_N(q띄, q띄, q띄, q띄, q띄);
+Test_N(q띅, q띅, q띅, q띅, q띅);
+Test_N(q띆, q띆, q띆, q띆, q띆);
+Test_N(q띇, q띇, q띇, q띇, q띇);
+Test_N(q띈, q띈, q띈, q띈, q띈);
+Test_N(q띉, q띉, q띉, q띉, q띉);
+Test_N(q띊, q띊, q띊, q띊, q띊);
+Test_N(q띋, q띋, q띋, q띋, q띋);
+Test_N(q띌, q띌, q띌, q띌, q띌);
+Test_N(q띍, q띍, q띍, q띍, q띍);
+Test_N(q띎, q띎, q띎, q띎, q띎);
+Test_N(q띏, q띏, q띏, q띏, q띏);
+Test_N(q띐, q띐, q띐, q띐, q띐);
+Test_N(q띑, q띑, q띑, q띑, q띑);
+Test_N(q띒, q띒, q띒, q띒, q띒);
+Test_N(q띓, q띓, q띓, q띓, q띓);
+Test_N(q띔, q띔, q띔, q띔, q띔);
+Test_N(q띕, q띕, q띕, q띕, q띕);
+Test_N(q띖, q띖, q띖, q띖, q띖);
+Test_N(q띗, q띗, q띗, q띗, q띗);
+Test_N(q띘, q띘, q띘, q띘, q띘);
+Test_N(q띙, q띙, q띙, q띙, q띙);
+Test_N(q띚, q띚, q띚, q띚, q띚);
+Test_N(q띛, q띛, q띛, q띛, q띛);
+Test_N(q띜, q띜, q띜, q띜, q띜);
+Test_N(q띝, q띝, q띝, q띝, q띝);
+Test_N(q띞, q띞, q띞, q띞, q띞);
+Test_N(q띟, q띟, q띟, q띟, q띟);
+Test_N(q띠, q띠, q띠, q띠, q띠);
+Test_N(q띡, q띡, q띡, q띡, q띡);
+Test_N(q띢, q띢, q띢, q띢, q띢);
+Test_N(q띣, q띣, q띣, q띣, q띣);
+Test_N(q띤, q띤, q띤, q띤, q띤);
+Test_N(q띥, q띥, q띥, q띥, q띥);
+Test_N(q띦, q띦, q띦, q띦, q띦);
+Test_N(q띧, q띧, q띧, q띧, q띧);
+Test_N(q띨, q띨, q띨, q띨, q띨);
+Test_N(q띩, q띩, q띩, q띩, q띩);
+Test_N(q띪, q띪, q띪, q띪, q띪);
+Test_N(q띫, q띫, q띫, q띫, q띫);
+Test_N(q띬, q띬, q띬, q띬, q띬);
+Test_N(q띭, q띭, q띭, q띭, q띭);
+Test_N(q띮, q띮, q띮, q띮, q띮);
+Test_N(q띯, q띯, q띯, q띯, q띯);
+Test_N(q띰, q띰, q띰, q띰, q띰);
+Test_N(q띱, q띱, q띱, q띱, q띱);
+Test_N(q띲, q띲, q띲, q띲, q띲);
+Test_N(q띳, q띳, q띳, q띳, q띳);
+Test_N(q띴, q띴, q띴, q띴, q띴);
+Test_N(q띵, q띵, q띵, q띵, q띵);
+Test_N(q띶, q띶, q띶, q띶, q띶);
+Test_N(q띷, q띷, q띷, q띷, q띷);
+Test_N(q띸, q띸, q띸, q띸, q띸);
+Test_N(q띹, q띹, q띹, q띹, q띹);
+Test_N(q띺, q띺, q띺, q띺, q띺);
+Test_N(q띻, q띻, q띻, q띻, q띻);
+Test_N(q라, q라, q라, q라, q라);
+Test_N(q락, q락, q락, q락, q락);
+Test_N(q띾, q띾, q띾, q띾, q띾);
+Test_N(q띿, q띿, q띿, q띿, q띿);
+Test_N(q란, q란, q란, q란, q란);
+Test_N(q랁, q랁, q랁, q랁, q랁);
+Test_N(q랂, q랂, q랂, q랂, q랂);
+Test_N(q랃, q랃, q랃, q랃, q랃);
+Test_N(q랄, q랄, q랄, q랄, q랄);
+Test_N(q랅, q랅, q랅, q랅, q랅);
+Test_N(q랆, q랆, q랆, q랆, q랆);
+Test_N(q랇, q랇, q랇, q랇, q랇);
+Test_N(q랈, q랈, q랈, q랈, q랈);
+Test_N(q랉, q랉, q랉, q랉, q랉);
+Test_N(q랊, q랊, q랊, q랊, q랊);
+Test_N(q랋, q랋, q랋, q랋, q랋);
+Test_N(q람, q람, q람, q람, q람);
+Test_N(q랍, q랍, q랍, q랍, q랍);
+Test_N(q랎, q랎, q랎, q랎, q랎);
+Test_N(q랏, q랏, q랏, q랏, q랏);
+Test_N(q랐, q랐, q랐, q랐, q랐);
+Test_N(q랑, q랑, q랑, q랑, q랑);
+Test_N(q랒, q랒, q랒, q랒, q랒);
+Test_N(q랓, q랓, q랓, q랓, q랓);
+Test_N(q랔, q랔, q랔, q랔, q랔);
+Test_N(q랕, q랕, q랕, q랕, q랕);
+Test_N(q랖, q랖, q랖, q랖, q랖);
+Test_N(q랗, q랗, q랗, q랗, q랗);
+Test_N(q래, q래, q래, q래, q래);
+Test_N(q랙, q랙, q랙, q랙, q랙);
+Test_N(q랚, q랚, q랚, q랚, q랚);
+Test_N(q랛, q랛, q랛, q랛, q랛);
+Test_N(q랜, q랜, q랜, q랜, q랜);
+Test_N(q랝, q랝, q랝, q랝, q랝);
+Test_N(q랞, q랞, q랞, q랞, q랞);
+Test_N(q랟, q랟, q랟, q랟, q랟);
+Test_N(q랠, q랠, q랠, q랠, q랠);
+Test_N(q랡, q랡, q랡, q랡, q랡);
+Test_N(q랢, q랢, q랢, q랢, q랢);
+Test_N(q랣, q랣, q랣, q랣, q랣);
+Test_N(q랤, q랤, q랤, q랤, q랤);
+Test_N(q랥, q랥, q랥, q랥, q랥);
+Test_N(q랦, q랦, q랦, q랦, q랦);
+Test_N(q랧, q랧, q랧, q랧, q랧);
+Test_N(q램, q램, q램, q램, q램);
+Test_N(q랩, q랩, q랩, q랩, q랩);
+Test_N(q랪, q랪, q랪, q랪, q랪);
+Test_N(q랫, q랫, q랫, q랫, q랫);
+Test_N(q랬, q랬, q랬, q랬, q랬);
+Test_N(q랭, q랭, q랭, q랭, q랭);
+Test_N(q랮, q랮, q랮, q랮, q랮);
+Test_N(q랯, q랯, q랯, q랯, q랯);
+Test_N(q랰, q랰, q랰, q랰, q랰);
+Test_N(q랱, q랱, q랱, q랱, q랱);
+Test_N(q랲, q랲, q랲, q랲, q랲);
+Test_N(q랳, q랳, q랳, q랳, q랳);
+Test_N(q랴, q랴, q랴, q랴, q랴);
+Test_N(q략, q략, q략, q략, q략);
+Test_N(q랶, q랶, q랶, q랶, q랶);
+Test_N(q랷, q랷, q랷, q랷, q랷);
+Test_N(q랸, q랸, q랸, q랸, q랸);
+Test_N(q랹, q랹, q랹, q랹, q랹);
+Test_N(q랺, q랺, q랺, q랺, q랺);
+Test_N(q랻, q랻, q랻, q랻, q랻);
+Test_N(q랼, q랼, q랼, q랼, q랼);
+Test_N(q랽, q랽, q랽, q랽, q랽);
+Test_N(q랾, q랾, q랾, q랾, q랾);
+Test_N(q랿, q랿, q랿, q랿, q랿);
+Test_N(q럀, q럀, q럀, q럀, q럀);
+Test_N(q럁, q럁, q럁, q럁, q럁);
+Test_N(q럂, q럂, q럂, q럂, q럂);
+Test_N(q럃, q럃, q럃, q럃, q럃);
+Test_N(q럄, q럄, q럄, q럄, q럄);
+Test_N(q럅, q럅, q럅, q럅, q럅);
+Test_N(q럆, q럆, q럆, q럆, q럆);
+Test_N(q럇, q럇, q럇, q럇, q럇);
+Test_N(q럈, q럈, q럈, q럈, q럈);
+Test_N(q량, q량, q량, q량, q량);
+Test_N(q럊, q럊, q럊, q럊, q럊);
+Test_N(q럋, q럋, q럋, q럋, q럋);
+Test_N(q럌, q럌, q럌, q럌, q럌);
+Test_N(q럍, q럍, q럍, q럍, q럍);
+Test_N(q럎, q럎, q럎, q럎, q럎);
+Test_N(q럏, q럏, q럏, q럏, q럏);
+Test_N(q럐, q럐, q럐, q럐, q럐);
+Test_N(q럑, q럑, q럑, q럑, q럑);
+Test_N(q럒, q럒, q럒, q럒, q럒);
+Test_N(q럓, q럓, q럓, q럓, q럓);
+Test_N(q럔, q럔, q럔, q럔, q럔);
+Test_N(q럕, q럕, q럕, q럕, q럕);
+Test_N(q럖, q럖, q럖, q럖, q럖);
+Test_N(q럗, q럗, q럗, q럗, q럗);
+Test_N(q럘, q럘, q럘, q럘, q럘);
+Test_N(q럙, q럙, q럙, q럙, q럙);
+Test_N(q럚, q럚, q럚, q럚, q럚);
+Test_N(q럛, q럛, q럛, q럛, q럛);
+Test_N(q럜, q럜, q럜, q럜, q럜);
+Test_N(q럝, q럝, q럝, q럝, q럝);
+Test_N(q럞, q럞, q럞, q럞, q럞);
+Test_N(q럟, q럟, q럟, q럟, q럟);
+Test_N(q럠, q럠, q럠, q럠, q럠);
+Test_N(q럡, q럡, q럡, q럡, q럡);
+Test_N(q럢, q럢, q럢, q럢, q럢);
+Test_N(q럣, q럣, q럣, q럣, q럣);
+Test_N(q럤, q럤, q럤, q럤, q럤);
+Test_N(q럥, q럥, q럥, q럥, q럥);
+Test_N(q럦, q럦, q럦, q럦, q럦);
+Test_N(q럧, q럧, q럧, q럧, q럧);
+Test_N(q럨, q럨, q럨, q럨, q럨);
+Test_N(q럩, q럩, q럩, q럩, q럩);
+Test_N(q럪, q럪, q럪, q럪, q럪);
+Test_N(q럫, q럫, q럫, q럫, q럫);
+Test_N(q러, q러, q러, q러, q러);
+Test_N(q럭, q럭, q럭, q럭, q럭);
+Test_N(q럮, q럮, q럮, q럮, q럮);
+Test_N(q럯, q럯, q럯, q럯, q럯);
+Test_N(q런, q런, q런, q런, q런);
+Test_N(q럱, q럱, q럱, q럱, q럱);
+Test_N(q럲, q럲, q럲, q럲, q럲);
+Test_N(q럳, q럳, q럳, q럳, q럳);
+Test_N(q럴, q럴, q럴, q럴, q럴);
+Test_N(q럵, q럵, q럵, q럵, q럵);
+Test_N(q럶, q럶, q럶, q럶, q럶);
+Test_N(q럷, q럷, q럷, q럷, q럷);
+Test_N(q럸, q럸, q럸, q럸, q럸);
+Test_N(q럹, q럹, q럹, q럹, q럹);
+Test_N(q럺, q럺, q럺, q럺, q럺);
+Test_N(q럻, q럻, q럻, q럻, q럻);
+Test_N(q럼, q럼, q럼, q럼, q럼);
+Test_N(q럽, q럽, q럽, q럽, q럽);
+Test_N(q럾, q럾, q럾, q럾, q럾);
+Test_N(q럿, q럿, q럿, q럿, q럿);
+Test_N(q렀, q렀, q렀, q렀, q렀);
+Test_N(q렁, q렁, q렁, q렁, q렁);
+Test_N(q렂, q렂, q렂, q렂, q렂);
+Test_N(q렃, q렃, q렃, q렃, q렃);
+Test_N(q렄, q렄, q렄, q렄, q렄);
+Test_N(q렅, q렅, q렅, q렅, q렅);
+Test_N(q렆, q렆, q렆, q렆, q렆);
+Test_N(q렇, q렇, q렇, q렇, q렇);
+Test_N(q레, q레, q레, q레, q레);
+Test_N(q렉, q렉, q렉, q렉, q렉);
+Test_N(q렊, q렊, q렊, q렊, q렊);
+Test_N(q렋, q렋, q렋, q렋, q렋);
+Test_N(q렌, q렌, q렌, q렌, q렌);
+Test_N(q렍, q렍, q렍, q렍, q렍);
+Test_N(q렎, q렎, q렎, q렎, q렎);
+Test_N(q렏, q렏, q렏, q렏, q렏);
+Test_N(q렐, q렐, q렐, q렐, q렐);
+Test_N(q렑, q렑, q렑, q렑, q렑);
+Test_N(q렒, q렒, q렒, q렒, q렒);
+Test_N(q렓, q렓, q렓, q렓, q렓);
+Test_N(q렔, q렔, q렔, q렔, q렔);
+Test_N(q렕, q렕, q렕, q렕, q렕);
+Test_N(q렖, q렖, q렖, q렖, q렖);
+Test_N(q렗, q렗, q렗, q렗, q렗);
+Test_N(q렘, q렘, q렘, q렘, q렘);
+Test_N(q렙, q렙, q렙, q렙, q렙);
+Test_N(q렚, q렚, q렚, q렚, q렚);
+Test_N(q렛, q렛, q렛, q렛, q렛);
+Test_N(q렜, q렜, q렜, q렜, q렜);
+Test_N(q렝, q렝, q렝, q렝, q렝);
+Test_N(q렞, q렞, q렞, q렞, q렞);
+Test_N(q렟, q렟, q렟, q렟, q렟);
+Test_N(q렠, q렠, q렠, q렠, q렠);
+Test_N(q렡, q렡, q렡, q렡, q렡);
+Test_N(q렢, q렢, q렢, q렢, q렢);
+Test_N(q렣, q렣, q렣, q렣, q렣);
+Test_N(q려, q려, q려, q려, q려);
+Test_N(q력, q력, q력, q력, q력);
+Test_N(q렦, q렦, q렦, q렦, q렦);
+Test_N(q렧, q렧, q렧, q렧, q렧);
+Test_N(q련, q련, q련, q련, q련);
+Test_N(q렩, q렩, q렩, q렩, q렩);
+Test_N(q렪, q렪, q렪, q렪, q렪);
+Test_N(q렫, q렫, q렫, q렫, q렫);
+Test_N(q렬, q렬, q렬, q렬, q렬);
+Test_N(q렭, q렭, q렭, q렭, q렭);
+Test_N(q렮, q렮, q렮, q렮, q렮);
+Test_N(q렯, q렯, q렯, q렯, q렯);
+Test_N(q렰, q렰, q렰, q렰, q렰);
+Test_N(q렱, q렱, q렱, q렱, q렱);
+Test_N(q렲, q렲, q렲, q렲, q렲);
+Test_N(q렳, q렳, q렳, q렳, q렳);
+Test_N(q렴, q렴, q렴, q렴, q렴);
+Test_N(q렵, q렵, q렵, q렵, q렵);
+Test_N(q렶, q렶, q렶, q렶, q렶);
+Test_N(q렷, q렷, q렷, q렷, q렷);
+Test_N(q렸, q렸, q렸, q렸, q렸);
+Test_N(q령, q령, q령, q령, q령);
+Test_N(q렺, q렺, q렺, q렺, q렺);
+Test_N(q렻, q렻, q렻, q렻, q렻);
+Test_N(q렼, q렼, q렼, q렼, q렼);
+Test_N(q렽, q렽, q렽, q렽, q렽);
+Test_N(q렾, q렾, q렾, q렾, q렾);
+Test_N(q렿, q렿, q렿, q렿, q렿);
+Test_N(q례, q례, q례, q례, q례);
+Test_N(q롁, q롁, q롁, q롁, q롁);
+Test_N(q롂, q롂, q롂, q롂, q롂);
+Test_N(q롃, q롃, q롃, q롃, q롃);
+Test_N(q롄, q롄, q롄, q롄, q롄);
+Test_N(q롅, q롅, q롅, q롅, q롅);
+Test_N(q롆, q롆, q롆, q롆, q롆);
+Test_N(q롇, q롇, q롇, q롇, q롇);
+Test_N(q롈, q롈, q롈, q롈, q롈);
+Test_N(q롉, q롉, q롉, q롉, q롉);
+Test_N(q롊, q롊, q롊, q롊, q롊);
+Test_N(q롋, q롋, q롋, q롋, q롋);
+Test_N(q롌, q롌, q롌, q롌, q롌);
+Test_N(q롍, q롍, q롍, q롍, q롍);
+Test_N(q롎, q롎, q롎, q롎, q롎);
+Test_N(q롏, q롏, q롏, q롏, q롏);
+Test_N(q롐, q롐, q롐, q롐, q롐);
+Test_N(q롑, q롑, q롑, q롑, q롑);
+Test_N(q롒, q롒, q롒, q롒, q롒);
+Test_N(q롓, q롓, q롓, q롓, q롓);
+Test_N(q롔, q롔, q롔, q롔, q롔);
+Test_N(q롕, q롕, q롕, q롕, q롕);
+Test_N(q롖, q롖, q롖, q롖, q롖);
+Test_N(q롗, q롗, q롗, q롗, q롗);
+Test_N(q롘, q롘, q롘, q롘, q롘);
+Test_N(q롙, q롙, q롙, q롙, q롙);
+Test_N(q롚, q롚, q롚, q롚, q롚);
+Test_N(q롛, q롛, q롛, q롛, q롛);
+Test_N(q로, q로, q로, q로, q로);
+Test_N(q록, q록, q록, q록, q록);
+Test_N(q롞, q롞, q롞, q롞, q롞);
+Test_N(q롟, q롟, q롟, q롟, q롟);
+Test_N(q론, q론, q론, q론, q론);
+Test_N(q롡, q롡, q롡, q롡, q롡);
+Test_N(q롢, q롢, q롢, q롢, q롢);
+Test_N(q롣, q롣, q롣, q롣, q롣);
+Test_N(q롤, q롤, q롤, q롤, q롤);
+Test_N(q롥, q롥, q롥, q롥, q롥);
+Test_N(q롦, q롦, q롦, q롦, q롦);
+Test_N(q롧, q롧, q롧, q롧, q롧);
+Test_N(q롨, q롨, q롨, q롨, q롨);
+Test_N(q롩, q롩, q롩, q롩, q롩);
+Test_N(q롪, q롪, q롪, q롪, q롪);
+Test_N(q롫, q롫, q롫, q롫, q롫);
+Test_N(q롬, q롬, q롬, q롬, q롬);
+Test_N(q롭, q롭, q롭, q롭, q롭);
+Test_N(q롮, q롮, q롮, q롮, q롮);
+Test_N(q롯, q롯, q롯, q롯, q롯);
+Test_N(q롰, q롰, q롰, q롰, q롰);
+Test_N(q롱, q롱, q롱, q롱, q롱);
+Test_N(q롲, q롲, q롲, q롲, q롲);
+Test_N(q롳, q롳, q롳, q롳, q롳);
+Test_N(q롴, q롴, q롴, q롴, q롴);
+Test_N(q롵, q롵, q롵, q롵, q롵);
+Test_N(q롶, q롶, q롶, q롶, q롶);
+Test_N(q롷, q롷, q롷, q롷, q롷);
+Test_N(q롸, q롸, q롸, q롸, q롸);
+Test_N(q롹, q롹, q롹, q롹, q롹);
+Test_N(q롺, q롺, q롺, q롺, q롺);
+Test_N(q롻, q롻, q롻, q롻, q롻);
+Test_N(q롼, q롼, q롼, q롼, q롼);
+Test_N(q롽, q롽, q롽, q롽, q롽);
+Test_N(q롾, q롾, q롾, q롾, q롾);
+Test_N(q롿, q롿, q롿, q롿, q롿);
+Test_N(q뢀, q뢀, q뢀, q뢀, q뢀);
+Test_N(q뢁, q뢁, q뢁, q뢁, q뢁);
+Test_N(q뢂, q뢂, q뢂, q뢂, q뢂);
+Test_N(q뢃, q뢃, q뢃, q뢃, q뢃);
+Test_N(q뢄, q뢄, q뢄, q뢄, q뢄);
+Test_N(q뢅, q뢅, q뢅, q뢅, q뢅);
+Test_N(q뢆, q뢆, q뢆, q뢆, q뢆);
+Test_N(q뢇, q뢇, q뢇, q뢇, q뢇);
+Test_N(q뢈, q뢈, q뢈, q뢈, q뢈);
+Test_N(q뢉, q뢉, q뢉, q뢉, q뢉);
+Test_N(q뢊, q뢊, q뢊, q뢊, q뢊);
+Test_N(q뢋, q뢋, q뢋, q뢋, q뢋);
+Test_N(q뢌, q뢌, q뢌, q뢌, q뢌);
+Test_N(q뢍, q뢍, q뢍, q뢍, q뢍);
+Test_N(q뢎, q뢎, q뢎, q뢎, q뢎);
+Test_N(q뢏, q뢏, q뢏, q뢏, q뢏);
+Test_N(q뢐, q뢐, q뢐, q뢐, q뢐);
+Test_N(q뢑, q뢑, q뢑, q뢑, q뢑);
+Test_N(q뢒, q뢒, q뢒, q뢒, q뢒);
+Test_N(q뢓, q뢓, q뢓, q뢓, q뢓);
+Test_N(q뢔, q뢔, q뢔, q뢔, q뢔);
+Test_N(q뢕, q뢕, q뢕, q뢕, q뢕);
+Test_N(q뢖, q뢖, q뢖, q뢖, q뢖);
+Test_N(q뢗, q뢗, q뢗, q뢗, q뢗);
+Test_N(q뢘, q뢘, q뢘, q뢘, q뢘);
+Test_N(q뢙, q뢙, q뢙, q뢙, q뢙);
+Test_N(q뢚, q뢚, q뢚, q뢚, q뢚);
+Test_N(q뢛, q뢛, q뢛, q뢛, q뢛);
+Test_N(q뢜, q뢜, q뢜, q뢜, q뢜);
+Test_N(q뢝, q뢝, q뢝, q뢝, q뢝);
+Test_N(q뢞, q뢞, q뢞, q뢞, q뢞);
+Test_N(q뢟, q뢟, q뢟, q뢟, q뢟);
+Test_N(q뢠, q뢠, q뢠, q뢠, q뢠);
+Test_N(q뢡, q뢡, q뢡, q뢡, q뢡);
+Test_N(q뢢, q뢢, q뢢, q뢢, q뢢);
+Test_N(q뢣, q뢣, q뢣, q뢣, q뢣);
+Test_N(q뢤, q뢤, q뢤, q뢤, q뢤);
+Test_N(q뢥, q뢥, q뢥, q뢥, q뢥);
+Test_N(q뢦, q뢦, q뢦, q뢦, q뢦);
+Test_N(q뢧, q뢧, q뢧, q뢧, q뢧);
+Test_N(q뢨, q뢨, q뢨, q뢨, q뢨);
+Test_N(q뢩, q뢩, q뢩, q뢩, q뢩);
+Test_N(q뢪, q뢪, q뢪, q뢪, q뢪);
+Test_N(q뢫, q뢫, q뢫, q뢫, q뢫);
+Test_N(q뢬, q뢬, q뢬, q뢬, q뢬);
+Test_N(q뢭, q뢭, q뢭, q뢭, q뢭);
+Test_N(q뢮, q뢮, q뢮, q뢮, q뢮);
+Test_N(q뢯, q뢯, q뢯, q뢯, q뢯);
+Test_N(q뢰, q뢰, q뢰, q뢰, q뢰);
+Test_N(q뢱, q뢱, q뢱, q뢱, q뢱);
+Test_N(q뢲, q뢲, q뢲, q뢲, q뢲);
+Test_N(q뢳, q뢳, q뢳, q뢳, q뢳);
+Test_N(q뢴, q뢴, q뢴, q뢴, q뢴);
+Test_N(q뢵, q뢵, q뢵, q뢵, q뢵);
+Test_N(q뢶, q뢶, q뢶, q뢶, q뢶);
+Test_N(q뢷, q뢷, q뢷, q뢷, q뢷);
+Test_N(q뢸, q뢸, q뢸, q뢸, q뢸);
+Test_N(q뢹, q뢹, q뢹, q뢹, q뢹);
+Test_N(q뢺, q뢺, q뢺, q뢺, q뢺);
+Test_N(q뢻, q뢻, q뢻, q뢻, q뢻);
+Test_N(q뢼, q뢼, q뢼, q뢼, q뢼);
+Test_N(q뢽, q뢽, q뢽, q뢽, q뢽);
+Test_N(q뢾, q뢾, q뢾, q뢾, q뢾);
+Test_N(q뢿, q뢿, q뢿, q뢿, q뢿);
+Test_N(q룀, q룀, q룀, q룀, q룀);
+Test_N(q룁, q룁, q룁, q룁, q룁);
+Test_N(q룂, q룂, q룂, q룂, q룂);
+Test_N(q룃, q룃, q룃, q룃, q룃);
+Test_N(q룄, q룄, q룄, q룄, q룄);
+Test_N(q룅, q룅, q룅, q룅, q룅);
+Test_N(q룆, q룆, q룆, q룆, q룆);
+Test_N(q룇, q룇, q룇, q룇, q룇);
+Test_N(q룈, q룈, q룈, q룈, q룈);
+Test_N(q룉, q룉, q룉, q룉, q룉);
+Test_N(q룊, q룊, q룊, q룊, q룊);
+Test_N(q룋, q룋, q룋, q룋, q룋);
+Test_N(q료, q료, q료, q료, q료);
+Test_N(q룍, q룍, q룍, q룍, q룍);
+Test_N(q룎, q룎, q룎, q룎, q룎);
+Test_N(q룏, q룏, q룏, q룏, q룏);
+Test_N(q룐, q룐, q룐, q룐, q룐);
+Test_N(q룑, q룑, q룑, q룑, q룑);
+Test_N(q룒, q룒, q룒, q룒, q룒);
+Test_N(q룓, q룓, q룓, q룓, q룓);
+Test_N(q룔, q룔, q룔, q룔, q룔);
+Test_N(q룕, q룕, q룕, q룕, q룕);
+Test_N(q룖, q룖, q룖, q룖, q룖);
+Test_N(q룗, q룗, q룗, q룗, q룗);
+Test_N(q룘, q룘, q룘, q룘, q룘);
+Test_N(q룙, q룙, q룙, q룙, q룙);
+Test_N(q룚, q룚, q룚, q룚, q룚);
+Test_N(q룛, q룛, q룛, q룛, q룛);
+Test_N(q룜, q룜, q룜, q룜, q룜);
+Test_N(q룝, q룝, q룝, q룝, q룝);
+Test_N(q룞, q룞, q룞, q룞, q룞);
+Test_N(q룟, q룟, q룟, q룟, q룟);
+Test_N(q룠, q룠, q룠, q룠, q룠);
+Test_N(q룡, q룡, q룡, q룡, q룡);
+Test_N(q룢, q룢, q룢, q룢, q룢);
+Test_N(q룣, q룣, q룣, q룣, q룣);
+Test_N(q룤, q룤, q룤, q룤, q룤);
+Test_N(q룥, q룥, q룥, q룥, q룥);
+Test_N(q룦, q룦, q룦, q룦, q룦);
+Test_N(q룧, q룧, q룧, q룧, q룧);
+Test_N(q루, q루, q루, q루, q루);
+Test_N(q룩, q룩, q룩, q룩, q룩);
+Test_N(q룪, q룪, q룪, q룪, q룪);
+Test_N(q룫, q룫, q룫, q룫, q룫);
+Test_N(q룬, q룬, q룬, q룬, q룬);
+Test_N(q룭, q룭, q룭, q룭, q룭);
+Test_N(q룮, q룮, q룮, q룮, q룮);
+Test_N(q룯, q룯, q룯, q룯, q룯);
+Test_N(q룰, q룰, q룰, q룰, q룰);
+Test_N(q룱, q룱, q룱, q룱, q룱);
+Test_N(q룲, q룲, q룲, q룲, q룲);
+Test_N(q룳, q룳, q룳, q룳, q룳);
+Test_N(q룴, q룴, q룴, q룴, q룴);
+Test_N(q룵, q룵, q룵, q룵, q룵);
+Test_N(q룶, q룶, q룶, q룶, q룶);
+Test_N(q룷, q룷, q룷, q룷, q룷);
+Test_N(q룸, q룸, q룸, q룸, q룸);
+Test_N(q룹, q룹, q룹, q룹, q룹);
+Test_N(q룺, q룺, q룺, q룺, q룺);
+Test_N(q룻, q룻, q룻, q룻, q룻);
+Test_N(q룼, q룼, q룼, q룼, q룼);
+Test_N(q룽, q룽, q룽, q룽, q룽);
+Test_N(q룾, q룾, q룾, q룾, q룾);
+Test_N(q룿, q룿, q룿, q룿, q룿);
+Test_N(q뤀, q뤀, q뤀, q뤀, q뤀);
+Test_N(q뤁, q뤁, q뤁, q뤁, q뤁);
+Test_N(q뤂, q뤂, q뤂, q뤂, q뤂);
+Test_N(q뤃, q뤃, q뤃, q뤃, q뤃);
+Test_N(q뤄, q뤄, q뤄, q뤄, q뤄);
+Test_N(q뤅, q뤅, q뤅, q뤅, q뤅);
+Test_N(q뤆, q뤆, q뤆, q뤆, q뤆);
+Test_N(q뤇, q뤇, q뤇, q뤇, q뤇);
+Test_N(q뤈, q뤈, q뤈, q뤈, q뤈);
+Test_N(q뤉, q뤉, q뤉, q뤉, q뤉);
+Test_N(q뤊, q뤊, q뤊, q뤊, q뤊);
+Test_N(q뤋, q뤋, q뤋, q뤋, q뤋);
+Test_N(q뤌, q뤌, q뤌, q뤌, q뤌);
+Test_N(q뤍, q뤍, q뤍, q뤍, q뤍);
+Test_N(q뤎, q뤎, q뤎, q뤎, q뤎);
+Test_N(q뤏, q뤏, q뤏, q뤏, q뤏);
+Test_N(q뤐, q뤐, q뤐, q뤐, q뤐);
+Test_N(q뤑, q뤑, q뤑, q뤑, q뤑);
+Test_N(q뤒, q뤒, q뤒, q뤒, q뤒);
+Test_N(q뤓, q뤓, q뤓, q뤓, q뤓);
+Test_N(q뤔, q뤔, q뤔, q뤔, q뤔);
+Test_N(q뤕, q뤕, q뤕, q뤕, q뤕);
+Test_N(q뤖, q뤖, q뤖, q뤖, q뤖);
+Test_N(q뤗, q뤗, q뤗, q뤗, q뤗);
+Test_N(q뤘, q뤘, q뤘, q뤘, q뤘);
+Test_N(q뤙, q뤙, q뤙, q뤙, q뤙);
+Test_N(q뤚, q뤚, q뤚, q뤚, q뤚);
+Test_N(q뤛, q뤛, q뤛, q뤛, q뤛);
+Test_N(q뤜, q뤜, q뤜, q뤜, q뤜);
+Test_N(q뤝, q뤝, q뤝, q뤝, q뤝);
+Test_N(q뤞, q뤞, q뤞, q뤞, q뤞);
+Test_N(q뤟, q뤟, q뤟, q뤟, q뤟);
+Test_N(q뤠, q뤠, q뤠, q뤠, q뤠);
+Test_N(q뤡, q뤡, q뤡, q뤡, q뤡);
+Test_N(q뤢, q뤢, q뤢, q뤢, q뤢);
+Test_N(q뤣, q뤣, q뤣, q뤣, q뤣);
+Test_N(q뤤, q뤤, q뤤, q뤤, q뤤);
+Test_N(q뤥, q뤥, q뤥, q뤥, q뤥);
+Test_N(q뤦, q뤦, q뤦, q뤦, q뤦);
+Test_N(q뤧, q뤧, q뤧, q뤧, q뤧);
+Test_N(q뤨, q뤨, q뤨, q뤨, q뤨);
+Test_N(q뤩, q뤩, q뤩, q뤩, q뤩);
+Test_N(q뤪, q뤪, q뤪, q뤪, q뤪);
+Test_N(q뤫, q뤫, q뤫, q뤫, q뤫);
+Test_N(q뤬, q뤬, q뤬, q뤬, q뤬);
+Test_N(q뤭, q뤭, q뤭, q뤭, q뤭);
+Test_N(q뤮, q뤮, q뤮, q뤮, q뤮);
+Test_N(q뤯, q뤯, q뤯, q뤯, q뤯);
+Test_N(q뤰, q뤰, q뤰, q뤰, q뤰);
+Test_N(q뤱, q뤱, q뤱, q뤱, q뤱);
+Test_N(q뤲, q뤲, q뤲, q뤲, q뤲);
+Test_N(q뤳, q뤳, q뤳, q뤳, q뤳);
+Test_N(q뤴, q뤴, q뤴, q뤴, q뤴);
+Test_N(q뤵, q뤵, q뤵, q뤵, q뤵);
+Test_N(q뤶, q뤶, q뤶, q뤶, q뤶);
+Test_N(q뤷, q뤷, q뤷, q뤷, q뤷);
+Test_N(q뤸, q뤸, q뤸, q뤸, q뤸);
+Test_N(q뤹, q뤹, q뤹, q뤹, q뤹);
+Test_N(q뤺, q뤺, q뤺, q뤺, q뤺);
+Test_N(q뤻, q뤻, q뤻, q뤻, q뤻);
+Test_N(q뤼, q뤼, q뤼, q뤼, q뤼);
+Test_N(q뤽, q뤽, q뤽, q뤽, q뤽);
+Test_N(q뤾, q뤾, q뤾, q뤾, q뤾);
+Test_N(q뤿, q뤿, q뤿, q뤿, q뤿);
+Test_N(q륀, q륀, q륀, q륀, q륀);
+Test_N(q륁, q륁, q륁, q륁, q륁);
+Test_N(q륂, q륂, q륂, q륂, q륂);
+Test_N(q륃, q륃, q륃, q륃, q륃);
+Test_N(q륄, q륄, q륄, q륄, q륄);
+Test_N(q륅, q륅, q륅, q륅, q륅);
+Test_N(q륆, q륆, q륆, q륆, q륆);
+Test_N(q륇, q륇, q륇, q륇, q륇);
+Test_N(q륈, q륈, q륈, q륈, q륈);
+Test_N(q륉, q륉, q륉, q륉, q륉);
+Test_N(q륊, q륊, q륊, q륊, q륊);
+Test_N(q륋, q륋, q륋, q륋, q륋);
+Test_N(q륌, q륌, q륌, q륌, q륌);
+Test_N(q륍, q륍, q륍, q륍, q륍);
+Test_N(q륎, q륎, q륎, q륎, q륎);
+Test_N(q륏, q륏, q륏, q륏, q륏);
+Test_N(q륐, q륐, q륐, q륐, q륐);
+Test_N(q륑, q륑, q륑, q륑, q륑);
+Test_N(q륒, q륒, q륒, q륒, q륒);
+Test_N(q륓, q륓, q륓, q륓, q륓);
+Test_N(q륔, q륔, q륔, q륔, q륔);
+Test_N(q륕, q륕, q륕, q륕, q륕);
+Test_N(q륖, q륖, q륖, q륖, q륖);
+Test_N(q륗, q륗, q륗, q륗, q륗);
+Test_N(q류, q류, q류, q류, q류);
+Test_N(q륙, q륙, q륙, q륙, q륙);
+Test_N(q륚, q륚, q륚, q륚, q륚);
+Test_N(q륛, q륛, q륛, q륛, q륛);
+Test_N(q륜, q륜, q륜, q륜, q륜);
+Test_N(q륝, q륝, q륝, q륝, q륝);
+Test_N(q륞, q륞, q륞, q륞, q륞);
+Test_N(q륟, q륟, q륟, q륟, q륟);
+Test_N(q률, q률, q률, q률, q률);
+Test_N(q륡, q륡, q륡, q륡, q륡);
+Test_N(q륢, q륢, q륢, q륢, q륢);
+Test_N(q륣, q륣, q륣, q륣, q륣);
+Test_N(q륤, q륤, q륤, q륤, q륤);
+Test_N(q륥, q륥, q륥, q륥, q륥);
+Test_N(q륦, q륦, q륦, q륦, q륦);
+Test_N(q륧, q륧, q륧, q륧, q륧);
+Test_N(q륨, q륨, q륨, q륨, q륨);
+Test_N(q륩, q륩, q륩, q륩, q륩);
+Test_N(q륪, q륪, q륪, q륪, q륪);
+Test_N(q륫, q륫, q륫, q륫, q륫);
+Test_N(q륬, q륬, q륬, q륬, q륬);
+Test_N(q륭, q륭, q륭, q륭, q륭);
+Test_N(q륮, q륮, q륮, q륮, q륮);
+Test_N(q륯, q륯, q륯, q륯, q륯);
+Test_N(q륰, q륰, q륰, q륰, q륰);
+Test_N(q륱, q륱, q륱, q륱, q륱);
+Test_N(q륲, q륲, q륲, q륲, q륲);
+Test_N(q륳, q륳, q륳, q륳, q륳);
+Test_N(q르, q르, q르, q르, q르);
+Test_N(q륵, q륵, q륵, q륵, q륵);
+Test_N(q륶, q륶, q륶, q륶, q륶);
+Test_N(q륷, q륷, q륷, q륷, q륷);
+Test_N(q른, q른, q른, q른, q른);
+Test_N(q륹, q륹, q륹, q륹, q륹);
+Test_N(q륺, q륺, q륺, q륺, q륺);
+Test_N(q륻, q륻, q륻, q륻, q륻);
+Test_N(q를, q를, q를, q를, q를);
+Test_N(q륽, q륽, q륽, q륽, q륽);
+Test_N(q륾, q륾, q륾, q륾, q륾);
+Test_N(q륿, q륿, q륿, q륿, q륿);
+Test_N(q릀, q릀, q릀, q릀, q릀);
+Test_N(q릁, q릁, q릁, q릁, q릁);
+Test_N(q릂, q릂, q릂, q릂, q릂);
+Test_N(q릃, q릃, q릃, q릃, q릃);
+Test_N(q름, q름, q름, q름, q름);
+Test_N(q릅, q릅, q릅, q릅, q릅);
+Test_N(q릆, q릆, q릆, q릆, q릆);
+Test_N(q릇, q릇, q릇, q릇, q릇);
+Test_N(q릈, q릈, q릈, q릈, q릈);
+Test_N(q릉, q릉, q릉, q릉, q릉);
+Test_N(q릊, q릊, q릊, q릊, q릊);
+Test_N(q릋, q릋, q릋, q릋, q릋);
+Test_N(q릌, q릌, q릌, q릌, q릌);
+Test_N(q릍, q릍, q릍, q릍, q릍);
+Test_N(q릎, q릎, q릎, q릎, q릎);
+Test_N(q릏, q릏, q릏, q릏, q릏);
+Test_N(q릐, q릐, q릐, q릐, q릐);
+Test_N(q릑, q릑, q릑, q릑, q릑);
+Test_N(q릒, q릒, q릒, q릒, q릒);
+Test_N(q릓, q릓, q릓, q릓, q릓);
+Test_N(q릔, q릔, q릔, q릔, q릔);
+Test_N(q릕, q릕, q릕, q릕, q릕);
+Test_N(q릖, q릖, q릖, q릖, q릖);
+Test_N(q릗, q릗, q릗, q릗, q릗);
+Test_N(q릘, q릘, q릘, q릘, q릘);
+Test_N(q릙, q릙, q릙, q릙, q릙);
+Test_N(q릚, q릚, q릚, q릚, q릚);
+Test_N(q릛, q릛, q릛, q릛, q릛);
+Test_N(q릜, q릜, q릜, q릜, q릜);
+Test_N(q릝, q릝, q릝, q릝, q릝);
+Test_N(q릞, q릞, q릞, q릞, q릞);
+Test_N(q릟, q릟, q릟, q릟, q릟);
+Test_N(q릠, q릠, q릠, q릠, q릠);
+Test_N(q릡, q릡, q릡, q릡, q릡);
+Test_N(q릢, q릢, q릢, q릢, q릢);
+Test_N(q릣, q릣, q릣, q릣, q릣);
+Test_N(q릤, q릤, q릤, q릤, q릤);
+Test_N(q릥, q릥, q릥, q릥, q릥);
+Test_N(q릦, q릦, q릦, q릦, q릦);
+Test_N(q릧, q릧, q릧, q릧, q릧);
+Test_N(q릨, q릨, q릨, q릨, q릨);
+Test_N(q릩, q릩, q릩, q릩, q릩);
+Test_N(q릪, q릪, q릪, q릪, q릪);
+Test_N(q릫, q릫, q릫, q릫, q릫);
+Test_N(q리, q리, q리, q리, q리);
+Test_N(q릭, q릭, q릭, q릭, q릭);
+Test_N(q릮, q릮, q릮, q릮, q릮);
+Test_N(q릯, q릯, q릯, q릯, q릯);
+Test_N(q린, q린, q린, q린, q린);
+Test_N(q릱, q릱, q릱, q릱, q릱);
+Test_N(q릲, q릲, q릲, q릲, q릲);
+Test_N(q릳, q릳, q릳, q릳, q릳);
+Test_N(q릴, q릴, q릴, q릴, q릴);
+Test_N(q릵, q릵, q릵, q릵, q릵);
+Test_N(q릶, q릶, q릶, q릶, q릶);
+Test_N(q릷, q릷, q릷, q릷, q릷);
+Test_N(q릸, q릸, q릸, q릸, q릸);
+Test_N(q릹, q릹, q릹, q릹, q릹);
+Test_N(q릺, q릺, q릺, q릺, q릺);
+Test_N(q릻, q릻, q릻, q릻, q릻);
+Test_N(q림, q림, q림, q림, q림);
+Test_N(q립, q립, q립, q립, q립);
+Test_N(q릾, q릾, q릾, q릾, q릾);
+Test_N(q릿, q릿, q릿, q릿, q릿);
+Test_N(q맀, q맀, q맀, q맀, q맀);
+Test_N(q링, q링, q링, q링, q링);
+Test_N(q맂, q맂, q맂, q맂, q맂);
+Test_N(q맃, q맃, q맃, q맃, q맃);
+Test_N(q맄, q맄, q맄, q맄, q맄);
+Test_N(q맅, q맅, q맅, q맅, q맅);
+Test_N(q맆, q맆, q맆, q맆, q맆);
+Test_N(q맇, q맇, q맇, q맇, q맇);
+Test_N(q마, q마, q마, q마, q마);
+Test_N(q막, q막, q막, q막, q막);
+Test_N(q맊, q맊, q맊, q맊, q맊);
+Test_N(q맋, q맋, q맋, q맋, q맋);
+Test_N(q만, q만, q만, q만, q만);
+Test_N(q맍, q맍, q맍, q맍, q맍);
+Test_N(q많, q많, q많, q많, q많);
+Test_N(q맏, q맏, q맏, q맏, q맏);
+Test_N(q말, q말, q말, q말, q말);
+Test_N(q맑, q맑, q맑, q맑, q맑);
+Test_N(q맒, q맒, q맒, q맒, q맒);
+Test_N(q맓, q맓, q맓, q맓, q맓);
+Test_N(q맔, q맔, q맔, q맔, q맔);
+Test_N(q맕, q맕, q맕, q맕, q맕);
+Test_N(q맖, q맖, q맖, q맖, q맖);
+Test_N(q맗, q맗, q맗, q맗, q맗);
+Test_N(q맘, q맘, q맘, q맘, q맘);
+Test_N(q맙, q맙, q맙, q맙, q맙);
+Test_N(q맚, q맚, q맚, q맚, q맚);
+Test_N(q맛, q맛, q맛, q맛, q맛);
+Test_N(q맜, q맜, q맜, q맜, q맜);
+Test_N(q망, q망, q망, q망, q망);
+Test_N(q맞, q맞, q맞, q맞, q맞);
+Test_N(q맟, q맟, q맟, q맟, q맟);
+Test_N(q맠, q맠, q맠, q맠, q맠);
+Test_N(q맡, q맡, q맡, q맡, q맡);
+Test_N(q맢, q맢, q맢, q맢, q맢);
+Test_N(q맣, q맣, q맣, q맣, q맣);
+Test_N(q매, q매, q매, q매, q매);
+Test_N(q맥, q맥, q맥, q맥, q맥);
+Test_N(q맦, q맦, q맦, q맦, q맦);
+Test_N(q맧, q맧, q맧, q맧, q맧);
+Test_N(q맨, q맨, q맨, q맨, q맨);
+Test_N(q맩, q맩, q맩, q맩, q맩);
+Test_N(q맪, q맪, q맪, q맪, q맪);
+Test_N(q맫, q맫, q맫, q맫, q맫);
+Test_N(q맬, q맬, q맬, q맬, q맬);
+Test_N(q맭, q맭, q맭, q맭, q맭);
+Test_N(q맮, q맮, q맮, q맮, q맮);
+Test_N(q맯, q맯, q맯, q맯, q맯);
+Test_N(q맰, q맰, q맰, q맰, q맰);
+Test_N(q맱, q맱, q맱, q맱, q맱);
+Test_N(q맲, q맲, q맲, q맲, q맲);
+Test_N(q맳, q맳, q맳, q맳, q맳);
+Test_N(q맴, q맴, q맴, q맴, q맴);
+Test_N(q맵, q맵, q맵, q맵, q맵);
+Test_N(q맶, q맶, q맶, q맶, q맶);
+Test_N(q맷, q맷, q맷, q맷, q맷);
+Test_N(q맸, q맸, q맸, q맸, q맸);
+Test_N(q맹, q맹, q맹, q맹, q맹);
+Test_N(q맺, q맺, q맺, q맺, q맺);
+Test_N(q맻, q맻, q맻, q맻, q맻);
+Test_N(q맼, q맼, q맼, q맼, q맼);
+Test_N(q맽, q맽, q맽, q맽, q맽);
+Test_N(q맾, q맾, q맾, q맾, q맾);
+Test_N(q맿, q맿, q맿, q맿, q맿);
+Test_N(q먀, q먀, q먀, q먀, q먀);
+Test_N(q먁, q먁, q먁, q먁, q먁);
+Test_N(q먂, q먂, q먂, q먂, q먂);
+Test_N(q먃, q먃, q먃, q먃, q먃);
+Test_N(q먄, q먄, q먄, q먄, q먄);
+Test_N(q먅, q먅, q먅, q먅, q먅);
+Test_N(q먆, q먆, q먆, q먆, q먆);
+Test_N(q먇, q먇, q먇, q먇, q먇);
+Test_N(q먈, q먈, q먈, q먈, q먈);
+Test_N(q먉, q먉, q먉, q먉, q먉);
+Test_N(q먊, q먊, q먊, q먊, q먊);
+Test_N(q먋, q먋, q먋, q먋, q먋);
+Test_N(q먌, q먌, q먌, q먌, q먌);
+Test_N(q먍, q먍, q먍, q먍, q먍);
+Test_N(q먎, q먎, q먎, q먎, q먎);
+Test_N(q먏, q먏, q먏, q먏, q먏);
+Test_N(q먐, q먐, q먐, q먐, q먐);
+Test_N(q먑, q먑, q먑, q먑, q먑);
+Test_N(q먒, q먒, q먒, q먒, q먒);
+Test_N(q먓, q먓, q먓, q먓, q먓);
+Test_N(q먔, q먔, q먔, q먔, q먔);
+Test_N(q먕, q먕, q먕, q먕, q먕);
+Test_N(q먖, q먖, q먖, q먖, q먖);
+Test_N(q먗, q먗, q먗, q먗, q먗);
+Test_N(q먘, q먘, q먘, q먘, q먘);
+Test_N(q먙, q먙, q먙, q먙, q먙);
+Test_N(q먚, q먚, q먚, q먚, q먚);
+Test_N(q먛, q먛, q먛, q먛, q먛);
+Test_N(q먜, q먜, q먜, q먜, q먜);
+Test_N(q먝, q먝, q먝, q먝, q먝);
+Test_N(q먞, q먞, q먞, q먞, q먞);
+Test_N(q먟, q먟, q먟, q먟, q먟);
+Test_N(q먠, q먠, q먠, q먠, q먠);
+Test_N(q먡, q먡, q먡, q먡, q먡);
+Test_N(q먢, q먢, q먢, q먢, q먢);
+Test_N(q먣, q먣, q먣, q먣, q먣);
+Test_N(q먤, q먤, q먤, q먤, q먤);
+Test_N(q먥, q먥, q먥, q먥, q먥);
+Test_N(q먦, q먦, q먦, q먦, q먦);
+Test_N(q먧, q먧, q먧, q먧, q먧);
+Test_N(q먨, q먨, q먨, q먨, q먨);
+Test_N(q먩, q먩, q먩, q먩, q먩);
+Test_N(q먪, q먪, q먪, q먪, q먪);
+Test_N(q먫, q먫, q먫, q먫, q먫);
+Test_N(q먬, q먬, q먬, q먬, q먬);
+Test_N(q먭, q먭, q먭, q먭, q먭);
+Test_N(q먮, q먮, q먮, q먮, q먮);
+Test_N(q먯, q먯, q먯, q먯, q먯);
+Test_N(q먰, q먰, q먰, q먰, q먰);
+Test_N(q먱, q먱, q먱, q먱, q먱);
+Test_N(q먲, q먲, q먲, q먲, q먲);
+Test_N(q먳, q먳, q먳, q먳, q먳);
+Test_N(q먴, q먴, q먴, q먴, q먴);
+Test_N(q먵, q먵, q먵, q먵, q먵);
+Test_N(q먶, q먶, q먶, q먶, q먶);
+Test_N(q먷, q먷, q먷, q먷, q먷);
+Test_N(q머, q머, q머, q머, q머);
+Test_N(q먹, q먹, q먹, q먹, q먹);
+Test_N(q먺, q먺, q먺, q먺, q먺);
+Test_N(q먻, q먻, q먻, q먻, q먻);
+Test_N(q먼, q먼, q먼, q먼, q먼);
+Test_N(q먽, q먽, q먽, q먽, q먽);
+Test_N(q먾, q먾, q먾, q먾, q먾);
+Test_N(q먿, q먿, q먿, q먿, q먿);
+Test_N(q멀, q멀, q멀, q멀, q멀);
+Test_N(q멁, q멁, q멁, q멁, q멁);
+Test_N(q멂, q멂, q멂, q멂, q멂);
+Test_N(q멃, q멃, q멃, q멃, q멃);
+Test_N(q멄, q멄, q멄, q멄, q멄);
+Test_N(q멅, q멅, q멅, q멅, q멅);
+Test_N(q멆, q멆, q멆, q멆, q멆);
+Test_N(q멇, q멇, q멇, q멇, q멇);
+Test_N(q멈, q멈, q멈, q멈, q멈);
+Test_N(q멉, q멉, q멉, q멉, q멉);
+Test_N(q멊, q멊, q멊, q멊, q멊);
+Test_N(q멋, q멋, q멋, q멋, q멋);
+Test_N(q멌, q멌, q멌, q멌, q멌);
+Test_N(q멍, q멍, q멍, q멍, q멍);
+Test_N(q멎, q멎, q멎, q멎, q멎);
+Test_N(q멏, q멏, q멏, q멏, q멏);
+Test_N(q멐, q멐, q멐, q멐, q멐);
+Test_N(q멑, q멑, q멑, q멑, q멑);
+Test_N(q멒, q멒, q멒, q멒, q멒);
+Test_N(q멓, q멓, q멓, q멓, q멓);
+Test_N(q메, q메, q메, q메, q메);
+Test_N(q멕, q멕, q멕, q멕, q멕);
+Test_N(q멖, q멖, q멖, q멖, q멖);
+Test_N(q멗, q멗, q멗, q멗, q멗);
+Test_N(q멘, q멘, q멘, q멘, q멘);
+Test_N(q멙, q멙, q멙, q멙, q멙);
+Test_N(q멚, q멚, q멚, q멚, q멚);
+Test_N(q멛, q멛, q멛, q멛, q멛);
+Test_N(q멜, q멜, q멜, q멜, q멜);
+Test_N(q멝, q멝, q멝, q멝, q멝);
+Test_N(q멞, q멞, q멞, q멞, q멞);
+Test_N(q멟, q멟, q멟, q멟, q멟);
+Test_N(q멠, q멠, q멠, q멠, q멠);
+Test_N(q멡, q멡, q멡, q멡, q멡);
+Test_N(q멢, q멢, q멢, q멢, q멢);
+Test_N(q멣, q멣, q멣, q멣, q멣);
+Test_N(q멤, q멤, q멤, q멤, q멤);
+Test_N(q멥, q멥, q멥, q멥, q멥);
+Test_N(q멦, q멦, q멦, q멦, q멦);
+Test_N(q멧, q멧, q멧, q멧, q멧);
+Test_N(q멨, q멨, q멨, q멨, q멨);
+Test_N(q멩, q멩, q멩, q멩, q멩);
+Test_N(q멪, q멪, q멪, q멪, q멪);
+Test_N(q멫, q멫, q멫, q멫, q멫);
+Test_N(q멬, q멬, q멬, q멬, q멬);
+Test_N(q멭, q멭, q멭, q멭, q멭);
+Test_N(q멮, q멮, q멮, q멮, q멮);
+Test_N(q멯, q멯, q멯, q멯, q멯);
+Test_N(q며, q며, q며, q며, q며);
+Test_N(q멱, q멱, q멱, q멱, q멱);
+Test_N(q멲, q멲, q멲, q멲, q멲);
+Test_N(q멳, q멳, q멳, q멳, q멳);
+Test_N(q면, q면, q면, q면, q면);
+Test_N(q멵, q멵, q멵, q멵, q멵);
+Test_N(q멶, q멶, q멶, q멶, q멶);
+Test_N(q멷, q멷, q멷, q멷, q멷);
+Test_N(q멸, q멸, q멸, q멸, q멸);
+Test_N(q멹, q멹, q멹, q멹, q멹);
+Test_N(q멺, q멺, q멺, q멺, q멺);
+Test_N(q멻, q멻, q멻, q멻, q멻);
+Test_N(q멼, q멼, q멼, q멼, q멼);
+Test_N(q멽, q멽, q멽, q멽, q멽);
+Test_N(q멾, q멾, q멾, q멾, q멾);
+Test_N(q멿, q멿, q멿, q멿, q멿);
+Test_N(q몀, q몀, q몀, q몀, q몀);
+Test_N(q몁, q몁, q몁, q몁, q몁);
+Test_N(q몂, q몂, q몂, q몂, q몂);
+Test_N(q몃, q몃, q몃, q몃, q몃);
+Test_N(q몄, q몄, q몄, q몄, q몄);
+Test_N(q명, q명, q명, q명, q명);
+Test_N(q몆, q몆, q몆, q몆, q몆);
+Test_N(q몇, q몇, q몇, q몇, q몇);
+Test_N(q몈, q몈, q몈, q몈, q몈);
+Test_N(q몉, q몉, q몉, q몉, q몉);
+Test_N(q몊, q몊, q몊, q몊, q몊);
+Test_N(q몋, q몋, q몋, q몋, q몋);
+Test_N(q몌, q몌, q몌, q몌, q몌);
+Test_N(q몍, q몍, q몍, q몍, q몍);
+Test_N(q몎, q몎, q몎, q몎, q몎);
+Test_N(q몏, q몏, q몏, q몏, q몏);
+Test_N(q몐, q몐, q몐, q몐, q몐);
+Test_N(q몑, q몑, q몑, q몑, q몑);
+Test_N(q몒, q몒, q몒, q몒, q몒);
+Test_N(q몓, q몓, q몓, q몓, q몓);
+Test_N(q몔, q몔, q몔, q몔, q몔);
+Test_N(q몕, q몕, q몕, q몕, q몕);
+Test_N(q몖, q몖, q몖, q몖, q몖);
+Test_N(q몗, q몗, q몗, q몗, q몗);
+Test_N(q몘, q몘, q몘, q몘, q몘);
+Test_N(q몙, q몙, q몙, q몙, q몙);
+Test_N(q몚, q몚, q몚, q몚, q몚);
+Test_N(q몛, q몛, q몛, q몛, q몛);
+Test_N(q몜, q몜, q몜, q몜, q몜);
+Test_N(q몝, q몝, q몝, q몝, q몝);
+Test_N(q몞, q몞, q몞, q몞, q몞);
+Test_N(q몟, q몟, q몟, q몟, q몟);
+Test_N(q몠, q몠, q몠, q몠, q몠);
+Test_N(q몡, q몡, q몡, q몡, q몡);
+Test_N(q몢, q몢, q몢, q몢, q몢);
+Test_N(q몣, q몣, q몣, q몣, q몣);
+Test_N(q몤, q몤, q몤, q몤, q몤);
+Test_N(q몥, q몥, q몥, q몥, q몥);
+Test_N(q몦, q몦, q몦, q몦, q몦);
+Test_N(q몧, q몧, q몧, q몧, q몧);
+Test_N(q모, q모, q모, q모, q모);
+Test_N(q목, q목, q목, q목, q목);
+Test_N(q몪, q몪, q몪, q몪, q몪);
+Test_N(q몫, q몫, q몫, q몫, q몫);
+Test_N(q몬, q몬, q몬, q몬, q몬);
+Test_N(q몭, q몭, q몭, q몭, q몭);
+Test_N(q몮, q몮, q몮, q몮, q몮);
+Test_N(q몯, q몯, q몯, q몯, q몯);
+Test_N(q몰, q몰, q몰, q몰, q몰);
+Test_N(q몱, q몱, q몱, q몱, q몱);
+Test_N(q몲, q몲, q몲, q몲, q몲);
+Test_N(q몳, q몳, q몳, q몳, q몳);
+Test_N(q몴, q몴, q몴, q몴, q몴);
+Test_N(q몵, q몵, q몵, q몵, q몵);
+Test_N(q몶, q몶, q몶, q몶, q몶);
+Test_N(q몷, q몷, q몷, q몷, q몷);
+Test_N(q몸, q몸, q몸, q몸, q몸);
+Test_N(q몹, q몹, q몹, q몹, q몹);
+Test_N(q몺, q몺, q몺, q몺, q몺);
+Test_N(q못, q못, q못, q못, q못);
+Test_N(q몼, q몼, q몼, q몼, q몼);
+Test_N(q몽, q몽, q몽, q몽, q몽);
+Test_N(q몾, q몾, q몾, q몾, q몾);
+Test_N(q몿, q몿, q몿, q몿, q몿);
+Test_N(q뫀, q뫀, q뫀, q뫀, q뫀);
+Test_N(q뫁, q뫁, q뫁, q뫁, q뫁);
+Test_N(q뫂, q뫂, q뫂, q뫂, q뫂);
+Test_N(q뫃, q뫃, q뫃, q뫃, q뫃);
+Test_N(q뫄, q뫄, q뫄, q뫄, q뫄);
+Test_N(q뫅, q뫅, q뫅, q뫅, q뫅);
+Test_N(q뫆, q뫆, q뫆, q뫆, q뫆);
+Test_N(q뫇, q뫇, q뫇, q뫇, q뫇);
+Test_N(q뫈, q뫈, q뫈, q뫈, q뫈);
+Test_N(q뫉, q뫉, q뫉, q뫉, q뫉);
+Test_N(q뫊, q뫊, q뫊, q뫊, q뫊);
+Test_N(q뫋, q뫋, q뫋, q뫋, q뫋);
+Test_N(q뫌, q뫌, q뫌, q뫌, q뫌);
+Test_N(q뫍, q뫍, q뫍, q뫍, q뫍);
+Test_N(q뫎, q뫎, q뫎, q뫎, q뫎);
+Test_N(q뫏, q뫏, q뫏, q뫏, q뫏);
+Test_N(q뫐, q뫐, q뫐, q뫐, q뫐);
+Test_N(q뫑, q뫑, q뫑, q뫑, q뫑);
+Test_N(q뫒, q뫒, q뫒, q뫒, q뫒);
+Test_N(q뫓, q뫓, q뫓, q뫓, q뫓);
+Test_N(q뫔, q뫔, q뫔, q뫔, q뫔);
+Test_N(q뫕, q뫕, q뫕, q뫕, q뫕);
+Test_N(q뫖, q뫖, q뫖, q뫖, q뫖);
+Test_N(q뫗, q뫗, q뫗, q뫗, q뫗);
+Test_N(q뫘, q뫘, q뫘, q뫘, q뫘);
+Test_N(q뫙, q뫙, q뫙, q뫙, q뫙);
+Test_N(q뫚, q뫚, q뫚, q뫚, q뫚);
+Test_N(q뫛, q뫛, q뫛, q뫛, q뫛);
+Test_N(q뫜, q뫜, q뫜, q뫜, q뫜);
+Test_N(q뫝, q뫝, q뫝, q뫝, q뫝);
+Test_N(q뫞, q뫞, q뫞, q뫞, q뫞);
+Test_N(q뫟, q뫟, q뫟, q뫟, q뫟);
+Test_N(q뫠, q뫠, q뫠, q뫠, q뫠);
+Test_N(q뫡, q뫡, q뫡, q뫡, q뫡);
+Test_N(q뫢, q뫢, q뫢, q뫢, q뫢);
+Test_N(q뫣, q뫣, q뫣, q뫣, q뫣);
+Test_N(q뫤, q뫤, q뫤, q뫤, q뫤);
+Test_N(q뫥, q뫥, q뫥, q뫥, q뫥);
+Test_N(q뫦, q뫦, q뫦, q뫦, q뫦);
+Test_N(q뫧, q뫧, q뫧, q뫧, q뫧);
+Test_N(q뫨, q뫨, q뫨, q뫨, q뫨);
+Test_N(q뫩, q뫩, q뫩, q뫩, q뫩);
+Test_N(q뫪, q뫪, q뫪, q뫪, q뫪);
+Test_N(q뫫, q뫫, q뫫, q뫫, q뫫);
+Test_N(q뫬, q뫬, q뫬, q뫬, q뫬);
+Test_N(q뫭, q뫭, q뫭, q뫭, q뫭);
+Test_N(q뫮, q뫮, q뫮, q뫮, q뫮);
+Test_N(q뫯, q뫯, q뫯, q뫯, q뫯);
+Test_N(q뫰, q뫰, q뫰, q뫰, q뫰);
+Test_N(q뫱, q뫱, q뫱, q뫱, q뫱);
+Test_N(q뫲, q뫲, q뫲, q뫲, q뫲);
+Test_N(q뫳, q뫳, q뫳, q뫳, q뫳);
+Test_N(q뫴, q뫴, q뫴, q뫴, q뫴);
+Test_N(q뫵, q뫵, q뫵, q뫵, q뫵);
+Test_N(q뫶, q뫶, q뫶, q뫶, q뫶);
+Test_N(q뫷, q뫷, q뫷, q뫷, q뫷);
+Test_N(q뫸, q뫸, q뫸, q뫸, q뫸);
+Test_N(q뫹, q뫹, q뫹, q뫹, q뫹);
+Test_N(q뫺, q뫺, q뫺, q뫺, q뫺);
+Test_N(q뫻, q뫻, q뫻, q뫻, q뫻);
+Test_N(q뫼, q뫼, q뫼, q뫼, q뫼);
+Test_N(q뫽, q뫽, q뫽, q뫽, q뫽);
+Test_N(q뫾, q뫾, q뫾, q뫾, q뫾);
+Test_N(q뫿, q뫿, q뫿, q뫿, q뫿);
+Test_N(q묀, q묀, q묀, q묀, q묀);
+Test_N(q묁, q묁, q묁, q묁, q묁);
+Test_N(q묂, q묂, q묂, q묂, q묂);
+Test_N(q묃, q묃, q묃, q묃, q묃);
+Test_N(q묄, q묄, q묄, q묄, q묄);
+Test_N(q묅, q묅, q묅, q묅, q묅);
+Test_N(q묆, q묆, q묆, q묆, q묆);
+Test_N(q묇, q묇, q묇, q묇, q묇);
+Test_N(q묈, q묈, q묈, q묈, q묈);
+Test_N(q묉, q묉, q묉, q묉, q묉);
+Test_N(q묊, q묊, q묊, q묊, q묊);
+Test_N(q묋, q묋, q묋, q묋, q묋);
+Test_N(q묌, q묌, q묌, q묌, q묌);
+Test_N(q묍, q묍, q묍, q묍, q묍);
+Test_N(q묎, q묎, q묎, q묎, q묎);
+Test_N(q묏, q묏, q묏, q묏, q묏);
+Test_N(q묐, q묐, q묐, q묐, q묐);
+Test_N(q묑, q묑, q묑, q묑, q묑);
+Test_N(q묒, q묒, q묒, q묒, q묒);
+Test_N(q묓, q묓, q묓, q묓, q묓);
+Test_N(q묔, q묔, q묔, q묔, q묔);
+Test_N(q묕, q묕, q묕, q묕, q묕);
+Test_N(q묖, q묖, q묖, q묖, q묖);
+Test_N(q묗, q묗, q묗, q묗, q묗);
+Test_N(q묘, q묘, q묘, q묘, q묘);
+Test_N(q묙, q묙, q묙, q묙, q묙);
+Test_N(q묚, q묚, q묚, q묚, q묚);
+Test_N(q묛, q묛, q묛, q묛, q묛);
+Test_N(q묜, q묜, q묜, q묜, q묜);
+Test_N(q묝, q묝, q묝, q묝, q묝);
+Test_N(q묞, q묞, q묞, q묞, q묞);
+Test_N(q묟, q묟, q묟, q묟, q묟);
+Test_N(q묠, q묠, q묠, q묠, q묠);
+Test_N(q묡, q묡, q묡, q묡, q묡);
+Test_N(q묢, q묢, q묢, q묢, q묢);
+Test_N(q묣, q묣, q묣, q묣, q묣);
+Test_N(q묤, q묤, q묤, q묤, q묤);
+Test_N(q묥, q묥, q묥, q묥, q묥);
+Test_N(q묦, q묦, q묦, q묦, q묦);
+Test_N(q묧, q묧, q묧, q묧, q묧);
+Test_N(q묨, q묨, q묨, q묨, q묨);
+Test_N(q묩, q묩, q묩, q묩, q묩);
+Test_N(q묪, q묪, q묪, q묪, q묪);
+Test_N(q묫, q묫, q묫, q묫, q묫);
+Test_N(q묬, q묬, q묬, q묬, q묬);
+Test_N(q묭, q묭, q묭, q묭, q묭);
+Test_N(q묮, q묮, q묮, q묮, q묮);
+Test_N(q묯, q묯, q묯, q묯, q묯);
+Test_N(q묰, q묰, q묰, q묰, q묰);
+Test_N(q묱, q묱, q묱, q묱, q묱);
+Test_N(q묲, q묲, q묲, q묲, q묲);
+Test_N(q묳, q묳, q묳, q묳, q묳);
+Test_N(q무, q무, q무, q무, q무);
+Test_N(q묵, q묵, q묵, q묵, q묵);
+Test_N(q묶, q묶, q묶, q묶, q묶);
+Test_N(q묷, q묷, q묷, q묷, q묷);
+Test_N(q문, q문, q문, q문, q문);
+Test_N(q묹, q묹, q묹, q묹, q묹);
+Test_N(q묺, q묺, q묺, q묺, q묺);
+Test_N(q묻, q묻, q묻, q묻, q묻);
+Test_N(q물, q물, q물, q물, q물);
+Test_N(q묽, q묽, q묽, q묽, q묽);
+Test_N(q묾, q묾, q묾, q묾, q묾);
+Test_N(q묿, q묿, q묿, q묿, q묿);
+Test_N(q뭀, q뭀, q뭀, q뭀, q뭀);
+Test_N(q뭁, q뭁, q뭁, q뭁, q뭁);
+Test_N(q뭂, q뭂, q뭂, q뭂, q뭂);
+Test_N(q뭃, q뭃, q뭃, q뭃, q뭃);
+Test_N(q뭄, q뭄, q뭄, q뭄, q뭄);
+Test_N(q뭅, q뭅, q뭅, q뭅, q뭅);
+Test_N(q뭆, q뭆, q뭆, q뭆, q뭆);
+Test_N(q뭇, q뭇, q뭇, q뭇, q뭇);
+Test_N(q뭈, q뭈, q뭈, q뭈, q뭈);
+Test_N(q뭉, q뭉, q뭉, q뭉, q뭉);
+Test_N(q뭊, q뭊, q뭊, q뭊, q뭊);
+Test_N(q뭋, q뭋, q뭋, q뭋, q뭋);
+Test_N(q뭌, q뭌, q뭌, q뭌, q뭌);
+Test_N(q뭍, q뭍, q뭍, q뭍, q뭍);
+Test_N(q뭎, q뭎, q뭎, q뭎, q뭎);
+Test_N(q뭏, q뭏, q뭏, q뭏, q뭏);
+Test_N(q뭐, q뭐, q뭐, q뭐, q뭐);
+Test_N(q뭑, q뭑, q뭑, q뭑, q뭑);
+Test_N(q뭒, q뭒, q뭒, q뭒, q뭒);
+Test_N(q뭓, q뭓, q뭓, q뭓, q뭓);
+Test_N(q뭔, q뭔, q뭔, q뭔, q뭔);
+Test_N(q뭕, q뭕, q뭕, q뭕, q뭕);
+Test_N(q뭖, q뭖, q뭖, q뭖, q뭖);
+Test_N(q뭗, q뭗, q뭗, q뭗, q뭗);
+Test_N(q뭘, q뭘, q뭘, q뭘, q뭘);
+Test_N(q뭙, q뭙, q뭙, q뭙, q뭙);
+Test_N(q뭚, q뭚, q뭚, q뭚, q뭚);
+Test_N(q뭛, q뭛, q뭛, q뭛, q뭛);
+Test_N(q뭜, q뭜, q뭜, q뭜, q뭜);
+Test_N(q뭝, q뭝, q뭝, q뭝, q뭝);
+Test_N(q뭞, q뭞, q뭞, q뭞, q뭞);
+Test_N(q뭟, q뭟, q뭟, q뭟, q뭟);
+Test_N(q뭠, q뭠, q뭠, q뭠, q뭠);
+Test_N(q뭡, q뭡, q뭡, q뭡, q뭡);
+Test_N(q뭢, q뭢, q뭢, q뭢, q뭢);
+Test_N(q뭣, q뭣, q뭣, q뭣, q뭣);
+Test_N(q뭤, q뭤, q뭤, q뭤, q뭤);
+Test_N(q뭥, q뭥, q뭥, q뭥, q뭥);
+Test_N(q뭦, q뭦, q뭦, q뭦, q뭦);
+Test_N(q뭧, q뭧, q뭧, q뭧, q뭧);
+Test_N(q뭨, q뭨, q뭨, q뭨, q뭨);
+Test_N(q뭩, q뭩, q뭩, q뭩, q뭩);
+Test_N(q뭪, q뭪, q뭪, q뭪, q뭪);
+Test_N(q뭫, q뭫, q뭫, q뭫, q뭫);
+Test_N(q뭬, q뭬, q뭬, q뭬, q뭬);
+Test_N(q뭭, q뭭, q뭭, q뭭, q뭭);
+Test_N(q뭮, q뭮, q뭮, q뭮, q뭮);
+Test_N(q뭯, q뭯, q뭯, q뭯, q뭯);
+Test_N(q뭰, q뭰, q뭰, q뭰, q뭰);
+Test_N(q뭱, q뭱, q뭱, q뭱, q뭱);
+Test_N(q뭲, q뭲, q뭲, q뭲, q뭲);
+Test_N(q뭳, q뭳, q뭳, q뭳, q뭳);
+Test_N(q뭴, q뭴, q뭴, q뭴, q뭴);
+Test_N(q뭵, q뭵, q뭵, q뭵, q뭵);
+Test_N(q뭶, q뭶, q뭶, q뭶, q뭶);
+Test_N(q뭷, q뭷, q뭷, q뭷, q뭷);
+Test_N(q뭸, q뭸, q뭸, q뭸, q뭸);
+Test_N(q뭹, q뭹, q뭹, q뭹, q뭹);
+Test_N(q뭺, q뭺, q뭺, q뭺, q뭺);
+Test_N(q뭻, q뭻, q뭻, q뭻, q뭻);
+Test_N(q뭼, q뭼, q뭼, q뭼, q뭼);
+Test_N(q뭽, q뭽, q뭽, q뭽, q뭽);
+Test_N(q뭾, q뭾, q뭾, q뭾, q뭾);
+Test_N(q뭿, q뭿, q뭿, q뭿, q뭿);
+Test_N(q뮀, q뮀, q뮀, q뮀, q뮀);
+Test_N(q뮁, q뮁, q뮁, q뮁, q뮁);
+Test_N(q뮂, q뮂, q뮂, q뮂, q뮂);
+Test_N(q뮃, q뮃, q뮃, q뮃, q뮃);
+Test_N(q뮄, q뮄, q뮄, q뮄, q뮄);
+Test_N(q뮅, q뮅, q뮅, q뮅, q뮅);
+Test_N(q뮆, q뮆, q뮆, q뮆, q뮆);
+Test_N(q뮇, q뮇, q뮇, q뮇, q뮇);
+Test_N(q뮈, q뮈, q뮈, q뮈, q뮈);
+Test_N(q뮉, q뮉, q뮉, q뮉, q뮉);
+Test_N(q뮊, q뮊, q뮊, q뮊, q뮊);
+Test_N(q뮋, q뮋, q뮋, q뮋, q뮋);
+Test_N(q뮌, q뮌, q뮌, q뮌, q뮌);
+Test_N(q뮍, q뮍, q뮍, q뮍, q뮍);
+Test_N(q뮎, q뮎, q뮎, q뮎, q뮎);
+Test_N(q뮏, q뮏, q뮏, q뮏, q뮏);
+Test_N(q뮐, q뮐, q뮐, q뮐, q뮐);
+Test_N(q뮑, q뮑, q뮑, q뮑, q뮑);
+Test_N(q뮒, q뮒, q뮒, q뮒, q뮒);
+Test_N(q뮓, q뮓, q뮓, q뮓, q뮓);
+Test_N(q뮔, q뮔, q뮔, q뮔, q뮔);
+Test_N(q뮕, q뮕, q뮕, q뮕, q뮕);
+Test_N(q뮖, q뮖, q뮖, q뮖, q뮖);
+Test_N(q뮗, q뮗, q뮗, q뮗, q뮗);
+Test_N(q뮘, q뮘, q뮘, q뮘, q뮘);
+Test_N(q뮙, q뮙, q뮙, q뮙, q뮙);
+Test_N(q뮚, q뮚, q뮚, q뮚, q뮚);
+Test_N(q뮛, q뮛, q뮛, q뮛, q뮛);
+Test_N(q뮜, q뮜, q뮜, q뮜, q뮜);
+Test_N(q뮝, q뮝, q뮝, q뮝, q뮝);
+Test_N(q뮞, q뮞, q뮞, q뮞, q뮞);
+Test_N(q뮟, q뮟, q뮟, q뮟, q뮟);
+Test_N(q뮠, q뮠, q뮠, q뮠, q뮠);
+Test_N(q뮡, q뮡, q뮡, q뮡, q뮡);
+Test_N(q뮢, q뮢, q뮢, q뮢, q뮢);
+Test_N(q뮣, q뮣, q뮣, q뮣, q뮣);
+Test_N(q뮤, q뮤, q뮤, q뮤, q뮤);
+Test_N(q뮥, q뮥, q뮥, q뮥, q뮥);
+Test_N(q뮦, q뮦, q뮦, q뮦, q뮦);
+Test_N(q뮧, q뮧, q뮧, q뮧, q뮧);
+Test_N(q뮨, q뮨, q뮨, q뮨, q뮨);
+Test_N(q뮩, q뮩, q뮩, q뮩, q뮩);
+Test_N(q뮪, q뮪, q뮪, q뮪, q뮪);
+Test_N(q뮫, q뮫, q뮫, q뮫, q뮫);
+Test_N(q뮬, q뮬, q뮬, q뮬, q뮬);
+Test_N(q뮭, q뮭, q뮭, q뮭, q뮭);
+Test_N(q뮮, q뮮, q뮮, q뮮, q뮮);
+Test_N(q뮯, q뮯, q뮯, q뮯, q뮯);
+Test_N(q뮰, q뮰, q뮰, q뮰, q뮰);
+Test_N(q뮱, q뮱, q뮱, q뮱, q뮱);
+Test_N(q뮲, q뮲, q뮲, q뮲, q뮲);
+Test_N(q뮳, q뮳, q뮳, q뮳, q뮳);
+Test_N(q뮴, q뮴, q뮴, q뮴, q뮴);
+Test_N(q뮵, q뮵, q뮵, q뮵, q뮵);
+Test_N(q뮶, q뮶, q뮶, q뮶, q뮶);
+Test_N(q뮷, q뮷, q뮷, q뮷, q뮷);
+Test_N(q뮸, q뮸, q뮸, q뮸, q뮸);
+Test_N(q뮹, q뮹, q뮹, q뮹, q뮹);
+Test_N(q뮺, q뮺, q뮺, q뮺, q뮺);
+Test_N(q뮻, q뮻, q뮻, q뮻, q뮻);
+Test_N(q뮼, q뮼, q뮼, q뮼, q뮼);
+Test_N(q뮽, q뮽, q뮽, q뮽, q뮽);
+Test_N(q뮾, q뮾, q뮾, q뮾, q뮾);
+Test_N(q뮿, q뮿, q뮿, q뮿, q뮿);
+Test_N(q므, q므, q므, q므, q므);
+Test_N(q믁, q믁, q믁, q믁, q믁);
+Test_N(q믂, q믂, q믂, q믂, q믂);
+Test_N(q믃, q믃, q믃, q믃, q믃);
+Test_N(q믄, q믄, q믄, q믄, q믄);
+Test_N(q믅, q믅, q믅, q믅, q믅);
+Test_N(q믆, q믆, q믆, q믆, q믆);
+Test_N(q믇, q믇, q믇, q믇, q믇);
+Test_N(q믈, q믈, q믈, q믈, q믈);
+Test_N(q믉, q믉, q믉, q믉, q믉);
+Test_N(q믊, q믊, q믊, q믊, q믊);
+Test_N(q믋, q믋, q믋, q믋, q믋);
+Test_N(q믌, q믌, q믌, q믌, q믌);
+Test_N(q믍, q믍, q믍, q믍, q믍);
+Test_N(q믎, q믎, q믎, q믎, q믎);
+Test_N(q믏, q믏, q믏, q믏, q믏);
+Test_N(q믐, q믐, q믐, q믐, q믐);
+Test_N(q믑, q믑, q믑, q믑, q믑);
+Test_N(q믒, q믒, q믒, q믒, q믒);
+Test_N(q믓, q믓, q믓, q믓, q믓);
+Test_N(q믔, q믔, q믔, q믔, q믔);
+Test_N(q믕, q믕, q믕, q믕, q믕);
+Test_N(q믖, q믖, q믖, q믖, q믖);
+Test_N(q믗, q믗, q믗, q믗, q믗);
+Test_N(q믘, q믘, q믘, q믘, q믘);
+Test_N(q믙, q믙, q믙, q믙, q믙);
+Test_N(q믚, q믚, q믚, q믚, q믚);
+Test_N(q믛, q믛, q믛, q믛, q믛);
+Test_N(q믜, q믜, q믜, q믜, q믜);
+Test_N(q믝, q믝, q믝, q믝, q믝);
+Test_N(q믞, q믞, q믞, q믞, q믞);
+Test_N(q믟, q믟, q믟, q믟, q믟);
+Test_N(q믠, q믠, q믠, q믠, q믠);
+Test_N(q믡, q믡, q믡, q믡, q믡);
+Test_N(q믢, q믢, q믢, q믢, q믢);
+Test_N(q믣, q믣, q믣, q믣, q믣);
+Test_N(q믤, q믤, q믤, q믤, q믤);
+Test_N(q믥, q믥, q믥, q믥, q믥);
+Test_N(q믦, q믦, q믦, q믦, q믦);
+Test_N(q믧, q믧, q믧, q믧, q믧);
+Test_N(q믨, q믨, q믨, q믨, q믨);
+Test_N(q믩, q믩, q믩, q믩, q믩);
+Test_N(q믪, q믪, q믪, q믪, q믪);
+Test_N(q믫, q믫, q믫, q믫, q믫);
+Test_N(q믬, q믬, q믬, q믬, q믬);
+Test_N(q믭, q믭, q믭, q믭, q믭);
+Test_N(q믮, q믮, q믮, q믮, q믮);
+Test_N(q믯, q믯, q믯, q믯, q믯);
+Test_N(q믰, q믰, q믰, q믰, q믰);
+Test_N(q믱, q믱, q믱, q믱, q믱);
+Test_N(q믲, q믲, q믲, q믲, q믲);
+Test_N(q믳, q믳, q믳, q믳, q믳);
+Test_N(q믴, q믴, q믴, q믴, q믴);
+Test_N(q믵, q믵, q믵, q믵, q믵);
+Test_N(q믶, q믶, q믶, q믶, q믶);
+Test_N(q믷, q믷, q믷, q믷, q믷);
+Test_N(q미, q미, q미, q미, q미);
+Test_N(q믹, q믹, q믹, q믹, q믹);
+Test_N(q믺, q믺, q믺, q믺, q믺);
+Test_N(q믻, q믻, q믻, q믻, q믻);
+Test_N(q민, q민, q민, q민, q민);
+Test_N(q믽, q믽, q믽, q믽, q믽);
+Test_N(q믾, q믾, q믾, q믾, q믾);
+Test_N(q믿, q믿, q믿, q믿, q믿);
+Test_N(q밀, q밀, q밀, q밀, q밀);
+Test_N(q밁, q밁, q밁, q밁, q밁);
+Test_N(q밂, q밂, q밂, q밂, q밂);
+Test_N(q밃, q밃, q밃, q밃, q밃);
+Test_N(q밄, q밄, q밄, q밄, q밄);
+Test_N(q밅, q밅, q밅, q밅, q밅);
+Test_N(q밆, q밆, q밆, q밆, q밆);
+Test_N(q밇, q밇, q밇, q밇, q밇);
+Test_N(q밈, q밈, q밈, q밈, q밈);
+Test_N(q밉, q밉, q밉, q밉, q밉);
+Test_N(q밊, q밊, q밊, q밊, q밊);
+Test_N(q밋, q밋, q밋, q밋, q밋);
+Test_N(q밌, q밌, q밌, q밌, q밌);
+Test_N(q밍, q밍, q밍, q밍, q밍);
+Test_N(q밎, q밎, q밎, q밎, q밎);
+Test_N(q및, q및, q및, q및, q및);
+Test_N(q밐, q밐, q밐, q밐, q밐);
+Test_N(q밑, q밑, q밑, q밑, q밑);
+Test_N(q밒, q밒, q밒, q밒, q밒);
+Test_N(q밓, q밓, q밓, q밓, q밓);
+Test_N(q바, q바, q바, q바, q바);
+Test_N(q박, q박, q박, q박, q박);
+Test_N(q밖, q밖, q밖, q밖, q밖);
+Test_N(q밗, q밗, q밗, q밗, q밗);
+Test_N(q반, q반, q반, q반, q반);
+Test_N(q밙, q밙, q밙, q밙, q밙);
+Test_N(q밚, q밚, q밚, q밚, q밚);
+Test_N(q받, q받, q받, q받, q받);
+Test_N(q발, q발, q발, q발, q발);
+Test_N(q밝, q밝, q밝, q밝, q밝);
+Test_N(q밞, q밞, q밞, q밞, q밞);
+Test_N(q밟, q밟, q밟, q밟, q밟);
+Test_N(q밠, q밠, q밠, q밠, q밠);
+Test_N(q밡, q밡, q밡, q밡, q밡);
+Test_N(q밢, q밢, q밢, q밢, q밢);
+Test_N(q밣, q밣, q밣, q밣, q밣);
+Test_N(q밤, q밤, q밤, q밤, q밤);
+Test_N(q밥, q밥, q밥, q밥, q밥);
+Test_N(q밦, q밦, q밦, q밦, q밦);
+Test_N(q밧, q밧, q밧, q밧, q밧);
+Test_N(q밨, q밨, q밨, q밨, q밨);
+Test_N(q방, q방, q방, q방, q방);
+Test_N(q밪, q밪, q밪, q밪, q밪);
+Test_N(q밫, q밫, q밫, q밫, q밫);
+Test_N(q밬, q밬, q밬, q밬, q밬);
+Test_N(q밭, q밭, q밭, q밭, q밭);
+Test_N(q밮, q밮, q밮, q밮, q밮);
+Test_N(q밯, q밯, q밯, q밯, q밯);
+Test_N(q배, q배, q배, q배, q배);
+Test_N(q백, q백, q백, q백, q백);
+Test_N(q밲, q밲, q밲, q밲, q밲);
+Test_N(q밳, q밳, q밳, q밳, q밳);
+Test_N(q밴, q밴, q밴, q밴, q밴);
+Test_N(q밵, q밵, q밵, q밵, q밵);
+Test_N(q밶, q밶, q밶, q밶, q밶);
+Test_N(q밷, q밷, q밷, q밷, q밷);
+Test_N(q밸, q밸, q밸, q밸, q밸);
+Test_N(q밹, q밹, q밹, q밹, q밹);
+Test_N(q밺, q밺, q밺, q밺, q밺);
+Test_N(q밻, q밻, q밻, q밻, q밻);
+Test_N(q밼, q밼, q밼, q밼, q밼);
+Test_N(q밽, q밽, q밽, q밽, q밽);
+Test_N(q밾, q밾, q밾, q밾, q밾);
+Test_N(q밿, q밿, q밿, q밿, q밿);
+Test_N(q뱀, q뱀, q뱀, q뱀, q뱀);
+Test_N(q뱁, q뱁, q뱁, q뱁, q뱁);
+Test_N(q뱂, q뱂, q뱂, q뱂, q뱂);
+Test_N(q뱃, q뱃, q뱃, q뱃, q뱃);
+Test_N(q뱄, q뱄, q뱄, q뱄, q뱄);
+Test_N(q뱅, q뱅, q뱅, q뱅, q뱅);
+Test_N(q뱆, q뱆, q뱆, q뱆, q뱆);
+Test_N(q뱇, q뱇, q뱇, q뱇, q뱇);
+Test_N(q뱈, q뱈, q뱈, q뱈, q뱈);
+Test_N(q뱉, q뱉, q뱉, q뱉, q뱉);
+Test_N(q뱊, q뱊, q뱊, q뱊, q뱊);
+Test_N(q뱋, q뱋, q뱋, q뱋, q뱋);
+Test_N(q뱌, q뱌, q뱌, q뱌, q뱌);
+Test_N(q뱍, q뱍, q뱍, q뱍, q뱍);
+Test_N(q뱎, q뱎, q뱎, q뱎, q뱎);
+Test_N(q뱏, q뱏, q뱏, q뱏, q뱏);
+Test_N(q뱐, q뱐, q뱐, q뱐, q뱐);
+Test_N(q뱑, q뱑, q뱑, q뱑, q뱑);
+Test_N(q뱒, q뱒, q뱒, q뱒, q뱒);
+Test_N(q뱓, q뱓, q뱓, q뱓, q뱓);
+Test_N(q뱔, q뱔, q뱔, q뱔, q뱔);
+Test_N(q뱕, q뱕, q뱕, q뱕, q뱕);
+Test_N(q뱖, q뱖, q뱖, q뱖, q뱖);
+Test_N(q뱗, q뱗, q뱗, q뱗, q뱗);
+Test_N(q뱘, q뱘, q뱘, q뱘, q뱘);
+Test_N(q뱙, q뱙, q뱙, q뱙, q뱙);
+Test_N(q뱚, q뱚, q뱚, q뱚, q뱚);
+Test_N(q뱛, q뱛, q뱛, q뱛, q뱛);
+Test_N(q뱜, q뱜, q뱜, q뱜, q뱜);
+Test_N(q뱝, q뱝, q뱝, q뱝, q뱝);
+Test_N(q뱞, q뱞, q뱞, q뱞, q뱞);
+Test_N(q뱟, q뱟, q뱟, q뱟, q뱟);
+Test_N(q뱠, q뱠, q뱠, q뱠, q뱠);
+Test_N(q뱡, q뱡, q뱡, q뱡, q뱡);
+Test_N(q뱢, q뱢, q뱢, q뱢, q뱢);
+Test_N(q뱣, q뱣, q뱣, q뱣, q뱣);
+Test_N(q뱤, q뱤, q뱤, q뱤, q뱤);
+Test_N(q뱥, q뱥, q뱥, q뱥, q뱥);
+Test_N(q뱦, q뱦, q뱦, q뱦, q뱦);
+Test_N(q뱧, q뱧, q뱧, q뱧, q뱧);
+Test_N(q뱨, q뱨, q뱨, q뱨, q뱨);
+Test_N(q뱩, q뱩, q뱩, q뱩, q뱩);
+Test_N(q뱪, q뱪, q뱪, q뱪, q뱪);
+Test_N(q뱫, q뱫, q뱫, q뱫, q뱫);
+Test_N(q뱬, q뱬, q뱬, q뱬, q뱬);
+Test_N(q뱭, q뱭, q뱭, q뱭, q뱭);
+Test_N(q뱮, q뱮, q뱮, q뱮, q뱮);
+Test_N(q뱯, q뱯, q뱯, q뱯, q뱯);
+Test_N(q뱰, q뱰, q뱰, q뱰, q뱰);
+Test_N(q뱱, q뱱, q뱱, q뱱, q뱱);
+Test_N(q뱲, q뱲, q뱲, q뱲, q뱲);
+Test_N(q뱳, q뱳, q뱳, q뱳, q뱳);
+Test_N(q뱴, q뱴, q뱴, q뱴, q뱴);
+Test_N(q뱵, q뱵, q뱵, q뱵, q뱵);
+Test_N(q뱶, q뱶, q뱶, q뱶, q뱶);
+Test_N(q뱷, q뱷, q뱷, q뱷, q뱷);
+Test_N(q뱸, q뱸, q뱸, q뱸, q뱸);
+Test_N(q뱹, q뱹, q뱹, q뱹, q뱹);
+Test_N(q뱺, q뱺, q뱺, q뱺, q뱺);
+Test_N(q뱻, q뱻, q뱻, q뱻, q뱻);
+Test_N(q뱼, q뱼, q뱼, q뱼, q뱼);
+Test_N(q뱽, q뱽, q뱽, q뱽, q뱽);
+Test_N(q뱾, q뱾, q뱾, q뱾, q뱾);
+Test_N(q뱿, q뱿, q뱿, q뱿, q뱿);
+Test_N(q벀, q벀, q벀, q벀, q벀);
+Test_N(q벁, q벁, q벁, q벁, q벁);
+Test_N(q벂, q벂, q벂, q벂, q벂);
+Test_N(q벃, q벃, q벃, q벃, q벃);
+Test_N(q버, q버, q버, q버, q버);
+Test_N(q벅, q벅, q벅, q벅, q벅);
+Test_N(q벆, q벆, q벆, q벆, q벆);
+Test_N(q벇, q벇, q벇, q벇, q벇);
+Test_N(q번, q번, q번, q번, q번);
+Test_N(q벉, q벉, q벉, q벉, q벉);
+Test_N(q벊, q벊, q벊, q벊, q벊);
+Test_N(q벋, q벋, q벋, q벋, q벋);
+Test_N(q벌, q벌, q벌, q벌, q벌);
+Test_N(q벍, q벍, q벍, q벍, q벍);
+Test_N(q벎, q벎, q벎, q벎, q벎);
+Test_N(q벏, q벏, q벏, q벏, q벏);
+Test_N(q벐, q벐, q벐, q벐, q벐);
+Test_N(q벑, q벑, q벑, q벑, q벑);
+Test_N(q벒, q벒, q벒, q벒, q벒);
+Test_N(q벓, q벓, q벓, q벓, q벓);
+Test_N(q범, q범, q범, q범, q범);
+Test_N(q법, q법, q법, q법, q법);
+Test_N(q벖, q벖, q벖, q벖, q벖);
+Test_N(q벗, q벗, q벗, q벗, q벗);
+Test_N(q벘, q벘, q벘, q벘, q벘);
+Test_N(q벙, q벙, q벙, q벙, q벙);
+Test_N(q벚, q벚, q벚, q벚, q벚);
+Test_N(q벛, q벛, q벛, q벛, q벛);
+Test_N(q벜, q벜, q벜, q벜, q벜);
+Test_N(q벝, q벝, q벝, q벝, q벝);
+Test_N(q벞, q벞, q벞, q벞, q벞);
+Test_N(q벟, q벟, q벟, q벟, q벟);
+Test_N(q베, q베, q베, q베, q베);
+Test_N(q벡, q벡, q벡, q벡, q벡);
+Test_N(q벢, q벢, q벢, q벢, q벢);
+Test_N(q벣, q벣, q벣, q벣, q벣);
+Test_N(q벤, q벤, q벤, q벤, q벤);
+Test_N(q벥, q벥, q벥, q벥, q벥);
+Test_N(q벦, q벦, q벦, q벦, q벦);
+Test_N(q벧, q벧, q벧, q벧, q벧);
+Test_N(q벨, q벨, q벨, q벨, q벨);
+Test_N(q벩, q벩, q벩, q벩, q벩);
+Test_N(q벪, q벪, q벪, q벪, q벪);
+Test_N(q벫, q벫, q벫, q벫, q벫);
+Test_N(q벬, q벬, q벬, q벬, q벬);
+Test_N(q벭, q벭, q벭, q벭, q벭);
+Test_N(q벮, q벮, q벮, q벮, q벮);
+Test_N(q벯, q벯, q벯, q벯, q벯);
+Test_N(q벰, q벰, q벰, q벰, q벰);
+Test_N(q벱, q벱, q벱, q벱, q벱);
+Test_N(q벲, q벲, q벲, q벲, q벲);
+Test_N(q벳, q벳, q벳, q벳, q벳);
+Test_N(q벴, q벴, q벴, q벴, q벴);
+Test_N(q벵, q벵, q벵, q벵, q벵);
+Test_N(q벶, q벶, q벶, q벶, q벶);
+Test_N(q벷, q벷, q벷, q벷, q벷);
+Test_N(q벸, q벸, q벸, q벸, q벸);
+Test_N(q벹, q벹, q벹, q벹, q벹);
+Test_N(q벺, q벺, q벺, q벺, q벺);
+Test_N(q벻, q벻, q벻, q벻, q벻);
+Test_N(q벼, q벼, q벼, q벼, q벼);
+Test_N(q벽, q벽, q벽, q벽, q벽);
+Test_N(q벾, q벾, q벾, q벾, q벾);
+Test_N(q벿, q벿, q벿, q벿, q벿);
+Test_N(q변, q변, q변, q변, q변);
+Test_N(q볁, q볁, q볁, q볁, q볁);
+Test_N(q볂, q볂, q볂, q볂, q볂);
+Test_N(q볃, q볃, q볃, q볃, q볃);
+Test_N(q별, q별, q별, q별, q별);
+Test_N(q볅, q볅, q볅, q볅, q볅);
+Test_N(q볆, q볆, q볆, q볆, q볆);
+Test_N(q볇, q볇, q볇, q볇, q볇);
+Test_N(q볈, q볈, q볈, q볈, q볈);
+Test_N(q볉, q볉, q볉, q볉, q볉);
+Test_N(q볊, q볊, q볊, q볊, q볊);
+Test_N(q볋, q볋, q볋, q볋, q볋);
+Test_N(q볌, q볌, q볌, q볌, q볌);
+Test_N(q볍, q볍, q볍, q볍, q볍);
+Test_N(q볎, q볎, q볎, q볎, q볎);
+Test_N(q볏, q볏, q볏, q볏, q볏);
+Test_N(q볐, q볐, q볐, q볐, q볐);
+Test_N(q병, q병, q병, q병, q병);
+Test_N(q볒, q볒, q볒, q볒, q볒);
+Test_N(q볓, q볓, q볓, q볓, q볓);
+Test_N(q볔, q볔, q볔, q볔, q볔);
+Test_N(q볕, q볕, q볕, q볕, q볕);
+Test_N(q볖, q볖, q볖, q볖, q볖);
+Test_N(q볗, q볗, q볗, q볗, q볗);
+Test_N(q볘, q볘, q볘, q볘, q볘);
+Test_N(q볙, q볙, q볙, q볙, q볙);
+Test_N(q볚, q볚, q볚, q볚, q볚);
+Test_N(q볛, q볛, q볛, q볛, q볛);
+Test_N(q볜, q볜, q볜, q볜, q볜);
+Test_N(q볝, q볝, q볝, q볝, q볝);
+Test_N(q볞, q볞, q볞, q볞, q볞);
+Test_N(q볟, q볟, q볟, q볟, q볟);
+Test_N(q볠, q볠, q볠, q볠, q볠);
+Test_N(q볡, q볡, q볡, q볡, q볡);
+Test_N(q볢, q볢, q볢, q볢, q볢);
+Test_N(q볣, q볣, q볣, q볣, q볣);
+Test_N(q볤, q볤, q볤, q볤, q볤);
+Test_N(q볥, q볥, q볥, q볥, q볥);
+Test_N(q볦, q볦, q볦, q볦, q볦);
+Test_N(q볧, q볧, q볧, q볧, q볧);
+Test_N(q볨, q볨, q볨, q볨, q볨);
+Test_N(q볩, q볩, q볩, q볩, q볩);
+Test_N(q볪, q볪, q볪, q볪, q볪);
+Test_N(q볫, q볫, q볫, q볫, q볫);
+Test_N(q볬, q볬, q볬, q볬, q볬);
+Test_N(q볭, q볭, q볭, q볭, q볭);
+Test_N(q볮, q볮, q볮, q볮, q볮);
+Test_N(q볯, q볯, q볯, q볯, q볯);
+Test_N(q볰, q볰, q볰, q볰, q볰);
+Test_N(q볱, q볱, q볱, q볱, q볱);
+Test_N(q볲, q볲, q볲, q볲, q볲);
+Test_N(q볳, q볳, q볳, q볳, q볳);
+Test_N(q보, q보, q보, q보, q보);
+Test_N(q복, q복, q복, q복, q복);
+Test_N(q볶, q볶, q볶, q볶, q볶);
+Test_N(q볷, q볷, q볷, q볷, q볷);
+Test_N(q본, q본, q본, q본, q본);
+Test_N(q볹, q볹, q볹, q볹, q볹);
+Test_N(q볺, q볺, q볺, q볺, q볺);
+Test_N(q볻, q볻, q볻, q볻, q볻);
+Test_N(q볼, q볼, q볼, q볼, q볼);
+Test_N(q볽, q볽, q볽, q볽, q볽);
+Test_N(q볾, q볾, q볾, q볾, q볾);
+Test_N(q볿, q볿, q볿, q볿, q볿);
+Test_N(q봀, q봀, q봀, q봀, q봀);
+Test_N(q봁, q봁, q봁, q봁, q봁);
+Test_N(q봂, q봂, q봂, q봂, q봂);
+Test_N(q봃, q봃, q봃, q봃, q봃);
+Test_N(q봄, q봄, q봄, q봄, q봄);
+Test_N(q봅, q봅, q봅, q봅, q봅);
+Test_N(q봆, q봆, q봆, q봆, q봆);
+Test_N(q봇, q봇, q봇, q봇, q봇);
+Test_N(q봈, q봈, q봈, q봈, q봈);
+Test_N(q봉, q봉, q봉, q봉, q봉);
+Test_N(q봊, q봊, q봊, q봊, q봊);
+Test_N(q봋, q봋, q봋, q봋, q봋);
+Test_N(q봌, q봌, q봌, q봌, q봌);
+Test_N(q봍, q봍, q봍, q봍, q봍);
+Test_N(q봎, q봎, q봎, q봎, q봎);
+Test_N(q봏, q봏, q봏, q봏, q봏);
+Test_N(q봐, q봐, q봐, q봐, q봐);
+Test_N(q봑, q봑, q봑, q봑, q봑);
+Test_N(q봒, q봒, q봒, q봒, q봒);
+Test_N(q봓, q봓, q봓, q봓, q봓);
+Test_N(q봔, q봔, q봔, q봔, q봔);
+Test_N(q봕, q봕, q봕, q봕, q봕);
+Test_N(q봖, q봖, q봖, q봖, q봖);
+Test_N(q봗, q봗, q봗, q봗, q봗);
+Test_N(q봘, q봘, q봘, q봘, q봘);
+Test_N(q봙, q봙, q봙, q봙, q봙);
+Test_N(q봚, q봚, q봚, q봚, q봚);
+Test_N(q봛, q봛, q봛, q봛, q봛);
+Test_N(q봜, q봜, q봜, q봜, q봜);
+Test_N(q봝, q봝, q봝, q봝, q봝);
+Test_N(q봞, q봞, q봞, q봞, q봞);
+Test_N(q봟, q봟, q봟, q봟, q봟);
+Test_N(q봠, q봠, q봠, q봠, q봠);
+Test_N(q봡, q봡, q봡, q봡, q봡);
+Test_N(q봢, q봢, q봢, q봢, q봢);
+Test_N(q봣, q봣, q봣, q봣, q봣);
+Test_N(q봤, q봤, q봤, q봤, q봤);
+Test_N(q봥, q봥, q봥, q봥, q봥);
+Test_N(q봦, q봦, q봦, q봦, q봦);
+Test_N(q봧, q봧, q봧, q봧, q봧);
+Test_N(q봨, q봨, q봨, q봨, q봨);
+Test_N(q봩, q봩, q봩, q봩, q봩);
+Test_N(q봪, q봪, q봪, q봪, q봪);
+Test_N(q봫, q봫, q봫, q봫, q봫);
+Test_N(q봬, q봬, q봬, q봬, q봬);
+Test_N(q봭, q봭, q봭, q봭, q봭);
+Test_N(q봮, q봮, q봮, q봮, q봮);
+Test_N(q봯, q봯, q봯, q봯, q봯);
+Test_N(q봰, q봰, q봰, q봰, q봰);
+Test_N(q봱, q봱, q봱, q봱, q봱);
+Test_N(q봲, q봲, q봲, q봲, q봲);
+Test_N(q봳, q봳, q봳, q봳, q봳);
+Test_N(q봴, q봴, q봴, q봴, q봴);
+Test_N(q봵, q봵, q봵, q봵, q봵);
+Test_N(q봶, q봶, q봶, q봶, q봶);
+Test_N(q봷, q봷, q봷, q봷, q봷);
+Test_N(q봸, q봸, q봸, q봸, q봸);
+Test_N(q봹, q봹, q봹, q봹, q봹);
+Test_N(q봺, q봺, q봺, q봺, q봺);
+Test_N(q봻, q봻, q봻, q봻, q봻);
+Test_N(q봼, q봼, q봼, q봼, q봼);
+Test_N(q봽, q봽, q봽, q봽, q봽);
+Test_N(q봾, q봾, q봾, q봾, q봾);
+Test_N(q봿, q봿, q봿, q봿, q봿);
+Test_N(q뵀, q뵀, q뵀, q뵀, q뵀);
+Test_N(q뵁, q뵁, q뵁, q뵁, q뵁);
+Test_N(q뵂, q뵂, q뵂, q뵂, q뵂);
+Test_N(q뵃, q뵃, q뵃, q뵃, q뵃);
+Test_N(q뵄, q뵄, q뵄, q뵄, q뵄);
+Test_N(q뵅, q뵅, q뵅, q뵅, q뵅);
+Test_N(q뵆, q뵆, q뵆, q뵆, q뵆);
+Test_N(q뵇, q뵇, q뵇, q뵇, q뵇);
+Test_N(q뵈, q뵈, q뵈, q뵈, q뵈);
+Test_N(q뵉, q뵉, q뵉, q뵉, q뵉);
+Test_N(q뵊, q뵊, q뵊, q뵊, q뵊);
+Test_N(q뵋, q뵋, q뵋, q뵋, q뵋);
+Test_N(q뵌, q뵌, q뵌, q뵌, q뵌);
+Test_N(q뵍, q뵍, q뵍, q뵍, q뵍);
+Test_N(q뵎, q뵎, q뵎, q뵎, q뵎);
+Test_N(q뵏, q뵏, q뵏, q뵏, q뵏);
+Test_N(q뵐, q뵐, q뵐, q뵐, q뵐);
+Test_N(q뵑, q뵑, q뵑, q뵑, q뵑);
+Test_N(q뵒, q뵒, q뵒, q뵒, q뵒);
+Test_N(q뵓, q뵓, q뵓, q뵓, q뵓);
+Test_N(q뵔, q뵔, q뵔, q뵔, q뵔);
+Test_N(q뵕, q뵕, q뵕, q뵕, q뵕);
+Test_N(q뵖, q뵖, q뵖, q뵖, q뵖);
+Test_N(q뵗, q뵗, q뵗, q뵗, q뵗);
+Test_N(q뵘, q뵘, q뵘, q뵘, q뵘);
+Test_N(q뵙, q뵙, q뵙, q뵙, q뵙);
+Test_N(q뵚, q뵚, q뵚, q뵚, q뵚);
+Test_N(q뵛, q뵛, q뵛, q뵛, q뵛);
+Test_N(q뵜, q뵜, q뵜, q뵜, q뵜);
+Test_N(q뵝, q뵝, q뵝, q뵝, q뵝);
+Test_N(q뵞, q뵞, q뵞, q뵞, q뵞);
+Test_N(q뵟, q뵟, q뵟, q뵟, q뵟);
+Test_N(q뵠, q뵠, q뵠, q뵠, q뵠);
+Test_N(q뵡, q뵡, q뵡, q뵡, q뵡);
+Test_N(q뵢, q뵢, q뵢, q뵢, q뵢);
+Test_N(q뵣, q뵣, q뵣, q뵣, q뵣);
+Test_N(q뵤, q뵤, q뵤, q뵤, q뵤);
+Test_N(q뵥, q뵥, q뵥, q뵥, q뵥);
+Test_N(q뵦, q뵦, q뵦, q뵦, q뵦);
+Test_N(q뵧, q뵧, q뵧, q뵧, q뵧);
+Test_N(q뵨, q뵨, q뵨, q뵨, q뵨);
+Test_N(q뵩, q뵩, q뵩, q뵩, q뵩);
+Test_N(q뵪, q뵪, q뵪, q뵪, q뵪);
+Test_N(q뵫, q뵫, q뵫, q뵫, q뵫);
+Test_N(q뵬, q뵬, q뵬, q뵬, q뵬);
+Test_N(q뵭, q뵭, q뵭, q뵭, q뵭);
+Test_N(q뵮, q뵮, q뵮, q뵮, q뵮);
+Test_N(q뵯, q뵯, q뵯, q뵯, q뵯);
+Test_N(q뵰, q뵰, q뵰, q뵰, q뵰);
+Test_N(q뵱, q뵱, q뵱, q뵱, q뵱);
+Test_N(q뵲, q뵲, q뵲, q뵲, q뵲);
+Test_N(q뵳, q뵳, q뵳, q뵳, q뵳);
+Test_N(q뵴, q뵴, q뵴, q뵴, q뵴);
+Test_N(q뵵, q뵵, q뵵, q뵵, q뵵);
+Test_N(q뵶, q뵶, q뵶, q뵶, q뵶);
+Test_N(q뵷, q뵷, q뵷, q뵷, q뵷);
+Test_N(q뵸, q뵸, q뵸, q뵸, q뵸);
+Test_N(q뵹, q뵹, q뵹, q뵹, q뵹);
+Test_N(q뵺, q뵺, q뵺, q뵺, q뵺);
+Test_N(q뵻, q뵻, q뵻, q뵻, q뵻);
+Test_N(q뵼, q뵼, q뵼, q뵼, q뵼);
+Test_N(q뵽, q뵽, q뵽, q뵽, q뵽);
+Test_N(q뵾, q뵾, q뵾, q뵾, q뵾);
+Test_N(q뵿, q뵿, q뵿, q뵿, q뵿);
+Test_N(q부, q부, q부, q부, q부);
+Test_N(q북, q북, q북, q북, q북);
+Test_N(q붂, q붂, q붂, q붂, q붂);
+Test_N(q붃, q붃, q붃, q붃, q붃);
+Test_N(q분, q분, q분, q분, q분);
+Test_N(q붅, q붅, q붅, q붅, q붅);
+Test_N(q붆, q붆, q붆, q붆, q붆);
+Test_N(q붇, q붇, q붇, q붇, q붇);
+Test_N(q불, q불, q불, q불, q불);
+Test_N(q붉, q붉, q붉, q붉, q붉);
+Test_N(q붊, q붊, q붊, q붊, q붊);
+Test_N(q붋, q붋, q붋, q붋, q붋);
+Test_N(q붌, q붌, q붌, q붌, q붌);
+Test_N(q붍, q붍, q붍, q붍, q붍);
+Test_N(q붎, q붎, q붎, q붎, q붎);
+Test_N(q붏, q붏, q붏, q붏, q붏);
+Test_N(q붐, q붐, q붐, q붐, q붐);
+Test_N(q붑, q붑, q붑, q붑, q붑);
+Test_N(q붒, q붒, q붒, q붒, q붒);
+Test_N(q붓, q붓, q붓, q붓, q붓);
+Test_N(q붔, q붔, q붔, q붔, q붔);
+Test_N(q붕, q붕, q붕, q붕, q붕);
+Test_N(q붖, q붖, q붖, q붖, q붖);
+Test_N(q붗, q붗, q붗, q붗, q붗);
+Test_N(q붘, q붘, q붘, q붘, q붘);
+Test_N(q붙, q붙, q붙, q붙, q붙);
+Test_N(q붚, q붚, q붚, q붚, q붚);
+Test_N(q붛, q붛, q붛, q붛, q붛);
+Test_N(q붜, q붜, q붜, q붜, q붜);
+Test_N(q붝, q붝, q붝, q붝, q붝);
+Test_N(q붞, q붞, q붞, q붞, q붞);
+Test_N(q붟, q붟, q붟, q붟, q붟);
+Test_N(q붠, q붠, q붠, q붠, q붠);
+Test_N(q붡, q붡, q붡, q붡, q붡);
+Test_N(q붢, q붢, q붢, q붢, q붢);
+Test_N(q붣, q붣, q붣, q붣, q붣);
+Test_N(q붤, q붤, q붤, q붤, q붤);
+Test_N(q붥, q붥, q붥, q붥, q붥);
+Test_N(q붦, q붦, q붦, q붦, q붦);
+Test_N(q붧, q붧, q붧, q붧, q붧);
+Test_N(q붨, q붨, q붨, q붨, q붨);
+Test_N(q붩, q붩, q붩, q붩, q붩);
+Test_N(q붪, q붪, q붪, q붪, q붪);
+Test_N(q붫, q붫, q붫, q붫, q붫);
+Test_N(q붬, q붬, q붬, q붬, q붬);
+Test_N(q붭, q붭, q붭, q붭, q붭);
+Test_N(q붮, q붮, q붮, q붮, q붮);
+Test_N(q붯, q붯, q붯, q붯, q붯);
+Test_N(q붰, q붰, q붰, q붰, q붰);
+Test_N(q붱, q붱, q붱, q붱, q붱);
+Test_N(q붲, q붲, q붲, q붲, q붲);
+Test_N(q붳, q붳, q붳, q붳, q붳);
+Test_N(q붴, q붴, q붴, q붴, q붴);
+Test_N(q붵, q붵, q붵, q붵, q붵);
+Test_N(q붶, q붶, q붶, q붶, q붶);
+Test_N(q붷, q붷, q붷, q붷, q붷);
+Test_N(q붸, q붸, q붸, q붸, q붸);
+Test_N(q붹, q붹, q붹, q붹, q붹);
+Test_N(q붺, q붺, q붺, q붺, q붺);
+Test_N(q붻, q붻, q붻, q붻, q붻);
+Test_N(q붼, q붼, q붼, q붼, q붼);
+Test_N(q붽, q붽, q붽, q붽, q붽);
+Test_N(q붾, q붾, q붾, q붾, q붾);
+Test_N(q붿, q붿, q붿, q붿, q붿);
+Test_N(q뷀, q뷀, q뷀, q뷀, q뷀);
+Test_N(q뷁, q뷁, q뷁, q뷁, q뷁);
+Test_N(q뷂, q뷂, q뷂, q뷂, q뷂);
+Test_N(q뷃, q뷃, q뷃, q뷃, q뷃);
+Test_N(q뷄, q뷄, q뷄, q뷄, q뷄);
+Test_N(q뷅, q뷅, q뷅, q뷅, q뷅);
+Test_N(q뷆, q뷆, q뷆, q뷆, q뷆);
+Test_N(q뷇, q뷇, q뷇, q뷇, q뷇);
+Test_N(q뷈, q뷈, q뷈, q뷈, q뷈);
+Test_N(q뷉, q뷉, q뷉, q뷉, q뷉);
+Test_N(q뷊, q뷊, q뷊, q뷊, q뷊);
+Test_N(q뷋, q뷋, q뷋, q뷋, q뷋);
+Test_N(q뷌, q뷌, q뷌, q뷌, q뷌);
+Test_N(q뷍, q뷍, q뷍, q뷍, q뷍);
+Test_N(q뷎, q뷎, q뷎, q뷎, q뷎);
+Test_N(q뷏, q뷏, q뷏, q뷏, q뷏);
+Test_N(q뷐, q뷐, q뷐, q뷐, q뷐);
+Test_N(q뷑, q뷑, q뷑, q뷑, q뷑);
+Test_N(q뷒, q뷒, q뷒, q뷒, q뷒);
+Test_N(q뷓, q뷓, q뷓, q뷓, q뷓);
+Test_N(q뷔, q뷔, q뷔, q뷔, q뷔);
+Test_N(q뷕, q뷕, q뷕, q뷕, q뷕);
+Test_N(q뷖, q뷖, q뷖, q뷖, q뷖);
+Test_N(q뷗, q뷗, q뷗, q뷗, q뷗);
+Test_N(q뷘, q뷘, q뷘, q뷘, q뷘);
+Test_N(q뷙, q뷙, q뷙, q뷙, q뷙);
+Test_N(q뷚, q뷚, q뷚, q뷚, q뷚);
+Test_N(q뷛, q뷛, q뷛, q뷛, q뷛);
+Test_N(q뷜, q뷜, q뷜, q뷜, q뷜);
+Test_N(q뷝, q뷝, q뷝, q뷝, q뷝);
+Test_N(q뷞, q뷞, q뷞, q뷞, q뷞);
+Test_N(q뷟, q뷟, q뷟, q뷟, q뷟);
+Test_N(q뷠, q뷠, q뷠, q뷠, q뷠);
+Test_N(q뷡, q뷡, q뷡, q뷡, q뷡);
+Test_N(q뷢, q뷢, q뷢, q뷢, q뷢);
+Test_N(q뷣, q뷣, q뷣, q뷣, q뷣);
+Test_N(q뷤, q뷤, q뷤, q뷤, q뷤);
+Test_N(q뷥, q뷥, q뷥, q뷥, q뷥);
+Test_N(q뷦, q뷦, q뷦, q뷦, q뷦);
+Test_N(q뷧, q뷧, q뷧, q뷧, q뷧);
+Test_N(q뷨, q뷨, q뷨, q뷨, q뷨);
+Test_N(q뷩, q뷩, q뷩, q뷩, q뷩);
+Test_N(q뷪, q뷪, q뷪, q뷪, q뷪);
+Test_N(q뷫, q뷫, q뷫, q뷫, q뷫);
+Test_N(q뷬, q뷬, q뷬, q뷬, q뷬);
+Test_N(q뷭, q뷭, q뷭, q뷭, q뷭);
+Test_N(q뷮, q뷮, q뷮, q뷮, q뷮);
+Test_N(q뷯, q뷯, q뷯, q뷯, q뷯);
+Test_N(q뷰, q뷰, q뷰, q뷰, q뷰);
+Test_N(q뷱, q뷱, q뷱, q뷱, q뷱);
+Test_N(q뷲, q뷲, q뷲, q뷲, q뷲);
+Test_N(q뷳, q뷳, q뷳, q뷳, q뷳);
+Test_N(q뷴, q뷴, q뷴, q뷴, q뷴);
+Test_N(q뷵, q뷵, q뷵, q뷵, q뷵);
+Test_N(q뷶, q뷶, q뷶, q뷶, q뷶);
+Test_N(q뷷, q뷷, q뷷, q뷷, q뷷);
+Test_N(q뷸, q뷸, q뷸, q뷸, q뷸);
+Test_N(q뷹, q뷹, q뷹, q뷹, q뷹);
+Test_N(q뷺, q뷺, q뷺, q뷺, q뷺);
+Test_N(q뷻, q뷻, q뷻, q뷻, q뷻);
+Test_N(q뷼, q뷼, q뷼, q뷼, q뷼);
+Test_N(q뷽, q뷽, q뷽, q뷽, q뷽);
+Test_N(q뷾, q뷾, q뷾, q뷾, q뷾);
+Test_N(q뷿, q뷿, q뷿, q뷿, q뷿);
+Test_N(q븀, q븀, q븀, q븀, q븀);
+Test_N(q븁, q븁, q븁, q븁, q븁);
+Test_N(q븂, q븂, q븂, q븂, q븂);
+Test_N(q븃, q븃, q븃, q븃, q븃);
+Test_N(q븄, q븄, q븄, q븄, q븄);
+Test_N(q븅, q븅, q븅, q븅, q븅);
+Test_N(q븆, q븆, q븆, q븆, q븆);
+Test_N(q븇, q븇, q븇, q븇, q븇);
+Test_N(q븈, q븈, q븈, q븈, q븈);
+Test_N(q븉, q븉, q븉, q븉, q븉);
+Test_N(q븊, q븊, q븊, q븊, q븊);
+Test_N(q븋, q븋, q븋, q븋, q븋);
+Test_N(q브, q브, q브, q브, q브);
+Test_N(q븍, q븍, q븍, q븍, q븍);
+Test_N(q븎, q븎, q븎, q븎, q븎);
+Test_N(q븏, q븏, q븏, q븏, q븏);
+Test_N(q븐, q븐, q븐, q븐, q븐);
+Test_N(q븑, q븑, q븑, q븑, q븑);
+Test_N(q븒, q븒, q븒, q븒, q븒);
+Test_N(q븓, q븓, q븓, q븓, q븓);
+Test_N(q블, q블, q블, q블, q블);
+Test_N(q븕, q븕, q븕, q븕, q븕);
+Test_N(q븖, q븖, q븖, q븖, q븖);
+Test_N(q븗, q븗, q븗, q븗, q븗);
+Test_N(q븘, q븘, q븘, q븘, q븘);
+Test_N(q븙, q븙, q븙, q븙, q븙);
+Test_N(q븚, q븚, q븚, q븚, q븚);
+Test_N(q븛, q븛, q븛, q븛, q븛);
+Test_N(q븜, q븜, q븜, q븜, q븜);
+Test_N(q븝, q븝, q븝, q븝, q븝);
+Test_N(q븞, q븞, q븞, q븞, q븞);
+Test_N(q븟, q븟, q븟, q븟, q븟);
+Test_N(q븠, q븠, q븠, q븠, q븠);
+Test_N(q븡, q븡, q븡, q븡, q븡);
+Test_N(q븢, q븢, q븢, q븢, q븢);
+Test_N(q븣, q븣, q븣, q븣, q븣);
+Test_N(q븤, q븤, q븤, q븤, q븤);
+Test_N(q븥, q븥, q븥, q븥, q븥);
+Test_N(q븦, q븦, q븦, q븦, q븦);
+Test_N(q븧, q븧, q븧, q븧, q븧);
+Test_N(q븨, q븨, q븨, q븨, q븨);
+Test_N(q븩, q븩, q븩, q븩, q븩);
+Test_N(q븪, q븪, q븪, q븪, q븪);
+Test_N(q븫, q븫, q븫, q븫, q븫);
+Test_N(q븬, q븬, q븬, q븬, q븬);
+Test_N(q븭, q븭, q븭, q븭, q븭);
+Test_N(q븮, q븮, q븮, q븮, q븮);
+Test_N(q븯, q븯, q븯, q븯, q븯);
+Test_N(q븰, q븰, q븰, q븰, q븰);
+Test_N(q븱, q븱, q븱, q븱, q븱);
+Test_N(q븲, q븲, q븲, q븲, q븲);
+Test_N(q븳, q븳, q븳, q븳, q븳);
+Test_N(q븴, q븴, q븴, q븴, q븴);
+Test_N(q븵, q븵, q븵, q븵, q븵);
+Test_N(q븶, q븶, q븶, q븶, q븶);
+Test_N(q븷, q븷, q븷, q븷, q븷);
+Test_N(q븸, q븸, q븸, q븸, q븸);
+Test_N(q븹, q븹, q븹, q븹, q븹);
+Test_N(q븺, q븺, q븺, q븺, q븺);
+Test_N(q븻, q븻, q븻, q븻, q븻);
+Test_N(q븼, q븼, q븼, q븼, q븼);
+Test_N(q븽, q븽, q븽, q븽, q븽);
+Test_N(q븾, q븾, q븾, q븾, q븾);
+Test_N(q븿, q븿, q븿, q븿, q븿);
+Test_N(q빀, q빀, q빀, q빀, q빀);
+Test_N(q빁, q빁, q빁, q빁, q빁);
+Test_N(q빂, q빂, q빂, q빂, q빂);
+Test_N(q빃, q빃, q빃, q빃, q빃);
+Test_N(q비, q비, q비, q비, q비);
+Test_N(q빅, q빅, q빅, q빅, q빅);
+Test_N(q빆, q빆, q빆, q빆, q빆);
+Test_N(q빇, q빇, q빇, q빇, q빇);
+Test_N(q빈, q빈, q빈, q빈, q빈);
+Test_N(q빉, q빉, q빉, q빉, q빉);
+Test_N(q빊, q빊, q빊, q빊, q빊);
+Test_N(q빋, q빋, q빋, q빋, q빋);
+Test_N(q빌, q빌, q빌, q빌, q빌);
+Test_N(q빍, q빍, q빍, q빍, q빍);
+Test_N(q빎, q빎, q빎, q빎, q빎);
+Test_N(q빏, q빏, q빏, q빏, q빏);
+Test_N(q빐, q빐, q빐, q빐, q빐);
+Test_N(q빑, q빑, q빑, q빑, q빑);
+Test_N(q빒, q빒, q빒, q빒, q빒);
+Test_N(q빓, q빓, q빓, q빓, q빓);
+Test_N(q빔, q빔, q빔, q빔, q빔);
+Test_N(q빕, q빕, q빕, q빕, q빕);
+Test_N(q빖, q빖, q빖, q빖, q빖);
+Test_N(q빗, q빗, q빗, q빗, q빗);
+Test_N(q빘, q빘, q빘, q빘, q빘);
+Test_N(q빙, q빙, q빙, q빙, q빙);
+Test_N(q빚, q빚, q빚, q빚, q빚);
+Test_N(q빛, q빛, q빛, q빛, q빛);
+Test_N(q빜, q빜, q빜, q빜, q빜);
+Test_N(q빝, q빝, q빝, q빝, q빝);
+Test_N(q빞, q빞, q빞, q빞, q빞);
+Test_N(q빟, q빟, q빟, q빟, q빟);
+Test_N(q빠, q빠, q빠, q빠, q빠);
+Test_N(q빡, q빡, q빡, q빡, q빡);
+Test_N(q빢, q빢, q빢, q빢, q빢);
+Test_N(q빣, q빣, q빣, q빣, q빣);
+Test_N(q빤, q빤, q빤, q빤, q빤);
+Test_N(q빥, q빥, q빥, q빥, q빥);
+Test_N(q빦, q빦, q빦, q빦, q빦);
+Test_N(q빧, q빧, q빧, q빧, q빧);
+Test_N(q빨, q빨, q빨, q빨, q빨);
+Test_N(q빩, q빩, q빩, q빩, q빩);
+Test_N(q빪, q빪, q빪, q빪, q빪);
+Test_N(q빫, q빫, q빫, q빫, q빫);
+Test_N(q빬, q빬, q빬, q빬, q빬);
+Test_N(q빭, q빭, q빭, q빭, q빭);
+Test_N(q빮, q빮, q빮, q빮, q빮);
+Test_N(q빯, q빯, q빯, q빯, q빯);
+Test_N(q빰, q빰, q빰, q빰, q빰);
+Test_N(q빱, q빱, q빱, q빱, q빱);
+Test_N(q빲, q빲, q빲, q빲, q빲);
+Test_N(q빳, q빳, q빳, q빳, q빳);
+Test_N(q빴, q빴, q빴, q빴, q빴);
+Test_N(q빵, q빵, q빵, q빵, q빵);
+Test_N(q빶, q빶, q빶, q빶, q빶);
+Test_N(q빷, q빷, q빷, q빷, q빷);
+Test_N(q빸, q빸, q빸, q빸, q빸);
+Test_N(q빹, q빹, q빹, q빹, q빹);
+Test_N(q빺, q빺, q빺, q빺, q빺);
+Test_N(q빻, q빻, q빻, q빻, q빻);
+Test_N(q빼, q빼, q빼, q빼, q빼);
+Test_N(q빽, q빽, q빽, q빽, q빽);
+Test_N(q빾, q빾, q빾, q빾, q빾);
+Test_N(q빿, q빿, q빿, q빿, q빿);
+Test_N(q뺀, q뺀, q뺀, q뺀, q뺀);
+Test_N(q뺁, q뺁, q뺁, q뺁, q뺁);
+Test_N(q뺂, q뺂, q뺂, q뺂, q뺂);
+Test_N(q뺃, q뺃, q뺃, q뺃, q뺃);
+Test_N(q뺄, q뺄, q뺄, q뺄, q뺄);
+Test_N(q뺅, q뺅, q뺅, q뺅, q뺅);
+Test_N(q뺆, q뺆, q뺆, q뺆, q뺆);
+Test_N(q뺇, q뺇, q뺇, q뺇, q뺇);
+Test_N(q뺈, q뺈, q뺈, q뺈, q뺈);
+Test_N(q뺉, q뺉, q뺉, q뺉, q뺉);
+Test_N(q뺊, q뺊, q뺊, q뺊, q뺊);
+Test_N(q뺋, q뺋, q뺋, q뺋, q뺋);
+Test_N(q뺌, q뺌, q뺌, q뺌, q뺌);
+Test_N(q뺍, q뺍, q뺍, q뺍, q뺍);
+Test_N(q뺎, q뺎, q뺎, q뺎, q뺎);
+Test_N(q뺏, q뺏, q뺏, q뺏, q뺏);
+Test_N(q뺐, q뺐, q뺐, q뺐, q뺐);
+Test_N(q뺑, q뺑, q뺑, q뺑, q뺑);
+Test_N(q뺒, q뺒, q뺒, q뺒, q뺒);
+Test_N(q뺓, q뺓, q뺓, q뺓, q뺓);
+Test_N(q뺔, q뺔, q뺔, q뺔, q뺔);
+Test_N(q뺕, q뺕, q뺕, q뺕, q뺕);
+Test_N(q뺖, q뺖, q뺖, q뺖, q뺖);
+Test_N(q뺗, q뺗, q뺗, q뺗, q뺗);
+Test_N(q뺘, q뺘, q뺘, q뺘, q뺘);
+Test_N(q뺙, q뺙, q뺙, q뺙, q뺙);
+Test_N(q뺚, q뺚, q뺚, q뺚, q뺚);
+Test_N(q뺛, q뺛, q뺛, q뺛, q뺛);
+Test_N(q뺜, q뺜, q뺜, q뺜, q뺜);
+Test_N(q뺝, q뺝, q뺝, q뺝, q뺝);
+Test_N(q뺞, q뺞, q뺞, q뺞, q뺞);
+Test_N(q뺟, q뺟, q뺟, q뺟, q뺟);
+Test_N(q뺠, q뺠, q뺠, q뺠, q뺠);
+Test_N(q뺡, q뺡, q뺡, q뺡, q뺡);
+Test_N(q뺢, q뺢, q뺢, q뺢, q뺢);
+Test_N(q뺣, q뺣, q뺣, q뺣, q뺣);
+Test_N(q뺤, q뺤, q뺤, q뺤, q뺤);
+Test_N(q뺥, q뺥, q뺥, q뺥, q뺥);
+Test_N(q뺦, q뺦, q뺦, q뺦, q뺦);
+Test_N(q뺧, q뺧, q뺧, q뺧, q뺧);
+Test_N(q뺨, q뺨, q뺨, q뺨, q뺨);
+Test_N(q뺩, q뺩, q뺩, q뺩, q뺩);
+Test_N(q뺪, q뺪, q뺪, q뺪, q뺪);
+Test_N(q뺫, q뺫, q뺫, q뺫, q뺫);
+Test_N(q뺬, q뺬, q뺬, q뺬, q뺬);
+Test_N(q뺭, q뺭, q뺭, q뺭, q뺭);
+Test_N(q뺮, q뺮, q뺮, q뺮, q뺮);
+Test_N(q뺯, q뺯, q뺯, q뺯, q뺯);
+Test_N(q뺰, q뺰, q뺰, q뺰, q뺰);
+Test_N(q뺱, q뺱, q뺱, q뺱, q뺱);
+Test_N(q뺲, q뺲, q뺲, q뺲, q뺲);
+Test_N(q뺳, q뺳, q뺳, q뺳, q뺳);
+Test_N(q뺴, q뺴, q뺴, q뺴, q뺴);
+Test_N(q뺵, q뺵, q뺵, q뺵, q뺵);
+Test_N(q뺶, q뺶, q뺶, q뺶, q뺶);
+Test_N(q뺷, q뺷, q뺷, q뺷, q뺷);
+Test_N(q뺸, q뺸, q뺸, q뺸, q뺸);
+Test_N(q뺹, q뺹, q뺹, q뺹, q뺹);
+Test_N(q뺺, q뺺, q뺺, q뺺, q뺺);
+Test_N(q뺻, q뺻, q뺻, q뺻, q뺻);
+Test_N(q뺼, q뺼, q뺼, q뺼, q뺼);
+Test_N(q뺽, q뺽, q뺽, q뺽, q뺽);
+Test_N(q뺾, q뺾, q뺾, q뺾, q뺾);
+Test_N(q뺿, q뺿, q뺿, q뺿, q뺿);
+Test_N(q뻀, q뻀, q뻀, q뻀, q뻀);
+Test_N(q뻁, q뻁, q뻁, q뻁, q뻁);
+Test_N(q뻂, q뻂, q뻂, q뻂, q뻂);
+Test_N(q뻃, q뻃, q뻃, q뻃, q뻃);
+Test_N(q뻄, q뻄, q뻄, q뻄, q뻄);
+Test_N(q뻅, q뻅, q뻅, q뻅, q뻅);
+Test_N(q뻆, q뻆, q뻆, q뻆, q뻆);
+Test_N(q뻇, q뻇, q뻇, q뻇, q뻇);
+Test_N(q뻈, q뻈, q뻈, q뻈, q뻈);
+Test_N(q뻉, q뻉, q뻉, q뻉, q뻉);
+Test_N(q뻊, q뻊, q뻊, q뻊, q뻊);
+Test_N(q뻋, q뻋, q뻋, q뻋, q뻋);
+Test_N(q뻌, q뻌, q뻌, q뻌, q뻌);
+Test_N(q뻍, q뻍, q뻍, q뻍, q뻍);
+Test_N(q뻎, q뻎, q뻎, q뻎, q뻎);
+Test_N(q뻏, q뻏, q뻏, q뻏, q뻏);
+Test_N(q뻐, q뻐, q뻐, q뻐, q뻐);
+Test_N(q뻑, q뻑, q뻑, q뻑, q뻑);
+Test_N(q뻒, q뻒, q뻒, q뻒, q뻒);
+Test_N(q뻓, q뻓, q뻓, q뻓, q뻓);
+Test_N(q뻔, q뻔, q뻔, q뻔, q뻔);
+Test_N(q뻕, q뻕, q뻕, q뻕, q뻕);
+Test_N(q뻖, q뻖, q뻖, q뻖, q뻖);
+Test_N(q뻗, q뻗, q뻗, q뻗, q뻗);
+Test_N(q뻘, q뻘, q뻘, q뻘, q뻘);
+Test_N(q뻙, q뻙, q뻙, q뻙, q뻙);
+Test_N(q뻚, q뻚, q뻚, q뻚, q뻚);
+Test_N(q뻛, q뻛, q뻛, q뻛, q뻛);
+Test_N(q뻜, q뻜, q뻜, q뻜, q뻜);
+Test_N(q뻝, q뻝, q뻝, q뻝, q뻝);
+Test_N(q뻞, q뻞, q뻞, q뻞, q뻞);
+Test_N(q뻟, q뻟, q뻟, q뻟, q뻟);
+Test_N(q뻠, q뻠, q뻠, q뻠, q뻠);
+Test_N(q뻡, q뻡, q뻡, q뻡, q뻡);
+Test_N(q뻢, q뻢, q뻢, q뻢, q뻢);
+Test_N(q뻣, q뻣, q뻣, q뻣, q뻣);
+Test_N(q뻤, q뻤, q뻤, q뻤, q뻤);
+Test_N(q뻥, q뻥, q뻥, q뻥, q뻥);
+Test_N(q뻦, q뻦, q뻦, q뻦, q뻦);
+Test_N(q뻧, q뻧, q뻧, q뻧, q뻧);
+Test_N(q뻨, q뻨, q뻨, q뻨, q뻨);
+Test_N(q뻩, q뻩, q뻩, q뻩, q뻩);
+Test_N(q뻪, q뻪, q뻪, q뻪, q뻪);
+Test_N(q뻫, q뻫, q뻫, q뻫, q뻫);
+Test_N(q뻬, q뻬, q뻬, q뻬, q뻬);
+Test_N(q뻭, q뻭, q뻭, q뻭, q뻭);
+Test_N(q뻮, q뻮, q뻮, q뻮, q뻮);
+Test_N(q뻯, q뻯, q뻯, q뻯, q뻯);
+Test_N(q뻰, q뻰, q뻰, q뻰, q뻰);
+Test_N(q뻱, q뻱, q뻱, q뻱, q뻱);
+Test_N(q뻲, q뻲, q뻲, q뻲, q뻲);
+Test_N(q뻳, q뻳, q뻳, q뻳, q뻳);
+Test_N(q뻴, q뻴, q뻴, q뻴, q뻴);
+Test_N(q뻵, q뻵, q뻵, q뻵, q뻵);
+Test_N(q뻶, q뻶, q뻶, q뻶, q뻶);
+Test_N(q뻷, q뻷, q뻷, q뻷, q뻷);
+Test_N(q뻸, q뻸, q뻸, q뻸, q뻸);
+Test_N(q뻹, q뻹, q뻹, q뻹, q뻹);
+Test_N(q뻺, q뻺, q뻺, q뻺, q뻺);
+Test_N(q뻻, q뻻, q뻻, q뻻, q뻻);
+Test_N(q뻼, q뻼, q뻼, q뻼, q뻼);
+Test_N(q뻽, q뻽, q뻽, q뻽, q뻽);
+Test_N(q뻾, q뻾, q뻾, q뻾, q뻾);
+Test_N(q뻿, q뻿, q뻿, q뻿, q뻿);
+Test_N(q뼀, q뼀, q뼀, q뼀, q뼀);
+Test_N(q뼁, q뼁, q뼁, q뼁, q뼁);
+Test_N(q뼂, q뼂, q뼂, q뼂, q뼂);
+Test_N(q뼃, q뼃, q뼃, q뼃, q뼃);
+Test_N(q뼄, q뼄, q뼄, q뼄, q뼄);
+Test_N(q뼅, q뼅, q뼅, q뼅, q뼅);
+Test_N(q뼆, q뼆, q뼆, q뼆, q뼆);
+Test_N(q뼇, q뼇, q뼇, q뼇, q뼇);
+Test_N(q뼈, q뼈, q뼈, q뼈, q뼈);
+Test_N(q뼉, q뼉, q뼉, q뼉, q뼉);
+Test_N(q뼊, q뼊, q뼊, q뼊, q뼊);
+Test_N(q뼋, q뼋, q뼋, q뼋, q뼋);
+Test_N(q뼌, q뼌, q뼌, q뼌, q뼌);
+Test_N(q뼍, q뼍, q뼍, q뼍, q뼍);
+Test_N(q뼎, q뼎, q뼎, q뼎, q뼎);
+Test_N(q뼏, q뼏, q뼏, q뼏, q뼏);
+Test_N(q뼐, q뼐, q뼐, q뼐, q뼐);
+Test_N(q뼑, q뼑, q뼑, q뼑, q뼑);
+Test_N(q뼒, q뼒, q뼒, q뼒, q뼒);
+Test_N(q뼓, q뼓, q뼓, q뼓, q뼓);
+Test_N(q뼔, q뼔, q뼔, q뼔, q뼔);
+Test_N(q뼕, q뼕, q뼕, q뼕, q뼕);
+Test_N(q뼖, q뼖, q뼖, q뼖, q뼖);
+Test_N(q뼗, q뼗, q뼗, q뼗, q뼗);
+Test_N(q뼘, q뼘, q뼘, q뼘, q뼘);
+Test_N(q뼙, q뼙, q뼙, q뼙, q뼙);
+Test_N(q뼚, q뼚, q뼚, q뼚, q뼚);
+Test_N(q뼛, q뼛, q뼛, q뼛, q뼛);
+Test_N(q뼜, q뼜, q뼜, q뼜, q뼜);
+Test_N(q뼝, q뼝, q뼝, q뼝, q뼝);
+Test_N(q뼞, q뼞, q뼞, q뼞, q뼞);
+Test_N(q뼟, q뼟, q뼟, q뼟, q뼟);
+Test_N(q뼠, q뼠, q뼠, q뼠, q뼠);
+Test_N(q뼡, q뼡, q뼡, q뼡, q뼡);
+Test_N(q뼢, q뼢, q뼢, q뼢, q뼢);
+Test_N(q뼣, q뼣, q뼣, q뼣, q뼣);
+Test_N(q뼤, q뼤, q뼤, q뼤, q뼤);
+Test_N(q뼥, q뼥, q뼥, q뼥, q뼥);
+Test_N(q뼦, q뼦, q뼦, q뼦, q뼦);
+Test_N(q뼧, q뼧, q뼧, q뼧, q뼧);
+Test_N(q뼨, q뼨, q뼨, q뼨, q뼨);
+Test_N(q뼩, q뼩, q뼩, q뼩, q뼩);
+Test_N(q뼪, q뼪, q뼪, q뼪, q뼪);
+Test_N(q뼫, q뼫, q뼫, q뼫, q뼫);
+Test_N(q뼬, q뼬, q뼬, q뼬, q뼬);
+Test_N(q뼭, q뼭, q뼭, q뼭, q뼭);
+Test_N(q뼮, q뼮, q뼮, q뼮, q뼮);
+Test_N(q뼯, q뼯, q뼯, q뼯, q뼯);
+Test_N(q뼰, q뼰, q뼰, q뼰, q뼰);
+Test_N(q뼱, q뼱, q뼱, q뼱, q뼱);
+Test_N(q뼲, q뼲, q뼲, q뼲, q뼲);
+Test_N(q뼳, q뼳, q뼳, q뼳, q뼳);
+Test_N(q뼴, q뼴, q뼴, q뼴, q뼴);
+Test_N(q뼵, q뼵, q뼵, q뼵, q뼵);
+Test_N(q뼶, q뼶, q뼶, q뼶, q뼶);
+Test_N(q뼷, q뼷, q뼷, q뼷, q뼷);
+Test_N(q뼸, q뼸, q뼸, q뼸, q뼸);
+Test_N(q뼹, q뼹, q뼹, q뼹, q뼹);
+Test_N(q뼺, q뼺, q뼺, q뼺, q뼺);
+Test_N(q뼻, q뼻, q뼻, q뼻, q뼻);
+Test_N(q뼼, q뼼, q뼼, q뼼, q뼼);
+Test_N(q뼽, q뼽, q뼽, q뼽, q뼽);
+Test_N(q뼾, q뼾, q뼾, q뼾, q뼾);
+Test_N(q뼿, q뼿, q뼿, q뼿, q뼿);
+Test_N(q뽀, q뽀, q뽀, q뽀, q뽀);
+Test_N(q뽁, q뽁, q뽁, q뽁, q뽁);
+Test_N(q뽂, q뽂, q뽂, q뽂, q뽂);
+Test_N(q뽃, q뽃, q뽃, q뽃, q뽃);
+Test_N(q뽄, q뽄, q뽄, q뽄, q뽄);
+Test_N(q뽅, q뽅, q뽅, q뽅, q뽅);
+Test_N(q뽆, q뽆, q뽆, q뽆, q뽆);
+Test_N(q뽇, q뽇, q뽇, q뽇, q뽇);
+Test_N(q뽈, q뽈, q뽈, q뽈, q뽈);
+Test_N(q뽉, q뽉, q뽉, q뽉, q뽉);
+Test_N(q뽊, q뽊, q뽊, q뽊, q뽊);
+Test_N(q뽋, q뽋, q뽋, q뽋, q뽋);
+Test_N(q뽌, q뽌, q뽌, q뽌, q뽌);
+Test_N(q뽍, q뽍, q뽍, q뽍, q뽍);
+Test_N(q뽎, q뽎, q뽎, q뽎, q뽎);
+Test_N(q뽏, q뽏, q뽏, q뽏, q뽏);
+Test_N(q뽐, q뽐, q뽐, q뽐, q뽐);
+Test_N(q뽑, q뽑, q뽑, q뽑, q뽑);
+Test_N(q뽒, q뽒, q뽒, q뽒, q뽒);
+Test_N(q뽓, q뽓, q뽓, q뽓, q뽓);
+Test_N(q뽔, q뽔, q뽔, q뽔, q뽔);
+Test_N(q뽕, q뽕, q뽕, q뽕, q뽕);
+Test_N(q뽖, q뽖, q뽖, q뽖, q뽖);
+Test_N(q뽗, q뽗, q뽗, q뽗, q뽗);
+Test_N(q뽘, q뽘, q뽘, q뽘, q뽘);
+Test_N(q뽙, q뽙, q뽙, q뽙, q뽙);
+Test_N(q뽚, q뽚, q뽚, q뽚, q뽚);
+Test_N(q뽛, q뽛, q뽛, q뽛, q뽛);
+Test_N(q뽜, q뽜, q뽜, q뽜, q뽜);
+Test_N(q뽝, q뽝, q뽝, q뽝, q뽝);
+Test_N(q뽞, q뽞, q뽞, q뽞, q뽞);
+Test_N(q뽟, q뽟, q뽟, q뽟, q뽟);
+Test_N(q뽠, q뽠, q뽠, q뽠, q뽠);
+Test_N(q뽡, q뽡, q뽡, q뽡, q뽡);
+Test_N(q뽢, q뽢, q뽢, q뽢, q뽢);
+Test_N(q뽣, q뽣, q뽣, q뽣, q뽣);
+Test_N(q뽤, q뽤, q뽤, q뽤, q뽤);
+Test_N(q뽥, q뽥, q뽥, q뽥, q뽥);
+Test_N(q뽦, q뽦, q뽦, q뽦, q뽦);
+Test_N(q뽧, q뽧, q뽧, q뽧, q뽧);
+Test_N(q뽨, q뽨, q뽨, q뽨, q뽨);
+Test_N(q뽩, q뽩, q뽩, q뽩, q뽩);
+Test_N(q뽪, q뽪, q뽪, q뽪, q뽪);
+Test_N(q뽫, q뽫, q뽫, q뽫, q뽫);
+Test_N(q뽬, q뽬, q뽬, q뽬, q뽬);
+Test_N(q뽭, q뽭, q뽭, q뽭, q뽭);
+Test_N(q뽮, q뽮, q뽮, q뽮, q뽮);
+Test_N(q뽯, q뽯, q뽯, q뽯, q뽯);
+Test_N(q뽰, q뽰, q뽰, q뽰, q뽰);
+Test_N(q뽱, q뽱, q뽱, q뽱, q뽱);
+Test_N(q뽲, q뽲, q뽲, q뽲, q뽲);
+Test_N(q뽳, q뽳, q뽳, q뽳, q뽳);
+Test_N(q뽴, q뽴, q뽴, q뽴, q뽴);
+Test_N(q뽵, q뽵, q뽵, q뽵, q뽵);
+Test_N(q뽶, q뽶, q뽶, q뽶, q뽶);
+Test_N(q뽷, q뽷, q뽷, q뽷, q뽷);
+Test_N(q뽸, q뽸, q뽸, q뽸, q뽸);
+Test_N(q뽹, q뽹, q뽹, q뽹, q뽹);
+Test_N(q뽺, q뽺, q뽺, q뽺, q뽺);
+Test_N(q뽻, q뽻, q뽻, q뽻, q뽻);
+Test_N(q뽼, q뽼, q뽼, q뽼, q뽼);
+Test_N(q뽽, q뽽, q뽽, q뽽, q뽽);
+Test_N(q뽾, q뽾, q뽾, q뽾, q뽾);
+Test_N(q뽿, q뽿, q뽿, q뽿, q뽿);
+Test_N(q뾀, q뾀, q뾀, q뾀, q뾀);
+Test_N(q뾁, q뾁, q뾁, q뾁, q뾁);
+Test_N(q뾂, q뾂, q뾂, q뾂, q뾂);
+Test_N(q뾃, q뾃, q뾃, q뾃, q뾃);
+Test_N(q뾄, q뾄, q뾄, q뾄, q뾄);
+Test_N(q뾅, q뾅, q뾅, q뾅, q뾅);
+Test_N(q뾆, q뾆, q뾆, q뾆, q뾆);
+Test_N(q뾇, q뾇, q뾇, q뾇, q뾇);
+Test_N(q뾈, q뾈, q뾈, q뾈, q뾈);
+Test_N(q뾉, q뾉, q뾉, q뾉, q뾉);
+Test_N(q뾊, q뾊, q뾊, q뾊, q뾊);
+Test_N(q뾋, q뾋, q뾋, q뾋, q뾋);
+Test_N(q뾌, q뾌, q뾌, q뾌, q뾌);
+Test_N(q뾍, q뾍, q뾍, q뾍, q뾍);
+Test_N(q뾎, q뾎, q뾎, q뾎, q뾎);
+Test_N(q뾏, q뾏, q뾏, q뾏, q뾏);
+Test_N(q뾐, q뾐, q뾐, q뾐, q뾐);
+Test_N(q뾑, q뾑, q뾑, q뾑, q뾑);
+Test_N(q뾒, q뾒, q뾒, q뾒, q뾒);
+Test_N(q뾓, q뾓, q뾓, q뾓, q뾓);
+Test_N(q뾔, q뾔, q뾔, q뾔, q뾔);
+Test_N(q뾕, q뾕, q뾕, q뾕, q뾕);
+Test_N(q뾖, q뾖, q뾖, q뾖, q뾖);
+Test_N(q뾗, q뾗, q뾗, q뾗, q뾗);
+Test_N(q뾘, q뾘, q뾘, q뾘, q뾘);
+Test_N(q뾙, q뾙, q뾙, q뾙, q뾙);
+Test_N(q뾚, q뾚, q뾚, q뾚, q뾚);
+Test_N(q뾛, q뾛, q뾛, q뾛, q뾛);
+Test_N(q뾜, q뾜, q뾜, q뾜, q뾜);
+Test_N(q뾝, q뾝, q뾝, q뾝, q뾝);
+Test_N(q뾞, q뾞, q뾞, q뾞, q뾞);
+Test_N(q뾟, q뾟, q뾟, q뾟, q뾟);
+Test_N(q뾠, q뾠, q뾠, q뾠, q뾠);
+Test_N(q뾡, q뾡, q뾡, q뾡, q뾡);
+Test_N(q뾢, q뾢, q뾢, q뾢, q뾢);
+Test_N(q뾣, q뾣, q뾣, q뾣, q뾣);
+Test_N(q뾤, q뾤, q뾤, q뾤, q뾤);
+Test_N(q뾥, q뾥, q뾥, q뾥, q뾥);
+Test_N(q뾦, q뾦, q뾦, q뾦, q뾦);
+Test_N(q뾧, q뾧, q뾧, q뾧, q뾧);
+Test_N(q뾨, q뾨, q뾨, q뾨, q뾨);
+Test_N(q뾩, q뾩, q뾩, q뾩, q뾩);
+Test_N(q뾪, q뾪, q뾪, q뾪, q뾪);
+Test_N(q뾫, q뾫, q뾫, q뾫, q뾫);
+Test_N(q뾬, q뾬, q뾬, q뾬, q뾬);
+Test_N(q뾭, q뾭, q뾭, q뾭, q뾭);
+Test_N(q뾮, q뾮, q뾮, q뾮, q뾮);
+Test_N(q뾯, q뾯, q뾯, q뾯, q뾯);
+Test_N(q뾰, q뾰, q뾰, q뾰, q뾰);
+Test_N(q뾱, q뾱, q뾱, q뾱, q뾱);
+Test_N(q뾲, q뾲, q뾲, q뾲, q뾲);
+Test_N(q뾳, q뾳, q뾳, q뾳, q뾳);
+Test_N(q뾴, q뾴, q뾴, q뾴, q뾴);
+Test_N(q뾵, q뾵, q뾵, q뾵, q뾵);
+Test_N(q뾶, q뾶, q뾶, q뾶, q뾶);
+Test_N(q뾷, q뾷, q뾷, q뾷, q뾷);
+Test_N(q뾸, q뾸, q뾸, q뾸, q뾸);
+Test_N(q뾹, q뾹, q뾹, q뾹, q뾹);
+Test_N(q뾺, q뾺, q뾺, q뾺, q뾺);
+Test_N(q뾻, q뾻, q뾻, q뾻, q뾻);
+Test_N(q뾼, q뾼, q뾼, q뾼, q뾼);
+Test_N(q뾽, q뾽, q뾽, q뾽, q뾽);
+Test_N(q뾾, q뾾, q뾾, q뾾, q뾾);
+Test_N(q뾿, q뾿, q뾿, q뾿, q뾿);
+Test_N(q뿀, q뿀, q뿀, q뿀, q뿀);
+Test_N(q뿁, q뿁, q뿁, q뿁, q뿁);
+Test_N(q뿂, q뿂, q뿂, q뿂, q뿂);
+Test_N(q뿃, q뿃, q뿃, q뿃, q뿃);
+Test_N(q뿄, q뿄, q뿄, q뿄, q뿄);
+Test_N(q뿅, q뿅, q뿅, q뿅, q뿅);
+Test_N(q뿆, q뿆, q뿆, q뿆, q뿆);
+Test_N(q뿇, q뿇, q뿇, q뿇, q뿇);
+Test_N(q뿈, q뿈, q뿈, q뿈, q뿈);
+Test_N(q뿉, q뿉, q뿉, q뿉, q뿉);
+Test_N(q뿊, q뿊, q뿊, q뿊, q뿊);
+Test_N(q뿋, q뿋, q뿋, q뿋, q뿋);
+Test_N(q뿌, q뿌, q뿌, q뿌, q뿌);
+Test_N(q뿍, q뿍, q뿍, q뿍, q뿍);
+Test_N(q뿎, q뿎, q뿎, q뿎, q뿎);
+Test_N(q뿏, q뿏, q뿏, q뿏, q뿏);
+Test_N(q뿐, q뿐, q뿐, q뿐, q뿐);
+Test_N(q뿑, q뿑, q뿑, q뿑, q뿑);
+Test_N(q뿒, q뿒, q뿒, q뿒, q뿒);
+Test_N(q뿓, q뿓, q뿓, q뿓, q뿓);
+Test_N(q뿔, q뿔, q뿔, q뿔, q뿔);
+Test_N(q뿕, q뿕, q뿕, q뿕, q뿕);
+Test_N(q뿖, q뿖, q뿖, q뿖, q뿖);
+Test_N(q뿗, q뿗, q뿗, q뿗, q뿗);
+Test_N(q뿘, q뿘, q뿘, q뿘, q뿘);
+Test_N(q뿙, q뿙, q뿙, q뿙, q뿙);
+Test_N(q뿚, q뿚, q뿚, q뿚, q뿚);
+Test_N(q뿛, q뿛, q뿛, q뿛, q뿛);
+Test_N(q뿜, q뿜, q뿜, q뿜, q뿜);
+Test_N(q뿝, q뿝, q뿝, q뿝, q뿝);
+Test_N(q뿞, q뿞, q뿞, q뿞, q뿞);
+Test_N(q뿟, q뿟, q뿟, q뿟, q뿟);
+Test_N(q뿠, q뿠, q뿠, q뿠, q뿠);
+Test_N(q뿡, q뿡, q뿡, q뿡, q뿡);
+Test_N(q뿢, q뿢, q뿢, q뿢, q뿢);
+Test_N(q뿣, q뿣, q뿣, q뿣, q뿣);
+Test_N(q뿤, q뿤, q뿤, q뿤, q뿤);
+Test_N(q뿥, q뿥, q뿥, q뿥, q뿥);
+Test_N(q뿦, q뿦, q뿦, q뿦, q뿦);
+Test_N(q뿧, q뿧, q뿧, q뿧, q뿧);
+Test_N(q뿨, q뿨, q뿨, q뿨, q뿨);
+Test_N(q뿩, q뿩, q뿩, q뿩, q뿩);
+Test_N(q뿪, q뿪, q뿪, q뿪, q뿪);
+Test_N(q뿫, q뿫, q뿫, q뿫, q뿫);
+Test_N(q뿬, q뿬, q뿬, q뿬, q뿬);
+Test_N(q뿭, q뿭, q뿭, q뿭, q뿭);
+Test_N(q뿮, q뿮, q뿮, q뿮, q뿮);
+Test_N(q뿯, q뿯, q뿯, q뿯, q뿯);
+Test_N(q뿰, q뿰, q뿰, q뿰, q뿰);
+Test_N(q뿱, q뿱, q뿱, q뿱, q뿱);
+Test_N(q뿲, q뿲, q뿲, q뿲, q뿲);
+Test_N(q뿳, q뿳, q뿳, q뿳, q뿳);
+Test_N(q뿴, q뿴, q뿴, q뿴, q뿴);
+Test_N(q뿵, q뿵, q뿵, q뿵, q뿵);
+Test_N(q뿶, q뿶, q뿶, q뿶, q뿶);
+Test_N(q뿷, q뿷, q뿷, q뿷, q뿷);
+Test_N(q뿸, q뿸, q뿸, q뿸, q뿸);
+Test_N(q뿹, q뿹, q뿹, q뿹, q뿹);
+Test_N(q뿺, q뿺, q뿺, q뿺, q뿺);
+Test_N(q뿻, q뿻, q뿻, q뿻, q뿻);
+Test_N(q뿼, q뿼, q뿼, q뿼, q뿼);
+Test_N(q뿽, q뿽, q뿽, q뿽, q뿽);
+Test_N(q뿾, q뿾, q뿾, q뿾, q뿾);
+Test_N(q뿿, q뿿, q뿿, q뿿, q뿿);
+Test_N(q쀀, q쀀, q쀀, q쀀, q쀀);
+Test_N(q쀁, q쀁, q쀁, q쀁, q쀁);
+Test_N(q쀂, q쀂, q쀂, q쀂, q쀂);
+Test_N(q쀃, q쀃, q쀃, q쀃, q쀃);
+Test_N(q쀄, q쀄, q쀄, q쀄, q쀄);
+Test_N(q쀅, q쀅, q쀅, q쀅, q쀅);
+Test_N(q쀆, q쀆, q쀆, q쀆, q쀆);
+Test_N(q쀇, q쀇, q쀇, q쀇, q쀇);
+Test_N(q쀈, q쀈, q쀈, q쀈, q쀈);
+Test_N(q쀉, q쀉, q쀉, q쀉, q쀉);
+Test_N(q쀊, q쀊, q쀊, q쀊, q쀊);
+Test_N(q쀋, q쀋, q쀋, q쀋, q쀋);
+Test_N(q쀌, q쀌, q쀌, q쀌, q쀌);
+Test_N(q쀍, q쀍, q쀍, q쀍, q쀍);
+Test_N(q쀎, q쀎, q쀎, q쀎, q쀎);
+Test_N(q쀏, q쀏, q쀏, q쀏, q쀏);
+Test_N(q쀐, q쀐, q쀐, q쀐, q쀐);
+Test_N(q쀑, q쀑, q쀑, q쀑, q쀑);
+Test_N(q쀒, q쀒, q쀒, q쀒, q쀒);
+Test_N(q쀓, q쀓, q쀓, q쀓, q쀓);
+Test_N(q쀔, q쀔, q쀔, q쀔, q쀔);
+Test_N(q쀕, q쀕, q쀕, q쀕, q쀕);
+Test_N(q쀖, q쀖, q쀖, q쀖, q쀖);
+Test_N(q쀗, q쀗, q쀗, q쀗, q쀗);
+Test_N(q쀘, q쀘, q쀘, q쀘, q쀘);
+Test_N(q쀙, q쀙, q쀙, q쀙, q쀙);
+Test_N(q쀚, q쀚, q쀚, q쀚, q쀚);
+Test_N(q쀛, q쀛, q쀛, q쀛, q쀛);
+Test_N(q쀜, q쀜, q쀜, q쀜, q쀜);
+Test_N(q쀝, q쀝, q쀝, q쀝, q쀝);
+Test_N(q쀞, q쀞, q쀞, q쀞, q쀞);
+Test_N(q쀟, q쀟, q쀟, q쀟, q쀟);
+Test_N(q쀠, q쀠, q쀠, q쀠, q쀠);
+Test_N(q쀡, q쀡, q쀡, q쀡, q쀡);
+Test_N(q쀢, q쀢, q쀢, q쀢, q쀢);
+Test_N(q쀣, q쀣, q쀣, q쀣, q쀣);
+Test_N(q쀤, q쀤, q쀤, q쀤, q쀤);
+Test_N(q쀥, q쀥, q쀥, q쀥, q쀥);
+Test_N(q쀦, q쀦, q쀦, q쀦, q쀦);
+Test_N(q쀧, q쀧, q쀧, q쀧, q쀧);
+Test_N(q쀨, q쀨, q쀨, q쀨, q쀨);
+Test_N(q쀩, q쀩, q쀩, q쀩, q쀩);
+Test_N(q쀪, q쀪, q쀪, q쀪, q쀪);
+Test_N(q쀫, q쀫, q쀫, q쀫, q쀫);
+Test_N(q쀬, q쀬, q쀬, q쀬, q쀬);
+Test_N(q쀭, q쀭, q쀭, q쀭, q쀭);
+Test_N(q쀮, q쀮, q쀮, q쀮, q쀮);
+Test_N(q쀯, q쀯, q쀯, q쀯, q쀯);
+Test_N(q쀰, q쀰, q쀰, q쀰, q쀰);
+Test_N(q쀱, q쀱, q쀱, q쀱, q쀱);
+Test_N(q쀲, q쀲, q쀲, q쀲, q쀲);
+Test_N(q쀳, q쀳, q쀳, q쀳, q쀳);
+Test_N(q쀴, q쀴, q쀴, q쀴, q쀴);
+Test_N(q쀵, q쀵, q쀵, q쀵, q쀵);
+Test_N(q쀶, q쀶, q쀶, q쀶, q쀶);
+Test_N(q쀷, q쀷, q쀷, q쀷, q쀷);
+Test_N(q쀸, q쀸, q쀸, q쀸, q쀸);
+Test_N(q쀹, q쀹, q쀹, q쀹, q쀹);
+Test_N(q쀺, q쀺, q쀺, q쀺, q쀺);
+Test_N(q쀻, q쀻, q쀻, q쀻, q쀻);
+Test_N(q쀼, q쀼, q쀼, q쀼, q쀼);
+Test_N(q쀽, q쀽, q쀽, q쀽, q쀽);
+Test_N(q쀾, q쀾, q쀾, q쀾, q쀾);
+Test_N(q쀿, q쀿, q쀿, q쀿, q쀿);
+Test_N(q쁀, q쁀, q쁀, q쁀, q쁀);
+Test_N(q쁁, q쁁, q쁁, q쁁, q쁁);
+Test_N(q쁂, q쁂, q쁂, q쁂, q쁂);
+Test_N(q쁃, q쁃, q쁃, q쁃, q쁃);
+Test_N(q쁄, q쁄, q쁄, q쁄, q쁄);
+Test_N(q쁅, q쁅, q쁅, q쁅, q쁅);
+Test_N(q쁆, q쁆, q쁆, q쁆, q쁆);
+Test_N(q쁇, q쁇, q쁇, q쁇, q쁇);
+Test_N(q쁈, q쁈, q쁈, q쁈, q쁈);
+Test_N(q쁉, q쁉, q쁉, q쁉, q쁉);
+Test_N(q쁊, q쁊, q쁊, q쁊, q쁊);
+Test_N(q쁋, q쁋, q쁋, q쁋, q쁋);
+Test_N(q쁌, q쁌, q쁌, q쁌, q쁌);
+Test_N(q쁍, q쁍, q쁍, q쁍, q쁍);
+Test_N(q쁎, q쁎, q쁎, q쁎, q쁎);
+Test_N(q쁏, q쁏, q쁏, q쁏, q쁏);
+Test_N(q쁐, q쁐, q쁐, q쁐, q쁐);
+Test_N(q쁑, q쁑, q쁑, q쁑, q쁑);
+Test_N(q쁒, q쁒, q쁒, q쁒, q쁒);
+Test_N(q쁓, q쁓, q쁓, q쁓, q쁓);
+Test_N(q쁔, q쁔, q쁔, q쁔, q쁔);
+Test_N(q쁕, q쁕, q쁕, q쁕, q쁕);
+Test_N(q쁖, q쁖, q쁖, q쁖, q쁖);
+Test_N(q쁗, q쁗, q쁗, q쁗, q쁗);
+Test_N(q쁘, q쁘, q쁘, q쁘, q쁘);
+Test_N(q쁙, q쁙, q쁙, q쁙, q쁙);
+Test_N(q쁚, q쁚, q쁚, q쁚, q쁚);
+Test_N(q쁛, q쁛, q쁛, q쁛, q쁛);
+Test_N(q쁜, q쁜, q쁜, q쁜, q쁜);
+Test_N(q쁝, q쁝, q쁝, q쁝, q쁝);
+Test_N(q쁞, q쁞, q쁞, q쁞, q쁞);
+Test_N(q쁟, q쁟, q쁟, q쁟, q쁟);
+Test_N(q쁠, q쁠, q쁠, q쁠, q쁠);
+Test_N(q쁡, q쁡, q쁡, q쁡, q쁡);
+Test_N(q쁢, q쁢, q쁢, q쁢, q쁢);
+Test_N(q쁣, q쁣, q쁣, q쁣, q쁣);
+Test_N(q쁤, q쁤, q쁤, q쁤, q쁤);
+Test_N(q쁥, q쁥, q쁥, q쁥, q쁥);
+Test_N(q쁦, q쁦, q쁦, q쁦, q쁦);
+Test_N(q쁧, q쁧, q쁧, q쁧, q쁧);
+Test_N(q쁨, q쁨, q쁨, q쁨, q쁨);
+Test_N(q쁩, q쁩, q쁩, q쁩, q쁩);
+Test_N(q쁪, q쁪, q쁪, q쁪, q쁪);
+Test_N(q쁫, q쁫, q쁫, q쁫, q쁫);
+Test_N(q쁬, q쁬, q쁬, q쁬, q쁬);
+Test_N(q쁭, q쁭, q쁭, q쁭, q쁭);
+Test_N(q쁮, q쁮, q쁮, q쁮, q쁮);
+Test_N(q쁯, q쁯, q쁯, q쁯, q쁯);
+Test_N(q쁰, q쁰, q쁰, q쁰, q쁰);
+Test_N(q쁱, q쁱, q쁱, q쁱, q쁱);
+Test_N(q쁲, q쁲, q쁲, q쁲, q쁲);
+Test_N(q쁳, q쁳, q쁳, q쁳, q쁳);
+Test_N(q쁴, q쁴, q쁴, q쁴, q쁴);
+Test_N(q쁵, q쁵, q쁵, q쁵, q쁵);
+Test_N(q쁶, q쁶, q쁶, q쁶, q쁶);
+Test_N(q쁷, q쁷, q쁷, q쁷, q쁷);
+Test_N(q쁸, q쁸, q쁸, q쁸, q쁸);
+Test_N(q쁹, q쁹, q쁹, q쁹, q쁹);
+Test_N(q쁺, q쁺, q쁺, q쁺, q쁺);
+Test_N(q쁻, q쁻, q쁻, q쁻, q쁻);
+Test_N(q쁼, q쁼, q쁼, q쁼, q쁼);
+Test_N(q쁽, q쁽, q쁽, q쁽, q쁽);
+Test_N(q쁾, q쁾, q쁾, q쁾, q쁾);
+Test_N(q쁿, q쁿, q쁿, q쁿, q쁿);
+Test_N(q삀, q삀, q삀, q삀, q삀);
+Test_N(q삁, q삁, q삁, q삁, q삁);
+Test_N(q삂, q삂, q삂, q삂, q삂);
+Test_N(q삃, q삃, q삃, q삃, q삃);
+Test_N(q삄, q삄, q삄, q삄, q삄);
+Test_N(q삅, q삅, q삅, q삅, q삅);
+Test_N(q삆, q삆, q삆, q삆, q삆);
+Test_N(q삇, q삇, q삇, q삇, q삇);
+Test_N(q삈, q삈, q삈, q삈, q삈);
+Test_N(q삉, q삉, q삉, q삉, q삉);
+Test_N(q삊, q삊, q삊, q삊, q삊);
+Test_N(q삋, q삋, q삋, q삋, q삋);
+Test_N(q삌, q삌, q삌, q삌, q삌);
+Test_N(q삍, q삍, q삍, q삍, q삍);
+Test_N(q삎, q삎, q삎, q삎, q삎);
+Test_N(q삏, q삏, q삏, q삏, q삏);
+Test_N(q삐, q삐, q삐, q삐, q삐);
+Test_N(q삑, q삑, q삑, q삑, q삑);
+Test_N(q삒, q삒, q삒, q삒, q삒);
+Test_N(q삓, q삓, q삓, q삓, q삓);
+Test_N(q삔, q삔, q삔, q삔, q삔);
+Test_N(q삕, q삕, q삕, q삕, q삕);
+Test_N(q삖, q삖, q삖, q삖, q삖);
+Test_N(q삗, q삗, q삗, q삗, q삗);
+Test_N(q삘, q삘, q삘, q삘, q삘);
+Test_N(q삙, q삙, q삙, q삙, q삙);
+Test_N(q삚, q삚, q삚, q삚, q삚);
+Test_N(q삛, q삛, q삛, q삛, q삛);
+Test_N(q삜, q삜, q삜, q삜, q삜);
+Test_N(q삝, q삝, q삝, q삝, q삝);
+Test_N(q삞, q삞, q삞, q삞, q삞);
+Test_N(q삟, q삟, q삟, q삟, q삟);
+Test_N(q삠, q삠, q삠, q삠, q삠);
+Test_N(q삡, q삡, q삡, q삡, q삡);
+Test_N(q삢, q삢, q삢, q삢, q삢);
+Test_N(q삣, q삣, q삣, q삣, q삣);
+Test_N(q삤, q삤, q삤, q삤, q삤);
+Test_N(q삥, q삥, q삥, q삥, q삥);
+Test_N(q삦, q삦, q삦, q삦, q삦);
+Test_N(q삧, q삧, q삧, q삧, q삧);
+Test_N(q삨, q삨, q삨, q삨, q삨);
+Test_N(q삩, q삩, q삩, q삩, q삩);
+Test_N(q삪, q삪, q삪, q삪, q삪);
+Test_N(q삫, q삫, q삫, q삫, q삫);
+Test_N(q사, q사, q사, q사, q사);
+Test_N(q삭, q삭, q삭, q삭, q삭);
+Test_N(q삮, q삮, q삮, q삮, q삮);
+Test_N(q삯, q삯, q삯, q삯, q삯);
+Test_N(q산, q산, q산, q산, q산);
+Test_N(q삱, q삱, q삱, q삱, q삱);
+Test_N(q삲, q삲, q삲, q삲, q삲);
+Test_N(q삳, q삳, q삳, q삳, q삳);
+Test_N(q살, q살, q살, q살, q살);
+Test_N(q삵, q삵, q삵, q삵, q삵);
+Test_N(q삶, q삶, q삶, q삶, q삶);
+Test_N(q삷, q삷, q삷, q삷, q삷);
+Test_N(q삸, q삸, q삸, q삸, q삸);
+Test_N(q삹, q삹, q삹, q삹, q삹);
+Test_N(q삺, q삺, q삺, q삺, q삺);
+Test_N(q삻, q삻, q삻, q삻, q삻);
+Test_N(q삼, q삼, q삼, q삼, q삼);
+Test_N(q삽, q삽, q삽, q삽, q삽);
+Test_N(q삾, q삾, q삾, q삾, q삾);
+Test_N(q삿, q삿, q삿, q삿, q삿);
+Test_N(q샀, q샀, q샀, q샀, q샀);
+Test_N(q상, q상, q상, q상, q상);
+Test_N(q샂, q샂, q샂, q샂, q샂);
+Test_N(q샃, q샃, q샃, q샃, q샃);
+Test_N(q샄, q샄, q샄, q샄, q샄);
+Test_N(q샅, q샅, q샅, q샅, q샅);
+Test_N(q샆, q샆, q샆, q샆, q샆);
+Test_N(q샇, q샇, q샇, q샇, q샇);
+Test_N(q새, q새, q새, q새, q새);
+Test_N(q색, q색, q색, q색, q색);
+Test_N(q샊, q샊, q샊, q샊, q샊);
+Test_N(q샋, q샋, q샋, q샋, q샋);
+Test_N(q샌, q샌, q샌, q샌, q샌);
+Test_N(q샍, q샍, q샍, q샍, q샍);
+Test_N(q샎, q샎, q샎, q샎, q샎);
+Test_N(q샏, q샏, q샏, q샏, q샏);
+Test_N(q샐, q샐, q샐, q샐, q샐);
+Test_N(q샑, q샑, q샑, q샑, q샑);
+Test_N(q샒, q샒, q샒, q샒, q샒);
+Test_N(q샓, q샓, q샓, q샓, q샓);
+Test_N(q샔, q샔, q샔, q샔, q샔);
+Test_N(q샕, q샕, q샕, q샕, q샕);
+Test_N(q샖, q샖, q샖, q샖, q샖);
+Test_N(q샗, q샗, q샗, q샗, q샗);
+Test_N(q샘, q샘, q샘, q샘, q샘);
+Test_N(q샙, q샙, q샙, q샙, q샙);
+Test_N(q샚, q샚, q샚, q샚, q샚);
+Test_N(q샛, q샛, q샛, q샛, q샛);
+Test_N(q샜, q샜, q샜, q샜, q샜);
+Test_N(q생, q생, q생, q생, q생);
+Test_N(q샞, q샞, q샞, q샞, q샞);
+Test_N(q샟, q샟, q샟, q샟, q샟);
+Test_N(q샠, q샠, q샠, q샠, q샠);
+Test_N(q샡, q샡, q샡, q샡, q샡);
+Test_N(q샢, q샢, q샢, q샢, q샢);
+Test_N(q샣, q샣, q샣, q샣, q샣);
+Test_N(q샤, q샤, q샤, q샤, q샤);
+Test_N(q샥, q샥, q샥, q샥, q샥);
+Test_N(q샦, q샦, q샦, q샦, q샦);
+Test_N(q샧, q샧, q샧, q샧, q샧);
+Test_N(q샨, q샨, q샨, q샨, q샨);
+Test_N(q샩, q샩, q샩, q샩, q샩);
+Test_N(q샪, q샪, q샪, q샪, q샪);
+Test_N(q샫, q샫, q샫, q샫, q샫);
+Test_N(q샬, q샬, q샬, q샬, q샬);
+Test_N(q샭, q샭, q샭, q샭, q샭);
+Test_N(q샮, q샮, q샮, q샮, q샮);
+Test_N(q샯, q샯, q샯, q샯, q샯);
+Test_N(q샰, q샰, q샰, q샰, q샰);
+Test_N(q샱, q샱, q샱, q샱, q샱);
+Test_N(q샲, q샲, q샲, q샲, q샲);
+Test_N(q샳, q샳, q샳, q샳, q샳);
+Test_N(q샴, q샴, q샴, q샴, q샴);
+Test_N(q샵, q샵, q샵, q샵, q샵);
+Test_N(q샶, q샶, q샶, q샶, q샶);
+Test_N(q샷, q샷, q샷, q샷, q샷);
+Test_N(q샸, q샸, q샸, q샸, q샸);
+Test_N(q샹, q샹, q샹, q샹, q샹);
+Test_N(q샺, q샺, q샺, q샺, q샺);
+Test_N(q샻, q샻, q샻, q샻, q샻);
+Test_N(q샼, q샼, q샼, q샼, q샼);
+Test_N(q샽, q샽, q샽, q샽, q샽);
+Test_N(q샾, q샾, q샾, q샾, q샾);
+Test_N(q샿, q샿, q샿, q샿, q샿);
+Test_N(q섀, q섀, q섀, q섀, q섀);
+Test_N(q섁, q섁, q섁, q섁, q섁);
+Test_N(q섂, q섂, q섂, q섂, q섂);
+Test_N(q섃, q섃, q섃, q섃, q섃);
+Test_N(q섄, q섄, q섄, q섄, q섄);
+Test_N(q섅, q섅, q섅, q섅, q섅);
+Test_N(q섆, q섆, q섆, q섆, q섆);
+Test_N(q섇, q섇, q섇, q섇, q섇);
+Test_N(q섈, q섈, q섈, q섈, q섈);
+Test_N(q섉, q섉, q섉, q섉, q섉);
+Test_N(q섊, q섊, q섊, q섊, q섊);
+Test_N(q섋, q섋, q섋, q섋, q섋);
+Test_N(q섌, q섌, q섌, q섌, q섌);
+Test_N(q섍, q섍, q섍, q섍, q섍);
+Test_N(q섎, q섎, q섎, q섎, q섎);
+Test_N(q섏, q섏, q섏, q섏, q섏);
+Test_N(q섐, q섐, q섐, q섐, q섐);
+Test_N(q섑, q섑, q섑, q섑, q섑);
+Test_N(q섒, q섒, q섒, q섒, q섒);
+Test_N(q섓, q섓, q섓, q섓, q섓);
+Test_N(q섔, q섔, q섔, q섔, q섔);
+Test_N(q섕, q섕, q섕, q섕, q섕);
+Test_N(q섖, q섖, q섖, q섖, q섖);
+Test_N(q섗, q섗, q섗, q섗, q섗);
+Test_N(q섘, q섘, q섘, q섘, q섘);
+Test_N(q섙, q섙, q섙, q섙, q섙);
+Test_N(q섚, q섚, q섚, q섚, q섚);
+Test_N(q섛, q섛, q섛, q섛, q섛);
+Test_N(q서, q서, q서, q서, q서);
+Test_N(q석, q석, q석, q석, q석);
+Test_N(q섞, q섞, q섞, q섞, q섞);
+Test_N(q섟, q섟, q섟, q섟, q섟);
+Test_N(q선, q선, q선, q선, q선);
+Test_N(q섡, q섡, q섡, q섡, q섡);
+Test_N(q섢, q섢, q섢, q섢, q섢);
+Test_N(q섣, q섣, q섣, q섣, q섣);
+Test_N(q설, q설, q설, q설, q설);
+Test_N(q섥, q섥, q섥, q섥, q섥);
+Test_N(q섦, q섦, q섦, q섦, q섦);
+Test_N(q섧, q섧, q섧, q섧, q섧);
+Test_N(q섨, q섨, q섨, q섨, q섨);
+Test_N(q섩, q섩, q섩, q섩, q섩);
+Test_N(q섪, q섪, q섪, q섪, q섪);
+Test_N(q섫, q섫, q섫, q섫, q섫);
+Test_N(q섬, q섬, q섬, q섬, q섬);
+Test_N(q섭, q섭, q섭, q섭, q섭);
+Test_N(q섮, q섮, q섮, q섮, q섮);
+Test_N(q섯, q섯, q섯, q섯, q섯);
+Test_N(q섰, q섰, q섰, q섰, q섰);
+Test_N(q성, q성, q성, q성, q성);
+Test_N(q섲, q섲, q섲, q섲, q섲);
+Test_N(q섳, q섳, q섳, q섳, q섳);
+Test_N(q섴, q섴, q섴, q섴, q섴);
+Test_N(q섵, q섵, q섵, q섵, q섵);
+Test_N(q섶, q섶, q섶, q섶, q섶);
+Test_N(q섷, q섷, q섷, q섷, q섷);
+Test_N(q세, q세, q세, q세, q세);
+Test_N(q섹, q섹, q섹, q섹, q섹);
+Test_N(q섺, q섺, q섺, q섺, q섺);
+Test_N(q섻, q섻, q섻, q섻, q섻);
+Test_N(q센, q센, q센, q센, q센);
+Test_N(q섽, q섽, q섽, q섽, q섽);
+Test_N(q섾, q섾, q섾, q섾, q섾);
+Test_N(q섿, q섿, q섿, q섿, q섿);
+Test_N(q셀, q셀, q셀, q셀, q셀);
+Test_N(q셁, q셁, q셁, q셁, q셁);
+Test_N(q셂, q셂, q셂, q셂, q셂);
+Test_N(q셃, q셃, q셃, q셃, q셃);
+Test_N(q셄, q셄, q셄, q셄, q셄);
+Test_N(q셅, q셅, q셅, q셅, q셅);
+Test_N(q셆, q셆, q셆, q셆, q셆);
+Test_N(q셇, q셇, q셇, q셇, q셇);
+Test_N(q셈, q셈, q셈, q셈, q셈);
+Test_N(q셉, q셉, q셉, q셉, q셉);
+Test_N(q셊, q셊, q셊, q셊, q셊);
+Test_N(q셋, q셋, q셋, q셋, q셋);
+Test_N(q셌, q셌, q셌, q셌, q셌);
+Test_N(q셍, q셍, q셍, q셍, q셍);
+Test_N(q셎, q셎, q셎, q셎, q셎);
+Test_N(q셏, q셏, q셏, q셏, q셏);
+Test_N(q셐, q셐, q셐, q셐, q셐);
+Test_N(q셑, q셑, q셑, q셑, q셑);
+Test_N(q셒, q셒, q셒, q셒, q셒);
+Test_N(q셓, q셓, q셓, q셓, q셓);
+Test_N(q셔, q셔, q셔, q셔, q셔);
+Test_N(q셕, q셕, q셕, q셕, q셕);
+Test_N(q셖, q셖, q셖, q셖, q셖);
+Test_N(q셗, q셗, q셗, q셗, q셗);
+Test_N(q션, q션, q션, q션, q션);
+Test_N(q셙, q셙, q셙, q셙, q셙);
+Test_N(q셚, q셚, q셚, q셚, q셚);
+Test_N(q셛, q셛, q셛, q셛, q셛);
+Test_N(q셜, q셜, q셜, q셜, q셜);
+Test_N(q셝, q셝, q셝, q셝, q셝);
+Test_N(q셞, q셞, q셞, q셞, q셞);
+Test_N(q셟, q셟, q셟, q셟, q셟);
+Test_N(q셠, q셠, q셠, q셠, q셠);
+Test_N(q셡, q셡, q셡, q셡, q셡);
+Test_N(q셢, q셢, q셢, q셢, q셢);
+Test_N(q셣, q셣, q셣, q셣, q셣);
+Test_N(q셤, q셤, q셤, q셤, q셤);
+Test_N(q셥, q셥, q셥, q셥, q셥);
+Test_N(q셦, q셦, q셦, q셦, q셦);
+Test_N(q셧, q셧, q셧, q셧, q셧);
+Test_N(q셨, q셨, q셨, q셨, q셨);
+Test_N(q셩, q셩, q셩, q셩, q셩);
+Test_N(q셪, q셪, q셪, q셪, q셪);
+Test_N(q셫, q셫, q셫, q셫, q셫);
+Test_N(q셬, q셬, q셬, q셬, q셬);
+Test_N(q셭, q셭, q셭, q셭, q셭);
+Test_N(q셮, q셮, q셮, q셮, q셮);
+Test_N(q셯, q셯, q셯, q셯, q셯);
+Test_N(q셰, q셰, q셰, q셰, q셰);
+Test_N(q셱, q셱, q셱, q셱, q셱);
+Test_N(q셲, q셲, q셲, q셲, q셲);
+Test_N(q셳, q셳, q셳, q셳, q셳);
+Test_N(q셴, q셴, q셴, q셴, q셴);
+Test_N(q셵, q셵, q셵, q셵, q셵);
+Test_N(q셶, q셶, q셶, q셶, q셶);
+Test_N(q셷, q셷, q셷, q셷, q셷);
+Test_N(q셸, q셸, q셸, q셸, q셸);
+Test_N(q셹, q셹, q셹, q셹, q셹);
+Test_N(q셺, q셺, q셺, q셺, q셺);
+Test_N(q셻, q셻, q셻, q셻, q셻);
+Test_N(q셼, q셼, q셼, q셼, q셼);
+Test_N(q셽, q셽, q셽, q셽, q셽);
+Test_N(q셾, q셾, q셾, q셾, q셾);
+Test_N(q셿, q셿, q셿, q셿, q셿);
+Test_N(q솀, q솀, q솀, q솀, q솀);
+Test_N(q솁, q솁, q솁, q솁, q솁);
+Test_N(q솂, q솂, q솂, q솂, q솂);
+Test_N(q솃, q솃, q솃, q솃, q솃);
+Test_N(q솄, q솄, q솄, q솄, q솄);
+Test_N(q솅, q솅, q솅, q솅, q솅);
+Test_N(q솆, q솆, q솆, q솆, q솆);
+Test_N(q솇, q솇, q솇, q솇, q솇);
+Test_N(q솈, q솈, q솈, q솈, q솈);
+Test_N(q솉, q솉, q솉, q솉, q솉);
+Test_N(q솊, q솊, q솊, q솊, q솊);
+Test_N(q솋, q솋, q솋, q솋, q솋);
+Test_N(q소, q소, q소, q소, q소);
+Test_N(q속, q속, q속, q속, q속);
+Test_N(q솎, q솎, q솎, q솎, q솎);
+Test_N(q솏, q솏, q솏, q솏, q솏);
+Test_N(q손, q손, q손, q손, q손);
+Test_N(q솑, q솑, q솑, q솑, q솑);
+Test_N(q솒, q솒, q솒, q솒, q솒);
+Test_N(q솓, q솓, q솓, q솓, q솓);
+Test_N(q솔, q솔, q솔, q솔, q솔);
+Test_N(q솕, q솕, q솕, q솕, q솕);
+Test_N(q솖, q솖, q솖, q솖, q솖);
+Test_N(q솗, q솗, q솗, q솗, q솗);
+Test_N(q솘, q솘, q솘, q솘, q솘);
+Test_N(q솙, q솙, q솙, q솙, q솙);
+Test_N(q솚, q솚, q솚, q솚, q솚);
+Test_N(q솛, q솛, q솛, q솛, q솛);
+Test_N(q솜, q솜, q솜, q솜, q솜);
+Test_N(q솝, q솝, q솝, q솝, q솝);
+Test_N(q솞, q솞, q솞, q솞, q솞);
+Test_N(q솟, q솟, q솟, q솟, q솟);
+Test_N(q솠, q솠, q솠, q솠, q솠);
+Test_N(q송, q송, q송, q송, q송);
+Test_N(q솢, q솢, q솢, q솢, q솢);
+Test_N(q솣, q솣, q솣, q솣, q솣);
+Test_N(q솤, q솤, q솤, q솤, q솤);
+Test_N(q솥, q솥, q솥, q솥, q솥);
+Test_N(q솦, q솦, q솦, q솦, q솦);
+Test_N(q솧, q솧, q솧, q솧, q솧);
+Test_N(q솨, q솨, q솨, q솨, q솨);
+Test_N(q솩, q솩, q솩, q솩, q솩);
+Test_N(q솪, q솪, q솪, q솪, q솪);
+Test_N(q솫, q솫, q솫, q솫, q솫);
+Test_N(q솬, q솬, q솬, q솬, q솬);
+Test_N(q솭, q솭, q솭, q솭, q솭);
+Test_N(q솮, q솮, q솮, q솮, q솮);
+Test_N(q솯, q솯, q솯, q솯, q솯);
+Test_N(q솰, q솰, q솰, q솰, q솰);
+Test_N(q솱, q솱, q솱, q솱, q솱);
+Test_N(q솲, q솲, q솲, q솲, q솲);
+Test_N(q솳, q솳, q솳, q솳, q솳);
+Test_N(q솴, q솴, q솴, q솴, q솴);
+Test_N(q솵, q솵, q솵, q솵, q솵);
+Test_N(q솶, q솶, q솶, q솶, q솶);
+Test_N(q솷, q솷, q솷, q솷, q솷);
+Test_N(q솸, q솸, q솸, q솸, q솸);
+Test_N(q솹, q솹, q솹, q솹, q솹);
+Test_N(q솺, q솺, q솺, q솺, q솺);
+Test_N(q솻, q솻, q솻, q솻, q솻);
+Test_N(q솼, q솼, q솼, q솼, q솼);
+Test_N(q솽, q솽, q솽, q솽, q솽);
+Test_N(q솾, q솾, q솾, q솾, q솾);
+Test_N(q솿, q솿, q솿, q솿, q솿);
+Test_N(q쇀, q쇀, q쇀, q쇀, q쇀);
+Test_N(q쇁, q쇁, q쇁, q쇁, q쇁);
+Test_N(q쇂, q쇂, q쇂, q쇂, q쇂);
+Test_N(q쇃, q쇃, q쇃, q쇃, q쇃);
+Test_N(q쇄, q쇄, q쇄, q쇄, q쇄);
+Test_N(q쇅, q쇅, q쇅, q쇅, q쇅);
+Test_N(q쇆, q쇆, q쇆, q쇆, q쇆);
+Test_N(q쇇, q쇇, q쇇, q쇇, q쇇);
+Test_N(q쇈, q쇈, q쇈, q쇈, q쇈);
+Test_N(q쇉, q쇉, q쇉, q쇉, q쇉);
+Test_N(q쇊, q쇊, q쇊, q쇊, q쇊);
+Test_N(q쇋, q쇋, q쇋, q쇋, q쇋);
+Test_N(q쇌, q쇌, q쇌, q쇌, q쇌);
+Test_N(q쇍, q쇍, q쇍, q쇍, q쇍);
+Test_N(q쇎, q쇎, q쇎, q쇎, q쇎);
+Test_N(q쇏, q쇏, q쇏, q쇏, q쇏);
+Test_N(q쇐, q쇐, q쇐, q쇐, q쇐);
+Test_N(q쇑, q쇑, q쇑, q쇑, q쇑);
+Test_N(q쇒, q쇒, q쇒, q쇒, q쇒);
+Test_N(q쇓, q쇓, q쇓, q쇓, q쇓);
+Test_N(q쇔, q쇔, q쇔, q쇔, q쇔);
+Test_N(q쇕, q쇕, q쇕, q쇕, q쇕);
+Test_N(q쇖, q쇖, q쇖, q쇖, q쇖);
+Test_N(q쇗, q쇗, q쇗, q쇗, q쇗);
+Test_N(q쇘, q쇘, q쇘, q쇘, q쇘);
+Test_N(q쇙, q쇙, q쇙, q쇙, q쇙);
+Test_N(q쇚, q쇚, q쇚, q쇚, q쇚);
+Test_N(q쇛, q쇛, q쇛, q쇛, q쇛);
+Test_N(q쇜, q쇜, q쇜, q쇜, q쇜);
+Test_N(q쇝, q쇝, q쇝, q쇝, q쇝);
+Test_N(q쇞, q쇞, q쇞, q쇞, q쇞);
+Test_N(q쇟, q쇟, q쇟, q쇟, q쇟);
+Test_N(q쇠, q쇠, q쇠, q쇠, q쇠);
+Test_N(q쇡, q쇡, q쇡, q쇡, q쇡);
+Test_N(q쇢, q쇢, q쇢, q쇢, q쇢);
+Test_N(q쇣, q쇣, q쇣, q쇣, q쇣);
+Test_N(q쇤, q쇤, q쇤, q쇤, q쇤);
+Test_N(q쇥, q쇥, q쇥, q쇥, q쇥);
+Test_N(q쇦, q쇦, q쇦, q쇦, q쇦);
+Test_N(q쇧, q쇧, q쇧, q쇧, q쇧);
+Test_N(q쇨, q쇨, q쇨, q쇨, q쇨);
+Test_N(q쇩, q쇩, q쇩, q쇩, q쇩);
+Test_N(q쇪, q쇪, q쇪, q쇪, q쇪);
+Test_N(q쇫, q쇫, q쇫, q쇫, q쇫);
+Test_N(q쇬, q쇬, q쇬, q쇬, q쇬);
+Test_N(q쇭, q쇭, q쇭, q쇭, q쇭);
+Test_N(q쇮, q쇮, q쇮, q쇮, q쇮);
+Test_N(q쇯, q쇯, q쇯, q쇯, q쇯);
+Test_N(q쇰, q쇰, q쇰, q쇰, q쇰);
+Test_N(q쇱, q쇱, q쇱, q쇱, q쇱);
+Test_N(q쇲, q쇲, q쇲, q쇲, q쇲);
+Test_N(q쇳, q쇳, q쇳, q쇳, q쇳);
+Test_N(q쇴, q쇴, q쇴, q쇴, q쇴);
+Test_N(q쇵, q쇵, q쇵, q쇵, q쇵);
+Test_N(q쇶, q쇶, q쇶, q쇶, q쇶);
+Test_N(q쇷, q쇷, q쇷, q쇷, q쇷);
+Test_N(q쇸, q쇸, q쇸, q쇸, q쇸);
+Test_N(q쇹, q쇹, q쇹, q쇹, q쇹);
+Test_N(q쇺, q쇺, q쇺, q쇺, q쇺);
+Test_N(q쇻, q쇻, q쇻, q쇻, q쇻);
+Test_N(q쇼, q쇼, q쇼, q쇼, q쇼);
+Test_N(q쇽, q쇽, q쇽, q쇽, q쇽);
+Test_N(q쇾, q쇾, q쇾, q쇾, q쇾);
+Test_N(q쇿, q쇿, q쇿, q쇿, q쇿);
+Test_N(q숀, q숀, q숀, q숀, q숀);
+Test_N(q숁, q숁, q숁, q숁, q숁);
+Test_N(q숂, q숂, q숂, q숂, q숂);
+Test_N(q숃, q숃, q숃, q숃, q숃);
+Test_N(q숄, q숄, q숄, q숄, q숄);
+Test_N(q숅, q숅, q숅, q숅, q숅);
+Test_N(q숆, q숆, q숆, q숆, q숆);
+Test_N(q숇, q숇, q숇, q숇, q숇);
+Test_N(q숈, q숈, q숈, q숈, q숈);
+Test_N(q숉, q숉, q숉, q숉, q숉);
+Test_N(q숊, q숊, q숊, q숊, q숊);
+Test_N(q숋, q숋, q숋, q숋, q숋);
+Test_N(q숌, q숌, q숌, q숌, q숌);
+Test_N(q숍, q숍, q숍, q숍, q숍);
+Test_N(q숎, q숎, q숎, q숎, q숎);
+Test_N(q숏, q숏, q숏, q숏, q숏);
+Test_N(q숐, q숐, q숐, q숐, q숐);
+Test_N(q숑, q숑, q숑, q숑, q숑);
+Test_N(q숒, q숒, q숒, q숒, q숒);
+Test_N(q숓, q숓, q숓, q숓, q숓);
+Test_N(q숔, q숔, q숔, q숔, q숔);
+Test_N(q숕, q숕, q숕, q숕, q숕);
+Test_N(q숖, q숖, q숖, q숖, q숖);
+Test_N(q숗, q숗, q숗, q숗, q숗);
+Test_N(q수, q수, q수, q수, q수);
+Test_N(q숙, q숙, q숙, q숙, q숙);
+Test_N(q숚, q숚, q숚, q숚, q숚);
+Test_N(q숛, q숛, q숛, q숛, q숛);
+Test_N(q순, q순, q순, q순, q순);
+Test_N(q숝, q숝, q숝, q숝, q숝);
+Test_N(q숞, q숞, q숞, q숞, q숞);
+Test_N(q숟, q숟, q숟, q숟, q숟);
+Test_N(q술, q술, q술, q술, q술);
+Test_N(q숡, q숡, q숡, q숡, q숡);
+Test_N(q숢, q숢, q숢, q숢, q숢);
+Test_N(q숣, q숣, q숣, q숣, q숣);
+Test_N(q숤, q숤, q숤, q숤, q숤);
+Test_N(q숥, q숥, q숥, q숥, q숥);
+Test_N(q숦, q숦, q숦, q숦, q숦);
+Test_N(q숧, q숧, q숧, q숧, q숧);
+Test_N(q숨, q숨, q숨, q숨, q숨);
+Test_N(q숩, q숩, q숩, q숩, q숩);
+Test_N(q숪, q숪, q숪, q숪, q숪);
+Test_N(q숫, q숫, q숫, q숫, q숫);
+Test_N(q숬, q숬, q숬, q숬, q숬);
+Test_N(q숭, q숭, q숭, q숭, q숭);
+Test_N(q숮, q숮, q숮, q숮, q숮);
+Test_N(q숯, q숯, q숯, q숯, q숯);
+Test_N(q숰, q숰, q숰, q숰, q숰);
+Test_N(q숱, q숱, q숱, q숱, q숱);
+Test_N(q숲, q숲, q숲, q숲, q숲);
+Test_N(q숳, q숳, q숳, q숳, q숳);
+Test_N(q숴, q숴, q숴, q숴, q숴);
+Test_N(q숵, q숵, q숵, q숵, q숵);
+Test_N(q숶, q숶, q숶, q숶, q숶);
+Test_N(q숷, q숷, q숷, q숷, q숷);
+Test_N(q숸, q숸, q숸, q숸, q숸);
+Test_N(q숹, q숹, q숹, q숹, q숹);
+Test_N(q숺, q숺, q숺, q숺, q숺);
+Test_N(q숻, q숻, q숻, q숻, q숻);
+Test_N(q숼, q숼, q숼, q숼, q숼);
+Test_N(q숽, q숽, q숽, q숽, q숽);
+Test_N(q숾, q숾, q숾, q숾, q숾);
+Test_N(q숿, q숿, q숿, q숿, q숿);
+Test_N(q쉀, q쉀, q쉀, q쉀, q쉀);
+Test_N(q쉁, q쉁, q쉁, q쉁, q쉁);
+Test_N(q쉂, q쉂, q쉂, q쉂, q쉂);
+Test_N(q쉃, q쉃, q쉃, q쉃, q쉃);
+Test_N(q쉄, q쉄, q쉄, q쉄, q쉄);
+Test_N(q쉅, q쉅, q쉅, q쉅, q쉅);
+Test_N(q쉆, q쉆, q쉆, q쉆, q쉆);
+Test_N(q쉇, q쉇, q쉇, q쉇, q쉇);
+Test_N(q쉈, q쉈, q쉈, q쉈, q쉈);
+Test_N(q쉉, q쉉, q쉉, q쉉, q쉉);
+Test_N(q쉊, q쉊, q쉊, q쉊, q쉊);
+Test_N(q쉋, q쉋, q쉋, q쉋, q쉋);
+Test_N(q쉌, q쉌, q쉌, q쉌, q쉌);
+Test_N(q쉍, q쉍, q쉍, q쉍, q쉍);
+Test_N(q쉎, q쉎, q쉎, q쉎, q쉎);
+Test_N(q쉏, q쉏, q쉏, q쉏, q쉏);
+Test_N(q쉐, q쉐, q쉐, q쉐, q쉐);
+Test_N(q쉑, q쉑, q쉑, q쉑, q쉑);
+Test_N(q쉒, q쉒, q쉒, q쉒, q쉒);
+Test_N(q쉓, q쉓, q쉓, q쉓, q쉓);
+Test_N(q쉔, q쉔, q쉔, q쉔, q쉔);
+Test_N(q쉕, q쉕, q쉕, q쉕, q쉕);
+Test_N(q쉖, q쉖, q쉖, q쉖, q쉖);
+Test_N(q쉗, q쉗, q쉗, q쉗, q쉗);
+Test_N(q쉘, q쉘, q쉘, q쉘, q쉘);
+Test_N(q쉙, q쉙, q쉙, q쉙, q쉙);
+Test_N(q쉚, q쉚, q쉚, q쉚, q쉚);
+Test_N(q쉛, q쉛, q쉛, q쉛, q쉛);
+Test_N(q쉜, q쉜, q쉜, q쉜, q쉜);
+Test_N(q쉝, q쉝, q쉝, q쉝, q쉝);
+Test_N(q쉞, q쉞, q쉞, q쉞, q쉞);
+Test_N(q쉟, q쉟, q쉟, q쉟, q쉟);
+Test_N(q쉠, q쉠, q쉠, q쉠, q쉠);
+Test_N(q쉡, q쉡, q쉡, q쉡, q쉡);
+Test_N(q쉢, q쉢, q쉢, q쉢, q쉢);
+Test_N(q쉣, q쉣, q쉣, q쉣, q쉣);
+Test_N(q쉤, q쉤, q쉤, q쉤, q쉤);
+Test_N(q쉥, q쉥, q쉥, q쉥, q쉥);
+Test_N(q쉦, q쉦, q쉦, q쉦, q쉦);
+Test_N(q쉧, q쉧, q쉧, q쉧, q쉧);
+Test_N(q쉨, q쉨, q쉨, q쉨, q쉨);
+Test_N(q쉩, q쉩, q쉩, q쉩, q쉩);
+Test_N(q쉪, q쉪, q쉪, q쉪, q쉪);
+Test_N(q쉫, q쉫, q쉫, q쉫, q쉫);
+Test_N(q쉬, q쉬, q쉬, q쉬, q쉬);
+Test_N(q쉭, q쉭, q쉭, q쉭, q쉭);
+Test_N(q쉮, q쉮, q쉮, q쉮, q쉮);
+Test_N(q쉯, q쉯, q쉯, q쉯, q쉯);
+Test_N(q쉰, q쉰, q쉰, q쉰, q쉰);
+Test_N(q쉱, q쉱, q쉱, q쉱, q쉱);
+Test_N(q쉲, q쉲, q쉲, q쉲, q쉲);
+Test_N(q쉳, q쉳, q쉳, q쉳, q쉳);
+Test_N(q쉴, q쉴, q쉴, q쉴, q쉴);
+Test_N(q쉵, q쉵, q쉵, q쉵, q쉵);
+Test_N(q쉶, q쉶, q쉶, q쉶, q쉶);
+Test_N(q쉷, q쉷, q쉷, q쉷, q쉷);
+Test_N(q쉸, q쉸, q쉸, q쉸, q쉸);
+Test_N(q쉹, q쉹, q쉹, q쉹, q쉹);
+Test_N(q쉺, q쉺, q쉺, q쉺, q쉺);
+Test_N(q쉻, q쉻, q쉻, q쉻, q쉻);
+Test_N(q쉼, q쉼, q쉼, q쉼, q쉼);
+Test_N(q쉽, q쉽, q쉽, q쉽, q쉽);
+Test_N(q쉾, q쉾, q쉾, q쉾, q쉾);
+Test_N(q쉿, q쉿, q쉿, q쉿, q쉿);
+Test_N(q슀, q슀, q슀, q슀, q슀);
+Test_N(q슁, q슁, q슁, q슁, q슁);
+Test_N(q슂, q슂, q슂, q슂, q슂);
+Test_N(q슃, q슃, q슃, q슃, q슃);
+Test_N(q슄, q슄, q슄, q슄, q슄);
+Test_N(q슅, q슅, q슅, q슅, q슅);
+Test_N(q슆, q슆, q슆, q슆, q슆);
+Test_N(q슇, q슇, q슇, q슇, q슇);
+Test_N(q슈, q슈, q슈, q슈, q슈);
+Test_N(q슉, q슉, q슉, q슉, q슉);
+Test_N(q슊, q슊, q슊, q슊, q슊);
+Test_N(q슋, q슋, q슋, q슋, q슋);
+Test_N(q슌, q슌, q슌, q슌, q슌);
+Test_N(q슍, q슍, q슍, q슍, q슍);
+Test_N(q슎, q슎, q슎, q슎, q슎);
+Test_N(q슏, q슏, q슏, q슏, q슏);
+Test_N(q슐, q슐, q슐, q슐, q슐);
+Test_N(q슑, q슑, q슑, q슑, q슑);
+Test_N(q슒, q슒, q슒, q슒, q슒);
+Test_N(q슓, q슓, q슓, q슓, q슓);
+Test_N(q슔, q슔, q슔, q슔, q슔);
+Test_N(q슕, q슕, q슕, q슕, q슕);
+Test_N(q슖, q슖, q슖, q슖, q슖);
+Test_N(q슗, q슗, q슗, q슗, q슗);
+Test_N(q슘, q슘, q슘, q슘, q슘);
+Test_N(q슙, q슙, q슙, q슙, q슙);
+Test_N(q슚, q슚, q슚, q슚, q슚);
+Test_N(q슛, q슛, q슛, q슛, q슛);
+Test_N(q슜, q슜, q슜, q슜, q슜);
+Test_N(q슝, q슝, q슝, q슝, q슝);
+Test_N(q슞, q슞, q슞, q슞, q슞);
+Test_N(q슟, q슟, q슟, q슟, q슟);
+Test_N(q슠, q슠, q슠, q슠, q슠);
+Test_N(q슡, q슡, q슡, q슡, q슡);
+Test_N(q슢, q슢, q슢, q슢, q슢);
+Test_N(q슣, q슣, q슣, q슣, q슣);
+Test_N(q스, q스, q스, q스, q스);
+Test_N(q슥, q슥, q슥, q슥, q슥);
+Test_N(q슦, q슦, q슦, q슦, q슦);
+Test_N(q슧, q슧, q슧, q슧, q슧);
+Test_N(q슨, q슨, q슨, q슨, q슨);
+Test_N(q슩, q슩, q슩, q슩, q슩);
+Test_N(q슪, q슪, q슪, q슪, q슪);
+Test_N(q슫, q슫, q슫, q슫, q슫);
+Test_N(q슬, q슬, q슬, q슬, q슬);
+Test_N(q슭, q슭, q슭, q슭, q슭);
+Test_N(q슮, q슮, q슮, q슮, q슮);
+Test_N(q슯, q슯, q슯, q슯, q슯);
+Test_N(q슰, q슰, q슰, q슰, q슰);
+Test_N(q슱, q슱, q슱, q슱, q슱);
+Test_N(q슲, q슲, q슲, q슲, q슲);
+Test_N(q슳, q슳, q슳, q슳, q슳);
+Test_N(q슴, q슴, q슴, q슴, q슴);
+Test_N(q습, q습, q습, q습, q습);
+Test_N(q슶, q슶, q슶, q슶, q슶);
+Test_N(q슷, q슷, q슷, q슷, q슷);
+Test_N(q슸, q슸, q슸, q슸, q슸);
+Test_N(q승, q승, q승, q승, q승);
+Test_N(q슺, q슺, q슺, q슺, q슺);
+Test_N(q슻, q슻, q슻, q슻, q슻);
+Test_N(q슼, q슼, q슼, q슼, q슼);
+Test_N(q슽, q슽, q슽, q슽, q슽);
+Test_N(q슾, q슾, q슾, q슾, q슾);
+Test_N(q슿, q슿, q슿, q슿, q슿);
+Test_N(q싀, q싀, q싀, q싀, q싀);
+Test_N(q싁, q싁, q싁, q싁, q싁);
+Test_N(q싂, q싂, q싂, q싂, q싂);
+Test_N(q싃, q싃, q싃, q싃, q싃);
+Test_N(q싄, q싄, q싄, q싄, q싄);
+Test_N(q싅, q싅, q싅, q싅, q싅);
+Test_N(q싆, q싆, q싆, q싆, q싆);
+Test_N(q싇, q싇, q싇, q싇, q싇);
+Test_N(q싈, q싈, q싈, q싈, q싈);
+Test_N(q싉, q싉, q싉, q싉, q싉);
+Test_N(q싊, q싊, q싊, q싊, q싊);
+Test_N(q싋, q싋, q싋, q싋, q싋);
+Test_N(q싌, q싌, q싌, q싌, q싌);
+Test_N(q싍, q싍, q싍, q싍, q싍);
+Test_N(q싎, q싎, q싎, q싎, q싎);
+Test_N(q싏, q싏, q싏, q싏, q싏);
+Test_N(q싐, q싐, q싐, q싐, q싐);
+Test_N(q싑, q싑, q싑, q싑, q싑);
+Test_N(q싒, q싒, q싒, q싒, q싒);
+Test_N(q싓, q싓, q싓, q싓, q싓);
+Test_N(q싔, q싔, q싔, q싔, q싔);
+Test_N(q싕, q싕, q싕, q싕, q싕);
+Test_N(q싖, q싖, q싖, q싖, q싖);
+Test_N(q싗, q싗, q싗, q싗, q싗);
+Test_N(q싘, q싘, q싘, q싘, q싘);
+Test_N(q싙, q싙, q싙, q싙, q싙);
+Test_N(q싚, q싚, q싚, q싚, q싚);
+Test_N(q싛, q싛, q싛, q싛, q싛);
+Test_N(q시, q시, q시, q시, q시);
+Test_N(q식, q식, q식, q식, q식);
+Test_N(q싞, q싞, q싞, q싞, q싞);
+Test_N(q싟, q싟, q싟, q싟, q싟);
+Test_N(q신, q신, q신, q신, q신);
+Test_N(q싡, q싡, q싡, q싡, q싡);
+Test_N(q싢, q싢, q싢, q싢, q싢);
+Test_N(q싣, q싣, q싣, q싣, q싣);
+Test_N(q실, q실, q실, q실, q실);
+Test_N(q싥, q싥, q싥, q싥, q싥);
+Test_N(q싦, q싦, q싦, q싦, q싦);
+Test_N(q싧, q싧, q싧, q싧, q싧);
+Test_N(q싨, q싨, q싨, q싨, q싨);
+Test_N(q싩, q싩, q싩, q싩, q싩);
+Test_N(q싪, q싪, q싪, q싪, q싪);
+Test_N(q싫, q싫, q싫, q싫, q싫);
+Test_N(q심, q심, q심, q심, q심);
+Test_N(q십, q십, q십, q십, q십);
+Test_N(q싮, q싮, q싮, q싮, q싮);
+Test_N(q싯, q싯, q싯, q싯, q싯);
+Test_N(q싰, q싰, q싰, q싰, q싰);
+Test_N(q싱, q싱, q싱, q싱, q싱);
+Test_N(q싲, q싲, q싲, q싲, q싲);
+Test_N(q싳, q싳, q싳, q싳, q싳);
+Test_N(q싴, q싴, q싴, q싴, q싴);
+Test_N(q싵, q싵, q싵, q싵, q싵);
+Test_N(q싶, q싶, q싶, q싶, q싶);
+Test_N(q싷, q싷, q싷, q싷, q싷);
+Test_N(q싸, q싸, q싸, q싸, q싸);
+Test_N(q싹, q싹, q싹, q싹, q싹);
+Test_N(q싺, q싺, q싺, q싺, q싺);
+Test_N(q싻, q싻, q싻, q싻, q싻);
+Test_N(q싼, q싼, q싼, q싼, q싼);
+Test_N(q싽, q싽, q싽, q싽, q싽);
+Test_N(q싾, q싾, q싾, q싾, q싾);
+Test_N(q싿, q싿, q싿, q싿, q싿);
+Test_N(q쌀, q쌀, q쌀, q쌀, q쌀);
+Test_N(q쌁, q쌁, q쌁, q쌁, q쌁);
+Test_N(q쌂, q쌂, q쌂, q쌂, q쌂);
+Test_N(q쌃, q쌃, q쌃, q쌃, q쌃);
+Test_N(q쌄, q쌄, q쌄, q쌄, q쌄);
+Test_N(q쌅, q쌅, q쌅, q쌅, q쌅);
+Test_N(q쌆, q쌆, q쌆, q쌆, q쌆);
+Test_N(q쌇, q쌇, q쌇, q쌇, q쌇);
+Test_N(q쌈, q쌈, q쌈, q쌈, q쌈);
+Test_N(q쌉, q쌉, q쌉, q쌉, q쌉);
+Test_N(q쌊, q쌊, q쌊, q쌊, q쌊);
+Test_N(q쌋, q쌋, q쌋, q쌋, q쌋);
+Test_N(q쌌, q쌌, q쌌, q쌌, q쌌);
+Test_N(q쌍, q쌍, q쌍, q쌍, q쌍);
+Test_N(q쌎, q쌎, q쌎, q쌎, q쌎);
+Test_N(q쌏, q쌏, q쌏, q쌏, q쌏);
+Test_N(q쌐, q쌐, q쌐, q쌐, q쌐);
+Test_N(q쌑, q쌑, q쌑, q쌑, q쌑);
+Test_N(q쌒, q쌒, q쌒, q쌒, q쌒);
+Test_N(q쌓, q쌓, q쌓, q쌓, q쌓);
+Test_N(q쌔, q쌔, q쌔, q쌔, q쌔);
+Test_N(q쌕, q쌕, q쌕, q쌕, q쌕);
+Test_N(q쌖, q쌖, q쌖, q쌖, q쌖);
+Test_N(q쌗, q쌗, q쌗, q쌗, q쌗);
+Test_N(q쌘, q쌘, q쌘, q쌘, q쌘);
+Test_N(q쌙, q쌙, q쌙, q쌙, q쌙);
+Test_N(q쌚, q쌚, q쌚, q쌚, q쌚);
+Test_N(q쌛, q쌛, q쌛, q쌛, q쌛);
+Test_N(q쌜, q쌜, q쌜, q쌜, q쌜);
+Test_N(q쌝, q쌝, q쌝, q쌝, q쌝);
+Test_N(q쌞, q쌞, q쌞, q쌞, q쌞);
+Test_N(q쌟, q쌟, q쌟, q쌟, q쌟);
+Test_N(q쌠, q쌠, q쌠, q쌠, q쌠);
+Test_N(q쌡, q쌡, q쌡, q쌡, q쌡);
+Test_N(q쌢, q쌢, q쌢, q쌢, q쌢);
+Test_N(q쌣, q쌣, q쌣, q쌣, q쌣);
+Test_N(q쌤, q쌤, q쌤, q쌤, q쌤);
+Test_N(q쌥, q쌥, q쌥, q쌥, q쌥);
+Test_N(q쌦, q쌦, q쌦, q쌦, q쌦);
+Test_N(q쌧, q쌧, q쌧, q쌧, q쌧);
+Test_N(q쌨, q쌨, q쌨, q쌨, q쌨);
+Test_N(q쌩, q쌩, q쌩, q쌩, q쌩);
+Test_N(q쌪, q쌪, q쌪, q쌪, q쌪);
+Test_N(q쌫, q쌫, q쌫, q쌫, q쌫);
+Test_N(q쌬, q쌬, q쌬, q쌬, q쌬);
+Test_N(q쌭, q쌭, q쌭, q쌭, q쌭);
+Test_N(q쌮, q쌮, q쌮, q쌮, q쌮);
+Test_N(q쌯, q쌯, q쌯, q쌯, q쌯);
+Test_N(q쌰, q쌰, q쌰, q쌰, q쌰);
+Test_N(q쌱, q쌱, q쌱, q쌱, q쌱);
+Test_N(q쌲, q쌲, q쌲, q쌲, q쌲);
+Test_N(q쌳, q쌳, q쌳, q쌳, q쌳);
+Test_N(q쌴, q쌴, q쌴, q쌴, q쌴);
+Test_N(q쌵, q쌵, q쌵, q쌵, q쌵);
+Test_N(q쌶, q쌶, q쌶, q쌶, q쌶);
+Test_N(q쌷, q쌷, q쌷, q쌷, q쌷);
+Test_N(q쌸, q쌸, q쌸, q쌸, q쌸);
+Test_N(q쌹, q쌹, q쌹, q쌹, q쌹);
+Test_N(q쌺, q쌺, q쌺, q쌺, q쌺);
+Test_N(q쌻, q쌻, q쌻, q쌻, q쌻);
+Test_N(q쌼, q쌼, q쌼, q쌼, q쌼);
+Test_N(q쌽, q쌽, q쌽, q쌽, q쌽);
+Test_N(q쌾, q쌾, q쌾, q쌾, q쌾);
+Test_N(q쌿, q쌿, q쌿, q쌿, q쌿);
+Test_N(q썀, q썀, q썀, q썀, q썀);
+Test_N(q썁, q썁, q썁, q썁, q썁);
+Test_N(q썂, q썂, q썂, q썂, q썂);
+Test_N(q썃, q썃, q썃, q썃, q썃);
+Test_N(q썄, q썄, q썄, q썄, q썄);
+Test_N(q썅, q썅, q썅, q썅, q썅);
+Test_N(q썆, q썆, q썆, q썆, q썆);
+Test_N(q썇, q썇, q썇, q썇, q썇);
+Test_N(q썈, q썈, q썈, q썈, q썈);
+Test_N(q썉, q썉, q썉, q썉, q썉);
+Test_N(q썊, q썊, q썊, q썊, q썊);
+Test_N(q썋, q썋, q썋, q썋, q썋);
+Test_N(q썌, q썌, q썌, q썌, q썌);
+Test_N(q썍, q썍, q썍, q썍, q썍);
+Test_N(q썎, q썎, q썎, q썎, q썎);
+Test_N(q썏, q썏, q썏, q썏, q썏);
+Test_N(q썐, q썐, q썐, q썐, q썐);
+Test_N(q썑, q썑, q썑, q썑, q썑);
+Test_N(q썒, q썒, q썒, q썒, q썒);
+Test_N(q썓, q썓, q썓, q썓, q썓);
+Test_N(q썔, q썔, q썔, q썔, q썔);
+Test_N(q썕, q썕, q썕, q썕, q썕);
+Test_N(q썖, q썖, q썖, q썖, q썖);
+Test_N(q썗, q썗, q썗, q썗, q썗);
+Test_N(q썘, q썘, q썘, q썘, q썘);
+Test_N(q썙, q썙, q썙, q썙, q썙);
+Test_N(q썚, q썚, q썚, q썚, q썚);
+Test_N(q썛, q썛, q썛, q썛, q썛);
+Test_N(q썜, q썜, q썜, q썜, q썜);
+Test_N(q썝, q썝, q썝, q썝, q썝);
+Test_N(q썞, q썞, q썞, q썞, q썞);
+Test_N(q썟, q썟, q썟, q썟, q썟);
+Test_N(q썠, q썠, q썠, q썠, q썠);
+Test_N(q썡, q썡, q썡, q썡, q썡);
+Test_N(q썢, q썢, q썢, q썢, q썢);
+Test_N(q썣, q썣, q썣, q썣, q썣);
+Test_N(q썤, q썤, q썤, q썤, q썤);
+Test_N(q썥, q썥, q썥, q썥, q썥);
+Test_N(q썦, q썦, q썦, q썦, q썦);
+Test_N(q썧, q썧, q썧, q썧, q썧);
+Test_N(q써, q써, q써, q써, q써);
+Test_N(q썩, q썩, q썩, q썩, q썩);
+Test_N(q썪, q썪, q썪, q썪, q썪);
+Test_N(q썫, q썫, q썫, q썫, q썫);
+Test_N(q썬, q썬, q썬, q썬, q썬);
+Test_N(q썭, q썭, q썭, q썭, q썭);
+Test_N(q썮, q썮, q썮, q썮, q썮);
+Test_N(q썯, q썯, q썯, q썯, q썯);
+Test_N(q썰, q썰, q썰, q썰, q썰);
+Test_N(q썱, q썱, q썱, q썱, q썱);
+Test_N(q썲, q썲, q썲, q썲, q썲);
+Test_N(q썳, q썳, q썳, q썳, q썳);
+Test_N(q썴, q썴, q썴, q썴, q썴);
+Test_N(q썵, q썵, q썵, q썵, q썵);
+Test_N(q썶, q썶, q썶, q썶, q썶);
+Test_N(q썷, q썷, q썷, q썷, q썷);
+Test_N(q썸, q썸, q썸, q썸, q썸);
+Test_N(q썹, q썹, q썹, q썹, q썹);
+Test_N(q썺, q썺, q썺, q썺, q썺);
+Test_N(q썻, q썻, q썻, q썻, q썻);
+Test_N(q썼, q썼, q썼, q썼, q썼);
+Test_N(q썽, q썽, q썽, q썽, q썽);
+Test_N(q썾, q썾, q썾, q썾, q썾);
+Test_N(q썿, q썿, q썿, q썿, q썿);
+Test_N(q쎀, q쎀, q쎀, q쎀, q쎀);
+Test_N(q쎁, q쎁, q쎁, q쎁, q쎁);
+Test_N(q쎂, q쎂, q쎂, q쎂, q쎂);
+Test_N(q쎃, q쎃, q쎃, q쎃, q쎃);
+Test_N(q쎄, q쎄, q쎄, q쎄, q쎄);
+Test_N(q쎅, q쎅, q쎅, q쎅, q쎅);
+Test_N(q쎆, q쎆, q쎆, q쎆, q쎆);
+Test_N(q쎇, q쎇, q쎇, q쎇, q쎇);
+Test_N(q쎈, q쎈, q쎈, q쎈, q쎈);
+Test_N(q쎉, q쎉, q쎉, q쎉, q쎉);
+Test_N(q쎊, q쎊, q쎊, q쎊, q쎊);
+Test_N(q쎋, q쎋, q쎋, q쎋, q쎋);
+Test_N(q쎌, q쎌, q쎌, q쎌, q쎌);
+Test_N(q쎍, q쎍, q쎍, q쎍, q쎍);
+Test_N(q쎎, q쎎, q쎎, q쎎, q쎎);
+Test_N(q쎏, q쎏, q쎏, q쎏, q쎏);
+Test_N(q쎐, q쎐, q쎐, q쎐, q쎐);
+Test_N(q쎑, q쎑, q쎑, q쎑, q쎑);
+Test_N(q쎒, q쎒, q쎒, q쎒, q쎒);
+Test_N(q쎓, q쎓, q쎓, q쎓, q쎓);
+Test_N(q쎔, q쎔, q쎔, q쎔, q쎔);
+Test_N(q쎕, q쎕, q쎕, q쎕, q쎕);
+Test_N(q쎖, q쎖, q쎖, q쎖, q쎖);
+Test_N(q쎗, q쎗, q쎗, q쎗, q쎗);
+Test_N(q쎘, q쎘, q쎘, q쎘, q쎘);
+Test_N(q쎙, q쎙, q쎙, q쎙, q쎙);
+Test_N(q쎚, q쎚, q쎚, q쎚, q쎚);
+Test_N(q쎛, q쎛, q쎛, q쎛, q쎛);
+Test_N(q쎜, q쎜, q쎜, q쎜, q쎜);
+Test_N(q쎝, q쎝, q쎝, q쎝, q쎝);
+Test_N(q쎞, q쎞, q쎞, q쎞, q쎞);
+Test_N(q쎟, q쎟, q쎟, q쎟, q쎟);
+Test_N(q쎠, q쎠, q쎠, q쎠, q쎠);
+Test_N(q쎡, q쎡, q쎡, q쎡, q쎡);
+Test_N(q쎢, q쎢, q쎢, q쎢, q쎢);
+Test_N(q쎣, q쎣, q쎣, q쎣, q쎣);
+Test_N(q쎤, q쎤, q쎤, q쎤, q쎤);
+Test_N(q쎥, q쎥, q쎥, q쎥, q쎥);
+Test_N(q쎦, q쎦, q쎦, q쎦, q쎦);
+Test_N(q쎧, q쎧, q쎧, q쎧, q쎧);
+Test_N(q쎨, q쎨, q쎨, q쎨, q쎨);
+Test_N(q쎩, q쎩, q쎩, q쎩, q쎩);
+Test_N(q쎪, q쎪, q쎪, q쎪, q쎪);
+Test_N(q쎫, q쎫, q쎫, q쎫, q쎫);
+Test_N(q쎬, q쎬, q쎬, q쎬, q쎬);
+Test_N(q쎭, q쎭, q쎭, q쎭, q쎭);
+Test_N(q쎮, q쎮, q쎮, q쎮, q쎮);
+Test_N(q쎯, q쎯, q쎯, q쎯, q쎯);
+Test_N(q쎰, q쎰, q쎰, q쎰, q쎰);
+Test_N(q쎱, q쎱, q쎱, q쎱, q쎱);
+Test_N(q쎲, q쎲, q쎲, q쎲, q쎲);
+Test_N(q쎳, q쎳, q쎳, q쎳, q쎳);
+Test_N(q쎴, q쎴, q쎴, q쎴, q쎴);
+Test_N(q쎵, q쎵, q쎵, q쎵, q쎵);
+Test_N(q쎶, q쎶, q쎶, q쎶, q쎶);
+Test_N(q쎷, q쎷, q쎷, q쎷, q쎷);
+Test_N(q쎸, q쎸, q쎸, q쎸, q쎸);
+Test_N(q쎹, q쎹, q쎹, q쎹, q쎹);
+Test_N(q쎺, q쎺, q쎺, q쎺, q쎺);
+Test_N(q쎻, q쎻, q쎻, q쎻, q쎻);
+Test_N(q쎼, q쎼, q쎼, q쎼, q쎼);
+Test_N(q쎽, q쎽, q쎽, q쎽, q쎽);
+Test_N(q쎾, q쎾, q쎾, q쎾, q쎾);
+Test_N(q쎿, q쎿, q쎿, q쎿, q쎿);
+Test_N(q쏀, q쏀, q쏀, q쏀, q쏀);
+Test_N(q쏁, q쏁, q쏁, q쏁, q쏁);
+Test_N(q쏂, q쏂, q쏂, q쏂, q쏂);
+Test_N(q쏃, q쏃, q쏃, q쏃, q쏃);
+Test_N(q쏄, q쏄, q쏄, q쏄, q쏄);
+Test_N(q쏅, q쏅, q쏅, q쏅, q쏅);
+Test_N(q쏆, q쏆, q쏆, q쏆, q쏆);
+Test_N(q쏇, q쏇, q쏇, q쏇, q쏇);
+Test_N(q쏈, q쏈, q쏈, q쏈, q쏈);
+Test_N(q쏉, q쏉, q쏉, q쏉, q쏉);
+Test_N(q쏊, q쏊, q쏊, q쏊, q쏊);
+Test_N(q쏋, q쏋, q쏋, q쏋, q쏋);
+Test_N(q쏌, q쏌, q쏌, q쏌, q쏌);
+Test_N(q쏍, q쏍, q쏍, q쏍, q쏍);
+Test_N(q쏎, q쏎, q쏎, q쏎, q쏎);
+Test_N(q쏏, q쏏, q쏏, q쏏, q쏏);
+Test_N(q쏐, q쏐, q쏐, q쏐, q쏐);
+Test_N(q쏑, q쏑, q쏑, q쏑, q쏑);
+Test_N(q쏒, q쏒, q쏒, q쏒, q쏒);
+Test_N(q쏓, q쏓, q쏓, q쏓, q쏓);
+Test_N(q쏔, q쏔, q쏔, q쏔, q쏔);
+Test_N(q쏕, q쏕, q쏕, q쏕, q쏕);
+Test_N(q쏖, q쏖, q쏖, q쏖, q쏖);
+Test_N(q쏗, q쏗, q쏗, q쏗, q쏗);
+Test_N(q쏘, q쏘, q쏘, q쏘, q쏘);
+Test_N(q쏙, q쏙, q쏙, q쏙, q쏙);
+Test_N(q쏚, q쏚, q쏚, q쏚, q쏚);
+Test_N(q쏛, q쏛, q쏛, q쏛, q쏛);
+Test_N(q쏜, q쏜, q쏜, q쏜, q쏜);
+Test_N(q쏝, q쏝, q쏝, q쏝, q쏝);
+Test_N(q쏞, q쏞, q쏞, q쏞, q쏞);
+Test_N(q쏟, q쏟, q쏟, q쏟, q쏟);
+Test_N(q쏠, q쏠, q쏠, q쏠, q쏠);
+Test_N(q쏡, q쏡, q쏡, q쏡, q쏡);
+Test_N(q쏢, q쏢, q쏢, q쏢, q쏢);
+Test_N(q쏣, q쏣, q쏣, q쏣, q쏣);
+Test_N(q쏤, q쏤, q쏤, q쏤, q쏤);
+Test_N(q쏥, q쏥, q쏥, q쏥, q쏥);
+Test_N(q쏦, q쏦, q쏦, q쏦, q쏦);
+Test_N(q쏧, q쏧, q쏧, q쏧, q쏧);
+Test_N(q쏨, q쏨, q쏨, q쏨, q쏨);
+Test_N(q쏩, q쏩, q쏩, q쏩, q쏩);
+Test_N(q쏪, q쏪, q쏪, q쏪, q쏪);
+Test_N(q쏫, q쏫, q쏫, q쏫, q쏫);
+Test_N(q쏬, q쏬, q쏬, q쏬, q쏬);
+Test_N(q쏭, q쏭, q쏭, q쏭, q쏭);
+Test_N(q쏮, q쏮, q쏮, q쏮, q쏮);
+Test_N(q쏯, q쏯, q쏯, q쏯, q쏯);
+Test_N(q쏰, q쏰, q쏰, q쏰, q쏰);
+Test_N(q쏱, q쏱, q쏱, q쏱, q쏱);
+Test_N(q쏲, q쏲, q쏲, q쏲, q쏲);
+Test_N(q쏳, q쏳, q쏳, q쏳, q쏳);
+Test_N(q쏴, q쏴, q쏴, q쏴, q쏴);
+Test_N(q쏵, q쏵, q쏵, q쏵, q쏵);
+Test_N(q쏶, q쏶, q쏶, q쏶, q쏶);
+Test_N(q쏷, q쏷, q쏷, q쏷, q쏷);
+Test_N(q쏸, q쏸, q쏸, q쏸, q쏸);
+Test_N(q쏹, q쏹, q쏹, q쏹, q쏹);
+Test_N(q쏺, q쏺, q쏺, q쏺, q쏺);
+Test_N(q쏻, q쏻, q쏻, q쏻, q쏻);
+Test_N(q쏼, q쏼, q쏼, q쏼, q쏼);
+Test_N(q쏽, q쏽, q쏽, q쏽, q쏽);
+Test_N(q쏾, q쏾, q쏾, q쏾, q쏾);
+Test_N(q쏿, q쏿, q쏿, q쏿, q쏿);
+Test_N(q쐀, q쐀, q쐀, q쐀, q쐀);
+Test_N(q쐁, q쐁, q쐁, q쐁, q쐁);
+Test_N(q쐂, q쐂, q쐂, q쐂, q쐂);
+Test_N(q쐃, q쐃, q쐃, q쐃, q쐃);
+Test_N(q쐄, q쐄, q쐄, q쐄, q쐄);
+Test_N(q쐅, q쐅, q쐅, q쐅, q쐅);
+Test_N(q쐆, q쐆, q쐆, q쐆, q쐆);
+Test_N(q쐇, q쐇, q쐇, q쐇, q쐇);
+Test_N(q쐈, q쐈, q쐈, q쐈, q쐈);
+Test_N(q쐉, q쐉, q쐉, q쐉, q쐉);
+Test_N(q쐊, q쐊, q쐊, q쐊, q쐊);
+Test_N(q쐋, q쐋, q쐋, q쐋, q쐋);
+Test_N(q쐌, q쐌, q쐌, q쐌, q쐌);
+Test_N(q쐍, q쐍, q쐍, q쐍, q쐍);
+Test_N(q쐎, q쐎, q쐎, q쐎, q쐎);
+Test_N(q쐏, q쐏, q쐏, q쐏, q쐏);
+Test_N(q쐐, q쐐, q쐐, q쐐, q쐐);
+Test_N(q쐑, q쐑, q쐑, q쐑, q쐑);
+Test_N(q쐒, q쐒, q쐒, q쐒, q쐒);
+Test_N(q쐓, q쐓, q쐓, q쐓, q쐓);
+Test_N(q쐔, q쐔, q쐔, q쐔, q쐔);
+Test_N(q쐕, q쐕, q쐕, q쐕, q쐕);
+Test_N(q쐖, q쐖, q쐖, q쐖, q쐖);
+Test_N(q쐗, q쐗, q쐗, q쐗, q쐗);
+Test_N(q쐘, q쐘, q쐘, q쐘, q쐘);
+Test_N(q쐙, q쐙, q쐙, q쐙, q쐙);
+Test_N(q쐚, q쐚, q쐚, q쐚, q쐚);
+Test_N(q쐛, q쐛, q쐛, q쐛, q쐛);
+Test_N(q쐜, q쐜, q쐜, q쐜, q쐜);
+Test_N(q쐝, q쐝, q쐝, q쐝, q쐝);
+Test_N(q쐞, q쐞, q쐞, q쐞, q쐞);
+Test_N(q쐟, q쐟, q쐟, q쐟, q쐟);
+Test_N(q쐠, q쐠, q쐠, q쐠, q쐠);
+Test_N(q쐡, q쐡, q쐡, q쐡, q쐡);
+Test_N(q쐢, q쐢, q쐢, q쐢, q쐢);
+Test_N(q쐣, q쐣, q쐣, q쐣, q쐣);
+Test_N(q쐤, q쐤, q쐤, q쐤, q쐤);
+Test_N(q쐥, q쐥, q쐥, q쐥, q쐥);
+Test_N(q쐦, q쐦, q쐦, q쐦, q쐦);
+Test_N(q쐧, q쐧, q쐧, q쐧, q쐧);
+Test_N(q쐨, q쐨, q쐨, q쐨, q쐨);
+Test_N(q쐩, q쐩, q쐩, q쐩, q쐩);
+Test_N(q쐪, q쐪, q쐪, q쐪, q쐪);
+Test_N(q쐫, q쐫, q쐫, q쐫, q쐫);
+Test_N(q쐬, q쐬, q쐬, q쐬, q쐬);
+Test_N(q쐭, q쐭, q쐭, q쐭, q쐭);
+Test_N(q쐮, q쐮, q쐮, q쐮, q쐮);
+Test_N(q쐯, q쐯, q쐯, q쐯, q쐯);
+Test_N(q쐰, q쐰, q쐰, q쐰, q쐰);
+Test_N(q쐱, q쐱, q쐱, q쐱, q쐱);
+Test_N(q쐲, q쐲, q쐲, q쐲, q쐲);
+Test_N(q쐳, q쐳, q쐳, q쐳, q쐳);
+Test_N(q쐴, q쐴, q쐴, q쐴, q쐴);
+Test_N(q쐵, q쐵, q쐵, q쐵, q쐵);
+Test_N(q쐶, q쐶, q쐶, q쐶, q쐶);
+Test_N(q쐷, q쐷, q쐷, q쐷, q쐷);
+Test_N(q쐸, q쐸, q쐸, q쐸, q쐸);
+Test_N(q쐹, q쐹, q쐹, q쐹, q쐹);
+Test_N(q쐺, q쐺, q쐺, q쐺, q쐺);
+Test_N(q쐻, q쐻, q쐻, q쐻, q쐻);
+Test_N(q쐼, q쐼, q쐼, q쐼, q쐼);
+Test_N(q쐽, q쐽, q쐽, q쐽, q쐽);
+Test_N(q쐾, q쐾, q쐾, q쐾, q쐾);
+Test_N(q쐿, q쐿, q쐿, q쐿, q쐿);
+Test_N(q쑀, q쑀, q쑀, q쑀, q쑀);
+Test_N(q쑁, q쑁, q쑁, q쑁, q쑁);
+Test_N(q쑂, q쑂, q쑂, q쑂, q쑂);
+Test_N(q쑃, q쑃, q쑃, q쑃, q쑃);
+Test_N(q쑄, q쑄, q쑄, q쑄, q쑄);
+Test_N(q쑅, q쑅, q쑅, q쑅, q쑅);
+Test_N(q쑆, q쑆, q쑆, q쑆, q쑆);
+Test_N(q쑇, q쑇, q쑇, q쑇, q쑇);
+Test_N(q쑈, q쑈, q쑈, q쑈, q쑈);
+Test_N(q쑉, q쑉, q쑉, q쑉, q쑉);
+Test_N(q쑊, q쑊, q쑊, q쑊, q쑊);
+Test_N(q쑋, q쑋, q쑋, q쑋, q쑋);
+Test_N(q쑌, q쑌, q쑌, q쑌, q쑌);
+Test_N(q쑍, q쑍, q쑍, q쑍, q쑍);
+Test_N(q쑎, q쑎, q쑎, q쑎, q쑎);
+Test_N(q쑏, q쑏, q쑏, q쑏, q쑏);
+Test_N(q쑐, q쑐, q쑐, q쑐, q쑐);
+Test_N(q쑑, q쑑, q쑑, q쑑, q쑑);
+Test_N(q쑒, q쑒, q쑒, q쑒, q쑒);
+Test_N(q쑓, q쑓, q쑓, q쑓, q쑓);
+Test_N(q쑔, q쑔, q쑔, q쑔, q쑔);
+Test_N(q쑕, q쑕, q쑕, q쑕, q쑕);
+Test_N(q쑖, q쑖, q쑖, q쑖, q쑖);
+Test_N(q쑗, q쑗, q쑗, q쑗, q쑗);
+Test_N(q쑘, q쑘, q쑘, q쑘, q쑘);
+Test_N(q쑙, q쑙, q쑙, q쑙, q쑙);
+Test_N(q쑚, q쑚, q쑚, q쑚, q쑚);
+Test_N(q쑛, q쑛, q쑛, q쑛, q쑛);
+Test_N(q쑜, q쑜, q쑜, q쑜, q쑜);
+Test_N(q쑝, q쑝, q쑝, q쑝, q쑝);
+Test_N(q쑞, q쑞, q쑞, q쑞, q쑞);
+Test_N(q쑟, q쑟, q쑟, q쑟, q쑟);
+Test_N(q쑠, q쑠, q쑠, q쑠, q쑠);
+Test_N(q쑡, q쑡, q쑡, q쑡, q쑡);
+Test_N(q쑢, q쑢, q쑢, q쑢, q쑢);
+Test_N(q쑣, q쑣, q쑣, q쑣, q쑣);
+Test_N(q쑤, q쑤, q쑤, q쑤, q쑤);
+Test_N(q쑥, q쑥, q쑥, q쑥, q쑥);
+Test_N(q쑦, q쑦, q쑦, q쑦, q쑦);
+Test_N(q쑧, q쑧, q쑧, q쑧, q쑧);
+Test_N(q쑨, q쑨, q쑨, q쑨, q쑨);
+Test_N(q쑩, q쑩, q쑩, q쑩, q쑩);
+Test_N(q쑪, q쑪, q쑪, q쑪, q쑪);
+Test_N(q쑫, q쑫, q쑫, q쑫, q쑫);
+Test_N(q쑬, q쑬, q쑬, q쑬, q쑬);
+Test_N(q쑭, q쑭, q쑭, q쑭, q쑭);
+Test_N(q쑮, q쑮, q쑮, q쑮, q쑮);
+Test_N(q쑯, q쑯, q쑯, q쑯, q쑯);
+Test_N(q쑰, q쑰, q쑰, q쑰, q쑰);
+Test_N(q쑱, q쑱, q쑱, q쑱, q쑱);
+Test_N(q쑲, q쑲, q쑲, q쑲, q쑲);
+Test_N(q쑳, q쑳, q쑳, q쑳, q쑳);
+Test_N(q쑴, q쑴, q쑴, q쑴, q쑴);
+Test_N(q쑵, q쑵, q쑵, q쑵, q쑵);
+Test_N(q쑶, q쑶, q쑶, q쑶, q쑶);
+Test_N(q쑷, q쑷, q쑷, q쑷, q쑷);
+Test_N(q쑸, q쑸, q쑸, q쑸, q쑸);
+Test_N(q쑹, q쑹, q쑹, q쑹, q쑹);
+Test_N(q쑺, q쑺, q쑺, q쑺, q쑺);
+Test_N(q쑻, q쑻, q쑻, q쑻, q쑻);
+Test_N(q쑼, q쑼, q쑼, q쑼, q쑼);
+Test_N(q쑽, q쑽, q쑽, q쑽, q쑽);
+Test_N(q쑾, q쑾, q쑾, q쑾, q쑾);
+Test_N(q쑿, q쑿, q쑿, q쑿, q쑿);
+Test_N(q쒀, q쒀, q쒀, q쒀, q쒀);
+Test_N(q쒁, q쒁, q쒁, q쒁, q쒁);
+Test_N(q쒂, q쒂, q쒂, q쒂, q쒂);
+Test_N(q쒃, q쒃, q쒃, q쒃, q쒃);
+Test_N(q쒄, q쒄, q쒄, q쒄, q쒄);
+Test_N(q쒅, q쒅, q쒅, q쒅, q쒅);
+Test_N(q쒆, q쒆, q쒆, q쒆, q쒆);
+Test_N(q쒇, q쒇, q쒇, q쒇, q쒇);
+Test_N(q쒈, q쒈, q쒈, q쒈, q쒈);
+Test_N(q쒉, q쒉, q쒉, q쒉, q쒉);
+Test_N(q쒊, q쒊, q쒊, q쒊, q쒊);
+Test_N(q쒋, q쒋, q쒋, q쒋, q쒋);
+Test_N(q쒌, q쒌, q쒌, q쒌, q쒌);
+Test_N(q쒍, q쒍, q쒍, q쒍, q쒍);
+Test_N(q쒎, q쒎, q쒎, q쒎, q쒎);
+Test_N(q쒏, q쒏, q쒏, q쒏, q쒏);
+Test_N(q쒐, q쒐, q쒐, q쒐, q쒐);
+Test_N(q쒑, q쒑, q쒑, q쒑, q쒑);
+Test_N(q쒒, q쒒, q쒒, q쒒, q쒒);
+Test_N(q쒓, q쒓, q쒓, q쒓, q쒓);
+Test_N(q쒔, q쒔, q쒔, q쒔, q쒔);
+Test_N(q쒕, q쒕, q쒕, q쒕, q쒕);
+Test_N(q쒖, q쒖, q쒖, q쒖, q쒖);
+Test_N(q쒗, q쒗, q쒗, q쒗, q쒗);
+Test_N(q쒘, q쒘, q쒘, q쒘, q쒘);
+Test_N(q쒙, q쒙, q쒙, q쒙, q쒙);
+Test_N(q쒚, q쒚, q쒚, q쒚, q쒚);
+Test_N(q쒛, q쒛, q쒛, q쒛, q쒛);
+Test_N(q쒜, q쒜, q쒜, q쒜, q쒜);
+Test_N(q쒝, q쒝, q쒝, q쒝, q쒝);
+Test_N(q쒞, q쒞, q쒞, q쒞, q쒞);
+Test_N(q쒟, q쒟, q쒟, q쒟, q쒟);
+Test_N(q쒠, q쒠, q쒠, q쒠, q쒠);
+Test_N(q쒡, q쒡, q쒡, q쒡, q쒡);
+Test_N(q쒢, q쒢, q쒢, q쒢, q쒢);
+Test_N(q쒣, q쒣, q쒣, q쒣, q쒣);
+Test_N(q쒤, q쒤, q쒤, q쒤, q쒤);
+Test_N(q쒥, q쒥, q쒥, q쒥, q쒥);
+Test_N(q쒦, q쒦, q쒦, q쒦, q쒦);
+Test_N(q쒧, q쒧, q쒧, q쒧, q쒧);
+Test_N(q쒨, q쒨, q쒨, q쒨, q쒨);
+Test_N(q쒩, q쒩, q쒩, q쒩, q쒩);
+Test_N(q쒪, q쒪, q쒪, q쒪, q쒪);
+Test_N(q쒫, q쒫, q쒫, q쒫, q쒫);
+Test_N(q쒬, q쒬, q쒬, q쒬, q쒬);
+Test_N(q쒭, q쒭, q쒭, q쒭, q쒭);
+Test_N(q쒮, q쒮, q쒮, q쒮, q쒮);
+Test_N(q쒯, q쒯, q쒯, q쒯, q쒯);
+Test_N(q쒰, q쒰, q쒰, q쒰, q쒰);
+Test_N(q쒱, q쒱, q쒱, q쒱, q쒱);
+Test_N(q쒲, q쒲, q쒲, q쒲, q쒲);
+Test_N(q쒳, q쒳, q쒳, q쒳, q쒳);
+Test_N(q쒴, q쒴, q쒴, q쒴, q쒴);
+Test_N(q쒵, q쒵, q쒵, q쒵, q쒵);
+Test_N(q쒶, q쒶, q쒶, q쒶, q쒶);
+Test_N(q쒷, q쒷, q쒷, q쒷, q쒷);
+Test_N(q쒸, q쒸, q쒸, q쒸, q쒸);
+Test_N(q쒹, q쒹, q쒹, q쒹, q쒹);
+Test_N(q쒺, q쒺, q쒺, q쒺, q쒺);
+Test_N(q쒻, q쒻, q쒻, q쒻, q쒻);
+Test_N(q쒼, q쒼, q쒼, q쒼, q쒼);
+Test_N(q쒽, q쒽, q쒽, q쒽, q쒽);
+Test_N(q쒾, q쒾, q쒾, q쒾, q쒾);
+Test_N(q쒿, q쒿, q쒿, q쒿, q쒿);
+Test_N(q쓀, q쓀, q쓀, q쓀, q쓀);
+Test_N(q쓁, q쓁, q쓁, q쓁, q쓁);
+Test_N(q쓂, q쓂, q쓂, q쓂, q쓂);
+Test_N(q쓃, q쓃, q쓃, q쓃, q쓃);
+Test_N(q쓄, q쓄, q쓄, q쓄, q쓄);
+Test_N(q쓅, q쓅, q쓅, q쓅, q쓅);
+Test_N(q쓆, q쓆, q쓆, q쓆, q쓆);
+Test_N(q쓇, q쓇, q쓇, q쓇, q쓇);
+Test_N(q쓈, q쓈, q쓈, q쓈, q쓈);
+Test_N(q쓉, q쓉, q쓉, q쓉, q쓉);
+Test_N(q쓊, q쓊, q쓊, q쓊, q쓊);
+Test_N(q쓋, q쓋, q쓋, q쓋, q쓋);
+Test_N(q쓌, q쓌, q쓌, q쓌, q쓌);
+Test_N(q쓍, q쓍, q쓍, q쓍, q쓍);
+Test_N(q쓎, q쓎, q쓎, q쓎, q쓎);
+Test_N(q쓏, q쓏, q쓏, q쓏, q쓏);
+Test_N(q쓐, q쓐, q쓐, q쓐, q쓐);
+Test_N(q쓑, q쓑, q쓑, q쓑, q쓑);
+Test_N(q쓒, q쓒, q쓒, q쓒, q쓒);
+Test_N(q쓓, q쓓, q쓓, q쓓, q쓓);
+Test_N(q쓔, q쓔, q쓔, q쓔, q쓔);
+Test_N(q쓕, q쓕, q쓕, q쓕, q쓕);
+Test_N(q쓖, q쓖, q쓖, q쓖, q쓖);
+Test_N(q쓗, q쓗, q쓗, q쓗, q쓗);
+Test_N(q쓘, q쓘, q쓘, q쓘, q쓘);
+Test_N(q쓙, q쓙, q쓙, q쓙, q쓙);
+Test_N(q쓚, q쓚, q쓚, q쓚, q쓚);
+Test_N(q쓛, q쓛, q쓛, q쓛, q쓛);
+Test_N(q쓜, q쓜, q쓜, q쓜, q쓜);
+Test_N(q쓝, q쓝, q쓝, q쓝, q쓝);
+Test_N(q쓞, q쓞, q쓞, q쓞, q쓞);
+Test_N(q쓟, q쓟, q쓟, q쓟, q쓟);
+Test_N(q쓠, q쓠, q쓠, q쓠, q쓠);
+Test_N(q쓡, q쓡, q쓡, q쓡, q쓡);
+Test_N(q쓢, q쓢, q쓢, q쓢, q쓢);
+Test_N(q쓣, q쓣, q쓣, q쓣, q쓣);
+Test_N(q쓤, q쓤, q쓤, q쓤, q쓤);
+Test_N(q쓥, q쓥, q쓥, q쓥, q쓥);
+Test_N(q쓦, q쓦, q쓦, q쓦, q쓦);
+Test_N(q쓧, q쓧, q쓧, q쓧, q쓧);
+Test_N(q쓨, q쓨, q쓨, q쓨, q쓨);
+Test_N(q쓩, q쓩, q쓩, q쓩, q쓩);
+Test_N(q쓪, q쓪, q쓪, q쓪, q쓪);
+Test_N(q쓫, q쓫, q쓫, q쓫, q쓫);
+Test_N(q쓬, q쓬, q쓬, q쓬, q쓬);
+Test_N(q쓭, q쓭, q쓭, q쓭, q쓭);
+Test_N(q쓮, q쓮, q쓮, q쓮, q쓮);
+Test_N(q쓯, q쓯, q쓯, q쓯, q쓯);
+Test_N(q쓰, q쓰, q쓰, q쓰, q쓰);
+Test_N(q쓱, q쓱, q쓱, q쓱, q쓱);
+Test_N(q쓲, q쓲, q쓲, q쓲, q쓲);
+Test_N(q쓳, q쓳, q쓳, q쓳, q쓳);
+Test_N(q쓴, q쓴, q쓴, q쓴, q쓴);
+Test_N(q쓵, q쓵, q쓵, q쓵, q쓵);
+Test_N(q쓶, q쓶, q쓶, q쓶, q쓶);
+Test_N(q쓷, q쓷, q쓷, q쓷, q쓷);
+Test_N(q쓸, q쓸, q쓸, q쓸, q쓸);
+Test_N(q쓹, q쓹, q쓹, q쓹, q쓹);
+Test_N(q쓺, q쓺, q쓺, q쓺, q쓺);
+Test_N(q쓻, q쓻, q쓻, q쓻, q쓻);
+Test_N(q쓼, q쓼, q쓼, q쓼, q쓼);
+Test_N(q쓽, q쓽, q쓽, q쓽, q쓽);
+Test_N(q쓾, q쓾, q쓾, q쓾, q쓾);
+Test_N(q쓿, q쓿, q쓿, q쓿, q쓿);
+Test_N(q씀, q씀, q씀, q씀, q씀);
+Test_N(q씁, q씁, q씁, q씁, q씁);
+Test_N(q씂, q씂, q씂, q씂, q씂);
+Test_N(q씃, q씃, q씃, q씃, q씃);
+Test_N(q씄, q씄, q씄, q씄, q씄);
+Test_N(q씅, q씅, q씅, q씅, q씅);
+Test_N(q씆, q씆, q씆, q씆, q씆);
+Test_N(q씇, q씇, q씇, q씇, q씇);
+Test_N(q씈, q씈, q씈, q씈, q씈);
+Test_N(q씉, q씉, q씉, q씉, q씉);
+Test_N(q씊, q씊, q씊, q씊, q씊);
+Test_N(q씋, q씋, q씋, q씋, q씋);
+Test_N(q씌, q씌, q씌, q씌, q씌);
+Test_N(q씍, q씍, q씍, q씍, q씍);
+Test_N(q씎, q씎, q씎, q씎, q씎);
+Test_N(q씏, q씏, q씏, q씏, q씏);
+Test_N(q씐, q씐, q씐, q씐, q씐);
+Test_N(q씑, q씑, q씑, q씑, q씑);
+Test_N(q씒, q씒, q씒, q씒, q씒);
+Test_N(q씓, q씓, q씓, q씓, q씓);
+Test_N(q씔, q씔, q씔, q씔, q씔);
+Test_N(q씕, q씕, q씕, q씕, q씕);
+Test_N(q씖, q씖, q씖, q씖, q씖);
+Test_N(q씗, q씗, q씗, q씗, q씗);
+Test_N(q씘, q씘, q씘, q씘, q씘);
+Test_N(q씙, q씙, q씙, q씙, q씙);
+Test_N(q씚, q씚, q씚, q씚, q씚);
+Test_N(q씛, q씛, q씛, q씛, q씛);
+Test_N(q씜, q씜, q씜, q씜, q씜);
+Test_N(q씝, q씝, q씝, q씝, q씝);
+Test_N(q씞, q씞, q씞, q씞, q씞);
+Test_N(q씟, q씟, q씟, q씟, q씟);
+Test_N(q씠, q씠, q씠, q씠, q씠);
+Test_N(q씡, q씡, q씡, q씡, q씡);
+Test_N(q씢, q씢, q씢, q씢, q씢);
+Test_N(q씣, q씣, q씣, q씣, q씣);
+Test_N(q씤, q씤, q씤, q씤, q씤);
+Test_N(q씥, q씥, q씥, q씥, q씥);
+Test_N(q씦, q씦, q씦, q씦, q씦);
+Test_N(q씧, q씧, q씧, q씧, q씧);
+Test_N(q씨, q씨, q씨, q씨, q씨);
+Test_N(q씩, q씩, q씩, q씩, q씩);
+Test_N(q씪, q씪, q씪, q씪, q씪);
+Test_N(q씫, q씫, q씫, q씫, q씫);
+Test_N(q씬, q씬, q씬, q씬, q씬);
+Test_N(q씭, q씭, q씭, q씭, q씭);
+Test_N(q씮, q씮, q씮, q씮, q씮);
+Test_N(q씯, q씯, q씯, q씯, q씯);
+Test_N(q씰, q씰, q씰, q씰, q씰);
+Test_N(q씱, q씱, q씱, q씱, q씱);
+Test_N(q씲, q씲, q씲, q씲, q씲);
+Test_N(q씳, q씳, q씳, q씳, q씳);
+Test_N(q씴, q씴, q씴, q씴, q씴);
+Test_N(q씵, q씵, q씵, q씵, q씵);
+Test_N(q씶, q씶, q씶, q씶, q씶);
+Test_N(q씷, q씷, q씷, q씷, q씷);
+Test_N(q씸, q씸, q씸, q씸, q씸);
+Test_N(q씹, q씹, q씹, q씹, q씹);
+Test_N(q씺, q씺, q씺, q씺, q씺);
+Test_N(q씻, q씻, q씻, q씻, q씻);
+Test_N(q씼, q씼, q씼, q씼, q씼);
+Test_N(q씽, q씽, q씽, q씽, q씽);
+Test_N(q씾, q씾, q씾, q씾, q씾);
+Test_N(q씿, q씿, q씿, q씿, q씿);
+Test_N(q앀, q앀, q앀, q앀, q앀);
+Test_N(q앁, q앁, q앁, q앁, q앁);
+Test_N(q앂, q앂, q앂, q앂, q앂);
+Test_N(q앃, q앃, q앃, q앃, q앃);
+Test_N(q아, q아, q아, q아, q아);
+Test_N(q악, q악, q악, q악, q악);
+Test_N(q앆, q앆, q앆, q앆, q앆);
+Test_N(q앇, q앇, q앇, q앇, q앇);
+Test_N(q안, q안, q안, q안, q안);
+Test_N(q앉, q앉, q앉, q앉, q앉);
+Test_N(q않, q않, q않, q않, q않);
+Test_N(q앋, q앋, q앋, q앋, q앋);
+Test_N(q알, q알, q알, q알, q알);
+Test_N(q앍, q앍, q앍, q앍, q앍);
+Test_N(q앎, q앎, q앎, q앎, q앎);
+Test_N(q앏, q앏, q앏, q앏, q앏);
+Test_N(q앐, q앐, q앐, q앐, q앐);
+Test_N(q앑, q앑, q앑, q앑, q앑);
+Test_N(q앒, q앒, q앒, q앒, q앒);
+Test_N(q앓, q앓, q앓, q앓, q앓);
+Test_N(q암, q암, q암, q암, q암);
+Test_N(q압, q압, q압, q압, q압);
+Test_N(q앖, q앖, q앖, q앖, q앖);
+Test_N(q앗, q앗, q앗, q앗, q앗);
+Test_N(q았, q았, q았, q았, q았);
+Test_N(q앙, q앙, q앙, q앙, q앙);
+Test_N(q앚, q앚, q앚, q앚, q앚);
+Test_N(q앛, q앛, q앛, q앛, q앛);
+Test_N(q앜, q앜, q앜, q앜, q앜);
+Test_N(q앝, q앝, q앝, q앝, q앝);
+Test_N(q앞, q앞, q앞, q앞, q앞);
+Test_N(q앟, q앟, q앟, q앟, q앟);
+Test_N(q애, q애, q애, q애, q애);
+Test_N(q액, q액, q액, q액, q액);
+Test_N(q앢, q앢, q앢, q앢, q앢);
+Test_N(q앣, q앣, q앣, q앣, q앣);
+Test_N(q앤, q앤, q앤, q앤, q앤);
+Test_N(q앥, q앥, q앥, q앥, q앥);
+Test_N(q앦, q앦, q앦, q앦, q앦);
+Test_N(q앧, q앧, q앧, q앧, q앧);
+Test_N(q앨, q앨, q앨, q앨, q앨);
+Test_N(q앩, q앩, q앩, q앩, q앩);
+Test_N(q앪, q앪, q앪, q앪, q앪);
+Test_N(q앫, q앫, q앫, q앫, q앫);
+Test_N(q앬, q앬, q앬, q앬, q앬);
+Test_N(q앭, q앭, q앭, q앭, q앭);
+Test_N(q앮, q앮, q앮, q앮, q앮);
+Test_N(q앯, q앯, q앯, q앯, q앯);
+Test_N(q앰, q앰, q앰, q앰, q앰);
+Test_N(q앱, q앱, q앱, q앱, q앱);
+Test_N(q앲, q앲, q앲, q앲, q앲);
+Test_N(q앳, q앳, q앳, q앳, q앳);
+Test_N(q앴, q앴, q앴, q앴, q앴);
+Test_N(q앵, q앵, q앵, q앵, q앵);
+Test_N(q앶, q앶, q앶, q앶, q앶);
+Test_N(q앷, q앷, q앷, q앷, q앷);
+Test_N(q앸, q앸, q앸, q앸, q앸);
+Test_N(q앹, q앹, q앹, q앹, q앹);
+Test_N(q앺, q앺, q앺, q앺, q앺);
+Test_N(q앻, q앻, q앻, q앻, q앻);
+Test_N(q야, q야, q야, q야, q야);
+Test_N(q약, q약, q약, q약, q약);
+Test_N(q앾, q앾, q앾, q앾, q앾);
+Test_N(q앿, q앿, q앿, q앿, q앿);
+Test_N(q얀, q얀, q얀, q얀, q얀);
+Test_N(q얁, q얁, q얁, q얁, q얁);
+Test_N(q얂, q얂, q얂, q얂, q얂);
+Test_N(q얃, q얃, q얃, q얃, q얃);
+Test_N(q얄, q얄, q얄, q얄, q얄);
+Test_N(q얅, q얅, q얅, q얅, q얅);
+Test_N(q얆, q얆, q얆, q얆, q얆);
+Test_N(q얇, q얇, q얇, q얇, q얇);
+Test_N(q얈, q얈, q얈, q얈, q얈);
+Test_N(q얉, q얉, q얉, q얉, q얉);
+Test_N(q얊, q얊, q얊, q얊, q얊);
+Test_N(q얋, q얋, q얋, q얋, q얋);
+Test_N(q얌, q얌, q얌, q얌, q얌);
+Test_N(q얍, q얍, q얍, q얍, q얍);
+Test_N(q얎, q얎, q얎, q얎, q얎);
+Test_N(q얏, q얏, q얏, q얏, q얏);
+Test_N(q얐, q얐, q얐, q얐, q얐);
+Test_N(q양, q양, q양, q양, q양);
+Test_N(q얒, q얒, q얒, q얒, q얒);
+Test_N(q얓, q얓, q얓, q얓, q얓);
+Test_N(q얔, q얔, q얔, q얔, q얔);
+Test_N(q얕, q얕, q얕, q얕, q얕);
+Test_N(q얖, q얖, q얖, q얖, q얖);
+Test_N(q얗, q얗, q얗, q얗, q얗);
+Test_N(q얘, q얘, q얘, q얘, q얘);
+Test_N(q얙, q얙, q얙, q얙, q얙);
+Test_N(q얚, q얚, q얚, q얚, q얚);
+Test_N(q얛, q얛, q얛, q얛, q얛);
+Test_N(q얜, q얜, q얜, q얜, q얜);
+Test_N(q얝, q얝, q얝, q얝, q얝);
+Test_N(q얞, q얞, q얞, q얞, q얞);
+Test_N(q얟, q얟, q얟, q얟, q얟);
+Test_N(q얠, q얠, q얠, q얠, q얠);
+Test_N(q얡, q얡, q얡, q얡, q얡);
+Test_N(q얢, q얢, q얢, q얢, q얢);
+Test_N(q얣, q얣, q얣, q얣, q얣);
+Test_N(q얤, q얤, q얤, q얤, q얤);
+Test_N(q얥, q얥, q얥, q얥, q얥);
+Test_N(q얦, q얦, q얦, q얦, q얦);
+Test_N(q얧, q얧, q얧, q얧, q얧);
+Test_N(q얨, q얨, q얨, q얨, q얨);
+Test_N(q얩, q얩, q얩, q얩, q얩);
+Test_N(q얪, q얪, q얪, q얪, q얪);
+Test_N(q얫, q얫, q얫, q얫, q얫);
+Test_N(q얬, q얬, q얬, q얬, q얬);
+Test_N(q얭, q얭, q얭, q얭, q얭);
+Test_N(q얮, q얮, q얮, q얮, q얮);
+Test_N(q얯, q얯, q얯, q얯, q얯);
+Test_N(q얰, q얰, q얰, q얰, q얰);
+Test_N(q얱, q얱, q얱, q얱, q얱);
+Test_N(q얲, q얲, q얲, q얲, q얲);
+Test_N(q얳, q얳, q얳, q얳, q얳);
+Test_N(q어, q어, q어, q어, q어);
+Test_N(q억, q억, q억, q억, q억);
+Test_N(q얶, q얶, q얶, q얶, q얶);
+Test_N(q얷, q얷, q얷, q얷, q얷);
+Test_N(q언, q언, q언, q언, q언);
+Test_N(q얹, q얹, q얹, q얹, q얹);
+Test_N(q얺, q얺, q얺, q얺, q얺);
+Test_N(q얻, q얻, q얻, q얻, q얻);
+Test_N(q얼, q얼, q얼, q얼, q얼);
+Test_N(q얽, q얽, q얽, q얽, q얽);
+Test_N(q얾, q얾, q얾, q얾, q얾);
+Test_N(q얿, q얿, q얿, q얿, q얿);
+Test_N(q엀, q엀, q엀, q엀, q엀);
+Test_N(q엁, q엁, q엁, q엁, q엁);
+Test_N(q엂, q엂, q엂, q엂, q엂);
+Test_N(q엃, q엃, q엃, q엃, q엃);
+Test_N(q엄, q엄, q엄, q엄, q엄);
+Test_N(q업, q업, q업, q업, q업);
+Test_N(q없, q없, q없, q없, q없);
+Test_N(q엇, q엇, q엇, q엇, q엇);
+Test_N(q었, q었, q었, q었, q었);
+Test_N(q엉, q엉, q엉, q엉, q엉);
+Test_N(q엊, q엊, q엊, q엊, q엊);
+Test_N(q엋, q엋, q엋, q엋, q엋);
+Test_N(q엌, q엌, q엌, q엌, q엌);
+Test_N(q엍, q엍, q엍, q엍, q엍);
+Test_N(q엎, q엎, q엎, q엎, q엎);
+Test_N(q엏, q엏, q엏, q엏, q엏);
+Test_N(q에, q에, q에, q에, q에);
+Test_N(q엑, q엑, q엑, q엑, q엑);
+Test_N(q엒, q엒, q엒, q엒, q엒);
+Test_N(q엓, q엓, q엓, q엓, q엓);
+Test_N(q엔, q엔, q엔, q엔, q엔);
+Test_N(q엕, q엕, q엕, q엕, q엕);
+Test_N(q엖, q엖, q엖, q엖, q엖);
+Test_N(q엗, q엗, q엗, q엗, q엗);
+Test_N(q엘, q엘, q엘, q엘, q엘);
+Test_N(q엙, q엙, q엙, q엙, q엙);
+Test_N(q엚, q엚, q엚, q엚, q엚);
+Test_N(q엛, q엛, q엛, q엛, q엛);
+Test_N(q엜, q엜, q엜, q엜, q엜);
+Test_N(q엝, q엝, q엝, q엝, q엝);
+Test_N(q엞, q엞, q엞, q엞, q엞);
+Test_N(q엟, q엟, q엟, q엟, q엟);
+Test_N(q엠, q엠, q엠, q엠, q엠);
+Test_N(q엡, q엡, q엡, q엡, q엡);
+Test_N(q엢, q엢, q엢, q엢, q엢);
+Test_N(q엣, q엣, q엣, q엣, q엣);
+Test_N(q엤, q엤, q엤, q엤, q엤);
+Test_N(q엥, q엥, q엥, q엥, q엥);
+Test_N(q엦, q엦, q엦, q엦, q엦);
+Test_N(q엧, q엧, q엧, q엧, q엧);
+Test_N(q엨, q엨, q엨, q엨, q엨);
+Test_N(q엩, q엩, q엩, q엩, q엩);
+Test_N(q엪, q엪, q엪, q엪, q엪);
+Test_N(q엫, q엫, q엫, q엫, q엫);
+Test_N(q여, q여, q여, q여, q여);
+Test_N(q역, q역, q역, q역, q역);
+Test_N(q엮, q엮, q엮, q엮, q엮);
+Test_N(q엯, q엯, q엯, q엯, q엯);
+Test_N(q연, q연, q연, q연, q연);
+Test_N(q엱, q엱, q엱, q엱, q엱);
+Test_N(q엲, q엲, q엲, q엲, q엲);
+Test_N(q엳, q엳, q엳, q엳, q엳);
+Test_N(q열, q열, q열, q열, q열);
+Test_N(q엵, q엵, q엵, q엵, q엵);
+Test_N(q엶, q엶, q엶, q엶, q엶);
+Test_N(q엷, q엷, q엷, q엷, q엷);
+Test_N(q엸, q엸, q엸, q엸, q엸);
+Test_N(q엹, q엹, q엹, q엹, q엹);
+Test_N(q엺, q엺, q엺, q엺, q엺);
+Test_N(q엻, q엻, q엻, q엻, q엻);
+Test_N(q염, q염, q염, q염, q염);
+Test_N(q엽, q엽, q엽, q엽, q엽);
+Test_N(q엾, q엾, q엾, q엾, q엾);
+Test_N(q엿, q엿, q엿, q엿, q엿);
+Test_N(q였, q였, q였, q였, q였);
+Test_N(q영, q영, q영, q영, q영);
+Test_N(q옂, q옂, q옂, q옂, q옂);
+Test_N(q옃, q옃, q옃, q옃, q옃);
+Test_N(q옄, q옄, q옄, q옄, q옄);
+Test_N(q옅, q옅, q옅, q옅, q옅);
+Test_N(q옆, q옆, q옆, q옆, q옆);
+Test_N(q옇, q옇, q옇, q옇, q옇);
+Test_N(q예, q예, q예, q예, q예);
+Test_N(q옉, q옉, q옉, q옉, q옉);
+Test_N(q옊, q옊, q옊, q옊, q옊);
+Test_N(q옋, q옋, q옋, q옋, q옋);
+Test_N(q옌, q옌, q옌, q옌, q옌);
+Test_N(q옍, q옍, q옍, q옍, q옍);
+Test_N(q옎, q옎, q옎, q옎, q옎);
+Test_N(q옏, q옏, q옏, q옏, q옏);
+Test_N(q옐, q옐, q옐, q옐, q옐);
+Test_N(q옑, q옑, q옑, q옑, q옑);
+Test_N(q옒, q옒, q옒, q옒, q옒);
+Test_N(q옓, q옓, q옓, q옓, q옓);
+Test_N(q옔, q옔, q옔, q옔, q옔);
+Test_N(q옕, q옕, q옕, q옕, q옕);
+Test_N(q옖, q옖, q옖, q옖, q옖);
+Test_N(q옗, q옗, q옗, q옗, q옗);
+Test_N(q옘, q옘, q옘, q옘, q옘);
+Test_N(q옙, q옙, q옙, q옙, q옙);
+Test_N(q옚, q옚, q옚, q옚, q옚);
+Test_N(q옛, q옛, q옛, q옛, q옛);
+Test_N(q옜, q옜, q옜, q옜, q옜);
+Test_N(q옝, q옝, q옝, q옝, q옝);
+Test_N(q옞, q옞, q옞, q옞, q옞);
+Test_N(q옟, q옟, q옟, q옟, q옟);
+Test_N(q옠, q옠, q옠, q옠, q옠);
+Test_N(q옡, q옡, q옡, q옡, q옡);
+Test_N(q옢, q옢, q옢, q옢, q옢);
+Test_N(q옣, q옣, q옣, q옣, q옣);
+Test_N(q오, q오, q오, q오, q오);
+Test_N(q옥, q옥, q옥, q옥, q옥);
+Test_N(q옦, q옦, q옦, q옦, q옦);
+Test_N(q옧, q옧, q옧, q옧, q옧);
+Test_N(q온, q온, q온, q온, q온);
+Test_N(q옩, q옩, q옩, q옩, q옩);
+Test_N(q옪, q옪, q옪, q옪, q옪);
+Test_N(q옫, q옫, q옫, q옫, q옫);
+Test_N(q올, q올, q올, q올, q올);
+Test_N(q옭, q옭, q옭, q옭, q옭);
+Test_N(q옮, q옮, q옮, q옮, q옮);
+Test_N(q옯, q옯, q옯, q옯, q옯);
+Test_N(q옰, q옰, q옰, q옰, q옰);
+Test_N(q옱, q옱, q옱, q옱, q옱);
+Test_N(q옲, q옲, q옲, q옲, q옲);
+Test_N(q옳, q옳, q옳, q옳, q옳);
+Test_N(q옴, q옴, q옴, q옴, q옴);
+Test_N(q옵, q옵, q옵, q옵, q옵);
+Test_N(q옶, q옶, q옶, q옶, q옶);
+Test_N(q옷, q옷, q옷, q옷, q옷);
+Test_N(q옸, q옸, q옸, q옸, q옸);
+Test_N(q옹, q옹, q옹, q옹, q옹);
+Test_N(q옺, q옺, q옺, q옺, q옺);
+Test_N(q옻, q옻, q옻, q옻, q옻);
+Test_N(q옼, q옼, q옼, q옼, q옼);
+Test_N(q옽, q옽, q옽, q옽, q옽);
+Test_N(q옾, q옾, q옾, q옾, q옾);
+Test_N(q옿, q옿, q옿, q옿, q옿);
+Test_N(q와, q와, q와, q와, q와);
+Test_N(q왁, q왁, q왁, q왁, q왁);
+Test_N(q왂, q왂, q왂, q왂, q왂);
+Test_N(q왃, q왃, q왃, q왃, q왃);
+Test_N(q완, q완, q완, q완, q완);
+Test_N(q왅, q왅, q왅, q왅, q왅);
+Test_N(q왆, q왆, q왆, q왆, q왆);
+Test_N(q왇, q왇, q왇, q왇, q왇);
+Test_N(q왈, q왈, q왈, q왈, q왈);
+Test_N(q왉, q왉, q왉, q왉, q왉);
+Test_N(q왊, q왊, q왊, q왊, q왊);
+Test_N(q왋, q왋, q왋, q왋, q왋);
+Test_N(q왌, q왌, q왌, q왌, q왌);
+Test_N(q왍, q왍, q왍, q왍, q왍);
+Test_N(q왎, q왎, q왎, q왎, q왎);
+Test_N(q왏, q왏, q왏, q왏, q왏);
+Test_N(q왐, q왐, q왐, q왐, q왐);
+Test_N(q왑, q왑, q왑, q왑, q왑);
+Test_N(q왒, q왒, q왒, q왒, q왒);
+Test_N(q왓, q왓, q왓, q왓, q왓);
+Test_N(q왔, q왔, q왔, q왔, q왔);
+Test_N(q왕, q왕, q왕, q왕, q왕);
+Test_N(q왖, q왖, q왖, q왖, q왖);
+Test_N(q왗, q왗, q왗, q왗, q왗);
+Test_N(q왘, q왘, q왘, q왘, q왘);
+Test_N(q왙, q왙, q왙, q왙, q왙);
+Test_N(q왚, q왚, q왚, q왚, q왚);
+Test_N(q왛, q왛, q왛, q왛, q왛);
+Test_N(q왜, q왜, q왜, q왜, q왜);
+Test_N(q왝, q왝, q왝, q왝, q왝);
+Test_N(q왞, q왞, q왞, q왞, q왞);
+Test_N(q왟, q왟, q왟, q왟, q왟);
+Test_N(q왠, q왠, q왠, q왠, q왠);
+Test_N(q왡, q왡, q왡, q왡, q왡);
+Test_N(q왢, q왢, q왢, q왢, q왢);
+Test_N(q왣, q왣, q왣, q왣, q왣);
+Test_N(q왤, q왤, q왤, q왤, q왤);
+Test_N(q왥, q왥, q왥, q왥, q왥);
+Test_N(q왦, q왦, q왦, q왦, q왦);
+Test_N(q왧, q왧, q왧, q왧, q왧);
+Test_N(q왨, q왨, q왨, q왨, q왨);
+Test_N(q왩, q왩, q왩, q왩, q왩);
+Test_N(q왪, q왪, q왪, q왪, q왪);
+Test_N(q왫, q왫, q왫, q왫, q왫);
+Test_N(q왬, q왬, q왬, q왬, q왬);
+Test_N(q왭, q왭, q왭, q왭, q왭);
+Test_N(q왮, q왮, q왮, q왮, q왮);
+Test_N(q왯, q왯, q왯, q왯, q왯);
+Test_N(q왰, q왰, q왰, q왰, q왰);
+Test_N(q왱, q왱, q왱, q왱, q왱);
+Test_N(q왲, q왲, q왲, q왲, q왲);
+Test_N(q왳, q왳, q왳, q왳, q왳);
+Test_N(q왴, q왴, q왴, q왴, q왴);
+Test_N(q왵, q왵, q왵, q왵, q왵);
+Test_N(q왶, q왶, q왶, q왶, q왶);
+Test_N(q왷, q왷, q왷, q왷, q왷);
+Test_N(q외, q외, q외, q외, q외);
+Test_N(q왹, q왹, q왹, q왹, q왹);
+Test_N(q왺, q왺, q왺, q왺, q왺);
+Test_N(q왻, q왻, q왻, q왻, q왻);
+Test_N(q왼, q왼, q왼, q왼, q왼);
+Test_N(q왽, q왽, q왽, q왽, q왽);
+Test_N(q왾, q왾, q왾, q왾, q왾);
+Test_N(q왿, q왿, q왿, q왿, q왿);
+Test_N(q욀, q욀, q욀, q욀, q욀);
+Test_N(q욁, q욁, q욁, q욁, q욁);
+Test_N(q욂, q욂, q욂, q욂, q욂);
+Test_N(q욃, q욃, q욃, q욃, q욃);
+Test_N(q욄, q욄, q욄, q욄, q욄);
+Test_N(q욅, q욅, q욅, q욅, q욅);
+Test_N(q욆, q욆, q욆, q욆, q욆);
+Test_N(q욇, q욇, q욇, q욇, q욇);
+Test_N(q욈, q욈, q욈, q욈, q욈);
+Test_N(q욉, q욉, q욉, q욉, q욉);
+Test_N(q욊, q욊, q욊, q욊, q욊);
+Test_N(q욋, q욋, q욋, q욋, q욋);
+Test_N(q욌, q욌, q욌, q욌, q욌);
+Test_N(q욍, q욍, q욍, q욍, q욍);
+Test_N(q욎, q욎, q욎, q욎, q욎);
+Test_N(q욏, q욏, q욏, q욏, q욏);
+Test_N(q욐, q욐, q욐, q욐, q욐);
+Test_N(q욑, q욑, q욑, q욑, q욑);
+Test_N(q욒, q욒, q욒, q욒, q욒);
+Test_N(q욓, q욓, q욓, q욓, q욓);
+Test_N(q요, q요, q요, q요, q요);
+Test_N(q욕, q욕, q욕, q욕, q욕);
+Test_N(q욖, q욖, q욖, q욖, q욖);
+Test_N(q욗, q욗, q욗, q욗, q욗);
+Test_N(q욘, q욘, q욘, q욘, q욘);
+Test_N(q욙, q욙, q욙, q욙, q욙);
+Test_N(q욚, q욚, q욚, q욚, q욚);
+Test_N(q욛, q욛, q욛, q욛, q욛);
+Test_N(q욜, q욜, q욜, q욜, q욜);
+Test_N(q욝, q욝, q욝, q욝, q욝);
+Test_N(q욞, q욞, q욞, q욞, q욞);
+Test_N(q욟, q욟, q욟, q욟, q욟);
+Test_N(q욠, q욠, q욠, q욠, q욠);
+Test_N(q욡, q욡, q욡, q욡, q욡);
+Test_N(q욢, q욢, q욢, q욢, q욢);
+Test_N(q욣, q욣, q욣, q욣, q욣);
+Test_N(q욤, q욤, q욤, q욤, q욤);
+Test_N(q욥, q욥, q욥, q욥, q욥);
+Test_N(q욦, q욦, q욦, q욦, q욦);
+Test_N(q욧, q욧, q욧, q욧, q욧);
+Test_N(q욨, q욨, q욨, q욨, q욨);
+Test_N(q용, q용, q용, q용, q용);
+Test_N(q욪, q욪, q욪, q욪, q욪);
+Test_N(q욫, q욫, q욫, q욫, q욫);
+Test_N(q욬, q욬, q욬, q욬, q욬);
+Test_N(q욭, q욭, q욭, q욭, q욭);
+Test_N(q욮, q욮, q욮, q욮, q욮);
+Test_N(q욯, q욯, q욯, q욯, q욯);
+Test_N(q우, q우, q우, q우, q우);
+Test_N(q욱, q욱, q욱, q욱, q욱);
+Test_N(q욲, q욲, q욲, q욲, q욲);
+Test_N(q욳, q욳, q욳, q욳, q욳);
+Test_N(q운, q운, q운, q운, q운);
+Test_N(q욵, q욵, q욵, q욵, q욵);
+Test_N(q욶, q욶, q욶, q욶, q욶);
+Test_N(q욷, q욷, q욷, q욷, q욷);
+Test_N(q울, q울, q울, q울, q울);
+Test_N(q욹, q욹, q욹, q욹, q욹);
+Test_N(q욺, q욺, q욺, q욺, q욺);
+Test_N(q욻, q욻, q욻, q욻, q욻);
+Test_N(q욼, q욼, q욼, q욼, q욼);
+Test_N(q욽, q욽, q욽, q욽, q욽);
+Test_N(q욾, q욾, q욾, q욾, q욾);
+Test_N(q욿, q욿, q욿, q욿, q욿);
+Test_N(q움, q움, q움, q움, q움);
+Test_N(q웁, q웁, q웁, q웁, q웁);
+Test_N(q웂, q웂, q웂, q웂, q웂);
+Test_N(q웃, q웃, q웃, q웃, q웃);
+Test_N(q웄, q웄, q웄, q웄, q웄);
+Test_N(q웅, q웅, q웅, q웅, q웅);
+Test_N(q웆, q웆, q웆, q웆, q웆);
+Test_N(q웇, q웇, q웇, q웇, q웇);
+Test_N(q웈, q웈, q웈, q웈, q웈);
+Test_N(q웉, q웉, q웉, q웉, q웉);
+Test_N(q웊, q웊, q웊, q웊, q웊);
+Test_N(q웋, q웋, q웋, q웋, q웋);
+Test_N(q워, q워, q워, q워, q워);
+Test_N(q웍, q웍, q웍, q웍, q웍);
+Test_N(q웎, q웎, q웎, q웎, q웎);
+Test_N(q웏, q웏, q웏, q웏, q웏);
+Test_N(q원, q원, q원, q원, q원);
+Test_N(q웑, q웑, q웑, q웑, q웑);
+Test_N(q웒, q웒, q웒, q웒, q웒);
+Test_N(q웓, q웓, q웓, q웓, q웓);
+Test_N(q월, q월, q월, q월, q월);
+Test_N(q웕, q웕, q웕, q웕, q웕);
+Test_N(q웖, q웖, q웖, q웖, q웖);
+Test_N(q웗, q웗, q웗, q웗, q웗);
+Test_N(q웘, q웘, q웘, q웘, q웘);
+Test_N(q웙, q웙, q웙, q웙, q웙);
+Test_N(q웚, q웚, q웚, q웚, q웚);
+Test_N(q웛, q웛, q웛, q웛, q웛);
+Test_N(q웜, q웜, q웜, q웜, q웜);
+Test_N(q웝, q웝, q웝, q웝, q웝);
+Test_N(q웞, q웞, q웞, q웞, q웞);
+Test_N(q웟, q웟, q웟, q웟, q웟);
+Test_N(q웠, q웠, q웠, q웠, q웠);
+Test_N(q웡, q웡, q웡, q웡, q웡);
+Test_N(q웢, q웢, q웢, q웢, q웢);
+Test_N(q웣, q웣, q웣, q웣, q웣);
+Test_N(q웤, q웤, q웤, q웤, q웤);
+Test_N(q웥, q웥, q웥, q웥, q웥);
+Test_N(q웦, q웦, q웦, q웦, q웦);
+Test_N(q웧, q웧, q웧, q웧, q웧);
+Test_N(q웨, q웨, q웨, q웨, q웨);
+Test_N(q웩, q웩, q웩, q웩, q웩);
+Test_N(q웪, q웪, q웪, q웪, q웪);
+Test_N(q웫, q웫, q웫, q웫, q웫);
+Test_N(q웬, q웬, q웬, q웬, q웬);
+Test_N(q웭, q웭, q웭, q웭, q웭);
+Test_N(q웮, q웮, q웮, q웮, q웮);
+Test_N(q웯, q웯, q웯, q웯, q웯);
+Test_N(q웰, q웰, q웰, q웰, q웰);
+Test_N(q웱, q웱, q웱, q웱, q웱);
+Test_N(q웲, q웲, q웲, q웲, q웲);
+Test_N(q웳, q웳, q웳, q웳, q웳);
+Test_N(q웴, q웴, q웴, q웴, q웴);
+Test_N(q웵, q웵, q웵, q웵, q웵);
+Test_N(q웶, q웶, q웶, q웶, q웶);
+Test_N(q웷, q웷, q웷, q웷, q웷);
+Test_N(q웸, q웸, q웸, q웸, q웸);
+Test_N(q웹, q웹, q웹, q웹, q웹);
+Test_N(q웺, q웺, q웺, q웺, q웺);
+Test_N(q웻, q웻, q웻, q웻, q웻);
+Test_N(q웼, q웼, q웼, q웼, q웼);
+Test_N(q웽, q웽, q웽, q웽, q웽);
+Test_N(q웾, q웾, q웾, q웾, q웾);
+Test_N(q웿, q웿, q웿, q웿, q웿);
+Test_N(q윀, q윀, q윀, q윀, q윀);
+Test_N(q윁, q윁, q윁, q윁, q윁);
+Test_N(q윂, q윂, q윂, q윂, q윂);
+Test_N(q윃, q윃, q윃, q윃, q윃);
+Test_N(q위, q위, q위, q위, q위);
+Test_N(q윅, q윅, q윅, q윅, q윅);
+Test_N(q윆, q윆, q윆, q윆, q윆);
+Test_N(q윇, q윇, q윇, q윇, q윇);
+Test_N(q윈, q윈, q윈, q윈, q윈);
+Test_N(q윉, q윉, q윉, q윉, q윉);
+Test_N(q윊, q윊, q윊, q윊, q윊);
+Test_N(q윋, q윋, q윋, q윋, q윋);
+Test_N(q윌, q윌, q윌, q윌, q윌);
+Test_N(q윍, q윍, q윍, q윍, q윍);
+Test_N(q윎, q윎, q윎, q윎, q윎);
+Test_N(q윏, q윏, q윏, q윏, q윏);
+Test_N(q윐, q윐, q윐, q윐, q윐);
+Test_N(q윑, q윑, q윑, q윑, q윑);
+Test_N(q윒, q윒, q윒, q윒, q윒);
+Test_N(q윓, q윓, q윓, q윓, q윓);
+Test_N(q윔, q윔, q윔, q윔, q윔);
+Test_N(q윕, q윕, q윕, q윕, q윕);
+Test_N(q윖, q윖, q윖, q윖, q윖);
+Test_N(q윗, q윗, q윗, q윗, q윗);
+Test_N(q윘, q윘, q윘, q윘, q윘);
+Test_N(q윙, q윙, q윙, q윙, q윙);
+Test_N(q윚, q윚, q윚, q윚, q윚);
+Test_N(q윛, q윛, q윛, q윛, q윛);
+Test_N(q윜, q윜, q윜, q윜, q윜);
+Test_N(q윝, q윝, q윝, q윝, q윝);
+Test_N(q윞, q윞, q윞, q윞, q윞);
+Test_N(q윟, q윟, q윟, q윟, q윟);
+Test_N(q유, q유, q유, q유, q유);
+Test_N(q육, q육, q육, q육, q육);
+Test_N(q윢, q윢, q윢, q윢, q윢);
+Test_N(q윣, q윣, q윣, q윣, q윣);
+Test_N(q윤, q윤, q윤, q윤, q윤);
+Test_N(q윥, q윥, q윥, q윥, q윥);
+Test_N(q윦, q윦, q윦, q윦, q윦);
+Test_N(q윧, q윧, q윧, q윧, q윧);
+Test_N(q율, q율, q율, q율, q율);
+Test_N(q윩, q윩, q윩, q윩, q윩);
+Test_N(q윪, q윪, q윪, q윪, q윪);
+Test_N(q윫, q윫, q윫, q윫, q윫);
+Test_N(q윬, q윬, q윬, q윬, q윬);
+Test_N(q윭, q윭, q윭, q윭, q윭);
+Test_N(q윮, q윮, q윮, q윮, q윮);
+Test_N(q윯, q윯, q윯, q윯, q윯);
+Test_N(q윰, q윰, q윰, q윰, q윰);
+Test_N(q윱, q윱, q윱, q윱, q윱);
+Test_N(q윲, q윲, q윲, q윲, q윲);
+Test_N(q윳, q윳, q윳, q윳, q윳);
+Test_N(q윴, q윴, q윴, q윴, q윴);
+Test_N(q융, q융, q융, q융, q융);
+Test_N(q윶, q윶, q윶, q윶, q윶);
+Test_N(q윷, q윷, q윷, q윷, q윷);
+Test_N(q윸, q윸, q윸, q윸, q윸);
+Test_N(q윹, q윹, q윹, q윹, q윹);
+Test_N(q윺, q윺, q윺, q윺, q윺);
+Test_N(q윻, q윻, q윻, q윻, q윻);
+Test_N(q으, q으, q으, q으, q으);
+Test_N(q윽, q윽, q윽, q윽, q윽);
+Test_N(q윾, q윾, q윾, q윾, q윾);
+Test_N(q윿, q윿, q윿, q윿, q윿);
+Test_N(q은, q은, q은, q은, q은);
+Test_N(q읁, q읁, q읁, q읁, q읁);
+Test_N(q읂, q읂, q읂, q읂, q읂);
+Test_N(q읃, q읃, q읃, q읃, q읃);
+Test_N(q을, q을, q을, q을, q을);
+Test_N(q읅, q읅, q읅, q읅, q읅);
+Test_N(q읆, q읆, q읆, q읆, q읆);
+Test_N(q읇, q읇, q읇, q읇, q읇);
+Test_N(q읈, q읈, q읈, q읈, q읈);
+Test_N(q읉, q읉, q읉, q읉, q읉);
+Test_N(q읊, q읊, q읊, q읊, q읊);
+Test_N(q읋, q읋, q읋, q읋, q읋);
+Test_N(q음, q음, q음, q음, q음);
+Test_N(q읍, q읍, q읍, q읍, q읍);
+Test_N(q읎, q읎, q읎, q읎, q읎);
+Test_N(q읏, q읏, q읏, q읏, q읏);
+Test_N(q읐, q읐, q읐, q읐, q읐);
+Test_N(q응, q응, q응, q응, q응);
+Test_N(q읒, q읒, q읒, q읒, q읒);
+Test_N(q읓, q읓, q읓, q읓, q읓);
+Test_N(q읔, q읔, q읔, q읔, q읔);
+Test_N(q읕, q읕, q읕, q읕, q읕);
+Test_N(q읖, q읖, q읖, q읖, q읖);
+Test_N(q읗, q읗, q읗, q읗, q읗);
+Test_N(q의, q의, q의, q의, q의);
+Test_N(q읙, q읙, q읙, q읙, q읙);
+Test_N(q읚, q읚, q읚, q읚, q읚);
+Test_N(q읛, q읛, q읛, q읛, q읛);
+Test_N(q읜, q읜, q읜, q읜, q읜);
+Test_N(q읝, q읝, q읝, q읝, q읝);
+Test_N(q읞, q읞, q읞, q읞, q읞);
+Test_N(q읟, q읟, q읟, q읟, q읟);
+Test_N(q읠, q읠, q읠, q읠, q읠);
+Test_N(q읡, q읡, q읡, q읡, q읡);
+Test_N(q읢, q읢, q읢, q읢, q읢);
+Test_N(q읣, q읣, q읣, q읣, q읣);
+Test_N(q읤, q읤, q읤, q읤, q읤);
+Test_N(q읥, q읥, q읥, q읥, q읥);
+Test_N(q읦, q읦, q읦, q읦, q읦);
+Test_N(q읧, q읧, q읧, q읧, q읧);
+Test_N(q읨, q읨, q읨, q읨, q읨);
+Test_N(q읩, q읩, q읩, q읩, q읩);
+Test_N(q읪, q읪, q읪, q읪, q읪);
+Test_N(q읫, q읫, q읫, q읫, q읫);
+Test_N(q읬, q읬, q읬, q읬, q읬);
+Test_N(q읭, q읭, q읭, q읭, q읭);
+Test_N(q읮, q읮, q읮, q읮, q읮);
+Test_N(q읯, q읯, q읯, q읯, q읯);
+Test_N(q읰, q읰, q읰, q읰, q읰);
+Test_N(q읱, q읱, q읱, q읱, q읱);
+Test_N(q읲, q읲, q읲, q읲, q읲);
+Test_N(q읳, q읳, q읳, q읳, q읳);
+Test_N(q이, q이, q이, q이, q이);
+Test_N(q익, q익, q익, q익, q익);
+Test_N(q읶, q읶, q읶, q읶, q읶);
+Test_N(q읷, q읷, q읷, q읷, q읷);
+Test_N(q인, q인, q인, q인, q인);
+Test_N(q읹, q읹, q읹, q읹, q읹);
+Test_N(q읺, q읺, q읺, q읺, q읺);
+Test_N(q읻, q읻, q읻, q읻, q읻);
+Test_N(q일, q일, q일, q일, q일);
+Test_N(q읽, q읽, q읽, q읽, q읽);
+Test_N(q읾, q읾, q읾, q읾, q읾);
+Test_N(q읿, q읿, q읿, q읿, q읿);
+Test_N(q잀, q잀, q잀, q잀, q잀);
+Test_N(q잁, q잁, q잁, q잁, q잁);
+Test_N(q잂, q잂, q잂, q잂, q잂);
+Test_N(q잃, q잃, q잃, q잃, q잃);
+Test_N(q임, q임, q임, q임, q임);
+Test_N(q입, q입, q입, q입, q입);
+Test_N(q잆, q잆, q잆, q잆, q잆);
+Test_N(q잇, q잇, q잇, q잇, q잇);
+Test_N(q있, q있, q있, q있, q있);
+Test_N(q잉, q잉, q잉, q잉, q잉);
+Test_N(q잊, q잊, q잊, q잊, q잊);
+Test_N(q잋, q잋, q잋, q잋, q잋);
+Test_N(q잌, q잌, q잌, q잌, q잌);
+Test_N(q잍, q잍, q잍, q잍, q잍);
+Test_N(q잎, q잎, q잎, q잎, q잎);
+Test_N(q잏, q잏, q잏, q잏, q잏);
+Test_N(q자, q자, q자, q자, q자);
+Test_N(q작, q작, q작, q작, q작);
+Test_N(q잒, q잒, q잒, q잒, q잒);
+Test_N(q잓, q잓, q잓, q잓, q잓);
+Test_N(q잔, q잔, q잔, q잔, q잔);
+Test_N(q잕, q잕, q잕, q잕, q잕);
+Test_N(q잖, q잖, q잖, q잖, q잖);
+Test_N(q잗, q잗, q잗, q잗, q잗);
+Test_N(q잘, q잘, q잘, q잘, q잘);
+Test_N(q잙, q잙, q잙, q잙, q잙);
+Test_N(q잚, q잚, q잚, q잚, q잚);
+Test_N(q잛, q잛, q잛, q잛, q잛);
+Test_N(q잜, q잜, q잜, q잜, q잜);
+Test_N(q잝, q잝, q잝, q잝, q잝);
+Test_N(q잞, q잞, q잞, q잞, q잞);
+Test_N(q잟, q잟, q잟, q잟, q잟);
+Test_N(q잠, q잠, q잠, q잠, q잠);
+Test_N(q잡, q잡, q잡, q잡, q잡);
+Test_N(q잢, q잢, q잢, q잢, q잢);
+Test_N(q잣, q잣, q잣, q잣, q잣);
+Test_N(q잤, q잤, q잤, q잤, q잤);
+Test_N(q장, q장, q장, q장, q장);
+Test_N(q잦, q잦, q잦, q잦, q잦);
+Test_N(q잧, q잧, q잧, q잧, q잧);
+Test_N(q잨, q잨, q잨, q잨, q잨);
+Test_N(q잩, q잩, q잩, q잩, q잩);
+Test_N(q잪, q잪, q잪, q잪, q잪);
+Test_N(q잫, q잫, q잫, q잫, q잫);
+Test_N(q재, q재, q재, q재, q재);
+Test_N(q잭, q잭, q잭, q잭, q잭);
+Test_N(q잮, q잮, q잮, q잮, q잮);
+Test_N(q잯, q잯, q잯, q잯, q잯);
+Test_N(q잰, q잰, q잰, q잰, q잰);
+Test_N(q잱, q잱, q잱, q잱, q잱);
+Test_N(q잲, q잲, q잲, q잲, q잲);
+Test_N(q잳, q잳, q잳, q잳, q잳);
+Test_N(q잴, q잴, q잴, q잴, q잴);
+Test_N(q잵, q잵, q잵, q잵, q잵);
+Test_N(q잶, q잶, q잶, q잶, q잶);
+Test_N(q잷, q잷, q잷, q잷, q잷);
+Test_N(q잸, q잸, q잸, q잸, q잸);
+Test_N(q잹, q잹, q잹, q잹, q잹);
+Test_N(q잺, q잺, q잺, q잺, q잺);
+Test_N(q잻, q잻, q잻, q잻, q잻);
+Test_N(q잼, q잼, q잼, q잼, q잼);
+Test_N(q잽, q잽, q잽, q잽, q잽);
+Test_N(q잾, q잾, q잾, q잾, q잾);
+Test_N(q잿, q잿, q잿, q잿, q잿);
+Test_N(q쟀, q쟀, q쟀, q쟀, q쟀);
+Test_N(q쟁, q쟁, q쟁, q쟁, q쟁);
+Test_N(q쟂, q쟂, q쟂, q쟂, q쟂);
+Test_N(q쟃, q쟃, q쟃, q쟃, q쟃);
+Test_N(q쟄, q쟄, q쟄, q쟄, q쟄);
+Test_N(q쟅, q쟅, q쟅, q쟅, q쟅);
+Test_N(q쟆, q쟆, q쟆, q쟆, q쟆);
+Test_N(q쟇, q쟇, q쟇, q쟇, q쟇);
+Test_N(q쟈, q쟈, q쟈, q쟈, q쟈);
+Test_N(q쟉, q쟉, q쟉, q쟉, q쟉);
+Test_N(q쟊, q쟊, q쟊, q쟊, q쟊);
+Test_N(q쟋, q쟋, q쟋, q쟋, q쟋);
+Test_N(q쟌, q쟌, q쟌, q쟌, q쟌);
+Test_N(q쟍, q쟍, q쟍, q쟍, q쟍);
+Test_N(q쟎, q쟎, q쟎, q쟎, q쟎);
+Test_N(q쟏, q쟏, q쟏, q쟏, q쟏);
+Test_N(q쟐, q쟐, q쟐, q쟐, q쟐);
+Test_N(q쟑, q쟑, q쟑, q쟑, q쟑);
+Test_N(q쟒, q쟒, q쟒, q쟒, q쟒);
+Test_N(q쟓, q쟓, q쟓, q쟓, q쟓);
+Test_N(q쟔, q쟔, q쟔, q쟔, q쟔);
+Test_N(q쟕, q쟕, q쟕, q쟕, q쟕);
+Test_N(q쟖, q쟖, q쟖, q쟖, q쟖);
+Test_N(q쟗, q쟗, q쟗, q쟗, q쟗);
+Test_N(q쟘, q쟘, q쟘, q쟘, q쟘);
+Test_N(q쟙, q쟙, q쟙, q쟙, q쟙);
+Test_N(q쟚, q쟚, q쟚, q쟚, q쟚);
+Test_N(q쟛, q쟛, q쟛, q쟛, q쟛);
+Test_N(q쟜, q쟜, q쟜, q쟜, q쟜);
+Test_N(q쟝, q쟝, q쟝, q쟝, q쟝);
+Test_N(q쟞, q쟞, q쟞, q쟞, q쟞);
+Test_N(q쟟, q쟟, q쟟, q쟟, q쟟);
+Test_N(q쟠, q쟠, q쟠, q쟠, q쟠);
+Test_N(q쟡, q쟡, q쟡, q쟡, q쟡);
+Test_N(q쟢, q쟢, q쟢, q쟢, q쟢);
+Test_N(q쟣, q쟣, q쟣, q쟣, q쟣);
+Test_N(q쟤, q쟤, q쟤, q쟤, q쟤);
+Test_N(q쟥, q쟥, q쟥, q쟥, q쟥);
+Test_N(q쟦, q쟦, q쟦, q쟦, q쟦);
+Test_N(q쟧, q쟧, q쟧, q쟧, q쟧);
+Test_N(q쟨, q쟨, q쟨, q쟨, q쟨);
+Test_N(q쟩, q쟩, q쟩, q쟩, q쟩);
+Test_N(q쟪, q쟪, q쟪, q쟪, q쟪);
+Test_N(q쟫, q쟫, q쟫, q쟫, q쟫);
+Test_N(q쟬, q쟬, q쟬, q쟬, q쟬);
+Test_N(q쟭, q쟭, q쟭, q쟭, q쟭);
+Test_N(q쟮, q쟮, q쟮, q쟮, q쟮);
+Test_N(q쟯, q쟯, q쟯, q쟯, q쟯);
+Test_N(q쟰, q쟰, q쟰, q쟰, q쟰);
+Test_N(q쟱, q쟱, q쟱, q쟱, q쟱);
+Test_N(q쟲, q쟲, q쟲, q쟲, q쟲);
+Test_N(q쟳, q쟳, q쟳, q쟳, q쟳);
+Test_N(q쟴, q쟴, q쟴, q쟴, q쟴);
+Test_N(q쟵, q쟵, q쟵, q쟵, q쟵);
+Test_N(q쟶, q쟶, q쟶, q쟶, q쟶);
+Test_N(q쟷, q쟷, q쟷, q쟷, q쟷);
+Test_N(q쟸, q쟸, q쟸, q쟸, q쟸);
+Test_N(q쟹, q쟹, q쟹, q쟹, q쟹);
+Test_N(q쟺, q쟺, q쟺, q쟺, q쟺);
+Test_N(q쟻, q쟻, q쟻, q쟻, q쟻);
+Test_N(q쟼, q쟼, q쟼, q쟼, q쟼);
+Test_N(q쟽, q쟽, q쟽, q쟽, q쟽);
+Test_N(q쟾, q쟾, q쟾, q쟾, q쟾);
+Test_N(q쟿, q쟿, q쟿, q쟿, q쟿);
+Test_N(q저, q저, q저, q저, q저);
+Test_N(q적, q적, q적, q적, q적);
+Test_N(q젂, q젂, q젂, q젂, q젂);
+Test_N(q젃, q젃, q젃, q젃, q젃);
+Test_N(q전, q전, q전, q전, q전);
+Test_N(q젅, q젅, q젅, q젅, q젅);
+Test_N(q젆, q젆, q젆, q젆, q젆);
+Test_N(q젇, q젇, q젇, q젇, q젇);
+Test_N(q절, q절, q절, q절, q절);
+Test_N(q젉, q젉, q젉, q젉, q젉);
+Test_N(q젊, q젊, q젊, q젊, q젊);
+Test_N(q젋, q젋, q젋, q젋, q젋);
+Test_N(q젌, q젌, q젌, q젌, q젌);
+Test_N(q젍, q젍, q젍, q젍, q젍);
+Test_N(q젎, q젎, q젎, q젎, q젎);
+Test_N(q젏, q젏, q젏, q젏, q젏);
+Test_N(q점, q점, q점, q점, q점);
+Test_N(q접, q접, q접, q접, q접);
+Test_N(q젒, q젒, q젒, q젒, q젒);
+Test_N(q젓, q젓, q젓, q젓, q젓);
+Test_N(q젔, q젔, q젔, q젔, q젔);
+Test_N(q정, q정, q정, q정, q정);
+Test_N(q젖, q젖, q젖, q젖, q젖);
+Test_N(q젗, q젗, q젗, q젗, q젗);
+Test_N(q젘, q젘, q젘, q젘, q젘);
+Test_N(q젙, q젙, q젙, q젙, q젙);
+Test_N(q젚, q젚, q젚, q젚, q젚);
+Test_N(q젛, q젛, q젛, q젛, q젛);
+Test_N(q제, q제, q제, q제, q제);
+Test_N(q젝, q젝, q젝, q젝, q젝);
+Test_N(q젞, q젞, q젞, q젞, q젞);
+Test_N(q젟, q젟, q젟, q젟, q젟);
+Test_N(q젠, q젠, q젠, q젠, q젠);
+Test_N(q젡, q젡, q젡, q젡, q젡);
+Test_N(q젢, q젢, q젢, q젢, q젢);
+Test_N(q젣, q젣, q젣, q젣, q젣);
+Test_N(q젤, q젤, q젤, q젤, q젤);
+Test_N(q젥, q젥, q젥, q젥, q젥);
+Test_N(q젦, q젦, q젦, q젦, q젦);
+Test_N(q젧, q젧, q젧, q젧, q젧);
+Test_N(q젨, q젨, q젨, q젨, q젨);
+Test_N(q젩, q젩, q젩, q젩, q젩);
+Test_N(q젪, q젪, q젪, q젪, q젪);
+Test_N(q젫, q젫, q젫, q젫, q젫);
+Test_N(q젬, q젬, q젬, q젬, q젬);
+Test_N(q젭, q젭, q젭, q젭, q젭);
+Test_N(q젮, q젮, q젮, q젮, q젮);
+Test_N(q젯, q젯, q젯, q젯, q젯);
+Test_N(q젰, q젰, q젰, q젰, q젰);
+Test_N(q젱, q젱, q젱, q젱, q젱);
+Test_N(q젲, q젲, q젲, q젲, q젲);
+Test_N(q젳, q젳, q젳, q젳, q젳);
+Test_N(q젴, q젴, q젴, q젴, q젴);
+Test_N(q젵, q젵, q젵, q젵, q젵);
+Test_N(q젶, q젶, q젶, q젶, q젶);
+Test_N(q젷, q젷, q젷, q젷, q젷);
+Test_N(q져, q져, q져, q져, q져);
+Test_N(q젹, q젹, q젹, q젹, q젹);
+Test_N(q젺, q젺, q젺, q젺, q젺);
+Test_N(q젻, q젻, q젻, q젻, q젻);
+Test_N(q젼, q젼, q젼, q젼, q젼);
+Test_N(q젽, q젽, q젽, q젽, q젽);
+Test_N(q젾, q젾, q젾, q젾, q젾);
+Test_N(q젿, q젿, q젿, q젿, q젿);
+Test_N(q졀, q졀, q졀, q졀, q졀);
+Test_N(q졁, q졁, q졁, q졁, q졁);
+Test_N(q졂, q졂, q졂, q졂, q졂);
+Test_N(q졃, q졃, q졃, q졃, q졃);
+Test_N(q졄, q졄, q졄, q졄, q졄);
+Test_N(q졅, q졅, q졅, q졅, q졅);
+Test_N(q졆, q졆, q졆, q졆, q졆);
+Test_N(q졇, q졇, q졇, q졇, q졇);
+Test_N(q졈, q졈, q졈, q졈, q졈);
+Test_N(q졉, q졉, q졉, q졉, q졉);
+Test_N(q졊, q졊, q졊, q졊, q졊);
+Test_N(q졋, q졋, q졋, q졋, q졋);
+Test_N(q졌, q졌, q졌, q졌, q졌);
+Test_N(q졍, q졍, q졍, q졍, q졍);
+Test_N(q졎, q졎, q졎, q졎, q졎);
+Test_N(q졏, q졏, q졏, q졏, q졏);
+Test_N(q졐, q졐, q졐, q졐, q졐);
+Test_N(q졑, q졑, q졑, q졑, q졑);
+Test_N(q졒, q졒, q졒, q졒, q졒);
+Test_N(q졓, q졓, q졓, q졓, q졓);
+Test_N(q졔, q졔, q졔, q졔, q졔);
+Test_N(q졕, q졕, q졕, q졕, q졕);
+Test_N(q졖, q졖, q졖, q졖, q졖);
+Test_N(q졗, q졗, q졗, q졗, q졗);
+Test_N(q졘, q졘, q졘, q졘, q졘);
+Test_N(q졙, q졙, q졙, q졙, q졙);
+Test_N(q졚, q졚, q졚, q졚, q졚);
+Test_N(q졛, q졛, q졛, q졛, q졛);
+Test_N(q졜, q졜, q졜, q졜, q졜);
+Test_N(q졝, q졝, q졝, q졝, q졝);
+Test_N(q졞, q졞, q졞, q졞, q졞);
+Test_N(q졟, q졟, q졟, q졟, q졟);
+Test_N(q졠, q졠, q졠, q졠, q졠);
+Test_N(q졡, q졡, q졡, q졡, q졡);
+Test_N(q졢, q졢, q졢, q졢, q졢);
+Test_N(q졣, q졣, q졣, q졣, q졣);
+Test_N(q졤, q졤, q졤, q졤, q졤);
+Test_N(q졥, q졥, q졥, q졥, q졥);
+Test_N(q졦, q졦, q졦, q졦, q졦);
+Test_N(q졧, q졧, q졧, q졧, q졧);
+Test_N(q졨, q졨, q졨, q졨, q졨);
+Test_N(q졩, q졩, q졩, q졩, q졩);
+Test_N(q졪, q졪, q졪, q졪, q졪);
+Test_N(q졫, q졫, q졫, q졫, q졫);
+Test_N(q졬, q졬, q졬, q졬, q졬);
+Test_N(q졭, q졭, q졭, q졭, q졭);
+Test_N(q졮, q졮, q졮, q졮, q졮);
+Test_N(q졯, q졯, q졯, q졯, q졯);
+Test_N(q조, q조, q조, q조, q조);
+Test_N(q족, q족, q족, q족, q족);
+Test_N(q졲, q졲, q졲, q졲, q졲);
+Test_N(q졳, q졳, q졳, q졳, q졳);
+Test_N(q존, q존, q존, q존, q존);
+Test_N(q졵, q졵, q졵, q졵, q졵);
+Test_N(q졶, q졶, q졶, q졶, q졶);
+Test_N(q졷, q졷, q졷, q졷, q졷);
+Test_N(q졸, q졸, q졸, q졸, q졸);
+Test_N(q졹, q졹, q졹, q졹, q졹);
+Test_N(q졺, q졺, q졺, q졺, q졺);
+Test_N(q졻, q졻, q졻, q졻, q졻);
+Test_N(q졼, q졼, q졼, q졼, q졼);
+Test_N(q졽, q졽, q졽, q졽, q졽);
+Test_N(q졾, q졾, q졾, q졾, q졾);
+Test_N(q졿, q졿, q졿, q졿, q졿);
+Test_N(q좀, q좀, q좀, q좀, q좀);
+Test_N(q좁, q좁, q좁, q좁, q좁);
+Test_N(q좂, q좂, q좂, q좂, q좂);
+Test_N(q좃, q좃, q좃, q좃, q좃);
+Test_N(q좄, q좄, q좄, q좄, q좄);
+Test_N(q종, q종, q종, q종, q종);
+Test_N(q좆, q좆, q좆, q좆, q좆);
+Test_N(q좇, q좇, q좇, q좇, q좇);
+Test_N(q좈, q좈, q좈, q좈, q좈);
+Test_N(q좉, q좉, q좉, q좉, q좉);
+Test_N(q좊, q좊, q좊, q좊, q좊);
+Test_N(q좋, q좋, q좋, q좋, q좋);
+Test_N(q좌, q좌, q좌, q좌, q좌);
+Test_N(q좍, q좍, q좍, q좍, q좍);
+Test_N(q좎, q좎, q좎, q좎, q좎);
+Test_N(q좏, q좏, q좏, q좏, q좏);
+Test_N(q좐, q좐, q좐, q좐, q좐);
+Test_N(q좑, q좑, q좑, q좑, q좑);
+Test_N(q좒, q좒, q좒, q좒, q좒);
+Test_N(q좓, q좓, q좓, q좓, q좓);
+Test_N(q좔, q좔, q좔, q좔, q좔);
+Test_N(q좕, q좕, q좕, q좕, q좕);
+Test_N(q좖, q좖, q좖, q좖, q좖);
+Test_N(q좗, q좗, q좗, q좗, q좗);
+Test_N(q좘, q좘, q좘, q좘, q좘);
+Test_N(q좙, q좙, q좙, q좙, q좙);
+Test_N(q좚, q좚, q좚, q좚, q좚);
+Test_N(q좛, q좛, q좛, q좛, q좛);
+Test_N(q좜, q좜, q좜, q좜, q좜);
+Test_N(q좝, q좝, q좝, q좝, q좝);
+Test_N(q좞, q좞, q좞, q좞, q좞);
+Test_N(q좟, q좟, q좟, q좟, q좟);
+Test_N(q좠, q좠, q좠, q좠, q좠);
+Test_N(q좡, q좡, q좡, q좡, q좡);
+Test_N(q좢, q좢, q좢, q좢, q좢);
+Test_N(q좣, q좣, q좣, q좣, q좣);
+Test_N(q좤, q좤, q좤, q좤, q좤);
+Test_N(q좥, q좥, q좥, q좥, q좥);
+Test_N(q좦, q좦, q좦, q좦, q좦);
+Test_N(q좧, q좧, q좧, q좧, q좧);
+Test_N(q좨, q좨, q좨, q좨, q좨);
+Test_N(q좩, q좩, q좩, q좩, q좩);
+Test_N(q좪, q좪, q좪, q좪, q좪);
+Test_N(q좫, q좫, q좫, q좫, q좫);
+Test_N(q좬, q좬, q좬, q좬, q좬);
+Test_N(q좭, q좭, q좭, q좭, q좭);
+Test_N(q좮, q좮, q좮, q좮, q좮);
+Test_N(q좯, q좯, q좯, q좯, q좯);
+Test_N(q좰, q좰, q좰, q좰, q좰);
+Test_N(q좱, q좱, q좱, q좱, q좱);
+Test_N(q좲, q좲, q좲, q좲, q좲);
+Test_N(q좳, q좳, q좳, q좳, q좳);
+Test_N(q좴, q좴, q좴, q좴, q좴);
+Test_N(q좵, q좵, q좵, q좵, q좵);
+Test_N(q좶, q좶, q좶, q좶, q좶);
+Test_N(q좷, q좷, q좷, q좷, q좷);
+Test_N(q좸, q좸, q좸, q좸, q좸);
+Test_N(q좹, q좹, q좹, q좹, q좹);
+Test_N(q좺, q좺, q좺, q좺, q좺);
+Test_N(q좻, q좻, q좻, q좻, q좻);
+Test_N(q좼, q좼, q좼, q좼, q좼);
+Test_N(q좽, q좽, q좽, q좽, q좽);
+Test_N(q좾, q좾, q좾, q좾, q좾);
+Test_N(q좿, q좿, q좿, q좿, q좿);
+Test_N(q죀, q죀, q죀, q죀, q죀);
+Test_N(q죁, q죁, q죁, q죁, q죁);
+Test_N(q죂, q죂, q죂, q죂, q죂);
+Test_N(q죃, q죃, q죃, q죃, q죃);
+Test_N(q죄, q죄, q죄, q죄, q죄);
+Test_N(q죅, q죅, q죅, q죅, q죅);
+Test_N(q죆, q죆, q죆, q죆, q죆);
+Test_N(q죇, q죇, q죇, q죇, q죇);
+Test_N(q죈, q죈, q죈, q죈, q죈);
+Test_N(q죉, q죉, q죉, q죉, q죉);
+Test_N(q죊, q죊, q죊, q죊, q죊);
+Test_N(q죋, q죋, q죋, q죋, q죋);
+Test_N(q죌, q죌, q죌, q죌, q죌);
+Test_N(q죍, q죍, q죍, q죍, q죍);
+Test_N(q죎, q죎, q죎, q죎, q죎);
+Test_N(q죏, q죏, q죏, q죏, q죏);
+Test_N(q죐, q죐, q죐, q죐, q죐);
+Test_N(q죑, q죑, q죑, q죑, q죑);
+Test_N(q죒, q죒, q죒, q죒, q죒);
+Test_N(q죓, q죓, q죓, q죓, q죓);
+Test_N(q죔, q죔, q죔, q죔, q죔);
+Test_N(q죕, q죕, q죕, q죕, q죕);
+Test_N(q죖, q죖, q죖, q죖, q죖);
+Test_N(q죗, q죗, q죗, q죗, q죗);
+Test_N(q죘, q죘, q죘, q죘, q죘);
+Test_N(q죙, q죙, q죙, q죙, q죙);
+Test_N(q죚, q죚, q죚, q죚, q죚);
+Test_N(q죛, q죛, q죛, q죛, q죛);
+Test_N(q죜, q죜, q죜, q죜, q죜);
+Test_N(q죝, q죝, q죝, q죝, q죝);
+Test_N(q죞, q죞, q죞, q죞, q죞);
+Test_N(q죟, q죟, q죟, q죟, q죟);
+Test_N(q죠, q죠, q죠, q죠, q죠);
+Test_N(q죡, q죡, q죡, q죡, q죡);
+Test_N(q죢, q죢, q죢, q죢, q죢);
+Test_N(q죣, q죣, q죣, q죣, q죣);
+Test_N(q죤, q죤, q죤, q죤, q죤);
+Test_N(q죥, q죥, q죥, q죥, q죥);
+Test_N(q죦, q죦, q죦, q죦, q죦);
+Test_N(q죧, q죧, q죧, q죧, q죧);
+Test_N(q죨, q죨, q죨, q죨, q죨);
+Test_N(q죩, q죩, q죩, q죩, q죩);
+Test_N(q죪, q죪, q죪, q죪, q죪);
+Test_N(q죫, q죫, q죫, q죫, q죫);
+Test_N(q죬, q죬, q죬, q죬, q죬);
+Test_N(q죭, q죭, q죭, q죭, q죭);
+Test_N(q죮, q죮, q죮, q죮, q죮);
+Test_N(q죯, q죯, q죯, q죯, q죯);
+Test_N(q죰, q죰, q죰, q죰, q죰);
+Test_N(q죱, q죱, q죱, q죱, q죱);
+Test_N(q죲, q죲, q죲, q죲, q죲);
+Test_N(q죳, q죳, q죳, q죳, q죳);
+Test_N(q죴, q죴, q죴, q죴, q죴);
+Test_N(q죵, q죵, q죵, q죵, q죵);
+Test_N(q죶, q죶, q죶, q죶, q죶);
+Test_N(q죷, q죷, q죷, q죷, q죷);
+Test_N(q죸, q죸, q죸, q죸, q죸);
+Test_N(q죹, q죹, q죹, q죹, q죹);
+Test_N(q죺, q죺, q죺, q죺, q죺);
+Test_N(q죻, q죻, q죻, q죻, q죻);
+Test_N(q주, q주, q주, q주, q주);
+Test_N(q죽, q죽, q죽, q죽, q죽);
+Test_N(q죾, q죾, q죾, q죾, q죾);
+Test_N(q죿, q죿, q죿, q죿, q죿);
+Test_N(q준, q준, q준, q준, q준);
+Test_N(q줁, q줁, q줁, q줁, q줁);
+Test_N(q줂, q줂, q줂, q줂, q줂);
+Test_N(q줃, q줃, q줃, q줃, q줃);
+Test_N(q줄, q줄, q줄, q줄, q줄);
+Test_N(q줅, q줅, q줅, q줅, q줅);
+Test_N(q줆, q줆, q줆, q줆, q줆);
+Test_N(q줇, q줇, q줇, q줇, q줇);
+Test_N(q줈, q줈, q줈, q줈, q줈);
+Test_N(q줉, q줉, q줉, q줉, q줉);
+Test_N(q줊, q줊, q줊, q줊, q줊);
+Test_N(q줋, q줋, q줋, q줋, q줋);
+Test_N(q줌, q줌, q줌, q줌, q줌);
+Test_N(q줍, q줍, q줍, q줍, q줍);
+Test_N(q줎, q줎, q줎, q줎, q줎);
+Test_N(q줏, q줏, q줏, q줏, q줏);
+Test_N(q줐, q줐, q줐, q줐, q줐);
+Test_N(q중, q중, q중, q중, q중);
+Test_N(q줒, q줒, q줒, q줒, q줒);
+Test_N(q줓, q줓, q줓, q줓, q줓);
+Test_N(q줔, q줔, q줔, q줔, q줔);
+Test_N(q줕, q줕, q줕, q줕, q줕);
+Test_N(q줖, q줖, q줖, q줖, q줖);
+Test_N(q줗, q줗, q줗, q줗, q줗);
+Test_N(q줘, q줘, q줘, q줘, q줘);
+Test_N(q줙, q줙, q줙, q줙, q줙);
+Test_N(q줚, q줚, q줚, q줚, q줚);
+Test_N(q줛, q줛, q줛, q줛, q줛);
+Test_N(q줜, q줜, q줜, q줜, q줜);
+Test_N(q줝, q줝, q줝, q줝, q줝);
+Test_N(q줞, q줞, q줞, q줞, q줞);
+Test_N(q줟, q줟, q줟, q줟, q줟);
+Test_N(q줠, q줠, q줠, q줠, q줠);
+Test_N(q줡, q줡, q줡, q줡, q줡);
+Test_N(q줢, q줢, q줢, q줢, q줢);
+Test_N(q줣, q줣, q줣, q줣, q줣);
+Test_N(q줤, q줤, q줤, q줤, q줤);
+Test_N(q줥, q줥, q줥, q줥, q줥);
+Test_N(q줦, q줦, q줦, q줦, q줦);
+Test_N(q줧, q줧, q줧, q줧, q줧);
+Test_N(q줨, q줨, q줨, q줨, q줨);
+Test_N(q줩, q줩, q줩, q줩, q줩);
+Test_N(q줪, q줪, q줪, q줪, q줪);
+Test_N(q줫, q줫, q줫, q줫, q줫);
+Test_N(q줬, q줬, q줬, q줬, q줬);
+Test_N(q줭, q줭, q줭, q줭, q줭);
+Test_N(q줮, q줮, q줮, q줮, q줮);
+Test_N(q줯, q줯, q줯, q줯, q줯);
+Test_N(q줰, q줰, q줰, q줰, q줰);
+Test_N(q줱, q줱, q줱, q줱, q줱);
+Test_N(q줲, q줲, q줲, q줲, q줲);
+Test_N(q줳, q줳, q줳, q줳, q줳);
+Test_N(q줴, q줴, q줴, q줴, q줴);
+Test_N(q줵, q줵, q줵, q줵, q줵);
+Test_N(q줶, q줶, q줶, q줶, q줶);
+Test_N(q줷, q줷, q줷, q줷, q줷);
+Test_N(q줸, q줸, q줸, q줸, q줸);
+Test_N(q줹, q줹, q줹, q줹, q줹);
+Test_N(q줺, q줺, q줺, q줺, q줺);
+Test_N(q줻, q줻, q줻, q줻, q줻);
+Test_N(q줼, q줼, q줼, q줼, q줼);
+Test_N(q줽, q줽, q줽, q줽, q줽);
+Test_N(q줾, q줾, q줾, q줾, q줾);
+Test_N(q줿, q줿, q줿, q줿, q줿);
+Test_N(q쥀, q쥀, q쥀, q쥀, q쥀);
+Test_N(q쥁, q쥁, q쥁, q쥁, q쥁);
+Test_N(q쥂, q쥂, q쥂, q쥂, q쥂);
+Test_N(q쥃, q쥃, q쥃, q쥃, q쥃);
+Test_N(q쥄, q쥄, q쥄, q쥄, q쥄);
+Test_N(q쥅, q쥅, q쥅, q쥅, q쥅);
+Test_N(q쥆, q쥆, q쥆, q쥆, q쥆);
+Test_N(q쥇, q쥇, q쥇, q쥇, q쥇);
+Test_N(q쥈, q쥈, q쥈, q쥈, q쥈);
+Test_N(q쥉, q쥉, q쥉, q쥉, q쥉);
+Test_N(q쥊, q쥊, q쥊, q쥊, q쥊);
+Test_N(q쥋, q쥋, q쥋, q쥋, q쥋);
+Test_N(q쥌, q쥌, q쥌, q쥌, q쥌);
+Test_N(q쥍, q쥍, q쥍, q쥍, q쥍);
+Test_N(q쥎, q쥎, q쥎, q쥎, q쥎);
+Test_N(q쥏, q쥏, q쥏, q쥏, q쥏);
+Test_N(q쥐, q쥐, q쥐, q쥐, q쥐);
+Test_N(q쥑, q쥑, q쥑, q쥑, q쥑);
+Test_N(q쥒, q쥒, q쥒, q쥒, q쥒);
+Test_N(q쥓, q쥓, q쥓, q쥓, q쥓);
+Test_N(q쥔, q쥔, q쥔, q쥔, q쥔);
+Test_N(q쥕, q쥕, q쥕, q쥕, q쥕);
+Test_N(q쥖, q쥖, q쥖, q쥖, q쥖);
+Test_N(q쥗, q쥗, q쥗, q쥗, q쥗);
+Test_N(q쥘, q쥘, q쥘, q쥘, q쥘);
+Test_N(q쥙, q쥙, q쥙, q쥙, q쥙);
+Test_N(q쥚, q쥚, q쥚, q쥚, q쥚);
+Test_N(q쥛, q쥛, q쥛, q쥛, q쥛);
+Test_N(q쥜, q쥜, q쥜, q쥜, q쥜);
+Test_N(q쥝, q쥝, q쥝, q쥝, q쥝);
+Test_N(q쥞, q쥞, q쥞, q쥞, q쥞);
+Test_N(q쥟, q쥟, q쥟, q쥟, q쥟);
+Test_N(q쥠, q쥠, q쥠, q쥠, q쥠);
+Test_N(q쥡, q쥡, q쥡, q쥡, q쥡);
+Test_N(q쥢, q쥢, q쥢, q쥢, q쥢);
+Test_N(q쥣, q쥣, q쥣, q쥣, q쥣);
+Test_N(q쥤, q쥤, q쥤, q쥤, q쥤);
+Test_N(q쥥, q쥥, q쥥, q쥥, q쥥);
+Test_N(q쥦, q쥦, q쥦, q쥦, q쥦);
+Test_N(q쥧, q쥧, q쥧, q쥧, q쥧);
+Test_N(q쥨, q쥨, q쥨, q쥨, q쥨);
+Test_N(q쥩, q쥩, q쥩, q쥩, q쥩);
+Test_N(q쥪, q쥪, q쥪, q쥪, q쥪);
+Test_N(q쥫, q쥫, q쥫, q쥫, q쥫);
+Test_N(q쥬, q쥬, q쥬, q쥬, q쥬);
+Test_N(q쥭, q쥭, q쥭, q쥭, q쥭);
+Test_N(q쥮, q쥮, q쥮, q쥮, q쥮);
+Test_N(q쥯, q쥯, q쥯, q쥯, q쥯);
+Test_N(q쥰, q쥰, q쥰, q쥰, q쥰);
+Test_N(q쥱, q쥱, q쥱, q쥱, q쥱);
+Test_N(q쥲, q쥲, q쥲, q쥲, q쥲);
+Test_N(q쥳, q쥳, q쥳, q쥳, q쥳);
+Test_N(q쥴, q쥴, q쥴, q쥴, q쥴);
+Test_N(q쥵, q쥵, q쥵, q쥵, q쥵);
+Test_N(q쥶, q쥶, q쥶, q쥶, q쥶);
+Test_N(q쥷, q쥷, q쥷, q쥷, q쥷);
+Test_N(q쥸, q쥸, q쥸, q쥸, q쥸);
+Test_N(q쥹, q쥹, q쥹, q쥹, q쥹);
+Test_N(q쥺, q쥺, q쥺, q쥺, q쥺);
+Test_N(q쥻, q쥻, q쥻, q쥻, q쥻);
+Test_N(q쥼, q쥼, q쥼, q쥼, q쥼);
+Test_N(q쥽, q쥽, q쥽, q쥽, q쥽);
+Test_N(q쥾, q쥾, q쥾, q쥾, q쥾);
+Test_N(q쥿, q쥿, q쥿, q쥿, q쥿);
+Test_N(q즀, q즀, q즀, q즀, q즀);
+Test_N(q즁, q즁, q즁, q즁, q즁);
+Test_N(q즂, q즂, q즂, q즂, q즂);
+Test_N(q즃, q즃, q즃, q즃, q즃);
+Test_N(q즄, q즄, q즄, q즄, q즄);
+Test_N(q즅, q즅, q즅, q즅, q즅);
+Test_N(q즆, q즆, q즆, q즆, q즆);
+Test_N(q즇, q즇, q즇, q즇, q즇);
+Test_N(q즈, q즈, q즈, q즈, q즈);
+Test_N(q즉, q즉, q즉, q즉, q즉);
+Test_N(q즊, q즊, q즊, q즊, q즊);
+Test_N(q즋, q즋, q즋, q즋, q즋);
+Test_N(q즌, q즌, q즌, q즌, q즌);
+Test_N(q즍, q즍, q즍, q즍, q즍);
+Test_N(q즎, q즎, q즎, q즎, q즎);
+Test_N(q즏, q즏, q즏, q즏, q즏);
+Test_N(q즐, q즐, q즐, q즐, q즐);
+Test_N(q즑, q즑, q즑, q즑, q즑);
+Test_N(q즒, q즒, q즒, q즒, q즒);
+Test_N(q즓, q즓, q즓, q즓, q즓);
+Test_N(q즔, q즔, q즔, q즔, q즔);
+Test_N(q즕, q즕, q즕, q즕, q즕);
+Test_N(q즖, q즖, q즖, q즖, q즖);
+Test_N(q즗, q즗, q즗, q즗, q즗);
+Test_N(q즘, q즘, q즘, q즘, q즘);
+Test_N(q즙, q즙, q즙, q즙, q즙);
+Test_N(q즚, q즚, q즚, q즚, q즚);
+Test_N(q즛, q즛, q즛, q즛, q즛);
+Test_N(q즜, q즜, q즜, q즜, q즜);
+Test_N(q증, q증, q증, q증, q증);
+Test_N(q즞, q즞, q즞, q즞, q즞);
+Test_N(q즟, q즟, q즟, q즟, q즟);
+Test_N(q즠, q즠, q즠, q즠, q즠);
+Test_N(q즡, q즡, q즡, q즡, q즡);
+Test_N(q즢, q즢, q즢, q즢, q즢);
+Test_N(q즣, q즣, q즣, q즣, q즣);
+Test_N(q즤, q즤, q즤, q즤, q즤);
+Test_N(q즥, q즥, q즥, q즥, q즥);
+Test_N(q즦, q즦, q즦, q즦, q즦);
+Test_N(q즧, q즧, q즧, q즧, q즧);
+Test_N(q즨, q즨, q즨, q즨, q즨);
+Test_N(q즩, q즩, q즩, q즩, q즩);
+Test_N(q즪, q즪, q즪, q즪, q즪);
+Test_N(q즫, q즫, q즫, q즫, q즫);
+Test_N(q즬, q즬, q즬, q즬, q즬);
+Test_N(q즭, q즭, q즭, q즭, q즭);
+Test_N(q즮, q즮, q즮, q즮, q즮);
+Test_N(q즯, q즯, q즯, q즯, q즯);
+Test_N(q즰, q즰, q즰, q즰, q즰);
+Test_N(q즱, q즱, q즱, q즱, q즱);
+Test_N(q즲, q즲, q즲, q즲, q즲);
+Test_N(q즳, q즳, q즳, q즳, q즳);
+Test_N(q즴, q즴, q즴, q즴, q즴);
+Test_N(q즵, q즵, q즵, q즵, q즵);
+Test_N(q즶, q즶, q즶, q즶, q즶);
+Test_N(q즷, q즷, q즷, q즷, q즷);
+Test_N(q즸, q즸, q즸, q즸, q즸);
+Test_N(q즹, q즹, q즹, q즹, q즹);
+Test_N(q즺, q즺, q즺, q즺, q즺);
+Test_N(q즻, q즻, q즻, q즻, q즻);
+Test_N(q즼, q즼, q즼, q즼, q즼);
+Test_N(q즽, q즽, q즽, q즽, q즽);
+Test_N(q즾, q즾, q즾, q즾, q즾);
+Test_N(q즿, q즿, q즿, q즿, q즿);
+Test_N(q지, q지, q지, q지, q지);
+Test_N(q직, q직, q직, q직, q직);
+Test_N(q짂, q짂, q짂, q짂, q짂);
+Test_N(q짃, q짃, q짃, q짃, q짃);
+Test_N(q진, q진, q진, q진, q진);
+Test_N(q짅, q짅, q짅, q짅, q짅);
+Test_N(q짆, q짆, q짆, q짆, q짆);
+Test_N(q짇, q짇, q짇, q짇, q짇);
+Test_N(q질, q질, q질, q질, q질);
+Test_N(q짉, q짉, q짉, q짉, q짉);
+Test_N(q짊, q짊, q짊, q짊, q짊);
+Test_N(q짋, q짋, q짋, q짋, q짋);
+Test_N(q짌, q짌, q짌, q짌, q짌);
+Test_N(q짍, q짍, q짍, q짍, q짍);
+Test_N(q짎, q짎, q짎, q짎, q짎);
+Test_N(q짏, q짏, q짏, q짏, q짏);
+Test_N(q짐, q짐, q짐, q짐, q짐);
+Test_N(q집, q집, q집, q집, q집);
+Test_N(q짒, q짒, q짒, q짒, q짒);
+Test_N(q짓, q짓, q짓, q짓, q짓);
+Test_N(q짔, q짔, q짔, q짔, q짔);
+Test_N(q징, q징, q징, q징, q징);
+Test_N(q짖, q짖, q짖, q짖, q짖);
+Test_N(q짗, q짗, q짗, q짗, q짗);
+Test_N(q짘, q짘, q짘, q짘, q짘);
+Test_N(q짙, q짙, q짙, q짙, q짙);
+Test_N(q짚, q짚, q짚, q짚, q짚);
+Test_N(q짛, q짛, q짛, q짛, q짛);
+Test_N(q짜, q짜, q짜, q짜, q짜);
+Test_N(q짝, q짝, q짝, q짝, q짝);
+Test_N(q짞, q짞, q짞, q짞, q짞);
+Test_N(q짟, q짟, q짟, q짟, q짟);
+Test_N(q짠, q짠, q짠, q짠, q짠);
+Test_N(q짡, q짡, q짡, q짡, q짡);
+Test_N(q짢, q짢, q짢, q짢, q짢);
+Test_N(q짣, q짣, q짣, q짣, q짣);
+Test_N(q짤, q짤, q짤, q짤, q짤);
+Test_N(q짥, q짥, q짥, q짥, q짥);
+Test_N(q짦, q짦, q짦, q짦, q짦);
+Test_N(q짧, q짧, q짧, q짧, q짧);
+Test_N(q짨, q짨, q짨, q짨, q짨);
+Test_N(q짩, q짩, q짩, q짩, q짩);
+Test_N(q짪, q짪, q짪, q짪, q짪);
+Test_N(q짫, q짫, q짫, q짫, q짫);
+Test_N(q짬, q짬, q짬, q짬, q짬);
+Test_N(q짭, q짭, q짭, q짭, q짭);
+Test_N(q짮, q짮, q짮, q짮, q짮);
+Test_N(q짯, q짯, q짯, q짯, q짯);
+Test_N(q짰, q짰, q짰, q짰, q짰);
+Test_N(q짱, q짱, q짱, q짱, q짱);
+Test_N(q짲, q짲, q짲, q짲, q짲);
+Test_N(q짳, q짳, q짳, q짳, q짳);
+Test_N(q짴, q짴, q짴, q짴, q짴);
+Test_N(q짵, q짵, q짵, q짵, q짵);
+Test_N(q짶, q짶, q짶, q짶, q짶);
+Test_N(q짷, q짷, q짷, q짷, q짷);
+Test_N(q째, q째, q째, q째, q째);
+Test_N(q짹, q짹, q짹, q짹, q짹);
+Test_N(q짺, q짺, q짺, q짺, q짺);
+Test_N(q짻, q짻, q짻, q짻, q짻);
+Test_N(q짼, q짼, q짼, q짼, q짼);
+Test_N(q짽, q짽, q짽, q짽, q짽);
+Test_N(q짾, q짾, q짾, q짾, q짾);
+Test_N(q짿, q짿, q짿, q짿, q짿);
+Test_N(q쨀, q쨀, q쨀, q쨀, q쨀);
+Test_N(q쨁, q쨁, q쨁, q쨁, q쨁);
+Test_N(q쨂, q쨂, q쨂, q쨂, q쨂);
+Test_N(q쨃, q쨃, q쨃, q쨃, q쨃);
+Test_N(q쨄, q쨄, q쨄, q쨄, q쨄);
+Test_N(q쨅, q쨅, q쨅, q쨅, q쨅);
+Test_N(q쨆, q쨆, q쨆, q쨆, q쨆);
+Test_N(q쨇, q쨇, q쨇, q쨇, q쨇);
+Test_N(q쨈, q쨈, q쨈, q쨈, q쨈);
+Test_N(q쨉, q쨉, q쨉, q쨉, q쨉);
+Test_N(q쨊, q쨊, q쨊, q쨊, q쨊);
+Test_N(q쨋, q쨋, q쨋, q쨋, q쨋);
+Test_N(q쨌, q쨌, q쨌, q쨌, q쨌);
+Test_N(q쨍, q쨍, q쨍, q쨍, q쨍);
+Test_N(q쨎, q쨎, q쨎, q쨎, q쨎);
+Test_N(q쨏, q쨏, q쨏, q쨏, q쨏);
+Test_N(q쨐, q쨐, q쨐, q쨐, q쨐);
+Test_N(q쨑, q쨑, q쨑, q쨑, q쨑);
+Test_N(q쨒, q쨒, q쨒, q쨒, q쨒);
+Test_N(q쨓, q쨓, q쨓, q쨓, q쨓);
+Test_N(q쨔, q쨔, q쨔, q쨔, q쨔);
+Test_N(q쨕, q쨕, q쨕, q쨕, q쨕);
+Test_N(q쨖, q쨖, q쨖, q쨖, q쨖);
+Test_N(q쨗, q쨗, q쨗, q쨗, q쨗);
+Test_N(q쨘, q쨘, q쨘, q쨘, q쨘);
+Test_N(q쨙, q쨙, q쨙, q쨙, q쨙);
+Test_N(q쨚, q쨚, q쨚, q쨚, q쨚);
+Test_N(q쨛, q쨛, q쨛, q쨛, q쨛);
+Test_N(q쨜, q쨜, q쨜, q쨜, q쨜);
+Test_N(q쨝, q쨝, q쨝, q쨝, q쨝);
+Test_N(q쨞, q쨞, q쨞, q쨞, q쨞);
+Test_N(q쨟, q쨟, q쨟, q쨟, q쨟);
+Test_N(q쨠, q쨠, q쨠, q쨠, q쨠);
+Test_N(q쨡, q쨡, q쨡, q쨡, q쨡);
+Test_N(q쨢, q쨢, q쨢, q쨢, q쨢);
+Test_N(q쨣, q쨣, q쨣, q쨣, q쨣);
+Test_N(q쨤, q쨤, q쨤, q쨤, q쨤);
+Test_N(q쨥, q쨥, q쨥, q쨥, q쨥);
+Test_N(q쨦, q쨦, q쨦, q쨦, q쨦);
+Test_N(q쨧, q쨧, q쨧, q쨧, q쨧);
+Test_N(q쨨, q쨨, q쨨, q쨨, q쨨);
+Test_N(q쨩, q쨩, q쨩, q쨩, q쨩);
+Test_N(q쨪, q쨪, q쨪, q쨪, q쨪);
+Test_N(q쨫, q쨫, q쨫, q쨫, q쨫);
+Test_N(q쨬, q쨬, q쨬, q쨬, q쨬);
+Test_N(q쨭, q쨭, q쨭, q쨭, q쨭);
+Test_N(q쨮, q쨮, q쨮, q쨮, q쨮);
+Test_N(q쨯, q쨯, q쨯, q쨯, q쨯);
+Test_N(q쨰, q쨰, q쨰, q쨰, q쨰);
+Test_N(q쨱, q쨱, q쨱, q쨱, q쨱);
+Test_N(q쨲, q쨲, q쨲, q쨲, q쨲);
+Test_N(q쨳, q쨳, q쨳, q쨳, q쨳);
+Test_N(q쨴, q쨴, q쨴, q쨴, q쨴);
+Test_N(q쨵, q쨵, q쨵, q쨵, q쨵);
+Test_N(q쨶, q쨶, q쨶, q쨶, q쨶);
+Test_N(q쨷, q쨷, q쨷, q쨷, q쨷);
+Test_N(q쨸, q쨸, q쨸, q쨸, q쨸);
+Test_N(q쨹, q쨹, q쨹, q쨹, q쨹);
+Test_N(q쨺, q쨺, q쨺, q쨺, q쨺);
+Test_N(q쨻, q쨻, q쨻, q쨻, q쨻);
+Test_N(q쨼, q쨼, q쨼, q쨼, q쨼);
+Test_N(q쨽, q쨽, q쨽, q쨽, q쨽);
+Test_N(q쨾, q쨾, q쨾, q쨾, q쨾);
+Test_N(q쨿, q쨿, q쨿, q쨿, q쨿);
+Test_N(q쩀, q쩀, q쩀, q쩀, q쩀);
+Test_N(q쩁, q쩁, q쩁, q쩁, q쩁);
+Test_N(q쩂, q쩂, q쩂, q쩂, q쩂);
+Test_N(q쩃, q쩃, q쩃, q쩃, q쩃);
+Test_N(q쩄, q쩄, q쩄, q쩄, q쩄);
+Test_N(q쩅, q쩅, q쩅, q쩅, q쩅);
+Test_N(q쩆, q쩆, q쩆, q쩆, q쩆);
+Test_N(q쩇, q쩇, q쩇, q쩇, q쩇);
+Test_N(q쩈, q쩈, q쩈, q쩈, q쩈);
+Test_N(q쩉, q쩉, q쩉, q쩉, q쩉);
+Test_N(q쩊, q쩊, q쩊, q쩊, q쩊);
+Test_N(q쩋, q쩋, q쩋, q쩋, q쩋);
+Test_N(q쩌, q쩌, q쩌, q쩌, q쩌);
+Test_N(q쩍, q쩍, q쩍, q쩍, q쩍);
+Test_N(q쩎, q쩎, q쩎, q쩎, q쩎);
+Test_N(q쩏, q쩏, q쩏, q쩏, q쩏);
+Test_N(q쩐, q쩐, q쩐, q쩐, q쩐);
+Test_N(q쩑, q쩑, q쩑, q쩑, q쩑);
+Test_N(q쩒, q쩒, q쩒, q쩒, q쩒);
+Test_N(q쩓, q쩓, q쩓, q쩓, q쩓);
+Test_N(q쩔, q쩔, q쩔, q쩔, q쩔);
+Test_N(q쩕, q쩕, q쩕, q쩕, q쩕);
+Test_N(q쩖, q쩖, q쩖, q쩖, q쩖);
+Test_N(q쩗, q쩗, q쩗, q쩗, q쩗);
+Test_N(q쩘, q쩘, q쩘, q쩘, q쩘);
+Test_N(q쩙, q쩙, q쩙, q쩙, q쩙);
+Test_N(q쩚, q쩚, q쩚, q쩚, q쩚);
+Test_N(q쩛, q쩛, q쩛, q쩛, q쩛);
+Test_N(q쩜, q쩜, q쩜, q쩜, q쩜);
+Test_N(q쩝, q쩝, q쩝, q쩝, q쩝);
+Test_N(q쩞, q쩞, q쩞, q쩞, q쩞);
+Test_N(q쩟, q쩟, q쩟, q쩟, q쩟);
+Test_N(q쩠, q쩠, q쩠, q쩠, q쩠);
+Test_N(q쩡, q쩡, q쩡, q쩡, q쩡);
+Test_N(q쩢, q쩢, q쩢, q쩢, q쩢);
+Test_N(q쩣, q쩣, q쩣, q쩣, q쩣);
+Test_N(q쩤, q쩤, q쩤, q쩤, q쩤);
+Test_N(q쩥, q쩥, q쩥, q쩥, q쩥);
+Test_N(q쩦, q쩦, q쩦, q쩦, q쩦);
+Test_N(q쩧, q쩧, q쩧, q쩧, q쩧);
+Test_N(q쩨, q쩨, q쩨, q쩨, q쩨);
+Test_N(q쩩, q쩩, q쩩, q쩩, q쩩);
+Test_N(q쩪, q쩪, q쩪, q쩪, q쩪);
+Test_N(q쩫, q쩫, q쩫, q쩫, q쩫);
+Test_N(q쩬, q쩬, q쩬, q쩬, q쩬);
+Test_N(q쩭, q쩭, q쩭, q쩭, q쩭);
+Test_N(q쩮, q쩮, q쩮, q쩮, q쩮);
+Test_N(q쩯, q쩯, q쩯, q쩯, q쩯);
+Test_N(q쩰, q쩰, q쩰, q쩰, q쩰);
+Test_N(q쩱, q쩱, q쩱, q쩱, q쩱);
+Test_N(q쩲, q쩲, q쩲, q쩲, q쩲);
+Test_N(q쩳, q쩳, q쩳, q쩳, q쩳);
+Test_N(q쩴, q쩴, q쩴, q쩴, q쩴);
+Test_N(q쩵, q쩵, q쩵, q쩵, q쩵);
+Test_N(q쩶, q쩶, q쩶, q쩶, q쩶);
+Test_N(q쩷, q쩷, q쩷, q쩷, q쩷);
+Test_N(q쩸, q쩸, q쩸, q쩸, q쩸);
+Test_N(q쩹, q쩹, q쩹, q쩹, q쩹);
+Test_N(q쩺, q쩺, q쩺, q쩺, q쩺);
+Test_N(q쩻, q쩻, q쩻, q쩻, q쩻);
+Test_N(q쩼, q쩼, q쩼, q쩼, q쩼);
+Test_N(q쩽, q쩽, q쩽, q쩽, q쩽);
+Test_N(q쩾, q쩾, q쩾, q쩾, q쩾);
+Test_N(q쩿, q쩿, q쩿, q쩿, q쩿);
+Test_N(q쪀, q쪀, q쪀, q쪀, q쪀);
+Test_N(q쪁, q쪁, q쪁, q쪁, q쪁);
+Test_N(q쪂, q쪂, q쪂, q쪂, q쪂);
+Test_N(q쪃, q쪃, q쪃, q쪃, q쪃);
+Test_N(q쪄, q쪄, q쪄, q쪄, q쪄);
+Test_N(q쪅, q쪅, q쪅, q쪅, q쪅);
+Test_N(q쪆, q쪆, q쪆, q쪆, q쪆);
+Test_N(q쪇, q쪇, q쪇, q쪇, q쪇);
+Test_N(q쪈, q쪈, q쪈, q쪈, q쪈);
+Test_N(q쪉, q쪉, q쪉, q쪉, q쪉);
+Test_N(q쪊, q쪊, q쪊, q쪊, q쪊);
+Test_N(q쪋, q쪋, q쪋, q쪋, q쪋);
+Test_N(q쪌, q쪌, q쪌, q쪌, q쪌);
+Test_N(q쪍, q쪍, q쪍, q쪍, q쪍);
+Test_N(q쪎, q쪎, q쪎, q쪎, q쪎);
+Test_N(q쪏, q쪏, q쪏, q쪏, q쪏);
+Test_N(q쪐, q쪐, q쪐, q쪐, q쪐);
+Test_N(q쪑, q쪑, q쪑, q쪑, q쪑);
+Test_N(q쪒, q쪒, q쪒, q쪒, q쪒);
+Test_N(q쪓, q쪓, q쪓, q쪓, q쪓);
+Test_N(q쪔, q쪔, q쪔, q쪔, q쪔);
+Test_N(q쪕, q쪕, q쪕, q쪕, q쪕);
+Test_N(q쪖, q쪖, q쪖, q쪖, q쪖);
+Test_N(q쪗, q쪗, q쪗, q쪗, q쪗);
+Test_N(q쪘, q쪘, q쪘, q쪘, q쪘);
+Test_N(q쪙, q쪙, q쪙, q쪙, q쪙);
+Test_N(q쪚, q쪚, q쪚, q쪚, q쪚);
+Test_N(q쪛, q쪛, q쪛, q쪛, q쪛);
+Test_N(q쪜, q쪜, q쪜, q쪜, q쪜);
+Test_N(q쪝, q쪝, q쪝, q쪝, q쪝);
+Test_N(q쪞, q쪞, q쪞, q쪞, q쪞);
+Test_N(q쪟, q쪟, q쪟, q쪟, q쪟);
+Test_N(q쪠, q쪠, q쪠, q쪠, q쪠);
+Test_N(q쪡, q쪡, q쪡, q쪡, q쪡);
+Test_N(q쪢, q쪢, q쪢, q쪢, q쪢);
+Test_N(q쪣, q쪣, q쪣, q쪣, q쪣);
+Test_N(q쪤, q쪤, q쪤, q쪤, q쪤);
+Test_N(q쪥, q쪥, q쪥, q쪥, q쪥);
+Test_N(q쪦, q쪦, q쪦, q쪦, q쪦);
+Test_N(q쪧, q쪧, q쪧, q쪧, q쪧);
+Test_N(q쪨, q쪨, q쪨, q쪨, q쪨);
+Test_N(q쪩, q쪩, q쪩, q쪩, q쪩);
+Test_N(q쪪, q쪪, q쪪, q쪪, q쪪);
+Test_N(q쪫, q쪫, q쪫, q쪫, q쪫);
+Test_N(q쪬, q쪬, q쪬, q쪬, q쪬);
+Test_N(q쪭, q쪭, q쪭, q쪭, q쪭);
+Test_N(q쪮, q쪮, q쪮, q쪮, q쪮);
+Test_N(q쪯, q쪯, q쪯, q쪯, q쪯);
+Test_N(q쪰, q쪰, q쪰, q쪰, q쪰);
+Test_N(q쪱, q쪱, q쪱, q쪱, q쪱);
+Test_N(q쪲, q쪲, q쪲, q쪲, q쪲);
+Test_N(q쪳, q쪳, q쪳, q쪳, q쪳);
+Test_N(q쪴, q쪴, q쪴, q쪴, q쪴);
+Test_N(q쪵, q쪵, q쪵, q쪵, q쪵);
+Test_N(q쪶, q쪶, q쪶, q쪶, q쪶);
+Test_N(q쪷, q쪷, q쪷, q쪷, q쪷);
+Test_N(q쪸, q쪸, q쪸, q쪸, q쪸);
+Test_N(q쪹, q쪹, q쪹, q쪹, q쪹);
+Test_N(q쪺, q쪺, q쪺, q쪺, q쪺);
+Test_N(q쪻, q쪻, q쪻, q쪻, q쪻);
+Test_N(q쪼, q쪼, q쪼, q쪼, q쪼);
+Test_N(q쪽, q쪽, q쪽, q쪽, q쪽);
+Test_N(q쪾, q쪾, q쪾, q쪾, q쪾);
+Test_N(q쪿, q쪿, q쪿, q쪿, q쪿);
+Test_N(q쫀, q쫀, q쫀, q쫀, q쫀);
+Test_N(q쫁, q쫁, q쫁, q쫁, q쫁);
+Test_N(q쫂, q쫂, q쫂, q쫂, q쫂);
+Test_N(q쫃, q쫃, q쫃, q쫃, q쫃);
+Test_N(q쫄, q쫄, q쫄, q쫄, q쫄);
+Test_N(q쫅, q쫅, q쫅, q쫅, q쫅);
+Test_N(q쫆, q쫆, q쫆, q쫆, q쫆);
+Test_N(q쫇, q쫇, q쫇, q쫇, q쫇);
+Test_N(q쫈, q쫈, q쫈, q쫈, q쫈);
+Test_N(q쫉, q쫉, q쫉, q쫉, q쫉);
+Test_N(q쫊, q쫊, q쫊, q쫊, q쫊);
+Test_N(q쫋, q쫋, q쫋, q쫋, q쫋);
+Test_N(q쫌, q쫌, q쫌, q쫌, q쫌);
+Test_N(q쫍, q쫍, q쫍, q쫍, q쫍);
+Test_N(q쫎, q쫎, q쫎, q쫎, q쫎);
+Test_N(q쫏, q쫏, q쫏, q쫏, q쫏);
+Test_N(q쫐, q쫐, q쫐, q쫐, q쫐);
+Test_N(q쫑, q쫑, q쫑, q쫑, q쫑);
+Test_N(q쫒, q쫒, q쫒, q쫒, q쫒);
+Test_N(q쫓, q쫓, q쫓, q쫓, q쫓);
+Test_N(q쫔, q쫔, q쫔, q쫔, q쫔);
+Test_N(q쫕, q쫕, q쫕, q쫕, q쫕);
+Test_N(q쫖, q쫖, q쫖, q쫖, q쫖);
+Test_N(q쫗, q쫗, q쫗, q쫗, q쫗);
+Test_N(q쫘, q쫘, q쫘, q쫘, q쫘);
+Test_N(q쫙, q쫙, q쫙, q쫙, q쫙);
+Test_N(q쫚, q쫚, q쫚, q쫚, q쫚);
+Test_N(q쫛, q쫛, q쫛, q쫛, q쫛);
+Test_N(q쫜, q쫜, q쫜, q쫜, q쫜);
+Test_N(q쫝, q쫝, q쫝, q쫝, q쫝);
+Test_N(q쫞, q쫞, q쫞, q쫞, q쫞);
+Test_N(q쫟, q쫟, q쫟, q쫟, q쫟);
+Test_N(q쫠, q쫠, q쫠, q쫠, q쫠);
+Test_N(q쫡, q쫡, q쫡, q쫡, q쫡);
+Test_N(q쫢, q쫢, q쫢, q쫢, q쫢);
+Test_N(q쫣, q쫣, q쫣, q쫣, q쫣);
+Test_N(q쫤, q쫤, q쫤, q쫤, q쫤);
+Test_N(q쫥, q쫥, q쫥, q쫥, q쫥);
+Test_N(q쫦, q쫦, q쫦, q쫦, q쫦);
+Test_N(q쫧, q쫧, q쫧, q쫧, q쫧);
+Test_N(q쫨, q쫨, q쫨, q쫨, q쫨);
+Test_N(q쫩, q쫩, q쫩, q쫩, q쫩);
+Test_N(q쫪, q쫪, q쫪, q쫪, q쫪);
+Test_N(q쫫, q쫫, q쫫, q쫫, q쫫);
+Test_N(q쫬, q쫬, q쫬, q쫬, q쫬);
+Test_N(q쫭, q쫭, q쫭, q쫭, q쫭);
+Test_N(q쫮, q쫮, q쫮, q쫮, q쫮);
+Test_N(q쫯, q쫯, q쫯, q쫯, q쫯);
+Test_N(q쫰, q쫰, q쫰, q쫰, q쫰);
+Test_N(q쫱, q쫱, q쫱, q쫱, q쫱);
+Test_N(q쫲, q쫲, q쫲, q쫲, q쫲);
+Test_N(q쫳, q쫳, q쫳, q쫳, q쫳);
+Test_N(q쫴, q쫴, q쫴, q쫴, q쫴);
+Test_N(q쫵, q쫵, q쫵, q쫵, q쫵);
+Test_N(q쫶, q쫶, q쫶, q쫶, q쫶);
+Test_N(q쫷, q쫷, q쫷, q쫷, q쫷);
+Test_N(q쫸, q쫸, q쫸, q쫸, q쫸);
+Test_N(q쫹, q쫹, q쫹, q쫹, q쫹);
+Test_N(q쫺, q쫺, q쫺, q쫺, q쫺);
+Test_N(q쫻, q쫻, q쫻, q쫻, q쫻);
+Test_N(q쫼, q쫼, q쫼, q쫼, q쫼);
+Test_N(q쫽, q쫽, q쫽, q쫽, q쫽);
+Test_N(q쫾, q쫾, q쫾, q쫾, q쫾);
+Test_N(q쫿, q쫿, q쫿, q쫿, q쫿);
+Test_N(q쬀, q쬀, q쬀, q쬀, q쬀);
+Test_N(q쬁, q쬁, q쬁, q쬁, q쬁);
+Test_N(q쬂, q쬂, q쬂, q쬂, q쬂);
+Test_N(q쬃, q쬃, q쬃, q쬃, q쬃);
+Test_N(q쬄, q쬄, q쬄, q쬄, q쬄);
+Test_N(q쬅, q쬅, q쬅, q쬅, q쬅);
+Test_N(q쬆, q쬆, q쬆, q쬆, q쬆);
+Test_N(q쬇, q쬇, q쬇, q쬇, q쬇);
+Test_N(q쬈, q쬈, q쬈, q쬈, q쬈);
+Test_N(q쬉, q쬉, q쬉, q쬉, q쬉);
+Test_N(q쬊, q쬊, q쬊, q쬊, q쬊);
+Test_N(q쬋, q쬋, q쬋, q쬋, q쬋);
+Test_N(q쬌, q쬌, q쬌, q쬌, q쬌);
+Test_N(q쬍, q쬍, q쬍, q쬍, q쬍);
+Test_N(q쬎, q쬎, q쬎, q쬎, q쬎);
+Test_N(q쬏, q쬏, q쬏, q쬏, q쬏);
+Test_N(q쬐, q쬐, q쬐, q쬐, q쬐);
+Test_N(q쬑, q쬑, q쬑, q쬑, q쬑);
+Test_N(q쬒, q쬒, q쬒, q쬒, q쬒);
+Test_N(q쬓, q쬓, q쬓, q쬓, q쬓);
+Test_N(q쬔, q쬔, q쬔, q쬔, q쬔);
+Test_N(q쬕, q쬕, q쬕, q쬕, q쬕);
+Test_N(q쬖, q쬖, q쬖, q쬖, q쬖);
+Test_N(q쬗, q쬗, q쬗, q쬗, q쬗);
+Test_N(q쬘, q쬘, q쬘, q쬘, q쬘);
+Test_N(q쬙, q쬙, q쬙, q쬙, q쬙);
+Test_N(q쬚, q쬚, q쬚, q쬚, q쬚);
+Test_N(q쬛, q쬛, q쬛, q쬛, q쬛);
+Test_N(q쬜, q쬜, q쬜, q쬜, q쬜);
+Test_N(q쬝, q쬝, q쬝, q쬝, q쬝);
+Test_N(q쬞, q쬞, q쬞, q쬞, q쬞);
+Test_N(q쬟, q쬟, q쬟, q쬟, q쬟);
+Test_N(q쬠, q쬠, q쬠, q쬠, q쬠);
+Test_N(q쬡, q쬡, q쬡, q쬡, q쬡);
+Test_N(q쬢, q쬢, q쬢, q쬢, q쬢);
+Test_N(q쬣, q쬣, q쬣, q쬣, q쬣);
+Test_N(q쬤, q쬤, q쬤, q쬤, q쬤);
+Test_N(q쬥, q쬥, q쬥, q쬥, q쬥);
+Test_N(q쬦, q쬦, q쬦, q쬦, q쬦);
+Test_N(q쬧, q쬧, q쬧, q쬧, q쬧);
+Test_N(q쬨, q쬨, q쬨, q쬨, q쬨);
+Test_N(q쬩, q쬩, q쬩, q쬩, q쬩);
+Test_N(q쬪, q쬪, q쬪, q쬪, q쬪);
+Test_N(q쬫, q쬫, q쬫, q쬫, q쬫);
+Test_N(q쬬, q쬬, q쬬, q쬬, q쬬);
+Test_N(q쬭, q쬭, q쬭, q쬭, q쬭);
+Test_N(q쬮, q쬮, q쬮, q쬮, q쬮);
+Test_N(q쬯, q쬯, q쬯, q쬯, q쬯);
+Test_N(q쬰, q쬰, q쬰, q쬰, q쬰);
+Test_N(q쬱, q쬱, q쬱, q쬱, q쬱);
+Test_N(q쬲, q쬲, q쬲, q쬲, q쬲);
+Test_N(q쬳, q쬳, q쬳, q쬳, q쬳);
+Test_N(q쬴, q쬴, q쬴, q쬴, q쬴);
+Test_N(q쬵, q쬵, q쬵, q쬵, q쬵);
+Test_N(q쬶, q쬶, q쬶, q쬶, q쬶);
+Test_N(q쬷, q쬷, q쬷, q쬷, q쬷);
+Test_N(q쬸, q쬸, q쬸, q쬸, q쬸);
+Test_N(q쬹, q쬹, q쬹, q쬹, q쬹);
+Test_N(q쬺, q쬺, q쬺, q쬺, q쬺);
+Test_N(q쬻, q쬻, q쬻, q쬻, q쬻);
+Test_N(q쬼, q쬼, q쬼, q쬼, q쬼);
+Test_N(q쬽, q쬽, q쬽, q쬽, q쬽);
+Test_N(q쬾, q쬾, q쬾, q쬾, q쬾);
+Test_N(q쬿, q쬿, q쬿, q쬿, q쬿);
+Test_N(q쭀, q쭀, q쭀, q쭀, q쭀);
+Test_N(q쭁, q쭁, q쭁, q쭁, q쭁);
+Test_N(q쭂, q쭂, q쭂, q쭂, q쭂);
+Test_N(q쭃, q쭃, q쭃, q쭃, q쭃);
+Test_N(q쭄, q쭄, q쭄, q쭄, q쭄);
+Test_N(q쭅, q쭅, q쭅, q쭅, q쭅);
+Test_N(q쭆, q쭆, q쭆, q쭆, q쭆);
+Test_N(q쭇, q쭇, q쭇, q쭇, q쭇);
+Test_N(q쭈, q쭈, q쭈, q쭈, q쭈);
+Test_N(q쭉, q쭉, q쭉, q쭉, q쭉);
+Test_N(q쭊, q쭊, q쭊, q쭊, q쭊);
+Test_N(q쭋, q쭋, q쭋, q쭋, q쭋);
+Test_N(q쭌, q쭌, q쭌, q쭌, q쭌);
+Test_N(q쭍, q쭍, q쭍, q쭍, q쭍);
+Test_N(q쭎, q쭎, q쭎, q쭎, q쭎);
+Test_N(q쭏, q쭏, q쭏, q쭏, q쭏);
+Test_N(q쭐, q쭐, q쭐, q쭐, q쭐);
+Test_N(q쭑, q쭑, q쭑, q쭑, q쭑);
+Test_N(q쭒, q쭒, q쭒, q쭒, q쭒);
+Test_N(q쭓, q쭓, q쭓, q쭓, q쭓);
+Test_N(q쭔, q쭔, q쭔, q쭔, q쭔);
+Test_N(q쭕, q쭕, q쭕, q쭕, q쭕);
+Test_N(q쭖, q쭖, q쭖, q쭖, q쭖);
+Test_N(q쭗, q쭗, q쭗, q쭗, q쭗);
+Test_N(q쭘, q쭘, q쭘, q쭘, q쭘);
+Test_N(q쭙, q쭙, q쭙, q쭙, q쭙);
+Test_N(q쭚, q쭚, q쭚, q쭚, q쭚);
+Test_N(q쭛, q쭛, q쭛, q쭛, q쭛);
+Test_N(q쭜, q쭜, q쭜, q쭜, q쭜);
+Test_N(q쭝, q쭝, q쭝, q쭝, q쭝);
+Test_N(q쭞, q쭞, q쭞, q쭞, q쭞);
+Test_N(q쭟, q쭟, q쭟, q쭟, q쭟);
+Test_N(q쭠, q쭠, q쭠, q쭠, q쭠);
+Test_N(q쭡, q쭡, q쭡, q쭡, q쭡);
+Test_N(q쭢, q쭢, q쭢, q쭢, q쭢);
+Test_N(q쭣, q쭣, q쭣, q쭣, q쭣);
+Test_N(q쭤, q쭤, q쭤, q쭤, q쭤);
+Test_N(q쭥, q쭥, q쭥, q쭥, q쭥);
+Test_N(q쭦, q쭦, q쭦, q쭦, q쭦);
+Test_N(q쭧, q쭧, q쭧, q쭧, q쭧);
+Test_N(q쭨, q쭨, q쭨, q쭨, q쭨);
+Test_N(q쭩, q쭩, q쭩, q쭩, q쭩);
+Test_N(q쭪, q쭪, q쭪, q쭪, q쭪);
+Test_N(q쭫, q쭫, q쭫, q쭫, q쭫);
+Test_N(q쭬, q쭬, q쭬, q쭬, q쭬);
+Test_N(q쭭, q쭭, q쭭, q쭭, q쭭);
+Test_N(q쭮, q쭮, q쭮, q쭮, q쭮);
+Test_N(q쭯, q쭯, q쭯, q쭯, q쭯);
+Test_N(q쭰, q쭰, q쭰, q쭰, q쭰);
+Test_N(q쭱, q쭱, q쭱, q쭱, q쭱);
+Test_N(q쭲, q쭲, q쭲, q쭲, q쭲);
+Test_N(q쭳, q쭳, q쭳, q쭳, q쭳);
+Test_N(q쭴, q쭴, q쭴, q쭴, q쭴);
+Test_N(q쭵, q쭵, q쭵, q쭵, q쭵);
+Test_N(q쭶, q쭶, q쭶, q쭶, q쭶);
+Test_N(q쭷, q쭷, q쭷, q쭷, q쭷);
+Test_N(q쭸, q쭸, q쭸, q쭸, q쭸);
+Test_N(q쭹, q쭹, q쭹, q쭹, q쭹);
+Test_N(q쭺, q쭺, q쭺, q쭺, q쭺);
+Test_N(q쭻, q쭻, q쭻, q쭻, q쭻);
+Test_N(q쭼, q쭼, q쭼, q쭼, q쭼);
+Test_N(q쭽, q쭽, q쭽, q쭽, q쭽);
+Test_N(q쭾, q쭾, q쭾, q쭾, q쭾);
+Test_N(q쭿, q쭿, q쭿, q쭿, q쭿);
+Test_N(q쮀, q쮀, q쮀, q쮀, q쮀);
+Test_N(q쮁, q쮁, q쮁, q쮁, q쮁);
+Test_N(q쮂, q쮂, q쮂, q쮂, q쮂);
+Test_N(q쮃, q쮃, q쮃, q쮃, q쮃);
+Test_N(q쮄, q쮄, q쮄, q쮄, q쮄);
+Test_N(q쮅, q쮅, q쮅, q쮅, q쮅);
+Test_N(q쮆, q쮆, q쮆, q쮆, q쮆);
+Test_N(q쮇, q쮇, q쮇, q쮇, q쮇);
+Test_N(q쮈, q쮈, q쮈, q쮈, q쮈);
+Test_N(q쮉, q쮉, q쮉, q쮉, q쮉);
+Test_N(q쮊, q쮊, q쮊, q쮊, q쮊);
+Test_N(q쮋, q쮋, q쮋, q쮋, q쮋);
+Test_N(q쮌, q쮌, q쮌, q쮌, q쮌);
+Test_N(q쮍, q쮍, q쮍, q쮍, q쮍);
+Test_N(q쮎, q쮎, q쮎, q쮎, q쮎);
+Test_N(q쮏, q쮏, q쮏, q쮏, q쮏);
+Test_N(q쮐, q쮐, q쮐, q쮐, q쮐);
+Test_N(q쮑, q쮑, q쮑, q쮑, q쮑);
+Test_N(q쮒, q쮒, q쮒, q쮒, q쮒);
+Test_N(q쮓, q쮓, q쮓, q쮓, q쮓);
+Test_N(q쮔, q쮔, q쮔, q쮔, q쮔);
+Test_N(q쮕, q쮕, q쮕, q쮕, q쮕);
+Test_N(q쮖, q쮖, q쮖, q쮖, q쮖);
+Test_N(q쮗, q쮗, q쮗, q쮗, q쮗);
+Test_N(q쮘, q쮘, q쮘, q쮘, q쮘);
+Test_N(q쮙, q쮙, q쮙, q쮙, q쮙);
+Test_N(q쮚, q쮚, q쮚, q쮚, q쮚);
+Test_N(q쮛, q쮛, q쮛, q쮛, q쮛);
+Test_N(q쮜, q쮜, q쮜, q쮜, q쮜);
+Test_N(q쮝, q쮝, q쮝, q쮝, q쮝);
+Test_N(q쮞, q쮞, q쮞, q쮞, q쮞);
+Test_N(q쮟, q쮟, q쮟, q쮟, q쮟);
+Test_N(q쮠, q쮠, q쮠, q쮠, q쮠);
+Test_N(q쮡, q쮡, q쮡, q쮡, q쮡);
+Test_N(q쮢, q쮢, q쮢, q쮢, q쮢);
+Test_N(q쮣, q쮣, q쮣, q쮣, q쮣);
+Test_N(q쮤, q쮤, q쮤, q쮤, q쮤);
+Test_N(q쮥, q쮥, q쮥, q쮥, q쮥);
+Test_N(q쮦, q쮦, q쮦, q쮦, q쮦);
+Test_N(q쮧, q쮧, q쮧, q쮧, q쮧);
+Test_N(q쮨, q쮨, q쮨, q쮨, q쮨);
+Test_N(q쮩, q쮩, q쮩, q쮩, q쮩);
+Test_N(q쮪, q쮪, q쮪, q쮪, q쮪);
+Test_N(q쮫, q쮫, q쮫, q쮫, q쮫);
+Test_N(q쮬, q쮬, q쮬, q쮬, q쮬);
+Test_N(q쮭, q쮭, q쮭, q쮭, q쮭);
+Test_N(q쮮, q쮮, q쮮, q쮮, q쮮);
+Test_N(q쮯, q쮯, q쮯, q쮯, q쮯);
+Test_N(q쮰, q쮰, q쮰, q쮰, q쮰);
+Test_N(q쮱, q쮱, q쮱, q쮱, q쮱);
+Test_N(q쮲, q쮲, q쮲, q쮲, q쮲);
+Test_N(q쮳, q쮳, q쮳, q쮳, q쮳);
+Test_N(q쮴, q쮴, q쮴, q쮴, q쮴);
+Test_N(q쮵, q쮵, q쮵, q쮵, q쮵);
+Test_N(q쮶, q쮶, q쮶, q쮶, q쮶);
+Test_N(q쮷, q쮷, q쮷, q쮷, q쮷);
+Test_N(q쮸, q쮸, q쮸, q쮸, q쮸);
+Test_N(q쮹, q쮹, q쮹, q쮹, q쮹);
+Test_N(q쮺, q쮺, q쮺, q쮺, q쮺);
+Test_N(q쮻, q쮻, q쮻, q쮻, q쮻);
+Test_N(q쮼, q쮼, q쮼, q쮼, q쮼);
+Test_N(q쮽, q쮽, q쮽, q쮽, q쮽);
+Test_N(q쮾, q쮾, q쮾, q쮾, q쮾);
+Test_N(q쮿, q쮿, q쮿, q쮿, q쮿);
+Test_N(q쯀, q쯀, q쯀, q쯀, q쯀);
+Test_N(q쯁, q쯁, q쯁, q쯁, q쯁);
+Test_N(q쯂, q쯂, q쯂, q쯂, q쯂);
+Test_N(q쯃, q쯃, q쯃, q쯃, q쯃);
+Test_N(q쯄, q쯄, q쯄, q쯄, q쯄);
+Test_N(q쯅, q쯅, q쯅, q쯅, q쯅);
+Test_N(q쯆, q쯆, q쯆, q쯆, q쯆);
+Test_N(q쯇, q쯇, q쯇, q쯇, q쯇);
+Test_N(q쯈, q쯈, q쯈, q쯈, q쯈);
+Test_N(q쯉, q쯉, q쯉, q쯉, q쯉);
+Test_N(q쯊, q쯊, q쯊, q쯊, q쯊);
+Test_N(q쯋, q쯋, q쯋, q쯋, q쯋);
+Test_N(q쯌, q쯌, q쯌, q쯌, q쯌);
+Test_N(q쯍, q쯍, q쯍, q쯍, q쯍);
+Test_N(q쯎, q쯎, q쯎, q쯎, q쯎);
+Test_N(q쯏, q쯏, q쯏, q쯏, q쯏);
+Test_N(q쯐, q쯐, q쯐, q쯐, q쯐);
+Test_N(q쯑, q쯑, q쯑, q쯑, q쯑);
+Test_N(q쯒, q쯒, q쯒, q쯒, q쯒);
+Test_N(q쯓, q쯓, q쯓, q쯓, q쯓);
+Test_N(q쯔, q쯔, q쯔, q쯔, q쯔);
+Test_N(q쯕, q쯕, q쯕, q쯕, q쯕);
+Test_N(q쯖, q쯖, q쯖, q쯖, q쯖);
+Test_N(q쯗, q쯗, q쯗, q쯗, q쯗);
+Test_N(q쯘, q쯘, q쯘, q쯘, q쯘);
+Test_N(q쯙, q쯙, q쯙, q쯙, q쯙);
+Test_N(q쯚, q쯚, q쯚, q쯚, q쯚);
+Test_N(q쯛, q쯛, q쯛, q쯛, q쯛);
+Test_N(q쯜, q쯜, q쯜, q쯜, q쯜);
+Test_N(q쯝, q쯝, q쯝, q쯝, q쯝);
+Test_N(q쯞, q쯞, q쯞, q쯞, q쯞);
+Test_N(q쯟, q쯟, q쯟, q쯟, q쯟);
+Test_N(q쯠, q쯠, q쯠, q쯠, q쯠);
+Test_N(q쯡, q쯡, q쯡, q쯡, q쯡);
+Test_N(q쯢, q쯢, q쯢, q쯢, q쯢);
+Test_N(q쯣, q쯣, q쯣, q쯣, q쯣);
+Test_N(q쯤, q쯤, q쯤, q쯤, q쯤);
+Test_N(q쯥, q쯥, q쯥, q쯥, q쯥);
+Test_N(q쯦, q쯦, q쯦, q쯦, q쯦);
+Test_N(q쯧, q쯧, q쯧, q쯧, q쯧);
+Test_N(q쯨, q쯨, q쯨, q쯨, q쯨);
+Test_N(q쯩, q쯩, q쯩, q쯩, q쯩);
+Test_N(q쯪, q쯪, q쯪, q쯪, q쯪);
+Test_N(q쯫, q쯫, q쯫, q쯫, q쯫);
+Test_N(q쯬, q쯬, q쯬, q쯬, q쯬);
+Test_N(q쯭, q쯭, q쯭, q쯭, q쯭);
+Test_N(q쯮, q쯮, q쯮, q쯮, q쯮);
+Test_N(q쯯, q쯯, q쯯, q쯯, q쯯);
+Test_N(q쯰, q쯰, q쯰, q쯰, q쯰);
+Test_N(q쯱, q쯱, q쯱, q쯱, q쯱);
+Test_N(q쯲, q쯲, q쯲, q쯲, q쯲);
+Test_N(q쯳, q쯳, q쯳, q쯳, q쯳);
+Test_N(q쯴, q쯴, q쯴, q쯴, q쯴);
+Test_N(q쯵, q쯵, q쯵, q쯵, q쯵);
+Test_N(q쯶, q쯶, q쯶, q쯶, q쯶);
+Test_N(q쯷, q쯷, q쯷, q쯷, q쯷);
+Test_N(q쯸, q쯸, q쯸, q쯸, q쯸);
+Test_N(q쯹, q쯹, q쯹, q쯹, q쯹);
+Test_N(q쯺, q쯺, q쯺, q쯺, q쯺);
+Test_N(q쯻, q쯻, q쯻, q쯻, q쯻);
+Test_N(q쯼, q쯼, q쯼, q쯼, q쯼);
+Test_N(q쯽, q쯽, q쯽, q쯽, q쯽);
+Test_N(q쯾, q쯾, q쯾, q쯾, q쯾);
+Test_N(q쯿, q쯿, q쯿, q쯿, q쯿);
+Test_N(q찀, q찀, q찀, q찀, q찀);
+Test_N(q찁, q찁, q찁, q찁, q찁);
+Test_N(q찂, q찂, q찂, q찂, q찂);
+Test_N(q찃, q찃, q찃, q찃, q찃);
+Test_N(q찄, q찄, q찄, q찄, q찄);
+Test_N(q찅, q찅, q찅, q찅, q찅);
+Test_N(q찆, q찆, q찆, q찆, q찆);
+Test_N(q찇, q찇, q찇, q찇, q찇);
+Test_N(q찈, q찈, q찈, q찈, q찈);
+Test_N(q찉, q찉, q찉, q찉, q찉);
+Test_N(q찊, q찊, q찊, q찊, q찊);
+Test_N(q찋, q찋, q찋, q찋, q찋);
+Test_N(q찌, q찌, q찌, q찌, q찌);
+Test_N(q찍, q찍, q찍, q찍, q찍);
+Test_N(q찎, q찎, q찎, q찎, q찎);
+Test_N(q찏, q찏, q찏, q찏, q찏);
+Test_N(q찐, q찐, q찐, q찐, q찐);
+Test_N(q찑, q찑, q찑, q찑, q찑);
+Test_N(q찒, q찒, q찒, q찒, q찒);
+Test_N(q찓, q찓, q찓, q찓, q찓);
+Test_N(q찔, q찔, q찔, q찔, q찔);
+Test_N(q찕, q찕, q찕, q찕, q찕);
+Test_N(q찖, q찖, q찖, q찖, q찖);
+Test_N(q찗, q찗, q찗, q찗, q찗);
+Test_N(q찘, q찘, q찘, q찘, q찘);
+Test_N(q찙, q찙, q찙, q찙, q찙);
+Test_N(q찚, q찚, q찚, q찚, q찚);
+Test_N(q찛, q찛, q찛, q찛, q찛);
+Test_N(q찜, q찜, q찜, q찜, q찜);
+Test_N(q찝, q찝, q찝, q찝, q찝);
+Test_N(q찞, q찞, q찞, q찞, q찞);
+Test_N(q찟, q찟, q찟, q찟, q찟);
+Test_N(q찠, q찠, q찠, q찠, q찠);
+Test_N(q찡, q찡, q찡, q찡, q찡);
+Test_N(q찢, q찢, q찢, q찢, q찢);
+Test_N(q찣, q찣, q찣, q찣, q찣);
+Test_N(q찤, q찤, q찤, q찤, q찤);
+Test_N(q찥, q찥, q찥, q찥, q찥);
+Test_N(q찦, q찦, q찦, q찦, q찦);
+Test_N(q찧, q찧, q찧, q찧, q찧);
+Test_N(q차, q차, q차, q차, q차);
+Test_N(q착, q착, q착, q착, q착);
+Test_N(q찪, q찪, q찪, q찪, q찪);
+Test_N(q찫, q찫, q찫, q찫, q찫);
+Test_N(q찬, q찬, q찬, q찬, q찬);
+Test_N(q찭, q찭, q찭, q찭, q찭);
+Test_N(q찮, q찮, q찮, q찮, q찮);
+Test_N(q찯, q찯, q찯, q찯, q찯);
+Test_N(q찰, q찰, q찰, q찰, q찰);
+Test_N(q찱, q찱, q찱, q찱, q찱);
+Test_N(q찲, q찲, q찲, q찲, q찲);
+Test_N(q찳, q찳, q찳, q찳, q찳);
+Test_N(q찴, q찴, q찴, q찴, q찴);
+Test_N(q찵, q찵, q찵, q찵, q찵);
+Test_N(q찶, q찶, q찶, q찶, q찶);
+Test_N(q찷, q찷, q찷, q찷, q찷);
+Test_N(q참, q참, q참, q참, q참);
+Test_N(q찹, q찹, q찹, q찹, q찹);
+Test_N(q찺, q찺, q찺, q찺, q찺);
+Test_N(q찻, q찻, q찻, q찻, q찻);
+Test_N(q찼, q찼, q찼, q찼, q찼);
+Test_N(q창, q창, q창, q창, q창);
+Test_N(q찾, q찾, q찾, q찾, q찾);
+Test_N(q찿, q찿, q찿, q찿, q찿);
+Test_N(q챀, q챀, q챀, q챀, q챀);
+Test_N(q챁, q챁, q챁, q챁, q챁);
+Test_N(q챂, q챂, q챂, q챂, q챂);
+Test_N(q챃, q챃, q챃, q챃, q챃);
+Test_N(q채, q채, q채, q채, q채);
+Test_N(q책, q책, q책, q책, q책);
+Test_N(q챆, q챆, q챆, q챆, q챆);
+Test_N(q챇, q챇, q챇, q챇, q챇);
+Test_N(q챈, q챈, q챈, q챈, q챈);
+Test_N(q챉, q챉, q챉, q챉, q챉);
+Test_N(q챊, q챊, q챊, q챊, q챊);
+Test_N(q챋, q챋, q챋, q챋, q챋);
+Test_N(q챌, q챌, q챌, q챌, q챌);
+Test_N(q챍, q챍, q챍, q챍, q챍);
+Test_N(q챎, q챎, q챎, q챎, q챎);
+Test_N(q챏, q챏, q챏, q챏, q챏);
+Test_N(q챐, q챐, q챐, q챐, q챐);
+Test_N(q챑, q챑, q챑, q챑, q챑);
+Test_N(q챒, q챒, q챒, q챒, q챒);
+Test_N(q챓, q챓, q챓, q챓, q챓);
+Test_N(q챔, q챔, q챔, q챔, q챔);
+Test_N(q챕, q챕, q챕, q챕, q챕);
+Test_N(q챖, q챖, q챖, q챖, q챖);
+Test_N(q챗, q챗, q챗, q챗, q챗);
+Test_N(q챘, q챘, q챘, q챘, q챘);
+Test_N(q챙, q챙, q챙, q챙, q챙);
+Test_N(q챚, q챚, q챚, q챚, q챚);
+Test_N(q챛, q챛, q챛, q챛, q챛);
+Test_N(q챜, q챜, q챜, q챜, q챜);
+Test_N(q챝, q챝, q챝, q챝, q챝);
+Test_N(q챞, q챞, q챞, q챞, q챞);
+Test_N(q챟, q챟, q챟, q챟, q챟);
+Test_N(q챠, q챠, q챠, q챠, q챠);
+Test_N(q챡, q챡, q챡, q챡, q챡);
+Test_N(q챢, q챢, q챢, q챢, q챢);
+Test_N(q챣, q챣, q챣, q챣, q챣);
+Test_N(q챤, q챤, q챤, q챤, q챤);
+Test_N(q챥, q챥, q챥, q챥, q챥);
+Test_N(q챦, q챦, q챦, q챦, q챦);
+Test_N(q챧, q챧, q챧, q챧, q챧);
+Test_N(q챨, q챨, q챨, q챨, q챨);
+Test_N(q챩, q챩, q챩, q챩, q챩);
+Test_N(q챪, q챪, q챪, q챪, q챪);
+Test_N(q챫, q챫, q챫, q챫, q챫);
+Test_N(q챬, q챬, q챬, q챬, q챬);
+Test_N(q챭, q챭, q챭, q챭, q챭);
+Test_N(q챮, q챮, q챮, q챮, q챮);
+Test_N(q챯, q챯, q챯, q챯, q챯);
+Test_N(q챰, q챰, q챰, q챰, q챰);
+Test_N(q챱, q챱, q챱, q챱, q챱);
+Test_N(q챲, q챲, q챲, q챲, q챲);
+Test_N(q챳, q챳, q챳, q챳, q챳);
+Test_N(q챴, q챴, q챴, q챴, q챴);
+Test_N(q챵, q챵, q챵, q챵, q챵);
+Test_N(q챶, q챶, q챶, q챶, q챶);
+Test_N(q챷, q챷, q챷, q챷, q챷);
+Test_N(q챸, q챸, q챸, q챸, q챸);
+Test_N(q챹, q챹, q챹, q챹, q챹);
+Test_N(q챺, q챺, q챺, q챺, q챺);
+Test_N(q챻, q챻, q챻, q챻, q챻);
+Test_N(q챼, q챼, q챼, q챼, q챼);
+Test_N(q챽, q챽, q챽, q챽, q챽);
+Test_N(q챾, q챾, q챾, q챾, q챾);
+Test_N(q챿, q챿, q챿, q챿, q챿);
+Test_N(q첀, q첀, q첀, q첀, q첀);
+Test_N(q첁, q첁, q첁, q첁, q첁);
+Test_N(q첂, q첂, q첂, q첂, q첂);
+Test_N(q첃, q첃, q첃, q첃, q첃);
+Test_N(q첄, q첄, q첄, q첄, q첄);
+Test_N(q첅, q첅, q첅, q첅, q첅);
+Test_N(q첆, q첆, q첆, q첆, q첆);
+Test_N(q첇, q첇, q첇, q첇, q첇);
+Test_N(q첈, q첈, q첈, q첈, q첈);
+Test_N(q첉, q첉, q첉, q첉, q첉);
+Test_N(q첊, q첊, q첊, q첊, q첊);
+Test_N(q첋, q첋, q첋, q첋, q첋);
+Test_N(q첌, q첌, q첌, q첌, q첌);
+Test_N(q첍, q첍, q첍, q첍, q첍);
+Test_N(q첎, q첎, q첎, q첎, q첎);
+Test_N(q첏, q첏, q첏, q첏, q첏);
+Test_N(q첐, q첐, q첐, q첐, q첐);
+Test_N(q첑, q첑, q첑, q첑, q첑);
+Test_N(q첒, q첒, q첒, q첒, q첒);
+Test_N(q첓, q첓, q첓, q첓, q첓);
+Test_N(q첔, q첔, q첔, q첔, q첔);
+Test_N(q첕, q첕, q첕, q첕, q첕);
+Test_N(q첖, q첖, q첖, q첖, q첖);
+Test_N(q첗, q첗, q첗, q첗, q첗);
+Test_N(q처, q처, q처, q처, q처);
+Test_N(q척, q척, q척, q척, q척);
+Test_N(q첚, q첚, q첚, q첚, q첚);
+Test_N(q첛, q첛, q첛, q첛, q첛);
+Test_N(q천, q천, q천, q천, q천);
+Test_N(q첝, q첝, q첝, q첝, q첝);
+Test_N(q첞, q첞, q첞, q첞, q첞);
+Test_N(q첟, q첟, q첟, q첟, q첟);
+Test_N(q철, q철, q철, q철, q철);
+Test_N(q첡, q첡, q첡, q첡, q첡);
+Test_N(q첢, q첢, q첢, q첢, q첢);
+Test_N(q첣, q첣, q첣, q첣, q첣);
+Test_N(q첤, q첤, q첤, q첤, q첤);
+Test_N(q첥, q첥, q첥, q첥, q첥);
+Test_N(q첦, q첦, q첦, q첦, q첦);
+Test_N(q첧, q첧, q첧, q첧, q첧);
+Test_N(q첨, q첨, q첨, q첨, q첨);
+Test_N(q첩, q첩, q첩, q첩, q첩);
+Test_N(q첪, q첪, q첪, q첪, q첪);
+Test_N(q첫, q첫, q첫, q첫, q첫);
+Test_N(q첬, q첬, q첬, q첬, q첬);
+Test_N(q청, q청, q청, q청, q청);
+Test_N(q첮, q첮, q첮, q첮, q첮);
+Test_N(q첯, q첯, q첯, q첯, q첯);
+Test_N(q첰, q첰, q첰, q첰, q첰);
+Test_N(q첱, q첱, q첱, q첱, q첱);
+Test_N(q첲, q첲, q첲, q첲, q첲);
+Test_N(q첳, q첳, q첳, q첳, q첳);
+Test_N(q체, q체, q체, q체, q체);
+Test_N(q첵, q첵, q첵, q첵, q첵);
+Test_N(q첶, q첶, q첶, q첶, q첶);
+Test_N(q첷, q첷, q첷, q첷, q첷);
+Test_N(q첸, q첸, q첸, q첸, q첸);
+Test_N(q첹, q첹, q첹, q첹, q첹);
+Test_N(q첺, q첺, q첺, q첺, q첺);
+Test_N(q첻, q첻, q첻, q첻, q첻);
+Test_N(q첼, q첼, q첼, q첼, q첼);
+Test_N(q첽, q첽, q첽, q첽, q첽);
+Test_N(q첾, q첾, q첾, q첾, q첾);
+Test_N(q첿, q첿, q첿, q첿, q첿);
+Test_N(q쳀, q쳀, q쳀, q쳀, q쳀);
+Test_N(q쳁, q쳁, q쳁, q쳁, q쳁);
+Test_N(q쳂, q쳂, q쳂, q쳂, q쳂);
+Test_N(q쳃, q쳃, q쳃, q쳃, q쳃);
+Test_N(q쳄, q쳄, q쳄, q쳄, q쳄);
+Test_N(q쳅, q쳅, q쳅, q쳅, q쳅);
+Test_N(q쳆, q쳆, q쳆, q쳆, q쳆);
+Test_N(q쳇, q쳇, q쳇, q쳇, q쳇);
+Test_N(q쳈, q쳈, q쳈, q쳈, q쳈);
+Test_N(q쳉, q쳉, q쳉, q쳉, q쳉);
+Test_N(q쳊, q쳊, q쳊, q쳊, q쳊);
+Test_N(q쳋, q쳋, q쳋, q쳋, q쳋);
+Test_N(q쳌, q쳌, q쳌, q쳌, q쳌);
+Test_N(q쳍, q쳍, q쳍, q쳍, q쳍);
+Test_N(q쳎, q쳎, q쳎, q쳎, q쳎);
+Test_N(q쳏, q쳏, q쳏, q쳏, q쳏);
+Test_N(q쳐, q쳐, q쳐, q쳐, q쳐);
+Test_N(q쳑, q쳑, q쳑, q쳑, q쳑);
+Test_N(q쳒, q쳒, q쳒, q쳒, q쳒);
+Test_N(q쳓, q쳓, q쳓, q쳓, q쳓);
+Test_N(q쳔, q쳔, q쳔, q쳔, q쳔);
+Test_N(q쳕, q쳕, q쳕, q쳕, q쳕);
+Test_N(q쳖, q쳖, q쳖, q쳖, q쳖);
+Test_N(q쳗, q쳗, q쳗, q쳗, q쳗);
+Test_N(q쳘, q쳘, q쳘, q쳘, q쳘);
+Test_N(q쳙, q쳙, q쳙, q쳙, q쳙);
+Test_N(q쳚, q쳚, q쳚, q쳚, q쳚);
+Test_N(q쳛, q쳛, q쳛, q쳛, q쳛);
+Test_N(q쳜, q쳜, q쳜, q쳜, q쳜);
+Test_N(q쳝, q쳝, q쳝, q쳝, q쳝);
+Test_N(q쳞, q쳞, q쳞, q쳞, q쳞);
+Test_N(q쳟, q쳟, q쳟, q쳟, q쳟);
+Test_N(q쳠, q쳠, q쳠, q쳠, q쳠);
+Test_N(q쳡, q쳡, q쳡, q쳡, q쳡);
+Test_N(q쳢, q쳢, q쳢, q쳢, q쳢);
+Test_N(q쳣, q쳣, q쳣, q쳣, q쳣);
+Test_N(q쳤, q쳤, q쳤, q쳤, q쳤);
+Test_N(q쳥, q쳥, q쳥, q쳥, q쳥);
+Test_N(q쳦, q쳦, q쳦, q쳦, q쳦);
+Test_N(q쳧, q쳧, q쳧, q쳧, q쳧);
+Test_N(q쳨, q쳨, q쳨, q쳨, q쳨);
+Test_N(q쳩, q쳩, q쳩, q쳩, q쳩);
+Test_N(q쳪, q쳪, q쳪, q쳪, q쳪);
+Test_N(q쳫, q쳫, q쳫, q쳫, q쳫);
+Test_N(q쳬, q쳬, q쳬, q쳬, q쳬);
+Test_N(q쳭, q쳭, q쳭, q쳭, q쳭);
+Test_N(q쳮, q쳮, q쳮, q쳮, q쳮);
+Test_N(q쳯, q쳯, q쳯, q쳯, q쳯);
+Test_N(q쳰, q쳰, q쳰, q쳰, q쳰);
+Test_N(q쳱, q쳱, q쳱, q쳱, q쳱);
+Test_N(q쳲, q쳲, q쳲, q쳲, q쳲);
+Test_N(q쳳, q쳳, q쳳, q쳳, q쳳);
+Test_N(q쳴, q쳴, q쳴, q쳴, q쳴);
+Test_N(q쳵, q쳵, q쳵, q쳵, q쳵);
+Test_N(q쳶, q쳶, q쳶, q쳶, q쳶);
+Test_N(q쳷, q쳷, q쳷, q쳷, q쳷);
+Test_N(q쳸, q쳸, q쳸, q쳸, q쳸);
+Test_N(q쳹, q쳹, q쳹, q쳹, q쳹);
+Test_N(q쳺, q쳺, q쳺, q쳺, q쳺);
+Test_N(q쳻, q쳻, q쳻, q쳻, q쳻);
+Test_N(q쳼, q쳼, q쳼, q쳼, q쳼);
+Test_N(q쳽, q쳽, q쳽, q쳽, q쳽);
+Test_N(q쳾, q쳾, q쳾, q쳾, q쳾);
+Test_N(q쳿, q쳿, q쳿, q쳿, q쳿);
+Test_N(q촀, q촀, q촀, q촀, q촀);
+Test_N(q촁, q촁, q촁, q촁, q촁);
+Test_N(q촂, q촂, q촂, q촂, q촂);
+Test_N(q촃, q촃, q촃, q촃, q촃);
+Test_N(q촄, q촄, q촄, q촄, q촄);
+Test_N(q촅, q촅, q촅, q촅, q촅);
+Test_N(q촆, q촆, q촆, q촆, q촆);
+Test_N(q촇, q촇, q촇, q촇, q촇);
+Test_N(q초, q초, q초, q초, q초);
+Test_N(q촉, q촉, q촉, q촉, q촉);
+Test_N(q촊, q촊, q촊, q촊, q촊);
+Test_N(q촋, q촋, q촋, q촋, q촋);
+Test_N(q촌, q촌, q촌, q촌, q촌);
+Test_N(q촍, q촍, q촍, q촍, q촍);
+Test_N(q촎, q촎, q촎, q촎, q촎);
+Test_N(q촏, q촏, q촏, q촏, q촏);
+Test_N(q촐, q촐, q촐, q촐, q촐);
+Test_N(q촑, q촑, q촑, q촑, q촑);
+Test_N(q촒, q촒, q촒, q촒, q촒);
+Test_N(q촓, q촓, q촓, q촓, q촓);
+Test_N(q촔, q촔, q촔, q촔, q촔);
+Test_N(q촕, q촕, q촕, q촕, q촕);
+Test_N(q촖, q촖, q촖, q촖, q촖);
+Test_N(q촗, q촗, q촗, q촗, q촗);
+Test_N(q촘, q촘, q촘, q촘, q촘);
+Test_N(q촙, q촙, q촙, q촙, q촙);
+Test_N(q촚, q촚, q촚, q촚, q촚);
+Test_N(q촛, q촛, q촛, q촛, q촛);
+Test_N(q촜, q촜, q촜, q촜, q촜);
+Test_N(q총, q총, q총, q총, q총);
+Test_N(q촞, q촞, q촞, q촞, q촞);
+Test_N(q촟, q촟, q촟, q촟, q촟);
+Test_N(q촠, q촠, q촠, q촠, q촠);
+Test_N(q촡, q촡, q촡, q촡, q촡);
+Test_N(q촢, q촢, q촢, q촢, q촢);
+Test_N(q촣, q촣, q촣, q촣, q촣);
+Test_N(q촤, q촤, q촤, q촤, q촤);
+Test_N(q촥, q촥, q촥, q촥, q촥);
+Test_N(q촦, q촦, q촦, q촦, q촦);
+Test_N(q촧, q촧, q촧, q촧, q촧);
+Test_N(q촨, q촨, q촨, q촨, q촨);
+Test_N(q촩, q촩, q촩, q촩, q촩);
+Test_N(q촪, q촪, q촪, q촪, q촪);
+Test_N(q촫, q촫, q촫, q촫, q촫);
+Test_N(q촬, q촬, q촬, q촬, q촬);
+Test_N(q촭, q촭, q촭, q촭, q촭);
+Test_N(q촮, q촮, q촮, q촮, q촮);
+Test_N(q촯, q촯, q촯, q촯, q촯);
+Test_N(q촰, q촰, q촰, q촰, q촰);
+Test_N(q촱, q촱, q촱, q촱, q촱);
+Test_N(q촲, q촲, q촲, q촲, q촲);
+Test_N(q촳, q촳, q촳, q촳, q촳);
+Test_N(q촴, q촴, q촴, q촴, q촴);
+Test_N(q촵, q촵, q촵, q촵, q촵);
+Test_N(q촶, q촶, q촶, q촶, q촶);
+Test_N(q촷, q촷, q촷, q촷, q촷);
+Test_N(q촸, q촸, q촸, q촸, q촸);
+Test_N(q촹, q촹, q촹, q촹, q촹);
+Test_N(q촺, q촺, q촺, q촺, q촺);
+Test_N(q촻, q촻, q촻, q촻, q촻);
+Test_N(q촼, q촼, q촼, q촼, q촼);
+Test_N(q촽, q촽, q촽, q촽, q촽);
+Test_N(q촾, q촾, q촾, q촾, q촾);
+Test_N(q촿, q촿, q촿, q촿, q촿);
+Test_N(q쵀, q쵀, q쵀, q쵀, q쵀);
+Test_N(q쵁, q쵁, q쵁, q쵁, q쵁);
+Test_N(q쵂, q쵂, q쵂, q쵂, q쵂);
+Test_N(q쵃, q쵃, q쵃, q쵃, q쵃);
+Test_N(q쵄, q쵄, q쵄, q쵄, q쵄);
+Test_N(q쵅, q쵅, q쵅, q쵅, q쵅);
+Test_N(q쵆, q쵆, q쵆, q쵆, q쵆);
+Test_N(q쵇, q쵇, q쵇, q쵇, q쵇);
+Test_N(q쵈, q쵈, q쵈, q쵈, q쵈);
+Test_N(q쵉, q쵉, q쵉, q쵉, q쵉);
+Test_N(q쵊, q쵊, q쵊, q쵊, q쵊);
+Test_N(q쵋, q쵋, q쵋, q쵋, q쵋);
+Test_N(q쵌, q쵌, q쵌, q쵌, q쵌);
+Test_N(q쵍, q쵍, q쵍, q쵍, q쵍);
+Test_N(q쵎, q쵎, q쵎, q쵎, q쵎);
+Test_N(q쵏, q쵏, q쵏, q쵏, q쵏);
+Test_N(q쵐, q쵐, q쵐, q쵐, q쵐);
+Test_N(q쵑, q쵑, q쵑, q쵑, q쵑);
+Test_N(q쵒, q쵒, q쵒, q쵒, q쵒);
+Test_N(q쵓, q쵓, q쵓, q쵓, q쵓);
+Test_N(q쵔, q쵔, q쵔, q쵔, q쵔);
+Test_N(q쵕, q쵕, q쵕, q쵕, q쵕);
+Test_N(q쵖, q쵖, q쵖, q쵖, q쵖);
+Test_N(q쵗, q쵗, q쵗, q쵗, q쵗);
+Test_N(q쵘, q쵘, q쵘, q쵘, q쵘);
+Test_N(q쵙, q쵙, q쵙, q쵙, q쵙);
+Test_N(q쵚, q쵚, q쵚, q쵚, q쵚);
+Test_N(q쵛, q쵛, q쵛, q쵛, q쵛);
+Test_N(q최, q최, q최, q최, q최);
+Test_N(q쵝, q쵝, q쵝, q쵝, q쵝);
+Test_N(q쵞, q쵞, q쵞, q쵞, q쵞);
+Test_N(q쵟, q쵟, q쵟, q쵟, q쵟);
+Test_N(q쵠, q쵠, q쵠, q쵠, q쵠);
+Test_N(q쵡, q쵡, q쵡, q쵡, q쵡);
+Test_N(q쵢, q쵢, q쵢, q쵢, q쵢);
+Test_N(q쵣, q쵣, q쵣, q쵣, q쵣);
+Test_N(q쵤, q쵤, q쵤, q쵤, q쵤);
+Test_N(q쵥, q쵥, q쵥, q쵥, q쵥);
+Test_N(q쵦, q쵦, q쵦, q쵦, q쵦);
+Test_N(q쵧, q쵧, q쵧, q쵧, q쵧);
+Test_N(q쵨, q쵨, q쵨, q쵨, q쵨);
+Test_N(q쵩, q쵩, q쵩, q쵩, q쵩);
+Test_N(q쵪, q쵪, q쵪, q쵪, q쵪);
+Test_N(q쵫, q쵫, q쵫, q쵫, q쵫);
+Test_N(q쵬, q쵬, q쵬, q쵬, q쵬);
+Test_N(q쵭, q쵭, q쵭, q쵭, q쵭);
+Test_N(q쵮, q쵮, q쵮, q쵮, q쵮);
+Test_N(q쵯, q쵯, q쵯, q쵯, q쵯);
+Test_N(q쵰, q쵰, q쵰, q쵰, q쵰);
+Test_N(q쵱, q쵱, q쵱, q쵱, q쵱);
+Test_N(q쵲, q쵲, q쵲, q쵲, q쵲);
+Test_N(q쵳, q쵳, q쵳, q쵳, q쵳);
+Test_N(q쵴, q쵴, q쵴, q쵴, q쵴);
+Test_N(q쵵, q쵵, q쵵, q쵵, q쵵);
+Test_N(q쵶, q쵶, q쵶, q쵶, q쵶);
+Test_N(q쵷, q쵷, q쵷, q쵷, q쵷);
+Test_N(q쵸, q쵸, q쵸, q쵸, q쵸);
+Test_N(q쵹, q쵹, q쵹, q쵹, q쵹);
+Test_N(q쵺, q쵺, q쵺, q쵺, q쵺);
+Test_N(q쵻, q쵻, q쵻, q쵻, q쵻);
+Test_N(q쵼, q쵼, q쵼, q쵼, q쵼);
+Test_N(q쵽, q쵽, q쵽, q쵽, q쵽);
+Test_N(q쵾, q쵾, q쵾, q쵾, q쵾);
+Test_N(q쵿, q쵿, q쵿, q쵿, q쵿);
+Test_N(q춀, q춀, q춀, q춀, q춀);
+Test_N(q춁, q춁, q춁, q춁, q춁);
+Test_N(q춂, q춂, q춂, q춂, q춂);
+Test_N(q춃, q춃, q춃, q춃, q춃);
+Test_N(q춄, q춄, q춄, q춄, q춄);
+Test_N(q춅, q춅, q춅, q춅, q춅);
+Test_N(q춆, q춆, q춆, q춆, q춆);
+Test_N(q춇, q춇, q춇, q춇, q춇);
+Test_N(q춈, q춈, q춈, q춈, q춈);
+Test_N(q춉, q춉, q춉, q춉, q춉);
+Test_N(q춊, q춊, q춊, q춊, q춊);
+Test_N(q춋, q춋, q춋, q춋, q춋);
+Test_N(q춌, q춌, q춌, q춌, q춌);
+Test_N(q춍, q춍, q춍, q춍, q춍);
+Test_N(q춎, q춎, q춎, q춎, q춎);
+Test_N(q춏, q춏, q춏, q춏, q춏);
+Test_N(q춐, q춐, q춐, q춐, q춐);
+Test_N(q춑, q춑, q춑, q춑, q춑);
+Test_N(q춒, q춒, q춒, q춒, q춒);
+Test_N(q춓, q춓, q춓, q춓, q춓);
+Test_N(q추, q추, q추, q추, q추);
+Test_N(q축, q축, q축, q축, q축);
+Test_N(q춖, q춖, q춖, q춖, q춖);
+Test_N(q춗, q춗, q춗, q춗, q춗);
+Test_N(q춘, q춘, q춘, q춘, q춘);
+Test_N(q춙, q춙, q춙, q춙, q춙);
+Test_N(q춚, q춚, q춚, q춚, q춚);
+Test_N(q춛, q춛, q춛, q춛, q춛);
+Test_N(q출, q출, q출, q출, q출);
+Test_N(q춝, q춝, q춝, q춝, q춝);
+Test_N(q춞, q춞, q춞, q춞, q춞);
+Test_N(q춟, q춟, q춟, q춟, q춟);
+Test_N(q춠, q춠, q춠, q춠, q춠);
+Test_N(q춡, q춡, q춡, q춡, q춡);
+Test_N(q춢, q춢, q춢, q춢, q춢);
+Test_N(q춣, q춣, q춣, q춣, q춣);
+Test_N(q춤, q춤, q춤, q춤, q춤);
+Test_N(q춥, q춥, q춥, q춥, q춥);
+Test_N(q춦, q춦, q춦, q춦, q춦);
+Test_N(q춧, q춧, q춧, q춧, q춧);
+Test_N(q춨, q춨, q춨, q춨, q춨);
+Test_N(q충, q충, q충, q충, q충);
+Test_N(q춪, q춪, q춪, q춪, q춪);
+Test_N(q춫, q춫, q춫, q춫, q춫);
+Test_N(q춬, q춬, q춬, q춬, q춬);
+Test_N(q춭, q춭, q춭, q춭, q춭);
+Test_N(q춮, q춮, q춮, q춮, q춮);
+Test_N(q춯, q춯, q춯, q춯, q춯);
+Test_N(q춰, q춰, q춰, q춰, q춰);
+Test_N(q춱, q춱, q춱, q춱, q춱);
+Test_N(q춲, q춲, q춲, q춲, q춲);
+Test_N(q춳, q춳, q춳, q춳, q춳);
+Test_N(q춴, q춴, q춴, q춴, q춴);
+Test_N(q춵, q춵, q춵, q춵, q춵);
+Test_N(q춶, q춶, q춶, q춶, q춶);
+Test_N(q춷, q춷, q춷, q춷, q춷);
+Test_N(q춸, q춸, q춸, q춸, q춸);
+Test_N(q춹, q춹, q춹, q춹, q춹);
+Test_N(q춺, q춺, q춺, q춺, q춺);
+Test_N(q춻, q춻, q춻, q춻, q춻);
+Test_N(q춼, q춼, q춼, q춼, q춼);
+Test_N(q춽, q춽, q춽, q춽, q춽);
+Test_N(q춾, q춾, q춾, q춾, q춾);
+Test_N(q춿, q춿, q춿, q춿, q춿);
+Test_N(q췀, q췀, q췀, q췀, q췀);
+Test_N(q췁, q췁, q췁, q췁, q췁);
+Test_N(q췂, q췂, q췂, q췂, q췂);
+Test_N(q췃, q췃, q췃, q췃, q췃);
+Test_N(q췄, q췄, q췄, q췄, q췄);
+Test_N(q췅, q췅, q췅, q췅, q췅);
+Test_N(q췆, q췆, q췆, q췆, q췆);
+Test_N(q췇, q췇, q췇, q췇, q췇);
+Test_N(q췈, q췈, q췈, q췈, q췈);
+Test_N(q췉, q췉, q췉, q췉, q췉);
+Test_N(q췊, q췊, q췊, q췊, q췊);
+Test_N(q췋, q췋, q췋, q췋, q췋);
+Test_N(q췌, q췌, q췌, q췌, q췌);
+Test_N(q췍, q췍, q췍, q췍, q췍);
+Test_N(q췎, q췎, q췎, q췎, q췎);
+Test_N(q췏, q췏, q췏, q췏, q췏);
+Test_N(q췐, q췐, q췐, q췐, q췐);
+Test_N(q췑, q췑, q췑, q췑, q췑);
+Test_N(q췒, q췒, q췒, q췒, q췒);
+Test_N(q췓, q췓, q췓, q췓, q췓);
+Test_N(q췔, q췔, q췔, q췔, q췔);
+Test_N(q췕, q췕, q췕, q췕, q췕);
+Test_N(q췖, q췖, q췖, q췖, q췖);
+Test_N(q췗, q췗, q췗, q췗, q췗);
+Test_N(q췘, q췘, q췘, q췘, q췘);
+Test_N(q췙, q췙, q췙, q췙, q췙);
+Test_N(q췚, q췚, q췚, q췚, q췚);
+Test_N(q췛, q췛, q췛, q췛, q췛);
+Test_N(q췜, q췜, q췜, q췜, q췜);
+Test_N(q췝, q췝, q췝, q췝, q췝);
+Test_N(q췞, q췞, q췞, q췞, q췞);
+Test_N(q췟, q췟, q췟, q췟, q췟);
+Test_N(q췠, q췠, q췠, q췠, q췠);
+Test_N(q췡, q췡, q췡, q췡, q췡);
+Test_N(q췢, q췢, q췢, q췢, q췢);
+Test_N(q췣, q췣, q췣, q췣, q췣);
+Test_N(q췤, q췤, q췤, q췤, q췤);
+Test_N(q췥, q췥, q췥, q췥, q췥);
+Test_N(q췦, q췦, q췦, q췦, q췦);
+Test_N(q췧, q췧, q췧, q췧, q췧);
+Test_N(q취, q취, q취, q취, q취);
+Test_N(q췩, q췩, q췩, q췩, q췩);
+Test_N(q췪, q췪, q췪, q췪, q췪);
+Test_N(q췫, q췫, q췫, q췫, q췫);
+Test_N(q췬, q췬, q췬, q췬, q췬);
+Test_N(q췭, q췭, q췭, q췭, q췭);
+Test_N(q췮, q췮, q췮, q췮, q췮);
+Test_N(q췯, q췯, q췯, q췯, q췯);
+Test_N(q췰, q췰, q췰, q췰, q췰);
+Test_N(q췱, q췱, q췱, q췱, q췱);
+Test_N(q췲, q췲, q췲, q췲, q췲);
+Test_N(q췳, q췳, q췳, q췳, q췳);
+Test_N(q췴, q췴, q췴, q췴, q췴);
+Test_N(q췵, q췵, q췵, q췵, q췵);
+Test_N(q췶, q췶, q췶, q췶, q췶);
+Test_N(q췷, q췷, q췷, q췷, q췷);
+Test_N(q췸, q췸, q췸, q췸, q췸);
+Test_N(q췹, q췹, q췹, q췹, q췹);
+Test_N(q췺, q췺, q췺, q췺, q췺);
+Test_N(q췻, q췻, q췻, q췻, q췻);
+Test_N(q췼, q췼, q췼, q췼, q췼);
+Test_N(q췽, q췽, q췽, q췽, q췽);
+Test_N(q췾, q췾, q췾, q췾, q췾);
+Test_N(q췿, q췿, q췿, q췿, q췿);
+Test_N(q츀, q츀, q츀, q츀, q츀);
+Test_N(q츁, q츁, q츁, q츁, q츁);
+Test_N(q츂, q츂, q츂, q츂, q츂);
+Test_N(q츃, q츃, q츃, q츃, q츃);
+Test_N(q츄, q츄, q츄, q츄, q츄);
+Test_N(q츅, q츅, q츅, q츅, q츅);
+Test_N(q츆, q츆, q츆, q츆, q츆);
+Test_N(q츇, q츇, q츇, q츇, q츇);
+Test_N(q츈, q츈, q츈, q츈, q츈);
+Test_N(q츉, q츉, q츉, q츉, q츉);
+Test_N(q츊, q츊, q츊, q츊, q츊);
+Test_N(q츋, q츋, q츋, q츋, q츋);
+Test_N(q츌, q츌, q츌, q츌, q츌);
+Test_N(q츍, q츍, q츍, q츍, q츍);
+Test_N(q츎, q츎, q츎, q츎, q츎);
+Test_N(q츏, q츏, q츏, q츏, q츏);
+Test_N(q츐, q츐, q츐, q츐, q츐);
+Test_N(q츑, q츑, q츑, q츑, q츑);
+Test_N(q츒, q츒, q츒, q츒, q츒);
+Test_N(q츓, q츓, q츓, q츓, q츓);
+Test_N(q츔, q츔, q츔, q츔, q츔);
+Test_N(q츕, q츕, q츕, q츕, q츕);
+Test_N(q츖, q츖, q츖, q츖, q츖);
+Test_N(q츗, q츗, q츗, q츗, q츗);
+Test_N(q츘, q츘, q츘, q츘, q츘);
+Test_N(q츙, q츙, q츙, q츙, q츙);
+Test_N(q츚, q츚, q츚, q츚, q츚);
+Test_N(q츛, q츛, q츛, q츛, q츛);
+Test_N(q츜, q츜, q츜, q츜, q츜);
+Test_N(q츝, q츝, q츝, q츝, q츝);
+Test_N(q츞, q츞, q츞, q츞, q츞);
+Test_N(q츟, q츟, q츟, q츟, q츟);
+Test_N(q츠, q츠, q츠, q츠, q츠);
+Test_N(q측, q측, q측, q측, q측);
+Test_N(q츢, q츢, q츢, q츢, q츢);
+Test_N(q츣, q츣, q츣, q츣, q츣);
+Test_N(q츤, q츤, q츤, q츤, q츤);
+Test_N(q츥, q츥, q츥, q츥, q츥);
+Test_N(q츦, q츦, q츦, q츦, q츦);
+Test_N(q츧, q츧, q츧, q츧, q츧);
+Test_N(q츨, q츨, q츨, q츨, q츨);
+Test_N(q츩, q츩, q츩, q츩, q츩);
+Test_N(q츪, q츪, q츪, q츪, q츪);
+Test_N(q츫, q츫, q츫, q츫, q츫);
+Test_N(q츬, q츬, q츬, q츬, q츬);
+Test_N(q츭, q츭, q츭, q츭, q츭);
+Test_N(q츮, q츮, q츮, q츮, q츮);
+Test_N(q츯, q츯, q츯, q츯, q츯);
+Test_N(q츰, q츰, q츰, q츰, q츰);
+Test_N(q츱, q츱, q츱, q츱, q츱);
+Test_N(q츲, q츲, q츲, q츲, q츲);
+Test_N(q츳, q츳, q츳, q츳, q츳);
+Test_N(q츴, q츴, q츴, q츴, q츴);
+Test_N(q층, q층, q층, q층, q층);
+Test_N(q츶, q츶, q츶, q츶, q츶);
+Test_N(q츷, q츷, q츷, q츷, q츷);
+Test_N(q츸, q츸, q츸, q츸, q츸);
+Test_N(q츹, q츹, q츹, q츹, q츹);
+Test_N(q츺, q츺, q츺, q츺, q츺);
+Test_N(q츻, q츻, q츻, q츻, q츻);
+Test_N(q츼, q츼, q츼, q츼, q츼);
+Test_N(q츽, q츽, q츽, q츽, q츽);
+Test_N(q츾, q츾, q츾, q츾, q츾);
+Test_N(q츿, q츿, q츿, q츿, q츿);
+Test_N(q칀, q칀, q칀, q칀, q칀);
+Test_N(q칁, q칁, q칁, q칁, q칁);
+Test_N(q칂, q칂, q칂, q칂, q칂);
+Test_N(q칃, q칃, q칃, q칃, q칃);
+Test_N(q칄, q칄, q칄, q칄, q칄);
+Test_N(q칅, q칅, q칅, q칅, q칅);
+Test_N(q칆, q칆, q칆, q칆, q칆);
+Test_N(q칇, q칇, q칇, q칇, q칇);
+Test_N(q칈, q칈, q칈, q칈, q칈);
+Test_N(q칉, q칉, q칉, q칉, q칉);
+Test_N(q칊, q칊, q칊, q칊, q칊);
+Test_N(q칋, q칋, q칋, q칋, q칋);
+Test_N(q칌, q칌, q칌, q칌, q칌);
+Test_N(q칍, q칍, q칍, q칍, q칍);
+Test_N(q칎, q칎, q칎, q칎, q칎);
+Test_N(q칏, q칏, q칏, q칏, q칏);
+Test_N(q칐, q칐, q칐, q칐, q칐);
+Test_N(q칑, q칑, q칑, q칑, q칑);
+Test_N(q칒, q칒, q칒, q칒, q칒);
+Test_N(q칓, q칓, q칓, q칓, q칓);
+Test_N(q칔, q칔, q칔, q칔, q칔);
+Test_N(q칕, q칕, q칕, q칕, q칕);
+Test_N(q칖, q칖, q칖, q칖, q칖);
+Test_N(q칗, q칗, q칗, q칗, q칗);
+Test_N(q치, q치, q치, q치, q치);
+Test_N(q칙, q칙, q칙, q칙, q칙);
+Test_N(q칚, q칚, q칚, q칚, q칚);
+Test_N(q칛, q칛, q칛, q칛, q칛);
+Test_N(q친, q친, q친, q친, q친);
+Test_N(q칝, q칝, q칝, q칝, q칝);
+Test_N(q칞, q칞, q칞, q칞, q칞);
+Test_N(q칟, q칟, q칟, q칟, q칟);
+Test_N(q칠, q칠, q칠, q칠, q칠);
+Test_N(q칡, q칡, q칡, q칡, q칡);
+Test_N(q칢, q칢, q칢, q칢, q칢);
+Test_N(q칣, q칣, q칣, q칣, q칣);
+Test_N(q칤, q칤, q칤, q칤, q칤);
+Test_N(q칥, q칥, q칥, q칥, q칥);
+Test_N(q칦, q칦, q칦, q칦, q칦);
+Test_N(q칧, q칧, q칧, q칧, q칧);
+Test_N(q침, q침, q침, q침, q침);
+Test_N(q칩, q칩, q칩, q칩, q칩);
+Test_N(q칪, q칪, q칪, q칪, q칪);
+Test_N(q칫, q칫, q칫, q칫, q칫);
+Test_N(q칬, q칬, q칬, q칬, q칬);
+Test_N(q칭, q칭, q칭, q칭, q칭);
+Test_N(q칮, q칮, q칮, q칮, q칮);
+Test_N(q칯, q칯, q칯, q칯, q칯);
+Test_N(q칰, q칰, q칰, q칰, q칰);
+Test_N(q칱, q칱, q칱, q칱, q칱);
+Test_N(q칲, q칲, q칲, q칲, q칲);
+Test_N(q칳, q칳, q칳, q칳, q칳);
+Test_N(q카, q카, q카, q카, q카);
+Test_N(q칵, q칵, q칵, q칵, q칵);
+Test_N(q칶, q칶, q칶, q칶, q칶);
+Test_N(q칷, q칷, q칷, q칷, q칷);
+Test_N(q칸, q칸, q칸, q칸, q칸);
+Test_N(q칹, q칹, q칹, q칹, q칹);
+Test_N(q칺, q칺, q칺, q칺, q칺);
+Test_N(q칻, q칻, q칻, q칻, q칻);
+Test_N(q칼, q칼, q칼, q칼, q칼);
+Test_N(q칽, q칽, q칽, q칽, q칽);
+Test_N(q칾, q칾, q칾, q칾, q칾);
+Test_N(q칿, q칿, q칿, q칿, q칿);
+Test_N(q캀, q캀, q캀, q캀, q캀);
+Test_N(q캁, q캁, q캁, q캁, q캁);
+Test_N(q캂, q캂, q캂, q캂, q캂);
+Test_N(q캃, q캃, q캃, q캃, q캃);
+Test_N(q캄, q캄, q캄, q캄, q캄);
+Test_N(q캅, q캅, q캅, q캅, q캅);
+Test_N(q캆, q캆, q캆, q캆, q캆);
+Test_N(q캇, q캇, q캇, q캇, q캇);
+Test_N(q캈, q캈, q캈, q캈, q캈);
+Test_N(q캉, q캉, q캉, q캉, q캉);
+Test_N(q캊, q캊, q캊, q캊, q캊);
+Test_N(q캋, q캋, q캋, q캋, q캋);
+Test_N(q캌, q캌, q캌, q캌, q캌);
+Test_N(q캍, q캍, q캍, q캍, q캍);
+Test_N(q캎, q캎, q캎, q캎, q캎);
+Test_N(q캏, q캏, q캏, q캏, q캏);
+Test_N(q캐, q캐, q캐, q캐, q캐);
+Test_N(q캑, q캑, q캑, q캑, q캑);
+Test_N(q캒, q캒, q캒, q캒, q캒);
+Test_N(q캓, q캓, q캓, q캓, q캓);
+Test_N(q캔, q캔, q캔, q캔, q캔);
+Test_N(q캕, q캕, q캕, q캕, q캕);
+Test_N(q캖, q캖, q캖, q캖, q캖);
+Test_N(q캗, q캗, q캗, q캗, q캗);
+Test_N(q캘, q캘, q캘, q캘, q캘);
+Test_N(q캙, q캙, q캙, q캙, q캙);
+Test_N(q캚, q캚, q캚, q캚, q캚);
+Test_N(q캛, q캛, q캛, q캛, q캛);
+Test_N(q캜, q캜, q캜, q캜, q캜);
+Test_N(q캝, q캝, q캝, q캝, q캝);
+Test_N(q캞, q캞, q캞, q캞, q캞);
+Test_N(q캟, q캟, q캟, q캟, q캟);
+Test_N(q캠, q캠, q캠, q캠, q캠);
+Test_N(q캡, q캡, q캡, q캡, q캡);
+Test_N(q캢, q캢, q캢, q캢, q캢);
+Test_N(q캣, q캣, q캣, q캣, q캣);
+Test_N(q캤, q캤, q캤, q캤, q캤);
+Test_N(q캥, q캥, q캥, q캥, q캥);
+Test_N(q캦, q캦, q캦, q캦, q캦);
+Test_N(q캧, q캧, q캧, q캧, q캧);
+Test_N(q캨, q캨, q캨, q캨, q캨);
+Test_N(q캩, q캩, q캩, q캩, q캩);
+Test_N(q캪, q캪, q캪, q캪, q캪);
+Test_N(q캫, q캫, q캫, q캫, q캫);
+Test_N(q캬, q캬, q캬, q캬, q캬);
+Test_N(q캭, q캭, q캭, q캭, q캭);
+Test_N(q캮, q캮, q캮, q캮, q캮);
+Test_N(q캯, q캯, q캯, q캯, q캯);
+Test_N(q캰, q캰, q캰, q캰, q캰);
+Test_N(q캱, q캱, q캱, q캱, q캱);
+Test_N(q캲, q캲, q캲, q캲, q캲);
+Test_N(q캳, q캳, q캳, q캳, q캳);
+Test_N(q캴, q캴, q캴, q캴, q캴);
+Test_N(q캵, q캵, q캵, q캵, q캵);
+Test_N(q캶, q캶, q캶, q캶, q캶);
+Test_N(q캷, q캷, q캷, q캷, q캷);
+Test_N(q캸, q캸, q캸, q캸, q캸);
+Test_N(q캹, q캹, q캹, q캹, q캹);
+Test_N(q캺, q캺, q캺, q캺, q캺);
+Test_N(q캻, q캻, q캻, q캻, q캻);
+Test_N(q캼, q캼, q캼, q캼, q캼);
+Test_N(q캽, q캽, q캽, q캽, q캽);
+Test_N(q캾, q캾, q캾, q캾, q캾);
+Test_N(q캿, q캿, q캿, q캿, q캿);
+Test_N(q컀, q컀, q컀, q컀, q컀);
+Test_N(q컁, q컁, q컁, q컁, q컁);
+Test_N(q컂, q컂, q컂, q컂, q컂);
+Test_N(q컃, q컃, q컃, q컃, q컃);
+Test_N(q컄, q컄, q컄, q컄, q컄);
+Test_N(q컅, q컅, q컅, q컅, q컅);
+Test_N(q컆, q컆, q컆, q컆, q컆);
+Test_N(q컇, q컇, q컇, q컇, q컇);
+Test_N(q컈, q컈, q컈, q컈, q컈);
+Test_N(q컉, q컉, q컉, q컉, q컉);
+Test_N(q컊, q컊, q컊, q컊, q컊);
+Test_N(q컋, q컋, q컋, q컋, q컋);
+Test_N(q컌, q컌, q컌, q컌, q컌);
+Test_N(q컍, q컍, q컍, q컍, q컍);
+Test_N(q컎, q컎, q컎, q컎, q컎);
+Test_N(q컏, q컏, q컏, q컏, q컏);
+Test_N(q컐, q컐, q컐, q컐, q컐);
+Test_N(q컑, q컑, q컑, q컑, q컑);
+Test_N(q컒, q컒, q컒, q컒, q컒);
+Test_N(q컓, q컓, q컓, q컓, q컓);
+Test_N(q컔, q컔, q컔, q컔, q컔);
+Test_N(q컕, q컕, q컕, q컕, q컕);
+Test_N(q컖, q컖, q컖, q컖, q컖);
+Test_N(q컗, q컗, q컗, q컗, q컗);
+Test_N(q컘, q컘, q컘, q컘, q컘);
+Test_N(q컙, q컙, q컙, q컙, q컙);
+Test_N(q컚, q컚, q컚, q컚, q컚);
+Test_N(q컛, q컛, q컛, q컛, q컛);
+Test_N(q컜, q컜, q컜, q컜, q컜);
+Test_N(q컝, q컝, q컝, q컝, q컝);
+Test_N(q컞, q컞, q컞, q컞, q컞);
+Test_N(q컟, q컟, q컟, q컟, q컟);
+Test_N(q컠, q컠, q컠, q컠, q컠);
+Test_N(q컡, q컡, q컡, q컡, q컡);
+Test_N(q컢, q컢, q컢, q컢, q컢);
+Test_N(q컣, q컣, q컣, q컣, q컣);
+Test_N(q커, q커, q커, q커, q커);
+Test_N(q컥, q컥, q컥, q컥, q컥);
+Test_N(q컦, q컦, q컦, q컦, q컦);
+Test_N(q컧, q컧, q컧, q컧, q컧);
+Test_N(q컨, q컨, q컨, q컨, q컨);
+Test_N(q컩, q컩, q컩, q컩, q컩);
+Test_N(q컪, q컪, q컪, q컪, q컪);
+Test_N(q컫, q컫, q컫, q컫, q컫);
+Test_N(q컬, q컬, q컬, q컬, q컬);
+Test_N(q컭, q컭, q컭, q컭, q컭);
+Test_N(q컮, q컮, q컮, q컮, q컮);
+Test_N(q컯, q컯, q컯, q컯, q컯);
+Test_N(q컰, q컰, q컰, q컰, q컰);
+Test_N(q컱, q컱, q컱, q컱, q컱);
+Test_N(q컲, q컲, q컲, q컲, q컲);
+Test_N(q컳, q컳, q컳, q컳, q컳);
+Test_N(q컴, q컴, q컴, q컴, q컴);
+Test_N(q컵, q컵, q컵, q컵, q컵);
+Test_N(q컶, q컶, q컶, q컶, q컶);
+Test_N(q컷, q컷, q컷, q컷, q컷);
+Test_N(q컸, q컸, q컸, q컸, q컸);
+Test_N(q컹, q컹, q컹, q컹, q컹);
+Test_N(q컺, q컺, q컺, q컺, q컺);
+Test_N(q컻, q컻, q컻, q컻, q컻);
+Test_N(q컼, q컼, q컼, q컼, q컼);
+Test_N(q컽, q컽, q컽, q컽, q컽);
+Test_N(q컾, q컾, q컾, q컾, q컾);
+Test_N(q컿, q컿, q컿, q컿, q컿);
+Test_N(q케, q케, q케, q케, q케);
+Test_N(q켁, q켁, q켁, q켁, q켁);
+Test_N(q켂, q켂, q켂, q켂, q켂);
+Test_N(q켃, q켃, q켃, q켃, q켃);
+Test_N(q켄, q켄, q켄, q켄, q켄);
+Test_N(q켅, q켅, q켅, q켅, q켅);
+Test_N(q켆, q켆, q켆, q켆, q켆);
+Test_N(q켇, q켇, q켇, q켇, q켇);
+Test_N(q켈, q켈, q켈, q켈, q켈);
+Test_N(q켉, q켉, q켉, q켉, q켉);
+Test_N(q켊, q켊, q켊, q켊, q켊);
+Test_N(q켋, q켋, q켋, q켋, q켋);
+Test_N(q켌, q켌, q켌, q켌, q켌);
+Test_N(q켍, q켍, q켍, q켍, q켍);
+Test_N(q켎, q켎, q켎, q켎, q켎);
+Test_N(q켏, q켏, q켏, q켏, q켏);
+Test_N(q켐, q켐, q켐, q켐, q켐);
+Test_N(q켑, q켑, q켑, q켑, q켑);
+Test_N(q켒, q켒, q켒, q켒, q켒);
+Test_N(q켓, q켓, q켓, q켓, q켓);
+Test_N(q켔, q켔, q켔, q켔, q켔);
+Test_N(q켕, q켕, q켕, q켕, q켕);
+Test_N(q켖, q켖, q켖, q켖, q켖);
+Test_N(q켗, q켗, q켗, q켗, q켗);
+Test_N(q켘, q켘, q켘, q켘, q켘);
+Test_N(q켙, q켙, q켙, q켙, q켙);
+Test_N(q켚, q켚, q켚, q켚, q켚);
+Test_N(q켛, q켛, q켛, q켛, q켛);
+Test_N(q켜, q켜, q켜, q켜, q켜);
+Test_N(q켝, q켝, q켝, q켝, q켝);
+Test_N(q켞, q켞, q켞, q켞, q켞);
+Test_N(q켟, q켟, q켟, q켟, q켟);
+Test_N(q켠, q켠, q켠, q켠, q켠);
+Test_N(q켡, q켡, q켡, q켡, q켡);
+Test_N(q켢, q켢, q켢, q켢, q켢);
+Test_N(q켣, q켣, q켣, q켣, q켣);
+Test_N(q켤, q켤, q켤, q켤, q켤);
+Test_N(q켥, q켥, q켥, q켥, q켥);
+Test_N(q켦, q켦, q켦, q켦, q켦);
+Test_N(q켧, q켧, q켧, q켧, q켧);
+Test_N(q켨, q켨, q켨, q켨, q켨);
+Test_N(q켩, q켩, q켩, q켩, q켩);
+Test_N(q켪, q켪, q켪, q켪, q켪);
+Test_N(q켫, q켫, q켫, q켫, q켫);
+Test_N(q켬, q켬, q켬, q켬, q켬);
+Test_N(q켭, q켭, q켭, q켭, q켭);
+Test_N(q켮, q켮, q켮, q켮, q켮);
+Test_N(q켯, q켯, q켯, q켯, q켯);
+Test_N(q켰, q켰, q켰, q켰, q켰);
+Test_N(q켱, q켱, q켱, q켱, q켱);
+Test_N(q켲, q켲, q켲, q켲, q켲);
+Test_N(q켳, q켳, q켳, q켳, q켳);
+Test_N(q켴, q켴, q켴, q켴, q켴);
+Test_N(q켵, q켵, q켵, q켵, q켵);
+Test_N(q켶, q켶, q켶, q켶, q켶);
+Test_N(q켷, q켷, q켷, q켷, q켷);
+Test_N(q켸, q켸, q켸, q켸, q켸);
+Test_N(q켹, q켹, q켹, q켹, q켹);
+Test_N(q켺, q켺, q켺, q켺, q켺);
+Test_N(q켻, q켻, q켻, q켻, q켻);
+Test_N(q켼, q켼, q켼, q켼, q켼);
+Test_N(q켽, q켽, q켽, q켽, q켽);
+Test_N(q켾, q켾, q켾, q켾, q켾);
+Test_N(q켿, q켿, q켿, q켿, q켿);
+Test_N(q콀, q콀, q콀, q콀, q콀);
+Test_N(q콁, q콁, q콁, q콁, q콁);
+Test_N(q콂, q콂, q콂, q콂, q콂);
+Test_N(q콃, q콃, q콃, q콃, q콃);
+Test_N(q콄, q콄, q콄, q콄, q콄);
+Test_N(q콅, q콅, q콅, q콅, q콅);
+Test_N(q콆, q콆, q콆, q콆, q콆);
+Test_N(q콇, q콇, q콇, q콇, q콇);
+Test_N(q콈, q콈, q콈, q콈, q콈);
+Test_N(q콉, q콉, q콉, q콉, q콉);
+Test_N(q콊, q콊, q콊, q콊, q콊);
+Test_N(q콋, q콋, q콋, q콋, q콋);
+Test_N(q콌, q콌, q콌, q콌, q콌);
+Test_N(q콍, q콍, q콍, q콍, q콍);
+Test_N(q콎, q콎, q콎, q콎, q콎);
+Test_N(q콏, q콏, q콏, q콏, q콏);
+Test_N(q콐, q콐, q콐, q콐, q콐);
+Test_N(q콑, q콑, q콑, q콑, q콑);
+Test_N(q콒, q콒, q콒, q콒, q콒);
+Test_N(q콓, q콓, q콓, q콓, q콓);
+Test_N(q코, q코, q코, q코, q코);
+Test_N(q콕, q콕, q콕, q콕, q콕);
+Test_N(q콖, q콖, q콖, q콖, q콖);
+Test_N(q콗, q콗, q콗, q콗, q콗);
+Test_N(q콘, q콘, q콘, q콘, q콘);
+Test_N(q콙, q콙, q콙, q콙, q콙);
+Test_N(q콚, q콚, q콚, q콚, q콚);
+Test_N(q콛, q콛, q콛, q콛, q콛);
+Test_N(q콜, q콜, q콜, q콜, q콜);
+Test_N(q콝, q콝, q콝, q콝, q콝);
+Test_N(q콞, q콞, q콞, q콞, q콞);
+Test_N(q콟, q콟, q콟, q콟, q콟);
+Test_N(q콠, q콠, q콠, q콠, q콠);
+Test_N(q콡, q콡, q콡, q콡, q콡);
+Test_N(q콢, q콢, q콢, q콢, q콢);
+Test_N(q콣, q콣, q콣, q콣, q콣);
+Test_N(q콤, q콤, q콤, q콤, q콤);
+Test_N(q콥, q콥, q콥, q콥, q콥);
+Test_N(q콦, q콦, q콦, q콦, q콦);
+Test_N(q콧, q콧, q콧, q콧, q콧);
+Test_N(q콨, q콨, q콨, q콨, q콨);
+Test_N(q콩, q콩, q콩, q콩, q콩);
+Test_N(q콪, q콪, q콪, q콪, q콪);
+Test_N(q콫, q콫, q콫, q콫, q콫);
+Test_N(q콬, q콬, q콬, q콬, q콬);
+Test_N(q콭, q콭, q콭, q콭, q콭);
+Test_N(q콮, q콮, q콮, q콮, q콮);
+Test_N(q콯, q콯, q콯, q콯, q콯);
+Test_N(q콰, q콰, q콰, q콰, q콰);
+Test_N(q콱, q콱, q콱, q콱, q콱);
+Test_N(q콲, q콲, q콲, q콲, q콲);
+Test_N(q콳, q콳, q콳, q콳, q콳);
+Test_N(q콴, q콴, q콴, q콴, q콴);
+Test_N(q콵, q콵, q콵, q콵, q콵);
+Test_N(q콶, q콶, q콶, q콶, q콶);
+Test_N(q콷, q콷, q콷, q콷, q콷);
+Test_N(q콸, q콸, q콸, q콸, q콸);
+Test_N(q콹, q콹, q콹, q콹, q콹);
+Test_N(q콺, q콺, q콺, q콺, q콺);
+Test_N(q콻, q콻, q콻, q콻, q콻);
+Test_N(q콼, q콼, q콼, q콼, q콼);
+Test_N(q콽, q콽, q콽, q콽, q콽);
+Test_N(q콾, q콾, q콾, q콾, q콾);
+Test_N(q콿, q콿, q콿, q콿, q콿);
+Test_N(q쾀, q쾀, q쾀, q쾀, q쾀);
+Test_N(q쾁, q쾁, q쾁, q쾁, q쾁);
+Test_N(q쾂, q쾂, q쾂, q쾂, q쾂);
+Test_N(q쾃, q쾃, q쾃, q쾃, q쾃);
+Test_N(q쾄, q쾄, q쾄, q쾄, q쾄);
+Test_N(q쾅, q쾅, q쾅, q쾅, q쾅);
+Test_N(q쾆, q쾆, q쾆, q쾆, q쾆);
+Test_N(q쾇, q쾇, q쾇, q쾇, q쾇);
+Test_N(q쾈, q쾈, q쾈, q쾈, q쾈);
+Test_N(q쾉, q쾉, q쾉, q쾉, q쾉);
+Test_N(q쾊, q쾊, q쾊, q쾊, q쾊);
+Test_N(q쾋, q쾋, q쾋, q쾋, q쾋);
+Test_N(q쾌, q쾌, q쾌, q쾌, q쾌);
+Test_N(q쾍, q쾍, q쾍, q쾍, q쾍);
+Test_N(q쾎, q쾎, q쾎, q쾎, q쾎);
+Test_N(q쾏, q쾏, q쾏, q쾏, q쾏);
+Test_N(q쾐, q쾐, q쾐, q쾐, q쾐);
+Test_N(q쾑, q쾑, q쾑, q쾑, q쾑);
+Test_N(q쾒, q쾒, q쾒, q쾒, q쾒);
+Test_N(q쾓, q쾓, q쾓, q쾓, q쾓);
+Test_N(q쾔, q쾔, q쾔, q쾔, q쾔);
+Test_N(q쾕, q쾕, q쾕, q쾕, q쾕);
+Test_N(q쾖, q쾖, q쾖, q쾖, q쾖);
+Test_N(q쾗, q쾗, q쾗, q쾗, q쾗);
+Test_N(q쾘, q쾘, q쾘, q쾘, q쾘);
+Test_N(q쾙, q쾙, q쾙, q쾙, q쾙);
+Test_N(q쾚, q쾚, q쾚, q쾚, q쾚);
+Test_N(q쾛, q쾛, q쾛, q쾛, q쾛);
+Test_N(q쾜, q쾜, q쾜, q쾜, q쾜);
+Test_N(q쾝, q쾝, q쾝, q쾝, q쾝);
+Test_N(q쾞, q쾞, q쾞, q쾞, q쾞);
+Test_N(q쾟, q쾟, q쾟, q쾟, q쾟);
+Test_N(q쾠, q쾠, q쾠, q쾠, q쾠);
+Test_N(q쾡, q쾡, q쾡, q쾡, q쾡);
+Test_N(q쾢, q쾢, q쾢, q쾢, q쾢);
+Test_N(q쾣, q쾣, q쾣, q쾣, q쾣);
+Test_N(q쾤, q쾤, q쾤, q쾤, q쾤);
+Test_N(q쾥, q쾥, q쾥, q쾥, q쾥);
+Test_N(q쾦, q쾦, q쾦, q쾦, q쾦);
+Test_N(q쾧, q쾧, q쾧, q쾧, q쾧);
+Test_N(q쾨, q쾨, q쾨, q쾨, q쾨);
+Test_N(q쾩, q쾩, q쾩, q쾩, q쾩);
+Test_N(q쾪, q쾪, q쾪, q쾪, q쾪);
+Test_N(q쾫, q쾫, q쾫, q쾫, q쾫);
+Test_N(q쾬, q쾬, q쾬, q쾬, q쾬);
+Test_N(q쾭, q쾭, q쾭, q쾭, q쾭);
+Test_N(q쾮, q쾮, q쾮, q쾮, q쾮);
+Test_N(q쾯, q쾯, q쾯, q쾯, q쾯);
+Test_N(q쾰, q쾰, q쾰, q쾰, q쾰);
+Test_N(q쾱, q쾱, q쾱, q쾱, q쾱);
+Test_N(q쾲, q쾲, q쾲, q쾲, q쾲);
+Test_N(q쾳, q쾳, q쾳, q쾳, q쾳);
+Test_N(q쾴, q쾴, q쾴, q쾴, q쾴);
+Test_N(q쾵, q쾵, q쾵, q쾵, q쾵);
+Test_N(q쾶, q쾶, q쾶, q쾶, q쾶);
+Test_N(q쾷, q쾷, q쾷, q쾷, q쾷);
+Test_N(q쾸, q쾸, q쾸, q쾸, q쾸);
+Test_N(q쾹, q쾹, q쾹, q쾹, q쾹);
+Test_N(q쾺, q쾺, q쾺, q쾺, q쾺);
+Test_N(q쾻, q쾻, q쾻, q쾻, q쾻);
+Test_N(q쾼, q쾼, q쾼, q쾼, q쾼);
+Test_N(q쾽, q쾽, q쾽, q쾽, q쾽);
+Test_N(q쾾, q쾾, q쾾, q쾾, q쾾);
+Test_N(q쾿, q쾿, q쾿, q쾿, q쾿);
+Test_N(q쿀, q쿀, q쿀, q쿀, q쿀);
+Test_N(q쿁, q쿁, q쿁, q쿁, q쿁);
+Test_N(q쿂, q쿂, q쿂, q쿂, q쿂);
+Test_N(q쿃, q쿃, q쿃, q쿃, q쿃);
+Test_N(q쿄, q쿄, q쿄, q쿄, q쿄);
+Test_N(q쿅, q쿅, q쿅, q쿅, q쿅);
+Test_N(q쿆, q쿆, q쿆, q쿆, q쿆);
+Test_N(q쿇, q쿇, q쿇, q쿇, q쿇);
+Test_N(q쿈, q쿈, q쿈, q쿈, q쿈);
+Test_N(q쿉, q쿉, q쿉, q쿉, q쿉);
+Test_N(q쿊, q쿊, q쿊, q쿊, q쿊);
+Test_N(q쿋, q쿋, q쿋, q쿋, q쿋);
+Test_N(q쿌, q쿌, q쿌, q쿌, q쿌);
+Test_N(q쿍, q쿍, q쿍, q쿍, q쿍);
+Test_N(q쿎, q쿎, q쿎, q쿎, q쿎);
+Test_N(q쿏, q쿏, q쿏, q쿏, q쿏);
+Test_N(q쿐, q쿐, q쿐, q쿐, q쿐);
+Test_N(q쿑, q쿑, q쿑, q쿑, q쿑);
+Test_N(q쿒, q쿒, q쿒, q쿒, q쿒);
+Test_N(q쿓, q쿓, q쿓, q쿓, q쿓);
+Test_N(q쿔, q쿔, q쿔, q쿔, q쿔);
+Test_N(q쿕, q쿕, q쿕, q쿕, q쿕);
+Test_N(q쿖, q쿖, q쿖, q쿖, q쿖);
+Test_N(q쿗, q쿗, q쿗, q쿗, q쿗);
+Test_N(q쿘, q쿘, q쿘, q쿘, q쿘);
+Test_N(q쿙, q쿙, q쿙, q쿙, q쿙);
+Test_N(q쿚, q쿚, q쿚, q쿚, q쿚);
+Test_N(q쿛, q쿛, q쿛, q쿛, q쿛);
+Test_N(q쿜, q쿜, q쿜, q쿜, q쿜);
+Test_N(q쿝, q쿝, q쿝, q쿝, q쿝);
+Test_N(q쿞, q쿞, q쿞, q쿞, q쿞);
+Test_N(q쿟, q쿟, q쿟, q쿟, q쿟);
+Test_N(q쿠, q쿠, q쿠, q쿠, q쿠);
+Test_N(q쿡, q쿡, q쿡, q쿡, q쿡);
+Test_N(q쿢, q쿢, q쿢, q쿢, q쿢);
+Test_N(q쿣, q쿣, q쿣, q쿣, q쿣);
+Test_N(q쿤, q쿤, q쿤, q쿤, q쿤);
+Test_N(q쿥, q쿥, q쿥, q쿥, q쿥);
+Test_N(q쿦, q쿦, q쿦, q쿦, q쿦);
+Test_N(q쿧, q쿧, q쿧, q쿧, q쿧);
+Test_N(q쿨, q쿨, q쿨, q쿨, q쿨);
+Test_N(q쿩, q쿩, q쿩, q쿩, q쿩);
+Test_N(q쿪, q쿪, q쿪, q쿪, q쿪);
+Test_N(q쿫, q쿫, q쿫, q쿫, q쿫);
+Test_N(q쿬, q쿬, q쿬, q쿬, q쿬);
+Test_N(q쿭, q쿭, q쿭, q쿭, q쿭);
+Test_N(q쿮, q쿮, q쿮, q쿮, q쿮);
+Test_N(q쿯, q쿯, q쿯, q쿯, q쿯);
+Test_N(q쿰, q쿰, q쿰, q쿰, q쿰);
+Test_N(q쿱, q쿱, q쿱, q쿱, q쿱);
+Test_N(q쿲, q쿲, q쿲, q쿲, q쿲);
+Test_N(q쿳, q쿳, q쿳, q쿳, q쿳);
+Test_N(q쿴, q쿴, q쿴, q쿴, q쿴);
+Test_N(q쿵, q쿵, q쿵, q쿵, q쿵);
+Test_N(q쿶, q쿶, q쿶, q쿶, q쿶);
+Test_N(q쿷, q쿷, q쿷, q쿷, q쿷);
+Test_N(q쿸, q쿸, q쿸, q쿸, q쿸);
+Test_N(q쿹, q쿹, q쿹, q쿹, q쿹);
+Test_N(q쿺, q쿺, q쿺, q쿺, q쿺);
+Test_N(q쿻, q쿻, q쿻, q쿻, q쿻);
+Test_N(q쿼, q쿼, q쿼, q쿼, q쿼);
+Test_N(q쿽, q쿽, q쿽, q쿽, q쿽);
+Test_N(q쿾, q쿾, q쿾, q쿾, q쿾);
+Test_N(q쿿, q쿿, q쿿, q쿿, q쿿);
+Test_N(q퀀, q퀀, q퀀, q퀀, q퀀);
+Test_N(q퀁, q퀁, q퀁, q퀁, q퀁);
+Test_N(q퀂, q퀂, q퀂, q퀂, q퀂);
+Test_N(q퀃, q퀃, q퀃, q퀃, q퀃);
+Test_N(q퀄, q퀄, q퀄, q퀄, q퀄);
+Test_N(q퀅, q퀅, q퀅, q퀅, q퀅);
+Test_N(q퀆, q퀆, q퀆, q퀆, q퀆);
+Test_N(q퀇, q퀇, q퀇, q퀇, q퀇);
+Test_N(q퀈, q퀈, q퀈, q퀈, q퀈);
+Test_N(q퀉, q퀉, q퀉, q퀉, q퀉);
+Test_N(q퀊, q퀊, q퀊, q퀊, q퀊);
+Test_N(q퀋, q퀋, q퀋, q퀋, q퀋);
+Test_N(q퀌, q퀌, q퀌, q퀌, q퀌);
+Test_N(q퀍, q퀍, q퀍, q퀍, q퀍);
+Test_N(q퀎, q퀎, q퀎, q퀎, q퀎);
+Test_N(q퀏, q퀏, q퀏, q퀏, q퀏);
+Test_N(q퀐, q퀐, q퀐, q퀐, q퀐);
+Test_N(q퀑, q퀑, q퀑, q퀑, q퀑);
+Test_N(q퀒, q퀒, q퀒, q퀒, q퀒);
+Test_N(q퀓, q퀓, q퀓, q퀓, q퀓);
+Test_N(q퀔, q퀔, q퀔, q퀔, q퀔);
+Test_N(q퀕, q퀕, q퀕, q퀕, q퀕);
+Test_N(q퀖, q퀖, q퀖, q퀖, q퀖);
+Test_N(q퀗, q퀗, q퀗, q퀗, q퀗);
+Test_N(q퀘, q퀘, q퀘, q퀘, q퀘);
+Test_N(q퀙, q퀙, q퀙, q퀙, q퀙);
+Test_N(q퀚, q퀚, q퀚, q퀚, q퀚);
+Test_N(q퀛, q퀛, q퀛, q퀛, q퀛);
+Test_N(q퀜, q퀜, q퀜, q퀜, q퀜);
+Test_N(q퀝, q퀝, q퀝, q퀝, q퀝);
+Test_N(q퀞, q퀞, q퀞, q퀞, q퀞);
+Test_N(q퀟, q퀟, q퀟, q퀟, q퀟);
+Test_N(q퀠, q퀠, q퀠, q퀠, q퀠);
+Test_N(q퀡, q퀡, q퀡, q퀡, q퀡);
+Test_N(q퀢, q퀢, q퀢, q퀢, q퀢);
+Test_N(q퀣, q퀣, q퀣, q퀣, q퀣);
+Test_N(q퀤, q퀤, q퀤, q퀤, q퀤);
+Test_N(q퀥, q퀥, q퀥, q퀥, q퀥);
+Test_N(q퀦, q퀦, q퀦, q퀦, q퀦);
+Test_N(q퀧, q퀧, q퀧, q퀧, q퀧);
+Test_N(q퀨, q퀨, q퀨, q퀨, q퀨);
+Test_N(q퀩, q퀩, q퀩, q퀩, q퀩);
+Test_N(q퀪, q퀪, q퀪, q퀪, q퀪);
+Test_N(q퀫, q퀫, q퀫, q퀫, q퀫);
+Test_N(q퀬, q퀬, q퀬, q퀬, q퀬);
+Test_N(q퀭, q퀭, q퀭, q퀭, q퀭);
+Test_N(q퀮, q퀮, q퀮, q퀮, q퀮);
+Test_N(q퀯, q퀯, q퀯, q퀯, q퀯);
+Test_N(q퀰, q퀰, q퀰, q퀰, q퀰);
+Test_N(q퀱, q퀱, q퀱, q퀱, q퀱);
+Test_N(q퀲, q퀲, q퀲, q퀲, q퀲);
+Test_N(q퀳, q퀳, q퀳, q퀳, q퀳);
+Test_N(q퀴, q퀴, q퀴, q퀴, q퀴);
+Test_N(q퀵, q퀵, q퀵, q퀵, q퀵);
+Test_N(q퀶, q퀶, q퀶, q퀶, q퀶);
+Test_N(q퀷, q퀷, q퀷, q퀷, q퀷);
+Test_N(q퀸, q퀸, q퀸, q퀸, q퀸);
+Test_N(q퀹, q퀹, q퀹, q퀹, q퀹);
+Test_N(q퀺, q퀺, q퀺, q퀺, q퀺);
+Test_N(q퀻, q퀻, q퀻, q퀻, q퀻);
+Test_N(q퀼, q퀼, q퀼, q퀼, q퀼);
+Test_N(q퀽, q퀽, q퀽, q퀽, q퀽);
+Test_N(q퀾, q퀾, q퀾, q퀾, q퀾);
+Test_N(q퀿, q퀿, q퀿, q퀿, q퀿);
+Test_N(q큀, q큀, q큀, q큀, q큀);
+Test_N(q큁, q큁, q큁, q큁, q큁);
+Test_N(q큂, q큂, q큂, q큂, q큂);
+Test_N(q큃, q큃, q큃, q큃, q큃);
+Test_N(q큄, q큄, q큄, q큄, q큄);
+Test_N(q큅, q큅, q큅, q큅, q큅);
+Test_N(q큆, q큆, q큆, q큆, q큆);
+Test_N(q큇, q큇, q큇, q큇, q큇);
+Test_N(q큈, q큈, q큈, q큈, q큈);
+Test_N(q큉, q큉, q큉, q큉, q큉);
+Test_N(q큊, q큊, q큊, q큊, q큊);
+Test_N(q큋, q큋, q큋, q큋, q큋);
+Test_N(q큌, q큌, q큌, q큌, q큌);
+Test_N(q큍, q큍, q큍, q큍, q큍);
+Test_N(q큎, q큎, q큎, q큎, q큎);
+Test_N(q큏, q큏, q큏, q큏, q큏);
+Test_N(q큐, q큐, q큐, q큐, q큐);
+Test_N(q큑, q큑, q큑, q큑, q큑);
+Test_N(q큒, q큒, q큒, q큒, q큒);
+Test_N(q큓, q큓, q큓, q큓, q큓);
+Test_N(q큔, q큔, q큔, q큔, q큔);
+Test_N(q큕, q큕, q큕, q큕, q큕);
+Test_N(q큖, q큖, q큖, q큖, q큖);
+Test_N(q큗, q큗, q큗, q큗, q큗);
+Test_N(q큘, q큘, q큘, q큘, q큘);
+Test_N(q큙, q큙, q큙, q큙, q큙);
+Test_N(q큚, q큚, q큚, q큚, q큚);
+Test_N(q큛, q큛, q큛, q큛, q큛);
+Test_N(q큜, q큜, q큜, q큜, q큜);
+Test_N(q큝, q큝, q큝, q큝, q큝);
+Test_N(q큞, q큞, q큞, q큞, q큞);
+Test_N(q큟, q큟, q큟, q큟, q큟);
+Test_N(q큠, q큠, q큠, q큠, q큠);
+Test_N(q큡, q큡, q큡, q큡, q큡);
+Test_N(q큢, q큢, q큢, q큢, q큢);
+Test_N(q큣, q큣, q큣, q큣, q큣);
+Test_N(q큤, q큤, q큤, q큤, q큤);
+Test_N(q큥, q큥, q큥, q큥, q큥);
+Test_N(q큦, q큦, q큦, q큦, q큦);
+Test_N(q큧, q큧, q큧, q큧, q큧);
+Test_N(q큨, q큨, q큨, q큨, q큨);
+Test_N(q큩, q큩, q큩, q큩, q큩);
+Test_N(q큪, q큪, q큪, q큪, q큪);
+Test_N(q큫, q큫, q큫, q큫, q큫);
+Test_N(q크, q크, q크, q크, q크);
+Test_N(q큭, q큭, q큭, q큭, q큭);
+Test_N(q큮, q큮, q큮, q큮, q큮);
+Test_N(q큯, q큯, q큯, q큯, q큯);
+Test_N(q큰, q큰, q큰, q큰, q큰);
+Test_N(q큱, q큱, q큱, q큱, q큱);
+Test_N(q큲, q큲, q큲, q큲, q큲);
+Test_N(q큳, q큳, q큳, q큳, q큳);
+Test_N(q클, q클, q클, q클, q클);
+Test_N(q큵, q큵, q큵, q큵, q큵);
+Test_N(q큶, q큶, q큶, q큶, q큶);
+Test_N(q큷, q큷, q큷, q큷, q큷);
+Test_N(q큸, q큸, q큸, q큸, q큸);
+Test_N(q큹, q큹, q큹, q큹, q큹);
+Test_N(q큺, q큺, q큺, q큺, q큺);
+Test_N(q큻, q큻, q큻, q큻, q큻);
+Test_N(q큼, q큼, q큼, q큼, q큼);
+Test_N(q큽, q큽, q큽, q큽, q큽);
+Test_N(q큾, q큾, q큾, q큾, q큾);
+Test_N(q큿, q큿, q큿, q큿, q큿);
+Test_N(q킀, q킀, q킀, q킀, q킀);
+Test_N(q킁, q킁, q킁, q킁, q킁);
+Test_N(q킂, q킂, q킂, q킂, q킂);
+Test_N(q킃, q킃, q킃, q킃, q킃);
+Test_N(q킄, q킄, q킄, q킄, q킄);
+Test_N(q킅, q킅, q킅, q킅, q킅);
+Test_N(q킆, q킆, q킆, q킆, q킆);
+Test_N(q킇, q킇, q킇, q킇, q킇);
+Test_N(q킈, q킈, q킈, q킈, q킈);
+Test_N(q킉, q킉, q킉, q킉, q킉);
+Test_N(q킊, q킊, q킊, q킊, q킊);
+Test_N(q킋, q킋, q킋, q킋, q킋);
+Test_N(q킌, q킌, q킌, q킌, q킌);
+Test_N(q킍, q킍, q킍, q킍, q킍);
+Test_N(q킎, q킎, q킎, q킎, q킎);
+Test_N(q킏, q킏, q킏, q킏, q킏);
+Test_N(q킐, q킐, q킐, q킐, q킐);
+Test_N(q킑, q킑, q킑, q킑, q킑);
+Test_N(q킒, q킒, q킒, q킒, q킒);
+Test_N(q킓, q킓, q킓, q킓, q킓);
+Test_N(q킔, q킔, q킔, q킔, q킔);
+Test_N(q킕, q킕, q킕, q킕, q킕);
+Test_N(q킖, q킖, q킖, q킖, q킖);
+Test_N(q킗, q킗, q킗, q킗, q킗);
+Test_N(q킘, q킘, q킘, q킘, q킘);
+Test_N(q킙, q킙, q킙, q킙, q킙);
+Test_N(q킚, q킚, q킚, q킚, q킚);
+Test_N(q킛, q킛, q킛, q킛, q킛);
+Test_N(q킜, q킜, q킜, q킜, q킜);
+Test_N(q킝, q킝, q킝, q킝, q킝);
+Test_N(q킞, q킞, q킞, q킞, q킞);
+Test_N(q킟, q킟, q킟, q킟, q킟);
+Test_N(q킠, q킠, q킠, q킠, q킠);
+Test_N(q킡, q킡, q킡, q킡, q킡);
+Test_N(q킢, q킢, q킢, q킢, q킢);
+Test_N(q킣, q킣, q킣, q킣, q킣);
+Test_N(q키, q키, q키, q키, q키);
+Test_N(q킥, q킥, q킥, q킥, q킥);
+Test_N(q킦, q킦, q킦, q킦, q킦);
+Test_N(q킧, q킧, q킧, q킧, q킧);
+Test_N(q킨, q킨, q킨, q킨, q킨);
+Test_N(q킩, q킩, q킩, q킩, q킩);
+Test_N(q킪, q킪, q킪, q킪, q킪);
+Test_N(q킫, q킫, q킫, q킫, q킫);
+Test_N(q킬, q킬, q킬, q킬, q킬);
+Test_N(q킭, q킭, q킭, q킭, q킭);
+Test_N(q킮, q킮, q킮, q킮, q킮);
+Test_N(q킯, q킯, q킯, q킯, q킯);
+Test_N(q킰, q킰, q킰, q킰, q킰);
+Test_N(q킱, q킱, q킱, q킱, q킱);
+Test_N(q킲, q킲, q킲, q킲, q킲);
+Test_N(q킳, q킳, q킳, q킳, q킳);
+Test_N(q킴, q킴, q킴, q킴, q킴);
+Test_N(q킵, q킵, q킵, q킵, q킵);
+Test_N(q킶, q킶, q킶, q킶, q킶);
+Test_N(q킷, q킷, q킷, q킷, q킷);
+Test_N(q킸, q킸, q킸, q킸, q킸);
+Test_N(q킹, q킹, q킹, q킹, q킹);
+Test_N(q킺, q킺, q킺, q킺, q킺);
+Test_N(q킻, q킻, q킻, q킻, q킻);
+Test_N(q킼, q킼, q킼, q킼, q킼);
+Test_N(q킽, q킽, q킽, q킽, q킽);
+Test_N(q킾, q킾, q킾, q킾, q킾);
+Test_N(q킿, q킿, q킿, q킿, q킿);
+Test_N(q타, q타, q타, q타, q타);
+Test_N(q탁, q탁, q탁, q탁, q탁);
+Test_N(q탂, q탂, q탂, q탂, q탂);
+Test_N(q탃, q탃, q탃, q탃, q탃);
+Test_N(q탄, q탄, q탄, q탄, q탄);
+Test_N(q탅, q탅, q탅, q탅, q탅);
+Test_N(q탆, q탆, q탆, q탆, q탆);
+Test_N(q탇, q탇, q탇, q탇, q탇);
+Test_N(q탈, q탈, q탈, q탈, q탈);
+Test_N(q탉, q탉, q탉, q탉, q탉);
+Test_N(q탊, q탊, q탊, q탊, q탊);
+Test_N(q탋, q탋, q탋, q탋, q탋);
+Test_N(q탌, q탌, q탌, q탌, q탌);
+Test_N(q탍, q탍, q탍, q탍, q탍);
+Test_N(q탎, q탎, q탎, q탎, q탎);
+Test_N(q탏, q탏, q탏, q탏, q탏);
+Test_N(q탐, q탐, q탐, q탐, q탐);
+Test_N(q탑, q탑, q탑, q탑, q탑);
+Test_N(q탒, q탒, q탒, q탒, q탒);
+Test_N(q탓, q탓, q탓, q탓, q탓);
+Test_N(q탔, q탔, q탔, q탔, q탔);
+Test_N(q탕, q탕, q탕, q탕, q탕);
+Test_N(q탖, q탖, q탖, q탖, q탖);
+Test_N(q탗, q탗, q탗, q탗, q탗);
+Test_N(q탘, q탘, q탘, q탘, q탘);
+Test_N(q탙, q탙, q탙, q탙, q탙);
+Test_N(q탚, q탚, q탚, q탚, q탚);
+Test_N(q탛, q탛, q탛, q탛, q탛);
+Test_N(q태, q태, q태, q태, q태);
+Test_N(q택, q택, q택, q택, q택);
+Test_N(q탞, q탞, q탞, q탞, q탞);
+Test_N(q탟, q탟, q탟, q탟, q탟);
+Test_N(q탠, q탠, q탠, q탠, q탠);
+Test_N(q탡, q탡, q탡, q탡, q탡);
+Test_N(q탢, q탢, q탢, q탢, q탢);
+Test_N(q탣, q탣, q탣, q탣, q탣);
+Test_N(q탤, q탤, q탤, q탤, q탤);
+Test_N(q탥, q탥, q탥, q탥, q탥);
+Test_N(q탦, q탦, q탦, q탦, q탦);
+Test_N(q탧, q탧, q탧, q탧, q탧);
+Test_N(q탨, q탨, q탨, q탨, q탨);
+Test_N(q탩, q탩, q탩, q탩, q탩);
+Test_N(q탪, q탪, q탪, q탪, q탪);
+Test_N(q탫, q탫, q탫, q탫, q탫);
+Test_N(q탬, q탬, q탬, q탬, q탬);
+Test_N(q탭, q탭, q탭, q탭, q탭);
+Test_N(q탮, q탮, q탮, q탮, q탮);
+Test_N(q탯, q탯, q탯, q탯, q탯);
+Test_N(q탰, q탰, q탰, q탰, q탰);
+Test_N(q탱, q탱, q탱, q탱, q탱);
+Test_N(q탲, q탲, q탲, q탲, q탲);
+Test_N(q탳, q탳, q탳, q탳, q탳);
+Test_N(q탴, q탴, q탴, q탴, q탴);
+Test_N(q탵, q탵, q탵, q탵, q탵);
+Test_N(q탶, q탶, q탶, q탶, q탶);
+Test_N(q탷, q탷, q탷, q탷, q탷);
+Test_N(q탸, q탸, q탸, q탸, q탸);
+Test_N(q탹, q탹, q탹, q탹, q탹);
+Test_N(q탺, q탺, q탺, q탺, q탺);
+Test_N(q탻, q탻, q탻, q탻, q탻);
+Test_N(q탼, q탼, q탼, q탼, q탼);
+Test_N(q탽, q탽, q탽, q탽, q탽);
+Test_N(q탾, q탾, q탾, q탾, q탾);
+Test_N(q탿, q탿, q탿, q탿, q탿);
+Test_N(q턀, q턀, q턀, q턀, q턀);
+Test_N(q턁, q턁, q턁, q턁, q턁);
+Test_N(q턂, q턂, q턂, q턂, q턂);
+Test_N(q턃, q턃, q턃, q턃, q턃);
+Test_N(q턄, q턄, q턄, q턄, q턄);
+Test_N(q턅, q턅, q턅, q턅, q턅);
+Test_N(q턆, q턆, q턆, q턆, q턆);
+Test_N(q턇, q턇, q턇, q턇, q턇);
+Test_N(q턈, q턈, q턈, q턈, q턈);
+Test_N(q턉, q턉, q턉, q턉, q턉);
+Test_N(q턊, q턊, q턊, q턊, q턊);
+Test_N(q턋, q턋, q턋, q턋, q턋);
+Test_N(q턌, q턌, q턌, q턌, q턌);
+Test_N(q턍, q턍, q턍, q턍, q턍);
+Test_N(q턎, q턎, q턎, q턎, q턎);
+Test_N(q턏, q턏, q턏, q턏, q턏);
+Test_N(q턐, q턐, q턐, q턐, q턐);
+Test_N(q턑, q턑, q턑, q턑, q턑);
+Test_N(q턒, q턒, q턒, q턒, q턒);
+Test_N(q턓, q턓, q턓, q턓, q턓);
+Test_N(q턔, q턔, q턔, q턔, q턔);
+Test_N(q턕, q턕, q턕, q턕, q턕);
+Test_N(q턖, q턖, q턖, q턖, q턖);
+Test_N(q턗, q턗, q턗, q턗, q턗);
+Test_N(q턘, q턘, q턘, q턘, q턘);
+Test_N(q턙, q턙, q턙, q턙, q턙);
+Test_N(q턚, q턚, q턚, q턚, q턚);
+Test_N(q턛, q턛, q턛, q턛, q턛);
+Test_N(q턜, q턜, q턜, q턜, q턜);
+Test_N(q턝, q턝, q턝, q턝, q턝);
+Test_N(q턞, q턞, q턞, q턞, q턞);
+Test_N(q턟, q턟, q턟, q턟, q턟);
+Test_N(q턠, q턠, q턠, q턠, q턠);
+Test_N(q턡, q턡, q턡, q턡, q턡);
+Test_N(q턢, q턢, q턢, q턢, q턢);
+Test_N(q턣, q턣, q턣, q턣, q턣);
+Test_N(q턤, q턤, q턤, q턤, q턤);
+Test_N(q턥, q턥, q턥, q턥, q턥);
+Test_N(q턦, q턦, q턦, q턦, q턦);
+Test_N(q턧, q턧, q턧, q턧, q턧);
+Test_N(q턨, q턨, q턨, q턨, q턨);
+Test_N(q턩, q턩, q턩, q턩, q턩);
+Test_N(q턪, q턪, q턪, q턪, q턪);
+Test_N(q턫, q턫, q턫, q턫, q턫);
+Test_N(q턬, q턬, q턬, q턬, q턬);
+Test_N(q턭, q턭, q턭, q턭, q턭);
+Test_N(q턮, q턮, q턮, q턮, q턮);
+Test_N(q턯, q턯, q턯, q턯, q턯);
+Test_N(q터, q터, q터, q터, q터);
+Test_N(q턱, q턱, q턱, q턱, q턱);
+Test_N(q턲, q턲, q턲, q턲, q턲);
+Test_N(q턳, q턳, q턳, q턳, q턳);
+Test_N(q턴, q턴, q턴, q턴, q턴);
+Test_N(q턵, q턵, q턵, q턵, q턵);
+Test_N(q턶, q턶, q턶, q턶, q턶);
+Test_N(q턷, q턷, q턷, q턷, q턷);
+Test_N(q털, q털, q털, q털, q털);
+Test_N(q턹, q턹, q턹, q턹, q턹);
+Test_N(q턺, q턺, q턺, q턺, q턺);
+Test_N(q턻, q턻, q턻, q턻, q턻);
+Test_N(q턼, q턼, q턼, q턼, q턼);
+Test_N(q턽, q턽, q턽, q턽, q턽);
+Test_N(q턾, q턾, q턾, q턾, q턾);
+Test_N(q턿, q턿, q턿, q턿, q턿);
+Test_N(q텀, q텀, q텀, q텀, q텀);
+Test_N(q텁, q텁, q텁, q텁, q텁);
+Test_N(q텂, q텂, q텂, q텂, q텂);
+Test_N(q텃, q텃, q텃, q텃, q텃);
+Test_N(q텄, q텄, q텄, q텄, q텄);
+Test_N(q텅, q텅, q텅, q텅, q텅);
+Test_N(q텆, q텆, q텆, q텆, q텆);
+Test_N(q텇, q텇, q텇, q텇, q텇);
+Test_N(q텈, q텈, q텈, q텈, q텈);
+Test_N(q텉, q텉, q텉, q텉, q텉);
+Test_N(q텊, q텊, q텊, q텊, q텊);
+Test_N(q텋, q텋, q텋, q텋, q텋);
+Test_N(q테, q테, q테, q테, q테);
+Test_N(q텍, q텍, q텍, q텍, q텍);
+Test_N(q텎, q텎, q텎, q텎, q텎);
+Test_N(q텏, q텏, q텏, q텏, q텏);
+Test_N(q텐, q텐, q텐, q텐, q텐);
+Test_N(q텑, q텑, q텑, q텑, q텑);
+Test_N(q텒, q텒, q텒, q텒, q텒);
+Test_N(q텓, q텓, q텓, q텓, q텓);
+Test_N(q텔, q텔, q텔, q텔, q텔);
+Test_N(q텕, q텕, q텕, q텕, q텕);
+Test_N(q텖, q텖, q텖, q텖, q텖);
+Test_N(q텗, q텗, q텗, q텗, q텗);
+Test_N(q텘, q텘, q텘, q텘, q텘);
+Test_N(q텙, q텙, q텙, q텙, q텙);
+Test_N(q텚, q텚, q텚, q텚, q텚);
+Test_N(q텛, q텛, q텛, q텛, q텛);
+Test_N(q템, q템, q템, q템, q템);
+Test_N(q텝, q텝, q텝, q텝, q텝);
+Test_N(q텞, q텞, q텞, q텞, q텞);
+Test_N(q텟, q텟, q텟, q텟, q텟);
+Test_N(q텠, q텠, q텠, q텠, q텠);
+Test_N(q텡, q텡, q텡, q텡, q텡);
+Test_N(q텢, q텢, q텢, q텢, q텢);
+Test_N(q텣, q텣, q텣, q텣, q텣);
+Test_N(q텤, q텤, q텤, q텤, q텤);
+Test_N(q텥, q텥, q텥, q텥, q텥);
+Test_N(q텦, q텦, q텦, q텦, q텦);
+Test_N(q텧, q텧, q텧, q텧, q텧);
+Test_N(q텨, q텨, q텨, q텨, q텨);
+Test_N(q텩, q텩, q텩, q텩, q텩);
+Test_N(q텪, q텪, q텪, q텪, q텪);
+Test_N(q텫, q텫, q텫, q텫, q텫);
+Test_N(q텬, q텬, q텬, q텬, q텬);
+Test_N(q텭, q텭, q텭, q텭, q텭);
+Test_N(q텮, q텮, q텮, q텮, q텮);
+Test_N(q텯, q텯, q텯, q텯, q텯);
+Test_N(q텰, q텰, q텰, q텰, q텰);
+Test_N(q텱, q텱, q텱, q텱, q텱);
+Test_N(q텲, q텲, q텲, q텲, q텲);
+Test_N(q텳, q텳, q텳, q텳, q텳);
+Test_N(q텴, q텴, q텴, q텴, q텴);
+Test_N(q텵, q텵, q텵, q텵, q텵);
+Test_N(q텶, q텶, q텶, q텶, q텶);
+Test_N(q텷, q텷, q텷, q텷, q텷);
+Test_N(q텸, q텸, q텸, q텸, q텸);
+Test_N(q텹, q텹, q텹, q텹, q텹);
+Test_N(q텺, q텺, q텺, q텺, q텺);
+Test_N(q텻, q텻, q텻, q텻, q텻);
+Test_N(q텼, q텼, q텼, q텼, q텼);
+Test_N(q텽, q텽, q텽, q텽, q텽);
+Test_N(q텾, q텾, q텾, q텾, q텾);
+Test_N(q텿, q텿, q텿, q텿, q텿);
+Test_N(q톀, q톀, q톀, q톀, q톀);
+Test_N(q톁, q톁, q톁, q톁, q톁);
+Test_N(q톂, q톂, q톂, q톂, q톂);
+Test_N(q톃, q톃, q톃, q톃, q톃);
+Test_N(q톄, q톄, q톄, q톄, q톄);
+Test_N(q톅, q톅, q톅, q톅, q톅);
+Test_N(q톆, q톆, q톆, q톆, q톆);
+Test_N(q톇, q톇, q톇, q톇, q톇);
+Test_N(q톈, q톈, q톈, q톈, q톈);
+Test_N(q톉, q톉, q톉, q톉, q톉);
+Test_N(q톊, q톊, q톊, q톊, q톊);
+Test_N(q톋, q톋, q톋, q톋, q톋);
+Test_N(q톌, q톌, q톌, q톌, q톌);
+Test_N(q톍, q톍, q톍, q톍, q톍);
+Test_N(q톎, q톎, q톎, q톎, q톎);
+Test_N(q톏, q톏, q톏, q톏, q톏);
+Test_N(q톐, q톐, q톐, q톐, q톐);
+Test_N(q톑, q톑, q톑, q톑, q톑);
+Test_N(q톒, q톒, q톒, q톒, q톒);
+Test_N(q톓, q톓, q톓, q톓, q톓);
+Test_N(q톔, q톔, q톔, q톔, q톔);
+Test_N(q톕, q톕, q톕, q톕, q톕);
+Test_N(q톖, q톖, q톖, q톖, q톖);
+Test_N(q톗, q톗, q톗, q톗, q톗);
+Test_N(q톘, q톘, q톘, q톘, q톘);
+Test_N(q톙, q톙, q톙, q톙, q톙);
+Test_N(q톚, q톚, q톚, q톚, q톚);
+Test_N(q톛, q톛, q톛, q톛, q톛);
+Test_N(q톜, q톜, q톜, q톜, q톜);
+Test_N(q톝, q톝, q톝, q톝, q톝);
+Test_N(q톞, q톞, q톞, q톞, q톞);
+Test_N(q톟, q톟, q톟, q톟, q톟);
+Test_N(q토, q토, q토, q토, q토);
+Test_N(q톡, q톡, q톡, q톡, q톡);
+Test_N(q톢, q톢, q톢, q톢, q톢);
+Test_N(q톣, q톣, q톣, q톣, q톣);
+Test_N(q톤, q톤, q톤, q톤, q톤);
+Test_N(q톥, q톥, q톥, q톥, q톥);
+Test_N(q톦, q톦, q톦, q톦, q톦);
+Test_N(q톧, q톧, q톧, q톧, q톧);
+Test_N(q톨, q톨, q톨, q톨, q톨);
+Test_N(q톩, q톩, q톩, q톩, q톩);
+Test_N(q톪, q톪, q톪, q톪, q톪);
+Test_N(q톫, q톫, q톫, q톫, q톫);
+Test_N(q톬, q톬, q톬, q톬, q톬);
+Test_N(q톭, q톭, q톭, q톭, q톭);
+Test_N(q톮, q톮, q톮, q톮, q톮);
+Test_N(q톯, q톯, q톯, q톯, q톯);
+Test_N(q톰, q톰, q톰, q톰, q톰);
+Test_N(q톱, q톱, q톱, q톱, q톱);
+Test_N(q톲, q톲, q톲, q톲, q톲);
+Test_N(q톳, q톳, q톳, q톳, q톳);
+Test_N(q톴, q톴, q톴, q톴, q톴);
+Test_N(q통, q통, q통, q통, q통);
+Test_N(q톶, q톶, q톶, q톶, q톶);
+Test_N(q톷, q톷, q톷, q톷, q톷);
+Test_N(q톸, q톸, q톸, q톸, q톸);
+Test_N(q톹, q톹, q톹, q톹, q톹);
+Test_N(q톺, q톺, q톺, q톺, q톺);
+Test_N(q톻, q톻, q톻, q톻, q톻);
+Test_N(q톼, q톼, q톼, q톼, q톼);
+Test_N(q톽, q톽, q톽, q톽, q톽);
+Test_N(q톾, q톾, q톾, q톾, q톾);
+Test_N(q톿, q톿, q톿, q톿, q톿);
+Test_N(q퇀, q퇀, q퇀, q퇀, q퇀);
+Test_N(q퇁, q퇁, q퇁, q퇁, q퇁);
+Test_N(q퇂, q퇂, q퇂, q퇂, q퇂);
+Test_N(q퇃, q퇃, q퇃, q퇃, q퇃);
+Test_N(q퇄, q퇄, q퇄, q퇄, q퇄);
+Test_N(q퇅, q퇅, q퇅, q퇅, q퇅);
+Test_N(q퇆, q퇆, q퇆, q퇆, q퇆);
+Test_N(q퇇, q퇇, q퇇, q퇇, q퇇);
+Test_N(q퇈, q퇈, q퇈, q퇈, q퇈);
+Test_N(q퇉, q퇉, q퇉, q퇉, q퇉);
+Test_N(q퇊, q퇊, q퇊, q퇊, q퇊);
+Test_N(q퇋, q퇋, q퇋, q퇋, q퇋);
+Test_N(q퇌, q퇌, q퇌, q퇌, q퇌);
+Test_N(q퇍, q퇍, q퇍, q퇍, q퇍);
+Test_N(q퇎, q퇎, q퇎, q퇎, q퇎);
+Test_N(q퇏, q퇏, q퇏, q퇏, q퇏);
+Test_N(q퇐, q퇐, q퇐, q퇐, q퇐);
+Test_N(q퇑, q퇑, q퇑, q퇑, q퇑);
+Test_N(q퇒, q퇒, q퇒, q퇒, q퇒);
+Test_N(q퇓, q퇓, q퇓, q퇓, q퇓);
+Test_N(q퇔, q퇔, q퇔, q퇔, q퇔);
+Test_N(q퇕, q퇕, q퇕, q퇕, q퇕);
+Test_N(q퇖, q퇖, q퇖, q퇖, q퇖);
+Test_N(q퇗, q퇗, q퇗, q퇗, q퇗);
+Test_N(q퇘, q퇘, q퇘, q퇘, q퇘);
+Test_N(q퇙, q퇙, q퇙, q퇙, q퇙);
+Test_N(q퇚, q퇚, q퇚, q퇚, q퇚);
+Test_N(q퇛, q퇛, q퇛, q퇛, q퇛);
+Test_N(q퇜, q퇜, q퇜, q퇜, q퇜);
+Test_N(q퇝, q퇝, q퇝, q퇝, q퇝);
+Test_N(q퇞, q퇞, q퇞, q퇞, q퇞);
+Test_N(q퇟, q퇟, q퇟, q퇟, q퇟);
+Test_N(q퇠, q퇠, q퇠, q퇠, q퇠);
+Test_N(q퇡, q퇡, q퇡, q퇡, q퇡);
+Test_N(q퇢, q퇢, q퇢, q퇢, q퇢);
+Test_N(q퇣, q퇣, q퇣, q퇣, q퇣);
+Test_N(q퇤, q퇤, q퇤, q퇤, q퇤);
+Test_N(q퇥, q퇥, q퇥, q퇥, q퇥);
+Test_N(q퇦, q퇦, q퇦, q퇦, q퇦);
+Test_N(q퇧, q퇧, q퇧, q퇧, q퇧);
+Test_N(q퇨, q퇨, q퇨, q퇨, q퇨);
+Test_N(q퇩, q퇩, q퇩, q퇩, q퇩);
+Test_N(q퇪, q퇪, q퇪, q퇪, q퇪);
+Test_N(q퇫, q퇫, q퇫, q퇫, q퇫);
+Test_N(q퇬, q퇬, q퇬, q퇬, q퇬);
+Test_N(q퇭, q퇭, q퇭, q퇭, q퇭);
+Test_N(q퇮, q퇮, q퇮, q퇮, q퇮);
+Test_N(q퇯, q퇯, q퇯, q퇯, q퇯);
+Test_N(q퇰, q퇰, q퇰, q퇰, q퇰);
+Test_N(q퇱, q퇱, q퇱, q퇱, q퇱);
+Test_N(q퇲, q퇲, q퇲, q퇲, q퇲);
+Test_N(q퇳, q퇳, q퇳, q퇳, q퇳);
+Test_N(q퇴, q퇴, q퇴, q퇴, q퇴);
+Test_N(q퇵, q퇵, q퇵, q퇵, q퇵);
+Test_N(q퇶, q퇶, q퇶, q퇶, q퇶);
+Test_N(q퇷, q퇷, q퇷, q퇷, q퇷);
+Test_N(q퇸, q퇸, q퇸, q퇸, q퇸);
+Test_N(q퇹, q퇹, q퇹, q퇹, q퇹);
+Test_N(q퇺, q퇺, q퇺, q퇺, q퇺);
+Test_N(q퇻, q퇻, q퇻, q퇻, q퇻);
+Test_N(q퇼, q퇼, q퇼, q퇼, q퇼);
+Test_N(q퇽, q퇽, q퇽, q퇽, q퇽);
+Test_N(q퇾, q퇾, q퇾, q퇾, q퇾);
+Test_N(q퇿, q퇿, q퇿, q퇿, q퇿);
+Test_N(q툀, q툀, q툀, q툀, q툀);
+Test_N(q툁, q툁, q툁, q툁, q툁);
+Test_N(q툂, q툂, q툂, q툂, q툂);
+Test_N(q툃, q툃, q툃, q툃, q툃);
+Test_N(q툄, q툄, q툄, q툄, q툄);
+Test_N(q툅, q툅, q툅, q툅, q툅);
+Test_N(q툆, q툆, q툆, q툆, q툆);
+Test_N(q툇, q툇, q툇, q툇, q툇);
+Test_N(q툈, q툈, q툈, q툈, q툈);
+Test_N(q툉, q툉, q툉, q툉, q툉);
+Test_N(q툊, q툊, q툊, q툊, q툊);
+Test_N(q툋, q툋, q툋, q툋, q툋);
+Test_N(q툌, q툌, q툌, q툌, q툌);
+Test_N(q툍, q툍, q툍, q툍, q툍);
+Test_N(q툎, q툎, q툎, q툎, q툎);
+Test_N(q툏, q툏, q툏, q툏, q툏);
+Test_N(q툐, q툐, q툐, q툐, q툐);
+Test_N(q툑, q툑, q툑, q툑, q툑);
+Test_N(q툒, q툒, q툒, q툒, q툒);
+Test_N(q툓, q툓, q툓, q툓, q툓);
+Test_N(q툔, q툔, q툔, q툔, q툔);
+Test_N(q툕, q툕, q툕, q툕, q툕);
+Test_N(q툖, q툖, q툖, q툖, q툖);
+Test_N(q툗, q툗, q툗, q툗, q툗);
+Test_N(q툘, q툘, q툘, q툘, q툘);
+Test_N(q툙, q툙, q툙, q툙, q툙);
+Test_N(q툚, q툚, q툚, q툚, q툚);
+Test_N(q툛, q툛, q툛, q툛, q툛);
+Test_N(q툜, q툜, q툜, q툜, q툜);
+Test_N(q툝, q툝, q툝, q툝, q툝);
+Test_N(q툞, q툞, q툞, q툞, q툞);
+Test_N(q툟, q툟, q툟, q툟, q툟);
+Test_N(q툠, q툠, q툠, q툠, q툠);
+Test_N(q툡, q툡, q툡, q툡, q툡);
+Test_N(q툢, q툢, q툢, q툢, q툢);
+Test_N(q툣, q툣, q툣, q툣, q툣);
+Test_N(q툤, q툤, q툤, q툤, q툤);
+Test_N(q툥, q툥, q툥, q툥, q툥);
+Test_N(q툦, q툦, q툦, q툦, q툦);
+Test_N(q툧, q툧, q툧, q툧, q툧);
+Test_N(q툨, q툨, q툨, q툨, q툨);
+Test_N(q툩, q툩, q툩, q툩, q툩);
+Test_N(q툪, q툪, q툪, q툪, q툪);
+Test_N(q툫, q툫, q툫, q툫, q툫);
+Test_N(q투, q투, q투, q투, q투);
+Test_N(q툭, q툭, q툭, q툭, q툭);
+Test_N(q툮, q툮, q툮, q툮, q툮);
+Test_N(q툯, q툯, q툯, q툯, q툯);
+Test_N(q툰, q툰, q툰, q툰, q툰);
+Test_N(q툱, q툱, q툱, q툱, q툱);
+Test_N(q툲, q툲, q툲, q툲, q툲);
+Test_N(q툳, q툳, q툳, q툳, q툳);
+Test_N(q툴, q툴, q툴, q툴, q툴);
+Test_N(q툵, q툵, q툵, q툵, q툵);
+Test_N(q툶, q툶, q툶, q툶, q툶);
+Test_N(q툷, q툷, q툷, q툷, q툷);
+Test_N(q툸, q툸, q툸, q툸, q툸);
+Test_N(q툹, q툹, q툹, q툹, q툹);
+Test_N(q툺, q툺, q툺, q툺, q툺);
+Test_N(q툻, q툻, q툻, q툻, q툻);
+Test_N(q툼, q툼, q툼, q툼, q툼);
+Test_N(q툽, q툽, q툽, q툽, q툽);
+Test_N(q툾, q툾, q툾, q툾, q툾);
+Test_N(q툿, q툿, q툿, q툿, q툿);
+Test_N(q퉀, q퉀, q퉀, q퉀, q퉀);
+Test_N(q퉁, q퉁, q퉁, q퉁, q퉁);
+Test_N(q퉂, q퉂, q퉂, q퉂, q퉂);
+Test_N(q퉃, q퉃, q퉃, q퉃, q퉃);
+Test_N(q퉄, q퉄, q퉄, q퉄, q퉄);
+Test_N(q퉅, q퉅, q퉅, q퉅, q퉅);
+Test_N(q퉆, q퉆, q퉆, q퉆, q퉆);
+Test_N(q퉇, q퉇, q퉇, q퉇, q퉇);
+Test_N(q퉈, q퉈, q퉈, q퉈, q퉈);
+Test_N(q퉉, q퉉, q퉉, q퉉, q퉉);
+Test_N(q퉊, q퉊, q퉊, q퉊, q퉊);
+Test_N(q퉋, q퉋, q퉋, q퉋, q퉋);
+Test_N(q퉌, q퉌, q퉌, q퉌, q퉌);
+Test_N(q퉍, q퉍, q퉍, q퉍, q퉍);
+Test_N(q퉎, q퉎, q퉎, q퉎, q퉎);
+Test_N(q퉏, q퉏, q퉏, q퉏, q퉏);
+Test_N(q퉐, q퉐, q퉐, q퉐, q퉐);
+Test_N(q퉑, q퉑, q퉑, q퉑, q퉑);
+Test_N(q퉒, q퉒, q퉒, q퉒, q퉒);
+Test_N(q퉓, q퉓, q퉓, q퉓, q퉓);
+Test_N(q퉔, q퉔, q퉔, q퉔, q퉔);
+Test_N(q퉕, q퉕, q퉕, q퉕, q퉕);
+Test_N(q퉖, q퉖, q퉖, q퉖, q퉖);
+Test_N(q퉗, q퉗, q퉗, q퉗, q퉗);
+Test_N(q퉘, q퉘, q퉘, q퉘, q퉘);
+Test_N(q퉙, q퉙, q퉙, q퉙, q퉙);
+Test_N(q퉚, q퉚, q퉚, q퉚, q퉚);
+Test_N(q퉛, q퉛, q퉛, q퉛, q퉛);
+Test_N(q퉜, q퉜, q퉜, q퉜, q퉜);
+Test_N(q퉝, q퉝, q퉝, q퉝, q퉝);
+Test_N(q퉞, q퉞, q퉞, q퉞, q퉞);
+Test_N(q퉟, q퉟, q퉟, q퉟, q퉟);
+Test_N(q퉠, q퉠, q퉠, q퉠, q퉠);
+Test_N(q퉡, q퉡, q퉡, q퉡, q퉡);
+Test_N(q퉢, q퉢, q퉢, q퉢, q퉢);
+Test_N(q퉣, q퉣, q퉣, q퉣, q퉣);
+Test_N(q퉤, q퉤, q퉤, q퉤, q퉤);
+Test_N(q퉥, q퉥, q퉥, q퉥, q퉥);
+Test_N(q퉦, q퉦, q퉦, q퉦, q퉦);
+Test_N(q퉧, q퉧, q퉧, q퉧, q퉧);
+Test_N(q퉨, q퉨, q퉨, q퉨, q퉨);
+Test_N(q퉩, q퉩, q퉩, q퉩, q퉩);
+Test_N(q퉪, q퉪, q퉪, q퉪, q퉪);
+Test_N(q퉫, q퉫, q퉫, q퉫, q퉫);
+Test_N(q퉬, q퉬, q퉬, q퉬, q퉬);
+Test_N(q퉭, q퉭, q퉭, q퉭, q퉭);
+Test_N(q퉮, q퉮, q퉮, q퉮, q퉮);
+Test_N(q퉯, q퉯, q퉯, q퉯, q퉯);
+Test_N(q퉰, q퉰, q퉰, q퉰, q퉰);
+Test_N(q퉱, q퉱, q퉱, q퉱, q퉱);
+Test_N(q퉲, q퉲, q퉲, q퉲, q퉲);
+Test_N(q퉳, q퉳, q퉳, q퉳, q퉳);
+Test_N(q퉴, q퉴, q퉴, q퉴, q퉴);
+Test_N(q퉵, q퉵, q퉵, q퉵, q퉵);
+Test_N(q퉶, q퉶, q퉶, q퉶, q퉶);
+Test_N(q퉷, q퉷, q퉷, q퉷, q퉷);
+Test_N(q퉸, q퉸, q퉸, q퉸, q퉸);
+Test_N(q퉹, q퉹, q퉹, q퉹, q퉹);
+Test_N(q퉺, q퉺, q퉺, q퉺, q퉺);
+Test_N(q퉻, q퉻, q퉻, q퉻, q퉻);
+Test_N(q퉼, q퉼, q퉼, q퉼, q퉼);
+Test_N(q퉽, q퉽, q퉽, q퉽, q퉽);
+Test_N(q퉾, q퉾, q퉾, q퉾, q퉾);
+Test_N(q퉿, q퉿, q퉿, q퉿, q퉿);
+Test_N(q튀, q튀, q튀, q튀, q튀);
+Test_N(q튁, q튁, q튁, q튁, q튁);
+Test_N(q튂, q튂, q튂, q튂, q튂);
+Test_N(q튃, q튃, q튃, q튃, q튃);
+Test_N(q튄, q튄, q튄, q튄, q튄);
+Test_N(q튅, q튅, q튅, q튅, q튅);
+Test_N(q튆, q튆, q튆, q튆, q튆);
+Test_N(q튇, q튇, q튇, q튇, q튇);
+Test_N(q튈, q튈, q튈, q튈, q튈);
+Test_N(q튉, q튉, q튉, q튉, q튉);
+Test_N(q튊, q튊, q튊, q튊, q튊);
+Test_N(q튋, q튋, q튋, q튋, q튋);
+Test_N(q튌, q튌, q튌, q튌, q튌);
+Test_N(q튍, q튍, q튍, q튍, q튍);
+Test_N(q튎, q튎, q튎, q튎, q튎);
+Test_N(q튏, q튏, q튏, q튏, q튏);
+Test_N(q튐, q튐, q튐, q튐, q튐);
+Test_N(q튑, q튑, q튑, q튑, q튑);
+Test_N(q튒, q튒, q튒, q튒, q튒);
+Test_N(q튓, q튓, q튓, q튓, q튓);
+Test_N(q튔, q튔, q튔, q튔, q튔);
+Test_N(q튕, q튕, q튕, q튕, q튕);
+Test_N(q튖, q튖, q튖, q튖, q튖);
+Test_N(q튗, q튗, q튗, q튗, q튗);
+Test_N(q튘, q튘, q튘, q튘, q튘);
+Test_N(q튙, q튙, q튙, q튙, q튙);
+Test_N(q튚, q튚, q튚, q튚, q튚);
+Test_N(q튛, q튛, q튛, q튛, q튛);
+Test_N(q튜, q튜, q튜, q튜, q튜);
+Test_N(q튝, q튝, q튝, q튝, q튝);
+Test_N(q튞, q튞, q튞, q튞, q튞);
+Test_N(q튟, q튟, q튟, q튟, q튟);
+Test_N(q튠, q튠, q튠, q튠, q튠);
+Test_N(q튡, q튡, q튡, q튡, q튡);
+Test_N(q튢, q튢, q튢, q튢, q튢);
+Test_N(q튣, q튣, q튣, q튣, q튣);
+Test_N(q튤, q튤, q튤, q튤, q튤);
+Test_N(q튥, q튥, q튥, q튥, q튥);
+Test_N(q튦, q튦, q튦, q튦, q튦);
+Test_N(q튧, q튧, q튧, q튧, q튧);
+Test_N(q튨, q튨, q튨, q튨, q튨);
+Test_N(q튩, q튩, q튩, q튩, q튩);
+Test_N(q튪, q튪, q튪, q튪, q튪);
+Test_N(q튫, q튫, q튫, q튫, q튫);
+Test_N(q튬, q튬, q튬, q튬, q튬);
+Test_N(q튭, q튭, q튭, q튭, q튭);
+Test_N(q튮, q튮, q튮, q튮, q튮);
+Test_N(q튯, q튯, q튯, q튯, q튯);
+Test_N(q튰, q튰, q튰, q튰, q튰);
+Test_N(q튱, q튱, q튱, q튱, q튱);
+Test_N(q튲, q튲, q튲, q튲, q튲);
+Test_N(q튳, q튳, q튳, q튳, q튳);
+Test_N(q튴, q튴, q튴, q튴, q튴);
+Test_N(q튵, q튵, q튵, q튵, q튵);
+Test_N(q튶, q튶, q튶, q튶, q튶);
+Test_N(q튷, q튷, q튷, q튷, q튷);
+Test_N(q트, q트, q트, q트, q트);
+Test_N(q특, q특, q특, q특, q특);
+Test_N(q튺, q튺, q튺, q튺, q튺);
+Test_N(q튻, q튻, q튻, q튻, q튻);
+Test_N(q튼, q튼, q튼, q튼, q튼);
+Test_N(q튽, q튽, q튽, q튽, q튽);
+Test_N(q튾, q튾, q튾, q튾, q튾);
+Test_N(q튿, q튿, q튿, q튿, q튿);
+Test_N(q틀, q틀, q틀, q틀, q틀);
+Test_N(q틁, q틁, q틁, q틁, q틁);
+Test_N(q틂, q틂, q틂, q틂, q틂);
+Test_N(q틃, q틃, q틃, q틃, q틃);
+Test_N(q틄, q틄, q틄, q틄, q틄);
+Test_N(q틅, q틅, q틅, q틅, q틅);
+Test_N(q틆, q틆, q틆, q틆, q틆);
+Test_N(q틇, q틇, q틇, q틇, q틇);
+Test_N(q틈, q틈, q틈, q틈, q틈);
+Test_N(q틉, q틉, q틉, q틉, q틉);
+Test_N(q틊, q틊, q틊, q틊, q틊);
+Test_N(q틋, q틋, q틋, q틋, q틋);
+Test_N(q틌, q틌, q틌, q틌, q틌);
+Test_N(q틍, q틍, q틍, q틍, q틍);
+Test_N(q틎, q틎, q틎, q틎, q틎);
+Test_N(q틏, q틏, q틏, q틏, q틏);
+Test_N(q틐, q틐, q틐, q틐, q틐);
+Test_N(q틑, q틑, q틑, q틑, q틑);
+Test_N(q틒, q틒, q틒, q틒, q틒);
+Test_N(q틓, q틓, q틓, q틓, q틓);
+Test_N(q틔, q틔, q틔, q틔, q틔);
+Test_N(q틕, q틕, q틕, q틕, q틕);
+Test_N(q틖, q틖, q틖, q틖, q틖);
+Test_N(q틗, q틗, q틗, q틗, q틗);
+Test_N(q틘, q틘, q틘, q틘, q틘);
+Test_N(q틙, q틙, q틙, q틙, q틙);
+Test_N(q틚, q틚, q틚, q틚, q틚);
+Test_N(q틛, q틛, q틛, q틛, q틛);
+Test_N(q틜, q틜, q틜, q틜, q틜);
+Test_N(q틝, q틝, q틝, q틝, q틝);
+Test_N(q틞, q틞, q틞, q틞, q틞);
+Test_N(q틟, q틟, q틟, q틟, q틟);
+Test_N(q틠, q틠, q틠, q틠, q틠);
+Test_N(q틡, q틡, q틡, q틡, q틡);
+Test_N(q틢, q틢, q틢, q틢, q틢);
+Test_N(q틣, q틣, q틣, q틣, q틣);
+Test_N(q틤, q틤, q틤, q틤, q틤);
+Test_N(q틥, q틥, q틥, q틥, q틥);
+Test_N(q틦, q틦, q틦, q틦, q틦);
+Test_N(q틧, q틧, q틧, q틧, q틧);
+Test_N(q틨, q틨, q틨, q틨, q틨);
+Test_N(q틩, q틩, q틩, q틩, q틩);
+Test_N(q틪, q틪, q틪, q틪, q틪);
+Test_N(q틫, q틫, q틫, q틫, q틫);
+Test_N(q틬, q틬, q틬, q틬, q틬);
+Test_N(q틭, q틭, q틭, q틭, q틭);
+Test_N(q틮, q틮, q틮, q틮, q틮);
+Test_N(q틯, q틯, q틯, q틯, q틯);
+Test_N(q티, q티, q티, q티, q티);
+Test_N(q틱, q틱, q틱, q틱, q틱);
+Test_N(q틲, q틲, q틲, q틲, q틲);
+Test_N(q틳, q틳, q틳, q틳, q틳);
+Test_N(q틴, q틴, q틴, q틴, q틴);
+Test_N(q틵, q틵, q틵, q틵, q틵);
+Test_N(q틶, q틶, q틶, q틶, q틶);
+Test_N(q틷, q틷, q틷, q틷, q틷);
+Test_N(q틸, q틸, q틸, q틸, q틸);
+Test_N(q틹, q틹, q틹, q틹, q틹);
+Test_N(q틺, q틺, q틺, q틺, q틺);
+Test_N(q틻, q틻, q틻, q틻, q틻);
+Test_N(q틼, q틼, q틼, q틼, q틼);
+Test_N(q틽, q틽, q틽, q틽, q틽);
+Test_N(q틾, q틾, q틾, q틾, q틾);
+Test_N(q틿, q틿, q틿, q틿, q틿);
+Test_N(q팀, q팀, q팀, q팀, q팀);
+Test_N(q팁, q팁, q팁, q팁, q팁);
+Test_N(q팂, q팂, q팂, q팂, q팂);
+Test_N(q팃, q팃, q팃, q팃, q팃);
+Test_N(q팄, q팄, q팄, q팄, q팄);
+Test_N(q팅, q팅, q팅, q팅, q팅);
+Test_N(q팆, q팆, q팆, q팆, q팆);
+Test_N(q팇, q팇, q팇, q팇, q팇);
+Test_N(q팈, q팈, q팈, q팈, q팈);
+Test_N(q팉, q팉, q팉, q팉, q팉);
+Test_N(q팊, q팊, q팊, q팊, q팊);
+Test_N(q팋, q팋, q팋, q팋, q팋);
+Test_N(q파, q파, q파, q파, q파);
+Test_N(q팍, q팍, q팍, q팍, q팍);
+Test_N(q팎, q팎, q팎, q팎, q팎);
+Test_N(q팏, q팏, q팏, q팏, q팏);
+Test_N(q판, q판, q판, q판, q판);
+Test_N(q팑, q팑, q팑, q팑, q팑);
+Test_N(q팒, q팒, q팒, q팒, q팒);
+Test_N(q팓, q팓, q팓, q팓, q팓);
+Test_N(q팔, q팔, q팔, q팔, q팔);
+Test_N(q팕, q팕, q팕, q팕, q팕);
+Test_N(q팖, q팖, q팖, q팖, q팖);
+Test_N(q팗, q팗, q팗, q팗, q팗);
+Test_N(q팘, q팘, q팘, q팘, q팘);
+Test_N(q팙, q팙, q팙, q팙, q팙);
+Test_N(q팚, q팚, q팚, q팚, q팚);
+Test_N(q팛, q팛, q팛, q팛, q팛);
+Test_N(q팜, q팜, q팜, q팜, q팜);
+Test_N(q팝, q팝, q팝, q팝, q팝);
+Test_N(q팞, q팞, q팞, q팞, q팞);
+Test_N(q팟, q팟, q팟, q팟, q팟);
+Test_N(q팠, q팠, q팠, q팠, q팠);
+Test_N(q팡, q팡, q팡, q팡, q팡);
+Test_N(q팢, q팢, q팢, q팢, q팢);
+Test_N(q팣, q팣, q팣, q팣, q팣);
+Test_N(q팤, q팤, q팤, q팤, q팤);
+Test_N(q팥, q팥, q팥, q팥, q팥);
+Test_N(q팦, q팦, q팦, q팦, q팦);
+Test_N(q팧, q팧, q팧, q팧, q팧);
+Test_N(q패, q패, q패, q패, q패);
+Test_N(q팩, q팩, q팩, q팩, q팩);
+Test_N(q팪, q팪, q팪, q팪, q팪);
+Test_N(q팫, q팫, q팫, q팫, q팫);
+Test_N(q팬, q팬, q팬, q팬, q팬);
+Test_N(q팭, q팭, q팭, q팭, q팭);
+Test_N(q팮, q팮, q팮, q팮, q팮);
+Test_N(q팯, q팯, q팯, q팯, q팯);
+Test_N(q팰, q팰, q팰, q팰, q팰);
+Test_N(q팱, q팱, q팱, q팱, q팱);
+Test_N(q팲, q팲, q팲, q팲, q팲);
+Test_N(q팳, q팳, q팳, q팳, q팳);
+Test_N(q팴, q팴, q팴, q팴, q팴);
+Test_N(q팵, q팵, q팵, q팵, q팵);
+Test_N(q팶, q팶, q팶, q팶, q팶);
+Test_N(q팷, q팷, q팷, q팷, q팷);
+Test_N(q팸, q팸, q팸, q팸, q팸);
+Test_N(q팹, q팹, q팹, q팹, q팹);
+Test_N(q팺, q팺, q팺, q팺, q팺);
+Test_N(q팻, q팻, q팻, q팻, q팻);
+Test_N(q팼, q팼, q팼, q팼, q팼);
+Test_N(q팽, q팽, q팽, q팽, q팽);
+Test_N(q팾, q팾, q팾, q팾, q팾);
+Test_N(q팿, q팿, q팿, q팿, q팿);
+Test_N(q퍀, q퍀, q퍀, q퍀, q퍀);
+Test_N(q퍁, q퍁, q퍁, q퍁, q퍁);
+Test_N(q퍂, q퍂, q퍂, q퍂, q퍂);
+Test_N(q퍃, q퍃, q퍃, q퍃, q퍃);
+Test_N(q퍄, q퍄, q퍄, q퍄, q퍄);
+Test_N(q퍅, q퍅, q퍅, q퍅, q퍅);
+Test_N(q퍆, q퍆, q퍆, q퍆, q퍆);
+Test_N(q퍇, q퍇, q퍇, q퍇, q퍇);
+Test_N(q퍈, q퍈, q퍈, q퍈, q퍈);
+Test_N(q퍉, q퍉, q퍉, q퍉, q퍉);
+Test_N(q퍊, q퍊, q퍊, q퍊, q퍊);
+Test_N(q퍋, q퍋, q퍋, q퍋, q퍋);
+Test_N(q퍌, q퍌, q퍌, q퍌, q퍌);
+Test_N(q퍍, q퍍, q퍍, q퍍, q퍍);
+Test_N(q퍎, q퍎, q퍎, q퍎, q퍎);
+Test_N(q퍏, q퍏, q퍏, q퍏, q퍏);
+Test_N(q퍐, q퍐, q퍐, q퍐, q퍐);
+Test_N(q퍑, q퍑, q퍑, q퍑, q퍑);
+Test_N(q퍒, q퍒, q퍒, q퍒, q퍒);
+Test_N(q퍓, q퍓, q퍓, q퍓, q퍓);
+Test_N(q퍔, q퍔, q퍔, q퍔, q퍔);
+Test_N(q퍕, q퍕, q퍕, q퍕, q퍕);
+Test_N(q퍖, q퍖, q퍖, q퍖, q퍖);
+Test_N(q퍗, q퍗, q퍗, q퍗, q퍗);
+Test_N(q퍘, q퍘, q퍘, q퍘, q퍘);
+Test_N(q퍙, q퍙, q퍙, q퍙, q퍙);
+Test_N(q퍚, q퍚, q퍚, q퍚, q퍚);
+Test_N(q퍛, q퍛, q퍛, q퍛, q퍛);
+Test_N(q퍜, q퍜, q퍜, q퍜, q퍜);
+Test_N(q퍝, q퍝, q퍝, q퍝, q퍝);
+Test_N(q퍞, q퍞, q퍞, q퍞, q퍞);
+Test_N(q퍟, q퍟, q퍟, q퍟, q퍟);
+Test_N(q퍠, q퍠, q퍠, q퍠, q퍠);
+Test_N(q퍡, q퍡, q퍡, q퍡, q퍡);
+Test_N(q퍢, q퍢, q퍢, q퍢, q퍢);
+Test_N(q퍣, q퍣, q퍣, q퍣, q퍣);
+Test_N(q퍤, q퍤, q퍤, q퍤, q퍤);
+Test_N(q퍥, q퍥, q퍥, q퍥, q퍥);
+Test_N(q퍦, q퍦, q퍦, q퍦, q퍦);
+Test_N(q퍧, q퍧, q퍧, q퍧, q퍧);
+Test_N(q퍨, q퍨, q퍨, q퍨, q퍨);
+Test_N(q퍩, q퍩, q퍩, q퍩, q퍩);
+Test_N(q퍪, q퍪, q퍪, q퍪, q퍪);
+Test_N(q퍫, q퍫, q퍫, q퍫, q퍫);
+Test_N(q퍬, q퍬, q퍬, q퍬, q퍬);
+Test_N(q퍭, q퍭, q퍭, q퍭, q퍭);
+Test_N(q퍮, q퍮, q퍮, q퍮, q퍮);
+Test_N(q퍯, q퍯, q퍯, q퍯, q퍯);
+Test_N(q퍰, q퍰, q퍰, q퍰, q퍰);
+Test_N(q퍱, q퍱, q퍱, q퍱, q퍱);
+Test_N(q퍲, q퍲, q퍲, q퍲, q퍲);
+Test_N(q퍳, q퍳, q퍳, q퍳, q퍳);
+Test_N(q퍴, q퍴, q퍴, q퍴, q퍴);
+Test_N(q퍵, q퍵, q퍵, q퍵, q퍵);
+Test_N(q퍶, q퍶, q퍶, q퍶, q퍶);
+Test_N(q퍷, q퍷, q퍷, q퍷, q퍷);
+Test_N(q퍸, q퍸, q퍸, q퍸, q퍸);
+Test_N(q퍹, q퍹, q퍹, q퍹, q퍹);
+Test_N(q퍺, q퍺, q퍺, q퍺, q퍺);
+Test_N(q퍻, q퍻, q퍻, q퍻, q퍻);
+Test_N(q퍼, q퍼, q퍼, q퍼, q퍼);
+Test_N(q퍽, q퍽, q퍽, q퍽, q퍽);
+Test_N(q퍾, q퍾, q퍾, q퍾, q퍾);
+Test_N(q퍿, q퍿, q퍿, q퍿, q퍿);
+Test_N(q펀, q펀, q펀, q펀, q펀);
+Test_N(q펁, q펁, q펁, q펁, q펁);
+Test_N(q펂, q펂, q펂, q펂, q펂);
+Test_N(q펃, q펃, q펃, q펃, q펃);
+Test_N(q펄, q펄, q펄, q펄, q펄);
+Test_N(q펅, q펅, q펅, q펅, q펅);
+Test_N(q펆, q펆, q펆, q펆, q펆);
+Test_N(q펇, q펇, q펇, q펇, q펇);
+Test_N(q펈, q펈, q펈, q펈, q펈);
+Test_N(q펉, q펉, q펉, q펉, q펉);
+Test_N(q펊, q펊, q펊, q펊, q펊);
+Test_N(q펋, q펋, q펋, q펋, q펋);
+Test_N(q펌, q펌, q펌, q펌, q펌);
+Test_N(q펍, q펍, q펍, q펍, q펍);
+Test_N(q펎, q펎, q펎, q펎, q펎);
+Test_N(q펏, q펏, q펏, q펏, q펏);
+Test_N(q펐, q펐, q펐, q펐, q펐);
+Test_N(q펑, q펑, q펑, q펑, q펑);
+Test_N(q펒, q펒, q펒, q펒, q펒);
+Test_N(q펓, q펓, q펓, q펓, q펓);
+Test_N(q펔, q펔, q펔, q펔, q펔);
+Test_N(q펕, q펕, q펕, q펕, q펕);
+Test_N(q펖, q펖, q펖, q펖, q펖);
+Test_N(q펗, q펗, q펗, q펗, q펗);
+Test_N(q페, q페, q페, q페, q페);
+Test_N(q펙, q펙, q펙, q펙, q펙);
+Test_N(q펚, q펚, q펚, q펚, q펚);
+Test_N(q펛, q펛, q펛, q펛, q펛);
+Test_N(q펜, q펜, q펜, q펜, q펜);
+Test_N(q펝, q펝, q펝, q펝, q펝);
+Test_N(q펞, q펞, q펞, q펞, q펞);
+Test_N(q펟, q펟, q펟, q펟, q펟);
+Test_N(q펠, q펠, q펠, q펠, q펠);
+Test_N(q펡, q펡, q펡, q펡, q펡);
+Test_N(q펢, q펢, q펢, q펢, q펢);
+Test_N(q펣, q펣, q펣, q펣, q펣);
+Test_N(q펤, q펤, q펤, q펤, q펤);
+Test_N(q펥, q펥, q펥, q펥, q펥);
+Test_N(q펦, q펦, q펦, q펦, q펦);
+Test_N(q펧, q펧, q펧, q펧, q펧);
+Test_N(q펨, q펨, q펨, q펨, q펨);
+Test_N(q펩, q펩, q펩, q펩, q펩);
+Test_N(q펪, q펪, q펪, q펪, q펪);
+Test_N(q펫, q펫, q펫, q펫, q펫);
+Test_N(q펬, q펬, q펬, q펬, q펬);
+Test_N(q펭, q펭, q펭, q펭, q펭);
+Test_N(q펮, q펮, q펮, q펮, q펮);
+Test_N(q펯, q펯, q펯, q펯, q펯);
+Test_N(q펰, q펰, q펰, q펰, q펰);
+Test_N(q펱, q펱, q펱, q펱, q펱);
+Test_N(q펲, q펲, q펲, q펲, q펲);
+Test_N(q펳, q펳, q펳, q펳, q펳);
+Test_N(q펴, q펴, q펴, q펴, q펴);
+Test_N(q펵, q펵, q펵, q펵, q펵);
+Test_N(q펶, q펶, q펶, q펶, q펶);
+Test_N(q펷, q펷, q펷, q펷, q펷);
+Test_N(q편, q편, q편, q편, q편);
+Test_N(q펹, q펹, q펹, q펹, q펹);
+Test_N(q펺, q펺, q펺, q펺, q펺);
+Test_N(q펻, q펻, q펻, q펻, q펻);
+Test_N(q펼, q펼, q펼, q펼, q펼);
+Test_N(q펽, q펽, q펽, q펽, q펽);
+Test_N(q펾, q펾, q펾, q펾, q펾);
+Test_N(q펿, q펿, q펿, q펿, q펿);
+Test_N(q폀, q폀, q폀, q폀, q폀);
+Test_N(q폁, q폁, q폁, q폁, q폁);
+Test_N(q폂, q폂, q폂, q폂, q폂);
+Test_N(q폃, q폃, q폃, q폃, q폃);
+Test_N(q폄, q폄, q폄, q폄, q폄);
+Test_N(q폅, q폅, q폅, q폅, q폅);
+Test_N(q폆, q폆, q폆, q폆, q폆);
+Test_N(q폇, q폇, q폇, q폇, q폇);
+Test_N(q폈, q폈, q폈, q폈, q폈);
+Test_N(q평, q평, q평, q평, q평);
+Test_N(q폊, q폊, q폊, q폊, q폊);
+Test_N(q폋, q폋, q폋, q폋, q폋);
+Test_N(q폌, q폌, q폌, q폌, q폌);
+Test_N(q폍, q폍, q폍, q폍, q폍);
+Test_N(q폎, q폎, q폎, q폎, q폎);
+Test_N(q폏, q폏, q폏, q폏, q폏);
+Test_N(q폐, q폐, q폐, q폐, q폐);
+Test_N(q폑, q폑, q폑, q폑, q폑);
+Test_N(q폒, q폒, q폒, q폒, q폒);
+Test_N(q폓, q폓, q폓, q폓, q폓);
+Test_N(q폔, q폔, q폔, q폔, q폔);
+Test_N(q폕, q폕, q폕, q폕, q폕);
+Test_N(q폖, q폖, q폖, q폖, q폖);
+Test_N(q폗, q폗, q폗, q폗, q폗);
+Test_N(q폘, q폘, q폘, q폘, q폘);
+Test_N(q폙, q폙, q폙, q폙, q폙);
+Test_N(q폚, q폚, q폚, q폚, q폚);
+Test_N(q폛, q폛, q폛, q폛, q폛);
+Test_N(q폜, q폜, q폜, q폜, q폜);
+Test_N(q폝, q폝, q폝, q폝, q폝);
+Test_N(q폞, q폞, q폞, q폞, q폞);
+Test_N(q폟, q폟, q폟, q폟, q폟);
+Test_N(q폠, q폠, q폠, q폠, q폠);
+Test_N(q폡, q폡, q폡, q폡, q폡);
+Test_N(q폢, q폢, q폢, q폢, q폢);
+Test_N(q폣, q폣, q폣, q폣, q폣);
+Test_N(q폤, q폤, q폤, q폤, q폤);
+Test_N(q폥, q폥, q폥, q폥, q폥);
+Test_N(q폦, q폦, q폦, q폦, q폦);
+Test_N(q폧, q폧, q폧, q폧, q폧);
+Test_N(q폨, q폨, q폨, q폨, q폨);
+Test_N(q폩, q폩, q폩, q폩, q폩);
+Test_N(q폪, q폪, q폪, q폪, q폪);
+Test_N(q폫, q폫, q폫, q폫, q폫);
+Test_N(q포, q포, q포, q포, q포);
+Test_N(q폭, q폭, q폭, q폭, q폭);
+Test_N(q폮, q폮, q폮, q폮, q폮);
+Test_N(q폯, q폯, q폯, q폯, q폯);
+Test_N(q폰, q폰, q폰, q폰, q폰);
+Test_N(q폱, q폱, q폱, q폱, q폱);
+Test_N(q폲, q폲, q폲, q폲, q폲);
+Test_N(q폳, q폳, q폳, q폳, q폳);
+Test_N(q폴, q폴, q폴, q폴, q폴);
+Test_N(q폵, q폵, q폵, q폵, q폵);
+Test_N(q폶, q폶, q폶, q폶, q폶);
+Test_N(q폷, q폷, q폷, q폷, q폷);
+Test_N(q폸, q폸, q폸, q폸, q폸);
+Test_N(q폹, q폹, q폹, q폹, q폹);
+Test_N(q폺, q폺, q폺, q폺, q폺);
+Test_N(q폻, q폻, q폻, q폻, q폻);
+Test_N(q폼, q폼, q폼, q폼, q폼);
+Test_N(q폽, q폽, q폽, q폽, q폽);
+Test_N(q폾, q폾, q폾, q폾, q폾);
+Test_N(q폿, q폿, q폿, q폿, q폿);
+Test_N(q퐀, q퐀, q퐀, q퐀, q퐀);
+Test_N(q퐁, q퐁, q퐁, q퐁, q퐁);
+Test_N(q퐂, q퐂, q퐂, q퐂, q퐂);
+Test_N(q퐃, q퐃, q퐃, q퐃, q퐃);
+Test_N(q퐄, q퐄, q퐄, q퐄, q퐄);
+Test_N(q퐅, q퐅, q퐅, q퐅, q퐅);
+Test_N(q퐆, q퐆, q퐆, q퐆, q퐆);
+Test_N(q퐇, q퐇, q퐇, q퐇, q퐇);
+Test_N(q퐈, q퐈, q퐈, q퐈, q퐈);
+Test_N(q퐉, q퐉, q퐉, q퐉, q퐉);
+Test_N(q퐊, q퐊, q퐊, q퐊, q퐊);
+Test_N(q퐋, q퐋, q퐋, q퐋, q퐋);
+Test_N(q퐌, q퐌, q퐌, q퐌, q퐌);
+Test_N(q퐍, q퐍, q퐍, q퐍, q퐍);
+Test_N(q퐎, q퐎, q퐎, q퐎, q퐎);
+Test_N(q퐏, q퐏, q퐏, q퐏, q퐏);
+Test_N(q퐐, q퐐, q퐐, q퐐, q퐐);
+Test_N(q퐑, q퐑, q퐑, q퐑, q퐑);
+Test_N(q퐒, q퐒, q퐒, q퐒, q퐒);
+Test_N(q퐓, q퐓, q퐓, q퐓, q퐓);
+Test_N(q퐔, q퐔, q퐔, q퐔, q퐔);
+Test_N(q퐕, q퐕, q퐕, q퐕, q퐕);
+Test_N(q퐖, q퐖, q퐖, q퐖, q퐖);
+Test_N(q퐗, q퐗, q퐗, q퐗, q퐗);
+Test_N(q퐘, q퐘, q퐘, q퐘, q퐘);
+Test_N(q퐙, q퐙, q퐙, q퐙, q퐙);
+Test_N(q퐚, q퐚, q퐚, q퐚, q퐚);
+Test_N(q퐛, q퐛, q퐛, q퐛, q퐛);
+Test_N(q퐜, q퐜, q퐜, q퐜, q퐜);
+Test_N(q퐝, q퐝, q퐝, q퐝, q퐝);
+Test_N(q퐞, q퐞, q퐞, q퐞, q퐞);
+Test_N(q퐟, q퐟, q퐟, q퐟, q퐟);
+Test_N(q퐠, q퐠, q퐠, q퐠, q퐠);
+Test_N(q퐡, q퐡, q퐡, q퐡, q퐡);
+Test_N(q퐢, q퐢, q퐢, q퐢, q퐢);
+Test_N(q퐣, q퐣, q퐣, q퐣, q퐣);
+Test_N(q퐤, q퐤, q퐤, q퐤, q퐤);
+Test_N(q퐥, q퐥, q퐥, q퐥, q퐥);
+Test_N(q퐦, q퐦, q퐦, q퐦, q퐦);
+Test_N(q퐧, q퐧, q퐧, q퐧, q퐧);
+Test_N(q퐨, q퐨, q퐨, q퐨, q퐨);
+Test_N(q퐩, q퐩, q퐩, q퐩, q퐩);
+Test_N(q퐪, q퐪, q퐪, q퐪, q퐪);
+Test_N(q퐫, q퐫, q퐫, q퐫, q퐫);
+Test_N(q퐬, q퐬, q퐬, q퐬, q퐬);
+Test_N(q퐭, q퐭, q퐭, q퐭, q퐭);
+Test_N(q퐮, q퐮, q퐮, q퐮, q퐮);
+Test_N(q퐯, q퐯, q퐯, q퐯, q퐯);
+Test_N(q퐰, q퐰, q퐰, q퐰, q퐰);
+Test_N(q퐱, q퐱, q퐱, q퐱, q퐱);
+Test_N(q퐲, q퐲, q퐲, q퐲, q퐲);
+Test_N(q퐳, q퐳, q퐳, q퐳, q퐳);
+Test_N(q퐴, q퐴, q퐴, q퐴, q퐴);
+Test_N(q퐵, q퐵, q퐵, q퐵, q퐵);
+Test_N(q퐶, q퐶, q퐶, q퐶, q퐶);
+Test_N(q퐷, q퐷, q퐷, q퐷, q퐷);
+Test_N(q퐸, q퐸, q퐸, q퐸, q퐸);
+Test_N(q퐹, q퐹, q퐹, q퐹, q퐹);
+Test_N(q퐺, q퐺, q퐺, q퐺, q퐺);
+Test_N(q퐻, q퐻, q퐻, q퐻, q퐻);
+Test_N(q퐼, q퐼, q퐼, q퐼, q퐼);
+Test_N(q퐽, q퐽, q퐽, q퐽, q퐽);
+Test_N(q퐾, q퐾, q퐾, q퐾, q퐾);
+Test_N(q퐿, q퐿, q퐿, q퐿, q퐿);
+Test_N(q푀, q푀, q푀, q푀, q푀);
+Test_N(q푁, q푁, q푁, q푁, q푁);
+Test_N(q푂, q푂, q푂, q푂, q푂);
+Test_N(q푃, q푃, q푃, q푃, q푃);
+Test_N(q푄, q푄, q푄, q푄, q푄);
+Test_N(q푅, q푅, q푅, q푅, q푅);
+Test_N(q푆, q푆, q푆, q푆, q푆);
+Test_N(q푇, q푇, q푇, q푇, q푇);
+Test_N(q푈, q푈, q푈, q푈, q푈);
+Test_N(q푉, q푉, q푉, q푉, q푉);
+Test_N(q푊, q푊, q푊, q푊, q푊);
+Test_N(q푋, q푋, q푋, q푋, q푋);
+Test_N(q푌, q푌, q푌, q푌, q푌);
+Test_N(q푍, q푍, q푍, q푍, q푍);
+Test_N(q푎, q푎, q푎, q푎, q푎);
+Test_N(q푏, q푏, q푏, q푏, q푏);
+Test_N(q푐, q푐, q푐, q푐, q푐);
+Test_N(q푑, q푑, q푑, q푑, q푑);
+Test_N(q푒, q푒, q푒, q푒, q푒);
+Test_N(q푓, q푓, q푓, q푓, q푓);
+Test_N(q푔, q푔, q푔, q푔, q푔);
+Test_N(q푕, q푕, q푕, q푕, q푕);
+Test_N(q푖, q푖, q푖, q푖, q푖);
+Test_N(q푗, q푗, q푗, q푗, q푗);
+Test_N(q푘, q푘, q푘, q푘, q푘);
+Test_N(q푙, q푙, q푙, q푙, q푙);
+Test_N(q푚, q푚, q푚, q푚, q푚);
+Test_N(q푛, q푛, q푛, q푛, q푛);
+Test_N(q표, q표, q표, q표, q표);
+Test_N(q푝, q푝, q푝, q푝, q푝);
+Test_N(q푞, q푞, q푞, q푞, q푞);
+Test_N(q푟, q푟, q푟, q푟, q푟);
+Test_N(q푠, q푠, q푠, q푠, q푠);
+Test_N(q푡, q푡, q푡, q푡, q푡);
+Test_N(q푢, q푢, q푢, q푢, q푢);
+Test_N(q푣, q푣, q푣, q푣, q푣);
+Test_N(q푤, q푤, q푤, q푤, q푤);
+Test_N(q푥, q푥, q푥, q푥, q푥);
+Test_N(q푦, q푦, q푦, q푦, q푦);
+Test_N(q푧, q푧, q푧, q푧, q푧);
+Test_N(q푨, q푨, q푨, q푨, q푨);
+Test_N(q푩, q푩, q푩, q푩, q푩);
+Test_N(q푪, q푪, q푪, q푪, q푪);
+Test_N(q푫, q푫, q푫, q푫, q푫);
+Test_N(q푬, q푬, q푬, q푬, q푬);
+Test_N(q푭, q푭, q푭, q푭, q푭);
+Test_N(q푮, q푮, q푮, q푮, q푮);
+Test_N(q푯, q푯, q푯, q푯, q푯);
+Test_N(q푰, q푰, q푰, q푰, q푰);
+Test_N(q푱, q푱, q푱, q푱, q푱);
+Test_N(q푲, q푲, q푲, q푲, q푲);
+Test_N(q푳, q푳, q푳, q푳, q푳);
+Test_N(q푴, q푴, q푴, q푴, q푴);
+Test_N(q푵, q푵, q푵, q푵, q푵);
+Test_N(q푶, q푶, q푶, q푶, q푶);
+Test_N(q푷, q푷, q푷, q푷, q푷);
+Test_N(q푸, q푸, q푸, q푸, q푸);
+Test_N(q푹, q푹, q푹, q푹, q푹);
+Test_N(q푺, q푺, q푺, q푺, q푺);
+Test_N(q푻, q푻, q푻, q푻, q푻);
+Test_N(q푼, q푼, q푼, q푼, q푼);
+Test_N(q푽, q푽, q푽, q푽, q푽);
+Test_N(q푾, q푾, q푾, q푾, q푾);
+Test_N(q푿, q푿, q푿, q푿, q푿);
+Test_N(q풀, q풀, q풀, q풀, q풀);
+Test_N(q풁, q풁, q풁, q풁, q풁);
+Test_N(q풂, q풂, q풂, q풂, q풂);
+Test_N(q풃, q풃, q풃, q풃, q풃);
+Test_N(q풄, q풄, q풄, q풄, q풄);
+Test_N(q풅, q풅, q풅, q풅, q풅);
+Test_N(q풆, q풆, q풆, q풆, q풆);
+Test_N(q풇, q풇, q풇, q풇, q풇);
+Test_N(q품, q품, q품, q품, q품);
+Test_N(q풉, q풉, q풉, q풉, q풉);
+Test_N(q풊, q풊, q풊, q풊, q풊);
+Test_N(q풋, q풋, q풋, q풋, q풋);
+Test_N(q풌, q풌, q풌, q풌, q풌);
+Test_N(q풍, q풍, q풍, q풍, q풍);
+Test_N(q풎, q풎, q풎, q풎, q풎);
+Test_N(q풏, q풏, q풏, q풏, q풏);
+Test_N(q풐, q풐, q풐, q풐, q풐);
+Test_N(q풑, q풑, q풑, q풑, q풑);
+Test_N(q풒, q풒, q풒, q풒, q풒);
+Test_N(q풓, q풓, q풓, q풓, q풓);
+Test_N(q풔, q풔, q풔, q풔, q풔);
+Test_N(q풕, q풕, q풕, q풕, q풕);
+Test_N(q풖, q풖, q풖, q풖, q풖);
+Test_N(q풗, q풗, q풗, q풗, q풗);
+Test_N(q풘, q풘, q풘, q풘, q풘);
+Test_N(q풙, q풙, q풙, q풙, q풙);
+Test_N(q풚, q풚, q풚, q풚, q풚);
+Test_N(q풛, q풛, q풛, q풛, q풛);
+Test_N(q풜, q풜, q풜, q풜, q풜);
+Test_N(q풝, q풝, q풝, q풝, q풝);
+Test_N(q풞, q풞, q풞, q풞, q풞);
+Test_N(q풟, q풟, q풟, q풟, q풟);
+Test_N(q풠, q풠, q풠, q풠, q풠);
+Test_N(q풡, q풡, q풡, q풡, q풡);
+Test_N(q풢, q풢, q풢, q풢, q풢);
+Test_N(q풣, q풣, q풣, q풣, q풣);
+Test_N(q풤, q풤, q풤, q풤, q풤);
+Test_N(q풥, q풥, q풥, q풥, q풥);
+Test_N(q풦, q풦, q풦, q풦, q풦);
+Test_N(q풧, q풧, q풧, q풧, q풧);
+Test_N(q풨, q풨, q풨, q풨, q풨);
+Test_N(q풩, q풩, q풩, q풩, q풩);
+Test_N(q풪, q풪, q풪, q풪, q풪);
+Test_N(q풫, q풫, q풫, q풫, q풫);
+Test_N(q풬, q풬, q풬, q풬, q풬);
+Test_N(q풭, q풭, q풭, q풭, q풭);
+Test_N(q풮, q풮, q풮, q풮, q풮);
+Test_N(q풯, q풯, q풯, q풯, q풯);
+Test_N(q풰, q풰, q풰, q풰, q풰);
+Test_N(q풱, q풱, q풱, q풱, q풱);
+Test_N(q풲, q풲, q풲, q풲, q풲);
+Test_N(q풳, q풳, q풳, q풳, q풳);
+Test_N(q풴, q풴, q풴, q풴, q풴);
+Test_N(q풵, q풵, q풵, q풵, q풵);
+Test_N(q풶, q풶, q풶, q풶, q풶);
+Test_N(q풷, q풷, q풷, q풷, q풷);
+Test_N(q풸, q풸, q풸, q풸, q풸);
+Test_N(q풹, q풹, q풹, q풹, q풹);
+Test_N(q풺, q풺, q풺, q풺, q풺);
+Test_N(q풻, q풻, q풻, q풻, q풻);
+Test_N(q풼, q풼, q풼, q풼, q풼);
+Test_N(q풽, q풽, q풽, q풽, q풽);
+Test_N(q풾, q풾, q풾, q풾, q풾);
+Test_N(q풿, q풿, q풿, q풿, q풿);
+Test_N(q퓀, q퓀, q퓀, q퓀, q퓀);
+Test_N(q퓁, q퓁, q퓁, q퓁, q퓁);
+Test_N(q퓂, q퓂, q퓂, q퓂, q퓂);
+Test_N(q퓃, q퓃, q퓃, q퓃, q퓃);
+Test_N(q퓄, q퓄, q퓄, q퓄, q퓄);
+Test_N(q퓅, q퓅, q퓅, q퓅, q퓅);
+Test_N(q퓆, q퓆, q퓆, q퓆, q퓆);
+Test_N(q퓇, q퓇, q퓇, q퓇, q퓇);
+Test_N(q퓈, q퓈, q퓈, q퓈, q퓈);
+Test_N(q퓉, q퓉, q퓉, q퓉, q퓉);
+Test_N(q퓊, q퓊, q퓊, q퓊, q퓊);
+Test_N(q퓋, q퓋, q퓋, q퓋, q퓋);
+Test_N(q퓌, q퓌, q퓌, q퓌, q퓌);
+Test_N(q퓍, q퓍, q퓍, q퓍, q퓍);
+Test_N(q퓎, q퓎, q퓎, q퓎, q퓎);
+Test_N(q퓏, q퓏, q퓏, q퓏, q퓏);
+Test_N(q퓐, q퓐, q퓐, q퓐, q퓐);
+Test_N(q퓑, q퓑, q퓑, q퓑, q퓑);
+Test_N(q퓒, q퓒, q퓒, q퓒, q퓒);
+Test_N(q퓓, q퓓, q퓓, q퓓, q퓓);
+Test_N(q퓔, q퓔, q퓔, q퓔, q퓔);
+Test_N(q퓕, q퓕, q퓕, q퓕, q퓕);
+Test_N(q퓖, q퓖, q퓖, q퓖, q퓖);
+Test_N(q퓗, q퓗, q퓗, q퓗, q퓗);
+Test_N(q퓘, q퓘, q퓘, q퓘, q퓘);
+Test_N(q퓙, q퓙, q퓙, q퓙, q퓙);
+Test_N(q퓚, q퓚, q퓚, q퓚, q퓚);
+Test_N(q퓛, q퓛, q퓛, q퓛, q퓛);
+Test_N(q퓜, q퓜, q퓜, q퓜, q퓜);
+Test_N(q퓝, q퓝, q퓝, q퓝, q퓝);
+Test_N(q퓞, q퓞, q퓞, q퓞, q퓞);
+Test_N(q퓟, q퓟, q퓟, q퓟, q퓟);
+Test_N(q퓠, q퓠, q퓠, q퓠, q퓠);
+Test_N(q퓡, q퓡, q퓡, q퓡, q퓡);
+Test_N(q퓢, q퓢, q퓢, q퓢, q퓢);
+Test_N(q퓣, q퓣, q퓣, q퓣, q퓣);
+Test_N(q퓤, q퓤, q퓤, q퓤, q퓤);
+Test_N(q퓥, q퓥, q퓥, q퓥, q퓥);
+Test_N(q퓦, q퓦, q퓦, q퓦, q퓦);
+Test_N(q퓧, q퓧, q퓧, q퓧, q퓧);
+Test_N(q퓨, q퓨, q퓨, q퓨, q퓨);
+Test_N(q퓩, q퓩, q퓩, q퓩, q퓩);
+Test_N(q퓪, q퓪, q퓪, q퓪, q퓪);
+Test_N(q퓫, q퓫, q퓫, q퓫, q퓫);
+Test_N(q퓬, q퓬, q퓬, q퓬, q퓬);
+Test_N(q퓭, q퓭, q퓭, q퓭, q퓭);
+Test_N(q퓮, q퓮, q퓮, q퓮, q퓮);
+Test_N(q퓯, q퓯, q퓯, q퓯, q퓯);
+Test_N(q퓰, q퓰, q퓰, q퓰, q퓰);
+Test_N(q퓱, q퓱, q퓱, q퓱, q퓱);
+Test_N(q퓲, q퓲, q퓲, q퓲, q퓲);
+Test_N(q퓳, q퓳, q퓳, q퓳, q퓳);
+Test_N(q퓴, q퓴, q퓴, q퓴, q퓴);
+Test_N(q퓵, q퓵, q퓵, q퓵, q퓵);
+Test_N(q퓶, q퓶, q퓶, q퓶, q퓶);
+Test_N(q퓷, q퓷, q퓷, q퓷, q퓷);
+Test_N(q퓸, q퓸, q퓸, q퓸, q퓸);
+Test_N(q퓹, q퓹, q퓹, q퓹, q퓹);
+Test_N(q퓺, q퓺, q퓺, q퓺, q퓺);
+Test_N(q퓻, q퓻, q퓻, q퓻, q퓻);
+Test_N(q퓼, q퓼, q퓼, q퓼, q퓼);
+Test_N(q퓽, q퓽, q퓽, q퓽, q퓽);
+Test_N(q퓾, q퓾, q퓾, q퓾, q퓾);
+Test_N(q퓿, q퓿, q퓿, q퓿, q퓿);
+Test_N(q픀, q픀, q픀, q픀, q픀);
+Test_N(q픁, q픁, q픁, q픁, q픁);
+Test_N(q픂, q픂, q픂, q픂, q픂);
+Test_N(q픃, q픃, q픃, q픃, q픃);
+Test_N(q프, q프, q프, q프, q프);
+Test_N(q픅, q픅, q픅, q픅, q픅);
+Test_N(q픆, q픆, q픆, q픆, q픆);
+Test_N(q픇, q픇, q픇, q픇, q픇);
+Test_N(q픈, q픈, q픈, q픈, q픈);
+Test_N(q픉, q픉, q픉, q픉, q픉);
+Test_N(q픊, q픊, q픊, q픊, q픊);
+Test_N(q픋, q픋, q픋, q픋, q픋);
+Test_N(q플, q플, q플, q플, q플);
+Test_N(q픍, q픍, q픍, q픍, q픍);
+Test_N(q픎, q픎, q픎, q픎, q픎);
+Test_N(q픏, q픏, q픏, q픏, q픏);
+Test_N(q픐, q픐, q픐, q픐, q픐);
+Test_N(q픑, q픑, q픑, q픑, q픑);
+Test_N(q픒, q픒, q픒, q픒, q픒);
+Test_N(q픓, q픓, q픓, q픓, q픓);
+Test_N(q픔, q픔, q픔, q픔, q픔);
+Test_N(q픕, q픕, q픕, q픕, q픕);
+Test_N(q픖, q픖, q픖, q픖, q픖);
+Test_N(q픗, q픗, q픗, q픗, q픗);
+Test_N(q픘, q픘, q픘, q픘, q픘);
+Test_N(q픙, q픙, q픙, q픙, q픙);
+Test_N(q픚, q픚, q픚, q픚, q픚);
+Test_N(q픛, q픛, q픛, q픛, q픛);
+Test_N(q픜, q픜, q픜, q픜, q픜);
+Test_N(q픝, q픝, q픝, q픝, q픝);
+Test_N(q픞, q픞, q픞, q픞, q픞);
+Test_N(q픟, q픟, q픟, q픟, q픟);
+Test_N(q픠, q픠, q픠, q픠, q픠);
+Test_N(q픡, q픡, q픡, q픡, q픡);
+Test_N(q픢, q픢, q픢, q픢, q픢);
+Test_N(q픣, q픣, q픣, q픣, q픣);
+Test_N(q픤, q픤, q픤, q픤, q픤);
+Test_N(q픥, q픥, q픥, q픥, q픥);
+Test_N(q픦, q픦, q픦, q픦, q픦);
+Test_N(q픧, q픧, q픧, q픧, q픧);
+Test_N(q픨, q픨, q픨, q픨, q픨);
+Test_N(q픩, q픩, q픩, q픩, q픩);
+Test_N(q픪, q픪, q픪, q픪, q픪);
+Test_N(q픫, q픫, q픫, q픫, q픫);
+Test_N(q픬, q픬, q픬, q픬, q픬);
+Test_N(q픭, q픭, q픭, q픭, q픭);
+Test_N(q픮, q픮, q픮, q픮, q픮);
+Test_N(q픯, q픯, q픯, q픯, q픯);
+Test_N(q픰, q픰, q픰, q픰, q픰);
+Test_N(q픱, q픱, q픱, q픱, q픱);
+Test_N(q픲, q픲, q픲, q픲, q픲);
+Test_N(q픳, q픳, q픳, q픳, q픳);
+Test_N(q픴, q픴, q픴, q픴, q픴);
+Test_N(q픵, q픵, q픵, q픵, q픵);
+Test_N(q픶, q픶, q픶, q픶, q픶);
+Test_N(q픷, q픷, q픷, q픷, q픷);
+Test_N(q픸, q픸, q픸, q픸, q픸);
+Test_N(q픹, q픹, q픹, q픹, q픹);
+Test_N(q픺, q픺, q픺, q픺, q픺);
+Test_N(q픻, q픻, q픻, q픻, q픻);
+Test_N(q피, q피, q피, q피, q피);
+Test_N(q픽, q픽, q픽, q픽, q픽);
+Test_N(q픾, q픾, q픾, q픾, q픾);
+Test_N(q픿, q픿, q픿, q픿, q픿);
+Test_N(q핀, q핀, q핀, q핀, q핀);
+Test_N(q핁, q핁, q핁, q핁, q핁);
+Test_N(q핂, q핂, q핂, q핂, q핂);
+Test_N(q핃, q핃, q핃, q핃, q핃);
+Test_N(q필, q필, q필, q필, q필);
+Test_N(q핅, q핅, q핅, q핅, q핅);
+Test_N(q핆, q핆, q핆, q핆, q핆);
+Test_N(q핇, q핇, q핇, q핇, q핇);
+Test_N(q핈, q핈, q핈, q핈, q핈);
+Test_N(q핉, q핉, q핉, q핉, q핉);
+Test_N(q핊, q핊, q핊, q핊, q핊);
+Test_N(q핋, q핋, q핋, q핋, q핋);
+Test_N(q핌, q핌, q핌, q핌, q핌);
+Test_N(q핍, q핍, q핍, q핍, q핍);
+Test_N(q핎, q핎, q핎, q핎, q핎);
+Test_N(q핏, q핏, q핏, q핏, q핏);
+Test_N(q핐, q핐, q핐, q핐, q핐);
+Test_N(q핑, q핑, q핑, q핑, q핑);
+Test_N(q핒, q핒, q핒, q핒, q핒);
+Test_N(q핓, q핓, q핓, q핓, q핓);
+Test_N(q핔, q핔, q핔, q핔, q핔);
+Test_N(q핕, q핕, q핕, q핕, q핕);
+Test_N(q핖, q핖, q핖, q핖, q핖);
+Test_N(q핗, q핗, q핗, q핗, q핗);
+Test_N(q하, q하, q하, q하, q하);
+Test_N(q학, q학, q학, q학, q학);
+Test_N(q핚, q핚, q핚, q핚, q핚);
+Test_N(q핛, q핛, q핛, q핛, q핛);
+Test_N(q한, q한, q한, q한, q한);
+Test_N(q핝, q핝, q핝, q핝, q핝);
+Test_N(q핞, q핞, q핞, q핞, q핞);
+Test_N(q핟, q핟, q핟, q핟, q핟);
+Test_N(q할, q할, q할, q할, q할);
+Test_N(q핡, q핡, q핡, q핡, q핡);
+Test_N(q핢, q핢, q핢, q핢, q핢);
+Test_N(q핣, q핣, q핣, q핣, q핣);
+Test_N(q핤, q핤, q핤, q핤, q핤);
+Test_N(q핥, q핥, q핥, q핥, q핥);
+Test_N(q핦, q핦, q핦, q핦, q핦);
+Test_N(q핧, q핧, q핧, q핧, q핧);
+Test_N(q함, q함, q함, q함, q함);
+Test_N(q합, q합, q합, q합, q합);
+Test_N(q핪, q핪, q핪, q핪, q핪);
+Test_N(q핫, q핫, q핫, q핫, q핫);
+Test_N(q핬, q핬, q핬, q핬, q핬);
+Test_N(q항, q항, q항, q항, q항);
+Test_N(q핮, q핮, q핮, q핮, q핮);
+Test_N(q핯, q핯, q핯, q핯, q핯);
+Test_N(q핰, q핰, q핰, q핰, q핰);
+Test_N(q핱, q핱, q핱, q핱, q핱);
+Test_N(q핲, q핲, q핲, q핲, q핲);
+Test_N(q핳, q핳, q핳, q핳, q핳);
+Test_N(q해, q해, q해, q해, q해);
+Test_N(q핵, q핵, q핵, q핵, q핵);
+Test_N(q핶, q핶, q핶, q핶, q핶);
+Test_N(q핷, q핷, q핷, q핷, q핷);
+Test_N(q핸, q핸, q핸, q핸, q핸);
+Test_N(q핹, q핹, q핹, q핹, q핹);
+Test_N(q핺, q핺, q핺, q핺, q핺);
+Test_N(q핻, q핻, q핻, q핻, q핻);
+Test_N(q핼, q핼, q핼, q핼, q핼);
+Test_N(q핽, q핽, q핽, q핽, q핽);
+Test_N(q핾, q핾, q핾, q핾, q핾);
+Test_N(q핿, q핿, q핿, q핿, q핿);
+Test_N(q햀, q햀, q햀, q햀, q햀);
+Test_N(q햁, q햁, q햁, q햁, q햁);
+Test_N(q햂, q햂, q햂, q햂, q햂);
+Test_N(q햃, q햃, q햃, q햃, q햃);
+Test_N(q햄, q햄, q햄, q햄, q햄);
+Test_N(q햅, q햅, q햅, q햅, q햅);
+Test_N(q햆, q햆, q햆, q햆, q햆);
+Test_N(q햇, q햇, q햇, q햇, q햇);
+Test_N(q했, q했, q했, q했, q했);
+Test_N(q행, q행, q행, q행, q행);
+Test_N(q햊, q햊, q햊, q햊, q햊);
+Test_N(q햋, q햋, q햋, q햋, q햋);
+Test_N(q햌, q햌, q햌, q햌, q햌);
+Test_N(q햍, q햍, q햍, q햍, q햍);
+Test_N(q햎, q햎, q햎, q햎, q햎);
+Test_N(q햏, q햏, q햏, q햏, q햏);
+Test_N(q햐, q햐, q햐, q햐, q햐);
+Test_N(q햑, q햑, q햑, q햑, q햑);
+Test_N(q햒, q햒, q햒, q햒, q햒);
+Test_N(q햓, q햓, q햓, q햓, q햓);
+Test_N(q햔, q햔, q햔, q햔, q햔);
+Test_N(q햕, q햕, q햕, q햕, q햕);
+Test_N(q햖, q햖, q햖, q햖, q햖);
+Test_N(q햗, q햗, q햗, q햗, q햗);
+Test_N(q햘, q햘, q햘, q햘, q햘);
+Test_N(q햙, q햙, q햙, q햙, q햙);
+Test_N(q햚, q햚, q햚, q햚, q햚);
+Test_N(q햛, q햛, q햛, q햛, q햛);
+Test_N(q햜, q햜, q햜, q햜, q햜);
+Test_N(q햝, q햝, q햝, q햝, q햝);
+Test_N(q햞, q햞, q햞, q햞, q햞);
+Test_N(q햟, q햟, q햟, q햟, q햟);
+Test_N(q햠, q햠, q햠, q햠, q햠);
+Test_N(q햡, q햡, q햡, q햡, q햡);
+Test_N(q햢, q햢, q햢, q햢, q햢);
+Test_N(q햣, q햣, q햣, q햣, q햣);
+Test_N(q햤, q햤, q햤, q햤, q햤);
+Test_N(q향, q향, q향, q향, q향);
+Test_N(q햦, q햦, q햦, q햦, q햦);
+Test_N(q햧, q햧, q햧, q햧, q햧);
+Test_N(q햨, q햨, q햨, q햨, q햨);
+Test_N(q햩, q햩, q햩, q햩, q햩);
+Test_N(q햪, q햪, q햪, q햪, q햪);
+Test_N(q햫, q햫, q햫, q햫, q햫);
+Test_N(q햬, q햬, q햬, q햬, q햬);
+Test_N(q햭, q햭, q햭, q햭, q햭);
+Test_N(q햮, q햮, q햮, q햮, q햮);
+Test_N(q햯, q햯, q햯, q햯, q햯);
+Test_N(q햰, q햰, q햰, q햰, q햰);
+Test_N(q햱, q햱, q햱, q햱, q햱);
+Test_N(q햲, q햲, q햲, q햲, q햲);
+Test_N(q햳, q햳, q햳, q햳, q햳);
+Test_N(q햴, q햴, q햴, q햴, q햴);
+Test_N(q햵, q햵, q햵, q햵, q햵);
+Test_N(q햶, q햶, q햶, q햶, q햶);
+Test_N(q햷, q햷, q햷, q햷, q햷);
+Test_N(q햸, q햸, q햸, q햸, q햸);
+Test_N(q햹, q햹, q햹, q햹, q햹);
+Test_N(q햺, q햺, q햺, q햺, q햺);
+Test_N(q햻, q햻, q햻, q햻, q햻);
+Test_N(q햼, q햼, q햼, q햼, q햼);
+Test_N(q햽, q햽, q햽, q햽, q햽);
+Test_N(q햾, q햾, q햾, q햾, q햾);
+Test_N(q햿, q햿, q햿, q햿, q햿);
+Test_N(q헀, q헀, q헀, q헀, q헀);
+Test_N(q헁, q헁, q헁, q헁, q헁);
+Test_N(q헂, q헂, q헂, q헂, q헂);
+Test_N(q헃, q헃, q헃, q헃, q헃);
+Test_N(q헄, q헄, q헄, q헄, q헄);
+Test_N(q헅, q헅, q헅, q헅, q헅);
+Test_N(q헆, q헆, q헆, q헆, q헆);
+Test_N(q헇, q헇, q헇, q헇, q헇);
+Test_N(q허, q허, q허, q허, q허);
+Test_N(q헉, q헉, q헉, q헉, q헉);
+Test_N(q헊, q헊, q헊, q헊, q헊);
+Test_N(q헋, q헋, q헋, q헋, q헋);
+Test_N(q헌, q헌, q헌, q헌, q헌);
+Test_N(q헍, q헍, q헍, q헍, q헍);
+Test_N(q헎, q헎, q헎, q헎, q헎);
+Test_N(q헏, q헏, q헏, q헏, q헏);
+Test_N(q헐, q헐, q헐, q헐, q헐);
+Test_N(q헑, q헑, q헑, q헑, q헑);
+Test_N(q헒, q헒, q헒, q헒, q헒);
+Test_N(q헓, q헓, q헓, q헓, q헓);
+Test_N(q헔, q헔, q헔, q헔, q헔);
+Test_N(q헕, q헕, q헕, q헕, q헕);
+Test_N(q헖, q헖, q헖, q헖, q헖);
+Test_N(q헗, q헗, q헗, q헗, q헗);
+Test_N(q험, q험, q험, q험, q험);
+Test_N(q헙, q헙, q헙, q헙, q헙);
+Test_N(q헚, q헚, q헚, q헚, q헚);
+Test_N(q헛, q헛, q헛, q헛, q헛);
+Test_N(q헜, q헜, q헜, q헜, q헜);
+Test_N(q헝, q헝, q헝, q헝, q헝);
+Test_N(q헞, q헞, q헞, q헞, q헞);
+Test_N(q헟, q헟, q헟, q헟, q헟);
+Test_N(q헠, q헠, q헠, q헠, q헠);
+Test_N(q헡, q헡, q헡, q헡, q헡);
+Test_N(q헢, q헢, q헢, q헢, q헢);
+Test_N(q헣, q헣, q헣, q헣, q헣);
+Test_N(q헤, q헤, q헤, q헤, q헤);
+Test_N(q헥, q헥, q헥, q헥, q헥);
+Test_N(q헦, q헦, q헦, q헦, q헦);
+Test_N(q헧, q헧, q헧, q헧, q헧);
+Test_N(q헨, q헨, q헨, q헨, q헨);
+Test_N(q헩, q헩, q헩, q헩, q헩);
+Test_N(q헪, q헪, q헪, q헪, q헪);
+Test_N(q헫, q헫, q헫, q헫, q헫);
+Test_N(q헬, q헬, q헬, q헬, q헬);
+Test_N(q헭, q헭, q헭, q헭, q헭);
+Test_N(q헮, q헮, q헮, q헮, q헮);
+Test_N(q헯, q헯, q헯, q헯, q헯);
+Test_N(q헰, q헰, q헰, q헰, q헰);
+Test_N(q헱, q헱, q헱, q헱, q헱);
+Test_N(q헲, q헲, q헲, q헲, q헲);
+Test_N(q헳, q헳, q헳, q헳, q헳);
+Test_N(q헴, q헴, q헴, q헴, q헴);
+Test_N(q헵, q헵, q헵, q헵, q헵);
+Test_N(q헶, q헶, q헶, q헶, q헶);
+Test_N(q헷, q헷, q헷, q헷, q헷);
+Test_N(q헸, q헸, q헸, q헸, q헸);
+Test_N(q헹, q헹, q헹, q헹, q헹);
+Test_N(q헺, q헺, q헺, q헺, q헺);
+Test_N(q헻, q헻, q헻, q헻, q헻);
+Test_N(q헼, q헼, q헼, q헼, q헼);
+Test_N(q헽, q헽, q헽, q헽, q헽);
+Test_N(q헾, q헾, q헾, q헾, q헾);
+Test_N(q헿, q헿, q헿, q헿, q헿);
+Test_N(q혀, q혀, q혀, q혀, q혀);
+Test_N(q혁, q혁, q혁, q혁, q혁);
+Test_N(q혂, q혂, q혂, q혂, q혂);
+Test_N(q혃, q혃, q혃, q혃, q혃);
+Test_N(q현, q현, q현, q현, q현);
+Test_N(q혅, q혅, q혅, q혅, q혅);
+Test_N(q혆, q혆, q혆, q혆, q혆);
+Test_N(q혇, q혇, q혇, q혇, q혇);
+Test_N(q혈, q혈, q혈, q혈, q혈);
+Test_N(q혉, q혉, q혉, q혉, q혉);
+Test_N(q혊, q혊, q혊, q혊, q혊);
+Test_N(q혋, q혋, q혋, q혋, q혋);
+Test_N(q혌, q혌, q혌, q혌, q혌);
+Test_N(q혍, q혍, q혍, q혍, q혍);
+Test_N(q혎, q혎, q혎, q혎, q혎);
+Test_N(q혏, q혏, q혏, q혏, q혏);
+Test_N(q혐, q혐, q혐, q혐, q혐);
+Test_N(q협, q협, q협, q협, q협);
+Test_N(q혒, q혒, q혒, q혒, q혒);
+Test_N(q혓, q혓, q혓, q혓, q혓);
+Test_N(q혔, q혔, q혔, q혔, q혔);
+Test_N(q형, q형, q형, q형, q형);
+Test_N(q혖, q혖, q혖, q혖, q혖);
+Test_N(q혗, q혗, q혗, q혗, q혗);
+Test_N(q혘, q혘, q혘, q혘, q혘);
+Test_N(q혙, q혙, q혙, q혙, q혙);
+Test_N(q혚, q혚, q혚, q혚, q혚);
+Test_N(q혛, q혛, q혛, q혛, q혛);
+Test_N(q혜, q혜, q혜, q혜, q혜);
+Test_N(q혝, q혝, q혝, q혝, q혝);
+Test_N(q혞, q혞, q혞, q혞, q혞);
+Test_N(q혟, q혟, q혟, q혟, q혟);
+Test_N(q혠, q혠, q혠, q혠, q혠);
+Test_N(q혡, q혡, q혡, q혡, q혡);
+Test_N(q혢, q혢, q혢, q혢, q혢);
+Test_N(q혣, q혣, q혣, q혣, q혣);
+Test_N(q혤, q혤, q혤, q혤, q혤);
+Test_N(q혥, q혥, q혥, q혥, q혥);
+Test_N(q혦, q혦, q혦, q혦, q혦);
+Test_N(q혧, q혧, q혧, q혧, q혧);
+Test_N(q혨, q혨, q혨, q혨, q혨);
+Test_N(q혩, q혩, q혩, q혩, q혩);
+Test_N(q혪, q혪, q혪, q혪, q혪);
+Test_N(q혫, q혫, q혫, q혫, q혫);
+Test_N(q혬, q혬, q혬, q혬, q혬);
+Test_N(q혭, q혭, q혭, q혭, q혭);
+Test_N(q혮, q혮, q혮, q혮, q혮);
+Test_N(q혯, q혯, q혯, q혯, q혯);
+Test_N(q혰, q혰, q혰, q혰, q혰);
+Test_N(q혱, q혱, q혱, q혱, q혱);
+Test_N(q혲, q혲, q혲, q혲, q혲);
+Test_N(q혳, q혳, q혳, q혳, q혳);
+Test_N(q혴, q혴, q혴, q혴, q혴);
+Test_N(q혵, q혵, q혵, q혵, q혵);
+Test_N(q혶, q혶, q혶, q혶, q혶);
+Test_N(q혷, q혷, q혷, q혷, q혷);
+Test_N(q호, q호, q호, q호, q호);
+Test_N(q혹, q혹, q혹, q혹, q혹);
+Test_N(q혺, q혺, q혺, q혺, q혺);
+Test_N(q혻, q혻, q혻, q혻, q혻);
+Test_N(q혼, q혼, q혼, q혼, q혼);
+Test_N(q혽, q혽, q혽, q혽, q혽);
+Test_N(q혾, q혾, q혾, q혾, q혾);
+Test_N(q혿, q혿, q혿, q혿, q혿);
+Test_N(q홀, q홀, q홀, q홀, q홀);
+Test_N(q홁, q홁, q홁, q홁, q홁);
+Test_N(q홂, q홂, q홂, q홂, q홂);
+Test_N(q홃, q홃, q홃, q홃, q홃);
+Test_N(q홄, q홄, q홄, q홄, q홄);
+Test_N(q홅, q홅, q홅, q홅, q홅);
+Test_N(q홆, q홆, q홆, q홆, q홆);
+Test_N(q홇, q홇, q홇, q홇, q홇);
+Test_N(q홈, q홈, q홈, q홈, q홈);
+Test_N(q홉, q홉, q홉, q홉, q홉);
+Test_N(q홊, q홊, q홊, q홊, q홊);
+Test_N(q홋, q홋, q홋, q홋, q홋);
+Test_N(q홌, q홌, q홌, q홌, q홌);
+Test_N(q홍, q홍, q홍, q홍, q홍);
+Test_N(q홎, q홎, q홎, q홎, q홎);
+Test_N(q홏, q홏, q홏, q홏, q홏);
+Test_N(q홐, q홐, q홐, q홐, q홐);
+Test_N(q홑, q홑, q홑, q홑, q홑);
+Test_N(q홒, q홒, q홒, q홒, q홒);
+Test_N(q홓, q홓, q홓, q홓, q홓);
+Test_N(q화, q화, q화, q화, q화);
+Test_N(q확, q확, q확, q확, q확);
+Test_N(q홖, q홖, q홖, q홖, q홖);
+Test_N(q홗, q홗, q홗, q홗, q홗);
+Test_N(q환, q환, q환, q환, q환);
+Test_N(q홙, q홙, q홙, q홙, q홙);
+Test_N(q홚, q홚, q홚, q홚, q홚);
+Test_N(q홛, q홛, q홛, q홛, q홛);
+Test_N(q활, q활, q활, q활, q활);
+Test_N(q홝, q홝, q홝, q홝, q홝);
+Test_N(q홞, q홞, q홞, q홞, q홞);
+Test_N(q홟, q홟, q홟, q홟, q홟);
+Test_N(q홠, q홠, q홠, q홠, q홠);
+Test_N(q홡, q홡, q홡, q홡, q홡);
+Test_N(q홢, q홢, q홢, q홢, q홢);
+Test_N(q홣, q홣, q홣, q홣, q홣);
+Test_N(q홤, q홤, q홤, q홤, q홤);
+Test_N(q홥, q홥, q홥, q홥, q홥);
+Test_N(q홦, q홦, q홦, q홦, q홦);
+Test_N(q홧, q홧, q홧, q홧, q홧);
+Test_N(q홨, q홨, q홨, q홨, q홨);
+Test_N(q황, q황, q황, q황, q황);
+Test_N(q홪, q홪, q홪, q홪, q홪);
+Test_N(q홫, q홫, q홫, q홫, q홫);
+Test_N(q홬, q홬, q홬, q홬, q홬);
+Test_N(q홭, q홭, q홭, q홭, q홭);
+Test_N(q홮, q홮, q홮, q홮, q홮);
+Test_N(q홯, q홯, q홯, q홯, q홯);
+Test_N(q홰, q홰, q홰, q홰, q홰);
+Test_N(q홱, q홱, q홱, q홱, q홱);
+Test_N(q홲, q홲, q홲, q홲, q홲);
+Test_N(q홳, q홳, q홳, q홳, q홳);
+Test_N(q홴, q홴, q홴, q홴, q홴);
+Test_N(q홵, q홵, q홵, q홵, q홵);
+Test_N(q홶, q홶, q홶, q홶, q홶);
+Test_N(q홷, q홷, q홷, q홷, q홷);
+Test_N(q홸, q홸, q홸, q홸, q홸);
+Test_N(q홹, q홹, q홹, q홹, q홹);
+Test_N(q홺, q홺, q홺, q홺, q홺);
+Test_N(q홻, q홻, q홻, q홻, q홻);
+Test_N(q홼, q홼, q홼, q홼, q홼);
+Test_N(q홽, q홽, q홽, q홽, q홽);
+Test_N(q홾, q홾, q홾, q홾, q홾);
+Test_N(q홿, q홿, q홿, q홿, q홿);
+Test_N(q횀, q횀, q횀, q횀, q횀);
+Test_N(q횁, q횁, q횁, q횁, q횁);
+Test_N(q횂, q횂, q횂, q횂, q횂);
+Test_N(q횃, q횃, q횃, q횃, q횃);
+Test_N(q횄, q횄, q횄, q횄, q횄);
+Test_N(q횅, q횅, q횅, q횅, q횅);
+Test_N(q횆, q횆, q횆, q횆, q횆);
+Test_N(q횇, q횇, q횇, q횇, q횇);
+Test_N(q횈, q횈, q횈, q횈, q횈);
+Test_N(q횉, q횉, q횉, q횉, q횉);
+Test_N(q횊, q횊, q횊, q횊, q횊);
+Test_N(q횋, q횋, q횋, q횋, q횋);
+Test_N(q회, q회, q회, q회, q회);
+Test_N(q획, q획, q획, q획, q획);
+Test_N(q횎, q횎, q횎, q횎, q횎);
+Test_N(q횏, q횏, q횏, q횏, q횏);
+Test_N(q횐, q횐, q횐, q횐, q횐);
+Test_N(q횑, q횑, q횑, q횑, q횑);
+Test_N(q횒, q횒, q횒, q횒, q횒);
+Test_N(q횓, q횓, q횓, q횓, q횓);
+Test_N(q횔, q횔, q횔, q횔, q횔);
+Test_N(q횕, q횕, q횕, q횕, q횕);
+Test_N(q횖, q횖, q횖, q횖, q횖);
+Test_N(q횗, q횗, q횗, q횗, q횗);
+Test_N(q횘, q횘, q횘, q횘, q횘);
+Test_N(q횙, q횙, q횙, q횙, q횙);
+Test_N(q횚, q횚, q횚, q횚, q횚);
+Test_N(q횛, q횛, q횛, q횛, q횛);
+Test_N(q횜, q횜, q횜, q횜, q횜);
+Test_N(q횝, q횝, q횝, q횝, q횝);
+Test_N(q횞, q횞, q횞, q횞, q횞);
+Test_N(q횟, q횟, q횟, q횟, q횟);
+Test_N(q횠, q횠, q횠, q횠, q횠);
+Test_N(q횡, q횡, q횡, q횡, q횡);
+Test_N(q횢, q횢, q횢, q횢, q횢);
+Test_N(q횣, q횣, q횣, q횣, q횣);
+Test_N(q횤, q횤, q횤, q횤, q횤);
+Test_N(q횥, q횥, q횥, q횥, q횥);
+Test_N(q횦, q횦, q횦, q횦, q횦);
+Test_N(q횧, q횧, q횧, q횧, q횧);
+Test_N(q효, q효, q효, q효, q효);
+Test_N(q횩, q횩, q횩, q횩, q횩);
+Test_N(q횪, q횪, q횪, q횪, q횪);
+Test_N(q횫, q횫, q횫, q횫, q횫);
+Test_N(q횬, q횬, q횬, q횬, q횬);
+Test_N(q횭, q횭, q횭, q횭, q횭);
+Test_N(q횮, q횮, q횮, q횮, q횮);
+Test_N(q횯, q횯, q횯, q횯, q횯);
+Test_N(q횰, q횰, q횰, q횰, q횰);
+Test_N(q횱, q횱, q횱, q횱, q횱);
+Test_N(q횲, q횲, q횲, q횲, q횲);
+Test_N(q횳, q횳, q횳, q횳, q횳);
+Test_N(q횴, q횴, q횴, q횴, q횴);
+Test_N(q횵, q횵, q횵, q횵, q횵);
+Test_N(q횶, q횶, q횶, q횶, q횶);
+Test_N(q횷, q횷, q횷, q횷, q횷);
+Test_N(q횸, q횸, q횸, q횸, q횸);
+Test_N(q횹, q횹, q횹, q횹, q횹);
+Test_N(q횺, q횺, q횺, q횺, q횺);
+Test_N(q횻, q횻, q횻, q횻, q횻);
+Test_N(q횼, q횼, q횼, q횼, q횼);
+Test_N(q횽, q횽, q횽, q횽, q횽);
+Test_N(q횾, q횾, q횾, q횾, q횾);
+Test_N(q횿, q횿, q횿, q횿, q횿);
+Test_N(q훀, q훀, q훀, q훀, q훀);
+Test_N(q훁, q훁, q훁, q훁, q훁);
+Test_N(q훂, q훂, q훂, q훂, q훂);
+Test_N(q훃, q훃, q훃, q훃, q훃);
+Test_N(q후, q후, q후, q후, q후);
+Test_N(q훅, q훅, q훅, q훅, q훅);
+Test_N(q훆, q훆, q훆, q훆, q훆);
+Test_N(q훇, q훇, q훇, q훇, q훇);
+Test_N(q훈, q훈, q훈, q훈, q훈);
+Test_N(q훉, q훉, q훉, q훉, q훉);
+Test_N(q훊, q훊, q훊, q훊, q훊);
+Test_N(q훋, q훋, q훋, q훋, q훋);
+Test_N(q훌, q훌, q훌, q훌, q훌);
+Test_N(q훍, q훍, q훍, q훍, q훍);
+Test_N(q훎, q훎, q훎, q훎, q훎);
+Test_N(q훏, q훏, q훏, q훏, q훏);
+Test_N(q훐, q훐, q훐, q훐, q훐);
+Test_N(q훑, q훑, q훑, q훑, q훑);
+Test_N(q훒, q훒, q훒, q훒, q훒);
+Test_N(q훓, q훓, q훓, q훓, q훓);
+Test_N(q훔, q훔, q훔, q훔, q훔);
+Test_N(q훕, q훕, q훕, q훕, q훕);
+Test_N(q훖, q훖, q훖, q훖, q훖);
+Test_N(q훗, q훗, q훗, q훗, q훗);
+Test_N(q훘, q훘, q훘, q훘, q훘);
+Test_N(q훙, q훙, q훙, q훙, q훙);
+Test_N(q훚, q훚, q훚, q훚, q훚);
+Test_N(q훛, q훛, q훛, q훛, q훛);
+Test_N(q훜, q훜, q훜, q훜, q훜);
+Test_N(q훝, q훝, q훝, q훝, q훝);
+Test_N(q훞, q훞, q훞, q훞, q훞);
+Test_N(q훟, q훟, q훟, q훟, q훟);
+Test_N(q훠, q훠, q훠, q훠, q훠);
+Test_N(q훡, q훡, q훡, q훡, q훡);
+Test_N(q훢, q훢, q훢, q훢, q훢);
+Test_N(q훣, q훣, q훣, q훣, q훣);
+Test_N(q훤, q훤, q훤, q훤, q훤);
+Test_N(q훥, q훥, q훥, q훥, q훥);
+Test_N(q훦, q훦, q훦, q훦, q훦);
+Test_N(q훧, q훧, q훧, q훧, q훧);
+Test_N(q훨, q훨, q훨, q훨, q훨);
+Test_N(q훩, q훩, q훩, q훩, q훩);
+Test_N(q훪, q훪, q훪, q훪, q훪);
+Test_N(q훫, q훫, q훫, q훫, q훫);
+Test_N(q훬, q훬, q훬, q훬, q훬);
+Test_N(q훭, q훭, q훭, q훭, q훭);
+Test_N(q훮, q훮, q훮, q훮, q훮);
+Test_N(q훯, q훯, q훯, q훯, q훯);
+Test_N(q훰, q훰, q훰, q훰, q훰);
+Test_N(q훱, q훱, q훱, q훱, q훱);
+Test_N(q훲, q훲, q훲, q훲, q훲);
+Test_N(q훳, q훳, q훳, q훳, q훳);
+Test_N(q훴, q훴, q훴, q훴, q훴);
+Test_N(q훵, q훵, q훵, q훵, q훵);
+Test_N(q훶, q훶, q훶, q훶, q훶);
+Test_N(q훷, q훷, q훷, q훷, q훷);
+Test_N(q훸, q훸, q훸, q훸, q훸);
+Test_N(q훹, q훹, q훹, q훹, q훹);
+Test_N(q훺, q훺, q훺, q훺, q훺);
+Test_N(q훻, q훻, q훻, q훻, q훻);
+Test_N(q훼, q훼, q훼, q훼, q훼);
+Test_N(q훽, q훽, q훽, q훽, q훽);
+Test_N(q훾, q훾, q훾, q훾, q훾);
+Test_N(q훿, q훿, q훿, q훿, q훿);
+Test_N(q휀, q휀, q휀, q휀, q휀);
+Test_N(q휁, q휁, q휁, q휁, q휁);
+Test_N(q휂, q휂, q휂, q휂, q휂);
+Test_N(q휃, q휃, q휃, q휃, q휃);
+Test_N(q휄, q휄, q휄, q휄, q휄);
+Test_N(q휅, q휅, q휅, q휅, q휅);
+Test_N(q휆, q휆, q휆, q휆, q휆);
+Test_N(q휇, q휇, q휇, q휇, q휇);
+Test_N(q휈, q휈, q휈, q휈, q휈);
+Test_N(q휉, q휉, q휉, q휉, q휉);
+Test_N(q휊, q휊, q휊, q휊, q휊);
+Test_N(q휋, q휋, q휋, q휋, q휋);
+Test_N(q휌, q휌, q휌, q휌, q휌);
+Test_N(q휍, q휍, q휍, q휍, q휍);
+Test_N(q휎, q휎, q휎, q휎, q휎);
+Test_N(q휏, q휏, q휏, q휏, q휏);
+Test_N(q휐, q휐, q휐, q휐, q휐);
+Test_N(q휑, q휑, q휑, q휑, q휑);
+Test_N(q휒, q휒, q휒, q휒, q휒);
+Test_N(q휓, q휓, q휓, q휓, q휓);
+Test_N(q휔, q휔, q휔, q휔, q휔);
+Test_N(q휕, q휕, q휕, q휕, q휕);
+Test_N(q휖, q휖, q휖, q휖, q휖);
+Test_N(q휗, q휗, q휗, q휗, q휗);
+Test_N(q휘, q휘, q휘, q휘, q휘);
+Test_N(q휙, q휙, q휙, q휙, q휙);
+Test_N(q휚, q휚, q휚, q휚, q휚);
+Test_N(q휛, q휛, q휛, q휛, q휛);
+Test_N(q휜, q휜, q휜, q휜, q휜);
+Test_N(q휝, q휝, q휝, q휝, q휝);
+Test_N(q휞, q휞, q휞, q휞, q휞);
+Test_N(q휟, q휟, q휟, q휟, q휟);
+Test_N(q휠, q휠, q휠, q휠, q휠);
+Test_N(q휡, q휡, q휡, q휡, q휡);
+Test_N(q휢, q휢, q휢, q휢, q휢);
+Test_N(q휣, q휣, q휣, q휣, q휣);
+Test_N(q휤, q휤, q휤, q휤, q휤);
+Test_N(q휥, q휥, q휥, q휥, q휥);
+Test_N(q휦, q휦, q휦, q휦, q휦);
+Test_N(q휧, q휧, q휧, q휧, q휧);
+Test_N(q휨, q휨, q휨, q휨, q휨);
+Test_N(q휩, q휩, q휩, q휩, q휩);
+Test_N(q휪, q휪, q휪, q휪, q휪);
+Test_N(q휫, q휫, q휫, q휫, q휫);
+Test_N(q휬, q휬, q휬, q휬, q휬);
+Test_N(q휭, q휭, q휭, q휭, q휭);
+Test_N(q휮, q휮, q휮, q휮, q휮);
+Test_N(q휯, q휯, q휯, q휯, q휯);
+Test_N(q휰, q휰, q휰, q휰, q휰);
+Test_N(q휱, q휱, q휱, q휱, q휱);
+Test_N(q휲, q휲, q휲, q휲, q휲);
+Test_N(q휳, q휳, q휳, q휳, q휳);
+Test_N(q휴, q휴, q휴, q휴, q휴);
+Test_N(q휵, q휵, q휵, q휵, q휵);
+Test_N(q휶, q휶, q휶, q휶, q휶);
+Test_N(q휷, q휷, q휷, q휷, q휷);
+Test_N(q휸, q휸, q휸, q휸, q휸);
+Test_N(q휹, q휹, q휹, q휹, q휹);
+Test_N(q휺, q휺, q휺, q휺, q휺);
+Test_N(q휻, q휻, q휻, q휻, q휻);
+Test_N(q휼, q휼, q휼, q휼, q휼);
+Test_N(q휽, q휽, q휽, q휽, q휽);
+Test_N(q휾, q휾, q휾, q휾, q휾);
+Test_N(q휿, q휿, q휿, q휿, q휿);
+Test_N(q흀, q흀, q흀, q흀, q흀);
+Test_N(q흁, q흁, q흁, q흁, q흁);
+Test_N(q흂, q흂, q흂, q흂, q흂);
+Test_N(q흃, q흃, q흃, q흃, q흃);
+Test_N(q흄, q흄, q흄, q흄, q흄);
+Test_N(q흅, q흅, q흅, q흅, q흅);
+Test_N(q흆, q흆, q흆, q흆, q흆);
+Test_N(q흇, q흇, q흇, q흇, q흇);
+Test_N(q흈, q흈, q흈, q흈, q흈);
+Test_N(q흉, q흉, q흉, q흉, q흉);
+Test_N(q흊, q흊, q흊, q흊, q흊);
+Test_N(q흋, q흋, q흋, q흋, q흋);
+Test_N(q흌, q흌, q흌, q흌, q흌);
+Test_N(q흍, q흍, q흍, q흍, q흍);
+Test_N(q흎, q흎, q흎, q흎, q흎);
+Test_N(q흏, q흏, q흏, q흏, q흏);
+Test_N(q흐, q흐, q흐, q흐, q흐);
+Test_N(q흑, q흑, q흑, q흑, q흑);
+Test_N(q흒, q흒, q흒, q흒, q흒);
+Test_N(q흓, q흓, q흓, q흓, q흓);
+Test_N(q흔, q흔, q흔, q흔, q흔);
+Test_N(q흕, q흕, q흕, q흕, q흕);
+Test_N(q흖, q흖, q흖, q흖, q흖);
+Test_N(q흗, q흗, q흗, q흗, q흗);
+Test_N(q흘, q흘, q흘, q흘, q흘);
+Test_N(q흙, q흙, q흙, q흙, q흙);
+Test_N(q흚, q흚, q흚, q흚, q흚);
+Test_N(q흛, q흛, q흛, q흛, q흛);
+Test_N(q흜, q흜, q흜, q흜, q흜);
+Test_N(q흝, q흝, q흝, q흝, q흝);
+Test_N(q흞, q흞, q흞, q흞, q흞);
+Test_N(q흟, q흟, q흟, q흟, q흟);
+Test_N(q흠, q흠, q흠, q흠, q흠);
+Test_N(q흡, q흡, q흡, q흡, q흡);
+Test_N(q흢, q흢, q흢, q흢, q흢);
+Test_N(q흣, q흣, q흣, q흣, q흣);
+Test_N(q흤, q흤, q흤, q흤, q흤);
+Test_N(q흥, q흥, q흥, q흥, q흥);
+Test_N(q흦, q흦, q흦, q흦, q흦);
+Test_N(q흧, q흧, q흧, q흧, q흧);
+Test_N(q흨, q흨, q흨, q흨, q흨);
+Test_N(q흩, q흩, q흩, q흩, q흩);
+Test_N(q흪, q흪, q흪, q흪, q흪);
+Test_N(q흫, q흫, q흫, q흫, q흫);
+Test_N(q희, q희, q희, q희, q희);
+Test_N(q흭, q흭, q흭, q흭, q흭);
+Test_N(q흮, q흮, q흮, q흮, q흮);
+Test_N(q흯, q흯, q흯, q흯, q흯);
+Test_N(q흰, q흰, q흰, q흰, q흰);
+Test_N(q흱, q흱, q흱, q흱, q흱);
+Test_N(q흲, q흲, q흲, q흲, q흲);
+Test_N(q흳, q흳, q흳, q흳, q흳);
+Test_N(q흴, q흴, q흴, q흴, q흴);
+Test_N(q흵, q흵, q흵, q흵, q흵);
+Test_N(q흶, q흶, q흶, q흶, q흶);
+Test_N(q흷, q흷, q흷, q흷, q흷);
+Test_N(q흸, q흸, q흸, q흸, q흸);
+Test_N(q흹, q흹, q흹, q흹, q흹);
+Test_N(q흺, q흺, q흺, q흺, q흺);
+Test_N(q흻, q흻, q흻, q흻, q흻);
+Test_N(q흼, q흼, q흼, q흼, q흼);
+Test_N(q흽, q흽, q흽, q흽, q흽);
+Test_N(q흾, q흾, q흾, q흾, q흾);
+Test_N(q흿, q흿, q흿, q흿, q흿);
+Test_N(q힀, q힀, q힀, q힀, q힀);
+Test_N(q힁, q힁, q힁, q힁, q힁);
+Test_N(q힂, q힂, q힂, q힂, q힂);
+Test_N(q힃, q힃, q힃, q힃, q힃);
+Test_N(q힄, q힄, q힄, q힄, q힄);
+Test_N(q힅, q힅, q힅, q힅, q힅);
+Test_N(q힆, q힆, q힆, q힆, q힆);
+Test_N(q힇, q힇, q힇, q힇, q힇);
+Test_N(q히, q히, q히, q히, q히);
+Test_N(q힉, q힉, q힉, q힉, q힉);
+Test_N(q힊, q힊, q힊, q힊, q힊);
+Test_N(q힋, q힋, q힋, q힋, q힋);
+Test_N(q힌, q힌, q힌, q힌, q힌);
+Test_N(q힍, q힍, q힍, q힍, q힍);
+Test_N(q힎, q힎, q힎, q힎, q힎);
+Test_N(q힏, q힏, q힏, q힏, q힏);
+Test_N(q힐, q힐, q힐, q힐, q힐);
+Test_N(q힑, q힑, q힑, q힑, q힑);
+Test_N(q힒, q힒, q힒, q힒, q힒);
+Test_N(q힓, q힓, q힓, q힓, q힓);
+Test_N(q힔, q힔, q힔, q힔, q힔);
+Test_N(q힕, q힕, q힕, q힕, q힕);
+Test_N(q힖, q힖, q힖, q힖, q힖);
+Test_N(q힗, q힗, q힗, q힗, q힗);
+Test_N(q힘, q힘, q힘, q힘, q힘);
+Test_N(q힙, q힙, q힙, q힙, q힙);
+Test_N(q힚, q힚, q힚, q힚, q힚);
+Test_N(q힛, q힛, q힛, q힛, q힛);
+Test_N(q힜, q힜, q힜, q힜, q힜);
+Test_N(q힝, q힝, q힝, q힝, q힝);
+Test_N(q힞, q힞, q힞, q힞, q힞);
+Test_N(q힟, q힟, q힟, q힟, q힟);
+Test_N(q힠, q힠, q힠, q힠, q힠);
+Test_N(q힡, q힡, q힡, q힡, q힡);
+Test_N(q힢, q힢, q힢, q힢, q힢);
+Test_N(q힣, q힣, q힣, q힣, q힣);
+Test_N(q豈, q豈, q豈, q豈, q豈);
+Test_N(q更, q更, q更, q更, q更);
+Test_N(q車, q車, q車, q車, q車);
+Test_N(q賈, q賈, q賈, q賈, q賈);
+Test_N(q滑, q滑, q滑, q滑, q滑);
+Test_N(q串, q串, q串, q串, q串);
+Test_N(q句, q句, q句, q句, q句);
+Test_N(q龜, q龜, q龜, q龜, q龜);
+Test_N(q龜, q龜, q龜, q龜, q龜);
+Test_N(q契, q契, q契, q契, q契);
+Test_N(q金, q金, q金, q金, q金);
+Test_N(q喇, q喇, q喇, q喇, q喇);
+Test_N(q奈, q奈, q奈, q奈, q奈);
+Test_N(q懶, q懶, q懶, q懶, q懶);
+Test_N(q癩, q癩, q癩, q癩, q癩);
+Test_N(q羅, q羅, q羅, q羅, q羅);
+Test_N(q蘿, q蘿, q蘿, q蘿, q蘿);
+Test_N(q螺, q螺, q螺, q螺, q螺);
+Test_N(q裸, q裸, q裸, q裸, q裸);
+Test_N(q邏, q邏, q邏, q邏, q邏);
+Test_N(q樂, q樂, q樂, q樂, q樂);
+Test_N(q洛, q洛, q洛, q洛, q洛);
+Test_N(q烙, q烙, q烙, q烙, q烙);
+Test_N(q珞, q珞, q珞, q珞, q珞);
+Test_N(q落, q落, q落, q落, q落);
+Test_N(q酪, q酪, q酪, q酪, q酪);
+Test_N(q駱, q駱, q駱, q駱, q駱);
+Test_N(q亂, q亂, q亂, q亂, q亂);
+Test_N(q卵, q卵, q卵, q卵, q卵);
+Test_N(q欄, q欄, q欄, q欄, q欄);
+Test_N(q爛, q爛, q爛, q爛, q爛);
+Test_N(q蘭, q蘭, q蘭, q蘭, q蘭);
+Test_N(q鸞, q鸞, q鸞, q鸞, q鸞);
+Test_N(q嵐, q嵐, q嵐, q嵐, q嵐);
+Test_N(q濫, q濫, q濫, q濫, q濫);
+Test_N(q藍, q藍, q藍, q藍, q藍);
+Test_N(q襤, q襤, q襤, q襤, q襤);
+Test_N(q拉, q拉, q拉, q拉, q拉);
+Test_N(q臘, q臘, q臘, q臘, q臘);
+Test_N(q蠟, q蠟, q蠟, q蠟, q蠟);
+Test_N(q廊, q廊, q廊, q廊, q廊);
+Test_N(q朗, q朗, q朗, q朗, q朗);
+Test_N(q浪, q浪, q浪, q浪, q浪);
+Test_N(q狼, q狼, q狼, q狼, q狼);
+Test_N(q郎, q郎, q郎, q郎, q郎);
+Test_N(q來, q來, q來, q來, q來);
+Test_N(q冷, q冷, q冷, q冷, q冷);
+Test_N(q勞, q勞, q勞, q勞, q勞);
+Test_N(q擄, q擄, q擄, q擄, q擄);
+Test_N(q櫓, q櫓, q櫓, q櫓, q櫓);
+Test_N(q爐, q爐, q爐, q爐, q爐);
+Test_N(q盧, q盧, q盧, q盧, q盧);
+Test_N(q老, q老, q老, q老, q老);
+Test_N(q蘆, q蘆, q蘆, q蘆, q蘆);
+Test_N(q虜, q虜, q虜, q虜, q虜);
+Test_N(q路, q路, q路, q路, q路);
+Test_N(q露, q露, q露, q露, q露);
+Test_N(q魯, q魯, q魯, q魯, q魯);
+Test_N(q鷺, q鷺, q鷺, q鷺, q鷺);
+Test_N(q碌, q碌, q碌, q碌, q碌);
+Test_N(q祿, q祿, q祿, q祿, q祿);
+Test_N(q綠, q綠, q綠, q綠, q綠);
+Test_N(q菉, q菉, q菉, q菉, q菉);
+Test_N(q錄, q錄, q錄, q錄, q錄);
+Test_N(q鹿, q鹿, q鹿, q鹿, q鹿);
+Test_N(q論, q論, q論, q論, q論);
+Test_N(q壟, q壟, q壟, q壟, q壟);
+Test_N(q弄, q弄, q弄, q弄, q弄);
+Test_N(q籠, q籠, q籠, q籠, q籠);
+Test_N(q聾, q聾, q聾, q聾, q聾);
+Test_N(q牢, q牢, q牢, q牢, q牢);
+Test_N(q磊, q磊, q磊, q磊, q磊);
+Test_N(q賂, q賂, q賂, q賂, q賂);
+Test_N(q雷, q雷, q雷, q雷, q雷);
+Test_N(q壘, q壘, q壘, q壘, q壘);
+Test_N(q屢, q屢, q屢, q屢, q屢);
+Test_N(q樓, q樓, q樓, q樓, q樓);
+Test_N(q淚, q淚, q淚, q淚, q淚);
+Test_N(q漏, q漏, q漏, q漏, q漏);
+Test_N(q累, q累, q累, q累, q累);
+Test_N(q縷, q縷, q縷, q縷, q縷);
+Test_N(q陋, q陋, q陋, q陋, q陋);
+Test_N(q勒, q勒, q勒, q勒, q勒);
+Test_N(q肋, q肋, q肋, q肋, q肋);
+Test_N(q凜, q凜, q凜, q凜, q凜);
+Test_N(q凌, q凌, q凌, q凌, q凌);
+Test_N(q稜, q稜, q稜, q稜, q稜);
+Test_N(q綾, q綾, q綾, q綾, q綾);
+Test_N(q菱, q菱, q菱, q菱, q菱);
+Test_N(q陵, q陵, q陵, q陵, q陵);
+Test_N(q讀, q讀, q讀, q讀, q讀);
+Test_N(q拏, q拏, q拏, q拏, q拏);
+Test_N(q樂, q樂, q樂, q樂, q樂);
+Test_N(q諾, q諾, q諾, q諾, q諾);
+Test_N(q丹, q丹, q丹, q丹, q丹);
+Test_N(q寧, q寧, q寧, q寧, q寧);
+Test_N(q怒, q怒, q怒, q怒, q怒);
+Test_N(q率, q率, q率, q率, q率);
+Test_N(q異, q異, q異, q異, q異);
+Test_N(q北, q北, q北, q北, q北);
+Test_N(q磻, q磻, q磻, q磻, q磻);
+Test_N(q便, q便, q便, q便, q便);
+Test_N(q復, q復, q復, q復, q復);
+Test_N(q不, q不, q不, q不, q不);
+Test_N(q泌, q泌, q泌, q泌, q泌);
+Test_N(q數, q數, q數, q數, q數);
+Test_N(q索, q索, q索, q索, q索);
+Test_N(q參, q參, q參, q參, q參);
+Test_N(q塞, q塞, q塞, q塞, q塞);
+Test_N(q省, q省, q省, q省, q省);
+Test_N(q葉, q葉, q葉, q葉, q葉);
+Test_N(q說, q說, q說, q說, q說);
+Test_N(q殺, q殺, q殺, q殺, q殺);
+Test_N(q辰, q辰, q辰, q辰, q辰);
+Test_N(q沈, q沈, q沈, q沈, q沈);
+Test_N(q拾, q拾, q拾, q拾, q拾);
+Test_N(q若, q若, q若, q若, q若);
+Test_N(q掠, q掠, q掠, q掠, q掠);
+Test_N(q略, q略, q略, q略, q略);
+Test_N(q亮, q亮, q亮, q亮, q亮);
+Test_N(q兩, q兩, q兩, q兩, q兩);
+Test_N(q凉, q凉, q凉, q凉, q凉);
+Test_N(q梁, q梁, q梁, q梁, q梁);
+Test_N(q糧, q糧, q糧, q糧, q糧);
+Test_N(q良, q良, q良, q良, q良);
+Test_N(q諒, q諒, q諒, q諒, q諒);
+Test_N(q量, q量, q量, q量, q量);
+Test_N(q勵, q勵, q勵, q勵, q勵);
+Test_N(q呂, q呂, q呂, q呂, q呂);
+Test_N(q女, q女, q女, q女, q女);
+Test_N(q廬, q廬, q廬, q廬, q廬);
+Test_N(q旅, q旅, q旅, q旅, q旅);
+Test_N(q濾, q濾, q濾, q濾, q濾);
+Test_N(q礪, q礪, q礪, q礪, q礪);
+Test_N(q閭, q閭, q閭, q閭, q閭);
+Test_N(q驪, q驪, q驪, q驪, q驪);
+Test_N(q麗, q麗, q麗, q麗, q麗);
+Test_N(q黎, q黎, q黎, q黎, q黎);
+Test_N(q力, q力, q力, q力, q力);
+Test_N(q曆, q曆, q曆, q曆, q曆);
+Test_N(q歷, q歷, q歷, q歷, q歷);
+Test_N(q轢, q轢, q轢, q轢, q轢);
+Test_N(q年, q年, q年, q年, q年);
+Test_N(q憐, q憐, q憐, q憐, q憐);
+Test_N(q戀, q戀, q戀, q戀, q戀);
+Test_N(q撚, q撚, q撚, q撚, q撚);
+Test_N(q漣, q漣, q漣, q漣, q漣);
+Test_N(q煉, q煉, q煉, q煉, q煉);
+Test_N(q璉, q璉, q璉, q璉, q璉);
+Test_N(q秊, q秊, q秊, q秊, q秊);
+Test_N(q練, q練, q練, q練, q練);
+Test_N(q聯, q聯, q聯, q聯, q聯);
+Test_N(q輦, q輦, q輦, q輦, q輦);
+Test_N(q蓮, q蓮, q蓮, q蓮, q蓮);
+Test_N(q連, q連, q連, q連, q連);
+Test_N(q鍊, q鍊, q鍊, q鍊, q鍊);
+Test_N(q列, q列, q列, q列, q列);
+Test_N(q劣, q劣, q劣, q劣, q劣);
+Test_N(q咽, q咽, q咽, q咽, q咽);
+Test_N(q烈, q烈, q烈, q烈, q烈);
+Test_N(q裂, q裂, q裂, q裂, q裂);
+Test_N(q說, q說, q說, q說, q說);
+Test_N(q廉, q廉, q廉, q廉, q廉);
+Test_N(q念, q念, q念, q念, q念);
+Test_N(q捻, q捻, q捻, q捻, q捻);
+Test_N(q殮, q殮, q殮, q殮, q殮);
+Test_N(q簾, q簾, q簾, q簾, q簾);
+Test_N(q獵, q獵, q獵, q獵, q獵);
+Test_N(q令, q令, q令, q令, q令);
+Test_N(q囹, q囹, q囹, q囹, q囹);
+Test_N(q寧, q寧, q寧, q寧, q寧);
+Test_N(q嶺, q嶺, q嶺, q嶺, q嶺);
+Test_N(q怜, q怜, q怜, q怜, q怜);
+Test_N(q玲, q玲, q玲, q玲, q玲);
+Test_N(q瑩, q瑩, q瑩, q瑩, q瑩);
+Test_N(q羚, q羚, q羚, q羚, q羚);
+Test_N(q聆, q聆, q聆, q聆, q聆);
+Test_N(q鈴, q鈴, q鈴, q鈴, q鈴);
+Test_N(q零, q零, q零, q零, q零);
+Test_N(q靈, q靈, q靈, q靈, q靈);
+Test_N(q領, q領, q領, q領, q領);
+Test_N(q例, q例, q例, q例, q例);
+Test_N(q禮, q禮, q禮, q禮, q禮);
+Test_N(q醴, q醴, q醴, q醴, q醴);
+Test_N(q隸, q隸, q隸, q隸, q隸);
+Test_N(q惡, q惡, q惡, q惡, q惡);
+Test_N(q了, q了, q了, q了, q了);
+Test_N(q僚, q僚, q僚, q僚, q僚);
+Test_N(q寮, q寮, q寮, q寮, q寮);
+Test_N(q尿, q尿, q尿, q尿, q尿);
+Test_N(q料, q料, q料, q料, q料);
+Test_N(q樂, q樂, q樂, q樂, q樂);
+Test_N(q燎, q燎, q燎, q燎, q燎);
+Test_N(q療, q療, q療, q療, q療);
+Test_N(q蓼, q蓼, q蓼, q蓼, q蓼);
+Test_N(q遼, q遼, q遼, q遼, q遼);
+Test_N(q龍, q龍, q龍, q龍, q龍);
+Test_N(q暈, q暈, q暈, q暈, q暈);
+Test_N(q阮, q阮, q阮, q阮, q阮);
+Test_N(q劉, q劉, q劉, q劉, q劉);
+Test_N(q杻, q杻, q杻, q杻, q杻);
+Test_N(q柳, q柳, q柳, q柳, q柳);
+Test_N(q流, q流, q流, q流, q流);
+Test_N(q溜, q溜, q溜, q溜, q溜);
+Test_N(q琉, q琉, q琉, q琉, q琉);
+Test_N(q留, q留, q留, q留, q留);
+Test_N(q硫, q硫, q硫, q硫, q硫);
+Test_N(q紐, q紐, q紐, q紐, q紐);
+Test_N(q類, q類, q類, q類, q類);
+Test_N(q六, q六, q六, q六, q六);
+Test_N(q戮, q戮, q戮, q戮, q戮);
+Test_N(q陸, q陸, q陸, q陸, q陸);
+Test_N(q倫, q倫, q倫, q倫, q倫);
+Test_N(q崙, q崙, q崙, q崙, q崙);
+Test_N(q淪, q淪, q淪, q淪, q淪);
+Test_N(q輪, q輪, q輪, q輪, q輪);
+Test_N(q律, q律, q律, q律, q律);
+Test_N(q慄, q慄, q慄, q慄, q慄);
+Test_N(q栗, q栗, q栗, q栗, q栗);
+Test_N(q率, q率, q率, q率, q率);
+Test_N(q隆, q隆, q隆, q隆, q隆);
+Test_N(q利, q利, q利, q利, q利);
+Test_N(q吏, q吏, q吏, q吏, q吏);
+Test_N(q履, q履, q履, q履, q履);
+Test_N(q易, q易, q易, q易, q易);
+Test_N(q李, q李, q李, q李, q李);
+Test_N(q梨, q梨, q梨, q梨, q梨);
+Test_N(q泥, q泥, q泥, q泥, q泥);
+Test_N(q理, q理, q理, q理, q理);
+Test_N(q痢, q痢, q痢, q痢, q痢);
+Test_N(q罹, q罹, q罹, q罹, q罹);
+Test_N(q裏, q裏, q裏, q裏, q裏);
+Test_N(q裡, q裡, q裡, q裡, q裡);
+Test_N(q里, q里, q里, q里, q里);
+Test_N(q離, q離, q離, q離, q離);
+Test_N(q匿, q匿, q匿, q匿, q匿);
+Test_N(q溺, q溺, q溺, q溺, q溺);
+Test_N(q吝, q吝, q吝, q吝, q吝);
+Test_N(q燐, q燐, q燐, q燐, q燐);
+Test_N(q璘, q璘, q璘, q璘, q璘);
+Test_N(q藺, q藺, q藺, q藺, q藺);
+Test_N(q隣, q隣, q隣, q隣, q隣);
+Test_N(q鱗, q鱗, q鱗, q鱗, q鱗);
+Test_N(q麟, q麟, q麟, q麟, q麟);
+Test_N(q林, q林, q林, q林, q林);
+Test_N(q淋, q淋, q淋, q淋, q淋);
+Test_N(q臨, q臨, q臨, q臨, q臨);
+Test_N(q立, q立, q立, q立, q立);
+Test_N(q笠, q笠, q笠, q笠, q笠);
+Test_N(q粒, q粒, q粒, q粒, q粒);
+Test_N(q狀, q狀, q狀, q狀, q狀);
+Test_N(q炙, q炙, q炙, q炙, q炙);
+Test_N(q識, q識, q識, q識, q識);
+Test_N(q什, q什, q什, q什, q什);
+Test_N(q茶, q茶, q茶, q茶, q茶);
+Test_N(q刺, q刺, q刺, q刺, q刺);
+Test_N(q切, q切, q切, q切, q切);
+Test_N(q度, q度, q度, q度, q度);
+Test_N(q拓, q拓, q拓, q拓, q拓);
+Test_N(q糖, q糖, q糖, q糖, q糖);
+Test_N(q宅, q宅, q宅, q宅, q宅);
+Test_N(q洞, q洞, q洞, q洞, q洞);
+Test_N(q暴, q暴, q暴, q暴, q暴);
+Test_N(q輻, q輻, q輻, q輻, q輻);
+Test_N(q行, q行, q行, q行, q行);
+Test_N(q降, q降, q降, q降, q降);
+Test_N(q見, q見, q見, q見, q見);
+Test_N(q廓, q廓, q廓, q廓, q廓);
+Test_N(q兀, q兀, q兀, q兀, q兀);
+Test_N(q嗀, q嗀, q嗀, q嗀, q嗀);
+Test_N(q塚, q塚, q塚, q塚, q塚);
+Test_N(q晴, q晴, q晴, q晴, q晴);
+Test_N(q凞, q凞, q凞, q凞, q凞);
+Test_N(q猪, q猪, q猪, q猪, q猪);
+Test_N(q益, q益, q益, q益, q益);
+Test_N(q礼, q礼, q礼, q礼, q礼);
+Test_N(q神, q神, q神, q神, q神);
+Test_N(q祥, q祥, q祥, q祥, q祥);
+Test_N(q福, q福, q福, q福, q福);
+Test_N(q靖, q靖, q靖, q靖, q靖);
+Test_N(q精, q精, q精, q精, q精);
+Test_N(q羽, q羽, q羽, q羽, q羽);
+Test_N(q蘒, q蘒, q蘒, q蘒, q蘒);
+Test_N(q諸, q諸, q諸, q諸, q諸);
+Test_N(q逸, q逸, q逸, q逸, q逸);
+Test_N(q都, q都, q都, q都, q都);
+Test_N(q飯, q飯, q飯, q飯, q飯);
+Test_N(q飼, q飼, q飼, q飼, q飼);
+Test_N(q館, q館, q館, q館, q館);
+Test_N(q鶴, q鶴, q鶴, q鶴, q鶴);
+Test_N(q郞, q郞, q郞, q郞, q郞);
+Test_N(q隷, q隷, q隷, q隷, q隷);
+Test_N(q侮, q侮, q侮, q侮, q侮);
+Test_N(q僧, q僧, q僧, q僧, q僧);
+Test_N(q免, q免, q免, q免, q免);
+Test_N(q勉, q勉, q勉, q勉, q勉);
+Test_N(q勤, q勤, q勤, q勤, q勤);
+Test_N(q卑, q卑, q卑, q卑, q卑);
+Test_N(q喝, q喝, q喝, q喝, q喝);
+Test_N(q嘆, q嘆, q嘆, q嘆, q嘆);
+Test_N(q器, q器, q器, q器, q器);
+Test_N(q塀, q塀, q塀, q塀, q塀);
+Test_N(q墨, q墨, q墨, q墨, q墨);
+Test_N(q層, q層, q層, q層, q層);
+Test_N(q屮, q屮, q屮, q屮, q屮);
+Test_N(q悔, q悔, q悔, q悔, q悔);
+Test_N(q慨, q慨, q慨, q慨, q慨);
+Test_N(q憎, q憎, q憎, q憎, q憎);
+Test_N(q懲, q懲, q懲, q懲, q懲);
+Test_N(q敏, q敏, q敏, q敏, q敏);
+Test_N(q既, q既, q既, q既, q既);
+Test_N(q暑, q暑, q暑, q暑, q暑);
+Test_N(q梅, q梅, q梅, q梅, q梅);
+Test_N(q海, q海, q海, q海, q海);
+Test_N(q渚, q渚, q渚, q渚, q渚);
+Test_N(q漢, q漢, q漢, q漢, q漢);
+Test_N(q煮, q煮, q煮, q煮, q煮);
+Test_N(q爫, q爫, q爫, q爫, q爫);
+Test_N(q琢, q琢, q琢, q琢, q琢);
+Test_N(q碑, q碑, q碑, q碑, q碑);
+Test_N(q社, q社, q社, q社, q社);
+Test_N(q祉, q祉, q祉, q祉, q祉);
+Test_N(q祈, q祈, q祈, q祈, q祈);
+Test_N(q祐, q祐, q祐, q祐, q祐);
+Test_N(q祖, q祖, q祖, q祖, q祖);
+Test_N(q祝, q祝, q祝, q祝, q祝);
+Test_N(q禍, q禍, q禍, q禍, q禍);
+Test_N(q禎, q禎, q禎, q禎, q禎);
+Test_N(q穀, q穀, q穀, q穀, q穀);
+Test_N(q突, q突, q突, q突, q突);
+Test_N(q節, q節, q節, q節, q節);
+Test_N(q練, q練, q練, q練, q練);
+Test_N(q縉, q縉, q縉, q縉, q縉);
+Test_N(q繁, q繁, q繁, q繁, q繁);
+Test_N(q署, q署, q署, q署, q署);
+Test_N(q者, q者, q者, q者, q者);
+Test_N(q臭, q臭, q臭, q臭, q臭);
+Test_N(q艹, q艹, q艹, q艹, q艹);
+Test_N(q艹, q艹, q艹, q艹, q艹);
+Test_N(q著, q著, q著, q著, q著);
+Test_N(q褐, q褐, q褐, q褐, q褐);
+Test_N(q視, q視, q視, q視, q視);
+Test_N(q謁, q謁, q謁, q謁, q謁);
+Test_N(q謹, q謹, q謹, q謹, q謹);
+Test_N(q賓, q賓, q賓, q賓, q賓);
+Test_N(q贈, q贈, q贈, q贈, q贈);
+Test_N(q辶, q辶, q辶, q辶, q辶);
+Test_N(q逸, q逸, q逸, q逸, q逸);
+Test_N(q難, q難, q難, q難, q難);
+Test_N(q響, q響, q響, q響, q響);
+Test_N(q頻, q頻, q頻, q頻, q頻);
+Test_N(q恵, q恵, q恵, q恵, q恵);
+Test_N(q𤋮, q𤋮, q𤋮, q𤋮, q𤋮);
+Test_N(q舘, q舘, q舘, q舘, q舘);
+Test_N(q並, q並, q並, q並, q並);
+Test_N(q况, q况, q况, q况, q况);
+Test_N(q全, q全, q全, q全, q全);
+Test_N(q侀, q侀, q侀, q侀, q侀);
+Test_N(q充, q充, q充, q充, q充);
+Test_N(q冀, q冀, q冀, q冀, q冀);
+Test_N(q勇, q勇, q勇, q勇, q勇);
+Test_N(q勺, q勺, q勺, q勺, q勺);
+Test_N(q喝, q喝, q喝, q喝, q喝);
+Test_N(q啕, q啕, q啕, q啕, q啕);
+Test_N(q喙, q喙, q喙, q喙, q喙);
+Test_N(q嗢, q嗢, q嗢, q嗢, q嗢);
+Test_N(q塚, q塚, q塚, q塚, q塚);
+Test_N(q墳, q墳, q墳, q墳, q墳);
+Test_N(q奄, q奄, q奄, q奄, q奄);
+Test_N(q奔, q奔, q奔, q奔, q奔);
+Test_N(q婢, q婢, q婢, q婢, q婢);
+Test_N(q嬨, q嬨, q嬨, q嬨, q嬨);
+Test_N(q廒, q廒, q廒, q廒, q廒);
+Test_N(q廙, q廙, q廙, q廙, q廙);
+Test_N(q彩, q彩, q彩, q彩, q彩);
+Test_N(q徭, q徭, q徭, q徭, q徭);
+Test_N(q惘, q惘, q惘, q惘, q惘);
+Test_N(q慎, q慎, q慎, q慎, q慎);
+Test_N(q愈, q愈, q愈, q愈, q愈);
+Test_N(q憎, q憎, q憎, q憎, q憎);
+Test_N(q慠, q慠, q慠, q慠, q慠);
+Test_N(q懲, q懲, q懲, q懲, q懲);
+Test_N(q戴, q戴, q戴, q戴, q戴);
+Test_N(q揄, q揄, q揄, q揄, q揄);
+Test_N(q搜, q搜, q搜, q搜, q搜);
+Test_N(q摒, q摒, q摒, q摒, q摒);
+Test_N(q敖, q敖, q敖, q敖, q敖);
+Test_N(q晴, q晴, q晴, q晴, q晴);
+Test_N(q朗, q朗, q朗, q朗, q朗);
+Test_N(q望, q望, q望, q望, q望);
+Test_N(q杖, q杖, q杖, q杖, q杖);
+Test_N(q歹, q歹, q歹, q歹, q歹);
+Test_N(q殺, q殺, q殺, q殺, q殺);
+Test_N(q流, q流, q流, q流, q流);
+Test_N(q滛, q滛, q滛, q滛, q滛);
+Test_N(q滋, q滋, q滋, q滋, q滋);
+Test_N(q漢, q漢, q漢, q漢, q漢);
+Test_N(q瀞, q瀞, q瀞, q瀞, q瀞);
+Test_N(q煮, q煮, q煮, q煮, q煮);
+Test_N(q瞧, q瞧, q瞧, q瞧, q瞧);
+Test_N(q爵, q爵, q爵, q爵, q爵);
+Test_N(q犯, q犯, q犯, q犯, q犯);
+Test_N(q猪, q猪, q猪, q猪, q猪);
+Test_N(q瑱, q瑱, q瑱, q瑱, q瑱);
+Test_N(q甆, q甆, q甆, q甆, q甆);
+Test_N(q画, q画, q画, q画, q画);
+Test_N(q瘝, q瘝, q瘝, q瘝, q瘝);
+Test_N(q瘟, q瘟, q瘟, q瘟, q瘟);
+Test_N(q益, q益, q益, q益, q益);
+Test_N(q盛, q盛, q盛, q盛, q盛);
+Test_N(q直, q直, q直, q直, q直);
+Test_N(q睊, q睊, q睊, q睊, q睊);
+Test_N(q着, q着, q着, q着, q着);
+Test_N(q磌, q磌, q磌, q磌, q磌);
+Test_N(q窱, q窱, q窱, q窱, q窱);
+Test_N(q節, q節, q節, q節, q節);
+Test_N(q类, q类, q类, q类, q类);
+Test_N(q絛, q絛, q絛, q絛, q絛);
+Test_N(q練, q練, q練, q練, q練);
+Test_N(q缾, q缾, q缾, q缾, q缾);
+Test_N(q者, q者, q者, q者, q者);
+Test_N(q荒, q荒, q荒, q荒, q荒);
+Test_N(q華, q華, q華, q華, q華);
+Test_N(q蝹, q蝹, q蝹, q蝹, q蝹);
+Test_N(q襁, q襁, q襁, q襁, q襁);
+Test_N(q覆, q覆, q覆, q覆, q覆);
+Test_N(q視, q視, q視, q視, q視);
+Test_N(q調, q調, q調, q調, q調);
+Test_N(q諸, q諸, q諸, q諸, q諸);
+Test_N(q請, q請, q請, q請, q請);
+Test_N(q謁, q謁, q謁, q謁, q謁);
+Test_N(q諾, q諾, q諾, q諾, q諾);
+Test_N(q諭, q諭, q諭, q諭, q諭);
+Test_N(q謹, q謹, q謹, q謹, q謹);
+Test_N(q變, q變, q變, q變, q變);
+Test_N(q贈, q贈, q贈, q贈, q贈);
+Test_N(q輸, q輸, q輸, q輸, q輸);
+Test_N(q遲, q遲, q遲, q遲, q遲);
+Test_N(q醙, q醙, q醙, q醙, q醙);
+Test_N(q鉶, q鉶, q鉶, q鉶, q鉶);
+Test_N(q陼, q陼, q陼, q陼, q陼);
+Test_N(q難, q難, q難, q難, q難);
+Test_N(q靖, q靖, q靖, q靖, q靖);
+Test_N(q韛, q韛, q韛, q韛, q韛);
+Test_N(q響, q響, q響, q響, q響);
+Test_N(q頋, q頋, q頋, q頋, q頋);
+Test_N(q頻, q頻, q頻, q頻, q頻);
+Test_N(q鬒, q鬒, q鬒, q鬒, q鬒);
+Test_N(q龜, q龜, q龜, q龜, q龜);
+Test_N(q𢡊, q𢡊, q𢡊, q𢡊, q𢡊);
+Test_N(q𢡄, q𢡄, q𢡄, q𢡄, q𢡄);
+Test_N(q𣏕, q𣏕, q𣏕, q𣏕, q𣏕);
+Test_N(q㮝, q㮝, q㮝, q㮝, q㮝);
+Test_N(q䀘, q䀘, q䀘, q䀘, q䀘);
+Test_N(q䀹, q䀹, q䀹, q䀹, q䀹);
+Test_N(q𥉉, q𥉉, q𥉉, q𥉉, q𥉉);
+Test_N(q𥳐, q𥳐, q𥳐, q𥳐, q𥳐);
+Test_N(q𧻓, q𧻓, q𧻓, q𧻓, q𧻓);
+Test_N(q齃, q齃, q齃, q齃, q齃);
+Test_N(q龎, q龎, q龎, q龎, q龎);
+Test_N(qff, qff, qff, qff, qff);
+Test_N(qfi, qfi, qfi, qfi, qfi);
+Test_N(qfl, qfl, qfl, qfl, qfl);
+Test_N(qffi, qffi, qffi, qffi, qffi);
+Test_N(qffl, qffl, qffl, qffl, qffl);
+Test_N(qſt, qſt, qſt, qst, qst);
+Test_N(qst, qst, qst, qst, qst);
+Test_N(qﬓ, qﬓ, qﬓ, qմն, qմն);
+Test_N(qﬔ, qﬔ, qﬔ, qմե, qմե);
+Test_N(qﬕ, qﬕ, qﬕ, qմի, qմի);
+Test_N(qﬖ, qﬖ, qﬖ, qվն, qվն);
+Test_N(qﬗ, qﬗ, qﬗ, qմխ, qմխ);
+Test_N(qיִ, qיִ, qיִ, qיִ, qיִ);
+Test_N(qײַ, qײַ, qײַ, qײַ, qײַ);
+Test_N(qﬠ, qﬠ, qﬠ, qע, qע);
+Test_N(qﬡ, qﬡ, qﬡ, qא, qא);
+Test_N(qﬢ, qﬢ, qﬢ, qד, qד);
+Test_N(qﬣ, qﬣ, qﬣ, qה, qה);
+Test_N(qﬤ, qﬤ, qﬤ, qכ, qכ);
+Test_N(qﬥ, qﬥ, qﬥ, qל, qל);
+Test_N(qﬦ, qﬦ, qﬦ, qם, qם);
+Test_N(qﬧ, qﬧ, qﬧ, qר, qר);
+Test_N(qﬨ, qﬨ, qﬨ, qת, qת);
+Test_N(q﬩, q﬩, q﬩, q+, q+);
+Test_N(qשׁ, qשׁ, qשׁ, qשׁ, qשׁ);
+Test_N(qשׂ, qשׂ, qשׂ, qשׂ, qשׂ);
+Test_N(qשּׁ, qשּׁ, qשּׁ, qשּׁ, qשּׁ);
+Test_N(qשּׂ, qשּׂ, qשּׂ, qשּׂ, qשּׂ);
+Test_N(qאַ, qאַ, qאַ, qאַ, qאַ);
+Test_N(qאָ, qאָ, qאָ, qאָ, qאָ);
+Test_N(qאּ, qאּ, qאּ, qאּ, qאּ);
+Test_N(qבּ, qבּ, qבּ, qבּ, qבּ);
+Test_N(qגּ, qגּ, qגּ, qגּ, qגּ);
+Test_N(qדּ, qדּ, qדּ, qדּ, qדּ);
+Test_N(qהּ, qהּ, qהּ, qהּ, qהּ);
+Test_N(qוּ, qוּ, qוּ, qוּ, qוּ);
+Test_N(qזּ, qזּ, qזּ, qזּ, qזּ);
+Test_N(qטּ, qטּ, qטּ, qטּ, qטּ);
+Test_N(qיּ, qיּ, qיּ, qיּ, qיּ);
+Test_N(qךּ, qךּ, qךּ, qךּ, qךּ);
+Test_N(qכּ, qכּ, qכּ, qכּ, qכּ);
+Test_N(qלּ, qלּ, qלּ, qלּ, qלּ);
+Test_N(qמּ, qמּ, qמּ, qמּ, qמּ);
+Test_N(qנּ, qנּ, qנּ, qנּ, qנּ);
+Test_N(qסּ, qסּ, qסּ, qסּ, qסּ);
+Test_N(qףּ, qףּ, qףּ, qףּ, qףּ);
+Test_N(qפּ, qפּ, qפּ, qפּ, qפּ);
+Test_N(qצּ, qצּ, qצּ, qצּ, qצּ);
+Test_N(qקּ, qקּ, qקּ, qקּ, qקּ);
+Test_N(qרּ, qרּ, qרּ, qרּ, qרּ);
+Test_N(qשּ, qשּ, qשּ, qשּ, qשּ);
+Test_N(qתּ, qתּ, qתּ, qתּ, qתּ);
+Test_N(qוֹ, qוֹ, qוֹ, qוֹ, qוֹ);
+Test_N(qבֿ, qבֿ, qבֿ, qבֿ, qבֿ);
+Test_N(qכֿ, qכֿ, qכֿ, qכֿ, qכֿ);
+Test_N(qפֿ, qפֿ, qפֿ, qפֿ, qפֿ);
+Test_N(qﭏ, qﭏ, qﭏ, qאל, qאל);
+Test_N(qﭐ, qﭐ, qﭐ, qٱ, qٱ);
+Test_N(qﭑ, qﭑ, qﭑ, qٱ, qٱ);
+Test_N(qﭒ, qﭒ, qﭒ, qٻ, qٻ);
+Test_N(qﭓ, qﭓ, qﭓ, qٻ, qٻ);
+Test_N(qﭔ, qﭔ, qﭔ, qٻ, qٻ);
+Test_N(qﭕ, qﭕ, qﭕ, qٻ, qٻ);
+Test_N(qﭖ, qﭖ, qﭖ, qپ, qپ);
+Test_N(qﭗ, qﭗ, qﭗ, qپ, qپ);
+Test_N(qﭘ, qﭘ, qﭘ, qپ, qپ);
+Test_N(qﭙ, qﭙ, qﭙ, qپ, qپ);
+Test_N(qﭚ, qﭚ, qﭚ, qڀ, qڀ);
+Test_N(qﭛ, qﭛ, qﭛ, qڀ, qڀ);
+Test_N(qﭜ, qﭜ, qﭜ, qڀ, qڀ);
+Test_N(qﭝ, qﭝ, qﭝ, qڀ, qڀ);
+Test_N(qﭞ, qﭞ, qﭞ, qٺ, qٺ);
+Test_N(qﭟ, qﭟ, qﭟ, qٺ, qٺ);
+Test_N(qﭠ, qﭠ, qﭠ, qٺ, qٺ);
+Test_N(qﭡ, qﭡ, qﭡ, qٺ, qٺ);
+Test_N(qﭢ, qﭢ, qﭢ, qٿ, qٿ);
+Test_N(qﭣ, qﭣ, qﭣ, qٿ, qٿ);
+Test_N(qﭤ, qﭤ, qﭤ, qٿ, qٿ);
+Test_N(qﭥ, qﭥ, qﭥ, qٿ, qٿ);
+Test_N(qﭦ, qﭦ, qﭦ, qٹ, qٹ);
+Test_N(qﭧ, qﭧ, qﭧ, qٹ, qٹ);
+Test_N(qﭨ, qﭨ, qﭨ, qٹ, qٹ);
+Test_N(qﭩ, qﭩ, qﭩ, qٹ, qٹ);
+Test_N(qﭪ, qﭪ, qﭪ, qڤ, qڤ);
+Test_N(qﭫ, qﭫ, qﭫ, qڤ, qڤ);
+Test_N(qﭬ, qﭬ, qﭬ, qڤ, qڤ);
+Test_N(qﭭ, qﭭ, qﭭ, qڤ, qڤ);
+Test_N(qﭮ, qﭮ, qﭮ, qڦ, qڦ);
+Test_N(qﭯ, qﭯ, qﭯ, qڦ, qڦ);
+Test_N(qﭰ, qﭰ, qﭰ, qڦ, qڦ);
+Test_N(qﭱ, qﭱ, qﭱ, qڦ, qڦ);
+Test_N(qﭲ, qﭲ, qﭲ, qڄ, qڄ);
+Test_N(qﭳ, qﭳ, qﭳ, qڄ, qڄ);
+Test_N(qﭴ, qﭴ, qﭴ, qڄ, qڄ);
+Test_N(qﭵ, qﭵ, qﭵ, qڄ, qڄ);
+Test_N(qﭶ, qﭶ, qﭶ, qڃ, qڃ);
+Test_N(qﭷ, qﭷ, qﭷ, qڃ, qڃ);
+Test_N(qﭸ, qﭸ, qﭸ, qڃ, qڃ);
+Test_N(qﭹ, qﭹ, qﭹ, qڃ, qڃ);
+Test_N(qﭺ, qﭺ, qﭺ, qچ, qچ);
+Test_N(qﭻ, qﭻ, qﭻ, qچ, qچ);
+Test_N(qﭼ, qﭼ, qﭼ, qچ, qچ);
+Test_N(qﭽ, qﭽ, qﭽ, qچ, qچ);
+Test_N(qﭾ, qﭾ, qﭾ, qڇ, qڇ);
+Test_N(qﭿ, qﭿ, qﭿ, qڇ, qڇ);
+Test_N(qﮀ, qﮀ, qﮀ, qڇ, qڇ);
+Test_N(qﮁ, qﮁ, qﮁ, qڇ, qڇ);
+Test_N(qﮂ, qﮂ, qﮂ, qڍ, qڍ);
+Test_N(qﮃ, qﮃ, qﮃ, qڍ, qڍ);
+Test_N(qﮄ, qﮄ, qﮄ, qڌ, qڌ);
+Test_N(qﮅ, qﮅ, qﮅ, qڌ, qڌ);
+Test_N(qﮆ, qﮆ, qﮆ, qڎ, qڎ);
+Test_N(qﮇ, qﮇ, qﮇ, qڎ, qڎ);
+Test_N(qﮈ, qﮈ, qﮈ, qڈ, qڈ);
+Test_N(qﮉ, qﮉ, qﮉ, qڈ, qڈ);
+Test_N(qﮊ, qﮊ, qﮊ, qژ, qژ);
+Test_N(qﮋ, qﮋ, qﮋ, qژ, qژ);
+Test_N(qﮌ, qﮌ, qﮌ, qڑ, qڑ);
+Test_N(qﮍ, qﮍ, qﮍ, qڑ, qڑ);
+Test_N(qﮎ, qﮎ, qﮎ, qک, qک);
+Test_N(qﮏ, qﮏ, qﮏ, qک, qک);
+Test_N(qﮐ, qﮐ, qﮐ, qک, qک);
+Test_N(qﮑ, qﮑ, qﮑ, qک, qک);
+Test_N(qﮒ, qﮒ, qﮒ, qگ, qگ);
+Test_N(qﮓ, qﮓ, qﮓ, qگ, qگ);
+Test_N(qﮔ, qﮔ, qﮔ, qگ, qگ);
+Test_N(qﮕ, qﮕ, qﮕ, qگ, qگ);
+Test_N(qﮖ, qﮖ, qﮖ, qڳ, qڳ);
+Test_N(qﮗ, qﮗ, qﮗ, qڳ, qڳ);
+Test_N(qﮘ, qﮘ, qﮘ, qڳ, qڳ);
+Test_N(qﮙ, qﮙ, qﮙ, qڳ, qڳ);
+Test_N(qﮚ, qﮚ, qﮚ, qڱ, qڱ);
+Test_N(qﮛ, qﮛ, qﮛ, qڱ, qڱ);
+Test_N(qﮜ, qﮜ, qﮜ, qڱ, qڱ);
+Test_N(qﮝ, qﮝ, qﮝ, qڱ, qڱ);
+Test_N(qﮞ, qﮞ, qﮞ, qں, qں);
+Test_N(qﮟ, qﮟ, qﮟ, qں, qں);
+Test_N(qﮠ, qﮠ, qﮠ, qڻ, qڻ);
+Test_N(qﮡ, qﮡ, qﮡ, qڻ, qڻ);
+Test_N(qﮢ, qﮢ, qﮢ, qڻ, qڻ);
+Test_N(qﮣ, qﮣ, qﮣ, qڻ, qڻ);
+Test_N(qﮤ, qﮤ, qﮤ, qۀ, qۀ);
+Test_N(qﮥ, qﮥ, qﮥ, qۀ, qۀ);
+Test_N(qﮦ, qﮦ, qﮦ, qہ, qہ);
+Test_N(qﮧ, qﮧ, qﮧ, qہ, qہ);
+Test_N(qﮨ, qﮨ, qﮨ, qہ, qہ);
+Test_N(qﮩ, qﮩ, qﮩ, qہ, qہ);
+Test_N(qﮪ, qﮪ, qﮪ, qھ, qھ);
+Test_N(qﮫ, qﮫ, qﮫ, qھ, qھ);
+Test_N(qﮬ, qﮬ, qﮬ, qھ, qھ);
+Test_N(qﮭ, qﮭ, qﮭ, qھ, qھ);
+Test_N(qﮮ, qﮮ, qﮮ, qے, qے);
+Test_N(qﮯ, qﮯ, qﮯ, qے, qے);
+Test_N(qﮰ, qﮰ, qﮰ, qۓ, qۓ);
+Test_N(qﮱ, qﮱ, qﮱ, qۓ, qۓ);
+Test_N(qﯓ, qﯓ, qﯓ, qڭ, qڭ);
+Test_N(qﯔ, qﯔ, qﯔ, qڭ, qڭ);
+Test_N(qﯕ, qﯕ, qﯕ, qڭ, qڭ);
+Test_N(qﯖ, qﯖ, qﯖ, qڭ, qڭ);
+Test_N(qﯗ, qﯗ, qﯗ, qۇ, qۇ);
+Test_N(qﯘ, qﯘ, qﯘ, qۇ, qۇ);
+Test_N(qﯙ, qﯙ, qﯙ, qۆ, qۆ);
+Test_N(qﯚ, qﯚ, qﯚ, qۆ, qۆ);
+Test_N(qﯛ, qﯛ, qﯛ, qۈ, qۈ);
+Test_N(qﯜ, qﯜ, qﯜ, qۈ, qۈ);
+Test_N(qﯝ, qﯝ, qﯝ, qۇٴ, qۇٴ);
+Test_N(qﯞ, qﯞ, qﯞ, qۋ, qۋ);
+Test_N(qﯟ, qﯟ, qﯟ, qۋ, qۋ);
+Test_N(qﯠ, qﯠ, qﯠ, qۅ, qۅ);
+Test_N(qﯡ, qﯡ, qﯡ, qۅ, qۅ);
+Test_N(qﯢ, qﯢ, qﯢ, qۉ, qۉ);
+Test_N(qﯣ, qﯣ, qﯣ, qۉ, qۉ);
+Test_N(qﯤ, qﯤ, qﯤ, qې, qې);
+Test_N(qﯥ, qﯥ, qﯥ, qې, qې);
+Test_N(qﯦ, qﯦ, qﯦ, qې, qې);
+Test_N(qﯧ, qﯧ, qﯧ, qې, qې);
+Test_N(qﯨ, qﯨ, qﯨ, qى, qى);
+Test_N(qﯩ, qﯩ, qﯩ, qى, qى);
+Test_N(qﯪ, qﯪ, qﯪ, qئا, qئا);
+Test_N(qﯫ, qﯫ, qﯫ, qئا, qئا);
+Test_N(qﯬ, qﯬ, qﯬ, qئە, qئە);
+Test_N(qﯭ, qﯭ, qﯭ, qئە, qئە);
+Test_N(qﯮ, qﯮ, qﯮ, qئو, qئو);
+Test_N(qﯯ, qﯯ, qﯯ, qئو, qئو);
+Test_N(qﯰ, qﯰ, qﯰ, qئۇ, qئۇ);
+Test_N(qﯱ, qﯱ, qﯱ, qئۇ, qئۇ);
+Test_N(qﯲ, qﯲ, qﯲ, qئۆ, qئۆ);
+Test_N(qﯳ, qﯳ, qﯳ, qئۆ, qئۆ);
+Test_N(qﯴ, qﯴ, qﯴ, qئۈ, qئۈ);
+Test_N(qﯵ, qﯵ, qﯵ, qئۈ, qئۈ);
+Test_N(qﯶ, qﯶ, qﯶ, qئې, qئې);
+Test_N(qﯷ, qﯷ, qﯷ, qئې, qئې);
+Test_N(qﯸ, qﯸ, qﯸ, qئې, qئې);
+Test_N(qﯹ, qﯹ, qﯹ, qئى, qئى);
+Test_N(qﯺ, qﯺ, qﯺ, qئى, qئى);
+Test_N(qﯻ, qﯻ, qﯻ, qئى, qئى);
+Test_N(qﯼ, qﯼ, qﯼ, qی, qی);
+Test_N(qﯽ, qﯽ, qﯽ, qی, qی);
+Test_N(qﯾ, qﯾ, qﯾ, qی, qی);
+Test_N(qﯿ, qﯿ, qﯿ, qی, qی);
+Test_N(qﰀ, qﰀ, qﰀ, qئج, qئج);
+Test_N(qﰁ, qﰁ, qﰁ, qئح, qئح);
+Test_N(qﰂ, qﰂ, qﰂ, qئم, qئم);
+Test_N(qﰃ, qﰃ, qﰃ, qئى, qئى);
+Test_N(qﰄ, qﰄ, qﰄ, qئي, qئي);
+Test_N(qﰅ, qﰅ, qﰅ, qبج, qبج);
+Test_N(qﰆ, qﰆ, qﰆ, qبح, qبح);
+Test_N(qﰇ, qﰇ, qﰇ, qبخ, qبخ);
+Test_N(qﰈ, qﰈ, qﰈ, qبم, qبم);
+Test_N(qﰉ, qﰉ, qﰉ, qبى, qبى);
+Test_N(qﰊ, qﰊ, qﰊ, qبي, qبي);
+Test_N(qﰋ, qﰋ, qﰋ, qتج, qتج);
+Test_N(qﰌ, qﰌ, qﰌ, qتح, qتح);
+Test_N(qﰍ, qﰍ, qﰍ, qتخ, qتخ);
+Test_N(qﰎ, qﰎ, qﰎ, qتم, qتم);
+Test_N(qﰏ, qﰏ, qﰏ, qتى, qتى);
+Test_N(qﰐ, qﰐ, qﰐ, qتي, qتي);
+Test_N(qﰑ, qﰑ, qﰑ, qثج, qثج);
+Test_N(qﰒ, qﰒ, qﰒ, qثم, qثم);
+Test_N(qﰓ, qﰓ, qﰓ, qثى, qثى);
+Test_N(qﰔ, qﰔ, qﰔ, qثي, qثي);
+Test_N(qﰕ, qﰕ, qﰕ, qجح, qجح);
+Test_N(qﰖ, qﰖ, qﰖ, qجم, qجم);
+Test_N(qﰗ, qﰗ, qﰗ, qحج, qحج);
+Test_N(qﰘ, qﰘ, qﰘ, qحم, qحم);
+Test_N(qﰙ, qﰙ, qﰙ, qخج, qخج);
+Test_N(qﰚ, qﰚ, qﰚ, qخح, qخح);
+Test_N(qﰛ, qﰛ, qﰛ, qخم, qخم);
+Test_N(qﰜ, qﰜ, qﰜ, qسج, qسج);
+Test_N(qﰝ, qﰝ, qﰝ, qسح, qسح);
+Test_N(qﰞ, qﰞ, qﰞ, qسخ, qسخ);
+Test_N(qﰟ, qﰟ, qﰟ, qسم, qسم);
+Test_N(qﰠ, qﰠ, qﰠ, qصح, qصح);
+Test_N(qﰡ, qﰡ, qﰡ, qصم, qصم);
+Test_N(qﰢ, qﰢ, qﰢ, qضج, qضج);
+Test_N(qﰣ, qﰣ, qﰣ, qضح, qضح);
+Test_N(qﰤ, qﰤ, qﰤ, qضخ, qضخ);
+Test_N(qﰥ, qﰥ, qﰥ, qضم, qضم);
+Test_N(qﰦ, qﰦ, qﰦ, qطح, qطح);
+Test_N(qﰧ, qﰧ, qﰧ, qطم, qطم);
+Test_N(qﰨ, qﰨ, qﰨ, qظم, qظم);
+Test_N(qﰩ, qﰩ, qﰩ, qعج, qعج);
+Test_N(qﰪ, qﰪ, qﰪ, qعم, qعم);
+Test_N(qﰫ, qﰫ, qﰫ, qغج, qغج);
+Test_N(qﰬ, qﰬ, qﰬ, qغم, qغم);
+Test_N(qﰭ, qﰭ, qﰭ, qفج, qفج);
+Test_N(qﰮ, qﰮ, qﰮ, qفح, qفح);
+Test_N(qﰯ, qﰯ, qﰯ, qفخ, qفخ);
+Test_N(qﰰ, qﰰ, qﰰ, qفم, qفم);
+Test_N(qﰱ, qﰱ, qﰱ, qفى, qفى);
+Test_N(qﰲ, qﰲ, qﰲ, qفي, qفي);
+Test_N(qﰳ, qﰳ, qﰳ, qقح, qقح);
+Test_N(qﰴ, qﰴ, qﰴ, qقم, qقم);
+Test_N(qﰵ, qﰵ, qﰵ, qقى, qقى);
+Test_N(qﰶ, qﰶ, qﰶ, qقي, qقي);
+Test_N(qﰷ, qﰷ, qﰷ, qكا, qكا);
+Test_N(qﰸ, qﰸ, qﰸ, qكج, qكج);
+Test_N(qﰹ, qﰹ, qﰹ, qكح, qكح);
+Test_N(qﰺ, qﰺ, qﰺ, qكخ, qكخ);
+Test_N(qﰻ, qﰻ, qﰻ, qكل, qكل);
+Test_N(qﰼ, qﰼ, qﰼ, qكم, qكم);
+Test_N(qﰽ, qﰽ, qﰽ, qكى, qكى);
+Test_N(qﰾ, qﰾ, qﰾ, qكي, qكي);
+Test_N(qﰿ, qﰿ, qﰿ, qلج, qلج);
+Test_N(qﱀ, qﱀ, qﱀ, qلح, qلح);
+Test_N(qﱁ, qﱁ, qﱁ, qلخ, qلخ);
+Test_N(qﱂ, qﱂ, qﱂ, qلم, qلم);
+Test_N(qﱃ, qﱃ, qﱃ, qلى, qلى);
+Test_N(qﱄ, qﱄ, qﱄ, qلي, qلي);
+Test_N(qﱅ, qﱅ, qﱅ, qمج, qمج);
+Test_N(qﱆ, qﱆ, qﱆ, qمح, qمح);
+Test_N(qﱇ, qﱇ, qﱇ, qمخ, qمخ);
+Test_N(qﱈ, qﱈ, qﱈ, qمم, qمم);
+Test_N(qﱉ, qﱉ, qﱉ, qمى, qمى);
+Test_N(qﱊ, qﱊ, qﱊ, qمي, qمي);
+Test_N(qﱋ, qﱋ, qﱋ, qنج, qنج);
+Test_N(qﱌ, qﱌ, qﱌ, qنح, qنح);
+Test_N(qﱍ, qﱍ, qﱍ, qنخ, qنخ);
+Test_N(qﱎ, qﱎ, qﱎ, qنم, qنم);
+Test_N(qﱏ, qﱏ, qﱏ, qنى, qنى);
+Test_N(qﱐ, qﱐ, qﱐ, qني, qني);
+Test_N(qﱑ, qﱑ, qﱑ, qهج, qهج);
+Test_N(qﱒ, qﱒ, qﱒ, qهم, qهم);
+Test_N(qﱓ, qﱓ, qﱓ, qهى, qهى);
+Test_N(qﱔ, qﱔ, qﱔ, qهي, qهي);
+Test_N(qﱕ, qﱕ, qﱕ, qيج, qيج);
+Test_N(qﱖ, qﱖ, qﱖ, qيح, qيح);
+Test_N(qﱗ, qﱗ, qﱗ, qيخ, qيخ);
+Test_N(qﱘ, qﱘ, qﱘ, qيم, qيم);
+Test_N(qﱙ, qﱙ, qﱙ, qيى, qيى);
+Test_N(qﱚ, qﱚ, qﱚ, qيي, qيي);
+Test_N(qﱛ, qﱛ, qﱛ, qذٰ, qذٰ);
+Test_N(qﱜ, qﱜ, qﱜ, qرٰ, qرٰ);
+Test_N(qﱝ, qﱝ, qﱝ, qىٰ, qىٰ);
+Test_N(qﱞ, qﱞ, qﱞ, q ٌّ, q ٌّ);
+Test_N(qﱟ, qﱟ, qﱟ, q ٍّ, q ٍّ);
+Test_N(qﱠ, qﱠ, qﱠ, q َّ, q َّ);
+Test_N(qﱡ, qﱡ, qﱡ, q ُّ, q ُّ);
+Test_N(qﱢ, qﱢ, qﱢ, q ِّ, q ِّ);
+Test_N(qﱣ, qﱣ, qﱣ, q ّٰ, q ّٰ);
+Test_N(qﱤ, qﱤ, qﱤ, qئر, qئر);
+Test_N(qﱥ, qﱥ, qﱥ, qئز, qئز);
+Test_N(qﱦ, qﱦ, qﱦ, qئم, qئم);
+Test_N(qﱧ, qﱧ, qﱧ, qئن, qئن);
+Test_N(qﱨ, qﱨ, qﱨ, qئى, qئى);
+Test_N(qﱩ, qﱩ, qﱩ, qئي, qئي);
+Test_N(qﱪ, qﱪ, qﱪ, qبر, qبر);
+Test_N(qﱫ, qﱫ, qﱫ, qبز, qبز);
+Test_N(qﱬ, qﱬ, qﱬ, qبم, qبم);
+Test_N(qﱭ, qﱭ, qﱭ, qبن, qبن);
+Test_N(qﱮ, qﱮ, qﱮ, qبى, qبى);
+Test_N(qﱯ, qﱯ, qﱯ, qبي, qبي);
+Test_N(qﱰ, qﱰ, qﱰ, qتر, qتر);
+Test_N(qﱱ, qﱱ, qﱱ, qتز, qتز);
+Test_N(qﱲ, qﱲ, qﱲ, qتم, qتم);
+Test_N(qﱳ, qﱳ, qﱳ, qتن, qتن);
+Test_N(qﱴ, qﱴ, qﱴ, qتى, qتى);
+Test_N(qﱵ, qﱵ, qﱵ, qتي, qتي);
+Test_N(qﱶ, qﱶ, qﱶ, qثر, qثر);
+Test_N(qﱷ, qﱷ, qﱷ, qثز, qثز);
+Test_N(qﱸ, qﱸ, qﱸ, qثم, qثم);
+Test_N(qﱹ, qﱹ, qﱹ, qثن, qثن);
+Test_N(qﱺ, qﱺ, qﱺ, qثى, qثى);
+Test_N(qﱻ, qﱻ, qﱻ, qثي, qثي);
+Test_N(qﱼ, qﱼ, qﱼ, qفى, qفى);
+Test_N(qﱽ, qﱽ, qﱽ, qفي, qفي);
+Test_N(qﱾ, qﱾ, qﱾ, qقى, qقى);
+Test_N(qﱿ, qﱿ, qﱿ, qقي, qقي);
+Test_N(qﲀ, qﲀ, qﲀ, qكا, qكا);
+Test_N(qﲁ, qﲁ, qﲁ, qكل, qكل);
+Test_N(qﲂ, qﲂ, qﲂ, qكم, qكم);
+Test_N(qﲃ, qﲃ, qﲃ, qكى, qكى);
+Test_N(qﲄ, qﲄ, qﲄ, qكي, qكي);
+Test_N(qﲅ, qﲅ, qﲅ, qلم, qلم);
+Test_N(qﲆ, qﲆ, qﲆ, qلى, qلى);
+Test_N(qﲇ, qﲇ, qﲇ, qلي, qلي);
+Test_N(qﲈ, qﲈ, qﲈ, qما, qما);
+Test_N(qﲉ, qﲉ, qﲉ, qمم, qمم);
+Test_N(qﲊ, qﲊ, qﲊ, qنر, qنر);
+Test_N(qﲋ, qﲋ, qﲋ, qنز, qنز);
+Test_N(qﲌ, qﲌ, qﲌ, qنم, qنم);
+Test_N(qﲍ, qﲍ, qﲍ, qنن, qنن);
+Test_N(qﲎ, qﲎ, qﲎ, qنى, qنى);
+Test_N(qﲏ, qﲏ, qﲏ, qني, qني);
+Test_N(qﲐ, qﲐ, qﲐ, qىٰ, qىٰ);
+Test_N(qﲑ, qﲑ, qﲑ, qير, qير);
+Test_N(qﲒ, qﲒ, qﲒ, qيز, qيز);
+Test_N(qﲓ, qﲓ, qﲓ, qيم, qيم);
+Test_N(qﲔ, qﲔ, qﲔ, qين, qين);
+Test_N(qﲕ, qﲕ, qﲕ, qيى, qيى);
+Test_N(qﲖ, qﲖ, qﲖ, qيي, qيي);
+Test_N(qﲗ, qﲗ, qﲗ, qئج, qئج);
+Test_N(qﲘ, qﲘ, qﲘ, qئح, qئح);
+Test_N(qﲙ, qﲙ, qﲙ, qئخ, qئخ);
+Test_N(qﲚ, qﲚ, qﲚ, qئم, qئم);
+Test_N(qﲛ, qﲛ, qﲛ, qئه, qئه);
+Test_N(qﲜ, qﲜ, qﲜ, qبج, qبج);
+Test_N(qﲝ, qﲝ, qﲝ, qبح, qبح);
+Test_N(qﲞ, qﲞ, qﲞ, qبخ, qبخ);
+Test_N(qﲟ, qﲟ, qﲟ, qبم, qبم);
+Test_N(qﲠ, qﲠ, qﲠ, qبه, qبه);
+Test_N(qﲡ, qﲡ, qﲡ, qتج, qتج);
+Test_N(qﲢ, qﲢ, qﲢ, qتح, qتح);
+Test_N(qﲣ, qﲣ, qﲣ, qتخ, qتخ);
+Test_N(qﲤ, qﲤ, qﲤ, qتم, qتم);
+Test_N(qﲥ, qﲥ, qﲥ, qته, qته);
+Test_N(qﲦ, qﲦ, qﲦ, qثم, qثم);
+Test_N(qﲧ, qﲧ, qﲧ, qجح, qجح);
+Test_N(qﲨ, qﲨ, qﲨ, qجم, qجم);
+Test_N(qﲩ, qﲩ, qﲩ, qحج, qحج);
+Test_N(qﲪ, qﲪ, qﲪ, qحم, qحم);
+Test_N(qﲫ, qﲫ, qﲫ, qخج, qخج);
+Test_N(qﲬ, qﲬ, qﲬ, qخم, qخم);
+Test_N(qﲭ, qﲭ, qﲭ, qسج, qسج);
+Test_N(qﲮ, qﲮ, qﲮ, qسح, qسح);
+Test_N(qﲯ, qﲯ, qﲯ, qسخ, qسخ);
+Test_N(qﲰ, qﲰ, qﲰ, qسم, qسم);
+Test_N(qﲱ, qﲱ, qﲱ, qصح, qصح);
+Test_N(qﲲ, qﲲ, qﲲ, qصخ, qصخ);
+Test_N(qﲳ, qﲳ, qﲳ, qصم, qصم);
+Test_N(qﲴ, qﲴ, qﲴ, qضج, qضج);
+Test_N(qﲵ, qﲵ, qﲵ, qضح, qضح);
+Test_N(qﲶ, qﲶ, qﲶ, qضخ, qضخ);
+Test_N(qﲷ, qﲷ, qﲷ, qضم, qضم);
+Test_N(qﲸ, qﲸ, qﲸ, qطح, qطح);
+Test_N(qﲹ, qﲹ, qﲹ, qظم, qظم);
+Test_N(qﲺ, qﲺ, qﲺ, qعج, qعج);
+Test_N(qﲻ, qﲻ, qﲻ, qعم, qعم);
+Test_N(qﲼ, qﲼ, qﲼ, qغج, qغج);
+Test_N(qﲽ, qﲽ, qﲽ, qغم, qغم);
+Test_N(qﲾ, qﲾ, qﲾ, qفج, qفج);
+Test_N(qﲿ, qﲿ, qﲿ, qفح, qفح);
+Test_N(qﳀ, qﳀ, qﳀ, qفخ, qفخ);
+Test_N(qﳁ, qﳁ, qﳁ, qفم, qفم);
+Test_N(qﳂ, qﳂ, qﳂ, qقح, qقح);
+Test_N(qﳃ, qﳃ, qﳃ, qقم, qقم);
+Test_N(qﳄ, qﳄ, qﳄ, qكج, qكج);
+Test_N(qﳅ, qﳅ, qﳅ, qكح, qكح);
+Test_N(qﳆ, qﳆ, qﳆ, qكخ, qكخ);
+Test_N(qﳇ, qﳇ, qﳇ, qكل, qكل);
+Test_N(qﳈ, qﳈ, qﳈ, qكم, qكم);
+Test_N(qﳉ, qﳉ, qﳉ, qلج, qلج);
+Test_N(qﳊ, qﳊ, qﳊ, qلح, qلح);
+Test_N(qﳋ, qﳋ, qﳋ, qلخ, qلخ);
+Test_N(qﳌ, qﳌ, qﳌ, qلم, qلم);
+Test_N(qﳍ, qﳍ, qﳍ, qله, qله);
+Test_N(qﳎ, qﳎ, qﳎ, qمج, qمج);
+Test_N(qﳏ, qﳏ, qﳏ, qمح, qمح);
+Test_N(qﳐ, qﳐ, qﳐ, qمخ, qمخ);
+Test_N(qﳑ, qﳑ, qﳑ, qمم, qمم);
+Test_N(qﳒ, qﳒ, qﳒ, qنج, qنج);
+Test_N(qﳓ, qﳓ, qﳓ, qنح, qنح);
+Test_N(qﳔ, qﳔ, qﳔ, qنخ, qنخ);
+Test_N(qﳕ, qﳕ, qﳕ, qنم, qنم);
+Test_N(qﳖ, qﳖ, qﳖ, qنه, qنه);
+Test_N(qﳗ, qﳗ, qﳗ, qهج, qهج);
+Test_N(qﳘ, qﳘ, qﳘ, qهم, qهم);
+Test_N(qﳙ, qﳙ, qﳙ, qهٰ, qهٰ);
+Test_N(qﳚ, qﳚ, qﳚ, qيج, qيج);
+Test_N(qﳛ, qﳛ, qﳛ, qيح, qيح);
+Test_N(qﳜ, qﳜ, qﳜ, qيخ, qيخ);
+Test_N(qﳝ, qﳝ, qﳝ, qيم, qيم);
+Test_N(qﳞ, qﳞ, qﳞ, qيه, qيه);
+Test_N(qﳟ, qﳟ, qﳟ, qئم, qئم);
+Test_N(qﳠ, qﳠ, qﳠ, qئه, qئه);
+Test_N(qﳡ, qﳡ, qﳡ, qبم, qبم);
+Test_N(qﳢ, qﳢ, qﳢ, qبه, qبه);
+Test_N(qﳣ, qﳣ, qﳣ, qتم, qتم);
+Test_N(qﳤ, qﳤ, qﳤ, qته, qته);
+Test_N(qﳥ, qﳥ, qﳥ, qثم, qثم);
+Test_N(qﳦ, qﳦ, qﳦ, qثه, qثه);
+Test_N(qﳧ, qﳧ, qﳧ, qسم, qسم);
+Test_N(qﳨ, qﳨ, qﳨ, qسه, qسه);
+Test_N(qﳩ, qﳩ, qﳩ, qشم, qشم);
+Test_N(qﳪ, qﳪ, qﳪ, qشه, qشه);
+Test_N(qﳫ, qﳫ, qﳫ, qكل, qكل);
+Test_N(qﳬ, qﳬ, qﳬ, qكم, qكم);
+Test_N(qﳭ, qﳭ, qﳭ, qلم, qلم);
+Test_N(qﳮ, qﳮ, qﳮ, qنم, qنم);
+Test_N(qﳯ, qﳯ, qﳯ, qنه, qنه);
+Test_N(qﳰ, qﳰ, qﳰ, qيم, qيم);
+Test_N(qﳱ, qﳱ, qﳱ, qيه, qيه);
+Test_N(qﳲ, qﳲ, qﳲ, qـَّ, qـَّ);
+Test_N(qﳳ, qﳳ, qﳳ, qـُّ, qـُّ);
+Test_N(qﳴ, qﳴ, qﳴ, qـِّ, qـِّ);
+Test_N(qﳵ, qﳵ, qﳵ, qطى, qطى);
+Test_N(qﳶ, qﳶ, qﳶ, qطي, qطي);
+Test_N(qﳷ, qﳷ, qﳷ, qعى, qعى);
+Test_N(qﳸ, qﳸ, qﳸ, qعي, qعي);
+Test_N(qﳹ, qﳹ, qﳹ, qغى, qغى);
+Test_N(qﳺ, qﳺ, qﳺ, qغي, qغي);
+Test_N(qﳻ, qﳻ, qﳻ, qسى, qسى);
+Test_N(qﳼ, qﳼ, qﳼ, qسي, qسي);
+Test_N(qﳽ, qﳽ, qﳽ, qشى, qشى);
+Test_N(qﳾ, qﳾ, qﳾ, qشي, qشي);
+Test_N(qﳿ, qﳿ, qﳿ, qحى, qحى);
+Test_N(qﴀ, qﴀ, qﴀ, qحي, qحي);
+Test_N(qﴁ, qﴁ, qﴁ, qجى, qجى);
+Test_N(qﴂ, qﴂ, qﴂ, qجي, qجي);
+Test_N(qﴃ, qﴃ, qﴃ, qخى, qخى);
+Test_N(qﴄ, qﴄ, qﴄ, qخي, qخي);
+Test_N(qﴅ, qﴅ, qﴅ, qصى, qصى);
+Test_N(qﴆ, qﴆ, qﴆ, qصي, qصي);
+Test_N(qﴇ, qﴇ, qﴇ, qضى, qضى);
+Test_N(qﴈ, qﴈ, qﴈ, qضي, qضي);
+Test_N(qﴉ, qﴉ, qﴉ, qشج, qشج);
+Test_N(qﴊ, qﴊ, qﴊ, qشح, qشح);
+Test_N(qﴋ, qﴋ, qﴋ, qشخ, qشخ);
+Test_N(qﴌ, qﴌ, qﴌ, qشم, qشم);
+Test_N(qﴍ, qﴍ, qﴍ, qشر, qشر);
+Test_N(qﴎ, qﴎ, qﴎ, qسر, qسر);
+Test_N(qﴏ, qﴏ, qﴏ, qصر, qصر);
+Test_N(qﴐ, qﴐ, qﴐ, qضر, qضر);
+Test_N(qﴑ, qﴑ, qﴑ, qطى, qطى);
+Test_N(qﴒ, qﴒ, qﴒ, qطي, qطي);
+Test_N(qﴓ, qﴓ, qﴓ, qعى, qعى);
+Test_N(qﴔ, qﴔ, qﴔ, qعي, qعي);
+Test_N(qﴕ, qﴕ, qﴕ, qغى, qغى);
+Test_N(qﴖ, qﴖ, qﴖ, qغي, qغي);
+Test_N(qﴗ, qﴗ, qﴗ, qسى, qسى);
+Test_N(qﴘ, qﴘ, qﴘ, qسي, qسي);
+Test_N(qﴙ, qﴙ, qﴙ, qشى, qشى);
+Test_N(qﴚ, qﴚ, qﴚ, qشي, qشي);
+Test_N(qﴛ, qﴛ, qﴛ, qحى, qحى);
+Test_N(qﴜ, qﴜ, qﴜ, qحي, qحي);
+Test_N(qﴝ, qﴝ, qﴝ, qجى, qجى);
+Test_N(qﴞ, qﴞ, qﴞ, qجي, qجي);
+Test_N(qﴟ, qﴟ, qﴟ, qخى, qخى);
+Test_N(qﴠ, qﴠ, qﴠ, qخي, qخي);
+Test_N(qﴡ, qﴡ, qﴡ, qصى, qصى);
+Test_N(qﴢ, qﴢ, qﴢ, qصي, qصي);
+Test_N(qﴣ, qﴣ, qﴣ, qضى, qضى);
+Test_N(qﴤ, qﴤ, qﴤ, qضي, qضي);
+Test_N(qﴥ, qﴥ, qﴥ, qشج, qشج);
+Test_N(qﴦ, qﴦ, qﴦ, qشح, qشح);
+Test_N(qﴧ, qﴧ, qﴧ, qشخ, qشخ);
+Test_N(qﴨ, qﴨ, qﴨ, qشم, qشم);
+Test_N(qﴩ, qﴩ, qﴩ, qشر, qشر);
+Test_N(qﴪ, qﴪ, qﴪ, qسر, qسر);
+Test_N(qﴫ, qﴫ, qﴫ, qصر, qصر);
+Test_N(qﴬ, qﴬ, qﴬ, qضر, qضر);
+Test_N(qﴭ, qﴭ, qﴭ, qشج, qشج);
+Test_N(qﴮ, qﴮ, qﴮ, qشح, qشح);
+Test_N(qﴯ, qﴯ, qﴯ, qشخ, qشخ);
+Test_N(qﴰ, qﴰ, qﴰ, qشم, qشم);
+Test_N(qﴱ, qﴱ, qﴱ, qسه, qسه);
+Test_N(qﴲ, qﴲ, qﴲ, qشه, qشه);
+Test_N(qﴳ, qﴳ, qﴳ, qطم, qطم);
+Test_N(qﴴ, qﴴ, qﴴ, qسج, qسج);
+Test_N(qﴵ, qﴵ, qﴵ, qسح, qسح);
+Test_N(qﴶ, qﴶ, qﴶ, qسخ, qسخ);
+Test_N(qﴷ, qﴷ, qﴷ, qشج, qشج);
+Test_N(qﴸ, qﴸ, qﴸ, qشح, qشح);
+Test_N(qﴹ, qﴹ, qﴹ, qشخ, qشخ);
+Test_N(qﴺ, qﴺ, qﴺ, qطم, qطم);
+Test_N(qﴻ, qﴻ, qﴻ, qظم, qظم);
+Test_N(qﴼ, qﴼ, qﴼ, qاً, qاً);
+Test_N(qﴽ, qﴽ, qﴽ, qاً, qاً);
+Test_N(qﵐ, qﵐ, qﵐ, qتجم, qتجم);
+Test_N(qﵑ, qﵑ, qﵑ, qتحج, qتحج);
+Test_N(qﵒ, qﵒ, qﵒ, qتحج, qتحج);
+Test_N(qﵓ, qﵓ, qﵓ, qتحم, qتحم);
+Test_N(qﵔ, qﵔ, qﵔ, qتخم, qتخم);
+Test_N(qﵕ, qﵕ, qﵕ, qتمج, qتمج);
+Test_N(qﵖ, qﵖ, qﵖ, qتمح, qتمح);
+Test_N(qﵗ, qﵗ, qﵗ, qتمخ, qتمخ);
+Test_N(qﵘ, qﵘ, qﵘ, qجمح, qجمح);
+Test_N(qﵙ, qﵙ, qﵙ, qجمح, qجمح);
+Test_N(qﵚ, qﵚ, qﵚ, qحمي, qحمي);
+Test_N(qﵛ, qﵛ, qﵛ, qحمى, qحمى);
+Test_N(qﵜ, qﵜ, qﵜ, qسحج, qسحج);
+Test_N(qﵝ, qﵝ, qﵝ, qسجح, qسجح);
+Test_N(qﵞ, qﵞ, qﵞ, qسجى, qسجى);
+Test_N(qﵟ, qﵟ, qﵟ, qسمح, qسمح);
+Test_N(qﵠ, qﵠ, qﵠ, qسمح, qسمح);
+Test_N(qﵡ, qﵡ, qﵡ, qسمج, qسمج);
+Test_N(qﵢ, qﵢ, qﵢ, qسمم, qسمم);
+Test_N(qﵣ, qﵣ, qﵣ, qسمم, qسمم);
+Test_N(qﵤ, qﵤ, qﵤ, qصحح, qصحح);
+Test_N(qﵥ, qﵥ, qﵥ, qصحح, qصحح);
+Test_N(qﵦ, qﵦ, qﵦ, qصمم, qصمم);
+Test_N(qﵧ, qﵧ, qﵧ, qشحم, qشحم);
+Test_N(qﵨ, qﵨ, qﵨ, qشحم, qشحم);
+Test_N(qﵩ, qﵩ, qﵩ, qشجي, qشجي);
+Test_N(qﵪ, qﵪ, qﵪ, qشمخ, qشمخ);
+Test_N(qﵫ, qﵫ, qﵫ, qشمخ, qشمخ);
+Test_N(qﵬ, qﵬ, qﵬ, qشمم, qشمم);
+Test_N(qﵭ, qﵭ, qﵭ, qشمم, qشمم);
+Test_N(qﵮ, qﵮ, qﵮ, qضحى, qضحى);
+Test_N(qﵯ, qﵯ, qﵯ, qضخم, qضخم);
+Test_N(qﵰ, qﵰ, qﵰ, qضخم, qضخم);
+Test_N(qﵱ, qﵱ, qﵱ, qطمح, qطمح);
+Test_N(qﵲ, qﵲ, qﵲ, qطمح, qطمح);
+Test_N(qﵳ, qﵳ, qﵳ, qطمم, qطمم);
+Test_N(qﵴ, qﵴ, qﵴ, qطمي, qطمي);
+Test_N(qﵵ, qﵵ, qﵵ, qعجم, qعجم);
+Test_N(qﵶ, qﵶ, qﵶ, qعمم, qعمم);
+Test_N(qﵷ, qﵷ, qﵷ, qعمم, qعمم);
+Test_N(qﵸ, qﵸ, qﵸ, qعمى, qعمى);
+Test_N(qﵹ, qﵹ, qﵹ, qغمم, qغمم);
+Test_N(qﵺ, qﵺ, qﵺ, qغمي, qغمي);
+Test_N(qﵻ, qﵻ, qﵻ, qغمى, qغمى);
+Test_N(qﵼ, qﵼ, qﵼ, qفخم, qفخم);
+Test_N(qﵽ, qﵽ, qﵽ, qفخم, qفخم);
+Test_N(qﵾ, qﵾ, qﵾ, qقمح, qقمح);
+Test_N(qﵿ, qﵿ, qﵿ, qقمم, qقمم);
+Test_N(qﶀ, qﶀ, qﶀ, qلحم, qلحم);
+Test_N(qﶁ, qﶁ, qﶁ, qلحي, qلحي);
+Test_N(qﶂ, qﶂ, qﶂ, qلحى, qلحى);
+Test_N(qﶃ, qﶃ, qﶃ, qلجج, qلجج);
+Test_N(qﶄ, qﶄ, qﶄ, qلجج, qلجج);
+Test_N(qﶅ, qﶅ, qﶅ, qلخم, qلخم);
+Test_N(qﶆ, qﶆ, qﶆ, qلخم, qلخم);
+Test_N(qﶇ, qﶇ, qﶇ, qلمح, qلمح);
+Test_N(qﶈ, qﶈ, qﶈ, qلمح, qلمح);
+Test_N(qﶉ, qﶉ, qﶉ, qمحج, qمحج);
+Test_N(qﶊ, qﶊ, qﶊ, qمحم, qمحم);
+Test_N(qﶋ, qﶋ, qﶋ, qمحي, qمحي);
+Test_N(qﶌ, qﶌ, qﶌ, qمجح, qمجح);
+Test_N(qﶍ, qﶍ, qﶍ, qمجم, qمجم);
+Test_N(qﶎ, qﶎ, qﶎ, qمخج, qمخج);
+Test_N(qﶏ, qﶏ, qﶏ, qمخم, qمخم);
+Test_N(qﶒ, qﶒ, qﶒ, qمجخ, qمجخ);
+Test_N(qﶓ, qﶓ, qﶓ, qهمج, qهمج);
+Test_N(qﶔ, qﶔ, qﶔ, qهمم, qهمم);
+Test_N(qﶕ, qﶕ, qﶕ, qنحم, qنحم);
+Test_N(qﶖ, qﶖ, qﶖ, qنحى, qنحى);
+Test_N(qﶗ, qﶗ, qﶗ, qنجم, qنجم);
+Test_N(qﶘ, qﶘ, qﶘ, qنجم, qنجم);
+Test_N(qﶙ, qﶙ, qﶙ, qنجى, qنجى);
+Test_N(qﶚ, qﶚ, qﶚ, qنمي, qنمي);
+Test_N(qﶛ, qﶛ, qﶛ, qنمى, qنمى);
+Test_N(qﶜ, qﶜ, qﶜ, qيمم, qيمم);
+Test_N(qﶝ, qﶝ, qﶝ, qيمم, qيمم);
+Test_N(qﶞ, qﶞ, qﶞ, qبخي, qبخي);
+Test_N(qﶟ, qﶟ, qﶟ, qتجي, qتجي);
+Test_N(qﶠ, qﶠ, qﶠ, qتجى, qتجى);
+Test_N(qﶡ, qﶡ, qﶡ, qتخي, qتخي);
+Test_N(qﶢ, qﶢ, qﶢ, qتخى, qتخى);
+Test_N(qﶣ, qﶣ, qﶣ, qتمي, qتمي);
+Test_N(qﶤ, qﶤ, qﶤ, qتمى, qتمى);
+Test_N(qﶥ, qﶥ, qﶥ, qجمي, qجمي);
+Test_N(qﶦ, qﶦ, qﶦ, qجحى, qجحى);
+Test_N(qﶧ, qﶧ, qﶧ, qجمى, qجمى);
+Test_N(qﶨ, qﶨ, qﶨ, qسخى, qسخى);
+Test_N(qﶩ, qﶩ, qﶩ, qصحي, qصحي);
+Test_N(qﶪ, qﶪ, qﶪ, qشحي, qشحي);
+Test_N(qﶫ, qﶫ, qﶫ, qضحي, qضحي);
+Test_N(qﶬ, qﶬ, qﶬ, qلجي, qلجي);
+Test_N(qﶭ, qﶭ, qﶭ, qلمي, qلمي);
+Test_N(qﶮ, qﶮ, qﶮ, qيحي, qيحي);
+Test_N(qﶯ, qﶯ, qﶯ, qيجي, qيجي);
+Test_N(qﶰ, qﶰ, qﶰ, qيمي, qيمي);
+Test_N(qﶱ, qﶱ, qﶱ, qممي, qممي);
+Test_N(qﶲ, qﶲ, qﶲ, qقمي, qقمي);
+Test_N(qﶳ, qﶳ, qﶳ, qنحي, qنحي);
+Test_N(qﶴ, qﶴ, qﶴ, qقمح, qقمح);
+Test_N(qﶵ, qﶵ, qﶵ, qلحم, qلحم);
+Test_N(qﶶ, qﶶ, qﶶ, qعمي, qعمي);
+Test_N(qﶷ, qﶷ, qﶷ, qكمي, qكمي);
+Test_N(qﶸ, qﶸ, qﶸ, qنجح, qنجح);
+Test_N(qﶹ, qﶹ, qﶹ, qمخي, qمخي);
+Test_N(qﶺ, qﶺ, qﶺ, qلجم, qلجم);
+Test_N(qﶻ, qﶻ, qﶻ, qكمم, qكمم);
+Test_N(qﶼ, qﶼ, qﶼ, qلجم, qلجم);
+Test_N(qﶽ, qﶽ, qﶽ, qنجح, qنجح);
+Test_N(qﶾ, qﶾ, qﶾ, qجحي, qجحي);
+Test_N(qﶿ, qﶿ, qﶿ, qحجي, qحجي);
+Test_N(qﷀ, qﷀ, qﷀ, qمجي, qمجي);
+Test_N(qﷁ, qﷁ, qﷁ, qفمي, qفمي);
+Test_N(qﷂ, qﷂ, qﷂ, qبحي, qبحي);
+Test_N(qﷃ, qﷃ, qﷃ, qكمم, qكمم);
+Test_N(qﷄ, qﷄ, qﷄ, qعجم, qعجم);
+Test_N(qﷅ, qﷅ, qﷅ, qصمم, qصمم);
+Test_N(qﷆ, qﷆ, qﷆ, qسخي, qسخي);
+Test_N(qﷇ, qﷇ, qﷇ, qنجي, qنجي);
+Test_N(qﷰ, qﷰ, qﷰ, qصلے, qصلے);
+Test_N(qﷱ, qﷱ, qﷱ, qقلے, qقلے);
+Test_N(qﷲ, qﷲ, qﷲ, qالله, qالله);
+Test_N(qﷳ, qﷳ, qﷳ, qاكبر, qاكبر);
+Test_N(qﷴ, qﷴ, qﷴ, qمحمد, qمحمد);
+Test_N(qﷵ, qﷵ, qﷵ, qصلعم, qصلعم);
+Test_N(qﷶ, qﷶ, qﷶ, qرسول, qرسول);
+Test_N(qﷷ, qﷷ, qﷷ, qعليه, qعليه);
+Test_N(qﷸ, qﷸ, qﷸ, qوسلم, qوسلم);
+Test_N(qﷹ, qﷹ, qﷹ, qصلى, qصلى);
+Test_N(qﷺ, qﷺ, qﷺ, qصلى الله عليه وسلم, qصلى الله عليه وسلم);
+Test_N(qﷻ, qﷻ, qﷻ, qجل جلاله, qجل جلاله);
+Test_N(q﷼, q﷼, q﷼, qریال, qریال);
+Test_N(q︐, q︐, q︐, q,, q,);
+Test_N(q︑, q︑, q︑, q、, q、);
+Test_N(q︒, q︒, q︒, q。, q。);
+Test_N(q︓, q︓, q︓, q:, q:);
+Test_N(q︔, q︔, q︔, q;, q;);
+Test_N(q︕, q︕, q︕, q!, q!);
+Test_N(q︖, q︖, q︖, q?, q?);
+Test_N(q︗, q︗, q︗, q〖, q〖);
+Test_N(q︘, q︘, q︘, q〗, q〗);
+Test_N(q︙, q︙, q︙, q..., q...);
+Test_N(q︰, q︰, q︰, q.., q..);
+Test_N(q︱, q︱, q︱, q—, q—);
+Test_N(q︲, q︲, q︲, q–, q–);
+Test_N(q︳, q︳, q︳, q_, q_);
+Test_N(q︴, q︴, q︴, q_, q_);
+Test_N(q︵, q︵, q︵, q(, q();
+Test_N(q︶, q︶, q︶, q), q));
+Test_N(q︷, q︷, q︷, q{, q{);
+Test_N(q︸, q︸, q︸, q}, q});
+Test_N(q︹, q︹, q︹, q〔, q〔);
+Test_N(q︺, q︺, q︺, q〕, q〕);
+Test_N(q︻, q︻, q︻, q【, q【);
+Test_N(q︼, q︼, q︼, q】, q】);
+Test_N(q︽, q︽, q︽, q《, q《);
+Test_N(q︾, q︾, q︾, q》, q》);
+Test_N(q︿, q︿, q︿, q〈, q〈);
+Test_N(q﹀, q﹀, q﹀, q〉, q〉);
+Test_N(q﹁, q﹁, q﹁, q「, q「);
+Test_N(q﹂, q﹂, q﹂, q」, q」);
+Test_N(q﹃, q﹃, q﹃, q『, q『);
+Test_N(q﹄, q﹄, q﹄, q』, q』);
+Test_N(q﹇, q﹇, q﹇, q[, q[);
+Test_N(q﹈, q﹈, q﹈, q], q]);
+Test_N(q﹉, q﹉, q﹉, q ̅, q ̅);
+Test_N(q﹊, q﹊, q﹊, q ̅, q ̅);
+Test_N(q﹋, q﹋, q﹋, q ̅, q ̅);
+Test_N(q﹌, q﹌, q﹌, q ̅, q ̅);
+Test_N(q﹍, q﹍, q﹍, q_, q_);
+Test_N(q﹎, q﹎, q﹎, q_, q_);
+Test_N(q﹏, q﹏, q﹏, q_, q_);
+Test_N(q﹐, q﹐, q﹐, q,, q,);
+Test_N(q﹑, q﹑, q﹑, q、, q、);
+Test_N(q﹒, q﹒, q﹒, q., q.);
+Test_N(q﹔, q﹔, q﹔, q;, q;);
+Test_N(q﹕, q﹕, q﹕, q:, q:);
+Test_N(q﹖, q﹖, q﹖, q?, q?);
+Test_N(q﹗, q﹗, q﹗, q!, q!);
+Test_N(q﹘, q﹘, q﹘, q—, q—);
+Test_N(q﹙, q﹙, q﹙, q(, q();
+Test_N(q﹚, q﹚, q﹚, q), q));
+Test_N(q﹛, q﹛, q﹛, q{, q{);
+Test_N(q﹜, q﹜, q﹜, q}, q});
+Test_N(q﹝, q﹝, q﹝, q〔, q〔);
+Test_N(q﹞, q﹞, q﹞, q〕, q〕);
+Test_N(q﹟, q﹟, q﹟, q#, q#);
+Test_N(q﹠, q﹠, q﹠, q&, q&);
+Test_N(q﹡, q﹡, q﹡, q*, q*);
+Test_N(q﹢, q﹢, q﹢, q+, q+);
+Test_N(q﹣, q﹣, q﹣, q-, q-);
+Test_N(q﹤, q﹤, q﹤, q<, q<);
+Test_N(q﹥, q﹥, q﹥, q>, q>);
+Test_N(q﹦, q﹦, q﹦, q=, q=);
+Test_N(q﹨, q﹨, q﹨, q\\, q\\);
+Test_N(q﹩, q﹩, q﹩, q$, q$);
+Test_N(q﹪, q﹪, q﹪, q%, q%);
+Test_N(q﹫, q﹫, q﹫, q@, q@);
+Test_N(qﹰ, qﹰ, qﹰ, q ً, q ً);
+Test_N(qﹱ, qﹱ, qﹱ, qـً, qـً);
+Test_N(qﹲ, qﹲ, qﹲ, q ٌ, q ٌ);
+Test_N(qﹴ, qﹴ, qﹴ, q ٍ, q ٍ);
+Test_N(qﹶ, qﹶ, qﹶ, q َ, q َ);
+Test_N(qﹷ, qﹷ, qﹷ, qـَ, qـَ);
+Test_N(qﹸ, qﹸ, qﹸ, q ُ, q ُ);
+Test_N(qﹹ, qﹹ, qﹹ, qـُ, qـُ);
+Test_N(qﹺ, qﹺ, qﹺ, q ِ, q ِ);
+Test_N(qﹻ, qﹻ, qﹻ, qـِ, qـِ);
+Test_N(qﹼ, qﹼ, qﹼ, q ّ, q ّ);
+Test_N(qﹽ, qﹽ, qﹽ, qـّ, qـّ);
+Test_N(qﹾ, qﹾ, qﹾ, q ْ, q ْ);
+Test_N(qﹿ, qﹿ, qﹿ, qـْ, qـْ);
+Test_N(qﺀ, qﺀ, qﺀ, qء, qء);
+Test_N(qﺁ, qﺁ, qﺁ, qآ, qآ);
+Test_N(qﺂ, qﺂ, qﺂ, qآ, qآ);
+Test_N(qﺃ, qﺃ, qﺃ, qأ, qأ);
+Test_N(qﺄ, qﺄ, qﺄ, qأ, qأ);
+Test_N(qﺅ, qﺅ, qﺅ, qؤ, qؤ);
+Test_N(qﺆ, qﺆ, qﺆ, qؤ, qؤ);
+Test_N(qﺇ, qﺇ, qﺇ, qإ, qإ);
+Test_N(qﺈ, qﺈ, qﺈ, qإ, qإ);
+Test_N(qﺉ, qﺉ, qﺉ, qئ, qئ);
+Test_N(qﺊ, qﺊ, qﺊ, qئ, qئ);
+Test_N(qﺋ, qﺋ, qﺋ, qئ, qئ);
+Test_N(qﺌ, qﺌ, qﺌ, qئ, qئ);
+Test_N(qﺍ, qﺍ, qﺍ, qا, qا);
+Test_N(qﺎ, qﺎ, qﺎ, qا, qا);
+Test_N(qﺏ, qﺏ, qﺏ, qب, qب);
+Test_N(qﺐ, qﺐ, qﺐ, qب, qب);
+Test_N(qﺑ, qﺑ, qﺑ, qب, qب);
+Test_N(qﺒ, qﺒ, qﺒ, qب, qب);
+Test_N(qﺓ, qﺓ, qﺓ, qة, qة);
+Test_N(qﺔ, qﺔ, qﺔ, qة, qة);
+Test_N(qﺕ, qﺕ, qﺕ, qت, qت);
+Test_N(qﺖ, qﺖ, qﺖ, qت, qت);
+Test_N(qﺗ, qﺗ, qﺗ, qت, qت);
+Test_N(qﺘ, qﺘ, qﺘ, qت, qت);
+Test_N(qﺙ, qﺙ, qﺙ, qث, qث);
+Test_N(qﺚ, qﺚ, qﺚ, qث, qث);
+Test_N(qﺛ, qﺛ, qﺛ, qث, qث);
+Test_N(qﺜ, qﺜ, qﺜ, qث, qث);
+Test_N(qﺝ, qﺝ, qﺝ, qج, qج);
+Test_N(qﺞ, qﺞ, qﺞ, qج, qج);
+Test_N(qﺟ, qﺟ, qﺟ, qج, qج);
+Test_N(qﺠ, qﺠ, qﺠ, qج, qج);
+Test_N(qﺡ, qﺡ, qﺡ, qح, qح);
+Test_N(qﺢ, qﺢ, qﺢ, qح, qح);
+Test_N(qﺣ, qﺣ, qﺣ, qح, qح);
+Test_N(qﺤ, qﺤ, qﺤ, qح, qح);
+Test_N(qﺥ, qﺥ, qﺥ, qخ, qخ);
+Test_N(qﺦ, qﺦ, qﺦ, qخ, qخ);
+Test_N(qﺧ, qﺧ, qﺧ, qخ, qخ);
+Test_N(qﺨ, qﺨ, qﺨ, qخ, qخ);
+Test_N(qﺩ, qﺩ, qﺩ, qد, qد);
+Test_N(qﺪ, qﺪ, qﺪ, qد, qد);
+Test_N(qﺫ, qﺫ, qﺫ, qذ, qذ);
+Test_N(qﺬ, qﺬ, qﺬ, qذ, qذ);
+Test_N(qﺭ, qﺭ, qﺭ, qر, qر);
+Test_N(qﺮ, qﺮ, qﺮ, qر, qر);
+Test_N(qﺯ, qﺯ, qﺯ, qز, qز);
+Test_N(qﺰ, qﺰ, qﺰ, qز, qز);
+Test_N(qﺱ, qﺱ, qﺱ, qس, qس);
+Test_N(qﺲ, qﺲ, qﺲ, qس, qس);
+Test_N(qﺳ, qﺳ, qﺳ, qس, qس);
+Test_N(qﺴ, qﺴ, qﺴ, qس, qس);
+Test_N(qﺵ, qﺵ, qﺵ, qش, qش);
+Test_N(qﺶ, qﺶ, qﺶ, qش, qش);
+Test_N(qﺷ, qﺷ, qﺷ, qش, qش);
+Test_N(qﺸ, qﺸ, qﺸ, qش, qش);
+Test_N(qﺹ, qﺹ, qﺹ, qص, qص);
+Test_N(qﺺ, qﺺ, qﺺ, qص, qص);
+Test_N(qﺻ, qﺻ, qﺻ, qص, qص);
+Test_N(qﺼ, qﺼ, qﺼ, qص, qص);
+Test_N(qﺽ, qﺽ, qﺽ, qض, qض);
+Test_N(qﺾ, qﺾ, qﺾ, qض, qض);
+Test_N(qﺿ, qﺿ, qﺿ, qض, qض);
+Test_N(qﻀ, qﻀ, qﻀ, qض, qض);
+Test_N(qﻁ, qﻁ, qﻁ, qط, qط);
+Test_N(qﻂ, qﻂ, qﻂ, qط, qط);
+Test_N(qﻃ, qﻃ, qﻃ, qط, qط);
+Test_N(qﻄ, qﻄ, qﻄ, qط, qط);
+Test_N(qﻅ, qﻅ, qﻅ, qظ, qظ);
+Test_N(qﻆ, qﻆ, qﻆ, qظ, qظ);
+Test_N(qﻇ, qﻇ, qﻇ, qظ, qظ);
+Test_N(qﻈ, qﻈ, qﻈ, qظ, qظ);
+Test_N(qﻉ, qﻉ, qﻉ, qع, qع);
+Test_N(qﻊ, qﻊ, qﻊ, qع, qع);
+Test_N(qﻋ, qﻋ, qﻋ, qع, qع);
+Test_N(qﻌ, qﻌ, qﻌ, qع, qع);
+Test_N(qﻍ, qﻍ, qﻍ, qغ, qغ);
+Test_N(qﻎ, qﻎ, qﻎ, qغ, qغ);
+Test_N(qﻏ, qﻏ, qﻏ, qغ, qغ);
+Test_N(qﻐ, qﻐ, qﻐ, qغ, qغ);
+Test_N(qﻑ, qﻑ, qﻑ, qف, qف);
+Test_N(qﻒ, qﻒ, qﻒ, qف, qف);
+Test_N(qﻓ, qﻓ, qﻓ, qف, qف);
+Test_N(qﻔ, qﻔ, qﻔ, qف, qف);
+Test_N(qﻕ, qﻕ, qﻕ, qق, qق);
+Test_N(qﻖ, qﻖ, qﻖ, qق, qق);
+Test_N(qﻗ, qﻗ, qﻗ, qق, qق);
+Test_N(qﻘ, qﻘ, qﻘ, qق, qق);
+Test_N(qﻙ, qﻙ, qﻙ, qك, qك);
+Test_N(qﻚ, qﻚ, qﻚ, qك, qك);
+Test_N(qﻛ, qﻛ, qﻛ, qك, qك);
+Test_N(qﻜ, qﻜ, qﻜ, qك, qك);
+Test_N(qﻝ, qﻝ, qﻝ, qل, qل);
+Test_N(qﻞ, qﻞ, qﻞ, qل, qل);
+Test_N(qﻟ, qﻟ, qﻟ, qل, qل);
+Test_N(qﻠ, qﻠ, qﻠ, qل, qل);
+Test_N(qﻡ, qﻡ, qﻡ, qم, qم);
+Test_N(qﻢ, qﻢ, qﻢ, qم, qم);
+Test_N(qﻣ, qﻣ, qﻣ, qم, qم);
+Test_N(qﻤ, qﻤ, qﻤ, qم, qم);
+Test_N(qﻥ, qﻥ, qﻥ, qن, qن);
+Test_N(qﻦ, qﻦ, qﻦ, qن, qن);
+Test_N(qﻧ, qﻧ, qﻧ, qن, qن);
+Test_N(qﻨ, qﻨ, qﻨ, qن, qن);
+Test_N(qﻩ, qﻩ, qﻩ, qه, qه);
+Test_N(qﻪ, qﻪ, qﻪ, qه, qه);
+Test_N(qﻫ, qﻫ, qﻫ, qه, qه);
+Test_N(qﻬ, qﻬ, qﻬ, qه, qه);
+Test_N(qﻭ, qﻭ, qﻭ, qو, qو);
+Test_N(qﻮ, qﻮ, qﻮ, qو, qو);
+Test_N(qﻯ, qﻯ, qﻯ, qى, qى);
+Test_N(qﻰ, qﻰ, qﻰ, qى, qى);
+Test_N(qﻱ, qﻱ, qﻱ, qي, qي);
+Test_N(qﻲ, qﻲ, qﻲ, qي, qي);
+Test_N(qﻳ, qﻳ, qﻳ, qي, qي);
+Test_N(qﻴ, qﻴ, qﻴ, qي, qي);
+Test_N(qﻵ, qﻵ, qﻵ, qلآ, qلآ);
+Test_N(qﻶ, qﻶ, qﻶ, qلآ, qلآ);
+Test_N(qﻷ, qﻷ, qﻷ, qلأ, qلأ);
+Test_N(qﻸ, qﻸ, qﻸ, qلأ, qلأ);
+Test_N(qﻹ, qﻹ, qﻹ, qلإ, qلإ);
+Test_N(qﻺ, qﻺ, qﻺ, qلإ, qلإ);
+Test_N(qﻻ, qﻻ, qﻻ, qلا, qلا);
+Test_N(qﻼ, qﻼ, qﻼ, qلا, qلا);
+Test_N(q!, q!, q!, q!, q!);
+Test_N(q", q", q", q", q");
+Test_N(q#, q#, q#, q#, q#);
+Test_N(q$, q$, q$, q$, q$);
+Test_N(q%, q%, q%, q%, q%);
+Test_N(q&, q&, q&, q&, q&);
+Test_N(q', q', q', q', q');
+Test_N(q(, q(, q(, q(, q();
+Test_N(q), q), q), q), q));
+Test_N(q*, q*, q*, q*, q*);
+Test_N(q+, q+, q+, q+, q+);
+Test_N(q,, q,, q,, q,, q,);
+Test_N(q-, q-, q-, q-, q-);
+Test_N(q., q., q., q., q.);
+Test_N(q/, q/, q/, q/, q/);
+Test_N(q0, q0, q0, q0, q0);
+Test_N(q1, q1, q1, q1, q1);
+Test_N(q2, q2, q2, q2, q2);
+Test_N(q3, q3, q3, q3, q3);
+Test_N(q4, q4, q4, q4, q4);
+Test_N(q5, q5, q5, q5, q5);
+Test_N(q6, q6, q6, q6, q6);
+Test_N(q7, q7, q7, q7, q7);
+Test_N(q8, q8, q8, q8, q8);
+Test_N(q9, q9, q9, q9, q9);
+Test_N(q:, q:, q:, q:, q:);
+Test_N(q;, q;, q;, q;, q;);
+Test_N(q<, q<, q<, q<, q<);
+Test_N(q=, q=, q=, q=, q=);
+Test_N(q>, q>, q>, q>, q>);
+Test_N(q?, q?, q?, q?, q?);
+Test_N(q@, q@, q@, q@, q@);
+Test_N(qA, qA, qA, qA, qA);
+Test_N(qB, qB, qB, qB, qB);
+Test_N(qC, qC, qC, qC, qC);
+Test_N(qD, qD, qD, qD, qD);
+Test_N(qE, qE, qE, qE, qE);
+Test_N(qF, qF, qF, qF, qF);
+Test_N(qG, qG, qG, qG, qG);
+Test_N(qH, qH, qH, qH, qH);
+Test_N(qI, qI, qI, qI, qI);
+Test_N(qJ, qJ, qJ, qJ, qJ);
+Test_N(qK, qK, qK, qK, qK);
+Test_N(qL, qL, qL, qL, qL);
+Test_N(qM, qM, qM, qM, qM);
+Test_N(qN, qN, qN, qN, qN);
+Test_N(qO, qO, qO, qO, qO);
+Test_N(qP, qP, qP, qP, qP);
+Test_N(qQ, qQ, qQ, qQ, qQ);
+Test_N(qR, qR, qR, qR, qR);
+Test_N(qS, qS, qS, qS, qS);
+Test_N(qT, qT, qT, qT, qT);
+Test_N(qU, qU, qU, qU, qU);
+Test_N(qV, qV, qV, qV, qV);
+Test_N(qW, qW, qW, qW, qW);
+Test_N(qX, qX, qX, qX, qX);
+Test_N(qY, qY, qY, qY, qY);
+Test_N(qZ, qZ, qZ, qZ, qZ);
+Test_N(q[, q[, q[, q[, q[);
+Test_N(q\, q\, q\, q\\, q\\);
+Test_N(q], q], q], q], q]);
+Test_N(q^, q^, q^, q^, q^);
+Test_N(q_, q_, q_, q_, q_);
+Test_N(q`, q`, q`, q`, q`);
+Test_N(qa, qa, qa, qa, qa);
+Test_N(qb, qb, qb, qb, qb);
+Test_N(qc, qc, qc, qc, qc);
+Test_N(qd, qd, qd, qd, qd);
+Test_N(qe, qe, qe, qe, qe);
+Test_N(qf, qf, qf, qf, qf);
+Test_N(qg, qg, qg, qg, qg);
+Test_N(qh, qh, qh, qh, qh);
+Test_N(qi, qi, qi, qi, qi);
+Test_N(qj, qj, qj, qj, qj);
+Test_N(qk, qk, qk, qk, qk);
+Test_N(ql, ql, ql, ql, ql);
+Test_N(qm, qm, qm, qm, qm);
+Test_N(qn, qn, qn, qn, qn);
+Test_N(qo, qo, qo, qo, qo);
+Test_N(qp, qp, qp, qp, qp);
+Test_N(qq, qq, qq, qq, qq);
+Test_N(qr, qr, qr, qr, qr);
+Test_N(qs, qs, qs, qs, qs);
+Test_N(qt, qt, qt, qt, qt);
+Test_N(qu, qu, qu, qu, qu);
+Test_N(qv, qv, qv, qv, qv);
+Test_N(qw, qw, qw, qw, qw);
+Test_N(qx, qx, qx, qx, qx);
+Test_N(qy, qy, qy, qy, qy);
+Test_N(qz, qz, qz, qz, qz);
+Test_N(q{, q{, q{, q{, q{);
+Test_N(q|, q|, q|, q|, q|);
+Test_N(q}, q}, q}, q}, q});
+Test_N(q~, q~, q~, q~, q~);
+Test_N(q⦅, q⦅, q⦅, q⦅, q⦅);
+Test_N(q⦆, q⦆, q⦆, q⦆, q⦆);
+Test_N(q。, q。, q。, q。, q。);
+Test_N(q「, q「, q「, q「, q「);
+Test_N(q」, q」, q」, q」, q」);
+Test_N(q、, q、, q、, q、, q、);
+Test_N(q・, q・, q・, q・, q・);
+Test_N(qヲ, qヲ, qヲ, qヲ, qヲ);
+Test_N(qァ, qァ, qァ, qァ, qァ);
+Test_N(qィ, qィ, qィ, qィ, qィ);
+Test_N(qゥ, qゥ, qゥ, qゥ, qゥ);
+Test_N(qェ, qェ, qェ, qェ, qェ);
+Test_N(qォ, qォ, qォ, qォ, qォ);
+Test_N(qャ, qャ, qャ, qャ, qャ);
+Test_N(qュ, qュ, qュ, qュ, qュ);
+Test_N(qョ, qョ, qョ, qョ, qョ);
+Test_N(qッ, qッ, qッ, qッ, qッ);
+Test_N(qー, qー, qー, qー, qー);
+Test_N(qア, qア, qア, qア, qア);
+Test_N(qイ, qイ, qイ, qイ, qイ);
+Test_N(qウ, qウ, qウ, qウ, qウ);
+Test_N(qエ, qエ, qエ, qエ, qエ);
+Test_N(qオ, qオ, qオ, qオ, qオ);
+Test_N(qカ, qカ, qカ, qカ, qカ);
+Test_N(qキ, qキ, qキ, qキ, qキ);
+Test_N(qク, qク, qク, qク, qク);
+Test_N(qケ, qケ, qケ, qケ, qケ);
+Test_N(qコ, qコ, qコ, qコ, qコ);
+Test_N(qサ, qサ, qサ, qサ, qサ);
+Test_N(qシ, qシ, qシ, qシ, qシ);
+Test_N(qス, qス, qス, qス, qス);
+Test_N(qセ, qセ, qセ, qセ, qセ);
+Test_N(qソ, qソ, qソ, qソ, qソ);
+Test_N(qタ, qタ, qタ, qタ, qタ);
+Test_N(qチ, qチ, qチ, qチ, qチ);
+Test_N(qツ, qツ, qツ, qツ, qツ);
+Test_N(qテ, qテ, qテ, qテ, qテ);
+Test_N(qト, qト, qト, qト, qト);
+Test_N(qナ, qナ, qナ, qナ, qナ);
+Test_N(qニ, qニ, qニ, qニ, qニ);
+Test_N(qヌ, qヌ, qヌ, qヌ, qヌ);
+Test_N(qネ, qネ, qネ, qネ, qネ);
+Test_N(qノ, qノ, qノ, qノ, qノ);
+Test_N(qハ, qハ, qハ, qハ, qハ);
+Test_N(qヒ, qヒ, qヒ, qヒ, qヒ);
+Test_N(qフ, qフ, qフ, qフ, qフ);
+Test_N(qヘ, qヘ, qヘ, qヘ, qヘ);
+Test_N(qホ, qホ, qホ, qホ, qホ);
+Test_N(qマ, qマ, qマ, qマ, qマ);
+Test_N(qミ, qミ, qミ, qミ, qミ);
+Test_N(qム, qム, qム, qム, qム);
+Test_N(qメ, qメ, qメ, qメ, qメ);
+Test_N(qモ, qモ, qモ, qモ, qモ);
+Test_N(qヤ, qヤ, qヤ, qヤ, qヤ);
+Test_N(qユ, qユ, qユ, qユ, qユ);
+Test_N(qヨ, qヨ, qヨ, qヨ, qヨ);
+Test_N(qラ, qラ, qラ, qラ, qラ);
+Test_N(qリ, qリ, qリ, qリ, qリ);
+Test_N(qル, qル, qル, qル, qル);
+Test_N(qレ, qレ, qレ, qレ, qレ);
+Test_N(qロ, qロ, qロ, qロ, qロ);
+Test_N(qワ, qワ, qワ, qワ, qワ);
+Test_N(qン, qン, qン, qン, qン);
+Test_N(q゙, q゙, q゙, q゙, q゙);
+Test_N(q゚, q゚, q゚, q゚, q゚);
+Test_N(qᅠ, qᅠ, qᅠ, qᅠ, qᅠ);
+Test_N(qᄀ, qᄀ, qᄀ, qᄀ, qᄀ);
+Test_N(qᄁ, qᄁ, qᄁ, qᄁ, qᄁ);
+Test_N(qᆪ, qᆪ, qᆪ, qᆪ, qᆪ);
+Test_N(qᄂ, qᄂ, qᄂ, qᄂ, qᄂ);
+Test_N(qᆬ, qᆬ, qᆬ, qᆬ, qᆬ);
+Test_N(qᆭ, qᆭ, qᆭ, qᆭ, qᆭ);
+Test_N(qᄃ, qᄃ, qᄃ, qᄃ, qᄃ);
+Test_N(qᄄ, qᄄ, qᄄ, qᄄ, qᄄ);
+Test_N(qᄅ, qᄅ, qᄅ, qᄅ, qᄅ);
+Test_N(qᆰ, qᆰ, qᆰ, qᆰ, qᆰ);
+Test_N(qᆱ, qᆱ, qᆱ, qᆱ, qᆱ);
+Test_N(qᆲ, qᆲ, qᆲ, qᆲ, qᆲ);
+Test_N(qᆳ, qᆳ, qᆳ, qᆳ, qᆳ);
+Test_N(qᆴ, qᆴ, qᆴ, qᆴ, qᆴ);
+Test_N(qᆵ, qᆵ, qᆵ, qᆵ, qᆵ);
+Test_N(qᄚ, qᄚ, qᄚ, qᄚ, qᄚ);
+Test_N(qᄆ, qᄆ, qᄆ, qᄆ, qᄆ);
+Test_N(qᄇ, qᄇ, qᄇ, qᄇ, qᄇ);
+Test_N(qᄈ, qᄈ, qᄈ, qᄈ, qᄈ);
+Test_N(qᄡ, qᄡ, qᄡ, qᄡ, qᄡ);
+Test_N(qᄉ, qᄉ, qᄉ, qᄉ, qᄉ);
+Test_N(qᄊ, qᄊ, qᄊ, qᄊ, qᄊ);
+Test_N(qᄋ, qᄋ, qᄋ, qᄋ, qᄋ);
+Test_N(qᄌ, qᄌ, qᄌ, qᄌ, qᄌ);
+Test_N(qᄍ, qᄍ, qᄍ, qᄍ, qᄍ);
+Test_N(qᄎ, qᄎ, qᄎ, qᄎ, qᄎ);
+Test_N(qᄏ, qᄏ, qᄏ, qᄏ, qᄏ);
+Test_N(qᄐ, qᄐ, qᄐ, qᄐ, qᄐ);
+Test_N(qᄑ, qᄑ, qᄑ, qᄑ, qᄑ);
+Test_N(qᄒ, qᄒ, qᄒ, qᄒ, qᄒ);
+Test_N(qᅡ, qᅡ, qᅡ, qᅡ, qᅡ);
+Test_N(qᅢ, qᅢ, qᅢ, qᅢ, qᅢ);
+Test_N(qᅣ, qᅣ, qᅣ, qᅣ, qᅣ);
+Test_N(qᅤ, qᅤ, qᅤ, qᅤ, qᅤ);
+Test_N(qᅥ, qᅥ, qᅥ, qᅥ, qᅥ);
+Test_N(qᅦ, qᅦ, qᅦ, qᅦ, qᅦ);
+Test_N(qᅧ, qᅧ, qᅧ, qᅧ, qᅧ);
+Test_N(qᅨ, qᅨ, qᅨ, qᅨ, qᅨ);
+Test_N(qᅩ, qᅩ, qᅩ, qᅩ, qᅩ);
+Test_N(qᅪ, qᅪ, qᅪ, qᅪ, qᅪ);
+Test_N(qᅫ, qᅫ, qᅫ, qᅫ, qᅫ);
+Test_N(qᅬ, qᅬ, qᅬ, qᅬ, qᅬ);
+Test_N(qᅭ, qᅭ, qᅭ, qᅭ, qᅭ);
+Test_N(qᅮ, qᅮ, qᅮ, qᅮ, qᅮ);
+Test_N(qᅯ, qᅯ, qᅯ, qᅯ, qᅯ);
+Test_N(qᅰ, qᅰ, qᅰ, qᅰ, qᅰ);
+Test_N(qᅱ, qᅱ, qᅱ, qᅱ, qᅱ);
+Test_N(qᅲ, qᅲ, qᅲ, qᅲ, qᅲ);
+Test_N(qᅳ, qᅳ, qᅳ, qᅳ, qᅳ);
+Test_N(qᅴ, qᅴ, qᅴ, qᅴ, qᅴ);
+Test_N(qᅵ, qᅵ, qᅵ, qᅵ, qᅵ);
+Test_N(q¢, q¢, q¢, q¢, q¢);
+Test_N(q£, q£, q£, q£, q£);
+Test_N(q¬, q¬, q¬, q¬, q¬);
+Test_N(q ̄, q ̄, q ̄, q ̄, q ̄);
+Test_N(q¦, q¦, q¦, q¦, q¦);
+Test_N(q¥, q¥, q¥, q¥, q¥);
+Test_N(q₩, q₩, q₩, q₩, q₩);
+Test_N(q│, q│, q│, q│, q│);
+Test_N(q←, q←, q←, q←, q←);
+Test_N(q↑, q↑, q↑, q↑, q↑);
+Test_N(q→, q→, q→, q→, q→);
+Test_N(q↓, q↓, q↓, q↓, q↓);
+Test_N(q■, q■, q■, q■, q■);
+Test_N(q○, q○, q○, q○, q○);
+Test_N(q𐞁, q𐞁, q𐞁, qː, qː);
+Test_N(q𐞂, q𐞂, q𐞂, qˑ, qˑ);
+Test_N(q𐞃, q𐞃, q𐞃, qæ, qæ);
+Test_N(q𐞄, q𐞄, q𐞄, qʙ, qʙ);
+Test_N(q𐞅, q𐞅, q𐞅, qɓ, qɓ);
+Test_N(q𐞇, q𐞇, q𐞇, qʣ, qʣ);
+Test_N(q𐞈, q𐞈, q𐞈, qꭦ, qꭦ);
+Test_N(q𐞉, q𐞉, q𐞉, qʥ, qʥ);
+Test_N(q𐞊, q𐞊, q𐞊, qʤ, qʤ);
+Test_N(q𐞋, q𐞋, q𐞋, qɖ, qɖ);
+Test_N(q𐞌, q𐞌, q𐞌, qɗ, qɗ);
+Test_N(q𐞍, q𐞍, q𐞍, qᶑ, qᶑ);
+Test_N(q𐞎, q𐞎, q𐞎, qɘ, qɘ);
+Test_N(q𐞏, q𐞏, q𐞏, qɞ, qɞ);
+Test_N(q𐞐, q𐞐, q𐞐, qʩ, qʩ);
+Test_N(q𐞑, q𐞑, q𐞑, qɤ, qɤ);
+Test_N(q𐞒, q𐞒, q𐞒, qɢ, qɢ);
+Test_N(q𐞓, q𐞓, q𐞓, qɠ, qɠ);
+Test_N(q𐞔, q𐞔, q𐞔, qʛ, qʛ);
+Test_N(q𐞕, q𐞕, q𐞕, qħ, qħ);
+Test_N(q𐞖, q𐞖, q𐞖, qʜ, qʜ);
+Test_N(q𐞗, q𐞗, q𐞗, qɧ, qɧ);
+Test_N(q𐞘, q𐞘, q𐞘, qʄ, qʄ);
+Test_N(q𐞙, q𐞙, q𐞙, qʪ, qʪ);
+Test_N(q𐞚, q𐞚, q𐞚, qʫ, qʫ);
+Test_N(q𐞛, q𐞛, q𐞛, qɬ, qɬ);
+Test_N(q𐞜, q𐞜, q𐞜, q𝼄, q𝼄);
+Test_N(q𐞝, q𐞝, q𐞝, qꞎ, qꞎ);
+Test_N(q𐞞, q𐞞, q𐞞, qɮ, qɮ);
+Test_N(q𐞟, q𐞟, q𐞟, q𝼅, q𝼅);
+Test_N(q𐞠, q𐞠, q𐞠, qʎ, qʎ);
+Test_N(q𐞡, q𐞡, q𐞡, q𝼆, q𝼆);
+Test_N(q𐞢, q𐞢, q𐞢, qø, qø);
+Test_N(q𐞣, q𐞣, q𐞣, qɶ, qɶ);
+Test_N(q𐞤, q𐞤, q𐞤, qɷ, qɷ);
+Test_N(q𐞥, q𐞥, q𐞥, qq, qq);
+Test_N(q𐞦, q𐞦, q𐞦, qɺ, qɺ);
+Test_N(q𐞧, q𐞧, q𐞧, q𝼈, q𝼈);
+Test_N(q𐞨, q𐞨, q𐞨, qɽ, qɽ);
+Test_N(q𐞩, q𐞩, q𐞩, qɾ, qɾ);
+Test_N(q𐞪, q𐞪, q𐞪, qʀ, qʀ);
+Test_N(q𐞫, q𐞫, q𐞫, qʨ, qʨ);
+Test_N(q𐞬, q𐞬, q𐞬, qʦ, qʦ);
+Test_N(q𐞭, q𐞭, q𐞭, qꭧ, qꭧ);
+Test_N(q𐞮, q𐞮, q𐞮, qʧ, qʧ);
+Test_N(q𐞯, q𐞯, q𐞯, qʈ, qʈ);
+Test_N(q𐞰, q𐞰, q𐞰, qⱱ, qⱱ);
+Test_N(q𐞲, q𐞲, q𐞲, qʏ, qʏ);
+Test_N(q𐞳, q𐞳, q𐞳, qʡ, qʡ);
+Test_N(q𐞴, q𐞴, q𐞴, qʢ, qʢ);
+Test_N(q𐞵, q𐞵, q𐞵, qʘ, qʘ);
+Test_N(q𐞶, q𐞶, q𐞶, qǀ, qǀ);
+Test_N(q𐞷, q𐞷, q𐞷, qǁ, qǁ);
+Test_N(q𐞸, q𐞸, q𐞸, qǂ, qǂ);
+Test_N(q𐞹, q𐞹, q𐞹, q𝼊, q𝼊);
+Test_N(q𐞺, q𐞺, q𐞺, q𝼞, q𝼞);
+Test_N(q𑂚, q𑂚, q𑂚, q𑂚, q𑂚);
+Test_N(q𑂜, q𑂜, q𑂜, q𑂜, q𑂜);
+Test_N(q𑂫, q𑂫, q𑂫, q𑂫, q𑂫);
+Test_N(q𑄮, q𑄮, q𑄮, q𑄮, q𑄮);
+Test_N(q𑄯, q𑄯, q𑄯, q𑄯, q𑄯);
+Test_N(q𑍋, q𑍋, q𑍋, q𑍋, q𑍋);
+Test_N(q𑍌, q𑍌, q𑍌, q𑍌, q𑍌);
+Test_N(q𑒻, q𑒻, q𑒻, q𑒻, q𑒻);
+Test_N(q𑒼, q𑒼, q𑒼, q𑒼, q𑒼);
+Test_N(q𑒾, q𑒾, q𑒾, q𑒾, q𑒾);
+Test_N(q𑖺, q𑖺, q𑖺, q𑖺, q𑖺);
+Test_N(q𑖻, q𑖻, q𑖻, q𑖻, q𑖻);
+Test_N(q𑤸, q𑤸, q𑤸, q𑤸, q𑤸);
+Test_N(q𝅗𝅥, q𝅗𝅥, q𝅗𝅥, q𝅗𝅥, q𝅗𝅥);
+Test_N(q𝅘𝅥, q𝅘𝅥, q𝅘𝅥, q𝅘𝅥, q𝅘𝅥);
+Test_N(q𝅘𝅥𝅮, q𝅘𝅥𝅮, q𝅘𝅥𝅮, q𝅘𝅥𝅮, q𝅘𝅥𝅮);
+Test_N(q𝅘𝅥𝅯, q𝅘𝅥𝅯, q𝅘𝅥𝅯, q𝅘𝅥𝅯, q𝅘𝅥𝅯);
+Test_N(q𝅘𝅥𝅰, q𝅘𝅥𝅰, q𝅘𝅥𝅰, q𝅘𝅥𝅰, q𝅘𝅥𝅰);
+Test_N(q𝅘𝅥𝅱, q𝅘𝅥𝅱, q𝅘𝅥𝅱, q𝅘𝅥𝅱, q𝅘𝅥𝅱);
+Test_N(q𝅘𝅥𝅲, q𝅘𝅥𝅲, q𝅘𝅥𝅲, q𝅘𝅥𝅲, q𝅘𝅥𝅲);
+Test_N(q𝆹𝅥, q𝆹𝅥, q𝆹𝅥, q𝆹𝅥, q𝆹𝅥);
+Test_N(q𝆺𝅥, q𝆺𝅥, q𝆺𝅥, q𝆺𝅥, q𝆺𝅥);
+Test_N(q𝆹𝅥𝅮, q𝆹𝅥𝅮, q𝆹𝅥𝅮, q𝆹𝅥𝅮, q𝆹𝅥𝅮);
+Test_N(q𝆺𝅥𝅮, q𝆺𝅥𝅮, q𝆺𝅥𝅮, q𝆺𝅥𝅮, q𝆺𝅥𝅮);
+Test_N(q𝆹𝅥𝅯, q𝆹𝅥𝅯, q𝆹𝅥𝅯, q𝆹𝅥𝅯, q𝆹𝅥𝅯);
+Test_N(q𝆺𝅥𝅯, q𝆺𝅥𝅯, q𝆺𝅥𝅯, q𝆺𝅥𝅯, q𝆺𝅥𝅯);
+Test_N(q𝐀, q𝐀, q𝐀, qA, qA);
+Test_N(q𝐁, q𝐁, q𝐁, qB, qB);
+Test_N(q𝐂, q𝐂, q𝐂, qC, qC);
+Test_N(q𝐃, q𝐃, q𝐃, qD, qD);
+Test_N(q𝐄, q𝐄, q𝐄, qE, qE);
+Test_N(q𝐅, q𝐅, q𝐅, qF, qF);
+Test_N(q𝐆, q𝐆, q𝐆, qG, qG);
+Test_N(q𝐇, q𝐇, q𝐇, qH, qH);
+Test_N(q𝐈, q𝐈, q𝐈, qI, qI);
+Test_N(q𝐉, q𝐉, q𝐉, qJ, qJ);
+Test_N(q𝐊, q𝐊, q𝐊, qK, qK);
+Test_N(q𝐋, q𝐋, q𝐋, qL, qL);
+Test_N(q𝐌, q𝐌, q𝐌, qM, qM);
+Test_N(q𝐍, q𝐍, q𝐍, qN, qN);
+Test_N(q𝐎, q𝐎, q𝐎, qO, qO);
+Test_N(q𝐏, q𝐏, q𝐏, qP, qP);
+Test_N(q𝐐, q𝐐, q𝐐, qQ, qQ);
+Test_N(q𝐑, q𝐑, q𝐑, qR, qR);
+Test_N(q𝐒, q𝐒, q𝐒, qS, qS);
+Test_N(q𝐓, q𝐓, q𝐓, qT, qT);
+Test_N(q𝐔, q𝐔, q𝐔, qU, qU);
+Test_N(q𝐕, q𝐕, q𝐕, qV, qV);
+Test_N(q𝐖, q𝐖, q𝐖, qW, qW);
+Test_N(q𝐗, q𝐗, q𝐗, qX, qX);
+Test_N(q𝐘, q𝐘, q𝐘, qY, qY);
+Test_N(q𝐙, q𝐙, q𝐙, qZ, qZ);
+Test_N(q𝐚, q𝐚, q𝐚, qa, qa);
+Test_N(q𝐛, q𝐛, q𝐛, qb, qb);
+Test_N(q𝐜, q𝐜, q𝐜, qc, qc);
+Test_N(q𝐝, q𝐝, q𝐝, qd, qd);
+Test_N(q𝐞, q𝐞, q𝐞, qe, qe);
+Test_N(q𝐟, q𝐟, q𝐟, qf, qf);
+Test_N(q𝐠, q𝐠, q𝐠, qg, qg);
+Test_N(q𝐡, q𝐡, q𝐡, qh, qh);
+Test_N(q𝐢, q𝐢, q𝐢, qi, qi);
+Test_N(q𝐣, q𝐣, q𝐣, qj, qj);
+Test_N(q𝐤, q𝐤, q𝐤, qk, qk);
+Test_N(q𝐥, q𝐥, q𝐥, ql, ql);
+Test_N(q𝐦, q𝐦, q𝐦, qm, qm);
+Test_N(q𝐧, q𝐧, q𝐧, qn, qn);
+Test_N(q𝐨, q𝐨, q𝐨, qo, qo);
+Test_N(q𝐩, q𝐩, q𝐩, qp, qp);
+Test_N(q𝐪, q𝐪, q𝐪, qq, qq);
+Test_N(q𝐫, q𝐫, q𝐫, qr, qr);
+Test_N(q𝐬, q𝐬, q𝐬, qs, qs);
+Test_N(q𝐭, q𝐭, q𝐭, qt, qt);
+Test_N(q𝐮, q𝐮, q𝐮, qu, qu);
+Test_N(q𝐯, q𝐯, q𝐯, qv, qv);
+Test_N(q𝐰, q𝐰, q𝐰, qw, qw);
+Test_N(q𝐱, q𝐱, q𝐱, qx, qx);
+Test_N(q𝐲, q𝐲, q𝐲, qy, qy);
+Test_N(q𝐳, q𝐳, q𝐳, qz, qz);
+Test_N(q𝐴, q𝐴, q𝐴, qA, qA);
+Test_N(q𝐵, q𝐵, q𝐵, qB, qB);
+Test_N(q𝐶, q𝐶, q𝐶, qC, qC);
+Test_N(q𝐷, q𝐷, q𝐷, qD, qD);
+Test_N(q𝐸, q𝐸, q𝐸, qE, qE);
+Test_N(q𝐹, q𝐹, q𝐹, qF, qF);
+Test_N(q𝐺, q𝐺, q𝐺, qG, qG);
+Test_N(q𝐻, q𝐻, q𝐻, qH, qH);
+Test_N(q𝐼, q𝐼, q𝐼, qI, qI);
+Test_N(q𝐽, q𝐽, q𝐽, qJ, qJ);
+Test_N(q𝐾, q𝐾, q𝐾, qK, qK);
+Test_N(q𝐿, q𝐿, q𝐿, qL, qL);
+Test_N(q𝑀, q𝑀, q𝑀, qM, qM);
+Test_N(q𝑁, q𝑁, q𝑁, qN, qN);
+Test_N(q𝑂, q𝑂, q𝑂, qO, qO);
+Test_N(q𝑃, q𝑃, q𝑃, qP, qP);
+Test_N(q𝑄, q𝑄, q𝑄, qQ, qQ);
+Test_N(q𝑅, q𝑅, q𝑅, qR, qR);
+Test_N(q𝑆, q𝑆, q𝑆, qS, qS);
+Test_N(q𝑇, q𝑇, q𝑇, qT, qT);
+Test_N(q𝑈, q𝑈, q𝑈, qU, qU);
+Test_N(q𝑉, q𝑉, q𝑉, qV, qV);
+Test_N(q𝑊, q𝑊, q𝑊, qW, qW);
+Test_N(q𝑋, q𝑋, q𝑋, qX, qX);
+Test_N(q𝑌, q𝑌, q𝑌, qY, qY);
+Test_N(q𝑍, q𝑍, q𝑍, qZ, qZ);
+Test_N(q𝑎, q𝑎, q𝑎, qa, qa);
+Test_N(q𝑏, q𝑏, q𝑏, qb, qb);
+Test_N(q𝑐, q𝑐, q𝑐, qc, qc);
+Test_N(q𝑑, q𝑑, q𝑑, qd, qd);
+Test_N(q𝑒, q𝑒, q𝑒, qe, qe);
+Test_N(q𝑓, q𝑓, q𝑓, qf, qf);
+Test_N(q𝑔, q𝑔, q𝑔, qg, qg);
+Test_N(q𝑖, q𝑖, q𝑖, qi, qi);
+Test_N(q𝑗, q𝑗, q𝑗, qj, qj);
+Test_N(q𝑘, q𝑘, q𝑘, qk, qk);
+Test_N(q𝑙, q𝑙, q𝑙, ql, ql);
+Test_N(q𝑚, q𝑚, q𝑚, qm, qm);
+Test_N(q𝑛, q𝑛, q𝑛, qn, qn);
+Test_N(q𝑜, q𝑜, q𝑜, qo, qo);
+Test_N(q𝑝, q𝑝, q𝑝, qp, qp);
+Test_N(q𝑞, q𝑞, q𝑞, qq, qq);
+Test_N(q𝑟, q𝑟, q𝑟, qr, qr);
+Test_N(q𝑠, q𝑠, q𝑠, qs, qs);
+Test_N(q𝑡, q𝑡, q𝑡, qt, qt);
+Test_N(q𝑢, q𝑢, q𝑢, qu, qu);
+Test_N(q𝑣, q𝑣, q𝑣, qv, qv);
+Test_N(q𝑤, q𝑤, q𝑤, qw, qw);
+Test_N(q𝑥, q𝑥, q𝑥, qx, qx);
+Test_N(q𝑦, q𝑦, q𝑦, qy, qy);
+Test_N(q𝑧, q𝑧, q𝑧, qz, qz);
+Test_N(q𝑨, q𝑨, q𝑨, qA, qA);
+Test_N(q𝑩, q𝑩, q𝑩, qB, qB);
+Test_N(q𝑪, q𝑪, q𝑪, qC, qC);
+Test_N(q𝑫, q𝑫, q𝑫, qD, qD);
+Test_N(q𝑬, q𝑬, q𝑬, qE, qE);
+Test_N(q𝑭, q𝑭, q𝑭, qF, qF);
+Test_N(q𝑮, q𝑮, q𝑮, qG, qG);
+Test_N(q𝑯, q𝑯, q𝑯, qH, qH);
+Test_N(q𝑰, q𝑰, q𝑰, qI, qI);
+Test_N(q𝑱, q𝑱, q𝑱, qJ, qJ);
+Test_N(q𝑲, q𝑲, q𝑲, qK, qK);
+Test_N(q𝑳, q𝑳, q𝑳, qL, qL);
+Test_N(q𝑴, q𝑴, q𝑴, qM, qM);
+Test_N(q𝑵, q𝑵, q𝑵, qN, qN);
+Test_N(q𝑶, q𝑶, q𝑶, qO, qO);
+Test_N(q𝑷, q𝑷, q𝑷, qP, qP);
+Test_N(q𝑸, q𝑸, q𝑸, qQ, qQ);
+Test_N(q𝑹, q𝑹, q𝑹, qR, qR);
+Test_N(q𝑺, q𝑺, q𝑺, qS, qS);
+Test_N(q𝑻, q𝑻, q𝑻, qT, qT);
+Test_N(q𝑼, q𝑼, q𝑼, qU, qU);
+Test_N(q𝑽, q𝑽, q𝑽, qV, qV);
+Test_N(q𝑾, q𝑾, q𝑾, qW, qW);
+Test_N(q𝑿, q𝑿, q𝑿, qX, qX);
+Test_N(q𝒀, q𝒀, q𝒀, qY, qY);
+Test_N(q𝒁, q𝒁, q𝒁, qZ, qZ);
+Test_N(q𝒂, q𝒂, q𝒂, qa, qa);
+Test_N(q𝒃, q𝒃, q𝒃, qb, qb);
+Test_N(q𝒄, q𝒄, q𝒄, qc, qc);
+Test_N(q𝒅, q𝒅, q𝒅, qd, qd);
+Test_N(q𝒆, q𝒆, q𝒆, qe, qe);
+Test_N(q𝒇, q𝒇, q𝒇, qf, qf);
+Test_N(q𝒈, q𝒈, q𝒈, qg, qg);
+Test_N(q𝒉, q𝒉, q𝒉, qh, qh);
+Test_N(q𝒊, q𝒊, q𝒊, qi, qi);
+Test_N(q𝒋, q𝒋, q𝒋, qj, qj);
+Test_N(q𝒌, q𝒌, q𝒌, qk, qk);
+Test_N(q𝒍, q𝒍, q𝒍, ql, ql);
+Test_N(q𝒎, q𝒎, q𝒎, qm, qm);
+Test_N(q𝒏, q𝒏, q𝒏, qn, qn);
+Test_N(q𝒐, q𝒐, q𝒐, qo, qo);
+Test_N(q𝒑, q𝒑, q𝒑, qp, qp);
+Test_N(q𝒒, q𝒒, q𝒒, qq, qq);
+Test_N(q𝒓, q𝒓, q𝒓, qr, qr);
+Test_N(q𝒔, q𝒔, q𝒔, qs, qs);
+Test_N(q𝒕, q𝒕, q𝒕, qt, qt);
+Test_N(q𝒖, q𝒖, q𝒖, qu, qu);
+Test_N(q𝒗, q𝒗, q𝒗, qv, qv);
+Test_N(q𝒘, q𝒘, q𝒘, qw, qw);
+Test_N(q𝒙, q𝒙, q𝒙, qx, qx);
+Test_N(q𝒚, q𝒚, q𝒚, qy, qy);
+Test_N(q𝒛, q𝒛, q𝒛, qz, qz);
+Test_N(q𝒜, q𝒜, q𝒜, qA, qA);
+Test_N(q𝒞, q𝒞, q𝒞, qC, qC);
+Test_N(q𝒟, q𝒟, q𝒟, qD, qD);
+Test_N(q𝒢, q𝒢, q𝒢, qG, qG);
+Test_N(q𝒥, q𝒥, q𝒥, qJ, qJ);
+Test_N(q𝒦, q𝒦, q𝒦, qK, qK);
+Test_N(q𝒩, q𝒩, q𝒩, qN, qN);
+Test_N(q𝒪, q𝒪, q𝒪, qO, qO);
+Test_N(q𝒫, q𝒫, q𝒫, qP, qP);
+Test_N(q𝒬, q𝒬, q𝒬, qQ, qQ);
+Test_N(q𝒮, q𝒮, q𝒮, qS, qS);
+Test_N(q𝒯, q𝒯, q𝒯, qT, qT);
+Test_N(q𝒰, q𝒰, q𝒰, qU, qU);
+Test_N(q𝒱, q𝒱, q𝒱, qV, qV);
+Test_N(q𝒲, q𝒲, q𝒲, qW, qW);
+Test_N(q𝒳, q𝒳, q𝒳, qX, qX);
+Test_N(q𝒴, q𝒴, q𝒴, qY, qY);
+Test_N(q𝒵, q𝒵, q𝒵, qZ, qZ);
+Test_N(q𝒶, q𝒶, q𝒶, qa, qa);
+Test_N(q𝒷, q𝒷, q𝒷, qb, qb);
+Test_N(q𝒸, q𝒸, q𝒸, qc, qc);
+Test_N(q𝒹, q𝒹, q𝒹, qd, qd);
+Test_N(q𝒻, q𝒻, q𝒻, qf, qf);
+Test_N(q𝒽, q𝒽, q𝒽, qh, qh);
+Test_N(q𝒾, q𝒾, q𝒾, qi, qi);
+Test_N(q𝒿, q𝒿, q𝒿, qj, qj);
+Test_N(q𝓀, q𝓀, q𝓀, qk, qk);
+Test_N(q𝓁, q𝓁, q𝓁, ql, ql);
+Test_N(q𝓂, q𝓂, q𝓂, qm, qm);
+Test_N(q𝓃, q𝓃, q𝓃, qn, qn);
+Test_N(q𝓅, q𝓅, q𝓅, qp, qp);
+Test_N(q𝓆, q𝓆, q𝓆, qq, qq);
+Test_N(q𝓇, q𝓇, q𝓇, qr, qr);
+Test_N(q𝓈, q𝓈, q𝓈, qs, qs);
+Test_N(q𝓉, q𝓉, q𝓉, qt, qt);
+Test_N(q𝓊, q𝓊, q𝓊, qu, qu);
+Test_N(q𝓋, q𝓋, q𝓋, qv, qv);
+Test_N(q𝓌, q𝓌, q𝓌, qw, qw);
+Test_N(q𝓍, q𝓍, q𝓍, qx, qx);
+Test_N(q𝓎, q𝓎, q𝓎, qy, qy);
+Test_N(q𝓏, q𝓏, q𝓏, qz, qz);
+Test_N(q𝓐, q𝓐, q𝓐, qA, qA);
+Test_N(q𝓑, q𝓑, q𝓑, qB, qB);
+Test_N(q𝓒, q𝓒, q𝓒, qC, qC);
+Test_N(q𝓓, q𝓓, q𝓓, qD, qD);
+Test_N(q𝓔, q𝓔, q𝓔, qE, qE);
+Test_N(q𝓕, q𝓕, q𝓕, qF, qF);
+Test_N(q𝓖, q𝓖, q𝓖, qG, qG);
+Test_N(q𝓗, q𝓗, q𝓗, qH, qH);
+Test_N(q𝓘, q𝓘, q𝓘, qI, qI);
+Test_N(q𝓙, q𝓙, q𝓙, qJ, qJ);
+Test_N(q𝓚, q𝓚, q𝓚, qK, qK);
+Test_N(q𝓛, q𝓛, q𝓛, qL, qL);
+Test_N(q𝓜, q𝓜, q𝓜, qM, qM);
+Test_N(q𝓝, q𝓝, q𝓝, qN, qN);
+Test_N(q𝓞, q𝓞, q𝓞, qO, qO);
+Test_N(q𝓟, q𝓟, q𝓟, qP, qP);
+Test_N(q𝓠, q𝓠, q𝓠, qQ, qQ);
+Test_N(q𝓡, q𝓡, q𝓡, qR, qR);
+Test_N(q𝓢, q𝓢, q𝓢, qS, qS);
+Test_N(q𝓣, q𝓣, q𝓣, qT, qT);
+Test_N(q𝓤, q𝓤, q𝓤, qU, qU);
+Test_N(q𝓥, q𝓥, q𝓥, qV, qV);
+Test_N(q𝓦, q𝓦, q𝓦, qW, qW);
+Test_N(q𝓧, q𝓧, q𝓧, qX, qX);
+Test_N(q𝓨, q𝓨, q𝓨, qY, qY);
+Test_N(q𝓩, q𝓩, q𝓩, qZ, qZ);
+Test_N(q𝓪, q𝓪, q𝓪, qa, qa);
+Test_N(q𝓫, q𝓫, q𝓫, qb, qb);
+Test_N(q𝓬, q𝓬, q𝓬, qc, qc);
+Test_N(q𝓭, q𝓭, q𝓭, qd, qd);
+Test_N(q𝓮, q𝓮, q𝓮, qe, qe);
+Test_N(q𝓯, q𝓯, q𝓯, qf, qf);
+Test_N(q𝓰, q𝓰, q𝓰, qg, qg);
+Test_N(q𝓱, q𝓱, q𝓱, qh, qh);
+Test_N(q𝓲, q𝓲, q𝓲, qi, qi);
+Test_N(q𝓳, q𝓳, q𝓳, qj, qj);
+Test_N(q𝓴, q𝓴, q𝓴, qk, qk);
+Test_N(q𝓵, q𝓵, q𝓵, ql, ql);
+Test_N(q𝓶, q𝓶, q𝓶, qm, qm);
+Test_N(q𝓷, q𝓷, q𝓷, qn, qn);
+Test_N(q𝓸, q𝓸, q𝓸, qo, qo);
+Test_N(q𝓹, q𝓹, q𝓹, qp, qp);
+Test_N(q𝓺, q𝓺, q𝓺, qq, qq);
+Test_N(q𝓻, q𝓻, q𝓻, qr, qr);
+Test_N(q𝓼, q𝓼, q𝓼, qs, qs);
+Test_N(q𝓽, q𝓽, q𝓽, qt, qt);
+Test_N(q𝓾, q𝓾, q𝓾, qu, qu);
+Test_N(q𝓿, q𝓿, q𝓿, qv, qv);
+Test_N(q𝔀, q𝔀, q𝔀, qw, qw);
+Test_N(q𝔁, q𝔁, q𝔁, qx, qx);
+Test_N(q𝔂, q𝔂, q𝔂, qy, qy);
+Test_N(q𝔃, q𝔃, q𝔃, qz, qz);
+Test_N(q𝔄, q𝔄, q𝔄, qA, qA);
+Test_N(q𝔅, q𝔅, q𝔅, qB, qB);
+Test_N(q𝔇, q𝔇, q𝔇, qD, qD);
+Test_N(q𝔈, q𝔈, q𝔈, qE, qE);
+Test_N(q𝔉, q𝔉, q𝔉, qF, qF);
+Test_N(q𝔊, q𝔊, q𝔊, qG, qG);
+Test_N(q𝔍, q𝔍, q𝔍, qJ, qJ);
+Test_N(q𝔎, q𝔎, q𝔎, qK, qK);
+Test_N(q𝔏, q𝔏, q𝔏, qL, qL);
+Test_N(q𝔐, q𝔐, q𝔐, qM, qM);
+Test_N(q𝔑, q𝔑, q𝔑, qN, qN);
+Test_N(q𝔒, q𝔒, q𝔒, qO, qO);
+Test_N(q𝔓, q𝔓, q𝔓, qP, qP);
+Test_N(q𝔔, q𝔔, q𝔔, qQ, qQ);
+Test_N(q𝔖, q𝔖, q𝔖, qS, qS);
+Test_N(q𝔗, q𝔗, q𝔗, qT, qT);
+Test_N(q𝔘, q𝔘, q𝔘, qU, qU);
+Test_N(q𝔙, q𝔙, q𝔙, qV, qV);
+Test_N(q𝔚, q𝔚, q𝔚, qW, qW);
+Test_N(q𝔛, q𝔛, q𝔛, qX, qX);
+Test_N(q𝔜, q𝔜, q𝔜, qY, qY);
+Test_N(q𝔞, q𝔞, q𝔞, qa, qa);
+Test_N(q𝔟, q𝔟, q𝔟, qb, qb);
+Test_N(q𝔠, q𝔠, q𝔠, qc, qc);
+Test_N(q𝔡, q𝔡, q𝔡, qd, qd);
+Test_N(q𝔢, q𝔢, q𝔢, qe, qe);
+Test_N(q𝔣, q𝔣, q𝔣, qf, qf);
+Test_N(q𝔤, q𝔤, q𝔤, qg, qg);
+Test_N(q𝔥, q𝔥, q𝔥, qh, qh);
+Test_N(q𝔦, q𝔦, q𝔦, qi, qi);
+Test_N(q𝔧, q𝔧, q𝔧, qj, qj);
+Test_N(q𝔨, q𝔨, q𝔨, qk, qk);
+Test_N(q𝔩, q𝔩, q𝔩, ql, ql);
+Test_N(q𝔪, q𝔪, q𝔪, qm, qm);
+Test_N(q𝔫, q𝔫, q𝔫, qn, qn);
+Test_N(q𝔬, q𝔬, q𝔬, qo, qo);
+Test_N(q𝔭, q𝔭, q𝔭, qp, qp);
+Test_N(q𝔮, q𝔮, q𝔮, qq, qq);
+Test_N(q𝔯, q𝔯, q𝔯, qr, qr);
+Test_N(q𝔰, q𝔰, q𝔰, qs, qs);
+Test_N(q𝔱, q𝔱, q𝔱, qt, qt);
+Test_N(q𝔲, q𝔲, q𝔲, qu, qu);
+Test_N(q𝔳, q𝔳, q𝔳, qv, qv);
+Test_N(q𝔴, q𝔴, q𝔴, qw, qw);
+Test_N(q𝔵, q𝔵, q𝔵, qx, qx);
+Test_N(q𝔶, q𝔶, q𝔶, qy, qy);
+Test_N(q𝔷, q𝔷, q𝔷, qz, qz);
+Test_N(q𝔸, q𝔸, q𝔸, qA, qA);
+Test_N(q𝔹, q𝔹, q𝔹, qB, qB);
+Test_N(q𝔻, q𝔻, q𝔻, qD, qD);
+Test_N(q𝔼, q𝔼, q𝔼, qE, qE);
+Test_N(q𝔽, q𝔽, q𝔽, qF, qF);
+Test_N(q𝔾, q𝔾, q𝔾, qG, qG);
+Test_N(q𝕀, q𝕀, q𝕀, qI, qI);
+Test_N(q𝕁, q𝕁, q𝕁, qJ, qJ);
+Test_N(q𝕂, q𝕂, q𝕂, qK, qK);
+Test_N(q𝕃, q𝕃, q𝕃, qL, qL);
+Test_N(q𝕄, q𝕄, q𝕄, qM, qM);
+Test_N(q𝕆, q𝕆, q𝕆, qO, qO);
+Test_N(q𝕊, q𝕊, q𝕊, qS, qS);
+Test_N(q𝕋, q𝕋, q𝕋, qT, qT);
+Test_N(q𝕌, q𝕌, q𝕌, qU, qU);
+Test_N(q𝕍, q𝕍, q𝕍, qV, qV);
+Test_N(q𝕎, q𝕎, q𝕎, qW, qW);
+Test_N(q𝕏, q𝕏, q𝕏, qX, qX);
+Test_N(q𝕐, q𝕐, q𝕐, qY, qY);
+Test_N(q𝕒, q𝕒, q𝕒, qa, qa);
+Test_N(q𝕓, q𝕓, q𝕓, qb, qb);
+Test_N(q𝕔, q𝕔, q𝕔, qc, qc);
+Test_N(q𝕕, q𝕕, q𝕕, qd, qd);
+Test_N(q𝕖, q𝕖, q𝕖, qe, qe);
+Test_N(q𝕗, q𝕗, q𝕗, qf, qf);
+Test_N(q𝕘, q𝕘, q𝕘, qg, qg);
+Test_N(q𝕙, q𝕙, q𝕙, qh, qh);
+Test_N(q𝕚, q𝕚, q𝕚, qi, qi);
+Test_N(q𝕛, q𝕛, q𝕛, qj, qj);
+Test_N(q𝕜, q𝕜, q𝕜, qk, qk);
+Test_N(q𝕝, q𝕝, q𝕝, ql, ql);
+Test_N(q𝕞, q𝕞, q𝕞, qm, qm);
+Test_N(q𝕟, q𝕟, q𝕟, qn, qn);
+Test_N(q𝕠, q𝕠, q𝕠, qo, qo);
+Test_N(q𝕡, q𝕡, q𝕡, qp, qp);
+Test_N(q𝕢, q𝕢, q𝕢, qq, qq);
+Test_N(q𝕣, q𝕣, q𝕣, qr, qr);
+Test_N(q𝕤, q𝕤, q𝕤, qs, qs);
+Test_N(q𝕥, q𝕥, q𝕥, qt, qt);
+Test_N(q𝕦, q𝕦, q𝕦, qu, qu);
+Test_N(q𝕧, q𝕧, q𝕧, qv, qv);
+Test_N(q𝕨, q𝕨, q𝕨, qw, qw);
+Test_N(q𝕩, q𝕩, q𝕩, qx, qx);
+Test_N(q𝕪, q𝕪, q𝕪, qy, qy);
+Test_N(q𝕫, q𝕫, q𝕫, qz, qz);
+Test_N(q𝕬, q𝕬, q𝕬, qA, qA);
+Test_N(q𝕭, q𝕭, q𝕭, qB, qB);
+Test_N(q𝕮, q𝕮, q𝕮, qC, qC);
+Test_N(q𝕯, q𝕯, q𝕯, qD, qD);
+Test_N(q𝕰, q𝕰, q𝕰, qE, qE);
+Test_N(q𝕱, q𝕱, q𝕱, qF, qF);
+Test_N(q𝕲, q𝕲, q𝕲, qG, qG);
+Test_N(q𝕳, q𝕳, q𝕳, qH, qH);
+Test_N(q𝕴, q𝕴, q𝕴, qI, qI);
+Test_N(q𝕵, q𝕵, q𝕵, qJ, qJ);
+Test_N(q𝕶, q𝕶, q𝕶, qK, qK);
+Test_N(q𝕷, q𝕷, q𝕷, qL, qL);
+Test_N(q𝕸, q𝕸, q𝕸, qM, qM);
+Test_N(q𝕹, q𝕹, q𝕹, qN, qN);
+Test_N(q𝕺, q𝕺, q𝕺, qO, qO);
+Test_N(q𝕻, q𝕻, q𝕻, qP, qP);
+Test_N(q𝕼, q𝕼, q𝕼, qQ, qQ);
+Test_N(q𝕽, q𝕽, q𝕽, qR, qR);
+Test_N(q𝕾, q𝕾, q𝕾, qS, qS);
+Test_N(q𝕿, q𝕿, q𝕿, qT, qT);
+Test_N(q𝖀, q𝖀, q𝖀, qU, qU);
+Test_N(q𝖁, q𝖁, q𝖁, qV, qV);
+Test_N(q𝖂, q𝖂, q𝖂, qW, qW);
+Test_N(q𝖃, q𝖃, q𝖃, qX, qX);
+Test_N(q𝖄, q𝖄, q𝖄, qY, qY);
+Test_N(q𝖅, q𝖅, q𝖅, qZ, qZ);
+Test_N(q𝖆, q𝖆, q𝖆, qa, qa);
+Test_N(q𝖇, q𝖇, q𝖇, qb, qb);
+Test_N(q𝖈, q𝖈, q𝖈, qc, qc);
+Test_N(q𝖉, q𝖉, q𝖉, qd, qd);
+Test_N(q𝖊, q𝖊, q𝖊, qe, qe);
+Test_N(q𝖋, q𝖋, q𝖋, qf, qf);
+Test_N(q𝖌, q𝖌, q𝖌, qg, qg);
+Test_N(q𝖍, q𝖍, q𝖍, qh, qh);
+Test_N(q𝖎, q𝖎, q𝖎, qi, qi);
+Test_N(q𝖏, q𝖏, q𝖏, qj, qj);
+Test_N(q𝖐, q𝖐, q𝖐, qk, qk);
+Test_N(q𝖑, q𝖑, q𝖑, ql, ql);
+Test_N(q𝖒, q𝖒, q𝖒, qm, qm);
+Test_N(q𝖓, q𝖓, q𝖓, qn, qn);
+Test_N(q𝖔, q𝖔, q𝖔, qo, qo);
+Test_N(q𝖕, q𝖕, q𝖕, qp, qp);
+Test_N(q𝖖, q𝖖, q𝖖, qq, qq);
+Test_N(q𝖗, q𝖗, q𝖗, qr, qr);
+Test_N(q𝖘, q𝖘, q𝖘, qs, qs);
+Test_N(q𝖙, q𝖙, q𝖙, qt, qt);
+Test_N(q𝖚, q𝖚, q𝖚, qu, qu);
+Test_N(q𝖛, q𝖛, q𝖛, qv, qv);
+Test_N(q𝖜, q𝖜, q𝖜, qw, qw);
+Test_N(q𝖝, q𝖝, q𝖝, qx, qx);
+Test_N(q𝖞, q𝖞, q𝖞, qy, qy);
+Test_N(q𝖟, q𝖟, q𝖟, qz, qz);
+Test_N(q𝖠, q𝖠, q𝖠, qA, qA);
+Test_N(q𝖡, q𝖡, q𝖡, qB, qB);
+Test_N(q𝖢, q𝖢, q𝖢, qC, qC);
+Test_N(q𝖣, q𝖣, q𝖣, qD, qD);
+Test_N(q𝖤, q𝖤, q𝖤, qE, qE);
+Test_N(q𝖥, q𝖥, q𝖥, qF, qF);
+Test_N(q𝖦, q𝖦, q𝖦, qG, qG);
+Test_N(q𝖧, q𝖧, q𝖧, qH, qH);
+Test_N(q𝖨, q𝖨, q𝖨, qI, qI);
+Test_N(q𝖩, q𝖩, q𝖩, qJ, qJ);
+Test_N(q𝖪, q𝖪, q𝖪, qK, qK);
+Test_N(q𝖫, q𝖫, q𝖫, qL, qL);
+Test_N(q𝖬, q𝖬, q𝖬, qM, qM);
+Test_N(q𝖭, q𝖭, q𝖭, qN, qN);
+Test_N(q𝖮, q𝖮, q𝖮, qO, qO);
+Test_N(q𝖯, q𝖯, q𝖯, qP, qP);
+Test_N(q𝖰, q𝖰, q𝖰, qQ, qQ);
+Test_N(q𝖱, q𝖱, q𝖱, qR, qR);
+Test_N(q𝖲, q𝖲, q𝖲, qS, qS);
+Test_N(q𝖳, q𝖳, q𝖳, qT, qT);
+Test_N(q𝖴, q𝖴, q𝖴, qU, qU);
+Test_N(q𝖵, q𝖵, q𝖵, qV, qV);
+Test_N(q𝖶, q𝖶, q𝖶, qW, qW);
+Test_N(q𝖷, q𝖷, q𝖷, qX, qX);
+Test_N(q𝖸, q𝖸, q𝖸, qY, qY);
+Test_N(q𝖹, q𝖹, q𝖹, qZ, qZ);
+Test_N(q𝖺, q𝖺, q𝖺, qa, qa);
+Test_N(q𝖻, q𝖻, q𝖻, qb, qb);
+Test_N(q𝖼, q𝖼, q𝖼, qc, qc);
+Test_N(q𝖽, q𝖽, q𝖽, qd, qd);
+Test_N(q𝖾, q𝖾, q𝖾, qe, qe);
+Test_N(q𝖿, q𝖿, q𝖿, qf, qf);
+Test_N(q𝗀, q𝗀, q𝗀, qg, qg);
+Test_N(q𝗁, q𝗁, q𝗁, qh, qh);
+Test_N(q𝗂, q𝗂, q𝗂, qi, qi);
+Test_N(q𝗃, q𝗃, q𝗃, qj, qj);
+Test_N(q𝗄, q𝗄, q𝗄, qk, qk);
+Test_N(q𝗅, q𝗅, q𝗅, ql, ql);
+Test_N(q𝗆, q𝗆, q𝗆, qm, qm);
+Test_N(q𝗇, q𝗇, q𝗇, qn, qn);
+Test_N(q𝗈, q𝗈, q𝗈, qo, qo);
+Test_N(q𝗉, q𝗉, q𝗉, qp, qp);
+Test_N(q𝗊, q𝗊, q𝗊, qq, qq);
+Test_N(q𝗋, q𝗋, q𝗋, qr, qr);
+Test_N(q𝗌, q𝗌, q𝗌, qs, qs);
+Test_N(q𝗍, q𝗍, q𝗍, qt, qt);
+Test_N(q𝗎, q𝗎, q𝗎, qu, qu);
+Test_N(q𝗏, q𝗏, q𝗏, qv, qv);
+Test_N(q𝗐, q𝗐, q𝗐, qw, qw);
+Test_N(q𝗑, q𝗑, q𝗑, qx, qx);
+Test_N(q𝗒, q𝗒, q𝗒, qy, qy);
+Test_N(q𝗓, q𝗓, q𝗓, qz, qz);
+Test_N(q𝗔, q𝗔, q𝗔, qA, qA);
+Test_N(q𝗕, q𝗕, q𝗕, qB, qB);
+Test_N(q𝗖, q𝗖, q𝗖, qC, qC);
+Test_N(q𝗗, q𝗗, q𝗗, qD, qD);
+Test_N(q𝗘, q𝗘, q𝗘, qE, qE);
+Test_N(q𝗙, q𝗙, q𝗙, qF, qF);
+Test_N(q𝗚, q𝗚, q𝗚, qG, qG);
+Test_N(q𝗛, q𝗛, q𝗛, qH, qH);
+Test_N(q𝗜, q𝗜, q𝗜, qI, qI);
+Test_N(q𝗝, q𝗝, q𝗝, qJ, qJ);
+Test_N(q𝗞, q𝗞, q𝗞, qK, qK);
+Test_N(q𝗟, q𝗟, q𝗟, qL, qL);
+Test_N(q𝗠, q𝗠, q𝗠, qM, qM);
+Test_N(q𝗡, q𝗡, q𝗡, qN, qN);
+Test_N(q𝗢, q𝗢, q𝗢, qO, qO);
+Test_N(q𝗣, q𝗣, q𝗣, qP, qP);
+Test_N(q𝗤, q𝗤, q𝗤, qQ, qQ);
+Test_N(q𝗥, q𝗥, q𝗥, qR, qR);
+Test_N(q𝗦, q𝗦, q𝗦, qS, qS);
+Test_N(q𝗧, q𝗧, q𝗧, qT, qT);
+Test_N(q𝗨, q𝗨, q𝗨, qU, qU);
+Test_N(q𝗩, q𝗩, q𝗩, qV, qV);
+Test_N(q𝗪, q𝗪, q𝗪, qW, qW);
+Test_N(q𝗫, q𝗫, q𝗫, qX, qX);
+Test_N(q𝗬, q𝗬, q𝗬, qY, qY);
+Test_N(q𝗭, q𝗭, q𝗭, qZ, qZ);
+Test_N(q𝗮, q𝗮, q𝗮, qa, qa);
+Test_N(q𝗯, q𝗯, q𝗯, qb, qb);
+Test_N(q𝗰, q𝗰, q𝗰, qc, qc);
+Test_N(q𝗱, q𝗱, q𝗱, qd, qd);
+Test_N(q𝗲, q𝗲, q𝗲, qe, qe);
+Test_N(q𝗳, q𝗳, q𝗳, qf, qf);
+Test_N(q𝗴, q𝗴, q𝗴, qg, qg);
+Test_N(q𝗵, q𝗵, q𝗵, qh, qh);
+Test_N(q𝗶, q𝗶, q𝗶, qi, qi);
+Test_N(q𝗷, q𝗷, q𝗷, qj, qj);
+Test_N(q𝗸, q𝗸, q𝗸, qk, qk);
+Test_N(q𝗹, q𝗹, q𝗹, ql, ql);
+Test_N(q𝗺, q𝗺, q𝗺, qm, qm);
+Test_N(q𝗻, q𝗻, q𝗻, qn, qn);
+Test_N(q𝗼, q𝗼, q𝗼, qo, qo);
+Test_N(q𝗽, q𝗽, q𝗽, qp, qp);
+Test_N(q𝗾, q𝗾, q𝗾, qq, qq);
+Test_N(q𝗿, q𝗿, q𝗿, qr, qr);
+Test_N(q𝘀, q𝘀, q𝘀, qs, qs);
+Test_N(q𝘁, q𝘁, q𝘁, qt, qt);
+Test_N(q𝘂, q𝘂, q𝘂, qu, qu);
+Test_N(q𝘃, q𝘃, q𝘃, qv, qv);
+Test_N(q𝘄, q𝘄, q𝘄, qw, qw);
+Test_N(q𝘅, q𝘅, q𝘅, qx, qx);
+Test_N(q𝘆, q𝘆, q𝘆, qy, qy);
+Test_N(q𝘇, q𝘇, q𝘇, qz, qz);
+Test_N(q𝘈, q𝘈, q𝘈, qA, qA);
+Test_N(q𝘉, q𝘉, q𝘉, qB, qB);
+Test_N(q𝘊, q𝘊, q𝘊, qC, qC);
+Test_N(q𝘋, q𝘋, q𝘋, qD, qD);
+Test_N(q𝘌, q𝘌, q𝘌, qE, qE);
+Test_N(q𝘍, q𝘍, q𝘍, qF, qF);
+Test_N(q𝘎, q𝘎, q𝘎, qG, qG);
+Test_N(q𝘏, q𝘏, q𝘏, qH, qH);
+Test_N(q𝘐, q𝘐, q𝘐, qI, qI);
+Test_N(q𝘑, q𝘑, q𝘑, qJ, qJ);
+Test_N(q𝘒, q𝘒, q𝘒, qK, qK);
+Test_N(q𝘓, q𝘓, q𝘓, qL, qL);
+Test_N(q𝘔, q𝘔, q𝘔, qM, qM);
+Test_N(q𝘕, q𝘕, q𝘕, qN, qN);
+Test_N(q𝘖, q𝘖, q𝘖, qO, qO);
+Test_N(q𝘗, q𝘗, q𝘗, qP, qP);
+Test_N(q𝘘, q𝘘, q𝘘, qQ, qQ);
+Test_N(q𝘙, q𝘙, q𝘙, qR, qR);
+Test_N(q𝘚, q𝘚, q𝘚, qS, qS);
+Test_N(q𝘛, q𝘛, q𝘛, qT, qT);
+Test_N(q𝘜, q𝘜, q𝘜, qU, qU);
+Test_N(q𝘝, q𝘝, q𝘝, qV, qV);
+Test_N(q𝘞, q𝘞, q𝘞, qW, qW);
+Test_N(q𝘟, q𝘟, q𝘟, qX, qX);
+Test_N(q𝘠, q𝘠, q𝘠, qY, qY);
+Test_N(q𝘡, q𝘡, q𝘡, qZ, qZ);
+Test_N(q𝘢, q𝘢, q𝘢, qa, qa);
+Test_N(q𝘣, q𝘣, q𝘣, qb, qb);
+Test_N(q𝘤, q𝘤, q𝘤, qc, qc);
+Test_N(q𝘥, q𝘥, q𝘥, qd, qd);
+Test_N(q𝘦, q𝘦, q𝘦, qe, qe);
+Test_N(q𝘧, q𝘧, q𝘧, qf, qf);
+Test_N(q𝘨, q𝘨, q𝘨, qg, qg);
+Test_N(q𝘩, q𝘩, q𝘩, qh, qh);
+Test_N(q𝘪, q𝘪, q𝘪, qi, qi);
+Test_N(q𝘫, q𝘫, q𝘫, qj, qj);
+Test_N(q𝘬, q𝘬, q𝘬, qk, qk);
+Test_N(q𝘭, q𝘭, q𝘭, ql, ql);
+Test_N(q𝘮, q𝘮, q𝘮, qm, qm);
+Test_N(q𝘯, q𝘯, q𝘯, qn, qn);
+Test_N(q𝘰, q𝘰, q𝘰, qo, qo);
+Test_N(q𝘱, q𝘱, q𝘱, qp, qp);
+Test_N(q𝘲, q𝘲, q𝘲, qq, qq);
+Test_N(q𝘳, q𝘳, q𝘳, qr, qr);
+Test_N(q𝘴, q𝘴, q𝘴, qs, qs);
+Test_N(q𝘵, q𝘵, q𝘵, qt, qt);
+Test_N(q𝘶, q𝘶, q𝘶, qu, qu);
+Test_N(q𝘷, q𝘷, q𝘷, qv, qv);
+Test_N(q𝘸, q𝘸, q𝘸, qw, qw);
+Test_N(q𝘹, q𝘹, q𝘹, qx, qx);
+Test_N(q𝘺, q𝘺, q𝘺, qy, qy);
+Test_N(q𝘻, q𝘻, q𝘻, qz, qz);
+Test_N(q𝘼, q𝘼, q𝘼, qA, qA);
+Test_N(q𝘽, q𝘽, q𝘽, qB, qB);
+Test_N(q𝘾, q𝘾, q𝘾, qC, qC);
+Test_N(q𝘿, q𝘿, q𝘿, qD, qD);
+Test_N(q𝙀, q𝙀, q𝙀, qE, qE);
+Test_N(q𝙁, q𝙁, q𝙁, qF, qF);
+Test_N(q𝙂, q𝙂, q𝙂, qG, qG);
+Test_N(q𝙃, q𝙃, q𝙃, qH, qH);
+Test_N(q𝙄, q𝙄, q𝙄, qI, qI);
+Test_N(q𝙅, q𝙅, q𝙅, qJ, qJ);
+Test_N(q𝙆, q𝙆, q𝙆, qK, qK);
+Test_N(q𝙇, q𝙇, q𝙇, qL, qL);
+Test_N(q𝙈, q𝙈, q𝙈, qM, qM);
+Test_N(q𝙉, q𝙉, q𝙉, qN, qN);
+Test_N(q𝙊, q𝙊, q𝙊, qO, qO);
+Test_N(q𝙋, q𝙋, q𝙋, qP, qP);
+Test_N(q𝙌, q𝙌, q𝙌, qQ, qQ);
+Test_N(q𝙍, q𝙍, q𝙍, qR, qR);
+Test_N(q𝙎, q𝙎, q𝙎, qS, qS);
+Test_N(q𝙏, q𝙏, q𝙏, qT, qT);
+Test_N(q𝙐, q𝙐, q𝙐, qU, qU);
+Test_N(q𝙑, q𝙑, q𝙑, qV, qV);
+Test_N(q𝙒, q𝙒, q𝙒, qW, qW);
+Test_N(q𝙓, q𝙓, q𝙓, qX, qX);
+Test_N(q𝙔, q𝙔, q𝙔, qY, qY);
+Test_N(q𝙕, q𝙕, q𝙕, qZ, qZ);
+Test_N(q𝙖, q𝙖, q𝙖, qa, qa);
+Test_N(q𝙗, q𝙗, q𝙗, qb, qb);
+Test_N(q𝙘, q𝙘, q𝙘, qc, qc);
+Test_N(q𝙙, q𝙙, q𝙙, qd, qd);
+Test_N(q𝙚, q𝙚, q𝙚, qe, qe);
+Test_N(q𝙛, q𝙛, q𝙛, qf, qf);
+Test_N(q𝙜, q𝙜, q𝙜, qg, qg);
+Test_N(q𝙝, q𝙝, q𝙝, qh, qh);
+Test_N(q𝙞, q𝙞, q𝙞, qi, qi);
+Test_N(q𝙟, q𝙟, q𝙟, qj, qj);
+Test_N(q𝙠, q𝙠, q𝙠, qk, qk);
+Test_N(q𝙡, q𝙡, q𝙡, ql, ql);
+Test_N(q𝙢, q𝙢, q𝙢, qm, qm);
+Test_N(q𝙣, q𝙣, q𝙣, qn, qn);
+Test_N(q𝙤, q𝙤, q𝙤, qo, qo);
+Test_N(q𝙥, q𝙥, q𝙥, qp, qp);
+Test_N(q𝙦, q𝙦, q𝙦, qq, qq);
+Test_N(q𝙧, q𝙧, q𝙧, qr, qr);
+Test_N(q𝙨, q𝙨, q𝙨, qs, qs);
+Test_N(q𝙩, q𝙩, q𝙩, qt, qt);
+Test_N(q𝙪, q𝙪, q𝙪, qu, qu);
+Test_N(q𝙫, q𝙫, q𝙫, qv, qv);
+Test_N(q𝙬, q𝙬, q𝙬, qw, qw);
+Test_N(q𝙭, q𝙭, q𝙭, qx, qx);
+Test_N(q𝙮, q𝙮, q𝙮, qy, qy);
+Test_N(q𝙯, q𝙯, q𝙯, qz, qz);
+Test_N(q𝙰, q𝙰, q𝙰, qA, qA);
+Test_N(q𝙱, q𝙱, q𝙱, qB, qB);
+Test_N(q𝙲, q𝙲, q𝙲, qC, qC);
+Test_N(q𝙳, q𝙳, q𝙳, qD, qD);
+Test_N(q𝙴, q𝙴, q𝙴, qE, qE);
+Test_N(q𝙵, q𝙵, q𝙵, qF, qF);
+Test_N(q𝙶, q𝙶, q𝙶, qG, qG);
+Test_N(q𝙷, q𝙷, q𝙷, qH, qH);
+Test_N(q𝙸, q𝙸, q𝙸, qI, qI);
+Test_N(q𝙹, q𝙹, q𝙹, qJ, qJ);
+Test_N(q𝙺, q𝙺, q𝙺, qK, qK);
+Test_N(q𝙻, q𝙻, q𝙻, qL, qL);
+Test_N(q𝙼, q𝙼, q𝙼, qM, qM);
+Test_N(q𝙽, q𝙽, q𝙽, qN, qN);
+Test_N(q𝙾, q𝙾, q𝙾, qO, qO);
+Test_N(q𝙿, q𝙿, q𝙿, qP, qP);
+Test_N(q𝚀, q𝚀, q𝚀, qQ, qQ);
+Test_N(q𝚁, q𝚁, q𝚁, qR, qR);
+Test_N(q𝚂, q𝚂, q𝚂, qS, qS);
+Test_N(q𝚃, q𝚃, q𝚃, qT, qT);
+Test_N(q𝚄, q𝚄, q𝚄, qU, qU);
+Test_N(q𝚅, q𝚅, q𝚅, qV, qV);
+Test_N(q𝚆, q𝚆, q𝚆, qW, qW);
+Test_N(q𝚇, q𝚇, q𝚇, qX, qX);
+Test_N(q𝚈, q𝚈, q𝚈, qY, qY);
+Test_N(q𝚉, q𝚉, q𝚉, qZ, qZ);
+Test_N(q𝚊, q𝚊, q𝚊, qa, qa);
+Test_N(q𝚋, q𝚋, q𝚋, qb, qb);
+Test_N(q𝚌, q𝚌, q𝚌, qc, qc);
+Test_N(q𝚍, q𝚍, q𝚍, qd, qd);
+Test_N(q𝚎, q𝚎, q𝚎, qe, qe);
+Test_N(q𝚏, q𝚏, q𝚏, qf, qf);
+Test_N(q𝚐, q𝚐, q𝚐, qg, qg);
+Test_N(q𝚑, q𝚑, q𝚑, qh, qh);
+Test_N(q𝚒, q𝚒, q𝚒, qi, qi);
+Test_N(q𝚓, q𝚓, q𝚓, qj, qj);
+Test_N(q𝚔, q𝚔, q𝚔, qk, qk);
+Test_N(q𝚕, q𝚕, q𝚕, ql, ql);
+Test_N(q𝚖, q𝚖, q𝚖, qm, qm);
+Test_N(q𝚗, q𝚗, q𝚗, qn, qn);
+Test_N(q𝚘, q𝚘, q𝚘, qo, qo);
+Test_N(q𝚙, q𝚙, q𝚙, qp, qp);
+Test_N(q𝚚, q𝚚, q𝚚, qq, qq);
+Test_N(q𝚛, q𝚛, q𝚛, qr, qr);
+Test_N(q𝚜, q𝚜, q𝚜, qs, qs);
+Test_N(q𝚝, q𝚝, q𝚝, qt, qt);
+Test_N(q𝚞, q𝚞, q𝚞, qu, qu);
+Test_N(q𝚟, q𝚟, q𝚟, qv, qv);
+Test_N(q𝚠, q𝚠, q𝚠, qw, qw);
+Test_N(q𝚡, q𝚡, q𝚡, qx, qx);
+Test_N(q𝚢, q𝚢, q𝚢, qy, qy);
+Test_N(q𝚣, q𝚣, q𝚣, qz, qz);
+Test_N(q𝚤, q𝚤, q𝚤, qı, qı);
+Test_N(q𝚥, q𝚥, q𝚥, qȷ, qȷ);
+Test_N(q𝚨, q𝚨, q𝚨, qΑ, qΑ);
+Test_N(q𝚩, q𝚩, q𝚩, qΒ, qΒ);
+Test_N(q𝚪, q𝚪, q𝚪, qΓ, qΓ);
+Test_N(q𝚫, q𝚫, q𝚫, qΔ, qΔ);
+Test_N(q𝚬, q𝚬, q𝚬, qΕ, qΕ);
+Test_N(q𝚭, q𝚭, q𝚭, qΖ, qΖ);
+Test_N(q𝚮, q𝚮, q𝚮, qΗ, qΗ);
+Test_N(q𝚯, q𝚯, q𝚯, qΘ, qΘ);
+Test_N(q𝚰, q𝚰, q𝚰, qΙ, qΙ);
+Test_N(q𝚱, q𝚱, q𝚱, qΚ, qΚ);
+Test_N(q𝚲, q𝚲, q𝚲, qΛ, qΛ);
+Test_N(q𝚳, q𝚳, q𝚳, qΜ, qΜ);
+Test_N(q𝚴, q𝚴, q𝚴, qΝ, qΝ);
+Test_N(q𝚵, q𝚵, q𝚵, qΞ, qΞ);
+Test_N(q𝚶, q𝚶, q𝚶, qΟ, qΟ);
+Test_N(q𝚷, q𝚷, q𝚷, qΠ, qΠ);
+Test_N(q𝚸, q𝚸, q𝚸, qΡ, qΡ);
+Test_N(q𝚹, q𝚹, q𝚹, qΘ, qΘ);
+Test_N(q𝚺, q𝚺, q𝚺, qΣ, qΣ);
+Test_N(q𝚻, q𝚻, q𝚻, qΤ, qΤ);
+Test_N(q𝚼, q𝚼, q𝚼, qΥ, qΥ);
+Test_N(q𝚽, q𝚽, q𝚽, qΦ, qΦ);
+Test_N(q𝚾, q𝚾, q𝚾, qΧ, qΧ);
+Test_N(q𝚿, q𝚿, q𝚿, qΨ, qΨ);
+Test_N(q𝛀, q𝛀, q𝛀, qΩ, qΩ);
+Test_N(q𝛁, q𝛁, q𝛁, q∇, q∇);
+Test_N(q𝛂, q𝛂, q𝛂, qα, qα);
+Test_N(q𝛃, q𝛃, q𝛃, qβ, qβ);
+Test_N(q𝛄, q𝛄, q𝛄, qγ, qγ);
+Test_N(q𝛅, q𝛅, q𝛅, qδ, qδ);
+Test_N(q𝛆, q𝛆, q𝛆, qε, qε);
+Test_N(q𝛇, q𝛇, q𝛇, qζ, qζ);
+Test_N(q𝛈, q𝛈, q𝛈, qη, qη);
+Test_N(q𝛉, q𝛉, q𝛉, qθ, qθ);
+Test_N(q𝛊, q𝛊, q𝛊, qι, qι);
+Test_N(q𝛋, q𝛋, q𝛋, qκ, qκ);
+Test_N(q𝛌, q𝛌, q𝛌, qλ, qλ);
+Test_N(q𝛍, q𝛍, q𝛍, qμ, qμ);
+Test_N(q𝛎, q𝛎, q𝛎, qν, qν);
+Test_N(q𝛏, q𝛏, q𝛏, qξ, qξ);
+Test_N(q𝛐, q𝛐, q𝛐, qο, qο);
+Test_N(q𝛑, q𝛑, q𝛑, qπ, qπ);
+Test_N(q𝛒, q𝛒, q𝛒, qρ, qρ);
+Test_N(q𝛓, q𝛓, q𝛓, qς, qς);
+Test_N(q𝛔, q𝛔, q𝛔, qσ, qσ);
+Test_N(q𝛕, q𝛕, q𝛕, qτ, qτ);
+Test_N(q𝛖, q𝛖, q𝛖, qυ, qυ);
+Test_N(q𝛗, q𝛗, q𝛗, qφ, qφ);
+Test_N(q𝛘, q𝛘, q𝛘, qχ, qχ);
+Test_N(q𝛙, q𝛙, q𝛙, qψ, qψ);
+Test_N(q𝛚, q𝛚, q𝛚, qω, qω);
+Test_N(q𝛛, q𝛛, q𝛛, q∂, q∂);
+Test_N(q𝛜, q𝛜, q𝛜, qε, qε);
+Test_N(q𝛝, q𝛝, q𝛝, qθ, qθ);
+Test_N(q𝛞, q𝛞, q𝛞, qκ, qκ);
+Test_N(q𝛟, q𝛟, q𝛟, qφ, qφ);
+Test_N(q𝛠, q𝛠, q𝛠, qρ, qρ);
+Test_N(q𝛡, q𝛡, q𝛡, qπ, qπ);
+Test_N(q𝛢, q𝛢, q𝛢, qΑ, qΑ);
+Test_N(q𝛣, q𝛣, q𝛣, qΒ, qΒ);
+Test_N(q𝛤, q𝛤, q𝛤, qΓ, qΓ);
+Test_N(q𝛥, q𝛥, q𝛥, qΔ, qΔ);
+Test_N(q𝛦, q𝛦, q𝛦, qΕ, qΕ);
+Test_N(q𝛧, q𝛧, q𝛧, qΖ, qΖ);
+Test_N(q𝛨, q𝛨, q𝛨, qΗ, qΗ);
+Test_N(q𝛩, q𝛩, q𝛩, qΘ, qΘ);
+Test_N(q𝛪, q𝛪, q𝛪, qΙ, qΙ);
+Test_N(q𝛫, q𝛫, q𝛫, qΚ, qΚ);
+Test_N(q𝛬, q𝛬, q𝛬, qΛ, qΛ);
+Test_N(q𝛭, q𝛭, q𝛭, qΜ, qΜ);
+Test_N(q𝛮, q𝛮, q𝛮, qΝ, qΝ);
+Test_N(q𝛯, q𝛯, q𝛯, qΞ, qΞ);
+Test_N(q𝛰, q𝛰, q𝛰, qΟ, qΟ);
+Test_N(q𝛱, q𝛱, q𝛱, qΠ, qΠ);
+Test_N(q𝛲, q𝛲, q𝛲, qΡ, qΡ);
+Test_N(q𝛳, q𝛳, q𝛳, qΘ, qΘ);
+Test_N(q𝛴, q𝛴, q𝛴, qΣ, qΣ);
+Test_N(q𝛵, q𝛵, q𝛵, qΤ, qΤ);
+Test_N(q𝛶, q𝛶, q𝛶, qΥ, qΥ);
+Test_N(q𝛷, q𝛷, q𝛷, qΦ, qΦ);
+Test_N(q𝛸, q𝛸, q𝛸, qΧ, qΧ);
+Test_N(q𝛹, q𝛹, q𝛹, qΨ, qΨ);
+Test_N(q𝛺, q𝛺, q𝛺, qΩ, qΩ);
+Test_N(q𝛻, q𝛻, q𝛻, q∇, q∇);
+Test_N(q𝛼, q𝛼, q𝛼, qα, qα);
+Test_N(q𝛽, q𝛽, q𝛽, qβ, qβ);
+Test_N(q𝛾, q𝛾, q𝛾, qγ, qγ);
+Test_N(q𝛿, q𝛿, q𝛿, qδ, qδ);
+Test_N(q𝜀, q𝜀, q𝜀, qε, qε);
+Test_N(q𝜁, q𝜁, q𝜁, qζ, qζ);
+Test_N(q𝜂, q𝜂, q𝜂, qη, qη);
+Test_N(q𝜃, q𝜃, q𝜃, qθ, qθ);
+Test_N(q𝜄, q𝜄, q𝜄, qι, qι);
+Test_N(q𝜅, q𝜅, q𝜅, qκ, qκ);
+Test_N(q𝜆, q𝜆, q𝜆, qλ, qλ);
+Test_N(q𝜇, q𝜇, q𝜇, qμ, qμ);
+Test_N(q𝜈, q𝜈, q𝜈, qν, qν);
+Test_N(q𝜉, q𝜉, q𝜉, qξ, qξ);
+Test_N(q𝜊, q𝜊, q𝜊, qο, qο);
+Test_N(q𝜋, q𝜋, q𝜋, qπ, qπ);
+Test_N(q𝜌, q𝜌, q𝜌, qρ, qρ);
+Test_N(q𝜍, q𝜍, q𝜍, qς, qς);
+Test_N(q𝜎, q𝜎, q𝜎, qσ, qσ);
+Test_N(q𝜏, q𝜏, q𝜏, qτ, qτ);
+Test_N(q𝜐, q𝜐, q𝜐, qυ, qυ);
+Test_N(q𝜑, q𝜑, q𝜑, qφ, qφ);
+Test_N(q𝜒, q𝜒, q𝜒, qχ, qχ);
+Test_N(q𝜓, q𝜓, q𝜓, qψ, qψ);
+Test_N(q𝜔, q𝜔, q𝜔, qω, qω);
+Test_N(q𝜕, q𝜕, q𝜕, q∂, q∂);
+Test_N(q𝜖, q𝜖, q𝜖, qε, qε);
+Test_N(q𝜗, q𝜗, q𝜗, qθ, qθ);
+Test_N(q𝜘, q𝜘, q𝜘, qκ, qκ);
+Test_N(q𝜙, q𝜙, q𝜙, qφ, qφ);
+Test_N(q𝜚, q𝜚, q𝜚, qρ, qρ);
+Test_N(q𝜛, q𝜛, q𝜛, qπ, qπ);
+Test_N(q𝜜, q𝜜, q𝜜, qΑ, qΑ);
+Test_N(q𝜝, q𝜝, q𝜝, qΒ, qΒ);
+Test_N(q𝜞, q𝜞, q𝜞, qΓ, qΓ);
+Test_N(q𝜟, q𝜟, q𝜟, qΔ, qΔ);
+Test_N(q𝜠, q𝜠, q𝜠, qΕ, qΕ);
+Test_N(q𝜡, q𝜡, q𝜡, qΖ, qΖ);
+Test_N(q𝜢, q𝜢, q𝜢, qΗ, qΗ);
+Test_N(q𝜣, q𝜣, q𝜣, qΘ, qΘ);
+Test_N(q𝜤, q𝜤, q𝜤, qΙ, qΙ);
+Test_N(q𝜥, q𝜥, q𝜥, qΚ, qΚ);
+Test_N(q𝜦, q𝜦, q𝜦, qΛ, qΛ);
+Test_N(q𝜧, q𝜧, q𝜧, qΜ, qΜ);
+Test_N(q𝜨, q𝜨, q𝜨, qΝ, qΝ);
+Test_N(q𝜩, q𝜩, q𝜩, qΞ, qΞ);
+Test_N(q𝜪, q𝜪, q𝜪, qΟ, qΟ);
+Test_N(q𝜫, q𝜫, q𝜫, qΠ, qΠ);
+Test_N(q𝜬, q𝜬, q𝜬, qΡ, qΡ);
+Test_N(q𝜭, q𝜭, q𝜭, qΘ, qΘ);
+Test_N(q𝜮, q𝜮, q𝜮, qΣ, qΣ);
+Test_N(q𝜯, q𝜯, q𝜯, qΤ, qΤ);
+Test_N(q𝜰, q𝜰, q𝜰, qΥ, qΥ);
+Test_N(q𝜱, q𝜱, q𝜱, qΦ, qΦ);
+Test_N(q𝜲, q𝜲, q𝜲, qΧ, qΧ);
+Test_N(q𝜳, q𝜳, q𝜳, qΨ, qΨ);
+Test_N(q𝜴, q𝜴, q𝜴, qΩ, qΩ);
+Test_N(q𝜵, q𝜵, q𝜵, q∇, q∇);
+Test_N(q𝜶, q𝜶, q𝜶, qα, qα);
+Test_N(q𝜷, q𝜷, q𝜷, qβ, qβ);
+Test_N(q𝜸, q𝜸, q𝜸, qγ, qγ);
+Test_N(q𝜹, q𝜹, q𝜹, qδ, qδ);
+Test_N(q𝜺, q𝜺, q𝜺, qε, qε);
+Test_N(q𝜻, q𝜻, q𝜻, qζ, qζ);
+Test_N(q𝜼, q𝜼, q𝜼, qη, qη);
+Test_N(q𝜽, q𝜽, q𝜽, qθ, qθ);
+Test_N(q𝜾, q𝜾, q𝜾, qι, qι);
+Test_N(q𝜿, q𝜿, q𝜿, qκ, qκ);
+Test_N(q𝝀, q𝝀, q𝝀, qλ, qλ);
+Test_N(q𝝁, q𝝁, q𝝁, qμ, qμ);
+Test_N(q𝝂, q𝝂, q𝝂, qν, qν);
+Test_N(q𝝃, q𝝃, q𝝃, qξ, qξ);
+Test_N(q𝝄, q𝝄, q𝝄, qο, qο);
+Test_N(q𝝅, q𝝅, q𝝅, qπ, qπ);
+Test_N(q𝝆, q𝝆, q𝝆, qρ, qρ);
+Test_N(q𝝇, q𝝇, q𝝇, qς, qς);
+Test_N(q𝝈, q𝝈, q𝝈, qσ, qσ);
+Test_N(q𝝉, q𝝉, q𝝉, qτ, qτ);
+Test_N(q𝝊, q𝝊, q𝝊, qυ, qυ);
+Test_N(q𝝋, q𝝋, q𝝋, qφ, qφ);
+Test_N(q𝝌, q𝝌, q𝝌, qχ, qχ);
+Test_N(q𝝍, q𝝍, q𝝍, qψ, qψ);
+Test_N(q𝝎, q𝝎, q𝝎, qω, qω);
+Test_N(q𝝏, q𝝏, q𝝏, q∂, q∂);
+Test_N(q𝝐, q𝝐, q𝝐, qε, qε);
+Test_N(q𝝑, q𝝑, q𝝑, qθ, qθ);
+Test_N(q𝝒, q𝝒, q𝝒, qκ, qκ);
+Test_N(q𝝓, q𝝓, q𝝓, qφ, qφ);
+Test_N(q𝝔, q𝝔, q𝝔, qρ, qρ);
+Test_N(q𝝕, q𝝕, q𝝕, qπ, qπ);
+Test_N(q𝝖, q𝝖, q𝝖, qΑ, qΑ);
+Test_N(q𝝗, q𝝗, q𝝗, qΒ, qΒ);
+Test_N(q𝝘, q𝝘, q𝝘, qΓ, qΓ);
+Test_N(q𝝙, q𝝙, q𝝙, qΔ, qΔ);
+Test_N(q𝝚, q𝝚, q𝝚, qΕ, qΕ);
+Test_N(q𝝛, q𝝛, q𝝛, qΖ, qΖ);
+Test_N(q𝝜, q𝝜, q𝝜, qΗ, qΗ);
+Test_N(q𝝝, q𝝝, q𝝝, qΘ, qΘ);
+Test_N(q𝝞, q𝝞, q𝝞, qΙ, qΙ);
+Test_N(q𝝟, q𝝟, q𝝟, qΚ, qΚ);
+Test_N(q𝝠, q𝝠, q𝝠, qΛ, qΛ);
+Test_N(q𝝡, q𝝡, q𝝡, qΜ, qΜ);
+Test_N(q𝝢, q𝝢, q𝝢, qΝ, qΝ);
+Test_N(q𝝣, q𝝣, q𝝣, qΞ, qΞ);
+Test_N(q𝝤, q𝝤, q𝝤, qΟ, qΟ);
+Test_N(q𝝥, q𝝥, q𝝥, qΠ, qΠ);
+Test_N(q𝝦, q𝝦, q𝝦, qΡ, qΡ);
+Test_N(q𝝧, q𝝧, q𝝧, qΘ, qΘ);
+Test_N(q𝝨, q𝝨, q𝝨, qΣ, qΣ);
+Test_N(q𝝩, q𝝩, q𝝩, qΤ, qΤ);
+Test_N(q𝝪, q𝝪, q𝝪, qΥ, qΥ);
+Test_N(q𝝫, q𝝫, q𝝫, qΦ, qΦ);
+Test_N(q𝝬, q𝝬, q𝝬, qΧ, qΧ);
+Test_N(q𝝭, q𝝭, q𝝭, qΨ, qΨ);
+Test_N(q𝝮, q𝝮, q𝝮, qΩ, qΩ);
+Test_N(q𝝯, q𝝯, q𝝯, q∇, q∇);
+Test_N(q𝝰, q𝝰, q𝝰, qα, qα);
+Test_N(q𝝱, q𝝱, q𝝱, qβ, qβ);
+Test_N(q𝝲, q𝝲, q𝝲, qγ, qγ);
+Test_N(q𝝳, q𝝳, q𝝳, qδ, qδ);
+Test_N(q𝝴, q𝝴, q𝝴, qε, qε);
+Test_N(q𝝵, q𝝵, q𝝵, qζ, qζ);
+Test_N(q𝝶, q𝝶, q𝝶, qη, qη);
+Test_N(q𝝷, q𝝷, q𝝷, qθ, qθ);
+Test_N(q𝝸, q𝝸, q𝝸, qι, qι);
+Test_N(q𝝹, q𝝹, q𝝹, qκ, qκ);
+Test_N(q𝝺, q𝝺, q𝝺, qλ, qλ);
+Test_N(q𝝻, q𝝻, q𝝻, qμ, qμ);
+Test_N(q𝝼, q𝝼, q𝝼, qν, qν);
+Test_N(q𝝽, q𝝽, q𝝽, qξ, qξ);
+Test_N(q𝝾, q𝝾, q𝝾, qο, qο);
+Test_N(q𝝿, q𝝿, q𝝿, qπ, qπ);
+Test_N(q𝞀, q𝞀, q𝞀, qρ, qρ);
+Test_N(q𝞁, q𝞁, q𝞁, qς, qς);
+Test_N(q𝞂, q𝞂, q𝞂, qσ, qσ);
+Test_N(q𝞃, q𝞃, q𝞃, qτ, qτ);
+Test_N(q𝞄, q𝞄, q𝞄, qυ, qυ);
+Test_N(q𝞅, q𝞅, q𝞅, qφ, qφ);
+Test_N(q𝞆, q𝞆, q𝞆, qχ, qχ);
+Test_N(q𝞇, q𝞇, q𝞇, qψ, qψ);
+Test_N(q𝞈, q𝞈, q𝞈, qω, qω);
+Test_N(q𝞉, q𝞉, q𝞉, q∂, q∂);
+Test_N(q𝞊, q𝞊, q𝞊, qε, qε);
+Test_N(q𝞋, q𝞋, q𝞋, qθ, qθ);
+Test_N(q𝞌, q𝞌, q𝞌, qκ, qκ);
+Test_N(q𝞍, q𝞍, q𝞍, qφ, qφ);
+Test_N(q𝞎, q𝞎, q𝞎, qρ, qρ);
+Test_N(q𝞏, q𝞏, q𝞏, qπ, qπ);
+Test_N(q𝞐, q𝞐, q𝞐, qΑ, qΑ);
+Test_N(q𝞑, q𝞑, q𝞑, qΒ, qΒ);
+Test_N(q𝞒, q𝞒, q𝞒, qΓ, qΓ);
+Test_N(q𝞓, q𝞓, q𝞓, qΔ, qΔ);
+Test_N(q𝞔, q𝞔, q𝞔, qΕ, qΕ);
+Test_N(q𝞕, q𝞕, q𝞕, qΖ, qΖ);
+Test_N(q𝞖, q𝞖, q𝞖, qΗ, qΗ);
+Test_N(q𝞗, q𝞗, q𝞗, qΘ, qΘ);
+Test_N(q𝞘, q𝞘, q𝞘, qΙ, qΙ);
+Test_N(q𝞙, q𝞙, q𝞙, qΚ, qΚ);
+Test_N(q𝞚, q𝞚, q𝞚, qΛ, qΛ);
+Test_N(q𝞛, q𝞛, q𝞛, qΜ, qΜ);
+Test_N(q𝞜, q𝞜, q𝞜, qΝ, qΝ);
+Test_N(q𝞝, q𝞝, q𝞝, qΞ, qΞ);
+Test_N(q𝞞, q𝞞, q𝞞, qΟ, qΟ);
+Test_N(q𝞟, q𝞟, q𝞟, qΠ, qΠ);
+Test_N(q𝞠, q𝞠, q𝞠, qΡ, qΡ);
+Test_N(q𝞡, q𝞡, q𝞡, qΘ, qΘ);
+Test_N(q𝞢, q𝞢, q𝞢, qΣ, qΣ);
+Test_N(q𝞣, q𝞣, q𝞣, qΤ, qΤ);
+Test_N(q𝞤, q𝞤, q𝞤, qΥ, qΥ);
+Test_N(q𝞥, q𝞥, q𝞥, qΦ, qΦ);
+Test_N(q𝞦, q𝞦, q𝞦, qΧ, qΧ);
+Test_N(q𝞧, q𝞧, q𝞧, qΨ, qΨ);
+Test_N(q𝞨, q𝞨, q𝞨, qΩ, qΩ);
+Test_N(q𝞩, q𝞩, q𝞩, q∇, q∇);
+Test_N(q𝞪, q𝞪, q𝞪, qα, qα);
+Test_N(q𝞫, q𝞫, q𝞫, qβ, qβ);
+Test_N(q𝞬, q𝞬, q𝞬, qγ, qγ);
+Test_N(q𝞭, q𝞭, q𝞭, qδ, qδ);
+Test_N(q𝞮, q𝞮, q𝞮, qε, qε);
+Test_N(q𝞯, q𝞯, q𝞯, qζ, qζ);
+Test_N(q𝞰, q𝞰, q𝞰, qη, qη);
+Test_N(q𝞱, q𝞱, q𝞱, qθ, qθ);
+Test_N(q𝞲, q𝞲, q𝞲, qι, qι);
+Test_N(q𝞳, q𝞳, q𝞳, qκ, qκ);
+Test_N(q𝞴, q𝞴, q𝞴, qλ, qλ);
+Test_N(q𝞵, q𝞵, q𝞵, qμ, qμ);
+Test_N(q𝞶, q𝞶, q𝞶, qν, qν);
+Test_N(q𝞷, q𝞷, q𝞷, qξ, qξ);
+Test_N(q𝞸, q𝞸, q𝞸, qο, qο);
+Test_N(q𝞹, q𝞹, q𝞹, qπ, qπ);
+Test_N(q𝞺, q𝞺, q𝞺, qρ, qρ);
+Test_N(q𝞻, q𝞻, q𝞻, qς, qς);
+Test_N(q𝞼, q𝞼, q𝞼, qσ, qσ);
+Test_N(q𝞽, q𝞽, q𝞽, qτ, qτ);
+Test_N(q𝞾, q𝞾, q𝞾, qυ, qυ);
+Test_N(q𝞿, q𝞿, q𝞿, qφ, qφ);
+Test_N(q𝟀, q𝟀, q𝟀, qχ, qχ);
+Test_N(q𝟁, q𝟁, q𝟁, qψ, qψ);
+Test_N(q𝟂, q𝟂, q𝟂, qω, qω);
+Test_N(q𝟃, q𝟃, q𝟃, q∂, q∂);
+Test_N(q𝟄, q𝟄, q𝟄, qε, qε);
+Test_N(q𝟅, q𝟅, q𝟅, qθ, qθ);
+Test_N(q𝟆, q𝟆, q𝟆, qκ, qκ);
+Test_N(q𝟇, q𝟇, q𝟇, qφ, qφ);
+Test_N(q𝟈, q𝟈, q𝟈, qρ, qρ);
+Test_N(q𝟉, q𝟉, q𝟉, qπ, qπ);
+Test_N(q𝟊, q𝟊, q𝟊, qϜ, qϜ);
+Test_N(q𝟋, q𝟋, q𝟋, qϝ, qϝ);
+Test_N(q𝟎, q𝟎, q𝟎, q0, q0);
+Test_N(q𝟏, q𝟏, q𝟏, q1, q1);
+Test_N(q𝟐, q𝟐, q𝟐, q2, q2);
+Test_N(q𝟑, q𝟑, q𝟑, q3, q3);
+Test_N(q𝟒, q𝟒, q𝟒, q4, q4);
+Test_N(q𝟓, q𝟓, q𝟓, q5, q5);
+Test_N(q𝟔, q𝟔, q𝟔, q6, q6);
+Test_N(q𝟕, q𝟕, q𝟕, q7, q7);
+Test_N(q𝟖, q𝟖, q𝟖, q8, q8);
+Test_N(q𝟗, q𝟗, q𝟗, q9, q9);
+Test_N(q𝟘, q𝟘, q𝟘, q0, q0);
+Test_N(q𝟙, q𝟙, q𝟙, q1, q1);
+Test_N(q𝟚, q𝟚, q𝟚, q2, q2);
+Test_N(q𝟛, q𝟛, q𝟛, q3, q3);
+Test_N(q𝟜, q𝟜, q𝟜, q4, q4);
+Test_N(q𝟝, q𝟝, q𝟝, q5, q5);
+Test_N(q𝟞, q𝟞, q𝟞, q6, q6);
+Test_N(q𝟟, q𝟟, q𝟟, q7, q7);
+Test_N(q𝟠, q𝟠, q𝟠, q8, q8);
+Test_N(q𝟡, q𝟡, q𝟡, q9, q9);
+Test_N(q𝟢, q𝟢, q𝟢, q0, q0);
+Test_N(q𝟣, q𝟣, q𝟣, q1, q1);
+Test_N(q𝟤, q𝟤, q𝟤, q2, q2);
+Test_N(q𝟥, q𝟥, q𝟥, q3, q3);
+Test_N(q𝟦, q𝟦, q𝟦, q4, q4);
+Test_N(q𝟧, q𝟧, q𝟧, q5, q5);
+Test_N(q𝟨, q𝟨, q𝟨, q6, q6);
+Test_N(q𝟩, q𝟩, q𝟩, q7, q7);
+Test_N(q𝟪, q𝟪, q𝟪, q8, q8);
+Test_N(q𝟫, q𝟫, q𝟫, q9, q9);
+Test_N(q𝟬, q𝟬, q𝟬, q0, q0);
+Test_N(q𝟭, q𝟭, q𝟭, q1, q1);
+Test_N(q𝟮, q𝟮, q𝟮, q2, q2);
+Test_N(q𝟯, q𝟯, q𝟯, q3, q3);
+Test_N(q𝟰, q𝟰, q𝟰, q4, q4);
+Test_N(q𝟱, q𝟱, q𝟱, q5, q5);
+Test_N(q𝟲, q𝟲, q𝟲, q6, q6);
+Test_N(q𝟳, q𝟳, q𝟳, q7, q7);
+Test_N(q𝟴, q𝟴, q𝟴, q8, q8);
+Test_N(q𝟵, q𝟵, q𝟵, q9, q9);
+Test_N(q𝟶, q𝟶, q𝟶, q0, q0);
+Test_N(q𝟷, q𝟷, q𝟷, q1, q1);
+Test_N(q𝟸, q𝟸, q𝟸, q2, q2);
+Test_N(q𝟹, q𝟹, q𝟹, q3, q3);
+Test_N(q𝟺, q𝟺, q𝟺, q4, q4);
+Test_N(q𝟻, q𝟻, q𝟻, q5, q5);
+Test_N(q𝟼, q𝟼, q𝟼, q6, q6);
+Test_N(q𝟽, q𝟽, q𝟽, q7, q7);
+Test_N(q𝟾, q𝟾, q𝟾, q8, q8);
+Test_N(q𝟿, q𝟿, q𝟿, q9, q9);
+Test_N(q𞀰, q𞀰, q𞀰, qа, qа);
+Test_N(q𞀱, q𞀱, q𞀱, qб, qб);
+Test_N(q𞀲, q𞀲, q𞀲, qв, qв);
+Test_N(q𞀳, q𞀳, q𞀳, qг, qг);
+Test_N(q𞀴, q𞀴, q𞀴, qд, qд);
+Test_N(q𞀵, q𞀵, q𞀵, qе, qе);
+Test_N(q𞀶, q𞀶, q𞀶, qж, qж);
+Test_N(q𞀷, q𞀷, q𞀷, qз, qз);
+Test_N(q𞀸, q𞀸, q𞀸, qи, qи);
+Test_N(q𞀹, q𞀹, q𞀹, qк, qк);
+Test_N(q𞀺, q𞀺, q𞀺, qл, qл);
+Test_N(q𞀻, q𞀻, q𞀻, qм, qм);
+Test_N(q𞀼, q𞀼, q𞀼, qо, qо);
+Test_N(q𞀽, q𞀽, q𞀽, qп, qп);
+Test_N(q𞀾, q𞀾, q𞀾, qр, qр);
+Test_N(q𞀿, q𞀿, q𞀿, qс, qс);
+Test_N(q𞁀, q𞁀, q𞁀, qт, qт);
+Test_N(q𞁁, q𞁁, q𞁁, qу, qу);
+Test_N(q𞁂, q𞁂, q𞁂, qф, qф);
+Test_N(q𞁃, q𞁃, q𞁃, qх, qх);
+Test_N(q𞁄, q𞁄, q𞁄, qц, qц);
+Test_N(q𞁅, q𞁅, q𞁅, qч, qч);
+Test_N(q𞁆, q𞁆, q𞁆, qш, qш);
+Test_N(q𞁇, q𞁇, q𞁇, qы, qы);
+Test_N(q𞁈, q𞁈, q𞁈, qэ, qэ);
+Test_N(q𞁉, q𞁉, q𞁉, qю, qю);
+Test_N(q𞁊, q𞁊, q𞁊, qꚉ, qꚉ);
+Test_N(q𞁋, q𞁋, q𞁋, qә, qә);
+Test_N(q𞁌, q𞁌, q𞁌, qі, qі);
+Test_N(q𞁍, q𞁍, q𞁍, qј, qј);
+Test_N(q𞁎, q𞁎, q𞁎, qө, qө);
+Test_N(q𞁏, q𞁏, q𞁏, qү, qү);
+Test_N(q𞁐, q𞁐, q𞁐, qӏ, qӏ);
+Test_N(q𞁑, q𞁑, q𞁑, qа, qа);
+Test_N(q𞁒, q𞁒, q𞁒, qб, qб);
+Test_N(q𞁓, q𞁓, q𞁓, qв, qв);
+Test_N(q𞁔, q𞁔, q𞁔, qг, qг);
+Test_N(q𞁕, q𞁕, q𞁕, qд, qд);
+Test_N(q𞁖, q𞁖, q𞁖, qе, qе);
+Test_N(q𞁗, q𞁗, q𞁗, qж, qж);
+Test_N(q𞁘, q𞁘, q𞁘, qз, qз);
+Test_N(q𞁙, q𞁙, q𞁙, qи, qи);
+Test_N(q𞁚, q𞁚, q𞁚, qк, qк);
+Test_N(q𞁛, q𞁛, q𞁛, qл, qл);
+Test_N(q𞁜, q𞁜, q𞁜, qо, qо);
+Test_N(q𞁝, q𞁝, q𞁝, qп, qп);
+Test_N(q𞁞, q𞁞, q𞁞, qс, qс);
+Test_N(q𞁟, q𞁟, q𞁟, qу, qу);
+Test_N(q𞁠, q𞁠, q𞁠, qф, qф);
+Test_N(q𞁡, q𞁡, q𞁡, qх, qх);
+Test_N(q𞁢, q𞁢, q𞁢, qц, qц);
+Test_N(q𞁣, q𞁣, q𞁣, qч, qч);
+Test_N(q𞁤, q𞁤, q𞁤, qш, qш);
+Test_N(q𞁥, q𞁥, q𞁥, qъ, qъ);
+Test_N(q𞁦, q𞁦, q𞁦, qы, qы);
+Test_N(q𞁧, q𞁧, q𞁧, qґ, qґ);
+Test_N(q𞁨, q𞁨, q𞁨, qі, qі);
+Test_N(q𞁩, q𞁩, q𞁩, qѕ, qѕ);
+Test_N(q𞁪, q𞁪, q𞁪, qџ, qџ);
+Test_N(q𞁫, q𞁫, q𞁫, qҫ, qҫ);
+Test_N(q𞁬, q𞁬, q𞁬, qꙑ, qꙑ);
+Test_N(q𞁭, q𞁭, q𞁭, qұ, qұ);
+Test_N(q𞸀, q𞸀, q𞸀, qا, qا);
+Test_N(q𞸁, q𞸁, q𞸁, qب, qب);
+Test_N(q𞸂, q𞸂, q𞸂, qج, qج);
+Test_N(q𞸃, q𞸃, q𞸃, qد, qد);
+Test_N(q𞸅, q𞸅, q𞸅, qو, qو);
+Test_N(q𞸆, q𞸆, q𞸆, qز, qز);
+Test_N(q𞸇, q𞸇, q𞸇, qح, qح);
+Test_N(q𞸈, q𞸈, q𞸈, qط, qط);
+Test_N(q𞸉, q𞸉, q𞸉, qي, qي);
+Test_N(q𞸊, q𞸊, q𞸊, qك, qك);
+Test_N(q𞸋, q𞸋, q𞸋, qل, qل);
+Test_N(q𞸌, q𞸌, q𞸌, qم, qم);
+Test_N(q𞸍, q𞸍, q𞸍, qن, qن);
+Test_N(q𞸎, q𞸎, q𞸎, qس, qس);
+Test_N(q𞸏, q𞸏, q𞸏, qع, qع);
+Test_N(q𞸐, q𞸐, q𞸐, qف, qف);
+Test_N(q𞸑, q𞸑, q𞸑, qص, qص);
+Test_N(q𞸒, q𞸒, q𞸒, qق, qق);
+Test_N(q𞸓, q𞸓, q𞸓, qر, qر);
+Test_N(q𞸔, q𞸔, q𞸔, qش, qش);
+Test_N(q𞸕, q𞸕, q𞸕, qت, qت);
+Test_N(q𞸖, q𞸖, q𞸖, qث, qث);
+Test_N(q𞸗, q𞸗, q𞸗, qخ, qخ);
+Test_N(q𞸘, q𞸘, q𞸘, qذ, qذ);
+Test_N(q𞸙, q𞸙, q𞸙, qض, qض);
+Test_N(q𞸚, q𞸚, q𞸚, qظ, qظ);
+Test_N(q𞸛, q𞸛, q𞸛, qغ, qغ);
+Test_N(q𞸜, q𞸜, q𞸜, qٮ, qٮ);
+Test_N(q𞸝, q𞸝, q𞸝, qں, qں);
+Test_N(q𞸞, q𞸞, q𞸞, qڡ, qڡ);
+Test_N(q𞸟, q𞸟, q𞸟, qٯ, qٯ);
+Test_N(q𞸡, q𞸡, q𞸡, qب, qب);
+Test_N(q𞸢, q𞸢, q𞸢, qج, qج);
+Test_N(q𞸤, q𞸤, q𞸤, qه, qه);
+Test_N(q𞸧, q𞸧, q𞸧, qح, qح);
+Test_N(q𞸩, q𞸩, q𞸩, qي, qي);
+Test_N(q𞸪, q𞸪, q𞸪, qك, qك);
+Test_N(q𞸫, q𞸫, q𞸫, qل, qل);
+Test_N(q𞸬, q𞸬, q𞸬, qم, qم);
+Test_N(q𞸭, q𞸭, q𞸭, qن, qن);
+Test_N(q𞸮, q𞸮, q𞸮, qس, qس);
+Test_N(q𞸯, q𞸯, q𞸯, qع, qع);
+Test_N(q𞸰, q𞸰, q𞸰, qف, qف);
+Test_N(q𞸱, q𞸱, q𞸱, qص, qص);
+Test_N(q𞸲, q𞸲, q𞸲, qق, qق);
+Test_N(q𞸴, q𞸴, q𞸴, qش, qش);
+Test_N(q𞸵, q𞸵, q𞸵, qت, qت);
+Test_N(q𞸶, q𞸶, q𞸶, qث, qث);
+Test_N(q𞸷, q𞸷, q𞸷, qخ, qخ);
+Test_N(q𞸹, q𞸹, q𞸹, qض, qض);
+Test_N(q𞸻, q𞸻, q𞸻, qغ, qغ);
+Test_N(q𞹂, q𞹂, q𞹂, qج, qج);
+Test_N(q𞹇, q𞹇, q𞹇, qح, qح);
+Test_N(q𞹉, q𞹉, q𞹉, qي, qي);
+Test_N(q𞹋, q𞹋, q𞹋, qل, qل);
+Test_N(q𞹍, q𞹍, q𞹍, qن, qن);
+Test_N(q𞹎, q𞹎, q𞹎, qس, qس);
+Test_N(q𞹏, q𞹏, q𞹏, qع, qع);
+Test_N(q𞹑, q𞹑, q𞹑, qص, qص);
+Test_N(q𞹒, q𞹒, q𞹒, qق, qق);
+Test_N(q𞹔, q𞹔, q𞹔, qش, qش);
+Test_N(q𞹗, q𞹗, q𞹗, qخ, qخ);
+Test_N(q𞹙, q𞹙, q𞹙, qض, qض);
+Test_N(q𞹛, q𞹛, q𞹛, qغ, qغ);
+Test_N(q𞹝, q𞹝, q𞹝, qں, qں);
+Test_N(q𞹟, q𞹟, q𞹟, qٯ, qٯ);
+Test_N(q𞹡, q𞹡, q𞹡, qب, qب);
+Test_N(q𞹢, q𞹢, q𞹢, qج, qج);
+Test_N(q𞹤, q𞹤, q𞹤, qه, qه);
+Test_N(q𞹧, q𞹧, q𞹧, qح, qح);
+Test_N(q𞹨, q𞹨, q𞹨, qط, qط);
+Test_N(q𞹩, q𞹩, q𞹩, qي, qي);
+Test_N(q𞹪, q𞹪, q𞹪, qك, qك);
+Test_N(q𞹬, q𞹬, q𞹬, qم, qم);
+Test_N(q𞹭, q𞹭, q𞹭, qن, qن);
+Test_N(q𞹮, q𞹮, q𞹮, qس, qس);
+Test_N(q𞹯, q𞹯, q𞹯, qع, qع);
+Test_N(q𞹰, q𞹰, q𞹰, qف, qف);
+Test_N(q𞹱, q𞹱, q𞹱, qص, qص);
+Test_N(q𞹲, q𞹲, q𞹲, qق, qق);
+Test_N(q𞹴, q𞹴, q𞹴, qش, qش);
+Test_N(q𞹵, q𞹵, q𞹵, qت, qت);
+Test_N(q𞹶, q𞹶, q𞹶, qث, qث);
+Test_N(q𞹷, q𞹷, q𞹷, qخ, qخ);
+Test_N(q𞹹, q𞹹, q𞹹, qض, qض);
+Test_N(q𞹺, q𞹺, q𞹺, qظ, qظ);
+Test_N(q𞹻, q𞹻, q𞹻, qغ, qغ);
+Test_N(q𞹼, q𞹼, q𞹼, qٮ, qٮ);
+Test_N(q𞹾, q𞹾, q𞹾, qڡ, qڡ);
+Test_N(q𞺀, q𞺀, q𞺀, qا, qا);
+Test_N(q𞺁, q𞺁, q𞺁, qب, qب);
+Test_N(q𞺂, q𞺂, q𞺂, qج, qج);
+Test_N(q𞺃, q𞺃, q𞺃, qد, qد);
+Test_N(q𞺄, q𞺄, q𞺄, qه, qه);
+Test_N(q𞺅, q𞺅, q𞺅, qو, qو);
+Test_N(q𞺆, q𞺆, q𞺆, qز, qز);
+Test_N(q𞺇, q𞺇, q𞺇, qح, qح);
+Test_N(q𞺈, q𞺈, q𞺈, qط, qط);
+Test_N(q𞺉, q𞺉, q𞺉, qي, qي);
+Test_N(q𞺋, q𞺋, q𞺋, qل, qل);
+Test_N(q𞺌, q𞺌, q𞺌, qم, qم);
+Test_N(q𞺍, q𞺍, q𞺍, qن, qن);
+Test_N(q𞺎, q𞺎, q𞺎, qس, qس);
+Test_N(q𞺏, q𞺏, q𞺏, qع, qع);
+Test_N(q𞺐, q𞺐, q𞺐, qف, qف);
+Test_N(q𞺑, q𞺑, q𞺑, qص, qص);
+Test_N(q𞺒, q𞺒, q𞺒, qق, qق);
+Test_N(q𞺓, q𞺓, q𞺓, qر, qر);
+Test_N(q𞺔, q𞺔, q𞺔, qش, qش);
+Test_N(q𞺕, q𞺕, q𞺕, qت, qت);
+Test_N(q𞺖, q𞺖, q𞺖, qث, qث);
+Test_N(q𞺗, q𞺗, q𞺗, qخ, qخ);
+Test_N(q𞺘, q𞺘, q𞺘, qذ, qذ);
+Test_N(q𞺙, q𞺙, q𞺙, qض, qض);
+Test_N(q𞺚, q𞺚, q𞺚, qظ, qظ);
+Test_N(q𞺛, q𞺛, q𞺛, qغ, qغ);
+Test_N(q𞺡, q𞺡, q𞺡, qب, qب);
+Test_N(q𞺢, q𞺢, q𞺢, qج, qج);
+Test_N(q𞺣, q𞺣, q𞺣, qد, qد);
+Test_N(q𞺥, q𞺥, q𞺥, qو, qو);
+Test_N(q𞺦, q𞺦, q𞺦, qز, qز);
+Test_N(q𞺧, q𞺧, q𞺧, qح, qح);
+Test_N(q𞺨, q𞺨, q𞺨, qط, qط);
+Test_N(q𞺩, q𞺩, q𞺩, qي, qي);
+Test_N(q𞺫, q𞺫, q𞺫, qل, qل);
+Test_N(q𞺬, q𞺬, q𞺬, qم, qم);
+Test_N(q𞺭, q𞺭, q𞺭, qن, qن);
+Test_N(q𞺮, q𞺮, q𞺮, qس, qس);
+Test_N(q𞺯, q𞺯, q𞺯, qع, qع);
+Test_N(q𞺰, q𞺰, q𞺰, qف, qف);
+Test_N(q𞺱, q𞺱, q𞺱, qص, qص);
+Test_N(q𞺲, q𞺲, q𞺲, qق, qق);
+Test_N(q𞺳, q𞺳, q𞺳, qر, qر);
+Test_N(q𞺴, q𞺴, q𞺴, qش, qش);
+Test_N(q𞺵, q𞺵, q𞺵, qت, qت);
+Test_N(q𞺶, q𞺶, q𞺶, qث, qث);
+Test_N(q𞺷, q𞺷, q𞺷, qخ, qخ);
+Test_N(q𞺸, q𞺸, q𞺸, qذ, qذ);
+Test_N(q𞺹, q𞺹, q𞺹, qض, qض);
+Test_N(q𞺺, q𞺺, q𞺺, qظ, qظ);
+Test_N(q𞺻, q𞺻, q𞺻, qغ, qغ);
+Test_N(q🄀, q🄀, q🄀, q0., q0.);
+Test_N(q🄁, q🄁, q🄁, q0,, q0,);
+Test_N(q🄂, q🄂, q🄂, q1,, q1,);
+Test_N(q🄃, q🄃, q🄃, q2,, q2,);
+Test_N(q🄄, q🄄, q🄄, q3,, q3,);
+Test_N(q🄅, q🄅, q🄅, q4,, q4,);
+Test_N(q🄆, q🄆, q🄆, q5,, q5,);
+Test_N(q🄇, q🄇, q🄇, q6,, q6,);
+Test_N(q🄈, q🄈, q🄈, q7,, q7,);
+Test_N(q🄉, q🄉, q🄉, q8,, q8,);
+Test_N(q🄊, q🄊, q🄊, q9,, q9,);
+Test_N(q🄐, q🄐, q🄐, q(A), q(A));
+Test_N(q🄑, q🄑, q🄑, q(B), q(B));
+Test_N(q🄒, q🄒, q🄒, q(C), q(C));
+Test_N(q🄓, q🄓, q🄓, q(D), q(D));
+Test_N(q🄔, q🄔, q🄔, q(E), q(E));
+Test_N(q🄕, q🄕, q🄕, q(F), q(F));
+Test_N(q🄖, q🄖, q🄖, q(G), q(G));
+Test_N(q🄗, q🄗, q🄗, q(H), q(H));
+Test_N(q🄘, q🄘, q🄘, q(I), q(I));
+Test_N(q🄙, q🄙, q🄙, q(J), q(J));
+Test_N(q🄚, q🄚, q🄚, q(K), q(K));
+Test_N(q🄛, q🄛, q🄛, q(L), q(L));
+Test_N(q🄜, q🄜, q🄜, q(M), q(M));
+Test_N(q🄝, q🄝, q🄝, q(N), q(N));
+Test_N(q🄞, q🄞, q🄞, q(O), q(O));
+Test_N(q🄟, q🄟, q🄟, q(P), q(P));
+Test_N(q🄠, q🄠, q🄠, q(Q), q(Q));
+Test_N(q🄡, q🄡, q🄡, q(R), q(R));
+Test_N(q🄢, q🄢, q🄢, q(S), q(S));
+Test_N(q🄣, q🄣, q🄣, q(T), q(T));
+Test_N(q🄤, q🄤, q🄤, q(U), q(U));
+Test_N(q🄥, q🄥, q🄥, q(V), q(V));
+Test_N(q🄦, q🄦, q🄦, q(W), q(W));
+Test_N(q🄧, q🄧, q🄧, q(X), q(X));
+Test_N(q🄨, q🄨, q🄨, q(Y), q(Y));
+Test_N(q🄩, q🄩, q🄩, q(Z), q(Z));
+Test_N(q🄪, q🄪, q🄪, q〔S〕, q〔S〕);
+Test_N(q🄫, q🄫, q🄫, qC, qC);
+Test_N(q🄬, q🄬, q🄬, qR, qR);
+Test_N(q🄭, q🄭, q🄭, qCD, qCD);
+Test_N(q🄮, q🄮, q🄮, qWZ, qWZ);
+Test_N(q🄰, q🄰, q🄰, qA, qA);
+Test_N(q🄱, q🄱, q🄱, qB, qB);
+Test_N(q🄲, q🄲, q🄲, qC, qC);
+Test_N(q🄳, q🄳, q🄳, qD, qD);
+Test_N(q🄴, q🄴, q🄴, qE, qE);
+Test_N(q🄵, q🄵, q🄵, qF, qF);
+Test_N(q🄶, q🄶, q🄶, qG, qG);
+Test_N(q🄷, q🄷, q🄷, qH, qH);
+Test_N(q🄸, q🄸, q🄸, qI, qI);
+Test_N(q🄹, q🄹, q🄹, qJ, qJ);
+Test_N(q🄺, q🄺, q🄺, qK, qK);
+Test_N(q🄻, q🄻, q🄻, qL, qL);
+Test_N(q🄼, q🄼, q🄼, qM, qM);
+Test_N(q🄽, q🄽, q🄽, qN, qN);
+Test_N(q🄾, q🄾, q🄾, qO, qO);
+Test_N(q🄿, q🄿, q🄿, qP, qP);
+Test_N(q🅀, q🅀, q🅀, qQ, qQ);
+Test_N(q🅁, q🅁, q🅁, qR, qR);
+Test_N(q🅂, q🅂, q🅂, qS, qS);
+Test_N(q🅃, q🅃, q🅃, qT, qT);
+Test_N(q🅄, q🅄, q🅄, qU, qU);
+Test_N(q🅅, q🅅, q🅅, qV, qV);
+Test_N(q🅆, q🅆, q🅆, qW, qW);
+Test_N(q🅇, q🅇, q🅇, qX, qX);
+Test_N(q🅈, q🅈, q🅈, qY, qY);
+Test_N(q🅉, q🅉, q🅉, qZ, qZ);
+Test_N(q🅊, q🅊, q🅊, qHV, qHV);
+Test_N(q🅋, q🅋, q🅋, qMV, qMV);
+Test_N(q🅌, q🅌, q🅌, qSD, qSD);
+Test_N(q🅍, q🅍, q🅍, qSS, qSS);
+Test_N(q🅎, q🅎, q🅎, qPPV, qPPV);
+Test_N(q🅏, q🅏, q🅏, qWC, qWC);
+Test_N(q🅪, q🅪, q🅪, qMC, qMC);
+Test_N(q🅫, q🅫, q🅫, qMD, qMD);
+Test_N(q🅬, q🅬, q🅬, qMR, qMR);
+Test_N(q🆐, q🆐, q🆐, qDJ, qDJ);
+Test_N(q🈀, q🈀, q🈀, qほか, qほか);
+Test_N(q🈁, q🈁, q🈁, qココ, qココ);
+Test_N(q🈂, q🈂, q🈂, qサ, qサ);
+Test_N(q🈐, q🈐, q🈐, q手, q手);
+Test_N(q🈑, q🈑, q🈑, q字, q字);
+Test_N(q🈒, q🈒, q🈒, q双, q双);
+Test_N(q🈓, q🈓, q🈓, qデ, qデ);
+Test_N(q🈔, q🈔, q🈔, q二, q二);
+Test_N(q🈕, q🈕, q🈕, q多, q多);
+Test_N(q🈖, q🈖, q🈖, q解, q解);
+Test_N(q🈗, q🈗, q🈗, q天, q天);
+Test_N(q🈘, q🈘, q🈘, q交, q交);
+Test_N(q🈙, q🈙, q🈙, q映, q映);
+Test_N(q🈚, q🈚, q🈚, q無, q無);
+Test_N(q🈛, q🈛, q🈛, q料, q料);
+Test_N(q🈜, q🈜, q🈜, q前, q前);
+Test_N(q🈝, q🈝, q🈝, q後, q後);
+Test_N(q🈞, q🈞, q🈞, q再, q再);
+Test_N(q🈟, q🈟, q🈟, q新, q新);
+Test_N(q🈠, q🈠, q🈠, q初, q初);
+Test_N(q🈡, q🈡, q🈡, q終, q終);
+Test_N(q🈢, q🈢, q🈢, q生, q生);
+Test_N(q🈣, q🈣, q🈣, q販, q販);
+Test_N(q🈤, q🈤, q🈤, q声, q声);
+Test_N(q🈥, q🈥, q🈥, q吹, q吹);
+Test_N(q🈦, q🈦, q🈦, q演, q演);
+Test_N(q🈧, q🈧, q🈧, q投, q投);
+Test_N(q🈨, q🈨, q🈨, q捕, q捕);
+Test_N(q🈩, q🈩, q🈩, q一, q一);
+Test_N(q🈪, q🈪, q🈪, q三, q三);
+Test_N(q🈫, q🈫, q🈫, q遊, q遊);
+Test_N(q🈬, q🈬, q🈬, q左, q左);
+Test_N(q🈭, q🈭, q🈭, q中, q中);
+Test_N(q🈮, q🈮, q🈮, q右, q右);
+Test_N(q🈯, q🈯, q🈯, q指, q指);
+Test_N(q🈰, q🈰, q🈰, q走, q走);
+Test_N(q🈱, q🈱, q🈱, q打, q打);
+Test_N(q🈲, q🈲, q🈲, q禁, q禁);
+Test_N(q🈳, q🈳, q🈳, q空, q空);
+Test_N(q🈴, q🈴, q🈴, q合, q合);
+Test_N(q🈵, q🈵, q🈵, q満, q満);
+Test_N(q🈶, q🈶, q🈶, q有, q有);
+Test_N(q🈷, q🈷, q🈷, q月, q月);
+Test_N(q🈸, q🈸, q🈸, q申, q申);
+Test_N(q🈹, q🈹, q🈹, q割, q割);
+Test_N(q🈺, q🈺, q🈺, q営, q営);
+Test_N(q🈻, q🈻, q🈻, q配, q配);
+Test_N(q🉀, q🉀, q🉀, q〔本〕, q〔本〕);
+Test_N(q🉁, q🉁, q🉁, q〔三〕, q〔三〕);
+Test_N(q🉂, q🉂, q🉂, q〔二〕, q〔二〕);
+Test_N(q🉃, q🉃, q🉃, q〔安〕, q〔安〕);
+Test_N(q🉄, q🉄, q🉄, q〔点〕, q〔点〕);
+Test_N(q🉅, q🉅, q🉅, q〔打〕, q〔打〕);
+Test_N(q🉆, q🉆, q🉆, q〔盗〕, q〔盗〕);
+Test_N(q🉇, q🉇, q🉇, q〔勝〕, q〔勝〕);
+Test_N(q🉈, q🉈, q🉈, q〔敗〕, q〔敗〕);
+Test_N(q🉐, q🉐, q🉐, q得, q得);
+Test_N(q🉑, q🉑, q🉑, q可, q可);
+Test_N(q🯰, q🯰, q🯰, q0, q0);
+Test_N(q🯱, q🯱, q🯱, q1, q1);
+Test_N(q🯲, q🯲, q🯲, q2, q2);
+Test_N(q🯳, q🯳, q🯳, q3, q3);
+Test_N(q🯴, q🯴, q🯴, q4, q4);
+Test_N(q🯵, q🯵, q🯵, q5, q5);
+Test_N(q🯶, q🯶, q🯶, q6, q6);
+Test_N(q🯷, q🯷, q🯷, q7, q7);
+Test_N(q🯸, q🯸, q🯸, q8, q8);
+Test_N(q🯹, q🯹, q🯹, q9, q9);
+Test_N(q丽, q丽, q丽, q丽, q丽);
+Test_N(q丸, q丸, q丸, q丸, q丸);
+Test_N(q乁, q乁, q乁, q乁, q乁);
+Test_N(q𠄢, q𠄢, q𠄢, q𠄢, q𠄢);
+Test_N(q你, q你, q你, q你, q你);
+Test_N(q侮, q侮, q侮, q侮, q侮);
+Test_N(q侻, q侻, q侻, q侻, q侻);
+Test_N(q倂, q倂, q倂, q倂, q倂);
+Test_N(q偺, q偺, q偺, q偺, q偺);
+Test_N(q備, q備, q備, q備, q備);
+Test_N(q僧, q僧, q僧, q僧, q僧);
+Test_N(q像, q像, q像, q像, q像);
+Test_N(q㒞, q㒞, q㒞, q㒞, q㒞);
+Test_N(q𠘺, q𠘺, q𠘺, q𠘺, q𠘺);
+Test_N(q免, q免, q免, q免, q免);
+Test_N(q兔, q兔, q兔, q兔, q兔);
+Test_N(q兤, q兤, q兤, q兤, q兤);
+Test_N(q具, q具, q具, q具, q具);
+Test_N(q𠔜, q𠔜, q𠔜, q𠔜, q𠔜);
+Test_N(q㒹, q㒹, q㒹, q㒹, q㒹);
+Test_N(q內, q內, q內, q內, q內);
+Test_N(q再, q再, q再, q再, q再);
+Test_N(q𠕋, q𠕋, q𠕋, q𠕋, q𠕋);
+Test_N(q冗, q冗, q冗, q冗, q冗);
+Test_N(q冤, q冤, q冤, q冤, q冤);
+Test_N(q仌, q仌, q仌, q仌, q仌);
+Test_N(q冬, q冬, q冬, q冬, q冬);
+Test_N(q况, q况, q况, q况, q况);
+Test_N(q𩇟, q𩇟, q𩇟, q𩇟, q𩇟);
+Test_N(q凵, q凵, q凵, q凵, q凵);
+Test_N(q刃, q刃, q刃, q刃, q刃);
+Test_N(q㓟, q㓟, q㓟, q㓟, q㓟);
+Test_N(q刻, q刻, q刻, q刻, q刻);
+Test_N(q剆, q剆, q剆, q剆, q剆);
+Test_N(q割, q割, q割, q割, q割);
+Test_N(q剷, q剷, q剷, q剷, q剷);
+Test_N(q㔕, q㔕, q㔕, q㔕, q㔕);
+Test_N(q勇, q勇, q勇, q勇, q勇);
+Test_N(q勉, q勉, q勉, q勉, q勉);
+Test_N(q勤, q勤, q勤, q勤, q勤);
+Test_N(q勺, q勺, q勺, q勺, q勺);
+Test_N(q包, q包, q包, q包, q包);
+Test_N(q匆, q匆, q匆, q匆, q匆);
+Test_N(q北, q北, q北, q北, q北);
+Test_N(q卉, q卉, q卉, q卉, q卉);
+Test_N(q卑, q卑, q卑, q卑, q卑);
+Test_N(q博, q博, q博, q博, q博);
+Test_N(q即, q即, q即, q即, q即);
+Test_N(q卽, q卽, q卽, q卽, q卽);
+Test_N(q卿, q卿, q卿, q卿, q卿);
+Test_N(q卿, q卿, q卿, q卿, q卿);
+Test_N(q卿, q卿, q卿, q卿, q卿);
+Test_N(q𠨬, q𠨬, q𠨬, q𠨬, q𠨬);
+Test_N(q灰, q灰, q灰, q灰, q灰);
+Test_N(q及, q及, q及, q及, q及);
+Test_N(q叟, q叟, q叟, q叟, q叟);
+Test_N(q𠭣, q𠭣, q𠭣, q𠭣, q𠭣);
+Test_N(q叫, q叫, q叫, q叫, q叫);
+Test_N(q叱, q叱, q叱, q叱, q叱);
+Test_N(q吆, q吆, q吆, q吆, q吆);
+Test_N(q咞, q咞, q咞, q咞, q咞);
+Test_N(q吸, q吸, q吸, q吸, q吸);
+Test_N(q呈, q呈, q呈, q呈, q呈);
+Test_N(q周, q周, q周, q周, q周);
+Test_N(q咢, q咢, q咢, q咢, q咢);
+Test_N(q哶, q哶, q哶, q哶, q哶);
+Test_N(q唐, q唐, q唐, q唐, q唐);
+Test_N(q啓, q啓, q啓, q啓, q啓);
+Test_N(q啣, q啣, q啣, q啣, q啣);
+Test_N(q善, q善, q善, q善, q善);
+Test_N(q善, q善, q善, q善, q善);
+Test_N(q喙, q喙, q喙, q喙, q喙);
+Test_N(q喫, q喫, q喫, q喫, q喫);
+Test_N(q喳, q喳, q喳, q喳, q喳);
+Test_N(q嗂, q嗂, q嗂, q嗂, q嗂);
+Test_N(q圖, q圖, q圖, q圖, q圖);
+Test_N(q嘆, q嘆, q嘆, q嘆, q嘆);
+Test_N(q圗, q圗, q圗, q圗, q圗);
+Test_N(q噑, q噑, q噑, q噑, q噑);
+Test_N(q噴, q噴, q噴, q噴, q噴);
+Test_N(q切, q切, q切, q切, q切);
+Test_N(q壮, q壮, q壮, q壮, q壮);
+Test_N(q城, q城, q城, q城, q城);
+Test_N(q埴, q埴, q埴, q埴, q埴);
+Test_N(q堍, q堍, q堍, q堍, q堍);
+Test_N(q型, q型, q型, q型, q型);
+Test_N(q堲, q堲, q堲, q堲, q堲);
+Test_N(q報, q報, q報, q報, q報);
+Test_N(q墬, q墬, q墬, q墬, q墬);
+Test_N(q𡓤, q𡓤, q𡓤, q𡓤, q𡓤);
+Test_N(q売, q売, q売, q売, q売);
+Test_N(q壷, q壷, q壷, q壷, q壷);
+Test_N(q夆, q夆, q夆, q夆, q夆);
+Test_N(q多, q多, q多, q多, q多);
+Test_N(q夢, q夢, q夢, q夢, q夢);
+Test_N(q奢, q奢, q奢, q奢, q奢);
+Test_N(q𡚨, q𡚨, q𡚨, q𡚨, q𡚨);
+Test_N(q𡛪, q𡛪, q𡛪, q𡛪, q𡛪);
+Test_N(q姬, q姬, q姬, q姬, q姬);
+Test_N(q娛, q娛, q娛, q娛, q娛);
+Test_N(q娧, q娧, q娧, q娧, q娧);
+Test_N(q姘, q姘, q姘, q姘, q姘);
+Test_N(q婦, q婦, q婦, q婦, q婦);
+Test_N(q㛮, q㛮, q㛮, q㛮, q㛮);
+Test_N(q㛼, q㛼, q㛼, q㛼, q㛼);
+Test_N(q嬈, q嬈, q嬈, q嬈, q嬈);
+Test_N(q嬾, q嬾, q嬾, q嬾, q嬾);
+Test_N(q嬾, q嬾, q嬾, q嬾, q嬾);
+Test_N(q𡧈, q𡧈, q𡧈, q𡧈, q𡧈);
+Test_N(q寃, q寃, q寃, q寃, q寃);
+Test_N(q寘, q寘, q寘, q寘, q寘);
+Test_N(q寧, q寧, q寧, q寧, q寧);
+Test_N(q寳, q寳, q寳, q寳, q寳);
+Test_N(q𡬘, q𡬘, q𡬘, q𡬘, q𡬘);
+Test_N(q寿, q寿, q寿, q寿, q寿);
+Test_N(q将, q将, q将, q将, q将);
+Test_N(q当, q当, q当, q当, q当);
+Test_N(q尢, q尢, q尢, q尢, q尢);
+Test_N(q㞁, q㞁, q㞁, q㞁, q㞁);
+Test_N(q屠, q屠, q屠, q屠, q屠);
+Test_N(q屮, q屮, q屮, q屮, q屮);
+Test_N(q峀, q峀, q峀, q峀, q峀);
+Test_N(q岍, q岍, q岍, q岍, q岍);
+Test_N(q𡷤, q𡷤, q𡷤, q𡷤, q𡷤);
+Test_N(q嵃, q嵃, q嵃, q嵃, q嵃);
+Test_N(q𡷦, q𡷦, q𡷦, q𡷦, q𡷦);
+Test_N(q嵮, q嵮, q嵮, q嵮, q嵮);
+Test_N(q嵫, q嵫, q嵫, q嵫, q嵫);
+Test_N(q嵼, q嵼, q嵼, q嵼, q嵼);
+Test_N(q巡, q巡, q巡, q巡, q巡);
+Test_N(q巢, q巢, q巢, q巢, q巢);
+Test_N(q㠯, q㠯, q㠯, q㠯, q㠯);
+Test_N(q巽, q巽, q巽, q巽, q巽);
+Test_N(q帨, q帨, q帨, q帨, q帨);
+Test_N(q帽, q帽, q帽, q帽, q帽);
+Test_N(q幩, q幩, q幩, q幩, q幩);
+Test_N(q㡢, q㡢, q㡢, q㡢, q㡢);
+Test_N(q𢆃, q𢆃, q𢆃, q𢆃, q𢆃);
+Test_N(q㡼, q㡼, q㡼, q㡼, q㡼);
+Test_N(q庰, q庰, q庰, q庰, q庰);
+Test_N(q庳, q庳, q庳, q庳, q庳);
+Test_N(q庶, q庶, q庶, q庶, q庶);
+Test_N(q廊, q廊, q廊, q廊, q廊);
+Test_N(q𪎒, q𪎒, q𪎒, q𪎒, q𪎒);
+Test_N(q廾, q廾, q廾, q廾, q廾);
+Test_N(q𢌱, q𢌱, q𢌱, q𢌱, q𢌱);
+Test_N(q𢌱, q𢌱, q𢌱, q𢌱, q𢌱);
+Test_N(q舁, q舁, q舁, q舁, q舁);
+Test_N(q弢, q弢, q弢, q弢, q弢);
+Test_N(q弢, q弢, q弢, q弢, q弢);
+Test_N(q㣇, q㣇, q㣇, q㣇, q㣇);
+Test_N(q𣊸, q𣊸, q𣊸, q𣊸, q𣊸);
+Test_N(q𦇚, q𦇚, q𦇚, q𦇚, q𦇚);
+Test_N(q形, q形, q形, q形, q形);
+Test_N(q彫, q彫, q彫, q彫, q彫);
+Test_N(q㣣, q㣣, q㣣, q㣣, q㣣);
+Test_N(q徚, q徚, q徚, q徚, q徚);
+Test_N(q忍, q忍, q忍, q忍, q忍);
+Test_N(q志, q志, q志, q志, q志);
+Test_N(q忹, q忹, q忹, q忹, q忹);
+Test_N(q悁, q悁, q悁, q悁, q悁);
+Test_N(q㤺, q㤺, q㤺, q㤺, q㤺);
+Test_N(q㤜, q㤜, q㤜, q㤜, q㤜);
+Test_N(q悔, q悔, q悔, q悔, q悔);
+Test_N(q𢛔, q𢛔, q𢛔, q𢛔, q𢛔);
+Test_N(q惇, q惇, q惇, q惇, q惇);
+Test_N(q慈, q慈, q慈, q慈, q慈);
+Test_N(q慌, q慌, q慌, q慌, q慌);
+Test_N(q慎, q慎, q慎, q慎, q慎);
+Test_N(q慌, q慌, q慌, q慌, q慌);
+Test_N(q慺, q慺, q慺, q慺, q慺);
+Test_N(q憎, q憎, q憎, q憎, q憎);
+Test_N(q憲, q憲, q憲, q憲, q憲);
+Test_N(q憤, q憤, q憤, q憤, q憤);
+Test_N(q憯, q憯, q憯, q憯, q憯);
+Test_N(q懞, q懞, q懞, q懞, q懞);
+Test_N(q懲, q懲, q懲, q懲, q懲);
+Test_N(q懶, q懶, q懶, q懶, q懶);
+Test_N(q成, q成, q成, q成, q成);
+Test_N(q戛, q戛, q戛, q戛, q戛);
+Test_N(q扝, q扝, q扝, q扝, q扝);
+Test_N(q抱, q抱, q抱, q抱, q抱);
+Test_N(q拔, q拔, q拔, q拔, q拔);
+Test_N(q捐, q捐, q捐, q捐, q捐);
+Test_N(q𢬌, q𢬌, q𢬌, q𢬌, q𢬌);
+Test_N(q挽, q挽, q挽, q挽, q挽);
+Test_N(q拼, q拼, q拼, q拼, q拼);
+Test_N(q捨, q捨, q捨, q捨, q捨);
+Test_N(q掃, q掃, q掃, q掃, q掃);
+Test_N(q揤, q揤, q揤, q揤, q揤);
+Test_N(q𢯱, q𢯱, q𢯱, q𢯱, q𢯱);
+Test_N(q搢, q搢, q搢, q搢, q搢);
+Test_N(q揅, q揅, q揅, q揅, q揅);
+Test_N(q掩, q掩, q掩, q掩, q掩);
+Test_N(q㨮, q㨮, q㨮, q㨮, q㨮);
+Test_N(q摩, q摩, q摩, q摩, q摩);
+Test_N(q摾, q摾, q摾, q摾, q摾);
+Test_N(q撝, q撝, q撝, q撝, q撝);
+Test_N(q摷, q摷, q摷, q摷, q摷);
+Test_N(q㩬, q㩬, q㩬, q㩬, q㩬);
+Test_N(q敏, q敏, q敏, q敏, q敏);
+Test_N(q敬, q敬, q敬, q敬, q敬);
+Test_N(q𣀊, q𣀊, q𣀊, q𣀊, q𣀊);
+Test_N(q旣, q旣, q旣, q旣, q旣);
+Test_N(q書, q書, q書, q書, q書);
+Test_N(q晉, q晉, q晉, q晉, q晉);
+Test_N(q㬙, q㬙, q㬙, q㬙, q㬙);
+Test_N(q暑, q暑, q暑, q暑, q暑);
+Test_N(q㬈, q㬈, q㬈, q㬈, q㬈);
+Test_N(q㫤, q㫤, q㫤, q㫤, q㫤);
+Test_N(q冒, q冒, q冒, q冒, q冒);
+Test_N(q冕, q冕, q冕, q冕, q冕);
+Test_N(q最, q最, q最, q最, q最);
+Test_N(q暜, q暜, q暜, q暜, q暜);
+Test_N(q肭, q肭, q肭, q肭, q肭);
+Test_N(q䏙, q䏙, q䏙, q䏙, q䏙);
+Test_N(q朗, q朗, q朗, q朗, q朗);
+Test_N(q望, q望, q望, q望, q望);
+Test_N(q朡, q朡, q朡, q朡, q朡);
+Test_N(q杞, q杞, q杞, q杞, q杞);
+Test_N(q杓, q杓, q杓, q杓, q杓);
+Test_N(q𣏃, q𣏃, q𣏃, q𣏃, q𣏃);
+Test_N(q㭉, q㭉, q㭉, q㭉, q㭉);
+Test_N(q柺, q柺, q柺, q柺, q柺);
+Test_N(q枅, q枅, q枅, q枅, q枅);
+Test_N(q桒, q桒, q桒, q桒, q桒);
+Test_N(q梅, q梅, q梅, q梅, q梅);
+Test_N(q𣑭, q𣑭, q𣑭, q𣑭, q𣑭);
+Test_N(q梎, q梎, q梎, q梎, q梎);
+Test_N(q栟, q栟, q栟, q栟, q栟);
+Test_N(q椔, q椔, q椔, q椔, q椔);
+Test_N(q㮝, q㮝, q㮝, q㮝, q㮝);
+Test_N(q楂, q楂, q楂, q楂, q楂);
+Test_N(q榣, q榣, q榣, q榣, q榣);
+Test_N(q槪, q槪, q槪, q槪, q槪);
+Test_N(q檨, q檨, q檨, q檨, q檨);
+Test_N(q𣚣, q𣚣, q𣚣, q𣚣, q𣚣);
+Test_N(q櫛, q櫛, q櫛, q櫛, q櫛);
+Test_N(q㰘, q㰘, q㰘, q㰘, q㰘);
+Test_N(q次, q次, q次, q次, q次);
+Test_N(q𣢧, q𣢧, q𣢧, q𣢧, q𣢧);
+Test_N(q歔, q歔, q歔, q歔, q歔);
+Test_N(q㱎, q㱎, q㱎, q㱎, q㱎);
+Test_N(q歲, q歲, q歲, q歲, q歲);
+Test_N(q殟, q殟, q殟, q殟, q殟);
+Test_N(q殺, q殺, q殺, q殺, q殺);
+Test_N(q殻, q殻, q殻, q殻, q殻);
+Test_N(q𣪍, q𣪍, q𣪍, q𣪍, q𣪍);
+Test_N(q𡴋, q𡴋, q𡴋, q𡴋, q𡴋);
+Test_N(q𣫺, q𣫺, q𣫺, q𣫺, q𣫺);
+Test_N(q汎, q汎, q汎, q汎, q汎);
+Test_N(q𣲼, q𣲼, q𣲼, q𣲼, q𣲼);
+Test_N(q沿, q沿, q沿, q沿, q沿);
+Test_N(q泍, q泍, q泍, q泍, q泍);
+Test_N(q汧, q汧, q汧, q汧, q汧);
+Test_N(q洖, q洖, q洖, q洖, q洖);
+Test_N(q派, q派, q派, q派, q派);
+Test_N(q海, q海, q海, q海, q海);
+Test_N(q流, q流, q流, q流, q流);
+Test_N(q浩, q浩, q浩, q浩, q浩);
+Test_N(q浸, q浸, q浸, q浸, q浸);
+Test_N(q涅, q涅, q涅, q涅, q涅);
+Test_N(q𣴞, q𣴞, q𣴞, q𣴞, q𣴞);
+Test_N(q洴, q洴, q洴, q洴, q洴);
+Test_N(q港, q港, q港, q港, q港);
+Test_N(q湮, q湮, q湮, q湮, q湮);
+Test_N(q㴳, q㴳, q㴳, q㴳, q㴳);
+Test_N(q滋, q滋, q滋, q滋, q滋);
+Test_N(q滇, q滇, q滇, q滇, q滇);
+Test_N(q𣻑, q𣻑, q𣻑, q𣻑, q𣻑);
+Test_N(q淹, q淹, q淹, q淹, q淹);
+Test_N(q潮, q潮, q潮, q潮, q潮);
+Test_N(q𣽞, q𣽞, q𣽞, q𣽞, q𣽞);
+Test_N(q𣾎, q𣾎, q𣾎, q𣾎, q𣾎);
+Test_N(q濆, q濆, q濆, q濆, q濆);
+Test_N(q瀹, q瀹, q瀹, q瀹, q瀹);
+Test_N(q瀞, q瀞, q瀞, q瀞, q瀞);
+Test_N(q瀛, q瀛, q瀛, q瀛, q瀛);
+Test_N(q㶖, q㶖, q㶖, q㶖, q㶖);
+Test_N(q灊, q灊, q灊, q灊, q灊);
+Test_N(q災, q災, q災, q災, q災);
+Test_N(q灷, q灷, q灷, q灷, q灷);
+Test_N(q炭, q炭, q炭, q炭, q炭);
+Test_N(q𠔥, q𠔥, q𠔥, q𠔥, q𠔥);
+Test_N(q煅, q煅, q煅, q煅, q煅);
+Test_N(q𤉣, q𤉣, q𤉣, q𤉣, q𤉣);
+Test_N(q熜, q熜, q熜, q熜, q熜);
+Test_N(q𤎫, q𤎫, q𤎫, q𤎫, q𤎫);
+Test_N(q爨, q爨, q爨, q爨, q爨);
+Test_N(q爵, q爵, q爵, q爵, q爵);
+Test_N(q牐, q牐, q牐, q牐, q牐);
+Test_N(q𤘈, q𤘈, q𤘈, q𤘈, q𤘈);
+Test_N(q犀, q犀, q犀, q犀, q犀);
+Test_N(q犕, q犕, q犕, q犕, q犕);
+Test_N(q𤜵, q𤜵, q𤜵, q𤜵, q𤜵);
+Test_N(q𤠔, q𤠔, q𤠔, q𤠔, q𤠔);
+Test_N(q獺, q獺, q獺, q獺, q獺);
+Test_N(q王, q王, q王, q王, q王);
+Test_N(q㺬, q㺬, q㺬, q㺬, q㺬);
+Test_N(q玥, q玥, q玥, q玥, q玥);
+Test_N(q㺸, q㺸, q㺸, q㺸, q㺸);
+Test_N(q㺸, q㺸, q㺸, q㺸, q㺸);
+Test_N(q瑇, q瑇, q瑇, q瑇, q瑇);
+Test_N(q瑜, q瑜, q瑜, q瑜, q瑜);
+Test_N(q瑱, q瑱, q瑱, q瑱, q瑱);
+Test_N(q璅, q璅, q璅, q璅, q璅);
+Test_N(q瓊, q瓊, q瓊, q瓊, q瓊);
+Test_N(q㼛, q㼛, q㼛, q㼛, q㼛);
+Test_N(q甤, q甤, q甤, q甤, q甤);
+Test_N(q𤰶, q𤰶, q𤰶, q𤰶, q𤰶);
+Test_N(q甾, q甾, q甾, q甾, q甾);
+Test_N(q𤲒, q𤲒, q𤲒, q𤲒, q𤲒);
+Test_N(q異, q異, q異, q異, q異);
+Test_N(q𢆟, q𢆟, q𢆟, q𢆟, q𢆟);
+Test_N(q瘐, q瘐, q瘐, q瘐, q瘐);
+Test_N(q𤾡, q𤾡, q𤾡, q𤾡, q𤾡);
+Test_N(q𤾸, q𤾸, q𤾸, q𤾸, q𤾸);
+Test_N(q𥁄, q𥁄, q𥁄, q𥁄, q𥁄);
+Test_N(q㿼, q㿼, q㿼, q㿼, q㿼);
+Test_N(q䀈, q䀈, q䀈, q䀈, q䀈);
+Test_N(q直, q直, q直, q直, q直);
+Test_N(q𥃳, q𥃳, q𥃳, q𥃳, q𥃳);
+Test_N(q𥃲, q𥃲, q𥃲, q𥃲, q𥃲);
+Test_N(q𥄙, q𥄙, q𥄙, q𥄙, q𥄙);
+Test_N(q𥄳, q𥄳, q𥄳, q𥄳, q𥄳);
+Test_N(q眞, q眞, q眞, q眞, q眞);
+Test_N(q真, q真, q真, q真, q真);
+Test_N(q真, q真, q真, q真, q真);
+Test_N(q睊, q睊, q睊, q睊, q睊);
+Test_N(q䀹, q䀹, q䀹, q䀹, q䀹);
+Test_N(q瞋, q瞋, q瞋, q瞋, q瞋);
+Test_N(q䁆, q䁆, q䁆, q䁆, q䁆);
+Test_N(q䂖, q䂖, q䂖, q䂖, q䂖);
+Test_N(q𥐝, q𥐝, q𥐝, q𥐝, q𥐝);
+Test_N(q硎, q硎, q硎, q硎, q硎);
+Test_N(q碌, q碌, q碌, q碌, q碌);
+Test_N(q磌, q磌, q磌, q磌, q磌);
+Test_N(q䃣, q䃣, q䃣, q䃣, q䃣);
+Test_N(q𥘦, q𥘦, q𥘦, q𥘦, q𥘦);
+Test_N(q祖, q祖, q祖, q祖, q祖);
+Test_N(q𥚚, q𥚚, q𥚚, q𥚚, q𥚚);
+Test_N(q𥛅, q𥛅, q𥛅, q𥛅, q𥛅);
+Test_N(q福, q福, q福, q福, q福);
+Test_N(q秫, q秫, q秫, q秫, q秫);
+Test_N(q䄯, q䄯, q䄯, q䄯, q䄯);
+Test_N(q穀, q穀, q穀, q穀, q穀);
+Test_N(q穊, q穊, q穊, q穊, q穊);
+Test_N(q穏, q穏, q穏, q穏, q穏);
+Test_N(q𥥼, q𥥼, q𥥼, q𥥼, q𥥼);
+Test_N(q𥪧, q𥪧, q𥪧, q𥪧, q𥪧);
+Test_N(q𥪧, q𥪧, q𥪧, q𥪧, q𥪧);
+Test_N(q竮, q竮, q竮, q竮, q竮);
+Test_N(q䈂, q䈂, q䈂, q䈂, q䈂);
+Test_N(q𥮫, q𥮫, q𥮫, q𥮫, q𥮫);
+Test_N(q篆, q篆, q篆, q篆, q篆);
+Test_N(q築, q築, q築, q築, q築);
+Test_N(q䈧, q䈧, q䈧, q䈧, q䈧);
+Test_N(q𥲀, q𥲀, q𥲀, q𥲀, q𥲀);
+Test_N(q糒, q糒, q糒, q糒, q糒);
+Test_N(q䊠, q䊠, q䊠, q䊠, q䊠);
+Test_N(q糨, q糨, q糨, q糨, q糨);
+Test_N(q糣, q糣, q糣, q糣, q糣);
+Test_N(q紀, q紀, q紀, q紀, q紀);
+Test_N(q𥾆, q𥾆, q𥾆, q𥾆, q𥾆);
+Test_N(q絣, q絣, q絣, q絣, q絣);
+Test_N(q䌁, q䌁, q䌁, q䌁, q䌁);
+Test_N(q緇, q緇, q緇, q緇, q緇);
+Test_N(q縂, q縂, q縂, q縂, q縂);
+Test_N(q繅, q繅, q繅, q繅, q繅);
+Test_N(q䌴, q䌴, q䌴, q䌴, q䌴);
+Test_N(q𦈨, q𦈨, q𦈨, q𦈨, q𦈨);
+Test_N(q𦉇, q𦉇, q𦉇, q𦉇, q𦉇);
+Test_N(q䍙, q䍙, q䍙, q䍙, q䍙);
+Test_N(q𦋙, q𦋙, q𦋙, q𦋙, q𦋙);
+Test_N(q罺, q罺, q罺, q罺, q罺);
+Test_N(q𦌾, q𦌾, q𦌾, q𦌾, q𦌾);
+Test_N(q羕, q羕, q羕, q羕, q羕);
+Test_N(q翺, q翺, q翺, q翺, q翺);
+Test_N(q者, q者, q者, q者, q者);
+Test_N(q𦓚, q𦓚, q𦓚, q𦓚, q𦓚);
+Test_N(q𦔣, q𦔣, q𦔣, q𦔣, q𦔣);
+Test_N(q聠, q聠, q聠, q聠, q聠);
+Test_N(q𦖨, q𦖨, q𦖨, q𦖨, q𦖨);
+Test_N(q聰, q聰, q聰, q聰, q聰);
+Test_N(q𣍟, q𣍟, q𣍟, q𣍟, q𣍟);
+Test_N(q䏕, q䏕, q䏕, q䏕, q䏕);
+Test_N(q育, q育, q育, q育, q育);
+Test_N(q脃, q脃, q脃, q脃, q脃);
+Test_N(q䐋, q䐋, q䐋, q䐋, q䐋);
+Test_N(q脾, q脾, q脾, q脾, q脾);
+Test_N(q媵, q媵, q媵, q媵, q媵);
+Test_N(q𦞧, q𦞧, q𦞧, q𦞧, q𦞧);
+Test_N(q𦞵, q𦞵, q𦞵, q𦞵, q𦞵);
+Test_N(q𣎓, q𣎓, q𣎓, q𣎓, q𣎓);
+Test_N(q𣎜, q𣎜, q𣎜, q𣎜, q𣎜);
+Test_N(q舁, q舁, q舁, q舁, q舁);
+Test_N(q舄, q舄, q舄, q舄, q舄);
+Test_N(q辞, q辞, q辞, q辞, q辞);
+Test_N(q䑫, q䑫, q䑫, q䑫, q䑫);
+Test_N(q芑, q芑, q芑, q芑, q芑);
+Test_N(q芋, q芋, q芋, q芋, q芋);
+Test_N(q芝, q芝, q芝, q芝, q芝);
+Test_N(q劳, q劳, q劳, q劳, q劳);
+Test_N(q花, q花, q花, q花, q花);
+Test_N(q芳, q芳, q芳, q芳, q芳);
+Test_N(q芽, q芽, q芽, q芽, q芽);
+Test_N(q苦, q苦, q苦, q苦, q苦);
+Test_N(q𦬼, q𦬼, q𦬼, q𦬼, q𦬼);
+Test_N(q若, q若, q若, q若, q若);
+Test_N(q茝, q茝, q茝, q茝, q茝);
+Test_N(q荣, q荣, q荣, q荣, q荣);
+Test_N(q莭, q莭, q莭, q莭, q莭);
+Test_N(q茣, q茣, q茣, q茣, q茣);
+Test_N(q莽, q莽, q莽, q莽, q莽);
+Test_N(q菧, q菧, q菧, q菧, q菧);
+Test_N(q著, q著, q著, q著, q著);
+Test_N(q荓, q荓, q荓, q荓, q荓);
+Test_N(q菊, q菊, q菊, q菊, q菊);
+Test_N(q菌, q菌, q菌, q菌, q菌);
+Test_N(q菜, q菜, q菜, q菜, q菜);
+Test_N(q𦰶, q𦰶, q𦰶, q𦰶, q𦰶);
+Test_N(q𦵫, q𦵫, q𦵫, q𦵫, q𦵫);
+Test_N(q𦳕, q𦳕, q𦳕, q𦳕, q𦳕);
+Test_N(q䔫, q䔫, q䔫, q䔫, q䔫);
+Test_N(q蓱, q蓱, q蓱, q蓱, q蓱);
+Test_N(q蓳, q蓳, q蓳, q蓳, q蓳);
+Test_N(q蔖, q蔖, q蔖, q蔖, q蔖);
+Test_N(q𧏊, q𧏊, q𧏊, q𧏊, q𧏊);
+Test_N(q蕤, q蕤, q蕤, q蕤, q蕤);
+Test_N(q𦼬, q𦼬, q𦼬, q𦼬, q𦼬);
+Test_N(q䕝, q䕝, q䕝, q䕝, q䕝);
+Test_N(q䕡, q䕡, q䕡, q䕡, q䕡);
+Test_N(q𦾱, q𦾱, q𦾱, q𦾱, q𦾱);
+Test_N(q𧃒, q𧃒, q𧃒, q𧃒, q𧃒);
+Test_N(q䕫, q䕫, q䕫, q䕫, q䕫);
+Test_N(q虐, q虐, q虐, q虐, q虐);
+Test_N(q虜, q虜, q虜, q虜, q虜);
+Test_N(q虧, q虧, q虧, q虧, q虧);
+Test_N(q虩, q虩, q虩, q虩, q虩);
+Test_N(q蚩, q蚩, q蚩, q蚩, q蚩);
+Test_N(q蚈, q蚈, q蚈, q蚈, q蚈);
+Test_N(q蜎, q蜎, q蜎, q蜎, q蜎);
+Test_N(q蛢, q蛢, q蛢, q蛢, q蛢);
+Test_N(q蝹, q蝹, q蝹, q蝹, q蝹);
+Test_N(q蜨, q蜨, q蜨, q蜨, q蜨);
+Test_N(q蝫, q蝫, q蝫, q蝫, q蝫);
+Test_N(q螆, q螆, q螆, q螆, q螆);
+Test_N(q䗗, q䗗, q䗗, q䗗, q䗗);
+Test_N(q蟡, q蟡, q蟡, q蟡, q蟡);
+Test_N(q蠁, q蠁, q蠁, q蠁, q蠁);
+Test_N(q䗹, q䗹, q䗹, q䗹, q䗹);
+Test_N(q衠, q衠, q衠, q衠, q衠);
+Test_N(q衣, q衣, q衣, q衣, q衣);
+Test_N(q𧙧, q𧙧, q𧙧, q𧙧, q𧙧);
+Test_N(q裗, q裗, q裗, q裗, q裗);
+Test_N(q裞, q裞, q裞, q裞, q裞);
+Test_N(q䘵, q䘵, q䘵, q䘵, q䘵);
+Test_N(q裺, q裺, q裺, q裺, q裺);
+Test_N(q㒻, q㒻, q㒻, q㒻, q㒻);
+Test_N(q𧢮, q𧢮, q𧢮, q𧢮, q𧢮);
+Test_N(q𧥦, q𧥦, q𧥦, q𧥦, q𧥦);
+Test_N(q䚾, q䚾, q䚾, q䚾, q䚾);
+Test_N(q䛇, q䛇, q䛇, q䛇, q䛇);
+Test_N(q誠, q誠, q誠, q誠, q誠);
+Test_N(q諭, q諭, q諭, q諭, q諭);
+Test_N(q變, q變, q變, q變, q變);
+Test_N(q豕, q豕, q豕, q豕, q豕);
+Test_N(q𧲨, q𧲨, q𧲨, q𧲨, q𧲨);
+Test_N(q貫, q貫, q貫, q貫, q貫);
+Test_N(q賁, q賁, q賁, q賁, q賁);
+Test_N(q贛, q贛, q贛, q贛, q贛);
+Test_N(q起, q起, q起, q起, q起);
+Test_N(q𧼯, q𧼯, q𧼯, q𧼯, q𧼯);
+Test_N(q𠠄, q𠠄, q𠠄, q𠠄, q𠠄);
+Test_N(q跋, q跋, q跋, q跋, q跋);
+Test_N(q趼, q趼, q趼, q趼, q趼);
+Test_N(q跰, q跰, q跰, q跰, q跰);
+Test_N(q𠣞, q𠣞, q𠣞, q𠣞, q𠣞);
+Test_N(q軔, q軔, q軔, q軔, q軔);
+Test_N(q輸, q輸, q輸, q輸, q輸);
+Test_N(q𨗒, q𨗒, q𨗒, q𨗒, q𨗒);
+Test_N(q𨗭, q𨗭, q𨗭, q𨗭, q𨗭);
+Test_N(q邔, q邔, q邔, q邔, q邔);
+Test_N(q郱, q郱, q郱, q郱, q郱);
+Test_N(q鄑, q鄑, q鄑, q鄑, q鄑);
+Test_N(q𨜮, q𨜮, q𨜮, q𨜮, q𨜮);
+Test_N(q鄛, q鄛, q鄛, q鄛, q鄛);
+Test_N(q鈸, q鈸, q鈸, q鈸, q鈸);
+Test_N(q鋗, q鋗, q鋗, q鋗, q鋗);
+Test_N(q鋘, q鋘, q鋘, q鋘, q鋘);
+Test_N(q鉼, q鉼, q鉼, q鉼, q鉼);
+Test_N(q鏹, q鏹, q鏹, q鏹, q鏹);
+Test_N(q鐕, q鐕, q鐕, q鐕, q鐕);
+Test_N(q𨯺, q𨯺, q𨯺, q𨯺, q𨯺);
+Test_N(q開, q開, q開, q開, q開);
+Test_N(q䦕, q䦕, q䦕, q䦕, q䦕);
+Test_N(q閷, q閷, q閷, q閷, q閷);
+Test_N(q𨵷, q𨵷, q𨵷, q𨵷, q𨵷);
+Test_N(q䧦, q䧦, q䧦, q䧦, q䧦);
+Test_N(q雃, q雃, q雃, q雃, q雃);
+Test_N(q嶲, q嶲, q嶲, q嶲, q嶲);
+Test_N(q霣, q霣, q霣, q霣, q霣);
+Test_N(q𩅅, q𩅅, q𩅅, q𩅅, q𩅅);
+Test_N(q𩈚, q𩈚, q𩈚, q𩈚, q𩈚);
+Test_N(q䩮, q䩮, q䩮, q䩮, q䩮);
+Test_N(q䩶, q䩶, q䩶, q䩶, q䩶);
+Test_N(q韠, q韠, q韠, q韠, q韠);
+Test_N(q𩐊, q𩐊, q𩐊, q𩐊, q𩐊);
+Test_N(q䪲, q䪲, q䪲, q䪲, q䪲);
+Test_N(q𩒖, q𩒖, q𩒖, q𩒖, q𩒖);
+Test_N(q頋, q頋, q頋, q頋, q頋);
+Test_N(q頋, q頋, q頋, q頋, q頋);
+Test_N(q頩, q頩, q頩, q頩, q頩);
+Test_N(q𩖶, q𩖶, q𩖶, q𩖶, q𩖶);
+Test_N(q飢, q飢, q飢, q飢, q飢);
+Test_N(q䬳, q䬳, q䬳, q䬳, q䬳);
+Test_N(q餩, q餩, q餩, q餩, q餩);
+Test_N(q馧, q馧, q馧, q馧, q馧);
+Test_N(q駂, q駂, q駂, q駂, q駂);
+Test_N(q駾, q駾, q駾, q駾, q駾);
+Test_N(q䯎, q䯎, q䯎, q䯎, q䯎);
+Test_N(q𩬰, q𩬰, q𩬰, q𩬰, q𩬰);
+Test_N(q鬒, q鬒, q鬒, q鬒, q鬒);
+Test_N(q鱀, q鱀, q鱀, q鱀, q鱀);
+Test_N(q鳽, q鳽, q鳽, q鳽, q鳽);
+Test_N(q䳎, q䳎, q䳎, q䳎, q䳎);
+Test_N(q䳭, q䳭, q䳭, q䳭, q䳭);
+Test_N(q鵧, q鵧, q鵧, q鵧, q鵧);
+Test_N(q𪃎, q𪃎, q𪃎, q𪃎, q𪃎);
+Test_N(q䳸, q䳸, q䳸, q䳸, q䳸);
+Test_N(q𪄅, q𪄅, q𪄅, q𪄅, q𪄅);
+Test_N(q𪈎, q𪈎, q𪈎, q𪈎, q𪈎);
+Test_N(q𪊑, q𪊑, q𪊑, q𪊑, q𪊑);
+Test_N(q麻, q麻, q麻, q麻, q麻);
+Test_N(q䵖, q䵖, q䵖, q䵖, q䵖);
+Test_N(q黹, q黹, q黹, q黹, q黹);
+Test_N(q黾, q黾, q黾, q黾, q黾);
+Test_N(q鼅, q鼅, q鼅, q鼅, q鼅);
+Test_N(q鼏, q鼏, q鼏, q鼏, q鼏);
+Test_N(q鼖, q鼖, q鼖, q鼖, q鼖);
+Test_N(q鼻, q鼻, q鼻, q鼻, q鼻);
+Test_N(q𪘀, q𪘀, q𪘀, q𪘀, q𪘀);
+Test_N(qà֮̀̕b, qà֮̀̕b, qà֮̀̕b, qà֮̀̕b, qà֮̀̕b);
+Test_N(qà֮̀̕b, qà֮̀̕b, qà֮̀̕b, qà֮̀̕b, qà֮̀̕b);
+Test_N(qà֮́̕b, qà֮́̕b, qà֮́̕b, qà֮́̕b, qà֮́̕b);
+Test_N(qá֮̀̕b, qá֮̀̕b, qá֮̀̕b, qá֮̀̕b, qá֮̀̕b);
+Test_N(qà֮̂̕b, qà֮̂̕b, qà֮̂̕b, qà֮̂̕b, qà֮̂̕b);
+Test_N(qầ֮̕b, qầ֮̕b, qầ֮̕b, qầ֮̕b, qầ֮̕b);
+Test_N(qà֮̃̕b, qà֮̃̕b, qà֮̃̕b, qà֮̃̕b, qà֮̃̕b);
+Test_N(qã֮̀̕b, qã֮̀̕b, qã֮̀̕b, qã֮̀̕b, qã֮̀̕b);
+Test_N(qà֮̄̕b, qà֮̄̕b, qà֮̄̕b, qà֮̄̕b, qà֮̄̕b);
+Test_N(qā֮̀̕b, qā֮̀̕b, qā֮̀̕b, qā֮̀̕b, qā֮̀̕b);
+Test_N(qà֮̅̕b, qà֮̅̕b, qà֮̅̕b, qà֮̅̕b, qà֮̅̕b);
+Test_N(qa֮̅̀̕b, qa֮̅̀̕b, qa֮̅̀̕b, qa֮̅̀̕b, qa֮̅̀̕b);
+Test_N(qà֮̆̕b, qà֮̆̕b, qà֮̆̕b, qà֮̆̕b, qà֮̆̕b);
+Test_N(qằ֮̕b, qằ֮̕b, qằ֮̕b, qằ֮̕b, qằ֮̕b);
+Test_N(qà֮̇̕b, qà֮̇̕b, qà֮̇̕b, qà֮̇̕b, qà֮̇̕b);
+Test_N(qȧ֮̀̕b, qȧ֮̀̕b, qȧ֮̀̕b, qȧ֮̀̕b, qȧ֮̀̕b);
+Test_N(qà֮̈̕b, qà֮̈̕b, qà֮̈̕b, qà֮̈̕b, qà֮̈̕b);
+Test_N(qä֮̀̕b, qä֮̀̕b, qä֮̀̕b, qä֮̀̕b, qä֮̀̕b);
+Test_N(qà֮̉̕b, qà֮̉̕b, qà֮̉̕b, qà֮̉̕b, qà֮̉̕b);
+Test_N(qả֮̀̕b, qả֮̀̕b, qả֮̀̕b, qả֮̀̕b, qả֮̀̕b);
+Test_N(qà֮̊̕b, qà֮̊̕b, qà֮̊̕b, qà֮̊̕b, qà֮̊̕b);
+Test_N(qå֮̀̕b, qå֮̀̕b, qå֮̀̕b, qå֮̀̕b, qå֮̀̕b);
+Test_N(qà֮̋̕b, qà֮̋̕b, qà֮̋̕b, qà֮̋̕b, qà֮̋̕b);
+Test_N(qa֮̋̀̕b, qa֮̋̀̕b, qa֮̋̀̕b, qa֮̋̀̕b, qa֮̋̀̕b);
+Test_N(qà֮̌̕b, qà֮̌̕b, qà֮̌̕b, qà֮̌̕b, qà֮̌̕b);
+Test_N(qǎ֮̀̕b, qǎ֮̀̕b, qǎ֮̀̕b, qǎ֮̀̕b, qǎ֮̀̕b);
+Test_N(qà֮̍̕b, qà֮̍̕b, qà֮̍̕b, qà֮̍̕b, qà֮̍̕b);
+Test_N(qa֮̍̀̕b, qa֮̍̀̕b, qa֮̍̀̕b, qa֮̍̀̕b, qa֮̍̀̕b);
+Test_N(qà֮̎̕b, qà֮̎̕b, qà֮̎̕b, qà֮̎̕b, qà֮̎̕b);
+Test_N(qa֮̎̀̕b, qa֮̎̀̕b, qa֮̎̀̕b, qa֮̎̀̕b, qa֮̎̀̕b);
+Test_N(qà֮̏̕b, qà֮̏̕b, qà֮̏̕b, qà֮̏̕b, qà֮̏̕b);
+Test_N(qȁ֮̀̕b, qȁ֮̀̕b, qȁ֮̀̕b, qȁ֮̀̕b, qȁ֮̀̕b);
+Test_N(qà֮̐̕b, qà֮̐̕b, qà֮̐̕b, qà֮̐̕b, qà֮̐̕b);
+Test_N(qa֮̐̀̕b, qa֮̐̀̕b, qa֮̐̀̕b, qa֮̐̀̕b, qa֮̐̀̕b);
+Test_N(qà֮̑̕b, qà֮̑̕b, qà֮̑̕b, qà֮̑̕b, qà֮̑̕b);
+Test_N(qȃ֮̀̕b, qȃ֮̀̕b, qȃ֮̀̕b, qȃ֮̀̕b, qȃ֮̀̕b);
+Test_N(qà֮̒̕b, qà֮̒̕b, qà֮̒̕b, qà֮̒̕b, qà֮̒̕b);
+Test_N(qa֮̒̀̕b, qa֮̒̀̕b, qa֮̒̀̕b, qa֮̒̀̕b, qa֮̒̀̕b);
+Test_N(qà֮̓̕b, qà֮̓̕b, qà֮̓̕b, qà֮̓̕b, qà֮̓̕b);
+Test_N(qa֮̓̀̕b, qa֮̓̀̕b, qa֮̓̀̕b, qa֮̓̀̕b, qa֮̓̀̕b);
+Test_N(qà֮̔̕b, qà֮̔̕b, qà֮̔̕b, qà֮̔̕b, qà֮̔̕b);
+Test_N(qa֮̔̀̕b, qa֮̔̀̕b, qa֮̔̀̕b, qa֮̔̀̕b, qa֮̔̀̕b);
+Test_N(qà̕̕͜b, qà̕̕͜b, qà̕̕͜b, qà̕̕͜b, qà̕̕͜b);
+Test_N(qà̕̕͜b, qà̕̕͜b, qà̕̕͜b, qà̕̕͜b, qà̕̕͜b);
+Test_N(qa᷺̖̖֚b, qa᷺̖̖֚b, qa᷺̖̖֚b, qa᷺̖̖֚b, qa᷺̖̖֚b);
+Test_N(qa᷺̖̖֚b, qa᷺̖̖֚b, qa᷺̖̖֚b, qa᷺̖̖֚b, qa᷺̖̖֚b);
+Test_N(qa᷺̖̗֚b, qa᷺̖̗֚b, qa᷺̖̗֚b, qa᷺̖̗֚b, qa᷺̖̗֚b);
+Test_N(qa᷺̗̖֚b, qa᷺̗̖֚b, qa᷺̗̖֚b, qa᷺̗̖֚b, qa᷺̗̖֚b);
+Test_N(qa᷺̖̘֚b, qa᷺̖̘֚b, qa᷺̖̘֚b, qa᷺̖̘֚b, qa᷺̖̘֚b);
+Test_N(qa᷺̘̖֚b, qa᷺̘̖֚b, qa᷺̘̖֚b, qa᷺̘̖֚b, qa᷺̘̖֚b);
+Test_N(qa᷺̖̙֚b, qa᷺̖̙֚b, qa᷺̖̙֚b, qa᷺̖̙֚b, qa᷺̖̙֚b);
+Test_N(qa᷺̙̖֚b, qa᷺̙̖֚b, qa᷺̙̖֚b, qa᷺̙̖֚b, qa᷺̙̖֚b);
+Test_N(qà̕̚͜b, qà̕̚͜b, qà̕̚͜b, qà̕̚͜b, qà̕̚͜b);
+Test_N(qà̚̕͜b, qà̚̕͜b, qà̚̕͜b, qà̚̕͜b, qà̚̕͜b);
+Test_N(qa᷎̛̛᷺b, qa᷎̛̛᷺b, qa᷎̛̛᷺b, qa᷎̛̛᷺b, qa᷎̛̛᷺b);
+Test_N(qa᷎̛̛᷺b, qa᷎̛̛᷺b, qa᷎̛̛᷺b, qa᷎̛̛᷺b, qa᷎̛̛᷺b);
+Test_N(qa᷺̖̜֚b, qa᷺̖̜֚b, qa᷺̖̜֚b, qa᷺̖̜֚b, qa᷺̖̜֚b);
+Test_N(qa᷺̜̖֚b, qa᷺̜̖֚b, qa᷺̜̖֚b, qa᷺̜̖֚b, qa᷺̜̖֚b);
+Test_N(qa᷺̖̝֚b, qa᷺̖̝֚b, qa᷺̖̝֚b, qa᷺̖̝֚b, qa᷺̖̝֚b);
+Test_N(qa᷺̝̖֚b, qa᷺̝̖֚b, qa᷺̝̖֚b, qa᷺̝̖֚b, qa᷺̝̖֚b);
+Test_N(qa᷺̖̞֚b, qa᷺̖̞֚b, qa᷺̖̞֚b, qa᷺̖̞֚b, qa᷺̖̞֚b);
+Test_N(qa᷺̞̖֚b, qa᷺̞̖֚b, qa᷺̞̖֚b, qa᷺̞̖֚b, qa᷺̞̖֚b);
+Test_N(qa᷺̖̟֚b, qa᷺̖̟֚b, qa᷺̖̟֚b, qa᷺̖̟֚b, qa᷺̖̟֚b);
+Test_N(qa᷺̟̖֚b, qa᷺̟̖֚b, qa᷺̟̖֚b, qa᷺̟̖֚b, qa᷺̟̖֚b);
+Test_N(qa᷺̖̠֚b, qa᷺̖̠֚b, qa᷺̖̠֚b, qa᷺̖̠֚b, qa᷺̖̠֚b);
+Test_N(qa᷺̠̖֚b, qa᷺̠̖֚b, qa᷺̠̖֚b, qa᷺̠̖֚b, qa᷺̠̖֚b);
+Test_N(qaུ̡̡᷎b, qaུ̡̡᷎b, qaུ̡̡᷎b, qaུ̡̡᷎b, qaུ̡̡᷎b);
+Test_N(qaུ̡̡᷎b, qaུ̡̡᷎b, qaུ̡̡᷎b, qaུ̡̡᷎b, qaུ̡̡᷎b);
+Test_N(qaུ̡̢᷎b, qaུ̡̢᷎b, qaུ̡̢᷎b, qaུ̡̢᷎b, qaུ̡̢᷎b);
+Test_N(qaུ̢̡᷎b, qaུ̢̡᷎b, qaུ̢̡᷎b, qaུ̢̡᷎b, qaུ̢̡᷎b);
+Test_N(qa᷺̖̣֚b, qa᷺̖̣֚b, qa᷺̖̣֚b, qa᷺̖̣֚b, qa᷺̖̣֚b);
+Test_N(qạ᷺̖֚b, qạ᷺̖֚b, qạ᷺̖֚b, qạ᷺̖֚b, qạ᷺̖֚b);
+Test_N(qa᷺̖̤֚b, qa᷺̖̤֚b, qa᷺̖̤֚b, qa᷺̖̤֚b, qa᷺̖̤֚b);
+Test_N(qa᷺̤̖֚b, qa᷺̤̖֚b, qa᷺̤̖֚b, qa᷺̤̖֚b, qa᷺̤̖֚b);
+Test_N(qa᷺̖̥֚b, qa᷺̖̥֚b, qa᷺̖̥֚b, qa᷺̖̥֚b, qa᷺̖̥֚b);
+Test_N(qḁ᷺̖֚b, qḁ᷺̖֚b, qḁ᷺̖֚b, qḁ᷺̖֚b, qḁ᷺̖֚b);
+Test_N(qa᷺̖̦֚b, qa᷺̖̦֚b, qa᷺̖̦֚b, qa᷺̖̦֚b, qa᷺̖̦֚b);
+Test_N(qa᷺̦̖֚b, qa᷺̦̖֚b, qa᷺̦̖֚b, qa᷺̦̖֚b, qa᷺̦̖֚b);
+Test_N(qaུ̡̧᷎b, qaུ̡̧᷎b, qaུ̡̧᷎b, qaུ̡̧᷎b, qaུ̡̧᷎b);
+Test_N(qaུ̧̡᷎b, qaུ̧̡᷎b, qaུ̧̡᷎b, qaུ̧̡᷎b, qaུ̧̡᷎b);
+Test_N(qaུ̡̨᷎b, qaུ̡̨᷎b, qaུ̡̨᷎b, qaུ̡̨᷎b, qaུ̡̨᷎b);
+Test_N(qąུ̡᷎b, qąུ̡᷎b, qąུ̡᷎b, qąུ̡᷎b, qąུ̡᷎b);
+Test_N(qa᷺̖̩֚b, qa᷺̖̩֚b, qa᷺̖̩֚b, qa᷺̖̩֚b, qa᷺̖̩֚b);
+Test_N(qa᷺̩̖֚b, qa᷺̩̖֚b, qa᷺̩̖֚b, qa᷺̩̖֚b, qa᷺̩̖֚b);
+Test_N(qa᷺̖̪֚b, qa᷺̖̪֚b, qa᷺̖̪֚b, qa᷺̖̪֚b, qa᷺̖̪֚b);
+Test_N(qa᷺̪̖֚b, qa᷺̪̖֚b, qa᷺̪̖֚b, qa᷺̪̖֚b, qa᷺̪̖֚b);
+Test_N(qa᷺̖̫֚b, qa᷺̖̫֚b, qa᷺̖̫֚b, qa᷺̖̫֚b, qa᷺̖̫֚b);
+Test_N(qa᷺̫̖֚b, qa᷺̫̖֚b, qa᷺̫̖֚b, qa᷺̫̖֚b, qa᷺̫̖֚b);
+Test_N(qa᷺̖̬֚b, qa᷺̖̬֚b, qa᷺̖̬֚b, qa᷺̖̬֚b, qa᷺̖̬֚b);
+Test_N(qa᷺̬̖֚b, qa᷺̬̖֚b, qa᷺̬̖֚b, qa᷺̬̖֚b, qa᷺̬̖֚b);
+Test_N(qa᷺̖̭֚b, qa᷺̖̭֚b, qa᷺̖̭֚b, qa᷺̖̭֚b, qa᷺̖̭֚b);
+Test_N(qa᷺̭̖֚b, qa᷺̭̖֚b, qa᷺̭̖֚b, qa᷺̭̖֚b, qa᷺̭̖֚b);
+Test_N(qa᷺̖̮֚b, qa᷺̖̮֚b, qa᷺̖̮֚b, qa᷺̖̮֚b, qa᷺̖̮֚b);
+Test_N(qa᷺̮̖֚b, qa᷺̮̖֚b, qa᷺̮̖֚b, qa᷺̮̖֚b, qa᷺̮̖֚b);
+Test_N(qa᷺̖̯֚b, qa᷺̖̯֚b, qa᷺̖̯֚b, qa᷺̖̯֚b, qa᷺̖̯֚b);
+Test_N(qa᷺̯̖֚b, qa᷺̯̖֚b, qa᷺̯̖֚b, qa᷺̯̖֚b, qa᷺̯̖֚b);
+Test_N(qa᷺̖̰֚b, qa᷺̖̰֚b, qa᷺̖̰֚b, qa᷺̖̰֚b, qa᷺̖̰֚b);
+Test_N(qa᷺̰̖֚b, qa᷺̰̖֚b, qa᷺̰̖֚b, qa᷺̰̖֚b, qa᷺̰̖֚b);
+Test_N(qa᷺̖̱֚b, qa᷺̖̱֚b, qa᷺̖̱֚b, qa᷺̖̱֚b, qa᷺̖̱֚b);
+Test_N(qa᷺̱̖֚b, qa᷺̱̖֚b, qa᷺̱̖֚b, qa᷺̱̖֚b, qa᷺̱̖֚b);
+Test_N(qa᷺̖̲֚b, qa᷺̖̲֚b, qa᷺̖̲֚b, qa᷺̖̲֚b, qa᷺̖̲֚b);
+Test_N(qa᷺̲̖֚b, qa᷺̲̖֚b, qa᷺̲̖֚b, qa᷺̲̖֚b, qa᷺̲̖֚b);
+Test_N(qa᷺̖̳֚b, qa᷺̖̳֚b, qa᷺̖̳֚b, qa᷺̖̳֚b, qa᷺̖̳֚b);
+Test_N(qa᷺̳̖֚b, qa᷺̳̖֚b, qa᷺̳̖֚b, qa᷺̳̖֚b, qa᷺̳̖֚b);
+Test_N(qa̴̴𖿰b, qa̴̴𖿰b, qa̴̴𖿰b, qa̴̴𖿰b, qa̴̴𖿰b);
+Test_N(qa̴̴𖿰b, qa̴̴𖿰b, qa̴̴𖿰b, qa̴̴𖿰b, qa̴̴𖿰b);
+Test_N(qa̴̵𖿰b, qa̴̵𖿰b, qa̴̵𖿰b, qa̴̵𖿰b, qa̴̵𖿰b);
+Test_N(qa̵̴𖿰b, qa̵̴𖿰b, qa̵̴𖿰b, qa̵̴𖿰b, qa̵̴𖿰b);
+Test_N(qa̴̶𖿰b, qa̴̶𖿰b, qa̴̶𖿰b, qa̴̶𖿰b, qa̴̶𖿰b);
+Test_N(qa̶̴𖿰b, qa̶̴𖿰b, qa̶̴𖿰b, qa̶̴𖿰b, qa̶̴𖿰b);
+Test_N(qa̴̷𖿰b, qa̴̷𖿰b, qa̴̷𖿰b, qa̴̷𖿰b, qa̴̷𖿰b);
+Test_N(qa̷̴𖿰b, qa̷̴𖿰b, qa̷̴𖿰b, qa̷̴𖿰b, qa̷̴𖿰b);
+Test_N(qa̴̸𖿰b, qa̴̸𖿰b, qa̴̸𖿰b, qa̴̸𖿰b, qa̴̸𖿰b);
+Test_N(qa̸̴𖿰b, qa̸̴𖿰b, qa̸̴𖿰b, qa̸̴𖿰b, qa̸̴𖿰b);
+Test_N(qa᷺̖̹֚b, qa᷺̖̹֚b, qa᷺̖̹֚b, qa᷺̖̹֚b, qa᷺̖̹֚b);
+Test_N(qa᷺̹̖֚b, qa᷺̹̖֚b, qa᷺̹̖֚b, qa᷺̹̖֚b, qa᷺̹̖֚b);
+Test_N(qa᷺̖̺֚b, qa᷺̖̺֚b, qa᷺̖̺֚b, qa᷺̖̺֚b, qa᷺̖̺֚b);
+Test_N(qa᷺̺̖֚b, qa᷺̺̖֚b, qa᷺̺̖֚b, qa᷺̺̖֚b, qa᷺̺̖֚b);
+Test_N(qa᷺̖̻֚b, qa᷺̖̻֚b, qa᷺̖̻֚b, qa᷺̖̻֚b, qa᷺̖̻֚b);
+Test_N(qa᷺̻̖֚b, qa᷺̻̖֚b, qa᷺̻̖֚b, qa᷺̻̖֚b, qa᷺̻̖֚b);
+Test_N(qa᷺̖̼֚b, qa᷺̖̼֚b, qa᷺̖̼֚b, qa᷺̖̼֚b, qa᷺̖̼֚b);
+Test_N(qa᷺̼̖֚b, qa᷺̼̖֚b, qa᷺̼̖֚b, qa᷺̼̖֚b, qa᷺̼̖֚b);
+Test_N(qà֮̽̕b, qà֮̽̕b, qà֮̽̕b, qà֮̽̕b, qà֮̽̕b);
+Test_N(qa֮̽̀̕b, qa֮̽̀̕b, qa֮̽̀̕b, qa֮̽̀̕b, qa֮̽̀̕b);
+Test_N(qà֮̾̕b, qà֮̾̕b, qà֮̾̕b, qà֮̾̕b, qà֮̾̕b);
+Test_N(qa֮̾̀̕b, qa֮̾̀̕b, qa֮̾̀̕b, qa֮̾̀̕b, qa֮̾̀̕b);
+Test_N(qà֮̿̕b, qà֮̿̕b, qà֮̿̕b, qà֮̿̕b, qà֮̿̕b);
+Test_N(qa֮̿̀̕b, qa֮̿̀̕b, qa֮̿̀̕b, qa֮̿̀̕b, qa֮̿̀̕b);
+Test_N(qà֮̀̕b, qà֮̀̕b, qà֮̀̕b, qà֮̀̕b, qà֮̀̕b);
+Test_N(qà֮̀̕b, qà֮̀̕b, qà֮̀̕b, qà֮̀̕b, qà֮̀̕b);
+Test_N(qà֮́̕b, qà֮́̕b, qà֮́̕b, qà֮́̕b, qà֮́̕b);
+Test_N(qá֮̀̕b, qá֮̀̕b, qá֮̀̕b, qá֮̀̕b, qá֮̀̕b);
+Test_N(qà֮͂̕b, qà֮͂̕b, qà֮͂̕b, qà֮͂̕b, qà֮͂̕b);
+Test_N(qa֮͂̀̕b, qa֮͂̀̕b, qa֮͂̀̕b, qa֮͂̀̕b, qa֮͂̀̕b);
+Test_N(qà֮̓̕b, qà֮̓̕b, qà֮̓̕b, qà֮̓̕b, qà֮̓̕b);
+Test_N(qa֮̓̀̕b, qa֮̓̀̕b, qa֮̓̀̕b, qa֮̓̀̕b, qa֮̓̀̕b);
+Test_N(qà֮̈́̕b, qà֮̈́̕b, qà֮̈́̕b, qà֮̈́̕b, qà֮̈́̕b);
+Test_N(qä֮́̀̕b, qä֮́̀̕b, qä֮́̀̕b, qä֮́̀̕b, qä֮́̀̕b);
+Test_N(qa͝ͅͅb, qa͝ͅͅb, qa͝ͅͅb, qa͝ͅͅb, qa͝ͅͅb);
+Test_N(qa͝ͅͅb, qa͝ͅͅb, qa͝ͅͅb, qa͝ͅͅb, qa͝ͅͅb);
+Test_N(qà֮͆̕b, qà֮͆̕b, qà֮͆̕b, qà֮͆̕b, qà֮͆̕b);
+Test_N(qa֮͆̀̕b, qa֮͆̀̕b, qa֮͆̀̕b, qa֮͆̀̕b, qa֮͆̀̕b);
+Test_N(qa᷺̖͇֚b, qa᷺̖͇֚b, qa᷺̖͇֚b, qa᷺̖͇֚b, qa᷺̖͇֚b);
+Test_N(qa᷺͇̖֚b, qa᷺͇̖֚b, qa᷺͇̖֚b, qa᷺͇̖֚b, qa᷺͇̖֚b);
+Test_N(qa᷺̖͈֚b, qa᷺̖͈֚b, qa᷺̖͈֚b, qa᷺̖͈֚b, qa᷺̖͈֚b);
+Test_N(qa᷺͈̖֚b, qa᷺͈̖֚b, qa᷺͈̖֚b, qa᷺͈̖֚b, qa᷺͈̖֚b);
+Test_N(qa᷺̖͉֚b, qa᷺̖͉֚b, qa᷺̖͉֚b, qa᷺̖͉֚b, qa᷺̖͉֚b);
+Test_N(qa᷺͉̖֚b, qa᷺͉̖֚b, qa᷺͉̖֚b, qa᷺͉̖֚b, qa᷺͉̖֚b);
+Test_N(qà֮͊̕b, qà֮͊̕b, qà֮͊̕b, qà֮͊̕b, qà֮͊̕b);
+Test_N(qa֮͊̀̕b, qa֮͊̀̕b, qa֮͊̀̕b, qa֮͊̀̕b, qa֮͊̀̕b);
+Test_N(qà֮͋̕b, qà֮͋̕b, qà֮͋̕b, qà֮͋̕b, qà֮͋̕b);
+Test_N(qa֮͋̀̕b, qa֮͋̀̕b, qa֮͋̀̕b, qa֮͋̀̕b, qa֮͋̀̕b);
+Test_N(qà֮͌̕b, qà֮͌̕b, qà֮͌̕b, qà֮͌̕b, qà֮͌̕b);
+Test_N(qa֮͌̀̕b, qa֮͌̀̕b, qa֮͌̀̕b, qa֮͌̀̕b, qa֮͌̀̕b);
+Test_N(qa᷺̖͍֚b, qa᷺̖͍֚b, qa᷺̖͍֚b, qa᷺̖͍֚b, qa᷺̖͍֚b);
+Test_N(qa᷺͍̖֚b, qa᷺͍̖֚b, qa᷺͍̖֚b, qa᷺͍̖֚b, qa᷺͍̖֚b);
+Test_N(qa᷺̖͎֚b, qa᷺̖͎֚b, qa᷺̖͎֚b, qa᷺̖͎֚b, qa᷺̖͎֚b);
+Test_N(qa᷺͎̖֚b, qa᷺͎̖֚b, qa᷺͎̖֚b, qa᷺͎̖֚b, qa᷺͎̖֚b);
+Test_N(qà֮͐̕b, qà֮͐̕b, qà֮͐̕b, qà֮͐̕b, qà֮͐̕b);
+Test_N(qa֮͐̀̕b, qa֮͐̀̕b, qa֮͐̀̕b, qa֮͐̀̕b, qa֮͐̀̕b);
+Test_N(qà֮͑̕b, qà֮͑̕b, qà֮͑̕b, qà֮͑̕b, qà֮͑̕b);
+Test_N(qa֮͑̀̕b, qa֮͑̀̕b, qa֮͑̀̕b, qa֮͑̀̕b, qa֮͑̀̕b);
+Test_N(qà֮͒̕b, qà֮͒̕b, qà֮͒̕b, qà֮͒̕b, qà֮͒̕b);
+Test_N(qa֮͒̀̕b, qa֮͒̀̕b, qa֮͒̀̕b, qa֮͒̀̕b, qa֮͒̀̕b);
+Test_N(qa᷺̖͓֚b, qa᷺̖͓֚b, qa᷺̖͓֚b, qa᷺̖͓֚b, qa᷺̖͓֚b);
+Test_N(qa᷺͓̖֚b, qa᷺͓̖֚b, qa᷺͓̖֚b, qa᷺͓̖֚b, qa᷺͓̖֚b);
+Test_N(qa᷺̖͔֚b, qa᷺̖͔֚b, qa᷺̖͔֚b, qa᷺̖͔֚b, qa᷺̖͔֚b);
+Test_N(qa᷺͔̖֚b, qa᷺͔̖֚b, qa᷺͔̖֚b, qa᷺͔̖֚b, qa᷺͔̖֚b);
+Test_N(qa᷺̖͕֚b, qa᷺̖͕֚b, qa᷺̖͕֚b, qa᷺̖͕֚b, qa᷺̖͕֚b);
+Test_N(qa᷺͕̖֚b, qa᷺͕̖֚b, qa᷺͕̖֚b, qa᷺͕̖֚b, qa᷺͕̖֚b);
+Test_N(qa᷺̖͖֚b, qa᷺̖͖֚b, qa᷺̖͖֚b, qa᷺̖͖֚b, qa᷺̖͖֚b);
+Test_N(qa᷺͖̖֚b, qa᷺͖̖֚b, qa᷺͖̖֚b, qa᷺͖̖֚b, qa᷺͖̖֚b);
+Test_N(qà֮͗̕b, qà֮͗̕b, qà֮͗̕b, qà֮͗̕b, qà֮͗̕b);
+Test_N(qa֮͗̀̕b, qa֮͗̀̕b, qa֮͗̀̕b, qa֮͗̀̕b, qa֮͗̀̕b);
+Test_N(qà̕͘͜b, qà̕͘͜b, qà̕͘͜b, qà̕͘͜b, qà̕͘͜b);
+Test_N(qà͘̕͜b, qà͘̕͜b, qà͘̕͜b, qà͘̕͜b, qà͘̕͜b);
+Test_N(qa᷺̖͙֚b, qa᷺̖͙֚b, qa᷺̖͙֚b, qa᷺̖͙֚b, qa᷺̖͙֚b);
+Test_N(qa᷺͙̖֚b, qa᷺͙̖֚b, qa᷺͙̖֚b, qa᷺͙̖֚b, qa᷺͙̖֚b);
+Test_N(qa᷺̖͚֚b, qa᷺̖͚֚b, qa᷺̖͚֚b, qa᷺̖͚֚b, qa᷺̖͚֚b);
+Test_N(qa᷺͚̖֚b, qa᷺͚̖֚b, qa᷺͚̖֚b, qa᷺͚̖֚b, qa᷺͚̖֚b);
+Test_N(qà֮͛̕b, qà֮͛̕b, qà֮͛̕b, qà֮͛̕b, qà֮͛̕b);
+Test_N(qa֮͛̀̕b, qa֮͛̀̕b, qa֮͛̀̕b, qa֮͛̀̕b, qa֮͛̀̕b);
+Test_N(qa̕͜͜͝b, qa̕͜͜͝b, qa̕͜͜͝b, qa̕͜͜͝b, qa̕͜͜͝b);
+Test_N(qa̕͜͜͝b, qa̕͜͜͝b, qa̕͜͜͝b, qa̕͜͜͝b, qa̕͜͜͝b);
+Test_N(qa͜͝͝ͅb, qa͜͝͝ͅb, qa͜͝͝ͅb, qa͜͝͝ͅb, qa͜͝͝ͅb);
+Test_N(qa͜͝͝ͅb, qa͜͝͝ͅb, qa͜͝͝ͅb, qa͜͝͝ͅb, qa͜͝͝ͅb);
+Test_N(qa͜͝͞ͅb, qa͜͝͞ͅb, qa͜͝͞ͅb, qa͜͝͞ͅb, qa͜͝͞ͅb);
+Test_N(qa͜͞͝ͅb, qa͜͞͝ͅb, qa͜͞͝ͅb, qa͜͞͝ͅb, qa͜͞͝ͅb);
+Test_N(qa̕͜͟͝b, qa̕͜͟͝b, qa̕͜͟͝b, qa̕͜͟͝b, qa̕͜͟͝b);
+Test_N(qa̕͟͜͝b, qa̕͟͜͝b, qa̕͟͜͝b, qa̕͟͜͝b, qa̕͟͜͝b);
+Test_N(qa͜͝͠ͅb, qa͜͝͠ͅb, qa͜͝͠ͅb, qa͜͝͠ͅb, qa͜͝͠ͅb);
+Test_N(qa͜͠͝ͅb, qa͜͠͝ͅb, qa͜͠͝ͅb, qa͜͠͝ͅb, qa͜͠͝ͅb);
+Test_N(qa͜͝͡ͅb, qa͜͝͡ͅb, qa͜͝͡ͅb, qa͜͝͡ͅb, qa͜͝͡ͅb);
+Test_N(qa͜͡͝ͅb, qa͜͡͝ͅb, qa͜͡͝ͅb, qa͜͡͝ͅb, qa͜͡͝ͅb);
+Test_N(qa̕͜͢͝b, qa̕͜͢͝b, qa̕͜͢͝b, qa̕͜͢͝b, qa̕͜͢͝b);
+Test_N(qa̕͢͜͝b, qa̕͢͜͝b, qa̕͢͜͝b, qa̕͢͜͝b, qa̕͢͜͝b);
+Test_N(qà֮ͣ̕b, qà֮ͣ̕b, qà֮ͣ̕b, qà֮ͣ̕b, qà֮ͣ̕b);
+Test_N(qa֮ͣ̀̕b, qa֮ͣ̀̕b, qa֮ͣ̀̕b, qa֮ͣ̀̕b, qa֮ͣ̀̕b);
+Test_N(qà֮ͤ̕b, qà֮ͤ̕b, qà֮ͤ̕b, qà֮ͤ̕b, qà֮ͤ̕b);
+Test_N(qa֮ͤ̀̕b, qa֮ͤ̀̕b, qa֮ͤ̀̕b, qa֮ͤ̀̕b, qa֮ͤ̀̕b);
+Test_N(qà֮ͥ̕b, qà֮ͥ̕b, qà֮ͥ̕b, qà֮ͥ̕b, qà֮ͥ̕b);
+Test_N(qa֮ͥ̀̕b, qa֮ͥ̀̕b, qa֮ͥ̀̕b, qa֮ͥ̀̕b, qa֮ͥ̀̕b);
+Test_N(qà֮ͦ̕b, qà֮ͦ̕b, qà֮ͦ̕b, qà֮ͦ̕b, qà֮ͦ̕b);
+Test_N(qa֮ͦ̀̕b, qa֮ͦ̀̕b, qa֮ͦ̀̕b, qa֮ͦ̀̕b, qa֮ͦ̀̕b);
+Test_N(qà֮ͧ̕b, qà֮ͧ̕b, qà֮ͧ̕b, qà֮ͧ̕b, qà֮ͧ̕b);
+Test_N(qa֮ͧ̀̕b, qa֮ͧ̀̕b, qa֮ͧ̀̕b, qa֮ͧ̀̕b, qa֮ͧ̀̕b);
+Test_N(qà֮ͨ̕b, qà֮ͨ̕b, qà֮ͨ̕b, qà֮ͨ̕b, qà֮ͨ̕b);
+Test_N(qa֮ͨ̀̕b, qa֮ͨ̀̕b, qa֮ͨ̀̕b, qa֮ͨ̀̕b, qa֮ͨ̀̕b);
+Test_N(qà֮ͩ̕b, qà֮ͩ̕b, qà֮ͩ̕b, qà֮ͩ̕b, qà֮ͩ̕b);
+Test_N(qa֮ͩ̀̕b, qa֮ͩ̀̕b, qa֮ͩ̀̕b, qa֮ͩ̀̕b, qa֮ͩ̀̕b);
+Test_N(qà֮ͪ̕b, qà֮ͪ̕b, qà֮ͪ̕b, qà֮ͪ̕b, qà֮ͪ̕b);
+Test_N(qa֮ͪ̀̕b, qa֮ͪ̀̕b, qa֮ͪ̀̕b, qa֮ͪ̀̕b, qa֮ͪ̀̕b);
+Test_N(qà֮ͫ̕b, qà֮ͫ̕b, qà֮ͫ̕b, qà֮ͫ̕b, qà֮ͫ̕b);
+Test_N(qa֮ͫ̀̕b, qa֮ͫ̀̕b, qa֮ͫ̀̕b, qa֮ͫ̀̕b, qa֮ͫ̀̕b);
+Test_N(qà֮ͬ̕b, qà֮ͬ̕b, qà֮ͬ̕b, qà֮ͬ̕b, qà֮ͬ̕b);
+Test_N(qa֮ͬ̀̕b, qa֮ͬ̀̕b, qa֮ͬ̀̕b, qa֮ͬ̀̕b, qa֮ͬ̀̕b);
+Test_N(qà֮ͭ̕b, qà֮ͭ̕b, qà֮ͭ̕b, qà֮ͭ̕b, qà֮ͭ̕b);
+Test_N(qa֮ͭ̀̕b, qa֮ͭ̀̕b, qa֮ͭ̀̕b, qa֮ͭ̀̕b, qa֮ͭ̀̕b);
+Test_N(qà֮ͮ̕b, qà֮ͮ̕b, qà֮ͮ̕b, qà֮ͮ̕b, qà֮ͮ̕b);
+Test_N(qa֮ͮ̀̕b, qa֮ͮ̀̕b, qa֮ͮ̀̕b, qa֮ͮ̀̕b, qa֮ͮ̀̕b);
+Test_N(qà֮ͯ̕b, qà֮ͯ̕b, qà֮ͯ̕b, qà֮ͯ̕b, qà֮ͯ̕b);
+Test_N(qa֮ͯ̀̕b, qa֮ͯ̀̕b, qa֮ͯ̀̕b, qa֮ͯ̀̕b, qa֮ͯ̀̕b);
+Test_N(qà֮҃̕b, qà֮҃̕b, qà֮҃̕b, qà֮҃̕b, qà֮҃̕b);
+Test_N(qa֮҃̀̕b, qa֮҃̀̕b, qa֮҃̀̕b, qa֮҃̀̕b, qa֮҃̀̕b);
+Test_N(qà֮҄̕b, qà֮҄̕b, qà֮҄̕b, qà֮҄̕b, qà֮҄̕b);
+Test_N(qa֮҄̀̕b, qa֮҄̀̕b, qa֮҄̀̕b, qa֮҄̀̕b, qa֮҄̀̕b);
+Test_N(qà֮҅̕b, qà֮҅̕b, qà֮҅̕b, qà֮҅̕b, qà֮҅̕b);
+Test_N(qa֮҅̀̕b, qa֮҅̀̕b, qa֮҅̀̕b, qa֮҅̀̕b, qa֮҅̀̕b);
+Test_N(qà֮҆̕b, qà֮҆̕b, qà֮҆̕b, qà֮҆̕b, qà֮҆̕b);
+Test_N(qa֮҆̀̕b, qa֮҆̀̕b, qa֮҆̀̕b, qa֮҆̀̕b, qa֮҆̀̕b);
+Test_N(qà֮҇̕b, qà֮҇̕b, qà֮҇̕b, qà֮҇̕b, qà֮҇̕b);
+Test_N(qa֮҇̀̕b, qa֮҇̀̕b, qa֮҇̀̕b, qa֮҇̀̕b, qa֮҇̀̕b);
+Test_N(qa᷺̖֑֚b, qa᷺̖֑֚b, qa᷺̖֑֚b, qa᷺̖֑֚b, qa᷺̖֑֚b);
+Test_N(qa᷺֑̖֚b, qa᷺֑̖֚b, qa᷺֑̖֚b, qa᷺֑̖֚b, qa᷺֑̖֚b);
+Test_N(qà֮֒̕b, qà֮֒̕b, qà֮֒̕b, qà֮֒̕b, qà֮֒̕b);
+Test_N(qa֮֒̀̕b, qa֮֒̀̕b, qa֮֒̀̕b, qa֮֒̀̕b, qa֮֒̀̕b);
+Test_N(qà֮֓̕b, qà֮֓̕b, qà֮֓̕b, qà֮֓̕b, qà֮֓̕b);
+Test_N(qa֮֓̀̕b, qa֮֓̀̕b, qa֮֓̀̕b, qa֮֓̀̕b, qa֮֓̀̕b);
+Test_N(qà֮֔̕b, qà֮֔̕b, qà֮֔̕b, qà֮֔̕b, qà֮֔̕b);
+Test_N(qa֮֔̀̕b, qa֮֔̀̕b, qa֮֔̀̕b, qa֮֔̀̕b, qa֮֔̀̕b);
+Test_N(qà֮֕̕b, qà֮֕̕b, qà֮֕̕b, qà֮֕̕b, qà֮֕̕b);
+Test_N(qa֮֕̀̕b, qa֮֕̀̕b, qa֮֕̀̕b, qa֮֕̀̕b, qa֮֕̀̕b);
+Test_N(qa᷺̖֖֚b, qa᷺̖֖֚b, qa᷺̖֖֚b, qa᷺̖֖֚b, qa᷺̖֖֚b);
+Test_N(qa᷺֖̖֚b, qa᷺֖̖֚b, qa᷺֖̖֚b, qa᷺֖̖֚b, qa᷺֖̖֚b);
+Test_N(qà֮֗̕b, qà֮֗̕b, qà֮֗̕b, qà֮֗̕b, qà֮֗̕b);
+Test_N(qa֮֗̀̕b, qa֮֗̀̕b, qa֮֗̀̕b, qa֮֗̀̕b, qa֮֗̀̕b);
+Test_N(qà֮֘̕b, qà֮֘̕b, qà֮֘̕b, qà֮֘̕b, qà֮֘̕b);
+Test_N(qa֮֘̀̕b, qa֮֘̀̕b, qa֮֘̀̕b, qa֮֘̀̕b, qa֮֘̀̕b);
+Test_N(qà֮֙̕b, qà֮֙̕b, qà֮֙̕b, qà֮֙̕b, qà֮֙̕b);
+Test_N(qa֮֙̀̕b, qa֮֙̀̕b, qa֮֙̀̕b, qa֮֙̀̕b, qa֮֙̀̕b);
+Test_N(qa̖֚֚〮b, qa̖֚֚〮b, qa̖֚֚〮b, qa̖֚֚〮b, qa̖֚֚〮b);
+Test_N(qa̖֚֚〮b, qa̖֚֚〮b, qa̖֚֚〮b, qa̖֚֚〮b, qa̖֚֚〮b);
+Test_N(qa᷺̖֛֚b, qa᷺̖֛֚b, qa᷺̖֛֚b, qa᷺̖֛֚b, qa᷺̖֛֚b);
+Test_N(qa᷺֛̖֚b, qa᷺֛̖֚b, qa᷺֛̖֚b, qa᷺֛̖֚b, qa᷺֛̖֚b);
+Test_N(qà֮֜̕b, qà֮֜̕b, qà֮֜̕b, qà֮֜̕b, qà֮֜̕b);
+Test_N(qa֮֜̀̕b, qa֮֜̀̕b, qa֮֜̀̕b, qa֮֜̀̕b, qa֮֜̀̕b);
+Test_N(qà֮֝̕b, qà֮֝̕b, qà֮֝̕b, qà֮֝̕b, qà֮֝̕b);
+Test_N(qa֮֝̀̕b, qa֮֝̀̕b, qa֮֝̀̕b, qa֮֝̀̕b, qa֮֝̀̕b);
+Test_N(qà֮֞̕b, qà֮֞̕b, qà֮֞̕b, qà֮֞̕b, qà֮֞̕b);
+Test_N(qa֮֞̀̕b, qa֮֞̀̕b, qa֮֞̀̕b, qa֮֞̀̕b, qa֮֞̀̕b);
+Test_N(qà֮֟̕b, qà֮֟̕b, qà֮֟̕b, qà֮֟̕b, qà֮֟̕b);
+Test_N(qa֮֟̀̕b, qa֮֟̀̕b, qa֮֟̀̕b, qa֮֟̀̕b, qa֮֟̀̕b);
+Test_N(qà֮֠̕b, qà֮֠̕b, qà֮֠̕b, qà֮֠̕b, qà֮֠̕b);
+Test_N(qa֮֠̀̕b, qa֮֠̀̕b, qa֮֠̀̕b, qa֮֠̀̕b, qa֮֠̀̕b);
+Test_N(qà֮֡̕b, qà֮֡̕b, qà֮֡̕b, qà֮֡̕b, qà֮֡̕b);
+Test_N(qa֮֡̀̕b, qa֮֡̀̕b, qa֮֡̀̕b, qa֮֡̀̕b, qa֮֡̀̕b);
+Test_N(qa᷺̖֢֚b, qa᷺̖֢֚b, qa᷺̖֢֚b, qa᷺̖֢֚b, qa᷺̖֢֚b);
+Test_N(qa᷺֢̖֚b, qa᷺֢̖֚b, qa᷺֢̖֚b, qa᷺֢̖֚b, qa᷺֢̖֚b);
+Test_N(qa᷺̖֣֚b, qa᷺̖֣֚b, qa᷺̖֣֚b, qa᷺̖֣֚b, qa᷺̖֣֚b);
+Test_N(qa᷺֣̖֚b, qa᷺֣̖֚b, qa᷺֣̖֚b, qa᷺֣̖֚b, qa᷺֣̖֚b);
+Test_N(qa᷺̖֤֚b, qa᷺̖֤֚b, qa᷺̖֤֚b, qa᷺̖֤֚b, qa᷺̖֤֚b);
+Test_N(qa᷺֤̖֚b, qa᷺֤̖֚b, qa᷺֤̖֚b, qa᷺֤̖֚b, qa᷺֤̖֚b);
+Test_N(qa᷺̖֥֚b, qa᷺̖֥֚b, qa᷺̖֥֚b, qa᷺̖֥֚b, qa᷺̖֥֚b);
+Test_N(qa᷺֥̖֚b, qa᷺֥̖֚b, qa᷺֥̖֚b, qa᷺֥̖֚b, qa᷺֥̖֚b);
+Test_N(qa᷺̖֦֚b, qa᷺̖֦֚b, qa᷺̖֦֚b, qa᷺̖֦֚b, qa᷺̖֦֚b);
+Test_N(qa᷺֦̖֚b, qa᷺֦̖֚b, qa᷺֦̖֚b, qa᷺֦̖֚b, qa᷺֦̖֚b);
+Test_N(qa᷺̖֧֚b, qa᷺̖֧֚b, qa᷺̖֧֚b, qa᷺̖֧֚b, qa᷺̖֧֚b);
+Test_N(qa᷺֧̖֚b, qa᷺֧̖֚b, qa᷺֧̖֚b, qa᷺֧̖֚b, qa᷺֧̖֚b);
+Test_N(qà֮֨̕b, qà֮֨̕b, qà֮֨̕b, qà֮֨̕b, qà֮֨̕b);
+Test_N(qa֮֨̀̕b, qa֮֨̀̕b, qa֮֨̀̕b, qa֮֨̀̕b, qa֮֨̀̕b);
+Test_N(qà֮֩̕b, qà֮֩̕b, qà֮֩̕b, qà֮֩̕b, qà֮֩̕b);
+Test_N(qa֮֩̀̕b, qa֮֩̀̕b, qa֮֩̀̕b, qa֮֩̀̕b, qa֮֩̀̕b);
+Test_N(qa᷺̖֪֚b, qa᷺̖֪֚b, qa᷺̖֪֚b, qa᷺̖֪֚b, qa᷺̖֪֚b);
+Test_N(qa᷺֪̖֚b, qa᷺֪̖֚b, qa᷺֪̖֚b, qa᷺֪̖֚b, qa᷺֪̖֚b);
+Test_N(qà֮֫̕b, qà֮֫̕b, qà֮֫̕b, qà֮֫̕b, qà֮֫̕b);
+Test_N(qa֮֫̀̕b, qa֮֫̀̕b, qa֮֫̀̕b, qa֮֫̀̕b, qa֮֫̀̕b);
+Test_N(qà֮֬̕b, qà֮֬̕b, qà֮֬̕b, qà֮֬̕b, qà֮֬̕b);
+Test_N(qa֮֬̀̕b, qa֮֬̀̕b, qa֮֬̀̕b, qa֮֬̀̕b, qa֮֬̀̕b);
+Test_N(qa̖֚֭〮b, qa̖֚֭〮b, qa̖֚֭〮b, qa̖֚֭〮b, qa̖֚֭〮b);
+Test_N(qa̖֭֚〮b, qa̖֭֚〮b, qa̖֭֚〮b, qa̖֭֚〮b, qa̖֭֚〮b);
+Test_N(qà𝅭֮֮b, qà𝅭֮֮b, qà𝅭֮֮b, qà𝅭֮֮b, qà𝅭֮֮b);
+Test_N(qà𝅭֮֮b, qà𝅭֮֮b, qà𝅭֮֮b, qà𝅭֮֮b, qà𝅭֮֮b);
+Test_N(qà֮֯̕b, qà֮֯̕b, qà֮֯̕b, qà֮֯̕b, qà֮֯̕b);
+Test_N(qa֮֯̀̕b, qa֮֯̀̕b, qa֮֯̀̕b, qa֮֯̀̕b, qa֮֯̀̕b);
+Test_N(qa्ְְֱb, qa्ְְֱb, qa्ְְֱb, qa्ְְֱb, qa्ְְֱb);
+Test_N(qa्ְְֱb, qa्ְְֱb, qa्ְְֱb, qa्ְְֱb, qa्ְְֱb);
+Test_N(qaְֱֱֲb, qaְֱֱֲb, qaְֱֱֲb, qaְֱֱֲb, qaְֱֱֲb);
+Test_N(qaְֱֱֲb, qaְֱֱֲb, qaְֱֱֲb, qaְֱֱֲb, qaְֱֱֲb);
+Test_N(qaֱֲֲֳb, qaֱֲֲֳb, qaֱֲֲֳb, qaֱֲֲֳb, qaֱֲֲֳb);
+Test_N(qaֱֲֲֳb, qaֱֲֲֳb, qaֱֲֲֳb, qaֱֲֲֳb, qaֱֲֲֳb);
+Test_N(qaֲֳֳִb, qaֲֳֳִb, qaֲֳֳִb, qaֲֳֳִb, qaֲֳֳִb);
+Test_N(qaֲֳֳִb, qaֲֳֳִb, qaֲֳֳִb, qaֲֳֳִb, qaֲֳֳִb);
+Test_N(qaֳִִֵb, qaֳִִֵb, qaֳִִֵb, qaֳִִֵb, qaֳִִֵb);
+Test_N(qaֳִִֵb, qaֳִִֵb, qaֳִִֵb, qaֳִִֵb, qaֳִִֵb);
+Test_N(qaִֵֵֶb, qaִֵֵֶb, qaִֵֵֶb, qaִֵֵֶb, qaִֵֵֶb);
+Test_N(qaִֵֵֶb, qaִֵֵֶb, qaִֵֵֶb, qaִֵֵֶb, qaִֵֵֶb);
+Test_N(qaֵֶֶַb, qaֵֶֶַb, qaֵֶֶַb, qaֵֶֶַb, qaֵֶֶַb);
+Test_N(qaֵֶֶַb, qaֵֶֶַb, qaֵֶֶַb, qaֵֶֶַb, qaֵֶֶַb);
+Test_N(qaֶַַָb, qaֶַַָb, qaֶַַָb, qaֶַַָb, qaֶַַָb);
+Test_N(qaֶַַָb, qaֶַַָb, qaֶַַָb, qaֶַַָb, qaֶַַָb);
+Test_N(qaַָָֹb, qaַָָֹb, qaַָָֹb, qaַָָֹb, qaַָָֹb);
+Test_N(qaַָָֹb, qaַָָֹb, qaַָָֹb, qaַָָֹb, qaַָָֹb);
+Test_N(qaָֹֹֻb, qaָֹֹֻb, qaָֹֹֻb, qaָֹֹֻb, qaָֹֹֻb);
+Test_N(qaָֹֹֻb, qaָֹֹֻb, qaָֹֹֻb, qaָֹֹֻb, qaָֹֹֻb);
+Test_N(qaָֹֺֻb, qaָֹֺֻb, qaָֹֺֻb, qaָֹֺֻb, qaָֹֺֻb);
+Test_N(qaָֺֹֻb, qaָֺֹֻb, qaָֺֹֻb, qaָֺֹֻb, qaָֺֹֻb);
+Test_N(qaֹֻֻּb, qaֹֻֻּb, qaֹֻֻּb, qaֹֻֻּb, qaֹֻֻּb);
+Test_N(qaֹֻֻּb, qaֹֻֻּb, qaֹֻֻּb, qaֹֻֻּb, qaֹֻֻּb);
+Test_N(qaֻּּֽb, qaֻּּֽb, qaֻּּֽb, qaֻּּֽb, qaֻּּֽb);
+Test_N(qaֻּּֽb, qaֻּּֽb, qaֻּּֽb, qaֻּּֽb, qaֻּּֽb);
+Test_N(qaּֽֽֿb, qaּֽֽֿb, qaּֽֽֿb, qaּֽֽֿb, qaּֽֽֿb);
+Test_N(qaּֽֽֿb, qaּֽֽֿb, qaּֽֽֿb, qaּֽֽֿb, qaּֽֽֿb);
+Test_N(qaֽֿֿׁb, qaֽֿֿׁb, qaֽֿֿׁb, qaֽֿֿׁb, qaֽֿֿׁb);
+Test_N(qaֽֿֿׁb, qaֽֿֿׁb, qaֽֿֿׁb, qaֽֿֿׁb, qaֽֿֿׁb);
+Test_N(qaֿׁׁׂb, qaֿׁׁׂb, qaֿׁׁׂb, qaֿׁׁׂb, qaֿׁׁׂb);
+Test_N(qaֿׁׁׂb, qaֿׁׁׂb, qaֿׁׁׂb, qaֿׁׁׂb, qaֿׁׁׂb);
+Test_N(qaׁׂׂﬞb, qaׁׂׂﬞb, qaׁׂׂﬞb, qaׁׂׂﬞb, qaׁׂׂﬞb);
+Test_N(qaׁׂׂﬞb, qaׁׂׂﬞb, qaׁׂׂﬞb, qaׁׂׂﬞb, qaׁׂׂﬞb);
+Test_N(qà֮ׄ̕b, qà֮ׄ̕b, qà֮ׄ̕b, qà֮ׄ̕b, qà֮ׄ̕b);
+Test_N(qa֮ׄ̀̕b, qa֮ׄ̀̕b, qa֮ׄ̀̕b, qa֮ׄ̀̕b, qa֮ׄ̀̕b);
+Test_N(qa᷺̖ׅ֚b, qa᷺̖ׅ֚b, qa᷺̖ׅ֚b, qa᷺̖ׅ֚b, qa᷺̖ׅ֚b);
+Test_N(qa᷺ׅ̖֚b, qa᷺ׅ̖֚b, qa᷺ׅ̖֚b, qa᷺ׅ̖֚b, qa᷺ׅ̖֚b);
+Test_N(qaַָׇֹb, qaַָׇֹb, qaַָׇֹb, qaַָׇֹb, qaַָׇֹb);
+Test_N(qaַׇָֹb, qaַׇָֹb, qaַׇָֹb, qaַׇָֹb, qaַׇָֹb);
+Test_N(qà֮ؐ̕b, qà֮ؐ̕b, qà֮ؐ̕b, qà֮ؐ̕b, qà֮ؐ̕b);
+Test_N(qa֮ؐ̀̕b, qa֮ؐ̀̕b, qa֮ؐ̀̕b, qa֮ؐ̀̕b, qa֮ؐ̀̕b);
+Test_N(qà֮ؑ̕b, qà֮ؑ̕b, qà֮ؑ̕b, qà֮ؑ̕b, qà֮ؑ̕b);
+Test_N(qa֮ؑ̀̕b, qa֮ؑ̀̕b, qa֮ؑ̀̕b, qa֮ؑ̀̕b, qa֮ؑ̀̕b);
+Test_N(qà֮ؒ̕b, qà֮ؒ̕b, qà֮ؒ̕b, qà֮ؒ̕b, qà֮ؒ̕b);
+Test_N(qa֮ؒ̀̕b, qa֮ؒ̀̕b, qa֮ؒ̀̕b, qa֮ؒ̀̕b, qa֮ؒ̀̕b);
+Test_N(qà֮ؓ̕b, qà֮ؓ̕b, qà֮ؓ̕b, qà֮ؓ̕b, qà֮ؓ̕b);
+Test_N(qa֮ؓ̀̕b, qa֮ؓ̀̕b, qa֮ؓ̀̕b, qa֮ؓ̀̕b, qa֮ؓ̀̕b);
+Test_N(qà֮ؔ̕b, qà֮ؔ̕b, qà֮ؔ̕b, qà֮ؔ̕b, qà֮ؔ̕b);
+Test_N(qa֮ؔ̀̕b, qa֮ؔ̀̕b, qa֮ؔ̀̕b, qa֮ؔ̀̕b, qa֮ؔ̀̕b);
+Test_N(qà֮ؕ̕b, qà֮ؕ̕b, qà֮ؕ̕b, qà֮ؕ̕b, qà֮ؕ̕b);
+Test_N(qa֮ؕ̀̕b, qa֮ؕ̀̕b, qa֮ؕ̀̕b, qa֮ؕ̀̕b, qa֮ؕ̀̕b);
+Test_N(qà֮ؖ̕b, qà֮ؖ̕b, qà֮ؖ̕b, qà֮ؖ̕b, qà֮ؖ̕b);
+Test_N(qa֮ؖ̀̕b, qa֮ؖ̀̕b, qa֮ؖ̀̕b, qa֮ؖ̀̕b, qa֮ؖ̀̕b);
+Test_N(qà֮ؗ̕b, qà֮ؗ̕b, qà֮ؗ̕b, qà֮ؗ̕b, qà֮ؗ̕b);
+Test_N(qa֮ؗ̀̕b, qa֮ؗ̀̕b, qa֮ؗ̀̕b, qa֮ؗ̀̕b, qa֮ؗ̀̕b);
+Test_N(qaٍؘؘؙb, qaٍؘؘؙb, qaٍؘؘؙb, qaٍؘؘؙb, qaٍؘؘؙb);
+Test_N(qaٍؘؘؙb, qaٍؘؘؙb, qaٍؘؘؙb, qaٍؘؘؙb, qaٍؘؘؙb);
+Test_N(qaؘؙؙؚb, qaؘؙؙؚb, qaؘؙؙؚb, qaؘؙؙؚb, qaؘؙؙؚb);
+Test_N(qaؘؙؙؚb, qaؘؙؙؚb, qaؘؙؙؚb, qaؘؙؙؚb, qaؘؙؙؚb);
+Test_N(qaؙؚؚّb, qaؙؚؚّb, qaؙؚؚّb, qaؙؚؚّb, qaؙؚؚّb);
+Test_N(qaؙؚؚّb, qaؙؚؚّb, qaؙؚؚّb, qaؙؚؚّb, qaؙؚؚّb);
+Test_N(qaﬞًًٌb, qaﬞًًٌb, qaﬞًًٌb, qaﬞًًٌb, qaﬞًًٌb);
+Test_N(qaﬞًًٌb, qaﬞًًٌb, qaﬞًًٌb, qaﬞًًٌb, qaﬞًًٌb);
+Test_N(qaًٌٌٍb, qaًٌٌٍb, qaًٌٌٍb, qaًٌٌٍb, qaًٌٌٍb);
+Test_N(qaًٌٌٍb, qaًٌٌٍb, qaًٌٌٍb, qaًٌٌٍb, qaًٌٌٍb);
+Test_N(qaٌٍٍؘb, qaٌٍٍؘb, qaٌٍٍؘb, qaٌٍٍؘb, qaٌٍٍؘb);
+Test_N(qaٌٍٍؘb, qaٌٍٍؘb, qaٌٍٍؘb, qaٌٍٍؘb, qaٌٍٍؘb);
+Test_N(qaٍؘَؙb, qaٍؘَؙb, qaٍؘَؙb, qaٍؘَؙb, qaٍؘَؙb);
+Test_N(qaٍَؘؙb, qaٍَؘؙb, qaٍَؘؙb, qaٍَؘؙb, qaٍَؘؙb);
+Test_N(qaؘؙُؚb, qaؘؙُؚb, qaؘؙُؚb, qaؘؙُؚb, qaؘؙُؚb);
+Test_N(qaؘُؙؚb, qaؘُؙؚb, qaؘُؙؚb, qaؘُؙؚb, qaؘُؙؚb);
+Test_N(qaؙؚِّb, qaؙؚِّb, qaؙؚِّb, qaؙؚِّb, qaؙؚِّb);
+Test_N(qaؙِؚّb, qaؙِؚّb, qaؙِؚّb, qaؙِؚّb, qaؙِؚّb);
+Test_N(qaؚّّْb, qaؚّّْb, qaؚّّْb, qaؚّّْb, qaؚّّْb);
+Test_N(qaؚّّْb, qaؚّّْb, qaؚّّْb, qaؚّّْb, qaؚّّْb);
+Test_N(qaّْْٰb, qaّْْٰb, qaّْْٰb, qaّْْٰb, qaّْْٰb);
+Test_N(qaّْْٰb, qaّْْٰb, qaّْْٰb, qaّْْٰb, qaّْْٰb);
+Test_N(qà֮ٓ̕b, qà֮ٓ̕b, qà֮ٓ̕b, qà֮ٓ̕b, qà֮ٓ̕b);
+Test_N(qa֮ٓ̀̕b, qa֮ٓ̀̕b, qa֮ٓ̀̕b, qa֮ٓ̀̕b, qa֮ٓ̀̕b);
+Test_N(qà֮ٔ̕b, qà֮ٔ̕b, qà֮ٔ̕b, qà֮ٔ̕b, qà֮ٔ̕b);
+Test_N(qa֮ٔ̀̕b, qa֮ٔ̀̕b, qa֮ٔ̀̕b, qa֮ٔ̀̕b, qa֮ٔ̀̕b);
+Test_N(qa᷺̖ٕ֚b, qa᷺̖ٕ֚b, qa᷺̖ٕ֚b, qa᷺̖ٕ֚b, qa᷺̖ٕ֚b);
+Test_N(qa᷺ٕ̖֚b, qa᷺ٕ̖֚b, qa᷺ٕ̖֚b, qa᷺ٕ̖֚b, qa᷺ٕ̖֚b);
+Test_N(qa᷺̖ٖ֚b, qa᷺̖ٖ֚b, qa᷺̖ٖ֚b, qa᷺̖ٖ֚b, qa᷺̖ٖ֚b);
+Test_N(qa᷺ٖ̖֚b, qa᷺ٖ̖֚b, qa᷺ٖ̖֚b, qa᷺ٖ̖֚b, qa᷺ٖ̖֚b);
+Test_N(qà֮ٗ̕b, qà֮ٗ̕b, qà֮ٗ̕b, qà֮ٗ̕b, qà֮ٗ̕b);
+Test_N(qa֮ٗ̀̕b, qa֮ٗ̀̕b, qa֮ٗ̀̕b, qa֮ٗ̀̕b, qa֮ٗ̀̕b);
+Test_N(qà֮٘̕b, qà֮٘̕b, qà֮٘̕b, qà֮٘̕b, qà֮٘̕b);
+Test_N(qa֮٘̀̕b, qa֮٘̀̕b, qa֮٘̀̕b, qa֮٘̀̕b, qa֮٘̀̕b);
+Test_N(qà֮ٙ̕b, qà֮ٙ̕b, qà֮ٙ̕b, qà֮ٙ̕b, qà֮ٙ̕b);
+Test_N(qa֮ٙ̀̕b, qa֮ٙ̀̕b, qa֮ٙ̀̕b, qa֮ٙ̀̕b, qa֮ٙ̀̕b);
+Test_N(qà֮ٚ̕b, qà֮ٚ̕b, qà֮ٚ̕b, qà֮ٚ̕b, qà֮ٚ̕b);
+Test_N(qa֮ٚ̀̕b, qa֮ٚ̀̕b, qa֮ٚ̀̕b, qa֮ٚ̀̕b, qa֮ٚ̀̕b);
+Test_N(qà֮ٛ̕b, qà֮ٛ̕b, qà֮ٛ̕b, qà֮ٛ̕b, qà֮ٛ̕b);
+Test_N(qa֮ٛ̀̕b, qa֮ٛ̀̕b, qa֮ٛ̀̕b, qa֮ٛ̀̕b, qa֮ٛ̀̕b);
+Test_N(qa᷺̖ٜ֚b, qa᷺̖ٜ֚b, qa᷺̖ٜ֚b, qa᷺̖ٜ֚b, qa᷺̖ٜ֚b);
+Test_N(qa᷺ٜ̖֚b, qa᷺ٜ̖֚b, qa᷺ٜ̖֚b, qa᷺ٜ̖֚b, qa᷺ٜ̖֚b);
+Test_N(qà֮ٝ̕b, qà֮ٝ̕b, qà֮ٝ̕b, qà֮ٝ̕b, qà֮ٝ̕b);
+Test_N(qa֮ٝ̀̕b, qa֮ٝ̀̕b, qa֮ٝ̀̕b, qa֮ٝ̀̕b, qa֮ٝ̀̕b);
+Test_N(qà֮ٞ̕b, qà֮ٞ̕b, qà֮ٞ̕b, qà֮ٞ̕b, qà֮ٞ̕b);
+Test_N(qa֮ٞ̀̕b, qa֮ٞ̀̕b, qa֮ٞ̀̕b, qa֮ٞ̀̕b, qa֮ٞ̀̕b);
+Test_N(qa᷺̖ٟ֚b, qa᷺̖ٟ֚b, qa᷺̖ٟ֚b, qa᷺̖ٟ֚b, qa᷺̖ٟ֚b);
+Test_N(qa᷺ٟ̖֚b, qa᷺ٟ̖֚b, qa᷺ٟ̖֚b, qa᷺ٟ̖֚b, qa᷺ٟ̖֚b);
+Test_N(qaْٰٰܑb, qaْٰٰܑb, qaْٰٰܑb, qaْٰٰܑb, qaْٰٰܑb);
+Test_N(qaْٰٰܑb, qaْٰٰܑb, qaْٰٰܑb, qaْٰٰܑb, qaْٰٰܑb);
+Test_N(qà֮ۖ̕b, qà֮ۖ̕b, qà֮ۖ̕b, qà֮ۖ̕b, qà֮ۖ̕b);
+Test_N(qa֮ۖ̀̕b, qa֮ۖ̀̕b, qa֮ۖ̀̕b, qa֮ۖ̀̕b, qa֮ۖ̀̕b);
+Test_N(qà֮ۗ̕b, qà֮ۗ̕b, qà֮ۗ̕b, qà֮ۗ̕b, qà֮ۗ̕b);
+Test_N(qa֮ۗ̀̕b, qa֮ۗ̀̕b, qa֮ۗ̀̕b, qa֮ۗ̀̕b, qa֮ۗ̀̕b);
+Test_N(qà֮ۘ̕b, qà֮ۘ̕b, qà֮ۘ̕b, qà֮ۘ̕b, qà֮ۘ̕b);
+Test_N(qa֮ۘ̀̕b, qa֮ۘ̀̕b, qa֮ۘ̀̕b, qa֮ۘ̀̕b, qa֮ۘ̀̕b);
+Test_N(qà֮ۙ̕b, qà֮ۙ̕b, qà֮ۙ̕b, qà֮ۙ̕b, qà֮ۙ̕b);
+Test_N(qa֮ۙ̀̕b, qa֮ۙ̀̕b, qa֮ۙ̀̕b, qa֮ۙ̀̕b, qa֮ۙ̀̕b);
+Test_N(qà֮ۚ̕b, qà֮ۚ̕b, qà֮ۚ̕b, qà֮ۚ̕b, qà֮ۚ̕b);
+Test_N(qa֮ۚ̀̕b, qa֮ۚ̀̕b, qa֮ۚ̀̕b, qa֮ۚ̀̕b, qa֮ۚ̀̕b);
+Test_N(qà֮ۛ̕b, qà֮ۛ̕b, qà֮ۛ̕b, qà֮ۛ̕b, qà֮ۛ̕b);
+Test_N(qa֮ۛ̀̕b, qa֮ۛ̀̕b, qa֮ۛ̀̕b, qa֮ۛ̀̕b, qa֮ۛ̀̕b);
+Test_N(qà֮ۜ̕b, qà֮ۜ̕b, qà֮ۜ̕b, qà֮ۜ̕b, qà֮ۜ̕b);
+Test_N(qa֮ۜ̀̕b, qa֮ۜ̀̕b, qa֮ۜ̀̕b, qa֮ۜ̀̕b, qa֮ۜ̀̕b);
+Test_N(qà֮۟̕b, qà֮۟̕b, qà֮۟̕b, qà֮۟̕b, qà֮۟̕b);
+Test_N(qa֮۟̀̕b, qa֮۟̀̕b, qa֮۟̀̕b, qa֮۟̀̕b, qa֮۟̀̕b);
+Test_N(qà֮۠̕b, qà֮۠̕b, qà֮۠̕b, qà֮۠̕b, qà֮۠̕b);
+Test_N(qa֮۠̀̕b, qa֮۠̀̕b, qa֮۠̀̕b, qa֮۠̀̕b, qa֮۠̀̕b);
+Test_N(qà֮ۡ̕b, qà֮ۡ̕b, qà֮ۡ̕b, qà֮ۡ̕b, qà֮ۡ̕b);
+Test_N(qa֮ۡ̀̕b, qa֮ۡ̀̕b, qa֮ۡ̀̕b, qa֮ۡ̀̕b, qa֮ۡ̀̕b);
+Test_N(qà֮ۢ̕b, qà֮ۢ̕b, qà֮ۢ̕b, qà֮ۢ̕b, qà֮ۢ̕b);
+Test_N(qa֮ۢ̀̕b, qa֮ۢ̀̕b, qa֮ۢ̀̕b, qa֮ۢ̀̕b, qa֮ۢ̀̕b);
+Test_N(qa᷺̖ۣ֚b, qa᷺̖ۣ֚b, qa᷺̖ۣ֚b, qa᷺̖ۣ֚b, qa᷺̖ۣ֚b);
+Test_N(qa᷺ۣ̖֚b, qa᷺ۣ̖֚b, qa᷺ۣ̖֚b, qa᷺ۣ̖֚b, qa᷺ۣ̖֚b);
+Test_N(qà֮ۤ̕b, qà֮ۤ̕b, qà֮ۤ̕b, qà֮ۤ̕b, qà֮ۤ̕b);
+Test_N(qa֮ۤ̀̕b, qa֮ۤ̀̕b, qa֮ۤ̀̕b, qa֮ۤ̀̕b, qa֮ۤ̀̕b);
+Test_N(qà֮ۧ̕b, qà֮ۧ̕b, qà֮ۧ̕b, qà֮ۧ̕b, qà֮ۧ̕b);
+Test_N(qa֮ۧ̀̕b, qa֮ۧ̀̕b, qa֮ۧ̀̕b, qa֮ۧ̀̕b, qa֮ۧ̀̕b);
+Test_N(qà֮ۨ̕b, qà֮ۨ̕b, qà֮ۨ̕b, qà֮ۨ̕b, qà֮ۨ̕b);
+Test_N(qa֮ۨ̀̕b, qa֮ۨ̀̕b, qa֮ۨ̀̕b, qa֮ۨ̀̕b, qa֮ۨ̀̕b);
+Test_N(qa᷺̖۪֚b, qa᷺̖۪֚b, qa᷺̖۪֚b, qa᷺̖۪֚b, qa᷺̖۪֚b);
+Test_N(qa᷺۪̖֚b, qa᷺۪̖֚b, qa᷺۪̖֚b, qa᷺۪̖֚b, qa᷺۪̖֚b);
+Test_N(qà֮۫̕b, qà֮۫̕b, qà֮۫̕b, qà֮۫̕b, qà֮۫̕b);
+Test_N(qa֮۫̀̕b, qa֮۫̀̕b, qa֮۫̀̕b, qa֮۫̀̕b, qa֮۫̀̕b);
+Test_N(qà֮۬̕b, qà֮۬̕b, qà֮۬̕b, qà֮۬̕b, qà֮۬̕b);
+Test_N(qa֮۬̀̕b, qa֮۬̀̕b, qa֮۬̀̕b, qa֮۬̀̕b, qa֮۬̀̕b);
+Test_N(qa᷺̖ۭ֚b, qa᷺̖ۭ֚b, qa᷺̖ۭ֚b, qa᷺̖ۭ֚b, qa᷺̖ۭ֚b);
+Test_N(qa᷺ۭ̖֚b, qa᷺ۭ̖֚b, qa᷺ۭ̖֚b, qa᷺ۭ̖֚b, qa᷺ۭ̖֚b);
+Test_N(qaٰܑܑౕb, qaٰܑܑౕb, qaٰܑܑౕb, qaٰܑܑౕb, qaٰܑܑౕb);
+Test_N(qaٰܑܑౕb, qaٰܑܑౕb, qaٰܑܑౕb, qaٰܑܑౕb, qaٰܑܑౕb);
+Test_N(qà֮ܰ̕b, qà֮ܰ̕b, qà֮ܰ̕b, qà֮ܰ̕b, qà֮ܰ̕b);
+Test_N(qa֮ܰ̀̕b, qa֮ܰ̀̕b, qa֮ܰ̀̕b, qa֮ܰ̀̕b, qa֮ܰ̀̕b);
+Test_N(qa᷺̖ܱ֚b, qa᷺̖ܱ֚b, qa᷺̖ܱ֚b, qa᷺̖ܱ֚b, qa᷺̖ܱ֚b);
+Test_N(qa᷺ܱ̖֚b, qa᷺ܱ̖֚b, qa᷺ܱ̖֚b, qa᷺ܱ̖֚b, qa᷺ܱ̖֚b);
+Test_N(qà֮ܲ̕b, qà֮ܲ̕b, qà֮ܲ̕b, qà֮ܲ̕b, qà֮ܲ̕b);
+Test_N(qa֮ܲ̀̕b, qa֮ܲ̀̕b, qa֮ܲ̀̕b, qa֮ܲ̀̕b, qa֮ܲ̀̕b);
+Test_N(qà֮ܳ̕b, qà֮ܳ̕b, qà֮ܳ̕b, qà֮ܳ̕b, qà֮ܳ̕b);
+Test_N(qa֮ܳ̀̕b, qa֮ܳ̀̕b, qa֮ܳ̀̕b, qa֮ܳ̀̕b, qa֮ܳ̀̕b);
+Test_N(qa᷺̖ܴ֚b, qa᷺̖ܴ֚b, qa᷺̖ܴ֚b, qa᷺̖ܴ֚b, qa᷺̖ܴ֚b);
+Test_N(qa᷺ܴ̖֚b, qa᷺ܴ̖֚b, qa᷺ܴ̖֚b, qa᷺ܴ̖֚b, qa᷺ܴ̖֚b);
+Test_N(qà֮ܵ̕b, qà֮ܵ̕b, qà֮ܵ̕b, qà֮ܵ̕b, qà֮ܵ̕b);
+Test_N(qa֮ܵ̀̕b, qa֮ܵ̀̕b, qa֮ܵ̀̕b, qa֮ܵ̀̕b, qa֮ܵ̀̕b);
+Test_N(qà֮ܶ̕b, qà֮ܶ̕b, qà֮ܶ̕b, qà֮ܶ̕b, qà֮ܶ̕b);
+Test_N(qa֮ܶ̀̕b, qa֮ܶ̀̕b, qa֮ܶ̀̕b, qa֮ܶ̀̕b, qa֮ܶ̀̕b);
+Test_N(qa᷺̖ܷ֚b, qa᷺̖ܷ֚b, qa᷺̖ܷ֚b, qa᷺̖ܷ֚b, qa᷺̖ܷ֚b);
+Test_N(qa᷺ܷ̖֚b, qa᷺ܷ̖֚b, qa᷺ܷ̖֚b, qa᷺ܷ̖֚b, qa᷺ܷ̖֚b);
+Test_N(qa᷺̖ܸ֚b, qa᷺̖ܸ֚b, qa᷺̖ܸ֚b, qa᷺̖ܸ֚b, qa᷺̖ܸ֚b);
+Test_N(qa᷺ܸ̖֚b, qa᷺ܸ̖֚b, qa᷺ܸ̖֚b, qa᷺ܸ̖֚b, qa᷺ܸ̖֚b);
+Test_N(qa᷺̖ܹ֚b, qa᷺̖ܹ֚b, qa᷺̖ܹ֚b, qa᷺̖ܹ֚b, qa᷺̖ܹ֚b);
+Test_N(qa᷺ܹ̖֚b, qa᷺ܹ̖֚b, qa᷺ܹ̖֚b, qa᷺ܹ̖֚b, qa᷺ܹ̖֚b);
+Test_N(qà֮ܺ̕b, qà֮ܺ̕b, qà֮ܺ̕b, qà֮ܺ̕b, qà֮ܺ̕b);
+Test_N(qa֮ܺ̀̕b, qa֮ܺ̀̕b, qa֮ܺ̀̕b, qa֮ܺ̀̕b, qa֮ܺ̀̕b);
+Test_N(qa᷺̖ܻ֚b, qa᷺̖ܻ֚b, qa᷺̖ܻ֚b, qa᷺̖ܻ֚b, qa᷺̖ܻ֚b);
+Test_N(qa᷺ܻ̖֚b, qa᷺ܻ̖֚b, qa᷺ܻ̖֚b, qa᷺ܻ̖֚b, qa᷺ܻ̖֚b);
+Test_N(qa᷺̖ܼ֚b, qa᷺̖ܼ֚b, qa᷺̖ܼ֚b, qa᷺̖ܼ֚b, qa᷺̖ܼ֚b);
+Test_N(qa᷺ܼ̖֚b, qa᷺ܼ̖֚b, qa᷺ܼ̖֚b, qa᷺ܼ̖֚b, qa᷺ܼ̖֚b);
+Test_N(qà֮ܽ̕b, qà֮ܽ̕b, qà֮ܽ̕b, qà֮ܽ̕b, qà֮ܽ̕b);
+Test_N(qa֮ܽ̀̕b, qa֮ܽ̀̕b, qa֮ܽ̀̕b, qa֮ܽ̀̕b, qa֮ܽ̀̕b);
+Test_N(qa᷺̖ܾ֚b, qa᷺̖ܾ֚b, qa᷺̖ܾ֚b, qa᷺̖ܾ֚b, qa᷺̖ܾ֚b);
+Test_N(qa᷺ܾ̖֚b, qa᷺ܾ̖֚b, qa᷺ܾ̖֚b, qa᷺ܾ̖֚b, qa᷺ܾ̖֚b);
+Test_N(qà֮ܿ̕b, qà֮ܿ̕b, qà֮ܿ̕b, qà֮ܿ̕b, qà֮ܿ̕b);
+Test_N(qa֮ܿ̀̕b, qa֮ܿ̀̕b, qa֮ܿ̀̕b, qa֮ܿ̀̕b, qa֮ܿ̀̕b);
+Test_N(qà֮݀̕b, qà֮݀̕b, qà֮݀̕b, qà֮݀̕b, qà֮݀̕b);
+Test_N(qa֮݀̀̕b, qa֮݀̀̕b, qa֮݀̀̕b, qa֮݀̀̕b, qa֮݀̀̕b);
+Test_N(qà֮݁̕b, qà֮݁̕b, qà֮݁̕b, qà֮݁̕b, qà֮݁̕b);
+Test_N(qa֮݁̀̕b, qa֮݁̀̕b, qa֮݁̀̕b, qa֮݁̀̕b, qa֮݁̀̕b);
+Test_N(qa᷺̖݂֚b, qa᷺̖݂֚b, qa᷺̖݂֚b, qa᷺̖݂֚b, qa᷺̖݂֚b);
+Test_N(qa᷺݂̖֚b, qa᷺݂̖֚b, qa᷺݂̖֚b, qa᷺݂̖֚b, qa᷺݂̖֚b);
+Test_N(qà֮݃̕b, qà֮݃̕b, qà֮݃̕b, qà֮݃̕b, qà֮݃̕b);
+Test_N(qa֮݃̀̕b, qa֮݃̀̕b, qa֮݃̀̕b, qa֮݃̀̕b, qa֮݃̀̕b);
+Test_N(qa᷺̖݄֚b, qa᷺̖݄֚b, qa᷺̖݄֚b, qa᷺̖݄֚b, qa᷺̖݄֚b);
+Test_N(qa᷺݄̖֚b, qa᷺݄̖֚b, qa᷺݄̖֚b, qa᷺݄̖֚b, qa᷺݄̖֚b);
+Test_N(qà֮݅̕b, qà֮݅̕b, qà֮݅̕b, qà֮݅̕b, qà֮݅̕b);
+Test_N(qa֮݅̀̕b, qa֮݅̀̕b, qa֮݅̀̕b, qa֮݅̀̕b, qa֮݅̀̕b);
+Test_N(qa᷺̖݆֚b, qa᷺̖݆֚b, qa᷺̖݆֚b, qa᷺̖݆֚b, qa᷺̖݆֚b);
+Test_N(qa᷺݆̖֚b, qa᷺݆̖֚b, qa᷺݆̖֚b, qa᷺݆̖֚b, qa᷺݆̖֚b);
+Test_N(qà֮݇̕b, qà֮݇̕b, qà֮݇̕b, qà֮݇̕b, qà֮݇̕b);
+Test_N(qa֮݇̀̕b, qa֮݇̀̕b, qa֮݇̀̕b, qa֮݇̀̕b, qa֮݇̀̕b);
+Test_N(qa᷺̖݈֚b, qa᷺̖݈֚b, qa᷺̖݈֚b, qa᷺̖݈֚b, qa᷺̖݈֚b);
+Test_N(qa᷺݈̖֚b, qa᷺݈̖֚b, qa᷺݈̖֚b, qa᷺݈̖֚b, qa᷺݈̖֚b);
+Test_N(qà֮݉̕b, qà֮݉̕b, qà֮݉̕b, qà֮݉̕b, qà֮݉̕b);
+Test_N(qa֮݉̀̕b, qa֮݉̀̕b, qa֮݉̀̕b, qa֮݉̀̕b, qa֮݉̀̕b);
+Test_N(qà֮݊̕b, qà֮݊̕b, qà֮݊̕b, qà֮݊̕b, qà֮݊̕b);
+Test_N(qa֮݊̀̕b, qa֮݊̀̕b, qa֮݊̀̕b, qa֮݊̀̕b, qa֮݊̀̕b);
+Test_N(qà֮߫̕b, qà֮߫̕b, qà֮߫̕b, qà֮߫̕b, qà֮߫̕b);
+Test_N(qa֮߫̀̕b, qa֮߫̀̕b, qa֮߫̀̕b, qa֮߫̀̕b, qa֮߫̀̕b);
+Test_N(qà֮߬̕b, qà֮߬̕b, qà֮߬̕b, qà֮߬̕b, qà֮߬̕b);
+Test_N(qa֮߬̀̕b, qa֮߬̀̕b, qa֮߬̀̕b, qa֮߬̀̕b, qa֮߬̀̕b);
+Test_N(qà֮߭̕b, qà֮߭̕b, qà֮߭̕b, qà֮߭̕b, qà֮߭̕b);
+Test_N(qa֮߭̀̕b, qa֮߭̀̕b, qa֮߭̀̕b, qa֮߭̀̕b, qa֮߭̀̕b);
+Test_N(qà֮߮̕b, qà֮߮̕b, qà֮߮̕b, qà֮߮̕b, qà֮߮̕b);
+Test_N(qa֮߮̀̕b, qa֮߮̀̕b, qa֮߮̀̕b, qa֮߮̀̕b, qa֮߮̀̕b);
+Test_N(qà֮߯̕b, qà֮߯̕b, qà֮߯̕b, qà֮߯̕b, qà֮߯̕b);
+Test_N(qa֮߯̀̕b, qa֮߯̀̕b, qa֮߯̀̕b, qa֮߯̀̕b, qa֮߯̀̕b);
+Test_N(qà֮߰̕b, qà֮߰̕b, qà֮߰̕b, qà֮߰̕b, qà֮߰̕b);
+Test_N(qa֮߰̀̕b, qa֮߰̀̕b, qa֮߰̀̕b, qa֮߰̀̕b, qa֮߰̀̕b);
+Test_N(qà֮߱̕b, qà֮߱̕b, qà֮߱̕b, qà֮߱̕b, qà֮߱̕b);
+Test_N(qa֮߱̀̕b, qa֮߱̀̕b, qa֮߱̀̕b, qa֮߱̀̕b, qa֮߱̀̕b);
+Test_N(qa᷺̖߲֚b, qa᷺̖߲֚b, qa᷺̖߲֚b, qa᷺̖߲֚b, qa᷺̖߲֚b);
+Test_N(qa᷺߲̖֚b, qa᷺߲̖֚b, qa᷺߲̖֚b, qa᷺߲̖֚b, qa᷺߲̖֚b);
+Test_N(qà֮߳̕b, qà֮߳̕b, qà֮߳̕b, qà֮߳̕b, qà֮߳̕b);
+Test_N(qa֮߳̀̕b, qa֮߳̀̕b, qa֮߳̀̕b, qa֮߳̀̕b, qa֮߳̀̕b);
+Test_N(qa᷺̖߽֚b, qa᷺̖߽֚b, qa᷺̖߽֚b, qa᷺̖߽֚b, qa᷺̖߽֚b);
+Test_N(qa᷺߽̖֚b, qa᷺߽̖֚b, qa᷺߽̖֚b, qa᷺߽̖֚b, qa᷺߽̖֚b);
+Test_N(qà֮ࠖ̕b, qà֮ࠖ̕b, qà֮ࠖ̕b, qà֮ࠖ̕b, qà֮ࠖ̕b);
+Test_N(qa֮ࠖ̀̕b, qa֮ࠖ̀̕b, qa֮ࠖ̀̕b, qa֮ࠖ̀̕b, qa֮ࠖ̀̕b);
+Test_N(qà֮ࠗ̕b, qà֮ࠗ̕b, qà֮ࠗ̕b, qà֮ࠗ̕b, qà֮ࠗ̕b);
+Test_N(qa֮ࠗ̀̕b, qa֮ࠗ̀̕b, qa֮ࠗ̀̕b, qa֮ࠗ̀̕b, qa֮ࠗ̀̕b);
+Test_N(qà֮࠘̕b, qà֮࠘̕b, qà֮࠘̕b, qà֮࠘̕b, qà֮࠘̕b);
+Test_N(qa֮࠘̀̕b, qa֮࠘̀̕b, qa֮࠘̀̕b, qa֮࠘̀̕b, qa֮࠘̀̕b);
+Test_N(qà֮࠙̕b, qà֮࠙̕b, qà֮࠙̕b, qà֮࠙̕b, qà֮࠙̕b);
+Test_N(qa֮࠙̀̕b, qa֮࠙̀̕b, qa֮࠙̀̕b, qa֮࠙̀̕b, qa֮࠙̀̕b);
+Test_N(qà֮ࠛ̕b, qà֮ࠛ̕b, qà֮ࠛ̕b, qà֮ࠛ̕b, qà֮ࠛ̕b);
+Test_N(qa֮ࠛ̀̕b, qa֮ࠛ̀̕b, qa֮ࠛ̀̕b, qa֮ࠛ̀̕b, qa֮ࠛ̀̕b);
+Test_N(qà֮ࠜ̕b, qà֮ࠜ̕b, qà֮ࠜ̕b, qà֮ࠜ̕b, qà֮ࠜ̕b);
+Test_N(qa֮ࠜ̀̕b, qa֮ࠜ̀̕b, qa֮ࠜ̀̕b, qa֮ࠜ̀̕b, qa֮ࠜ̀̕b);
+Test_N(qà֮ࠝ̕b, qà֮ࠝ̕b, qà֮ࠝ̕b, qà֮ࠝ̕b, qà֮ࠝ̕b);
+Test_N(qa֮ࠝ̀̕b, qa֮ࠝ̀̕b, qa֮ࠝ̀̕b, qa֮ࠝ̀̕b, qa֮ࠝ̀̕b);
+Test_N(qà֮ࠞ̕b, qà֮ࠞ̕b, qà֮ࠞ̕b, qà֮ࠞ̕b, qà֮ࠞ̕b);
+Test_N(qa֮ࠞ̀̕b, qa֮ࠞ̀̕b, qa֮ࠞ̀̕b, qa֮ࠞ̀̕b, qa֮ࠞ̀̕b);
+Test_N(qà֮ࠟ̕b, qà֮ࠟ̕b, qà֮ࠟ̕b, qà֮ࠟ̕b, qà֮ࠟ̕b);
+Test_N(qa֮ࠟ̀̕b, qa֮ࠟ̀̕b, qa֮ࠟ̀̕b, qa֮ࠟ̀̕b, qa֮ࠟ̀̕b);
+Test_N(qà֮ࠠ̕b, qà֮ࠠ̕b, qà֮ࠠ̕b, qà֮ࠠ̕b, qà֮ࠠ̕b);
+Test_N(qa֮ࠠ̀̕b, qa֮ࠠ̀̕b, qa֮ࠠ̀̕b, qa֮ࠠ̀̕b, qa֮ࠠ̀̕b);
+Test_N(qà֮ࠡ̕b, qà֮ࠡ̕b, qà֮ࠡ̕b, qà֮ࠡ̕b, qà֮ࠡ̕b);
+Test_N(qa֮ࠡ̀̕b, qa֮ࠡ̀̕b, qa֮ࠡ̀̕b, qa֮ࠡ̀̕b, qa֮ࠡ̀̕b);
+Test_N(qà֮ࠢ̕b, qà֮ࠢ̕b, qà֮ࠢ̕b, qà֮ࠢ̕b, qà֮ࠢ̕b);
+Test_N(qa֮ࠢ̀̕b, qa֮ࠢ̀̕b, qa֮ࠢ̀̕b, qa֮ࠢ̀̕b, qa֮ࠢ̀̕b);
+Test_N(qà֮ࠣ̕b, qà֮ࠣ̕b, qà֮ࠣ̕b, qà֮ࠣ̕b, qà֮ࠣ̕b);
+Test_N(qa֮ࠣ̀̕b, qa֮ࠣ̀̕b, qa֮ࠣ̀̕b, qa֮ࠣ̀̕b, qa֮ࠣ̀̕b);
+Test_N(qà֮ࠥ̕b, qà֮ࠥ̕b, qà֮ࠥ̕b, qà֮ࠥ̕b, qà֮ࠥ̕b);
+Test_N(qa֮ࠥ̀̕b, qa֮ࠥ̀̕b, qa֮ࠥ̀̕b, qa֮ࠥ̀̕b, qa֮ࠥ̀̕b);
+Test_N(qà֮ࠦ̕b, qà֮ࠦ̕b, qà֮ࠦ̕b, qà֮ࠦ̕b, qà֮ࠦ̕b);
+Test_N(qa֮ࠦ̀̕b, qa֮ࠦ̀̕b, qa֮ࠦ̀̕b, qa֮ࠦ̀̕b, qa֮ࠦ̀̕b);
+Test_N(qà֮ࠧ̕b, qà֮ࠧ̕b, qà֮ࠧ̕b, qà֮ࠧ̕b, qà֮ࠧ̕b);
+Test_N(qa֮ࠧ̀̕b, qa֮ࠧ̀̕b, qa֮ࠧ̀̕b, qa֮ࠧ̀̕b, qa֮ࠧ̀̕b);
+Test_N(qà֮ࠩ̕b, qà֮ࠩ̕b, qà֮ࠩ̕b, qà֮ࠩ̕b, qà֮ࠩ̕b);
+Test_N(qa֮ࠩ̀̕b, qa֮ࠩ̀̕b, qa֮ࠩ̀̕b, qa֮ࠩ̀̕b, qa֮ࠩ̀̕b);
+Test_N(qà֮ࠪ̕b, qà֮ࠪ̕b, qà֮ࠪ̕b, qà֮ࠪ̕b, qà֮ࠪ̕b);
+Test_N(qa֮ࠪ̀̕b, qa֮ࠪ̀̕b, qa֮ࠪ̀̕b, qa֮ࠪ̀̕b, qa֮ࠪ̀̕b);
+Test_N(qà֮ࠫ̕b, qà֮ࠫ̕b, qà֮ࠫ̕b, qà֮ࠫ̕b, qà֮ࠫ̕b);
+Test_N(qa֮ࠫ̀̕b, qa֮ࠫ̀̕b, qa֮ࠫ̀̕b, qa֮ࠫ̀̕b, qa֮ࠫ̀̕b);
+Test_N(qà֮ࠬ̕b, qà֮ࠬ̕b, qà֮ࠬ̕b, qà֮ࠬ̕b, qà֮ࠬ̕b);
+Test_N(qa֮ࠬ̀̕b, qa֮ࠬ̀̕b, qa֮ࠬ̀̕b, qa֮ࠬ̀̕b, qa֮ࠬ̀̕b);
+Test_N(qà֮࠭̕b, qà֮࠭̕b, qà֮࠭̕b, qà֮࠭̕b, qà֮࠭̕b);
+Test_N(qa֮࠭̀̕b, qa֮࠭̀̕b, qa֮࠭̀̕b, qa֮࠭̀̕b, qa֮࠭̀̕b);
+Test_N(qa᷺̖࡙֚b, qa᷺̖࡙֚b, qa᷺̖࡙֚b, qa᷺̖࡙֚b, qa᷺̖࡙֚b);
+Test_N(qa᷺࡙̖֚b, qa᷺࡙̖֚b, qa᷺࡙̖֚b, qa᷺࡙̖֚b, qa᷺࡙̖֚b);
+Test_N(qa᷺̖࡚֚b, qa᷺̖࡚֚b, qa᷺̖࡚֚b, qa᷺̖࡚֚b, qa᷺̖࡚֚b);
+Test_N(qa᷺࡚̖֚b, qa᷺࡚̖֚b, qa᷺࡚̖֚b, qa᷺࡚̖֚b, qa᷺࡚̖֚b);
+Test_N(qa᷺̖࡛֚b, qa᷺̖࡛֚b, qa᷺̖࡛֚b, qa᷺̖࡛֚b, qa᷺̖࡛֚b);
+Test_N(qa᷺࡛̖֚b, qa᷺࡛̖֚b, qa᷺࡛̖֚b, qa᷺࡛̖֚b, qa᷺࡛̖֚b);
+Test_N(qà֮࢘̕b, qà֮࢘̕b, qà֮࢘̕b, qà֮࢘̕b, qà֮࢘̕b);
+Test_N(qa֮࢘̀̕b, qa֮࢘̀̕b, qa֮࢘̀̕b, qa֮࢘̀̕b, qa֮࢘̀̕b);
+Test_N(qa᷺̖࢙֚b, qa᷺̖࢙֚b, qa᷺̖࢙֚b, qa᷺̖࢙֚b, qa᷺̖࢙֚b);
+Test_N(qa᷺࢙̖֚b, qa᷺࢙̖֚b, qa᷺࢙̖֚b, qa᷺࢙̖֚b, qa᷺࢙̖֚b);
+Test_N(qa᷺̖࢚֚b, qa᷺̖࢚֚b, qa᷺̖࢚֚b, qa᷺̖࢚֚b, qa᷺̖࢚֚b);
+Test_N(qa᷺࢚̖֚b, qa᷺࢚̖֚b, qa᷺࢚̖֚b, qa᷺࢚̖֚b, qa᷺࢚̖֚b);
+Test_N(qa᷺̖࢛֚b, qa᷺̖࢛֚b, qa᷺̖࢛֚b, qa᷺̖࢛֚b, qa᷺̖࢛֚b);
+Test_N(qa᷺࢛̖֚b, qa᷺࢛̖֚b, qa᷺࢛̖֚b, qa᷺࢛̖֚b, qa᷺࢛̖֚b);
+Test_N(qà֮࢜̕b, qà֮࢜̕b, qà֮࢜̕b, qà֮࢜̕b, qà֮࢜̕b);
+Test_N(qa֮࢜̀̕b, qa֮࢜̀̕b, qa֮࢜̀̕b, qa֮࢜̀̕b, qa֮࢜̀̕b);
+Test_N(qà֮࢝̕b, qà֮࢝̕b, qà֮࢝̕b, qà֮࢝̕b, qà֮࢝̕b);
+Test_N(qa֮࢝̀̕b, qa֮࢝̀̕b, qa֮࢝̀̕b, qa֮࢝̀̕b, qa֮࢝̀̕b);
+Test_N(qà֮࢞̕b, qà֮࢞̕b, qà֮࢞̕b, qà֮࢞̕b, qà֮࢞̕b);
+Test_N(qa֮࢞̀̕b, qa֮࢞̀̕b, qa֮࢞̀̕b, qa֮࢞̀̕b, qa֮࢞̀̕b);
+Test_N(qà֮࢟̕b, qà֮࢟̕b, qà֮࢟̕b, qà֮࢟̕b, qà֮࢟̕b);
+Test_N(qa֮࢟̀̕b, qa֮࢟̀̕b, qa֮࢟̀̕b, qa֮࢟̀̕b, qa֮࢟̀̕b);
+Test_N(qà֮࣊̕b, qà֮࣊̕b, qà֮࣊̕b, qà֮࣊̕b, qà֮࣊̕b);
+Test_N(qa֮࣊̀̕b, qa֮࣊̀̕b, qa֮࣊̀̕b, qa֮࣊̀̕b, qa֮࣊̀̕b);
+Test_N(qà֮࣋̕b, qà֮࣋̕b, qà֮࣋̕b, qà֮࣋̕b, qà֮࣋̕b);
+Test_N(qa֮࣋̀̕b, qa֮࣋̀̕b, qa֮࣋̀̕b, qa֮࣋̀̕b, qa֮࣋̀̕b);
+Test_N(qà֮࣌̕b, qà֮࣌̕b, qà֮࣌̕b, qà֮࣌̕b, qà֮࣌̕b);
+Test_N(qa֮࣌̀̕b, qa֮࣌̀̕b, qa֮࣌̀̕b, qa֮࣌̀̕b, qa֮࣌̀̕b);
+Test_N(qà֮࣍̕b, qà֮࣍̕b, qà֮࣍̕b, qà֮࣍̕b, qà֮࣍̕b);
+Test_N(qa֮࣍̀̕b, qa֮࣍̀̕b, qa֮࣍̀̕b, qa֮࣍̀̕b, qa֮࣍̀̕b);
+Test_N(qà֮࣎̕b, qà֮࣎̕b, qà֮࣎̕b, qà֮࣎̕b, qà֮࣎̕b);
+Test_N(qa֮࣎̀̕b, qa֮࣎̀̕b, qa֮࣎̀̕b, qa֮࣎̀̕b, qa֮࣎̀̕b);
+Test_N(qa᷺̖࣏֚b, qa᷺̖࣏֚b, qa᷺̖࣏֚b, qa᷺̖࣏֚b, qa᷺̖࣏֚b);
+Test_N(qa᷺࣏̖֚b, qa᷺࣏̖֚b, qa᷺࣏̖֚b, qa᷺࣏̖֚b, qa᷺࣏̖֚b);
+Test_N(qa᷺̖࣐֚b, qa᷺̖࣐֚b, qa᷺̖࣐֚b, qa᷺̖࣐֚b, qa᷺̖࣐֚b);
+Test_N(qa᷺࣐̖֚b, qa᷺࣐̖֚b, qa᷺࣐̖֚b, qa᷺࣐̖֚b, qa᷺࣐̖֚b);
+Test_N(qa᷺̖࣑֚b, qa᷺̖࣑֚b, qa᷺̖࣑֚b, qa᷺̖࣑֚b, qa᷺̖࣑֚b);
+Test_N(qa᷺࣑̖֚b, qa᷺࣑̖֚b, qa᷺࣑̖֚b, qa᷺࣑̖֚b, qa᷺࣑̖֚b);
+Test_N(qa᷺̖࣒֚b, qa᷺̖࣒֚b, qa᷺̖࣒֚b, qa᷺̖࣒֚b, qa᷺̖࣒֚b);
+Test_N(qa᷺࣒̖֚b, qa᷺࣒̖֚b, qa᷺࣒̖֚b, qa᷺࣒̖֚b, qa᷺࣒̖֚b);
+Test_N(qa᷺̖࣓֚b, qa᷺̖࣓֚b, qa᷺̖࣓֚b, qa᷺̖࣓֚b, qa᷺̖࣓֚b);
+Test_N(qa᷺࣓̖֚b, qa᷺࣓̖֚b, qa᷺࣓̖֚b, qa᷺࣓̖֚b, qa᷺࣓̖֚b);
+Test_N(qà֮ࣔ̕b, qà֮ࣔ̕b, qà֮ࣔ̕b, qà֮ࣔ̕b, qà֮ࣔ̕b);
+Test_N(qa֮ࣔ̀̕b, qa֮ࣔ̀̕b, qa֮ࣔ̀̕b, qa֮ࣔ̀̕b, qa֮ࣔ̀̕b);
+Test_N(qà֮ࣕ̕b, qà֮ࣕ̕b, qà֮ࣕ̕b, qà֮ࣕ̕b, qà֮ࣕ̕b);
+Test_N(qa֮ࣕ̀̕b, qa֮ࣕ̀̕b, qa֮ࣕ̀̕b, qa֮ࣕ̀̕b, qa֮ࣕ̀̕b);
+Test_N(qà֮ࣖ̕b, qà֮ࣖ̕b, qà֮ࣖ̕b, qà֮ࣖ̕b, qà֮ࣖ̕b);
+Test_N(qa֮ࣖ̀̕b, qa֮ࣖ̀̕b, qa֮ࣖ̀̕b, qa֮ࣖ̀̕b, qa֮ࣖ̀̕b);
+Test_N(qà֮ࣗ̕b, qà֮ࣗ̕b, qà֮ࣗ̕b, qà֮ࣗ̕b, qà֮ࣗ̕b);
+Test_N(qa֮ࣗ̀̕b, qa֮ࣗ̀̕b, qa֮ࣗ̀̕b, qa֮ࣗ̀̕b, qa֮ࣗ̀̕b);
+Test_N(qà֮ࣘ̕b, qà֮ࣘ̕b, qà֮ࣘ̕b, qà֮ࣘ̕b, qà֮ࣘ̕b);
+Test_N(qa֮ࣘ̀̕b, qa֮ࣘ̀̕b, qa֮ࣘ̀̕b, qa֮ࣘ̀̕b, qa֮ࣘ̀̕b);
+Test_N(qà֮ࣙ̕b, qà֮ࣙ̕b, qà֮ࣙ̕b, qà֮ࣙ̕b, qà֮ࣙ̕b);
+Test_N(qa֮ࣙ̀̕b, qa֮ࣙ̀̕b, qa֮ࣙ̀̕b, qa֮ࣙ̀̕b, qa֮ࣙ̀̕b);
+Test_N(qà֮ࣚ̕b, qà֮ࣚ̕b, qà֮ࣚ̕b, qà֮ࣚ̕b, qà֮ࣚ̕b);
+Test_N(qa֮ࣚ̀̕b, qa֮ࣚ̀̕b, qa֮ࣚ̀̕b, qa֮ࣚ̀̕b, qa֮ࣚ̀̕b);
+Test_N(qà֮ࣛ̕b, qà֮ࣛ̕b, qà֮ࣛ̕b, qà֮ࣛ̕b, qà֮ࣛ̕b);
+Test_N(qa֮ࣛ̀̕b, qa֮ࣛ̀̕b, qa֮ࣛ̀̕b, qa֮ࣛ̀̕b, qa֮ࣛ̀̕b);
+Test_N(qà֮ࣜ̕b, qà֮ࣜ̕b, qà֮ࣜ̕b, qà֮ࣜ̕b, qà֮ࣜ̕b);
+Test_N(qa֮ࣜ̀̕b, qa֮ࣜ̀̕b, qa֮ࣜ̀̕b, qa֮ࣜ̀̕b, qa֮ࣜ̀̕b);
+Test_N(qà֮ࣝ̕b, qà֮ࣝ̕b, qà֮ࣝ̕b, qà֮ࣝ̕b, qà֮ࣝ̕b);
+Test_N(qa֮ࣝ̀̕b, qa֮ࣝ̀̕b, qa֮ࣝ̀̕b, qa֮ࣝ̀̕b, qa֮ࣝ̀̕b);
+Test_N(qà֮ࣞ̕b, qà֮ࣞ̕b, qà֮ࣞ̕b, qà֮ࣞ̕b, qà֮ࣞ̕b);
+Test_N(qa֮ࣞ̀̕b, qa֮ࣞ̀̕b, qa֮ࣞ̀̕b, qa֮ࣞ̀̕b, qa֮ࣞ̀̕b);
+Test_N(qà֮ࣟ̕b, qà֮ࣟ̕b, qà֮ࣟ̕b, qà֮ࣟ̕b, qà֮ࣟ̕b);
+Test_N(qa֮ࣟ̀̕b, qa֮ࣟ̀̕b, qa֮ࣟ̀̕b, qa֮ࣟ̀̕b, qa֮ࣟ̀̕b);
+Test_N(qà֮࣠̕b, qà֮࣠̕b, qà֮࣠̕b, qà֮࣠̕b, qà֮࣠̕b);
+Test_N(qa֮࣠̀̕b, qa֮࣠̀̕b, qa֮࣠̀̕b, qa֮࣠̀̕b, qa֮࣠̀̕b);
+Test_N(qà֮࣡̕b, qà֮࣡̕b, qà֮࣡̕b, qà֮࣡̕b, qà֮࣡̕b);
+Test_N(qa֮࣡̀̕b, qa֮࣡̀̕b, qa֮࣡̀̕b, qa֮࣡̀̕b, qa֮࣡̀̕b);
+Test_N(qa᷺̖ࣣ֚b, qa᷺̖ࣣ֚b, qa᷺̖ࣣ֚b, qa᷺̖ࣣ֚b, qa᷺̖ࣣ֚b);
+Test_N(qa᷺ࣣ̖֚b, qa᷺ࣣ̖֚b, qa᷺ࣣ̖֚b, qa᷺ࣣ̖֚b, qa᷺ࣣ̖֚b);
+Test_N(qà֮ࣤ̕b, qà֮ࣤ̕b, qà֮ࣤ̕b, qà֮ࣤ̕b, qà֮ࣤ̕b);
+Test_N(qa֮ࣤ̀̕b, qa֮ࣤ̀̕b, qa֮ࣤ̀̕b, qa֮ࣤ̀̕b, qa֮ࣤ̀̕b);
+Test_N(qà֮ࣥ̕b, qà֮ࣥ̕b, qà֮ࣥ̕b, qà֮ࣥ̕b, qà֮ࣥ̕b);
+Test_N(qa֮ࣥ̀̕b, qa֮ࣥ̀̕b, qa֮ࣥ̀̕b, qa֮ࣥ̀̕b, qa֮ࣥ̀̕b);
+Test_N(qa᷺̖ࣦ֚b, qa᷺̖ࣦ֚b, qa᷺̖ࣦ֚b, qa᷺̖ࣦ֚b, qa᷺̖ࣦ֚b);
+Test_N(qa᷺ࣦ̖֚b, qa᷺ࣦ̖֚b, qa᷺ࣦ̖֚b, qa᷺ࣦ̖֚b, qa᷺ࣦ̖֚b);
+Test_N(qà֮ࣧ̕b, qà֮ࣧ̕b, qà֮ࣧ̕b, qà֮ࣧ̕b, qà֮ࣧ̕b);
+Test_N(qa֮ࣧ̀̕b, qa֮ࣧ̀̕b, qa֮ࣧ̀̕b, qa֮ࣧ̀̕b, qa֮ࣧ̀̕b);
+Test_N(qà֮ࣨ̕b, qà֮ࣨ̕b, qà֮ࣨ̕b, qà֮ࣨ̕b, qà֮ࣨ̕b);
+Test_N(qa֮ࣨ̀̕b, qa֮ࣨ̀̕b, qa֮ࣨ̀̕b, qa֮ࣨ̀̕b, qa֮ࣨ̀̕b);
+Test_N(qa᷺̖ࣩ֚b, qa᷺̖ࣩ֚b, qa᷺̖ࣩ֚b, qa᷺̖ࣩ֚b, qa᷺̖ࣩ֚b);
+Test_N(qa᷺ࣩ̖֚b, qa᷺ࣩ̖֚b, qa᷺ࣩ̖֚b, qa᷺ࣩ̖֚b, qa᷺ࣩ̖֚b);
+Test_N(qà֮࣪̕b, qà֮࣪̕b, qà֮࣪̕b, qà֮࣪̕b, qà֮࣪̕b);
+Test_N(qa֮࣪̀̕b, qa֮࣪̀̕b, qa֮࣪̀̕b, qa֮࣪̀̕b, qa֮࣪̀̕b);
+Test_N(qà֮࣫̕b, qà֮࣫̕b, qà֮࣫̕b, qà֮࣫̕b, qà֮࣫̕b);
+Test_N(qa֮࣫̀̕b, qa֮࣫̀̕b, qa֮࣫̀̕b, qa֮࣫̀̕b, qa֮࣫̀̕b);
+Test_N(qà֮࣬̕b, qà֮࣬̕b, qà֮࣬̕b, qà֮࣬̕b, qà֮࣬̕b);
+Test_N(qa֮࣬̀̕b, qa֮࣬̀̕b, qa֮࣬̀̕b, qa֮࣬̀̕b, qa֮࣬̀̕b);
+Test_N(qa᷺̖࣭֚b, qa᷺̖࣭֚b, qa᷺̖࣭֚b, qa᷺̖࣭֚b, qa᷺̖࣭֚b);
+Test_N(qa᷺࣭̖֚b, qa᷺࣭̖֚b, qa᷺࣭̖֚b, qa᷺࣭̖֚b, qa᷺࣭̖֚b);
+Test_N(qa᷺̖࣮֚b, qa᷺̖࣮֚b, qa᷺̖࣮֚b, qa᷺̖࣮֚b, qa᷺̖࣮֚b);
+Test_N(qa᷺࣮̖֚b, qa᷺࣮̖֚b, qa᷺࣮̖֚b, qa᷺࣮̖֚b, qa᷺࣮̖֚b);
+Test_N(qa᷺̖࣯֚b, qa᷺̖࣯֚b, qa᷺̖࣯֚b, qa᷺̖࣯֚b, qa᷺̖࣯֚b);
+Test_N(qa᷺࣯̖֚b, qa᷺࣯̖֚b, qa᷺࣯̖֚b, qa᷺࣯̖֚b, qa᷺࣯̖֚b);
+Test_N(qaﬞًࣰٌb, qaﬞًࣰٌb, qaﬞًࣰٌb, qaﬞًࣰٌb, qaﬞًࣰٌb);
+Test_N(qaﬞࣰًٌb, qaﬞࣰًٌb, qaﬞࣰًٌb, qaﬞࣰًٌb, qaﬞࣰًٌb);
+Test_N(qaًٌࣱٍb, qaًٌࣱٍb, qaًٌࣱٍb, qaًٌࣱٍb, qaًٌࣱٍb);
+Test_N(qaًࣱٌٍb, qaًࣱٌٍb, qaًࣱٌٍb, qaًࣱٌٍb, qaًࣱٌٍb);
+Test_N(qaٌٍࣲؘb, qaٌٍࣲؘb, qaٌٍࣲؘb, qaٌٍࣲؘb, qaٌٍࣲؘb);
+Test_N(qaٌࣲٍؘb, qaٌࣲٍؘb, qaٌࣲٍؘb, qaٌࣲٍؘb, qaٌࣲٍؘb);
+Test_N(qà֮ࣳ̕b, qà֮ࣳ̕b, qà֮ࣳ̕b, qà֮ࣳ̕b, qà֮ࣳ̕b);
+Test_N(qa֮ࣳ̀̕b, qa֮ࣳ̀̕b, qa֮ࣳ̀̕b, qa֮ࣳ̀̕b, qa֮ࣳ̀̕b);
+Test_N(qà֮ࣴ̕b, qà֮ࣴ̕b, qà֮ࣴ̕b, qà֮ࣴ̕b, qà֮ࣴ̕b);
+Test_N(qa֮ࣴ̀̕b, qa֮ࣴ̀̕b, qa֮ࣴ̀̕b, qa֮ࣴ̀̕b, qa֮ࣴ̀̕b);
+Test_N(qà֮ࣵ̕b, qà֮ࣵ̕b, qà֮ࣵ̕b, qà֮ࣵ̕b, qà֮ࣵ̕b);
+Test_N(qa֮ࣵ̀̕b, qa֮ࣵ̀̕b, qa֮ࣵ̀̕b, qa֮ࣵ̀̕b, qa֮ࣵ̀̕b);
+Test_N(qa᷺̖ࣶ֚b, qa᷺̖ࣶ֚b, qa᷺̖ࣶ֚b, qa᷺̖ࣶ֚b, qa᷺̖ࣶ֚b);
+Test_N(qa᷺ࣶ̖֚b, qa᷺ࣶ̖֚b, qa᷺ࣶ̖֚b, qa᷺ࣶ̖֚b, qa᷺ࣶ̖֚b);
+Test_N(qà֮ࣷ̕b, qà֮ࣷ̕b, qà֮ࣷ̕b, qà֮ࣷ̕b, qà֮ࣷ̕b);
+Test_N(qa֮ࣷ̀̕b, qa֮ࣷ̀̕b, qa֮ࣷ̀̕b, qa֮ࣷ̀̕b, qa֮ࣷ̀̕b);
+Test_N(qà֮ࣸ̕b, qà֮ࣸ̕b, qà֮ࣸ̕b, qà֮ࣸ̕b, qà֮ࣸ̕b);
+Test_N(qa֮ࣸ̀̕b, qa֮ࣸ̀̕b, qa֮ࣸ̀̕b, qa֮ࣸ̀̕b, qa֮ࣸ̀̕b);
+Test_N(qa᷺̖ࣹ֚b, qa᷺̖ࣹ֚b, qa᷺̖ࣹ֚b, qa᷺̖ࣹ֚b, qa᷺̖ࣹ֚b);
+Test_N(qa᷺ࣹ̖֚b, qa᷺ࣹ̖֚b, qa᷺ࣹ̖֚b, qa᷺ࣹ̖֚b, qa᷺ࣹ̖֚b);
+Test_N(qa᷺̖ࣺ֚b, qa᷺̖ࣺ֚b, qa᷺̖ࣺ֚b, qa᷺̖ࣺ֚b, qa᷺̖ࣺ֚b);
+Test_N(qa᷺ࣺ̖֚b, qa᷺ࣺ̖֚b, qa᷺ࣺ̖֚b, qa᷺ࣺ̖֚b, qa᷺ࣺ̖֚b);
+Test_N(qà֮ࣻ̕b, qà֮ࣻ̕b, qà֮ࣻ̕b, qà֮ࣻ̕b, qà֮ࣻ̕b);
+Test_N(qa֮ࣻ̀̕b, qa֮ࣻ̀̕b, qa֮ࣻ̀̕b, qa֮ࣻ̀̕b, qa֮ࣻ̀̕b);
+Test_N(qà֮ࣼ̕b, qà֮ࣼ̕b, qà֮ࣼ̕b, qà֮ࣼ̕b, qà֮ࣼ̕b);
+Test_N(qa֮ࣼ̀̕b, qa֮ࣼ̀̕b, qa֮ࣼ̀̕b, qa֮ࣼ̀̕b, qa֮ࣼ̀̕b);
+Test_N(qà֮ࣽ̕b, qà֮ࣽ̕b, qà֮ࣽ̕b, qà֮ࣽ̕b, qà֮ࣽ̕b);
+Test_N(qa֮ࣽ̀̕b, qa֮ࣽ̀̕b, qa֮ࣽ̀̕b, qa֮ࣽ̀̕b, qa֮ࣽ̀̕b);
+Test_N(qà֮ࣾ̕b, qà֮ࣾ̕b, qà֮ࣾ̕b, qà֮ࣾ̕b, qà֮ࣾ̕b);
+Test_N(qa֮ࣾ̀̕b, qa֮ࣾ̀̕b, qa֮ࣾ̀̕b, qa֮ࣾ̀̕b, qa֮ࣾ̀̕b);
+Test_N(qà֮ࣿ̕b, qà֮ࣿ̕b, qà֮ࣿ̕b, qà֮ࣿ̕b, qà֮ࣿ̕b);
+Test_N(qa֮ࣿ̀̕b, qa֮ࣿ̀̕b, qa֮ࣿ̀̕b, qa֮ࣿ̀̕b, qa֮ࣿ̀̕b);
+Test_N(qa𖿰़़゙b, qa𖿰़़゙b, qa𖿰़़゙b, qa𖿰़़゙b, qa𖿰़़゙b);
+Test_N(qa𖿰़़゙b, qa𖿰़़゙b, qa𖿰़़゙b, qa𖿰़़゙b, qa𖿰़़゙b);
+Test_N(qa゙््ְb, qa゙््ְb, qa゙््ְb, qa゙््ְb, qa゙््ְb);
+Test_N(qa゙््ְb, qa゙््ְb, qa゙््ְb, qa゙््ְb, qa゙््ְb);
+Test_N(qà֮॑̕b, qà֮॑̕b, qà֮॑̕b, qà֮॑̕b, qà֮॑̕b);
+Test_N(qa֮॑̀̕b, qa֮॑̀̕b, qa֮॑̀̕b, qa֮॑̀̕b, qa֮॑̀̕b);
+Test_N(qa᷺̖॒֚b, qa᷺̖॒֚b, qa᷺̖॒֚b, qa᷺̖॒֚b, qa᷺̖॒֚b);
+Test_N(qa᷺॒̖֚b, qa᷺॒̖֚b, qa᷺॒̖֚b, qa᷺॒̖֚b, qa᷺॒̖֚b);
+Test_N(qà֮॓̕b, qà֮॓̕b, qà֮॓̕b, qà֮॓̕b, qà֮॓̕b);
+Test_N(qa֮॓̀̕b, qa֮॓̀̕b, qa֮॓̀̕b, qa֮॓̀̕b, qa֮॓̀̕b);
+Test_N(qà֮॔̕b, qà֮॔̕b, qà֮॔̕b, qà֮॔̕b, qà֮॔̕b);
+Test_N(qa֮॔̀̕b, qa֮॔̀̕b, qa֮॔̀̕b, qa֮॔̀̕b, qa֮॔̀̕b);
+Test_N(qa𖿰़়゙b, qa𖿰़়゙b, qa𖿰़়゙b, qa𖿰़়゙b, qa𖿰़়゙b);
+Test_N(qa𖿰়़゙b, qa𖿰়़゙b, qa𖿰়़゙b, qa𖿰়़゙b, qa𖿰়़゙b);
+Test_N(qa゙्্ְb, qa゙्্ְb, qa゙्্ְb, qa゙्্ְb, qa゙्্ְb);
+Test_N(qa゙্्ְb, qa゙্्ְb, qa゙্्ְb, qa゙্्ְb, qa゙্्ְb);
+Test_N(qà֮৾̕b, qà֮৾̕b, qà֮৾̕b, qà֮৾̕b, qà֮৾̕b);
+Test_N(qa֮৾̀̕b, qa֮৾̀̕b, qa֮৾̀̕b, qa֮৾̀̕b, qa֮৾̀̕b);
+Test_N(qa𖿰़਼゙b, qa𖿰़਼゙b, qa𖿰़਼゙b, qa𖿰़਼゙b, qa𖿰़਼゙b);
+Test_N(qa𖿰਼़゙b, qa𖿰਼़゙b, qa𖿰਼़゙b, qa𖿰਼़゙b, qa𖿰਼़゙b);
+Test_N(qa゙्੍ְb, qa゙्੍ְb, qa゙्੍ְb, qa゙्੍ְb, qa゙्੍ְb);
+Test_N(qa゙੍्ְb, qa゙੍्ְb, qa゙੍्ְb, qa゙੍्ְb, qa゙੍्ְb);
+Test_N(qa𖿰़઼゙b, qa𖿰़઼゙b, qa𖿰़઼゙b, qa𖿰़઼゙b, qa𖿰़઼゙b);
+Test_N(qa𖿰઼़゙b, qa𖿰઼़゙b, qa𖿰઼़゙b, qa𖿰઼़゙b, qa𖿰઼़゙b);
+Test_N(qa゙्્ְb, qa゙्્ְb, qa゙्્ְb, qa゙्્ְb, qa゙्્ְb);
+Test_N(qa゙્्ְb, qa゙્्ְb, qa゙્्ְb, qa゙્्ְb, qa゙્्ְb);
+Test_N(qa𖿰़଼゙b, qa𖿰़଼゙b, qa𖿰़଼゙b, qa𖿰़଼゙b, qa𖿰़଼゙b);
+Test_N(qa𖿰଼़゙b, qa𖿰଼़゙b, qa𖿰଼़゙b, qa𖿰଼़゙b, qa𖿰଼़゙b);
+Test_N(qa゙्୍ְb, qa゙्୍ְb, qa゙्୍ְb, qa゙्୍ְb, qa゙्୍ְb);
+Test_N(qa゙୍्ְb, qa゙୍्ְb, qa゙୍्ְb, qa゙୍्ְb, qa゙୍्ְb);
+Test_N(qa゙्்ְb, qa゙्்ְb, qa゙्்ְb, qa゙्்ְb, qa゙्்ְb);
+Test_N(qa゙்्ְb, qa゙்्ְb, qa゙்्ְb, qa゙்्ְb, qa゙்्ְb);
+Test_N(qa𖿰़఼゙b, qa𖿰़఼゙b, qa𖿰़఼゙b, qa𖿰़఼゙b, qa𖿰़఼゙b);
+Test_N(qa𖿰఼़゙b, qa𖿰఼़゙b, qa𖿰఼़゙b, qa𖿰఼़゙b, qa𖿰఼़゙b);
+Test_N(qa゙्్ְb, qa゙्్ְb, qa゙्్ְb, qa゙्్ְb, qa゙्్ְb);
+Test_N(qa゙్्ְb, qa゙్्ְb, qa゙్्ְb, qa゙్्ְb, qa゙్्ְb);
+Test_N(qaܑౕౕౖb, qaܑౕౕౖb, qaܑౕౕౖb, qaܑౕౕౖb, qaܑౕౕౖb);
+Test_N(qaܑౕౕౖb, qaܑౕౕౖb, qaܑౕౕౖb, qaܑౕౕౖb, qaܑౕౕౖb);
+Test_N(qaౕౖౖุb, qaౕౖౖุb, qaౕౖౖุb, qaౕౖౖุb, qaౕౖౖุb);
+Test_N(qaౕౖౖุb, qaౕౖౖุb, qaౕౖౖุb, qaౕౖౖุb, qaౕౖౖุb);
+Test_N(qa𖿰़಼゙b, qa𖿰़಼゙b, qa𖿰़಼゙b, qa𖿰़಼゙b, qa𖿰़಼゙b);
+Test_N(qa𖿰಼़゙b, qa𖿰಼़゙b, qa𖿰಼़゙b, qa𖿰಼़゙b, qa𖿰಼़゙b);
+Test_N(qa゙्್ְb, qa゙्್ְb, qa゙्್ְb, qa゙्್ְb, qa゙्್ְb);
+Test_N(qa゙್्ְb, qa゙್्ְb, qa゙್्ְb, qa゙್्ְb, qa゙್्ְb);
+Test_N(qa゙्഻ְb, qa゙्഻ְb, qa゙्഻ְb, qa゙्഻ְb, qa゙्഻ְb);
+Test_N(qa゙഻्ְb, qa゙഻्ְb, qa゙഻्ְb, qa゙഻्ְb, qa゙഻्ְb);
+Test_N(qa゙्഼ְb, qa゙्഼ְb, qa゙्഼ְb, qa゙्഼ְb, qa゙्഼ְb);
+Test_N(qa゙഼्ְb, qa゙഼्ְb, qa゙഼्ְb, qa゙഼्ְb, qa゙഼्ְb);
+Test_N(qa゙्്ְb, qa゙्്ְb, qa゙्്ְb, qa゙्്ְb, qa゙्്ְb);
+Test_N(qa゙്्ְb, qa゙്्ְb, qa゙്्ְb, qa゙്्ְb, qa゙്्ְb);
+Test_N(qa゙्්ְb, qa゙्්ְb, qa゙्්ְb, qa゙्්ְb, qa゙्්ְb);
+Test_N(qa゙්्ְb, qa゙්्ְb, qa゙්्ְb, qa゙්्ְb, qa゙්्ְb);
+Test_N(qaౖุุ่b, qaౖุุ่b, qaౖุุ่b, qaౖุุ่b, qaౖุุ่b);
+Test_N(qaౖุุ่b, qaౖุุ่b, qaౖุุ่b, qaౖุุ่b, qaౖุุ่b);
+Test_N(qaౖุู่b, qaౖุู่b, qaౖุู่b, qaౖุู่b, qaౖุู่b);
+Test_N(qaౖูุ่b, qaౖูุ่b, qaౖูุ่b, qaౖูุ่b, qaౖูุ่b);
+Test_N(qa゙्ฺְb, qa゙्ฺְb, qa゙्ฺְb, qa゙्ฺְb, qa゙्ฺְb);
+Test_N(qa゙ฺ्ְb, qa゙ฺ्ְb, qa゙ฺ्ְb, qa゙ฺ्ְb, qa゙ฺ्ְb);
+Test_N(qaุ่่ຸb, qaุ่่ຸb, qaุ่่ຸb, qaุ่่ຸb, qaุ่่ຸb);
+Test_N(qaุ่่ຸb, qaุ่่ຸb, qaุ่่ຸb, qaุ่่ຸb, qaุ่่ຸb);
+Test_N(qaุ่้ຸb, qaุ่้ຸb, qaุ่้ຸb, qaุ่้ຸb, qaุ่้ຸb);
+Test_N(qaุ้่ຸb, qaุ้่ຸb, qaุ้่ຸb, qaุ้่ຸb, qaุ้่ຸb);
+Test_N(qaุ่๊ຸb, qaุ่๊ຸb, qaุ่๊ຸb, qaุ่๊ຸb, qaุ่๊ຸb);
+Test_N(qaุ๊่ຸb, qaุ๊่ຸb, qaุ๊่ຸb, qaุ๊่ຸb, qaุ๊่ຸb);
+Test_N(qaุ่๋ຸb, qaุ่๋ຸb, qaุ่๋ຸb, qaุ่๋ຸb, qaุ่๋ຸb);
+Test_N(qaุ๋่ຸb, qaุ๋่ຸb, qaุ๋่ຸb, qaุ๋่ຸb, qaุ๋่ຸb);
+Test_N(qa่ຸຸ່b, qa่ຸຸ່b, qa่ຸຸ່b, qa่ຸຸ່b, qa่ຸຸ່b);
+Test_N(qa่ຸຸ່b, qa่ຸຸ່b, qa่ຸຸ່b, qa่ຸຸ່b, qa่ຸຸ່b);
+Test_N(qa่ຸູ່b, qa่ຸູ່b, qa่ຸູ່b, qa่ຸູ່b, qa่ຸູ່b);
+Test_N(qa่ູຸ່b, qa่ູຸ່b, qa่ູຸ່b, qa่ູຸ່b, qa่ູຸ່b);
+Test_N(qa゙्຺ְb, qa゙्຺ְb, qa゙्຺ְb, qa゙्຺ְb, qa゙्຺ְb);
+Test_N(qa゙຺्ְb, qa゙຺्ְb, qa゙຺्ְb, qa゙຺्ְb, qa゙຺्ְb);
+Test_N(qaຸ່່ཱb, qaຸ່່ཱb, qaຸ່່ཱb, qaຸ່່ཱb, qaຸ່່ཱb);
+Test_N(qaຸ່່ཱb, qaຸ່່ཱb, qaຸ່່ཱb, qaຸ່່ཱb, qaຸ່່ཱb);
+Test_N(qaຸ່້ཱb, qaຸ່້ཱb, qaຸ່້ཱb, qaຸ່້ཱb, qaຸ່້ཱb);
+Test_N(qaຸ້່ཱb, qaຸ້່ཱb, qaຸ້່ཱb, qaຸ້່ཱb, qaຸ້່ཱb);
+Test_N(qaຸ່໊ཱb, qaຸ່໊ཱb, qaຸ່໊ཱb, qaຸ່໊ཱb, qaຸ່໊ཱb);
+Test_N(qaຸ໊່ཱb, qaຸ໊່ཱb, qaຸ໊່ཱb, qaຸ໊່ཱb, qaຸ໊່ཱb);
+Test_N(qaຸ່໋ཱb, qaຸ່໋ཱb, qaຸ່໋ཱb, qaຸ່໋ཱb, qaຸ່໋ཱb);
+Test_N(qaຸ໋່ཱb, qaຸ໋່ཱb, qaຸ໋່ཱb, qaຸ໋່ཱb, qaຸ໋່ཱb);
+Test_N(qa᷺̖༘֚b, qa᷺̖༘֚b, qa᷺̖༘֚b, qa᷺̖༘֚b, qa᷺̖༘֚b);
+Test_N(qa᷺༘̖֚b, qa᷺༘̖֚b, qa᷺༘̖֚b, qa᷺༘̖֚b, qa᷺༘̖֚b);
+Test_N(qa᷺̖༙֚b, qa᷺̖༙֚b, qa᷺̖༙֚b, qa᷺̖༙֚b, qa᷺̖༙֚b);
+Test_N(qa᷺༙̖֚b, qa᷺༙̖֚b, qa᷺༙̖֚b, qa᷺༙̖֚b, qa᷺༙̖֚b);
+Test_N(qa᷺̖༵֚b, qa᷺̖༵֚b, qa᷺̖༵֚b, qa᷺̖༵֚b, qa᷺̖༵֚b);
+Test_N(qa᷺༵̖֚b, qa᷺༵̖֚b, qa᷺༵̖֚b, qa᷺༵̖֚b, qa᷺༵̖֚b);
+Test_N(qa᷺̖༷֚b, qa᷺̖༷֚b, qa᷺̖༷֚b, qa᷺̖༷֚b, qa᷺̖༷֚b);
+Test_N(qa᷺༷̖֚b, qa᷺༷̖֚b, qa᷺༷̖֚b, qa᷺༷̖֚b, qa᷺༷̖֚b);
+Test_N(qa᷎̛༹᷺b, qa᷎̛༹᷺b, qa᷎̛༹᷺b, qa᷎̛༹᷺b, qa᷎̛༹᷺b);
+Test_N(qa᷎༹̛᷺b, qa᷎༹̛᷺b, qa᷎༹̛᷺b, qa᷎༹̛᷺b, qa᷎༹̛᷺b);
+Test_N(qa່ཱཱིb, qa່ཱཱིb, qa່ཱཱིb, qa່ཱཱིb, qa່ཱཱིb);
+Test_N(qa່ཱཱིb, qa່ཱཱིb, qa່ཱཱིb, qa່ཱཱིb, qa່ཱཱིb);
+Test_N(qaཱིིུb, qaཱིིུb, qaཱིིུb, qaཱིིུb, qaཱིིུb);
+Test_N(qaཱིིུb, qaཱིིུb, qaཱིིུb, qaཱིིུb, qaཱིིུb);
+Test_N(qaིུུ̡b, qaིུུ̡b, qaིུུ̡b, qaིུུ̡b, qaིུུ̡b);
+Test_N(qaིུུ̡b, qaིུུ̡b, qaིུུ̡b, qaིུུ̡b, qaིུུ̡b);
+Test_N(qaཱིེུb, qaཱིེུb, qaཱིེུb, qaཱིེུb, qaཱིེུb);
+Test_N(qaཱེིུb, qaཱེིུb, qaཱེིུb, qaཱེིུb, qaཱེིུb);
+Test_N(qaཱིཻུb, qaཱིཻུb, qaཱིཻུb, qaཱིཻུb, qaཱིཻུb);
+Test_N(qaཱཻིུb, qaཱཻིུb, qaཱཻིུb, qaཱཻིུb, qaཱཻིུb);
+Test_N(qaཱིོུb, qaཱིོུb, qaཱིོུb, qaཱིོུb, qaཱིོུb);
+Test_N(qaཱོིུb, qaཱོིུb, qaཱོིུb, qaཱོིུb, qaཱོིུb);
+Test_N(qaཱིཽུb, qaཱིཽུb, qaཱིཽུb, qaཱིཽུb, qaཱིཽུb);
+Test_N(qaཱཽིུb, qaཱཽིུb, qaཱཽིུb, qaཱཽིུb, qaཱཽིུb);
+Test_N(qaཱིྀུb, qaཱིྀུb, qaཱིྀུb, qaཱིྀུb, qaཱིྀུb);
+Test_N(qaཱྀིུb, qaཱྀིུb, qaཱྀིུb, qaཱྀིུb, qaཱྀིུb);
+Test_N(qà֮ྂ̕b, qà֮ྂ̕b, qà֮ྂ̕b, qà֮ྂ̕b, qà֮ྂ̕b);
+Test_N(qa֮ྂ̀̕b, qa֮ྂ̀̕b, qa֮ྂ̀̕b, qa֮ྂ̀̕b, qa֮ྂ̀̕b);
+Test_N(qà֮ྃ̕b, qà֮ྃ̕b, qà֮ྃ̕b, qà֮ྃ̕b, qà֮ྃ̕b);
+Test_N(qa֮ྃ̀̕b, qa֮ྃ̀̕b, qa֮ྃ̀̕b, qa֮ྃ̀̕b, qa֮ྃ̀̕b);
+Test_N(qa゙्྄ְb, qa゙्྄ְb, qa゙्྄ְb, qa゙्྄ְb, qa゙्྄ְb);
+Test_N(qa゙྄्ְb, qa゙྄्ְb, qa゙྄्ְb, qa゙྄्ְb, qa゙྄्ְb);
+Test_N(qà֮྆̕b, qà֮྆̕b, qà֮྆̕b, qà֮྆̕b, qà֮྆̕b);
+Test_N(qa֮྆̀̕b, qa֮྆̀̕b, qa֮྆̀̕b, qa֮྆̀̕b, qa֮྆̀̕b);
+Test_N(qà֮྇̕b, qà֮྇̕b, qà֮྇̕b, qà֮྇̕b, qà֮྇̕b);
+Test_N(qa֮྇̀̕b, qa֮྇̀̕b, qa֮྇̀̕b, qa֮྇̀̕b, qa֮྇̀̕b);
+Test_N(qa᷺̖࿆֚b, qa᷺̖࿆֚b, qa᷺̖࿆֚b, qa᷺̖࿆֚b, qa᷺̖࿆֚b);
+Test_N(qa᷺࿆̖֚b, qa᷺࿆̖֚b, qa᷺࿆̖֚b, qa᷺࿆̖֚b, qa᷺࿆̖֚b);
+Test_N(qa𖿰़့゙b, qa𖿰़့゙b, qa𖿰़့゙b, qa𖿰़့゙b, qa𖿰़့゙b);
+Test_N(qa𖿰့़゙b, qa𖿰့़゙b, qa𖿰့़゙b, qa𖿰့़゙b, qa𖿰့़゙b);
+Test_N(qa゙्္ְb, qa゙्္ְb, qa゙्္ְb, qa゙्္ְb, qa゙्္ְb);
+Test_N(qa゙္्ְb, qa゙္्ְb, qa゙္्ְb, qa゙္्ְb, qa゙္्ְb);
+Test_N(qa゙्်ְb, qa゙्်ְb, qa゙्်ְb, qa゙्်ְb, qa゙्်ְb);
+Test_N(qa゙်्ְb, qa゙်्ְb, qa゙်्ְb, qa゙်्ְb, qa゙်्ְb);
+Test_N(qa᷺̖ႍ֚b, qa᷺̖ႍ֚b, qa᷺̖ႍ֚b, qa᷺̖ႍ֚b, qa᷺̖ႍ֚b);
+Test_N(qa᷺ႍ̖֚b, qa᷺ႍ̖֚b, qa᷺ႍ̖֚b, qa᷺ႍ̖֚b, qa᷺ႍ̖֚b);
+Test_N(qà֮፝̕b, qà֮፝̕b, qà֮፝̕b, qà֮፝̕b, qà֮፝̕b);
+Test_N(qa֮፝̀̕b, qa֮፝̀̕b, qa֮፝̀̕b, qa֮፝̀̕b, qa֮፝̀̕b);
+Test_N(qà֮፞̕b, qà֮፞̕b, qà֮፞̕b, qà֮፞̕b, qà֮፞̕b);
+Test_N(qa֮፞̀̕b, qa֮፞̀̕b, qa֮፞̀̕b, qa֮፞̀̕b, qa֮፞̀̕b);
+Test_N(qà֮፟̕b, qà֮፟̕b, qà֮፟̕b, qà֮፟̕b, qà֮፟̕b);
+Test_N(qa֮፟̀̕b, qa֮፟̀̕b, qa֮፟̀̕b, qa֮፟̀̕b, qa֮፟̀̕b);
+Test_N(qa゙्᜔ְb, qa゙्᜔ְb, qa゙्᜔ְb, qa゙्᜔ְb, qa゙्᜔ְb);
+Test_N(qa゙᜔्ְb, qa゙᜔्ְb, qa゙᜔्ְb, qa゙᜔्ְb, qa゙᜔्ְb);
+Test_N(qa゙्᜕ְb, qa゙्᜕ְb, qa゙्᜕ְb, qa゙्᜕ְb, qa゙्᜕ְb);
+Test_N(qa゙᜕्ְb, qa゙᜕्ְb, qa゙᜕्ְb, qa゙᜕्ְb, qa゙᜕्ְb);
+Test_N(qa゙्᜴ְb, qa゙्᜴ְb, qa゙्᜴ְb, qa゙्᜴ְb, qa゙्᜴ְb);
+Test_N(qa゙᜴्ְb, qa゙᜴्ְb, qa゙᜴्ְb, qa゙᜴्ְb, qa゙᜴्ְb);
+Test_N(qa゙्្ְb, qa゙्្ְb, qa゙्្ְb, qa゙्្ְb, qa゙्្ְb);
+Test_N(qa゙្्ְb, qa゙្्ְb, qa゙្्ְb, qa゙្्ְb, qa゙្्ְb);
+Test_N(qà֮៝̕b, qà֮៝̕b, qà֮៝̕b, qà֮៝̕b, qà֮៝̕b);
+Test_N(qa֮៝̀̕b, qa֮៝̀̕b, qa֮៝̀̕b, qa֮៝̀̕b, qa֮៝̀̕b);
+Test_N(qà𝅭֮ᢩb, qà𝅭֮ᢩb, qà𝅭֮ᢩb, qà𝅭֮ᢩb, qà𝅭֮ᢩb);
+Test_N(qà𝅭ᢩ֮b, qà𝅭ᢩ֮b, qà𝅭ᢩ֮b, qà𝅭ᢩ֮b, qà𝅭ᢩ֮b);
+Test_N(qa̖֚᤹〮b, qa̖֚᤹〮b, qa̖֚᤹〮b, qa̖֚᤹〮b, qa̖֚᤹〮b);
+Test_N(qa̖᤹֚〮b, qa̖᤹֚〮b, qa̖᤹֚〮b, qa̖᤹֚〮b, qa̖᤹֚〮b);
+Test_N(qà֮᤺̕b, qà֮᤺̕b, qà֮᤺̕b, qà֮᤺̕b, qà֮᤺̕b);
+Test_N(qa֮᤺̀̕b, qa֮᤺̀̕b, qa֮᤺̀̕b, qa֮᤺̀̕b, qa֮᤺̀̕b);
+Test_N(qa᷺̖᤻֚b, qa᷺̖᤻֚b, qa᷺̖᤻֚b, qa᷺̖᤻֚b, qa᷺̖᤻֚b);
+Test_N(qa᷺᤻̖֚b, qa᷺᤻̖֚b, qa᷺᤻̖֚b, qa᷺᤻̖֚b, qa᷺᤻̖֚b);
+Test_N(qà֮ᨗ̕b, qà֮ᨗ̕b, qà֮ᨗ̕b, qà֮ᨗ̕b, qà֮ᨗ̕b);
+Test_N(qa֮ᨗ̀̕b, qa֮ᨗ̀̕b, qa֮ᨗ̀̕b, qa֮ᨗ̀̕b, qa֮ᨗ̀̕b);
+Test_N(qa᷺̖ᨘ֚b, qa᷺̖ᨘ֚b, qa᷺̖ᨘ֚b, qa᷺̖ᨘ֚b, qa᷺̖ᨘ֚b);
+Test_N(qa᷺ᨘ̖֚b, qa᷺ᨘ̖֚b, qa᷺ᨘ̖֚b, qa᷺ᨘ̖֚b, qa᷺ᨘ̖֚b);
+Test_N(qa゙्᩠ְb, qa゙्᩠ְb, qa゙्᩠ְb, qa゙्᩠ְb, qa゙्᩠ְb);
+Test_N(qa゙᩠्ְb, qa゙᩠्ְb, qa゙᩠्ְb, qa゙᩠्ְb, qa゙᩠्ְb);
+Test_N(qà֮᩵̕b, qà֮᩵̕b, qà֮᩵̕b, qà֮᩵̕b, qà֮᩵̕b);
+Test_N(qa֮᩵̀̕b, qa֮᩵̀̕b, qa֮᩵̀̕b, qa֮᩵̀̕b, qa֮᩵̀̕b);
+Test_N(qà֮᩶̕b, qà֮᩶̕b, qà֮᩶̕b, qà֮᩶̕b, qà֮᩶̕b);
+Test_N(qa֮᩶̀̕b, qa֮᩶̀̕b, qa֮᩶̀̕b, qa֮᩶̀̕b, qa֮᩶̀̕b);
+Test_N(qà֮᩷̕b, qà֮᩷̕b, qà֮᩷̕b, qà֮᩷̕b, qà֮᩷̕b);
+Test_N(qa֮᩷̀̕b, qa֮᩷̀̕b, qa֮᩷̀̕b, qa֮᩷̀̕b, qa֮᩷̀̕b);
+Test_N(qà֮᩸̕b, qà֮᩸̕b, qà֮᩸̕b, qà֮᩸̕b, qà֮᩸̕b);
+Test_N(qa֮᩸̀̕b, qa֮᩸̀̕b, qa֮᩸̀̕b, qa֮᩸̀̕b, qa֮᩸̀̕b);
+Test_N(qà֮᩹̕b, qà֮᩹̕b, qà֮᩹̕b, qà֮᩹̕b, qà֮᩹̕b);
+Test_N(qa֮᩹̀̕b, qa֮᩹̀̕b, qa֮᩹̀̕b, qa֮᩹̀̕b, qa֮᩹̀̕b);
+Test_N(qà֮᩺̕b, qà֮᩺̕b, qà֮᩺̕b, qà֮᩺̕b, qà֮᩺̕b);
+Test_N(qa֮᩺̀̕b, qa֮᩺̀̕b, qa֮᩺̀̕b, qa֮᩺̀̕b, qa֮᩺̀̕b);
+Test_N(qà֮᩻̕b, qà֮᩻̕b, qà֮᩻̕b, qà֮᩻̕b, qà֮᩻̕b);
+Test_N(qa֮᩻̀̕b, qa֮᩻̀̕b, qa֮᩻̀̕b, qa֮᩻̀̕b, qa֮᩻̀̕b);
+Test_N(qà֮᩼̕b, qà֮᩼̕b, qà֮᩼̕b, qà֮᩼̕b, qà֮᩼̕b);
+Test_N(qa֮᩼̀̕b, qa֮᩼̀̕b, qa֮᩼̀̕b, qa֮᩼̀̕b, qa֮᩼̀̕b);
+Test_N(qa᷺̖᩿֚b, qa᷺̖᩿֚b, qa᷺̖᩿֚b, qa᷺̖᩿֚b, qa᷺̖᩿֚b);
+Test_N(qa᷺᩿̖֚b, qa᷺᩿̖֚b, qa᷺᩿̖֚b, qa᷺᩿̖֚b, qa᷺᩿̖֚b);
+Test_N(qà֮᪰̕b, qà֮᪰̕b, qà֮᪰̕b, qà֮᪰̕b, qà֮᪰̕b);
+Test_N(qa֮᪰̀̕b, qa֮᪰̀̕b, qa֮᪰̀̕b, qa֮᪰̀̕b, qa֮᪰̀̕b);
+Test_N(qà֮᪱̕b, qà֮᪱̕b, qà֮᪱̕b, qà֮᪱̕b, qà֮᪱̕b);
+Test_N(qa֮᪱̀̕b, qa֮᪱̀̕b, qa֮᪱̀̕b, qa֮᪱̀̕b, qa֮᪱̀̕b);
+Test_N(qà֮᪲̕b, qà֮᪲̕b, qà֮᪲̕b, qà֮᪲̕b, qà֮᪲̕b);
+Test_N(qa֮᪲̀̕b, qa֮᪲̀̕b, qa֮᪲̀̕b, qa֮᪲̀̕b, qa֮᪲̀̕b);
+Test_N(qà֮᪳̕b, qà֮᪳̕b, qà֮᪳̕b, qà֮᪳̕b, qà֮᪳̕b);
+Test_N(qa֮᪳̀̕b, qa֮᪳̀̕b, qa֮᪳̀̕b, qa֮᪳̀̕b, qa֮᪳̀̕b);
+Test_N(qà֮᪴̕b, qà֮᪴̕b, qà֮᪴̕b, qà֮᪴̕b, qà֮᪴̕b);
+Test_N(qa֮᪴̀̕b, qa֮᪴̀̕b, qa֮᪴̀̕b, qa֮᪴̀̕b, qa֮᪴̀̕b);
+Test_N(qa᷺̖᪵֚b, qa᷺̖᪵֚b, qa᷺̖᪵֚b, qa᷺̖᪵֚b, qa᷺̖᪵֚b);
+Test_N(qa᷺᪵̖֚b, qa᷺᪵̖֚b, qa᷺᪵̖֚b, qa᷺᪵̖֚b, qa᷺᪵̖֚b);
+Test_N(qa᷺̖᪶֚b, qa᷺̖᪶֚b, qa᷺̖᪶֚b, qa᷺̖᪶֚b, qa᷺̖᪶֚b);
+Test_N(qa᷺᪶̖֚b, qa᷺᪶̖֚b, qa᷺᪶̖֚b, qa᷺᪶̖֚b, qa᷺᪶̖֚b);
+Test_N(qa᷺̖᪷֚b, qa᷺̖᪷֚b, qa᷺̖᪷֚b, qa᷺̖᪷֚b, qa᷺̖᪷֚b);
+Test_N(qa᷺᪷̖֚b, qa᷺᪷̖֚b, qa᷺᪷̖֚b, qa᷺᪷̖֚b, qa᷺᪷̖֚b);
+Test_N(qa᷺̖᪸֚b, qa᷺̖᪸֚b, qa᷺̖᪸֚b, qa᷺̖᪸֚b, qa᷺̖᪸֚b);
+Test_N(qa᷺᪸̖֚b, qa᷺᪸̖֚b, qa᷺᪸̖֚b, qa᷺᪸̖֚b, qa᷺᪸̖֚b);
+Test_N(qa᷺̖᪹֚b, qa᷺̖᪹֚b, qa᷺̖᪹֚b, qa᷺̖᪹֚b, qa᷺̖᪹֚b);
+Test_N(qa᷺᪹̖֚b, qa᷺᪹̖֚b, qa᷺᪹̖֚b, qa᷺᪹̖֚b, qa᷺᪹̖֚b);
+Test_N(qa᷺̖᪺֚b, qa᷺̖᪺֚b, qa᷺̖᪺֚b, qa᷺̖᪺֚b, qa᷺̖᪺֚b);
+Test_N(qa᷺᪺̖֚b, qa᷺᪺̖֚b, qa᷺᪺̖֚b, qa᷺᪺̖֚b, qa᷺᪺̖֚b);
+Test_N(qà֮᪻̕b, qà֮᪻̕b, qà֮᪻̕b, qà֮᪻̕b, qà֮᪻̕b);
+Test_N(qa֮᪻̀̕b, qa֮᪻̀̕b, qa֮᪻̀̕b, qa֮᪻̀̕b, qa֮᪻̀̕b);
+Test_N(qà֮᪼̕b, qà֮᪼̕b, qà֮᪼̕b, qà֮᪼̕b, qà֮᪼̕b);
+Test_N(qa֮᪼̀̕b, qa֮᪼̀̕b, qa֮᪼̀̕b, qa֮᪼̀̕b, qa֮᪼̀̕b);
+Test_N(qa᷺̖᪽֚b, qa᷺̖᪽֚b, qa᷺̖᪽֚b, qa᷺̖᪽֚b, qa᷺̖᪽֚b);
+Test_N(qa᷺᪽̖֚b, qa᷺᪽̖֚b, qa᷺᪽̖֚b, qa᷺᪽̖֚b, qa᷺᪽̖֚b);
+Test_N(qa᷺̖ᪿ֚b, qa᷺̖ᪿ֚b, qa᷺̖ᪿ֚b, qa᷺̖ᪿ֚b, qa᷺̖ᪿ֚b);
+Test_N(qa᷺ᪿ̖֚b, qa᷺ᪿ̖֚b, qa᷺ᪿ̖֚b, qa᷺ᪿ̖֚b, qa᷺ᪿ̖֚b);
+Test_N(qa᷺̖ᫀ֚b, qa᷺̖ᫀ֚b, qa᷺̖ᫀ֚b, qa᷺̖ᫀ֚b, qa᷺̖ᫀ֚b);
+Test_N(qa᷺ᫀ̖֚b, qa᷺ᫀ̖֚b, qa᷺ᫀ̖֚b, qa᷺ᫀ̖֚b, qa᷺ᫀ̖֚b);
+Test_N(qà֮᫁̕b, qà֮᫁̕b, qà֮᫁̕b, qà֮᫁̕b, qà֮᫁̕b);
+Test_N(qa֮᫁̀̕b, qa֮᫁̀̕b, qa֮᫁̀̕b, qa֮᫁̀̕b, qa֮᫁̀̕b);
+Test_N(qà֮᫂̕b, qà֮᫂̕b, qà֮᫂̕b, qà֮᫂̕b, qà֮᫂̕b);
+Test_N(qa֮᫂̀̕b, qa֮᫂̀̕b, qa֮᫂̀̕b, qa֮᫂̀̕b, qa֮᫂̀̕b);
+Test_N(qa᷺̖᫃֚b, qa᷺̖᫃֚b, qa᷺̖᫃֚b, qa᷺̖᫃֚b, qa᷺̖᫃֚b);
+Test_N(qa᷺᫃̖֚b, qa᷺᫃̖֚b, qa᷺᫃̖֚b, qa᷺᫃̖֚b, qa᷺᫃̖֚b);
+Test_N(qa᷺̖᫄֚b, qa᷺̖᫄֚b, qa᷺̖᫄֚b, qa᷺̖᫄֚b, qa᷺̖᫄֚b);
+Test_N(qa᷺᫄̖֚b, qa᷺᫄̖֚b, qa᷺᫄̖֚b, qa᷺᫄̖֚b, qa᷺᫄̖֚b);
+Test_N(qà֮᫅̕b, qà֮᫅̕b, qà֮᫅̕b, qà֮᫅̕b, qà֮᫅̕b);
+Test_N(qa֮᫅̀̕b, qa֮᫅̀̕b, qa֮᫅̀̕b, qa֮᫅̀̕b, qa֮᫅̀̕b);
+Test_N(qà֮᫆̕b, qà֮᫆̕b, qà֮᫆̕b, qà֮᫆̕b, qà֮᫆̕b);
+Test_N(qa֮᫆̀̕b, qa֮᫆̀̕b, qa֮᫆̀̕b, qa֮᫆̀̕b, qa֮᫆̀̕b);
+Test_N(qà֮᫇̕b, qà֮᫇̕b, qà֮᫇̕b, qà֮᫇̕b, qà֮᫇̕b);
+Test_N(qa֮᫇̀̕b, qa֮᫇̀̕b, qa֮᫇̀̕b, qa֮᫇̀̕b, qa֮᫇̀̕b);
+Test_N(qà֮᫈̕b, qà֮᫈̕b, qà֮᫈̕b, qà֮᫈̕b, qà֮᫈̕b);
+Test_N(qa֮᫈̀̕b, qa֮᫈̀̕b, qa֮᫈̀̕b, qa֮᫈̀̕b, qa֮᫈̀̕b);
+Test_N(qà֮᫉̕b, qà֮᫉̕b, qà֮᫉̕b, qà֮᫉̕b, qà֮᫉̕b);
+Test_N(qa֮᫉̀̕b, qa֮᫉̀̕b, qa֮᫉̀̕b, qa֮᫉̀̕b, qa֮᫉̀̕b);
+Test_N(qa᷺̖᫊֚b, qa᷺̖᫊֚b, qa᷺̖᫊֚b, qa᷺̖᫊֚b, qa᷺̖᫊֚b);
+Test_N(qa᷺᫊̖֚b, qa᷺᫊̖֚b, qa᷺᫊̖֚b, qa᷺᫊̖֚b, qa᷺᫊̖֚b);
+Test_N(qà֮᫋̕b, qà֮᫋̕b, qà֮᫋̕b, qà֮᫋̕b, qà֮᫋̕b);
+Test_N(qa֮᫋̀̕b, qa֮᫋̀̕b, qa֮᫋̀̕b, qa֮᫋̀̕b, qa֮᫋̀̕b);
+Test_N(qà֮ᫌ̕b, qà֮ᫌ̕b, qà֮ᫌ̕b, qà֮ᫌ̕b, qà֮ᫌ̕b);
+Test_N(qa֮ᫌ̀̕b, qa֮ᫌ̀̕b, qa֮ᫌ̀̕b, qa֮ᫌ̀̕b, qa֮ᫌ̀̕b);
+Test_N(qà֮ᫍ̕b, qà֮ᫍ̕b, qà֮ᫍ̕b, qà֮ᫍ̕b, qà֮ᫍ̕b);
+Test_N(qa֮ᫍ̀̕b, qa֮ᫍ̀̕b, qa֮ᫍ̀̕b, qa֮ᫍ̀̕b, qa֮ᫍ̀̕b);
+Test_N(qà֮ᫎ̕b, qà֮ᫎ̕b, qà֮ᫎ̕b, qà֮ᫎ̕b, qà֮ᫎ̕b);
+Test_N(qa֮ᫎ̀̕b, qa֮ᫎ̀̕b, qa֮ᫎ̀̕b, qa֮ᫎ̀̕b, qa֮ᫎ̀̕b);
+Test_N(qa𖿰़᬴゙b, qa𖿰़᬴゙b, qa𖿰़᬴゙b, qa𖿰़᬴゙b, qa𖿰़᬴゙b);
+Test_N(qa𖿰᬴़゙b, qa𖿰᬴़゙b, qa𖿰᬴़゙b, qa𖿰᬴़゙b, qa𖿰᬴़゙b);
+Test_N(qa゙्᭄ְb, qa゙्᭄ְb, qa゙्᭄ְb, qa゙्᭄ְb, qa゙्᭄ְb);
+Test_N(qa゙᭄्ְb, qa゙᭄्ְb, qa゙᭄्ְb, qa゙᭄्ְb, qa゙᭄्ְb);
+Test_N(qà֮᭫̕b, qà֮᭫̕b, qà֮᭫̕b, qà֮᭫̕b, qà֮᭫̕b);
+Test_N(qa֮᭫̀̕b, qa֮᭫̀̕b, qa֮᭫̀̕b, qa֮᭫̀̕b, qa֮᭫̀̕b);
+Test_N(qa᷺̖᭬֚b, qa᷺̖᭬֚b, qa᷺̖᭬֚b, qa᷺̖᭬֚b, qa᷺̖᭬֚b);
+Test_N(qa᷺᭬̖֚b, qa᷺᭬̖֚b, qa᷺᭬̖֚b, qa᷺᭬̖֚b, qa᷺᭬̖֚b);
+Test_N(qà֮᭭̕b, qà֮᭭̕b, qà֮᭭̕b, qà֮᭭̕b, qà֮᭭̕b);
+Test_N(qa֮᭭̀̕b, qa֮᭭̀̕b, qa֮᭭̀̕b, qa֮᭭̀̕b, qa֮᭭̀̕b);
+Test_N(qà֮᭮̕b, qà֮᭮̕b, qà֮᭮̕b, qà֮᭮̕b, qà֮᭮̕b);
+Test_N(qa֮᭮̀̕b, qa֮᭮̀̕b, qa֮᭮̀̕b, qa֮᭮̀̕b, qa֮᭮̀̕b);
+Test_N(qà֮᭯̕b, qà֮᭯̕b, qà֮᭯̕b, qà֮᭯̕b, qà֮᭯̕b);
+Test_N(qa֮᭯̀̕b, qa֮᭯̀̕b, qa֮᭯̀̕b, qa֮᭯̀̕b, qa֮᭯̀̕b);
+Test_N(qà֮᭰̕b, qà֮᭰̕b, qà֮᭰̕b, qà֮᭰̕b, qà֮᭰̕b);
+Test_N(qa֮᭰̀̕b, qa֮᭰̀̕b, qa֮᭰̀̕b, qa֮᭰̀̕b, qa֮᭰̀̕b);
+Test_N(qà֮᭱̕b, qà֮᭱̕b, qà֮᭱̕b, qà֮᭱̕b, qà֮᭱̕b);
+Test_N(qa֮᭱̀̕b, qa֮᭱̀̕b, qa֮᭱̀̕b, qa֮᭱̀̕b, qa֮᭱̀̕b);
+Test_N(qà֮᭲̕b, qà֮᭲̕b, qà֮᭲̕b, qà֮᭲̕b, qà֮᭲̕b);
+Test_N(qa֮᭲̀̕b, qa֮᭲̀̕b, qa֮᭲̀̕b, qa֮᭲̀̕b, qa֮᭲̀̕b);
+Test_N(qà֮᭳̕b, qà֮᭳̕b, qà֮᭳̕b, qà֮᭳̕b, qà֮᭳̕b);
+Test_N(qa֮᭳̀̕b, qa֮᭳̀̕b, qa֮᭳̀̕b, qa֮᭳̀̕b, qa֮᭳̀̕b);
+Test_N(qa゙्᮪ְb, qa゙्᮪ְb, qa゙्᮪ְb, qa゙्᮪ְb, qa゙्᮪ְb);
+Test_N(qa゙᮪्ְb, qa゙᮪्ְb, qa゙᮪्ְb, qa゙᮪्ְb, qa゙᮪्ְb);
+Test_N(qa゙्᮫ְb, qa゙्᮫ְb, qa゙्᮫ְb, qa゙्᮫ְb, qa゙्᮫ְb);
+Test_N(qa゙᮫्ְb, qa゙᮫्ְb, qa゙᮫्ְb, qa゙᮫्ְb, qa゙᮫्ְb);
+Test_N(qa𖿰़᯦゙b, qa𖿰़᯦゙b, qa𖿰़᯦゙b, qa𖿰़᯦゙b, qa𖿰़᯦゙b);
+Test_N(qa𖿰᯦़゙b, qa𖿰᯦़゙b, qa𖿰᯦़゙b, qa𖿰᯦़゙b, qa𖿰᯦़゙b);
+Test_N(qa゙्᯲ְb, qa゙्᯲ְb, qa゙्᯲ְb, qa゙्᯲ְb, qa゙्᯲ְb);
+Test_N(qa゙᯲्ְb, qa゙᯲्ְb, qa゙᯲्ְb, qa゙᯲्ְb, qa゙᯲्ְb);
+Test_N(qa゙्᯳ְb, qa゙्᯳ְb, qa゙्᯳ְb, qa゙्᯳ְb, qa゙्᯳ְb);
+Test_N(qa゙᯳्ְb, qa゙᯳्ְb, qa゙᯳्ְb, qa゙᯳्ְb, qa゙᯳्ְb);
+Test_N(qa𖿰़᰷゙b, qa𖿰़᰷゙b, qa𖿰़᰷゙b, qa𖿰़᰷゙b, qa𖿰़᰷゙b);
+Test_N(qa𖿰᰷़゙b, qa𖿰᰷़゙b, qa𖿰᰷़゙b, qa𖿰᰷़゙b, qa𖿰᰷़゙b);
+Test_N(qà֮᳐̕b, qà֮᳐̕b, qà֮᳐̕b, qà֮᳐̕b, qà֮᳐̕b);
+Test_N(qa֮᳐̀̕b, qa֮᳐̀̕b, qa֮᳐̀̕b, qa֮᳐̀̕b, qa֮᳐̀̕b);
+Test_N(qà֮᳑̕b, qà֮᳑̕b, qà֮᳑̕b, qà֮᳑̕b, qà֮᳑̕b);
+Test_N(qa֮᳑̀̕b, qa֮᳑̀̕b, qa֮᳑̀̕b, qa֮᳑̀̕b, qa֮᳑̀̕b);
+Test_N(qà֮᳒̕b, qà֮᳒̕b, qà֮᳒̕b, qà֮᳒̕b, qà֮᳒̕b);
+Test_N(qa֮᳒̀̕b, qa֮᳒̀̕b, qa֮᳒̀̕b, qa֮᳒̀̕b, qa֮᳒̀̕b);
+Test_N(qa̴᳔𖿰b, qa̴᳔𖿰b, qa̴᳔𖿰b, qa̴᳔𖿰b, qa̴᳔𖿰b);
+Test_N(qa᳔̴𖿰b, qa᳔̴𖿰b, qa᳔̴𖿰b, qa᳔̴𖿰b, qa᳔̴𖿰b);
+Test_N(qa᷺̖᳕֚b, qa᷺̖᳕֚b, qa᷺̖᳕֚b, qa᷺̖᳕֚b, qa᷺̖᳕֚b);
+Test_N(qa᷺᳕̖֚b, qa᷺᳕̖֚b, qa᷺᳕̖֚b, qa᷺᳕̖֚b, qa᷺᳕̖֚b);
+Test_N(qa᷺̖᳖֚b, qa᷺̖᳖֚b, qa᷺̖᳖֚b, qa᷺̖᳖֚b, qa᷺̖᳖֚b);
+Test_N(qa᷺᳖̖֚b, qa᷺᳖̖֚b, qa᷺᳖̖֚b, qa᷺᳖̖֚b, qa᷺᳖̖֚b);
+Test_N(qa᷺̖᳗֚b, qa᷺̖᳗֚b, qa᷺̖᳗֚b, qa᷺̖᳗֚b, qa᷺̖᳗֚b);
+Test_N(qa᷺᳗̖֚b, qa᷺᳗̖֚b, qa᷺᳗̖֚b, qa᷺᳗̖֚b, qa᷺᳗̖֚b);
+Test_N(qa᷺̖᳘֚b, qa᷺̖᳘֚b, qa᷺̖᳘֚b, qa᷺̖᳘֚b, qa᷺̖᳘֚b);
+Test_N(qa᷺᳘̖֚b, qa᷺᳘̖֚b, qa᷺᳘̖֚b, qa᷺᳘̖֚b, qa᷺᳘̖֚b);
+Test_N(qa᷺̖᳙֚b, qa᷺̖᳙֚b, qa᷺̖᳙֚b, qa᷺̖᳙֚b, qa᷺̖᳙֚b);
+Test_N(qa᷺᳙̖֚b, qa᷺᳙̖֚b, qa᷺᳙̖֚b, qa᷺᳙̖֚b, qa᷺᳙̖֚b);
+Test_N(qà֮᳚̕b, qà֮᳚̕b, qà֮᳚̕b, qà֮᳚̕b, qà֮᳚̕b);
+Test_N(qa֮᳚̀̕b, qa֮᳚̀̕b, qa֮᳚̀̕b, qa֮᳚̀̕b, qa֮᳚̀̕b);
+Test_N(qà֮᳛̕b, qà֮᳛̕b, qà֮᳛̕b, qà֮᳛̕b, qà֮᳛̕b);
+Test_N(qa֮᳛̀̕b, qa֮᳛̀̕b, qa֮᳛̀̕b, qa֮᳛̀̕b, qa֮᳛̀̕b);
+Test_N(qa᷺̖᳜֚b, qa᷺̖᳜֚b, qa᷺̖᳜֚b, qa᷺̖᳜֚b, qa᷺̖᳜֚b);
+Test_N(qa᷺᳜̖֚b, qa᷺᳜̖֚b, qa᷺᳜̖֚b, qa᷺᳜̖֚b, qa᷺᳜̖֚b);
+Test_N(qa᷺̖᳝֚b, qa᷺̖᳝֚b, qa᷺̖᳝֚b, qa᷺̖᳝֚b, qa᷺̖᳝֚b);
+Test_N(qa᷺᳝̖֚b, qa᷺᳝̖֚b, qa᷺᳝̖֚b, qa᷺᳝̖֚b, qa᷺᳝̖֚b);
+Test_N(qa᷺̖᳞֚b, qa᷺̖᳞֚b, qa᷺̖᳞֚b, qa᷺̖᳞֚b, qa᷺̖᳞֚b);
+Test_N(qa᷺᳞̖֚b, qa᷺᳞̖֚b, qa᷺᳞̖֚b, qa᷺᳞̖֚b, qa᷺᳞̖֚b);
+Test_N(qa᷺̖᳟֚b, qa᷺̖᳟֚b, qa᷺̖᳟֚b, qa᷺̖᳟֚b, qa᷺̖᳟֚b);
+Test_N(qa᷺᳟̖֚b, qa᷺᳟̖֚b, qa᷺᳟̖֚b, qa᷺᳟̖֚b, qa᷺᳟̖֚b);
+Test_N(qà֮᳠̕b, qà֮᳠̕b, qà֮᳠̕b, qà֮᳠̕b, qà֮᳠̕b);
+Test_N(qa֮᳠̀̕b, qa֮᳠̀̕b, qa֮᳠̀̕b, qa֮᳠̀̕b, qa֮᳠̀̕b);
+Test_N(qa̴᳢𖿰b, qa̴᳢𖿰b, qa̴᳢𖿰b, qa̴᳢𖿰b, qa̴᳢𖿰b);
+Test_N(qa᳢̴𖿰b, qa᳢̴𖿰b, qa᳢̴𖿰b, qa᳢̴𖿰b, qa᳢̴𖿰b);
+Test_N(qa̴᳣𖿰b, qa̴᳣𖿰b, qa̴᳣𖿰b, qa̴᳣𖿰b, qa̴᳣𖿰b);
+Test_N(qa᳣̴𖿰b, qa᳣̴𖿰b, qa᳣̴𖿰b, qa᳣̴𖿰b, qa᳣̴𖿰b);
+Test_N(qa̴᳤𖿰b, qa̴᳤𖿰b, qa̴᳤𖿰b, qa̴᳤𖿰b, qa̴᳤𖿰b);
+Test_N(qa᳤̴𖿰b, qa᳤̴𖿰b, qa᳤̴𖿰b, qa᳤̴𖿰b, qa᳤̴𖿰b);
+Test_N(qa̴᳥𖿰b, qa̴᳥𖿰b, qa̴᳥𖿰b, qa̴᳥𖿰b, qa̴᳥𖿰b);
+Test_N(qa᳥̴𖿰b, qa᳥̴𖿰b, qa᳥̴𖿰b, qa᳥̴𖿰b, qa᳥̴𖿰b);
+Test_N(qa̴᳦𖿰b, qa̴᳦𖿰b, qa̴᳦𖿰b, qa̴᳦𖿰b, qa̴᳦𖿰b);
+Test_N(qa᳦̴𖿰b, qa᳦̴𖿰b, qa᳦̴𖿰b, qa᳦̴𖿰b, qa᳦̴𖿰b);
+Test_N(qa̴᳧𖿰b, qa̴᳧𖿰b, qa̴᳧𖿰b, qa̴᳧𖿰b, qa̴᳧𖿰b);
+Test_N(qa᳧̴𖿰b, qa᳧̴𖿰b, qa᳧̴𖿰b, qa᳧̴𖿰b, qa᳧̴𖿰b);
+Test_N(qa̴᳨𖿰b, qa̴᳨𖿰b, qa̴᳨𖿰b, qa̴᳨𖿰b, qa̴᳨𖿰b);
+Test_N(qa᳨̴𖿰b, qa᳨̴𖿰b, qa᳨̴𖿰b, qa᳨̴𖿰b, qa᳨̴𖿰b);
+Test_N(qa᷺̖᳭֚b, qa᷺̖᳭֚b, qa᷺̖᳭֚b, qa᷺̖᳭֚b, qa᷺̖᳭֚b);
+Test_N(qa᷺᳭̖֚b, qa᷺᳭̖֚b, qa᷺᳭̖֚b, qa᷺᳭̖֚b, qa᷺᳭̖֚b);
+Test_N(qà֮᳴̕b, qà֮᳴̕b, qà֮᳴̕b, qà֮᳴̕b, qà֮᳴̕b);
+Test_N(qa֮᳴̀̕b, qa֮᳴̀̕b, qa֮᳴̀̕b, qa֮᳴̀̕b, qa֮᳴̀̕b);
+Test_N(qà֮᳸̕b, qà֮᳸̕b, qà֮᳸̕b, qà֮᳸̕b, qà֮᳸̕b);
+Test_N(qa֮᳸̀̕b, qa֮᳸̀̕b, qa֮᳸̀̕b, qa֮᳸̀̕b, qa֮᳸̀̕b);
+Test_N(qà֮᳹̕b, qà֮᳹̕b, qà֮᳹̕b, qà֮᳹̕b, qà֮᳹̕b);
+Test_N(qa֮᳹̀̕b, qa֮᳹̀̕b, qa֮᳹̀̕b, qa֮᳹̀̕b, qa֮᳹̀̕b);
+Test_N(qà֮᷀̕b, qà֮᷀̕b, qà֮᷀̕b, qà֮᷀̕b, qà֮᷀̕b);
+Test_N(qa֮᷀̀̕b, qa֮᷀̀̕b, qa֮᷀̀̕b, qa֮᷀̀̕b, qa֮᷀̀̕b);
+Test_N(qà֮᷁̕b, qà֮᷁̕b, qà֮᷁̕b, qà֮᷁̕b, qà֮᷁̕b);
+Test_N(qa֮᷁̀̕b, qa֮᷁̀̕b, qa֮᷁̀̕b, qa֮᷁̀̕b, qa֮᷁̀̕b);
+Test_N(qa᷺̖᷂֚b, qa᷺̖᷂֚b, qa᷺̖᷂֚b, qa᷺̖᷂֚b, qa᷺̖᷂֚b);
+Test_N(qa᷺᷂̖֚b, qa᷺᷂̖֚b, qa᷺᷂̖֚b, qa᷺᷂̖֚b, qa᷺᷂̖֚b);
+Test_N(qà֮᷃̕b, qà֮᷃̕b, qà֮᷃̕b, qà֮᷃̕b, qà֮᷃̕b);
+Test_N(qa֮᷃̀̕b, qa֮᷃̀̕b, qa֮᷃̀̕b, qa֮᷃̀̕b, qa֮᷃̀̕b);
+Test_N(qà֮᷄̕b, qà֮᷄̕b, qà֮᷄̕b, qà֮᷄̕b, qà֮᷄̕b);
+Test_N(qa֮᷄̀̕b, qa֮᷄̀̕b, qa֮᷄̀̕b, qa֮᷄̀̕b, qa֮᷄̀̕b);
+Test_N(qà֮᷅̕b, qà֮᷅̕b, qà֮᷅̕b, qà֮᷅̕b, qà֮᷅̕b);
+Test_N(qa֮᷅̀̕b, qa֮᷅̀̕b, qa֮᷅̀̕b, qa֮᷅̀̕b, qa֮᷅̀̕b);
+Test_N(qà֮᷆̕b, qà֮᷆̕b, qà֮᷆̕b, qà֮᷆̕b, qà֮᷆̕b);
+Test_N(qa֮᷆̀̕b, qa֮᷆̀̕b, qa֮᷆̀̕b, qa֮᷆̀̕b, qa֮᷆̀̕b);
+Test_N(qà֮᷇̕b, qà֮᷇̕b, qà֮᷇̕b, qà֮᷇̕b, qà֮᷇̕b);
+Test_N(qa֮᷇̀̕b, qa֮᷇̀̕b, qa֮᷇̀̕b, qa֮᷇̀̕b, qa֮᷇̀̕b);
+Test_N(qà֮᷈̕b, qà֮᷈̕b, qà֮᷈̕b, qà֮᷈̕b, qà֮᷈̕b);
+Test_N(qa֮᷈̀̕b, qa֮᷈̀̕b, qa֮᷈̀̕b, qa֮᷈̀̕b, qa֮᷈̀̕b);
+Test_N(qà֮᷉̕b, qà֮᷉̕b, qà֮᷉̕b, qà֮᷉̕b, qà֮᷉̕b);
+Test_N(qa֮᷉̀̕b, qa֮᷉̀̕b, qa֮᷉̀̕b, qa֮᷉̀̕b, qa֮᷉̀̕b);
+Test_N(qa᷺̖᷊֚b, qa᷺̖᷊֚b, qa᷺̖᷊֚b, qa᷺̖᷊֚b, qa᷺̖᷊֚b);
+Test_N(qa᷺᷊̖֚b, qa᷺᷊̖֚b, qa᷺᷊̖֚b, qa᷺᷊̖֚b, qa᷺᷊̖֚b);
+Test_N(qà֮᷋̕b, qà֮᷋̕b, qà֮᷋̕b, qà֮᷋̕b, qà֮᷋̕b);
+Test_N(qa֮᷋̀̕b, qa֮᷋̀̕b, qa֮᷋̀̕b, qa֮᷋̀̕b, qa֮᷋̀̕b);
+Test_N(qà֮᷌̕b, qà֮᷌̕b, qà֮᷌̕b, qà֮᷌̕b, qà֮᷌̕b);
+Test_N(qa֮᷌̀̕b, qa֮᷌̀̕b, qa֮᷌̀̕b, qa֮᷌̀̕b, qa֮᷌̀̕b);
+Test_N(qa͜͝᷍ͅb, qa͜͝᷍ͅb, qa͜͝᷍ͅb, qa͜͝᷍ͅb, qa͜͝᷍ͅb);
+Test_N(qa͜᷍͝ͅb, qa͜᷍͝ͅb, qa͜᷍͝ͅb, qa͜᷍͝ͅb, qa͜᷍͝ͅb);
+Test_N(qa̡᷎᷎̛b, qa̡᷎᷎̛b, qa̡᷎᷎̛b, qa̡᷎᷎̛b, qa̡᷎᷎̛b);
+Test_N(qa̡᷎᷎̛b, qa̡᷎᷎̛b, qa̡᷎᷎̛b, qa̡᷎᷎̛b, qa̡᷎᷎̛b);
+Test_N(qa᷺̖᷏֚b, qa᷺̖᷏֚b, qa᷺̖᷏֚b, qa᷺̖᷏֚b, qa᷺̖᷏֚b);
+Test_N(qa᷺᷏̖֚b, qa᷺᷏̖֚b, qa᷺᷏̖֚b, qa᷺᷏̖֚b, qa᷺᷏̖֚b);
+Test_N(qaུ̡᷐᷎b, qaུ̡᷐᷎b, qaུ̡᷐᷎b, qaུ̡᷐᷎b, qaུ̡᷐᷎b);
+Test_N(qaུ᷐̡᷎b, qaུ᷐̡᷎b, qaུ᷐̡᷎b, qaུ᷐̡᷎b, qaུ᷐̡᷎b);
+Test_N(qà֮᷑̕b, qà֮᷑̕b, qà֮᷑̕b, qà֮᷑̕b, qà֮᷑̕b);
+Test_N(qa֮᷑̀̕b, qa֮᷑̀̕b, qa֮᷑̀̕b, qa֮᷑̀̕b, qa֮᷑̀̕b);
+Test_N(qà֮᷒̕b, qà֮᷒̕b, qà֮᷒̕b, qà֮᷒̕b, qà֮᷒̕b);
+Test_N(qa֮᷒̀̕b, qa֮᷒̀̕b, qa֮᷒̀̕b, qa֮᷒̀̕b, qa֮᷒̀̕b);
+Test_N(qà֮ᷓ̕b, qà֮ᷓ̕b, qà֮ᷓ̕b, qà֮ᷓ̕b, qà֮ᷓ̕b);
+Test_N(qa֮ᷓ̀̕b, qa֮ᷓ̀̕b, qa֮ᷓ̀̕b, qa֮ᷓ̀̕b, qa֮ᷓ̀̕b);
+Test_N(qà֮ᷔ̕b, qà֮ᷔ̕b, qà֮ᷔ̕b, qà֮ᷔ̕b, qà֮ᷔ̕b);
+Test_N(qa֮ᷔ̀̕b, qa֮ᷔ̀̕b, qa֮ᷔ̀̕b, qa֮ᷔ̀̕b, qa֮ᷔ̀̕b);
+Test_N(qà֮ᷕ̕b, qà֮ᷕ̕b, qà֮ᷕ̕b, qà֮ᷕ̕b, qà֮ᷕ̕b);
+Test_N(qa֮ᷕ̀̕b, qa֮ᷕ̀̕b, qa֮ᷕ̀̕b, qa֮ᷕ̀̕b, qa֮ᷕ̀̕b);
+Test_N(qà֮ᷖ̕b, qà֮ᷖ̕b, qà֮ᷖ̕b, qà֮ᷖ̕b, qà֮ᷖ̕b);
+Test_N(qa֮ᷖ̀̕b, qa֮ᷖ̀̕b, qa֮ᷖ̀̕b, qa֮ᷖ̀̕b, qa֮ᷖ̀̕b);
+Test_N(qà֮ᷗ̕b, qà֮ᷗ̕b, qà֮ᷗ̕b, qà֮ᷗ̕b, qà֮ᷗ̕b);
+Test_N(qa֮ᷗ̀̕b, qa֮ᷗ̀̕b, qa֮ᷗ̀̕b, qa֮ᷗ̀̕b, qa֮ᷗ̀̕b);
+Test_N(qà֮ᷘ̕b, qà֮ᷘ̕b, qà֮ᷘ̕b, qà֮ᷘ̕b, qà֮ᷘ̕b);
+Test_N(qa֮ᷘ̀̕b, qa֮ᷘ̀̕b, qa֮ᷘ̀̕b, qa֮ᷘ̀̕b, qa֮ᷘ̀̕b);
+Test_N(qà֮ᷙ̕b, qà֮ᷙ̕b, qà֮ᷙ̕b, qà֮ᷙ̕b, qà֮ᷙ̕b);
+Test_N(qa֮ᷙ̀̕b, qa֮ᷙ̀̕b, qa֮ᷙ̀̕b, qa֮ᷙ̀̕b, qa֮ᷙ̀̕b);
+Test_N(qà֮ᷚ̕b, qà֮ᷚ̕b, qà֮ᷚ̕b, qà֮ᷚ̕b, qà֮ᷚ̕b);
+Test_N(qa֮ᷚ̀̕b, qa֮ᷚ̀̕b, qa֮ᷚ̀̕b, qa֮ᷚ̀̕b, qa֮ᷚ̀̕b);
+Test_N(qà֮ᷛ̕b, qà֮ᷛ̕b, qà֮ᷛ̕b, qà֮ᷛ̕b, qà֮ᷛ̕b);
+Test_N(qa֮ᷛ̀̕b, qa֮ᷛ̀̕b, qa֮ᷛ̀̕b, qa֮ᷛ̀̕b, qa֮ᷛ̀̕b);
+Test_N(qà֮ᷜ̕b, qà֮ᷜ̕b, qà֮ᷜ̕b, qà֮ᷜ̕b, qà֮ᷜ̕b);
+Test_N(qa֮ᷜ̀̕b, qa֮ᷜ̀̕b, qa֮ᷜ̀̕b, qa֮ᷜ̀̕b, qa֮ᷜ̀̕b);
+Test_N(qà֮ᷝ̕b, qà֮ᷝ̕b, qà֮ᷝ̕b, qà֮ᷝ̕b, qà֮ᷝ̕b);
+Test_N(qa֮ᷝ̀̕b, qa֮ᷝ̀̕b, qa֮ᷝ̀̕b, qa֮ᷝ̀̕b, qa֮ᷝ̀̕b);
+Test_N(qà֮ᷞ̕b, qà֮ᷞ̕b, qà֮ᷞ̕b, qà֮ᷞ̕b, qà֮ᷞ̕b);
+Test_N(qa֮ᷞ̀̕b, qa֮ᷞ̀̕b, qa֮ᷞ̀̕b, qa֮ᷞ̀̕b, qa֮ᷞ̀̕b);
+Test_N(qà֮ᷟ̕b, qà֮ᷟ̕b, qà֮ᷟ̕b, qà֮ᷟ̕b, qà֮ᷟ̕b);
+Test_N(qa֮ᷟ̀̕b, qa֮ᷟ̀̕b, qa֮ᷟ̀̕b, qa֮ᷟ̀̕b, qa֮ᷟ̀̕b);
+Test_N(qà֮ᷠ̕b, qà֮ᷠ̕b, qà֮ᷠ̕b, qà֮ᷠ̕b, qà֮ᷠ̕b);
+Test_N(qa֮ᷠ̀̕b, qa֮ᷠ̀̕b, qa֮ᷠ̀̕b, qa֮ᷠ̀̕b, qa֮ᷠ̀̕b);
+Test_N(qà֮ᷡ̕b, qà֮ᷡ̕b, qà֮ᷡ̕b, qà֮ᷡ̕b, qà֮ᷡ̕b);
+Test_N(qa֮ᷡ̀̕b, qa֮ᷡ̀̕b, qa֮ᷡ̀̕b, qa֮ᷡ̀̕b, qa֮ᷡ̀̕b);
+Test_N(qà֮ᷢ̕b, qà֮ᷢ̕b, qà֮ᷢ̕b, qà֮ᷢ̕b, qà֮ᷢ̕b);
+Test_N(qa֮ᷢ̀̕b, qa֮ᷢ̀̕b, qa֮ᷢ̀̕b, qa֮ᷢ̀̕b, qa֮ᷢ̀̕b);
+Test_N(qà֮ᷣ̕b, qà֮ᷣ̕b, qà֮ᷣ̕b, qà֮ᷣ̕b, qà֮ᷣ̕b);
+Test_N(qa֮ᷣ̀̕b, qa֮ᷣ̀̕b, qa֮ᷣ̀̕b, qa֮ᷣ̀̕b, qa֮ᷣ̀̕b);
+Test_N(qà֮ᷤ̕b, qà֮ᷤ̕b, qà֮ᷤ̕b, qà֮ᷤ̕b, qà֮ᷤ̕b);
+Test_N(qa֮ᷤ̀̕b, qa֮ᷤ̀̕b, qa֮ᷤ̀̕b, qa֮ᷤ̀̕b, qa֮ᷤ̀̕b);
+Test_N(qà֮ᷥ̕b, qà֮ᷥ̕b, qà֮ᷥ̕b, qà֮ᷥ̕b, qà֮ᷥ̕b);
+Test_N(qa֮ᷥ̀̕b, qa֮ᷥ̀̕b, qa֮ᷥ̀̕b, qa֮ᷥ̀̕b, qa֮ᷥ̀̕b);
+Test_N(qà֮ᷦ̕b, qà֮ᷦ̕b, qà֮ᷦ̕b, qà֮ᷦ̕b, qà֮ᷦ̕b);
+Test_N(qa֮ᷦ̀̕b, qa֮ᷦ̀̕b, qa֮ᷦ̀̕b, qa֮ᷦ̀̕b, qa֮ᷦ̀̕b);
+Test_N(qà֮ᷧ̕b, qà֮ᷧ̕b, qà֮ᷧ̕b, qà֮ᷧ̕b, qà֮ᷧ̕b);
+Test_N(qa֮ᷧ̀̕b, qa֮ᷧ̀̕b, qa֮ᷧ̀̕b, qa֮ᷧ̀̕b, qa֮ᷧ̀̕b);
+Test_N(qà֮ᷨ̕b, qà֮ᷨ̕b, qà֮ᷨ̕b, qà֮ᷨ̕b, qà֮ᷨ̕b);
+Test_N(qa֮ᷨ̀̕b, qa֮ᷨ̀̕b, qa֮ᷨ̀̕b, qa֮ᷨ̀̕b, qa֮ᷨ̀̕b);
+Test_N(qà֮ᷩ̕b, qà֮ᷩ̕b, qà֮ᷩ̕b, qà֮ᷩ̕b, qà֮ᷩ̕b);
+Test_N(qa֮ᷩ̀̕b, qa֮ᷩ̀̕b, qa֮ᷩ̀̕b, qa֮ᷩ̀̕b, qa֮ᷩ̀̕b);
+Test_N(qà֮ᷪ̕b, qà֮ᷪ̕b, qà֮ᷪ̕b, qà֮ᷪ̕b, qà֮ᷪ̕b);
+Test_N(qa֮ᷪ̀̕b, qa֮ᷪ̀̕b, qa֮ᷪ̀̕b, qa֮ᷪ̀̕b, qa֮ᷪ̀̕b);
+Test_N(qà֮ᷫ̕b, qà֮ᷫ̕b, qà֮ᷫ̕b, qà֮ᷫ̕b, qà֮ᷫ̕b);
+Test_N(qa֮ᷫ̀̕b, qa֮ᷫ̀̕b, qa֮ᷫ̀̕b, qa֮ᷫ̀̕b, qa֮ᷫ̀̕b);
+Test_N(qà֮ᷬ̕b, qà֮ᷬ̕b, qà֮ᷬ̕b, qà֮ᷬ̕b, qà֮ᷬ̕b);
+Test_N(qa֮ᷬ̀̕b, qa֮ᷬ̀̕b, qa֮ᷬ̀̕b, qa֮ᷬ̀̕b, qa֮ᷬ̀̕b);
+Test_N(qà֮ᷭ̕b, qà֮ᷭ̕b, qà֮ᷭ̕b, qà֮ᷭ̕b, qà֮ᷭ̕b);
+Test_N(qa֮ᷭ̀̕b, qa֮ᷭ̀̕b, qa֮ᷭ̀̕b, qa֮ᷭ̀̕b, qa֮ᷭ̀̕b);
+Test_N(qà֮ᷮ̕b, qà֮ᷮ̕b, qà֮ᷮ̕b, qà֮ᷮ̕b, qà֮ᷮ̕b);
+Test_N(qa֮ᷮ̀̕b, qa֮ᷮ̀̕b, qa֮ᷮ̀̕b, qa֮ᷮ̀̕b, qa֮ᷮ̀̕b);
+Test_N(qà֮ᷯ̕b, qà֮ᷯ̕b, qà֮ᷯ̕b, qà֮ᷯ̕b, qà֮ᷯ̕b);
+Test_N(qa֮ᷯ̀̕b, qa֮ᷯ̀̕b, qa֮ᷯ̀̕b, qa֮ᷯ̀̕b, qa֮ᷯ̀̕b);
+Test_N(qà֮ᷰ̕b, qà֮ᷰ̕b, qà֮ᷰ̕b, qà֮ᷰ̕b, qà֮ᷰ̕b);
+Test_N(qa֮ᷰ̀̕b, qa֮ᷰ̀̕b, qa֮ᷰ̀̕b, qa֮ᷰ̀̕b, qa֮ᷰ̀̕b);
+Test_N(qà֮ᷱ̕b, qà֮ᷱ̕b, qà֮ᷱ̕b, qà֮ᷱ̕b, qà֮ᷱ̕b);
+Test_N(qa֮ᷱ̀̕b, qa֮ᷱ̀̕b, qa֮ᷱ̀̕b, qa֮ᷱ̀̕b, qa֮ᷱ̀̕b);
+Test_N(qà֮ᷲ̕b, qà֮ᷲ̕b, qà֮ᷲ̕b, qà֮ᷲ̕b, qà֮ᷲ̕b);
+Test_N(qa֮ᷲ̀̕b, qa֮ᷲ̀̕b, qa֮ᷲ̀̕b, qa֮ᷲ̀̕b, qa֮ᷲ̀̕b);
+Test_N(qà֮ᷳ̕b, qà֮ᷳ̕b, qà֮ᷳ̕b, qà֮ᷳ̕b, qà֮ᷳ̕b);
+Test_N(qa֮ᷳ̀̕b, qa֮ᷳ̀̕b, qa֮ᷳ̀̕b, qa֮ᷳ̀̕b, qa֮ᷳ̀̕b);
+Test_N(qà֮ᷴ̕b, qà֮ᷴ̕b, qà֮ᷴ̕b, qà֮ᷴ̕b, qà֮ᷴ̕b);
+Test_N(qa֮ᷴ̀̕b, qa֮ᷴ̀̕b, qa֮ᷴ̀̕b, qa֮ᷴ̀̕b, qa֮ᷴ̀̕b);
+Test_N(qà֮᷵̕b, qà֮᷵̕b, qà֮᷵̕b, qà֮᷵̕b, qà֮᷵̕b);
+Test_N(qa֮᷵̀̕b, qa֮᷵̀̕b, qa֮᷵̀̕b, qa֮᷵̀̕b, qa֮᷵̀̕b);
+Test_N(qà̕᷶͜b, qà̕᷶͜b, qà̕᷶͜b, qà̕᷶͜b, qà̕᷶͜b);
+Test_N(qà᷶̕͜b, qà᷶̕͜b, qà᷶̕͜b, qà᷶̕͜b, qà᷶̕͜b);
+Test_N(qà𝅭֮᷷b, qà𝅭֮᷷b, qà𝅭֮᷷b, qà𝅭֮᷷b, qà𝅭֮᷷b);
+Test_N(qà𝅭᷷֮b, qà𝅭᷷֮b, qà𝅭᷷֮b, qà𝅭᷷֮b, qà𝅭᷷֮b);
+Test_N(qà𝅭֮᷸b, qà𝅭֮᷸b, qà𝅭֮᷸b, qà𝅭֮᷸b, qà𝅭֮᷸b);
+Test_N(qà𝅭᷸֮b, qà𝅭᷸֮b, qà𝅭᷸֮b, qà𝅭᷸֮b, qà𝅭᷸֮b);
+Test_N(qa᷺̖᷹֚b, qa᷺̖᷹֚b, qa᷺̖᷹֚b, qa᷺̖᷹֚b, qa᷺̖᷹֚b);
+Test_N(qa᷺᷹̖֚b, qa᷺᷹̖֚b, qa᷺᷹̖֚b, qa᷺᷹̖֚b, qa᷺᷹̖֚b);
+Test_N(qa̛᷺᷺̖b, qa̛᷺᷺̖b, qa̛᷺᷺̖b, qa̛᷺᷺̖b, qa̛᷺᷺̖b);
+Test_N(qa̛᷺᷺̖b, qa̛᷺᷺̖b, qa̛᷺᷺̖b, qa̛᷺᷺̖b, qa̛᷺᷺̖b);
+Test_N(qà֮᷻̕b, qà֮᷻̕b, qà֮᷻̕b, qà֮᷻̕b, qà֮᷻̕b);
+Test_N(qa֮᷻̀̕b, qa֮᷻̀̕b, qa֮᷻̀̕b, qa֮᷻̀̕b, qa֮᷻̀̕b);
+Test_N(qa̕͜᷼͝b, qa̕͜᷼͝b, qa̕͜᷼͝b, qa̕͜᷼͝b, qa̕͜᷼͝b);
+Test_N(qa̕᷼͜͝b, qa̕᷼͜͝b, qa̕᷼͜͝b, qa̕᷼͜͝b, qa̕᷼͜͝b);
+Test_N(qa᷺̖᷽֚b, qa᷺̖᷽֚b, qa᷺̖᷽֚b, qa᷺̖᷽֚b, qa᷺̖᷽֚b);
+Test_N(qa᷺᷽̖֚b, qa᷺᷽̖֚b, qa᷺᷽̖֚b, qa᷺᷽̖֚b, qa᷺᷽̖֚b);
+Test_N(qà֮᷾̕b, qà֮᷾̕b, qà֮᷾̕b, qà֮᷾̕b, qà֮᷾̕b);
+Test_N(qa֮᷾̀̕b, qa֮᷾̀̕b, qa֮᷾̀̕b, qa֮᷾̀̕b, qa֮᷾̀̕b);
+Test_N(qa᷺̖᷿֚b, qa᷺̖᷿֚b, qa᷺̖᷿֚b, qa᷺̖᷿֚b, qa᷺̖᷿֚b);
+Test_N(qa᷺᷿̖֚b, qa᷺᷿̖֚b, qa᷺᷿̖֚b, qa᷺᷿̖֚b, qa᷺᷿̖֚b);
+Test_N(qà֮⃐̕b, qà֮⃐̕b, qà֮⃐̕b, qà֮⃐̕b, qà֮⃐̕b);
+Test_N(qa֮⃐̀̕b, qa֮⃐̀̕b, qa֮⃐̀̕b, qa֮⃐̀̕b, qa֮⃐̀̕b);
+Test_N(qà֮⃑̕b, qà֮⃑̕b, qà֮⃑̕b, qà֮⃑̕b, qà֮⃑̕b);
+Test_N(qa֮⃑̀̕b, qa֮⃑̀̕b, qa֮⃑̀̕b, qa֮⃑̀̕b, qa֮⃑̀̕b);
+Test_N(qa̴⃒𖿰b, qa̴⃒𖿰b, qa̴⃒𖿰b, qa̴⃒𖿰b, qa̴⃒𖿰b);
+Test_N(qa⃒̴𖿰b, qa⃒̴𖿰b, qa⃒̴𖿰b, qa⃒̴𖿰b, qa⃒̴𖿰b);
+Test_N(qa̴⃓𖿰b, qa̴⃓𖿰b, qa̴⃓𖿰b, qa̴⃓𖿰b, qa̴⃓𖿰b);
+Test_N(qa⃓̴𖿰b, qa⃓̴𖿰b, qa⃓̴𖿰b, qa⃓̴𖿰b, qa⃓̴𖿰b);
+Test_N(qà֮⃔̕b, qà֮⃔̕b, qà֮⃔̕b, qà֮⃔̕b, qà֮⃔̕b);
+Test_N(qa֮⃔̀̕b, qa֮⃔̀̕b, qa֮⃔̀̕b, qa֮⃔̀̕b, qa֮⃔̀̕b);
+Test_N(qà֮⃕̕b, qà֮⃕̕b, qà֮⃕̕b, qà֮⃕̕b, qà֮⃕̕b);
+Test_N(qa֮⃕̀̕b, qa֮⃕̀̕b, qa֮⃕̀̕b, qa֮⃕̀̕b, qa֮⃕̀̕b);
+Test_N(qà֮⃖̕b, qà֮⃖̕b, qà֮⃖̕b, qà֮⃖̕b, qà֮⃖̕b);
+Test_N(qa֮⃖̀̕b, qa֮⃖̀̕b, qa֮⃖̀̕b, qa֮⃖̀̕b, qa֮⃖̀̕b);
+Test_N(qà֮⃗̕b, qà֮⃗̕b, qà֮⃗̕b, qà֮⃗̕b, qà֮⃗̕b);
+Test_N(qa֮⃗̀̕b, qa֮⃗̀̕b, qa֮⃗̀̕b, qa֮⃗̀̕b, qa֮⃗̀̕b);
+Test_N(qa̴⃘𖿰b, qa̴⃘𖿰b, qa̴⃘𖿰b, qa̴⃘𖿰b, qa̴⃘𖿰b);
+Test_N(qa⃘̴𖿰b, qa⃘̴𖿰b, qa⃘̴𖿰b, qa⃘̴𖿰b, qa⃘̴𖿰b);
+Test_N(qa̴⃙𖿰b, qa̴⃙𖿰b, qa̴⃙𖿰b, qa̴⃙𖿰b, qa̴⃙𖿰b);
+Test_N(qa⃙̴𖿰b, qa⃙̴𖿰b, qa⃙̴𖿰b, qa⃙̴𖿰b, qa⃙̴𖿰b);
+Test_N(qa̴⃚𖿰b, qa̴⃚𖿰b, qa̴⃚𖿰b, qa̴⃚𖿰b, qa̴⃚𖿰b);
+Test_N(qa⃚̴𖿰b, qa⃚̴𖿰b, qa⃚̴𖿰b, qa⃚̴𖿰b, qa⃚̴𖿰b);
+Test_N(qà֮⃛̕b, qà֮⃛̕b, qà֮⃛̕b, qà֮⃛̕b, qà֮⃛̕b);
+Test_N(qa֮⃛̀̕b, qa֮⃛̀̕b, qa֮⃛̀̕b, qa֮⃛̀̕b, qa֮⃛̀̕b);
+Test_N(qà֮⃜̕b, qà֮⃜̕b, qà֮⃜̕b, qà֮⃜̕b, qà֮⃜̕b);
+Test_N(qa֮⃜̀̕b, qa֮⃜̀̕b, qa֮⃜̀̕b, qa֮⃜̀̕b, qa֮⃜̀̕b);
+Test_N(qà֮⃡̕b, qà֮⃡̕b, qà֮⃡̕b, qà֮⃡̕b, qà֮⃡̕b);
+Test_N(qa֮⃡̀̕b, qa֮⃡̀̕b, qa֮⃡̀̕b, qa֮⃡̀̕b, qa֮⃡̀̕b);
+Test_N(qa̴⃥𖿰b, qa̴⃥𖿰b, qa̴⃥𖿰b, qa̴⃥𖿰b, qa̴⃥𖿰b);
+Test_N(qa⃥̴𖿰b, qa⃥̴𖿰b, qa⃥̴𖿰b, qa⃥̴𖿰b, qa⃥̴𖿰b);
+Test_N(qa̴⃦𖿰b, qa̴⃦𖿰b, qa̴⃦𖿰b, qa̴⃦𖿰b, qa̴⃦𖿰b);
+Test_N(qa⃦̴𖿰b, qa⃦̴𖿰b, qa⃦̴𖿰b, qa⃦̴𖿰b, qa⃦̴𖿰b);
+Test_N(qà֮⃧̕b, qà֮⃧̕b, qà֮⃧̕b, qà֮⃧̕b, qà֮⃧̕b);
+Test_N(qa֮⃧̀̕b, qa֮⃧̀̕b, qa֮⃧̀̕b, qa֮⃧̀̕b, qa֮⃧̀̕b);
+Test_N(qa᷺̖⃨֚b, qa᷺̖⃨֚b, qa᷺̖⃨֚b, qa᷺̖⃨֚b, qa᷺̖⃨֚b);
+Test_N(qa᷺⃨̖֚b, qa᷺⃨̖֚b, qa᷺⃨̖֚b, qa᷺⃨̖֚b, qa᷺⃨̖֚b);
+Test_N(qà֮⃩̕b, qà֮⃩̕b, qà֮⃩̕b, qà֮⃩̕b, qà֮⃩̕b);
+Test_N(qa֮⃩̀̕b, qa֮⃩̀̕b, qa֮⃩̀̕b, qa֮⃩̀̕b, qa֮⃩̀̕b);
+Test_N(qa̴⃪𖿰b, qa̴⃪𖿰b, qa̴⃪𖿰b, qa̴⃪𖿰b, qa̴⃪𖿰b);
+Test_N(qa⃪̴𖿰b, qa⃪̴𖿰b, qa⃪̴𖿰b, qa⃪̴𖿰b, qa⃪̴𖿰b);
+Test_N(qa̴⃫𖿰b, qa̴⃫𖿰b, qa̴⃫𖿰b, qa̴⃫𖿰b, qa̴⃫𖿰b);
+Test_N(qa⃫̴𖿰b, qa⃫̴𖿰b, qa⃫̴𖿰b, qa⃫̴𖿰b, qa⃫̴𖿰b);
+Test_N(qa᷺̖⃬֚b, qa᷺̖⃬֚b, qa᷺̖⃬֚b, qa᷺̖⃬֚b, qa᷺̖⃬֚b);
+Test_N(qa᷺⃬̖֚b, qa᷺⃬̖֚b, qa᷺⃬̖֚b, qa᷺⃬̖֚b, qa᷺⃬̖֚b);
+Test_N(qa᷺̖⃭֚b, qa᷺̖⃭֚b, qa᷺̖⃭֚b, qa᷺̖⃭֚b, qa᷺̖⃭֚b);
+Test_N(qa᷺⃭̖֚b, qa᷺⃭̖֚b, qa᷺⃭̖֚b, qa᷺⃭̖֚b, qa᷺⃭̖֚b);
+Test_N(qa᷺̖⃮֚b, qa᷺̖⃮֚b, qa᷺̖⃮֚b, qa᷺̖⃮֚b, qa᷺̖⃮֚b);
+Test_N(qa᷺⃮̖֚b, qa᷺⃮̖֚b, qa᷺⃮̖֚b, qa᷺⃮̖֚b, qa᷺⃮̖֚b);
+Test_N(qa᷺̖⃯֚b, qa᷺̖⃯֚b, qa᷺̖⃯֚b, qa᷺̖⃯֚b, qa᷺̖⃯֚b);
+Test_N(qa᷺⃯̖֚b, qa᷺⃯̖֚b, qa᷺⃯̖֚b, qa᷺⃯̖֚b, qa᷺⃯̖֚b);
+Test_N(qà֮⃰̕b, qà֮⃰̕b, qà֮⃰̕b, qà֮⃰̕b, qà֮⃰̕b);
+Test_N(qa֮⃰̀̕b, qa֮⃰̀̕b, qa֮⃰̀̕b, qa֮⃰̀̕b, qa֮⃰̀̕b);
+Test_N(qà֮⳯̕b, qà֮⳯̕b, qà֮⳯̕b, qà֮⳯̕b, qà֮⳯̕b);
+Test_N(qa֮⳯̀̕b, qa֮⳯̀̕b, qa֮⳯̀̕b, qa֮⳯̀̕b, qa֮⳯̀̕b);
+Test_N(qà֮⳰̕b, qà֮⳰̕b, qà֮⳰̕b, qà֮⳰̕b, qà֮⳰̕b);
+Test_N(qa֮⳰̀̕b, qa֮⳰̀̕b, qa֮⳰̀̕b, qa֮⳰̀̕b, qa֮⳰̀̕b);
+Test_N(qà֮⳱̕b, qà֮⳱̕b, qà֮⳱̕b, qà֮⳱̕b, qà֮⳱̕b);
+Test_N(qa֮⳱̀̕b, qa֮⳱̀̕b, qa֮⳱̀̕b, qa֮⳱̀̕b, qa֮⳱̀̕b);
+Test_N(qa゙्⵿ְb, qa゙्⵿ְb, qa゙्⵿ְb, qa゙्⵿ְb, qa゙्⵿ְb);
+Test_N(qa゙⵿्ְb, qa゙⵿्ְb, qa゙⵿्ְb, qa゙⵿्ְb, qa゙⵿्ְb);
+Test_N(qà֮ⷠ̕b, qà֮ⷠ̕b, qà֮ⷠ̕b, qà֮ⷠ̕b, qà֮ⷠ̕b);
+Test_N(qa֮ⷠ̀̕b, qa֮ⷠ̀̕b, qa֮ⷠ̀̕b, qa֮ⷠ̀̕b, qa֮ⷠ̀̕b);
+Test_N(qà֮ⷡ̕b, qà֮ⷡ̕b, qà֮ⷡ̕b, qà֮ⷡ̕b, qà֮ⷡ̕b);
+Test_N(qa֮ⷡ̀̕b, qa֮ⷡ̀̕b, qa֮ⷡ̀̕b, qa֮ⷡ̀̕b, qa֮ⷡ̀̕b);
+Test_N(qà֮ⷢ̕b, qà֮ⷢ̕b, qà֮ⷢ̕b, qà֮ⷢ̕b, qà֮ⷢ̕b);
+Test_N(qa֮ⷢ̀̕b, qa֮ⷢ̀̕b, qa֮ⷢ̀̕b, qa֮ⷢ̀̕b, qa֮ⷢ̀̕b);
+Test_N(qà֮ⷣ̕b, qà֮ⷣ̕b, qà֮ⷣ̕b, qà֮ⷣ̕b, qà֮ⷣ̕b);
+Test_N(qa֮ⷣ̀̕b, qa֮ⷣ̀̕b, qa֮ⷣ̀̕b, qa֮ⷣ̀̕b, qa֮ⷣ̀̕b);
+Test_N(qà֮ⷤ̕b, qà֮ⷤ̕b, qà֮ⷤ̕b, qà֮ⷤ̕b, qà֮ⷤ̕b);
+Test_N(qa֮ⷤ̀̕b, qa֮ⷤ̀̕b, qa֮ⷤ̀̕b, qa֮ⷤ̀̕b, qa֮ⷤ̀̕b);
+Test_N(qà֮ⷥ̕b, qà֮ⷥ̕b, qà֮ⷥ̕b, qà֮ⷥ̕b, qà֮ⷥ̕b);
+Test_N(qa֮ⷥ̀̕b, qa֮ⷥ̀̕b, qa֮ⷥ̀̕b, qa֮ⷥ̀̕b, qa֮ⷥ̀̕b);
+Test_N(qà֮ⷦ̕b, qà֮ⷦ̕b, qà֮ⷦ̕b, qà֮ⷦ̕b, qà֮ⷦ̕b);
+Test_N(qa֮ⷦ̀̕b, qa֮ⷦ̀̕b, qa֮ⷦ̀̕b, qa֮ⷦ̀̕b, qa֮ⷦ̀̕b);
+Test_N(qà֮ⷧ̕b, qà֮ⷧ̕b, qà֮ⷧ̕b, qà֮ⷧ̕b, qà֮ⷧ̕b);
+Test_N(qa֮ⷧ̀̕b, qa֮ⷧ̀̕b, qa֮ⷧ̀̕b, qa֮ⷧ̀̕b, qa֮ⷧ̀̕b);
+Test_N(qà֮ⷨ̕b, qà֮ⷨ̕b, qà֮ⷨ̕b, qà֮ⷨ̕b, qà֮ⷨ̕b);
+Test_N(qa֮ⷨ̀̕b, qa֮ⷨ̀̕b, qa֮ⷨ̀̕b, qa֮ⷨ̀̕b, qa֮ⷨ̀̕b);
+Test_N(qà֮ⷩ̕b, qà֮ⷩ̕b, qà֮ⷩ̕b, qà֮ⷩ̕b, qà֮ⷩ̕b);
+Test_N(qa֮ⷩ̀̕b, qa֮ⷩ̀̕b, qa֮ⷩ̀̕b, qa֮ⷩ̀̕b, qa֮ⷩ̀̕b);
+Test_N(qà֮ⷪ̕b, qà֮ⷪ̕b, qà֮ⷪ̕b, qà֮ⷪ̕b, qà֮ⷪ̕b);
+Test_N(qa֮ⷪ̀̕b, qa֮ⷪ̀̕b, qa֮ⷪ̀̕b, qa֮ⷪ̀̕b, qa֮ⷪ̀̕b);
+Test_N(qà֮ⷫ̕b, qà֮ⷫ̕b, qà֮ⷫ̕b, qà֮ⷫ̕b, qà֮ⷫ̕b);
+Test_N(qa֮ⷫ̀̕b, qa֮ⷫ̀̕b, qa֮ⷫ̀̕b, qa֮ⷫ̀̕b, qa֮ⷫ̀̕b);
+Test_N(qà֮ⷬ̕b, qà֮ⷬ̕b, qà֮ⷬ̕b, qà֮ⷬ̕b, qà֮ⷬ̕b);
+Test_N(qa֮ⷬ̀̕b, qa֮ⷬ̀̕b, qa֮ⷬ̀̕b, qa֮ⷬ̀̕b, qa֮ⷬ̀̕b);
+Test_N(qà֮ⷭ̕b, qà֮ⷭ̕b, qà֮ⷭ̕b, qà֮ⷭ̕b, qà֮ⷭ̕b);
+Test_N(qa֮ⷭ̀̕b, qa֮ⷭ̀̕b, qa֮ⷭ̀̕b, qa֮ⷭ̀̕b, qa֮ⷭ̀̕b);
+Test_N(qà֮ⷮ̕b, qà֮ⷮ̕b, qà֮ⷮ̕b, qà֮ⷮ̕b, qà֮ⷮ̕b);
+Test_N(qa֮ⷮ̀̕b, qa֮ⷮ̀̕b, qa֮ⷮ̀̕b, qa֮ⷮ̀̕b, qa֮ⷮ̀̕b);
+Test_N(qà֮ⷯ̕b, qà֮ⷯ̕b, qà֮ⷯ̕b, qà֮ⷯ̕b, qà֮ⷯ̕b);
+Test_N(qa֮ⷯ̀̕b, qa֮ⷯ̀̕b, qa֮ⷯ̀̕b, qa֮ⷯ̀̕b, qa֮ⷯ̀̕b);
+Test_N(qà֮ⷰ̕b, qà֮ⷰ̕b, qà֮ⷰ̕b, qà֮ⷰ̕b, qà֮ⷰ̕b);
+Test_N(qa֮ⷰ̀̕b, qa֮ⷰ̀̕b, qa֮ⷰ̀̕b, qa֮ⷰ̀̕b, qa֮ⷰ̀̕b);
+Test_N(qà֮ⷱ̕b, qà֮ⷱ̕b, qà֮ⷱ̕b, qà֮ⷱ̕b, qà֮ⷱ̕b);
+Test_N(qa֮ⷱ̀̕b, qa֮ⷱ̀̕b, qa֮ⷱ̀̕b, qa֮ⷱ̀̕b, qa֮ⷱ̀̕b);
+Test_N(qà֮ⷲ̕b, qà֮ⷲ̕b, qà֮ⷲ̕b, qà֮ⷲ̕b, qà֮ⷲ̕b);
+Test_N(qa֮ⷲ̀̕b, qa֮ⷲ̀̕b, qa֮ⷲ̀̕b, qa֮ⷲ̀̕b, qa֮ⷲ̀̕b);
+Test_N(qà֮ⷳ̕b, qà֮ⷳ̕b, qà֮ⷳ̕b, qà֮ⷳ̕b, qà֮ⷳ̕b);
+Test_N(qa֮ⷳ̀̕b, qa֮ⷳ̀̕b, qa֮ⷳ̀̕b, qa֮ⷳ̀̕b, qa֮ⷳ̀̕b);
+Test_N(qà֮ⷴ̕b, qà֮ⷴ̕b, qà֮ⷴ̕b, qà֮ⷴ̕b, qà֮ⷴ̕b);
+Test_N(qa֮ⷴ̀̕b, qa֮ⷴ̀̕b, qa֮ⷴ̀̕b, qa֮ⷴ̀̕b, qa֮ⷴ̀̕b);
+Test_N(qà֮ⷵ̕b, qà֮ⷵ̕b, qà֮ⷵ̕b, qà֮ⷵ̕b, qà֮ⷵ̕b);
+Test_N(qa֮ⷵ̀̕b, qa֮ⷵ̀̕b, qa֮ⷵ̀̕b, qa֮ⷵ̀̕b, qa֮ⷵ̀̕b);
+Test_N(qà֮ⷶ̕b, qà֮ⷶ̕b, qà֮ⷶ̕b, qà֮ⷶ̕b, qà֮ⷶ̕b);
+Test_N(qa֮ⷶ̀̕b, qa֮ⷶ̀̕b, qa֮ⷶ̀̕b, qa֮ⷶ̀̕b, qa֮ⷶ̀̕b);
+Test_N(qà֮ⷷ̕b, qà֮ⷷ̕b, qà֮ⷷ̕b, qà֮ⷷ̕b, qà֮ⷷ̕b);
+Test_N(qa֮ⷷ̀̕b, qa֮ⷷ̀̕b, qa֮ⷷ̀̕b, qa֮ⷷ̀̕b, qa֮ⷷ̀̕b);
+Test_N(qà֮ⷸ̕b, qà֮ⷸ̕b, qà֮ⷸ̕b, qà֮ⷸ̕b, qà֮ⷸ̕b);
+Test_N(qa֮ⷸ̀̕b, qa֮ⷸ̀̕b, qa֮ⷸ̀̕b, qa֮ⷸ̀̕b, qa֮ⷸ̀̕b);
+Test_N(qà֮ⷹ̕b, qà֮ⷹ̕b, qà֮ⷹ̕b, qà֮ⷹ̕b, qà֮ⷹ̕b);
+Test_N(qa֮ⷹ̀̕b, qa֮ⷹ̀̕b, qa֮ⷹ̀̕b, qa֮ⷹ̀̕b, qa֮ⷹ̀̕b);
+Test_N(qà֮ⷺ̕b, qà֮ⷺ̕b, qà֮ⷺ̕b, qà֮ⷺ̕b, qà֮ⷺ̕b);
+Test_N(qa֮ⷺ̀̕b, qa֮ⷺ̀̕b, qa֮ⷺ̀̕b, qa֮ⷺ̀̕b, qa֮ⷺ̀̕b);
+Test_N(qà֮ⷻ̕b, qà֮ⷻ̕b, qà֮ⷻ̕b, qà֮ⷻ̕b, qà֮ⷻ̕b);
+Test_N(qa֮ⷻ̀̕b, qa֮ⷻ̀̕b, qa֮ⷻ̀̕b, qa֮ⷻ̀̕b, qa֮ⷻ̀̕b);
+Test_N(qà֮ⷼ̕b, qà֮ⷼ̕b, qà֮ⷼ̕b, qà֮ⷼ̕b, qà֮ⷼ̕b);
+Test_N(qa֮ⷼ̀̕b, qa֮ⷼ̀̕b, qa֮ⷼ̀̕b, qa֮ⷼ̀̕b, qa֮ⷼ̀̕b);
+Test_N(qà֮ⷽ̕b, qà֮ⷽ̕b, qà֮ⷽ̕b, qà֮ⷽ̕b, qà֮ⷽ̕b);
+Test_N(qa֮ⷽ̀̕b, qa֮ⷽ̀̕b, qa֮ⷽ̀̕b, qa֮ⷽ̀̕b, qa֮ⷽ̀̕b);
+Test_N(qà֮ⷾ̕b, qà֮ⷾ̕b, qà֮ⷾ̕b, qà֮ⷾ̕b, qà֮ⷾ̕b);
+Test_N(qa֮ⷾ̀̕b, qa֮ⷾ̀̕b, qa֮ⷾ̀̕b, qa֮ⷾ̀̕b, qa֮ⷾ̀̕b);
+Test_N(qà֮ⷿ̕b, qà֮ⷿ̕b, qà֮ⷿ̕b, qà֮ⷿ̕b, qà֮ⷿ̕b);
+Test_N(qa֮ⷿ̀̕b, qa֮ⷿ̀̕b, qa֮ⷿ̀̕b, qa֮ⷿ̀̕b, qa֮ⷿ̀̕b);
+Test_N(qa̛᷺〪̖b, qa̛᷺〪̖b, qa̛᷺〪̖b, qa̛᷺〪̖b, qa̛᷺〪̖b);
+Test_N(qa̛〪᷺̖b, qa̛〪᷺̖b, qa̛〪᷺̖b, qa̛〪᷺̖b, qa̛〪᷺̖b);
+Test_N(qà𝅭֮〫b, qà𝅭֮〫b, qà𝅭֮〫b, qà𝅭֮〫b, qà𝅭֮〫b);
+Test_N(qà𝅭〫֮b, qà𝅭〫֮b, qà𝅭〫֮b, qà𝅭〫֮b, qà𝅭〫֮b);
+Test_N(qà̕〬͜b, qà̕〬͜b, qà̕〬͜b, qà̕〬͜b, qà̕〬͜b);
+Test_N(qà〬̕͜b, qà〬̕͜b, qà〬̕͜b, qà〬̕͜b, qà〬̕͜b);
+Test_N(qa̖֚〭〮b, qa̖֚〭〮b, qa̖֚〭〮b, qa̖֚〭〮b, qa̖֚〭〮b);
+Test_N(qa̖〭֚〮b, qa̖〭֚〮b, qa̖〭֚〮b, qa̖〭֚〮b, qa̖〭֚〮b);
+Test_N(qa֚〮〮𝅭b, qa֚〮〮𝅭b, qa֚〮〮𝅭b, qa֚〮〮𝅭b, qa֚〮〮𝅭b);
+Test_N(qa֚〮〮𝅭b, qa֚〮〮𝅭b, qa֚〮〮𝅭b, qa֚〮〮𝅭b, qa֚〮〮𝅭b);
+Test_N(qa֚〮〯𝅭b, qa֚〮〯𝅭b, qa֚〮〯𝅭b, qa֚〮〯𝅭b, qa֚〮〯𝅭b);
+Test_N(qa֚〯〮𝅭b, qa֚〯〮𝅭b, qa֚〯〮𝅭b, qa֚〯〮𝅭b, qa֚〯〮𝅭b);
+Test_N(qa़゙゙्b, qa़゙゙्b, qa़゙゙्b, qa़゙゙्b, qa़゙゙्b);
+Test_N(qa़゙゙्b, qa़゙゙्b, qa़゙゙्b, qa़゙゙्b, qa़゙゙्b);
+Test_N(qa़゙゚्b, qa़゙゚्b, qa़゙゚्b, qa़゙゚्b, qa़゙゚्b);
+Test_N(qa़゚゙्b, qa़゚゙्b, qa़゚゙्b, qa़゚゙्b, qa़゚゙्b);
+Test_N(qà֮꙯̕b, qà֮꙯̕b, qà֮꙯̕b, qà֮꙯̕b, qà֮꙯̕b);
+Test_N(qa֮꙯̀̕b, qa֮꙯̀̕b, qa֮꙯̀̕b, qa֮꙯̀̕b, qa֮꙯̀̕b);
+Test_N(qà֮ꙴ̕b, qà֮ꙴ̕b, qà֮ꙴ̕b, qà֮ꙴ̕b, qà֮ꙴ̕b);
+Test_N(qa֮ꙴ̀̕b, qa֮ꙴ̀̕b, qa֮ꙴ̀̕b, qa֮ꙴ̀̕b, qa֮ꙴ̀̕b);
+Test_N(qà֮ꙵ̕b, qà֮ꙵ̕b, qà֮ꙵ̕b, qà֮ꙵ̕b, qà֮ꙵ̕b);
+Test_N(qa֮ꙵ̀̕b, qa֮ꙵ̀̕b, qa֮ꙵ̀̕b, qa֮ꙵ̀̕b, qa֮ꙵ̀̕b);
+Test_N(qà֮ꙶ̕b, qà֮ꙶ̕b, qà֮ꙶ̕b, qà֮ꙶ̕b, qà֮ꙶ̕b);
+Test_N(qa֮ꙶ̀̕b, qa֮ꙶ̀̕b, qa֮ꙶ̀̕b, qa֮ꙶ̀̕b, qa֮ꙶ̀̕b);
+Test_N(qà֮ꙷ̕b, qà֮ꙷ̕b, qà֮ꙷ̕b, qà֮ꙷ̕b, qà֮ꙷ̕b);
+Test_N(qa֮ꙷ̀̕b, qa֮ꙷ̀̕b, qa֮ꙷ̀̕b, qa֮ꙷ̀̕b, qa֮ꙷ̀̕b);
+Test_N(qà֮ꙸ̕b, qà֮ꙸ̕b, qà֮ꙸ̕b, qà֮ꙸ̕b, qà֮ꙸ̕b);
+Test_N(qa֮ꙸ̀̕b, qa֮ꙸ̀̕b, qa֮ꙸ̀̕b, qa֮ꙸ̀̕b, qa֮ꙸ̀̕b);
+Test_N(qà֮ꙹ̕b, qà֮ꙹ̕b, qà֮ꙹ̕b, qà֮ꙹ̕b, qà֮ꙹ̕b);
+Test_N(qa֮ꙹ̀̕b, qa֮ꙹ̀̕b, qa֮ꙹ̀̕b, qa֮ꙹ̀̕b, qa֮ꙹ̀̕b);
+Test_N(qà֮ꙺ̕b, qà֮ꙺ̕b, qà֮ꙺ̕b, qà֮ꙺ̕b, qà֮ꙺ̕b);
+Test_N(qa֮ꙺ̀̕b, qa֮ꙺ̀̕b, qa֮ꙺ̀̕b, qa֮ꙺ̀̕b, qa֮ꙺ̀̕b);
+Test_N(qà֮ꙻ̕b, qà֮ꙻ̕b, qà֮ꙻ̕b, qà֮ꙻ̕b, qà֮ꙻ̕b);
+Test_N(qa֮ꙻ̀̕b, qa֮ꙻ̀̕b, qa֮ꙻ̀̕b, qa֮ꙻ̀̕b, qa֮ꙻ̀̕b);
+Test_N(qà֮꙼̕b, qà֮꙼̕b, qà֮꙼̕b, qà֮꙼̕b, qà֮꙼̕b);
+Test_N(qa֮꙼̀̕b, qa֮꙼̀̕b, qa֮꙼̀̕b, qa֮꙼̀̕b, qa֮꙼̀̕b);
+Test_N(qà֮꙽̕b, qà֮꙽̕b, qà֮꙽̕b, qà֮꙽̕b, qà֮꙽̕b);
+Test_N(qa֮꙽̀̕b, qa֮꙽̀̕b, qa֮꙽̀̕b, qa֮꙽̀̕b, qa֮꙽̀̕b);
+Test_N(qà֮ꚞ̕b, qà֮ꚞ̕b, qà֮ꚞ̕b, qà֮ꚞ̕b, qà֮ꚞ̕b);
+Test_N(qa֮ꚞ̀̕b, qa֮ꚞ̀̕b, qa֮ꚞ̀̕b, qa֮ꚞ̀̕b, qa֮ꚞ̀̕b);
+Test_N(qà֮ꚟ̕b, qà֮ꚟ̕b, qà֮ꚟ̕b, qà֮ꚟ̕b, qà֮ꚟ̕b);
+Test_N(qa֮ꚟ̀̕b, qa֮ꚟ̀̕b, qa֮ꚟ̀̕b, qa֮ꚟ̀̕b, qa֮ꚟ̀̕b);
+Test_N(qà֮꛰̕b, qà֮꛰̕b, qà֮꛰̕b, qà֮꛰̕b, qà֮꛰̕b);
+Test_N(qa֮꛰̀̕b, qa֮꛰̀̕b, qa֮꛰̀̕b, qa֮꛰̀̕b, qa֮꛰̀̕b);
+Test_N(qà֮꛱̕b, qà֮꛱̕b, qà֮꛱̕b, qà֮꛱̕b, qà֮꛱̕b);
+Test_N(qa֮꛱̀̕b, qa֮꛱̀̕b, qa֮꛱̀̕b, qa֮꛱̀̕b, qa֮꛱̀̕b);
+Test_N(qa゙्꠆ְb, qa゙्꠆ְb, qa゙्꠆ְb, qa゙्꠆ְb, qa゙्꠆ְb);
+Test_N(qa゙꠆्ְb, qa゙꠆्ְb, qa゙꠆्ְb, qa゙꠆्ְb, qa゙꠆्ְb);
+Test_N(qa゙्꠬ְb, qa゙्꠬ְb, qa゙्꠬ְb, qa゙्꠬ְb, qa゙्꠬ְb);
+Test_N(qa゙꠬्ְb, qa゙꠬्ְb, qa゙꠬्ְb, qa゙꠬्ְb, qa゙꠬्ְb);
+Test_N(qa゙्꣄ְb, qa゙्꣄ְb, qa゙्꣄ְb, qa゙्꣄ְb, qa゙्꣄ְb);
+Test_N(qa゙꣄्ְb, qa゙꣄्ְb, qa゙꣄्ְb, qa゙꣄्ְb, qa゙꣄्ְb);
+Test_N(qà֮꣠̕b, qà֮꣠̕b, qà֮꣠̕b, qà֮꣠̕b, qà֮꣠̕b);
+Test_N(qa֮꣠̀̕b, qa֮꣠̀̕b, qa֮꣠̀̕b, qa֮꣠̀̕b, qa֮꣠̀̕b);
+Test_N(qà֮꣡̕b, qà֮꣡̕b, qà֮꣡̕b, qà֮꣡̕b, qà֮꣡̕b);
+Test_N(qa֮꣡̀̕b, qa֮꣡̀̕b, qa֮꣡̀̕b, qa֮꣡̀̕b, qa֮꣡̀̕b);
+Test_N(qà֮꣢̕b, qà֮꣢̕b, qà֮꣢̕b, qà֮꣢̕b, qà֮꣢̕b);
+Test_N(qa֮꣢̀̕b, qa֮꣢̀̕b, qa֮꣢̀̕b, qa֮꣢̀̕b, qa֮꣢̀̕b);
+Test_N(qà֮꣣̕b, qà֮꣣̕b, qà֮꣣̕b, qà֮꣣̕b, qà֮꣣̕b);
+Test_N(qa֮꣣̀̕b, qa֮꣣̀̕b, qa֮꣣̀̕b, qa֮꣣̀̕b, qa֮꣣̀̕b);
+Test_N(qà֮꣤̕b, qà֮꣤̕b, qà֮꣤̕b, qà֮꣤̕b, qà֮꣤̕b);
+Test_N(qa֮꣤̀̕b, qa֮꣤̀̕b, qa֮꣤̀̕b, qa֮꣤̀̕b, qa֮꣤̀̕b);
+Test_N(qà֮꣥̕b, qà֮꣥̕b, qà֮꣥̕b, qà֮꣥̕b, qà֮꣥̕b);
+Test_N(qa֮꣥̀̕b, qa֮꣥̀̕b, qa֮꣥̀̕b, qa֮꣥̀̕b, qa֮꣥̀̕b);
+Test_N(qà֮꣦̕b, qà֮꣦̕b, qà֮꣦̕b, qà֮꣦̕b, qà֮꣦̕b);
+Test_N(qa֮꣦̀̕b, qa֮꣦̀̕b, qa֮꣦̀̕b, qa֮꣦̀̕b, qa֮꣦̀̕b);
+Test_N(qà֮꣧̕b, qà֮꣧̕b, qà֮꣧̕b, qà֮꣧̕b, qà֮꣧̕b);
+Test_N(qa֮꣧̀̕b, qa֮꣧̀̕b, qa֮꣧̀̕b, qa֮꣧̀̕b, qa֮꣧̀̕b);
+Test_N(qà֮꣨̕b, qà֮꣨̕b, qà֮꣨̕b, qà֮꣨̕b, qà֮꣨̕b);
+Test_N(qa֮꣨̀̕b, qa֮꣨̀̕b, qa֮꣨̀̕b, qa֮꣨̀̕b, qa֮꣨̀̕b);
+Test_N(qà֮꣩̕b, qà֮꣩̕b, qà֮꣩̕b, qà֮꣩̕b, qà֮꣩̕b);
+Test_N(qa֮꣩̀̕b, qa֮꣩̀̕b, qa֮꣩̀̕b, qa֮꣩̀̕b, qa֮꣩̀̕b);
+Test_N(qà֮꣪̕b, qà֮꣪̕b, qà֮꣪̕b, qà֮꣪̕b, qà֮꣪̕b);
+Test_N(qa֮꣪̀̕b, qa֮꣪̀̕b, qa֮꣪̀̕b, qa֮꣪̀̕b, qa֮꣪̀̕b);
+Test_N(qà֮꣫̕b, qà֮꣫̕b, qà֮꣫̕b, qà֮꣫̕b, qà֮꣫̕b);
+Test_N(qa֮꣫̀̕b, qa֮꣫̀̕b, qa֮꣫̀̕b, qa֮꣫̀̕b, qa֮꣫̀̕b);
+Test_N(qà֮꣬̕b, qà֮꣬̕b, qà֮꣬̕b, qà֮꣬̕b, qà֮꣬̕b);
+Test_N(qa֮꣬̀̕b, qa֮꣬̀̕b, qa֮꣬̀̕b, qa֮꣬̀̕b, qa֮꣬̀̕b);
+Test_N(qà֮꣭̕b, qà֮꣭̕b, qà֮꣭̕b, qà֮꣭̕b, qà֮꣭̕b);
+Test_N(qa֮꣭̀̕b, qa֮꣭̀̕b, qa֮꣭̀̕b, qa֮꣭̀̕b, qa֮꣭̀̕b);
+Test_N(qà֮꣮̕b, qà֮꣮̕b, qà֮꣮̕b, qà֮꣮̕b, qà֮꣮̕b);
+Test_N(qa֮꣮̀̕b, qa֮꣮̀̕b, qa֮꣮̀̕b, qa֮꣮̀̕b, qa֮꣮̀̕b);
+Test_N(qà֮꣯̕b, qà֮꣯̕b, qà֮꣯̕b, qà֮꣯̕b, qà֮꣯̕b);
+Test_N(qa֮꣯̀̕b, qa֮꣯̀̕b, qa֮꣯̀̕b, qa֮꣯̀̕b, qa֮꣯̀̕b);
+Test_N(qà֮꣰̕b, qà֮꣰̕b, qà֮꣰̕b, qà֮꣰̕b, qà֮꣰̕b);
+Test_N(qa֮꣰̀̕b, qa֮꣰̀̕b, qa֮꣰̀̕b, qa֮꣰̀̕b, qa֮꣰̀̕b);
+Test_N(qà֮꣱̕b, qà֮꣱̕b, qà֮꣱̕b, qà֮꣱̕b, qà֮꣱̕b);
+Test_N(qa֮꣱̀̕b, qa֮꣱̀̕b, qa֮꣱̀̕b, qa֮꣱̀̕b, qa֮꣱̀̕b);
+Test_N(qa᷺̖꤫֚b, qa᷺̖꤫֚b, qa᷺̖꤫֚b, qa᷺̖꤫֚b, qa᷺̖꤫֚b);
+Test_N(qa᷺꤫̖֚b, qa᷺꤫̖֚b, qa᷺꤫̖֚b, qa᷺꤫̖֚b, qa᷺꤫̖֚b);
+Test_N(qa᷺̖꤬֚b, qa᷺̖꤬֚b, qa᷺̖꤬֚b, qa᷺̖꤬֚b, qa᷺̖꤬֚b);
+Test_N(qa᷺꤬̖֚b, qa᷺꤬̖֚b, qa᷺꤬̖֚b, qa᷺꤬̖֚b, qa᷺꤬̖֚b);
+Test_N(qa᷺̖꤭֚b, qa᷺̖꤭֚b, qa᷺̖꤭֚b, qa᷺̖꤭֚b, qa᷺̖꤭֚b);
+Test_N(qa᷺꤭̖֚b, qa᷺꤭̖֚b, qa᷺꤭̖֚b, qa᷺꤭̖֚b, qa᷺꤭̖֚b);
+Test_N(qa゙्꥓ְb, qa゙्꥓ְb, qa゙्꥓ְb, qa゙्꥓ְb, qa゙्꥓ְb);
+Test_N(qa゙꥓्ְb, qa゙꥓्ְb, qa゙꥓्ְb, qa゙꥓्ְb, qa゙꥓्ְb);
+Test_N(qa𖿰़꦳゙b, qa𖿰़꦳゙b, qa𖿰़꦳゙b, qa𖿰़꦳゙b, qa𖿰़꦳゙b);
+Test_N(qa𖿰꦳़゙b, qa𖿰꦳़゙b, qa𖿰꦳़゙b, qa𖿰꦳़゙b, qa𖿰꦳़゙b);
+Test_N(qa゙्꧀ְb, qa゙्꧀ְb, qa゙्꧀ְb, qa゙्꧀ְb, qa゙्꧀ְb);
+Test_N(qa゙꧀्ְb, qa゙꧀्ְb, qa゙꧀्ְb, qa゙꧀्ְb, qa゙꧀्ְb);
+Test_N(qà֮ꪰ̕b, qà֮ꪰ̕b, qà֮ꪰ̕b, qà֮ꪰ̕b, qà֮ꪰ̕b);
+Test_N(qa֮ꪰ̀̕b, qa֮ꪰ̀̕b, qa֮ꪰ̀̕b, qa֮ꪰ̀̕b, qa֮ꪰ̀̕b);
+Test_N(qà֮ꪲ̕b, qà֮ꪲ̕b, qà֮ꪲ̕b, qà֮ꪲ̕b, qà֮ꪲ̕b);
+Test_N(qa֮ꪲ̀̕b, qa֮ꪲ̀̕b, qa֮ꪲ̀̕b, qa֮ꪲ̀̕b, qa֮ꪲ̀̕b);
+Test_N(qà֮ꪳ̕b, qà֮ꪳ̕b, qà֮ꪳ̕b, qà֮ꪳ̕b, qà֮ꪳ̕b);
+Test_N(qa֮ꪳ̀̕b, qa֮ꪳ̀̕b, qa֮ꪳ̀̕b, qa֮ꪳ̀̕b, qa֮ꪳ̀̕b);
+Test_N(qa᷺̖ꪴ֚b, qa᷺̖ꪴ֚b, qa᷺̖ꪴ֚b, qa᷺̖ꪴ֚b, qa᷺̖ꪴ֚b);
+Test_N(qa᷺ꪴ̖֚b, qa᷺ꪴ̖֚b, qa᷺ꪴ̖֚b, qa᷺ꪴ̖֚b, qa᷺ꪴ̖֚b);
+Test_N(qà֮ꪷ̕b, qà֮ꪷ̕b, qà֮ꪷ̕b, qà֮ꪷ̕b, qà֮ꪷ̕b);
+Test_N(qa֮ꪷ̀̕b, qa֮ꪷ̀̕b, qa֮ꪷ̀̕b, qa֮ꪷ̀̕b, qa֮ꪷ̀̕b);
+Test_N(qà֮ꪸ̕b, qà֮ꪸ̕b, qà֮ꪸ̕b, qà֮ꪸ̕b, qà֮ꪸ̕b);
+Test_N(qa֮ꪸ̀̕b, qa֮ꪸ̀̕b, qa֮ꪸ̀̕b, qa֮ꪸ̀̕b, qa֮ꪸ̀̕b);
+Test_N(qà֮ꪾ̕b, qà֮ꪾ̕b, qà֮ꪾ̕b, qà֮ꪾ̕b, qà֮ꪾ̕b);
+Test_N(qa֮ꪾ̀̕b, qa֮ꪾ̀̕b, qa֮ꪾ̀̕b, qa֮ꪾ̀̕b, qa֮ꪾ̀̕b);
+Test_N(qà֮꪿̕b, qà֮꪿̕b, qà֮꪿̕b, qà֮꪿̕b, qà֮꪿̕b);
+Test_N(qa֮꪿̀̕b, qa֮꪿̀̕b, qa֮꪿̀̕b, qa֮꪿̀̕b, qa֮꪿̀̕b);
+Test_N(qà֮꫁̕b, qà֮꫁̕b, qà֮꫁̕b, qà֮꫁̕b, qà֮꫁̕b);
+Test_N(qa֮꫁̀̕b, qa֮꫁̀̕b, qa֮꫁̀̕b, qa֮꫁̀̕b, qa֮꫁̀̕b);
+Test_N(qa゙्꫶ְb, qa゙्꫶ְb, qa゙्꫶ְb, qa゙्꫶ְb, qa゙्꫶ְb);
+Test_N(qa゙꫶्ְb, qa゙꫶्ְb, qa゙꫶्ְb, qa゙꫶्ְb, qa゙꫶्ְb);
+Test_N(qa゙्꯭ְb, qa゙्꯭ְb, qa゙्꯭ְb, qa゙्꯭ְb, qa゙्꯭ְb);
+Test_N(qa゙꯭्ְb, qa゙꯭्ְb, qa゙꯭्ְb, qa゙꯭्ְb, qa゙꯭्ְb);
+Test_N(qaׂﬞﬞًb, qaׂﬞﬞًb, qaׂﬞﬞًb, qaׂﬞﬞًb, qaׂﬞﬞًb);
+Test_N(qaׂﬞﬞًb, qaׂﬞﬞًb, qaׂﬞﬞًb, qaׂﬞﬞًb, qaׂﬞﬞًb);
+Test_N(qà֮︠̕b, qà֮︠̕b, qà֮︠̕b, qà֮︠̕b, qà֮︠̕b);
+Test_N(qa֮︠̀̕b, qa֮︠̀̕b, qa֮︠̀̕b, qa֮︠̀̕b, qa֮︠̀̕b);
+Test_N(qà֮︡̕b, qà֮︡̕b, qà֮︡̕b, qà֮︡̕b, qà֮︡̕b);
+Test_N(qa֮︡̀̕b, qa֮︡̀̕b, qa֮︡̀̕b, qa֮︡̀̕b, qa֮︡̀̕b);
+Test_N(qà֮︢̕b, qà֮︢̕b, qà֮︢̕b, qà֮︢̕b, qà֮︢̕b);
+Test_N(qa֮︢̀̕b, qa֮︢̀̕b, qa֮︢̀̕b, qa֮︢̀̕b, qa֮︢̀̕b);
+Test_N(qà֮︣̕b, qà֮︣̕b, qà֮︣̕b, qà֮︣̕b, qà֮︣̕b);
+Test_N(qa֮︣̀̕b, qa֮︣̀̕b, qa֮︣̀̕b, qa֮︣̀̕b, qa֮︣̀̕b);
+Test_N(qà֮︤̕b, qà֮︤̕b, qà֮︤̕b, qà֮︤̕b, qà֮︤̕b);
+Test_N(qa֮︤̀̕b, qa֮︤̀̕b, qa֮︤̀̕b, qa֮︤̀̕b, qa֮︤̀̕b);
+Test_N(qà֮︥̕b, qà֮︥̕b, qà֮︥̕b, qà֮︥̕b, qà֮︥̕b);
+Test_N(qa֮︥̀̕b, qa֮︥̀̕b, qa֮︥̀̕b, qa֮︥̀̕b, qa֮︥̀̕b);
+Test_N(qà֮︦̕b, qà֮︦̕b, qà֮︦̕b, qà֮︦̕b, qà֮︦̕b);
+Test_N(qa֮︦̀̕b, qa֮︦̀̕b, qa֮︦̀̕b, qa֮︦̀̕b, qa֮︦̀̕b);
+Test_N(qa᷺̖︧֚b, qa᷺̖︧֚b, qa᷺̖︧֚b, qa᷺̖︧֚b, qa᷺̖︧֚b);
+Test_N(qa᷺︧̖֚b, qa᷺︧̖֚b, qa᷺︧̖֚b, qa᷺︧̖֚b, qa᷺︧̖֚b);
+Test_N(qa᷺̖︨֚b, qa᷺̖︨֚b, qa᷺̖︨֚b, qa᷺̖︨֚b, qa᷺̖︨֚b);
+Test_N(qa᷺︨̖֚b, qa᷺︨̖֚b, qa᷺︨̖֚b, qa᷺︨̖֚b, qa᷺︨̖֚b);
+Test_N(qa᷺̖︩֚b, qa᷺̖︩֚b, qa᷺̖︩֚b, qa᷺̖︩֚b, qa᷺̖︩֚b);
+Test_N(qa᷺︩̖֚b, qa᷺︩̖֚b, qa᷺︩̖֚b, qa᷺︩̖֚b, qa᷺︩̖֚b);
+Test_N(qa᷺̖︪֚b, qa᷺̖︪֚b, qa᷺̖︪֚b, qa᷺̖︪֚b, qa᷺̖︪֚b);
+Test_N(qa᷺︪̖֚b, qa᷺︪̖֚b, qa᷺︪̖֚b, qa᷺︪̖֚b, qa᷺︪̖֚b);
+Test_N(qa᷺̖︫֚b, qa᷺̖︫֚b, qa᷺̖︫֚b, qa᷺̖︫֚b, qa᷺̖︫֚b);
+Test_N(qa᷺︫̖֚b, qa᷺︫̖֚b, qa᷺︫̖֚b, qa᷺︫̖֚b, qa᷺︫̖֚b);
+Test_N(qa᷺̖︬֚b, qa᷺̖︬֚b, qa᷺̖︬֚b, qa᷺̖︬֚b, qa᷺̖︬֚b);
+Test_N(qa᷺︬̖֚b, qa᷺︬̖֚b, qa᷺︬̖֚b, qa᷺︬̖֚b, qa᷺︬̖֚b);
+Test_N(qa᷺̖︭֚b, qa᷺̖︭֚b, qa᷺̖︭֚b, qa᷺̖︭֚b, qa᷺̖︭֚b);
+Test_N(qa᷺︭̖֚b, qa᷺︭̖֚b, qa᷺︭̖֚b, qa᷺︭̖֚b, qa᷺︭̖֚b);
+Test_N(qà֮︮̕b, qà֮︮̕b, qà֮︮̕b, qà֮︮̕b, qà֮︮̕b);
+Test_N(qa֮︮̀̕b, qa֮︮̀̕b, qa֮︮̀̕b, qa֮︮̀̕b, qa֮︮̀̕b);
+Test_N(qà֮︯̕b, qà֮︯̕b, qà֮︯̕b, qà֮︯̕b, qà֮︯̕b);
+Test_N(qa֮︯̀̕b, qa֮︯̀̕b, qa֮︯̀̕b, qa֮︯̀̕b, qa֮︯̀̕b);
+Test_N(qa᷺̖𐇽֚b, qa᷺̖𐇽֚b, qa᷺̖𐇽֚b, qa᷺̖𐇽֚b, qa᷺̖𐇽֚b);
+Test_N(qa᷺𐇽̖֚b, qa᷺𐇽̖֚b, qa᷺𐇽̖֚b, qa᷺𐇽̖֚b, qa᷺𐇽̖֚b);
+Test_N(qa᷺̖𐋠֚b, qa᷺̖𐋠֚b, qa᷺̖𐋠֚b, qa᷺̖𐋠֚b, qa᷺̖𐋠֚b);
+Test_N(qa᷺𐋠̖֚b, qa᷺𐋠̖֚b, qa᷺𐋠̖֚b, qa᷺𐋠̖֚b, qa᷺𐋠̖֚b);
+Test_N(qà֮𐍶̕b, qà֮𐍶̕b, qà֮𐍶̕b, qà֮𐍶̕b, qà֮𐍶̕b);
+Test_N(qa֮𐍶̀̕b, qa֮𐍶̀̕b, qa֮𐍶̀̕b, qa֮𐍶̀̕b, qa֮𐍶̀̕b);
+Test_N(qà֮𐍷̕b, qà֮𐍷̕b, qà֮𐍷̕b, qà֮𐍷̕b, qà֮𐍷̕b);
+Test_N(qa֮𐍷̀̕b, qa֮𐍷̀̕b, qa֮𐍷̀̕b, qa֮𐍷̀̕b, qa֮𐍷̀̕b);
+Test_N(qà֮𐍸̕b, qà֮𐍸̕b, qà֮𐍸̕b, qà֮𐍸̕b, qà֮𐍸̕b);
+Test_N(qa֮𐍸̀̕b, qa֮𐍸̀̕b, qa֮𐍸̀̕b, qa֮𐍸̀̕b, qa֮𐍸̀̕b);
+Test_N(qà֮𐍹̕b, qà֮𐍹̕b, qà֮𐍹̕b, qà֮𐍹̕b, qà֮𐍹̕b);
+Test_N(qa֮𐍹̀̕b, qa֮𐍹̀̕b, qa֮𐍹̀̕b, qa֮𐍹̀̕b, qa֮𐍹̀̕b);
+Test_N(qà֮𐍺̕b, qà֮𐍺̕b, qà֮𐍺̕b, qà֮𐍺̕b, qà֮𐍺̕b);
+Test_N(qa֮𐍺̀̕b, qa֮𐍺̀̕b, qa֮𐍺̀̕b, qa֮𐍺̀̕b, qa֮𐍺̀̕b);
+Test_N(qa᷺̖𐨍֚b, qa᷺̖𐨍֚b, qa᷺̖𐨍֚b, qa᷺̖𐨍֚b, qa᷺̖𐨍֚b);
+Test_N(qa᷺𐨍̖֚b, qa᷺𐨍̖֚b, qa᷺𐨍̖֚b, qa᷺𐨍̖֚b, qa᷺𐨍̖֚b);
+Test_N(qà֮𐨏̕b, qà֮𐨏̕b, qà֮𐨏̕b, qà֮𐨏̕b, qà֮𐨏̕b);
+Test_N(qa֮𐨏̀̕b, qa֮𐨏̀̕b, qa֮𐨏̀̕b, qa֮𐨏̀̕b, qa֮𐨏̀̕b);
+Test_N(qà֮𐨸̕b, qà֮𐨸̕b, qà֮𐨸̕b, qà֮𐨸̕b, qà֮𐨸̕b);
+Test_N(qa֮𐨸̀̕b, qa֮𐨸̀̕b, qa֮𐨸̀̕b, qa֮𐨸̀̕b, qa֮𐨸̀̕b);
+Test_N(qa̴𐨹𖿰b, qa̴𐨹𖿰b, qa̴𐨹𖿰b, qa̴𐨹𖿰b, qa̴𐨹𖿰b);
+Test_N(qa𐨹̴𖿰b, qa𐨹̴𖿰b, qa𐨹̴𖿰b, qa𐨹̴𖿰b, qa𐨹̴𖿰b);
+Test_N(qa᷺̖𐨺֚b, qa᷺̖𐨺֚b, qa᷺̖𐨺֚b, qa᷺̖𐨺֚b, qa᷺̖𐨺֚b);
+Test_N(qa᷺𐨺̖֚b, qa᷺𐨺̖֚b, qa᷺𐨺̖֚b, qa᷺𐨺̖֚b, qa᷺𐨺̖֚b);
+Test_N(qa゙्𐨿ְb, qa゙्𐨿ְb, qa゙्𐨿ְb, qa゙्𐨿ְb, qa゙्𐨿ְb);
+Test_N(qa゙𐨿्ְb, qa゙𐨿्ְb, qa゙𐨿्ְb, qa゙𐨿्ְb, qa゙𐨿्ְb);
+Test_N(qà֮𐫥̕b, qà֮𐫥̕b, qà֮𐫥̕b, qà֮𐫥̕b, qà֮𐫥̕b);
+Test_N(qa֮𐫥̀̕b, qa֮𐫥̀̕b, qa֮𐫥̀̕b, qa֮𐫥̀̕b, qa֮𐫥̀̕b);
+Test_N(qa᷺̖𐫦֚b, qa᷺̖𐫦֚b, qa᷺̖𐫦֚b, qa᷺̖𐫦֚b, qa᷺̖𐫦֚b);
+Test_N(qa᷺𐫦̖֚b, qa᷺𐫦̖֚b, qa᷺𐫦̖֚b, qa᷺𐫦̖֚b, qa᷺𐫦̖֚b);
+Test_N(qà֮𐴤̕b, qà֮𐴤̕b, qà֮𐴤̕b, qà֮𐴤̕b, qà֮𐴤̕b);
+Test_N(qa֮𐴤̀̕b, qa֮𐴤̀̕b, qa֮𐴤̀̕b, qa֮𐴤̀̕b, qa֮𐴤̀̕b);
+Test_N(qà֮𐴥̕b, qà֮𐴥̕b, qà֮𐴥̕b, qà֮𐴥̕b, qà֮𐴥̕b);
+Test_N(qa֮𐴥̀̕b, qa֮𐴥̀̕b, qa֮𐴥̀̕b, qa֮𐴥̀̕b, qa֮𐴥̀̕b);
+Test_N(qà֮𐴦̕b, qà֮𐴦̕b, qà֮𐴦̕b, qà֮𐴦̕b, qà֮𐴦̕b);
+Test_N(qa֮𐴦̀̕b, qa֮𐴦̀̕b, qa֮𐴦̀̕b, qa֮𐴦̀̕b, qa֮𐴦̀̕b);
+Test_N(qà֮𐴧̕b, qà֮𐴧̕b, qà֮𐴧̕b, qà֮𐴧̕b, qà֮𐴧̕b);
+Test_N(qa֮𐴧̀̕b, qa֮𐴧̀̕b, qa֮𐴧̀̕b, qa֮𐴧̀̕b, qa֮𐴧̀̕b);
+Test_N(qà֮𐺫̕b, qà֮𐺫̕b, qà֮𐺫̕b, qà֮𐺫̕b, qà֮𐺫̕b);
+Test_N(qa֮𐺫̀̕b, qa֮𐺫̀̕b, qa֮𐺫̀̕b, qa֮𐺫̀̕b, qa֮𐺫̀̕b);
+Test_N(qà֮𐺬̕b, qà֮𐺬̕b, qà֮𐺬̕b, qà֮𐺬̕b, qà֮𐺬̕b);
+Test_N(qa֮𐺬̀̕b, qa֮𐺬̀̕b, qa֮𐺬̀̕b, qa֮𐺬̀̕b, qa֮𐺬̀̕b);
+Test_N(qa᷺̖𐻽֚b, qa᷺̖𐻽֚b, qa᷺̖𐻽֚b, qa᷺̖𐻽֚b, qa᷺̖𐻽֚b);
+Test_N(qa᷺𐻽̖֚b, qa᷺𐻽̖֚b, qa᷺𐻽̖֚b, qa᷺𐻽̖֚b, qa᷺𐻽̖֚b);
+Test_N(qa᷺̖𐻾֚b, qa᷺̖𐻾֚b, qa᷺̖𐻾֚b, qa᷺̖𐻾֚b, qa᷺̖𐻾֚b);
+Test_N(qa᷺𐻾̖֚b, qa᷺𐻾̖֚b, qa᷺𐻾̖֚b, qa᷺𐻾̖֚b, qa᷺𐻾̖֚b);
+Test_N(qa᷺̖𐻿֚b, qa᷺̖𐻿֚b, qa᷺̖𐻿֚b, qa᷺̖𐻿֚b, qa᷺̖𐻿֚b);
+Test_N(qa᷺𐻿̖֚b, qa᷺𐻿̖֚b, qa᷺𐻿̖֚b, qa᷺𐻿̖֚b, qa᷺𐻿̖֚b);
+Test_N(qa᷺̖𐽆֚b, qa᷺̖𐽆֚b, qa᷺̖𐽆֚b, qa᷺̖𐽆֚b, qa᷺̖𐽆֚b);
+Test_N(qa᷺𐽆̖֚b, qa᷺𐽆̖֚b, qa᷺𐽆̖֚b, qa᷺𐽆̖֚b, qa᷺𐽆̖֚b);
+Test_N(qa᷺̖𐽇֚b, qa᷺̖𐽇֚b, qa᷺̖𐽇֚b, qa᷺̖𐽇֚b, qa᷺̖𐽇֚b);
+Test_N(qa᷺𐽇̖֚b, qa᷺𐽇̖֚b, qa᷺𐽇̖֚b, qa᷺𐽇̖֚b, qa᷺𐽇̖֚b);
+Test_N(qà֮𐽈̕b, qà֮𐽈̕b, qà֮𐽈̕b, qà֮𐽈̕b, qà֮𐽈̕b);
+Test_N(qa֮𐽈̀̕b, qa֮𐽈̀̕b, qa֮𐽈̀̕b, qa֮𐽈̀̕b, qa֮𐽈̀̕b);
+Test_N(qà֮𐽉̕b, qà֮𐽉̕b, qà֮𐽉̕b, qà֮𐽉̕b, qà֮𐽉̕b);
+Test_N(qa֮𐽉̀̕b, qa֮𐽉̀̕b, qa֮𐽉̀̕b, qa֮𐽉̀̕b, qa֮𐽉̀̕b);
+Test_N(qà֮𐽊̕b, qà֮𐽊̕b, qà֮𐽊̕b, qà֮𐽊̕b, qà֮𐽊̕b);
+Test_N(qa֮𐽊̀̕b, qa֮𐽊̀̕b, qa֮𐽊̀̕b, qa֮𐽊̀̕b, qa֮𐽊̀̕b);
+Test_N(qa᷺̖𐽋֚b, qa᷺̖𐽋֚b, qa᷺̖𐽋֚b, qa᷺̖𐽋֚b, qa᷺̖𐽋֚b);
+Test_N(qa᷺𐽋̖֚b, qa᷺𐽋̖֚b, qa᷺𐽋̖֚b, qa᷺𐽋̖֚b, qa᷺𐽋̖֚b);
+Test_N(qà֮𐽌̕b, qà֮𐽌̕b, qà֮𐽌̕b, qà֮𐽌̕b, qà֮𐽌̕b);
+Test_N(qa֮𐽌̀̕b, qa֮𐽌̀̕b, qa֮𐽌̀̕b, qa֮𐽌̀̕b, qa֮𐽌̀̕b);
+Test_N(qa᷺̖𐽍֚b, qa᷺̖𐽍֚b, qa᷺̖𐽍֚b, qa᷺̖𐽍֚b, qa᷺̖𐽍֚b);
+Test_N(qa᷺𐽍̖֚b, qa᷺𐽍̖֚b, qa᷺𐽍̖֚b, qa᷺𐽍̖֚b, qa᷺𐽍̖֚b);
+Test_N(qa᷺̖𐽎֚b, qa᷺̖𐽎֚b, qa᷺̖𐽎֚b, qa᷺̖𐽎֚b, qa᷺̖𐽎֚b);
+Test_N(qa᷺𐽎̖֚b, qa᷺𐽎̖֚b, qa᷺𐽎̖֚b, qa᷺𐽎̖֚b, qa᷺𐽎̖֚b);
+Test_N(qa᷺̖𐽏֚b, qa᷺̖𐽏֚b, qa᷺̖𐽏֚b, qa᷺̖𐽏֚b, qa᷺̖𐽏֚b);
+Test_N(qa᷺𐽏̖֚b, qa᷺𐽏̖֚b, qa᷺𐽏̖֚b, qa᷺𐽏̖֚b, qa᷺𐽏̖֚b);
+Test_N(qa᷺̖𐽐֚b, qa᷺̖𐽐֚b, qa᷺̖𐽐֚b, qa᷺̖𐽐֚b, qa᷺̖𐽐֚b);
+Test_N(qa᷺𐽐̖֚b, qa᷺𐽐̖֚b, qa᷺𐽐̖֚b, qa᷺𐽐̖֚b, qa᷺𐽐̖֚b);
+Test_N(qà֮𐾂̕b, qà֮𐾂̕b, qà֮𐾂̕b, qà֮𐾂̕b, qà֮𐾂̕b);
+Test_N(qa֮𐾂̀̕b, qa֮𐾂̀̕b, qa֮𐾂̀̕b, qa֮𐾂̀̕b, qa֮𐾂̀̕b);
+Test_N(qa᷺̖𐾃֚b, qa᷺̖𐾃֚b, qa᷺̖𐾃֚b, qa᷺̖𐾃֚b, qa᷺̖𐾃֚b);
+Test_N(qa᷺𐾃̖֚b, qa᷺𐾃̖֚b, qa᷺𐾃̖֚b, qa᷺𐾃̖֚b, qa᷺𐾃̖֚b);
+Test_N(qà֮𐾄̕b, qà֮𐾄̕b, qà֮𐾄̕b, qà֮𐾄̕b, qà֮𐾄̕b);
+Test_N(qa֮𐾄̀̕b, qa֮𐾄̀̕b, qa֮𐾄̀̕b, qa֮𐾄̀̕b, qa֮𐾄̀̕b);
+Test_N(qa᷺̖𐾅֚b, qa᷺̖𐾅֚b, qa᷺̖𐾅֚b, qa᷺̖𐾅֚b, qa᷺̖𐾅֚b);
+Test_N(qa᷺𐾅̖֚b, qa᷺𐾅̖֚b, qa᷺𐾅̖֚b, qa᷺𐾅̖֚b, qa᷺𐾅̖֚b);
+Test_N(qa゙्𑁆ְb, qa゙्𑁆ְb, qa゙्𑁆ְb, qa゙्𑁆ְb, qa゙्𑁆ְb);
+Test_N(qa゙𑁆्ְb, qa゙𑁆्ְb, qa゙𑁆्ְb, qa゙𑁆्ְb, qa゙𑁆्ְb);
+Test_N(qa゙्𑁰ְb, qa゙्𑁰ְb, qa゙्𑁰ְb, qa゙्𑁰ְb, qa゙्𑁰ְb);
+Test_N(qa゙𑁰्ְb, qa゙𑁰्ְb, qa゙𑁰्ְb, qa゙𑁰्ְb, qa゙𑁰्ְb);
+Test_N(qa゙्𑁿ְb, qa゙्𑁿ְb, qa゙्𑁿ְb, qa゙्𑁿ְb, qa゙्𑁿ְb);
+Test_N(qa゙𑁿्ְb, qa゙𑁿्ְb, qa゙𑁿्ְb, qa゙𑁿्ְb, qa゙𑁿्ְb);
+Test_N(qa゙्𑂹ְb, qa゙्𑂹ְb, qa゙्𑂹ְb, qa゙्𑂹ְb, qa゙्𑂹ְb);
+Test_N(qa゙𑂹्ְb, qa゙𑂹्ְb, qa゙𑂹्ְb, qa゙𑂹्ְb, qa゙𑂹्ְb);
+Test_N(qa𖿰़𑂺゙b, qa𖿰़𑂺゙b, qa𖿰़𑂺゙b, qa𖿰़𑂺゙b, qa𖿰़𑂺゙b);
+Test_N(qa𖿰𑂺़゙b, qa𖿰𑂺़゙b, qa𖿰𑂺़゙b, qa𖿰𑂺़゙b, qa𖿰𑂺़゙b);
+Test_N(qà֮𑄀̕b, qà֮𑄀̕b, qà֮𑄀̕b, qà֮𑄀̕b, qà֮𑄀̕b);
+Test_N(qa֮𑄀̀̕b, qa֮𑄀̀̕b, qa֮𑄀̀̕b, qa֮𑄀̀̕b, qa֮𑄀̀̕b);
+Test_N(qà֮𑄁̕b, qà֮𑄁̕b, qà֮𑄁̕b, qà֮𑄁̕b, qà֮𑄁̕b);
+Test_N(qa֮𑄁̀̕b, qa֮𑄁̀̕b, qa֮𑄁̀̕b, qa֮𑄁̀̕b, qa֮𑄁̀̕b);
+Test_N(qà֮𑄂̕b, qà֮𑄂̕b, qà֮𑄂̕b, qà֮𑄂̕b, qà֮𑄂̕b);
+Test_N(qa֮𑄂̀̕b, qa֮𑄂̀̕b, qa֮𑄂̀̕b, qa֮𑄂̀̕b, qa֮𑄂̀̕b);
+Test_N(qa゙्𑄳ְb, qa゙्𑄳ְb, qa゙्𑄳ְb, qa゙्𑄳ְb, qa゙्𑄳ְb);
+Test_N(qa゙𑄳्ְb, qa゙𑄳्ְb, qa゙𑄳्ְb, qa゙𑄳्ְb, qa゙𑄳्ְb);
+Test_N(qa゙्𑄴ְb, qa゙्𑄴ְb, qa゙्𑄴ְb, qa゙्𑄴ְb, qa゙्𑄴ְb);
+Test_N(qa゙𑄴्ְb, qa゙𑄴्ְb, qa゙𑄴्ְb, qa゙𑄴्ְb, qa゙𑄴्ְb);
+Test_N(qa𖿰़𑅳゙b, qa𖿰़𑅳゙b, qa𖿰़𑅳゙b, qa𖿰़𑅳゙b, qa𖿰़𑅳゙b);
+Test_N(qa𖿰𑅳़゙b, qa𖿰𑅳़゙b, qa𖿰𑅳़゙b, qa𖿰𑅳़゙b, qa𖿰𑅳़゙b);
+Test_N(qa゙्𑇀ְb, qa゙्𑇀ְb, qa゙्𑇀ְb, qa゙्𑇀ְb, qa゙्𑇀ְb);
+Test_N(qa゙𑇀्ְb, qa゙𑇀्ְb, qa゙𑇀्ְb, qa゙𑇀्ְb, qa゙𑇀्ְb);
+Test_N(qa𖿰़𑇊゙b, qa𖿰़𑇊゙b, qa𖿰़𑇊゙b, qa𖿰़𑇊゙b, qa𖿰़𑇊゙b);
+Test_N(qa𖿰𑇊़゙b, qa𖿰𑇊़゙b, qa𖿰𑇊़゙b, qa𖿰𑇊़゙b, qa𖿰𑇊़゙b);
+Test_N(qa゙्𑈵ְb, qa゙्𑈵ְb, qa゙्𑈵ְb, qa゙्𑈵ְb, qa゙्𑈵ְb);
+Test_N(qa゙𑈵्ְb, qa゙𑈵्ְb, qa゙𑈵्ְb, qa゙𑈵्ְb, qa゙𑈵्ְb);
+Test_N(qa𖿰़𑈶゙b, qa𖿰़𑈶゙b, qa𖿰़𑈶゙b, qa𖿰़𑈶゙b, qa𖿰़𑈶゙b);
+Test_N(qa𖿰𑈶़゙b, qa𖿰𑈶़゙b, qa𖿰𑈶़゙b, qa𖿰𑈶़゙b, qa𖿰𑈶़゙b);
+Test_N(qa𖿰़𑋩゙b, qa𖿰़𑋩゙b, qa𖿰़𑋩゙b, qa𖿰़𑋩゙b, qa𖿰़𑋩゙b);
+Test_N(qa𖿰𑋩़゙b, qa𖿰𑋩़゙b, qa𖿰𑋩़゙b, qa𖿰𑋩़゙b, qa𖿰𑋩़゙b);
+Test_N(qa゙्𑋪ְb, qa゙्𑋪ְb, qa゙्𑋪ְb, qa゙्𑋪ְb, qa゙्𑋪ְb);
+Test_N(qa゙𑋪्ְb, qa゙𑋪्ְb, qa゙𑋪्ְb, qa゙𑋪्ְb, qa゙𑋪्ְb);
+Test_N(qa𖿰़𑌻゙b, qa𖿰़𑌻゙b, qa𖿰़𑌻゙b, qa𖿰़𑌻゙b, qa𖿰़𑌻゙b);
+Test_N(qa𖿰𑌻़゙b, qa𖿰𑌻़゙b, qa𖿰𑌻़゙b, qa𖿰𑌻़゙b, qa𖿰𑌻़゙b);
+Test_N(qa𖿰़𑌼゙b, qa𖿰़𑌼゙b, qa𖿰़𑌼゙b, qa𖿰़𑌼゙b, qa𖿰़𑌼゙b);
+Test_N(qa𖿰𑌼़゙b, qa𖿰𑌼़゙b, qa𖿰𑌼़゙b, qa𖿰𑌼़゙b, qa𖿰𑌼़゙b);
+Test_N(qa゙्𑍍ְb, qa゙्𑍍ְb, qa゙्𑍍ְb, qa゙्𑍍ְb, qa゙्𑍍ְb);
+Test_N(qa゙𑍍्ְb, qa゙𑍍्ְb, qa゙𑍍्ְb, qa゙𑍍्ְb, qa゙𑍍्ְb);
+Test_N(qà֮𑍦̕b, qà֮𑍦̕b, qà֮𑍦̕b, qà֮𑍦̕b, qà֮𑍦̕b);
+Test_N(qa֮𑍦̀̕b, qa֮𑍦̀̕b, qa֮𑍦̀̕b, qa֮𑍦̀̕b, qa֮𑍦̀̕b);
+Test_N(qà֮𑍧̕b, qà֮𑍧̕b, qà֮𑍧̕b, qà֮𑍧̕b, qà֮𑍧̕b);
+Test_N(qa֮𑍧̀̕b, qa֮𑍧̀̕b, qa֮𑍧̀̕b, qa֮𑍧̀̕b, qa֮𑍧̀̕b);
+Test_N(qà֮𑍨̕b, qà֮𑍨̕b, qà֮𑍨̕b, qà֮𑍨̕b, qà֮𑍨̕b);
+Test_N(qa֮𑍨̀̕b, qa֮𑍨̀̕b, qa֮𑍨̀̕b, qa֮𑍨̀̕b, qa֮𑍨̀̕b);
+Test_N(qà֮𑍩̕b, qà֮𑍩̕b, qà֮𑍩̕b, qà֮𑍩̕b, qà֮𑍩̕b);
+Test_N(qa֮𑍩̀̕b, qa֮𑍩̀̕b, qa֮𑍩̀̕b, qa֮𑍩̀̕b, qa֮𑍩̀̕b);
+Test_N(qà֮𑍪̕b, qà֮𑍪̕b, qà֮𑍪̕b, qà֮𑍪̕b, qà֮𑍪̕b);
+Test_N(qa֮𑍪̀̕b, qa֮𑍪̀̕b, qa֮𑍪̀̕b, qa֮𑍪̀̕b, qa֮𑍪̀̕b);
+Test_N(qà֮𑍫̕b, qà֮𑍫̕b, qà֮𑍫̕b, qà֮𑍫̕b, qà֮𑍫̕b);
+Test_N(qa֮𑍫̀̕b, qa֮𑍫̀̕b, qa֮𑍫̀̕b, qa֮𑍫̀̕b, qa֮𑍫̀̕b);
+Test_N(qà֮𑍬̕b, qà֮𑍬̕b, qà֮𑍬̕b, qà֮𑍬̕b, qà֮𑍬̕b);
+Test_N(qa֮𑍬̀̕b, qa֮𑍬̀̕b, qa֮𑍬̀̕b, qa֮𑍬̀̕b, qa֮𑍬̀̕b);
+Test_N(qà֮𑍰̕b, qà֮𑍰̕b, qà֮𑍰̕b, qà֮𑍰̕b, qà֮𑍰̕b);
+Test_N(qa֮𑍰̀̕b, qa֮𑍰̀̕b, qa֮𑍰̀̕b, qa֮𑍰̀̕b, qa֮𑍰̀̕b);
+Test_N(qà֮𑍱̕b, qà֮𑍱̕b, qà֮𑍱̕b, qà֮𑍱̕b, qà֮𑍱̕b);
+Test_N(qa֮𑍱̀̕b, qa֮𑍱̀̕b, qa֮𑍱̀̕b, qa֮𑍱̀̕b, qa֮𑍱̀̕b);
+Test_N(qà֮𑍲̕b, qà֮𑍲̕b, qà֮𑍲̕b, qà֮𑍲̕b, qà֮𑍲̕b);
+Test_N(qa֮𑍲̀̕b, qa֮𑍲̀̕b, qa֮𑍲̀̕b, qa֮𑍲̀̕b, qa֮𑍲̀̕b);
+Test_N(qà֮𑍳̕b, qà֮𑍳̕b, qà֮𑍳̕b, qà֮𑍳̕b, qà֮𑍳̕b);
+Test_N(qa֮𑍳̀̕b, qa֮𑍳̀̕b, qa֮𑍳̀̕b, qa֮𑍳̀̕b, qa֮𑍳̀̕b);
+Test_N(qà֮𑍴̕b, qà֮𑍴̕b, qà֮𑍴̕b, qà֮𑍴̕b, qà֮𑍴̕b);
+Test_N(qa֮𑍴̀̕b, qa֮𑍴̀̕b, qa֮𑍴̀̕b, qa֮𑍴̀̕b, qa֮𑍴̀̕b);
+Test_N(qa゙्𑑂ְb, qa゙्𑑂ְb, qa゙्𑑂ְb, qa゙्𑑂ְb, qa゙्𑑂ְb);
+Test_N(qa゙𑑂्ְb, qa゙𑑂्ְb, qa゙𑑂्ְb, qa゙𑑂्ְb, qa゙𑑂्ְb);
+Test_N(qa𖿰़𑑆゙b, qa𖿰़𑑆゙b, qa𖿰़𑑆゙b, qa𖿰़𑑆゙b, qa𖿰़𑑆゙b);
+Test_N(qa𖿰𑑆़゙b, qa𖿰𑑆़゙b, qa𖿰𑑆़゙b, qa𖿰𑑆़゙b, qa𖿰𑑆़゙b);
+Test_N(qà֮𑑞̕b, qà֮𑑞̕b, qà֮𑑞̕b, qà֮𑑞̕b, qà֮𑑞̕b);
+Test_N(qa֮𑑞̀̕b, qa֮𑑞̀̕b, qa֮𑑞̀̕b, qa֮𑑞̀̕b, qa֮𑑞̀̕b);
+Test_N(qa゙्𑓂ְb, qa゙्𑓂ְb, qa゙्𑓂ְb, qa゙्𑓂ְb, qa゙्𑓂ְb);
+Test_N(qa゙𑓂्ְb, qa゙𑓂्ְb, qa゙𑓂्ְb, qa゙𑓂्ְb, qa゙𑓂्ְb);
+Test_N(qa𖿰़𑓃゙b, qa𖿰़𑓃゙b, qa𖿰़𑓃゙b, qa𖿰़𑓃゙b, qa𖿰़𑓃゙b);
+Test_N(qa𖿰𑓃़゙b, qa𖿰𑓃़゙b, qa𖿰𑓃़゙b, qa𖿰𑓃़゙b, qa𖿰𑓃़゙b);
+Test_N(qa゙्𑖿ְb, qa゙्𑖿ְb, qa゙्𑖿ְb, qa゙्𑖿ְb, qa゙्𑖿ְb);
+Test_N(qa゙𑖿्ְb, qa゙𑖿्ְb, qa゙𑖿्ְb, qa゙𑖿्ְb, qa゙𑖿्ְb);
+Test_N(qa𖿰़𑗀゙b, qa𖿰़𑗀゙b, qa𖿰़𑗀゙b, qa𖿰़𑗀゙b, qa𖿰़𑗀゙b);
+Test_N(qa𖿰𑗀़゙b, qa𖿰𑗀़゙b, qa𖿰𑗀़゙b, qa𖿰𑗀़゙b, qa𖿰𑗀़゙b);
+Test_N(qa゙्𑘿ְb, qa゙्𑘿ְb, qa゙्𑘿ְb, qa゙्𑘿ְb, qa゙्𑘿ְb);
+Test_N(qa゙𑘿्ְb, qa゙𑘿्ְb, qa゙𑘿्ְb, qa゙𑘿्ְb, qa゙𑘿्ְb);
+Test_N(qa゙्𑚶ְb, qa゙्𑚶ְb, qa゙्𑚶ְb, qa゙्𑚶ְb, qa゙्𑚶ְb);
+Test_N(qa゙𑚶्ְb, qa゙𑚶्ְb, qa゙𑚶्ְb, qa゙𑚶्ְb, qa゙𑚶्ְb);
+Test_N(qa𖿰़𑚷゙b, qa𖿰़𑚷゙b, qa𖿰़𑚷゙b, qa𖿰़𑚷゙b, qa𖿰़𑚷゙b);
+Test_N(qa𖿰𑚷़゙b, qa𖿰𑚷़゙b, qa𖿰𑚷़゙b, qa𖿰𑚷़゙b, qa𖿰𑚷़゙b);
+Test_N(qa゙्𑜫ְb, qa゙्𑜫ְb, qa゙्𑜫ְb, qa゙्𑜫ְb, qa゙्𑜫ְb);
+Test_N(qa゙𑜫्ְb, qa゙𑜫्ְb, qa゙𑜫्ְb, qa゙𑜫्ְb, qa゙𑜫्ְb);
+Test_N(qa゙्𑠹ְb, qa゙्𑠹ְb, qa゙्𑠹ְb, qa゙्𑠹ְb, qa゙्𑠹ְb);
+Test_N(qa゙𑠹्ְb, qa゙𑠹्ְb, qa゙𑠹्ְb, qa゙𑠹्ְb, qa゙𑠹्ְb);
+Test_N(qa𖿰़𑠺゙b, qa𖿰़𑠺゙b, qa𖿰़𑠺゙b, qa𖿰़𑠺゙b, qa𖿰़𑠺゙b);
+Test_N(qa𖿰𑠺़゙b, qa𖿰𑠺़゙b, qa𖿰𑠺़゙b, qa𖿰𑠺़゙b, qa𖿰𑠺़゙b);
+Test_N(qa゙्𑤽ְb, qa゙्𑤽ְb, qa゙्𑤽ְb, qa゙्𑤽ְb, qa゙्𑤽ְb);
+Test_N(qa゙𑤽्ְb, qa゙𑤽्ְb, qa゙𑤽्ְb, qa゙𑤽्ְb, qa゙𑤽्ְb);
+Test_N(qa゙्𑤾ְb, qa゙्𑤾ְb, qa゙्𑤾ְb, qa゙्𑤾ְb, qa゙्𑤾ְb);
+Test_N(qa゙𑤾्ְb, qa゙𑤾्ְb, qa゙𑤾्ְb, qa゙𑤾्ְb, qa゙𑤾्ְb);
+Test_N(qa𖿰़𑥃゙b, qa𖿰़𑥃゙b, qa𖿰़𑥃゙b, qa𖿰़𑥃゙b, qa𖿰़𑥃゙b);
+Test_N(qa𖿰𑥃़゙b, qa𖿰𑥃़゙b, qa𖿰𑥃़゙b, qa𖿰𑥃़゙b, qa𖿰𑥃़゙b);
+Test_N(qa゙्𑧠ְb, qa゙्𑧠ְb, qa゙्𑧠ְb, qa゙्𑧠ְb, qa゙्𑧠ְb);
+Test_N(qa゙𑧠्ְb, qa゙𑧠्ְb, qa゙𑧠्ְb, qa゙𑧠्ְb, qa゙𑧠्ְb);
+Test_N(qa゙्𑨴ְb, qa゙्𑨴ְb, qa゙्𑨴ְb, qa゙्𑨴ְb, qa゙्𑨴ְb);
+Test_N(qa゙𑨴्ְb, qa゙𑨴्ְb, qa゙𑨴्ְb, qa゙𑨴्ְb, qa゙𑨴्ְb);
+Test_N(qa゙्𑩇ְb, qa゙्𑩇ְb, qa゙्𑩇ְb, qa゙्𑩇ְb, qa゙्𑩇ְb);
+Test_N(qa゙𑩇्ְb, qa゙𑩇्ְb, qa゙𑩇्ְb, qa゙𑩇्ְb, qa゙𑩇्ְb);
+Test_N(qa゙्𑪙ְb, qa゙्𑪙ְb, qa゙्𑪙ְb, qa゙्𑪙ְb, qa゙्𑪙ְb);
+Test_N(qa゙𑪙्ְb, qa゙𑪙्ְb, qa゙𑪙्ְb, qa゙𑪙्ְb, qa゙𑪙्ְb);
+Test_N(qa゙्𑰿ְb, qa゙्𑰿ְb, qa゙्𑰿ְb, qa゙्𑰿ְb, qa゙्𑰿ְb);
+Test_N(qa゙𑰿्ְb, qa゙𑰿्ְb, qa゙𑰿्ְb, qa゙𑰿्ְb, qa゙𑰿्ְb);
+Test_N(qa𖿰़𑵂゙b, qa𖿰़𑵂゙b, qa𖿰़𑵂゙b, qa𖿰़𑵂゙b, qa𖿰़𑵂゙b);
+Test_N(qa𖿰𑵂़゙b, qa𖿰𑵂़゙b, qa𖿰𑵂़゙b, qa𖿰𑵂़゙b, qa𖿰𑵂़゙b);
+Test_N(qa゙्𑵄ְb, qa゙्𑵄ְb, qa゙्𑵄ְb, qa゙्𑵄ְb, qa゙्𑵄ְb);
+Test_N(qa゙𑵄्ְb, qa゙𑵄्ְb, qa゙𑵄्ְb, qa゙𑵄्ְb, qa゙𑵄्ְb);
+Test_N(qa゙्𑵅ְb, qa゙्𑵅ְb, qa゙्𑵅ְb, qa゙्𑵅ְb, qa゙्𑵅ְb);
+Test_N(qa゙𑵅्ְb, qa゙𑵅्ְb, qa゙𑵅्ְb, qa゙𑵅्ְb, qa゙𑵅्ְb);
+Test_N(qa゙्𑶗ְb, qa゙्𑶗ְb, qa゙्𑶗ְb, qa゙्𑶗ְb, qa゙्𑶗ְb);
+Test_N(qa゙𑶗्ְb, qa゙𑶗्ְb, qa゙𑶗्ְb, qa゙𑶗्ְb, qa゙𑶗्ְb);
+Test_N(qa゙्𑽁ְb, qa゙्𑽁ְb, qa゙्𑽁ְb, qa゙्𑽁ְb, qa゙्𑽁ְb);
+Test_N(qa゙𑽁्ְb, qa゙𑽁्ְb, qa゙𑽁्ְb, qa゙𑽁्ְb, qa゙𑽁्ְb);
+Test_N(qa゙्𑽂ְb, qa゙्𑽂ְb, qa゙्𑽂ְb, qa゙्𑽂ְb, qa゙्𑽂ְb);
+Test_N(qa゙𑽂्ְb, qa゙𑽂्ְb, qa゙𑽂्ְb, qa゙𑽂्ְb, qa゙𑽂्ְb);
+Test_N(qa̴𖫰𖿰b, qa̴𖫰𖿰b, qa̴𖫰𖿰b, qa̴𖫰𖿰b, qa̴𖫰𖿰b);
+Test_N(qa𖫰̴𖿰b, qa𖫰̴𖿰b, qa𖫰̴𖿰b, qa𖫰̴𖿰b, qa𖫰̴𖿰b);
+Test_N(qa̴𖫱𖿰b, qa̴𖫱𖿰b, qa̴𖫱𖿰b, qa̴𖫱𖿰b, qa̴𖫱𖿰b);
+Test_N(qa𖫱̴𖿰b, qa𖫱̴𖿰b, qa𖫱̴𖿰b, qa𖫱̴𖿰b, qa𖫱̴𖿰b);
+Test_N(qa̴𖫲𖿰b, qa̴𖫲𖿰b, qa̴𖫲𖿰b, qa̴𖫲𖿰b, qa̴𖫲𖿰b);
+Test_N(qa𖫲̴𖿰b, qa𖫲̴𖿰b, qa𖫲̴𖿰b, qa𖫲̴𖿰b, qa𖫲̴𖿰b);
+Test_N(qa̴𖫳𖿰b, qa̴𖫳𖿰b, qa̴𖫳𖿰b, qa̴𖫳𖿰b, qa̴𖫳𖿰b);
+Test_N(qa𖫳̴𖿰b, qa𖫳̴𖿰b, qa𖫳̴𖿰b, qa𖫳̴𖿰b, qa𖫳̴𖿰b);
+Test_N(qa̴𖫴𖿰b, qa̴𖫴𖿰b, qa̴𖫴𖿰b, qa̴𖫴𖿰b, qa̴𖫴𖿰b);
+Test_N(qa𖫴̴𖿰b, qa𖫴̴𖿰b, qa𖫴̴𖿰b, qa𖫴̴𖿰b, qa𖫴̴𖿰b);
+Test_N(qà֮𖬰̕b, qà֮𖬰̕b, qà֮𖬰̕b, qà֮𖬰̕b, qà֮𖬰̕b);
+Test_N(qa֮𖬰̀̕b, qa֮𖬰̀̕b, qa֮𖬰̀̕b, qa֮𖬰̀̕b, qa֮𖬰̀̕b);
+Test_N(qà֮𖬱̕b, qà֮𖬱̕b, qà֮𖬱̕b, qà֮𖬱̕b, qà֮𖬱̕b);
+Test_N(qa֮𖬱̀̕b, qa֮𖬱̀̕b, qa֮𖬱̀̕b, qa֮𖬱̀̕b, qa֮𖬱̀̕b);
+Test_N(qà֮𖬲̕b, qà֮𖬲̕b, qà֮𖬲̕b, qà֮𖬲̕b, qà֮𖬲̕b);
+Test_N(qa֮𖬲̀̕b, qa֮𖬲̀̕b, qa֮𖬲̀̕b, qa֮𖬲̀̕b, qa֮𖬲̀̕b);
+Test_N(qà֮𖬳̕b, qà֮𖬳̕b, qà֮𖬳̕b, qà֮𖬳̕b, qà֮𖬳̕b);
+Test_N(qa֮𖬳̀̕b, qa֮𖬳̀̕b, qa֮𖬳̀̕b, qa֮𖬳̀̕b, qa֮𖬳̀̕b);
+Test_N(qà֮𖬴̕b, qà֮𖬴̕b, qà֮𖬴̕b, qà֮𖬴̕b, qà֮𖬴̕b);
+Test_N(qa֮𖬴̀̕b, qa֮𖬴̀̕b, qa֮𖬴̀̕b, qa֮𖬴̀̕b, qa֮𖬴̀̕b);
+Test_N(qà֮𖬵̕b, qà֮𖬵̕b, qà֮𖬵̕b, qà֮𖬵̕b, qà֮𖬵̕b);
+Test_N(qa֮𖬵̀̕b, qa֮𖬵̀̕b, qa֮𖬵̀̕b, qa֮𖬵̀̕b, qa֮𖬵̀̕b);
+Test_N(qà֮𖬶̕b, qà֮𖬶̕b, qà֮𖬶̕b, qà֮𖬶̕b, qà֮𖬶̕b);
+Test_N(qa֮𖬶̀̕b, qa֮𖬶̀̕b, qa֮𖬶̀̕b, qa֮𖬶̀̕b, qa֮𖬶̀̕b);
+Test_N(qa̴𖿰𖿰़b, qa̴𖿰𖿰़b, qa̴𖿰𖿰़b, qa̴𖿰𖿰़b, qa̴𖿰𖿰़b);
+Test_N(qa̴𖿰𖿰़b, qa̴𖿰𖿰़b, qa̴𖿰𖿰़b, qa̴𖿰𖿰़b, qa̴𖿰𖿰़b);
+Test_N(qa̴𖿰𖿱़b, qa̴𖿰𖿱़b, qa̴𖿰𖿱़b, qa̴𖿰𖿱़b, qa̴𖿰𖿱़b);
+Test_N(qa̴𖿱𖿰़b, qa̴𖿱𖿰़b, qa̴𖿱𖿰़b, qa̴𖿱𖿰़b, qa̴𖿱𖿰़b);
+Test_N(qa̴𛲞𖿰b, qa̴𛲞𖿰b, qa̴𛲞𖿰b, qa̴𛲞𖿰b, qa̴𛲞𖿰b);
+Test_N(qa𛲞̴𖿰b, qa𛲞̴𖿰b, qa𛲞̴𖿰b, qa𛲞̴𖿰b, qa𛲞̴𖿰b);
+Test_N(qa᷎̛𝅥᷺b, qa᷎̛𝅥᷺b, qa᷎̛𝅥᷺b, qa᷎̛𝅥᷺b, qa᷎̛𝅥᷺b);
+Test_N(qa᷎𝅥̛᷺b, qa᷎𝅥̛᷺b, qa᷎𝅥̛᷺b, qa᷎𝅥̛᷺b, qa᷎𝅥̛᷺b);
+Test_N(qa᷎̛𝅦᷺b, qa᷎̛𝅦᷺b, qa᷎̛𝅦᷺b, qa᷎̛𝅦᷺b, qa᷎̛𝅦᷺b);
+Test_N(qa᷎𝅦̛᷺b, qa᷎𝅦̛᷺b, qa᷎𝅦̛᷺b, qa᷎𝅦̛᷺b, qa᷎𝅦̛᷺b);
+Test_N(qa̴𝅧𖿰b, qa̴𝅧𖿰b, qa̴𝅧𖿰b, qa̴𝅧𖿰b, qa̴𝅧𖿰b);
+Test_N(qa𝅧̴𖿰b, qa𝅧̴𖿰b, qa𝅧̴𖿰b, qa𝅧̴𖿰b, qa𝅧̴𖿰b);
+Test_N(qa̴𝅨𖿰b, qa̴𝅨𖿰b, qa̴𝅨𖿰b, qa̴𝅨𖿰b, qa̴𝅨𖿰b);
+Test_N(qa𝅨̴𖿰b, qa𝅨̴𖿰b, qa𝅨̴𖿰b, qa𝅨̴𖿰b, qa𝅨̴𖿰b);
+Test_N(qa̴𝅩𖿰b, qa̴𝅩𖿰b, qa̴𝅩𖿰b, qa̴𝅩𖿰b, qa̴𝅩𖿰b);
+Test_N(qa𝅩̴𖿰b, qa𝅩̴𖿰b, qa𝅩̴𖿰b, qa𝅩̴𖿰b, qa𝅩̴𖿰b);
+Test_N(qa〮𝅭𝅭֮b, qa〮𝅭𝅭֮b, qa〮𝅭𝅭֮b, qa〮𝅭𝅭֮b, qa〮𝅭𝅭֮b);
+Test_N(qa〮𝅭𝅭֮b, qa〮𝅭𝅭֮b, qa〮𝅭𝅭֮b, qa〮𝅭𝅭֮b, qa〮𝅭𝅭֮b);
+Test_N(qa᷎̛𝅮᷺b, qa᷎̛𝅮᷺b, qa᷎̛𝅮᷺b, qa᷎̛𝅮᷺b, qa᷎̛𝅮᷺b);
+Test_N(qa᷎𝅮̛᷺b, qa᷎𝅮̛᷺b, qa᷎𝅮̛᷺b, qa᷎𝅮̛᷺b, qa᷎𝅮̛᷺b);
+Test_N(qa᷎̛𝅯᷺b, qa᷎̛𝅯᷺b, qa᷎̛𝅯᷺b, qa᷎̛𝅯᷺b, qa᷎̛𝅯᷺b);
+Test_N(qa᷎𝅯̛᷺b, qa᷎𝅯̛᷺b, qa᷎𝅯̛᷺b, qa᷎𝅯̛᷺b, qa᷎𝅯̛᷺b);
+Test_N(qa᷎̛𝅰᷺b, qa᷎̛𝅰᷺b, qa᷎̛𝅰᷺b, qa᷎̛𝅰᷺b, qa᷎̛𝅰᷺b);
+Test_N(qa᷎𝅰̛᷺b, qa᷎𝅰̛᷺b, qa᷎𝅰̛᷺b, qa᷎𝅰̛᷺b, qa᷎𝅰̛᷺b);
+Test_N(qa᷎̛𝅱᷺b, qa᷎̛𝅱᷺b, qa᷎̛𝅱᷺b, qa᷎̛𝅱᷺b, qa᷎̛𝅱᷺b);
+Test_N(qa᷎𝅱̛᷺b, qa᷎𝅱̛᷺b, qa᷎𝅱̛᷺b, qa᷎𝅱̛᷺b, qa᷎𝅱̛᷺b);
+Test_N(qa᷎̛𝅲᷺b, qa᷎̛𝅲᷺b, qa᷎̛𝅲᷺b, qa᷎̛𝅲᷺b, qa᷎̛𝅲᷺b);
+Test_N(qa᷎𝅲̛᷺b, qa᷎𝅲̛᷺b, qa᷎𝅲̛᷺b, qa᷎𝅲̛᷺b, qa᷎𝅲̛᷺b);
+Test_N(qa᷺̖𝅻֚b, qa᷺̖𝅻֚b, qa᷺̖𝅻֚b, qa᷺̖𝅻֚b, qa᷺̖𝅻֚b);
+Test_N(qa᷺𝅻̖֚b, qa᷺𝅻̖֚b, qa᷺𝅻̖֚b, qa᷺𝅻̖֚b, qa᷺𝅻̖֚b);
+Test_N(qa᷺̖𝅼֚b, qa᷺̖𝅼֚b, qa᷺̖𝅼֚b, qa᷺̖𝅼֚b, qa᷺̖𝅼֚b);
+Test_N(qa᷺𝅼̖֚b, qa᷺𝅼̖֚b, qa᷺𝅼̖֚b, qa᷺𝅼̖֚b, qa᷺𝅼̖֚b);
+Test_N(qa᷺̖𝅽֚b, qa᷺̖𝅽֚b, qa᷺̖𝅽֚b, qa᷺̖𝅽֚b, qa᷺̖𝅽֚b);
+Test_N(qa᷺𝅽̖֚b, qa᷺𝅽̖֚b, qa᷺𝅽̖֚b, qa᷺𝅽̖֚b, qa᷺𝅽̖֚b);
+Test_N(qa᷺̖𝅾֚b, qa᷺̖𝅾֚b, qa᷺̖𝅾֚b, qa᷺̖𝅾֚b, qa᷺̖𝅾֚b);
+Test_N(qa᷺𝅾̖֚b, qa᷺𝅾̖֚b, qa᷺𝅾̖֚b, qa᷺𝅾̖֚b, qa᷺𝅾̖֚b);
+Test_N(qa᷺̖𝅿֚b, qa᷺̖𝅿֚b, qa᷺̖𝅿֚b, qa᷺̖𝅿֚b, qa᷺̖𝅿֚b);
+Test_N(qa᷺𝅿̖֚b, qa᷺𝅿̖֚b, qa᷺𝅿̖֚b, qa᷺𝅿̖֚b, qa᷺𝅿̖֚b);
+Test_N(qa᷺̖𝆀֚b, qa᷺̖𝆀֚b, qa᷺̖𝆀֚b, qa᷺̖𝆀֚b, qa᷺̖𝆀֚b);
+Test_N(qa᷺𝆀̖֚b, qa᷺𝆀̖֚b, qa᷺𝆀̖֚b, qa᷺𝆀̖֚b, qa᷺𝆀̖֚b);
+Test_N(qa᷺̖𝆁֚b, qa᷺̖𝆁֚b, qa᷺̖𝆁֚b, qa᷺̖𝆁֚b, qa᷺̖𝆁֚b);
+Test_N(qa᷺𝆁̖֚b, qa᷺𝆁̖֚b, qa᷺𝆁̖֚b, qa᷺𝆁̖֚b, qa᷺𝆁̖֚b);
+Test_N(qa᷺̖𝆂֚b, qa᷺̖𝆂֚b, qa᷺̖𝆂֚b, qa᷺̖𝆂֚b, qa᷺̖𝆂֚b);
+Test_N(qa᷺𝆂̖֚b, qa᷺𝆂̖֚b, qa᷺𝆂̖֚b, qa᷺𝆂̖֚b, qa᷺𝆂̖֚b);
+Test_N(qà֮𝆅̕b, qà֮𝆅̕b, qà֮𝆅̕b, qà֮𝆅̕b, qà֮𝆅̕b);
+Test_N(qa֮𝆅̀̕b, qa֮𝆅̀̕b, qa֮𝆅̀̕b, qa֮𝆅̀̕b, qa֮𝆅̀̕b);
+Test_N(qà֮𝆆̕b, qà֮𝆆̕b, qà֮𝆆̕b, qà֮𝆆̕b, qà֮𝆆̕b);
+Test_N(qa֮𝆆̀̕b, qa֮𝆆̀̕b, qa֮𝆆̀̕b, qa֮𝆆̀̕b, qa֮𝆆̀̕b);
+Test_N(qà֮𝆇̕b, qà֮𝆇̕b, qà֮𝆇̕b, qà֮𝆇̕b, qà֮𝆇̕b);
+Test_N(qa֮𝆇̀̕b, qa֮𝆇̀̕b, qa֮𝆇̀̕b, qa֮𝆇̀̕b, qa֮𝆇̀̕b);
+Test_N(qà֮𝆈̕b, qà֮𝆈̕b, qà֮𝆈̕b, qà֮𝆈̕b, qà֮𝆈̕b);
+Test_N(qa֮𝆈̀̕b, qa֮𝆈̀̕b, qa֮𝆈̀̕b, qa֮𝆈̀̕b, qa֮𝆈̀̕b);
+Test_N(qà֮𝆉̕b, qà֮𝆉̕b, qà֮𝆉̕b, qà֮𝆉̕b, qà֮𝆉̕b);
+Test_N(qa֮𝆉̀̕b, qa֮𝆉̀̕b, qa֮𝆉̀̕b, qa֮𝆉̀̕b, qa֮𝆉̀̕b);
+Test_N(qa᷺̖𝆊֚b, qa᷺̖𝆊֚b, qa᷺̖𝆊֚b, qa᷺̖𝆊֚b, qa᷺̖𝆊֚b);
+Test_N(qa᷺𝆊̖֚b, qa᷺𝆊̖֚b, qa᷺𝆊̖֚b, qa᷺𝆊̖֚b, qa᷺𝆊̖֚b);
+Test_N(qa᷺̖𝆋֚b, qa᷺̖𝆋֚b, qa᷺̖𝆋֚b, qa᷺̖𝆋֚b, qa᷺̖𝆋֚b);
+Test_N(qa᷺𝆋̖֚b, qa᷺𝆋̖֚b, qa᷺𝆋̖֚b, qa᷺𝆋̖֚b, qa᷺𝆋̖֚b);
+Test_N(qà֮𝆪̕b, qà֮𝆪̕b, qà֮𝆪̕b, qà֮𝆪̕b, qà֮𝆪̕b);
+Test_N(qa֮𝆪̀̕b, qa֮𝆪̀̕b, qa֮𝆪̀̕b, qa֮𝆪̀̕b, qa֮𝆪̀̕b);
+Test_N(qà֮𝆫̕b, qà֮𝆫̕b, qà֮𝆫̕b, qà֮𝆫̕b, qà֮𝆫̕b);
+Test_N(qa֮𝆫̀̕b, qa֮𝆫̀̕b, qa֮𝆫̀̕b, qa֮𝆫̀̕b, qa֮𝆫̀̕b);
+Test_N(qà֮𝆬̕b, qà֮𝆬̕b, qà֮𝆬̕b, qà֮𝆬̕b, qà֮𝆬̕b);
+Test_N(qa֮𝆬̀̕b, qa֮𝆬̀̕b, qa֮𝆬̀̕b, qa֮𝆬̀̕b, qa֮𝆬̀̕b);
+Test_N(qà֮𝆭̕b, qà֮𝆭̕b, qà֮𝆭̕b, qà֮𝆭̕b, qà֮𝆭̕b);
+Test_N(qa֮𝆭̀̕b, qa֮𝆭̀̕b, qa֮𝆭̀̕b, qa֮𝆭̀̕b, qa֮𝆭̀̕b);
+Test_N(qà֮𝉂̕b, qà֮𝉂̕b, qà֮𝉂̕b, qà֮𝉂̕b, qà֮𝉂̕b);
+Test_N(qa֮𝉂̀̕b, qa֮𝉂̀̕b, qa֮𝉂̀̕b, qa֮𝉂̀̕b, qa֮𝉂̀̕b);
+Test_N(qà֮𝉃̕b, qà֮𝉃̕b, qà֮𝉃̕b, qà֮𝉃̕b, qà֮𝉃̕b);
+Test_N(qa֮𝉃̀̕b, qa֮𝉃̀̕b, qa֮𝉃̀̕b, qa֮𝉃̀̕b, qa֮𝉃̀̕b);
+Test_N(qà֮𝉄̕b, qà֮𝉄̕b, qà֮𝉄̕b, qà֮𝉄̕b, qà֮𝉄̕b);
+Test_N(qa֮𝉄̀̕b, qa֮𝉄̀̕b, qa֮𝉄̀̕b, qa֮𝉄̀̕b, qa֮𝉄̀̕b);
+Test_N(qà֮𞀀̕b, qà֮𞀀̕b, qà֮𞀀̕b, qà֮𞀀̕b, qà֮𞀀̕b);
+Test_N(qa֮𞀀̀̕b, qa֮𞀀̀̕b, qa֮𞀀̀̕b, qa֮𞀀̀̕b, qa֮𞀀̀̕b);
+Test_N(qà֮𞀁̕b, qà֮𞀁̕b, qà֮𞀁̕b, qà֮𞀁̕b, qà֮𞀁̕b);
+Test_N(qa֮𞀁̀̕b, qa֮𞀁̀̕b, qa֮𞀁̀̕b, qa֮𞀁̀̕b, qa֮𞀁̀̕b);
+Test_N(qà֮𞀂̕b, qà֮𞀂̕b, qà֮𞀂̕b, qà֮𞀂̕b, qà֮𞀂̕b);
+Test_N(qa֮𞀂̀̕b, qa֮𞀂̀̕b, qa֮𞀂̀̕b, qa֮𞀂̀̕b, qa֮𞀂̀̕b);
+Test_N(qà֮𞀃̕b, qà֮𞀃̕b, qà֮𞀃̕b, qà֮𞀃̕b, qà֮𞀃̕b);
+Test_N(qa֮𞀃̀̕b, qa֮𞀃̀̕b, qa֮𞀃̀̕b, qa֮𞀃̀̕b, qa֮𞀃̀̕b);
+Test_N(qà֮𞀄̕b, qà֮𞀄̕b, qà֮𞀄̕b, qà֮𞀄̕b, qà֮𞀄̕b);
+Test_N(qa֮𞀄̀̕b, qa֮𞀄̀̕b, qa֮𞀄̀̕b, qa֮𞀄̀̕b, qa֮𞀄̀̕b);
+Test_N(qà֮𞀅̕b, qà֮𞀅̕b, qà֮𞀅̕b, qà֮𞀅̕b, qà֮𞀅̕b);
+Test_N(qa֮𞀅̀̕b, qa֮𞀅̀̕b, qa֮𞀅̀̕b, qa֮𞀅̀̕b, qa֮𞀅̀̕b);
+Test_N(qà֮𞀆̕b, qà֮𞀆̕b, qà֮𞀆̕b, qà֮𞀆̕b, qà֮𞀆̕b);
+Test_N(qa֮𞀆̀̕b, qa֮𞀆̀̕b, qa֮𞀆̀̕b, qa֮𞀆̀̕b, qa֮𞀆̀̕b);
+Test_N(qà֮𞀈̕b, qà֮𞀈̕b, qà֮𞀈̕b, qà֮𞀈̕b, qà֮𞀈̕b);
+Test_N(qa֮𞀈̀̕b, qa֮𞀈̀̕b, qa֮𞀈̀̕b, qa֮𞀈̀̕b, qa֮𞀈̀̕b);
+Test_N(qà֮𞀉̕b, qà֮𞀉̕b, qà֮𞀉̕b, qà֮𞀉̕b, qà֮𞀉̕b);
+Test_N(qa֮𞀉̀̕b, qa֮𞀉̀̕b, qa֮𞀉̀̕b, qa֮𞀉̀̕b, qa֮𞀉̀̕b);
+Test_N(qà֮𞀊̕b, qà֮𞀊̕b, qà֮𞀊̕b, qà֮𞀊̕b, qà֮𞀊̕b);
+Test_N(qa֮𞀊̀̕b, qa֮𞀊̀̕b, qa֮𞀊̀̕b, qa֮𞀊̀̕b, qa֮𞀊̀̕b);
+Test_N(qà֮𞀋̕b, qà֮𞀋̕b, qà֮𞀋̕b, qà֮𞀋̕b, qà֮𞀋̕b);
+Test_N(qa֮𞀋̀̕b, qa֮𞀋̀̕b, qa֮𞀋̀̕b, qa֮𞀋̀̕b, qa֮𞀋̀̕b);
+Test_N(qà֮𞀌̕b, qà֮𞀌̕b, qà֮𞀌̕b, qà֮𞀌̕b, qà֮𞀌̕b);
+Test_N(qa֮𞀌̀̕b, qa֮𞀌̀̕b, qa֮𞀌̀̕b, qa֮𞀌̀̕b, qa֮𞀌̀̕b);
+Test_N(qà֮𞀍̕b, qà֮𞀍̕b, qà֮𞀍̕b, qà֮𞀍̕b, qà֮𞀍̕b);
+Test_N(qa֮𞀍̀̕b, qa֮𞀍̀̕b, qa֮𞀍̀̕b, qa֮𞀍̀̕b, qa֮𞀍̀̕b);
+Test_N(qà֮𞀎̕b, qà֮𞀎̕b, qà֮𞀎̕b, qà֮𞀎̕b, qà֮𞀎̕b);
+Test_N(qa֮𞀎̀̕b, qa֮𞀎̀̕b, qa֮𞀎̀̕b, qa֮𞀎̀̕b, qa֮𞀎̀̕b);
+Test_N(qà֮𞀏̕b, qà֮𞀏̕b, qà֮𞀏̕b, qà֮𞀏̕b, qà֮𞀏̕b);
+Test_N(qa֮𞀏̀̕b, qa֮𞀏̀̕b, qa֮𞀏̀̕b, qa֮𞀏̀̕b, qa֮𞀏̀̕b);
+Test_N(qà֮𞀐̕b, qà֮𞀐̕b, qà֮𞀐̕b, qà֮𞀐̕b, qà֮𞀐̕b);
+Test_N(qa֮𞀐̀̕b, qa֮𞀐̀̕b, qa֮𞀐̀̕b, qa֮𞀐̀̕b, qa֮𞀐̀̕b);
+Test_N(qà֮𞀑̕b, qà֮𞀑̕b, qà֮𞀑̕b, qà֮𞀑̕b, qà֮𞀑̕b);
+Test_N(qa֮𞀑̀̕b, qa֮𞀑̀̕b, qa֮𞀑̀̕b, qa֮𞀑̀̕b, qa֮𞀑̀̕b);
+Test_N(qà֮𞀒̕b, qà֮𞀒̕b, qà֮𞀒̕b, qà֮𞀒̕b, qà֮𞀒̕b);
+Test_N(qa֮𞀒̀̕b, qa֮𞀒̀̕b, qa֮𞀒̀̕b, qa֮𞀒̀̕b, qa֮𞀒̀̕b);
+Test_N(qà֮𞀓̕b, qà֮𞀓̕b, qà֮𞀓̕b, qà֮𞀓̕b, qà֮𞀓̕b);
+Test_N(qa֮𞀓̀̕b, qa֮𞀓̀̕b, qa֮𞀓̀̕b, qa֮𞀓̀̕b, qa֮𞀓̀̕b);
+Test_N(qà֮𞀔̕b, qà֮𞀔̕b, qà֮𞀔̕b, qà֮𞀔̕b, qà֮𞀔̕b);
+Test_N(qa֮𞀔̀̕b, qa֮𞀔̀̕b, qa֮𞀔̀̕b, qa֮𞀔̀̕b, qa֮𞀔̀̕b);
+Test_N(qà֮𞀕̕b, qà֮𞀕̕b, qà֮𞀕̕b, qà֮𞀕̕b, qà֮𞀕̕b);
+Test_N(qa֮𞀕̀̕b, qa֮𞀕̀̕b, qa֮𞀕̀̕b, qa֮𞀕̀̕b, qa֮𞀕̀̕b);
+Test_N(qà֮𞀖̕b, qà֮𞀖̕b, qà֮𞀖̕b, qà֮𞀖̕b, qà֮𞀖̕b);
+Test_N(qa֮𞀖̀̕b, qa֮𞀖̀̕b, qa֮𞀖̀̕b, qa֮𞀖̀̕b, qa֮𞀖̀̕b);
+Test_N(qà֮𞀗̕b, qà֮𞀗̕b, qà֮𞀗̕b, qà֮𞀗̕b, qà֮𞀗̕b);
+Test_N(qa֮𞀗̀̕b, qa֮𞀗̀̕b, qa֮𞀗̀̕b, qa֮𞀗̀̕b, qa֮𞀗̀̕b);
+Test_N(qà֮𞀘̕b, qà֮𞀘̕b, qà֮𞀘̕b, qà֮𞀘̕b, qà֮𞀘̕b);
+Test_N(qa֮𞀘̀̕b, qa֮𞀘̀̕b, qa֮𞀘̀̕b, qa֮𞀘̀̕b, qa֮𞀘̀̕b);
+Test_N(qà֮𞀛̕b, qà֮𞀛̕b, qà֮𞀛̕b, qà֮𞀛̕b, qà֮𞀛̕b);
+Test_N(qa֮𞀛̀̕b, qa֮𞀛̀̕b, qa֮𞀛̀̕b, qa֮𞀛̀̕b, qa֮𞀛̀̕b);
+Test_N(qà֮𞀜̕b, qà֮𞀜̕b, qà֮𞀜̕b, qà֮𞀜̕b, qà֮𞀜̕b);
+Test_N(qa֮𞀜̀̕b, qa֮𞀜̀̕b, qa֮𞀜̀̕b, qa֮𞀜̀̕b, qa֮𞀜̀̕b);
+Test_N(qà֮𞀝̕b, qà֮𞀝̕b, qà֮𞀝̕b, qà֮𞀝̕b, qà֮𞀝̕b);
+Test_N(qa֮𞀝̀̕b, qa֮𞀝̀̕b, qa֮𞀝̀̕b, qa֮𞀝̀̕b, qa֮𞀝̀̕b);
+Test_N(qà֮𞀞̕b, qà֮𞀞̕b, qà֮𞀞̕b, qà֮𞀞̕b, qà֮𞀞̕b);
+Test_N(qa֮𞀞̀̕b, qa֮𞀞̀̕b, qa֮𞀞̀̕b, qa֮𞀞̀̕b, qa֮𞀞̀̕b);
+Test_N(qà֮𞀟̕b, qà֮𞀟̕b, qà֮𞀟̕b, qà֮𞀟̕b, qà֮𞀟̕b);
+Test_N(qa֮𞀟̀̕b, qa֮𞀟̀̕b, qa֮𞀟̀̕b, qa֮𞀟̀̕b, qa֮𞀟̀̕b);
+Test_N(qà֮𞀠̕b, qà֮𞀠̕b, qà֮𞀠̕b, qà֮𞀠̕b, qà֮𞀠̕b);
+Test_N(qa֮𞀠̀̕b, qa֮𞀠̀̕b, qa֮𞀠̀̕b, qa֮𞀠̀̕b, qa֮𞀠̀̕b);
+Test_N(qà֮𞀡̕b, qà֮𞀡̕b, qà֮𞀡̕b, qà֮𞀡̕b, qà֮𞀡̕b);
+Test_N(qa֮𞀡̀̕b, qa֮𞀡̀̕b, qa֮𞀡̀̕b, qa֮𞀡̀̕b, qa֮𞀡̀̕b);
+Test_N(qà֮𞀣̕b, qà֮𞀣̕b, qà֮𞀣̕b, qà֮𞀣̕b, qà֮𞀣̕b);
+Test_N(qa֮𞀣̀̕b, qa֮𞀣̀̕b, qa֮𞀣̀̕b, qa֮𞀣̀̕b, qa֮𞀣̀̕b);
+Test_N(qà֮𞀤̕b, qà֮𞀤̕b, qà֮𞀤̕b, qà֮𞀤̕b, qà֮𞀤̕b);
+Test_N(qa֮𞀤̀̕b, qa֮𞀤̀̕b, qa֮𞀤̀̕b, qa֮𞀤̀̕b, qa֮𞀤̀̕b);
+Test_N(qà֮𞀦̕b, qà֮𞀦̕b, qà֮𞀦̕b, qà֮𞀦̕b, qà֮𞀦̕b);
+Test_N(qa֮𞀦̀̕b, qa֮𞀦̀̕b, qa֮𞀦̀̕b, qa֮𞀦̀̕b, qa֮𞀦̀̕b);
+Test_N(qà֮𞀧̕b, qà֮𞀧̕b, qà֮𞀧̕b, qà֮𞀧̕b, qà֮𞀧̕b);
+Test_N(qa֮𞀧̀̕b, qa֮𞀧̀̕b, qa֮𞀧̀̕b, qa֮𞀧̀̕b, qa֮𞀧̀̕b);
+Test_N(qà֮𞀨̕b, qà֮𞀨̕b, qà֮𞀨̕b, qà֮𞀨̕b, qà֮𞀨̕b);
+Test_N(qa֮𞀨̀̕b, qa֮𞀨̀̕b, qa֮𞀨̀̕b, qa֮𞀨̀̕b, qa֮𞀨̀̕b);
+Test_N(qà֮𞀩̕b, qà֮𞀩̕b, qà֮𞀩̕b, qà֮𞀩̕b, qà֮𞀩̕b);
+Test_N(qa֮𞀩̀̕b, qa֮𞀩̀̕b, qa֮𞀩̀̕b, qa֮𞀩̀̕b, qa֮𞀩̀̕b);
+Test_N(qà֮𞀪̕b, qà֮𞀪̕b, qà֮𞀪̕b, qà֮𞀪̕b, qà֮𞀪̕b);
+Test_N(qa֮𞀪̀̕b, qa֮𞀪̀̕b, qa֮𞀪̀̕b, qa֮𞀪̀̕b, qa֮𞀪̀̕b);
+Test_N(qà֮𞂏̕b, qà֮𞂏̕b, qà֮𞂏̕b, qà֮𞂏̕b, qà֮𞂏̕b);
+Test_N(qa֮𞂏̀̕b, qa֮𞂏̀̕b, qa֮𞂏̀̕b, qa֮𞂏̀̕b, qa֮𞂏̀̕b);
+Test_N(qà֮𞄰̕b, qà֮𞄰̕b, qà֮𞄰̕b, qà֮𞄰̕b, qà֮𞄰̕b);
+Test_N(qa֮𞄰̀̕b, qa֮𞄰̀̕b, qa֮𞄰̀̕b, qa֮𞄰̀̕b, qa֮𞄰̀̕b);
+Test_N(qà֮𞄱̕b, qà֮𞄱̕b, qà֮𞄱̕b, qà֮𞄱̕b, qà֮𞄱̕b);
+Test_N(qa֮𞄱̀̕b, qa֮𞄱̀̕b, qa֮𞄱̀̕b, qa֮𞄱̀̕b, qa֮𞄱̀̕b);
+Test_N(qà֮𞄲̕b, qà֮𞄲̕b, qà֮𞄲̕b, qà֮𞄲̕b, qà֮𞄲̕b);
+Test_N(qa֮𞄲̀̕b, qa֮𞄲̀̕b, qa֮𞄲̀̕b, qa֮𞄲̀̕b, qa֮𞄲̀̕b);
+Test_N(qà֮𞄳̕b, qà֮𞄳̕b, qà֮𞄳̕b, qà֮𞄳̕b, qà֮𞄳̕b);
+Test_N(qa֮𞄳̀̕b, qa֮𞄳̀̕b, qa֮𞄳̀̕b, qa֮𞄳̀̕b, qa֮𞄳̀̕b);
+Test_N(qà֮𞄴̕b, qà֮𞄴̕b, qà֮𞄴̕b, qà֮𞄴̕b, qà֮𞄴̕b);
+Test_N(qa֮𞄴̀̕b, qa֮𞄴̀̕b, qa֮𞄴̀̕b, qa֮𞄴̀̕b, qa֮𞄴̀̕b);
+Test_N(qà֮𞄵̕b, qà֮𞄵̕b, qà֮𞄵̕b, qà֮𞄵̕b, qà֮𞄵̕b);
+Test_N(qa֮𞄵̀̕b, qa֮𞄵̀̕b, qa֮𞄵̀̕b, qa֮𞄵̀̕b, qa֮𞄵̀̕b);
+Test_N(qà֮𞄶̕b, qà֮𞄶̕b, qà֮𞄶̕b, qà֮𞄶̕b, qà֮𞄶̕b);
+Test_N(qa֮𞄶̀̕b, qa֮𞄶̀̕b, qa֮𞄶̀̕b, qa֮𞄶̀̕b, qa֮𞄶̀̕b);
+Test_N(qà֮𞊮̕b, qà֮𞊮̕b, qà֮𞊮̕b, qà֮𞊮̕b, qà֮𞊮̕b);
+Test_N(qa֮𞊮̀̕b, qa֮𞊮̀̕b, qa֮𞊮̀̕b, qa֮𞊮̀̕b, qa֮𞊮̀̕b);
+Test_N(qà֮𞋬̕b, qà֮𞋬̕b, qà֮𞋬̕b, qà֮𞋬̕b, qà֮𞋬̕b);
+Test_N(qa֮𞋬̀̕b, qa֮𞋬̀̕b, qa֮𞋬̀̕b, qa֮𞋬̀̕b, qa֮𞋬̀̕b);
+Test_N(qà֮𞋭̕b, qà֮𞋭̕b, qà֮𞋭̕b, qà֮𞋭̕b, qà֮𞋭̕b);
+Test_N(qa֮𞋭̀̕b, qa֮𞋭̀̕b, qa֮𞋭̀̕b, qa֮𞋭̀̕b, qa֮𞋭̀̕b);
+Test_N(qà֮𞋮̕b, qà֮𞋮̕b, qà֮𞋮̕b, qà֮𞋮̕b, qà֮𞋮̕b);
+Test_N(qa֮𞋮̀̕b, qa֮𞋮̀̕b, qa֮𞋮̀̕b, qa֮𞋮̀̕b, qa֮𞋮̀̕b);
+Test_N(qà֮𞋯̕b, qà֮𞋯̕b, qà֮𞋯̕b, qà֮𞋯̕b, qà֮𞋯̕b);
+Test_N(qa֮𞋯̀̕b, qa֮𞋯̀̕b, qa֮𞋯̀̕b, qa֮𞋯̀̕b, qa֮𞋯̀̕b);
+Test_N(qà̕𞓬͜b, qà̕𞓬͜b, qà̕𞓬͜b, qà̕𞓬͜b, qà̕𞓬͜b);
+Test_N(qà𞓬̕͜b, qà𞓬̕͜b, qà𞓬̕͜b, qà𞓬̕͜b, qà𞓬̕͜b);
+Test_N(qà̕𞓭͜b, qà̕𞓭͜b, qà̕𞓭͜b, qà̕𞓭͜b, qà̕𞓭͜b);
+Test_N(qà𞓭̕͜b, qà𞓭̕͜b, qà𞓭̕͜b, qà𞓭̕͜b, qà𞓭̕͜b);
+Test_N(qa᷺̖𞓮֚b, qa᷺̖𞓮֚b, qa᷺̖𞓮֚b, qa᷺̖𞓮֚b, qa᷺̖𞓮֚b);
+Test_N(qa᷺𞓮̖֚b, qa᷺𞓮̖֚b, qa᷺𞓮̖֚b, qa᷺𞓮̖֚b, qa᷺𞓮̖֚b);
+Test_N(qà֮𞓯̕b, qà֮𞓯̕b, qà֮𞓯̕b, qà֮𞓯̕b, qà֮𞓯̕b);
+Test_N(qa֮𞓯̀̕b, qa֮𞓯̀̕b, qa֮𞓯̀̕b, qa֮𞓯̀̕b, qa֮𞓯̀̕b);
+Test_N(qa᷺̖𞣐֚b, qa᷺̖𞣐֚b, qa᷺̖𞣐֚b, qa᷺̖𞣐֚b, qa᷺̖𞣐֚b);
+Test_N(qa᷺𞣐̖֚b, qa᷺𞣐̖֚b, qa᷺𞣐̖֚b, qa᷺𞣐̖֚b, qa᷺𞣐̖֚b);
+Test_N(qa᷺̖𞣑֚b, qa᷺̖𞣑֚b, qa᷺̖𞣑֚b, qa᷺̖𞣑֚b, qa᷺̖𞣑֚b);
+Test_N(qa᷺𞣑̖֚b, qa᷺𞣑̖֚b, qa᷺𞣑̖֚b, qa᷺𞣑̖֚b, qa᷺𞣑̖֚b);
+Test_N(qa᷺̖𞣒֚b, qa᷺̖𞣒֚b, qa᷺̖𞣒֚b, qa᷺̖𞣒֚b, qa᷺̖𞣒֚b);
+Test_N(qa᷺𞣒̖֚b, qa᷺𞣒̖֚b, qa᷺𞣒̖֚b, qa᷺𞣒̖֚b, qa᷺𞣒̖֚b);
+Test_N(qa᷺̖𞣓֚b, qa᷺̖𞣓֚b, qa᷺̖𞣓֚b, qa᷺̖𞣓֚b, qa᷺̖𞣓֚b);
+Test_N(qa᷺𞣓̖֚b, qa᷺𞣓̖֚b, qa᷺𞣓̖֚b, qa᷺𞣓̖֚b, qa᷺𞣓̖֚b);
+Test_N(qa᷺̖𞣔֚b, qa᷺̖𞣔֚b, qa᷺̖𞣔֚b, qa᷺̖𞣔֚b, qa᷺̖𞣔֚b);
+Test_N(qa᷺𞣔̖֚b, qa᷺𞣔̖֚b, qa᷺𞣔̖֚b, qa᷺𞣔̖֚b, qa᷺𞣔̖֚b);
+Test_N(qa᷺̖𞣕֚b, qa᷺̖𞣕֚b, qa᷺̖𞣕֚b, qa᷺̖𞣕֚b, qa᷺̖𞣕֚b);
+Test_N(qa᷺𞣕̖֚b, qa᷺𞣕̖֚b, qa᷺𞣕̖֚b, qa᷺𞣕̖֚b, qa᷺𞣕̖֚b);
+Test_N(qa᷺̖𞣖֚b, qa᷺̖𞣖֚b, qa᷺̖𞣖֚b, qa᷺̖𞣖֚b, qa᷺̖𞣖֚b);
+Test_N(qa᷺𞣖̖֚b, qa᷺𞣖̖֚b, qa᷺𞣖̖֚b, qa᷺𞣖̖֚b, qa᷺𞣖̖֚b);
+Test_N(qà֮𞥄̕b, qà֮𞥄̕b, qà֮𞥄̕b, qà֮𞥄̕b, qà֮𞥄̕b);
+Test_N(qa֮𞥄̀̕b, qa֮𞥄̀̕b, qa֮𞥄̀̕b, qa֮𞥄̀̕b, qa֮𞥄̀̕b);
+Test_N(qà֮𞥅̕b, qà֮𞥅̕b, qà֮𞥅̕b, qà֮𞥅̕b, qà֮𞥅̕b);
+Test_N(qa֮𞥅̀̕b, qa֮𞥅̀̕b, qa֮𞥅̀̕b, qa֮𞥅̀̕b, qa֮𞥅̀̕b);
+Test_N(qà֮𞥆̕b, qà֮𞥆̕b, qà֮𞥆̕b, qà֮𞥆̕b, qà֮𞥆̕b);
+Test_N(qa֮𞥆̀̕b, qa֮𞥆̀̕b, qa֮𞥆̀̕b, qa֮𞥆̀̕b, qa֮𞥆̀̕b);
+Test_N(qà֮𞥇̕b, qà֮𞥇̕b, qà֮𞥇̕b, qà֮𞥇̕b, qà֮𞥇̕b);
+Test_N(qa֮𞥇̀̕b, qa֮𞥇̀̕b, qa֮𞥇̀̕b, qa֮𞥇̀̕b, qa֮𞥇̀̕b);
+Test_N(qà֮𞥈̕b, qà֮𞥈̕b, qà֮𞥈̕b, qà֮𞥈̕b, qà֮𞥈̕b);
+Test_N(qa֮𞥈̀̕b, qa֮𞥈̀̕b, qa֮𞥈̀̕b, qa֮𞥈̀̕b, qa֮𞥈̀̕b);
+Test_N(qà֮𞥉̕b, qà֮𞥉̕b, qà֮𞥉̕b, qà֮𞥉̕b, qà֮𞥉̕b);
+Test_N(qa֮𞥉̀̕b, qa֮𞥉̀̕b, qa֮𞥉̀̕b, qa֮𞥉̀̕b, qa֮𞥉̀̕b);
+Test_N(qa𖿰़𞥊゙b, qa𖿰़𞥊゙b, qa𖿰़𞥊゙b, qa𖿰़𞥊゙b, qa𖿰़𞥊゙b);
+Test_N(qa𖿰𞥊़゙b, qa𖿰𞥊़゙b, qa𖿰𞥊़゙b, qa𖿰𞥊़゙b, qa𖿰𞥊़゙b);
+Test_N(qে̴া, qে̴া, qে̴া, qে̴া, qে̴া);
+Test_N(qে̴ৗ, qে̴ৗ, qে̴ৗ, qে̴ৗ, qে̴ৗ);
+Test_N(qେ̴ା, qେ̴ା, qେ̴ା, qେ̴ା, qେ̴ା);
+Test_N(qେ̴ୖ, qେ̴ୖ, qେ̴ୖ, qେ̴ୖ, qେ̴ୖ);
+Test_N(qେ̴ୗ, qେ̴ୗ, qେ̴ୗ, qେ̴ୗ, qେ̴ୗ);
+Test_N(qஒ̴ௗ, qஒ̴ௗ, qஒ̴ௗ, qஒ̴ௗ, qஒ̴ௗ);
+Test_N(qெ̴ா, qெ̴ா, qெ̴ா, qெ̴ா, qெ̴ா);
+Test_N(qெ̴ௗ, qெ̴ௗ, qெ̴ௗ, qெ̴ௗ, qெ̴ௗ);
+Test_N(qே̴ா, qே̴ா, qே̴ா, qே̴ா, qே̴ா);
+Test_N(qಿ̴ೕ, qಿ̴ೕ, qಿ̴ೕ, qಿ̴ೕ, qಿ̴ೕ);
+Test_N(qೆ̴ೂ, qೆ̴ೂ, qೆ̴ೂ, qೆ̴ೂ, qೆ̴ೂ);
+Test_N(qೆ̴ೕ, qೆ̴ೕ, qೆ̴ೕ, qೆ̴ೕ, qೆ̴ೕ);
+Test_N(qೆ̴ೖ, qೆ̴ೖ, qೆ̴ೖ, qೆ̴ೖ, qೆ̴ೖ);
+Test_N(qೊ̴ೕ, qೊ̴ೕ, qೊ̴ೕ, qೊ̴ೕ, qೊ̴ೕ);
+Test_N(qെ̴ാ, qെ̴ാ, qെ̴ാ, qെ̴ാ, qെ̴ാ);
+Test_N(qെ̴ൗ, qെ̴ൗ, qെ̴ൗ, qെ̴ൗ, qെ̴ൗ);
+Test_N(qേ̴ാ, qേ̴ാ, qേ̴ാ, qേ̴ാ, qേ̴ാ);
+Test_N(qෙ̴ා, qෙ̴ා, qෙ̴ා, qෙ̴ා, qෙ̴ා);
+Test_N(qෙ̴ෟ, qෙ̴ෟ, qෙ̴ෟ, qෙ̴ෟ, qෙ̴ෟ);
+Test_N(qཀ̴ྵ, qཀ̴ྵ, qཀ̴ྵ, qཀ̴ྵ, qཀ̴ྵ);
+Test_N(qག̴ྷ, qག̴ྷ, qག̴ྷ, qག̴ྷ, qག̴ྷ);
+Test_N(qཌ̴ྷ, qཌ̴ྷ, qཌ̴ྷ, qཌ̴ྷ, qཌ̴ྷ);
+Test_N(qད̴ྷ, qད̴ྷ, qད̴ྷ, qད̴ྷ, qད̴ྷ);
+Test_N(qབ̴ྷ, qབ̴ྷ, qབ̴ྷ, qབ̴ྷ, qབ̴ྷ);
+Test_N(qཛ̴ྷ, qཛ̴ྷ, qཛ̴ྷ, qཛ̴ྷ, qཛ̴ྷ);
+Test_N(qྐ̴ྵ, qྐ̴ྵ, qྐ̴ྵ, qྐ̴ྵ, qྐ̴ྵ);
+Test_N(qྒ̴ྷ, qྒ̴ྷ, qྒ̴ྷ, qྒ̴ྷ, qྒ̴ྷ);
+Test_N(qྜ̴ྷ, qྜ̴ྷ, qྜ̴ྷ, qྜ̴ྷ, qྜ̴ྷ);
+Test_N(qྡ̴ྷ, qྡ̴ྷ, qྡ̴ྷ, qྡ̴ྷ, qྡ̴ྷ);
+Test_N(qྦ̴ྷ, qྦ̴ྷ, qྦ̴ྷ, qྦ̴ྷ, qྦ̴ྷ);
+Test_N(qྫ̴ྷ, qྫ̴ྷ, qྫ̴ྷ, qྫ̴ྷ, qྫ̴ྷ);
+Test_N(qဥ̴ီ, qဥ̴ီ, qဥ̴ီ, qဥ̴ီ, qဥ̴ီ);
+Test_N(qᄀ̴ᅡ, qᄀ̴ᅡ, qᄀ̴ᅡ, qᄀ̴ᅡ, qᄀ̴ᅡ);
+Test_N(qᄀ̴ᅮ, qᄀ̴ᅮ, qᄀ̴ᅮ, qᄀ̴ᅮ, qᄀ̴ᅮ);
+Test_N(qᄁ̴ᅦ, qᄁ̴ᅦ, qᄁ̴ᅦ, qᄁ̴ᅦ, qᄁ̴ᅦ);
+Test_N(qᄁ̴ᅳ, qᄁ̴ᅳ, qᄁ̴ᅳ, qᄁ̴ᅳ, qᄁ̴ᅳ);
+Test_N(qᄂ̴ᅫ, qᄂ̴ᅫ, qᄂ̴ᅫ, qᄂ̴ᅫ, qᄂ̴ᅫ);
+Test_N(qᄃ̴ᅣ, qᄃ̴ᅣ, qᄃ̴ᅣ, qᄃ̴ᅣ, qᄃ̴ᅣ);
+Test_N(qᄃ̴ᅰ, qᄃ̴ᅰ, qᄃ̴ᅰ, qᄃ̴ᅰ, qᄃ̴ᅰ);
+Test_N(qᄄ̴ᅨ, qᄄ̴ᅨ, qᄄ̴ᅨ, qᄄ̴ᅨ, qᄄ̴ᅨ);
+Test_N(qᄄ̴ᅵ, qᄄ̴ᅵ, qᄄ̴ᅵ, qᄄ̴ᅵ, qᄄ̴ᅵ);
+Test_N(qᄅ̴ᅭ, qᄅ̴ᅭ, qᄅ̴ᅭ, qᄅ̴ᅭ, qᄅ̴ᅭ);
+Test_N(qᄆ̴ᅥ, qᄆ̴ᅥ, qᄆ̴ᅥ, qᄆ̴ᅥ, qᄆ̴ᅥ);
+Test_N(qᄆ̴ᅲ, qᄆ̴ᅲ, qᄆ̴ᅲ, qᄆ̴ᅲ, qᄆ̴ᅲ);
+Test_N(qᄇ̴ᅪ, qᄇ̴ᅪ, qᄇ̴ᅪ, qᄇ̴ᅪ, qᄇ̴ᅪ);
+Test_N(qᄈ̴ᅢ, qᄈ̴ᅢ, qᄈ̴ᅢ, qᄈ̴ᅢ, qᄈ̴ᅢ);
+Test_N(qᄈ̴ᅯ, qᄈ̴ᅯ, qᄈ̴ᅯ, qᄈ̴ᅯ, qᄈ̴ᅯ);
+Test_N(qᄉ̴ᅧ, qᄉ̴ᅧ, qᄉ̴ᅧ, qᄉ̴ᅧ, qᄉ̴ᅧ);
+Test_N(qᄉ̴ᅴ, qᄉ̴ᅴ, qᄉ̴ᅴ, qᄉ̴ᅴ, qᄉ̴ᅴ);
+Test_N(qᄊ̴ᅬ, qᄊ̴ᅬ, qᄊ̴ᅬ, qᄊ̴ᅬ, qᄊ̴ᅬ);
+Test_N(qᄋ̴ᅤ, qᄋ̴ᅤ, qᄋ̴ᅤ, qᄋ̴ᅤ, qᄋ̴ᅤ);
+Test_N(qᄋ̴ᅱ, qᄋ̴ᅱ, qᄋ̴ᅱ, qᄋ̴ᅱ, qᄋ̴ᅱ);
+Test_N(qᄌ̴ᅩ, qᄌ̴ᅩ, qᄌ̴ᅩ, qᄌ̴ᅩ, qᄌ̴ᅩ);
+Test_N(qᄍ̴ᅡ, qᄍ̴ᅡ, qᄍ̴ᅡ, qᄍ̴ᅡ, qᄍ̴ᅡ);
+Test_N(qᄍ̴ᅮ, qᄍ̴ᅮ, qᄍ̴ᅮ, qᄍ̴ᅮ, qᄍ̴ᅮ);
+Test_N(qᄎ̴ᅦ, qᄎ̴ᅦ, qᄎ̴ᅦ, qᄎ̴ᅦ, qᄎ̴ᅦ);
+Test_N(qᄎ̴ᅳ, qᄎ̴ᅳ, qᄎ̴ᅳ, qᄎ̴ᅳ, qᄎ̴ᅳ);
+Test_N(qᄏ̴ᅫ, qᄏ̴ᅫ, qᄏ̴ᅫ, qᄏ̴ᅫ, qᄏ̴ᅫ);
+Test_N(qᄐ̴ᅣ, qᄐ̴ᅣ, qᄐ̴ᅣ, qᄐ̴ᅣ, qᄐ̴ᅣ);
+Test_N(qᄐ̴ᅰ, qᄐ̴ᅰ, qᄐ̴ᅰ, qᄐ̴ᅰ, qᄐ̴ᅰ);
+Test_N(qᄑ̴ᅨ, qᄑ̴ᅨ, qᄑ̴ᅨ, qᄑ̴ᅨ, qᄑ̴ᅨ);
+Test_N(qᄑ̴ᅵ, qᄑ̴ᅵ, qᄑ̴ᅵ, qᄑ̴ᅵ, qᄑ̴ᅵ);
+Test_N(qᄒ̴ᅭ, qᄒ̴ᅭ, qᄒ̴ᅭ, qᄒ̴ᅭ, qᄒ̴ᅭ);
+Test_N(qᬅ̴ᬵ, qᬅ̴ᬵ, qᬅ̴ᬵ, qᬅ̴ᬵ, qᬅ̴ᬵ);
+Test_N(qᬇ̴ᬵ, qᬇ̴ᬵ, qᬇ̴ᬵ, qᬇ̴ᬵ, qᬇ̴ᬵ);
+Test_N(qᬉ̴ᬵ, qᬉ̴ᬵ, qᬉ̴ᬵ, qᬉ̴ᬵ, qᬉ̴ᬵ);
+Test_N(qᬋ̴ᬵ, qᬋ̴ᬵ, qᬋ̴ᬵ, qᬋ̴ᬵ, qᬋ̴ᬵ);
+Test_N(qᬍ̴ᬵ, qᬍ̴ᬵ, qᬍ̴ᬵ, qᬍ̴ᬵ, qᬍ̴ᬵ);
+Test_N(qᬑ̴ᬵ, qᬑ̴ᬵ, qᬑ̴ᬵ, qᬑ̴ᬵ, qᬑ̴ᬵ);
+Test_N(qᬺ̴ᬵ, qᬺ̴ᬵ, qᬺ̴ᬵ, qᬺ̴ᬵ, qᬺ̴ᬵ);
+Test_N(qᬼ̴ᬵ, qᬼ̴ᬵ, qᬼ̴ᬵ, qᬼ̴ᬵ, qᬼ̴ᬵ);
+Test_N(qᬾ̴ᬵ, qᬾ̴ᬵ, qᬾ̴ᬵ, qᬾ̴ᬵ, qᬾ̴ᬵ);
+Test_N(qᬿ̴ᬵ, qᬿ̴ᬵ, qᬿ̴ᬵ, qᬿ̴ᬵ, qᬿ̴ᬵ);
+Test_N(qᭂ̴ᬵ, qᭂ̴ᬵ, qᭂ̴ᬵ, qᭂ̴ᬵ, qᭂ̴ᬵ);
+Test_N(q걔̴ᆮ, q걔̴ᆮ, q걔̴ᆮ, q걔̴ᆮ, q걔̴ᆮ);
+Test_N(q겨̴ᆵ, q겨̴ᆵ, q겨̴ᆵ, q겨̴ᆵ, q겨̴ᆵ);
+Test_N(q과̴ᆼ, q과̴ᆼ, q과̴ᆼ, q과̴ᆼ, q과̴ᆼ);
+Test_N(q귀̴ᆮ, q귀̴ᆮ, q귀̴ᆮ, q귀̴ᆮ, q귀̴ᆮ);
+Test_N(q긔̴ᆵ, q긔̴ᆵ, q긔̴ᆵ, q긔̴ᆵ, q긔̴ᆵ);
+Test_N(q깨̴ᆼ, q깨̴ᆼ, q깨̴ᆼ, q깨̴ᆼ, q깨̴ᆼ);
+Test_N(q꼬̴ᆮ, q꼬̴ᆮ, q꼬̴ᆮ, q꼬̴ᆮ, q꼬̴ᆮ);
+Test_N(q꾀̴ᆵ, q꾀̴ᆵ, q꾀̴ᆵ, q꾀̴ᆵ, q꾀̴ᆵ);
+Test_N(q꿔̴ᆼ, q꿔̴ᆼ, q꿔̴ᆼ, q꿔̴ᆼ, q꿔̴ᆼ);
+Test_N(q나̴ᆮ, q나̴ᆮ, q나̴ᆮ, q나̴ᆮ, q나̴ᆮ);
+Test_N(q냬̴ᆵ, q냬̴ᆵ, q냬̴ᆵ, q냬̴ᆵ, q냬̴ᆵ);
+Test_N(q녀̴ᆼ, q녀̴ᆼ, q녀̴ᆼ, q녀̴ᆼ, q녀̴ᆼ);
+Test_N(q누̴ᆮ, q누̴ᆮ, q누̴ᆮ, q누̴ᆮ, q누̴ᆮ);
+Test_N(q뉘̴ᆵ, q뉘̴ᆵ, q뉘̴ᆵ, q뉘̴ᆵ, q뉘̴ᆵ);
+Test_N(q늬̴ᆼ, q늬̴ᆼ, q늬̴ᆼ, q늬̴ᆼ, q늬̴ᆼ);
+Test_N(q데̴ᆮ, q데̴ᆮ, q데̴ᆮ, q데̴ᆮ, q데̴ᆮ);
+Test_N(q도̴ᆵ, q도̴ᆵ, q도̴ᆵ, q도̴ᆵ, q도̴ᆵ);
+Test_N(q되̴ᆼ, q되̴ᆼ, q되̴ᆼ, q되̴ᆼ, q되̴ᆼ);
+Test_N(q드̴ᆮ, q드̴ᆮ, q드̴ᆮ, q드̴ᆮ, q드̴ᆮ);
+Test_N(q따̴ᆵ, q따̴ᆵ, q따̴ᆵ, q따̴ᆵ, q따̴ᆵ);
+Test_N(q떄̴ᆼ, q떄̴ᆼ, q떄̴ᆼ, q떄̴ᆼ, q떄̴ᆼ);
+Test_N(q뙈̴ᆮ, q뙈̴ᆮ, q뙈̴ᆮ, q뙈̴ᆮ, q뙈̴ᆮ);
+Test_N(q뚜̴ᆵ, q뚜̴ᆵ, q뚜̴ᆵ, q뚜̴ᆵ, q뚜̴ᆵ);
+Test_N(q뛰̴ᆼ, q뛰̴ᆼ, q뛰̴ᆼ, q뛰̴ᆼ, q뛰̴ᆼ);
+Test_N(q랴̴ᆮ, q랴̴ᆮ, q랴̴ᆮ, q랴̴ᆮ, q랴̴ᆮ);
+Test_N(q레̴ᆵ, q레̴ᆵ, q레̴ᆵ, q레̴ᆵ, q레̴ᆵ);
+Test_N(q로̴ᆼ, q로̴ᆼ, q로̴ᆼ, q로̴ᆼ, q로̴ᆼ);
+Test_N(q뤠̴ᆮ, q뤠̴ᆮ, q뤠̴ᆮ, q뤠̴ᆮ, q뤠̴ᆮ);
+Test_N(q르̴ᆵ, q르̴ᆵ, q르̴ᆵ, q르̴ᆵ, q르̴ᆵ);
+Test_N(q마̴ᆼ, q마̴ᆼ, q마̴ᆼ, q마̴ᆼ, q마̴ᆼ);
+Test_N(q몌̴ᆮ, q몌̴ᆮ, q몌̴ᆮ, q몌̴ᆮ, q몌̴ᆮ);
+Test_N(q뫠̴ᆵ, q뫠̴ᆵ, q뫠̴ᆵ, q뫠̴ᆵ, q뫠̴ᆵ);
+Test_N(q무̴ᆼ, q무̴ᆼ, q무̴ᆼ, q무̴ᆼ, q무̴ᆼ);
+Test_N(q미̴ᆮ, q미̴ᆮ, q미̴ᆮ, q미̴ᆮ, q미̴ᆮ);
+Test_N(q뱌̴ᆵ, q뱌̴ᆵ, q뱌̴ᆵ, q뱌̴ᆵ, q뱌̴ᆵ);
+Test_N(q베̴ᆼ, q베̴ᆼ, q베̴ᆼ, q베̴ᆼ, q베̴ᆼ);
+Test_N(q뵤̴ᆮ, q뵤̴ᆮ, q뵤̴ᆮ, q뵤̴ᆮ, q뵤̴ᆮ);
+Test_N(q붸̴ᆵ, q붸̴ᆵ, q붸̴ᆵ, q붸̴ᆵ, q붸̴ᆵ);
+Test_N(q브̴ᆼ, q브̴ᆼ, q브̴ᆼ, q브̴ᆼ, q브̴ᆼ);
+Test_N(q뻐̴ᆮ, q뻐̴ᆮ, q뻐̴ᆮ, q뻐̴ᆮ, q뻐̴ᆮ);
+Test_N(q뼤̴ᆵ, q뼤̴ᆵ, q뼤̴ᆵ, q뼤̴ᆵ, q뼤̴ᆵ);
+Test_N(q뽸̴ᆼ, q뽸̴ᆼ, q뽸̴ᆼ, q뽸̴ᆼ, q뽸̴ᆼ);
+Test_N(q쀼̴ᆮ, q쀼̴ᆮ, q쀼̴ᆮ, q쀼̴ᆮ, q쀼̴ᆮ);
+Test_N(q삐̴ᆵ, q삐̴ᆵ, q삐̴ᆵ, q삐̴ᆵ, q삐̴ᆵ);
+Test_N(q샤̴ᆼ, q샤̴ᆼ, q샤̴ᆼ, q샤̴ᆼ, q샤̴ᆼ);
+Test_N(q솨̴ᆮ, q솨̴ᆮ, q솨̴ᆮ, q솨̴ᆮ, q솨̴ᆮ);
+Test_N(q쇼̴ᆵ, q쇼̴ᆵ, q쇼̴ᆵ, q쇼̴ᆵ, q쇼̴ᆵ);
+Test_N(q쉐̴ᆼ, q쉐̴ᆼ, q쉐̴ᆼ, q쉐̴ᆼ, q쉐̴ᆼ);
+Test_N(q쌔̴ᆮ, q쌔̴ᆮ, q쌔̴ᆮ, q쌔̴ᆮ, q쌔̴ᆮ);
+Test_N(q써̴ᆵ, q써̴ᆵ, q써̴ᆵ, q써̴ᆵ, q써̴ᆵ);
+Test_N(q쎼̴ᆼ, q쎼̴ᆼ, q쎼̴ᆼ, q쎼̴ᆼ, q쎼̴ᆼ);
+Test_N(q쒀̴ᆮ, q쒀̴ᆮ, q쒀̴ᆮ, q쒀̴ᆮ, q쒀̴ᆮ);
+Test_N(q쓔̴ᆵ, q쓔̴ᆵ, q쓔̴ᆵ, q쓔̴ᆵ, q쓔̴ᆵ);
+Test_N(q씨̴ᆼ, q씨̴ᆼ, q씨̴ᆼ, q씨̴ᆼ, q씨̴ᆼ);
+Test_N(q여̴ᆮ, q여̴ᆮ, q여̴ᆮ, q여̴ᆮ, q여̴ᆮ);
+Test_N(q와̴ᆵ, q와̴ᆵ, q와̴ᆵ, q와̴ᆵ, q와̴ᆵ);
+Test_N(q요̴ᆼ, q요̴ᆼ, q요̴ᆼ, q요̴ᆼ, q요̴ᆼ);
+Test_N(q의̴ᆮ, q의̴ᆮ, q의̴ᆮ, q의̴ᆮ, q의̴ᆮ);
+Test_N(q재̴ᆵ, q재̴ᆵ, q재̴ᆵ, q재̴ᆵ, q재̴ᆵ);
+Test_N(q저̴ᆼ, q저̴ᆼ, q저̴ᆼ, q저̴ᆼ, q저̴ᆼ);
+Test_N(q죄̴ᆮ, q죄̴ᆮ, q죄̴ᆮ, q죄̴ᆮ, q죄̴ᆮ);
+Test_N(q줘̴ᆵ, q줘̴ᆵ, q줘̴ᆵ, q줘̴ᆵ, q줘̴ᆵ);
+Test_N(q쥬̴ᆼ, q쥬̴ᆼ, q쥬̴ᆼ, q쥬̴ᆼ, q쥬̴ᆼ);
+Test_N(q쨰̴ᆮ, q쨰̴ᆮ, q쨰̴ᆮ, q쨰̴ᆮ, q쨰̴ᆮ);
+Test_N(q쪄̴ᆵ, q쪄̴ᆵ, q쪄̴ᆵ, q쪄̴ᆵ, q쪄̴ᆵ);
+Test_N(q쫘̴ᆼ, q쫘̴ᆼ, q쫘̴ᆼ, q쫘̴ᆼ, q쫘̴ᆼ);
+Test_N(q쮜̴ᆮ, q쮜̴ᆮ, q쮜̴ᆮ, q쮜̴ᆮ, q쮜̴ᆮ);
+Test_N(q쯰̴ᆵ, q쯰̴ᆵ, q쯰̴ᆵ, q쯰̴ᆵ, q쯰̴ᆵ);
+Test_N(q채̴ᆼ, q채̴ᆼ, q채̴ᆼ, q채̴ᆼ, q채̴ᆼ);
+Test_N(q초̴ᆮ, q초̴ᆮ, q초̴ᆮ, q초̴ᆮ, q초̴ᆮ);
+Test_N(q최̴ᆵ, q최̴ᆵ, q최̴ᆵ, q최̴ᆵ, q최̴ᆵ);
+Test_N(q춰̴ᆼ, q춰̴ᆼ, q춰̴ᆼ, q춰̴ᆼ, q춰̴ᆼ);
+Test_N(q카̴ᆮ, q카̴ᆮ, q카̴ᆮ, q카̴ᆮ, q카̴ᆮ);
+Test_N(q컈̴ᆵ, q컈̴ᆵ, q컈̴ᆵ, q컈̴ᆵ, q컈̴ᆵ);
+Test_N(q켜̴ᆼ, q켜̴ᆼ, q켜̴ᆼ, q켜̴ᆼ, q켜̴ᆼ);
+Test_N(q쿠̴ᆮ, q쿠̴ᆮ, q쿠̴ᆮ, q쿠̴ᆮ, q쿠̴ᆮ);
+Test_N(q퀴̴ᆵ, q퀴̴ᆵ, q퀴̴ᆵ, q퀴̴ᆵ, q퀴̴ᆵ);
+Test_N(q킈̴ᆼ, q킈̴ᆼ, q킈̴ᆼ, q킈̴ᆼ, q킈̴ᆼ);
+Test_N(q테̴ᆮ, q테̴ᆮ, q테̴ᆮ, q테̴ᆮ, q테̴ᆮ);
+Test_N(q토̴ᆵ, q토̴ᆵ, q토̴ᆵ, q토̴ᆵ, q토̴ᆵ);
+Test_N(q퇴̴ᆼ, q퇴̴ᆼ, q퇴̴ᆼ, q퇴̴ᆼ, q퇴̴ᆼ);
+Test_N(q트̴ᆮ, q트̴ᆮ, q트̴ᆮ, q트̴ᆮ, q트̴ᆮ);
+Test_N(q파̴ᆵ, q파̴ᆵ, q파̴ᆵ, q파̴ᆵ, q파̴ᆵ);
+Test_N(q퍠̴ᆼ, q퍠̴ᆼ, q퍠̴ᆼ, q퍠̴ᆼ, q퍠̴ᆼ);
+Test_N(q퐤̴ᆮ, q퐤̴ᆮ, q퐤̴ᆮ, q퐤̴ᆮ, q퐤̴ᆮ);
+Test_N(q푸̴ᆵ, q푸̴ᆵ, q푸̴ᆵ, q푸̴ᆵ, q푸̴ᆵ);
+Test_N(q퓌̴ᆼ, q퓌̴ᆼ, q퓌̴ᆼ, q퓌̴ᆼ, q퓌̴ᆼ);
+Test_N(q햐̴ᆮ, q햐̴ᆮ, q햐̴ᆮ, q햐̴ᆮ, q햐̴ᆮ);
+Test_N(q헤̴ᆵ, q헤̴ᆵ, q헤̴ᆵ, q헤̴ᆵ, q헤̴ᆵ);
+Test_N(q호̴ᆼ, q호̴ᆼ, q호̴ᆼ, q호̴ᆼ, q호̴ᆼ);
+Test_N(q훼̴ᆮ, q훼̴ᆮ, q훼̴ᆮ, q훼̴ᆮ, q훼̴ᆮ);
+Test_N(q흐̴ᆵ, q흐̴ᆵ, q흐̴ᆵ, q흐̴ᆵ, q흐̴ᆵ);
+Test_N(q𑄱̴𑄧, q𑄱̴𑄧, q𑄱̴𑄧, q𑄱̴𑄧, q𑄱̴𑄧);
+Test_N(q𑄲̴𑄧, q𑄲̴𑄧, q𑄲̴𑄧, q𑄲̴𑄧, q𑄲̴𑄧);
+Test_N(q𑍇̴𑌾, q𑍇̴𑌾, q𑍇̴𑌾, q𑍇̴𑌾, q𑍇̴𑌾);
+Test_N(q𑍇̴𑍗, q𑍇̴𑍗, q𑍇̴𑍗, q𑍇̴𑍗, q𑍇̴𑍗);
+Test_N(q𑒹̴𑒰, q𑒹̴𑒰, q𑒹̴𑒰, q𑒹̴𑒰, q𑒹̴𑒰);
+Test_N(q𑒹̴𑒺, q𑒹̴𑒺, q𑒹̴𑒺, q𑒹̴𑒺, q𑒹̴𑒺);
+Test_N(q𑒹̴𑒽, q𑒹̴𑒽, q𑒹̴𑒽, q𑒹̴𑒽, q𑒹̴𑒽);
+Test_N(q𑖸̴𑖯, q𑖸̴𑖯, q𑖸̴𑖯, q𑖸̴𑖯, q𑖸̴𑖯);
+Test_N(q𑖹̴𑖯, q𑖹̴𑖯, q𑖹̴𑖯, q𑖹̴𑖯, q𑖹̴𑖯);
+Test_N(q𑤵̴𑤰, q𑤵̴𑤰, q𑤵̴𑤰, q𑤵̴𑤰, q𑤵̴𑤰);
+done_testing(); \ No newline at end of file
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Age.pl b/Master/tlpkg/tlperl/lib/unicore/To/Age.pl
index 9554f6d1648..4d43c10f9de 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Age.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Age.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -133,6 +133,7 @@ return <<'END';
616 61A 5.1
61B 1.1
61C 6.3
+61D 14.0
61E 4.1
61F 1.1
620 6.0
@@ -172,13 +173,18 @@ return <<'END';
840 85B 6.0
85E 6.0
860 86A 10.0
+870 88E 14.0
+890 891 14.0
+898 89F 14.0
8A0 6.1
8A1 7.0
8A2 8AC 6.1
8AD 8B2 7.0
8B3 8B4 8.0
+8B5 14.0
8B6 8BD 9.0
8BE 8C7 13.0
+8C8 8D2 14.0
8D3 11.0
8D4 8E2 9.0
8E3 8.0
@@ -313,6 +319,7 @@ C12 C28 1.1
C2A C33 1.1
C34 7.0
C35 C39 1.1
+C3C 14.0
C3D 5.1
C3E C44 1.1
C46 C48 1.1
@@ -320,6 +327,7 @@ C4A C4D 1.1
C55 C56 1.1
C58 C59 5.1
C5A 8.0
+C5D 14.0
C60 C61 1.1
C62 C63 5.1
C66 C6F 1.1
@@ -339,11 +347,13 @@ CBE CC4 1.1
CC6 CC8 1.1
CCA CCD 1.1
CD5 CD6 1.1
+CDD 14.0
CDE 1.1
CE0 CE1 1.1
CE2 CE3 5.0
CE6 CEF 1.1
CF1 CF2 5.0
+CF3 15.0
D00 10.0
D01 7.0
D02 D03 1.1
@@ -412,6 +422,7 @@ EBB EBD 1.1
EC0 EC4 1.1
EC6 1.1
EC8 ECD 1.1
+ECE 15.0
ED0 ED9 1.1
EDC EDD 1.1
EDE EDF 6.1
@@ -514,7 +525,10 @@ FD9 FDA 6.0
16A0 16F0 3.0
16F1 16F8 7.0
1700 170C 3.2
+170D 14.0
170E 1714 3.2
+1715 14.0
+171F 14.0
1720 1736 3.2
1740 1753 3.2
1760 176C 3.2
@@ -525,6 +539,7 @@ FD9 FDA 6.0
17E0 17E9 3.0
17F0 17F9 4.0
1800 180E 3.0
+180F 14.0
1810 1819 3.0
1820 1877 3.0
1878 11.0
@@ -554,8 +569,11 @@ FD9 FDA 6.0
1AA0 1AAD 5.2
1AB0 1ABE 7.0
1ABF 1AC0 13.0
+1AC1 1ACE 14.0
1B00 1B4B 5.0
+1B4C 14.0
1B50 1B7C 5.0
+1B7D 1B7E 14.0
1B80 1BAA 5.1
1BAB 1BAD 6.1
1BAE 1BB9 5.1
@@ -580,6 +598,7 @@ FD9 FDA 6.0
1DCB 1DE6 5.1
1DE7 1DF5 7.0
1DF6 1DF9 10.0
+1DFA 14.0
1DFB 9.0
1DFC 6.0
1DFD 5.2
@@ -635,6 +654,7 @@ FD9 FDA 6.0
20BB 20BD 7.0
20BE 8.0
20BF 10.0
+20C0 14.0
20D0 20E1 1.1
20E2 20E3 3.0
20E4 20EA 3.2
@@ -773,7 +793,9 @@ FD9 FDA 6.0
2BF0 2BFE 11.0
2BFF 12.0
2C00 2C2E 4.1
+2C2F 14.0
2C30 2C5E 4.1
+2C5F 14.0
2C60 2C6C 5.0
2C6D 2C6F 5.1
2C70 5.2
@@ -814,6 +836,7 @@ FD9 FDA 6.0
2E4A 2E4E 11.0
2E4F 12.0
2E50 2E52 13.0
+2E53 2E5D 14.0
2E80 2E99 3.0
2E9B 2EF3 3.0
2F00 2FD5 3.0
@@ -874,6 +897,7 @@ FD9 FDA 6.0
9FD6 9FEA 10.0
9FEB 9FEF 11.0
9FF0 9FFC 13.0
+9FFD 9FFF 14.0
A000 A48C 3.0
A490 A4A1 3.0
A4A2 A4A3 3.2
@@ -914,8 +938,13 @@ A7B0 A7B1 7.0
A7B2 A7B7 8.0
A7B8 A7B9 11.0
A7BA A7BF 12.0
+A7C0 A7C1 14.0
A7C2 A7C6 12.0
A7C7 A7CA 13.0
+A7D0 A7D1 14.0
+A7D3 14.0
+A7D5 A7D9 14.0
+A7F2 A7F4 14.0
A7F5 A7F6 13.0
A7F7 7.0
A7F8 A7F9 6.1
@@ -979,13 +1008,17 @@ FB40 FB41 1.1
FB43 FB44 1.1
FB46 FBB1 1.1
FBB2 FBC1 6.0
+FBC2 14.0
FBD3 FD3F 1.1
+FD40 FD4F 14.0
FD50 FD8F 1.1
FD92 FDC7 1.1
+FDCF 14.0
FDD0 FDEF 3.1
FDF0 FDFB 1.1
FDFC 3.2
FDFD 4.0
+FDFE FDFF 14.0
FE00 FE0F 3.2
FE10 FE19 4.1
FE20 FE23 1.1
@@ -1055,9 +1088,20 @@ FFFD FFFF 1.1
10500 10527 7.0
10530 10563 7.0
1056F 7.0
+10570 1057A 14.0
+1057C 1058A 14.0
+1058C 10592 14.0
+10594 10595 14.0
+10597 105A1 14.0
+105A3 105B1 14.0
+105B3 105B9 14.0
+105BB 105BC 14.0
10600 10736 7.0
10740 10755 7.0
10760 10767 7.0
+10780 10785 14.0
+10787 107B0 14.0
+107B2 107BA 14.0
10800 10805 4.0
10808 4.0
1080A 10835 4.0
@@ -1112,14 +1156,18 @@ FFFD FFFF 1.1
10E80 10EA9 13.0
10EAB 10EAD 13.0
10EB0 10EB1 13.0
+10EFD 10EFF 15.0
10F00 10F27 11.0
10F30 10F59 11.0
+10F70 10F89 14.0
10FB0 10FCB 13.0
10FE0 10FF6 12.0
11000 1104D 6.0
11052 1106F 6.0
+11070 11075 14.0
1107F 7.0
11080 110C1 5.2
+110C2 14.0
110CD 11.0
110D0 110E8 6.1
110F0 110F9 6.1
@@ -1139,6 +1187,7 @@ FFFD FFFF 1.1
11200 11211 7.0
11213 1123D 7.0
1123E 9.0
+1123F 11241 15.0
11280 11286 8.0
11288 8.0
1128A 1128D 8.0
@@ -1180,11 +1229,13 @@ FFFD FFFF 1.1
11660 1166C 9.0
11680 116B7 6.1
116B8 12.0
+116B9 14.0
116C0 116C9 6.1
11700 11719 8.0
1171A 11.0
1171D 1172B 8.0
11730 1173F 8.0
+11740 11746 14.0
11800 1183B 11.0
118A0 118F2 7.0
118FF 7.0
@@ -1205,7 +1256,9 @@ FFFD FFFF 1.1
11A86 11A9C 10.0
11A9D 11.0
11A9E 11AA2 10.0
+11AB0 11ABF 14.0
11AC0 11AF8 7.0
+11B00 11B09 15.0
11C00 11C08 9.0
11C0A 11C36 9.0
11C38 11C45 9.0
@@ -1227,6 +1280,9 @@ FFFD FFFF 1.1
11D93 11D98 11.0
11DA0 11DA9 11.0
11EE0 11EF8 11.0
+11F00 11F10 15.0
+11F12 11F3A 15.0
+11F3E 11F59 15.0
11FB0 13.0
11FC0 11FF1 12.0
11FFF 12.0
@@ -1238,13 +1294,18 @@ FFFD FFFF 1.1
12470 12473 5.0
12474 7.0
12480 12543 8.0
+12F90 12FF2 14.0
13000 1342E 5.2
+1342F 15.0
13430 13438 12.0
+13439 13455 15.0
14400 14646 8.0
16800 16A38 6.0
16A40 16A5E 7.0
16A60 16A69 7.0
16A6E 16A6F 7.0
+16A70 16ABE 14.0
+16AC0 16AC9 14.0
16AD0 16AED 7.0
16AF0 16AF5 7.0
16B00 16B45 7.0
@@ -1270,9 +1331,15 @@ FFFD FFFF 1.1
18800 18AF2 9.0
18AF3 18CD5 13.0
18D00 18D08 13.0
+1AFF0 1AFF3 14.0
+1AFF5 1AFFB 14.0
+1AFFD 1AFFE 14.0
1B000 1B001 6.0
1B002 1B11E 10.0
+1B11F 1B122 14.0
+1B132 15.0
1B150 1B152 12.0
+1B155 15.0
1B164 1B167 12.0
1B170 1B2FB 10.0
1BC00 1BC6A 7.0
@@ -1280,12 +1347,17 @@ FFFD FFFF 1.1
1BC80 1BC88 7.0
1BC90 1BC99 7.0
1BC9C 1BCA3 7.0
+1CF00 1CF2D 14.0
+1CF30 1CF46 14.0
+1CF50 1CFC3 14.0
1D000 1D0F5 3.1
1D100 1D126 3.1
1D129 5.1
1D12A 1D1DD 3.1
1D1DE 1D1E8 8.0
+1D1E9 1D1EA 14.0
1D200 1D245 4.1
+1D2C0 1D2D3 15.0
1D2E0 1D2F3 11.0
1D300 1D356 4.0
1D360 1D371 5.0
@@ -1318,17 +1390,27 @@ FFFD FFFF 1.1
1D800 1DA8B 8.0
1DA9B 1DA9F 8.0
1DAA1 1DAAF 8.0
+1DF00 1DF1E 14.0
+1DF25 1DF2A 15.0
1E000 1E006 9.0
1E008 1E018 9.0
1E01B 1E021 9.0
1E023 1E024 9.0
1E026 1E02A 9.0
+1E030 1E06D 15.0
+1E08F 15.0
1E100 1E12C 12.0
1E130 1E13D 12.0
1E140 1E149 12.0
1E14E 1E14F 12.0
+1E290 1E2AE 14.0
1E2C0 1E2F9 12.0
1E2FF 12.0
+1E4D0 1E4F9 15.0
+1E7E0 1E7E6 14.0
+1E7E8 1E7EB 14.0
+1E7ED 1E7EE 14.0
+1E7F0 1E7FE 14.0
1E800 1E8C4 7.0
1E8C7 1E8D6 7.0
1E900 1E94A 9.0
@@ -1499,6 +1581,8 @@ FFFD FFFF 1.1
1F6D3 1F6D4 10.0
1F6D5 12.0
1F6D6 1F6D7 13.0
+1F6DC 15.0
+1F6DD 1F6DF 14.0
1F6E0 1F6EC 7.0
1F6F0 1F6F3 7.0
1F6F4 1F6F6 9.0
@@ -1507,9 +1591,13 @@ FFFD FFFF 1.1
1F6FA 12.0
1F6FB 1F6FC 13.0
1F700 1F773 6.0
+1F774 1F776 15.0
+1F77B 1F77F 15.0
1F780 1F7D4 7.0
1F7D5 1F7D8 11.0
+1F7D9 15.0
1F7E0 1F7EB 12.0
+1F7F0 14.0
1F800 1F80B 7.0
1F810 1F847 7.0
1F850 1F859 7.0
@@ -1538,6 +1626,7 @@ FFFD FFFF 1.1
1F972 13.0
1F973 1F976 11.0
1F977 1F978 13.0
+1F979 14.0
1F97A 11.0
1F97B 12.0
1F97C 1F97F 11.0
@@ -1555,6 +1644,7 @@ FFFD FFFF 1.1
1F9C1 1F9C2 11.0
1F9C3 1F9CA 12.0
1F9CB 13.0
+1F9CC 14.0
1F9CD 1F9CF 12.0
1F9D0 1F9E6 10.0
1F9E7 1F9FF 11.0
@@ -1562,27 +1652,47 @@ FFFD FFFF 1.1
1FA60 1FA6D 11.0
1FA70 1FA73 12.0
1FA74 13.0
+1FA75 1FA77 15.0
1FA78 1FA7A 12.0
+1FA7B 1FA7C 14.0
1FA80 1FA82 12.0
1FA83 1FA86 13.0
+1FA87 1FA88 15.0
1FA90 1FA95 12.0
1FA96 1FAA8 13.0
+1FAA9 1FAAC 14.0
+1FAAD 1FAAF 15.0
1FAB0 1FAB6 13.0
+1FAB7 1FABA 14.0
+1FABB 1FABD 15.0
+1FABF 15.0
1FAC0 1FAC2 13.0
+1FAC3 1FAC5 14.0
+1FACE 1FACF 15.0
1FAD0 1FAD6 13.0
+1FAD7 1FAD9 14.0
+1FADA 1FADB 15.0
+1FAE0 1FAE7 14.0
+1FAE8 15.0
+1FAF0 1FAF6 14.0
+1FAF7 1FAF8 15.0
1FB00 1FB92 13.0
1FB94 1FBCA 13.0
1FBF0 1FBF9 13.0
1FFFE 1FFFF 2.0
20000 2A6D6 3.1
2A6D7 2A6DD 13.0
+2A6DE 2A6DF 14.0
2A700 2B734 5.2
+2B735 2B738 14.0
+2B739 15.0
2B740 2B81D 6.0
2B820 2CEA1 8.0
2CEB0 2EBE0 10.0
2F800 2FA1D 3.1
2FFFE 2FFFF 2.0
30000 3134A 13.0
+31350 323AF 15.0
3FFFE 3FFFF 2.0
4FFFE 4FFFF 2.0
5FFFE 5FFFF 2.0
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Bc.pl b/Master/tlpkg/tlperl/lib/unicore/To/Bc.pl
index 3025d6ec593..7fd6b768afb 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Bc.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Bc.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -134,10 +134,12 @@ F7 ON
82E 858 R
859 85B NSM
85C 85F R
-860 86F AL
-870 89F R
-8A0 8D2 AL
-8D3 8E1 NSM
+860 88F AL
+890 891 AN
+892 897 AL
+898 89F NSM
+8A0 8C9 AL
+8CA 8E1 NSM
8E2 AN
8E3 902 NSM
93A NSM
@@ -185,6 +187,7 @@ BF9 ET
BFA ON
C00 NSM
C04 NSM
+C3C NSM
C3E C40 NSM
C46 C48 NSM
C4A C4D NSM
@@ -210,7 +213,7 @@ E3F ET
E47 E4E NSM
EB1 NSM
EB4 EBC NSM
-EC8 ECD NSM
+EC8 ECE NSM
F18 F19 NSM
F35 NSM
F37 NSM
@@ -239,7 +242,7 @@ FC6 NSM
1680 WS
169B 169C ON
1712 1714 NSM
-1732 1734 NSM
+1732 1733 NSM
1752 1753 NSM
1772 1773 NSM
17B4 17B5 NSM
@@ -252,6 +255,7 @@ FC6 NSM
1800 180A ON
180B 180D NSM
180E BN
+180F NSM
1885 1886 NSM
18A9 NSM
1920 1922 NSM
@@ -270,7 +274,7 @@ FC6 NSM
1A65 1A6C NSM
1A73 1A7C NSM
1A7F NSM
-1AB0 1AC0 NSM
+1AB0 1ACE NSM
1B00 1B03 NSM
1B34 NSM
1B36 1B3A NSM
@@ -293,8 +297,7 @@ FC6 NSM
1CED NSM
1CF4 NSM
1CF8 1CF9 NSM
-1DC0 1DF9 NSM
-1DFB 1DFF NSM
+1DC0 1DFF NSM
1FBD ON
1FBF 1FC1 ON
1FCD 1FCF ON
@@ -367,7 +370,7 @@ FC6 NSM
2CF9 2CFF ON
2D7F NSM
2DE0 2DFF NSM
-2E00 2E52 ON
+2E00 2E5D ON
2E80 2E99 ON
2E9B 2EF3 ON
2F00 2FD5 ON
@@ -444,12 +447,12 @@ FB1F FB28 R
FB29 ES
FB2A FB4F R
FB50 FD3D AL
-FD3E FD3F ON
-FD40 FDCF AL
+FD3E FD4F ON
+FD50 FDCE AL
+FDCF ON
FDD0 FDEF BN
FDF0 FDFC AL
-FDFD ON
-FDFE FDFF AL
+FDFD FDFF ON
FE00 FE0F NSM
FE10 FE19 ON
FE20 FE2F NSM
@@ -522,17 +525,25 @@ FFFE FFFF BN
10E60 10E7E AN
10E7F 10EAA R
10EAB 10EAC NSM
-10EAD 10F2F R
+10EAD 10EBF R
+10EC0 10EFC AL
+10EFD 10EFF NSM
+10F00 10F2F R
10F30 10F45 AL
10F46 10F50 NSM
10F51 10F6F AL
-10F70 10FFF R
+10F70 10F81 R
+10F82 10F85 NSM
+10F86 10FFF R
11001 NSM
11038 11046 NSM
11052 11065 ON
+11070 NSM
+11073 11074 NSM
1107F 11081 NSM
110B3 110B6 NSM
110B9 110BA NSM
+110C2 NSM
11100 11102 NSM
11127 1112B NSM
1112D 11134 NSM
@@ -545,6 +556,7 @@ FFFE FFFF BN
11234 NSM
11236 11237 NSM
1123E NSM
+11241 NSM
112DF NSM
112E3 112EA NSM
11300 11301 NSM
@@ -607,9 +619,15 @@ FFFE FFFF BN
11D95 NSM
11D97 NSM
11EF3 11EF4 NSM
+11F00 11F01 NSM
+11F36 11F3A NSM
+11F40 NSM
+11F42 NSM
11FD5 11FDC ON
11FDD 11FE0 ET
11FE1 11FF1 ON
+13440 NSM
+13447 13455 NSM
16AF0 16AF4 NSM
16B30 16B36 NSM
16F4F NSM
@@ -618,11 +636,14 @@ FFFE FFFF BN
16FE4 NSM
1BC9D 1BC9E NSM
1BCA0 1BCA3 BN
+1CF00 1CF2D NSM
+1CF30 1CF46 NSM
1D167 1D169 NSM
1D173 1D17A BN
1D17B 1D182 NSM
1D185 1D18B NSM
1D1AA 1D1AD NSM
+1D1E9 1D1EA ON
1D200 1D241 ON
1D242 1D244 NSM
1D245 ON
@@ -644,9 +665,12 @@ FFFE FFFF BN
1E01B 1E021 NSM
1E023 1E024 NSM
1E026 1E02A NSM
+1E08F NSM
1E130 1E136 NSM
+1E2AE NSM
1E2EC 1E2EF NSM
1E2FF ET
+1E4EC 1E4EF NSM
1E800 1E8CF R
1E8D0 1E8D6 NSM
1E8D7 1E943 R
@@ -673,28 +697,27 @@ FFFE FFFF BN
1F1AD ON
1F260 1F265 ON
1F300 1F6D7 ON
-1F6E0 1F6EC ON
+1F6DC 1F6EC ON
1F6F0 1F6FC ON
-1F700 1F773 ON
-1F780 1F7D8 ON
+1F700 1F776 ON
+1F77B 1F7D9 ON
1F7E0 1F7EB ON
+1F7F0 ON
1F800 1F80B ON
1F810 1F847 ON
1F850 1F859 ON
1F860 1F887 ON
1F890 1F8AD ON
1F8B0 1F8B1 ON
-1F900 1F978 ON
-1F97A 1F9CB ON
-1F9CD 1FA53 ON
+1F900 1FA53 ON
1FA60 1FA6D ON
-1FA70 1FA74 ON
-1FA78 1FA7A ON
-1FA80 1FA86 ON
-1FA90 1FAA8 ON
-1FAB0 1FAB6 ON
-1FAC0 1FAC2 ON
-1FAD0 1FAD6 ON
+1FA70 1FA7C ON
+1FA80 1FA88 ON
+1FA90 1FABD ON
+1FABF 1FAC5 ON
+1FACE 1FADB ON
+1FAE0 1FAE8 ON
+1FAF0 1FAF8 ON
1FB00 1FB92 ON
1FB94 1FBCA ON
1FBF0 1FBF9 EN
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Bmg.pl b/Master/tlpkg/tlperl/lib/unicore/To/Bmg.pl
index cf664fce2f5..37e4c24cac2 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Bmg.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Bmg.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! IT IS DEPRECATED TO USE THIS FILE !!!!!!!
@@ -18,7 +18,7 @@
# the main body of the table, and what all code points missing from this file
# map to.
$Unicode::UCD::SwashInfo{'ToBmg'}{'format'} = 'x'; # non-negative hex whole number; a code point
-$Unicode::UCD::SwashInfo{'ToBmg'}{'missing'} = ''; # code point maps to the null string
+$Unicode::UCD::SwashInfo{'ToBmg'}{'missing'} = ''; # code point maps to the empty string
return <<'END';
0028 0029
@@ -403,6 +403,14 @@ return <<'END';
2E27 2E26
2E28 2E29
2E29 2E28
+2E55 2E56
+2E56 2E55
+2E57 2E58
+2E58 2E57
+2E59 2E5A
+2E5A 2E59
+2E5B 2E5C
+2E5C 2E5B
3008 3009
3009 3008
300A 300B
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Bpb.pl b/Master/tlpkg/tlperl/lib/unicore/To/Bpb.pl
index 9900e91c57a..a409d08757b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Bpb.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Bpb.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -14,7 +14,7 @@
# the main body of the table, and what all code points missing from this file
# map to.
$Unicode::UCD::SwashInfo{'ToBpb'}{'format'} = 'x'; # non-negative hex whole number; a code point
-$Unicode::UCD::SwashInfo{'ToBpb'}{'missing'} = ''; # code point maps to the null string
+$Unicode::UCD::SwashInfo{'ToBpb'}{'missing'} = ''; # code point maps to the empty string
return <<'END';
28 0029
@@ -103,6 +103,14 @@ F3D 0F3C
2E27 2E26
2E28 2E29
2E29 2E28
+2E55 2E56
+2E56 2E55
+2E57 2E58
+2E58 2E57
+2E59 2E5A
+2E5A 2E59
+2E5B 2E5C
+2E5C 2E5B
3008 3009
3009 3008
300A 300B
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Bpt.pl b/Master/tlpkg/tlperl/lib/unicore/To/Bpt.pl
index 815b07d7dc1..984a5d78c4b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Bpt.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Bpt.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -17,124 +17,132 @@ $Unicode::UCD::SwashInfo{'ToBpt'}{'format'} = 's'; # string
$Unicode::UCD::SwashInfo{'ToBpt'}{'missing'} = 'n';
return <<'END';
-28 o
-29 c
-5B o
-5D c
-7B o
-7D c
-F3A o
-F3B c
-F3C o
-F3D c
-169B o
-169C c
-2045 o
-2046 c
-207D o
-207E c
-208D o
-208E c
-2308 o
-2309 c
-230A o
-230B c
-2329 o
-232A c
-2768 o
-2769 c
-276A o
-276B c
-276C o
-276D c
-276E o
-276F c
-2770 o
-2771 c
-2772 o
-2773 c
-2774 o
-2775 c
-27C5 o
-27C6 c
-27E6 o
-27E7 c
-27E8 o
-27E9 c
-27EA o
-27EB c
-27EC o
-27ED c
-27EE o
-27EF c
-2983 o
-2984 c
-2985 o
-2986 c
-2987 o
-2988 c
-2989 o
-298A c
-298B o
-298C c
-298D o
-298E c
-298F o
-2990 c
-2991 o
-2992 c
-2993 o
-2994 c
-2995 o
-2996 c
-2997 o
-2998 c
-29D8 o
-29D9 c
-29DA o
-29DB c
-29FC o
-29FD c
-2E22 o
-2E23 c
-2E24 o
-2E25 c
-2E26 o
-2E27 c
-2E28 o
-2E29 c
-3008 o
-3009 c
-300A o
-300B c
-300C o
-300D c
-300E o
-300F c
-3010 o
-3011 c
-3014 o
-3015 c
-3016 o
-3017 c
-3018 o
-3019 c
-301A o
-301B c
-FE59 o
-FE5A c
-FE5B o
-FE5C c
-FE5D o
-FE5E c
-FF08 o
-FF09 c
-FF3B o
-FF3D c
-FF5B o
-FF5D c
-FF5F o
-FF60 c
-FF62 o
-FF63 c
+28 O
+29 C
+5B O
+5D C
+7B O
+7D C
+F3A O
+F3B C
+F3C O
+F3D C
+169B O
+169C C
+2045 O
+2046 C
+207D O
+207E C
+208D O
+208E C
+2308 O
+2309 C
+230A O
+230B C
+2329 O
+232A C
+2768 O
+2769 C
+276A O
+276B C
+276C O
+276D C
+276E O
+276F C
+2770 O
+2771 C
+2772 O
+2773 C
+2774 O
+2775 C
+27C5 O
+27C6 C
+27E6 O
+27E7 C
+27E8 O
+27E9 C
+27EA O
+27EB C
+27EC O
+27ED C
+27EE O
+27EF C
+2983 O
+2984 C
+2985 O
+2986 C
+2987 O
+2988 C
+2989 O
+298A C
+298B O
+298C C
+298D O
+298E C
+298F O
+2990 C
+2991 O
+2992 C
+2993 O
+2994 C
+2995 O
+2996 C
+2997 O
+2998 C
+29D8 O
+29D9 C
+29DA O
+29DB C
+29FC O
+29FD C
+2E22 O
+2E23 C
+2E24 O
+2E25 C
+2E26 O
+2E27 C
+2E28 O
+2E29 C
+2E55 O
+2E56 C
+2E57 O
+2E58 C
+2E59 O
+2E5A C
+2E5B O
+2E5C C
+3008 O
+3009 C
+300A O
+300B C
+300C O
+300D C
+300E O
+300F C
+3010 O
+3011 C
+3014 O
+3015 C
+3016 O
+3017 C
+3018 O
+3019 C
+301A O
+301B C
+FE59 O
+FE5A C
+FE5B O
+FE5C C
+FE5D O
+FE5E C
+FF08 O
+FF09 C
+FF3B O
+FF3D C
+FF5B O
+FF5D C
+FF5F O
+FF60 C
+FF62 O
+FF63 C
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Cf.pl b/Master/tlpkg/tlperl/lib/unicore/To/Cf.pl
index e9c24e18d6a..acc2e9062d7 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Cf.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Cf.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -620,7 +620,7 @@ D8 DE F8
2160 216F 2170
2183 2184
24B6 24CF 24D0
-2C00 2C2E 2C30
+2C00 2C2F 2C30
2C60 2C61
2C62 26B
2C63 1D7D
@@ -800,17 +800,25 @@ A7B8 A7B9
A7BA A7BB
A7BC A7BD
A7BE A7BF
+A7C0 A7C1
A7C2 A7C3
A7C4 A794
A7C5 282
A7C6 1D8E
A7C7 A7C8
A7C9 A7CA
+A7D0 A7D1
+A7D6 A7D7
+A7D8 A7D9
A7F5 A7F6
AB70 ABBF 13A0
FF21 FF3A FF41
10400 10427 10428
104B0 104D3 104D8
+10570 1057A 10597
+1057C 1058A 105A3
+1058C 10592 105B3
+10594 10595 105BB
10C80 10CB2 10CC0
118A0 118BF 118C0
16E40 16E5F 16E60
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Digit.pl b/Master/tlpkg/tlperl/lib/unicore/To/Digit.pl
deleted file mode 100644
index 967f41c727d..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/To/Digit.pl
+++ /dev/null
@@ -1,674 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
-
-# !!!!!!! IT IS DEPRECATED TO USE THIS FILE !!!!!!!
-
-# This file is for internal use by core Perl only. It is retained for
-# backwards compatibility with applications that may have come to rely on it,
-# but its format and even its name or existence are subject to change without
-# notice in a future Perl version. Don't use it directly. Instead, its
-# contents are now retrievable through a stable API in the Unicode::UCD
-# module: Unicode::UCD::prop_invmap('Perl_Decimal_Digit') (Values for individual
-# code points can be retrieved via Unicode::UCD::charprop());
-
-
-
-# The name this table is to be known by, with the format of the mappings in
-# the main body of the table, and what all code points missing from this file
-# map to.
-$Unicode::UCD::SwashInfo{'ToDigit'}{'format'} = 'd'; # single decimal digit
-$Unicode::UCD::SwashInfo{'ToDigit'}{'missing'} = ''; # code point maps to the null string
-
-return <<'END';
-0030 0
-0031 1
-0032 2
-0033 3
-0034 4
-0035 5
-0036 6
-0037 7
-0038 8
-0039 9
-0660 0
-0661 1
-0662 2
-0663 3
-0664 4
-0665 5
-0666 6
-0667 7
-0668 8
-0669 9
-06F0 0
-06F1 1
-06F2 2
-06F3 3
-06F4 4
-06F5 5
-06F6 6
-06F7 7
-06F8 8
-06F9 9
-07C0 0
-07C1 1
-07C2 2
-07C3 3
-07C4 4
-07C5 5
-07C6 6
-07C7 7
-07C8 8
-07C9 9
-0966 0
-0967 1
-0968 2
-0969 3
-096A 4
-096B 5
-096C 6
-096D 7
-096E 8
-096F 9
-09E6 0
-09E7 1
-09E8 2
-09E9 3
-09EA 4
-09EB 5
-09EC 6
-09ED 7
-09EE 8
-09EF 9
-0A66 0
-0A67 1
-0A68 2
-0A69 3
-0A6A 4
-0A6B 5
-0A6C 6
-0A6D 7
-0A6E 8
-0A6F 9
-0AE6 0
-0AE7 1
-0AE8 2
-0AE9 3
-0AEA 4
-0AEB 5
-0AEC 6
-0AED 7
-0AEE 8
-0AEF 9
-0B66 0
-0B67 1
-0B68 2
-0B69 3
-0B6A 4
-0B6B 5
-0B6C 6
-0B6D 7
-0B6E 8
-0B6F 9
-0BE6 0
-0BE7 1
-0BE8 2
-0BE9 3
-0BEA 4
-0BEB 5
-0BEC 6
-0BED 7
-0BEE 8
-0BEF 9
-0C66 0
-0C67 1
-0C68 2
-0C69 3
-0C6A 4
-0C6B 5
-0C6C 6
-0C6D 7
-0C6E 8
-0C6F 9
-0CE6 0
-0CE7 1
-0CE8 2
-0CE9 3
-0CEA 4
-0CEB 5
-0CEC 6
-0CED 7
-0CEE 8
-0CEF 9
-0D66 0
-0D67 1
-0D68 2
-0D69 3
-0D6A 4
-0D6B 5
-0D6C 6
-0D6D 7
-0D6E 8
-0D6F 9
-0DE6 0
-0DE7 1
-0DE8 2
-0DE9 3
-0DEA 4
-0DEB 5
-0DEC 6
-0DED 7
-0DEE 8
-0DEF 9
-0E50 0
-0E51 1
-0E52 2
-0E53 3
-0E54 4
-0E55 5
-0E56 6
-0E57 7
-0E58 8
-0E59 9
-0ED0 0
-0ED1 1
-0ED2 2
-0ED3 3
-0ED4 4
-0ED5 5
-0ED6 6
-0ED7 7
-0ED8 8
-0ED9 9
-0F20 0
-0F21 1
-0F22 2
-0F23 3
-0F24 4
-0F25 5
-0F26 6
-0F27 7
-0F28 8
-0F29 9
-1040 0
-1041 1
-1042 2
-1043 3
-1044 4
-1045 5
-1046 6
-1047 7
-1048 8
-1049 9
-1090 0
-1091 1
-1092 2
-1093 3
-1094 4
-1095 5
-1096 6
-1097 7
-1098 8
-1099 9
-17E0 0
-17E1 1
-17E2 2
-17E3 3
-17E4 4
-17E5 5
-17E6 6
-17E7 7
-17E8 8
-17E9 9
-1810 0
-1811 1
-1812 2
-1813 3
-1814 4
-1815 5
-1816 6
-1817 7
-1818 8
-1819 9
-1946 0
-1947 1
-1948 2
-1949 3
-194A 4
-194B 5
-194C 6
-194D 7
-194E 8
-194F 9
-19D0 0
-19D1 1
-19D2 2
-19D3 3
-19D4 4
-19D5 5
-19D6 6
-19D7 7
-19D8 8
-19D9 9
-1A80 0
-1A81 1
-1A82 2
-1A83 3
-1A84 4
-1A85 5
-1A86 6
-1A87 7
-1A88 8
-1A89 9
-1A90 0
-1A91 1
-1A92 2
-1A93 3
-1A94 4
-1A95 5
-1A96 6
-1A97 7
-1A98 8
-1A99 9
-1B50 0
-1B51 1
-1B52 2
-1B53 3
-1B54 4
-1B55 5
-1B56 6
-1B57 7
-1B58 8
-1B59 9
-1BB0 0
-1BB1 1
-1BB2 2
-1BB3 3
-1BB4 4
-1BB5 5
-1BB6 6
-1BB7 7
-1BB8 8
-1BB9 9
-1C40 0
-1C41 1
-1C42 2
-1C43 3
-1C44 4
-1C45 5
-1C46 6
-1C47 7
-1C48 8
-1C49 9
-1C50 0
-1C51 1
-1C52 2
-1C53 3
-1C54 4
-1C55 5
-1C56 6
-1C57 7
-1C58 8
-1C59 9
-A620 0
-A621 1
-A622 2
-A623 3
-A624 4
-A625 5
-A626 6
-A627 7
-A628 8
-A629 9
-A8D0 0
-A8D1 1
-A8D2 2
-A8D3 3
-A8D4 4
-A8D5 5
-A8D6 6
-A8D7 7
-A8D8 8
-A8D9 9
-A900 0
-A901 1
-A902 2
-A903 3
-A904 4
-A905 5
-A906 6
-A907 7
-A908 8
-A909 9
-A9D0 0
-A9D1 1
-A9D2 2
-A9D3 3
-A9D4 4
-A9D5 5
-A9D6 6
-A9D7 7
-A9D8 8
-A9D9 9
-A9F0 0
-A9F1 1
-A9F2 2
-A9F3 3
-A9F4 4
-A9F5 5
-A9F6 6
-A9F7 7
-A9F8 8
-A9F9 9
-AA50 0
-AA51 1
-AA52 2
-AA53 3
-AA54 4
-AA55 5
-AA56 6
-AA57 7
-AA58 8
-AA59 9
-ABF0 0
-ABF1 1
-ABF2 2
-ABF3 3
-ABF4 4
-ABF5 5
-ABF6 6
-ABF7 7
-ABF8 8
-ABF9 9
-FF10 0
-FF11 1
-FF12 2
-FF13 3
-FF14 4
-FF15 5
-FF16 6
-FF17 7
-FF18 8
-FF19 9
-104A0 0
-104A1 1
-104A2 2
-104A3 3
-104A4 4
-104A5 5
-104A6 6
-104A7 7
-104A8 8
-104A9 9
-10D30 0
-10D31 1
-10D32 2
-10D33 3
-10D34 4
-10D35 5
-10D36 6
-10D37 7
-10D38 8
-10D39 9
-11066 0
-11067 1
-11068 2
-11069 3
-1106A 4
-1106B 5
-1106C 6
-1106D 7
-1106E 8
-1106F 9
-110F0 0
-110F1 1
-110F2 2
-110F3 3
-110F4 4
-110F5 5
-110F6 6
-110F7 7
-110F8 8
-110F9 9
-11136 0
-11137 1
-11138 2
-11139 3
-1113A 4
-1113B 5
-1113C 6
-1113D 7
-1113E 8
-1113F 9
-111D0 0
-111D1 1
-111D2 2
-111D3 3
-111D4 4
-111D5 5
-111D6 6
-111D7 7
-111D8 8
-111D9 9
-112F0 0
-112F1 1
-112F2 2
-112F3 3
-112F4 4
-112F5 5
-112F6 6
-112F7 7
-112F8 8
-112F9 9
-11450 0
-11451 1
-11452 2
-11453 3
-11454 4
-11455 5
-11456 6
-11457 7
-11458 8
-11459 9
-114D0 0
-114D1 1
-114D2 2
-114D3 3
-114D4 4
-114D5 5
-114D6 6
-114D7 7
-114D8 8
-114D9 9
-11650 0
-11651 1
-11652 2
-11653 3
-11654 4
-11655 5
-11656 6
-11657 7
-11658 8
-11659 9
-116C0 0
-116C1 1
-116C2 2
-116C3 3
-116C4 4
-116C5 5
-116C6 6
-116C7 7
-116C8 8
-116C9 9
-11730 0
-11731 1
-11732 2
-11733 3
-11734 4
-11735 5
-11736 6
-11737 7
-11738 8
-11739 9
-118E0 0
-118E1 1
-118E2 2
-118E3 3
-118E4 4
-118E5 5
-118E6 6
-118E7 7
-118E8 8
-118E9 9
-11950 0
-11951 1
-11952 2
-11953 3
-11954 4
-11955 5
-11956 6
-11957 7
-11958 8
-11959 9
-11C50 0
-11C51 1
-11C52 2
-11C53 3
-11C54 4
-11C55 5
-11C56 6
-11C57 7
-11C58 8
-11C59 9
-11D50 0
-11D51 1
-11D52 2
-11D53 3
-11D54 4
-11D55 5
-11D56 6
-11D57 7
-11D58 8
-11D59 9
-11DA0 0
-11DA1 1
-11DA2 2
-11DA3 3
-11DA4 4
-11DA5 5
-11DA6 6
-11DA7 7
-11DA8 8
-11DA9 9
-16A60 0
-16A61 1
-16A62 2
-16A63 3
-16A64 4
-16A65 5
-16A66 6
-16A67 7
-16A68 8
-16A69 9
-16B50 0
-16B51 1
-16B52 2
-16B53 3
-16B54 4
-16B55 5
-16B56 6
-16B57 7
-16B58 8
-16B59 9
-1D7CE 0
-1D7CF 1
-1D7D0 2
-1D7D1 3
-1D7D2 4
-1D7D3 5
-1D7D4 6
-1D7D5 7
-1D7D6 8
-1D7D7 9
-1D7D8 0
-1D7D9 1
-1D7DA 2
-1D7DB 3
-1D7DC 4
-1D7DD 5
-1D7DE 6
-1D7DF 7
-1D7E0 8
-1D7E1 9
-1D7E2 0
-1D7E3 1
-1D7E4 2
-1D7E5 3
-1D7E6 4
-1D7E7 5
-1D7E8 6
-1D7E9 7
-1D7EA 8
-1D7EB 9
-1D7EC 0
-1D7ED 1
-1D7EE 2
-1D7EF 3
-1D7F0 4
-1D7F1 5
-1D7F2 6
-1D7F3 7
-1D7F4 8
-1D7F5 9
-1D7F6 0
-1D7F7 1
-1D7F8 2
-1D7F9 3
-1D7FA 4
-1D7FB 5
-1D7FC 6
-1D7FD 7
-1D7FE 8
-1D7FF 9
-1E140 0
-1E141 1
-1E142 2
-1E143 3
-1E144 4
-1E145 5
-1E146 6
-1E147 7
-1E148 8
-1E149 9
-1E2F0 0
-1E2F1 1
-1E2F2 2
-1E2F3 3
-1E2F4 4
-1E2F5 5
-1E2F6 6
-1E2F7 7
-1E2F8 8
-1E2F9 9
-1E950 0
-1E951 1
-1E952 2
-1E953 3
-1E954 4
-1E955 5
-1E956 6
-1E957 7
-1E958 8
-1E959 9
-1FBF0 0
-1FBF1 1
-1FBF2 2
-1FBF3 3
-1FBF4 4
-1FBF5 5
-1FBF6 6
-1FBF7 7
-1FBF8 8
-1FBF9 9
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Ea.pl b/Master/tlpkg/tlperl/lib/unicore/To/Ea.pl
index a8873a24208..d04bec3ff03 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Ea.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Ea.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -14,7 +14,7 @@
# the main body of the table, and what all code points missing from this file
# map to.
$Unicode::UCD::SwashInfo{'ToEa'}{'format'} = 's'; # string
-$Unicode::UCD::SwashInfo{'ToEa'}{'missing'} = 'Neutral';
+$Unicode::UCD::SwashInfo{'ToEa'}{'missing'} = 'N';
return <<'END';
20 7E Na
@@ -266,8 +266,13 @@ FFFD A
17000 187F7 W
18800 18CD5 W
18D00 18D08 W
-1B000 1B11E W
+1AFF0 1AFF3 W
+1AFF5 1AFFB W
+1AFFD 1AFFE W
+1B000 1B122 W
+1B132 W
1B150 1B152 W
+1B155 W
1B164 1B167 W
1B170 1B2FB W
1F004 W
@@ -307,21 +312,21 @@ FFFD A
1F6CC W
1F6D0 1F6D2 W
1F6D5 1F6D7 W
+1F6DC 1F6DF W
1F6EB 1F6EC W
1F6F4 1F6FC W
1F7E0 1F7EB W
+1F7F0 W
1F90C 1F93A W
1F93C 1F945 W
-1F947 1F978 W
-1F97A 1F9CB W
-1F9CD 1F9FF W
-1FA70 1FA74 W
-1FA78 1FA7A W
-1FA80 1FA86 W
-1FA90 1FAA8 W
-1FAB0 1FAB6 W
-1FAC0 1FAC2 W
-1FAD0 1FAD6 W
+1F947 1F9FF W
+1FA70 1FA7C W
+1FA80 1FA88 W
+1FA90 1FABD W
+1FABF 1FAC5 W
+1FACE 1FADB W
+1FAE0 1FAE8 W
+1FAF0 1FAF8 W
20000 2FFFD W
30000 3FFFD W
E0100 E01EF A
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/EqUIdeo.pl b/Master/tlpkg/tlperl/lib/unicore/To/EqUIdeo.pl
index 89a0d734545..61889f8e99c 100755
--- a/Master/tlpkg/tlperl/lib/unicore/To/EqUIdeo.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/EqUIdeo.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -14,7 +14,7 @@
# the main body of the table, and what all code points missing from this file
# map to.
$Unicode::UCD::SwashInfo{'ToEqUIdeo'}{'format'} = 'x'; # non-negative hex whole number; a code point
-$Unicode::UCD::SwashInfo{'ToEqUIdeo'}{'missing'} = ''; # code point maps to the null string
+$Unicode::UCD::SwashInfo{'ToEqUIdeo'}{'missing'} = ''; # code point maps to the empty string
return <<'END';
2E81 5382
@@ -36,7 +36,7 @@ return <<'END';
2E92 5DF3
2E93 5E7A
2E94 5F51
-2E95 5F50
+2E95 2B739
2E96 5FC4
2E97 5FC3
2E98 624C
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Fold.pl b/Master/tlpkg/tlperl/lib/unicore/To/Fold.pl
deleted file mode 100644
index 50846de8d96..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/To/Fold.pl
+++ /dev/null
@@ -1,1553 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
-
-# !!!!!!! IT IS DEPRECATED TO USE THIS FILE !!!!!!!
-
-# This file is for internal use by core Perl only. It is retained for
-# backwards compatibility with applications that may have come to rely on it,
-# but its format and even its name or existence are subject to change without
-# notice in a future Perl version. Don't use it directly. Instead, its
-# contents are now retrievable through a stable API in the Unicode::UCD
-# module: Unicode::UCD::prop_invmap('Case_Folding') (Values for individual
-# code points can be retrieved via Unicode::UCD::charprop());
-
-
-
-# The name this table is to be known by, with the format of the mappings in
-# the main body of the table, and what all code points missing from this file
-# map to.
-$Unicode::UCD::SwashInfo{'ToFold'}{'format'} = 'x'; # non-negative hex whole number; a code point
-$Unicode::UCD::SwashInfo{'ToFold'}{'specials_name'} = 'Unicode::UCD::ToSpecFold'; # Name of hash of special mappings
-$Unicode::UCD::SwashInfo{'ToFold'}{'missing'} = '<code point>'; # code point maps to itself
-
-# Some code points require special handling because their mappings are each to
-# multiple code points. These do not appear in the main body, but are defined
-# in the hash below.
-
-# Each key is the string of N bytes that together make up the UTF-8 encoding
-# for the code point. (i.e. the same as looking at the code point's UTF-8
-# under "use bytes"). Each value is the UTF-8 of the translation, for speed.
-%Unicode::UCD::ToSpecFold = (
-"\xC3\x9F" => "\x{0073}\x{0073}", # U+00DF => 0073 0073
-"\xC4\xB0" => "\x{0069}\x{0307}", # U+0130 => 0069 0307
-"\xC5\x89" => "\x{02BC}\x{006E}", # U+0149 => 02BC 006E
-"\xC7\xB0" => "\x{006A}\x{030C}", # U+01F0 => 006A 030C
-"\xCE\x90" => "\x{03B9}\x{0308}\x{0301}", # U+0390 => 03B9 0308 0301
-"\xCE\xB0" => "\x{03C5}\x{0308}\x{0301}", # U+03B0 => 03C5 0308 0301
-"\xD6\x87" => "\x{0565}\x{0582}", # U+0587 => 0565 0582
-"\xE1\xBA\x96" => "\x{0068}\x{0331}", # U+1E96 => 0068 0331
-"\xE1\xBA\x97" => "\x{0074}\x{0308}", # U+1E97 => 0074 0308
-"\xE1\xBA\x98" => "\x{0077}\x{030A}", # U+1E98 => 0077 030A
-"\xE1\xBA\x99" => "\x{0079}\x{030A}", # U+1E99 => 0079 030A
-"\xE1\xBA\x9A" => "\x{0061}\x{02BE}", # U+1E9A => 0061 02BE
-"\xE1\xBA\x9E" => "\x{0073}\x{0073}", # U+1E9E => 0073 0073
-"\xE1\xBD\x90" => "\x{03C5}\x{0313}", # U+1F50 => 03C5 0313
-"\xE1\xBD\x92" => "\x{03C5}\x{0313}\x{0300}", # U+1F52 => 03C5 0313 0300
-"\xE1\xBD\x94" => "\x{03C5}\x{0313}\x{0301}", # U+1F54 => 03C5 0313 0301
-"\xE1\xBD\x96" => "\x{03C5}\x{0313}\x{0342}", # U+1F56 => 03C5 0313 0342
-"\xE1\xBE\x80" => "\x{1F00}\x{03B9}", # U+1F80 => 1F00 03B9
-"\xE1\xBE\x81" => "\x{1F01}\x{03B9}", # U+1F81 => 1F01 03B9
-"\xE1\xBE\x82" => "\x{1F02}\x{03B9}", # U+1F82 => 1F02 03B9
-"\xE1\xBE\x83" => "\x{1F03}\x{03B9}", # U+1F83 => 1F03 03B9
-"\xE1\xBE\x84" => "\x{1F04}\x{03B9}", # U+1F84 => 1F04 03B9
-"\xE1\xBE\x85" => "\x{1F05}\x{03B9}", # U+1F85 => 1F05 03B9
-"\xE1\xBE\x86" => "\x{1F06}\x{03B9}", # U+1F86 => 1F06 03B9
-"\xE1\xBE\x87" => "\x{1F07}\x{03B9}", # U+1F87 => 1F07 03B9
-"\xE1\xBE\x88" => "\x{1F00}\x{03B9}", # U+1F88 => 1F00 03B9
-"\xE1\xBE\x89" => "\x{1F01}\x{03B9}", # U+1F89 => 1F01 03B9
-"\xE1\xBE\x8A" => "\x{1F02}\x{03B9}", # U+1F8A => 1F02 03B9
-"\xE1\xBE\x8B" => "\x{1F03}\x{03B9}", # U+1F8B => 1F03 03B9
-"\xE1\xBE\x8C" => "\x{1F04}\x{03B9}", # U+1F8C => 1F04 03B9
-"\xE1\xBE\x8D" => "\x{1F05}\x{03B9}", # U+1F8D => 1F05 03B9
-"\xE1\xBE\x8E" => "\x{1F06}\x{03B9}", # U+1F8E => 1F06 03B9
-"\xE1\xBE\x8F" => "\x{1F07}\x{03B9}", # U+1F8F => 1F07 03B9
-"\xE1\xBE\x90" => "\x{1F20}\x{03B9}", # U+1F90 => 1F20 03B9
-"\xE1\xBE\x91" => "\x{1F21}\x{03B9}", # U+1F91 => 1F21 03B9
-"\xE1\xBE\x92" => "\x{1F22}\x{03B9}", # U+1F92 => 1F22 03B9
-"\xE1\xBE\x93" => "\x{1F23}\x{03B9}", # U+1F93 => 1F23 03B9
-"\xE1\xBE\x94" => "\x{1F24}\x{03B9}", # U+1F94 => 1F24 03B9
-"\xE1\xBE\x95" => "\x{1F25}\x{03B9}", # U+1F95 => 1F25 03B9
-"\xE1\xBE\x96" => "\x{1F26}\x{03B9}", # U+1F96 => 1F26 03B9
-"\xE1\xBE\x97" => "\x{1F27}\x{03B9}", # U+1F97 => 1F27 03B9
-"\xE1\xBE\x98" => "\x{1F20}\x{03B9}", # U+1F98 => 1F20 03B9
-"\xE1\xBE\x99" => "\x{1F21}\x{03B9}", # U+1F99 => 1F21 03B9
-"\xE1\xBE\x9A" => "\x{1F22}\x{03B9}", # U+1F9A => 1F22 03B9
-"\xE1\xBE\x9B" => "\x{1F23}\x{03B9}", # U+1F9B => 1F23 03B9
-"\xE1\xBE\x9C" => "\x{1F24}\x{03B9}", # U+1F9C => 1F24 03B9
-"\xE1\xBE\x9D" => "\x{1F25}\x{03B9}", # U+1F9D => 1F25 03B9
-"\xE1\xBE\x9E" => "\x{1F26}\x{03B9}", # U+1F9E => 1F26 03B9
-"\xE1\xBE\x9F" => "\x{1F27}\x{03B9}", # U+1F9F => 1F27 03B9
-"\xE1\xBE\xA0" => "\x{1F60}\x{03B9}", # U+1FA0 => 1F60 03B9
-"\xE1\xBE\xA1" => "\x{1F61}\x{03B9}", # U+1FA1 => 1F61 03B9
-"\xE1\xBE\xA2" => "\x{1F62}\x{03B9}", # U+1FA2 => 1F62 03B9
-"\xE1\xBE\xA3" => "\x{1F63}\x{03B9}", # U+1FA3 => 1F63 03B9
-"\xE1\xBE\xA4" => "\x{1F64}\x{03B9}", # U+1FA4 => 1F64 03B9
-"\xE1\xBE\xA5" => "\x{1F65}\x{03B9}", # U+1FA5 => 1F65 03B9
-"\xE1\xBE\xA6" => "\x{1F66}\x{03B9}", # U+1FA6 => 1F66 03B9
-"\xE1\xBE\xA7" => "\x{1F67}\x{03B9}", # U+1FA7 => 1F67 03B9
-"\xE1\xBE\xA8" => "\x{1F60}\x{03B9}", # U+1FA8 => 1F60 03B9
-"\xE1\xBE\xA9" => "\x{1F61}\x{03B9}", # U+1FA9 => 1F61 03B9
-"\xE1\xBE\xAA" => "\x{1F62}\x{03B9}", # U+1FAA => 1F62 03B9
-"\xE1\xBE\xAB" => "\x{1F63}\x{03B9}", # U+1FAB => 1F63 03B9
-"\xE1\xBE\xAC" => "\x{1F64}\x{03B9}", # U+1FAC => 1F64 03B9
-"\xE1\xBE\xAD" => "\x{1F65}\x{03B9}", # U+1FAD => 1F65 03B9
-"\xE1\xBE\xAE" => "\x{1F66}\x{03B9}", # U+1FAE => 1F66 03B9
-"\xE1\xBE\xAF" => "\x{1F67}\x{03B9}", # U+1FAF => 1F67 03B9
-"\xE1\xBE\xB2" => "\x{1F70}\x{03B9}", # U+1FB2 => 1F70 03B9
-"\xE1\xBE\xB3" => "\x{03B1}\x{03B9}", # U+1FB3 => 03B1 03B9
-"\xE1\xBE\xB4" => "\x{03AC}\x{03B9}", # U+1FB4 => 03AC 03B9
-"\xE1\xBE\xB6" => "\x{03B1}\x{0342}", # U+1FB6 => 03B1 0342
-"\xE1\xBE\xB7" => "\x{03B1}\x{0342}\x{03B9}", # U+1FB7 => 03B1 0342 03B9
-"\xE1\xBE\xBC" => "\x{03B1}\x{03B9}", # U+1FBC => 03B1 03B9
-"\xE1\xBF\x82" => "\x{1F74}\x{03B9}", # U+1FC2 => 1F74 03B9
-"\xE1\xBF\x83" => "\x{03B7}\x{03B9}", # U+1FC3 => 03B7 03B9
-"\xE1\xBF\x84" => "\x{03AE}\x{03B9}", # U+1FC4 => 03AE 03B9
-"\xE1\xBF\x86" => "\x{03B7}\x{0342}", # U+1FC6 => 03B7 0342
-"\xE1\xBF\x87" => "\x{03B7}\x{0342}\x{03B9}", # U+1FC7 => 03B7 0342 03B9
-"\xE1\xBF\x8C" => "\x{03B7}\x{03B9}", # U+1FCC => 03B7 03B9
-"\xE1\xBF\x92" => "\x{03B9}\x{0308}\x{0300}", # U+1FD2 => 03B9 0308 0300
-"\xE1\xBF\x93" => "\x{03B9}\x{0308}\x{0301}", # U+1FD3 => 03B9 0308 0301
-"\xE1\xBF\x96" => "\x{03B9}\x{0342}", # U+1FD6 => 03B9 0342
-"\xE1\xBF\x97" => "\x{03B9}\x{0308}\x{0342}", # U+1FD7 => 03B9 0308 0342
-"\xE1\xBF\xA2" => "\x{03C5}\x{0308}\x{0300}", # U+1FE2 => 03C5 0308 0300
-"\xE1\xBF\xA3" => "\x{03C5}\x{0308}\x{0301}", # U+1FE3 => 03C5 0308 0301
-"\xE1\xBF\xA4" => "\x{03C1}\x{0313}", # U+1FE4 => 03C1 0313
-"\xE1\xBF\xA6" => "\x{03C5}\x{0342}", # U+1FE6 => 03C5 0342
-"\xE1\xBF\xA7" => "\x{03C5}\x{0308}\x{0342}", # U+1FE7 => 03C5 0308 0342
-"\xE1\xBF\xB2" => "\x{1F7C}\x{03B9}", # U+1FF2 => 1F7C 03B9
-"\xE1\xBF\xB3" => "\x{03C9}\x{03B9}", # U+1FF3 => 03C9 03B9
-"\xE1\xBF\xB4" => "\x{03CE}\x{03B9}", # U+1FF4 => 03CE 03B9
-"\xE1\xBF\xB6" => "\x{03C9}\x{0342}", # U+1FF6 => 03C9 0342
-"\xE1\xBF\xB7" => "\x{03C9}\x{0342}\x{03B9}", # U+1FF7 => 03C9 0342 03B9
-"\xE1\xBF\xBC" => "\x{03C9}\x{03B9}", # U+1FFC => 03C9 03B9
-"\xEF\xAC\x80" => "\x{0066}\x{0066}", # U+FB00 => 0066 0066
-"\xEF\xAC\x81" => "\x{0066}\x{0069}", # U+FB01 => 0066 0069
-"\xEF\xAC\x82" => "\x{0066}\x{006C}", # U+FB02 => 0066 006C
-"\xEF\xAC\x83" => "\x{0066}\x{0066}\x{0069}", # U+FB03 => 0066 0066 0069
-"\xEF\xAC\x84" => "\x{0066}\x{0066}\x{006C}", # U+FB04 => 0066 0066 006C
-"\xEF\xAC\x85" => "\x{0073}\x{0074}", # U+FB05 => 0073 0074
-"\xEF\xAC\x86" => "\x{0073}\x{0074}", # U+FB06 => 0073 0074
-"\xEF\xAC\x93" => "\x{0574}\x{0576}", # U+FB13 => 0574 0576
-"\xEF\xAC\x94" => "\x{0574}\x{0565}", # U+FB14 => 0574 0565
-"\xEF\xAC\x95" => "\x{0574}\x{056B}", # U+FB15 => 0574 056B
-"\xEF\xAC\x96" => "\x{057E}\x{0576}", # U+FB16 => 057E 0576
-"\xEF\xAC\x97" => "\x{0574}\x{056D}", # U+FB17 => 0574 056D
-);
-
-return <<'END';
-0041 0061
-0042 0062
-0043 0063
-0044 0064
-0045 0065
-0046 0066
-0047 0067
-0048 0068
-0049 0069
-004A 006A
-004B 006B
-004C 006C
-004D 006D
-004E 006E
-004F 006F
-0050 0070
-0051 0071
-0052 0072
-0053 0073
-0054 0074
-0055 0075
-0056 0076
-0057 0077
-0058 0078
-0059 0079
-005A 007A
-00B5 03BC
-00C0 00E0
-00C1 00E1
-00C2 00E2
-00C3 00E3
-00C4 00E4
-00C5 00E5
-00C6 00E6
-00C7 00E7
-00C8 00E8
-00C9 00E9
-00CA 00EA
-00CB 00EB
-00CC 00EC
-00CD 00ED
-00CE 00EE
-00CF 00EF
-00D0 00F0
-00D1 00F1
-00D2 00F2
-00D3 00F3
-00D4 00F4
-00D5 00F5
-00D6 00F6
-00D8 00F8
-00D9 00F9
-00DA 00FA
-00DB 00FB
-00DC 00FC
-00DD 00FD
-00DE 00FE
-0100 0101
-0102 0103
-0104 0105
-0106 0107
-0108 0109
-010A 010B
-010C 010D
-010E 010F
-0110 0111
-0112 0113
-0114 0115
-0116 0117
-0118 0119
-011A 011B
-011C 011D
-011E 011F
-0120 0121
-0122 0123
-0124 0125
-0126 0127
-0128 0129
-012A 012B
-012C 012D
-012E 012F
-0132 0133
-0134 0135
-0136 0137
-0139 013A
-013B 013C
-013D 013E
-013F 0140
-0141 0142
-0143 0144
-0145 0146
-0147 0148
-014A 014B
-014C 014D
-014E 014F
-0150 0151
-0152 0153
-0154 0155
-0156 0157
-0158 0159
-015A 015B
-015C 015D
-015E 015F
-0160 0161
-0162 0163
-0164 0165
-0166 0167
-0168 0169
-016A 016B
-016C 016D
-016E 016F
-0170 0171
-0172 0173
-0174 0175
-0176 0177
-0178 00FF
-0179 017A
-017B 017C
-017D 017E
-017F 0073
-0181 0253
-0182 0183
-0184 0185
-0186 0254
-0187 0188
-0189 0256
-018A 0257
-018B 018C
-018E 01DD
-018F 0259
-0190 025B
-0191 0192
-0193 0260
-0194 0263
-0196 0269
-0197 0268
-0198 0199
-019C 026F
-019D 0272
-019F 0275
-01A0 01A1
-01A2 01A3
-01A4 01A5
-01A6 0280
-01A7 01A8
-01A9 0283
-01AC 01AD
-01AE 0288
-01AF 01B0
-01B1 028A
-01B2 028B
-01B3 01B4
-01B5 01B6
-01B7 0292
-01B8 01B9
-01BC 01BD
-01C4 01C6
-01C5 01C6
-01C7 01C9
-01C8 01C9
-01CA 01CC
-01CB 01CC
-01CD 01CE
-01CF 01D0
-01D1 01D2
-01D3 01D4
-01D5 01D6
-01D7 01D8
-01D9 01DA
-01DB 01DC
-01DE 01DF
-01E0 01E1
-01E2 01E3
-01E4 01E5
-01E6 01E7
-01E8 01E9
-01EA 01EB
-01EC 01ED
-01EE 01EF
-01F1 01F3
-01F2 01F3
-01F4 01F5
-01F6 0195
-01F7 01BF
-01F8 01F9
-01FA 01FB
-01FC 01FD
-01FE 01FF
-0200 0201
-0202 0203
-0204 0205
-0206 0207
-0208 0209
-020A 020B
-020C 020D
-020E 020F
-0210 0211
-0212 0213
-0214 0215
-0216 0217
-0218 0219
-021A 021B
-021C 021D
-021E 021F
-0220 019E
-0222 0223
-0224 0225
-0226 0227
-0228 0229
-022A 022B
-022C 022D
-022E 022F
-0230 0231
-0232 0233
-023A 2C65
-023B 023C
-023D 019A
-023E 2C66
-0241 0242
-0243 0180
-0244 0289
-0245 028C
-0246 0247
-0248 0249
-024A 024B
-024C 024D
-024E 024F
-0345 03B9
-0370 0371
-0372 0373
-0376 0377
-037F 03F3
-0386 03AC
-0388 03AD
-0389 03AE
-038A 03AF
-038C 03CC
-038E 03CD
-038F 03CE
-0391 03B1
-0392 03B2
-0393 03B3
-0394 03B4
-0395 03B5
-0396 03B6
-0397 03B7
-0398 03B8
-0399 03B9
-039A 03BA
-039B 03BB
-039C 03BC
-039D 03BD
-039E 03BE
-039F 03BF
-03A0 03C0
-03A1 03C1
-03A3 03C3
-03A4 03C4
-03A5 03C5
-03A6 03C6
-03A7 03C7
-03A8 03C8
-03A9 03C9
-03AA 03CA
-03AB 03CB
-03C2 03C3
-03CF 03D7
-03D0 03B2
-03D1 03B8
-03D5 03C6
-03D6 03C0
-03D8 03D9
-03DA 03DB
-03DC 03DD
-03DE 03DF
-03E0 03E1
-03E2 03E3
-03E4 03E5
-03E6 03E7
-03E8 03E9
-03EA 03EB
-03EC 03ED
-03EE 03EF
-03F0 03BA
-03F1 03C1
-03F4 03B8
-03F5 03B5
-03F7 03F8
-03F9 03F2
-03FA 03FB
-03FD 037B
-03FE 037C
-03FF 037D
-0400 0450
-0401 0451
-0402 0452
-0403 0453
-0404 0454
-0405 0455
-0406 0456
-0407 0457
-0408 0458
-0409 0459
-040A 045A
-040B 045B
-040C 045C
-040D 045D
-040E 045E
-040F 045F
-0410 0430
-0411 0431
-0412 0432
-0413 0433
-0414 0434
-0415 0435
-0416 0436
-0417 0437
-0418 0438
-0419 0439
-041A 043A
-041B 043B
-041C 043C
-041D 043D
-041E 043E
-041F 043F
-0420 0440
-0421 0441
-0422 0442
-0423 0443
-0424 0444
-0425 0445
-0426 0446
-0427 0447
-0428 0448
-0429 0449
-042A 044A
-042B 044B
-042C 044C
-042D 044D
-042E 044E
-042F 044F
-0460 0461
-0462 0463
-0464 0465
-0466 0467
-0468 0469
-046A 046B
-046C 046D
-046E 046F
-0470 0471
-0472 0473
-0474 0475
-0476 0477
-0478 0479
-047A 047B
-047C 047D
-047E 047F
-0480 0481
-048A 048B
-048C 048D
-048E 048F
-0490 0491
-0492 0493
-0494 0495
-0496 0497
-0498 0499
-049A 049B
-049C 049D
-049E 049F
-04A0 04A1
-04A2 04A3
-04A4 04A5
-04A6 04A7
-04A8 04A9
-04AA 04AB
-04AC 04AD
-04AE 04AF
-04B0 04B1
-04B2 04B3
-04B4 04B5
-04B6 04B7
-04B8 04B9
-04BA 04BB
-04BC 04BD
-04BE 04BF
-04C0 04CF
-04C1 04C2
-04C3 04C4
-04C5 04C6
-04C7 04C8
-04C9 04CA
-04CB 04CC
-04CD 04CE
-04D0 04D1
-04D2 04D3
-04D4 04D5
-04D6 04D7
-04D8 04D9
-04DA 04DB
-04DC 04DD
-04DE 04DF
-04E0 04E1
-04E2 04E3
-04E4 04E5
-04E6 04E7
-04E8 04E9
-04EA 04EB
-04EC 04ED
-04EE 04EF
-04F0 04F1
-04F2 04F3
-04F4 04F5
-04F6 04F7
-04F8 04F9
-04FA 04FB
-04FC 04FD
-04FE 04FF
-0500 0501
-0502 0503
-0504 0505
-0506 0507
-0508 0509
-050A 050B
-050C 050D
-050E 050F
-0510 0511
-0512 0513
-0514 0515
-0516 0517
-0518 0519
-051A 051B
-051C 051D
-051E 051F
-0520 0521
-0522 0523
-0524 0525
-0526 0527
-0528 0529
-052A 052B
-052C 052D
-052E 052F
-0531 0561
-0532 0562
-0533 0563
-0534 0564
-0535 0565
-0536 0566
-0537 0567
-0538 0568
-0539 0569
-053A 056A
-053B 056B
-053C 056C
-053D 056D
-053E 056E
-053F 056F
-0540 0570
-0541 0571
-0542 0572
-0543 0573
-0544 0574
-0545 0575
-0546 0576
-0547 0577
-0548 0578
-0549 0579
-054A 057A
-054B 057B
-054C 057C
-054D 057D
-054E 057E
-054F 057F
-0550 0580
-0551 0581
-0552 0582
-0553 0583
-0554 0584
-0555 0585
-0556 0586
-10A0 2D00
-10A1 2D01
-10A2 2D02
-10A3 2D03
-10A4 2D04
-10A5 2D05
-10A6 2D06
-10A7 2D07
-10A8 2D08
-10A9 2D09
-10AA 2D0A
-10AB 2D0B
-10AC 2D0C
-10AD 2D0D
-10AE 2D0E
-10AF 2D0F
-10B0 2D10
-10B1 2D11
-10B2 2D12
-10B3 2D13
-10B4 2D14
-10B5 2D15
-10B6 2D16
-10B7 2D17
-10B8 2D18
-10B9 2D19
-10BA 2D1A
-10BB 2D1B
-10BC 2D1C
-10BD 2D1D
-10BE 2D1E
-10BF 2D1F
-10C0 2D20
-10C1 2D21
-10C2 2D22
-10C3 2D23
-10C4 2D24
-10C5 2D25
-10C7 2D27
-10CD 2D2D
-13F8 13F0
-13F9 13F1
-13FA 13F2
-13FB 13F3
-13FC 13F4
-13FD 13F5
-1C80 0432
-1C81 0434
-1C82 043E
-1C83 0441
-1C84 0442
-1C85 0442
-1C86 044A
-1C87 0463
-1C88 A64B
-1C90 10D0
-1C91 10D1
-1C92 10D2
-1C93 10D3
-1C94 10D4
-1C95 10D5
-1C96 10D6
-1C97 10D7
-1C98 10D8
-1C99 10D9
-1C9A 10DA
-1C9B 10DB
-1C9C 10DC
-1C9D 10DD
-1C9E 10DE
-1C9F 10DF
-1CA0 10E0
-1CA1 10E1
-1CA2 10E2
-1CA3 10E3
-1CA4 10E4
-1CA5 10E5
-1CA6 10E6
-1CA7 10E7
-1CA8 10E8
-1CA9 10E9
-1CAA 10EA
-1CAB 10EB
-1CAC 10EC
-1CAD 10ED
-1CAE 10EE
-1CAF 10EF
-1CB0 10F0
-1CB1 10F1
-1CB2 10F2
-1CB3 10F3
-1CB4 10F4
-1CB5 10F5
-1CB6 10F6
-1CB7 10F7
-1CB8 10F8
-1CB9 10F9
-1CBA 10FA
-1CBD 10FD
-1CBE 10FE
-1CBF 10FF
-1E00 1E01
-1E02 1E03
-1E04 1E05
-1E06 1E07
-1E08 1E09
-1E0A 1E0B
-1E0C 1E0D
-1E0E 1E0F
-1E10 1E11
-1E12 1E13
-1E14 1E15
-1E16 1E17
-1E18 1E19
-1E1A 1E1B
-1E1C 1E1D
-1E1E 1E1F
-1E20 1E21
-1E22 1E23
-1E24 1E25
-1E26 1E27
-1E28 1E29
-1E2A 1E2B
-1E2C 1E2D
-1E2E 1E2F
-1E30 1E31
-1E32 1E33
-1E34 1E35
-1E36 1E37
-1E38 1E39
-1E3A 1E3B
-1E3C 1E3D
-1E3E 1E3F
-1E40 1E41
-1E42 1E43
-1E44 1E45
-1E46 1E47
-1E48 1E49
-1E4A 1E4B
-1E4C 1E4D
-1E4E 1E4F
-1E50 1E51
-1E52 1E53
-1E54 1E55
-1E56 1E57
-1E58 1E59
-1E5A 1E5B
-1E5C 1E5D
-1E5E 1E5F
-1E60 1E61
-1E62 1E63
-1E64 1E65
-1E66 1E67
-1E68 1E69
-1E6A 1E6B
-1E6C 1E6D
-1E6E 1E6F
-1E70 1E71
-1E72 1E73
-1E74 1E75
-1E76 1E77
-1E78 1E79
-1E7A 1E7B
-1E7C 1E7D
-1E7E 1E7F
-1E80 1E81
-1E82 1E83
-1E84 1E85
-1E86 1E87
-1E88 1E89
-1E8A 1E8B
-1E8C 1E8D
-1E8E 1E8F
-1E90 1E91
-1E92 1E93
-1E94 1E95
-1E9B 1E61
-1E9E 00DF
-1EA0 1EA1
-1EA2 1EA3
-1EA4 1EA5
-1EA6 1EA7
-1EA8 1EA9
-1EAA 1EAB
-1EAC 1EAD
-1EAE 1EAF
-1EB0 1EB1
-1EB2 1EB3
-1EB4 1EB5
-1EB6 1EB7
-1EB8 1EB9
-1EBA 1EBB
-1EBC 1EBD
-1EBE 1EBF
-1EC0 1EC1
-1EC2 1EC3
-1EC4 1EC5
-1EC6 1EC7
-1EC8 1EC9
-1ECA 1ECB
-1ECC 1ECD
-1ECE 1ECF
-1ED0 1ED1
-1ED2 1ED3
-1ED4 1ED5
-1ED6 1ED7
-1ED8 1ED9
-1EDA 1EDB
-1EDC 1EDD
-1EDE 1EDF
-1EE0 1EE1
-1EE2 1EE3
-1EE4 1EE5
-1EE6 1EE7
-1EE8 1EE9
-1EEA 1EEB
-1EEC 1EED
-1EEE 1EEF
-1EF0 1EF1
-1EF2 1EF3
-1EF4 1EF5
-1EF6 1EF7
-1EF8 1EF9
-1EFA 1EFB
-1EFC 1EFD
-1EFE 1EFF
-1F08 1F00
-1F09 1F01
-1F0A 1F02
-1F0B 1F03
-1F0C 1F04
-1F0D 1F05
-1F0E 1F06
-1F0F 1F07
-1F18 1F10
-1F19 1F11
-1F1A 1F12
-1F1B 1F13
-1F1C 1F14
-1F1D 1F15
-1F28 1F20
-1F29 1F21
-1F2A 1F22
-1F2B 1F23
-1F2C 1F24
-1F2D 1F25
-1F2E 1F26
-1F2F 1F27
-1F38 1F30
-1F39 1F31
-1F3A 1F32
-1F3B 1F33
-1F3C 1F34
-1F3D 1F35
-1F3E 1F36
-1F3F 1F37
-1F48 1F40
-1F49 1F41
-1F4A 1F42
-1F4B 1F43
-1F4C 1F44
-1F4D 1F45
-1F59 1F51
-1F5B 1F53
-1F5D 1F55
-1F5F 1F57
-1F68 1F60
-1F69 1F61
-1F6A 1F62
-1F6B 1F63
-1F6C 1F64
-1F6D 1F65
-1F6E 1F66
-1F6F 1F67
-1F88 1F80
-1F89 1F81
-1F8A 1F82
-1F8B 1F83
-1F8C 1F84
-1F8D 1F85
-1F8E 1F86
-1F8F 1F87
-1F98 1F90
-1F99 1F91
-1F9A 1F92
-1F9B 1F93
-1F9C 1F94
-1F9D 1F95
-1F9E 1F96
-1F9F 1F97
-1FA8 1FA0
-1FA9 1FA1
-1FAA 1FA2
-1FAB 1FA3
-1FAC 1FA4
-1FAD 1FA5
-1FAE 1FA6
-1FAF 1FA7
-1FB8 1FB0
-1FB9 1FB1
-1FBA 1F70
-1FBB 1F71
-1FBC 1FB3
-1FBE 03B9
-1FC8 1F72
-1FC9 1F73
-1FCA 1F74
-1FCB 1F75
-1FCC 1FC3
-1FD8 1FD0
-1FD9 1FD1
-1FDA 1F76
-1FDB 1F77
-1FE8 1FE0
-1FE9 1FE1
-1FEA 1F7A
-1FEB 1F7B
-1FEC 1FE5
-1FF8 1F78
-1FF9 1F79
-1FFA 1F7C
-1FFB 1F7D
-1FFC 1FF3
-2126 03C9
-212A 006B
-212B 00E5
-2132 214E
-2160 2170
-2161 2171
-2162 2172
-2163 2173
-2164 2174
-2165 2175
-2166 2176
-2167 2177
-2168 2178
-2169 2179
-216A 217A
-216B 217B
-216C 217C
-216D 217D
-216E 217E
-216F 217F
-2183 2184
-24B6 24D0
-24B7 24D1
-24B8 24D2
-24B9 24D3
-24BA 24D4
-24BB 24D5
-24BC 24D6
-24BD 24D7
-24BE 24D8
-24BF 24D9
-24C0 24DA
-24C1 24DB
-24C2 24DC
-24C3 24DD
-24C4 24DE
-24C5 24DF
-24C6 24E0
-24C7 24E1
-24C8 24E2
-24C9 24E3
-24CA 24E4
-24CB 24E5
-24CC 24E6
-24CD 24E7
-24CE 24E8
-24CF 24E9
-2C00 2C30
-2C01 2C31
-2C02 2C32
-2C03 2C33
-2C04 2C34
-2C05 2C35
-2C06 2C36
-2C07 2C37
-2C08 2C38
-2C09 2C39
-2C0A 2C3A
-2C0B 2C3B
-2C0C 2C3C
-2C0D 2C3D
-2C0E 2C3E
-2C0F 2C3F
-2C10 2C40
-2C11 2C41
-2C12 2C42
-2C13 2C43
-2C14 2C44
-2C15 2C45
-2C16 2C46
-2C17 2C47
-2C18 2C48
-2C19 2C49
-2C1A 2C4A
-2C1B 2C4B
-2C1C 2C4C
-2C1D 2C4D
-2C1E 2C4E
-2C1F 2C4F
-2C20 2C50
-2C21 2C51
-2C22 2C52
-2C23 2C53
-2C24 2C54
-2C25 2C55
-2C26 2C56
-2C27 2C57
-2C28 2C58
-2C29 2C59
-2C2A 2C5A
-2C2B 2C5B
-2C2C 2C5C
-2C2D 2C5D
-2C2E 2C5E
-2C60 2C61
-2C62 026B
-2C63 1D7D
-2C64 027D
-2C67 2C68
-2C69 2C6A
-2C6B 2C6C
-2C6D 0251
-2C6E 0271
-2C6F 0250
-2C70 0252
-2C72 2C73
-2C75 2C76
-2C7E 023F
-2C7F 0240
-2C80 2C81
-2C82 2C83
-2C84 2C85
-2C86 2C87
-2C88 2C89
-2C8A 2C8B
-2C8C 2C8D
-2C8E 2C8F
-2C90 2C91
-2C92 2C93
-2C94 2C95
-2C96 2C97
-2C98 2C99
-2C9A 2C9B
-2C9C 2C9D
-2C9E 2C9F
-2CA0 2CA1
-2CA2 2CA3
-2CA4 2CA5
-2CA6 2CA7
-2CA8 2CA9
-2CAA 2CAB
-2CAC 2CAD
-2CAE 2CAF
-2CB0 2CB1
-2CB2 2CB3
-2CB4 2CB5
-2CB6 2CB7
-2CB8 2CB9
-2CBA 2CBB
-2CBC 2CBD
-2CBE 2CBF
-2CC0 2CC1
-2CC2 2CC3
-2CC4 2CC5
-2CC6 2CC7
-2CC8 2CC9
-2CCA 2CCB
-2CCC 2CCD
-2CCE 2CCF
-2CD0 2CD1
-2CD2 2CD3
-2CD4 2CD5
-2CD6 2CD7
-2CD8 2CD9
-2CDA 2CDB
-2CDC 2CDD
-2CDE 2CDF
-2CE0 2CE1
-2CE2 2CE3
-2CEB 2CEC
-2CED 2CEE
-2CF2 2CF3
-A640 A641
-A642 A643
-A644 A645
-A646 A647
-A648 A649
-A64A A64B
-A64C A64D
-A64E A64F
-A650 A651
-A652 A653
-A654 A655
-A656 A657
-A658 A659
-A65A A65B
-A65C A65D
-A65E A65F
-A660 A661
-A662 A663
-A664 A665
-A666 A667
-A668 A669
-A66A A66B
-A66C A66D
-A680 A681
-A682 A683
-A684 A685
-A686 A687
-A688 A689
-A68A A68B
-A68C A68D
-A68E A68F
-A690 A691
-A692 A693
-A694 A695
-A696 A697
-A698 A699
-A69A A69B
-A722 A723
-A724 A725
-A726 A727
-A728 A729
-A72A A72B
-A72C A72D
-A72E A72F
-A732 A733
-A734 A735
-A736 A737
-A738 A739
-A73A A73B
-A73C A73D
-A73E A73F
-A740 A741
-A742 A743
-A744 A745
-A746 A747
-A748 A749
-A74A A74B
-A74C A74D
-A74E A74F
-A750 A751
-A752 A753
-A754 A755
-A756 A757
-A758 A759
-A75A A75B
-A75C A75D
-A75E A75F
-A760 A761
-A762 A763
-A764 A765
-A766 A767
-A768 A769
-A76A A76B
-A76C A76D
-A76E A76F
-A779 A77A
-A77B A77C
-A77D 1D79
-A77E A77F
-A780 A781
-A782 A783
-A784 A785
-A786 A787
-A78B A78C
-A78D 0265
-A790 A791
-A792 A793
-A796 A797
-A798 A799
-A79A A79B
-A79C A79D
-A79E A79F
-A7A0 A7A1
-A7A2 A7A3
-A7A4 A7A5
-A7A6 A7A7
-A7A8 A7A9
-A7AA 0266
-A7AB 025C
-A7AC 0261
-A7AD 026C
-A7AE 026A
-A7B0 029E
-A7B1 0287
-A7B2 029D
-A7B3 AB53
-A7B4 A7B5
-A7B6 A7B7
-A7B8 A7B9
-A7BA A7BB
-A7BC A7BD
-A7BE A7BF
-A7C2 A7C3
-A7C4 A794
-A7C5 0282
-A7C6 1D8E
-A7C7 A7C8
-A7C9 A7CA
-A7F5 A7F6
-AB70 13A0
-AB71 13A1
-AB72 13A2
-AB73 13A3
-AB74 13A4
-AB75 13A5
-AB76 13A6
-AB77 13A7
-AB78 13A8
-AB79 13A9
-AB7A 13AA
-AB7B 13AB
-AB7C 13AC
-AB7D 13AD
-AB7E 13AE
-AB7F 13AF
-AB80 13B0
-AB81 13B1
-AB82 13B2
-AB83 13B3
-AB84 13B4
-AB85 13B5
-AB86 13B6
-AB87 13B7
-AB88 13B8
-AB89 13B9
-AB8A 13BA
-AB8B 13BB
-AB8C 13BC
-AB8D 13BD
-AB8E 13BE
-AB8F 13BF
-AB90 13C0
-AB91 13C1
-AB92 13C2
-AB93 13C3
-AB94 13C4
-AB95 13C5
-AB96 13C6
-AB97 13C7
-AB98 13C8
-AB99 13C9
-AB9A 13CA
-AB9B 13CB
-AB9C 13CC
-AB9D 13CD
-AB9E 13CE
-AB9F 13CF
-ABA0 13D0
-ABA1 13D1
-ABA2 13D2
-ABA3 13D3
-ABA4 13D4
-ABA5 13D5
-ABA6 13D6
-ABA7 13D7
-ABA8 13D8
-ABA9 13D9
-ABAA 13DA
-ABAB 13DB
-ABAC 13DC
-ABAD 13DD
-ABAE 13DE
-ABAF 13DF
-ABB0 13E0
-ABB1 13E1
-ABB2 13E2
-ABB3 13E3
-ABB4 13E4
-ABB5 13E5
-ABB6 13E6
-ABB7 13E7
-ABB8 13E8
-ABB9 13E9
-ABBA 13EA
-ABBB 13EB
-ABBC 13EC
-ABBD 13ED
-ABBE 13EE
-ABBF 13EF
-FF21 FF41
-FF22 FF42
-FF23 FF43
-FF24 FF44
-FF25 FF45
-FF26 FF46
-FF27 FF47
-FF28 FF48
-FF29 FF49
-FF2A FF4A
-FF2B FF4B
-FF2C FF4C
-FF2D FF4D
-FF2E FF4E
-FF2F FF4F
-FF30 FF50
-FF31 FF51
-FF32 FF52
-FF33 FF53
-FF34 FF54
-FF35 FF55
-FF36 FF56
-FF37 FF57
-FF38 FF58
-FF39 FF59
-FF3A FF5A
-10400 10428
-10401 10429
-10402 1042A
-10403 1042B
-10404 1042C
-10405 1042D
-10406 1042E
-10407 1042F
-10408 10430
-10409 10431
-1040A 10432
-1040B 10433
-1040C 10434
-1040D 10435
-1040E 10436
-1040F 10437
-10410 10438
-10411 10439
-10412 1043A
-10413 1043B
-10414 1043C
-10415 1043D
-10416 1043E
-10417 1043F
-10418 10440
-10419 10441
-1041A 10442
-1041B 10443
-1041C 10444
-1041D 10445
-1041E 10446
-1041F 10447
-10420 10448
-10421 10449
-10422 1044A
-10423 1044B
-10424 1044C
-10425 1044D
-10426 1044E
-10427 1044F
-104B0 104D8
-104B1 104D9
-104B2 104DA
-104B3 104DB
-104B4 104DC
-104B5 104DD
-104B6 104DE
-104B7 104DF
-104B8 104E0
-104B9 104E1
-104BA 104E2
-104BB 104E3
-104BC 104E4
-104BD 104E5
-104BE 104E6
-104BF 104E7
-104C0 104E8
-104C1 104E9
-104C2 104EA
-104C3 104EB
-104C4 104EC
-104C5 104ED
-104C6 104EE
-104C7 104EF
-104C8 104F0
-104C9 104F1
-104CA 104F2
-104CB 104F3
-104CC 104F4
-104CD 104F5
-104CE 104F6
-104CF 104F7
-104D0 104F8
-104D1 104F9
-104D2 104FA
-104D3 104FB
-10C80 10CC0
-10C81 10CC1
-10C82 10CC2
-10C83 10CC3
-10C84 10CC4
-10C85 10CC5
-10C86 10CC6
-10C87 10CC7
-10C88 10CC8
-10C89 10CC9
-10C8A 10CCA
-10C8B 10CCB
-10C8C 10CCC
-10C8D 10CCD
-10C8E 10CCE
-10C8F 10CCF
-10C90 10CD0
-10C91 10CD1
-10C92 10CD2
-10C93 10CD3
-10C94 10CD4
-10C95 10CD5
-10C96 10CD6
-10C97 10CD7
-10C98 10CD8
-10C99 10CD9
-10C9A 10CDA
-10C9B 10CDB
-10C9C 10CDC
-10C9D 10CDD
-10C9E 10CDE
-10C9F 10CDF
-10CA0 10CE0
-10CA1 10CE1
-10CA2 10CE2
-10CA3 10CE3
-10CA4 10CE4
-10CA5 10CE5
-10CA6 10CE6
-10CA7 10CE7
-10CA8 10CE8
-10CA9 10CE9
-10CAA 10CEA
-10CAB 10CEB
-10CAC 10CEC
-10CAD 10CED
-10CAE 10CEE
-10CAF 10CEF
-10CB0 10CF0
-10CB1 10CF1
-10CB2 10CF2
-118A0 118C0
-118A1 118C1
-118A2 118C2
-118A3 118C3
-118A4 118C4
-118A5 118C5
-118A6 118C6
-118A7 118C7
-118A8 118C8
-118A9 118C9
-118AA 118CA
-118AB 118CB
-118AC 118CC
-118AD 118CD
-118AE 118CE
-118AF 118CF
-118B0 118D0
-118B1 118D1
-118B2 118D2
-118B3 118D3
-118B4 118D4
-118B5 118D5
-118B6 118D6
-118B7 118D7
-118B8 118D8
-118B9 118D9
-118BA 118DA
-118BB 118DB
-118BC 118DC
-118BD 118DD
-118BE 118DE
-118BF 118DF
-16E40 16E60
-16E41 16E61
-16E42 16E62
-16E43 16E63
-16E44 16E64
-16E45 16E65
-16E46 16E66
-16E47 16E67
-16E48 16E68
-16E49 16E69
-16E4A 16E6A
-16E4B 16E6B
-16E4C 16E6C
-16E4D 16E6D
-16E4E 16E6E
-16E4F 16E6F
-16E50 16E70
-16E51 16E71
-16E52 16E72
-16E53 16E73
-16E54 16E74
-16E55 16E75
-16E56 16E76
-16E57 16E77
-16E58 16E78
-16E59 16E79
-16E5A 16E7A
-16E5B 16E7B
-16E5C 16E7C
-16E5D 16E7D
-16E5E 16E7E
-16E5F 16E7F
-1E900 1E922
-1E901 1E923
-1E902 1E924
-1E903 1E925
-1E904 1E926
-1E905 1E927
-1E906 1E928
-1E907 1E929
-1E908 1E92A
-1E909 1E92B
-1E90A 1E92C
-1E90B 1E92D
-1E90C 1E92E
-1E90D 1E92F
-1E90E 1E930
-1E90F 1E931
-1E910 1E932
-1E911 1E933
-1E912 1E934
-1E913 1E935
-1E914 1E936
-1E915 1E937
-1E916 1E938
-1E917 1E939
-1E918 1E93A
-1E919 1E93B
-1E91A 1E93C
-1E91B 1E93D
-1E91C 1E93E
-1E91D 1E93F
-1E91E 1E940
-1E91F 1E941
-1E920 1E942
-1E921 1E943
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/GCB.pl b/Master/tlpkg/tlperl/lib/unicore/To/GCB.pl
index 34994b1f638..1fcfcc17403 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/GCB.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/GCB.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -54,7 +54,9 @@ AE ExtPict_XX
825 827 Extend
829 82D Extend
859 85B Extend
-8D3 8E1 Extend
+890 891 Prepend
+898 89F Extend
+8CA 8E1 Extend
8E2 Prepend
8E3 902 Extend
903 SpacingMark
@@ -124,6 +126,7 @@ BD7 Extend
C00 Extend
C01 C03 SpacingMark
C04 Extend
+C3C Extend
C3E C40 Extend
C41 C44 SpacingMark
C46 C48 Extend
@@ -144,6 +147,7 @@ CCA CCB SpacingMark
CCC CCD Extend
CD5 CD6 Extend
CE2 CE3 Extend
+CF3 SpacingMark
D00 D01 Extend
D02 D03 SpacingMark
D3B D3C Extend
@@ -173,7 +177,7 @@ E47 E4E Extend
EB1 Extend
EB3 SpacingMark
EB4 EBC Extend
-EC8 ECD Extend
+EC8 ECE Extend
F18 F19 Extend
F35 Extend
F37 Extend
@@ -206,7 +210,9 @@ FC6 Extend
11A8 11FF T
135D 135F Extend
1712 1714 Extend
-1732 1734 Extend
+1715 SpacingMark
+1732 1733 Extend
+1734 SpacingMark
1752 1753 Extend
1772 1773 Extend
17B4 17B5 Extend
@@ -219,6 +225,7 @@ FC6 Extend
17DD Extend
180B 180D Extend
180E Control
+180F Extend
1885 1886 Extend
18A9 Extend
1920 1922 Extend
@@ -242,7 +249,7 @@ FC6 Extend
1A6D 1A72 SpacingMark
1A73 1A7C Extend
1A7F Extend
-1AB0 1AC0 Extend
+1AB0 1ACE Extend
1B00 1B03 Extend
1B04 SpacingMark
1B34 1B3A Extend
@@ -280,8 +287,7 @@ FC6 Extend
1CF4 Extend
1CF7 SpacingMark
1CF8 1CF9 Extend
-1DC0 1DF9 Extend
-1DFB 1DFF Extend
+1DC0 1DFF Extend
200B Control
200C Extend
200D ZWJ
@@ -1214,11 +1220,15 @@ FFF0 FFFB Control
10AE5 10AE6 Extend
10D24 10D27 Extend
10EAB 10EAC Extend
+10EFD 10EFF Extend
10F46 10F50 Extend
+10F82 10F85 Extend
11000 SpacingMark
11001 Extend
11002 SpacingMark
11038 11046 Extend
+11070 Extend
+11073 11074 Extend
1107F 11081 Extend
11082 SpacingMark
110B0 110B2 SpacingMark
@@ -1226,6 +1236,7 @@ FFF0 FFFB Control
110B7 110B8 SpacingMark
110B9 110BA Extend
110BD Prepend
+110C2 Extend
110CD Prepend
11100 11102 Extend
11127 1112B Extend
@@ -1249,6 +1260,7 @@ FFF0 FFFB Control
11235 SpacingMark
11236 11237 Extend
1123E Extend
+11241 Extend
112DF Extend
112E0 112E2 SpacingMark
112E3 112EA Extend
@@ -1305,7 +1317,6 @@ FFF0 FFFB Control
116B6 SpacingMark
116B7 Extend
1171D 1171F Extend
-11720 11721 SpacingMark
11722 11725 Extend
11726 SpacingMark
11727 1172B Extend
@@ -1369,7 +1380,18 @@ FFF0 FFFB Control
11D97 Extend
11EF3 11EF4 Extend
11EF5 11EF6 SpacingMark
-13430 13438 Control
+11F00 11F01 Extend
+11F02 Prepend
+11F03 SpacingMark
+11F34 11F35 SpacingMark
+11F36 11F3A Extend
+11F3E 11F3F SpacingMark
+11F40 Extend
+11F41 SpacingMark
+11F42 Extend
+13430 1343F Control
+13440 Extend
+13447 13455 Extend
16AF0 16AF4 Extend
16B30 16B36 Extend
16F4F Extend
@@ -1379,6 +1401,8 @@ FFF0 FFFB Control
16FF0 16FF1 SpacingMark
1BC9D 1BC9E Extend
1BCA0 1BCA3 Control
+1CF00 1CF2D Extend
+1CF30 1CF46 Extend
1D165 Extend
1D166 SpacingMark
1D167 1D169 Extend
@@ -1400,8 +1424,11 @@ FFF0 FFFB Control
1E01B 1E021 Extend
1E023 1E024 Extend
1E026 1E02A Extend
+1E08F Extend
1E130 1E136 Extend
+1E2AE Extend
1E2EC 1E2EF Extend
+1E4EC 1E4EF Extend
1E8D0 1E8D6 Extend
1E944 1E94A Extend
1F000 1F0FF ExtPict_XX
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Gc.pl b/Master/tlpkg/tlperl/lib/unicore/To/Gc.pl
index b6772db84ac..bff3acd746b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Gc.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Gc.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -667,7 +667,7 @@ F8 FF Ll
610 61A Mn
61B Po
61C Cf
-61E 61F Po
+61D 61F Po
620 63F Lo
640 Lm
641 64A Lo
@@ -723,9 +723,14 @@ F8 FF Ll
859 85B Mn
85E Po
860 86A Lo
-8A0 8B4 Lo
-8B6 8C7 Lo
-8D3 8E1 Mn
+870 887 Lo
+888 Sk
+889 88E Lo
+890 891 Cf
+898 89F Mn
+8A0 8C8 Lo
+8C9 Lm
+8CA 8E1 Mn
8E2 Cf
8E3 902 Mn
903 Mc
@@ -880,6 +885,7 @@ C05 C0C Lo
C0E C10 Lo
C12 C28 Lo
C2A C39 Lo
+C3C Mn
C3D Lo
C3E C40 Mn
C41 C44 Mc
@@ -887,6 +893,7 @@ C46 C48 Mn
C4A C4D Mn
C55 C56 Mn
C58 C5A Lo
+C5D Lo
C60 C61 Lo
C62 C63 Mn
C66 C6F Nd
@@ -912,11 +919,12 @@ CC7 CC8 Mc
CCA CCB Mc
CCC CCD Mn
CD5 CD6 Mc
-CDE Lo
+CDD CDE Lo
CE0 CE1 Lo
CE2 CE3 Mn
CE6 CEF Nd
CF1 CF2 Lo
+CF3 Mc
D00 D01 Mn
D02 D03 Mc
D04 D0C Lo
@@ -978,7 +986,7 @@ EB4 EBC Mn
EBD Lo
EC0 EC4 Lo
EC6 Lm
-EC8 ECD Mn
+EC8 ECE Mn
ED0 ED9 Nd
EDC EDF Lo
F00 Lo
@@ -1097,11 +1105,12 @@ FD9 FDA Po
16EB 16ED Po
16EE 16F0 Nl
16F1 16F8 Lo
-1700 170C Lo
-170E 1711 Lo
+1700 1711 Lo
1712 1714 Mn
-1720 1731 Lo
-1732 1734 Mn
+1715 Mc
+171F 1731 Lo
+1732 1733 Mn
+1734 Mc
1735 1736 Po
1740 1751 Lo
1752 1753 Mn
@@ -1129,6 +1138,7 @@ FD9 FDA Po
1807 180A Po
180B 180D Mn
180E Cf
+180F Mn
1810 1819 Nd
1820 1842 Lo
1843 Lm
@@ -1183,7 +1193,7 @@ FD9 FDA Po
1AA8 1AAD Po
1AB0 1ABD Mn
1ABE Me
-1ABF 1AC0 Mn
+1ABF 1ACE Mn
1B00 1B03 Mn
1B04 Mc
1B05 1B33 Lo
@@ -1195,12 +1205,13 @@ FD9 FDA Po
1B3D 1B41 Mc
1B42 Mn
1B43 1B44 Mc
-1B45 1B4B Lo
+1B45 1B4C Lo
1B50 1B59 Nd
1B5A 1B60 Po
1B61 1B6A So
1B6B 1B73 Mn
1B74 1B7C So
+1B7D 1B7E Po
1B80 1B81 Mn
1B82 Mc
1B83 1BA0 Lo
@@ -1257,8 +1268,7 @@ FD9 FDA Po
1D78 Lm
1D79 1D9A Ll
1D9B 1DBF Lm
-1DC0 1DF9 Mn
-1DFB 1DFF Mn
+1DC0 1DFF Mn
1E00 Lu
1E01 Ll
1E02 Lu
@@ -1599,7 +1609,7 @@ FD9 FDA Po
208D Ps
208E Pe
2090 209C Lm
-20A0 20BF Sc
+20A0 20C0 Sc
20D0 20DC Mn
20DD 20E0 Me
20E1 Mn
@@ -1772,8 +1782,8 @@ FD9 FDA Po
2B4D 2B73 So
2B76 2B95 So
2B97 2BFF So
-2C00 2C2E Lu
-2C30 2C5E Ll
+2C00 2C2F Lu
+2C30 2C5F Ll
2C60 Lu
2C61 Ll
2C62 2C64 Lu
@@ -1958,7 +1968,16 @@ FD9 FDA Po
2E42 Ps
2E43 2E4F Po
2E50 2E51 So
-2E52 Po
+2E52 2E54 Po
+2E55 Ps
+2E56 Pe
+2E57 Ps
+2E58 Pe
+2E59 Ps
+2E5A Pe
+2E5B Ps
+2E5C Pe
+2E5D Pd
2E80 2E99 So
2E9B 2EF3 So
2F00 2FD5 So
@@ -2034,8 +2053,7 @@ FD9 FDA Po
32C0 33FF So
3400 4DBF Lo
4DC0 4DFF So
-4E00 9FFC Lo
-A000 A014 Lo
+4E00 A014 Lo
A015 Lm
A016 A48C Lo
A490 A4C6 So
@@ -2275,12 +2293,23 @@ A7BC Lu
A7BD Ll
A7BE Lu
A7BF Ll
+A7C0 Lu
+A7C1 Ll
A7C2 Lu
A7C3 Ll
A7C4 A7C7 Lu
A7C8 Ll
A7C9 Lu
A7CA Ll
+A7D0 Lu
+A7D1 Ll
+A7D3 Ll
+A7D5 Ll
+A7D6 Lu
+A7D7 Ll
+A7D8 Lu
+A7D9 Ll
+A7F2 A7F4 Lm
A7F5 Lu
A7F6 Ll
A7F7 Lo
@@ -2430,15 +2459,17 @@ FB3E Lo
FB40 FB41 Lo
FB43 FB44 Lo
FB46 FBB1 Lo
-FBB2 FBC1 Sk
+FBB2 FBC2 Sk
FBD3 FD3D Lo
FD3E Pe
FD3F Ps
+FD40 FD4F So
FD50 FD8F Lo
FD92 FDC7 Lo
+FDCF So
FDF0 FDFB Lo
FDFC Sc
-FDFD So
+FDFD FDFF So
FE00 FE0F Mn
FE10 FE16 Po
FE17 Ps
@@ -2585,9 +2616,20 @@ FFFC FFFD So
10500 10527 Lo
10530 10563 Lo
1056F Po
+10570 1057A Lu
+1057C 1058A Lu
+1058C 10592 Lu
+10594 10595 Lu
+10597 105A1 Ll
+105A3 105B1 Ll
+105B3 105B9 Ll
+105BB 105BC Ll
10600 10736 Lo
10740 10755 Lo
10760 10767 Lo
+10780 10785 Lm
+10787 107B0 Lm
+107B2 107BA Lm
10800 10805 Lo
10808 Lo
1080A 10835 Lo
@@ -2657,6 +2699,7 @@ FFFC FFFD So
10EAB 10EAC Mn
10EAD Pd
10EB0 10EB1 Lo
+10EFD 10EFF Mn
10F00 10F1C Lo
10F1D 10F26 No
10F27 Lo
@@ -2664,6 +2707,9 @@ FFFC FFFD So
10F46 10F50 Mn
10F51 10F54 No
10F55 10F59 Po
+10F70 10F81 Lo
+10F82 10F85 Mn
+10F86 10F89 Po
10FB0 10FC4 Lo
10FC5 10FCB No
10FE0 10FF6 Lo
@@ -2675,6 +2721,10 @@ FFFC FFFD So
11047 1104D Po
11052 11065 No
11066 1106F Nd
+11070 Mn
+11071 11072 Lo
+11073 11074 Mn
+11075 Lo
1107F 11081 Mn
11082 Mc
11083 110AF Lo
@@ -2685,6 +2735,7 @@ FFFC FFFD So
110BB 110BC Po
110BD Cf
110BE 110C1 Po
+110C2 Mn
110CD Cf
110D0 110E8 Lo
110F0 110F9 Nd
@@ -2730,6 +2781,8 @@ FFFC FFFD So
11236 11237 Mn
11238 1123D Po
1123E Mn
+1123F 11240 Lo
+11241 Mn
11280 11286 Lo
11288 Lo
1128A 1128D Lo
@@ -2819,6 +2872,7 @@ FFFC FFFD So
116B6 Mc
116B7 Mn
116B8 Lo
+116B9 Po
116C0 116C9 Nd
11700 1171A Lo
1171D 1171F Mn
@@ -2830,6 +2884,7 @@ FFFC FFFD So
1173A 1173B No
1173C 1173E Po
1173F So
+11740 11746 Lo
11800 1182B Lo
1182C 1182E Mc
1182F 11837 Mn
@@ -2888,7 +2943,8 @@ FFFC FFFD So
11A9A 11A9C Po
11A9D Lo
11A9E 11AA2 Po
-11AC0 11AF8 Lo
+11AB0 11AF8 Lo
+11B00 11B09 Po
11C00 11C08 Lo
11C0A 11C2E Lo
11C2F Mc
@@ -2934,6 +2990,19 @@ FFFC FFFD So
11EF3 11EF4 Mn
11EF5 11EF6 Mc
11EF7 11EF8 Po
+11F00 11F01 Mn
+11F02 Lo
+11F03 Mc
+11F04 11F10 Lo
+11F12 11F33 Lo
+11F34 11F35 Mc
+11F36 11F3A Mn
+11F3E 11F3F Mc
+11F40 Mn
+11F41 Mc
+11F42 Mn
+11F43 11F4F Po
+11F50 11F59 Nd
11FB0 Lo
11FC0 11FD4 No
11FD5 11FDC So
@@ -2944,13 +3013,20 @@ FFFC FFFD So
12400 1246E Nl
12470 12474 Po
12480 12543 Lo
-13000 1342E Lo
-13430 13438 Cf
+12F90 12FF0 Lo
+12FF1 12FF2 Po
+13000 1342F Lo
+13430 1343F Cf
+13440 Mn
+13441 13446 Lo
+13447 13455 Mn
14400 14646 Lo
16800 16A38 Lo
16A40 16A5E Lo
16A60 16A69 Nd
16A6E 16A6F Po
+16A70 16ABE Lo
+16AC0 16AC9 Nd
16AD0 16AED Lo
16AF0 16AF4 Mn
16AF5 Po
@@ -2983,8 +3059,13 @@ FFFC FFFD So
17000 187F7 Lo
18800 18CD5 Lo
18D00 18D08 Lo
-1B000 1B11E Lo
+1AFF0 1AFF3 Lm
+1AFF5 1AFFB Lm
+1AFFD 1AFFE Lm
+1B000 1B122 Lo
+1B132 Lo
1B150 1B152 Lo
+1B155 Lo
1B164 1B167 Lo
1B170 1B2FB Lo
1BC00 1BC6A Lo
@@ -2995,6 +3076,9 @@ FFFC FFFD So
1BC9D 1BC9E Mn
1BC9F Po
1BCA0 1BCA3 Cf
+1CF00 1CF2D Mn
+1CF30 1CF46 Mn
+1CF50 1CFC3 So
1D000 1D0F5 So
1D100 1D126 So
1D129 1D164 So
@@ -3008,10 +3092,11 @@ FFFC FFFD So
1D185 1D18B Mn
1D18C 1D1A9 So
1D1AA 1D1AD Mn
-1D1AE 1D1E8 So
+1D1AE 1D1EA So
1D200 1D241 So
1D242 1D244 Mn
1D245 So
+1D2C0 1D2D3 No
1D2E0 1D2F3 No
1D300 1D356 So
1D360 1D378 No
@@ -3097,21 +3182,37 @@ FFFC FFFD So
1DA87 1DA8B Po
1DA9B 1DA9F Mn
1DAA1 1DAAF Mn
+1DF00 1DF09 Ll
+1DF0A Lo
+1DF0B 1DF1E Ll
+1DF25 1DF2A Ll
1E000 1E006 Mn
1E008 1E018 Mn
1E01B 1E021 Mn
1E023 1E024 Mn
1E026 1E02A Mn
+1E030 1E06D Lm
+1E08F Mn
1E100 1E12C Lo
1E130 1E136 Mn
1E137 1E13D Lm
1E140 1E149 Nd
1E14E Lo
1E14F So
+1E290 1E2AD Lo
+1E2AE Mn
1E2C0 1E2EB Lo
1E2EC 1E2EF Mn
1E2F0 1E2F9 Nd
1E2FF Sc
+1E4D0 1E4EA Lo
+1E4EB Lm
+1E4EC 1E4EF Mn
+1E4F0 1E4F9 Nd
+1E7E0 1E7E6 Lo
+1E7E8 1E7EB Lo
+1E7ED 1E7EE Lo
+1E7F0 1E7FE Lo
1E800 1E8C4 Lo
1E8C7 1E8CF No
1E8D0 1E8D6 Mn
@@ -3179,38 +3280,38 @@ FFFC FFFD So
1F300 1F3FA So
1F3FB 1F3FF Sk
1F400 1F6D7 So
-1F6E0 1F6EC So
+1F6DC 1F6EC So
1F6F0 1F6FC So
-1F700 1F773 So
-1F780 1F7D8 So
+1F700 1F776 So
+1F77B 1F7D9 So
1F7E0 1F7EB So
+1F7F0 So
1F800 1F80B So
1F810 1F847 So
1F850 1F859 So
1F860 1F887 So
1F890 1F8AD So
1F8B0 1F8B1 So
-1F900 1F978 So
-1F97A 1F9CB So
-1F9CD 1FA53 So
+1F900 1FA53 So
1FA60 1FA6D So
-1FA70 1FA74 So
-1FA78 1FA7A So
-1FA80 1FA86 So
-1FA90 1FAA8 So
-1FAB0 1FAB6 So
-1FAC0 1FAC2 So
-1FAD0 1FAD6 So
+1FA70 1FA7C So
+1FA80 1FA88 So
+1FA90 1FABD So
+1FABF 1FAC5 So
+1FACE 1FADB So
+1FAE0 1FAE8 So
+1FAF0 1FAF8 So
1FB00 1FB92 So
1FB94 1FBCA So
1FBF0 1FBF9 Nd
-20000 2A6DD Lo
-2A700 2B734 Lo
+20000 2A6DF Lo
+2A700 2B739 Lo
2B740 2B81D Lo
2B820 2CEA1 Lo
2CEB0 2EBE0 Lo
2F800 2FA1D Lo
30000 3134A Lo
+31350 323AF Lo
E0001 Cf
E0020 E007F Cf
E0100 E01EF Mn
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Hst.pl b/Master/tlpkg/tlperl/lib/unicore/To/Hst.pl
index 7d8e05a2075..e89578f71df 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Hst.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Hst.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Identif2.pl b/Master/tlpkg/tlperl/lib/unicore/To/Identif2.pl
index 011d964d962..63c39b80f94 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Identif2.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Identif2.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -241,7 +241,7 @@ F8 131 Recommended
610 61A Uncommon_Use
61B Not_XID
61C Default_Ignorable
-61E 61F Not_XID
+61D 61F Not_XID
620 63F Recommended
640 Obsolete
641 655 Recommended
@@ -288,12 +288,17 @@ F8 131 Recommended
840 85B Limited_Use
85E Limited_Use Not_XID
860 86A Limited_Use
+870 887 Recommended
+888 Not_XID
+889 88E Recommended
+890 891 Not_XID
+898 89F Uncommon_Use
8A0 8AC Recommended
8AD 8B1 Obsolete
8B2 Recommended
8B3 8B4 Uncommon_Use
-8B6 8C7 Recommended
-8D3 8E1 Uncommon_Use
+8B5 8C9 Recommended
+8CA 8E1 Uncommon_Use
8E2 Not_XID
8E3 900 Uncommon_Use
901 94D Recommended
@@ -411,12 +416,13 @@ C12 C28 Recommended
C2A C33 Recommended
C34 Obsolete
C35 C39 Recommended
-C3D C44 Recommended
+C3C C44 Recommended
C46 C48 Recommended
C4A C4D Recommended
C55 C56 Recommended
C58 C59 Obsolete
C5A Uncommon_Use
+C5D Recommended
C60 C61 Recommended
C62 C63 Uncommon_Use
C66 C6F Recommended
@@ -434,10 +440,11 @@ CBC CC4 Recommended
CC6 CC8 Recommended
CCA CCD Recommended
CD5 CD6 Recommended
+CDD Recommended
CDE Obsolete
CE0 CE3 Recommended
CE6 CEF Recommended
-CF1 CF2 Recommended
+CF1 CF3 Recommended
D00 Recommended
D01 Obsolete
D02 D03 Recommended
@@ -497,7 +504,7 @@ EB3 Not_NFKC
EB4 EBD Recommended
EC0 EC4 Recommended
EC6 Recommended
-EC8 ECD Recommended
+EC8 ECE Recommended
ED0 ED9 Recommended
EDC EDD Not_NFKC
EDE EDF Recommended
@@ -609,9 +616,8 @@ FCE FDA Not_XID
16A0 16EA Exclusion
16EB 16ED Not_XID
16EE 16F8 Exclusion
-1700 170C Exclusion
-170E 1714 Exclusion
-1720 1734 Exclusion
+1700 1715 Exclusion
+171F 1734 Exclusion
1735 1736 Exclusion Not_XID
1740 1753 Exclusion
1760 176C Exclusion
@@ -623,8 +629,9 @@ FCE FDA Not_XID
17A8 Obsolete
17A9 17B3 Recommended
17B4 17B5 Default_Ignorable
-17B6 17CA Recommended
-17CB 17D0 Technical
+17B6 17CD Recommended
+17CE 17CF Technical
+17D0 Recommended
17D1 Technical Obsolete
17D2 Recommended
17D3 Obsolete
@@ -637,7 +644,7 @@ FCE FDA Not_XID
17E0 17E9 Recommended
17F0 17F9 Not_XID
1800 180A Exclusion Not_XID
-180B 180E Default_Ignorable
+180B 180F Default_Ignorable
1810 1819 Exclusion
1820 1878 Exclusion
1880 18A8 Exclusion
@@ -668,11 +675,12 @@ FCE FDA Not_XID
1AB0 1ABD Obsolete
1ABE Not_XID
1ABF 1AC0 Technical
-1B00 1B4B Limited_Use
+1AC1 1ACE Uncommon_Use
+1B00 1B4C Limited_Use
1B50 1B59 Limited_Use
1B5A 1B6A Limited_Use Not_XID
-1B6B 1B73 Limited_Use
-1B74 1B7C Limited_Use Not_XID
+1B6B 1B73 Limited_Use Technical
+1B74 1B7E Limited_Use Not_XID
1B80 1BF3 Limited_Use
1BFC 1BFF Limited_Use Not_XID
1C00 1C37 Limited_Use
@@ -706,6 +714,7 @@ FCE FDA Not_XID
1DCF 1DD0 Technical
1DD1 1DE6 Technical Obsolete
1DE7 1DF9 Technical
+1DFA Limited_Use Technical
1DFB 1DFF Technical
1E00 1E99 Recommended
1E9A 1E9B Not_NFKC
@@ -767,9 +776,7 @@ FCE FDA Not_XID
1FFC Recommended
1FFD 1FFE Not_NFKC
2000 200A Not_NFKC
-200B Default_Ignorable
-200C 200D Inclusion
-200E 200F Default_Ignorable
+200B 200F Default_Ignorable
2010 Inclusion
2011 Not_NFKC
2012 2016 Not_XID
@@ -808,7 +815,7 @@ FCE FDA Not_XID
2090 209C Not_NFKC
20A0 20A7 Not_XID
20A8 Not_NFKC
-20A9 20BF Not_XID
+20A9 20C0 Not_XID
20D0 20DC Technical
20DD 20E0 Technical Not_XID
20E1 Technical
@@ -873,8 +880,7 @@ FCE FDA Not_XID
2B97 2BEB Not_XID
2BEC 2BEF Uncommon_Use Not_XID
2BF0 2BFF Not_XID
-2C00 2C2E Exclusion
-2C30 2C5E Exclusion
+2C00 2C5F Exclusion
2C60 2C67 Technical
2C68 2C6C Uncommon_Use
2C6D 2C76 Obsolete
@@ -912,7 +918,7 @@ FCE FDA Not_XID
2E35 Obsolete Not_XID
2E36 2E38 Not_XID
2E39 Obsolete Not_XID
-2E3A 2E52 Not_XID
+2E3A 2E5D Not_XID
2E80 2E99 Not_XID
2E9B 2E9E Not_XID
2E9F Not_NFKC
@@ -955,7 +961,7 @@ FCE FDA Not_XID
3192 319F Not_NFKC
31A0 31BF Recommended
31C0 31E3 Not_XID
-31F0 31FF Technical
+31F0 31FF Obsolete
3200 321E Not_NFKC
3220 3247 Not_NFKC
3248 324F Not_XID
@@ -964,7 +970,7 @@ FCE FDA Not_XID
3280 33FF Not_NFKC
3400 4DBF Recommended
4DC0 4DFF Technical Not_XID
-4E00 9FFC Recommended
+4E00 9FFF Recommended
A000 A48C Limited_Use
A490 A4C6 Limited_Use Not_XID
A4D0 A4FD Limited_Use
@@ -1012,7 +1018,11 @@ A7B0 A7B1 Obsolete
A7B2 A7B7 Uncommon_Use
A7B8 A7B9 Recommended
A7BA A7BF Technical
-A7C2 A7CA Recommended
+A7C0 A7CA Recommended
+A7D0 A7D1 Recommended
+A7D3 Recommended
+A7D5 A7D9 Recommended
+A7F2 A7F4 Not_NFKC
A7F5 A7F7 Obsolete
A7F8 A7F9 Not_NFKC
A7FA Technical
@@ -1105,13 +1115,14 @@ FB3E Not_NFKC
FB40 FB41 Not_NFKC
FB43 FB44 Not_NFKC
FB46 FBB1 Not_NFKC
-FBB2 FBC1 Technical Not_XID
+FBB2 FBC2 Technical Not_XID
FBD3 FD3D Not_NFKC
-FD3E FD3F Technical Not_XID
+FD3E FD4F Technical Not_XID
FD50 FD8F Not_NFKC
FD92 FDC7 Not_NFKC
+FDCF Technical Not_XID
FDF0 FDFC Not_NFKC
-FDFD Technical Not_XID
+FDFD FDFF Technical Not_XID
FE00 FE0F Default_Ignorable
FE10 FE19 Not_NFKC
FE20 FE2D Technical
@@ -1173,9 +1184,21 @@ FFF9 FFFD Not_XID
10500 10527 Exclusion
10530 10563 Exclusion
1056F Exclusion Not_XID
+10570 1057A Exclusion
+1057C 1058A Exclusion
+1058C 10592 Exclusion
+10594 10595 Exclusion
+10597 105A1 Exclusion
+105A3 105B1 Exclusion
+105B3 105B9 Exclusion
+105BB 105BC Exclusion
10600 10736 Exclusion
10740 10755 Exclusion
10760 10767 Exclusion
+10780 Uncommon_Use
+10781 10785 Not_NFKC
+10787 107B0 Not_NFKC
+107B2 107BA Not_NFKC
10800 10805 Exclusion
10808 Exclusion
1080A 10835 Exclusion
@@ -1237,20 +1260,24 @@ FFF9 FFFD Not_XID
10EAB 10EAC Exclusion
10EAD Exclusion Not_XID
10EB0 10EB1 Exclusion
+10EFD 10EFF Uncommon_Use
10F00 10F1C Exclusion
10F1D 10F26 Exclusion Not_XID
10F27 Exclusion
10F30 10F50 Exclusion
10F51 10F59 Exclusion Not_XID
+10F70 10F85 Exclusion
+10F86 10F89 Exclusion Not_XID
10FB0 10FC4 Exclusion
10FC5 10FCB Exclusion Not_XID
10FE0 10FF6 Exclusion
11000 11046 Exclusion
11047 1104D Exclusion Not_XID
11052 11065 Exclusion Not_XID
-11066 1106F Exclusion
+11066 11075 Exclusion
1107F 110BA Exclusion
110BB 110C1 Exclusion Not_XID
+110C2 Exclusion
110CD Exclusion Not_XID
110D0 110E8 Exclusion
110F0 110F9 Exclusion
@@ -1273,7 +1300,7 @@ FFF9 FFFD Not_XID
11200 11211 Exclusion
11213 11237 Exclusion
11238 1123D Exclusion Not_XID
-1123E Exclusion
+1123E 11241 Exclusion
11280 11286 Exclusion
11288 Exclusion
1128A 1128D Exclusion
@@ -1321,11 +1348,13 @@ FFF9 FFFD Not_XID
11650 11659 Exclusion
11660 1166C Exclusion Not_XID
11680 116B8 Exclusion
+116B9 Exclusion Not_XID
116C0 116C9 Exclusion
11700 1171A Exclusion
1171D 1172B Exclusion
11730 11739 Exclusion
1173A 1173F Exclusion Not_XID
+11740 11746 Exclusion
11800 1183A Exclusion
1183B Exclusion Not_XID
118A0 118E9 Exclusion
@@ -1351,7 +1380,9 @@ FFF9 FFFD Not_XID
11A9A 11A9C Exclusion Not_XID
11A9D Exclusion
11A9E 11AA2 Exclusion Not_XID
+11AB0 11ABF Limited_Use
11AC0 11AF8 Exclusion
+11B00 11B09 Not_XID
11C00 11C08 Exclusion
11C0A 11C36 Exclusion
11C38 11C40 Exclusion
@@ -1377,6 +1408,11 @@ FFF9 FFFD Not_XID
11DA0 11DA9 Limited_Use
11EE0 11EF6 Exclusion
11EF7 11EF8 Exclusion Not_XID
+11F00 11F10 Exclusion
+11F12 11F3A Exclusion
+11F3E 11F42 Exclusion
+11F43 11F4F Exclusion Not_XID
+11F50 11F59 Exclusion
11FB0 Limited_Use
11FC0 11FF1 Not_XID
11FFF Not_XID
@@ -1384,13 +1420,18 @@ FFF9 FFFD Not_XID
12400 1246E Exclusion
12470 12474 Exclusion Not_XID
12480 12543 Exclusion
-13000 1342E Exclusion
-13430 13438 Exclusion Not_XID
+12F90 12FF0 Exclusion
+12FF1 12FF2 Exclusion Not_XID
+13000 1342F Exclusion
+13430 1343F Exclusion Not_XID
+13440 13455 Exclusion
14400 14646 Exclusion
16800 16A38 Limited_Use
16A40 16A5E Uncommon_Use Exclusion
16A60 16A69 Uncommon_Use Exclusion
16A6E 16A6F Exclusion Not_XID
+16A70 16ABE Exclusion
+16AC0 16AC9 Exclusion
16AD0 16AED Exclusion
16AF0 16AF4 Exclusion
16AF5 Exclusion Not_XID
@@ -1415,8 +1456,14 @@ FFF9 FFFD Not_XID
17000 187F7 Exclusion
18800 18CD5 Exclusion
18D00 18D08 Exclusion
+1AFF0 1AFF3 Uncommon_Use
+1AFF5 1AFFB Uncommon_Use
+1AFFD 1AFFE Uncommon_Use
1B000 1B11E Obsolete
+1B11F 1B122 Recommended
+1B132 Recommended
1B150 1B152 Recommended
+1B155 Recommended
1B164 1B167 Recommended
1B170 1B2FB Exclusion
1BC00 1BC6A Exclusion
@@ -1427,6 +1474,9 @@ FFF9 FFFD Not_XID
1BC9D 1BC9E Exclusion
1BC9F Exclusion Not_XID
1BCA0 1BCA3 Default_Ignorable
+1CF00 1CF2D Technical
+1CF30 1CF46 Technical
+1CF50 1CFC3 Technical Not_XID
1D000 1D0F5 Technical Not_XID
1D100 1D126 Technical Not_XID
1D129 1D15D Technical Not_XID
@@ -1444,9 +1494,11 @@ FFF9 FFFD Not_XID
1D1BB 1D1C0 Not_NFKC
1D1C1 1D1DD Technical Not_XID
1D1DE 1D1E8 Uncommon_Use Technical Not_XID
+1D1E9 1D1EA Technical Not_XID
1D200 1D241 Obsolete Not_XID
1D242 1D244 Technical Obsolete
1D245 Obsolete Not_XID
+1D2C0 1D2D3 Not_XID
1D2E0 1D2F3 Not_XID
1D300 1D356 Technical Not_XID
1D360 1D378 Not_XID
@@ -1482,18 +1534,28 @@ FFF9 FFFD Not_XID
1DA85 1DA8B Exclusion Not_XID
1DA9B 1DA9F Exclusion
1DAA1 1DAAF Exclusion
+1DF00 1DF1E Recommended
+1DF25 1DF2A Recommended
1E000 1E006 Exclusion
1E008 1E018 Exclusion
1E01B 1E021 Exclusion
1E023 1E024 Exclusion
1E026 1E02A Exclusion
+1E030 1E06D Not_NFKC
+1E08F Recommended
1E100 1E12C Limited_Use
1E130 1E13D Limited_Use
1E140 1E149 Limited_Use
1E14E Limited_Use
1E14F Limited_Use Not_XID
+1E290 1E2AE Exclusion
1E2C0 1E2F9 Limited_Use
1E2FF Limited_Use Not_XID
+1E4D0 1E4F9 Exclusion
+1E7E0 1E7E6 Recommended
+1E7E8 1E7EB Recommended
+1E7ED 1E7EE Recommended
+1E7F0 1E7FE Recommended
1E800 1E8C4 Exclusion
1E8C7 1E8CF Exclusion Not_XID
1E8D0 1E8D6 Exclusion
@@ -1561,38 +1623,38 @@ FFF9 FFFD Not_XID
1F300 1F54E Not_XID
1F54F Uncommon_Use Not_XID
1F550 1F6D7 Not_XID
-1F6E0 1F6EC Not_XID
+1F6DC 1F6EC Not_XID
1F6F0 1F6FC Not_XID
-1F700 1F773 Not_XID
-1F780 1F7D8 Not_XID
+1F700 1F776 Not_XID
+1F77B 1F7D9 Not_XID
1F7E0 1F7EB Not_XID
+1F7F0 Not_XID
1F800 1F80B Not_XID
1F810 1F847 Not_XID
1F850 1F859 Not_XID
1F860 1F887 Not_XID
1F890 1F8AD Not_XID
1F8B0 1F8B1 Not_XID
-1F900 1F978 Not_XID
-1F97A 1F9CB Not_XID
-1F9CD 1FA53 Not_XID
+1F900 1FA53 Not_XID
1FA60 1FA6D Not_XID
-1FA70 1FA74 Not_XID
-1FA78 1FA7A Not_XID
-1FA80 1FA86 Not_XID
-1FA90 1FAA8 Not_XID
-1FAB0 1FAB6 Not_XID
-1FAC0 1FAC2 Not_XID
-1FAD0 1FAD6 Not_XID
+1FA70 1FA7C Not_XID
+1FA80 1FA88 Not_XID
+1FA90 1FABD Not_XID
+1FABF 1FAC5 Not_XID
+1FACE 1FADB Not_XID
+1FAE0 1FAE8 Not_XID
+1FAF0 1FAF8 Not_XID
1FB00 1FB92 Not_XID
1FB94 1FBCA Not_XID
1FBF0 1FBF9 Not_NFKC
-20000 2A6DD Recommended
-2A700 2B734 Recommended
+20000 2A6DF Recommended
+2A700 2B739 Recommended
2B740 2B81D Recommended
2B820 2CEA1 Recommended
2CEB0 2EBE0 Recommended
2F800 2FA1D Not_NFKC
30000 3134A Recommended
+31350 323AF Recommended
E0001 Deprecated
E0020 E007F Default_Ignorable
E0100 E01EF Default_Ignorable
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Identifi.pl b/Master/tlpkg/tlperl/lib/unicore/To/Identifi.pl
index 1f2bb0f6f12..ae09174c37a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Identifi.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Identifi.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -85,9 +85,11 @@ F8 131 Allowed
6E5 6E6 Allowed
6EE 6FF Allowed
750 7B1 Allowed
+870 887 Allowed
+889 88E Allowed
8A0 8AC Allowed
8B2 Allowed
-8B6 8C7 Allowed
+8B5 8C9 Allowed
901 94D Allowed
94F 950 Allowed
956 957 Allowed
@@ -172,10 +174,11 @@ C0E C10 Allowed
C12 C28 Allowed
C2A C33 Allowed
C35 C39 Allowed
-C3D C44 Allowed
+C3C C44 Allowed
C46 C48 Allowed
C4A C4D Allowed
C55 C56 Allowed
+C5D Allowed
C60 C61 Allowed
C66 C6F Allowed
C80 Allowed
@@ -189,9 +192,10 @@ CBC CC4 Allowed
CC6 CC8 Allowed
CCA CCD Allowed
CD5 CD6 Allowed
+CDD Allowed
CE0 CE3 Allowed
CE6 CEF Allowed
-CF1 CF2 Allowed
+CF1 CF3 Allowed
D00 Allowed
D02 D03 Allowed
D05 D0C Allowed
@@ -230,7 +234,7 @@ EA7 EB2 Allowed
EB4 EBD Allowed
EC0 EC4 Allowed
EC6 Allowed
-EC8 ECD Allowed
+EC8 ECE Allowed
ED0 ED9 Allowed
EDE EDF Allowed
F00 Allowed
@@ -287,7 +291,8 @@ FC6 Allowed
1780 17A2 Allowed
17A5 17A7 Allowed
17A9 17B3 Allowed
-17B6 17CA Allowed
+17B6 17CD Allowed
+17D0 Allowed
17D2 Allowed
17D7 Allowed
17DC Allowed
@@ -328,7 +333,6 @@ FC6 Allowed
1FF6 1FF8 Allowed
1FFA Allowed
1FFC Allowed
-200C 200D Allowed
2010 Allowed
2019 Allowed
2027 Allowed
@@ -352,7 +356,7 @@ FC6 Allowed
312F Allowed
31A0 31BF Allowed
3400 4DBF Allowed
-4E00 9FFC Allowed
+4E00 9FFF Allowed
A67F Allowed
A717 A71F Allowed
A788 Allowed
@@ -361,7 +365,10 @@ A792 A793 Allowed
A7AA Allowed
A7AE Allowed
A7B8 A7B9 Allowed
-A7C2 A7CA Allowed
+A7C0 A7CA Allowed
+A7D0 A7D1 Allowed
+A7D3 Allowed
+A7D5 A7D9 Allowed
A9E7 A9FE Allowed
AA60 AA76 Allowed
AA7A AA7F Allowed
@@ -383,12 +390,23 @@ FA27 FA29 Allowed
11303 Allowed
1133B 1133C Allowed
16FF0 16FF1 Allowed
+1B11F 1B122 Allowed
+1B132 Allowed
1B150 1B152 Allowed
+1B155 Allowed
1B164 1B167 Allowed
-20000 2A6DD Allowed
-2A700 2B734 Allowed
+1DF00 1DF1E Allowed
+1DF25 1DF2A Allowed
+1E08F Allowed
+1E7E0 1E7E6 Allowed
+1E7E8 1E7EB Allowed
+1E7ED 1E7EE Allowed
+1E7F0 1E7FE Allowed
+20000 2A6DF Allowed
+2A700 2B739 Allowed
2B740 2B81D Allowed
2B820 2CEA1 Allowed
2CEB0 2EBE0 Allowed
30000 3134A Allowed
+31350 323AF Allowed
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/InPC.pl b/Master/tlpkg/tlperl/lib/unicore/To/InPC.pl
index 52501dcb768..fac72215515 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/InPC.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/InPC.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -33,7 +33,7 @@ return <<'END';
94F Right
951 Top
952 Bottom
-953 955 Top
+955 Top
956 957 Bottom
962 963 Bottom
981 Top
@@ -102,6 +102,7 @@ BD7 Right
C00 Top
C01 C03 Right
C04 Top
+C3C Bottom
C3E C40 Top
C41 C44 Right
C46 C47 Top
@@ -123,6 +124,7 @@ CCA CCB Top_And_Right
CCC CCD Top
CD5 CD6 Right
CE2 CE3 Bottom
+CF3 Right
D00 D01 Top
D02 D03 Right
D3B D3C Top
@@ -165,7 +167,7 @@ EB8 EBA Bottom
EBB Top
EBC Bottom
EC0 EC4 Visual_Order_Left
-EC8 ECD Top
+EC8 ECE Top
F18 F19 Bottom
F35 Bottom
F37 Bottom
@@ -215,8 +217,10 @@ FC6 Bottom
109D Top
1712 Top
1713 1714 Bottom
+1715 Right
1732 Top
-1733 1734 Bottom
+1733 Bottom
+1734 Right
1752 Top
1753 Bottom
1772 Top
@@ -345,6 +349,7 @@ A8C4 Bottom
A8C5 Top
A8E0 A8F1 Top
A8FF Top
+A926 A92A Top
A92B A92D Bottom
A947 A949 Bottom
A94A Top
@@ -418,6 +423,8 @@ ABED Bottom
11038 1103B Top
1103C 11041 Bottom
11042 11046 Top
+11070 Top
+11073 11074 Top
11080 11081 Top
11082 Right
110B0 Right
@@ -427,6 +434,7 @@ ABED Bottom
110B5 110B6 Top
110B7 110B8 Right
110B9 110BA Bottom
+110C2 Bottom
11100 11102 Top
11127 11129 Top
1112A 1112B Bottom
@@ -461,6 +469,7 @@ ABED Bottom
11235 Right
11236 11237 Top
1123E Top
+11241 Bottom
112DF Top
112E0 Right
112E1 Left
@@ -622,4 +631,12 @@ ABED Bottom
11EF4 Bottom
11EF5 Left
11EF6 Right
+11F00 11F02 Top
+11F03 Right
+11F34 11F35 Right
+11F36 11F37 Top
+11F38 11F3A Bottom
+11F3E 11F3F Left
+11F40 Top
+11F41 Right
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/InSC.pl b/Master/tlpkg/tlperl/lib/unicore/To/InSC.pl
index 1c7cb8b328a..9dff9c51c00 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/InSC.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/InSC.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -108,7 +108,9 @@ AE0 AE1 Vowel_Independent
AE2 AE3 Vowel_Dependent
AE6 AEF Number
AF9 Consonant
-AFA AFC Cantillation_Mark
+AFA Cantillation_Mark
+AFB Gemination_Mark
+AFC Cantillation_Mark
AFD AFF Nukta
B01 B02 Bindu
B03 Visarga
@@ -158,6 +160,7 @@ C0E C10 Vowel_Independent
C12 C14 Vowel_Independent
C15 C28 Consonant
C2A C39 Consonant
+C3C Nukta
C3D Avagraha
C3E C44 Vowel_Dependent
C46 C48 Vowel_Dependent
@@ -165,6 +168,7 @@ C4A C4C Vowel_Dependent
C4D Virama
C55 C56 Vowel_Dependent
C58 C5A Consonant
+C5D Consonant_Dead
C60 C61 Vowel_Independent
C62 C63 Vowel_Dependent
C66 C6F Number
@@ -183,11 +187,13 @@ CC6 CC8 Vowel_Dependent
CCA CCC Vowel_Dependent
CCD Virama
CD5 CD6 Vowel_Dependent
+CDD Consonant_Dead
CDE Consonant
CE0 CE1 Vowel_Independent
CE2 CE3 Vowel_Dependent
CE6 CEF Number
CF1 CF2 Consonant_With_Stacker
+CF3 Bindu
D00 D02 Bindu
D03 Visarga
D04 Bindu
@@ -244,6 +250,7 @@ EBC EBD Consonant_Medial
EC0 EC4 Vowel_Dependent
EC8 ECB Tone_Mark
ECD Bindu
+ECE Syllable_Modifier
ED0 ED9 Number
EDC EDF Consonant
F20 F33 Number
@@ -299,10 +306,10 @@ FC6 Syllable_Modifier
109A 109B Tone_Mark
109C 109D Vowel_Dependent
1700 1702 Vowel_Independent
-1703 170C Consonant
-170E 1711 Consonant
+1703 1711 Consonant
1712 1713 Vowel_Dependent
-1714 Pure_Killer
+1714 1715 Pure_Killer
+171F Consonant
1720 1722 Vowel_Independent
1723 1731 Consonant
1732 1733 Vowel_Dependent
@@ -369,17 +376,17 @@ FC6 Syllable_Modifier
1A80 1A89 Number
1A90 1A99 Number
1B00 1B02 Bindu
-1B03 Consonant_Succeeding_Repha
+1B03 Consonant_Final
1B04 Visarga
1B05 1B12 Vowel_Independent
1B13 1B33 Consonant
1B34 Nukta
1B35 1B43 Vowel_Dependent
1B44 Virama
-1B45 1B4B Consonant
+1B45 1B4C Consonant
1B50 1B59 Number
1B80 Bindu
-1B81 Consonant_Succeeding_Repha
+1B81 Consonant_Final
1B82 Visarga
1B83 1B89 Vowel_Independent
1B8A 1BA0 Consonant
@@ -463,7 +470,7 @@ A947 A94E Vowel_Dependent
A94F A952 Consonant_Final
A953 Pure_Killer
A980 A981 Bindu
-A982 Consonant_Succeeding_Repha
+A982 Consonant_Final
A983 Visarga
A984 A988 Vowel_Independent
A989 A98B Consonant
@@ -532,6 +539,10 @@ ABF0 ABF9 Number
11046 Virama
11052 11065 Brahmi_Joining_Number
11066 1106F Number
+11070 Pure_Killer
+11071 11072 Vowel_Independent
+11073 11074 Vowel_Dependent
+11075 Consonant
1107F Number_Joiner
11080 11081 Bindu
11082 Visarga
@@ -540,6 +551,7 @@ ABF0 ABF9 Number
110B0 110B8 Vowel_Dependent
110B9 Virama
110BA Nukta
+110C2 Vowel_Dependent
11100 11101 Bindu
11102 Visarga
11103 11106 Vowel_Independent
@@ -578,6 +590,9 @@ ABF0 ABF9 Number
11236 Nukta
11237 Gemination_Mark
1123E Cantillation_Mark
+1123F Consonant
+11240 Vowel_Independent
+11241 Vowel_Dependent
11280 11283 Vowel_Independent
11284 11286 Consonant
11288 Consonant
@@ -665,6 +680,7 @@ ABF0 ABF9 Number
11720 1172A Vowel_Dependent
1172B Pure_Killer
11730 1173B Number
+11740 11746 Consonant
11800 11809 Vowel_Independent
1180A 1182B Consonant
1182C 11836 Vowel_Dependent
@@ -766,4 +782,14 @@ ABF0 ABF9 Number
11EE0 11EF1 Consonant
11EF2 Consonant_Placeholder
11EF3 11EF6 Vowel_Dependent
+11F00 11F01 Bindu
+11F02 Consonant_Preceding_Repha
+11F03 Visarga
+11F04 11F10 Vowel_Independent
+11F12 11F33 Consonant
+11F34 11F3A Vowel_Dependent
+11F3E 11F40 Vowel_Dependent
+11F41 Pure_Killer
+11F42 Invisible_Stacker
+11F50 11F59 Number
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Isc.pl b/Master/tlpkg/tlperl/lib/unicore/To/Isc.pl
index c9d9a6d0f44..6826a07a7ac 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Isc.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Isc.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -14,7 +14,7 @@
# the main body of the table, and what all code points missing from this file
# map to.
$Unicode::UCD::SwashInfo{'ToIsc'}{'format'} = 'd'; # single decimal digit
-$Unicode::UCD::SwashInfo{'ToIsc'}{'missing'} = ''; # code point maps to the null string
+$Unicode::UCD::SwashInfo{'ToIsc'}{'missing'} = ''; # code point maps to the empty string
return <<'END';
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Jg.pl b/Master/tlpkg/tlperl/lib/unicore/To/Jg.pl
index b5b26e402a2..ab615e0e373 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Jg.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Jg.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -154,6 +154,13 @@ return <<'END';
868 Malayalam_Lla
869 Malayalam_Llla
86A Malayalam_Ssa
+870 882 Alef
+886 Thin_Yeh
+889 Noon
+88A Hah
+88B 88C Tah
+88D Gaf
+88E Vertical_Tail
8A0 8A1 Beh
8A2 Hah
8A3 Tah
@@ -172,6 +179,7 @@ return <<'END';
8B2 Reh
8B3 Ain
8B4 Kaf
+8B5 Qaf
8B6 8B8 Beh
8B9 Reh
8BA Yeh
@@ -185,6 +193,7 @@ return <<'END';
8C4 African_Qaf
8C5 8C6 Hah
8C7 Lam
+8C8 Gaf
10AC0 Manichaean_Aleph
10AC1 10AC2 Manichaean_Beth
10AC3 10AC4 Manichaean_Gimel
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Jt.pl b/Master/tlpkg/tlperl/lib/unicore/To/Jt.pl
index 1b7beef77a6..0c1614b8612 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Jt.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Jt.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -14,7 +14,7 @@
# the main body of the table, and what all code points missing from this file
# map to.
$Unicode::UCD::SwashInfo{'ToJt'}{'format'} = 's'; # string
-$Unicode::UCD::SwashInfo{'ToJt'}{'missing'} = 'Non_Joining';
+$Unicode::UCD::SwashInfo{'ToJt'}{'missing'} = 'U';
return <<'END';
AD T
@@ -117,16 +117,21 @@ AD T
867 R
868 D
869 86A R
+870 882 R
+883 885 C
+886 D
+889 88D D
+88E R
+898 89F T
8A0 8A9 D
8AA 8AC R
8AE R
8AF 8B0 D
8B1 8B2 R
-8B3 8B4 D
-8B6 8B8 D
+8B3 8B8 D
8B9 R
-8BA 8C7 D
-8D3 8E1 T
+8BA 8C8 D
+8CA 8E1 T
8E3 902 T
93A T
93C T
@@ -167,6 +172,7 @@ BC0 T
BCD T
C00 T
C04 T
+C3C T
C3E C40 T
C46 C48 T
C4A C4D T
@@ -192,7 +198,7 @@ E34 E3A T
E47 E4E T
EB1 T
EB4 EBC T
-EC8 ECD T
+EC8 ECE T
F18 F19 T
F35 T
F37 T
@@ -216,7 +222,7 @@ FC6 T
109D T
135D 135F T
1712 1714 T
-1732 1734 T
+1732 1733 T
1752 1753 T
1772 1773 T
17B4 17B5 T
@@ -227,6 +233,7 @@ FC6 T
1807 D
180A C
180B 180D T
+180F T
1820 1878 D
1885 1886 T
1887 18A8 D
@@ -245,7 +252,7 @@ FC6 T
1A65 1A6C T
1A73 1A7C T
1A7F T
-1AB0 1AC0 T
+1AB0 1ACE T
1B00 1B03 T
1B34 T
1B36 1B3A T
@@ -268,8 +275,7 @@ FC6 T
1CED T
1CF4 T
1CF8 1CF9 T
-1DC0 1DF9 T
-1DFB 1DFF T
+1DC0 1DFF T
200B T
200D C
200E 200F T
@@ -368,12 +374,17 @@ FFF9 FFFB T
10D23 D
10D24 10D27 T
10EAB 10EAC T
+10EFD 10EFF T
10F30 10F32 D
10F33 R
10F34 10F44 D
10F46 10F50 T
10F51 10F53 D
10F54 R
+10F70 10F73 D
+10F74 10F75 R
+10F76 10F81 D
+10F82 10F85 T
10FB0 D
10FB2 10FB3 D
10FB4 10FB6 R
@@ -390,9 +401,12 @@ FFF9 FFFB T
10FCB L
11001 T
11038 11046 T
+11070 T
+11073 11074 T
1107F 11081 T
110B3 110B6 T
110B9 110BA T
+110C2 T
11100 11102 T
11127 1112B T
1112D 11134 T
@@ -405,6 +419,7 @@ FFF9 FFFB T
11234 T
11236 11237 T
1123E T
+11241 T
112DF T
112E3 112EA T
11300 11301 T
@@ -466,7 +481,12 @@ FFF9 FFFB T
11D95 T
11D97 T
11EF3 11EF4 T
-13430 13438 T
+11F00 11F01 T
+11F36 11F3A T
+11F40 T
+11F42 T
+13430 13440 T
+13447 13455 T
16AF0 16AF4 T
16B30 16B36 T
16F4F T
@@ -474,6 +494,8 @@ FFF9 FFFB T
16FE4 T
1BC9D 1BC9E T
1BCA0 1BCA3 T
+1CF00 1CF2D T
+1CF30 1CF46 T
1D167 1D169 T
1D173 1D182 T
1D185 1D18B T
@@ -490,8 +512,11 @@ FFF9 FFFB T
1E01B 1E021 T
1E023 1E024 T
1E026 1E02A T
+1E08F T
1E130 1E136 T
+1E2AE T
1E2EC 1E2EF T
+1E4EC 1E4EF T
1E8D0 1E8D6 T
1E900 1E943 D
1E944 1E94B T
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Lb.pl b/Master/tlpkg/tlperl/lib/unicore/To/Lb.pl
index d2ef7131902..fd5a8e8d815 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Lb.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Lb.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -14,7 +14,7 @@
# the main body of the table, and what all code points missing from this file
# map to.
$Unicode::UCD::SwashInfo{'ToLb'}{'format'} = 's'; # string
-$Unicode::UCD::SwashInfo{'ToLb'}{'missing'} = 'Unknown';
+$Unicode::UCD::SwashInfo{'ToLb'}{'missing'} = 'XX';
return <<'END';
0 8 CM
@@ -135,7 +135,7 @@ F8 2C6 AL
610 61A CM
61B EX
61C CM
-61E 61F EX
+61D 61F EX
620 64A AL
64B 65F CM
660 669 NU
@@ -185,9 +185,11 @@ F8 2C6 AL
859 85B CM
85E AL
860 86A AL
-8A0 8B4 AL
-8B6 8C7 AL
-8D3 8E1 CM
+870 88E AL
+890 891 AL
+898 89F CM
+8A0 8C9 AL
+8CA 8E1 CM
8E2 AL
8E3 903 CM
904 939 AL
@@ -310,12 +312,14 @@ C05 C0C AL
C0E C10 AL
C12 C28 AL
C2A C39 AL
+C3C CM
C3D AL
C3E C44 CM
C46 C48 CM
C4A C4D CM
C55 C56 CM
C58 C5A AL
+C5D AL
C60 C61 AL
C62 C63 CM
C66 C6F NU
@@ -334,11 +338,12 @@ CBE CC4 CM
CC6 CC8 CM
CCA CCD CM
CD5 CD6 CM
-CDE AL
+CDD CDE AL
CE0 CE1 AL
CE2 CE3 CM
CE6 CEF NU
CF1 CF2 AL
+CF3 CM
D00 D03 CM
D04 D0C AL
D0E D10 AL
@@ -384,7 +389,7 @@ EA5 SA
EA7 EBD SA
EC0 EC4 SA
EC6 SA
-EC8 ECD SA
+EC8 ECE SA
ED0 ED9 NU
EDC EDF SA
F00 AL
@@ -481,10 +486,9 @@ FD9 FDA GL
16A0 16EA AL
16EB 16ED BA
16EE 16F8 AL
-1700 170C AL
-170E 1711 AL
-1712 1714 CM
-1720 1731 AL
+1700 1711 AL
+1712 1715 CM
+171F 1731 AL
1732 1734 CM
1735 1736 BA
1740 1751 AL
@@ -512,6 +516,7 @@ FD9 FDA GL
180A AL
180B 180D CM
180E GL
+180F CM
1810 1819 NU
1820 1878 AL
1880 1884 AL
@@ -542,11 +547,11 @@ FD9 FDA GL
1A80 1A89 NU
1A90 1A99 NU
1AA0 1AAD SA
-1AB0 1AC0 CM
+1AB0 1ACE CM
1B00 1B04 CM
1B05 1B33 AL
1B34 1B44 CM
-1B45 1B4B AL
+1B45 1B4C AL
1B50 1B59 NU
1B5A 1B5B BA
1B5C AL
@@ -554,6 +559,7 @@ FD9 FDA GL
1B61 1B6A AL
1B6B 1B73 CM
1B74 1B7C AL
+1B7D 1B7E BA
1B80 1B82 CM
1B83 1BA0 AL
1BA1 1BAD CM
@@ -583,8 +589,11 @@ FD9 FDA GL
1CF7 1CF9 CM
1CFA AL
1D00 1DBF AL
-1DC0 1DF9 CM
-1DFB 1DFF CM
+1DC0 1DCC CM
+1DCD GL
+1DCE 1DFB CM
+1DFC GL
+1DFD 1DFF CM
1E00 1F15 AL
1F18 1F1D AL
1F20 1F45 AL
@@ -640,7 +649,7 @@ FD9 FDA GL
2047 2049 NS
204A 2055 AL
2056 BA
-2057 AL
+2057 PO
2058 205B BA
205C AL
205D 205F BA
@@ -667,7 +676,9 @@ FD9 FDA GL
20BB PO
20BC 20BD PR
20BE PO
-20BF 20CF PR
+20BF PR
+20C0 PO
+20C1 20CF PR
20D0 20F0 CM
2100 2102 AL
2103 PO
@@ -947,9 +958,7 @@ FD9 FDA GL
2B55 2B59 AI
2B5A 2B73 AL
2B76 2B95 AL
-2B97 2C2E AL
-2C30 2C5E AL
-2C60 2CEE AL
+2B97 2CEE AL
2CEF 2CF1 CM
2CF2 2CF3 AL
2CF9 EX
@@ -1010,6 +1019,16 @@ FD9 FDA GL
2E4D AL
2E4E 2E4F BA
2E50 2E52 AL
+2E53 2E54 EX
+2E55 OP
+2E56 CL
+2E57 OP
+2E58 CL
+2E59 OP
+2E5A CL
+2E5B OP
+2E5C CL
+2E5D BA
2E80 2E99 ID
2E9B 2EF3 ID
2F00 2FD5 ID
@@ -1131,9 +1150,11 @@ A6A0 A6EF AL
A6F0 A6F1 CM
A6F2 AL
A6F3 A6F7 BA
-A700 A7BF AL
-A7C2 A7CA AL
-A7F5 A801 AL
+A700 A7CA AL
+A7D0 A7D1 AL
+A7D3 AL
+A7D5 A7D9 AL
+A7F2 A801 AL
A802 CM
A803 A805 AL
A806 CM
@@ -2020,15 +2041,16 @@ FB3E HL
FB40 FB41 HL
FB43 FB44 HL
FB46 FB4F HL
-FB50 FBC1 AL
+FB50 FBC2 AL
FBD3 FD3D AL
FD3E CL
FD3F OP
-FD50 FD8F AL
+FD40 FD8F AL
FD92 FDC7 AL
+FDCF AL
FDF0 FDFB AL
FDFC PO
-FDFD AL
+FDFD FDFF AL
FE00 FE0F CM
FE10 IS
FE11 FE12 CL
@@ -2159,10 +2181,20 @@ FFFD AI
104D8 104FB AL
10500 10527 AL
10530 10563 AL
-1056F AL
+1056F 1057A AL
+1057C 1058A AL
+1058C 10592 AL
+10594 10595 AL
+10597 105A1 AL
+105A3 105B1 AL
+105B3 105B9 AL
+105BB 105BC AL
10600 10736 AL
10740 10755 AL
10760 10767 AL
+10780 10785 AL
+10787 107B0 AL
+107B2 107BA AL
10800 10805 AL
10808 AL
1080A 10835 AL
@@ -2216,10 +2248,14 @@ FFFD AI
10EAB 10EAC CM
10EAD BA
10EB0 10EB1 AL
+10EFD 10EFF CM
10F00 10F27 AL
10F30 10F45 AL
10F46 10F50 CM
10F51 10F59 AL
+10F70 10F81 AL
+10F82 10F85 CM
+10F86 10F89 AL
10FB0 10FCB AL
10FE0 10FF6 AL
11000 11002 CM
@@ -2229,11 +2265,16 @@ FFFD AI
11049 1104D AL
11052 11065 AL
11066 1106F NU
+11070 CM
+11071 11072 AL
+11073 11074 CM
+11075 AL
1107F 11082 CM
11083 110AF AL
110B0 110BA CM
110BB 110BD AL
110BE 110C1 BA
+110C2 CM
110CD AL
110D0 110E8 AL
110F0 110F9 NU
@@ -2274,6 +2315,8 @@ FFFD AI
1123B 1123C BA
1123D AL
1123E CM
+1123F 11240 AL
+11241 CM
11280 11286 AL
11288 AL
1128A 1128D AL
@@ -2333,14 +2376,14 @@ FFFD AI
11660 1166C BB
11680 116AA AL
116AB 116B7 CM
-116B8 AL
+116B8 116B9 AL
116C0 116C9 NU
11700 1171A SA
1171D 1172B SA
11730 11739 NU
1173A 1173B SA
1173C 1173E BA
-1173F SA
+1173F 11746 SA
11800 1182B AL
1182C 1183A CM
1183B AL
@@ -2389,7 +2432,8 @@ FFFD AI
11A9D AL
11A9E 11AA0 BB
11AA1 11AA2 BA
-11AC0 11AF8 AL
+11AB0 11AF8 AL
+11B00 11B09 BB
11C00 11C08 AL
11C0A 11C2E AL
11C2F 11C36 CM
@@ -2424,6 +2468,16 @@ FFFD AI
11EE0 11EF2 AL
11EF3 11EF6 CM
11EF7 11EF8 AL
+11F00 11F01 CM
+11F02 AL
+11F03 CM
+11F04 11F10 AL
+11F12 11F33 AL
+11F34 11F3A CM
+11F3E 11F42 CM
+11F43 11F44 BA
+11F45 11F4F ID
+11F50 11F59 NU
11FB0 AL
11FC0 11FDC AL
11FDD 11FE0 PO
@@ -2433,6 +2487,7 @@ FFFD AI
12400 1246E AL
12470 12474 BA
12480 12543 AL
+12F90 12FF2 AL
13000 13257 AL
13258 1325A OP
1325B 1325D CL
@@ -2446,10 +2501,18 @@ FFFD AI
1328A 13378 AL
13379 OP
1337A 1337B CL
-1337C 1342E AL
+1337C 1342F AL
13430 13436 GL
13437 OP
13438 CL
+13439 1343B GL
+1343C OP
+1343D CL
+1343E OP
+1343F CL
+13440 CM
+13441 13446 AL
+13447 13455 CM
14400 145CD AL
145CE OP
145CF CL
@@ -2458,6 +2521,8 @@ FFFD AI
16A40 16A5E AL
16A60 16A69 NU
16A6E 16A6F BA
+16A70 16ABE AL
+16AC0 16AC9 NU
16AD0 16AED AL
16AF0 16AF4 CM
16AF5 BA
@@ -2487,8 +2552,13 @@ FFFD AI
18800 18AFF ID
18B00 18CD5 AL
18D00 18D08 ID
-1B000 1B11E ID
+1AFF0 1AFF3 AL
+1AFF5 1AFFB AL
+1AFFD 1AFFE AL
+1B000 1B122 ID
+1B132 CJ
1B150 1B152 CJ
+1B155 CJ
1B164 1B167 CJ
1B170 1B2FB ID
1BC00 1BC6A AL
@@ -2499,6 +2569,9 @@ FFFD AI
1BC9D 1BC9E CM
1BC9F BA
1BCA0 1BCA3 CM
+1CF00 1CF2D CM
+1CF30 1CF46 CM
+1CF50 1CFC3 AL
1D000 1D0F5 AL
1D100 1D126 AL
1D129 1D164 AL
@@ -2509,10 +2582,11 @@ FFFD AI
1D185 1D18B CM
1D18C 1D1A9 AL
1D1AA 1D1AD CM
-1D1AE 1D1E8 AL
+1D1AE 1D1EA AL
1D200 1D241 AL
1D242 1D244 CM
1D245 AL
+1D2C0 1D2D3 AL
1D2E0 1D2F3 AL
1D300 1D356 AL
1D360 1D378 AL
@@ -2550,20 +2624,33 @@ FFFD AI
1DA8B AL
1DA9B 1DA9F CM
1DAA1 1DAAF CM
+1DF00 1DF1E AL
+1DF25 1DF2A AL
1E000 1E006 CM
1E008 1E018 CM
1E01B 1E021 CM
1E023 1E024 CM
1E026 1E02A CM
+1E030 1E06D AL
+1E08F CM
1E100 1E12C AL
1E130 1E136 CM
1E137 1E13D AL
1E140 1E149 NU
1E14E 1E14F AL
+1E290 1E2AD AL
+1E2AE CM
1E2C0 1E2EB AL
1E2EC 1E2EF CM
1E2F0 1E2F9 NU
1E2FF PR
+1E4D0 1E4EB AL
+1E4EC 1E4EF CM
+1E4F0 1E4F9 NU
+1E7E0 1E7E6 AL
+1E7E8 1E7EB AL
+1E7ED 1E7EE AL
+1E7F0 1E7FE AL
1E800 1E8C4 AL
1E8C7 1E8CF AL
1E8D0 1E8D6 CM
@@ -2742,7 +2829,11 @@ FFFD AI
1F9D1 1F9DD EB
1F9DE 1F9FF ID
1FA00 1FA53 AL
-1FA54 1FAFF ID
+1FA54 1FAC2 ID
+1FAC3 1FAC5 EB
+1FAC6 1FAEF ID
+1FAF0 1FAF8 EB
+1FAF9 1FAFF ID
1FB00 1FB92 AL
1FB94 1FBCA AL
1FBF0 1FBF9 NU
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Lc.pl b/Master/tlpkg/tlperl/lib/unicore/To/Lc.pl
index 809c580eb76..b352454f1a4 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Lc.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Lc.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -498,7 +498,7 @@ D8 DE F8
2160 216F 2170
2183 2184
24B6 24CF 24D0
-2C00 2C2E 2C30
+2C00 2C2F 2C30
2C60 2C61
2C62 26B
2C63 1D7D
@@ -678,16 +678,24 @@ A7B8 A7B9
A7BA A7BB
A7BC A7BD
A7BE A7BF
+A7C0 A7C1
A7C2 A7C3
A7C4 A794
A7C5 282
A7C6 1D8E
A7C7 A7C8
A7C9 A7CA
+A7D0 A7D1
+A7D6 A7D7
+A7D8 A7D9
A7F5 A7F6
FF21 FF3A FF41
10400 10427 10428
104B0 104D3 104D8
+10570 1057A 10597
+1057C 1058A 105A3
+1058C 10592 105B3
+10594 10595 105BB
10C80 10CB2 10CC0
118A0 118BF 118C0
16E40 16E5F 16E60
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Lower.pl b/Master/tlpkg/tlperl/lib/unicore/To/Lower.pl
deleted file mode 100644
index 7bdaea94d64..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/To/Lower.pl
+++ /dev/null
@@ -1,1428 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
-
-# !!!!!!! IT IS DEPRECATED TO USE THIS FILE !!!!!!!
-
-# This file is for internal use by core Perl only. It is retained for
-# backwards compatibility with applications that may have come to rely on it,
-# but its format and even its name or existence are subject to change without
-# notice in a future Perl version. Don't use it directly. Instead, its
-# contents are now retrievable through a stable API in the Unicode::UCD
-# module: Unicode::UCD::prop_invmap('Lowercase_Mapping') (Values for individual
-# code points can be retrieved via Unicode::UCD::charprop());
-
-
-
-# The name this table is to be known by, with the format of the mappings in
-# the main body of the table, and what all code points missing from this file
-# map to.
-$Unicode::UCD::SwashInfo{'ToLower'}{'format'} = 'x'; # non-negative hex whole number; a code point
-$Unicode::UCD::SwashInfo{'ToLower'}{'specials_name'} = 'Unicode::UCD::ToSpecLower'; # Name of hash of special mappings
-$Unicode::UCD::SwashInfo{'ToLower'}{'missing'} = '<code point>'; # code point maps to itself
-
-# Some code points require special handling because their mappings are each to
-# multiple code points. These do not appear in the main body, but are defined
-# in the hash below.
-
-# Each key is the string of N bytes that together make up the UTF-8 encoding
-# for the code point. (i.e. the same as looking at the code point's UTF-8
-# under "use bytes"). Each value is the UTF-8 of the translation, for speed.
-%Unicode::UCD::ToSpecLower = (
-"\xC4\xB0" => "\x{0069}\x{0307}", # U+0130 => 0069 0307
-);
-
-return <<'END';
-0041 0061
-0042 0062
-0043 0063
-0044 0064
-0045 0065
-0046 0066
-0047 0067
-0048 0068
-0049 0069
-004A 006A
-004B 006B
-004C 006C
-004D 006D
-004E 006E
-004F 006F
-0050 0070
-0051 0071
-0052 0072
-0053 0073
-0054 0074
-0055 0075
-0056 0076
-0057 0077
-0058 0078
-0059 0079
-005A 007A
-00C0 00E0
-00C1 00E1
-00C2 00E2
-00C3 00E3
-00C4 00E4
-00C5 00E5
-00C6 00E6
-00C7 00E7
-00C8 00E8
-00C9 00E9
-00CA 00EA
-00CB 00EB
-00CC 00EC
-00CD 00ED
-00CE 00EE
-00CF 00EF
-00D0 00F0
-00D1 00F1
-00D2 00F2
-00D3 00F3
-00D4 00F4
-00D5 00F5
-00D6 00F6
-00D8 00F8
-00D9 00F9
-00DA 00FA
-00DB 00FB
-00DC 00FC
-00DD 00FD
-00DE 00FE
-0100 0101
-0102 0103
-0104 0105
-0106 0107
-0108 0109
-010A 010B
-010C 010D
-010E 010F
-0110 0111
-0112 0113
-0114 0115
-0116 0117
-0118 0119
-011A 011B
-011C 011D
-011E 011F
-0120 0121
-0122 0123
-0124 0125
-0126 0127
-0128 0129
-012A 012B
-012C 012D
-012E 012F
-0132 0133
-0134 0135
-0136 0137
-0139 013A
-013B 013C
-013D 013E
-013F 0140
-0141 0142
-0143 0144
-0145 0146
-0147 0148
-014A 014B
-014C 014D
-014E 014F
-0150 0151
-0152 0153
-0154 0155
-0156 0157
-0158 0159
-015A 015B
-015C 015D
-015E 015F
-0160 0161
-0162 0163
-0164 0165
-0166 0167
-0168 0169
-016A 016B
-016C 016D
-016E 016F
-0170 0171
-0172 0173
-0174 0175
-0176 0177
-0178 00FF
-0179 017A
-017B 017C
-017D 017E
-0181 0253
-0182 0183
-0184 0185
-0186 0254
-0187 0188
-0189 0256
-018A 0257
-018B 018C
-018E 01DD
-018F 0259
-0190 025B
-0191 0192
-0193 0260
-0194 0263
-0196 0269
-0197 0268
-0198 0199
-019C 026F
-019D 0272
-019F 0275
-01A0 01A1
-01A2 01A3
-01A4 01A5
-01A6 0280
-01A7 01A8
-01A9 0283
-01AC 01AD
-01AE 0288
-01AF 01B0
-01B1 028A
-01B2 028B
-01B3 01B4
-01B5 01B6
-01B7 0292
-01B8 01B9
-01BC 01BD
-01C4 01C6
-01C5 01C6
-01C7 01C9
-01C8 01C9
-01CA 01CC
-01CB 01CC
-01CD 01CE
-01CF 01D0
-01D1 01D2
-01D3 01D4
-01D5 01D6
-01D7 01D8
-01D9 01DA
-01DB 01DC
-01DE 01DF
-01E0 01E1
-01E2 01E3
-01E4 01E5
-01E6 01E7
-01E8 01E9
-01EA 01EB
-01EC 01ED
-01EE 01EF
-01F1 01F3
-01F2 01F3
-01F4 01F5
-01F6 0195
-01F7 01BF
-01F8 01F9
-01FA 01FB
-01FC 01FD
-01FE 01FF
-0200 0201
-0202 0203
-0204 0205
-0206 0207
-0208 0209
-020A 020B
-020C 020D
-020E 020F
-0210 0211
-0212 0213
-0214 0215
-0216 0217
-0218 0219
-021A 021B
-021C 021D
-021E 021F
-0220 019E
-0222 0223
-0224 0225
-0226 0227
-0228 0229
-022A 022B
-022C 022D
-022E 022F
-0230 0231
-0232 0233
-023A 2C65
-023B 023C
-023D 019A
-023E 2C66
-0241 0242
-0243 0180
-0244 0289
-0245 028C
-0246 0247
-0248 0249
-024A 024B
-024C 024D
-024E 024F
-0370 0371
-0372 0373
-0376 0377
-037F 03F3
-0386 03AC
-0388 03AD
-0389 03AE
-038A 03AF
-038C 03CC
-038E 03CD
-038F 03CE
-0391 03B1
-0392 03B2
-0393 03B3
-0394 03B4
-0395 03B5
-0396 03B6
-0397 03B7
-0398 03B8
-0399 03B9
-039A 03BA
-039B 03BB
-039C 03BC
-039D 03BD
-039E 03BE
-039F 03BF
-03A0 03C0
-03A1 03C1
-03A3 03C3
-03A4 03C4
-03A5 03C5
-03A6 03C6
-03A7 03C7
-03A8 03C8
-03A9 03C9
-03AA 03CA
-03AB 03CB
-03CF 03D7
-03D8 03D9
-03DA 03DB
-03DC 03DD
-03DE 03DF
-03E0 03E1
-03E2 03E3
-03E4 03E5
-03E6 03E7
-03E8 03E9
-03EA 03EB
-03EC 03ED
-03EE 03EF
-03F4 03B8
-03F7 03F8
-03F9 03F2
-03FA 03FB
-03FD 037B
-03FE 037C
-03FF 037D
-0400 0450
-0401 0451
-0402 0452
-0403 0453
-0404 0454
-0405 0455
-0406 0456
-0407 0457
-0408 0458
-0409 0459
-040A 045A
-040B 045B
-040C 045C
-040D 045D
-040E 045E
-040F 045F
-0410 0430
-0411 0431
-0412 0432
-0413 0433
-0414 0434
-0415 0435
-0416 0436
-0417 0437
-0418 0438
-0419 0439
-041A 043A
-041B 043B
-041C 043C
-041D 043D
-041E 043E
-041F 043F
-0420 0440
-0421 0441
-0422 0442
-0423 0443
-0424 0444
-0425 0445
-0426 0446
-0427 0447
-0428 0448
-0429 0449
-042A 044A
-042B 044B
-042C 044C
-042D 044D
-042E 044E
-042F 044F
-0460 0461
-0462 0463
-0464 0465
-0466 0467
-0468 0469
-046A 046B
-046C 046D
-046E 046F
-0470 0471
-0472 0473
-0474 0475
-0476 0477
-0478 0479
-047A 047B
-047C 047D
-047E 047F
-0480 0481
-048A 048B
-048C 048D
-048E 048F
-0490 0491
-0492 0493
-0494 0495
-0496 0497
-0498 0499
-049A 049B
-049C 049D
-049E 049F
-04A0 04A1
-04A2 04A3
-04A4 04A5
-04A6 04A7
-04A8 04A9
-04AA 04AB
-04AC 04AD
-04AE 04AF
-04B0 04B1
-04B2 04B3
-04B4 04B5
-04B6 04B7
-04B8 04B9
-04BA 04BB
-04BC 04BD
-04BE 04BF
-04C0 04CF
-04C1 04C2
-04C3 04C4
-04C5 04C6
-04C7 04C8
-04C9 04CA
-04CB 04CC
-04CD 04CE
-04D0 04D1
-04D2 04D3
-04D4 04D5
-04D6 04D7
-04D8 04D9
-04DA 04DB
-04DC 04DD
-04DE 04DF
-04E0 04E1
-04E2 04E3
-04E4 04E5
-04E6 04E7
-04E8 04E9
-04EA 04EB
-04EC 04ED
-04EE 04EF
-04F0 04F1
-04F2 04F3
-04F4 04F5
-04F6 04F7
-04F8 04F9
-04FA 04FB
-04FC 04FD
-04FE 04FF
-0500 0501
-0502 0503
-0504 0505
-0506 0507
-0508 0509
-050A 050B
-050C 050D
-050E 050F
-0510 0511
-0512 0513
-0514 0515
-0516 0517
-0518 0519
-051A 051B
-051C 051D
-051E 051F
-0520 0521
-0522 0523
-0524 0525
-0526 0527
-0528 0529
-052A 052B
-052C 052D
-052E 052F
-0531 0561
-0532 0562
-0533 0563
-0534 0564
-0535 0565
-0536 0566
-0537 0567
-0538 0568
-0539 0569
-053A 056A
-053B 056B
-053C 056C
-053D 056D
-053E 056E
-053F 056F
-0540 0570
-0541 0571
-0542 0572
-0543 0573
-0544 0574
-0545 0575
-0546 0576
-0547 0577
-0548 0578
-0549 0579
-054A 057A
-054B 057B
-054C 057C
-054D 057D
-054E 057E
-054F 057F
-0550 0580
-0551 0581
-0552 0582
-0553 0583
-0554 0584
-0555 0585
-0556 0586
-10A0 2D00
-10A1 2D01
-10A2 2D02
-10A3 2D03
-10A4 2D04
-10A5 2D05
-10A6 2D06
-10A7 2D07
-10A8 2D08
-10A9 2D09
-10AA 2D0A
-10AB 2D0B
-10AC 2D0C
-10AD 2D0D
-10AE 2D0E
-10AF 2D0F
-10B0 2D10
-10B1 2D11
-10B2 2D12
-10B3 2D13
-10B4 2D14
-10B5 2D15
-10B6 2D16
-10B7 2D17
-10B8 2D18
-10B9 2D19
-10BA 2D1A
-10BB 2D1B
-10BC 2D1C
-10BD 2D1D
-10BE 2D1E
-10BF 2D1F
-10C0 2D20
-10C1 2D21
-10C2 2D22
-10C3 2D23
-10C4 2D24
-10C5 2D25
-10C7 2D27
-10CD 2D2D
-13A0 AB70
-13A1 AB71
-13A2 AB72
-13A3 AB73
-13A4 AB74
-13A5 AB75
-13A6 AB76
-13A7 AB77
-13A8 AB78
-13A9 AB79
-13AA AB7A
-13AB AB7B
-13AC AB7C
-13AD AB7D
-13AE AB7E
-13AF AB7F
-13B0 AB80
-13B1 AB81
-13B2 AB82
-13B3 AB83
-13B4 AB84
-13B5 AB85
-13B6 AB86
-13B7 AB87
-13B8 AB88
-13B9 AB89
-13BA AB8A
-13BB AB8B
-13BC AB8C
-13BD AB8D
-13BE AB8E
-13BF AB8F
-13C0 AB90
-13C1 AB91
-13C2 AB92
-13C3 AB93
-13C4 AB94
-13C5 AB95
-13C6 AB96
-13C7 AB97
-13C8 AB98
-13C9 AB99
-13CA AB9A
-13CB AB9B
-13CC AB9C
-13CD AB9D
-13CE AB9E
-13CF AB9F
-13D0 ABA0
-13D1 ABA1
-13D2 ABA2
-13D3 ABA3
-13D4 ABA4
-13D5 ABA5
-13D6 ABA6
-13D7 ABA7
-13D8 ABA8
-13D9 ABA9
-13DA ABAA
-13DB ABAB
-13DC ABAC
-13DD ABAD
-13DE ABAE
-13DF ABAF
-13E0 ABB0
-13E1 ABB1
-13E2 ABB2
-13E3 ABB3
-13E4 ABB4
-13E5 ABB5
-13E6 ABB6
-13E7 ABB7
-13E8 ABB8
-13E9 ABB9
-13EA ABBA
-13EB ABBB
-13EC ABBC
-13ED ABBD
-13EE ABBE
-13EF ABBF
-13F0 13F8
-13F1 13F9
-13F2 13FA
-13F3 13FB
-13F4 13FC
-13F5 13FD
-1C90 10D0
-1C91 10D1
-1C92 10D2
-1C93 10D3
-1C94 10D4
-1C95 10D5
-1C96 10D6
-1C97 10D7
-1C98 10D8
-1C99 10D9
-1C9A 10DA
-1C9B 10DB
-1C9C 10DC
-1C9D 10DD
-1C9E 10DE
-1C9F 10DF
-1CA0 10E0
-1CA1 10E1
-1CA2 10E2
-1CA3 10E3
-1CA4 10E4
-1CA5 10E5
-1CA6 10E6
-1CA7 10E7
-1CA8 10E8
-1CA9 10E9
-1CAA 10EA
-1CAB 10EB
-1CAC 10EC
-1CAD 10ED
-1CAE 10EE
-1CAF 10EF
-1CB0 10F0
-1CB1 10F1
-1CB2 10F2
-1CB3 10F3
-1CB4 10F4
-1CB5 10F5
-1CB6 10F6
-1CB7 10F7
-1CB8 10F8
-1CB9 10F9
-1CBA 10FA
-1CBD 10FD
-1CBE 10FE
-1CBF 10FF
-1E00 1E01
-1E02 1E03
-1E04 1E05
-1E06 1E07
-1E08 1E09
-1E0A 1E0B
-1E0C 1E0D
-1E0E 1E0F
-1E10 1E11
-1E12 1E13
-1E14 1E15
-1E16 1E17
-1E18 1E19
-1E1A 1E1B
-1E1C 1E1D
-1E1E 1E1F
-1E20 1E21
-1E22 1E23
-1E24 1E25
-1E26 1E27
-1E28 1E29
-1E2A 1E2B
-1E2C 1E2D
-1E2E 1E2F
-1E30 1E31
-1E32 1E33
-1E34 1E35
-1E36 1E37
-1E38 1E39
-1E3A 1E3B
-1E3C 1E3D
-1E3E 1E3F
-1E40 1E41
-1E42 1E43
-1E44 1E45
-1E46 1E47
-1E48 1E49
-1E4A 1E4B
-1E4C 1E4D
-1E4E 1E4F
-1E50 1E51
-1E52 1E53
-1E54 1E55
-1E56 1E57
-1E58 1E59
-1E5A 1E5B
-1E5C 1E5D
-1E5E 1E5F
-1E60 1E61
-1E62 1E63
-1E64 1E65
-1E66 1E67
-1E68 1E69
-1E6A 1E6B
-1E6C 1E6D
-1E6E 1E6F
-1E70 1E71
-1E72 1E73
-1E74 1E75
-1E76 1E77
-1E78 1E79
-1E7A 1E7B
-1E7C 1E7D
-1E7E 1E7F
-1E80 1E81
-1E82 1E83
-1E84 1E85
-1E86 1E87
-1E88 1E89
-1E8A 1E8B
-1E8C 1E8D
-1E8E 1E8F
-1E90 1E91
-1E92 1E93
-1E94 1E95
-1E9E 00DF
-1EA0 1EA1
-1EA2 1EA3
-1EA4 1EA5
-1EA6 1EA7
-1EA8 1EA9
-1EAA 1EAB
-1EAC 1EAD
-1EAE 1EAF
-1EB0 1EB1
-1EB2 1EB3
-1EB4 1EB5
-1EB6 1EB7
-1EB8 1EB9
-1EBA 1EBB
-1EBC 1EBD
-1EBE 1EBF
-1EC0 1EC1
-1EC2 1EC3
-1EC4 1EC5
-1EC6 1EC7
-1EC8 1EC9
-1ECA 1ECB
-1ECC 1ECD
-1ECE 1ECF
-1ED0 1ED1
-1ED2 1ED3
-1ED4 1ED5
-1ED6 1ED7
-1ED8 1ED9
-1EDA 1EDB
-1EDC 1EDD
-1EDE 1EDF
-1EE0 1EE1
-1EE2 1EE3
-1EE4 1EE5
-1EE6 1EE7
-1EE8 1EE9
-1EEA 1EEB
-1EEC 1EED
-1EEE 1EEF
-1EF0 1EF1
-1EF2 1EF3
-1EF4 1EF5
-1EF6 1EF7
-1EF8 1EF9
-1EFA 1EFB
-1EFC 1EFD
-1EFE 1EFF
-1F08 1F00
-1F09 1F01
-1F0A 1F02
-1F0B 1F03
-1F0C 1F04
-1F0D 1F05
-1F0E 1F06
-1F0F 1F07
-1F18 1F10
-1F19 1F11
-1F1A 1F12
-1F1B 1F13
-1F1C 1F14
-1F1D 1F15
-1F28 1F20
-1F29 1F21
-1F2A 1F22
-1F2B 1F23
-1F2C 1F24
-1F2D 1F25
-1F2E 1F26
-1F2F 1F27
-1F38 1F30
-1F39 1F31
-1F3A 1F32
-1F3B 1F33
-1F3C 1F34
-1F3D 1F35
-1F3E 1F36
-1F3F 1F37
-1F48 1F40
-1F49 1F41
-1F4A 1F42
-1F4B 1F43
-1F4C 1F44
-1F4D 1F45
-1F59 1F51
-1F5B 1F53
-1F5D 1F55
-1F5F 1F57
-1F68 1F60
-1F69 1F61
-1F6A 1F62
-1F6B 1F63
-1F6C 1F64
-1F6D 1F65
-1F6E 1F66
-1F6F 1F67
-1F88 1F80
-1F89 1F81
-1F8A 1F82
-1F8B 1F83
-1F8C 1F84
-1F8D 1F85
-1F8E 1F86
-1F8F 1F87
-1F98 1F90
-1F99 1F91
-1F9A 1F92
-1F9B 1F93
-1F9C 1F94
-1F9D 1F95
-1F9E 1F96
-1F9F 1F97
-1FA8 1FA0
-1FA9 1FA1
-1FAA 1FA2
-1FAB 1FA3
-1FAC 1FA4
-1FAD 1FA5
-1FAE 1FA6
-1FAF 1FA7
-1FB8 1FB0
-1FB9 1FB1
-1FBA 1F70
-1FBB 1F71
-1FBC 1FB3
-1FC8 1F72
-1FC9 1F73
-1FCA 1F74
-1FCB 1F75
-1FCC 1FC3
-1FD8 1FD0
-1FD9 1FD1
-1FDA 1F76
-1FDB 1F77
-1FE8 1FE0
-1FE9 1FE1
-1FEA 1F7A
-1FEB 1F7B
-1FEC 1FE5
-1FF8 1F78
-1FF9 1F79
-1FFA 1F7C
-1FFB 1F7D
-1FFC 1FF3
-2126 03C9
-212A 006B
-212B 00E5
-2132 214E
-2160 2170
-2161 2171
-2162 2172
-2163 2173
-2164 2174
-2165 2175
-2166 2176
-2167 2177
-2168 2178
-2169 2179
-216A 217A
-216B 217B
-216C 217C
-216D 217D
-216E 217E
-216F 217F
-2183 2184
-24B6 24D0
-24B7 24D1
-24B8 24D2
-24B9 24D3
-24BA 24D4
-24BB 24D5
-24BC 24D6
-24BD 24D7
-24BE 24D8
-24BF 24D9
-24C0 24DA
-24C1 24DB
-24C2 24DC
-24C3 24DD
-24C4 24DE
-24C5 24DF
-24C6 24E0
-24C7 24E1
-24C8 24E2
-24C9 24E3
-24CA 24E4
-24CB 24E5
-24CC 24E6
-24CD 24E7
-24CE 24E8
-24CF 24E9
-2C00 2C30
-2C01 2C31
-2C02 2C32
-2C03 2C33
-2C04 2C34
-2C05 2C35
-2C06 2C36
-2C07 2C37
-2C08 2C38
-2C09 2C39
-2C0A 2C3A
-2C0B 2C3B
-2C0C 2C3C
-2C0D 2C3D
-2C0E 2C3E
-2C0F 2C3F
-2C10 2C40
-2C11 2C41
-2C12 2C42
-2C13 2C43
-2C14 2C44
-2C15 2C45
-2C16 2C46
-2C17 2C47
-2C18 2C48
-2C19 2C49
-2C1A 2C4A
-2C1B 2C4B
-2C1C 2C4C
-2C1D 2C4D
-2C1E 2C4E
-2C1F 2C4F
-2C20 2C50
-2C21 2C51
-2C22 2C52
-2C23 2C53
-2C24 2C54
-2C25 2C55
-2C26 2C56
-2C27 2C57
-2C28 2C58
-2C29 2C59
-2C2A 2C5A
-2C2B 2C5B
-2C2C 2C5C
-2C2D 2C5D
-2C2E 2C5E
-2C60 2C61
-2C62 026B
-2C63 1D7D
-2C64 027D
-2C67 2C68
-2C69 2C6A
-2C6B 2C6C
-2C6D 0251
-2C6E 0271
-2C6F 0250
-2C70 0252
-2C72 2C73
-2C75 2C76
-2C7E 023F
-2C7F 0240
-2C80 2C81
-2C82 2C83
-2C84 2C85
-2C86 2C87
-2C88 2C89
-2C8A 2C8B
-2C8C 2C8D
-2C8E 2C8F
-2C90 2C91
-2C92 2C93
-2C94 2C95
-2C96 2C97
-2C98 2C99
-2C9A 2C9B
-2C9C 2C9D
-2C9E 2C9F
-2CA0 2CA1
-2CA2 2CA3
-2CA4 2CA5
-2CA6 2CA7
-2CA8 2CA9
-2CAA 2CAB
-2CAC 2CAD
-2CAE 2CAF
-2CB0 2CB1
-2CB2 2CB3
-2CB4 2CB5
-2CB6 2CB7
-2CB8 2CB9
-2CBA 2CBB
-2CBC 2CBD
-2CBE 2CBF
-2CC0 2CC1
-2CC2 2CC3
-2CC4 2CC5
-2CC6 2CC7
-2CC8 2CC9
-2CCA 2CCB
-2CCC 2CCD
-2CCE 2CCF
-2CD0 2CD1
-2CD2 2CD3
-2CD4 2CD5
-2CD6 2CD7
-2CD8 2CD9
-2CDA 2CDB
-2CDC 2CDD
-2CDE 2CDF
-2CE0 2CE1
-2CE2 2CE3
-2CEB 2CEC
-2CED 2CEE
-2CF2 2CF3
-A640 A641
-A642 A643
-A644 A645
-A646 A647
-A648 A649
-A64A A64B
-A64C A64D
-A64E A64F
-A650 A651
-A652 A653
-A654 A655
-A656 A657
-A658 A659
-A65A A65B
-A65C A65D
-A65E A65F
-A660 A661
-A662 A663
-A664 A665
-A666 A667
-A668 A669
-A66A A66B
-A66C A66D
-A680 A681
-A682 A683
-A684 A685
-A686 A687
-A688 A689
-A68A A68B
-A68C A68D
-A68E A68F
-A690 A691
-A692 A693
-A694 A695
-A696 A697
-A698 A699
-A69A A69B
-A722 A723
-A724 A725
-A726 A727
-A728 A729
-A72A A72B
-A72C A72D
-A72E A72F
-A732 A733
-A734 A735
-A736 A737
-A738 A739
-A73A A73B
-A73C A73D
-A73E A73F
-A740 A741
-A742 A743
-A744 A745
-A746 A747
-A748 A749
-A74A A74B
-A74C A74D
-A74E A74F
-A750 A751
-A752 A753
-A754 A755
-A756 A757
-A758 A759
-A75A A75B
-A75C A75D
-A75E A75F
-A760 A761
-A762 A763
-A764 A765
-A766 A767
-A768 A769
-A76A A76B
-A76C A76D
-A76E A76F
-A779 A77A
-A77B A77C
-A77D 1D79
-A77E A77F
-A780 A781
-A782 A783
-A784 A785
-A786 A787
-A78B A78C
-A78D 0265
-A790 A791
-A792 A793
-A796 A797
-A798 A799
-A79A A79B
-A79C A79D
-A79E A79F
-A7A0 A7A1
-A7A2 A7A3
-A7A4 A7A5
-A7A6 A7A7
-A7A8 A7A9
-A7AA 0266
-A7AB 025C
-A7AC 0261
-A7AD 026C
-A7AE 026A
-A7B0 029E
-A7B1 0287
-A7B2 029D
-A7B3 AB53
-A7B4 A7B5
-A7B6 A7B7
-A7B8 A7B9
-A7BA A7BB
-A7BC A7BD
-A7BE A7BF
-A7C2 A7C3
-A7C4 A794
-A7C5 0282
-A7C6 1D8E
-A7C7 A7C8
-A7C9 A7CA
-A7F5 A7F6
-FF21 FF41
-FF22 FF42
-FF23 FF43
-FF24 FF44
-FF25 FF45
-FF26 FF46
-FF27 FF47
-FF28 FF48
-FF29 FF49
-FF2A FF4A
-FF2B FF4B
-FF2C FF4C
-FF2D FF4D
-FF2E FF4E
-FF2F FF4F
-FF30 FF50
-FF31 FF51
-FF32 FF52
-FF33 FF53
-FF34 FF54
-FF35 FF55
-FF36 FF56
-FF37 FF57
-FF38 FF58
-FF39 FF59
-FF3A FF5A
-10400 10428
-10401 10429
-10402 1042A
-10403 1042B
-10404 1042C
-10405 1042D
-10406 1042E
-10407 1042F
-10408 10430
-10409 10431
-1040A 10432
-1040B 10433
-1040C 10434
-1040D 10435
-1040E 10436
-1040F 10437
-10410 10438
-10411 10439
-10412 1043A
-10413 1043B
-10414 1043C
-10415 1043D
-10416 1043E
-10417 1043F
-10418 10440
-10419 10441
-1041A 10442
-1041B 10443
-1041C 10444
-1041D 10445
-1041E 10446
-1041F 10447
-10420 10448
-10421 10449
-10422 1044A
-10423 1044B
-10424 1044C
-10425 1044D
-10426 1044E
-10427 1044F
-104B0 104D8
-104B1 104D9
-104B2 104DA
-104B3 104DB
-104B4 104DC
-104B5 104DD
-104B6 104DE
-104B7 104DF
-104B8 104E0
-104B9 104E1
-104BA 104E2
-104BB 104E3
-104BC 104E4
-104BD 104E5
-104BE 104E6
-104BF 104E7
-104C0 104E8
-104C1 104E9
-104C2 104EA
-104C3 104EB
-104C4 104EC
-104C5 104ED
-104C6 104EE
-104C7 104EF
-104C8 104F0
-104C9 104F1
-104CA 104F2
-104CB 104F3
-104CC 104F4
-104CD 104F5
-104CE 104F6
-104CF 104F7
-104D0 104F8
-104D1 104F9
-104D2 104FA
-104D3 104FB
-10C80 10CC0
-10C81 10CC1
-10C82 10CC2
-10C83 10CC3
-10C84 10CC4
-10C85 10CC5
-10C86 10CC6
-10C87 10CC7
-10C88 10CC8
-10C89 10CC9
-10C8A 10CCA
-10C8B 10CCB
-10C8C 10CCC
-10C8D 10CCD
-10C8E 10CCE
-10C8F 10CCF
-10C90 10CD0
-10C91 10CD1
-10C92 10CD2
-10C93 10CD3
-10C94 10CD4
-10C95 10CD5
-10C96 10CD6
-10C97 10CD7
-10C98 10CD8
-10C99 10CD9
-10C9A 10CDA
-10C9B 10CDB
-10C9C 10CDC
-10C9D 10CDD
-10C9E 10CDE
-10C9F 10CDF
-10CA0 10CE0
-10CA1 10CE1
-10CA2 10CE2
-10CA3 10CE3
-10CA4 10CE4
-10CA5 10CE5
-10CA6 10CE6
-10CA7 10CE7
-10CA8 10CE8
-10CA9 10CE9
-10CAA 10CEA
-10CAB 10CEB
-10CAC 10CEC
-10CAD 10CED
-10CAE 10CEE
-10CAF 10CEF
-10CB0 10CF0
-10CB1 10CF1
-10CB2 10CF2
-118A0 118C0
-118A1 118C1
-118A2 118C2
-118A3 118C3
-118A4 118C4
-118A5 118C5
-118A6 118C6
-118A7 118C7
-118A8 118C8
-118A9 118C9
-118AA 118CA
-118AB 118CB
-118AC 118CC
-118AD 118CD
-118AE 118CE
-118AF 118CF
-118B0 118D0
-118B1 118D1
-118B2 118D2
-118B3 118D3
-118B4 118D4
-118B5 118D5
-118B6 118D6
-118B7 118D7
-118B8 118D8
-118B9 118D9
-118BA 118DA
-118BB 118DB
-118BC 118DC
-118BD 118DD
-118BE 118DE
-118BF 118DF
-16E40 16E60
-16E41 16E61
-16E42 16E62
-16E43 16E63
-16E44 16E64
-16E45 16E65
-16E46 16E66
-16E47 16E67
-16E48 16E68
-16E49 16E69
-16E4A 16E6A
-16E4B 16E6B
-16E4C 16E6C
-16E4D 16E6D
-16E4E 16E6E
-16E4F 16E6F
-16E50 16E70
-16E51 16E71
-16E52 16E72
-16E53 16E73
-16E54 16E74
-16E55 16E75
-16E56 16E76
-16E57 16E77
-16E58 16E78
-16E59 16E79
-16E5A 16E7A
-16E5B 16E7B
-16E5C 16E7C
-16E5D 16E7D
-16E5E 16E7E
-16E5F 16E7F
-1E900 1E922
-1E901 1E923
-1E902 1E924
-1E903 1E925
-1E904 1E926
-1E905 1E927
-1E906 1E928
-1E907 1E929
-1E908 1E92A
-1E909 1E92B
-1E90A 1E92C
-1E90B 1E92D
-1E90C 1E92E
-1E90D 1E92F
-1E90E 1E930
-1E90F 1E931
-1E910 1E932
-1E911 1E933
-1E912 1E934
-1E913 1E935
-1E914 1E936
-1E915 1E937
-1E916 1E938
-1E917 1E939
-1E918 1E93A
-1E919 1E93B
-1E91A 1E93C
-1E91B 1E93D
-1E91C 1E93E
-1E91D 1E93F
-1E91E 1E940
-1E91F 1E941
-1E920 1E942
-1E921 1E943
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/NFCQC.pl b/Master/tlpkg/tlperl/lib/unicore/To/NFCQC.pl
index f92b8b9cd52..2f915913480 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/NFCQC.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/NFCQC.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/NFDQC.pl b/Master/tlpkg/tlperl/lib/unicore/To/NFDQC.pl
index 71e5f72b4f2..9bc26f3637b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/NFDQC.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/NFDQC.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/NFKCCF.pl b/Master/tlpkg/tlperl/lib/unicore/To/NFKCCF.pl
index e064ae32e19..40804a29c75 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/NFKCCF.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/NFKCCF.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! IT IS DEPRECATED TO USE THIS FILE !!!!!!!
@@ -123,6 +123,7 @@ $Unicode::UCD::SwashInfo{'ToNFKCCF'}{'missing'} = '<code point>'; # code point m
"\xE1\xA0\x8C" => "", # U+180C =>
"\xE1\xA0\x8D" => "", # U+180D =>
"\xE1\xA0\x8E" => "", # U+180E =>
+"\xE1\xA0\x8F" => "", # U+180F =>
"\xE1\xBA\x9A" => "\x{0061}\x{02BE}", # U+1E9A => 0061 02BE
"\xE1\xBA\x9E" => "\x{0073}\x{0073}", # U+1E9E => 0073 0073
"\xE1\xBE\x80" => "\x{1F00}\x{03B9}", # U+1F80 => 1F00 03B9
@@ -6641,6 +6642,7 @@ return <<'END';
2C2C 2C5C
2C2D 2C5D
2C2E 2C5E
+2C2F 2C5F
2C60 2C61
2C62 026B
2C63 1D7D
@@ -7284,12 +7286,19 @@ A7B8 A7B9
A7BA A7BB
A7BC A7BD
A7BE A7BF
+A7C0 A7C1
A7C2 A7C3
A7C4 A794
A7C5 0282
A7C6 1D8E
A7C7 A7C8
A7C9 A7CA
+A7D0 A7D1
+A7D6 A7D7
+A7D8 A7D9
+A7F2 0063
+A7F3 0066
+A7F4 0071
A7F5 A7F6
A7F8 0127
A7F9 0153
@@ -8448,6 +8457,97 @@ FFEE 25CB
104D1 104F9
104D2 104FA
104D3 104FB
+10570 10597
+10571 10598
+10572 10599
+10573 1059A
+10574 1059B
+10575 1059C
+10576 1059D
+10577 1059E
+10578 1059F
+10579 105A0
+1057A 105A1
+1057C 105A3
+1057D 105A4
+1057E 105A5
+1057F 105A6
+10580 105A7
+10581 105A8
+10582 105A9
+10583 105AA
+10584 105AB
+10585 105AC
+10586 105AD
+10587 105AE
+10588 105AF
+10589 105B0
+1058A 105B1
+1058C 105B3
+1058D 105B4
+1058E 105B5
+1058F 105B6
+10590 105B7
+10591 105B8
+10592 105B9
+10594 105BB
+10595 105BC
+10781 02D0
+10782 02D1
+10783 00E6
+10784 0299
+10785 0253
+10787 02A3
+10788 AB66
+10789 02A5
+1078A 02A4
+1078B 0256
+1078C 0257
+1078D 1D91
+1078E 0258
+1078F 025E
+10790 02A9
+10791 0264
+10792 0262
+10793 0260
+10794 029B
+10795 0127
+10796 029C
+10797 0267
+10798 0284
+10799 02AA
+1079A 02AB
+1079B 026C
+1079C 1DF04
+1079D A78E
+1079E 026E
+1079F 1DF05
+107A0 028E
+107A1 1DF06
+107A2 00F8
+107A3 0276
+107A4 0277
+107A5 0071
+107A6 027A
+107A7 1DF08
+107A8 027D
+107A9 027E
+107AA 0280
+107AB 02A8
+107AC 02A6
+107AD AB67
+107AE 02A7
+107AF 0288
+107B0 2C71
+107B2 028F
+107B3 02A1
+107B4 02A2
+107B5 0298
+107B6 01C0
+107B7 01C1
+107B8 01C2
+107B9 1DF0A
+107BA 1DF1E
10C80 10CC0
10C81 10CC1
10C82 10CC2
@@ -9559,6 +9659,68 @@ FFEE 25CB
1D7FD 0037
1D7FE 0038
1D7FF 0039
+1E030 0430
+1E031 0431
+1E032 0432
+1E033 0433
+1E034 0434
+1E035 0435
+1E036 0436
+1E037 0437
+1E038 0438
+1E039 043A
+1E03A 043B
+1E03B 043C
+1E03C 043E
+1E03D 043F
+1E03E 0440
+1E03F 0441
+1E040 0442
+1E041 0443
+1E042 0444
+1E043 0445
+1E044 0446
+1E045 0447
+1E046 0448
+1E047 044B
+1E048 044D
+1E049 044E
+1E04A A689
+1E04B 04D9
+1E04C 0456
+1E04D 0458
+1E04E 04E9
+1E04F 04AF
+1E050 04CF
+1E051 0430
+1E052 0431
+1E053 0432
+1E054 0433
+1E055 0434
+1E056 0435
+1E057 0436
+1E058 0437
+1E059 0438
+1E05A 043A
+1E05B 043B
+1E05C 043E
+1E05D 043F
+1E05E 0441
+1E05F 0443
+1E060 0444
+1E061 0445
+1E062 0446
+1E063 0447
+1E064 0448
+1E065 044A
+1E066 044B
+1E067 0491
+1E068 0456
+1E069 0455
+1E06A 045F
+1E06B 04AB
+1E06C A651
+1E06D 04B1
1E900 1E922
1E901 1E923
1E902 1E924
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/NFKCQC.pl b/Master/tlpkg/tlperl/lib/unicore/To/NFKCQC.pl
index 999a0be1eb4..65d188cfb99 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/NFKCQC.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/NFKCQC.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -193,6 +193,7 @@ FB9 N
3280 33FF N
A69C A69D N
A770 N
+A7F2 A7F4 N
A7F8 A7F9 N
AB5C AB5F N
AB69 N
@@ -233,6 +234,9 @@ FFD2 FFD7 N
FFDA FFDC N
FFE0 FFE6 N
FFE8 FFEE N
+10781 10785 N
+10787 107B0 N
+107B2 107BA N
110BA M
11127 M
1133E M
@@ -265,6 +269,7 @@ FFE8 FFEE N
1D552 1D6A5 N
1D6A8 1D7CB N
1D7CE 1D7FF N
+1E030 1E06D N
1EE00 1EE03 N
1EE05 1EE1F N
1EE21 1EE22 N
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/NFKDQC.pl b/Master/tlpkg/tlperl/lib/unicore/To/NFKDQC.pl
index 4f044ba416a..906a41d8c3b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/NFKDQC.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/NFKDQC.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -292,6 +292,7 @@ FB9 N
3280 33FF N
A69C A69D N
A770 N
+A7F2 A7F4 N
A7F8 A7F9 N
AB5C AB5F N
AB69 N
@@ -333,6 +334,9 @@ FFD2 FFD7 N
FFDA FFDC N
FFE0 FFE6 N
FFE8 FFEE N
+10781 10785 N
+10787 107B0 N
+107B2 107BA N
1109A N
1109C N
110AB N
@@ -365,6 +369,7 @@ FFE8 FFEE N
1D552 1D6A5 N
1D6A8 1D7CB N
1D7CE 1D7FF N
+1E030 1E06D N
1EE00 1EE03 N
1EE05 1EE1F N
1EE21 1EE22 N
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Na1.pl b/Master/tlpkg/tlperl/lib/unicore/To/Na1.pl
index 20a292b876f..003fafba10a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Na1.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Na1.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -14,7 +14,7 @@
# the main body of the table, and what all code points missing from this file
# map to.
$Unicode::UCD::SwashInfo{'ToNa1'}{'format'} = 's'; # string
-$Unicode::UCD::SwashInfo{'ToNa1'}{'missing'} = ''; # code point maps to the null string
+$Unicode::UCD::SwashInfo{'ToNa1'}{'missing'} = ''; # code point maps to the empty string
return <<'END';
0 NULL
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/NameAlia.pl b/Master/tlpkg/tlperl/lib/unicore/To/NameAlia.pl
index e7dbf4fc96c..648e3c2b914 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/NameAlia.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/NameAlia.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -14,7 +14,7 @@
# the main body of the table, and what all code points missing from this file
# map to.
$Unicode::UCD::SwashInfo{'ToNameAlias'}{'format'} = 's'; # string
-$Unicode::UCD::SwashInfo{'ToNameAlias'}{'missing'} = ''; # code point maps to the null string
+$Unicode::UCD::SwashInfo{'ToNameAlias'}{'missing'} = ''; # code point maps to the empty string
return <<'END';
0 NULL: control
@@ -78,6 +78,7 @@ F SI: abbreviation
18 CAN: abbreviation
19 END OF MEDIUM: control
19 EOM: abbreviation
+19 EM: abbreviation
1A SUBSTITUTE: control
1A SUB: abbreviation
1B ESCAPE: control
@@ -178,6 +179,7 @@ AD SHY: abbreviation
1A2 LATIN CAPITAL LETTER GHA: correction
1A3 LATIN SMALL LETTER GHA: correction
34F CGJ: abbreviation
+616 ARABIC SMALL HIGH LIGATURE ALEF WITH YEH BARREE: correction
61C ALM: abbreviation
709 SYRIAC SUBLINEAR COLON SKEWED LEFT: correction
CDE KANNADA LETTER LLLA: correction
@@ -194,6 +196,8 @@ FD0 TIBETAN MARK BKA- SHOG GI MGO RGYAN: correction
180C FVS2: abbreviation
180D FVS3: abbreviation
180E MVS: abbreviation
+180F FVS4: abbreviation
+1BBD SUNDANESE LETTER ARCHAIC I: correction
200B ZWSP: abbreviation
200C ZWNJ: abbreviation
200D ZWJ: abbreviation
@@ -217,6 +221,7 @@ FD0 TIBETAN MARK BKA- SHOG GI MGO RGYAN: correction
2B7A LEFTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE VERTICAL STROKE: correction
2B7C RIGHTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE VERTICAL STROKE: correction
A015 YI SYLLABLE ITERATION MARK: correction
+AA6E MYANMAR LETTER KHAMTI LLA: correction
FE00 VS1: abbreviation
FE01 VS2: abbreviation
FE02 VS3: abbreviation
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Nt.pl b/Master/tlpkg/tlperl/lib/unicore/To/Nt.pl
index 117fa60d0ef..e56a1b53d1c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Nt.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Nt.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -212,17 +212,21 @@ FF10 FF19 Decimal
11C5A 11C6C Numeric
11D50 11D59 Decimal
11DA0 11DA9 Decimal
+11F50 11F59 Decimal
11FC0 11FD4 Numeric
12400 1246E Numeric
16A60 16A69 Decimal
+16AC0 16AC9 Decimal
16B50 16B59 Decimal
16B5B 16B61 Numeric
16E80 16E96 Numeric
+1D2C0 1D2D3 Numeric
1D2E0 1D2F3 Numeric
1D360 1D378 Numeric
1D7CE 1D7FF Decimal
1E140 1E149 Decimal
1E2F0 1E2F9 Decimal
+1E4F0 1E4F9 Decimal
1E8C7 1E8CF Numeric
1E950 1E959 Decimal
1EC71 1ECAB Numeric
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Nv.pl b/Master/tlpkg/tlperl/lib/unicore/To/Nv.pl
index 4b30af2fc44..d4b26c1ba6b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Nv.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Nv.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -584,6 +584,7 @@ FF10 FF19 0
11C6C 100
11D50 11D59 0
11DA0 11DA9 0
+11F50 11F59 0
11FC0 1/320
11FC1 1/160
11FC2 1/80
@@ -653,6 +654,7 @@ FF10 FF19 0
12468 50
12469 1246E 4
16A60 16A69 0
+16AC0 16AC9 0
16B50 16B59 0
16B5B 10
16B5C 100
@@ -663,6 +665,7 @@ FF10 FF19 0
16B61 1000000000000
16E80 16E93 0
16E94 16E96 1
+1D2C0 1D2D3 0
1D2E0 1D2F3 0
1D360 1D369 1
1D36A 20
@@ -683,6 +686,7 @@ FF10 FF19 0
1D7F6 1D7FF 0
1E140 1E149 0
1E2F0 1E2F9 0
+1E4F0 1E4F9 0
1E8C7 1E8CF 1
1E950 1E959 0
1EC71 1EC7A 1
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/PerlDeci.pl b/Master/tlpkg/tlperl/lib/unicore/To/PerlDeci.pl
index 48ff4beacf1..c66d7b13b89 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/PerlDeci.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/PerlDeci.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -16,7 +16,7 @@
# the main body of the table, and what all code points missing from this file
# map to.
$Unicode::UCD::SwashInfo{'ToPerlDecimalDigit'}{'format'} = 'a'; # some entries need adjustment
-$Unicode::UCD::SwashInfo{'ToPerlDecimalDigit'}{'missing'} = ''; # code point maps to the null string
+$Unicode::UCD::SwashInfo{'ToPerlDecimalDigit'}{'missing'} = ''; # code point maps to the empty string
return <<'END';
30 39 0
@@ -73,7 +73,9 @@ FF10 FF19 0
11C50 11C59 0
11D50 11D59 0
11DA0 11DA9 0
+11F50 11F59 0
16A60 16A69 0
+16AC0 16AC9 0
16B50 16B59 0
1D7CE 1D7D7 0
1D7D8 1D7E1 0
@@ -82,6 +84,7 @@ FF10 FF19 0
1D7F6 1D7FF 0
1E140 1E149 0
1E2F0 1E2F9 0
+1E4F0 1E4F9 0
1E950 1E959 0
1FBF0 1FBF9 0
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/SB.pl b/Master/tlpkg/tlperl/lib/unicore/To/SB.pl
index 1587c171319..ac53157aed3 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/SB.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/SB.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -609,7 +609,7 @@ F8 FF Lower
60C 60D SContinue
610 61A Extend
61C Format
-61E 61F STerm
+61D 61F STerm
620 64A OLetter
64B 65F Extend
660 669 Numeric
@@ -660,9 +660,12 @@ F8 FF Lower
840 858 OLetter
859 85B Extend
860 86A OLetter
-8A0 8B4 OLetter
-8B6 8C7 OLetter
-8D3 8E1 Extend
+870 887 OLetter
+889 88E OLetter
+890 891 Format
+898 89F Extend
+8A0 8C9 OLetter
+8CA 8E1 Extend
8E2 Format
8E3 903 Extend
904 939 OLetter
@@ -774,12 +777,14 @@ C05 C0C OLetter
C0E C10 OLetter
C12 C28 OLetter
C2A C39 OLetter
+C3C Extend
C3D OLetter
C3E C44 Extend
C46 C48 Extend
C4A C4D Extend
C55 C56 Extend
C58 C5A OLetter
+C5D OLetter
C60 C61 OLetter
C62 C63 Extend
C66 C6F Numeric
@@ -796,11 +801,12 @@ CBE CC4 Extend
CC6 CC8 Extend
CCA CCD Extend
CD5 CD6 Extend
-CDE OLetter
+CDD CDE OLetter
CE0 CE1 OLetter
CE2 CE3 Extend
CE6 CEF Numeric
CF1 CF2 OLetter
+CF3 Extend
D00 D03 Extend
D04 D0C OLetter
D0E D10 OLetter
@@ -848,7 +854,7 @@ EB4 EBC Extend
EBD OLetter
EC0 EC4 OLetter
EC6 OLetter
-EC8 ECD Extend
+EC8 ECE Extend
ED0 ED9 Numeric
EDC EDF OLetter
F00 OLetter
@@ -892,7 +898,8 @@ FC6 Extend
10C7 Upper
10CD Upper
10D0 10FA OLetter
-10FC 1248 OLetter
+10FC Lower
+10FD 1248 OLetter
124A 124D OLetter
1250 1256 OLetter
1258 OLetter
@@ -922,10 +929,9 @@ FC6 Extend
169B 169C Close
16A0 16EA OLetter
16EE 16F8 OLetter
-1700 170C OLetter
-170E 1711 OLetter
-1712 1714 Extend
-1720 1731 OLetter
+1700 1711 OLetter
+1712 1715 Extend
+171F 1731 OLetter
1732 1734 Extend
1735 1736 STerm
1740 1751 OLetter
@@ -945,6 +951,7 @@ FC6 Extend
1809 STerm
180B 180D Extend
180E Format
+180F Extend
1810 1819 Numeric
1820 1878 OLetter
1880 1884 OLetter
@@ -973,15 +980,16 @@ FC6 Extend
1A90 1A99 Numeric
1AA7 OLetter
1AA8 1AAB STerm
-1AB0 1AC0 Extend
+1AB0 1ACE Extend
1B00 1B04 Extend
1B05 1B33 OLetter
1B34 1B44 Extend
-1B45 1B4B OLetter
+1B45 1B4C OLetter
1B50 1B59 Numeric
1B5A 1B5B STerm
1B5E 1B5F STerm
1B6B 1B73 Extend
+1B7D 1B7E STerm
1B80 1B82 Extend
1B83 1BA0 OLetter
1BA1 1BAD Extend
@@ -1010,8 +1018,7 @@ FC6 Extend
1CF7 1CF9 Extend
1CFA OLetter
1D00 1DBF Lower
-1DC0 1DF9 Extend
-1DFB 1DFF Extend
+1DC0 1DFF Extend
1E00 Upper
1E01 Lower
1E02 Upper
@@ -1361,8 +1368,8 @@ FC6 Extend
2983 2998 Close
29D8 29DB Close
29FC 29FD Close
-2C00 2C2E Upper
-2C30 2C5E Lower
+2C00 2C2F Upper
+2C30 2C5F Lower
2C60 Upper
2C61 Lower
2C62 2C64 Upper
@@ -1509,6 +1516,8 @@ FC6 Extend
2E2F OLetter
2E3C STerm
2E42 Close
+2E53 2E54 STerm
+2E55 2E5C Close
3000 Sp
3001 SContinue
3002 STerm
@@ -1530,8 +1539,7 @@ FC6 Extend
31A0 31BF OLetter
31F0 31FF OLetter
3400 4DBF OLetter
-4E00 9FFC OLetter
-A000 A48C OLetter
+4E00 A48C OLetter
A4D0 A4FD OLetter
A4FF STerm
A500 A60C OLetter
@@ -1757,12 +1765,23 @@ A7BC Upper
A7BD Lower
A7BE Upper
A7BF Lower
+A7C0 Upper
+A7C1 Lower
A7C2 Upper
A7C3 Lower
A7C4 A7C7 Upper
A7C8 Lower
A7C9 Upper
A7CA Lower
+A7D0 Upper
+A7D1 Lower
+A7D3 Lower
+A7D5 Lower
+A7D6 Upper
+A7D7 Lower
+A7D8 Upper
+A7D9 Lower
+A7F2 A7F4 Lower
A7F5 Upper
A7F6 Lower
A7F7 OLetter
@@ -1840,8 +1859,7 @@ AB11 AB16 OLetter
AB20 AB26 OLetter
AB28 AB2E OLetter
AB30 AB5A Lower
-AB5C AB68 Lower
-AB69 OLetter
+AB5C AB69 Lower
AB70 ABBF Lower
ABC0 ABE2 OLetter
ABE3 ABEA Extend
@@ -1940,9 +1958,22 @@ FFF9 FFFB Format
104D8 104FB Lower
10500 10527 OLetter
10530 10563 OLetter
+10570 1057A Upper
+1057C 1058A Upper
+1058C 10592 Upper
+10594 10595 Upper
+10597 105A1 Lower
+105A3 105B1 Lower
+105B3 105B9 Lower
+105BB 105BC Lower
10600 10736 OLetter
10740 10755 OLetter
10760 10767 OLetter
+10780 Lower
+10781 10782 OLetter
+10783 10785 Lower
+10787 107B0 Lower
+107B2 107BA Lower
10800 10805 OLetter
10808 OLetter
1080A 10835 OLetter
@@ -1985,11 +2016,15 @@ FFF9 FFFB Format
10E80 10EA9 OLetter
10EAB 10EAC Extend
10EB0 10EB1 OLetter
+10EFD 10EFF Extend
10F00 10F1C OLetter
10F27 OLetter
10F30 10F45 OLetter
10F46 10F50 Extend
10F55 10F59 STerm
+10F70 10F81 OLetter
+10F82 10F85 Extend
+10F86 10F89 STerm
10FB0 10FC4 OLetter
10FE0 10FF6 OLetter
11000 11002 Extend
@@ -1997,11 +2032,16 @@ FFF9 FFFB Format
11038 11046 Extend
11047 11048 STerm
11066 1106F Numeric
+11070 Extend
+11071 11072 OLetter
+11073 11074 Extend
+11075 OLetter
1107F 11082 Extend
11083 110AF OLetter
110B0 110BA Extend
110BD Format
110BE 110C1 STerm
+110C2 Extend
110CD Format
110D0 110E8 OLetter
110F0 110F9 Numeric
@@ -2034,6 +2074,8 @@ FFF9 FFFB Format
11238 11239 STerm
1123B 1123C STerm
1123E Extend
+1123F 11240 OLetter
+11241 Extend
11280 11286 OLetter
11288 OLetter
1128A 1128D OLetter
@@ -2093,6 +2135,7 @@ FFF9 FFFB Format
1171D 1172B Extend
11730 11739 Numeric
1173C 1173E STerm
+11740 11746 OLetter
11800 1182B OLetter
1182C 1183A Extend
118A0 118BF Upper
@@ -2134,7 +2177,7 @@ FFF9 FFFB Format
11A8A 11A99 Extend
11A9B 11A9C STerm
11A9D OLetter
-11AC0 11AF8 OLetter
+11AB0 11AF8 OLetter
11C00 11C08 OLetter
11C0A 11C2E OLetter
11C2F 11C36 Extend
@@ -2166,17 +2209,32 @@ FFF9 FFFB Format
11EE0 11EF2 OLetter
11EF3 11EF6 Extend
11EF7 11EF8 STerm
+11F00 11F01 Extend
+11F02 OLetter
+11F03 Extend
+11F04 11F10 OLetter
+11F12 11F33 OLetter
+11F34 11F3A Extend
+11F3E 11F42 Extend
+11F43 11F44 STerm
+11F50 11F59 Numeric
11FB0 OLetter
12000 12399 OLetter
12400 1246E OLetter
12480 12543 OLetter
-13000 1342E OLetter
-13430 13438 Format
+12F90 12FF0 OLetter
+13000 1342F OLetter
+13430 1343F Format
+13440 Extend
+13441 13446 OLetter
+13447 13455 Extend
14400 14646 OLetter
16800 16A38 OLetter
16A40 16A5E OLetter
16A60 16A69 Numeric
16A6E 16A6F STerm
+16A70 16ABE OLetter
+16AC0 16AC9 Numeric
16AD0 16AED OLetter
16AF0 16AF4 Extend
16AF5 STerm
@@ -2204,8 +2262,13 @@ FFF9 FFFB Format
17000 187F7 OLetter
18800 18CD5 OLetter
18D00 18D08 OLetter
-1B000 1B11E OLetter
+1AFF0 1AFF3 OLetter
+1AFF5 1AFFB OLetter
+1AFFD 1AFFE OLetter
+1B000 1B122 OLetter
+1B132 OLetter
1B150 1B152 OLetter
+1B155 OLetter
1B164 1B167 OLetter
1B170 1B2FB OLetter
1BC00 1BC6A OLetter
@@ -2215,6 +2278,8 @@ FFF9 FFFB Format
1BC9D 1BC9E Extend
1BC9F STerm
1BCA0 1BCA3 Format
+1CF00 1CF2D Extend
+1CF30 1CF46 Extend
1D165 1D169 Extend
1D16D 1D172 Extend
1D173 1D17A Format
@@ -2289,19 +2354,34 @@ FFF9 FFFB Format
1DA88 STerm
1DA9B 1DA9F Extend
1DAA1 1DAAF Extend
+1DF00 1DF09 Lower
+1DF0A OLetter
+1DF0B 1DF1E Lower
+1DF25 1DF2A Lower
1E000 1E006 Extend
1E008 1E018 Extend
1E01B 1E021 Extend
1E023 1E024 Extend
1E026 1E02A Extend
+1E030 1E06D Lower
+1E08F Extend
1E100 1E12C OLetter
1E130 1E136 Extend
1E137 1E13D OLetter
1E140 1E149 Numeric
1E14E OLetter
+1E290 1E2AD OLetter
+1E2AE Extend
1E2C0 1E2EB OLetter
1E2EC 1E2EF Extend
1E2F0 1E2F9 Numeric
+1E4D0 1E4EB OLetter
+1E4EC 1E4EF Extend
+1E4F0 1E4F9 Numeric
+1E7E0 1E7E6 OLetter
+1E7E8 1E7EB OLetter
+1E7ED 1E7EE OLetter
+1E7F0 1E7FE OLetter
1E800 1E8C4 OLetter
1E8D0 1E8D6 Extend
1E900 1E921 Upper
@@ -2347,13 +2427,14 @@ FFF9 FFFB Format
1F170 1F189 Upper
1F676 1F678 Close
1FBF0 1FBF9 Numeric
-20000 2A6DD OLetter
-2A700 2B734 OLetter
+20000 2A6DF OLetter
+2A700 2B739 OLetter
2B740 2B81D OLetter
2B820 2CEA1 OLetter
2CEB0 2EBE0 OLetter
2F800 2FA1D OLetter
30000 3134A OLetter
+31350 323AF OLetter
E0001 Format
E0020 E007F Extend
E0100 E01EF Extend
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Sc.pl b/Master/tlpkg/tlperl/lib/unicore/To/Sc.pl
index ca3b3140124..a8c268402b8 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Sc.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Sc.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -68,8 +68,7 @@ F8 2B8 Latin
60C Common
60D 61A Arabic
61B Common
-61C Arabic
-61E Arabic
+61C 61E Arabic
61F Common
620 63F Arabic
640 Common
@@ -92,9 +91,9 @@ F8 2B8 Latin
840 85B Mandaic
85E Mandaic
860 86A Syriac
-8A0 8B4 Arabic
-8B6 8C7 Arabic
-8D3 8E1 Arabic
+870 88E Arabic
+890 891 Arabic
+898 8E1 Arabic
8E2 Common
8E3 8FF Arabic
900 950 Devanagari
@@ -180,11 +179,12 @@ C00 C0C Telugu
C0E C10 Telugu
C12 C28 Telugu
C2A C39 Telugu
-C3D C44 Telugu
+C3C C44 Telugu
C46 C48 Telugu
C4A C4D Telugu
C55 C56 Telugu
C58 C5A Telugu
+C5D Telugu
C60 C63 Telugu
C66 C6F Telugu
C77 C7F Telugu
@@ -197,10 +197,10 @@ CBC CC4 Kannada
CC6 CC8 Kannada
CCA CCD Kannada
CD5 CD6 Kannada
-CDE Kannada
+CDD CDE Kannada
CE0 CE3 Kannada
CE6 CEF Kannada
-CF1 CF2 Kannada
+CF1 CF3 Kannada
D00 D0C Malayalam
D0E D10 Malayalam
D12 D44 Malayalam
@@ -231,7 +231,7 @@ EA5 Lao
EA7 EBD Lao
EC0 EC4 Lao
EC6 Lao
-EC8 ECD Lao
+EC8 ECE Lao
ED0 ED9 Lao
EDC EDF Lao
F00 F47 Tibetan
@@ -275,8 +275,8 @@ FD9 FDA Tibetan
16A0 16EA Runic
16EB 16ED Common
16EE 16F8 Runic
-1700 170C Tagalog
-170E 1714 Tagalog
+1700 1715 Tagalog
+171F Tagalog
1720 1734 Hanunoo
1735 1736 Common
1740 1753 Buhid
@@ -290,8 +290,7 @@ FD9 FDA Tibetan
1802 1803 Common
1804 Mongolian
1805 Common
-1806 180E Mongolian
-1810 1819 Mongolian
+1806 1819 Mongolian
1820 1878 Mongolian
1880 18AA Mongolian
18B0 18F5 Canadian_Aboriginal
@@ -314,9 +313,9 @@ FD9 FDA Tibetan
1A7F 1A89 Tai_Tham
1A90 1A99 Tai_Tham
1AA0 1AAD Tai_Tham
-1AB0 1AC0 Inherited
-1B00 1B4B Balinese
-1B50 1B7C Balinese
+1AB0 1ACE Inherited
+1B00 1B4C Balinese
+1B50 1B7E Balinese
1B80 1BBF Sundanese
1BC0 1BF3 Batak
1BFC 1BFF Batak
@@ -351,8 +350,7 @@ FD9 FDA Tibetan
1D78 Cyrillic
1D79 1DBE Latin
1DBF Greek
-1DC0 1DF9 Inherited
-1DFB 1DFF Inherited
+1DC0 1DFF Inherited
1E00 1EFF Latin
1F00 1F15 Greek
1F18 1F1D Greek
@@ -379,7 +377,7 @@ FD9 FDA Tibetan
207F Latin
2080 208E Common
2090 209C Latin
-20A0 20BF Common
+20A0 20C0 Common
20D0 20F0 Inherited
2100 2125 Common
2126 Greek
@@ -399,8 +397,7 @@ FD9 FDA Tibetan
2900 2B73 Common
2B76 2B95 Common
2B97 2BFF Common
-2C00 2C2E Glagolitic
-2C30 2C5E Glagolitic
+2C00 2C5F Glagolitic
2C60 2C7F Latin
2C80 2CF3 Coptic
2CF9 2CFF Coptic
@@ -420,7 +417,7 @@ FD9 FDA Tibetan
2DD0 2DD6 Ethiopic
2DD8 2DDE Ethiopic
2DE0 2DFF Cyrillic
-2E00 2E52 Common
+2E00 2E5D Common
2E80 2E99 Han
2E9B 2EF3 Han
2F00 2FD5 Han
@@ -460,7 +457,7 @@ FD9 FDA Tibetan
3358 33FF Common
3400 4DBF Han
4DC0 4DFF Common
-4E00 9FFC Han
+4E00 9FFF Han
A000 A48C Yi
A490 A4C6 Yi
A4D0 A4FF Lisu
@@ -470,9 +467,11 @@ A6A0 A6F7 Bamum
A700 A721 Common
A722 A787 Latin
A788 A78A Common
-A78B A7BF Latin
-A7C2 A7CA Latin
-A7F5 A7FF Latin
+A78B A7CA Latin
+A7D0 A7D1 Latin
+A7D3 Latin
+A7D5 A7D9 Latin
+A7F2 A7FF Latin
A800 A82C Syloti_Nagri
A830 A839 Common
A840 A877 Phags_Pa
@@ -525,12 +524,13 @@ FB3E Hebrew
FB40 FB41 Hebrew
FB43 FB44 Hebrew
FB46 FB4F Hebrew
-FB50 FBC1 Arabic
+FB50 FBC2 Arabic
FBD3 FD3D Arabic
FD3E FD3F Common
-FD50 FD8F Arabic
+FD40 FD8F Arabic
FD92 FDC7 Arabic
-FDF0 FDFD Arabic
+FDCF Arabic
+FDF0 FDFF Arabic
FE00 FE0F Inherited
FE10 FE19 Common
FE20 FE2D Inherited
@@ -594,9 +594,20 @@ FFF9 FFFD Common
10500 10527 Elbasan
10530 10563 Caucasian_Albanian
1056F Caucasian_Albanian
+10570 1057A Vithkuqi
+1057C 1058A Vithkuqi
+1058C 10592 Vithkuqi
+10594 10595 Vithkuqi
+10597 105A1 Vithkuqi
+105A3 105B1 Vithkuqi
+105B3 105B9 Vithkuqi
+105BB 105BC Vithkuqi
10600 10736 Linear_A
10740 10755 Linear_A
10760 10767 Linear_A
+10780 10785 Latin
+10787 107B0 Latin
+107B2 107BA Latin
10800 10805 Cypriot
10808 Cypriot
1080A 10835 Cypriot
@@ -650,14 +661,16 @@ FFF9 FFFD Common
10E80 10EA9 Yezidi
10EAB 10EAD Yezidi
10EB0 10EB1 Yezidi
+10EFD 10EFF Arabic
10F00 10F27 Old_Sogdian
10F30 10F59 Sogdian
+10F70 10F89 Old_Uyghur
10FB0 10FCB Chorasmian
10FE0 10FF6 Elymaic
11000 1104D Brahmi
-11052 1106F Brahmi
+11052 11075 Brahmi
1107F Brahmi
-11080 110C1 Kaithi
+11080 110C2 Kaithi
110CD Kaithi
110D0 110E8 Sora_Sompeng
110F0 110F9 Sora_Sompeng
@@ -667,7 +680,7 @@ FFF9 FFFD Common
11180 111DF Sharada
111E1 111F4 Sinhala
11200 11211 Khojki
-11213 1123E Khojki
+11213 11241 Khojki
11280 11286 Multani
11288 Multani
1128A 1128D Multani
@@ -700,11 +713,11 @@ FFF9 FFFD Common
11600 11644 Modi
11650 11659 Modi
11660 1166C Mongolian
-11680 116B8 Takri
+11680 116B9 Takri
116C0 116C9 Takri
11700 1171A Ahom
1171D 1172B Ahom
-11730 1173F Ahom
+11730 11746 Ahom
11800 1183B Dogra
118A0 118F2 Warang_Citi
118FF Warang_Citi
@@ -721,7 +734,9 @@ FFF9 FFFD Common
119DA 119E4 Nandinagari
11A00 11A47 Zanabazar_Square
11A50 11AA2 Soyombo
+11AB0 11ABF Canadian_Aboriginal
11AC0 11AF8 Pau_Cin_Hau
+11B00 11B09 Devanagari
11C00 11C08 Bhaiksuki
11C0A 11C36 Bhaiksuki
11C38 11C45 Bhaiksuki
@@ -743,6 +758,9 @@ FFF9 FFFD Common
11D93 11D98 Gunjala_Gondi
11DA0 11DA9 Gunjala_Gondi
11EE0 11EF8 Makasar
+11F00 11F10 Kawi
+11F12 11F3A Kawi
+11F3E 11F59 Kawi
11FB0 Lisu
11FC0 11FF1 Tamil
11FFF Tamil
@@ -750,13 +768,15 @@ FFF9 FFFD Common
12400 1246E Cuneiform
12470 12474 Cuneiform
12480 12543 Cuneiform
-13000 1342E Egyptian_Hieroglyphs
-13430 13438 Egyptian_Hieroglyphs
+12F90 12FF2 Cypro_Minoan
+13000 13455 Egyptian_Hieroglyphs
14400 14646 Anatolian_Hieroglyphs
16800 16A38 Bamum
16A40 16A5E Mro
16A60 16A69 Mro
16A6E 16A6F Mro
+16A70 16ABE Tangsa
+16AC0 16AC9 Tangsa
16AD0 16AED Bassa_Vah
16AF0 16AF5 Bassa_Vah
16B00 16B45 Pahawh_Hmong
@@ -770,16 +790,22 @@ FFF9 FFFD Common
16F8F 16F9F Miao
16FE0 Tangut
16FE1 Nushu
-16FE2 16FE3 Common
+16FE2 16FE3 Han
16FE4 Khitan_Small_Script
16FF0 16FF1 Han
17000 187F7 Tangut
18800 18AFF Tangut
18B00 18CD5 Khitan_Small_Script
18D00 18D08 Tangut
+1AFF0 1AFF3 Katakana
+1AFF5 1AFFB Katakana
+1AFFD 1AFFE Katakana
1B000 Katakana
-1B001 1B11E Hiragana
+1B001 1B11F Hiragana
+1B120 1B122 Katakana
+1B132 Hiragana
1B150 1B152 Hiragana
+1B155 Katakana
1B164 1B167 Katakana
1B170 1B2FB Nushu
1BC00 1BC6A Duployan
@@ -788,6 +814,9 @@ FFF9 FFFD Common
1BC90 1BC99 Duployan
1BC9C 1BC9F Duployan
1BCA0 1BCA3 Common
+1CF00 1CF2D Inherited
+1CF30 1CF46 Inherited
+1CF50 1CFC3 Common
1D000 1D0F5 Common
1D100 1D126 Common
1D129 1D166 Common
@@ -798,8 +827,9 @@ FFF9 FFFD Common
1D185 1D18B Inherited
1D18C 1D1A9 Common
1D1AA 1D1AD Inherited
-1D1AE 1D1E8 Common
+1D1AE 1D1EA Common
1D200 1D245 Greek
+1D2C0 1D2D3 Common
1D2E0 1D2F3 Common
1D300 1D356 Common
1D360 1D378 Common
@@ -827,17 +857,27 @@ FFF9 FFFD Common
1D800 1DA8B SignWriting
1DA9B 1DA9F SignWriting
1DAA1 1DAAF SignWriting
+1DF00 1DF1E Latin
+1DF25 1DF2A Latin
1E000 1E006 Glagolitic
1E008 1E018 Glagolitic
1E01B 1E021 Glagolitic
1E023 1E024 Glagolitic
1E026 1E02A Glagolitic
+1E030 1E06D Cyrillic
+1E08F Cyrillic
1E100 1E12C Nyiakeng_Puachue_Hmong
1E130 1E13D Nyiakeng_Puachue_Hmong
1E140 1E149 Nyiakeng_Puachue_Hmong
1E14E 1E14F Nyiakeng_Puachue_Hmong
+1E290 1E2AE Toto
1E2C0 1E2F9 Wancho
1E2FF Wancho
+1E4D0 1E4F9 Nag_Mundari
+1E7E0 1E7E6 Ethiopic
+1E7E8 1E7EB Ethiopic
+1E7ED 1E7EE Ethiopic
+1E7F0 1E7FE Ethiopic
1E800 1E8C4 Mende_Kikakui
1E8C7 1E8D6 Mende_Kikakui
1E900 1E94B Adlam
@@ -894,38 +934,38 @@ FFF9 FFFD Common
1F250 1F251 Common
1F260 1F265 Common
1F300 1F6D7 Common
-1F6E0 1F6EC Common
+1F6DC 1F6EC Common
1F6F0 1F6FC Common
-1F700 1F773 Common
-1F780 1F7D8 Common
+1F700 1F776 Common
+1F77B 1F7D9 Common
1F7E0 1F7EB Common
+1F7F0 Common
1F800 1F80B Common
1F810 1F847 Common
1F850 1F859 Common
1F860 1F887 Common
1F890 1F8AD Common
1F8B0 1F8B1 Common
-1F900 1F978 Common
-1F97A 1F9CB Common
-1F9CD 1FA53 Common
+1F900 1FA53 Common
1FA60 1FA6D Common
-1FA70 1FA74 Common
-1FA78 1FA7A Common
-1FA80 1FA86 Common
-1FA90 1FAA8 Common
-1FAB0 1FAB6 Common
-1FAC0 1FAC2 Common
-1FAD0 1FAD6 Common
+1FA70 1FA7C Common
+1FA80 1FA88 Common
+1FA90 1FABD Common
+1FABF 1FAC5 Common
+1FACE 1FADB Common
+1FAE0 1FAE8 Common
+1FAF0 1FAF8 Common
1FB00 1FB92 Common
1FB94 1FBCA Common
1FBF0 1FBF9 Common
-20000 2A6DD Han
-2A700 2B734 Han
+20000 2A6DF Han
+2A700 2B739 Han
2B740 2B81D Han
2B820 2CEA1 Han
2CEB0 2EBE0 Han
2F800 2FA1D Han
30000 3134A Han
+31350 323AF Han
E0001 Common
E0020 E007F Common
E0100 E01EF Inherited
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Scx.pl b/Master/tlpkg/tlperl/lib/unicore/To/Scx.pl
index 964a32f6f55..21e58d82feb 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Scx.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Scx.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -73,14 +73,14 @@ F8 2B8 Latin
600 604 Arabic
605 Common
606 60B Arabic
-60C Arabic Hanifi_Rohingya Syriac Thaana Yezidi
+60C Arabic Nko Hanifi_Rohingya Syriac Thaana Yezidi
60D 61A Arabic
-61B Arabic Hanifi_Rohingya Syriac Thaana Yezidi
+61B Arabic Nko Hanifi_Rohingya Syriac Thaana Yezidi
61C Arabic Syriac Thaana
-61E Arabic
-61F Arabic Hanifi_Rohingya Syriac Thaana Yezidi
+61D 61E Arabic
+61F Adlam Arabic Nko Hanifi_Rohingya Syriac Thaana Yezidi
620 63F Arabic
-640 Adlam Arabic Mandaic Manichaean Psalter_Pahlavi Hanifi_Rohingya Sogdian Syriac
+640 Adlam Arabic Mandaic Manichaean Old_Uyghur Psalter_Pahlavi Hanifi_Rohingya Sogdian Syriac
641 64A Arabic
64B 655 Arabic Syriac
656 65F Arabic
@@ -104,9 +104,9 @@ F8 2B8 Latin
840 85B Mandaic
85E Mandaic
860 86A Syriac
-8A0 8B4 Arabic
-8B6 8C7 Arabic
-8D3 8E1 Arabic
+870 88E Arabic
+890 891 Arabic
+898 8E1 Arabic
8E2 Common
8E3 8FF Arabic
900 950 Devanagari
@@ -200,11 +200,12 @@ C00 C0C Telugu
C0E C10 Telugu
C12 C28 Telugu
C2A C39 Telugu
-C3D C44 Telugu
+C3C C44 Telugu
C46 C48 Telugu
C4A C4D Telugu
C55 C56 Telugu
C58 C5A Telugu
+C5D Telugu
C60 C63 Telugu
C66 C6F Telugu
C77 C7F Telugu
@@ -217,10 +218,10 @@ CBC CC4 Kannada
CC6 CC8 Kannada
CCA CCD Kannada
CD5 CD6 Kannada
-CDE Kannada
+CDD CDE Kannada
CE0 CE3 Kannada
CE6 CEF Kannada Nandinagari
-CF1 CF2 Kannada
+CF1 CF3 Kannada
D00 D0C Malayalam
D0E D10 Malayalam
D12 D44 Malayalam
@@ -251,7 +252,7 @@ EA5 Lao
EA7 EBD Lao
EC0 EC4 Lao
EC6 Lao
-EC8 ECD Lao
+EC8 ECE Lao
ED0 ED9 Lao
EDC EDF Lao
F00 F47 Tibetan
@@ -297,8 +298,8 @@ FD9 FDA Tibetan
16A0 16EA Runic
16EB 16ED Common
16EE 16F8 Runic
-1700 170C Tagalog
-170E 1714 Tagalog
+1700 1715 Tagalog
+171F Tagalog
1720 1734 Hanunoo
1735 1736 Buhid Hanunoo Tagbanwa Tagalog
1740 1753 Buhid
@@ -312,8 +313,7 @@ FD9 FDA Tibetan
1802 1803 Mongolian Phags_Pa
1804 Mongolian
1805 Mongolian Phags_Pa
-1806 180E Mongolian
-1810 1819 Mongolian
+1806 1819 Mongolian
1820 1878 Mongolian
1880 18AA Mongolian
18B0 18F5 Canadian_Aboriginal
@@ -336,9 +336,9 @@ FD9 FDA Tibetan
1A7F 1A89 Tai_Tham
1A90 1A99 Tai_Tham
1AA0 1AAD Tai_Tham
-1AB0 1AC0 Inherited
-1B00 1B4B Balinese
-1B50 1B7C Balinese
+1AB0 1ACE Inherited
+1B00 1B4C Balinese
+1B50 1B7E Balinese
1B80 1BBF Sundanese
1BC0 1BF3 Batak
1BFC 1BFF Batak
@@ -392,6 +392,7 @@ FD9 FDA Tibetan
1DC2 1DF7 Inherited
1DF8 Cyrillic Syriac
1DF9 Inherited
+1DFA Syriac
1DFB 1DFF Inherited
1E00 1EFF Latin
1F00 1F15 Greek
@@ -421,7 +422,7 @@ FD9 FDA Tibetan
207F Latin
2080 208E Common
2090 209C Latin
-20A0 20BF Common
+20A0 20C0 Common
20D0 20EF Inherited
20F0 Devanagari Grantha Latin
2100 2125 Common
@@ -442,8 +443,7 @@ FD9 FDA Tibetan
2900 2B73 Common
2B76 2B95 Common
2B97 2BFF Common
-2C00 2C2E Glagolitic
-2C30 2C5E Glagolitic
+2C00 2C5F Glagolitic
2C60 2C7F Latin
2C80 2CF3 Coptic
2CF9 2CFF Coptic
@@ -465,7 +465,7 @@ FD9 FDA Tibetan
2DE0 2DFF Cyrillic
2E00 2E42 Common
2E43 Cyrillic Glagolitic
-2E44 2E52 Common
+2E44 2E5D Common
2E80 2E99 Han
2E9B 2EF3 Han
2F00 2FD5 Han
@@ -525,7 +525,7 @@ FD9 FDA Tibetan
33FF Common
3400 4DBF Han
4DC0 4DFF Common
-4E00 9FFC Han
+4E00 9FFF Han
A000 A48C Yi
A490 A4C6 Yi
A4D0 A4FF Lisu
@@ -538,9 +538,11 @@ A700 A707 Han Latin
A708 A721 Common
A722 A787 Latin
A788 A78A Common
-A78B A7BF Latin
-A7C2 A7CA Latin
-A7F5 A7FF Latin
+A78B A7CA Latin
+A7D0 A7D1 Latin
+A7D3 Latin
+A7D5 A7D9 Latin
+A7F2 A7FF Latin
A800 A82C Syloti_Nagri
A830 A832 Devanagari Dogra Gujarati Gurmukhi Khojki Kannada Kaithi Mahajani Malayalam Modi Nandinagari Khudawadi Takri Tirhuta
A833 A835 Devanagari Dogra Gujarati Gurmukhi Khojki Kannada Kaithi Mahajani Modi Nandinagari Khudawadi Takri Tirhuta
@@ -599,15 +601,17 @@ FB3E Hebrew
FB40 FB41 Hebrew
FB43 FB44 Hebrew
FB46 FB4F Hebrew
-FB50 FBC1 Arabic
+FB50 FBC2 Arabic
FBD3 FD3D Arabic
-FD3E FD3F Common
-FD50 FD8F Arabic
+FD3E FD3F Arabic Nko
+FD40 FD8F Arabic
FD92 FDC7 Arabic
+FDCF Arabic
FDF0 FDF1 Arabic
FDF2 Arabic Thaana
FDF3 FDFC Arabic
FDFD Arabic Thaana
+FDFE FDFF Arabic
FE00 FE0F Inherited
FE10 FE19 Common
FE20 FE2D Inherited
@@ -645,7 +649,8 @@ FFF9 FFFD Common
1003F 1004D Linear_B
10050 1005D Linear_B
10080 100FA Linear_B
-10100 10102 Cypriot Linear_B
+10100 10101 Cypro_Minoan Cypriot Linear_B
+10102 Cypriot Linear_B
10107 10133 Cypriot Linear_A Linear_B
10137 1013F Cypriot Linear_B
10140 1018E Greek
@@ -673,9 +678,20 @@ FFF9 FFFD Common
10500 10527 Elbasan
10530 10563 Caucasian_Albanian
1056F Caucasian_Albanian
+10570 1057A Vithkuqi
+1057C 1058A Vithkuqi
+1058C 10592 Vithkuqi
+10594 10595 Vithkuqi
+10597 105A1 Vithkuqi
+105A3 105B1 Vithkuqi
+105B3 105B9 Vithkuqi
+105BB 105BC Vithkuqi
10600 10736 Linear_A
10740 10755 Linear_A
10760 10767 Linear_A
+10780 10785 Latin
+10787 107B0 Latin
+107B2 107BA Latin
10800 10805 Cypriot
10808 Cypriot
1080A 10835 Cypriot
@@ -709,7 +725,9 @@ FFF9 FFFD Common
10A60 10A7F Old_South_Arabian
10A80 10A9F Old_North_Arabian
10AC0 10AE6 Manichaean
-10AEB 10AF6 Manichaean
+10AEB 10AF1 Manichaean
+10AF2 Manichaean Old_Uyghur
+10AF3 10AF6 Manichaean
10B00 10B35 Avestan
10B39 10B3F Avestan
10B40 10B55 Inscriptional_Parthian
@@ -729,14 +747,16 @@ FFF9 FFFD Common
10E80 10EA9 Yezidi
10EAB 10EAD Yezidi
10EB0 10EB1 Yezidi
+10EFD 10EFF Arabic
10F00 10F27 Old_Sogdian
10F30 10F59 Sogdian
+10F70 10F89 Old_Uyghur
10FB0 10FCB Chorasmian
10FE0 10FF6 Elymaic
11000 1104D Brahmi
-11052 1106F Brahmi
+11052 11075 Brahmi
1107F Brahmi
-11080 110C1 Kaithi
+11080 110C2 Kaithi
110CD Kaithi
110D0 110E8 Sora_Sompeng
110F0 110F9 Sora_Sompeng
@@ -746,7 +766,7 @@ FFF9 FFFD Common
11180 111DF Sharada
111E1 111F4 Sinhala
11200 11211 Khojki
-11213 1123E Khojki
+11213 11241 Khojki
11280 11286 Multani
11288 Multani
1128A 1128D Multani
@@ -782,11 +802,11 @@ FFF9 FFFD Common
11600 11644 Modi
11650 11659 Modi
11660 1166C Mongolian
-11680 116B8 Takri
+11680 116B9 Takri
116C0 116C9 Takri
11700 1171A Ahom
1171D 1172B Ahom
-11730 1173F Ahom
+11730 11746 Ahom
11800 1183B Dogra
118A0 118F2 Warang_Citi
118FF Warang_Citi
@@ -803,7 +823,9 @@ FFF9 FFFD Common
119DA 119E4 Nandinagari
11A00 11A47 Zanabazar_Square
11A50 11AA2 Soyombo
+11AB0 11ABF Canadian_Aboriginal
11AC0 11AF8 Pau_Cin_Hau
+11B00 11B09 Devanagari
11C00 11C08 Bhaiksuki
11C0A 11C36 Bhaiksuki
11C38 11C45 Bhaiksuki
@@ -825,6 +847,9 @@ FFF9 FFFD Common
11D93 11D98 Gunjala_Gondi
11DA0 11DA9 Gunjala_Gondi
11EE0 11EF8 Makasar
+11F00 11F10 Kawi
+11F12 11F3A Kawi
+11F3E 11F59 Kawi
11FB0 Lisu
11FC0 11FCF Tamil
11FD0 11FD1 Grantha Tamil
@@ -836,13 +861,15 @@ FFF9 FFFD Common
12400 1246E Cuneiform
12470 12474 Cuneiform
12480 12543 Cuneiform
-13000 1342E Egyptian_Hieroglyphs
-13430 13438 Egyptian_Hieroglyphs
+12F90 12FF2 Cypro_Minoan
+13000 13455 Egyptian_Hieroglyphs
14400 14646 Anatolian_Hieroglyphs
16800 16A38 Bamum
16A40 16A5E Mro
16A60 16A69 Mro
16A6E 16A6F Mro
+16A70 16ABE Tangsa
+16AC0 16AC9 Tangsa
16AD0 16AED Bassa_Vah
16AF0 16AF5 Bassa_Vah
16B00 16B45 Pahawh_Hmong
@@ -856,16 +883,22 @@ FFF9 FFFD Common
16F8F 16F9F Miao
16FE0 Tangut
16FE1 Nushu
-16FE2 16FE3 Common
+16FE2 16FE3 Han
16FE4 Khitan_Small_Script
16FF0 16FF1 Han
17000 187F7 Tangut
18800 18AFF Tangut
18B00 18CD5 Khitan_Small_Script
18D00 18D08 Tangut
+1AFF0 1AFF3 Katakana
+1AFF5 1AFFB Katakana
+1AFFD 1AFFE Katakana
1B000 Katakana
-1B001 1B11E Hiragana
+1B001 1B11F Hiragana
+1B120 1B122 Katakana
+1B132 Hiragana
1B150 1B152 Hiragana
+1B155 Katakana
1B164 1B167 Katakana
1B170 1B2FB Nushu
1BC00 1BC6A Duployan
@@ -873,6 +906,9 @@ FFF9 FFFD Common
1BC80 1BC88 Duployan
1BC90 1BC99 Duployan
1BC9C 1BCA3 Duployan
+1CF00 1CF2D Inherited
+1CF30 1CF46 Inherited
+1CF50 1CFC3 Common
1D000 1D0F5 Common
1D100 1D126 Common
1D129 1D166 Common
@@ -883,8 +919,9 @@ FFF9 FFFD Common
1D185 1D18B Inherited
1D18C 1D1A9 Common
1D1AA 1D1AD Inherited
-1D1AE 1D1E8 Common
+1D1AE 1D1EA Common
1D200 1D245 Greek
+1D2C0 1D2D3 Common
1D2E0 1D2F3 Common
1D300 1D356 Common
1D360 1D371 Han
@@ -913,17 +950,27 @@ FFF9 FFFD Common
1D800 1DA8B SignWriting
1DA9B 1DA9F SignWriting
1DAA1 1DAAF SignWriting
+1DF00 1DF1E Latin
+1DF25 1DF2A Latin
1E000 1E006 Glagolitic
1E008 1E018 Glagolitic
1E01B 1E021 Glagolitic
1E023 1E024 Glagolitic
1E026 1E02A Glagolitic
+1E030 1E06D Cyrillic
+1E08F Cyrillic
1E100 1E12C Nyiakeng_Puachue_Hmong
1E130 1E13D Nyiakeng_Puachue_Hmong
1E140 1E149 Nyiakeng_Puachue_Hmong
1E14E 1E14F Nyiakeng_Puachue_Hmong
+1E290 1E2AE Toto
1E2C0 1E2F9 Wancho
1E2FF Wancho
+1E4D0 1E4F9 Nag_Mundari
+1E7E0 1E7E6 Ethiopic
+1E7E8 1E7EB Ethiopic
+1E7ED 1E7EE Ethiopic
+1E7F0 1E7FE Ethiopic
1E800 1E8C4 Mende_Kikakui
1E8C7 1E8D6 Mende_Kikakui
1E900 1E94B Adlam
@@ -980,38 +1027,38 @@ FFF9 FFFD Common
1F250 1F251 Han
1F260 1F265 Common
1F300 1F6D7 Common
-1F6E0 1F6EC Common
+1F6DC 1F6EC Common
1F6F0 1F6FC Common
-1F700 1F773 Common
-1F780 1F7D8 Common
+1F700 1F776 Common
+1F77B 1F7D9 Common
1F7E0 1F7EB Common
+1F7F0 Common
1F800 1F80B Common
1F810 1F847 Common
1F850 1F859 Common
1F860 1F887 Common
1F890 1F8AD Common
1F8B0 1F8B1 Common
-1F900 1F978 Common
-1F97A 1F9CB Common
-1F9CD 1FA53 Common
+1F900 1FA53 Common
1FA60 1FA6D Common
-1FA70 1FA74 Common
-1FA78 1FA7A Common
-1FA80 1FA86 Common
-1FA90 1FAA8 Common
-1FAB0 1FAB6 Common
-1FAC0 1FAC2 Common
-1FAD0 1FAD6 Common
+1FA70 1FA7C Common
+1FA80 1FA88 Common
+1FA90 1FABD Common
+1FABF 1FAC5 Common
+1FACE 1FADB Common
+1FAE0 1FAE8 Common
+1FAF0 1FAF8 Common
1FB00 1FB92 Common
1FB94 1FBCA Common
1FBF0 1FBF9 Common
-20000 2A6DD Han
-2A700 2B734 Han
+20000 2A6DF Han
+2A700 2B739 Han
2B740 2B81D Han
2B820 2CEA1 Han
2CEB0 2EBE0 Han
2F800 2FA1D Han
30000 3134A Han
+31350 323AF Han
E0001 Common
E0020 E007F Common
E0100 E01EF Inherited
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Tc.pl b/Master/tlpkg/tlperl/lib/unicore/To/Tc.pl
index b33f61afa2e..8a09ce32c27 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Tc.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Tc.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -573,7 +573,7 @@ FF 178
2170 217F 2160
2184 2183
24D0 24E9 24B6
-2C30 2C5E 2C00
+2C30 2C5F 2C00
2C61 2C60
2C65 23A
2C66 23E
@@ -740,15 +740,23 @@ A7B9 A7B8
A7BB A7BA
A7BD A7BC
A7BF A7BE
+A7C1 A7C0
A7C3 A7C2
A7C8 A7C7
A7CA A7C9
+A7D1 A7D0
+A7D7 A7D6
+A7D9 A7D8
A7F6 A7F5
AB53 A7B3
AB70 ABBF 13A0
FF41 FF5A FF21
10428 1044F 10400
104D8 104FB 104B0
+10597 105A1 10570
+105A3 105B1 1057C
+105B3 105B9 1058C
+105BB 105BC 10594
10CC0 10CF2 10C80
118C0 118DF 118A0
16E60 16E7F 16E40
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Title.pl b/Master/tlpkg/tlperl/lib/unicore/To/Title.pl
deleted file mode 100644
index bddf1e557a6..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/To/Title.pl
+++ /dev/null
@@ -1,1447 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
-
-# !!!!!!! IT IS DEPRECATED TO USE THIS FILE !!!!!!!
-
-# This file is for internal use by core Perl only. It is retained for
-# backwards compatibility with applications that may have come to rely on it,
-# but its format and even its name or existence are subject to change without
-# notice in a future Perl version. Don't use it directly. Instead, its
-# contents are now retrievable through a stable API in the Unicode::UCD
-# module: Unicode::UCD::prop_invmap('Titlecase_Mapping') (Values for individual
-# code points can be retrieved via Unicode::UCD::charprop());
-
-
-
-# The name this table is to be known by, with the format of the mappings in
-# the main body of the table, and what all code points missing from this file
-# map to.
-$Unicode::UCD::SwashInfo{'ToTitle'}{'format'} = 'x'; # non-negative hex whole number; a code point
-$Unicode::UCD::SwashInfo{'ToTitle'}{'specials_name'} = 'Unicode::UCD::ToSpecTitle'; # Name of hash of special mappings
-$Unicode::UCD::SwashInfo{'ToTitle'}{'missing'} = '<code point>'; # code point maps to itself
-
-# Some code points require special handling because their mappings are each to
-# multiple code points. These do not appear in the main body, but are defined
-# in the hash below.
-
-# Each key is the string of N bytes that together make up the UTF-8 encoding
-# for the code point. (i.e. the same as looking at the code point's UTF-8
-# under "use bytes"). Each value is the UTF-8 of the translation, for speed.
-%Unicode::UCD::ToSpecTitle = (
-"\xC3\x9F" => "\x{0053}\x{0073}", # U+00DF => 0053 0073
-"\xC5\x89" => "\x{02BC}\x{004E}", # U+0149 => 02BC 004E
-"\xC7\xB0" => "\x{004A}\x{030C}", # U+01F0 => 004A 030C
-"\xCE\x90" => "\x{0399}\x{0308}\x{0301}", # U+0390 => 0399 0308 0301
-"\xCE\xB0" => "\x{03A5}\x{0308}\x{0301}", # U+03B0 => 03A5 0308 0301
-"\xD6\x87" => "\x{0535}\x{0582}", # U+0587 => 0535 0582
-"\xE1\xBA\x96" => "\x{0048}\x{0331}", # U+1E96 => 0048 0331
-"\xE1\xBA\x97" => "\x{0054}\x{0308}", # U+1E97 => 0054 0308
-"\xE1\xBA\x98" => "\x{0057}\x{030A}", # U+1E98 => 0057 030A
-"\xE1\xBA\x99" => "\x{0059}\x{030A}", # U+1E99 => 0059 030A
-"\xE1\xBA\x9A" => "\x{0041}\x{02BE}", # U+1E9A => 0041 02BE
-"\xE1\xBD\x90" => "\x{03A5}\x{0313}", # U+1F50 => 03A5 0313
-"\xE1\xBD\x92" => "\x{03A5}\x{0313}\x{0300}", # U+1F52 => 03A5 0313 0300
-"\xE1\xBD\x94" => "\x{03A5}\x{0313}\x{0301}", # U+1F54 => 03A5 0313 0301
-"\xE1\xBD\x96" => "\x{03A5}\x{0313}\x{0342}", # U+1F56 => 03A5 0313 0342
-"\xE1\xBE\xB2" => "\x{1FBA}\x{0345}", # U+1FB2 => 1FBA 0345
-"\xE1\xBE\xB4" => "\x{0386}\x{0345}", # U+1FB4 => 0386 0345
-"\xE1\xBE\xB6" => "\x{0391}\x{0342}", # U+1FB6 => 0391 0342
-"\xE1\xBE\xB7" => "\x{0391}\x{0342}\x{0345}", # U+1FB7 => 0391 0342 0345
-"\xE1\xBF\x82" => "\x{1FCA}\x{0345}", # U+1FC2 => 1FCA 0345
-"\xE1\xBF\x84" => "\x{0389}\x{0345}", # U+1FC4 => 0389 0345
-"\xE1\xBF\x86" => "\x{0397}\x{0342}", # U+1FC6 => 0397 0342
-"\xE1\xBF\x87" => "\x{0397}\x{0342}\x{0345}", # U+1FC7 => 0397 0342 0345
-"\xE1\xBF\x92" => "\x{0399}\x{0308}\x{0300}", # U+1FD2 => 0399 0308 0300
-"\xE1\xBF\x93" => "\x{0399}\x{0308}\x{0301}", # U+1FD3 => 0399 0308 0301
-"\xE1\xBF\x96" => "\x{0399}\x{0342}", # U+1FD6 => 0399 0342
-"\xE1\xBF\x97" => "\x{0399}\x{0308}\x{0342}", # U+1FD7 => 0399 0308 0342
-"\xE1\xBF\xA2" => "\x{03A5}\x{0308}\x{0300}", # U+1FE2 => 03A5 0308 0300
-"\xE1\xBF\xA3" => "\x{03A5}\x{0308}\x{0301}", # U+1FE3 => 03A5 0308 0301
-"\xE1\xBF\xA4" => "\x{03A1}\x{0313}", # U+1FE4 => 03A1 0313
-"\xE1\xBF\xA6" => "\x{03A5}\x{0342}", # U+1FE6 => 03A5 0342
-"\xE1\xBF\xA7" => "\x{03A5}\x{0308}\x{0342}", # U+1FE7 => 03A5 0308 0342
-"\xE1\xBF\xB2" => "\x{1FFA}\x{0345}", # U+1FF2 => 1FFA 0345
-"\xE1\xBF\xB4" => "\x{038F}\x{0345}", # U+1FF4 => 038F 0345
-"\xE1\xBF\xB6" => "\x{03A9}\x{0342}", # U+1FF6 => 03A9 0342
-"\xE1\xBF\xB7" => "\x{03A9}\x{0342}\x{0345}", # U+1FF7 => 03A9 0342 0345
-"\xEF\xAC\x80" => "\x{0046}\x{0066}", # U+FB00 => 0046 0066
-"\xEF\xAC\x81" => "\x{0046}\x{0069}", # U+FB01 => 0046 0069
-"\xEF\xAC\x82" => "\x{0046}\x{006C}", # U+FB02 => 0046 006C
-"\xEF\xAC\x83" => "\x{0046}\x{0066}\x{0069}", # U+FB03 => 0046 0066 0069
-"\xEF\xAC\x84" => "\x{0046}\x{0066}\x{006C}", # U+FB04 => 0046 0066 006C
-"\xEF\xAC\x85" => "\x{0053}\x{0074}", # U+FB05 => 0053 0074
-"\xEF\xAC\x86" => "\x{0053}\x{0074}", # U+FB06 => 0053 0074
-"\xEF\xAC\x93" => "\x{0544}\x{0576}", # U+FB13 => 0544 0576
-"\xEF\xAC\x94" => "\x{0544}\x{0565}", # U+FB14 => 0544 0565
-"\xEF\xAC\x95" => "\x{0544}\x{056B}", # U+FB15 => 0544 056B
-"\xEF\xAC\x96" => "\x{054E}\x{0576}", # U+FB16 => 054E 0576
-"\xEF\xAC\x97" => "\x{0544}\x{056D}", # U+FB17 => 0544 056D
-);
-
-return <<'END';
-0061 0041
-0062 0042
-0063 0043
-0064 0044
-0065 0045
-0066 0046
-0067 0047
-0068 0048
-0069 0049
-006A 004A
-006B 004B
-006C 004C
-006D 004D
-006E 004E
-006F 004F
-0070 0050
-0071 0051
-0072 0052
-0073 0053
-0074 0054
-0075 0055
-0076 0056
-0077 0057
-0078 0058
-0079 0059
-007A 005A
-00B5 039C
-00E0 00C0
-00E1 00C1
-00E2 00C2
-00E3 00C3
-00E4 00C4
-00E5 00C5
-00E6 00C6
-00E7 00C7
-00E8 00C8
-00E9 00C9
-00EA 00CA
-00EB 00CB
-00EC 00CC
-00ED 00CD
-00EE 00CE
-00EF 00CF
-00F0 00D0
-00F1 00D1
-00F2 00D2
-00F3 00D3
-00F4 00D4
-00F5 00D5
-00F6 00D6
-00F8 00D8
-00F9 00D9
-00FA 00DA
-00FB 00DB
-00FC 00DC
-00FD 00DD
-00FE 00DE
-00FF 0178
-0101 0100
-0103 0102
-0105 0104
-0107 0106
-0109 0108
-010B 010A
-010D 010C
-010F 010E
-0111 0110
-0113 0112
-0115 0114
-0117 0116
-0119 0118
-011B 011A
-011D 011C
-011F 011E
-0121 0120
-0123 0122
-0125 0124
-0127 0126
-0129 0128
-012B 012A
-012D 012C
-012F 012E
-0131 0049
-0133 0132
-0135 0134
-0137 0136
-013A 0139
-013C 013B
-013E 013D
-0140 013F
-0142 0141
-0144 0143
-0146 0145
-0148 0147
-014B 014A
-014D 014C
-014F 014E
-0151 0150
-0153 0152
-0155 0154
-0157 0156
-0159 0158
-015B 015A
-015D 015C
-015F 015E
-0161 0160
-0163 0162
-0165 0164
-0167 0166
-0169 0168
-016B 016A
-016D 016C
-016F 016E
-0171 0170
-0173 0172
-0175 0174
-0177 0176
-017A 0179
-017C 017B
-017E 017D
-017F 0053
-0180 0243
-0183 0182
-0185 0184
-0188 0187
-018C 018B
-0192 0191
-0195 01F6
-0199 0198
-019A 023D
-019E 0220
-01A1 01A0
-01A3 01A2
-01A5 01A4
-01A8 01A7
-01AD 01AC
-01B0 01AF
-01B4 01B3
-01B6 01B5
-01B9 01B8
-01BD 01BC
-01BF 01F7
-01C4 01C5
-01C6 01C5
-01C7 01C8
-01C9 01C8
-01CA 01CB
-01CC 01CB
-01CE 01CD
-01D0 01CF
-01D2 01D1
-01D4 01D3
-01D6 01D5
-01D8 01D7
-01DA 01D9
-01DC 01DB
-01DD 018E
-01DF 01DE
-01E1 01E0
-01E3 01E2
-01E5 01E4
-01E7 01E6
-01E9 01E8
-01EB 01EA
-01ED 01EC
-01EF 01EE
-01F1 01F2
-01F3 01F2
-01F5 01F4
-01F9 01F8
-01FB 01FA
-01FD 01FC
-01FF 01FE
-0201 0200
-0203 0202
-0205 0204
-0207 0206
-0209 0208
-020B 020A
-020D 020C
-020F 020E
-0211 0210
-0213 0212
-0215 0214
-0217 0216
-0219 0218
-021B 021A
-021D 021C
-021F 021E
-0223 0222
-0225 0224
-0227 0226
-0229 0228
-022B 022A
-022D 022C
-022F 022E
-0231 0230
-0233 0232
-023C 023B
-023F 2C7E
-0240 2C7F
-0242 0241
-0247 0246
-0249 0248
-024B 024A
-024D 024C
-024F 024E
-0250 2C6F
-0251 2C6D
-0252 2C70
-0253 0181
-0254 0186
-0256 0189
-0257 018A
-0259 018F
-025B 0190
-025C A7AB
-0260 0193
-0261 A7AC
-0263 0194
-0265 A78D
-0266 A7AA
-0268 0197
-0269 0196
-026A A7AE
-026B 2C62
-026C A7AD
-026F 019C
-0271 2C6E
-0272 019D
-0275 019F
-027D 2C64
-0280 01A6
-0282 A7C5
-0283 01A9
-0287 A7B1
-0288 01AE
-0289 0244
-028A 01B1
-028B 01B2
-028C 0245
-0292 01B7
-029D A7B2
-029E A7B0
-0345 0399
-0371 0370
-0373 0372
-0377 0376
-037B 03FD
-037C 03FE
-037D 03FF
-03AC 0386
-03AD 0388
-03AE 0389
-03AF 038A
-03B1 0391
-03B2 0392
-03B3 0393
-03B4 0394
-03B5 0395
-03B6 0396
-03B7 0397
-03B8 0398
-03B9 0399
-03BA 039A
-03BB 039B
-03BC 039C
-03BD 039D
-03BE 039E
-03BF 039F
-03C0 03A0
-03C1 03A1
-03C2 03A3
-03C3 03A3
-03C4 03A4
-03C5 03A5
-03C6 03A6
-03C7 03A7
-03C8 03A8
-03C9 03A9
-03CA 03AA
-03CB 03AB
-03CC 038C
-03CD 038E
-03CE 038F
-03D0 0392
-03D1 0398
-03D5 03A6
-03D6 03A0
-03D7 03CF
-03D9 03D8
-03DB 03DA
-03DD 03DC
-03DF 03DE
-03E1 03E0
-03E3 03E2
-03E5 03E4
-03E7 03E6
-03E9 03E8
-03EB 03EA
-03ED 03EC
-03EF 03EE
-03F0 039A
-03F1 03A1
-03F2 03F9
-03F3 037F
-03F5 0395
-03F8 03F7
-03FB 03FA
-0430 0410
-0431 0411
-0432 0412
-0433 0413
-0434 0414
-0435 0415
-0436 0416
-0437 0417
-0438 0418
-0439 0419
-043A 041A
-043B 041B
-043C 041C
-043D 041D
-043E 041E
-043F 041F
-0440 0420
-0441 0421
-0442 0422
-0443 0423
-0444 0424
-0445 0425
-0446 0426
-0447 0427
-0448 0428
-0449 0429
-044A 042A
-044B 042B
-044C 042C
-044D 042D
-044E 042E
-044F 042F
-0450 0400
-0451 0401
-0452 0402
-0453 0403
-0454 0404
-0455 0405
-0456 0406
-0457 0407
-0458 0408
-0459 0409
-045A 040A
-045B 040B
-045C 040C
-045D 040D
-045E 040E
-045F 040F
-0461 0460
-0463 0462
-0465 0464
-0467 0466
-0469 0468
-046B 046A
-046D 046C
-046F 046E
-0471 0470
-0473 0472
-0475 0474
-0477 0476
-0479 0478
-047B 047A
-047D 047C
-047F 047E
-0481 0480
-048B 048A
-048D 048C
-048F 048E
-0491 0490
-0493 0492
-0495 0494
-0497 0496
-0499 0498
-049B 049A
-049D 049C
-049F 049E
-04A1 04A0
-04A3 04A2
-04A5 04A4
-04A7 04A6
-04A9 04A8
-04AB 04AA
-04AD 04AC
-04AF 04AE
-04B1 04B0
-04B3 04B2
-04B5 04B4
-04B7 04B6
-04B9 04B8
-04BB 04BA
-04BD 04BC
-04BF 04BE
-04C2 04C1
-04C4 04C3
-04C6 04C5
-04C8 04C7
-04CA 04C9
-04CC 04CB
-04CE 04CD
-04CF 04C0
-04D1 04D0
-04D3 04D2
-04D5 04D4
-04D7 04D6
-04D9 04D8
-04DB 04DA
-04DD 04DC
-04DF 04DE
-04E1 04E0
-04E3 04E2
-04E5 04E4
-04E7 04E6
-04E9 04E8
-04EB 04EA
-04ED 04EC
-04EF 04EE
-04F1 04F0
-04F3 04F2
-04F5 04F4
-04F7 04F6
-04F9 04F8
-04FB 04FA
-04FD 04FC
-04FF 04FE
-0501 0500
-0503 0502
-0505 0504
-0507 0506
-0509 0508
-050B 050A
-050D 050C
-050F 050E
-0511 0510
-0513 0512
-0515 0514
-0517 0516
-0519 0518
-051B 051A
-051D 051C
-051F 051E
-0521 0520
-0523 0522
-0525 0524
-0527 0526
-0529 0528
-052B 052A
-052D 052C
-052F 052E
-0561 0531
-0562 0532
-0563 0533
-0564 0534
-0565 0535
-0566 0536
-0567 0537
-0568 0538
-0569 0539
-056A 053A
-056B 053B
-056C 053C
-056D 053D
-056E 053E
-056F 053F
-0570 0540
-0571 0541
-0572 0542
-0573 0543
-0574 0544
-0575 0545
-0576 0546
-0577 0547
-0578 0548
-0579 0549
-057A 054A
-057B 054B
-057C 054C
-057D 054D
-057E 054E
-057F 054F
-0580 0550
-0581 0551
-0582 0552
-0583 0553
-0584 0554
-0585 0555
-0586 0556
-13F8 13F0
-13F9 13F1
-13FA 13F2
-13FB 13F3
-13FC 13F4
-13FD 13F5
-1C80 0412
-1C81 0414
-1C82 041E
-1C83 0421
-1C84 0422
-1C85 0422
-1C86 042A
-1C87 0462
-1C88 A64A
-1D79 A77D
-1D7D 2C63
-1D8E A7C6
-1E01 1E00
-1E03 1E02
-1E05 1E04
-1E07 1E06
-1E09 1E08
-1E0B 1E0A
-1E0D 1E0C
-1E0F 1E0E
-1E11 1E10
-1E13 1E12
-1E15 1E14
-1E17 1E16
-1E19 1E18
-1E1B 1E1A
-1E1D 1E1C
-1E1F 1E1E
-1E21 1E20
-1E23 1E22
-1E25 1E24
-1E27 1E26
-1E29 1E28
-1E2B 1E2A
-1E2D 1E2C
-1E2F 1E2E
-1E31 1E30
-1E33 1E32
-1E35 1E34
-1E37 1E36
-1E39 1E38
-1E3B 1E3A
-1E3D 1E3C
-1E3F 1E3E
-1E41 1E40
-1E43 1E42
-1E45 1E44
-1E47 1E46
-1E49 1E48
-1E4B 1E4A
-1E4D 1E4C
-1E4F 1E4E
-1E51 1E50
-1E53 1E52
-1E55 1E54
-1E57 1E56
-1E59 1E58
-1E5B 1E5A
-1E5D 1E5C
-1E5F 1E5E
-1E61 1E60
-1E63 1E62
-1E65 1E64
-1E67 1E66
-1E69 1E68
-1E6B 1E6A
-1E6D 1E6C
-1E6F 1E6E
-1E71 1E70
-1E73 1E72
-1E75 1E74
-1E77 1E76
-1E79 1E78
-1E7B 1E7A
-1E7D 1E7C
-1E7F 1E7E
-1E81 1E80
-1E83 1E82
-1E85 1E84
-1E87 1E86
-1E89 1E88
-1E8B 1E8A
-1E8D 1E8C
-1E8F 1E8E
-1E91 1E90
-1E93 1E92
-1E95 1E94
-1E9B 1E60
-1EA1 1EA0
-1EA3 1EA2
-1EA5 1EA4
-1EA7 1EA6
-1EA9 1EA8
-1EAB 1EAA
-1EAD 1EAC
-1EAF 1EAE
-1EB1 1EB0
-1EB3 1EB2
-1EB5 1EB4
-1EB7 1EB6
-1EB9 1EB8
-1EBB 1EBA
-1EBD 1EBC
-1EBF 1EBE
-1EC1 1EC0
-1EC3 1EC2
-1EC5 1EC4
-1EC7 1EC6
-1EC9 1EC8
-1ECB 1ECA
-1ECD 1ECC
-1ECF 1ECE
-1ED1 1ED0
-1ED3 1ED2
-1ED5 1ED4
-1ED7 1ED6
-1ED9 1ED8
-1EDB 1EDA
-1EDD 1EDC
-1EDF 1EDE
-1EE1 1EE0
-1EE3 1EE2
-1EE5 1EE4
-1EE7 1EE6
-1EE9 1EE8
-1EEB 1EEA
-1EED 1EEC
-1EEF 1EEE
-1EF1 1EF0
-1EF3 1EF2
-1EF5 1EF4
-1EF7 1EF6
-1EF9 1EF8
-1EFB 1EFA
-1EFD 1EFC
-1EFF 1EFE
-1F00 1F08
-1F01 1F09
-1F02 1F0A
-1F03 1F0B
-1F04 1F0C
-1F05 1F0D
-1F06 1F0E
-1F07 1F0F
-1F10 1F18
-1F11 1F19
-1F12 1F1A
-1F13 1F1B
-1F14 1F1C
-1F15 1F1D
-1F20 1F28
-1F21 1F29
-1F22 1F2A
-1F23 1F2B
-1F24 1F2C
-1F25 1F2D
-1F26 1F2E
-1F27 1F2F
-1F30 1F38
-1F31 1F39
-1F32 1F3A
-1F33 1F3B
-1F34 1F3C
-1F35 1F3D
-1F36 1F3E
-1F37 1F3F
-1F40 1F48
-1F41 1F49
-1F42 1F4A
-1F43 1F4B
-1F44 1F4C
-1F45 1F4D
-1F51 1F59
-1F53 1F5B
-1F55 1F5D
-1F57 1F5F
-1F60 1F68
-1F61 1F69
-1F62 1F6A
-1F63 1F6B
-1F64 1F6C
-1F65 1F6D
-1F66 1F6E
-1F67 1F6F
-1F70 1FBA
-1F71 1FBB
-1F72 1FC8
-1F73 1FC9
-1F74 1FCA
-1F75 1FCB
-1F76 1FDA
-1F77 1FDB
-1F78 1FF8
-1F79 1FF9
-1F7A 1FEA
-1F7B 1FEB
-1F7C 1FFA
-1F7D 1FFB
-1F80 1F88
-1F81 1F89
-1F82 1F8A
-1F83 1F8B
-1F84 1F8C
-1F85 1F8D
-1F86 1F8E
-1F87 1F8F
-1F90 1F98
-1F91 1F99
-1F92 1F9A
-1F93 1F9B
-1F94 1F9C
-1F95 1F9D
-1F96 1F9E
-1F97 1F9F
-1FA0 1FA8
-1FA1 1FA9
-1FA2 1FAA
-1FA3 1FAB
-1FA4 1FAC
-1FA5 1FAD
-1FA6 1FAE
-1FA7 1FAF
-1FB0 1FB8
-1FB1 1FB9
-1FB3 1FBC
-1FBE 0399
-1FC3 1FCC
-1FD0 1FD8
-1FD1 1FD9
-1FE0 1FE8
-1FE1 1FE9
-1FE5 1FEC
-1FF3 1FFC
-214E 2132
-2170 2160
-2171 2161
-2172 2162
-2173 2163
-2174 2164
-2175 2165
-2176 2166
-2177 2167
-2178 2168
-2179 2169
-217A 216A
-217B 216B
-217C 216C
-217D 216D
-217E 216E
-217F 216F
-2184 2183
-24D0 24B6
-24D1 24B7
-24D2 24B8
-24D3 24B9
-24D4 24BA
-24D5 24BB
-24D6 24BC
-24D7 24BD
-24D8 24BE
-24D9 24BF
-24DA 24C0
-24DB 24C1
-24DC 24C2
-24DD 24C3
-24DE 24C4
-24DF 24C5
-24E0 24C6
-24E1 24C7
-24E2 24C8
-24E3 24C9
-24E4 24CA
-24E5 24CB
-24E6 24CC
-24E7 24CD
-24E8 24CE
-24E9 24CF
-2C30 2C00
-2C31 2C01
-2C32 2C02
-2C33 2C03
-2C34 2C04
-2C35 2C05
-2C36 2C06
-2C37 2C07
-2C38 2C08
-2C39 2C09
-2C3A 2C0A
-2C3B 2C0B
-2C3C 2C0C
-2C3D 2C0D
-2C3E 2C0E
-2C3F 2C0F
-2C40 2C10
-2C41 2C11
-2C42 2C12
-2C43 2C13
-2C44 2C14
-2C45 2C15
-2C46 2C16
-2C47 2C17
-2C48 2C18
-2C49 2C19
-2C4A 2C1A
-2C4B 2C1B
-2C4C 2C1C
-2C4D 2C1D
-2C4E 2C1E
-2C4F 2C1F
-2C50 2C20
-2C51 2C21
-2C52 2C22
-2C53 2C23
-2C54 2C24
-2C55 2C25
-2C56 2C26
-2C57 2C27
-2C58 2C28
-2C59 2C29
-2C5A 2C2A
-2C5B 2C2B
-2C5C 2C2C
-2C5D 2C2D
-2C5E 2C2E
-2C61 2C60
-2C65 023A
-2C66 023E
-2C68 2C67
-2C6A 2C69
-2C6C 2C6B
-2C73 2C72
-2C76 2C75
-2C81 2C80
-2C83 2C82
-2C85 2C84
-2C87 2C86
-2C89 2C88
-2C8B 2C8A
-2C8D 2C8C
-2C8F 2C8E
-2C91 2C90
-2C93 2C92
-2C95 2C94
-2C97 2C96
-2C99 2C98
-2C9B 2C9A
-2C9D 2C9C
-2C9F 2C9E
-2CA1 2CA0
-2CA3 2CA2
-2CA5 2CA4
-2CA7 2CA6
-2CA9 2CA8
-2CAB 2CAA
-2CAD 2CAC
-2CAF 2CAE
-2CB1 2CB0
-2CB3 2CB2
-2CB5 2CB4
-2CB7 2CB6
-2CB9 2CB8
-2CBB 2CBA
-2CBD 2CBC
-2CBF 2CBE
-2CC1 2CC0
-2CC3 2CC2
-2CC5 2CC4
-2CC7 2CC6
-2CC9 2CC8
-2CCB 2CCA
-2CCD 2CCC
-2CCF 2CCE
-2CD1 2CD0
-2CD3 2CD2
-2CD5 2CD4
-2CD7 2CD6
-2CD9 2CD8
-2CDB 2CDA
-2CDD 2CDC
-2CDF 2CDE
-2CE1 2CE0
-2CE3 2CE2
-2CEC 2CEB
-2CEE 2CED
-2CF3 2CF2
-2D00 10A0
-2D01 10A1
-2D02 10A2
-2D03 10A3
-2D04 10A4
-2D05 10A5
-2D06 10A6
-2D07 10A7
-2D08 10A8
-2D09 10A9
-2D0A 10AA
-2D0B 10AB
-2D0C 10AC
-2D0D 10AD
-2D0E 10AE
-2D0F 10AF
-2D10 10B0
-2D11 10B1
-2D12 10B2
-2D13 10B3
-2D14 10B4
-2D15 10B5
-2D16 10B6
-2D17 10B7
-2D18 10B8
-2D19 10B9
-2D1A 10BA
-2D1B 10BB
-2D1C 10BC
-2D1D 10BD
-2D1E 10BE
-2D1F 10BF
-2D20 10C0
-2D21 10C1
-2D22 10C2
-2D23 10C3
-2D24 10C4
-2D25 10C5
-2D27 10C7
-2D2D 10CD
-A641 A640
-A643 A642
-A645 A644
-A647 A646
-A649 A648
-A64B A64A
-A64D A64C
-A64F A64E
-A651 A650
-A653 A652
-A655 A654
-A657 A656
-A659 A658
-A65B A65A
-A65D A65C
-A65F A65E
-A661 A660
-A663 A662
-A665 A664
-A667 A666
-A669 A668
-A66B A66A
-A66D A66C
-A681 A680
-A683 A682
-A685 A684
-A687 A686
-A689 A688
-A68B A68A
-A68D A68C
-A68F A68E
-A691 A690
-A693 A692
-A695 A694
-A697 A696
-A699 A698
-A69B A69A
-A723 A722
-A725 A724
-A727 A726
-A729 A728
-A72B A72A
-A72D A72C
-A72F A72E
-A733 A732
-A735 A734
-A737 A736
-A739 A738
-A73B A73A
-A73D A73C
-A73F A73E
-A741 A740
-A743 A742
-A745 A744
-A747 A746
-A749 A748
-A74B A74A
-A74D A74C
-A74F A74E
-A751 A750
-A753 A752
-A755 A754
-A757 A756
-A759 A758
-A75B A75A
-A75D A75C
-A75F A75E
-A761 A760
-A763 A762
-A765 A764
-A767 A766
-A769 A768
-A76B A76A
-A76D A76C
-A76F A76E
-A77A A779
-A77C A77B
-A77F A77E
-A781 A780
-A783 A782
-A785 A784
-A787 A786
-A78C A78B
-A791 A790
-A793 A792
-A794 A7C4
-A797 A796
-A799 A798
-A79B A79A
-A79D A79C
-A79F A79E
-A7A1 A7A0
-A7A3 A7A2
-A7A5 A7A4
-A7A7 A7A6
-A7A9 A7A8
-A7B5 A7B4
-A7B7 A7B6
-A7B9 A7B8
-A7BB A7BA
-A7BD A7BC
-A7BF A7BE
-A7C3 A7C2
-A7C8 A7C7
-A7CA A7C9
-A7F6 A7F5
-AB53 A7B3
-AB70 13A0
-AB71 13A1
-AB72 13A2
-AB73 13A3
-AB74 13A4
-AB75 13A5
-AB76 13A6
-AB77 13A7
-AB78 13A8
-AB79 13A9
-AB7A 13AA
-AB7B 13AB
-AB7C 13AC
-AB7D 13AD
-AB7E 13AE
-AB7F 13AF
-AB80 13B0
-AB81 13B1
-AB82 13B2
-AB83 13B3
-AB84 13B4
-AB85 13B5
-AB86 13B6
-AB87 13B7
-AB88 13B8
-AB89 13B9
-AB8A 13BA
-AB8B 13BB
-AB8C 13BC
-AB8D 13BD
-AB8E 13BE
-AB8F 13BF
-AB90 13C0
-AB91 13C1
-AB92 13C2
-AB93 13C3
-AB94 13C4
-AB95 13C5
-AB96 13C6
-AB97 13C7
-AB98 13C8
-AB99 13C9
-AB9A 13CA
-AB9B 13CB
-AB9C 13CC
-AB9D 13CD
-AB9E 13CE
-AB9F 13CF
-ABA0 13D0
-ABA1 13D1
-ABA2 13D2
-ABA3 13D3
-ABA4 13D4
-ABA5 13D5
-ABA6 13D6
-ABA7 13D7
-ABA8 13D8
-ABA9 13D9
-ABAA 13DA
-ABAB 13DB
-ABAC 13DC
-ABAD 13DD
-ABAE 13DE
-ABAF 13DF
-ABB0 13E0
-ABB1 13E1
-ABB2 13E2
-ABB3 13E3
-ABB4 13E4
-ABB5 13E5
-ABB6 13E6
-ABB7 13E7
-ABB8 13E8
-ABB9 13E9
-ABBA 13EA
-ABBB 13EB
-ABBC 13EC
-ABBD 13ED
-ABBE 13EE
-ABBF 13EF
-FF41 FF21
-FF42 FF22
-FF43 FF23
-FF44 FF24
-FF45 FF25
-FF46 FF26
-FF47 FF27
-FF48 FF28
-FF49 FF29
-FF4A FF2A
-FF4B FF2B
-FF4C FF2C
-FF4D FF2D
-FF4E FF2E
-FF4F FF2F
-FF50 FF30
-FF51 FF31
-FF52 FF32
-FF53 FF33
-FF54 FF34
-FF55 FF35
-FF56 FF36
-FF57 FF37
-FF58 FF38
-FF59 FF39
-FF5A FF3A
-10428 10400
-10429 10401
-1042A 10402
-1042B 10403
-1042C 10404
-1042D 10405
-1042E 10406
-1042F 10407
-10430 10408
-10431 10409
-10432 1040A
-10433 1040B
-10434 1040C
-10435 1040D
-10436 1040E
-10437 1040F
-10438 10410
-10439 10411
-1043A 10412
-1043B 10413
-1043C 10414
-1043D 10415
-1043E 10416
-1043F 10417
-10440 10418
-10441 10419
-10442 1041A
-10443 1041B
-10444 1041C
-10445 1041D
-10446 1041E
-10447 1041F
-10448 10420
-10449 10421
-1044A 10422
-1044B 10423
-1044C 10424
-1044D 10425
-1044E 10426
-1044F 10427
-104D8 104B0
-104D9 104B1
-104DA 104B2
-104DB 104B3
-104DC 104B4
-104DD 104B5
-104DE 104B6
-104DF 104B7
-104E0 104B8
-104E1 104B9
-104E2 104BA
-104E3 104BB
-104E4 104BC
-104E5 104BD
-104E6 104BE
-104E7 104BF
-104E8 104C0
-104E9 104C1
-104EA 104C2
-104EB 104C3
-104EC 104C4
-104ED 104C5
-104EE 104C6
-104EF 104C7
-104F0 104C8
-104F1 104C9
-104F2 104CA
-104F3 104CB
-104F4 104CC
-104F5 104CD
-104F6 104CE
-104F7 104CF
-104F8 104D0
-104F9 104D1
-104FA 104D2
-104FB 104D3
-10CC0 10C80
-10CC1 10C81
-10CC2 10C82
-10CC3 10C83
-10CC4 10C84
-10CC5 10C85
-10CC6 10C86
-10CC7 10C87
-10CC8 10C88
-10CC9 10C89
-10CCA 10C8A
-10CCB 10C8B
-10CCC 10C8C
-10CCD 10C8D
-10CCE 10C8E
-10CCF 10C8F
-10CD0 10C90
-10CD1 10C91
-10CD2 10C92
-10CD3 10C93
-10CD4 10C94
-10CD5 10C95
-10CD6 10C96
-10CD7 10C97
-10CD8 10C98
-10CD9 10C99
-10CDA 10C9A
-10CDB 10C9B
-10CDC 10C9C
-10CDD 10C9D
-10CDE 10C9E
-10CDF 10C9F
-10CE0 10CA0
-10CE1 10CA1
-10CE2 10CA2
-10CE3 10CA3
-10CE4 10CA4
-10CE5 10CA5
-10CE6 10CA6
-10CE7 10CA7
-10CE8 10CA8
-10CE9 10CA9
-10CEA 10CAA
-10CEB 10CAB
-10CEC 10CAC
-10CED 10CAD
-10CEE 10CAE
-10CEF 10CAF
-10CF0 10CB0
-10CF1 10CB1
-10CF2 10CB2
-118C0 118A0
-118C1 118A1
-118C2 118A2
-118C3 118A3
-118C4 118A4
-118C5 118A5
-118C6 118A6
-118C7 118A7
-118C8 118A8
-118C9 118A9
-118CA 118AA
-118CB 118AB
-118CC 118AC
-118CD 118AD
-118CE 118AE
-118CF 118AF
-118D0 118B0
-118D1 118B1
-118D2 118B2
-118D3 118B3
-118D4 118B4
-118D5 118B5
-118D6 118B6
-118D7 118B7
-118D8 118B8
-118D9 118B9
-118DA 118BA
-118DB 118BB
-118DC 118BC
-118DD 118BD
-118DE 118BE
-118DF 118BF
-16E60 16E40
-16E61 16E41
-16E62 16E42
-16E63 16E43
-16E64 16E44
-16E65 16E45
-16E66 16E46
-16E67 16E47
-16E68 16E48
-16E69 16E49
-16E6A 16E4A
-16E6B 16E4B
-16E6C 16E4C
-16E6D 16E4D
-16E6E 16E4E
-16E6F 16E4F
-16E70 16E50
-16E71 16E51
-16E72 16E52
-16E73 16E53
-16E74 16E54
-16E75 16E55
-16E76 16E56
-16E77 16E57
-16E78 16E58
-16E79 16E59
-16E7A 16E5A
-16E7B 16E5B
-16E7C 16E5C
-16E7D 16E5D
-16E7E 16E5E
-16E7F 16E5F
-1E922 1E900
-1E923 1E901
-1E924 1E902
-1E925 1E903
-1E926 1E904
-1E927 1E905
-1E928 1E906
-1E929 1E907
-1E92A 1E908
-1E92B 1E909
-1E92C 1E90A
-1E92D 1E90B
-1E92E 1E90C
-1E92F 1E90D
-1E930 1E90E
-1E931 1E90F
-1E932 1E910
-1E933 1E911
-1E934 1E912
-1E935 1E913
-1E936 1E914
-1E937 1E915
-1E938 1E916
-1E939 1E917
-1E93A 1E918
-1E93B 1E919
-1E93C 1E91A
-1E93D 1E91B
-1E93E 1E91C
-1E93F 1E91D
-1E940 1E91E
-1E941 1E91F
-1E942 1E920
-1E943 1E921
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Uc.pl b/Master/tlpkg/tlperl/lib/unicore/To/Uc.pl
index 23003e5ae34..f5f66a3ede9 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Uc.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Uc.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -629,7 +629,7 @@ FF 178
2170 217F 2160
2184 2183
24D0 24E9 24B6
-2C30 2C5E 2C00
+2C30 2C5F 2C00
2C61 2C60
2C65 23A
2C66 23E
@@ -796,15 +796,23 @@ A7B9 A7B8
A7BB A7BA
A7BD A7BC
A7BF A7BE
+A7C1 A7C0
A7C3 A7C2
A7C8 A7C7
A7CA A7C9
+A7D1 A7D0
+A7D7 A7D6
+A7D9 A7D8
A7F6 A7F5
AB53 A7B3
AB70 ABBF 13A0
FF41 FF5A FF21
10428 1044F 10400
104D8 104FB 104B0
+10597 105A1 10570
+105A3 105B1 1057C
+105B3 105B9 1058C
+105BB 105BC 10594
10CC0 10CF2 10C80
118C0 118DF 118A0
16E60 16E7F 16E40
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Upper.pl b/Master/tlpkg/tlperl/lib/unicore/To/Upper.pl
deleted file mode 100644
index 99c8c577979..00000000000
--- a/Master/tlpkg/tlperl/lib/unicore/To/Upper.pl
+++ /dev/null
@@ -1,1520 +0,0 @@
-# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
-
-# !!!!!!! IT IS DEPRECATED TO USE THIS FILE !!!!!!!
-
-# This file is for internal use by core Perl only. It is retained for
-# backwards compatibility with applications that may have come to rely on it,
-# but its format and even its name or existence are subject to change without
-# notice in a future Perl version. Don't use it directly. Instead, its
-# contents are now retrievable through a stable API in the Unicode::UCD
-# module: Unicode::UCD::prop_invmap('Uppercase_Mapping') (Values for individual
-# code points can be retrieved via Unicode::UCD::charprop());
-
-
-
-# The name this table is to be known by, with the format of the mappings in
-# the main body of the table, and what all code points missing from this file
-# map to.
-$Unicode::UCD::SwashInfo{'ToUpper'}{'format'} = 'x'; # non-negative hex whole number; a code point
-$Unicode::UCD::SwashInfo{'ToUpper'}{'specials_name'} = 'Unicode::UCD::ToSpecUpper'; # Name of hash of special mappings
-$Unicode::UCD::SwashInfo{'ToUpper'}{'missing'} = '<code point>'; # code point maps to itself
-
-# Some code points require special handling because their mappings are each to
-# multiple code points. These do not appear in the main body, but are defined
-# in the hash below.
-
-# Each key is the string of N bytes that together make up the UTF-8 encoding
-# for the code point. (i.e. the same as looking at the code point's UTF-8
-# under "use bytes"). Each value is the UTF-8 of the translation, for speed.
-%Unicode::UCD::ToSpecUpper = (
-"\xC3\x9F" => "\x{0053}\x{0053}", # U+00DF => 0053 0053
-"\xC5\x89" => "\x{02BC}\x{004E}", # U+0149 => 02BC 004E
-"\xC7\xB0" => "\x{004A}\x{030C}", # U+01F0 => 004A 030C
-"\xCE\x90" => "\x{0399}\x{0308}\x{0301}", # U+0390 => 0399 0308 0301
-"\xCE\xB0" => "\x{03A5}\x{0308}\x{0301}", # U+03B0 => 03A5 0308 0301
-"\xD6\x87" => "\x{0535}\x{0552}", # U+0587 => 0535 0552
-"\xE1\xBA\x96" => "\x{0048}\x{0331}", # U+1E96 => 0048 0331
-"\xE1\xBA\x97" => "\x{0054}\x{0308}", # U+1E97 => 0054 0308
-"\xE1\xBA\x98" => "\x{0057}\x{030A}", # U+1E98 => 0057 030A
-"\xE1\xBA\x99" => "\x{0059}\x{030A}", # U+1E99 => 0059 030A
-"\xE1\xBA\x9A" => "\x{0041}\x{02BE}", # U+1E9A => 0041 02BE
-"\xE1\xBD\x90" => "\x{03A5}\x{0313}", # U+1F50 => 03A5 0313
-"\xE1\xBD\x92" => "\x{03A5}\x{0313}\x{0300}", # U+1F52 => 03A5 0313 0300
-"\xE1\xBD\x94" => "\x{03A5}\x{0313}\x{0301}", # U+1F54 => 03A5 0313 0301
-"\xE1\xBD\x96" => "\x{03A5}\x{0313}\x{0342}", # U+1F56 => 03A5 0313 0342
-"\xE1\xBE\x80" => "\x{1F08}\x{0399}", # U+1F80 => 1F08 0399
-"\xE1\xBE\x81" => "\x{1F09}\x{0399}", # U+1F81 => 1F09 0399
-"\xE1\xBE\x82" => "\x{1F0A}\x{0399}", # U+1F82 => 1F0A 0399
-"\xE1\xBE\x83" => "\x{1F0B}\x{0399}", # U+1F83 => 1F0B 0399
-"\xE1\xBE\x84" => "\x{1F0C}\x{0399}", # U+1F84 => 1F0C 0399
-"\xE1\xBE\x85" => "\x{1F0D}\x{0399}", # U+1F85 => 1F0D 0399
-"\xE1\xBE\x86" => "\x{1F0E}\x{0399}", # U+1F86 => 1F0E 0399
-"\xE1\xBE\x87" => "\x{1F0F}\x{0399}", # U+1F87 => 1F0F 0399
-"\xE1\xBE\x88" => "\x{1F08}\x{0399}", # U+1F88 => 1F08 0399
-"\xE1\xBE\x89" => "\x{1F09}\x{0399}", # U+1F89 => 1F09 0399
-"\xE1\xBE\x8A" => "\x{1F0A}\x{0399}", # U+1F8A => 1F0A 0399
-"\xE1\xBE\x8B" => "\x{1F0B}\x{0399}", # U+1F8B => 1F0B 0399
-"\xE1\xBE\x8C" => "\x{1F0C}\x{0399}", # U+1F8C => 1F0C 0399
-"\xE1\xBE\x8D" => "\x{1F0D}\x{0399}", # U+1F8D => 1F0D 0399
-"\xE1\xBE\x8E" => "\x{1F0E}\x{0399}", # U+1F8E => 1F0E 0399
-"\xE1\xBE\x8F" => "\x{1F0F}\x{0399}", # U+1F8F => 1F0F 0399
-"\xE1\xBE\x90" => "\x{1F28}\x{0399}", # U+1F90 => 1F28 0399
-"\xE1\xBE\x91" => "\x{1F29}\x{0399}", # U+1F91 => 1F29 0399
-"\xE1\xBE\x92" => "\x{1F2A}\x{0399}", # U+1F92 => 1F2A 0399
-"\xE1\xBE\x93" => "\x{1F2B}\x{0399}", # U+1F93 => 1F2B 0399
-"\xE1\xBE\x94" => "\x{1F2C}\x{0399}", # U+1F94 => 1F2C 0399
-"\xE1\xBE\x95" => "\x{1F2D}\x{0399}", # U+1F95 => 1F2D 0399
-"\xE1\xBE\x96" => "\x{1F2E}\x{0399}", # U+1F96 => 1F2E 0399
-"\xE1\xBE\x97" => "\x{1F2F}\x{0399}", # U+1F97 => 1F2F 0399
-"\xE1\xBE\x98" => "\x{1F28}\x{0399}", # U+1F98 => 1F28 0399
-"\xE1\xBE\x99" => "\x{1F29}\x{0399}", # U+1F99 => 1F29 0399
-"\xE1\xBE\x9A" => "\x{1F2A}\x{0399}", # U+1F9A => 1F2A 0399
-"\xE1\xBE\x9B" => "\x{1F2B}\x{0399}", # U+1F9B => 1F2B 0399
-"\xE1\xBE\x9C" => "\x{1F2C}\x{0399}", # U+1F9C => 1F2C 0399
-"\xE1\xBE\x9D" => "\x{1F2D}\x{0399}", # U+1F9D => 1F2D 0399
-"\xE1\xBE\x9E" => "\x{1F2E}\x{0399}", # U+1F9E => 1F2E 0399
-"\xE1\xBE\x9F" => "\x{1F2F}\x{0399}", # U+1F9F => 1F2F 0399
-"\xE1\xBE\xA0" => "\x{1F68}\x{0399}", # U+1FA0 => 1F68 0399
-"\xE1\xBE\xA1" => "\x{1F69}\x{0399}", # U+1FA1 => 1F69 0399
-"\xE1\xBE\xA2" => "\x{1F6A}\x{0399}", # U+1FA2 => 1F6A 0399
-"\xE1\xBE\xA3" => "\x{1F6B}\x{0399}", # U+1FA3 => 1F6B 0399
-"\xE1\xBE\xA4" => "\x{1F6C}\x{0399}", # U+1FA4 => 1F6C 0399
-"\xE1\xBE\xA5" => "\x{1F6D}\x{0399}", # U+1FA5 => 1F6D 0399
-"\xE1\xBE\xA6" => "\x{1F6E}\x{0399}", # U+1FA6 => 1F6E 0399
-"\xE1\xBE\xA7" => "\x{1F6F}\x{0399}", # U+1FA7 => 1F6F 0399
-"\xE1\xBE\xA8" => "\x{1F68}\x{0399}", # U+1FA8 => 1F68 0399
-"\xE1\xBE\xA9" => "\x{1F69}\x{0399}", # U+1FA9 => 1F69 0399
-"\xE1\xBE\xAA" => "\x{1F6A}\x{0399}", # U+1FAA => 1F6A 0399
-"\xE1\xBE\xAB" => "\x{1F6B}\x{0399}", # U+1FAB => 1F6B 0399
-"\xE1\xBE\xAC" => "\x{1F6C}\x{0399}", # U+1FAC => 1F6C 0399
-"\xE1\xBE\xAD" => "\x{1F6D}\x{0399}", # U+1FAD => 1F6D 0399
-"\xE1\xBE\xAE" => "\x{1F6E}\x{0399}", # U+1FAE => 1F6E 0399
-"\xE1\xBE\xAF" => "\x{1F6F}\x{0399}", # U+1FAF => 1F6F 0399
-"\xE1\xBE\xB2" => "\x{1FBA}\x{0399}", # U+1FB2 => 1FBA 0399
-"\xE1\xBE\xB3" => "\x{0391}\x{0399}", # U+1FB3 => 0391 0399
-"\xE1\xBE\xB4" => "\x{0386}\x{0399}", # U+1FB4 => 0386 0399
-"\xE1\xBE\xB6" => "\x{0391}\x{0342}", # U+1FB6 => 0391 0342
-"\xE1\xBE\xB7" => "\x{0391}\x{0342}\x{0399}", # U+1FB7 => 0391 0342 0399
-"\xE1\xBE\xBC" => "\x{0391}\x{0399}", # U+1FBC => 0391 0399
-"\xE1\xBF\x82" => "\x{1FCA}\x{0399}", # U+1FC2 => 1FCA 0399
-"\xE1\xBF\x83" => "\x{0397}\x{0399}", # U+1FC3 => 0397 0399
-"\xE1\xBF\x84" => "\x{0389}\x{0399}", # U+1FC4 => 0389 0399
-"\xE1\xBF\x86" => "\x{0397}\x{0342}", # U+1FC6 => 0397 0342
-"\xE1\xBF\x87" => "\x{0397}\x{0342}\x{0399}", # U+1FC7 => 0397 0342 0399
-"\xE1\xBF\x8C" => "\x{0397}\x{0399}", # U+1FCC => 0397 0399
-"\xE1\xBF\x92" => "\x{0399}\x{0308}\x{0300}", # U+1FD2 => 0399 0308 0300
-"\xE1\xBF\x93" => "\x{0399}\x{0308}\x{0301}", # U+1FD3 => 0399 0308 0301
-"\xE1\xBF\x96" => "\x{0399}\x{0342}", # U+1FD6 => 0399 0342
-"\xE1\xBF\x97" => "\x{0399}\x{0308}\x{0342}", # U+1FD7 => 0399 0308 0342
-"\xE1\xBF\xA2" => "\x{03A5}\x{0308}\x{0300}", # U+1FE2 => 03A5 0308 0300
-"\xE1\xBF\xA3" => "\x{03A5}\x{0308}\x{0301}", # U+1FE3 => 03A5 0308 0301
-"\xE1\xBF\xA4" => "\x{03A1}\x{0313}", # U+1FE4 => 03A1 0313
-"\xE1\xBF\xA6" => "\x{03A5}\x{0342}", # U+1FE6 => 03A5 0342
-"\xE1\xBF\xA7" => "\x{03A5}\x{0308}\x{0342}", # U+1FE7 => 03A5 0308 0342
-"\xE1\xBF\xB2" => "\x{1FFA}\x{0399}", # U+1FF2 => 1FFA 0399
-"\xE1\xBF\xB3" => "\x{03A9}\x{0399}", # U+1FF3 => 03A9 0399
-"\xE1\xBF\xB4" => "\x{038F}\x{0399}", # U+1FF4 => 038F 0399
-"\xE1\xBF\xB6" => "\x{03A9}\x{0342}", # U+1FF6 => 03A9 0342
-"\xE1\xBF\xB7" => "\x{03A9}\x{0342}\x{0399}", # U+1FF7 => 03A9 0342 0399
-"\xE1\xBF\xBC" => "\x{03A9}\x{0399}", # U+1FFC => 03A9 0399
-"\xEF\xAC\x80" => "\x{0046}\x{0046}", # U+FB00 => 0046 0046
-"\xEF\xAC\x81" => "\x{0046}\x{0049}", # U+FB01 => 0046 0049
-"\xEF\xAC\x82" => "\x{0046}\x{004C}", # U+FB02 => 0046 004C
-"\xEF\xAC\x83" => "\x{0046}\x{0046}\x{0049}", # U+FB03 => 0046 0046 0049
-"\xEF\xAC\x84" => "\x{0046}\x{0046}\x{004C}", # U+FB04 => 0046 0046 004C
-"\xEF\xAC\x85" => "\x{0053}\x{0054}", # U+FB05 => 0053 0054
-"\xEF\xAC\x86" => "\x{0053}\x{0054}", # U+FB06 => 0053 0054
-"\xEF\xAC\x93" => "\x{0544}\x{0546}", # U+FB13 => 0544 0546
-"\xEF\xAC\x94" => "\x{0544}\x{0535}", # U+FB14 => 0544 0535
-"\xEF\xAC\x95" => "\x{0544}\x{053B}", # U+FB15 => 0544 053B
-"\xEF\xAC\x96" => "\x{054E}\x{0546}", # U+FB16 => 054E 0546
-"\xEF\xAC\x97" => "\x{0544}\x{053D}", # U+FB17 => 0544 053D
-);
-
-return <<'END';
-0061 0041
-0062 0042
-0063 0043
-0064 0044
-0065 0045
-0066 0046
-0067 0047
-0068 0048
-0069 0049
-006A 004A
-006B 004B
-006C 004C
-006D 004D
-006E 004E
-006F 004F
-0070 0050
-0071 0051
-0072 0052
-0073 0053
-0074 0054
-0075 0055
-0076 0056
-0077 0057
-0078 0058
-0079 0059
-007A 005A
-00B5 039C
-00E0 00C0
-00E1 00C1
-00E2 00C2
-00E3 00C3
-00E4 00C4
-00E5 00C5
-00E6 00C6
-00E7 00C7
-00E8 00C8
-00E9 00C9
-00EA 00CA
-00EB 00CB
-00EC 00CC
-00ED 00CD
-00EE 00CE
-00EF 00CF
-00F0 00D0
-00F1 00D1
-00F2 00D2
-00F3 00D3
-00F4 00D4
-00F5 00D5
-00F6 00D6
-00F8 00D8
-00F9 00D9
-00FA 00DA
-00FB 00DB
-00FC 00DC
-00FD 00DD
-00FE 00DE
-00FF 0178
-0101 0100
-0103 0102
-0105 0104
-0107 0106
-0109 0108
-010B 010A
-010D 010C
-010F 010E
-0111 0110
-0113 0112
-0115 0114
-0117 0116
-0119 0118
-011B 011A
-011D 011C
-011F 011E
-0121 0120
-0123 0122
-0125 0124
-0127 0126
-0129 0128
-012B 012A
-012D 012C
-012F 012E
-0131 0049
-0133 0132
-0135 0134
-0137 0136
-013A 0139
-013C 013B
-013E 013D
-0140 013F
-0142 0141
-0144 0143
-0146 0145
-0148 0147
-014B 014A
-014D 014C
-014F 014E
-0151 0150
-0153 0152
-0155 0154
-0157 0156
-0159 0158
-015B 015A
-015D 015C
-015F 015E
-0161 0160
-0163 0162
-0165 0164
-0167 0166
-0169 0168
-016B 016A
-016D 016C
-016F 016E
-0171 0170
-0173 0172
-0175 0174
-0177 0176
-017A 0179
-017C 017B
-017E 017D
-017F 0053
-0180 0243
-0183 0182
-0185 0184
-0188 0187
-018C 018B
-0192 0191
-0195 01F6
-0199 0198
-019A 023D
-019E 0220
-01A1 01A0
-01A3 01A2
-01A5 01A4
-01A8 01A7
-01AD 01AC
-01B0 01AF
-01B4 01B3
-01B6 01B5
-01B9 01B8
-01BD 01BC
-01BF 01F7
-01C5 01C4
-01C6 01C4
-01C8 01C7
-01C9 01C7
-01CB 01CA
-01CC 01CA
-01CE 01CD
-01D0 01CF
-01D2 01D1
-01D4 01D3
-01D6 01D5
-01D8 01D7
-01DA 01D9
-01DC 01DB
-01DD 018E
-01DF 01DE
-01E1 01E0
-01E3 01E2
-01E5 01E4
-01E7 01E6
-01E9 01E8
-01EB 01EA
-01ED 01EC
-01EF 01EE
-01F2 01F1
-01F3 01F1
-01F5 01F4
-01F9 01F8
-01FB 01FA
-01FD 01FC
-01FF 01FE
-0201 0200
-0203 0202
-0205 0204
-0207 0206
-0209 0208
-020B 020A
-020D 020C
-020F 020E
-0211 0210
-0213 0212
-0215 0214
-0217 0216
-0219 0218
-021B 021A
-021D 021C
-021F 021E
-0223 0222
-0225 0224
-0227 0226
-0229 0228
-022B 022A
-022D 022C
-022F 022E
-0231 0230
-0233 0232
-023C 023B
-023F 2C7E
-0240 2C7F
-0242 0241
-0247 0246
-0249 0248
-024B 024A
-024D 024C
-024F 024E
-0250 2C6F
-0251 2C6D
-0252 2C70
-0253 0181
-0254 0186
-0256 0189
-0257 018A
-0259 018F
-025B 0190
-025C A7AB
-0260 0193
-0261 A7AC
-0263 0194
-0265 A78D
-0266 A7AA
-0268 0197
-0269 0196
-026A A7AE
-026B 2C62
-026C A7AD
-026F 019C
-0271 2C6E
-0272 019D
-0275 019F
-027D 2C64
-0280 01A6
-0282 A7C5
-0283 01A9
-0287 A7B1
-0288 01AE
-0289 0244
-028A 01B1
-028B 01B2
-028C 0245
-0292 01B7
-029D A7B2
-029E A7B0
-0345 0399
-0371 0370
-0373 0372
-0377 0376
-037B 03FD
-037C 03FE
-037D 03FF
-03AC 0386
-03AD 0388
-03AE 0389
-03AF 038A
-03B1 0391
-03B2 0392
-03B3 0393
-03B4 0394
-03B5 0395
-03B6 0396
-03B7 0397
-03B8 0398
-03B9 0399
-03BA 039A
-03BB 039B
-03BC 039C
-03BD 039D
-03BE 039E
-03BF 039F
-03C0 03A0
-03C1 03A1
-03C2 03A3
-03C3 03A3
-03C4 03A4
-03C5 03A5
-03C6 03A6
-03C7 03A7
-03C8 03A8
-03C9 03A9
-03CA 03AA
-03CB 03AB
-03CC 038C
-03CD 038E
-03CE 038F
-03D0 0392
-03D1 0398
-03D5 03A6
-03D6 03A0
-03D7 03CF
-03D9 03D8
-03DB 03DA
-03DD 03DC
-03DF 03DE
-03E1 03E0
-03E3 03E2
-03E5 03E4
-03E7 03E6
-03E9 03E8
-03EB 03EA
-03ED 03EC
-03EF 03EE
-03F0 039A
-03F1 03A1
-03F2 03F9
-03F3 037F
-03F5 0395
-03F8 03F7
-03FB 03FA
-0430 0410
-0431 0411
-0432 0412
-0433 0413
-0434 0414
-0435 0415
-0436 0416
-0437 0417
-0438 0418
-0439 0419
-043A 041A
-043B 041B
-043C 041C
-043D 041D
-043E 041E
-043F 041F
-0440 0420
-0441 0421
-0442 0422
-0443 0423
-0444 0424
-0445 0425
-0446 0426
-0447 0427
-0448 0428
-0449 0429
-044A 042A
-044B 042B
-044C 042C
-044D 042D
-044E 042E
-044F 042F
-0450 0400
-0451 0401
-0452 0402
-0453 0403
-0454 0404
-0455 0405
-0456 0406
-0457 0407
-0458 0408
-0459 0409
-045A 040A
-045B 040B
-045C 040C
-045D 040D
-045E 040E
-045F 040F
-0461 0460
-0463 0462
-0465 0464
-0467 0466
-0469 0468
-046B 046A
-046D 046C
-046F 046E
-0471 0470
-0473 0472
-0475 0474
-0477 0476
-0479 0478
-047B 047A
-047D 047C
-047F 047E
-0481 0480
-048B 048A
-048D 048C
-048F 048E
-0491 0490
-0493 0492
-0495 0494
-0497 0496
-0499 0498
-049B 049A
-049D 049C
-049F 049E
-04A1 04A0
-04A3 04A2
-04A5 04A4
-04A7 04A6
-04A9 04A8
-04AB 04AA
-04AD 04AC
-04AF 04AE
-04B1 04B0
-04B3 04B2
-04B5 04B4
-04B7 04B6
-04B9 04B8
-04BB 04BA
-04BD 04BC
-04BF 04BE
-04C2 04C1
-04C4 04C3
-04C6 04C5
-04C8 04C7
-04CA 04C9
-04CC 04CB
-04CE 04CD
-04CF 04C0
-04D1 04D0
-04D3 04D2
-04D5 04D4
-04D7 04D6
-04D9 04D8
-04DB 04DA
-04DD 04DC
-04DF 04DE
-04E1 04E0
-04E3 04E2
-04E5 04E4
-04E7 04E6
-04E9 04E8
-04EB 04EA
-04ED 04EC
-04EF 04EE
-04F1 04F0
-04F3 04F2
-04F5 04F4
-04F7 04F6
-04F9 04F8
-04FB 04FA
-04FD 04FC
-04FF 04FE
-0501 0500
-0503 0502
-0505 0504
-0507 0506
-0509 0508
-050B 050A
-050D 050C
-050F 050E
-0511 0510
-0513 0512
-0515 0514
-0517 0516
-0519 0518
-051B 051A
-051D 051C
-051F 051E
-0521 0520
-0523 0522
-0525 0524
-0527 0526
-0529 0528
-052B 052A
-052D 052C
-052F 052E
-0561 0531
-0562 0532
-0563 0533
-0564 0534
-0565 0535
-0566 0536
-0567 0537
-0568 0538
-0569 0539
-056A 053A
-056B 053B
-056C 053C
-056D 053D
-056E 053E
-056F 053F
-0570 0540
-0571 0541
-0572 0542
-0573 0543
-0574 0544
-0575 0545
-0576 0546
-0577 0547
-0578 0548
-0579 0549
-057A 054A
-057B 054B
-057C 054C
-057D 054D
-057E 054E
-057F 054F
-0580 0550
-0581 0551
-0582 0552
-0583 0553
-0584 0554
-0585 0555
-0586 0556
-10D0 1C90
-10D1 1C91
-10D2 1C92
-10D3 1C93
-10D4 1C94
-10D5 1C95
-10D6 1C96
-10D7 1C97
-10D8 1C98
-10D9 1C99
-10DA 1C9A
-10DB 1C9B
-10DC 1C9C
-10DD 1C9D
-10DE 1C9E
-10DF 1C9F
-10E0 1CA0
-10E1 1CA1
-10E2 1CA2
-10E3 1CA3
-10E4 1CA4
-10E5 1CA5
-10E6 1CA6
-10E7 1CA7
-10E8 1CA8
-10E9 1CA9
-10EA 1CAA
-10EB 1CAB
-10EC 1CAC
-10ED 1CAD
-10EE 1CAE
-10EF 1CAF
-10F0 1CB0
-10F1 1CB1
-10F2 1CB2
-10F3 1CB3
-10F4 1CB4
-10F5 1CB5
-10F6 1CB6
-10F7 1CB7
-10F8 1CB8
-10F9 1CB9
-10FA 1CBA
-10FD 1CBD
-10FE 1CBE
-10FF 1CBF
-13F8 13F0
-13F9 13F1
-13FA 13F2
-13FB 13F3
-13FC 13F4
-13FD 13F5
-1C80 0412
-1C81 0414
-1C82 041E
-1C83 0421
-1C84 0422
-1C85 0422
-1C86 042A
-1C87 0462
-1C88 A64A
-1D79 A77D
-1D7D 2C63
-1D8E A7C6
-1E01 1E00
-1E03 1E02
-1E05 1E04
-1E07 1E06
-1E09 1E08
-1E0B 1E0A
-1E0D 1E0C
-1E0F 1E0E
-1E11 1E10
-1E13 1E12
-1E15 1E14
-1E17 1E16
-1E19 1E18
-1E1B 1E1A
-1E1D 1E1C
-1E1F 1E1E
-1E21 1E20
-1E23 1E22
-1E25 1E24
-1E27 1E26
-1E29 1E28
-1E2B 1E2A
-1E2D 1E2C
-1E2F 1E2E
-1E31 1E30
-1E33 1E32
-1E35 1E34
-1E37 1E36
-1E39 1E38
-1E3B 1E3A
-1E3D 1E3C
-1E3F 1E3E
-1E41 1E40
-1E43 1E42
-1E45 1E44
-1E47 1E46
-1E49 1E48
-1E4B 1E4A
-1E4D 1E4C
-1E4F 1E4E
-1E51 1E50
-1E53 1E52
-1E55 1E54
-1E57 1E56
-1E59 1E58
-1E5B 1E5A
-1E5D 1E5C
-1E5F 1E5E
-1E61 1E60
-1E63 1E62
-1E65 1E64
-1E67 1E66
-1E69 1E68
-1E6B 1E6A
-1E6D 1E6C
-1E6F 1E6E
-1E71 1E70
-1E73 1E72
-1E75 1E74
-1E77 1E76
-1E79 1E78
-1E7B 1E7A
-1E7D 1E7C
-1E7F 1E7E
-1E81 1E80
-1E83 1E82
-1E85 1E84
-1E87 1E86
-1E89 1E88
-1E8B 1E8A
-1E8D 1E8C
-1E8F 1E8E
-1E91 1E90
-1E93 1E92
-1E95 1E94
-1E9B 1E60
-1EA1 1EA0
-1EA3 1EA2
-1EA5 1EA4
-1EA7 1EA6
-1EA9 1EA8
-1EAB 1EAA
-1EAD 1EAC
-1EAF 1EAE
-1EB1 1EB0
-1EB3 1EB2
-1EB5 1EB4
-1EB7 1EB6
-1EB9 1EB8
-1EBB 1EBA
-1EBD 1EBC
-1EBF 1EBE
-1EC1 1EC0
-1EC3 1EC2
-1EC5 1EC4
-1EC7 1EC6
-1EC9 1EC8
-1ECB 1ECA
-1ECD 1ECC
-1ECF 1ECE
-1ED1 1ED0
-1ED3 1ED2
-1ED5 1ED4
-1ED7 1ED6
-1ED9 1ED8
-1EDB 1EDA
-1EDD 1EDC
-1EDF 1EDE
-1EE1 1EE0
-1EE3 1EE2
-1EE5 1EE4
-1EE7 1EE6
-1EE9 1EE8
-1EEB 1EEA
-1EED 1EEC
-1EEF 1EEE
-1EF1 1EF0
-1EF3 1EF2
-1EF5 1EF4
-1EF7 1EF6
-1EF9 1EF8
-1EFB 1EFA
-1EFD 1EFC
-1EFF 1EFE
-1F00 1F08
-1F01 1F09
-1F02 1F0A
-1F03 1F0B
-1F04 1F0C
-1F05 1F0D
-1F06 1F0E
-1F07 1F0F
-1F10 1F18
-1F11 1F19
-1F12 1F1A
-1F13 1F1B
-1F14 1F1C
-1F15 1F1D
-1F20 1F28
-1F21 1F29
-1F22 1F2A
-1F23 1F2B
-1F24 1F2C
-1F25 1F2D
-1F26 1F2E
-1F27 1F2F
-1F30 1F38
-1F31 1F39
-1F32 1F3A
-1F33 1F3B
-1F34 1F3C
-1F35 1F3D
-1F36 1F3E
-1F37 1F3F
-1F40 1F48
-1F41 1F49
-1F42 1F4A
-1F43 1F4B
-1F44 1F4C
-1F45 1F4D
-1F51 1F59
-1F53 1F5B
-1F55 1F5D
-1F57 1F5F
-1F60 1F68
-1F61 1F69
-1F62 1F6A
-1F63 1F6B
-1F64 1F6C
-1F65 1F6D
-1F66 1F6E
-1F67 1F6F
-1F70 1FBA
-1F71 1FBB
-1F72 1FC8
-1F73 1FC9
-1F74 1FCA
-1F75 1FCB
-1F76 1FDA
-1F77 1FDB
-1F78 1FF8
-1F79 1FF9
-1F7A 1FEA
-1F7B 1FEB
-1F7C 1FFA
-1F7D 1FFB
-1FB0 1FB8
-1FB1 1FB9
-1FBE 0399
-1FD0 1FD8
-1FD1 1FD9
-1FE0 1FE8
-1FE1 1FE9
-1FE5 1FEC
-214E 2132
-2170 2160
-2171 2161
-2172 2162
-2173 2163
-2174 2164
-2175 2165
-2176 2166
-2177 2167
-2178 2168
-2179 2169
-217A 216A
-217B 216B
-217C 216C
-217D 216D
-217E 216E
-217F 216F
-2184 2183
-24D0 24B6
-24D1 24B7
-24D2 24B8
-24D3 24B9
-24D4 24BA
-24D5 24BB
-24D6 24BC
-24D7 24BD
-24D8 24BE
-24D9 24BF
-24DA 24C0
-24DB 24C1
-24DC 24C2
-24DD 24C3
-24DE 24C4
-24DF 24C5
-24E0 24C6
-24E1 24C7
-24E2 24C8
-24E3 24C9
-24E4 24CA
-24E5 24CB
-24E6 24CC
-24E7 24CD
-24E8 24CE
-24E9 24CF
-2C30 2C00
-2C31 2C01
-2C32 2C02
-2C33 2C03
-2C34 2C04
-2C35 2C05
-2C36 2C06
-2C37 2C07
-2C38 2C08
-2C39 2C09
-2C3A 2C0A
-2C3B 2C0B
-2C3C 2C0C
-2C3D 2C0D
-2C3E 2C0E
-2C3F 2C0F
-2C40 2C10
-2C41 2C11
-2C42 2C12
-2C43 2C13
-2C44 2C14
-2C45 2C15
-2C46 2C16
-2C47 2C17
-2C48 2C18
-2C49 2C19
-2C4A 2C1A
-2C4B 2C1B
-2C4C 2C1C
-2C4D 2C1D
-2C4E 2C1E
-2C4F 2C1F
-2C50 2C20
-2C51 2C21
-2C52 2C22
-2C53 2C23
-2C54 2C24
-2C55 2C25
-2C56 2C26
-2C57 2C27
-2C58 2C28
-2C59 2C29
-2C5A 2C2A
-2C5B 2C2B
-2C5C 2C2C
-2C5D 2C2D
-2C5E 2C2E
-2C61 2C60
-2C65 023A
-2C66 023E
-2C68 2C67
-2C6A 2C69
-2C6C 2C6B
-2C73 2C72
-2C76 2C75
-2C81 2C80
-2C83 2C82
-2C85 2C84
-2C87 2C86
-2C89 2C88
-2C8B 2C8A
-2C8D 2C8C
-2C8F 2C8E
-2C91 2C90
-2C93 2C92
-2C95 2C94
-2C97 2C96
-2C99 2C98
-2C9B 2C9A
-2C9D 2C9C
-2C9F 2C9E
-2CA1 2CA0
-2CA3 2CA2
-2CA5 2CA4
-2CA7 2CA6
-2CA9 2CA8
-2CAB 2CAA
-2CAD 2CAC
-2CAF 2CAE
-2CB1 2CB0
-2CB3 2CB2
-2CB5 2CB4
-2CB7 2CB6
-2CB9 2CB8
-2CBB 2CBA
-2CBD 2CBC
-2CBF 2CBE
-2CC1 2CC0
-2CC3 2CC2
-2CC5 2CC4
-2CC7 2CC6
-2CC9 2CC8
-2CCB 2CCA
-2CCD 2CCC
-2CCF 2CCE
-2CD1 2CD0
-2CD3 2CD2
-2CD5 2CD4
-2CD7 2CD6
-2CD9 2CD8
-2CDB 2CDA
-2CDD 2CDC
-2CDF 2CDE
-2CE1 2CE0
-2CE3 2CE2
-2CEC 2CEB
-2CEE 2CED
-2CF3 2CF2
-2D00 10A0
-2D01 10A1
-2D02 10A2
-2D03 10A3
-2D04 10A4
-2D05 10A5
-2D06 10A6
-2D07 10A7
-2D08 10A8
-2D09 10A9
-2D0A 10AA
-2D0B 10AB
-2D0C 10AC
-2D0D 10AD
-2D0E 10AE
-2D0F 10AF
-2D10 10B0
-2D11 10B1
-2D12 10B2
-2D13 10B3
-2D14 10B4
-2D15 10B5
-2D16 10B6
-2D17 10B7
-2D18 10B8
-2D19 10B9
-2D1A 10BA
-2D1B 10BB
-2D1C 10BC
-2D1D 10BD
-2D1E 10BE
-2D1F 10BF
-2D20 10C0
-2D21 10C1
-2D22 10C2
-2D23 10C3
-2D24 10C4
-2D25 10C5
-2D27 10C7
-2D2D 10CD
-A641 A640
-A643 A642
-A645 A644
-A647 A646
-A649 A648
-A64B A64A
-A64D A64C
-A64F A64E
-A651 A650
-A653 A652
-A655 A654
-A657 A656
-A659 A658
-A65B A65A
-A65D A65C
-A65F A65E
-A661 A660
-A663 A662
-A665 A664
-A667 A666
-A669 A668
-A66B A66A
-A66D A66C
-A681 A680
-A683 A682
-A685 A684
-A687 A686
-A689 A688
-A68B A68A
-A68D A68C
-A68F A68E
-A691 A690
-A693 A692
-A695 A694
-A697 A696
-A699 A698
-A69B A69A
-A723 A722
-A725 A724
-A727 A726
-A729 A728
-A72B A72A
-A72D A72C
-A72F A72E
-A733 A732
-A735 A734
-A737 A736
-A739 A738
-A73B A73A
-A73D A73C
-A73F A73E
-A741 A740
-A743 A742
-A745 A744
-A747 A746
-A749 A748
-A74B A74A
-A74D A74C
-A74F A74E
-A751 A750
-A753 A752
-A755 A754
-A757 A756
-A759 A758
-A75B A75A
-A75D A75C
-A75F A75E
-A761 A760
-A763 A762
-A765 A764
-A767 A766
-A769 A768
-A76B A76A
-A76D A76C
-A76F A76E
-A77A A779
-A77C A77B
-A77F A77E
-A781 A780
-A783 A782
-A785 A784
-A787 A786
-A78C A78B
-A791 A790
-A793 A792
-A794 A7C4
-A797 A796
-A799 A798
-A79B A79A
-A79D A79C
-A79F A79E
-A7A1 A7A0
-A7A3 A7A2
-A7A5 A7A4
-A7A7 A7A6
-A7A9 A7A8
-A7B5 A7B4
-A7B7 A7B6
-A7B9 A7B8
-A7BB A7BA
-A7BD A7BC
-A7BF A7BE
-A7C3 A7C2
-A7C8 A7C7
-A7CA A7C9
-A7F6 A7F5
-AB53 A7B3
-AB70 13A0
-AB71 13A1
-AB72 13A2
-AB73 13A3
-AB74 13A4
-AB75 13A5
-AB76 13A6
-AB77 13A7
-AB78 13A8
-AB79 13A9
-AB7A 13AA
-AB7B 13AB
-AB7C 13AC
-AB7D 13AD
-AB7E 13AE
-AB7F 13AF
-AB80 13B0
-AB81 13B1
-AB82 13B2
-AB83 13B3
-AB84 13B4
-AB85 13B5
-AB86 13B6
-AB87 13B7
-AB88 13B8
-AB89 13B9
-AB8A 13BA
-AB8B 13BB
-AB8C 13BC
-AB8D 13BD
-AB8E 13BE
-AB8F 13BF
-AB90 13C0
-AB91 13C1
-AB92 13C2
-AB93 13C3
-AB94 13C4
-AB95 13C5
-AB96 13C6
-AB97 13C7
-AB98 13C8
-AB99 13C9
-AB9A 13CA
-AB9B 13CB
-AB9C 13CC
-AB9D 13CD
-AB9E 13CE
-AB9F 13CF
-ABA0 13D0
-ABA1 13D1
-ABA2 13D2
-ABA3 13D3
-ABA4 13D4
-ABA5 13D5
-ABA6 13D6
-ABA7 13D7
-ABA8 13D8
-ABA9 13D9
-ABAA 13DA
-ABAB 13DB
-ABAC 13DC
-ABAD 13DD
-ABAE 13DE
-ABAF 13DF
-ABB0 13E0
-ABB1 13E1
-ABB2 13E2
-ABB3 13E3
-ABB4 13E4
-ABB5 13E5
-ABB6 13E6
-ABB7 13E7
-ABB8 13E8
-ABB9 13E9
-ABBA 13EA
-ABBB 13EB
-ABBC 13EC
-ABBD 13ED
-ABBE 13EE
-ABBF 13EF
-FF41 FF21
-FF42 FF22
-FF43 FF23
-FF44 FF24
-FF45 FF25
-FF46 FF26
-FF47 FF27
-FF48 FF28
-FF49 FF29
-FF4A FF2A
-FF4B FF2B
-FF4C FF2C
-FF4D FF2D
-FF4E FF2E
-FF4F FF2F
-FF50 FF30
-FF51 FF31
-FF52 FF32
-FF53 FF33
-FF54 FF34
-FF55 FF35
-FF56 FF36
-FF57 FF37
-FF58 FF38
-FF59 FF39
-FF5A FF3A
-10428 10400
-10429 10401
-1042A 10402
-1042B 10403
-1042C 10404
-1042D 10405
-1042E 10406
-1042F 10407
-10430 10408
-10431 10409
-10432 1040A
-10433 1040B
-10434 1040C
-10435 1040D
-10436 1040E
-10437 1040F
-10438 10410
-10439 10411
-1043A 10412
-1043B 10413
-1043C 10414
-1043D 10415
-1043E 10416
-1043F 10417
-10440 10418
-10441 10419
-10442 1041A
-10443 1041B
-10444 1041C
-10445 1041D
-10446 1041E
-10447 1041F
-10448 10420
-10449 10421
-1044A 10422
-1044B 10423
-1044C 10424
-1044D 10425
-1044E 10426
-1044F 10427
-104D8 104B0
-104D9 104B1
-104DA 104B2
-104DB 104B3
-104DC 104B4
-104DD 104B5
-104DE 104B6
-104DF 104B7
-104E0 104B8
-104E1 104B9
-104E2 104BA
-104E3 104BB
-104E4 104BC
-104E5 104BD
-104E6 104BE
-104E7 104BF
-104E8 104C0
-104E9 104C1
-104EA 104C2
-104EB 104C3
-104EC 104C4
-104ED 104C5
-104EE 104C6
-104EF 104C7
-104F0 104C8
-104F1 104C9
-104F2 104CA
-104F3 104CB
-104F4 104CC
-104F5 104CD
-104F6 104CE
-104F7 104CF
-104F8 104D0
-104F9 104D1
-104FA 104D2
-104FB 104D3
-10CC0 10C80
-10CC1 10C81
-10CC2 10C82
-10CC3 10C83
-10CC4 10C84
-10CC5 10C85
-10CC6 10C86
-10CC7 10C87
-10CC8 10C88
-10CC9 10C89
-10CCA 10C8A
-10CCB 10C8B
-10CCC 10C8C
-10CCD 10C8D
-10CCE 10C8E
-10CCF 10C8F
-10CD0 10C90
-10CD1 10C91
-10CD2 10C92
-10CD3 10C93
-10CD4 10C94
-10CD5 10C95
-10CD6 10C96
-10CD7 10C97
-10CD8 10C98
-10CD9 10C99
-10CDA 10C9A
-10CDB 10C9B
-10CDC 10C9C
-10CDD 10C9D
-10CDE 10C9E
-10CDF 10C9F
-10CE0 10CA0
-10CE1 10CA1
-10CE2 10CA2
-10CE3 10CA3
-10CE4 10CA4
-10CE5 10CA5
-10CE6 10CA6
-10CE7 10CA7
-10CE8 10CA8
-10CE9 10CA9
-10CEA 10CAA
-10CEB 10CAB
-10CEC 10CAC
-10CED 10CAD
-10CEE 10CAE
-10CEF 10CAF
-10CF0 10CB0
-10CF1 10CB1
-10CF2 10CB2
-118C0 118A0
-118C1 118A1
-118C2 118A2
-118C3 118A3
-118C4 118A4
-118C5 118A5
-118C6 118A6
-118C7 118A7
-118C8 118A8
-118C9 118A9
-118CA 118AA
-118CB 118AB
-118CC 118AC
-118CD 118AD
-118CE 118AE
-118CF 118AF
-118D0 118B0
-118D1 118B1
-118D2 118B2
-118D3 118B3
-118D4 118B4
-118D5 118B5
-118D6 118B6
-118D7 118B7
-118D8 118B8
-118D9 118B9
-118DA 118BA
-118DB 118BB
-118DC 118BC
-118DD 118BD
-118DE 118BE
-118DF 118BF
-16E60 16E40
-16E61 16E41
-16E62 16E42
-16E63 16E43
-16E64 16E44
-16E65 16E45
-16E66 16E46
-16E67 16E47
-16E68 16E48
-16E69 16E49
-16E6A 16E4A
-16E6B 16E4B
-16E6C 16E4C
-16E6D 16E4D
-16E6E 16E4E
-16E6F 16E4F
-16E70 16E50
-16E71 16E51
-16E72 16E52
-16E73 16E53
-16E74 16E54
-16E75 16E55
-16E76 16E56
-16E77 16E57
-16E78 16E58
-16E79 16E59
-16E7A 16E5A
-16E7B 16E5B
-16E7C 16E5C
-16E7D 16E5D
-16E7E 16E5E
-16E7F 16E5F
-1E922 1E900
-1E923 1E901
-1E924 1E902
-1E925 1E903
-1E926 1E904
-1E927 1E905
-1E928 1E906
-1E929 1E907
-1E92A 1E908
-1E92B 1E909
-1E92C 1E90A
-1E92D 1E90B
-1E92E 1E90C
-1E92F 1E90D
-1E930 1E90E
-1E931 1E90F
-1E932 1E910
-1E933 1E911
-1E934 1E912
-1E935 1E913
-1E936 1E914
-1E937 1E915
-1E938 1E916
-1E939 1E917
-1E93A 1E918
-1E93B 1E919
-1E93C 1E91A
-1E93D 1E91B
-1E93E 1E91C
-1E93F 1E91D
-1E940 1E91E
-1E941 1E91F
-1E942 1E920
-1E943 1E921
-END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/Vo.pl b/Master/tlpkg/tlperl/lib/unicore/To/Vo.pl
index 11b119733f5..4df2da26cc7 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/Vo.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/Vo.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -18,21 +18,21 @@ $Unicode::UCD::SwashInfo{'ToVo'}{'missing'} = 'R';
return <<'END';
0 A6 Rotated
-A7 U
+A7 Upright
A8 Rotated
-A9 U
+A9 Upright
AA AD Rotated
-AE U
+AE Upright
AF B0 Rotated
-B1 U
+B1 Upright
B2 BB Rotated
-BC BE U
+BC BE Upright
BF D6 Rotated
-D7 U
+D7 Upright
D8 F6 Rotated
-F7 U
+F7 Upright
F8 2E9 Rotated
-2EA 2EB U
+2EA 2EB Upright
2EC 377 Rotated
37A 37F Rotated
384 38A Rotated
@@ -45,8 +45,7 @@ F8 2E9 Rotated
591 5C7 Rotated
5D0 5EA Rotated
5EF 5F4 Rotated
-600 61C Rotated
-61E 70D Rotated
+600 70D Rotated
70F 74A Rotated
74D 7B1 Rotated
7C0 7FA Rotated
@@ -55,9 +54,9 @@ F8 2E9 Rotated
840 85B Rotated
85E Rotated
860 86A Rotated
-8A0 8B4 Rotated
-8B6 8C7 Rotated
-8D3 983 Rotated
+870 88E Rotated
+890 891 Rotated
+898 983 Rotated
985 98C Rotated
98F 990 Rotated
993 9A8 Rotated
@@ -135,11 +134,12 @@ C00 C0C Rotated
C0E C10 Rotated
C12 C28 Rotated
C2A C39 Rotated
-C3D C44 Rotated
+C3C C44 Rotated
C46 C48 Rotated
C4A C4D Rotated
C55 C56 Rotated
C58 C5A Rotated
+C5D Rotated
C60 C63 Rotated
C66 C6F Rotated
C77 C8C Rotated
@@ -151,10 +151,10 @@ CBC CC4 Rotated
CC6 CC8 Rotated
CCA CCD Rotated
CD5 CD6 Rotated
-CDE Rotated
+CDD CDE Rotated
CE0 CE3 Rotated
CE6 CEF Rotated
-CF1 CF2 Rotated
+CF1 CF3 Rotated
D00 D0C Rotated
D0E D10 Rotated
D12 D44 Rotated
@@ -184,7 +184,7 @@ EA5 Rotated
EA7 EBD Rotated
EC0 EC4 Rotated
EC6 Rotated
-EC8 ECD Rotated
+EC8 ECE Rotated
ED0 ED9 Rotated
EDC EDF Rotated
F00 F47 Rotated
@@ -197,7 +197,7 @@ FCE FDA Rotated
10C7 Rotated
10CD Rotated
10D0 10FF Rotated
-1100 11FF U
+1100 11FF Upright
1200 1248 Rotated
124A 124D Rotated
1250 1256 Rotated
@@ -219,12 +219,11 @@ FCE FDA Rotated
13A0 13F5 Rotated
13F8 13FD Rotated
1400 Rotated
-1401 167F U
+1401 167F Upright
1680 169C Rotated
16A0 16F8 Rotated
-1700 170C Rotated
-170E 1714 Rotated
-1720 1736 Rotated
+1700 1715 Rotated
+171F 1736 Rotated
1740 1753 Rotated
1760 176C Rotated
176E 1770 Rotated
@@ -232,11 +231,10 @@ FCE FDA Rotated
1780 17DD Rotated
17E0 17E9 Rotated
17F0 17F9 Rotated
-1800 180E Rotated
-1810 1819 Rotated
+1800 1819 Rotated
1820 1878 Rotated
1880 18AA Rotated
-18B0 18FF U
+18B0 18FF Upright
1900 191E Rotated
1920 192B Rotated
1930 193B Rotated
@@ -252,9 +250,9 @@ FCE FDA Rotated
1A7F 1A89 Rotated
1A90 1A99 Rotated
1AA0 1AAD Rotated
-1AB0 1AC0 Rotated
-1B00 1B4B Rotated
-1B50 1B7C Rotated
+1AB0 1ACE Rotated
+1B00 1B4C Rotated
+1B50 1B7E Rotated
1B80 1BF3 Rotated
1BFC 1C37 Rotated
1C3B 1C49 Rotated
@@ -262,8 +260,7 @@ FCE FDA Rotated
1C90 1CBA Rotated
1CBD 1CC7 Rotated
1CD0 1CFA Rotated
-1D00 1DF9 Rotated
-1DFB 1F15 Rotated
+1D00 1F15 Rotated
1F18 1F1D Rotated
1F20 1F45 Rotated
1F48 1F4D Rotated
@@ -280,105 +277,103 @@ FCE FDA Rotated
1FF2 1FF4 Rotated
1FF6 1FFE Rotated
2000 2015 Rotated
-2016 U
+2016 Upright
2017 201F Rotated
-2020 2021 U
+2020 2021 Upright
2022 202F Rotated
-2030 2031 U
+2030 2031 Upright
2032 203A Rotated
-203B 203C U
+203B 203C Upright
203D 2041 Rotated
-2042 U
+2042 Upright
2043 2046 Rotated
-2047 2049 U
+2047 2049 Upright
204A 2050 Rotated
-2051 U
+2051 Upright
2052 2064 Rotated
-2065 U
+2065 Upright
2066 2071 Rotated
2074 208E Rotated
2090 209C Rotated
-20A0 20BF Rotated
+20A0 20C0 Rotated
20D0 20DC Rotated
-20DD 20E0 U
+20DD 20E0 Upright
20E1 Rotated
-20E2 20E4 U
+20E2 20E4 Upright
20E5 20F0 Rotated
-2100 2101 U
+2100 2101 Upright
2102 Rotated
-2103 2109 U
+2103 2109 Upright
210A 210E Rotated
-210F U
+210F Upright
2110 2112 Rotated
-2113 2114 U
+2113 2114 Upright
2115 Rotated
-2116 2117 U
+2116 2117 Upright
2118 211D Rotated
-211E 2123 U
+211E 2123 Upright
2124 Rotated
-2125 U
+2125 Upright
2126 Rotated
-2127 U
+2127 Upright
2128 Rotated
-2129 U
+2129 Upright
212A 212D Rotated
-212E U
+212E Upright
212F 2134 Rotated
-2135 213F U
+2135 213F Upright
2140 2144 Rotated
-2145 214A U
+2145 214A Upright
214B Rotated
-214C 214D U
+214C 214D Upright
214E Rotated
-214F 2189 U
+214F 2189 Upright
218A 218B Rotated
-218C 218F U
+218C 218F Upright
2190 221D Rotated
-221E U
+221E Upright
221F 2233 Rotated
-2234 2235 U
+2234 2235 Upright
2236 22FF Rotated
-2300 2307 U
+2300 2307 Upright
2308 230B Rotated
-230C 231F U
+230C 231F Upright
2320 2323 Rotated
-2324 2328 U
-2329 232A Tr
-232B U
+2324 2328 Upright
+2329 232A Transformed_Rotated
+232B Upright
232C 237C Rotated
-237D 239A U
+237D 239A Upright
239B 23BD Rotated
-23BE 23CD U
+23BE 23CD Upright
23CE Rotated
-23CF U
+23CF Upright
23D0 Rotated
-23D1 23DB U
+23D1 23DB Upright
23DC 23E1 Rotated
-23E2 2422 U
+23E2 2422 Upright
2423 Rotated
-2424 24FF U
+2424 24FF Upright
2500 259F Rotated
-25A0 2619 U
+25A0 2619 Upright
261A 261F Rotated
-2620 2767 U
+2620 2767 Upright
2768 2775 Rotated
-2776 2793 U
+2776 2793 Upright
2794 2B11 Rotated
-2B12 2B2F U
+2B12 2B2F Upright
2B30 2B4F Rotated
-2B50 2B59 U
+2B50 2B59 Upright
2B5A 2B73 Rotated
2B76 2B95 Rotated
-2B97 U
+2B97 Upright
2B98 2BB7 Rotated
-2BB8 2BD1 U
+2BB8 2BD1 Upright
2BD2 Rotated
-2BD3 2BEB U
+2BD3 2BEB Upright
2BEC 2BEF Rotated
-2BF0 2BFF U
-2C00 2C2E Rotated
-2C30 2C5E Rotated
-2C60 2CF3 Rotated
+2BF0 2BFF Upright
+2C00 2CF3 Rotated
2CF9 2D25 Rotated
2D27 Rotated
2D2D Rotated
@@ -394,86 +389,88 @@ FCE FDA Rotated
2DD0 2DD6 Rotated
2DD8 2DDE Rotated
2DE0 2E4F Rotated
-2E50 2E51 U
-2E52 Rotated
-2E80 3000 U
-3001 3002 Tu
-3003 3007 U
-3008 3011 Tr
-3012 3013 U
-3014 301F Tr
-3020 302F U
-3030 Tr
-3031 3040 U
-3041 Tu
-3042 U
-3043 Tu
-3044 U
-3045 Tu
-3046 U
-3047 Tu
-3048 U
-3049 Tu
-304A 3062 U
-3063 Tu
-3064 3082 U
-3083 Tu
-3084 U
-3085 Tu
-3086 U
-3087 Tu
-3088 308D U
-308E Tu
-308F 3094 U
-3095 3096 Tu
-3097 309A U
-309B 309C Tu
-309D 309F U
-30A0 Tr
-30A1 Tu
-30A2 U
-30A3 Tu
-30A4 U
-30A5 Tu
-30A6 U
-30A7 Tu
-30A8 U
-30A9 Tu
-30AA 30C2 U
-30C3 Tu
-30C4 30E2 U
-30E3 Tu
-30E4 U
-30E5 Tu
-30E6 U
-30E7 Tu
-30E8 30ED U
-30EE Tu
-30EF 30F4 U
-30F5 30F6 Tu
-30F7 30FB U
-30FC Tr
-30FD 3126 U
-3127 Tu
-3128 31EF U
-31F0 31FF Tu
-3200 32FE U
-32FF 3357 Tu
-3358 337A U
-337B 337F Tu
-3380 A4CF U
+2E50 2E51 Upright
+2E52 2E5D Rotated
+2E80 3000 Upright
+3001 3002 Transformed_Upright
+3003 3007 Upright
+3008 3011 Transformed_Rotated
+3012 3013 Upright
+3014 301F Transformed_Rotated
+3020 302F Upright
+3030 Transformed_Rotated
+3031 3040 Upright
+3041 Transformed_Upright
+3042 Upright
+3043 Transformed_Upright
+3044 Upright
+3045 Transformed_Upright
+3046 Upright
+3047 Transformed_Upright
+3048 Upright
+3049 Transformed_Upright
+304A 3062 Upright
+3063 Transformed_Upright
+3064 3082 Upright
+3083 Transformed_Upright
+3084 Upright
+3085 Transformed_Upright
+3086 Upright
+3087 Transformed_Upright
+3088 308D Upright
+308E Transformed_Upright
+308F 3094 Upright
+3095 3096 Transformed_Upright
+3097 309A Upright
+309B 309C Transformed_Upright
+309D 309F Upright
+30A0 Transformed_Rotated
+30A1 Transformed_Upright
+30A2 Upright
+30A3 Transformed_Upright
+30A4 Upright
+30A5 Transformed_Upright
+30A6 Upright
+30A7 Transformed_Upright
+30A8 Upright
+30A9 Transformed_Upright
+30AA 30C2 Upright
+30C3 Transformed_Upright
+30C4 30E2 Upright
+30E3 Transformed_Upright
+30E4 Upright
+30E5 Transformed_Upright
+30E6 Upright
+30E7 Transformed_Upright
+30E8 30ED Upright
+30EE Transformed_Upright
+30EF 30F4 Upright
+30F5 30F6 Transformed_Upright
+30F7 30FB Upright
+30FC Transformed_Rotated
+30FD 3126 Upright
+3127 Transformed_Upright
+3128 31EF Upright
+31F0 31FF Transformed_Upright
+3200 32FE Upright
+32FF 3357 Transformed_Upright
+3358 337A Upright
+337B 337F Transformed_Upright
+3380 A4CF Upright
A4D0 A62B Rotated
A640 A6F7 Rotated
-A700 A7BF Rotated
-A7C2 A7CA Rotated
-A7F5 A82C Rotated
+A700 A7CA Rotated
+A7D0 A7D1 Rotated
+A7D3 Rotated
+A7D5 A7D9 Rotated
+A7F2 A82C Rotated
A830 A839 Rotated
A840 A877 Rotated
A880 A8C5 Rotated
A8CE A8D9 Rotated
A8E0 A953 Rotated
A95F Rotated
-A960 A97F U
+A960 A97F Upright
A980 A9CD Rotated
A9CF A9D9 Rotated
A9DE A9FE Rotated
@@ -490,9 +487,9 @@ AB28 AB2E Rotated
AB30 AB6B Rotated
AB70 ABED Rotated
ABF0 ABF9 Rotated
-AC00 D7FF U
+AC00 D7FF Upright
D800 DFFF Rotated
-E000 FAFF U
+E000 FAFF Upright
FB00 FB06 Rotated
FB13 FB17 Rotated
FB1D FB36 Rotated
@@ -500,57 +497,56 @@ FB38 FB3C Rotated
FB3E Rotated
FB40 FB41 Rotated
FB43 FB44 Rotated
-FB46 FBC1 Rotated
-FBD3 FD3F Rotated
-FD50 FD8F Rotated
+FB46 FBC2 Rotated
+FBD3 FD8F Rotated
FD92 FDC7 Rotated
-FDF0 FDFD Rotated
-FE00 FE0F Rotated
-FE10 FE1F U
+FDCF Rotated
+FDF0 FE0F Rotated
+FE10 FE1F Upright
FE20 FE2F Rotated
-FE30 FE48 U
+FE30 FE48 Upright
FE49 FE4F Rotated
-FE50 FE52 Tu
-FE53 FE57 U
+FE50 FE52 Transformed_Upright
+FE53 FE57 Upright
FE58 Rotated
-FE59 FE5E Tr
-FE5F FE62 U
+FE59 FE5E Transformed_Rotated
+FE5F FE62 Upright
FE63 FE66 Rotated
-FE67 FE6F U
+FE67 FE6F Upright
FE70 FE74 Rotated
FE76 FEFC Rotated
FEFF Rotated
-FF01 Tu
-FF02 FF07 U
-FF08 FF09 Tr
-FF0A FF0B U
-FF0C Tu
+FF01 Transformed_Upright
+FF02 FF07 Upright
+FF08 FF09 Transformed_Rotated
+FF0A FF0B Upright
+FF0C Transformed_Upright
FF0D Rotated
-FF0E Tu
-FF0F FF19 U
-FF1A FF1B Tr
+FF0E Transformed_Upright
+FF0F FF19 Upright
+FF1A FF1B Transformed_Rotated
FF1C FF1E Rotated
-FF1F Tu
-FF20 FF3A U
-FF3B Tr
-FF3C U
-FF3D Tr
-FF3E U
-FF3F Tr
-FF40 FF5A U
-FF5B FF60 Tr
+FF1F Transformed_Upright
+FF20 FF3A Upright
+FF3B Transformed_Rotated
+FF3C Upright
+FF3D Transformed_Rotated
+FF3E Upright
+FF3F Transformed_Rotated
+FF40 FF5A Upright
+FF5B FF60 Transformed_Rotated
FF61 FFBE Rotated
FFC2 FFC7 Rotated
FFCA FFCF Rotated
FFD2 FFD7 Rotated
FFDA FFDC Rotated
-FFE0 FFE2 U
-FFE3 Tr
-FFE4 FFE7 U
+FFE0 FFE2 Upright
+FFE3 Transformed_Rotated
+FFE4 FFE7 Upright
FFE8 FFEE Rotated
-FFF0 FFF8 U
+FFF0 FFF8 Upright
FFF9 FFFB Rotated
-FFFC FFFD U
+FFFC FFFD Upright
10000 1000B Rotated
1000D 10026 Rotated
10028 1003A Rotated
@@ -579,10 +575,20 @@ FFFC FFFD U
104D8 104FB Rotated
10500 10527 Rotated
10530 10563 Rotated
-1056F Rotated
+1056F 1057A Rotated
+1057C 1058A Rotated
+1058C 10592 Rotated
+10594 10595 Rotated
+10597 105A1 Rotated
+105A3 105B1 Rotated
+105B3 105B9 Rotated
+105BB 105BC Rotated
10600 10736 Rotated
10740 10755 Rotated
10760 10767 Rotated
+10780 10785 Rotated
+10787 107B0 Rotated
+107B2 107BA Rotated
10800 10805 Rotated
10808 Rotated
1080A 10835 Rotated
@@ -596,7 +602,7 @@ FFFC FFFD U
108FB 1091B Rotated
1091F 10939 Rotated
1093F Rotated
-10980 1099F U
+10980 1099F Upright
109A0 109B7 Rotated
109BC 109CF Rotated
109D2 10A03 Rotated
@@ -625,13 +631,14 @@ FFFC FFFD U
10E80 10EA9 Rotated
10EAB 10EAD Rotated
10EB0 10EB1 Rotated
-10F00 10F27 Rotated
+10EFD 10F27 Rotated
10F30 10F59 Rotated
+10F70 10F89 Rotated
10FB0 10FCB Rotated
10FE0 10FF6 Rotated
11000 1104D Rotated
-11052 1106F Rotated
-1107F 110C1 Rotated
+11052 11075 Rotated
+1107F 110C2 Rotated
110CD Rotated
110D0 110E8 Rotated
110F0 110F9 Rotated
@@ -641,7 +648,7 @@ FFFC FFFD U
11180 111DF Rotated
111E1 111F4 Rotated
11200 11211 Rotated
-11213 1123E Rotated
+11213 11241 Rotated
11280 11286 Rotated
11288 Rotated
1128A 1128D Rotated
@@ -668,15 +675,15 @@ FFFC FFFD U
1145D 11461 Rotated
11480 114C7 Rotated
114D0 114D9 Rotated
-11580 115FF U
+11580 115FF Upright
11600 11644 Rotated
11650 11659 Rotated
11660 1166C Rotated
-11680 116B8 Rotated
+11680 116B9 Rotated
116C0 116C9 Rotated
11700 1171A Rotated
1171D 1172B Rotated
-11730 1173F Rotated
+11730 11746 Rotated
11800 1183B Rotated
118A0 118F2 Rotated
118FF 11906 Rotated
@@ -690,8 +697,9 @@ FFFC FFFD U
119A0 119A7 Rotated
119AA 119D7 Rotated
119DA 119E4 Rotated
-11A00 11AAF U
+11A00 11ABF Upright
11AC0 11AF8 Rotated
+11B00 11B09 Rotated
11C00 11C08 Rotated
11C0A 11C36 Rotated
11C38 11C45 Rotated
@@ -713,18 +721,23 @@ FFFC FFFD U
11D93 11D98 Rotated
11DA0 11DA9 Rotated
11EE0 11EF8 Rotated
+11F00 11F10 Rotated
+11F12 11F3A Rotated
+11F3E 11F59 Rotated
11FB0 Rotated
11FC0 11FF1 Rotated
11FFF 12399 Rotated
12400 1246E Rotated
12470 12474 Rotated
12480 12543 Rotated
-13000 1343F U
-14400 1467F U
+12F90 12FF2 Rotated
+13000 1345F Upright
+14400 1467F Upright
16800 16A38 Rotated
16A40 16A5E Rotated
16A60 16A69 Rotated
-16A6E 16A6F Rotated
+16A6E 16ABE Rotated
+16AC0 16AC9 Rotated
16AD0 16AED Rotated
16AF0 16AF5 Rotated
16B00 16B45 Rotated
@@ -736,16 +749,18 @@ FFFC FFFD U
16F00 16F4A Rotated
16F4F 16F87 Rotated
16F8F 16F9F Rotated
-16FE0 18D8F U
-1B000 1B2FF U
+16FE0 18D7F Upright
+1AFF0 1B2FF Upright
1BC00 1BC6A Rotated
1BC70 1BC7C Rotated
1BC80 1BC88 Rotated
1BC90 1BC99 Rotated
1BC9C 1BCA3 Rotated
-1D000 1D1FF U
+1CF00 1CFCF Upright
+1D000 1D1FF Upright
1D200 1D245 Rotated
-1D2E0 1D37F U
+1D2C0 1D2D3 Rotated
+1D2E0 1D37F Upright
1D400 1D454 Rotated
1D456 1D49C Rotated
1D49E 1D49F Rotated
@@ -767,18 +782,28 @@ FFFC FFFD U
1D552 1D6A5 Rotated
1D6A8 1D7CB Rotated
1D7CE 1D7FF Rotated
-1D800 1DAAF U
+1D800 1DAAF Upright
+1DF00 1DF1E Rotated
+1DF25 1DF2A Rotated
1E000 1E006 Rotated
1E008 1E018 Rotated
1E01B 1E021 Rotated
1E023 1E024 Rotated
1E026 1E02A Rotated
+1E030 1E06D Rotated
+1E08F Rotated
1E100 1E12C Rotated
1E130 1E13D Rotated
1E140 1E149 Rotated
1E14E 1E14F Rotated
+1E290 1E2AE Rotated
1E2C0 1E2F9 Rotated
1E2FF Rotated
+1E4D0 1E4F9 Rotated
+1E7E0 1E7E6 Rotated
+1E7E8 1E7EB Rotated
+1E7ED 1E7EE Rotated
+1E7F0 1E7FE Rotated
1E800 1E8C4 Rotated
1E8C7 1E8D6 Rotated
1E900 1E94B Rotated
@@ -820,24 +845,24 @@ FFFC FFFD U
1EEA5 1EEA9 Rotated
1EEAB 1EEBB Rotated
1EEF0 1EEF1 Rotated
-1F000 1F1FF U
-1F200 1F201 Tu
-1F202 1F7FF U
+1F000 1F1FF Upright
+1F200 1F201 Transformed_Upright
+1F202 1F7FF Upright
1F800 1F80B Rotated
1F810 1F847 Rotated
1F850 1F859 Rotated
1F860 1F887 Rotated
1F890 1F8AD Rotated
1F8B0 1F8B1 Rotated
-1F900 1FAFF U
+1F900 1FAFF Upright
1FB00 1FB92 Rotated
1FB94 1FBCA Rotated
1FBF0 1FBF9 Rotated
-20000 2FFFD U
-30000 3FFFD U
+20000 2FFFD Upright
+30000 3FFFD Upright
E0001 Rotated
E0020 E007F Rotated
E0100 E01EF Rotated
-F0000 FFFFD U
-100000 10FFFD U
+F0000 FFFFD Upright
+100000 10FFFD Upright
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/WB.pl b/Master/tlpkg/tlperl/lib/unicore/To/WB.pl
index 853449eb291..a3c2fc5fc7b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/WB.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/WB.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -125,9 +125,12 @@ F8 2D7 ALetter
840 858 ALetter
859 85B Extend
860 86A ALetter
-8A0 8B4 ALetter
-8B6 8C7 ALetter
-8D3 8E1 Extend
+870 887 ALetter
+889 88E ALetter
+890 891 Format
+898 89F Extend
+8A0 8C9 ALetter
+8CA 8E1 Extend
8E2 Format
8E3 903 Extend
904 939 ALetter
@@ -238,12 +241,14 @@ C05 C0C ALetter
C0E C10 ALetter
C12 C28 ALetter
C2A C39 ALetter
+C3C Extend
C3D ALetter
C3E C44 Extend
C46 C48 Extend
C4A C4D Extend
C55 C56 Extend
C58 C5A ALetter
+C5D ALetter
C60 C61 ALetter
C62 C63 Extend
C66 C6F Numeric
@@ -260,11 +265,12 @@ CBE CC4 Extend
CC6 CC8 Extend
CCA CCD Extend
CD5 CD6 Extend
-CDE ALetter
+CDD CDE ALetter
CE0 CE1 ALetter
CE2 CE3 Extend
CE6 CEF Numeric
CF1 CF2 ALetter
+CF3 Extend
D00 D03 Extend
D04 D0C ALetter
D0E D10 ALetter
@@ -299,7 +305,7 @@ E47 E4E Extend
E50 E59 Numeric
EB1 Extend
EB4 EBC Extend
-EC8 ECD Extend
+EC8 ECE Extend
ED0 ED9 Numeric
F00 ALetter
F18 F19 Extend
@@ -357,10 +363,9 @@ FC6 Extend
1681 169A ALetter
16A0 16EA ALetter
16EE 16F8 ALetter
-1700 170C ALetter
-170E 1711 ALetter
-1712 1714 Extend
-1720 1731 ALetter
+1700 1711 ALetter
+1712 1715 Extend
+171F 1731 ALetter
1732 1734 Extend
1740 1751 ALetter
1752 1753 Extend
@@ -372,6 +377,7 @@ FC6 Extend
17E0 17E9 Numeric
180B 180D Extend
180E Format
+180F Extend
1810 1819 Numeric
1820 1878 ALetter
1880 1884 ALetter
@@ -392,11 +398,11 @@ FC6 Extend
1A7F Extend
1A80 1A89 Numeric
1A90 1A99 Numeric
-1AB0 1AC0 Extend
+1AB0 1ACE Extend
1B00 1B04 Extend
1B05 1B33 ALetter
1B34 1B44 Extend
-1B45 1B4B ALetter
+1B45 1B4C ALetter
1B50 1B59 Numeric
1B6B 1B73 Extend
1B80 1B82 Extend
@@ -425,8 +431,7 @@ FC6 Extend
1CF7 1CF9 Extend
1CFA ALetter
1D00 1DBF ALetter
-1DC0 1DF9 Extend
-1DFB 1DFF Extend
+1DC0 1DFF Extend
1E00 1F15 ALetter
1F18 1F1D ALetter
1F20 1F45 ALetter
@@ -526,9 +531,7 @@ FC6 Extend
2B1B 2B1C ExtPict_XX
2B50 ExtPict_XX
2B55 ExtPict_XX
-2C00 2C2E ALetter
-2C30 2C5E ALetter
-2C60 2CE4 ALetter
+2C00 2CE4 ALetter
2CEB 2CEE ALetter
2CEF 2CF1 Extend
2CF2 2CF3 ALetter
@@ -581,9 +584,11 @@ A67F A69D ALetter
A69E A69F Extend
A6A0 A6EF ALetter
A6F0 A6F1 Extend
-A708 A7BF ALetter
-A7C2 A7CA ALetter
-A7F5 A801 ALetter
+A708 A7CA ALetter
+A7D0 A7D1 ALetter
+A7D3 ALetter
+A7D5 A7D9 ALetter
+A7F2 A801 ALetter
A802 Extend
A803 A805 ALetter
A806 Extend
@@ -718,9 +723,20 @@ FFF9 FFFB Format
104D8 104FB ALetter
10500 10527 ALetter
10530 10563 ALetter
+10570 1057A ALetter
+1057C 1058A ALetter
+1058C 10592 ALetter
+10594 10595 ALetter
+10597 105A1 ALetter
+105A3 105B1 ALetter
+105B3 105B9 ALetter
+105BB 105BC ALetter
10600 10736 ALetter
10740 10755 ALetter
10760 10767 ALetter
+10780 10785 ALetter
+10787 107B0 ALetter
+107B2 107BA ALetter
10800 10805 ALetter
10808 ALetter
1080A 10835 ALetter
@@ -762,20 +778,28 @@ FFF9 FFFB Format
10E80 10EA9 ALetter
10EAB 10EAC Extend
10EB0 10EB1 ALetter
+10EFD 10EFF Extend
10F00 10F1C ALetter
10F27 ALetter
10F30 10F45 ALetter
10F46 10F50 Extend
+10F70 10F81 ALetter
+10F82 10F85 Extend
10FB0 10FC4 ALetter
10FE0 10FF6 ALetter
11000 11002 Extend
11003 11037 ALetter
11038 11046 Extend
11066 1106F Numeric
+11070 Extend
+11071 11072 ALetter
+11073 11074 Extend
+11075 ALetter
1107F 11082 Extend
11083 110AF ALetter
110B0 110BA Extend
110BD Format
+110C2 Extend
110CD Format
110D0 110E8 ALetter
110F0 110F9 Numeric
@@ -802,6 +826,8 @@ FFF9 FFFB Format
11213 1122B ALetter
1122C 11237 Extend
1123E Extend
+1123F 11240 ALetter
+11241 Extend
11280 11286 ALetter
11288 ALetter
1128A 1128D ALetter
@@ -890,7 +916,7 @@ FFF9 FFFB Format
11A5C 11A89 ALetter
11A8A 11A99 Extend
11A9D ALetter
-11AC0 11AF8 ALetter
+11AB0 11AF8 ALetter
11C00 11C08 ALetter
11C0A 11C2E ALetter
11C2F 11C36 Extend
@@ -920,16 +946,30 @@ FFF9 FFFB Format
11DA0 11DA9 Numeric
11EE0 11EF2 ALetter
11EF3 11EF6 Extend
+11F00 11F01 Extend
+11F02 ALetter
+11F03 Extend
+11F04 11F10 ALetter
+11F12 11F33 ALetter
+11F34 11F3A Extend
+11F3E 11F42 Extend
+11F50 11F59 Numeric
11FB0 ALetter
12000 12399 ALetter
12400 1246E ALetter
12480 12543 ALetter
-13000 1342E ALetter
-13430 13438 Format
+12F90 12FF0 ALetter
+13000 1342F ALetter
+13430 1343F Format
+13440 Extend
+13441 13446 ALetter
+13447 13455 Extend
14400 14646 ALetter
16800 16A38 ALetter
16A40 16A5E ALetter
16A60 16A69 Numeric
+16A70 16ABE ALetter
+16AC0 16AC9 Numeric
16AD0 16AED ALetter
16AF0 16AF4 Extend
16B00 16B2F ALetter
@@ -949,7 +989,12 @@ FFF9 FFFB Format
16FE3 ALetter
16FE4 Extend
16FF0 16FF1 Extend
+1AFF0 1AFF3 Katakana
+1AFF5 1AFFB Katakana
+1AFFD 1AFFE Katakana
1B000 Katakana
+1B120 1B122 Katakana
+1B155 Katakana
1B164 1B167 Katakana
1BC00 1BC6A ALetter
1BC70 1BC7C ALetter
@@ -957,6 +1002,8 @@ FFF9 FFFB Format
1BC90 1BC99 ALetter
1BC9D 1BC9E Extend
1BCA0 1BCA3 Format
+1CF00 1CF2D Extend
+1CF30 1CF46 Extend
1D165 1D169 Extend
1D16D 1D172 Extend
1D173 1D17A Format
@@ -1001,19 +1048,32 @@ FFF9 FFFB Format
1DA84 Extend
1DA9B 1DA9F Extend
1DAA1 1DAAF Extend
+1DF00 1DF1E ALetter
+1DF25 1DF2A ALetter
1E000 1E006 Extend
1E008 1E018 Extend
1E01B 1E021 Extend
1E023 1E024 Extend
1E026 1E02A Extend
+1E030 1E06D ALetter
+1E08F Extend
1E100 1E12C ALetter
1E130 1E136 Extend
1E137 1E13D ALetter
1E140 1E149 Numeric
1E14E ALetter
+1E290 1E2AD ALetter
+1E2AE Extend
1E2C0 1E2EB ALetter
1E2EC 1E2EF Extend
1E2F0 1E2F9 Numeric
+1E4D0 1E4EB ALetter
+1E4EC 1E4EF Extend
+1E4F0 1E4F9 Numeric
+1E7E0 1E7E6 ALetter
+1E7E8 1E7EB ALetter
+1E7ED 1E7EE ALetter
+1E7F0 1E7FE ALetter
1E800 1E8C4 ALetter
1E8D0 1E8D6 Extend
1E900 1E943 ALetter
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/_PerlLB.pl b/Master/tlpkg/tlperl/lib/unicore/To/_PerlLB.pl
index 6d76f339648..7bc48d21e31 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/_PerlLB.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/_PerlLB.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -86,7 +86,7 @@ BF Open_Punctuation
610 61A Combining_Mark
61B Exclamation
61C Combining_Mark
-61E 61F Exclamation
+61D 61F Exclamation
64B 65F Combining_Mark
660 669 Numeric
66A Postfix_Numeric
@@ -112,7 +112,8 @@ BF Open_Punctuation
825 827 Combining_Mark
829 82D Combining_Mark
859 85B Combining_Mark
-8D3 8E1 Combining_Mark
+898 89F Combining_Mark
+8CA 8E1 Combining_Mark
8E3 903 Combining_Mark
93A 93C Combining_Mark
93E 94F Combining_Mark
@@ -166,6 +167,7 @@ BD7 Combining_Mark
BE6 BEF Numeric
BF9 Prefix_Numeric
C00 C04 Combining_Mark
+C3C Combining_Mark
C3E C44 Combining_Mark
C46 C48 Combining_Mark
C4A C4D Combining_Mark
@@ -182,6 +184,7 @@ CCA CCD Combining_Mark
CD5 CD6 Combining_Mark
CE2 CE3 Combining_Mark
CE6 CEF Numeric
+CF3 Combining_Mark
D00 D03 Combining_Mark
D3B D3C Combining_Mark
D3E D44 Combining_Mark
@@ -206,7 +209,7 @@ E50 E59 Numeric
E5A E5B Break_After
EB1 Combining_Mark
EB4 EBC Combining_Mark
-EC8 ECD Combining_Mark
+EC8 ECE Combining_Mark
ED0 ED9 Numeric
F01 F04 Break_Before
F06 F07 Break_Before
@@ -263,7 +266,7 @@ FD9 FDA Glue
169B Open_Punctuation
169C Close_Punctuation
16EB 16ED Break_After
-1712 1714 Combining_Mark
+1712 1715 Combining_Mark
1732 1734 Combining_Mark
1735 1736 Break_After
1752 1753 Combining_Mark
@@ -282,6 +285,7 @@ FD9 FDA Glue
1808 1809 Exclamation
180B 180D Combining_Mark
180E Glue
+180F Combining_Mark
1810 1819 Numeric
1885 1886 Combining_Mark
18A9 Combining_Mark
@@ -296,13 +300,14 @@ FD9 FDA Glue
1A7F Combining_Mark
1A80 1A89 Numeric
1A90 1A99 Numeric
-1AB0 1AC0 Combining_Mark
+1AB0 1ACE Combining_Mark
1B00 1B04 Combining_Mark
1B34 1B44 Combining_Mark
1B50 1B59 Numeric
1B5A 1B5B Break_After
1B5D 1B60 Break_After
1B6B 1B73 Combining_Mark
+1B7D 1B7E Break_After
1B80 1B82 Combining_Mark
1BA1 1BAD Combining_Mark
1BB0 1BB9 Numeric
@@ -317,8 +322,11 @@ FD9 FDA Glue
1CED Combining_Mark
1CF4 Combining_Mark
1CF7 1CF9 Combining_Mark
-1DC0 1DF9 Combining_Mark
-1DFB 1DFF Combining_Mark
+1DC0 1DCC Combining_Mark
+1DCD Glue
+1DCE 1DFB Combining_Mark
+1DFC Glue
+1DFD 1DFF Combining_Mark
1FFD Break_Before
2000 2006 Break_After
2007 Glue
@@ -349,6 +357,7 @@ FD9 FDA Glue
2046 Close_Punctuation
2047 2049 Nonstarter
2056 Break_After
+2057 Postfix_Numeric
2058 205B Break_After
205D 205F Break_After
2060 Word_Joiner
@@ -365,7 +374,9 @@ FD9 FDA Glue
20BB Postfix_Numeric
20BC 20BD Prefix_Numeric
20BE Postfix_Numeric
-20BF 20CF Prefix_Numeric
+20BF Prefix_Numeric
+20C0 Postfix_Numeric
+20C1 20CF Prefix_Numeric
20D0 20F0 Combining_Mark
2103 Postfix_Numeric
2109 Postfix_Numeric
@@ -495,6 +506,16 @@ FD9 FDA Glue
2E43 2E4A Break_After
2E4C Break_After
2E4E 2E4F Break_After
+2E53 2E54 Exclamation
+2E55 Open_Punctuation
+2E56 Close_Punctuation
+2E57 Open_Punctuation
+2E58 Close_Punctuation
+2E59 Open_Punctuation
+2E5A Close_Punctuation
+2E5B Open_Punctuation
+2E5C Close_Punctuation
+2E5D Break_After
2E80 2E99 Ideographic
2E9B 2EF3 Ideographic
2F00 2FD5 Ideographic
@@ -1574,14 +1595,19 @@ FFFC Contingent_Break
10D30 10D39 Numeric
10EAB 10EAC Combining_Mark
10EAD Break_After
+10EFD 10EFF Combining_Mark
10F46 10F50 Combining_Mark
+10F82 10F85 Combining_Mark
11000 11002 Combining_Mark
11038 11046 Combining_Mark
11047 11048 Break_After
11066 1106F Numeric
+11070 Combining_Mark
+11073 11074 Combining_Mark
1107F 11082 Combining_Mark
110B0 110BA Combining_Mark
110BE 110C1 Break_After
+110C2 Combining_Mark
110F0 110F9 Numeric
11100 11102 Combining_Mark
11127 11134 Combining_Mark
@@ -1603,6 +1629,7 @@ FFFC Contingent_Break
11238 11239 Break_After
1123B 1123C Break_After
1123E Combining_Mark
+11241 Combining_Mark
112A9 Break_After
112DF 112EA Combining_Mark
112F0 112F9 Numeric
@@ -1663,6 +1690,7 @@ FFFC Contingent_Break
11A9A 11A9C Break_After
11A9E 11AA0 Break_Before
11AA1 11AA2 Break_After
+11B00 11B09 Break_Before
11C2F 11C36 Combining_Mark
11C38 11C3F Combining_Mark
11C41 11C45 Break_After
@@ -1682,6 +1710,13 @@ FFFC Contingent_Break
11D93 11D97 Combining_Mark
11DA0 11DA9 Numeric
11EF3 11EF6 Combining_Mark
+11F00 11F01 Combining_Mark
+11F03 Combining_Mark
+11F34 11F3A Combining_Mark
+11F3E 11F42 Combining_Mark
+11F43 11F44 Break_After
+11F45 11F4F Ideographic
+11F50 11F59 Numeric
11FDD 11FE0 Postfix_Numeric
11FFF Break_After
12470 12474 Break_After
@@ -1697,10 +1732,18 @@ FFFC Contingent_Break
13430 13436 Glue
13437 Open_Punctuation
13438 Close_Punctuation
+13439 1343B Glue
+1343C Open_Punctuation
+1343D Close_Punctuation
+1343E Open_Punctuation
+1343F Close_Punctuation
+13440 Combining_Mark
+13447 13455 Combining_Mark
145CE Open_Punctuation
145CF Close_Punctuation
16A60 16A69 Numeric
16A6E 16A6F Break_After
+16AC0 16AC9 Numeric
16AF0 16AF4 Combining_Mark
16AF5 Break_After
16B30 16B36 Combining_Mark
@@ -1717,13 +1760,17 @@ FFFC Contingent_Break
17000 187F7 Ideographic
18800 18AFF Ideographic
18D00 18D08 Ideographic
-1B000 1B11E Ideographic
+1B000 1B122 Ideographic
+1B132 Nonstarter
1B150 1B152 Nonstarter
+1B155 Nonstarter
1B164 1B167 Nonstarter
1B170 1B2FB Ideographic
1BC9D 1BC9E Combining_Mark
1BC9F Break_After
1BCA0 1BCA3 Combining_Mark
+1CF00 1CF2D Combining_Mark
+1CF30 1CF46 Combining_Mark
1D165 1D169 Combining_Mark
1D16D 1D182 Combining_Mark
1D185 1D18B Combining_Mark
@@ -1742,23 +1789,49 @@ FFFC Contingent_Break
1E01B 1E021 Combining_Mark
1E023 1E024 Combining_Mark
1E026 1E02A Combining_Mark
+1E08F Combining_Mark
1E130 1E136 Combining_Mark
1E140 1E149 Numeric
+1E2AE Combining_Mark
1E2EC 1E2EF Combining_Mark
1E2F0 1E2F9 Numeric
1E2FF Prefix_Numeric
+1E4EC 1E4EF Combining_Mark
+1E4F0 1E4F9 Numeric
1E8D0 1E8D6 Combining_Mark
1E944 1E94A Combining_Mark
1E950 1E959 Numeric
1E95E 1E95F Open_Punctuation
1ECAC Postfix_Numeric
1ECB0 Postfix_Numeric
-1F000 1F0FF Ideographic
+1F000 1F02B Ideographic
+1F02C 1F02F Unassigned_Extended_Pictographic_Ideographic
+1F030 1F093 Ideographic
+1F094 1F09F Unassigned_Extended_Pictographic_Ideographic
+1F0A0 1F0AE Ideographic
+1F0AF 1F0B0 Unassigned_Extended_Pictographic_Ideographic
+1F0B1 1F0BF Ideographic
+1F0C0 Unassigned_Extended_Pictographic_Ideographic
+1F0C1 1F0CF Ideographic
+1F0D0 Unassigned_Extended_Pictographic_Ideographic
+1F0D1 1F0F5 Ideographic
+1F0F6 1F0FF Unassigned_Extended_Pictographic_Ideographic
1F10D 1F10F Ideographic
1F16D 1F16F Ideographic
-1F1AD 1F1E5 Ideographic
+1F1AD Ideographic
+1F1AE 1F1E5 Unassigned_Extended_Pictographic_Ideographic
1F1E6 1F1FF Regional_Indicator
-1F200 1F384 Ideographic
+1F200 1F202 Ideographic
+1F203 1F20F Unassigned_Extended_Pictographic_Ideographic
+1F210 1F23B Ideographic
+1F23C 1F23F Unassigned_Extended_Pictographic_Ideographic
+1F240 1F248 Ideographic
+1F249 1F24F Unassigned_Extended_Pictographic_Ideographic
+1F250 1F251 Ideographic
+1F252 1F25F Unassigned_Extended_Pictographic_Ideographic
+1F260 1F265 Ideographic
+1F266 1F2FF Unassigned_Extended_Pictographic_Ideographic
+1F300 1F384 Ideographic
1F385 E_Base
1F386 1F39B Ideographic
1F39E 1F3B4 Ideographic
@@ -1821,14 +1894,28 @@ FFFC Contingent_Break
1F6C0 E_Base
1F6C1 1F6CB Ideographic
1F6CC E_Base
-1F6CD 1F6FF Ideographic
-1F774 1F77F Ideographic
-1F7D5 1F7FF Ideographic
-1F80C 1F80F Ideographic
-1F848 1F84F Ideographic
-1F85A 1F85F Ideographic
-1F888 1F88F Ideographic
-1F8AE 1F8FF Ideographic
+1F6CD 1F6D7 Ideographic
+1F6D8 1F6DB Unassigned_Extended_Pictographic_Ideographic
+1F6DC 1F6EC Ideographic
+1F6ED 1F6EF Unassigned_Extended_Pictographic_Ideographic
+1F6F0 1F6FC Ideographic
+1F6FD 1F6FF Unassigned_Extended_Pictographic_Ideographic
+1F774 1F776 Ideographic
+1F777 1F77A Unassigned_Extended_Pictographic_Ideographic
+1F77B 1F77F Ideographic
+1F7D5 1F7D9 Ideographic
+1F7DA 1F7DF Unassigned_Extended_Pictographic_Ideographic
+1F7E0 1F7EB Ideographic
+1F7EC 1F7EF Unassigned_Extended_Pictographic_Ideographic
+1F7F0 Ideographic
+1F7F1 1F7FF Unassigned_Extended_Pictographic_Ideographic
+1F80C 1F80F Unassigned_Extended_Pictographic_Ideographic
+1F848 1F84F Unassigned_Extended_Pictographic_Ideographic
+1F85A 1F85F Unassigned_Extended_Pictographic_Ideographic
+1F888 1F88F Unassigned_Extended_Pictographic_Ideographic
+1F8AE 1F8AF Unassigned_Extended_Pictographic_Ideographic
+1F8B0 1F8B1 Ideographic
+1F8B2 1F8FF Unassigned_Extended_Pictographic_Ideographic
1F90C E_Base
1F90D 1F90E Ideographic
1F90F E_Base
@@ -1853,9 +1940,26 @@ FFFC Contingent_Break
1F9D0 Ideographic
1F9D1 1F9DD E_Base
1F9DE 1F9FF Ideographic
-1FA54 1FAFF Ideographic
+1FA54 1FA5F Unassigned_Extended_Pictographic_Ideographic
+1FA60 1FA6D Ideographic
+1FA6E 1FA6F Unassigned_Extended_Pictographic_Ideographic
+1FA70 1FA7C Ideographic
+1FA7D 1FA7F Unassigned_Extended_Pictographic_Ideographic
+1FA80 1FA88 Ideographic
+1FA89 1FA8F Unassigned_Extended_Pictographic_Ideographic
+1FA90 1FABD Ideographic
+1FABE Unassigned_Extended_Pictographic_Ideographic
+1FABF 1FAC2 Ideographic
+1FAC3 1FAC5 E_Base
+1FAC6 1FACD Unassigned_Extended_Pictographic_Ideographic
+1FACE 1FADB Ideographic
+1FADC 1FADF Unassigned_Extended_Pictographic_Ideographic
+1FAE0 1FAE8 Ideographic
+1FAE9 1FAEF Unassigned_Extended_Pictographic_Ideographic
+1FAF0 1FAF8 E_Base
+1FAF9 1FAFF Unassigned_Extended_Pictographic_Ideographic
1FBF0 1FBF9 Numeric
-1FC00 1FFFD Ideographic
+1FC00 1FFFD Unassigned_Extended_Pictographic_Ideographic
20000 2FFFD Ideographic
30000 3FFFD Ideographic
E0001 Combining_Mark
diff --git a/Master/tlpkg/tlperl/lib/unicore/To/_PerlSCX.pl b/Master/tlpkg/tlperl/lib/unicore/To/_PerlSCX.pl
index 589b67633a5..dd5dc298776 100644
--- a/Master/tlpkg/tlperl/lib/unicore/To/_PerlSCX.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/To/_PerlSCX.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -73,14 +73,14 @@ F8 2B8 Latin
600 604 Arabic
605 Common
606 60B Arabic
-60C Arabic Hanifi_Rohingya Syriac Thaana Yezidi
+60C Arabic Nko Hanifi_Rohingya Syriac Thaana Yezidi
60D 61A Arabic
-61B Arabic Hanifi_Rohingya Syriac Thaana Yezidi
+61B Arabic Nko Hanifi_Rohingya Syriac Thaana Yezidi
61C Arabic Syriac Thaana
-61E Arabic
-61F Arabic Hanifi_Rohingya Syriac Thaana Yezidi
+61D 61E Arabic
+61F Adlam Arabic Nko Hanifi_Rohingya Syriac Thaana Yezidi
620 63F Arabic
-640 Adlam Arabic Mandaic Manichaean Psalter_Pahlavi Hanifi_Rohingya Sogdian Syriac
+640 Adlam Arabic Mandaic Manichaean Old_Uyghur Psalter_Pahlavi Hanifi_Rohingya Sogdian Syriac
641 64A Arabic
64B 655 Arabic Syriac
656 65F Arabic
@@ -104,9 +104,9 @@ F8 2B8 Latin
840 85B Mandaic
85E Mandaic
860 86A Syriac
-8A0 8B4 Arabic
-8B6 8C7 Arabic
-8D3 8E1 Arabic
+870 88E Arabic
+890 891 Arabic
+898 8E1 Arabic
8E2 Common
8E3 8FF Arabic
900 950 Devanagari
@@ -200,11 +200,12 @@ C00 C0C Telugu
C0E C10 Telugu
C12 C28 Telugu
C2A C39 Telugu
-C3D C44 Telugu
+C3C C44 Telugu
C46 C48 Telugu
C4A C4D Telugu
C55 C56 Telugu
C58 C5A Telugu
+C5D Telugu
C60 C63 Telugu
C66 C6F Telugu
C77 C7F Telugu
@@ -217,10 +218,10 @@ CBC CC4 Kannada
CC6 CC8 Kannada
CCA CCD Kannada
CD5 CD6 Kannada
-CDE Kannada
+CDD CDE Kannada
CE0 CE3 Kannada
CE6 CEF Kannada Nandinagari
-CF1 CF2 Kannada
+CF1 CF3 Kannada
D00 D0C Malayalam
D0E D10 Malayalam
D12 D44 Malayalam
@@ -251,7 +252,7 @@ EA5 Lao
EA7 EBD Lao
EC0 EC4 Lao
EC6 Lao
-EC8 ECD Lao
+EC8 ECE Lao
ED0 ED9 Lao
EDC EDF Lao
F00 F47 Tibetan
@@ -297,8 +298,8 @@ FD9 FDA Tibetan
16A0 16EA Runic
16EB 16ED Common
16EE 16F8 Runic
-1700 170C Tagalog
-170E 1714 Tagalog
+1700 1715 Tagalog
+171F Tagalog
1720 1734 Hanunoo
1735 1736 Buhid Hanunoo Tagbanwa Tagalog
1740 1753 Buhid
@@ -312,8 +313,7 @@ FD9 FDA Tibetan
1802 1803 Mongolian Phags_Pa
1804 Mongolian
1805 Mongolian Phags_Pa
-1806 180E Mongolian
-1810 1819 Mongolian
+1806 1819 Mongolian
1820 1878 Mongolian
1880 18AA Mongolian
18B0 18F5 Canadian_Aboriginal
@@ -336,9 +336,9 @@ FD9 FDA Tibetan
1A7F 1A89 Tai_Tham
1A90 1A99 Tai_Tham
1AA0 1AAD Tai_Tham
-1AB0 1AC0 Inherited
-1B00 1B4B Balinese
-1B50 1B7C Balinese
+1AB0 1ACE Inherited
+1B00 1B4C Balinese
+1B50 1B7E Balinese
1B80 1BBF Sundanese
1BC0 1BF3 Batak
1BFC 1BFF Batak
@@ -392,6 +392,7 @@ FD9 FDA Tibetan
1DC2 1DF7 Inherited
1DF8 Cyrillic Syriac
1DF9 Inherited
+1DFA Syriac
1DFB 1DFF Inherited
1E00 1EFF Latin
1F00 1F15 Greek
@@ -421,7 +422,7 @@ FD9 FDA Tibetan
207F Latin
2080 208E Common
2090 209C Latin
-20A0 20BF Common
+20A0 20C0 Common
20D0 20EF Inherited
20F0 Devanagari Grantha Latin
2100 2125 Common
@@ -442,8 +443,7 @@ FD9 FDA Tibetan
2900 2B73 Common
2B76 2B95 Common
2B97 2BFF Common
-2C00 2C2E Glagolitic
-2C30 2C5E Glagolitic
+2C00 2C5F Glagolitic
2C60 2C7F Latin
2C80 2CF3 Coptic
2CF9 2CFF Coptic
@@ -465,7 +465,7 @@ FD9 FDA Tibetan
2DE0 2DFF Cyrillic
2E00 2E42 Common
2E43 Cyrillic Glagolitic
-2E44 2E52 Common
+2E44 2E5D Common
2E80 2E99 Han Hanb Jpan Kore
2E9B 2EF3 Han Hanb Jpan Kore
2F00 2FD5 Han Hanb Jpan Kore
@@ -525,7 +525,7 @@ FD9 FDA Tibetan
33FF Common
3400 4DBF Han Hanb Jpan Kore
4DC0 4DFF Common
-4E00 9FFC Han Hanb Jpan Kore
+4E00 9FFF Han Hanb Jpan Kore
A000 A48C Yi
A490 A4C6 Yi
A4D0 A4FF Lisu
@@ -538,9 +538,11 @@ A700 A707 Han Hanb Jpan Kore Latin
A708 A721 Common
A722 A787 Latin
A788 A78A Common
-A78B A7BF Latin
-A7C2 A7CA Latin
-A7F5 A7FF Latin
+A78B A7CA Latin
+A7D0 A7D1 Latin
+A7D3 Latin
+A7D5 A7D9 Latin
+A7F2 A7FF Latin
A800 A82C Syloti_Nagri
A830 A832 Devanagari Dogra Gujarati Gurmukhi Khojki Kannada Kaithi Mahajani Malayalam Modi Nandinagari Khudawadi Takri Tirhuta
A833 A835 Devanagari Dogra Gujarati Gurmukhi Khojki Kannada Kaithi Mahajani Modi Nandinagari Khudawadi Takri Tirhuta
@@ -599,15 +601,17 @@ FB3E Hebrew
FB40 FB41 Hebrew
FB43 FB44 Hebrew
FB46 FB4F Hebrew
-FB50 FBC1 Arabic
+FB50 FBC2 Arabic
FBD3 FD3D Arabic
-FD3E FD3F Common
-FD50 FD8F Arabic
+FD3E FD3F Arabic Nko
+FD40 FD8F Arabic
FD92 FDC7 Arabic
+FDCF Arabic
FDF0 FDF1 Arabic
FDF2 Arabic Thaana
FDF3 FDFC Arabic
FDFD Arabic Thaana
+FDFE FDFF Arabic
FE00 FE0F Inherited
FE10 FE19 Common
FE20 FE2D Inherited
@@ -645,7 +649,8 @@ FFF9 FFFD Common
1003F 1004D Linear_B
10050 1005D Linear_B
10080 100FA Linear_B
-10100 10102 Cypriot Linear_B
+10100 10101 Cypro_Minoan Cypriot Linear_B
+10102 Cypriot Linear_B
10107 10133 Cypriot Linear_A Linear_B
10137 1013F Cypriot Linear_B
10140 1018E Greek
@@ -673,9 +678,20 @@ FFF9 FFFD Common
10500 10527 Elbasan
10530 10563 Caucasian_Albanian
1056F Caucasian_Albanian
+10570 1057A Vithkuqi
+1057C 1058A Vithkuqi
+1058C 10592 Vithkuqi
+10594 10595 Vithkuqi
+10597 105A1 Vithkuqi
+105A3 105B1 Vithkuqi
+105B3 105B9 Vithkuqi
+105BB 105BC Vithkuqi
10600 10736 Linear_A
10740 10755 Linear_A
10760 10767 Linear_A
+10780 10785 Latin
+10787 107B0 Latin
+107B2 107BA Latin
10800 10805 Cypriot
10808 Cypriot
1080A 10835 Cypriot
@@ -709,7 +725,9 @@ FFF9 FFFD Common
10A60 10A7F Old_South_Arabian
10A80 10A9F Old_North_Arabian
10AC0 10AE6 Manichaean
-10AEB 10AF6 Manichaean
+10AEB 10AF1 Manichaean
+10AF2 Manichaean Old_Uyghur
+10AF3 10AF6 Manichaean
10B00 10B35 Avestan
10B39 10B3F Avestan
10B40 10B55 Inscriptional_Parthian
@@ -729,14 +747,16 @@ FFF9 FFFD Common
10E80 10EA9 Yezidi
10EAB 10EAD Yezidi
10EB0 10EB1 Yezidi
+10EFD 10EFF Arabic
10F00 10F27 Old_Sogdian
10F30 10F59 Sogdian
+10F70 10F89 Old_Uyghur
10FB0 10FCB Chorasmian
10FE0 10FF6 Elymaic
11000 1104D Brahmi
-11052 1106F Brahmi
+11052 11075 Brahmi
1107F Brahmi
-11080 110C1 Kaithi
+11080 110C2 Kaithi
110CD Kaithi
110D0 110E8 Sora_Sompeng
110F0 110F9 Sora_Sompeng
@@ -746,7 +766,7 @@ FFF9 FFFD Common
11180 111DF Sharada
111E1 111F4 Sinhala
11200 11211 Khojki
-11213 1123E Khojki
+11213 11241 Khojki
11280 11286 Multani
11288 Multani
1128A 1128D Multani
@@ -782,11 +802,11 @@ FFF9 FFFD Common
11600 11644 Modi
11650 11659 Modi
11660 1166C Mongolian
-11680 116B8 Takri
+11680 116B9 Takri
116C0 116C9 Takri
11700 1171A Ahom
1171D 1172B Ahom
-11730 1173F Ahom
+11730 11746 Ahom
11800 1183B Dogra
118A0 118F2 Warang_Citi
118FF Warang_Citi
@@ -803,7 +823,9 @@ FFF9 FFFD Common
119DA 119E4 Nandinagari
11A00 11A47 Zanabazar_Square
11A50 11AA2 Soyombo
+11AB0 11ABF Canadian_Aboriginal
11AC0 11AF8 Pau_Cin_Hau
+11B00 11B09 Devanagari
11C00 11C08 Bhaiksuki
11C0A 11C36 Bhaiksuki
11C38 11C45 Bhaiksuki
@@ -825,6 +847,9 @@ FFF9 FFFD Common
11D93 11D98 Gunjala_Gondi
11DA0 11DA9 Gunjala_Gondi
11EE0 11EF8 Makasar
+11F00 11F10 Kawi
+11F12 11F3A Kawi
+11F3E 11F59 Kawi
11FB0 Lisu
11FC0 11FCF Tamil
11FD0 11FD1 Grantha Tamil
@@ -836,13 +861,15 @@ FFF9 FFFD Common
12400 1246E Cuneiform
12470 12474 Cuneiform
12480 12543 Cuneiform
-13000 1342E Egyptian_Hieroglyphs
-13430 13438 Egyptian_Hieroglyphs
+12F90 12FF2 Cypro_Minoan
+13000 13455 Egyptian_Hieroglyphs
14400 14646 Anatolian_Hieroglyphs
16800 16A38 Bamum
16A40 16A5E Mro
16A60 16A69 Mro
16A6E 16A6F Mro
+16A70 16ABE Tangsa
+16AC0 16AC9 Tangsa
16AD0 16AED Bassa_Vah
16AF0 16AF5 Bassa_Vah
16B00 16B45 Pahawh_Hmong
@@ -856,16 +883,22 @@ FFF9 FFFD Common
16F8F 16F9F Miao
16FE0 Tangut
16FE1 Nushu
-16FE2 16FE3 Common
+16FE2 16FE3 Han Hanb Jpan Kore
16FE4 Khitan_Small_Script
16FF0 16FF1 Han Hanb Jpan Kore
17000 187F7 Tangut
18800 18AFF Tangut
18B00 18CD5 Khitan_Small_Script
18D00 18D08 Tangut
+1AFF0 1AFF3 Katakana Jpan
+1AFF5 1AFFB Katakana Jpan
+1AFFD 1AFFE Katakana Jpan
1B000 Katakana Jpan
-1B001 1B11E Hiragana Jpan
+1B001 1B11F Hiragana Jpan
+1B120 1B122 Katakana Jpan
+1B132 Hiragana Jpan
1B150 1B152 Hiragana Jpan
+1B155 Katakana Jpan
1B164 1B167 Katakana Jpan
1B170 1B2FB Nushu
1BC00 1BC6A Duployan
@@ -873,6 +906,9 @@ FFF9 FFFD Common
1BC80 1BC88 Duployan
1BC90 1BC99 Duployan
1BC9C 1BCA3 Duployan
+1CF00 1CF2D Inherited
+1CF30 1CF46 Inherited
+1CF50 1CFC3 Common
1D000 1D0F5 Common
1D100 1D126 Common
1D129 1D166 Common
@@ -883,8 +919,9 @@ FFF9 FFFD Common
1D185 1D18B Inherited
1D18C 1D1A9 Common
1D1AA 1D1AD Inherited
-1D1AE 1D1E8 Common
+1D1AE 1D1EA Common
1D200 1D245 Greek
+1D2C0 1D2D3 Common
1D2E0 1D2F3 Common
1D300 1D356 Common
1D360 1D371 Han Hanb Jpan Kore
@@ -913,17 +950,27 @@ FFF9 FFFD Common
1D800 1DA8B SignWriting
1DA9B 1DA9F SignWriting
1DAA1 1DAAF SignWriting
+1DF00 1DF1E Latin
+1DF25 1DF2A Latin
1E000 1E006 Glagolitic
1E008 1E018 Glagolitic
1E01B 1E021 Glagolitic
1E023 1E024 Glagolitic
1E026 1E02A Glagolitic
+1E030 1E06D Cyrillic
+1E08F Cyrillic
1E100 1E12C Nyiakeng_Puachue_Hmong
1E130 1E13D Nyiakeng_Puachue_Hmong
1E140 1E149 Nyiakeng_Puachue_Hmong
1E14E 1E14F Nyiakeng_Puachue_Hmong
+1E290 1E2AE Toto
1E2C0 1E2F9 Wancho
1E2FF Wancho
+1E4D0 1E4F9 Nag_Mundari
+1E7E0 1E7E6 Ethiopic
+1E7E8 1E7EB Ethiopic
+1E7ED 1E7EE Ethiopic
+1E7F0 1E7FE Ethiopic
1E800 1E8C4 Mende_Kikakui
1E8C7 1E8D6 Mende_Kikakui
1E900 1E94B Adlam
@@ -980,38 +1027,38 @@ FFF9 FFFD Common
1F250 1F251 Han Hanb Jpan Kore
1F260 1F265 Common
1F300 1F6D7 Common
-1F6E0 1F6EC Common
+1F6DC 1F6EC Common
1F6F0 1F6FC Common
-1F700 1F773 Common
-1F780 1F7D8 Common
+1F700 1F776 Common
+1F77B 1F7D9 Common
1F7E0 1F7EB Common
+1F7F0 Common
1F800 1F80B Common
1F810 1F847 Common
1F850 1F859 Common
1F860 1F887 Common
1F890 1F8AD Common
1F8B0 1F8B1 Common
-1F900 1F978 Common
-1F97A 1F9CB Common
-1F9CD 1FA53 Common
+1F900 1FA53 Common
1FA60 1FA6D Common
-1FA70 1FA74 Common
-1FA78 1FA7A Common
-1FA80 1FA86 Common
-1FA90 1FAA8 Common
-1FAB0 1FAB6 Common
-1FAC0 1FAC2 Common
-1FAD0 1FAD6 Common
+1FA70 1FA7C Common
+1FA80 1FA88 Common
+1FA90 1FABD Common
+1FABF 1FAC5 Common
+1FACE 1FADB Common
+1FAE0 1FAE8 Common
+1FAF0 1FAF8 Common
1FB00 1FB92 Common
1FB94 1FBCA Common
1FBF0 1FBF9 Common
-20000 2A6DD Han Hanb Jpan Kore
-2A700 2B734 Han Hanb Jpan Kore
+20000 2A6DF Han Hanb Jpan Kore
+2A700 2B739 Han Hanb Jpan Kore
2B740 2B81D Han Hanb Jpan Kore
2B820 2CEA1 Han Hanb Jpan Kore
2CEB0 2EBE0 Han Hanb Jpan Kore
2F800 2FA1D Han Hanb Jpan Kore
30000 3134A Han Hanb Jpan Kore
+31350 323AF Han Hanb Jpan Kore
E0001 Common
E0020 E007F Common
E0100 E01EF Inherited
diff --git a/Master/tlpkg/tlperl/lib/unicore/UCD.pl b/Master/tlpkg/tlperl/lib/unicore/UCD.pl
index 84948a81d29..94943d54c9c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/UCD.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/UCD.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
@@ -259,7 +259,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'V2
119149
119150',
-'V2
+'V4
+7674
+7675
12330
12331',
'V6
@@ -497,13 +499,6 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'V2
69759
69760',
-'V6
-2673
-2674
-70199
-70200
-72344
-72345',
'V4
3660
3661
@@ -521,13 +516,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'V2
3976
3981',
-'V6
-3406
-3407
-72001
-72002
-73030
-73031',
+'V2
+6092
+6093',
'V2
6746
6747',
@@ -554,13 +545,6 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
134
8232
8234',
-'V6
-6155
-6158
-65024
-65040
-917760
-918000',
'V2
34
35',
@@ -653,7 +637,7 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
42560',
'V2
71424
-71488',
+71504',
'V2
43520
43616',
@@ -661,6 +645,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
4352
4608',
'V2
+73472
+73568',
+'V2
42192
42240',
'V2
@@ -682,6 +669,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
3584
3712',
'V2
+123536
+123584',
+'V2
5120
5760',
'V2
@@ -808,6 +798,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
1792
1872',
'V2
+92784
+92880',
+'V2
94208
100352',
'V2
@@ -856,6 +849,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
196608
201552',
'V2
+201552
+205744',
+'V2
66560
66640',
'V2
@@ -1015,6 +1011,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
110848
110896',
'V2
+110576
+110592',
+'V2
12448
12544',
'V2
@@ -1036,12 +1035,18 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
11568
11648',
'V2
+72368
+72384',
+'V2
66432
66464',
'V2
7376
7424',
'V2
+66928
+67008',
+'V2
64336
65024',
'V2
@@ -1084,6 +1089,12 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
43824
43888',
'V2
+67456
+67520',
+'V2
+122624
+122880',
+'V2
3328
3456',
'V2
@@ -1105,6 +1116,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
68608
68688',
'V2
+69488
+69552',
+'V2
67680
67712',
'V2
@@ -1121,7 +1135,7 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
2160',
'V2
101632
-101776',
+101760',
'V2
128768
128896',
@@ -1129,6 +1143,12 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
2208
2304',
'V2
+2160
+2208',
+'V2
+69312
+69376',
+'V2
126464
126720',
'V2
@@ -1165,6 +1185,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
11008
11264',
'V2
+124112
+124160',
+'V2
66464
66528',
'V2
@@ -1204,6 +1227,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
119648
119680',
'V2
+77712
+77824',
+'V2
1280
1328',
'V2
@@ -1285,12 +1311,18 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
7296
7312',
'V2
+122928
+123024',
+'V2
768
880',
'V2
43776
43824',
'V2
+124896
+124928',
+'V2
73056
73136',
'V2
@@ -1348,6 +1380,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
65040
65056',
'V2
+118528
+118736',
+'V2
65936
66000',
'V2
@@ -1360,6 +1395,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
11904
12032',
'V2
+72448
+72544',
+'V2
68864
68928',
'V2
@@ -1435,6 +1473,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
43056
43072',
'V2
+119488
+119520',
+'V2
65664
65792',
'V2
@@ -1547,7 +1588,7 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
130048',
'V2
78896
-78912',
+78944',
'V6
188
191
@@ -1611,13 +1652,6 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'V2
1725
1726',
-'V6
-1591
-1593
-1695
-1696
-2211
-2212',
'V2
1836
1837',
@@ -1639,13 +1673,6 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
1895
2215
2216',
-'V6
-1606
-1607
-1721
-1725
-1895
-1898',
'V2
1833
1834',
@@ -1691,6 +1718,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
1827
1828',
'V2
+2182
+2183',
+'V2
1706
1707',
'V2
@@ -1775,6 +1805,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
68315
68317',
'V2
+2190
+2191',
+'V2
2153
2154',
'V2
@@ -2180,6 +2213,11 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
42125
42128
42183',
+'V4
+1984
+2043
+2045
+2048',
'V6
125184
125260
@@ -2215,6 +2253,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
11513
11520',
'V2
+77712
+77811',
+'V2
71680
71740',
'V2
@@ -2236,10 +2277,10 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
70144
70162
70163
-70207',
+70210',
'V4
69760
-69826
+69827
69837
69838',
'V6
@@ -2282,6 +2323,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
72154
72165',
'V2
+69488
+69514',
+'V2
66384
66427',
'V2
@@ -2319,7 +2363,7 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
6004',
'V4
71296
-71353
+71354
71360
71370',
'V4
@@ -2329,9 +2373,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
6517',
'V4
5888
-5901
-5902
-5909',
+5910
+5919
+5920',
'V2
1920
1970',
@@ -2354,11 +2398,6 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
92778
92782
92784',
-'V4
-1984
-2043
-2045
-2048',
'V2
42240
42540',
@@ -2373,7 +2412,7 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
71453
71468
71472
-71488',
+71495',
'V4
67648
67670
@@ -2386,9 +2425,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
68416',
'V4
6912
-6988
+6989
6992
-7037',
+7039',
'V4
42656
42744
@@ -2408,7 +2447,7 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
69632
69710
69714
-69744
+69750
69759
69760',
'V6
@@ -2423,11 +2462,13 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
5943
5952
5972',
-'V4
+'V6
5120
5760
6320
-6390',
+6390
+72368
+72384',
'V2
66208
66257',
@@ -2441,6 +2482,11 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'V2
69552
69580',
+'V4
+65792
+65794
+77712
+77811',
'V6
2404
2416
@@ -2448,11 +2494,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
43066
71680
71740',
-'V4
+'V2
77824
-78895
-78896
-78905',
+78934',
'V2
66816
66856',
@@ -2494,6 +2538,13 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
43482
43486
43488',
+'V6
+73472
+73489
+73490
+73531
+73534
+73562',
'V4
94180
94181
@@ -2586,6 +2637,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
44014
44016
44026',
+'V2
+124112
+124154',
'V4
67712
67743
@@ -2617,6 +2671,13 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
66718
66720
66730',
+'V6
+1600
+1601
+68338
+68339
+69488
+69514',
'V2
72384
72441',
@@ -2728,9 +2789,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
11648',
'V6
5888
-5901
-5902
-5909
+5910
+5919
+5920
5941
5943',
'V4
@@ -2739,6 +2800,14 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
3648
3676',
'V4
+92784
+92863
+92864
+92874',
+'V2
+123536
+123567',
+'V4
66432
66462
66463
@@ -2788,12 +2857,16 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'age=11.0' => 'Age/V110',
'age=12' => 'Age/V120',
'age=12.0' => 'Age/V120',
-'age=12.1' => '#/100',
+'age=12.1' => '#/98',
'age=13' => 'Age/V130',
'age=13.0' => 'Age/V130',
+'age=14' => 'Age/V140',
+'age=14.0' => 'Age/V140',
+'age=15' => 'Age/V150',
+'age=15.0' => 'Age/V150',
'age=2' => 'Age/V20',
'age=2.0' => 'Age/V20',
-'age=2.1' => '#/97',
+'age=2.1' => '#/95',
'age=3' => 'Age/V30',
'age=3.0' => 'Age/V30',
'age=3.1' => 'Age/V31',
@@ -2808,8 +2881,8 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'age=6' => 'Age/V60',
'age=6.0' => 'Age/V60',
'age=6.1' => 'Age/V61',
-'age=6.2' => '#/98',
-'age=6.3' => '#/99',
+'age=6.2' => '#/96',
+'age=6.3' => '#/97',
'age=7' => 'Age/V70',
'age=7.0' => 'Age/V70',
'age=8' => 'Age/V80',
@@ -2884,6 +2957,10 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'in=12.1' => 'In/12_1',
'in=13' => 'In/13_0',
'in=13.0' => 'In/13_0',
+'in=14' => 'In/14_0',
+'in=14.0' => 'In/14_0',
+'in=15' => 'In/15_0',
+'in=15.0' => 'In/15_0',
'in=2' => 'In/2_0',
'in=2.0' => 'In/2_0',
'in=2.1' => 'In/2_1',
@@ -2909,148 +2986,148 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'in=8.0' => 'In/8_0',
'in=9' => 'In/9_0',
'in=9.0' => 'In/9_0',
-'nv=-1/2' => '#/562',
+'nv=-1/2' => '#/579',
'nv=0' => 'Nv/0',
'nv=1' => 'Nv/1',
-'nv=1/10' => '#/563',
-'nv=1/12' => '#/564',
+'nv=1/10' => '#/580',
+'nv=1/12' => '#/581',
'nv=1/16' => 'Nv/1_16',
-'nv=1/160' => '#/579',
+'nv=1/160' => '#/596',
'nv=1/2' => 'Nv/1_2',
-'nv=1/20' => '#/565',
+'nv=1/20' => '#/582',
'nv=1/3' => 'Nv/1_3',
-'nv=1/32' => '#/566',
-'nv=1/320' => '#/580',
+'nv=1/32' => '#/583',
+'nv=1/320' => '#/597',
'nv=1/4' => 'Nv/1_4',
-'nv=1/40' => '#/567',
-'nv=1/5' => '#/548',
+'nv=1/40' => '#/584',
+'nv=1/5' => '#/565',
'nv=1/6' => 'Nv/1_6',
-'nv=1/64' => '#/568',
-'nv=1/7' => '#/549',
+'nv=1/64' => '#/585',
+'nv=1/7' => '#/566',
'nv=1/8' => 'Nv/1_8',
-'nv=1/80' => '#/569',
-'nv=1/9' => '#/550',
+'nv=1/80' => '#/586',
+'nv=1/9' => '#/567',
'nv=10' => 'Nv/10',
'nv=100' => 'Nv/100',
'nv=1000' => 'Nv/1000',
'nv=10000' => 'Nv/10000',
'nv=100000' => 'Nv/100000',
-'nv=1000000' => '#/592',
-'nv=10000000' => '#/593',
-'nv=100000000' => '#/595',
-'nv=10000000000' => '#/596',
-'nv=1000000000000' => '#/597',
+'nv=1000000' => '#/609',
+'nv=10000000' => '#/610',
+'nv=100000000' => '#/612',
+'nv=10000000000' => '#/613',
+'nv=1000000000000' => '#/614',
'nv=11' => 'Nv/11',
-'nv=11/12' => '#/581',
-'nv=11/2' => '#/570',
+'nv=11/12' => '#/598',
+'nv=11/2' => '#/587',
'nv=12' => 'Nv/12',
'nv=13' => 'Nv/13',
-'nv=13/2' => '#/571',
+'nv=13/2' => '#/588',
'nv=14' => 'Nv/14',
'nv=15' => 'Nv/15',
-'nv=15/2' => '#/572',
+'nv=15/2' => '#/589',
'nv=16' => 'Nv/16',
'nv=17' => 'Nv/17',
-'nv=17/2' => '#/573',
+'nv=17/2' => '#/590',
'nv=18' => 'Nv/18',
'nv=19' => 'Nv/19',
'nv=2' => 'Nv/2',
'nv=2/3' => 'Nv/2_3',
-'nv=2/5' => '#/551',
+'nv=2/5' => '#/568',
'nv=20' => 'Nv/20',
'nv=200' => 'Nv/200',
'nv=2000' => 'Nv/2000',
'nv=20000' => 'Nv/20000',
-'nv=200000' => '#/582',
-'nv=20000000' => '#/594',
-'nv=21' => '#/521',
-'nv=216000' => '#/583',
-'nv=22' => '#/522',
-'nv=23' => '#/523',
-'nv=24' => '#/524',
-'nv=25' => '#/525',
-'nv=26' => '#/526',
-'nv=27' => '#/527',
-'nv=28' => '#/528',
-'nv=29' => '#/529',
+'nv=200000' => '#/599',
+'nv=20000000' => '#/611',
+'nv=21' => '#/538',
+'nv=216000' => '#/600',
+'nv=22' => '#/539',
+'nv=23' => '#/540',
+'nv=24' => '#/541',
+'nv=25' => '#/542',
+'nv=26' => '#/543',
+'nv=27' => '#/544',
+'nv=28' => '#/545',
+'nv=29' => '#/546',
'nv=3' => 'Nv/3',
'nv=3/16' => 'Nv/3_16',
-'nv=3/2' => '#/552',
-'nv=3/20' => '#/574',
+'nv=3/2' => '#/569',
+'nv=3/20' => '#/591',
'nv=3/4' => 'Nv/3_4',
-'nv=3/5' => '#/553',
-'nv=3/64' => '#/575',
-'nv=3/8' => '#/554',
-'nv=3/80' => '#/576',
+'nv=3/5' => '#/570',
+'nv=3/64' => '#/592',
+'nv=3/8' => '#/571',
+'nv=3/80' => '#/593',
'nv=30' => 'Nv/30',
'nv=300' => 'Nv/300',
'nv=3000' => 'Nv/3000',
'nv=30000' => 'Nv/30000',
-'nv=300000' => '#/584',
-'nv=31' => '#/530',
-'nv=32' => '#/531',
-'nv=33' => '#/532',
-'nv=34' => '#/533',
-'nv=35' => '#/534',
-'nv=36' => '#/535',
-'nv=37' => '#/536',
-'nv=38' => '#/537',
-'nv=39' => '#/538',
+'nv=300000' => '#/601',
+'nv=31' => '#/547',
+'nv=32' => '#/548',
+'nv=33' => '#/549',
+'nv=34' => '#/550',
+'nv=35' => '#/551',
+'nv=36' => '#/552',
+'nv=37' => '#/553',
+'nv=38' => '#/554',
+'nv=39' => '#/555',
'nv=4' => 'Nv/4',
-'nv=4/5' => '#/555',
+'nv=4/5' => '#/572',
'nv=40' => 'Nv/40',
'nv=400' => 'Nv/400',
'nv=4000' => 'Nv/4000',
'nv=40000' => 'Nv/40000',
-'nv=400000' => '#/585',
-'nv=41' => '#/539',
-'nv=42' => '#/540',
-'nv=43' => '#/541',
-'nv=432000' => '#/586',
-'nv=44' => '#/542',
-'nv=45' => '#/543',
-'nv=46' => '#/544',
-'nv=47' => '#/545',
-'nv=48' => '#/546',
-'nv=49' => '#/547',
+'nv=400000' => '#/602',
+'nv=41' => '#/556',
+'nv=42' => '#/557',
+'nv=43' => '#/558',
+'nv=432000' => '#/603',
+'nv=44' => '#/559',
+'nv=45' => '#/560',
+'nv=46' => '#/561',
+'nv=47' => '#/562',
+'nv=48' => '#/563',
+'nv=49' => '#/564',
'nv=5' => 'Nv/5',
-'nv=5/12' => '#/577',
-'nv=5/2' => '#/556',
-'nv=5/6' => '#/557',
-'nv=5/8' => '#/558',
+'nv=5/12' => '#/594',
+'nv=5/2' => '#/573',
+'nv=5/6' => '#/574',
+'nv=5/8' => '#/575',
'nv=50' => 'Nv/50',
'nv=500' => 'Nv/500',
'nv=5000' => 'Nv/5000',
'nv=50000' => 'Nv/50000',
-'nv=500000' => '#/587',
+'nv=500000' => '#/604',
'nv=6' => 'Nv/6',
'nv=60' => 'Nv/60',
'nv=600' => 'Nv/600',
'nv=6000' => 'Nv/6000',
'nv=60000' => 'Nv/60000',
-'nv=600000' => '#/588',
+'nv=600000' => '#/605',
'nv=7' => 'Nv/7',
-'nv=7/12' => '#/578',
-'nv=7/2' => '#/559',
-'nv=7/8' => '#/560',
+'nv=7/12' => '#/595',
+'nv=7/2' => '#/576',
+'nv=7/8' => '#/577',
'nv=70' => 'Nv/70',
'nv=700' => 'Nv/700',
'nv=7000' => 'Nv/7000',
'nv=70000' => 'Nv/70000',
-'nv=700000' => '#/589',
+'nv=700000' => '#/606',
'nv=8' => 'Nv/8',
'nv=80' => 'Nv/80',
'nv=800' => 'Nv/800',
'nv=8000' => 'Nv/8000',
'nv=80000' => 'Nv/80000',
-'nv=800000' => '#/590',
+'nv=800000' => '#/607',
'nv=9' => 'Nv/9',
-'nv=9/2' => '#/561',
+'nv=9/2' => '#/578',
'nv=90' => 'Nv/90',
'nv=900' => 'Nv/900',
'nv=9000' => 'Nv/9000',
'nv=90000' => 'Nv/90000',
-'nv=900000' => '#/591',
+'nv=900000' => '#/608',
);
# Maps property, table to file for those using loose matching. For paths
@@ -3059,17 +3136,19 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
%Unicode::UCD::loose_to_file_of = (
'adlam' => 'Scx/Adlm',
'adlm' => 'Scx/Adlm',
-'aegeannumbers' => '#/343',
+'aegeannumbers' => '#/357',
'age=na' => 'Age/NA',
'age=unassigned' => 'Age/NA',
'age=v100' => 'Age/V100',
'age=v11' => 'Age/V11',
'age=v110' => 'Age/V110',
'age=v120' => 'Age/V120',
-'age=v121' => '#/100',
+'age=v121' => '#/98',
'age=v130' => 'Age/V130',
+'age=v140' => 'Age/V140',
+'age=v150' => 'Age/V150',
'age=v20' => 'Age/V20',
-'age=v21' => '#/97',
+'age=v21' => '#/95',
'age=v30' => 'Age/V30',
'age=v31' => 'Age/V31',
'age=v32' => 'Age/V32',
@@ -3080,12 +3159,12 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'age=v52' => 'Age/V52',
'age=v60' => 'Age/V60',
'age=v61' => 'Age/V61',
-'age=v62' => '#/98',
-'age=v63' => '#/99',
+'age=v62' => '#/96',
+'age=v63' => '#/97',
'age=v70' => 'Age/V70',
'age=v80' => 'Age/V80',
'age=v90' => 'Age/V90',
-'aghb' => '#/635',
+'aghb' => '#/654',
'ahex' => '#/60',
'ahex=f' => '#/!60',
'ahex=false' => '#/!60',
@@ -3095,9 +3174,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'ahex=true' => '#/60',
'ahex=y' => '#/60',
'ahex=yes' => '#/60',
-'ahom' => '#/636',
-'alchemical' => '#/277',
-'alchemicalsymbols' => '#/277',
+'ahom' => '#/655',
+'alchemical' => '#/285',
+'alchemicalsymbols' => '#/285',
'all' => '#/1',
'alnum' => 'Perl/Alnum',
'alpha' => 'Alpha/Y',
@@ -3110,46 +3189,50 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'alpha=y' => 'Alpha/Y',
'alpha=yes' => 'Alpha/Y',
'alphabetic' => 'Alpha/Y',
-'alphabeticpf' => '#/326',
-'alphabeticpresentationforms' => '#/326',
-'anatolianhieroglyphs' => '#/657',
-'ancientgreekmusic' => '#/387',
-'ancientgreekmusicalnotation' => '#/387',
-'ancientgreeknumbers' => '#/398',
-'ancientsymbols' => '#/352',
+'alphabeticpf' => '#/338',
+'alphabeticpresentationforms' => '#/338',
+'anatolianhieroglyphs' => '#/677',
+'ancientgreekmusic' => '#/404',
+'ancientgreekmusicalnotation' => '#/404',
+'ancientgreeknumbers' => '#/415',
+'ancientsymbols' => '#/367',
'any' => '#/2',
'arab' => 'Scx/Arab',
'arabic' => 'Scx/Arab',
-'arabicexta' => '#/278',
-'arabicextendeda' => '#/278',
-'arabicmath' => '#/279',
-'arabicmathematicalalphabeticsymbols' => '#/279',
-'arabicpfa' => '#/250',
-'arabicpfb' => '#/251',
-'arabicpresentationformsa' => '#/250',
-'arabicpresentationformsb' => '#/251',
-'arabicsup' => '#/252',
-'arabicsupplement' => '#/252',
+'arabicexta' => '#/286',
+'arabicextb' => '#/287',
+'arabicextc' => '#/288',
+'arabicextendeda' => '#/286',
+'arabicextendedb' => '#/287',
+'arabicextendedc' => '#/288',
+'arabicmath' => '#/289',
+'arabicmathematicalalphabeticsymbols' => '#/289',
+'arabicpfa' => '#/255',
+'arabicpfb' => '#/256',
+'arabicpresentationformsa' => '#/255',
+'arabicpresentationformsb' => '#/256',
+'arabicsup' => '#/257',
+'arabicsupplement' => '#/257',
'armenian' => 'Scx/Armn',
-'armi' => '#/637',
+'armi' => '#/656',
'armn' => 'Scx/Armn',
'arrows' => '#/151',
'ascii' => '#/131',
'asciihexdigit' => '#/60',
'assigned' => 'Perl/Assigned',
-'avestan' => '#/638',
-'avst' => '#/638',
-'bali' => '#/639',
-'balinese' => '#/639',
-'bamu' => '#/640',
-'bamum' => '#/640',
-'bamumsup' => '#/223',
-'bamumsupplement' => '#/223',
+'avestan' => '#/657',
+'avst' => '#/657',
+'bali' => '#/658',
+'balinese' => '#/658',
+'bamu' => '#/659',
+'bamum' => '#/659',
+'bamumsup' => '#/225',
+'bamumsupplement' => '#/225',
'basiclatin' => '#/131',
-'bass' => '#/641',
-'bassavah' => '#/641',
-'batak' => '#/642',
-'batk' => '#/642',
+'bass' => '#/660',
+'bassavah' => '#/660',
+'batak' => '#/661',
+'batk' => '#/661',
'bc=al' => 'Bc/AL',
'bc=an' => 'Bc/AN',
'bc=arabicletter' => 'Bc/AL',
@@ -3165,35 +3248,35 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'bc=europeannumber' => 'Bc/EN',
'bc=europeanseparator' => 'Bc/ES',
'bc=europeanterminator' => 'Bc/ET',
-'bc=firststrongisolate' => '#/102',
-'bc=fsi' => '#/102',
+'bc=firststrongisolate' => '#/100',
+'bc=fsi' => '#/100',
'bc=l' => 'Bc/L',
'bc=lefttoright' => 'Bc/L',
-'bc=lefttorightembedding' => '#/103',
-'bc=lefttorightisolate' => '#/104',
-'bc=lefttorightoverride' => '#/105',
-'bc=lre' => '#/103',
-'bc=lri' => '#/104',
-'bc=lro' => '#/105',
+'bc=lefttorightembedding' => '#/101',
+'bc=lefttorightisolate' => '#/102',
+'bc=lefttorightoverride' => '#/103',
+'bc=lre' => '#/101',
+'bc=lri' => '#/102',
+'bc=lro' => '#/103',
'bc=nonspacingmark' => 'Bc/NSM',
'bc=nsm' => 'Bc/NSM',
'bc=on' => 'Bc/ON',
'bc=otherneutral' => 'Bc/ON',
'bc=paragraphseparator' => 'Bc/B',
-'bc=pdf' => '#/106',
-'bc=pdi' => '#/107',
-'bc=popdirectionalformat' => '#/106',
-'bc=popdirectionalisolate' => '#/107',
+'bc=pdf' => '#/104',
+'bc=pdi' => '#/105',
+'bc=popdirectionalformat' => '#/104',
+'bc=popdirectionalisolate' => '#/105',
'bc=r' => 'Bc/R',
'bc=righttoleft' => 'Bc/R',
-'bc=righttoleftembedding' => '#/108',
-'bc=righttoleftisolate' => '#/109',
-'bc=righttoleftoverride' => '#/110',
-'bc=rle' => '#/108',
-'bc=rli' => '#/109',
-'bc=rlo' => '#/110',
-'bc=s' => '#/101',
-'bc=segmentseparator' => '#/101',
+'bc=righttoleftembedding' => '#/106',
+'bc=righttoleftisolate' => '#/107',
+'bc=righttoleftoverride' => '#/108',
+'bc=rle' => '#/106',
+'bc=rli' => '#/107',
+'bc=rlo' => '#/108',
+'bc=s' => '#/99',
+'bc=segmentseparator' => '#/99',
'bc=whitespace' => 'Bc/WS',
'bc=ws' => 'Bc/WS',
'beng' => 'Scx/Beng',
@@ -3222,473 +3305,503 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'bidimirrored' => 'BidiM/Y',
'blank' => 'Perl/Blank',
'blk=adlam' => '#/132',
-'blk=aegeannumbers' => '#/343',
-'blk=ahom' => '#/120',
-'blk=alchemical' => '#/277',
-'blk=alchemicalsymbols' => '#/277',
-'blk=alphabeticpf' => '#/326',
-'blk=alphabeticpresentationforms' => '#/326',
-'blk=anatolianhieroglyphs' => '#/405',
-'blk=ancientgreekmusic' => '#/387',
-'blk=ancientgreekmusicalnotation' => '#/387',
-'blk=ancientgreeknumbers' => '#/398',
-'blk=ancientsymbols' => '#/352',
+'blk=aegeannumbers' => '#/357',
+'blk=ahom' => '#/118',
+'blk=alchemical' => '#/285',
+'blk=alchemicalsymbols' => '#/285',
+'blk=alphabeticpf' => '#/338',
+'blk=alphabeticpresentationforms' => '#/338',
+'blk=anatolianhieroglyphs' => '#/422',
+'blk=ancientgreekmusic' => '#/404',
+'blk=ancientgreekmusicalnotation' => '#/404',
+'blk=ancientgreeknumbers' => '#/415',
+'blk=ancientsymbols' => '#/367',
'blk=arabic' => '#/150',
-'blk=arabicexta' => '#/278',
-'blk=arabicextendeda' => '#/278',
-'blk=arabicmath' => '#/279',
-'blk=arabicmathematicalalphabeticsymbols' => '#/279',
-'blk=arabicpfa' => '#/250',
-'blk=arabicpfb' => '#/251',
-'blk=arabicpresentationformsa' => '#/250',
-'blk=arabicpresentationformsb' => '#/251',
-'blk=arabicsup' => '#/252',
-'blk=arabicsupplement' => '#/252',
-'blk=armenian' => '#/221',
+'blk=arabicexta' => '#/286',
+'blk=arabicextb' => '#/287',
+'blk=arabicextc' => '#/288',
+'blk=arabicextendeda' => '#/286',
+'blk=arabicextendedb' => '#/287',
+'blk=arabicextendedc' => '#/288',
+'blk=arabicmath' => '#/289',
+'blk=arabicmathematicalalphabeticsymbols' => '#/289',
+'blk=arabicpfa' => '#/255',
+'blk=arabicpfb' => '#/256',
+'blk=arabicpresentationformsa' => '#/255',
+'blk=arabicpresentationformsb' => '#/256',
+'blk=arabicsup' => '#/257',
+'blk=arabicsupplement' => '#/257',
+'blk=armenian' => '#/223',
'blk=arrows' => '#/151',
'blk=ascii' => '#/131',
-'blk=avestan' => '#/178',
-'blk=balinese' => '#/222',
+'blk=avestan' => '#/179',
+'blk=balinese' => '#/224',
'blk=bamum' => '#/133',
-'blk=bamumsup' => '#/223',
-'blk=bamumsupplement' => '#/223',
+'blk=bamumsup' => '#/225',
+'blk=bamumsupplement' => '#/225',
'blk=basiclatin' => '#/131',
-'blk=bassavah' => '#/224',
+'blk=bassavah' => '#/226',
'blk=batak' => '#/134',
-'blk=bengali' => '#/179',
-'blk=bhaiksuki' => '#/253',
-'blk=blockelements' => '#/344',
-'blk=bopomofo' => '#/225',
-'blk=bopomofoext' => '#/301',
-'blk=bopomofoextended' => '#/301',
-'blk=boxdrawing' => '#/280',
+'blk=bengali' => '#/180',
+'blk=bhaiksuki' => '#/258',
+'blk=blockelements' => '#/358',
+'blk=bopomofo' => '#/227',
+'blk=bopomofoext' => '#/312',
+'blk=bopomofoextended' => '#/312',
+'blk=boxdrawing' => '#/290',
'blk=brahmi' => '#/152',
-'blk=braille' => '#/180',
-'blk=braillepatterns' => '#/180',
-'blk=buginese' => '#/226',
+'blk=braille' => '#/181',
+'blk=braillepatterns' => '#/181',
+'blk=buginese' => '#/228',
'blk=buhid' => '#/135',
-'blk=byzantinemusic' => '#/353',
-'blk=byzantinemusicalsymbols' => '#/353',
+'blk=byzantinemusic' => '#/368',
+'blk=byzantinemusicalsymbols' => '#/368',
'blk=canadiansyllabics' => '#/130',
'blk=carian' => '#/153',
-'blk=caucasianalbanian' => '#/388',
+'blk=caucasianalbanian' => '#/405',
'blk=chakma' => '#/154',
-'blk=cham' => '#/121',
-'blk=cherokee' => '#/227',
-'blk=cherokeesup' => '#/302',
-'blk=cherokeesupplement' => '#/302',
-'blk=chesssymbols' => '#/327',
-'blk=chorasmian' => '#/283',
-'blk=cjk' => '#/112',
-'blk=cjkcompat' => '#/254',
-'blk=cjkcompatforms' => '#/354',
-'blk=cjkcompatibility' => '#/254',
-'blk=cjkcompatibilityforms' => '#/354',
-'blk=cjkcompatibilityideographs' => '#/399',
-'blk=cjkcompatibilityideographssupplement' => '#/410',
-'blk=cjkcompatideographs' => '#/399',
-'blk=cjkcompatideographssup' => '#/410',
-'blk=cjkexta' => '#/181',
-'blk=cjkextb' => '#/182',
-'blk=cjkextc' => '#/183',
-'blk=cjkextd' => '#/184',
-'blk=cjkexte' => '#/185',
-'blk=cjkextf' => '#/186',
-'blk=cjkextg' => '#/187',
-'blk=cjkradicalssup' => '#/355',
-'blk=cjkradicalssupplement' => '#/355',
-'blk=cjkstrokes' => '#/281',
-'blk=cjksymbols' => '#/282',
-'blk=cjksymbolsandpunctuation' => '#/282',
-'blk=cjkunifiedideographs' => '#/112',
-'blk=cjkunifiedideographsextensiona' => '#/181',
-'blk=cjkunifiedideographsextensionb' => '#/182',
-'blk=cjkunifiedideographsextensionc' => '#/183',
-'blk=cjkunifiedideographsextensiond' => '#/184',
-'blk=cjkunifiedideographsextensione' => '#/185',
-'blk=cjkunifiedideographsextensionf' => '#/186',
-'blk=cjkunifiedideographsextensiong' => '#/187',
-'blk=combiningdiacriticalmarks' => '#/331',
-'blk=combiningdiacriticalmarksextended' => '#/364',
-'blk=combiningdiacriticalmarksforsymbols' => '#/411',
-'blk=combiningdiacriticalmarkssupplement' => '#/365',
-'blk=combininghalfmarks' => '#/257',
-'blk=combiningmarksforsymbols' => '#/411',
-'blk=commonindicnumberforms' => '#/380',
-'blk=compatjamo' => '#/284',
-'blk=controlpictures' => '#/362',
+'blk=cham' => '#/119',
+'blk=cherokee' => '#/229',
+'blk=cherokeesup' => '#/313',
+'blk=cherokeesupplement' => '#/313',
+'blk=chesssymbols' => '#/339',
+'blk=chorasmian' => '#/293',
+'blk=cjk' => '#/110',
+'blk=cjkcompat' => '#/259',
+'blk=cjkcompatforms' => '#/369',
+'blk=cjkcompatibility' => '#/259',
+'blk=cjkcompatibilityforms' => '#/369',
+'blk=cjkcompatibilityideographs' => '#/416',
+'blk=cjkcompatibilityideographssupplement' => '#/427',
+'blk=cjkcompatideographs' => '#/416',
+'blk=cjkcompatideographssup' => '#/427',
+'blk=cjkexta' => '#/182',
+'blk=cjkextb' => '#/183',
+'blk=cjkextc' => '#/184',
+'blk=cjkextd' => '#/185',
+'blk=cjkexte' => '#/186',
+'blk=cjkextf' => '#/187',
+'blk=cjkextg' => '#/188',
+'blk=cjkexth' => '#/189',
+'blk=cjkradicalssup' => '#/370',
+'blk=cjkradicalssupplement' => '#/370',
+'blk=cjkstrokes' => '#/291',
+'blk=cjksymbols' => '#/292',
+'blk=cjksymbolsandpunctuation' => '#/292',
+'blk=cjkunifiedideographs' => '#/110',
+'blk=cjkunifiedideographsextensiona' => '#/182',
+'blk=cjkunifiedideographsextensionb' => '#/183',
+'blk=cjkunifiedideographsextensionc' => '#/184',
+'blk=cjkunifiedideographsextensiond' => '#/185',
+'blk=cjkunifiedideographsextensione' => '#/186',
+'blk=cjkunifiedideographsextensionf' => '#/187',
+'blk=cjkunifiedideographsextensiong' => '#/188',
+'blk=cjkunifiedideographsextensionh' => '#/189',
+'blk=combiningdiacriticalmarks' => '#/344',
+'blk=combiningdiacriticalmarksextended' => '#/380',
+'blk=combiningdiacriticalmarksforsymbols' => '#/428',
+'blk=combiningdiacriticalmarkssupplement' => '#/381',
+'blk=combininghalfmarks' => '#/262',
+'blk=combiningmarksforsymbols' => '#/428',
+'blk=commonindicnumberforms' => '#/396',
+'blk=compatjamo' => '#/294',
+'blk=controlpictures' => '#/378',
'blk=coptic' => '#/155',
-'blk=copticepactnumbers' => '#/393',
-'blk=countingrod' => '#/303',
-'blk=countingrodnumerals' => '#/303',
-'blk=cuneiform' => '#/255',
-'blk=cuneiformnumbers' => '#/375',
-'blk=cuneiformnumbersandpunctuation' => '#/375',
-'blk=currencysymbols' => '#/363',
-'blk=cypriotsyllabary' => '#/376',
-'blk=cyrillic' => '#/228',
-'blk=cyrillicexta' => '#/328',
-'blk=cyrillicextb' => '#/329',
-'blk=cyrillicextc' => '#/330',
-'blk=cyrillicextendeda' => '#/328',
-'blk=cyrillicextendedb' => '#/329',
-'blk=cyrillicextendedc' => '#/330',
-'blk=cyrillicsup' => '#/304',
-'blk=cyrillicsupplement' => '#/304',
-'blk=cyrillicsupplementary' => '#/304',
-'blk=deseret' => '#/188',
-'blk=devanagari' => '#/285',
-'blk=devanagariext' => '#/345',
-'blk=devanagariextended' => '#/345',
-'blk=diacriticals' => '#/331',
-'blk=diacriticalsext' => '#/364',
-'blk=diacriticalsforsymbols' => '#/411',
-'blk=diacriticalssup' => '#/365',
-'blk=dingbats' => '#/229',
-'blk=divesakuru' => '#/286',
+'blk=copticepactnumbers' => '#/410',
+'blk=countingrod' => '#/314',
+'blk=countingrodnumerals' => '#/314',
+'blk=cuneiform' => '#/260',
+'blk=cuneiformnumbers' => '#/391',
+'blk=cuneiformnumbersandpunctuation' => '#/391',
+'blk=currencysymbols' => '#/379',
+'blk=cypriotsyllabary' => '#/392',
+'blk=cyprominoan' => '#/315',
+'blk=cyrillic' => '#/230',
+'blk=cyrillicexta' => '#/340',
+'blk=cyrillicextb' => '#/341',
+'blk=cyrillicextc' => '#/342',
+'blk=cyrillicextd' => '#/343',
+'blk=cyrillicextendeda' => '#/340',
+'blk=cyrillicextendedb' => '#/341',
+'blk=cyrillicextendedc' => '#/342',
+'blk=cyrillicextendedd' => '#/343',
+'blk=cyrillicsup' => '#/316',
+'blk=cyrillicsupplement' => '#/316',
+'blk=cyrillicsupplementary' => '#/316',
+'blk=deseret' => '#/190',
+'blk=devanagari' => '#/295',
+'blk=devanagariext' => '#/359',
+'blk=devanagariexta' => '#/371',
+'blk=devanagariextended' => '#/359',
+'blk=devanagariextendeda' => '#/371',
+'blk=diacriticals' => '#/344',
+'blk=diacriticalsext' => '#/380',
+'blk=diacriticalsforsymbols' => '#/428',
+'blk=diacriticalssup' => '#/381',
+'blk=dingbats' => '#/231',
+'blk=divesakuru' => '#/296',
'blk=dogra' => '#/136',
'blk=domino' => '#/156',
'blk=dominotiles' => '#/156',
-'blk=duployan' => '#/230',
-'blk=earlydynasticcuneiform' => '#/412',
-'blk=egyptianhieroglyphformatcontrols' => '#/418',
-'blk=egyptianhieroglyphs' => '#/400',
-'blk=elbasan' => '#/189',
-'blk=elymaic' => '#/190',
-'blk=emoticons' => '#/256',
-'blk=enclosedalphanum' => '#/377',
-'blk=enclosedalphanumerics' => '#/377',
-'blk=enclosedalphanumericsupplement' => '#/401',
-'blk=enclosedalphanumsup' => '#/401',
-'blk=enclosedcjk' => '#/305',
-'blk=enclosedcjklettersandmonths' => '#/305',
-'blk=enclosedideographicsup' => '#/413',
-'blk=enclosedideographicsupplement' => '#/413',
-'blk=ethiopic' => '#/231',
-'blk=ethiopicext' => '#/306',
-'blk=ethiopicexta' => '#/332',
-'blk=ethiopicextended' => '#/306',
-'blk=ethiopicextendeda' => '#/332',
-'blk=ethiopicsup' => '#/307',
-'blk=ethiopicsupplement' => '#/307',
-'blk=generalpunctuation' => '#/320',
-'blk=geometricshapes' => '#/366',
-'blk=geometricshapesext' => '#/394',
-'blk=geometricshapesextended' => '#/394',
-'blk=georgian' => '#/232',
-'blk=georgianext' => '#/308',
-'blk=georgianextended' => '#/308',
-'blk=georgiansup' => '#/309',
-'blk=georgiansupplement' => '#/309',
-'blk=glagolitic' => '#/287',
-'blk=glagoliticsup' => '#/346',
-'blk=glagoliticsupplement' => '#/346',
+'blk=duployan' => '#/232',
+'blk=earlydynasticcuneiform' => '#/429',
+'blk=egyptianhieroglyphformatcontrols' => '#/435',
+'blk=egyptianhieroglyphs' => '#/417',
+'blk=elbasan' => '#/191',
+'blk=elymaic' => '#/192',
+'blk=emoticons' => '#/261',
+'blk=enclosedalphanum' => '#/393',
+'blk=enclosedalphanumerics' => '#/393',
+'blk=enclosedalphanumericsupplement' => '#/418',
+'blk=enclosedalphanumsup' => '#/418',
+'blk=enclosedcjk' => '#/317',
+'blk=enclosedcjklettersandmonths' => '#/317',
+'blk=enclosedideographicsup' => '#/430',
+'blk=enclosedideographicsupplement' => '#/430',
+'blk=ethiopic' => '#/233',
+'blk=ethiopicext' => '#/318',
+'blk=ethiopicexta' => '#/345',
+'blk=ethiopicextb' => '#/346',
+'blk=ethiopicextended' => '#/318',
+'blk=ethiopicextendeda' => '#/345',
+'blk=ethiopicextendedb' => '#/346',
+'blk=ethiopicsup' => '#/319',
+'blk=ethiopicsupplement' => '#/319',
+'blk=generalpunctuation' => '#/332',
+'blk=geometricshapes' => '#/382',
+'blk=geometricshapesext' => '#/411',
+'blk=geometricshapesextended' => '#/411',
+'blk=georgian' => '#/234',
+'blk=georgianext' => '#/320',
+'blk=georgianextended' => '#/320',
+'blk=georgiansup' => '#/321',
+'blk=georgiansupplement' => '#/321',
+'blk=glagolitic' => '#/297',
+'blk=glagoliticsup' => '#/360',
+'blk=glagoliticsupplement' => '#/360',
'blk=gothic' => '#/157',
-'blk=grantha' => '#/191',
+'blk=grantha' => '#/193',
'blk=greek' => '#/137',
'blk=greekandcoptic' => '#/137',
-'blk=greekext' => '#/233',
-'blk=greekextended' => '#/233',
-'blk=gujarati' => '#/234',
-'blk=gunjalagondi' => '#/333',
-'blk=gurmukhi' => '#/235',
-'blk=halfandfullforms' => '#/378',
-'blk=halfmarks' => '#/257',
-'blk=halfwidthandfullwidthforms' => '#/378',
+'blk=greekext' => '#/235',
+'blk=greekextended' => '#/235',
+'blk=gujarati' => '#/236',
+'blk=gunjalagondi' => '#/347',
+'blk=gurmukhi' => '#/237',
+'blk=halfandfullforms' => '#/394',
+'blk=halfmarks' => '#/262',
+'blk=halfwidthandfullwidthforms' => '#/394',
'blk=hangul' => '#/158',
-'blk=hangulcompatibilityjamo' => '#/284',
-'blk=hanguljamo' => '#/122',
-'blk=hanguljamoextendeda' => '#/237',
-'blk=hanguljamoextendedb' => '#/238',
+'blk=hangulcompatibilityjamo' => '#/294',
+'blk=hanguljamo' => '#/120',
+'blk=hanguljamoextendeda' => '#/239',
+'blk=hanguljamoextendedb' => '#/240',
'blk=hangulsyllables' => '#/158',
-'blk=hanifirohingya' => '#/356',
-'blk=hanunoo' => '#/192',
+'blk=hanifirohingya' => '#/372',
+'blk=hanunoo' => '#/194',
'blk=hatran' => '#/159',
'blk=hebrew' => '#/160',
-'blk=highprivateusesurrogates' => '#/379',
-'blk=highpusurrogates' => '#/379',
-'blk=highsurrogates' => '#/357',
-'blk=hiragana' => '#/236',
-'blk=idc' => '#/113',
-'blk=ideographicdescriptioncharacters' => '#/113',
-'blk=ideographicsymbols' => '#/395',
-'blk=ideographicsymbolsandpunctuation' => '#/395',
-'blk=imperialaramaic' => '#/367',
-'blk=indicnumberforms' => '#/380',
-'blk=indicsiyaqnumbers' => '#/389',
-'blk=inscriptionalpahlavi' => '#/406',
-'blk=inscriptionalparthian' => '#/408',
+'blk=highprivateusesurrogates' => '#/395',
+'blk=highpusurrogates' => '#/395',
+'blk=highsurrogates' => '#/373',
+'blk=hiragana' => '#/238',
+'blk=idc' => '#/111',
+'blk=ideographicdescriptioncharacters' => '#/111',
+'blk=ideographicsymbols' => '#/412',
+'blk=ideographicsymbolsandpunctuation' => '#/412',
+'blk=imperialaramaic' => '#/383',
+'blk=indicnumberforms' => '#/396',
+'blk=indicsiyaqnumbers' => '#/406',
+'blk=inscriptionalpahlavi' => '#/423',
+'blk=inscriptionalparthian' => '#/425',
'blk=ipaext' => '#/161',
'blk=ipaextensions' => '#/161',
-'blk=jamo' => '#/122',
-'blk=jamoexta' => '#/237',
-'blk=jamoextb' => '#/238',
-'blk=javanese' => '#/239',
+'blk=jamo' => '#/120',
+'blk=jamoexta' => '#/239',
+'blk=jamoextb' => '#/240',
+'blk=javanese' => '#/241',
'blk=kaithi' => '#/162',
-'blk=kanaexta' => '#/240',
-'blk=kanaextendeda' => '#/240',
-'blk=kanasup' => '#/193',
-'blk=kanasupplement' => '#/193',
+'blk=kaktoviknumerals' => '#/397',
+'blk=kanaexta' => '#/242',
+'blk=kanaextb' => '#/243',
+'blk=kanaextendeda' => '#/242',
+'blk=kanaextendedb' => '#/243',
+'blk=kanasup' => '#/195',
+'blk=kanasupplement' => '#/195',
'blk=kanbun' => '#/163',
'blk=kangxi' => '#/164',
'blk=kangxiradicals' => '#/164',
-'blk=kannada' => '#/194',
-'blk=katakana' => '#/241',
-'blk=katakanaext' => '#/310',
-'blk=katakanaphoneticextensions' => '#/310',
-'blk=kayahli' => '#/195',
-'blk=kharoshthi' => '#/288',
-'blk=khitansmallscript' => '#/390',
+'blk=kannada' => '#/196',
+'blk=katakana' => '#/244',
+'blk=katakanaext' => '#/322',
+'blk=katakanaphoneticextensions' => '#/322',
+'blk=kawi' => '#/121',
+'blk=kayahli' => '#/197',
+'blk=kharoshthi' => '#/298',
+'blk=khitansmallscript' => '#/407',
'blk=khmer' => '#/138',
-'blk=khmersymbols' => '#/334',
+'blk=khmersymbols' => '#/348',
'blk=khojki' => '#/165',
-'blk=khudawadi' => '#/258',
-'blk=lao' => '#/114',
+'blk=khudawadi' => '#/263',
+'blk=lao' => '#/112',
'blk=latin1' => '#/166',
'blk=latin1sup' => '#/166',
'blk=latin1supplement' => '#/166',
-'blk=latinexta' => '#/259',
-'blk=latinextadditional' => '#/396',
-'blk=latinextb' => '#/260',
-'blk=latinextc' => '#/261',
-'blk=latinextd' => '#/262',
-'blk=latinexte' => '#/263',
-'blk=latinextendeda' => '#/259',
-'blk=latinextendedadditional' => '#/396',
-'blk=latinextendedb' => '#/260',
-'blk=latinextendedc' => '#/261',
-'blk=latinextendedd' => '#/262',
-'blk=latinextendede' => '#/263',
+'blk=latinexta' => '#/264',
+'blk=latinextadditional' => '#/413',
+'blk=latinextb' => '#/265',
+'blk=latinextc' => '#/266',
+'blk=latinextd' => '#/267',
+'blk=latinexte' => '#/268',
+'blk=latinextendeda' => '#/264',
+'blk=latinextendedadditional' => '#/413',
+'blk=latinextendedb' => '#/265',
+'blk=latinextendedc' => '#/266',
+'blk=latinextendedd' => '#/267',
+'blk=latinextendede' => '#/268',
+'blk=latinextendedf' => '#/269',
+'blk=latinextendedg' => '#/270',
+'blk=latinextf' => '#/269',
+'blk=latinextg' => '#/270',
'blk=lepcha' => '#/167',
-'blk=letterlikesymbols' => '#/391',
+'blk=letterlikesymbols' => '#/408',
'blk=limbu' => '#/139',
-'blk=lineara' => '#/196',
-'blk=linearbideograms' => '#/381',
-'blk=linearbsyllabary' => '#/382',
-'blk=lisu' => '#/123',
-'blk=lisusup' => '#/197',
-'blk=lisusupplement' => '#/197',
-'blk=lowsurrogates' => '#/347',
+'blk=lineara' => '#/198',
+'blk=linearbideograms' => '#/398',
+'blk=linearbsyllabary' => '#/399',
+'blk=lisu' => '#/122',
+'blk=lisusup' => '#/199',
+'blk=lisusupplement' => '#/199',
+'blk=lowsurrogates' => '#/361',
'blk=lycian' => '#/168',
'blk=lydian' => '#/169',
-'blk=mahajani' => '#/242',
-'blk=mahjong' => '#/198',
-'blk=mahjongtiles' => '#/198',
-'blk=makasar' => '#/199',
-'blk=malayalam' => '#/264',
-'blk=mandaic' => '#/200',
-'blk=manichaean' => '#/289',
-'blk=marchen' => '#/201',
-'blk=masaramgondi' => '#/335',
-'blk=mathalphanum' => '#/336',
-'blk=mathematicalalphanumericsymbols' => '#/336',
-'blk=mathematicaloperators' => '#/348',
-'blk=mathoperators' => '#/348',
-'blk=mayannumerals' => '#/349',
-'blk=medefaidrin' => '#/311',
-'blk=meeteimayek' => '#/312',
-'blk=meeteimayekext' => '#/358',
-'blk=meeteimayekextensions' => '#/358',
-'blk=mendekikakui' => '#/337',
-'blk=meroiticcursive' => '#/368',
-'blk=meroitichieroglyphs' => '#/402',
-'blk=miao' => '#/124',
-'blk=miscarrows' => '#/290',
-'blk=miscellaneousmathematicalsymbolsa' => '#/383',
-'blk=miscellaneousmathematicalsymbolsb' => '#/384',
-'blk=miscellaneoussymbols' => '#/313',
-'blk=miscellaneoussymbolsandarrows' => '#/290',
-'blk=miscellaneoussymbolsandpictographs' => '#/369',
-'blk=miscellaneoustechnical' => '#/350',
-'blk=miscmathsymbolsa' => '#/383',
-'blk=miscmathsymbolsb' => '#/384',
-'blk=miscpictographs' => '#/369',
-'blk=miscsymbols' => '#/313',
-'blk=misctechnical' => '#/350',
-'blk=modi' => '#/125',
-'blk=modifierletters' => '#/370',
-'blk=modifiertoneletters' => '#/403',
-'blk=mongolian' => '#/265',
-'blk=mongoliansup' => '#/338',
-'blk=mongoliansupplement' => '#/338',
-'blk=mro' => '#/115',
-'blk=multani' => '#/202',
+'blk=mahajani' => '#/245',
+'blk=mahjong' => '#/200',
+'blk=mahjongtiles' => '#/200',
+'blk=makasar' => '#/201',
+'blk=malayalam' => '#/271',
+'blk=mandaic' => '#/202',
+'blk=manichaean' => '#/299',
+'blk=marchen' => '#/203',
+'blk=masaramgondi' => '#/349',
+'blk=mathalphanum' => '#/350',
+'blk=mathematicalalphanumericsymbols' => '#/350',
+'blk=mathematicaloperators' => '#/362',
+'blk=mathoperators' => '#/362',
+'blk=mayannumerals' => '#/363',
+'blk=medefaidrin' => '#/323',
+'blk=meeteimayek' => '#/324',
+'blk=meeteimayekext' => '#/374',
+'blk=meeteimayekextensions' => '#/374',
+'blk=mendekikakui' => '#/351',
+'blk=meroiticcursive' => '#/384',
+'blk=meroitichieroglyphs' => '#/419',
+'blk=miao' => '#/123',
+'blk=miscarrows' => '#/300',
+'blk=miscellaneousmathematicalsymbolsa' => '#/400',
+'blk=miscellaneousmathematicalsymbolsb' => '#/401',
+'blk=miscellaneoussymbols' => '#/325',
+'blk=miscellaneoussymbolsandarrows' => '#/300',
+'blk=miscellaneoussymbolsandpictographs' => '#/385',
+'blk=miscellaneoustechnical' => '#/364',
+'blk=miscmathsymbolsa' => '#/400',
+'blk=miscmathsymbolsb' => '#/401',
+'blk=miscpictographs' => '#/385',
+'blk=miscsymbols' => '#/325',
+'blk=misctechnical' => '#/364',
+'blk=modi' => '#/124',
+'blk=modifierletters' => '#/386',
+'blk=modifiertoneletters' => '#/420',
+'blk=mongolian' => '#/272',
+'blk=mongoliansup' => '#/352',
+'blk=mongoliansupplement' => '#/352',
+'blk=mro' => '#/113',
+'blk=multani' => '#/204',
'blk=music' => '#/140',
'blk=musicalsymbols' => '#/140',
-'blk=myanmar' => '#/203',
-'blk=myanmarexta' => '#/314',
-'blk=myanmarextb' => '#/315',
-'blk=myanmarextendeda' => '#/314',
-'blk=myanmarextendedb' => '#/315',
-'blk=nabataean' => '#/266',
-'blk=nandinagari' => '#/316',
+'blk=myanmar' => '#/205',
+'blk=myanmarexta' => '#/326',
+'blk=myanmarextb' => '#/327',
+'blk=myanmarextendeda' => '#/326',
+'blk=myanmarextendedb' => '#/327',
+'blk=nabataean' => '#/273',
+'blk=nagmundari' => '#/301',
+'blk=nandinagari' => '#/328',
'blk=nb' => 'Blk/NB',
-'blk=newa' => '#/126',
-'blk=newtailue' => '#/267',
-'blk=nko' => '#/116',
+'blk=newa' => '#/125',
+'blk=newtailue' => '#/274',
+'blk=nko' => '#/114',
'blk=noblock' => 'Blk/NB',
-'blk=numberforms' => '#/317',
+'blk=numberforms' => '#/329',
'blk=nushu' => '#/141',
-'blk=nyiakengpuachuehmong' => '#/407',
-'blk=ocr' => '#/117',
+'blk=nyiakengpuachuehmong' => '#/424',
+'blk=ocr' => '#/115',
'blk=ogham' => '#/142',
-'blk=olchiki' => '#/204',
-'blk=oldhungarian' => '#/339',
-'blk=olditalic' => '#/268',
-'blk=oldnortharabian' => '#/371',
-'blk=oldpermic' => '#/269',
-'blk=oldpersian' => '#/291',
-'blk=oldsogdian' => '#/292',
-'blk=oldsoutharabian' => '#/372',
-'blk=oldturkic' => '#/270',
-'blk=opticalcharacterrecognition' => '#/117',
+'blk=olchiki' => '#/206',
+'blk=oldhungarian' => '#/353',
+'blk=olditalic' => '#/275',
+'blk=oldnortharabian' => '#/387',
+'blk=oldpermic' => '#/276',
+'blk=oldpersian' => '#/302',
+'blk=oldsogdian' => '#/303',
+'blk=oldsoutharabian' => '#/388',
+'blk=oldturkic' => '#/277',
+'blk=olduyghur' => '#/278',
+'blk=opticalcharacterrecognition' => '#/115',
'blk=oriya' => '#/143',
-'blk=ornamentaldingbats' => '#/397',
+'blk=ornamentaldingbats' => '#/414',
'blk=osage' => '#/144',
-'blk=osmanya' => '#/205',
-'blk=ottomansiyaqnumbers' => '#/404',
-'blk=pahawhhmong' => '#/318',
-'blk=palmyrene' => '#/271',
-'blk=paucinhau' => '#/272',
-'blk=phagspa' => '#/206',
-'blk=phaistos' => '#/243',
-'blk=phaistosdisc' => '#/243',
-'blk=phoenician' => '#/293',
-'blk=phoneticext' => '#/319',
-'blk=phoneticextensions' => '#/319',
-'blk=phoneticextensionssupplement' => '#/359',
-'blk=phoneticextsup' => '#/359',
-'blk=playingcards' => '#/340',
-'blk=privateuse' => '#/118',
-'blk=privateusearea' => '#/118',
-'blk=psalterpahlavi' => '#/360',
-'blk=pua' => '#/118',
-'blk=punctuation' => '#/320',
+'blk=osmanya' => '#/207',
+'blk=ottomansiyaqnumbers' => '#/421',
+'blk=pahawhhmong' => '#/330',
+'blk=palmyrene' => '#/279',
+'blk=paucinhau' => '#/280',
+'blk=phagspa' => '#/208',
+'blk=phaistos' => '#/246',
+'blk=phaistosdisc' => '#/246',
+'blk=phoenician' => '#/304',
+'blk=phoneticext' => '#/331',
+'blk=phoneticextensions' => '#/331',
+'blk=phoneticextensionssupplement' => '#/375',
+'blk=phoneticextsup' => '#/375',
+'blk=playingcards' => '#/354',
+'blk=privateuse' => '#/116',
+'blk=privateusearea' => '#/116',
+'blk=psalterpahlavi' => '#/376',
+'blk=pua' => '#/116',
+'blk=punctuation' => '#/332',
'blk=rejang' => '#/170',
-'blk=rumi' => '#/127',
-'blk=ruminumeralsymbols' => '#/127',
+'blk=rumi' => '#/126',
+'blk=ruminumeralsymbols' => '#/126',
'blk=runic' => '#/145',
-'blk=samaritan' => '#/273',
-'blk=saurashtra' => '#/294',
-'blk=sharada' => '#/207',
-'blk=shavian' => '#/208',
-'blk=shorthandformatcontrols' => '#/414',
-'blk=siddham' => '#/209',
-'blk=sinhala' => '#/210',
-'blk=sinhalaarchaicnumbers' => '#/409',
-'blk=smallforms' => '#/295',
-'blk=smallformvariants' => '#/295',
-'blk=smallkanaext' => '#/341',
-'blk=smallkanaextension' => '#/341',
-'blk=sogdian' => '#/211',
-'blk=sorasompeng' => '#/321',
-'blk=soyombo' => '#/212',
-'blk=spacingmodifierletters' => '#/370',
-'blk=specials' => '#/244',
-'blk=sundanese' => '#/274',
-'blk=sundanesesup' => '#/342',
-'blk=sundanesesupplement' => '#/342',
-'blk=suparrowsa' => '#/296',
-'blk=suparrowsb' => '#/297',
-'blk=suparrowsc' => '#/298',
-'blk=superandsub' => '#/322',
-'blk=superscriptsandsubscripts' => '#/322',
-'blk=supmathoperators' => '#/385',
-'blk=supplementalarrowsa' => '#/296',
-'blk=supplementalarrowsb' => '#/297',
-'blk=supplementalarrowsc' => '#/298',
-'blk=supplementalmathematicaloperators' => '#/385',
-'blk=supplementalpunctuation' => '#/361',
-'blk=supplementalsymbolsandpictographs' => '#/415',
-'blk=supplementaryprivateuseareaa' => '#/213',
-'blk=supplementaryprivateuseareab' => '#/214',
-'blk=suppuaa' => '#/213',
-'blk=suppuab' => '#/214',
-'blk=suppunctuation' => '#/361',
-'blk=supsymbolsandpictographs' => '#/415',
-'blk=suttonsignwriting' => '#/392',
-'blk=sylotinagri' => '#/323',
-'blk=symbolsandpictographsexta' => '#/416',
-'blk=symbolsandpictographsextendeda' => '#/416',
-'blk=symbolsforlegacycomputing' => '#/417',
+'blk=samaritan' => '#/281',
+'blk=saurashtra' => '#/305',
+'blk=sharada' => '#/209',
+'blk=shavian' => '#/210',
+'blk=shorthandformatcontrols' => '#/431',
+'blk=siddham' => '#/211',
+'blk=sinhala' => '#/212',
+'blk=sinhalaarchaicnumbers' => '#/426',
+'blk=smallforms' => '#/306',
+'blk=smallformvariants' => '#/306',
+'blk=smallkanaext' => '#/355',
+'blk=smallkanaextension' => '#/355',
+'blk=sogdian' => '#/213',
+'blk=sorasompeng' => '#/333',
+'blk=soyombo' => '#/214',
+'blk=spacingmodifierletters' => '#/386',
+'blk=specials' => '#/247',
+'blk=sundanese' => '#/282',
+'blk=sundanesesup' => '#/356',
+'blk=sundanesesupplement' => '#/356',
+'blk=suparrowsa' => '#/307',
+'blk=suparrowsb' => '#/308',
+'blk=suparrowsc' => '#/309',
+'blk=superandsub' => '#/334',
+'blk=superscriptsandsubscripts' => '#/334',
+'blk=supmathoperators' => '#/402',
+'blk=supplementalarrowsa' => '#/307',
+'blk=supplementalarrowsb' => '#/308',
+'blk=supplementalarrowsc' => '#/309',
+'blk=supplementalmathematicaloperators' => '#/402',
+'blk=supplementalpunctuation' => '#/377',
+'blk=supplementalsymbolsandpictographs' => '#/432',
+'blk=supplementaryprivateuseareaa' => '#/215',
+'blk=supplementaryprivateuseareab' => '#/216',
+'blk=suppuaa' => '#/215',
+'blk=suppuab' => '#/216',
+'blk=suppunctuation' => '#/377',
+'blk=supsymbolsandpictographs' => '#/432',
+'blk=suttonsignwriting' => '#/409',
+'blk=sylotinagri' => '#/335',
+'blk=symbolsandpictographsexta' => '#/433',
+'blk=symbolsandpictographsextendeda' => '#/433',
+'blk=symbolsforlegacycomputing' => '#/434',
'blk=syriac' => '#/171',
-'blk=syriacsup' => '#/275',
-'blk=syriacsupplement' => '#/275',
-'blk=tagalog' => '#/215',
-'blk=tagbanwa' => '#/245',
-'blk=tags' => '#/128',
+'blk=syriacsup' => '#/283',
+'blk=syriacsupplement' => '#/283',
+'blk=tagalog' => '#/217',
+'blk=tagbanwa' => '#/248',
+'blk=tags' => '#/127',
'blk=taile' => '#/146',
-'blk=taitham' => '#/216',
-'blk=taiviet' => '#/217',
-'blk=taixuanjing' => '#/324',
-'blk=taixuanjingsymbols' => '#/324',
+'blk=taitham' => '#/218',
+'blk=taiviet' => '#/219',
+'blk=taixuanjing' => '#/336',
+'blk=taixuanjingsymbols' => '#/336',
'blk=takri' => '#/147',
'blk=tamil' => '#/148',
-'blk=tamilsup' => '#/246',
-'blk=tamilsupplement' => '#/246',
-'blk=tangut' => '#/172',
-'blk=tangutcomponents' => '#/386',
-'blk=tangutsup' => '#/276',
-'blk=tangutsupplement' => '#/276',
-'blk=telugu' => '#/173',
-'blk=thaana' => '#/174',
-'blk=thai' => '#/129',
-'blk=tibetan' => '#/218',
-'blk=tifinagh' => '#/247',
-'blk=tirhuta' => '#/219',
-'blk=transportandmap' => '#/373',
-'blk=transportandmapsymbols' => '#/373',
+'blk=tamilsup' => '#/249',
+'blk=tamilsupplement' => '#/249',
+'blk=tangsa' => '#/172',
+'blk=tangut' => '#/173',
+'blk=tangutcomponents' => '#/403',
+'blk=tangutsup' => '#/284',
+'blk=tangutsupplement' => '#/284',
+'blk=telugu' => '#/174',
+'blk=thaana' => '#/175',
+'blk=thai' => '#/128',
+'blk=tibetan' => '#/220',
+'blk=tifinagh' => '#/250',
+'blk=tirhuta' => '#/221',
+'blk=toto' => '#/129',
+'blk=transportandmap' => '#/389',
+'blk=transportandmapsymbols' => '#/389',
'blk=ucas' => '#/130',
-'blk=ucasext' => '#/220',
-'blk=ugaritic' => '#/248',
+'blk=ucasext' => '#/222',
+'blk=ucasexta' => '#/251',
+'blk=ugaritic' => '#/252',
'blk=unifiedcanadianaboriginalsyllabics' => '#/130',
-'blk=unifiedcanadianaboriginalsyllabicsextended' => '#/220',
-'blk=vai' => '#/119',
-'blk=variationselectors' => '#/111',
+'blk=unifiedcanadianaboriginalsyllabicsextended' => '#/222',
+'blk=unifiedcanadianaboriginalsyllabicsextendeda' => '#/251',
+'blk=vai' => '#/117',
+'blk=variationselectors' => '#/109',
'blk=variationselectorssupplement' => '#/149',
-'blk=vedicext' => '#/249',
-'blk=vedicextensions' => '#/249',
-'blk=verticalforms' => '#/351',
-'blk=vs' => '#/111',
+'blk=vedicext' => '#/253',
+'blk=vedicextensions' => '#/253',
+'blk=verticalforms' => '#/365',
+'blk=vithkuqi' => '#/254',
+'blk=vs' => '#/109',
'blk=vssup' => '#/149',
-'blk=wancho' => '#/175',
-'blk=warangciti' => '#/299',
-'blk=yezidi' => '#/176',
-'blk=yijing' => '#/177',
-'blk=yijinghexagramsymbols' => '#/177',
-'blk=yiradicals' => '#/300',
-'blk=yisyllables' => '#/325',
-'blk=zanabazarsquare' => '#/374',
-'blockelements' => '#/344',
+'blk=wancho' => '#/176',
+'blk=warangciti' => '#/310',
+'blk=yezidi' => '#/177',
+'blk=yijing' => '#/178',
+'blk=yijinghexagramsymbols' => '#/178',
+'blk=yiradicals' => '#/311',
+'blk=yisyllables' => '#/337',
+'blk=zanabazarsquare' => '#/390',
+'blk=znamennymusic' => '#/366',
+'blk=znamennymusicalnotation' => '#/366',
+'blockelements' => '#/358',
'bopo' => 'Scx/Bopo',
'bopomofo' => 'Scx/Bopo',
-'bopomofoext' => '#/301',
-'bopomofoextended' => '#/301',
-'boxdrawing' => '#/280',
+'bopomofoext' => '#/312',
+'bopomofoextended' => '#/312',
+'boxdrawing' => '#/290',
'bpt=c' => 'Bpt/C',
'bpt=close' => 'Bpt/C',
'bpt=n' => 'Bpt/N',
'bpt=none' => 'Bpt/N',
'bpt=o' => 'Bpt/O',
'bpt=open' => 'Bpt/O',
-'brah' => '#/643',
-'brahmi' => '#/643',
-'brai' => '#/180',
-'braille' => '#/180',
-'braillepatterns' => '#/180',
-'bugi' => '#/644',
-'buginese' => '#/644',
-'buhd' => '#/645',
-'buhid' => '#/645',
-'byzantinemusic' => '#/353',
-'byzantinemusicalsymbols' => '#/353',
+'brah' => '#/662',
+'brahmi' => '#/662',
+'brai' => '#/181',
+'braille' => '#/181',
+'braillepatterns' => '#/181',
+'bugi' => '#/663',
+'buginese' => '#/663',
+'buhd' => '#/664',
+'buhid' => '#/664',
+'byzantinemusic' => '#/368',
+'byzantinemusicalsymbols' => '#/368',
'c' => 'Gc/C',
'cakm' => 'Scx/Cakm',
-'canadianaboriginal' => '#/646',
+'canadianaboriginal' => '#/665',
'canadiansyllabics' => '#/130',
-'cans' => '#/646',
-'cari' => '#/647',
-'carian' => '#/647',
+'cans' => '#/665',
+'cari' => '#/666',
+'carian' => '#/666',
'cased' => 'Cased/Y',
'cased=f' => '!Cased/Y',
'cased=false' => '!Cased/Y',
@@ -3700,8 +3813,8 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'cased=yes' => 'Cased/Y',
'casedletter' => 'Gc/LC',
'caseignorable' => 'CI/Y',
-'caucasianalbanian' => '#/635',
-'cc' => '#/422',
+'caucasianalbanian' => '#/654',
+'cc' => '#/439',
'ccc=a' => 'Ccc/A',
'ccc=above' => 'Ccc/A',
'ccc=aboveleft' => 'Ccc/AL',
@@ -3799,13 +3912,13 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'changeswhennfkccasefolded' => 'CWKCF/Y',
'changeswhentitlecased' => 'CWT/Y',
'changeswhenuppercased' => 'CWU/Y',
-'cher' => '#/648',
-'cherokee' => '#/648',
-'cherokeesup' => '#/302',
-'cherokeesupplement' => '#/302',
-'chesssymbols' => '#/327',
-'chorasmian' => '#/649',
-'chrs' => '#/649',
+'cher' => '#/667',
+'cherokee' => '#/667',
+'cherokeesup' => '#/313',
+'cherokeesupplement' => '#/313',
+'chesssymbols' => '#/339',
+'chorasmian' => '#/668',
+'chrs' => '#/668',
'ci' => 'CI/Y',
'ci=f' => '!CI/Y',
'ci=false' => '!CI/Y',
@@ -3815,49 +3928,51 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'ci=true' => 'CI/Y',
'ci=y' => 'CI/Y',
'ci=yes' => 'CI/Y',
-'cjk' => '#/112',
-'cjkcompat' => '#/254',
-'cjkcompatforms' => '#/354',
-'cjkcompatibility' => '#/254',
-'cjkcompatibilityforms' => '#/354',
-'cjkcompatibilityideographs' => '#/399',
-'cjkcompatibilityideographssupplement' => '#/410',
-'cjkcompatideographs' => '#/399',
-'cjkcompatideographssup' => '#/410',
-'cjkexta' => '#/181',
-'cjkextb' => '#/182',
-'cjkextc' => '#/183',
-'cjkextd' => '#/184',
-'cjkexte' => '#/185',
-'cjkextf' => '#/186',
-'cjkextg' => '#/187',
-'cjkradicalssup' => '#/355',
-'cjkradicalssupplement' => '#/355',
-'cjkstrokes' => '#/281',
-'cjksymbols' => '#/282',
-'cjksymbolsandpunctuation' => '#/282',
-'cjkunifiedideographs' => '#/112',
-'cjkunifiedideographsextensiona' => '#/181',
-'cjkunifiedideographsextensionb' => '#/182',
-'cjkunifiedideographsextensionc' => '#/183',
-'cjkunifiedideographsextensiond' => '#/184',
-'cjkunifiedideographsextensione' => '#/185',
-'cjkunifiedideographsextensionf' => '#/186',
-'cjkunifiedideographsextensiong' => '#/187',
+'cjk' => '#/110',
+'cjkcompat' => '#/259',
+'cjkcompatforms' => '#/369',
+'cjkcompatibility' => '#/259',
+'cjkcompatibilityforms' => '#/369',
+'cjkcompatibilityideographs' => '#/416',
+'cjkcompatibilityideographssupplement' => '#/427',
+'cjkcompatideographs' => '#/416',
+'cjkcompatideographssup' => '#/427',
+'cjkexta' => '#/182',
+'cjkextb' => '#/183',
+'cjkextc' => '#/184',
+'cjkextd' => '#/185',
+'cjkexte' => '#/186',
+'cjkextf' => '#/187',
+'cjkextg' => '#/188',
+'cjkexth' => '#/189',
+'cjkradicalssup' => '#/370',
+'cjkradicalssupplement' => '#/370',
+'cjkstrokes' => '#/291',
+'cjksymbols' => '#/292',
+'cjksymbolsandpunctuation' => '#/292',
+'cjkunifiedideographs' => '#/110',
+'cjkunifiedideographsextensiona' => '#/182',
+'cjkunifiedideographsextensionb' => '#/183',
+'cjkunifiedideographsextensionc' => '#/184',
+'cjkunifiedideographsextensiond' => '#/185',
+'cjkunifiedideographsextensione' => '#/186',
+'cjkunifiedideographsextensionf' => '#/187',
+'cjkunifiedideographsextensiong' => '#/188',
+'cjkunifiedideographsextensionh' => '#/189',
'closepunctuation' => 'Gc/Pe',
'cn' => 'Gc/Cn',
-'cntrl' => '#/422',
-'co' => '#/423',
-'combiningdiacriticalmarks' => '#/331',
-'combiningdiacriticalmarksextended' => '#/364',
-'combiningdiacriticalmarksforsymbols' => '#/411',
-'combiningdiacriticalmarkssupplement' => '#/365',
-'combininghalfmarks' => '#/257',
+'cntrl' => '#/439',
+'co' => '#/440',
+'combiningdiacriticalmarks' => '#/344',
+'combiningdiacriticalmarksextended' => '#/380',
+'combiningdiacriticalmarksforsymbols' => '#/428',
+'combiningdiacriticalmarkssupplement' => '#/381',
+'combininghalfmarks' => '#/262',
'combiningmark' => 'Gc/M',
-'combiningmarksforsymbols' => '#/411',
+'combiningmarksforsymbols' => '#/428',
'common' => 'Scx/Zyyy',
-'commonindicnumberforms' => '#/380',
-'compatjamo' => '#/284',
+'commonindicnumberforms' => '#/396',
+'compatjamo' => '#/294',
'compex' => 'CompEx/Y',
'compex=f' => '!CompEx/Y',
'compex=false' => '!CompEx/Y',
@@ -3869,20 +3984,21 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'compex=yes' => 'CompEx/Y',
'compositionexclusion' => 'CE/Y',
'connectorpunctuation' => 'Gc/Pc',
-'control' => '#/422',
-'controlpictures' => '#/362',
+'control' => '#/439',
+'controlpictures' => '#/378',
'copt' => 'Scx/Copt',
'coptic' => 'Scx/Copt',
-'copticepactnumbers' => '#/393',
-'countingrod' => '#/303',
-'countingrodnumerals' => '#/303',
+'copticepactnumbers' => '#/410',
+'countingrod' => '#/314',
+'countingrodnumerals' => '#/314',
+'cpmn' => '#/669',
'cprt' => 'Scx/Cprt',
'cs' => '#/14',
'cuneiform' => 'Scx/Xsux',
-'cuneiformnumbers' => '#/375',
-'cuneiformnumbersandpunctuation' => '#/375',
+'cuneiformnumbers' => '#/391',
+'cuneiformnumbersandpunctuation' => '#/391',
'currencysymbol' => 'Gc/Sc',
-'currencysymbols' => '#/363',
+'currencysymbols' => '#/379',
'cwcf' => 'CWCF/Y',
'cwcf=f' => '!CWCF/Y',
'cwcf=false' => '!CWCF/Y',
@@ -3938,17 +4054,20 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'cwu=y' => 'CWU/Y',
'cwu=yes' => 'CWU/Y',
'cypriot' => 'Scx/Cprt',
-'cypriotsyllabary' => '#/376',
+'cypriotsyllabary' => '#/392',
+'cyprominoan' => '#/669',
'cyrillic' => 'Scx/Cyrl',
-'cyrillicexta' => '#/328',
-'cyrillicextb' => '#/329',
-'cyrillicextc' => '#/330',
-'cyrillicextendeda' => '#/328',
-'cyrillicextendedb' => '#/329',
-'cyrillicextendedc' => '#/330',
-'cyrillicsup' => '#/304',
-'cyrillicsupplement' => '#/304',
-'cyrillicsupplementary' => '#/304',
+'cyrillicexta' => '#/340',
+'cyrillicextb' => '#/341',
+'cyrillicextc' => '#/342',
+'cyrillicextd' => '#/343',
+'cyrillicextendeda' => '#/340',
+'cyrillicextendedb' => '#/341',
+'cyrillicextendedc' => '#/342',
+'cyrillicextendedd' => '#/343',
+'cyrillicsup' => '#/316',
+'cyrillicsupplement' => '#/316',
+'cyrillicsupplementary' => '#/316',
'cyrl' => 'Scx/Cyrl',
'dash' => 'Dash/Y',
'dash=f' => '!Dash/Y',
@@ -3972,11 +4091,13 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'dep=y' => 'Dep/Y',
'dep=yes' => 'Dep/Y',
'deprecated' => 'Dep/Y',
-'deseret' => '#/188',
+'deseret' => '#/190',
'deva' => 'Scx/Deva',
'devanagari' => 'Scx/Deva',
-'devanagariext' => '#/345',
-'devanagariextended' => '#/345',
+'devanagariext' => '#/359',
+'devanagariexta' => '#/371',
+'devanagariextended' => '#/359',
+'devanagariextendeda' => '#/371',
'di' => 'DI/Y',
'di=f' => '!DI/Y',
'di=false' => '!DI/Y',
@@ -3996,19 +4117,19 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'dia=y' => 'Dia/Y',
'dia=yes' => 'Dia/Y',
'diacritic' => 'Dia/Y',
-'diacriticals' => '#/331',
-'diacriticalsext' => '#/364',
-'diacriticalsforsymbols' => '#/411',
-'diacriticalssup' => '#/365',
+'diacriticals' => '#/344',
+'diacriticalsext' => '#/380',
+'diacriticalsforsymbols' => '#/428',
+'diacriticalssup' => '#/381',
'diak' => 'Scx/Diak',
'digit' => 'Gc/Nd',
-'dingbats' => '#/229',
+'dingbats' => '#/231',
'divesakuru' => 'Scx/Diak',
-'dogr' => '#/650',
-'dogra' => '#/650',
+'dogr' => '#/670',
+'dogra' => '#/670',
'domino' => '#/156',
'dominotiles' => '#/156',
-'dsrt' => '#/188',
+'dsrt' => '#/190',
'dt=can' => 'NFDQC/N',
'dt=canonical' => 'NFDQC/N',
'dt=circle' => 'Dt/Enc',
@@ -4018,8 +4139,8 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'dt=fin' => 'Dt/Fin',
'dt=final' => 'Dt/Fin',
'dt=font' => 'Dt/Font',
-'dt=fra' => '#/419',
-'dt=fraction' => '#/419',
+'dt=fra' => '#/436',
+'dt=fraction' => '#/436',
'dt=init' => 'Dt/Init',
'dt=initial' => 'Dt/Init',
'dt=iso' => 'Dt/Iso',
@@ -4033,8 +4154,8 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'dt=noncanon' => 'Dt/NonCanon',
'dt=noncanonical' => 'Dt/NonCanon',
'dt=none' => 'NFKDQC/Y',
-'dt=small' => '#/420',
-'dt=sml' => '#/420',
+'dt=small' => '#/437',
+'dt=sml' => '#/437',
'dt=sqr' => 'Dt/Sqr',
'dt=square' => 'Dt/Sqr',
'dt=sub' => 'Dt/Sub',
@@ -4042,13 +4163,13 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'dt=super' => 'Dt/Sup',
'dt=vert' => 'Dt/Vert',
'dt=vertical' => 'Dt/Vert',
-'dt=wide' => '#/421',
+'dt=wide' => '#/438',
'dupl' => 'Scx/Dupl',
'duployan' => 'Scx/Dupl',
'ea=a' => 'Ea/A',
'ea=ambiguous' => 'Ea/A',
-'ea=f' => '#/421',
-'ea=fullwidth' => '#/421',
+'ea=f' => '#/438',
+'ea=fullwidth' => '#/438',
'ea=h' => 'Ea/H',
'ea=halfwidth' => 'Ea/H',
'ea=n' => 'Ea/N',
@@ -4057,7 +4178,7 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'ea=neutral' => 'Ea/N',
'ea=w' => 'Ea/W',
'ea=wide' => 'Ea/W',
-'earlydynasticcuneiform' => '#/412',
+'earlydynasticcuneiform' => '#/429',
'ebase' => 'EBase/Y',
'ebase=f' => '!EBase/Y',
'ebase=false' => '!EBase/Y',
@@ -4076,13 +4197,13 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'ecomp=true' => 'EComp/Y',
'ecomp=y' => 'EComp/Y',
'ecomp=yes' => 'EComp/Y',
-'egyp' => '#/651',
-'egyptianhieroglyphformatcontrols' => '#/418',
-'egyptianhieroglyphs' => '#/651',
-'elba' => '#/652',
-'elbasan' => '#/652',
-'elym' => '#/653',
-'elymaic' => '#/653',
+'egyp' => '#/671',
+'egyptianhieroglyphformatcontrols' => '#/435',
+'egyptianhieroglyphs' => '#/671',
+'elba' => '#/672',
+'elbasan' => '#/672',
+'elym' => '#/673',
+'elymaic' => '#/673',
'emod' => '#/61',
'emod=f' => '#/!61',
'emod=false' => '#/!61',
@@ -4105,15 +4226,15 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'emojimodifier' => '#/61',
'emojimodifierbase' => 'EBase/Y',
'emojipresentation' => 'EPres/Y',
-'emoticons' => '#/256',
-'enclosedalphanum' => '#/377',
-'enclosedalphanumerics' => '#/377',
-'enclosedalphanumericsupplement' => '#/401',
-'enclosedalphanumsup' => '#/401',
-'enclosedcjk' => '#/305',
-'enclosedcjklettersandmonths' => '#/305',
-'enclosedideographicsup' => '#/413',
-'enclosedideographicsupplement' => '#/413',
+'emoticons' => '#/261',
+'enclosedalphanum' => '#/393',
+'enclosedalphanumerics' => '#/393',
+'enclosedalphanumericsupplement' => '#/418',
+'enclosedalphanumsup' => '#/418',
+'enclosedcjk' => '#/317',
+'enclosedcjklettersandmonths' => '#/317',
+'enclosedideographicsup' => '#/430',
+'enclosedideographicsupplement' => '#/430',
'enclosingmark' => 'Gc/Me',
'epres' => 'EPres/Y',
'epres=f' => '!EPres/Y',
@@ -4126,12 +4247,14 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'epres=yes' => 'EPres/Y',
'ethi' => 'Scx/Ethi',
'ethiopic' => 'Scx/Ethi',
-'ethiopicext' => '#/306',
-'ethiopicexta' => '#/332',
-'ethiopicextended' => '#/306',
-'ethiopicextendeda' => '#/332',
-'ethiopicsup' => '#/307',
-'ethiopicsupplement' => '#/307',
+'ethiopicext' => '#/318',
+'ethiopicexta' => '#/345',
+'ethiopicextb' => '#/346',
+'ethiopicextended' => '#/318',
+'ethiopicextendeda' => '#/345',
+'ethiopicextendedb' => '#/346',
+'ethiopicsup' => '#/319',
+'ethiopicsupplement' => '#/319',
'ext' => 'Ext/Y',
'ext=f' => '!Ext/Y',
'ext=false' => '!Ext/Y',
@@ -4157,15 +4280,15 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'fullcompositionexclusion' => 'CompEx/Y',
'gc=c' => 'Gc/C',
'gc=casedletter' => 'Gc/LC',
-'gc=cc' => '#/422',
+'gc=cc' => '#/439',
'gc=cf' => 'Gc/Cf',
'gc=closepunctuation' => 'Gc/Pe',
'gc=cn' => 'Gc/Cn',
-'gc=cntrl' => '#/422',
-'gc=co' => '#/423',
+'gc=cntrl' => '#/439',
+'gc=co' => '#/440',
'gc=combiningmark' => 'Gc/M',
'gc=connectorpunctuation' => 'Gc/Pc',
-'gc=control' => '#/422',
+'gc=control' => '#/439',
'gc=cs' => '#/14',
'gc=currencysymbol' => 'Gc/Sc',
'gc=dashpunctuation' => 'Gc/Pd',
@@ -4181,7 +4304,7 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'gc=lc' => 'Gc/LC',
'gc=letter' => 'Gc/L',
'gc=letternumber' => 'Gc/Nl',
-'gc=lineseparator' => '#/424',
+'gc=lineseparator' => '#/441',
'gc=ll' => 'Gc/Ll',
'gc=lm' => 'Gc/Lm',
'gc=lo' => 'Gc/Lo',
@@ -4209,14 +4332,14 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'gc=otherpunctuation' => 'Gc/Po',
'gc=othersymbol' => 'Gc/So',
'gc=p' => 'Gc/P',
-'gc=paragraphseparator' => '#/425',
+'gc=paragraphseparator' => '#/442',
'gc=pc' => 'Gc/Pc',
'gc=pd' => 'Gc/Pd',
'gc=pe' => 'Gc/Pe',
'gc=pf' => 'Gc/Pf',
'gc=pi' => 'Gc/Pi',
'gc=po' => 'Gc/Po',
-'gc=privateuse' => '#/423',
+'gc=privateuse' => '#/440',
'gc=ps' => 'Gc/Ps',
'gc=punct' => 'Gc/P',
'gc=punctuation' => 'Gc/P',
@@ -4234,8 +4357,8 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'gc=unassigned' => 'Gc/Cn',
'gc=uppercaseletter' => 'Gc/Lu',
'gc=z' => 'Gc/Z',
-'gc=zl' => '#/424',
-'gc=zp' => '#/425',
+'gc=zl' => '#/441',
+'gc=zp' => '#/442',
'gc=zs' => 'Gc/Zs',
'gcb=cn' => 'GCB/CN',
'gcb=control' => 'GCB/CN',
@@ -4265,24 +4388,24 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'gcb=v' => '#/65',
'gcb=xx' => 'GCB/XX',
'gcb=zwj' => '#/69',
-'generalpunctuation' => '#/320',
-'geometricshapes' => '#/366',
-'geometricshapesext' => '#/394',
-'geometricshapesextended' => '#/394',
+'generalpunctuation' => '#/332',
+'geometricshapes' => '#/382',
+'geometricshapesext' => '#/411',
+'geometricshapesextended' => '#/411',
'geor' => 'Scx/Geor',
'georgian' => 'Scx/Geor',
-'georgianext' => '#/308',
-'georgianextended' => '#/308',
-'georgiansup' => '#/309',
-'georgiansupplement' => '#/309',
+'georgianext' => '#/320',
+'georgianextended' => '#/320',
+'georgiansup' => '#/321',
+'georgiansupplement' => '#/321',
'glag' => 'Scx/Glag',
'glagolitic' => 'Scx/Glag',
-'glagoliticsup' => '#/346',
-'glagoliticsupplement' => '#/346',
+'glagoliticsup' => '#/360',
+'glagoliticsupplement' => '#/360',
'gong' => 'Scx/Gong',
'gonm' => 'Scx/Gonm',
-'goth' => '#/654',
-'gothic' => '#/654',
+'goth' => '#/674',
+'gothic' => '#/674',
'gran' => 'Scx/Gran',
'grantha' => 'Scx/Gran',
'graph' => 'Perl/Graph',
@@ -4299,8 +4422,8 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'grbase=yes' => 'GrBase/Y',
'greek' => 'Scx/Grek',
'greekandcoptic' => '#/137',
-'greekext' => '#/233',
-'greekextended' => '#/233',
+'greekext' => '#/235',
+'greekextended' => '#/235',
'grek' => 'Scx/Grek',
'grext' => 'GrExt/Y',
'grext=f' => '!GrExt/Y',
@@ -4316,23 +4439,23 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'gunjalagondi' => 'Scx/Gong',
'gurmukhi' => 'Scx/Guru',
'guru' => 'Scx/Guru',
-'halfandfullforms' => '#/378',
-'halfmarks' => '#/257',
-'halfwidthandfullwidthforms' => '#/378',
+'halfandfullforms' => '#/394',
+'halfmarks' => '#/262',
+'halfwidthandfullwidthforms' => '#/394',
'han' => 'Scx/Han',
'hang' => 'Scx/Hang',
'hangul' => 'Scx/Hang',
-'hangulcompatibilityjamo' => '#/284',
-'hanguljamo' => '#/122',
-'hanguljamoextendeda' => '#/237',
-'hanguljamoextendedb' => '#/238',
+'hangulcompatibilityjamo' => '#/294',
+'hanguljamo' => '#/120',
+'hanguljamoextendeda' => '#/239',
+'hanguljamoextendedb' => '#/240',
'hangulsyllables' => '#/158',
'hani' => 'Scx/Han',
'hanifirohingya' => 'Scx/Rohg',
-'hano' => '#/655',
-'hanunoo' => '#/655',
-'hatr' => '#/656',
-'hatran' => '#/656',
+'hano' => '#/675',
+'hanunoo' => '#/675',
+'hatr' => '#/676',
+'hatran' => '#/676',
'hebr' => 'Scx/Hebr',
'hebrew' => 'Scx/Hebr',
'hex' => 'Hex/Y',
@@ -4345,12 +4468,12 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'hex=y' => 'Hex/Y',
'hex=yes' => 'Hex/Y',
'hexdigit' => 'Hex/Y',
-'highprivateusesurrogates' => '#/379',
-'highpusurrogates' => '#/379',
-'highsurrogates' => '#/357',
+'highprivateusesurrogates' => '#/395',
+'highpusurrogates' => '#/395',
+'highsurrogates' => '#/373',
'hira' => 'Scx/Hira',
'hiragana' => 'Scx/Hira',
-'hluw' => '#/657',
+'hluw' => '#/677',
'hmng' => 'Scx/Hmng',
'hmnp' => 'Scx/Hmnp',
'horizspace' => 'Perl/Blank',
@@ -4366,7 +4489,7 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'hst=trailingjamo' => '#/64',
'hst=v' => '#/65',
'hst=voweljamo' => '#/65',
-'hung' => '#/658',
+'hung' => '#/678',
'hyphen' => 'Hyphen/T',
'hyphen=f' => '!Hyphen/T',
'hyphen=false' => '!Hyphen/T',
@@ -4410,9 +4533,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'ideo=y' => 'Ideo/Y',
'ideo=yes' => 'Ideo/Y',
'ideographic' => 'Ideo/Y',
-'ideographicdescriptioncharacters' => '#/113',
-'ideographicsymbols' => '#/395',
-'ideographicsymbolsandpunctuation' => '#/395',
+'ideographicdescriptioncharacters' => '#/111',
+'ideographicsymbols' => '#/412',
+'ideographicsymbolsandpunctuation' => '#/412',
'ids' => 'IDS/Y',
'ids=f' => '!IDS/Y',
'ids=false' => '!IDS/Y',
@@ -4443,13 +4566,17 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'idst=yes' => '#/72',
'idstart' => 'IDS/Y',
'idstrinaryoperator' => '#/72',
-'imperialaramaic' => '#/637',
+'imperialaramaic' => '#/656',
+'in=na' => 'Age/NA',
'in=unassigned' => 'Age/NA',
'in=v100' => 'In/10_0',
+'in=v11' => 'Age/V11',
'in=v110' => 'In/11_0',
'in=v120' => 'In/12_0',
'in=v121' => 'In/12_1',
'in=v130' => 'In/13_0',
+'in=v140' => 'In/14_0',
+'in=v150' => 'In/15_0',
'in=v20' => 'In/2_0',
'in=v21' => 'In/2_1',
'in=v30' => 'In/3_0',
@@ -4468,338 +4595,361 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'in=v80' => 'In/8_0',
'in=v90' => 'In/9_0',
'inadlam' => '#/132',
-'inaegeannumbers' => '#/343',
-'inahom' => '#/120',
-'inalchemical' => '#/277',
-'inalchemicalsymbols' => '#/277',
-'inalphabeticpf' => '#/326',
-'inalphabeticpresentationforms' => '#/326',
-'inanatolianhieroglyphs' => '#/405',
-'inancientgreekmusic' => '#/387',
-'inancientgreekmusicalnotation' => '#/387',
-'inancientgreeknumbers' => '#/398',
-'inancientsymbols' => '#/352',
+'inaegeannumbers' => '#/357',
+'inahom' => '#/118',
+'inalchemical' => '#/285',
+'inalchemicalsymbols' => '#/285',
+'inalphabeticpf' => '#/338',
+'inalphabeticpresentationforms' => '#/338',
+'inanatolianhieroglyphs' => '#/422',
+'inancientgreekmusic' => '#/404',
+'inancientgreekmusicalnotation' => '#/404',
+'inancientgreeknumbers' => '#/415',
+'inancientsymbols' => '#/367',
'inarabic' => '#/150',
-'inarabicexta' => '#/278',
-'inarabicextendeda' => '#/278',
-'inarabicmath' => '#/279',
-'inarabicmathematicalalphabeticsymbols' => '#/279',
-'inarabicpfa' => '#/250',
-'inarabicpfb' => '#/251',
-'inarabicpresentationformsa' => '#/250',
-'inarabicpresentationformsb' => '#/251',
-'inarabicsup' => '#/252',
-'inarabicsupplement' => '#/252',
-'inarmenian' => '#/221',
+'inarabicexta' => '#/286',
+'inarabicextb' => '#/287',
+'inarabicextc' => '#/288',
+'inarabicextendeda' => '#/286',
+'inarabicextendedb' => '#/287',
+'inarabicextendedc' => '#/288',
+'inarabicmath' => '#/289',
+'inarabicmathematicalalphabeticsymbols' => '#/289',
+'inarabicpfa' => '#/255',
+'inarabicpfb' => '#/256',
+'inarabicpresentationformsa' => '#/255',
+'inarabicpresentationformsb' => '#/256',
+'inarabicsup' => '#/257',
+'inarabicsupplement' => '#/257',
+'inarmenian' => '#/223',
'inarrows' => '#/151',
'inascii' => '#/131',
-'inavestan' => '#/178',
-'inbalinese' => '#/222',
+'inavestan' => '#/179',
+'inbalinese' => '#/224',
'inbamum' => '#/133',
-'inbamumsup' => '#/223',
-'inbamumsupplement' => '#/223',
+'inbamumsup' => '#/225',
+'inbamumsupplement' => '#/225',
'inbasiclatin' => '#/131',
-'inbassavah' => '#/224',
+'inbassavah' => '#/226',
'inbatak' => '#/134',
-'inbengali' => '#/179',
-'inbhaiksuki' => '#/253',
-'inblockelements' => '#/344',
-'inbopomofo' => '#/225',
-'inbopomofoext' => '#/301',
-'inbopomofoextended' => '#/301',
-'inboxdrawing' => '#/280',
+'inbengali' => '#/180',
+'inbhaiksuki' => '#/258',
+'inblockelements' => '#/358',
+'inbopomofo' => '#/227',
+'inbopomofoext' => '#/312',
+'inbopomofoextended' => '#/312',
+'inboxdrawing' => '#/290',
'inbrahmi' => '#/152',
-'inbraille' => '#/180',
-'inbraillepatterns' => '#/180',
-'inbuginese' => '#/226',
+'inbraille' => '#/181',
+'inbraillepatterns' => '#/181',
+'inbuginese' => '#/228',
'inbuhid' => '#/135',
-'inbyzantinemusic' => '#/353',
-'inbyzantinemusicalsymbols' => '#/353',
+'inbyzantinemusic' => '#/368',
+'inbyzantinemusicalsymbols' => '#/368',
'incanadiansyllabics' => '#/130',
'incarian' => '#/153',
-'incaucasianalbanian' => '#/388',
+'incaucasianalbanian' => '#/405',
'inchakma' => '#/154',
-'incham' => '#/121',
-'incherokee' => '#/227',
-'incherokeesup' => '#/302',
-'incherokeesupplement' => '#/302',
-'inchesssymbols' => '#/327',
-'inchorasmian' => '#/283',
-'incjk' => '#/112',
-'incjkcompat' => '#/254',
-'incjkcompatforms' => '#/354',
-'incjkcompatibility' => '#/254',
-'incjkcompatibilityforms' => '#/354',
-'incjkcompatibilityideographs' => '#/399',
-'incjkcompatibilityideographssupplement' => '#/410',
-'incjkcompatideographs' => '#/399',
-'incjkcompatideographssup' => '#/410',
-'incjkexta' => '#/181',
-'incjkextb' => '#/182',
-'incjkextc' => '#/183',
-'incjkextd' => '#/184',
-'incjkexte' => '#/185',
-'incjkextf' => '#/186',
-'incjkextg' => '#/187',
-'incjkradicalssup' => '#/355',
-'incjkradicalssupplement' => '#/355',
-'incjkstrokes' => '#/281',
-'incjksymbols' => '#/282',
-'incjksymbolsandpunctuation' => '#/282',
-'incjkunifiedideographs' => '#/112',
-'incjkunifiedideographsextensiona' => '#/181',
-'incjkunifiedideographsextensionb' => '#/182',
-'incjkunifiedideographsextensionc' => '#/183',
-'incjkunifiedideographsextensiond' => '#/184',
-'incjkunifiedideographsextensione' => '#/185',
-'incjkunifiedideographsextensionf' => '#/186',
-'incjkunifiedideographsextensiong' => '#/187',
-'incombiningdiacriticalmarks' => '#/331',
-'incombiningdiacriticalmarksextended' => '#/364',
-'incombiningdiacriticalmarksforsymbols' => '#/411',
-'incombiningdiacriticalmarkssupplement' => '#/365',
-'incombininghalfmarks' => '#/257',
-'incombiningmarksforsymbols' => '#/411',
-'incommonindicnumberforms' => '#/380',
-'incompatjamo' => '#/284',
-'incontrolpictures' => '#/362',
+'incham' => '#/119',
+'incherokee' => '#/229',
+'incherokeesup' => '#/313',
+'incherokeesupplement' => '#/313',
+'inchesssymbols' => '#/339',
+'inchorasmian' => '#/293',
+'incjk' => '#/110',
+'incjkcompat' => '#/259',
+'incjkcompatforms' => '#/369',
+'incjkcompatibility' => '#/259',
+'incjkcompatibilityforms' => '#/369',
+'incjkcompatibilityideographs' => '#/416',
+'incjkcompatibilityideographssupplement' => '#/427',
+'incjkcompatideographs' => '#/416',
+'incjkcompatideographssup' => '#/427',
+'incjkexta' => '#/182',
+'incjkextb' => '#/183',
+'incjkextc' => '#/184',
+'incjkextd' => '#/185',
+'incjkexte' => '#/186',
+'incjkextf' => '#/187',
+'incjkextg' => '#/188',
+'incjkexth' => '#/189',
+'incjkradicalssup' => '#/370',
+'incjkradicalssupplement' => '#/370',
+'incjkstrokes' => '#/291',
+'incjksymbols' => '#/292',
+'incjksymbolsandpunctuation' => '#/292',
+'incjkunifiedideographs' => '#/110',
+'incjkunifiedideographsextensiona' => '#/182',
+'incjkunifiedideographsextensionb' => '#/183',
+'incjkunifiedideographsextensionc' => '#/184',
+'incjkunifiedideographsextensiond' => '#/185',
+'incjkunifiedideographsextensione' => '#/186',
+'incjkunifiedideographsextensionf' => '#/187',
+'incjkunifiedideographsextensiong' => '#/188',
+'incjkunifiedideographsextensionh' => '#/189',
+'incombiningdiacriticalmarks' => '#/344',
+'incombiningdiacriticalmarksextended' => '#/380',
+'incombiningdiacriticalmarksforsymbols' => '#/428',
+'incombiningdiacriticalmarkssupplement' => '#/381',
+'incombininghalfmarks' => '#/262',
+'incombiningmarksforsymbols' => '#/428',
+'incommonindicnumberforms' => '#/396',
+'incompatjamo' => '#/294',
+'incontrolpictures' => '#/378',
'incoptic' => '#/155',
-'incopticepactnumbers' => '#/393',
-'incountingrod' => '#/303',
-'incountingrodnumerals' => '#/303',
-'incuneiform' => '#/255',
-'incuneiformnumbers' => '#/375',
-'incuneiformnumbersandpunctuation' => '#/375',
-'incurrencysymbols' => '#/363',
-'incypriotsyllabary' => '#/376',
-'incyrillic' => '#/228',
-'incyrillicexta' => '#/328',
-'incyrillicextb' => '#/329',
-'incyrillicextc' => '#/330',
-'incyrillicextendeda' => '#/328',
-'incyrillicextendedb' => '#/329',
-'incyrillicextendedc' => '#/330',
-'incyrillicsup' => '#/304',
-'incyrillicsupplement' => '#/304',
-'incyrillicsupplementary' => '#/304',
-'indeseret' => '#/188',
-'indevanagari' => '#/285',
-'indevanagariext' => '#/345',
-'indevanagariextended' => '#/345',
-'indiacriticals' => '#/331',
-'indiacriticalsext' => '#/364',
-'indiacriticalsforsymbols' => '#/411',
-'indiacriticalssup' => '#/365',
-'indicnumberforms' => '#/380',
-'indicsiyaqnumbers' => '#/389',
-'indingbats' => '#/229',
-'indivesakuru' => '#/286',
+'incopticepactnumbers' => '#/410',
+'incountingrod' => '#/314',
+'incountingrodnumerals' => '#/314',
+'incuneiform' => '#/260',
+'incuneiformnumbers' => '#/391',
+'incuneiformnumbersandpunctuation' => '#/391',
+'incurrencysymbols' => '#/379',
+'incypriotsyllabary' => '#/392',
+'incyprominoan' => '#/315',
+'incyrillic' => '#/230',
+'incyrillicexta' => '#/340',
+'incyrillicextb' => '#/341',
+'incyrillicextc' => '#/342',
+'incyrillicextd' => '#/343',
+'incyrillicextendeda' => '#/340',
+'incyrillicextendedb' => '#/341',
+'incyrillicextendedc' => '#/342',
+'incyrillicextendedd' => '#/343',
+'incyrillicsup' => '#/316',
+'incyrillicsupplement' => '#/316',
+'incyrillicsupplementary' => '#/316',
+'indeseret' => '#/190',
+'indevanagari' => '#/295',
+'indevanagariext' => '#/359',
+'indevanagariexta' => '#/371',
+'indevanagariextended' => '#/359',
+'indevanagariextendeda' => '#/371',
+'indiacriticals' => '#/344',
+'indiacriticalsext' => '#/380',
+'indiacriticalsforsymbols' => '#/428',
+'indiacriticalssup' => '#/381',
+'indicnumberforms' => '#/396',
+'indicsiyaqnumbers' => '#/406',
+'indingbats' => '#/231',
+'indivesakuru' => '#/296',
'indogra' => '#/136',
'indomino' => '#/156',
'indominotiles' => '#/156',
-'induployan' => '#/230',
-'inearlydynasticcuneiform' => '#/412',
-'inegyptianhieroglyphformatcontrols' => '#/418',
-'inegyptianhieroglyphs' => '#/400',
-'inelbasan' => '#/189',
-'inelymaic' => '#/190',
-'inemoticons' => '#/256',
-'inenclosedalphanum' => '#/377',
-'inenclosedalphanumerics' => '#/377',
-'inenclosedalphanumericsupplement' => '#/401',
-'inenclosedalphanumsup' => '#/401',
-'inenclosedcjk' => '#/305',
-'inenclosedcjklettersandmonths' => '#/305',
-'inenclosedideographicsup' => '#/413',
-'inenclosedideographicsupplement' => '#/413',
-'inethiopic' => '#/231',
-'inethiopicext' => '#/306',
-'inethiopicexta' => '#/332',
-'inethiopicextended' => '#/306',
-'inethiopicextendeda' => '#/332',
-'inethiopicsup' => '#/307',
-'inethiopicsupplement' => '#/307',
-'ingeneralpunctuation' => '#/320',
-'ingeometricshapes' => '#/366',
-'ingeometricshapesext' => '#/394',
-'ingeometricshapesextended' => '#/394',
-'ingeorgian' => '#/232',
-'ingeorgianext' => '#/308',
-'ingeorgianextended' => '#/308',
-'ingeorgiansup' => '#/309',
-'ingeorgiansupplement' => '#/309',
-'inglagolitic' => '#/287',
-'inglagoliticsup' => '#/346',
-'inglagoliticsupplement' => '#/346',
+'induployan' => '#/232',
+'inearlydynasticcuneiform' => '#/429',
+'inegyptianhieroglyphformatcontrols' => '#/435',
+'inegyptianhieroglyphs' => '#/417',
+'inelbasan' => '#/191',
+'inelymaic' => '#/192',
+'inemoticons' => '#/261',
+'inenclosedalphanum' => '#/393',
+'inenclosedalphanumerics' => '#/393',
+'inenclosedalphanumericsupplement' => '#/418',
+'inenclosedalphanumsup' => '#/418',
+'inenclosedcjk' => '#/317',
+'inenclosedcjklettersandmonths' => '#/317',
+'inenclosedideographicsup' => '#/430',
+'inenclosedideographicsupplement' => '#/430',
+'inethiopic' => '#/233',
+'inethiopicext' => '#/318',
+'inethiopicexta' => '#/345',
+'inethiopicextb' => '#/346',
+'inethiopicextended' => '#/318',
+'inethiopicextendeda' => '#/345',
+'inethiopicextendedb' => '#/346',
+'inethiopicsup' => '#/319',
+'inethiopicsupplement' => '#/319',
+'ingeneralpunctuation' => '#/332',
+'ingeometricshapes' => '#/382',
+'ingeometricshapesext' => '#/411',
+'ingeometricshapesextended' => '#/411',
+'ingeorgian' => '#/234',
+'ingeorgianext' => '#/320',
+'ingeorgianextended' => '#/320',
+'ingeorgiansup' => '#/321',
+'ingeorgiansupplement' => '#/321',
+'inglagolitic' => '#/297',
+'inglagoliticsup' => '#/360',
+'inglagoliticsupplement' => '#/360',
'ingothic' => '#/157',
-'ingrantha' => '#/191',
+'ingrantha' => '#/193',
'ingreek' => '#/137',
'ingreekandcoptic' => '#/137',
-'ingreekext' => '#/233',
-'ingreekextended' => '#/233',
-'ingujarati' => '#/234',
-'ingunjalagondi' => '#/333',
-'ingurmukhi' => '#/235',
-'inhalfandfullforms' => '#/378',
-'inhalfmarks' => '#/257',
-'inhalfwidthandfullwidthforms' => '#/378',
+'ingreekext' => '#/235',
+'ingreekextended' => '#/235',
+'ingujarati' => '#/236',
+'ingunjalagondi' => '#/347',
+'ingurmukhi' => '#/237',
+'inhalfandfullforms' => '#/394',
+'inhalfmarks' => '#/262',
+'inhalfwidthandfullwidthforms' => '#/394',
'inhangul' => '#/158',
-'inhangulcompatibilityjamo' => '#/284',
-'inhanguljamo' => '#/122',
-'inhanguljamoextendeda' => '#/237',
-'inhanguljamoextendedb' => '#/238',
+'inhangulcompatibilityjamo' => '#/294',
+'inhanguljamo' => '#/120',
+'inhanguljamoextendeda' => '#/239',
+'inhanguljamoextendedb' => '#/240',
'inhangulsyllables' => '#/158',
-'inhanifirohingya' => '#/356',
-'inhanunoo' => '#/192',
+'inhanifirohingya' => '#/372',
+'inhanunoo' => '#/194',
'inhatran' => '#/159',
'inhebrew' => '#/160',
'inherited' => 'Scx/Zinh',
-'inhighprivateusesurrogates' => '#/379',
-'inhighpusurrogates' => '#/379',
-'inhighsurrogates' => '#/357',
-'inhiragana' => '#/236',
-'inidc' => '#/113',
-'inideographicdescriptioncharacters' => '#/113',
-'inideographicsymbols' => '#/395',
-'inideographicsymbolsandpunctuation' => '#/395',
-'inimperialaramaic' => '#/367',
-'inindicnumberforms' => '#/380',
-'inindicsiyaqnumbers' => '#/389',
-'ininscriptionalpahlavi' => '#/406',
-'ininscriptionalparthian' => '#/408',
+'inhighprivateusesurrogates' => '#/395',
+'inhighpusurrogates' => '#/395',
+'inhighsurrogates' => '#/373',
+'inhiragana' => '#/238',
+'inidc' => '#/111',
+'inideographicdescriptioncharacters' => '#/111',
+'inideographicsymbols' => '#/412',
+'inideographicsymbolsandpunctuation' => '#/412',
+'inimperialaramaic' => '#/383',
+'inindicnumberforms' => '#/396',
+'inindicsiyaqnumbers' => '#/406',
+'ininscriptionalpahlavi' => '#/423',
+'ininscriptionalparthian' => '#/425',
'inipaext' => '#/161',
'inipaextensions' => '#/161',
'initialpunctuation' => 'Gc/Pi',
-'injamo' => '#/122',
-'injamoexta' => '#/237',
-'injamoextb' => '#/238',
-'injavanese' => '#/239',
+'injamo' => '#/120',
+'injamoexta' => '#/239',
+'injamoextb' => '#/240',
+'injavanese' => '#/241',
'inkaithi' => '#/162',
-'inkanaexta' => '#/240',
-'inkanaextendeda' => '#/240',
-'inkanasup' => '#/193',
-'inkanasupplement' => '#/193',
+'inkaktoviknumerals' => '#/397',
+'inkanaexta' => '#/242',
+'inkanaextb' => '#/243',
+'inkanaextendeda' => '#/242',
+'inkanaextendedb' => '#/243',
+'inkanasup' => '#/195',
+'inkanasupplement' => '#/195',
'inkanbun' => '#/163',
'inkangxi' => '#/164',
'inkangxiradicals' => '#/164',
-'inkannada' => '#/194',
-'inkatakana' => '#/241',
-'inkatakanaext' => '#/310',
-'inkatakanaphoneticextensions' => '#/310',
-'inkayahli' => '#/195',
-'inkharoshthi' => '#/288',
-'inkhitansmallscript' => '#/390',
+'inkannada' => '#/196',
+'inkatakana' => '#/244',
+'inkatakanaext' => '#/322',
+'inkatakanaphoneticextensions' => '#/322',
+'inkawi' => '#/121',
+'inkayahli' => '#/197',
+'inkharoshthi' => '#/298',
+'inkhitansmallscript' => '#/407',
'inkhmer' => '#/138',
-'inkhmersymbols' => '#/334',
+'inkhmersymbols' => '#/348',
'inkhojki' => '#/165',
-'inkhudawadi' => '#/258',
-'inlao' => '#/114',
+'inkhudawadi' => '#/263',
+'inlao' => '#/112',
'inlatin1' => '#/166',
'inlatin1sup' => '#/166',
'inlatin1supplement' => '#/166',
-'inlatinexta' => '#/259',
-'inlatinextadditional' => '#/396',
-'inlatinextb' => '#/260',
-'inlatinextc' => '#/261',
-'inlatinextd' => '#/262',
-'inlatinexte' => '#/263',
-'inlatinextendeda' => '#/259',
-'inlatinextendedadditional' => '#/396',
-'inlatinextendedb' => '#/260',
-'inlatinextendedc' => '#/261',
-'inlatinextendedd' => '#/262',
-'inlatinextendede' => '#/263',
+'inlatinexta' => '#/264',
+'inlatinextadditional' => '#/413',
+'inlatinextb' => '#/265',
+'inlatinextc' => '#/266',
+'inlatinextd' => '#/267',
+'inlatinexte' => '#/268',
+'inlatinextendeda' => '#/264',
+'inlatinextendedadditional' => '#/413',
+'inlatinextendedb' => '#/265',
+'inlatinextendedc' => '#/266',
+'inlatinextendedd' => '#/267',
+'inlatinextendede' => '#/268',
+'inlatinextendedf' => '#/269',
+'inlatinextendedg' => '#/270',
+'inlatinextf' => '#/269',
+'inlatinextg' => '#/270',
'inlepcha' => '#/167',
-'inletterlikesymbols' => '#/391',
+'inletterlikesymbols' => '#/408',
'inlimbu' => '#/139',
-'inlineara' => '#/196',
-'inlinearbideograms' => '#/381',
-'inlinearbsyllabary' => '#/382',
-'inlisu' => '#/123',
-'inlisusup' => '#/197',
-'inlisusupplement' => '#/197',
-'inlowsurrogates' => '#/347',
+'inlineara' => '#/198',
+'inlinearbideograms' => '#/398',
+'inlinearbsyllabary' => '#/399',
+'inlisu' => '#/122',
+'inlisusup' => '#/199',
+'inlisusupplement' => '#/199',
+'inlowsurrogates' => '#/361',
'inlycian' => '#/168',
'inlydian' => '#/169',
-'inmahajani' => '#/242',
-'inmahjong' => '#/198',
-'inmahjongtiles' => '#/198',
-'inmakasar' => '#/199',
-'inmalayalam' => '#/264',
-'inmandaic' => '#/200',
-'inmanichaean' => '#/289',
-'inmarchen' => '#/201',
-'inmasaramgondi' => '#/335',
-'inmathalphanum' => '#/336',
-'inmathematicalalphanumericsymbols' => '#/336',
-'inmathematicaloperators' => '#/348',
-'inmathoperators' => '#/348',
-'inmayannumerals' => '#/349',
-'inmedefaidrin' => '#/311',
-'inmeeteimayek' => '#/312',
-'inmeeteimayekext' => '#/358',
-'inmeeteimayekextensions' => '#/358',
-'inmendekikakui' => '#/337',
-'inmeroiticcursive' => '#/368',
-'inmeroitichieroglyphs' => '#/402',
-'inmiao' => '#/124',
-'inmiscarrows' => '#/290',
-'inmiscellaneousmathematicalsymbolsa' => '#/383',
-'inmiscellaneousmathematicalsymbolsb' => '#/384',
-'inmiscellaneoussymbols' => '#/313',
-'inmiscellaneoussymbolsandarrows' => '#/290',
-'inmiscellaneoussymbolsandpictographs' => '#/369',
-'inmiscellaneoustechnical' => '#/350',
-'inmiscmathsymbolsa' => '#/383',
-'inmiscmathsymbolsb' => '#/384',
-'inmiscpictographs' => '#/369',
-'inmiscsymbols' => '#/313',
-'inmisctechnical' => '#/350',
-'inmodi' => '#/125',
-'inmodifierletters' => '#/370',
-'inmodifiertoneletters' => '#/403',
-'inmongolian' => '#/265',
-'inmongoliansup' => '#/338',
-'inmongoliansupplement' => '#/338',
-'inmro' => '#/115',
-'inmultani' => '#/202',
+'inmahajani' => '#/245',
+'inmahjong' => '#/200',
+'inmahjongtiles' => '#/200',
+'inmakasar' => '#/201',
+'inmalayalam' => '#/271',
+'inmandaic' => '#/202',
+'inmanichaean' => '#/299',
+'inmarchen' => '#/203',
+'inmasaramgondi' => '#/349',
+'inmathalphanum' => '#/350',
+'inmathematicalalphanumericsymbols' => '#/350',
+'inmathematicaloperators' => '#/362',
+'inmathoperators' => '#/362',
+'inmayannumerals' => '#/363',
+'inmedefaidrin' => '#/323',
+'inmeeteimayek' => '#/324',
+'inmeeteimayekext' => '#/374',
+'inmeeteimayekextensions' => '#/374',
+'inmendekikakui' => '#/351',
+'inmeroiticcursive' => '#/384',
+'inmeroitichieroglyphs' => '#/419',
+'inmiao' => '#/123',
+'inmiscarrows' => '#/300',
+'inmiscellaneousmathematicalsymbolsa' => '#/400',
+'inmiscellaneousmathematicalsymbolsb' => '#/401',
+'inmiscellaneoussymbols' => '#/325',
+'inmiscellaneoussymbolsandarrows' => '#/300',
+'inmiscellaneoussymbolsandpictographs' => '#/385',
+'inmiscellaneoustechnical' => '#/364',
+'inmiscmathsymbolsa' => '#/400',
+'inmiscmathsymbolsb' => '#/401',
+'inmiscpictographs' => '#/385',
+'inmiscsymbols' => '#/325',
+'inmisctechnical' => '#/364',
+'inmodi' => '#/124',
+'inmodifierletters' => '#/386',
+'inmodifiertoneletters' => '#/420',
+'inmongolian' => '#/272',
+'inmongoliansup' => '#/352',
+'inmongoliansupplement' => '#/352',
+'inmro' => '#/113',
+'inmultani' => '#/204',
'inmusic' => '#/140',
'inmusicalsymbols' => '#/140',
-'inmyanmar' => '#/203',
-'inmyanmarexta' => '#/314',
-'inmyanmarextb' => '#/315',
-'inmyanmarextendeda' => '#/314',
-'inmyanmarextendedb' => '#/315',
-'innabataean' => '#/266',
-'innandinagari' => '#/316',
+'inmyanmar' => '#/205',
+'inmyanmarexta' => '#/326',
+'inmyanmarextb' => '#/327',
+'inmyanmarextendeda' => '#/326',
+'inmyanmarextendedb' => '#/327',
+'innabataean' => '#/273',
+'innagmundari' => '#/301',
+'innandinagari' => '#/328',
'innb' => 'Blk/NB',
-'innewa' => '#/126',
-'innewtailue' => '#/267',
-'innko' => '#/116',
+'innewa' => '#/125',
+'innewtailue' => '#/274',
+'innko' => '#/114',
'innoblock' => 'Blk/NB',
-'innumberforms' => '#/317',
+'innumberforms' => '#/329',
'innushu' => '#/141',
-'innyiakengpuachuehmong' => '#/407',
-'inocr' => '#/117',
+'innyiakengpuachuehmong' => '#/424',
+'inocr' => '#/115',
'inogham' => '#/142',
-'inolchiki' => '#/204',
-'inoldhungarian' => '#/339',
-'inolditalic' => '#/268',
-'inoldnortharabian' => '#/371',
-'inoldpermic' => '#/269',
-'inoldpersian' => '#/291',
-'inoldsogdian' => '#/292',
-'inoldsoutharabian' => '#/372',
-'inoldturkic' => '#/270',
-'inopticalcharacterrecognition' => '#/117',
+'inolchiki' => '#/206',
+'inoldhungarian' => '#/353',
+'inolditalic' => '#/275',
+'inoldnortharabian' => '#/387',
+'inoldpermic' => '#/276',
+'inoldpersian' => '#/302',
+'inoldsogdian' => '#/303',
+'inoldsoutharabian' => '#/388',
+'inoldturkic' => '#/277',
+'inolduyghur' => '#/278',
+'inopticalcharacterrecognition' => '#/115',
'inoriya' => '#/143',
-'inornamentaldingbats' => '#/397',
+'inornamentaldingbats' => '#/414',
'inosage' => '#/144',
-'inosmanya' => '#/205',
-'inottomansiyaqnumbers' => '#/404',
-'inpahawhhmong' => '#/318',
-'inpalmyrene' => '#/271',
-'inpaucinhau' => '#/272',
+'inosmanya' => '#/207',
+'inottomansiyaqnumbers' => '#/421',
+'inpahawhhmong' => '#/330',
+'inpalmyrene' => '#/279',
+'inpaucinhau' => '#/280',
'inpc=bottom' => 'InPC/Bottom',
'inpc=bottomandleft' => '#/74',
'inpc=bottomandright' => 'InPC/BottomAn',
@@ -4816,54 +4966,54 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'inpc=topandleftandright' => 'InPC/TopAndL2',
'inpc=topandright' => 'InPC/TopAndRi',
'inpc=visualorderleft' => 'InPC/VisualOr',
-'inphagspa' => '#/206',
-'inphaistos' => '#/243',
-'inphaistosdisc' => '#/243',
-'inphoenician' => '#/293',
-'inphoneticext' => '#/319',
-'inphoneticextensions' => '#/319',
-'inphoneticextensionssupplement' => '#/359',
-'inphoneticextsup' => '#/359',
-'inplayingcards' => '#/340',
-'inprivateuse' => '#/118',
-'inprivateusearea' => '#/118',
-'inpsalterpahlavi' => '#/360',
-'inpua' => '#/118',
-'inpunctuation' => '#/320',
+'inphagspa' => '#/208',
+'inphaistos' => '#/246',
+'inphaistosdisc' => '#/246',
+'inphoenician' => '#/304',
+'inphoneticext' => '#/331',
+'inphoneticextensions' => '#/331',
+'inphoneticextensionssupplement' => '#/375',
+'inphoneticextsup' => '#/375',
+'inplayingcards' => '#/354',
+'inprivateuse' => '#/116',
+'inprivateusearea' => '#/116',
+'inpsalterpahlavi' => '#/376',
+'inpua' => '#/116',
+'inpunctuation' => '#/332',
'inrejang' => '#/170',
-'inrumi' => '#/127',
-'inruminumeralsymbols' => '#/127',
+'inrumi' => '#/126',
+'inruminumeralsymbols' => '#/126',
'inrunic' => '#/145',
-'insamaritan' => '#/273',
-'insaurashtra' => '#/294',
+'insamaritan' => '#/281',
+'insaurashtra' => '#/305',
'insc=avagraha' => 'InSC/Avagraha',
'insc=bindu' => 'InSC/Bindu',
-'insc=brahmijoiningnumber' => '#/84',
+'insc=brahmijoiningnumber' => '#/83',
'insc=cantillationmark' => 'InSC/Cantilla',
'insc=consonant' => 'InSC/Consonan',
'insc=consonantdead' => 'InSC/Consona2',
'insc=consonantfinal' => 'InSC/Consona3',
-'insc=consonantheadletter' => '#/85',
-'insc=consonantinitialpostfixed' => '#/87',
-'insc=consonantkiller' => '#/81',
+'insc=consonantheadletter' => '#/84',
+'insc=consonantinitialpostfixed' => '#/86',
+'insc=consonantkiller' => '#/80',
'insc=consonantmedial' => 'InSC/Consona4',
'insc=consonantplaceholder' => 'InSC/Consona7',
-'insc=consonantprecedingrepha' => '#/86',
+'insc=consonantprecedingrepha' => 'InSC/Consona9',
'insc=consonantprefixed' => 'InSC/Consona5',
'insc=consonantsubjoined' => 'InSC/Consona6',
-'insc=consonantsucceedingrepha' => 'InSC/Consona9',
+'insc=consonantsucceedingrepha' => '#/85',
'insc=consonantwithstacker' => 'InSC/Consona8',
-'insc=geminationmark' => '#/80',
+'insc=geminationmark' => 'InSC/Geminati',
'insc=invisiblestacker' => 'InSC/Invisibl',
'insc=joiner' => '#/69',
-'insc=modifyingletter' => '#/82',
+'insc=modifyingletter' => '#/81',
'insc=nonjoiner' => '#/77',
'insc=nukta' => 'InSC/Nukta',
'insc=number' => 'InSC/Number',
'insc=numberjoiner' => '#/79',
'insc=other' => 'InSC/Other',
'insc=purekiller' => 'InSC/PureKill',
-'insc=registershifter' => '#/83',
+'insc=registershifter' => '#/82',
'insc=syllablemodifier' => 'InSC/Syllable',
'insc=toneletter' => '#/78',
'insc=tonemark' => 'InSC/ToneMark',
@@ -4872,151 +5022,162 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'insc=vowel' => 'InSC/Vowel',
'insc=voweldependent' => 'InSC/VowelDep',
'insc=vowelindependent' => 'InSC/VowelInd',
-'inscriptionalpahlavi' => '#/687',
-'inscriptionalparthian' => '#/689',
-'insharada' => '#/207',
-'inshavian' => '#/208',
-'inshorthandformatcontrols' => '#/414',
-'insiddham' => '#/209',
-'insinhala' => '#/210',
-'insinhalaarchaicnumbers' => '#/409',
-'insmallforms' => '#/295',
-'insmallformvariants' => '#/295',
-'insmallkanaext' => '#/341',
-'insmallkanaextension' => '#/341',
-'insogdian' => '#/211',
-'insorasompeng' => '#/321',
-'insoyombo' => '#/212',
-'inspacingmodifierletters' => '#/370',
-'inspecials' => '#/244',
-'insundanese' => '#/274',
-'insundanesesup' => '#/342',
-'insundanesesupplement' => '#/342',
-'insuparrowsa' => '#/296',
-'insuparrowsb' => '#/297',
-'insuparrowsc' => '#/298',
-'insuperandsub' => '#/322',
-'insuperscriptsandsubscripts' => '#/322',
-'insupmathoperators' => '#/385',
-'insupplementalarrowsa' => '#/296',
-'insupplementalarrowsb' => '#/297',
-'insupplementalarrowsc' => '#/298',
-'insupplementalmathematicaloperators' => '#/385',
-'insupplementalpunctuation' => '#/361',
-'insupplementalsymbolsandpictographs' => '#/415',
-'insupplementaryprivateuseareaa' => '#/213',
-'insupplementaryprivateuseareab' => '#/214',
-'insuppuaa' => '#/213',
-'insuppuab' => '#/214',
-'insuppunctuation' => '#/361',
-'insupsymbolsandpictographs' => '#/415',
-'insuttonsignwriting' => '#/392',
-'insylotinagri' => '#/323',
-'insymbolsandpictographsexta' => '#/416',
-'insymbolsandpictographsextendeda' => '#/416',
-'insymbolsforlegacycomputing' => '#/417',
+'inscriptionalpahlavi' => '#/710',
+'inscriptionalparthian' => '#/712',
+'insharada' => '#/209',
+'inshavian' => '#/210',
+'inshorthandformatcontrols' => '#/431',
+'insiddham' => '#/211',
+'insinhala' => '#/212',
+'insinhalaarchaicnumbers' => '#/426',
+'insmallforms' => '#/306',
+'insmallformvariants' => '#/306',
+'insmallkanaext' => '#/355',
+'insmallkanaextension' => '#/355',
+'insogdian' => '#/213',
+'insorasompeng' => '#/333',
+'insoyombo' => '#/214',
+'inspacingmodifierletters' => '#/386',
+'inspecials' => '#/247',
+'insundanese' => '#/282',
+'insundanesesup' => '#/356',
+'insundanesesupplement' => '#/356',
+'insuparrowsa' => '#/307',
+'insuparrowsb' => '#/308',
+'insuparrowsc' => '#/309',
+'insuperandsub' => '#/334',
+'insuperscriptsandsubscripts' => '#/334',
+'insupmathoperators' => '#/402',
+'insupplementalarrowsa' => '#/307',
+'insupplementalarrowsb' => '#/308',
+'insupplementalarrowsc' => '#/309',
+'insupplementalmathematicaloperators' => '#/402',
+'insupplementalpunctuation' => '#/377',
+'insupplementalsymbolsandpictographs' => '#/432',
+'insupplementaryprivateuseareaa' => '#/215',
+'insupplementaryprivateuseareab' => '#/216',
+'insuppuaa' => '#/215',
+'insuppuab' => '#/216',
+'insuppunctuation' => '#/377',
+'insupsymbolsandpictographs' => '#/432',
+'insuttonsignwriting' => '#/409',
+'insylotinagri' => '#/335',
+'insymbolsandpictographsexta' => '#/433',
+'insymbolsandpictographsextendeda' => '#/433',
+'insymbolsforlegacycomputing' => '#/434',
'insyriac' => '#/171',
-'insyriacsup' => '#/275',
-'insyriacsupplement' => '#/275',
-'intagalog' => '#/215',
-'intagbanwa' => '#/245',
-'intags' => '#/128',
+'insyriacsup' => '#/283',
+'insyriacsupplement' => '#/283',
+'intagalog' => '#/217',
+'intagbanwa' => '#/248',
+'intags' => '#/127',
'intaile' => '#/146',
-'intaitham' => '#/216',
-'intaiviet' => '#/217',
-'intaixuanjing' => '#/324',
-'intaixuanjingsymbols' => '#/324',
+'intaitham' => '#/218',
+'intaiviet' => '#/219',
+'intaixuanjing' => '#/336',
+'intaixuanjingsymbols' => '#/336',
'intakri' => '#/147',
'intamil' => '#/148',
-'intamilsup' => '#/246',
-'intamilsupplement' => '#/246',
-'intangut' => '#/172',
-'intangutcomponents' => '#/386',
-'intangutsup' => '#/276',
-'intangutsupplement' => '#/276',
-'intelugu' => '#/173',
-'inthaana' => '#/174',
-'inthai' => '#/129',
-'intibetan' => '#/218',
-'intifinagh' => '#/247',
-'intirhuta' => '#/219',
-'intransportandmap' => '#/373',
-'intransportandmapsymbols' => '#/373',
+'intamilsup' => '#/249',
+'intamilsupplement' => '#/249',
+'intangsa' => '#/172',
+'intangut' => '#/173',
+'intangutcomponents' => '#/403',
+'intangutsup' => '#/284',
+'intangutsupplement' => '#/284',
+'intelugu' => '#/174',
+'inthaana' => '#/175',
+'inthai' => '#/128',
+'intibetan' => '#/220',
+'intifinagh' => '#/250',
+'intirhuta' => '#/221',
+'intoto' => '#/129',
+'intransportandmap' => '#/389',
+'intransportandmapsymbols' => '#/389',
'inucas' => '#/130',
-'inucasext' => '#/220',
-'inugaritic' => '#/248',
+'inucasext' => '#/222',
+'inucasexta' => '#/251',
+'inugaritic' => '#/252',
'inunifiedcanadianaboriginalsyllabics' => '#/130',
-'inunifiedcanadianaboriginalsyllabicsextended' => '#/220',
-'invai' => '#/119',
-'invariationselectors' => '#/111',
+'inunifiedcanadianaboriginalsyllabicsextended' => '#/222',
+'inunifiedcanadianaboriginalsyllabicsextendeda' => '#/251',
+'invai' => '#/117',
+'invariationselectors' => '#/109',
'invariationselectorssupplement' => '#/149',
-'invedicext' => '#/249',
-'invedicextensions' => '#/249',
-'inverticalforms' => '#/351',
-'invs' => '#/111',
+'invedicext' => '#/253',
+'invedicextensions' => '#/253',
+'inverticalforms' => '#/365',
+'invithkuqi' => '#/254',
+'invs' => '#/109',
'invssup' => '#/149',
-'inwancho' => '#/175',
-'inwarangciti' => '#/299',
-'inyezidi' => '#/176',
-'inyijing' => '#/177',
-'inyijinghexagramsymbols' => '#/177',
-'inyiradicals' => '#/300',
-'inyisyllables' => '#/325',
-'inzanabazarsquare' => '#/374',
+'inwancho' => '#/176',
+'inwarangciti' => '#/310',
+'inyezidi' => '#/177',
+'inyijing' => '#/178',
+'inyijinghexagramsymbols' => '#/178',
+'inyiradicals' => '#/311',
+'inyisyllables' => '#/337',
+'inzanabazarsquare' => '#/390',
+'inznamennymusic' => '#/366',
+'inznamennymusicalnotation' => '#/366',
'ipaext' => '#/161',
'ipaextensions' => '#/161',
'isadlam' => 'Scx/Adlm',
'isadlm' => 'Scx/Adlm',
-'isaegeannumbers' => '#/343',
-'isaghb' => '#/635',
+'isaegeannumbers' => '#/357',
+'isaghb' => '#/654',
'isahex' => '#/60',
-'isahom' => '#/636',
-'isalchemical' => '#/277',
-'isalchemicalsymbols' => '#/277',
+'isahom' => '#/655',
+'isalchemical' => '#/285',
+'isalchemicalsymbols' => '#/285',
'isall' => '#/1',
'isalnum' => 'Perl/Alnum',
'isalpha' => 'Alpha/Y',
'isalphabetic' => 'Alpha/Y',
-'isalphabeticpf' => '#/326',
-'isalphabeticpresentationforms' => '#/326',
-'isanatolianhieroglyphs' => '#/657',
-'isancientgreekmusic' => '#/387',
-'isancientgreekmusicalnotation' => '#/387',
-'isancientgreeknumbers' => '#/398',
-'isancientsymbols' => '#/352',
+'isalphabeticpf' => '#/338',
+'isalphabeticpresentationforms' => '#/338',
+'isanatolianhieroglyphs' => '#/677',
+'isancientgreekmusic' => '#/404',
+'isancientgreekmusicalnotation' => '#/404',
+'isancientgreeknumbers' => '#/415',
+'isancientsymbols' => '#/367',
'isany' => '#/2',
'isarab' => 'Scx/Arab',
'isarabic' => 'Scx/Arab',
-'isarabicexta' => '#/278',
-'isarabicextendeda' => '#/278',
-'isarabicmath' => '#/279',
-'isarabicmathematicalalphabeticsymbols' => '#/279',
-'isarabicpfa' => '#/250',
-'isarabicpfb' => '#/251',
-'isarabicpresentationformsa' => '#/250',
-'isarabicpresentationformsb' => '#/251',
-'isarabicsup' => '#/252',
-'isarabicsupplement' => '#/252',
+'isarabicexta' => '#/286',
+'isarabicextb' => '#/287',
+'isarabicextc' => '#/288',
+'isarabicextendeda' => '#/286',
+'isarabicextendedb' => '#/287',
+'isarabicextendedc' => '#/288',
+'isarabicmath' => '#/289',
+'isarabicmathematicalalphabeticsymbols' => '#/289',
+'isarabicpfa' => '#/255',
+'isarabicpfb' => '#/256',
+'isarabicpresentationformsa' => '#/255',
+'isarabicpresentationformsb' => '#/256',
+'isarabicsup' => '#/257',
+'isarabicsupplement' => '#/257',
'isarmenian' => 'Scx/Armn',
-'isarmi' => '#/637',
+'isarmi' => '#/656',
'isarmn' => 'Scx/Armn',
'isarrows' => '#/151',
'isascii' => '#/131',
'isasciihexdigit' => '#/60',
'isassigned' => 'Perl/Assigned',
-'isavestan' => '#/638',
-'isavst' => '#/638',
-'isbali' => '#/639',
-'isbalinese' => '#/639',
-'isbamu' => '#/640',
-'isbamum' => '#/640',
-'isbamumsup' => '#/223',
-'isbamumsupplement' => '#/223',
+'isavestan' => '#/657',
+'isavst' => '#/657',
+'isbali' => '#/658',
+'isbalinese' => '#/658',
+'isbamu' => '#/659',
+'isbamum' => '#/659',
+'isbamumsup' => '#/225',
+'isbamumsupplement' => '#/225',
'isbasiclatin' => '#/131',
-'isbass' => '#/641',
-'isbassavah' => '#/641',
-'isbatak' => '#/642',
-'isbatk' => '#/642',
+'isbass' => '#/660',
+'isbassavah' => '#/660',
+'isbatak' => '#/661',
+'isbatk' => '#/661',
'isbeng' => 'Scx/Beng',
'isbengali' => 'Scx/Beng',
'isbhaiksuki' => 'Scx/Bhks',
@@ -5026,35 +5187,35 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'isbidim' => 'BidiM/Y',
'isbidimirrored' => 'BidiM/Y',
'isblank' => 'Perl/Blank',
-'isblockelements' => '#/344',
+'isblockelements' => '#/358',
'isbopo' => 'Scx/Bopo',
'isbopomofo' => 'Scx/Bopo',
-'isbopomofoext' => '#/301',
-'isbopomofoextended' => '#/301',
-'isboxdrawing' => '#/280',
-'isbrah' => '#/643',
-'isbrahmi' => '#/643',
-'isbrai' => '#/180',
-'isbraille' => '#/180',
-'isbraillepatterns' => '#/180',
-'isbugi' => '#/644',
-'isbuginese' => '#/644',
-'isbuhd' => '#/645',
-'isbuhid' => '#/645',
-'isbyzantinemusic' => '#/353',
-'isbyzantinemusicalsymbols' => '#/353',
+'isbopomofoext' => '#/312',
+'isbopomofoextended' => '#/312',
+'isboxdrawing' => '#/290',
+'isbrah' => '#/662',
+'isbrahmi' => '#/662',
+'isbrai' => '#/181',
+'isbraille' => '#/181',
+'isbraillepatterns' => '#/181',
+'isbugi' => '#/663',
+'isbuginese' => '#/663',
+'isbuhd' => '#/664',
+'isbuhid' => '#/664',
+'isbyzantinemusic' => '#/368',
+'isbyzantinemusicalsymbols' => '#/368',
'isc' => 'Gc/C',
'iscakm' => 'Scx/Cakm',
-'iscanadianaboriginal' => '#/646',
+'iscanadianaboriginal' => '#/665',
'iscanadiansyllabics' => '#/130',
-'iscans' => '#/646',
-'iscari' => '#/647',
-'iscarian' => '#/647',
+'iscans' => '#/665',
+'iscari' => '#/666',
+'iscarian' => '#/666',
'iscased' => 'Cased/Y',
'iscasedletter' => 'Gc/LC',
'iscaseignorable' => 'CI/Y',
-'iscaucasianalbanian' => '#/635',
-'iscc' => '#/422',
+'iscaucasianalbanian' => '#/654',
+'iscc' => '#/439',
'isce' => 'CE/Y',
'iscf' => 'Gc/Cf',
'ischakma' => 'Scx/Cakm',
@@ -5065,74 +5226,77 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'ischangeswhennfkccasefolded' => 'CWKCF/Y',
'ischangeswhentitlecased' => 'CWT/Y',
'ischangeswhenuppercased' => 'CWU/Y',
-'ischer' => '#/648',
-'ischerokee' => '#/648',
-'ischerokeesup' => '#/302',
-'ischerokeesupplement' => '#/302',
-'ischesssymbols' => '#/327',
-'ischorasmian' => '#/649',
-'ischrs' => '#/649',
+'ischer' => '#/667',
+'ischerokee' => '#/667',
+'ischerokeesup' => '#/313',
+'ischerokeesupplement' => '#/313',
+'ischesssymbols' => '#/339',
+'ischorasmian' => '#/668',
+'ischrs' => '#/668',
'isci' => 'CI/Y',
-'iscjk' => '#/112',
-'iscjkcompat' => '#/254',
-'iscjkcompatforms' => '#/354',
-'iscjkcompatibility' => '#/254',
-'iscjkcompatibilityforms' => '#/354',
-'iscjkcompatibilityideographs' => '#/399',
-'iscjkcompatibilityideographssupplement' => '#/410',
-'iscjkcompatideographs' => '#/399',
-'iscjkcompatideographssup' => '#/410',
-'iscjkexta' => '#/181',
-'iscjkextb' => '#/182',
-'iscjkextc' => '#/183',
-'iscjkextd' => '#/184',
-'iscjkexte' => '#/185',
-'iscjkextf' => '#/186',
-'iscjkextg' => '#/187',
-'iscjkradicalssup' => '#/355',
-'iscjkradicalssupplement' => '#/355',
-'iscjkstrokes' => '#/281',
-'iscjksymbols' => '#/282',
-'iscjksymbolsandpunctuation' => '#/282',
-'iscjkunifiedideographs' => '#/112',
-'iscjkunifiedideographsextensiona' => '#/181',
-'iscjkunifiedideographsextensionb' => '#/182',
-'iscjkunifiedideographsextensionc' => '#/183',
-'iscjkunifiedideographsextensiond' => '#/184',
-'iscjkunifiedideographsextensione' => '#/185',
-'iscjkunifiedideographsextensionf' => '#/186',
-'iscjkunifiedideographsextensiong' => '#/187',
+'iscjk' => '#/110',
+'iscjkcompat' => '#/259',
+'iscjkcompatforms' => '#/369',
+'iscjkcompatibility' => '#/259',
+'iscjkcompatibilityforms' => '#/369',
+'iscjkcompatibilityideographs' => '#/416',
+'iscjkcompatibilityideographssupplement' => '#/427',
+'iscjkcompatideographs' => '#/416',
+'iscjkcompatideographssup' => '#/427',
+'iscjkexta' => '#/182',
+'iscjkextb' => '#/183',
+'iscjkextc' => '#/184',
+'iscjkextd' => '#/185',
+'iscjkexte' => '#/186',
+'iscjkextf' => '#/187',
+'iscjkextg' => '#/188',
+'iscjkexth' => '#/189',
+'iscjkradicalssup' => '#/370',
+'iscjkradicalssupplement' => '#/370',
+'iscjkstrokes' => '#/291',
+'iscjksymbols' => '#/292',
+'iscjksymbolsandpunctuation' => '#/292',
+'iscjkunifiedideographs' => '#/110',
+'iscjkunifiedideographsextensiona' => '#/182',
+'iscjkunifiedideographsextensionb' => '#/183',
+'iscjkunifiedideographsextensionc' => '#/184',
+'iscjkunifiedideographsextensiond' => '#/185',
+'iscjkunifiedideographsextensione' => '#/186',
+'iscjkunifiedideographsextensionf' => '#/187',
+'iscjkunifiedideographsextensiong' => '#/188',
+'iscjkunifiedideographsextensionh' => '#/189',
'isclosepunctuation' => 'Gc/Pe',
'iscn' => 'Gc/Cn',
-'iscntrl' => '#/422',
-'isco' => '#/423',
-'iscombiningdiacriticalmarks' => '#/331',
-'iscombiningdiacriticalmarksextended' => '#/364',
-'iscombiningdiacriticalmarksforsymbols' => '#/411',
-'iscombiningdiacriticalmarkssupplement' => '#/365',
-'iscombininghalfmarks' => '#/257',
+'iscntrl' => '#/439',
+'isco' => '#/440',
+'iscombiningdiacriticalmarks' => '#/344',
+'iscombiningdiacriticalmarksextended' => '#/380',
+'iscombiningdiacriticalmarksforsymbols' => '#/428',
+'iscombiningdiacriticalmarkssupplement' => '#/381',
+'iscombininghalfmarks' => '#/262',
'iscombiningmark' => 'Gc/M',
-'iscombiningmarksforsymbols' => '#/411',
+'iscombiningmarksforsymbols' => '#/428',
'iscommon' => 'Scx/Zyyy',
-'iscommonindicnumberforms' => '#/380',
-'iscompatjamo' => '#/284',
+'iscommonindicnumberforms' => '#/396',
+'iscompatjamo' => '#/294',
'iscompex' => 'CompEx/Y',
'iscompositionexclusion' => 'CE/Y',
'isconnectorpunctuation' => 'Gc/Pc',
-'iscontrol' => '#/422',
-'iscontrolpictures' => '#/362',
+'iscontrol' => '#/439',
+'iscontrolpictures' => '#/378',
'iscopt' => 'Scx/Copt',
'iscoptic' => 'Scx/Copt',
-'iscopticepactnumbers' => '#/393',
-'iscountingrod' => '#/303',
-'iscountingrodnumerals' => '#/303',
+'iscopticepactnumbers' => '#/410',
+'iscountingrod' => '#/314',
+'iscountingrodnumerals' => '#/314',
+'iscpmn' => '#/669',
'iscprt' => 'Scx/Cprt',
'iscs' => '#/14',
'iscuneiform' => 'Scx/Xsux',
-'iscuneiformnumbers' => '#/375',
-'iscuneiformnumbersandpunctuation' => '#/375',
+'iscuneiformnumbers' => '#/391',
+'iscuneiformnumbersandpunctuation' => '#/391',
'iscurrencysymbol' => 'Gc/Sc',
-'iscurrencysymbols' => '#/363',
+'iscurrencysymbols' => '#/379',
'iscwcf' => 'CWCF/Y',
'iscwcm' => 'CWCM/Y',
'iscwkcf' => 'CWKCF/Y',
@@ -5140,17 +5304,20 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'iscwt' => 'CWT/Y',
'iscwu' => 'CWU/Y',
'iscypriot' => 'Scx/Cprt',
-'iscypriotsyllabary' => '#/376',
+'iscypriotsyllabary' => '#/392',
+'iscyprominoan' => '#/669',
'iscyrillic' => 'Scx/Cyrl',
-'iscyrillicexta' => '#/328',
-'iscyrillicextb' => '#/329',
-'iscyrillicextc' => '#/330',
-'iscyrillicextendeda' => '#/328',
-'iscyrillicextendedb' => '#/329',
-'iscyrillicextendedc' => '#/330',
-'iscyrillicsup' => '#/304',
-'iscyrillicsupplement' => '#/304',
-'iscyrillicsupplementary' => '#/304',
+'iscyrillicexta' => '#/340',
+'iscyrillicextb' => '#/341',
+'iscyrillicextc' => '#/342',
+'iscyrillicextd' => '#/343',
+'iscyrillicextendeda' => '#/340',
+'iscyrillicextendedb' => '#/341',
+'iscyrillicextendedc' => '#/342',
+'iscyrillicextendedd' => '#/343',
+'iscyrillicsup' => '#/316',
+'iscyrillicsupplement' => '#/316',
+'iscyrillicsupplementary' => '#/316',
'iscyrl' => 'Scx/Cyrl',
'isdash' => 'Dash/Y',
'isdashpunctuation' => 'Gc/Pd',
@@ -5158,64 +5325,68 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'isdefaultignorablecodepoint' => 'DI/Y',
'isdep' => 'Dep/Y',
'isdeprecated' => 'Dep/Y',
-'isdeseret' => '#/188',
+'isdeseret' => '#/190',
'isdeva' => 'Scx/Deva',
'isdevanagari' => 'Scx/Deva',
-'isdevanagariext' => '#/345',
-'isdevanagariextended' => '#/345',
+'isdevanagariext' => '#/359',
+'isdevanagariexta' => '#/371',
+'isdevanagariextended' => '#/359',
+'isdevanagariextendeda' => '#/371',
'isdi' => 'DI/Y',
'isdia' => 'Dia/Y',
'isdiacritic' => 'Dia/Y',
-'isdiacriticals' => '#/331',
-'isdiacriticalsext' => '#/364',
-'isdiacriticalsforsymbols' => '#/411',
-'isdiacriticalssup' => '#/365',
+'isdiacriticals' => '#/344',
+'isdiacriticalsext' => '#/380',
+'isdiacriticalsforsymbols' => '#/428',
+'isdiacriticalssup' => '#/381',
'isdiak' => 'Scx/Diak',
'isdigit' => 'Gc/Nd',
-'isdingbats' => '#/229',
+'isdingbats' => '#/231',
'isdivesakuru' => 'Scx/Diak',
-'isdogr' => '#/650',
-'isdogra' => '#/650',
+'isdogr' => '#/670',
+'isdogra' => '#/670',
'isdomino' => '#/156',
'isdominotiles' => '#/156',
-'isdsrt' => '#/188',
+'isdsrt' => '#/190',
'isdupl' => 'Scx/Dupl',
'isduployan' => 'Scx/Dupl',
-'isearlydynasticcuneiform' => '#/412',
+'isearlydynasticcuneiform' => '#/429',
'isebase' => 'EBase/Y',
'isecomp' => 'EComp/Y',
-'isegyp' => '#/651',
-'isegyptianhieroglyphformatcontrols' => '#/418',
-'isegyptianhieroglyphs' => '#/651',
-'iselba' => '#/652',
-'iselbasan' => '#/652',
-'iselym' => '#/653',
-'iselymaic' => '#/653',
+'isegyp' => '#/671',
+'isegyptianhieroglyphformatcontrols' => '#/435',
+'isegyptianhieroglyphs' => '#/671',
+'iselba' => '#/672',
+'iselbasan' => '#/672',
+'iselym' => '#/673',
+'iselymaic' => '#/673',
'isemod' => '#/61',
'isemoji' => 'Emoji/Y',
'isemojicomponent' => 'EComp/Y',
'isemojimodifier' => '#/61',
'isemojimodifierbase' => 'EBase/Y',
'isemojipresentation' => 'EPres/Y',
-'isemoticons' => '#/256',
-'isenclosedalphanum' => '#/377',
-'isenclosedalphanumerics' => '#/377',
-'isenclosedalphanumericsupplement' => '#/401',
-'isenclosedalphanumsup' => '#/401',
-'isenclosedcjk' => '#/305',
-'isenclosedcjklettersandmonths' => '#/305',
-'isenclosedideographicsup' => '#/413',
-'isenclosedideographicsupplement' => '#/413',
+'isemoticons' => '#/261',
+'isenclosedalphanum' => '#/393',
+'isenclosedalphanumerics' => '#/393',
+'isenclosedalphanumericsupplement' => '#/418',
+'isenclosedalphanumsup' => '#/418',
+'isenclosedcjk' => '#/317',
+'isenclosedcjklettersandmonths' => '#/317',
+'isenclosedideographicsup' => '#/430',
+'isenclosedideographicsupplement' => '#/430',
'isenclosingmark' => 'Gc/Me',
'isepres' => 'EPres/Y',
'isethi' => 'Scx/Ethi',
'isethiopic' => 'Scx/Ethi',
-'isethiopicext' => '#/306',
-'isethiopicexta' => '#/332',
-'isethiopicextended' => '#/306',
-'isethiopicextendeda' => '#/332',
-'isethiopicsup' => '#/307',
-'isethiopicsupplement' => '#/307',
+'isethiopicext' => '#/318',
+'isethiopicexta' => '#/345',
+'isethiopicextb' => '#/346',
+'isethiopicextended' => '#/318',
+'isethiopicextendeda' => '#/345',
+'isethiopicextendedb' => '#/346',
+'isethiopicsup' => '#/319',
+'isethiopicsupplement' => '#/319',
'isext' => 'Ext/Y',
'isextendedpictographic' => 'ExtPict/Y',
'isextender' => 'Ext/Y',
@@ -5223,24 +5394,24 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'isfinalpunctuation' => 'Gc/Pf',
'isformat' => 'Gc/Cf',
'isfullcompositionexclusion' => 'CompEx/Y',
-'isgeneralpunctuation' => '#/320',
-'isgeometricshapes' => '#/366',
-'isgeometricshapesext' => '#/394',
-'isgeometricshapesextended' => '#/394',
+'isgeneralpunctuation' => '#/332',
+'isgeometricshapes' => '#/382',
+'isgeometricshapesext' => '#/411',
+'isgeometricshapesextended' => '#/411',
'isgeor' => 'Scx/Geor',
'isgeorgian' => 'Scx/Geor',
-'isgeorgianext' => '#/308',
-'isgeorgianextended' => '#/308',
-'isgeorgiansup' => '#/309',
-'isgeorgiansupplement' => '#/309',
+'isgeorgianext' => '#/320',
+'isgeorgianextended' => '#/320',
+'isgeorgiansup' => '#/321',
+'isgeorgiansupplement' => '#/321',
'isglag' => 'Scx/Glag',
'isglagolitic' => 'Scx/Glag',
-'isglagoliticsup' => '#/346',
-'isglagoliticsupplement' => '#/346',
+'isglagoliticsup' => '#/360',
+'isglagoliticsupplement' => '#/360',
'isgong' => 'Scx/Gong',
'isgonm' => 'Scx/Gonm',
-'isgoth' => '#/654',
-'isgothic' => '#/654',
+'isgoth' => '#/674',
+'isgothic' => '#/674',
'isgran' => 'Scx/Gran',
'isgrantha' => 'Scx/Gran',
'isgraph' => 'Perl/Graph',
@@ -5249,8 +5420,8 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'isgrbase' => 'GrBase/Y',
'isgreek' => 'Scx/Grek',
'isgreekandcoptic' => '#/137',
-'isgreekext' => '#/233',
-'isgreekextended' => '#/233',
+'isgreekext' => '#/235',
+'isgreekextended' => '#/235',
'isgrek' => 'Scx/Grek',
'isgrext' => 'GrExt/Y',
'isgujarati' => 'Scx/Gujr',
@@ -5258,93 +5429,97 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'isgunjalagondi' => 'Scx/Gong',
'isgurmukhi' => 'Scx/Guru',
'isguru' => 'Scx/Guru',
-'ishalfandfullforms' => '#/378',
-'ishalfmarks' => '#/257',
-'ishalfwidthandfullwidthforms' => '#/378',
+'ishalfandfullforms' => '#/394',
+'ishalfmarks' => '#/262',
+'ishalfwidthandfullwidthforms' => '#/394',
'ishan' => 'Scx/Han',
'ishang' => 'Scx/Hang',
'ishangul' => 'Scx/Hang',
-'ishangulcompatibilityjamo' => '#/284',
-'ishanguljamo' => '#/122',
-'ishanguljamoextendeda' => '#/237',
-'ishanguljamoextendedb' => '#/238',
+'ishangulcompatibilityjamo' => '#/294',
+'ishanguljamo' => '#/120',
+'ishanguljamoextendeda' => '#/239',
+'ishanguljamoextendedb' => '#/240',
'ishangulsyllables' => '#/158',
'ishani' => 'Scx/Han',
'ishanifirohingya' => 'Scx/Rohg',
-'ishano' => '#/655',
-'ishanunoo' => '#/655',
-'ishatr' => '#/656',
-'ishatran' => '#/656',
+'ishano' => '#/675',
+'ishanunoo' => '#/675',
+'ishatr' => '#/676',
+'ishatran' => '#/676',
'ishebr' => 'Scx/Hebr',
'ishebrew' => 'Scx/Hebr',
'ishex' => 'Hex/Y',
'ishexdigit' => 'Hex/Y',
-'ishighprivateusesurrogates' => '#/379',
-'ishighpusurrogates' => '#/379',
-'ishighsurrogates' => '#/357',
+'ishighprivateusesurrogates' => '#/395',
+'ishighpusurrogates' => '#/395',
+'ishighsurrogates' => '#/373',
'ishira' => 'Scx/Hira',
'ishiragana' => 'Scx/Hira',
-'ishluw' => '#/657',
+'ishluw' => '#/677',
'ishmng' => 'Scx/Hmng',
'ishmnp' => 'Scx/Hmnp',
'ishorizspace' => 'Perl/Blank',
-'ishung' => '#/658',
+'ishung' => '#/678',
'ishyphen' => 'Hyphen/T',
'isidc' => 'IDC/Y',
'isidcontinue' => 'IDC/Y',
'isideo' => 'Ideo/Y',
'isideographic' => 'Ideo/Y',
-'isideographicdescriptioncharacters' => '#/113',
-'isideographicsymbols' => '#/395',
-'isideographicsymbolsandpunctuation' => '#/395',
+'isideographicdescriptioncharacters' => '#/111',
+'isideographicsymbols' => '#/412',
+'isideographicsymbolsandpunctuation' => '#/412',
'isids' => 'IDS/Y',
'isidsb' => '#/70',
'isidsbinaryoperator' => '#/70',
'isidst' => '#/72',
'isidstart' => 'IDS/Y',
'isidstrinaryoperator' => '#/72',
-'isimperialaramaic' => '#/637',
-'isindicnumberforms' => '#/380',
-'isindicsiyaqnumbers' => '#/389',
+'isimperialaramaic' => '#/656',
+'isindicnumberforms' => '#/396',
+'isindicsiyaqnumbers' => '#/406',
'isinherited' => 'Scx/Zinh',
'isinitialpunctuation' => 'Gc/Pi',
-'isinscriptionalpahlavi' => '#/687',
-'isinscriptionalparthian' => '#/689',
+'isinscriptionalpahlavi' => '#/710',
+'isinscriptionalparthian' => '#/712',
'isipaext' => '#/161',
'isipaextensions' => '#/161',
-'isital' => '#/659',
-'isjamo' => '#/122',
-'isjamoexta' => '#/237',
-'isjamoextb' => '#/238',
-'isjava' => '#/660',
-'isjavanese' => '#/660',
-'isjoinc' => '#/88',
-'isjoincontrol' => '#/88',
+'isital' => '#/679',
+'isjamo' => '#/120',
+'isjamoexta' => '#/239',
+'isjamoextb' => '#/240',
+'isjava' => '#/680',
+'isjavanese' => '#/680',
+'isjoinc' => '#/87',
+'isjoincontrol' => '#/87',
'iskaithi' => 'Scx/Kthi',
-'iskali' => '#/195',
+'iskaktoviknumerals' => '#/397',
+'iskali' => '#/197',
'iskana' => 'Scx/Kana',
-'iskanaexta' => '#/240',
-'iskanaextendeda' => '#/240',
-'iskanasup' => '#/193',
-'iskanasupplement' => '#/193',
+'iskanaexta' => '#/242',
+'iskanaextb' => '#/243',
+'iskanaextendeda' => '#/242',
+'iskanaextendedb' => '#/243',
+'iskanasup' => '#/195',
+'iskanasupplement' => '#/195',
'iskanbun' => '#/163',
'iskangxi' => '#/164',
'iskangxiradicals' => '#/164',
'iskannada' => 'Scx/Knda',
'iskatakana' => 'Scx/Kana',
-'iskatakanaext' => '#/310',
-'iskatakanaphoneticextensions' => '#/310',
-'iskayahli' => '#/195',
+'iskatakanaext' => '#/322',
+'iskatakanaphoneticextensions' => '#/322',
+'iskawi' => '#/681',
+'iskayahli' => '#/197',
'iskhar' => 'Scx/Khar',
'iskharoshthi' => 'Scx/Khar',
-'iskhitansmallscript' => '#/661',
+'iskhitansmallscript' => '#/682',
'iskhmer' => 'Scx/Khmr',
-'iskhmersymbols' => '#/334',
+'iskhmersymbols' => '#/348',
'iskhmr' => 'Scx/Khmr',
'iskhoj' => 'Scx/Khoj',
'iskhojki' => 'Scx/Khoj',
'iskhudawadi' => 'Scx/Sind',
-'iskits' => '#/661',
+'iskits' => '#/682',
'isknda' => 'Scx/Knda',
'iskthi' => 'Scx/Kthi',
'isl' => 'Gc/L',
@@ -5357,24 +5532,28 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'islatin1' => '#/166',
'islatin1sup' => '#/166',
'islatin1supplement' => '#/166',
-'islatinexta' => '#/259',
-'islatinextadditional' => '#/396',
-'islatinextb' => '#/260',
-'islatinextc' => '#/261',
-'islatinextd' => '#/262',
-'islatinexte' => '#/263',
-'islatinextendeda' => '#/259',
-'islatinextendedadditional' => '#/396',
-'islatinextendedb' => '#/260',
-'islatinextendedc' => '#/261',
-'islatinextendedd' => '#/262',
-'islatinextendede' => '#/263',
+'islatinexta' => '#/264',
+'islatinextadditional' => '#/413',
+'islatinextb' => '#/265',
+'islatinextc' => '#/266',
+'islatinextd' => '#/267',
+'islatinexte' => '#/268',
+'islatinextendeda' => '#/264',
+'islatinextendedadditional' => '#/413',
+'islatinextendedb' => '#/265',
+'islatinextendedc' => '#/266',
+'islatinextendedd' => '#/267',
+'islatinextendede' => '#/268',
+'islatinextendedf' => '#/269',
+'islatinextendedg' => '#/270',
+'islatinextf' => '#/269',
+'islatinextg' => '#/270',
'islatn' => 'Scx/Latn',
'islc' => 'Gc/LC',
-'islepc' => '#/662',
-'islepcha' => '#/662',
+'islepc' => '#/683',
+'islepcha' => '#/683',
'isletter' => 'Gc/L',
-'isletterlikesymbols' => '#/391',
+'isletterlikesymbols' => '#/408',
'isletternumber' => 'Gc/Nl',
'islimb' => 'Scx/Limb',
'islimbu' => 'Scx/Limb',
@@ -5382,12 +5561,12 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'islinb' => 'Scx/Linb',
'islineara' => 'Scx/Lina',
'islinearb' => 'Scx/Linb',
-'islinearbideograms' => '#/381',
-'islinearbsyllabary' => '#/382',
-'islineseparator' => '#/424',
-'islisu' => '#/663',
-'islisusup' => '#/197',
-'islisusupplement' => '#/197',
+'islinearbideograms' => '#/398',
+'islinearbsyllabary' => '#/399',
+'islineseparator' => '#/441',
+'islisu' => '#/684',
+'islisusup' => '#/199',
+'islisusupplement' => '#/199',
'isll' => 'Gc/Ll',
'islm' => 'Gc/Lm',
'islo' => 'Gc/Lo',
@@ -5396,172 +5575,176 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'islower' => 'Lower/Y',
'islowercase' => 'Lower/Y',
'islowercaseletter' => 'Gc/Ll',
-'islowsurrogates' => '#/347',
+'islowsurrogates' => '#/361',
'islt' => 'Perl/Title',
'islu' => 'Gc/Lu',
-'islyci' => '#/664',
-'islycian' => '#/664',
-'islydi' => '#/665',
-'islydian' => '#/665',
+'islyci' => '#/685',
+'islycian' => '#/685',
+'islydi' => '#/686',
+'islydian' => '#/686',
'ism' => 'Gc/M',
-'ismahajani' => '#/666',
-'ismahj' => '#/666',
-'ismahjong' => '#/198',
-'ismahjongtiles' => '#/198',
-'ismaka' => '#/667',
-'ismakasar' => '#/667',
+'ismahajani' => '#/687',
+'ismahj' => '#/687',
+'ismahjong' => '#/200',
+'ismahjongtiles' => '#/200',
+'ismaka' => '#/688',
+'ismakasar' => '#/688',
'ismalayalam' => 'Scx/Mlym',
-'ismand' => '#/668',
-'ismandaic' => '#/668',
-'ismani' => '#/669',
-'ismanichaean' => '#/669',
-'ismarc' => '#/670',
-'ismarchen' => '#/670',
+'ismand' => '#/689',
+'ismandaic' => '#/689',
+'ismani' => '#/690',
+'ismanichaean' => '#/690',
+'ismarc' => '#/691',
+'ismarchen' => '#/691',
'ismark' => 'Gc/M',
'ismasaramgondi' => 'Scx/Gonm',
'ismath' => 'Math/Y',
-'ismathalphanum' => '#/336',
-'ismathematicalalphanumericsymbols' => '#/336',
-'ismathematicaloperators' => '#/348',
-'ismathoperators' => '#/348',
+'ismathalphanum' => '#/350',
+'ismathematicalalphanumericsymbols' => '#/350',
+'ismathematicaloperators' => '#/362',
+'ismathoperators' => '#/362',
'ismathsymbol' => 'Gc/Sm',
-'ismayannumerals' => '#/349',
+'ismayannumerals' => '#/363',
'ismc' => 'Gc/Mc',
'isme' => 'Gc/Me',
-'ismedefaidrin' => '#/671',
-'ismedf' => '#/671',
-'ismeeteimayek' => '#/676',
-'ismeeteimayekext' => '#/358',
-'ismeeteimayekextensions' => '#/358',
-'ismend' => '#/672',
-'ismendekikakui' => '#/672',
-'ismerc' => '#/673',
-'ismero' => '#/402',
-'ismeroiticcursive' => '#/673',
-'ismeroitichieroglyphs' => '#/402',
-'ismiao' => '#/674',
-'ismiscarrows' => '#/290',
-'ismiscellaneousmathematicalsymbolsa' => '#/383',
-'ismiscellaneousmathematicalsymbolsb' => '#/384',
-'ismiscellaneoussymbols' => '#/313',
-'ismiscellaneoussymbolsandarrows' => '#/290',
-'ismiscellaneoussymbolsandpictographs' => '#/369',
-'ismiscellaneoustechnical' => '#/350',
-'ismiscmathsymbolsa' => '#/383',
-'ismiscmathsymbolsb' => '#/384',
-'ismiscpictographs' => '#/369',
-'ismiscsymbols' => '#/313',
-'ismisctechnical' => '#/350',
+'ismedefaidrin' => '#/692',
+'ismedf' => '#/692',
+'ismeeteimayek' => '#/697',
+'ismeeteimayekext' => '#/374',
+'ismeeteimayekextensions' => '#/374',
+'ismend' => '#/693',
+'ismendekikakui' => '#/693',
+'ismerc' => '#/694',
+'ismero' => '#/419',
+'ismeroiticcursive' => '#/694',
+'ismeroitichieroglyphs' => '#/419',
+'ismiao' => '#/695',
+'ismiscarrows' => '#/300',
+'ismiscellaneousmathematicalsymbolsa' => '#/400',
+'ismiscellaneousmathematicalsymbolsb' => '#/401',
+'ismiscellaneoussymbols' => '#/325',
+'ismiscellaneoussymbolsandarrows' => '#/300',
+'ismiscellaneoussymbolsandpictographs' => '#/385',
+'ismiscellaneoustechnical' => '#/364',
+'ismiscmathsymbolsa' => '#/400',
+'ismiscmathsymbolsb' => '#/401',
+'ismiscpictographs' => '#/385',
+'ismiscsymbols' => '#/325',
+'ismisctechnical' => '#/364',
'ismlym' => 'Scx/Mlym',
'ismn' => 'Gc/Mn',
-'ismodi' => '#/675',
+'ismodi' => '#/696',
'ismodifierletter' => 'Gc/Lm',
-'ismodifierletters' => '#/370',
+'ismodifierletters' => '#/386',
'ismodifiersymbol' => 'Gc/Sk',
-'ismodifiertoneletters' => '#/403',
+'ismodifiertoneletters' => '#/420',
'ismong' => 'Scx/Mong',
'ismongolian' => 'Scx/Mong',
-'ismongoliansup' => '#/338',
-'ismongoliansupplement' => '#/338',
-'ismro' => '#/632',
-'ismroo' => '#/632',
-'ismtei' => '#/676',
+'ismongoliansup' => '#/352',
+'ismongoliansupplement' => '#/352',
+'ismro' => '#/652',
+'ismroo' => '#/652',
+'ismtei' => '#/697',
'ismult' => 'Scx/Mult',
'ismultani' => 'Scx/Mult',
'ismusic' => '#/140',
'ismusicalsymbols' => '#/140',
'ismyanmar' => 'Scx/Mymr',
-'ismyanmarexta' => '#/314',
-'ismyanmarextb' => '#/315',
-'ismyanmarextendeda' => '#/314',
-'ismyanmarextendedb' => '#/315',
+'ismyanmarexta' => '#/326',
+'ismyanmarextb' => '#/327',
+'ismyanmarextendeda' => '#/326',
+'ismyanmarextendedb' => '#/327',
'ismymr' => 'Scx/Mymr',
'isn' => 'Gc/N',
-'isnabataean' => '#/677',
+'isnabataean' => '#/699',
+'isnagm' => '#/698',
+'isnagmundari' => '#/698',
'isnand' => 'Scx/Nand',
'isnandinagari' => 'Scx/Nand',
-'isnarb' => '#/371',
+'isnarb' => '#/387',
'isnb' => 'Blk/NB',
-'isnbat' => '#/677',
+'isnbat' => '#/699',
'isnchar' => 'Perl/_PerlNch',
'isnd' => 'Gc/Nd',
-'isnewa' => '#/678',
+'isnewa' => '#/700',
'isnewtailue' => 'Scx/Talu',
-'isnko' => '#/633',
-'isnkoo' => '#/633',
+'isnko' => 'Scx/Nko',
+'isnkoo' => 'Scx/Nko',
'isnl' => 'Gc/Nl',
'isno' => 'Gc/No',
'isnoblock' => 'Blk/NB',
'isnoncharactercodepoint' => 'Perl/_PerlNch',
'isnonspacingmark' => 'Gc/Mn',
-'isnshu' => '#/679',
+'isnshu' => '#/701',
'isnumber' => 'Gc/N',
-'isnumberforms' => '#/317',
-'isnushu' => '#/679',
+'isnumberforms' => '#/329',
+'isnushu' => '#/701',
'isnyiakengpuachuehmong' => 'Scx/Hmnp',
-'isocr' => '#/117',
-'isogam' => '#/680',
-'isogham' => '#/680',
-'isolchiki' => '#/204',
-'isolck' => '#/204',
-'isoldhungarian' => '#/658',
-'isolditalic' => '#/659',
-'isoldnortharabian' => '#/371',
-'isoldpermic' => '#/685',
-'isoldpersian' => '#/710',
-'isoldsogdian' => '#/697',
-'isoldsoutharabian' => '#/372',
-'isoldturkic' => '#/681',
+'isocr' => '#/115',
+'isogam' => '#/702',
+'isogham' => '#/702',
+'isolchiki' => '#/206',
+'isolck' => '#/206',
+'isoldhungarian' => '#/678',
+'isolditalic' => '#/679',
+'isoldnortharabian' => '#/387',
+'isoldpermic' => '#/708',
+'isoldpersian' => '#/735',
+'isoldsogdian' => '#/720',
+'isoldsoutharabian' => '#/388',
+'isoldturkic' => '#/703',
+'isolduyghur' => '#/706',
'isopenpunctuation' => 'Gc/Ps',
-'isopticalcharacterrecognition' => '#/117',
+'isopticalcharacterrecognition' => '#/115',
'isoriya' => 'Scx/Orya',
-'isorkh' => '#/681',
-'isornamentaldingbats' => '#/397',
+'isorkh' => '#/703',
+'isornamentaldingbats' => '#/414',
'isorya' => 'Scx/Orya',
-'isosage' => '#/682',
-'isosge' => '#/682',
-'isosma' => '#/683',
-'isosmanya' => '#/683',
+'isosage' => '#/704',
+'isosge' => '#/704',
+'isosma' => '#/705',
+'isosmanya' => '#/705',
'isother' => 'Gc/C',
'isotherletter' => 'Gc/Lo',
'isothernumber' => 'Gc/No',
'isotherpunctuation' => 'Gc/Po',
'isothersymbol' => 'Gc/So',
-'isottomansiyaqnumbers' => '#/404',
+'isottomansiyaqnumbers' => '#/421',
+'isougr' => '#/706',
'isp' => 'Gc/P',
'ispahawhhmong' => 'Scx/Hmng',
-'ispalm' => '#/271',
-'ispalmyrene' => '#/271',
-'isparagraphseparator' => '#/425',
+'ispalm' => '#/279',
+'ispalmyrene' => '#/279',
+'isparagraphseparator' => '#/442',
'ispatsyn' => 'PatSyn/Y',
'ispatternsyntax' => 'PatSyn/Y',
'ispatternwhitespace' => 'Perl/_PerlPat',
'ispatws' => 'Perl/_PerlPat',
-'ispauc' => '#/684',
-'ispaucinhau' => '#/684',
+'ispauc' => '#/707',
+'ispaucinhau' => '#/707',
'ispc' => 'Gc/Pc',
'ispcm' => 'PCM/Y',
'ispd' => 'Gc/Pd',
'ispe' => 'Gc/Pe',
'isperlspace' => '#/3',
'isperlword' => 'Perl/PerlWord',
-'isperm' => '#/685',
+'isperm' => '#/708',
'ispf' => 'Gc/Pf',
-'isphag' => '#/686',
-'isphagspa' => '#/686',
-'isphaistos' => '#/243',
-'isphaistosdisc' => '#/243',
-'isphli' => '#/687',
+'isphag' => '#/709',
+'isphagspa' => '#/709',
+'isphaistos' => '#/246',
+'isphaistosdisc' => '#/246',
+'isphli' => '#/710',
'isphlp' => 'Scx/Phlp',
-'isphnx' => '#/688',
-'isphoenician' => '#/688',
-'isphoneticext' => '#/319',
-'isphoneticextensions' => '#/319',
-'isphoneticextensionssupplement' => '#/359',
-'isphoneticextsup' => '#/359',
+'isphnx' => '#/711',
+'isphoenician' => '#/711',
+'isphoneticext' => '#/331',
+'isphoneticextensions' => '#/331',
+'isphoneticextensionssupplement' => '#/375',
+'isphoneticextsup' => '#/375',
'ispi' => 'Gc/Pi',
-'isplayingcards' => '#/340',
-'isplrd' => '#/674',
+'isplayingcards' => '#/354',
+'isplrd' => '#/695',
'ispo' => 'Gc/Po',
'isposixalnum' => '#/5',
'isposixalpha' => '#/6',
@@ -5578,178 +5761,185 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'isposixxdigit' => '#/60',
'isprependedconcatenationmark' => 'PCM/Y',
'isprint' => 'Perl/Print',
-'isprivateuse' => '#/423',
-'isprivateusearea' => '#/118',
-'isprti' => '#/689',
+'isprivateuse' => '#/440',
+'isprivateusearea' => '#/116',
+'isprti' => '#/712',
'isps' => 'Gc/Ps',
'ispsalterpahlavi' => 'Scx/Phlp',
-'ispua' => '#/118',
+'ispua' => '#/116',
'ispunct' => 'Gc/P',
'ispunctuation' => 'Gc/P',
'isqaac' => 'Scx/Copt',
'isqaai' => 'Scx/Zinh',
'isqmark' => 'QMark/Y',
'isquotationmark' => 'QMark/Y',
-'isradical' => '#/91',
+'isradical' => '#/90',
'isregionalindicator' => '#/68',
-'isrejang' => '#/690',
+'isrejang' => '#/713',
'isri' => '#/68',
-'isrjng' => '#/690',
+'isrjng' => '#/713',
'isrohg' => 'Scx/Rohg',
-'isrumi' => '#/127',
-'isruminumeralsymbols' => '#/127',
-'isrunic' => '#/691',
-'isrunr' => '#/691',
+'isrumi' => '#/126',
+'isruminumeralsymbols' => '#/126',
+'isrunic' => '#/714',
+'isrunr' => '#/714',
'iss' => 'Gc/S',
-'issamaritan' => '#/692',
-'issamr' => '#/692',
-'issarb' => '#/372',
-'issaur' => '#/693',
-'issaurashtra' => '#/693',
+'issamaritan' => '#/715',
+'issamr' => '#/715',
+'issarb' => '#/388',
+'issaur' => '#/716',
+'issaurashtra' => '#/716',
'issc' => 'Gc/Sc',
'issd' => 'SD/Y',
'issentenceterminal' => 'STerm/Y',
'isseparator' => 'Gc/Z',
-'issgnw' => '#/694',
+'issgnw' => '#/717',
'issharada' => 'Scx/Shrd',
-'isshavian' => '#/208',
-'isshaw' => '#/208',
-'isshorthandformatcontrols' => '#/414',
+'isshavian' => '#/210',
+'isshaw' => '#/210',
+'isshorthandformatcontrols' => '#/431',
'isshrd' => 'Scx/Shrd',
-'issidd' => '#/695',
-'issiddham' => '#/695',
-'issignwriting' => '#/694',
+'issidd' => '#/718',
+'issiddham' => '#/718',
+'issignwriting' => '#/717',
'issind' => 'Scx/Sind',
'issinh' => 'Scx/Sinh',
'issinhala' => 'Scx/Sinh',
-'issinhalaarchaicnumbers' => '#/409',
+'issinhalaarchaicnumbers' => '#/426',
'issk' => 'Gc/Sk',
'issm' => 'Gc/Sm',
-'issmallforms' => '#/295',
-'issmallformvariants' => '#/295',
-'issmallkanaext' => '#/341',
-'issmallkanaextension' => '#/341',
+'issmallforms' => '#/306',
+'issmallformvariants' => '#/306',
+'issmallkanaext' => '#/355',
+'issmallkanaextension' => '#/355',
'isso' => 'Gc/So',
'issoftdotted' => 'SD/Y',
-'issogd' => '#/696',
-'issogdian' => '#/696',
-'issogo' => '#/697',
-'issora' => '#/698',
-'issorasompeng' => '#/698',
-'issoyo' => '#/699',
-'issoyombo' => '#/699',
+'issogd' => '#/719',
+'issogdian' => '#/719',
+'issogo' => '#/720',
+'issora' => '#/721',
+'issorasompeng' => '#/721',
+'issoyo' => '#/722',
+'issoyombo' => '#/722',
'isspace' => 'Perl/SpacePer',
'isspaceperl' => 'Perl/SpacePer',
'isspaceseparator' => 'Gc/Zs',
'isspacingmark' => 'Gc/Mc',
-'isspacingmodifierletters' => '#/370',
-'isspecials' => '#/244',
+'isspacingmodifierletters' => '#/386',
+'isspecials' => '#/247',
'issterm' => 'STerm/Y',
-'issund' => '#/700',
-'issundanese' => '#/700',
-'issundanesesup' => '#/342',
-'issundanesesupplement' => '#/342',
-'issuparrowsa' => '#/296',
-'issuparrowsb' => '#/297',
-'issuparrowsc' => '#/298',
-'issuperandsub' => '#/322',
-'issuperscriptsandsubscripts' => '#/322',
-'issupmathoperators' => '#/385',
-'issupplementalarrowsa' => '#/296',
-'issupplementalarrowsb' => '#/297',
-'issupplementalarrowsc' => '#/298',
-'issupplementalmathematicaloperators' => '#/385',
-'issupplementalpunctuation' => '#/361',
-'issupplementalsymbolsandpictographs' => '#/415',
-'issupplementaryprivateuseareaa' => '#/213',
-'issupplementaryprivateuseareab' => '#/214',
-'issuppuaa' => '#/213',
-'issuppuab' => '#/214',
-'issuppunctuation' => '#/361',
-'issupsymbolsandpictographs' => '#/415',
+'issund' => '#/723',
+'issundanese' => '#/723',
+'issundanesesup' => '#/356',
+'issundanesesupplement' => '#/356',
+'issuparrowsa' => '#/307',
+'issuparrowsb' => '#/308',
+'issuparrowsc' => '#/309',
+'issuperandsub' => '#/334',
+'issuperscriptsandsubscripts' => '#/334',
+'issupmathoperators' => '#/402',
+'issupplementalarrowsa' => '#/307',
+'issupplementalarrowsb' => '#/308',
+'issupplementalarrowsc' => '#/309',
+'issupplementalmathematicaloperators' => '#/402',
+'issupplementalpunctuation' => '#/377',
+'issupplementalsymbolsandpictographs' => '#/432',
+'issupplementaryprivateuseareaa' => '#/215',
+'issupplementaryprivateuseareab' => '#/216',
+'issuppuaa' => '#/215',
+'issuppuab' => '#/216',
+'issuppunctuation' => '#/377',
+'issupsymbolsandpictographs' => '#/432',
'issurrogate' => '#/14',
-'issuttonsignwriting' => '#/392',
-'issylo' => '#/701',
-'issylotinagri' => '#/701',
+'issuttonsignwriting' => '#/409',
+'issylo' => '#/724',
+'issylotinagri' => '#/724',
'issymbol' => 'Gc/S',
-'issymbolsandpictographsexta' => '#/416',
-'issymbolsandpictographsextendeda' => '#/416',
-'issymbolsforlegacycomputing' => '#/417',
+'issymbolsandpictographsexta' => '#/433',
+'issymbolsandpictographsextendeda' => '#/433',
+'issymbolsforlegacycomputing' => '#/434',
'issyrc' => 'Scx/Syrc',
'issyriac' => 'Scx/Syrc',
-'issyriacsup' => '#/275',
-'issyriacsupplement' => '#/275',
-'istagalog' => '#/705',
+'issyriacsup' => '#/283',
+'issyriacsupplement' => '#/283',
+'istagalog' => '#/728',
'istagb' => 'Scx/Tagb',
'istagbanwa' => 'Scx/Tagb',
-'istags' => '#/128',
-'istaile' => '#/702',
+'istags' => '#/127',
+'istaile' => '#/725',
'istaitham' => 'Scx/Lana',
-'istaiviet' => '#/703',
-'istaixuanjing' => '#/324',
-'istaixuanjingsymbols' => '#/324',
+'istaiviet' => '#/726',
+'istaixuanjing' => '#/336',
+'istaixuanjingsymbols' => '#/336',
'istakr' => 'Scx/Takr',
'istakri' => 'Scx/Takr',
-'istale' => '#/702',
+'istale' => '#/725',
'istalu' => 'Scx/Talu',
'istamil' => 'Scx/Taml',
-'istamilsup' => '#/246',
-'istamilsupplement' => '#/246',
+'istamilsup' => '#/249',
+'istamilsupplement' => '#/249',
'istaml' => 'Scx/Taml',
'istang' => 'Scx/Tang',
+'istangsa' => '#/730',
'istangut' => 'Scx/Tang',
-'istangutcomponents' => '#/386',
-'istangutsup' => '#/276',
-'istangutsupplement' => '#/276',
-'istavt' => '#/703',
+'istangutcomponents' => '#/403',
+'istangutsup' => '#/284',
+'istangutsupplement' => '#/284',
+'istavt' => '#/726',
'istelu' => 'Scx/Telu',
'istelugu' => 'Scx/Telu',
'isterm' => 'Term/Y',
'isterminalpunctuation' => 'Term/Y',
-'istfng' => '#/704',
-'istglg' => '#/705',
+'istfng' => '#/727',
+'istglg' => '#/728',
'isthaa' => 'Scx/Thaa',
'isthaana' => 'Scx/Thaa',
-'isthai' => '#/706',
+'isthai' => '#/729',
'istibetan' => 'Scx/Tibt',
'istibt' => 'Scx/Tibt',
-'istifinagh' => '#/704',
+'istifinagh' => '#/727',
'istirh' => 'Scx/Tirh',
'istirhuta' => 'Scx/Tirh',
'istitle' => 'Perl/Title',
'istitlecase' => 'Perl/Title',
'istitlecaseletter' => 'Perl/Title',
-'istransportandmap' => '#/373',
-'istransportandmapsymbols' => '#/373',
+'istnsa' => '#/730',
+'istoto' => '#/731',
+'istransportandmap' => '#/389',
+'istransportandmapsymbols' => '#/389',
'isucas' => '#/130',
-'isucasext' => '#/220',
-'isugar' => '#/707',
-'isugaritic' => '#/707',
+'isucasext' => '#/222',
+'isucasexta' => '#/251',
+'isugar' => '#/732',
+'isugaritic' => '#/732',
'isuideo' => 'UIdeo/Y',
'isunassigned' => 'Gc/Cn',
'isunicode' => '#/2',
'isunifiedcanadianaboriginalsyllabics' => '#/130',
-'isunifiedcanadianaboriginalsyllabicsextended' => '#/220',
+'isunifiedcanadianaboriginalsyllabicsextended' => '#/222',
+'isunifiedcanadianaboriginalsyllabicsextendeda' => '#/251',
'isunifiedideograph' => 'UIdeo/Y',
'isunknown' => 'Scx/Zzzz',
'isupper' => 'Upper/Y',
'isuppercase' => 'Upper/Y',
'isuppercaseletter' => 'Gc/Lu',
-'isvai' => '#/634',
-'isvaii' => '#/634',
-'isvariationselector' => '#/93',
-'isvariationselectors' => '#/111',
+'isvai' => '#/653',
+'isvaii' => '#/653',
+'isvariationselector' => 'VS/Y',
+'isvariationselectors' => '#/109',
'isvariationselectorssupplement' => '#/149',
-'isvedicext' => '#/249',
-'isvedicextensions' => '#/249',
-'isverticalforms' => '#/351',
+'isvedicext' => '#/253',
+'isvedicextensions' => '#/253',
+'isverticalforms' => '#/365',
'isvertspace' => '#/4',
-'isvs' => '#/93',
+'isvith' => 'Scx/Vith',
+'isvithkuqi' => 'Scx/Vith',
+'isvs' => 'VS/Y',
'isvssup' => '#/149',
-'iswancho' => '#/709',
-'iswara' => '#/708',
-'iswarangciti' => '#/708',
-'iswcho' => '#/709',
+'iswancho' => '#/734',
+'iswara' => '#/733',
+'iswarangciti' => '#/733',
+'iswcho' => '#/734',
'iswhitespace' => 'Perl/SpacePer',
'isword' => 'Perl/Word',
'iswspace' => 'Perl/SpacePer',
@@ -5758,12 +5948,12 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'isxidcontinue' => 'XIDC/Y',
'isxids' => 'XIDS/Y',
'isxidstart' => 'XIDS/Y',
-'isxpeo' => '#/710',
+'isxpeo' => '#/735',
'isxperlspace' => 'Perl/SpacePer',
'isxposixalnum' => 'Perl/Alnum',
'isxposixalpha' => 'Alpha/Y',
'isxposixblank' => 'Perl/Blank',
-'isxposixcntrl' => '#/422',
+'isxposixcntrl' => '#/439',
'isxposixdigit' => 'Gc/Nd',
'isxposixgraph' => 'Perl/Graph',
'isxposixlower' => 'Lower/Y',
@@ -5778,138 +5968,142 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'isyezidi' => 'Scx/Yezi',
'isyi' => 'Scx/Yi',
'isyiii' => 'Scx/Yi',
-'isyijing' => '#/177',
-'isyijinghexagramsymbols' => '#/177',
-'isyiradicals' => '#/300',
-'isyisyllables' => '#/325',
+'isyijing' => '#/178',
+'isyijinghexagramsymbols' => '#/178',
+'isyiradicals' => '#/311',
+'isyisyllables' => '#/337',
'isz' => 'Gc/Z',
-'iszanabazarsquare' => '#/711',
-'iszanb' => '#/711',
+'iszanabazarsquare' => '#/736',
+'iszanb' => '#/736',
'iszinh' => 'Scx/Zinh',
-'iszl' => '#/424',
-'iszp' => '#/425',
+'iszl' => '#/441',
+'isznamennymusic' => '#/366',
+'isznamennymusicalnotation' => '#/366',
+'iszp' => '#/442',
'iszs' => 'Gc/Zs',
'iszyyy' => 'Scx/Zyyy',
'iszzzz' => 'Scx/Zzzz',
-'ital' => '#/659',
-'jamo' => '#/122',
-'jamoexta' => '#/237',
-'jamoextb' => '#/238',
-'java' => '#/660',
-'javanese' => '#/660',
-'jg=africanfeh' => '#/458',
-'jg=africannoon' => '#/464',
-'jg=africanqaf' => '#/459',
+'ital' => '#/679',
+'jamo' => '#/120',
+'jamoexta' => '#/239',
+'jamoextb' => '#/240',
+'java' => '#/680',
+'javanese' => '#/680',
+'jg=africanfeh' => '#/474',
+'jg=africannoon' => '#/480',
+'jg=africanqaf' => '#/475',
'jg=ain' => 'Jg/Ain',
-'jg=alaph' => '#/446',
+'jg=alaph' => '#/461',
'jg=alef' => 'Jg/Alef',
'jg=beh' => 'Jg/Beh',
-'jg=beth' => '#/436',
-'jg=burushaskiyehbarree' => '#/509',
+'jg=beth' => '#/452',
+'jg=burushaskiyehbarree' => '#/526',
'jg=dal' => 'Jg/Dal',
-'jg=dalathrish' => '#/460',
-'jg=e' => '#/426',
+'jg=dalathrish' => '#/476',
+'jg=e' => '#/443',
'jg=farsiyeh' => 'Jg/FarsiYeh',
-'jg=fe' => '#/427',
+'jg=fe' => '#/444',
'jg=feh' => 'Jg/Feh',
-'jg=finalsemkath' => '#/470',
+'jg=finalsemkath' => '#/486',
'jg=gaf' => 'Jg/Gaf',
-'jg=gamal' => '#/447',
+'jg=gamal' => '#/462',
'jg=hah' => 'Jg/Hah',
-'jg=hamzaonhehgoal' => '#/487',
+'jg=hamzaonhehgoal' => '#/504',
'jg=hanifirohingyakinnaya' => 'Jg/HanifiRo',
-'jg=hanifirohingyapa' => '#/501',
-'jg=he' => '#/428',
-'jg=heh' => '#/430',
-'jg=hehgoal' => '#/453',
-'jg=heth' => '#/437',
+'jg=hanifirohingyapa' => '#/518',
+'jg=he' => '#/445',
+'jg=heh' => '#/447',
+'jg=hehgoal' => '#/468',
+'jg=heth' => '#/453',
'jg=kaf' => 'Jg/Kaf',
-'jg=kaph' => '#/438',
-'jg=khaph' => '#/448',
-'jg=knottedheh' => '#/461',
+'jg=kaph' => '#/454',
+'jg=khaph' => '#/463',
+'jg=knottedheh' => '#/477',
'jg=lam' => 'Jg/Lam',
-'jg=lamadh' => '#/451',
-'jg=malayalambha' => '#/471',
-'jg=malayalamja' => '#/465',
-'jg=malayalamlla' => '#/472',
-'jg=malayalamllla' => '#/479',
-'jg=malayalamnga' => '#/473',
-'jg=malayalamnna' => '#/474',
-'jg=malayalamnnna' => '#/480',
-'jg=malayalamnya' => '#/475',
-'jg=malayalamra' => '#/466',
-'jg=malayalamssa' => '#/476',
-'jg=malayalamtta' => '#/477',
-'jg=manichaeanaleph' => '#/497',
-'jg=manichaeanayin' => '#/488',
-'jg=manichaeanbeth' => '#/489',
-'jg=manichaeandaleth' => '#/502',
-'jg=manichaeandhamedh' => '#/506',
-'jg=manichaeanfive' => '#/490',
-'jg=manichaeangimel' => '#/498',
-'jg=manichaeanheth' => '#/491',
-'jg=manichaeanhundred' => '#/507',
-'jg=manichaeankaph' => '#/492',
-'jg=manichaeanlamedh' => '#/503',
-'jg=manichaeanmem' => '#/481',
-'jg=manichaeannun' => '#/482',
-'jg=manichaeanone' => '#/483',
-'jg=manichaeanpe' => '#/478',
-'jg=manichaeanqoph' => '#/493',
-'jg=manichaeanresh' => '#/494',
-'jg=manichaeansadhe' => '#/499',
-'jg=manichaeansamekh' => '#/504',
-'jg=manichaeantaw' => '#/484',
-'jg=manichaeanten' => '#/485',
-'jg=manichaeanteth' => '#/495',
-'jg=manichaeanthamedh' => '#/508',
-'jg=manichaeantwenty' => '#/505',
-'jg=manichaeanwaw' => '#/486',
-'jg=manichaeanyodh' => '#/496',
-'jg=manichaeanzayin' => '#/500',
-'jg=meem' => '#/439',
-'jg=mim' => '#/431',
+'jg=lamadh' => '#/466',
+'jg=malayalambha' => '#/487',
+'jg=malayalamja' => '#/481',
+'jg=malayalamlla' => '#/488',
+'jg=malayalamllla' => '#/496',
+'jg=malayalamnga' => '#/489',
+'jg=malayalamnna' => '#/490',
+'jg=malayalamnnna' => '#/497',
+'jg=malayalamnya' => '#/491',
+'jg=malayalamra' => '#/482',
+'jg=malayalamssa' => '#/492',
+'jg=malayalamtta' => '#/493',
+'jg=manichaeanaleph' => '#/514',
+'jg=manichaeanayin' => '#/505',
+'jg=manichaeanbeth' => '#/506',
+'jg=manichaeandaleth' => '#/519',
+'jg=manichaeandhamedh' => '#/523',
+'jg=manichaeanfive' => '#/507',
+'jg=manichaeangimel' => '#/515',
+'jg=manichaeanheth' => '#/508',
+'jg=manichaeanhundred' => '#/524',
+'jg=manichaeankaph' => '#/509',
+'jg=manichaeanlamedh' => '#/520',
+'jg=manichaeanmem' => '#/498',
+'jg=manichaeannun' => '#/499',
+'jg=manichaeanone' => '#/500',
+'jg=manichaeanpe' => '#/494',
+'jg=manichaeanqoph' => '#/510',
+'jg=manichaeanresh' => '#/511',
+'jg=manichaeansadhe' => '#/516',
+'jg=manichaeansamekh' => '#/521',
+'jg=manichaeantaw' => '#/501',
+'jg=manichaeanten' => '#/502',
+'jg=manichaeanteth' => '#/512',
+'jg=manichaeanthamedh' => '#/525',
+'jg=manichaeantwenty' => '#/522',
+'jg=manichaeanwaw' => '#/503',
+'jg=manichaeanyodh' => '#/513',
+'jg=manichaeanzayin' => '#/517',
+'jg=meem' => '#/455',
+'jg=mim' => '#/448',
'jg=nojoininggroup' => 'Jg/NoJoinin',
-'jg=noon' => '#/440',
-'jg=nun' => '#/432',
-'jg=nya' => '#/433',
-'jg=pe' => '#/429',
+'jg=noon' => 'Jg/Noon',
+'jg=nun' => '#/449',
+'jg=nya' => '#/450',
+'jg=pe' => '#/446',
'jg=qaf' => 'Jg/Qaf',
-'jg=qaph' => '#/441',
+'jg=qaph' => '#/456',
'jg=reh' => 'Jg/Reh',
-'jg=reversedpe' => '#/462',
-'jg=rohingyayeh' => '#/467',
+'jg=reversedpe' => '#/478',
+'jg=rohingyayeh' => '#/483',
'jg=sad' => 'Jg/Sad',
-'jg=sadhe' => '#/449',
+'jg=sadhe' => '#/464',
'jg=seen' => 'Jg/Seen',
-'jg=semkath' => '#/454',
-'jg=shin' => '#/442',
-'jg=straightwaw' => '#/468',
-'jg=swashkaf' => '#/455',
-'jg=syriacwaw' => '#/456',
-'jg=tah' => '#/434',
-'jg=taw' => '#/435',
-'jg=tehmarbuta' => '#/463',
-'jg=tehmarbutagoal' => '#/487',
-'jg=teth' => '#/443',
+'jg=semkath' => '#/469',
+'jg=shin' => '#/457',
+'jg=straightwaw' => '#/484',
+'jg=swashkaf' => '#/471',
+'jg=syriacwaw' => '#/472',
+'jg=tah' => 'Jg/Tah',
+'jg=taw' => '#/451',
+'jg=tehmarbuta' => '#/479',
+'jg=tehmarbutagoal' => '#/504',
+'jg=teth' => '#/458',
+'jg=thinyeh' => '#/470',
+'jg=verticaltail' => '#/495',
'jg=waw' => 'Jg/Waw',
'jg=yeh' => 'Jg/Yeh',
-'jg=yehbarree' => '#/457',
-'jg=yehwithtail' => '#/469',
-'jg=yudh' => '#/444',
-'jg=yudhhe' => '#/452',
-'jg=zain' => '#/445',
-'jg=zhain' => '#/450',
-'joinc' => '#/88',
-'joinc=f' => '#/!88',
-'joinc=false' => '#/!88',
-'joinc=n' => '#/!88',
-'joinc=no' => '#/!88',
-'joinc=t' => '#/88',
-'joinc=true' => '#/88',
-'joinc=y' => '#/88',
-'joinc=yes' => '#/88',
-'joincontrol' => '#/88',
+'jg=yehbarree' => '#/473',
+'jg=yehwithtail' => '#/485',
+'jg=yudh' => '#/459',
+'jg=yudhhe' => '#/467',
+'jg=zain' => '#/460',
+'jg=zhain' => '#/465',
+'joinc' => '#/87',
+'joinc=f' => '#/!87',
+'joinc=false' => '#/!87',
+'joinc=n' => '#/!87',
+'joinc=no' => '#/!87',
+'joinc=t' => '#/87',
+'joinc=true' => '#/87',
+'joinc=y' => '#/87',
+'joinc=yes' => '#/87',
+'joincontrol' => '#/87',
'jt=c' => 'Jt/C',
'jt=d' => 'Jt/D',
'jt=dualjoining' => 'Jt/D',
@@ -5923,30 +6117,34 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'jt=transparent' => 'Jt/T',
'jt=u' => 'Jt/U',
'kaithi' => 'Scx/Kthi',
-'kali' => '#/195',
+'kaktoviknumerals' => '#/397',
+'kali' => '#/197',
'kana' => 'Scx/Kana',
-'kanaexta' => '#/240',
-'kanaextendeda' => '#/240',
-'kanasup' => '#/193',
-'kanasupplement' => '#/193',
+'kanaexta' => '#/242',
+'kanaextb' => '#/243',
+'kanaextendeda' => '#/242',
+'kanaextendedb' => '#/243',
+'kanasup' => '#/195',
+'kanasupplement' => '#/195',
'kanbun' => '#/163',
'kangxi' => '#/164',
'kangxiradicals' => '#/164',
'kannada' => 'Scx/Knda',
'katakana' => 'Scx/Kana',
-'katakanaext' => '#/310',
-'katakanaphoneticextensions' => '#/310',
-'kayahli' => '#/195',
+'katakanaext' => '#/322',
+'katakanaphoneticextensions' => '#/322',
+'kawi' => '#/681',
+'kayahli' => '#/197',
'khar' => 'Scx/Khar',
'kharoshthi' => 'Scx/Khar',
-'khitansmallscript' => '#/661',
+'khitansmallscript' => '#/682',
'khmer' => 'Scx/Khmr',
-'khmersymbols' => '#/334',
+'khmersymbols' => '#/348',
'khmr' => 'Scx/Khmr',
'khoj' => 'Scx/Khoj',
'khojki' => 'Scx/Khoj',
'khudawadi' => 'Scx/Sind',
-'kits' => '#/661',
+'kits' => '#/682',
'knda' => 'Scx/Knda',
'kthi' => 'Scx/Kthi',
'l' => 'Gc/L',
@@ -5959,43 +6157,47 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'latin1' => '#/166',
'latin1sup' => '#/166',
'latin1supplement' => '#/166',
-'latinexta' => '#/259',
-'latinextadditional' => '#/396',
-'latinextb' => '#/260',
-'latinextc' => '#/261',
-'latinextd' => '#/262',
-'latinexte' => '#/263',
-'latinextendeda' => '#/259',
-'latinextendedadditional' => '#/396',
-'latinextendedb' => '#/260',
-'latinextendedc' => '#/261',
-'latinextendedd' => '#/262',
-'latinextendede' => '#/263',
+'latinexta' => '#/264',
+'latinextadditional' => '#/413',
+'latinextb' => '#/265',
+'latinextc' => '#/266',
+'latinextd' => '#/267',
+'latinexte' => '#/268',
+'latinextendeda' => '#/264',
+'latinextendedadditional' => '#/413',
+'latinextendedb' => '#/265',
+'latinextendedc' => '#/266',
+'latinextendedd' => '#/267',
+'latinextendede' => '#/268',
+'latinextendedf' => '#/269',
+'latinextendedg' => '#/270',
+'latinextf' => '#/269',
+'latinextg' => '#/270',
'latn' => 'Scx/Latn',
'lb=ai' => 'Lb/AI',
'lb=al' => 'Lb/AL',
'lb=alphabetic' => 'Lb/AL',
'lb=ambiguous' => 'Lb/AI',
-'lb=b2' => '#/510',
+'lb=b2' => '#/527',
'lb=ba' => 'Lb/BA',
'lb=bb' => 'Lb/BB',
-'lb=bk' => '#/511',
+'lb=bk' => '#/528',
'lb=breakafter' => 'Lb/BA',
'lb=breakbefore' => 'Lb/BB',
-'lb=breakboth' => '#/510',
-'lb=breaksymbols' => '#/518',
+'lb=breakboth' => '#/527',
+'lb=breaksymbols' => '#/535',
'lb=carriagereturn' => '#/66',
-'lb=cb' => '#/512',
+'lb=cb' => '#/529',
'lb=cj' => 'Lb/CJ',
'lb=cl' => 'Lb/CL',
-'lb=closeparenthesis' => '#/513',
+'lb=closeparenthesis' => '#/530',
'lb=closepunctuation' => 'Lb/CL',
'lb=cm' => 'Lb/CM',
'lb=combiningmark' => 'Lb/CM',
'lb=complexcontext' => 'Lb/SA',
'lb=conditionaljapanesestarter' => 'Lb/CJ',
-'lb=contingentbreak' => '#/512',
-'lb=cp' => '#/513',
+'lb=contingentbreak' => '#/529',
+'lb=cp' => '#/530',
'lb=cr' => '#/66',
'lb=eb' => 'EBase/Y',
'lb=ebase' => 'EBase/Y',
@@ -6009,8 +6211,8 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'lb=h3' => 'GCB/LVT',
'lb=hebrewletter' => 'WB/HL',
'lb=hl' => 'WB/HL',
-'lb=hy' => '#/514',
-'lb=hyphen' => '#/514',
+'lb=hy' => '#/531',
+'lb=hyphen' => '#/531',
'lb=id' => 'Lb/ID',
'lb=ideographic' => 'Lb/ID',
'lb=in' => 'Lb/IN',
@@ -6023,9 +6225,9 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'lb=jv' => '#/65',
'lb=lf' => '#/67',
'lb=linefeed' => '#/67',
-'lb=mandatorybreak' => '#/511',
-'lb=nextline' => '#/515',
-'lb=nl' => '#/515',
+'lb=mandatorybreak' => '#/528',
+'lb=nextline' => '#/532',
+'lb=nl' => '#/532',
'lb=nonstarter' => 'Lb/NS',
'lb=ns' => 'Lb/NS',
'lb=nu' => 'Lb/NU',
@@ -6041,23 +6243,23 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'lb=regionalindicator' => '#/68',
'lb=ri' => '#/68',
'lb=sa' => 'Lb/SA',
-'lb=sg' => '#/516',
-'lb=sp' => '#/517',
-'lb=space' => '#/517',
-'lb=surrogate' => '#/516',
-'lb=sy' => '#/518',
+'lb=sg' => '#/533',
+'lb=sp' => '#/534',
+'lb=space' => '#/534',
+'lb=surrogate' => '#/533',
+'lb=sy' => '#/535',
'lb=unknown' => 'Lb/XX',
-'lb=wj' => '#/519',
-'lb=wordjoiner' => '#/519',
+'lb=wj' => '#/536',
+'lb=wordjoiner' => '#/536',
'lb=xx' => 'Lb/XX',
-'lb=zw' => '#/520',
+'lb=zw' => '#/537',
'lb=zwj' => '#/69',
-'lb=zwspace' => '#/520',
+'lb=zwspace' => '#/537',
'lc' => 'Gc/LC',
-'lepc' => '#/662',
-'lepcha' => '#/662',
+'lepc' => '#/683',
+'lepcha' => '#/683',
'letter' => 'Gc/L',
-'letterlikesymbols' => '#/391',
+'letterlikesymbols' => '#/408',
'letternumber' => 'Gc/Nl',
'limb' => 'Scx/Limb',
'limbu' => 'Scx/Limb',
@@ -6065,12 +6267,12 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'linb' => 'Scx/Linb',
'lineara' => 'Scx/Lina',
'linearb' => 'Scx/Linb',
-'linearbideograms' => '#/381',
-'linearbsyllabary' => '#/382',
-'lineseparator' => '#/424',
-'lisu' => '#/663',
-'lisusup' => '#/197',
-'lisusupplement' => '#/197',
+'linearbideograms' => '#/398',
+'linearbsyllabary' => '#/399',
+'lineseparator' => '#/441',
+'lisu' => '#/684',
+'lisusup' => '#/199',
+'lisusupplement' => '#/199',
'll' => 'Gc/Ll',
'lm' => 'Gc/Lm',
'lo' => 'Gc/Lo',
@@ -6095,27 +6297,27 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'lower=yes' => 'Lower/Y',
'lowercase' => 'Lower/Y',
'lowercaseletter' => 'Gc/Ll',
-'lowsurrogates' => '#/347',
+'lowsurrogates' => '#/361',
'lt' => 'Perl/Title',
'lu' => 'Gc/Lu',
-'lyci' => '#/664',
-'lycian' => '#/664',
-'lydi' => '#/665',
-'lydian' => '#/665',
+'lyci' => '#/685',
+'lycian' => '#/685',
+'lydi' => '#/686',
+'lydian' => '#/686',
'm' => 'Gc/M',
-'mahajani' => '#/666',
-'mahj' => '#/666',
-'mahjong' => '#/198',
-'mahjongtiles' => '#/198',
-'maka' => '#/667',
-'makasar' => '#/667',
+'mahajani' => '#/687',
+'mahj' => '#/687',
+'mahjong' => '#/200',
+'mahjongtiles' => '#/200',
+'maka' => '#/688',
+'makasar' => '#/688',
'malayalam' => 'Scx/Mlym',
-'mand' => '#/668',
-'mandaic' => '#/668',
-'mani' => '#/669',
-'manichaean' => '#/669',
-'marc' => '#/670',
-'marchen' => '#/670',
+'mand' => '#/689',
+'mandaic' => '#/689',
+'mani' => '#/690',
+'manichaean' => '#/690',
+'marc' => '#/691',
+'marchen' => '#/691',
'mark' => 'Gc/M',
'masaramgondi' => 'Scx/Gonm',
'math' => 'Math/Y',
@@ -6127,69 +6329,71 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'math=true' => 'Math/Y',
'math=y' => 'Math/Y',
'math=yes' => 'Math/Y',
-'mathalphanum' => '#/336',
-'mathematicalalphanumericsymbols' => '#/336',
-'mathematicaloperators' => '#/348',
-'mathoperators' => '#/348',
+'mathalphanum' => '#/350',
+'mathematicalalphanumericsymbols' => '#/350',
+'mathematicaloperators' => '#/362',
+'mathoperators' => '#/362',
'mathsymbol' => 'Gc/Sm',
-'mayannumerals' => '#/349',
+'mayannumerals' => '#/363',
'mc' => 'Gc/Mc',
'me' => 'Gc/Me',
-'medefaidrin' => '#/671',
-'medf' => '#/671',
-'meeteimayek' => '#/676',
-'meeteimayekext' => '#/358',
-'meeteimayekextensions' => '#/358',
-'mend' => '#/672',
-'mendekikakui' => '#/672',
-'merc' => '#/673',
-'mero' => '#/402',
-'meroiticcursive' => '#/673',
-'meroitichieroglyphs' => '#/402',
-'miao' => '#/674',
-'miscarrows' => '#/290',
-'miscellaneousmathematicalsymbolsa' => '#/383',
-'miscellaneousmathematicalsymbolsb' => '#/384',
-'miscellaneoussymbols' => '#/313',
-'miscellaneoussymbolsandarrows' => '#/290',
-'miscellaneoussymbolsandpictographs' => '#/369',
-'miscellaneoustechnical' => '#/350',
-'miscmathsymbolsa' => '#/383',
-'miscmathsymbolsb' => '#/384',
-'miscpictographs' => '#/369',
-'miscsymbols' => '#/313',
-'misctechnical' => '#/350',
+'medefaidrin' => '#/692',
+'medf' => '#/692',
+'meeteimayek' => '#/697',
+'meeteimayekext' => '#/374',
+'meeteimayekextensions' => '#/374',
+'mend' => '#/693',
+'mendekikakui' => '#/693',
+'merc' => '#/694',
+'mero' => '#/419',
+'meroiticcursive' => '#/694',
+'meroitichieroglyphs' => '#/419',
+'miao' => '#/695',
+'miscarrows' => '#/300',
+'miscellaneousmathematicalsymbolsa' => '#/400',
+'miscellaneousmathematicalsymbolsb' => '#/401',
+'miscellaneoussymbols' => '#/325',
+'miscellaneoussymbolsandarrows' => '#/300',
+'miscellaneoussymbolsandpictographs' => '#/385',
+'miscellaneoustechnical' => '#/364',
+'miscmathsymbolsa' => '#/400',
+'miscmathsymbolsb' => '#/401',
+'miscpictographs' => '#/385',
+'miscsymbols' => '#/325',
+'misctechnical' => '#/364',
'mlym' => 'Scx/Mlym',
'mn' => 'Gc/Mn',
-'modi' => '#/675',
+'modi' => '#/696',
'modifierletter' => 'Gc/Lm',
-'modifierletters' => '#/370',
+'modifierletters' => '#/386',
'modifiersymbol' => 'Gc/Sk',
-'modifiertoneletters' => '#/403',
+'modifiertoneletters' => '#/420',
'mong' => 'Scx/Mong',
'mongolian' => 'Scx/Mong',
-'mongoliansup' => '#/338',
-'mongoliansupplement' => '#/338',
-'mro' => '#/632',
-'mroo' => '#/632',
-'mtei' => '#/676',
+'mongoliansup' => '#/352',
+'mongoliansupplement' => '#/352',
+'mro' => '#/652',
+'mroo' => '#/652',
+'mtei' => '#/697',
'mult' => 'Scx/Mult',
'multani' => 'Scx/Mult',
'music' => '#/140',
'musicalsymbols' => '#/140',
'myanmar' => 'Scx/Mymr',
-'myanmarexta' => '#/314',
-'myanmarextb' => '#/315',
-'myanmarextendeda' => '#/314',
-'myanmarextendedb' => '#/315',
+'myanmarexta' => '#/326',
+'myanmarextb' => '#/327',
+'myanmarextendeda' => '#/326',
+'myanmarextendedb' => '#/327',
'mymr' => 'Scx/Mymr',
'n' => 'Gc/N',
-'nabataean' => '#/677',
+'nabataean' => '#/699',
+'nagm' => '#/698',
+'nagmundari' => '#/698',
'nand' => 'Scx/Nand',
'nandinagari' => 'Scx/Nand',
-'narb' => '#/371',
+'narb' => '#/387',
'nb' => 'Blk/NB',
-'nbat' => '#/677',
+'nbat' => '#/699',
'nchar' => 'Perl/_PerlNch',
'nchar=f' => '!Perl/_PerlNch',
'nchar=false' => '!Perl/_PerlNch',
@@ -6200,7 +6404,7 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'nchar=y' => 'Perl/_PerlNch',
'nchar=yes' => 'Perl/_PerlNch',
'nd' => 'Gc/Nd',
-'newa' => '#/678',
+'newa' => '#/700',
'newtailue' => 'Scx/Talu',
'nfcqc=m' => 'NFCQC/M',
'nfcqc=maybe' => 'NFCQC/M',
@@ -6222,14 +6426,14 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'nfkdqc=no' => 'NFKDQC/N',
'nfkdqc=y' => 'NFKDQC/Y',
'nfkdqc=yes' => 'NFKDQC/Y',
-'nko' => '#/633',
-'nkoo' => '#/633',
+'nko' => 'Scx/Nko',
+'nkoo' => 'Scx/Nko',
'nl' => 'Gc/Nl',
'no' => 'Gc/No',
'noblock' => 'Blk/NB',
'noncharactercodepoint' => 'Perl/_PerlNch',
'nonspacingmark' => 'Gc/Mn',
-'nshu' => '#/679',
+'nshu' => '#/701',
'nt=de' => 'Gc/Nd',
'nt=decimal' => 'Gc/Nd',
'nt=di' => 'Nt/Di',
@@ -6238,44 +6442,46 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'nt=nu' => 'Nt/Nu',
'nt=numeric' => 'Nt/Nu',
'number' => 'Gc/N',
-'numberforms' => '#/317',
-'nushu' => '#/679',
+'numberforms' => '#/329',
+'nushu' => '#/701',
'nv=nan' => 'Nt/None',
'nyiakengpuachuehmong' => 'Scx/Hmnp',
-'ocr' => '#/117',
-'ogam' => '#/680',
-'ogham' => '#/680',
-'olchiki' => '#/204',
-'olck' => '#/204',
-'oldhungarian' => '#/658',
-'olditalic' => '#/659',
-'oldnortharabian' => '#/371',
-'oldpermic' => '#/685',
-'oldpersian' => '#/710',
-'oldsogdian' => '#/697',
-'oldsoutharabian' => '#/372',
-'oldturkic' => '#/681',
+'ocr' => '#/115',
+'ogam' => '#/702',
+'ogham' => '#/702',
+'olchiki' => '#/206',
+'olck' => '#/206',
+'oldhungarian' => '#/678',
+'olditalic' => '#/679',
+'oldnortharabian' => '#/387',
+'oldpermic' => '#/708',
+'oldpersian' => '#/735',
+'oldsogdian' => '#/720',
+'oldsoutharabian' => '#/388',
+'oldturkic' => '#/703',
+'olduyghur' => '#/706',
'openpunctuation' => 'Gc/Ps',
-'opticalcharacterrecognition' => '#/117',
+'opticalcharacterrecognition' => '#/115',
'oriya' => 'Scx/Orya',
-'orkh' => '#/681',
-'ornamentaldingbats' => '#/397',
+'orkh' => '#/703',
+'ornamentaldingbats' => '#/414',
'orya' => 'Scx/Orya',
-'osage' => '#/682',
-'osge' => '#/682',
-'osma' => '#/683',
-'osmanya' => '#/683',
+'osage' => '#/704',
+'osge' => '#/704',
+'osma' => '#/705',
+'osmanya' => '#/705',
'other' => 'Gc/C',
'otherletter' => 'Gc/Lo',
'othernumber' => 'Gc/No',
'otherpunctuation' => 'Gc/Po',
'othersymbol' => 'Gc/So',
-'ottomansiyaqnumbers' => '#/404',
+'ottomansiyaqnumbers' => '#/421',
+'ougr' => '#/706',
'p' => 'Gc/P',
'pahawhhmong' => 'Scx/Hmng',
-'palm' => '#/271',
-'palmyrene' => '#/271',
-'paragraphseparator' => '#/425',
+'palm' => '#/279',
+'palmyrene' => '#/279',
+'paragraphseparator' => '#/442',
'patsyn' => 'PatSyn/Y',
'patsyn=f' => '!PatSyn/Y',
'patsyn=false' => '!PatSyn/Y',
@@ -6296,8 +6502,8 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'patws=true' => 'Perl/_PerlPat',
'patws=y' => 'Perl/_PerlPat',
'patws=yes' => 'Perl/_PerlPat',
-'pauc' => '#/684',
-'paucinhau' => '#/684',
+'pauc' => '#/707',
+'paucinhau' => '#/707',
'pc' => 'Gc/Pc',
'pcm' => 'PCM/Y',
'pcm=f' => '!PCM/Y',
@@ -6312,23 +6518,23 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'pe' => 'Gc/Pe',
'perlspace' => '#/3',
'perlword' => 'Perl/PerlWord',
-'perm' => '#/685',
+'perm' => '#/708',
'pf' => 'Gc/Pf',
-'phag' => '#/686',
-'phagspa' => '#/686',
-'phaistos' => '#/243',
-'phaistosdisc' => '#/243',
-'phli' => '#/687',
+'phag' => '#/709',
+'phagspa' => '#/709',
+'phaistos' => '#/246',
+'phaistosdisc' => '#/246',
+'phli' => '#/710',
'phlp' => 'Scx/Phlp',
-'phnx' => '#/688',
-'phoenician' => '#/688',
-'phoneticext' => '#/319',
-'phoneticextensions' => '#/319',
-'phoneticextensionssupplement' => '#/359',
-'phoneticextsup' => '#/359',
+'phnx' => '#/711',
+'phoenician' => '#/711',
+'phoneticext' => '#/331',
+'phoneticextensions' => '#/331',
+'phoneticextensionssupplement' => '#/375',
+'phoneticextsup' => '#/375',
'pi' => 'Gc/Pi',
-'playingcards' => '#/340',
-'plrd' => '#/674',
+'playingcards' => '#/354',
+'plrd' => '#/695',
'po' => 'Gc/Po',
'posixalnum' => '#/5',
'posixalpha' => '#/6',
@@ -6345,12 +6551,12 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'posixxdigit' => '#/60',
'prependedconcatenationmark' => 'PCM/Y',
'print' => 'Perl/Print',
-'privateuse' => '#/423',
-'privateusearea' => '#/118',
-'prti' => '#/689',
+'privateuse' => '#/440',
+'privateusearea' => '#/116',
+'prti' => '#/712',
'ps' => 'Gc/Ps',
'psalterpahlavi' => 'Scx/Phlp',
-'pua' => '#/118',
+'pua' => '#/116',
'punct' => 'Gc/P',
'punctuation' => 'Gc/P',
'qaac' => 'Scx/Copt',
@@ -6365,17 +6571,17 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'qmark=y' => 'QMark/Y',
'qmark=yes' => 'QMark/Y',
'quotationmark' => 'QMark/Y',
-'radical' => '#/91',
-'radical=f' => '#/!91',
-'radical=false' => '#/!91',
-'radical=n' => '#/!91',
-'radical=no' => '#/!91',
-'radical=t' => '#/91',
-'radical=true' => '#/91',
-'radical=y' => '#/91',
-'radical=yes' => '#/91',
+'radical' => '#/90',
+'radical=f' => '#/!90',
+'radical=false' => '#/!90',
+'radical=n' => '#/!90',
+'radical=no' => '#/!90',
+'radical=t' => '#/90',
+'radical=true' => '#/90',
+'radical=y' => '#/90',
+'radical=yes' => '#/90',
'regionalindicator' => '#/68',
-'rejang' => '#/690',
+'rejang' => '#/713',
'ri' => '#/68',
'ri=f' => '#/!68',
'ri=false' => '#/!68',
@@ -6385,18 +6591,18 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'ri=true' => '#/68',
'ri=y' => '#/68',
'ri=yes' => '#/68',
-'rjng' => '#/690',
+'rjng' => '#/713',
'rohg' => 'Scx/Rohg',
-'rumi' => '#/127',
-'ruminumeralsymbols' => '#/127',
-'runic' => '#/691',
-'runr' => '#/691',
+'rumi' => '#/126',
+'ruminumeralsymbols' => '#/126',
+'runic' => '#/714',
+'runr' => '#/714',
's' => 'Gc/S',
-'samaritan' => '#/692',
-'samr' => '#/692',
-'sarb' => '#/372',
-'saur' => '#/693',
-'saurashtra' => '#/693',
+'samaritan' => '#/715',
+'samr' => '#/715',
+'sarb' => '#/388',
+'saur' => '#/716',
+'saurashtra' => '#/716',
'sb=at' => 'SB/AT',
'sb=aterm' => 'SB/AT',
'sb=cl' => 'SB/CL',
@@ -6416,8 +6622,8 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'sb=other' => 'SB/XX',
'sb=sc' => 'SB/SC',
'sb=scontinue' => 'SB/SC',
-'sb=se' => '#/92',
-'sb=sep' => '#/92',
+'sb=se' => '#/91',
+'sb=sep' => '#/91',
'sb=sp' => 'SB/Sp',
'sb=st' => 'SB/ST',
'sb=sterm' => 'SB/ST',
@@ -6425,76 +6631,78 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'sb=upper' => 'SB/UP',
'sb=xx' => 'SB/XX',
'sc' => 'Gc/Sc',
-'sc=adlam' => '#/599',
-'sc=adlm' => '#/599',
-'sc=aghb' => '#/635',
-'sc=ahom' => '#/636',
-'sc=anatolianhieroglyphs' => '#/657',
+'sc=adlam' => '#/617',
+'sc=adlm' => '#/617',
+'sc=aghb' => '#/654',
+'sc=ahom' => '#/655',
+'sc=anatolianhieroglyphs' => '#/677',
'sc=arab' => 'Sc/Arab',
'sc=arabic' => 'Sc/Arab',
'sc=armenian' => 'Scx/Armn',
-'sc=armi' => '#/637',
+'sc=armi' => '#/656',
'sc=armn' => 'Scx/Armn',
-'sc=avestan' => '#/638',
-'sc=avst' => '#/638',
-'sc=bali' => '#/639',
-'sc=balinese' => '#/639',
-'sc=bamu' => '#/640',
-'sc=bamum' => '#/640',
-'sc=bass' => '#/641',
-'sc=bassavah' => '#/641',
-'sc=batak' => '#/642',
-'sc=batk' => '#/642',
+'sc=avestan' => '#/657',
+'sc=avst' => '#/657',
+'sc=bali' => '#/658',
+'sc=balinese' => '#/658',
+'sc=bamu' => '#/659',
+'sc=bamum' => '#/659',
+'sc=bass' => '#/660',
+'sc=bassavah' => '#/660',
+'sc=batak' => '#/661',
+'sc=batk' => '#/661',
'sc=beng' => 'Sc/Beng',
'sc=bengali' => 'Sc/Beng',
'sc=bhaiksuki' => 'Scx/Bhks',
'sc=bhks' => 'Scx/Bhks',
-'sc=bopo' => '#/600',
-'sc=bopomofo' => '#/600',
-'sc=brah' => '#/643',
-'sc=brahmi' => '#/643',
-'sc=brai' => '#/180',
-'sc=braille' => '#/180',
-'sc=bugi' => '#/601',
-'sc=buginese' => '#/601',
-'sc=buhd' => '#/602',
-'sc=buhid' => '#/602',
-'sc=cakm' => '#/603',
-'sc=canadianaboriginal' => '#/646',
-'sc=cans' => '#/646',
-'sc=cari' => '#/647',
-'sc=carian' => '#/647',
-'sc=caucasianalbanian' => '#/635',
-'sc=chakma' => '#/603',
+'sc=bopo' => '#/618',
+'sc=bopomofo' => '#/618',
+'sc=brah' => '#/662',
+'sc=brahmi' => '#/662',
+'sc=brai' => '#/181',
+'sc=braille' => '#/181',
+'sc=bugi' => '#/619',
+'sc=buginese' => '#/619',
+'sc=buhd' => '#/620',
+'sc=buhid' => '#/620',
+'sc=cakm' => '#/621',
+'sc=canadianaboriginal' => '#/665',
+'sc=cans' => '#/665',
+'sc=cari' => '#/666',
+'sc=carian' => '#/666',
+'sc=caucasianalbanian' => '#/654',
+'sc=chakma' => '#/621',
'sc=cham' => 'Scx/Cham',
-'sc=cher' => '#/648',
-'sc=cherokee' => '#/648',
-'sc=chorasmian' => '#/649',
-'sc=chrs' => '#/649',
+'sc=cher' => '#/667',
+'sc=cherokee' => '#/667',
+'sc=chorasmian' => '#/668',
+'sc=chrs' => '#/668',
'sc=common' => 'Sc/Zyyy',
-'sc=copt' => '#/604',
-'sc=coptic' => '#/604',
+'sc=copt' => '#/622',
+'sc=coptic' => '#/622',
+'sc=cpmn' => '#/623',
'sc=cprt' => 'Sc/Cprt',
'sc=cuneiform' => 'Scx/Xsux',
'sc=cypriot' => 'Sc/Cprt',
+'sc=cyprominoan' => '#/623',
'sc=cyrillic' => 'Sc/Cyrl',
'sc=cyrl' => 'Sc/Cyrl',
-'sc=deseret' => '#/188',
+'sc=deseret' => '#/190',
'sc=deva' => 'Sc/Deva',
'sc=devanagari' => 'Sc/Deva',
'sc=diak' => 'Scx/Diak',
'sc=divesakuru' => 'Scx/Diak',
-'sc=dogr' => '#/605',
-'sc=dogra' => '#/605',
-'sc=dsrt' => '#/188',
+'sc=dogr' => '#/624',
+'sc=dogra' => '#/624',
+'sc=dsrt' => '#/190',
'sc=dupl' => 'Sc/Dupl',
'sc=duployan' => 'Sc/Dupl',
-'sc=egyp' => '#/651',
-'sc=egyptianhieroglyphs' => '#/651',
-'sc=elba' => '#/652',
-'sc=elbasan' => '#/652',
-'sc=elym' => '#/653',
-'sc=elymaic' => '#/653',
+'sc=egyp' => '#/671',
+'sc=egyptianhieroglyphs' => '#/671',
+'sc=elba' => '#/672',
+'sc=elbasan' => '#/672',
+'sc=elym' => '#/673',
+'sc=elymaic' => '#/673',
'sc=ethi' => 'Scx/Ethi',
'sc=ethiopic' => 'Scx/Ethi',
'sc=geor' => 'Sc/Geor',
@@ -6503,8 +6711,8 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'sc=glagolitic' => 'Sc/Glag',
'sc=gong' => 'Sc/Gong',
'sc=gonm' => 'Sc/Gonm',
-'sc=goth' => '#/654',
-'sc=gothic' => '#/654',
+'sc=goth' => '#/674',
+'sc=gothic' => '#/674',
'sc=gran' => 'Sc/Gran',
'sc=grantha' => 'Sc/Gran',
'sc=greek' => 'Sc/Grek',
@@ -6518,293 +6726,305 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'sc=hang' => 'Sc/Hang',
'sc=hangul' => 'Sc/Hang',
'sc=hani' => 'Sc/Han',
-'sc=hanifirohingya' => '#/621',
-'sc=hano' => '#/606',
-'sc=hanunoo' => '#/606',
-'sc=hatr' => '#/656',
-'sc=hatran' => '#/656',
+'sc=hanifirohingya' => '#/641',
+'sc=hano' => '#/625',
+'sc=hanunoo' => '#/625',
+'sc=hatr' => '#/676',
+'sc=hatran' => '#/676',
'sc=hebr' => 'Scx/Hebr',
'sc=hebrew' => 'Scx/Hebr',
'sc=hira' => 'Sc/Hira',
'sc=hiragana' => 'Sc/Hira',
-'sc=hluw' => '#/657',
+'sc=hluw' => '#/677',
'sc=hmng' => 'Scx/Hmng',
'sc=hmnp' => 'Scx/Hmnp',
-'sc=hung' => '#/658',
-'sc=imperialaramaic' => '#/637',
+'sc=hung' => '#/678',
+'sc=imperialaramaic' => '#/656',
'sc=inherited' => 'Sc/Zinh',
-'sc=inscriptionalpahlavi' => '#/687',
-'sc=inscriptionalparthian' => '#/689',
-'sc=ital' => '#/659',
-'sc=java' => '#/607',
-'sc=javanese' => '#/607',
-'sc=kaithi' => '#/610',
-'sc=kali' => '#/608',
+'sc=inscriptionalpahlavi' => '#/710',
+'sc=inscriptionalparthian' => '#/712',
+'sc=ital' => '#/679',
+'sc=java' => '#/626',
+'sc=javanese' => '#/626',
+'sc=kaithi' => '#/629',
+'sc=kali' => '#/627',
'sc=kana' => 'Sc/Kana',
'sc=kannada' => 'Sc/Knda',
'sc=katakana' => 'Sc/Kana',
-'sc=kayahli' => '#/608',
+'sc=kawi' => '#/681',
+'sc=kayahli' => '#/627',
'sc=khar' => 'Scx/Khar',
'sc=kharoshthi' => 'Scx/Khar',
-'sc=khitansmallscript' => '#/661',
+'sc=khitansmallscript' => '#/682',
'sc=khmer' => 'Scx/Khmr',
'sc=khmr' => 'Scx/Khmr',
-'sc=khoj' => '#/609',
-'sc=khojki' => '#/609',
-'sc=khudawadi' => '#/622',
-'sc=kits' => '#/661',
+'sc=khoj' => '#/628',
+'sc=khojki' => '#/628',
+'sc=khudawadi' => '#/642',
+'sc=kits' => '#/682',
'sc=knda' => 'Sc/Knda',
-'sc=kthi' => '#/610',
+'sc=kthi' => '#/629',
'sc=lana' => 'Scx/Lana',
'sc=lao' => 'Scx/Lao',
'sc=laoo' => 'Scx/Lao',
'sc=latin' => 'Sc/Latn',
'sc=latn' => 'Sc/Latn',
-'sc=lepc' => '#/662',
-'sc=lepcha' => '#/662',
+'sc=lepc' => '#/683',
+'sc=lepcha' => '#/683',
'sc=limb' => 'Sc/Limb',
'sc=limbu' => 'Sc/Limb',
-'sc=lina' => '#/611',
+'sc=lina' => '#/630',
'sc=linb' => 'Sc/Linb',
-'sc=lineara' => '#/611',
+'sc=lineara' => '#/630',
'sc=linearb' => 'Sc/Linb',
-'sc=lisu' => '#/663',
-'sc=lyci' => '#/664',
-'sc=lycian' => '#/664',
-'sc=lydi' => '#/665',
-'sc=lydian' => '#/665',
-'sc=mahajani' => '#/612',
-'sc=mahj' => '#/612',
-'sc=maka' => '#/667',
-'sc=makasar' => '#/667',
+'sc=lisu' => '#/684',
+'sc=lyci' => '#/685',
+'sc=lycian' => '#/685',
+'sc=lydi' => '#/686',
+'sc=lydian' => '#/686',
+'sc=mahajani' => '#/631',
+'sc=mahj' => '#/631',
+'sc=maka' => '#/688',
+'sc=makasar' => '#/688',
'sc=malayalam' => 'Sc/Mlym',
-'sc=mand' => '#/613',
-'sc=mandaic' => '#/613',
-'sc=mani' => '#/614',
-'sc=manichaean' => '#/614',
-'sc=marc' => '#/670',
-'sc=marchen' => '#/670',
+'sc=mand' => '#/632',
+'sc=mandaic' => '#/632',
+'sc=mani' => '#/633',
+'sc=manichaean' => '#/633',
+'sc=marc' => '#/691',
+'sc=marchen' => '#/691',
'sc=masaramgondi' => 'Sc/Gonm',
-'sc=medefaidrin' => '#/671',
-'sc=medf' => '#/671',
-'sc=meeteimayek' => '#/676',
-'sc=mend' => '#/672',
-'sc=mendekikakui' => '#/672',
-'sc=merc' => '#/673',
-'sc=mero' => '#/402',
-'sc=meroiticcursive' => '#/673',
-'sc=meroitichieroglyphs' => '#/402',
-'sc=miao' => '#/674',
+'sc=medefaidrin' => '#/692',
+'sc=medf' => '#/692',
+'sc=meeteimayek' => '#/697',
+'sc=mend' => '#/693',
+'sc=mendekikakui' => '#/693',
+'sc=merc' => '#/694',
+'sc=mero' => '#/419',
+'sc=meroiticcursive' => '#/694',
+'sc=meroitichieroglyphs' => '#/419',
+'sc=miao' => '#/695',
'sc=mlym' => 'Sc/Mlym',
-'sc=modi' => '#/615',
+'sc=modi' => '#/634',
'sc=mong' => 'Sc/Mong',
'sc=mongolian' => 'Sc/Mong',
-'sc=mro' => '#/632',
-'sc=mroo' => '#/632',
-'sc=mtei' => '#/676',
+'sc=mro' => '#/652',
+'sc=mroo' => '#/652',
+'sc=mtei' => '#/697',
'sc=mult' => 'Sc/Mult',
'sc=multani' => 'Sc/Mult',
-'sc=myanmar' => '#/616',
-'sc=mymr' => '#/616',
-'sc=nabataean' => '#/677',
-'sc=nand' => '#/617',
-'sc=nandinagari' => '#/617',
-'sc=narb' => '#/371',
-'sc=nbat' => '#/677',
-'sc=newa' => '#/678',
+'sc=myanmar' => '#/635',
+'sc=mymr' => '#/635',
+'sc=nabataean' => '#/699',
+'sc=nagm' => '#/698',
+'sc=nagmundari' => '#/698',
+'sc=nand' => '#/636',
+'sc=nandinagari' => '#/636',
+'sc=narb' => '#/387',
+'sc=nbat' => '#/699',
+'sc=newa' => '#/700',
'sc=newtailue' => 'Scx/Talu',
-'sc=nko' => '#/633',
-'sc=nkoo' => '#/633',
-'sc=nshu' => '#/679',
-'sc=nushu' => '#/679',
+'sc=nko' => '#/616',
+'sc=nkoo' => '#/616',
+'sc=nshu' => '#/701',
+'sc=nushu' => '#/701',
'sc=nyiakengpuachuehmong' => 'Scx/Hmnp',
-'sc=ogam' => '#/680',
-'sc=ogham' => '#/680',
-'sc=olchiki' => '#/204',
-'sc=olck' => '#/204',
-'sc=oldhungarian' => '#/658',
-'sc=olditalic' => '#/659',
-'sc=oldnortharabian' => '#/371',
-'sc=oldpermic' => '#/618',
-'sc=oldpersian' => '#/710',
-'sc=oldsogdian' => '#/697',
-'sc=oldsoutharabian' => '#/372',
-'sc=oldturkic' => '#/681',
+'sc=ogam' => '#/702',
+'sc=ogham' => '#/702',
+'sc=olchiki' => '#/206',
+'sc=olck' => '#/206',
+'sc=oldhungarian' => '#/678',
+'sc=olditalic' => '#/679',
+'sc=oldnortharabian' => '#/387',
+'sc=oldpermic' => '#/638',
+'sc=oldpersian' => '#/735',
+'sc=oldsogdian' => '#/720',
+'sc=oldsoutharabian' => '#/388',
+'sc=oldturkic' => '#/703',
+'sc=olduyghur' => '#/637',
'sc=oriya' => 'Sc/Orya',
-'sc=orkh' => '#/681',
+'sc=orkh' => '#/703',
'sc=orya' => 'Sc/Orya',
-'sc=osage' => '#/682',
-'sc=osge' => '#/682',
-'sc=osma' => '#/683',
-'sc=osmanya' => '#/683',
+'sc=osage' => '#/704',
+'sc=osge' => '#/704',
+'sc=osma' => '#/705',
+'sc=osmanya' => '#/705',
+'sc=ougr' => '#/637',
'sc=pahawhhmong' => 'Scx/Hmng',
-'sc=palm' => '#/271',
-'sc=palmyrene' => '#/271',
-'sc=pauc' => '#/684',
-'sc=paucinhau' => '#/684',
-'sc=perm' => '#/618',
-'sc=phag' => '#/619',
-'sc=phagspa' => '#/619',
-'sc=phli' => '#/687',
-'sc=phlp' => '#/620',
-'sc=phnx' => '#/688',
-'sc=phoenician' => '#/688',
-'sc=plrd' => '#/674',
-'sc=prti' => '#/689',
-'sc=psalterpahlavi' => '#/620',
-'sc=qaac' => '#/604',
+'sc=palm' => '#/279',
+'sc=palmyrene' => '#/279',
+'sc=pauc' => '#/707',
+'sc=paucinhau' => '#/707',
+'sc=perm' => '#/638',
+'sc=phag' => '#/639',
+'sc=phagspa' => '#/639',
+'sc=phli' => '#/710',
+'sc=phlp' => '#/640',
+'sc=phnx' => '#/711',
+'sc=phoenician' => '#/711',
+'sc=plrd' => '#/695',
+'sc=prti' => '#/712',
+'sc=psalterpahlavi' => '#/640',
+'sc=qaac' => '#/622',
'sc=qaai' => 'Sc/Zinh',
-'sc=rejang' => '#/690',
-'sc=rjng' => '#/690',
-'sc=rohg' => '#/621',
-'sc=runic' => '#/691',
-'sc=runr' => '#/691',
-'sc=samaritan' => '#/692',
-'sc=samr' => '#/692',
-'sc=sarb' => '#/372',
-'sc=saur' => '#/693',
-'sc=saurashtra' => '#/693',
-'sc=sgnw' => '#/694',
-'sc=sharada' => '#/207',
-'sc=shavian' => '#/208',
-'sc=shaw' => '#/208',
-'sc=shrd' => '#/207',
-'sc=sidd' => '#/695',
-'sc=siddham' => '#/695',
-'sc=signwriting' => '#/694',
-'sc=sind' => '#/622',
+'sc=rejang' => '#/713',
+'sc=rjng' => '#/713',
+'sc=rohg' => '#/641',
+'sc=runic' => '#/714',
+'sc=runr' => '#/714',
+'sc=samaritan' => '#/715',
+'sc=samr' => '#/715',
+'sc=sarb' => '#/388',
+'sc=saur' => '#/716',
+'sc=saurashtra' => '#/716',
+'sc=sgnw' => '#/717',
+'sc=sharada' => '#/209',
+'sc=shavian' => '#/210',
+'sc=shaw' => '#/210',
+'sc=shrd' => '#/209',
+'sc=sidd' => '#/718',
+'sc=siddham' => '#/718',
+'sc=signwriting' => '#/717',
+'sc=sind' => '#/642',
'sc=sinh' => 'Sc/Sinh',
'sc=sinhala' => 'Sc/Sinh',
-'sc=sogd' => '#/623',
-'sc=sogdian' => '#/623',
-'sc=sogo' => '#/697',
-'sc=sora' => '#/698',
-'sc=sorasompeng' => '#/698',
-'sc=soyo' => '#/699',
-'sc=soyombo' => '#/699',
-'sc=sund' => '#/700',
-'sc=sundanese' => '#/700',
-'sc=sylo' => '#/624',
-'sc=sylotinagri' => '#/624',
+'sc=sogd' => '#/643',
+'sc=sogdian' => '#/643',
+'sc=sogo' => '#/720',
+'sc=sora' => '#/721',
+'sc=sorasompeng' => '#/721',
+'sc=soyo' => '#/722',
+'sc=soyombo' => '#/722',
+'sc=sund' => '#/723',
+'sc=sundanese' => '#/723',
+'sc=sylo' => '#/644',
+'sc=sylotinagri' => '#/644',
'sc=syrc' => 'Sc/Syrc',
'sc=syriac' => 'Sc/Syrc',
-'sc=tagalog' => '#/628',
-'sc=tagb' => '#/625',
-'sc=tagbanwa' => '#/625',
-'sc=taile' => '#/627',
+'sc=tagalog' => '#/648',
+'sc=tagb' => '#/645',
+'sc=tagbanwa' => '#/645',
+'sc=taile' => '#/647',
'sc=taitham' => 'Scx/Lana',
-'sc=taiviet' => '#/703',
-'sc=takr' => '#/626',
-'sc=takri' => '#/626',
-'sc=tale' => '#/627',
+'sc=taiviet' => '#/726',
+'sc=takr' => '#/646',
+'sc=takri' => '#/646',
+'sc=tale' => '#/647',
'sc=talu' => 'Scx/Talu',
'sc=tamil' => 'Sc/Taml',
'sc=taml' => 'Sc/Taml',
'sc=tang' => 'Scx/Tang',
+'sc=tangsa' => '#/730',
'sc=tangut' => 'Scx/Tang',
-'sc=tavt' => '#/703',
+'sc=tavt' => '#/726',
'sc=telu' => 'Sc/Telu',
'sc=telugu' => 'Sc/Telu',
-'sc=tfng' => '#/704',
-'sc=tglg' => '#/628',
-'sc=thaa' => '#/629',
-'sc=thaana' => '#/629',
-'sc=thai' => '#/706',
+'sc=tfng' => '#/727',
+'sc=tglg' => '#/648',
+'sc=thaa' => '#/649',
+'sc=thaana' => '#/649',
+'sc=thai' => '#/729',
'sc=tibetan' => 'Scx/Tibt',
'sc=tibt' => 'Scx/Tibt',
-'sc=tifinagh' => '#/704',
-'sc=tirh' => '#/630',
-'sc=tirhuta' => '#/630',
-'sc=ugar' => '#/707',
-'sc=ugaritic' => '#/707',
+'sc=tifinagh' => '#/727',
+'sc=tirh' => '#/650',
+'sc=tirhuta' => '#/650',
+'sc=tnsa' => '#/730',
+'sc=toto' => '#/731',
+'sc=ugar' => '#/732',
+'sc=ugaritic' => '#/732',
'sc=unknown' => 'Scx/Zzzz',
-'sc=vai' => '#/634',
-'sc=vaii' => '#/634',
-'sc=wancho' => '#/709',
-'sc=wara' => '#/708',
-'sc=warangciti' => '#/708',
-'sc=wcho' => '#/709',
-'sc=xpeo' => '#/710',
+'sc=vai' => '#/653',
+'sc=vaii' => '#/653',
+'sc=vith' => 'Scx/Vith',
+'sc=vithkuqi' => 'Scx/Vith',
+'sc=wancho' => '#/734',
+'sc=wara' => '#/733',
+'sc=warangciti' => '#/733',
+'sc=wcho' => '#/734',
+'sc=xpeo' => '#/735',
'sc=xsux' => 'Scx/Xsux',
-'sc=yezi' => '#/631',
-'sc=yezidi' => '#/631',
-'sc=yi' => '#/598',
-'sc=yiii' => '#/598',
-'sc=zanabazarsquare' => '#/711',
-'sc=zanb' => '#/711',
+'sc=yezi' => '#/651',
+'sc=yezidi' => '#/651',
+'sc=yi' => '#/615',
+'sc=yiii' => '#/615',
+'sc=zanabazarsquare' => '#/736',
+'sc=zanb' => '#/736',
'sc=zinh' => 'Sc/Zinh',
'sc=zyyy' => 'Sc/Zyyy',
'sc=zzzz' => 'Scx/Zzzz',
'scx=adlam' => 'Scx/Adlm',
'scx=adlm' => 'Scx/Adlm',
-'scx=aghb' => '#/635',
-'scx=ahom' => '#/636',
-'scx=anatolianhieroglyphs' => '#/657',
+'scx=aghb' => '#/654',
+'scx=ahom' => '#/655',
+'scx=anatolianhieroglyphs' => '#/677',
'scx=arab' => 'Scx/Arab',
'scx=arabic' => 'Scx/Arab',
'scx=armenian' => 'Scx/Armn',
-'scx=armi' => '#/637',
+'scx=armi' => '#/656',
'scx=armn' => 'Scx/Armn',
-'scx=avestan' => '#/638',
-'scx=avst' => '#/638',
-'scx=bali' => '#/639',
-'scx=balinese' => '#/639',
-'scx=bamu' => '#/640',
-'scx=bamum' => '#/640',
-'scx=bass' => '#/641',
-'scx=bassavah' => '#/641',
-'scx=batak' => '#/642',
-'scx=batk' => '#/642',
+'scx=avestan' => '#/657',
+'scx=avst' => '#/657',
+'scx=bali' => '#/658',
+'scx=balinese' => '#/658',
+'scx=bamu' => '#/659',
+'scx=bamum' => '#/659',
+'scx=bass' => '#/660',
+'scx=bassavah' => '#/660',
+'scx=batak' => '#/661',
+'scx=batk' => '#/661',
'scx=beng' => 'Scx/Beng',
'scx=bengali' => 'Scx/Beng',
'scx=bhaiksuki' => 'Scx/Bhks',
'scx=bhks' => 'Scx/Bhks',
'scx=bopo' => 'Scx/Bopo',
'scx=bopomofo' => 'Scx/Bopo',
-'scx=brah' => '#/643',
-'scx=brahmi' => '#/643',
-'scx=brai' => '#/180',
-'scx=braille' => '#/180',
-'scx=bugi' => '#/644',
-'scx=buginese' => '#/644',
-'scx=buhd' => '#/645',
-'scx=buhid' => '#/645',
+'scx=brah' => '#/662',
+'scx=brahmi' => '#/662',
+'scx=brai' => '#/181',
+'scx=braille' => '#/181',
+'scx=bugi' => '#/663',
+'scx=buginese' => '#/663',
+'scx=buhd' => '#/664',
+'scx=buhid' => '#/664',
'scx=cakm' => 'Scx/Cakm',
-'scx=canadianaboriginal' => '#/646',
-'scx=cans' => '#/646',
-'scx=cari' => '#/647',
-'scx=carian' => '#/647',
-'scx=caucasianalbanian' => '#/635',
+'scx=canadianaboriginal' => '#/665',
+'scx=cans' => '#/665',
+'scx=cari' => '#/666',
+'scx=carian' => '#/666',
+'scx=caucasianalbanian' => '#/654',
'scx=chakma' => 'Scx/Cakm',
'scx=cham' => 'Scx/Cham',
-'scx=cher' => '#/648',
-'scx=cherokee' => '#/648',
-'scx=chorasmian' => '#/649',
-'scx=chrs' => '#/649',
+'scx=cher' => '#/667',
+'scx=cherokee' => '#/667',
+'scx=chorasmian' => '#/668',
+'scx=chrs' => '#/668',
'scx=common' => 'Scx/Zyyy',
'scx=copt' => 'Scx/Copt',
'scx=coptic' => 'Scx/Copt',
+'scx=cpmn' => '#/669',
'scx=cprt' => 'Scx/Cprt',
'scx=cuneiform' => 'Scx/Xsux',
'scx=cypriot' => 'Scx/Cprt',
+'scx=cyprominoan' => '#/669',
'scx=cyrillic' => 'Scx/Cyrl',
'scx=cyrl' => 'Scx/Cyrl',
-'scx=deseret' => '#/188',
+'scx=deseret' => '#/190',
'scx=deva' => 'Scx/Deva',
'scx=devanagari' => 'Scx/Deva',
'scx=diak' => 'Scx/Diak',
'scx=divesakuru' => 'Scx/Diak',
-'scx=dogr' => '#/650',
-'scx=dogra' => '#/650',
-'scx=dsrt' => '#/188',
+'scx=dogr' => '#/670',
+'scx=dogra' => '#/670',
+'scx=dsrt' => '#/190',
'scx=dupl' => 'Scx/Dupl',
'scx=duployan' => 'Scx/Dupl',
-'scx=egyp' => '#/651',
-'scx=egyptianhieroglyphs' => '#/651',
-'scx=elba' => '#/652',
-'scx=elbasan' => '#/652',
-'scx=elym' => '#/653',
-'scx=elymaic' => '#/653',
+'scx=egyp' => '#/671',
+'scx=egyptianhieroglyphs' => '#/671',
+'scx=elba' => '#/672',
+'scx=elbasan' => '#/672',
+'scx=elym' => '#/673',
+'scx=elymaic' => '#/673',
'scx=ethi' => 'Scx/Ethi',
'scx=ethiopic' => 'Scx/Ethi',
'scx=geor' => 'Scx/Geor',
@@ -6813,8 +7033,8 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'scx=glagolitic' => 'Scx/Glag',
'scx=gong' => 'Scx/Gong',
'scx=gonm' => 'Scx/Gonm',
-'scx=goth' => '#/654',
-'scx=gothic' => '#/654',
+'scx=goth' => '#/674',
+'scx=gothic' => '#/674',
'scx=gran' => 'Scx/Gran',
'scx=grantha' => 'Scx/Gran',
'scx=greek' => 'Scx/Grek',
@@ -6829,40 +7049,41 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'scx=hangul' => 'Scx/Hang',
'scx=hani' => 'Scx/Han',
'scx=hanifirohingya' => 'Scx/Rohg',
-'scx=hano' => '#/655',
-'scx=hanunoo' => '#/655',
-'scx=hatr' => '#/656',
-'scx=hatran' => '#/656',
+'scx=hano' => '#/675',
+'scx=hanunoo' => '#/675',
+'scx=hatr' => '#/676',
+'scx=hatran' => '#/676',
'scx=hebr' => 'Scx/Hebr',
'scx=hebrew' => 'Scx/Hebr',
'scx=hira' => 'Scx/Hira',
'scx=hiragana' => 'Scx/Hira',
-'scx=hluw' => '#/657',
+'scx=hluw' => '#/677',
'scx=hmng' => 'Scx/Hmng',
'scx=hmnp' => 'Scx/Hmnp',
-'scx=hung' => '#/658',
-'scx=imperialaramaic' => '#/637',
+'scx=hung' => '#/678',
+'scx=imperialaramaic' => '#/656',
'scx=inherited' => 'Scx/Zinh',
-'scx=inscriptionalpahlavi' => '#/687',
-'scx=inscriptionalparthian' => '#/689',
-'scx=ital' => '#/659',
-'scx=java' => '#/660',
-'scx=javanese' => '#/660',
+'scx=inscriptionalpahlavi' => '#/710',
+'scx=inscriptionalparthian' => '#/712',
+'scx=ital' => '#/679',
+'scx=java' => '#/680',
+'scx=javanese' => '#/680',
'scx=kaithi' => 'Scx/Kthi',
-'scx=kali' => '#/195',
+'scx=kali' => '#/197',
'scx=kana' => 'Scx/Kana',
'scx=kannada' => 'Scx/Knda',
'scx=katakana' => 'Scx/Kana',
-'scx=kayahli' => '#/195',
+'scx=kawi' => '#/681',
+'scx=kayahli' => '#/197',
'scx=khar' => 'Scx/Khar',
'scx=kharoshthi' => 'Scx/Khar',
-'scx=khitansmallscript' => '#/661',
+'scx=khitansmallscript' => '#/682',
'scx=khmer' => 'Scx/Khmr',
'scx=khmr' => 'Scx/Khmr',
'scx=khoj' => 'Scx/Khoj',
'scx=khojki' => 'Scx/Khoj',
'scx=khudawadi' => 'Scx/Sind',
-'scx=kits' => '#/661',
+'scx=kits' => '#/682',
'scx=knda' => 'Scx/Knda',
'scx=kthi' => 'Scx/Kthi',
'scx=lana' => 'Scx/Lana',
@@ -6870,178 +7091,187 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'scx=laoo' => 'Scx/Lao',
'scx=latin' => 'Scx/Latn',
'scx=latn' => 'Scx/Latn',
-'scx=lepc' => '#/662',
-'scx=lepcha' => '#/662',
+'scx=lepc' => '#/683',
+'scx=lepcha' => '#/683',
'scx=limb' => 'Scx/Limb',
'scx=limbu' => 'Scx/Limb',
'scx=lina' => 'Scx/Lina',
'scx=linb' => 'Scx/Linb',
'scx=lineara' => 'Scx/Lina',
'scx=linearb' => 'Scx/Linb',
-'scx=lisu' => '#/663',
-'scx=lyci' => '#/664',
-'scx=lycian' => '#/664',
-'scx=lydi' => '#/665',
-'scx=lydian' => '#/665',
-'scx=mahajani' => '#/666',
-'scx=mahj' => '#/666',
-'scx=maka' => '#/667',
-'scx=makasar' => '#/667',
+'scx=lisu' => '#/684',
+'scx=lyci' => '#/685',
+'scx=lycian' => '#/685',
+'scx=lydi' => '#/686',
+'scx=lydian' => '#/686',
+'scx=mahajani' => '#/687',
+'scx=mahj' => '#/687',
+'scx=maka' => '#/688',
+'scx=makasar' => '#/688',
'scx=malayalam' => 'Scx/Mlym',
-'scx=mand' => '#/668',
-'scx=mandaic' => '#/668',
-'scx=mani' => '#/669',
-'scx=manichaean' => '#/669',
-'scx=marc' => '#/670',
-'scx=marchen' => '#/670',
+'scx=mand' => '#/689',
+'scx=mandaic' => '#/689',
+'scx=mani' => '#/690',
+'scx=manichaean' => '#/690',
+'scx=marc' => '#/691',
+'scx=marchen' => '#/691',
'scx=masaramgondi' => 'Scx/Gonm',
-'scx=medefaidrin' => '#/671',
-'scx=medf' => '#/671',
-'scx=meeteimayek' => '#/676',
-'scx=mend' => '#/672',
-'scx=mendekikakui' => '#/672',
-'scx=merc' => '#/673',
-'scx=mero' => '#/402',
-'scx=meroiticcursive' => '#/673',
-'scx=meroitichieroglyphs' => '#/402',
-'scx=miao' => '#/674',
+'scx=medefaidrin' => '#/692',
+'scx=medf' => '#/692',
+'scx=meeteimayek' => '#/697',
+'scx=mend' => '#/693',
+'scx=mendekikakui' => '#/693',
+'scx=merc' => '#/694',
+'scx=mero' => '#/419',
+'scx=meroiticcursive' => '#/694',
+'scx=meroitichieroglyphs' => '#/419',
+'scx=miao' => '#/695',
'scx=mlym' => 'Scx/Mlym',
-'scx=modi' => '#/675',
+'scx=modi' => '#/696',
'scx=mong' => 'Scx/Mong',
'scx=mongolian' => 'Scx/Mong',
-'scx=mro' => '#/632',
-'scx=mroo' => '#/632',
-'scx=mtei' => '#/676',
+'scx=mro' => '#/652',
+'scx=mroo' => '#/652',
+'scx=mtei' => '#/697',
'scx=mult' => 'Scx/Mult',
'scx=multani' => 'Scx/Mult',
'scx=myanmar' => 'Scx/Mymr',
'scx=mymr' => 'Scx/Mymr',
-'scx=nabataean' => '#/677',
+'scx=nabataean' => '#/699',
+'scx=nagm' => '#/698',
+'scx=nagmundari' => '#/698',
'scx=nand' => 'Scx/Nand',
'scx=nandinagari' => 'Scx/Nand',
-'scx=narb' => '#/371',
-'scx=nbat' => '#/677',
-'scx=newa' => '#/678',
+'scx=narb' => '#/387',
+'scx=nbat' => '#/699',
+'scx=newa' => '#/700',
'scx=newtailue' => 'Scx/Talu',
-'scx=nko' => '#/633',
-'scx=nkoo' => '#/633',
-'scx=nshu' => '#/679',
-'scx=nushu' => '#/679',
+'scx=nko' => 'Scx/Nko',
+'scx=nkoo' => 'Scx/Nko',
+'scx=nshu' => '#/701',
+'scx=nushu' => '#/701',
'scx=nyiakengpuachuehmong' => 'Scx/Hmnp',
-'scx=ogam' => '#/680',
-'scx=ogham' => '#/680',
-'scx=olchiki' => '#/204',
-'scx=olck' => '#/204',
-'scx=oldhungarian' => '#/658',
-'scx=olditalic' => '#/659',
-'scx=oldnortharabian' => '#/371',
-'scx=oldpermic' => '#/685',
-'scx=oldpersian' => '#/710',
-'scx=oldsogdian' => '#/697',
-'scx=oldsoutharabian' => '#/372',
-'scx=oldturkic' => '#/681',
+'scx=ogam' => '#/702',
+'scx=ogham' => '#/702',
+'scx=olchiki' => '#/206',
+'scx=olck' => '#/206',
+'scx=oldhungarian' => '#/678',
+'scx=olditalic' => '#/679',
+'scx=oldnortharabian' => '#/387',
+'scx=oldpermic' => '#/708',
+'scx=oldpersian' => '#/735',
+'scx=oldsogdian' => '#/720',
+'scx=oldsoutharabian' => '#/388',
+'scx=oldturkic' => '#/703',
+'scx=olduyghur' => '#/706',
'scx=oriya' => 'Scx/Orya',
-'scx=orkh' => '#/681',
+'scx=orkh' => '#/703',
'scx=orya' => 'Scx/Orya',
-'scx=osage' => '#/682',
-'scx=osge' => '#/682',
-'scx=osma' => '#/683',
-'scx=osmanya' => '#/683',
+'scx=osage' => '#/704',
+'scx=osge' => '#/704',
+'scx=osma' => '#/705',
+'scx=osmanya' => '#/705',
+'scx=ougr' => '#/706',
'scx=pahawhhmong' => 'Scx/Hmng',
-'scx=palm' => '#/271',
-'scx=palmyrene' => '#/271',
-'scx=pauc' => '#/684',
-'scx=paucinhau' => '#/684',
-'scx=perm' => '#/685',
-'scx=phag' => '#/686',
-'scx=phagspa' => '#/686',
-'scx=phli' => '#/687',
+'scx=palm' => '#/279',
+'scx=palmyrene' => '#/279',
+'scx=pauc' => '#/707',
+'scx=paucinhau' => '#/707',
+'scx=perm' => '#/708',
+'scx=phag' => '#/709',
+'scx=phagspa' => '#/709',
+'scx=phli' => '#/710',
'scx=phlp' => 'Scx/Phlp',
-'scx=phnx' => '#/688',
-'scx=phoenician' => '#/688',
-'scx=plrd' => '#/674',
-'scx=prti' => '#/689',
+'scx=phnx' => '#/711',
+'scx=phoenician' => '#/711',
+'scx=plrd' => '#/695',
+'scx=prti' => '#/712',
'scx=psalterpahlavi' => 'Scx/Phlp',
'scx=qaac' => 'Scx/Copt',
'scx=qaai' => 'Scx/Zinh',
-'scx=rejang' => '#/690',
-'scx=rjng' => '#/690',
+'scx=rejang' => '#/713',
+'scx=rjng' => '#/713',
'scx=rohg' => 'Scx/Rohg',
-'scx=runic' => '#/691',
-'scx=runr' => '#/691',
-'scx=samaritan' => '#/692',
-'scx=samr' => '#/692',
-'scx=sarb' => '#/372',
-'scx=saur' => '#/693',
-'scx=saurashtra' => '#/693',
-'scx=sgnw' => '#/694',
+'scx=runic' => '#/714',
+'scx=runr' => '#/714',
+'scx=samaritan' => '#/715',
+'scx=samr' => '#/715',
+'scx=sarb' => '#/388',
+'scx=saur' => '#/716',
+'scx=saurashtra' => '#/716',
+'scx=sgnw' => '#/717',
'scx=sharada' => 'Scx/Shrd',
-'scx=shavian' => '#/208',
-'scx=shaw' => '#/208',
+'scx=shavian' => '#/210',
+'scx=shaw' => '#/210',
'scx=shrd' => 'Scx/Shrd',
-'scx=sidd' => '#/695',
-'scx=siddham' => '#/695',
-'scx=signwriting' => '#/694',
+'scx=sidd' => '#/718',
+'scx=siddham' => '#/718',
+'scx=signwriting' => '#/717',
'scx=sind' => 'Scx/Sind',
'scx=sinh' => 'Scx/Sinh',
'scx=sinhala' => 'Scx/Sinh',
-'scx=sogd' => '#/696',
-'scx=sogdian' => '#/696',
-'scx=sogo' => '#/697',
-'scx=sora' => '#/698',
-'scx=sorasompeng' => '#/698',
-'scx=soyo' => '#/699',
-'scx=soyombo' => '#/699',
-'scx=sund' => '#/700',
-'scx=sundanese' => '#/700',
-'scx=sylo' => '#/701',
-'scx=sylotinagri' => '#/701',
+'scx=sogd' => '#/719',
+'scx=sogdian' => '#/719',
+'scx=sogo' => '#/720',
+'scx=sora' => '#/721',
+'scx=sorasompeng' => '#/721',
+'scx=soyo' => '#/722',
+'scx=soyombo' => '#/722',
+'scx=sund' => '#/723',
+'scx=sundanese' => '#/723',
+'scx=sylo' => '#/724',
+'scx=sylotinagri' => '#/724',
'scx=syrc' => 'Scx/Syrc',
'scx=syriac' => 'Scx/Syrc',
-'scx=tagalog' => '#/705',
+'scx=tagalog' => '#/728',
'scx=tagb' => 'Scx/Tagb',
'scx=tagbanwa' => 'Scx/Tagb',
-'scx=taile' => '#/702',
+'scx=taile' => '#/725',
'scx=taitham' => 'Scx/Lana',
-'scx=taiviet' => '#/703',
+'scx=taiviet' => '#/726',
'scx=takr' => 'Scx/Takr',
'scx=takri' => 'Scx/Takr',
-'scx=tale' => '#/702',
+'scx=tale' => '#/725',
'scx=talu' => 'Scx/Talu',
'scx=tamil' => 'Scx/Taml',
'scx=taml' => 'Scx/Taml',
'scx=tang' => 'Scx/Tang',
+'scx=tangsa' => '#/730',
'scx=tangut' => 'Scx/Tang',
-'scx=tavt' => '#/703',
+'scx=tavt' => '#/726',
'scx=telu' => 'Scx/Telu',
'scx=telugu' => 'Scx/Telu',
-'scx=tfng' => '#/704',
-'scx=tglg' => '#/705',
+'scx=tfng' => '#/727',
+'scx=tglg' => '#/728',
'scx=thaa' => 'Scx/Thaa',
'scx=thaana' => 'Scx/Thaa',
-'scx=thai' => '#/706',
+'scx=thai' => '#/729',
'scx=tibetan' => 'Scx/Tibt',
'scx=tibt' => 'Scx/Tibt',
-'scx=tifinagh' => '#/704',
+'scx=tifinagh' => '#/727',
'scx=tirh' => 'Scx/Tirh',
'scx=tirhuta' => 'Scx/Tirh',
-'scx=ugar' => '#/707',
-'scx=ugaritic' => '#/707',
+'scx=tnsa' => '#/730',
+'scx=toto' => '#/731',
+'scx=ugar' => '#/732',
+'scx=ugaritic' => '#/732',
'scx=unknown' => 'Scx/Zzzz',
-'scx=vai' => '#/634',
-'scx=vaii' => '#/634',
-'scx=wancho' => '#/709',
-'scx=wara' => '#/708',
-'scx=warangciti' => '#/708',
-'scx=wcho' => '#/709',
-'scx=xpeo' => '#/710',
+'scx=vai' => '#/653',
+'scx=vaii' => '#/653',
+'scx=vith' => 'Scx/Vith',
+'scx=vithkuqi' => 'Scx/Vith',
+'scx=wancho' => '#/734',
+'scx=wara' => '#/733',
+'scx=warangciti' => '#/733',
+'scx=wcho' => '#/734',
+'scx=xpeo' => '#/735',
'scx=xsux' => 'Scx/Xsux',
'scx=yezi' => 'Scx/Yezi',
'scx=yezidi' => 'Scx/Yezi',
'scx=yi' => 'Scx/Yi',
'scx=yiii' => 'Scx/Yi',
-'scx=zanabazarsquare' => '#/711',
-'scx=zanb' => '#/711',
+'scx=zanabazarsquare' => '#/736',
+'scx=zanb' => '#/736',
'scx=zinh' => 'Scx/Zinh',
'scx=zyyy' => 'Scx/Zyyy',
'scx=zzzz' => 'Scx/Zzzz',
@@ -7056,40 +7286,40 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'sd=yes' => 'SD/Y',
'sentenceterminal' => 'STerm/Y',
'separator' => 'Gc/Z',
-'sgnw' => '#/694',
+'sgnw' => '#/717',
'sharada' => 'Scx/Shrd',
-'shavian' => '#/208',
-'shaw' => '#/208',
-'shorthandformatcontrols' => '#/414',
+'shavian' => '#/210',
+'shaw' => '#/210',
+'shorthandformatcontrols' => '#/431',
'shrd' => 'Scx/Shrd',
-'sidd' => '#/695',
-'siddham' => '#/695',
-'signwriting' => '#/694',
+'sidd' => '#/718',
+'siddham' => '#/718',
+'signwriting' => '#/717',
'sind' => 'Scx/Sind',
'sinh' => 'Scx/Sinh',
'sinhala' => 'Scx/Sinh',
-'sinhalaarchaicnumbers' => '#/409',
+'sinhalaarchaicnumbers' => '#/426',
'sk' => 'Gc/Sk',
'sm' => 'Gc/Sm',
-'smallforms' => '#/295',
-'smallformvariants' => '#/295',
-'smallkanaext' => '#/341',
-'smallkanaextension' => '#/341',
+'smallforms' => '#/306',
+'smallformvariants' => '#/306',
+'smallkanaext' => '#/355',
+'smallkanaextension' => '#/355',
'so' => 'Gc/So',
'softdotted' => 'SD/Y',
-'sogd' => '#/696',
-'sogdian' => '#/696',
-'sogo' => '#/697',
-'sora' => '#/698',
-'sorasompeng' => '#/698',
-'soyo' => '#/699',
-'soyombo' => '#/699',
+'sogd' => '#/719',
+'sogdian' => '#/719',
+'sogo' => '#/720',
+'sora' => '#/721',
+'sorasompeng' => '#/721',
+'soyo' => '#/722',
+'soyombo' => '#/722',
'space' => 'Perl/SpacePer',
'spaceperl' => 'Perl/SpacePer',
'spaceseparator' => 'Gc/Zs',
'spacingmark' => 'Gc/Mc',
-'spacingmodifierletters' => '#/370',
-'specials' => '#/244',
+'spacingmodifierletters' => '#/386',
+'specials' => '#/247',
'sterm' => 'STerm/Y',
'sterm=f' => '!STerm/Y',
'sterm=false' => '!STerm/Y',
@@ -7099,63 +7329,64 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'sterm=true' => 'STerm/Y',
'sterm=y' => 'STerm/Y',
'sterm=yes' => 'STerm/Y',
-'sund' => '#/700',
-'sundanese' => '#/700',
-'sundanesesup' => '#/342',
-'sundanesesupplement' => '#/342',
-'suparrowsa' => '#/296',
-'suparrowsb' => '#/297',
-'suparrowsc' => '#/298',
-'superandsub' => '#/322',
-'superscriptsandsubscripts' => '#/322',
-'supmathoperators' => '#/385',
-'supplementalarrowsa' => '#/296',
-'supplementalarrowsb' => '#/297',
-'supplementalarrowsc' => '#/298',
-'supplementalmathematicaloperators' => '#/385',
-'supplementalpunctuation' => '#/361',
-'supplementalsymbolsandpictographs' => '#/415',
-'supplementaryprivateuseareaa' => '#/213',
-'supplementaryprivateuseareab' => '#/214',
-'suppuaa' => '#/213',
-'suppuab' => '#/214',
-'suppunctuation' => '#/361',
-'supsymbolsandpictographs' => '#/415',
+'sund' => '#/723',
+'sundanese' => '#/723',
+'sundanesesup' => '#/356',
+'sundanesesupplement' => '#/356',
+'suparrowsa' => '#/307',
+'suparrowsb' => '#/308',
+'suparrowsc' => '#/309',
+'superandsub' => '#/334',
+'superscriptsandsubscripts' => '#/334',
+'supmathoperators' => '#/402',
+'supplementalarrowsa' => '#/307',
+'supplementalarrowsb' => '#/308',
+'supplementalarrowsc' => '#/309',
+'supplementalmathematicaloperators' => '#/402',
+'supplementalpunctuation' => '#/377',
+'supplementalsymbolsandpictographs' => '#/432',
+'supplementaryprivateuseareaa' => '#/215',
+'supplementaryprivateuseareab' => '#/216',
+'suppuaa' => '#/215',
+'suppuab' => '#/216',
+'suppunctuation' => '#/377',
+'supsymbolsandpictographs' => '#/432',
'surrogate' => '#/14',
-'suttonsignwriting' => '#/392',
-'sylo' => '#/701',
-'sylotinagri' => '#/701',
+'suttonsignwriting' => '#/409',
+'sylo' => '#/724',
+'sylotinagri' => '#/724',
'symbol' => 'Gc/S',
-'symbolsandpictographsexta' => '#/416',
-'symbolsandpictographsextendeda' => '#/416',
-'symbolsforlegacycomputing' => '#/417',
+'symbolsandpictographsexta' => '#/433',
+'symbolsandpictographsextendeda' => '#/433',
+'symbolsforlegacycomputing' => '#/434',
'syrc' => 'Scx/Syrc',
'syriac' => 'Scx/Syrc',
-'syriacsup' => '#/275',
-'syriacsupplement' => '#/275',
-'tagalog' => '#/705',
+'syriacsup' => '#/283',
+'syriacsupplement' => '#/283',
+'tagalog' => '#/728',
'tagb' => 'Scx/Tagb',
'tagbanwa' => 'Scx/Tagb',
-'tags' => '#/128',
-'taile' => '#/702',
+'tags' => '#/127',
+'taile' => '#/725',
'taitham' => 'Scx/Lana',
-'taiviet' => '#/703',
-'taixuanjing' => '#/324',
-'taixuanjingsymbols' => '#/324',
+'taiviet' => '#/726',
+'taixuanjing' => '#/336',
+'taixuanjingsymbols' => '#/336',
'takr' => 'Scx/Takr',
'takri' => 'Scx/Takr',
-'tale' => '#/702',
+'tale' => '#/725',
'talu' => 'Scx/Talu',
'tamil' => 'Scx/Taml',
-'tamilsup' => '#/246',
-'tamilsupplement' => '#/246',
+'tamilsup' => '#/249',
+'tamilsupplement' => '#/249',
'taml' => 'Scx/Taml',
'tang' => 'Scx/Tang',
+'tangsa' => '#/730',
'tangut' => 'Scx/Tang',
-'tangutcomponents' => '#/386',
-'tangutsup' => '#/276',
-'tangutsupplement' => '#/276',
-'tavt' => '#/703',
+'tangutcomponents' => '#/403',
+'tangutsup' => '#/284',
+'tangutsupplement' => '#/284',
+'tavt' => '#/726',
'telu' => 'Scx/Telu',
'telugu' => 'Scx/Telu',
'term' => 'Term/Y',
@@ -7168,25 +7399,28 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'term=y' => 'Term/Y',
'term=yes' => 'Term/Y',
'terminalpunctuation' => 'Term/Y',
-'tfng' => '#/704',
-'tglg' => '#/705',
+'tfng' => '#/727',
+'tglg' => '#/728',
'thaa' => 'Scx/Thaa',
'thaana' => 'Scx/Thaa',
-'thai' => '#/706',
+'thai' => '#/729',
'tibetan' => 'Scx/Tibt',
'tibt' => 'Scx/Tibt',
-'tifinagh' => '#/704',
+'tifinagh' => '#/727',
'tirh' => 'Scx/Tirh',
'tirhuta' => 'Scx/Tirh',
'title' => 'Perl/Title',
'titlecase' => 'Perl/Title',
'titlecaseletter' => 'Perl/Title',
-'transportandmap' => '#/373',
-'transportandmapsymbols' => '#/373',
+'tnsa' => '#/730',
+'toto' => '#/731',
+'transportandmap' => '#/389',
+'transportandmapsymbols' => '#/389',
'ucas' => '#/130',
-'ucasext' => '#/220',
-'ugar' => '#/707',
-'ugaritic' => '#/707',
+'ucasext' => '#/222',
+'ucasexta' => '#/251',
+'ugar' => '#/732',
+'ugaritic' => '#/732',
'uideo' => 'UIdeo/Y',
'uideo=f' => '!UIdeo/Y',
'uideo=false' => '!UIdeo/Y',
@@ -7199,7 +7433,8 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'unassigned' => 'Gc/Cn',
'unicode' => '#/2',
'unifiedcanadianaboriginalsyllabics' => '#/130',
-'unifiedcanadianaboriginalsyllabicsextended' => '#/220',
+'unifiedcanadianaboriginalsyllabicsextended' => '#/222',
+'unifiedcanadianaboriginalsyllabicsextendeda' => '#/251',
'unifiedideograph' => 'UIdeo/Y',
'unknown' => 'Scx/Zzzz',
'upper' => 'Upper/Y',
@@ -7213,15 +7448,17 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'upper=yes' => 'Upper/Y',
'uppercase' => 'Upper/Y',
'uppercaseletter' => 'Gc/Lu',
-'vai' => '#/634',
-'vaii' => '#/634',
-'variationselector' => '#/93',
-'variationselectors' => '#/111',
+'vai' => '#/653',
+'vaii' => '#/653',
+'variationselector' => 'VS/Y',
+'variationselectors' => '#/109',
'variationselectorssupplement' => '#/149',
-'vedicext' => '#/249',
-'vedicextensions' => '#/249',
-'verticalforms' => '#/351',
+'vedicext' => '#/253',
+'vedicextensions' => '#/253',
+'verticalforms' => '#/365',
'vertspace' => '#/4',
+'vith' => 'Scx/Vith',
+'vithkuqi' => 'Scx/Vith',
'vo=r' => 'Vo/R',
'vo=rotated' => 'Vo/R',
'vo=tr' => 'Vo/Tr',
@@ -7230,23 +7467,23 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'vo=tu' => 'Vo/Tu',
'vo=u' => 'Vo/U',
'vo=upright' => 'Vo/U',
-'vs' => '#/93',
-'vs=f' => '#/!93',
-'vs=false' => '#/!93',
-'vs=n' => '#/!93',
-'vs=no' => '#/!93',
-'vs=t' => '#/93',
-'vs=true' => '#/93',
-'vs=y' => '#/93',
-'vs=yes' => '#/93',
+'vs' => 'VS/Y',
+'vs=f' => '!VS/Y',
+'vs=false' => '!VS/Y',
+'vs=n' => '!VS/Y',
+'vs=no' => '!VS/Y',
+'vs=t' => 'VS/Y',
+'vs=true' => 'VS/Y',
+'vs=y' => 'VS/Y',
+'vs=yes' => 'VS/Y',
'vssup' => '#/149',
-'wancho' => '#/709',
-'wara' => '#/708',
-'warangciti' => '#/708',
+'wancho' => '#/734',
+'wara' => '#/733',
+'warangciti' => '#/733',
'wb=aletter' => 'WB/LE',
'wb=cr' => '#/66',
-'wb=doublequote' => '#/94',
-'wb=dq' => '#/94',
+'wb=doublequote' => '#/92',
+'wb=dq' => '#/92',
'wb=eb' => '#/0',
'wb=ebase' => '#/0',
'wb=ebasegaz' => '#/0',
@@ -7272,19 +7509,19 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'wb=midnumlet' => 'WB/MB',
'wb=ml' => 'WB/ML',
'wb=mn' => 'WB/MN',
-'wb=newline' => '#/95',
-'wb=nl' => '#/95',
+'wb=newline' => '#/93',
+'wb=nl' => '#/93',
'wb=nu' => 'WB/NU',
'wb=numeric' => 'WB/NU',
'wb=other' => 'WB/XX',
'wb=regionalindicator' => '#/68',
'wb=ri' => '#/68',
-'wb=singlequote' => '#/96',
-'wb=sq' => '#/96',
+'wb=singlequote' => '#/94',
+'wb=sq' => '#/94',
'wb=wsegspace' => 'WB/WSegSpac',
'wb=xx' => 'WB/XX',
'wb=zwj' => '#/69',
-'wcho' => '#/709',
+'wcho' => '#/734',
'whitespace' => 'Perl/SpacePer',
'word' => 'Perl/Word',
'wspace' => 'Perl/SpacePer',
@@ -7317,12 +7554,12 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'xids=y' => 'XIDS/Y',
'xids=yes' => 'XIDS/Y',
'xidstart' => 'XIDS/Y',
-'xpeo' => '#/710',
+'xpeo' => '#/735',
'xperlspace' => 'Perl/SpacePer',
'xposixalnum' => 'Perl/Alnum',
'xposixalpha' => 'Alpha/Y',
'xposixblank' => 'Perl/Blank',
-'xposixcntrl' => '#/422',
+'xposixcntrl' => '#/439',
'xposixdigit' => 'Gc/Nd',
'xposixgraph' => 'Perl/Graph',
'xposixlower' => 'Lower/Y',
@@ -7337,16 +7574,18 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
'yezidi' => 'Scx/Yezi',
'yi' => 'Scx/Yi',
'yiii' => 'Scx/Yi',
-'yijing' => '#/177',
-'yijinghexagramsymbols' => '#/177',
-'yiradicals' => '#/300',
-'yisyllables' => '#/325',
+'yijing' => '#/178',
+'yijinghexagramsymbols' => '#/178',
+'yiradicals' => '#/311',
+'yisyllables' => '#/337',
'z' => 'Gc/Z',
-'zanabazarsquare' => '#/711',
-'zanb' => '#/711',
+'zanabazarsquare' => '#/736',
+'zanb' => '#/736',
'zinh' => 'Scx/Zinh',
-'zl' => '#/424',
-'zp' => '#/425',
+'zl' => '#/441',
+'znamennymusic' => '#/366',
+'znamennymusicalnotation' => '#/366',
+'zp' => '#/442',
'zs' => 'Gc/Zs',
'zyyy' => 'Scx/Zyyy',
'zzzz' => 'Scx/Zzzz',
@@ -7354,62 +7593,62 @@ $Unicode::UCD::HANGUL_COUNT = 11172;
# Maps floating point to fractional form
%Unicode::UCD::nv_floating_to_rational = (
-'-5.00e-01' => '-1/2',
-'1.00e-01' => '1/10',
-'1.11e-01' => '1/9',
-'1.25e-01' => '1/8',
-'1.25e-02' => '1/80',
-'1.43e-01' => '1/7',
-'1.50e+00' => '3/2',
-'1.50e-01' => '3/20',
-'1.56e-02' => '1/64',
-'1.67e-01' => '1/6',
-'1.88e-01' => '3/16',
-'2.00e-01' => '1/5',
-'2.50e+00' => '5/2',
-'2.50e-01' => '1/4',
-'2.50e-02' => '1/40',
-'3.12e-02' => '1/32',
-'3.13e-02' => '1/32',
-'3.13e-03' => '1/320',
-'3.33e-01' => '1/3',
-'3.50e+00' => '7/2',
-'3.75e-01' => '3/8',
-'3.75e-02' => '3/80',
-'4.00e-01' => '2/5',
-'4.17e-01' => '5/12',
-'4.50e+00' => '9/2',
-'4.69e-02' => '3/64',
-'5.00e-01' => '1/2',
-'5.00e-02' => '1/20',
-'5.50e+00' => '11/2',
-'5.83e-01' => '7/12',
-'6.00e-01' => '3/5',
-'6.25e-01' => '5/8',
-'6.25e-02' => '1/16',
-'6.25e-03' => '1/160',
-'6.50e+00' => '13/2',
-'6.67e-01' => '2/3',
-'7.50e+00' => '15/2',
-'7.50e-01' => '3/4',
-'8.00e-01' => '4/5',
-'8.33e-01' => '5/6',
-'8.33e-02' => '1/12',
-'8.50e+00' => '17/2',
-'8.75e-01' => '7/8',
-'9.17e-01' => '11/12',
+'-5.000e-01' => '-1/2',
+'1.000e-01' => '1/10',
+'1.111e-01' => '1/9',
+'1.250e-01' => '1/8',
+'1.250e-02' => '1/80',
+'1.429e-01' => '1/7',
+'1.500e+00' => '3/2',
+'1.500e-01' => '3/20',
+'1.562e-02' => '1/64',
+'1.563e-02' => '1/64',
+'1.667e-01' => '1/6',
+'1.875e-01' => '3/16',
+'2.000e-01' => '1/5',
+'2.500e+00' => '5/2',
+'2.500e-01' => '1/4',
+'2.500e-02' => '1/40',
+'3.125e-02' => '1/32',
+'3.125e-03' => '1/320',
+'3.333e-01' => '1/3',
+'3.500e+00' => '7/2',
+'3.750e-01' => '3/8',
+'3.750e-02' => '3/80',
+'4.000e-01' => '2/5',
+'4.167e-01' => '5/12',
+'4.500e+00' => '9/2',
+'4.688e-02' => '3/64',
+'5.000e-01' => '1/2',
+'5.000e-02' => '1/20',
+'5.500e+00' => '11/2',
+'5.833e-01' => '7/12',
+'6.000e-01' => '3/5',
+'6.250e-01' => '5/8',
+'6.250e-02' => '1/16',
+'6.250e-03' => '1/160',
+'6.500e+00' => '13/2',
+'6.667e-01' => '2/3',
+'7.500e+00' => '15/2',
+'7.500e-01' => '3/4',
+'8.000e-01' => '4/5',
+'8.333e-01' => '5/6',
+'8.333e-02' => '1/12',
+'8.500e+00' => '17/2',
+'8.750e-01' => '7/8',
+'9.167e-01' => '11/12',
);
# If a %e floating point number doesn't have this number of digits in it after
# the decimal point to get this close to a fraction, it isn't considered to be
# that fraction even if all the digits it does have match.
-$Unicode::UCD::e_precision = 2;
+$Unicode::UCD::e_precision = 3;
# Deprecated tables to generate a warning for. The key is the file containing
# the table, so as to avoid duplication, as many property names can map to the
# file, but we only need one entry for all of them.
%Unicode::UCD::why_deprecated = (
-'#/516' => 'Surrogates should never appear in well-formed text, and therefore shouldn\'t be the basis for line breaking',
+'#/533' => 'Surrogates should never appear in well-formed text, and therefore shouldn\'t be the basis for line breaking',
'Hyphen/T' => 'Supplanted by Line_Break property values; see www.unicode.org/reports/tr14',
);
@@ -7611,6 +7850,8 @@ $Unicode::UCD::e_precision = 2;
'age=12.0' => '12.0',
'age=12.1' => '12.1',
'age=13.0' => '13.0',
+'age=14.0' => '14.0',
+'age=15.0' => '15.0',
'age=2.0' => '2.0',
'age=2.1' => '2.1',
'age=3.0' => '3.0',
@@ -7636,6 +7877,8 @@ $Unicode::UCD::e_precision = 2;
'age=v120' => '12.0',
'age=v121' => '12.1',
'age=v130' => '13.0',
+'age=v140' => '14.0',
+'age=v150' => '15.0',
'age=v20' => '2.0',
'age=v21' => '2.1',
'age=v30' => '3.0',
@@ -7745,7 +7988,11 @@ $Unicode::UCD::e_precision = 2;
'blk=ancientsymbols' => 'ancientsymbols',
'blk=arabic' => 'arabic',
'blk=arabicexta' => 'arabicexta',
+'blk=arabicextb' => 'arabicextb',
+'blk=arabicextc' => 'arabicextc',
'blk=arabicextendeda' => 'arabicexta',
+'blk=arabicextendedb' => 'arabicextb',
+'blk=arabicextendedc' => 'arabicextc',
'blk=arabicmath' => 'arabicmath',
'blk=arabicmathematicalalphabeticsymbols' => 'arabicmath',
'blk=arabicpfa' => 'arabicpfa',
@@ -7805,6 +8052,7 @@ $Unicode::UCD::e_precision = 2;
'blk=cjkexte' => 'cjkexte',
'blk=cjkextf' => 'cjkextf',
'blk=cjkextg' => 'cjkextg',
+'blk=cjkexth' => 'cjkexth',
'blk=cjkradicalssup' => 'cjkradicalssup',
'blk=cjkradicalssupplement' => 'cjkradicalssup',
'blk=cjkstrokes' => 'cjkstrokes',
@@ -7818,6 +8066,7 @@ $Unicode::UCD::e_precision = 2;
'blk=cjkunifiedideographsextensione' => 'cjkexte',
'blk=cjkunifiedideographsextensionf' => 'cjkextf',
'blk=cjkunifiedideographsextensiong' => 'cjkextg',
+'blk=cjkunifiedideographsextensionh' => 'cjkexth',
'blk=combiningdiacriticalmarks' => 'diacriticals',
'blk=combiningdiacriticalmarksextended' => 'diacriticalsext',
'blk=combiningdiacriticalmarksforsymbols' => 'diacriticalsforsymbols',
@@ -7836,20 +8085,25 @@ $Unicode::UCD::e_precision = 2;
'blk=cuneiformnumbersandpunctuation' => 'cuneiformnumbers',
'blk=currencysymbols' => 'currencysymbols',
'blk=cypriotsyllabary' => 'cypriotsyllabary',
+'blk=cyprominoan' => 'cyprominoan',
'blk=cyrillic' => 'cyrillic',
'blk=cyrillicexta' => 'cyrillicexta',
'blk=cyrillicextb' => 'cyrillicextb',
'blk=cyrillicextc' => 'cyrillicextc',
+'blk=cyrillicextd' => 'cyrillicextd',
'blk=cyrillicextendeda' => 'cyrillicexta',
'blk=cyrillicextendedb' => 'cyrillicextb',
'blk=cyrillicextendedc' => 'cyrillicextc',
+'blk=cyrillicextendedd' => 'cyrillicextd',
'blk=cyrillicsup' => 'cyrillicsup',
'blk=cyrillicsupplement' => 'cyrillicsup',
'blk=cyrillicsupplementary' => 'cyrillicsup',
'blk=deseret' => 'deseret',
'blk=devanagari' => 'devanagari',
'blk=devanagariext' => 'devanagariext',
+'blk=devanagariexta' => 'devanagariexta',
'blk=devanagariextended' => 'devanagariext',
+'blk=devanagariextendeda' => 'devanagariexta',
'blk=diacriticals' => 'diacriticals',
'blk=diacriticalsext' => 'diacriticalsext',
'blk=diacriticalsforsymbols' => 'diacriticalsforsymbols',
@@ -7877,8 +8131,10 @@ $Unicode::UCD::e_precision = 2;
'blk=ethiopic' => 'ethiopic',
'blk=ethiopicext' => 'ethiopicext',
'blk=ethiopicexta' => 'ethiopicexta',
+'blk=ethiopicextb' => 'ethiopicextb',
'blk=ethiopicextended' => 'ethiopicext',
'blk=ethiopicextendeda' => 'ethiopicexta',
+'blk=ethiopicextendedb' => 'ethiopicextb',
'blk=ethiopicsup' => 'ethiopicsup',
'blk=ethiopicsupplement' => 'ethiopicsup',
'blk=generalpunctuation' => 'punctuation',
@@ -7935,8 +8191,11 @@ $Unicode::UCD::e_precision = 2;
'blk=jamoextb' => 'jamoextb',
'blk=javanese' => 'javanese',
'blk=kaithi' => 'kaithi',
+'blk=kaktoviknumerals' => 'kaktoviknumerals',
'blk=kanaexta' => 'kanaexta',
+'blk=kanaextb' => 'kanaextb',
'blk=kanaextendeda' => 'kanaexta',
+'blk=kanaextendedb' => 'kanaextb',
'blk=kanasup' => 'kanasup',
'blk=kanasupplement' => 'kanasup',
'blk=kanbun' => 'kanbun',
@@ -7946,6 +8205,7 @@ $Unicode::UCD::e_precision = 2;
'blk=katakana' => 'katakana',
'blk=katakanaext' => 'katakanaext',
'blk=katakanaphoneticextensions' => 'katakanaext',
+'blk=kawi' => 'kawi',
'blk=kayahli' => 'kayahli',
'blk=kharoshthi' => 'kharoshthi',
'blk=khitansmallscript' => 'khitansmallscript',
@@ -7969,6 +8229,10 @@ $Unicode::UCD::e_precision = 2;
'blk=latinextendedc' => 'latinextc',
'blk=latinextendedd' => 'latinextd',
'blk=latinextendede' => 'latinexte',
+'blk=latinextendedf' => 'latinextf',
+'blk=latinextendedg' => 'latinextg',
+'blk=latinextf' => 'latinextf',
+'blk=latinextg' => 'latinextg',
'blk=lepcha' => 'lepcha',
'blk=letterlikesymbols' => 'letterlikesymbols',
'blk=limbu' => 'limbu',
@@ -8031,6 +8295,7 @@ $Unicode::UCD::e_precision = 2;
'blk=myanmarextendeda' => 'myanmarexta',
'blk=myanmarextendedb' => 'myanmarextb',
'blk=nabataean' => 'nabataean',
+'blk=nagmundari' => 'nagmundari',
'blk=nandinagari' => 'nandinagari',
'blk=nb' => 'nb',
'blk=newa' => 'newa',
@@ -8051,6 +8316,7 @@ $Unicode::UCD::e_precision = 2;
'blk=oldsogdian' => 'oldsogdian',
'blk=oldsoutharabian' => 'oldsoutharabian',
'blk=oldturkic' => 'oldturkic',
+'blk=olduyghur' => 'olduyghur',
'blk=opticalcharacterrecognition' => 'ocr',
'blk=oriya' => 'oriya',
'blk=ornamentaldingbats' => 'ornamentaldingbats',
@@ -8136,6 +8402,7 @@ $Unicode::UCD::e_precision = 2;
'blk=tamil' => 'tamil',
'blk=tamilsup' => 'tamilsup',
'blk=tamilsupplement' => 'tamilsup',
+'blk=tangsa' => 'tangsa',
'blk=tangut' => 'tangut',
'blk=tangutcomponents' => 'tangutcomponents',
'blk=tangutsup' => 'tangutsup',
@@ -8146,19 +8413,23 @@ $Unicode::UCD::e_precision = 2;
'blk=tibetan' => 'tibetan',
'blk=tifinagh' => 'tifinagh',
'blk=tirhuta' => 'tirhuta',
+'blk=toto' => 'toto',
'blk=transportandmap' => 'transportandmap',
'blk=transportandmapsymbols' => 'transportandmap',
'blk=ucas' => 'ucas',
'blk=ucasext' => 'ucasext',
+'blk=ucasexta' => 'ucasexta',
'blk=ugaritic' => 'ugaritic',
'blk=unifiedcanadianaboriginalsyllabics' => 'ucas',
'blk=unifiedcanadianaboriginalsyllabicsextended' => 'ucasext',
+'blk=unifiedcanadianaboriginalsyllabicsextendeda' => 'ucasexta',
'blk=vai' => 'vai',
'blk=variationselectors' => 'vs',
'blk=variationselectorssupplement' => 'vssup',
'blk=vedicext' => 'vedicext',
'blk=vedicextensions' => 'vedicext',
'blk=verticalforms' => 'verticalforms',
+'blk=vithkuqi' => 'vithkuqi',
'blk=vs' => 'vs',
'blk=vssup' => 'vssup',
'blk=wancho' => 'wancho',
@@ -8169,6 +8440,8 @@ $Unicode::UCD::e_precision = 2;
'blk=yiradicals' => 'yiradicals',
'blk=yisyllables' => 'yisyllables',
'blk=zanabazarsquare' => 'zanabazarsquare',
+'blk=znamennymusic' => 'znamennymusic',
+'blk=znamennymusicalnotation' => 'znamennymusic',
'bpt=c' => 'c',
'bpt=close' => 'c',
'bpt=n' => 'n',
@@ -8740,6 +9013,8 @@ $Unicode::UCD::e_precision = 2;
'in=12.0' => '12.0',
'in=12.1' => '12.1',
'in=13.0' => '13.0',
+'in=14.0' => '14.0',
+'in=15.0' => '15.0',
'in=2.0' => '2.0',
'in=2.1' => '2.1',
'in=3.0' => '3.0',
@@ -8757,12 +9032,16 @@ $Unicode::UCD::e_precision = 2;
'in=7.0' => '7.0',
'in=8.0' => '8.0',
'in=9.0' => '9.0',
+'in=na' => 'unassigned',
'in=unassigned' => 'unassigned',
'in=v100' => '10.0',
+'in=v11' => '1.1',
'in=v110' => '11.0',
'in=v120' => '12.0',
'in=v121' => '12.1',
'in=v130' => '13.0',
+'in=v140' => '14.0',
+'in=v150' => '15.0',
'in=v20' => '2.0',
'in=v21' => '2.1',
'in=v30' => '3.0',
@@ -8927,6 +9206,8 @@ $Unicode::UCD::e_precision = 2;
'jg=tehmarbuta' => 'tehmarbuta',
'jg=tehmarbutagoal' => 'tehmarbutagoal',
'jg=teth' => 'teth',
+'jg=thinyeh' => 'thinyeh',
+'jg=verticaltail' => 'verticaltail',
'jg=waw' => 'waw',
'jg=yeh' => 'yeh',
'jg=yehbarree' => 'yehbarree',
@@ -9362,9 +9643,11 @@ $Unicode::UCD::e_precision = 2;
'sc=common' => 'zyyy',
'sc=copt' => 'copt',
'sc=coptic' => 'copt',
+'sc=cpmn' => 'cpmn',
'sc=cprt' => 'cprt',
'sc=cuneiform' => 'xsux',
'sc=cypriot' => 'cprt',
+'sc=cyprominoan' => 'cpmn',
'sc=cyrillic' => 'cyrl',
'sc=cyrl' => 'cyrl',
'sc=deseret' => 'dsrt',
@@ -9431,6 +9714,7 @@ $Unicode::UCD::e_precision = 2;
'sc=kana' => 'kana',
'sc=kannada' => 'knda',
'sc=katakana' => 'kana',
+'sc=kawi' => 'kawi',
'sc=kayahli' => 'kali',
'sc=khar' => 'khar',
'sc=kharoshthi' => 'khar',
@@ -9495,6 +9779,8 @@ $Unicode::UCD::e_precision = 2;
'sc=myanmar' => 'mymr',
'sc=mymr' => 'mymr',
'sc=nabataean' => 'nbat',
+'sc=nagm' => 'nagm',
+'sc=nagmundari' => 'nagm',
'sc=nand' => 'nand',
'sc=nandinagari' => 'nand',
'sc=narb' => 'narb',
@@ -9518,6 +9804,7 @@ $Unicode::UCD::e_precision = 2;
'sc=oldsogdian' => 'sogo',
'sc=oldsoutharabian' => 'sarb',
'sc=oldturkic' => 'orkh',
+'sc=olduyghur' => 'ougr',
'sc=oriya' => 'orya',
'sc=orkh' => 'orkh',
'sc=orya' => 'orya',
@@ -9525,6 +9812,7 @@ $Unicode::UCD::e_precision = 2;
'sc=osge' => 'osge',
'sc=osma' => 'osma',
'sc=osmanya' => 'osma',
+'sc=ougr' => 'ougr',
'sc=pahawhhmong' => 'hmng',
'sc=palm' => 'palm',
'sc=palmyrene' => 'palm',
@@ -9589,6 +9877,7 @@ $Unicode::UCD::e_precision = 2;
'sc=tamil' => 'taml',
'sc=taml' => 'taml',
'sc=tang' => 'tang',
+'sc=tangsa' => 'tnsa',
'sc=tangut' => 'tang',
'sc=tavt' => 'tavt',
'sc=telu' => 'telu',
@@ -9603,11 +9892,15 @@ $Unicode::UCD::e_precision = 2;
'sc=tifinagh' => 'tfng',
'sc=tirh' => 'tirh',
'sc=tirhuta' => 'tirh',
+'sc=tnsa' => 'tnsa',
+'sc=toto' => 'toto',
'sc=ugar' => 'ugar',
'sc=ugaritic' => 'ugar',
'sc=unknown' => 'zzzz',
'sc=vai' => 'vaii',
'sc=vaii' => 'vaii',
+'sc=vith' => 'vith',
+'sc=vithkuqi' => 'vith',
'sc=wancho' => 'wcho',
'sc=wara' => 'wara',
'sc=warangciti' => 'wara',
@@ -9672,9 +9965,11 @@ $Unicode::UCD::e_precision = 2;
'scx=common' => 'zyyy',
'scx=copt' => 'copt',
'scx=coptic' => 'copt',
+'scx=cpmn' => 'cpmn',
'scx=cprt' => 'cprt',
'scx=cuneiform' => 'xsux',
'scx=cypriot' => 'cprt',
+'scx=cyprominoan' => 'cpmn',
'scx=cyrillic' => 'cyrl',
'scx=cyrl' => 'cyrl',
'scx=deseret' => 'dsrt',
@@ -9741,6 +10036,7 @@ $Unicode::UCD::e_precision = 2;
'scx=kana' => 'kana',
'scx=kannada' => 'knda',
'scx=katakana' => 'kana',
+'scx=kawi' => 'kawi',
'scx=kayahli' => 'kali',
'scx=khar' => 'khar',
'scx=kharoshthi' => 'khar',
@@ -9805,6 +10101,8 @@ $Unicode::UCD::e_precision = 2;
'scx=myanmar' => 'mymr',
'scx=mymr' => 'mymr',
'scx=nabataean' => 'nbat',
+'scx=nagm' => 'nagm',
+'scx=nagmundari' => 'nagm',
'scx=nand' => 'nand',
'scx=nandinagari' => 'nand',
'scx=narb' => 'narb',
@@ -9828,6 +10126,7 @@ $Unicode::UCD::e_precision = 2;
'scx=oldsogdian' => 'sogo',
'scx=oldsoutharabian' => 'sarb',
'scx=oldturkic' => 'orkh',
+'scx=olduyghur' => 'ougr',
'scx=oriya' => 'orya',
'scx=orkh' => 'orkh',
'scx=orya' => 'orya',
@@ -9835,6 +10134,7 @@ $Unicode::UCD::e_precision = 2;
'scx=osge' => 'osge',
'scx=osma' => 'osma',
'scx=osmanya' => 'osma',
+'scx=ougr' => 'ougr',
'scx=pahawhhmong' => 'hmng',
'scx=palm' => 'palm',
'scx=palmyrene' => 'palm',
@@ -9899,6 +10199,7 @@ $Unicode::UCD::e_precision = 2;
'scx=tamil' => 'taml',
'scx=taml' => 'taml',
'scx=tang' => 'tang',
+'scx=tangsa' => 'tnsa',
'scx=tangut' => 'tang',
'scx=tavt' => 'tavt',
'scx=telu' => 'telu',
@@ -9913,11 +10214,15 @@ $Unicode::UCD::e_precision = 2;
'scx=tifinagh' => 'tfng',
'scx=tirh' => 'tirh',
'scx=tirhuta' => 'tirh',
+'scx=tnsa' => 'tnsa',
+'scx=toto' => 'toto',
'scx=ugar' => 'ugar',
'scx=ugaritic' => 'ugar',
'scx=unknown' => 'zzzz',
'scx=vai' => 'vaii',
'scx=vaii' => 'vaii',
+'scx=vith' => 'vith',
+'scx=vithkuqi' => 'vith',
'scx=wancho' => 'wcho',
'scx=wara' => 'wara',
'scx=warangciti' => 'wara',
@@ -10880,6 +11185,16 @@ $Unicode::UCD::e_precision = 2;
'13.0',
'V13_0',
],
+'14.0' =>
+[
+'14.0',
+'V14_0',
+],
+'15.0' =>
+[
+'15.0',
+'V15_0',
+],
'2.0' =>
[
'2.0',
@@ -11207,6 +11522,16 @@ $Unicode::UCD::e_precision = 2;
'Arabic_Ext_A',
'Arabic_Extended_A',
],
+'arabicextb' =>
+[
+'Arabic_Ext_B',
+'Arabic_Extended_B',
+],
+'arabicextc' =>
+[
+'Arabic_Ext_C',
+'Arabic_Extended_C',
+],
'arabicmath' =>
[
'Arabic_Math',
@@ -11405,6 +11730,11 @@ $Unicode::UCD::e_precision = 2;
'CJK_Ext_G',
'CJK_Unified_Ideographs_Extension_G',
],
+'cjkexth' =>
+[
+'CJK_Ext_H',
+'CJK_Unified_Ideographs_Extension_H',
+],
'cjkradicalssup' =>
[
'CJK_Radicals_Sup',
@@ -11458,6 +11788,10 @@ $Unicode::UCD::e_precision = 2;
[
'Cypriot_Syllabary',
],
+'cyprominoan' =>
+[
+'Cypro_Minoan',
+],
'cyrillic' =>
[
'Cyrillic',
@@ -11477,6 +11811,11 @@ $Unicode::UCD::e_precision = 2;
'Cyrillic_Ext_C',
'Cyrillic_Extended_C',
],
+'cyrillicextd' =>
+[
+'Cyrillic_Ext_D',
+'Cyrillic_Extended_D',
+],
'cyrillicsup' =>
[
'Cyrillic_Sup',
@@ -11496,6 +11835,11 @@ $Unicode::UCD::e_precision = 2;
'Devanagari_Ext',
'Devanagari_Extended',
],
+'devanagariexta' =>
+[
+'Devanagari_Ext_A',
+'Devanagari_Extended_A',
+],
'diacriticals' =>
[
'Diacriticals',
@@ -11596,6 +11940,11 @@ $Unicode::UCD::e_precision = 2;
'Ethiopic_Ext_A',
'Ethiopic_Extended_A',
],
+'ethiopicextb' =>
+[
+'Ethiopic_Ext_B',
+'Ethiopic_Extended_B',
+],
'ethiopicsup' =>
[
'Ethiopic_Sup',
@@ -11766,11 +12115,20 @@ $Unicode::UCD::e_precision = 2;
[
'Kaithi',
],
+'kaktoviknumerals' =>
+[
+'Kaktovik_Numerals',
+],
'kanaexta' =>
[
'Kana_Ext_A',
'Kana_Extended_A',
],
+'kanaextb' =>
+[
+'Kana_Ext_B',
+'Kana_Extended_B',
+],
'kanasup' =>
[
'Kana_Sup',
@@ -11798,6 +12156,10 @@ $Unicode::UCD::e_precision = 2;
'Katakana_Ext',
'Katakana_Phonetic_Extensions',
],
+'kawi' =>
+[
+'Kawi',
+],
'kayahli' =>
[
'Kayah_Li',
@@ -11866,6 +12228,16 @@ $Unicode::UCD::e_precision = 2;
'Latin_Ext_E',
'Latin_Extended_E',
],
+'latinextf' =>
+[
+'Latin_Ext_F',
+'Latin_Extended_F',
+],
+'latinextg' =>
+[
+'Latin_Ext_G',
+'Latin_Extended_G',
+],
'lepcha' =>
[
'Lepcha',
@@ -12070,6 +12442,10 @@ $Unicode::UCD::e_precision = 2;
[
'Nabataean',
],
+'nagmundari' =>
+[
+'Nag_Mundari',
+],
'nandinagari' =>
[
'Nandinagari',
@@ -12148,6 +12524,10 @@ $Unicode::UCD::e_precision = 2;
[
'Old_Turkic',
],
+'olduyghur' =>
+[
+'Old_Uyghur',
+],
'oriya' =>
[
'Oriya',
@@ -12415,6 +12795,10 @@ $Unicode::UCD::e_precision = 2;
'Tamil_Sup',
'Tamil_Supplement',
],
+'tangsa' =>
+[
+'Tangsa',
+],
'tangut' =>
[
'Tangut',
@@ -12452,6 +12836,10 @@ $Unicode::UCD::e_precision = 2;
[
'Tirhuta',
],
+'toto' =>
+[
+'Toto',
+],
'transportandmap' =>
[
'Transport_And_Map',
@@ -12468,6 +12856,11 @@ $Unicode::UCD::e_precision = 2;
'UCAS_Ext',
'Unified_Canadian_Aboriginal_Syllabics_Extended',
],
+'ucasexta' =>
+[
+'UCAS_Ext_A',
+'Unified_Canadian_Aboriginal_Syllabics_Extended_A',
+],
'ugaritic' =>
[
'Ugaritic',
@@ -12485,6 +12878,10 @@ $Unicode::UCD::e_precision = 2;
[
'Vertical_Forms',
],
+'vithkuqi' =>
+[
+'Vithkuqi',
+],
'vs' =>
[
'VS',
@@ -12524,6 +12921,11 @@ $Unicode::UCD::e_precision = 2;
[
'Zanabazar_Square',
],
+'znamennymusic' =>
+[
+'Znamenny_Music',
+'Znamenny_Musical_Notation',
+],
},
'bpt' =>
{
@@ -13913,6 +14315,8 @@ $Unicode::UCD::e_precision = 2;
'1.1' =>
[
'1.1',
+'1.1',
+'V1_1',
],
'10.0' =>
[
@@ -13944,6 +14348,18 @@ $Unicode::UCD::e_precision = 2;
'13.0',
'V13_0',
],
+'14.0' =>
+[
+'14.0',
+'14.0',
+'V14_0',
+],
+'15.0' =>
+[
+'15.0',
+'15.0',
+'V15_0',
+],
'2.0' =>
[
'2.0',
@@ -14049,6 +14465,8 @@ $Unicode::UCD::e_precision = 2;
'unassigned' =>
[
'Unassigned',
+'Unassigned',
+'NA',
],
},
'inpc' =>
@@ -14644,6 +15062,14 @@ $Unicode::UCD::e_precision = 2;
[
'Teth',
],
+'thinyeh' =>
+[
+'Thin_Yeh',
+],
+'verticaltail' =>
+[
+'Vertical_Tail',
+],
'waw' =>
[
'Waw',
@@ -15971,6 +16397,11 @@ $Unicode::UCD::e_precision = 2;
'Coptic',
'Qaac',
],
+'cpmn' =>
+[
+'Cpmn',
+'Cypro_Minoan',
+],
'cprt' =>
[
'Cprt',
@@ -16146,6 +16577,10 @@ $Unicode::UCD::e_precision = 2;
'Kana',
'Katakana',
],
+'kawi' =>
+[
+'Kawi',
+],
'khar' =>
[
'Khar',
@@ -16304,6 +16739,11 @@ $Unicode::UCD::e_precision = 2;
'Mymr',
'Myanmar',
],
+'nagm' =>
+[
+'Nagm',
+'Nag_Mundari',
+],
'nand' =>
[
'Nand',
@@ -16363,6 +16803,11 @@ $Unicode::UCD::e_precision = 2;
'Osma',
'Osmanya',
],
+'ougr' =>
+[
+'Ougr',
+'Old_Uyghur',
+],
'palm' =>
[
'Palm',
@@ -16572,6 +17017,15 @@ $Unicode::UCD::e_precision = 2;
'Tirh',
'Tirhuta',
],
+'tnsa' =>
+[
+'Tnsa',
+'Tangsa',
+],
+'toto' =>
+[
+'Toto',
+],
'ugar' =>
[
'Ugar',
@@ -16582,6 +17036,11 @@ $Unicode::UCD::e_precision = 2;
'Vaii',
'Vai',
],
+'vith' =>
+[
+'Vith',
+'Vithkuqi',
+],
'wara' =>
[
'Wara',
@@ -16760,6 +17219,11 @@ $Unicode::UCD::e_precision = 2;
'Coptic',
'Qaac',
],
+'cpmn' =>
+[
+'Cpmn',
+'Cypro_Minoan',
+],
'cprt' =>
[
'Cprt',
@@ -16935,6 +17399,10 @@ $Unicode::UCD::e_precision = 2;
'Kana',
'Katakana',
],
+'kawi' =>
+[
+'Kawi',
+],
'khar' =>
[
'Khar',
@@ -17093,6 +17561,11 @@ $Unicode::UCD::e_precision = 2;
'Mymr',
'Myanmar',
],
+'nagm' =>
+[
+'Nagm',
+'Nag_Mundari',
+],
'nand' =>
[
'Nand',
@@ -17152,6 +17625,11 @@ $Unicode::UCD::e_precision = 2;
'Osma',
'Osmanya',
],
+'ougr' =>
+[
+'Ougr',
+'Old_Uyghur',
+],
'palm' =>
[
'Palm',
@@ -17361,6 +17839,15 @@ $Unicode::UCD::e_precision = 2;
'Tirh',
'Tirhuta',
],
+'tnsa' =>
+[
+'Tnsa',
+'Tangsa',
+],
+'toto' =>
+[
+'Toto',
+],
'ugar' =>
[
'Ugar',
@@ -17371,6 +17858,11 @@ $Unicode::UCD::e_precision = 2;
'Vaii',
'Vai',
],
+'vith' =>
+[
+'Vith',
+'Vithkuqi',
+],
'wara' =>
[
'Wara',
@@ -17725,7 +18217,7 @@ $Unicode::UCD::e_precision = 2;
'name' => 'CJK UNIFIED IDEOGRAPH-<code point>',
},
{
-'high' => 40956,
+'high' => 40959,
'low' => 19968,
'name' => 'CJK UNIFIED IDEOGRAPH-<code point>',
},
@@ -17765,12 +18257,12 @@ $Unicode::UCD::e_precision = 2;
'name' => 'NUSHU CHARACTER-<code point>',
},
{
-'high' => 173789,
+'high' => 173791,
'low' => 131072,
'name' => 'CJK UNIFIED IDEOGRAPH-<code point>',
},
{
-'high' => 177972,
+'high' => 177977,
'low' => 173824,
'name' => 'CJK UNIFIED IDEOGRAPH-<code point>',
},
@@ -17799,6 +18291,11 @@ $Unicode::UCD::e_precision = 2;
'low' => 196608,
'name' => 'CJK UNIFIED IDEOGRAPH-<code point>',
},
+{
+'high' => 205743,
+'low' => 201552,
+'name' => 'CJK UNIFIED IDEOGRAPH-<code point>',
+},
,
);
@@ -17972,6 +18469,7 @@ $Unicode::UCD::e_precision = 2;
'idst=false' => 1,
'idst=n' => 1,
'idst=no' => 1,
+'in=na' => 1,
'in=unassigned' => 1,
'innb' => 1,
'innoblock' => 1,
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/NA.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/NA.pl
index b13fc5847f5..b1f3d8591e5 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/NA.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/NA.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1371
+V1429
888
890
896
@@ -35,8 +35,6 @@ V1371
1519
1525
1536
-1565
-1566
1806
1807
1867
@@ -54,11 +52,11 @@ V1371
2143
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2191
+2192
+2194
+2200
2436
2437
2445
@@ -214,7 +212,7 @@ V1371
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -224,6 +222,8 @@ V1371
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -246,14 +246,14 @@ V1371
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -313,7 +313,7 @@ V1371
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -381,10 +381,8 @@ V1371
5792
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5943
5952
5972
@@ -401,8 +399,6 @@ V1371
6128
6138
6144
-6159
-6160
6170
6176
6265
@@ -441,11 +437,11 @@ V1371
6816
6830
6832
-6849
+6863
6912
-6988
+6989
6992
-7037
+7039
7040
7156
7164
@@ -461,8 +457,6 @@ V1371
7376
7419
7424
-7674
-7675
7958
7960
7966
@@ -503,7 +497,7 @@ V1371
8336
8349
8352
-8384
+8385
8400
8433
8448
@@ -517,10 +511,6 @@ V1371
11126
11158
11159
-11311
-11312
-11359
-11360
11508
11513
11558
@@ -551,7 +541,7 @@ V1371
11736
11743
11744
-11859
+11870
11904
11930
11931
@@ -575,8 +565,6 @@ V1371
12784
12831
12832
-40957
-40960
42125
42128
42183
@@ -585,10 +573,14 @@ V1371
42560
42744
42752
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43053
43056
43066
@@ -659,16 +651,12 @@ V1371
64323
64325
64326
-64450
+64451
64467
-64832
-64848
64912
64914
64968
-64976
-65022
-65024
+64975
65050
65056
65107
@@ -753,13 +741,33 @@ V1371
66864
66916
66927
-66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -842,10 +850,12 @@ V1371
69294
69296
69298
-69376
+69373
69416
69424
69466
+69488
+69514
69552
69580
69600
@@ -853,9 +863,9 @@ V1371
69632
69710
69714
-69744
+69750
69759
-69826
+69827
69837
69838
69840
@@ -875,7 +885,7 @@ V1371
70144
70162
70163
-70207
+70210
70272
70279
70280
@@ -939,7 +949,7 @@ V1371
71264
71277
71296
-71353
+71354
71360
71370
71424
@@ -947,7 +957,7 @@ V1371
71453
71468
71472
-71488
+71495
71680
71740
71840
@@ -978,8 +988,10 @@ V1371
72264
72272
72355
-72384
+72368
72441
+72448
+72458
72704
72713
72714
@@ -1022,6 +1034,12 @@ V1371
73130
73440
73465
+73472
+73489
+73490
+73531
+73534
+73562
73648
73649
73664
@@ -1034,10 +1052,10 @@ V1371
74869
74880
75076
+77712
+77811
77824
-78895
-78896
-78905
+78934
82944
83527
92160
@@ -1047,7 +1065,9 @@ V1371
92768
92778
92782
-92784
+92863
+92864
+92874
92880
92910
92912
@@ -1080,10 +1100,20 @@ V1371
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1098,14 +1128,22 @@ V1371
113818
113820
113828
+118528
+118574
+118576
+118599
+118608
+118724
118784
119030
119040
119079
119081
-119273
+119275
119296
119366
+119488
+119508
119520
119540
119552
@@ -1158,6 +1196,10 @@ V1371
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1168,6 +1210,10 @@ V1371
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1176,10 +1222,22 @@ V1371
123210
123214
123216
+123536
+123567
123584
123642
123647
123648
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125127
@@ -1288,16 +1346,18 @@ V1371
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -1311,27 +1371,23 @@ V1371
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
@@ -1339,9 +1395,9 @@ V1371
130032
130042
131070
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1352,6 +1408,8 @@ V1371
195102
196606
201547
+201552
+205744
262142
262144
327678
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V100.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V100.pl
index d2e6312cd4d..c63ce85f4c8 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V100.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V100.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V11.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V11.pl
index d74d6f01040..61814ac2317 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V11.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V11.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V110.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V110.pl
index 32fec71c8ec..adac63d4827 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V110.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V110.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V120.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V120.pl
index cd9df861c53..ee3c5d731c1 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V120.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V120.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V130.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V130.pl
index dc8c8b15706..7b99b1a5ab0 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V130.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V130.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V140.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V140.pl
new file mode 100755
index 00000000000..ae86eed2877
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V140.pl
@@ -0,0 +1,170 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
+
+# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
+# This file is for internal use by core Perl only. The format and even the
+# name or existence of this file are subject to change without notice. Don't
+# use it directly. Use Unicode::UCD to access the Unicode character data
+# base.
+
+
+return <<'END';
+V156
+1565
+1566
+2160
+2191
+2192
+2194
+2200
+2208
+2229
+2230
+2248
+2259
+3132
+3133
+3165
+3166
+3293
+3294
+5901
+5902
+5909
+5910
+5919
+5920
+6159
+6160
+6849
+6863
+6988
+6989
+7037
+7039
+7674
+7675
+8384
+8385
+11311
+11312
+11359
+11360
+11859
+11870
+40957
+40960
+42944
+42946
+42960
+42962
+42963
+42964
+42965
+42970
+42994
+42997
+64450
+64451
+64832
+64848
+64975
+64976
+65022
+65024
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
+67456
+67462
+67463
+67505
+67506
+67515
+69488
+69514
+69744
+69750
+69826
+69827
+71353
+71354
+71488
+71495
+72368
+72384
+77712
+77811
+92784
+92863
+92864
+92874
+110576
+110580
+110581
+110588
+110589
+110591
+110879
+110883
+118528
+118574
+118576
+118599
+118608
+118724
+119273
+119275
+122624
+122655
+123536
+123567
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
+128733
+128736
+129008
+129009
+129401
+129402
+129484
+129485
+129659
+129661
+129705
+129709
+129719
+129723
+129731
+129734
+129751
+129754
+129760
+129768
+129776
+129783
+173790
+173792
+177973
+177977
+END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V150.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V150.pl
new file mode 100755
index 00000000000..fa77e248801
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V150.pl
@@ -0,0 +1,78 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
+
+# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
+# This file is for internal use by core Perl only. The format and even the
+# name or existence of this file are subject to change without notice. Don't
+# use it directly. Use Unicode::UCD to access the Unicode character data
+# base.
+
+
+return <<'END';
+V64
+3315
+3316
+3790
+3791
+69373
+69376
+70207
+70210
+72448
+72458
+73472
+73489
+73490
+73531
+73534
+73562
+78895
+78896
+78905
+78934
+110898
+110899
+110933
+110934
+119488
+119508
+122661
+122667
+122928
+122990
+123023
+123024
+124112
+124154
+128732
+128733
+128884
+128887
+128891
+128896
+128985
+128986
+129653
+129656
+129671
+129673
+129709
+129712
+129723
+129726
+129727
+129728
+129742
+129744
+129754
+129756
+129768
+129769
+129783
+129785
+177977
+177978
+201552
+205744
+END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V20.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V20.pl
index fc785dcebf3..732032af0d1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V20.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V20.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V30.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V30.pl
index f7d373f19b8..9f895f9ec81 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V30.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V30.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V31.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V31.pl
index c18c2601750..e1bf1091e4c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V31.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V31.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V32.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V32.pl
index 32ca259f536..642be656dea 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V32.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V32.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V40.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V40.pl
index d9864b80cfc..90c533aca03 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V40.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V40.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V41.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V41.pl
index 69d0a21c7f5..dc695140433 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V41.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V41.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V50.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V50.pl
index 99e7622bd16..7fb9ba5016f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V50.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V50.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V51.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V51.pl
index 013f3766e34..64a9cd86ec3 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V51.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V51.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V52.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V52.pl
index 5d654648126..40a8319354d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V52.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V52.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V60.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V60.pl
index a232e4059b8..979f79063ef 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V60.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V60.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V61.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V61.pl
index f8c2d4ef74f..30d4e6917cc 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V61.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V61.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V70.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V70.pl
index e8d657fc558..9f804db174d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V70.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V70.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V80.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V80.pl
index e7025858baf..c4765268aa4 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V80.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V80.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V90.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V90.pl
index 313a399c4ef..d3c21897ec7 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Age/V90.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Age/V90.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Alpha/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Alpha/Y.pl
index 194d4ad869f..b44836cf3c6 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Alpha/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Alpha/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1390
+V1464
65
91
97
@@ -115,10 +115,12 @@ V1390
2137
2144
2155
+2160
+2184
+2185
+2191
2208
-2229
-2230
-2248
+2250
2260
2272
2275
@@ -278,8 +280,6 @@ V1390
3031
3032
3072
-3076
-3077
3085
3086
3089
@@ -297,6 +297,8 @@ V1390
3159
3160
3163
+3165
+3166
3168
3172
3200
@@ -319,12 +321,12 @@ V1390
3277
3285
3287
-3294
+3293
3295
3296
3300
3313
-3315
+3316
3328
3341
3342
@@ -400,7 +402,7 @@ V1390
3913
3949
3953
-3970
+3972
3976
3992
3993
@@ -472,10 +474,8 @@ V1390
5870
5881
5888
-5901
-5902
5908
-5920
+5919
5940
5952
5972
@@ -523,12 +523,14 @@ V1390
6824
6847
6849
+6860
+6863
6912
6964
6965
6980
6981
-6988
+6989
7040
7082
7084
@@ -636,10 +638,6 @@ V1390
9398
9450
11264
-11311
-11312
-11359
-11360
11493
11499
11503
@@ -704,8 +702,6 @@ V1390
13312
19904
19968
-40957
-40960
42125
42192
42238
@@ -726,10 +722,14 @@ V1390
42786
42889
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43014
43015
43048
@@ -893,12 +893,34 @@ V1390
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -973,14 +995,20 @@ V1390
69416
69424
69446
+69488
+69506
69552
69573
69600
69623
69632
69702
-69762
+69745
+69750
+69760
69817
+69826
+69827
69840
69865
69888
@@ -1008,7 +1036,7 @@ V1390
70199
70200
70206
-70207
+70210
70272
70279
70280
@@ -1081,6 +1109,8 @@ V1390
71451
71453
71467
+71488
+71495
71680
71737
71840
@@ -1119,7 +1149,7 @@ V1390
72344
72349
72350
-72384
+72368
72441
72704
72713
@@ -1165,6 +1195,12 @@ V1390
73113
73440
73463
+73472
+73489
+73490
+73531
+73534
+73537
73648
73649
73728
@@ -1173,14 +1209,20 @@ V1390
74863
74880
75076
+77712
+77809
77824
-78895
+78896
+78913
+78919
82944
83527
92160
92729
92736
92767
+92784
+92863
92880
92910
92928
@@ -1211,10 +1253,20 @@ V1390
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1289,6 +1341,10 @@ V1390
120771
120772
120780
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1299,14 +1355,30 @@ V1390
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123191
123198
123214
123215
+123536
+123566
123584
123628
+124112
+124140
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125184
@@ -1388,9 +1460,9 @@ V1390
127344
127370
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1401,4 +1473,6 @@ V1390
195102
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/AL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/AL.pl
index 43b1f158d9d..b1f8b704f6e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/AL.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/AL.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V56
+V58
1544
1545
1547
@@ -36,17 +36,17 @@ V56
1969
1984
2144
-2160
+2192
+2194
+2200
2208
-2259
+2250
64336
64830
-64832
-64976
+64848
+64975
65008
65021
-65022
-65024
65136
65279
68864
@@ -55,6 +55,8 @@ V56
68912
68922
68928
+69312
+69373
69424
69446
69457
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/AN.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/AN.pl
index 2ecdc30b841..d1eea10f3ca 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/AN.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/AN.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V14
+V16
1536
1542
1632
@@ -19,6 +19,8 @@ V14
1645
1757
1758
+2192
+2194
2274
2275
68912
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/B.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/B.pl
index 9b754a85543..56d40ad142b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/B.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/B.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/BN.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/BN.pl
index ca471ac31af..d4a21a54848 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/BN.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/BN.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/CS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/CS.pl
index e2ee9a73f95..2b28f14390f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/CS.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/CS.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/EN.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/EN.pl
index 6d8a78496ef..d2cb785889d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/EN.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/EN.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ES.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ES.pl
index 5d2e48424db..b87b6123d5d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ES.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ES.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ET.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ET.pl
index 93f3812de35..9df26957278 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ET.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ET.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/L.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/L.pl
index 675f0c118a1..b5ee734b197 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/L.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/L.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V925
+V955
65
91
97
@@ -138,6 +138,8 @@ V925
3073
3076
3077
+3132
+3133
3134
3137
3142
@@ -189,7 +191,7 @@ V925
3764
3773
3784
-3790
+3791
3864
3866
3893
@@ -245,7 +247,7 @@ V925
5906
5909
5938
-5941
+5940
5970
5972
6002
@@ -265,7 +267,7 @@ V925
6128
6138
6144
-6159
+6160
6277
6279
6313
@@ -303,7 +305,7 @@ V925
6783
6784
6832
-6849
+6863
6912
6916
6964
@@ -349,8 +351,6 @@ V925
7416
7418
7616
-7674
-7675
7680
8125
8126
@@ -433,7 +433,7 @@ V925
11647
11648
11744
-11859
+11870
11904
11930
11931
@@ -606,12 +606,18 @@ V925
69703
69714
69734
+69744
+69745
+69747
+69749
69759
69762
69811
69815
69817
69819
+69826
+69827
69888
69891
69927
@@ -636,6 +642,8 @@ V925
70200
70206
70207
+70209
+70210
70367
70368
70371
@@ -760,8 +768,20 @@ V925
73112
73459
73461
+73472
+73474
+73526
+73531
+73536
+73537
+73538
+73539
73685
73714
+78912
+78913
+78919
+78934
92912
92917
92976
@@ -778,6 +798,10 @@ V925
113823
113824
113828
+118528
+118574
+118576
+118599
119143
119146
119155
@@ -786,6 +810,8 @@ V925
119180
119210
119214
+119273
+119275
119296
119366
119552
@@ -824,12 +850,18 @@ V925
122917
122918
122923
+123023
+123024
123184
123191
+123566
+123567
123628
123632
123647
123648
+124140
+124144
124928
127020
127024
@@ -854,16 +886,18 @@ V925
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -877,27 +911,23 @@ V925
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/NSM.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/NSM.pl
index 8c9afe20198..63131e6aea4 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/NSM.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/NSM.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V644
+V682
768
880
1155
@@ -59,7 +59,9 @@ V644
2094
2137
2140
-2259
+2200
+2208
+2250
2274
2275
2307
@@ -141,6 +143,8 @@ V644
3073
3076
3077
+3132
+3133
3134
3137
3142
@@ -188,7 +192,7 @@ V644
3764
3773
3784
-3790
+3791
3864
3866
3893
@@ -236,7 +240,7 @@ V644
5906
5909
5938
-5941
+5940
5970
5972
6002
@@ -253,6 +257,8 @@ V644
6110
6155
6158
+6159
+6160
6277
6279
6313
@@ -284,7 +290,7 @@ V644
6783
6784
6832
-6849
+6863
6912
6916
6964
@@ -330,8 +336,6 @@ V644
7416
7418
7616
-7674
-7675
7680
8400
8433
@@ -443,18 +447,28 @@ V644
68904
69291
69293
+69373
+69376
69446
69457
+69506
+69510
69633
69634
69688
69703
+69744
+69745
+69747
+69749
69759
69762
69811
69815
69817
69819
+69826
+69827
69888
69891
69927
@@ -479,6 +493,8 @@ V644
70200
70206
70207
+70209
+70210
70367
70368
70371
@@ -601,6 +617,18 @@ V644
73112
73459
73461
+73472
+73474
+73526
+73531
+73536
+73537
+73538
+73539
+78912
+78913
+78919
+78934
92912
92917
92976
@@ -613,6 +641,10 @@ V644
94181
113821
113823
+118528
+118574
+118576
+118599
119143
119146
119163
@@ -645,10 +677,16 @@ V644
122917
122918
122923
+123023
+123024
123184
123191
+123566
+123567
123628
123632
+124140
+124144
125136
125143
125252
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ON.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ON.pl
index 044b72788ce..707437c7a84 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ON.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/ON.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V376
+V378
33
35
38
@@ -174,7 +174,7 @@ V376
11513
11520
11776
-11859
+11870
11904
11930
11931
@@ -238,9 +238,11 @@ V376
43882
43884
64830
-64832
+64848
+64975
+64976
65021
-65022
+65024
65040
65050
65072
@@ -297,6 +299,8 @@ V376
73714
94178
94179
+119273
+119275
119296
119362
119365
@@ -339,16 +343,18 @@ V376
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -362,27 +368,23 @@ V376
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/R.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/R.pl
index 628abd6269e..a4eb32c46a7 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/R.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/R.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V78
+V80
1424
1425
1470
@@ -41,8 +41,6 @@ V78
2137
2140
2144
-2160
-2208
8207
8208
64285
@@ -74,8 +72,12 @@ V78
69247
69291
69293
+69312
+69376
69424
69488
+69506
+69510
69632
124928
125136
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/WS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/WS.pl
index 39eb1df3e16..aed6acb892f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bc/WS.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bc/WS.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/BidiC/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/BidiC/Y.pl
index 770ac421605..7d0a6f40040 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/BidiC/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/BidiC/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/BidiM/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/BidiM/Y.pl
index 817a86cb428..5c8cdf21144 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/BidiM/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/BidiM/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V226
+V228
40
42
60
@@ -201,6 +201,8 @@ V226
11806
11808
11818
+11861
+11869
12296
12306
12308
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Blk/NB.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Blk/NB.pl
index 344bd8f294d..5355e8ce704 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Blk/NB.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Blk/NB.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,18 +10,16 @@
return <<'END';
-V109
-2160
-2208
+V103
12256
12272
66048
66176
66528
66560
-66928
+67008
67072
-67456
+67520
67584
67760
67808
@@ -35,10 +33,6 @@ V109
68736
68928
69216
-69312
-69376
-69488
-69552
70224
70272
70528
@@ -47,54 +41,54 @@ V109
71040
71376
71424
-71488
+71504
71680
71760
71840
72032
72096
-72368
-72384
-72448
+72544
72704
72896
72960
73136
73440
-73472
+73568
73648
75088
-77824
-78912
+77712
+78944
82944
83584
92160
-92784
-92880
93072
93760
93856
93952
94112
94176
-101776
-110592
+101760
+110576
111360
113664
113840
+118528
+118736
118784
119376
-119520
+119488
119680
119808
121520
-122880
-122928
+122624
+123024
123136
123216
-123584
+123536
123648
-124928
+124112
+124160
+124896
125152
125184
125280
@@ -113,7 +107,7 @@ V109
194560
195104
196608
-201552
+205744
917504
917632
917760
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/C.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/C.pl
index 19c07602dba..a5ccbcd349b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/C.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/C.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V120
+V128
41
42
93
@@ -97,6 +97,14 @@ V120
11816
11817
11818
+11862
+11863
+11864
+11865
+11866
+11867
+11868
+11869
12297
12298
12299
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/N.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/N.pl
index a5824e8b51f..667fe2b71fd 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/N.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/N.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V59
+V61
0
40
42
@@ -50,6 +50,8 @@ V59
10750
11810
11818
+11861
+11869
12296
12306
12308
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/O.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/O.pl
index af8fa080e36..aa7d9d3675a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/O.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Bpt/O.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V120
+V128
40
41
91
@@ -97,6 +97,14 @@ V120
11815
11816
11817
+11861
+11862
+11863
+11864
+11865
+11866
+11867
+11868
12296
12297
12298
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/CE/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/CE/Y.pl
index fe744286884..5e8d1845a39 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/CE/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/CE/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/CI/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/CI/Y.pl
index 0569ff2d9d2..55e309b887c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/CI/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/CI/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V820
+V874
39
40
46
@@ -95,7 +95,13 @@ V820
2094
2137
2140
-2259
+2184
+2185
+2192
+2194
+2200
+2208
+2249
2307
2362
2363
@@ -177,6 +183,8 @@ V820
3073
3076
3077
+3132
+3133
3134
3137
3142
@@ -230,7 +238,7 @@ V820
3782
3783
3784
-3790
+3791
3864
3866
3893
@@ -280,7 +288,7 @@ V820
5906
5909
5938
-5941
+5940
5970
5972
6002
@@ -298,7 +306,7 @@ V820
6109
6110
6155
-6159
+6160
6211
6212
6277
@@ -334,7 +342,7 @@ V820
6823
6824
6832
-6849
+6863
6912
6916
6964
@@ -386,8 +394,6 @@ V820
7544
7545
7579
-7674
-7675
7680
8125
8126
@@ -469,6 +475,8 @@ V820
42865
42888
42891
+42994
+42997
43000
43002
43010
@@ -548,7 +556,7 @@ V820
64286
64287
64434
-64450
+64451
65024
65040
65043
@@ -585,6 +593,12 @@ V820
66273
66422
66427
+67456
+67462
+67463
+67505
+67506
+67515
68097
68100
68101
@@ -601,12 +615,20 @@ V820
68904
69291
69293
+69373
+69376
69446
69457
+69506
+69510
69633
69634
69688
69703
+69744
+69745
+69747
+69749
69759
69762
69811
@@ -615,6 +637,8 @@ V820
69819
69821
69822
+69826
+69827
69837
69838
69888
@@ -641,6 +665,8 @@ V820
70200
70206
70207
+70209
+70210
70367
70368
70371
@@ -763,8 +789,18 @@ V820
73112
73459
73461
+73472
+73474
+73526
+73531
+73536
+73537
+73538
+73539
78896
-78905
+78913
+78919
+78934
92912
92917
92976
@@ -779,10 +815,20 @@ V820
94178
94179
94181
+110576
+110580
+110581
+110588
+110589
+110591
113821
113823
113824
113828
+118528
+118574
+118576
+118599
119143
119146
119155
@@ -815,10 +861,18 @@ V820
122917
122918
122923
+122928
+122990
+123023
+123024
123184
123198
+123566
+123567
123628
123632
+124139
+124144
125136
125143
125252
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/CWCF/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/CWCF/Y.pl
index 9bd24a5f477..ed050f57c60 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/CWCF/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/CWCF/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1228
+V1244
65
91
181
@@ -882,7 +882,7 @@ V1228
9398
9424
11264
-11311
+11312
11360
11361
11362
@@ -1211,12 +1211,20 @@ V1228
42941
42942
42943
+42944
+42945
42946
42947
42948
42952
42953
42954
+42960
+42961
+42966
+42967
+42968
+42969
42997
42998
43888
@@ -1231,6 +1239,14 @@ V1228
66600
66736
66772
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
68736
68787
71840
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/CWCM/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/CWCM/Y.pl
index 0b33565d4e4..104ca39a1b7 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/CWCM/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/CWCM/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V248
+V262
65
91
97
@@ -188,10 +188,6 @@ V248
9398
9450
11264
-11311
-11312
-11359
-11360
11377
11378
11380
@@ -226,9 +222,11 @@ V248
42902
42927
42928
-42944
-42946
42955
+42960
+42962
+42966
+42970
42997
42999
43859
@@ -249,6 +247,22 @@ V248
66772
66776
66812
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
68736
68787
68800
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/CWKCF/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/CWKCF/Y.pl
index 94cc5b2a082..873ea79c424 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/CWKCF/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/CWKCF/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1654
+V1678
65
91
160
@@ -652,7 +652,7 @@ V1654
6068
6070
6155
-6159
+6160
7296
7305
7312
@@ -1054,7 +1054,7 @@ V1654
10972
10973
11264
-11311
+11312
11360
11361
11362
@@ -1419,13 +1419,21 @@ V1654
42941
42942
42943
+42944
+42945
42946
42947
42948
42952
42953
42954
-42997
+42960
+42961
+42966
+42967
+42968
+42969
+42994
42998
43000
43002
@@ -1517,6 +1525,20 @@ V1654
66600
66736
66772
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+67457
+67462
+67463
+67505
+67506
+67515
68736
68787
71840
@@ -1573,6 +1595,8 @@ V1654
120780
120782
120832
+122928
+122990
125184
125218
126464
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/CWL/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/CWL/Y.pl
index 8a2661fedf3..f5a79f04f80 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/CWL/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/CWL/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1202
+V1218
65
91
192
@@ -862,7 +862,7 @@ V1202
9398
9424
11264
-11311
+11312
11360
11361
11362
@@ -1191,12 +1191,20 @@ V1202
42941
42942
42943
+42944
+42945
42946
42947
42948
42952
42953
42954
+42960
+42961
+42966
+42967
+42968
+42969
42997
42998
65313
@@ -1205,6 +1213,14 @@ V1202
66600
66736
66772
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
68736
68787
71840
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/CWT/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/CWT/Y.pl
index 412a23831d6..033adb16397 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/CWT/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/CWT/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1236
+V1252
97
123
181
@@ -888,7 +888,7 @@ V1236
9424
9450
11312
-11359
+11360
11361
11362
11365
@@ -1217,12 +1217,20 @@ V1236
42942
42943
42944
+42945
+42946
42947
42948
42952
42953
42954
42955
+42961
+42962
+42967
+42968
+42969
+42970
42998
42999
43859
@@ -1239,6 +1247,14 @@ V1236
66640
66776
66812
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
68800
68851
71872
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/CWU/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/CWU/Y.pl
index ee2fa1ce644..b251ae6a402 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/CWU/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/CWU/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1238
+V1254
97
123
181
@@ -890,7 +890,7 @@ V1238
9424
9450
11312
-11359
+11360
11361
11362
11365
@@ -1219,12 +1219,20 @@ V1238
42942
42943
42944
+42945
+42946
42947
42948
42952
42953
42954
42955
+42961
+42962
+42967
+42968
+42969
+42970
42998
42999
43859
@@ -1241,6 +1249,14 @@ V1238
66640
66776
66812
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
68800
68851
71872
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Cased/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Cased/Y.pl
index f3a9b880ba1..866044d9fa8 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Cased/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Cased/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V282
+V314
65
91
97
@@ -73,7 +73,7 @@ V282
4302
4304
4347
-4349
+4348
4352
5024
5110
@@ -166,10 +166,6 @@ V282
9398
9450
11264
-11311
-11312
-11359
-11360
11493
11499
11503
@@ -190,17 +186,21 @@ V282
42891
42895
42896
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
42999
43000
43003
43824
43867
43868
-43881
+43882
43888
43968
64256
@@ -217,6 +217,30 @@ V282
66772
66776
66812
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
+67456
+67457
+67459
+67462
+67463
+67505
+67506
+67515
68736
68787
68800
@@ -285,6 +309,14 @@ V282
120771
120772
120780
+122624
+122634
+122635
+122655
+122661
+122667
+122928
+122990
125184
125252
127280
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/A.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/A.pl
index 9c845384f51..ccd05e3a322 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/A.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/A.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V236
+V258
768
789
829
@@ -93,6 +93,12 @@ V236
2088
2089
2094
+2200
+2201
+2204
+2208
+2250
+2255
2260
2274
2276
@@ -131,6 +137,12 @@ V236
6837
6843
6845
+6849
+6851
+6853
+6858
+6859
+6863
7019
7020
7021
@@ -215,6 +227,10 @@ V236
69451
69452
69453
+69506
+69507
+69508
+69509
69888
69891
70502
@@ -241,10 +257,16 @@ V236
122917
122918
122923
+123023
+123024
123184
123191
+123566
+123567
123628
123632
+124143
+124144
125252
125258
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/AL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/AL.pl
index bbd78bedb02..5bf4a14b190 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/AL.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/AL.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/AR.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/AR.pl
index 4c25ec739a1..cfc3e845d92 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/AR.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/AR.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V10
+V12
789
790
794
@@ -21,4 +21,6 @@ V10
7671
12332
12333
+124140
+124142
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/ATAR.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/ATAR.pl
index 43d543a4a5c..c5e45a40e4d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/ATAR.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/ATAR.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/B.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/B.pl
index cb77de7b67e..93929488e68 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/B.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/B.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V156
+V170
790
794
796
@@ -77,7 +77,9 @@ V156
2046
2137
2140
-2259
+2201
+2204
+2255
2260
2275
2276
@@ -115,6 +117,10 @@ V156
6846
6847
6849
+6851
+6853
+6858
+6859
7020
7021
7381
@@ -155,16 +161,24 @@ V156
68155
68326
68327
+69373
+69376
69446
69448
69451
69452
69453
69457
+69507
+69508
+69509
+69510
119163
119171
119178
119180
+124142
+124143
125136
125143
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/BR.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/BR.pl
index 692fb7beca9..908144143f7 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/BR.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/BR.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/DB.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/DB.pl
index 0513b3e8d75..e3d2545e19e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/DB.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/DB.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/NK.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/NK.pl
index 369397c8ee6..0bd933faa4b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/NK.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/NK.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V50
+V52
2364
2365
2492
@@ -21,6 +21,8 @@ V50
2749
2876
2877
+3132
+3133
3260
3261
4151
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/NR.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/NR.pl
index ff22c10e0d9..f5539529108 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/NR.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/NR.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V369
+V385
0
768
847
@@ -60,7 +60,9 @@ V369
2094
2137
2140
-2259
+2200
+2208
+2250
2274
2275
2304
@@ -90,6 +92,8 @@ V369
2894
3021
3022
+3132
+3133
3149
3150
3157
@@ -143,7 +147,7 @@ V369
4957
4960
5908
-5909
+5910
5940
5941
6098
@@ -165,7 +169,7 @@ V369
6832
6846
6847
-6849
+6863
6964
6965
6980
@@ -193,8 +197,6 @@ V369
7416
7418
7616
-7674
-7675
7680
8400
8413
@@ -274,10 +276,16 @@ V369
68904
69291
69293
+69373
+69376
69446
69457
+69506
+69510
69702
69703
+69744
+69745
69759
69760
69817
@@ -342,6 +350,8 @@ V369
73030
73111
73112
+73537
+73539
92912
92917
92976
@@ -372,10 +382,16 @@ V369
122917
122918
122923
+123023
+123024
123184
123191
+123566
+123567
123628
123632
+124140
+124144
125136
125143
125252
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/OV.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/OV.pl
index 8b06e29aecd..a5e1340fe48 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/OV.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/OV.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/VR.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/VR.pl
index 6f33402320a..00274d8d866 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/VR.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ccc/VR.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V108
+V112
2381
2382
2509
@@ -42,7 +42,7 @@ V108
4153
4155
5908
-5909
+5910
5940
5941
6098
@@ -75,6 +75,8 @@ V108
68160
69702
69703
+69744
+69745
69759
69760
69817
@@ -119,4 +121,6 @@ V108
73030
73111
73112
+73537
+73539
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/CompEx/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/CompEx/Y.pl
index a234d7b3ea3..a1289b8d16f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/CompEx/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/CompEx/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/DI/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/DI/Y.pl
index 730ebc7b108..0b3c4b0145d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/DI/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/DI/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -22,7 +22,7 @@ V34
6068
6070
6155
-6159
+6160
8203
8208
8234
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dash/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dash/Y.pl
index 746ef828dae..207f991898e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dash/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dash/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V44
+V46
45
46
1418
@@ -39,6 +39,8 @@ V44
11836
11840
11841
+11869
+11870
12316
12317
12336
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dep/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dep/Y.pl
index 3ae48eabdf4..bcb727ef63d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dep/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dep/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dia/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dia/Y.pl
index f665e7e52f3..4fd7eed8241 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dia/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dia/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V352
+V390
94
95
96
@@ -67,6 +67,10 @@ V352
2038
2072
2074
+2200
+2208
+2249
+2259
2275
2303
2364
@@ -99,6 +103,8 @@ V352
2902
3021
3022
+3132
+3133
3149
3150
3260
@@ -151,6 +157,8 @@ V352
4252
4957
4960
+5908
+5910
6089
6100
6109
@@ -162,7 +170,9 @@ V352
6783
6784
6832
-6846
+6847
+6849
+6860
6964
6965
6980
@@ -188,8 +198,6 @@ V352
7620
7632
7669
-7674
-7677
7680
8125
8126
@@ -271,12 +279,26 @@ V352
65508
66272
66273
+67456
+67462
+67463
+67505
+67506
+67515
68325
68327
68898
68904
+69373
+69376
69446
69457
+69506
+69510
+69702
+69703
+69744
+69745
69817
69819
69939
@@ -335,6 +357,8 @@ V352
73030
73111
73112
+78919
+78934
92912
92917
92976
@@ -343,6 +367,16 @@ V352
94112
94192
94194
+110576
+110580
+110581
+110588
+110589
+110591
+118528
+118574
+118576
+118599
119143
119146
119149
@@ -353,8 +387,12 @@ V352
119180
119210
119214
+122928
+122990
123184
123191
+123566
+123567
123628
123632
125136
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Com.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Com.pl
index 5ffefa0ab1b..8d3028ea970 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Com.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Com.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Enc.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Enc.pl
index ac2e24132d0..42b70367b71 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Enc.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Enc.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Fin.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Fin.pl
index 9e35c365b86..ee4eb8c7329 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Fin.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Fin.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Font.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Font.pl
index 644da5e306a..79ab6424be1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Font.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Font.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Init.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Init.pl
index e4c2a1523ef..9bc44532d11 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Init.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Init.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Iso.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Iso.pl
index 8347ec12496..2846a6290e7 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Iso.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Iso.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Med.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Med.pl
index 7c4299c0f42..fcddf7d5a49 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Med.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Med.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Nar.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Nar.pl
index 9e84e4c2b24..1c42401c1c2 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Nar.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Nar.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Nb.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Nb.pl
index 61bf62af5ad..7e3bbbbe7cd 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Nb.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Nb.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/NonCanon.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/NonCanon.pl
index 57526bc6314..924fc608c0d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/NonCanon.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/NonCanon.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V374
+V384
160
161
168
@@ -205,6 +205,8 @@ V374
42654
42864
42865
+42994
+42997
43000
43002
43868
@@ -257,6 +259,12 @@ V374
65511
65512
65519
+67457
+67462
+67463
+67505
+67506
+67515
119808
119893
119894
@@ -299,6 +307,8 @@ V374
120780
120782
120832
+122928
+122990
126464
126468
126469
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sqr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sqr.pl
index 952128c13fe..81fa2e80ead 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sqr.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sqr.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sub.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sub.pl
index 2b4dcc50fb1..bb0b26a1d37 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sub.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sub.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V8
+V10
7522
7531
8320
@@ -19,4 +19,6 @@ V8
8349
11388
11389
+122961
+122987
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sup.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sup.pl
index 5d133daa80c..b01bff3fbab 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sup.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Sup.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V50
+V62
170
171
178
@@ -53,12 +53,24 @@ V50
42654
42864
42865
+42994
+42997
43000
43002
43868
43872
43881
43882
+67457
+67462
+67463
+67505
+67506
+67515
+122928
+122961
+122987
+122990
127338
127341
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Vert.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Vert.pl
index 21ab03fa703..f138ae31411 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Vert.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Dt/Vert.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/EBase/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/EBase/Y.pl
index 449c246e5c8..3785518ac6d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/EBase/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/EBase/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V76
+V80
9757
9758
9977
@@ -87,4 +87,8 @@ V76
129488
129489
129502
+129731
+129734
+129776
+129785
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/EComp/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/EComp/Y.pl
index e0abdf60d40..f98616e9592 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/EComp/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/EComp/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/EPres/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/EPres/Y.pl
index f898c9dcfbf..edd01fb330a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/EPres/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/EPres/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -143,34 +143,34 @@ V162
128723
128725
128728
+128732
+128736
128747
128749
128756
128765
128992
129004
+129008
+129009
129292
129339
129340
129350
129351
-129401
-129402
-129484
-129485
129536
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ea/A.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ea/A.pl
index 92499cbefea..6d78bc259c2 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ea/A.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ea/A.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ea/H.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ea/H.pl
index 18a6384cfef..365e725a38d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ea/H.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ea/H.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ea/N.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ea/N.pl
index 64ef39b8a80..3c1cb7bf60b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ea/N.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ea/N.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V553
+V563
0
32
127
@@ -450,10 +450,20 @@ V553
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -524,36 +534,36 @@ V553
128723
128725
128728
+128732
+128736
128747
128749
128756
128765
128992
129004
+129008
+129009
129292
129339
129340
129350
129351
-129401
-129402
-129484
-129485
129536
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
131072
196606
196608
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ea/Na.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ea/Na.pl
index a8f9c065a55..f5e9acc8ee5 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ea/Na.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ea/Na.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ea/W.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ea/W.pl
index a82c88c3425..5f5b06168d7 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ea/W.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ea/W.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V228
+V238
4352
4448
8986
@@ -135,10 +135,20 @@ V228
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -205,36 +215,36 @@ V228
128723
128725
128728
+128732
+128736
128747
128749
128756
128765
128992
129004
+129008
+129009
129292
129339
129340
129350
129351
-129401
-129402
-129484
-129485
129536
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
131072
196606
196608
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Emoji/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Emoji/Y.pl
index e66f67d425c..3cbbc91a83c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Emoji/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Emoji/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V304
+V302
35
36
42
@@ -279,7 +279,7 @@ V304
128723
128725
128728
-128736
+128732
128742
128745
128746
@@ -291,28 +291,26 @@ V304
128765
128992
129004
+129008
+129009
129292
129339
129340
129350
129351
-129401
-129402
-129484
-129485
129536
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ext/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ext/Y.pl
index e78c25f949b..56501ad2b4f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ext/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ext/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V64
+V66
183
184
720
@@ -59,6 +59,8 @@ V64
43765
65392
65393
+67457
+67459
70493
70494
71110
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/ExtPict/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/ExtPict/Y.pl
index f8d8fe5f940..90a9ed31e1e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/ExtPict/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/ExtPict/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/GCB/CN.pl b/Master/tlpkg/tlperl/lib/unicore/lib/GCB/CN.pl
index c462a462bd2..d04a5de9cc4 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/GCB/CN.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/GCB/CN.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -38,7 +38,7 @@ V38
65520
65532
78896
-78905
+78912
113824
113828
119155
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/GCB/EX.pl b/Master/tlpkg/tlperl/lib/unicore/lib/GCB/EX.pl
index 9895308bca3..c66cd8f23fc 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/GCB/EX.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/GCB/EX.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V690
+V728
768
880
1155
@@ -59,7 +59,9 @@ V690
2094
2137
2140
-2259
+2200
+2208
+2250
2274
2275
2307
@@ -149,6 +151,8 @@ V690
3073
3076
3077
+3132
+3133
3134
3137
3142
@@ -212,7 +216,7 @@ V690
3764
3773
3784
-3790
+3791
3864
3866
3893
@@ -260,7 +264,7 @@ V690
5906
5909
5938
-5941
+5940
5970
5972
6002
@@ -277,6 +281,8 @@ V690
6110
6155
6158
+6159
+6160
6277
6279
6313
@@ -308,7 +314,7 @@ V690
6783
6784
6832
-6849
+6863
6912
6916
6964
@@ -352,8 +358,6 @@ V690
7416
7418
7616
-7674
-7675
7680
8204
8205
@@ -469,18 +473,28 @@ V690
68904
69291
69293
+69373
+69376
69446
69457
+69506
+69510
69633
69634
69688
69703
+69744
+69745
+69747
+69749
69759
69762
69811
69815
69817
69819
+69826
+69827
69888
69891
69927
@@ -505,6 +519,8 @@ V690
70200
70206
70207
+70209
+70210
70367
70368
70371
@@ -639,6 +655,18 @@ V690
73112
73459
73461
+73472
+73474
+73526
+73531
+73536
+73537
+73538
+73539
+78912
+78913
+78919
+78934
92912
92917
92976
@@ -651,6 +679,10 @@ V690
94181
113821
113823
+118528
+118574
+118576
+118599
119141
119142
119143
@@ -687,10 +719,16 @@ V690
122917
122918
122923
+123023
+123024
123184
123191
+123566
+123567
123628
123632
+124140
+124144
125136
125143
125252
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/GCB/LV.pl b/Master/tlpkg/tlperl/lib/unicore/lib/GCB/LV.pl
index cea43142899..830579251be 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/GCB/LV.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/GCB/LV.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/GCB/LVT.pl b/Master/tlpkg/tlperl/lib/unicore/lib/GCB/LVT.pl
index 5afa4b11117..956bdc1f572 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/GCB/LVT.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/GCB/LVT.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/GCB/PP.pl b/Master/tlpkg/tlperl/lib/unicore/lib/GCB/PP.pl
index c3f1b20c2a5..533245549ec 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/GCB/PP.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/GCB/PP.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,13 +10,15 @@
return <<'END';
-V26
+V30
1536
1542
1757
1758
1807
1808
+2192
+2194
2274
2275
3406
@@ -37,4 +39,6 @@ V26
72330
73030
73031
+73474
+73475
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/GCB/SM.pl b/Master/tlpkg/tlperl/lib/unicore/lib/GCB/SM.pl
index dff8c0cd99b..5344eb51b61 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/GCB/SM.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/GCB/SM.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V318
+V330
2307
2308
2363
@@ -73,6 +73,8 @@ V318
3273
3274
3276
+3315
+3316
3330
3332
3391
@@ -105,6 +107,10 @@ V318
4184
4228
4229
+5909
+5910
+5940
+5941
6070
6071
6078
@@ -273,8 +279,6 @@ V318
71344
71350
71351
-71456
-71458
71462
71463
71724
@@ -321,6 +325,14 @@ V318
73111
73461
73463
+73475
+73476
+73524
+73526
+73534
+73536
+73537
+73538
94033
94088
94192
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/GCB/XX.pl b/Master/tlpkg/tlperl/lib/unicore/lib/GCB/XX.pl
index 33a0f547b9c..d4ba53a8322 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/GCB/XX.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/GCB/XX.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V619
+V657
32
127
160
@@ -70,7 +70,11 @@ V619
2094
2137
2140
-2259
+2192
+2194
+2200
+2208
+2250
2308
2362
2365
@@ -152,6 +156,8 @@ V619
3032
3072
3077
+3132
+3133
3134
3141
3142
@@ -176,6 +182,8 @@ V619
3287
3298
3300
+3315
+3316
3328
3332
3387
@@ -213,7 +221,7 @@ V619
3763
3773
3784
-3790
+3791
3864
3866
3893
@@ -257,7 +265,7 @@ V619
4957
4960
5906
-5909
+5910
5938
5941
5970
@@ -269,7 +277,7 @@ V619
6109
6110
6155
-6159
+6160
6277
6279
6313
@@ -291,7 +299,7 @@ V619
6783
6784
6832
-6849
+6863
6912
6917
6964
@@ -317,8 +325,6 @@ V619
7415
7418
7616
-7674
-7675
7680
8203
8208
@@ -442,18 +448,28 @@ V619
68904
69291
69293
+69373
+69376
69446
69457
+69506
+69510
69632
69635
69688
69703
+69744
+69745
+69747
+69749
69759
69763
69808
69819
69821
69822
+69826
+69827
69837
69838
69888
@@ -478,6 +494,8 @@ V619
70200
70206
70207
+70209
+70210
70367
70379
70400
@@ -515,6 +533,8 @@ V619
71339
71352
71453
+71456
+71458
71468
71724
71739
@@ -564,8 +584,16 @@ V619
73112
73459
73463
+73472
+73476
+73524
+73531
+73534
+73539
78896
-78905
+78913
+78919
+78934
92912
92917
92976
@@ -584,6 +612,10 @@ V619
113823
113824
113828
+118528
+118574
+118576
+118599
119141
119146
119149
@@ -616,10 +648,16 @@ V619
122917
122918
122923
+123023
+123024
123184
123191
+123566
+123567
123628
123632
+124140
+124144
125136
125143
125252
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/C.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/C.pl
index 97a931d0649..9650f1bd8c6 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/C.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/C.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1357
+V1423
0
32
127
@@ -42,7 +42,7 @@ V1357
1525
1542
1564
-1566
+1565
1757
1758
1806
@@ -62,11 +62,9 @@ V1357
2143
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2191
+2200
2274
2275
2436
@@ -224,7 +222,7 @@ V1357
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -234,6 +232,8 @@ V1357
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -256,14 +256,14 @@ V1357
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -323,7 +323,7 @@ V1357
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -391,10 +391,8 @@ V1357
5792
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5943
5952
5972
@@ -412,7 +410,7 @@ V1357
6138
6144
6158
-6160
+6159
6170
6176
6265
@@ -451,11 +449,11 @@ V1357
6816
6830
6832
-6849
+6863
6912
-6988
+6989
6992
-7037
+7039
7040
7156
7164
@@ -471,8 +469,6 @@ V1357
7376
7419
7424
-7674
-7675
7958
7960
7966
@@ -517,7 +513,7 @@ V1357
8336
8349
8352
-8384
+8385
8400
8433
8448
@@ -531,10 +527,6 @@ V1357
11126
11158
11159
-11311
-11312
-11359
-11360
11508
11513
11558
@@ -565,7 +557,7 @@ V1357
11736
11743
11744
-11859
+11870
11904
11930
11931
@@ -589,8 +581,6 @@ V1357
12784
12831
12832
-40957
-40960
42125
42128
42183
@@ -599,10 +589,14 @@ V1357
42560
42744
42752
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43053
43056
43066
@@ -673,16 +667,14 @@ V1357
64323
64325
64326
-64450
+64451
64467
-64832
-64848
64912
64914
64968
+64975
+64976
65008
-65022
-65024
65050
65056
65107
@@ -767,13 +759,33 @@ V1357
66864
66916
66927
-66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -856,10 +868,12 @@ V1357
69294
69296
69298
-69376
+69373
69416
69424
69466
+69488
+69514
69552
69580
69600
@@ -867,11 +881,11 @@ V1357
69632
69710
69714
-69744
+69750
69759
69821
69822
-69826
+69827
69840
69865
69872
@@ -889,7 +903,7 @@ V1357
70144
70162
70163
-70207
+70210
70272
70279
70280
@@ -953,7 +967,7 @@ V1357
71264
71277
71296
-71353
+71354
71360
71370
71424
@@ -961,7 +975,7 @@ V1357
71453
71468
71472
-71488
+71495
71680
71740
71840
@@ -992,8 +1006,10 @@ V1357
72264
72272
72355
-72384
+72368
72441
+72448
+72458
72704
72713
72714
@@ -1036,6 +1052,12 @@ V1357
73130
73440
73465
+73472
+73489
+73490
+73531
+73534
+73562
73648
73649
73664
@@ -1048,8 +1070,12 @@ V1357
74869
74880
75076
+77712
+77811
77824
-78895
+78896
+78912
+78934
82944
83527
92160
@@ -1059,7 +1085,9 @@ V1357
92768
92778
92782
-92784
+92863
+92864
+92874
92880
92910
92912
@@ -1092,10 +1120,20 @@ V1357
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1110,6 +1148,12 @@ V1357
113818
113820
113824
+118528
+118574
+118576
+118599
+118608
+118724
118784
119030
119040
@@ -1117,9 +1161,11 @@ V1357
119081
119155
119163
-119273
+119275
119296
119366
+119488
+119508
119520
119540
119552
@@ -1172,6 +1218,10 @@ V1357
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1182,6 +1232,10 @@ V1357
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1190,10 +1244,22 @@ V1357
123210
123214
123216
+123536
+123567
123584
123642
123647
123648
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125127
@@ -1302,16 +1368,18 @@ V1357
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -1325,27 +1393,23 @@ V1357
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
@@ -1353,9 +1417,9 @@ V1357
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1366,6 +1430,8 @@ V1357
195102
196608
201547
+201552
+205744
917760
918000
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Cf.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Cf.pl
index 372239d7513..6fc1e394814 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Cf.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Cf.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V40
+V42
173
174
1536
@@ -21,6 +21,8 @@ V40
1758
1807
1808
+2192
+2194
2274
2275
6158
@@ -42,7 +44,7 @@ V40
69837
69838
78896
-78905
+78912
113824
113828
119155
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Cn.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Cn.pl
index 022f0ce12a3..4a80089452b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Cn.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Cn.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1353
+V1413
888
890
896
@@ -35,8 +35,6 @@ V1353
1519
1525
1536
-1565
-1566
1806
1807
1867
@@ -54,11 +52,11 @@ V1353
2143
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2191
+2192
+2194
+2200
2436
2437
2445
@@ -214,7 +212,7 @@ V1353
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -224,6 +222,8 @@ V1353
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -246,14 +246,14 @@ V1353
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -313,7 +313,7 @@ V1353
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -381,10 +381,8 @@ V1353
5792
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5943
5952
5972
@@ -401,8 +399,6 @@ V1353
6128
6138
6144
-6159
-6160
6170
6176
6265
@@ -441,11 +437,11 @@ V1353
6816
6830
6832
-6849
+6863
6912
-6988
+6989
6992
-7037
+7039
7040
7156
7164
@@ -461,8 +457,6 @@ V1353
7376
7419
7424
-7674
-7675
7958
7960
7966
@@ -503,7 +497,7 @@ V1353
8336
8349
8352
-8384
+8385
8400
8433
8448
@@ -517,10 +511,6 @@ V1353
11126
11158
11159
-11311
-11312
-11359
-11360
11508
11513
11558
@@ -551,7 +541,7 @@ V1353
11736
11743
11744
-11859
+11870
11904
11930
11931
@@ -575,8 +565,6 @@ V1353
12784
12831
12832
-40957
-40960
42125
42128
42183
@@ -585,10 +573,14 @@ V1353
42560
42744
42752
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43053
43056
43066
@@ -659,16 +651,14 @@ V1353
64323
64325
64326
-64450
+64451
64467
-64832
-64848
64912
64914
64968
+64975
+64976
65008
-65022
-65024
65050
65056
65107
@@ -755,13 +745,33 @@ V1353
66864
66916
66927
-66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -844,10 +854,12 @@ V1353
69294
69296
69298
-69376
+69373
69416
69424
69466
+69488
+69514
69552
69580
69600
@@ -855,9 +867,9 @@ V1353
69632
69710
69714
-69744
+69750
69759
-69826
+69827
69837
69838
69840
@@ -877,7 +889,7 @@ V1353
70144
70162
70163
-70207
+70210
70272
70279
70280
@@ -941,7 +953,7 @@ V1353
71264
71277
71296
-71353
+71354
71360
71370
71424
@@ -949,7 +961,7 @@ V1353
71453
71468
71472
-71488
+71495
71680
71740
71840
@@ -980,8 +992,10 @@ V1353
72264
72272
72355
-72384
+72368
72441
+72448
+72458
72704
72713
72714
@@ -1024,6 +1038,12 @@ V1353
73130
73440
73465
+73472
+73489
+73490
+73531
+73534
+73562
73648
73649
73664
@@ -1036,10 +1056,10 @@ V1353
74869
74880
75076
+77712
+77811
77824
-78895
-78896
-78905
+78934
82944
83527
92160
@@ -1049,7 +1069,9 @@ V1353
92768
92778
92782
-92784
+92863
+92864
+92874
92880
92910
92912
@@ -1082,10 +1104,20 @@ V1353
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1100,14 +1132,22 @@ V1353
113818
113820
113828
+118528
+118574
+118576
+118599
+118608
+118724
118784
119030
119040
119079
119081
-119273
+119275
119296
119366
+119488
+119508
119520
119540
119552
@@ -1160,6 +1200,10 @@ V1353
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1170,6 +1214,10 @@ V1353
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1178,10 +1226,22 @@ V1353
123210
123214
123216
+123536
+123567
123584
123642
123647
123648
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125127
@@ -1290,16 +1350,18 @@ V1353
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -1313,27 +1375,23 @@ V1353
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
@@ -1341,9 +1399,9 @@ V1353
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1354,6 +1412,8 @@ V1353
195102
196608
201547
+201552
+205744
917505
917506
917536
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/L.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/L.pl
index d3925eaa9a9..1cb2028be5c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/L.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/L.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1244
+V1318
65
91
97
@@ -109,10 +109,12 @@ V1244
2137
2144
2155
+2160
+2184
+2185
+2191
2208
-2229
-2230
-2248
+2250
2308
2362
2365
@@ -241,6 +243,8 @@ V1244
3134
3160
3163
+3165
+3166
3168
3170
3200
@@ -257,7 +261,7 @@ V1244
3258
3261
3262
-3294
+3293
3295
3296
3298
@@ -400,10 +404,8 @@ V1244
5873
5881
5888
-5901
-5902
5906
-5920
+5919
5938
5952
5970
@@ -446,7 +448,7 @@ V1244
6917
6964
6981
-6988
+6989
7043
7073
7086
@@ -548,10 +550,6 @@ V1244
8579
8581
11264
-11311
-11312
-11359
-11360
11493
11499
11503
@@ -612,8 +610,6 @@ V1244
13312
19904
19968
-40957
-40960
42125
42192
42238
@@ -634,10 +630,14 @@ V1244
42786
42889
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43010
43011
43014
@@ -813,12 +813,34 @@ V1244
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -889,12 +911,18 @@ V1244
69416
69424
69446
+69488
+69506
69552
69573
69600
69623
69635
69688
+69745
+69747
+69749
+69750
69763
69808
69840
@@ -921,6 +949,8 @@ V1244
70162
70163
70188
+70207
+70209
70272
70279
70280
@@ -977,6 +1007,8 @@ V1244
71353
71424
71451
+71488
+71495
71680
71724
71840
@@ -1015,7 +1047,7 @@ V1244
72330
72349
72350
-72384
+72368
72441
72704
72713
@@ -1043,20 +1075,32 @@ V1244
73113
73440
73459
+73474
+73475
+73476
+73489
+73490
+73524
73648
73649
73728
74650
74880
75076
+77712
+77809
77824
-78895
+78896
+78913
+78919
82944
83527
92160
92729
92736
92767
+92784
+92863
92880
92910
92928
@@ -1085,10 +1129,20 @@ V1244
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1161,14 +1215,32 @@ V1244
120771
120772
120780
+122624
+122655
+122661
+122667
+122928
+122990
123136
123181
123191
123198
123214
123215
+123536
+123566
123584
123628
+124112
+124140
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125184
@@ -1242,9 +1314,9 @@ V1244
126635
126652
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1255,4 +1327,6 @@ V1244
195102
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/LC.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/LC.pl
index e3174282bac..57bffd596cd 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/LC.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/LC.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V264
+V286
65
91
97
@@ -150,10 +150,6 @@ V264
8579
8581
11264
-11311
-11312
-11359
-11360
11388
11390
11493
@@ -178,9 +174,13 @@ V264
42891
42895
42896
-42944
-42946
42955
+42960
+42962
+42963
+42964
+42965
+42970
42997
42999
43002
@@ -205,6 +205,22 @@ V264
66772
66776
66812
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
68736
68787
68800
@@ -273,6 +289,12 @@ V264
120771
120772
120780
+122624
+122634
+122635
+122655
+122661
+122667
125184
125252
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Ll.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Ll.pl
index 493777b7c65..8d96b4cfd9e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Ll.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Ll.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1290
+V1316
97
123
181
@@ -874,7 +874,7 @@ V1290
8580
8581
11312
-11359
+11360
11361
11362
11365
@@ -1211,12 +1211,24 @@ V1290
42942
42943
42944
+42945
+42946
42947
42948
42952
42953
42954
42955
+42961
+42962
+42963
+42964
+42965
+42966
+42967
+42968
+42969
+42970
42998
42999
43002
@@ -1237,6 +1249,14 @@ V1290
66640
66776
66812
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
68800
68851
71872
@@ -1299,6 +1319,12 @@ V1290
120778
120779
120780
+122624
+122634
+122635
+122655
+122661
+122667
125218
125252
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lm.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lm.pl
index 03e3df86948..6098199ba7c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lm.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lm.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V122
+V142
688
706
710
@@ -41,6 +41,8 @@ V122
2085
2088
2089
+2249
+2250
2417
2418
3654
@@ -101,6 +103,8 @@ V122
42865
42888
42889
+42994
+42997
43000
43002
43471
@@ -121,6 +125,12 @@ V122
65393
65438
65440
+67456
+67462
+67463
+67505
+67506
+67515
92992
92996
94099
@@ -129,8 +139,18 @@ V122
94178
94179
94180
+110576
+110580
+110581
+110588
+110589
+110591
+122928
+122990
123191
123198
+124139
+124140
125259
125260
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lo.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lo.pl
index 679c431ca66..f940ff0b23d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lo.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lo.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V978
+V1020
170
171
186
@@ -57,10 +57,12 @@ V978
2137
2144
2155
+2160
+2184
+2185
+2191
2208
-2229
-2230
-2248
+2249
2308
2362
2365
@@ -189,6 +191,8 @@ V978
3134
3160
3163
+3165
+3166
3168
3170
3200
@@ -205,7 +209,7 @@ V978
3258
3261
3262
-3294
+3293
3295
3296
3298
@@ -334,10 +338,8 @@ V978
5873
5881
5888
-5901
-5902
5906
-5920
+5919
5938
5952
5970
@@ -378,7 +380,7 @@ V978
6917
6964
6981
-6988
+6989
7043
7073
7086
@@ -444,8 +446,6 @@ V978
13312
19904
19968
-40957
-40960
40981
40982
42125
@@ -701,12 +701,18 @@ V978
69416
69424
69446
+69488
+69506
69552
69573
69600
69623
69635
69688
+69745
+69747
+69749
+69750
69763
69808
69840
@@ -733,6 +739,8 @@ V978
70162
70163
70188
+70207
+70209
70272
70279
70280
@@ -789,6 +797,8 @@ V978
71353
71424
71451
+71488
+71495
71680
71724
71935
@@ -825,7 +835,7 @@ V978
72330
72349
72350
-72384
+72368
72441
72704
72713
@@ -853,20 +863,32 @@ V978
73113
73440
73459
+73474
+73475
+73476
+73489
+73490
+73524
73648
73649
73728
74650
74880
75076
+77712
+77809
77824
-78895
+78896
+78913
+78919
82944
83527
92160
92729
92736
92767
+92784
+92863
92880
92910
92928
@@ -886,9 +908,13 @@ V978
101632
101641
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -901,12 +927,26 @@ V978
113801
113808
113818
+122634
+122635
123136
123181
123214
123215
+123536
+123566
123584
123628
+124112
+124139
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
126464
@@ -976,9 +1016,9 @@ V978
126635
126652
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -989,4 +1029,6 @@ V978
195102
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lu.pl
index 10748eca7a2..bbd5798a852 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lu.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Lu.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1276
+V1292
65
91
192
@@ -874,7 +874,7 @@ V1276
8579
8580
11264
-11311
+11312
11360
11361
11362
@@ -1203,12 +1203,20 @@ V1276
42941
42942
42943
+42944
+42945
42946
42947
42948
42952
42953
42954
+42960
+42961
+42966
+42967
+42968
+42969
42997
42998
65313
@@ -1217,6 +1225,14 @@ V1276
66600
66736
66772
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
68736
68787
71840
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/M.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/M.pl
index bf86b250aa8..4eb46862d06 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/M.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/M.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V580
+V620
768
880
1155
@@ -59,7 +59,9 @@ V580
2094
2137
2140
-2259
+2200
+2208
+2250
2274
2275
2308
@@ -143,6 +145,8 @@ V580
3032
3072
3077
+3132
+3133
3134
3141
3142
@@ -167,6 +171,8 @@ V580
3287
3298
3300
+3315
+3316
3328
3332
3387
@@ -204,7 +210,7 @@ V580
3764
3773
3784
-3790
+3791
3864
3866
3893
@@ -246,7 +252,7 @@ V580
4957
4960
5906
-5909
+5910
5938
5941
5970
@@ -259,6 +265,8 @@ V580
6110
6155
6158
+6159
+6160
6277
6279
6313
@@ -276,7 +284,7 @@ V580
6783
6784
6832
-6849
+6863
6912
6917
6964
@@ -302,8 +310,6 @@ V580
7415
7418
7616
-7674
-7675
7680
8400
8433
@@ -407,16 +413,26 @@ V580
68904
69291
69293
+69373
+69376
69446
69457
+69506
+69510
69632
69635
69688
69703
+69744
+69745
+69747
+69749
69759
69763
69808
69819
+69826
+69827
69888
69891
69927
@@ -437,6 +453,8 @@ V580
70200
70206
70207
+70209
+70210
70367
70379
70400
@@ -531,6 +549,18 @@ V580
73112
73459
73463
+73472
+73474
+73475
+73476
+73524
+73531
+73534
+73539
+78912
+78913
+78919
+78934
92912
92917
92976
@@ -547,6 +577,10 @@ V580
94194
113821
113823
+118528
+118574
+118576
+118599
119141
119146
119149
@@ -581,10 +615,16 @@ V580
122917
122918
122923
+123023
+123024
123184
123191
+123566
+123567
123628
123632
+124140
+124144
125136
125143
125252
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Mc.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Mc.pl
index 0f909de4b59..66c279f640c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Mc.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Mc.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V350
+V364
2307
2308
2363
@@ -81,6 +81,8 @@ V350
3276
3285
3287
+3315
+3316
3330
3332
3390
@@ -125,6 +127,10 @@ V350
4240
4250
4253
+5909
+5910
+5940
+5941
6070
6071
6078
@@ -353,6 +359,14 @@ V350
73111
73461
73463
+73475
+73476
+73524
+73526
+73534
+73536
+73537
+73538
94033
94088
94192
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Me.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Me.pl
index ed6d2a1e625..630c147dacf 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Me.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Me.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Mn.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Mn.pl
index 0d285898621..ce45d65c551 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Mn.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Mn.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V654
+V692
768
880
1155
@@ -59,7 +59,9 @@ V654
2094
2137
2140
-2259
+2200
+2208
+2250
2274
2275
2307
@@ -141,6 +143,8 @@ V654
3073
3076
3077
+3132
+3133
3134
3137
3142
@@ -192,7 +196,7 @@ V654
3764
3773
3784
-3790
+3791
3864
3866
3893
@@ -240,7 +244,7 @@ V654
5906
5909
5938
-5941
+5940
5970
5972
6002
@@ -257,6 +261,8 @@ V654
6110
6155
6158
+6159
+6160
6277
6279
6313
@@ -290,7 +296,7 @@ V654
6832
6846
6847
-6849
+6863
6912
6916
6964
@@ -336,8 +342,6 @@ V654
7416
7418
7616
-7674
-7675
7680
8400
8413
@@ -453,18 +457,28 @@ V654
68904
69291
69293
+69373
+69376
69446
69457
+69506
+69510
69633
69634
69688
69703
+69744
+69745
+69747
+69749
69759
69762
69811
69815
69817
69819
+69826
+69827
69888
69891
69927
@@ -489,6 +503,8 @@ V654
70200
70206
70207
+70209
+70210
70367
70368
70371
@@ -611,6 +627,18 @@ V654
73112
73459
73461
+73472
+73474
+73526
+73531
+73536
+73537
+73538
+73539
+78912
+78913
+78919
+78934
92912
92917
92976
@@ -623,6 +651,10 @@ V654
94181
113821
113823
+118528
+118574
+118576
+118599
119143
119146
119163
@@ -655,10 +687,16 @@ V654
122917
122918
122923
+123023
+123024
123184
123191
+123566
+123567
123628
123632
+124140
+124144
125136
125143
125252
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/N.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/N.pl
index 0b375f0abaa..a6f288a735e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/N.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/N.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V266
+V274
48
58
178
@@ -237,18 +237,24 @@ V266
73050
73120
73130
+73552
+73562
73664
73685
74752
74863
92768
92778
+92864
+92874
93008
93018
93019
93026
93824
93847
+119488
+119508
119520
119540
119648
@@ -259,6 +265,8 @@ V266
123210
123632
123642
+124144
+124154
125127
125136
125264
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Nd.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Nd.pl
index d1944e7db67..cb2720ce193 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Nd.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Nd.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V122
+V128
48
58
1632
@@ -119,8 +119,12 @@ V122
73050
73120
73130
+73552
+73562
92768
92778
+92864
+92874
93008
93018
120782
@@ -129,6 +133,8 @@ V122
123210
123632
123642
+124144
+124154
125264
125274
130032
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Nl.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Nl.pl
index 5c27367bb82..a789beddaa6 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Nl.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Nl.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/No.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/No.pl
index 4469849f779..8cd5709379e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/No.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/No.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V142
+V144
178
180
185
@@ -135,6 +135,8 @@ V142
93026
93824
93847
+119488
+119508
119520
119540
119648
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/P.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/P.pl
index 73f049b0588..1128e062e66 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/P.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/P.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V370
+V382
33
36
37
@@ -65,7 +65,7 @@ V370
1550
1563
1564
-1566
+1565
1568
1642
1646
@@ -143,6 +143,8 @@ V370
6830
7002
7009
+7037
+7039
7164
7168
7227
@@ -192,7 +194,7 @@ V370
11824
11856
11858
-11859
+11870
12289
12292
12296
@@ -303,6 +305,8 @@ V370
69294
69461
69466
+69510
+69514
69703
69710
69819
@@ -339,6 +343,8 @@ V370
71236
71264
71277
+71353
+71354
71484
71487
71739
@@ -353,16 +359,22 @@ V370
72349
72350
72355
+72448
+72458
72769
72774
72816
72818
73463
73465
+73539
+73552
73727
73728
74864
74869
+77809
+77811
92782
92784
92917
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pc.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pc.pl
index 3d94225fd13..3b746053c57 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pc.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pc.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pd.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pd.pl
index 7015f76bc00..7eb097a17bf 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pd.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pd.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V36
+V38
45
46
1418
@@ -31,6 +31,8 @@ V36
11836
11840
11841
+11869
+11870
12316
12317
12336
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pe.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pe.pl
index 4faf9564bb5..b264b0b969b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pe.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pe.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V144
+V152
41
42
93
@@ -97,6 +97,14 @@ V144
11816
11817
11818
+11862
+11863
+11864
+11865
+11866
+11867
+11868
+11869
12297
12298
12299
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pf.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pf.pl
index ad6a05bf301..685dafd7d4a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pf.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pf.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pi.pl
index 6db03a5ec60..45200b5e953 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pi.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Pi.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Po.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Po.pl
index 5284babe843..4e9f5b15b34 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Po.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Po.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V362
+V374
33
36
37
@@ -57,7 +57,7 @@ V362
1550
1563
1564
-1566
+1565
1568
1642
1646
@@ -131,6 +131,8 @@ V362
6830
7002
7009
+7037
+7039
7164
7168
7227
@@ -188,7 +190,7 @@ V362
11843
11856
11858
-11859
+11861
12289
12292
12349
@@ -295,6 +297,8 @@ V362
68509
69461
69466
+69510
+69514
69703
69710
69819
@@ -331,6 +335,8 @@ V362
71236
71264
71277
+71353
+71354
71484
71487
71739
@@ -345,16 +351,22 @@ V362
72349
72350
72355
+72448
+72458
72769
72774
72816
72818
73463
73465
+73539
+73552
73727
73728
74864
74869
+77809
+77811
92782
92784
92917
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Ps.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Ps.pl
index a013ee0cb2c..7a19c55c64e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Ps.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Ps.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V150
+V158
40
41
91
@@ -103,6 +103,14 @@ V150
11817
11842
11843
+11861
+11862
+11863
+11864
+11865
+11866
+11867
+11868
12296
12297
12298
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/S.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/S.pl
index 0c3e8e29f55..1b83179cfaa 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/S.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/S.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V458
+V464
36
37
43
@@ -77,6 +77,8 @@ V458
2039
2046
2048
+2184
+2185
2546
2548
2554
@@ -154,7 +156,7 @@ V458
8330
8333
8352
-8384
+8385
8448
8450
8451
@@ -278,9 +280,13 @@ V458
64297
64298
64434
-64450
+64451
+64832
+64848
+64975
+64976
65020
-65022
+65024
65122
65123
65124
@@ -333,6 +339,8 @@ V458
92998
113820
113821
+118608
+118724
118784
119030
119040
@@ -346,7 +354,7 @@ V458
119180
119210
119214
-119273
+119275
119296
119362
119365
@@ -421,16 +429,18 @@ V458
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -444,27 +454,23 @@ V458
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sc.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sc.pl
index 5b3ea3c067c..bb55dea56d9 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sc.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sc.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -34,7 +34,7 @@ V42
6107
6108
8352
-8384
+8385
43064
43065
65020
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sk.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sk.pl
index c6df18ac662..043f9d9269d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sk.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sk.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V60
+V62
94
95
96
@@ -37,6 +37,8 @@ V60
886
900
902
+2184
+2185
8125
8126
8127
@@ -62,7 +64,7 @@ V60
43882
43884
64434
-64450
+64451
65342
65343
65344
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sm.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sm.pl
index acdafbcb73f..61505c105f8 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sm.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Sm.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/So.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/So.pl
index b3a4f2937ee..ae209c6197b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/So.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/So.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V364
+V368
166
167
169
@@ -225,8 +225,12 @@ V364
43066
43639
43642
+64832
+64848
+64975
+64976
65021
-65022
+65024
65508
65509
65512
@@ -263,6 +267,8 @@ V364
92998
113820
113821
+118608
+118724
118784
119030
119040
@@ -276,7 +282,7 @@ V364
119180
119210
119214
-119273
+119275
119296
119362
119365
@@ -327,16 +333,18 @@ V364
127995
128000
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -350,27 +358,23 @@ V364
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Z.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Z.pl
index 2406913d856..c25818463ae 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Z.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Z.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Zs.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Zs.pl
index 57a78cb9139..2d009b2218a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Zs.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Gc/Zs.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/GrBase/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/GrBase/Y.pl
index 3786c9c34ca..54f0b05933b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/GrBase/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/GrBase/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1668
+V1750
32
127
160
@@ -53,7 +53,7 @@ V1668
1552
1563
1564
-1566
+1565
1611
1632
1648
@@ -95,10 +95,10 @@ V1668
2143
2144
2155
+2160
+2191
2208
-2229
-2230
-2248
+2250
2307
2362
2363
@@ -275,6 +275,8 @@ V1668
3141
3160
3163
+3165
+3166
3168
3170
3174
@@ -301,14 +303,14 @@ V1668
3273
3274
3276
-3294
+3293
3295
3296
3298
3302
3312
3313
-3315
+3316
3330
3341
3342
@@ -480,12 +482,12 @@ V1668
5792
5881
5888
-5901
-5902
5906
-5920
+5909
+5910
+5919
5938
-5941
+5940
5943
5952
5970
@@ -570,11 +572,11 @@ V1668
6973
6978
6979
-6988
+6989
6992
7019
7028
-7037
+7039
7042
7074
7078
@@ -662,7 +664,7 @@ V1668
8336
8349
8352
-8384
+8385
8448
8588
8592
@@ -674,10 +676,6 @@ V1668
11126
11158
11159
-11311
-11312
-11359
-11360
11503
11506
11508
@@ -710,7 +708,7 @@ V1668
11736
11743
11776
-11859
+11870
11904
11930
11931
@@ -736,8 +734,6 @@ V1668
12784
12831
12832
-40957
-40960
42125
42128
42183
@@ -754,10 +750,14 @@ V1668
42738
42744
42752
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43010
43011
43014
@@ -878,15 +878,15 @@ V1668
64323
64325
64326
-64450
+64451
64467
-64832
-64848
64912
64914
64968
+64975
+64976
65008
-65022
+65024
65040
65050
65072
@@ -974,13 +974,33 @@ V1668
66864
66916
66927
-66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -1065,6 +1085,10 @@ V1668
69446
69457
69466
+69488
+69506
+69510
+69514
69552
69580
69600
@@ -1077,6 +1101,10 @@ V1668
69710
69714
69744
+69745
+69747
+69749
+69750
69762
69811
69815
@@ -1119,6 +1147,8 @@ V1668
70198
70200
70206
+70207
+70209
70272
70279
70280
@@ -1222,7 +1252,7 @@ V1668
71350
71351
71352
-71353
+71354
71360
71370
71424
@@ -1232,7 +1262,7 @@ V1668
71462
71463
71472
-71488
+71495
71680
71727
71736
@@ -1289,8 +1319,10 @@ V1668
72344
72346
72355
-72384
+72368
72441
+72448
+72458
72704
72713
72714
@@ -1337,6 +1369,16 @@ V1668
73459
73461
73465
+73474
+73489
+73490
+73526
+73534
+73536
+73537
+73538
+73539
+73562
73648
73649
73664
@@ -1349,8 +1391,12 @@ V1668
74869
74880
75076
+77712
+77811
77824
-78895
+78896
+78913
+78919
82944
83527
92160
@@ -1360,7 +1406,9 @@ V1668
92768
92778
92782
-92784
+92863
+92864
+92874
92880
92910
92917
@@ -1395,10 +1443,20 @@ V1668
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1415,6 +1473,8 @@ V1668
113821
113823
113824
+118608
+118724
118784
119030
119040
@@ -1430,11 +1490,13 @@ V1668
119180
119210
119214
-119273
+119275
119296
119362
119365
119366
+119488
+119508
119520
119540
119552
@@ -1491,6 +1553,12 @@ V1668
121476
121477
121484
+122624
+122655
+122661
+122667
+122928
+122990
123136
123181
123191
@@ -1499,12 +1567,26 @@ V1668
123210
123214
123216
+123536
+123566
123584
123628
123632
123642
123647
123648
+124112
+124140
+124144
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125127
@@ -1615,16 +1697,18 @@ V1668
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -1638,27 +1722,23 @@ V1668
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
@@ -1666,9 +1746,9 @@ V1668
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1679,4 +1759,6 @@ V1668
195102
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/GrExt/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/GrExt/Y.pl
index 98b26f12496..71308b597d7 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/GrExt/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/GrExt/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V688
+V726
768
880
1155
@@ -59,7 +59,9 @@ V688
2094
2137
2140
-2259
+2200
+2208
+2250
2274
2275
2307
@@ -149,6 +151,8 @@ V688
3073
3076
3077
+3132
+3133
3134
3137
3142
@@ -212,7 +216,7 @@ V688
3764
3773
3784
-3790
+3791
3864
3866
3893
@@ -260,7 +264,7 @@ V688
5906
5909
5938
-5941
+5940
5970
5972
6002
@@ -277,6 +281,8 @@ V688
6110
6155
6158
+6159
+6160
6277
6279
6313
@@ -308,7 +314,7 @@ V688
6783
6784
6832
-6849
+6863
6912
6916
6964
@@ -352,8 +358,6 @@ V688
7416
7418
7616
-7674
-7675
7680
8204
8205
@@ -469,18 +473,28 @@ V688
68904
69291
69293
+69373
+69376
69446
69457
+69506
+69510
69633
69634
69688
69703
+69744
+69745
+69747
+69749
69759
69762
69811
69815
69817
69819
+69826
+69827
69888
69891
69927
@@ -505,6 +519,8 @@ V688
70200
70206
70207
+70209
+70210
70367
70368
70371
@@ -639,6 +655,18 @@ V688
73112
73459
73461
+73472
+73474
+73526
+73531
+73536
+73537
+73538
+73539
+78912
+78913
+78919
+78934
92912
92917
92976
@@ -651,6 +679,10 @@ V688
94181
113821
113823
+118528
+118574
+118576
+118599
119141
119142
119143
@@ -687,10 +719,16 @@ V688
122917
122918
122923
+123023
+123024
123184
123191
+123566
+123567
123628
123632
+124140
+124144
125136
125143
125252
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Hex/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Hex/Y.pl
index a28fd2ce437..e83f9d7348a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Hex/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Hex/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Hst/NA.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Hst/NA.pl
index 2e089e14f63..227b4204b00 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Hst/NA.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Hst/NA.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Hyphen/T.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Hyphen/T.pl
index 82920bccfba..35dae690963 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Hyphen/T.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Hyphen/T.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IDC/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IDC/Y.pl
index 94ce2aa67ca..5b101dbd923 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IDC/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IDC/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1460
+V1536
48
58
65
@@ -113,11 +113,11 @@ V1460
2140
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2184
+2185
+2191
+2200
2274
2275
2404
@@ -285,7 +285,7 @@ V1460
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -295,6 +295,8 @@ V1460
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -319,14 +321,14 @@ V1460
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -392,7 +394,7 @@ V1460
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -486,10 +488,8 @@ V1460
5870
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5941
5952
5972
@@ -509,7 +509,7 @@ V1460
6122
6155
6158
-6160
+6159
6170
6176
6265
@@ -548,9 +548,9 @@ V1460
6832
6846
6847
-6849
+6863
6912
-6988
+6989
6992
7002
7019
@@ -574,8 +574,6 @@ V1460
7380
7419
7424
-7674
-7675
7958
7960
7966
@@ -656,10 +654,6 @@ V1460
8544
8585
11264
-11311
-11312
-11359
-11360
11493
11499
11508
@@ -720,8 +714,6 @@ V1460
13312
19904
19968
-40957
-40960
42125
42192
42238
@@ -740,10 +732,14 @@ V1460
42786
42889
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43048
43052
43053
@@ -921,12 +917,34 @@ V1460
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -1001,12 +1019,14 @@ V1460
69293
69296
69298
-69376
+69373
69405
69415
69416
69424
69457
+69488
+69510
69552
69573
69600
@@ -1014,9 +1034,11 @@ V1460
69632
69703
69734
-69744
+69750
69759
69819
+69826
+69827
69840
69865
69872
@@ -1044,7 +1066,7 @@ V1460
70163
70200
70206
-70207
+70210
70272
70279
70280
@@ -1123,6 +1145,8 @@ V1460
71468
71472
71482
+71488
+71495
71680
71739
71840
@@ -1159,7 +1183,7 @@ V1460
72346
72349
72350
-72384
+72368
72441
72704
72713
@@ -1203,6 +1227,14 @@ V1460
73130
73440
73463
+73472
+73489
+73490
+73531
+73534
+73539
+73552
+73562
73648
73649
73728
@@ -1211,8 +1243,12 @@ V1460
74863
74880
75076
+77712
+77809
77824
-78895
+78896
+78912
+78934
82944
83527
92160
@@ -1221,6 +1257,10 @@ V1460
92767
92768
92778
+92784
+92863
+92864
+92874
92880
92910
92912
@@ -1255,10 +1295,20 @@ V1460
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1273,6 +1323,10 @@ V1460
113818
113821
113823
+118528
+118574
+118576
+118599
119141
119146
119149
@@ -1359,6 +1413,10 @@ V1460
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1369,6 +1427,10 @@ V1460
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1377,8 +1439,20 @@ V1460
123210
123214
123215
+123536
+123567
123584
123642
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125136
@@ -1456,9 +1530,9 @@ V1460
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1469,6 +1543,8 @@ V1460
195102
196608
201547
+201552
+205744
917760
918000
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IDS/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IDS/Y.pl
index ce633cb7804..bb3b161f5a1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IDS/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IDS/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1244
+V1318
65
91
97
@@ -109,10 +109,12 @@ V1244
2137
2144
2155
+2160
+2184
+2185
+2191
2208
-2229
-2230
-2248
+2250
2308
2362
2365
@@ -241,6 +243,8 @@ V1244
3134
3160
3163
+3165
+3166
3168
3170
3200
@@ -257,7 +261,7 @@ V1244
3258
3261
3262
-3294
+3293
3295
3296
3298
@@ -400,10 +404,8 @@ V1244
5870
5881
5888
-5901
-5902
5906
-5920
+5919
5938
5952
5970
@@ -444,7 +446,7 @@ V1244
6917
6964
6981
-6988
+6989
7043
7073
7086
@@ -544,10 +546,6 @@ V1244
8544
8585
11264
-11311
-11312
-11359
-11360
11493
11499
11503
@@ -608,8 +606,6 @@ V1244
13312
19904
19968
-40957
-40960
42125
42192
42238
@@ -630,10 +626,14 @@ V1244
42786
42889
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43010
43011
43014
@@ -811,12 +811,34 @@ V1244
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -887,12 +909,18 @@ V1244
69416
69424
69446
+69488
+69506
69552
69573
69600
69623
69635
69688
+69745
+69747
+69749
+69750
69763
69808
69840
@@ -919,6 +947,8 @@ V1244
70162
70163
70188
+70207
+70209
70272
70279
70280
@@ -975,6 +1005,8 @@ V1244
71353
71424
71451
+71488
+71495
71680
71724
71840
@@ -1013,7 +1045,7 @@ V1244
72330
72349
72350
-72384
+72368
72441
72704
72713
@@ -1041,6 +1073,12 @@ V1244
73113
73440
73459
+73474
+73475
+73476
+73489
+73490
+73524
73648
73649
73728
@@ -1049,14 +1087,20 @@ V1244
74863
74880
75076
+77712
+77809
77824
-78895
+78896
+78913
+78919
82944
83527
92160
92729
92736
92767
+92784
+92863
92880
92910
92928
@@ -1085,10 +1129,20 @@ V1244
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1161,14 +1215,32 @@ V1244
120771
120772
120780
+122624
+122655
+122661
+122667
+122928
+122990
123136
123181
123191
123198
123214
123215
+123536
+123566
123584
123628
+124112
+124140
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125184
@@ -1242,9 +1314,9 @@ V1244
126635
126652
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1255,4 +1327,6 @@ V1244
195102
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IdStatus/Allowed.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IdStatus/Allowed.pl
index 14e60dcdbed..6afe2ebcdae 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IdStatus/Allowed.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IdStatus/Allowed.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V748
+V784
39
40
45
@@ -147,12 +147,16 @@ V748
1792
1872
1970
+2160
+2184
+2185
+2191
2208
2221
2226
2227
-2230
-2248
+2229
+2250
2305
2382
2383
@@ -321,7 +325,7 @@ V748
3124
3125
3130
-3133
+3132
3141
3142
3145
@@ -329,6 +333,8 @@ V748
3150
3157
3159
+3165
+3166
3168
3170
3174
@@ -355,12 +361,14 @@ V748
3278
3285
3287
+3293
+3294
3296
3300
3302
3312
3313
-3315
+3316
3328
3329
3330
@@ -438,7 +446,7 @@ V748
3782
3783
3784
-3790
+3791
3792
3802
3806
@@ -552,7 +560,9 @@ V748
6057
6068
6070
-6091
+6094
+6096
+6097
6098
6099
6103
@@ -633,8 +643,6 @@ V748
8187
8188
8189
-8204
-8206
8208
8209
8217
@@ -682,7 +690,7 @@ V748
13312
19904
19968
-40957
+40960
42623
42624
42775
@@ -699,8 +707,14 @@ V748
42927
42936
42938
-42946
+42944
42955
+42960
+42962
+42963
+42964
+42965
+42970
43495
43519
43616
@@ -743,14 +757,34 @@ V748
70461
94192
94194
+110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
+122624
+122655
+122661
+122667
+123023
+123024
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -759,4 +793,6 @@ V748
191457
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IdStatus/Restrict.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IdStatus/Restrict.pl
index d94e6e00f6f..dbd0e2b0779 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IdStatus/Restrict.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IdStatus/Restrict.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V749
+V785
0
39
40
@@ -148,12 +148,16 @@ V749
1792
1872
1970
+2160
+2184
+2185
+2191
2208
2221
2226
2227
-2230
-2248
+2229
+2250
2305
2382
2383
@@ -322,7 +326,7 @@ V749
3124
3125
3130
-3133
+3132
3141
3142
3145
@@ -330,6 +334,8 @@ V749
3150
3157
3159
+3165
+3166
3168
3170
3174
@@ -356,12 +362,14 @@ V749
3278
3285
3287
+3293
+3294
3296
3300
3302
3312
3313
-3315
+3316
3328
3329
3330
@@ -439,7 +447,7 @@ V749
3782
3783
3784
-3790
+3791
3792
3802
3806
@@ -553,7 +561,9 @@ V749
6057
6068
6070
-6091
+6094
+6096
+6097
6098
6099
6103
@@ -634,8 +644,6 @@ V749
8187
8188
8189
-8204
-8206
8208
8209
8217
@@ -683,7 +691,7 @@ V749
13312
19904
19968
-40957
+40960
42623
42624
42775
@@ -700,8 +708,14 @@ V749
42927
42936
42938
-42946
+42944
42955
+42960
+42962
+42963
+42964
+42965
+42970
43495
43519
43616
@@ -744,14 +758,34 @@ V749
70461
94192
94194
+110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
+122624
+122655
+122661
+122667
+123023
+123024
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -760,4 +794,6 @@ V749
191457
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/DefaultI.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/DefaultI.pl
index 9c40cdd5272..be113b1269c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/DefaultI.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/DefaultI.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V38
+V36
173
174
847
@@ -22,10 +22,8 @@ V38
6068
6070
6155
-6159
+6160
8203
-8204
-8206
8208
8234
8239
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Exclusio.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Exclusio.pl
index df85468074f..096300c62db 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Exclusio.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Exclusio.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V424
+V448
994
1008
2048
@@ -24,10 +24,8 @@ V424
5870
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5943
5952
5972
@@ -52,9 +50,7 @@ V424
7418
7419
11264
-11311
-11312
-11359
+11360
11392
11508
11513
@@ -112,7 +108,21 @@ V424
66864
66916
66927
-66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
@@ -201,6 +211,8 @@ V424
69416
69424
69466
+69488
+69514
69552
69580
69600
@@ -208,9 +220,9 @@ V424
69632
69710
69714
-69744
+69750
69759
-69826
+69827
69837
69838
69840
@@ -224,7 +236,7 @@ V424
70144
70162
70163
-70207
+70210
70272
70279
70280
@@ -286,7 +298,7 @@ V424
71264
71277
71296
-71353
+71354
71360
71370
71424
@@ -294,7 +306,7 @@ V424
71453
71468
71472
-71488
+71495
71680
71740
71840
@@ -357,6 +369,12 @@ V424
73050
73440
73465
+73472
+73489
+73490
+73531
+73534
+73562
73728
74650
74752
@@ -365,10 +383,10 @@ V424
74869
74880
75076
+77712
+77811
77824
-78895
-78896
-78905
+78934
82944
83527
92736
@@ -376,7 +394,9 @@ V424
92768
92778
92782
-92784
+92863
+92864
+92874
92880
92910
92912
@@ -431,6 +451,10 @@ V424
122917
122918
122923
+123536
+123567
+124112
+124154
124928
125125
125127
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Inclusio.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Inclusio.pl
index 1fd89f7c688..96c07ec067a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Inclusio.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Inclusio.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V30
+V28
39
40
45
@@ -29,8 +29,6 @@ V30
1791
3851
3852
-8204
-8206
8208
8209
8217
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/LimitedU.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/LimitedU.pl
index 556fd40a425..b34bb3f8def 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/LimitedU.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/LimitedU.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V170
+V174
1792
1806
1807
@@ -66,9 +66,9 @@ V170
6816
6830
6912
-6988
+6989
6992
-7037
+7039
7040
7156
7164
@@ -79,6 +79,8 @@ V170
7296
7360
7368
+7674
+7675
11568
11624
11632
@@ -141,6 +143,8 @@ V170
70748
70749
70754
+72368
+72384
73056
73062
73063
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotChara.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotChara.pl
index 9fd20f2dbbd..27b453f983a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotChara.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotChara.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1357
+V1417
0
9
14
@@ -43,8 +43,6 @@ V1357
1519
1525
1536
-1565
-1566
1806
1807
1867
@@ -62,11 +60,11 @@ V1357
2143
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2191
+2192
+2194
+2200
2436
2437
2445
@@ -222,7 +220,7 @@ V1357
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -232,6 +230,8 @@ V1357
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -254,14 +254,14 @@ V1357
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -321,7 +321,7 @@ V1357
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -389,10 +389,8 @@ V1357
5792
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5943
5952
5972
@@ -409,8 +407,6 @@ V1357
6128
6138
6144
-6159
-6160
6170
6176
6265
@@ -449,11 +445,11 @@ V1357
6816
6830
6832
-6849
+6863
6912
-6988
+6989
6992
-7037
+7039
7040
7156
7164
@@ -469,8 +465,6 @@ V1357
7376
7419
7424
-7674
-7675
7958
7960
7966
@@ -511,7 +505,7 @@ V1357
8336
8349
8352
-8384
+8385
8400
8433
8448
@@ -525,10 +519,6 @@ V1357
11126
11158
11159
-11311
-11312
-11359
-11360
11508
11513
11558
@@ -559,7 +549,7 @@ V1357
11736
11743
11744
-11859
+11870
11904
11930
11931
@@ -583,8 +573,6 @@ V1357
12784
12831
12832
-40957
-40960
42125
42128
42183
@@ -593,10 +581,14 @@ V1357
42560
42744
42752
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43053
43056
43066
@@ -667,16 +659,14 @@ V1357
64323
64325
64326
-64450
+64451
64467
-64832
-64848
64912
64914
64968
+64975
+64976
65008
-65022
-65024
65050
65056
65107
@@ -763,13 +753,33 @@ V1357
66864
66916
66927
-66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -852,10 +862,12 @@ V1357
69294
69296
69298
-69376
+69373
69416
69424
69466
+69488
+69514
69552
69580
69600
@@ -863,9 +875,9 @@ V1357
69632
69710
69714
-69744
+69750
69759
-69826
+69827
69837
69838
69840
@@ -885,7 +897,7 @@ V1357
70144
70162
70163
-70207
+70210
70272
70279
70280
@@ -949,7 +961,7 @@ V1357
71264
71277
71296
-71353
+71354
71360
71370
71424
@@ -957,7 +969,7 @@ V1357
71453
71468
71472
-71488
+71495
71680
71740
71840
@@ -988,8 +1000,10 @@ V1357
72264
72272
72355
-72384
+72368
72441
+72448
+72458
72704
72713
72714
@@ -1032,6 +1046,12 @@ V1357
73130
73440
73465
+73472
+73489
+73490
+73531
+73534
+73562
73648
73649
73664
@@ -1044,10 +1064,10 @@ V1357
74869
74880
75076
+77712
+77811
77824
-78895
-78896
-78905
+78934
82944
83527
92160
@@ -1057,7 +1077,9 @@ V1357
92768
92778
92782
-92784
+92863
+92864
+92874
92880
92910
92912
@@ -1090,10 +1112,20 @@ V1357
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1108,14 +1140,22 @@ V1357
113818
113820
113828
+118528
+118574
+118576
+118599
+118608
+118724
118784
119030
119040
119079
119081
-119273
+119275
119296
119366
+119488
+119508
119520
119540
119552
@@ -1168,6 +1208,10 @@ V1357
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1178,6 +1222,10 @@ V1357
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1186,10 +1234,22 @@ V1357
123210
123214
123216
+123536
+123567
123584
123642
123647
123648
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125127
@@ -1298,16 +1358,18 @@ V1357
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -1321,27 +1383,23 @@ V1357
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
@@ -1349,9 +1407,9 @@ V1357
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1362,6 +1420,8 @@ V1357
195102
196608
201547
+201552
+205744
917505
917506
917536
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotNFKC.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotNFKC.pl
index c4dd616ef6a..28a397805b6 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotNFKC.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotNFKC.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V502
+V512
160
161
168
@@ -297,6 +297,8 @@ V502
42654
42864
42865
+42994
+42997
43000
43002
43868
@@ -379,6 +381,12 @@ V502
65511
65512
65519
+67457
+67462
+67463
+67505
+67506
+67515
119134
119141
119227
@@ -425,6 +433,8 @@ V502
120780
120782
120832
+122928
+122990
126464
126468
126469
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotXID.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotXID.pl
index 60621421828..6e261f9958a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotXID.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/NotXID.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V690
+V708
9
14
32
@@ -85,7 +85,7 @@ V690
1552
1563
1564
-1566
+1565
1568
1642
1646
@@ -107,6 +107,10 @@ V690
2111
2142
2143
+2184
+2185
+2192
+2194
2274
2275
2404
@@ -216,7 +220,7 @@ V690
7002
7019
7028
-7037
+7039
7164
7168
7227
@@ -254,7 +258,7 @@ V690
8352
8360
8361
-8384
+8385
8413
8417
8418
@@ -316,7 +320,7 @@ V690
11632
11633
11776
-11859
+11870
11904
11930
11931
@@ -398,11 +402,13 @@ V690
44011
44012
64434
-64450
+64451
64830
-64832
+64848
+64975
+64976
65021
-65022
+65024
65093
65095
65529
@@ -483,6 +489,8 @@ V690
69415
69457
69466
+69510
+69514
69573
69580
69703
@@ -525,6 +533,8 @@ V690
71236
71264
71277
+71353
+71354
71482
71488
71739
@@ -541,6 +551,8 @@ V690
72349
72350
72355
+72448
+72458
72769
72774
72794
@@ -549,14 +561,18 @@ V690
72818
73463
73465
+73539
+73552
73664
73714
73727
73728
74864
74869
+77809
+77811
78896
-78905
+78912
92782
92784
92917
@@ -575,6 +591,8 @@ V690
113821
113823
113824
+118608
+118724
118784
119030
119040
@@ -590,11 +608,13 @@ V690
119214
119227
119233
-119273
+119275
119296
119362
119365
119366
+119488
+119508
119520
119540
119552
@@ -653,16 +673,18 @@ V690
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -676,27 +698,23 @@ V690
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Obsolete.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Obsolete.pl
index 2b384646001..911a870b382 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Obsolete.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Obsolete.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V206
+V208
397
398
426
@@ -161,6 +161,8 @@ V206
12336
12590
12591
+12784
+12800
42512
42515
42538
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Recommen.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Recommen.pl
index 4acf041e0d5..d274d08eebf 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Recommen.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Recommen.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V732
+V770
48
58
65
@@ -139,12 +139,16 @@ V732
1792
1872
1970
+2160
+2184
+2185
+2191
2208
2221
2226
2227
-2230
-2248
+2229
+2250
2305
2382
2383
@@ -313,7 +317,7 @@ V732
3124
3125
3130
-3133
+3132
3141
3142
3145
@@ -321,6 +325,8 @@ V732
3150
3157
3159
+3165
+3166
3168
3170
3174
@@ -347,12 +353,14 @@ V732
3278
3285
3287
+3293
+3294
3296
3300
3302
3312
3313
-3315
+3316
3328
3329
3330
@@ -430,7 +438,7 @@ V732
3782
3783
3784
-3790
+3791
3792
3802
3806
@@ -542,7 +550,9 @@ V732
6057
6068
6070
-6091
+6094
+6096
+6097
6098
6099
6103
@@ -666,7 +676,7 @@ V732
13312
19904
19968
-40957
+40960
42623
42624
42775
@@ -683,8 +693,14 @@ V732
42927
42936
42938
-42946
+42944
42955
+42960
+42962
+42963
+42964
+42965
+42970
43495
43519
43616
@@ -727,14 +743,34 @@ V732
70461
94192
94194
+110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
+122624
+122655
+122661
+122667
+123023
+123024
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -743,4 +779,6 @@ V732
191457
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Technica.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Technica.pl
index d1425ccbe3e..4ededa855d4 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Technica.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Technica.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V190
+V198
384
385
397
@@ -95,12 +95,16 @@ V190
3572
3864
3866
-6091
+6094
+6096
+6097
6098
6109
6110
6847
6849
+7019
+7028
7424
7468
7471
@@ -114,8 +118,6 @@ V190
7545
7579
7616
-7674
-7675
7680
7836
7838
@@ -151,8 +153,6 @@ V190
12342
12347
12349
-12784
-12800
12927
12928
19904
@@ -174,17 +174,25 @@ V190
64286
64287
64434
-64450
+64451
64830
-64832
+64848
+64975
+64976
65021
-65022
+65024
65056
65072
65093
65095
65139
65140
+118528
+118574
+118576
+118599
+118608
+118724
118784
119030
119040
@@ -196,7 +204,7 @@ V190
119163
119227
119233
-119273
+119275
119362
119365
119552
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Uncommon.pl b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Uncommon.pl
index 1a0f653e7ca..5e75d5cc65d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Uncommon.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/IdType/Uncommon.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V152
+V166
385
397
398
@@ -89,9 +89,11 @@ V152
1769
1770
1774
+2200
+2208
2227
2229
-2259
+2250
2274
2275
2305
@@ -127,6 +129,8 @@ V152
3898
6313
6314
+6849
+6863
8276
8277
8586
@@ -155,10 +159,20 @@ V152
64287
65070
65072
+67456
+67457
+69373
+69376
92736
92767
92768
92778
+110576
+110580
+110581
+110588
+110589
+110591
119262
119273
128335
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Ideo/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Ideo/Y.pl
index b21cae170c9..5b520f26947 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Ideo/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Ideo/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V38
+V40
12294
12296
12321
@@ -20,7 +20,7 @@ V38
13312
19904
19968
-40957
+40960
63744
64110
64112
@@ -36,9 +36,9 @@ V38
110960
111356
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -49,4 +49,6 @@ V38
195102
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/10_0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/10_0.pl
index 1ca2cf1427b..3c0a25a7b1c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/10_0.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/10_0.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/11_0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/11_0.pl
index 019f761759b..c5a6d974510 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/11_0.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/11_0.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/12_0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/12_0.pl
index 84acb125f6a..922eeddded8 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/12_0.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/12_0.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/12_1.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/12_1.pl
index 380ac960222..0779479c830 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/12_1.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/12_1.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/13_0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/13_0.pl
index 0d7d54f9cda..3899ade16b5 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/13_0.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/13_0.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/14_0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/14_0.pl
new file mode 100755
index 00000000000..59f16fe18d2
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/14_0.pl
@@ -0,0 +1,1426 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
+
+# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
+# This file is for internal use by core Perl only. The format and even the
+# name or existence of this file are subject to change without notice. Don't
+# use it directly. Use Unicode::UCD to access the Unicode character data
+# base.
+
+
+return <<'END';
+V1412
+0
+888
+890
+896
+900
+907
+908
+909
+910
+930
+931
+1328
+1329
+1367
+1369
+1419
+1421
+1424
+1425
+1480
+1488
+1515
+1519
+1525
+1536
+1806
+1807
+1867
+1869
+1970
+1984
+2043
+2045
+2094
+2096
+2111
+2112
+2140
+2142
+2143
+2144
+2155
+2160
+2191
+2192
+2194
+2200
+2436
+2437
+2445
+2447
+2449
+2451
+2473
+2474
+2481
+2482
+2483
+2486
+2490
+2492
+2501
+2503
+2505
+2507
+2511
+2519
+2520
+2524
+2526
+2527
+2532
+2534
+2559
+2561
+2564
+2565
+2571
+2575
+2577
+2579
+2601
+2602
+2609
+2610
+2612
+2613
+2615
+2616
+2618
+2620
+2621
+2622
+2627
+2631
+2633
+2635
+2638
+2641
+2642
+2649
+2653
+2654
+2655
+2662
+2679
+2689
+2692
+2693
+2702
+2703
+2706
+2707
+2729
+2730
+2737
+2738
+2740
+2741
+2746
+2748
+2758
+2759
+2762
+2763
+2766
+2768
+2769
+2784
+2788
+2790
+2802
+2809
+2816
+2817
+2820
+2821
+2829
+2831
+2833
+2835
+2857
+2858
+2865
+2866
+2868
+2869
+2874
+2876
+2885
+2887
+2889
+2891
+2894
+2901
+2904
+2908
+2910
+2911
+2916
+2918
+2936
+2946
+2948
+2949
+2955
+2958
+2961
+2962
+2966
+2969
+2971
+2972
+2973
+2974
+2976
+2979
+2981
+2984
+2987
+2990
+3002
+3006
+3011
+3014
+3017
+3018
+3022
+3024
+3025
+3031
+3032
+3046
+3067
+3072
+3085
+3086
+3089
+3090
+3113
+3114
+3130
+3132
+3141
+3142
+3145
+3146
+3150
+3157
+3159
+3160
+3163
+3165
+3166
+3168
+3172
+3174
+3184
+3191
+3213
+3214
+3217
+3218
+3241
+3242
+3252
+3253
+3258
+3260
+3269
+3270
+3273
+3274
+3278
+3285
+3287
+3293
+3295
+3296
+3300
+3302
+3312
+3313
+3315
+3328
+3341
+3342
+3345
+3346
+3397
+3398
+3401
+3402
+3408
+3412
+3428
+3430
+3456
+3457
+3460
+3461
+3479
+3482
+3506
+3507
+3516
+3517
+3518
+3520
+3527
+3530
+3531
+3535
+3541
+3542
+3543
+3544
+3552
+3558
+3568
+3570
+3573
+3585
+3643
+3647
+3676
+3713
+3715
+3716
+3717
+3718
+3723
+3724
+3748
+3749
+3750
+3751
+3774
+3776
+3781
+3782
+3783
+3784
+3790
+3792
+3802
+3804
+3808
+3840
+3912
+3913
+3949
+3953
+3992
+3993
+4029
+4030
+4045
+4046
+4059
+4096
+4294
+4295
+4296
+4301
+4302
+4304
+4681
+4682
+4686
+4688
+4695
+4696
+4697
+4698
+4702
+4704
+4745
+4746
+4750
+4752
+4785
+4786
+4790
+4792
+4799
+4800
+4801
+4802
+4806
+4808
+4823
+4824
+4881
+4882
+4886
+4888
+4955
+4957
+4989
+4992
+5018
+5024
+5110
+5112
+5118
+5120
+5789
+5792
+5881
+5888
+5910
+5919
+5943
+5952
+5972
+5984
+5997
+5998
+6001
+6002
+6004
+6016
+6110
+6112
+6122
+6128
+6138
+6144
+6170
+6176
+6265
+6272
+6315
+6320
+6390
+6400
+6431
+6432
+6444
+6448
+6460
+6464
+6465
+6468
+6510
+6512
+6517
+6528
+6572
+6576
+6602
+6608
+6619
+6622
+6684
+6686
+6751
+6752
+6781
+6783
+6794
+6800
+6810
+6816
+6830
+6832
+6863
+6912
+6989
+6992
+7039
+7040
+7156
+7164
+7224
+7227
+7242
+7245
+7305
+7312
+7355
+7357
+7368
+7376
+7419
+7424
+7958
+7960
+7966
+7968
+8006
+8008
+8014
+8016
+8024
+8025
+8026
+8027
+8028
+8029
+8030
+8031
+8062
+8064
+8117
+8118
+8133
+8134
+8148
+8150
+8156
+8157
+8176
+8178
+8181
+8182
+8191
+8192
+8293
+8294
+8306
+8308
+8335
+8336
+8349
+8352
+8385
+8400
+8433
+8448
+8588
+8592
+9255
+9280
+9291
+9312
+11124
+11126
+11158
+11159
+11508
+11513
+11558
+11559
+11560
+11565
+11566
+11568
+11624
+11631
+11633
+11647
+11671
+11680
+11687
+11688
+11695
+11696
+11703
+11704
+11711
+11712
+11719
+11720
+11727
+11728
+11735
+11736
+11743
+11744
+11870
+11904
+11930
+11931
+12020
+12032
+12246
+12272
+12284
+12288
+12352
+12353
+12439
+12441
+12544
+12549
+12592
+12593
+12687
+12688
+12772
+12784
+12831
+12832
+42125
+42128
+42183
+42192
+42540
+42560
+42744
+42752
+42955
+42960
+42962
+42963
+42964
+42965
+42970
+42994
+43053
+43056
+43066
+43072
+43128
+43136
+43206
+43214
+43226
+43232
+43348
+43359
+43389
+43392
+43470
+43471
+43482
+43486
+43519
+43520
+43575
+43584
+43598
+43600
+43610
+43612
+43715
+43739
+43767
+43777
+43783
+43785
+43791
+43793
+43799
+43808
+43815
+43816
+43823
+43824
+43884
+43888
+44014
+44016
+44026
+44032
+55204
+55216
+55239
+55243
+55292
+55296
+64110
+64112
+64218
+64256
+64263
+64275
+64280
+64285
+64311
+64312
+64317
+64318
+64319
+64320
+64322
+64323
+64325
+64326
+64451
+64467
+64912
+64914
+64968
+64975
+65050
+65056
+65107
+65108
+65127
+65128
+65132
+65136
+65141
+65142
+65277
+65279
+65280
+65281
+65471
+65474
+65480
+65482
+65488
+65490
+65496
+65498
+65501
+65504
+65511
+65512
+65519
+65529
+65548
+65549
+65575
+65576
+65595
+65596
+65598
+65599
+65614
+65616
+65630
+65664
+65787
+65792
+65795
+65799
+65844
+65847
+65935
+65936
+65949
+65952
+65953
+66000
+66046
+66176
+66205
+66208
+66257
+66272
+66300
+66304
+66340
+66349
+66379
+66384
+66427
+66432
+66462
+66463
+66500
+66504
+66518
+66560
+66718
+66720
+66730
+66736
+66772
+66776
+66812
+66816
+66856
+66864
+66916
+66927
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
+67072
+67383
+67392
+67414
+67424
+67432
+67456
+67462
+67463
+67505
+67506
+67515
+67584
+67590
+67592
+67593
+67594
+67638
+67639
+67641
+67644
+67645
+67647
+67670
+67671
+67743
+67751
+67760
+67808
+67827
+67828
+67830
+67835
+67868
+67871
+67898
+67903
+67904
+67968
+68024
+68028
+68048
+68050
+68100
+68101
+68103
+68108
+68116
+68117
+68120
+68121
+68150
+68152
+68155
+68159
+68169
+68176
+68185
+68192
+68256
+68288
+68327
+68331
+68343
+68352
+68406
+68409
+68438
+68440
+68467
+68472
+68498
+68505
+68509
+68521
+68528
+68608
+68681
+68736
+68787
+68800
+68851
+68858
+68904
+68912
+68922
+69216
+69247
+69248
+69290
+69291
+69294
+69296
+69298
+69376
+69416
+69424
+69466
+69488
+69514
+69552
+69580
+69600
+69623
+69632
+69710
+69714
+69750
+69759
+69827
+69837
+69838
+69840
+69865
+69872
+69882
+69888
+69941
+69942
+69960
+69968
+70007
+70016
+70112
+70113
+70133
+70144
+70162
+70163
+70207
+70272
+70279
+70280
+70281
+70282
+70286
+70287
+70302
+70303
+70314
+70320
+70379
+70384
+70394
+70400
+70404
+70405
+70413
+70415
+70417
+70419
+70441
+70442
+70449
+70450
+70452
+70453
+70458
+70459
+70469
+70471
+70473
+70475
+70478
+70480
+70481
+70487
+70488
+70493
+70500
+70502
+70509
+70512
+70517
+70656
+70748
+70749
+70754
+70784
+70856
+70864
+70874
+71040
+71094
+71096
+71134
+71168
+71237
+71248
+71258
+71264
+71277
+71296
+71354
+71360
+71370
+71424
+71451
+71453
+71468
+71472
+71495
+71680
+71740
+71840
+71923
+71935
+71943
+71945
+71946
+71948
+71956
+71957
+71959
+71960
+71990
+71991
+71993
+71995
+72007
+72016
+72026
+72096
+72104
+72106
+72152
+72154
+72165
+72192
+72264
+72272
+72355
+72368
+72441
+72704
+72713
+72714
+72759
+72760
+72774
+72784
+72813
+72816
+72848
+72850
+72872
+72873
+72887
+72960
+72967
+72968
+72970
+72971
+73015
+73018
+73019
+73020
+73022
+73023
+73032
+73040
+73050
+73056
+73062
+73063
+73065
+73066
+73103
+73104
+73106
+73107
+73113
+73120
+73130
+73440
+73465
+73648
+73649
+73664
+73714
+73727
+74650
+74752
+74863
+74864
+74869
+74880
+75076
+77712
+77811
+77824
+78895
+78896
+78905
+82944
+83527
+92160
+92729
+92736
+92767
+92768
+92778
+92782
+92863
+92864
+92874
+92880
+92910
+92912
+92918
+92928
+92998
+93008
+93018
+93019
+93026
+93027
+93048
+93053
+93072
+93760
+93851
+93952
+94027
+94031
+94088
+94095
+94112
+94176
+94181
+94192
+94194
+94208
+100344
+100352
+101590
+101632
+101641
+110576
+110580
+110581
+110588
+110589
+110591
+110592
+110883
+110928
+110931
+110948
+110952
+110960
+111356
+113664
+113771
+113776
+113789
+113792
+113801
+113808
+113818
+113820
+113828
+118528
+118574
+118576
+118599
+118608
+118724
+118784
+119030
+119040
+119079
+119081
+119275
+119296
+119366
+119520
+119540
+119552
+119639
+119648
+119673
+119808
+119893
+119894
+119965
+119966
+119968
+119970
+119971
+119973
+119975
+119977
+119981
+119982
+119994
+119995
+119996
+119997
+120004
+120005
+120070
+120071
+120075
+120077
+120085
+120086
+120093
+120094
+120122
+120123
+120127
+120128
+120133
+120134
+120135
+120138
+120145
+120146
+120486
+120488
+120780
+120782
+121484
+121499
+121504
+121505
+121520
+122624
+122655
+122880
+122887
+122888
+122905
+122907
+122914
+122915
+122917
+122918
+122923
+123136
+123181
+123184
+123198
+123200
+123210
+123214
+123216
+123536
+123567
+123584
+123642
+123647
+123648
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
+124928
+125125
+125127
+125143
+125184
+125260
+125264
+125274
+125278
+125280
+126065
+126133
+126209
+126270
+126464
+126468
+126469
+126496
+126497
+126499
+126500
+126501
+126503
+126504
+126505
+126515
+126516
+126520
+126521
+126522
+126523
+126524
+126530
+126531
+126535
+126536
+126537
+126538
+126539
+126540
+126541
+126544
+126545
+126547
+126548
+126549
+126551
+126552
+126553
+126554
+126555
+126556
+126557
+126558
+126559
+126560
+126561
+126563
+126564
+126565
+126567
+126571
+126572
+126579
+126580
+126584
+126585
+126589
+126590
+126591
+126592
+126602
+126603
+126620
+126625
+126628
+126629
+126634
+126635
+126652
+126704
+126706
+126976
+127020
+127024
+127124
+127136
+127151
+127153
+127168
+127169
+127184
+127185
+127222
+127232
+127406
+127462
+127491
+127504
+127548
+127552
+127561
+127568
+127570
+127584
+127590
+127744
+128728
+128733
+128749
+128752
+128765
+128768
+128884
+128896
+128985
+128992
+129004
+129008
+129009
+129024
+129036
+129040
+129096
+129104
+129114
+129120
+129160
+129168
+129198
+129200
+129202
+129280
+129620
+129632
+129646
+129648
+129653
+129656
+129661
+129664
+129671
+129680
+129709
+129712
+129723
+129728
+129734
+129744
+129754
+129760
+129768
+129776
+129783
+129792
+129939
+129940
+129995
+130032
+130042
+131070
+173792
+173824
+177977
+177984
+178206
+178208
+183970
+183984
+191457
+194560
+195102
+196606
+201547
+262142
+262144
+327678
+327680
+393214
+393216
+458750
+458752
+524286
+524288
+589822
+589824
+655358
+655360
+720894
+720896
+786430
+786432
+851966
+851968
+917502
+917504
+917505
+917506
+917536
+917632
+917760
+918000
+983038
+1114112
+END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/15_0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/15_0.pl
new file mode 100755
index 00000000000..0f69a450cff
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/15_0.pl
@@ -0,0 +1,1444 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
+
+# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
+# This file is for internal use by core Perl only. The format and even the
+# name or existence of this file are subject to change without notice. Don't
+# use it directly. Use Unicode::UCD to access the Unicode character data
+# base.
+
+
+return <<'END';
+V1430
+0
+888
+890
+896
+900
+907
+908
+909
+910
+930
+931
+1328
+1329
+1367
+1369
+1419
+1421
+1424
+1425
+1480
+1488
+1515
+1519
+1525
+1536
+1806
+1807
+1867
+1869
+1970
+1984
+2043
+2045
+2094
+2096
+2111
+2112
+2140
+2142
+2143
+2144
+2155
+2160
+2191
+2192
+2194
+2200
+2436
+2437
+2445
+2447
+2449
+2451
+2473
+2474
+2481
+2482
+2483
+2486
+2490
+2492
+2501
+2503
+2505
+2507
+2511
+2519
+2520
+2524
+2526
+2527
+2532
+2534
+2559
+2561
+2564
+2565
+2571
+2575
+2577
+2579
+2601
+2602
+2609
+2610
+2612
+2613
+2615
+2616
+2618
+2620
+2621
+2622
+2627
+2631
+2633
+2635
+2638
+2641
+2642
+2649
+2653
+2654
+2655
+2662
+2679
+2689
+2692
+2693
+2702
+2703
+2706
+2707
+2729
+2730
+2737
+2738
+2740
+2741
+2746
+2748
+2758
+2759
+2762
+2763
+2766
+2768
+2769
+2784
+2788
+2790
+2802
+2809
+2816
+2817
+2820
+2821
+2829
+2831
+2833
+2835
+2857
+2858
+2865
+2866
+2868
+2869
+2874
+2876
+2885
+2887
+2889
+2891
+2894
+2901
+2904
+2908
+2910
+2911
+2916
+2918
+2936
+2946
+2948
+2949
+2955
+2958
+2961
+2962
+2966
+2969
+2971
+2972
+2973
+2974
+2976
+2979
+2981
+2984
+2987
+2990
+3002
+3006
+3011
+3014
+3017
+3018
+3022
+3024
+3025
+3031
+3032
+3046
+3067
+3072
+3085
+3086
+3089
+3090
+3113
+3114
+3130
+3132
+3141
+3142
+3145
+3146
+3150
+3157
+3159
+3160
+3163
+3165
+3166
+3168
+3172
+3174
+3184
+3191
+3213
+3214
+3217
+3218
+3241
+3242
+3252
+3253
+3258
+3260
+3269
+3270
+3273
+3274
+3278
+3285
+3287
+3293
+3295
+3296
+3300
+3302
+3312
+3313
+3316
+3328
+3341
+3342
+3345
+3346
+3397
+3398
+3401
+3402
+3408
+3412
+3428
+3430
+3456
+3457
+3460
+3461
+3479
+3482
+3506
+3507
+3516
+3517
+3518
+3520
+3527
+3530
+3531
+3535
+3541
+3542
+3543
+3544
+3552
+3558
+3568
+3570
+3573
+3585
+3643
+3647
+3676
+3713
+3715
+3716
+3717
+3718
+3723
+3724
+3748
+3749
+3750
+3751
+3774
+3776
+3781
+3782
+3783
+3784
+3791
+3792
+3802
+3804
+3808
+3840
+3912
+3913
+3949
+3953
+3992
+3993
+4029
+4030
+4045
+4046
+4059
+4096
+4294
+4295
+4296
+4301
+4302
+4304
+4681
+4682
+4686
+4688
+4695
+4696
+4697
+4698
+4702
+4704
+4745
+4746
+4750
+4752
+4785
+4786
+4790
+4792
+4799
+4800
+4801
+4802
+4806
+4808
+4823
+4824
+4881
+4882
+4886
+4888
+4955
+4957
+4989
+4992
+5018
+5024
+5110
+5112
+5118
+5120
+5789
+5792
+5881
+5888
+5910
+5919
+5943
+5952
+5972
+5984
+5997
+5998
+6001
+6002
+6004
+6016
+6110
+6112
+6122
+6128
+6138
+6144
+6170
+6176
+6265
+6272
+6315
+6320
+6390
+6400
+6431
+6432
+6444
+6448
+6460
+6464
+6465
+6468
+6510
+6512
+6517
+6528
+6572
+6576
+6602
+6608
+6619
+6622
+6684
+6686
+6751
+6752
+6781
+6783
+6794
+6800
+6810
+6816
+6830
+6832
+6863
+6912
+6989
+6992
+7039
+7040
+7156
+7164
+7224
+7227
+7242
+7245
+7305
+7312
+7355
+7357
+7368
+7376
+7419
+7424
+7958
+7960
+7966
+7968
+8006
+8008
+8014
+8016
+8024
+8025
+8026
+8027
+8028
+8029
+8030
+8031
+8062
+8064
+8117
+8118
+8133
+8134
+8148
+8150
+8156
+8157
+8176
+8178
+8181
+8182
+8191
+8192
+8293
+8294
+8306
+8308
+8335
+8336
+8349
+8352
+8385
+8400
+8433
+8448
+8588
+8592
+9255
+9280
+9291
+9312
+11124
+11126
+11158
+11159
+11508
+11513
+11558
+11559
+11560
+11565
+11566
+11568
+11624
+11631
+11633
+11647
+11671
+11680
+11687
+11688
+11695
+11696
+11703
+11704
+11711
+11712
+11719
+11720
+11727
+11728
+11735
+11736
+11743
+11744
+11870
+11904
+11930
+11931
+12020
+12032
+12246
+12272
+12284
+12288
+12352
+12353
+12439
+12441
+12544
+12549
+12592
+12593
+12687
+12688
+12772
+12784
+12831
+12832
+42125
+42128
+42183
+42192
+42540
+42560
+42744
+42752
+42955
+42960
+42962
+42963
+42964
+42965
+42970
+42994
+43053
+43056
+43066
+43072
+43128
+43136
+43206
+43214
+43226
+43232
+43348
+43359
+43389
+43392
+43470
+43471
+43482
+43486
+43519
+43520
+43575
+43584
+43598
+43600
+43610
+43612
+43715
+43739
+43767
+43777
+43783
+43785
+43791
+43793
+43799
+43808
+43815
+43816
+43823
+43824
+43884
+43888
+44014
+44016
+44026
+44032
+55204
+55216
+55239
+55243
+55292
+55296
+64110
+64112
+64218
+64256
+64263
+64275
+64280
+64285
+64311
+64312
+64317
+64318
+64319
+64320
+64322
+64323
+64325
+64326
+64451
+64467
+64912
+64914
+64968
+64975
+65050
+65056
+65107
+65108
+65127
+65128
+65132
+65136
+65141
+65142
+65277
+65279
+65280
+65281
+65471
+65474
+65480
+65482
+65488
+65490
+65496
+65498
+65501
+65504
+65511
+65512
+65519
+65529
+65548
+65549
+65575
+65576
+65595
+65596
+65598
+65599
+65614
+65616
+65630
+65664
+65787
+65792
+65795
+65799
+65844
+65847
+65935
+65936
+65949
+65952
+65953
+66000
+66046
+66176
+66205
+66208
+66257
+66272
+66300
+66304
+66340
+66349
+66379
+66384
+66427
+66432
+66462
+66463
+66500
+66504
+66518
+66560
+66718
+66720
+66730
+66736
+66772
+66776
+66812
+66816
+66856
+66864
+66916
+66927
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
+67072
+67383
+67392
+67414
+67424
+67432
+67456
+67462
+67463
+67505
+67506
+67515
+67584
+67590
+67592
+67593
+67594
+67638
+67639
+67641
+67644
+67645
+67647
+67670
+67671
+67743
+67751
+67760
+67808
+67827
+67828
+67830
+67835
+67868
+67871
+67898
+67903
+67904
+67968
+68024
+68028
+68048
+68050
+68100
+68101
+68103
+68108
+68116
+68117
+68120
+68121
+68150
+68152
+68155
+68159
+68169
+68176
+68185
+68192
+68256
+68288
+68327
+68331
+68343
+68352
+68406
+68409
+68438
+68440
+68467
+68472
+68498
+68505
+68509
+68521
+68528
+68608
+68681
+68736
+68787
+68800
+68851
+68858
+68904
+68912
+68922
+69216
+69247
+69248
+69290
+69291
+69294
+69296
+69298
+69373
+69416
+69424
+69466
+69488
+69514
+69552
+69580
+69600
+69623
+69632
+69710
+69714
+69750
+69759
+69827
+69837
+69838
+69840
+69865
+69872
+69882
+69888
+69941
+69942
+69960
+69968
+70007
+70016
+70112
+70113
+70133
+70144
+70162
+70163
+70210
+70272
+70279
+70280
+70281
+70282
+70286
+70287
+70302
+70303
+70314
+70320
+70379
+70384
+70394
+70400
+70404
+70405
+70413
+70415
+70417
+70419
+70441
+70442
+70449
+70450
+70452
+70453
+70458
+70459
+70469
+70471
+70473
+70475
+70478
+70480
+70481
+70487
+70488
+70493
+70500
+70502
+70509
+70512
+70517
+70656
+70748
+70749
+70754
+70784
+70856
+70864
+70874
+71040
+71094
+71096
+71134
+71168
+71237
+71248
+71258
+71264
+71277
+71296
+71354
+71360
+71370
+71424
+71451
+71453
+71468
+71472
+71495
+71680
+71740
+71840
+71923
+71935
+71943
+71945
+71946
+71948
+71956
+71957
+71959
+71960
+71990
+71991
+71993
+71995
+72007
+72016
+72026
+72096
+72104
+72106
+72152
+72154
+72165
+72192
+72264
+72272
+72355
+72368
+72441
+72448
+72458
+72704
+72713
+72714
+72759
+72760
+72774
+72784
+72813
+72816
+72848
+72850
+72872
+72873
+72887
+72960
+72967
+72968
+72970
+72971
+73015
+73018
+73019
+73020
+73022
+73023
+73032
+73040
+73050
+73056
+73062
+73063
+73065
+73066
+73103
+73104
+73106
+73107
+73113
+73120
+73130
+73440
+73465
+73472
+73489
+73490
+73531
+73534
+73562
+73648
+73649
+73664
+73714
+73727
+74650
+74752
+74863
+74864
+74869
+74880
+75076
+77712
+77811
+77824
+78934
+82944
+83527
+92160
+92729
+92736
+92767
+92768
+92778
+92782
+92863
+92864
+92874
+92880
+92910
+92912
+92918
+92928
+92998
+93008
+93018
+93019
+93026
+93027
+93048
+93053
+93072
+93760
+93851
+93952
+94027
+94031
+94088
+94095
+94112
+94176
+94181
+94192
+94194
+94208
+100344
+100352
+101590
+101632
+101641
+110576
+110580
+110581
+110588
+110589
+110591
+110592
+110883
+110898
+110899
+110928
+110931
+110933
+110934
+110948
+110952
+110960
+111356
+113664
+113771
+113776
+113789
+113792
+113801
+113808
+113818
+113820
+113828
+118528
+118574
+118576
+118599
+118608
+118724
+118784
+119030
+119040
+119079
+119081
+119275
+119296
+119366
+119488
+119508
+119520
+119540
+119552
+119639
+119648
+119673
+119808
+119893
+119894
+119965
+119966
+119968
+119970
+119971
+119973
+119975
+119977
+119981
+119982
+119994
+119995
+119996
+119997
+120004
+120005
+120070
+120071
+120075
+120077
+120085
+120086
+120093
+120094
+120122
+120123
+120127
+120128
+120133
+120134
+120135
+120138
+120145
+120146
+120486
+120488
+120780
+120782
+121484
+121499
+121504
+121505
+121520
+122624
+122655
+122661
+122667
+122880
+122887
+122888
+122905
+122907
+122914
+122915
+122917
+122918
+122923
+122928
+122990
+123023
+123024
+123136
+123181
+123184
+123198
+123200
+123210
+123214
+123216
+123536
+123567
+123584
+123642
+123647
+123648
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
+124928
+125125
+125127
+125143
+125184
+125260
+125264
+125274
+125278
+125280
+126065
+126133
+126209
+126270
+126464
+126468
+126469
+126496
+126497
+126499
+126500
+126501
+126503
+126504
+126505
+126515
+126516
+126520
+126521
+126522
+126523
+126524
+126530
+126531
+126535
+126536
+126537
+126538
+126539
+126540
+126541
+126544
+126545
+126547
+126548
+126549
+126551
+126552
+126553
+126554
+126555
+126556
+126557
+126558
+126559
+126560
+126561
+126563
+126564
+126565
+126567
+126571
+126572
+126579
+126580
+126584
+126585
+126589
+126590
+126591
+126592
+126602
+126603
+126620
+126625
+126628
+126629
+126634
+126635
+126652
+126704
+126706
+126976
+127020
+127024
+127124
+127136
+127151
+127153
+127168
+127169
+127184
+127185
+127222
+127232
+127406
+127462
+127491
+127504
+127548
+127552
+127561
+127568
+127570
+127584
+127590
+127744
+128728
+128732
+128749
+128752
+128765
+128768
+128887
+128891
+128986
+128992
+129004
+129008
+129009
+129024
+129036
+129040
+129096
+129104
+129114
+129120
+129160
+129168
+129198
+129200
+129202
+129280
+129620
+129632
+129646
+129648
+129661
+129664
+129673
+129680
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
+129792
+129939
+129940
+129995
+130032
+130042
+131070
+173792
+173824
+177978
+177984
+178206
+178208
+183970
+183984
+191457
+194560
+195102
+196606
+201547
+201552
+205744
+262142
+262144
+327678
+327680
+393214
+393216
+458750
+458752
+524286
+524288
+589822
+589824
+655358
+655360
+720894
+720896
+786430
+786432
+851966
+851968
+917502
+917504
+917505
+917506
+917536
+917632
+917760
+918000
+983038
+1114112
+END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/2_0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/2_0.pl
index c47f6157967..2f746a7fc15 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/2_0.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/2_0.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/2_1.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/2_1.pl
index 41bbd3d8751..53dfa4796c9 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/2_1.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/2_1.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/3_0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/3_0.pl
index 785b722751f..c8a8fa53bde 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/3_0.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/3_0.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/3_1.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/3_1.pl
index 8f0e69c9526..b844d54d9f5 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/3_1.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/3_1.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/3_2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/3_2.pl
index 696c056c2a1..b749750b294 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/3_2.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/3_2.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/4_0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/4_0.pl
index 6a53024084e..e2c2a268a6c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/4_0.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/4_0.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/4_1.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/4_1.pl
index 9bc13b25add..7c5e00e3009 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/4_1.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/4_1.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/5_0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/5_0.pl
index 68b801ca3da..55e40372edc 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/5_0.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/5_0.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/5_1.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/5_1.pl
index abbc547f81c..51323fabf6e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/5_1.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/5_1.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/5_2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/5_2.pl
index 3375ecaa150..817ff3432b8 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/5_2.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/5_2.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/6_0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/6_0.pl
index daeeed6b3bb..0246130b2ba 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/6_0.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/6_0.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/6_1.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/6_1.pl
index 96203138ab8..800cc292473 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/6_1.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/6_1.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/6_2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/6_2.pl
index 700be72c1d4..52e02f68ea4 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/6_2.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/6_2.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/6_3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/6_3.pl
index fffbd3387e2..c9676b49f09 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/6_3.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/6_3.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/7_0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/7_0.pl
index c6cea35813e..1391d1b029f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/7_0.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/7_0.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/8_0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/8_0.pl
index 756b9a4c34f..1472821b6bb 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/8_0.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/8_0.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/In/9_0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/In/9_0.pl
index 11b0565bbbc..aba35ec0e12 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/In/9_0.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/In/9_0.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Bottom.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Bottom.pl
index fff35c9947f..633266d42fb 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Bottom.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Bottom.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V286
+V294
2364
2365
2369
@@ -57,6 +57,8 @@ V286
2894
2914
2916
+3132
+3133
3158
3159
3170
@@ -114,7 +116,7 @@ V286
5907
5909
5939
-5941
+5940
5971
5972
6003
@@ -203,6 +205,8 @@ V286
69813
69817
69819
+69826
+69827
69930
69932
69937
@@ -217,6 +221,8 @@ V286
70093
70191
70192
+70209
+70210
70371
70373
70377
@@ -297,4 +303,6 @@ V286
73032
73460
73461
+73528
+73531
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/BottomAn.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/BottomAn.pl
index 183e283bfd2..5b2d07f4162 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/BottomAn.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/BottomAn.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Left.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Left.pl
index 4f1372119ca..fa881aec5e3 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Left.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Left.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V94
+V96
2367
2368
2382
@@ -105,4 +105,6 @@ V94
72882
73461
73462
+73534
+73536
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/LeftAndR.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/LeftAndR.pl
index a0c538ee2f6..ddbd187f412 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/LeftAndR.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/LeftAndR.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/NA.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/NA.pl
index 39610e61a4e..b493295702b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/NA.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/NA.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V421
+V441
0
2304
2308
@@ -19,6 +19,8 @@ V421
2366
2384
2385
+2387
+2389
2392
2402
2404
@@ -94,6 +96,8 @@ V421
3032
3072
3077
+3132
+3133
3134
3141
3142
@@ -118,6 +122,8 @@ V421
3287
3298
3300
+3315
+3316
3328
3332
3387
@@ -155,7 +161,7 @@ V421
3776
3781
3784
-3790
+3791
3864
3866
3893
@@ -197,7 +203,7 @@ V421
4250
4254
5906
-5909
+5910
5938
5941
5970
@@ -274,7 +280,7 @@ V421
43250
43263
43264
-43307
+43302
43310
43335
43348
@@ -316,10 +322,16 @@ V421
69635
69688
69703
+69744
+69745
+69747
+69749
69760
69763
69808
69819
+69826
+69827
69888
69891
69927
@@ -344,6 +356,8 @@ V421
70200
70206
70207
+70209
+70210
70367
70379
70400
@@ -432,4 +446,10 @@ V421
73111
73459
73463
+73472
+73476
+73524
+73531
+73534
+73538
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Overstru.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Overstru.pl
index aac5cd4b2e9..9141fde4f5e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Overstru.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Overstru.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Right.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Right.pl
index 89668ac33ea..e4d1c93eef1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Right.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Right.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V328
+V340
2307
2308
2363
@@ -69,6 +69,8 @@ V328
3269
3285
3287
+3315
+3316
3330
3332
3390
@@ -119,6 +121,10 @@ V328
4240
4250
4253
+5909
+5910
+5940
+5941
6070
6071
6087
@@ -339,4 +345,10 @@ V328
73111
73462
73463
+73475
+73476
+73524
+73526
+73537
+73538
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Top.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Top.pl
index a7b112ed8ee..2b8930241b5 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Top.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/Top.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V386
+V398
2304
2307
2362
@@ -19,7 +19,7 @@ V386
2377
2385
2386
-2387
+2389
2390
2433
2434
@@ -98,7 +98,7 @@ V386
3771
3772
3784
-3790
+3791
3897
3898
3954
@@ -217,6 +217,8 @@ V386
43250
43263
43264
+43302
+43307
43338
43339
43343
@@ -269,6 +271,10 @@ V386
69692
69698
69703
+69744
+69745
+69747
+69749
69760
69762
69813
@@ -397,4 +403,10 @@ V386
73110
73459
73460
+73472
+73475
+73526
+73528
+73536
+73537
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndBo.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndBo.pl
index 58fe1391d8a..2667dfadd51 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndBo.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndBo.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndL2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndL2.pl
index 5173a2a76e4..8eb6f490b7e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndL2.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndL2.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndLe.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndLe.pl
index 17001b49f37..a128d2a3ee9 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndLe.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndLe.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndRi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndRi.pl
index 0c82419f7cc..bba1dc0e025 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndRi.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/TopAndRi.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/VisualOr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/VisualOr.pl
index 4a2b7e0e192..bdddabb8f8a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InPC/VisualOr.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InPC/VisualOr.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Avagraha.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Avagraha.pl
index 2002938c2e7..8fee1ecf86c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Avagraha.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Avagraha.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Bindu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Bindu.pl
index ad13ad476ca..14cebb2b6ee 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Bindu.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Bindu.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V112
+V116
2304
2307
2433
@@ -33,6 +33,8 @@ V112
3077
3200
3203
+3315
+3316
3328
3331
3332
@@ -123,4 +125,6 @@ V112
73025
73109
73110
+73472
+73474
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Cantilla.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Cantilla.pl
index 63e351e0b1e..4523746c9a5 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Cantilla.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Cantilla.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,12 +10,14 @@
return <<'END';
-V24
+V26
2385
2387
2641
2642
2810
+2811
+2812
2813
7376
7379
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona2.pl
index 47b0e31330d..5754aefe629 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona2.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona2.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,9 +10,13 @@
return <<'END';
-V8
+V12
2510
2511
+3165
+3166
+3293
+3294
3412
3415
3450
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona3.pl
index 8eee412e529..7717ebb3a40 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona3.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona3.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V22
+V28
6448
6450
6451
@@ -19,6 +19,10 @@ V22
6600
6744
6746
+6915
+6916
+7041
+7042
7102
7104
7152
@@ -27,6 +31,8 @@ V22
7220
43343
43347
+43394
+43395
43584
43598
43995
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona4.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona4.pl
index a36e7bfef2d..bab3f6d14d8 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona4.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona4.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona5.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona5.pl
index 6bed7b202e5..0b507803bb8 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona5.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona5.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona6.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona6.pl
index eecd7550798..64131f56733 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona6.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona6.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona7.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona7.pl
index e09f263e95c..cb2f6754eb1 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona7.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona7.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona8.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona8.pl
index 1b9baa0f920..02a0b147636 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona8.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona8.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona9.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona9.pl
index e246d9af019..38797230252 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona9.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consona9.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -11,12 +11,12 @@
return <<'END';
V8
-6092
-6093
-6915
-6916
-7041
-7042
-43394
-43395
+3406
+3407
+72001
+72002
+73030
+73031
+73474
+73475
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consonan.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consonan.pl
index 5e06ac5b03e..d47db142a44 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consonan.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Consonan.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V306
+V314
2325
2362
2392
@@ -146,9 +146,9 @@ V306
4238
4239
5891
-5901
-5902
5906
+5919
+5920
5923
5938
5955
@@ -174,7 +174,7 @@ V306
6931
6964
6981
-6988
+6989
7050
7073
7086
@@ -243,6 +243,8 @@ V306
68150
69651
69688
+69749
+69750
69773
69808
69895
@@ -259,6 +261,8 @@ V306
70162
70163
70188
+70207
+70208
70276
70279
70280
@@ -293,6 +297,8 @@ V306
71353
71424
71451
+71488
+71495
71690
71724
71948
@@ -317,4 +323,6 @@ V306
73098
73440
73458
+73490
+73524
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Geminati.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Geminati.pl
new file mode 100755
index 00000000000..d72d407aca1
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Geminati.pl
@@ -0,0 +1,22 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
+
+# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
+# This file is for internal use by core Perl only. The format and even the
+# name or existence of this file are subject to change without notice. Don't
+# use it directly. Use Unicode::UCD to access the Unicode character data
+# base.
+
+
+return <<'END';
+V8
+2673
+2674
+2811
+2812
+70199
+70200
+72344
+72345
+END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Invisibl.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Invisibl.pl
index b5db2b65c82..5b40feaf2b2 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Invisibl.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Invisibl.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V24
+V26
4153
4154
6098
@@ -35,4 +35,6 @@ V24
73030
73111
73112
+73538
+73539
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Nukta.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Nukta.pl
index f4e4ce1dc92..ef2842290cf 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Nukta.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Nukta.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V52
+V54
2364
2365
2492
@@ -23,6 +23,8 @@ V52
2816
2876
2877
+3132
+3133
3260
3261
3897
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Number.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Number.pl
index 990cf73c2ab..3487e456846 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Number.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Number.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V90
+V92
48
58
2406
@@ -101,4 +101,6 @@ V90
73050
73120
73130
+73552
+73562
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Other.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Other.pl
index 14f476ca238..a4c617b267c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Other.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Other.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V643
+V655
0
45
46
@@ -190,7 +190,7 @@ V643
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -200,6 +200,8 @@ V643
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -224,14 +226,14 @@ V643
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -303,7 +305,7 @@ V643
3784
3788
3789
-3790
+3791
3792
3802
3804
@@ -337,10 +339,8 @@ V643
4176
4254
5888
-5901
-5902
-5909
-5920
+5910
+5919
5941
5952
5972
@@ -385,7 +385,7 @@ V643
6800
6810
6912
-6988
+6989
6992
7002
7040
@@ -479,9 +479,11 @@ V643
69632
69703
69714
-69744
+69750
69759
69819
+69826
+69827
69888
69941
69942
@@ -503,7 +505,7 @@ V643
70163
70200
70206
-70207
+70210
70272
70279
70280
@@ -576,6 +578,8 @@ V643
71468
71472
71484
+71488
+71495
71680
71739
71936
@@ -654,4 +658,12 @@ V643
73130
73440
73463
+73472
+73489
+73490
+73531
+73534
+73539
+73552
+73562
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/PureKill.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/PureKill.pl
index 4c9067dc322..65474c2824d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/PureKill.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/PureKill.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V42
+V46
3387
3389
3642
@@ -24,7 +24,7 @@ V42
4154
4155
5908
-5909
+5910
5940
5941
6097
@@ -41,6 +41,8 @@ V42
43348
44013
44014
+69744
+69745
69940
69941
70378
@@ -53,4 +55,6 @@ V42
72245
73028
73029
+73537
+73538
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Syllable.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Syllable.pl
index 70ddf535c75..cd11e03e317 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Syllable.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Syllable.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,11 +10,13 @@
return <<'END';
-V38
+V40
178
180
2558
2559
+3790
+3791
3893
3894
3895
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/ToneMark.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/ToneMark.pl
index 514cac05d96..d8d5dd2d472 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/ToneMark.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/ToneMark.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Virama.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Virama.pl
index cdc151e7ab3..1ea7fc231f3 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Virama.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Virama.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Visarga.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Visarga.pl
index d3e7cd487da..6c8157f5f17 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Visarga.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Visarga.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V70
+V72
2307
2308
2435
@@ -81,4 +81,6 @@ V70
73026
73110
73111
+73475
+73476
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Vowel.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Vowel.pl
index ca0c92501c8..b075e702982 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Vowel.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/Vowel.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/VowelDep.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/VowelDep.pl
index 172ff568647..9dd1a33fb02 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/VowelDep.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/VowelDep.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V264
+V274
2362
2364
2366
@@ -191,8 +191,12 @@ V264
68110
69688
69702
+69747
+69749
69808
69817
+69826
+69827
69927
69939
69957
@@ -205,6 +209,8 @@ V264
70095
70188
70196
+70209
+70210
70368
70377
70462
@@ -275,4 +281,8 @@ V264
73109
73459
73463
+73524
+73531
+73534
+73537
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/VowelInd.pl b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/VowelInd.pl
index 91f29bf01c9..1e6cd0d2f1d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/InSC/VowelInd.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/InSC/VowelInd.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V174
+V180
2308
2325
2400
@@ -123,6 +123,8 @@ V174
43986
69637
69651
+69745
+69747
69763
69773
69891
@@ -131,6 +133,8 @@ V174
70033
70144
70152
+70208
+70209
70272
70276
70320
@@ -185,4 +189,6 @@ V174
73065
73066
73068
+73476
+73489
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Ain.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Ain.pl
index cf4027c3652..ceab9a4a601 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Ain.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Ain.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Alef.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Alef.pl
index 975d179a0bd..51d6c84cd76 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Alef.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Alef.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V12
+V14
1570
1572
1573
@@ -23,4 +23,6 @@ V12
1654
1907
1909
+2160
+2179
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Beh.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Beh.pl
index df7a1439a81..1a47448520f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Beh.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Beh.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Dal.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Dal.pl
index f96ee3a769b..38a4640532c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Dal.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Dal.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/FarsiYeh.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/FarsiYeh.pl
index fade2af3315..c5b4649e30d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/FarsiYeh.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/FarsiYeh.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Feh.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Feh.pl
index 4e2f0f03182..1ed996c4dcc 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Feh.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Feh.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Gaf.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Gaf.pl
index 4ad8368f467..d06d5de9d51 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Gaf.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Gaf.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V14
+V18
1595
1597
1705
@@ -21,8 +21,12 @@ V14
1717
1890
1893
+2189
+2190
2224
2225
2242
2243
+2248
+2249
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Hah.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Hah.pl
index baeeba0f6a6..3ead58f2dbb 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Hah.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Hah.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V20
+V22
1580
1583
1665
@@ -25,6 +25,8 @@ V20
1907
1916
1917
+2186
+2187
2210
2211
2241
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/HanifiRo.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/HanifiRo.pl
index 180c6998e99..3cb15368e8d 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/HanifiRo.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/HanifiRo.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Kaf.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Kaf.pl
index 55a8756bc46..595c4af3c2b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Kaf.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Kaf.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Lam.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Lam.pl
index da02e5ac407..7737db49e4c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Lam.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Lam.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/NoJoinin.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/NoJoinin.pl
index c11890ed155..30c4c73561a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/NoJoinin.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/NoJoinin.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V61
+V65
0
1568
1569
@@ -40,12 +40,16 @@ V61
1920
2144
2155
+2160
+2179
+2182
+2183
+2185
+2191
2208
2221
2222
-2229
-2230
-2248
+2249
68288
68294
68295
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Noon.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Noon.pl
new file mode 100755
index 00000000000..bda148f0b95
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Noon.pl
@@ -0,0 +1,22 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
+
+# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
+# This file is for internal use by core Perl only. The format and even the
+# name or existence of this file are subject to change without notice. Don't
+# use it directly. Use Unicode::UCD to access the Unicode character data
+# base.
+
+
+return <<'END';
+V8
+1606
+1607
+1721
+1725
+1895
+1898
+2185
+2186
+END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Qaf.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Qaf.pl
index 4153598c276..2d5bbc8e385 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Qaf.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Qaf.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V8
+V10
1602
1603
1647
@@ -19,4 +19,6 @@ V8
1705
2213
2214
+2229
+2230
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Reh.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Reh.pl
index 1a93c57c4bc..01611a72310 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Reh.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Reh.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Sad.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Sad.pl
index 243e777c701..75fff9dfc26 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Sad.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Sad.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Seen.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Seen.pl
index 7beca33355d..356bce99c8e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Seen.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Seen.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Tah.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Tah.pl
new file mode 100755
index 00000000000..67f3c2ede82
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Tah.pl
@@ -0,0 +1,22 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
+
+# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
+# This file is for internal use by core Perl only. The format and even the
+# name or existence of this file are subject to change without notice. Don't
+# use it directly. Use Unicode::UCD to access the Unicode character data
+# base.
+
+
+return <<'END';
+V8
+1591
+1593
+1695
+1696
+2187
+2189
+2211
+2212
+END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Waw.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Waw.pl
index 0e7cca656d5..cf469209ed5 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Waw.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Waw.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Yeh.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Yeh.pl
index 6d1f8d12df0..4efa3266424 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Yeh.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jg/Yeh.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jt/C.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jt/C.pl
index 27b259a749d..088d552c5e9 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jt/C.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jt/C.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,11 +10,13 @@
return <<'END';
-V8
+V10
1600
1601
2042
2043
+2179
+2182
6154
6155
8205
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jt/D.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jt/D.pl
index 689e4918429..0fe42845012 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jt/D.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jt/D.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V144
+V150
1568
1569
1574
@@ -83,16 +83,18 @@ V144
2150
2152
2153
+2182
+2183
+2185
+2190
2208
2218
2223
2225
2227
-2229
-2230
2233
2234
-2248
+2249
6151
6152
6176
@@ -137,6 +139,10 @@ V144
69445
69457
69460
+69488
+69492
+69494
+69506
69552
69553
69554
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jt/L.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jt/L.pl
index cbd28485472..b17ea2cbdb7 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jt/L.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jt/L.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jt/R.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jt/R.pl
index 604fe5bf06b..6ccc29e3c5a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jt/R.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jt/R.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V124
+V130
1570
1574
1575
@@ -81,6 +81,10 @@ V124
2152
2153
2155
+2160
+2179
+2190
+2191
2218
2221
2222
@@ -125,6 +129,8 @@ V124
69428
69460
69461
+69492
+69494
69556
69559
69561
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jt/T.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jt/T.pl
index 9c1fe200a46..57c5c357de6 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jt/T.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jt/T.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V676
+V712
173
174
768
@@ -65,7 +65,9 @@ V676
2094
2137
2140
-2259
+2200
+2208
+2250
2274
2275
2307
@@ -147,6 +149,8 @@ V676
3073
3076
3077
+3132
+3133
3134
3137
3142
@@ -198,7 +202,7 @@ V676
3764
3773
3784
-3790
+3791
3864
3866
3893
@@ -246,7 +250,7 @@ V676
5906
5909
5938
-5941
+5940
5970
5972
6002
@@ -263,6 +267,8 @@ V676
6110
6155
6158
+6159
+6160
6277
6279
6313
@@ -294,7 +300,7 @@ V676
6783
6784
6832
-6849
+6863
6912
6916
6964
@@ -340,8 +346,6 @@ V676
7416
7418
7616
-7674
-7675
7680
8203
8204
@@ -467,18 +471,28 @@ V676
68904
69291
69293
+69373
+69376
69446
69457
+69506
+69510
69633
69634
69688
69703
+69744
+69745
+69747
+69749
69759
69762
69811
69815
69817
69819
+69826
+69827
69888
69891
69927
@@ -503,6 +517,8 @@ V676
70200
70206
70207
+70209
+70210
70367
70368
70371
@@ -625,8 +641,18 @@ V676
73112
73459
73461
+73472
+73474
+73526
+73531
+73536
+73537
+73538
+73539
78896
-78905
+78913
+78919
+78934
92912
92917
92976
@@ -641,6 +667,10 @@ V676
113823
113824
113828
+118528
+118574
+118576
+118599
119143
119146
119155
@@ -673,10 +703,16 @@ V676
122917
122918
122923
+123023
+123024
123184
123191
+123566
+123567
123628
123632
+124140
+124144
125136
125143
125252
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Jt/U.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Jt/U.pl
index b2d5808b4f4..422c27d387a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Jt/U.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Jt/U.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V727
+V763
0
173
174
@@ -80,13 +80,15 @@ V727
2150
2151
2155
-2208
+2160
+2183
+2185
+2191
+2200
2221
2222
-2229
-2230
-2248
-2259
+2249
+2250
2274
2275
2307
@@ -168,6 +170,8 @@ V727
3073
3076
3077
+3132
+3133
3134
3137
3142
@@ -219,7 +223,7 @@ V727
3764
3773
3784
-3790
+3791
3864
3866
3893
@@ -267,7 +271,7 @@ V727
5906
5909
5938
-5941
+5940
5970
5972
6002
@@ -286,6 +290,8 @@ V727
6152
6154
6158
+6159
+6160
6176
6265
6277
@@ -317,7 +323,7 @@ V727
6783
6784
6832
-6849
+6863
6912
6916
6964
@@ -363,8 +369,6 @@ V727
7416
7418
7616
-7674
-7675
7680
8203
8204
@@ -506,10 +510,14 @@ V727
68904
69291
69293
+69373
+69376
69424
69445
69446
69461
+69488
+69510
69552
69553
69554
@@ -524,12 +532,18 @@ V727
69634
69688
69703
+69744
+69745
+69747
+69749
69759
69762
69811
69815
69817
69819
+69826
+69827
69888
69891
69927
@@ -554,6 +568,8 @@ V727
70200
70206
70207
+70209
+70210
70367
70368
70371
@@ -676,8 +692,18 @@ V727
73112
73459
73461
+73472
+73474
+73526
+73531
+73536
+73537
+73538
+73539
78896
-78905
+78913
+78919
+78934
92912
92917
92976
@@ -692,6 +718,10 @@ V727
113823
113824
113828
+118528
+118574
+118576
+118599
119143
119146
119155
@@ -724,10 +754,16 @@ V727
122917
122918
122923
+123023
+123024
123184
123191
+123566
+123567
123628
123632
+124140
+124144
125136
125143
125184
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/AI.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/AI.pl
index 35c6b2e8820..49d1d48c2c7 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/AI.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/AI.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/AL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/AL.pl
index c0892f56de9..c4cd1933ed6 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/AL.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/AL.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1540
+V1612
35
36
38
@@ -131,10 +131,12 @@ V1540
2143
2144
2155
+2160
+2191
+2192
+2194
2208
-2229
-2230
-2248
+2250
2274
2275
2308
@@ -277,6 +279,8 @@ V1540
3134
3160
3163
+3165
+3166
3168
3170
3192
@@ -293,7 +297,7 @@ V1540
3258
3261
3262
-3294
+3293
3295
3296
3298
@@ -422,10 +426,8 @@ V1540
5870
5881
5888
-5901
-5902
5906
-5920
+5919
5938
5952
5970
@@ -464,7 +466,7 @@ V1540
6917
6964
6981
-6988
+6989
7004
7005
7009
@@ -545,8 +547,6 @@ V1540
8260
8266
8278
-8279
-8280
8284
8285
8289
@@ -762,10 +762,6 @@ V1540
11126
11158
11159
-11311
-11312
-11359
-11360
11503
11506
11508
@@ -840,10 +836,14 @@ V1540
42738
42739
42752
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43010
43011
43014
@@ -914,17 +914,19 @@ V1540
64297
64298
64336
-64450
+64451
64467
64830
-64848
+64832
64912
64914
64968
+64975
+64976
65008
65020
65021
-65022
+65024
65136
65141
65142
@@ -986,13 +988,33 @@ V1540
66864
66916
66927
-66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -1073,6 +1095,10 @@ V1540
69446
69457
69466
+69488
+69506
+69510
+69514
69552
69580
69600
@@ -1083,6 +1109,10 @@ V1540
69710
69714
69734
+69745
+69747
+69749
+69750
69763
69808
69819
@@ -1125,6 +1155,8 @@ V1540
70203
70205
70206
+70207
+70209
70272
70279
70280
@@ -1182,7 +1214,7 @@ V1540
71296
71339
71352
-71353
+71354
71680
71724
71739
@@ -1229,7 +1261,7 @@ V1540
72330
72349
72350
-72384
+72368
72441
72704
72713
@@ -1261,6 +1293,12 @@ V1540
73459
73463
73465
+73474
+73475
+73476
+73489
+73490
+73524
73648
73649
73664
@@ -1273,6 +1311,8 @@ V1540
74863
74880
75076
+77712
+77811
77824
78424
78430
@@ -1282,7 +1322,9 @@ V1540
78474
78713
78716
-78895
+78896
+78913
+78919
82944
83406
83408
@@ -1291,6 +1333,8 @@ V1540
92729
92736
92767
+92784
+92863
92880
92910
92928
@@ -1317,6 +1361,12 @@ V1540
94112
101120
101590
+110576
+110580
+110581
+110588
+110589
+110591
113664
113771
113776
@@ -1327,6 +1377,8 @@ V1540
113818
113820
113821
+118608
+118724
118784
119030
119040
@@ -1340,11 +1392,13 @@ V1540
119180
119210
119214
-119273
+119275
119296
119362
119365
119366
+119488
+119508
119520
119540
119552
@@ -1403,14 +1457,32 @@ V1540
121479
121483
121484
+122624
+122655
+122661
+122667
+122928
+122990
123136
123181
123191
123198
123214
123216
+123536
+123566
123584
123628
+124112
+124140
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125127
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/BA.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/BA.pl
index bec5b8206f2..009d2d5cb1b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/BA.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/BA.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V196
+V202
9
10
124
@@ -61,6 +61,8 @@ V196
7004
7005
7009
+7037
+7039
7227
7232
7294
@@ -109,6 +111,8 @@ V196
11853
11854
11856
+11869
+11870
12288
12289
42238
@@ -189,6 +193,8 @@ V196
72355
72769
72774
+73539
+73541
73727
73728
74864
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/BB.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/BB.pl
index 3afcb0684d6..4fc2d5b5794 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/BB.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/BB.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V48
+V50
180
181
712
@@ -57,6 +57,8 @@ V48
72262
72350
72353
+72448
+72458
72816
72817
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CJ.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CJ.pl
index 2b1340cf29a..a14781e60a8 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CJ.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CJ.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V54
+V58
12353
12354
12355
@@ -61,8 +61,12 @@ V54
12800
65383
65393
+110898
+110899
110928
110931
+110933
+110934
110948
110952
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CL.pl
index 10304223a48..61de894f2b6 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CL.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CL.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V166
+V178
125
126
3899
@@ -93,6 +93,14 @@ V166
11816
11817
11818
+11862
+11863
+11864
+11865
+11866
+11867
+11868
+11869
12289
12291
12297
@@ -175,6 +183,10 @@ V166
78716
78904
78905
+78909
+78910
+78911
+78912
83407
83408
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CM.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CM.pl
index 547ebcb25e4..251c2c003c1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CM.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/CM.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V556
+V600
0
9
14
@@ -73,7 +73,9 @@ V556
2094
2137
2140
-2259
+2200
+2208
+2250
2274
2275
2308
@@ -157,6 +159,8 @@ V556
3032
3072
3077
+3132
+3133
3134
3141
3142
@@ -181,6 +185,8 @@ V556
3287
3298
3300
+3315
+3316
3328
3332
3387
@@ -232,7 +238,7 @@ V556
4957
4960
5906
-5909
+5910
5938
5941
5970
@@ -241,6 +247,8 @@ V556
6004
6155
6158
+6159
+6160
6277
6279
6313
@@ -254,7 +262,7 @@ V556
6783
6784
6832
-6849
+6863
6912
6917
6964
@@ -280,8 +288,10 @@ V556
7415
7418
7616
-7674
-7675
+7629
+7630
+7676
+7677
7680
8204
8205
@@ -383,16 +393,26 @@ V556
68904
69291
69293
+69373
+69376
69446
69457
+69506
+69510
69632
69635
69688
69703
+69744
+69745
+69747
+69749
69759
69763
69808
69819
+69826
+69827
69888
69891
69927
@@ -413,6 +433,8 @@ V556
70200
70206
70207
+70209
+70210
70367
70379
70400
@@ -505,6 +527,18 @@ V556
73112
73459
73463
+73472
+73474
+73475
+73476
+73524
+73531
+73534
+73539
+78912
+78913
+78919
+78934
92912
92917
92976
@@ -521,6 +555,10 @@ V556
113823
113824
113828
+118528
+118574
+118576
+118599
119141
119146
119149
@@ -553,10 +591,16 @@ V556
122917
122918
122923
+123023
+123024
123184
123191
+123566
+123567
123628
123632
+124140
+124144
125136
125143
125252
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/EX.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/EX.pl
index 562481ed5da..9cecf33c0f9 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/EX.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/EX.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V48
+V50
33
34
63
@@ -19,7 +19,7 @@ V48
1479
1563
1564
-1566
+1565
1568
1748
1749
@@ -43,6 +43,8 @@ V48
11519
11822
11823
+11859
+11861
42510
42511
43126
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/GL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/GL.pl
index 01ebaac91b1..01830d9e5a7 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/GL.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/GL.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V26
+V32
160
161
847
@@ -27,6 +27,10 @@ V26
4059
6158
6159
+7629
+7630
+7676
+7677
8199
8200
8209
@@ -35,6 +39,8 @@ V26
8240
78896
78903
+78905
+78908
94180
94181
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/ID.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/ID.pl
index 37b72d3796a..372ccdc09f1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/ID.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/ID.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V330
+V336
8986
8988
9200
@@ -201,6 +201,8 @@ V330
65501
65506
65509
+73541
+73552
94208
100344
100352
@@ -208,7 +210,7 @@ V330
101632
101641
110592
-110879
+110883
110960
111356
126976
@@ -334,6 +336,10 @@ V330
129502
129536
129620
+129731
+129734
+129776
+129785
129792
130048
131070
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/IN.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/IN.pl
index cd2c9100e3a..812b75195fe 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/IN.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/IN.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/IS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/IS.pl
index 5a6ab6414bf..f58f7cf6478 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/IS.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/IS.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/NS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/NS.pl
index 1f35bd2bd8f..c0a29b328e1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/NS.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/NS.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/NU.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/NU.pl
index cd405ecadf0..92874879af3 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/NU.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/NU.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V122
+V128
48
58
1632
@@ -119,8 +119,12 @@ V122
73050
73120
73130
+73552
+73562
92768
92778
+92864
+92874
93008
93018
120782
@@ -129,6 +133,8 @@ V122
123210
123632
123642
+124144
+124154
125264
125274
130032
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/OP.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/OP.pl
index f027fb3bcae..f305eadaf28 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/OP.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/OP.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V170
+V182
40
41
91
@@ -109,6 +109,14 @@ V170
11817
11842
11843
+11861
+11862
+11863
+11864
+11865
+11866
+11867
+11868
12296
12297
12298
@@ -177,6 +185,10 @@ V170
78714
78903
78904
+78908
+78909
+78910
+78911
83406
83407
125278
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/PO.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/PO.pl
index 363a865e07c..f727a57321d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/PO.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/PO.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V46
+V50
37
38
162
@@ -29,6 +29,8 @@ V46
3450
8240
8248
+8279
+8280
8359
8360
8374
@@ -37,6 +39,8 @@ V46
8380
8382
8383
+8384
+8385
8451
8452
8457
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/PR.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/PR.pl
index b03c7e0006d..36bcf965535 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/PR.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/PR.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V48
+V50
36
37
43
@@ -44,6 +44,8 @@ V48
8380
8382
8383
+8384
+8385
8400
8470
8471
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/QU.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/QU.pl
index b9f5b412eec..96aeaffb246 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/QU.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/QU.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/SA.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/SA.pl
index 23dd08138c4..964d51f6587 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/SA.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/SA.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -32,7 +32,7 @@ V70
3782
3783
3784
-3790
+3791
3804
3808
4096
@@ -80,5 +80,5 @@ V70
71482
71484
71487
-71488
+71495
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/XX.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/XX.pl
index 7e20e4b791c..958eeb67f6d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lb/XX.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lb/XX.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1265
+V1327
888
890
896
@@ -35,8 +35,6 @@ V1265
1519
1525
1536
-1565
-1566
1806
1807
1867
@@ -54,11 +52,11 @@ V1265
2143
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2191
+2192
+2194
+2200
2436
2437
2445
@@ -214,7 +212,7 @@ V1265
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -224,6 +222,8 @@ V1265
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -246,14 +246,14 @@ V1265
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -313,7 +313,7 @@ V1265
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -381,10 +381,8 @@ V1265
5792
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5943
5952
5972
@@ -401,8 +399,6 @@ V1265
6128
6138
6144
-6159
-6160
6170
6176
6265
@@ -441,11 +437,11 @@ V1265
6816
6830
6832
-6849
+6863
6912
-6988
+6989
6992
-7037
+7039
7040
7156
7164
@@ -461,8 +457,6 @@ V1265
7376
7419
7424
-7674
-7675
7958
7960
7966
@@ -515,10 +509,6 @@ V1265
11126
11158
11159
-11311
-11312
-11359
-11360
11508
11513
11558
@@ -549,7 +539,7 @@ V1265
11736
11743
11744
-11859
+11870
11904
11930
11931
@@ -581,10 +571,14 @@ V1265
42560
42744
42752
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43053
43056
43066
@@ -653,16 +647,14 @@ V1265
64323
64325
64326
-64450
+64451
64467
-64832
-64848
64912
64914
64968
+64975
+64976
65008
-65022
-65024
65050
65056
65107
@@ -749,13 +741,33 @@ V1265
66864
66916
66927
-66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -838,10 +850,12 @@ V1265
69294
69296
69298
-69376
+69373
69416
69424
69466
+69488
+69514
69552
69580
69600
@@ -849,9 +863,9 @@ V1265
69632
69710
69714
-69744
+69750
69759
-69826
+69827
69837
69838
69840
@@ -871,7 +885,7 @@ V1265
70144
70162
70163
-70207
+70210
70272
70279
70280
@@ -935,7 +949,7 @@ V1265
71264
71277
71296
-71353
+71354
71360
71370
71424
@@ -943,7 +957,7 @@ V1265
71453
71468
71472
-71488
+71495
71680
71740
71840
@@ -974,8 +988,10 @@ V1265
72264
72272
72355
-72384
+72368
72441
+72448
+72458
72704
72713
72714
@@ -1018,6 +1034,12 @@ V1265
73130
73440
73465
+73472
+73489
+73490
+73531
+73534
+73562
73648
73649
73664
@@ -1030,10 +1052,10 @@ V1265
74869
74880
75076
+77712
+77811
77824
-78895
-78896
-78905
+78934
82944
83527
92160
@@ -1043,7 +1065,9 @@ V1265
92768
92778
92782
-92784
+92863
+92864
+92874
92880
92910
92912
@@ -1076,10 +1100,20 @@ V1265
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1094,14 +1128,22 @@ V1265
113818
113820
113828
+118528
+118574
+118576
+118599
+118608
+118724
118784
119030
119040
119079
119081
-119273
+119275
119296
119366
+119488
+119508
119520
119540
119552
@@ -1154,6 +1196,10 @@ V1265
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1164,6 +1210,10 @@ V1265
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1172,10 +1222,22 @@ V1265
123210
123214
123216
+123536
+123567
123584
123642
123647
123648
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125127
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Lower/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Lower/Y.pl
index aea247c739e..88e85003949 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Lower/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Lower/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1304
+V1342
97
123
170
@@ -563,7 +563,7 @@ V1304
1417
4304
4347
-4349
+4348
4352
5112
5118
@@ -890,7 +890,7 @@ V1304
9424
9450
11312
-11359
+11360
11361
11362
11365
@@ -1225,12 +1225,26 @@ V1304
42942
42943
42944
+42945
+42946
42947
42948
42952
42953
42954
42955
+42961
+42962
+42963
+42964
+42965
+42966
+42967
+42968
+42969
+42970
+42994
+42997
42998
42999
43000
@@ -1238,7 +1252,7 @@ V1304
43824
43867
43868
-43881
+43882
43888
43968
64256
@@ -1251,6 +1265,22 @@ V1304
66640
66776
66812
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
+67456
+67457
+67459
+67462
+67463
+67505
+67506
+67515
68800
68851
71872
@@ -1313,6 +1343,14 @@ V1304
120778
120779
120780
+122624
+122634
+122635
+122655
+122661
+122667
+122928
+122990
125218
125252
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Math/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Math/Y.pl
index 5bf9d021d9b..2328d0b20d0 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Math/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Math/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/NFCQC/M.pl b/Master/tlpkg/tlperl/lib/unicore/lib/NFCQC/M.pl
index ec0922a5091..acf7c30fbc2 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/NFCQC/M.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/NFCQC/M.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/NFCQC/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/NFCQC/Y.pl
index b09ee7b01d1..abad4361a4f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/NFCQC/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/NFCQC/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/NFDQC/N.pl b/Master/tlpkg/tlperl/lib/unicore/lib/NFDQC/N.pl
index 9b1ae9cf86d..5f28e03d306 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/NFDQC/N.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/NFDQC/N.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/NFDQC/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/NFDQC/Y.pl
index 9c68a42f43e..c3d63d44587 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/NFDQC/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/NFDQC/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/NFKCQC/N.pl b/Master/tlpkg/tlperl/lib/unicore/lib/NFKCQC/N.pl
index 73843a54f4f..9ecb1ce9eb0 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/NFKCQC/N.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/NFKCQC/N.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V500
+V510
160
161
168
@@ -297,6 +297,8 @@ V500
42654
42864
42865
+42994
+42997
43000
43002
43868
@@ -377,6 +379,12 @@ V500
65511
65512
65519
+67457
+67462
+67463
+67505
+67506
+67515
119134
119141
119227
@@ -423,6 +431,8 @@ V500
120780
120782
120832
+122928
+122990
126464
126468
126469
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/NFKCQC/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/NFKCQC/Y.pl
index 7b1d529401b..cc9c558e186 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/NFKCQC/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/NFKCQC/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V577
+V587
0
160
161
@@ -356,6 +356,8 @@ V577
42654
42864
42865
+42994
+42997
43000
43002
43868
@@ -436,6 +438,12 @@ V577
65511
65512
65519
+67457
+67462
+67463
+67505
+67506
+67515
69818
69819
69927
@@ -500,6 +508,8 @@ V577
120780
120782
120832
+122928
+122990
126464
126468
126469
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/NFKDQC/N.pl b/Master/tlpkg/tlperl/lib/unicore/lib/NFKDQC/N.pl
index fa39a4d766f..96b6a2cfda4 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/NFKDQC/N.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/NFKDQC/N.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V784
+V794
160
161
168
@@ -561,6 +561,8 @@ V784
42654
42864
42865
+42994
+42997
43000
43002
43868
@@ -643,6 +645,12 @@ V784
65511
65512
65519
+67457
+67462
+67463
+67505
+67506
+67515
69786
69787
69788
@@ -707,6 +715,8 @@ V784
120780
120782
120832
+122928
+122990
126464
126468
126469
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/NFKDQC/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/NFKDQC/Y.pl
index 22db8e7d30e..7fb8b1d5e42 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/NFKDQC/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/NFKDQC/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V785
+V795
0
160
161
@@ -562,6 +562,8 @@ V785
42654
42864
42865
+42994
+42997
43000
43002
43868
@@ -644,6 +646,12 @@ V785
65511
65512
65519
+67457
+67462
+67463
+67505
+67506
+67515
69786
69787
69788
@@ -708,6 +716,8 @@ V785
120780
120782
120832
+122928
+122990
126464
126468
126469
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nt/Di.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nt/Di.pl
index 2004be11a6e..daee8280922 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nt/Di.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nt/Di.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nt/None.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nt/None.pl
index 5162c4d3f64..d5590a4a823 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nt/None.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nt/None.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V411
+V419
0
48
58
@@ -350,18 +350,24 @@ V411
73050
73120
73130
+73552
+73562
73664
73685
74752
74863
92768
92778
+92864
+92874
93008
93018
93019
93026
93824
93847
+119488
+119508
119520
119540
119648
@@ -372,6 +378,8 @@ V411
123210
123632
123642
+124144
+124154
125127
125136
125264
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nt/Nu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nt/Nu.pl
index 744d33f0b87..2d38e33539a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nt/Nu.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nt/Nu.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V302
+V304
188
191
2548
@@ -263,6 +263,8 @@ V302
93026
93824
93847
+119488
+119508
119520
119540
119648
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/0.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/0.pl
index 4cc2625bde0..f62c286e13e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/0.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/0.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V162
+V170
48
49
1632
@@ -143,12 +143,18 @@ V162
73041
73120
73121
+73552
+73553
92768
92769
+92864
+92865
93008
93009
93824
93825
+119488
+119489
119520
119521
120782
@@ -165,6 +171,8 @@ V162
123201
123632
123633
+124144
+124145
125264
125265
127232
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1.pl
index a36c5f44e8a..d247d553e75 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V274
+V282
49
50
185
@@ -225,6 +225,8 @@ V274
73042
73121
73122
+73553
+73554
74773
74774
74782
@@ -239,12 +241,16 @@ V274
74841
92769
92770
+92865
+92866
93009
93010
93825
93826
93844
93845
+119489
+119490
119521
119522
119648
@@ -267,6 +273,8 @@ V274
123202
123633
123634
+124145
+124146
125127
125128
125265
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/10.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/10.pl
index 6f9749008a2..f5ace1d2af2 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/10.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/10.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V116
+V118
3056
3057
3440
@@ -117,6 +117,8 @@ V116
93020
93834
93835
+119498
+119499
119530
119531
119657
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/100.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/100.pl
index 8961331addf..8b9ac1ccdf7 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/100.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/100.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1000.pl
index cd12141feb9..f0b01f9ed2e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/10000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/10000.pl
index 4eee199e362..85a063df8b9 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/10000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/10000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/100000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/100000.pl
index 463bd26b53e..bfea46d6b12 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/100000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/100000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/11.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/11.pl
index a67e461f3b8..f3b18d90f6c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/11.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/11.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V16
+V18
8554
8555
8570
@@ -25,6 +25,8 @@ V16
9452
93835
93836
+119499
+119500
119531
119532
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/12.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/12.pl
index 3b413b3a356..8cce5daaadd 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/12.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/12.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V16
+V18
8555
8556
8571
@@ -25,6 +25,8 @@ V16
9453
93836
93837
+119500
+119501
119532
119533
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/13.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/13.pl
index 2ca151b9863..09c3f9c6ceb 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/13.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/13.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V12
+V14
9324
9325
9344
@@ -21,6 +21,8 @@ V12
9454
93837
93838
+119501
+119502
119533
119534
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/14.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/14.pl
index 82247bde916..450d7316922 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/14.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/14.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V12
+V14
9325
9326
9345
@@ -21,6 +21,8 @@ V12
9455
93838
93839
+119502
+119503
119534
119535
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/15.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/15.pl
index 4f1d4b89543..db18fa938a5 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/15.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/15.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V12
+V14
9326
9327
9346
@@ -21,6 +21,8 @@ V12
9456
93839
93840
+119503
+119504
119535
119536
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/16.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/16.pl
index d65ad084246..08ea7060c0e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/16.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/16.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V14
+V16
2553
2554
9327
@@ -23,6 +23,8 @@ V14
9457
93840
93841
+119504
+119505
119536
119537
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/17.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/17.pl
index 7558772bffb..9f0e15db4f8 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/17.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/17.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V14
+V16
5870
5871
9328
@@ -23,6 +23,8 @@ V14
9458
93841
93842
+119505
+119506
119537
119538
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/18.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/18.pl
index c29b4f47622..de0405acb32 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/18.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/18.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V14
+V16
5871
5872
9329
@@ -23,6 +23,8 @@ V14
9459
93842
93843
+119506
+119507
119538
119539
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/19.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/19.pl
index 187208023ad..567ec88ffdd 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/19.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/19.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V14
+V16
5872
5873
9330
@@ -23,6 +23,8 @@ V14
9460
93843
93844
+119507
+119508
119539
119540
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_16.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_16.pl
index ebec8a4d8ed..2ef2a4b12b4 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_16.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_16.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_2.pl
index fe17c84f64b..7fbec06e2f0 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_2.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_2.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_3.pl
index f6595926cb1..e9f3fb8a157 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_3.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_3.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_4.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_4.pl
index 4e6eab9470a..5a55ccdf5c4 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_4.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_4.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_6.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_6.pl
index 0463b988965..8b9df8d9ede 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_6.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_6.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_8.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_8.pl
index a127398a449..2850233c592 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_8.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/1_8.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/2.pl
index 819c16f26f0..86cc128a78c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/2.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/2.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V272
+V280
50
51
178
@@ -215,6 +215,8 @@ V272
73043
73122
73123
+73554
+73555
74752
74753
74774
@@ -237,12 +239,16 @@ V272
74842
92770
92771
+92866
+92867
93010
93011
93826
93827
93845
93846
+119490
+119491
119522
119523
119649
@@ -263,6 +269,8 @@ V272
123203
123634
123635
+124146
+124147
125128
125129
125266
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/20.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/20.pl
index 52f56cc3548..7635921b66c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/20.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/20.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/200.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/200.pl
index e396a86d344..cf541a99037 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/200.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/200.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/2000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/2000.pl
index 707f4d5a93c..de4e394b6ea 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/2000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/2000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/20000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/20000.pl
index b7540ead582..5a1fd45174e 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/20000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/20000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/2_3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/2_3.pl
index 30b781ab974..35473b681f8 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/2_3.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/2_3.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3.pl
index 79940a405b8..63f184fd345 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V266
+V274
51
52
179
@@ -203,6 +203,8 @@ V266
73044
73123
73124
+73555
+73556
74753
74754
74760
@@ -227,12 +229,16 @@ V266
74840
92771
92772
+92867
+92868
93011
93012
93827
93828
93846
93847
+119491
+119492
119523
119524
119650
@@ -253,6 +259,8 @@ V266
123204
123635
123636
+124147
+124148
125129
125130
125267
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/30.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/30.pl
index aa35f38debe..18fdf9e680f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/30.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/30.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/300.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/300.pl
index 02bf3372f3d..8c9bebb73a6 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/300.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/300.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3000.pl
index 60956c3c8f5..ad540448b6d 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/30000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/30000.pl
index 8d1e2b9b847..92a7e34b7a8 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/30000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/30000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3_16.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3_16.pl
index 95176188953..90abd9540e4 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3_16.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3_16.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3_4.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3_4.pl
index a8bee4d56a9..2a4f282d368 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3_4.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/3_4.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/4.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/4.pl
index ab49ed2e03f..235bdf8bc2a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/4.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/4.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V252
+V260
52
53
1636
@@ -191,6 +191,8 @@ V252
73045
73124
73125
+73556
+73557
74754
74755
74761
@@ -217,10 +219,14 @@ V252
74858
92772
92773
+92868
+92869
93012
93013
93828
93829
+119492
+119493
119524
119525
119651
@@ -241,6 +247,8 @@ V252
123205
123636
123637
+124148
+124149
125130
125131
125268
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/40.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/40.pl
index 37265d574cc..c760fce91c5 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/40.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/40.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/400.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/400.pl
index 6e768e5874d..8a0c75c69ad 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/400.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/400.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/4000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/4000.pl
index e4c3a1584f3..98d2246030a 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/4000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/4000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/40000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/40000.pl
index 4af84d36c14..a63c62d4600 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/40000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/40000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/5.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/5.pl
index b680b2713a1..892169034a1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/5.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/5.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V256
+V264
53
54
1637
@@ -199,6 +199,8 @@ V256
73046
73125
73126
+73557
+73558
74755
74756
74762
@@ -223,10 +225,14 @@ V256
74859
92773
92774
+92869
+92870
93013
93014
93829
93830
+119493
+119494
119525
119526
119652
@@ -249,6 +255,8 @@ V256
123206
123637
123638
+124149
+124150
125131
125132
125269
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/50.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/50.pl
index 1878ff1df3d..3743cbb8306 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/50.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/50.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/500.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/500.pl
index 286e6b3f0aa..feb420110c2 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/500.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/500.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/5000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/5000.pl
index ad96662852b..8dbbdfc9166 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/5000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/5000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/50000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/50000.pl
index 5077a855a16..95dad7b3823 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/50000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/50000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/6.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/6.pl
index 1ccd994193c..9c3d6d3ff64 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/6.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/6.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V226
+V234
54
55
1638
@@ -179,6 +179,8 @@ V226
73047
73126
73127
+73558
+73559
74756
74757
74763
@@ -197,10 +199,14 @@ V226
74860
92774
92775
+92870
+92871
93014
93015
93830
93831
+119494
+119495
119526
119527
119653
@@ -219,6 +225,8 @@ V226
123207
123638
123639
+124150
+124151
125132
125133
125270
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/60.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/60.pl
index 79146c1ce23..e2e6418ac22 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/60.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/60.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/600.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/600.pl
index f23bbb1fd1d..34771362970 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/600.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/600.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/6000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/6000.pl
index fe0e58873f5..5f7c7c0c6a1 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/6000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/6000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/60000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/60000.pl
index 7fdae87a1d8..5df714356b0 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/60000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/60000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/7.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/7.pl
index 196c6d2e60f..5455982a195 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/7.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/7.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V220
+V228
55
56
1639
@@ -175,6 +175,8 @@ V220
73048
73127
73128
+73559
+73560
74757
74758
74764
@@ -191,10 +193,14 @@ V220
74861
92775
92776
+92871
+92872
93015
93016
93831
93832
+119495
+119496
119527
119528
119654
@@ -213,6 +219,8 @@ V220
123208
123639
123640
+124151
+124152
125133
125134
125271
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/70.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/70.pl
index ae11d500c1b..aae5acab5c2 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/70.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/70.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/700.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/700.pl
index 58a06e8cd5e..2368e133793 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/700.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/700.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/7000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/7000.pl
index 5efcae894b2..1ead289b384 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/7000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/7000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/70000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/70000.pl
index 18dd5818b6f..cfe629c2ae5 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/70000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/70000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/8.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/8.pl
index 1208bfda544..afb33acc42f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/8.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/8.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V214
+V222
56
57
1640
@@ -171,6 +171,8 @@ V214
73049
73128
73129
+73560
+73561
74758
74759
74765
@@ -187,10 +189,14 @@ V214
74862
92776
92777
+92872
+92873
93016
93017
93832
93833
+119496
+119497
119528
119529
119655
@@ -209,6 +215,8 @@ V214
123209
123640
123641
+124152
+124153
125134
125135
125272
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/80.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/80.pl
index 081f41e3d81..64bdf0831ee 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/80.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/80.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/800.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/800.pl
index d72cd4efc48..79fd008df3e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/800.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/800.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/8000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/8000.pl
index 5c12351995f..e8acdb7cd08 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/8000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/8000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/80000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/80000.pl
index a13be4a6435..cbc0a065d73 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/80000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/80000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/9.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/9.pl
index c14f29f7333..a962a72d572 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/9.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/9.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V218
+V226
57
58
1641
@@ -173,6 +173,8 @@ V218
73050
73129
73130
+73561
+73562
74759
74760
74766
@@ -189,10 +191,14 @@ V218
74863
92777
92778
+92873
+92874
93017
93018
93833
93834
+119497
+119498
119529
119530
119656
@@ -211,6 +217,8 @@ V218
123210
123641
123642
+124153
+124154
125135
125136
125273
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/90.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/90.pl
index de1d8d5c3d3..32dd878b737 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/90.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/90.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/900.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/900.pl
index 4b414aaa31f..8dc79025502 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/900.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/900.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/9000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/9000.pl
index 835dbcaf838..e1bac643845 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/9000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/9000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/90000.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/90000.pl
index 71feb7b418e..8cb255afbcf 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Nv/90000.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Nv/90000.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/PCM/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/PCM/Y.pl
index 708b56dce77..cd0f22d41d2 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/PCM/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/PCM/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,13 +10,15 @@
return <<'END';
-V12
+V14
1536
1542
1757
1758
1807
1808
+2192
+2194
2274
2275
69821
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/PatSyn/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/PatSyn/Y.pl
index ca460b60fe5..a84cc9db065 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/PatSyn/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/PatSyn/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Alnum.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Alnum.pl
index bb5ba4426a1..826ed9eb574 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Alnum.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Alnum.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1464
+V1544
48
58
65
@@ -115,10 +115,12 @@ V1464
2137
2144
2155
+2160
+2184
+2185
+2191
2208
-2229
-2230
-2248
+2250
2260
2272
2275
@@ -286,8 +288,6 @@ V1464
3046
3056
3072
-3076
-3077
3085
3086
3089
@@ -305,6 +305,8 @@ V1464
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -329,14 +331,14 @@ V1464
3277
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -422,7 +424,7 @@ V1464
3913
3949
3953
-3970
+3972
3976
3992
3993
@@ -492,10 +494,8 @@ V1464
5870
5881
5888
-5901
-5902
5908
-5920
+5919
5940
5952
5972
@@ -553,12 +553,14 @@ V1464
6824
6847
6849
+6860
+6863
6912
6964
6965
6980
6981
-6988
+6989
6992
7002
7040
@@ -666,10 +668,6 @@ V1464
9398
9450
11264
-11311
-11312
-11359
-11360
11493
11499
11503
@@ -734,8 +732,6 @@ V1464
13312
19904
19968
-40957
-40960
42125
42192
42238
@@ -754,10 +750,14 @@ V1464
42786
42889
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43014
43015
43048
@@ -927,12 +927,34 @@ V1464
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -1009,6 +1031,8 @@ V1464
69416
69424
69446
+69488
+69506
69552
69573
69600
@@ -1017,8 +1041,12 @@ V1464
69702
69734
69744
-69762
+69745
+69750
+69760
69817
+69826
+69827
69840
69865
69872
@@ -1048,7 +1076,7 @@ V1464
70199
70200
70206
-70207
+70210
70272
70279
70280
@@ -1133,6 +1161,8 @@ V1464
71467
71472
71482
+71488
+71495
71680
71737
71840
@@ -1173,7 +1203,7 @@ V1464
72344
72349
72350
-72384
+72368
72441
72704
72713
@@ -1225,6 +1255,14 @@ V1464
73130
73440
73463
+73472
+73489
+73490
+73531
+73534
+73537
+73552
+73562
73648
73649
73728
@@ -1233,8 +1271,12 @@ V1464
74863
74880
75076
+77712
+77809
77824
-78895
+78896
+78913
+78919
82944
83527
92160
@@ -1243,6 +1285,10 @@ V1464
92767
92768
92778
+92784
+92863
+92864
+92874
92880
92910
92928
@@ -1275,10 +1321,20 @@ V1464
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1355,6 +1411,10 @@ V1464
120780
120782
120832
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1365,6 +1425,10 @@ V1464
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123191
@@ -1373,10 +1437,24 @@ V1464
123210
123214
123215
+123536
+123566
123584
123628
123632
123642
+124112
+124140
+124144
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125184
@@ -1462,9 +1540,9 @@ V1464
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1475,4 +1553,6 @@ V1464
195102
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Assigned.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Assigned.pl
index 0083d8d5604..adfcbdf421a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Assigned.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Assigned.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1354
+V1414
0
888
890
@@ -36,8 +36,6 @@ V1354
1519
1525
1536
-1565
-1566
1806
1807
1867
@@ -55,11 +53,11 @@ V1354
2143
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2191
+2192
+2194
+2200
2436
2437
2445
@@ -215,7 +213,7 @@ V1354
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -225,6 +223,8 @@ V1354
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -247,14 +247,14 @@ V1354
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -314,7 +314,7 @@ V1354
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -382,10 +382,8 @@ V1354
5792
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5943
5952
5972
@@ -402,8 +400,6 @@ V1354
6128
6138
6144
-6159
-6160
6170
6176
6265
@@ -442,11 +438,11 @@ V1354
6816
6830
6832
-6849
+6863
6912
-6988
+6989
6992
-7037
+7039
7040
7156
7164
@@ -462,8 +458,6 @@ V1354
7376
7419
7424
-7674
-7675
7958
7960
7966
@@ -504,7 +498,7 @@ V1354
8336
8349
8352
-8384
+8385
8400
8433
8448
@@ -518,10 +512,6 @@ V1354
11126
11158
11159
-11311
-11312
-11359
-11360
11508
11513
11558
@@ -552,7 +542,7 @@ V1354
11736
11743
11744
-11859
+11870
11904
11930
11931
@@ -576,8 +566,6 @@ V1354
12784
12831
12832
-40957
-40960
42125
42128
42183
@@ -586,10 +574,14 @@ V1354
42560
42744
42752
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43053
43056
43066
@@ -660,16 +652,14 @@ V1354
64323
64325
64326
-64450
+64451
64467
-64832
-64848
64912
64914
64968
+64975
+64976
65008
-65022
-65024
65050
65056
65107
@@ -756,13 +746,33 @@ V1354
66864
66916
66927
-66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -845,10 +855,12 @@ V1354
69294
69296
69298
-69376
+69373
69416
69424
69466
+69488
+69514
69552
69580
69600
@@ -856,9 +868,9 @@ V1354
69632
69710
69714
-69744
+69750
69759
-69826
+69827
69837
69838
69840
@@ -878,7 +890,7 @@ V1354
70144
70162
70163
-70207
+70210
70272
70279
70280
@@ -942,7 +954,7 @@ V1354
71264
71277
71296
-71353
+71354
71360
71370
71424
@@ -950,7 +962,7 @@ V1354
71453
71468
71472
-71488
+71495
71680
71740
71840
@@ -981,8 +993,10 @@ V1354
72264
72272
72355
-72384
+72368
72441
+72448
+72458
72704
72713
72714
@@ -1025,6 +1039,12 @@ V1354
73130
73440
73465
+73472
+73489
+73490
+73531
+73534
+73562
73648
73649
73664
@@ -1037,10 +1057,10 @@ V1354
74869
74880
75076
+77712
+77811
77824
-78895
-78896
-78905
+78934
82944
83527
92160
@@ -1050,7 +1070,9 @@ V1354
92768
92778
92782
-92784
+92863
+92864
+92874
92880
92910
92912
@@ -1083,10 +1105,20 @@ V1354
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1101,14 +1133,22 @@ V1354
113818
113820
113828
+118528
+118574
+118576
+118599
+118608
+118724
118784
119030
119040
119079
119081
-119273
+119275
119296
119366
+119488
+119508
119520
119540
119552
@@ -1161,6 +1201,10 @@ V1354
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1171,6 +1215,10 @@ V1354
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1179,10 +1227,22 @@ V1354
123210
123214
123216
+123536
+123567
123584
123642
123647
123648
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125127
@@ -1291,16 +1351,18 @@ V1354
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -1314,27 +1376,23 @@ V1354
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
@@ -1342,9 +1400,9 @@ V1354
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1355,6 +1413,8 @@ V1354
195102
196608
201547
+201552
+205744
917505
917506
917536
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Blank.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Blank.pl
index 26d243fc600..df2e6601e58 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Blank.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Blank.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Graph.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Graph.pl
index e6ad4006cec..8f1b51cedbf 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Graph.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Graph.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1364
+V1424
33
127
161
@@ -38,8 +38,6 @@ V1364
1519
1525
1536
-1565
-1566
1806
1807
1867
@@ -57,11 +55,11 @@ V1364
2143
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2191
+2192
+2194
+2200
2436
2437
2445
@@ -217,7 +215,7 @@ V1364
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -227,6 +225,8 @@ V1364
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -249,14 +249,14 @@ V1364
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -316,7 +316,7 @@ V1364
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -386,10 +386,8 @@ V1364
5792
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5943
5952
5972
@@ -406,8 +404,6 @@ V1364
6128
6138
6144
-6159
-6160
6170
6176
6265
@@ -446,11 +442,11 @@ V1364
6816
6830
6832
-6849
+6863
6912
-6988
+6989
6992
-7037
+7039
7040
7156
7164
@@ -466,8 +462,6 @@ V1364
7376
7419
7424
-7674
-7675
7958
7960
7966
@@ -514,7 +508,7 @@ V1364
8336
8349
8352
-8384
+8385
8400
8433
8448
@@ -528,10 +522,6 @@ V1364
11126
11158
11159
-11311
-11312
-11359
-11360
11508
11513
11558
@@ -562,7 +552,7 @@ V1364
11736
11743
11744
-11859
+11870
11904
11930
11931
@@ -586,8 +576,6 @@ V1364
12784
12831
12832
-40957
-40960
42125
42128
42183
@@ -596,10 +584,14 @@ V1364
42560
42744
42752
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43053
43056
43066
@@ -670,16 +662,14 @@ V1364
64323
64325
64326
-64450
+64451
64467
-64832
-64848
64912
64914
64968
+64975
+64976
65008
-65022
-65024
65050
65056
65107
@@ -766,13 +756,33 @@ V1364
66864
66916
66927
-66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -855,10 +865,12 @@ V1364
69294
69296
69298
-69376
+69373
69416
69424
69466
+69488
+69514
69552
69580
69600
@@ -866,9 +878,9 @@ V1364
69632
69710
69714
-69744
+69750
69759
-69826
+69827
69837
69838
69840
@@ -888,7 +900,7 @@ V1364
70144
70162
70163
-70207
+70210
70272
70279
70280
@@ -952,7 +964,7 @@ V1364
71264
71277
71296
-71353
+71354
71360
71370
71424
@@ -960,7 +972,7 @@ V1364
71453
71468
71472
-71488
+71495
71680
71740
71840
@@ -991,8 +1003,10 @@ V1364
72264
72272
72355
-72384
+72368
72441
+72448
+72458
72704
72713
72714
@@ -1035,6 +1049,12 @@ V1364
73130
73440
73465
+73472
+73489
+73490
+73531
+73534
+73562
73648
73649
73664
@@ -1047,10 +1067,10 @@ V1364
74869
74880
75076
+77712
+77811
77824
-78895
-78896
-78905
+78934
82944
83527
92160
@@ -1060,7 +1080,9 @@ V1364
92768
92778
92782
-92784
+92863
+92864
+92874
92880
92910
92912
@@ -1093,10 +1115,20 @@ V1364
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1111,14 +1143,22 @@ V1364
113818
113820
113828
+118528
+118574
+118576
+118599
+118608
+118724
118784
119030
119040
119079
119081
-119273
+119275
119296
119366
+119488
+119508
119520
119540
119552
@@ -1171,6 +1211,10 @@ V1364
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1181,6 +1225,10 @@ V1364
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1189,10 +1237,22 @@ V1364
123210
123214
123216
+123536
+123567
123584
123642
123647
123648
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125127
@@ -1301,16 +1361,18 @@ V1364
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -1324,27 +1386,23 @@ V1364
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
@@ -1352,9 +1410,9 @@ V1364
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1365,6 +1423,8 @@ V1364
195102
196608
201547
+201552
+205744
917505
917506
917536
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/PerlWord.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/PerlWord.pl
index 41848aa3c10..9c370c462e4 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/PerlWord.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/PerlWord.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/PosixPun.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/PosixPun.pl
index 1e4aeee1162..445fab8571b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/PosixPun.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/PosixPun.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Print.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Print.pl
index 8f87891116e..3788e04d213 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Print.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Print.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1358
+V1418
32
127
160
@@ -38,8 +38,6 @@ V1358
1519
1525
1536
-1565
-1566
1806
1807
1867
@@ -57,11 +55,11 @@ V1358
2143
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2191
+2192
+2194
+2200
2436
2437
2445
@@ -217,7 +215,7 @@ V1358
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -227,6 +225,8 @@ V1358
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -249,14 +249,14 @@ V1358
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -316,7 +316,7 @@ V1358
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -384,10 +384,8 @@ V1358
5792
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5943
5952
5972
@@ -404,8 +402,6 @@ V1358
6128
6138
6144
-6159
-6160
6170
6176
6265
@@ -444,11 +440,11 @@ V1358
6816
6830
6832
-6849
+6863
6912
-6988
+6989
6992
-7037
+7039
7040
7156
7164
@@ -464,8 +460,6 @@ V1358
7376
7419
7424
-7674
-7675
7958
7960
7966
@@ -508,7 +502,7 @@ V1358
8336
8349
8352
-8384
+8385
8400
8433
8448
@@ -522,10 +516,6 @@ V1358
11126
11158
11159
-11311
-11312
-11359
-11360
11508
11513
11558
@@ -556,7 +546,7 @@ V1358
11736
11743
11744
-11859
+11870
11904
11930
11931
@@ -580,8 +570,6 @@ V1358
12784
12831
12832
-40957
-40960
42125
42128
42183
@@ -590,10 +578,14 @@ V1358
42560
42744
42752
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43053
43056
43066
@@ -664,16 +656,14 @@ V1358
64323
64325
64326
-64450
+64451
64467
-64832
-64848
64912
64914
64968
+64975
+64976
65008
-65022
-65024
65050
65056
65107
@@ -760,13 +750,33 @@ V1358
66864
66916
66927
-66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -849,10 +859,12 @@ V1358
69294
69296
69298
-69376
+69373
69416
69424
69466
+69488
+69514
69552
69580
69600
@@ -860,9 +872,9 @@ V1358
69632
69710
69714
-69744
+69750
69759
-69826
+69827
69837
69838
69840
@@ -882,7 +894,7 @@ V1358
70144
70162
70163
-70207
+70210
70272
70279
70280
@@ -946,7 +958,7 @@ V1358
71264
71277
71296
-71353
+71354
71360
71370
71424
@@ -954,7 +966,7 @@ V1358
71453
71468
71472
-71488
+71495
71680
71740
71840
@@ -985,8 +997,10 @@ V1358
72264
72272
72355
-72384
+72368
72441
+72448
+72458
72704
72713
72714
@@ -1029,6 +1043,12 @@ V1358
73130
73440
73465
+73472
+73489
+73490
+73531
+73534
+73562
73648
73649
73664
@@ -1041,10 +1061,10 @@ V1358
74869
74880
75076
+77712
+77811
77824
-78895
-78896
-78905
+78934
82944
83527
92160
@@ -1054,7 +1074,9 @@ V1358
92768
92778
92782
-92784
+92863
+92864
+92874
92880
92910
92912
@@ -1087,10 +1109,20 @@ V1358
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1105,14 +1137,22 @@ V1358
113818
113820
113828
+118528
+118574
+118576
+118599
+118608
+118724
118784
119030
119040
119079
119081
-119273
+119275
119296
119366
+119488
+119508
119520
119540
119552
@@ -1165,6 +1205,10 @@ V1358
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1175,6 +1219,10 @@ V1358
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1183,10 +1231,22 @@ V1358
123210
123214
123216
+123536
+123567
123584
123642
123647
123648
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125127
@@ -1295,16 +1355,18 @@ V1358
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -1318,27 +1380,23 @@ V1358
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
@@ -1346,9 +1404,9 @@ V1358
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1359,6 +1417,8 @@ V1358
195102
196608
201547
+201552
+205744
917505
917506
917536
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/SpacePer.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/SpacePer.pl
index 874977babf5..a0a07789d7c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/SpacePer.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/SpacePer.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Title.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Title.pl
index 918ab48c157..f8993bd3dff 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Title.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Title.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Word.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Word.pl
index 6326cc4e4b7..0a7183c9c13 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Word.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/Word.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1466
+V1542
48
58
65
@@ -111,11 +111,11 @@ V1466
2140
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2184
+2185
+2191
+2200
2274
2275
2404
@@ -283,7 +283,7 @@ V1466
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -293,6 +293,8 @@ V1466
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -317,14 +319,14 @@ V1466
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -390,7 +392,7 @@ V1466
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -482,10 +484,8 @@ V1466
5870
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5941
5952
5972
@@ -505,7 +505,7 @@ V1466
6122
6155
6158
-6160
+6159
6170
6176
6265
@@ -542,9 +542,9 @@ V1466
6823
6824
6832
-6849
+6863
6912
-6988
+6989
6992
7002
7019
@@ -568,8 +568,6 @@ V1466
7380
7419
7424
-7674
-7675
7958
7960
7966
@@ -652,10 +650,6 @@ V1466
9398
9450
11264
-11311
-11312
-11359
-11360
11493
11499
11508
@@ -720,8 +714,6 @@ V1466
13312
19904
19968
-40957
-40960
42125
42192
42238
@@ -740,10 +732,14 @@ V1466
42786
42889
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43048
43052
43053
@@ -921,12 +917,34 @@ V1466
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -1001,12 +1019,14 @@ V1466
69293
69296
69298
-69376
+69373
69405
69415
69416
69424
69457
+69488
+69510
69552
69573
69600
@@ -1014,9 +1034,11 @@ V1466
69632
69703
69734
-69744
+69750
69759
69819
+69826
+69827
69840
69865
69872
@@ -1044,7 +1066,7 @@ V1466
70163
70200
70206
-70207
+70210
70272
70279
70280
@@ -1123,6 +1145,8 @@ V1466
71468
71472
71482
+71488
+71495
71680
71739
71840
@@ -1159,7 +1183,7 @@ V1466
72346
72349
72350
-72384
+72368
72441
72704
72713
@@ -1203,6 +1227,14 @@ V1466
73130
73440
73463
+73472
+73489
+73490
+73531
+73534
+73539
+73552
+73562
73648
73649
73728
@@ -1211,8 +1243,12 @@ V1466
74863
74880
75076
+77712
+77809
77824
-78895
+78896
+78912
+78934
82944
83527
92160
@@ -1221,6 +1257,10 @@ V1466
92767
92768
92778
+92784
+92863
+92864
+92874
92880
92910
92912
@@ -1255,10 +1295,20 @@ V1466
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1273,6 +1323,10 @@ V1466
113818
113821
113823
+118528
+118574
+118576
+118599
119141
119146
119149
@@ -1359,6 +1413,10 @@ V1466
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1369,6 +1427,10 @@ V1466
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1377,8 +1439,20 @@ V1466
123210
123214
123215
+123536
+123567
123584
123642
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125136
@@ -1462,9 +1536,9 @@ V1466
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1475,6 +1549,8 @@ V1466
195102
196608
201547
+201552
+205744
917760
918000
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/XPosixPu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/XPosixPu.pl
index 50ca614906a..5d4a9d5f1c1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/XPosixPu.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/XPosixPu.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V360
+V372
33
48
58
@@ -55,7 +55,7 @@ V360
1550
1563
1564
-1566
+1565
1568
1642
1646
@@ -133,6 +133,8 @@ V360
6830
7002
7009
+7037
+7039
7164
7168
7227
@@ -182,7 +184,7 @@ V360
11824
11856
11858
-11859
+11870
12289
12292
12296
@@ -293,6 +295,8 @@ V360
69294
69461
69466
+69510
+69514
69703
69710
69819
@@ -329,6 +333,8 @@ V360
71236
71264
71277
+71353
+71354
71484
71487
71739
@@ -343,16 +349,22 @@ V360
72349
72350
72355
+72448
+72458
72769
72774
72816
72818
73463
73465
+73539
+73552
73727
73728
74864
74869
+77809
+77811
92782
92784
92917
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlAny.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlAny.pl
index 6168e7b6b74..49af76dd4ff 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlAny.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlAny.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V268
+V282
65
91
97
@@ -208,10 +208,6 @@ V268
9398
9450
11264
-11311
-11312
-11359
-11360
11377
11378
11380
@@ -246,9 +242,11 @@ V268
42902
42927
42928
-42944
-42946
42955
+42960
+42962
+42966
+42970
42997
42999
43859
@@ -269,6 +267,22 @@ V268
66772
66776
66812
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
68736
68787
68800
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlCh2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlCh2.pl
index 93d5c8a2faf..23437bdc0c5 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlCh2.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlCh2.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1480
+V1556
32
33
40
@@ -119,11 +119,11 @@ V1480
2140
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2184
+2185
+2191
+2200
2274
2275
2404
@@ -291,7 +291,7 @@ V1480
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -301,6 +301,8 @@ V1480
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -325,14 +327,14 @@ V1480
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -398,7 +400,7 @@ V1480
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -490,10 +492,8 @@ V1480
5870
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5941
5952
5972
@@ -513,7 +513,7 @@ V1480
6122
6155
6158
-6160
+6159
6170
6176
6265
@@ -552,9 +552,9 @@ V1480
6832
6846
6847
-6849
+6863
6912
-6988
+6989
6992
7002
7019
@@ -578,8 +578,6 @@ V1480
7380
7419
7424
-7674
-7675
7958
7960
7966
@@ -662,10 +660,6 @@ V1480
8544
8585
11264
-11311
-11312
-11359
-11360
11493
11499
11508
@@ -728,8 +722,6 @@ V1480
13312
19904
19968
-40957
-40960
42125
42192
42238
@@ -748,10 +740,14 @@ V1480
42786
42889
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43048
43052
43053
@@ -941,12 +937,34 @@ V1480
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -1021,12 +1039,14 @@ V1480
69293
69296
69298
-69376
+69373
69405
69415
69416
69424
69457
+69488
+69510
69552
69573
69600
@@ -1034,9 +1054,11 @@ V1480
69632
69703
69734
-69744
+69750
69759
69819
+69826
+69827
69840
69865
69872
@@ -1064,7 +1086,7 @@ V1480
70163
70200
70206
-70207
+70210
70272
70279
70280
@@ -1143,6 +1165,8 @@ V1480
71468
71472
71482
+71488
+71495
71680
71739
71840
@@ -1179,7 +1203,7 @@ V1480
72346
72349
72350
-72384
+72368
72441
72704
72713
@@ -1223,6 +1247,14 @@ V1480
73130
73440
73463
+73472
+73489
+73490
+73531
+73534
+73539
+73552
+73562
73648
73649
73728
@@ -1231,8 +1263,12 @@ V1480
74863
74880
75076
+77712
+77809
77824
-78895
+78896
+78912
+78934
82944
83527
92160
@@ -1241,6 +1277,10 @@ V1480
92767
92768
92778
+92784
+92863
+92864
+92874
92880
92910
92912
@@ -1275,10 +1315,20 @@ V1480
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1293,6 +1343,10 @@ V1480
113818
113821
113823
+118528
+118574
+118576
+118599
119141
119146
119149
@@ -1379,6 +1433,10 @@ V1480
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1389,6 +1447,10 @@ V1480
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1397,8 +1459,20 @@ V1480
123210
123214
123215
+123536
+123567
123584
123642
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125136
@@ -1476,9 +1550,9 @@ V1480
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1489,6 +1563,8 @@ V1480
195102
196608
201547
+201552
+205744
917760
918000
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlCha.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlCha.pl
index 5aa4d66d8ff..fa963e13042 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlCha.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlCha.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1256
+V1330
65
91
97
@@ -109,10 +109,12 @@ V1256
2137
2144
2155
+2160
+2184
+2185
+2191
2208
-2229
-2230
-2248
+2250
2308
2362
2365
@@ -241,6 +243,8 @@ V1256
3134
3160
3163
+3165
+3166
3168
3170
3200
@@ -257,7 +261,7 @@ V1256
3258
3261
3262
-3294
+3293
3295
3296
3298
@@ -400,10 +404,8 @@ V1256
5873
5881
5888
-5901
-5902
5906
-5920
+5919
5938
5952
5970
@@ -446,7 +448,7 @@ V1256
6917
6964
6981
-6988
+6989
7043
7073
7086
@@ -548,10 +550,6 @@ V1256
8579
8581
11264
-11311
-11312
-11359
-11360
11493
11499
11503
@@ -610,8 +608,6 @@ V1256
13312
19904
19968
-40957
-40960
42125
42192
42238
@@ -632,10 +628,14 @@ V1256
42786
42889
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43010
43011
43014
@@ -825,12 +825,34 @@ V1256
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -901,12 +923,18 @@ V1256
69416
69424
69446
+69488
+69506
69552
69573
69600
69623
69635
69688
+69745
+69747
+69749
+69750
69763
69808
69840
@@ -933,6 +961,8 @@ V1256
70162
70163
70188
+70207
+70209
70272
70279
70280
@@ -989,6 +1019,8 @@ V1256
71353
71424
71451
+71488
+71495
71680
71724
71840
@@ -1027,7 +1059,7 @@ V1256
72330
72349
72350
-72384
+72368
72441
72704
72713
@@ -1055,20 +1087,32 @@ V1256
73113
73440
73459
+73474
+73475
+73476
+73489
+73490
+73524
73648
73649
73728
74650
74880
75076
+77712
+77809
77824
-78895
+78896
+78913
+78919
82944
83527
92160
92729
92736
92767
+92784
+92863
92880
92910
92928
@@ -1097,10 +1141,20 @@ V1256
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1173,14 +1227,32 @@ V1256
120771
120772
120780
+122624
+122655
+122661
+122667
+122928
+122990
123136
123181
123191
123198
123214
123215
+123536
+123566
123584
123628
+124112
+124140
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125184
@@ -1254,9 +1326,9 @@ V1256
126635
126652
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1267,4 +1339,6 @@ V1256
195102
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlFol.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlFol.pl
index 330ac0e9436..59e197f9517 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlFol.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlFol.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIDC.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIDC.pl
index f20c5ce154e..d91adae7292 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIDC.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIDC.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1474
+V1550
48
58
65
@@ -113,11 +113,11 @@ V1474
2140
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2184
+2185
+2191
+2200
2274
2275
2404
@@ -285,7 +285,7 @@ V1474
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -295,6 +295,8 @@ V1474
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -319,14 +321,14 @@ V1474
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -392,7 +394,7 @@ V1474
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -484,10 +486,8 @@ V1474
5870
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5941
5952
5972
@@ -507,7 +507,7 @@ V1474
6122
6155
6158
-6160
+6159
6170
6176
6265
@@ -546,9 +546,9 @@ V1474
6832
6846
6847
-6849
+6863
6912
-6988
+6989
6992
7002
7019
@@ -572,8 +572,6 @@ V1474
7380
7419
7424
-7674
-7675
7958
7960
7966
@@ -656,10 +654,6 @@ V1474
8544
8585
11264
-11311
-11312
-11359
-11360
11493
11499
11508
@@ -722,8 +716,6 @@ V1474
13312
19904
19968
-40957
-40960
42125
42192
42238
@@ -742,10 +734,14 @@ V1474
42786
42889
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43048
43052
43053
@@ -935,12 +931,34 @@ V1474
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -1015,12 +1033,14 @@ V1474
69293
69296
69298
-69376
+69373
69405
69415
69416
69424
69457
+69488
+69510
69552
69573
69600
@@ -1028,9 +1048,11 @@ V1474
69632
69703
69734
-69744
+69750
69759
69819
+69826
+69827
69840
69865
69872
@@ -1058,7 +1080,7 @@ V1474
70163
70200
70206
-70207
+70210
70272
70279
70280
@@ -1137,6 +1159,8 @@ V1474
71468
71472
71482
+71488
+71495
71680
71739
71840
@@ -1173,7 +1197,7 @@ V1474
72346
72349
72350
-72384
+72368
72441
72704
72713
@@ -1217,6 +1241,14 @@ V1474
73130
73440
73463
+73472
+73489
+73490
+73531
+73534
+73539
+73552
+73562
73648
73649
73728
@@ -1225,8 +1257,12 @@ V1474
74863
74880
75076
+77712
+77809
77824
-78895
+78896
+78912
+78934
82944
83527
92160
@@ -1235,6 +1271,10 @@ V1474
92767
92768
92778
+92784
+92863
+92864
+92874
92880
92910
92912
@@ -1269,10 +1309,20 @@ V1474
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1287,6 +1337,10 @@ V1474
113818
113821
113823
+118528
+118574
+118576
+118599
119141
119146
119149
@@ -1373,6 +1427,10 @@ V1474
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1383,6 +1441,10 @@ V1474
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1391,8 +1453,20 @@ V1474
123210
123214
123215
+123536
+123567
123584
123642
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125136
@@ -1470,9 +1544,9 @@ V1474
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1483,6 +1557,8 @@ V1474
195102
196608
201547
+201552
+205744
917760
918000
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIDS.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIDS.pl
index 04fe229e459..869a7256977 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIDS.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIDS.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1262
+V1336
65
91
95
@@ -111,10 +111,12 @@ V1262
2137
2144
2155
+2160
+2184
+2185
+2191
2208
-2229
-2230
-2248
+2250
2308
2362
2365
@@ -243,6 +245,8 @@ V1262
3134
3160
3163
+3165
+3166
3168
3170
3200
@@ -259,7 +263,7 @@ V1262
3258
3261
3262
-3294
+3293
3295
3296
3298
@@ -402,10 +406,8 @@ V1262
5870
5881
5888
-5901
-5902
5906
-5920
+5919
5938
5952
5970
@@ -446,7 +448,7 @@ V1262
6917
6964
6981
-6988
+6989
7043
7073
7086
@@ -548,10 +550,6 @@ V1262
8544
8585
11264
-11311
-11312
-11359
-11360
11493
11499
11503
@@ -612,8 +610,6 @@ V1262
13312
19904
19968
-40957
-40960
42125
42192
42238
@@ -634,10 +630,14 @@ V1262
42786
42889
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43010
43011
43014
@@ -829,12 +829,34 @@ V1262
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -905,12 +927,18 @@ V1262
69416
69424
69446
+69488
+69506
69552
69573
69600
69623
69635
69688
+69745
+69747
+69749
+69750
69763
69808
69840
@@ -937,6 +965,8 @@ V1262
70162
70163
70188
+70207
+70209
70272
70279
70280
@@ -993,6 +1023,8 @@ V1262
71353
71424
71451
+71488
+71495
71680
71724
71840
@@ -1031,7 +1063,7 @@ V1262
72330
72349
72350
-72384
+72368
72441
72704
72713
@@ -1059,6 +1091,12 @@ V1262
73113
73440
73459
+73474
+73475
+73476
+73489
+73490
+73524
73648
73649
73728
@@ -1067,14 +1105,20 @@ V1262
74863
74880
75076
+77712
+77809
77824
-78895
+78896
+78913
+78919
82944
83527
92160
92729
92736
92767
+92784
+92863
92880
92910
92928
@@ -1103,10 +1147,20 @@ V1262
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1179,14 +1233,32 @@ V1262
120771
120772
120780
+122624
+122655
+122661
+122667
+122928
+122990
123136
123181
123191
123198
123214
123215
+123536
+123566
123584
123628
+124112
+124140
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125184
@@ -1260,9 +1332,9 @@ V1262
126635
126652
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1273,4 +1345,6 @@ V1262
195102
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIsI.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIsI.pl
index a375448bb8a..59f0e01104d 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIsI.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlIsI.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlNch.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlNch.pl
index 313747f4cd8..c147e0be552 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlNch.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlNch.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPat.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPat.pl
index b9494131e80..889fad77bb3 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPat.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPat.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPr2.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPr2.pl
index 106890b3685..af089ed4089 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPr2.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPr2.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPro.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPro.pl
index a599cce623f..4106dcfe28e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPro.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlPro.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlQuo.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlQuo.pl
index e9cc05ef660..f108ec9d634 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlQuo.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Perl/_PerlQuo.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -48,7 +48,7 @@ V78
6068
6070
6155
-6159
+6160
8192
8255
8257
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/QMark/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/QMark/Y.pl
index 700c8183af6..cbd0224484a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/QMark/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/QMark/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/SB/AT.pl b/Master/tlpkg/tlperl/lib/unicore/lib/SB/AT.pl
index 35a0b173854..acab4a94a97 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/SB/AT.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/SB/AT.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/SB/CL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/SB/CL.pl
index 49af080d5e6..7adfb7b90d1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/SB/CL.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/SB/CL.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V88
+V90
34
35
39
@@ -67,6 +67,8 @@ V88
11818
11842
11843
+11861
+11869
12296
12306
12308
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/SB/EX.pl b/Master/tlpkg/tlperl/lib/unicore/lib/SB/EX.pl
index 6b2d5405044..d8c014ecd12 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/SB/EX.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/SB/EX.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V586
+V626
768
880
1155
@@ -59,7 +59,9 @@ V586
2094
2137
2140
-2259
+2200
+2208
+2250
2274
2275
2308
@@ -143,6 +145,8 @@ V586
3032
3072
3077
+3132
+3133
3134
3141
3142
@@ -167,6 +171,8 @@ V586
3287
3298
3300
+3315
+3316
3328
3332
3387
@@ -204,7 +210,7 @@ V586
3764
3773
3784
-3790
+3791
3864
3866
3893
@@ -246,7 +252,7 @@ V586
4957
4960
5906
-5909
+5910
5938
5941
5970
@@ -259,6 +265,8 @@ V586
6110
6155
6158
+6159
+6160
6277
6279
6313
@@ -276,7 +284,7 @@ V586
6783
6784
6832
-6849
+6863
6912
6917
6964
@@ -302,8 +310,6 @@ V586
7415
7418
7616
-7674
-7675
7680
8204
8206
@@ -411,16 +417,26 @@ V586
68904
69291
69293
+69373
+69376
69446
69457
+69506
+69510
69632
69635
69688
69703
+69744
+69745
+69747
+69749
69759
69763
69808
69819
+69826
+69827
69888
69891
69927
@@ -441,6 +457,8 @@ V586
70200
70206
70207
+70209
+70210
70367
70379
70400
@@ -535,6 +553,18 @@ V586
73112
73459
73463
+73472
+73474
+73475
+73476
+73524
+73531
+73534
+73539
+78912
+78913
+78919
+78934
92912
92917
92976
@@ -551,6 +581,10 @@ V586
94194
113821
113823
+118528
+118574
+118576
+118599
119141
119146
119149
@@ -585,10 +619,16 @@ V586
122917
122918
122923
+123023
+123024
123184
123191
+123566
+123567
123628
123632
+124140
+124144
125136
125143
125252
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/SB/FO.pl b/Master/tlpkg/tlperl/lib/unicore/lib/SB/FO.pl
index 5bae0936faa..8c0fca2bd24 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/SB/FO.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/SB/FO.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V40
+V42
173
174
1536
@@ -21,6 +21,8 @@ V40
1758
1807
1808
+2192
+2194
2274
2275
6158
@@ -44,7 +46,7 @@ V40
69837
69838
78896
-78905
+78912
113824
113828
119155
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/SB/LE.pl b/Master/tlpkg/tlperl/lib/unicore/lib/SB/LE.pl
index 462314b0c57..06bdbf13d1e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/SB/LE.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/SB/LE.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1038
+V1086
443
444
448
@@ -75,10 +75,12 @@ V1038
2137
2144
2155
+2160
+2184
+2185
+2191
2208
-2229
-2230
-2248
+2250
2308
2362
2365
@@ -207,6 +209,8 @@ V1038
3134
3160
3163
+3165
+3166
3168
3170
3200
@@ -223,7 +227,7 @@ V1038
3258
3261
3262
-3294
+3293
3295
3296
3298
@@ -311,7 +315,7 @@ V1038
4239
4304
4347
-4348
+4349
4681
4682
4686
@@ -356,10 +360,8 @@ V1038
5870
5881
5888
-5901
-5902
5906
-5920
+5919
5938
5952
5970
@@ -402,7 +404,7 @@ V1038
6917
6964
6981
-6988
+6989
7043
7073
7086
@@ -484,8 +486,6 @@ V1038
13312
19904
19968
-40957
-40960
42125
42192
42238
@@ -581,8 +581,6 @@ V1038
43815
43816
43823
-43881
-43882
43968
44003
44032
@@ -681,6 +679,8 @@ V1038
67414
67424
67432
+67457
+67459
67584
67590
67592
@@ -747,12 +747,18 @@ V1038
69416
69424
69446
+69488
+69506
69552
69573
69600
69623
69635
69688
+69745
+69747
+69749
+69750
69763
69808
69840
@@ -779,6 +785,8 @@ V1038
70162
70163
70188
+70207
+70209
70272
70279
70280
@@ -835,6 +843,8 @@ V1038
71353
71424
71451
+71488
+71495
71680
71724
71935
@@ -871,7 +881,7 @@ V1038
72330
72349
72350
-72384
+72368
72441
72704
72713
@@ -899,6 +909,12 @@ V1038
73113
73440
73459
+73474
+73475
+73476
+73489
+73490
+73524
73648
73649
73728
@@ -907,14 +923,20 @@ V1038
74863
74880
75076
+77712
+77809
77824
-78895
+78896
+78913
+78919
82944
83527
92160
92729
92736
92767
+92784
+92863
92880
92910
92928
@@ -941,10 +963,20 @@ V1038
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -957,14 +989,28 @@ V1038
113801
113808
113818
+122634
+122635
123136
123181
123191
123198
123214
123215
+123536
+123566
123584
123628
+124112
+124140
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125259
@@ -1036,9 +1082,9 @@ V1038
126635
126652
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1049,4 +1095,6 @@ V1038
195102
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/SB/LO.pl b/Master/tlpkg/tlperl/lib/unicore/lib/SB/LO.pl
index 6f768233636..026ff33c4b2 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/SB/LO.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/SB/LO.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1298
+V1338
97
123
170
@@ -559,6 +559,8 @@ V1298
1328
1376
1417
+4348
+4349
5112
5118
7296
@@ -884,7 +886,7 @@ V1298
9424
9450
11312
-11359
+11360
11361
11362
11365
@@ -1219,12 +1221,26 @@ V1298
42942
42943
42944
+42945
+42946
42947
42948
42952
42953
42954
42955
+42961
+42962
+42963
+42964
+42965
+42966
+42967
+42968
+42969
+42970
+42994
+42997
42998
42999
43000
@@ -1232,7 +1248,7 @@ V1298
43824
43867
43868
-43881
+43882
43888
43968
64256
@@ -1245,6 +1261,22 @@ V1298
66640
66776
66812
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
+67456
+67457
+67459
+67462
+67463
+67505
+67506
+67515
68800
68851
71872
@@ -1307,6 +1339,14 @@ V1298
120778
120779
120780
+122624
+122634
+122635
+122655
+122661
+122667
+122928
+122990
125218
125252
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/SB/NU.pl b/Master/tlpkg/tlperl/lib/unicore/lib/SB/NU.pl
index 35cbdb63233..1cf3fe4d2de 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/SB/NU.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/SB/NU.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V124
+V130
48
58
1632
@@ -121,8 +121,12 @@ V124
73050
73120
73130
+73552
+73562
92768
92778
+92864
+92874
93008
93018
120782
@@ -131,6 +135,8 @@ V124
123210
123632
123642
+124144
+124154
125264
125274
130032
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/SB/SC.pl b/Master/tlpkg/tlperl/lib/unicore/lib/SB/SC.pl
index db2d7e75be5..9f1f0ddd4dc 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/SB/SC.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/SB/SC.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/SB/ST.pl b/Master/tlpkg/tlperl/lib/unicore/lib/SB/ST.pl
index 9ce8fa2b665..15b2c4f6f95 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/SB/ST.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/SB/ST.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,14 +10,14 @@
return <<'END';
-V146
+V154
33
34
63
64
1417
1418
-1566
+1565
1568
1748
1749
@@ -55,6 +55,8 @@ V146
7004
7006
7008
+7037
+7039
7227
7229
7294
@@ -67,6 +69,8 @@ V146
11823
11836
11837
+11859
+11861
12290
12291
42239
@@ -103,6 +107,8 @@ V146
68184
69461
69466
+69510
+69514
69703
69705
69822
@@ -143,6 +149,8 @@ V146
72771
73463
73465
+73539
+73541
92782
92784
92917
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/SB/Sp.pl b/Master/tlpkg/tlperl/lib/unicore/lib/SB/Sp.pl
index a46464d6f33..419813ceec1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/SB/Sp.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/SB/Sp.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/SB/UP.pl b/Master/tlpkg/tlperl/lib/unicore/lib/SB/UP.pl
index c9913759478..55ea74043e0 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/SB/UP.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/SB/UP.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1288
+V1304
65
91
192
@@ -880,7 +880,7 @@ V1288
9398
9424
11264
-11311
+11312
11360
11361
11362
@@ -1209,12 +1209,20 @@ V1288
42941
42942
42943
+42944
+42945
42946
42947
42948
42952
42953
42954
+42960
+42961
+42966
+42967
+42968
+42969
42997
42998
65313
@@ -1223,6 +1231,14 @@ V1288
66600
66736
66772
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
68736
68787
71840
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/SB/XX.pl b/Master/tlpkg/tlperl/lib/unicore/lib/SB/XX.pl
index 4e233678bb1..26b947f98d1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/SB/XX.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/SB/XX.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1611
+V1681
0
9
14
@@ -109,8 +109,6 @@ V1611
1552
1563
1564
-1565
-1566
1642
1643
1645
@@ -144,11 +142,13 @@ V1611
2140
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2184
+2185
+2191
+2192
+2194
+2200
2416
2417
2436
@@ -312,7 +312,7 @@ V1611
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -322,6 +322,8 @@ V1611
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -346,14 +348,14 @@ V1611
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -419,7 +421,7 @@ V1611
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -511,10 +513,8 @@ V1611
5870
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5943
5952
5972
@@ -537,8 +537,6 @@ V1611
6152
6154
6155
-6159
-6160
6170
6176
6265
@@ -575,15 +573,17 @@ V1611
6823
6828
6832
-6849
+6863
6912
-6988
+6989
6992
7004
7006
7008
7019
7028
+7037
+7039
7040
7156
7168
@@ -603,8 +603,6 @@ V1611
7380
7419
7424
-7674
-7675
7958
7960
7966
@@ -721,10 +719,6 @@ V1611
10748
10750
11264
-11311
-11312
-11359
-11360
11493
11499
11508
@@ -768,6 +762,8 @@ V1611
11837
11842
11843
+11859
+11869
12288
12291
12293
@@ -803,8 +799,6 @@ V1611
13312
19904
19968
-40957
-40960
42125
42192
42238
@@ -827,10 +821,14 @@ V1611
42786
42889
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43048
43052
43053
@@ -1036,12 +1034,34 @@ V1611
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -1118,7 +1138,7 @@ V1611
69293
69296
69298
-69376
+69373
69405
69415
69416
@@ -1126,6 +1146,8 @@ V1611
69457
69461
69466
+69488
+69514
69552
69573
69600
@@ -1133,11 +1155,11 @@ V1611
69632
69705
69734
-69744
+69750
69759
69819
69821
-69826
+69827
69837
69838
69840
@@ -1169,7 +1191,7 @@ V1611
70203
70205
70206
-70207
+70210
70272
70279
70280
@@ -1252,6 +1274,8 @@ V1611
71482
71484
71487
+71488
+71495
71680
71739
71840
@@ -1292,7 +1316,7 @@ V1611
72346
72347
72350
-72384
+72368
72441
72704
72713
@@ -1336,6 +1360,14 @@ V1611
73130
73440
73465
+73472
+73489
+73490
+73531
+73534
+73541
+73552
+73562
73648
73649
73728
@@ -1344,10 +1376,10 @@ V1611
74863
74880
75076
+77712
+77809
77824
-78895
-78896
-78905
+78934
82944
83527
92160
@@ -1357,7 +1389,9 @@ V1611
92768
92778
92782
-92784
+92863
+92864
+92874
92880
92910
92912
@@ -1394,10 +1428,20 @@ V1611
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1412,6 +1456,10 @@ V1611
113818
113821
113828
+118528
+118574
+118576
+118599
119141
119146
119149
@@ -1498,6 +1546,10 @@ V1611
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1508,6 +1560,10 @@ V1611
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1516,8 +1572,20 @@ V1611
123210
123214
123215
+123536
+123567
123584
123642
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125136
@@ -1603,9 +1671,9 @@ V1611
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1616,6 +1684,8 @@ V1611
195102
196608
201547
+201552
+205744
917505
917506
917536
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/SD/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/SD/Y.pl
index 589d695841a..81375acde96 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/SD/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/SD/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V62
+V68
105
107
303
@@ -73,4 +73,10 @@ V62
120416
120466
120468
+122650
+122651
+122956
+122958
+122984
+122985
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/STerm/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/STerm/Y.pl
index d49d31e84f9..18fb1837797 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/STerm/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/STerm/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V152
+V160
33
34
46
@@ -19,7 +19,7 @@ V152
64
1417
1418
-1566
+1565
1568
1748
1749
@@ -57,6 +57,8 @@ V152
7004
7006
7008
+7037
+7039
7227
7229
7294
@@ -69,6 +71,8 @@ V152
11823
11836
11837
+11859
+11861
12290
12291
42239
@@ -109,6 +113,8 @@ V152
68184
69461
69466
+69510
+69514
69703
69705
69822
@@ -149,6 +155,8 @@ V152
72771
73463
73465
+73539
+73541
92782
92784
92917
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Arab.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Arab.pl
index f83fb3bfae6..523b8e6fd8d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Arab.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Arab.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V114
+V116
1536
1541
1542
@@ -18,8 +18,6 @@ V114
1549
1563
1564
-1565
-1566
1567
1568
1600
@@ -33,30 +31,34 @@ V114
1792
1872
1920
-2208
-2229
-2230
-2248
-2259
+2160
+2191
+2192
+2194
+2200
2274
2275
2304
64336
-64450
+64451
64467
64830
-64848
+64832
64912
64914
64968
+64975
+64976
65008
-65022
+65024
65136
65141
65142
65277
69216
69247
+69373
+69376
126464
126468
126469
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Beng.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Beng.pl
index 82ffc6a5ab0..d423e4ba2d6 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Beng.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Beng.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Cprt.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Cprt.pl
index baf9108ca28..053e8cdc88d 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Cprt.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Cprt.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Cyrl.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Cyrl.pl
index 5f6d30917d9..c9fbf849f4a 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Cyrl.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Cyrl.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V16
+V20
1024
1157
1159
@@ -27,4 +27,8 @@ V16
42656
65070
65072
+122928
+122990
+123023
+123024
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Deva.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Deva.pl
index 2af2e8201cd..79f7941adf2 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Deva.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Deva.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V8
+V10
2304
2385
2389
@@ -19,4 +19,6 @@ V8
2432
43232
43264
+72448
+72458
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Dupl.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Dupl.pl
index 543632a6c4d..549d81aae81 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Dupl.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Dupl.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Geor.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Geor.pl
index 0ab90003276..2af3388f8e3 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Geor.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Geor.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Glag.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Glag.pl
index d0aedac7eac..6a8441b4355 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Glag.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Glag.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,11 +10,9 @@
return <<'END';
-V14
+V12
11264
-11311
-11312
-11359
+11360
122880
122887
122888
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gong.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gong.pl
index 8a6dce273de..8d35984f59a 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gong.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gong.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gonm.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gonm.pl
index 48c43154721..e335eb046d6 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gonm.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gonm.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gran.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gran.pl
index 158008a87b0..e83cfa9140f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gran.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gran.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Grek.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Grek.pl
index cfeb16e2774..ff120bffd51 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Grek.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Grek.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gujr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gujr.pl
index 877a92d184a..25dae69d402 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gujr.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Gujr.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Guru.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Guru.pl
index a7a38e5c114..03a585e4705 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Guru.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Guru.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Han.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Han.pl
index dc974062242..a206d002589 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Han.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Han.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V38
+V42
11904
11930
11931
@@ -28,17 +28,19 @@ V38
13312
19904
19968
-40957
+40960
63744
64110
64112
64218
+94178
+94180
94192
94194
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -49,4 +51,6 @@ V38
195102
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Hang.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Hang.pl
index f6e3bbf71d4..85ae402c432 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Hang.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Hang.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Hira.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Hira.pl
index 27baa4ed16f..65b5397440f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Hira.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Hira.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,13 +10,15 @@
return <<'END';
-V10
+V12
12353
12439
12445
12448
110593
-110879
+110880
+110898
+110899
110928
110931
127488
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Kana.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Kana.pl
index 122a83d7664..92ccca861f3 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Kana.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Kana.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V18
+V28
12449
12539
12541
@@ -25,8 +25,18 @@ V18
65392
65393
65438
+110576
+110580
+110581
+110588
+110589
+110591
110592
110593
+110880
+110883
+110933
+110934
110948
110952
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Knda.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Knda.pl
index ea8128b50be..e83f523f9fe 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Knda.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Knda.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -29,12 +29,12 @@ V26
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Latn.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Latn.pl
index e5cb1f725b9..8586470bcc7 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Latn.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Latn.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V64
+V78
65
91
97
@@ -58,10 +58,14 @@ V64
42786
42888
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43008
43824
43867
@@ -75,4 +79,14 @@ V64
65339
65345
65371
+67456
+67462
+67463
+67505
+67506
+67515
+122624
+122655
+122661
+122667
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Limb.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Limb.pl
index a86d41fac02..acf37326312 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Limb.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Limb.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Linb.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Linb.pl
index 1216633da2b..c8de163a6ee 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Linb.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Linb.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mlym.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mlym.pl
index 4028a84c177..f99babc1f34 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mlym.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mlym.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mong.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mong.pl
index b6a31f43703..92e58cd04e6 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mong.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mong.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,14 +10,12 @@
return <<'END';
-V14
+V12
6144
6146
6148
6149
6150
-6159
-6160
6170
6176
6265
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mult.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mult.pl
index 4e829da4e57..e95045ef02f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mult.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Mult.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Orya.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Orya.pl
index 72435aad634..1aa15ca04a8 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Orya.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Orya.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Sinh.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Sinh.pl
index 0d91976c451..a5043e4b8aa 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Sinh.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Sinh.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Syrc.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Syrc.pl
index 93f273d744c..d7d0912547b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Syrc.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Syrc.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Taml.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Taml.pl
index 472fe413daa..14ccba780fe 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Taml.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Taml.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Telu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Telu.pl
index 68101797897..3e35c0ab39d 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Telu.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Telu.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V24
+V26
3072
3085
3086
@@ -19,7 +19,7 @@ V24
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -29,6 +29,8 @@ V24
3159
3160
3163
+3165
+3166
3168
3172
3174
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Zinh.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Zinh.pl
index 05d7bdab17a..977435b141e 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Zinh.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Zinh.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V56
+V58
768
880
1157
@@ -22,7 +22,7 @@ V56
2385
2389
6832
-6849
+6863
7376
7379
7380
@@ -36,8 +36,6 @@ V56
7416
7418
7616
-7674
-7675
7680
8204
8206
@@ -57,6 +55,10 @@ V56
66273
70459
70460
+118528
+118574
+118576
+118599
119143
119146
119163
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Zyyy.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Zyyy.pl
index fb122647027..be3a612bbf7 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Zyyy.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Sc/Zyyy.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -92,7 +92,7 @@ V346
8320
8335
8352
-8384
+8385
8448
8486
8487
@@ -118,7 +118,7 @@ V346
11159
11264
11776
-11859
+11870
12272
12284
12288
@@ -205,10 +205,10 @@ V346
66045
66273
66300
-94178
-94180
113824
113828
+118608
+118724
118784
119030
119040
@@ -222,7 +222,9 @@ V346
119180
119210
119214
-119273
+119275
+119488
+119508
119520
119540
119552
@@ -303,16 +305,18 @@ V346
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -326,27 +330,23 @@ V346
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Adlm.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Adlm.pl
index 90e95465847..62dc54e040f 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Adlm.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Adlm.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,9 @@
return <<'END';
-V8
+V10
+1567
+1568
1600
1601
125184
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Arab.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Arab.pl
index cf24bc25b11..d21af7d1fe1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Arab.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Arab.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -14,31 +14,29 @@ V104
1536
1541
1542
-1565
-1566
1757
1758
1792
1872
1920
-2208
-2229
-2230
-2248
-2259
+2160
+2191
+2192
+2194
+2200
2274
2275
2304
64336
-64450
+64451
64467
-64830
-64848
64912
64914
64968
+64975
+64976
65008
-65022
+65024
65136
65141
65142
@@ -47,6 +45,8 @@ V104
66300
69216
69247
+69373
+69376
126464
126468
126469
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Armn.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Armn.pl
index 23bb84bd35d..91e7e14f292 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Armn.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Armn.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Beng.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Beng.pl
index a5e75333c1f..1c08cb83f56 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Beng.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Beng.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Bhks.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Bhks.pl
index 657f2f2f167..6039a77cc1b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Bhks.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Bhks.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Bopo.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Bopo.pl
index 8fb60c74461..fc3a0ef129a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Bopo.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Bopo.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cakm.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cakm.pl
index 4417b76ae9a..df3ceb7c193 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cakm.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cakm.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cham.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cham.pl
index 8c544e7e83d..8f1d6b67b41 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cham.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cham.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Copt.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Copt.pl
index c0753c6de9a..716212ed87b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Copt.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Copt.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cprt.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cprt.pl
index 9941e74289d..537cb394aa3 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cprt.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cprt.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cyrl.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cyrl.pl
index d969c831716..4c3230ad5f6 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cyrl.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Cyrl.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V18
+V22
1024
1328
7296
@@ -29,4 +29,8 @@ V18
42656
65070
65072
+122928
+122990
+123023
+123024
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Deva.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Deva.pl
index ebf0f221d47..34a709cd1f4 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Deva.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Deva.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V14
+V16
2304
2387
2389
@@ -25,4 +25,6 @@ V14
43066
43232
43264
+72448
+72458
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Diak.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Diak.pl
index 29156f3a219..5f83a1334bb 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Diak.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Diak.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Dupl.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Dupl.pl
index cc0d53d0e0a..258e8c43824 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Dupl.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Dupl.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Ethi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Ethi.pl
index 94bd4d16126..5c412534ee9 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Ethi.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Ethi.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V64
+V72
4608
4681
4682
@@ -75,4 +75,12 @@ V64
43815
43816
43823
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Geor.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Geor.pl
index 18764ad69e1..b03abc802ee 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Geor.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Geor.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Glag.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Glag.pl
index 39f39e33bac..f7a166dd4a9 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Glag.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Glag.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,15 +10,13 @@
return <<'END';
-V22
+V20
1156
1157
1159
1160
11264
-11311
-11312
-11359
+11360
11843
11844
42607
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gong.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gong.pl
index 385679934b9..4e918fc8c82 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gong.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gong.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gonm.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gonm.pl
index 0ced9eb6335..70ef95a7035 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gonm.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gonm.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gran.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gran.pl
index 0beee9c9d28..127d55f73a5 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gran.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gran.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Grek.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Grek.pl
index 4d5285f8874..5b0883e339f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Grek.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Grek.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gujr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gujr.pl
index ced330c0a29..00461f88f5a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gujr.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Gujr.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Guru.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Guru.pl
index 4adb8cc4335..c4dfe5b6871 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Guru.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Guru.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Han.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Han.pl
index a0200df9c2d..1499c835143 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Han.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Han.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V72
+V76
11904
11930
11931
@@ -52,7 +52,7 @@ V72
13312
19904
19968
-40957
+40960
42752
42760
63744
@@ -63,6 +63,8 @@ V72
65095
65377
65382
+94178
+94180
94192
94194
119648
@@ -70,9 +72,9 @@ V72
127568
127570
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -83,4 +85,6 @@ V72
195102
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hang.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hang.pl
index 56f59308b9c..9389e1a641c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hang.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hang.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hebr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hebr.pl
index b388886051d..dd26642607a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hebr.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hebr.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hira.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hira.pl
index 1abcaa8bb1e..de5c0dc38fb 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hira.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hira.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V32
+V34
12289
12292
12296
@@ -38,7 +38,9 @@ V32
65438
65440
110593
-110879
+110880
+110898
+110899
110928
110931
127488
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hmng.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hmng.pl
index 134bd8741b5..a1096bbc0b1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hmng.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hmng.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hmnp.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hmnp.pl
index 13e0d53224f..ededb3ff62e 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hmnp.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Hmnp.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Kana.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Kana.pl
index f8d6fcf76fc..6b18961d7c9 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Kana.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Kana.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V30
+V40
12289
12292
12296
@@ -37,8 +37,18 @@ V30
65095
65377
65440
+110576
+110580
+110581
+110588
+110589
+110591
110592
110593
+110880
+110883
+110933
+110934
110948
110952
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Khar.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Khar.pl
index 67a48fe17c6..052d1771fe6 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Khar.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Khar.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Khmr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Khmr.pl
index bbe5d54da02..d27b7518b0f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Khmr.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Khmr.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Khoj.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Khoj.pl
index fe903c114c6..cd1676544d4 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Khoj.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Khoj.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -18,5 +18,5 @@ V8
70144
70162
70163
-70207
+70210
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Knda.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Knda.pl
index 63aeb19be43..1d2d7a46f68 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Knda.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Knda.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -33,14 +33,14 @@ V42
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
7376
7377
7378
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Kthi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Kthi.pl
index fcaeb515142..2db06dd3cdc 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Kthi.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Kthi.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -16,7 +16,7 @@ V8
43056
43066
69760
-69826
+69827
69837
69838
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lana.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lana.pl
index eb1064e0bf6..e9558592de1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lana.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lana.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lao.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lao.pl
index ad51d8c9998..864afc7b6a7 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lao.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lao.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -28,7 +28,7 @@ V22
3782
3783
3784
-3790
+3791
3792
3802
3804
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Latn.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Latn.pl
index b3625753152..7d39e2fc5dd 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Latn.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Latn.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V80
+V94
65
91
97
@@ -72,10 +72,14 @@ V80
42786
42888
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43008
43310
43311
@@ -91,4 +95,14 @@ V80
65339
65345
65371
+67456
+67462
+67463
+67505
+67506
+67515
+122624
+122655
+122661
+122667
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Limb.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Limb.pl
index 310e0e2ce40..35857f86dd4 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Limb.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Limb.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lina.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lina.pl
index 0772303f56f..6d7f761df80 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lina.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Lina.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Linb.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Linb.pl
index 2a56ccb8a8c..fe45b2288b2 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Linb.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Linb.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mlym.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mlym.pl
index 712bd7008e5..0f59127335c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mlym.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mlym.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mong.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mong.pl
index 8ab88a8b038..20ddeab9448 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mong.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mong.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,10 +10,8 @@
return <<'END';
-V12
+V10
6144
-6159
-6160
6170
6176
6265
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mult.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mult.pl
index 8523308b18a..bc8b3192e28 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mult.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mult.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mymr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mymr.pl
index 6623d4e7652..a7d11d057da 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mymr.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Mymr.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Nand.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Nand.pl
index 5a15b51f84b..8630bf2b58f 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Nand.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Nand.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Nko.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Nko.pl
new file mode 100755
index 00000000000..158b7398395
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Nko.pl
@@ -0,0 +1,26 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
+
+# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
+# This file is for internal use by core Perl only. The format and even the
+# name or existence of this file are subject to change without notice. Don't
+# use it directly. Use Unicode::UCD to access the Unicode character data
+# base.
+
+
+return <<'END';
+V12
+1548
+1549
+1563
+1564
+1567
+1568
+1984
+2043
+2045
+2048
+64830
+64832
+END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Orya.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Orya.pl
index ae98ae8cb27..7b8a4e0a925 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Orya.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Orya.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Phlp.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Phlp.pl
index c914e6a3b09..921dd7f1093 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Phlp.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Phlp.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Rohg.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Rohg.pl
index 30ec4cf41f0..09f4c7b4883 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Rohg.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Rohg.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Shrd.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Shrd.pl
index 0c9c8ef5656..b5b5d38fa07 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Shrd.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Shrd.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Sind.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Sind.pl
index 8333debe807..98eb0c93d39 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Sind.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Sind.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Sinh.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Sinh.pl
index 555ef86447f..709653ce6f2 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Sinh.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Sinh.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Syrc.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Syrc.pl
index 0732e8a21fb..d4f3f921be2 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Syrc.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Syrc.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V22
+V24
1548
1549
1563
@@ -33,4 +33,6 @@ V22
2155
7672
7673
+7674
+7675
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tagb.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tagb.pl
index d4cbb5c7fca..0a6494ff849 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tagb.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tagb.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Takr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Takr.pl
index eff60cf89ec..5428ac972e3 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Takr.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Takr.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -16,7 +16,7 @@ V8
43056
43066
71296
-71353
+71354
71360
71370
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Talu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Talu.pl
index 0639f977bd4..8175e3f96b7 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Talu.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Talu.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Taml.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Taml.pl
index f2c8f7ccb29..64c8557a1e5 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Taml.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Taml.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tang.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tang.pl
index 03c2e940027..7081152db6b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tang.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tang.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Telu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Telu.pl
index 66bdaef9740..7a8894dc163 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Telu.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Telu.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V32
+V34
2385
2387
2404
@@ -23,7 +23,7 @@ V32
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -33,6 +33,8 @@ V32
3159
3160
3163
+3165
+3166
3168
3172
3174
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Thaa.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Thaa.pl
index d51742a8169..373183a4cc5 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Thaa.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Thaa.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tibt.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tibt.pl
index 2586b488b9c..a0454302fcc 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tibt.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tibt.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tirh.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tirh.pl
index 6f98f5f735e..9a250e130d5 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tirh.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Tirh.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Vith.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Vith.pl
new file mode 100755
index 00000000000..52dd5af559c
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Vith.pl
@@ -0,0 +1,30 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
+
+# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
+# This file is for internal use by core Perl only. The format and even the
+# name or existence of this file are subject to change without notice. Don't
+# use it directly. Use Unicode::UCD to access the Unicode character data
+# base.
+
+
+return <<'END';
+V16
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
+END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Xsux.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Xsux.pl
index 7f50c38cf50..315193f72c1 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Xsux.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Xsux.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Yezi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Yezi.pl
index e124109b303..420f6640bcf 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Yezi.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Yezi.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Yi.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Yi.pl
index 9fd51582d3d..86613157c9a 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Yi.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Yi.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zinh.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zinh.pl
index 1fd67acae96..ad07d5a395f 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zinh.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zinh.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V36
+V40
768
834
835
@@ -20,7 +20,7 @@ V36
2387
2389
6832
-6849
+6863
7618
7672
7673
@@ -37,6 +37,10 @@ V36
65070
66045
66046
+118528
+118574
+118576
+118599
119143
119146
119163
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zyyy.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zyyy.pl
index 40065f1c809..018a04d8704 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zyyy.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zyyy.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V296
+V294
0
65
91
@@ -64,7 +64,7 @@ V296
8320
8335
8352
-8384
+8385
8448
8486
8487
@@ -92,7 +92,7 @@ V296
11776
11843
11844
-11859
+11870
12272
12284
12288
@@ -129,8 +129,6 @@ V296
43868
43882
43884
-64830
-64832
65040
65050
65072
@@ -159,8 +157,8 @@ V296
65949
66000
66045
-94178
-94180
+118608
+118724
118784
119030
119040
@@ -174,7 +172,9 @@ V296
119180
119210
119214
-119273
+119275
+119488
+119508
119520
119540
119552
@@ -253,16 +253,18 @@ V296
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -276,27 +278,23 @@ V296
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zzzz.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zzzz.pl
index 886b5bb6a3a..5d6785bf52b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zzzz.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Scx/Zzzz.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1349
+V1409
888
890
896
@@ -35,8 +35,6 @@ V1349
1519
1525
1536
-1565
-1566
1806
1807
1867
@@ -54,11 +52,11 @@ V1349
2143
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2191
+2192
+2194
+2200
2436
2437
2445
@@ -214,7 +212,7 @@ V1349
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -224,6 +222,8 @@ V1349
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -246,14 +246,14 @@ V1349
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -313,7 +313,7 @@ V1349
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -381,10 +381,8 @@ V1349
5792
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5943
5952
5972
@@ -401,8 +399,6 @@ V1349
6128
6138
6144
-6159
-6160
6170
6176
6265
@@ -441,11 +437,11 @@ V1349
6816
6830
6832
-6849
+6863
6912
-6988
+6989
6992
-7037
+7039
7040
7156
7164
@@ -461,8 +457,6 @@ V1349
7376
7419
7424
-7674
-7675
7958
7960
7966
@@ -503,7 +497,7 @@ V1349
8336
8349
8352
-8384
+8385
8400
8433
8448
@@ -517,10 +511,6 @@ V1349
11126
11158
11159
-11311
-11312
-11359
-11360
11508
11513
11558
@@ -551,7 +541,7 @@ V1349
11736
11743
11744
-11859
+11870
11904
11930
11931
@@ -575,8 +565,6 @@ V1349
12784
12831
12832
-40957
-40960
42125
42128
42183
@@ -585,10 +573,14 @@ V1349
42560
42744
42752
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43053
43056
43066
@@ -659,16 +651,14 @@ V1349
64323
64325
64326
-64450
+64451
64467
-64832
-64848
64912
64914
64968
+64975
+64976
65008
-65022
-65024
65050
65056
65107
@@ -755,13 +745,33 @@ V1349
66864
66916
66927
-66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -844,10 +854,12 @@ V1349
69294
69296
69298
-69376
+69373
69416
69424
69466
+69488
+69514
69552
69580
69600
@@ -855,9 +867,9 @@ V1349
69632
69710
69714
-69744
+69750
69759
-69826
+69827
69837
69838
69840
@@ -877,7 +889,7 @@ V1349
70144
70162
70163
-70207
+70210
70272
70279
70280
@@ -941,7 +953,7 @@ V1349
71264
71277
71296
-71353
+71354
71360
71370
71424
@@ -949,7 +961,7 @@ V1349
71453
71468
71472
-71488
+71495
71680
71740
71840
@@ -980,8 +992,10 @@ V1349
72264
72272
72355
-72384
+72368
72441
+72448
+72458
72704
72713
72714
@@ -1024,6 +1038,12 @@ V1349
73130
73440
73465
+73472
+73489
+73490
+73531
+73534
+73562
73648
73649
73664
@@ -1036,10 +1056,10 @@ V1349
74869
74880
75076
+77712
+77811
77824
-78895
-78896
-78905
+78934
82944
83527
92160
@@ -1049,7 +1069,9 @@ V1349
92768
92778
92782
-92784
+92863
+92864
+92874
92880
92910
92912
@@ -1082,10 +1104,20 @@ V1349
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1100,14 +1132,22 @@ V1349
113818
113820
113828
+118528
+118574
+118576
+118599
+118608
+118724
118784
119030
119040
119079
119081
-119273
+119275
119296
119366
+119488
+119508
119520
119540
119552
@@ -1160,6 +1200,10 @@ V1349
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1170,6 +1214,10 @@ V1349
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1178,10 +1226,22 @@ V1349
123210
123214
123216
+123536
+123567
123584
123642
123647
123648
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125127
@@ -1290,16 +1350,18 @@ V1349
127590
127744
128728
-128736
+128732
128749
128752
128765
128768
-128884
-128896
-128985
+128887
+128891
+128986
128992
129004
+129008
+129009
129024
129036
129040
@@ -1313,27 +1375,23 @@ V1349
129200
129202
129280
-129401
-129402
-129484
-129485
129620
129632
129646
129648
-129653
-129656
-129659
+129661
129664
-129671
+129673
129680
-129705
-129712
-129719
-129728
-129731
-129744
-129751
+129726
+129727
+129734
+129742
+129756
+129760
+129769
+129776
+129785
129792
129939
129940
@@ -1341,9 +1399,9 @@ V1349
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1354,6 +1412,8 @@ V1349
195102
196608
201547
+201552
+205744
917505
917506
917536
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Term/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Term/Y.pl
index 6c333c18f33..8d6e48084d2 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Term/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Term/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V208
+V216
33
34
44
@@ -33,7 +33,7 @@ V208
1549
1563
1564
-1566
+1565
1568
1748
1749
@@ -81,6 +81,8 @@ V208
7004
7005
7008
+7037
+7039
7227
7232
7294
@@ -99,6 +101,8 @@ V208
11853
11854
11856
+11859
+11861
12289
12291
42238
@@ -159,6 +163,8 @@ V208
68509
69461
69466
+69510
+69514
69703
69710
69822
@@ -203,6 +209,8 @@ V208
72818
73463
73465
+73539
+73541
74864
74869
92782
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/UIdeo/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/UIdeo/Y.pl
index a7e3d53b8c9..94f5107991b 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/UIdeo/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/UIdeo/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,11 +10,11 @@
return <<'END';
-V30
+V32
13312
19904
19968
-40957
+40960
64014
64016
64017
@@ -30,9 +30,9 @@ V30
64039
64042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -41,4 +41,6 @@ V30
191457
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Upper/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Upper/Y.pl
index 513828f9827..99747897ac2 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Upper/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Upper/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1286
+V1302
65
91
192
@@ -878,7 +878,7 @@ V1286
9398
9424
11264
-11311
+11312
11360
11361
11362
@@ -1207,12 +1207,20 @@ V1286
42941
42942
42943
+42944
+42945
42946
42947
42948
42952
42953
42954
+42960
+42961
+42966
+42967
+42968
+42969
42997
42998
65313
@@ -1221,6 +1229,14 @@ V1286
66600
66736
66772
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
68736
68787
71840
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/VS/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/VS/Y.pl
new file mode 100755
index 00000000000..8ce265cbd69
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/VS/Y.pl
@@ -0,0 +1,22 @@
+# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
+
+# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
+# This file is for internal use by core Perl only. The format and even the
+# name or existence of this file are subject to change without notice. Don't
+# use it directly. Use Unicode::UCD to access the Unicode character data
+# base.
+
+
+return <<'END';
+V8
+6155
+6158
+6159
+6160
+65024
+65040
+917760
+918000
+END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Vo/R.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Vo/R.pl
index b04eb884087..e6d603bfbb7 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Vo/R.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Vo/R.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V177
+V179
0
167
168
@@ -161,15 +161,17 @@ V177
71040
71168
72192
-72368
+72384
77824
-78912
+78944
82944
83584
94176
-101776
-110592
+101760
+110576
111360
+118528
+118736
118784
119296
119520
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Vo/Tr.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Vo/Tr.pl
index b561bc77339..4d07bc5ef6c 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Vo/Tr.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Vo/Tr.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Vo/Tu.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Vo/Tu.pl
index b675c6c938a..c92f8c3b3a0 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Vo/Tu.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Vo/Tu.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/Vo/U.pl b/Master/tlpkg/tlperl/lib/unicore/lib/Vo/U.pl
index ab620d34f99..5362c788169 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/Vo/U.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/Vo/U.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V254
+V256
167
168
169
@@ -236,15 +236,17 @@ V254
71040
71168
72192
-72368
+72384
77824
-78912
+78944
82944
83584
94176
-101776
-110592
+101760
+110576
111360
+118528
+118736
118784
119296
119520
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/WB/EX.pl b/Master/tlpkg/tlperl/lib/unicore/lib/WB/EX.pl
index 41598ace299..d7deb943e44 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/WB/EX.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/WB/EX.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/WB/Extend.pl b/Master/tlpkg/tlperl/lib/unicore/lib/WB/Extend.pl
index be891300546..6d27d5a1272 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/WB/Extend.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/WB/Extend.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V588
+V628
768
880
1155
@@ -59,7 +59,9 @@ V588
2094
2137
2140
-2259
+2200
+2208
+2250
2274
2275
2308
@@ -143,6 +145,8 @@ V588
3032
3072
3077
+3132
+3133
3134
3141
3142
@@ -167,6 +171,8 @@ V588
3287
3298
3300
+3315
+3316
3328
3332
3387
@@ -204,7 +210,7 @@ V588
3764
3773
3784
-3790
+3791
3864
3866
3893
@@ -246,7 +252,7 @@ V588
4957
4960
5906
-5909
+5910
5938
5941
5970
@@ -259,6 +265,8 @@ V588
6110
6155
6158
+6159
+6160
6277
6279
6313
@@ -276,7 +284,7 @@ V588
6783
6784
6832
-6849
+6863
6912
6917
6964
@@ -302,8 +310,6 @@ V588
7415
7418
7616
-7674
-7675
7680
8204
8205
@@ -411,16 +417,26 @@ V588
68904
69291
69293
+69373
+69376
69446
69457
+69506
+69510
69632
69635
69688
69703
+69744
+69745
+69747
+69749
69759
69763
69808
69819
+69826
+69827
69888
69891
69927
@@ -441,6 +457,8 @@ V588
70200
70206
70207
+70209
+70210
70367
70379
70400
@@ -535,6 +553,18 @@ V588
73112
73459
73463
+73472
+73474
+73475
+73476
+73524
+73531
+73534
+73539
+78912
+78913
+78919
+78934
92912
92917
92976
@@ -551,6 +581,10 @@ V588
94194
113821
113823
+118528
+118574
+118576
+118599
119141
119146
119149
@@ -585,10 +619,16 @@ V588
122917
122918
122923
+123023
+123024
123184
123191
+123566
+123567
123628
123632
+124140
+124144
125136
125143
125252
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/WB/FO.pl b/Master/tlpkg/tlperl/lib/unicore/lib/WB/FO.pl
index 9120d2a7242..e85ec30e417 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/WB/FO.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/WB/FO.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V38
+V40
173
174
1536
@@ -21,6 +21,8 @@ V38
1758
1807
1808
+2192
+2194
2274
2275
6158
@@ -42,7 +44,7 @@ V38
69837
69838
78896
-78905
+78912
113824
113828
119155
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/WB/HL.pl b/Master/tlpkg/tlperl/lib/unicore/lib/WB/HL.pl
index e89cf0006e8..0eb89ff47ff 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/WB/HL.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/WB/HL.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/WB/KA.pl b/Master/tlpkg/tlperl/lib/unicore/lib/WB/KA.pl
index df97e09410c..9bdb6a67316 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/WB/KA.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/WB/KA.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V20
+V30
12337
12342
12443
@@ -27,8 +27,18 @@ V20
13144
65382
65438
+110576
+110580
+110581
+110588
+110589
+110591
110592
110593
+110880
+110883
+110933
+110934
110948
110952
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/WB/LE.pl b/Master/tlpkg/tlperl/lib/unicore/lib/WB/LE.pl
index af77f592a75..db7122c9691 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/WB/LE.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/WB/LE.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1094
+V1156
65
91
97
@@ -105,10 +105,12 @@ V1094
2137
2144
2155
+2160
+2184
+2185
+2191
2208
-2229
-2230
-2248
+2250
2308
2362
2365
@@ -237,6 +239,8 @@ V1094
3134
3160
3163
+3165
+3166
3168
3170
3200
@@ -253,7 +257,7 @@ V1094
3258
3261
3262
-3294
+3293
3295
3296
3298
@@ -350,10 +354,8 @@ V1094
5870
5881
5888
-5901
-5902
5906
-5920
+5919
5938
5952
5970
@@ -378,7 +380,7 @@ V1094
6917
6964
6981
-6988
+6989
7043
7073
7086
@@ -482,10 +484,6 @@ V1094
9398
9450
11264
-11311
-11312
-11359
-11360
11493
11499
11503
@@ -548,10 +546,14 @@ V1094
42656
42736
42760
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43010
43011
43014
@@ -685,12 +687,34 @@ V1094
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -761,12 +785,18 @@ V1094
69416
69424
69446
+69488
+69506
69552
69573
69600
69623
69635
69688
+69745
+69747
+69749
+69750
69763
69808
69840
@@ -793,6 +823,8 @@ V1094
70162
70163
70188
+70207
+70209
70272
70279
70280
@@ -885,7 +917,7 @@ V1094
72330
72349
72350
-72384
+72368
72441
72704
72713
@@ -913,6 +945,12 @@ V1094
73113
73440
73459
+73474
+73475
+73476
+73489
+73490
+73524
73648
73649
73728
@@ -921,14 +959,20 @@ V1094
74863
74880
75076
+77712
+77809
77824
-78895
+78896
+78913
+78919
82944
83527
92160
92729
92736
92767
+92784
+92863
92880
92910
92928
@@ -1019,14 +1063,32 @@ V1094
120771
120772
120780
+122624
+122655
+122661
+122667
+122928
+122990
123136
123181
123191
123198
123214
123215
+123536
+123566
123584
123628
+124112
+124140
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125184
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/WB/MB.pl b/Master/tlpkg/tlperl/lib/unicore/lib/WB/MB.pl
index 57994741397..2fa010ea2ab 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/WB/MB.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/WB/MB.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/WB/ML.pl b/Master/tlpkg/tlperl/lib/unicore/lib/WB/ML.pl
index 6c1fd474f06..38388b69e71 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/WB/ML.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/WB/ML.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/WB/MN.pl b/Master/tlpkg/tlperl/lib/unicore/lib/WB/MN.pl
index f85128d635c..e3c125e32b9 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/WB/MN.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/WB/MN.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/WB/NU.pl b/Master/tlpkg/tlperl/lib/unicore/lib/WB/NU.pl
index 43307c33454..30f2dfa6086 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/WB/NU.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/WB/NU.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V124
+V130
48
58
1632
@@ -121,8 +121,12 @@ V124
73050
73120
73130
+73552
+73562
92768
92778
+92864
+92874
93008
93018
120782
@@ -131,6 +135,8 @@ V124
123210
123632
123642
+124144
+124154
125264
125274
130032
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/WB/WSegSpac.pl b/Master/tlpkg/tlperl/lib/unicore/lib/WB/WSegSpac.pl
index cff15c0c751..1ef34890b9c 100755
--- a/Master/tlpkg/tlperl/lib/unicore/lib/WB/WSegSpac.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/WB/WSegSpac.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/WB/XX.pl b/Master/tlpkg/tlperl/lib/unicore/lib/WB/XX.pl
index fcf3b70387b..18a035e06b8 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/WB/XX.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/WB/XX.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1487
+V1557
0
10
14
@@ -128,11 +128,13 @@ V1487
2140
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2184
+2185
+2191
+2192
+2194
+2200
2404
2406
2416
@@ -298,7 +300,7 @@ V1487
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -308,6 +310,8 @@ V1487
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -332,14 +336,14 @@ V1487
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -395,7 +399,7 @@ V1487
3764
3773
3784
-3790
+3791
3792
3802
3840
@@ -497,10 +501,8 @@ V1487
5870
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5941
5952
5972
@@ -517,8 +519,6 @@ V1487
6112
6122
6155
-6159
-6160
6170
6176
6265
@@ -547,9 +547,9 @@ V1487
6800
6810
6832
-6849
+6863
6912
-6988
+6989
6992
7002
7019
@@ -573,8 +573,6 @@ V1487
7380
7419
7424
-7674
-7675
7958
7960
7966
@@ -673,10 +671,6 @@ V1487
9398
9450
11264
-11311
-11312
-11359
-11360
11493
11499
11508
@@ -755,10 +749,14 @@ V1487
42623
42738
42760
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43048
43052
43053
@@ -954,12 +952,34 @@ V1487
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -1034,12 +1054,14 @@ V1487
69293
69296
69298
-69376
+69373
69405
69415
69416
69424
69457
+69488
+69510
69552
69573
69600
@@ -1047,11 +1069,13 @@ V1487
69632
69703
69734
-69744
+69750
69759
69819
69821
69822
+69826
+69827
69837
69838
69840
@@ -1081,7 +1105,7 @@ V1487
70163
70200
70206
-70207
+70210
70272
70279
70280
@@ -1194,7 +1218,7 @@ V1487
72346
72349
72350
-72384
+72368
72441
72704
72713
@@ -1238,6 +1262,14 @@ V1487
73130
73440
73463
+73472
+73489
+73490
+73531
+73534
+73539
+73552
+73562
73648
73649
73728
@@ -1246,10 +1278,10 @@ V1487
74863
74880
75076
+77712
+77809
77824
-78895
-78896
-78905
+78934
82944
83527
92160
@@ -1258,6 +1290,10 @@ V1487
92767
92768
92778
+92784
+92863
+92864
+92874
92880
92910
92912
@@ -1286,8 +1322,18 @@ V1487
94181
94192
94194
+110576
+110580
+110581
+110588
+110589
+110591
110592
110593
+110880
+110883
+110933
+110934
110948
110952
113664
@@ -1302,6 +1348,10 @@ V1487
113823
113824
113828
+118528
+118574
+118576
+118599
119141
119146
119149
@@ -1386,6 +1436,10 @@ V1487
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1396,6 +1450,10 @@ V1487
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1404,8 +1462,20 @@ V1487
123210
123214
123215
+123536
+123567
123584
123642
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125136
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/XIDC/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/XIDC/Y.pl
index 604fff8ae7f..81dc96d8d44 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/XIDC/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/XIDC/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1474
+V1550
48
58
65
@@ -113,11 +113,11 @@ V1474
2140
2144
2155
-2208
-2229
-2230
-2248
-2259
+2160
+2184
+2185
+2191
+2200
2274
2275
2404
@@ -285,7 +285,7 @@ V1474
3113
3114
3130
-3133
+3132
3141
3142
3145
@@ -295,6 +295,8 @@ V1474
3159
3160
3163
+3165
+3166
3168
3172
3174
@@ -319,14 +321,14 @@ V1474
3278
3285
3287
-3294
+3293
3295
3296
3300
3302
3312
3313
-3315
+3316
3328
3341
3342
@@ -392,7 +394,7 @@ V1474
3782
3783
3784
-3790
+3791
3792
3802
3804
@@ -486,10 +488,8 @@ V1474
5870
5881
5888
-5901
-5902
-5909
-5920
+5910
+5919
5941
5952
5972
@@ -509,7 +509,7 @@ V1474
6122
6155
6158
-6160
+6159
6170
6176
6265
@@ -548,9 +548,9 @@ V1474
6832
6846
6847
-6849
+6863
6912
-6988
+6989
6992
7002
7019
@@ -574,8 +574,6 @@ V1474
7380
7419
7424
-7674
-7675
7958
7960
7966
@@ -656,10 +654,6 @@ V1474
8544
8585
11264
-11311
-11312
-11359
-11360
11493
11499
11508
@@ -722,8 +716,6 @@ V1474
13312
19904
19968
-40957
-40960
42125
42192
42238
@@ -742,10 +734,14 @@ V1474
42786
42889
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43048
43052
43053
@@ -935,12 +931,34 @@ V1474
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -1015,12 +1033,14 @@ V1474
69293
69296
69298
-69376
+69373
69405
69415
69416
69424
69457
+69488
+69510
69552
69573
69600
@@ -1028,9 +1048,11 @@ V1474
69632
69703
69734
-69744
+69750
69759
69819
+69826
+69827
69840
69865
69872
@@ -1058,7 +1080,7 @@ V1474
70163
70200
70206
-70207
+70210
70272
70279
70280
@@ -1137,6 +1159,8 @@ V1474
71468
71472
71482
+71488
+71495
71680
71739
71840
@@ -1173,7 +1197,7 @@ V1474
72346
72349
72350
-72384
+72368
72441
72704
72713
@@ -1217,6 +1241,14 @@ V1474
73130
73440
73463
+73472
+73489
+73490
+73531
+73534
+73539
+73552
+73562
73648
73649
73728
@@ -1225,8 +1257,12 @@ V1474
74863
74880
75076
+77712
+77809
77824
-78895
+78896
+78912
+78934
82944
83527
92160
@@ -1235,6 +1271,10 @@ V1474
92767
92768
92778
+92784
+92863
+92864
+92874
92880
92910
92912
@@ -1269,10 +1309,20 @@ V1474
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1287,6 +1337,10 @@ V1474
113818
113821
113823
+118528
+118574
+118576
+118599
119141
119146
119149
@@ -1373,6 +1427,10 @@ V1474
121504
121505
121520
+122624
+122655
+122661
+122667
122880
122887
122888
@@ -1383,6 +1441,10 @@ V1474
122917
122918
122923
+122928
+122990
+123023
+123024
123136
123181
123184
@@ -1391,8 +1453,20 @@ V1474
123210
123214
123215
+123536
+123567
123584
123642
+124112
+124154
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125136
@@ -1470,9 +1544,9 @@ V1474
130032
130042
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1483,6 +1557,8 @@ V1474
195102
196608
201547
+201552
+205744
917760
918000
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/lib/XIDS/Y.pl b/Master/tlpkg/tlperl/lib/unicore/lib/XIDS/Y.pl
index 64b0fccb916..9753456dbd9 100644
--- a/Master/tlpkg/tlperl/lib/unicore/lib/XIDS/Y.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/lib/XIDS/Y.pl
@@ -1,6 +1,6 @@
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
-# This file is machine-generated by ..\lib\unicore\mktables from the Unicode
-# database, Version 13.0.0. Any changes made here will be lost!
+# This file is machine-generated by mktables from the Unicode
+# database, Version 15.0.0. Any changes made here will be lost!
# !!!!!!! INTERNAL PERL USE ONLY !!!!!!!
# This file is for internal use by core Perl only. The format and even the
@@ -10,7 +10,7 @@
return <<'END';
-V1258
+V1332
65
91
97
@@ -109,10 +109,12 @@ V1258
2137
2144
2155
+2160
+2184
+2185
+2191
2208
-2229
-2230
-2248
+2250
2308
2362
2365
@@ -241,6 +243,8 @@ V1258
3134
3160
3163
+3165
+3166
3168
3170
3200
@@ -257,7 +261,7 @@ V1258
3258
3261
3262
-3294
+3293
3295
3296
3298
@@ -400,10 +404,8 @@ V1258
5870
5881
5888
-5901
-5902
5906
-5920
+5919
5938
5952
5970
@@ -444,7 +446,7 @@ V1258
6917
6964
6981
-6988
+6989
7043
7073
7086
@@ -544,10 +546,6 @@ V1258
8544
8585
11264
-11311
-11312
-11359
-11360
11493
11499
11503
@@ -608,8 +606,6 @@ V1258
13312
19904
19968
-40957
-40960
42125
42192
42238
@@ -630,10 +626,14 @@ V1258
42786
42889
42891
-42944
-42946
42955
-42997
+42960
+42962
+42963
+42964
+42965
+42970
+42994
43010
43011
43014
@@ -825,12 +825,34 @@ V1258
66856
66864
66916
+66928
+66939
+66940
+66955
+66956
+66963
+66964
+66966
+66967
+66978
+66979
+66994
+66995
+67002
+67003
+67005
67072
67383
67392
67414
67424
67432
+67456
+67462
+67463
+67505
+67506
+67515
67584
67590
67592
@@ -901,12 +923,18 @@ V1258
69416
69424
69446
+69488
+69506
69552
69573
69600
69623
69635
69688
+69745
+69747
+69749
+69750
69763
69808
69840
@@ -933,6 +961,8 @@ V1258
70162
70163
70188
+70207
+70209
70272
70279
70280
@@ -989,6 +1019,8 @@ V1258
71353
71424
71451
+71488
+71495
71680
71724
71840
@@ -1027,7 +1059,7 @@ V1258
72330
72349
72350
-72384
+72368
72441
72704
72713
@@ -1055,6 +1087,12 @@ V1258
73113
73440
73459
+73474
+73475
+73476
+73489
+73490
+73524
73648
73649
73728
@@ -1063,14 +1101,20 @@ V1258
74863
74880
75076
+77712
+77809
77824
-78895
+78896
+78913
+78919
82944
83527
92160
92729
92736
92767
+92784
+92863
92880
92910
92928
@@ -1099,10 +1143,20 @@ V1258
101590
101632
101641
+110576
+110580
+110581
+110588
+110589
+110591
110592
-110879
+110883
+110898
+110899
110928
110931
+110933
+110934
110948
110952
110960
@@ -1175,14 +1229,32 @@ V1258
120771
120772
120780
+122624
+122655
+122661
+122667
+122928
+122990
123136
123181
123191
123198
123214
123215
+123536
+123566
123584
123628
+124112
+124140
+124896
+124903
+124904
+124908
+124909
+124911
+124912
+124927
124928
125125
125184
@@ -1256,9 +1328,9 @@ V1258
126635
126652
131072
-173790
+173792
173824
-177973
+177978
177984
178206
178208
@@ -1269,4 +1341,6 @@ V1258
195102
196608
201547
+201552
+205744
END
diff --git a/Master/tlpkg/tlperl/lib/unicore/uni_keywords.pl b/Master/tlpkg/tlperl/lib/unicore/uni_keywords.pl
index 55f83eb1561..4a9a72d043a 100755
--- a/Master/tlpkg/tlperl/lib/unicore/uni_keywords.pl
+++ b/Master/tlpkg/tlperl/lib/unicore/uni_keywords.pl
@@ -1,22 +1,22 @@
-# -*- buffer-read-only: t -*-
+# -*- mode: Perl; buffer-read-only: t -*-
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
# This file is built by regen/mk_invlists.pl from Unicode::UCD.
# Any changes made here will be lost!
%Unicode::UCD::uni_prop_ptrs_indices = (
- '_perl_any_folds' => 1187,
- '_perl_charname_begin' => 1188,
- '_perl_charname_continue' => 1189,
- '_perl_folds_to_multi_char' => 1190,
- '_perl_idcont' => 1191,
- '_perl_idstart' => 1192,
- '_perl_is_in_multi_char_fold' => 1193,
- '_perl_nchar' => 1194,
- '_perl_patws' => 1195,
- '_perl_problematic_locale_foldeds_start' => 1196,
- '_perl_problematic_locale_folds' => 1197,
- '_perl_quotemeta' => 1198,
- '_perl_surrogate' => 1199,
+ '_perl_any_folds' => 1222,
+ '_perl_charname_begin' => 1223,
+ '_perl_charname_continue' => 1224,
+ '_perl_folds_to_multi_char' => 1225,
+ '_perl_idcont' => 1226,
+ '_perl_idstart' => 1227,
+ '_perl_is_in_multi_char_fold' => 1228,
+ '_perl_nchar' => 1229,
+ '_perl_patws' => 1230,
+ '_perl_problematic_locale_foldeds_start' => 1231,
+ '_perl_problematic_locale_folds' => 1232,
+ '_perl_quotemeta' => 1233,
+ '_perl_surrogate' => 1234,
'adlm' => 1,
'aegeannumbers' => 2,
'age=10' => 3,
@@ -24,1280 +24,1316 @@
'age=12' => 5,
'age=12.1' => 6,
'age=13' => 7,
- 'age=2' => 8,
- 'age=2.1' => 9,
- 'age=3' => 10,
- 'age=3.1' => 11,
- 'age=3.2' => 12,
- 'age=4' => 13,
- 'age=4.1' => 14,
- 'age=5' => 15,
- 'age=5.1' => 16,
- 'age=5.2' => 17,
- 'age=6' => 18,
- 'age=6.1' => 19,
- 'age=6.2' => 20,
- 'age=6.3' => 21,
- 'age=7' => 22,
- 'age=8' => 23,
- 'age=9' => 24,
- 'age=na' => 25,
- 'aghb' => 26,
- 'ahex' => 970,
- 'ahom' => 27,
- 'alchemical' => 28,
- 'all' => 29,
- 'alnum' => 1161,
- 'alpha' => 1162,
- 'alphabetic' => 1162,
- 'alphabeticpf' => 30,
- 'ancientgreekmusic' => 31,
- 'ancientgreeknumbers' => 32,
- 'ancientsymbols' => 33,
- 'any' => 34,
- 'arab' => 35,
- 'arabicexta' => 36,
- 'arabicmath' => 37,
- 'arabicpfa' => 38,
- 'arabicpfb' => 39,
- 'arabicsup' => 40,
- 'armi' => 41,
- 'armn' => 42,
- 'arrows' => 43,
- 'ascii' => 44,
- 'asciihexdigit' => 970,
- 'assigned' => 45,
- 'avst' => 46,
- 'bali' => 47,
- 'bamu' => 48,
- 'bamumsup' => 49,
- 'basiclatin' => 44,
- 'bass' => 50,
- 'batk' => 51,
- 'bc=al' => 52,
- 'bc=an' => 53,
- 'bc=b' => 54,
- 'bc=bn' => 55,
- 'bc=cs' => 56,
- 'bc=en' => 57,
- 'bc=es' => 58,
- 'bc=et' => 59,
- 'bc=fsi' => 60,
- 'bc=l' => 61,
- 'bc=lre' => 62,
- 'bc=lri' => 63,
- 'bc=lro' => 64,
- 'bc=nsm' => 65,
- 'bc=on' => 66,
- 'bc=pdf' => 67,
- 'bc=pdi' => 68,
- 'bc=r' => 69,
- 'bc=rle' => 70,
- 'bc=rli' => 71,
- 'bc=rlo' => 72,
- 'bc=s' => 73,
- 'bc=ws' => 74,
- 'beng' => 75,
- 'bhks' => 76,
- 'bidic' => 77,
- 'bidim' => 78,
- 'blank' => 1163,
- 'blockelements' => 79,
- 'bopo' => 80,
- 'bopomofoext' => 81,
- 'boxdrawing' => 82,
- 'bpt=c' => 83,
- 'bpt=n' => 84,
- 'bpt=o' => 85,
- 'brah' => 86,
- 'brai' => 87,
- 'bugi' => 88,
- 'buhd' => 89,
- 'byzantinemusic' => 90,
- 'c' => 91,
- 'cakm' => 92,
- 'cans' => 93,
- 'cari' => 94,
- 'cased' => 95,
- 'casedletter' => 96,
- 'cc' => 1164,
- 'ccc=0' => 97,
- 'ccc=1' => 98,
- 'ccc=10' => 99,
- 'ccc=103' => 100,
- 'ccc=107' => 101,
- 'ccc=11' => 102,
- 'ccc=118' => 103,
- 'ccc=12' => 104,
- 'ccc=122' => 105,
- 'ccc=129' => 106,
- 'ccc=13' => 107,
- 'ccc=130' => 108,
- 'ccc=132' => 109,
- 'ccc=14' => 110,
- 'ccc=15' => 111,
- 'ccc=16' => 112,
- 'ccc=17' => 113,
- 'ccc=18' => 114,
- 'ccc=19' => 115,
- 'ccc=20' => 116,
- 'ccc=202' => 117,
- 'ccc=21' => 118,
- 'ccc=214' => 119,
- 'ccc=216' => 120,
- 'ccc=22' => 121,
- 'ccc=23' => 122,
- 'ccc=24' => 123,
- 'ccc=25' => 124,
- 'ccc=26' => 125,
- 'ccc=27' => 126,
- 'ccc=28' => 127,
- 'ccc=29' => 128,
- 'ccc=30' => 129,
- 'ccc=31' => 130,
- 'ccc=32' => 131,
- 'ccc=33' => 132,
- 'ccc=34' => 133,
- 'ccc=35' => 134,
- 'ccc=36' => 135,
- 'ccc=6' => 136,
- 'ccc=7' => 137,
- 'ccc=8' => 138,
- 'ccc=84' => 139,
- 'ccc=9' => 140,
- 'ccc=91' => 141,
- 'ccc=a' => 142,
- 'ccc=al' => 143,
- 'ccc=ar' => 144,
- 'ccc=b' => 145,
- 'ccc=bl' => 146,
- 'ccc=br' => 147,
- 'ccc=da' => 148,
- 'ccc=db' => 149,
- 'ccc=is' => 150,
- 'ccc=l' => 151,
- 'ccc=r' => 152,
- 'ce' => 153,
- 'cf' => 154,
- 'cham' => 155,
- 'cher' => 156,
- 'cherokeesup' => 157,
- 'chesssymbols' => 158,
- 'chrs' => 159,
- 'ci' => 160,
- 'cjk' => 161,
- 'cjkcompat' => 162,
- 'cjkcompatforms' => 163,
- 'cjkcompatideographs' => 164,
- 'cjkcompatideographssup' => 165,
- 'cjkexta' => 166,
- 'cjkextb' => 167,
- 'cjkextc' => 168,
- 'cjkextd' => 169,
- 'cjkexte' => 170,
- 'cjkextf' => 171,
- 'cjkextg' => 172,
- 'cjkradicalssup' => 173,
- 'cjkstrokes' => 174,
- 'cjksymbols' => 175,
- 'cn' => 176,
- 'cntrl' => 1164,
- 'co' => 177,
- 'compatjamo' => 178,
- 'compex' => 179,
- 'control' => 1164,
- 'controlpictures' => 180,
- 'copt' => 181,
- 'copticepactnumbers' => 182,
- 'countingrod' => 183,
- 'cprt' => 184,
- 'cuneiformnumbers' => 185,
- 'currencysymbols' => 186,
- 'cwcf' => 187,
- 'cwcm' => 188,
- 'cwkcf' => 189,
- 'cwl' => 190,
- 'cwt' => 191,
- 'cwu' => 192,
- 'cypriotsyllabary' => 193,
- 'cyrillicexta' => 194,
- 'cyrillicextb' => 195,
- 'cyrillicextc' => 196,
- 'cyrillicsup' => 197,
- 'cyrl' => 198,
- 'dash' => 199,
- 'decimalnumber' => 1165,
- 'dep' => 200,
- 'deva' => 201,
- 'devanagariext' => 202,
- 'di' => 203,
- 'dia' => 204,
- 'diacriticals' => 205,
- 'diacriticalsext' => 206,
- 'diacriticalsforsymbols' => 207,
- 'diacriticalssup' => 208,
- 'diak' => 209,
- 'digit' => 1165,
- 'dingbats' => 210,
- 'dogr' => 211,
- 'domino' => 212,
- 'dsrt' => 213,
- 'dt=can' => 214,
- 'dt=com' => 215,
- 'dt=enc' => 216,
- 'dt=fin' => 217,
- 'dt=font' => 218,
- 'dt=fra' => 219,
- 'dt=init' => 220,
- 'dt=iso' => 221,
- 'dt=med' => 222,
- 'dt=nar' => 223,
- 'dt=nb' => 224,
- 'dt=noncanon' => 225,
- 'dt=none' => 226,
- 'dt=sml' => 227,
- 'dt=sqr' => 228,
- 'dt=sub' => 229,
- 'dt=sup' => 230,
- 'dt=vert' => 231,
- 'dupl' => 232,
- 'ea=a' => 234,
- 'ea=f' => 235,
- 'ea=h' => 236,
- 'ea=n' => 237,
- 'ea=na' => 238,
- 'ea=w' => 239,
- 'earlydynasticcuneiform' => 233,
- 'ebase' => 240,
- 'ecomp' => 241,
- 'egyp' => 242,
- 'egyptianhieroglyphformatcontrols' => 243,
- 'elba' => 244,
- 'elym' => 245,
- 'emod' => 246,
- 'emoji' => 247,
- 'emoticons' => 248,
- 'enclosedalphanum' => 249,
- 'enclosedalphanumsup' => 250,
- 'enclosedcjk' => 251,
- 'enclosedideographicsup' => 252,
- 'epres' => 253,
- 'ethi' => 254,
- 'ethiopicext' => 255,
- 'ethiopicexta' => 256,
- 'ethiopicsup' => 257,
- 'ext' => 258,
- 'extpict' => 259,
- 'gcb=cn' => 260,
- 'gcb=ex' => 261,
- 'gcb=l' => 262,
- 'gcb=pp' => 263,
- 'gcb=sm' => 264,
- 'gcb=t' => 265,
- 'gcb=v' => 266,
- 'gcb=xx' => 267,
- 'geometricshapes' => 268,
- 'geometricshapesext' => 269,
- 'geor' => 270,
- 'georgianext' => 271,
- 'georgiansup' => 272,
- 'glag' => 273,
- 'glagoliticsup' => 274,
- 'gong' => 275,
- 'gonm' => 276,
- 'goth' => 277,
- 'gran' => 278,
- 'graph' => 1166,
- 'grbase' => 279,
- 'greekext' => 280,
- 'grek' => 281,
- 'grext' => 282,
- 'gujr' => 283,
- 'guru' => 284,
- 'halfandfullforms' => 285,
- 'halfmarks' => 286,
- 'han' => 287,
- 'hang' => 288,
- 'hano' => 289,
- 'hatr' => 290,
- 'hebr' => 291,
- 'hex' => 1173,
- 'hexdigit' => 1173,
- 'highpusurrogates' => 292,
- 'highsurrogates' => 293,
- 'hira' => 294,
- 'hluw' => 295,
- 'hmng' => 296,
- 'hmnp' => 297,
- 'horizspace' => 1163,
- 'hst=na' => 298,
- 'hung' => 299,
- 'hyphen_perl_aux' => 300,
- 'idc' => 301,
- 'identifierstatus=allowed' => 302,
- 'identifierstatus=restricted' => 303,
- 'identifiertype=defaultignorable' => 304,
- 'identifiertype=exclusion' => 305,
- 'identifiertype=inclusion' => 306,
- 'identifiertype=limiteduse' => 307,
- 'identifiertype=notcharacter' => 308,
- 'identifiertype=notnfkc' => 309,
- 'identifiertype=notxid' => 310,
- 'identifiertype=obsolete' => 311,
- 'identifiertype=recommended' => 312,
- 'identifiertype=technical' => 313,
- 'identifiertype=uncommonuse' => 314,
- 'ideo' => 315,
- 'ideographicsymbols' => 316,
- 'ids' => 317,
- 'idsb' => 318,
- 'idst' => 319,
- 'in=1.1' => 517,
- 'in=10' => 512,
- 'in=11' => 513,
- 'in=12' => 514,
- 'in=12.1' => 515,
- 'in=13' => 516,
- 'in=2' => 518,
- 'in=2.1' => 519,
- 'in=3' => 520,
- 'in=3.1' => 521,
- 'in=3.2' => 522,
- 'in=4' => 523,
- 'in=4.1' => 524,
- 'in=5' => 525,
- 'in=5.1' => 526,
- 'in=5.2' => 527,
- 'in=6' => 528,
- 'in=6.1' => 529,
- 'in=6.2' => 530,
- 'in=6.3' => 531,
- 'in=7' => 532,
- 'in=8' => 533,
- 'in=9' => 534,
- 'inadlam' => 320,
- 'inahom' => 321,
- 'inanatolianhieroglyphs' => 322,
- 'inarabic' => 323,
- 'inarmenian' => 324,
- 'inavestan' => 325,
- 'inbalinese' => 326,
- 'inbamum' => 327,
- 'inbassavah' => 328,
- 'inbatak' => 329,
- 'inbengali' => 330,
- 'inbhaiksuki' => 331,
- 'inbopomofo' => 332,
- 'inbrahmi' => 333,
- 'inbuginese' => 334,
- 'inbuhid' => 335,
- 'incarian' => 336,
- 'incaucasianalbanian' => 337,
- 'inchakma' => 338,
- 'incham' => 339,
- 'incherokee' => 340,
- 'inchorasmian' => 341,
- 'incoptic' => 342,
- 'incuneiform' => 343,
- 'incyrillic' => 344,
- 'indevanagari' => 345,
- 'indicnumberforms' => 346,
- 'indicsiyaqnumbers' => 347,
- 'indivesakuru' => 348,
- 'indogra' => 349,
- 'induployan' => 350,
- 'inegyptianhieroglyphs' => 351,
- 'inelbasan' => 352,
- 'inelymaic' => 353,
- 'inethiopic' => 354,
- 'ingeorgian' => 355,
- 'inglagolitic' => 356,
- 'ingothic' => 357,
- 'ingrantha' => 358,
- 'ingreek' => 359,
- 'ingujarati' => 360,
- 'ingunjalagondi' => 361,
- 'ingurmukhi' => 362,
- 'inhangul' => 363,
- 'inhanifirohingya' => 364,
- 'inhanunoo' => 365,
- 'inhatran' => 366,
- 'inhebrew' => 367,
- 'inhiragana' => 368,
- 'inidc' => 369,
- 'inimperialaramaic' => 370,
- 'ininscriptionalpahlavi' => 371,
- 'ininscriptionalparthian' => 372,
- 'injavanese' => 373,
- 'inkaithi' => 374,
- 'inkannada' => 375,
- 'inkatakana' => 376,
- 'inkharoshthi' => 377,
- 'inkhitansmallscript' => 378,
- 'inkhmer' => 379,
- 'inkhojki' => 380,
- 'inkhudawadi' => 381,
- 'inlao' => 382,
- 'inlepcha' => 383,
- 'inlimbu' => 384,
- 'inlineara' => 385,
- 'inlisu' => 386,
- 'inlycian' => 387,
- 'inlydian' => 388,
- 'inmahajani' => 389,
- 'inmakasar' => 390,
- 'inmalayalam' => 391,
- 'inmandaic' => 392,
- 'inmanichaean' => 393,
- 'inmarchen' => 394,
- 'inmasaramgondi' => 395,
- 'inmedefaidrin' => 396,
- 'inmeeteimayek' => 397,
- 'inmendekikakui' => 398,
- 'inmeroiticcursive' => 399,
- 'inmiao' => 400,
- 'inmodi' => 401,
- 'inmongolian' => 402,
- 'inmro' => 403,
- 'inmultani' => 404,
- 'inmyanmar' => 405,
- 'innabataean' => 406,
- 'innandinagari' => 407,
- 'innewa' => 408,
- 'innewtailue' => 409,
- 'innko' => 410,
- 'innushu' => 411,
- 'innyiakengpuachuehmong' => 412,
- 'inogham' => 413,
- 'inoldhungarian' => 414,
- 'inolditalic' => 415,
- 'inoldpermic' => 416,
- 'inoldpersian' => 417,
- 'inoldsogdian' => 418,
- 'inoldturkic' => 419,
- 'inoriya' => 420,
- 'inosage' => 421,
- 'inosmanya' => 422,
- 'inpahawhhmong' => 423,
- 'inpaucinhau' => 424,
- 'inpc=bottom' => 425,
- 'inpc=bottomandleft' => 426,
- 'inpc=bottomandright' => 427,
- 'inpc=left' => 428,
- 'inpc=leftandright' => 429,
- 'inpc=na' => 430,
- 'inpc=overstruck' => 431,
- 'inpc=right' => 432,
- 'inpc=top' => 433,
- 'inpc=topandbottom' => 434,
- 'inpc=topandbottomandleft' => 435,
- 'inpc=topandbottomandright' => 436,
- 'inpc=topandleft' => 437,
- 'inpc=topandleftandright' => 438,
- 'inpc=topandright' => 439,
- 'inphagspa' => 440,
- 'inphoenician' => 441,
- 'inpsalterpahlavi' => 442,
- 'inpunctuation' => 443,
- 'inrejang' => 444,
- 'inrunic' => 445,
- 'insamaritan' => 446,
- 'insaurashtra' => 447,
- 'insc=avagraha' => 448,
- 'insc=bindu' => 449,
- 'insc=brahmijoiningnumber' => 450,
- 'insc=cantillationmark' => 451,
- 'insc=consonant' => 452,
- 'insc=consonantdead' => 453,
- 'insc=consonantfinal' => 454,
- 'insc=consonantheadletter' => 455,
- 'insc=consonantinitialpostfixed' => 456,
- 'insc=consonantkiller' => 457,
- 'insc=consonantmedial' => 458,
- 'insc=consonantplaceholder' => 459,
- 'insc=consonantprecedingrepha' => 460,
- 'insc=consonantprefixed' => 461,
- 'insc=consonantsubjoined' => 462,
- 'insc=consonantsucceedingrepha' => 463,
- 'insc=consonantwithstacker' => 464,
- 'insc=geminationmark' => 465,
- 'insc=invisiblestacker' => 466,
- 'insc=modifyingletter' => 467,
- 'insc=nonjoiner' => 468,
- 'insc=nukta' => 469,
- 'insc=number' => 470,
- 'insc=numberjoiner' => 471,
- 'insc=other' => 472,
- 'insc=purekiller' => 473,
- 'insc=registershifter' => 474,
- 'insc=syllablemodifier' => 475,
- 'insc=toneletter' => 476,
- 'insc=tonemark' => 477,
- 'insc=virama' => 478,
- 'insc=visarga' => 479,
- 'insc=vowel' => 480,
- 'insc=voweldependent' => 481,
- 'insc=vowelindependent' => 482,
- 'insiddham' => 483,
- 'insinhala' => 484,
- 'insogdian' => 485,
- 'insorasompeng' => 486,
- 'insoyombo' => 487,
- 'insundanese' => 488,
- 'insylotinagri' => 489,
- 'insyriac' => 490,
- 'intagalog' => 491,
- 'intagbanwa' => 492,
- 'intaile' => 493,
- 'intaitham' => 494,
- 'intaiviet' => 495,
- 'intakri' => 496,
- 'intamil' => 497,
- 'intangut' => 498,
- 'intelugu' => 499,
- 'inthaana' => 500,
- 'inthai' => 501,
- 'intibetan' => 502,
- 'intifinagh' => 503,
- 'intirhuta' => 504,
- 'inugaritic' => 505,
- 'invai' => 506,
- 'invs' => 507,
- 'inwancho' => 508,
- 'inwarangciti' => 509,
- 'inyezidi' => 510,
- 'inzanabazarsquare' => 511,
- 'ipaext' => 535,
- 'ital' => 536,
- 'jamo' => 537,
- 'jamoexta' => 538,
- 'jamoextb' => 539,
- 'java' => 540,
- 'jg=africanfeh' => 541,
- 'jg=africannoon' => 542,
- 'jg=africanqaf' => 543,
- 'jg=ain' => 544,
- 'jg=alaph' => 545,
- 'jg=alef' => 546,
- 'jg=beh' => 547,
- 'jg=beth' => 548,
- 'jg=burushaskiyehbarree' => 549,
- 'jg=dal' => 550,
- 'jg=dalathrish' => 551,
- 'jg=e' => 552,
- 'jg=farsiyeh' => 553,
- 'jg=fe' => 554,
- 'jg=feh' => 555,
- 'jg=finalsemkath' => 556,
- 'jg=gaf' => 557,
- 'jg=gamal' => 558,
- 'jg=hah' => 559,
- 'jg=hamzaonhehgoal' => 560,
- 'jg=hanifirohingyakinnaya' => 561,
- 'jg=hanifirohingyapa' => 562,
- 'jg=he' => 563,
- 'jg=heh' => 564,
- 'jg=hehgoal' => 565,
- 'jg=heth' => 566,
- 'jg=kaf' => 567,
- 'jg=kaph' => 568,
- 'jg=khaph' => 569,
- 'jg=knottedheh' => 570,
- 'jg=lam' => 571,
- 'jg=lamadh' => 572,
- 'jg=malayalambha' => 573,
- 'jg=malayalamja' => 574,
- 'jg=malayalamlla' => 575,
- 'jg=malayalamllla' => 576,
- 'jg=malayalamnga' => 577,
- 'jg=malayalamnna' => 578,
- 'jg=malayalamnnna' => 579,
- 'jg=malayalamnya' => 580,
- 'jg=malayalamra' => 581,
- 'jg=malayalamssa' => 582,
- 'jg=malayalamtta' => 583,
- 'jg=manichaeanaleph' => 584,
- 'jg=manichaeanayin' => 585,
- 'jg=manichaeanbeth' => 586,
- 'jg=manichaeandaleth' => 587,
- 'jg=manichaeandhamedh' => 588,
- 'jg=manichaeanfive' => 589,
- 'jg=manichaeangimel' => 590,
- 'jg=manichaeanheth' => 591,
- 'jg=manichaeanhundred' => 592,
- 'jg=manichaeankaph' => 593,
- 'jg=manichaeanlamedh' => 594,
- 'jg=manichaeanmem' => 595,
- 'jg=manichaeannun' => 596,
- 'jg=manichaeanone' => 597,
- 'jg=manichaeanpe' => 598,
- 'jg=manichaeanqoph' => 599,
- 'jg=manichaeanresh' => 600,
- 'jg=manichaeansadhe' => 601,
- 'jg=manichaeansamekh' => 602,
- 'jg=manichaeantaw' => 603,
- 'jg=manichaeanten' => 604,
- 'jg=manichaeanteth' => 605,
- 'jg=manichaeanthamedh' => 606,
- 'jg=manichaeantwenty' => 607,
- 'jg=manichaeanwaw' => 608,
- 'jg=manichaeanyodh' => 609,
- 'jg=manichaeanzayin' => 610,
- 'jg=meem' => 611,
- 'jg=mim' => 612,
- 'jg=nojoininggroup' => 613,
- 'jg=noon' => 614,
- 'jg=nun' => 615,
- 'jg=nya' => 616,
- 'jg=pe' => 617,
- 'jg=qaf' => 618,
- 'jg=qaph' => 619,
- 'jg=reh' => 620,
- 'jg=reversedpe' => 621,
- 'jg=rohingyayeh' => 622,
- 'jg=sad' => 623,
- 'jg=sadhe' => 624,
- 'jg=seen' => 625,
- 'jg=semkath' => 626,
- 'jg=shin' => 627,
- 'jg=straightwaw' => 628,
- 'jg=swashkaf' => 629,
- 'jg=syriacwaw' => 630,
- 'jg=tah' => 631,
- 'jg=taw' => 632,
- 'jg=tehmarbuta' => 633,
- 'jg=teth' => 634,
- 'jg=waw' => 635,
- 'jg=yeh' => 636,
- 'jg=yehbarree' => 637,
- 'jg=yehwithtail' => 638,
- 'jg=yudh' => 639,
- 'jg=yudhhe' => 640,
- 'jg=zain' => 641,
- 'jg=zhain' => 642,
- 'joinc' => 643,
- 'jt=c' => 644,
- 'jt=d' => 645,
- 'jt=l' => 646,
- 'jt=r' => 647,
- 'jt=t' => 648,
- 'jt=u' => 649,
- 'kali' => 650,
- 'kana' => 651,
- 'kanaexta' => 652,
- 'kanasup' => 653,
- 'kanbun' => 654,
- 'kangxi' => 655,
- 'katakanaext' => 656,
- 'khar' => 657,
- 'khmersymbols' => 658,
- 'khmr' => 659,
- 'khoj' => 660,
- 'kits' => 661,
- 'knda' => 662,
- 'kthi' => 663,
- 'l' => 664,
- 'l_' => 96,
- 'l_amp_' => 96,
- 'lana' => 665,
- 'lao' => 666,
- 'latin1' => 667,
- 'latinexta' => 668,
- 'latinextadditional' => 669,
- 'latinextb' => 670,
- 'latinextc' => 671,
- 'latinextd' => 672,
- 'latinexte' => 673,
- 'latn' => 674,
- 'lb=ai' => 675,
- 'lb=al' => 676,
- 'lb=b2' => 677,
- 'lb=ba' => 678,
- 'lb=bb' => 679,
- 'lb=bk' => 680,
- 'lb=cb' => 681,
- 'lb=cj' => 682,
- 'lb=cl' => 683,
- 'lb=cm' => 684,
- 'lb=cp' => 685,
- 'lb=cr' => 686,
- 'lb=ex' => 687,
- 'lb=gl' => 688,
- 'lb=h2' => 689,
- 'lb=h3' => 690,
- 'lb=hl' => 691,
- 'lb=hy' => 692,
- 'lb=id' => 693,
- 'lb=in' => 694,
- 'lb=is' => 695,
- 'lb=lf' => 696,
- 'lb=nl' => 697,
- 'lb=ns' => 698,
- 'lb=nu' => 699,
- 'lb=op' => 700,
- 'lb=po' => 701,
- 'lb=pr' => 702,
- 'lb=qu' => 703,
- 'lb=sa' => 704,
- 'lb=sg_perl_aux' => 705,
- 'lb=sp' => 706,
- 'lb=sy' => 707,
- 'lb=wj' => 708,
- 'lb=xx' => 709,
- 'lb=zw' => 710,
- 'lb=zwj' => 711,
- 'lc' => 96,
- 'lepc' => 712,
- 'letterlikesymbols' => 713,
- 'limb' => 714,
- 'lina' => 715,
- 'linb' => 716,
- 'linearbideograms' => 717,
- 'linearbsyllabary' => 718,
- 'lisu' => 719,
- 'lisusup' => 720,
- 'll' => 724,
- 'lm' => 721,
- 'lo' => 722,
- 'loe' => 723,
- 'lower' => 1167,
- 'lowercase' => 1167,
- 'lowercaseletter' => 724,
- 'lowsurrogates' => 725,
- 'lt' => 1124,
- 'lu' => 1130,
- 'lyci' => 726,
- 'lydi' => 727,
- 'm' => 728,
- 'mahj' => 729,
- 'mahjong' => 730,
- 'maka' => 731,
- 'mand' => 732,
- 'mani' => 733,
- 'marc' => 734,
- 'math' => 735,
- 'mathalphanum' => 736,
- 'mathoperators' => 737,
- 'mayannumerals' => 738,
- 'mc' => 739,
- 'me' => 740,
- 'medf' => 741,
- 'meeteimayekext' => 742,
- 'mend' => 743,
- 'merc' => 744,
- 'mero' => 745,
- 'miao' => 746,
- 'miscarrows' => 747,
- 'miscmathsymbolsa' => 748,
- 'miscmathsymbolsb' => 749,
- 'miscpictographs' => 750,
- 'miscsymbols' => 751,
- 'misctechnical' => 752,
- 'mlym' => 753,
- 'mn' => 754,
- 'modi' => 755,
- 'modifierletters' => 756,
- 'modifiertoneletters' => 757,
- 'mong' => 758,
- 'mongoliansup' => 759,
- 'mro' => 760,
- 'mtei' => 761,
- 'mult' => 762,
- 'music' => 763,
- 'myanmarexta' => 764,
- 'myanmarextb' => 765,
- 'mymr' => 766,
- 'n' => 767,
- 'nand' => 768,
- 'narb' => 769,
- 'nb' => 770,
- 'nbat' => 771,
- 'nd' => 1165,
- 'newa' => 772,
- 'nfcqc=m' => 773,
- 'nfcqc=y' => 774,
- 'nfdqc=y' => 775,
- 'nfkcqc=n' => 776,
- 'nfkcqc=y' => 777,
- 'nfkdqc=n' => 778,
- 'nko' => 779,
- 'nl' => 780,
- 'no' => 781,
- 'nshu' => 782,
- 'nt=di' => 783,
- 'nt=nu' => 784,
- 'numberforms' => 785,
- 'nv=0' => 786,
- 'nv=1' => 787,
- 'nv=1/10' => 812,
- 'nv=1/12' => 813,
- 'nv=1/16' => 814,
- 'nv=1/160' => 815,
- 'nv=1/2' => 816,
- 'nv=1/20' => 817,
- 'nv=1/3' => 818,
- 'nv=1/32' => 819,
- 'nv=1/320' => 820,
- 'nv=1/4' => 821,
- 'nv=1/40' => 822,
- 'nv=1/5' => 823,
- 'nv=1/6' => 824,
- 'nv=1/64' => 825,
- 'nv=1/7' => 826,
- 'nv=1/8' => 827,
- 'nv=1/80' => 828,
- 'nv=1/9' => 829,
- 'nv=10' => 788,
- 'nv=100' => 789,
- 'nv=1000' => 790,
- 'nv=10000' => 791,
- 'nv=100000' => 792,
- 'nv=1000000' => 793,
- 'nv=10000000' => 794,
- 'nv=100000000' => 795,
- 'nv=10000000000' => 796,
- 'nv=1000000000000' => 797,
- 'nv=11' => 798,
- 'nv=11/12' => 799,
- 'nv=11/2' => 800,
- 'nv=12' => 801,
- 'nv=13' => 802,
- 'nv=13/2' => 803,
- 'nv=14' => 804,
- 'nv=15' => 805,
- 'nv=15/2' => 806,
- 'nv=16' => 807,
- 'nv=17' => 808,
- 'nv=17/2' => 809,
- 'nv=18' => 810,
- 'nv=19' => 811,
- 'nv=2' => 830,
- 'nv=2/3' => 847,
- 'nv=2/5' => 848,
- 'nv=20' => 831,
- 'nv=200' => 832,
- 'nv=2000' => 833,
- 'nv=20000' => 834,
- 'nv=200000' => 835,
- 'nv=20000000' => 836,
- 'nv=21' => 837,
- 'nv=216000' => 838,
- 'nv=22' => 839,
- 'nv=23' => 840,
- 'nv=24' => 841,
- 'nv=25' => 842,
- 'nv=26' => 843,
- 'nv=27' => 844,
- 'nv=28' => 845,
- 'nv=29' => 846,
- 'nv=3' => 849,
- 'nv=3/16' => 864,
- 'nv=3/2' => 865,
- 'nv=3/20' => 866,
- 'nv=3/4' => 867,
- 'nv=3/5' => 868,
- 'nv=3/64' => 869,
- 'nv=3/8' => 870,
- 'nv=3/80' => 871,
- 'nv=30' => 850,
- 'nv=300' => 851,
- 'nv=3000' => 852,
- 'nv=30000' => 853,
- 'nv=300000' => 854,
- 'nv=31' => 855,
- 'nv=32' => 856,
- 'nv=33' => 857,
- 'nv=34' => 858,
- 'nv=35' => 859,
- 'nv=36' => 860,
- 'nv=37' => 861,
- 'nv=38' => 862,
- 'nv=39' => 863,
- 'nv=4' => 872,
- 'nv=4/5' => 888,
- 'nv=40' => 873,
- 'nv=400' => 874,
- 'nv=4000' => 875,
- 'nv=40000' => 876,
- 'nv=400000' => 877,
- 'nv=41' => 878,
- 'nv=42' => 879,
- 'nv=43' => 880,
- 'nv=432000' => 881,
- 'nv=44' => 882,
- 'nv=45' => 883,
- 'nv=46' => 884,
- 'nv=47' => 885,
- 'nv=48' => 886,
- 'nv=49' => 887,
- 'nv=5' => 889,
- 'nv=5/12' => 895,
- 'nv=5/2' => 896,
- 'nv=5/6' => 897,
- 'nv=5/8' => 898,
- 'nv=50' => 890,
- 'nv=500' => 891,
- 'nv=5000' => 892,
- 'nv=50000' => 893,
- 'nv=500000' => 894,
- 'nv=6' => 899,
- 'nv=60' => 900,
- 'nv=600' => 901,
- 'nv=6000' => 902,
- 'nv=60000' => 903,
- 'nv=600000' => 904,
- 'nv=7' => 905,
- 'nv=7/12' => 911,
- 'nv=7/2' => 912,
- 'nv=7/8' => 913,
- 'nv=70' => 906,
- 'nv=700' => 907,
- 'nv=7000' => 908,
- 'nv=70000' => 909,
- 'nv=700000' => 910,
- 'nv=8' => 914,
- 'nv=80' => 915,
- 'nv=800' => 916,
- 'nv=8000' => 917,
- 'nv=80000' => 918,
- 'nv=800000' => 919,
- 'nv=9' => 920,
- 'nv=9/2' => 926,
- 'nv=90' => 921,
- 'nv=900' => 922,
- 'nv=9000' => 923,
- 'nv=90000' => 924,
- 'nv=900000' => 925,
- 'nv=_minus_1/2' => 928,
- 'nv=nan' => 927,
- 'ocr' => 929,
- 'ogam' => 930,
- 'olck' => 931,
- 'orkh' => 932,
- 'ornamentaldingbats' => 933,
- 'orya' => 934,
- 'osge' => 935,
- 'osma' => 936,
- 'ottomansiyaqnumbers' => 937,
- 'p' => 938,
- 'palm' => 939,
- 'patsyn' => 940,
- 'pauc' => 941,
- 'pc' => 942,
- 'pcm' => 943,
- 'pd' => 944,
- 'pe' => 945,
- 'perlspace' => 967,
- 'perlword' => 969,
- 'perm' => 946,
- 'pf' => 947,
- 'phag' => 948,
- 'phaistos' => 949,
- 'phli' => 950,
- 'phlp' => 951,
- 'phnx' => 952,
- 'phoneticext' => 953,
- 'phoneticextsup' => 954,
- 'pi' => 955,
- 'playingcards' => 956,
- 'po' => 957,
- 'posixalnum' => 958,
- 'posixalpha' => 959,
- 'posixblank' => 960,
- 'posixcntrl' => 961,
- 'posixdigit' => 962,
- 'posixgraph' => 963,
- 'posixlower' => 964,
- 'posixprint' => 965,
- 'posixpunct' => 966,
- 'posixspace' => 967,
- 'posixupper' => 968,
- 'posixword' => 969,
- 'posixxdigit' => 970,
- 'print' => 1168,
- 'prti' => 971,
- 'ps' => 972,
- 'pua' => 973,
- 'qaai' => 974,
- 'qmark' => 975,
- 'radical' => 976,
- 'ri' => 977,
- 'rjng' => 978,
- 'rohg' => 979,
- 'rumi' => 980,
- 'runr' => 981,
- 's' => 982,
- 'samr' => 983,
- 'sarb' => 984,
- 'saur' => 985,
- 'sb=at' => 986,
- 'sb=cl' => 987,
- 'sb=ex' => 988,
- 'sb=fo' => 989,
- 'sb=le' => 990,
- 'sb=lo' => 991,
- 'sb=nu' => 992,
- 'sb=sc' => 993,
- 'sb=se' => 994,
- 'sb=sp' => 995,
- 'sb=st' => 996,
- 'sb=up' => 997,
- 'sb=xx' => 998,
- 'sc' => 999,
- 'sc=adlm' => 1000,
- 'sc=arab' => 1001,
- 'sc=beng' => 1002,
- 'sc=bopo' => 1003,
- 'sc=bugi' => 1004,
- 'sc=buhd' => 1005,
- 'sc=cakm' => 1006,
- 'sc=copt' => 1007,
- 'sc=cprt' => 1008,
- 'sc=cyrl' => 1009,
- 'sc=deva' => 1010,
- 'sc=dogr' => 1011,
- 'sc=dupl' => 1012,
- 'sc=geor' => 1013,
- 'sc=glag' => 1014,
- 'sc=gong' => 1015,
- 'sc=gonm' => 1016,
- 'sc=gran' => 1017,
- 'sc=grek' => 1018,
- 'sc=gujr' => 1019,
- 'sc=guru' => 1020,
- 'sc=han' => 1021,
- 'sc=hang' => 1022,
- 'sc=hano' => 1023,
- 'sc=hira' => 1024,
- 'sc=java' => 1025,
- 'sc=kali' => 1026,
- 'sc=kana' => 1027,
- 'sc=khoj' => 1028,
- 'sc=knda' => 1029,
- 'sc=kthi' => 1030,
- 'sc=latn' => 1031,
- 'sc=limb' => 1032,
- 'sc=lina' => 1033,
- 'sc=linb' => 1034,
- 'sc=mahj' => 1035,
- 'sc=mand' => 1036,
- 'sc=mani' => 1037,
- 'sc=mlym' => 1038,
- 'sc=modi' => 1039,
- 'sc=mong' => 1040,
- 'sc=mult' => 1041,
- 'sc=mymr' => 1042,
- 'sc=nand' => 1043,
- 'sc=orya' => 1044,
- 'sc=perm' => 1045,
- 'sc=phag' => 1046,
- 'sc=phlp' => 1047,
- 'sc=qaai' => 1048,
- 'sc=rohg' => 1049,
- 'sc=shrd' => 1050,
- 'sc=sind' => 1051,
- 'sc=sinh' => 1052,
- 'sc=sogd' => 1053,
- 'sc=sylo' => 1054,
- 'sc=syrc' => 1055,
- 'sc=tagb' => 1056,
- 'sc=takr' => 1057,
- 'sc=tale' => 1058,
- 'sc=taml' => 1059,
- 'sc=telu' => 1060,
- 'sc=tglg' => 1061,
- 'sc=thaa' => 1062,
- 'sc=tirh' => 1063,
- 'sc=yezi' => 1064,
- 'sc=yi' => 1065,
- 'sc=zyyy' => 1066,
- 'sd' => 1067,
- 'sgnw' => 1068,
- 'shaw' => 1069,
- 'shorthandformatcontrols' => 1070,
- 'shrd' => 1071,
- 'sidd' => 1072,
- 'sind' => 1073,
- 'sinh' => 1074,
- 'sinhalaarchaicnumbers' => 1075,
- 'sk' => 1076,
- 'sm' => 1077,
- 'smallforms' => 1078,
- 'smallkanaext' => 1079,
- 'so' => 1080,
- 'sogd' => 1081,
- 'sogo' => 1082,
- 'sora' => 1083,
- 'soyo' => 1084,
- 'space' => 1170,
- 'spaceperl' => 1170,
- 'specials' => 1085,
- 'sterm' => 1086,
- 'sund' => 1087,
- 'sundanesesup' => 1088,
- 'suparrowsa' => 1089,
- 'suparrowsb' => 1090,
- 'suparrowsc' => 1091,
- 'superandsub' => 1092,
- 'supmathoperators' => 1093,
- 'suppuaa' => 1094,
- 'suppuab' => 1095,
- 'suppunctuation' => 1096,
- 'supsymbolsandpictographs' => 1097,
- 'suttonsignwriting' => 1098,
- 'sylo' => 1099,
- 'symbolsandpictographsexta' => 1100,
- 'symbolsforlegacycomputing' => 1101,
- 'syrc' => 1102,
- 'syriacsup' => 1103,
- 'tagb' => 1104,
- 'tags' => 1105,
- 'taixuanjing' => 1106,
- 'takr' => 1107,
- 'tale' => 1108,
- 'talu' => 1109,
- 'tamilsup' => 1110,
- 'taml' => 1111,
- 'tang' => 1112,
- 'tangutcomponents' => 1113,
- 'tangutsup' => 1114,
- 'tavt' => 1115,
- 'telu' => 1116,
- 'term' => 1117,
- 'tfng' => 1118,
- 'tglg' => 1119,
- 'thaa' => 1120,
- 'thai' => 1121,
- 'tibt' => 1122,
- 'tirh' => 1123,
- 'title' => 1124,
- 'titlecase' => 1124,
- 'titlecaseletter' => 1124,
- 'transportandmap' => 1125,
- 'ucas' => 1126,
- 'ucasext' => 1127,
- 'ugar' => 1128,
- 'uideo' => 1129,
- 'upper' => 1171,
- 'uppercase' => 1171,
- 'uppercaseletter' => 1130,
- 'vai' => 1131,
- 'vedicext' => 1132,
- 'verticalforms' => 1133,
- 'vertspace' => 1134,
- 'vo=r' => 1135,
- 'vo=tr' => 1136,
- 'vo=tu' => 1137,
- 'vo=u' => 1138,
- 'vs' => 1139,
- 'vssup' => 1140,
- 'wara' => 1141,
- 'wb=dq' => 1142,
- 'wb=eb' => 1143,
- 'wb=ex' => 1144,
- 'wb=extend' => 1145,
- 'wb=fo' => 1146,
- 'wb=ka' => 1147,
- 'wb=le' => 1148,
- 'wb=mb' => 1149,
- 'wb=ml' => 1150,
- 'wb=mn' => 1151,
- 'wb=nl' => 1152,
- 'wb=nu' => 1153,
- 'wb=sq' => 1154,
- 'wb=wsegspace' => 1155,
- 'wb=xx' => 1156,
- 'wcho' => 1157,
- 'whitespace' => 1170,
- 'word' => 1172,
- 'wspace' => 1170,
- 'xdigit' => 1173,
- 'xidc' => 1158,
- 'xids' => 1159,
- 'xpeo' => 1160,
- 'xperlspace' => 1170,
- 'xposixalnum' => 1161,
- 'xposixalpha' => 1162,
- 'xposixblank' => 1163,
- 'xposixcntrl' => 1164,
- 'xposixdigit' => 1165,
- 'xposixgraph' => 1166,
- 'xposixlower' => 1167,
- 'xposixprint' => 1168,
- 'xposixpunct' => 1169,
- 'xposixspace' => 1170,
- 'xposixupper' => 1171,
- 'xposixword' => 1172,
- 'xposixxdigit' => 1173,
- 'xsux' => 1174,
- 'yezi' => 1175,
- 'yi' => 1176,
- 'yijing' => 1177,
- 'yiradicals' => 1178,
- 'yisyllables' => 1179,
- 'z' => 1180,
- 'zanb' => 1181,
- 'zl' => 1182,
- 'zp' => 1183,
- 'zs' => 1184,
- 'zyyy' => 1185,
- 'zzzz' => 1186,
+ 'age=14' => 8,
+ 'age=15' => 9,
+ 'age=2' => 10,
+ 'age=2.1' => 11,
+ 'age=3' => 12,
+ 'age=3.1' => 13,
+ 'age=3.2' => 14,
+ 'age=4' => 15,
+ 'age=4.1' => 16,
+ 'age=5' => 17,
+ 'age=5.1' => 18,
+ 'age=5.2' => 19,
+ 'age=6' => 20,
+ 'age=6.1' => 21,
+ 'age=6.2' => 22,
+ 'age=6.3' => 23,
+ 'age=7' => 24,
+ 'age=8' => 25,
+ 'age=9' => 26,
+ 'aghb' => 27,
+ 'ahex' => 997,
+ 'ahom' => 28,
+ 'alchemical' => 29,
+ 'all' => 30,
+ 'alnum' => 1195,
+ 'alpha' => 1196,
+ 'alphabetic' => 1196,
+ 'alphabeticpf' => 31,
+ 'ancientgreekmusic' => 32,
+ 'ancientgreeknumbers' => 33,
+ 'ancientsymbols' => 34,
+ 'any' => 35,
+ 'arab' => 36,
+ 'arabicexta' => 37,
+ 'arabicextb' => 38,
+ 'arabicextc' => 39,
+ 'arabicmath' => 40,
+ 'arabicpfa' => 41,
+ 'arabicpfb' => 42,
+ 'arabicsup' => 43,
+ 'armi' => 44,
+ 'armn' => 45,
+ 'arrows' => 46,
+ 'ascii' => 47,
+ 'asciihexdigit' => 997,
+ 'assigned' => 48,
+ 'avst' => 49,
+ 'bali' => 50,
+ 'bamu' => 51,
+ 'bamumsup' => 52,
+ 'basiclatin' => 47,
+ 'bass' => 53,
+ 'batk' => 54,
+ 'bc=al' => 55,
+ 'bc=an' => 56,
+ 'bc=b' => 57,
+ 'bc=bn' => 58,
+ 'bc=cs' => 59,
+ 'bc=en' => 60,
+ 'bc=es' => 61,
+ 'bc=et' => 62,
+ 'bc=fsi' => 63,
+ 'bc=l' => 64,
+ 'bc=lre' => 65,
+ 'bc=lri' => 66,
+ 'bc=lro' => 67,
+ 'bc=nsm' => 68,
+ 'bc=on' => 69,
+ 'bc=pdf' => 70,
+ 'bc=pdi' => 71,
+ 'bc=r' => 72,
+ 'bc=rle' => 73,
+ 'bc=rli' => 74,
+ 'bc=rlo' => 75,
+ 'bc=s' => 76,
+ 'bc=ws' => 77,
+ 'beng' => 78,
+ 'bhks' => 79,
+ 'bidic' => 80,
+ 'bidim' => 81,
+ 'blank' => 1197,
+ 'blockelements' => 82,
+ 'bopo' => 83,
+ 'bopomofoext' => 84,
+ 'boxdrawing' => 85,
+ 'bpt=c' => 86,
+ 'bpt=n' => 87,
+ 'bpt=o' => 88,
+ 'brah' => 89,
+ 'brai' => 90,
+ 'bugi' => 91,
+ 'buhd' => 92,
+ 'byzantinemusic' => 93,
+ 'c' => 94,
+ 'cakm' => 95,
+ 'cans' => 96,
+ 'cari' => 97,
+ 'cased' => 98,
+ 'casedletter' => 99,
+ 'cc' => 1198,
+ 'ccc=0' => 100,
+ 'ccc=1' => 101,
+ 'ccc=10' => 102,
+ 'ccc=103' => 103,
+ 'ccc=107' => 104,
+ 'ccc=11' => 105,
+ 'ccc=118' => 106,
+ 'ccc=12' => 107,
+ 'ccc=122' => 108,
+ 'ccc=129' => 109,
+ 'ccc=13' => 110,
+ 'ccc=130' => 111,
+ 'ccc=132' => 112,
+ 'ccc=14' => 113,
+ 'ccc=15' => 114,
+ 'ccc=16' => 115,
+ 'ccc=17' => 116,
+ 'ccc=18' => 117,
+ 'ccc=19' => 118,
+ 'ccc=20' => 119,
+ 'ccc=202' => 120,
+ 'ccc=21' => 121,
+ 'ccc=214' => 122,
+ 'ccc=216' => 123,
+ 'ccc=22' => 124,
+ 'ccc=23' => 125,
+ 'ccc=24' => 126,
+ 'ccc=25' => 127,
+ 'ccc=26' => 128,
+ 'ccc=27' => 129,
+ 'ccc=28' => 130,
+ 'ccc=29' => 131,
+ 'ccc=30' => 132,
+ 'ccc=31' => 133,
+ 'ccc=32' => 134,
+ 'ccc=33' => 135,
+ 'ccc=34' => 136,
+ 'ccc=35' => 137,
+ 'ccc=36' => 138,
+ 'ccc=6' => 139,
+ 'ccc=7' => 140,
+ 'ccc=8' => 141,
+ 'ccc=84' => 142,
+ 'ccc=9' => 143,
+ 'ccc=91' => 144,
+ 'ccc=a' => 145,
+ 'ccc=al' => 146,
+ 'ccc=ar' => 147,
+ 'ccc=b' => 148,
+ 'ccc=bl' => 149,
+ 'ccc=br' => 150,
+ 'ccc=da' => 151,
+ 'ccc=db' => 152,
+ 'ccc=is' => 153,
+ 'ccc=l' => 154,
+ 'ccc=r' => 155,
+ 'ce' => 156,
+ 'cf' => 157,
+ 'cham' => 158,
+ 'cher' => 159,
+ 'cherokeesup' => 160,
+ 'chesssymbols' => 161,
+ 'chrs' => 162,
+ 'ci' => 163,
+ 'cjk' => 164,
+ 'cjkcompat' => 165,
+ 'cjkcompatforms' => 166,
+ 'cjkcompatideographs' => 167,
+ 'cjkcompatideographssup' => 168,
+ 'cjkexta' => 169,
+ 'cjkextb' => 170,
+ 'cjkextc' => 171,
+ 'cjkextd' => 172,
+ 'cjkexte' => 173,
+ 'cjkextf' => 174,
+ 'cjkextg' => 175,
+ 'cjkexth' => 176,
+ 'cjkradicalssup' => 177,
+ 'cjkstrokes' => 178,
+ 'cjksymbols' => 179,
+ 'cn' => 180,
+ 'cntrl' => 1198,
+ 'co' => 181,
+ 'compatjamo' => 182,
+ 'compex' => 183,
+ 'control' => 1198,
+ 'controlpictures' => 184,
+ 'copt' => 185,
+ 'copticepactnumbers' => 186,
+ 'countingrod' => 187,
+ 'cpmn' => 188,
+ 'cprt' => 189,
+ 'cuneiformnumbers' => 190,
+ 'currencysymbols' => 191,
+ 'cwcf' => 192,
+ 'cwcm' => 193,
+ 'cwkcf' => 194,
+ 'cwl' => 195,
+ 'cwt' => 196,
+ 'cwu' => 197,
+ 'cypriotsyllabary' => 198,
+ 'cyrillicexta' => 199,
+ 'cyrillicextb' => 200,
+ 'cyrillicextc' => 201,
+ 'cyrillicextd' => 202,
+ 'cyrillicsup' => 203,
+ 'cyrl' => 204,
+ 'dash' => 205,
+ 'decimalnumber' => 1199,
+ 'dep' => 206,
+ 'deva' => 207,
+ 'devanagariext' => 208,
+ 'devanagariexta' => 209,
+ 'di' => 210,
+ 'dia' => 211,
+ 'diacriticals' => 212,
+ 'diacriticalsext' => 213,
+ 'diacriticalsforsymbols' => 214,
+ 'diacriticalssup' => 215,
+ 'diak' => 216,
+ 'digit' => 1199,
+ 'dingbats' => 217,
+ 'dogr' => 218,
+ 'domino' => 219,
+ 'dsrt' => 220,
+ 'dt=can' => 221,
+ 'dt=com' => 222,
+ 'dt=enc' => 223,
+ 'dt=fin' => 224,
+ 'dt=font' => 225,
+ 'dt=fra' => 226,
+ 'dt=init' => 227,
+ 'dt=iso' => 228,
+ 'dt=med' => 229,
+ 'dt=nar' => 230,
+ 'dt=nb' => 231,
+ 'dt=noncanon' => 232,
+ 'dt=none' => 233,
+ 'dt=sml' => 234,
+ 'dt=sqr' => 235,
+ 'dt=sub' => 236,
+ 'dt=sup' => 237,
+ 'dt=vert' => 238,
+ 'dupl' => 239,
+ 'ea=a' => 241,
+ 'ea=f' => 242,
+ 'ea=h' => 243,
+ 'ea=n' => 244,
+ 'ea=na' => 245,
+ 'ea=w' => 246,
+ 'earlydynasticcuneiform' => 240,
+ 'ebase' => 247,
+ 'ecomp' => 248,
+ 'egyp' => 249,
+ 'egyptianhieroglyphformatcontrols' => 250,
+ 'elba' => 251,
+ 'elym' => 252,
+ 'emod' => 253,
+ 'emoji' => 254,
+ 'emoticons' => 255,
+ 'enclosedalphanum' => 256,
+ 'enclosedalphanumsup' => 257,
+ 'enclosedcjk' => 258,
+ 'enclosedideographicsup' => 259,
+ 'epres' => 260,
+ 'ethi' => 261,
+ 'ethiopicext' => 262,
+ 'ethiopicexta' => 263,
+ 'ethiopicextb' => 264,
+ 'ethiopicsup' => 265,
+ 'ext' => 266,
+ 'extpict' => 267,
+ 'gcb=cn' => 268,
+ 'gcb=ex' => 269,
+ 'gcb=l' => 270,
+ 'gcb=pp' => 271,
+ 'gcb=sm' => 272,
+ 'gcb=t' => 273,
+ 'gcb=v' => 274,
+ 'gcb=xx' => 275,
+ 'geometricshapes' => 276,
+ 'geometricshapesext' => 277,
+ 'geor' => 278,
+ 'georgianext' => 279,
+ 'georgiansup' => 280,
+ 'glag' => 281,
+ 'glagoliticsup' => 282,
+ 'gong' => 283,
+ 'gonm' => 284,
+ 'goth' => 285,
+ 'gran' => 286,
+ 'graph' => 1200,
+ 'grbase' => 287,
+ 'greekext' => 288,
+ 'grek' => 289,
+ 'grext' => 290,
+ 'gujr' => 291,
+ 'guru' => 292,
+ 'halfandfullforms' => 293,
+ 'halfmarks' => 294,
+ 'han' => 295,
+ 'hang' => 296,
+ 'hano' => 297,
+ 'hatr' => 298,
+ 'hebr' => 299,
+ 'hex' => 1207,
+ 'hexdigit' => 1207,
+ 'highpusurrogates' => 300,
+ 'highsurrogates' => 301,
+ 'hira' => 302,
+ 'hluw' => 303,
+ 'hmng' => 304,
+ 'hmnp' => 305,
+ 'horizspace' => 1197,
+ 'hst=na' => 306,
+ 'hung' => 307,
+ 'hyphen_perl_aux' => 308,
+ 'idc' => 309,
+ 'identifierstatus=allowed' => 310,
+ 'identifierstatus=restricted' => 311,
+ 'identifiertype=defaultignorable' => 312,
+ 'identifiertype=exclusion' => 313,
+ 'identifiertype=inclusion' => 314,
+ 'identifiertype=limiteduse' => 315,
+ 'identifiertype=notcharacter' => 316,
+ 'identifiertype=notnfkc' => 317,
+ 'identifiertype=notxid' => 318,
+ 'identifiertype=obsolete' => 319,
+ 'identifiertype=recommended' => 320,
+ 'identifiertype=technical' => 321,
+ 'identifiertype=uncommonuse' => 322,
+ 'ideo' => 323,
+ 'ideographicsymbols' => 324,
+ 'ids' => 325,
+ 'idsb' => 326,
+ 'idst' => 327,
+ 'in=1.1' => 534,
+ 'in=10' => 527,
+ 'in=11' => 528,
+ 'in=12' => 529,
+ 'in=12.1' => 530,
+ 'in=13' => 531,
+ 'in=14' => 532,
+ 'in=15' => 533,
+ 'in=2' => 535,
+ 'in=2.1' => 536,
+ 'in=3' => 537,
+ 'in=3.1' => 538,
+ 'in=3.2' => 539,
+ 'in=4' => 540,
+ 'in=4.1' => 541,
+ 'in=5' => 542,
+ 'in=5.1' => 543,
+ 'in=5.2' => 544,
+ 'in=6' => 545,
+ 'in=6.1' => 546,
+ 'in=6.2' => 547,
+ 'in=6.3' => 548,
+ 'in=7' => 549,
+ 'in=8' => 550,
+ 'in=9' => 551,
+ 'in=na' => 552,
+ 'inadlam' => 328,
+ 'inahom' => 329,
+ 'inanatolianhieroglyphs' => 330,
+ 'inarabic' => 331,
+ 'inarmenian' => 332,
+ 'inavestan' => 333,
+ 'inbalinese' => 334,
+ 'inbamum' => 335,
+ 'inbassavah' => 336,
+ 'inbatak' => 337,
+ 'inbengali' => 338,
+ 'inbhaiksuki' => 339,
+ 'inbopomofo' => 340,
+ 'inbrahmi' => 341,
+ 'inbuginese' => 342,
+ 'inbuhid' => 343,
+ 'incarian' => 344,
+ 'incaucasianalbanian' => 345,
+ 'inchakma' => 346,
+ 'incham' => 347,
+ 'incherokee' => 348,
+ 'inchorasmian' => 349,
+ 'incoptic' => 350,
+ 'incuneiform' => 351,
+ 'incyprominoan' => 352,
+ 'incyrillic' => 353,
+ 'indevanagari' => 354,
+ 'indicnumberforms' => 355,
+ 'indicsiyaqnumbers' => 356,
+ 'indivesakuru' => 357,
+ 'indogra' => 358,
+ 'induployan' => 359,
+ 'inegyptianhieroglyphs' => 360,
+ 'inelbasan' => 361,
+ 'inelymaic' => 362,
+ 'inethiopic' => 363,
+ 'ingeorgian' => 364,
+ 'inglagolitic' => 365,
+ 'ingothic' => 366,
+ 'ingrantha' => 367,
+ 'ingreek' => 368,
+ 'ingujarati' => 369,
+ 'ingunjalagondi' => 370,
+ 'ingurmukhi' => 371,
+ 'inhangul' => 372,
+ 'inhanifirohingya' => 373,
+ 'inhanunoo' => 374,
+ 'inhatran' => 375,
+ 'inhebrew' => 376,
+ 'inhiragana' => 377,
+ 'inidc' => 378,
+ 'inimperialaramaic' => 379,
+ 'ininscriptionalpahlavi' => 380,
+ 'ininscriptionalparthian' => 381,
+ 'injavanese' => 382,
+ 'inkaithi' => 383,
+ 'inkannada' => 384,
+ 'inkatakana' => 385,
+ 'inkawi' => 386,
+ 'inkharoshthi' => 387,
+ 'inkhitansmallscript' => 388,
+ 'inkhmer' => 389,
+ 'inkhojki' => 390,
+ 'inkhudawadi' => 391,
+ 'inlao' => 392,
+ 'inlepcha' => 393,
+ 'inlimbu' => 394,
+ 'inlineara' => 395,
+ 'inlisu' => 396,
+ 'inlycian' => 397,
+ 'inlydian' => 398,
+ 'inmahajani' => 399,
+ 'inmakasar' => 400,
+ 'inmalayalam' => 401,
+ 'inmandaic' => 402,
+ 'inmanichaean' => 403,
+ 'inmarchen' => 404,
+ 'inmasaramgondi' => 405,
+ 'inmedefaidrin' => 406,
+ 'inmeeteimayek' => 407,
+ 'inmendekikakui' => 408,
+ 'inmeroiticcursive' => 409,
+ 'inmiao' => 410,
+ 'inmodi' => 411,
+ 'inmongolian' => 412,
+ 'inmro' => 413,
+ 'inmultani' => 414,
+ 'inmyanmar' => 415,
+ 'innabataean' => 416,
+ 'innagmundari' => 417,
+ 'innandinagari' => 418,
+ 'innewa' => 419,
+ 'innewtailue' => 420,
+ 'innko' => 421,
+ 'innushu' => 422,
+ 'innyiakengpuachuehmong' => 423,
+ 'inogham' => 424,
+ 'inoldhungarian' => 425,
+ 'inolditalic' => 426,
+ 'inoldpermic' => 427,
+ 'inoldpersian' => 428,
+ 'inoldsogdian' => 429,
+ 'inoldturkic' => 430,
+ 'inolduyghur' => 431,
+ 'inoriya' => 432,
+ 'inosage' => 433,
+ 'inosmanya' => 434,
+ 'inpahawhhmong' => 435,
+ 'inpaucinhau' => 436,
+ 'inpc=bottom' => 437,
+ 'inpc=bottomandleft' => 438,
+ 'inpc=bottomandright' => 439,
+ 'inpc=left' => 440,
+ 'inpc=leftandright' => 441,
+ 'inpc=na' => 442,
+ 'inpc=overstruck' => 443,
+ 'inpc=right' => 444,
+ 'inpc=top' => 445,
+ 'inpc=topandbottom' => 446,
+ 'inpc=topandbottomandleft' => 447,
+ 'inpc=topandbottomandright' => 448,
+ 'inpc=topandleft' => 449,
+ 'inpc=topandleftandright' => 450,
+ 'inpc=topandright' => 451,
+ 'inphagspa' => 452,
+ 'inphoenician' => 453,
+ 'inpsalterpahlavi' => 454,
+ 'inpunctuation' => 455,
+ 'inrejang' => 456,
+ 'inrunic' => 457,
+ 'insamaritan' => 458,
+ 'insaurashtra' => 459,
+ 'insc=avagraha' => 460,
+ 'insc=bindu' => 461,
+ 'insc=brahmijoiningnumber' => 462,
+ 'insc=cantillationmark' => 463,
+ 'insc=consonant' => 464,
+ 'insc=consonantdead' => 465,
+ 'insc=consonantfinal' => 466,
+ 'insc=consonantheadletter' => 467,
+ 'insc=consonantinitialpostfixed' => 468,
+ 'insc=consonantkiller' => 469,
+ 'insc=consonantmedial' => 470,
+ 'insc=consonantplaceholder' => 471,
+ 'insc=consonantprecedingrepha' => 472,
+ 'insc=consonantprefixed' => 473,
+ 'insc=consonantsubjoined' => 474,
+ 'insc=consonantsucceedingrepha' => 475,
+ 'insc=consonantwithstacker' => 476,
+ 'insc=geminationmark' => 477,
+ 'insc=invisiblestacker' => 478,
+ 'insc=modifyingletter' => 479,
+ 'insc=nonjoiner' => 480,
+ 'insc=nukta' => 481,
+ 'insc=number' => 482,
+ 'insc=numberjoiner' => 483,
+ 'insc=other' => 484,
+ 'insc=purekiller' => 485,
+ 'insc=registershifter' => 486,
+ 'insc=syllablemodifier' => 487,
+ 'insc=toneletter' => 488,
+ 'insc=tonemark' => 489,
+ 'insc=virama' => 490,
+ 'insc=visarga' => 491,
+ 'insc=vowel' => 492,
+ 'insc=voweldependent' => 493,
+ 'insc=vowelindependent' => 494,
+ 'insiddham' => 495,
+ 'insinhala' => 496,
+ 'insogdian' => 497,
+ 'insorasompeng' => 498,
+ 'insoyombo' => 499,
+ 'insundanese' => 500,
+ 'insylotinagri' => 501,
+ 'insyriac' => 502,
+ 'intagalog' => 503,
+ 'intagbanwa' => 504,
+ 'intaile' => 505,
+ 'intaitham' => 506,
+ 'intaiviet' => 507,
+ 'intakri' => 508,
+ 'intamil' => 509,
+ 'intangsa' => 510,
+ 'intangut' => 511,
+ 'intelugu' => 512,
+ 'inthaana' => 513,
+ 'inthai' => 514,
+ 'intibetan' => 515,
+ 'intifinagh' => 516,
+ 'intirhuta' => 517,
+ 'intoto' => 518,
+ 'inugaritic' => 519,
+ 'invai' => 520,
+ 'invithkuqi' => 521,
+ 'invs' => 522,
+ 'inwancho' => 523,
+ 'inwarangciti' => 524,
+ 'inyezidi' => 525,
+ 'inzanabazarsquare' => 526,
+ 'ipaext' => 553,
+ 'ital' => 554,
+ 'jamo' => 555,
+ 'jamoexta' => 556,
+ 'jamoextb' => 557,
+ 'java' => 558,
+ 'jg=africanfeh' => 559,
+ 'jg=africannoon' => 560,
+ 'jg=africanqaf' => 561,
+ 'jg=ain' => 562,
+ 'jg=alaph' => 563,
+ 'jg=alef' => 564,
+ 'jg=beh' => 565,
+ 'jg=beth' => 566,
+ 'jg=burushaskiyehbarree' => 567,
+ 'jg=dal' => 568,
+ 'jg=dalathrish' => 569,
+ 'jg=e' => 570,
+ 'jg=farsiyeh' => 571,
+ 'jg=fe' => 572,
+ 'jg=feh' => 573,
+ 'jg=finalsemkath' => 574,
+ 'jg=gaf' => 575,
+ 'jg=gamal' => 576,
+ 'jg=hah' => 577,
+ 'jg=hamzaonhehgoal' => 578,
+ 'jg=hanifirohingyakinnaya' => 579,
+ 'jg=hanifirohingyapa' => 580,
+ 'jg=he' => 581,
+ 'jg=heh' => 582,
+ 'jg=hehgoal' => 583,
+ 'jg=heth' => 584,
+ 'jg=kaf' => 585,
+ 'jg=kaph' => 586,
+ 'jg=khaph' => 587,
+ 'jg=knottedheh' => 588,
+ 'jg=lam' => 589,
+ 'jg=lamadh' => 590,
+ 'jg=malayalambha' => 591,
+ 'jg=malayalamja' => 592,
+ 'jg=malayalamlla' => 593,
+ 'jg=malayalamllla' => 594,
+ 'jg=malayalamnga' => 595,
+ 'jg=malayalamnna' => 596,
+ 'jg=malayalamnnna' => 597,
+ 'jg=malayalamnya' => 598,
+ 'jg=malayalamra' => 599,
+ 'jg=malayalamssa' => 600,
+ 'jg=malayalamtta' => 601,
+ 'jg=manichaeanaleph' => 602,
+ 'jg=manichaeanayin' => 603,
+ 'jg=manichaeanbeth' => 604,
+ 'jg=manichaeandaleth' => 605,
+ 'jg=manichaeandhamedh' => 606,
+ 'jg=manichaeanfive' => 607,
+ 'jg=manichaeangimel' => 608,
+ 'jg=manichaeanheth' => 609,
+ 'jg=manichaeanhundred' => 610,
+ 'jg=manichaeankaph' => 611,
+ 'jg=manichaeanlamedh' => 612,
+ 'jg=manichaeanmem' => 613,
+ 'jg=manichaeannun' => 614,
+ 'jg=manichaeanone' => 615,
+ 'jg=manichaeanpe' => 616,
+ 'jg=manichaeanqoph' => 617,
+ 'jg=manichaeanresh' => 618,
+ 'jg=manichaeansadhe' => 619,
+ 'jg=manichaeansamekh' => 620,
+ 'jg=manichaeantaw' => 621,
+ 'jg=manichaeanten' => 622,
+ 'jg=manichaeanteth' => 623,
+ 'jg=manichaeanthamedh' => 624,
+ 'jg=manichaeantwenty' => 625,
+ 'jg=manichaeanwaw' => 626,
+ 'jg=manichaeanyodh' => 627,
+ 'jg=manichaeanzayin' => 628,
+ 'jg=meem' => 629,
+ 'jg=mim' => 630,
+ 'jg=nojoininggroup' => 631,
+ 'jg=noon' => 632,
+ 'jg=nun' => 633,
+ 'jg=nya' => 634,
+ 'jg=pe' => 635,
+ 'jg=qaf' => 636,
+ 'jg=qaph' => 637,
+ 'jg=reh' => 638,
+ 'jg=reversedpe' => 639,
+ 'jg=rohingyayeh' => 640,
+ 'jg=sad' => 641,
+ 'jg=sadhe' => 642,
+ 'jg=seen' => 643,
+ 'jg=semkath' => 644,
+ 'jg=shin' => 645,
+ 'jg=straightwaw' => 646,
+ 'jg=swashkaf' => 647,
+ 'jg=syriacwaw' => 648,
+ 'jg=tah' => 649,
+ 'jg=taw' => 650,
+ 'jg=tehmarbuta' => 651,
+ 'jg=teth' => 652,
+ 'jg=thinyeh' => 653,
+ 'jg=verticaltail' => 654,
+ 'jg=waw' => 655,
+ 'jg=yeh' => 656,
+ 'jg=yehbarree' => 657,
+ 'jg=yehwithtail' => 658,
+ 'jg=yudh' => 659,
+ 'jg=yudhhe' => 660,
+ 'jg=zain' => 661,
+ 'jg=zhain' => 662,
+ 'joinc' => 663,
+ 'jt=c' => 664,
+ 'jt=d' => 665,
+ 'jt=l' => 666,
+ 'jt=r' => 667,
+ 'jt=t' => 668,
+ 'jt=u' => 669,
+ 'kaktoviknumerals' => 670,
+ 'kali' => 671,
+ 'kana' => 672,
+ 'kanaexta' => 673,
+ 'kanaextb' => 674,
+ 'kanasup' => 675,
+ 'kanbun' => 676,
+ 'kangxi' => 677,
+ 'katakanaext' => 678,
+ 'kawi' => 679,
+ 'khar' => 680,
+ 'khmersymbols' => 681,
+ 'khmr' => 682,
+ 'khoj' => 683,
+ 'kits' => 684,
+ 'knda' => 685,
+ 'kthi' => 686,
+ 'l' => 687,
+ 'l_' => 99,
+ 'l_amp_' => 99,
+ 'lana' => 688,
+ 'lao' => 689,
+ 'latin1' => 690,
+ 'latinexta' => 691,
+ 'latinextadditional' => 692,
+ 'latinextb' => 693,
+ 'latinextc' => 694,
+ 'latinextd' => 695,
+ 'latinexte' => 696,
+ 'latinextf' => 697,
+ 'latinextg' => 698,
+ 'latn' => 699,
+ 'lb=ai' => 700,
+ 'lb=al' => 701,
+ 'lb=b2' => 702,
+ 'lb=ba' => 703,
+ 'lb=bb' => 704,
+ 'lb=bk' => 705,
+ 'lb=cb' => 706,
+ 'lb=cj' => 707,
+ 'lb=cl' => 708,
+ 'lb=cm' => 709,
+ 'lb=cp' => 710,
+ 'lb=cr' => 711,
+ 'lb=ex' => 712,
+ 'lb=gl' => 713,
+ 'lb=h2' => 714,
+ 'lb=h3' => 715,
+ 'lb=hl' => 716,
+ 'lb=hy' => 717,
+ 'lb=id' => 718,
+ 'lb=in' => 719,
+ 'lb=is' => 720,
+ 'lb=lf' => 721,
+ 'lb=nl' => 722,
+ 'lb=ns' => 723,
+ 'lb=nu' => 724,
+ 'lb=op' => 725,
+ 'lb=po' => 726,
+ 'lb=pr' => 727,
+ 'lb=qu' => 728,
+ 'lb=sa' => 729,
+ 'lb=sg_perl_aux' => 730,
+ 'lb=sp' => 731,
+ 'lb=sy' => 732,
+ 'lb=wj' => 733,
+ 'lb=xx' => 734,
+ 'lb=zw' => 735,
+ 'lb=zwj' => 736,
+ 'lc' => 99,
+ 'lepc' => 737,
+ 'letterlikesymbols' => 738,
+ 'limb' => 739,
+ 'lina' => 740,
+ 'linb' => 741,
+ 'linearbideograms' => 742,
+ 'linearbsyllabary' => 743,
+ 'lisu' => 744,
+ 'lisusup' => 745,
+ 'll' => 749,
+ 'lm' => 746,
+ 'lo' => 747,
+ 'loe' => 748,
+ 'lower' => 1201,
+ 'lowercase' => 1201,
+ 'lowercaseletter' => 749,
+ 'lowsurrogates' => 750,
+ 'lt' => 1154,
+ 'lu' => 1163,
+ 'lyci' => 751,
+ 'lydi' => 752,
+ 'm' => 753,
+ 'mahj' => 754,
+ 'mahjong' => 755,
+ 'maka' => 756,
+ 'mand' => 757,
+ 'mani' => 758,
+ 'marc' => 759,
+ 'math' => 760,
+ 'mathalphanum' => 761,
+ 'mathoperators' => 762,
+ 'mayannumerals' => 763,
+ 'mc' => 764,
+ 'me' => 765,
+ 'medf' => 766,
+ 'meeteimayekext' => 767,
+ 'mend' => 768,
+ 'merc' => 769,
+ 'mero' => 770,
+ 'miao' => 771,
+ 'miscarrows' => 772,
+ 'miscmathsymbolsa' => 773,
+ 'miscmathsymbolsb' => 774,
+ 'miscpictographs' => 775,
+ 'miscsymbols' => 776,
+ 'misctechnical' => 777,
+ 'mlym' => 778,
+ 'mn' => 779,
+ 'modi' => 780,
+ 'modifierletters' => 781,
+ 'modifiertoneletters' => 782,
+ 'mong' => 783,
+ 'mongoliansup' => 784,
+ 'mro' => 785,
+ 'mtei' => 786,
+ 'mult' => 787,
+ 'music' => 788,
+ 'myanmarexta' => 789,
+ 'myanmarextb' => 790,
+ 'mymr' => 791,
+ 'n' => 792,
+ 'nagm' => 793,
+ 'nand' => 794,
+ 'narb' => 795,
+ 'nb' => 796,
+ 'nbat' => 797,
+ 'nd' => 1199,
+ 'newa' => 798,
+ 'nfcqc=m' => 799,
+ 'nfcqc=y' => 800,
+ 'nfdqc=y' => 801,
+ 'nfkcqc=n' => 802,
+ 'nfkcqc=y' => 803,
+ 'nfkdqc=n' => 804,
+ 'nko' => 805,
+ 'nl' => 806,
+ 'no' => 807,
+ 'nshu' => 808,
+ 'nt=di' => 809,
+ 'nt=nu' => 810,
+ 'numberforms' => 811,
+ 'nv=0' => 812,
+ 'nv=1' => 813,
+ 'nv=1/10' => 838,
+ 'nv=1/12' => 839,
+ 'nv=1/16' => 840,
+ 'nv=1/160' => 841,
+ 'nv=1/2' => 842,
+ 'nv=1/20' => 843,
+ 'nv=1/3' => 844,
+ 'nv=1/32' => 845,
+ 'nv=1/320' => 846,
+ 'nv=1/4' => 847,
+ 'nv=1/40' => 848,
+ 'nv=1/5' => 849,
+ 'nv=1/6' => 850,
+ 'nv=1/64' => 851,
+ 'nv=1/7' => 852,
+ 'nv=1/8' => 853,
+ 'nv=1/80' => 854,
+ 'nv=1/9' => 855,
+ 'nv=10' => 814,
+ 'nv=100' => 815,
+ 'nv=1000' => 816,
+ 'nv=10000' => 817,
+ 'nv=100000' => 818,
+ 'nv=1000000' => 819,
+ 'nv=10000000' => 820,
+ 'nv=100000000' => 821,
+ 'nv=10000000000' => 822,
+ 'nv=1000000000000' => 823,
+ 'nv=11' => 824,
+ 'nv=11/12' => 825,
+ 'nv=11/2' => 826,
+ 'nv=12' => 827,
+ 'nv=13' => 828,
+ 'nv=13/2' => 829,
+ 'nv=14' => 830,
+ 'nv=15' => 831,
+ 'nv=15/2' => 832,
+ 'nv=16' => 833,
+ 'nv=17' => 834,
+ 'nv=17/2' => 835,
+ 'nv=18' => 836,
+ 'nv=19' => 837,
+ 'nv=2' => 856,
+ 'nv=2/3' => 873,
+ 'nv=2/5' => 874,
+ 'nv=20' => 857,
+ 'nv=200' => 858,
+ 'nv=2000' => 859,
+ 'nv=20000' => 860,
+ 'nv=200000' => 861,
+ 'nv=20000000' => 862,
+ 'nv=21' => 863,
+ 'nv=216000' => 864,
+ 'nv=22' => 865,
+ 'nv=23' => 866,
+ 'nv=24' => 867,
+ 'nv=25' => 868,
+ 'nv=26' => 869,
+ 'nv=27' => 870,
+ 'nv=28' => 871,
+ 'nv=29' => 872,
+ 'nv=3' => 875,
+ 'nv=3/16' => 890,
+ 'nv=3/2' => 891,
+ 'nv=3/20' => 892,
+ 'nv=3/4' => 893,
+ 'nv=3/5' => 894,
+ 'nv=3/64' => 895,
+ 'nv=3/8' => 896,
+ 'nv=3/80' => 897,
+ 'nv=30' => 876,
+ 'nv=300' => 877,
+ 'nv=3000' => 878,
+ 'nv=30000' => 879,
+ 'nv=300000' => 880,
+ 'nv=31' => 881,
+ 'nv=32' => 882,
+ 'nv=33' => 883,
+ 'nv=34' => 884,
+ 'nv=35' => 885,
+ 'nv=36' => 886,
+ 'nv=37' => 887,
+ 'nv=38' => 888,
+ 'nv=39' => 889,
+ 'nv=4' => 898,
+ 'nv=4/5' => 914,
+ 'nv=40' => 899,
+ 'nv=400' => 900,
+ 'nv=4000' => 901,
+ 'nv=40000' => 902,
+ 'nv=400000' => 903,
+ 'nv=41' => 904,
+ 'nv=42' => 905,
+ 'nv=43' => 906,
+ 'nv=432000' => 907,
+ 'nv=44' => 908,
+ 'nv=45' => 909,
+ 'nv=46' => 910,
+ 'nv=47' => 911,
+ 'nv=48' => 912,
+ 'nv=49' => 913,
+ 'nv=5' => 915,
+ 'nv=5/12' => 921,
+ 'nv=5/2' => 922,
+ 'nv=5/6' => 923,
+ 'nv=5/8' => 924,
+ 'nv=50' => 916,
+ 'nv=500' => 917,
+ 'nv=5000' => 918,
+ 'nv=50000' => 919,
+ 'nv=500000' => 920,
+ 'nv=6' => 925,
+ 'nv=60' => 926,
+ 'nv=600' => 927,
+ 'nv=6000' => 928,
+ 'nv=60000' => 929,
+ 'nv=600000' => 930,
+ 'nv=7' => 931,
+ 'nv=7/12' => 937,
+ 'nv=7/2' => 938,
+ 'nv=7/8' => 939,
+ 'nv=70' => 932,
+ 'nv=700' => 933,
+ 'nv=7000' => 934,
+ 'nv=70000' => 935,
+ 'nv=700000' => 936,
+ 'nv=8' => 940,
+ 'nv=80' => 941,
+ 'nv=800' => 942,
+ 'nv=8000' => 943,
+ 'nv=80000' => 944,
+ 'nv=800000' => 945,
+ 'nv=9' => 946,
+ 'nv=9/2' => 952,
+ 'nv=90' => 947,
+ 'nv=900' => 948,
+ 'nv=9000' => 949,
+ 'nv=90000' => 950,
+ 'nv=900000' => 951,
+ 'nv=_minus_1/2' => 954,
+ 'nv=nan' => 953,
+ 'ocr' => 955,
+ 'ogam' => 956,
+ 'olck' => 957,
+ 'orkh' => 958,
+ 'ornamentaldingbats' => 959,
+ 'orya' => 960,
+ 'osge' => 961,
+ 'osma' => 962,
+ 'ottomansiyaqnumbers' => 963,
+ 'ougr' => 964,
+ 'p' => 965,
+ 'palm' => 966,
+ 'patsyn' => 967,
+ 'pauc' => 968,
+ 'pc' => 969,
+ 'pcm' => 970,
+ 'pd' => 971,
+ 'pe' => 972,
+ 'perlspace' => 994,
+ 'perlword' => 996,
+ 'perm' => 973,
+ 'pf' => 974,
+ 'phag' => 975,
+ 'phaistos' => 976,
+ 'phli' => 977,
+ 'phlp' => 978,
+ 'phnx' => 979,
+ 'phoneticext' => 980,
+ 'phoneticextsup' => 981,
+ 'pi' => 982,
+ 'playingcards' => 983,
+ 'po' => 984,
+ 'posixalnum' => 985,
+ 'posixalpha' => 986,
+ 'posixblank' => 987,
+ 'posixcntrl' => 988,
+ 'posixdigit' => 989,
+ 'posixgraph' => 990,
+ 'posixlower' => 991,
+ 'posixprint' => 992,
+ 'posixpunct' => 993,
+ 'posixspace' => 994,
+ 'posixupper' => 995,
+ 'posixword' => 996,
+ 'posixxdigit' => 997,
+ 'print' => 1202,
+ 'prti' => 998,
+ 'ps' => 999,
+ 'pua' => 1000,
+ 'qaai' => 1001,
+ 'qmark' => 1002,
+ 'radical' => 1003,
+ 'ri' => 1004,
+ 'rjng' => 1005,
+ 'rohg' => 1006,
+ 'rumi' => 1007,
+ 'runr' => 1008,
+ 's' => 1009,
+ 'samr' => 1010,
+ 'sarb' => 1011,
+ 'saur' => 1012,
+ 'sb=at' => 1013,
+ 'sb=cl' => 1014,
+ 'sb=ex' => 1015,
+ 'sb=fo' => 1016,
+ 'sb=le' => 1017,
+ 'sb=lo' => 1018,
+ 'sb=nu' => 1019,
+ 'sb=sc' => 1020,
+ 'sb=se' => 1021,
+ 'sb=sp' => 1022,
+ 'sb=st' => 1023,
+ 'sb=up' => 1024,
+ 'sb=xx' => 1025,
+ 'sc' => 1026,
+ 'sc=adlm' => 1027,
+ 'sc=arab' => 1028,
+ 'sc=beng' => 1029,
+ 'sc=bopo' => 1030,
+ 'sc=bugi' => 1031,
+ 'sc=buhd' => 1032,
+ 'sc=cakm' => 1033,
+ 'sc=copt' => 1034,
+ 'sc=cpmn' => 1035,
+ 'sc=cprt' => 1036,
+ 'sc=cyrl' => 1037,
+ 'sc=deva' => 1038,
+ 'sc=dogr' => 1039,
+ 'sc=dupl' => 1040,
+ 'sc=geor' => 1041,
+ 'sc=glag' => 1042,
+ 'sc=gong' => 1043,
+ 'sc=gonm' => 1044,
+ 'sc=gran' => 1045,
+ 'sc=grek' => 1046,
+ 'sc=gujr' => 1047,
+ 'sc=guru' => 1048,
+ 'sc=han' => 1049,
+ 'sc=hang' => 1050,
+ 'sc=hano' => 1051,
+ 'sc=hira' => 1052,
+ 'sc=java' => 1053,
+ 'sc=kali' => 1054,
+ 'sc=kana' => 1055,
+ 'sc=khoj' => 1056,
+ 'sc=knda' => 1057,
+ 'sc=kthi' => 1058,
+ 'sc=latn' => 1059,
+ 'sc=limb' => 1060,
+ 'sc=lina' => 1061,
+ 'sc=linb' => 1062,
+ 'sc=mahj' => 1063,
+ 'sc=mand' => 1064,
+ 'sc=mani' => 1065,
+ 'sc=mlym' => 1066,
+ 'sc=modi' => 1067,
+ 'sc=mong' => 1068,
+ 'sc=mult' => 1069,
+ 'sc=mymr' => 1070,
+ 'sc=nand' => 1071,
+ 'sc=nko' => 1072,
+ 'sc=orya' => 1073,
+ 'sc=ougr' => 1074,
+ 'sc=perm' => 1075,
+ 'sc=phag' => 1076,
+ 'sc=phlp' => 1077,
+ 'sc=qaai' => 1078,
+ 'sc=rohg' => 1079,
+ 'sc=shrd' => 1080,
+ 'sc=sind' => 1081,
+ 'sc=sinh' => 1082,
+ 'sc=sogd' => 1083,
+ 'sc=sylo' => 1084,
+ 'sc=syrc' => 1085,
+ 'sc=tagb' => 1086,
+ 'sc=takr' => 1087,
+ 'sc=tale' => 1088,
+ 'sc=taml' => 1089,
+ 'sc=telu' => 1090,
+ 'sc=tglg' => 1091,
+ 'sc=thaa' => 1092,
+ 'sc=tirh' => 1093,
+ 'sc=yezi' => 1094,
+ 'sc=yi' => 1095,
+ 'sc=zyyy' => 1096,
+ 'sd' => 1097,
+ 'sgnw' => 1098,
+ 'shaw' => 1099,
+ 'shorthandformatcontrols' => 1100,
+ 'shrd' => 1101,
+ 'sidd' => 1102,
+ 'sind' => 1103,
+ 'sinh' => 1104,
+ 'sinhalaarchaicnumbers' => 1105,
+ 'sk' => 1106,
+ 'sm' => 1107,
+ 'smallforms' => 1108,
+ 'smallkanaext' => 1109,
+ 'so' => 1110,
+ 'sogd' => 1111,
+ 'sogo' => 1112,
+ 'sora' => 1113,
+ 'soyo' => 1114,
+ 'space' => 1204,
+ 'spaceperl' => 1204,
+ 'specials' => 1115,
+ 'sterm' => 1116,
+ 'sund' => 1117,
+ 'sundanesesup' => 1118,
+ 'suparrowsa' => 1119,
+ 'suparrowsb' => 1120,
+ 'suparrowsc' => 1121,
+ 'superandsub' => 1122,
+ 'supmathoperators' => 1123,
+ 'suppuaa' => 1124,
+ 'suppuab' => 1125,
+ 'suppunctuation' => 1126,
+ 'supsymbolsandpictographs' => 1127,
+ 'suttonsignwriting' => 1128,
+ 'sylo' => 1129,
+ 'symbolsandpictographsexta' => 1130,
+ 'symbolsforlegacycomputing' => 1131,
+ 'syrc' => 1132,
+ 'syriacsup' => 1133,
+ 'tagb' => 1134,
+ 'tags' => 1135,
+ 'taixuanjing' => 1136,
+ 'takr' => 1137,
+ 'tale' => 1138,
+ 'talu' => 1139,
+ 'tamilsup' => 1140,
+ 'taml' => 1141,
+ 'tang' => 1142,
+ 'tangutcomponents' => 1143,
+ 'tangutsup' => 1144,
+ 'tavt' => 1145,
+ 'telu' => 1146,
+ 'term' => 1147,
+ 'tfng' => 1148,
+ 'tglg' => 1149,
+ 'thaa' => 1150,
+ 'thai' => 1151,
+ 'tibt' => 1152,
+ 'tirh' => 1153,
+ 'title' => 1154,
+ 'titlecase' => 1154,
+ 'titlecaseletter' => 1154,
+ 'tnsa' => 1155,
+ 'toto' => 1156,
+ 'transportandmap' => 1157,
+ 'ucas' => 1158,
+ 'ucasext' => 1159,
+ 'ucasexta' => 1160,
+ 'ugar' => 1161,
+ 'uideo' => 1162,
+ 'upper' => 1205,
+ 'uppercase' => 1205,
+ 'uppercaseletter' => 1163,
+ 'vai' => 1164,
+ 'vedicext' => 1165,
+ 'verticalforms' => 1166,
+ 'vertspace' => 1167,
+ 'vith' => 1168,
+ 'vo=r' => 1169,
+ 'vo=tr' => 1170,
+ 'vo=tu' => 1171,
+ 'vo=u' => 1172,
+ 'vs' => 1173,
+ 'vssup' => 1174,
+ 'wara' => 1175,
+ 'wb=dq' => 1176,
+ 'wb=eb' => 1177,
+ 'wb=ex' => 1178,
+ 'wb=extend' => 1179,
+ 'wb=fo' => 1180,
+ 'wb=ka' => 1181,
+ 'wb=le' => 1182,
+ 'wb=mb' => 1183,
+ 'wb=ml' => 1184,
+ 'wb=mn' => 1185,
+ 'wb=nl' => 1186,
+ 'wb=nu' => 1187,
+ 'wb=sq' => 1188,
+ 'wb=wsegspace' => 1189,
+ 'wb=xx' => 1190,
+ 'wcho' => 1191,
+ 'whitespace' => 1204,
+ 'word' => 1206,
+ 'wspace' => 1204,
+ 'xdigit' => 1207,
+ 'xidc' => 1192,
+ 'xids' => 1193,
+ 'xpeo' => 1194,
+ 'xperlspace' => 1204,
+ 'xposixalnum' => 1195,
+ 'xposixalpha' => 1196,
+ 'xposixblank' => 1197,
+ 'xposixcntrl' => 1198,
+ 'xposixdigit' => 1199,
+ 'xposixgraph' => 1200,
+ 'xposixlower' => 1201,
+ 'xposixprint' => 1202,
+ 'xposixpunct' => 1203,
+ 'xposixspace' => 1204,
+ 'xposixupper' => 1205,
+ 'xposixword' => 1206,
+ 'xposixxdigit' => 1207,
+ 'xsux' => 1208,
+ 'yezi' => 1209,
+ 'yi' => 1210,
+ 'yijing' => 1211,
+ 'yiradicals' => 1212,
+ 'yisyllables' => 1213,
+ 'z' => 1214,
+ 'zanb' => 1215,
+ 'zl' => 1216,
+ 'znamennymusic' => 1217,
+ 'zp' => 1218,
+ 'zs' => 1219,
+ 'zyyy' => 1220,
+ 'zzzz' => 1221,
);
1;
# Generated from:
-# d60b1a3dffe16c4aaaf3f00d21993bb320d05e9828b106182214764d4c69935c lib/Unicode/UCD.pm
-# ce96627d4fc91b4fd886c409caeb9b76cf7bd345e12f05c6701add7f233f6437 lib/unicore/ArabicShaping.txt
-# 0e69eef3da722cc104522d8372e86d5b86bb7afcc761b0c991e39e832294946d lib/unicore/BidiBrackets.txt
-# a00d9d21585106a52113fb7b1d3d0373a5835be72e76862fb559ebddd474d70e lib/unicore/BidiMirroring.txt
-# 81a82b6a9fcf1a9c12f588d7a1decd73a9afdc4cac95b0eb7e576e7942d6c19f lib/unicore/Blocks.txt
-# 99d231d7c91688bbe8ca8ccebcc2f46b5b222f844babe4827295bae11e2abe5f lib/unicore/CaseFolding.txt
-# 38badafd818d8405324fe298c0676be0c95186368c84b5368375fd871a645144 lib/unicore/CompositionExclusions.txt
-# e779a443d3aa2a3166a15becaa2b737c922480e32c0453d5956093633555078f lib/unicore/DAge.txt
-# a5d45f59b39deaab3c72ce8c1a2e212a5e086dff11b1f9d5bb0e352642e82248 lib/unicore/DCoreProperties.txt
-# 3ac44e11c84bdaf6b207d2c2c20eed857ae17052393fc7f71b0fe951186ba906 lib/unicore/DNormalizationProps.txt
-# 4f822ec7a9ebbb3138ad29bade8b9688d25b39c7a3c0b7431f01e7229e4fcb6e lib/unicore/EastAsianWidth.txt
-# fc535aa1047a70105ab9a22c2b4c3f363a2ff02fe48ebbc5eeb9873b2752ff0b lib/unicore/EquivalentUnifiedIdeograph.txt
-# b9c5158ce944d2fec57e0e4ecb716bdabfc3bdde73525f1772fe03f61a30d473 lib/unicore/HangulSyllableType.txt
-# 36c1b2a626ff1fb23b8b21e6ea8712698f8ce668dded1cb48b8ddf6a6a1b04e9 lib/unicore/IdStatus.txt
-# 4857c4ffa3898e6128b2d46b0a02e499a663fb91464a69ef3611096f01293acc lib/unicore/IdType.txt
-# 69197b019fa5f2fb0d8c6ed1ed8acb9f2e8b5b8f45a947953ffa652f3bf54983 lib/unicore/IndicPositionalCategory.txt
-# 6604e2f0fde7428675364aa0006bc686b79488dcc60ae8cb29800af2be3352e8 lib/unicore/IndicSyllabicCategory.txt
-# 84ead63924aaa74b988b2eaf254a8733276ed108633ce2ef77a9ee1de7818162 lib/unicore/Jamo.txt
-# d5abcd8f54c8a2aa912924c485ccf7f968ad98feaa303d8e9a29ad89172f1faf lib/unicore/LineBreak.txt
-# 985128e8c8b2540233331d9b27d897d2c23bd5bcf1d05da960befce6efc59542 lib/unicore/NameAliases.txt
-# 27282b8aa01d4d0c44aef436cb74195ae8639ffa187aeee4e6247af76febea76 lib/unicore/NamedSequences.txt
-# 485b5a3ed25dbf1f94dfa5a9b69d8b4550ffd0c33045ccc55ccfd7c80b2a40cf lib/unicore/PropList.txt
-# 6b3902e9268cd843fe65cbdea992108c9528343ec0679f800b96f356bb553e5a lib/unicore/PropValueAliases.txt
-# 2bd5777847e3d6add3c7e5c0d1393ddcab89e5a0ac3ff498cb0c53041f0b86e4 lib/unicore/PropertyAliases.txt
-# 03a61dc89422e44cc2b73e8e893321007880ab69e2a4d281c0f1bc29c602b9d0 lib/unicore/ScriptExtensions.txt
-# 9a5ed1ec9b5f0d7147e9371ad792ab39203611af7637cff2aa4a5c663b172cde lib/unicore/Scripts.txt
-# 6424312f1dc39b22e0ff9c0ffb13dfad424d9b03e6a6dc6bca941f6bf5ef1ffd lib/unicore/SpecialCasing.txt
-# bdbffbbfc8ad4d3a6d01b5891510458f3d36f7170422af4ea2bed3211a73e8bb lib/unicore/UnicodeData.txt
-# 160f41816234addb511901d5f21febd69574578dd93de6ef8153e35693325575 lib/unicore/VerticalOrientation.txt
-# 32dfb37d21db530529a6ec3dc13d96f21f8e7c7faf7ff3db8a9760cd76cec81d lib/unicore/auxiliary/GCBTest.txt
-# 2bd3c5e2d62701ff81fb3ec318e179a4618cabb1493b1e0dd2b4e7e56c5437c4 lib/unicore/auxiliary/GraphemeBreakProperty.txt
-# c51fbebfa82a0f36473b44bfd71d5ef6cb6a1f81fb313375dc9a1910d79bb2b6 lib/unicore/auxiliary/LBTest.txt
-# 80b0107750818d8f370bd120b6fe56b6855b60581f72affe8b60409a469b4b65 lib/unicore/auxiliary/SBTest.txt
-# 09e3166ebab166ac630a227f77f4e794ebd433271abd5588f5a67e7f199c71ee lib/unicore/auxiliary/SentenceBreakProperty.txt
-# bf5373ce28a5df06796c93dc159dd15a997bb2950c92704b40ae8190cfc3716d lib/unicore/auxiliary/WBTest.txt
-# a2b7373cf2fe3fa3b26dbb53405ca849985f771ff47f1c61743978003ff80499 lib/unicore/auxiliary/WordBreakProperty.txt
-# d2686f400a638c80775d7c662556fb8fa8dd3bbe4aa548d9d31624264c6e1bb1 lib/unicore/emoji/emoji.txt
-# b827ae5da8c2b08947cc9a120a7b7fd2f1676fb160b508df78075381635b127c lib/unicore/extracted/DBidiClass.txt
-# 6fdc5b5ef40444a8f0c772e6b67c00498d4216fe0c0fdf76744ce338f2ad3810 lib/unicore/extracted/DBinaryProperties.txt
-# e14928a5bf6ad5958a80332bd42e96e14420080a95c660e5da29384e496755d0 lib/unicore/extracted/DCombiningClass.txt
-# 579a03281fbe87b78d5d9a8523de4d255edd7e4ca6eab0e4c7729de97e9b89b1 lib/unicore/extracted/DDecompositionType.txt
-# ad83c59b257e9d480ffd3001d4ac240c5fed7cb1919453e1c4e8877035256bcd lib/unicore/extracted/DEastAsianWidth.txt
-# 4502f0969e4e6558c4b4c6ca4c23dad70b863d61dd3d5eed1a62a6c3c99fd570 lib/unicore/extracted/DGeneralCategory.txt
-# 00bb88b89e2adb646f3177f9444e2d3192386b81a5de9556104b338274b253e1 lib/unicore/extracted/DJoinGroup.txt
-# ac835b6e11a60c9820d3cf2d1cb0558dd68efb8f53f404a51632e4726690a6d7 lib/unicore/extracted/DJoinType.txt
-# baba9dfc133e3cb770a89aaf0973b1341fa61c2da6c176baf6428898b3b568d8 lib/unicore/extracted/DLineBreak.txt
-# 6d4a8c945dd7db83ed617cbb7d937de7f4ecf016ff22970d846e996a7c9a2a5d lib/unicore/extracted/DNumType.txt
-# 5b7c14380d5cceeaffcfbc18db1ed936391d2af2d51f5a41f1a17b692c77e59b lib/unicore/extracted/DNumValues.txt
-# 28076ceb3f4e2514ea9db243f4b918b9a7c2807b036237e2276b99b2659d9474 lib/unicore/mktables
-# 50b85a67451145545a65cea370dab8d3444fbfe07e9c34cef560c5b7da9d3eef lib/unicore/version
-# 24120d5e0c9685c442c93bc1dbea9b85ef973bf8e9474baf0e55b160c288226b regen/charset_translations.pl
-# 9f74e34278592ddf58fef8c32236b294e94ea5e12627f911f4563e8040a07292 regen/mk_PL_charclass.pl
-# 5eb9e6c825496cc9aa705e3cd33bc6d5a9657dcca16d4c4acc4824ff30b34a26 regen/mk_invlists.pl
-# ex: set ro:
+# 688d673ec947f7ccf898b4eae9848139d4d33676b688dee54f449f8bf9d3bbd2 lib/Unicode/UCD.pm
+# eb840f36e0a7446293578c684a54c6d83d249abde7bdd4dfa89794af1d7fe9e9 lib/unicore/ArabicShaping.txt
+# 333ae1e99db0504ca8a046a07dc45b5e7aa91869c685e6bf955ebe674804827a lib/unicore/BidiBrackets.txt
+# b4b9e1d87d8ea273613880de9d2b2f0b0b696244b42152bfa0a3106e7d983a20 lib/unicore/BidiMirroring.txt
+# 529dc5d0f6386d52f2f56e004bbfab48ce2d587eea9d38ba546c4052491bd820 lib/unicore/Blocks.txt
+# cdd49e55eae3bbf1f0a3f6580c974a0263cb86a6a08daa10fbf705b4808a56f7 lib/unicore/CaseFolding.txt
+# 3b019c0a33c3140cbc920c078f4f9af2680ba4f71869c8d4de5190667c70b6a3 lib/unicore/CompositionExclusions.txt
+# 7570877e0fa197c45338f7c41a02636da4e14c8dba6a3611a01cd30bf329d5ca lib/unicore/DAge.txt
+# d367290bc0867e6b484c68370530bdd1a08b6b32404601b8c7accaf83e05628d lib/unicore/DCoreProperties.txt
+# d5687a48c95c7d6e1ec59cb29c0f2e8b052018eb069a4371b7368d0561e12a29 lib/unicore/DNormalizationProps.txt
+# 743e7bc435c04ab1a8459710b1c3cad56eedced5b806b4659b6e69b85d0adf2a lib/unicore/EastAsianWidth.txt
+# f2e04bae8c856fad3a16353a99d4cc2de6c72770260379f5e4974a97548aad2a lib/unicore/EquivalentUnifiedIdeograph.txt
+# 9a3ab36d36a22bdb84de7a17b17e9b9c242134f0080f0a8b4b28d209465a8fc8 lib/unicore/HangulSyllableType.txt
+# 790bc9595795c0e0a3860a21a7f97157a134b61a4fc4ab03c7d315d07c9a6eb7 lib/unicore/IdStatus.txt
+# 71d3ed8f15cd5d8cd00cdebe62015ff26356462774b261b4a2b83d3bf46b1639 lib/unicore/IdType.txt
+# 0ce56c1294da405c0a0a0071582ac839fd229bbf97bdd260462ee571309d4ec4 lib/unicore/IndicPositionalCategory.txt
+# ffae561a51b47ddbbe267fdd8505ac3776b85b2932268809127acee84200b573 lib/unicore/IndicSyllabicCategory.txt
+# 14733bcb6731ae0c07485bf59a41cb3db08785a50bd2b46b836b4341eab7ee46 lib/unicore/Jamo.txt
+# 012bca868e2c4e59a5a10a7546baf0c6fb1b2ef458c277f054915c8a49d292bf lib/unicore/LineBreak.txt
+# 3e39509e8fae3e5d50ba73759d0b97194501d14a9c63107a6372a46b38be18e8 lib/unicore/NameAliases.txt
+# 1d5202155f14841973aa540b1625f4befbde185ac77ce5aceaaaa0501a68bd66 lib/unicore/NamedSequences.txt
+# fb9ac8cc154a80cad6caac9897af55a4e75176af6f4e2bb6edc2bf8b1d57f326 lib/unicore/NormTest.txt
+# e05c0a2811d113dae4abd832884199a3ea8d187ee1b872d8240a788a96540bfd lib/unicore/PropList.txt
+# 13a7666843abea5c6b7eb8c057c57ab9bb2ba96cfc936e204224dd67d71cafad lib/unicore/PropValueAliases.txt
+# e4935149af407fa455901832b710bccb63d2453e46d09190e234d019bcfbba45 lib/unicore/PropertyAliases.txt
+# 7e07313d9d0bee42220c476b64485995130ae30917bbcf7780b602d677d7e33f lib/unicore/ScriptExtensions.txt
+# cca85d830f46aece2e7c1459ef1249993dca8f2e46d51e869255be140d7ea4b0 lib/unicore/Scripts.txt
+# 78b29c64b5840d25c11a9f31b665ee551b8a499eca6c70d770fcad7dd710f494 lib/unicore/SpecialCasing.txt
+# 806e9aed65037197f1ec85e12be6e8cd870fc5608b4de0fffd990f689f376a73 lib/unicore/UnicodeData.txt
+# ca6d332f485a6f5f452b29b4a74146af0f2c17b7577aa4c821d597210f70611a lib/unicore/VerticalOrientation.txt
+# 0d2080d0def294a4b7660801cc03ddfe5866ff300c789c2cc1b50fd7802b2d97 lib/unicore/auxiliary/GCBTest.txt
+# 5a0f8748575432f8ff95e1dd5bfaa27bda1a844809e17d6939ee912bba6568a1 lib/unicore/auxiliary/GraphemeBreakProperty.txt
+# 371bde4052aa593b108684ae292d8ea2dbb93c19990e0cdf416fa7239557aac3 lib/unicore/auxiliary/LBTest.txt
+# f62279d8fd10935ba0cf0d8417a1dcbe7ab0d4e62f59c17e02cbe40f580c4162 lib/unicore/auxiliary/SBTest.txt
+# 61e4ba975b0a5bc1a76ee931b94914395d7289ef624e3c0d4d6b9460ee387bea lib/unicore/auxiliary/SentenceBreakProperty.txt
+# 2a676130c71194245e7c74a837e58330f202600d8ddcf4518129dd476f26e18e lib/unicore/auxiliary/WBTest.txt
+# 5188a56e91593467c2e912601ebc78750e6adc9b04541b8c5becb5441e388ce2 lib/unicore/auxiliary/WordBreakProperty.txt
+# 29071dba22c72c27783a73016afb8ffaeb025866740791f9c2d0b55cc45a3470 lib/unicore/emoji/emoji.txt
+# 4841f2090c2dbc592d3ce43bb74c2191b3da50fb9a0d00274f1448c202851b02 lib/unicore/extracted/DBidiClass.txt
+# f10a35451429137f7348825f22d624b6390c526ead3d8e756d2af9e5ed5b2b67 lib/unicore/extracted/DBinaryProperties.txt
+# ca54f6360cd288ad92113415bf1f77749015abe11cbd6798d21f7fa81f04205d lib/unicore/extracted/DCombiningClass.txt
+# db059ce45e3cec49bfda56e262fa658b3a5561b1648de266c818d2a08a85b78a lib/unicore/extracted/DDecompositionType.txt
+# d62e6950f086e53f47c593a38342621f8838f48c49a1de070cf83d3959bd1688 lib/unicore/extracted/DEastAsianWidth.txt
+# fe29a45c0882500e591140aaa5c4f5067e6a5d746806148af34400c48b9c06f9 lib/unicore/extracted/DGeneralCategory.txt
+# e13ca1344b16023aa38c6ada39f9658536fc6bb7c3c24d579f0bc316a4f4f1e0 lib/unicore/extracted/DJoinGroup.txt
+# c4870b11e2b8b7d0eb70b99ce85608e5c28a399efa316cca97238a58ae160e5e lib/unicore/extracted/DJoinType.txt
+# 3f4f32ed2a577344a508114527e721d7a8b633d32f38945d47fe0c743650c585 lib/unicore/extracted/DLineBreak.txt
+# 710abf2d581ac9c57f244c0834f9d9969d9781e0396adccd330eaae658ac7d6b lib/unicore/extracted/DNumType.txt
+# 6bd30f385f3baf3ab5d5308c111a81de87bea5f494ba0ba69e8ab45263b8c34d lib/unicore/extracted/DNumValues.txt
+# f7265069b38ba9a0675a18600e241b1ec6fc8c55fd806fe4c13bc5d8cb0dc508 lib/unicore/mktables
+# 55d90fdc3f902e5c0b16b3378f9eaa36e970a1c09723c33de7d47d0370044012 lib/unicore/version
+# 0a6b5ab33bb1026531f816efe81aea1a8ffcd34a27cbea37dd6a70a63d73c844 regen/charset_translations.pl
+# c7ff8e0d207d3538c7feb4a1a152b159e5e902d20293b303569ea8323e84633e regen/mk_PL_charclass.pl
+# cdbafee25193032242e77f2a6332b731d8392ce342fa616dbabc2c14c7b44eb6 regen/mk_invlists.pl
+# ex: set ro ft=perl:
diff --git a/Master/tlpkg/tlperl/lib/unicore/version b/Master/tlpkg/tlperl/lib/unicore/version
index 02161ca86e5..94188a74831 100644
--- a/Master/tlpkg/tlperl/lib/unicore/version
+++ b/Master/tlpkg/tlperl/lib/unicore/version
@@ -1 +1 @@
-13.0.0
+15.0.0
diff --git a/Master/tlpkg/tlperl/lib/utf8.pm b/Master/tlpkg/tlperl/lib/utf8.pm
index 823193b8c13..c1f1680336d 100644
--- a/Master/tlpkg/tlperl/lib/utf8.pm
+++ b/Master/tlpkg/tlperl/lib/utf8.pm
@@ -5,7 +5,7 @@ use warnings;
our $hint_bits = 0x00800000;
-our $VERSION = '1.24';
+our $VERSION = '1.25';
our $AUTOLOAD;
sub import {
@@ -114,6 +114,8 @@ sequence in the native encoding (Latin-1 or EBCDIC) to UTF-8. The
logical character sequence itself is unchanged. If I<$string> is already
upgraded, then this is a no-op. Returns the
number of octets necessary to represent the string as UTF-8.
+Since Perl v5.38, if C<$string> is C<undef> no action is taken; prior to that,
+it would be converted to be defined and zero-length.
If your code needs to be compatible with versions of perl without
C<use feature 'unicode_strings';>, you can force Unicode semantics on
diff --git a/Master/tlpkg/tlperl/lib/version.pm b/Master/tlpkg/tlperl/lib/version.pm
index 5531d764284..3b9786c1849 100644
--- a/Master/tlpkg/tlperl/lib/version.pm
+++ b/Master/tlpkg/tlperl/lib/version.pm
@@ -8,7 +8,7 @@ if ($] >= 5.015) {
warnings::register_categories(qw/version/);
}
-our $VERSION = 0.9928;
+our $VERSION = 0.9929;
our $CLASS = 'version';
our (@ISA, $STRICT, $LAX);
diff --git a/Master/tlpkg/tlperl/lib/version/regex.pm b/Master/tlpkg/tlperl/lib/version/regex.pm
index 3b221beba09..caaebe687c5 100644
--- a/Master/tlpkg/tlperl/lib/version/regex.pm
+++ b/Master/tlpkg/tlperl/lib/version/regex.pm
@@ -2,7 +2,7 @@ package version::regex;
use strict;
-our $VERSION = 0.9928;
+our $VERSION = 0.9929;
#--------------------------------------------------------------------------#
# Version regexp components
diff --git a/Master/tlpkg/tlperl/lib/warnings.pm b/Master/tlpkg/tlperl/lib/warnings.pm
index a92d4904c2d..f2d47ac0d84 100644
--- a/Master/tlpkg/tlperl/lib/warnings.pm
+++ b/Master/tlpkg/tlperl/lib/warnings.pm
@@ -1,11 +1,11 @@
-# -*- buffer-read-only: t -*-
+# -*- mode: Perl; buffer-read-only: t -*-
# !!!!!!! DO NOT EDIT THIS FILE !!!!!!!
# This file is built by regen/warnings.pl.
# Any changes made here will be lost!
package warnings;
-our $VERSION = "1.51";
+our $VERSION = "1.65";
# Verify that we're called correctly so that warnings will work.
# Can't use Carp, since Carp uses us!
@@ -68,213 +68,253 @@ our %Offsets = (
'imprecision' => 92,
'illegalproto' => 94,
+ # Warnings Categories added in Perl 5.011003
+ 'deprecated::goto_construct' => 96,
+ 'deprecated::unicode_property_name' => 98,
+
# Warnings Categories added in Perl 5.013
- 'non_unicode' => 96,
- 'nonchar' => 98,
- 'surrogate' => 100,
+ 'non_unicode' => 100,
+ 'nonchar' => 102,
+ 'surrogate' => 104,
# Warnings Categories added in Perl 5.017
- 'experimental' => 102,
- 'experimental::lexical_subs' => 104,
- 'experimental::regex_sets' => 106,
- 'experimental::smartmatch' => 108,
+ 'experimental' => 106,
+ 'experimental::regex_sets' => 108,
# Warnings Categories added in Perl 5.019
- 'experimental::postderef' => 110,
- 'experimental::signatures' => 112,
- 'syscalls' => 114,
+ 'syscalls' => 110,
# Warnings Categories added in Perl 5.021
- 'experimental::bitwise' => 116,
- 'experimental::const_attr' => 118,
- 'experimental::re_strict' => 120,
- 'experimental::refaliasing' => 122,
- 'experimental::win32_perlio' => 124,
- 'locale' => 126,
- 'missing' => 128,
- 'redundant' => 130,
+ 'experimental::const_attr' => 112,
+ 'experimental::re_strict' => 114,
+ 'experimental::refaliasing' => 116,
+ 'locale' => 118,
+ 'missing' => 120,
+ 'redundant' => 122,
# Warnings Categories added in Perl 5.025
- 'experimental::declared_refs' => 132,
+ 'experimental::declared_refs' => 124,
+
+ # Warnings Categories added in Perl 5.025011
+ 'deprecated::dot_in_inc' => 126,
# Warnings Categories added in Perl 5.027
- 'experimental::alpha_assertions' => 134,
- 'experimental::script_run' => 136,
- 'shadow' => 138,
+ 'shadow' => 128,
# Warnings Categories added in Perl 5.029
- 'experimental::private_use' => 140,
- 'experimental::uniprop_wildcards' => 142,
- 'experimental::vlb' => 144,
-
- # Warnings Categories added in Perl 5.031
- 'experimental::isa' => 146,
+ 'experimental::private_use' => 130,
+ 'experimental::uniprop_wildcards' => 132,
+ 'experimental::vlb' => 134,
# Warnings Categories added in Perl 5.033
- 'experimental::try' => 148,
+ 'experimental::try' => 136,
+
+ # Warnings Categories added in Perl 5.035
+ 'experimental::args_array_with_signatures'=> 138,
+ 'experimental::builtin' => 140,
+ 'experimental::defer' => 142,
+ 'experimental::extra_paired_delimiters'=> 144,
+ 'experimental::for_list' => 146,
+ 'scalar' => 148,
+
+ # Warnings Categories added in Perl 5.035009
+ 'deprecated::version_downgrade' => 150,
+
+ # Warnings Categories added in Perl 5.03501
+ 'deprecated::delimiter_will_be_paired'=> 152,
+
+ # Warnings Categories added in Perl 5.037
+ 'experimental::class' => 154,
+
+ # Warnings Categories added in Perl 5.037009
+ 'deprecated::apostrophe_as_package_separator'=> 156,
+
+ # Warnings Categories added in Perl 5.03701
+ 'deprecated::smartmatch' => 158,
);
our %Bits = (
- 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55", # [0..75]
- 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29]
- 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30]
- 'closed' => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
- 'closure' => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
- 'debugging' => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [22]
- 'deprecated' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
- 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31]
- 'exec' => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
- 'exiting' => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
- 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x55\x51\x15\x50\x51\x15", # [51..56,58..62,66..68,70..74]
- 'experimental::alpha_assertions' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [67]
- 'experimental::bitwise' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [58]
- 'experimental::const_attr' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [59]
- 'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [66]
- 'experimental::isa' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [73]
- 'experimental::lexical_subs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [52]
- 'experimental::postderef' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00", # [55]
- 'experimental::private_use' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [70]
- 'experimental::re_strict' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [60]
- 'experimental::refaliasing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [61]
- 'experimental::regex_sets' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [53]
- 'experimental::script_run' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [68]
- 'experimental::signatures' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [56]
- 'experimental::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [54]
- 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [74]
- 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [71]
- 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [72]
- 'experimental::win32_perlio' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [62]
- 'glob' => "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
- 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [47]
- 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [46]
- 'inplace' => "\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [23]
- 'internal' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [24]
- 'io' => "\x00\x54\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [5..11,57]
- 'layer' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
- 'locale' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [63]
- 'malloc' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [25]
- 'misc' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
- 'missing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00", # [64]
- 'newline' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
- 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00", # [48]
- 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00", # [49]
- 'numeric' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
- 'once' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
- 'overflow' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
- 'pack' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16]
- 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [32]
- 'pipe' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
- 'portable' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17]
- 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [33]
- 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [34]
- 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [35]
- 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [36]
- 'recursion' => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18]
- 'redefine' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19]
- 'redundant' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [65]
- 'regexp' => "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [20]
- 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [37]
- 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [38]
- 'severe' => "\x00\x00\x00\x00\x00\x54\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [21..25]
- 'shadow' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [69]
- 'signal' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [26]
- 'substr' => "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [27]
- 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [50]
- 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\x55\x55\x15\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [28..38,47]
- 'syscalls' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [57]
- 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [39]
- 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", # [40]
- 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [41]
- 'unopened' => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
- 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [42]
- 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [43]
- 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x15\x00\x00\x00\x00\x00\x00", # [44,48..50]
- 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [45]
+ 'all' => "\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55\x55", # [0..79]
+ 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29]
+ 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30]
+ 'closed' => "\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
+ 'closure' => "\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
+ 'debugging' => "\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [22]
+ 'deprecated' => "\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00\x00\x40\x00\x00\x40\x51", # [2,48,49,63,75,76,78,79]
+ 'deprecated::apostrophe_as_package_separator'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10", # [78]
+ 'deprecated::delimiter_will_be_paired'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01", # [76]
+ 'deprecated::dot_in_inc' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00", # [63]
+ 'deprecated::goto_construct' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00", # [48]
+ 'deprecated::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40", # [79]
+ 'deprecated::unicode_property_name' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00", # [49]
+ 'deprecated::version_downgrade' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00", # [75]
+ 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31]
+ 'exec' => "\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
+ 'exiting' => "\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
+ 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x15\x10\x54\x55\x05\x04", # [53,54,56..58,62,65..73,77]
+ 'experimental::args_array_with_signatures'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00", # [69]
+ 'experimental::builtin' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00", # [70]
+ 'experimental::class' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04", # [77]
+ 'experimental::const_attr' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00", # [56]
+ 'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00", # [62]
+ 'experimental::defer' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00", # [71]
+ 'experimental::extra_paired_delimiters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00", # [72]
+ 'experimental::for_list' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00", # [73]
+ 'experimental::private_use' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00", # [65]
+ 'experimental::re_strict' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00", # [57]
+ 'experimental::refaliasing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00", # [58]
+ 'experimental::regex_sets' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00", # [54]
+ 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00", # [68]
+ 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00", # [66]
+ 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00", # [67]
+ 'glob' => "\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
+ 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [47]
+ 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00", # [46]
+ 'inplace' => "\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [23]
+ 'internal' => "\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [24]
+ 'io' => "\x00\x54\x55\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [5..11,55]
+ 'layer' => "\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
+ 'locale' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00", # [59]
+ 'malloc' => "\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [25]
+ 'misc' => "\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
+ 'missing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00", # [60]
+ 'newline' => "\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
+ 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00", # [50]
+ 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00", # [51]
+ 'numeric' => "\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
+ 'once' => "\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
+ 'overflow' => "\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
+ 'pack' => "\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16]
+ 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [32]
+ 'pipe' => "\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
+ 'portable' => "\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17]
+ 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [33]
+ 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [34]
+ 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [35]
+ 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [36]
+ 'recursion' => "\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18]
+ 'redefine' => "\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19]
+ 'redundant' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00", # [61]
+ 'regexp' => "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [20]
+ 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [37]
+ 'scalar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00", # [74]
+ 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [38]
+ 'severe' => "\x00\x00\x00\x00\x00\x54\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [21..25]
+ 'shadow' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00", # [64]
+ 'signal' => "\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [26]
+ 'substr' => "\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [27]
+ 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00", # [52]
+ 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\x55\x55\x15\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00", # [28..38,47]
+ 'syscalls' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00", # [55]
+ 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [39]
+ 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [40]
+ 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [41]
+ 'unopened' => "\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
+ 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [42]
+ 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [43]
+ 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x50\x01\x00\x00\x00\x00\x00\x00", # [44,50..52]
+ 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00", # [45]
);
our %DeadBits = (
- 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", # [0..75]
- 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29]
- 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30]
- 'closed' => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
- 'closure' => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
- 'debugging' => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [22]
- 'deprecated' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [2]
- 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31]
- 'exec' => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
- 'exiting' => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
- 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\xaa\xa2\x2a\xa0\xa2\x2a", # [51..56,58..62,66..68,70..74]
- 'experimental::alpha_assertions' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [67]
- 'experimental::bitwise' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [58]
- 'experimental::const_attr' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [59]
- 'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [66]
- 'experimental::isa' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [73]
- 'experimental::lexical_subs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [52]
- 'experimental::postderef' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00", # [55]
- 'experimental::private_use' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [70]
- 'experimental::re_strict' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [60]
- 'experimental::refaliasing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [61]
- 'experimental::regex_sets' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [53]
- 'experimental::script_run' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [68]
- 'experimental::signatures' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [56]
- 'experimental::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [54]
- 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [74]
- 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [71]
- 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [72]
- 'experimental::win32_perlio' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [62]
- 'glob' => "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
- 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [47]
- 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [46]
- 'inplace' => "\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [23]
- 'internal' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [24]
- 'io' => "\x00\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [5..11,57]
- 'layer' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
- 'locale' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [63]
- 'malloc' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [25]
- 'misc' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
- 'missing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00", # [64]
- 'newline' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
- 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00", # [48]
- 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00", # [49]
- 'numeric' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
- 'once' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
- 'overflow' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
- 'pack' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16]
- 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [32]
- 'pipe' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
- 'portable' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17]
- 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [33]
- 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [34]
- 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [35]
- 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [36]
- 'recursion' => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18]
- 'redefine' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19]
- 'redundant' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [65]
- 'regexp' => "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [20]
- 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [37]
- 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [38]
- 'severe' => "\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [21..25]
- 'shadow' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [69]
- 'signal' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [26]
- 'substr' => "\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [27]
- 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [50]
- 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\xaa\xaa\x2a\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [28..38,47]
- 'syscalls' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [57]
- 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [39]
- 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00", # [40]
- 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [41]
- 'unopened' => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
- 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [42]
- 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [43]
- 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x2a\x00\x00\x00\x00\x00\x00", # [44,48..50]
- 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [45]
+ 'all' => "\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa\xaa", # [0..79]
+ 'ambiguous' => "\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [29]
+ 'bareword' => "\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [30]
+ 'closed' => "\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [6]
+ 'closure' => "\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [1]
+ 'debugging' => "\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [22]
+ 'deprecated' => "\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\x00\x80\x00\x00\x80\xa2", # [2,48,49,63,75,76,78,79]
+ 'deprecated::apostrophe_as_package_separator'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20", # [78]
+ 'deprecated::delimiter_will_be_paired'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02", # [76]
+ 'deprecated::dot_in_inc' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00", # [63]
+ 'deprecated::goto_construct' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00", # [48]
+ 'deprecated::smartmatch' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80", # [79]
+ 'deprecated::unicode_property_name' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00", # [49]
+ 'deprecated::version_downgrade' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00", # [75]
+ 'digit' => "\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [31]
+ 'exec' => "\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [7]
+ 'exiting' => "\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [3]
+ 'experimental' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x28\x2a\x20\xa8\xaa\x0a\x08", # [53,54,56..58,62,65..73,77]
+ 'experimental::args_array_with_signatures'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00", # [69]
+ 'experimental::builtin' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00", # [70]
+ 'experimental::class' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08", # [77]
+ 'experimental::const_attr' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00", # [56]
+ 'experimental::declared_refs' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00", # [62]
+ 'experimental::defer' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00", # [71]
+ 'experimental::extra_paired_delimiters'=> "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00", # [72]
+ 'experimental::for_list' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00", # [73]
+ 'experimental::private_use' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00", # [65]
+ 'experimental::re_strict' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00", # [57]
+ 'experimental::refaliasing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00", # [58]
+ 'experimental::regex_sets' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00", # [54]
+ 'experimental::try' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00", # [68]
+ 'experimental::uniprop_wildcards' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00", # [66]
+ 'experimental::vlb' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00", # [67]
+ 'glob' => "\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [4]
+ 'illegalproto' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [47]
+ 'imprecision' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00", # [46]
+ 'inplace' => "\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [23]
+ 'internal' => "\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [24]
+ 'io' => "\x00\xa8\xaa\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [5..11,55]
+ 'layer' => "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [8]
+ 'locale' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00", # [59]
+ 'malloc' => "\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [25]
+ 'misc' => "\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [12]
+ 'missing' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00", # [60]
+ 'newline' => "\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [9]
+ 'non_unicode' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00", # [50]
+ 'nonchar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00", # [51]
+ 'numeric' => "\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [13]
+ 'once' => "\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [14]
+ 'overflow' => "\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [15]
+ 'pack' => "\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [16]
+ 'parenthesis' => "\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [32]
+ 'pipe' => "\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [10]
+ 'portable' => "\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [17]
+ 'precedence' => "\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [33]
+ 'printf' => "\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [34]
+ 'prototype' => "\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [35]
+ 'qw' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [36]
+ 'recursion' => "\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [18]
+ 'redefine' => "\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [19]
+ 'redundant' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00", # [61]
+ 'regexp' => "\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [20]
+ 'reserved' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [37]
+ 'scalar' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00", # [74]
+ 'semicolon' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [38]
+ 'severe' => "\x00\x00\x00\x00\x00\xa8\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [21..25]
+ 'shadow' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00", # [64]
+ 'signal' => "\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [26]
+ 'substr' => "\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [27]
+ 'surrogate' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00", # [52]
+ 'syntax' => "\x00\x00\x00\x00\x00\x00\x00\xaa\xaa\x2a\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00", # [28..38,47]
+ 'syscalls' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00", # [55]
+ 'taint' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [39]
+ 'threads' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [40]
+ 'uninitialized' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [41]
+ 'unopened' => "\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [11]
+ 'unpack' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [42]
+ 'untie' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\x00\x00\x00", # [43]
+ 'utf8' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\xa0\x02\x00\x00\x00\x00\x00\x00", # [44,50..52]
+ 'void' => "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x08\x00\x00\x00\x00\x00\x00\x00\x00", # [45]
+);
+
+our %NoOp = (
+ 'experimental::alpha_assertions' => 1,
+ 'experimental::bitwise' => 1,
+ 'experimental::isa' => 1,
+ 'experimental::lexical_subs' => 1,
+ 'experimental::postderef' => 1,
+ 'experimental::script_run' => 1,
+ 'experimental::signatures' => 1,
+ 'experimental::smartmatch' => 1,
);
# These are used by various things, including our own tests
-our $NONE = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
-our $DEFAULT = "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x00\x55\x51\x55\x50\x51\x15"; # [2,4,22,23,25,52..56,58..63,66..68,70..74]
-our $LAST_BIT = 150 ;
-our $BYTES = 19 ;
+our $NONE = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
+our $DEFAULT = "\x10\x01\x00\x00\x00\x50\x04\x00\x00\x00\x00\x00\x05\x00\x55\x50\x54\x55\x45\x55"; # [2,4,22,23,25,48,49,56..59,62,63,65..73,75..79]
+our $LAST_BIT = 160 ;
+our $BYTES = 20 ;
sub Croaker
{
@@ -311,6 +351,7 @@ sub _bits {
$mask = _expand_bits($mask);
foreach my $word ( @_ ) {
+ next if $NoOp{$word};
if ($word eq 'FATAL') {
$fatal = 1;
$no_fatal = 0;
@@ -372,6 +413,7 @@ sub unimport
$mask = _expand_bits($mask);
foreach my $word ( @_ ) {
+ next if $NoOp{$word};
if ($word eq 'FATAL') {
next;
}
@@ -432,7 +474,7 @@ sub __chk
unless defined $offset;
}
else {
- $category = (caller(1))[0] ;
+ $category = caller(1);
$offset = $Offsets{$category};
Croaker("package '$category' not registered for warnings")
unless defined $offset ;
@@ -583,6 +625,9 @@ warnings - Perl pragma to control optional warnings
use warnings;
no warnings;
+ # Standard warnings are enabled by use v5.35 or above
+ use v5.35;
+
use warnings "all";
no warnings "uninitialized";
@@ -648,6 +693,9 @@ block has them disabled. In this case that means the assignment to the
scalar C<$z> will trip the C<"Scalar value @x[0] better written as $x[0]">
warning, but the assignment to the scalar C<$y> will not.
+All warnings are enabled automatically within the scope of
+a C<L<use v5.35|perlfunc/use VERSION>> (or higher) declaration.
+
=head2 Default Warnings and Optional Warnings
Before the introduction of lexical warnings, Perl had two classes of
@@ -709,6 +757,13 @@ which is equivalent to:
no warnings 'experimental';
use warnings 'experimental::somefeature';
+As experimental features become regular features of Perl,
+the corresponding warnings are not printed anymore.
+They also stop being listed in the L</Category Hierarchy> below.
+
+It is still possible to request turning on or off these warnings,
+but doing so has no effect.
+
=head2 What's wrong with B<-w> and C<$^W>
Although very useful, the big problem with using B<-w> on the command
@@ -859,25 +914,41 @@ The current hierarchy is:
|
+- closure
|
- +- deprecated
+ +- deprecated ----+
+ | |
+ | +- deprecated::apostrophe_as_package_separator
+ | |
+ | +- deprecated::delimiter_will_be_paired
+ | |
+ | +- deprecated::dot_in_inc
+ | |
+ | +- deprecated::goto_construct
+ | |
+ | +- deprecated::smartmatch
+ | |
+ | +- deprecated::unicode_property_name
+ | |
+ | +- deprecated::version_downgrade
|
+- exiting
|
+- experimental --+
| |
- | +- experimental::alpha_assertions
+ | +- experimental::args_array_with_signatures
+ | |
+ | +- experimental::builtin
| |
- | +- experimental::bitwise
+ | +- experimental::class
| |
| +- experimental::const_attr
| |
| +- experimental::declared_refs
| |
- | +- experimental::isa
+ | +- experimental::defer
| |
- | +- experimental::lexical_subs
+ | +- experimental::extra_paired_delimiters
| |
- | +- experimental::postderef
+ | +- experimental::for_list
| |
| +- experimental::private_use
| |
@@ -887,19 +958,11 @@ The current hierarchy is:
| |
| +- experimental::regex_sets
| |
- | +- experimental::script_run
- | |
- | +- experimental::signatures
- | |
- | +- experimental::smartmatch
- | |
| +- experimental::try
| |
| +- experimental::uniprop_wildcards
| |
| +- experimental::vlb
- | |
- | +- experimental::win32_perlio
|
+- glob
|
@@ -945,6 +1008,8 @@ The current hierarchy is:
|
+- regexp
|
+ +- scalar
+ |
+- severe --------+
| |
| +- debugging
@@ -1128,7 +1193,7 @@ use:
use warnings 'FATAL'; # short form of "use warnings FATAL => 'all';"
However, you should still heed the guidance earlier in this section against
-using C<use warnings FATAL => 'all';>.
+using C<< use warnings FATAL => 'all'; >>.
If you want your program to be compatible with versions of Perl before
5.20, you must use C<< use warnings FATAL => 'all'; >> instead. (In
@@ -1427,4 +1492,4 @@ See also L<perlmodlib/Pragmatic Modules> and L<perldiag>.
=cut
-# ex: set ro:
+# ex: set ro ft=perl:
diff --git a/Master/tlpkg/tlperl/lib/warnings/register.pm b/Master/tlpkg/tlperl/lib/warnings/register.pm
index 0adf104af7e..8bcb7a233e0 100644
--- a/Master/tlpkg/tlperl/lib/warnings/register.pm
+++ b/Master/tlpkg/tlperl/lib/warnings/register.pm
@@ -1,6 +1,5 @@
-package warnings::register;
+package warnings::register 1.05;
-our $VERSION = '1.04';
require warnings;
# left here as cruft in case other users were using this undocumented routine
@@ -19,7 +18,7 @@ sub import
shift;
my @categories = @_;
- my $package = (caller(0))[0];
+ my $package = caller;
warnings::register_categories($package);
warnings::register_categories($package . "::$_") for @categories;
diff --git a/Master/tlpkg/tlperl/site/lib/App/Prove.pm b/Master/tlpkg/tlperl/site/lib/App/Prove.pm
new file mode 100755
index 00000000000..a7230ddea73
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/App/Prove.pm
@@ -0,0 +1,817 @@
+package App::Prove;
+
+use strict;
+use warnings;
+
+use TAP::Harness::Env;
+use Text::ParseWords qw(shellwords);
+use File::Spec;
+use Getopt::Long;
+use App::Prove::State;
+use Carp;
+
+use base 'TAP::Object';
+
+=head1 NAME
+
+App::Prove - Implements the C<prove> command.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+L<Test::Harness> provides a command, C<prove>, which runs a TAP based
+test suite and prints a report. The C<prove> command is a minimal
+wrapper around an instance of this module.
+
+=head1 SYNOPSIS
+
+ use App::Prove;
+
+ my $app = App::Prove->new;
+ $app->process_args(@ARGV);
+ $app->run;
+
+=cut
+
+use constant IS_WIN32 => ( $^O =~ /^(MS)?Win32$/ );
+use constant IS_VMS => $^O eq 'VMS';
+use constant IS_UNIXY => !( IS_VMS || IS_WIN32 );
+
+use constant STATE_FILE => IS_UNIXY ? '.prove' : '_prove';
+use constant RC_FILE => IS_UNIXY ? '.proverc' : '_proverc';
+
+use constant PLUGINS => 'App::Prove::Plugin';
+
+my @ATTR;
+
+BEGIN {
+ @ATTR = qw(
+ archive argv blib show_count color directives exec failures comments
+ formatter harness includes modules plugins jobs lib merge parse quiet
+ really_quiet recurse backwards shuffle taint_fail taint_warn timer
+ verbose warnings_fail warnings_warn show_help show_man show_version
+ state_class test_args state dry extensions ignore_exit rules state_manager
+ normalize sources tapversion trap
+ statefile
+ );
+ __PACKAGE__->mk_methods(@ATTR);
+}
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+Create a new C<App::Prove>. Optionally a hash ref of attribute
+initializers may be passed.
+
+=cut
+
+# new() implementation supplied by TAP::Object
+
+sub _initialize {
+ my $self = shift;
+ my $args = shift || {};
+
+ my @is_array = qw(
+ argv rc_opts includes modules state plugins rules sources
+ );
+
+ # setup defaults:
+ for my $key (@is_array) {
+ $self->{$key} = [];
+ }
+
+ for my $attr (@ATTR) {
+ if ( exists $args->{$attr} ) {
+
+ # TODO: Some validation here
+ $self->{$attr} = $args->{$attr};
+ }
+ }
+
+ $self->state_class('App::Prove::State');
+ return $self;
+}
+
+=head3 C<state_class>
+
+Getter/setter for the name of the class used for maintaining state. This
+class should either subclass from C<App::Prove::State> or provide an identical
+interface.
+
+=head3 C<state_manager>
+
+Getter/setter for the instance of the C<state_class>.
+
+=cut
+
+=head3 C<add_rc_file>
+
+ $prove->add_rc_file('myproj/.proverc');
+
+Called before C<process_args> to prepend the contents of an rc file to
+the options.
+
+=cut
+
+sub add_rc_file {
+ my ( $self, $rc_file ) = @_;
+
+ local *RC;
+ open RC, "<$rc_file" or croak "Can't read $rc_file ($!)";
+ while ( defined( my $line = <RC> ) ) {
+ push @{ $self->{rc_opts} },
+ grep { defined and not /^#/ }
+ $line =~ m{ ' ([^']*) ' | " ([^"]*) " | (\#.*) | (\S+) }xg;
+ }
+ close RC;
+}
+
+=head3 C<process_args>
+
+ $prove->process_args(@args);
+
+Processes the command-line arguments. Attributes will be set
+appropriately. Any filenames may be found in the C<argv> attribute.
+
+Dies on invalid arguments.
+
+=cut
+
+sub process_args {
+ my $self = shift;
+
+ my @rc = RC_FILE;
+ unshift @rc, glob '~/' . RC_FILE if IS_UNIXY;
+
+ # Preprocess meta-args.
+ my @args;
+ while ( defined( my $arg = shift ) ) {
+ if ( $arg eq '--norc' ) {
+ @rc = ();
+ }
+ elsif ( $arg eq '--rc' ) {
+ defined( my $rc = shift )
+ or croak "Missing argument to --rc";
+ push @rc, $rc;
+ }
+ elsif ( $arg =~ m{^--rc=(.+)$} ) {
+ push @rc, $1;
+ }
+ else {
+ push @args, $arg;
+ }
+ }
+
+ # Everything after the arisdottle '::' gets passed as args to
+ # test programs.
+ if ( defined( my $stop_at = _first_pos( '::', @args ) ) ) {
+ my @test_args = splice @args, $stop_at;
+ shift @test_args;
+ $self->{test_args} = \@test_args;
+ }
+
+ # Grab options from RC files
+ $self->add_rc_file($_) for grep -f, @rc;
+ unshift @args, @{ $self->{rc_opts} };
+
+ if ( my @bad = map {"-$_"} grep {/^-(man|help)$/} @args ) {
+ die "Long options should be written with two dashes: ",
+ join( ', ', @bad ), "\n";
+ }
+
+ # And finally...
+
+ {
+ local @ARGV = @args;
+ Getopt::Long::Configure(qw(no_ignore_case bundling pass_through));
+
+ # Don't add coderefs to GetOptions
+ GetOptions(
+ 'v|verbose' => \$self->{verbose},
+ 'f|failures' => \$self->{failures},
+ 'o|comments' => \$self->{comments},
+ 'l|lib' => \$self->{lib},
+ 'b|blib' => \$self->{blib},
+ 's|shuffle' => \$self->{shuffle},
+ 'color!' => \$self->{color},
+ 'colour!' => \$self->{color},
+ 'count!' => \$self->{show_count},
+ 'c' => \$self->{color},
+ 'D|dry' => \$self->{dry},
+ 'ext=s@' => sub {
+ my ( $opt, $val ) = @_;
+
+ # Workaround for Getopt::Long 2.25 handling of
+ # multivalue options
+ push @{ $self->{extensions} ||= [] }, $val;
+ },
+ 'harness=s' => \$self->{harness},
+ 'ignore-exit' => \$self->{ignore_exit},
+ 'source=s@' => $self->{sources},
+ 'formatter=s' => \$self->{formatter},
+ 'r|recurse' => \$self->{recurse},
+ 'reverse' => \$self->{backwards},
+ 'p|parse' => \$self->{parse},
+ 'q|quiet' => \$self->{quiet},
+ 'Q|QUIET' => \$self->{really_quiet},
+ 'e|exec=s' => \$self->{exec},
+ 'm|merge' => \$self->{merge},
+ 'I=s@' => $self->{includes},
+ 'M=s@' => $self->{modules},
+ 'P=s@' => $self->{plugins},
+ 'state=s@' => $self->{state},
+ 'statefile=s' => \$self->{statefile},
+ 'directives' => \$self->{directives},
+ 'h|help|?' => \$self->{show_help},
+ 'H|man' => \$self->{show_man},
+ 'V|version' => \$self->{show_version},
+ 'a|archive=s' => \$self->{archive},
+ 'j|jobs=i' => \$self->{jobs},
+ 'timer' => \$self->{timer},
+ 'T' => \$self->{taint_fail},
+ 't' => \$self->{taint_warn},
+ 'W' => \$self->{warnings_fail},
+ 'w' => \$self->{warnings_warn},
+ 'normalize' => \$self->{normalize},
+ 'rules=s@' => $self->{rules},
+ 'tapversion=s' => \$self->{tapversion},
+ 'trap' => \$self->{trap},
+ ) or croak('Unable to continue');
+
+ # Stash the remainder of argv for later
+ $self->{argv} = [@ARGV];
+ }
+
+ return;
+}
+
+sub _first_pos {
+ my $want = shift;
+ for ( 0 .. $#_ ) {
+ return $_ if $_[$_] eq $want;
+ }
+ return;
+}
+
+sub _help {
+ my ( $self, $verbosity ) = @_;
+
+ eval('use Pod::Usage 1.12 ()');
+ if ( my $err = $@ ) {
+ die 'Please install Pod::Usage for the --help option '
+ . '(or try `perldoc prove`.)'
+ . "\n ($@)";
+ }
+
+ Pod::Usage::pod2usage( { -verbose => $verbosity } );
+
+ return;
+}
+
+sub _color_default {
+ my $self = shift;
+
+ return -t STDOUT && !$ENV{HARNESS_NOTTY};
+}
+
+sub _get_args {
+ my $self = shift;
+
+ my %args;
+
+ $args{trap} = 1 if $self->trap;
+
+ if ( defined $self->color ? $self->color : $self->_color_default ) {
+ $args{color} = 1;
+ }
+ if ( !defined $self->show_count ) {
+ $args{show_count} = 1;
+ }
+ else {
+ $args{show_count} = $self->show_count;
+ }
+
+ if ( $self->archive ) {
+ $self->require_harness( archive => 'TAP::Harness::Archive' );
+ $args{archive} = $self->archive;
+ }
+
+ if ( my $jobs = $self->jobs ) {
+ $args{jobs} = $jobs;
+ }
+
+ if ( my $harness_opt = $self->harness ) {
+ $self->require_harness( harness => $harness_opt );
+ }
+
+ if ( my $formatter = $self->formatter ) {
+ $args{formatter_class} = $formatter;
+ }
+
+ for my $handler ( @{ $self->sources } ) {
+ my ( $name, $config ) = $self->_parse_source($handler);
+ $args{sources}->{$name} = $config;
+ }
+
+ if ( $self->ignore_exit ) {
+ $args{ignore_exit} = 1;
+ }
+
+ if ( $self->taint_fail && $self->taint_warn ) {
+ die '-t and -T are mutually exclusive';
+ }
+
+ if ( $self->warnings_fail && $self->warnings_warn ) {
+ die '-w and -W are mutually exclusive';
+ }
+
+ for my $a (qw( lib switches )) {
+ my $method = "_get_$a";
+ my $val = $self->$method();
+ $args{$a} = $val if defined $val;
+ }
+
+ # Handle verbose, quiet, really_quiet flags
+ my %verb_map = ( verbose => 1, quiet => -1, really_quiet => -2, );
+
+ my @verb_adj = map { $self->$_() ? $verb_map{$_} : () }
+ keys %verb_map;
+
+ die "Only one of verbose, quiet or really_quiet should be specified\n"
+ if @verb_adj > 1;
+
+ $args{verbosity} = shift @verb_adj if @verb_adj;
+
+ for my $a (qw( merge failures comments timer directives normalize )) {
+ $args{$a} = 1 if $self->$a();
+ }
+
+ $args{errors} = 1 if $self->parse;
+
+ # defined but zero-length exec runs test files as binaries
+ $args{exec} = [ split( /\s+/, $self->exec ) ]
+ if ( defined( $self->exec ) );
+
+ $args{version} = $self->tapversion if defined( $self->tapversion );
+
+ if ( defined( my $test_args = $self->test_args ) ) {
+ $args{test_args} = $test_args;
+ }
+
+ if ( @{ $self->rules } ) {
+ my @rules;
+ for ( @{ $self->rules } ) {
+ if (/^par=(.*)/) {
+ push @rules, $1;
+ }
+ elsif (/^seq=(.*)/) {
+ push @rules, { seq => $1 };
+ }
+ }
+ $args{rules} = { par => [@rules] };
+ }
+ $args{harness_class} = $self->{harness_class} if $self->{harness_class};
+
+ return \%args;
+}
+
+sub _find_module {
+ my ( $self, $class, @search ) = @_;
+
+ croak "Bad module name $class"
+ unless $class =~ /^ \w+ (?: :: \w+ ) *$/x;
+
+ for my $pfx (@search) {
+ my $name = join( '::', $pfx, $class );
+ eval "require $name";
+ return $name unless $@;
+ }
+
+ eval "require $class";
+ return $class unless $@;
+ return;
+}
+
+sub _load_extension {
+ my ( $self, $name, @search ) = @_;
+
+ my @args = ();
+ if ( $name =~ /^(.*?)=(.*)/ ) {
+ $name = $1;
+ @args = split( /,/, $2 );
+ }
+
+ if ( my $class = $self->_find_module( $name, @search ) ) {
+ if ( $class->can('load') ) {
+ $class->load( { app_prove => $self, args => [@args] } );
+ }
+ }
+ else {
+ croak "Can't load module $name";
+ }
+}
+
+sub _load_extensions {
+ my ( $self, $ext, @search ) = @_;
+ $self->_load_extension( $_, @search ) for @$ext;
+}
+
+sub _parse_source {
+ my ( $self, $handler ) = @_;
+
+ # Load any options.
+ ( my $opt_name = lc $handler ) =~ s/::/-/g;
+ local @ARGV = @{ $self->{argv} };
+ my %config;
+ Getopt::Long::GetOptions(
+ "$opt_name-option=s%" => sub {
+ my ( $name, $k, $v ) = @_;
+ if ( $v =~ /(?<!\\)=/ ) {
+
+ # It's a hash option.
+ croak "Option $name must be consistently used as a hash"
+ if exists $config{$k} && ref $config{$k} ne 'HASH';
+ $config{$k} ||= {};
+ my ( $hk, $hv ) = split /(?<!\\)=/, $v, 2;
+ $config{$k}{$hk} = $hv;
+ }
+ else {
+ $v =~ s/\\=/=/g;
+ if ( exists $config{$k} ) {
+ $config{$k} = [ $config{$k} ]
+ unless ref $config{$k} eq 'ARRAY';
+ push @{ $config{$k} } => $v;
+ }
+ else {
+ $config{$k} = $v;
+ }
+ }
+ }
+ );
+ $self->{argv} = \@ARGV;
+ return ( $handler, \%config );
+}
+
+=head3 C<run>
+
+Perform whatever actions the command line args specified. The C<prove>
+command line tool consists of the following code:
+
+ use App::Prove;
+
+ my $app = App::Prove->new;
+ $app->process_args(@ARGV);
+ exit( $app->run ? 0 : 1 ); # if you need the exit code
+
+=cut
+
+sub run {
+ my $self = shift;
+
+ unless ( $self->state_manager ) {
+ $self->state_manager(
+ $self->state_class->new( { store => $self->statefile || STATE_FILE } ) );
+ }
+
+ if ( $self->show_help ) {
+ $self->_help(1);
+ }
+ elsif ( $self->show_man ) {
+ $self->_help(2);
+ }
+ elsif ( $self->show_version ) {
+ $self->print_version;
+ }
+ elsif ( $self->dry ) {
+ print "$_\n" for $self->_get_tests;
+ }
+ else {
+
+ $self->_load_extensions( $self->modules );
+ $self->_load_extensions( $self->plugins, PLUGINS );
+
+ local $ENV{TEST_VERBOSE} = 1 if $self->verbose;
+
+ return $self->_runtests( $self->_get_args, $self->_get_tests );
+ }
+
+ return 1;
+}
+
+sub _get_tests {
+ my $self = shift;
+
+ my $state = $self->state_manager;
+ my $ext = $self->extensions;
+ $state->extensions($ext) if defined $ext;
+ if ( defined( my $state_switch = $self->state ) ) {
+ $state->apply_switch(@$state_switch);
+ }
+
+ my @tests = $state->get_tests( $self->recurse, @{ $self->argv } );
+
+ $self->_shuffle(@tests) if $self->shuffle;
+ @tests = reverse @tests if $self->backwards;
+
+ return @tests;
+}
+
+sub _runtests {
+ my ( $self, $args, @tests ) = @_;
+ my $harness = TAP::Harness::Env->create($args);
+
+ my $state = $self->state_manager;
+
+ $harness->callback(
+ after_test => sub {
+ $state->observe_test(@_);
+ }
+ );
+
+ $harness->callback(
+ after_runtests => sub {
+ $state->commit(@_);
+ }
+ );
+
+ my $aggregator = $harness->runtests(@tests);
+
+ return !$aggregator->has_errors;
+}
+
+sub _get_switches {
+ my $self = shift;
+ my @switches;
+
+ # notes that -T or -t must be at the front of the switches!
+ if ( $self->taint_fail ) {
+ push @switches, '-T';
+ }
+ elsif ( $self->taint_warn ) {
+ push @switches, '-t';
+ }
+ if ( $self->warnings_fail ) {
+ push @switches, '-W';
+ }
+ elsif ( $self->warnings_warn ) {
+ push @switches, '-w';
+ }
+
+ return @switches ? \@switches : ();
+}
+
+sub _get_lib {
+ my $self = shift;
+ my @libs;
+ if ( $self->lib ) {
+ push @libs, 'lib';
+ }
+ if ( $self->blib ) {
+ push @libs, 'blib/lib', 'blib/arch';
+ }
+ if ( @{ $self->includes } ) {
+ push @libs, @{ $self->includes };
+ }
+
+ #24926
+ @libs = map { File::Spec->rel2abs($_) } @libs;
+
+ # Huh?
+ return @libs ? \@libs : ();
+}
+
+sub _shuffle {
+ my $self = shift;
+
+ # Fisher-Yates shuffle
+ my $i = @_;
+ while ($i) {
+ my $j = rand $i--;
+ @_[ $i, $j ] = @_[ $j, $i ];
+ }
+ return;
+}
+
+=head3 C<require_harness>
+
+Load a harness replacement class.
+
+ $prove->require_harness($for => $class_name);
+
+=cut
+
+sub require_harness {
+ my ( $self, $for, $class ) = @_;
+
+ my ($class_name) = $class =~ /^(\w+(?:::\w+)*)/;
+
+ # Emulate Perl's -MModule=arg1,arg2 behaviour
+ $class =~ s!^(\w+(?:::\w+)*)=(.*)$!$1 split(/,/,q{$2})!;
+
+ eval("use $class;");
+ die "$class_name is required to use the --$for feature: $@" if $@;
+
+ $self->{harness_class} = $class_name;
+
+ return;
+}
+
+=head3 C<print_version>
+
+Display the version numbers of the loaded L<TAP::Harness> and the
+current Perl.
+
+=cut
+
+sub print_version {
+ my $self = shift;
+ require TAP::Harness;
+ printf(
+ "TAP::Harness v%s and Perl v%vd\n",
+ $TAP::Harness::VERSION, $^V
+ );
+
+ return;
+}
+
+1;
+
+# vim:ts=4:sw=4:et:sta
+
+__END__
+
+=head2 Attributes
+
+After command line parsing the following attributes reflect the values
+of the corresponding command line switches. They may be altered before
+calling C<run>.
+
+=over
+
+=item C<archive>
+
+=item C<argv>
+
+=item C<backwards>
+
+=item C<blib>
+
+=item C<color>
+
+=item C<directives>
+
+=item C<dry>
+
+=item C<exec>
+
+=item C<extensions>
+
+=item C<failures>
+
+=item C<comments>
+
+=item C<formatter>
+
+=item C<harness>
+
+=item C<ignore_exit>
+
+=item C<includes>
+
+=item C<jobs>
+
+=item C<lib>
+
+=item C<merge>
+
+=item C<modules>
+
+=item C<parse>
+
+=item C<plugins>
+
+=item C<quiet>
+
+=item C<really_quiet>
+
+=item C<recurse>
+
+=item C<rules>
+
+=item C<show_count>
+
+=item C<show_help>
+
+=item C<show_man>
+
+=item C<show_version>
+
+=item C<shuffle>
+
+=item C<state>
+
+=item C<state_class>
+
+=item C<taint_fail>
+
+=item C<taint_warn>
+
+=item C<test_args>
+
+=item C<timer>
+
+=item C<verbose>
+
+=item C<warnings_fail>
+
+=item C<warnings_warn>
+
+=item C<tapversion>
+
+=item C<trap>
+
+=back
+
+=head1 PLUGINS
+
+C<App::Prove> provides support for 3rd-party plugins. These are currently
+loaded at run-time, I<after> arguments have been parsed (so you can not
+change the way arguments are processed, sorry), typically with the
+C<< -PI<plugin> >> switch, eg:
+
+ prove -PMyPlugin
+
+This will search for a module named C<App::Prove::Plugin::MyPlugin>, or failing
+that, C<MyPlugin>. If the plugin can't be found, C<prove> will complain & exit.
+
+You can pass an argument to your plugin by appending an C<=> after the plugin
+name, eg C<-PMyPlugin=foo>. You can pass multiple arguments using commas:
+
+ prove -PMyPlugin=foo,bar,baz
+
+These are passed in to your plugin's C<load()> class method (if it has one),
+along with a reference to the C<App::Prove> object that is invoking your plugin:
+
+ sub load {
+ my ($class, $p) = @_;
+
+ my @args = @{ $p->{args} };
+ # @args will contain ( 'foo', 'bar', 'baz' )
+ $p->{app_prove}->do_something;
+ ...
+ }
+
+=head2 Sample Plugin
+
+Here's a sample plugin, for your reference:
+
+ package App::Prove::Plugin::Foo;
+
+ # Sample plugin, try running with:
+ # prove -PFoo=bar -r -j3
+ # prove -PFoo -Q
+ # prove -PFoo=bar,My::Formatter
+
+ use strict;
+ use warnings;
+
+ sub load {
+ my ($class, $p) = @_;
+ my @args = @{ $p->{args} };
+ my $app = $p->{app_prove};
+
+ print "loading plugin: $class, args: ", join(', ', @args ), "\n";
+
+ # turn on verbosity
+ $app->verbose( 1 );
+
+ # set the formatter?
+ $app->formatter( $args[1] ) if @args > 1;
+
+ # print some of App::Prove's state:
+ for my $attr (qw( jobs quiet really_quiet recurse verbose )) {
+ my $val = $app->$attr;
+ $val = 'undef' unless defined( $val );
+ print "$attr: $val\n";
+ }
+
+ return 1;
+ }
+
+ 1;
+
+=head1 SEE ALSO
+
+L<prove>, L<TAP::Harness>
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/App/Prove/State.pm b/Master/tlpkg/tlperl/site/lib/App/Prove/State.pm
new file mode 100755
index 00000000000..d4477e2b25b
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/App/Prove/State.pm
@@ -0,0 +1,548 @@
+package App::Prove::State;
+
+use strict;
+use warnings;
+
+use File::Find;
+use File::Spec;
+use Carp;
+
+use App::Prove::State::Result;
+use TAP::Parser::YAMLish::Reader ();
+use TAP::Parser::YAMLish::Writer ();
+use base 'TAP::Base';
+
+BEGIN {
+ __PACKAGE__->mk_methods('result_class');
+}
+
+use constant IS_WIN32 => ( $^O =~ /^(MS)?Win32$/ );
+use constant NEED_GLOB => IS_WIN32;
+
+=head1 NAME
+
+App::Prove::State - State storage for the C<prove> command.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+The C<prove> command supports a C<--state> option that instructs it to
+store persistent state across runs. This module implements that state
+and the operations that may be performed on it.
+
+=head1 SYNOPSIS
+
+ # Re-run failed tests
+ $ prove --state=failed,save -rbv
+
+=cut
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+Accepts a hashref with the following key/value pairs:
+
+=over 4
+
+=item * C<store>
+
+The filename of the data store holding the data that App::Prove::State reads.
+
+=item * C<extensions> (optional)
+
+The test name extensions. Defaults to C<.t>.
+
+=item * C<result_class> (optional)
+
+The name of the C<result_class>. Defaults to C<App::Prove::State::Result>.
+
+=back
+
+=cut
+
+# override TAP::Base::new:
+sub new {
+ my $class = shift;
+ my %args = %{ shift || {} };
+
+ my $self = bless {
+ select => [],
+ seq => 1,
+ store => delete $args{store},
+ extensions => ( delete $args{extensions} || ['.t'] ),
+ result_class =>
+ ( delete $args{result_class} || 'App::Prove::State::Result' ),
+ }, $class;
+
+ $self->{_} = $self->result_class->new(
+ { tests => {},
+ generation => 1,
+ }
+ );
+ my $store = $self->{store};
+ $self->load($store)
+ if defined $store && -f $store;
+
+ return $self;
+}
+
+=head2 C<result_class>
+
+Getter/setter for the name of the class used for tracking test results. This
+class should either subclass from C<App::Prove::State::Result> or provide an
+identical interface.
+
+=cut
+
+=head2 C<extensions>
+
+Get or set the list of extensions that files must have in order to be
+considered tests. Defaults to ['.t'].
+
+=cut
+
+sub extensions {
+ my $self = shift;
+ $self->{extensions} = shift if @_;
+ return $self->{extensions};
+}
+
+=head2 C<results>
+
+Get the results of the last test run. Returns a C<result_class()> instance.
+
+=cut
+
+sub results {
+ my $self = shift;
+ $self->{_} || $self->result_class->new;
+}
+
+=head2 C<commit>
+
+Save the test results. Should be called after all tests have run.
+
+=cut
+
+sub commit {
+ my $self = shift;
+ if ( $self->{should_save} ) {
+ $self->save;
+ }
+}
+
+=head2 Instance Methods
+
+=head3 C<apply_switch>
+
+ $self->apply_switch('failed,save');
+
+Apply a list of switch options to the state, updating the internal
+object state as a result. Nothing is returned.
+
+Diagnostics:
+ - "Illegal state option: %s"
+
+=over
+
+=item C<last>
+
+Run in the same order as last time
+
+=item C<failed>
+
+Run only the failed tests from last time
+
+=item C<passed>
+
+Run only the passed tests from last time
+
+=item C<all>
+
+Run all tests in normal order
+
+=item C<hot>
+
+Run the tests that most recently failed first
+
+=item C<todo>
+
+Run the tests ordered by number of todos.
+
+=item C<slow>
+
+Run the tests in slowest to fastest order.
+
+=item C<fast>
+
+Run test tests in fastest to slowest order.
+
+=item C<new>
+
+Run the tests in newest to oldest order.
+
+=item C<old>
+
+Run the tests in oldest to newest order.
+
+=item C<save>
+
+Save the state on exit.
+
+=back
+
+=cut
+
+sub apply_switch {
+ my $self = shift;
+ my @opts = @_;
+
+ my $last_gen = $self->results->generation - 1;
+ my $last_run_time = $self->results->last_run_time;
+ my $now = $self->get_time;
+
+ my @switches = map { split /,/ } @opts;
+
+ my %handler = (
+ last => sub {
+ $self->_select(
+ limit => shift,
+ where => sub { $_->generation >= $last_gen },
+ order => sub { $_->sequence }
+ );
+ },
+ failed => sub {
+ $self->_select(
+ limit => shift,
+ where => sub { $_->result != 0 },
+ order => sub { -$_->result }
+ );
+ },
+ passed => sub {
+ $self->_select(
+ limit => shift,
+ where => sub { $_->result == 0 }
+ );
+ },
+ all => sub {
+ $self->_select( limit => shift );
+ },
+ todo => sub {
+ $self->_select(
+ limit => shift,
+ where => sub { $_->num_todo != 0 },
+ order => sub { -$_->num_todo; }
+ );
+ },
+ hot => sub {
+ $self->_select(
+ limit => shift,
+ where => sub { defined $_->last_fail_time },
+ order => sub { $now - $_->last_fail_time }
+ );
+ },
+ slow => sub {
+ $self->_select(
+ limit => shift,
+ order => sub { -$_->elapsed }
+ );
+ },
+ fast => sub {
+ $self->_select(
+ limit => shift,
+ order => sub { $_->elapsed }
+ );
+ },
+ new => sub {
+ $self->_select(
+ limit => shift,
+ order => sub { -$_->mtime }
+ );
+ },
+ old => sub {
+ $self->_select(
+ limit => shift,
+ order => sub { $_->mtime }
+ );
+ },
+ fresh => sub {
+ $self->_select(
+ limit => shift,
+ where => sub { $_->mtime >= $last_run_time }
+ );
+ },
+ save => sub {
+ $self->{should_save}++;
+ },
+ adrian => sub {
+ unshift @switches, qw( hot all save );
+ },
+ );
+
+ while ( defined( my $ele = shift @switches ) ) {
+ my ( $opt, $arg )
+ = ( $ele =~ /^([^:]+):(.*)/ )
+ ? ( $1, $2 )
+ : ( $ele, undef );
+ my $code = $handler{$opt}
+ || croak "Illegal state option: $opt";
+ $code->($arg);
+ }
+ return;
+}
+
+sub _select {
+ my ( $self, %spec ) = @_;
+ push @{ $self->{select} }, \%spec;
+}
+
+=head3 C<get_tests>
+
+Given a list of args get the names of tests that should run
+
+=cut
+
+sub get_tests {
+ my $self = shift;
+ my $recurse = shift;
+ my @argv = @_;
+ my %seen;
+
+ my @selected = $self->_query;
+
+ unless ( @argv || @{ $self->{select} } ) {
+ @argv = $recurse ? '.' : 't';
+ croak qq{No tests named and '@argv' directory not found}
+ unless -d $argv[0];
+ }
+
+ push @selected, $self->_get_raw_tests( $recurse, @argv ) if @argv;
+ return grep { !$seen{$_}++ } @selected;
+}
+
+sub _query {
+ my $self = shift;
+ if ( my @sel = @{ $self->{select} } ) {
+ warn "No saved state, selection will be empty\n"
+ unless $self->results->num_tests;
+ return map { $self->_query_clause($_) } @sel;
+ }
+ return;
+}
+
+sub _query_clause {
+ my ( $self, $clause ) = @_;
+ my @got;
+ my $results = $self->results;
+ my $where = $clause->{where} || sub {1};
+
+ # Select
+ for my $name ( $results->test_names ) {
+ next unless -f $name;
+ local $_ = $results->test($name);
+ push @got, $name if $where->();
+ }
+
+ # Sort
+ if ( my $order = $clause->{order} ) {
+ @got = map { $_->[0] }
+ sort {
+ ( defined $b->[1] <=> defined $a->[1] )
+ || ( ( $a->[1] || 0 ) <=> ( $b->[1] || 0 ) )
+ } map {
+ [ $_,
+ do { local $_ = $results->test($_); $order->() }
+ ]
+ } @got;
+ }
+
+ if ( my $limit = $clause->{limit} ) {
+ @got = splice @got, 0, $limit if @got > $limit;
+ }
+
+ return @got;
+}
+
+sub _get_raw_tests {
+ my $self = shift;
+ my $recurse = shift;
+ my @argv = @_;
+ my @tests;
+
+ # Do globbing on Win32.
+ if (NEED_GLOB) {
+ eval "use File::Glob::Windows"; # [49732]
+ @argv = map { glob "$_" } @argv;
+ }
+ my $extensions = $self->{extensions};
+
+ for my $arg (@argv) {
+ if ( '-' eq $arg ) {
+ push @argv => <STDIN>;
+ chomp(@argv);
+ next;
+ }
+
+ push @tests,
+ sort -d $arg
+ ? $recurse
+ ? $self->_expand_dir_recursive( $arg, $extensions )
+ : map { glob( File::Spec->catfile( $arg, "*$_" ) ) }
+ @{$extensions}
+ : $arg;
+ }
+ return @tests;
+}
+
+sub _expand_dir_recursive {
+ my ( $self, $dir, $extensions ) = @_;
+
+ my @tests;
+ my $ext_string = join( '|', map {quotemeta} @{$extensions} );
+
+ find(
+ { follow => 1, #21938
+ follow_skip => 2,
+ wanted => sub {
+ -f
+ && /(?:$ext_string)$/
+ && push @tests => $File::Find::name;
+ }
+ },
+ $dir
+ );
+ return @tests;
+}
+
+=head3 C<observe_test>
+
+Store the results of a test.
+
+=cut
+
+# Store:
+# last fail time
+# last pass time
+# last run time
+# most recent result
+# most recent todos
+# total failures
+# total passes
+# state generation
+# parser
+
+sub observe_test {
+
+ my ( $self, $test_info, $parser ) = @_;
+ my $name = $test_info->[0];
+ my $fail = scalar( $parser->failed ) + ( $parser->has_problems ? 1 : 0 );
+ my $todo = scalar( $parser->todo );
+ my $start_time = $parser->start_time;
+ my $end_time = $parser->end_time,
+
+ my $test = $self->results->test($name);
+
+ $test->sequence( $self->{seq}++ );
+ $test->generation( $self->results->generation );
+
+ $test->run_time($end_time);
+ $test->result($fail);
+ $test->num_todo($todo);
+ $test->elapsed( $end_time - $start_time );
+
+ $test->parser($parser);
+
+ if ($fail) {
+ $test->total_failures( $test->total_failures + 1 );
+ $test->last_fail_time($end_time);
+ }
+ else {
+ $test->total_passes( $test->total_passes + 1 );
+ $test->last_pass_time($end_time);
+ }
+}
+
+=head3 C<save>
+
+Write the state to a file.
+
+=cut
+
+sub save {
+ my ($self) = @_;
+
+ my $store = $self->{store} or return;
+ $self->results->last_run_time( $self->get_time );
+
+ my $writer = TAP::Parser::YAMLish::Writer->new;
+ local *FH;
+ open FH, ">$store" or croak "Can't write $store ($!)";
+ $writer->write( $self->results->raw, \*FH );
+ close FH;
+}
+
+=head3 C<load>
+
+Load the state from a file
+
+=cut
+
+sub load {
+ my ( $self, $name ) = @_;
+ my $reader = TAP::Parser::YAMLish::Reader->new;
+ local *FH;
+ open FH, "<$name" or croak "Can't read $name ($!)";
+
+ # XXX this is temporary
+ $self->{_} = $self->result_class->new(
+ $reader->read(
+ sub {
+ my $line = <FH>;
+ defined $line && chomp $line;
+ return $line;
+ }
+ )
+ );
+
+ # $writer->write( $self->{tests} || {}, \*FH );
+ close FH;
+ $self->_regen_seq;
+ $self->_prune_and_stamp;
+ $self->results->generation( $self->results->generation + 1 );
+}
+
+sub _prune_and_stamp {
+ my $self = shift;
+
+ my $results = $self->results;
+ my @tests = $self->results->tests;
+ for my $test (@tests) {
+ my $name = $test->name;
+ if ( my @stat = stat $name ) {
+ $test->mtime( $stat[9] );
+ }
+ else {
+ $results->remove($name);
+ }
+ }
+}
+
+sub _regen_seq {
+ my $self = shift;
+ for my $test ( $self->results->tests ) {
+ $self->{seq} = $test->sequence + 1
+ if defined $test->sequence && $test->sequence >= $self->{seq};
+ }
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/App/Prove/State/Result.pm b/Master/tlpkg/tlperl/site/lib/App/Prove/State/Result.pm
new file mode 100755
index 00000000000..38faf6f24de
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/App/Prove/State/Result.pm
@@ -0,0 +1,233 @@
+package App::Prove::State::Result;
+
+use strict;
+use warnings;
+use Carp 'croak';
+
+use App::Prove::State::Result::Test;
+
+use constant STATE_VERSION => 1;
+
+=head1 NAME
+
+App::Prove::State::Result - Individual test suite results.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+The C<prove> command supports a C<--state> option that instructs it to
+store persistent state across runs. This module encapsulates the results for a
+single test suite run.
+
+=head1 SYNOPSIS
+
+ # Re-run failed tests
+ $ prove --state=failed,save -rbv
+
+=cut
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+ my $result = App::Prove::State::Result->new({
+ generation => $generation,
+ tests => \%tests,
+ });
+
+Returns a new C<App::Prove::State::Result> instance.
+
+=cut
+
+sub new {
+ my ( $class, $arg_for ) = @_;
+ $arg_for ||= {};
+ my %instance_data = %$arg_for; # shallow copy
+ $instance_data{version} = $class->state_version;
+ my $tests = delete $instance_data{tests} || {};
+ my $self = bless \%instance_data => $class;
+ $self->_initialize($tests);
+ return $self;
+}
+
+sub _initialize {
+ my ( $self, $tests ) = @_;
+ my %tests;
+ while ( my ( $name, $test ) = each %$tests ) {
+ $tests{$name} = $self->test_class->new(
+ { %$test,
+ name => $name
+ }
+ );
+ }
+ $self->tests( \%tests );
+ return $self;
+}
+
+=head2 C<state_version>
+
+Returns the current version of state storage.
+
+=cut
+
+sub state_version {STATE_VERSION}
+
+=head2 C<test_class>
+
+Returns the name of the class used for tracking individual tests. This class
+should either subclass from C<App::Prove::State::Result::Test> or provide an
+identical interface.
+
+=cut
+
+sub test_class {
+ return 'App::Prove::State::Result::Test';
+}
+
+my %methods = (
+ generation => { method => 'generation', default => 0 },
+ last_run_time => { method => 'last_run_time', default => undef },
+);
+
+while ( my ( $key, $description ) = each %methods ) {
+ my $default = $description->{default};
+ no strict 'refs';
+ *{ $description->{method} } = sub {
+ my $self = shift;
+ if (@_) {
+ $self->{$key} = shift;
+ return $self;
+ }
+ return $self->{$key} || $default;
+ };
+}
+
+=head3 C<generation>
+
+Getter/setter for the "generation" of the test suite run. The first
+generation is 1 (one) and subsequent generations are 2, 3, etc.
+
+=head3 C<last_run_time>
+
+Getter/setter for the time of the test suite run.
+
+=head3 C<tests>
+
+Returns the tests for a given generation. This is a hashref or a hash,
+depending on context called. The keys to the hash are the individual
+test names and the value is a hashref with various interesting values.
+Each k/v pair might resemble something like this:
+
+ 't/foo.t' => {
+ elapsed => '0.0428488254547119',
+ gen => '7',
+ last_pass_time => '1219328376.07815',
+ last_result => '0',
+ last_run_time => '1219328376.07815',
+ last_todo => '0',
+ mtime => '1191708862',
+ seq => '192',
+ total_passes => '6',
+ }
+
+=cut
+
+sub tests {
+ my $self = shift;
+ if (@_) {
+ $self->{tests} = shift;
+ return $self;
+ }
+ my %tests = %{ $self->{tests} };
+ my @tests = sort { $a->sequence <=> $b->sequence } values %tests;
+ return wantarray ? @tests : \@tests;
+}
+
+=head3 C<test>
+
+ my $test = $result->test('t/customer/create.t');
+
+Returns an individual C<App::Prove::State::Result::Test> instance for the
+given test name (usually the filename). Will return a new
+C<App::Prove::State::Result::Test> instance if the name is not found.
+
+=cut
+
+sub test {
+ my ( $self, $name ) = @_;
+ croak("test() requires a test name") unless defined $name;
+
+ my $tests = $self->{tests} ||= {};
+ if ( my $test = $tests->{$name} ) {
+ return $test;
+ }
+ else {
+ my $test = $self->test_class->new( { name => $name } );
+ $self->{tests}->{$name} = $test;
+ return $test;
+ }
+}
+
+=head3 C<test_names>
+
+Returns an list of test names, sorted by run order.
+
+=cut
+
+sub test_names {
+ my $self = shift;
+ return map { $_->name } $self->tests;
+}
+
+=head3 C<remove>
+
+ $result->remove($test_name); # remove the test
+ my $test = $result->test($test_name); # fatal error
+
+Removes a given test from results. This is a no-op if the test name is not
+found.
+
+=cut
+
+sub remove {
+ my ( $self, $name ) = @_;
+ delete $self->{tests}->{$name};
+ return $self;
+}
+
+=head3 C<num_tests>
+
+Returns the number of tests for a given test suite result.
+
+=cut
+
+sub num_tests { keys %{ shift->{tests} } }
+
+=head3 C<raw>
+
+Returns a hashref of raw results, suitable for serialization by YAML.
+
+=cut
+
+sub raw {
+ my $self = shift;
+ my %raw = %$self;
+
+ my %tests;
+ for my $test ( $self->tests ) {
+ $tests{ $test->name } = $test->raw;
+ }
+ $raw{tests} = \%tests;
+ return \%raw;
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/App/Prove/State/Result/Test.pm b/Master/tlpkg/tlperl/site/lib/App/Prove/State/Result/Test.pm
new file mode 100755
index 00000000000..61a5173cfa5
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/App/Prove/State/Result/Test.pm
@@ -0,0 +1,152 @@
+package App::Prove::State::Result::Test;
+
+use strict;
+use warnings;
+
+=head1 NAME
+
+App::Prove::State::Result::Test - Individual test results.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+The C<prove> command supports a C<--state> option that instructs it to
+store persistent state across runs. This module encapsulates the results for a
+single test.
+
+=head1 SYNOPSIS
+
+ # Re-run failed tests
+ $ prove --state=failed,save -rbv
+
+=cut
+
+my %methods = (
+ name => { method => 'name' },
+ elapsed => { method => 'elapsed', default => 0 },
+ gen => { method => 'generation', default => 1 },
+ last_pass_time => { method => 'last_pass_time', default => undef },
+ last_fail_time => { method => 'last_fail_time', default => undef },
+ last_result => { method => 'result', default => 0 },
+ last_run_time => { method => 'run_time', default => undef },
+ last_todo => { method => 'num_todo', default => 0 },
+ mtime => { method => 'mtime', default => undef },
+ seq => { method => 'sequence', default => 1 },
+ total_passes => { method => 'total_passes', default => 0 },
+ total_failures => { method => 'total_failures', default => 0 },
+ parser => { method => 'parser' },
+);
+
+while ( my ( $key, $description ) = each %methods ) {
+ my $default = $description->{default};
+ no strict 'refs';
+ *{ $description->{method} } = sub {
+ my $self = shift;
+ if (@_) {
+ $self->{$key} = shift;
+ return $self;
+ }
+ return $self->{$key} || $default;
+ };
+}
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+=cut
+
+sub new {
+ my ( $class, $arg_for ) = @_;
+ $arg_for ||= {};
+ bless $arg_for => $class;
+}
+
+=head2 Instance Methods
+
+=head3 C<name>
+
+The name of the test. Usually a filename.
+
+=head3 C<elapsed>
+
+The total elapsed times the test took to run, in seconds from the epoch..
+
+=head3 C<generation>
+
+The number for the "generation" of the test run. The first generation is 1
+(one) and subsequent generations are 2, 3, etc.
+
+=head3 C<last_pass_time>
+
+The last time the test program passed, in seconds from the epoch.
+
+Returns C<undef> if the program has never passed.
+
+=head3 C<last_fail_time>
+
+The last time the test suite failed, in seconds from the epoch.
+
+Returns C<undef> if the program has never failed.
+
+=head3 C<mtime>
+
+Returns the mtime of the test, in seconds from the epoch.
+
+=head3 C<raw>
+
+Returns a hashref of raw test data, suitable for serialization by YAML.
+
+=head3 C<result>
+
+Currently, whether or not the test suite passed with no 'problems' (such as
+TODO passed).
+
+=head3 C<run_time>
+
+The total time it took for the test to run, in seconds. If C<Time::HiRes> is
+available, it will have finer granularity.
+
+=head3 C<num_todo>
+
+The number of tests with TODO directives.
+
+=head3 C<sequence>
+
+The order in which this test was run for the given test suite result.
+
+=head3 C<total_passes>
+
+The number of times the test has passed.
+
+=head3 C<total_failures>
+
+The number of times the test has failed.
+
+=head3 C<parser>
+
+The underlying parser object. This is useful if you need the full
+information for the test program.
+
+=cut
+
+sub raw {
+ my $self = shift;
+ my %raw = %$self;
+
+ # this is backwards-compatibility hack and is not guaranteed.
+ delete $raw{name};
+ delete $raw{parser};
+ return \%raw;
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/Cpanel/JSON/XS.pm b/Master/tlpkg/tlperl/site/lib/Cpanel/JSON/XS.pm
index 49f15fcee2d..887285846fe 100755
--- a/Master/tlpkg/tlperl/site/lib/Cpanel/JSON/XS.pm
+++ b/Master/tlpkg/tlperl/site/lib/Cpanel/JSON/XS.pm
@@ -1,5 +1,5 @@
package Cpanel::JSON::XS;
-our $VERSION = '4.27';
+our $VERSION = '4.37';
our $XS_VERSION = $VERSION;
# $VERSION = eval $VERSION;
@@ -112,7 +112,10 @@ or L<https://rt.cpan.org/Public/Dist/Display.html?Queue=Cpanel-JSON-XS>
B<Changes to JSON::XS>
+- bare hashkeys are now checked for utf8. (GH #209)
+
- stricter decode_json() as documented. non-refs are disallowed.
+ safe by default.
added a 2nd optional argument. decode() honors now allow_nonref.
- fixed encode of numbers for dual-vars. Different string
@@ -157,8 +160,14 @@ B<Changes to JSON::XS>
- relaxed mode, allowing many popular extensions
+- protect our magic object from corruption by wrong or missing external
+ methods, like FREEZE/THAW or serialization with other methods.
+
- additional fixes for:
+ - #208 - no security-relevant out-of-bounds reading of module memory
+ when decoding hash keys without ending ':'
+
- [cpan #88061] AIX atof without USE_LONG_DOUBLE
- #10 unshare_hek crash
@@ -180,6 +189,8 @@ B<Changes to JSON::XS>
- #167 sort tied hashes with canonical.
+ - #212 fix utf8 object stringification
+
- public maintenance and bugtracker
- use ppport.h, sanify XS.xs comment styles, harness C coding style
@@ -187,15 +198,15 @@ B<Changes to JSON::XS>
- common::sense is optional. When available it is not used in the
published production module, just during development and testing.
-- extended testsuite, passes all http://seriot.ch/parsing_json.html
+- extended testsuite, passes all http://seriot.ch/projects/parsing_json.html
tests. In fact it is the only know JSON decoder which does so,
while also being the fastest.
- support many more options and methods from JSON::PP:
stringify_infnan, allow_unknown, allow_stringify, allow_barekey,
- encode_stringify, allow_bignum, allow_singlequote, sort_by
- (partially), escape_slash, convert_blessed, ... optional
- decode_json(, allow_nonref) arg.
+ encode_stringify, allow_bignum, allow_singlequote, dupkeys_as_arrayref,
+ sort_by (partially), escape_slash, convert_blessed, ...
+ optional decode_json(, allow_nonref) arg.
relaxed implements allow_dupkeys.
- support all 5 unicode L<BOM|/BOM>'s: UTF-8, UTF-16LE, UTF-16BE, UTF-32LE,
@@ -659,13 +670,12 @@ L</allow_barekey> option.
=item * allow_dupkeys
Allow decoding of duplicate keys in hashes. By default duplicate keys are forbidden.
-See L<http://seriot.ch/parsing_json.php#24>:
+See L<http://seriot.ch/projects/parsing_json.php#24>:
RFC 7159 section 4: "The names within an object should be unique."
-See the L</allow_dupkeys> option.
+See the C<allow_dupkeys> option.
=back
-
=item $json = $json->canonical ([$enable])
=item $enabled = $json->get_canonical
@@ -880,9 +890,29 @@ disable it, however with Perl hashes they are impossible, parsing
JSON in Perl silently ignores duplicate names, using the last value
found.
-See L<http://seriot.ch/parsing_json.php#24>:
+See L<http://seriot.ch/projects/parsing_json.php#24>:
RFC 7159 section 4: "The names within an object should be unique."
+=item $json = $json->dupkeys_as_arrayref ([$enable])
+
+=item $enabled = $json->get_dupkeys_as_arrayref
+
+If enabled, allow decoding of duplicate keys in hashes and store the
+values as arrayref in the hash instead. By default duplicate keys are
+forbidden. Enabling this also enables the L</allow_dupkeys> option,
+but disabling this does not disable the L</allow_dupkeys> option.
+
+Example:
+
+ $json->dupkeys_as_arrayref;
+ print encode_json ($json->decode ('{"a":"b","a":"c"}'));
+
+ => {"a":["b","c"]}
+
+This changes the result structure, thus cannot be enabled by default.
+The client must be aware of it. The resulting arrayref is not yet marked somehow
+(blessed or such).
+
=item $json = $json->allow_blessed ([$enable])
=item $enabled = $json->get_allow_blessed
@@ -2063,7 +2093,7 @@ output (modulo bugs, but C<JSON::XS> has found more bugs in the
official JSON testsuite (1) than the official JSON testsuite has found
in C<JSON::XS> (0)).
C<Cpanel::JSON::XS> is currently the only known JSON decoder which passes all
-L<http://seriot.ch/parsing_json.html> tests, while being the fastest also.
+L<http://seriot.ch/projects/parsing_json.html> tests, while being the fastest also.
When you have trouble decoding JSON generated by this module using other
decoders, then it is very likely that you have an encoding mismatch or the
@@ -2315,10 +2345,18 @@ BEGIN {
require overload;
local $^W; # silence redefine warnings. no warnings 'redefine' does not help
- &overload::import( 'overload', # workaround 5.6 reserved keyword warning
- "0+" => sub { ${$_[0]} },
- "++" => sub { $_[0] = ${$_[0]} + 1 },
- "--" => sub { $_[0] = ${$_[0]} - 1 },
+ # These already come with JSON::PP::Boolean. Avoid redefine warning.
+ if (!defined $JSON::PP::Boolean::VERSION or $JSON::PP::VERSION lt '4.00') {
+ &overload::unimport( 'overload', '0+', '++', '--' );
+ &overload::import( 'overload',
+ "0+" => sub { ${$_[0]} },
+ "++" => sub { $_[0] = ${$_[0]} + 1 },
+ "--" => sub { $_[0] = ${$_[0]} - 1 },
+ );
+ }
+ # workaround 5.6 reserved keyword warning
+ &overload::unimport( 'overload', '""', 'eq', 'ne' );
+ &overload::import( 'overload',
'""' => sub { ${$_[0]} == 1 ? '1' : '0' }, # GH 29
'eq' => sub {
my ($obj, $op) = $_[2] ? ($_[1], $_[0]) : ($_[0], $_[1]);
diff --git a/Master/tlpkg/tlperl/site/lib/Digest/SHA.pm b/Master/tlpkg/tlperl/site/lib/Digest/SHA.pm
index dccc0e7aeb3..37a31e969aa 100644
--- a/Master/tlpkg/tlperl/site/lib/Digest/SHA.pm
+++ b/Master/tlpkg/tlperl/site/lib/Digest/SHA.pm
@@ -6,9 +6,10 @@ use strict;
use warnings;
use vars qw($VERSION @ISA @EXPORT_OK $errmsg);
use Fcntl qw(O_RDONLY O_RDWR);
+use Cwd qw(getcwd);
use integer;
-$VERSION = '6.02';
+$VERSION = '6.04';
require Exporter;
@ISA = qw(Exporter);
@@ -120,9 +121,18 @@ sub addfile {
## by attempting to open with mode O_RDWR
local *FH;
- $file eq '-' and open(FH, '< -')
- or sysopen(FH, $file, -d $file ? O_RDWR : O_RDONLY)
+ if ($file eq '-') {
+ if (-d STDIN) {
+ sysopen(FH, getcwd(), O_RDWR)
+ or _bail('Open failed');
+ }
+ open(FH, '< -')
+ or _bail('Open failed');
+ }
+ else {
+ sysopen(FH, $file, -d $file ? O_RDWR : O_RDONLY)
or _bail('Open failed');
+ }
if ($BITS) {
my ($n, $buf) = (0, "");
@@ -810,7 +820,7 @@ darkness and moored it in so perfect a calm and in so brilliant a light"
=head1 COPYRIGHT AND LICENSE
-Copyright (C) 2003-2018 Mark Shelor
+Copyright (C) 2003-2022 Mark Shelor
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
diff --git a/Master/tlpkg/tlperl/site/lib/ExtUtils/Config.pm b/Master/tlpkg/tlperl/site/lib/ExtUtils/Config.pm
new file mode 100755
index 00000000000..64134c5a4bd
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/ExtUtils/Config.pm
@@ -0,0 +1,114 @@
+package ExtUtils::Config;
+$ExtUtils::Config::VERSION = '0.008';
+use strict;
+use warnings;
+use Config;
+use Data::Dumper ();
+
+sub new {
+ my ($pack, $args) = @_;
+ return bless {
+ values => ($args ? { %$args } : {}),
+ }, $pack;
+}
+
+sub get {
+ my ($self, $key) = @_;
+ return exists $self->{values}{$key} ? $self->{values}{$key} : $Config{$key};
+}
+
+sub exists {
+ my ($self, $key) = @_;
+ return exists $self->{values}{$key} || exists $Config{$key};
+}
+
+sub values_set {
+ my $self = shift;
+ return { %{$self->{values}} };
+}
+
+sub all_config {
+ my $self = shift;
+ return { %Config, %{ $self->{values}} };
+}
+
+sub serialize {
+ my $self = shift;
+ return $self->{serialized} ||= Data::Dumper->new([$self->values_set])->Terse(1)->Sortkeys(1)->Dump;
+}
+
+1;
+
+# ABSTRACT: A wrapper for perl's configuration
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+ExtUtils::Config - A wrapper for perl's configuration
+
+=head1 VERSION
+
+version 0.008
+
+=head1 SYNOPSIS
+
+ my $config = ExtUtils::Config->new();
+ $config->get('installsitelib');
+
+=head1 DESCRIPTION
+
+ExtUtils::Config is an abstraction around the %Config hash. By itself it is not a particularly interesting module by any measure, however it ties together a family of modern toolchain modules.
+
+=head1 METHODS
+
+=head2 new(\%config)
+
+Create a new ExtUtils::Config object. The values in C<\%config> are used to initialize the object.
+
+=head2 get($key)
+
+Get the value of C<$key>. If not overridden it will return the value in %Config.
+
+=head2 exists($key)
+
+Tests for the existence of $key.
+
+=head2 values_set()
+
+Get a hashref of all overridden values.
+
+=head2 all_config()
+
+Get a hashref of the complete configuration, including overrides.
+
+=head2 serialize()
+
+This method serializes the object to some kind of string.
+
+=head1 AUTHORS
+
+=over 4
+
+=item *
+
+Ken Williams <kwilliams@cpan.org>
+
+=item *
+
+Leon Timmermans <leont@cpan.org>
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2006 by Ken Williams, Leon Timmermans.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers.pm b/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers.pm
new file mode 100755
index 00000000000..42c6cbfb924
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers.pm
@@ -0,0 +1,131 @@
+package ExtUtils::Helpers;
+$ExtUtils::Helpers::VERSION = '0.026';
+use strict;
+use warnings FATAL => 'all';
+use Exporter 5.57 'import';
+
+use Config;
+use File::Basename qw/basename/;
+use File::Spec::Functions qw/splitpath canonpath abs2rel splitdir/;
+use Text::ParseWords 3.24 ();
+
+our @EXPORT_OK = qw/make_executable split_like_shell man1_pagename man3_pagename detildefy/;
+
+BEGIN {
+ my %impl_for = ( MSWin32 => 'Windows', VMS => 'VMS');
+ my $package = 'ExtUtils::Helpers::' . ($impl_for{$^O} || 'Unix');
+ my $impl = $impl_for{$^O} || 'Unix';
+ require "ExtUtils/Helpers/$impl.pm";
+ "ExtUtils::Helpers::$impl"->import();
+}
+
+sub split_like_shell {
+ my ($string) = @_;
+
+ return if not defined $string;
+ $string =~ s/^\s+|\s+$//g;
+ return if not length $string;
+
+ return Text::ParseWords::shellwords($string);
+}
+
+sub man1_pagename {
+ my $filename = shift;
+ return basename($filename).".$Config{man1ext}";
+}
+
+my %separator = (
+ MSWin32 => '.',
+ VMS => '__',
+ os2 => '.',
+ cygwin => '.',
+);
+my $separator = $separator{$^O} || '::';
+
+sub man3_pagename {
+ my ($filename, $base) = @_;
+ $base ||= 'lib';
+ my ($vols, $dirs, $file) = splitpath(canonpath(abs2rel($filename, $base)));
+ $file = basename($file, qw/.pm .pod/);
+ my @dirs = grep { length } splitdir($dirs);
+ return join $separator, @dirs, "$file.$Config{man3ext}";
+}
+
+1;
+
+# ABSTRACT: Various portability utilities for module builders
+
+__END__
+
+=pod
+
+=encoding utf-8
+
+=head1 NAME
+
+ExtUtils::Helpers - Various portability utilities for module builders
+
+=head1 VERSION
+
+version 0.026
+
+=head1 SYNOPSIS
+
+ use ExtUtils::Helpers qw/make_executable split_like_shell/;
+
+ unshift @ARGV, split_like_shell($ENV{PROGRAM_OPTS});
+ write_script_to('Build');
+ make_executable('Build');
+
+=head1 DESCRIPTION
+
+This module provides various portable helper functions for module building modules.
+
+=head1 FUNCTIONS
+
+=head2 make_executable($filename)
+
+This makes a perl script executable.
+
+=head2 split_like_shell($string)
+
+This function splits a string the same way as the local platform does.
+
+=head2 detildefy($path)
+
+This function substitutes a tilde at the start of a path with the users homedir in an appropriate manner.
+
+=head2 man1_pagename($filename)
+
+Returns the man page filename for a script.
+
+=head2 man3_pagename($filename, $basedir)
+
+Returns the man page filename for a Perl library.
+
+=head1 ACKNOWLEDGEMENTS
+
+Olivier Mengué and Christian Walde made C<make_executable> work on Windows.
+
+=head1 AUTHORS
+
+=over 4
+
+=item *
+
+Ken Williams <kwilliams@cpan.org>
+
+=item *
+
+Leon Timmermans <leont@cpan.org>
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2004 by Ken Williams, Leon Timmermans.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers/Unix.pm b/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers/Unix.pm
new file mode 100755
index 00000000000..24f5d015498
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers/Unix.pm
@@ -0,0 +1,86 @@
+package ExtUtils::Helpers::Unix;
+$ExtUtils::Helpers::Unix::VERSION = '0.026';
+use strict;
+use warnings FATAL => 'all';
+
+use Exporter 5.57 'import';
+our @EXPORT = qw/make_executable detildefy/;
+
+use Carp qw/croak/;
+use Config;
+
+my $layer = $] >= 5.008001 ? ":raw" : "";
+
+sub make_executable {
+ my $filename = shift;
+ my $current_mode = (stat $filename)[2] + 0;
+ if (-T $filename) {
+ open my $fh, "<$layer", $filename;
+ my @lines = <$fh>;
+ if (@lines and $lines[0] =~ s{ \A \#! \s* (?:/\S+/)? perl \b (.*) \z }{$Config{startperl}$1}xms) {
+ open my $out, ">$layer", "$filename.new" or croak "Couldn't open $filename.new: $!";
+ print $out @lines;
+ close $out;
+ rename $filename, "$filename.bak" or croak "Couldn't rename $filename to $filename.bak";
+ rename "$filename.new", $filename or croak "Couldn't rename $filename.new to $filename";
+ unlink "$filename.bak";
+ }
+ }
+ chmod $current_mode | oct(111), $filename;
+ return;
+}
+
+sub detildefy {
+ my $value = shift;
+ # tilde with optional username
+ for ($value) {
+ s{ ^ ~ (?= /|$)} [ $ENV{HOME} || (getpwuid $>)[7] ]ex or # tilde without user name
+ s{ ^ ~ ([^/]+) (?= /|$) } { (getpwnam $1)[7] || "~$1" }ex; # tilde with user name
+ }
+ return $value;
+}
+
+1;
+
+# ABSTRACT: Unix specific helper bits
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+ExtUtils::Helpers::Unix - Unix specific helper bits
+
+=head1 VERSION
+
+version 0.026
+
+=for Pod::Coverage make_executable
+split_like_shell
+detildefy
+
+=head1 AUTHORS
+
+=over 4
+
+=item *
+
+Ken Williams <kwilliams@cpan.org>
+
+=item *
+
+Leon Timmermans <leont@cpan.org>
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2004 by Ken Williams, Leon Timmermans.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers/VMS.pm b/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers/VMS.pm
new file mode 100755
index 00000000000..cd0e210065d
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers/VMS.pm
@@ -0,0 +1,117 @@
+package ExtUtils::Helpers::VMS;
+$ExtUtils::Helpers::VMS::VERSION = '0.026';
+use strict;
+use warnings FATAL => 'all';
+
+use Exporter 5.57 'import';
+our @EXPORT = qw/make_executable detildefy/;
+
+use File::Copy qw/copy/;
+
+sub make_executable {
+ my $filename = shift;
+ my $batchname = "$filename.com";
+ copy($filename, $batchname);
+ ExtUtils::Helpers::Unix::make_executable($batchname);
+ return;
+}
+
+sub detildefy {
+ my $arg = shift;
+
+ # Apparently double ~ are not translated.
+ return $arg if ($arg =~ /^~~/);
+
+ # Apparently ~ followed by whitespace are not translated.
+ return $arg if ($arg =~ /^~ /);
+
+ if ($arg =~ /^~/) {
+ my $spec = $arg;
+
+ # Remove the tilde
+ $spec =~ s/^~//;
+
+ # Remove any slash following the tilde if present.
+ $spec =~ s#^/##;
+
+ # break up the paths for the merge
+ my $home = VMS::Filespec::unixify($ENV{HOME});
+
+ # In the default VMS mode, the trailing slash is present.
+ # In Unix report mode it is not. The parsing logic assumes that
+ # it is present.
+ $home .= '/' unless $home =~ m#/$#;
+
+ # Trivial case of just ~ by it self
+ if ($spec eq '') {
+ $home =~ s#/$##;
+ return $home;
+ }
+
+ my ($hvol, $hdir, $hfile) = File::Spec::Unix->splitpath($home);
+ if ($hdir eq '') {
+ # Someone has tampered with $ENV{HOME}
+ # So hfile is probably the directory since this should be
+ # a path.
+ $hdir = $hfile;
+ }
+
+ my ($vol, $dir, $file) = File::Spec::Unix->splitpath($spec);
+
+ my @hdirs = File::Spec::Unix->splitdir($hdir);
+ my @dirs = File::Spec::Unix->splitdir($dir);
+
+ unless ($arg =~ m#^~/#) {
+ # There is a home directory after the tilde, but it will already
+ # be present in in @hdirs so we need to remove it by from @dirs.
+
+ shift @dirs;
+ }
+ my $newdirs = File::Spec::Unix->catdir(@hdirs, @dirs);
+
+ $arg = File::Spec::Unix->catpath($hvol, $newdirs, $file);
+ }
+ return $arg;
+}
+
+# ABSTRACT: VMS specific helper bits
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+ExtUtils::Helpers::VMS - VMS specific helper bits
+
+=head1 VERSION
+
+version 0.026
+
+=for Pod::Coverage make_executable
+detildefy
+
+=head1 AUTHORS
+
+=over 4
+
+=item *
+
+Ken Williams <kwilliams@cpan.org>
+
+=item *
+
+Leon Timmermans <leont@cpan.org>
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2004 by Ken Williams, Leon Timmermans.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers/Windows.pm b/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers/Windows.pm
new file mode 100755
index 00000000000..8b232e400a9
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/ExtUtils/Helpers/Windows.pm
@@ -0,0 +1,70 @@
+package ExtUtils::Helpers::Windows;
+$ExtUtils::Helpers::Windows::VERSION = '0.026';
+use strict;
+use warnings FATAL => 'all';
+
+use Exporter 5.57 'import';
+our @EXPORT = qw/make_executable detildefy/;
+
+use Config;
+use Carp qw/carp croak/;
+use ExtUtils::PL2Bat 'pl2bat';
+
+sub make_executable {
+ my $script = shift;
+ if (-T $script && $script !~ / \. (?:bat|cmd) $ /x) {
+ pl2bat(in => $script, update => 1);
+ }
+ return;
+}
+
+sub detildefy {
+ my $value = shift;
+ $value =~ s{ ^ ~ (?= [/\\] | $ ) }[$ENV{USERPROFILE}]x if $ENV{USERPROFILE};
+ return $value;
+}
+
+1;
+
+# ABSTRACT: Windows specific helper bits
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+ExtUtils::Helpers::Windows - Windows specific helper bits
+
+=head1 VERSION
+
+version 0.026
+
+=for Pod::Coverage make_executable
+split_like_shell
+detildefy
+
+=head1 AUTHORS
+
+=over 4
+
+=item *
+
+Ken Williams <kwilliams@cpan.org>
+
+=item *
+
+Leon Timmermans <leont@cpan.org>
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2004 by Ken Williams, Leon Timmermans.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/ExtUtils/InstallPaths.pm b/Master/tlpkg/tlperl/site/lib/ExtUtils/InstallPaths.pm
new file mode 100755
index 00000000000..d5bc16c2b81
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/ExtUtils/InstallPaths.pm
@@ -0,0 +1,625 @@
+package ExtUtils::InstallPaths;
+$ExtUtils::InstallPaths::VERSION = '0.012';
+use 5.006;
+use strict;
+use warnings;
+
+use File::Spec ();
+use Carp ();
+use ExtUtils::Config 0.002;
+
+my %complex_accessors = map { $_ => 1 } qw/prefix_relpaths install_sets/;
+my %hash_accessors = map { $_ => 1 } qw/install_path install_base_relpaths original_prefix /;
+
+my %defaults = (
+ installdirs => 'site',
+ install_base => undef,
+ prefix => undef,
+ verbose => 0,
+ create_packlist => 1,
+ dist_name => undef,
+ module_name => undef,
+ destdir => undef,
+ install_path => sub { {} },
+ install_sets => \&_default_install_sets,
+ original_prefix => \&_default_original_prefix,
+ install_base_relpaths => \&_default_base_relpaths,
+ prefix_relpaths => \&_default_prefix_relpaths,
+);
+
+sub _merge_shallow {
+ my ($name, $filter) = @_;
+ return sub {
+ my ($override, $config) = @_;
+ my $defaults = $defaults{$name}->($config);
+ $filter->($_) for grep $filter, values %$override;
+ return { %$defaults, %$override };
+ }
+}
+
+sub _merge_deep {
+ my ($name, $filter) = @_;
+ return sub {
+ my ($override, $config) = @_;
+ my $defaults = $defaults{$name}->($config);
+ my $pair_for = sub {
+ my $key = shift;
+ my %override = %{ $override->{$key} || {} };
+ $filter && $filter->($_) for values %override;
+ return $key => { %{ $defaults->{$key} }, %override };
+ };
+ return { map { $pair_for->($_) } keys %$defaults };
+ }
+}
+
+my %allowed_installdir = map { $_ => 1 } qw/core site vendor/;
+my $must_be_relative = sub { Carp::croak('Value must be a relative path') if File::Spec->file_name_is_absolute($_[0]) };
+my %deep_filter = map { $_ => $must_be_relative } qw/install_base_relpaths prefix_relpaths/;
+my %filter = (
+ installdirs => sub {
+ my $value = shift;
+ $value = 'core', Carp::carp('Perhaps you meant installdirs to be "core" rather than "perl"?') if $value eq 'perl';
+ Carp::croak('installdirs must be one of "core", "site", or "vendor"') if not $allowed_installdir{$value};
+ return $value;
+ },
+ (map { $_ => _merge_shallow($_, $deep_filter{$_}) } qw/original_prefix install_base_relpaths/),
+ (map { $_ => _merge_deep($_, $deep_filter{$_}) } qw/install_sets prefix_relpaths/),
+);
+
+sub new {
+ my ($class, %args) = @_;
+ my $config = $args{config} || ExtUtils::Config->new;
+ my %self = (
+ config => $config,
+ map { $_ => exists $args{$_} ? $filter{$_} ? $filter{$_}->($args{$_}, $config) : $args{$_} : ref $defaults{$_} ? $defaults{$_}->($config) : $defaults{$_} } keys %defaults,
+ );
+ $self{module_name} ||= do { my $module_name = $self{dist_name}; $module_name =~ s/-/::/g; $module_name } if defined $self{dist_name};
+ return bless \%self, $class;
+}
+
+for my $attribute (keys %defaults) {
+ no strict qw/refs/;
+ *{$attribute} = $hash_accessors{$attribute} ?
+ sub {
+ my ($self, $key) = @_;
+ Carp::confess("$attribute needs key") if not defined $key;
+ return $self->{$attribute}{$key};
+ } :
+ $complex_accessors{$attribute} ?
+ sub {
+ my ($self, $installdirs, $key) = @_;
+ Carp::confess("$attribute needs installdir") if not defined $installdirs;
+ Carp::confess("$attribute needs key") if not defined $key;
+ return $self->{$attribute}{$installdirs}{$key};
+ } :
+ sub {
+ my $self = shift;
+ return $self->{$attribute};
+ };
+}
+
+my $script = $] > 5.008000 ? 'script' : 'bin';
+my @install_sets_keys = qw/lib arch bin script bindoc libdoc binhtml libhtml/;
+my @install_sets_tail = ('bin', $script, qw/man1dir man3dir html1dir html3dir/);
+my %install_sets_values = (
+ core => [ qw/privlib archlib /, @install_sets_tail ],
+ site => [ map { "site$_" } qw/lib arch/, @install_sets_tail ],
+ vendor => [ map { "vendor$_" } qw/lib arch/, @install_sets_tail ],
+);
+
+sub _default_install_sets {
+ my $c = shift;
+
+ my %ret;
+ for my $installdir (qw/core site vendor/) {
+ @{$ret{$installdir}}{@install_sets_keys} = map { $c->get("install$_") } @{ $install_sets_values{$installdir} };
+ }
+ return \%ret;
+}
+
+sub _default_base_relpaths {
+ my $config = shift;
+ return {
+ lib => ['lib', 'perl5'],
+ arch => ['lib', 'perl5', $config->get('archname')],
+ bin => ['bin'],
+ script => ['bin'],
+ bindoc => ['man', 'man1'],
+ libdoc => ['man', 'man3'],
+ binhtml => ['html'],
+ libhtml => ['html'],
+ };
+}
+
+my %common_prefix_relpaths = (
+ bin => ['bin'],
+ script => ['bin'],
+ bindoc => ['man', 'man1'],
+ libdoc => ['man', 'man3'],
+ binhtml => ['html'],
+ libhtml => ['html'],
+);
+
+sub _default_prefix_relpaths {
+ my $c = shift;
+
+ my @libstyle = $c->get('installstyle') ? File::Spec->splitdir($c->get('installstyle')) : qw(lib perl5);
+ my $arch = $c->get('archname');
+ my $version = $c->get('version');
+
+ return {
+ core => {
+ lib => [@libstyle],
+ arch => [@libstyle, $version, $arch],
+ %common_prefix_relpaths,
+ },
+ vendor => {
+ lib => [@libstyle],
+ arch => [@libstyle, $version, $arch],
+ %common_prefix_relpaths,
+ },
+ site => {
+ lib => [@libstyle, 'site_perl'],
+ arch => [@libstyle, 'site_perl', $version, $arch],
+ %common_prefix_relpaths,
+ },
+ };
+}
+
+sub _default_original_prefix {
+ my $c = shift;
+
+ my %ret = (
+ core => $c->get('installprefixexp'),
+ site => $c->get('siteprefixexp'),
+ vendor => $c->get('usevendorprefix') ? $c->get('vendorprefixexp') : '',
+ );
+
+ return \%ret;
+}
+
+sub _log_verbose {
+ my $self = shift;
+ print @_ if $self->verbose;
+ return;
+}
+
+# Given a file type, will return true if the file type would normally
+# be installed when neither install-base nor prefix has been set.
+# I.e. it will be true only if the path is set from Config.pm or
+# set explicitly by the user via install-path.
+sub is_default_installable {
+ my $self = shift;
+ my $type = shift;
+ my $installable = $self->install_destination($type) && ( $self->install_path($type) || $self->install_sets($self->installdirs, $type));
+ return $installable ? 1 : 0;
+}
+
+sub _prefixify_default {
+ my $self = shift;
+ my $type = shift;
+ my $rprefix = shift;
+
+ my $default = $self->prefix_relpaths($self->installdirs, $type);
+ if( !$default ) {
+ $self->_log_verbose(" no default install location for type '$type', using prefix '$rprefix'.\n");
+ return $rprefix;
+ } else {
+ return File::Spec->catdir(@{$default});
+ }
+}
+
+# Translated from ExtUtils::MM_Unix::prefixify()
+sub _prefixify_novms {
+ my($self, $path, $sprefix, $type) = @_;
+
+ my $rprefix = $self->prefix;
+ $rprefix .= '/' if $sprefix =~ m{/$};
+
+ $self->_log_verbose(" prefixify $path from $sprefix to $rprefix\n") if defined $path && length $path;
+
+ if (not defined $path or length $path == 0 ) {
+ $self->_log_verbose(" no path to prefixify, falling back to default.\n");
+ return $self->_prefixify_default( $type, $rprefix );
+ } elsif( !File::Spec->file_name_is_absolute($path) ) {
+ $self->_log_verbose(" path is relative, not prefixifying.\n");
+ } elsif( $path !~ s{^\Q$sprefix\E\b}{}s ) {
+ $self->_log_verbose(" cannot prefixify, falling back to default.\n");
+ return $self->_prefixify_default( $type, $rprefix );
+ }
+
+ $self->_log_verbose(" now $path in $rprefix\n");
+
+ return $path;
+}
+
+sub _catprefix_vms {
+ my ($self, $rprefix, $default) = @_;
+
+ my ($rvol, $rdirs) = File::Spec->splitpath($rprefix);
+ if ($rvol) {
+ return File::Spec->catpath($rvol, File::Spec->catdir($rdirs, $default), '');
+ }
+ else {
+ return File::Spec->catdir($rdirs, $default);
+ }
+}
+sub _prefixify_vms {
+ my($self, $path, $sprefix, $type) = @_;
+ my $rprefix = $self->prefix;
+
+ return '' unless defined $path;
+
+ $self->_log_verbose(" prefixify $path from $sprefix to $rprefix\n");
+
+ require VMS::Filespec;
+ # Translate $(PERLPREFIX) to a real path.
+ $rprefix = VMS::Filespec::vmspath($rprefix) if $rprefix;
+ $sprefix = VMS::Filespec::vmspath($sprefix) if $sprefix;
+
+ $self->_log_verbose(" rprefix translated to $rprefix\n sprefix translated to $sprefix\n");
+
+ if (length($path) == 0 ) {
+ $self->_log_verbose(" no path to prefixify.\n")
+ }
+ elsif (!File::Spec->file_name_is_absolute($path)) {
+ $self->_log_verbose(" path is relative, not prefixifying.\n");
+ }
+ elsif ($sprefix eq $rprefix) {
+ $self->_log_verbose(" no new prefix.\n");
+ }
+ else {
+ my ($path_vol, $path_dirs) = File::Spec->splitpath( $path );
+ my $vms_prefix = $self->config->get('vms_prefix');
+ if ($path_vol eq $vms_prefix.':') {
+ $self->_log_verbose(" $vms_prefix: seen\n");
+
+ $path_dirs =~ s{^\[}{\[.} unless $path_dirs =~ m{^\[\.};
+ $path = $self->_catprefix_vms($rprefix, $path_dirs);
+ }
+ else {
+ $self->_log_verbose(" cannot prefixify.\n");
+ return File::Spec->catdir($self->prefix_relpaths($self->installdirs, $type));
+ }
+ }
+
+ $self->_log_verbose(" now $path\n");
+
+ return $path;
+}
+
+BEGIN { *_prefixify = $^O eq 'VMS' ? \&_prefixify_vms : \&_prefixify_novms }
+
+# Translated from ExtUtils::MM_Any::init_INSTALL_from_PREFIX
+sub prefix_relative {
+ my ($self, $installdirs, $type) = @_;
+
+ my $relpath = $self->install_sets($installdirs, $type);
+
+ return $self->_prefixify($relpath, $self->original_prefix($installdirs), $type);
+}
+
+sub install_destination {
+ my ($self, $type) = @_;
+
+ return $self->install_path($type) if $self->install_path($type);
+
+ if ( $self->install_base ) {
+ my $relpath = $self->install_base_relpaths($type);
+ return $relpath ? File::Spec->catdir($self->install_base, @{$relpath}) : undef;
+ }
+
+ if ( $self->prefix ) {
+ my $relpath = $self->prefix_relative($self->installdirs, $type);
+ return $relpath ? File::Spec->catdir($self->prefix, $relpath) : undef;
+ }
+ return $self->install_sets($self->installdirs, $type);
+}
+
+sub install_types {
+ my $self = shift;
+
+ my %types = ( %{ $self->{install_path} },
+ $self->install_base ? %{ $self->{install_base_relpaths} }
+ : $self->prefix ? %{ $self->{prefix_relpaths}{ $self->installdirs } }
+ : %{ $self->{install_sets}{ $self->installdirs } });
+
+ return sort keys %types;
+}
+
+sub install_map {
+ my ($self, $dirs) = @_;
+
+ my %localdir_for;
+ if ($dirs && %$dirs) {
+ %localdir_for = %$dirs;
+ }
+ else {
+ foreach my $type ($self->install_types) {
+ $localdir_for{$type} = File::Spec->catdir('blib', $type);
+ }
+ }
+
+ my (%map, @skipping);
+ foreach my $type (keys %localdir_for) {
+ next if not -e $localdir_for{$type};
+ if (my $dest = $self->install_destination($type)) {
+ $map{$localdir_for{$type}} = $dest;
+ } else {
+ push @skipping, $type;
+ }
+ }
+
+ warn "WARNING: Can't figure out install path for types: @skipping\nFiles will not be installed.\n" if @skipping;
+
+ # Write the packlist into the same place as ExtUtils::MakeMaker.
+ if ($self->create_packlist and my $module_name = $self->module_name) {
+ my $archdir = $self->install_destination('arch');
+ my @ext = split /::/, $module_name;
+ $map{write} = File::Spec->catfile($archdir, 'auto', @ext, '.packlist');
+ }
+
+ # Handle destdir
+ if (length(my $destdir = $self->destdir || '')) {
+ foreach (keys %map) {
+ # Need to remove volume from $map{$_} using splitpath, or else
+ # we'll create something crazy like C:\Foo\Bar\E:\Baz\Quux
+ # VMS will always have the file separate than the path.
+ my ($volume, $path, $file) = File::Spec->splitpath( $map{$_}, 0 );
+
+ # catdir needs a list of directories, or it will create something
+ # crazy like volume:[Foo.Bar.volume.Baz.Quux]
+ my @dirs = File::Spec->splitdir($path);
+
+ # First merge the directories
+ $path = File::Spec->catdir($destdir, @dirs);
+
+ # Then put the file back on if there is one.
+ if ($file ne '') {
+ $map{$_} = File::Spec->catfile($path, $file)
+ } else {
+ $map{$_} = $path;
+ }
+ }
+ }
+
+ $map{read} = ''; # To keep ExtUtils::Install quiet
+
+ return \%map;
+}
+
+1;
+
+# ABSTRACT: Build.PL install path logic made easy
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+ExtUtils::InstallPaths - Build.PL install path logic made easy
+
+=head1 VERSION
+
+version 0.012
+
+=head1 SYNOPSIS
+
+ use ExtUtils::InstallPaths;
+ use ExtUtils::Install 'install';
+ GetOptions(\my %opt, 'install_base=s', 'install_path=s%', 'installdirs=s', 'destdir=s', 'prefix=s', 'uninst:1', 'verbose:1');
+ my $paths = ExtUtils::InstallPaths->new(%opt, dist_name => $dist_name);
+ install($paths->install_map, $opt{verbose}, 0, $opt{uninst});
+
+=head1 DESCRIPTION
+
+This module tries to make install path resolution as easy as possible.
+
+When you want to install a module, it needs to figure out where to install things. The nutshell version of how this works is that default installation locations are determined from L<ExtUtils::Config>, and they may be individually overridden by using the C<install_path> attribute. An C<install_base> attribute lets you specify an alternative installation root like F</home/foo> and C<prefix> does something similar in a rather different (and more complicated) way. C<destdir> lets you specify a temporary installation directory like F</tmp/install> in case you want to create bundled-up installable packages.
+
+The following types are supported by default.
+
+=over 4
+
+=item * lib
+
+Usually pure-Perl module files ending in F<.pm> or F<.pod>.
+
+=item * arch
+
+"Architecture-dependent" module files, usually produced by compiling XS, L<Inline>, or similar code.
+
+=item * script
+
+Programs written in pure Perl. In order to improve reuse, you may want to make these as small as possible - put the code into modules whenever possible.
+
+=item * bin
+
+"Architecture-dependent" executable programs, i.e. compiled C code or something. Pretty rare to see this in a perl distribution, but it happens.
+
+=item * bindoc
+
+Documentation for the stuff in C<script> and C<bin>. Usually generated from the POD in those files. Under Unix, these are manual pages belonging to the 'man1' category. Unless explicitly set, this is only available on platforms supporting manpages.
+
+=item * libdoc
+
+Documentation for the stuff in C<lib> and C<arch>. This is usually generated from the POD in F<.pm> and F<.pod> files. Under Unix, these are manual pages belonging to the 'man3' category. Unless explicitly set, this is only available on platforms supporting manpages.
+
+=item * binhtml
+
+This is the same as C<bindoc> above, but applies to HTML documents. Unless explicitly set, this is only available when perl was configured to do so.
+
+=item * libhtml
+
+This is the same as C<libdoc> above, but applies to HTML documents. Unless explicitly set, this is only available when perl was configured to do so.
+
+=back
+
+=head1 ATTRIBUTES
+
+=head2 installdirs
+
+The default destinations for these installable things come from entries in your system's configuration. You can select from three different sets of default locations by setting the C<installdirs> parameter as follows:
+
+ 'installdirs' set to:
+ core site vendor
+
+ uses the following defaults from ExtUtils::Config:
+
+ lib => installprivlib installsitelib installvendorlib
+ arch => installarchlib installsitearch installvendorarch
+ script => installscript installsitescript installvendorscript
+ bin => installbin installsitebin installvendorbin
+ bindoc => installman1dir installsiteman1dir installvendorman1dir
+ libdoc => installman3dir installsiteman3dir installvendorman3dir
+ binhtml => installhtml1dir installsitehtml1dir installvendorhtml1dir [*]
+ libhtml => installhtml3dir installsitehtml3dir installvendorhtml3dir [*]
+
+ * Under some OS (eg. MSWin32) the destination for HTML documents is determined by the C<Config.pm> entry C<installhtmldir>.
+
+The default value of C<installdirs> is "site".
+
+=head2 install_base
+
+You can also set the whole bunch of installation paths by supplying the C<install_base> parameter to point to a directory on your system. For instance, if you set C<install_base> to "/home/ken" on a Linux system, you'll install as follows:
+
+ lib => /home/ken/lib/perl5
+ arch => /home/ken/lib/perl5/i386-linux
+ script => /home/ken/bin
+ bin => /home/ken/bin
+ bindoc => /home/ken/man/man1
+ libdoc => /home/ken/man/man3
+ binhtml => /home/ken/html
+ libhtml => /home/ken/html
+
+=head2 prefix
+
+This sets a prefix, identical to ExtUtils::MakeMaker's PREFIX option. This does something similar to C<install_base> in a much more complicated way.
+
+=head2 config()
+
+The L<ExtUtils::Config|ExtUtils::Config> object used for this object.
+
+=head2 verbose
+
+The verbosity of ExtUtils::InstallPaths. It defaults to 0
+
+=head2 create_packlist
+
+Together with C<module_name> this controls whether a packlist will be added; it defaults to 1.
+
+=head2 dist_name
+
+The name of the current module.
+
+=head2 module_name
+
+The name of the main module of the package. This is required for packlist creation, but in the future it may be replaced by dist_name. It defaults to C<dist_name =~ s/-/::/gr> if dist_name is set.
+
+=head2 destdir
+
+If you want to install everything into a temporary directory first (for instance, if you want to create a directory tree that a package manager like C<rpm> or C<dpkg> could create a package from), you can use the C<destdir> parameter. E.g. Setting C<destdir> to C<"/tmp/foo"> will effectively install to "/tmp/foo/$sitelib", "/tmp/foo/$sitearch", and the like, except that it will use C<File::Spec> to make the pathnames work correctly on whatever platform you're installing on.
+
+=head1 METHODS
+
+=head2 new
+
+Create a new ExtUtils::InstallPaths object. B<All attributes are valid arguments> to the constructor, as well as this:
+
+=over 4
+
+=item * install_path
+
+This must be a hashref with the type as keys and the destination as values.
+
+=item * install_base_relpaths
+
+This must be a hashref with types as keys and a path relative to the install_base as value.
+
+=item * prefix_relpaths
+
+This must be a hashref any of these three keys: core, vendor, site. Each of the values mush be a hashref with types as keys and a path relative to the prefix as value. You probably want to make these three hashrefs identical.
+
+=item * original_prefix
+
+This must be a hashref with the legal installdirs values as keys and the prefix directories as values.
+
+=item * install_sets
+
+This mush be a hashref with the legal installdirs are keys, and the values being hashrefs with types as keys and locations as values.
+
+=back
+
+=head2 install_map()
+
+Return a map suitable for use with L<ExtUtils::Install>. B<In most cases, this is the only method you'll need>.
+
+=head2 install_destination($type)
+
+Returns the destination of a certain type.
+
+=head2 install_types()
+
+Return a list of all supported install types in the current configuration.
+
+=head2 is_default_installable($type)
+
+Given a file type, will return true if the file type would normally be installed when neither install-base nor prefix has been set. I.e. it will be true only if the path is set from the configuration object or set explicitly by the user via install_path.
+
+=head2 install_path($type)
+
+Gets the install path for a certain type.
+
+=head2 install_sets($installdirs, $type)
+
+Get the path for a certain C<$type> with a certain C<$installdirs>.
+
+=head2 install_base_relpaths($type, $relpath)
+
+Get the relative paths for use with install_base for a certain type.
+
+=head2 prefix_relative($installdirs, $type)
+
+Gets the path of a certain C<$type> and C<$installdirs> relative to the prefix.
+
+=head2 prefix_relpaths($install_dirs, $type)
+
+Get the default relative path to use in case the config install paths cannot be prefixified. You do not want to use this to get any relative path, but may require it to set it for custom types.
+
+=head2 original_prefix($installdirs)
+
+Get the original prefix for a certain type of $installdirs.
+
+=head1 SEE ALSO
+
+=over 4
+
+=item * L<Build.PL spec|http://github.com/dagolden/cpan-api-buildpl/blob/master/lib/CPAN/API/BuildPL.pm>
+
+=back
+
+=head1 AUTHORS
+
+=over 4
+
+=item *
+
+Ken Williams <kwilliams@cpan.org>
+
+=item *
+
+Leon Timmermans <leont@cpan.org>
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2011 by Ken Williams, Leon Timmermans.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/File/Listing.pm b/Master/tlpkg/tlperl/site/lib/File/Listing.pm
index b94c5b3910c..de1e9eb5db0 100644
--- a/Master/tlpkg/tlperl/site/lib/File/Listing.pm
+++ b/Master/tlpkg/tlperl/site/lib/File/Listing.pm
@@ -4,10 +4,10 @@ use strict;
use warnings;
use Carp ();
use HTTP::Date qw(str2time);
-use base qw( Exporter );
+use Exporter 5.57 qw( import );
# ABSTRACT: Parse directory listing
-our $VERSION = '6.14'; # VERSION
+our $VERSION = '6.16'; # VERSION
sub Version { $File::Listing::VERSION; }
@@ -121,7 +121,7 @@ sub parse
push(@files, $pkg->line($line, $tz, $error));
}
}
- wantarray ? @files : \@files; ## no critic (Freenode::Wantarray)
+ wantarray ? @files : \@files; ## no critic (Community::Wantarray)
}
@@ -246,10 +246,14 @@ sub line
my ($date, $size_or_dir, $name, $size);
+ # usual format:
# 02-05-96 10:48AM 1415 src.slf
# 09-10-96 09:18AM <DIR> sl_util
+ # alternative dos format with four-digit year:
+ # 02-05-2022 10:48AM 1415 src.slf
+ # 09-10-2022 09:18AM <DIR> sl_util
if (($date, $size_or_dir, $name) =
- /^(\d\d-\d\d-\d\d\s+\d\d:\d\d\wM) # Date and time info
+ /^(\d\d-\d\d-\d{2,4}\s+\d\d:\d\d\wM) # Date and time info
\s+ # Some space
(<\w{3}>|\d+) # Dir or Size
\s+ # Some more space
@@ -399,7 +403,7 @@ File::Listing - Parse directory listing
=head1 VERSION
-version 6.14
+version 6.16
=head1 SYNOPSIS
@@ -544,6 +548,8 @@ Gavin Peters
Graeme Thompson
+Grant Street Group
+
Hans-H. Froehlich
Ian Kilgore
@@ -608,7 +614,7 @@ uid39246
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 1996-2020 by Gisle Aas.
+This software is copyright (c) 1996-2022 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/Master/tlpkg/tlperl/site/lib/HTML/Entities.pm b/Master/tlpkg/tlperl/site/lib/HTML/Entities.pm
index 15a85de0013..306ac9761af 100644
--- a/Master/tlpkg/tlperl/site/lib/HTML/Entities.pm
+++ b/Master/tlpkg/tlperl/site/lib/HTML/Entities.pm
@@ -136,7 +136,7 @@ modify it under the same terms as Perl itself.
=cut
use strict;
-our $VERSION = '3.76';
+our $VERSION = '3.81';
our (%entity2char, %char2entity);
require 5.004;
diff --git a/Master/tlpkg/tlperl/site/lib/HTML/Filter.pm b/Master/tlpkg/tlperl/site/lib/HTML/Filter.pm
index cf353714d68..5f4b7e8b6ca 100644
--- a/Master/tlpkg/tlperl/site/lib/HTML/Filter.pm
+++ b/Master/tlpkg/tlperl/site/lib/HTML/Filter.pm
@@ -4,7 +4,7 @@ use strict;
require HTML::Parser;
our @ISA = qw(HTML::Parser);
-our $VERSION = '3.76';
+our $VERSION = '3.81';
sub declaration { $_[0]->output("<!$_[1]>") }
sub process { $_[0]->output($_[2]) }
diff --git a/Master/tlpkg/tlperl/site/lib/HTML/HeadParser.pm b/Master/tlpkg/tlperl/site/lib/HTML/HeadParser.pm
index 3128924f510..e3e6df5baba 100644
--- a/Master/tlpkg/tlperl/site/lib/HTML/HeadParser.pm
+++ b/Master/tlpkg/tlperl/site/lib/HTML/HeadParser.pm
@@ -91,7 +91,7 @@ use HTML::Entities ();
use strict;
our $DEBUG;
#$DEBUG = 1;
-our $VERSION = '3.76';
+our $VERSION = '3.81';
=item $hp = HTML::HeadParser->new
diff --git a/Master/tlpkg/tlperl/site/lib/HTML/LinkExtor.pm b/Master/tlpkg/tlperl/site/lib/HTML/LinkExtor.pm
index 267cf5f5abe..e2a652a757d 100644
--- a/Master/tlpkg/tlperl/site/lib/HTML/LinkExtor.pm
+++ b/Master/tlpkg/tlperl/site/lib/HTML/LinkExtor.pm
@@ -2,7 +2,7 @@ package HTML::LinkExtor;
require HTML::Parser;
our @ISA = qw(HTML::Parser);
-our $VERSION = '3.76';
+our $VERSION = '3.81';
=head1 NAME
diff --git a/Master/tlpkg/tlperl/site/lib/HTML/Parser.pm b/Master/tlpkg/tlperl/site/lib/HTML/Parser.pm
index d44d0a2f579..c7579821df7 100644
--- a/Master/tlpkg/tlperl/site/lib/HTML/Parser.pm
+++ b/Master/tlpkg/tlperl/site/lib/HTML/Parser.pm
@@ -2,7 +2,7 @@ package HTML::Parser;
use strict;
-our $VERSION = '3.76';
+our $VERSION = '3.81';
require HTML::Entities;
@@ -129,30 +129,32 @@ HTML::Parser - HTML parser class
=head1 SYNOPSIS
- use strict;
- use warnings;
- use HTML::Parser ();
-
- # Create parser object
- my $p = HTML::Parser->new(
- api_version => 3,
- start_h => [\&start, "tagname, attr"],
- end_h => [\&end, "tagname"],
- marked_sections => 1,
- );
-
- # Parse document text chunk by chunk
- $p->parse($chunk1);
- $p->parse($chunk2);
- # ...
- # signal end of document
- $p->eof;
-
- # Parse directly from file
- $p->parse_file("foo.html");
- # or
- open(my $fh, "<:utf8", "foo.html") || die;
- $p->parse_file($fh);
+ use strict;
+ use warnings;
+ use HTML::Parser ();
+
+ # Create parser object
+ my $p = HTML::Parser->new(
+ api_version => 3,
+ start_h => [\&start, "tagname, attr"],
+ end_h => [\&end, "tagname"],
+ marked_sections => 1,
+ );
+
+ # Parse document text chunk by chunk
+ $p->parse($chunk1);
+ $p->parse($chunk2);
+
+ # ...
+ # signal end of document
+ $p->eof;
+
+ # Parse directly from file
+ $p->parse_file("foo.html");
+
+ # or
+ open(my $fh, "<:utf8", "foo.html") || die;
+ $p->parse_file($fh);
=head1 DESCRIPTION
@@ -262,14 +264,14 @@ Parsing will also abort if one of the event handlers calls $p->eof.
The effect of this is the same as:
- while (1) {
- my $chunk = &$code_ref();
- if (!defined($chunk) || !length($chunk)) {
- $p->eof;
- return $p;
+ while (1) {
+ my $chunk = &$code_ref();
+ if (!defined($chunk) || !length($chunk)) {
+ $p->eof;
+ return $p;
+ }
+ $p->parse($chunk) || return undef;
}
- $p->parse($chunk) || return undef;
- }
But it is more efficient as this loop runs internally in XS code.
@@ -988,24 +990,24 @@ HTML::Parser version 2 callback methods.
This is equivalent to the following method calls:
- $p->handler(start => "start", "self, tagname, attr, attrseq, text");
- $p->handler(end => "end", "self, tagname, text");
- $p->handler(text => "text", "self, text, is_cdata");
- $p->handler(process => "process", "self, token0, text");
- $p->handler(
- comment => sub {
- my($self, $tokens) = @_;
- for (@$tokens) {$self->comment($_);}
- },
- "self, tokens"
- );
- $p->handler(
- declaration => sub {
- my $self = shift;
- $self->declaration(substr($_[0], 2, -1));
- },
- "self, text"
- );
+ $p->handler(start => "start", "self, tagname, attr, attrseq, text");
+ $p->handler(end => "end", "self, tagname, text");
+ $p->handler(text => "text", "self, text, is_cdata");
+ $p->handler(process => "process", "self, token0, text");
+ $p->handler(
+ comment => sub {
+ my ($self, $tokens) = @_;
+ for (@$tokens) { $self->comment($_); }
+ },
+ "self, tokens"
+ );
+ $p->handler(
+ declaration => sub {
+ my $self = shift;
+ $self->declaration(substr($_[0], 2, -1));
+ },
+ "self, text"
+ );
Setting up these handlers can also be requested with the "api_version =>
2" constructor option.
@@ -1023,19 +1025,21 @@ The first simple example shows how you might strip out comments from
an HTML document. We achieve this by setting up a comment handler that
does nothing and a default handler that will print out anything else:
- use HTML::Parser;
- HTML::Parser->new(
- default_h => [sub { print shift }, 'text'],
- comment_h => [""],
- )->parse_file(shift || die) || die $!;
+ use HTML::Parser ();
+ HTML::Parser->new(
+ default_h => [sub { print shift }, 'text'],
+ comment_h => [""],
+ )->parse_file(shift || die)
+ || die $!;
An alternative implementation is:
- use HTML::Parser;
- HTML::Parser->new(
- end_document_h => [sub { print shift }, 'skipped_text'],
- comment_h => [""],
- )->parse_file(shift || die) || die $!;
+ use HTML::Parser ();
+ HTML::Parser->new(
+ end_document_h => [sub { print shift }, 'skipped_text'],
+ comment_h => [""],
+ )->parse_file(shift || die)
+ || die $!;
This will in most cases be much more efficient since only a single
callback will be made.
@@ -1046,24 +1050,24 @@ handler. When it sees the title start tag it enables a text handler
that prints any text found and an end handler that will terminate
parsing as soon as the title end tag is seen:
- use HTML::Parser ();
-
- sub start_handler {
- return if shift ne "title";
- my $self = shift;
- $self->handler(text => sub { print shift }, "dtext");
- $self->handler(
- end => sub {
- shift->eof if shift eq "title";
- },
- "tagname,self"
- );
- }
+ use HTML::Parser ();
+
+ sub start_handler {
+ return if shift ne "title";
+ my $self = shift;
+ $self->handler(text => sub { print shift }, "dtext");
+ $self->handler(
+ end => sub {
+ shift->eof if shift eq "title";
+ },
+ "tagname,self"
+ );
+ }
- my $p = HTML::Parser->new(api_version => 3);
- $p->handler(start => \&start_handler, "tagname,self");
- $p->parse_file(shift || die) || die $!;
- print "\n";
+ my $p = HTML::Parser->new(api_version => 3);
+ $p->handler(start => \&start_handler, "tagname,self");
+ $p->parse_file(shift || die) || die $!;
+ print "\n";
More examples are found in the F<eg/> directory of the C<HTML-Parser>
distribution: the program C<hrefsub> shows how you can edit all links
diff --git a/Master/tlpkg/tlperl/site/lib/HTML/PullParser.pm b/Master/tlpkg/tlperl/site/lib/HTML/PullParser.pm
index d7b4885feaf..b5275633d42 100644
--- a/Master/tlpkg/tlperl/site/lib/HTML/PullParser.pm
+++ b/Master/tlpkg/tlperl/site/lib/HTML/PullParser.pm
@@ -4,7 +4,7 @@ use strict;
require HTML::Parser;
our @ISA = qw(HTML::Parser);
-our $VERSION = '3.76';
+our $VERSION = '3.81';
use Carp ();
diff --git a/Master/tlpkg/tlperl/site/lib/HTML/TokeParser.pm b/Master/tlpkg/tlperl/site/lib/HTML/TokeParser.pm
index 8a8239c3d0f..90912a6e4b1 100644
--- a/Master/tlpkg/tlperl/site/lib/HTML/TokeParser.pm
+++ b/Master/tlpkg/tlperl/site/lib/HTML/TokeParser.pm
@@ -4,7 +4,7 @@ use strict;
require HTML::PullParser;
our @ISA = qw(HTML::PullParser);
-our $VERSION = '3.76';
+our $VERSION = '3.81';
use Carp ();
use HTML::Entities qw(decode_entities);
diff --git a/Master/tlpkg/tlperl/site/lib/HTTP/Cookies.pm b/Master/tlpkg/tlperl/site/lib/HTTP/Cookies.pm
index 4f055d5b00e..3e5b25639be 100644
--- a/Master/tlpkg/tlperl/site/lib/HTTP/Cookies.pm
+++ b/Master/tlpkg/tlperl/site/lib/HTTP/Cookies.pm
@@ -5,7 +5,7 @@ use HTTP::Date qw(str2time parse_date time2str);
use HTTP::Headers::Util qw(_split_header_words join_header_words);
our $EPOCH_OFFSET;
-our $VERSION = '6.10';
+our $VERSION = '6.11';
# Legacy: because "use "HTTP::Cookies" used be the ONLY way
# to load the class HTTP::Cookies::Netscape.
@@ -682,7 +682,7 @@ HTTP::Cookies - HTTP cookie jars
=head1 VERSION
-version 6.10
+version 6.11
=head1 SYNOPSIS
@@ -803,7 +803,7 @@ attributes like "Comment" and "CommentURL".
=item $cookie_jar->save( file => $file, ignore_discard => $ignore_discard )
-This method file saves the state of the $cookie_jar to a file.
+This method saves the state of the $cookie_jar to a file.
The state can then be restored later using the load() method. If a
filename is not specified we will use the name specified during
construction. If the $ignore_discard value is true (or not specified,
diff --git a/Master/tlpkg/tlperl/site/lib/HTTP/Cookies/Microsoft.pm b/Master/tlpkg/tlperl/site/lib/HTTP/Cookies/Microsoft.pm
index 8f73ead2802..caf912cf440 100644
--- a/Master/tlpkg/tlperl/site/lib/HTTP/Cookies/Microsoft.pm
+++ b/Master/tlpkg/tlperl/site/lib/HTTP/Cookies/Microsoft.pm
@@ -2,7 +2,7 @@ package HTTP::Cookies::Microsoft;
use strict;
-our $VERSION = '6.10';
+our $VERSION = '6.11';
require HTTP::Cookies;
our @ISA=qw(HTTP::Cookies);
@@ -244,7 +244,7 @@ HTTP::Cookies::Microsoft - Access to Microsoft cookies files
=head1 VERSION
-version 6.10
+version 6.11
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/site/lib/HTTP/Cookies/Netscape.pm b/Master/tlpkg/tlperl/site/lib/HTTP/Cookies/Netscape.pm
index 15b34c0307d..fb7a18d7f67 100644
--- a/Master/tlpkg/tlperl/site/lib/HTTP/Cookies/Netscape.pm
+++ b/Master/tlpkg/tlperl/site/lib/HTTP/Cookies/Netscape.pm
@@ -2,7 +2,7 @@ package HTTP::Cookies::Netscape;
use strict;
-our $VERSION = '6.10';
+our $VERSION = '6.11';
require HTTP::Cookies;
our @ISA=qw(HTTP::Cookies);
@@ -82,7 +82,7 @@ HTTP::Cookies::Netscape - Access to Netscape cookies files
=head1 VERSION
-version 6.10
+version 6.11
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/site/lib/HTTP/Daemon.pm b/Master/tlpkg/tlperl/site/lib/HTTP/Daemon.pm
index c14f498d03f..f9b321671ea 100644
--- a/Master/tlpkg/tlperl/site/lib/HTTP/Daemon.pm
+++ b/Master/tlpkg/tlperl/site/lib/HTTP/Daemon.pm
@@ -1,11 +1,11 @@
-package HTTP::Daemon; # git description: v6.13-4-ge6492b6
+package HTTP::Daemon; # git description: v6.15-4-gbab5825
# ABSTRACT: A simple http server class
use strict;
use warnings;
-our $VERSION = '6.14';
+our $VERSION = '6.16';
use Socket ();
use IO::Socket::IP;
@@ -192,9 +192,9 @@ READ_HEADER:
}
# Find out how much content to read
- my $te = $r->header('Transfer-Encoding');
- my $ct = $r->header('Content-Type');
- my $len = $r->header('Content-Length');
+ my $tr_enc = $r->header('Transfer-Encoding');
+ my $ct_type = $r->header('Content-Type');
+ my $ct_len = $r->header('Content-Length');
# Act on the Expect header, if it's there
for my $e ($r->header('Expect')) {
@@ -209,7 +209,7 @@ READ_HEADER:
}
}
- if ($te && lc($te) eq 'chunked') {
+ if ($tr_enc && lc($tr_enc) eq 'chunked') {
# Handle chunked transfer encoding
my $body = "";
@@ -280,32 +280,60 @@ READ_HEADER:
$r->push_header($key, $val) if $key;
}
- elsif ($te) {
+ elsif ($tr_enc) {
$self->send_error(501); # Unknown transfer encoding
- $self->reason("Unknown transfer encoding '$te'");
+ $self->reason("Unknown transfer encoding '$tr_enc'");
return;
}
- elsif ($len) {
+ elsif ($ct_len) {
+
+ # After a security issue, we ensure we comply to
+ # RFC-7230 -- HTTP/1.1 Message Syntax and Routing
+ # section 3.3.2 -- Content-Length
+ # section 3.3.3 -- Message Body Length
+
+ # split and clean up Content-Length ', ' separated string
+ my @vals = map {my $str = $_; $str =~ s/^\s+//; $str =~ s/\s+$//; $str }
+ split ',', $ct_len;
+ # check that they are all numbers (RFC: Content-Length = 1*DIGIT)
+ my @nums = grep { /^[0-9]+$/} @vals;
+ unless (@vals == @nums) {
+ my $reason = "Content-Length value must be an unsigned integer";
+ $self->send_error(400, $reason);
+ $self->reason($reason);
+ return;
+ }
+ # check they are all the same
+ my $ct_len = shift @nums;
+ foreach (@nums) {
+ next if $_ == $ct_len;
+ my $reason = "Content-Length values are not the same";
+ $self->send_error(400, $reason);
+ $self->reason($reason);
+ return;
+ }
+ # ensure we have now a fixed header, with only 1 value
+ $r->header('Content-Length' => $ct_len);
# Plain body specified by "Content-Length"
- my $missing = $len - length($buf);
+ my $missing = $ct_len - length($buf);
while ($missing > 0) {
print "Need $missing more bytes of content\n" if $DEBUG;
my $n = $self->_need_more($buf, $timeout, $fdset);
return unless $n;
$missing -= $n;
}
- if (length($buf) > $len) {
- $r->content(substr($buf, 0, $len));
- substr($buf, 0, $len) = '';
+ if (length($buf) > $ct_len) {
+ $r->content(substr($buf, 0, $ct_len));
+ substr($buf, 0, $ct_len) = '';
}
else {
$r->content($buf);
$buf = '';
}
}
- elsif ($ct && $ct =~ m/^multipart\/\w+\s*;.*boundary\s*=\s*("?)(\w+)\1/i) {
+ elsif ($ct_type && $ct_type =~ m/^multipart\/\w+\s*;.*boundary\s*=\s*("?)(\w+)\1/i) {
# Handle multipart content type
my $boundary = "$CRLF--$2--";
@@ -497,8 +525,8 @@ sub send_redirect {
print $self "Location: $loc$CRLF";
if ($content) {
- my $ct = $content =~ /^\s*</ ? "text/html" : "text/plain";
- print $self "Content-Type: $ct$CRLF";
+ my $ct_type = $content =~ /^\s*</ ? "text/html" : "text/plain";
+ print $self "Content-Type: $ct_type$CRLF";
}
print $self $CRLF;
print $self $content if $content && !$self->head_request;
@@ -537,12 +565,12 @@ sub send_file_response {
local (*F);
sysopen(F, $file, 0) or return $self->send_error(RC_FORBIDDEN);
binmode(F);
- my ($ct, $ce) = guess_media_type($file);
+ my ($mime_type, $file_enc) = guess_media_type($file);
my ($size, $mtime) = (stat _)[7, 9];
unless ($self->antique_client) {
$self->send_basic_header;
- print $self "Content-Type: $ct$CRLF";
- print $self "Content-Encoding: $ce$CRLF" if $ce;
+ print $self "Content-Type: $mime_type$CRLF";
+ print $self "Content-Encoding: $file_enc$CRLF" if $file_enc;
print $self "Content-Length: $size$CRLF" if $size;
print $self "Last-Modified: ", time2str($mtime), "$CRLF" if $mtime;
print $self $CRLF;
@@ -603,7 +631,7 @@ HTTP::Daemon - A simple http server class
=head1 VERSION
-version 6.14
+version 6.16
=head1 SYNOPSIS
@@ -915,7 +943,7 @@ Gisle Aas <gisle@activestate.com>
=head1 CONTRIBUTORS
-=for stopwords Olaf Alders Ville Skyttä Karen Etheridge Mark Stosberg Shoichi Kaji Chase Whitener Slaven Rezic Petr Písař Zefram Alexey Tourbin Bron Gondwana Michal Josef Špaček Mike Schilli Tom Hukins Adam Kennedy Sjogren Alex Kapranoff amire80 Andreas J. Koenig Bill Mann Daniel Hedlund David E. Wheeler DAVIDRW Father Chrysostomos Ferenc Erki FWILES Gavin Peters Graeme Thompson Hans-H. Froehlich Ian Kilgore Jacob J jefflee john9art murphy Ondrej Hanak Perlover Peter Rabbitson phrstbrn Robert Stone Rolf Grossmann ruff sasao Sean M. Burke Spiros Denaxas Steve Hay Todd Lipcon Tony Finch Toru Yamaguchi Yuri Karaban
+=for stopwords Olaf Alders Ville Skyttä Graham Knop Karen Etheridge Mark Stosberg Shoichi Kaji Chase Whitener Theo van Hoesel Slaven Rezic Petr Písař Zefram Alexey Tourbin Bron Gondwana Michal Josef Špaček Mike Schilli Tom Hukins Adam Kennedy Sjogren Alex Kapranoff amire80 Andreas J. Koenig Bill Mann Daniel Hedlund David E. Wheeler DAVIDRW Father Chrysostomos Ferenc Erki FWILES Gavin Peters Graeme Thompson Hans-H. Froehlich Ian Kilgore Jacob J jefflee john9art murphy Ondrej Hanak Perlover Peter Rabbitson phrstbrn Robert Stone Rolf Grossmann ruff sasao Sean M. Burke Spiros Denaxas Steve Hay Todd Lipcon Tony Finch Toru Yamaguchi Yuri Karaban
=over 4
@@ -929,6 +957,10 @@ Ville Skyttä <ville.skytta@iki.fi>
=item *
+Graham Knop <haarg@haarg.org>
+
+=item *
+
Karen Etheridge <ether@cpan.org>
=item *
@@ -945,6 +977,10 @@ Chase Whitener <capoeirab@cpan.org>
=item *
+Theo van Hoesel <tvanhoesel@perceptyx.com>
+
+=item *
+
Slaven Rezic <slaven@rezic.de>
=item *
diff --git a/Master/tlpkg/tlperl/site/lib/HTTP/Date.pm b/Master/tlpkg/tlperl/site/lib/HTTP/Date.pm
index a57d0b8deda..53711c58657 100644
--- a/Master/tlpkg/tlperl/site/lib/HTTP/Date.pm
+++ b/Master/tlpkg/tlperl/site/lib/HTTP/Date.pm
@@ -2,7 +2,7 @@ package HTTP::Date;
use strict;
-our $VERSION = '6.05';
+our $VERSION = '6.06';
require Exporter;
our @ISA = qw(Exporter);
@@ -179,7 +179,7 @@ sub parse_date ($) {
||
- # Windows 'dir' 11-12-96 03:52PM
+ # Windows 'dir': '11-12-96 03:52PM' and four-digit year variant
(
( $mon, $day, $yr, $hr, $min, $ampm )
= /^
@@ -187,7 +187,7 @@ sub parse_date ($) {
-
(\d{2}) # day
-
- (\d{2}) # year
+ (\d{2,4}) # year
\s+
(\d\d?):(\d\d)([APap][Mm]) # hour:min AM or PM
\s*$
@@ -289,7 +289,7 @@ HTTP::Date - HTTP::Date - date conversion routines
=head1 VERSION
-version 6.05
+version 6.06
=head1 SYNOPSIS
@@ -378,7 +378,8 @@ The function is able to parse the following formats:
"Feb 3 1994" -- Unix 'ls -l' format
"Feb 3 17:03" -- Unix 'ls -l' format
- "11-15-96 03:52PM" -- Windows 'dir' format
+ "11-15-96 03:52PM" -- Windows 'dir' format
+ "11-15-1996 03:52PM" -- Windows 'dir' format with four-digit year
The parser ignores leading and trailing whitespace. It also allow the
seconds to be missing and the month to be numerical in most formats.
@@ -410,7 +411,7 @@ Gisle Aas <gisle@activestate.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 1995-2019 by Gisle Aas.
+This software is copyright (c) 1995 by Gisle Aas.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
diff --git a/Master/tlpkg/tlperl/site/lib/LWP.pm b/Master/tlpkg/tlperl/site/lib/LWP.pm
deleted file mode 100644
index 1db7504a6eb..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP.pm
+++ /dev/null
@@ -1,671 +0,0 @@
-package LWP;
-
-our $VERSION = '6.61';
-
-require LWP::UserAgent; # this should load everything you need
-
-sub Version { $VERSION; }
-
-1;
-
-__END__
-
-=pod
-
-=encoding utf-8
-
-=head1 NAME
-
-LWP - The World-Wide Web library for Perl
-
-=head1 SYNOPSIS
-
- use LWP;
- print "This is libwww-perl-$LWP::VERSION\n";
-
-
-=head1 DESCRIPTION
-
-The libwww-perl collection is a set of Perl modules which provides a
-simple and consistent application programming interface (API) to the
-World-Wide Web. The main focus of the library is to provide classes
-and functions that allow you to write WWW clients. The library also
-contain modules that are of more general use and even classes that
-help you implement simple HTTP servers.
-
-Most modules in this library provide an object oriented API. The user
-agent, requests sent and responses received from the WWW server are
-all represented by objects. This makes a simple and powerful
-interface to these services. The interface is easy to extend
-and customize for your own needs.
-
-The main features of the library are:
-
-=over 3
-
-=item *
-
-Contains various reusable components (modules) that can be
-used separately or together.
-
-=item *
-
-Provides an object oriented model of HTTP-style communication. Within
-this framework we currently support access to C<http>, C<https>, C<gopher>,
-C<ftp>, C<news>, C<file>, and C<mailto> resources.
-
-=item *
-
-Provides a full object oriented interface or
-a very simple procedural interface.
-
-=item *
-
-Supports the basic and digest authorization schemes.
-
-=item *
-
-Supports transparent redirect handling.
-
-=item *
-
-Supports access through proxy servers.
-
-=item *
-
-Provides parser for F<robots.txt> files and a framework for constructing robots.
-
-=item *
-
-Supports parsing of HTML forms.
-
-=item *
-
-Implements HTTP content negotiation algorithm that can
-be used both in protocol modules and in server scripts (like CGI
-scripts).
-
-=item *
-
-Supports HTTP cookies.
-
-=item *
-
-Some simple command line clients, for instance C<lwp-request> and C<lwp-download>.
-
-=back
-
-
-=head1 HTTP STYLE COMMUNICATION
-
-
-The libwww-perl library is based on HTTP style communication. This
-section tries to describe what that means.
-
-Let us start with this quote from the HTTP specification document
-L<http://www.w3.org/Protocols/>:
-
-=over 3
-
-=item *
-
-The HTTP protocol is based on a request/response paradigm. A client
-establishes a connection with a server and sends a request to the
-server in the form of a request method, URI, and protocol version,
-followed by a MIME-like message containing request modifiers, client
-information, and possible body content. The server responds with a
-status line, including the message's protocol version and a success or
-error code, followed by a MIME-like message containing server
-information, entity meta-information, and possible body content.
-
-=back
-
-What this means to libwww-perl is that communication always take place
-through these steps: First a I<request> object is created and
-configured. This object is then passed to a server and we get a
-I<response> object in return that we can examine. A request is always
-independent of any previous requests, i.e. the service is stateless.
-The same simple model is used for any kind of service we want to
-access.
-
-For example, if we want to fetch a document from a remote file server,
-then we send it a request that contains a name for that document and
-the response will contain the document itself. If we access a search
-engine, then the content of the request will contain the query
-parameters and the response will contain the query result. If we want
-to send a mail message to somebody then we send a request object which
-contains our message to the mail server and the response object will
-contain an acknowledgment that tells us that the message has been
-accepted and will be forwarded to the recipient(s).
-
-It is as simple as that!
-
-
-=head2 The Request Object
-
-The libwww-perl request object has the class name L<HTTP::Request>.
-The fact that the class name uses C<HTTP::> as a
-prefix only implies that we use the HTTP model of communication. It
-does not limit the kind of services we can try to pass this I<request>
-to. For instance, we will send L<HTTP::Request>s both to ftp and
-gopher servers, as well as to the local file system.
-
-The main attributes of the request objects are:
-
-=over 3
-
-=item *
-
-B<method> is a short string that tells what kind of
-request this is. The most common methods are B<GET>, B<PUT>,
-B<POST> and B<HEAD>.
-
-=item *
-
-B<uri> is a string denoting the protocol, server and
-the name of the "document" we want to access. The B<uri> might
-also encode various other parameters.
-
-=item *
-
-B<headers> contains additional information about the
-request and can also used to describe the content. The headers
-are a set of keyword/value pairs.
-
-=item *
-
-B<content> is an arbitrary amount of data.
-
-=back
-
-=head2 The Response Object
-
-The libwww-perl response object has the class name L<HTTP::Response>.
-The main attributes of objects of this class are:
-
-=over 3
-
-=item *
-
-B<code> is a numerical value that indicates the overall
-outcome of the request.
-
-=item *
-
-B<message> is a short, human readable string that
-corresponds to the I<code>.
-
-=item *
-
-B<headers> contains additional information about the
-response and describe the content.
-
-=item *
-
-B<content> is an arbitrary amount of data.
-
-=back
-
-Since we don't want to handle all possible I<code> values directly in
-our programs, a libwww-perl response object has methods that can be
-used to query what kind of response this is. The most commonly used
-response classification methods are:
-
-=over 3
-
-=item is_success()
-
-The request was successfully received, understood or accepted.
-
-=item is_error()
-
-The request failed. The server or the resource might not be
-available, access to the resource might be denied or other things might
-have failed for some reason.
-
-=back
-
-=head2 The User Agent
-
-Let us assume that we have created a I<request> object. What do we
-actually do with it in order to receive a I<response>?
-
-The answer is that you pass it to a I<user agent> object and this
-object takes care of all the things that need to be done
-(like low-level communication and error handling) and returns
-a I<response> object. The user agent represents your
-application on the network and provides you with an interface that
-can accept I<requests> and return I<responses>.
-
-The user agent is an interface layer between
-your application code and the network. Through this interface you are
-able to access the various servers on the network.
-
-The class name for the user agent is L<LWP::UserAgent>. Every
-libwww-perl application that wants to communicate should create at
-least one object of this class. The main method provided by this
-object is request(). This method takes an L<HTTP::Request> object as
-argument and (eventually) returns a L<HTTP::Response> object.
-
-The user agent has many other attributes that let you
-configure how it will interact with the network and with your
-application.
-
-=over 3
-
-=item *
-
-B<timeout> specifies how much time we give remote servers to
-respond before the library disconnects and creates an
-internal I<timeout> response.
-
-=item *
-
-B<agent> specifies the name that your application uses when it
-presents itself on the network.
-
-=item *
-
-B<from> can be set to the e-mail address of the person
-responsible for running the application. If this is set, then the
-address will be sent to the servers with every request.
-
-=item *
-
-B<parse_head> specifies whether we should initialize response
-headers from the C<< <head> >> section of HTML documents.
-
-=item *
-
-B<proxy> and B<no_proxy> specify if and when to go through
-a proxy server. L<http://www.w3.org/History/1994/WWW/Proxies/>
-
-=item *
-
-B<credentials> provides a way to set up user names and
-passwords needed to access certain services.
-
-=back
-
-Many applications want even more control over how they interact
-with the network and they get this by sub-classing
-L<LWP::UserAgent>. The library includes a
-sub-class, L<LWP::RobotUA>, for robot applications.
-
-=head2 An Example
-
-This example shows how the user agent, a request and a response are
-represented in actual perl code:
-
- # Create a user agent object
- use LWP::UserAgent;
- my $ua = LWP::UserAgent->new;
- $ua->agent("MyApp/0.1 ");
-
- # Create a request
- my $req = HTTP::Request->new(POST => 'http://search.cpan.org/search');
- $req->content_type('application/x-www-form-urlencoded');
- $req->content('query=libwww-perl&mode=dist');
-
- # Pass request to the user agent and get a response back
- my $res = $ua->request($req);
-
- # Check the outcome of the response
- if ($res->is_success) {
- print $res->content;
- }
- else {
- print $res->status_line, "\n";
- }
-
-The C<$ua> is created once when the application starts up. New request
-objects should normally created for each request sent.
-
-
-=head1 NETWORK SUPPORT
-
-This section discusses the various protocol schemes and
-the HTTP style methods that headers may be used for each.
-
-For all requests, a "User-Agent" header is added and initialized from
-the C<< $ua->agent >> attribute before the request is handed to the network
-layer. In the same way, a "From" header is initialized from the
-$ua->from attribute.
-
-For all responses, the library adds a header called "Client-Date".
-This header holds the time when the response was received by
-your application. The format and semantics of the header are the
-same as the server created "Date" header. You may also encounter other
-"Client-XXX" headers. They are all generated by the library
-internally and are not received from the servers.
-
-=head2 HTTP Requests
-
-HTTP requests are just handed off to an HTTP server and it
-decides what happens. Few servers implement methods beside the usual
-"GET", "HEAD", "POST" and "PUT", but CGI-scripts may implement
-any method they like.
-
-If the server is not available then the library will generate an
-internal error response.
-
-The library automatically adds a "Host" and a "Content-Length" header
-to the HTTP request before it is sent over the network.
-
-For a GET request you might want to add an "If-Modified-Since" or
-"If-None-Match" header to make the request conditional.
-
-For a POST request you should add the "Content-Type" header. When you
-try to emulate HTML E<lt>FORM> handling you should usually let the value
-of the "Content-Type" header be "application/x-www-form-urlencoded".
-See L<lwpcook> for examples of this.
-
-The libwww-perl HTTP implementation currently support the HTTP/1.1
-and HTTP/1.0 protocol.
-
-The library allows you to access proxy server through HTTP. This
-means that you can set up the library to forward all types of request
-through the HTTP protocol module. See L<LWP::UserAgent> for
-documentation of this.
-
-
-=head2 HTTPS Requests
-
-HTTPS requests are HTTP requests over an encrypted network connection
-using the SSL protocol developed by Netscape. Everything about HTTP
-requests above also apply to HTTPS requests. In addition the library
-will add the headers "Client-SSL-Cipher", "Client-SSL-Cert-Subject" and
-"Client-SSL-Cert-Issuer" to the response. These headers denote the
-encryption method used and the name of the server owner.
-
-The request can contain the header "If-SSL-Cert-Subject" in order to
-make the request conditional on the content of the server certificate.
-If the certificate subject does not match, no request is sent to the
-server and an internally generated error response is returned. The
-value of the "If-SSL-Cert-Subject" header is interpreted as a Perl
-regular expression.
-
-
-=head2 FTP Requests
-
-The library currently supports GET, HEAD and PUT requests. GET
-retrieves a file or a directory listing from an FTP server. PUT
-stores a file on a ftp server.
-
-You can specify a ftp account for servers that want this in addition
-to user name and password. This is specified by including an "Account"
-header in the request.
-
-User name/password can be specified using basic authorization or be
-encoded in the URL. Failed logins return an UNAUTHORIZED response with
-"WWW-Authenticate: Basic" and can be treated like basic authorization
-for HTTP.
-
-The library supports ftp ASCII transfer mode by specifying the "type=a"
-parameter in the URL. It also supports transfer of ranges for FTP transfers
-using the "Range" header.
-
-Directory listings are by default returned unprocessed (as returned
-from the ftp server) with the content media type reported to be
-"text/ftp-dir-listing". The L<File::Listing> module provides methods
-for parsing of these directory listing.
-
-The ftp module is also able to convert directory listings to HTML and
-this can be requested via the standard HTTP content negotiation
-mechanisms (add an "Accept: text/html" header in the request if you
-want this).
-
-For normal file retrievals, the "Content-Type" is guessed based on the
-file name suffix. See L<LWP::MediaTypes>.
-
-The "If-Modified-Since" request header works for servers that implement
-the C<MDTM> command. It will probably not work for directory listings though.
-
-Example:
-
- $req = HTTP::Request->new(GET => 'ftp://me:passwd@ftp.some.where.com/');
- $req->header(Accept => "text/html, */*;q=0.1");
-
-=head2 News Requests
-
-Access to the USENET News system is implemented through the NNTP
-protocol. The name of the news server is obtained from the
-NNTP_SERVER environment variable and defaults to "news". It is not
-possible to specify the hostname of the NNTP server in news: URLs.
-
-The library supports GET and HEAD to retrieve news articles through the
-NNTP protocol. You can also post articles to newsgroups by using
-(surprise!) the POST method.
-
-GET on newsgroups is not implemented yet.
-
-Examples:
-
- $req = HTTP::Request->new(GET => 'news:abc1234@a.sn.no');
-
- $req = HTTP::Request->new(POST => 'news:comp.lang.perl.test');
- $req->header(Subject => 'This is a test',
- From => 'me@some.where.org');
- $req->content(<<EOT);
- This is the content of the message that we are sending to
- the world.
- EOT
-
-
-=head2 Gopher Request
-
-The library supports the GET and HEAD methods for gopher requests. All
-request header values are ignored. HEAD cheats and returns a
-response without even talking to server.
-
-Gopher menus are always converted to HTML.
-
-The response "Content-Type" is generated from the document type
-encoded (as the first letter) in the request URL path itself.
-
-Example:
-
- $req = HTTP::Request->new(GET => 'gopher://gopher.sn.no/');
-
-
-
-=head2 File Request
-
-The library supports GET and HEAD methods for file requests. The
-"If-Modified-Since" header is supported. All other headers are
-ignored. The I<host> component of the file URL must be empty or set
-to "localhost". Any other I<host> value will be treated as an error.
-
-Directories are always converted to an HTML document. For normal
-files, the "Content-Type" and "Content-Encoding" in the response are
-guessed based on the file suffix.
-
-Example:
-
- $req = HTTP::Request->new(GET => 'file:/etc/passwd');
-
-
-=head2 Mailto Request
-
-You can send (aka "POST") mail messages using the library. All
-headers specified for the request are passed on to the mail system.
-The "To" header is initialized from the mail address in the URL.
-
-Example:
-
- $req = HTTP::Request->new(POST => 'mailto:libwww@perl.org');
- $req->header(Subject => "subscribe");
- $req->content("Please subscribe me to the libwww-perl mailing list!\n");
-
-=head2 CPAN Requests
-
-URLs with scheme C<cpan:> are redirected to a suitable CPAN
-mirror. If you have your own local mirror of CPAN you might tell LWP
-to use it for C<cpan:> URLs by an assignment like this:
-
- $LWP::Protocol::cpan::CPAN = "file:/local/CPAN/";
-
-Suitable CPAN mirrors are also picked up from the configuration for
-the CPAN.pm, so if you have used that module a suitable mirror should
-be picked automatically. If neither of these apply, then a redirect
-to the generic CPAN http location is issued.
-
-Example request to download the newest perl:
-
- $req = HTTP::Request->new(GET => "cpan:src/latest.tar.gz");
-
-
-=head1 OVERVIEW OF CLASSES AND PACKAGES
-
-This table should give you a quick overview of the classes provided by the
-library. Indentation shows class inheritance.
-
- LWP::MemberMixin -- Access to member variables of Perl5 classes
- LWP::UserAgent -- WWW user agent class
- LWP::RobotUA -- When developing a robot applications
- LWP::Protocol -- Interface to various protocol schemes
- LWP::Protocol::http -- http:// access
- LWP::Protocol::file -- file:// access
- LWP::Protocol::ftp -- ftp:// access
- ...
-
- LWP::Authen::Basic -- Handle 401 and 407 responses
- LWP::Authen::Digest
-
- HTTP::Headers -- MIME/RFC822 style header (used by HTTP::Message)
- HTTP::Message -- HTTP style message
- HTTP::Request -- HTTP request
- HTTP::Response -- HTTP response
- HTTP::Daemon -- A HTTP server class
-
- WWW::RobotRules -- Parse robots.txt files
- WWW::RobotRules::AnyDBM_File -- Persistent RobotRules
-
- Net::HTTP -- Low level HTTP client
-
-The following modules provide various functions and definitions.
-
- LWP -- This file. Library version number and documentation.
- LWP::MediaTypes -- MIME types configuration (text/html etc.)
- LWP::Simple -- Simplified procedural interface for common functions
- HTTP::Status -- HTTP status code (200 OK etc)
- HTTP::Date -- Date parsing module for HTTP date formats
- HTTP::Negotiate -- HTTP content negotiation calculation
- File::Listing -- Parse directory listings
- HTML::Form -- Processing for <form>s in HTML documents
-
-
-=head1 MORE DOCUMENTATION
-
-All modules contain detailed information on the interfaces they
-provide. The L<lwpcook> manpage is the libwww-perl cookbook that contain
-examples of typical usage of the library. You might want to take a
-look at how the scripts L<lwp-request>, L<lwp-download>, L<lwp-dump>
-and L<lwp-mirror> are implemented.
-
-=head1 ENVIRONMENT
-
-The following environment variables are used by LWP:
-
-=over
-
-=item HOME
-
-The L<LWP::MediaTypes> functions will look for the F<.media.types> and
-F<.mime.types> files relative to you home directory.
-
-=item http_proxy
-
-=item ftp_proxy
-
-=item xxx_proxy
-
-=item no_proxy
-
-These environment variables can be set to enable communication through
-a proxy server. See the description of the C<env_proxy> method in
-L<LWP::UserAgent>.
-
-=item PERL_LWP_ENV_PROXY
-
-If set to a TRUE value, then the L<LWP::UserAgent> will by default call
-C<env_proxy> during initialization. This makes LWP honor the proxy variables
-described above.
-
-=item PERL_LWP_SSL_VERIFY_HOSTNAME
-
-The default C<verify_hostname> setting for L<LWP::UserAgent>. If
-not set the default will be 1. Set it as 0 to disable hostname
-verification (the default prior to libwww-perl 5.840.
-
-=item PERL_LWP_SSL_CA_FILE
-
-=item PERL_LWP_SSL_CA_PATH
-
-The file and/or directory
-where the trusted Certificate Authority certificates
-is located. See L<LWP::UserAgent> for details.
-
-=item PERL_HTTP_URI_CLASS
-
-Used to decide what URI objects to instantiate. The default is L<URI>.
-You might want to set it to L<URI::URL> for compatibility with old times.
-
-=back
-
-=head1 AUTHORS
-
-LWP was made possible by contributions from Adam Newby, Albert
-Dvornik, Alexandre Duret-Lutz, Andreas Gustafsson, Andreas König,
-Andrew Pimlott, Andy Lester, Ben Coleman, Benjamin Low, Ben Low, Ben
-Tilly, Blair Zajac, Bob Dalgleish, BooK, Brad Hughes, Brian
-J. Murrell, Brian McCauley, Charles C. Fu, Charles Lane, Chris Nandor,
-Christian Gilmore, Chris W. Unger, Craig Macdonald, Dale Couch, Dan
-Kubb, Dave Dunkin, Dave W. Smith, David Coppit, David Dick, David
-D. Kilzer, Doug MacEachern, Edward Avis, erik, Gary Shea, Gisle Aas,
-Graham Barr, Gurusamy Sarathy, Hans de Graaff, Harald Joerg, Harry
-Bochner, Hugo, Ilya Zakharevich, INOUE Yoshinari, Ivan Panchenko, Jack
-Shirazi, James Tillman, Jan Dubois, Jared Rhine, Jim Stern, Joao
-Lopes, John Klar, Johnny Lee, Josh Kronengold, Josh Rai, Joshua
-Chamas, Joshua Hoblitt, Kartik Subbarao, Keiichiro Nagano, Ken
-Williams, KONISHI Katsuhiro, Lee T Lindley, Liam Quinn, Marc Hedlund,
-Marc Langheinrich, Mark D. Anderson, Marko Asplund, Mark Stosberg,
-Markus B Krüger, Markus Laker, Martijn Koster, Martin Thurn, Matthew
-Eldridge, Matthew.van.Eerde, Matt Sergeant, Michael A. Chase, Michael
-Quaranta, Michael Thompson, Mike Schilli, Moshe Kaminsky, Nathan
-Torkington, Nicolai Langfeldt, Norton Allen, Olly Betts, Paul
-J. Schinder, peterm, Philip Guenther, Daniel Buenzli, Pon Hwa Lin,
-Radoslaw Zielinski, Radu Greab, Randal L. Schwartz, Richard Chen,
-Robin Barker, Roy Fielding, Sander van Zoest, Sean M. Burke,
-shildreth, Slaven Rezic, Steve A Fink, Steve Hay, Steven Butler,
-Steve_Kilbane, Takanori Ugai, Thomas Lotterer, Tim Bunce, Tom Hughes,
-Tony Finch, Ville Skyttä, Ward Vandewege, William York, Yale Huang,
-and Yitzchak Scott-Thoennes.
-
-LWP owes a lot in motivation, design, and code, to the libwww-perl
-library for Perl4 by Roy Fielding, which included work from Alberto
-Accomazzi, James Casey, Brooks Cutter, Martijn Koster, Oscar
-Nierstrasz, Mel Melchner, Gertjan van Oosten, Jared Rhine, Jack
-Shirazi, Gene Spafford, Marc VanHeyningen, Steven E. Brenner, Marion
-Hakanson, Waldemar Kebsch, Tony Sanders, and Larry Wall; see the
-libwww-perl-0.40 library for details.
-
-=head1 COPYRIGHT
-
- Copyright 1995-2009, Gisle Aas
- Copyright 1995, Martijn Koster
-
-This library is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=head1 AVAILABILITY
-
-The latest version of this library is likely to be available from CPAN
-as well as:
-
- http://github.com/libwww-perl/libwww-perl
-
-The best place to discuss this code is on the <libwww@perl.org>
-mailing list.
-
-=cut
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Authen/Basic.pm b/Master/tlpkg/tlperl/site/lib/LWP/Authen/Basic.pm
deleted file mode 100644
index 6af1441bddd..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Authen/Basic.pm
+++ /dev/null
@@ -1,86 +0,0 @@
-package LWP::Authen::Basic;
-
-use strict;
-
-our $VERSION = '6.61';
-
-require Encode;
-require MIME::Base64;
-
-sub auth_header {
- my($class, $user, $pass, $request, $ua, $h) = @_;
-
- my $userpass = "$user:$pass";
- # https://tools.ietf.org/html/rfc7617#section-2.1
- my $charset = uc($h->{auth_param}->{charset} || "");
- $userpass = Encode::encode($charset, $userpass)
- if ($charset eq "UTF-8");
-
- return "Basic " . MIME::Base64::encode($userpass, "");
-}
-
-sub _reauth_requested {
- return 0;
-}
-
-sub authenticate
-{
- my($class, $ua, $proxy, $auth_param, $response,
- $request, $arg, $size) = @_;
-
- my $realm = $auth_param->{realm} || "";
- my $url = $proxy ? $request->{proxy} : $request->uri_canonical;
- return $response unless $url;
- my $host_port = $url->host_port;
- my $auth_header = $proxy ? "Proxy-Authorization" : "Authorization";
-
- my @m = $proxy ? (m_proxy => $url) : (m_host_port => $host_port);
- push(@m, realm => $realm);
-
- my $h = $ua->get_my_handler("request_prepare", @m, sub {
- $_[0]{callback} = sub {
- my($req, $ua, $h) = @_;
- my($user, $pass) = $ua->credentials($host_port, $h->{realm});
- if (defined $user) {
- my $auth_value = $class->auth_header($user, $pass, $req, $ua, $h);
- $req->header($auth_header => $auth_value);
- }
- };
- });
- $h->{auth_param} = $auth_param;
-
- my $reauth_requested
- = $class->_reauth_requested($auth_param, $ua, $request, $auth_header);
- if ( !$proxy
- && (!$request->header($auth_header) || $reauth_requested)
- && $ua->credentials($host_port, $realm))
- {
- # we can make sure this handler applies and retry
- add_path($h, $url->path)
- unless $reauth_requested; # Do not clobber up path list for retries
- return $ua->request($request->clone, $arg, $size, $response);
- }
-
- my($user, $pass) = $ua->get_basic_credentials($realm, $url, $proxy);
- unless (defined $user and defined $pass) {
- $ua->set_my_handler("request_prepare", undef, @m); # delete handler
- return $response;
- }
-
- # check that the password has changed
- my ($olduser, $oldpass) = $ua->credentials($host_port, $realm);
- return $response if (defined $olduser and defined $oldpass and
- $user eq $olduser and $pass eq $oldpass);
-
- $ua->credentials($host_port, $realm, $user, $pass);
- add_path($h, $url->path) unless $proxy;
- return $ua->request($request->clone, $arg, $size, $response);
-}
-
-sub add_path {
- my($h, $path) = @_;
- $path =~ s,[^/]+\z,,;
- push(@{$h->{m_path_prefix}}, $path);
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Authen/Digest.pm b/Master/tlpkg/tlperl/site/lib/LWP/Authen/Digest.pm
deleted file mode 100644
index bb1d9ae3c8f..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Authen/Digest.pm
+++ /dev/null
@@ -1,80 +0,0 @@
-package LWP::Authen::Digest;
-
-use strict;
-use parent 'LWP::Authen::Basic';
-
-our $VERSION = '6.61';
-
-require Digest::MD5;
-
-sub _reauth_requested {
- my ($class, $auth_param, $ua, $request, $auth_header) = @_;
- my $ret = defined($$auth_param{stale}) && lc($$auth_param{stale}) eq 'true';
- if ($ret) {
- my $hdr = $request->header($auth_header);
- $hdr =~ tr/,/;/; # "," is used to separate auth-params!!
- ($hdr) = HTTP::Headers::Util::split_header_words($hdr);
- my $nonce = {@$hdr}->{nonce};
- delete $$ua{authen_md5_nonce_count}{$nonce};
- }
- return $ret;
-}
-
-sub auth_header {
- my($class, $user, $pass, $request, $ua, $h) = @_;
-
- my $auth_param = $h->{auth_param};
-
- my $nc = sprintf "%08X", ++$ua->{authen_md5_nonce_count}{$auth_param->{nonce}};
- my $cnonce = sprintf "%8x", time;
-
- my $uri = $request->uri->path_query;
- $uri = "/" unless length $uri;
-
- my $md5 = Digest::MD5->new;
-
- my(@digest);
- $md5->add(join(":", $user, $auth_param->{realm}, $pass));
- push(@digest, $md5->hexdigest);
- $md5->reset;
-
- push(@digest, $auth_param->{nonce});
-
- if ($auth_param->{qop}) {
- push(@digest, $nc, $cnonce, ($auth_param->{qop} =~ m|^auth[,;]auth-int$|) ? 'auth' : $auth_param->{qop});
- }
-
- $md5->add(join(":", $request->method, $uri));
- push(@digest, $md5->hexdigest);
- $md5->reset;
-
- $md5->add(join(":", @digest));
- my($digest) = $md5->hexdigest;
- $md5->reset;
-
- my %resp = map { $_ => $auth_param->{$_} } qw(realm nonce opaque);
- @resp{qw(username uri response algorithm)} = ($user, $uri, $digest, "MD5");
-
- if (($auth_param->{qop} || "") =~ m|^auth([,;]auth-int)?$|) {
- @resp{qw(qop cnonce nc)} = ("auth", $cnonce, $nc);
- }
-
- my(@order) = qw(username realm qop algorithm uri nonce nc cnonce response opaque);
- my @pairs;
- for (@order) {
- next unless defined $resp{$_};
-
- # RFC2617 says that qop-value and nc-value should be unquoted.
- if ( $_ eq 'qop' || $_ eq 'nc' ) {
- push(@pairs, "$_=" . $resp{$_});
- }
- else {
- push(@pairs, "$_=" . qq("$resp{$_}"));
- }
- }
-
- my $auth_value = "Digest " . join(", ", @pairs);
- return $auth_value;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Authen/Ntlm.pm b/Master/tlpkg/tlperl/site/lib/LWP/Authen/Ntlm.pm
deleted file mode 100644
index de745af6acc..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Authen/Ntlm.pm
+++ /dev/null
@@ -1,183 +0,0 @@
-package LWP::Authen::Ntlm;
-
-use strict;
-
-our $VERSION = '6.61';
-
-use Authen::NTLM "1.02";
-use MIME::Base64 "2.12";
-
-sub authenticate {
- my($class, $ua, $proxy, $auth_param, $response,
- $request, $arg, $size) = @_;
-
- my($user, $pass) = $ua->get_basic_credentials($auth_param->{realm},
- $request->uri, $proxy);
-
- unless(defined $user and defined $pass) {
- return $response;
- }
-
- if (!$ua->conn_cache()) {
- warn "The keep_alive option must be enabled for NTLM authentication to work. NTLM authentication aborted.\n";
- return $response;
- }
-
- my($domain, $username) = split(/\\/, $user);
-
- ntlm_domain($domain);
- ntlm_user($username);
- ntlm_password($pass);
-
- my $auth_header = $proxy ? "Proxy-Authorization" : "Authorization";
-
- # my ($challenge) = $response->header('WWW-Authenticate');
- my $challenge;
- foreach ($response->header('WWW-Authenticate')) {
- last if /^NTLM/ && ($challenge=$_);
- }
-
- if ($challenge eq 'NTLM') {
- # First phase, send handshake
- my $auth_value = "NTLM " . ntlm();
- ntlm_reset();
-
- # Need to check this isn't a repeated fail!
- my $r = $response;
- my $retry_count = 0;
- while ($r) {
- my $auth = $r->request->header($auth_header);
- ++$retry_count if ($auth && $auth eq $auth_value);
- if ($retry_count > 2) {
- # here we know this failed before
- $response->header("Client-Warning" =>
- "Credentials for '$user' failed before");
- return $response;
- }
- $r = $r->previous;
- }
-
- my $referral = $request->clone;
- $referral->header($auth_header => $auth_value);
- return $ua->request($referral, $arg, $size, $response);
- }
-
- else {
- # Second phase, use the response challenge (unless non-401 code
- # was returned, in which case, we just send back the response
- # object, as is
- my $auth_value;
- if ($response->code ne '401') {
- return $response;
- }
- else {
- my $challenge;
- foreach ($response->header('WWW-Authenticate')) {
- last if /^NTLM/ && ($challenge=$_);
- }
- $challenge =~ s/^NTLM //;
- ntlm();
- $auth_value = "NTLM " . ntlm($challenge);
- ntlm_reset();
- }
-
- my $referral = $request->clone;
- $referral->header($auth_header => $auth_value);
- my $response2 = $ua->request($referral, $arg, $size, $response);
- return $response2;
- }
-}
-
-1;
-__END__
-
-=pod
-
-=head1 NAME
-
-LWP::Authen::Ntlm - Library for enabling NTLM authentication (Microsoft) in LWP
-
-=head1 SYNOPSIS
-
- use LWP::UserAgent;
- use HTTP::Request::Common;
- my $url = 'http://www.company.com/protected_page.html';
-
- # Set up the ntlm client and then the base64 encoded ntlm handshake message
- my $ua = LWP::UserAgent->new(keep_alive=>1);
- $ua->credentials('www.company.com:80', '', "MyDomain\\MyUserCode", 'MyPassword');
-
- $request = GET $url;
- print "--Performing request now...-----------\n";
- $response = $ua->request($request);
- print "--Done with request-------------------\n";
-
- if ($response->is_success) {print "It worked!->" . $response->code . "\n"}
- else {print "It didn't work!->" . $response->code . "\n"}
-
-=head1 DESCRIPTION
-
-L<LWP::Authen::Ntlm> allows LWP to authenticate against servers that are using the
-NTLM authentication scheme popularized by Microsoft. This type of authentication is
-common on intranets of Microsoft-centric organizations.
-
-The module takes advantage of the Authen::NTLM module by Mark Bush. Since there
-is also another Authen::NTLM module available from CPAN by Yee Man Chan with an
-entirely different interface, it is necessary to ensure that you have the correct
-NTLM module.
-
-In addition, there have been problems with incompatibilities between different
-versions of L<Mime::Base64>, which Bush's L<Authen::NTLM> makes use of. Therefore, it is
-necessary to ensure that your Mime::Base64 module supports exporting of the
-C<encode_base64> and C<decode_base64> functions.
-
-=head1 USAGE
-
-The module is used indirectly through LWP, rather than including it directly in your
-code. The LWP system will invoke the NTLM authentication when it encounters the
-authentication scheme while attempting to retrieve a URL from a server. In order
-for the NTLM authentication to work, you must have a few things set up in your
-code prior to attempting to retrieve the URL:
-
-=over 4
-
-=item *
-
-Enable persistent HTTP connections
-
-To do this, pass the C<< "keep_alive=>1" >> option to the L<LWP::UserAgent> when creating it, like this:
-
- my $ua = LWP::UserAgent->new(keep_alive=>1);
-
-=item *
-
-Set the credentials on the UserAgent object
-
-The credentials must be set like this:
-
- $ua->credentials('www.company.com:80', '', "MyDomain\\MyUserCode", 'MyPassword');
-
-Note that you cannot use the L<HTTP::Request> object's C<authorization_basic()> method to set
-the credentials. Note, too, that the C<'www.company.com:80'> portion only sets credentials
-on the specified port AND it is case-sensitive (this is due to the way LWP is coded, and
-has nothing to do with LWP::Authen::Ntlm)
-
-=back
-
-=head1 AVAILABILITY
-
-General queries regarding LWP should be made to the LWP Mailing List.
-
-Questions specific to LWP::Authen::Ntlm can be forwarded to jtillman@bigfoot.com
-
-=head1 COPYRIGHT
-
-Copyright (c) 2002 James Tillman. All rights reserved. This
-program is free software; you can redistribute it and/or modify it
-under the same terms as Perl itself.
-
-=head1 SEE ALSO
-
-L<LWP>, L<LWP::UserAgent>, L<lwpcook>.
-
-=cut
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/ConnCache.pm b/Master/tlpkg/tlperl/site/lib/LWP/ConnCache.pm
deleted file mode 100644
index 67dfff6f6c4..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/ConnCache.pm
+++ /dev/null
@@ -1,350 +0,0 @@
-package LWP::ConnCache;
-
-use strict;
-
-our $VERSION = '6.61';
-our $DEBUG;
-
-sub new {
- my($class, %cnf) = @_;
-
- my $total_capacity = 1;
- if (exists $cnf{total_capacity}) {
- $total_capacity = delete $cnf{total_capacity};
- }
- if (%cnf && $^W) {
- require Carp;
- Carp::carp("Unrecognised options: @{[sort keys %cnf]}")
- }
- my $self = bless { cc_conns => [] }, $class;
- $self->total_capacity($total_capacity);
- $self;
-}
-
-
-sub deposit {
- my($self, $type, $key, $conn) = @_;
- push(@{$self->{cc_conns}}, [$conn, $type, $key, time]);
- $self->enforce_limits($type);
- return;
-}
-
-
-sub withdraw {
- my($self, $type, $key) = @_;
- my $conns = $self->{cc_conns};
- for my $i (0 .. @$conns - 1) {
- my $c = $conns->[$i];
- next unless $c->[1] eq $type && $c->[2] eq $key;
- splice(@$conns, $i, 1); # remove it
- return $c->[0];
- }
- return undef;
-}
-
-
-sub total_capacity {
- my $self = shift;
- my $old = $self->{cc_limit_total};
- if (@_) {
- $self->{cc_limit_total} = shift;
- $self->enforce_limits;
- }
- $old;
-}
-
-
-sub capacity {
- my $self = shift;
- my $type = shift;
- my $old = $self->{cc_limit}{$type};
- if (@_) {
- $self->{cc_limit}{$type} = shift;
- $self->enforce_limits($type);
- }
- $old;
-}
-
-
-sub enforce_limits {
- my($self, $type) = @_;
- my $conns = $self->{cc_conns};
-
- my @types = $type ? ($type) : ($self->get_types);
- for $type (@types) {
- next unless $self->{cc_limit};
- my $limit = $self->{cc_limit}{$type};
- next unless defined $limit;
- for my $i (reverse 0 .. @$conns - 1) {
- next unless $conns->[$i][1] eq $type;
- if (--$limit < 0) {
- $self->dropping(splice(@$conns, $i, 1), "$type capacity exceeded");
- }
- }
- }
-
- if (defined(my $total = $self->{cc_limit_total})) {
- while (@$conns > $total) {
- $self->dropping(shift(@$conns), "Total capacity exceeded");
- }
- }
-}
-
-
-sub dropping {
- my($self, $c, $reason) = @_;
- print "DROPPING @$c [$reason]\n" if $DEBUG;
-}
-
-
-sub drop {
- my($self, $checker, $reason) = @_;
- if (ref($checker) ne "CODE") {
- # make it so
- if (!defined $checker) {
- $checker = sub { 1 }; # drop all of them
- }
- elsif (_looks_like_number($checker)) {
- my $age_limit = $checker;
- my $time_limit = time - $age_limit;
- $reason ||= "older than $age_limit";
- $checker = sub { $_[3] < $time_limit };
- }
- else {
- my $type = $checker;
- $reason ||= "drop $type";
- $checker = sub { $_[1] eq $type }; # match on type
- }
- }
- $reason ||= "drop";
-
- local $SIG{__DIE__}; # don't interfere with eval below
- local $@;
- my @c;
- for (@{$self->{cc_conns}}) {
- my $drop;
- eval {
- if (&$checker(@$_)) {
- $self->dropping($_, $reason);
- $drop++;
- }
- };
- push(@c, $_) unless $drop;
- }
- @{$self->{cc_conns}} = @c;
-}
-
-
-sub prune {
- my $self = shift;
- $self->drop(sub { !shift->ping }, "ping");
-}
-
-
-sub get_types {
- my $self = shift;
- my %t;
- $t{$_->[1]}++ for @{$self->{cc_conns}};
- return keys %t;
-}
-
-
-sub get_connections {
- my($self, $type) = @_;
- my @c;
- for (@{$self->{cc_conns}}) {
- push(@c, $_->[0]) if !$type || ($type && $type eq $_->[1]);
- }
- @c;
-}
-
-
-sub _looks_like_number {
- $_[0] =~ /^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/;
-}
-
-1;
-
-
-__END__
-
-=pod
-
-=head1 NAME
-
-LWP::ConnCache - Connection cache manager
-
-=head1 NOTE
-
-This module is experimental. Details of its interface is likely to
-change in the future.
-
-=head1 SYNOPSIS
-
- use LWP::ConnCache;
- my $cache = LWP::ConnCache->new;
- $cache->deposit($type, $key, $sock);
- $sock = $cache->withdraw($type, $key);
-
-=head1 DESCRIPTION
-
-The C<LWP::ConnCache> class is the standard connection cache manager
-for L<LWP::UserAgent>.
-
-=head1 METHODS
-
-The following basic methods are provided:
-
-=head2 new
-
- my $cache = LWP::ConnCache->new( %options )
-
-This method constructs a new L<LWP::ConnCache> object. The only
-option currently accepted is C<total_capacity>. If specified it
-initializes the L<LWP::ConnCache/total_capacity> option. It defaults to C<1>.
-
-=head2 total_capacity
-
- my $cap = $cache->total_capacity;
- $cache->total_capacity(0); # drop all immediately
- $cache->total_capacity(undef); # no limit
- $cache->total_capacity($number);
-
-Get/sets the number of connection that will be cached. Connections
-will start to be dropped when this limit is reached. If set to C<0>,
-then all connections are immediately dropped. If set to C<undef>,
-then there is no limit.
-
-=head2 capacity
-
- my $http_capacity = $cache->capacity('http');
- $cache->capacity('http', 2 );
-
-Get/set a limit for the number of connections of the specified type
-that can be cached. The first parameter is a short string like
-C<"http"> or C<"ftp">.
-
-=head2 drop
-
- $cache->drop(); # Drop ALL connections
- # which is just a synonym for:
- $cache->drop(sub{1}); # Drop ALL connections
- # drop all connections older than 22 seconds and add a reason for it!
- $cache->drop(22, "Older than 22 secs dropped");
- # which is just a synonym for:
- $cache->drop(sub {
- my ($conn, $type, $key, $deposit_time) = @_;
- if ($deposit_time < 22) {
- # true values drop the connection
- return 1;
- }
- # false values don't drop the connection
- return 0;
- }, "Older than 22 secs dropped" );
-
-Drop connections by some criteria. The $checker argument is a
-subroutine that is called for each connection. If the routine returns
-a TRUE value then the connection is dropped. The routine is called
-with C<($conn, $type, $key, $deposit_time)> as arguments.
-
-Shortcuts: If the C<$checker> argument is absent (or C<undef>) all cached
-connections are dropped. If the $checker is a number then all
-connections untouched that the given number of seconds or more are
-dropped. If $checker is a string then all connections of the given
-type are dropped.
-
-The C<reason> is passed on to the L<LWP::ConnCache/dropped> method.
-
-=head2 prune
-
- $cache->prune();
-
-Calling this method will drop all connections that are dead. This is
-tested by calling the L<LWP::ConnCache/ping> method on the connections. If
-the L<LWP::ConnCache/ping> method exists and returns a false value, then the
-connection is dropped.
-
-=head2 get_types
-
- my @types = $cache->get_types();
-
-This returns all the C<type> fields used for the currently cached
-connections.
-
-=head2 get_connections
-
- my @conns = $cache->get_connections(); # all connections
- my @conns = $cache->get_connections('http'); # connections for http
-
-This returns all connection objects of the specified type. If no type
-is specified then all connections are returned. In scalar context the
-number of cached connections of the specified type is returned.
-
-=head1 PROTOCOL METHODS
-
-The following methods are called by low-level protocol modules to
-try to save away connections and to get them back.
-
-=head2 deposit
-
- $cache->deposit($type, $key, $conn);
-
-This method adds a new connection to the cache. As a result, other
-already cached connections might be dropped. Multiple connections with
-the same type/key might be added.
-
-=head2 withdraw
-
- my $conn = $cache->withdraw($type, $key);
-
-This method tries to fetch back a connection that was previously
-deposited. If no cached connection with the specified $type/$key is
-found, then C<undef> is returned. There is not guarantee that a
-deposited connection can be withdrawn, as the cache manger is free to
-drop connections at any time.
-
-=head1 INTERNAL METHODS
-
-The following methods are called internally. Subclasses might want to
-override them.
-
-=head2 enforce_limits
-
- $conn->enforce_limits([$type])
-
-This method is called with after a new connection is added (deposited)
-in the cache or capacity limits are adjusted. The default
-implementation drops connections until the specified capacity limits
-are not exceeded.
-
-=head2 dropping
-
- $conn->dropping($conn_record, $reason)
-
-This method is called when a connection is dropped. The record
-belonging to the dropped connection is passed as the first argument
-and a string describing the reason for the drop is passed as the
-second argument. The default implementation makes some noise if the
-C<$LWP::ConnCache::DEBUG> variable is set and nothing more.
-
-=head1 SUBCLASSING
-
-For specialized cache policy it makes sense to subclass
-C<LWP::ConnCache> and perhaps override the L<LWP::ConnCache/deposit>,
-L<LWP::ConnCache/enforce_limits>, and L<LWP::ConnCache/dropping> methods.
-
-The object itself is a hash. Keys prefixed with C<cc_> are reserved
-for the base class.
-
-=head1 SEE ALSO
-
-L<LWP::UserAgent>
-
-=head1 COPYRIGHT
-
-Copyright 2001 Gisle Aas.
-
-This library is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Debug.pm b/Master/tlpkg/tlperl/site/lib/LWP/Debug.pm
deleted file mode 100644
index 1e2ea15d534..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Debug.pm
+++ /dev/null
@@ -1,112 +0,0 @@
-package LWP::Debug; # legacy
-
-our $VERSION = '6.61';
-
-require Exporter;
-our @ISA = qw(Exporter);
-our @EXPORT_OK = qw(level trace debug conns);
-
-use Carp ();
-
-my @levels = qw(trace debug conns);
-our %current_level = ();
-
-sub import {
- my $pack = shift;
- my $callpkg = caller(0);
- my @symbols = ();
- my @levels = ();
- for (@_) {
- if (/^[-+]/) {
- push(@levels, $_);
- }
- else {
- push(@symbols, $_);
- }
- }
- Exporter::export($pack, $callpkg, @symbols);
- level(@levels);
-}
-
-sub level {
- for (@_) {
- if ($_ eq '+') { # all on
- # switch on all levels
- %current_level = map { $_ => 1 } @levels;
- }
- elsif ($_ eq '-') { # all off
- %current_level = ();
- }
- elsif (/^([-+])(\w+)$/) {
- $current_level{$2} = $1 eq '+';
- }
- else {
- Carp::croak("Illegal level format $_");
- }
- }
-}
-
-sub trace { _log(@_) if $current_level{'trace'}; }
-sub debug { _log(@_) if $current_level{'debug'}; }
-sub conns { _log(@_) if $current_level{'conns'}; }
-
-sub _log {
- my $msg = shift;
- $msg .= "\n" unless $msg =~ /\n$/; # ensure trailing "\n"
-
- my ($package, $filename, $line, $sub) = caller(2);
- print STDERR "$sub: $msg";
-}
-
-1;
-
-__END__
-
-=pod
-
-=head1 NAME
-
-LWP::Debug - deprecated
-
-=head1 DESCRIPTION
-
-This module has been deprecated. Please see L<LWP::ConsoleLogger> for your
-debugging needs.
-
-LWP::Debug is used to provide tracing facilities, but these are not used
-by LWP any more. The code in this module is kept around
-(undocumented) so that 3rd party code that happens to use the old
-interfaces continue to run.
-
-One useful feature that LWP::Debug provided (in an imprecise and
-troublesome way) was network traffic monitoring. The following
-section provides some hints about recommended replacements.
-
-=head2 Network traffic monitoring
-
-The best way to monitor the network traffic that LWP generates is to
-use an external TCP monitoring program. The
-L<WireShark|http://www.wireshark.org/> program is highly recommended for this.
-
-Another approach it to use a debugging HTTP proxy server and make
-LWP direct all its traffic via this one. Call C<< $ua->proxy >> to
-set it up and then just use LWP as before.
-
-For less precise monitoring needs just setting up a few simple
-handlers might do. The following example sets up handlers to dump the
-request and response objects that pass through LWP:
-
- use LWP::UserAgent;
- $ua = LWP::UserAgent->new;
- $ua->default_header('Accept-Encoding' => scalar HTTP::Message::decodable());
-
- $ua->add_handler("request_send", sub { shift->dump; return });
- $ua->add_handler("response_done", sub { shift->dump; return });
-
- $ua->get("http://www.example.com");
-
-=head1 SEE ALSO
-
-L<LWP::ConsoleLogger>, L<LWP::ConsoleLogger::Everywhere>, L<LWP::UserAgent>
-
-=cut
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Debug/TraceHTTP.pm b/Master/tlpkg/tlperl/site/lib/LWP/Debug/TraceHTTP.pm
deleted file mode 100644
index a6cd44cbeab..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Debug/TraceHTTP.pm
+++ /dev/null
@@ -1,29 +0,0 @@
-package LWP::Debug::TraceHTTP;
-
-# Just call:
-#
-# require LWP::Debug::TraceHTTP;
-# LWP::Protocol::implementor('http', 'LWP::Debug::TraceHTTP');
-#
-# to use this module to trace all calls to the HTTP socket object in
-# programs that use LWP.
-
-use strict;
-use parent 'LWP::Protocol::http';
-
-our $VERSION = '6.61';
-
-package # hide from PAUSE
- LWP::Debug::TraceHTTP::Socket;
-
-use Data::Dump 1.13;
-use Data::Dump::Trace qw(autowrap mcall);
-
-autowrap("LWP::Protocol::http::Socket" => "sock");
-
-sub new {
- my $class = shift;
- return mcall("LWP::Protocol::http::Socket" => "new", undef, @_);
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/DebugFile.pm b/Master/tlpkg/tlperl/site/lib/LWP/DebugFile.pm
deleted file mode 100644
index 27f3dbb2280..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/DebugFile.pm
+++ /dev/null
@@ -1,7 +0,0 @@
-package LWP::DebugFile;
-
-our $VERSION = '6.61';
-
-# legacy stub
-
-1;
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/MemberMixin.pm b/Master/tlpkg/tlperl/site/lib/LWP/MemberMixin.pm
deleted file mode 100644
index a5a9e7599ba..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/MemberMixin.pm
+++ /dev/null
@@ -1,48 +0,0 @@
-package LWP::MemberMixin;
-
-our $VERSION = '6.61';
-
-sub _elem {
- my $self = shift;
- my $elem = shift;
- my $old = $self->{$elem};
- $self->{$elem} = shift if @_;
- return $old;
-}
-
-1;
-
-__END__
-
-=pod
-
-=head1 NAME
-
-LWP::MemberMixin - Member access mixin class
-
-=head1 SYNOPSIS
-
- package Foo;
- use parent qw(LWP::MemberMixin);
-
-=head1 DESCRIPTION
-
-A mixin class to get methods that provide easy access to member
-variables in the C<%$self>.
-Ideally there should be better Perl language support for this.
-
-=head1 METHODS
-
-There is only one method provided:
-
-=head2 _elem
-
- _elem($elem [, $val])
-
-Internal method to get/set the value of member variable
-C<$elem>. If C<$val> is present it is used as the new value
-for the member variable. If it is not present the current
-value is not touched. In both cases the previous value of
-the member variable is returned.
-
-=cut
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Protocol.pm b/Master/tlpkg/tlperl/site/lib/LWP/Protocol.pm
deleted file mode 100644
index 1d656cf8508..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Protocol.pm
+++ /dev/null
@@ -1,313 +0,0 @@
-package LWP::Protocol;
-
-use parent 'LWP::MemberMixin';
-
-our $VERSION = '6.61';
-
-use strict;
-use Carp ();
-use HTTP::Status ();
-use HTTP::Response ();
-use Try::Tiny qw(try catch);
-
-my %ImplementedBy = (); # scheme => classname
-
-sub new
-{
- my($class, $scheme, $ua) = @_;
-
- my $self = bless {
- scheme => $scheme,
- ua => $ua,
-
- # historical/redundant
- max_size => $ua->{max_size},
- }, $class;
-
- $self;
-}
-
-
-sub create
-{
- my($scheme, $ua) = @_;
- my $impclass = LWP::Protocol::implementor($scheme) or
- Carp::croak("Protocol scheme '$scheme' is not supported");
-
- # hand-off to scheme specific implementation sub-class
- my $protocol = $impclass->new($scheme, $ua);
-
- return $protocol;
-}
-
-
-sub implementor
-{
- my($scheme, $impclass) = @_;
-
- if ($impclass) {
- $ImplementedBy{$scheme} = $impclass;
- }
- my $ic = $ImplementedBy{$scheme};
- return $ic if $ic;
-
- return '' unless $scheme =~ /^([.+\-\w]+)$/; # check valid URL schemes
- $scheme = $1; # untaint
- $scheme =~ tr/.+-/_/; # make it a legal module name
-
- # scheme not yet known, look for a 'use'd implementation
- $ic = "LWP::Protocol::$scheme"; # default location
- $ic = "LWP::Protocol::nntp" if $scheme eq 'news'; #XXX ugly hack
- no strict 'refs';
- # check we actually have one for the scheme:
- unless (@{"${ic}::ISA"}) {
- # try to autoload it
- try {
- (my $class = $ic) =~ s{::}{/}g;
- $class .= '.pm' unless $class =~ /\.pm$/;
- require $class;
- }
- catch {
- my $error = $_;
- if ($error =~ /Can't locate/) {
- $ic = '';
- }
- else {
- die "$error\n";
- }
- };
- }
- $ImplementedBy{$scheme} = $ic if $ic;
- $ic;
-}
-
-
-sub request
-{
- my($self, $request, $proxy, $arg, $size, $timeout) = @_;
- Carp::croak('LWP::Protocol::request() needs to be overridden in subclasses');
-}
-
-
-# legacy
-sub timeout { shift->_elem('timeout', @_); }
-sub max_size { shift->_elem('max_size', @_); }
-
-
-sub collect
-{
- my ($self, $arg, $response, $collector) = @_;
- my $content;
- my($ua, $max_size) = @{$self}{qw(ua max_size)};
-
- # This can't be moved to Try::Tiny due to the closures within causing
- # leaks on any version of Perl prior to 5.18.
- # https://perl5.git.perl.org/perl.git/commitdiff/a0d2bbd5c
- my $error = do { #catch
- local $@;
- local $\; # protect the print below from surprises
- eval { # try
- if (!defined($arg) || !$response->is_success) {
- $response->{default_add_content} = 1;
- }
- elsif (!ref($arg) && length($arg)) {
- open(my $fh, ">", $arg) or die "Can't write to '$arg': $!";
- binmode($fh);
- push(@{$response->{handlers}{response_data}}, {
- callback => sub {
- print $fh $_[3] or die "Can't write to '$arg': $!";
- 1;
- },
- });
- push(@{$response->{handlers}{response_done}}, {
- callback => sub {
- close($fh) or die "Can't write to '$arg': $!";
- undef($fh);
- },
- });
- }
- elsif (ref($arg) eq 'CODE') {
- push(@{$response->{handlers}{response_data}}, {
- callback => sub {
- &$arg($_[3], $_[0], $self);
- 1;
- },
- });
- }
- else {
- die "Unexpected collect argument '$arg'";
- }
-
- $ua->run_handlers("response_header", $response);
-
- if (delete $response->{default_add_content}) {
- push(@{$response->{handlers}{response_data}}, {
- callback => sub {
- $_[0]->add_content($_[3]);
- 1;
- },
- });
- }
-
-
- my $content_size = 0;
- my $length = $response->content_length;
- my %skip_h;
-
- while ($content = &$collector, length $$content) {
- for my $h ($ua->handlers("response_data", $response)) {
- next if $skip_h{$h};
- unless ($h->{callback}->($response, $ua, $h, $$content)) {
- # XXX remove from $response->{handlers}{response_data} if present
- $skip_h{$h}++;
- }
- }
- $content_size += length($$content);
- $ua->progress(($length ? ($content_size / $length) : "tick"), $response);
- if (defined($max_size) && $content_size > $max_size) {
- $response->push_header("Client-Aborted", "max_size");
- last;
- }
- }
- 1;
- };
- $@;
- };
-
- if ($error) {
- chomp($error);
- $response->push_header('X-Died' => $error);
- $response->push_header("Client-Aborted", "die");
- };
- delete $response->{handlers}{response_data};
- delete $response->{handlers} unless %{$response->{handlers}};
- return $response;
-}
-
-
-sub collect_once
-{
- my($self, $arg, $response) = @_;
- my $content = \ $_[3];
- my $first = 1;
- $self->collect($arg, $response, sub {
- return $content if $first--;
- return \ "";
- });
-}
-
-1;
-
-
-__END__
-
-=pod
-
-=head1 NAME
-
-LWP::Protocol - Base class for LWP protocols
-
-=head1 SYNOPSIS
-
- package LWP::Protocol::foo;
- use parent qw(LWP::Protocol);
-
-=head1 DESCRIPTION
-
-This class is used as the base class for all protocol implementations
-supported by the LWP library.
-
-When creating an instance of this class using
-C<LWP::Protocol::create($url)>, and you get an initialized subclass
-appropriate for that access method. In other words, the
-L<LWP::Protocol/create> function calls the constructor for one of its
-subclasses.
-
-All derived C<LWP::Protocol> classes need to override the C<request()>
-method which is used to service a request. The overridden method can
-make use of the C<collect()> method to collect together chunks of data
-as it is received.
-
-=head1 METHODS
-
-The following methods and functions are provided:
-
-=head2 new
-
- my $prot = LWP::Protocol->new();
-
-The LWP::Protocol constructor is inherited by subclasses. As this is a
-virtual base class this method should B<not> be called directly.
-
-=head2 create
-
- my $prot = LWP::Protocol::create($scheme)
-
-Create an object of the class implementing the protocol to handle the
-given scheme. This is a function, not a method. It is more an object
-factory than a constructor. This is the function user agents should
-use to access protocols.
-
-=head2 implementor
-
- my $class = LWP::Protocol::implementor($scheme, [$class])
-
-Get and/or set implementor class for a scheme. Returns C<''> if the
-specified scheme is not supported.
-
-=head2 request
-
- $response = $protocol->request($request, $proxy, undef);
- $response = $protocol->request($request, $proxy, '/tmp/sss');
- $response = $protocol->request($request, $proxy, \&callback, 1024);
-
-Dispatches a request over the protocol, and returns a response
-object. This method needs to be overridden in subclasses. Refer to
-L<LWP::UserAgent> for description of the arguments.
-
-=head2 collect
-
- my $res = $prot->collect(undef, $response, $collector); # stored in $response
- my $res = $prot->collect($filename, $response, $collector);
- my $res = $prot->collect(sub { ... }, $response, $collector);
-
-Collect the content of a request, and process it appropriately into a scalar,
-file, or by calling a callback. If the first parameter is undefined, then the
-content is stored within the C<$response>. If it's a simple scalar, then it's
-interpreted as a file name and the content is written to this file. If it's a
-code reference, then content is passed to this routine.
-
-The collector is a routine that will be called and which is
-responsible for returning pieces (as ref to scalar) of the content to
-process. The C<$collector> signals C<EOF> by returning a reference to an
-empty string.
-
-The return value is the L<HTTP::Response> object reference.
-
-B<Note:> We will only use the callback or file argument if
-C<< $response->is_success() >>. This avoids sending content data for
-redirects and authentication responses to the callback which would be
-confusing.
-
-=head2 collect_once
-
- $prot->collect_once($arg, $response, $content)
-
-Can be called when the whole response content is available as content. This
-will invoke L<LWP::Protocol/collect> with a collector callback that
-returns a reference to C<$content> the first time and an empty string the
-next.
-
-=head1 SEE ALSO
-
-Inspect the F<LWP/Protocol/file.pm> and F<LWP/Protocol/http.pm> files
-for examples of usage.
-
-=head1 COPYRIGHT
-
-Copyright 1995-2001 Gisle Aas.
-
-This library is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/cpan.pm b/Master/tlpkg/tlperl/site/lib/LWP/Protocol/cpan.pm
deleted file mode 100644
index 90ced43d06a..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/cpan.pm
+++ /dev/null
@@ -1,72 +0,0 @@
-package LWP::Protocol::cpan;
-
-use strict;
-
-use parent qw(LWP::Protocol);
-
-our $VERSION = '6.61';
-
-require URI;
-require HTTP::Status;
-require HTTP::Response;
-
-our $CPAN;
-
-unless ($CPAN) {
- # Try to find local CPAN mirror via $CPAN::Config
- eval {
- require CPAN::Config;
- if($CPAN::Config) {
- my $urls = $CPAN::Config->{urllist};
- if (ref($urls) eq "ARRAY") {
- my $file;
- for (@$urls) {
- if (/^file:/) {
- $file = $_;
- last;
- }
- }
-
- if ($file) {
- $CPAN = $file;
- }
- else {
- $CPAN = $urls->[0];
- }
- }
- }
- };
-
- $CPAN ||= "http://cpan.org/"; # last resort
-}
-
-# ensure that we don't chop of last part
-$CPAN .= "/" unless $CPAN =~ m,/$,;
-
-
-sub request {
- my($self, $request, $proxy, $arg, $size) = @_;
- # check proxy
- if (defined $proxy)
- {
- return HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- 'You can not proxy with cpan');
- }
-
- # check method
- my $method = $request->method;
- unless ($method eq 'GET' || $method eq 'HEAD') {
- return HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- 'Library does not allow method ' .
- "$method for 'cpan:' URLs");
- }
-
- my $path = $request->uri->path;
- $path =~ s,^/,,;
-
- my $response = HTTP::Response->new(HTTP::Status::RC_FOUND);
- $response->header("Location" => URI->new_abs($path, $CPAN));
- $response;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/data.pm b/Master/tlpkg/tlperl/site/lib/LWP/Protocol/data.pm
deleted file mode 100644
index a0461b5e418..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/data.pm
+++ /dev/null
@@ -1,52 +0,0 @@
-package LWP::Protocol::data;
-
-# Implements access to data:-URLs as specified in RFC 2397
-
-use strict;
-
-our $VERSION = '6.61';
-
-require HTTP::Response;
-require HTTP::Status;
-
-use parent qw(LWP::Protocol);
-
-use HTTP::Date qw(time2str);
-require LWP; # needs version number
-
-sub request
-{
- my($self, $request, $proxy, $arg, $size) = @_;
-
- # check proxy
- if (defined $proxy)
- {
- return HTTP::Response->new( HTTP::Status::RC_BAD_REQUEST,
- 'You can not proxy with data');
- }
-
- # check method
- my $method = $request->method;
- unless ($method eq 'GET' || $method eq 'HEAD') {
- return HTTP::Response->new( HTTP::Status::RC_BAD_REQUEST,
- 'Library does not allow method ' .
- "$method for 'data:' URLs");
- }
-
- my $url = $request->uri;
- my $response = HTTP::Response->new( HTTP::Status::RC_OK, "Document follows");
-
- my $media_type = $url->media_type;
-
- my $data = $url->data;
- $response->header('Content-Type' => $media_type,
- 'Content-Length' => length($data),
- 'Date' => time2str(time),
- 'Server' => "libwww-perl-internal/$LWP::VERSION"
- );
-
- $data = "" if $method eq "HEAD";
- return $self->collect_once($arg, $response, $data);
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/file.pm b/Master/tlpkg/tlperl/site/lib/LWP/Protocol/file.pm
deleted file mode 100644
index 37be55d76fb..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/file.pm
+++ /dev/null
@@ -1,147 +0,0 @@
-package LWP::Protocol::file;
-
-use parent qw(LWP::Protocol);
-
-use strict;
-
-our $VERSION = '6.61';
-
-require LWP::MediaTypes;
-require HTTP::Request;
-require HTTP::Response;
-require HTTP::Status;
-require HTTP::Date;
-
-
-sub request
-{
- my($self, $request, $proxy, $arg, $size) = @_;
-
- $size = 4096 unless defined $size and $size > 0;
-
- # check proxy
- if (defined $proxy)
- {
- return HTTP::Response->new( HTTP::Status::RC_BAD_REQUEST,
- 'You can not proxy through the filesystem');
- }
-
- # check method
- my $method = $request->method;
- unless ($method eq 'GET' || $method eq 'HEAD') {
- return HTTP::Response->new( HTTP::Status::RC_BAD_REQUEST,
- 'Library does not allow method ' .
- "$method for 'file:' URLs");
- }
-
- # check url
- my $url = $request->uri;
-
- my $scheme = $url->scheme;
- if ($scheme ne 'file') {
- return HTTP::Response->new( HTTP::Status::RC_INTERNAL_SERVER_ERROR,
- "LWP::Protocol::file::request called for '$scheme'");
- }
-
- # URL OK, look at file
- my $path = $url->file;
-
- # test file exists and is readable
- unless (-e $path) {
- return HTTP::Response->new( HTTP::Status::RC_NOT_FOUND,
- "File `$path' does not exist");
- }
- unless (-r _) {
- return HTTP::Response->new( HTTP::Status::RC_FORBIDDEN,
- 'User does not have read permission');
- }
-
- # looks like file exists
- my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$filesize,
- $atime,$mtime,$ctime,$blksize,$blocks)
- = stat(_);
-
- # XXX should check Accept headers?
-
- # check if-modified-since
- my $ims = $request->header('If-Modified-Since');
- if (defined $ims) {
- my $time = HTTP::Date::str2time($ims);
- if (defined $time and $time >= $mtime) {
- return HTTP::Response->new( HTTP::Status::RC_NOT_MODIFIED,
- "$method $path");
- }
- }
-
- # Ok, should be an OK response by now...
- my $response = HTTP::Response->new( HTTP::Status::RC_OK );
-
- # fill in response headers
- $response->header('Last-Modified', HTTP::Date::time2str($mtime));
-
- if (-d _) { # If the path is a directory, process it
- # generate the HTML for directory
- opendir(D, $path) or
- return HTTP::Response->new( HTTP::Status::RC_INTERNAL_SERVER_ERROR,
- "Cannot read directory '$path': $!");
- my(@files) = sort readdir(D);
- closedir(D);
-
- # Make directory listing
- require URI::Escape;
- require HTML::Entities;
- my $pathe = $path . ( $^O eq 'MacOS' ? ':' : '/');
- for (@files) {
- my $furl = URI::Escape::uri_escape($_);
- if ( -d "$pathe$_" ) {
- $furl .= '/';
- $_ .= '/';
- }
- my $desc = HTML::Entities::encode($_);
- $_ = qq{<LI><A HREF="$furl">$desc</A>};
- }
- # Ensure that the base URL is "/" terminated
- my $base = $url->clone;
- unless ($base->path =~ m|/$|) {
- $base->path($base->path . "/");
- }
- my $html = join("\n",
- "<HTML>\n<HEAD>",
- "<TITLE>Directory $path</TITLE>",
- "<BASE HREF=\"$base\">",
- "</HEAD>\n<BODY>",
- "<H1>Directory listing of $path</H1>",
- "<UL>", @files, "</UL>",
- "</BODY>\n</HTML>\n");
-
- $response->header('Content-Type', 'text/html');
- $response->header('Content-Length', length $html);
- $html = "" if $method eq "HEAD";
-
- return $self->collect_once($arg, $response, $html);
-
- }
-
- # path is a regular file
- $response->header('Content-Length', $filesize);
- LWP::MediaTypes::guess_media_type($path, $response);
-
- # read the file
- if ($method ne "HEAD") {
- open(my $fh, '<', $path) or return new
- HTTP::Response(HTTP::Status::RC_INTERNAL_SERVER_ERROR,
- "Cannot read file '$path': $!");
- binmode($fh);
- $response = $self->collect($arg, $response, sub {
- my $content = "";
- my $bytes = sysread($fh, $content, $size);
- return \$content if $bytes > 0;
- return \ "";
- });
- close($fh);
- }
-
- $response;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/ftp.pm b/Master/tlpkg/tlperl/site/lib/LWP/Protocol/ftp.pm
deleted file mode 100644
index a82d527345e..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/ftp.pm
+++ /dev/null
@@ -1,555 +0,0 @@
-package LWP::Protocol::ftp;
-
-# Implementation of the ftp protocol (RFC 959). We let the Net::FTP
-# package do all the dirty work.
-use parent qw(LWP::Protocol);
-use strict;
-
-our $VERSION = '6.61';
-
-use Carp ();
-use HTTP::Status ();
-use HTTP::Negotiate ();
-use HTTP::Response ();
-use LWP::MediaTypes ();
-use File::Listing ();
-
-
-{
-
- package # hide from PAUSE
- LWP::Protocol::MyFTP;
-
- use strict;
- use parent qw(Net::FTP);
-
- sub new {
- my $class = shift;
-
- my $self = $class->SUPER::new(@_) || return undef;
-
- my $mess = $self->message; # welcome message
- $mess =~ s|\n.*||s; # only first line left
- $mess =~ s|\s*ready\.?$||;
-
- # Make the version number more HTTP like
- $mess =~ s|\s*\(Version\s*|/| and $mess =~ s|\)$||;
- ${*$self}{myftp_server} = $mess;
-
- #$response->header("Server", $mess);
-
- $self;
- }
-
- sub http_server {
- my $self = shift;
- ${*$self}{myftp_server};
- }
-
- sub home {
- my $self = shift;
- my $old = ${*$self}{myftp_home};
- if (@_) {
- ${*$self}{myftp_home} = shift;
- }
- $old;
- }
-
- sub go_home {
- my $self = shift;
- $self->cwd(${*$self}{myftp_home});
- }
-
- sub request_count {
- my $self = shift;
- ++${*$self}{myftp_reqcount};
- }
-
- sub ping {
- my $self = shift;
- return $self->go_home;
- }
-}
-
-sub _connect {
- my ($self, $host, $port, $user, $account, $password, $timeout) = @_;
-
- my $key;
- my $conn_cache = $self->{ua}{conn_cache};
- if ($conn_cache) {
- $key = "$host:$port:$user";
- $key .= ":$account" if defined($account);
- if (my $ftp = $conn_cache->withdraw("ftp", $key)) {
- if ($ftp->ping) {
-
- # save it again
- $conn_cache->deposit("ftp", $key, $ftp);
- return $ftp;
- }
- }
- }
-
- # try to make a connection
- my $ftp = LWP::Protocol::MyFTP->new(
- $host,
- Port => $port,
- Timeout => $timeout,
- LocalAddr => $self->{ua}{local_address},
- );
-
- # XXX Should be some what to pass on 'Passive' (header??)
- unless ($ftp) {
- $@ =~ s/^Net::FTP: //;
- return HTTP::Response->new(HTTP::Status::RC_INTERNAL_SERVER_ERROR, $@);
- }
-
- unless ($ftp->login($user, $password, $account)) {
-
- # Unauthorized. Let's fake a RC_UNAUTHORIZED response
- my $mess = scalar($ftp->message);
- $mess =~ s/\n$//;
- my $res = HTTP::Response->new(HTTP::Status::RC_UNAUTHORIZED, $mess);
- $res->header("Server", $ftp->http_server);
- $res->header("WWW-Authenticate", qq(Basic Realm="FTP login"));
- return $res;
- }
-
- my $home = $ftp->pwd;
- $ftp->home($home);
-
- $conn_cache->deposit("ftp", $key, $ftp) if $conn_cache;
-
- return $ftp;
-}
-
-
-sub request {
- my ($self, $request, $proxy, $arg, $size, $timeout) = @_;
-
- $size = 4096 unless $size;
-
- # check proxy
- if (defined $proxy) {
- return HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- 'You can not proxy through the ftp');
- }
-
- my $url = $request->uri;
- if ($url->scheme ne 'ftp') {
- my $scheme = $url->scheme;
- return HTTP::Response->new(HTTP::Status::RC_INTERNAL_SERVER_ERROR,
- "LWP::Protocol::ftp::request called for '$scheme'");
- }
-
- # check method
- my $method = $request->method;
-
- unless ($method eq 'GET' || $method eq 'HEAD' || $method eq 'PUT') {
- return HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- 'Library does not allow method ' . "$method for 'ftp:' URLs");
- }
-
- my $host = $url->host;
- my $port = $url->port;
- my $user = $url->user;
- my $password = $url->password;
-
- # If a basic authorization header is present than we prefer these over
- # the username/password specified in the URL.
- {
- my ($u, $p) = $request->authorization_basic;
- if (defined $u) {
- $user = $u;
- $password = $p;
- }
- }
-
- # We allow the account to be specified in the "Account" header
- my $account = $request->header('Account');
-
- my $ftp
- = $self->_connect($host, $port, $user, $account, $password, $timeout);
- return $ftp if ref($ftp) eq "HTTP::Response"; # ugh!
-
- # Create an initial response object
- my $response = HTTP::Response->new(HTTP::Status::RC_OK, "OK");
- $response->header(Server => $ftp->http_server);
- $response->header('Client-Request-Num' => $ftp->request_count);
- $response->request($request);
-
- # Get & fix the path
- my @path = grep {length} $url->path_segments;
- my $remote_file = pop(@path);
- $remote_file = '' unless defined $remote_file;
-
- my $type;
- if (ref $remote_file) {
- my @params;
- ($remote_file, @params) = @$remote_file;
- for (@params) {
- $type = $_ if s/^type=//;
- }
- }
-
- if ($type && $type eq 'a') {
- $ftp->ascii;
- }
- else {
- $ftp->binary;
- }
-
- for (@path) {
- unless ($ftp->cwd($_)) {
- return HTTP::Response->new(HTTP::Status::RC_NOT_FOUND,
- "Can't chdir to $_");
- }
- }
-
- if ($method eq 'GET' || $method eq 'HEAD') {
- if (my $mod_time = $ftp->mdtm($remote_file)) {
- $response->last_modified($mod_time);
- if (my $ims = $request->if_modified_since) {
- if ($mod_time <= $ims) {
- $response->code(HTTP::Status::RC_NOT_MODIFIED);
- $response->message("Not modified");
- return $response;
- }
- }
- }
-
- # We'll use this later to abort the transfer if necessary.
- # if $max_size is defined, we need to abort early. Otherwise, it's
- # a normal transfer
- my $max_size = undef;
-
- # Set resume location, if the client requested it
- if ($request->header('Range') && $ftp->supported('REST')) {
- my $range_info = $request->header('Range');
-
- # Change bytes=2772992-6781209 to just 2772992
- my ($start_byte, $end_byte) = $range_info =~ /.*=\s*(\d+)-(\d+)?/;
- if (defined $start_byte && !defined $end_byte) {
-
- # open range -- only the start is specified
-
- $ftp->restart($start_byte);
-
- # don't define $max_size, we don't want to abort early
- }
- elsif (defined $start_byte
- && defined $end_byte
- && $start_byte >= 0
- && $end_byte >= $start_byte)
- {
-
- $ftp->restart($start_byte);
- $max_size = $end_byte - $start_byte;
- }
- else {
-
- return HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- 'Incorrect syntax for Range request');
- }
- }
- elsif ($request->header('Range') && !$ftp->supported('REST')) {
- return HTTP::Response->new(HTTP::Status::RC_NOT_IMPLEMENTED,
- "Server does not support resume."
- );
- }
-
- my $data; # the data handle
- if (length($remote_file) and $data = $ftp->retr($remote_file)) {
- my ($type, @enc) = LWP::MediaTypes::guess_media_type($remote_file);
- $response->header('Content-Type', $type) if $type;
- for (@enc) {
- $response->push_header('Content-Encoding', $_);
- }
- my $mess = $ftp->message;
- if ($mess =~ /\((\d+)\s+bytes\)/) {
- $response->header('Content-Length', "$1");
- }
-
- if ($method ne 'HEAD') {
-
- # Read data from server
- $response = $self->collect(
- $arg,
- $response,
- sub {
- my $content = '';
- my $result = $data->read($content, $size);
-
- # Stop early if we need to.
- if (defined $max_size) {
-
- # We need an interface to Net::FTP::dataconn for getting
- # the number of bytes already read
- my $bytes_received = $data->bytes_read();
-
- # We were already over the limit. (Should only happen
- # once at the end.)
- if ($bytes_received - length($content) > $max_size)
- {
- $content = '';
- }
-
- # We just went over the limit
- elsif ($bytes_received > $max_size) {
-
- # Trim content
- $content = substr($content, 0,
- $max_size
- - ($bytes_received - length($content)));
- }
-
- # We're under the limit
- else {
- }
- }
-
- return \$content;
- }
- );
- }
-
- # abort is needed for HEAD, it's == close if the transfer has
- # already completed.
- unless ($data->abort) {
-
- # Something did not work too well. Note that we treat
- # responses to abort() with code 0 in case of HEAD as ok
- # (at least wu-ftpd 2.6.1(1) does that).
- if ($method ne 'HEAD' || $ftp->code != 0) {
- $response->code(HTTP::Status::RC_INTERNAL_SERVER_ERROR);
- $response->message("FTP close response: "
- . $ftp->code . " "
- . $ftp->message);
- }
- }
- }
- elsif (!length($remote_file) || ($ftp->code >= 400 && $ftp->code < 600))
- {
- # not a plain file, try to list instead
- if (length($remote_file) && !$ftp->cwd($remote_file)) {
- return HTTP::Response->new(HTTP::Status::RC_NOT_FOUND,
- "File '$remote_file' not found"
- );
- }
-
- # It should now be safe to try to list the directory
- my @lsl = $ftp->dir;
-
- # Try to figure out if the user want us to convert the
- # directory listing to HTML.
- my @variants = (
- ['html', 0.60, 'text/html'],
- ['dir', 1.00, 'text/ftp-dir-listing']
- );
-
- #$HTTP::Negotiate::DEBUG=1;
- my $prefer = HTTP::Negotiate::choose(\@variants, $request);
-
- my $content = '';
-
- if (!defined($prefer)) {
- return HTTP::Response->new(HTTP::Status::RC_NOT_ACCEPTABLE,
- "Neither HTML nor directory listing wanted");
- }
- elsif ($prefer eq 'html') {
- $response->header('Content-Type' => 'text/html');
- $content = "<HEAD><TITLE>File Listing</TITLE>\n";
- my $base = $request->uri->clone;
- my $path = $base->path;
- $base->path("$path/") unless $path =~ m|/$|;
- $content .= qq(<BASE HREF="$base">\n</HEAD>\n);
- $content .= "<BODY>\n<UL>\n";
- for (File::Listing::parse_dir(\@lsl, 'GMT')) {
- my ($name, $type, $size, $mtime, $mode) = @$_;
- $content .= qq( <LI> <a href="$name">$name</a>);
- $content .= " $size bytes" if $type eq 'f';
- $content .= "\n";
- }
- $content .= "</UL></body>\n";
- }
- else {
- $response->header('Content-Type', 'text/ftp-dir-listing');
- $content = join("\n", @lsl, '');
- }
-
- $response->header('Content-Length', length($content));
-
- if ($method ne 'HEAD') {
- $response = $self->collect_once($arg, $response, $content);
- }
- }
- else {
- my $res = HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- "FTP return code " . $ftp->code);
- $res->content_type("text/plain");
- $res->content($ftp->message);
- return $res;
- }
- }
- elsif ($method eq 'PUT') {
-
- # method must be PUT
- unless (length($remote_file)) {
- return HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- "Must have a file name to PUT to"
- );
- }
- my $data;
- if ($data = $ftp->stor($remote_file)) {
- my $content = $request->content;
- my $bytes = 0;
- if (defined $content) {
- if (ref($content) eq 'SCALAR') {
- $bytes = $data->write($$content, length($$content));
- }
- elsif (ref($content) eq 'CODE') {
- my ($buf, $n);
- while (length($buf = &$content)) {
- $n = $data->write($buf, length($buf));
- last unless $n;
- $bytes += $n;
- }
- }
- elsif (!ref($content)) {
- if (defined $content && length($content)) {
- $bytes = $data->write($content, length($content));
- }
- }
- else {
- die "Bad content";
- }
- }
- $data->close;
-
- $response->code(HTTP::Status::RC_CREATED);
- $response->header('Content-Type', 'text/plain');
- $response->content("$bytes bytes stored as $remote_file on $host\n")
-
- }
- else {
- my $res = HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- "FTP return code " . $ftp->code);
- $res->content_type("text/plain");
- $res->content($ftp->message);
- return $res;
- }
- }
- else {
- return HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- "Illegal method $method");
- }
-
- $response;
-}
-
-1;
-
-__END__
-
-# This is what RFC 1738 has to say about FTP access:
-# --------------------------------------------------
-#
-# 3.2. FTP
-#
-# The FTP URL scheme is used to designate files and directories on
-# Internet hosts accessible using the FTP protocol (RFC959).
-#
-# A FTP URL follow the syntax described in Section 3.1. If :<port> is
-# omitted, the port defaults to 21.
-#
-# 3.2.1. FTP Name and Password
-#
-# A user name and password may be supplied; they are used in the ftp
-# "USER" and "PASS" commands after first making the connection to the
-# FTP server. If no user name or password is supplied and one is
-# requested by the FTP server, the conventions for "anonymous" FTP are
-# to be used, as follows:
-#
-# The user name "anonymous" is supplied.
-#
-# The password is supplied as the Internet e-mail address
-# of the end user accessing the resource.
-#
-# If the URL supplies a user name but no password, and the remote
-# server requests a password, the program interpreting the FTP URL
-# should request one from the user.
-#
-# 3.2.2. FTP url-path
-#
-# The url-path of a FTP URL has the following syntax:
-#
-# <cwd1>/<cwd2>/.../<cwdN>/<name>;type=<typecode>
-#
-# Where <cwd1> through <cwdN> and <name> are (possibly encoded) strings
-# and <typecode> is one of the characters "a", "i", or "d". The part
-# ";type=<typecode>" may be omitted. The <cwdx> and <name> parts may be
-# empty. The whole url-path may be omitted, including the "/"
-# delimiting it from the prefix containing user, password, host, and
-# port.
-#
-# The url-path is interpreted as a series of FTP commands as follows:
-#
-# Each of the <cwd> elements is to be supplied, sequentially, as the
-# argument to a CWD (change working directory) command.
-#
-# If the typecode is "d", perform a NLST (name list) command with
-# <name> as the argument, and interpret the results as a file
-# directory listing.
-#
-# Otherwise, perform a TYPE command with <typecode> as the argument,
-# and then access the file whose name is <name> (for example, using
-# the RETR command.)
-#
-# Within a name or CWD component, the characters "/" and ";" are
-# reserved and must be encoded. The components are decoded prior to
-# their use in the FTP protocol. In particular, if the appropriate FTP
-# sequence to access a particular file requires supplying a string
-# containing a "/" as an argument to a CWD or RETR command, it is
-# necessary to encode each "/".
-#
-# For example, the URL <URL:ftp://myname@host.dom/%2Fetc/motd> is
-# interpreted by FTP-ing to "host.dom", logging in as "myname"
-# (prompting for a password if it is asked for), and then executing
-# "CWD /etc" and then "RETR motd". This has a different meaning from
-# <URL:ftp://myname@host.dom/etc/motd> which would "CWD etc" and then
-# "RETR motd"; the initial "CWD" might be executed relative to the
-# default directory for "myname". On the other hand,
-# <URL:ftp://myname@host.dom//etc/motd>, would "CWD " with a null
-# argument, then "CWD etc", and then "RETR motd".
-#
-# FTP URLs may also be used for other operations; for example, it is
-# possible to update a file on a remote file server, or infer
-# information about it from the directory listings. The mechanism for
-# doing so is not spelled out here.
-#
-# 3.2.3. FTP Typecode is Optional
-#
-# The entire ;type=<typecode> part of a FTP URL is optional. If it is
-# omitted, the client program interpreting the URL must guess the
-# appropriate mode to use. In general, the data content type of a file
-# can only be guessed from the name, e.g., from the suffix of the name;
-# the appropriate type code to be used for transfer of the file can
-# then be deduced from the data content of the file.
-#
-# 3.2.4 Hierarchy
-#
-# For some file systems, the "/" used to denote the hierarchical
-# structure of the URL corresponds to the delimiter used to construct a
-# file name hierarchy, and thus, the filename will look similar to the
-# URL path. This does NOT mean that the URL is a Unix filename.
-#
-# 3.2.5. Optimization
-#
-# Clients accessing resources via FTP may employ additional heuristics
-# to optimize the interaction. For some FTP servers, for example, it
-# may be reasonable to keep the control connection open while accessing
-# multiple URLs from the same server. However, there is no common
-# hierarchical model to the FTP protocol, so if a directory change
-# command has been given, it is impossible in general to deduce what
-# sequence should be given to navigate to another directory for a
-# second retrieval, if the paths are different. The only reliable
-# algorithm is to disconnect and reestablish the control connection.
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/gopher.pm b/Master/tlpkg/tlperl/site/lib/LWP/Protocol/gopher.pm
deleted file mode 100644
index 1b46df4a079..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/gopher.pm
+++ /dev/null
@@ -1,213 +0,0 @@
-package LWP::Protocol::gopher;
-
-# Implementation of the gopher protocol (RFC 1436)
-#
-# This code is based on 'wwwgopher.pl,v 0.10 1994/10/17 18:12:34 shelden'
-# which in turn is a vastly modified version of Oscar's http'get()
-# dated 28/3/94 in <ftp://cui.unige.ch/PUBLIC/oscar/scripts/http.pl>
-# including contributions from Marc van Heyningen and Martijn Koster.
-
-use strict;
-
-our $VERSION = '6.61';
-
-require HTTP::Response;
-require HTTP::Status;
-require IO::Socket;
-require IO::Select;
-
-use parent qw(LWP::Protocol);
-
-
-my %gopher2mimetype = (
- '0' => 'text/plain', # 0 file
- '1' => 'text/html', # 1 menu
- # 2 CSO phone-book server
- # 3 Error
- '4' => 'application/mac-binhex40', # 4 BinHexed Macintosh file
- '5' => 'application/zip', # 5 DOS binary archive of some sort
- '6' => 'application/octet-stream', # 6 UNIX uuencoded file.
- '7' => 'text/html', # 7 Index-Search server
- # 8 telnet session
- '9' => 'application/octet-stream', # 9 binary file
- 'h' => 'text/html', # html
- 'g' => 'image/gif', # gif
- 'I' => 'image/*', # some kind of image
-);
-
-my %gopher2encoding = (
- '6' => 'x_uuencode', # 6 UNIX uuencoded file.
-);
-
-sub request
-{
- my($self, $request, $proxy, $arg, $size, $timeout) = @_;
-
- $size = 4096 unless $size;
-
- # check proxy
- if (defined $proxy) {
- return HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- 'You can not proxy through the gopher');
- }
-
- my $url = $request->uri;
- die "bad scheme" if $url->scheme ne 'gopher';
-
-
- my $method = $request->method;
- unless ($method eq 'GET' || $method eq 'HEAD') {
- return HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- 'Library does not allow method ' .
- "$method for 'gopher:' URLs");
- }
-
- my $gophertype = $url->gopher_type;
- unless (exists $gopher2mimetype{$gophertype}) {
- return HTTP::Response->new(HTTP::Status::RC_NOT_IMPLEMENTED,
- 'Library does not support gophertype ' .
- $gophertype);
- }
-
- my $response = HTTP::Response->new(HTTP::Status::RC_OK, "OK");
- $response->header('Content-type' => $gopher2mimetype{$gophertype}
- || 'text/plain');
- $response->header('Content-Encoding' => $gopher2encoding{$gophertype})
- if exists $gopher2encoding{$gophertype};
-
- if ($method eq 'HEAD') {
- # XXX: don't even try it so we set this header
- $response->header('Client-Warning' => 'Client answer only');
- return $response;
- }
-
- if ($gophertype eq '7' && ! $url->search) {
- # the url is the prompt for a gopher search; supply boiler-plate
- return $self->collect_once($arg, $response, <<"EOT");
-<HEAD>
-<TITLE>Gopher Index</TITLE>
-<ISINDEX>
-</HEAD>
-<BODY>
-<H1>$url<BR>Gopher Search</H1>
-This is a searchable Gopher index.
-Use the search function of your browser to enter search terms.
-</BODY>
-EOT
- }
-
- my $host = $url->host;
- my $port = $url->port;
-
- my $requestLine = "";
-
- my $selector = $url->selector;
- if (defined $selector) {
- $requestLine .= $selector;
- my $search = $url->search;
- if (defined $search) {
- $requestLine .= "\t$search";
- my $string = $url->string;
- if (defined $string) {
- $requestLine .= "\t$string";
- }
- }
- }
- $requestLine .= "\015\012";
-
- # potential request headers are just ignored
-
- # Ok, lets make the request
- my $socket = IO::Socket::INET->new(PeerAddr => $host,
- PeerPort => $port,
- LocalAddr => $self->{ua}{local_address},
- Proto => 'tcp',
- Timeout => $timeout);
- die "Can't connect to $host:$port" unless $socket;
- my $sel = IO::Select->new($socket);
-
- {
- die "write timeout" if $timeout && !$sel->can_write($timeout);
- my $n = syswrite($socket, $requestLine, length($requestLine));
- die $! unless defined($n);
- die "short write" if $n != length($requestLine);
- }
-
- my $user_arg = $arg;
-
- # must handle menus in a special way since they are to be
- # converted to HTML. Undefing $arg ensures that the user does
- # not see the data before we get a change to convert it.
- $arg = undef if $gophertype eq '1' || $gophertype eq '7';
-
- # collect response
- my $buf = '';
- $response = $self->collect($arg, $response, sub {
- die "read timeout" if $timeout && !$sel->can_read($timeout);
- my $n = sysread($socket, $buf, $size);
- die $! unless defined($n);
- return \$buf;
- } );
-
- # Convert menu to HTML and return data to user.
- if ($gophertype eq '1' || $gophertype eq '7') {
- my $content = menu2html($response->content);
- if (defined $user_arg) {
- $response = $self->collect_once($user_arg, $response, $content);
- }
- else {
- $response->content($content);
- }
- }
-
- $response;
-}
-
-
-sub gopher2url
-{
- my($gophertype, $path, $host, $port) = @_;
-
- my $url;
-
- if ($gophertype eq '8' || $gophertype eq 'T') {
- # telnet session
- $url = $HTTP::URI_CLASS->new($gophertype eq '8' ? 'telnet:':'tn3270:');
- $url->user($path) if defined $path;
- }
- else {
- $path = URI::Escape::uri_escape($path);
- $url = $HTTP::URI_CLASS->new("gopher:/$gophertype$path");
- }
- $url->host($host);
- $url->port($port);
- $url;
-}
-
-sub menu2html {
- my($menu) = @_;
-
- $menu =~ tr/\015//d; # remove carriage return
- my $tmp = <<"EOT";
-<HTML>
-<HEAD>
- <TITLE>Gopher menu</TITLE>
-</HEAD>
-<BODY>
-<H1>Gopher menu</H1>
-EOT
- for (split("\n", $menu)) {
- last if /^\./;
- my($pretty, $path, $host, $port) = split("\t");
-
- $pretty =~ s/^(.)//;
- my $type = $1;
-
- my $url = gopher2url($type, $path, $host, $port)->as_string;
- $tmp .= qq{<A HREF="$url">$pretty</A><BR>\n};
- }
- $tmp .= "</BODY>\n</HTML>\n";
- $tmp;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/http.pm b/Master/tlpkg/tlperl/site/lib/LWP/Protocol/http.pm
deleted file mode 100644
index 88b4c60df35..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/http.pm
+++ /dev/null
@@ -1,523 +0,0 @@
-package LWP::Protocol::http;
-
-use strict;
-
-our $VERSION = '6.61';
-
-require HTTP::Response;
-require HTTP::Status;
-require Net::HTTP;
-
-use parent qw(LWP::Protocol);
-
-our @EXTRA_SOCK_OPTS;
-my $CRLF = "\015\012";
-
-sub _new_socket
-{
- my($self, $host, $port, $timeout) = @_;
-
- # IPv6 literal IP address should be [bracketed] to remove
- # ambiguity between ip address and port number.
- if ( ($host =~ /:/) && ($host !~ /^\[/) ) {
- $host = "[$host]";
- }
-
- local($^W) = 0; # IO::Socket::INET can be noisy
- my $sock = $self->socket_class->new(PeerAddr => $host,
- PeerPort => $port,
- LocalAddr => $self->{ua}{local_address},
- Proto => 'tcp',
- Timeout => $timeout,
- KeepAlive => !!$self->{ua}{conn_cache},
- SendTE => $self->{ua}{send_te},
- $self->_extra_sock_opts($host, $port),
- );
-
- unless ($sock) {
- # IO::Socket::INET leaves additional error messages in $@
- my $status = "Can't connect to $host:$port";
- if ($@ =~ /\bconnect: (.*)/ ||
- $@ =~ /\b(Bad hostname)\b/ ||
- $@ =~ /\b(nodename nor servname provided, or not known)\b/ ||
- $@ =~ /\b(certificate verify failed)\b/ ||
- $@ =~ /\b(Crypt-SSLeay can't verify hostnames)\b/
- ) {
- $status .= " ($1)";
- } elsif ($@) {
- $status .= " ($@)";
- }
- die "$status\n\n$@";
- }
-
- # perl 5.005's IO::Socket does not have the blocking method.
- eval { $sock->blocking(0); };
-
- $sock;
-}
-
-sub socket_type
-{
- return "http";
-}
-
-sub socket_class
-{
- my $self = shift;
- (ref($self) || $self) . "::Socket";
-}
-
-sub _extra_sock_opts # to be overridden by subclass
-{
- return @EXTRA_SOCK_OPTS;
-}
-
-sub _check_sock
-{
- #my($self, $req, $sock) = @_;
-}
-
-sub _get_sock_info
-{
- my($self, $res, $sock) = @_;
- if (defined(my $peerhost = $sock->peerhost)) {
- $res->header("Client-Peer" => "$peerhost:" . $sock->peerport);
- }
-}
-
-sub _fixup_header
-{
- my($self, $h, $url, $proxy) = @_;
-
- # Extract 'Host' header
- my $hhost = $url->authority;
- if ($hhost =~ s/^([^\@]*)\@//) { # get rid of potential "user:pass@"
- # add authorization header if we need them. HTTP URLs do
- # not really support specification of user and password, but
- # we allow it.
- if (defined($1) && not $h->header('Authorization')) {
- require URI::Escape;
- $h->authorization_basic(map URI::Escape::uri_unescape($_),
- split(":", $1, 2));
- }
- }
- $h->init_header('Host' => $hhost);
-
- if ($proxy && $url->scheme ne 'https') {
- # Check the proxy URI's userinfo() for proxy credentials
- # export http_proxy="http://proxyuser:proxypass@proxyhost:port".
- # For https only the initial CONNECT requests needs authorization.
- my $p_auth = $proxy->userinfo();
- if(defined $p_auth) {
- require URI::Escape;
- $h->proxy_authorization_basic(map URI::Escape::uri_unescape($_),
- split(":", $p_auth, 2))
- }
- }
-}
-
-sub hlist_remove {
- my($hlist, $k) = @_;
- $k = lc $k;
- for (my $i = @$hlist - 2; $i >= 0; $i -= 2) {
- next unless lc($hlist->[$i]) eq $k;
- splice(@$hlist, $i, 2);
- }
-}
-
-sub request
-{
- my($self, $request, $proxy, $arg, $size, $timeout) = @_;
-
- $size ||= 4096;
-
- # check method
- my $method = $request->method;
- unless ($method =~ /^[A-Za-z0-9_!\#\$%&\'*+\-.^\`|~]+$/) { # HTTP token
- return HTTP::Response->new( HTTP::Status::RC_BAD_REQUEST,
- 'Library does not allow method ' .
- "$method for 'http:' URLs");
- }
-
- my $url = $request->uri;
-
- # Proxying SSL with a http proxy needs issues a CONNECT request to build a
- # tunnel and then upgrades the tunnel to SSL. But when doing keep-alive the
- # https request does not need to be the first request in the connection, so
- # we need to distinguish between
- # - not yet connected (create socket and ssl upgrade)
- # - connected but not inside ssl tunnel (ssl upgrade)
- # - inside ssl tunnel to the target - once we are in the tunnel to the
- # target we cannot only reuse the tunnel for more https requests with the
- # same target
-
- my $ssl_tunnel = $proxy && $url->scheme eq 'https'
- && $url->host.":".$url->port;
-
- my ($host,$port) = $proxy
- ? ($proxy->host,$proxy->port)
- : ($url->host,$url->port);
- my $fullpath =
- $method eq 'CONNECT' ? $url->host . ":" . $url->port :
- $proxy && ! $ssl_tunnel ? $url->as_string :
- do {
- my $path = $url->path_query;
- $path = "/$path" if $path !~m{^/};
- $path
- };
-
- my $socket;
- my $conn_cache = $self->{ua}{conn_cache};
- my $cache_key;
- if ( $conn_cache ) {
- $cache_key = "$host:$port";
- # For https we reuse the socket immediately only if it has an established
- # tunnel to the target. Otherwise a CONNECT request followed by an SSL
- # upgrade need to be done first. The request itself might reuse an
- # existing non-ssl connection to the proxy
- $cache_key .= "!".$ssl_tunnel if $ssl_tunnel;
- if ( $socket = $conn_cache->withdraw($self->socket_type,$cache_key)) {
- if ($socket->can_read(0)) {
- # if the socket is readable, then either the peer has closed the
- # connection or there are some garbage bytes on it. In either
- # case we abandon it.
- $socket->close;
- $socket = undef;
- } # else use $socket
- else {
- $socket->timeout($timeout);
- }
- }
- }
-
- if ( ! $socket && $ssl_tunnel ) {
- my $proto_https = LWP::Protocol::create('https',$self->{ua})
- or die "no support for scheme https found";
-
- # only if ssl socket class is IO::Socket::SSL we can upgrade
- # a plain socket to SSL. In case of Net::SSL we fall back to
- # the old version
- if ( my $upgrade_sub = $proto_https->can('_upgrade_sock')) {
- my $response = $self->request(
- HTTP::Request->new('CONNECT',"http://$ssl_tunnel"),
- $proxy,
- undef,$size,$timeout
- );
- $response->is_success or die
- "establishing SSL tunnel failed: ".$response->status_line;
- $socket = $upgrade_sub->($proto_https,
- $response->{client_socket},$url)
- or die "SSL upgrade failed: $@";
- } else {
- $socket = $proto_https->_new_socket($url->host,$url->port,$timeout);
- }
- }
-
- if ( ! $socket ) {
- # connect to remote site w/o reusing established socket
- $socket = $self->_new_socket($host, $port, $timeout );
- }
-
- my $http_version = "";
- if (my $proto = $request->protocol) {
- if ($proto =~ /^(?:HTTP\/)?(1.\d+)$/) {
- $http_version = $1;
- $socket->http_version($http_version);
- $socket->send_te(0) if $http_version eq "1.0";
- }
- }
-
- $self->_check_sock($request, $socket);
-
- my @h;
- my $request_headers = $request->headers->clone;
- $self->_fixup_header($request_headers, $url, $proxy);
-
- $request_headers->scan(sub {
- my($k, $v) = @_;
- $k =~ s/^://;
- $v =~ tr/\n/ /;
- push(@h, $k, $v);
- });
-
- my $content_ref = $request->content_ref;
- $content_ref = $$content_ref if ref($$content_ref);
- my $chunked;
- my $has_content;
-
- if (ref($content_ref) eq 'CODE') {
- my $clen = $request_headers->header('Content-Length');
- $has_content++ if $clen;
- unless (defined $clen) {
- push(@h, "Transfer-Encoding" => "chunked");
- $has_content++;
- $chunked++;
- }
- }
- else {
- # Set (or override) Content-Length header
- my $clen = $request_headers->header('Content-Length');
- if (defined($$content_ref) && length($$content_ref)) {
- $has_content = length($$content_ref);
- if (!defined($clen) || $clen ne $has_content) {
- if (defined $clen) {
- warn "Content-Length header value was wrong, fixed";
- hlist_remove(\@h, 'Content-Length');
- }
- push(@h, 'Content-Length' => $has_content);
- }
- }
- elsif ($clen) {
- warn "Content-Length set when there is no content, fixed";
- hlist_remove(\@h, 'Content-Length');
- }
- }
-
- my $write_wait = 0;
- $write_wait = 2
- if ($request_headers->header("Expect") || "") =~ /100-continue/;
-
- my $req_buf = $socket->format_request($method, $fullpath, @h);
- #print "------\n$req_buf\n------\n";
-
- if (!$has_content || $write_wait || $has_content > 8*1024) {
- WRITE:
- {
- # Since this just writes out the header block it should almost
- # always succeed to send the whole buffer in a single write call.
- my $n = $socket->syswrite($req_buf, length($req_buf));
- unless (defined $n) {
- redo WRITE if $!{EINTR};
- if ($!{EWOULDBLOCK} || $!{EAGAIN}) {
- select(undef, undef, undef, 0.1);
- redo WRITE;
- }
- die "write failed: $!";
- }
- if ($n) {
- substr($req_buf, 0, $n, "");
- }
- else {
- select(undef, undef, undef, 0.5);
- }
- redo WRITE if length $req_buf;
- }
- }
-
- my($code, $mess, @junk);
- my $drop_connection;
-
- if ($has_content) {
- my $eof;
- my $wbuf;
- my $woffset = 0;
- INITIAL_READ:
- if ($write_wait) {
- # skip filling $wbuf when waiting for 100-continue
- # because if the response is a redirect or auth required
- # the request will be cloned and there is no way
- # to reset the input stream
- # return here via the label after the 100-continue is read
- }
- elsif (ref($content_ref) eq 'CODE') {
- my $buf = &$content_ref();
- $buf = "" unless defined($buf);
- $buf = sprintf "%x%s%s%s", length($buf), $CRLF, $buf, $CRLF
- if $chunked;
- substr($buf, 0, 0) = $req_buf if $req_buf;
- $wbuf = \$buf;
- }
- else {
- if ($req_buf) {
- my $buf = $req_buf . $$content_ref;
- $wbuf = \$buf;
- }
- else {
- $wbuf = $content_ref;
- }
- $eof = 1;
- }
-
- my $fbits = '';
- vec($fbits, fileno($socket), 1) = 1;
-
- WRITE:
- while ($write_wait || $woffset < length($$wbuf)) {
-
- my $sel_timeout = $timeout;
- if ($write_wait) {
- $sel_timeout = $write_wait if $write_wait < $sel_timeout;
- }
- my $time_before;
- $time_before = time if $sel_timeout;
-
- my $rbits = $fbits;
- my $wbits = $write_wait ? undef : $fbits;
- my $sel_timeout_before = $sel_timeout;
- SELECT:
- {
- my $nfound = select($rbits, $wbits, undef, $sel_timeout);
- if ($nfound < 0) {
- if ($!{EINTR} || $!{EWOULDBLOCK} || $!{EAGAIN}) {
- if ($time_before) {
- $sel_timeout = $sel_timeout_before - (time - $time_before);
- $sel_timeout = 0 if $sel_timeout < 0;
- }
- redo SELECT;
- }
- die "select failed: $!";
- }
- }
-
- if ($write_wait) {
- $write_wait -= time - $time_before;
- $write_wait = 0 if $write_wait < 0;
- }
-
- if (defined($rbits) && $rbits =~ /[^\0]/) {
- # readable
- my $buf = $socket->_rbuf;
- my $n = $socket->sysread($buf, 1024, length($buf));
- unless (defined $n) {
- die "read failed: $!" unless $!{EINTR} || $!{EWOULDBLOCK} || $!{EAGAIN};
- # if we get here the rest of the block will do nothing
- # and we will retry the read on the next round
- }
- elsif ($n == 0) {
- # the server closed the connection before we finished
- # writing all the request content. No need to write any more.
- $drop_connection++;
- last WRITE;
- }
- $socket->_rbuf($buf);
- if (!$code && $buf =~ /\015?\012\015?\012/) {
- # a whole response header is present, so we can read it without blocking
- ($code, $mess, @h) = $socket->read_response_headers(laxed => 1,
- junk_out => \@junk,
- );
- if ($code eq "100") {
- $write_wait = 0;
- undef($code);
- goto INITIAL_READ;
- }
- else {
- $drop_connection++;
- last WRITE;
- # XXX should perhaps try to abort write in a nice way too
- }
- }
- }
- if (defined($wbits) && $wbits =~ /[^\0]/) {
- my $n = $socket->syswrite($$wbuf, length($$wbuf), $woffset);
- unless (defined $n) {
- die "write failed: $!" unless $!{EINTR} || $!{EWOULDBLOCK} || $!{EAGAIN};
- $n = 0; # will retry write on the next round
- }
- elsif ($n == 0) {
- die "write failed: no bytes written";
- }
- $woffset += $n;
-
- if (!$eof && $woffset >= length($$wbuf)) {
- # need to refill buffer from $content_ref code
- my $buf = &$content_ref();
- $buf = "" unless defined($buf);
- $eof++ unless length($buf);
- $buf = sprintf "%x%s%s%s", length($buf), $CRLF, $buf, $CRLF
- if $chunked;
- $wbuf = \$buf;
- $woffset = 0;
- }
- }
- } # WRITE
- }
-
- ($code, $mess, @h) = $socket->read_response_headers(laxed => 1, junk_out => \@junk)
- unless $code;
- ($code, $mess, @h) = $socket->read_response_headers(laxed => 1, junk_out => \@junk)
- if $code eq "100";
-
- my $response = HTTP::Response->new($code, $mess);
- my $peer_http_version = $socket->peer_http_version;
- $response->protocol("HTTP/$peer_http_version");
- {
- local $HTTP::Headers::TRANSLATE_UNDERSCORE;
- $response->push_header(@h);
- }
- $response->push_header("Client-Junk" => \@junk) if @junk;
-
- $response->request($request);
- $self->_get_sock_info($response, $socket);
-
- if ($method eq "CONNECT") {
- $response->{client_socket} = $socket; # so it can be picked up
- return $response;
- }
-
- if (my @te = $response->remove_header('Transfer-Encoding')) {
- $response->push_header('Client-Transfer-Encoding', \@te);
- }
- $response->push_header('Client-Response-Num', scalar $socket->increment_response_count);
-
- my $complete;
- $response = $self->collect($arg, $response, sub {
- my $buf = ""; #prevent use of uninitialized value in SSLeay.xs
- my $n;
- READ:
- {
- $n = $socket->read_entity_body($buf, $size);
- unless (defined $n) {
- redo READ if $!{EINTR} || $!{EWOULDBLOCK} || $!{EAGAIN} || $!{ENOTTY};
- die "read failed: $!";
- }
- redo READ if $n == -1;
- }
- $complete++ if !$n;
- return \$buf;
- } );
- $drop_connection++ unless $complete;
-
- @h = $socket->get_trailers;
- if (@h) {
- local $HTTP::Headers::TRANSLATE_UNDERSCORE;
- $response->push_header(@h);
- }
-
- # keep-alive support
- unless ($drop_connection) {
- if ($cache_key) {
- my %connection = map { (lc($_) => 1) }
- split(/\s*,\s*/, ($response->header("Connection") || ""));
- if (($peer_http_version eq "1.1" && !$connection{close}) ||
- $connection{"keep-alive"})
- {
- $conn_cache->deposit($self->socket_type, $cache_key, $socket);
- }
- }
- }
-
- $response;
-}
-
-
-#-----------------------------------------------------------
-package # hide from PAUSE
- LWP::Protocol::http::SocketMethods;
-
-sub ping {
- my $self = shift;
- !$self->can_read(0);
-}
-
-sub increment_response_count {
- my $self = shift;
- return ++${*$self}{'myhttp_response_count'};
-}
-
-#-----------------------------------------------------------
-package # hide from PAUSE
- LWP::Protocol::http::Socket;
-
-use parent -norequire, qw(LWP::Protocol::http::SocketMethods Net::HTTP);
-
-1;
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/loopback.pm b/Master/tlpkg/tlperl/site/lib/LWP/Protocol/loopback.pm
deleted file mode 100644
index a1b095ea705..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/loopback.pm
+++ /dev/null
@@ -1,27 +0,0 @@
-package LWP::Protocol::loopback;
-
-use strict;
-
-our $VERSION = '6.61';
-
-require HTTP::Response;
-
-use parent qw(LWP::Protocol);
-
-sub request {
- my($self, $request, $proxy, $arg, $size, $timeout) = @_;
-
- my $response = HTTP::Response->new(200, "OK");
- $response->content_type("message/http; msgtype=request");
-
- $response->header("Via", "loopback/1.0 $proxy")
- if $proxy;
-
- $response->header("X-Arg", $arg);
- $response->header("X-Read-Size", $size);
- $response->header("X-Timeout", $timeout);
-
- return $self->collect_once($arg, $response, $request->as_string);
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/mailto.pm b/Master/tlpkg/tlperl/site/lib/LWP/Protocol/mailto.pm
deleted file mode 100644
index 29f934bb267..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/mailto.pm
+++ /dev/null
@@ -1,184 +0,0 @@
-package LWP::Protocol::mailto;
-
-# This module implements the mailto protocol. It is just a simple
-# frontend to the Unix sendmail program except on MacOS, where it uses
-# Mail::Internet.
-
-require HTTP::Request;
-require HTTP::Response;
-require HTTP::Status;
-
-use Carp;
-use strict;
-
-our $VERSION = '6.61';
-
-use parent qw(LWP::Protocol);
-our $SENDMAIL;
-
-unless ($SENDMAIL = $ENV{SENDMAIL}) {
- for my $sm (qw(/usr/sbin/sendmail
- /usr/lib/sendmail
- /usr/ucblib/sendmail
- ))
- {
- if (-x $sm) {
- $SENDMAIL = $sm;
- last;
- }
- }
- die "Can't find the 'sendmail' program" unless $SENDMAIL;
-}
-
-sub request
-{
- my($self, $request, $proxy, $arg, $size) = @_;
-
- my ($mail, $addr) if $^O eq "MacOS";
- my @text = () if $^O eq "MacOS";
-
- # check proxy
- if (defined $proxy)
- {
- return HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- 'You can not proxy with mail');
- }
-
- # check method
- my $method = $request->method;
-
- if ($method ne 'POST') {
- return HTTP::Response->new( HTTP::Status::RC_BAD_REQUEST,
- 'Library does not allow method ' .
- "$method for 'mailto:' URLs");
- }
-
- # check url
- my $url = $request->uri;
-
- my $scheme = $url->scheme;
- if ($scheme ne 'mailto') {
- return HTTP::Response->new( HTTP::Status::RC_INTERNAL_SERVER_ERROR,
- "LWP::Protocol::mailto::request called for '$scheme'");
- }
- if ($^O eq "MacOS") {
- eval {
- require Mail::Internet;
- };
- if($@) {
- return HTTP::Response->new( HTTP::Status::RC_INTERNAL_SERVER_ERROR,
- "You don't have MailTools installed");
- }
- unless ($ENV{SMTPHOSTS}) {
- return HTTP::Response->new( HTTP::Status::RC_INTERNAL_SERVER_ERROR,
- "You don't have SMTPHOSTS defined");
- }
- }
- else {
- unless (-x $SENDMAIL) {
- return HTTP::Response->new( HTTP::Status::RC_INTERNAL_SERVER_ERROR,
- "You don't have $SENDMAIL");
- }
- }
- if ($^O eq "MacOS") {
- $mail = Mail::Internet->new or
- return HTTP::Response->new( HTTP::Status::RC_INTERNAL_SERVER_ERROR,
- "Can't get a Mail::Internet object");
- }
- else {
- open(SENDMAIL, "| $SENDMAIL -oi -t") or
- return HTTP::Response->new( HTTP::Status::RC_INTERNAL_SERVER_ERROR,
- "Can't run $SENDMAIL: $!");
- }
- if ($^O eq "MacOS") {
- $addr = $url->encoded822addr;
- }
- else {
- $request = $request->clone; # we modify a copy
- my @h = $url->headers; # URL headers override those in the request
- while (@h) {
- my $k = shift @h;
- my $v = shift @h;
- next unless defined $v;
- if (lc($k) eq "body") {
- $request->content($v);
- }
- else {
- $request->push_header($k => $v);
- }
- }
- }
- if ($^O eq "MacOS") {
- $mail->add(To => $addr);
- $mail->add(split(/[:\n]/,$request->headers_as_string));
- }
- else {
- print SENDMAIL $request->headers_as_string;
- print SENDMAIL "\n";
- }
- my $content = $request->content;
- if (defined $content) {
- my $contRef = ref($content) ? $content : \$content;
- if (ref($contRef) eq 'SCALAR') {
- if ($^O eq "MacOS") {
- @text = split("\n",$$contRef);
- foreach (@text) {
- $_ .= "\n";
- }
- }
- else {
- print SENDMAIL $$contRef;
- }
-
- }
- elsif (ref($contRef) eq 'CODE') {
- # Callback provides data
- my $d;
- if ($^O eq "MacOS") {
- my $stuff = "";
- while (length($d = &$contRef)) {
- $stuff .= $d;
- }
- @text = split("\n",$stuff);
- foreach (@text) {
- $_ .= "\n";
- }
- }
- else {
- print SENDMAIL $d;
- }
- }
- }
- if ($^O eq "MacOS") {
- $mail->body(\@text);
- unless ($mail->smtpsend) {
- return HTTP::Response->new(HTTP::Status::RC_INTERNAL_SERVER_ERROR,
- "Mail::Internet->smtpsend unable to send message to <$addr>");
- }
- }
- else {
- unless (close(SENDMAIL)) {
- my $err = $! ? "$!" : "Exit status $?";
- return HTTP::Response->new(HTTP::Status::RC_INTERNAL_SERVER_ERROR,
- "$SENDMAIL: $err");
- }
- }
-
-
- my $response = HTTP::Response->new(HTTP::Status::RC_ACCEPTED,
- "Mail accepted");
- $response->header('Content-Type', 'text/plain');
- if ($^O eq "MacOS") {
- $response->header('Server' => "Mail::Internet $Mail::Internet::VERSION");
- $response->content("Message sent to <$addr>\n");
- }
- else {
- $response->header('Server' => $SENDMAIL);
- my $to = $request->header("To");
- $response->content("Message sent to <$to>\n");
- }
-
- return $response;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/nntp.pm b/Master/tlpkg/tlperl/site/lib/LWP/Protocol/nntp.pm
deleted file mode 100644
index 1042cd40c31..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/nntp.pm
+++ /dev/null
@@ -1,150 +0,0 @@
-package LWP::Protocol::nntp;
-
-# Implementation of the Network News Transfer Protocol (RFC 977)
-
-use parent qw(LWP::Protocol);
-
-our $VERSION = '6.61';
-
-require HTTP::Response;
-require HTTP::Status;
-require Net::NNTP;
-
-use strict;
-
-
-sub request {
- my ($self, $request, $proxy, $arg, $size, $timeout) = @_;
-
- $size = 4096 unless $size;
-
- # Check for proxy
- if (defined $proxy) {
- return HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- 'You can not proxy through NNTP');
- }
-
- # Check that the scheme is as expected
- my $url = $request->uri;
- my $scheme = $url->scheme;
- unless ($scheme eq 'news' || $scheme eq 'nntp') {
- return HTTP::Response->new(HTTP::Status::RC_INTERNAL_SERVER_ERROR,
- "LWP::Protocol::nntp::request called for '$scheme'");
- }
-
- # check for a valid method
- my $method = $request->method;
- unless ($method eq 'GET' || $method eq 'HEAD' || $method eq 'POST') {
- return HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- 'Library does not allow method ' . "$method for '$scheme:' URLs");
- }
-
- # extract the identifier and check against posting to an article
- my $groupart = $url->_group;
- my $is_art = $groupart =~ /@/;
-
- if ($is_art && $method eq 'POST') {
- return HTTP::Response->new(HTTP::Status::RC_BAD_REQUEST,
- "Can't post to an article <$groupart>");
- }
-
- my $nntp = Net::NNTP->new(
- $url->host,
-
- #Port => 18574,
- Timeout => $timeout,
-
- #Debug => 1,
- );
- die "Can't connect to nntp server" unless $nntp;
-
- # Check the initial welcome message from the NNTP server
- if ($nntp->status != 2) {
- return HTTP::Response->new(HTTP::Status::RC_SERVICE_UNAVAILABLE,
- $nntp->message);
- }
- my $response = HTTP::Response->new(HTTP::Status::RC_OK, "OK");
-
- my $mess = $nntp->message;
-
- # Try to extract server name from greeting message.
- # Don't know if this works well for a large class of servers, but
- # this works for our server.
- $mess =~ s/\s+ready\b.*//;
- $mess =~ s/^\S+\s+//;
- $response->header(Server => $mess);
-
- # First we handle posting of articles
- if ($method eq 'POST') {
- $nntp->quit;
- $nntp = undef;
- $response->code(HTTP::Status::RC_NOT_IMPLEMENTED);
- $response->message("POST not implemented yet");
- return $response;
- }
-
- # The method must be "GET" or "HEAD" by now
- if (!$is_art) {
- if (!$nntp->group($groupart)) {
- $response->code(HTTP::Status::RC_NOT_FOUND);
- $response->message($nntp->message);
- }
- $nntp->quit;
- $nntp = undef;
-
- # HEAD: just check if the group exists
- if ($method eq 'GET' && $response->is_success) {
- $response->code(HTTP::Status::RC_NOT_IMPLEMENTED);
- $response->message("GET newsgroup not implemented yet");
- }
- return $response;
- }
-
- # Send command to server to retrieve an article (or just the headers)
- my $get = $method eq 'HEAD' ? "head" : "article";
- my $art = $nntp->$get("<$groupart>");
- unless ($art) {
- $nntp->quit;
- $response->code(HTTP::Status::RC_NOT_FOUND);
- $response->message($nntp->message);
- $nntp = undef;
- return $response;
- }
-
- # Parse headers
- my ($key, $val);
- local $_;
- while ($_ = shift @$art) {
- if (/^\s+$/) {
- last; # end of headers
- }
- elsif (/^(\S+):\s*(.*)/) {
- $response->push_header($key, $val) if $key;
- ($key, $val) = ($1, $2);
- }
- elsif (/^\s+(.*)/) {
- next unless $key;
- $val .= $1;
- }
- else {
- unshift(@$art, $_);
- last;
- }
- }
- $response->push_header($key, $val) if $key;
-
- # Ensure that there is a Content-Type header
- $response->header("Content-Type", "text/plain")
- unless $response->header("Content-Type");
-
- # Collect the body
- $response = $self->collect_once($arg, $response, join("", @$art)) if @$art;
-
- # Say goodbye to the server
- $nntp->quit;
- $nntp = undef;
-
- $response;
-}
-
-1;
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/nogo.pm b/Master/tlpkg/tlperl/site/lib/LWP/Protocol/nogo.pm
deleted file mode 100644
index dcc54cfc7d1..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Protocol/nogo.pm
+++ /dev/null
@@ -1,25 +0,0 @@
-package LWP::Protocol::nogo;
-# If you want to disable access to a particular scheme, use this
-# class and then call
-# LWP::Protocol::implementor(that_scheme, 'LWP::Protocol::nogo');
-# For then on, attempts to access URLs with that scheme will generate
-# a 500 error.
-
-use strict;
-
-our $VERSION = '6.61';
-
-require HTTP::Response;
-require HTTP::Status;
-use parent qw(LWP::Protocol);
-
-sub request {
- my($self, $request) = @_;
- my $scheme = $request->uri->scheme;
-
- return HTTP::Response->new(
- HTTP::Status::RC_INTERNAL_SERVER_ERROR,
- "Access to \'$scheme\' URIs has been disabled"
- );
-}
-1;
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/RobotUA.pm b/Master/tlpkg/tlperl/site/lib/LWP/RobotUA.pm
deleted file mode 100644
index 028bdef7af2..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/RobotUA.pm
+++ /dev/null
@@ -1,312 +0,0 @@
-package LWP::RobotUA;
-
-use parent qw(LWP::UserAgent);
-
-our $VERSION = '6.61';
-
-require WWW::RobotRules;
-require HTTP::Request;
-require HTTP::Response;
-
-use Carp ();
-use HTTP::Status ();
-use HTTP::Date qw(time2str);
-use strict;
-
-
-#
-# Additional attributes in addition to those found in LWP::UserAgent:
-#
-# $self->{'delay'} Required delay between request to the same
-# server in minutes.
-#
-# $self->{'rules'} A WWW::RobotRules object
-#
-
-sub new
-{
- my $class = shift;
- my %cnf;
- if (@_ < 4) {
- # legacy args
- @cnf{qw(agent from rules)} = @_;
- }
- else {
- %cnf = @_;
- }
-
- Carp::croak('LWP::RobotUA agent required') unless $cnf{agent};
- Carp::croak('LWP::RobotUA from address required')
- unless $cnf{from} && $cnf{from} =~ m/\@/;
-
- my $delay = delete $cnf{delay} || 1;
- my $use_sleep = delete $cnf{use_sleep};
- $use_sleep = 1 unless defined($use_sleep);
- my $rules = delete $cnf{rules};
-
- my $self = LWP::UserAgent->new(%cnf);
- $self = bless $self, $class;
-
- $self->{'delay'} = $delay; # minutes
- $self->{'use_sleep'} = $use_sleep;
-
- if ($rules) {
- $rules->agent($cnf{agent});
- $self->{'rules'} = $rules;
- }
- else {
- $self->{'rules'} = WWW::RobotRules->new($cnf{agent});
- }
-
- $self;
-}
-
-
-sub delay { shift->_elem('delay', @_); }
-sub use_sleep { shift->_elem('use_sleep', @_); }
-
-
-sub agent
-{
- my $self = shift;
- my $old = $self->SUPER::agent(@_);
- if (@_) {
- # Changing our name means to start fresh
- $self->{'rules'}->agent($self->{'agent'});
- }
- $old;
-}
-
-
-sub rules {
- my $self = shift;
- my $old = $self->_elem('rules', @_);
- $self->{'rules'}->agent($self->{'agent'}) if @_;
- $old;
-}
-
-
-sub no_visits
-{
- my($self, $netloc) = @_;
- $self->{'rules'}->no_visits($netloc) || 0;
-}
-
-*host_count = \&no_visits; # backwards compatibility with LWP-5.02
-
-
-sub host_wait
-{
- my($self, $netloc) = @_;
- return undef unless defined $netloc;
- my $last = $self->{'rules'}->last_visit($netloc);
- if ($last) {
- my $wait = int($self->{'delay'} * 60 - (time - $last));
- $wait = 0 if $wait < 0;
- return $wait;
- }
- return 0;
-}
-
-
-sub simple_request
-{
- my($self, $request, $arg, $size) = @_;
-
- # Do we try to access a new server?
- my $allowed = $self->{'rules'}->allowed($request->uri);
-
- if ($allowed < 0) {
- # Host is not visited before, or robots.txt expired; fetch "robots.txt"
- my $robot_url = $request->uri->clone;
- $robot_url->path("robots.txt");
- $robot_url->query(undef);
-
- # make access to robot.txt legal since this will be a recursive call
- $self->{'rules'}->parse($robot_url, "");
-
- my $robot_req = HTTP::Request->new('GET', $robot_url);
- my $parse_head = $self->parse_head(0);
- my $robot_res = $self->request($robot_req);
- $self->parse_head($parse_head);
- my $fresh_until = $robot_res->fresh_until;
- my $content = "";
- if ($robot_res->is_success && $robot_res->content_is_text) {
- $content = $robot_res->decoded_content;
- $content = "" unless $content && $content =~ /^\s*Disallow\s*:/mi;
- }
- $self->{'rules'}->parse($robot_url, $content, $fresh_until);
-
- # recalculate allowed...
- $allowed = $self->{'rules'}->allowed($request->uri);
- }
-
- # Check rules
- unless ($allowed) {
- my $res = HTTP::Response->new(
- HTTP::Status::RC_FORBIDDEN, 'Forbidden by robots.txt');
- $res->request( $request ); # bind it to that request
- return $res;
- }
-
- my $netloc = eval { local $SIG{__DIE__}; $request->uri->host_port; };
- my $wait = $self->host_wait($netloc);
-
- if ($wait) {
- if ($self->{'use_sleep'}) {
- sleep($wait)
- }
- else {
- my $res = HTTP::Response->new(
- HTTP::Status::RC_SERVICE_UNAVAILABLE, 'Please, slow down');
- $res->header('Retry-After', time2str(time + $wait));
- $res->request( $request ); # bind it to that request
- return $res;
- }
- }
-
- # Perform the request
- my $res = $self->SUPER::simple_request($request, $arg, $size);
-
- $self->{'rules'}->visit($netloc);
-
- $res;
-}
-
-
-sub as_string
-{
- my $self = shift;
- my @s;
- push(@s, "Robot: $self->{'agent'} operated by $self->{'from'} [$self]");
- push(@s, " Minimum delay: " . int($self->{'delay'}*60) . "s");
- push(@s, " Will sleep if too early") if $self->{'use_sleep'};
- push(@s, " Rules = $self->{'rules'}");
- join("\n", @s, '');
-}
-
-1;
-
-
-__END__
-
-=pod
-
-=head1 NAME
-
-LWP::RobotUA - a class for well-behaved Web robots
-
-=head1 SYNOPSIS
-
- use LWP::RobotUA;
- my $ua = LWP::RobotUA->new('my-robot/0.1', 'me@foo.com');
- $ua->delay(10); # be very nice -- max one hit every ten minutes!
- ...
-
- # Then just use it just like a normal LWP::UserAgent:
- my $response = $ua->get('http://whatever.int/...');
- ...
-
-=head1 DESCRIPTION
-
-This class implements a user agent that is suitable for robot
-applications. Robots should be nice to the servers they visit. They
-should consult the F</robots.txt> file to ensure that they are welcomed
-and they should not make requests too frequently.
-
-But before you consider writing a robot, take a look at
-L<http://www.robotstxt.org/>.
-
-When you use an I<LWP::RobotUA> object as your user agent, then you do not
-really have to think about these things yourself; C<robots.txt> files
-are automatically consulted and obeyed, the server isn't queried
-too rapidly, and so on. Just send requests
-as you do when you are using a normal I<LWP::UserAgent>
-object (using C<< $ua->get(...) >>, C<< $ua->head(...) >>,
-C<< $ua->request(...) >>, etc.), and this
-special agent will make sure you are nice.
-
-=head1 METHODS
-
-The LWP::RobotUA is a sub-class of L<LWP::UserAgent> and implements the
-same methods. In addition the following methods are provided:
-
-=head2 new
-
- my $ua = LWP::RobotUA->new( %options )
- my $ua = LWP::RobotUA->new( $agent, $from )
- my $ua = LWP::RobotUA->new( $agent, $from, $rules )
-
-The LWP::UserAgent options C<agent> and C<from> are mandatory. The
-options C<delay>, C<use_sleep> and C<rules> initialize attributes
-private to the RobotUA. If C<rules> are not provided, then
-L<WWW::RobotRules> is instantiated providing an internal database of
-F<robots.txt>.
-
-It is also possible to just pass the value of C<agent>, C<from> and
-optionally C<rules> as plain positional arguments.
-
-=head2 delay
-
- my $delay = $ua->delay;
- $ua->delay( $minutes );
-
-Get/set the minimum delay between requests to the same server, in
-I<minutes>. The default is C<1> minute. Note that this number doesn't
-have to be an integer; for example, this sets the delay to C<10> seconds:
-
- $ua->delay(10/60);
-
-=head2 use_sleep
-
- my $bool = $ua->use_sleep;
- $ua->use_sleep( $boolean );
-
-Get/set a value indicating whether the UA should L<LWP::RobotUA/sleep> if
-requests arrive too fast, defined as C<< $ua->delay >> minutes not passed since
-last request to the given server. The default is true. If this value is
-false then an internal C<SERVICE_UNAVAILABLE> response will be generated.
-It will have a C<Retry-After> header that indicates when it is OK to
-send another request to this server.
-
-=head2 rules
-
- my $rules = $ua->rules;
- $ua->rules( $rules );
-
-Set/get which I<WWW::RobotRules> object to use.
-
-=head2 no_visits
-
- my $num = $ua->no_visits( $netloc )
-
-Returns the number of documents fetched from this server host. Yeah I
-know, this method should probably have been named C<num_visits> or
-something like that. :-(
-
-=head2 host_wait
-
- my $num = $ua->host_wait( $netloc )
-
-Returns the number of I<seconds> (from now) you must wait before you can
-make a new request to this host.
-
-=head2 as_string
-
- my $string = $ua->as_string;
-
-Returns a string that describes the state of the UA.
-Mainly useful for debugging.
-
-=head1 SEE ALSO
-
-L<LWP::UserAgent>, L<WWW::RobotRules>
-
-=head1 COPYRIGHT
-
-Copyright 1996-2004 Gisle Aas.
-
-This library is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/Simple.pm b/Master/tlpkg/tlperl/site/lib/LWP/Simple.pm
deleted file mode 100644
index d76d6afdfdb..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/Simple.pm
+++ /dev/null
@@ -1,267 +0,0 @@
-package LWP::Simple;
-
-use strict;
-
-our $VERSION = '6.61';
-
-require Exporter;
-
-our @EXPORT = qw(get head getprint getstore mirror);
-our @EXPORT_OK = qw($ua);
-
-# I really hate this. It was a bad idea to do it in the first place.
-# Wonder how to get rid of it??? (It even makes LWP::Simple 7% slower
-# for trivial tests)
-use HTTP::Status;
-push(@EXPORT, @HTTP::Status::EXPORT);
-
-sub import
-{
- my $pkg = shift;
- my $callpkg = caller;
- Exporter::export($pkg, $callpkg, @_);
-}
-
-use LWP::UserAgent ();
-use HTTP::Date ();
-
-our $ua = LWP::UserAgent->new; # we create a global UserAgent object
-$ua->agent("LWP::Simple/$VERSION ");
-$ua->env_proxy;
-
-sub get ($)
-{
- my $response = $ua->get(shift);
- return $response->decoded_content if $response->is_success;
- return undef;
-}
-
-
-sub head ($)
-{
- my($url) = @_;
- my $request = HTTP::Request->new(HEAD => $url);
- my $response = $ua->request($request);
-
- if ($response->is_success) {
- return $response unless wantarray;
- return (scalar $response->header('Content-Type'),
- scalar $response->header('Content-Length'),
- HTTP::Date::str2time($response->header('Last-Modified')),
- HTTP::Date::str2time($response->header('Expires')),
- scalar $response->header('Server'),
- );
- }
- return;
-}
-
-
-sub getprint ($)
-{
- my($url) = @_;
- my $request = HTTP::Request->new(GET => $url);
- local($\) = ""; # ensure standard $OUTPUT_RECORD_SEPARATOR
- my $callback = sub { print $_[0] };
- if ($^O eq "MacOS") {
- $callback = sub { $_[0] =~ s/\015?\012/\n/g; print $_[0] }
- }
- my $response = $ua->request($request, $callback);
- unless ($response->is_success) {
- print STDERR $response->status_line, " <URL:$url>\n";
- }
- $response->code;
-}
-
-
-sub getstore ($$)
-{
- my($url, $file) = @_;
- my $request = HTTP::Request->new(GET => $url);
- my $response = $ua->request($request, $file);
-
- $response->code;
-}
-
-
-sub mirror ($$)
-{
- my($url, $file) = @_;
- my $response = $ua->mirror($url, $file);
- $response->code;
-}
-
-
-1;
-
-__END__
-
-=pod
-
-=head1 NAME
-
-LWP::Simple - simple procedural interface to LWP
-
-=head1 SYNOPSIS
-
- perl -MLWP::Simple -e 'getprint "http://www.sn.no"'
-
- use LWP::Simple;
- $content = get("http://www.sn.no/");
- die "Couldn't get it!" unless defined $content;
-
- if (mirror("http://www.sn.no/", "foo") == RC_NOT_MODIFIED) {
- ...
- }
-
- if (is_success(getprint("http://www.sn.no/"))) {
- ...
- }
-
-=head1 DESCRIPTION
-
-This module is meant for people who want a simplified view of the
-libwww-perl library. It should also be suitable for one-liners. If
-you need more control or access to the header fields in the requests
-sent and responses received, then you should use the full object-oriented
-interface provided by the L<LWP::UserAgent> module.
-
-The module will also export the L<LWP::UserAgent> object as C<$ua> if you
-ask for it explicitly.
-
-The user agent created by this module will identify itself as
-C<LWP::Simple/#.##>
-and will initialize its proxy defaults from the environment (by
-calling C<< $ua->env_proxy >>).
-
-=head1 FUNCTIONS
-
-The following functions are provided (and exported) by this module:
-
-=head2 get
-
- my $res = get($url);
-
-The get() function will fetch the document identified by the given URL
-and return it. It returns C<undef> if it fails. The C<$url> argument can
-be either a string or a reference to a L<URI> object.
-
-You will not be able to examine the response code or response headers
-(like C<Content-Type>) when you are accessing the web using this
-function. If you need that information you should use the full OO
-interface (see L<LWP::UserAgent>).
-
-=head2 head
-
- my $res = head($url);
-
-Get document headers. Returns the following 5 values if successful:
-($content_type, $document_length, $modified_time, $expires, $server)
-
-Returns an empty list if it fails. In scalar context returns TRUE if
-successful.
-
-=head2 getprint
-
- my $code = getprint($url);
-
-Get and print a document identified by a URL. The document is printed
-to the selected default filehandle for output (normally STDOUT) as
-data is received from the network. If the request fails, then the
-status code and message are printed on STDERR. The return value is
-the HTTP response code.
-
-=head2 getstore
-
- my $code = getstore($url, $file)
-
-Gets a document identified by a URL and stores it in the file. The
-return value is the HTTP response code.
-
-=head2 mirror
-
- my $code = mirror($url, $file);
-
-Get and store a document identified by a URL, using
-I<If-modified-since>, and checking the I<Content-Length>. Returns
-the HTTP response code.
-
-=head1 STATUS CONSTANTS
-
-This module also exports the L<HTTP::Status> constants and procedures.
-You can use them when you check the response code from L<LWP::Simple/getprint>,
-L<LWP::Simple/getstore> or L<LWP::Simple/mirror>. The constants are:
-
- RC_CONTINUE
- RC_SWITCHING_PROTOCOLS
- RC_OK
- RC_CREATED
- RC_ACCEPTED
- RC_NON_AUTHORITATIVE_INFORMATION
- RC_NO_CONTENT
- RC_RESET_CONTENT
- RC_PARTIAL_CONTENT
- RC_MULTIPLE_CHOICES
- RC_MOVED_PERMANENTLY
- RC_MOVED_TEMPORARILY
- RC_SEE_OTHER
- RC_NOT_MODIFIED
- RC_USE_PROXY
- RC_BAD_REQUEST
- RC_UNAUTHORIZED
- RC_PAYMENT_REQUIRED
- RC_FORBIDDEN
- RC_NOT_FOUND
- RC_METHOD_NOT_ALLOWED
- RC_NOT_ACCEPTABLE
- RC_PROXY_AUTHENTICATION_REQUIRED
- RC_REQUEST_TIMEOUT
- RC_CONFLICT
- RC_GONE
- RC_LENGTH_REQUIRED
- RC_PRECONDITION_FAILED
- RC_REQUEST_ENTITY_TOO_LARGE
- RC_REQUEST_URI_TOO_LARGE
- RC_UNSUPPORTED_MEDIA_TYPE
- RC_INTERNAL_SERVER_ERROR
- RC_NOT_IMPLEMENTED
- RC_BAD_GATEWAY
- RC_SERVICE_UNAVAILABLE
- RC_GATEWAY_TIMEOUT
- RC_HTTP_VERSION_NOT_SUPPORTED
-
-=head1 CLASSIFICATION FUNCTIONS
-
-The L<HTTP::Status> classification functions are:
-
-=head2 is_success
-
- my $bool = is_success($rc);
-
-True if response code indicated a successful request.
-
-=head2 is_error
-
- my $bool = is_error($rc)
-
-True if response code indicated that an error occurred.
-
-=head1 CAVEAT
-
-Note that if you are using both LWP::Simple and the very popular L<CGI>
-module, you may be importing a C<head> function from each module,
-producing a warning like C<Prototype mismatch: sub main::head ($) vs none>.
-Get around this problem by just not importing LWP::Simple's
-C<head> function, like so:
-
- use LWP::Simple qw(!head);
- use CGI qw(:standard); # then only CGI.pm defines a head()
-
-Then if you do need LWP::Simple's C<head> function, you can just call
-it as C<LWP::Simple::head($url)>.
-
-=head1 SEE ALSO
-
-L<LWP>, L<lwpcook>, L<LWP::UserAgent>, L<HTTP::Status>, L<lwp-request>,
-L<lwp-mirror>
-
-=cut
diff --git a/Master/tlpkg/tlperl/site/lib/LWP/UserAgent.pm b/Master/tlpkg/tlperl/site/lib/LWP/UserAgent.pm
deleted file mode 100644
index a521f165290..00000000000
--- a/Master/tlpkg/tlperl/site/lib/LWP/UserAgent.pm
+++ /dev/null
@@ -1,2179 +0,0 @@
-package LWP::UserAgent;
-
-use strict;
-
-use parent qw(LWP::MemberMixin);
-
-use Carp ();
-use File::Copy ();
-use HTTP::Request ();
-use HTTP::Response ();
-use HTTP::Date ();
-
-use LWP ();
-use HTTP::Status ();
-use LWP::Protocol ();
-
-use Scalar::Util qw(blessed);
-use Try::Tiny qw(try catch);
-
-our $VERSION = '6.61';
-
-sub new
-{
- # Check for common user mistake
- Carp::croak("Options to LWP::UserAgent should be key/value pairs, not hash reference")
- if ref($_[1]) eq 'HASH';
-
- my($class, %cnf) = @_;
-
- my $agent = delete $cnf{agent};
- my $from = delete $cnf{from};
- my $def_headers = delete $cnf{default_headers};
- my $timeout = delete $cnf{timeout};
- $timeout = 3*60 unless defined $timeout;
- my $local_address = delete $cnf{local_address};
- my $ssl_opts = delete $cnf{ssl_opts} || {};
- unless (exists $ssl_opts->{verify_hostname}) {
- # The processing of HTTPS_CA_* below is for compatibility with Crypt::SSLeay
- if (exists $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}) {
- $ssl_opts->{verify_hostname} = $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME};
- }
- elsif ($ENV{HTTPS_CA_FILE} || $ENV{HTTPS_CA_DIR}) {
- # Crypt-SSLeay compatibility (verify peer certificate; but not the hostname)
- $ssl_opts->{verify_hostname} = 0;
- $ssl_opts->{SSL_verify_mode} = 1;
- }
- else {
- $ssl_opts->{verify_hostname} = 1;
- }
- }
- unless (exists $ssl_opts->{SSL_ca_file}) {
- if (my $ca_file = $ENV{PERL_LWP_SSL_CA_FILE} || $ENV{HTTPS_CA_FILE}) {
- $ssl_opts->{SSL_ca_file} = $ca_file;
- }
- }
- unless (exists $ssl_opts->{SSL_ca_path}) {
- if (my $ca_path = $ENV{PERL_LWP_SSL_CA_PATH} || $ENV{HTTPS_CA_DIR}) {
- $ssl_opts->{SSL_ca_path} = $ca_path;
- }
- }
- my $use_eval = delete $cnf{use_eval};
- $use_eval = 1 unless defined $use_eval;
- my $parse_head = delete $cnf{parse_head};
- $parse_head = 1 unless defined $parse_head;
- my $send_te = delete $cnf{send_te};
- $send_te = 1 unless defined $send_te;
- my $show_progress = delete $cnf{show_progress};
- my $max_size = delete $cnf{max_size};
- my $max_redirect = delete $cnf{max_redirect};
- $max_redirect = 7 unless defined $max_redirect;
- my $env_proxy = exists $cnf{env_proxy} ? delete $cnf{env_proxy} : $ENV{PERL_LWP_ENV_PROXY};
- my $no_proxy = exists $cnf{no_proxy} ? delete $cnf{no_proxy} : [];
- Carp::croak(qq{no_proxy must be an arrayref, not $no_proxy!}) if ref $no_proxy ne 'ARRAY';
-
- my $cookie_jar = delete $cnf{cookie_jar};
- my $conn_cache = delete $cnf{conn_cache};
- my $keep_alive = delete $cnf{keep_alive};
-
- Carp::croak("Can't mix conn_cache and keep_alive")
- if $conn_cache && $keep_alive;
-
- my $protocols_allowed = delete $cnf{protocols_allowed};
- my $protocols_forbidden = delete $cnf{protocols_forbidden};
-
- my $requests_redirectable = delete $cnf{requests_redirectable};
- $requests_redirectable = ['GET', 'HEAD']
- unless defined $requests_redirectable;
-
- # Actually ""s are just as good as 0's, but for concision we'll just say:
- Carp::croak("protocols_allowed has to be an arrayref or 0, not \"$protocols_allowed\"!")
- if $protocols_allowed and ref($protocols_allowed) ne 'ARRAY';
- Carp::croak("protocols_forbidden has to be an arrayref or 0, not \"$protocols_forbidden\"!")
- if $protocols_forbidden and ref($protocols_forbidden) ne 'ARRAY';
- Carp::croak("requests_redirectable has to be an arrayref or 0, not \"$requests_redirectable\"!")
- if $requests_redirectable and ref($requests_redirectable) ne 'ARRAY';
-
- if (%cnf && $^W) {
- Carp::carp("Unrecognized LWP::UserAgent options: @{[sort keys %cnf]}");
- }
-
- my $self = bless {
- def_headers => $def_headers,
- timeout => $timeout,
- local_address => $local_address,
- ssl_opts => $ssl_opts,
- use_eval => $use_eval,
- show_progress => $show_progress,
- max_size => $max_size,
- max_redirect => $max_redirect,
- # We set proxy later as we do validation on the values
- proxy => {},
- no_proxy => [ @{ $no_proxy } ],
- protocols_allowed => $protocols_allowed,
- protocols_forbidden => $protocols_forbidden,
- requests_redirectable => $requests_redirectable,
- send_te => $send_te,
- }, $class;
-
- $self->agent(defined($agent) ? $agent : $class->_agent)
- if defined($agent) || !$def_headers || !$def_headers->header("User-Agent");
- $self->from($from) if $from;
- $self->cookie_jar($cookie_jar) if $cookie_jar;
- $self->parse_head($parse_head);
- $self->env_proxy if $env_proxy;
-
- if (exists $cnf{proxy}) {
- Carp::croak(qq{proxy must be an arrayref, not $cnf{proxy}!})
- if ref $cnf{proxy} ne 'ARRAY';
- $self->proxy($cnf{proxy});
- }
-
- $self->protocols_allowed( $protocols_allowed ) if $protocols_allowed;
- $self->protocols_forbidden($protocols_forbidden) if $protocols_forbidden;
-
- if ($keep_alive) {
- $conn_cache ||= { total_capacity => $keep_alive };
- }
- $self->conn_cache($conn_cache) if $conn_cache;
-
- return $self;
-}
-
-
-sub send_request
-{
- my($self, $request, $arg, $size) = @_;
- my($method, $url) = ($request->method, $request->uri);
- my $scheme = $url->scheme;
-
- local($SIG{__DIE__}); # protect against user defined die handlers
-
- $self->progress("begin", $request);
-
- my $response = $self->run_handlers("request_send", $request);
-
- unless ($response) {
- my $protocol;
-
- {
- # Honor object-specific restrictions by forcing protocol objects
- # into class LWP::Protocol::nogo.
- my $x;
- if($x = $self->protocols_allowed) {
- if (grep lc($_) eq $scheme, @$x) {
- }
- else {
- require LWP::Protocol::nogo;
- $protocol = LWP::Protocol::nogo->new;
- }
- }
- elsif ($x = $self->protocols_forbidden) {
- if(grep lc($_) eq $scheme, @$x) {
- require LWP::Protocol::nogo;
- $protocol = LWP::Protocol::nogo->new;
- }
- }
- # else fall thru and create the protocol object normally
- }
-
- # Locate protocol to use
- my $proxy = $request->{proxy};
- if ($proxy) {
- $scheme = $proxy->scheme;
- }
-
- unless ($protocol) {
- try {
- $protocol = LWP::Protocol::create($scheme, $self);
- }
- catch {
- my $error = $_;
- $error =~ s/ at .* line \d+.*//s; # remove file/line number
- $response = _new_response($request, HTTP::Status::RC_NOT_IMPLEMENTED, $error);
- if ($scheme eq "https") {
- $response->message($response->message . " (LWP::Protocol::https not installed)");
- $response->content_type("text/plain");
- $response->content(<<EOT);
-LWP will support https URLs if the LWP::Protocol::https module
-is installed.
-EOT
- }
- };
- }
-
- if (!$response && $self->{use_eval}) {
- # we eval, and turn dies into responses below
- try {
- $response = $protocol->request($request, $proxy, $arg, $size, $self->{timeout}) || die "No response returned by $protocol";
- }
- catch {
- my $error = $_;
- if (blessed($error) && $error->isa("HTTP::Response")) {
- $response = $error;
- $response->request($request);
- }
- else {
- my $full = $error;
- (my $status = $error) =~ s/\n.*//s;
- $status =~ s/ at .* line \d+.*//s; # remove file/line number
- my $code = ($status =~ s/^(\d\d\d)\s+//) ? $1 : HTTP::Status::RC_INTERNAL_SERVER_ERROR;
- $response = _new_response($request, $code, $status, $full);
- }
- };
- }
- elsif (!$response) {
- $response = $protocol->request($request, $proxy,
- $arg, $size, $self->{timeout});
- # XXX: Should we die unless $response->is_success ???
- }
- }
-
- $response->request($request); # record request for reference
- $response->header("Client-Date" => HTTP::Date::time2str(time));
-
- $self->run_handlers("response_done", $response);
-
- $self->progress("end", $response);
- return $response;
-}
-
-
-sub prepare_request
-{
- my($self, $request) = @_;
- die "Method missing" unless $request->method;
- my $url = $request->uri;
- die "URL missing" unless $url;
- die "URL must be absolute" unless $url->scheme;
-
- $self->run_handlers("request_preprepare", $request);
-
- if (my $def_headers = $self->{def_headers}) {
- for my $h ($def_headers->header_field_names) {
- $request->init_header($h => [$def_headers->header($h)]);
- }
- }
-
- $self->run_handlers("request_prepare", $request);
-
- return $request;
-}
-
-
-sub simple_request
-{
- my($self, $request, $arg, $size) = @_;
-
- # sanity check the request passed in
- if (defined $request) {
- if (ref $request) {
- Carp::croak("You need a request object, not a " . ref($request) . " object")
- if ref($request) eq 'ARRAY' or ref($request) eq 'HASH' or
- !$request->can('method') or !$request->can('uri');
- }
- else {
- Carp::croak("You need a request object, not '$request'");
- }
- }
- else {
- Carp::croak("No request object passed in");
- }
-
- my $error;
- try {
- $request = $self->prepare_request($request);
- }
- catch {
- $error = $_;
- $error =~ s/ at .* line \d+.*//s; # remove file/line number
- };
-
- if ($error) {
- return _new_response($request, HTTP::Status::RC_BAD_REQUEST, $error);
- }
- return $self->send_request($request, $arg, $size);
-}
-
-
-sub request {
- my ($self, $request, $arg, $size, $previous) = @_;
-
- my $response = $self->simple_request($request, $arg, $size);
- $response->previous($previous) if $previous;
-
- if ($response->redirects >= $self->{max_redirect}) {
- if ($response->header('Location')) {
- $response->header("Client-Warning" =>
- "Redirect loop detected (max_redirect = $self->{max_redirect})"
- );
- }
- return $response;
- }
-
- if (my $req = $self->run_handlers("response_redirect", $response)) {
- return $self->request($req, $arg, $size, $response);
- }
-
- my $code = $response->code;
-
- if ( $code == HTTP::Status::RC_MOVED_PERMANENTLY
- or $code == HTTP::Status::RC_FOUND
- or $code == HTTP::Status::RC_SEE_OTHER
- or $code == HTTP::Status::RC_TEMPORARY_REDIRECT
- or $code == HTTP::Status::RC_PERMANENT_REDIRECT)
- {
- my $referral = $request->clone;
-
- # These headers should never be forwarded
- $referral->remove_header('Host', 'Cookie');
-
- if ( $referral->header('Referer')
- && $request->uri->scheme eq 'https'
- && $referral->uri->scheme eq 'http')
- {
- # RFC 2616, section 15.1.3.
- # https -> http redirect, suppressing Referer
- $referral->remove_header('Referer');
- }
-
- if ( $code == HTTP::Status::RC_SEE_OTHER
- || $code == HTTP::Status::RC_FOUND)
- {
- my $method = uc($referral->method);
- unless ($method eq "GET" || $method eq "HEAD") {
- $referral->method("GET");
- $referral->content("");
- $referral->remove_content_headers;
- }
- }
-
- # And then we update the URL based on the Location:-header.
- my $referral_uri = $response->header('Location');
- {
- # Some servers erroneously return a relative URL for redirects,
- # so make it absolute if it not already is.
- local $URI::ABS_ALLOW_RELATIVE_SCHEME = 1;
- my $base = $response->base;
- $referral_uri = "" unless defined $referral_uri;
- $referral_uri
- = $HTTP::URI_CLASS->new($referral_uri, $base)->abs($base);
- }
- $referral->uri($referral_uri);
-
- return $response unless $self->redirect_ok($referral, $response);
- return $self->request($referral, $arg, $size, $response);
-
- }
- elsif ($code == HTTP::Status::RC_UNAUTHORIZED
- || $code == HTTP::Status::RC_PROXY_AUTHENTICATION_REQUIRED)
- {
- my $proxy = ($code == HTTP::Status::RC_PROXY_AUTHENTICATION_REQUIRED);
- my $ch_header
- = $proxy || $request->method eq 'CONNECT'
- ? "Proxy-Authenticate"
- : "WWW-Authenticate";
- my @challenges = $response->header($ch_header);
- unless (@challenges) {
- $response->header(
- "Client-Warning" => "Missing Authenticate header");
- return $response;
- }
-
- require HTTP::Headers::Util;
- CHALLENGE: for my $challenge (@challenges) {
- $challenge =~ tr/,/;/; # "," is used to separate auth-params!!
- ($challenge) = HTTP::Headers::Util::split_header_words($challenge);
- my $scheme = shift(@$challenge);
- shift(@$challenge); # no value
- $challenge = {@$challenge}; # make rest into a hash
-
- unless ($scheme =~ /^([a-z]+(?:-[a-z]+)*)$/) {
- $response->header(
- "Client-Warning" => "Bad authentication scheme '$scheme'");
- return $response;
- }
- $scheme = $1; # untainted now
- my $class = "LWP::Authen::\u$scheme";
- $class =~ tr/-/_/;
-
- no strict 'refs';
- unless (%{"$class\::"}) {
- # try to load it
- my $error;
- try {
- (my $req = $class) =~ s{::}{/}g;
- $req .= '.pm' unless $req =~ /\.pm$/;
- require $req;
- }
- catch {
- $error = $_;
- };
- if ($error) {
- if ($error =~ /^Can\'t locate/) {
- $response->header("Client-Warning" =>
- "Unsupported authentication scheme '$scheme'");
- }
- else {
- $response->header("Client-Warning" => $error);
- }
- next CHALLENGE;
- }
- }
- unless ($class->can("authenticate")) {
- $response->header("Client-Warning" =>
- "Unsupported authentication scheme '$scheme'");
- next CHALLENGE;
- }
- my $re = $class->authenticate($self, $proxy, $challenge, $response,
- $request, $arg, $size);
-
- next CHALLENGE if $re->code == HTTP::Status::RC_UNAUTHORIZED;
- return $re;
- }
- return $response;
- }
- return $response;
-}
-
-#
-# Now the shortcuts...
-#
-sub get {
- require HTTP::Request::Common;
- my($self, @parameters) = @_;
- my @suff = $self->_process_colonic_headers(\@parameters,1);
- return $self->request( HTTP::Request::Common::GET( @parameters ), @suff );
-}
-
-sub _maybe_copy_default_content_type {
- my $self = shift;
- my $req = shift;
-
- my $default_ct = $self->default_header('Content-Type');
- return unless defined $default_ct;
-
- # drop url
- shift;
-
- # adapted from HTTP::Request::Common::request_type_with_data
- my $content;
- $content = shift if @_ and ref $_[0];
-
- # We only care about the final value, really
- my $ct;
-
- my ($k, $v);
- while (($k, $v) = splice(@_, 0, 2)) {
- if (lc($k) eq 'content') {
- $content = $v;
- }
- elsif (lc($k) eq 'content-type') {
- $ct = $v;
- }
- }
-
- # Content-type provided and truthy? skip
- return if $ct;
-
- # Content is not just a string? Then it must be x-www-form-urlencoded
- return if defined $content && ref($content);
-
- # Provide default
- $req->header('Content-Type' => $default_ct);
-}
-
-sub post {
- require HTTP::Request::Common;
- my($self, @parameters) = @_;
- my @suff = $self->_process_colonic_headers(\@parameters, (ref($parameters[1]) ? 2 : 1));
- my $req = HTTP::Request::Common::POST(@parameters);
- $self->_maybe_copy_default_content_type($req, @parameters);
- return $self->request($req, @suff);
-}
-
-
-sub head {
- require HTTP::Request::Common;
- my($self, @parameters) = @_;
- my @suff = $self->_process_colonic_headers(\@parameters,1);
- return $self->request( HTTP::Request::Common::HEAD( @parameters ), @suff );
-}
-
-sub patch {
- require HTTP::Request::Common;
- my($self, @parameters) = @_;
- my @suff = $self->_process_colonic_headers(\@parameters, (ref($parameters[1]) ? 2 : 1));
-
- # this work-around is in place as HTTP::Request::Common
- # did not implement a patch convenience method until
- # version 6.12. Once we can bump the prereq to at least
- # that version, we can use ::PATCH instead of this hack
- my $req = HTTP::Request::Common::PUT(@parameters);
- $req->method('PATCH');
-
- $self->_maybe_copy_default_content_type($req, @parameters);
- return $self->request($req, @suff);
-}
-
-sub put {
- require HTTP::Request::Common;
- my($self, @parameters) = @_;
- my @suff = $self->_process_colonic_headers(\@parameters, (ref($parameters[1]) ? 2 : 1));
- my $req = HTTP::Request::Common::PUT(@parameters);
- $self->_maybe_copy_default_content_type($req, @parameters);
- return $self->request($req, @suff);
-}
-
-
-sub delete {
- require HTTP::Request::Common;
- my($self, @parameters) = @_;
- my @suff = $self->_process_colonic_headers(\@parameters,1);
- return $self->request( HTTP::Request::Common::DELETE( @parameters ), @suff );
-}
-
-
-sub _process_colonic_headers {
- # Process :content_cb / :content_file / :read_size_hint headers.
- my($self, $args, $start_index) = @_;
-
- my($arg, $size);
- for(my $i = $start_index; $i < @$args; $i += 2) {
- next unless defined $args->[$i];
-
- #printf "Considering %s => %s\n", $args->[$i], $args->[$i + 1];
-
- if($args->[$i] eq ':content_cb') {
- # Some sanity-checking...
- $arg = $args->[$i + 1];
- Carp::croak("A :content_cb value can't be undef") unless defined $arg;
- Carp::croak("A :content_cb value must be a coderef")
- unless ref $arg and UNIVERSAL::isa($arg, 'CODE');
-
- }
- elsif ($args->[$i] eq ':content_file') {
- $arg = $args->[$i + 1];
-
- # Some sanity-checking...
- Carp::croak("A :content_file value can't be undef")
- unless defined $arg;
- Carp::croak("A :content_file value can't be a reference")
- if ref $arg;
- Carp::croak("A :content_file value can't be \"\"")
- unless length $arg;
-
- }
- elsif ($args->[$i] eq ':read_size_hint') {
- $size = $args->[$i + 1];
- # Bother checking it?
-
- }
- else {
- next;
- }
- splice @$args, $i, 2;
- $i -= 2;
- }
-
- # And return a suitable suffix-list for request(REQ,...)
-
- return unless defined $arg;
- return $arg, $size if defined $size;
- return $arg;
-}
-
-
-sub is_online {
- my $self = shift;
- return 1 if $self->get("http://www.msftncsi.com/ncsi.txt")->content eq "Microsoft NCSI";
- return 1 if $self->get("http://www.apple.com")->content =~ m,<title>Apple</title>,;
- return 0;
-}
-
-
-my @ANI = qw(- \ | /);
-
-sub progress {
- my($self, $status, $m) = @_;
- return unless $self->{show_progress};
-
- local($,, $\);
- if ($status eq "begin") {
- print STDERR "** ", $m->method, " ", $m->uri, " ==> ";
- $self->{progress_start} = time;
- $self->{progress_lastp} = "";
- $self->{progress_ani} = 0;
- }
- elsif ($status eq "end") {
- delete $self->{progress_lastp};
- delete $self->{progress_ani};
- print STDERR $m->status_line;
- my $t = time - delete $self->{progress_start};
- print STDERR " (${t}s)" if $t;
- print STDERR "\n";
- }
- elsif ($status eq "tick") {
- print STDERR "$ANI[$self->{progress_ani}++]\b";
- $self->{progress_ani} %= @ANI;
- }
- else {
- my $p = sprintf "%3.0f%%", $status * 100;
- return if $p eq $self->{progress_lastp};
- print STDERR "$p\b\b\b\b";
- $self->{progress_lastp} = $p;
- }
- STDERR->flush;
-}
-
-
-#
-# This whole allow/forbid thing is based on man 1 at's way of doing things.
-#
-sub is_protocol_supported
-{
- my($self, $scheme) = @_;
- if (ref $scheme) {
- # assume we got a reference to an URI object
- $scheme = $scheme->scheme;
- }
- else {
- Carp::croak("Illegal scheme '$scheme' passed to is_protocol_supported")
- if $scheme =~ /\W/;
- $scheme = lc $scheme;
- }
-
- my $x;
- if(ref($self) and $x = $self->protocols_allowed) {
- return 0 unless grep lc($_) eq $scheme, @$x;
- }
- elsif (ref($self) and $x = $self->protocols_forbidden) {
- return 0 if grep lc($_) eq $scheme, @$x;
- }
-
- local($SIG{__DIE__}); # protect against user defined die handlers
- $x = LWP::Protocol::implementor($scheme);
- return 1 if $x and $x ne 'LWP::Protocol::nogo';
- return 0;
-}
-
-
-sub protocols_allowed { shift->_elem('protocols_allowed' , @_) }
-sub protocols_forbidden { shift->_elem('protocols_forbidden' , @_) }
-sub requests_redirectable { shift->_elem('requests_redirectable', @_) }
-
-
-sub redirect_ok
-{
- # RFC 2616, section 10.3.2 and 10.3.3 say:
- # If the 30[12] status code is received in response to a request other
- # than GET or HEAD, the user agent MUST NOT automatically redirect the
- # request unless it can be confirmed by the user, since this might
- # change the conditions under which the request was issued.
-
- # Note that this routine used to be just:
- # return 0 if $_[1]->method eq "POST"; return 1;
-
- my($self, $new_request, $response) = @_;
- my $method = $response->request->method;
- return 0 unless grep $_ eq $method,
- @{ $self->requests_redirectable || [] };
-
- if ($new_request->uri->scheme eq 'file') {
- $response->header("Client-Warning" =>
- "Can't redirect to a file:// URL!");
- return 0;
- }
-
- # Otherwise it's apparently okay...
- return 1;
-}
-
-sub credentials {
- my $self = shift;
- my $netloc = lc(shift || '');
- my $realm = shift || "";
- my $old = $self->{basic_authentication}{$netloc}{$realm};
- if (@_) {
- $self->{basic_authentication}{$netloc}{$realm} = [@_];
- }
- return unless $old;
- return @$old if wantarray;
- return join(":", @$old);
-}
-
-sub get_basic_credentials
-{
- my($self, $realm, $uri, $proxy) = @_;
- return if $proxy;
- return $self->credentials($uri->host_port, $realm);
-}
-
-
-sub timeout { shift->_elem('timeout', @_); }
-sub local_address{ shift->_elem('local_address',@_); }
-sub max_size { shift->_elem('max_size', @_); }
-sub max_redirect { shift->_elem('max_redirect', @_); }
-sub show_progress{ shift->_elem('show_progress', @_); }
-sub send_te { shift->_elem('send_te', @_); }
-
-sub ssl_opts {
- my $self = shift;
- if (@_ == 1) {
- my $k = shift;
- return $self->{ssl_opts}{$k};
- }
- if (@_) {
- my $old;
- while (@_) {
- my($k, $v) = splice(@_, 0, 2);
- $old = $self->{ssl_opts}{$k} unless @_;
- if (defined $v) {
- $self->{ssl_opts}{$k} = $v;
- }
- else {
- delete $self->{ssl_opts}{$k};
- }
- }
- %{$self->{ssl_opts}} = (%{$self->{ssl_opts}}, @_);
- return $old;
- }
-
- my @opts= sort keys %{$self->{ssl_opts}};
- return @opts;
-}
-
-sub parse_head {
- my $self = shift;
- if (@_) {
- my $flag = shift;
- my $parser;
- my $old = $self->set_my_handler("response_header", $flag ? sub {
- my($response, $ua) = @_;
- require HTML::HeadParser;
- $parser = HTML::HeadParser->new;
- $parser->xml_mode(1) if $response->content_is_xhtml;
- $parser->utf8_mode(1) if $] >= 5.008 && $HTML::Parser::VERSION >= 3.40;
-
- push(@{$response->{handlers}{response_data}}, {
- callback => sub {
- return unless $parser;
- unless ($parser->parse($_[3])) {
- my $h = $parser->header;
- my $r = $_[0];
- for my $f ($h->header_field_names) {
- $r->init_header($f, [$h->header($f)]);
- }
- undef($parser);
- }
- },
- });
-
- } : undef,
- m_media_type => "html",
- );
- return !!$old;
- }
- else {
- return !!$self->get_my_handler("response_header");
- }
-}
-
-sub cookie_jar {
- my $self = shift;
- my $old = $self->{cookie_jar};
- if (@_) {
- my $jar = shift;
- if (ref($jar) eq "HASH") {
- require HTTP::Cookies;
- $jar = HTTP::Cookies->new(%$jar);
- }
- $self->{cookie_jar} = $jar;
- $self->set_my_handler("request_prepare",
- $jar ? sub {
- return if $_[0]->header("Cookie");
- $jar->add_cookie_header($_[0]);
- } : undef,
- );
- $self->set_my_handler("response_done",
- $jar ? sub { $jar->extract_cookies($_[0]); } : undef,
- );
- }
- $old;
-}
-
-sub default_headers {
- my $self = shift;
- my $old = $self->{def_headers} ||= HTTP::Headers->new;
- if (@_) {
- Carp::croak("default_headers not set to HTTP::Headers compatible object")
- unless @_ == 1 && $_[0]->can("header_field_names");
- $self->{def_headers} = shift;
- }
- return $old;
-}
-
-sub default_header {
- my $self = shift;
- return $self->default_headers->header(@_);
-}
-
-sub _agent { "libwww-perl/$VERSION" }
-
-sub agent {
- my $self = shift;
- if (@_) {
- my $agent = shift;
- if ($agent) {
- $agent .= $self->_agent if $agent =~ /\s+$/;
- }
- else {
- undef($agent)
- }
- return $self->default_header("User-Agent", $agent);
- }
- return $self->default_header("User-Agent");
-}
-
-sub from { # legacy
- my $self = shift;
- return $self->default_header("From", @_);
-}
-
-
-sub conn_cache {
- my $self = shift;
- my $old = $self->{conn_cache};
- if (@_) {
- my $cache = shift;
- if (ref($cache) eq "HASH") {
- require LWP::ConnCache;
- $cache = LWP::ConnCache->new(%$cache);
- }
- $self->{conn_cache} = $cache;
- }
- $old;
-}
-
-
-sub add_handler {
- my($self, $phase, $cb, %spec) = @_;
- $spec{line} ||= join(":", (caller)[1,2]);
- my $conf = $self->{handlers}{$phase} ||= do {
- require HTTP::Config;
- HTTP::Config->new;
- };
- $conf->add(%spec, callback => $cb);
-}
-
-sub set_my_handler {
- my($self, $phase, $cb, %spec) = @_;
- $spec{owner} = (caller(1))[3] unless exists $spec{owner};
- $self->remove_handler($phase, %spec);
- $spec{line} ||= join(":", (caller)[1,2]);
- $self->add_handler($phase, $cb, %spec) if $cb;
-}
-
-sub get_my_handler {
- my $self = shift;
- my $phase = shift;
- my $init = pop if @_ % 2;
- my %spec = @_;
- my $conf = $self->{handlers}{$phase};
- unless ($conf) {
- return unless $init;
- require HTTP::Config;
- $conf = $self->{handlers}{$phase} = HTTP::Config->new;
- }
- $spec{owner} = (caller(1))[3] unless exists $spec{owner};
- my @h = $conf->find(%spec);
- if (!@h && $init) {
- if (ref($init) eq "CODE") {
- $init->(\%spec);
- }
- elsif (ref($init) eq "HASH") {
- $spec{$_}= $init->{$_}
- for keys %$init;
- }
- $spec{callback} ||= sub {};
- $spec{line} ||= join(":", (caller)[1,2]);
- $conf->add(\%spec);
- return \%spec;
- }
- return wantarray ? @h : $h[0];
-}
-
-sub remove_handler {
- my($self, $phase, %spec) = @_;
- if ($phase) {
- my $conf = $self->{handlers}{$phase} || return;
- my @h = $conf->remove(%spec);
- delete $self->{handlers}{$phase} if $conf->empty;
- return @h;
- }
-
- return unless $self->{handlers};
- return map $self->remove_handler($_), sort keys %{$self->{handlers}};
-}
-
-sub handlers {
- my($self, $phase, $o) = @_;
- my @h;
- if ($o->{handlers} && $o->{handlers}{$phase}) {
- push(@h, @{$o->{handlers}{$phase}});
- }
- if (my $conf = $self->{handlers}{$phase}) {
- push(@h, $conf->matching($o));
- }
- return @h;
-}
-
-sub run_handlers {
- my($self, $phase, $o) = @_;
-
- # here we pass $_[2] to the callbacks, instead of $o, so that they
- # can assign to it; e.g. request_prepare is documented to allow
- # that
- if (defined(wantarray)) {
- for my $h ($self->handlers($phase, $o)) {
- my $ret = $h->{callback}->($_[2], $self, $h);
- return $ret if $ret;
- }
- return undef;
- }
-
- for my $h ($self->handlers($phase, $o)) {
- $h->{callback}->($_[2], $self, $h);
- }
-}
-
-
-# deprecated
-sub use_eval { shift->_elem('use_eval', @_); }
-sub use_alarm
-{
- Carp::carp("LWP::UserAgent->use_alarm(BOOL) is a no-op")
- if @_ > 1 && $^W;
- "";
-}
-
-
-sub clone
-{
- my $self = shift;
- my $copy = bless { %$self }, ref $self; # copy most fields
-
- delete $copy->{handlers};
- delete $copy->{conn_cache};
-
- # copy any plain arrays and hashes; known not to need recursive copy
- for my $k (qw(proxy no_proxy requests_redirectable ssl_opts)) {
- next unless $copy->{$k};
- if (ref($copy->{$k}) eq "ARRAY") {
- $copy->{$k} = [ @{$copy->{$k}} ];
- }
- elsif (ref($copy->{$k}) eq "HASH") {
- $copy->{$k} = { %{$copy->{$k}} };
- }
- }
-
- if ($self->{def_headers}) {
- $copy->{def_headers} = $self->{def_headers}->clone;
- }
-
- # re-enable standard handlers
- $copy->parse_head($self->parse_head);
-
- # no easy way to clone the cookie jar; so let's just remove it for now
- $copy->cookie_jar(undef);
-
- $copy;
-}
-
-
-sub mirror
-{
- my($self, $url, $file) = @_;
-
- die "Local file name is missing" unless defined $file && length $file;
-
- my $request = HTTP::Request->new('GET', $url);
-
- # If the file exists, add a cache-related header
- if ( -e $file ) {
- my ($mtime) = ( stat($file) )[9];
- if ($mtime) {
- $request->header( 'If-Modified-Since' => HTTP::Date::time2str($mtime) );
- }
- }
-
- require File::Temp;
- my ($tmpfh, $tmpfile) = File::Temp::tempfile("$file-XXXXXX");
- close($tmpfh) or die "Could not close tmpfile '$tmpfile': $!";
-
- my $response = $self->request($request, $tmpfile);
- if ( $response->header('X-Died') ) {
- unlink($tmpfile);
- die $response->header('X-Died');
- }
-
- # Only fetching a fresh copy of the file would be considered success.
- # If the file was not modified, "304" would returned, which
- # is considered by HTTP::Status to be a "redirect", /not/ "success"
- if ( $response->is_success ) {
- my @stat = stat($tmpfile) or die "Could not stat tmpfile '$tmpfile': $!";
- my $file_length = $stat[7];
- my ($content_length) = $response->header('Content-length');
-
- if ( defined $content_length and $file_length < $content_length ) {
- unlink($tmpfile);
- die "Transfer truncated: only $file_length out of $content_length bytes received\n";
- }
- elsif ( defined $content_length and $file_length > $content_length ) {
- unlink($tmpfile);
- die "Content-length mismatch: expected $content_length bytes, got $file_length\n";
- }
- # The file was the expected length.
- else {
- # Replace the stale file with a fresh copy
- # File::Copy will attempt to do it atomically,
- # and fall back to a delete + copy if that fails.
- File::Copy::move( $tmpfile, $file )
- or die "Cannot rename '$tmpfile' to '$file': $!\n";
-
- # Set standard file permissions if umask is supported.
- # If not, leave what File::Temp created in effect.
- if ( defined(my $umask = umask()) ) {
- my $mode = 0666 &~ $umask;
- chmod $mode, $file
- or die sprintf("Cannot chmod %o '%s': %s\n", $mode, $file, $!);
- }
-
- # make sure the file has the same last modification time
- if ( my $lm = $response->last_modified ) {
- utime $lm, $lm, $file
- or warn "Cannot update modification time of '$file': $!\n";
- }
- }
- }
- # The local copy is fresh enough, so just delete the temp file
- else {
- unlink($tmpfile);
- }
- return $response;
-}
-
-
-sub _need_proxy {
- my($req, $ua) = @_;
- return if exists $req->{proxy};
- my $proxy = $ua->{proxy}{$req->uri->scheme} || return;
- if ($ua->{no_proxy}) {
- if (my $host = eval { $req->uri->host }) {
- for my $domain (@{$ua->{no_proxy}}) {
- if ($host =~ /\Q$domain\E$/) {
- return;
- }
- }
- }
- }
- $req->{proxy} = $HTTP::URI_CLASS->new($proxy);
-}
-
-
-sub proxy {
- my $self = shift;
- my $key = shift;
- if (!@_ && ref $key eq 'ARRAY') {
- die 'odd number of items in proxy arrayref!' unless @{$key} % 2 == 0;
-
- # This map reads the elements of $key 2 at a time
- return
- map { $self->proxy($key->[2 * $_], $key->[2 * $_ + 1]) }
- (0 .. @{$key} / 2 - 1);
- }
- return map { $self->proxy($_, @_) } @$key if ref $key;
-
- Carp::croak("'$key' is not a valid URI scheme") unless $key =~ /^$URI::scheme_re\z/;
- my $old = $self->{'proxy'}{$key};
- if (@_) {
- my $url = shift;
- if (defined($url) && length($url)) {
- Carp::croak("Proxy must be specified as absolute URI; '$url' is not") unless $url =~ /^$URI::scheme_re:/;
- Carp::croak("Bad http proxy specification '$url'") if $url =~ /^https?:/ && $url !~ m,^https?://[\w[],;
- }
- $self->{proxy}{$key} = $url;
- $self->set_my_handler("request_preprepare", \&_need_proxy)
- }
- return $old;
-}
-
-
-sub env_proxy {
- my ($self) = @_;
- require Encode;
- require Encode::Locale;
- my $env_request_method= $ENV{REQUEST_METHOD};
- my %seen;
- foreach my $k (sort keys %ENV) {
- my $real_key= $k;
- my $v= $ENV{$k}
- or next;
- if ( $env_request_method ) {
- # Need to be careful when called in the CGI environment, as
- # the HTTP_PROXY variable is under control of that other guy.
- next if $k =~ /^HTTP_/;
- $k = "HTTP_PROXY" if $k eq "CGI_HTTP_PROXY";
- }
- $k = lc($k);
- if (my $from_key= $seen{$k}) {
- warn "Environment contains multiple differing definitions for '$k'.\n".
- "Using value from '$from_key' ($ENV{$from_key}) and ignoring '$real_key' ($v)"
- if $v ne $ENV{$from_key};
- next;
- } else {
- $seen{$k}= $real_key;
- }
-
- next unless $k =~ /^(.*)_proxy$/;
- $k = $1;
- if ($k eq 'no') {
- $self->no_proxy(split(/\s*,\s*/, $v));
- }
- else {
- # Ignore random _proxy variables, allow only valid schemes
- next unless $k =~ /^$URI::scheme_re\z/;
- # Ignore xxx_proxy variables if xxx isn't a supported protocol
- next unless LWP::Protocol::implementor($k);
- $self->proxy($k, Encode::decode(locale => $v));
- }
- }
-}
-
-
-sub no_proxy {
- my($self, @no) = @_;
- if (@no) {
- push(@{ $self->{'no_proxy'} }, @no);
- }
- else {
- $self->{'no_proxy'} = [];
- }
-}
-
-
-sub _new_response {
- my($request, $code, $message, $content) = @_;
- $message ||= HTTP::Status::status_message($code);
- my $response = HTTP::Response->new($code, $message);
- $response->request($request);
- $response->header("Client-Date" => HTTP::Date::time2str(time));
- $response->header("Client-Warning" => "Internal response");
- $response->header("Content-Type" => "text/plain");
- $response->content($content || "$code $message\n");
- return $response;
-}
-
-
-1;
-
-__END__
-
-=pod
-
-=head1 NAME
-
-LWP::UserAgent - Web user agent class
-
-=head1 SYNOPSIS
-
- use strict;
- use warnings;
-
- use LWP::UserAgent ();
-
- my $ua = LWP::UserAgent->new(timeout => 10);
- $ua->env_proxy;
-
- my $response = $ua->get('http://example.com');
-
- if ($response->is_success) {
- print $response->decoded_content;
- }
- else {
- die $response->status_line;
- }
-
-Extra layers of security (note the C<cookie_jar> and C<protocols_allowed>):
-
- use strict;
- use warnings;
-
- use HTTP::CookieJar::LWP ();
- use LWP::UserAgent ();
-
- my $jar = HTTP::CookieJar::LWP->new;
- my $ua = LWP::UserAgent->new(
- cookie_jar => $jar,
- protocols_allowed => ['http', 'https'],
- timeout => 10,
- );
-
- $ua->env_proxy;
-
- my $response = $ua->get('http://example.com');
-
- if ($response->is_success) {
- print $response->decoded_content;
- }
- else {
- die $response->status_line;
- }
-
-=head1 DESCRIPTION
-
-The L<LWP::UserAgent> is a class implementing a web user agent.
-L<LWP::UserAgent> objects can be used to dispatch web requests.
-
-In normal use the application creates an L<LWP::UserAgent> object, and
-then configures it with values for timeouts, proxies, name, etc. It
-then creates an instance of L<HTTP::Request> for the request that
-needs to be performed. This request is then passed to one of the
-request method the UserAgent, which dispatches it using the relevant
-protocol, and returns a L<HTTP::Response> object. There are
-convenience methods for sending the most common request types:
-L<LWP::UserAgent/get>, L<LWP::UserAgent/head>, L<LWP::UserAgent/post>,
-L<LWP::UserAgent/put> and L<LWP::UserAgent/delete>. When using these
-methods, the creation of the request object is hidden as shown in the
-synopsis above.
-
-The basic approach of the library is to use HTTP-style communication
-for all protocol schemes. This means that you will construct
-L<HTTP::Request> objects and receive L<HTTP::Response> objects even
-for non-HTTP resources like I<gopher> and I<ftp>. In order to achieve
-even more similarity to HTTP-style communications, I<gopher> menus and
-file directories are converted to HTML documents.
-
-=head1 CONSTRUCTOR METHODS
-
-The following constructor methods are available:
-
-=head2 clone
-
- my $ua2 = $ua->clone;
-
-Returns a copy of the L<LWP::UserAgent> object.
-
-B<CAVEAT>: Please be aware that the clone method does not copy or clone your
-C<cookie_jar> attribute. Due to the limited restrictions on what can be used
-for your cookie jar, there is no way to clone the attribute. The C<cookie_jar>
-attribute will be C<undef> in the new object instance.
-
-=head2 new
-
- my $ua = LWP::UserAgent->new( %options )
-
-This method constructs a new L<LWP::UserAgent> object and returns it.
-Key/value pair arguments may be provided to set up the initial state.
-The following options correspond to attribute methods described below:
-
- KEY DEFAULT
- ----------- --------------------
- agent "libwww-perl/#.###"
- conn_cache undef
- cookie_jar undef
- default_headers HTTP::Headers->new
- from undef
- local_address undef
- max_redirect 7
- max_size undef
- no_proxy []
- parse_head 1
- protocols_allowed undef
- protocols_forbidden undef
- proxy undef
- requests_redirectable ['GET', 'HEAD']
- ssl_opts { verify_hostname => 1 }
- timeout 180
-
-The following additional options are also accepted: If the C<env_proxy> option
-is passed in with a true value, then proxy settings are read from environment
-variables (see L<LWP::UserAgent/env_proxy>). If C<env_proxy> isn't provided, the
-C<PERL_LWP_ENV_PROXY> environment variable controls if
-L<LWP::UserAgent/env_proxy> is called during initialization. If the
-C<keep_alive> option value is defined and non-zero, then an C<LWP::ConnCache> is set up (see
-L<LWP::UserAgent/conn_cache>). The C<keep_alive> value is passed on as the
-C<total_capacity> for the connection cache.
-
-C<proxy> must be set as an arrayref of key/value pairs. C<no_proxy> takes an
-arrayref of domains.
-
-=head1 ATTRIBUTES
-
-The settings of the configuration attributes modify the behaviour of the
-L<LWP::UserAgent> when it dispatches requests. Most of these can also
-be initialized by options passed to the constructor method.
-
-The following attribute methods are provided. The attribute value is
-left unchanged if no argument is given. The return value from each
-method is the old attribute value.
-
-=head2 agent
-
- my $agent = $ua->agent;
- $ua->agent('Checkbot/0.4 '); # append the default to the end
- $ua->agent('Mozilla/5.0');
- $ua->agent(""); # don't identify
-
-Get/set the product token that is used to identify the user agent on
-the network. The agent value is sent as the C<User-Agent> header in
-the requests.
-
-The default is a string of the form C<libwww-perl/#.###>, where C<#.###> is
-substituted with the version number of this library.
-
-If the provided string ends with space, the default C<libwww-perl/#.###>
-string is appended to it.
-
-The user agent string should be one or more simple product identifiers
-with an optional version number separated by the C</> character.
-
-=head2 conn_cache
-
- my $cache_obj = $ua->conn_cache;
- $ua->conn_cache( $cache_obj );
-
-Get/set the L<LWP::ConnCache> object to use. See L<LWP::ConnCache>
-for details.
-
-=head2 cookie_jar
-
- my $jar = $ua->cookie_jar;
- $ua->cookie_jar( $cookie_jar_obj );
-
-Get/set the cookie jar object to use. The only requirement is that
-the cookie jar object must implement the C<extract_cookies($response)> and
-C<add_cookie_header($request)> methods. These methods will then be
-invoked by the user agent as requests are sent and responses are
-received. Normally this will be a L<HTTP::Cookies> object or some
-subclass. You are, however, encouraged to use L<HTTP::CookieJar::LWP>
-instead. See L</"BEST PRACTICES"> for more information.
-
- use HTTP::CookieJar::LWP ();
-
- my $jar = HTTP::CookieJar::LWP->new;
- my $ua = LWP::UserAgent->new( cookie_jar => $jar );
-
- # or after object creation
- $ua->cookie_jar( $cookie_jar );
-
-The default is to have no cookie jar, i.e. never automatically add
-C<Cookie> headers to the requests.
-
-Shortcut: If a reference to a plain hash is passed in, it is replaced with an
-instance of L<HTTP::Cookies> that is initialized based on the hash. This form
-also automatically loads the L<HTTP::Cookies> module. It means that:
-
- $ua->cookie_jar({ file => "$ENV{HOME}/.cookies.txt" });
-
-is really just a shortcut for:
-
- require HTTP::Cookies;
- $ua->cookie_jar(HTTP::Cookies->new(file => "$ENV{HOME}/.cookies.txt"));
-
-=head2 credentials
-
- my $creds = $ua->credentials();
- $ua->credentials( $netloc, $realm );
- $ua->credentials( $netloc, $realm, $uname, $pass );
- $ua->credentials("www.example.com:80", "Some Realm", "foo", "secret");
-
-Get/set the user name and password to be used for a realm.
-
-The C<$netloc> is a string of the form C<< <host>:<port> >>. The username and
-password will only be passed to this server.
-
-=head2 default_header
-
- $ua->default_header( $field );
- $ua->default_header( $field => $value );
- $ua->default_header('Accept-Encoding' => scalar HTTP::Message::decodable());
- $ua->default_header('Accept-Language' => "no, en");
-
-This is just a shortcut for
-C<< $ua->default_headers->header( $field => $value ) >>.
-
-=head2 default_headers
-
- my $headers = $ua->default_headers;
- $ua->default_headers( $headers_obj );
-
-Get/set the headers object that will provide default header values for
-any requests sent. By default this will be an empty L<HTTP::Headers>
-object.
-
-=head2 from
-
- my $from = $ua->from;
- $ua->from('foo@bar.com');
-
-Get/set the email address for the human user who controls
-the requesting user agent. The address should be machine-usable, as
-defined in L<RFC2822|https://tools.ietf.org/html/rfc2822>. The C<from> value
-is sent as the C<From> header in the requests.
-
-The default is to not send a C<From> header. See
-L<LWP::UserAgent/default_headers> for the more general interface that allow
-any header to be defaulted.
-
-
-=head2 local_address
-
- my $address = $ua->local_address;
- $ua->local_address( $address );
-
-Get/set the local interface to bind to for network connections. The interface
-can be specified as a hostname or an IP address. This value is passed as the
-C<LocalAddr> argument to L<IO::Socket::INET>.
-
-=head2 max_redirect
-
- my $max = $ua->max_redirect;
- $ua->max_redirect( $n );
-
-This reads or sets the object's limit of how many times it will obey
-redirection responses in a given request cycle.
-
-By default, the value is C<7>. This means that if you call L<LWP::UserAgent/request>
-and the response is a redirect elsewhere which is in turn a
-redirect, and so on seven times, then LWP gives up after that seventh
-request.
-
-=head2 max_size
-
- my $size = $ua->max_size;
- $ua->max_size( $bytes );
-
-Get/set the size limit for response content. The default is C<undef>,
-which means that there is no limit. If the returned response content
-is only partial, because the size limit was exceeded, then a
-C<Client-Aborted> header will be added to the response. The content
-might end up longer than C<max_size> as we abort once appending a
-chunk of data makes the length exceed the limit. The C<Content-Length>
-header, if present, will indicate the length of the full content and
-will normally not be the same as C<< length($res->content) >>.
-
-=head2 parse_head
-
- my $bool = $ua->parse_head;
- $ua->parse_head( $boolean );
-
-Get/set a value indicating whether we should initialize response
-headers from the E<lt>head> section of HTML documents. The default is
-true. I<Do not turn this off> unless you know what you are doing.
-
-=head2 protocols_allowed
-
- my $aref = $ua->protocols_allowed; # get allowed protocols
- $ua->protocols_allowed( \@protocols ); # allow ONLY these
- $ua->protocols_allowed(undef); # delete the list
- $ua->protocols_allowed(['http',]); # ONLY allow http
-
-By default, an object has neither a C<protocols_allowed> list, nor a
-L<LWP::UserAgent/protocols_forbidden> list.
-
-This reads (or sets) this user agent's list of protocols that the
-request methods will exclusively allow. The protocol names are case
-insensitive.
-
-For example: C<< $ua->protocols_allowed( [ 'http', 'https'] ); >>
-means that this user agent will I<allow only> those protocols,
-and attempts to use this user agent to access URLs with any other
-schemes (like C<ftp://...>) will result in a 500 error.
-
-Note that having a C<protocols_allowed> list causes any
-L<LWP::UserAgent/protocols_forbidden> list to be ignored.
-
-=head2 protocols_forbidden
-
- my $aref = $ua->protocols_forbidden; # get the forbidden list
- $ua->protocols_forbidden(\@protocols); # do not allow these
- $ua->protocols_forbidden(['http',]); # All http reqs get a 500
- $ua->protocols_forbidden(undef); # delete the list
-
-This reads (or sets) this user agent's list of protocols that the
-request method will I<not> allow. The protocol names are case
-insensitive.
-
-For example: C<< $ua->protocols_forbidden( [ 'file', 'mailto'] ); >>
-means that this user agent will I<not> allow those protocols, and
-attempts to use this user agent to access URLs with those schemes
-will result in a 500 error.
-
-=head2 requests_redirectable
-
- my $aref = $ua->requests_redirectable;
- $ua->requests_redirectable( \@requests );
- $ua->requests_redirectable(['GET', 'HEAD',]); # the default
-
-This reads or sets the object's list of request names that
-L<LWP::UserAgent/redirect_ok> will allow redirection for. By default, this
-is C<['GET', 'HEAD']>, as per L<RFC 2616|https://tools.ietf.org/html/rfc2616>.
-To change to include C<POST>, consider:
-
- push @{ $ua->requests_redirectable }, 'POST';
-
-=head2 send_te
-
- my $bool = $ua->send_te;
- $ua->send_te( $boolean );
-
-If true, will send a C<TE> header along with the request. The default is
-true. Set it to false to disable the C<TE> header for systems who can't
-handle it.
-
-=head2 show_progress
-
- my $bool = $ua->show_progress;
- $ua->show_progress( $boolean );
-
-Get/set a value indicating whether a progress bar should be displayed
-on the terminal as requests are processed. The default is false.
-
-=head2 ssl_opts
-
- my @keys = $ua->ssl_opts;
- my $val = $ua->ssl_opts( $key );
- $ua->ssl_opts( $key => $value );
-
-Get/set the options for SSL connections. Without argument return the list
-of options keys currently set. With a single argument return the current
-value for the given option. With 2 arguments set the option value and return
-the old. Setting an option to the value C<undef> removes this option.
-
-The options that LWP relates to are:
-
-=over
-
-=item C<verify_hostname> => $bool
-
-When TRUE LWP will for secure protocol schemes ensure it connects to servers
-that have a valid certificate matching the expected hostname. If FALSE no
-checks are made and you can't be sure that you communicate with the expected peer.
-The no checks behaviour was the default for libwww-perl-5.837 and earlier releases.
-
-This option is initialized from the C<PERL_LWP_SSL_VERIFY_HOSTNAME> environment
-variable. If this environment variable isn't set; then C<verify_hostname>
-defaults to 1.
-
-=item C<SSL_ca_file> => $path
-
-The path to a file containing Certificate Authority certificates.
-A default setting for this option is provided by checking the environment
-variables C<PERL_LWP_SSL_CA_FILE> and C<HTTPS_CA_FILE> in order.
-
-=item C<SSL_ca_path> => $path
-
-The path to a directory containing files containing Certificate Authority
-certificates.
-A default setting for this option is provided by checking the environment
-variables C<PERL_LWP_SSL_CA_PATH> and C<HTTPS_CA_DIR> in order.
-
-=back
-
-Other options can be set and are processed directly by the SSL Socket implementation
-in use. See L<IO::Socket::SSL> or L<Net::SSL> for details.
-
-The libwww-perl core no longer bundles protocol plugins for SSL. You will need
-to install L<LWP::Protocol::https> separately to enable support for processing
-https-URLs.
-
-=head2 timeout
-
- my $secs = $ua->timeout;
- $ua->timeout( $secs );
-
-Get/set the timeout value in seconds. The default value is
-180 seconds, i.e. 3 minutes.
-
-The request is aborted if no activity on the connection to the server
-is observed for C<timeout> seconds. This means that the time it takes
-for the complete transaction and the L<LWP::UserAgent/request> method to
-actually return might be longer.
-
-When a request times out, a response object is still returned. The response
-will have a standard HTTP Status Code (500). This response will have the
-"Client-Warning" header set to the value of "Internal response". See the
-L<LWP::UserAgent/get> method description below for further details.
-
-=head1 PROXY ATTRIBUTES
-
-The following methods set up when requests should be passed via a
-proxy server.
-
-=head2 env_proxy
-
- $ua->env_proxy;
-
-Load proxy settings from C<*_proxy> environment variables. You might
-specify proxies like this (sh-syntax):
-
- gopher_proxy=http://proxy.my.place/
- wais_proxy=http://proxy.my.place/
- no_proxy="localhost,example.com"
- export gopher_proxy wais_proxy no_proxy
-
-csh or tcsh users should use the C<setenv> command to define these
-environment variables.
-
-On systems with case insensitive environment variables there exists a
-name clash between the CGI environment variables and the C<HTTP_PROXY>
-environment variable normally picked up by C<env_proxy>. Because of
-this C<HTTP_PROXY> is not honored for CGI scripts. The
-C<CGI_HTTP_PROXY> environment variable can be used instead.
-
-=head2 no_proxy
-
- $ua->no_proxy( @domains );
- $ua->no_proxy('localhost', 'example.com');
- $ua->no_proxy(); # clear the list
-
-Do not proxy requests to the given domains. Calling C<no_proxy> without
-any domains clears the list of domains.
-
-=head2 proxy
-
- $ua->proxy(\@schemes, $proxy_url)
- $ua->proxy(['http', 'ftp'], 'http://proxy.sn.no:8001/');
-
- # For a single scheme:
- $ua->proxy($scheme, $proxy_url)
- $ua->proxy('gopher', 'http://proxy.sn.no:8001/');
-
- # To set multiple proxies at once:
- $ua->proxy([
- ftp => 'http://ftp.example.com:8001/',
- [ 'http', 'https' ] => 'http://http.example.com:8001/',
- ]);
-
-Set/retrieve proxy URL for a scheme.
-
-The first form specifies that the URL is to be used as a proxy for
-access methods listed in the list in the first method argument,
-i.e. C<http> and C<ftp>.
-
-The second form shows a shorthand form for specifying
-proxy URL for a single access scheme.
-
-The third form demonstrates setting multiple proxies at once. This is also
-the only form accepted by the constructor.
-
-=head1 HANDLERS
-
-Handlers are code that injected at various phases during the
-processing of requests. The following methods are provided to manage
-the active handlers:
-
-=head2 add_handler
-
- $ua->add_handler( $phase => \&cb, %matchspec )
-
-Add handler to be invoked in the given processing phase. For how to
-specify C<%matchspec> see L<HTTP::Config/"Matching">.
-
-The possible values C<$phase> and the corresponding callback signatures are as
-follows. Note that the handlers are documented in the order in which they will
-be run, which is:
-
- request_preprepare
- request_prepare
- request_send
- response_header
- response_data
- response_done
- response_redirect
-
-=over
-
-=item request_preprepare => sub { my($request, $ua, $handler) = @_; ... }
-
-The handler is called before the C<request_prepare> and other standard
-initialization of the request. This can be used to set up headers
-and attributes that the C<request_prepare> handler depends on. Proxy
-initialization should take place here; but in general don't register
-handlers for this phase.
-
-=item request_prepare => sub { my($request, $ua, $handler) = @_; ... }
-
-The handler is called before the request is sent and can modify the
-request any way it see fit. This can for instance be used to add
-certain headers to specific requests.
-
-The method can assign a new request object to C<$_[0]> to replace the
-request that is sent fully.
-
-The return value from the callback is ignored. If an exception is
-raised it will abort the request and make the request method return a
-"400 Bad request" response.
-
-=item request_send => sub { my($request, $ua, $handler) = @_; ... }
-
-This handler gets a chance of handling requests before they're sent to the
-protocol handlers. It should return an L<HTTP::Response> object if it
-wishes to terminate the processing; otherwise it should return nothing.
-
-The C<response_header> and C<response_data> handlers will not be
-invoked for this response, but the C<response_done> will be.
-
-=item response_header => sub { my($response, $ua, $handler) = @_; ... }
-
-This handler is called right after the response headers have been
-received, but before any content data. The handler might set up
-handlers for data and might croak to abort the request.
-
-The handler might set the C<< $response->{default_add_content} >> value to
-control if any received data should be added to the response object
-directly. This will initially be false if the C<< $ua->request() >> method
-was called with a C<$content_file> or C<$content_cb argument>; otherwise true.
-
-=item response_data => sub { my($response, $ua, $handler, $data) = @_; ... }
-
-This handler is called for each chunk of data received for the
-response. The handler might croak to abort the request.
-
-This handler needs to return a TRUE value to be called again for
-subsequent chunks for the same request.
-
-=item response_done => sub { my($response, $ua, $handler) = @_; ... }
-
-The handler is called after the response has been fully received, but
-before any redirect handling is attempted. The handler can be used to
-extract information or modify the response.
-
-=item response_redirect => sub { my($response, $ua, $handler) = @_; ... }
-
-The handler is called in C<< $ua->request >> after C<response_done>. If the
-handler returns an L<HTTP::Request> object we'll start over with processing
-this request instead.
-
-=back
-
-For all of these, C<$handler> is a code reference to the handler that
-is currently being run.
-
-=head2 get_my_handler
-
- $ua->get_my_handler( $phase, %matchspec );
- $ua->get_my_handler( $phase, %matchspec, $init );
-
-Will retrieve the matching handler as hash ref.
-
-If C<$init> is passed as a true value, create and add the
-handler if it's not found. If C<$init> is a subroutine reference, then
-it's called with the created handler hash as argument. This sub might
-populate the hash with extra fields; especially the callback. If
-C<$init> is a hash reference, merge the hashes.
-
-=head2 handlers
-
- $ua->handlers( $phase, $request )
- $ua->handlers( $phase, $response )
-
-Returns the handlers that apply to the given request or response at
-the given processing phase.
-
-=head2 remove_handler
-
- $ua->remove_handler( undef, %matchspec );
- $ua->remove_handler( $phase, %matchspec );
- $ua->remove_handler(); # REMOVE ALL HANDLERS IN ALL PHASES
-
-Remove handlers that match the given C<%matchspec>. If C<$phase> is not
-provided, remove handlers from all phases.
-
-Be careful as calling this function with C<%matchspec> that is not
-specific enough can remove handlers not owned by you. It's probably
-better to use the L<LWP::UserAgent/set_my_handler> method instead.
-
-The removed handlers are returned.
-
-=head2 set_my_handler
-
- $ua->set_my_handler( $phase, $cb, %matchspec );
- $ua->set_my_handler($phase, undef); # remove handler for phase
-
-Set handlers private to the executing subroutine. Works by defaulting
-an C<owner> field to the C<%matchspec> that holds the name of the called
-subroutine. You might pass an explicit C<owner> to override this.
-
-If C<$cb> is passed as C<undef>, remove the handler.
-
-=head1 REQUEST METHODS
-
-The methods described in this section are used to dispatch requests
-via the user agent. The following request methods are provided:
-
-=head2 delete
-
- my $res = $ua->delete( $url );
- my $res = $ua->delete( $url, $field_name => $value, ... );
-
-This method will dispatch a C<DELETE> request on the given URL. Additional
-headers and content options are the same as for the L<LWP::UserAgent/get>
-method.
-
-This method will use the C<DELETE()> function from L<HTTP::Request::Common>
-to build the request. See L<HTTP::Request::Common> for a details on
-how to pass form content and other advanced features.
-
-=head2 get
-
- my $res = $ua->get( $url );
- my $res = $ua->get( $url , $field_name => $value, ... );
-
-This method will dispatch a C<GET> request on the given URL. Further
-arguments can be given to initialize the headers of the request. These
-are given as separate name/value pairs. The return value is a
-response object. See L<HTTP::Response> for a description of the
-interface it provides.
-
-There will still be a response object returned when LWP can't connect to the
-server specified in the URL or when other failures in protocol handlers occur.
-These internal responses use the standard HTTP status codes, so the responses
-can't be differentiated by testing the response status code alone. Error
-responses that LWP generates internally will have the "Client-Warning" header
-set to the value "Internal response". If you need to differentiate these
-internal responses from responses that a remote server actually generates, you
-need to test this header value.
-
-Fields names that start with ":" are special. These will not
-initialize headers of the request but will determine how the response
-content is treated. The following special field names are recognized:
-
- ':content_file' => $filename
- ':content_cb' => \&callback
- ':read_size_hint' => $bytes
-
-If a C<$filename> is provided with the C<:content_file> option, then the
-response content will be saved here instead of in the response
-object. If a callback is provided with the C<:content_cb> option then
-this function will be called for each chunk of the response content as
-it is received from the server. If neither of these options are
-given, then the response content will accumulate in the response
-object itself. This might not be suitable for very large response
-bodies. Only one of C<:content_file> or C<:content_cb> can be
-specified. The content of unsuccessful responses will always
-accumulate in the response object itself, regardless of the
-C<:content_file> or C<:content_cb> options passed in. Note that errors
-writing to the content file (for example due to permission denied
-or the filesystem being full) will be reported via the C<Client-Aborted>
-or C<X-Died> response headers, and not the C<is_success> method.
-
-The C<:read_size_hint> option is passed to the protocol module which
-will try to read data from the server in chunks of this size. A
-smaller value for the C<:read_size_hint> will result in a higher
-number of callback invocations.
-
-The callback function is called with 3 arguments: a chunk of data, a
-reference to the response object, and a reference to the protocol
-object. The callback can abort the request by invoking C<die()>. The
-exception message will show up as the "X-Died" header field in the
-response returned by the C<< $ua->get() >> method.
-
-=head2 head
-
- my $res = $ua->head( $url );
- my $res = $ua->head( $url , $field_name => $value, ... );
-
-This method will dispatch a C<HEAD> request on the given URL.
-Otherwise it works like the L<LWP::UserAgent/get> method described above.
-
-=head2 is_protocol_supported
-
- my $bool = $ua->is_protocol_supported( $scheme );
-
-You can use this method to test whether this user agent object supports the
-specified C<scheme>. (The C<scheme> might be a string (like C<http> or
-C<ftp>) or it might be an L<URI> object reference.)
-
-Whether a scheme is supported is determined by the user agent's
-C<protocols_allowed> or C<protocols_forbidden> lists (if any), and by
-the capabilities of LWP. I.e., this will return true only if LWP
-supports this protocol I<and> it's permitted for this particular
-object.
-
-=head2 is_online
-
- my $bool = $ua->is_online;
-
-Tries to determine if you have access to the Internet. Returns C<1> (true)
-if the built-in heuristics determine that the user agent is
-able to access the Internet (over HTTP) or C<0> (false).
-
-See also L<LWP::Online>.
-
-=head2 mirror
-
- my $res = $ua->mirror( $url, $filename );
-
-This method will get the document identified by URL and store it in
-file called C<$filename>. If the file already exists, then the request
-will contain an C<If-Modified-Since> header matching the modification
-time of the file. If the document on the server has not changed since
-this time, then nothing happens. If the document has been updated, it
-will be downloaded again. The modification time of the file will be
-forced to match that of the server.
-
-Uses L<File::Copy/move> to attempt to atomically replace the C<$filename>.
-
-The return value is an L<HTTP::Response> object.
-
-=head2 patch
-
- # Any version of HTTP::Message works with this form:
- my $res = $ua->patch( $url, $field_name => $value, Content => $content );
-
- # Using hash or array references requires HTTP::Message >= 6.12
- use HTTP::Request 6.12;
- my $res = $ua->patch( $url, \%form );
- my $res = $ua->patch( $url, \@form );
- my $res = $ua->patch( $url, \%form, $field_name => $value, ... );
- my $res = $ua->patch( $url, $field_name => $value, Content => \%form );
- my $res = $ua->patch( $url, $field_name => $value, Content => \@form );
-
-This method will dispatch a C<PATCH> request on the given URL, with
-C<%form> or C<@form> providing the key/value pairs for the fill-in form
-content. Additional headers and content options are the same as for
-the L<LWP::UserAgent/get> method.
-
-CAVEAT:
-
-This method can only accept content that is in key-value pairs when using
-L<HTTP::Request::Common> prior to version C<6.12>. Any use of hash or array
-references will result in an error prior to version C<6.12>.
-
-This method will use the C<PATCH> function from L<HTTP::Request::Common>
-to build the request. See L<HTTP::Request::Common> for a details on
-how to pass form content and other advanced features.
-
-=head2 post
-
- my $res = $ua->post( $url, \%form );
- my $res = $ua->post( $url, \@form );
- my $res = $ua->post( $url, \%form, $field_name => $value, ... );
- my $res = $ua->post( $url, $field_name => $value, Content => \%form );
- my $res = $ua->post( $url, $field_name => $value, Content => \@form );
- my $res = $ua->post( $url, $field_name => $value, Content => $content );
-
-This method will dispatch a C<POST> request on the given URL, with
-C<%form> or C<@form> providing the key/value pairs for the fill-in form
-content. Additional headers and content options are the same as for
-the L<LWP::UserAgent/get> method.
-
-This method will use the C<POST> function from L<HTTP::Request::Common>
-to build the request. See L<HTTP::Request::Common> for a details on
-how to pass form content and other advanced features.
-
-=head2 put
-
- # Any version of HTTP::Message works with this form:
- my $res = $ua->put( $url, $field_name => $value, Content => $content );
-
- # Using hash or array references requires HTTP::Message >= 6.07
- use HTTP::Request 6.07;
- my $res = $ua->put( $url, \%form );
- my $res = $ua->put( $url, \@form );
- my $res = $ua->put( $url, \%form, $field_name => $value, ... );
- my $res = $ua->put( $url, $field_name => $value, Content => \%form );
- my $res = $ua->put( $url, $field_name => $value, Content => \@form );
-
-This method will dispatch a C<PUT> request on the given URL, with
-C<%form> or C<@form> providing the key/value pairs for the fill-in form
-content. Additional headers and content options are the same as for
-the L<LWP::UserAgent/get> method.
-
-CAVEAT:
-
-This method can only accept content that is in key-value pairs when using
-L<HTTP::Request::Common> prior to version C<6.07>. Any use of hash or array
-references will result in an error prior to version C<6.07>.
-
-This method will use the C<PUT> function from L<HTTP::Request::Common>
-to build the request. See L<HTTP::Request::Common> for a details on
-how to pass form content and other advanced features.
-
-=head2 request
-
- my $res = $ua->request( $request );
- my $res = $ua->request( $request, $content_file );
- my $res = $ua->request( $request, $content_cb );
- my $res = $ua->request( $request, $content_cb, $read_size_hint );
-
-This method will dispatch the given C<$request> object. Normally this
-will be an instance of the L<HTTP::Request> class, but any object with
-a similar interface will do. The return value is an L<HTTP::Response> object.
-
-The C<request> method will process redirects and authentication
-responses transparently. This means that it may actually send several
-simple requests via the L<LWP::UserAgent/simple_request> method described below.
-
-The request methods described above; L<LWP::UserAgent/get>, L<LWP::UserAgent/head>,
-L<LWP::UserAgent/post> and L<LWP::UserAgent/mirror> will all dispatch the request
-they build via this method. They are convenience methods that simply hide the
-creation of the request object for you.
-
-The C<$content_file>, C<$content_cb> and C<$read_size_hint> all correspond to
-options described with the L<LWP::UserAgent/get> method above. Note that errors
-writing to the content file (for example due to permission denied
-or the filesystem being full) will be reported via the C<Client-Aborted>
-or C<X-Died> response headers, and not the C<is_success> method.
-
-You are allowed to use a CODE reference as C<content> in the request
-object passed in. The C<content> function should return the content
-when called. The content can be returned in chunks. The content
-function will be invoked repeatedly until it return an empty string to
-signal that there is no more content.
-
-=head2 simple_request
-
- my $request = HTTP::Request->new( ... );
- my $res = $ua->simple_request( $request );
- my $res = $ua->simple_request( $request, $content_file );
- my $res = $ua->simple_request( $request, $content_cb );
- my $res = $ua->simple_request( $request, $content_cb, $read_size_hint );
-
-This method dispatches a single request and returns the response
-received. Arguments are the same as for the L<LWP::UserAgent/request> described above.
-
-The difference from L<LWP::UserAgent/request> is that C<simple_request> will not try to
-handle redirects or authentication responses. The L<LWP::UserAgent/request> method
-will, in fact, invoke this method for each simple request it sends.
-
-=head1 CALLBACK METHODS
-
-The following methods will be invoked as requests are processed. These
-methods are documented here because subclasses of L<LWP::UserAgent>
-might want to override their behaviour.
-
-=head2 get_basic_credentials
-
- # This checks wantarray and can either return an array:
- my ($user, $pass) = $ua->get_basic_credentials( $realm, $uri, $isproxy );
- # or a string that looks like "user:pass"
- my $creds = $ua->get_basic_credentials($realm, $uri, $isproxy);
-
-This is called by L<LWP::UserAgent/request> to retrieve credentials for documents
-protected by Basic or Digest Authentication. The arguments passed in
-is the C<$realm> provided by the server, the C<$uri> requested and a
-C<boolean flag> to indicate if this is authentication against a proxy server.
-
-The method should return a username and password. It should return an
-empty list to abort the authentication resolution attempt. Subclasses
-can override this method to prompt the user for the information. An
-example of this can be found in C<lwp-request> program distributed
-with this library.
-
-The base implementation simply checks a set of pre-stored member
-variables, set up with the L<LWP::UserAgent/credentials> method.
-
-=head2 prepare_request
-
- $request = $ua->prepare_request( $request );
-
-This method is invoked by L<LWP::UserAgent/simple_request>. Its task is
-to modify the given C<$request> object by setting up various headers based
-on the attributes of the user agent. The return value should normally be the
-C<$request> object passed in. If a different request object is returned
-it will be the one actually processed.
-
-The headers affected by the base implementation are; C<User-Agent>,
-C<From>, C<Range> and C<Cookie>.
-
-=head2 progress
-
- my $prog = $ua->progress( $status, $request_or_response );
-
-This is called frequently as the response is received regardless of
-how the content is processed. The method is called with C<$status>
-"begin" at the start of processing the request and with C<$state> "end"
-before the request method returns. In between these C<$status> will be
-the fraction of the response currently received or the string "tick"
-if the fraction can't be calculated.
-
-When C<$status> is "begin" the second argument is the L<HTTP::Request> object,
-otherwise it is the L<HTTP::Response> object.
-
-=head2 redirect_ok
-
- my $bool = $ua->redirect_ok( $prospective_request, $response );
-
-This method is called by L<LWP::UserAgent/request> before it tries to follow a
-redirection to the request in C<$response>. This should return a true
-value if this redirection is permissible. The C<$prospective_request>
-will be the request to be sent if this method returns true.
-
-The base implementation will return false unless the method
-is in the object's C<requests_redirectable> list,
-false if the proposed redirection is to a C<file://...>
-URL, and true otherwise.
-
-=head1 BEST PRACTICES
-
-The default settings can get you up and running quickly, but there are settings
-you can change in order to make your life easier.
-
-=head2 Handling Cookies
-
-You are encouraged to install L<Mozilla::PublicSuffix> and use
-L<HTTP::CookieJar::LWP> as your cookie jar. L<HTTP::CookieJar::LWP> provides a
-better security model matching that of current Web browsers when
-L<Mozilla::PublicSuffix> is installed.
-
- use HTTP::CookieJar::LWP ();
-
- my $jar = HTTP::CookieJar::LWP->new;
- my $ua = LWP::UserAgent->new( cookie_jar => $jar );
-
-See L</"cookie_jar"> for more information.
-
-=head2 Managing Protocols
-
-C<protocols_allowed> gives you the ability to allow arbitrary protocols.
-
- my $ua = LWP::UserAgent->new(
- protocols_allowed => [ 'http', 'https' ]
- );
-
-This will prevent you from inadvertently following URLs like
-C<file:///etc/passwd>. See L</"protocols_allowed">.
-
-C<protocols_forbidden> gives you the ability to deny arbitrary protocols.
-
- my $ua = LWP::UserAgent->new(
- protocols_forbidden => [ 'file', 'mailto', 'ssh', ]
- );
-
-This can also prevent you from inadvertently following URLs like
-C<file:///etc/passwd>. See L</protocols_forbidden>.
-
-=head1 SEE ALSO
-
-See L<LWP> for a complete overview of libwww-perl5. See L<lwpcook>
-and the scripts F<lwp-request> and F<lwp-download> for examples of
-usage.
-
-See L<HTTP::Request> and L<HTTP::Response> for a description of the
-message objects dispatched and received. See L<HTTP::Request::Common>
-and L<HTML::Form> for other ways to build request objects.
-
-See L<WWW::Mechanize> and L<WWW::Search> for examples of more
-specialized user agents based on L<LWP::UserAgent>.
-
-=head1 COPYRIGHT AND LICENSE
-
-Copyright 1995-2009 Gisle Aas.
-
-This library is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-=cut
diff --git a/Master/tlpkg/tlperl/site/lib/Math/Int64.pm b/Master/tlpkg/tlperl/site/lib/Math/Int64.pm
index 5cb6f5a45cd..59b968af898 100644
--- a/Master/tlpkg/tlperl/site/lib/Math/Int64.pm
+++ b/Master/tlpkg/tlperl/site/lib/Math/Int64.pm
@@ -4,7 +4,8 @@ use strict;
use warnings;
BEGIN {
-our $VERSION = '0.54';
+our $VERSION = '0.57';
+
require XSLoader;
XSLoader::load('Math::Int64', $VERSION);
}
@@ -20,6 +21,7 @@ our @ISA = qw(Exporter);
our @EXPORT_OK = qw(int64
int64_to_number
net_to_int64 int64_to_net
+ le_to_int64 int64_to_le
native_to_int64 int64_to_native
string_to_int64 hex_to_int64
BER_to_int64 int64_to_BER
@@ -29,6 +31,7 @@ our @EXPORT_OK = qw(int64
uint64
uint64_to_number
net_to_uint64 uint64_to_net
+ le_to_uint64 uint64_to_le
native_to_uint64 uint64_to_native
string_to_uint64 hex_to_uint64
BER_to_uint64 uint64_to_BER
@@ -209,13 +212,20 @@ internal representation used by this module.
=item int64_to_net($int64)
Returns an 8 bytes string with the representation of the int64 value
-in network order.
+in network order (big endian).
=item native_to_int64($str)
=item int64_to_native($int64)
-similar to net_to_int64 and int64_to_net, but using the native CPU
+Similar to net_to_int64 and int64_to_net, but using the native CPU
+order.
+
+=item le_to_int64($str)
+
+=item int64_to_le($int64)
+
+Similar to net_to_int64 and int64_to_net, but using the little endian
order.
=item int64_to_number($int64)
@@ -324,6 +334,10 @@ C<$seed>, if given, should be a 2KB long string.
=item uint64_to_native
+=item le_to_uint64
+
+=item uint64_to_le
+
=item string_to_uint64
=item hex_to_uint64
@@ -577,7 +591,7 @@ L<Math::BigInt::GMP>.
=head1 COPYRIGHT AND LICENSE
-Copyright E<copy> 2007, 2009, 2011-2015 by Salvador Fandiño
+Copyright E<copy> 2007, 2009, 2011-2015, 2024 by Salvador Fandiño
(sfandino@yahoo.com)
Copyright E<copy> 2014-2015 by Dave Rolsky (autarch@urth.org)
diff --git a/Master/tlpkg/tlperl/site/lib/Module/Build/Tiny.pm b/Master/tlpkg/tlperl/site/lib/Module/Build/Tiny.pm
new file mode 100755
index 00000000000..752c7846223
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/Module/Build/Tiny.pm
@@ -0,0 +1,349 @@
+package Module::Build::Tiny;
+$Module::Build::Tiny::VERSION = '0.047';
+use strict;
+use warnings;
+use Exporter 5.57 'import';
+our @EXPORT = qw/Build Build_PL/;
+
+use CPAN::Meta;
+use ExtUtils::Config 0.003;
+use ExtUtils::Helpers 0.020 qw/make_executable split_like_shell man1_pagename man3_pagename detildefy/;
+use ExtUtils::Install qw/pm_to_blib install/;
+use ExtUtils::InstallPaths 0.002;
+use File::Basename qw/basename dirname/;
+use File::Find ();
+use File::Path qw/mkpath rmtree/;
+use File::Spec::Functions qw/catfile catdir rel2abs abs2rel splitdir curdir/;
+use Getopt::Long 2.36 qw/GetOptionsFromArray/;
+use JSON::PP 2 qw/encode_json decode_json/;
+
+sub write_file {
+ my ($filename, $content) = @_;
+ open my $fh, '>', $filename or die "Could not open $filename: $!\n";
+ print $fh $content;
+}
+sub read_file {
+ my ($filename) = @_;
+ open my $fh, '<', $filename or die "Could not open $filename: $!\n";
+ return do { local $/; <$fh> };
+}
+
+sub get_meta {
+ my ($metafile) = grep { -e $_ } qw/META.json META.yml/ or die "No META information provided\n";
+ return CPAN::Meta->load_file($metafile);
+}
+
+sub manify {
+ my ($input_file, $output_file, $section, $opts) = @_;
+ return if -e $output_file && -M $input_file <= -M $output_file;
+ my $dirname = dirname($output_file);
+ mkpath($dirname, $opts->{verbose}) if not -d $dirname;
+ require Pod::Man;
+ Pod::Man->new(section => $section)->parse_from_file($input_file, $output_file);
+ print "Manifying $output_file\n" if $opts->{verbose} && $opts->{verbose} > 0;
+ return;
+}
+
+sub process_xs {
+ my ($source, $options, $c_files) = @_;
+
+ die "Can't build xs files under --pureperl-only\n" if $options->{'pureperl-only'};
+ my (undef, @parts) = splitdir(dirname($source));
+ push @parts, my $file_base = basename($source, '.xs');
+ my $archdir = catdir(qw/blib arch auto/, @parts);
+ my $tempdir = 'temp';
+
+ my $c_file = catfile($tempdir, "$file_base.c");
+ require ExtUtils::ParseXS;
+ mkpath($tempdir, $options->{verbose}, oct '755');
+ ExtUtils::ParseXS::process_file(filename => $source, prototypes => 0, output => $c_file);
+
+ my $version = $options->{meta}->version;
+ require ExtUtils::CBuilder;
+ my $builder = ExtUtils::CBuilder->new(config => $options->{config}->values_set);
+ my @objects = $builder->compile(source => $c_file, defines => { VERSION => qq/"$version"/, XS_VERSION => qq/"$version"/ }, include_dirs => [ curdir, 'include', 'src', dirname($source) ]);
+
+ my $o = $options->{config}->get('_o');
+ for my $c_source (@{ $c_files }) {
+ my $o_file = catfile($tempdir, basename($c_source, '.c') . $o);
+ push @objects, $builder->compile(source => $c_source, include_dirs => [ curdir, 'include', 'src', dirname($c_source) ])
+ }
+
+ require DynaLoader;
+ my $mod2fname = defined &DynaLoader::mod2fname ? \&DynaLoader::mod2fname : sub { return $_[0][-1] };
+
+ mkpath($archdir, $options->{verbose}, oct '755') unless -d $archdir;
+ my $lib_file = catfile($archdir, $mod2fname->(\@parts) . '.' . $options->{config}->get('dlext'));
+ return $builder->link(objects => \@objects, lib_file => $lib_file, module_name => join '::', @parts);
+}
+
+sub find {
+ my ($pattern, $dir) = @_;
+ my @ret;
+ File::Find::find(sub { push @ret, $File::Find::name if /$pattern/ && -f }, $dir) if -d $dir;
+ return @ret;
+}
+
+sub contains_pod {
+ my ($file) = @_;
+ return unless -T $file;
+ return read_file($file) =~ /^\=(?:head|pod|item)/m;
+}
+
+my %actions = (
+ build => sub {
+ my %opt = @_;
+ for my $pl_file (find(qr/\.PL$/, 'lib')) {
+ (my $pm = $pl_file) =~ s/\.PL$//;
+ system $^X, $pl_file, $pm and die "$pl_file returned $?\n";
+ }
+ my %modules = map { $_ => catfile('blib', $_) } find(qr/\.pm$/, 'lib');
+ my %docs = map { $_ => catfile('blib', $_) } find(qr/\.pod$/, 'lib');
+ my %scripts = map { $_ => catfile('blib', $_) } find(qr/(?:)/, 'script');
+ my %sdocs = map { $_ => delete $scripts{$_} } grep { /.pod$/ } keys %scripts;
+ my %dist_shared = map { $_ => catfile(qw/blib lib auto share dist/, $opt{meta}->name, abs2rel($_, 'share')) } find(qr/(?:)/, 'share');
+ my %module_shared = map { $_ => catfile(qw/blib lib auto share module/, abs2rel($_, 'module-share')) } find(qr/(?:)/, 'module-share');
+ pm_to_blib({ %modules, %docs, %scripts, %dist_shared, %module_shared }, catdir(qw/blib lib auto/));
+ make_executable($_) for values %scripts;
+ mkpath(catdir(qw/blib arch/), $opt{verbose});
+ my $main_xs = join('/', 'lib', split /-/, $opt{meta}->name) . '.xs';
+ for my $xs (find(qr/.xs$/, 'lib')) {
+ my @c_files = $xs eq $main_xs ? find(qr/\.c$/, 'src') : ();
+ process_xs($xs, \%opt, \@c_files);
+ }
+
+ if ($opt{install_paths}->install_destination('bindoc') && $opt{install_paths}->is_default_installable('bindoc')) {
+ my $section = $opt{config}->get('man1ext');
+ for my $input (keys %scripts, keys %sdocs) {
+ next unless contains_pod($input);
+ my $output = catfile('blib', 'bindoc', man1_pagename($input));
+ manify($input, $output, $section, \%opt);
+ }
+ }
+ if ($opt{install_paths}->install_destination('libdoc') && $opt{install_paths}->is_default_installable('libdoc')) {
+ my $section = $opt{config}->get('man3ext');
+ for my $input (keys %modules, keys %docs) {
+ next unless contains_pod($input);
+ my $output = catfile('blib', 'libdoc', man3_pagename($input));
+ manify($input, $output, $section, \%opt);
+ }
+ }
+ return 0;
+ },
+ test => sub {
+ my %opt = @_;
+ die "Must run `./Build build` first\n" if not -d 'blib';
+ require TAP::Harness::Env;
+ my %test_args = (
+ (verbosity => $opt{verbose}) x!! exists $opt{verbose},
+ (jobs => $opt{jobs}) x!! exists $opt{jobs},
+ (color => 1) x !!-t STDOUT,
+ lib => [ map { rel2abs(catdir(qw/blib/, $_)) } qw/arch lib/ ],
+ );
+ my $tester = TAP::Harness::Env->create(\%test_args);
+ return $tester->runtests(sort +find(qr/\.t$/, 't'))->has_errors;
+ },
+ install => sub {
+ my %opt = @_;
+ die "Must run `./Build build` first\n" if not -d 'blib';
+ install($opt{install_paths}->install_map, @opt{qw/verbose dry_run uninst/});
+ return 0;
+ },
+ clean => sub {
+ my %opt = @_;
+ rmtree($_, $opt{verbose}) for qw/blib temp/;
+ return 0;
+ },
+ realclean => sub {
+ my %opt = @_;
+ rmtree($_, $opt{verbose}) for qw/blib temp Build _build_params MYMETA.yml MYMETA.json/;
+ return 0;
+ },
+);
+
+sub Build {
+ my $action = @ARGV && $ARGV[0] =~ /\A\w+\z/ ? shift @ARGV : 'build';
+ die "No such action '$action'\n" if not $actions{$action};
+ my($env, $bargv) = @{ decode_json(read_file('_build_params')) };
+ my %opt;
+ GetOptionsFromArray($_, \%opt, qw/install_base=s install_path=s% installdirs=s destdir=s prefix=s config=s% uninst:1 verbose:1 dry_run:1 pureperl-only:1 create_packlist=i jobs=i/) for ($env, $bargv, \@ARGV);
+ $_ = detildefy($_) for grep { defined } @opt{qw/install_base destdir prefix/}, values %{ $opt{install_path} };
+ @opt{ 'config', 'meta' } = (ExtUtils::Config->new($opt{config}), get_meta());
+ exit $actions{$action}->(%opt, install_paths => ExtUtils::InstallPaths->new(%opt, dist_name => $opt{meta}->name));
+}
+
+sub Build_PL {
+ my $meta = get_meta();
+ printf "Creating new 'Build' script for '%s' version '%s'\n", $meta->name, $meta->version;
+ my $dir = $meta->name eq 'Module-Build-Tiny' ? "use lib 'lib';" : '';
+ write_file('Build', "#!perl\n$dir\nuse Module::Build::Tiny;\nBuild();\n");
+ make_executable('Build');
+ my @env = defined $ENV{PERL_MB_OPT} ? split_like_shell($ENV{PERL_MB_OPT}) : ();
+ write_file('_build_params', encode_json([ \@env, \@ARGV ]));
+ $meta->save(@$_) for ['MYMETA.json'], [ 'MYMETA.yml' => { version => 1.4 } ];
+}
+
+1;
+
+#ABSTRACT: A tiny replacement for Module::Build
+
+
+# vi:noet:sts=4:sw=4:ts=4
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+Module::Build::Tiny - A tiny replacement for Module::Build
+
+=head1 VERSION
+
+version 0.047
+
+=head1 SYNOPSIS
+
+ use Module::Build::Tiny;
+ Build_PL();
+
+=head1 DESCRIPTION
+
+Many Perl distributions use a Build.PL file instead of a Makefile.PL file
+to drive distribution configuration, build, test and installation.
+Traditionally, Build.PL uses Module::Build as the underlying build system.
+This module provides a simple, lightweight, drop-in replacement.
+
+Whereas Module::Build has over 6,700 lines of code; this module has less
+than 200, yet supports the features needed by most distributions.
+
+=head2 Supported
+
+=over 4
+
+=item * Pure Perl distributions
+
+=item * Building XS or C
+
+=item * Recursive test files
+
+=item * MYMETA
+
+=item * Man page generation
+
+=item * Generated code from PL files
+
+=item * Module sharedirs
+
+=back
+
+=head2 Not Supported
+
+=over 4
+
+=item * Dynamic prerequisites
+
+=item * HTML documentation generation
+
+=item * Extending Module::Build::Tiny
+
+=back
+
+=head2 Directory structure
+
+Your .pm, .xs and .pod files must be in F<lib/>. Any executables must be in
+F<script/>. Test files must be in F<t/>. Dist sharedirs must be in F<share/>,
+module sharedirs are under F<module-share> (e.g. F<module-share/Foo-Bar> for
+module C<Foo::Bar>).
+
+C<.c> files in the F<src/> are compiled together with the .xs file matching the
+distribution name.
+
+=head1 USAGE
+
+These all work pretty much like their Module::Build equivalents.
+
+=head2 perl Build.PL
+
+=head2 Build [ build ]
+
+=head2 Build test
+
+=head2 Build install
+
+This supports the following options:
+
+=over
+
+=item * verbose
+
+=item * install_base
+
+=item * installdirs
+
+=item * prefix
+
+=item * install_path
+
+=item * destdir
+
+=item * uninst
+
+=item * config
+
+=item * pure-perl
+
+=item * create_packlist
+
+=back
+
+=head1 AUTHORING
+
+This module doesn't support authoring. To develop modules using Module::Build::Tiny, usage of L<Dist::Zilla::Plugin::ModuleBuildTiny> or L<App::ModuleBuildTiny> is recommended.
+
+=head1 CONFIG FILE AND ENVIRONMENT
+
+Options can be provided in the C<PERL_MB_OPT> environment variable the same way they can with Module::Build. This should be done during the configuration stage.
+
+=head2 Incompatibilities
+
+=over 4
+
+=item * Argument parsing
+
+Module::Build has an extremely permissive way of argument handling, Module::Build::Tiny only supports a (sane) subset of that. In particular, C<./Build destdir=/foo> does not work, you will need to pass it as C<./Build --destdir=/foo>.
+
+=item * .modulebuildrc
+
+Module::Build::Tiny does not support .modulebuildrc files. In particular, this means that versions of local::lib older than 1.006008 may break with C<ERROR: Can't create /usr/local/somepath>. If the output of C<perl -Mlocal::lib> contains C<MODULEBUILDRC> but not C<PERL_MB_OPT >, you will need to upgrade it to resolve this issue.
+
+=back
+
+=head1 SEE ALSO
+
+L<Module::Build>
+
+=head1 AUTHORS
+
+=over 4
+
+=item *
+
+Leon Timmermans <leont@cpan.org>
+
+=item *
+
+David Golden <dagolden@cpan.org>
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2011 by Leon Timmermans, David Golden.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/Mozilla/CA.pm b/Master/tlpkg/tlperl/site/lib/Mozilla/CA.pm
index dbbc6268c80..63bbc833219 100644
--- a/Master/tlpkg/tlperl/site/lib/Mozilla/CA.pm
+++ b/Master/tlpkg/tlperl/site/lib/Mozilla/CA.pm
@@ -1,18 +1,15 @@
package Mozilla::CA;
-
use strict;
-our $VERSION = '20211001';
+use warnings;
+
+our $VERSION = '20231213';
-use Cwd ();
use File::Spec ();
use File::Basename qw(dirname);
sub SSL_ca_file {
my $file = File::Spec->catfile(dirname(__FILE__), "CA", "cacert.pem");
- if (!File::Spec->file_name_is_absolute($file)) {
- $file = File::Spec->catfile(Cwd::cwd(), $file);
- }
- return $file;
+ return File::Spec->rel2abs($file);
}
1;
@@ -30,14 +27,14 @@ Mozilla::CA - Mozilla's CA cert bundle in PEM format
my $host = "www.paypal.com";
my $client = IO::Socket::SSL->new(
- PeerHost => "$host:443",
- SSL_verify_mode => 0x02,
- SSL_ca_file => Mozilla::CA::SSL_ca_file(),
+ PeerHost => "$host:443",
+ SSL_verify_mode => 0x02,
+ SSL_ca_file => Mozilla::CA::SSL_ca_file(),
)
- || die "Can't connect: $@";
+ || die "Can't connect: $@";
$client->verify_hostname($host, "http")
- || die "hostname verification failure";
+ || die "hostname verification failure";
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/site/lib/Mozilla/CA/cacert.pem b/Master/tlpkg/tlperl/site/lib/Mozilla/CA/cacert.pem
index dcaeb7359de..6a898bb7c65 100644
--- a/Master/tlpkg/tlperl/site/lib/Mozilla/CA/cacert.pem
+++ b/Master/tlpkg/tlperl/site/lib/Mozilla/CA/cacert.pem
@@ -1,7 +1,7 @@
##
## Bundle of CA Root Certificates
##
-## Certificate data from Mozilla as of: Fri Oct 1 13:46:52 2021 GMT
+## Certificate data from Mozilla as of: Wed Dec 13 16:41:47 2023 GMT
##
## This is a bundle of X.509 certificates of public Certificate Authorities
## (CA). These were automatically extracted from Mozilla's root certificates
@@ -13,8 +13,8 @@
## an Apache+mod_ssl webserver for SSL client authentication.
## Just configure this file as the SSLCACertificateFile.
##
-## Conversion done with mk-ca-bundle.pl version 1.28.
-## SHA256: c8f6733d1ff4e6a4769c182971a1234f95ae079247a9c439a13423fe8ba5c24f
+## Conversion done with mk-ca-bundle.pl version 1.29.
+## SHA256: 1970dd65858925d68498d2356aea6d03f764422523c5887deca8ce3ba9e1f845
##
@@ -39,28 +39,6 @@ hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC
X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A==
-----END CERTIFICATE-----
-GlobalSign Root CA - R2
-=======================
------BEGIN CERTIFICATE-----
-MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv
-YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh
-bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT
-aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln
-bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6
-ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp
-s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN
-S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL
-TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C
-ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E
-FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i
-YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN
-BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp
-9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu
-01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7
-9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7
-TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg==
------END CERTIFICATE-----
-
Entrust.net Premium 2048 Secure Server CA
=========================================
-----BEGIN CERTIFICATE-----
@@ -222,27 +200,6 @@ vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr
qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto=
-----END CERTIFICATE-----
-Security Communication Root CA
-==============================
------BEGIN CERTIFICATE-----
-MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
-U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
-HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP
-U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw
-ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw
-8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM
-DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX
-5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd
-DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2
-JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw
-DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g
-0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a
-mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ
-s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ
-6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi
-FL39vmwLAw==
------END CERTIFICATE-----
-
XRamp Global CA Root
====================
-----BEGIN CERTIFICATE-----
@@ -511,29 +468,6 @@ IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN
+8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ==
-----END CERTIFICATE-----
-Network Solutions Certificate Authority
-=======================================
------BEGIN CERTIFICATE-----
-MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG
-EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr
-IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx
-MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu
-MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G
-CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx
-jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT
-aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT
-crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc
-/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB
-AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP
-BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv
-bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA
-A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q
-4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/
-GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv
-wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD
-ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey
------END CERTIFICATE-----
-
COMODO ECC Certification Authority
==================================
-----BEGIN CERTIFICATE-----
@@ -573,28 +507,6 @@ PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY
WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg==
-----END CERTIFICATE-----
-Cybertrust Global Root
-======================
------BEGIN CERTIFICATE-----
-MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li
-ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4
-MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD
-ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
-+Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW
-0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL
-AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin
-89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT
-8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP
-BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2
-MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G
-A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO
-lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi
-5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2
-hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T
-X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW
-WL1WMRJOEcgh4LMRkWXbtKaIOM5V
------END CERTIFICATE-----
-
ePKI Root Certification Authority
=================================
-----BEGIN CERTIFICATE-----
@@ -670,26 +582,6 @@ NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu
dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E=
-----END CERTIFICATE-----
-Hongkong Post Root CA 1
-=======================
------BEGIN CERTIFICATE-----
-MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT
-DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx
-NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n
-IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF
-AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1
-ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr
-auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh
-qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY
-V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV
-HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i
-h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio
-l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei
-IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps
-T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT
-c4afU9hDDl3WY4JxHYB0yvbiAmvZWg==
------END CERTIFICATE-----
-
SecureSign RootCA11
===================
-----BEGIN CERTIFICATE-----
@@ -756,39 +648,6 @@ YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r
kpeDMdmztcpHWD9f
-----END CERTIFICATE-----
-Autoridad de Certificacion Firmaprofesional CIF A62634068
-=========================================================
------BEGIN CERTIFICATE-----
-MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA
-BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
-MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw
-QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
-NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
-Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
-B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
-7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
-ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
-plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
-MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
-LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
-bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
-vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud
-EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH
-DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp
-cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA
-bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx
-ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx
-51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk
-R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP
-T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f
-Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl
-osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR
-crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR
-saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD
-KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi
-6Et8Vcad+qMUu2WFbm5PEn4KPJ2V
------END CERTIFICATE-----
-
Izenpe.com
==========
-----BEGIN CERTIFICATE-----
@@ -1037,60 +896,6 @@ tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29
mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03
-----END CERTIFICATE-----
-EC-ACC
-======
------BEGIN CERTIFICATE-----
-MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE
-BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w
-ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD
-VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE
-CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT
-BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7
-MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt
-SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl
-Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh
-cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND
-MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK
-w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT
-ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4
-HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a
-E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw
-0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E
-BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD
-VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0
-Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l
-dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ
-lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa
-Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe
-l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2
-E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D
-5EI=
------END CERTIFICATE-----
-
-Hellenic Academic and Research Institutions RootCA 2011
-=======================================================
------BEGIN CERTIFICATE-----
-MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT
-O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y
-aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
-IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT
-AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z
-IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo
-IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
-AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI
-1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa
-71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u
-8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH
-3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/
-MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8
-MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu
-b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt
-XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8
-TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD
-/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N
-7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4
------END CERTIFICATE-----
-
Actalis Authentication Root CA
==============================
-----BEGIN CERTIFICATE-----
@@ -1382,40 +1187,6 @@ Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems
WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY=
-----END CERTIFICATE-----
-E-Tugra Certification Authority
-===============================
------BEGIN CERTIFICATE-----
-MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w
-DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls
-ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN
-ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw
-NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx
-QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl
-cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD
-DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
-MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd
-hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K
-CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g
-ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ
-BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0
-E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz
-rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq
-jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn
-rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5
-dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB
-/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG
-MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK
-kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO
-XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807
-VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo
-a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc
-dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV
-KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT
-Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0
-8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G
-C7TbO6Orb1wdtn7os4I07QZcJA==
------END CERTIFICATE-----
-
T-TeleSec GlobalRoot Class 2
============================
-----BEGIN CERTIFICATE-----
@@ -1737,20 +1508,6 @@ HU6+4WMBzzuqQhFkoJ2UOQIReVx7Hfpkue4WQrO/isIJxOzksU0CMQDpKmFHjFJKS04YcPbWRNZu
9YO6bVi9JNlWSOrvxKJGgYhqOkbRqZtNyWHa0V1Xahg=
-----END CERTIFICATE-----
-GlobalSign ECC Root CA - R4
-===========================
------BEGIN CERTIFICATE-----
-MIIB4TCCAYegAwIBAgIRKjikHJYKBN5CsiilC+g0mAIwCgYIKoZIzj0EAwIwUDEkMCIGA1UECxMb
-R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
-EwpHbG9iYWxTaWduMB4XDTEyMTExMzAwMDAwMFoXDTM4MDExOTAzMTQwN1owUDEkMCIGA1UECxMb
-R2xvYmFsU2lnbiBFQ0MgUm9vdCBDQSAtIFI0MRMwEQYDVQQKEwpHbG9iYWxTaWduMRMwEQYDVQQD
-EwpHbG9iYWxTaWduMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEuMZ5049sJQ6fLjkZHAOkrprl
-OQcJFspjsbmG+IpXwVfOQvpzofdlQv8ewQCybnMO/8ch5RikqtlxP6jUuc6MHaNCMEAwDgYDVR0P
-AQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFFSwe61FuOJAf/sKbvu+M8k8o4TV
-MAoGCCqGSM49BAMCA0gAMEUCIQDckqGgE6bPA7DmxCGXkPoUVy0D7O48027KqGx2vKLeuwIgJ6iF
-JzWbVsaj8kfSt24bAgAXqmemFZHe+pTsewv4n4Q=
------END CERTIFICATE-----
-
GlobalSign ECC Root CA - R5
===========================
-----BEGIN CERTIFICATE-----
@@ -1766,36 +1523,6 @@ uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7
yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3
-----END CERTIFICATE-----
-Staat der Nederlanden EV Root CA
-================================
------BEGIN CERTIFICATE-----
-MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE
-CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g
-RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M
-MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl
-cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk
-SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW
-O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r
-0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8
-Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV
-XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr
-08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV
-0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd
-74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx
-fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC
-MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa
-ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI
-eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu
-c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq
-5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN
-b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN
-f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi
-5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4
-WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK
-DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy
-eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg==
------END CERTIFICATE-----
-
IdenTrust Commercial Root CA 1
==============================
-----BEGIN CERTIFICATE-----
@@ -2247,87 +1974,6 @@ F8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ
aaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g==
-----END CERTIFICATE-----
-TrustCor RootCert CA-1
-======================
------BEGIN CERTIFICATE-----
-MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYDVQQGEwJQQTEP
-MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig
-U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp
-dHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkx
-MjMxMTcyMzE2WjCBpDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFu
-YW1hIENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUGA1UECwwe
-VHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZUcnVzdENvciBSb290Q2Vy
-dCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv463leLCJhJrMxnHQFgKq1mq
-jQCj/IDHUHuO1CAmujIS2CNUSSUQIpidRtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4
-pQa81QBeCQryJ3pS/C3Vseq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0
-JEsq1pme9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CVEY4h
-gLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorWhnAbJN7+KIor0Gqw
-/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/DeOxCbeKyKsZn3MzUOcwHwYDVR0j
-BBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC
-AYYwDQYJKoZIhvcNAQELBQADggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5
-mDo4Nvu7Zp5I/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf
-ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZyonnMlo2HD6C
-qFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djtsL1Ac59v2Z3kf9YKVmgenFK+P
-3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdNzl/HHk484IkzlQsPpTLWPFp5LBk=
------END CERTIFICATE-----
-
-TrustCor RootCert CA-2
-======================
------BEGIN CERTIFICATE-----
-MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNVBAYTAlBBMQ8w
-DQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQwIgYDVQQKDBtUcnVzdENvciBT
-eXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0
-eTEfMB0GA1UEAwwWVHJ1c3RDb3IgUm9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEy
-MzExNzI2MzlaMIGkMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5h
-bWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U
-cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0
-IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnIG7CKqJiJJWQdsg4foDSq8Gb
-ZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9Nk
-RvRUqdw6VC0xK5mC8tkq1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1
-oYxOdqHp2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nKDOOb
-XUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hapeaz6LMvYHL1cEksr1
-/p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF3wP+TfSvPd9cW436cOGlfifHhi5q
-jxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQP
-eSghYA2FFn3XVDjxklb9tTNMg9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+Ctg
-rKAmrhQhJ8Z3mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh
-8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAdBgNVHQ4EFgQU
-2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6UnrybPZx9mCAZ5YwwYrIwDwYD
-VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/h
-Osh80QA9z+LqBrWyOrsGS2h60COXdKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnp
-kpfbsEZC89NiqpX+MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv
-2wnL/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RXCI/hOWB3
-S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYaZH9bDTMJBzN7Bj8RpFxw
-PIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dv
-DDqPys/cA8GiCcjl/YBeyGBCARsaU1q7N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYU
-RpFHmygk71dSTlxCnKr3Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANE
-xdqtvArBAs8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp5KeX
-RKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu1uwJ
------END CERTIFICATE-----
-
-TrustCor ECA-1
-==============
------BEGIN CERTIFICATE-----
-MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYDVQQGEwJQQTEP
-MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig
-U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp
-dHkxFzAVBgNVBAMMDlRydXN0Q29yIEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3Mjgw
-N1owgZwxCzAJBgNVBAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5
-MSQwIgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29y
-IENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3IgRUNBLTEwggEiMA0GCSqG
-SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb3w9U73NjKYKtR8aja+3+XzP4Q1HpGjOR
-MRegdMTUpwHmspI+ap3tDvl0mEDTPwOABoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23
-xFUfJ3zSCNV2HykVh0A53ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmc
-p0yJF4OuowReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/wZ0+
-fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZFZtS6mFjBAgMBAAGj
-YzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAfBgNVHSMEGDAWgBREnkj1zG1I1KBL
-f/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF
-AAOCAQEABT41XBVwm8nHc2FvcivUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u
-/ukZMjgDfxT2AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F
-hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50soIipX1TH0Xs
-J5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BIWJZpTdwHjFGTot+fDz2LYLSC
-jaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1WitJ/X5g==
------END CERTIFICATE-----
-
SSL.com Root Certification Authority RSA
========================================
-----BEGIN CERTIFICATE-----
@@ -2472,96 +2118,6 @@ AwMDaAAwZQIwJsdpW9zV57LnyAyMjMPdeYwbY9XJUpROTYJKcx6ygISpJcBMWm1JKWB4E+J+SOtk
AjEA2zQgMgj/mkkCtojeFK9dbJlxjRo/i9fgojaGHAeCOnZT/cKi7e97sIBPWA9LUzm9
-----END CERTIFICATE-----
-GTS Root R1
-===========
------BEGIN CERTIFICATE-----
-MIIFWjCCA0KgAwIBAgIQbkepxUtHDA3sM9CJuRz04TANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG
-EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv
-b3QgUjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG
-A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIi
-MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx
-9vaMf/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7r
-aKb0xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnW
-r4+wB7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqM
-LnXWnOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly
-4cpk9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr
-06zqkUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92
-wO1AK/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om
-3xPXV2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNu
-JLDWcfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD
-VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEM
-BQADggIBADiWCu49tJYeX++dnAsznyvgyv3SjgofQXSlfKqE1OXyHuY3UjKcC9FhHb8owbZEKTV1
-d5iyfNm9dKyKaOOpMQkpAWBz40d8U6iQSifvS9efk+eCNs6aaAyC58/UEBZvXw6ZXPYfcX3v73sv
-fuo21pdwCxXu11xWajOl40k4DLh9+42FpLFZXvRq4d2h9mREruZRgyFmxhE+885H7pwoHyXa/6xm
-ld01D1zvICxi/ZG6qcz8WpyTgYMpl0p8WnK0OdC3d8t5/Wk6kjftbjhlRn7pYL15iJdfOBL07q9b
-gsiG1eGZbYwE8na6SfZu6W0eX6DvJ4J2QPim01hcDyxC2kLGe4g0x8HYRZvBPsVhHdljUEn2NIVq
-4BjFbkerQUIpm/ZgDdIx02OYI5NaAIFItO/Nis3Jz5nu2Z6qNuFoS3FJFDYoOj0dzpqPJeaAcWEr
-tXvM+SUWgeExX6GjfhaknBZqlxi9dnKlC54dNuYvoS++cJEPqOba+MSSQGwlfnuzCdyyF62ARPBo
-pY+Udf90WuioAnwMCeKpSwughQtiue+hMZL77/ZRBIls6Kl0obsXs7X9SQ98POyDGCBDTtWTurQ0
-sR8WNh8M5mQ5Fkzc4P4dyKliPUDqysU0ArSuiYgzNdwsE3PYJ/HQcu51OyLemGhmW/HGY0dVHLql
-CFF1pkgl
------END CERTIFICATE-----
-
-GTS Root R2
-===========
------BEGIN CERTIFICATE-----
-MIIFWjCCA0KgAwIBAgIQbkepxlqz5yDFMJo/aFLybzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQG
-EwJVUzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJv
-b3QgUjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAG
-A1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIi
-MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTuk
-k3LvCvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo
-7JUle3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWI
-m8Wba96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5Gm
-dFrS+LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbu
-ak7MkogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscsz
-cTJGr61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RW
-Ir9qS34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73Vululycsl
-aVNVJ1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy
-5okLdWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYD
-VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEM
-BQADggIBALZp8KZ3/p7uC4Gt4cCpx/k1HUCCq+YEtN/L9x0Pg/B+E02NjO7jMyLDOfxA325BS0JT
-vhaI8dI4XsRomRyYUpOM52jtG2pzegVATX9lO9ZY8c6DR2Dj/5epnGB3GFW1fgiTz9D2PGcDFWEJ
-+YF59exTpJ/JjwGLc8R3dtyDovUMSRqodt6Sm2T4syzFJ9MHwAiApJiS4wGWAqoC7o87xdFtCjMw
-c3i5T1QWvwsHoaRc5svJXISPD+AVdyx+Jn7axEvbpxZ3B7DNdehyQtaVhJ2Gg/LkkM0JR9SLA3Da
-WsYDQvTtN6LwG1BUSw7YhN4ZKJmBR64JGz9I0cNv4rBgF/XuIwKl2gBbbZCr7qLpGzvpx0QnRY5r
-n/WkhLx3+WuXrD5RRaIRpsyF7gpo8j5QOHokYh4XIDdtak23CZvJ/KRY9bb7nE4Yu5UC56Gtmwfu
-Nmsk0jmGwZODUNKBRqhfYlcsu2xkiAhu7xNUX90txGdj08+JN7+dIPT7eoOboB6BAFDC5AwiWVIQ
-7UNWhwD4FFKnHYuTjKJNRn8nxnGbJN7k2oaLDX5rIMHAnuFl2GqjpuiFizoHCBy69Y9Vmhh1fuXs
-gWbRIXOhNUQLgD1bnF5vKheW0YMjiGZt5obicDIvUiLnyOd/xCxgXS/Dr55FBcOEArf9LAhST4Ld
-o/DUhgkC
------END CERTIFICATE-----
-
-GTS Root R3
-===========
------BEGIN CERTIFICATE-----
-MIICDDCCAZGgAwIBAgIQbkepx2ypcyRAiQ8DVd2NHTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
-UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
-UjMwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
-ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcq
-hkjOPQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUU
-Rout736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24Cej
-QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP
-0/EqEr24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEAgFukfCPAlaUs3L6JbyO5o91lAFJekazInXJ0
-glMLfalAvWhgxeG4VDvBNhcl2MG9AjEAnjWSdIUlUfUk7GRSJFClH9voy8l27OyCbvWFGFPouOOa
-KaqW04MjyaR7YbPMAuhd
------END CERTIFICATE-----
-
-GTS Root R4
-===========
------BEGIN CERTIFICATE-----
-MIICCjCCAZGgAwIBAgIQbkepyIuUtui7OyrYorLBmTAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJV
-UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
-UjQwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
-ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcq
-hkjOPQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa
-6zzuhXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqj
-QjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV
-2Py1PsVq8JQdjDAKBggqhkjOPQQDAwNnADBkAjBqUFJ0CMRw3J5QdCHojXohw0+WbhXRIjVhLfoI
-N+4Zba3bssx9BzT1YBkstTTZbyACMANxsbqjYAuG7ZoIapVon+Kz4ZNkfF6Tpt95LY2F45TPI11x
-zPKwTdb+mciUqXWi4w==
------END CERTIFICATE-----
-
UCA Global G2 Root
==================
-----BEGIN CERTIFICATE-----
@@ -3152,3 +2708,827 @@ WWRrJ8/vJ8HjJLWG965+Mk2weWjROeiQWMODvA8s1pfrzgzhIMfatz7DP78v3DSk+yshzWePS/Tj
OPQD8rv7gmsHINFSH5pkAnuYZttcTVoP0ISVoDwUQwbKytu4QTbaakRnh6+v40URFWkIsr4WOZck
bxJF0WddCajJFdr60qZfE2Efv4WstK2tBZQIgx51F9NxO5NQI1mg7TyRVJ12AMXDuDjb
-----END CERTIFICATE-----
+
+TunTrust Root CA
+================
+-----BEGIN CERTIFICATE-----
+MIIFszCCA5ugAwIBAgIUEwLV4kBMkkaGFmddtLu7sms+/BMwDQYJKoZIhvcNAQELBQAwYTELMAkG
+A1UEBhMCVE4xNzA1BgNVBAoMLkFnZW5jZSBOYXRpb25hbGUgZGUgQ2VydGlmaWNhdGlvbiBFbGVj
+dHJvbmlxdWUxGTAXBgNVBAMMEFR1blRydXN0IFJvb3QgQ0EwHhcNMTkwNDI2MDg1NzU2WhcNNDQw
+NDI2MDg1NzU2WjBhMQswCQYDVQQGEwJUTjE3MDUGA1UECgwuQWdlbmNlIE5hdGlvbmFsZSBkZSBD
+ZXJ0aWZpY2F0aW9uIEVsZWN0cm9uaXF1ZTEZMBcGA1UEAwwQVHVuVHJ1c3QgUm9vdCBDQTCCAiIw
+DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMPN0/y9BFPdDCA61YguBUtB9YOCfvdZn56eY+hz
+2vYGqU8ftPkLHzmMmiDQfgbU7DTZhrx1W4eI8NLZ1KMKsmwb60ksPqxd2JQDoOw05TDENX37Jk0b
+bjBU2PWARZw5rZzJJQRNmpA+TkBuimvNKWfGzC3gdOgFVwpIUPp6Q9p+7FuaDmJ2/uqdHYVy7BG7
+NegfJ7/Boce7SBbdVtfMTqDhuazb1YMZGoXRlJfXyqNlC/M4+QKu3fZnz8k/9YosRxqZbwUN/dAd
+gjH8KcwAWJeRTIAAHDOFli/LQcKLEITDCSSJH7UP2dl3RxiSlGBcx5kDPP73lad9UKGAwqmDrViW
+VSHbhlnUr8a83YFuB9tgYv7sEG7aaAH0gxupPqJbI9dkxt/con3YS7qC0lH4Zr8GRuR5KiY2eY8f
+Tpkdso8MDhz/yV3A/ZAQprE38806JG60hZC/gLkMjNWb1sjxVj8agIl6qeIbMlEsPvLfe/ZdeikZ
+juXIvTZxi11Mwh0/rViizz1wTaZQmCXcI/m4WEEIcb9PuISgjwBUFfyRbVinljvrS5YnzWuioYas
+DXxU5mZMZl+QviGaAkYt5IPCgLnPSz7ofzwB7I9ezX/SKEIBlYrilz0QIX32nRzFNKHsLA4KUiwS
+VXAkPcvCFDVDXSdOvsC9qnyW5/yeYa1E0wCXAgMBAAGjYzBhMB0GA1UdDgQWBBQGmpsfU33x9aTI
+04Y+oXNZtPdEITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFAaamx9TffH1pMjThj6hc1m0
+90QhMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAqgVutt0Vyb+zxiD2BkewhpMl
+0425yAA/l/VSJ4hxyXT968pk21vvHl26v9Hr7lxpuhbI87mP0zYuQEkHDVneixCwSQXi/5E/S7fd
+Ao74gShczNxtr18UnH1YeA32gAm56Q6XKRm4t+v4FstVEuTGfbvE7Pi1HE4+Z7/FXxttbUcoqgRY
+YdZ2vyJ/0Adqp2RT8JeNnYA/u8EH22Wv5psymsNUk8QcCMNE+3tjEUPRahphanltkE8pjkcFwRJp
+adbGNjHh/PqAulxPxOu3Mqz4dWEX1xAZufHSCe96Qp1bWgvUxpVOKs7/B9dPfhgGiPEZtdmYu65x
+xBzndFlY7wyJz4sfdZMaBBSSSFCp61cpABbjNhzI+L/wM9VBD8TMPN3pM0MBkRArHtG5Xc0yGYuP
+jCB31yLEQtyEFpslbei0VXF/sHyz03FJuc9SpAQ/3D2gu68zngowYI7bnV2UqL1g52KAdoGDDIzM
+MEZJ4gzSqK/rYXHv5yJiqfdcZGyfFoxnNidF9Ql7v/YQCvGwjVRDjAS6oz/v4jXH+XTgbzRB0L9z
+ZVcg+ZtnemZoJE6AZb0QmQZZ8mWvuMZHu/2QeItBcy6vVR/cO5JyboTT0GFMDcx2V+IthSIVNg3r
+AZ3r2OvEhJn7wAzMMujjd9qDRIueVSjAi1jTkD5OGwDxFa2DK5o=
+-----END CERTIFICATE-----
+
+HARICA TLS RSA Root CA 2021
+===========================
+-----BEGIN CERTIFICATE-----
+MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBsMQswCQYDVQQG
+EwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9u
+cyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0EgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUz
+OFoXDTQ1MDIxMzEwNTUzN1owbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRl
+bWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNB
+IFJvb3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569lmwVnlskN
+JLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE4VGC/6zStGndLuwRo0Xu
+a2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uva9of08WRiFukiZLRgeaMOVig1mlDqa2Y
+Ulhu2wr7a89o+uOkXjpFc5gH6l8Cct4MpbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K
+5FrZx40d/JiZ+yykgmvwKh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEv
+dmn8kN3bLW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcYAuUR
+0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqBAGMUuTNe3QvboEUH
+GjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYqE613TBoYm5EPWNgGVMWX+Ko/IIqm
+haZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHrW2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQ
+CPxrvrNQKlr9qEgYRtaQQJKQCoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8G
+A1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE
+AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAUX15QvWiWkKQU
+EapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3f5Z2EMVGpdAgS1D0NTsY9FVq
+QRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxajaH6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxD
+QpSbIPDRzbLrLFPCU3hKTwSUQZqPJzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcR
+j88YxeMn/ibvBZ3PzzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5
+vZStjBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0/L5H9MG0
+qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pTBGIBnfHAT+7hOtSLIBD6
+Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79aPib8qXPMThcFarmlwDB31qlpzmq6YR/
+PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YWxw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnn
+kf3/W9b3raYvAwtt41dU63ZTGI0RmLo=
+-----END CERTIFICATE-----
+
+HARICA TLS ECC Root CA 2021
+===========================
+-----BEGIN CERTIFICATE-----
+MIICVDCCAdugAwIBAgIQZ3SdjXfYO2rbIvT/WeK/zjAKBggqhkjOPQQDAzBsMQswCQYDVQQGEwJH
+UjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNoIEluc3RpdHV0aW9ucyBD
+QTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBFQ0MgUm9vdCBDQSAyMDIxMB4XDTIxMDIxOTExMDExMFoX
+DTQ1MDIxMzExMDEwOVowbDELMAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWlj
+IGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgRUNDIFJv
+b3QgQ0EgMjAyMTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDgI/rGgltJ6rK9JOtDA4MM7KKrxcm1l
+AEeIhPyaJmuqS7psBAqIXhfyVYf8MLA04jRYVxqEU+kw2anylnTDUR9YSTHMmE5gEYd103KUkE+b
+ECUqqHgtvpBBWJAVcqeht6NCMEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUyRtTgRL+BNUW
+0aq8mm+3oJUZbsowDgYDVR0PAQH/BAQDAgGGMAoGCCqGSM49BAMDA2cAMGQCMBHervjcToiwqfAi
+rcJRQO9gcS3ujwLEXQNwSaSS6sUUiHCm0w2wqsosQJz76YJumgIwK0eaB8bRwoF8yguWGEEbo/Qw
+CZ61IygNnxS2PFOiTAZpffpskcYqSUXm7LcT4Tps
+-----END CERTIFICATE-----
+
+Autoridad de Certificacion Firmaprofesional CIF A62634068
+=========================================================
+-----BEGIN CERTIFICATE-----
+MIIGFDCCA/ygAwIBAgIIG3Dp0v+ubHEwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCRVMxQjBA
+BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2
+MjYzNDA2ODAeFw0xNDA5MjMxNTIyMDdaFw0zNjA1MDUxNTIyMDdaMFExCzAJBgNVBAYTAkVTMUIw
+QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB
+NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD
+Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P
+B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY
+7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH
+ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI
+plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX
+MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX
+LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK
+bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU
+vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMB0GA1Ud
+DgQWBBRlzeurNR4APn7VdMActHNHDhpkLzASBgNVHRMBAf8ECDAGAQH/AgEBMIGmBgNVHSAEgZ4w
+gZswgZgGBFUdIAAwgY8wLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuZmlybWFwcm9mZXNpb25hbC5j
+b20vY3BzMFwGCCsGAQUFBwICMFAeTgBQAGEAcwBlAG8AIABkAGUAIABsAGEAIABCAG8AbgBhAG4A
+bwB2AGEAIAA0ADcAIABCAGEAcgBjAGUAbABvAG4AYQAgADAAOAAwADEANzAOBgNVHQ8BAf8EBAMC
+AQYwDQYJKoZIhvcNAQELBQADggIBAHSHKAIrdx9miWTtj3QuRhy7qPj4Cx2Dtjqn6EWKB7fgPiDL
+4QjbEwj4KKE1soCzC1HA01aajTNFSa9J8OA9B3pFE1r/yJfY0xgsfZb43aJlQ3CTkBW6kN/oGbDb
+LIpgD7dvlAceHabJhfa9NPhAeGIQcDq+fUs5gakQ1JZBu/hfHAsdCPKxsIl68veg4MSPi3i1O1il
+I45PVf42O+AMt8oqMEEgtIDNrvx2ZnOorm7hfNoD6JQg5iKj0B+QXSBTFCZX2lSX3xZEEAEeiGaP
+cjiT3SC3NL7X8e5jjkd5KAb881lFJWAiMxujX6i6KtoaPc1A6ozuBRWV1aUsIC+nmCjuRfzxuIgA
+LI9C2lHVnOUTaHFFQ4ueCyE8S1wF3BqfmI7avSKecs2tCsvMo2ebKHTEm9caPARYpoKdrcd7b/+A
+lun4jWq9GJAd/0kakFI3ky88Al2CdgtR5xbHV/g4+afNmyJU72OwFW1TZQNKXkqgsqeOSQBZONXH
+9IBk9W6VULgRfhVwOEqwf9DEMnDAGf/JOC0ULGb0QkTmVXYbgBVX/8Cnp6o5qtjTcNAuuuuUavpf
+NIbnYrX9ivAwhZTJryQCL2/W3Wf+47BVTwSYT6RBVuKT0Gro1vP7ZeDOdcQxWQzugsgMYDNKGbqE
+ZycPvEJdvSRUDewdcAZfpLz6IHxV
+-----END CERTIFICATE-----
+
+vTrus ECC Root CA
+=================
+-----BEGIN CERTIFICATE-----
+MIICDzCCAZWgAwIBAgIUbmq8WapTvpg5Z6LSa6Q75m0c1towCgYIKoZIzj0EAwMwRzELMAkGA1UE
+BhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBS
+b290IENBMB4XDTE4MDczMTA3MjY0NFoXDTQzMDczMTA3MjY0NFowRzELMAkGA1UEBhMCQ04xHDAa
+BgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xGjAYBgNVBAMTEXZUcnVzIEVDQyBSb290IENBMHYw
+EAYHKoZIzj0CAQYFK4EEACIDYgAEZVBKrox5lkqqHAjDo6LN/llWQXf9JpRCux3NCNtzslt188+c
+ToL0v/hhJoVs1oVbcnDS/dtitN9Ti72xRFhiQgnH+n9bEOf+QP3A2MMrMudwpremIFUde4BdS49n
+TPEQo0IwQDAdBgNVHQ4EFgQUmDnNvtiyjPeyq+GtJK97fKHbH88wDwYDVR0TAQH/BAUwAwEB/zAO
+BgNVHQ8BAf8EBAMCAQYwCgYIKoZIzj0EAwMDaAAwZQIwV53dVvHH4+m4SVBrm2nDb+zDfSXkV5UT
+QJtS0zvzQBm8JsctBp61ezaf9SXUY2sAAjEA6dPGnlaaKsyh2j/IZivTWJwghfqrkYpwcBE4YGQL
+YgmRWAD5Tfs0aNoJrSEGGJTO
+-----END CERTIFICATE-----
+
+vTrus Root CA
+=============
+-----BEGIN CERTIFICATE-----
+MIIFVjCCAz6gAwIBAgIUQ+NxE9izWRRdt86M/TX9b7wFjUUwDQYJKoZIhvcNAQELBQAwQzELMAkG
+A1UEBhMCQ04xHDAaBgNVBAoTE2lUcnVzQ2hpbmEgQ28uLEx0ZC4xFjAUBgNVBAMTDXZUcnVzIFJv
+b3QgQ0EwHhcNMTgwNzMxMDcyNDA1WhcNNDMwNzMxMDcyNDA1WjBDMQswCQYDVQQGEwJDTjEcMBoG
+A1UEChMTaVRydXNDaGluYSBDby4sTHRkLjEWMBQGA1UEAxMNdlRydXMgUm9vdCBDQTCCAiIwDQYJ
+KoZIhvcNAQEBBQADggIPADCCAgoCggIBAL1VfGHTuB0EYgWgrmy3cLRB6ksDXhA/kFocizuwZots
+SKYcIrrVQJLuM7IjWcmOvFjai57QGfIvWcaMY1q6n6MLsLOaXLoRuBLpDLvPbmyAhykUAyyNJJrI
+ZIO1aqwTLDPxn9wsYTwaP3BVm60AUn/PBLn+NvqcwBauYv6WTEN+VRS+GrPSbcKvdmaVayqwlHeF
+XgQPYh1jdfdr58tbmnDsPmcF8P4HCIDPKNsFxhQnL4Z98Cfe/+Z+M0jnCx5Y0ScrUw5XSmXX+6KA
+YPxMvDVTAWqXcoKv8R1w6Jz1717CbMdHflqUhSZNO7rrTOiwCcJlwp2dCZtOtZcFrPUGoPc2BX70
+kLJrxLT5ZOrpGgrIDajtJ8nU57O5q4IikCc9Kuh8kO+8T/3iCiSn3mUkpF3qwHYw03dQ+A0Em5Q2
+AXPKBlim0zvc+gRGE1WKyURHuFE5Gi7oNOJ5y1lKCn+8pu8fA2dqWSslYpPZUxlmPCdiKYZNpGvu
+/9ROutW04o5IWgAZCfEF2c6Rsffr6TlP9m8EQ5pV9T4FFL2/s1m02I4zhKOQUqqzApVg+QxMaPnu
+1RcN+HFXtSXkKe5lXa/R7jwXC1pDxaWG6iSe4gUH3DRCEpHWOXSuTEGC2/KmSNGzm/MzqvOmwMVO
+9fSddmPmAsYiS8GVP1BkLFTltvA8Kc9XAgMBAAGjQjBAMB0GA1UdDgQWBBRUYnBj8XWEQ1iO0RYg
+scasGrz2iTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOC
+AgEAKbqSSaet8PFww+SX8J+pJdVrnjT+5hpk9jprUrIQeBqfTNqK2uwcN1LgQkv7bHbKJAs5EhWd
+nxEt/Hlk3ODg9d3gV8mlsnZwUKT+twpw1aA08XXXTUm6EdGz2OyC/+sOxL9kLX1jbhd47F18iMjr
+jld22VkE+rxSH0Ws8HqA7Oxvdq6R2xCOBNyS36D25q5J08FsEhvMKar5CKXiNxTKsbhm7xqC5PD4
+8acWabfbqWE8n/Uxy+QARsIvdLGx14HuqCaVvIivTDUHKgLKeBRtRytAVunLKmChZwOgzoy8sHJn
+xDHO2zTlJQNgJXtxmOTAGytfdELSS8VZCAeHvsXDf+eW2eHcKJfWjwXj9ZtOyh1QRwVTsMo554Wg
+icEFOwE30z9J4nfrI8iIZjs9OXYhRvHsXyO466JmdXTBQPfYaJqT4i2pLr0cox7IdMakLXogqzu4
+sEb9b91fUlV1YvCXoHzXOP0l382gmxDPi7g4Xl7FtKYCNqEeXxzP4padKar9mK5S4fNBUvupLnKW
+nyfjqnN9+BojZns7q2WwMgFLFT49ok8MKzWixtlnEjUwzXYuFrOZnk1PTi07NEPhmg4NpGaXutIc
+SkwsKouLgU9xGqndXHt7CMUADTdA43x7VF8vhV929vensBxXVsFy6K2ir40zSbofitzmdHxghm+H
+l3s=
+-----END CERTIFICATE-----
+
+ISRG Root X2
+============
+-----BEGIN CERTIFICATE-----
+MIICGzCCAaGgAwIBAgIQQdKd0XLq7qeAwSxs6S+HUjAKBggqhkjOPQQDAzBPMQswCQYDVQQGEwJV
+UzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElT
+UkcgUm9vdCBYMjAeFw0yMDA5MDQwMDAwMDBaFw00MDA5MTcxNjAwMDBaME8xCzAJBgNVBAYTAlVT
+MSkwJwYDVQQKEyBJbnRlcm5ldCBTZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNS
+RyBSb290IFgyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0H
+ttwW+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7AlF9ItgKbppb
+d9/w+kHsOdx1ymgHDB/qo0IwQDAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNV
+HQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwCgYIKoZIzj0EAwMDaAAwZQIwe3lORlCEwkSHRhtF
+cP9Ymd70/aTSVaYgLXTWNLxBo1BfASdWtL4ndQavEi51mI38AjEAi/V3bNTIZargCyzuFJ0nN6T5
+U6VR5CmD1/iQMVtCnwr1/q4AaOeMSQ+2b1tbFfLn
+-----END CERTIFICATE-----
+
+HiPKI Root CA - G1
+==================
+-----BEGIN CERTIFICATE-----
+MIIFajCCA1KgAwIBAgIQLd2szmKXlKFD6LDNdmpeYDANBgkqhkiG9w0BAQsFADBPMQswCQYDVQQG
+EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xGzAZBgNVBAMMEkhpUEtJ
+IFJvb3QgQ0EgLSBHMTAeFw0xOTAyMjIwOTQ2MDRaFw0zNzEyMzExNTU5NTlaME8xCzAJBgNVBAYT
+AlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEbMBkGA1UEAwwSSGlQS0kg
+Um9vdCBDQSAtIEcxMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA9B5/UnMyDHPkvRN0
+o9QwqNCuS9i233VHZvR85zkEHmpwINJaR3JnVfSl6J3VHiGh8Ge6zCFovkRTv4354twvVcg3Px+k
+wJyz5HdcoEb+d/oaoDjq7Zpy3iu9lFc6uux55199QmQ5eiY29yTw1S+6lZgRZq2XNdZ1AYDgr/SE
+YYwNHl98h5ZeQa/rh+r4XfEuiAU+TCK72h8q3VJGZDnzQs7ZngyzsHeXZJzA9KMuH5UHsBffMNsA
+GJZMoYFL3QRtU6M9/Aes1MU3guvklQgZKILSQjqj2FPseYlgSGDIcpJQ3AOPgz+yQlda22rpEZfd
+hSi8MEyr48KxRURHH+CKFgeW0iEPU8DtqX7UTuybCeyvQqww1r/REEXgphaypcXTT3OUM3ECoWqj
+1jOXTyFjHluP2cFeRXF3D4FdXyGarYPM+l7WjSNfGz1BryB1ZlpK9p/7qxj3ccC2HTHsOyDry+K4
+9a6SsvfhhEvyovKTmiKe0xRvNlS9H15ZFblzqMF8b3ti6RZsR1pl8w4Rm0bZ/W3c1pzAtH2lsN0/
+Vm+h+fbkEkj9Bn8SV7apI09bA8PgcSojt/ewsTu8mL3WmKgMa/aOEmem8rJY5AIJEzypuxC00jBF
+8ez3ABHfZfjcK0NVvxaXxA/VLGGEqnKG/uY6fsI/fe78LxQ+5oXdUG+3Se0CAwEAAaNCMEAwDwYD
+VR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ncX+l6o/vY9cdVouslGDDjYr7AwDgYDVR0PAQH/BAQD
+AgGGMA0GCSqGSIb3DQEBCwUAA4ICAQBQUfB13HAE4/+qddRxosuej6ip0691x1TPOhwEmSKsxBHi
+7zNKpiMdDg1H2DfHb680f0+BazVP6XKlMeJ45/dOlBhbQH3PayFUhuaVevvGyuqcSE5XCV0vrPSl
+tJczWNWseanMX/mF+lLFjfiRFOs6DRfQUsJ748JzjkZ4Bjgs6FzaZsT0pPBWGTMpWmWSBUdGSquE
+wx4noR8RkpkndZMPvDY7l1ePJlsMu5wP1G4wB9TcXzZoZjmDlicmisjEOf6aIW/Vcobpf2Lll07Q
+JNBAsNB1CI69aO4I1258EHBGG3zgiLKecoaZAeO/n0kZtCW+VmWuF2PlHt/o/0elv+EmBYTksMCv
+5wiZqAxeJoBF1PhoL5aPruJKHJwWDBNvOIf2u8g0X5IDUXlwpt/L9ZlNec1OvFefQ05rLisY+Gpz
+jLrFNe85akEez3GoorKGB1s6yeHvP2UEgEcyRHCVTjFnanRbEEV16rCf0OY1/k6fi8wrkkVbbiVg
+hUbN0aqwdmaTd5a+g744tiROJgvM7XpWGuDpWsZkrUx6AEhEL7lAuxM+vhV4nYWBSipX3tUZQ9rb
+yltHhoMLP7YNdnhzeSJesYAfz77RP1YQmCuVh6EfnWQUYDksswBVLuT1sw5XxJFBAJw/6KXf6vb/
+yPCtbVKoF6ubYfwSUTXkJf2vqmqGOQ==
+-----END CERTIFICATE-----
+
+GlobalSign ECC Root CA - R4
+===========================
+-----BEGIN CERTIFICATE-----
+MIIB3DCCAYOgAwIBAgINAgPlfvU/k/2lCSGypjAKBggqhkjOPQQDAjBQMSQwIgYDVQQLExtHbG9i
+YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds
+b2JhbFNpZ24wHhcNMTIxMTEzMDAwMDAwWhcNMzgwMTE5MDMxNDA3WjBQMSQwIgYDVQQLExtHbG9i
+YWxTaWduIEVDQyBSb290IENBIC0gUjQxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkds
+b2JhbFNpZ24wWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAAS4xnnTj2wlDp8uORkcA6SumuU5BwkW
+ymOxuYb4ilfBV85C+nOh92VC/x7BALJucw7/xyHlGKSq2XE/qNS5zowdo0IwQDAOBgNVHQ8BAf8E
+BAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVLB7rUW44kB/+wpu+74zyTyjhNUwCgYI
+KoZIzj0EAwIDRwAwRAIgIk90crlgr/HmnKAWBVBfw147bmF0774BxL4YSFlhgjICICadVGNA3jdg
+UM/I2O2dgq43mLyjj0xMqTQrbO/7lZsm
+-----END CERTIFICATE-----
+
+GTS Root R1
+===========
+-----BEGIN CERTIFICATE-----
+MIIFVzCCAz+gAwIBAgINAgPlk28xsBNJiGuiFzANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV
+UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
+UjEwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
+ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjEwggIiMA0G
+CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2EQKLHuOhd5s73L+UPreVp0A8of2C+X0yBoJx9vaM
+f/vo27xqLpeXo4xL+Sv2sfnOhB2x+cWX3u+58qPpvBKJXqeqUqv4IyfLpLGcY9vXmX7wCl7raKb0
+xlpHDU0QM+NOsROjyBhsS+z8CZDfnWQpJSMHobTSPS5g4M/SCYe7zUjwTcLCeoiKu7rPWRnWr4+w
+B7CeMfGCwcDfLqZtbBkOtdh+JhpFAz2weaSUKK0PfyblqAj+lug8aJRT7oM6iCsVlgmy4HqMLnXW
+nOunVmSPlk9orj2XwoSPwLxAwAtcvfaHszVsrBhQf4TgTM2S0yDpM7xSma8ytSmzJSq0SPly4cpk
+9+aCEI3oncKKiPo4Zor8Y/kB+Xj9e1x3+naH+uzfsQ55lVe0vSbv1gHR6xYKu44LtcXFilWr06zq
+kUspzBmkMiVOKvFlRNACzqrOSbTqn3yDsEB750Orp2yjj32JgfpMpf/VjsPOS+C12LOORc92wO1A
+K/1TD7Cn1TsNsYqiA94xrcx36m97PtbfkSIS5r762DL8EGMUUXLeXdYWk70paDPvOmbsB4om3xPX
+V2V4J95eSRQAogB/mqghtqmxlbCluQ0WEdrHbEg8QOB+DVrNVjzRlwW5y0vtOUucxD/SVRNuJLDW
+cfr0wbrM7Rv1/oFB2ACYPTrIrnqYNxgFlQIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T
+AQH/BAUwAwEB/zAdBgNVHQ4EFgQU5K8rJnEaK0gnhS9SZizv8IkTcT4wDQYJKoZIhvcNAQEMBQAD
+ggIBAJ+qQibbC5u+/x6Wki4+omVKapi6Ist9wTrYggoGxval3sBOh2Z5ofmmWJyq+bXmYOfg6LEe
+QkEzCzc9zolwFcq1JKjPa7XSQCGYzyI0zzvFIoTgxQ6KfF2I5DUkzps+GlQebtuyh6f88/qBVRRi
+ClmpIgUxPoLW7ttXNLwzldMXG+gnoot7TiYaelpkttGsN/H9oPM47HLwEXWdyzRSjeZ2axfG34ar
+J45JK3VmgRAhpuo+9K4l/3wV3s6MJT/KYnAK9y8JZgfIPxz88NtFMN9iiMG1D53Dn0reWVlHxYci
+NuaCp+0KueIHoI17eko8cdLiA6EfMgfdG+RCzgwARWGAtQsgWSl4vflVy2PFPEz0tv/bal8xa5me
+LMFrUKTX5hgUvYU/Z6tGn6D/Qqc6f1zLXbBwHSs09dR2CQzreExZBfMzQsNhFRAbd03OIozUhfJF
+fbdT6u9AWpQKXCBfTkBdYiJ23//OYb2MI3jSNwLgjt7RETeJ9r/tSQdirpLsQBqvFAnZ0E6yove+
+7u7Y/9waLd64NnHi/Hm3lCXRSHNboTXns5lndcEZOitHTtNCjv0xyBZm2tIMPNuzjsmhDYAPexZ3
+FL//2wmUspO8IFgV6dtxQ/PeEMMA3KgqlbbC1j+Qa3bbbP6MvPJwNQzcmRk13NfIRmPVNnGuV/u3
+gm3c
+-----END CERTIFICATE-----
+
+GTS Root R2
+===========
+-----BEGIN CERTIFICATE-----
+MIIFVzCCAz+gAwIBAgINAgPlrsWNBCUaqxElqjANBgkqhkiG9w0BAQwFADBHMQswCQYDVQQGEwJV
+UzEiMCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3Qg
+UjIwHhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UE
+ChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjIwggIiMA0G
+CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDO3v2m++zsFDQ8BwZabFn3GTXd98GdVarTzTukk3Lv
+CvptnfbwhYBboUhSnznFt+4orO/LdmgUud+tAWyZH8QiHZ/+cnfgLFuv5AS/T3KgGjSY6Dlo7JUl
+e3ah5mm5hRm9iYz+re026nO8/4Piy33B0s5Ks40FnotJk9/BW9BuXvAuMC6C/Pq8tBcKSOWIm8Wb
+a96wyrQD8Nr0kLhlZPdcTK3ofmZemde4wj7I0BOdre7kRXuJVfeKH2JShBKzwkCX44ofR5GmdFrS
++LFjKBC4swm4VndAoiaYecb+3yXuPuWgf9RhD1FLPD+M2uFwdNjCaKH5wQzpoeJ/u1U8dgbuak7M
+kogwTZq9TwtImoS1mKPV+3PBV2HdKFZ1E66HjucMUQkQdYhMvI35ezzUIkgfKtzra7tEscszcTJG
+r61K8YzodDqs5xoic4DSMPclQsciOzsSrZYuxsN2B6ogtzVJV+mSSeh2FnIxZyuWfoqjx5RWIr9q
+S34BIbIjMt/kmkRtWVtd9QCgHJvGeJeNkP+byKq0rxFROV7Z+2et1VsRnTKaG73VululycslaVNV
+J1zgyjbLiGH7HrfQy+4W+9OmTN6SpdTi3/UGVN4unUu0kzCqgc7dGtxRcw1PcOnlthYhGXmy5okL
+dWTK1au8CcEYof/UVKGFPP0UJAOyh9OktwIDAQABo0IwQDAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T
+AQH/BAUwAwEB/zAdBgNVHQ4EFgQUu//KjiOfT5nK2+JopqUVJxce2Q4wDQYJKoZIhvcNAQEMBQAD
+ggIBAB/Kzt3HvqGf2SdMC9wXmBFqiN495nFWcrKeGk6c1SuYJF2ba3uwM4IJvd8lRuqYnrYb/oM8
+0mJhwQTtzuDFycgTE1XnqGOtjHsB/ncw4c5omwX4Eu55MaBBRTUoCnGkJE+M3DyCB19m3H0Q/gxh
+swWV7uGugQ+o+MePTagjAiZrHYNSVc61LwDKgEDg4XSsYPWHgJ2uNmSRXbBoGOqKYcl3qJfEycel
+/FVL8/B/uWU9J2jQzGv6U53hkRrJXRqWbTKH7QMgyALOWr7Z6v2yTcQvG99fevX4i8buMTolUVVn
+jWQye+mew4K6Ki3pHrTgSAai/GevHyICc/sgCq+dVEuhzf9gR7A/Xe8bVr2XIZYtCtFenTgCR2y5
+9PYjJbigapordwj6xLEokCZYCDzifqrXPW+6MYgKBesntaFJ7qBFVHvmJ2WZICGoo7z7GJa7Um8M
+7YNRTOlZ4iBgxcJlkoKM8xAfDoqXvneCbT+PHV28SSe9zE8P4c52hgQjxcCMElv924SgJPFI/2R8
+0L5cFtHvma3AH/vLrrw4IgYmZNralw4/KBVEqE8AyvCazM90arQ+POuV7LXTWtiBmelDGDfrs7vR
+WGJB82bSj6p4lVQgw1oudCvV0b4YacCs1aTPObpRhANl6WLAYv7YTVWW4tAR+kg0Eeye7QUd5MjW
+HYbL
+-----END CERTIFICATE-----
+
+GTS Root R3
+===========
+-----BEGIN CERTIFICATE-----
+MIICCTCCAY6gAwIBAgINAgPluILrIPglJ209ZjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi
+MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMw
+HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ
+R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjMwdjAQBgcqhkjO
+PQIBBgUrgQQAIgNiAAQfTzOHMymKoYTey8chWEGJ6ladK0uFxh1MJ7x/JlFyb+Kf1qPKzEUURout
+736GjOyxfi//qXGdGIRFBEFVbivqJn+7kAHjSxm65FSWRQmx1WyRRK2EE46ajA2ADDL24CejQjBA
+MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTB8Sa6oC2uhYHP0/Eq
+Er24Cmf9vDAKBggqhkjOPQQDAwNpADBmAjEA9uEglRR7VKOQFhG/hMjqb2sXnh5GmCCbn9MN2azT
+L818+FsuVbu/3ZL3pAzcMeGiAjEA/JdmZuVDFhOD3cffL74UOO0BzrEXGhF16b0DjyZ+hOXJYKaV
+11RZt+cRLInUue4X
+-----END CERTIFICATE-----
+
+GTS Root R4
+===========
+-----BEGIN CERTIFICATE-----
+MIICCTCCAY6gAwIBAgINAgPlwGjvYxqccpBQUjAKBggqhkjOPQQDAzBHMQswCQYDVQQGEwJVUzEi
+MCAGA1UEChMZR29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQw
+HhcNMTYwNjIyMDAwMDAwWhcNMzYwNjIyMDAwMDAwWjBHMQswCQYDVQQGEwJVUzEiMCAGA1UEChMZ
+R29vZ2xlIFRydXN0IFNlcnZpY2VzIExMQzEUMBIGA1UEAxMLR1RTIFJvb3QgUjQwdjAQBgcqhkjO
+PQIBBgUrgQQAIgNiAATzdHOnaItgrkO4NcWBMHtLSZ37wWHO5t5GvWvVYRg1rkDdc/eJkTBa6zzu
+hXyiQHY7qca4R9gq55KRanPpsXI5nymfopjTX15YhmUPoYRlBtHci8nHc8iMai/lxKvRHYqjQjBA
+MA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSATNbrdP9JNqPV2Py1
+PsVq8JQdjDAKBggqhkjOPQQDAwNpADBmAjEA6ED/g94D9J+uHXqnLrmvT/aDHQ4thQEd0dlq7A/C
+r8deVl5c1RxYIigL9zC2L7F8AjEA8GE8p/SgguMh1YQdc4acLa/KNJvxn7kjNuK8YAOdgLOaVsjh
+4rsUecrNIdSUtUlD
+-----END CERTIFICATE-----
+
+Telia Root CA v2
+================
+-----BEGIN CERTIFICATE-----
+MIIFdDCCA1ygAwIBAgIPAWdfJ9b+euPkrL4JWwWeMA0GCSqGSIb3DQEBCwUAMEQxCzAJBgNVBAYT
+AkZJMRowGAYDVQQKDBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2
+MjAeFw0xODExMjkxMTU1NTRaFw00MzExMjkxMTU1NTRaMEQxCzAJBgNVBAYTAkZJMRowGAYDVQQK
+DBFUZWxpYSBGaW5sYW5kIE95ajEZMBcGA1UEAwwQVGVsaWEgUm9vdCBDQSB2MjCCAiIwDQYJKoZI
+hvcNAQEBBQADggIPADCCAgoCggIBALLQPwe84nvQa5n44ndp586dpAO8gm2h/oFlH0wnrI4AuhZ7
+6zBqAMCzdGh+sq/H1WKzej9Qyow2RCRj0jbpDIX2Q3bVTKFgcmfiKDOlyzG4OiIjNLh9vVYiQJ3q
+9HsDrWj8soFPmNB06o3lfc1jw6P23pLCWBnglrvFxKk9pXSW/q/5iaq9lRdU2HhE8Qx3FZLgmEKn
+pNaqIJLNwaCzlrI6hEKNfdWV5Nbb6WLEWLN5xYzTNTODn3WhUidhOPFZPY5Q4L15POdslv5e2QJl
+tI5c0BE0312/UqeBAMN/mUWZFdUXyApT7GPzmX3MaRKGwhfwAZ6/hLzRUssbkmbOpFPlob/E2wnW
+5olWK8jjfN7j/4nlNW4o6GwLI1GpJQXrSPjdscr6bAhR77cYbETKJuFzxokGgeWKrLDiKca5JLNr
+RBH0pUPCTEPlcDaMtjNXepUugqD0XBCzYYP2AgWGLnwtbNwDRm41k9V6lS/eINhbfpSQBGq6WT0E
+BXWdN6IOLj3rwaRSg/7Qa9RmjtzG6RJOHSpXqhC8fF6CfaamyfItufUXJ63RDolUK5X6wK0dmBR4
+M0KGCqlztft0DbcbMBnEWg4cJ7faGND/isgFuvGqHKI3t+ZIpEYslOqodmJHixBTB0hXbOKSTbau
+BcvcwUpej6w9GU7C7WB1K9vBykLVAgMBAAGjYzBhMB8GA1UdIwQYMBaAFHKs5DN5qkWH9v2sHZ7W
+xy+G2CQ5MB0GA1UdDgQWBBRyrOQzeapFh/b9rB2e1scvhtgkOTAOBgNVHQ8BAf8EBAMCAQYwDwYD
+VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAoDtZpwmUPjaE0n4vOaWWl/oRrfxn83EJ
+8rKJhGdEr7nv7ZbsnGTbMjBvZ5qsfl+yqwE2foH65IRe0qw24GtixX1LDoJt0nZi0f6X+J8wfBj5
+tFJ3gh1229MdqfDBmgC9bXXYfef6xzijnHDoRnkDry5023X4blMMA8iZGok1GTzTyVR8qPAs5m4H
+eW9q4ebqkYJpCh3DflminmtGFZhb069GHWLIzoBSSRE/yQQSwxN8PzuKlts8oB4KtItUsiRnDe+C
+y748fdHif64W1lZYudogsYMVoe+KTTJvQS8TUoKU1xrBeKJR3Stwbbca+few4GeXVtt8YVMJAygC
+QMez2P2ccGrGKMOF6eLtGpOg3kuYooQ+BXcBlj37tCAPnHICehIv1aO6UXivKitEZU61/Qrowc15
+h2Er3oBXRb9n8ZuRXqWk7FlIEA04x7D6w0RtBPV4UBySllva9bguulvP5fBqnUsvWHMtTy3EHD70
+sz+rFQ47GUGKpMFXEmZxTPpT41frYpUJnlTd0cI8Vzy9OK2YZLe4A5pTVmBds9hCG1xLEooc6+t9
+xnppxyd/pPiL8uSUZodL6ZQHCRJ5irLrdATczvREWeAWysUsWNc8e89ihmpQfTU2Zqf7N+cox9jQ
+raVplI/owd8k+BsHMYeB2F326CjYSlKArBPuUBQemMc=
+-----END CERTIFICATE-----
+
+D-TRUST BR Root CA 1 2020
+=========================
+-----BEGIN CERTIFICATE-----
+MIIC2zCCAmCgAwIBAgIQfMmPK4TX3+oPyWWa00tNljAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE
+RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEJSIFJvb3QgQ0EgMSAy
+MDIwMB4XDTIwMDIxMTA5NDUwMFoXDTM1MDIxMTA5NDQ1OVowSDELMAkGA1UEBhMCREUxFTATBgNV
+BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBCUiBSb290IENBIDEgMjAyMDB2MBAG
+ByqGSM49AgEGBSuBBAAiA2IABMbLxyjR+4T1mu9CFCDhQ2tuda38KwOE1HaTJddZO0Flax7mNCq7
+dPYSzuht56vkPE4/RAiLzRZxy7+SmfSk1zxQVFKQhYN4lGdnoxwJGT11NIXe7WB9xwy0QVK5buXu
+QqOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFHOREKv/VbNafAkl1bK6CKBrqx9t
+MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu
+bmV0L2NybC9kLXRydXN0X2JyX3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj
+dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwQlIlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP
+PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD
+AwNpADBmAjEAlJAtE/rhY/hhY+ithXhUkZy4kzg+GkHaQBZTQgjKL47xPoFWwKrY7RjEsK70Pvom
+AjEA8yjixtsrmfu3Ubgko6SUeho/5jbiA1czijDLgsfWFBHVdWNbFJWcHwHP2NVypw87
+-----END CERTIFICATE-----
+
+D-TRUST EV Root CA 1 2020
+=========================
+-----BEGIN CERTIFICATE-----
+MIIC2zCCAmCgAwIBAgIQXwJB13qHfEwDo6yWjfv/0DAKBggqhkjOPQQDAzBIMQswCQYDVQQGEwJE
+RTEVMBMGA1UEChMMRC1UcnVzdCBHbWJIMSIwIAYDVQQDExlELVRSVVNUIEVWIFJvb3QgQ0EgMSAy
+MDIwMB4XDTIwMDIxMTEwMDAwMFoXDTM1MDIxMTA5NTk1OVowSDELMAkGA1UEBhMCREUxFTATBgNV
+BAoTDEQtVHJ1c3QgR21iSDEiMCAGA1UEAxMZRC1UUlVTVCBFViBSb290IENBIDEgMjAyMDB2MBAG
+ByqGSM49AgEGBSuBBAAiA2IABPEL3YZDIBnfl4XoIkqbz52Yv7QFJsnL46bSj8WeeHsxiamJrSc8
+ZRCC/N/DnU7wMyPE0jL1HLDfMxddxfCxivnvubcUyilKwg+pf3VlSSowZ/Rk99Yad9rDwpdhQntJ
+raOCAQ0wggEJMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFH8QARY3OqQo5FD4pPfsazK2/umL
+MA4GA1UdDwEB/wQEAwIBBjCBxgYDVR0fBIG+MIG7MD6gPKA6hjhodHRwOi8vY3JsLmQtdHJ1c3Qu
+bmV0L2NybC9kLXRydXN0X2V2X3Jvb3RfY2FfMV8yMDIwLmNybDB5oHegdYZzbGRhcDovL2RpcmVj
+dG9yeS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwRVYlMjBSb290JTIwQ0ElMjAxJTIwMjAyMCxP
+PUQtVHJ1c3QlMjBHbWJILEM9REU/Y2VydGlmaWNhdGVyZXZvY2F0aW9ubGlzdDAKBggqhkjOPQQD
+AwNpADBmAjEAyjzGKnXCXnViOTYAYFqLwZOZzNnbQTs7h5kXO9XMT8oi96CAy/m0sRtW9XLS/BnR
+AjEAkfcwkz8QRitxpNA7RJvAKQIFskF3UfN5Wp6OFKBOQtJbgfM0agPnIjhQW+0ZT0MW
+-----END CERTIFICATE-----
+
+DigiCert TLS ECC P384 Root G5
+=============================
+-----BEGIN CERTIFICATE-----
+MIICGTCCAZ+gAwIBAgIQCeCTZaz32ci5PhwLBCou8zAKBggqhkjOPQQDAzBOMQswCQYDVQQGEwJV
+UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJjAkBgNVBAMTHURpZ2lDZXJ0IFRMUyBFQ0MgUDM4
+NCBSb290IEc1MB4XDTIxMDExNTAwMDAwMFoXDTQ2MDExNDIzNTk1OVowTjELMAkGA1UEBhMCVVMx
+FzAVBgNVBAoTDkRpZ2lDZXJ0LCBJbmMuMSYwJAYDVQQDEx1EaWdpQ2VydCBUTFMgRUNDIFAzODQg
+Um9vdCBHNTB2MBAGByqGSM49AgEGBSuBBAAiA2IABMFEoc8Rl1Ca3iOCNQfN0MsYndLxf3c1Tzvd
+lHJS7cI7+Oz6e2tYIOyZrsn8aLN1udsJ7MgT9U7GCh1mMEy7H0cKPGEQQil8pQgO4CLp0zVozptj
+n4S1mU1YoI71VOeVyaNCMEAwHQYDVR0OBBYEFMFRRVBZqz7nLFr6ICISB4CIfBFqMA4GA1UdDwEB
+/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MAoGCCqGSM49BAMDA2gAMGUCMQCJao1H5+z8blUD2Wds
+Jk6Dxv3J+ysTvLd6jLRl0mlpYxNjOyZQLgGheQaRnUi/wr4CMEfDFXuxoJGZSZOoPHzoRgaLLPIx
+AJSdYsiJvRmEFOml+wG4DXZDjC5Ty3zfDBeWUA==
+-----END CERTIFICATE-----
+
+DigiCert TLS RSA4096 Root G5
+============================
+-----BEGIN CERTIFICATE-----
+MIIFZjCCA06gAwIBAgIQCPm0eKj6ftpqMzeJ3nzPijANBgkqhkiG9w0BAQwFADBNMQswCQYDVQQG
+EwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0
+MDk2IFJvb3QgRzUwHhcNMjEwMTE1MDAwMDAwWhcNNDYwMTE0MjM1OTU5WjBNMQswCQYDVQQGEwJV
+UzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xJTAjBgNVBAMTHERpZ2lDZXJ0IFRMUyBSU0E0MDk2
+IFJvb3QgRzUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCz0PTJeRGd/fxmgefM1eS8
+7IE+ajWOLrfn3q/5B03PMJ3qCQuZvWxX2hhKuHisOjmopkisLnLlvevxGs3npAOpPxG02C+JFvuU
+AT27L/gTBaF4HI4o4EXgg/RZG5Wzrn4DReW+wkL+7vI8toUTmDKdFqgpwgscONyfMXdcvyej/Ces
+tyu9dJsXLfKB2l2w4SMXPohKEiPQ6s+d3gMXsUJKoBZMpG2T6T867jp8nVid9E6P/DsjyG244gXa
+zOvswzH016cpVIDPRFtMbzCe88zdH5RDnU1/cHAN1DrRN/BsnZvAFJNY781BOHW8EwOVfH/jXOnV
+DdXifBBiqmvwPXbzP6PosMH976pXTayGpxi0KcEsDr9kvimM2AItzVwv8n/vFfQMFawKsPHTDU9q
+TXeXAaDxZre3zu/O7Oyldcqs4+Fj97ihBMi8ez9dLRYiVu1ISf6nL3kwJZu6ay0/nTvEF+cdLvvy
+z6b84xQslpghjLSR6Rlgg/IwKwZzUNWYOwbpx4oMYIwo+FKbbuH2TbsGJJvXKyY//SovcfXWJL5/
+MZ4PbeiPT02jP/816t9JXkGPhvnxd3lLG7SjXi/7RgLQZhNeXoVPzthwiHvOAbWWl9fNff2C+MIk
+wcoBOU+NosEUQB+cZtUMCUbW8tDRSHZWOkPLtgoRObqME2wGtZ7P6wIDAQABo0IwQDAdBgNVHQ4E
+FgQUUTMc7TZArxfTJc1paPKvTiM+s0EwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8w
+DQYJKoZIhvcNAQEMBQADggIBAGCmr1tfV9qJ20tQqcQjNSH/0GEwhJG3PxDPJY7Jv0Y02cEhJhxw
+GXIeo8mH/qlDZJY6yFMECrZBu8RHANmfGBg7sg7zNOok992vIGCukihfNudd5N7HPNtQOa27PShN
+lnx2xlv0wdsUpasZYgcYQF+Xkdycx6u1UQ3maVNVzDl92sURVXLFO4uJ+DQtpBflF+aZfTCIITfN
+MBc9uPK8qHWgQ9w+iUuQrm0D4ByjoJYJu32jtyoQREtGBzRj7TG5BO6jm5qu5jF49OokYTurWGT/
+u4cnYiWB39yhL/btp/96j1EuMPikAdKFOV8BmZZvWltwGUb+hmA+rYAQCd05JS9Yf7vSdPD3Rh9G
+OUrYU9DzLjtxpdRv/PNn5AeP3SYZ4Y1b+qOTEZvpyDrDVWiakuFSdjjo4bq9+0/V77PnSIMx8IIh
+47a+p6tv75/fTM8BuGJqIz3nCU2AG3swpMPdB380vqQmsvZB6Akd4yCYqjdP//fx4ilwMUc/dNAU
+FvohigLVigmUdy7yWSiLfFCSCmZ4OIN1xLVaqBHG5cGdZlXPU8Sv13WFqUITVuwhd4GTWgzqltlJ
+yqEI8pc7bZsEGCREjnwB8twl2F6GmrE52/WRMmrRpnCKovfepEWFJqgejF0pW8hL2JpqA15w8oVP
+bEtoL8pU9ozaMv7Da4M/OMZ+
+-----END CERTIFICATE-----
+
+Certainly Root R1
+=================
+-----BEGIN CERTIFICATE-----
+MIIFRzCCAy+gAwIBAgIRAI4P+UuQcWhlM1T01EQ5t+AwDQYJKoZIhvcNAQELBQAwPTELMAkGA1UE
+BhMCVVMxEjAQBgNVBAoTCUNlcnRhaW5seTEaMBgGA1UEAxMRQ2VydGFpbmx5IFJvb3QgUjEwHhcN
+MjEwNDAxMDAwMDAwWhcNNDYwNDAxMDAwMDAwWjA9MQswCQYDVQQGEwJVUzESMBAGA1UEChMJQ2Vy
+dGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBSMTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
+ADCCAgoCggIBANA21B/q3avk0bbm+yLA3RMNansiExyXPGhjZjKcA7WNpIGD2ngwEc/csiu+kr+O
+5MQTvqRoTNoCaBZ0vrLdBORrKt03H2As2/X3oXyVtwxwhi7xOu9S98zTm/mLvg7fMbedaFySpvXl
+8wo0tf97ouSHocavFwDvA5HtqRxOcT3Si2yJ9HiG5mpJoM610rCrm/b01C7jcvk2xusVtyWMOvwl
+DbMicyF0yEqWYZL1LwsYpfSt4u5BvQF5+paMjRcCMLT5r3gajLQ2EBAHBXDQ9DGQilHFhiZ5shGI
+XsXwClTNSaa/ApzSRKft43jvRl5tcdF5cBxGX1HpyTfcX35pe0HfNEXgO4T0oYoKNp43zGJS4YkN
+KPl6I7ENPT2a/Z2B7yyQwHtETrtJ4A5KVpK8y7XdeReJkd5hiXSSqOMyhb5OhaRLWcsrxXiOcVTQ
+AjeZjOVJ6uBUcqQRBi8LjMFbvrWhsFNunLhgkR9Za/kt9JQKl7XsxXYDVBtlUrpMklZRNaBA2Cnb
+rlJ2Oy0wQJuK0EJWtLeIAaSHO1OWzaMWj/Nmqhexx2DgwUMFDO6bW2BvBlyHWyf5QBGenDPBt+U1
+VwV/J84XIIwc/PH72jEpSe31C4SnT8H2TsIonPru4K8H+zMReiFPCyEQtkA6qyI6BJyLm4SGcprS
+p6XEtHWRqSsjAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
+DgQWBBTgqj8ljZ9EXME66C6ud0yEPmcM9DANBgkqhkiG9w0BAQsFAAOCAgEAuVevuBLaV4OPaAsz
+HQNTVfSVcOQrPbA56/qJYv331hgELyE03fFo8NWWWt7CgKPBjcZq91l3rhVkz1t5BXdm6ozTaw3d
+8VkswTOlMIAVRQdFGjEitpIAq5lNOo93r6kiyi9jyhXWx8bwPWz8HA2YEGGeEaIi1wrykXprOQ4v
+MMM2SZ/g6Q8CRFA3lFV96p/2O7qUpUzpvD5RtOjKkjZUbVwlKNrdrRT90+7iIgXr0PK3aBLXWopB
+GsaSpVo7Y0VPv+E6dyIvXL9G+VoDhRNCX8reU9ditaY1BMJH/5n9hN9czulegChB8n3nHpDYT3Y+
+gjwN/KUD+nsa2UUeYNrEjvn8K8l7lcUq/6qJ34IxD3L/DCfXCh5WAFAeDJDBlrXYFIW7pw0WwfgH
+JBu6haEaBQmAupVjyTrsJZ9/nbqkRxWbRHDxakvWOF5D8xh+UG7pWijmZeZ3Gzr9Hb4DJqPb1OG7
+fpYnKx3upPvaJVQTA945xsMfTZDsjxtK0hzthZU4UHlG1sGQUDGpXJpuHfUzVounmdLyyCwzk5Iw
+x06MZTMQZBf9JBeW0Y3COmor6xOLRPIh80oat3df1+2IpHLlOR+Vnb5nwXARPbv0+Em34yaXOp/S
+X3z7wJl8OSngex2/DaeP0ik0biQVy96QXr8axGbqwua6OV+KmalBWQewLK8=
+-----END CERTIFICATE-----
+
+Certainly Root E1
+=================
+-----BEGIN CERTIFICATE-----
+MIIB9zCCAX2gAwIBAgIQBiUzsUcDMydc+Y2aub/M+DAKBggqhkjOPQQDAzA9MQswCQYDVQQGEwJV
+UzESMBAGA1UEChMJQ2VydGFpbmx5MRowGAYDVQQDExFDZXJ0YWlubHkgUm9vdCBFMTAeFw0yMTA0
+MDEwMDAwMDBaFw00NjA0MDEwMDAwMDBaMD0xCzAJBgNVBAYTAlVTMRIwEAYDVQQKEwlDZXJ0YWlu
+bHkxGjAYBgNVBAMTEUNlcnRhaW5seSBSb290IEUxMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAE3m/4
+fxzf7flHh4axpMCK+IKXgOqPyEpeKn2IaKcBYhSRJHpcnqMXfYqGITQYUBsQ3tA3SybHGWCA6TS9
+YBk2QNYphwk8kXr2vBMj3VlOBF7PyAIcGFPBMdjaIOlEjeR2o0IwQDAOBgNVHQ8BAf8EBAMCAQYw
+DwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU8ygYy2R17ikq6+2uI1g4hevIIgcwCgYIKoZIzj0E
+AwMDaAAwZQIxALGOWiDDshliTd6wT99u0nCK8Z9+aozmut6Dacpps6kFtZaSF4fC0urQe87YQVt8
+rgIwRt7qy12a7DLCZRawTDBcMPPaTnOGBtjOiQRINzf43TNRnXCve1XYAS59BWQOhriR
+-----END CERTIFICATE-----
+
+Security Communication RootCA3
+==============================
+-----BEGIN CERTIFICATE-----
+MIIFfzCCA2egAwIBAgIJAOF8N0D9G/5nMA0GCSqGSIb3DQEBDAUAMF0xCzAJBgNVBAYTAkpQMSUw
+IwYDVQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMScwJQYDVQQDEx5TZWN1cml0eSBD
+b21tdW5pY2F0aW9uIFJvb3RDQTMwHhcNMTYwNjE2MDYxNzE2WhcNMzgwMTE4MDYxNzE2WjBdMQsw
+CQYDVQQGEwJKUDElMCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UE
+AxMeU2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBSb290Q0EzMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
+MIICCgKCAgEA48lySfcw3gl8qUCBWNO0Ot26YQ+TUG5pPDXC7ltzkBtnTCHsXzW7OT4rCmDvu20r
+hvtxosis5FaU+cmvsXLUIKx00rgVrVH+hXShuRD+BYD5UpOzQD11EKzAlrenfna84xtSGc4RHwsE
+NPXY9Wk8d/Nk9A2qhd7gCVAEF5aEt8iKvE1y/By7z/MGTfmfZPd+pmaGNXHIEYBMwXFAWB6+oHP2
+/D5Q4eAvJj1+XCO1eXDe+uDRpdYMQXF79+qMHIjH7Iv10S9VlkZ8WjtYO/u62C21Jdp6Ts9EriGm
+npjKIG58u4iFW/vAEGK78vknR+/RiTlDxN/e4UG/VHMgly1s2vPUB6PmudhvrvyMGS7TZ2crldtY
+XLVqAvO4g160a75BflcJdURQVc1aEWEhCmHCqYj9E7wtiS/NYeCVvsq1e+F7NGcLH7YMx3weGVPK
+p7FKFSBWFHA9K4IsD50VHUeAR/94mQ4xr28+j+2GaR57GIgUssL8gjMunEst+3A7caoreyYn8xrC
+3PsXuKHqy6C0rtOUfnrQq8PsOC0RLoi/1D+tEjtCrI8Cbn3M0V9hvqG8OmpI6iZVIhZdXw3/JzOf
+GAN0iltSIEdrRU0id4xVJ/CvHozJgyJUt5rQT9nO/NkuHJYosQLTA70lUhw0Zk8jq/R3gpYd0Vcw
+CBEF/VfR2ccCAwEAAaNCMEAwHQYDVR0OBBYEFGQUfPxYchamCik0FW8qy7z8r6irMA4GA1UdDwEB
+/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBDAUAA4ICAQDcAiMI4u8hOscNtybS
+YpOnpSNyByCCYN8Y11StaSWSntkUz5m5UoHPrmyKO1o5yGwBQ8IibQLwYs1OY0PAFNr0Y/Dq9HHu
+Tofjcan0yVflLl8cebsjqodEV+m9NU1Bu0soo5iyG9kLFwfl9+qd9XbXv8S2gVj/yP9kaWJ5rW4O
+H3/uHWnlt3Jxs/6lATWUVCvAUm2PVcTJ0rjLyjQIUYWg9by0F1jqClx6vWPGOi//lkkZhOpn2ASx
+YfQAW0q3nHE3GYV5v4GwxxMOdnE+OoAGrgYWp421wsTL/0ClXI2lyTrtcoHKXJg80jQDdwj98ClZ
+XSEIx2C/pHF7uNkegr4Jr2VvKKu/S7XuPghHJ6APbw+LP6yVGPO5DtxnVW5inkYO0QR4ynKudtml
++LLfiAlhi+8kTtFZP1rUPcmTPCtk9YENFpb3ksP+MW/oKjJ0DvRMmEoYDjBU1cXrvMUVnuiZIesn
+KwkK2/HmcBhWuwzkvvnoEKQTkrgc4NtnHVMDpCKn3F2SEDzq//wbEBrD2NCcnWXL0CsnMQMeNuE9
+dnUM/0Umud1RvCPHX9jYhxBAEg09ODfnRDwYwFMJZI//1ZqmfHAuc1Uh6N//g7kdPjIe1qZ9LPFm
+6Vwdp6POXiUyK+OVrCoHzrQoeIY8LaadTdJ0MN1kURXbg4NR16/9M51NZg==
+-----END CERTIFICATE-----
+
+Security Communication ECC RootCA1
+==================================
+-----BEGIN CERTIFICATE-----
+MIICODCCAb6gAwIBAgIJANZdm7N4gS7rMAoGCCqGSM49BAMDMGExCzAJBgNVBAYTAkpQMSUwIwYD
+VQQKExxTRUNPTSBUcnVzdCBTeXN0ZW1zIENPLixMVEQuMSswKQYDVQQDEyJTZWN1cml0eSBDb21t
+dW5pY2F0aW9uIEVDQyBSb290Q0ExMB4XDTE2MDYxNjA1MTUyOFoXDTM4MDExODA1MTUyOFowYTEL
+MAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKzApBgNV
+BAMTIlNlY3VyaXR5IENvbW11bmljYXRpb24gRUNDIFJvb3RDQTEwdjAQBgcqhkjOPQIBBgUrgQQA
+IgNiAASkpW9gAwPDvTH00xecK4R1rOX9PVdu12O/5gSJko6BnOPpR27KkBLIE+CnnfdldB9sELLo
+5OnvbYUymUSxXv3MdhDYW72ixvnWQuRXdtyQwjWpS4g8EkdtXP9JTxpKULGjQjBAMB0GA1UdDgQW
+BBSGHOf+LaVKiwj+KBH6vqNm+GBZLzAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAK
+BggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3L
+snNdo4gIxwwCMQDAqy0Obe0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70e
+N9k=
+-----END CERTIFICATE-----
+
+BJCA Global Root CA1
+====================
+-----BEGIN CERTIFICATE-----
+MIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBUMQswCQYDVQQG
+EwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJVFkxHTAbBgNVBAMMFEJK
+Q0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAzMTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkG
+A1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQD
+DBRCSkNBIEdsb2JhbCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFm
+CL3ZxRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZspDyRhyS
+sTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O558dnJCNPYwpj9mZ9S1Wn
+P3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgRat7GGPZHOiJBhyL8xIkoVNiMpTAK+BcW
+yqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRj
+eulumijWML3mG90Vr4TqnMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNn
+MoH1V6XKV0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/pj+b
+OT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZOz2nxbkRs1CTqjSSh
+GL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXnjSXWgXSHRtQpdaJCbPdzied9v3pK
+H9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMB
+AAGjQjBAMB0GA1UdDgQWBBTF7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4G
+A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4
+YRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3KliawLwQ8hOnThJ
+dMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u+2D2/VnGKhs/I0qUJDAnyIm8
+60Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuh
+TaRjAv04l5U/BXCga99igUOLtFkNSoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW
+4AB+dAb/OMRyHdOoP2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmp
+GQrI+pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRzznfSxqxx
+4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9eVzYH6Eze9mCUAyTF6ps
+3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4S
+SPfSKcOYKMryMguTjClPPGAyzQWWYezyr/6zcCwupvI=
+-----END CERTIFICATE-----
+
+BJCA Global Root CA2
+====================
+-----BEGIN CERTIFICATE-----
+MIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQswCQYDVQQGEwJD
+TjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJVFkxHTAbBgNVBAMMFEJKQ0Eg
+R2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgyMVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UE
+BhMCQ04xJjAkBgNVBAoMHUJFSUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRC
+SkNBIEdsb2JhbCBSb290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jl
+SR9BIgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK++kpRuDCK
+/eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJKsVF/BvDRgh9Obl+rg/xI
+1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8
+W9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8g
+UXOQwKhbYdDFUDn9hf7B43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w==
+-----END CERTIFICATE-----
+
+Sectigo Public Server Authentication Root E46
+=============================================
+-----BEGIN CERTIFICATE-----
+MIICOjCCAcGgAwIBAgIQQvLM2htpN0RfFf51KBC49DAKBggqhkjOPQQDAzBfMQswCQYDVQQGEwJH
+QjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBTZXJ2
+ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwHhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1OTU5
+WjBfMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0
+aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBFNDYwdjAQBgcqhkjOPQIBBgUr
+gQQAIgNiAAR2+pmpbiDt+dd34wc7qNs9Xzjoq1WmVk/WSOrsfy2qw7LFeeyZYX8QeccCWvkEN/U0
+NSt3zn8gj1KjAIns1aeibVvjS5KToID1AZTc8GgHHs3u/iVStSBDHBv+6xnOQ6OjQjBAMB0GA1Ud
+DgQWBBTRItpMWfFLXyY4qp3W7usNw/upYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB
+/zAKBggqhkjOPQQDAwNnADBkAjAn7qRaqCG76UeXlImldCBteU/IvZNeWBj7LRoAasm4PdCkT0RH
+lAFWovgzJQxC36oCMB3q4S6ILuH5px0CMk7yn2xVdOOurvulGu7t0vzCAxHrRVxgED1cf5kDW21U
+SAGKcw==
+-----END CERTIFICATE-----
+
+Sectigo Public Server Authentication Root R46
+=============================================
+-----BEGIN CERTIFICATE-----
+MIIFijCCA3KgAwIBAgIQdY39i658BwD6qSWn4cetFDANBgkqhkiG9w0BAQwFADBfMQswCQYDVQQG
+EwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1TZWN0aWdvIFB1YmxpYyBT
+ZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwHhcNMjEwMzIyMDAwMDAwWhcNNDYwMzIxMjM1
+OTU5WjBfMQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQDEy1T
+ZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYwggIiMA0GCSqGSIb3
+DQEBAQUAA4ICDwAwggIKAoICAQCTvtU2UnXYASOgHEdCSe5jtrch/cSV1UgrJnwUUxDaef0rty2k
+1Cz66jLdScK5vQ9IPXtamFSvnl0xdE8H/FAh3aTPaE8bEmNtJZlMKpnzSDBh+oF8HqcIStw+Kxwf
+GExxqjWMrfhu6DtK2eWUAtaJhBOqbchPM8xQljeSM9xfiOefVNlI8JhD1mb9nxc4Q8UBUQvX4yMP
+FF1bFOdLvt30yNoDN9HWOaEhUTCDsG3XME6WW5HwcCSrv0WBZEMNvSE6Lzzpng3LILVCJ8zab5vu
+ZDCQOc2TZYEhMbUjUDM3IuM47fgxMMxF/mL50V0yeUKH32rMVhlATc6qu/m1dkmU8Sf4kaWD5Qaz
+Yw6A3OASVYCmO2a0OYctyPDQ0RTp5A1NDvZdV3LFOxxHVp3i1fuBYYzMTYCQNFu31xR13NgESJ/A
+wSiItOkcyqex8Va3e0lMWeUgFaiEAin6OJRpmkkGj80feRQXEgyDet4fsZfu+Zd4KKTIRJLpfSYF
+plhym3kT2BFfrsU4YjRosoYwjviQYZ4ybPUHNs2iTG7sijbt8uaZFURww3y8nDnAtOFr94MlI1fZ
+EoDlSfB1D++N6xybVCi0ITz8fAr/73trdf+LHaAZBav6+CuBQug4urv7qv094PPK306Xlynt8xhW
+6aWWrL3DkJiy4Pmi1KZHQ3xtzwIDAQABo0IwQDAdBgNVHQ4EFgQUVnNYZJX5khqwEioEYnmhQBWI
+IUkwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEMBQADggIBAC9c
+mTz8Bl6MlC5w6tIyMY208FHVvArzZJ8HXtXBc2hkeqK5Duj5XYUtqDdFqij0lgVQYKlJfp/imTYp
+E0RHap1VIDzYm/EDMrraQKFz6oOht0SmDpkBm+S8f74TlH7Kph52gDY9hAaLMyZlbcp+nv4fjFg4
+exqDsQ+8FxG75gbMY/qB8oFM2gsQa6H61SilzwZAFv97fRheORKkU55+MkIQpiGRqRxOF3yEvJ+M
+0ejf5lG5Nkc/kLnHvALcWxxPDkjBJYOcCj+esQMzEhonrPcibCTRAUH4WAP+JWgiH5paPHxsnnVI
+84HxZmduTILA7rpXDhjvLpr3Etiga+kFpaHpaPi8TD8SHkXoUsCjvxInebnMMTzD9joiFgOgyY9m
+pFuiTdaBJQbpdqQACj7LzTWb4OE4y2BThihCQRxEV+ioratF4yUQvNs+ZUH7G6aXD+u5dHn5Hrwd
+Vw1Hr8Mvn4dGp+smWg9WY7ViYG4A++MnESLn/pmPNPW56MORcr3Ywx65LvKRRFHQV80MNNVIIb/b
+E/FmJUNS0nAiNs2fxBx1IK1jcmMGDw4nztJqDby1ORrp0XZ60Vzk50lJLVU3aPAaOpg+VBeHVOmm
+J1CJeyAvP/+/oYtKR5j/K3tJPsMpRmAYQqszKbrAKbkTidOIijlBO8n9pu0f9GBj39ItVQGL
+-----END CERTIFICATE-----
+
+SSL.com TLS RSA Root CA 2022
+============================
+-----BEGIN CERTIFICATE-----
+MIIFiTCCA3GgAwIBAgIQb77arXO9CEDii02+1PdbkTANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQG
+EwJVUzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxTU0wuY29tIFRMUyBSU0Eg
+Um9vdCBDQSAyMDIyMB4XDTIyMDgyNTE2MzQyMloXDTQ2MDgxOTE2MzQyMVowTjELMAkGA1UEBhMC
+VVMxGDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgUlNBIFJv
+b3QgQ0EgMjAyMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANCkCXJPQIgSYT41I57u
+9nTPL3tYPc48DRAokC+X94xI2KDYJbFMsBFMF3NQ0CJKY7uB0ylu1bUJPiYYf7ISf5OYt6/wNr/y
+7hienDtSxUcZXXTzZGbVXcdotL8bHAajvI9AI7YexoS9UcQbOcGV0insS657Lb85/bRi3pZ7Qcac
+oOAGcvvwB5cJOYF0r/c0WRFXCsJbwST0MXMwgsadugL3PnxEX4MN8/HdIGkWCVDi1FW24IBydm5M
+R7d1VVm0U3TZlMZBrViKMWYPHqIbKUBOL9975hYsLfy/7PO0+r4Y9ptJ1O4Fbtk085zx7AGL0SDG
+D6C1vBdOSHtRwvzpXGk3R2azaPgVKPC506QVzFpPulJwoxJF3ca6TvvC0PeoUidtbnm1jPx7jMEW
+TO6Af77wdr5BUxIzrlo4QqvXDz5BjXYHMtWrifZOZ9mxQnUjbvPNQrL8VfVThxc7wDNY8VLS+YCk
+8OjwO4s4zKTGkH8PnP2L0aPP2oOnaclQNtVcBdIKQXTbYxE3waWglksejBYSd66UNHsef8JmAOSq
+g+qKkK3ONkRN0VHpvB/zagX9wHQfJRlAUW7qglFA35u5CCoGAtUjHBPW6dvbxrB6y3snm/vg1UYk
+7RBLY0ulBY+6uB0rpvqR4pJSvezrZ5dtmi2fgTIFZzL7SAg/2SW4BCUvAgMBAAGjYzBhMA8GA1Ud
+EwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAU+y437uOEeicuzRk1sTN8/9REQrkwHQYDVR0OBBYEFPsu
+N+7jhHonLs0ZNbEzfP/UREK5MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAjYlt
+hEUY8U+zoO9opMAdrDC8Z2awms22qyIZZtM7QbUQnRC6cm4pJCAcAZli05bg4vsMQtfhWsSWTVTN
+j8pDU/0quOr4ZcoBwq1gaAafORpR2eCNJvkLTqVTJXojpBzOCBvfR4iyrT7gJ4eLSYwfqUdYe5by
+iB0YrrPRpgqU+tvT5TgKa3kSM/tKWTcWQA673vWJDPFs0/dRa1419dvAJuoSc06pkZCmF8NsLzjU
+o3KUQyxi4U5cMj29TH0ZR6LDSeeWP4+a0zvkEdiLA9z2tmBVGKaBUfPhqBVq6+AL8BQx1rmMRTqo
+ENjwuSfr98t67wVylrXEj5ZzxOhWc5y8aVFjvO9nHEMaX3cZHxj4HCUp+UmZKbaSPaKDN7Egkaib
+MOlqbLQjk2UEqxHzDh1TJElTHaE/nUiSEeJ9DU/1172iWD54nR4fK/4huxoTtrEoZP2wAgDHbICi
+vRZQIA9ygV/MlP+7mea6kMvq+cYMwq7FGc4zoWtcu358NFcXrfA/rs3qr5nsLFR+jM4uElZI7xc7
+P0peYNLcdDa8pUNjyw9bowJWCZ4kLOGGgYz+qxcs+sjiMho6/4UIyYOf8kpIEFR3N+2ivEC+5BB0
+9+Rbu7nzifmPQdjH5FCQNYA+HLhNkNPU98OwoX6EyneSMSy4kLGCenROmxMmtNVQZlR4rmA=
+-----END CERTIFICATE-----
+
+SSL.com TLS ECC Root CA 2022
+============================
+-----BEGIN CERTIFICATE-----
+MIICOjCCAcCgAwIBAgIQFAP1q/s3ixdAW+JDsqXRxDAKBggqhkjOPQQDAzBOMQswCQYDVQQGEwJV
+UzEYMBYGA1UECgwPU1NMIENvcnBvcmF0aW9uMSUwIwYDVQQDDBxTU0wuY29tIFRMUyBFQ0MgUm9v
+dCBDQSAyMDIyMB4XDTIyMDgyNTE2MzM0OFoXDTQ2MDgxOTE2MzM0N1owTjELMAkGA1UEBhMCVVMx
+GDAWBgNVBAoMD1NTTCBDb3Jwb3JhdGlvbjElMCMGA1UEAwwcU1NMLmNvbSBUTFMgRUNDIFJvb3Qg
+Q0EgMjAyMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABEUpNXP6wrgjzhR9qLFNoFs27iosU8NgCTWy
+JGYmacCzldZdkkAZDsalE3D07xJRKF3nzL35PIXBz5SQySvOkkJYWWf9lCcQZIxPBLFNSeR7T5v1
+5wj4A4j3p8OSSxlUgaNjMGEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBSJjy+j6CugFFR7
+81a4Jl9nOAuc0DAdBgNVHQ4EFgQUiY8vo+groBRUe/NWuCZfZzgLnNAwDgYDVR0PAQH/BAQDAgGG
+MAoGCCqGSM49BAMDA2gAMGUCMFXjIlbp15IkWE8elDIPDAI2wv2sdDJO4fscgIijzPvX6yv/N33w
+7deedWo1dlJF4AIxAMeNb0Igj762TVntd00pxCAgRWSGOlDGxK0tk/UYfXLtqc/ErFc2KAhl3zx5
+Zn6g6g==
+-----END CERTIFICATE-----
+
+Atos TrustedRoot Root CA ECC TLS 2021
+=====================================
+-----BEGIN CERTIFICATE-----
+MIICFTCCAZugAwIBAgIQPZg7pmY9kGP3fiZXOATvADAKBggqhkjOPQQDAzBMMS4wLAYDVQQDDCVB
+dG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgRUNDIFRMUyAyMDIxMQ0wCwYDVQQKDARBdG9zMQswCQYD
+VQQGEwJERTAeFw0yMTA0MjIwOTI2MjNaFw00MTA0MTcwOTI2MjJaMEwxLjAsBgNVBAMMJUF0b3Mg
+VHJ1c3RlZFJvb3QgUm9vdCBDQSBFQ0MgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNVBAYT
+AkRFMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEloZYKDcKZ9Cg3iQZGeHkBQcfl+3oZIK59sRxUM6K
+DP/XtXa7oWyTbIOiaG6l2b4siJVBzV3dscqDY4PMwL502eCdpO5KTlbgmClBk1IQ1SQ4AjJn8ZQS
+b+/Xxd4u/RmAo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR2KCXWfeBmmnoJsmo7jjPX
+NtNPojAOBgNVHQ8BAf8EBAMCAYYwCgYIKoZIzj0EAwMDaAAwZQIwW5kp85wxtolrbNa9d+F851F+
+uDrNozZffPc8dz7kUK2o59JZDCaOMDtuCCrCp1rIAjEAmeMM56PDr9NJLkaCI2ZdyQAUEv049OGY
+a3cpetskz2VAv9LcjBHo9H1/IISpQuQo
+-----END CERTIFICATE-----
+
+Atos TrustedRoot Root CA RSA TLS 2021
+=====================================
+-----BEGIN CERTIFICATE-----
+MIIFZDCCA0ygAwIBAgIQU9XP5hmTC/srBRLYwiqipDANBgkqhkiG9w0BAQwFADBMMS4wLAYDVQQD
+DCVBdG9zIFRydXN0ZWRSb290IFJvb3QgQ0EgUlNBIFRMUyAyMDIxMQ0wCwYDVQQKDARBdG9zMQsw
+CQYDVQQGEwJERTAeFw0yMTA0MjIwOTIxMTBaFw00MTA0MTcwOTIxMDlaMEwxLjAsBgNVBAMMJUF0
+b3MgVHJ1c3RlZFJvb3QgUm9vdCBDQSBSU0EgVExTIDIwMjExDTALBgNVBAoMBEF0b3MxCzAJBgNV
+BAYTAkRFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtoAOxHm9BYx9sKOdTSJNy/BB
+l01Z4NH+VoyX8te9j2y3I49f1cTYQcvyAh5x5en2XssIKl4w8i1mx4QbZFc4nXUtVsYvYe+W/CBG
+vevUez8/fEc4BKkbqlLfEzfTFRVOvV98r61jx3ncCHvVoOX3W3WsgFWZkmGbzSoXfduP9LVq6hdK
+ZChmFSlsAvFr1bqjM9xaZ6cF4r9lthawEO3NUDPJcFDsGY6wx/J0W2tExn2WuZgIWWbeKQGb9Cpt
+0xU6kGpn8bRrZtkh68rZYnxGEFzedUlnnkL5/nWpo63/dgpnQOPF943HhZpZnmKaau1Fh5hnstVK
+PNe0OwANwI8f4UDErmwh3El+fsqyjW22v5MvoVw+j8rtgI5Y4dtXz4U2OLJxpAmMkokIiEjxQGMY
+sluMWuPD0xeqqxmjLBvk1cbiZnrXghmmOxYsL3GHX0WelXOTwkKBIROW1527k2gV+p2kHYzygeBY
+Br3JtuP2iV2J+axEoctr+hbxx1A9JNr3w+SH1VbxT5Aw+kUJWdo0zuATHAR8ANSbhqRAvNncTFd+
+rrcztl524WWLZt+NyteYr842mIycg5kDcPOvdO3GDjbnvezBc6eUWsuSZIKmAMFwoW4sKeFYV+xa
+fJlrJaSQOoD0IJ2azsct+bJLKZWD6TWNp0lIpw9MGZHQ9b8Q4HECAwEAAaNCMEAwDwYDVR0TAQH/
+BAUwAwEB/zAdBgNVHQ4EFgQUdEmZ0f+0emhFdcN+tNzMzjkz2ggwDgYDVR0PAQH/BAQDAgGGMA0G
+CSqGSIb3DQEBDAUAA4ICAQAjQ1MkYlxt/T7Cz1UAbMVWiLkO3TriJQ2VSpfKgInuKs1l+NsW4AmS
+4BjHeJi78+xCUvuppILXTdiK/ORO/auQxDh1MoSf/7OwKwIzNsAQkG8dnK/haZPso0UvFJ/1TCpl
+Q3IM98P4lYsU84UgYt1UU90s3BiVaU+DR3BAM1h3Egyi61IxHkzJqM7F78PRreBrAwA0JrRUITWX
+AdxfG/F851X6LWh3e9NpzNMOa7pNdkTWwhWaJuywxfW70Xp0wmzNxbVe9kzmWy2B27O3Opee7c9G
+slA9hGCZcbUztVdF5kJHdWoOsAgMrr3e97sPWD2PAzHoPYJQyi9eDF20l74gNAf0xBLh7tew2Vkt
+afcxBPTy+av5EzH4AXcOPUIjJsyacmdRIXrMPIWo6iFqO9taPKU0nprALN+AnCng33eU0aKAQv9q
+TFsR0PXNor6uzFFcw9VUewyu1rkGd4Di7wcaaMxZUa1+XGdrudviB0JbuAEFWDlN5LuYo7Ey7Nmj
+1m+UI/87tyll5gfp77YZ6ufCOB0yiJA8EytuzO+rdwY0d4RPcuSBhPm5dDTedk+SKlOxJTnbPP/l
+PqYO5Wue/9vsL3SD3460s6neFE3/MaNFcyT6lSnMEpcEoji2jbDwN/zIIX8/syQbPYtuzE2wFg2W
+HYMfRsCbvUOZ58SWLs5fyQ==
+-----END CERTIFICATE-----
+
+TrustAsia Global Root CA G3
+===========================
+-----BEGIN CERTIFICATE-----
+MIIFpTCCA42gAwIBAgIUZPYOZXdhaqs7tOqFhLuxibhxkw8wDQYJKoZIhvcNAQEMBQAwWjELMAkG
+A1UEBhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMsIEluYy4xJDAiBgNVBAMM
+G1RydXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHMzAeFw0yMTA1MjAwMjEwMTlaFw00NjA1MTkwMjEw
+MTlaMFoxCzAJBgNVBAYTAkNOMSUwIwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMu
+MSQwIgYDVQQDDBtUcnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzMwggIiMA0GCSqGSIb3DQEBAQUA
+A4ICDwAwggIKAoICAQDAMYJhkuSUGwoqZdC+BqmHO1ES6nBBruL7dOoKjbmzTNyPtxNST1QY4Sxz
+lZHFZjtqz6xjbYdT8PfxObegQ2OwxANdV6nnRM7EoYNl9lA+sX4WuDqKAtCWHwDNBSHvBm3dIZwZ
+Q0WhxeiAysKtQGIXBsaqvPPW5vxQfmZCHzyLpnl5hkA1nyDvP+uLRx+PjsXUjrYsyUQE49RDdT/V
+P68czH5GX6zfZBCK70bwkPAPLfSIC7Epqq+FqklYqL9joDiR5rPmd2jE+SoZhLsO4fWvieylL1Ag
+dB4SQXMeJNnKziyhWTXAyB1GJ2Faj/lN03J5Zh6fFZAhLf3ti1ZwA0pJPn9pMRJpxx5cynoTi+jm
+9WAPzJMshH/x/Gr8m0ed262IPfN2dTPXS6TIi/n1Q1hPy8gDVI+lhXgEGvNz8teHHUGf59gXzhqc
+D0r83ERoVGjiQTz+LISGNzzNPy+i2+f3VANfWdP3kXjHi3dqFuVJhZBFcnAvkV34PmVACxmZySYg
+WmjBNb9Pp1Hx2BErW+Canig7CjoKH8GB5S7wprlppYiU5msTf9FkPz2ccEblooV7WIQn3MSAPmea
+mseaMQ4w7OYXQJXZRe0Blqq/DPNL0WP3E1jAuPP6Z92bfW1K/zJMtSU7/xxnD4UiWQWRkUF3gdCF
+TIcQcf+eQxuulXUtgQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEDk5PIj
+7zjKsK5Xf/IhMBY027ySMB0GA1UdDgQWBBRA5OTyI+84yrCuV3/yITAWNNu8kjAOBgNVHQ8BAf8E
+BAMCAQYwDQYJKoZIhvcNAQEMBQADggIBACY7UeFNOPMyGLS0XuFlXsSUT9SnYaP4wM8zAQLpw6o1
+D/GUE3d3NZ4tVlFEbuHGLige/9rsR82XRBf34EzC4Xx8MnpmyFq2XFNFV1pF1AWZLy4jVe5jaN/T
+G3inEpQGAHUNcoTpLrxaatXeL1nHo+zSh2bbt1S1JKv0Q3jbSwTEb93mPmY+KfJLaHEih6D4sTNj
+duMNhXJEIlU/HHzp/LgV6FL6qj6jITk1dImmasI5+njPtqzn59ZW/yOSLlALqbUHM/Q4X6RJpstl
+cHboCoWASzY9M/eVVHUl2qzEc4Jl6VL1XP04lQJqaTDFHApXB64ipCz5xUG3uOyfT0gA+QEEVcys
++TIxxHWVBqB/0Y0n3bOppHKH/lmLmnp0Ft0WpWIp6zqW3IunaFnT63eROfjXy9mPX1onAX1daBli
+2MjN9LdyR75bl87yraKZk62Uy5P2EgmVtqvXO9A/EcswFi55gORngS1d7XB4tmBZrOFdRWOPyN9y
+aFvqHbgB8X7754qz41SgOAngPN5C8sLtLpvzHzW2NtjjgKGLzZlkD8Kqq7HK9W+eQ42EVJmzbsAS
+ZthwEPEGNTNDqJwuuhQxzhB/HIbjj9LV+Hfsm6vxL2PZQl/gZ4FkkfGXL/xuJvYz+NO1+MRiqzFR
+JQJ6+N1rZdVtTTDIZbpoFGWsJwt0ivKH
+-----END CERTIFICATE-----
+
+TrustAsia Global Root CA G4
+===========================
+-----BEGIN CERTIFICATE-----
+MIICVTCCAdygAwIBAgIUTyNkuI6XY57GU4HBdk7LKnQV1tcwCgYIKoZIzj0EAwMwWjELMAkGA1UE
+BhMCQ04xJTAjBgNVBAoMHFRydXN0QXNpYSBUZWNobm9sb2dpZXMsIEluYy4xJDAiBgNVBAMMG1Ry
+dXN0QXNpYSBHbG9iYWwgUm9vdCBDQSBHNDAeFw0yMTA1MjAwMjEwMjJaFw00NjA1MTkwMjEwMjJa
+MFoxCzAJBgNVBAYTAkNOMSUwIwYDVQQKDBxUcnVzdEFzaWEgVGVjaG5vbG9naWVzLCBJbmMuMSQw
+IgYDVQQDDBtUcnVzdEFzaWEgR2xvYmFsIFJvb3QgQ0EgRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNi
+AATxs8045CVD5d4ZCbuBeaIVXxVjAd7Cq92zphtnS4CDr5nLrBfbK5bKfFJV4hrhPVbwLxYI+hW8
+m7tH5j/uqOFMjPXTNvk4XatwmkcN4oFBButJ+bAp3TPsUKV/eSm4IJijYzBhMA8GA1UdEwEB/wQF
+MAMBAf8wHwYDVR0jBBgwFoAUpbtKl86zK3+kMd6Xg1mDpm9xy94wHQYDVR0OBBYEFKW7SpfOsyt/
+pDHel4NZg6ZvccveMA4GA1UdDwEB/wQEAwIBBjAKBggqhkjOPQQDAwNnADBkAjBe8usGzEkxn0AA
+bbd+NvBNEU/zy4k6LHiRUKNbwMp1JvK/kF0LgoxgKJ/GcJpo5PECMFxYDlZ2z1jD1xCMuo6u47xk
+dUfFVZDj/bpV6wfEU6s3qe4hsiFbYI89MvHVI5TWWA==
+-----END CERTIFICATE-----
+
+CommScope Public Trust ECC Root-01
+==================================
+-----BEGIN CERTIFICATE-----
+MIICHTCCAaOgAwIBAgIUQ3CCd89NXTTxyq4yLzf39H91oJ4wCgYIKoZIzj0EAwMwTjELMAkGA1UE
+BhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBUcnVz
+dCBFQ0MgUm9vdC0wMTAeFw0yMTA0MjgxNzM1NDNaFw00NjA0MjgxNzM1NDJaME4xCzAJBgNVBAYT
+AlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3Qg
+RUNDIFJvb3QtMDEwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARLNumuV16ocNfQj3Rid8NeeqrltqLx
+eP0CflfdkXmcbLlSiFS8LwS+uM32ENEp7LXQoMPwiXAZu1FlxUOcw5tjnSCDPgYLpkJEhRGnSjot
+6dZoL0hOUysHP029uax3OVejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G
+A1UdDgQWBBSOB2LAUN3GGQYARnQE9/OufXVNMDAKBggqhkjOPQQDAwNoADBlAjEAnDPfQeMjqEI2
+Jpc1XHvr20v4qotzVRVcrHgpD7oh2MSg2NED3W3ROT3Ek2DS43KyAjB8xX6I01D1HiXo+k515liW
+pDVfG2XqYZpwI7UNo5uSUm9poIyNStDuiw7LR47QjRE=
+-----END CERTIFICATE-----
+
+CommScope Public Trust ECC Root-02
+==================================
+-----BEGIN CERTIFICATE-----
+MIICHDCCAaOgAwIBAgIUKP2ZYEFHpgE6yhR7H+/5aAiDXX0wCgYIKoZIzj0EAwMwTjELMAkGA1UE
+BhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBUcnVz
+dCBFQ0MgUm9vdC0wMjAeFw0yMTA0MjgxNzQ0NTRaFw00NjA0MjgxNzQ0NTNaME4xCzAJBgNVBAYT
+AlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1c3Qg
+RUNDIFJvb3QtMDIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAR4MIHoYx7l63FRD/cHB8o5mXxO1Q/M
+MDALj2aTPs+9xYa9+bG3tD60B8jzljHz7aRP+KNOjSkVWLjVb3/ubCK1sK9IRQq9qEmUv4RDsNuE
+SgMjGWdqb8FuvAY5N9GIIvejQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G
+A1UdDgQWBBTmGHX/72DehKT1RsfeSlXjMjZ59TAKBggqhkjOPQQDAwNnADBkAjAmc0l6tqvmSfR9
+Uj/UQQSugEODZXW5hYA4O9Zv5JOGq4/nich/m35rChJVYaoR4HkCMHfoMXGsPHED1oQmHhS48zs7
+3u1Z/GtMMH9ZzkXpc2AVmkzw5l4lIhVtwodZ0LKOag==
+-----END CERTIFICATE-----
+
+CommScope Public Trust RSA Root-01
+==================================
+-----BEGIN CERTIFICATE-----
+MIIFbDCCA1SgAwIBAgIUPgNJgXUWdDGOTKvVxZAplsU5EN0wDQYJKoZIhvcNAQELBQAwTjELMAkG
+A1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBU
+cnVzdCBSU0EgUm9vdC0wMTAeFw0yMTA0MjgxNjQ1NTRaFw00NjA0MjgxNjQ1NTNaME4xCzAJBgNV
+BAYTAlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1
+c3QgUlNBIFJvb3QtMDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwSGWjDR1C45Ft
+nYSkYZYSwu3D2iM0GXb26v1VWvZVAVMP8syMl0+5UMuzAURWlv2bKOx7dAvnQmtVzslhsuitQDy6
+uUEKBU8bJoWPQ7VAtYXR1HHcg0Hz9kXHgKKEUJdGzqAMxGBWBB0HW0alDrJLpA6lfO741GIDuZNq
+ihS4cPgugkY4Iw50x2tBt9Apo52AsH53k2NC+zSDO3OjWiE260f6GBfZumbCk6SP/F2krfxQapWs
+vCQz0b2If4b19bJzKo98rwjyGpg/qYFlP8GMicWWMJoKz/TUyDTtnS+8jTiGU+6Xn6myY5QXjQ/c
+Zip8UlF1y5mO6D1cv547KI2DAg+pn3LiLCuz3GaXAEDQpFSOm117RTYm1nJD68/A6g3czhLmfTif
+BSeolz7pUcZsBSjBAg/pGG3svZwG1KdJ9FQFa2ww8esD1eo9anbCyxooSU1/ZOD6K9pzg4H/kQO9
+lLvkuI6cMmPNn7togbGEW682v3fuHX/3SZtS7NJ3Wn2RnU3COS3kuoL4b/JOHg9O5j9ZpSPcPYeo
+KFgo0fEbNttPxP/hjFtyjMcmAyejOQoBqsCyMWCDIqFPEgkBEa801M/XrmLTBQe0MXXgDW1XT2mH
++VepuhX2yFJtocucH+X8eKg1mp9BFM6ltM6UCBwJrVbl2rZJmkrqYxhTnCwuwwIDAQABo0IwQDAP
+BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUN12mmnQywsL5x6YVEFm4
+5P3luG0wDQYJKoZIhvcNAQELBQADggIBAK+nz97/4L1CjU3lIpbfaOp9TSp90K09FlxD533Ahuh6
+NWPxzIHIxgvoLlI1pKZJkGNRrDSsBTtXAOnTYtPZKdVUvhwQkZyybf5Z/Xn36lbQnmhUQo8mUuJM
+3y+Xpi/SB5io82BdS5pYV4jvguX6r2yBS5KPQJqTRlnLX3gWsWc+QgvfKNmwrZggvkN80V4aCRck
+jXtdlemrwWCrWxhkgPut4AZ9HcpZuPN4KWfGVh2vtrV0KnahP/t1MJ+UXjulYPPLXAziDslg+Mkf
+Foom3ecnf+slpoq9uC02EJqxWE2aaE9gVOX2RhOOiKy8IUISrcZKiX2bwdgt6ZYD9KJ0DLwAHb/W
+NyVntHKLr4W96ioDj8z7PEQkguIBpQtZtjSNMgsSDesnwv1B10A8ckYpwIzqug/xBpMu95yo9GA+
+o/E4Xo4TwbM6l4c/ksp4qRyv0LAbJh6+cOx69TOY6lz/KwsETkPdY34Op054A5U+1C0wlREQKC6/
+oAI+/15Z0wUOlV9TRe9rh9VIzRamloPh37MG88EU26fsHItdkJANclHnYfkUyq+Dj7+vsQpZXdxc
+1+SWrVtgHdqul7I52Qb1dgAT+GhMIbA1xNxVssnBQVocicCMb3SgazNNtQEo/a2tiRc7ppqEvOuM
+6sRxJKi6KfkIsidWNTJf6jn7MZrVGczw
+-----END CERTIFICATE-----
+
+CommScope Public Trust RSA Root-02
+==================================
+-----BEGIN CERTIFICATE-----
+MIIFbDCCA1SgAwIBAgIUVBa/O345lXGN0aoApYYNK496BU4wDQYJKoZIhvcNAQELBQAwTjELMAkG
+A1UEBhMCVVMxEjAQBgNVBAoMCUNvbW1TY29wZTErMCkGA1UEAwwiQ29tbVNjb3BlIFB1YmxpYyBU
+cnVzdCBSU0EgUm9vdC0wMjAeFw0yMTA0MjgxNzE2NDNaFw00NjA0MjgxNzE2NDJaME4xCzAJBgNV
+BAYTAlVTMRIwEAYDVQQKDAlDb21tU2NvcGUxKzApBgNVBAMMIkNvbW1TY29wZSBQdWJsaWMgVHJ1
+c3QgUlNBIFJvb3QtMDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDh+g77aAASyE3V
+rCLENQE7xVTlWXZjpX/rwcRqmL0yjReA61260WI9JSMZNRTpf4mnG2I81lDnNJUDMrG0kyI9p+Kx
+7eZ7Ti6Hmw0zdQreqjXnfuU2mKKuJZ6VszKWpCtYHu8//mI0SFHRtI1CrWDaSWqVcN3SAOLMV2MC
+e5bdSZdbkk6V0/nLKR8YSvgBKtJjCW4k6YnS5cciTNxzhkcAqg2Ijq6FfUrpuzNPDlJwnZXjfG2W
+Wy09X6GDRl224yW4fKcZgBzqZUPckXk2LHR88mcGyYnJ27/aaL8j7dxrrSiDeS/sOKUNNwFnJ5rp
+M9kzXzehxfCrPfp4sOcsn/Y+n2Dg70jpkEUeBVF4GiwSLFworA2iI540jwXmojPOEXcT1A6kHkIf
+hs1w/tkuFT0du7jyU1fbzMZ0KZwYszZ1OC4PVKH4kh+Jlk+71O6d6Ts2QrUKOyrUZHk2EOH5kQMr
+eyBUzQ0ZGshBMjTRsJnhkB4BQDa1t/qp5Xd1pCKBXbCL5CcSD1SIxtuFdOa3wNemKfrb3vOTlycE
+VS8KbzfFPROvCgCpLIscgSjX74Yxqa7ybrjKaixUR9gqiC6vwQcQeKwRoi9C8DfF8rhW3Q5iLc4t
+Vn5V8qdE9isy9COoR+jUKgF4z2rDN6ieZdIs5fq6M8EGRPbmz6UNp2YINIos8wIDAQABo0IwQDAP
+BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUR9DnsSL/nSz12Vdgs7Gx
+cJXvYXowDQYJKoZIhvcNAQELBQADggIBAIZpsU0v6Z9PIpNojuQhmaPORVMbc0RTAIFhzTHjCLqB
+KCh6krm2qMhDnscTJk3C2OVVnJJdUNjCK9v+5qiXz1I6JMNlZFxHMaNlNRPDk7n3+VGXu6TwYofF
+1gbTl4MgqX67tiHCpQ2EAOHyJxCDut0DgdXdaMNmEMjRdrSzbymeAPnCKfWxkxlSaRosTKCL4BWa
+MS/TiJVZbuXEs1DIFAhKm4sTg7GkcrI7djNB3NyqpgdvHSQSn8h2vS/ZjvQs7rfSOBAkNlEv41xd
+gSGn2rtO/+YHqP65DSdsu3BaVXoT6fEqSWnHX4dXTEN5bTpl6TBcQe7rd6VzEojov32u5cSoHw2O
+HG1QAk8mGEPej1WFsQs3BWDJVTkSBKEqz3EWnzZRSb9wO55nnPt7eck5HHisd5FUmrh1CoFSl+Nm
+YWvtPjgelmFV4ZFUjO2MJB+ByRCac5krFk5yAD9UG/iNuovnFNa2RU9g7Jauwy8CTl2dlklyALKr
+dVwPaFsdZcJfMw8eD/A7hvWwTruc9+olBdytoptLFwG+Qt81IR2tq670v64fG9PiO/yzcnMcmyiQ
+iRM9HcEARwmWmjgb3bHPDcK0RPOWlc4yOo80nOAXx17Org3bhzjlP1v9mxnhMUF6cKojawHhRUzN
+lM47ni3niAIi9G7oyOzWPPO5std3eqx7
+-----END CERTIFICATE-----
diff --git a/Master/tlpkg/tlperl/site/lib/Mozilla/mk-ca-bundle.pl b/Master/tlpkg/tlperl/site/lib/Mozilla/mk-ca-bundle.pl
deleted file mode 100644
index e5a7420c0eb..00000000000
--- a/Master/tlpkg/tlperl/site/lib/Mozilla/mk-ca-bundle.pl
+++ /dev/null
@@ -1,625 +0,0 @@
-#!/usr/bin/env perl
-# ***************************************************************************
-# * _ _ ____ _
-# * Project ___| | | | _ \| |
-# * / __| | | | |_) | |
-# * | (__| |_| | _ <| |___
-# * \___|\___/|_| \_\_____|
-# *
-# * Copyright (C) 1998 - 2021, Daniel Stenberg, <daniel@haxx.se>, et al.
-# *
-# * This software is licensed as described in the file COPYING, which
-# * you should have received as part of this distribution. The terms
-# * are also available at https://curl.se/docs/copyright.html.
-# *
-# * You may opt to use, copy, modify, merge, publish, distribute and/or sell
-# * copies of the Software, and permit persons to whom the Software is
-# * furnished to do so, under the terms of the COPYING file.
-# *
-# * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
-# * KIND, either express or implied.
-# *
-# ***************************************************************************
-# This Perl script creates a fresh ca-bundle.crt file for use with libcurl.
-# It downloads certdata.txt from Mozilla's source tree (see URL below),
-# then parses certdata.txt and extracts CA Root Certificates into PEM format.
-# These are then processed with the OpenSSL commandline tool to produce the
-# final ca-bundle.crt file.
-# The script is based on the parse-certs script written by Roland Krikava.
-# This Perl script works on almost any platform since its only external
-# dependency is the OpenSSL commandline tool for optional text listing.
-# Hacked by Guenter Knauf.
-#
-use Encode;
-use Getopt::Std;
-use MIME::Base64;
-use strict;
-use warnings;
-use vars qw($opt_b $opt_d $opt_f $opt_h $opt_i $opt_k $opt_l $opt_m $opt_n $opt_p $opt_q $opt_s $opt_t $opt_u $opt_v $opt_w);
-use List::Util;
-use Text::Wrap;
-use Time::Local;
-my $MOD_SHA = "Digest::SHA";
-eval "require $MOD_SHA";
-if ($@) {
- $MOD_SHA = "Digest::SHA::PurePerl";
- eval "require $MOD_SHA";
-}
-eval "require LWP::UserAgent";
-
-my %urls = (
- 'nss' =>
- 'https://hg.mozilla.org/projects/nss/raw-file/default/lib/ckfw/builtins/certdata.txt',
- 'central' =>
- 'https://hg.mozilla.org/mozilla-central/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt',
- 'beta' =>
- 'https://hg.mozilla.org/releases/mozilla-beta/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt',
- 'release' =>
- 'https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt',
-);
-
-$opt_d = 'release';
-
-# If the OpenSSL commandline is not in search path you can configure it here!
-my $openssl = 'openssl';
-
-my $version = '1.28';
-
-$opt_w = 76; # default base64 encoded lines length
-
-# default cert types to include in the output (default is to include CAs which may issue SSL server certs)
-my $default_mozilla_trust_purposes = "SERVER_AUTH";
-my $default_mozilla_trust_levels = "TRUSTED_DELEGATOR";
-$opt_p = $default_mozilla_trust_purposes . ":" . $default_mozilla_trust_levels;
-
-my @valid_mozilla_trust_purposes = (
- "DIGITAL_SIGNATURE",
- "NON_REPUDIATION",
- "KEY_ENCIPHERMENT",
- "DATA_ENCIPHERMENT",
- "KEY_AGREEMENT",
- "KEY_CERT_SIGN",
- "CRL_SIGN",
- "SERVER_AUTH",
- "CLIENT_AUTH",
- "CODE_SIGNING",
- "EMAIL_PROTECTION",
- "IPSEC_END_SYSTEM",
- "IPSEC_TUNNEL",
- "IPSEC_USER",
- "TIME_STAMPING",
- "STEP_UP_APPROVED"
-);
-
-my @valid_mozilla_trust_levels = (
- "TRUSTED_DELEGATOR", # CAs
- "NOT_TRUSTED", # Don't trust these certs.
- "MUST_VERIFY_TRUST", # This explicitly tells us that it ISN'T a CA but is otherwise ok. In other words, this should tell the app to ignore any other sources that claim this is a CA.
- "TRUSTED" # This cert is trusted, but only for itself and not for delegates (i.e. it is not a CA).
-);
-
-my $default_signature_algorithms = $opt_s = "MD5";
-
-my @valid_signature_algorithms = (
- "MD5",
- "SHA1",
- "SHA256",
- "SHA384",
- "SHA512"
-);
-
-$0 =~ s@.*(/|\\)@@;
-$Getopt::Std::STANDARD_HELP_VERSION = 1;
-getopts('bd:fhiklmnp:qs:tuvw:');
-
-if(!defined($opt_d)) {
- # to make plain "-d" use not cause warnings, and actually still work
- $opt_d = 'release';
-}
-
-# Use predefined URL or else custom URL specified on command line.
-my $url;
-if(defined($urls{$opt_d})) {
- $url = $urls{$opt_d};
- if(!$opt_k && $url !~ /^https:\/\//i) {
- die "The URL for '$opt_d' is not HTTPS. Use -k to override (insecure).\n";
- }
-}
-else {
- $url = $opt_d;
-}
-
-my $curl = `curl -V`;
-
-if ($opt_i) {
- print ("=" x 78 . "\n");
- print "Script Version : $version\n";
- print "Perl Version : $]\n";
- print "Operating System Name : $^O\n";
- print "Getopt::Std.pm Version : ${Getopt::Std::VERSION}\n";
- print "Encode::Encoding.pm Version : ${Encode::Encoding::VERSION}\n";
- print "MIME::Base64.pm Version : ${MIME::Base64::VERSION}\n";
- print "LWP::UserAgent.pm Version : ${LWP::UserAgent::VERSION}\n" if($LWP::UserAgent::VERSION);
- print "LWP.pm Version : ${LWP::VERSION}\n" if($LWP::VERSION);
- print "Digest::SHA.pm Version : ${Digest::SHA::VERSION}\n" if ($Digest::SHA::VERSION);
- print "Digest::SHA::PurePerl.pm Version : ${Digest::SHA::PurePerl::VERSION}\n" if ($Digest::SHA::PurePerl::VERSION);
- print ("=" x 78 . "\n");
-}
-
-sub warning_message() {
- if ( $opt_d =~ m/^risk$/i ) { # Long Form Warning and Exit
- print "Warning: Use of this script may pose some risk:\n";
- print "\n";
- print " 1) If you use HTTP URLs they are subject to a man in the middle attack\n";
- print " 2) Default to 'release', but more recent updates may be found in other trees\n";
- print " 3) certdata.txt file format may change, lag time to update this script\n";
- print " 4) Generally unwise to blindly trust CAs without manual review & verification\n";
- print " 5) Mozilla apps use additional security checks aren't represented in certdata\n";
- print " 6) Use of this script will make a security engineer grind his teeth and\n";
- print " swear at you. ;)\n";
- exit;
- } else { # Short Form Warning
- print "Warning: Use of this script may pose some risk, -d risk for more details.\n";
- }
-}
-
-sub HELP_MESSAGE() {
- print "Usage:\t${0} [-b] [-d<certdata>] [-f] [-i] [-k] [-l] [-n] [-p<purposes:levels>] [-q] [-s<algorithms>] [-t] [-u] [-v] [-w<l>] [<outputfile>]\n";
- print "\t-b\tbackup an existing version of ca-bundle.crt\n";
- print "\t-d\tspecify Mozilla tree to pull certdata.txt or custom URL\n";
- print "\t\t Valid names are:\n";
- print "\t\t ", join( ", ", map { ( $_ =~ m/$opt_d/ ) ? "$_ (default)" : "$_" } sort keys %urls ), "\n";
- print "\t-f\tforce rebuild even if certdata.txt is current\n";
- print "\t-i\tprint version info about used modules\n";
- print "\t-k\tallow URLs other than HTTPS, enable HTTP fallback (insecure)\n";
- print "\t-l\tprint license info about certdata.txt\n";
- print "\t-m\tinclude meta data in output\n";
- print "\t-n\tno download of certdata.txt (to use existing)\n";
- print wrap("\t","\t\t", "-p\tlist of Mozilla trust purposes and levels for certificates to include in output. Takes the form of a comma separated list of purposes, a colon, and a comma separated list of levels. (default: $default_mozilla_trust_purposes:$default_mozilla_trust_levels)"), "\n";
- print "\t\t Valid purposes are:\n";
- print wrap("\t\t ","\t\t ", join( ", ", "ALL", @valid_mozilla_trust_purposes ) ), "\n";
- print "\t\t Valid levels are:\n";
- print wrap("\t\t ","\t\t ", join( ", ", "ALL", @valid_mozilla_trust_levels ) ), "\n";
- print "\t-q\tbe really quiet (no progress output at all)\n";
- print wrap("\t","\t\t", "-s\tcomma separated list of certificate signatures/hashes to output in plain text mode. (default: $default_signature_algorithms)\n");
- print "\t\t Valid signature algorithms are:\n";
- print wrap("\t\t ","\t\t ", join( ", ", "ALL", @valid_signature_algorithms ) ), "\n";
- print "\t-t\tinclude plain text listing of certificates\n";
- print "\t-u\tunlink (remove) certdata.txt after processing\n";
- print "\t-v\tbe verbose and print out processed CAs\n";
- print "\t-w <l>\twrap base64 output lines after <l> chars (default: ${opt_w})\n";
- exit;
-}
-
-sub VERSION_MESSAGE() {
- print "${0} version ${version} running Perl ${]} on ${^O}\n";
-}
-
-warning_message() unless ($opt_q || $url =~ m/^(ht|f)tps:/i );
-HELP_MESSAGE() if ($opt_h);
-
-sub report($@) {
- my $output = shift;
-
- print STDERR $output . "\n" unless $opt_q;
-}
-
-sub is_in_list($@) {
- my $target = shift;
-
- return defined(List::Util::first { $target eq $_ } @_);
-}
-
-# Parses $param_string as a case insensitive comma separated list with optional whitespace
-# validates that only allowed parameters are supplied
-sub parse_csv_param($$@) {
- my $description = shift;
- my $param_string = shift;
- my @valid_values = @_;
-
- my @values = map {
- s/^\s+//; # strip leading spaces
- s/\s+$//; # strip trailing spaces
- uc $_ # return the modified string as upper case
- } split( ',', $param_string );
-
- # Find all values which are not in the list of valid values or "ALL"
- my @invalid = grep { !is_in_list($_,"ALL",@valid_values) } @values;
-
- if ( scalar(@invalid) > 0 ) {
- # Tell the user which parameters were invalid and print the standard help message which will exit
- print "Error: Invalid ", $description, scalar(@invalid) == 1 ? ": " : "s: ", join( ", ", map { "\"$_\"" } @invalid ), "\n";
- HELP_MESSAGE();
- }
-
- @values = @valid_values if ( is_in_list("ALL",@values) );
-
- return @values;
-}
-
-sub sha256 {
- my $result;
- if ($Digest::SHA::VERSION || $Digest::SHA::PurePerl::VERSION) {
- open(FILE, $_[0]) or die "Can't open '$_[0]': $!";
- binmode(FILE);
- $result = $MOD_SHA->new(256)->addfile(*FILE)->hexdigest;
- close(FILE);
- } else {
- # Use OpenSSL command if Perl Digest::SHA modules not available
- $result = `"$openssl" dgst -r -sha256 "$_[0]"`;
- $result =~ s/^([0-9a-f]{64}) .+/$1/is;
- }
- return $result;
-}
-
-
-sub oldhash {
- my $hash = "";
- open(C, "<$_[0]") || return 0;
- while(<C>) {
- chomp;
- if($_ =~ /^\#\# SHA256: (.*)/) {
- $hash = $1;
- last;
- }
- }
- close(C);
- return $hash;
-}
-
-if ( $opt_p !~ m/:/ ) {
- print "Error: Mozilla trust identifier list must include both purposes and levels\n";
- HELP_MESSAGE();
-}
-
-(my $included_mozilla_trust_purposes_string, my $included_mozilla_trust_levels_string) = split( ':', $opt_p );
-my @included_mozilla_trust_purposes = parse_csv_param( "trust purpose", $included_mozilla_trust_purposes_string, @valid_mozilla_trust_purposes );
-my @included_mozilla_trust_levels = parse_csv_param( "trust level", $included_mozilla_trust_levels_string, @valid_mozilla_trust_levels );
-
-my @included_signature_algorithms = parse_csv_param( "signature algorithm", $opt_s, @valid_signature_algorithms );
-
-sub should_output_cert(%) {
- my %trust_purposes_by_level = @_;
-
- foreach my $level (@included_mozilla_trust_levels) {
- # for each level we want to output, see if any of our desired purposes are included
- return 1 if ( defined( List::Util::first { is_in_list( $_, @included_mozilla_trust_purposes ) } @{$trust_purposes_by_level{$level}} ) );
- }
-
- return 0;
-}
-
-my $crt = $ARGV[0] || 'ca-bundle.crt';
-(my $txt = $url) =~ s@(.*/|\?.*)@@g;
-
-my $stdout = $crt eq '-';
-my $resp;
-my $fetched;
-
-my $oldhash = oldhash($crt);
-
-report "SHA256 of old file: $oldhash";
-
-if(!$opt_n) {
- report "Downloading $txt ...";
-
- # If we have an HTTPS URL then use curl
- if($url =~ /^https:\/\//i) {
- if($curl) {
- if($curl =~ /^Protocols:.* https( |$)/m) {
- report "Get certdata with curl!";
- my $proto = !$opt_k ? "--proto =https" : "";
- my $quiet = $opt_q ? "-s" : "";
- my @out = `curl -w %{response_code} $proto $quiet -o "$txt" "$url"`;
- if(!$? && @out && $out[0] == 200) {
- $fetched = 1;
- report "Downloaded $txt";
- }
- else {
- report "Failed downloading via HTTPS with curl";
- if(-e $txt && !unlink($txt)) {
- report "Failed to remove '$txt': $!";
- }
- }
- }
- else {
- report "curl lacks https support";
- }
- }
- else {
- report "curl not found";
- }
- }
-
- # If nothing was fetched then use LWP
- if(!$fetched) {
- if($url =~ /^https:\/\//i) {
- report "Falling back to HTTP";
- $url =~ s/^https:\/\//http:\/\//i;
- }
- if(!$opt_k) {
- report "URLs other than HTTPS are disabled by default, to enable use -k";
- exit 1;
- }
- report "Get certdata with LWP!";
- if(!defined(${LWP::UserAgent::VERSION})) {
- report "LWP is not available (LWP::UserAgent not found)";
- exit 1;
- }
- my $ua = new LWP::UserAgent(agent => "$0/$version");
- $ua->env_proxy();
- $resp = $ua->mirror($url, $txt);
- if($resp && $resp->code eq '304') {
- report "Not modified";
- exit 0 if -e $crt && !$opt_f;
- }
- else {
- $fetched = 1;
- report "Downloaded $txt";
- }
- if(!$resp || $resp->code !~ /^(?:200|304)$/) {
- report "Unable to download latest data: "
- . ($resp? $resp->code . ' - ' . $resp->message : "LWP failed");
- exit 1 if -e $crt || ! -r $txt;
- }
- }
-}
-
-my $filedate = $resp ? $resp->last_modified : (stat($txt))[9];
-my $datesrc = "as of";
-if(!$filedate) {
- # mxr.mozilla.org gave us a time, hg.mozilla.org does not!
- $filedate = time();
- $datesrc="downloaded on";
-}
-
-# get the hash from the download file
-my $newhash= sha256($txt);
-
-if(!$opt_f && $oldhash eq $newhash) {
- report "Downloaded file identical to previous run\'s source file. Exiting";
- if($opt_u && -e $txt && !unlink($txt)) {
- report "Failed to remove $txt: $!\n";
- }
- exit;
-}
-
-report "SHA256 of new file: $newhash";
-
-my $currentdate = scalar gmtime($filedate);
-
-my $format = $opt_t ? "plain text and " : "";
-if( $stdout ) {
- open(CRT, '> -') or die "Couldn't open STDOUT: $!\n";
-} else {
- open(CRT,">$crt.~") or die "Couldn't open $crt.~: $!\n";
-}
-print CRT <<EOT;
-##
-## Bundle of CA Root Certificates
-##
-## Certificate data from Mozilla ${datesrc}: ${currentdate} GMT
-##
-## This is a bundle of X.509 certificates of public Certificate Authorities
-## (CA). These were automatically extracted from Mozilla's root certificates
-## file (certdata.txt). This file can be found in the mozilla source tree:
-## ${url}
-##
-## It contains the certificates in ${format}PEM format and therefore
-## can be directly used with curl / libcurl / php_curl, or with
-## an Apache+mod_ssl webserver for SSL client authentication.
-## Just configure this file as the SSLCACertificateFile.
-##
-## Conversion done with mk-ca-bundle.pl version $version.
-## SHA256: $newhash
-##
-
-EOT
-
-report "Processing '$txt' ...";
-my $caname;
-my $certnum = 0;
-my $skipnum = 0;
-my $start_of_cert = 0;
-my @precert;
-my $cka_value;
-my $valid = 1;
-
-open(TXT,"$txt") or die "Couldn't open $txt: $!\n";
-while (<TXT>) {
- if (/\*\*\*\*\* BEGIN LICENSE BLOCK \*\*\*\*\*/) {
- print CRT;
- print if ($opt_l);
- while (<TXT>) {
- print CRT;
- print if ($opt_l);
- last if (/\*\*\*\*\* END LICENSE BLOCK \*\*\*\*\*/);
- }
- }
-# Not Valid After : Thu Sep 30 14:01:15 2021
- elsif(/^# Not Valid After : (.*)/) {
- my $stamp = $1;
- use Time::Piece;
- my $t = Time::Piece->strptime
- ($stamp, "%a %b %d %H:%M:%S %Y");
- my $delta = ($t->epoch - time()); # negative means no longer valid
- if($delta < 0) {
- $skipnum++;
- report "Skipping: $caname is not valid anymore" if ($opt_v);
- $valid = 0;
- }
- else {
- $valid = 1;
- }
- next;
- }
- elsif(/^# (Issuer|Serial Number|Subject|Not Valid Before|Fingerprint \(MD5\)|Fingerprint \(SHA1\)):/) {
- push @precert, $_;
- next;
- }
- elsif(/^#|^\s*$/) {
- undef @precert;
- next;
- }
- chomp;
-
- # Example:
- # CKA_NSS_SERVER_DISTRUST_AFTER MULTILINE_OCTAL
- # \062\060\060\066\061\067\060\060\060\060\060\060\132
- # END
-
- if (/^CKA_NSS_SERVER_DISTRUST_AFTER (CK_BBOOL CK_FALSE|MULTILINE_OCTAL)/) {
- if($1 eq "MULTILINE_OCTAL") {
- my @timestamp;
- while (<TXT>) {
- last if (/^END/);
- chomp;
- my @octets = split(/\\/);
- shift @octets;
- for (@octets) {
- push @timestamp, chr(oct);
- }
- }
- # A trailing Z in the timestamp signifies UTC
- if($timestamp[12] ne "Z") {
- report "distrust date stamp is not using UTC";
- }
- # Example date: 200617000000Z
- # Means 2020-06-17 00:00:00 UTC
- my $distrustat =
- timegm($timestamp[10] . $timestamp[11], # second
- $timestamp[8] . $timestamp[9], # minute
- $timestamp[6] . $timestamp[7], # hour
- $timestamp[4] . $timestamp[5], # day
- ($timestamp[2] . $timestamp[3]) - 1, # month
- "20" . $timestamp[0] . $timestamp[1]); # year
- if(time >= $distrustat) {
- # not trusted anymore
- $skipnum++;
- report "Skipping: $caname is not trusted anymore" if ($opt_v);
- $valid = 0;
- }
- else {
- # still trusted
- }
- }
- next;
- }
-
- # this is a match for the start of a certificate
- if (/^CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE/) {
- $start_of_cert = 1
- }
- if ($start_of_cert && /^CKA_LABEL UTF8 \"(.*)\"/) {
- $caname = $1;
- }
- my %trust_purposes_by_level;
- if ($start_of_cert && /^CKA_VALUE MULTILINE_OCTAL/) {
- $cka_value="";
- while (<TXT>) {
- last if (/^END/);
- chomp;
- my @octets = split(/\\/);
- shift @octets;
- for (@octets) {
- $cka_value .= chr(oct);
- }
- }
- }
- if(/^CKA_CLASS CK_OBJECT_CLASS CKO_NSS_TRUST/ && $valid) {
- # now scan the trust part to determine how we should trust this cert
- while (<TXT>) {
- last if (/^#/);
- if (/^CKA_TRUST_([A-Z_]+)\s+CK_TRUST\s+CKT_NSS_([A-Z_]+)\s*$/) {
- if ( !is_in_list($1,@valid_mozilla_trust_purposes) ) {
- report "Warning: Unrecognized trust purpose for cert: $caname. Trust purpose: $1. Trust Level: $2";
- } elsif ( !is_in_list($2,@valid_mozilla_trust_levels) ) {
- report "Warning: Unrecognized trust level for cert: $caname. Trust purpose: $1. Trust Level: $2";
- } else {
- push @{$trust_purposes_by_level{$2}}, $1;
- }
- }
- }
-
- if ( !should_output_cert(%trust_purposes_by_level) ) {
- $skipnum ++;
- report "Skipping: $caname" if ($opt_v);
- } else {
- my $data = $cka_value;
- $cka_value = "";
-
- if(!length($data)) {
- # if empty, skip
- next;
- }
- my $encoded = MIME::Base64::encode_base64($data, '');
- $encoded =~ s/(.{1,${opt_w}})/$1\n/g;
- my $pem = "-----BEGIN CERTIFICATE-----\n"
- . $encoded
- . "-----END CERTIFICATE-----\n";
- print CRT "\n$caname\n";
- print CRT @precert if($opt_m);
- my $maxStringLength = length(decode('UTF-8', $caname, Encode::FB_CROAK | Encode::LEAVE_SRC));
- if ($opt_t) {
- foreach my $key (sort keys %trust_purposes_by_level) {
- my $string = $key . ": " . join(", ", @{$trust_purposes_by_level{$key}});
- $maxStringLength = List::Util::max( length($string), $maxStringLength );
- print CRT $string . "\n";
- }
- }
- print CRT ("=" x $maxStringLength . "\n");
- if (!$opt_t) {
- print CRT $pem;
- } else {
- my $pipe = "";
- foreach my $hash (@included_signature_algorithms) {
- $pipe = "|$openssl x509 -" . $hash . " -fingerprint -noout -inform PEM";
- if (!$stdout) {
- $pipe .= " >> $crt.~";
- close(CRT) or die "Couldn't close $crt.~: $!";
- }
- open(TMP, $pipe) or die "Couldn't open openssl pipe: $!";
- print TMP $pem;
- close(TMP) or die "Couldn't close openssl pipe: $!";
- if (!$stdout) {
- open(CRT, ">>$crt.~") or die "Couldn't open $crt.~: $!";
- }
- }
- $pipe = "|$openssl x509 -text -inform PEM";
- if (!$stdout) {
- $pipe .= " >> $crt.~";
- close(CRT) or die "Couldn't close $crt.~: $!";
- }
- open(TMP, $pipe) or die "Couldn't open openssl pipe: $!";
- print TMP $pem;
- close(TMP) or die "Couldn't close openssl pipe: $!";
- if (!$stdout) {
- open(CRT, ">>$crt.~") or die "Couldn't open $crt.~: $!";
- }
- }
- report "Parsing: $caname" if ($opt_v);
- $certnum ++;
- $start_of_cert = 0;
- }
- undef @precert;
- }
-
-}
-close(TXT) or die "Couldn't close $txt: $!\n";
-close(CRT) or die "Couldn't close $crt.~: $!\n";
-unless( $stdout ) {
- if ($opt_b && -e $crt) {
- my $bk = 1;
- while (-e "$crt.~${bk}~") {
- $bk++;
- }
- rename $crt, "$crt.~${bk}~" or die "Failed to create backup $crt.~$bk}~: $!\n";
- } elsif( -e $crt ) {
- unlink( $crt ) or die "Failed to remove $crt: $!\n";
- }
- rename "$crt.~", $crt or die "Failed to rename $crt.~ to $crt: $!\n";
-}
-if($opt_u && -e $txt && !unlink($txt)) {
- report "Failed to remove $txt: $!\n";
-}
-report "Done ($certnum CA certs processed, $skipnum skipped).";
diff --git a/Master/tlpkg/tlperl/site/lib/Net/HTTP.pm b/Master/tlpkg/tlperl/site/lib/Net/HTTP.pm
index c28f8bf95b1..0f6fef8f2cc 100644
--- a/Master/tlpkg/tlperl/site/lib/Net/HTTP.pm
+++ b/Master/tlpkg/tlperl/site/lib/Net/HTTP.pm
@@ -1,5 +1,5 @@
package Net::HTTP;
-our $VERSION = '6.22';
+our $VERSION = '6.23';
use strict;
use warnings;
@@ -50,7 +50,7 @@ Net::HTTP - Low-level HTTP connection (client)
=head1 VERSION
-version 6.22
+version 6.23
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/site/lib/Net/HTTP/Methods.pm b/Master/tlpkg/tlperl/site/lib/Net/HTTP/Methods.pm
index 940cdbccb2c..69f4f014d04 100644
--- a/Master/tlpkg/tlperl/site/lib/Net/HTTP/Methods.pm
+++ b/Master/tlpkg/tlperl/site/lib/Net/HTTP/Methods.pm
@@ -1,5 +1,5 @@
package Net::HTTP::Methods;
-our $VERSION = '6.22';
+our $VERSION = '6.23';
use strict;
use warnings;
use URI;
@@ -655,7 +655,7 @@ Net::HTTP::Methods - Methods shared by Net::HTTP and Net::HTTPS
=head1 VERSION
-version 6.22
+version 6.23
=head1 AUTHOR
diff --git a/Master/tlpkg/tlperl/site/lib/Net/HTTP/NB.pm b/Master/tlpkg/tlperl/site/lib/Net/HTTP/NB.pm
index 52d5bc81bf7..c3292d85445 100644
--- a/Master/tlpkg/tlperl/site/lib/Net/HTTP/NB.pm
+++ b/Master/tlpkg/tlperl/site/lib/Net/HTTP/NB.pm
@@ -1,5 +1,5 @@
package Net::HTTP::NB;
-our $VERSION = '6.22';
+our $VERSION = '6.23';
use strict;
use warnings;
@@ -60,7 +60,7 @@ Net::HTTP::NB - Non-blocking HTTP client
=head1 VERSION
-version 6.22
+version 6.23
=head1 SYNOPSIS
diff --git a/Master/tlpkg/tlperl/site/lib/Net/HTTPS.pm b/Master/tlpkg/tlperl/site/lib/Net/HTTPS.pm
index 4d583262538..08c35835985 100644
--- a/Master/tlpkg/tlperl/site/lib/Net/HTTPS.pm
+++ b/Master/tlpkg/tlperl/site/lib/Net/HTTPS.pm
@@ -1,5 +1,5 @@
package Net::HTTPS;
-our $VERSION = '6.22';
+our $VERSION = '6.23';
use strict;
use warnings;
@@ -90,7 +90,7 @@ Net::HTTPS - Low-level HTTP over SSL/TLS connection (client)
=head1 VERSION
-version 6.22
+version 6.23
=head1 DESCRIPTION
diff --git a/Master/tlpkg/tlperl/site/lib/Socket.pm b/Master/tlpkg/tlperl/site/lib/Socket.pm
new file mode 100755
index 00000000000..81a99f8fce6
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/Socket.pm
@@ -0,0 +1,1143 @@
+package Socket;
+
+use v5.6.1;
+use strict;
+
+our $VERSION = '2.037';
+
+=head1 NAME
+
+C<Socket> - networking constants and support functions
+
+=head1 SYNOPSIS
+
+C<Socket> a low-level module used by, among other things, the L<IO::Socket>
+family of modules. The following examples demonstrate some low-level uses but
+a practical program would likely use the higher-level API provided by
+C<IO::Socket> or similar instead.
+
+ use Socket qw(PF_INET SOCK_STREAM pack_sockaddr_in inet_aton);
+
+ socket(my $socket, PF_INET, SOCK_STREAM, 0)
+ or die "socket: $!";
+
+ my $port = getservbyname "echo", "tcp";
+ connect($socket, pack_sockaddr_in($port, inet_aton("localhost")))
+ or die "connect: $!";
+
+ print $socket "Hello, world!\n";
+ print <$socket>;
+
+See also the L</EXAMPLES> section.
+
+=head1 DESCRIPTION
+
+This module provides a variety of constants, structure manipulators and other
+functions related to socket-based networking. The values and functions
+provided are useful when used in conjunction with Perl core functions such as
+socket(), setsockopt() and bind(). It also provides several other support
+functions, mostly for dealing with conversions of network addresses between
+human-readable and native binary forms, and for hostname resolver operations.
+
+Some constants and functions are exported by default by this module; but for
+backward-compatibility any recently-added symbols are not exported by default
+and must be requested explicitly. When an import list is provided to the
+C<use Socket> line, the default exports are not automatically imported. It is
+therefore best practice to always to explicitly list all the symbols required.
+
+Also, some common socket "newline" constants are provided: the constants
+C<CR>, C<LF>, and C<CRLF>, as well as C<$CR>, C<$LF>, and C<$CRLF>, which map
+to C<\015>, C<\012>, and C<\015\012>. If you do not want to use the literal
+characters in your programs, then use the constants provided here. They are
+not exported by default, but can be imported individually, and with the
+C<:crlf> export tag:
+
+ use Socket qw(:DEFAULT :crlf);
+
+ $sock->print("GET / HTTP/1.0$CRLF");
+
+The entire getaddrinfo() subsystem can be exported using the tag C<:addrinfo>;
+this exports the getaddrinfo() and getnameinfo() functions, and all the
+C<AI_*>, C<NI_*>, C<NIx_*> and C<EAI_*> constants.
+
+=cut
+
+=head1 CONSTANTS
+
+In each of the following groups, there may be many more constants provided
+than just the ones given as examples in the section heading. If the heading
+ends C<...> then this means there are likely more; the exact constants
+provided will depend on the OS and headers found at compile-time.
+
+=cut
+
+=head2 PF_INET, PF_INET6, PF_UNIX, ...
+
+Protocol family constants to use as the first argument to socket() or the
+value of the C<SO_DOMAIN> or C<SO_FAMILY> socket option.
+
+=head2 AF_INET, AF_INET6, AF_UNIX, ...
+
+Address family constants used by the socket address structures, to pass to
+such functions as inet_pton() or getaddrinfo(), or are returned by such
+functions as sockaddr_family().
+
+=head2 SOCK_STREAM, SOCK_DGRAM, SOCK_RAW, ...
+
+Socket type constants to use as the second argument to socket(), or the value
+of the C<SO_TYPE> socket option.
+
+=head2 SOCK_NONBLOCK. SOCK_CLOEXEC
+
+Linux-specific shortcuts to specify the C<O_NONBLOCK> and C<FD_CLOEXEC> flags
+during a C<socket(2)> call.
+
+ socket( my $sockh, PF_INET, SOCK_DGRAM|SOCK_NONBLOCK, 0 )
+
+=head2 SOL_SOCKET
+
+Socket option level constant for setsockopt() and getsockopt().
+
+=head2 SO_ACCEPTCONN, SO_BROADCAST, SO_ERROR, ...
+
+Socket option name constants for setsockopt() and getsockopt() at the
+C<SOL_SOCKET> level.
+
+=head2 IP_OPTIONS, IP_TOS, IP_TTL, ...
+
+Socket option name constants for IPv4 socket options at the C<IPPROTO_IP>
+level.
+
+=head2 IP_PMTUDISC_WANT, IP_PMTUDISC_DONT, ...
+
+Socket option value constants for C<IP_MTU_DISCOVER> socket option.
+
+=head2 IPTOS_LOWDELAY, IPTOS_THROUGHPUT, IPTOS_RELIABILITY, ...
+
+Socket option value constants for C<IP_TOS> socket option.
+
+=head2 MSG_BCAST, MSG_OOB, MSG_TRUNC, ...
+
+Message flag constants for send() and recv().
+
+=head2 SHUT_RD, SHUT_RDWR, SHUT_WR
+
+Direction constants for shutdown().
+
+=head2 INADDR_ANY, INADDR_BROADCAST, INADDR_LOOPBACK, INADDR_NONE
+
+Constants giving the special C<AF_INET> addresses for wildcard, broadcast,
+local loopback, and invalid addresses.
+
+Normally equivalent to inet_aton('0.0.0.0'), inet_aton('255.255.255.255'),
+inet_aton('localhost') and inet_aton('255.255.255.255') respectively.
+
+=head2 IPPROTO_IP, IPPROTO_IPV6, IPPROTO_TCP, ...
+
+IP protocol constants to use as the third argument to socket(), the level
+argument to getsockopt() or setsockopt(), or the value of the C<SO_PROTOCOL>
+socket option.
+
+=head2 TCP_CORK, TCP_KEEPALIVE, TCP_NODELAY, ...
+
+Socket option name constants for TCP socket options at the C<IPPROTO_TCP>
+level.
+
+=head2 IN6ADDR_ANY, IN6ADDR_LOOPBACK
+
+Constants giving the special C<AF_INET6> addresses for wildcard and local
+loopback.
+
+Normally equivalent to inet_pton(AF_INET6, "::") and
+inet_pton(AF_INET6, "::1") respectively.
+
+=head2 IPV6_ADD_MEMBERSHIP, IPV6_MTU, IPV6_V6ONLY, ...
+
+Socket option name constants for IPv6 socket options at the C<IPPROTO_IPV6>
+level.
+
+=cut
+
+# Still undocumented: SCM_*, SOMAXCONN, IOV_MAX, UIO_MAXIOV
+
+=head1 STRUCTURE MANIPULATORS
+
+The following functions convert between lists of Perl values and packed binary
+strings representing structures.
+
+=cut
+
+=head2 $family = sockaddr_family $sockaddr
+
+Takes a packed socket address (as returned by pack_sockaddr_in(),
+pack_sockaddr_un() or the perl builtin functions getsockname() and
+getpeername()). Returns the address family tag. This will be one of the
+C<AF_*> constants, such as C<AF_INET> for a C<sockaddr_in> addresses or
+C<AF_UNIX> for a C<sockaddr_un>. It can be used to figure out what unpack to
+use for a sockaddr of unknown type.
+
+=head2 $sockaddr = pack_sockaddr_in $port, $ip_address
+
+Takes two arguments, a port number and an opaque string (as returned by
+inet_aton(), or a v-string). Returns the C<sockaddr_in> structure with those
+arguments packed in and C<AF_INET> filled in. For Internet domain sockets,
+this structure is normally what you need for the arguments in bind(),
+connect(), and send().
+
+An undefined $port argument is taken as zero; an undefined $ip_address is
+considered a fatal error.
+
+=head2 ($port, $ip_address) = unpack_sockaddr_in $sockaddr
+
+Takes a C<sockaddr_in> structure (as returned by pack_sockaddr_in(),
+getpeername() or recv()). Returns a list of two elements: the port and an
+opaque string representing the IP address (you can use inet_ntoa() to convert
+the address to the four-dotted numeric format). Will croak if the structure
+does not represent an C<AF_INET> address.
+
+In scalar context will return just the IP address.
+
+=head2 $sockaddr = sockaddr_in $port, $ip_address
+
+=head2 ($port, $ip_address) = sockaddr_in $sockaddr
+
+A wrapper of pack_sockaddr_in() or unpack_sockaddr_in(). In list context,
+unpacks its argument and returns a list consisting of the port and IP address.
+In scalar context, packs its port and IP address arguments as a C<sockaddr_in>
+and returns it.
+
+Provided largely for legacy compatibility; it is better to use
+pack_sockaddr_in() or unpack_sockaddr_in() explicitly.
+
+=head2 $sockaddr = pack_sockaddr_in6 $port, $ip6_address, [$scope_id, [$flowinfo]]
+
+Takes two to four arguments, a port number, an opaque string (as returned by
+inet_pton()), optionally a scope ID number, and optionally a flow label
+number. Returns the C<sockaddr_in6> structure with those arguments packed in
+and C<AF_INET6> filled in. IPv6 equivalent of pack_sockaddr_in().
+
+An undefined $port argument is taken as zero; an undefined $ip6_address is
+considered a fatal error.
+
+=head2 ($port, $ip6_address, $scope_id, $flowinfo) = unpack_sockaddr_in6 $sockaddr
+
+Takes a C<sockaddr_in6> structure. Returns a list of four elements: the port
+number, an opaque string representing the IPv6 address, the scope ID, and the
+flow label. (You can use inet_ntop() to convert the address to the usual
+string format). Will croak if the structure does not represent an C<AF_INET6>
+address.
+
+In scalar context will return just the IP address.
+
+=head2 $sockaddr = sockaddr_in6 $port, $ip6_address, [$scope_id, [$flowinfo]]
+
+=head2 ($port, $ip6_address, $scope_id, $flowinfo) = sockaddr_in6 $sockaddr
+
+A wrapper of pack_sockaddr_in6() or unpack_sockaddr_in6(). In list context,
+unpacks its argument according to unpack_sockaddr_in6(). In scalar context,
+packs its arguments according to pack_sockaddr_in6().
+
+Provided largely for legacy compatibility; it is better to use
+pack_sockaddr_in6() or unpack_sockaddr_in6() explicitly.
+
+=head2 $sockaddr = pack_sockaddr_un $path
+
+Takes one argument, a pathname. Returns the C<sockaddr_un> structure with that
+path packed in with C<AF_UNIX> filled in. For C<PF_UNIX> sockets, this
+structure is normally what you need for the arguments in bind(), connect(),
+and send().
+
+=head2 ($path) = unpack_sockaddr_un $sockaddr
+
+Takes a C<sockaddr_un> structure (as returned by pack_sockaddr_un(),
+getpeername() or recv()). Returns a list of one element: the pathname. Will
+croak if the structure does not represent an C<AF_UNIX> address.
+
+=head2 $sockaddr = sockaddr_un $path
+
+=head2 ($path) = sockaddr_un $sockaddr
+
+A wrapper of pack_sockaddr_un() or unpack_sockaddr_un(). In a list context,
+unpacks its argument and returns a list consisting of the pathname. In a
+scalar context, packs its pathname as a C<sockaddr_un> and returns it.
+
+Provided largely for legacy compatibility; it is better to use
+pack_sockaddr_un() or unpack_sockaddr_un() explicitly.
+
+These are only supported if your system has E<lt>F<sys/un.h>E<gt>.
+
+=head2 $ip_mreq = pack_ip_mreq $multiaddr, $interface
+
+Takes an IPv4 multicast address and optionally an interface address (or
+C<INADDR_ANY>). Returns the C<ip_mreq> structure with those arguments packed
+in. Suitable for use with the C<IP_ADD_MEMBERSHIP> and C<IP_DROP_MEMBERSHIP>
+sockopts.
+
+=head2 ($multiaddr, $interface) = unpack_ip_mreq $ip_mreq
+
+Takes an C<ip_mreq> structure. Returns a list of two elements; the IPv4
+multicast address and interface address.
+
+=head2 $ip_mreq_source = pack_ip_mreq_source $multiaddr, $source, $interface
+
+Takes an IPv4 multicast address, source address, and optionally an interface
+address (or C<INADDR_ANY>). Returns the C<ip_mreq_source> structure with those
+arguments packed in. Suitable for use with the C<IP_ADD_SOURCE_MEMBERSHIP>
+and C<IP_DROP_SOURCE_MEMBERSHIP> sockopts.
+
+=head2 ($multiaddr, $source, $interface) = unpack_ip_mreq_source $ip_mreq
+
+Takes an C<ip_mreq_source> structure. Returns a list of three elements; the
+IPv4 multicast address, source address and interface address.
+
+=head2 $ipv6_mreq = pack_ipv6_mreq $multiaddr6, $ifindex
+
+Takes an IPv6 multicast address and an interface number. Returns the
+C<ipv6_mreq> structure with those arguments packed in. Suitable for use with
+the C<IPV6_ADD_MEMBERSHIP> and C<IPV6_DROP_MEMBERSHIP> sockopts.
+
+=head2 ($multiaddr6, $ifindex) = unpack_ipv6_mreq $ipv6_mreq
+
+Takes an C<ipv6_mreq> structure. Returns a list of two elements; the IPv6
+address and an interface number.
+
+=cut
+
+=head1 FUNCTIONS
+
+=cut
+
+=head2 $ip_address = inet_aton $string
+
+Takes a string giving the name of a host, or a textual representation of an IP
+address and translates that to an packed binary address structure suitable to
+pass to pack_sockaddr_in(). If passed a hostname that cannot be resolved,
+returns C<undef>. For multi-homed hosts (hosts with more than one address),
+the first address found is returned.
+
+For portability do not assume that the result of inet_aton() is 32 bits wide,
+in other words, that it would contain only the IPv4 address in network order.
+
+This IPv4-only function is provided largely for legacy reasons. Newly-written
+code should use getaddrinfo() or inet_pton() instead for IPv6 support.
+
+=head2 $string = inet_ntoa $ip_address
+
+Takes a packed binary address structure such as returned by
+unpack_sockaddr_in() (or a v-string representing the four octets of the IPv4
+address in network order) and translates it into a string of the form
+C<d.d.d.d> where the C<d>s are numbers less than 256 (the normal
+human-readable four dotted number notation for Internet addresses).
+
+This IPv4-only function is provided largely for legacy reasons. Newly-written
+code should use getnameinfo() or inet_ntop() instead for IPv6 support.
+
+=head2 $address = inet_pton $family, $string
+
+Takes an address family (such as C<AF_INET> or C<AF_INET6>) and a string
+containing a textual representation of an address in that family and
+translates that to an packed binary address structure.
+
+See also getaddrinfo() for a more powerful and flexible function to look up
+socket addresses given hostnames or textual addresses.
+
+=head2 $string = inet_ntop $family, $address
+
+Takes an address family and a packed binary address structure and translates
+it into a human-readable textual representation of the address; typically in
+C<d.d.d.d> form for C<AF_INET> or C<hhhh:hhhh::hhhh> form for C<AF_INET6>.
+
+See also getnameinfo() for a more powerful and flexible function to turn
+socket addresses into human-readable textual representations.
+
+=head2 ($err, @result) = getaddrinfo $host, $service, [$hints]
+
+Given both a hostname and service name, this function attempts to resolve the
+host name into a list of network addresses, and the service name into a
+protocol and port number, and then returns a list of address structures
+suitable to connect() to it.
+
+Given just a host name, this function attempts to resolve it to a list of
+network addresses, and then returns a list of address structures giving these
+addresses.
+
+Given just a service name, this function attempts to resolve it to a protocol
+and port number, and then returns a list of address structures that represent
+it suitable to bind() to. This use should be combined with the C<AI_PASSIVE>
+flag; see below.
+
+Given neither name, it generates an error.
+
+If present, $hints should be a reference to a hash, where the following keys
+are recognised:
+
+=over 4
+
+=item flags => INT
+
+A bitfield containing C<AI_*> constants; see below.
+
+=item family => INT
+
+Restrict to only generating addresses in this address family
+
+=item socktype => INT
+
+Restrict to only generating addresses of this socket type
+
+=item protocol => INT
+
+Restrict to only generating addresses for this protocol
+
+=back
+
+The return value will be a list; the first value being an error indication,
+followed by a list of address structures (if no error occurred).
+
+The error value will be a dualvar; comparable to the C<EAI_*> error constants,
+or printable as a human-readable error message string. If no error occurred it
+will be zero numerically and an empty string.
+
+Each value in the results list will be a hash reference containing the following
+fields:
+
+=over 4
+
+=item family => INT
+
+The address family (e.g. C<AF_INET>)
+
+=item socktype => INT
+
+The socket type (e.g. C<SOCK_STREAM>)
+
+=item protocol => INT
+
+The protocol (e.g. C<IPPROTO_TCP>)
+
+=item addr => STRING
+
+The address in a packed string (such as would be returned by
+pack_sockaddr_in())
+
+=item canonname => STRING
+
+The canonical name for the host if the C<AI_CANONNAME> flag was provided, or
+C<undef> otherwise. This field will only be present on the first returned
+address.
+
+=back
+
+The following flag constants are recognised in the $hints hash. Other flag
+constants may exist as provided by the OS.
+
+=over 4
+
+=item AI_PASSIVE
+
+Indicates that this resolution is for a local bind() for a passive (i.e.
+listening) socket, rather than an active (i.e. connecting) socket.
+
+=item AI_CANONNAME
+
+Indicates that the caller wishes the canonical hostname (C<canonname>) field
+of the result to be filled in.
+
+=item AI_NUMERICHOST
+
+Indicates that the caller will pass a numeric address, rather than a hostname,
+and that getaddrinfo() must not perform a resolve operation on this name. This
+flag will prevent a possibly-slow network lookup operation, and instead return
+an error if a hostname is passed.
+
+=back
+
+=head2 ($err, $hostname, $servicename) = getnameinfo $sockaddr, [$flags, [$xflags]]
+
+Given a packed socket address (such as from getsockname(), getpeername(), or
+returned by getaddrinfo() in a C<addr> field), returns the hostname and
+symbolic service name it represents. $flags may be a bitmask of C<NI_*>
+constants, or defaults to 0 if unspecified.
+
+The return value will be a list; the first value being an error condition,
+followed by the hostname and service name.
+
+The error value will be a dualvar; comparable to the C<EAI_*> error constants,
+or printable as a human-readable error message string. The host and service
+names will be plain strings.
+
+The following flag constants are recognised as $flags. Other flag constants may
+exist as provided by the OS.
+
+=over 4
+
+=item NI_NUMERICHOST
+
+Requests that a human-readable string representation of the numeric address be
+returned directly, rather than performing a name resolve operation that may
+convert it into a hostname. This will also avoid potentially-blocking network
+IO.
+
+=item NI_NUMERICSERV
+
+Requests that the port number be returned directly as a number representation
+rather than performing a name resolve operation that may convert it into a
+service name.
+
+=item NI_NAMEREQD
+
+If a name resolve operation fails to provide a name, then this flag will cause
+getnameinfo() to indicate an error, rather than returning the numeric
+representation as a human-readable string.
+
+=item NI_DGRAM
+
+Indicates that the socket address relates to a C<SOCK_DGRAM> socket, for the
+services whose name differs between TCP and UDP protocols.
+
+=back
+
+The following constants may be supplied as $xflags.
+
+=over 4
+
+=item NIx_NOHOST
+
+Indicates that the caller is not interested in the hostname of the result, so
+it does not have to be converted. C<undef> will be returned as the hostname.
+
+=item NIx_NOSERV
+
+Indicates that the caller is not interested in the service name of the result,
+so it does not have to be converted. C<undef> will be returned as the service
+name.
+
+=back
+
+=head1 getaddrinfo() / getnameinfo() ERROR CONSTANTS
+
+The following constants may be returned by getaddrinfo() or getnameinfo().
+Others may be provided by the OS.
+
+=over 4
+
+=item EAI_AGAIN
+
+A temporary failure occurred during name resolution. The operation may be
+successful if it is retried later.
+
+=item EAI_BADFLAGS
+
+The value of the C<flags> hint to getaddrinfo(), or the $flags parameter to
+getnameinfo() contains unrecognised flags.
+
+=item EAI_FAMILY
+
+The C<family> hint to getaddrinfo(), or the family of the socket address
+passed to getnameinfo() is not supported.
+
+=item EAI_NODATA
+
+The host name supplied to getaddrinfo() did not provide any usable address
+data.
+
+=item EAI_NONAME
+
+The host name supplied to getaddrinfo() does not exist, or the address
+supplied to getnameinfo() is not associated with a host name and the
+C<NI_NAMEREQD> flag was supplied.
+
+=item EAI_SERVICE
+
+The service name supplied to getaddrinfo() is not available for the socket
+type given in the $hints.
+
+=back
+
+=cut
+
+=head1 EXAMPLES
+
+=head2 Lookup for connect()
+
+The getaddrinfo() function converts a hostname and a service name into a list
+of structures, each containing a potential way to connect() to the named
+service on the named host.
+
+ use IO::Socket;
+ use Socket qw(SOCK_STREAM getaddrinfo);
+
+ my %hints = (socktype => SOCK_STREAM);
+ my ($err, @res) = getaddrinfo("localhost", "echo", \%hints);
+ die "Cannot getaddrinfo - $err" if $err;
+
+ my $sock;
+
+ foreach my $ai (@res) {
+ my $candidate = IO::Socket->new();
+
+ $candidate->socket($ai->{family}, $ai->{socktype}, $ai->{protocol})
+ or next;
+
+ $candidate->connect($ai->{addr})
+ or next;
+
+ $sock = $candidate;
+ last;
+ }
+
+ die "Cannot connect to localhost:echo" unless $sock;
+
+ $sock->print("Hello, world!\n");
+ print <$sock>;
+
+Because a list of potential candidates is returned, the C<while> loop tries
+each in turn until it finds one that succeeds both the socket() and connect()
+calls.
+
+This function performs the work of the legacy functions gethostbyname(),
+getservbyname(), inet_aton() and pack_sockaddr_in().
+
+In practice this logic is better performed by L<IO::Socket::IP>.
+
+=head2 Making a human-readable string out of an address
+
+The getnameinfo() function converts a socket address, such as returned by
+getsockname() or getpeername(), into a pair of human-readable strings
+representing the address and service name.
+
+ use IO::Socket::IP;
+ use Socket qw(getnameinfo);
+
+ my $server = IO::Socket::IP->new(LocalPort => 12345, Listen => 1) or
+ die "Cannot listen - $@";
+
+ my $socket = $server->accept or die "accept: $!";
+
+ my ($err, $hostname, $servicename) = getnameinfo($socket->peername);
+ die "Cannot getnameinfo - $err" if $err;
+
+ print "The peer is connected from $hostname\n";
+
+Since in this example only the hostname was used, the redundant conversion of
+the port number into a service name may be omitted by passing the
+C<NIx_NOSERV> flag.
+
+ use Socket qw(getnameinfo NIx_NOSERV);
+
+ my ($err, $hostname) = getnameinfo($socket->peername, 0, NIx_NOSERV);
+
+This function performs the work of the legacy functions unpack_sockaddr_in(),
+inet_ntoa(), gethostbyaddr() and getservbyport().
+
+In practice this logic is better performed by L<IO::Socket::IP>.
+
+=head2 Resolving hostnames into IP addresses
+
+To turn a hostname into a human-readable plain IP address use getaddrinfo()
+to turn the hostname into a list of socket structures, then getnameinfo() on
+each one to make it a readable IP address again.
+
+ use Socket qw(:addrinfo SOCK_RAW);
+
+ my ($err, @res) = getaddrinfo($hostname, "", {socktype => SOCK_RAW});
+ die "Cannot getaddrinfo - $err" if $err;
+
+ while( my $ai = shift @res ) {
+ my ($err, $ipaddr) = getnameinfo($ai->{addr}, NI_NUMERICHOST, NIx_NOSERV);
+ die "Cannot getnameinfo - $err" if $err;
+
+ print "$ipaddr\n";
+ }
+
+The C<socktype> hint to getaddrinfo() filters the results to only include one
+socket type and protocol. Without this most OSes return three combinations,
+for C<SOCK_STREAM>, C<SOCK_DGRAM> and C<SOCK_RAW>, resulting in triplicate
+output of addresses. The C<NI_NUMERICHOST> flag to getnameinfo() causes it to
+return a string-formatted plain IP address, rather than reverse resolving it
+back into a hostname.
+
+This combination performs the work of the legacy functions gethostbyname()
+and inet_ntoa().
+
+=head2 Accessing socket options
+
+The many C<SO_*> and other constants provide the socket option names for
+getsockopt() and setsockopt().
+
+ use IO::Socket::INET;
+ use Socket qw(SOL_SOCKET SO_RCVBUF IPPROTO_IP IP_TTL);
+
+ my $socket = IO::Socket::INET->new(LocalPort => 0, Proto => 'udp')
+ or die "Cannot create socket: $@";
+
+ $socket->setsockopt(SOL_SOCKET, SO_RCVBUF, 64*1024) or
+ die "setsockopt: $!";
+
+ print "Receive buffer is ", $socket->getsockopt(SOL_SOCKET, SO_RCVBUF),
+ " bytes\n";
+
+ print "IP TTL is ", $socket->getsockopt(IPPROTO_IP, IP_TTL), "\n";
+
+As a convenience, L<IO::Socket>'s setsockopt() method will convert a number
+into a packed byte buffer, and getsockopt() will unpack a byte buffer of the
+correct size back into a number.
+
+=cut
+
+=head1 AUTHOR
+
+This module was originally maintained in Perl core by the Perl 5 Porters.
+
+It was extracted to dual-life on CPAN at version 1.95 by
+Paul Evans <leonerd@leonerd.org.uk>
+
+=cut
+
+use Carp;
+use warnings::register;
+
+require Exporter;
+require XSLoader;
+our @ISA = qw(Exporter);
+
+# <@Nicholas> you can't change @EXPORT without breaking the implicit API
+# Please put any new constants in @EXPORT_OK!
+
+# List re-ordered to match documentation above. Try to keep the ordering
+# consistent so it's easier to see which ones are or aren't documented.
+our @EXPORT = qw(
+ PF_802 PF_AAL PF_APPLETALK PF_CCITT PF_CHAOS PF_CTF PF_DATAKIT
+ PF_DECnet PF_DLI PF_ECMA PF_GOSIP PF_HYLINK PF_IMPLINK PF_INET PF_INET6
+ PF_ISO PF_KEY PF_LAST PF_LAT PF_LINK PF_MAX PF_NBS PF_NIT PF_NS PF_OSI
+ PF_OSINET PF_PUP PF_ROUTE PF_SNA PF_UNIX PF_UNSPEC PF_USER PF_WAN
+ PF_X25
+
+ AF_802 AF_AAL AF_APPLETALK AF_CCITT AF_CHAOS AF_CTF AF_DATAKIT
+ AF_DECnet AF_DLI AF_ECMA AF_GOSIP AF_HYLINK AF_IMPLINK AF_INET AF_INET6
+ AF_ISO AF_KEY AF_LAST AF_LAT AF_LINK AF_MAX AF_NBS AF_NIT AF_NS AF_OSI
+ AF_OSINET AF_PUP AF_ROUTE AF_SNA AF_UNIX AF_UNSPEC AF_USER AF_WAN
+ AF_X25
+
+ SOCK_DGRAM SOCK_RAW SOCK_RDM SOCK_SEQPACKET SOCK_STREAM
+
+ SOL_SOCKET
+
+ SO_ACCEPTCONN SO_ATTACH_FILTER SO_BACKLOG SO_BROADCAST SO_CHAMELEON
+ SO_DEBUG SO_DETACH_FILTER SO_DGRAM_ERRIND SO_DOMAIN SO_DONTLINGER
+ SO_DONTROUTE SO_ERROR SO_FAMILY SO_KEEPALIVE SO_LINGER SO_OOBINLINE
+ SO_PASSCRED SO_PASSIFNAME SO_PEERCRED SO_PROTOCOL SO_PROTOTYPE
+ SO_RCVBUF SO_RCVLOWAT SO_RCVTIMEO SO_REUSEADDR SO_REUSEPORT
+ SO_SECURITY_AUTHENTICATION SO_SECURITY_ENCRYPTION_NETWORK
+ SO_SECURITY_ENCRYPTION_TRANSPORT SO_SNDBUF SO_SNDLOWAT SO_SNDTIMEO
+ SO_STATE SO_TYPE SO_USELOOPBACK SO_XOPEN SO_XSE
+
+ IP_HDRINCL IP_OPTIONS IP_RECVOPTS IP_RECVRETOPTS IP_RETOPTS IP_TOS
+ IP_TTL
+
+ MSG_BCAST MSG_BTAG MSG_CTLFLAGS MSG_CTLIGNORE MSG_CTRUNC MSG_DONTROUTE
+ MSG_DONTWAIT MSG_EOF MSG_EOR MSG_ERRQUEUE MSG_ETAG MSG_FASTOPEN MSG_FIN
+ MSG_MAXIOVLEN MSG_MCAST MSG_NOSIGNAL MSG_OOB MSG_PEEK MSG_PROXY MSG_RST
+ MSG_SYN MSG_TRUNC MSG_URG MSG_WAITALL MSG_WIRE
+
+ SHUT_RD SHUT_RDWR SHUT_WR
+
+ INADDR_ANY INADDR_BROADCAST INADDR_LOOPBACK INADDR_NONE
+
+ SCM_CONNECT SCM_CREDENTIALS SCM_CREDS SCM_RIGHTS SCM_TIMESTAMP
+
+ SOMAXCONN
+
+ IOV_MAX
+ UIO_MAXIOV
+
+ sockaddr_family
+ pack_sockaddr_in unpack_sockaddr_in sockaddr_in
+ pack_sockaddr_in6 unpack_sockaddr_in6 sockaddr_in6
+ pack_sockaddr_un unpack_sockaddr_un sockaddr_un
+
+ inet_aton inet_ntoa
+);
+
+# List re-ordered to match documentation above. Try to keep the ordering
+# consistent so it's easier to see which ones are or aren't documented.
+our @EXPORT_OK = qw(
+ CR LF CRLF $CR $LF $CRLF
+
+ SOCK_NONBLOCK SOCK_CLOEXEC
+
+ IP_ADD_MEMBERSHIP IP_ADD_SOURCE_MEMBERSHIP IP_BIND_ADDRESS_NO_PORT
+ IP_DROP_MEMBERSHIP IP_DROP_SOURCE_MEMBERSHIP IP_FREEBIND
+ IP_MULTICAST_ALL IP_MULTICAST_IF IP_MULTICAST_LOOP IP_MULTICAST_TTL
+ IP_MTU IP_MTU_DISCOVER IP_NODEFRAG IP_RECVERR IP_TRANSPARENT
+
+ IPPROTO_IP IPPROTO_IPV6 IPPROTO_RAW IPPROTO_ICMP IPPROTO_IGMP
+ IPPROTO_TCP IPPROTO_UDP IPPROTO_GRE IPPROTO_ESP IPPROTO_AH
+ IPPROTO_ICMPV6 IPPROTO_SCTP
+
+ IP_PMTUDISC_DO IP_PMTUDISC_DONT IP_PMTUDISC_PROBE IP_PMTUDISC_WANT
+
+ IPTOS_LOWDELAY IPTOS_THROUGHPUT IPTOS_RELIABILITY IPTOS_MINCOST
+
+ TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT
+ TCP_FASTOPEN TCP_INFO TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT
+ TCP_KEEPIDLE TCP_KEEPINTVL TCP_LINGER2 TCP_MAXRT TCP_MAXSEG
+ TCP_MD5SIG TCP_NODELAY TCP_NOOPT TCP_NOPUSH TCP_QUICKACK
+ TCP_SACK_ENABLE TCP_STDURG TCP_SYNCNT TCP_USER_TIMEOUT
+ TCP_WINDOW_CLAMP
+
+ IN6ADDR_ANY IN6ADDR_LOOPBACK
+
+ IPV6_ADDRFROM IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_JOIN_GROUP
+ IPV6_LEAVE_GROUP IPV6_MTU IPV6_MTU_DISCOVER IPV6_MULTICAST_HOPS
+ IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_RECVERR IPV6_ROUTER_ALERT
+ IPV6_UNICAST_HOPS IPV6_V6ONLY
+
+ SO_INCOMING_CPU SO_INCOMING_NAPI_ID SO_LOCK_FILTER SO_RCVBUFFORCE
+ SO_SNDBUFFORCE
+
+ pack_ip_mreq unpack_ip_mreq pack_ip_mreq_source unpack_ip_mreq_source
+
+ pack_ipv6_mreq unpack_ipv6_mreq
+
+ inet_pton inet_ntop
+
+ getaddrinfo getnameinfo
+
+ AI_ADDRCONFIG AI_ALL AI_CANONIDN AI_CANONNAME AI_IDN
+ AI_IDN_ALLOW_UNASSIGNED AI_IDN_USE_STD3_ASCII_RULES AI_NUMERICHOST
+ AI_NUMERICSERV AI_PASSIVE AI_V4MAPPED
+
+ NI_DGRAM NI_IDN NI_IDN_ALLOW_UNASSIGNED NI_IDN_USE_STD3_ASCII_RULES
+ NI_NAMEREQD NI_NOFQDN NI_NUMERICHOST NI_NUMERICSERV
+
+ NIx_NOHOST NIx_NOSERV
+
+ EAI_ADDRFAMILY EAI_AGAIN EAI_BADFLAGS EAI_BADHINTS EAI_FAIL EAI_FAMILY
+ EAI_NODATA EAI_NONAME EAI_PROTOCOL EAI_SERVICE EAI_SOCKTYPE EAI_SYSTEM
+);
+
+our %EXPORT_TAGS = (
+ crlf => [qw(CR LF CRLF $CR $LF $CRLF)],
+ addrinfo => [qw(getaddrinfo getnameinfo), grep m/^(?:AI|NI|NIx|EAI)_/, @EXPORT_OK],
+ all => [@EXPORT, @EXPORT_OK],
+);
+
+BEGIN {
+ sub CR () {"\015"}
+ sub LF () {"\012"}
+ sub CRLF () {"\015\012"}
+
+ # These are not gni() constants; they're extensions for the perl API
+ # The definitions in Socket.pm and Socket.xs must match
+ sub NIx_NOHOST() {1 << 0}
+ sub NIx_NOSERV() {1 << 1}
+}
+
+*CR = \CR();
+*LF = \LF();
+*CRLF = \CRLF();
+
+# The four deprecated addrinfo constants
+foreach my $name (qw( AI_IDN_ALLOW_UNASSIGNED AI_IDN_USE_STD3_ASCII_RULES NI_IDN_ALLOW_UNASSIGNED NI_IDN_USE_STD3_ASCII_RULES )) {
+ no strict 'refs';
+ *$name = sub {
+ croak "The addrinfo constant $name is deprecated";
+ };
+}
+
+sub sockaddr_in {
+ if (@_ == 6 && !wantarray) { # perl5.001m compat; use this && die
+ my($af, $port, @quad) = @_;
+ warnings::warn "6-ARG sockaddr_in call is deprecated"
+ if warnings::enabled();
+ pack_sockaddr_in($port, inet_aton(join('.', @quad)));
+ } elsif (wantarray) {
+ croak "usage: (port,iaddr) = sockaddr_in(sin_sv)" unless @_ == 1;
+ unpack_sockaddr_in(@_);
+ } else {
+ croak "usage: sin_sv = sockaddr_in(port,iaddr))" unless @_ == 2;
+ pack_sockaddr_in(@_);
+ }
+}
+
+sub sockaddr_in6 {
+ if (wantarray) {
+ croak "usage: (port,in6addr,scope_id,flowinfo) = sockaddr_in6(sin6_sv)" unless @_ == 1;
+ unpack_sockaddr_in6(@_);
+ }
+ else {
+ croak "usage: sin6_sv = sockaddr_in6(port,in6addr,[scope_id,[flowinfo]])" unless @_ >= 2 and @_ <= 4;
+ pack_sockaddr_in6(@_);
+ }
+}
+
+sub sockaddr_un {
+ if (wantarray) {
+ croak "usage: (filename) = sockaddr_un(sun_sv)" unless @_ == 1;
+ unpack_sockaddr_un(@_);
+ } else {
+ croak "usage: sun_sv = sockaddr_un(filename)" unless @_ == 1;
+ pack_sockaddr_un(@_);
+ }
+}
+
+XSLoader::load(__PACKAGE__, $VERSION);
+
+my %errstr;
+
+if( defined &getaddrinfo ) {
+ # These are not part of the API, nothing uses them, and deleting them
+ # reduces the size of %Socket:: by about 12K
+ delete $Socket::{fake_getaddrinfo};
+ delete $Socket::{fake_getnameinfo};
+} else {
+ require Scalar::Util;
+
+ *getaddrinfo = \&fake_getaddrinfo;
+ *getnameinfo = \&fake_getnameinfo;
+
+ # These numbers borrowed from GNU libc's implementation, but since
+ # they're only used by our emulation, it doesn't matter if the real
+ # platform's values differ
+ my %constants = (
+ AI_PASSIVE => 1,
+ AI_CANONNAME => 2,
+ AI_NUMERICHOST => 4,
+ AI_V4MAPPED => 8,
+ AI_ALL => 16,
+ AI_ADDRCONFIG => 32,
+ # RFC 2553 doesn't define this but Linux does - lets be nice and
+ # provide it since we can
+ AI_NUMERICSERV => 1024,
+
+ EAI_BADFLAGS => -1,
+ EAI_NONAME => -2,
+ EAI_NODATA => -5,
+ EAI_FAMILY => -6,
+ EAI_SERVICE => -8,
+
+ NI_NUMERICHOST => 1,
+ NI_NUMERICSERV => 2,
+ NI_NOFQDN => 4,
+ NI_NAMEREQD => 8,
+ NI_DGRAM => 16,
+
+ # Constants we don't support. Export them, but croak if anyone tries to
+ # use them
+ AI_IDN => 64,
+ AI_CANONIDN => 128,
+ NI_IDN => 32,
+
+ # Error constants we'll never return, so it doesn't matter what value
+ # these have, nor that we don't provide strings for them
+ EAI_SYSTEM => -11,
+ EAI_BADHINTS => -1000,
+ EAI_PROTOCOL => -1001
+ );
+
+ foreach my $name ( keys %constants ) {
+ my $value = $constants{$name};
+
+ no strict 'refs';
+ defined &$name or *$name = sub () { $value };
+ }
+
+ %errstr = (
+ # These strings from RFC 2553
+ EAI_BADFLAGS() => "invalid value for ai_flags",
+ EAI_NONAME() => "nodename nor servname provided, or not known",
+ EAI_NODATA() => "no address associated with nodename",
+ EAI_FAMILY() => "ai_family not supported",
+ EAI_SERVICE() => "servname not supported for ai_socktype",
+ );
+}
+
+# The following functions are used if the system does not have a
+# getaddrinfo(3) function in libc; and are used to emulate it for the AF_INET
+# family
+
+# Borrowed from Regexp::Common::net
+my $REGEXP_IPv4_DECIMAL = qr/25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}/;
+my $REGEXP_IPv4_DOTTEDQUAD = qr/$REGEXP_IPv4_DECIMAL\.$REGEXP_IPv4_DECIMAL\.$REGEXP_IPv4_DECIMAL\.$REGEXP_IPv4_DECIMAL/;
+
+sub fake_makeerr
+{
+ my ( $errno ) = @_;
+ my $errstr = $errno == 0 ? "" : ( $errstr{$errno} || $errno );
+ return Scalar::Util::dualvar( $errno, $errstr );
+}
+
+sub fake_getaddrinfo
+{
+ my ( $node, $service, $hints ) = @_;
+
+ $node = "" unless defined $node;
+
+ $service = "" unless defined $service;
+
+ my ( $family, $socktype, $protocol, $flags ) = @$hints{qw( family socktype protocol flags )};
+
+ $family ||= Socket::AF_INET(); # 0 == AF_UNSPEC, which we want too
+ $family == Socket::AF_INET() or return fake_makeerr( EAI_FAMILY() );
+
+ $socktype ||= 0;
+
+ $protocol ||= 0;
+
+ $flags ||= 0;
+
+ my $flag_passive = $flags & AI_PASSIVE(); $flags &= ~AI_PASSIVE();
+ my $flag_canonname = $flags & AI_CANONNAME(); $flags &= ~AI_CANONNAME();
+ my $flag_numerichost = $flags & AI_NUMERICHOST(); $flags &= ~AI_NUMERICHOST();
+ my $flag_numericserv = $flags & AI_NUMERICSERV(); $flags &= ~AI_NUMERICSERV();
+
+ # These constants don't apply to AF_INET-only lookups, so we might as well
+ # just ignore them. For AI_ADDRCONFIG we just presume the host has ability
+ # to talk AF_INET. If not we'd have to return no addresses at all. :)
+ $flags &= ~(AI_V4MAPPED()|AI_ALL()|AI_ADDRCONFIG());
+
+ $flags & (AI_IDN()|AI_CANONIDN()) and
+ croak "Socket::getaddrinfo() does not support IDN";
+
+ $flags == 0 or return fake_makeerr( EAI_BADFLAGS() );
+
+ $node eq "" and $service eq "" and return fake_makeerr( EAI_NONAME() );
+
+ my $canonname;
+ my @addrs;
+ if( $node ne "" ) {
+ return fake_makeerr( EAI_NONAME() ) if( $flag_numerichost and $node !~ m/^$REGEXP_IPv4_DOTTEDQUAD$/ );
+ ( $canonname, undef, undef, undef, @addrs ) = gethostbyname( $node );
+ defined $canonname or return fake_makeerr( EAI_NONAME() );
+
+ undef $canonname unless $flag_canonname;
+ }
+ else {
+ $addrs[0] = $flag_passive ? Socket::inet_aton( "0.0.0.0" )
+ : Socket::inet_aton( "127.0.0.1" );
+ }
+
+ my @ports; # Actually ARRAYrefs of [ socktype, protocol, port ]
+ my $protname = "";
+ if( $protocol ) {
+ $protname = eval { getprotobynumber( $protocol ) };
+ }
+
+ if( $service ne "" and $service !~ m/^\d+$/ ) {
+ return fake_makeerr( EAI_NONAME() ) if( $flag_numericserv );
+ getservbyname( $service, $protname ) or return fake_makeerr( EAI_SERVICE() );
+ }
+
+ foreach my $this_socktype ( Socket::SOCK_STREAM(), Socket::SOCK_DGRAM(), Socket::SOCK_RAW() ) {
+ next if $socktype and $this_socktype != $socktype;
+
+ my $this_protname = "raw";
+ $this_socktype == Socket::SOCK_STREAM() and $this_protname = "tcp";
+ $this_socktype == Socket::SOCK_DGRAM() and $this_protname = "udp";
+
+ next if $protname and $this_protname ne $protname;
+
+ my $port;
+ if( $service ne "" ) {
+ if( $service =~ m/^\d+$/ ) {
+ $port = "$service";
+ }
+ else {
+ ( undef, undef, $port, $this_protname ) = getservbyname( $service, $this_protname );
+ next unless defined $port;
+ }
+ }
+ else {
+ $port = 0;
+ }
+
+ push @ports, [ $this_socktype, eval { scalar getprotobyname( $this_protname ) } || 0, $port ];
+ }
+
+ my @ret;
+ foreach my $addr ( @addrs ) {
+ foreach my $portspec ( @ports ) {
+ my ( $socktype, $protocol, $port ) = @$portspec;
+ push @ret, {
+ family => $family,
+ socktype => $socktype,
+ protocol => $protocol,
+ addr => Socket::pack_sockaddr_in( $port, $addr ),
+ canonname => undef,
+ };
+ }
+ }
+
+ # Only supply canonname for the first result
+ if( defined $canonname ) {
+ $ret[0]->{canonname} = $canonname;
+ }
+
+ return ( fake_makeerr( 0 ), @ret );
+}
+
+sub fake_getnameinfo
+{
+ my ( $addr, $flags, $xflags ) = @_;
+
+ my ( $port, $inetaddr );
+ eval { ( $port, $inetaddr ) = Socket::unpack_sockaddr_in( $addr ) }
+ or return fake_makeerr( EAI_FAMILY() );
+
+ my $family = Socket::AF_INET();
+
+ $flags ||= 0;
+
+ my $flag_numerichost = $flags & NI_NUMERICHOST(); $flags &= ~NI_NUMERICHOST();
+ my $flag_numericserv = $flags & NI_NUMERICSERV(); $flags &= ~NI_NUMERICSERV();
+ my $flag_nofqdn = $flags & NI_NOFQDN(); $flags &= ~NI_NOFQDN();
+ my $flag_namereqd = $flags & NI_NAMEREQD(); $flags &= ~NI_NAMEREQD();
+ my $flag_dgram = $flags & NI_DGRAM() ; $flags &= ~NI_DGRAM();
+
+ $flags & NI_IDN() and
+ croak "Socket::getnameinfo() does not support IDN";
+
+ $flags == 0 or return fake_makeerr( EAI_BADFLAGS() );
+
+ $xflags ||= 0;
+
+ my $node;
+ if( $xflags & NIx_NOHOST ) {
+ $node = undef;
+ }
+ elsif( $flag_numerichost ) {
+ $node = Socket::inet_ntoa( $inetaddr );
+ }
+ else {
+ $node = gethostbyaddr( $inetaddr, $family );
+ if( !defined $node ) {
+ return fake_makeerr( EAI_NONAME() ) if $flag_namereqd;
+ $node = Socket::inet_ntoa( $inetaddr );
+ }
+ elsif( $flag_nofqdn ) {
+ my ( $shortname ) = split m/\./, $node;
+ my ( $fqdn ) = gethostbyname $shortname;
+ $node = $shortname if defined $fqdn and $fqdn eq $node;
+ }
+ }
+
+ my $service;
+ if( $xflags & NIx_NOSERV ) {
+ $service = undef;
+ }
+ elsif( $flag_numericserv ) {
+ $service = "$port";
+ }
+ else {
+ my $protname = $flag_dgram ? "udp" : "";
+ $service = getservbyport( $port, $protname );
+ if( !defined $service ) {
+ $service = "$port";
+ }
+ }
+
+ return ( fake_makeerr( 0 ), $node, $service );
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Base.pm b/Master/tlpkg/tlperl/site/lib/TAP/Base.pm
new file mode 100755
index 00000000000..502ad1d4a40
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Base.pm
@@ -0,0 +1,133 @@
+package TAP::Base;
+
+use strict;
+use warnings;
+
+use base 'TAP::Object';
+
+=head1 NAME
+
+TAP::Base - Base class that provides common functionality to L<TAP::Parser>
+and L<TAP::Harness>
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+use constant GOT_TIME_HIRES => do {
+ eval 'use Time::HiRes qw(time);';
+ $@ ? 0 : 1;
+};
+
+=head1 SYNOPSIS
+
+ package TAP::Whatever;
+
+ use base 'TAP::Base';
+
+ # ... later ...
+
+ my $thing = TAP::Whatever->new();
+
+ $thing->callback( event => sub {
+ # do something interesting
+ } );
+
+=head1 DESCRIPTION
+
+C<TAP::Base> provides callback management.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=cut
+
+sub _initialize {
+ my ( $self, $arg_for, $ok_callback ) = @_;
+
+ my %ok_map = map { $_ => 1 } @$ok_callback;
+
+ $self->{ok_callbacks} = \%ok_map;
+
+ if ( my $cb = delete $arg_for->{callbacks} ) {
+ while ( my ( $event, $callback ) = each %$cb ) {
+ $self->callback( $event, $callback );
+ }
+ }
+
+ return $self;
+}
+
+=head3 C<callback>
+
+Install a callback for a named event.
+
+=cut
+
+sub callback {
+ my ( $self, $event, $callback ) = @_;
+
+ my %ok_map = %{ $self->{ok_callbacks} };
+
+ $self->_croak('No callbacks may be installed')
+ unless %ok_map;
+
+ $self->_croak( "Callback $event is not supported. Valid callbacks are "
+ . join( ', ', sort keys %ok_map ) )
+ unless exists $ok_map{$event};
+
+ push @{ $self->{code_for}{$event} }, $callback;
+
+ return;
+}
+
+sub _has_callbacks {
+ my $self = shift;
+ return keys %{ $self->{code_for} } != 0;
+}
+
+sub _callback_for {
+ my ( $self, $event ) = @_;
+ return $self->{code_for}{$event};
+}
+
+sub _make_callback {
+ my $self = shift;
+ my $event = shift;
+
+ my $cb = $self->_callback_for($event);
+ return unless defined $cb;
+ return map { $_->(@_) } @$cb;
+}
+
+=head3 C<get_time>
+
+Return the current time using Time::HiRes if available.
+
+=cut
+
+sub get_time { return time() }
+
+=head3 C<time_is_hires>
+
+Return true if the time returned by get_time is high resolution (i.e. if Time::HiRes is available).
+
+=cut
+
+sub time_is_hires { return GOT_TIME_HIRES }
+
+=head3 C<get_times>
+
+Return array reference of the four-element list of CPU seconds,
+as with L<perlfunc/times>.
+
+=cut
+
+sub get_times { return [ times() ] }
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Base.pm b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Base.pm
new file mode 100755
index 00000000000..f6efeaed63d
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Base.pm
@@ -0,0 +1,490 @@
+package TAP::Formatter::Base;
+
+use strict;
+use warnings;
+use base 'TAP::Base';
+use POSIX qw(strftime);
+
+my $MAX_ERRORS = 5;
+my %VALIDATION_FOR;
+
+BEGIN {
+ %VALIDATION_FOR = (
+ directives => sub { shift; shift },
+ verbosity => sub { shift; shift },
+ normalize => sub { shift; shift },
+ timer => sub { shift; shift },
+ failures => sub { shift; shift },
+ comments => sub { shift; shift },
+ errors => sub { shift; shift },
+ color => sub { shift; shift },
+ jobs => sub { shift; shift },
+ show_count => sub { shift; shift },
+ stdout => sub {
+ my ( $self, $ref ) = @_;
+
+ $self->_croak("option 'stdout' needs a filehandle")
+ unless $self->_is_filehandle($ref);
+
+ return $ref;
+ },
+ );
+
+ sub _is_filehandle {
+ my ( $self, $ref ) = @_;
+
+ return 0 if !defined $ref;
+
+ return 1 if ref $ref eq 'GLOB'; # lexical filehandle
+ return 1 if !ref $ref && ref \$ref eq 'GLOB'; # bare glob like *STDOUT
+
+ return 1 if eval { $ref->can('print') };
+
+ return 0;
+ }
+
+ my @getter_setters = qw(
+ _longest
+ _printed_summary_header
+ _colorizer
+ );
+
+ __PACKAGE__->mk_methods( @getter_setters, keys %VALIDATION_FOR );
+}
+
+=head1 NAME
+
+TAP::Formatter::Base - Base class for harness output delegates
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+This provides console orientated output formatting for TAP::Harness.
+
+=head1 SYNOPSIS
+
+ use TAP::Formatter::Console;
+ my $harness = TAP::Formatter::Console->new( \%args );
+
+=cut
+
+sub _initialize {
+ my ( $self, $arg_for ) = @_;
+ $arg_for ||= {};
+
+ $self->SUPER::_initialize($arg_for);
+ my %arg_for = %$arg_for; # force a shallow copy
+
+ $self->verbosity(0);
+
+ for my $name ( keys %VALIDATION_FOR ) {
+ my $property = delete $arg_for{$name};
+ if ( defined $property ) {
+ my $validate = $VALIDATION_FOR{$name};
+ $self->$name( $self->$validate($property) );
+ }
+ }
+
+ if ( my @props = keys %arg_for ) {
+ $self->_croak(
+ "Unknown arguments to " . __PACKAGE__ . "::new (@props)" );
+ }
+
+ $self->stdout( \*STDOUT ) unless $self->stdout;
+
+ if ( $self->color ) {
+ require TAP::Formatter::Color;
+ $self->_colorizer( TAP::Formatter::Color->new );
+ }
+
+ return $self;
+}
+
+sub verbose { shift->verbosity >= 1 }
+sub quiet { shift->verbosity <= -1 }
+sub really_quiet { shift->verbosity <= -2 }
+sub silent { shift->verbosity <= -3 }
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+ my %args = (
+ verbose => 1,
+ )
+ my $harness = TAP::Formatter::Console->new( \%args );
+
+The constructor returns a new C<TAP::Formatter::Console> object. If
+a L<TAP::Harness> is created with no C<formatter> a
+C<TAP::Formatter::Console> is automatically created. If any of the
+following options were given to TAP::Harness->new they well be passed to
+this constructor which accepts an optional hashref whose allowed keys are:
+
+=over 4
+
+=item * C<verbosity>
+
+Set the verbosity level.
+
+=item * C<verbose>
+
+Printing individual test results to STDOUT.
+
+=item * C<timer>
+
+Append run time for each test to output. Uses L<Time::HiRes> if available.
+
+=item * C<failures>
+
+Show test failures (this is a no-op if C<verbose> is selected).
+
+=item * C<comments>
+
+Show test comments (this is a no-op if C<verbose> is selected).
+
+=item * C<quiet>
+
+Suppressing some test output (mostly failures while tests are running).
+
+=item * C<really_quiet>
+
+Suppressing everything but the tests summary.
+
+=item * C<silent>
+
+Suppressing all output.
+
+=item * C<errors>
+
+If parse errors are found in the TAP output, a note of this will be made
+in the summary report. To see all of the parse errors, set this argument to
+true:
+
+ errors => 1
+
+=item * C<directives>
+
+If set to a true value, only test results with directives will be displayed.
+This overrides other settings such as C<verbose>, C<failures>, or C<comments>.
+
+=item * C<stdout>
+
+A filehandle for catching standard output.
+
+=item * C<color>
+
+If defined specifies whether color output is desired. If C<color> is not
+defined it will default to color output if color support is available on
+the current platform and output is not being redirected.
+
+=item * C<jobs>
+
+The number of concurrent jobs this formatter will handle.
+
+=item * C<show_count>
+
+Boolean value. If false, disables the C<X/Y> test count which shows up while
+tests are running.
+
+=back
+
+Any keys for which the value is C<undef> will be ignored.
+
+=cut
+
+# new supplied by TAP::Base
+
+=head3 C<prepare>
+
+Called by Test::Harness before any test output is generated.
+
+This is an advisory and may not be called in the case where tests are
+being supplied to Test::Harness by an iterator.
+
+=cut
+
+sub prepare {
+ my ( $self, @tests ) = @_;
+
+ my $longest = 0;
+
+ for my $test (@tests) {
+ $longest = length $test if length $test > $longest;
+ }
+
+ $self->_longest($longest);
+}
+
+sub _format_now { strftime "[%H:%M:%S]", localtime }
+
+sub _format_name {
+ my ( $self, $test ) = @_;
+ my $name = $test;
+ my $periods = '.' x ( $self->_longest + 2 - length $test );
+ $periods = " $periods ";
+
+ if ( $self->timer ) {
+ my $stamp = $self->_format_now();
+ return "$stamp $name$periods";
+ }
+ else {
+ return "$name$periods";
+ }
+
+}
+
+=head3 C<open_test>
+
+Called to create a new test session. A test session looks like this:
+
+ my $session = $formatter->open_test( $test, $parser );
+ while ( defined( my $result = $parser->next ) ) {
+ $session->result($result);
+ exit 1 if $result->is_bailout;
+ }
+ $session->close_test;
+
+=cut
+
+sub open_test {
+ die "Unimplemented.";
+}
+
+sub _output_success {
+ my ( $self, $msg ) = @_;
+ $self->_output($msg);
+}
+
+=head3 C<summary>
+
+ $harness->summary( $aggregate );
+
+C<summary> prints the summary report after all tests are run. The first
+argument is an aggregate to summarise. An optional second argument may
+be set to a true value to indicate that the summary is being output as a
+result of an interrupted test run.
+
+=cut
+
+sub summary {
+ my ( $self, $aggregate, $interrupted ) = @_;
+
+ return if $self->silent;
+
+ my @t = $aggregate->descriptions;
+ my $tests = \@t;
+
+ my $runtime = $aggregate->elapsed_timestr;
+
+ my $total = $aggregate->total;
+ my $passed = $aggregate->passed;
+
+ if ( $self->timer ) {
+ $self->_output( $self->_format_now(), "\n" );
+ }
+
+ $self->_failure_output("Test run interrupted!\n")
+ if $interrupted;
+
+ # TODO: Check this condition still works when all subtests pass but
+ # the exit status is nonzero
+
+ if ( $aggregate->all_passed ) {
+ $self->_output_success("All tests successful.\n");
+ }
+
+ # ~TODO option where $aggregate->skipped generates reports
+ if ( $total != $passed or $aggregate->has_problems ) {
+ $self->_output("\nTest Summary Report");
+ $self->_output("\n-------------------\n");
+ for my $test (@$tests) {
+ $self->_printed_summary_header(0);
+ my ($parser) = $aggregate->parsers($test);
+ $self->_output_summary_failure(
+ 'failed',
+ [ ' Failed test: ', ' Failed tests: ' ],
+ $test, $parser
+ );
+ $self->_output_summary_failure(
+ 'todo_passed',
+ " TODO passed: ", $test, $parser
+ );
+
+ # ~TODO this cannot be the default
+ #$self->_output_summary_failure( 'skipped', " Tests skipped: " );
+
+ if ( my $exit = $parser->exit ) {
+ $self->_summary_test_header( $test, $parser );
+ $self->_failure_output(" Non-zero exit status: $exit\n");
+ }
+ elsif ( my $wait = $parser->wait ) {
+ $self->_summary_test_header( $test, $parser );
+ $self->_failure_output(" Non-zero wait status: $wait\n");
+ }
+
+ if ( my @errors = $parser->parse_errors ) {
+ my $explain;
+ if ( @errors > $MAX_ERRORS && !$self->errors ) {
+ $explain
+ = "Displayed the first $MAX_ERRORS of "
+ . scalar(@errors)
+ . " TAP syntax errors.\n"
+ . "Re-run prove with the -p option to see them all.\n";
+ splice @errors, $MAX_ERRORS;
+ }
+ $self->_summary_test_header( $test, $parser );
+ $self->_failure_output(
+ sprintf " Parse errors: %s\n",
+ shift @errors
+ );
+ for my $error (@errors) {
+ my $spaces = ' ' x 16;
+ $self->_failure_output("$spaces$error\n");
+ }
+ $self->_failure_output($explain) if $explain;
+ }
+ }
+ }
+ my $files = @$tests;
+ $self->_output("Files=$files, Tests=$total, $runtime\n");
+ my $status = $aggregate->get_status;
+ $self->_output("Result: $status\n");
+}
+
+sub _output_summary_failure {
+ my ( $self, $method, $name, $test, $parser ) = @_;
+
+ # ugly hack. Must rethink this :(
+ my $output = $method eq 'failed' ? '_failure_output' : '_output';
+
+ if ( my @r = $parser->$method() ) {
+ $self->_summary_test_header( $test, $parser );
+ my ( $singular, $plural )
+ = 'ARRAY' eq ref $name ? @$name : ( $name, $name );
+ $self->$output( @r == 1 ? $singular : $plural );
+ my @results = $self->_balanced_range( 40, @r );
+ $self->$output( sprintf "%s\n" => shift @results );
+ my $spaces = ' ' x 16;
+ while (@results) {
+ $self->$output( sprintf "$spaces%s\n" => shift @results );
+ }
+ }
+}
+
+sub _summary_test_header {
+ my ( $self, $test, $parser ) = @_;
+ return if $self->_printed_summary_header;
+ my $spaces = ' ' x ( $self->_longest - length $test );
+ $spaces = ' ' unless $spaces;
+ my $output = $self->_get_output_method($parser);
+ my $wait = $parser->wait;
+
+ if (defined $wait) {
+ my $signum = $wait & 0x7f;
+
+ my $description;
+
+ if ($signum) {
+ require Config;
+ my @names = split ' ', $Config::Config{'sig_name'};
+ $description = "Signal: $names[$signum]";
+
+ my $dumped = $wait & 0x80;
+ $description .= ', dumped core' if $dumped;
+ }
+ elsif ($wait != 0) {
+ $description = sprintf 'exited %d', ($wait >> 8);
+ }
+
+ $wait .= " ($description)" if $wait != 0;
+ }
+ else {
+ $wait = '(none)';
+ }
+
+ $self->$output(
+ sprintf "$test$spaces(Wstat: %s Tests: %d Failed: %d)\n",
+ $wait, $parser->tests_run, scalar $parser->failed
+ );
+ $self->_printed_summary_header(1);
+}
+
+sub _output {
+ my $self = shift;
+
+ print { $self->stdout } @_;
+}
+
+sub _failure_output {
+ my $self = shift;
+
+ $self->_output(@_);
+}
+
+sub _balanced_range {
+ my ( $self, $limit, @range ) = @_;
+ @range = $self->_range(@range);
+ my $line = "";
+ my @lines;
+ my $curr = 0;
+ while (@range) {
+ if ( $curr < $limit ) {
+ my $range = ( shift @range ) . ", ";
+ $line .= $range;
+ $curr += length $range;
+ }
+ elsif (@range) {
+ $line =~ s/, $//;
+ push @lines => $line;
+ $line = '';
+ $curr = 0;
+ }
+ }
+ if ($line) {
+ $line =~ s/, $//;
+ push @lines => $line;
+ }
+ return @lines;
+}
+
+sub _range {
+ my ( $self, @numbers ) = @_;
+
+ # shouldn't be needed, but subclasses might call this
+ @numbers = sort { $a <=> $b } @numbers;
+ my ( $min, @range );
+
+ for my $i ( 0 .. $#numbers ) {
+ my $num = $numbers[$i];
+ my $next = $numbers[ $i + 1 ];
+ if ( defined $next && $next == $num + 1 ) {
+ if ( !defined $min ) {
+ $min = $num;
+ }
+ }
+ elsif ( defined $min ) {
+ push @range => "$min-$num";
+ undef $min;
+ }
+ else {
+ push @range => $num;
+ }
+ }
+ return @range;
+}
+
+sub _get_output_method {
+ my ( $self, $parser ) = @_;
+ return $parser->has_problems ? '_failure_output' : '_output';
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Color.pm b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Color.pm
new file mode 100755
index 00000000000..873ff9680a6
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Color.pm
@@ -0,0 +1,116 @@
+package TAP::Formatter::Color;
+
+use strict;
+use warnings;
+
+use constant IS_WIN32 => ( $^O =~ /^(MS)?Win32$/ );
+
+use base 'TAP::Object';
+
+my $NO_COLOR;
+
+BEGIN {
+ $NO_COLOR = 0;
+
+ eval 'require Term::ANSIColor';
+ if ($@) {
+ $NO_COLOR = $@;
+ };
+ if (IS_WIN32) {
+ eval 'use Win32::Console::ANSI';
+ if ($@) {
+ $NO_COLOR = $@;
+ }
+ };
+
+ if ($NO_COLOR) {
+ *set_color = sub { };
+ } else {
+ *set_color = sub {
+ my ( $self, $output, $color ) = @_;
+ $output->( Term::ANSIColor::color($color) );
+ };
+ }
+}
+
+=head1 NAME
+
+TAP::Formatter::Color - Run Perl test scripts with color
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+Note that this harness is I<experimental>. You may not like the colors I've
+chosen and I haven't yet provided an easy way to override them.
+
+This test harness is the same as L<TAP::Harness>, but test results are output
+in color. Passing tests are printed in green. Failing tests are in red.
+Skipped tests are blue on a white background and TODO tests are printed in
+white.
+
+If L<Term::ANSIColor> cannot be found (and L<Win32::Console::ANSI> if running
+under Windows) tests will be run without color.
+
+=head1 SYNOPSIS
+
+ use TAP::Formatter::Color;
+ my $harness = TAP::Formatter::Color->new( \%args );
+ $harness->runtests(@tests);
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+The constructor returns a new C<TAP::Formatter::Color> object. If
+L<Term::ANSIColor> is not installed, returns undef.
+
+=cut
+
+# new() implementation supplied by TAP::Object
+
+sub _initialize {
+ my $self = shift;
+
+ if ($NO_COLOR) {
+
+ # shorten that message a bit
+ ( my $error = $NO_COLOR ) =~ s/ in \@INC .*//s;
+ warn "Note: Cannot run tests in color: $error\n";
+ return; # abort object construction
+ }
+
+ return $self;
+}
+
+##############################################################################
+
+=head3 C<can_color>
+
+ Test::Formatter::Color->can_color()
+
+Returns a boolean indicating whether or not this module can actually
+generate colored output. This will be false if it could not load the
+modules needed for the current platform.
+
+=cut
+
+sub can_color {
+ return !$NO_COLOR;
+}
+
+=head3 C<set_color>
+
+Set the output color.
+
+=cut
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Console.pm b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Console.pm
new file mode 100755
index 00000000000..dc7e0ddc64b
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Console.pm
@@ -0,0 +1,100 @@
+package TAP::Formatter::Console;
+
+use strict;
+use warnings;
+use base 'TAP::Formatter::Base';
+use POSIX qw(strftime);
+
+=head1 NAME
+
+TAP::Formatter::Console - Harness output delegate for default console output
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+This provides console orientated output formatting for TAP::Harness.
+
+=head1 SYNOPSIS
+
+ use TAP::Formatter::Console;
+ my $harness = TAP::Formatter::Console->new( \%args );
+
+=head2 C<< open_test >>
+
+See L<TAP::Formatter::Base>
+
+=cut
+
+sub open_test {
+ my ( $self, $test, $parser ) = @_;
+
+ my $class
+ = $self->jobs > 1
+ ? 'TAP::Formatter::Console::ParallelSession'
+ : 'TAP::Formatter::Console::Session';
+
+ eval "require $class";
+ $self->_croak($@) if $@;
+
+ my $session = $class->new(
+ { name => $test,
+ formatter => $self,
+ parser => $parser,
+ show_count => $self->show_count,
+ }
+ );
+
+ $session->header;
+
+ return $session;
+}
+
+# Use _colorizer delegate to set output color. NOP if we have no delegate
+sub _set_colors {
+ my ( $self, @colors ) = @_;
+ if ( my $colorizer = $self->_colorizer ) {
+ my $output_func = $self->{_output_func} ||= sub {
+ $self->_output(@_);
+ };
+ $colorizer->set_color( $output_func, $_ ) for @colors;
+ }
+}
+
+sub _failure_color {
+ my ($self) = @_;
+
+ return $ENV{'HARNESS_SUMMARY_COLOR_FAIL'} || 'red';
+}
+
+sub _success_color {
+ my ($self) = @_;
+
+ return $ENV{'HARNESS_SUMMARY_COLOR_SUCCESS'} || 'green';
+}
+
+sub _output_success {
+ my ( $self, $msg ) = @_;
+ $self->_set_colors( $self->_success_color() );
+ $self->_output($msg);
+ $self->_set_colors('reset');
+}
+
+sub _failure_output {
+ my $self = shift;
+ $self->_set_colors( $self->_failure_color() );
+ my $out = join '', @_;
+ my $has_newline = chomp $out;
+ $self->_output($out);
+ $self->_set_colors('reset');
+ $self->_output($/)
+ if $has_newline;
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Console/ParallelSession.pm b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Console/ParallelSession.pm
new file mode 100755
index 00000000000..1ec9e8be9af
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Console/ParallelSession.pm
@@ -0,0 +1,201 @@
+package TAP::Formatter::Console::ParallelSession;
+
+use strict;
+use warnings;
+use File::Spec;
+use File::Path;
+use Carp;
+
+use base 'TAP::Formatter::Console::Session';
+
+use constant WIDTH => 72; # Because Eric says
+
+my %shared;
+
+sub _initialize {
+ my ( $self, $arg_for ) = @_;
+
+ $self->SUPER::_initialize($arg_for);
+ my $formatter = $self->formatter;
+
+ # Horrid bodge. This creates our shared context per harness. Maybe
+ # TAP::Harness should give us this?
+ my $context = $shared{$formatter} ||= $self->_create_shared_context;
+ push @{ $context->{active} }, $self;
+
+ return $self;
+}
+
+sub _create_shared_context {
+ my $self = shift;
+ return {
+ active => [],
+ tests => 0,
+ fails => 0,
+ };
+}
+
+=head1 NAME
+
+TAP::Formatter::Console::ParallelSession - Harness output delegate for parallel console output
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+This provides console orientated output formatting for L<TAP::Harness>
+when run with multiple L<TAP::Harness/jobs>.
+
+=head1 SYNOPSIS
+
+=cut
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<header>
+
+Output test preamble
+
+=cut
+
+sub header {
+}
+
+sub _clear_ruler {
+ my $self = shift;
+ $self->formatter->_output( "\r" . ( ' ' x WIDTH ) . "\r" );
+}
+
+my $now = 0;
+my $start;
+
+my $trailer = '... )===';
+my $chop_length = WIDTH - length $trailer;
+
+sub _output_ruler {
+ my ( $self, $refresh ) = @_;
+ my $new_now = time;
+ return if $new_now == $now and !$refresh;
+ $now = $new_now;
+ $start ||= $now;
+ my $formatter = $self->formatter;
+ return if $formatter->really_quiet;
+
+ my $context = $shared{$formatter};
+
+ my $ruler = sprintf '===( %7d;%d ', $context->{tests}, $now - $start;
+
+ for my $active ( @{ $context->{active} } ) {
+ my $parser = $active->parser;
+ my $tests = $parser->tests_run;
+ my $planned = $parser->tests_planned || '?';
+
+ $ruler .= sprintf '%' . length($planned) . "d/$planned ", $tests;
+ }
+ chop $ruler; # Remove a trailing space
+ $ruler .= ')===';
+
+ if ( length $ruler > WIDTH ) {
+ $ruler =~ s/(.{$chop_length}).*/$1$trailer/o;
+ }
+ else {
+ $ruler .= '=' x ( WIDTH - length($ruler) );
+ }
+ $formatter->_output("\r$ruler");
+}
+
+=head3 C<result>
+
+ Called by the harness for each line of TAP it receives .
+
+=cut
+
+sub result {
+ my ( $self, $result ) = @_;
+ my $formatter = $self->formatter;
+
+ # my $really_quiet = $formatter->really_quiet;
+ # my $show_count = $self->_should_show_count;
+
+ if ( $result->is_test ) {
+ my $context = $shared{$formatter};
+ $context->{tests}++;
+
+ my $active = $context->{active};
+ if ( @$active == 1 ) {
+
+ # There is only one test, so use the serial output format.
+ return $self->SUPER::result($result);
+ }
+
+ $self->_output_ruler( $self->parser->tests_run == 1 );
+ }
+ elsif ( $result->is_bailout ) {
+ $formatter->_failure_output(
+ "Bailout called. Further testing stopped: "
+ . $result->explanation
+ . "\n" );
+ }
+}
+
+=head3 C<clear_for_close>
+
+=cut
+
+sub clear_for_close {
+ my $self = shift;
+ my $formatter = $self->formatter;
+ return if $formatter->really_quiet;
+ my $context = $shared{$formatter};
+ if ( @{ $context->{active} } == 1 ) {
+ $self->SUPER::clear_for_close;
+ }
+ else {
+ $self->_clear_ruler;
+ }
+}
+
+=head3 C<close_test>
+
+=cut
+
+sub close_test {
+ my $self = shift;
+ my $name = $self->name;
+ my $parser = $self->parser;
+ my $formatter = $self->formatter;
+ my $context = $shared{$formatter};
+
+ $self->SUPER::close_test;
+
+ my $active = $context->{active};
+
+ my @pos = grep { $active->[$_]->name eq $name } 0 .. $#$active;
+
+ die "Can't find myself" unless @pos;
+ splice @$active, $pos[0], 1;
+
+ if ( @$active > 1 ) {
+ $self->_output_ruler(1);
+ }
+ elsif ( @$active == 1 ) {
+
+ # Print out "test/name.t ...."
+ $active->[0]->SUPER::header;
+ }
+ else {
+
+ # $self->formatter->_output("\n");
+ delete $shared{$formatter};
+ }
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Console/Session.pm b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Console/Session.pm
new file mode 100755
index 00000000000..53ad8673876
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Console/Session.pm
@@ -0,0 +1,205 @@
+package TAP::Formatter::Console::Session;
+
+use strict;
+use warnings;
+
+use base 'TAP::Formatter::Session';
+
+my @ACCESSOR;
+
+BEGIN {
+ my @CLOSURE_BINDING = qw( header result clear_for_close close_test );
+
+ for my $method (@CLOSURE_BINDING) {
+ no strict 'refs';
+ *$method = sub {
+ my $self = shift;
+ return ( $self->{_closures} ||= $self->_closures )->{$method}
+ ->(@_);
+ };
+ }
+}
+
+=head1 NAME
+
+TAP::Formatter::Console::Session - Harness output delegate for default console output
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+This provides console orientated output formatting for TAP::Harness.
+
+=cut
+
+sub _get_output_result {
+ my $self = shift;
+
+ my @color_map = (
+ { test => sub { $_->is_test && !$_->is_ok },
+ colors => ['red'],
+ },
+ { test => sub { $_->is_test && $_->has_skip },
+ colors => [
+ 'white',
+ 'on_blue'
+ ],
+ },
+ { test => sub { $_->is_test && $_->has_todo },
+ colors => ['yellow'],
+ },
+ );
+
+ my $formatter = $self->formatter;
+ my $parser = $self->parser;
+
+ return $formatter->_colorizer
+ ? sub {
+ my $result = shift;
+ for my $col (@color_map) {
+ local $_ = $result;
+ if ( $col->{test}->() ) {
+ $formatter->_set_colors( @{ $col->{colors} } );
+ last;
+ }
+ }
+ $formatter->_output( $self->_format_for_output($result) );
+ $formatter->_set_colors('reset');
+ }
+ : sub {
+ $formatter->_output( $self->_format_for_output(shift) );
+ };
+}
+
+sub _closures {
+ my $self = shift;
+
+ my $parser = $self->parser;
+ my $formatter = $self->formatter;
+ my $pretty = $formatter->_format_name( $self->name );
+ my $show_count = $self->show_count;
+
+ my $really_quiet = $formatter->really_quiet;
+ my $quiet = $formatter->quiet;
+ my $verbose = $formatter->verbose;
+ my $directives = $formatter->directives;
+ my $failures = $formatter->failures;
+ my $comments = $formatter->comments;
+
+ my $output_result = $self->_get_output_result;
+
+ my $output = '_output';
+ my $plan = '';
+ my $newline_printed = 0;
+
+ my $last_status_printed = 0;
+
+ return {
+ header => sub {
+ $formatter->_output($pretty)
+ unless $really_quiet;
+ },
+
+ result => sub {
+ my $result = shift;
+
+ if ( $result->is_bailout ) {
+ $formatter->_failure_output(
+ "Bailout called. Further testing stopped: "
+ . $result->explanation
+ . "\n" );
+ }
+
+ return if $really_quiet;
+
+ my $is_test = $result->is_test;
+
+ # These are used in close_test - but only if $really_quiet
+ # is false - so it's safe to only set them here unless that
+ # relationship changes.
+
+ if ( !$plan ) {
+ my $planned = $parser->tests_planned || '?';
+ $plan = "/$planned ";
+ }
+ $output = $formatter->_get_output_method($parser);
+
+ if ( $show_count and $is_test ) {
+ my $number = $result->number;
+ my $now = CORE::time;
+
+ # Print status roughly once per second.
+ # We will always get the first number as a side effect of
+ # $last_status_printed starting with the value 0, which $now
+ # will never be. (Unless someone sets their clock to 1970)
+ if ( $last_status_printed != $now ) {
+ $formatter->$output("\r$pretty$number$plan");
+ $last_status_printed = $now;
+ }
+ }
+
+ if (!$quiet
+ && ( $verbose
+ || ( $is_test && $failures && !$result->is_ok )
+ || ( $comments && $result->is_comment )
+ || ( $directives && $result->has_directive ) )
+ )
+ {
+ unless ($newline_printed) {
+ $formatter->_output("\n");
+ $newline_printed = 1;
+ }
+ $output_result->($result);
+ $formatter->_output("\n");
+ }
+ },
+
+ clear_for_close => sub {
+ my $spaces
+ = ' ' x length( '.' . $pretty . $plan . $parser->tests_run );
+ $formatter->$output("\r$spaces");
+ },
+
+ close_test => sub {
+ if ( $show_count && !$really_quiet ) {
+ $self->clear_for_close;
+ $formatter->$output("\r$pretty");
+ }
+
+ # Avoid circular references
+ $self->parser(undef);
+ $self->{_closures} = {};
+
+ return if $really_quiet;
+
+ if ( my $skip_all = $parser->skip_all ) {
+ $formatter->_output("skipped: $skip_all\n");
+ }
+ elsif ( $parser->has_problems ) {
+ $self->_output_test_failure($parser);
+ }
+ else {
+ my $time_report = $self->time_report($formatter, $parser);
+ $formatter->_output_success( $self->_make_ok_line($time_report) );
+ }
+ },
+ };
+}
+
+=head2 C<< clear_for_close >>
+
+=head2 C<< close_test >>
+
+=head2 C<< header >>
+
+=head2 C<< result >>
+
+=cut
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Formatter/File.pm b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/File.pm
new file mode 100755
index 00000000000..396b4074b3c
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/File.pm
@@ -0,0 +1,56 @@
+package TAP::Formatter::File;
+
+use strict;
+use warnings;
+use TAP::Formatter::File::Session;
+use POSIX qw(strftime);
+
+use base 'TAP::Formatter::Base';
+
+=head1 NAME
+
+TAP::Formatter::File - Harness output delegate for file output
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+This provides file orientated output formatting for TAP::Harness.
+
+=head1 SYNOPSIS
+
+ use TAP::Formatter::File;
+ my $harness = TAP::Formatter::File->new( \%args );
+
+=head2 C<< open_test >>
+
+See L<TAP::Formatter::Base>
+
+=cut
+
+sub open_test {
+ my ( $self, $test, $parser ) = @_;
+
+ my $session = TAP::Formatter::File::Session->new(
+ { name => $test,
+ formatter => $self,
+ parser => $parser,
+ }
+ );
+
+ $session->header;
+
+ return $session;
+}
+
+sub _should_show_count {
+ return 0;
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Formatter/File/Session.pm b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/File/Session.pm
new file mode 100755
index 00000000000..210c9a47d3c
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/File/Session.pm
@@ -0,0 +1,95 @@
+package TAP::Formatter::File::Session;
+
+use strict;
+use warnings;
+use base 'TAP::Formatter::Session';
+
+=head1 NAME
+
+TAP::Formatter::File::Session - Harness output delegate for file output
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+This provides file orientated output formatting for L<TAP::Harness>.
+It is particularly important when running with parallel tests, as it
+ensures that test results are not interleaved, even when run
+verbosely.
+
+=cut
+
+=head1 METHODS
+
+=head2 result
+
+Stores results for later output, all together.
+
+=cut
+
+sub result {
+ my $self = shift;
+ my $result = shift;
+
+ my $parser = $self->parser;
+ my $formatter = $self->formatter;
+
+ if ( $result->is_bailout ) {
+ $formatter->_failure_output(
+ "Bailout called. Further testing stopped: "
+ . $result->explanation
+ . "\n" );
+ return;
+ }
+
+ if (!$formatter->quiet
+ && ( $formatter->verbose
+ || ( $result->is_test && $formatter->failures && !$result->is_ok )
+ || ( $formatter->comments && $result->is_comment )
+ || ( $result->has_directive && $formatter->directives ) )
+ )
+ {
+ $self->{results} .= $self->_format_for_output($result) . "\n";
+ }
+}
+
+=head2 close_test
+
+When the test file finishes, outputs the summary, together.
+
+=cut
+
+sub close_test {
+ my $self = shift;
+
+ # Avoid circular references
+ $self->parser(undef);
+
+ my $parser = $self->parser;
+ my $formatter = $self->formatter;
+ my $pretty = $formatter->_format_name( $self->name );
+
+ return if $formatter->really_quiet;
+ if ( my $skip_all = $parser->skip_all ) {
+ $formatter->_output( $pretty . "skipped: $skip_all\n" );
+ }
+ elsif ( $parser->has_problems ) {
+ $formatter->_output(
+ $pretty . ( $self->{results} ? "\n" . $self->{results} : "\n" ) );
+ $self->_output_test_failure($parser);
+ }
+ else {
+ my $time_report = $self->time_report( $formatter, $parser );
+ $formatter->_output(
+ $pretty . ( $self->{results} ? "\n" . $self->{results} : "" ) );
+ $formatter->_output_success( $self->_make_ok_line($time_report) );
+ }
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Session.pm b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Session.pm
new file mode 100755
index 00000000000..5fb633b443d
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Formatter/Session.pm
@@ -0,0 +1,220 @@
+package TAP::Formatter::Session;
+
+use strict;
+use warnings;
+
+use base 'TAP::Base';
+
+my @ACCESSOR;
+
+BEGIN {
+
+ @ACCESSOR = qw( name formatter parser show_count );
+
+ for my $method (@ACCESSOR) {
+ no strict 'refs';
+ *$method = sub { shift->{$method} };
+ }
+}
+
+=head1 NAME
+
+TAP::Formatter::Session - Abstract base class for harness output delegate
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+ my %args = (
+ formatter => $self,
+ )
+ my $harness = TAP::Formatter::Console::Session->new( \%args );
+
+The constructor returns a new C<TAP::Formatter::Console::Session> object.
+
+=over 4
+
+=item * C<formatter>
+
+=item * C<parser>
+
+=item * C<name>
+
+=item * C<show_count>
+
+=back
+
+=cut
+
+sub _initialize {
+ my ( $self, $arg_for ) = @_;
+ $arg_for ||= {};
+
+ $self->SUPER::_initialize($arg_for);
+ my %arg_for = %$arg_for; # force a shallow copy
+
+ for my $name (@ACCESSOR) {
+ $self->{$name} = delete $arg_for{$name};
+ }
+
+ if ( !defined $self->show_count ) {
+ $self->{show_count} = 1; # defaults to true
+ }
+ if ( $self->show_count ) { # but may be a damned lie!
+ $self->{show_count} = $self->_should_show_count;
+ }
+
+ if ( my @props = sort keys %arg_for ) {
+ $self->_croak(
+ "Unknown arguments to " . __PACKAGE__ . "::new (@props)" );
+ }
+
+ return $self;
+}
+
+=head3 C<header>
+
+Output test preamble
+
+=head3 C<result>
+
+Called by the harness for each line of TAP it receives.
+
+=head3 C<close_test>
+
+Called to close a test session.
+
+=head3 C<clear_for_close>
+
+Called by C<close_test> to clear the line showing test progress, or the parallel
+test ruler, prior to printing the final test result.
+
+=head3 C<time_report>
+
+Return a formatted string about the elapsed (wall-clock) time
+and about the consumed CPU time.
+
+=cut
+
+sub header { }
+
+sub result { }
+
+sub close_test { }
+
+sub clear_for_close { }
+
+sub _should_show_count {
+ my $self = shift;
+ return
+ !$self->formatter->verbose
+ && -t $self->formatter->stdout
+ && !$ENV{HARNESS_NOTTY};
+}
+
+sub _format_for_output {
+ my ( $self, $result ) = @_;
+ return $self->formatter->normalize ? $result->as_string : $result->raw;
+}
+
+sub _output_test_failure {
+ my ( $self, $parser ) = @_;
+ my $formatter = $self->formatter;
+ return if $formatter->really_quiet;
+
+ my $tests_run = $parser->tests_run;
+ my $tests_planned = $parser->tests_planned;
+
+ my $total
+ = defined $tests_planned
+ ? $tests_planned
+ : $tests_run;
+
+ my $passed = $parser->passed;
+
+ # The total number of fails includes any tests that were planned but
+ # didn't run
+ my $failed = $parser->failed + $total - $tests_run;
+ my $exit = $parser->exit;
+
+ if ( my $exit = $parser->exit ) {
+ my $wstat = $parser->wait;
+ my $status = sprintf( "%d (wstat %d, 0x%x)", $exit, $wstat, $wstat );
+ $formatter->_failure_output("Dubious, test returned $status\n");
+ }
+
+ if ( $failed == 0 ) {
+ $formatter->_failure_output(
+ $total
+ ? "All $total subtests passed "
+ : 'No subtests run '
+ );
+ }
+ else {
+ $formatter->_failure_output("Failed $failed/$total subtests ");
+ if ( !$total ) {
+ $formatter->_failure_output("\nNo tests run!");
+ }
+ }
+
+ if ( my $skipped = $parser->skipped ) {
+ $passed -= $skipped;
+ my $test = 'subtest' . ( $skipped != 1 ? 's' : '' );
+ $formatter->_output(
+ "\n\t(less $skipped skipped $test: $passed okay)");
+ }
+
+ if ( my $failed = $parser->todo_passed ) {
+ my $test = $failed > 1 ? 'tests' : 'test';
+ $formatter->_output(
+ "\n\t($failed TODO $test unexpectedly succeeded)");
+ }
+
+ $formatter->_output("\n");
+}
+
+sub _make_ok_line {
+ my ( $self, $suffix ) = @_;
+ return "ok$suffix\n";
+}
+
+sub time_report {
+ my ( $self, $formatter, $parser ) = @_;
+
+ my @time_report;
+ if ( $formatter->timer ) {
+ my $start_time = $parser->start_time;
+ my $end_time = $parser->end_time;
+ if ( defined $start_time and defined $end_time ) {
+ my $elapsed = $end_time - $start_time;
+ push @time_report,
+ $self->time_is_hires
+ ? sprintf( ' %8d ms', $elapsed * 1000 )
+ : sprintf( ' %8s s', $elapsed || '<1' );
+ }
+ my $start_times = $parser->start_times();
+ my $end_times = $parser->end_times();
+ my $usr = $end_times->[0] - $start_times->[0];
+ my $sys = $end_times->[1] - $start_times->[1];
+ my $cusr = $end_times->[2] - $start_times->[2];
+ my $csys = $end_times->[3] - $start_times->[3];
+ push @time_report,
+ sprintf('(%5.2f usr %5.2f sys + %5.2f cusr %5.2f csys = %5.2f CPU)',
+ $usr, $sys, $cusr, $csys,
+ $usr + $sys + $cusr + $csys);
+ }
+
+ return "@time_report";
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Harness.pm b/Master/tlpkg/tlperl/site/lib/TAP/Harness.pm
new file mode 100755
index 00000000000..4fbb045d118
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Harness.pm
@@ -0,0 +1,1072 @@
+package TAP::Harness;
+
+use strict;
+use warnings;
+use Carp;
+
+use File::Spec;
+use File::Path;
+use IO::Handle;
+
+use base 'TAP::Base';
+
+=head1 NAME
+
+TAP::Harness - Run test scripts with statistics
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+$ENV{HARNESS_ACTIVE} = 1;
+$ENV{HARNESS_VERSION} = $VERSION;
+
+END {
+
+ # For VMS.
+ delete $ENV{HARNESS_ACTIVE};
+ delete $ENV{HARNESS_VERSION};
+}
+
+=head1 DESCRIPTION
+
+This is a simple test harness which allows tests to be run and results
+automatically aggregated and output to STDOUT.
+
+=head1 SYNOPSIS
+
+ use TAP::Harness;
+ my $harness = TAP::Harness->new( \%args );
+ $harness->runtests(@tests);
+
+=cut
+
+my %VALIDATION_FOR;
+my @FORMATTER_ARGS;
+
+sub _error {
+ my $self = shift;
+ return $self->{error} unless @_;
+ $self->{error} = shift;
+}
+
+BEGIN {
+
+ @FORMATTER_ARGS = qw(
+ directives verbosity timer failures comments errors stdout color
+ show_count normalize
+ );
+
+ %VALIDATION_FOR = (
+ lib => sub {
+ my ( $self, $libs ) = @_;
+ $libs = [$libs] unless 'ARRAY' eq ref $libs;
+
+ return [ map {"-I$_"} @$libs ];
+ },
+ switches => sub { shift; shift },
+ exec => sub { shift; shift },
+ merge => sub { shift; shift },
+ aggregator_class => sub { shift; shift },
+ formatter_class => sub { shift; shift },
+ multiplexer_class => sub { shift; shift },
+ parser_class => sub { shift; shift },
+ scheduler_class => sub { shift; shift },
+ formatter => sub { shift; shift },
+ jobs => sub { shift; shift },
+ test_args => sub { shift; shift },
+ ignore_exit => sub { shift; shift },
+ rules => sub { shift; shift },
+ rulesfile => sub { shift; shift },
+ sources => sub { shift; shift },
+ version => sub { shift; shift },
+ trap => sub { shift; shift },
+ );
+
+ for my $method ( sort keys %VALIDATION_FOR ) {
+ no strict 'refs';
+ if ( $method eq 'lib' || $method eq 'switches' ) {
+ *{$method} = sub {
+ my $self = shift;
+ unless (@_) {
+ $self->{$method} ||= [];
+ return wantarray
+ ? @{ $self->{$method} }
+ : $self->{$method};
+ }
+ $self->_croak("Too many arguments to method '$method'")
+ if @_ > 1;
+ my $args = shift;
+ $args = [$args] unless ref $args;
+ $self->{$method} = $args;
+ return $self;
+ };
+ }
+ else {
+ *{$method} = sub {
+ my $self = shift;
+ return $self->{$method} unless @_;
+ $self->{$method} = shift;
+ };
+ }
+ }
+
+ for my $method (@FORMATTER_ARGS) {
+ no strict 'refs';
+ *{$method} = sub {
+ my $self = shift;
+ return $self->formatter->$method(@_);
+ };
+ }
+}
+
+##############################################################################
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+ my %args = (
+ verbosity => 1,
+ lib => [ 'lib', 'blib/lib', 'blib/arch' ],
+ )
+ my $harness = TAP::Harness->new( \%args );
+
+The constructor returns a new C<TAP::Harness> object. It accepts an
+optional hashref whose allowed keys are:
+
+=over 4
+
+=item * C<verbosity>
+
+Set the verbosity level:
+
+ 1 verbose Print individual test results to STDOUT.
+ 0 normal
+ -1 quiet Suppress some test output (mostly failures
+ while tests are running).
+ -2 really quiet Suppress everything but the tests summary.
+ -3 silent Suppress everything.
+
+=item * C<timer>
+
+Append run time for each test to output. Uses L<Time::HiRes> if
+available.
+
+=item * C<failures>
+
+Show test failures (this is a no-op if C<verbose> is selected).
+
+=item * C<comments>
+
+Show test comments (this is a no-op if C<verbose> is selected).
+
+=item * C<show_count>
+
+Update the running test count during testing.
+
+=item * C<normalize>
+
+Set to a true value to normalize the TAP that is emitted in verbose modes.
+
+=item * C<lib>
+
+Accepts a scalar value or array ref of scalar values indicating which
+paths to allowed libraries should be included if Perl tests are
+executed. Naturally, this only makes sense in the context of tests
+written in Perl.
+
+=item * C<switches>
+
+Accepts a scalar value or array ref of scalar values indicating which
+switches should be included if Perl tests are executed. Naturally, this
+only makes sense in the context of tests written in Perl.
+
+=item * C<test_args>
+
+A reference to an C<@INC> style array of arguments to be passed to each
+test program.
+
+ test_args => ['foo', 'bar'],
+
+if you want to pass different arguments to each test then you should
+pass a hash of arrays, keyed by the alias for each test:
+
+ test_args => {
+ my_test => ['foo', 'bar'],
+ other_test => ['baz'],
+ }
+
+=item * C<color>
+
+Attempt to produce color output.
+
+=item * C<exec>
+
+Typically, Perl tests are run through this. However, anything which
+spits out TAP is fine. You can use this argument to specify the name of
+the program (and optional switches) to run your tests with:
+
+ exec => ['/usr/bin/ruby', '-w']
+
+You can also pass a subroutine reference in order to determine and
+return the proper program to run based on a given test script. The
+subroutine reference should expect the TAP::Harness object itself as the
+first argument, and the file name as the second argument. It should
+return an array reference containing the command to be run and including
+the test file name. It can also simply return C<undef>, in which case
+TAP::Harness will fall back on executing the test script in Perl:
+
+ exec => sub {
+ my ( $harness, $test_file ) = @_;
+
+ # Let Perl tests run.
+ return undef if $test_file =~ /[.]t$/;
+ return [ qw( /usr/bin/ruby -w ), $test_file ]
+ if $test_file =~ /[.]rb$/;
+ }
+
+If the subroutine returns a scalar with a newline or a filehandle, it
+will be interpreted as raw TAP or as a TAP stream, respectively.
+
+=item * C<merge>
+
+If C<merge> is true the harness will create parsers that merge STDOUT
+and STDERR together for any processes they start.
+
+=item * C<sources>
+
+I<NEW to 3.18>.
+
+If set, C<sources> must be a hashref containing the names of the
+L<TAP::Parser::SourceHandler>s to load and/or configure. The values are a
+hash of configuration that will be accessible to the source handlers via
+L<TAP::Parser::Source/config_for>.
+
+For example:
+
+ sources => {
+ Perl => { exec => '/path/to/custom/perl' },
+ File => { extensions => [ '.tap', '.txt' ] },
+ MyCustom => { some => 'config' },
+ }
+
+The C<sources> parameter affects how C<source>, C<tap> and C<exec> parameters
+are handled.
+
+For more details, see the C<sources> parameter in L<TAP::Parser/new>,
+L<TAP::Parser::Source>, and L<TAP::Parser::IteratorFactory>.
+
+=item * C<aggregator_class>
+
+The name of the class to use to aggregate test results. The default is
+L<TAP::Parser::Aggregator>.
+
+=item * C<version>
+
+I<NEW to 3.22>.
+
+Assume this TAP version for L<TAP::Parser> instead of default TAP
+version 12.
+
+=item * C<formatter_class>
+
+The name of the class to use to format output. The default is
+L<TAP::Formatter::Console>, or L<TAP::Formatter::File> if the output
+isn't a TTY.
+
+=item * C<multiplexer_class>
+
+The name of the class to use to multiplex tests during parallel testing.
+The default is L<TAP::Parser::Multiplexer>.
+
+=item * C<parser_class>
+
+The name of the class to use to parse TAP. The default is
+L<TAP::Parser>.
+
+=item * C<scheduler_class>
+
+The name of the class to use to schedule test execution. The default is
+L<TAP::Parser::Scheduler>.
+
+=item * C<formatter>
+
+If set C<formatter> must be an object that is capable of formatting the
+TAP output. See L<TAP::Formatter::Console> for an example.
+
+=item * C<errors>
+
+If parse errors are found in the TAP output, a note of this will be
+made in the summary report. To see all of the parse errors, set this
+argument to true:
+
+ errors => 1
+
+=item * C<directives>
+
+If set to a true value, only test results with directives will be
+displayed. This overrides other settings such as C<verbose> or
+C<failures>.
+
+=item * C<ignore_exit>
+
+If set to a true value instruct C<TAP::Parser> to ignore exit and wait
+status from test scripts.
+
+=item * C<jobs>
+
+The maximum number of parallel tests to run at any time. Which tests
+can be run in parallel is controlled by C<rules>. The default is to
+run only one test at a time.
+
+=item * C<rules>
+
+A reference to a hash of rules that control which tests may be executed in
+parallel. If no rules are declared and L<CPAN::Meta::YAML> is available,
+C<TAP::Harness> attempts to load rules from a YAML file specified by the
+C<rulesfile> parameter. If no rules file exists, the default is for all
+tests to be eligible to be run in parallel.
+
+Here some simple examples. For the full details of the data structure
+and the related glob-style pattern matching, see
+L<TAP::Parser::Scheduler/"Rules data structure">.
+
+ # Run all tests in sequence, except those starting with "p"
+ $harness->rules({
+ par => 't/p*.t'
+ });
+
+ # Equivalent YAML file
+ ---
+ par: t/p*.t
+
+ # Run all tests in parallel, except those starting with "p"
+ $harness->rules({
+ seq => [
+ { seq => 't/p*.t' },
+ { par => '**' },
+ ],
+ });
+
+ # Equivalent YAML file
+ ---
+ seq:
+ - seq: t/p*.t
+ - par: **
+
+ # Run some startup tests in sequence, then some parallel tests than some
+ # teardown tests in sequence.
+ $harness->rules({
+ seq => [
+ { seq => 't/startup/*.t' },
+ { par => ['t/a/*.t','t/b/*.t','t/c/*.t'], }
+ { seq => 't/shutdown/*.t' },
+ ],
+
+ });
+
+ # Equivalent YAML file
+ ---
+ seq:
+ - seq: t/startup/*.t
+ - par:
+ - t/a/*.t
+ - t/b/*.t
+ - t/c/*.t
+ - seq: t/shutdown/*.t
+
+This is an experimental feature and the interface may change.
+
+=item * C<rulesfiles>
+
+This specifies where to find a YAML file of test scheduling rules. If not
+provided, it looks for a default file to use. It first checks for a file given
+in the C<HARNESS_RULESFILE> environment variable, then it checks for
+F<testrules.yml> and then F<t/testrules.yml>.
+
+=item * C<stdout>
+
+A filehandle for catching standard output.
+
+=item * C<trap>
+
+Attempt to print summary information if run is interrupted by
+SIGINT (Ctrl-C).
+
+=back
+
+Any keys for which the value is C<undef> will be ignored.
+
+=cut
+
+# new supplied by TAP::Base
+
+{
+ my @legal_callback = qw(
+ parser_args
+ made_parser
+ before_runtests
+ after_runtests
+ after_test
+ );
+
+ my %default_class = (
+ aggregator_class => 'TAP::Parser::Aggregator',
+ formatter_class => 'TAP::Formatter::Console',
+ multiplexer_class => 'TAP::Parser::Multiplexer',
+ parser_class => 'TAP::Parser',
+ scheduler_class => 'TAP::Parser::Scheduler',
+ );
+
+ sub _initialize {
+ my ( $self, $arg_for ) = @_;
+ $arg_for ||= {};
+
+ $self->SUPER::_initialize( $arg_for, \@legal_callback );
+ my %arg_for = %$arg_for; # force a shallow copy
+
+ for my $name ( sort keys %VALIDATION_FOR ) {
+ my $property = delete $arg_for{$name};
+ if ( defined $property ) {
+ my $validate = $VALIDATION_FOR{$name};
+
+ my $value = $self->$validate($property);
+ if ( $self->_error ) {
+ $self->_croak;
+ }
+ $self->$name($value);
+ }
+ }
+
+ $self->jobs(1) unless defined $self->jobs;
+
+ if ( ! defined $self->rules ) {
+ $self->_maybe_load_rulesfile;
+ }
+
+ local $default_class{formatter_class} = 'TAP::Formatter::File'
+ unless -t ( $arg_for{stdout} || \*STDOUT ) && !$ENV{HARNESS_NOTTY};
+
+ while ( my ( $attr, $class ) = each %default_class ) {
+ $self->$attr( $self->$attr() || $class );
+ }
+
+ unless ( $self->formatter ) {
+
+ # This is a little bodge to preserve legacy behaviour. It's
+ # pretty horrible that we know which args are destined for
+ # the formatter.
+ my %formatter_args = ( jobs => $self->jobs );
+ for my $name (@FORMATTER_ARGS) {
+ if ( defined( my $property = delete $arg_for{$name} ) ) {
+ $formatter_args{$name} = $property;
+ }
+ }
+
+ $self->formatter(
+ $self->_construct( $self->formatter_class, \%formatter_args )
+ );
+ }
+
+ if ( my @props = sort keys %arg_for ) {
+ $self->_croak("Unknown arguments to TAP::Harness::new (@props)");
+ }
+
+ return $self;
+ }
+
+ sub _maybe_load_rulesfile {
+ my ($self) = @_;
+
+ my ($rulesfile) = defined $self->rulesfile ? $self->rulesfile :
+ defined($ENV{HARNESS_RULESFILE}) ? $ENV{HARNESS_RULESFILE} :
+ grep { -r } qw(./testrules.yml t/testrules.yml);
+
+ if ( defined $rulesfile && -r $rulesfile ) {
+ if ( ! eval { require CPAN::Meta::YAML; 1} ) {
+ warn "CPAN::Meta::YAML required to process $rulesfile" ;
+ return;
+ }
+ my $layer = $] lt "5.008" ? "" : ":encoding(UTF-8)";
+ open my $fh, "<$layer", $rulesfile
+ or die "Couldn't open $rulesfile: $!";
+ my $yaml_text = do { local $/; <$fh> };
+ my $yaml = CPAN::Meta::YAML->read_string($yaml_text)
+ or die CPAN::Meta::YAML->errstr;
+ $self->rules( $yaml->[0] );
+ }
+ return;
+ }
+}
+
+##############################################################################
+
+=head2 Instance Methods
+
+=head3 C<runtests>
+
+ $harness->runtests(@tests);
+
+Accepts an array of C<@tests> to be run. This should generally be the
+names of test files, but this is not required. Each element in C<@tests>
+will be passed to C<TAP::Parser::new()> as a C<source>. See
+L<TAP::Parser> for more information.
+
+It is possible to provide aliases that will be displayed in place of the
+test name by supplying the test as a reference to an array containing
+C<< [ $test, $alias ] >>:
+
+ $harness->runtests( [ 't/foo.t', 'Foo Once' ],
+ [ 't/foo.t', 'Foo Twice' ] );
+
+Normally it is an error to attempt to run the same test twice. Aliases
+allow you to overcome this limitation by giving each run of the test a
+unique name.
+
+Tests will be run in the order found.
+
+If the environment variable C<PERL_TEST_HARNESS_DUMP_TAP> is defined it
+should name a directory into which a copy of the raw TAP for each test
+will be written. TAP is written to files named for each test.
+Subdirectories will be created as needed.
+
+Returns a L<TAP::Parser::Aggregator> containing the test results.
+
+=cut
+
+sub runtests {
+ my ( $self, @tests ) = @_;
+
+ my $aggregate = $self->_construct( $self->aggregator_class );
+
+ $self->_make_callback( 'before_runtests', $aggregate );
+ $aggregate->start;
+ my $finish = sub {
+ my $interrupted = shift;
+ $aggregate->stop;
+ $self->summary( $aggregate, $interrupted );
+ $self->_make_callback( 'after_runtests', $aggregate );
+ };
+ my $run = sub {
+ my $bailout;
+ eval { $self->aggregate_tests( $aggregate, @tests ); 1 }
+ or do { $bailout = $@ || 'unknown_error' };
+ $finish->();
+ die $bailout if defined $bailout;
+ };
+ $self->{bail_summary} = sub{
+ print "\n";
+ $finish->(1);
+ };
+
+ if ( $self->trap ) {
+ local $SIG{INT} = sub {
+ print "\n";
+ $finish->(1);
+ exit;
+ };
+ $run->();
+ }
+ else {
+ $run->();
+ }
+
+ return $aggregate;
+}
+
+=head3 C<summary>
+
+ $harness->summary( $aggregator );
+
+Output the summary for a L<TAP::Parser::Aggregator>.
+
+=cut
+
+sub summary {
+ my ( $self, @args ) = @_;
+ $self->formatter->summary(@args);
+}
+
+sub _after_test {
+ my ( $self, $aggregate, $job, $parser ) = @_;
+
+ $self->_make_callback( 'after_test', $job->as_array_ref, $parser );
+ $aggregate->add( $job->description, $parser );
+}
+
+sub _bailout {
+ my ( $self, $result, $parser, $session, $aggregate, $job ) = @_;
+
+ $self->finish_parser( $parser, $session );
+ $self->_after_test( $aggregate, $job, $parser );
+ $job->finish;
+
+ my $explanation = $result->explanation;
+ $self->{bail_summary}();
+ die "FAILED--Further testing stopped"
+ . ( $explanation ? ": $explanation\n" : ".\n" );
+}
+
+sub _aggregate_parallel {
+ my ( $self, $aggregate, $scheduler ) = @_;
+
+ my $jobs = $self->jobs;
+ my $mux = $self->_construct( $self->multiplexer_class );
+
+ RESULT: {
+
+ # Keep multiplexer topped up
+ FILL:
+ while ( $mux->parsers < $jobs ) {
+ my $job = $scheduler->get_job;
+
+ # If we hit a spinner stop filling and start running.
+ last FILL if !defined $job || $job->is_spinner;
+
+ my ( $parser, $session ) = $self->make_parser($job);
+ $mux->add( $parser, [ $session, $job ] );
+
+ # The job has started: begin the timers
+ $parser->start_time( $parser->get_time );
+ $parser->start_times( $parser->get_times );
+ }
+
+ if ( my ( $parser, $stash, $result ) = $mux->next ) {
+ my ( $session, $job ) = @$stash;
+ if ( defined $result ) {
+ $session->result($result);
+ $self->_bailout($result, $parser, $session, $aggregate, $job )
+ if $result->is_bailout;
+ }
+ else {
+
+ # End of parser. Automatically removed from the mux.
+ $self->finish_parser( $parser, $session );
+ $self->_after_test( $aggregate, $job, $parser );
+ $job->finish;
+ }
+ redo RESULT;
+ }
+ }
+
+ return;
+}
+
+sub _aggregate_single {
+ my ( $self, $aggregate, $scheduler ) = @_;
+
+ JOB:
+ while ( my $job = $scheduler->get_job ) {
+ next JOB if $job->is_spinner;
+
+ my ( $parser, $session ) = $self->make_parser($job);
+
+ while ( defined( my $result = $parser->next ) ) {
+ $session->result($result);
+ if ( $result->is_bailout ) {
+
+ # Keep reading until input is exhausted in the hope
+ # of allowing any pending diagnostics to show up.
+ 1 while $parser->next;
+ $self->_bailout($result, $parser, $session, $aggregate, $job );
+ }
+ }
+
+ $self->finish_parser( $parser, $session );
+ $self->_after_test( $aggregate, $job, $parser );
+ $job->finish;
+ }
+
+ return;
+}
+
+=head3 C<aggregate_tests>
+
+ $harness->aggregate_tests( $aggregate, @tests );
+
+Run the named tests and display a summary of result. Tests will be run
+in the order found.
+
+Test results will be added to the supplied L<TAP::Parser::Aggregator>.
+C<aggregate_tests> may be called multiple times to run several sets of
+tests. Multiple C<Test::Harness> instances may be used to pass results
+to a single aggregator so that different parts of a complex test suite
+may be run using different C<TAP::Harness> settings. This is useful, for
+example, in the case where some tests should run in parallel but others
+are unsuitable for parallel execution.
+
+ my $formatter = TAP::Formatter::Console->new;
+ my $ser_harness = TAP::Harness->new( { formatter => $formatter } );
+ my $par_harness = TAP::Harness->new(
+ { formatter => $formatter,
+ jobs => 9
+ }
+ );
+ my $aggregator = TAP::Parser::Aggregator->new;
+
+ $aggregator->start();
+ $ser_harness->aggregate_tests( $aggregator, @ser_tests );
+ $par_harness->aggregate_tests( $aggregator, @par_tests );
+ $aggregator->stop();
+ $formatter->summary($aggregator);
+
+Note that for simpler testing requirements it will often be possible to
+replace the above code with a single call to C<runtests>.
+
+Each element of the C<@tests> array is either:
+
+=over
+
+=item * the source name of a test to run
+
+=item * a reference to a [ source name, display name ] array
+
+=back
+
+In the case of a perl test suite, typically I<source names> are simply the file
+names of the test scripts to run.
+
+When you supply a separate display name it becomes possible to run a
+test more than once; the display name is effectively the alias by which
+the test is known inside the harness. The harness doesn't care if it
+runs the same test more than once when each invocation uses a
+different name.
+
+=cut
+
+sub aggregate_tests {
+ my ( $self, $aggregate, @tests ) = @_;
+
+ my $jobs = $self->jobs;
+ my $scheduler = $self->make_scheduler(@tests);
+
+ # #12458
+ local $ENV{HARNESS_IS_VERBOSE} = 1
+ if $self->formatter->verbosity > 0;
+
+ # Formatter gets only names.
+ $self->formatter->prepare( map { $_->description } $scheduler->get_all );
+
+ if ( $self->jobs > 1 ) {
+ $self->_aggregate_parallel( $aggregate, $scheduler );
+ }
+ else {
+ $self->_aggregate_single( $aggregate, $scheduler );
+ }
+
+ return;
+}
+
+sub _add_descriptions {
+ my $self = shift;
+
+ # Turn unwrapped scalars into anonymous arrays and copy the name as
+ # the description for tests that have only a name.
+ return map { @$_ == 1 ? [ $_->[0], $_->[0] ] : $_ }
+ map { 'ARRAY' eq ref $_ ? $_ : [$_] } @_;
+}
+
+=head3 C<make_scheduler>
+
+Called by the harness when it needs to create a
+L<TAP::Parser::Scheduler>. Override in a subclass to provide an
+alternative scheduler. C<make_scheduler> is passed the list of tests
+that was passed to C<aggregate_tests>.
+
+=cut
+
+sub make_scheduler {
+ my ( $self, @tests ) = @_;
+ return $self->_construct(
+ $self->scheduler_class,
+ tests => [ $self->_add_descriptions(@tests) ],
+ rules => $self->rules
+ );
+}
+
+=head3 C<jobs>
+
+Gets or sets the number of concurrent test runs the harness is
+handling. By default, this value is 1 -- for parallel testing, this
+should be set higher.
+
+=cut
+
+##############################################################################
+
+sub _get_parser_args {
+ my ( $self, $job ) = @_;
+ my $test_prog = $job->filename;
+ my %args = ();
+
+ $args{sources} = $self->sources if $self->sources;
+
+ my @switches;
+ @switches = $self->lib if $self->lib;
+ push @switches => $self->switches if $self->switches;
+ $args{switches} = \@switches;
+ $args{spool} = $self->_open_spool($test_prog);
+ $args{merge} = $self->merge;
+ $args{ignore_exit} = $self->ignore_exit;
+ $args{version} = $self->version if $self->version;
+
+ if ( my $exec = $self->exec ) {
+ $args{exec}
+ = ref $exec eq 'CODE'
+ ? $exec->( $self, $test_prog )
+ : [ @$exec, $test_prog ];
+ if ( not defined $args{exec} ) {
+ $args{source} = $test_prog;
+ }
+ elsif ( ( ref( $args{exec} ) || "" ) ne "ARRAY" ) {
+ $args{source} = delete $args{exec};
+ }
+ }
+ else {
+ $args{source} = $test_prog;
+ }
+
+ if ( defined( my $test_args = $self->test_args ) ) {
+
+ if ( ref($test_args) eq 'HASH' ) {
+
+ # different args for each test
+ if ( exists( $test_args->{ $job->description } ) ) {
+ $test_args = $test_args->{ $job->description };
+ }
+ else {
+ $self->_croak( "TAP::Harness Can't find test_args for "
+ . $job->description );
+ }
+ }
+
+ $args{test_args} = $test_args;
+ }
+
+ return \%args;
+}
+
+=head3 C<make_parser>
+
+Make a new parser and display formatter session. Typically used and/or
+overridden in subclasses.
+
+ my ( $parser, $session ) = $harness->make_parser;
+
+=cut
+
+sub make_parser {
+ my ( $self, $job ) = @_;
+
+ my $args = $self->_get_parser_args($job);
+ $self->_make_callback( 'parser_args', $args, $job->as_array_ref );
+ my $parser = $self->_construct( $self->parser_class, $args );
+
+ $self->_make_callback( 'made_parser', $parser, $job->as_array_ref );
+ my $session = $self->formatter->open_test( $job->description, $parser );
+
+ return ( $parser, $session );
+}
+
+=head3 C<finish_parser>
+
+Terminate use of a parser. Typically used and/or overridden in
+subclasses. The parser isn't destroyed as a result of this.
+
+=cut
+
+sub finish_parser {
+ my ( $self, $parser, $session ) = @_;
+
+ $session->close_test;
+ $self->_close_spool($parser);
+
+ return $parser;
+}
+
+sub _open_spool {
+ my $self = shift;
+ my $test = shift;
+
+ if ( my $spool_dir = $ENV{PERL_TEST_HARNESS_DUMP_TAP} ) {
+
+ my $spool = File::Spec->catfile( $spool_dir, $test );
+
+ # Make the directory
+ my ( $vol, $dir, undef ) = File::Spec->splitpath($spool);
+ my $path = File::Spec->catpath( $vol, $dir, '' );
+ eval { mkpath($path) };
+ $self->_croak($@) if $@;
+
+ my $spool_handle = IO::Handle->new;
+ open( $spool_handle, ">$spool" )
+ or $self->_croak(" Can't write $spool ( $! ) ");
+
+ return $spool_handle;
+ }
+
+ return;
+}
+
+sub _close_spool {
+ my $self = shift;
+ my ($parser) = @_;
+
+ if ( my $spool_handle = $parser->delete_spool ) {
+ close($spool_handle)
+ or $self->_croak(" Error closing TAP spool file( $! ) \n ");
+ }
+
+ return;
+}
+
+sub _croak {
+ my ( $self, $message ) = @_;
+ unless ($message) {
+ $message = $self->_error;
+ }
+ $self->SUPER::_croak($message);
+
+ return;
+}
+
+1;
+
+__END__
+
+##############################################################################
+
+=head1 CONFIGURING
+
+C<TAP::Harness> is designed to be easy to configure.
+
+=head2 Plugins
+
+C<TAP::Parser> plugins let you change the way TAP is I<input> to and I<output>
+from the parser.
+
+L<TAP::Parser::SourceHandler>s handle TAP I<input>. You can configure them
+and load custom handlers using the C<sources> parameter to L</new>.
+
+L<TAP::Formatter>s handle TAP I<output>. You can load custom formatters by
+using the C<formatter_class> parameter to L</new>. To configure a formatter,
+you currently need to instantiate it outside of L<TAP::Harness> and pass it in
+with the C<formatter> parameter to L</new>. This I<may> be addressed by adding
+a I<formatters> parameter to L</new> in the future.
+
+=head2 C<Module::Build>
+
+L<Module::Build> version C<0.30> supports C<TAP::Harness>.
+
+To load C<TAP::Harness> plugins, you'll need to use the C<tap_harness_args>
+parameter to C<new>, typically from your C<Build.PL>. For example:
+
+ Module::Build->new(
+ module_name => 'MyApp',
+ test_file_exts => [qw(.t .tap .txt)],
+ use_tap_harness => 1,
+ tap_harness_args => {
+ sources => {
+ MyCustom => {},
+ File => {
+ extensions => ['.tap', '.txt'],
+ },
+ },
+ formatter_class => 'TAP::Formatter::HTML',
+ },
+ build_requires => {
+ 'Module::Build' => '0.30',
+ 'TAP::Harness' => '3.18',
+ },
+ )->create_build_script;
+
+See L</new>
+
+=head2 C<ExtUtils::MakeMaker>
+
+L<ExtUtils::MakeMaker> does not support L<TAP::Harness> out-of-the-box.
+
+=head2 C<prove>
+
+L<prove> supports C<TAP::Harness> plugins, and has a plugin system of its
+own. See L<prove/FORMATTERS>, L<prove/SOURCE HANDLERS> and L<App::Prove>
+for more details.
+
+=head1 WRITING PLUGINS
+
+If you can't configure C<TAP::Harness> to do what you want, and you can't find
+an existing plugin, consider writing one.
+
+The two primary use cases supported by L<TAP::Harness> for plugins are I<input>
+and I<output>:
+
+=over 2
+
+=item Customize how TAP gets into the parser
+
+To do this, you can either extend an existing L<TAP::Parser::SourceHandler>,
+or write your own. It's a pretty simple API, and they can be loaded and
+configured using the C<sources> parameter to L</new>.
+
+=item Customize how TAP results are output from the parser
+
+To do this, you can either extend an existing L<TAP::Formatter>, or write your
+own. Writing formatters are a bit more involved than writing a
+I<SourceHandler>, as you'll need to understand the L<TAP::Parser> API. A
+good place to start is by understanding how L</aggregate_tests> works.
+
+Custom formatters can be loaded configured using the C<formatter_class>
+parameter to L</new>.
+
+=back
+
+=head1 SUBCLASSING
+
+If you can't configure C<TAP::Harness> to do exactly what you want, and writing
+a plugin isn't an option, consider extending it. It is designed to be (mostly)
+easy to subclass, though the cases when sub-classing is necessary should be few
+and far between.
+
+=head2 Methods
+
+The following methods are ones you may wish to override if you want to
+subclass C<TAP::Harness>.
+
+=over 4
+
+=item L</new>
+
+=item L</runtests>
+
+=item L</summary>
+
+=back
+
+=cut
+
+=head1 REPLACING
+
+If you like the C<prove> utility and L<TAP::Parser> but you want your
+own harness, all you need to do is write one and provide C<new> and
+C<runtests> methods. Then you can use the C<prove> utility like so:
+
+ prove --harness My::Test::Harness
+
+Note that while C<prove> accepts a list of tests (or things to be
+tested), C<new> has a fairly rich set of arguments. You'll probably want
+to read over this code carefully to see how all of them are being used.
+
+=head1 SEE ALSO
+
+L<Test::Harness>
+
+=cut
+
+# vim:ts=4:sw=4:et:sta
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Harness/Beyond.pod b/Master/tlpkg/tlperl/site/lib/TAP/Harness/Beyond.pod
new file mode 100755
index 00000000000..989e2efc146
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Harness/Beyond.pod
@@ -0,0 +1,426 @@
+=head1 NAME
+
+Test::Harness::Beyond - Beyond make test
+
+=head1 Beyond make test
+
+Test::Harness is responsible for running test scripts, analysing
+their output and reporting success or failure. When I type
+F<make test> (or F<./Build test>) for a module, Test::Harness is usually
+used to run the tests (not all modules use Test::Harness but the
+majority do).
+
+To start exploring some of the features of Test::Harness I need to
+switch from F<make test> to the F<prove> command (which ships with
+Test::Harness). For the following examples I'll also need a recent
+version of Test::Harness installed; 3.14 is current as I write.
+
+For the examples I'm going to assume that we're working with a
+'normal' Perl module distribution. Specifically I'll assume that
+typing F<make> or F<./Build> causes the built, ready-to-install module
+code to be available below ./blib/lib and ./blib/arch and that
+there's a directory called 't' that contains our tests. Test::Harness
+isn't hardwired to that configuration but it saves me from explaining
+which files live where for each example.
+
+Back to F<prove>; like F<make test> it runs a test suite - but it
+provides far more control over which tests are executed, in what
+order and how their results are reported. Typically F<make test>
+runs all the test scripts below the 't' directory. To do the same
+thing with prove I type:
+
+ prove -rb t
+
+The switches here are -r to recurse into any directories below 't'
+and -b which adds ./blib/lib and ./blib/arch to Perl's include path
+so that the tests can find the code they will be testing. If I'm
+testing a module of which an earlier version is already installed
+I need to be careful about the include path to make sure I'm not
+running my tests against the installed version rather than the new
+one that I'm working on.
+
+Unlike F<make test>, typing F<prove> doesn't automatically rebuild
+my module. If I forget to make before prove I will be testing against
+older versions of those files - which inevitably leads to confusion.
+I either get into the habit of typing
+
+ make && prove -rb t
+
+or - if I have no XS code that needs to be built I use the modules
+below F<lib> instead
+
+ prove -Ilib -r t
+
+So far I've shown you nothing that F<make test> doesn't do. Let's
+fix that.
+
+=head2 Saved State
+
+If I have failing tests in a test suite that consists of more than
+a handful of scripts and takes more than a few seconds to run it
+rapidly becomes tedious to run the whole test suite repeatedly as
+I track down the problems.
+
+I can tell prove just to run the tests that are failing like this:
+
+ prove -b t/this_fails.t t/so_does_this.t
+
+That speeds things up but I have to make a note of which tests are
+failing and make sure that I run those tests. Instead I can use
+prove's --state switch and have it keep track of failing tests for
+me. First I do a complete run of the test suite and tell prove to
+save the results:
+
+ prove -rb --state=save t
+
+That stores a machine readable summary of the test run in a file
+called '.prove' in the current directory. If I have failures I can
+then run just the failing scripts like this:
+
+ prove -b --state=failed
+
+I can also tell prove to save the results again so that it updates
+its idea of which tests failed:
+
+ prove -b --state=failed,save
+
+As soon as one of my failing tests passes it will be removed from
+the list of failed tests. Eventually I fix them all and prove can
+find no failing tests to run:
+
+ Files=0, Tests=0, 0 wallclock secs ( 0.00 usr + 0.00 sys = 0.00 CPU)
+ Result: NOTESTS
+
+As I work on a particular part of my module it's most likely that
+the tests that cover that code will fail. I'd like to run the whole
+test suite but have it prioritize these 'hot' tests. I can tell
+prove to do this:
+
+ prove -rb --state=hot,save t
+
+All the tests will run but those that failed most recently will be
+run first. If no tests have failed since I started saving state all
+tests will run in their normal order. This combines full test
+coverage with early notification of failures.
+
+The --state switch supports a number of options; for example to run
+failed tests first followed by all remaining tests ordered by the
+timestamps of the test scripts - and save the results - I can use
+
+ prove -rb --state=failed,new,save t
+
+See the prove documentation (type prove --man) for the full list
+of state options.
+
+When I tell prove to save state it writes a file called '.prove'
+('_prove' on Windows) in the current directory. It's a YAML document
+so it's quite easy to write tools of your own that work on the saved
+test state - but the format isn't officially documented so it might
+change without (much) warning in the future.
+
+=head2 Parallel Testing
+
+If my tests take too long to run I may be able to speed them up by
+running multiple test scripts in parallel. This is particularly
+effective if the tests are I/O bound or if I have multiple CPU
+cores. I tell prove to run my tests in parallel like this:
+
+ prove -rb -j 9 t
+
+The -j switch enables parallel testing; the number that follows it
+is the maximum number of tests to run in parallel. Sometimes tests
+that pass when run sequentially will fail when run in parallel. For
+example if two different test scripts use the same temporary file
+or attempt to listen on the same socket I'll have problems running
+them in parallel. If I see unexpected failures I need to check my
+tests to work out which of them are trampling on the same resource
+and rename temporary files or add locks as appropriate.
+
+To get the most performance benefit I want to have the test scripts
+that take the longest to run start first - otherwise I'll be waiting
+for the one test that takes nearly a minute to complete after all
+the others are done. I can use the --state switch to run the tests
+in slowest to fastest order:
+
+ prove -rb -j 9 --state=slow,save t
+
+=head2 Non-Perl Tests
+
+The Test Anything Protocol (http://testanything.org/) isn't just
+for Perl. Just about any language can be used to write tests that
+output TAP. There are TAP based testing libraries for C, C++, PHP,
+Python and many others. If I can't find a TAP library for my language
+of choice it's easy to generate valid TAP. It looks like this:
+
+ 1..3
+ ok 1 - init OK
+ ok 2 - opened file
+ not ok 3 - appended to file
+
+The first line is the plan - it specifies the number of tests I'm
+going to run so that it's easy to check that the test script didn't
+exit before running all the expected tests. The following lines are
+the test results - 'ok' for pass, 'not ok' for fail. Each test has
+a number and, optionally, a description. And that's it. Any language
+that can produce output like that on STDOUT can be used to write
+tests.
+
+Recently I've been rekindling a two-decades-old interest in Forth.
+Evidently I have a masochistic streak that even Perl can't satisfy.
+I want to write tests in Forth and run them using prove (you can
+find my gforth TAP experiments at
+https://svn.hexten.net/andy/Forth/Testing/). I can use the --exec
+switch to tell prove to run the tests using gforth like this:
+
+ prove -r --exec gforth t
+
+Alternately, if the language used to write my tests allows a shebang
+line I can use that to specify the interpreter. Here's a test written
+in PHP:
+
+ #!/usr/bin/php
+ <?php
+ print "1..2\n";
+ print "ok 1\n";
+ print "not ok 2\n";
+ ?>
+
+If I save that as t/phptest.t the shebang line will ensure that it
+runs correctly along with all my other tests.
+
+=head2 Mixing it up
+
+Subtle interdependencies between test programs can mask problems -
+for example an earlier test may neglect to remove a temporary file
+that affects the behaviour of a later test. To find this kind of
+problem I use the --shuffle and --reverse options to run my tests
+in random or reversed order.
+
+=head2 Rolling My Own
+
+If I need a feature that prove doesn't provide I can easily write my own.
+
+Typically you'll want to change how TAP gets I<input> into and I<output>
+from the parser. L<App::Prove> supports arbitrary plugins, and L<TAP::Harness>
+supports custom I<formatters> and I<source handlers> that you can load using
+either L<prove> or L<Module::Build>; there are many examples to base mine on.
+For more details see L<App::Prove>, L<TAP::Parser::SourceHandler>, and
+L<TAP::Formatter::Base>.
+
+If writing a plugin is not enough, you can write your own test harness; one of
+the motives for the 3.00 rewrite of Test::Harness was to make it easier to
+subclass and extend.
+
+The Test::Harness module is a compatibility wrapper around TAP::Harness.
+For new applications I should use TAP::Harness directly. As we'll
+see, prove uses TAP::Harness.
+
+When I run prove it processes its arguments, figures out which test
+scripts to run and then passes control to TAP::Harness to run the
+tests, parse, analyse and present the results. By subclassing
+TAP::Harness I can customise many aspects of the test run.
+
+I want to log my test results in a database so I can track them
+over time. To do this I override the summary method in TAP::Harness.
+I start with a simple prototype that dumps the results as a YAML
+document:
+
+ package My::TAP::Harness;
+
+ use base 'TAP::Harness';
+ use YAML;
+
+ sub summary {
+ my ( $self, $aggregate ) = @_;
+ print Dump( $aggregate );
+ $self->SUPER::summary( $aggregate );
+ }
+
+ 1;
+
+I need to tell prove to use my My::TAP::Harness. If My::TAP::Harness
+is on Perl's @INC include path I can
+
+ prove --harness=My::TAP::Harness -rb t
+
+If I don't have My::TAP::Harness installed on @INC I need to provide
+the correct path to perl when I run prove:
+
+ perl -Ilib `which prove` --harness=My::TAP::Harness -rb t
+
+I can incorporate these options into my own version of prove. It's
+pretty simple. Most of the work of prove is handled by App::Prove.
+The important code in prove is just:
+
+ use App::Prove;
+
+ my $app = App::Prove->new;
+ $app->process_args(@ARGV);
+ exit( $app->run ? 0 : 1 );
+
+If I write a subclass of App::Prove I can customise any aspect of
+the test runner while inheriting all of prove's behaviour. Here's
+myprove:
+
+ #!/usr/bin/env perl use lib qw( lib ); # Add ./lib to @INC
+ use App::Prove;
+
+ my $app = App::Prove->new;
+
+ # Use custom TAP::Harness subclass
+ $app->harness( 'My::TAP::Harness' );
+
+ $app->process_args( @ARGV ); exit( $app->run ? 0 : 1 );
+
+Now I can run my tests like this
+
+ ./myprove -rb t
+
+=head2 Deeper Customisation
+
+Now that I know how to subclass and replace TAP::Harness I can
+replace any other part of the harness. To do that I need to know
+which classes are responsible for which functionality. Here's a
+brief guided tour; the default class for each component is shown
+in parentheses. Normally any replacements I write will be subclasses
+of these default classes.
+
+When I run my tests TAP::Harness creates a scheduler
+(TAP::Parser::Scheduler) to work out the running order for the
+tests, an aggregator (TAP::Parser::Aggregator) to collect and analyse
+the test results and a formatter (TAP::Formatter::Console) to display
+those results.
+
+If I'm running my tests in parallel there may also be a multiplexer
+(TAP::Parser::Multiplexer) - the component that allows multiple
+tests to run simultaneously.
+
+Once it has created those helpers TAP::Harness starts running the
+tests. For each test it creates a new parser (TAP::Parser) which
+is responsible for running the test script and parsing its output.
+
+To replace any of these components I call one of these harness
+methods with the name of the replacement class:
+
+ aggregator_class
+ formatter_class
+ multiplexer_class
+ parser_class
+ scheduler_class
+
+For example, to replace the aggregator I would
+
+ $harness->aggregator_class( 'My::Aggregator' );
+
+Alternately I can supply the names of my substitute classes to the
+TAP::Harness constructor:
+
+ my $harness = TAP::Harness->new(
+ { aggregator_class => 'My::Aggregator' }
+ );
+
+If I need to reach even deeper into the internals of the harness I
+can replace the classes that TAP::Parser uses to execute test scripts
+and tokenise their output. Before running a test script TAP::Parser
+creates a grammar (TAP::Parser::Grammar) to decode the raw TAP into
+tokens, a result factory (TAP::Parser::ResultFactory) to turn the
+decoded TAP results into objects and, depending on whether it's
+running a test script or reading TAP from a file, scalar or array
+a source or an iterator (TAP::Parser::IteratorFactory).
+
+Each of these objects may be replaced by calling one of these parser
+methods:
+
+ source_class
+ perl_source_class
+ grammar_class
+ iterator_factory_class
+ result_factory_class
+
+=head2 Callbacks
+
+As an alternative to subclassing the components I need to change I
+can attach callbacks to the default classes. TAP::Harness exposes
+these callbacks:
+
+ parser_args Tweak the parameters used to create the parser
+ made_parser Just made a new parser
+ before_runtests About to run tests
+ after_runtests Have run all tests
+ after_test Have run an individual test script
+
+TAP::Parser also supports callbacks; bailout, comment, plan, test,
+unknown, version and yaml are called for the corresponding TAP
+result types, ALL is called for all results, ELSE is called for all
+results for which a named callback is not installed and EOF is
+called once at the end of each TAP stream.
+
+To install a callback I pass the name of the callback and a subroutine
+reference to TAP::Harness or TAP::Parser's callback method:
+
+ $harness->callback( after_test => sub {
+ my ( $script, $desc, $parser ) = @_;
+ } );
+
+I can also pass callbacks to the constructor:
+
+ my $harness = TAP::Harness->new({
+ callbacks => {
+ after_test => sub {
+ my ( $script, $desc, $parser ) = @_;
+ # Do something interesting here
+ }
+ }
+ });
+
+When it comes to altering the behaviour of the test harness there's
+more than one way to do it. Which way is best depends on my
+requirements. In general if I only want to observe test execution
+without changing the harness' behaviour (for example to log test
+results to a database) I choose callbacks. If I want to make the
+harness behave differently subclassing gives me more control.
+
+=head2 Parsing TAP
+
+Perhaps I don't need a complete test harness. If I already have a
+TAP test log that I need to parse all I need is TAP::Parser and the
+various classes it depends upon. Here's the code I need to run a
+test and parse its TAP output
+
+ use TAP::Parser;
+
+ my $parser = TAP::Parser->new( { source => 't/simple.t' } );
+ while ( my $result = $parser->next ) {
+ print $result->as_string, "\n";
+ }
+
+Alternately I can pass an open filehandle as source and have the
+parser read from that rather than attempting to run a test script:
+
+ open my $tap, '<', 'tests.tap'
+ or die "Can't read TAP transcript ($!)\n";
+ my $parser = TAP::Parser->new( { source => $tap } );
+ while ( my $result = $parser->next ) {
+ print $result->as_string, "\n";
+ }
+
+This approach is useful if I need to convert my TAP based test
+results into some other representation. See TAP::Convert::TET
+(http://search.cpan.org/dist/TAP-Convert-TET/) for an example of
+this approach.
+
+=head2 Getting Support
+
+The Test::Harness developers hang out on the tapx-dev mailing
+list[1]. For discussion of general, language independent TAP issues
+there's the tap-l[2] list. Finally there's a wiki dedicated to the
+Test Anything Protocol[3]. Contributions to the wiki, patches and
+suggestions are all welcome.
+
+=for comment
+ The URLs in [1] and [2] point to 404 pages. What are currently the
+ correct URLs?
+
+[1] L<http://www.hexten.net/mailman/listinfo/tapx-dev>
+[2] L<http://testanything.org/mailman/listinfo/tap-l>
+[3] L<http://testanything.org/>
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Harness/Env.pm b/Master/tlpkg/tlperl/site/lib/TAP/Harness/Env.pm
new file mode 100755
index 00000000000..8d46d3856ba
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Harness/Env.pm
@@ -0,0 +1,215 @@
+package TAP::Harness::Env;
+
+use strict;
+use warnings;
+
+use constant IS_VMS => ( $^O eq 'VMS' );
+use TAP::Object;
+use Text::ParseWords qw/shellwords/;
+
+our $VERSION = '3.48';
+
+# Get the parts of @INC which are changed from the stock list AND
+# preserve reordering of stock directories.
+sub _filtered_inc_vms {
+ my @inc = grep { !ref } @INC; #28567
+
+ # VMS has a 255-byte limit on the length of %ENV entries, so
+ # toss the ones that involve perl_root, the install location
+ @inc = grep { !/perl_root/i } @inc;
+
+ my @default_inc = _default_inc();
+
+ my @new_inc;
+ my %seen;
+ for my $dir (@inc) {
+ next if $seen{$dir}++;
+
+ if ( $dir eq ( $default_inc[0] || '' ) ) {
+ shift @default_inc;
+ }
+ else {
+ push @new_inc, $dir;
+ }
+
+ shift @default_inc while @default_inc and $seen{ $default_inc[0] };
+ }
+ return @new_inc;
+}
+
+# Cache this to avoid repeatedly shelling out to Perl.
+my @inc;
+
+sub _default_inc {
+ return @inc if @inc;
+
+ local $ENV{PERL5LIB};
+ local $ENV{PERLLIB};
+
+ my $perl = $ENV{HARNESS_PERL} || $^X;
+
+ # Avoid using -l for the benefit of Perl 6
+ chomp( @inc = `"$perl" -e "print join qq[\\n], \@INC, q[]"` );
+ return @inc;
+}
+
+sub create {
+ my $package = shift;
+ my %input = %{ shift || {} };
+
+ my @libs = @{ delete $input{lib} || [] };
+ my @raw_switches = @{ delete $input{switches} || [] };
+ my @opt
+ = ( @raw_switches, shellwords( $ENV{HARNESS_PERL_SWITCHES} || '' ) );
+ my @switches;
+ while ( my $opt = shift @opt ) {
+ if ( $opt =~ /^ -I (.*) $ /x ) {
+ push @libs, length($1) ? $1 : shift @opt;
+ }
+ else {
+ push @switches, $opt;
+ }
+ }
+
+ # Do things the old way on VMS...
+ push @libs, _filtered_inc_vms() if IS_VMS;
+
+ # If $Verbose isn't numeric default to 1. This helps core.
+ my $verbose
+ = $ENV{HARNESS_VERBOSE}
+ ? $ENV{HARNESS_VERBOSE} !~ /\d/
+ ? 1
+ : $ENV{HARNESS_VERBOSE}
+ : 0;
+
+ my %args = (
+ lib => \@libs,
+ timer => $ENV{HARNESS_TIMER} || 0,
+ switches => \@switches,
+ color => $ENV{HARNESS_COLOR} || 0,
+ verbosity => $verbose,
+ ignore_exit => $ENV{HARNESS_IGNORE_EXIT} || 0,
+ );
+
+ my $class = delete $input{harness_class} || $ENV{HARNESS_SUBCLASS} || 'TAP::Harness';
+ if ( defined( my $env_opt = $ENV{HARNESS_OPTIONS} ) ) {
+ for my $opt ( split /:/, $env_opt ) {
+ if ( $opt =~ /^j(\d*)$/ ) {
+ $args{jobs} = $1 || 9;
+ }
+ elsif ( $opt eq 'c' ) {
+ $args{color} = 1;
+ }
+ elsif ( $opt =~ m/^f(.*)$/ ) {
+ my $fmt = $1;
+ $fmt =~ s/-/::/g;
+ $args{formatter_class} = $fmt;
+ }
+ elsif ( $opt =~ m/^a(.*)$/ ) {
+ my $archive = $1;
+ $class = 'TAP::Harness::Archive';
+ $args{archive} = $archive;
+ }
+ else {
+ die "Unknown HARNESS_OPTIONS item: $opt\n";
+ }
+ }
+ }
+ return TAP::Object->_construct($class, { %args, %input });
+}
+
+1;
+
+=head1 NAME
+
+TAP::Harness::Env - Parsing harness related environmental variables where appropriate
+
+=head1 VERSION
+
+Version 3.48
+
+=head1 SYNOPSIS
+
+ my $harness = TAP::Harness::Env->create(\%extra_args)
+
+=head1 DESCRIPTION
+
+This module implements the environmental variables that L<Test::Harness> uses with TAP::Harness, and instantiates the appropriate class with the appropriate arguments.
+
+=head1 METHODS
+
+=over 4
+
+=item * create( \%args )
+
+This function reads the environment and generates an appropriate argument hash from it. If given any arguments in C<%extra_args>, these will override the environmental defaults. In accepts C<harness_class> (which defaults to C<TAP::Harness>), and any argument the harness class accepts.
+
+=back
+
+=head1 ENVIRONMENTAL VARIABLES
+
+=over 4
+
+=item C<HARNESS_PERL_SWITCHES>
+
+Setting this adds perl command line switches to each test file run.
+
+For example, C<HARNESS_PERL_SWITCHES=-T> will turn on taint mode.
+C<HARNESS_PERL_SWITCHES=-MDevel::Cover> will run C<Devel::Cover> for
+each test.
+
+=item C<HARNESS_VERBOSE>
+
+If true, C<TAP::Harness> will output the verbose results of running
+its tests.
+
+=item C<HARNESS_SUBCLASS>
+
+Specifies a TAP::Harness subclass to be used in place of TAP::Harness.
+
+=item C<HARNESS_OPTIONS>
+
+Provide additional options to the harness. Currently supported options are:
+
+=over
+
+=item C<< j<n> >>
+
+Run <n> (default 9) parallel jobs.
+
+=item C<< c >>
+
+Try to color output. See L<TAP::Formatter::Base/"new">.
+
+=item C<< a<file.tgz> >>
+
+Will use L<TAP::Harness::Archive> as the harness class, and save the TAP to
+C<file.tgz>
+
+=item C<< fPackage-With-Dashes >>
+
+Set the formatter_class of the harness being run. Since the C<HARNESS_OPTIONS>
+is separated by C<:>, we use C<-> instead.
+
+=back
+
+Multiple options may be separated by colons:
+
+ HARNESS_OPTIONS=j9:c make test
+
+=item C<HARNESS_TIMER>
+
+Setting this to true will make the harness display the number of
+milliseconds each test took. You can also use F<prove>'s C<--timer>
+switch.
+
+=item C<HARNESS_COLOR>
+
+Attempt to produce color output.
+
+=item C<HARNESS_IGNORE_EXIT>
+
+If set to a true value instruct C<TAP::Parser> to ignore exit and wait
+status from test scripts.
+
+=back
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Object.pm b/Master/tlpkg/tlperl/site/lib/TAP/Object.pm
new file mode 100755
index 00000000000..a012b98a6cf
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Object.pm
@@ -0,0 +1,155 @@
+package TAP::Object;
+
+use strict;
+use warnings;
+
+=head1 NAME
+
+TAP::Object - Base class that provides common functionality to all C<TAP::*> modules
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ package TAP::Whatever;
+
+ use strict;
+
+ use base 'TAP::Object';
+
+ # new() implementation by TAP::Object
+ sub _initialize {
+ my ( $self, @args) = @_;
+ # initialize your object
+ return $self;
+ }
+
+ # ... later ...
+ my $obj = TAP::Whatever->new(@args);
+
+=head1 DESCRIPTION
+
+C<TAP::Object> provides a default constructor and exception model for all
+C<TAP::*> classes. Exceptions are raised using L<Carp>.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+Create a new object. Any arguments passed to C<new> will be passed on to the
+L</_initialize> method. Returns a new object.
+
+=cut
+
+sub new {
+ my $class = shift;
+ my $self = bless {}, $class;
+ return $self->_initialize(@_);
+}
+
+=head2 Instance Methods
+
+=head3 C<_initialize>
+
+Initializes a new object. This method is a stub by default, you should override
+it as appropriate.
+
+I<Note:> L</new> expects you to return C<$self> or raise an exception. See
+L</_croak>, and L<Carp>.
+
+=cut
+
+sub _initialize {
+ return $_[0];
+}
+
+=head3 C<_croak>
+
+Raise an exception using C<croak> from L<Carp>, eg:
+
+ $self->_croak( 'why me?', 'aaarrgh!' );
+
+May also be called as a I<class> method.
+
+ $class->_croak( 'this works too' );
+
+=cut
+
+sub _croak {
+ my $proto = shift;
+ require Carp;
+ Carp::croak(@_);
+ return;
+}
+
+=head3 C<_confess>
+
+Raise an exception using C<confess> from L<Carp>, eg:
+
+ $self->_confess( 'why me?', 'aaarrgh!' );
+
+May also be called as a I<class> method.
+
+ $class->_confess( 'this works too' );
+
+=cut
+
+sub _confess {
+ my $proto = shift;
+ require Carp;
+ Carp::confess(@_);
+ return;
+}
+
+=head3 C<_construct>
+
+Create a new instance of the specified class.
+
+=cut
+
+sub _construct {
+ my ( $self, $class, @args ) = @_;
+
+ $self->_croak("Bad module name $class")
+ unless $class =~ /^ \w+ (?: :: \w+ ) *$/x;
+
+ unless ( $class->can('new') ) {
+ local $@;
+ eval "require $class";
+ $self->_croak("Can't load $class: $@") if $@;
+ }
+
+ return $class->new(@args);
+}
+
+=head3 C<mk_methods>
+
+Create simple getter/setters.
+
+ __PACKAGE__->mk_methods(@method_names);
+
+=cut
+
+sub mk_methods {
+ my ( $class, @methods ) = @_;
+ for my $method_name (@methods) {
+ my $method = "${class}::$method_name";
+ no strict 'refs';
+ *$method = sub {
+ my $self = shift;
+ $self->{$method_name} = shift if @_;
+ return $self->{$method_name};
+ };
+ }
+}
+
+1;
+
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser.pm
new file mode 100755
index 00000000000..9283ac3d2f3
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser.pm
@@ -0,0 +1,1931 @@
+package TAP::Parser;
+
+use strict;
+use warnings;
+
+use TAP::Parser::Grammar ();
+use TAP::Parser::Result ();
+use TAP::Parser::ResultFactory ();
+use TAP::Parser::Source ();
+use TAP::Parser::Iterator ();
+use TAP::Parser::IteratorFactory ();
+use TAP::Parser::SourceHandler::Executable ();
+use TAP::Parser::SourceHandler::Perl ();
+use TAP::Parser::SourceHandler::File ();
+use TAP::Parser::SourceHandler::RawTAP ();
+use TAP::Parser::SourceHandler::Handle ();
+
+use Carp qw( confess );
+
+use base 'TAP::Base';
+
+=encoding utf8
+
+=head1 NAME
+
+TAP::Parser - Parse L<TAP|Test::Harness::TAP> output
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+my $DEFAULT_TAP_VERSION = 12;
+my $MAX_TAP_VERSION = 14;
+
+$ENV{TAP_VERSION} = $MAX_TAP_VERSION;
+
+END {
+
+ # For VMS.
+ delete $ENV{TAP_VERSION};
+}
+
+BEGIN { # making accessors
+ __PACKAGE__->mk_methods(
+ qw(
+ _iterator
+ _spool
+ exec
+ exit
+ is_good_plan
+ plan
+ tests_planned
+ tests_run
+ wait
+ version
+ in_todo
+ start_time
+ end_time
+ start_times
+ end_times
+ skip_all
+ grammar_class
+ result_factory_class
+ iterator_factory_class
+ )
+ );
+
+ sub _stream { # deprecated
+ my $self = shift;
+ $self->_iterator(@_);
+ }
+} # done making accessors
+
+=head1 SYNOPSIS
+
+ use TAP::Parser;
+
+ my $parser = TAP::Parser->new( { source => $source } );
+
+ while ( my $result = $parser->next ) {
+ print $result->as_string;
+ }
+
+=head1 DESCRIPTION
+
+C<TAP::Parser> is designed to produce a proper parse of TAP output. For
+an example of how to run tests through this module, see the simple
+harnesses C<examples/>.
+
+There's a wiki dedicated to the Test Anything Protocol:
+
+L<http://testanything.org>
+
+It includes the TAP::Parser Cookbook:
+
+L<http://testanything.org/testing-with-tap/perl/tap::parser-cookbook.html>
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+ my $parser = TAP::Parser->new(\%args);
+
+Returns a new C<TAP::Parser> object.
+
+The arguments should be a hashref with I<one> of the following keys:
+
+=over 4
+
+=item * C<source>
+
+I<CHANGED in 3.18>
+
+This is the preferred method of passing input to the constructor.
+
+The C<source> is used to create a L<TAP::Parser::Source> that is passed to the
+L</iterator_factory_class> which in turn figures out how to handle the source and
+creates a <TAP::Parser::Iterator> for it. The iterator is used by the parser to
+read in the TAP stream.
+
+To configure the I<IteratorFactory> use the C<sources> parameter below.
+
+Note that C<source>, C<tap> and C<exec> are I<mutually exclusive>.
+
+=item * C<tap>
+
+I<CHANGED in 3.18>
+
+The value should be the complete TAP output.
+
+The I<tap> is used to create a L<TAP::Parser::Source> that is passed to the
+L</iterator_factory_class> which in turn figures out how to handle the source and
+creates a <TAP::Parser::Iterator> for it. The iterator is used by the parser to
+read in the TAP stream.
+
+To configure the I<IteratorFactory> use the C<sources> parameter below.
+
+Note that C<source>, C<tap> and C<exec> are I<mutually exclusive>.
+
+=item * C<exec>
+
+Must be passed an array reference.
+
+The I<exec> array ref is used to create a L<TAP::Parser::Source> that is passed
+to the L</iterator_factory_class> which in turn figures out how to handle the
+source and creates a <TAP::Parser::Iterator> for it. The iterator is used by
+the parser to read in the TAP stream.
+
+By default the L<TAP::Parser::SourceHandler::Executable> class will create a
+L<TAP::Parser::Iterator::Process> object to handle the source. This passes the
+array reference strings as command arguments to L<IPC::Open3::open3|IPC::Open3>:
+
+ exec => [ '/usr/bin/ruby', 't/my_test.rb' ]
+
+If any C<test_args> are given they will be appended to the end of the command
+argument list.
+
+To configure the I<IteratorFactory> use the C<sources> parameter below.
+
+Note that C<source>, C<tap> and C<exec> are I<mutually exclusive>.
+
+=back
+
+The following keys are optional.
+
+=over 4
+
+=item * C<sources>
+
+I<NEW to 3.18>.
+
+If set, C<sources> must be a hashref containing the names of the
+L<TAP::Parser::SourceHandler>s to load and/or configure. The values are a
+hash of configuration that will be accessible to the source handlers via
+L<TAP::Parser::Source/config_for>.
+
+For example:
+
+ sources => {
+ Perl => { exec => '/path/to/custom/perl' },
+ File => { extensions => [ '.tap', '.txt' ] },
+ MyCustom => { some => 'config' },
+ }
+
+This will cause C<TAP::Parser> to pass custom configuration to two of the built-
+in source handlers - L<TAP::Parser::SourceHandler::Perl>,
+L<TAP::Parser::SourceHandler::File> - and attempt to load the C<MyCustom>
+class. See L<TAP::Parser::IteratorFactory/load_handlers> for more detail.
+
+The C<sources> parameter affects how C<source>, C<tap> and C<exec> parameters
+are handled.
+
+See L<TAP::Parser::IteratorFactory>, L<TAP::Parser::SourceHandler> and subclasses for
+more details.
+
+=item * C<callback>
+
+If present, each callback corresponding to a given result type will be called
+with the result as the argument if the C<run> method is used:
+
+ my %callbacks = (
+ test => \&test_callback,
+ plan => \&plan_callback,
+ comment => \&comment_callback,
+ bailout => \&bailout_callback,
+ unknown => \&unknown_callback,
+ );
+
+ my $aggregator = TAP::Parser::Aggregator->new;
+ for my $file ( @test_files ) {
+ my $parser = TAP::Parser->new(
+ {
+ source => $file,
+ callbacks => \%callbacks,
+ }
+ );
+ $parser->run;
+ $aggregator->add( $file, $parser );
+ }
+
+=item * C<switches>
+
+If using a Perl file as a source, optional switches may be passed which will
+be used when invoking the perl executable.
+
+ my $parser = TAP::Parser->new( {
+ source => $test_file,
+ switches => [ '-Ilib' ],
+ } );
+
+=item * C<test_args>
+
+Used in conjunction with the C<source> and C<exec> option to supply a reference
+to an C<@ARGV> style array of arguments to pass to the test program.
+
+=item * C<spool>
+
+If passed a filehandle will write a copy of all parsed TAP to that handle.
+
+=item * C<merge>
+
+If false, STDERR is not captured (though it is 'relayed' to keep it
+somewhat synchronized with STDOUT.)
+
+If true, STDERR and STDOUT are the same filehandle. This may cause
+breakage if STDERR contains anything resembling TAP format, but does
+allow exact synchronization.
+
+Subtleties of this behavior may be platform-dependent and may change in
+the future.
+
+=item * C<grammar_class>
+
+This option was introduced to let you easily customize which I<grammar> class
+the parser should use. It defaults to L<TAP::Parser::Grammar>.
+
+See also L</make_grammar>.
+
+=item * C<result_factory_class>
+
+This option was introduced to let you easily customize which I<result>
+factory class the parser should use. It defaults to
+L<TAP::Parser::ResultFactory>.
+
+See also L</make_result>.
+
+=item * C<iterator_factory_class>
+
+I<CHANGED in 3.18>
+
+This option was introduced to let you easily customize which I<iterator>
+factory class the parser should use. It defaults to
+L<TAP::Parser::IteratorFactory>.
+
+=back
+
+=cut
+
+# new() implementation supplied by TAP::Base
+
+# This should make overriding behaviour of the Parser in subclasses easier:
+sub _default_grammar_class {'TAP::Parser::Grammar'}
+sub _default_result_factory_class {'TAP::Parser::ResultFactory'}
+sub _default_iterator_factory_class {'TAP::Parser::IteratorFactory'}
+
+##############################################################################
+
+=head2 Instance Methods
+
+=head3 C<next>
+
+ my $parser = TAP::Parser->new( { source => $file } );
+ while ( my $result = $parser->next ) {
+ print $result->as_string, "\n";
+ }
+
+This method returns the results of the parsing, one result at a time. Note
+that it is destructive. You can't rewind and examine previous results.
+
+If callbacks are used, they will be issued before this call returns.
+
+Each result returned is a subclass of L<TAP::Parser::Result>. See that
+module and related classes for more information on how to use them.
+
+=cut
+
+sub next {
+ my $self = shift;
+ return ( $self->{_iter} ||= $self->_iter )->();
+}
+
+##############################################################################
+
+=head3 C<run>
+
+ $parser->run;
+
+This method merely runs the parser and parses all of the TAP.
+
+=cut
+
+sub run {
+ my $self = shift;
+ while ( defined( my $result = $self->next ) ) {
+
+ # do nothing
+ }
+}
+
+##############################################################################
+
+=head3 C<make_grammar>
+
+Make a new L<TAP::Parser::Grammar> object and return it. Passes through any
+arguments given.
+
+The C<grammar_class> can be customized, as described in L</new>.
+
+=head3 C<make_result>
+
+Make a new L<TAP::Parser::Result> object using the parser's
+L<TAP::Parser::ResultFactory>, and return it. Passes through any arguments
+given.
+
+The C<result_factory_class> can be customized, as described in L</new>.
+
+=head3 C<make_iterator_factory>
+
+I<NEW to 3.18>.
+
+Make a new L<TAP::Parser::IteratorFactory> object and return it. Passes through
+any arguments given.
+
+C<iterator_factory_class> can be customized, as described in L</new>.
+
+=cut
+
+# This should make overriding behaviour of the Parser in subclasses easier:
+sub make_iterator_factory { shift->iterator_factory_class->new(@_); }
+sub make_grammar { shift->grammar_class->new(@_); }
+sub make_result { shift->result_factory_class->make_result(@_); }
+
+{
+
+ # of the following, anything beginning with an underscore is strictly
+ # internal and should not be exposed.
+ my %initialize = (
+ version => $DEFAULT_TAP_VERSION,
+ plan => '', # the test plan (e.g., 1..3)
+ tests_run => 0, # actual current test numbers
+ skipped => [], #
+ todo => [], #
+ passed => [], #
+ failed => [], #
+ actual_failed => [], # how many tests really failed
+ actual_passed => [], # how many tests really passed
+ todo_passed => [], # tests which unexpectedly succeed
+ parse_errors => [], # perfect TAP should have none
+ );
+
+ # We seem to have this list hanging around all over the place. We could
+ # probably get it from somewhere else to avoid the repetition.
+ my @legal_callback = qw(
+ test
+ version
+ plan
+ comment
+ bailout
+ unknown
+ yaml
+ ALL
+ ELSE
+ EOF
+ );
+
+ my @class_overrides = qw(
+ grammar_class
+ result_factory_class
+ iterator_factory_class
+ );
+
+ sub _initialize {
+ my ( $self, $arg_for ) = @_;
+
+ # everything here is basically designed to convert any TAP source to a
+ # TAP::Parser::Iterator.
+
+ # Shallow copy
+ my %args = %{ $arg_for || {} };
+
+ $self->SUPER::_initialize( \%args, \@legal_callback );
+
+ # get any class overrides out first:
+ for my $key (@class_overrides) {
+ my $default_method = "_default_$key";
+ my $val = delete $args{$key} || $self->$default_method();
+ $self->$key($val);
+ }
+
+ my $iterator = delete $args{iterator};
+ $iterator ||= delete $args{stream}; # deprecated
+ my $tap = delete $args{tap};
+ my $version = delete $args{version};
+ my $raw_source = delete $args{source};
+ my $sources = delete $args{sources};
+ my $exec = delete $args{exec};
+ my $merge = delete $args{merge};
+ my $spool = delete $args{spool};
+ my $switches = delete $args{switches};
+ my $ignore_exit = delete $args{ignore_exit};
+ my $test_args = delete $args{test_args} || [];
+
+ if ( 1 < grep {defined} $iterator, $tap, $raw_source, $exec ) {
+ $self->_croak(
+ "You may only choose one of 'exec', 'tap', 'source' or 'iterator'"
+ );
+ }
+
+ if ( my @excess = sort keys %args ) {
+ $self->_croak("Unknown options: @excess");
+ }
+
+ # convert $tap & $exec to $raw_source equiv.
+ my $type = '';
+ my $source = TAP::Parser::Source->new;
+ if ($tap) {
+ $type = 'raw TAP';
+ $source->raw( \$tap );
+ }
+ elsif ($exec) {
+ $type = 'exec ' . $exec->[0];
+ $source->raw( { exec => $exec } );
+ }
+ elsif ($raw_source) {
+ $type = 'source ' . ref($raw_source) || $raw_source;
+ $source->raw( ref($raw_source) ? $raw_source : \$raw_source );
+ }
+ elsif ($iterator) {
+ $type = 'iterator ' . ref($iterator);
+ }
+
+ if ( $source->raw ) {
+ my $src_factory = $self->make_iterator_factory($sources);
+ $source->merge($merge)->switches($switches)
+ ->test_args($test_args);
+ $iterator = $src_factory->make_iterator($source);
+ }
+
+ unless ($iterator) {
+ $self->_croak(
+ "PANIC: could not determine iterator for input $type");
+ }
+
+ while ( my ( $k, $v ) = each %initialize ) {
+ $self->{$k} = 'ARRAY' eq ref $v ? [] : $v;
+ }
+
+ $self->version($version) if $version;
+ $self->_iterator($iterator);
+ $self->_spool($spool);
+ $self->ignore_exit($ignore_exit);
+
+ return $self;
+ }
+}
+
+=head1 INDIVIDUAL RESULTS
+
+If you've read this far in the docs, you've seen this:
+
+ while ( my $result = $parser->next ) {
+ print $result->as_string;
+ }
+
+Each result returned is a L<TAP::Parser::Result> subclass, referred to as
+I<result types>.
+
+=head2 Result types
+
+Basically, you fetch individual results from the TAP. The six types, with
+examples of each, are as follows:
+
+=over 4
+
+=item * Version
+
+ TAP version 12
+
+=item * Plan
+
+ 1..42
+
+=item * Pragma
+
+ pragma +strict
+
+=item * Test
+
+ ok 3 - We should start with some foobar!
+
+=item * Comment
+
+ # Hope we don't use up the foobar.
+
+=item * Bailout
+
+ Bail out! We ran out of foobar!
+
+=item * Unknown
+
+ ... yo, this ain't TAP! ...
+
+=back
+
+Each result fetched is a result object of a different type. There are common
+methods to each result object and different types may have methods unique to
+their type. Sometimes a type method may be overridden in a subclass, but its
+use is guaranteed to be identical.
+
+=head2 Common type methods
+
+=head3 C<type>
+
+Returns the type of result, such as C<comment> or C<test>.
+
+=head3 C<as_string>
+
+Prints a string representation of the token. This might not be the exact
+output, however. Tests will have test numbers added if not present, TODO and
+SKIP directives will be capitalized and, in general, things will be cleaned
+up. If you need the original text for the token, see the C<raw> method.
+
+=head3 C<raw>
+
+Returns the original line of text which was parsed.
+
+=head3 C<is_plan>
+
+Indicates whether or not this is the test plan line.
+
+=head3 C<is_test>
+
+Indicates whether or not this is a test line.
+
+=head3 C<is_comment>
+
+Indicates whether or not this is a comment. Comments will generally only
+appear in the TAP stream if STDERR is merged to STDOUT. See the
+C<merge> option.
+
+=head3 C<is_bailout>
+
+Indicates whether or not this is bailout line.
+
+=head3 C<is_yaml>
+
+Indicates whether or not the current item is a YAML block.
+
+=head3 C<is_unknown>
+
+Indicates whether or not the current line could be parsed.
+
+=head3 C<is_ok>
+
+ if ( $result->is_ok ) { ... }
+
+Reports whether or not a given result has passed. Anything which is B<not> a
+test result returns true. This is merely provided as a convenient shortcut
+which allows you to do this:
+
+ my $parser = TAP::Parser->new( { source => $source } );
+ while ( my $result = $parser->next ) {
+ # only print failing results
+ print $result->as_string unless $result->is_ok;
+ }
+
+=head2 C<plan> methods
+
+ if ( $result->is_plan ) { ... }
+
+If the above evaluates as true, the following methods will be available on the
+C<$result> object.
+
+=head3 C<plan>
+
+ if ( $result->is_plan ) {
+ print $result->plan;
+ }
+
+This is merely a synonym for C<as_string>.
+
+=head3 C<directive>
+
+ my $directive = $result->directive;
+
+If a SKIP directive is included with the plan, this method will return it.
+
+ 1..0 # SKIP: why bother?
+
+=head3 C<explanation>
+
+ my $explanation = $result->explanation;
+
+If a SKIP directive was included with the plan, this method will return the
+explanation, if any.
+
+=head2 C<pragma> methods
+
+ if ( $result->is_pragma ) { ... }
+
+If the above evaluates as true, the following methods will be available on the
+C<$result> object.
+
+=head3 C<pragmas>
+
+Returns a list of pragmas each of which is a + or - followed by the
+pragma name.
+
+=head2 C<comment> methods
+
+ if ( $result->is_comment ) { ... }
+
+If the above evaluates as true, the following methods will be available on the
+C<$result> object.
+
+=head3 C<comment>
+
+ if ( $result->is_comment ) {
+ my $comment = $result->comment;
+ print "I have something to say: $comment";
+ }
+
+=head2 C<bailout> methods
+
+ if ( $result->is_bailout ) { ... }
+
+If the above evaluates as true, the following methods will be available on the
+C<$result> object.
+
+=head3 C<explanation>
+
+ if ( $result->is_bailout ) {
+ my $explanation = $result->explanation;
+ print "We bailed out because ($explanation)";
+ }
+
+If, and only if, a token is a bailout token, you can get an "explanation" via
+this method. The explanation is the text after the mystical "Bail out!" words
+which appear in the tap output.
+
+=head2 C<unknown> methods
+
+ if ( $result->is_unknown ) { ... }
+
+There are no unique methods for unknown results.
+
+=head2 C<test> methods
+
+ if ( $result->is_test ) { ... }
+
+If the above evaluates as true, the following methods will be available on the
+C<$result> object.
+
+=head3 C<ok>
+
+ my $ok = $result->ok;
+
+Returns the literal text of the C<ok> or C<not ok> status.
+
+=head3 C<number>
+
+ my $test_number = $result->number;
+
+Returns the number of the test, even if the original TAP output did not supply
+that number.
+
+=head3 C<description>
+
+ my $description = $result->description;
+
+Returns the description of the test, if any. This is the portion after the
+test number but before the directive.
+
+=head3 C<directive>
+
+ my $directive = $result->directive;
+
+Returns either C<TODO> or C<SKIP> if either directive was present for a test
+line.
+
+=head3 C<explanation>
+
+ my $explanation = $result->explanation;
+
+If a test had either a C<TODO> or C<SKIP> directive, this method will return
+the accompanying explanation, if present.
+
+ not ok 17 - 'Pigs can fly' # TODO not enough acid
+
+For the above line, the explanation is I<not enough acid>.
+
+=head3 C<is_ok>
+
+ if ( $result->is_ok ) { ... }
+
+Returns a boolean value indicating whether or not the test passed. Remember
+that for TODO tests, the test always passes.
+
+B<Note:> this was formerly C<passed>. The latter method is deprecated and
+will issue a warning.
+
+=head3 C<is_actual_ok>
+
+ if ( $result->is_actual_ok ) { ... }
+
+Returns a boolean value indicating whether or not the test passed, regardless
+of its TODO status.
+
+B<Note:> this was formerly C<actual_passed>. The latter method is deprecated
+and will issue a warning.
+
+=head3 C<is_unplanned>
+
+ if ( $test->is_unplanned ) { ... }
+
+If a test number is greater than the number of planned tests, this method will
+return true. Unplanned tests will I<always> return false for C<is_ok>,
+regardless of whether or not the test C<has_todo> (see
+L<TAP::Parser::Result::Test> for more information about this).
+
+=head3 C<has_skip>
+
+ if ( $result->has_skip ) { ... }
+
+Returns a boolean value indicating whether or not this test had a SKIP
+directive.
+
+=head3 C<has_todo>
+
+ if ( $result->has_todo ) { ... }
+
+Returns a boolean value indicating whether or not this test had a TODO
+directive.
+
+Note that TODO tests I<always> pass. If you need to know whether or not
+they really passed, check the C<is_actual_ok> method.
+
+=head3 C<in_todo>
+
+ if ( $parser->in_todo ) { ... }
+
+True while the most recent result was a TODO. Becomes true before the
+TODO result is returned and stays true until just before the next non-
+TODO test is returned.
+
+=head1 TOTAL RESULTS
+
+After parsing the TAP, there are many methods available to let you dig through
+the results and determine what is meaningful to you.
+
+=head2 Individual Results
+
+These results refer to individual tests which are run.
+
+=head3 C<passed>
+
+ my @passed = $parser->passed; # the test numbers which passed
+ my $passed = $parser->passed; # the number of tests which passed
+
+This method lets you know which (or how many) tests passed. If a test failed
+but had a TODO directive, it will be counted as a passed test.
+
+=cut
+
+sub passed {
+ return @{ $_[0]->{passed} }
+ if ref $_[0]->{passed};
+ return wantarray ? 1 .. $_[0]->{passed} : $_[0]->{passed};
+}
+
+=head3 C<failed>
+
+ my @failed = $parser->failed; # the test numbers which failed
+ my $failed = $parser->failed; # the number of tests which failed
+
+This method lets you know which (or how many) tests failed. If a test passed
+but had a TODO directive, it will B<NOT> be counted as a failed test.
+
+=cut
+
+sub failed { @{ shift->{failed} } }
+
+=head3 C<actual_passed>
+
+ # the test numbers which actually passed
+ my @actual_passed = $parser->actual_passed;
+
+ # the number of tests which actually passed
+ my $actual_passed = $parser->actual_passed;
+
+This method lets you know which (or how many) tests actually passed,
+regardless of whether or not a TODO directive was found.
+
+=cut
+
+sub actual_passed {
+ return @{ $_[0]->{actual_passed} }
+ if ref $_[0]->{actual_passed};
+ return wantarray ? 1 .. $_[0]->{actual_passed} : $_[0]->{actual_passed};
+}
+*actual_ok = \&actual_passed;
+
+=head3 C<actual_ok>
+
+This method is a synonym for C<actual_passed>.
+
+=head3 C<actual_failed>
+
+ # the test numbers which actually failed
+ my @actual_failed = $parser->actual_failed;
+
+ # the number of tests which actually failed
+ my $actual_failed = $parser->actual_failed;
+
+This method lets you know which (or how many) tests actually failed,
+regardless of whether or not a TODO directive was found.
+
+=cut
+
+sub actual_failed { @{ shift->{actual_failed} } }
+
+##############################################################################
+
+=head3 C<todo>
+
+ my @todo = $parser->todo; # the test numbers with todo directives
+ my $todo = $parser->todo; # the number of tests with todo directives
+
+This method lets you know which (or how many) tests had TODO directives.
+
+=cut
+
+sub todo { @{ shift->{todo} } }
+
+=head3 C<todo_passed>
+
+ # the test numbers which unexpectedly succeeded
+ my @todo_passed = $parser->todo_passed;
+
+ # the number of tests which unexpectedly succeeded
+ my $todo_passed = $parser->todo_passed;
+
+This method lets you know which (or how many) tests actually passed but were
+declared as "TODO" tests.
+
+=cut
+
+sub todo_passed { @{ shift->{todo_passed} } }
+
+##############################################################################
+
+=head3 C<todo_failed>
+
+ # deprecated in favor of 'todo_passed'. This method was horribly misnamed.
+
+This was a badly misnamed method. It indicates which TODO tests unexpectedly
+succeeded. Will now issue a warning and call C<todo_passed>.
+
+=cut
+
+sub todo_failed {
+ warn
+ '"todo_failed" is deprecated. Please use "todo_passed". See the docs.';
+ goto &todo_passed;
+}
+
+=head3 C<skipped>
+
+ my @skipped = $parser->skipped; # the test numbers with SKIP directives
+ my $skipped = $parser->skipped; # the number of tests with SKIP directives
+
+This method lets you know which (or how many) tests had SKIP directives.
+
+=cut
+
+sub skipped { @{ shift->{skipped} } }
+
+=head2 Pragmas
+
+=head3 C<pragma>
+
+Get or set a pragma. To get the state of a pragma:
+
+ if ( $p->pragma('strict') ) {
+ # be strict
+ }
+
+To set the state of a pragma:
+
+ $p->pragma('strict', 1); # enable strict mode
+
+=cut
+
+sub pragma {
+ my ( $self, $pragma ) = splice @_, 0, 2;
+
+ return $self->{pragma}->{$pragma} unless @_;
+
+ if ( my $state = shift ) {
+ $self->{pragma}->{$pragma} = 1;
+ }
+ else {
+ delete $self->{pragma}->{$pragma};
+ }
+
+ return;
+}
+
+=head3 C<pragmas>
+
+Get a list of all the currently enabled pragmas:
+
+ my @pragmas_enabled = $p->pragmas;
+
+=cut
+
+sub pragmas { sort keys %{ shift->{pragma} || {} } }
+
+=head2 Summary Results
+
+These results are "meta" information about the total results of an individual
+test program.
+
+=head3 C<plan>
+
+ my $plan = $parser->plan;
+
+Returns the test plan, if found.
+
+=head3 C<good_plan>
+
+Deprecated. Use C<is_good_plan> instead.
+
+=cut
+
+sub good_plan {
+ warn 'good_plan() is deprecated. Please use "is_good_plan()"';
+ goto &is_good_plan;
+}
+
+##############################################################################
+
+=head3 C<is_good_plan>
+
+ if ( $parser->is_good_plan ) { ... }
+
+Returns a boolean value indicating whether or not the number of tests planned
+matches the number of tests run.
+
+B<Note:> this was formerly C<good_plan>. The latter method is deprecated and
+will issue a warning.
+
+And since we're on that subject ...
+
+=head3 C<tests_planned>
+
+ print $parser->tests_planned;
+
+Returns the number of tests planned, according to the plan. For example, a
+plan of '1..17' will mean that 17 tests were planned.
+
+=head3 C<tests_run>
+
+ print $parser->tests_run;
+
+Returns the number of tests which actually were run. Hopefully this will
+match the number of C<< $parser->tests_planned >>.
+
+=head3 C<skip_all>
+
+Returns a true value (actually the reason for skipping) if all tests
+were skipped.
+
+=head3 C<start_time>
+
+Returns the wall-clock time when the Parser was created.
+
+=head3 C<end_time>
+
+Returns the wall-clock time when the end of TAP input was seen.
+
+=head3 C<start_times>
+
+Returns the CPU times (like L<perlfunc/times> when the Parser was created.
+
+=head3 C<end_times>
+
+Returns the CPU times (like L<perlfunc/times> when the end of TAP
+input was seen.
+
+=head3 C<has_problems>
+
+ if ( $parser->has_problems ) {
+ ...
+ }
+
+This is a 'catch-all' method which returns true if any tests have currently
+failed, any TODO tests unexpectedly succeeded, or any parse errors occurred.
+
+=cut
+
+sub has_problems {
+ my $self = shift;
+ return
+ $self->failed
+ || $self->parse_errors
+ || ( !$self->ignore_exit && ( $self->wait || $self->exit ) );
+}
+
+=head3 C<version>
+
+ $parser->version;
+
+Once the parser is done, this will return the version number for the
+parsed TAP. Version numbers were introduced with TAP version 13 so if no
+version number is found version 12 is assumed.
+
+=head3 C<exit>
+
+ $parser->exit;
+
+Once the parser is done, this will return the exit status. If the parser ran
+an executable, it returns the exit status of the executable.
+
+=head3 C<wait>
+
+ $parser->wait;
+
+Once the parser is done, this will return the wait status. If the parser ran
+an executable, it returns the wait status of the executable. Otherwise, this
+merely returns the C<exit> status.
+
+=head2 C<ignore_exit>
+
+ $parser->ignore_exit(1);
+
+Tell the parser to ignore the exit status from the test when determining
+whether the test passed. Normally tests with non-zero exit status are
+considered to have failed even if all individual tests passed. In cases
+where it is not possible to control the exit value of the test script
+use this option to ignore it.
+
+=cut
+
+sub ignore_exit { shift->pragma( 'ignore_exit', @_ ) }
+
+=head3 C<parse_errors>
+
+ my @errors = $parser->parse_errors; # the parser errors
+ my $errors = $parser->parse_errors; # the number of parser_errors
+
+Fortunately, all TAP output is perfect. In the event that it is not, this
+method will return parser errors. Note that a junk line which the parser does
+not recognize is C<not> an error. This allows this parser to handle future
+versions of TAP. The following are all TAP errors reported by the parser:
+
+=over 4
+
+=item * Misplaced plan
+
+The plan (for example, '1..5'), must only come at the beginning or end of the
+TAP output.
+
+=item * No plan
+
+Gotta have a plan!
+
+=item * More than one plan
+
+ 1..3
+ ok 1 - input file opened
+ not ok 2 - first line of the input valid # todo some data
+ ok 3 read the rest of the file
+ 1..3
+
+Right. Very funny. Don't do that.
+
+=item * Test numbers out of sequence
+
+ 1..3
+ ok 1 - input file opened
+ not ok 2 - first line of the input valid # todo some data
+ ok 2 read the rest of the file
+
+That last test line above should have the number '3' instead of '2'.
+
+Note that it's perfectly acceptable for some lines to have test numbers and
+others to not have them. However, when a test number is found, it must be in
+sequence. The following is also an error:
+
+ 1..3
+ ok 1 - input file opened
+ not ok - first line of the input valid # todo some data
+ ok 2 read the rest of the file
+
+But this is not:
+
+ 1..3
+ ok - input file opened
+ not ok - first line of the input valid # todo some data
+ ok 3 read the rest of the file
+
+=back
+
+=cut
+
+sub parse_errors { @{ shift->{parse_errors} } }
+
+sub _add_error {
+ my ( $self, $error ) = @_;
+ push @{ $self->{parse_errors} } => $error;
+ return $self;
+}
+
+sub _make_state_table {
+ my $self = shift;
+ my %states;
+ my %planned_todo = ();
+
+ # These transitions are defaults for all states
+ my %state_globals = (
+ comment => {},
+ bailout => {},
+ yaml => {},
+ version => {
+ act => sub {
+ $self->_add_error(
+ 'If TAP version is present it must be the first line of output'
+ );
+ },
+ },
+ unknown => {
+ act => sub {
+ my $unk = shift;
+ if ( $self->pragma('strict') ) {
+ $self->_add_error(
+ 'Unknown TAP token: "' . $unk->raw . '"' );
+ }
+ },
+ },
+ pragma => {
+ act => sub {
+ my ($pragma) = @_;
+ for my $pr ( $pragma->pragmas ) {
+ if ( $pr =~ /^ ([-+])(\w+) $/x ) {
+ $self->pragma( $2, $1 eq '+' );
+ }
+ }
+ },
+ },
+ );
+
+ # Provides default elements for transitions
+ my %state_defaults = (
+ plan => {
+ act => sub {
+ my ($plan) = @_;
+ $self->tests_planned( $plan->tests_planned );
+ $self->plan( $plan->plan );
+ if ( $plan->has_skip ) {
+ $self->skip_all( $plan->explanation
+ || '(no reason given)' );
+ }
+
+ $planned_todo{$_}++ for @{ $plan->todo_list };
+ },
+ },
+ test => {
+ act => sub {
+ my ($test) = @_;
+
+ my ( $number, $tests_run )
+ = ( $test->number, ++$self->{tests_run} );
+
+ # Fake TODO state
+ if ( defined $number && delete $planned_todo{$number} ) {
+ $test->set_directive('TODO');
+ }
+
+ my $has_todo = $test->has_todo;
+
+ $self->in_todo($has_todo);
+ if ( defined( my $tests_planned = $self->tests_planned ) ) {
+ if ( $tests_run > $tests_planned ) {
+ $test->is_unplanned(1);
+ }
+ }
+
+ if ( defined $number ) {
+ if ( $number != $tests_run ) {
+ my $count = $tests_run;
+ $self->_add_error( "Tests out of sequence. Found "
+ . "($number) but expected ($count)" );
+ }
+ }
+ else {
+ $test->_number( $number = $tests_run );
+ }
+
+ push @{ $self->{todo} } => $number if $has_todo;
+ push @{ $self->{todo_passed} } => $number
+ if $test->todo_passed;
+ push @{ $self->{skipped} } => $number
+ if $test->has_skip;
+
+ push @{ $self->{ $test->is_ok ? 'passed' : 'failed' } } =>
+ $number;
+ push @{
+ $self->{
+ $test->is_actual_ok
+ ? 'actual_passed'
+ : 'actual_failed'
+ }
+ } => $number;
+ },
+ },
+ yaml => { act => sub { }, },
+ );
+
+ # Each state contains a hash the keys of which match a token type. For
+ # each token
+ # type there may be:
+ # act A coderef to run
+ # goto The new state to move to. Stay in this state if
+ # missing
+ # continue Goto the new state and run the new state for the
+ # current token
+ %states = (
+ INIT => {
+ version => {
+ act => sub {
+ my ($version) = @_;
+ my $ver_num = $version->version;
+ if ( $ver_num <= $DEFAULT_TAP_VERSION ) {
+ my $ver_min = $DEFAULT_TAP_VERSION + 1;
+ $self->_add_error(
+ "Explicit TAP version must be at least "
+ . "$ver_min. Got version $ver_num" );
+ $ver_num = $DEFAULT_TAP_VERSION;
+ }
+ if ( $ver_num > $MAX_TAP_VERSION ) {
+ $self->_add_error(
+ "TAP specified version $ver_num but "
+ . "we don't know about versions later "
+ . "than $MAX_TAP_VERSION" );
+ $ver_num = $MAX_TAP_VERSION;
+ }
+ $self->version($ver_num);
+ $self->_grammar->set_version($ver_num);
+ },
+ goto => 'PLAN'
+ },
+ plan => { goto => 'PLANNED' },
+ test => { goto => 'UNPLANNED' },
+ },
+ PLAN => {
+ plan => { goto => 'PLANNED' },
+ test => { goto => 'UNPLANNED' },
+ },
+ PLANNED => {
+ test => { goto => 'PLANNED_AFTER_TEST' },
+ plan => {
+ act => sub {
+ my ($version) = @_;
+ $self->_add_error(
+ 'More than one plan found in TAP output');
+ },
+ },
+ },
+ PLANNED_AFTER_TEST => {
+ test => { goto => 'PLANNED_AFTER_TEST' },
+ plan => { act => sub { }, continue => 'PLANNED' },
+ yaml => { goto => 'PLANNED' },
+ },
+ GOT_PLAN => {
+ test => {
+ act => sub {
+ my ($plan) = @_;
+ my $line = $self->plan;
+ $self->_add_error(
+ "Plan ($line) must be at the beginning "
+ . "or end of the TAP output" );
+ $self->is_good_plan(0);
+ },
+ continue => 'PLANNED'
+ },
+ plan => { continue => 'PLANNED' },
+ },
+ UNPLANNED => {
+ test => { goto => 'UNPLANNED_AFTER_TEST' },
+ plan => { goto => 'GOT_PLAN' },
+ },
+ UNPLANNED_AFTER_TEST => {
+ test => { act => sub { }, continue => 'UNPLANNED' },
+ plan => { act => sub { }, continue => 'UNPLANNED' },
+ yaml => { goto => 'UNPLANNED' },
+ },
+ );
+
+ # Apply globals and defaults to state table
+ for my $name ( keys %states ) {
+
+ # Merge with globals
+ my $st = { %state_globals, %{ $states{$name} } };
+
+ # Add defaults
+ for my $next ( sort keys %{$st} ) {
+ if ( my $default = $state_defaults{$next} ) {
+ for my $def ( sort keys %{$default} ) {
+ $st->{$next}->{$def} ||= $default->{$def};
+ }
+ }
+ }
+
+ # Stuff back in table
+ $states{$name} = $st;
+ }
+
+ return \%states;
+}
+
+=head3 C<get_select_handles>
+
+Get an a list of file handles which can be passed to C<select> to
+determine the readiness of this parser.
+
+=cut
+
+sub get_select_handles { shift->_iterator->get_select_handles }
+
+sub _grammar {
+ my $self = shift;
+ return $self->{_grammar} = shift if @_;
+
+ return $self->{_grammar} ||= $self->make_grammar(
+ { iterator => $self->_iterator,
+ parser => $self,
+ version => $self->version
+ }
+ );
+}
+
+sub _iter {
+ my $self = shift;
+ my $iterator = $self->_iterator;
+ my $grammar = $self->_grammar;
+ my $spool = $self->_spool;
+ my $state = 'INIT';
+ my $state_table = $self->_make_state_table;
+
+ $self->start_time( $self->get_time ) unless $self->{start_time};
+ $self->start_times( $self->get_times ) unless $self->{start_times};
+
+ # Make next_state closure
+ my $next_state = sub {
+ my $token = shift;
+ my $type = $token->type;
+ TRANS: {
+ my $state_spec = $state_table->{$state}
+ or die "Illegal state: $state";
+
+ if ( my $next = $state_spec->{$type} ) {
+ if ( my $act = $next->{act} ) {
+ $act->($token);
+ }
+ if ( my $cont = $next->{continue} ) {
+ $state = $cont;
+ redo TRANS;
+ }
+ elsif ( my $goto = $next->{goto} ) {
+ $state = $goto;
+ }
+ }
+ else {
+ confess("Unhandled token type: $type\n");
+ }
+ }
+ return $token;
+ };
+
+ # Handle end of stream - which means either pop a block or finish
+ my $end_handler = sub {
+ $self->exit( $iterator->exit );
+ $self->wait( $iterator->wait );
+ $self->_finish;
+ return;
+ };
+
+ # Finally make the closure that we return. For performance reasons
+ # there are two versions of the returned function: one that handles
+ # callbacks and one that does not.
+ if ( $self->_has_callbacks ) {
+ return sub {
+ my $result = eval { $grammar->tokenize };
+ $self->_add_error($@) if $@;
+
+ if ( defined $result ) {
+ $result = $next_state->($result);
+
+ if ( my $code = $self->_callback_for( $result->type ) ) {
+ $_->($result) for @{$code};
+ }
+ else {
+ $self->_make_callback( 'ELSE', $result );
+ }
+
+ $self->_make_callback( 'ALL', $result );
+
+ # Echo TAP to spool file
+ print {$spool} $result->raw, "\n" if $spool;
+ }
+ else {
+ $result = $end_handler->();
+ $self->_make_callback( 'EOF', $self )
+ unless defined $result;
+ }
+
+ return $result;
+ };
+ } # _has_callbacks
+ else {
+ return sub {
+ my $result = eval { $grammar->tokenize };
+ $self->_add_error($@) if $@;
+
+ if ( defined $result ) {
+ $result = $next_state->($result);
+
+ # Echo TAP to spool file
+ print {$spool} $result->raw, "\n" if $spool;
+ }
+ else {
+ $result = $end_handler->();
+ }
+
+ return $result;
+ };
+ } # no callbacks
+}
+
+sub _finish {
+ my $self = shift;
+
+ $self->end_time( $self->get_time );
+ $self->end_times( $self->get_times );
+
+ # Avoid leaks
+ $self->_iterator(undef);
+ $self->_grammar(undef);
+
+ # If we just delete the iter we won't get a fault if it's recreated.
+ # Instead we set it to a sub that returns an infinite
+ # stream of undef. This segfaults on 5.5.4, presumably because
+ # we're still executing the closure that gets replaced and it hasn't
+ # been protected with a refcount.
+ $self->{_iter} = sub {return}
+ if $] >= 5.006;
+
+ # sanity checks
+ if ( !$self->plan ) {
+ $self->_add_error('No plan found in TAP output');
+ }
+ else {
+ $self->is_good_plan(1) unless defined $self->is_good_plan;
+ }
+ if ( $self->tests_run != ( $self->tests_planned || 0 ) ) {
+ $self->is_good_plan(0);
+ if ( defined( my $planned = $self->tests_planned ) ) {
+ my $ran = $self->tests_run;
+ $self->_add_error(
+ "Bad plan. You planned $planned tests but ran $ran.");
+ }
+ }
+ if ( $self->tests_run != ( $self->passed + $self->failed ) ) {
+
+ # this should never happen
+ my $actual = $self->tests_run;
+ my $passed = $self->passed;
+ my $failed = $self->failed;
+ $self->_croak( "Panic: planned test count ($actual) did not equal "
+ . "sum of passed ($passed) and failed ($failed) tests!" );
+ }
+
+ $self->is_good_plan(0) unless defined $self->is_good_plan;
+
+ unless ( $self->parse_errors ) {
+ # Optimise storage where possible
+ if ( $self->tests_run == @{$self->{passed}} ) {
+ $self->{passed} = $self->tests_run;
+ }
+ if ( $self->tests_run == @{$self->{actual_passed}} ) {
+ $self->{actual_passed} = $self->tests_run;
+ }
+ }
+
+ return $self;
+}
+
+=head3 C<delete_spool>
+
+Delete and return the spool.
+
+ my $fh = $parser->delete_spool;
+
+=cut
+
+sub delete_spool {
+ my $self = shift;
+
+ return delete $self->{_spool};
+}
+
+##############################################################################
+
+=head1 CALLBACKS
+
+As mentioned earlier, a "callback" key may be added to the
+C<TAP::Parser> constructor. If present, each callback corresponding to a
+given result type will be called with the result as the argument if the
+C<run> method is used. The callback is expected to be a subroutine
+reference (or anonymous subroutine) which is invoked with the parser
+result as its argument.
+
+ my %callbacks = (
+ test => \&test_callback,
+ plan => \&plan_callback,
+ comment => \&comment_callback,
+ bailout => \&bailout_callback,
+ unknown => \&unknown_callback,
+ );
+
+ my $aggregator = TAP::Parser::Aggregator->new;
+ for my $file ( @test_files ) {
+ my $parser = TAP::Parser->new(
+ {
+ source => $file,
+ callbacks => \%callbacks,
+ }
+ );
+ $parser->run;
+ $aggregator->add( $file, $parser );
+ }
+
+Callbacks may also be added like this:
+
+ $parser->callback( test => \&test_callback );
+ $parser->callback( plan => \&plan_callback );
+
+The following keys allowed for callbacks. These keys are case-sensitive.
+
+=over 4
+
+=item * C<test>
+
+Invoked if C<< $result->is_test >> returns true.
+
+=item * C<version>
+
+Invoked if C<< $result->is_version >> returns true.
+
+=item * C<plan>
+
+Invoked if C<< $result->is_plan >> returns true.
+
+=item * C<comment>
+
+Invoked if C<< $result->is_comment >> returns true.
+
+=item * C<bailout>
+
+Invoked if C<< $result->is_unknown >> returns true.
+
+=item * C<yaml>
+
+Invoked if C<< $result->is_yaml >> returns true.
+
+=item * C<unknown>
+
+Invoked if C<< $result->is_unknown >> returns true.
+
+=item * C<ELSE>
+
+If a result does not have a callback defined for it, this callback will
+be invoked. Thus, if all of the previous result types are specified as
+callbacks, this callback will I<never> be invoked.
+
+=item * C<ALL>
+
+This callback will always be invoked and this will happen for each
+result after one of the above callbacks is invoked. For example, if
+L<Term::ANSIColor> is loaded, you could use the following to color your
+test output:
+
+ my %callbacks = (
+ test => sub {
+ my $test = shift;
+ if ( $test->is_ok && not $test->directive ) {
+ # normal passing test
+ print color 'green';
+ }
+ elsif ( !$test->is_ok ) { # even if it's TODO
+ print color 'white on_red';
+ }
+ elsif ( $test->has_skip ) {
+ print color 'white on_blue';
+
+ }
+ elsif ( $test->has_todo ) {
+ print color 'white';
+ }
+ },
+ ELSE => sub {
+ # plan, comment, and so on (anything which isn't a test line)
+ print color 'black on_white';
+ },
+ ALL => sub {
+ # now print them
+ print shift->as_string;
+ print color 'reset';
+ print "\n";
+ },
+ );
+
+=item * C<EOF>
+
+Invoked when there are no more lines to be parsed. Since there is no
+accompanying L<TAP::Parser::Result> object the C<TAP::Parser> object is
+passed instead.
+
+=back
+
+=head1 TAP GRAMMAR
+
+If you're looking for an EBNF grammar, see L<TAP::Parser::Grammar>.
+
+=head1 BACKWARDS COMPATIBILITY
+
+The Perl-QA list attempted to ensure backwards compatibility with
+L<Test::Harness>. However, there are some minor differences.
+
+=head2 Differences
+
+=over 4
+
+=item * TODO plans
+
+A little-known feature of L<Test::Harness> is that it supported TODO
+lists in the plan:
+
+ 1..2 todo 2
+ ok 1 - We have liftoff
+ not ok 2 - Anti-gravity device activated
+
+Under L<Test::Harness>, test number 2 would I<pass> because it was
+listed as a TODO test on the plan line. However, we are not aware of
+anyone actually using this feature and hard-coding test numbers is
+discouraged because it's very easy to add a test and break the test
+number sequence. This makes test suites very fragile. Instead, the
+following should be used:
+
+ 1..2
+ ok 1 - We have liftoff
+ not ok 2 - Anti-gravity device activated # TODO
+
+=item * 'Missing' tests
+
+It rarely happens, but sometimes a harness might encounter
+'missing tests:
+
+ ok 1
+ ok 2
+ ok 15
+ ok 16
+ ok 17
+
+L<Test::Harness> would report tests 3-14 as having failed. For the
+C<TAP::Parser>, these tests are not considered failed because they've
+never run. They're reported as parse failures (tests out of sequence).
+
+=back
+
+=head1 SUBCLASSING
+
+If you find you need to provide custom functionality (as you would have using
+L<Test::Harness::Straps>), you're in luck: C<TAP::Parser> and friends are
+designed to be easily plugged-into and/or subclassed.
+
+Before you start, it's important to know a few things:
+
+=over 2
+
+=item 1
+
+All C<TAP::*> objects inherit from L<TAP::Object>.
+
+=item 2
+
+Many C<TAP::*> classes have a I<SUBCLASSING> section to guide you.
+
+=item 3
+
+Note that C<TAP::Parser> is designed to be the central "maker" - ie: it is
+responsible for creating most new objects in the C<TAP::Parser::*> namespace.
+
+This makes it possible for you to have a single point of configuring what
+subclasses should be used, which means that in many cases you'll find
+you only need to sub-class one of the parser's components.
+
+The exception to this rule are I<SourceHandlers> & I<Iterators>, but those are
+both created with customizable I<IteratorFactory>.
+
+=item 4
+
+By subclassing, you may end up overriding undocumented methods. That's not
+a bad thing per se, but be forewarned that undocumented methods may change
+without warning from one release to the next - we cannot guarantee backwards
+compatibility. If any I<documented> method needs changing, it will be
+deprecated first, and changed in a later release.
+
+=back
+
+=head2 Parser Components
+
+=head3 Sources
+
+A TAP parser consumes input from a single I<raw source> of TAP, which could come
+from anywhere (a file, an executable, a database, an IO handle, a URI, etc..).
+The source gets bundled up in a L<TAP::Parser::Source> object which gathers some
+meta data about it. The parser then uses a L<TAP::Parser::IteratorFactory> to
+determine which L<TAP::Parser::SourceHandler> to use to turn the raw source
+into a stream of TAP by way of L</Iterators>.
+
+If you simply want C<TAP::Parser> to handle a new source of TAP you probably
+don't need to subclass C<TAP::Parser> itself. Rather, you'll need to create a
+new L<TAP::Parser::SourceHandler> class, and just plug it into the parser using
+the I<sources> param to L</new>. Before you start writing one, read through
+L<TAP::Parser::IteratorFactory> to get a feel for how the system works first.
+
+If you find you really need to use your own iterator factory you can still do
+so without sub-classing C<TAP::Parser> by setting L</iterator_factory_class>.
+
+If you just need to customize the objects on creation, subclass L<TAP::Parser>
+and override L</make_iterator_factory>.
+
+Note that C<make_source> & C<make_perl_source> have been I<DEPRECATED> and
+are now removed.
+
+=head3 Iterators
+
+A TAP parser uses I<iterators> to loop through the I<stream> of TAP read in
+from the I<source> it was given. There are a few types of Iterators available
+by default, all sub-classes of L<TAP::Parser::Iterator>. Choosing which
+iterator to use is the responsibility of the I<iterator factory>, though it
+simply delegates to the I<Source Handler> it uses.
+
+If you're writing your own L<TAP::Parser::SourceHandler>, you may need to
+create your own iterators too. If so you'll need to subclass
+L<TAP::Parser::Iterator>.
+
+Note that L</make_iterator> has been I<DEPRECATED> and is now removed.
+
+=head3 Results
+
+A TAP parser creates L<TAP::Parser::Result>s as it iterates through the
+input I<stream>. There are quite a few result types available; choosing
+which class to use is the responsibility of the I<result factory>.
+
+To create your own result types you have two options:
+
+=over 2
+
+=item option 1
+
+Subclass L<TAP::Parser::Result> and register your new result type/class with
+the default L<TAP::Parser::ResultFactory>.
+
+=item option 2
+
+Subclass L<TAP::Parser::ResultFactory> itself and implement your own
+L<TAP::Parser::Result> creation logic. Then you'll need to customize the
+class used by your parser by setting the C<result_factory_class> parameter.
+See L</new> for more details.
+
+=back
+
+If you need to customize the objects on creation, subclass L<TAP::Parser> and
+override L</make_result>.
+
+=head3 Grammar
+
+L<TAP::Parser::Grammar> is the heart of the parser. It tokenizes the TAP
+input I<stream> and produces results. If you need to customize its behaviour
+you should probably familiarize yourself with the source first. Enough
+lecturing.
+
+Subclass L<TAP::Parser::Grammar> and customize your parser by setting the
+C<grammar_class> parameter. See L</new> for more details.
+
+If you need to customize the objects on creation, subclass L<TAP::Parser> and
+override L</make_grammar>
+
+=head1 ACKNOWLEDGMENTS
+
+All of the following have helped. Bug reports, patches, (im)moral
+support, or just words of encouragement have all been forthcoming.
+
+=over 4
+
+=item * Michael Schwern
+
+=item * Andy Lester
+
+=item * chromatic
+
+=item * GEOFFR
+
+=item * Shlomi Fish
+
+=item * Torsten Schoenfeld
+
+=item * Jerry Gay
+
+=item * Aristotle
+
+=item * Adam Kennedy
+
+=item * Yves Orton
+
+=item * Adrian Howard
+
+=item * Sean & Lil
+
+=item * Andreas J. Koenig
+
+=item * Florian Ragwitz
+
+=item * Corion
+
+=item * Mark Stosberg
+
+=item * Matt Kraai
+
+=item * David Wheeler
+
+=item * Alex Vandiver
+
+=item * Cosimo Streppone
+
+=item * Ville Skyttä
+
+=back
+
+=head1 AUTHORS
+
+Curtis "Ovid" Poe <ovid@cpan.org>
+
+Andy Armstong <andy@hexten.net>
+
+Eric Wilhelm @ <ewilhelm at cpan dot org>
+
+Michael Peters <mpeters at plusthree dot com>
+
+Leif Eriksen <leif dot eriksen at bigpond dot com>
+
+Steve Purkis <spurkis@cpan.org>
+
+Nicholas Clark <nick@ccl4.org>
+
+Lee Johnson <notfadeaway at btinternet dot com>
+
+Philippe Bruhat <book@cpan.org>
+
+=head1 BUGS
+
+Please report any bugs or feature requests to
+C<bug-test-harness@rt.cpan.org>, or through the web interface at
+L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Test-Harness>.
+We will be notified, and then you'll automatically be notified of
+progress on your bug as we make changes.
+
+Obviously, bugs which include patches are best. If you prefer, you can
+patch against bleed by via anonymous checkout of the latest version:
+
+ git clone git://github.com/Perl-Toolchain-Gang/Test-Harness.git
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2006-2008 Curtis "Ovid" Poe, all rights reserved.
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=cut
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Aggregator.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Aggregator.pm
new file mode 100755
index 00000000000..dac0f9a43ed
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Aggregator.pm
@@ -0,0 +1,414 @@
+package TAP::Parser::Aggregator;
+
+use strict;
+use warnings;
+use Benchmark;
+
+use base 'TAP::Object';
+
+=head1 NAME
+
+TAP::Parser::Aggregator - Aggregate TAP::Parser results
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Aggregator;
+
+ my $aggregate = TAP::Parser::Aggregator->new;
+ $aggregate->add( 't/00-load.t', $load_parser );
+ $aggregate->add( 't/10-lex.t', $lex_parser );
+
+ my $summary = <<'END_SUMMARY';
+ Passed: %s
+ Failed: %s
+ Unexpectedly succeeded: %s
+ END_SUMMARY
+ printf $summary,
+ scalar $aggregate->passed,
+ scalar $aggregate->failed,
+ scalar $aggregate->todo_passed;
+
+=head1 DESCRIPTION
+
+C<TAP::Parser::Aggregator> collects parser objects and allows
+reporting/querying their aggregate results.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+ my $aggregate = TAP::Parser::Aggregator->new;
+
+Returns a new C<TAP::Parser::Aggregator> object.
+
+=cut
+
+# new() implementation supplied by TAP::Object
+
+my %SUMMARY_METHOD_FOR;
+
+BEGIN { # install summary methods
+ %SUMMARY_METHOD_FOR = map { $_ => $_ } qw(
+ failed
+ parse_errors
+ passed
+ skipped
+ todo
+ todo_passed
+ total
+ wait
+ exit
+ );
+ $SUMMARY_METHOD_FOR{total} = 'tests_run';
+ $SUMMARY_METHOD_FOR{planned} = 'tests_planned';
+
+ for my $method ( keys %SUMMARY_METHOD_FOR ) {
+ next if 'total' eq $method;
+ no strict 'refs';
+ *$method = sub {
+ my $self = shift;
+ return wantarray
+ ? @{ $self->{"descriptions_for_$method"} }
+ : $self->{$method};
+ };
+ }
+} # end install summary methods
+
+sub _initialize {
+ my ($self) = @_;
+ $self->{parser_for} = {};
+ $self->{parse_order} = [];
+ for my $summary ( keys %SUMMARY_METHOD_FOR ) {
+ $self->{$summary} = 0;
+ next if 'total' eq $summary;
+ $self->{"descriptions_for_$summary"} = [];
+ }
+ return $self;
+}
+
+##############################################################################
+
+=head2 Instance Methods
+
+=head3 C<add>
+
+ $aggregate->add( $description => $parser );
+
+The C<$description> is usually a test file name (but only by
+convention.) It is used as a unique identifier (see e.g.
+L<"parsers">.) Reusing a description is a fatal error.
+
+The C<$parser> is a L<TAP::Parser|TAP::Parser> object.
+
+=cut
+
+sub add {
+ my ( $self, $description, $parser ) = @_;
+ if ( exists $self->{parser_for}{$description} ) {
+ $self->_croak( "You already have a parser for ($description)."
+ . " Perhaps you have run the same test twice." );
+ }
+ push @{ $self->{parse_order} } => $description;
+ $self->{parser_for}{$description} = $parser;
+
+ while ( my ( $summary, $method ) = each %SUMMARY_METHOD_FOR ) {
+
+ # Slightly nasty. Instead we should maybe have 'cooked' accessors
+ # for results that may be masked by the parser.
+ next
+ if ( $method eq 'exit' || $method eq 'wait' )
+ && $parser->ignore_exit;
+
+ if ( my $count = $parser->$method() ) {
+ $self->{$summary} += $count;
+ push @{ $self->{"descriptions_for_$summary"} } => $description;
+ }
+ }
+
+ return $self;
+}
+
+##############################################################################
+
+=head3 C<parsers>
+
+ my $count = $aggregate->parsers;
+ my @parsers = $aggregate->parsers;
+ my @parsers = $aggregate->parsers(@descriptions);
+
+In scalar context without arguments, this method returns the number of parsers
+aggregated. In list context without arguments, returns the parsers in the
+order they were added.
+
+If C<@descriptions> is given, these correspond to the keys used in each
+call to the add() method. Returns an array of the requested parsers (in
+the requested order) in list context or an array reference in scalar
+context.
+
+Requesting an unknown identifier is a fatal error.
+
+=cut
+
+sub parsers {
+ my $self = shift;
+ return $self->_get_parsers(@_) if @_;
+ my $descriptions = $self->{parse_order};
+ my @parsers = @{ $self->{parser_for} }{@$descriptions};
+
+ # Note: Because of the way context works, we must assign the parsers to
+ # the @parsers array or else this method does not work as documented.
+ return @parsers;
+}
+
+sub _get_parsers {
+ my ( $self, @descriptions ) = @_;
+ my @parsers;
+ for my $description (@descriptions) {
+ $self->_croak("A parser for ($description) could not be found")
+ unless exists $self->{parser_for}{$description};
+ push @parsers => $self->{parser_for}{$description};
+ }
+ return wantarray ? @parsers : \@parsers;
+}
+
+=head3 C<descriptions>
+
+Get an array of descriptions in the order in which they were added to
+the aggregator.
+
+=cut
+
+sub descriptions { @{ shift->{parse_order} || [] } }
+
+=head3 C<start>
+
+Call C<start> immediately before adding any results to the aggregator.
+Among other times it records the start time for the test run.
+
+=cut
+
+sub start {
+ my $self = shift;
+ $self->{start_time} = Benchmark->new;
+}
+
+=head3 C<stop>
+
+Call C<stop> immediately after adding all test results to the aggregator.
+
+=cut
+
+sub stop {
+ my $self = shift;
+ $self->{end_time} = Benchmark->new;
+}
+
+=head3 C<elapsed>
+
+Elapsed returns a L<Benchmark> object that represents the running time
+of the aggregated tests. In order for C<elapsed> to be valid you must
+call C<start> before running the tests and C<stop> immediately
+afterwards.
+
+=cut
+
+sub elapsed {
+ my $self = shift;
+
+ require Carp;
+ Carp::croak
+ q{Can't call elapsed without first calling start and then stop}
+ unless defined $self->{start_time} && defined $self->{end_time};
+ return timediff( $self->{end_time}, $self->{start_time} );
+}
+
+=head3 C<elapsed_timestr>
+
+Returns a formatted string representing the runtime returned by
+C<elapsed()>. This lets the caller not worry about Benchmark.
+
+=cut
+
+sub elapsed_timestr {
+ my $self = shift;
+
+ my $elapsed = $self->elapsed;
+
+ return timestr($elapsed);
+}
+
+=head3 C<all_passed>
+
+Return true if all the tests passed and no parse errors were detected.
+
+=cut
+
+sub all_passed {
+ my $self = shift;
+ return
+ $self->total
+ && $self->total == $self->passed
+ && !$self->has_errors;
+}
+
+=head3 C<get_status>
+
+Get a single word describing the status of the aggregated tests.
+Depending on the outcome of the tests returns 'PASS', 'FAIL' or
+'NOTESTS'. This token is understood by L<CPAN::Reporter>.
+
+=cut
+
+sub get_status {
+ my $self = shift;
+
+ my $total = $self->total;
+ my $passed = $self->passed;
+
+ return
+ ( $self->has_errors || $total != $passed ) ? 'FAIL'
+ : $total ? 'PASS'
+ : 'NOTESTS';
+}
+
+##############################################################################
+
+=head2 Summary methods
+
+Each of the following methods will return the total number of corresponding
+tests if called in scalar context. If called in list context, returns the
+descriptions of the parsers which contain the corresponding tests (see C<add>
+for an explanation of description.
+
+=over 4
+
+=item * failed
+
+=item * parse_errors
+
+=item * passed
+
+=item * planned
+
+=item * skipped
+
+=item * todo
+
+=item * todo_passed
+
+=item * wait
+
+=item * exit
+
+=back
+
+For example, to find out how many tests unexpectedly succeeded (TODO tests
+which passed when they shouldn't):
+
+ my $count = $aggregate->todo_passed;
+ my @descriptions = $aggregate->todo_passed;
+
+Note that C<wait> and C<exit> are the totals of the wait and exit
+statuses of each of the tests. These values are totalled only to provide
+a true value if any of them are non-zero.
+
+=cut
+
+##############################################################################
+
+=head3 C<total>
+
+ my $tests_run = $aggregate->total;
+
+Returns the total number of tests run.
+
+=cut
+
+sub total { shift->{total} }
+
+##############################################################################
+
+=head3 C<has_problems>
+
+ if ( $parser->has_problems ) {
+ ...
+ }
+
+Identical to C<has_errors>, but also returns true if any TODO tests
+unexpectedly succeeded. This is more akin to "warnings".
+
+=cut
+
+sub has_problems {
+ my $self = shift;
+ return $self->todo_passed
+ || $self->has_errors;
+}
+
+##############################################################################
+
+=head3 C<has_errors>
+
+ if ( $parser->has_errors ) {
+ ...
+ }
+
+Returns true if I<any> of the parsers failed. This includes:
+
+=over 4
+
+=item * Failed tests
+
+=item * Parse errors
+
+=item * Bad exit or wait status
+
+=back
+
+=cut
+
+sub has_errors {
+ my $self = shift;
+ return
+ $self->failed
+ || $self->parse_errors
+ || $self->exit
+ || $self->wait;
+}
+
+##############################################################################
+
+=head3 C<todo_failed>
+
+ # deprecated in favor of 'todo_passed'. This method was horribly misnamed.
+
+This was a badly misnamed method. It indicates which TODO tests unexpectedly
+succeeded. Will now issue a warning and call C<todo_passed>.
+
+=cut
+
+sub todo_failed {
+ warn
+ '"todo_failed" is deprecated. Please use "todo_passed". See the docs.';
+ goto &todo_passed;
+}
+
+=head1 See Also
+
+L<TAP::Parser>
+
+L<TAP::Harness>
+
+=cut
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Grammar.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Grammar.pm
new file mode 100755
index 00000000000..0258ad32068
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Grammar.pm
@@ -0,0 +1,590 @@
+package TAP::Parser::Grammar;
+
+use strict;
+use warnings;
+
+use TAP::Parser::ResultFactory ();
+use TAP::Parser::YAMLish::Reader ();
+
+use base 'TAP::Object';
+
+=head1 NAME
+
+TAP::Parser::Grammar - A grammar for the Test Anything Protocol.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Grammar;
+ my $grammar = $self->make_grammar({
+ iterator => $tap_parser_iterator,
+ parser => $tap_parser,
+ version => 12,
+ });
+
+ my $result = $grammar->tokenize;
+
+=head1 DESCRIPTION
+
+C<TAP::Parser::Grammar> tokenizes lines from a L<TAP::Parser::Iterator> and
+constructs L<TAP::Parser::Result> subclasses to represent the tokens.
+
+Do not attempt to use this class directly. It won't make sense. It's mainly
+here to ensure that we will be able to have pluggable grammars when TAP is
+expanded at some future date (plus, this stuff was really cluttering the
+parser).
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+ my $grammar = TAP::Parser::Grammar->new({
+ iterator => $iterator,
+ parser => $parser,
+ version => $version,
+ });
+
+Returns L<TAP::Parser> grammar object that will parse the TAP stream from the
+specified iterator. Both C<iterator> and C<parser> are required arguments.
+If C<version> is not set it defaults to C<12> (see L</set_version> for more
+details).
+
+=cut
+
+# new() implementation supplied by TAP::Object
+sub _initialize {
+ my ( $self, $args ) = @_;
+ $self->{iterator} = $args->{iterator}; # TODO: accessor
+ $self->{iterator} ||= $args->{stream}; # deprecated
+ $self->{parser} = $args->{parser}; # TODO: accessor
+ $self->set_version( $args->{version} || 12 );
+ return $self;
+}
+
+my %language_for;
+
+{
+
+ # XXX the 'not' and 'ok' might be on separate lines in VMS ...
+ my $ok = qr/(?:not )?ok\b/;
+ my $num = qr/\d+/;
+
+ my %v12 = (
+ version => {
+ syntax => qr/^TAP\s+version\s+(\d+)\s*\z/i,
+ handler => sub {
+ my ( $self, $line ) = @_;
+ my $version = $1;
+ return $self->_make_version_token( $line, $version, );
+ },
+ },
+ plan => {
+ syntax => qr/^1\.\.(\d+)\s*(.*)\z/,
+ handler => sub {
+ my ( $self, $line ) = @_;
+ my ( $tests_planned, $tail ) = ( $1, $2 );
+ my $explanation = undef;
+ my $skip = '';
+
+ if ( $tail =~ /^todo((?:\s+\d+)+)/ ) {
+ my @todo = split /\s+/, _trim($1);
+ return $self->_make_plan_token(
+ $line, $tests_planned, 'TODO',
+ '', \@todo
+ );
+ }
+ elsif ( 0 == $tests_planned ) {
+ $skip = 'SKIP';
+
+ # If we can't match # SKIP the directive should be undef.
+ ($explanation) = $tail =~ /^#\s*SKIP\S*\s+(.*)/i;
+ }
+ elsif ( $tail !~ /^\s*$/ ) {
+ return $self->_make_unknown_token($line);
+ }
+
+ $explanation = '' unless defined $explanation;
+
+ return $self->_make_plan_token(
+ $line, $tests_planned, $skip,
+ $explanation, []
+ );
+
+ },
+ },
+
+ # An optimization to handle the most common test lines without
+ # directives.
+ simple_test => {
+ syntax => qr/^($ok) \ ($num) (?:\ ([^#]+))? \z/x,
+ handler => sub {
+ my ( $self, $line ) = @_;
+ my ( $ok, $num, $desc ) = ( $1, $2, $3 );
+
+ return $self->_make_test_token(
+ $line, $ok, $num,
+ $desc
+ );
+ },
+ },
+ test => {
+ syntax => qr/^($ok) \s* ($num)? \s* (.*) \z/x,
+ handler => sub {
+ my ( $self, $line ) = @_;
+ my ( $ok, $num, $desc ) = ( $1, $2, $3 );
+ my ( $dir, $explanation ) = ( '', '' );
+ if ($desc =~ m/^ ( [^\\\#]* (?: \\. [^\\\#]* )* )
+ \# \s* (SKIP|TODO) \b \s* (.*) $/ix
+ )
+ {
+ ( $desc, $dir, $explanation ) = ( $1, $2, $3 );
+ }
+ return $self->_make_test_token(
+ $line, $ok, $num, $desc,
+ $dir, $explanation
+ );
+ },
+ },
+ comment => {
+ syntax => qr/^#(.*)/,
+ handler => sub {
+ my ( $self, $line ) = @_;
+ my $comment = $1;
+ return $self->_make_comment_token( $line, $comment );
+ },
+ },
+ bailout => {
+ syntax => qr/^\s*Bail out!\s*(.*)/,
+ handler => sub {
+ my ( $self, $line ) = @_;
+ my $explanation = $1;
+ return $self->_make_bailout_token(
+ $line,
+ $explanation
+ );
+ },
+ },
+ );
+
+ my %v13 = (
+ %v12,
+ plan => {
+ syntax => qr/^1\.\.(\d+)\s*(?:\s*#\s*SKIP\b(.*))?\z/i,
+ handler => sub {
+ my ( $self, $line ) = @_;
+ my ( $tests_planned, $explanation ) = ( $1, $2 );
+ my $skip
+ = ( 0 == $tests_planned || defined $explanation )
+ ? 'SKIP'
+ : '';
+ $explanation = '' unless defined $explanation;
+ return $self->_make_plan_token(
+ $line, $tests_planned, $skip,
+ $explanation, []
+ );
+ },
+ },
+ yaml => {
+ syntax => qr/^ (\s+) (---.*) $/x,
+ handler => sub {
+ my ( $self, $line ) = @_;
+ my ( $pad, $marker ) = ( $1, $2 );
+ return $self->_make_yaml_token( $pad, $marker );
+ },
+ },
+ pragma => {
+ syntax =>
+ qr/^ pragma \s+ ( [-+] \w+ \s* (?: , \s* [-+] \w+ \s* )* ) $/x,
+ handler => sub {
+ my ( $self, $line ) = @_;
+ my $pragmas = $1;
+ return $self->_make_pragma_token( $line, $pragmas );
+ },
+ },
+ );
+
+ %language_for = (
+ '12' => {
+ tokens => \%v12,
+ },
+ '13' => {
+ tokens => \%v13,
+ setup => sub {
+ shift->{iterator}->handle_unicode;
+ },
+ },
+ '14' => {
+ tokens => \%v13,
+ setup => sub {
+ shift->{iterator}->handle_unicode;
+ },
+ },
+ );
+}
+
+##############################################################################
+
+=head2 Instance Methods
+
+=head3 C<set_version>
+
+ $grammar->set_version(13);
+
+Tell the grammar which TAP syntax version to support. The lowest
+supported version is 12. Although 'TAP version' isn't valid version 12
+syntax it is accepted so that higher version numbers may be parsed.
+
+=cut
+
+sub set_version {
+ my $self = shift;
+ my $version = shift;
+
+ if ( my $language = $language_for{$version} ) {
+ $self->{version} = $version;
+ $self->{tokens} = $language->{tokens};
+
+ if ( my $setup = $language->{setup} ) {
+ $self->$setup();
+ }
+
+ $self->_order_tokens;
+ }
+ else {
+ require Carp;
+ Carp::croak("Unsupported syntax version: $version");
+ }
+}
+
+# Optimization to put the most frequent tokens first.
+sub _order_tokens {
+ my $self = shift;
+
+ my %copy = %{ $self->{tokens} };
+ my @ordered_tokens = grep {defined}
+ map { delete $copy{$_} } qw( simple_test test comment plan );
+ push @ordered_tokens, values %copy;
+
+ $self->{ordered_tokens} = \@ordered_tokens;
+}
+
+##############################################################################
+
+=head3 C<tokenize>
+
+ my $token = $grammar->tokenize;
+
+This method will return a L<TAP::Parser::Result> object representing the
+current line of TAP.
+
+=cut
+
+sub tokenize {
+ my $self = shift;
+
+ my $line = $self->{iterator}->next;
+ unless ( defined $line ) {
+ delete $self->{parser}; # break circular ref
+ return;
+ }
+
+ my $token;
+
+ for my $token_data ( @{ $self->{ordered_tokens} } ) {
+ if ( $line =~ $token_data->{syntax} ) {
+ my $handler = $token_data->{handler};
+ $token = $self->$handler($line);
+ last;
+ }
+ }
+
+ $token = $self->_make_unknown_token($line) unless $token;
+
+ return $self->{parser}->make_result($token);
+}
+
+##############################################################################
+
+=head3 C<token_types>
+
+ my @types = $grammar->token_types;
+
+Returns the different types of tokens which this grammar can parse.
+
+=cut
+
+sub token_types {
+ my $self = shift;
+ return keys %{ $self->{tokens} };
+}
+
+##############################################################################
+
+=head3 C<syntax_for>
+
+ my $syntax = $grammar->syntax_for($token_type);
+
+Returns a pre-compiled regular expression which will match a chunk of TAP
+corresponding to the token type. For example (not that you should really pay
+attention to this, C<< $grammar->syntax_for('comment') >> will return
+C<< qr/^#(.*)/ >>.
+
+=cut
+
+sub syntax_for {
+ my ( $self, $type ) = @_;
+ return $self->{tokens}->{$type}->{syntax};
+}
+
+##############################################################################
+
+=head3 C<handler_for>
+
+ my $handler = $grammar->handler_for($token_type);
+
+Returns a code reference which, when passed an appropriate line of TAP,
+returns the lexed token corresponding to that line. As a result, the basic
+TAP parsing loop looks similar to the following:
+
+ my @tokens;
+ my $grammar = TAP::Grammar->new;
+ LINE: while ( defined( my $line = $parser->_next_chunk_of_tap ) ) {
+ for my $type ( $grammar->token_types ) {
+ my $syntax = $grammar->syntax_for($type);
+ if ( $line =~ $syntax ) {
+ my $handler = $grammar->handler_for($type);
+ push @tokens => $grammar->$handler($line);
+ next LINE;
+ }
+ }
+ push @tokens => $grammar->_make_unknown_token($line);
+ }
+
+=cut
+
+sub handler_for {
+ my ( $self, $type ) = @_;
+ return $self->{tokens}->{$type}->{handler};
+}
+
+sub _make_version_token {
+ my ( $self, $line, $version ) = @_;
+ return {
+ type => 'version',
+ raw => $line,
+ version => $version,
+ };
+}
+
+sub _make_plan_token {
+ my ( $self, $line, $tests_planned, $directive, $explanation, $todo ) = @_;
+
+ if ( $directive eq 'SKIP'
+ && 0 != $tests_planned
+ && $self->{version} < 13 )
+ {
+ warn
+ "Specified SKIP directive in plan but more than 0 tests ($line)\n";
+ }
+
+ return {
+ type => 'plan',
+ raw => $line,
+ tests_planned => $tests_planned,
+ directive => $directive,
+ explanation => _trim($explanation),
+ todo_list => $todo,
+ };
+}
+
+sub _make_test_token {
+ my ( $self, $line, $ok, $num, $desc, $dir, $explanation ) = @_;
+ return {
+ ok => $ok,
+
+ # forcing this to be an integer (and not a string) reduces memory
+ # consumption. RT #84939
+ test_num => ( defined $num ? 0 + $num : undef ),
+ description => _trim($desc),
+ directive => ( defined $dir ? uc $dir : '' ),
+ explanation => _trim($explanation),
+ raw => $line,
+ type => 'test',
+ };
+}
+
+sub _make_unknown_token {
+ my ( $self, $line ) = @_;
+ return {
+ raw => $line,
+ type => 'unknown',
+ };
+}
+
+sub _make_comment_token {
+ my ( $self, $line, $comment ) = @_;
+ return {
+ type => 'comment',
+ raw => $line,
+ comment => _trim($comment)
+ };
+}
+
+sub _make_bailout_token {
+ my ( $self, $line, $explanation ) = @_;
+ return {
+ type => 'bailout',
+ raw => $line,
+ bailout => _trim($explanation)
+ };
+}
+
+sub _make_yaml_token {
+ my ( $self, $pad, $marker ) = @_;
+
+ my $yaml = TAP::Parser::YAMLish::Reader->new;
+
+ my $iterator = $self->{iterator};
+
+ # Construct a reader that reads from our input stripping leading
+ # spaces from each line.
+ my $leader = length($pad);
+ my $strip = qr{ ^ (\s{$leader}) (.*) $ }x;
+ my @extra = ($marker);
+ my $reader = sub {
+ return shift @extra if @extra;
+ my $line = $iterator->next;
+ return $2 if $line =~ $strip;
+ return;
+ };
+
+ my $data = $yaml->read($reader);
+
+ # Reconstitute input. This is convoluted. Maybe we should just
+ # record it on the way in...
+ chomp( my $raw = $yaml->get_raw );
+ $raw =~ s/^/$pad/mg;
+
+ return {
+ type => 'yaml',
+ raw => $raw,
+ data => $data
+ };
+}
+
+sub _make_pragma_token {
+ my ( $self, $line, $pragmas ) = @_;
+ return {
+ type => 'pragma',
+ raw => $line,
+ pragmas => [ split /\s*,\s*/, _trim($pragmas) ],
+ };
+}
+
+sub _trim {
+ my $data = shift;
+
+ return '' unless defined $data;
+
+ $data =~ s/^\s+//;
+ $data =~ s/\s+$//;
+ return $data;
+}
+
+1;
+
+=head1 TAP GRAMMAR
+
+B<NOTE:> This grammar is slightly out of date. There's still some discussion
+about it and a new one will be provided when we have things better defined.
+
+The L<TAP::Parser> does not use a formal grammar because TAP is essentially a
+stream-based protocol. In fact, it's quite legal to have an infinite stream.
+For the same reason that we don't apply regexes to streams, we're not using a
+formal grammar here. Instead, we parse the TAP in lines.
+
+For purposes for forward compatibility, any result which does not match the
+following grammar is currently referred to as
+L<TAP::Parser::Result::Unknown>. It is I<not> a parse error.
+
+A formal grammar would look similar to the following:
+
+ (*
+ For the time being, I'm cheating on the EBNF by allowing
+ certain terms to be defined by POSIX character classes by
+ using the following syntax:
+
+ digit ::= [:digit:]
+
+ As far as I am aware, that's not valid EBNF. Sue me. I
+ didn't know how to write "char" otherwise (Unicode issues).
+ Suggestions welcome.
+ *)
+
+ tap ::= version? { comment | unknown } leading_plan lines
+ |
+ lines trailing_plan {comment}
+
+ version ::= 'TAP version ' positiveInteger {positiveInteger} "\n"
+
+ leading_plan ::= plan skip_directive? "\n"
+
+ trailing_plan ::= plan "\n"
+
+ plan ::= '1..' nonNegativeInteger
+
+ lines ::= line {line}
+
+ line ::= (comment | test | unknown | bailout ) "\n"
+
+ test ::= status positiveInteger? description? directive?
+
+ status ::= 'not '? 'ok '
+
+ description ::= (character - (digit | '#')) {character - '#'}
+
+ directive ::= todo_directive | skip_directive
+
+ todo_directive ::= hash_mark 'TODO' ' ' {character}
+
+ skip_directive ::= hash_mark 'SKIP' ' ' {character}
+
+ comment ::= hash_mark {character}
+
+ hash_mark ::= '#' {' '}
+
+ bailout ::= 'Bail out!' {character}
+
+ unknown ::= { (character - "\n") }
+
+ (* POSIX character classes and other terminals *)
+
+ digit ::= [:digit:]
+ character ::= ([:print:] - "\n")
+ positiveInteger ::= ( digit - '0' ) {digit}
+ nonNegativeInteger ::= digit {digit}
+
+=head1 SUBCLASSING
+
+Please see L<TAP::Parser/SUBCLASSING> for a subclassing overview.
+
+If you I<really> want to subclass L<TAP::Parser>'s grammar the best thing to
+do is read through the code. There's no easy way of summarizing it here.
+
+=head1 SEE ALSO
+
+L<TAP::Object>,
+L<TAP::Parser>,
+L<TAP::Parser::Iterator>,
+L<TAP::Parser::Result>,
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator.pm
new file mode 100755
index 00000000000..a1d66c6ef4a
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator.pm
@@ -0,0 +1,162 @@
+package TAP::Parser::Iterator;
+
+use strict;
+use warnings;
+
+use base 'TAP::Object';
+
+=head1 NAME
+
+TAP::Parser::Iterator - Base class for TAP source iterators
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ # to subclass:
+ use TAP::Parser::Iterator ();
+ use base 'TAP::Parser::Iterator';
+ sub _initialize {
+ # see TAP::Object...
+ }
+
+ sub next_raw { ... }
+ sub wait { ... }
+ sub exit { ... }
+
+=head1 DESCRIPTION
+
+This is a simple iterator base class that defines L<TAP::Parser>'s iterator
+API. Iterators are typically created from L<TAP::Parser::SourceHandler>s.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+Create an iterator. Provided by L<TAP::Object>.
+
+=head2 Instance Methods
+
+=head3 C<next>
+
+ while ( my $item = $iter->next ) { ... }
+
+Iterate through it, of course.
+
+=head3 C<next_raw>
+
+B<Note:> this method is abstract and should be overridden.
+
+ while ( my $item = $iter->next_raw ) { ... }
+
+Iterate raw input without applying any fixes for quirky input syntax.
+
+=cut
+
+sub next {
+ my $self = shift;
+ my $line = $self->next_raw;
+
+ # vms nit: When encountering 'not ok', vms often has the 'not' on a line
+ # by itself:
+ # not
+ # ok 1 - 'I hate VMS'
+ if ( defined($line) and $line =~ /^\s*not\s*$/ ) {
+ $line .= ( $self->next_raw || '' );
+ }
+
+ return $line;
+}
+
+sub next_raw {
+ require Carp;
+ my $msg = Carp::longmess('abstract method called directly!');
+ $_[0]->_croak($msg);
+}
+
+=head3 C<handle_unicode>
+
+If necessary switch the input stream to handle unicode. This only has
+any effect for I/O handle based streams.
+
+The default implementation does nothing.
+
+=cut
+
+sub handle_unicode { }
+
+=head3 C<get_select_handles>
+
+Return a list of filehandles that may be used upstream in a select()
+call to signal that this Iterator is ready. Iterators that are not
+handle-based should return an empty list.
+
+The default implementation does nothing.
+
+=cut
+
+sub get_select_handles {
+ return;
+}
+
+=head3 C<wait>
+
+B<Note:> this method is abstract and should be overridden.
+
+ my $wait_status = $iter->wait;
+
+Return the C<wait> status for this iterator.
+
+=head3 C<exit>
+
+B<Note:> this method is abstract and should be overridden.
+
+ my $wait_status = $iter->exit;
+
+Return the C<exit> status for this iterator.
+
+=cut
+
+sub wait {
+ require Carp;
+ my $msg = Carp::longmess('abstract method called directly!');
+ $_[0]->_croak($msg);
+}
+
+sub exit {
+ require Carp;
+ my $msg = Carp::longmess('abstract method called directly!');
+ $_[0]->_croak($msg);
+}
+
+1;
+
+=head1 SUBCLASSING
+
+Please see L<TAP::Parser/SUBCLASSING> for a subclassing overview.
+
+You must override the abstract methods as noted above.
+
+=head2 Example
+
+L<TAP::Parser::Iterator::Array> is probably the easiest example to follow.
+There's not much point repeating it here.
+
+=head1 SEE ALSO
+
+L<TAP::Object>,
+L<TAP::Parser>,
+L<TAP::Parser::Iterator::Array>,
+L<TAP::Parser::Iterator::Stream>,
+L<TAP::Parser::Iterator::Process>,
+
+=cut
+
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Array.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Array.pm
new file mode 100755
index 00000000000..ceb8198baf8
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Array.pm
@@ -0,0 +1,100 @@
+package TAP::Parser::Iterator::Array;
+
+use strict;
+use warnings;
+
+use base 'TAP::Parser::Iterator';
+
+=head1 NAME
+
+TAP::Parser::Iterator::Array - Iterator for array-based TAP sources
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Iterator::Array;
+ my @data = ('foo', 'bar', baz');
+ my $it = TAP::Parser::Iterator::Array->new(\@data);
+ my $line = $it->next;
+
+=head1 DESCRIPTION
+
+This is a simple iterator wrapper for arrays of scalar content, used by
+L<TAP::Parser>. Unless you're writing a plugin or subclassing, you probably
+won't need to use this module directly.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+Create an iterator. Takes one argument: an C<$array_ref>
+
+=head2 Instance Methods
+
+=head3 C<next>
+
+Iterate through it, of course.
+
+=head3 C<next_raw>
+
+Iterate raw input without applying any fixes for quirky input syntax.
+
+=head3 C<wait>
+
+Get the wait status for this iterator. For an array iterator this will always
+be zero.
+
+=head3 C<exit>
+
+Get the exit status for this iterator. For an array iterator this will always
+be zero.
+
+=cut
+
+# new() implementation supplied by TAP::Object
+
+sub _initialize {
+ my ( $self, $thing ) = @_;
+ chomp @$thing;
+ $self->{idx} = 0;
+ $self->{array} = $thing;
+ $self->{exit} = undef;
+ return $self;
+}
+
+sub wait { shift->exit }
+
+sub exit {
+ my $self = shift;
+ return 0 if $self->{idx} >= @{ $self->{array} };
+ return;
+}
+
+sub next_raw {
+ my $self = shift;
+ return $self->{array}->[ $self->{idx}++ ];
+}
+
+1;
+
+=head1 ATTRIBUTION
+
+Originally ripped off from L<Test::Harness>.
+
+=head1 SEE ALSO
+
+L<TAP::Object>,
+L<TAP::Parser>,
+L<TAP::Parser::Iterator>,
+
+=cut
+
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Process.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Process.pm
new file mode 100755
index 00000000000..249ecde9a57
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Process.pm
@@ -0,0 +1,381 @@
+package TAP::Parser::Iterator::Process;
+
+use strict;
+use warnings;
+
+use Config;
+use IO::Handle;
+
+use base 'TAP::Parser::Iterator';
+
+my $IS_WIN32 = ( $^O =~ /^(MS)?Win32$/ );
+
+=head1 NAME
+
+TAP::Parser::Iterator::Process - Iterator for process-based TAP sources
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Iterator::Process;
+ my %args = (
+ command => ['python', 'setup.py', 'test'],
+ merge => 1,
+ setup => sub { ... },
+ teardown => sub { ... },
+ );
+ my $it = TAP::Parser::Iterator::Process->new(\%args);
+ my $line = $it->next;
+
+=head1 DESCRIPTION
+
+This is a simple iterator wrapper for executing external processes, used by
+L<TAP::Parser>. Unless you're writing a plugin or subclassing, you probably
+won't need to use this module directly.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+Create an iterator. Expects one argument containing a hashref of the form:
+
+ command => \@command_to_execute
+ merge => $attempt_merge_stderr_and_stdout?
+ setup => $callback_to_setup_command
+ teardown => $callback_to_teardown_command
+
+Tries to uses L<IPC::Open3> & L<IO::Select> to communicate with the spawned
+process if they are available. Falls back onto C<open()>.
+
+=head2 Instance Methods
+
+=head3 C<next>
+
+Iterate through the process output, of course.
+
+=head3 C<next_raw>
+
+Iterate raw input without applying any fixes for quirky input syntax.
+
+=head3 C<wait>
+
+Get the wait status for this iterator's process.
+
+=head3 C<exit>
+
+Get the exit status for this iterator's process.
+
+=cut
+
+{
+
+ no warnings 'uninitialized';
+ # get around a catch22 in the test suite that causes failures on Win32:
+ local $SIG{__DIE__} = undef;
+ eval { require POSIX; &POSIX::WEXITSTATUS(0) };
+ if ($@) {
+ *_wait2exit = sub { $_[1] >> 8 };
+ }
+ else {
+ *_wait2exit = sub { POSIX::WEXITSTATUS( $_[1] ) }
+ }
+}
+
+sub _use_open3 {
+ my $self = shift;
+ return unless $Config{d_fork} || $IS_WIN32;
+ for my $module (qw( IPC::Open3 IO::Select )) {
+ eval "use $module";
+ return if $@;
+ }
+ return 1;
+}
+
+{
+ my $got_unicode;
+
+ sub _get_unicode {
+ return $got_unicode if defined $got_unicode;
+ eval 'use Encode qw(decode_utf8);';
+ $got_unicode = $@ ? 0 : 1;
+
+ }
+}
+
+# new() implementation supplied by TAP::Object
+
+sub _initialize {
+ my ( $self, $args ) = @_;
+
+ my @command = @{ delete $args->{command} || [] }
+ or die "Must supply a command to execute";
+
+ $self->{command} = [@command];
+
+ # Private. Used to frig with chunk size during testing.
+ my $chunk_size = delete $args->{_chunk_size} || 65536;
+
+ my $merge = delete $args->{merge};
+ my ( $pid, $err, $sel );
+
+ if ( my $setup = delete $args->{setup} ) {
+ $setup->(@command);
+ }
+
+ my $out = IO::Handle->new;
+
+ if ( $self->_use_open3 ) {
+
+ # HOTPATCH {{{
+ my $xclose = \&IPC::Open3::xclose;
+ no warnings;
+ local *IPC::Open3::xclose = sub {
+ my $fh = shift;
+ no strict 'refs';
+ return if ( fileno($fh) == fileno(STDIN) );
+ $xclose->($fh);
+ };
+
+ # }}}
+
+ if ($IS_WIN32) {
+ $err = $merge ? '' : '>&STDERR';
+ eval {
+ $pid = open3(
+ '<&STDIN', $out, $merge ? '' : $err,
+ @command
+ );
+ };
+ die "Could not execute (@command): $@" if $@;
+ if ( $] >= 5.006 ) {
+ binmode($out, ":crlf");
+ }
+ }
+ else {
+ $err = $merge ? '' : IO::Handle->new;
+ eval { $pid = open3( '<&STDIN', $out, $err, @command ); };
+ die "Could not execute (@command): $@" if $@;
+ $sel = $merge ? undef : IO::Select->new( $out, $err );
+ }
+ }
+ else {
+ $err = '';
+ my $exec = shift @command;
+ $exec = qq{"$exec"} if $exec =~ /\s/ and -x $exec;
+ my $command
+ = join( ' ', $exec, map { $_ =~ /\s/ ? qq{"$_"} : $_ } @command );
+ open( $out, "$command|" )
+ or die "Could not execute ($command): $!";
+ }
+
+ $self->{out} = $out;
+ $self->{err} = $err;
+ $self->{sel} = $sel;
+ $self->{pid} = $pid;
+ $self->{exit} = undef;
+ $self->{chunk_size} = $chunk_size;
+
+ if ( my $teardown = delete $args->{teardown} ) {
+ $self->{teardown} = sub {
+ $teardown->(@command);
+ };
+ }
+
+ return $self;
+}
+
+=head3 C<handle_unicode>
+
+Upgrade the input stream to handle UTF8.
+
+=cut
+
+sub handle_unicode {
+ my $self = shift;
+
+ if ( $self->{sel} ) {
+ if ( _get_unicode() ) {
+
+ # Make sure our iterator has been constructed and...
+ my $next = $self->{_next} ||= $self->_next;
+
+ # ...wrap it to do UTF8 casting
+ $self->{_next} = sub {
+ my $line = $next->();
+ return decode_utf8($line) if defined $line;
+ return;
+ };
+ }
+ }
+ else {
+ if ( $] >= 5.008 ) {
+ eval 'binmode($self->{out}, ":utf8")';
+ }
+ }
+
+}
+
+##############################################################################
+
+sub wait { shift->{wait} }
+sub exit { shift->{exit} }
+
+sub _next {
+ my $self = shift;
+
+ if ( my $out = $self->{out} ) {
+ if ( my $sel = $self->{sel} ) {
+ my $err = $self->{err};
+ my @buf = ();
+ my $partial = ''; # Partial line
+ my $chunk_size = $self->{chunk_size};
+ return sub {
+ return shift @buf if @buf;
+
+ READ:
+ while ( my @ready = $sel->can_read ) {
+ for my $fh (@ready) {
+ my $got = sysread $fh, my ($chunk), $chunk_size;
+
+ if ( $got == 0 ) {
+ $sel->remove($fh);
+ }
+ elsif ( $fh == $err ) {
+ print STDERR $chunk; # echo STDERR
+ }
+ else {
+ $chunk = $partial . $chunk;
+ $partial = '';
+
+ # Make sure we have a complete line
+ unless ( substr( $chunk, -1, 1 ) eq "\n" ) {
+ my $nl = rindex $chunk, "\n";
+ if ( $nl == -1 ) {
+ $partial = $chunk;
+ redo READ;
+ }
+ else {
+ $partial = substr( $chunk, $nl + 1 );
+ $chunk = substr( $chunk, 0, $nl );
+ }
+ }
+
+ push @buf, split /\n/, $chunk;
+ return shift @buf if @buf;
+ }
+ }
+ }
+
+ # Return partial last line
+ if ( length $partial ) {
+ my $last = $partial;
+ $partial = '';
+ return $last;
+ }
+
+ $self->_finish;
+ return;
+ };
+ }
+ else {
+ return sub {
+ local $/ = "\n"; # to ensure lines
+ if ( defined( my $line = <$out> ) ) {
+ chomp $line;
+ return $line;
+ }
+ $self->_finish;
+ return;
+ };
+ }
+ }
+ else {
+ return sub {
+ $self->_finish;
+ return;
+ };
+ }
+}
+
+sub next_raw {
+ my $self = shift;
+ return ( $self->{_next} ||= $self->_next )->();
+}
+
+sub _finish {
+ my $self = shift;
+
+ my $status = $?;
+
+ # Avoid circular refs
+ $self->{_next} = sub {return}
+ if $] >= 5.006;
+
+ # If we have a subprocess we need to wait for it to terminate
+ if ( defined $self->{pid} ) {
+ if ( $self->{pid} == waitpid( $self->{pid}, 0 ) ) {
+ $status = $?;
+ }
+ }
+
+ ( delete $self->{out} )->close if $self->{out};
+
+ # If we have an IO::Select we also have an error handle to close.
+ if ( $self->{sel} ) {
+ ( delete $self->{err} )->close;
+ delete $self->{sel};
+ }
+ else {
+ $status = $?;
+ }
+
+ # Sometimes we get -1 on Windows. Presumably that means status not
+ # available.
+ $status = 0 if $IS_WIN32 && $status == -1;
+
+ $self->{wait} = $status;
+ $self->{exit} = $self->_wait2exit($status);
+
+ if ( my $teardown = $self->{teardown} ) {
+ $teardown->();
+ }
+
+ return $self;
+}
+
+=head3 C<get_select_handles>
+
+Return a list of filehandles that may be used upstream in a select()
+call to signal that this Iterator is ready. Iterators that are not
+handle based should return an empty list.
+
+=cut
+
+sub get_select_handles {
+ my $self = shift;
+ return grep $_, ( $self->{out}, $self->{err} );
+}
+
+1;
+
+=head1 ATTRIBUTION
+
+Originally ripped off from L<Test::Harness>.
+
+=head1 SEE ALSO
+
+L<TAP::Object>,
+L<TAP::Parser>,
+L<TAP::Parser::Iterator>,
+
+=cut
+
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Stream.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Stream.pm
new file mode 100755
index 00000000000..abee22906f7
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Iterator/Stream.pm
@@ -0,0 +1,116 @@
+package TAP::Parser::Iterator::Stream;
+
+use strict;
+use warnings;
+
+use base 'TAP::Parser::Iterator';
+
+=head1 NAME
+
+TAP::Parser::Iterator::Stream - Iterator for filehandle-based TAP sources
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Iterator::Stream;
+ open( TEST, 'test.tap' );
+ my $it = TAP::Parser::Iterator::Stream->new(\*TEST);
+ my $line = $it->next;
+
+=head1 DESCRIPTION
+
+This is a simple iterator wrapper for reading from filehandles, used by
+L<TAP::Parser>. Unless you're writing a plugin or subclassing, you probably
+won't need to use this module directly.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+Create an iterator. Expects one argument containing a filehandle.
+
+=cut
+
+# new() implementation supplied by TAP::Object
+
+sub _initialize {
+ my ( $self, $thing ) = @_;
+ $self->{fh} = $thing;
+ return $self;
+}
+
+=head2 Instance Methods
+
+=head3 C<next>
+
+Iterate through it, of course.
+
+=head3 C<next_raw>
+
+Iterate raw input without applying any fixes for quirky input syntax.
+
+=head3 C<wait>
+
+Get the wait status for this iterator. Always returns zero.
+
+=head3 C<exit>
+
+Get the exit status for this iterator. Always returns zero.
+
+=cut
+
+sub wait { shift->exit }
+sub exit { shift->{fh} ? () : 0 }
+
+sub next_raw {
+ my $self = shift;
+ my $fh = $self->{fh};
+
+ if ( defined( my $line = <$fh> ) ) {
+ chomp $line;
+ return $line;
+ }
+ else {
+ $self->_finish;
+ return;
+ }
+}
+
+sub _finish {
+ my $self = shift;
+ close delete $self->{fh};
+}
+
+sub get_select_handles {
+ my $self = shift;
+
+ # return our handle in case it's a socket or pipe (select()-able)
+ return ( $self->{fh}, )
+ if (-S $self->{fh} || -p $self->{fh});
+
+ return;
+}
+
+1;
+
+=head1 ATTRIBUTION
+
+Originally ripped off from L<Test::Harness>.
+
+=head1 SEE ALSO
+
+L<TAP::Object>,
+L<TAP::Parser>,
+L<TAP::Parser::Iterator>,
+
+=cut
+
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/IteratorFactory.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/IteratorFactory.pm
new file mode 100755
index 00000000000..4353f0aa966
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/IteratorFactory.pm
@@ -0,0 +1,339 @@
+package TAP::Parser::IteratorFactory;
+
+use strict;
+use warnings;
+
+use Carp qw( confess );
+use File::Basename qw( fileparse );
+
+use base 'TAP::Object';
+
+use constant handlers => [];
+
+=head1 NAME
+
+TAP::Parser::IteratorFactory - Figures out which SourceHandler objects to use for a given Source
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::IteratorFactory;
+ my $factory = TAP::Parser::IteratorFactory->new({ %config });
+ my $iterator = $factory->make_iterator( $filename );
+
+=head1 DESCRIPTION
+
+This is a factory class that takes a L<TAP::Parser::Source> and runs it through all the
+registered L<TAP::Parser::SourceHandler>s to see which one should handle the source.
+
+If you're a plugin author, you'll be interested in how to L</register_handler>s,
+how L</detect_source> works.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+Creates a new factory class:
+
+ my $sf = TAP::Parser::IteratorFactory->new( $config );
+
+C<$config> is optional. If given, sets L</config> and calls L</load_handlers>.
+
+=cut
+
+sub _initialize {
+ my ( $self, $config ) = @_;
+ $self->config( $config || {} )->load_handlers;
+ return $self;
+}
+
+=head3 C<register_handler>
+
+Registers a new L<TAP::Parser::SourceHandler> with this factory.
+
+ __PACKAGE__->register_handler( $handler_class );
+
+=head3 C<handlers>
+
+List of handlers that have been registered.
+
+=cut
+
+sub register_handler {
+ my ( $class, $dclass ) = @_;
+
+ confess("$dclass must implement can_handle & make_iterator methods!")
+ unless UNIVERSAL::can( $dclass, 'can_handle' )
+ && UNIVERSAL::can( $dclass, 'make_iterator' );
+
+ my $handlers = $class->handlers;
+ push @{$handlers}, $dclass
+ unless grep { $_ eq $dclass } @{$handlers};
+
+ return $class;
+}
+
+##############################################################################
+
+=head2 Instance Methods
+
+=head3 C<config>
+
+ my $cfg = $sf->config;
+ $sf->config({ Perl => { %config } });
+
+Chaining getter/setter for the configuration of the available source handlers.
+This is a hashref keyed on handler class whose values contain config to be passed
+onto the handlers during detection & creation. Class names may be fully qualified
+or abbreviated, eg:
+
+ # these are equivalent
+ $sf->config({ 'TAP::Parser::SourceHandler::Perl' => { %config } });
+ $sf->config({ 'Perl' => { %config } });
+
+=cut
+
+sub config {
+ my $self = shift;
+ return $self->{config} unless @_;
+ unless ( 'HASH' eq ref $_[0] ) {
+ $self->_croak('Argument to &config must be a hash reference');
+ }
+ $self->{config} = shift;
+ return $self;
+}
+
+sub _last_handler {
+ my $self = shift;
+ return $self->{last_handler} unless @_;
+ $self->{last_handler} = shift;
+ return $self;
+}
+
+sub _testing {
+ my $self = shift;
+ return $self->{testing} unless @_;
+ $self->{testing} = shift;
+ return $self;
+}
+
+##############################################################################
+
+=head3 C<load_handlers>
+
+ $sf->load_handlers;
+
+Loads the handler classes defined in L</config>. For example, given a config:
+
+ $sf->config({
+ MySourceHandler => { some => 'config' },
+ });
+
+C<load_handlers> will attempt to load the C<MySourceHandler> class by looking in
+C<@INC> for it in this order:
+
+ TAP::Parser::SourceHandler::MySourceHandler
+ MySourceHandler
+
+C<croak>s on error.
+
+=cut
+
+sub load_handlers {
+ my ($self) = @_;
+ for my $handler ( keys %{ $self->config } ) {
+ my $sclass = $self->_load_handler($handler);
+
+ # TODO: store which class we loaded anywhere?
+ }
+ return $self;
+}
+
+sub _load_handler {
+ my ( $self, $handler ) = @_;
+
+ my @errors;
+ for my $dclass ( "TAP::Parser::SourceHandler::$handler", $handler ) {
+ return $dclass
+ if UNIVERSAL::can( $dclass, 'can_handle' )
+ && UNIVERSAL::can( $dclass, 'make_iterator' );
+
+ eval "use $dclass";
+ if ( my $e = $@ ) {
+ push @errors, $e;
+ next;
+ }
+
+ return $dclass
+ if UNIVERSAL::can( $dclass, 'can_handle' )
+ && UNIVERSAL::can( $dclass, 'make_iterator' );
+ push @errors,
+ "handler '$dclass' does not implement can_handle & make_iterator";
+ }
+
+ $self->_croak(
+ "Cannot load handler '$handler': " . join( "\n", @errors ) );
+}
+
+##############################################################################
+
+=head3 C<make_iterator>
+
+ my $iterator = $src_factory->make_iterator( $source );
+
+Given a L<TAP::Parser::Source>, finds the most suitable L<TAP::Parser::SourceHandler>
+to use to create a L<TAP::Parser::Iterator> (see L</detect_source>). Dies on error.
+
+=cut
+
+sub make_iterator {
+ my ( $self, $source ) = @_;
+
+ $self->_croak('no raw source defined!') unless defined $source->raw;
+
+ $source->config( $self->config )->assemble_meta;
+
+ # is the raw source already an object?
+ return $source->raw
+ if ( $source->meta->{is_object}
+ && UNIVERSAL::isa( $source->raw, 'TAP::Parser::SourceHandler' ) );
+
+ # figure out what kind of source it is
+ my $sd_class = $self->detect_source($source);
+ $self->_last_handler($sd_class);
+
+ return if $self->_testing;
+
+ # create it
+ my $iterator = $sd_class->make_iterator($source);
+
+ return $iterator;
+}
+
+=head3 C<detect_source>
+
+Given a L<TAP::Parser::Source>, detects what kind of source it is and
+returns I<one> L<TAP::Parser::SourceHandler> (the most confident one). Dies
+on error.
+
+The detection algorithm works something like this:
+
+ for (@registered_handlers) {
+ # ask them how confident they are about handling this source
+ $confidence{$handler} = $handler->can_handle( $source )
+ }
+ # choose the most confident handler
+
+Ties are handled by choosing the first handler.
+
+=cut
+
+sub detect_source {
+ my ( $self, $source ) = @_;
+
+ confess('no raw source ref defined!') unless defined $source->raw;
+
+ # find a list of handlers that can handle this source:
+ my %confidence_for;
+ for my $handler ( @{ $self->handlers } ) {
+ my $confidence = $handler->can_handle($source);
+ # warn "handler: $handler: $confidence\n";
+ $confidence_for{$handler} = $confidence if $confidence;
+ }
+
+ if ( !%confidence_for ) {
+ # error: can't detect source
+ my $raw_source_short = substr( ${ $source->raw }, 0, 50 );
+ confess("Cannot detect source of '$raw_source_short'!");
+ return;
+ }
+
+ # if multiple handlers can handle it, choose the most confident one
+ my @handlers =
+ sort { $confidence_for{$b} <=> $confidence_for{$a} }
+ keys %confidence_for;
+
+ # Check for a tie.
+ if( @handlers > 1 &&
+ $confidence_for{$handlers[0]} == $confidence_for{$handlers[1]}
+ ) {
+ my $filename = $source->meta->{file}{basename};
+ die("There is a tie between $handlers[0] and $handlers[1].\n".
+ "Both voted $confidence_for{$handlers[0]} on $filename.\n");
+ }
+
+ # this is really useful for debugging handlers:
+ if ( $ENV{TAP_HARNESS_SOURCE_FACTORY_VOTES} ) {
+ warn(
+ "votes: ",
+ join( ', ', map {"$_: $confidence_for{$_}"} @handlers ),
+ "\n"
+ );
+ }
+
+ # return 1st
+ return $handlers[0];
+}
+
+1;
+
+__END__
+
+=head1 SUBCLASSING
+
+Please see L<TAP::Parser/SUBCLASSING> for a subclassing overview.
+
+=head2 Example
+
+If we've done things right, you'll probably want to write a new source,
+rather than sub-classing this (see L<TAP::Parser::SourceHandler> for that).
+
+But in case you find the need to...
+
+ package MyIteratorFactory;
+
+ use strict;
+
+ use base 'TAP::Parser::IteratorFactory';
+
+ # override source detection algorithm
+ sub detect_source {
+ my ($self, $raw_source_ref, $meta) = @_;
+ # do detective work, using $meta and whatever else...
+ }
+
+ 1;
+
+=head1 AUTHORS
+
+Steve Purkis
+
+=head1 ATTRIBUTION
+
+Originally ripped off from L<Test::Harness>.
+
+Moved out of L<TAP::Parser> & converted to a factory class to support
+extensible TAP source detective work by Steve Purkis.
+
+=head1 SEE ALSO
+
+L<TAP::Object>,
+L<TAP::Parser>,
+L<TAP::Parser::SourceHandler>,
+L<TAP::Parser::SourceHandler::File>,
+L<TAP::Parser::SourceHandler::Perl>,
+L<TAP::Parser::SourceHandler::RawTAP>,
+L<TAP::Parser::SourceHandler::Handle>,
+L<TAP::Parser::SourceHandler::Executable>
+
+=cut
+
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Multiplexer.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Multiplexer.pm
new file mode 100755
index 00000000000..aa3e864d799
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Multiplexer.pm
@@ -0,0 +1,196 @@
+package TAP::Parser::Multiplexer;
+
+use strict;
+use warnings;
+
+use IO::Select;
+use Errno;
+
+use base 'TAP::Object';
+
+use constant IS_WIN32 => $^O =~ /^(MS)?Win32$/;
+use constant IS_VMS => $^O eq 'VMS';
+use constant SELECT_OK => !( IS_VMS || IS_WIN32 );
+
+=head1 NAME
+
+TAP::Parser::Multiplexer - Multiplex multiple TAP::Parsers
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Multiplexer;
+
+ my $mux = TAP::Parser::Multiplexer->new;
+ $mux->add( $parser1, $stash1 );
+ $mux->add( $parser2, $stash2 );
+ while ( my ( $parser, $stash, $result ) = $mux->next ) {
+ # do stuff
+ }
+
+=head1 DESCRIPTION
+
+C<TAP::Parser::Multiplexer> gathers input from multiple TAP::Parsers.
+Internally it calls select on the input file handles for those parsers
+to wait for one or more of them to have input available.
+
+See L<TAP::Harness> for an example of its use.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+ my $mux = TAP::Parser::Multiplexer->new;
+
+Returns a new C<TAP::Parser::Multiplexer> object.
+
+=cut
+
+# new() implementation supplied by TAP::Object
+
+sub _initialize {
+ my $self = shift;
+ $self->{select} = IO::Select->new;
+ $self->{avid} = []; # Parsers that can't select
+ $self->{count} = 0;
+ return $self;
+}
+
+##############################################################################
+
+=head2 Instance Methods
+
+=head3 C<add>
+
+ $mux->add( $parser, $stash );
+
+Add a TAP::Parser to the multiplexer. C<$stash> is an optional opaque
+reference that will be returned from C<next> along with the parser and
+the next result.
+
+=cut
+
+sub add {
+ my ( $self, $parser, $stash ) = @_;
+
+ if ( SELECT_OK && ( my @handles = $parser->get_select_handles ) ) {
+ my $sel = $self->{select};
+
+ # We have to turn handles into file numbers here because by
+ # the time we want to remove them from our IO::Select they
+ # will already have been closed by the iterator.
+ my @filenos = map { fileno $_ } @handles;
+ for my $h (@handles) {
+ $sel->add( [ $h, $parser, $stash, @filenos ] );
+ }
+
+ $self->{count}++;
+ }
+ else {
+ push @{ $self->{avid} }, [ $parser, $stash ];
+ }
+}
+
+=head3 C<parsers>
+
+ my $count = $mux->parsers;
+
+Returns the number of parsers. Parsers are removed from the multiplexer
+when their input is exhausted.
+
+=cut
+
+sub parsers {
+ my $self = shift;
+ return $self->{count} + scalar @{ $self->{avid} };
+}
+
+sub _iter {
+ my $self = shift;
+
+ my $sel = $self->{select};
+ my $avid = $self->{avid};
+ my @ready = ();
+
+ return sub {
+
+ # Drain all the non-selectable parsers first
+ if (@$avid) {
+ my ( $parser, $stash ) = @{ $avid->[0] };
+ my $result = $parser->next;
+ shift @$avid unless defined $result;
+ return ( $parser, $stash, $result );
+ }
+
+ until (@ready) {
+ return unless $sel->count;
+ @ready = $sel->can_read;
+ last if @ready || !$!{EINTR};
+ }
+
+ my ( $h, $parser, $stash, @handles ) = @{ shift @ready };
+ my $result = $parser->next;
+
+ unless ( defined $result ) {
+ $sel->remove(@handles);
+ $self->{count}--;
+
+ # Force another can_read - we may now have removed a handle
+ # thought to have been ready.
+ @ready = ();
+ }
+
+ return ( $parser, $stash, $result );
+ };
+}
+
+=head3 C<next>
+
+Return a result from the next available parser. Returns a list
+containing the parser from which the result came, the stash that
+corresponds with that parser and the result.
+
+ my ( $parser, $stash, $result ) = $mux->next;
+
+If C<$result> is undefined the corresponding parser has reached the end
+of its input (and will automatically be removed from the multiplexer).
+
+When all parsers are exhausted an empty list will be returned.
+
+ if ( my ( $parser, $stash, $result ) = $mux->next ) {
+ if ( ! defined $result ) {
+ # End of this parser
+ }
+ else {
+ # Process result
+ }
+ }
+ else {
+ # All parsers finished
+ }
+
+=cut
+
+sub next {
+ my $self = shift;
+ return ( $self->{_iter} ||= $self->_iter )->();
+}
+
+=head1 See Also
+
+L<TAP::Parser>
+
+L<TAP::Harness>
+
+=cut
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result.pm
new file mode 100755
index 00000000000..4083a29d098
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result.pm
@@ -0,0 +1,297 @@
+package TAP::Parser::Result;
+
+use strict;
+use warnings;
+
+use base 'TAP::Object';
+
+BEGIN {
+
+ # make is_* methods
+ my @attrs = qw( plan pragma test comment bailout version unknown yaml );
+ no strict 'refs';
+ for my $token (@attrs) {
+ my $method = "is_$token";
+ *$method = sub { return $token eq shift->type };
+ }
+}
+
+##############################################################################
+
+=head1 NAME
+
+TAP::Parser::Result - Base class for TAP::Parser output objects
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ # abstract class - not meant to be used directly
+ # see TAP::Parser::ResultFactory for preferred usage
+
+ # directly:
+ use TAP::Parser::Result;
+ my $token = {...};
+ my $result = TAP::Parser::Result->new( $token );
+
+=head2 DESCRIPTION
+
+This is a simple base class used by L<TAP::Parser> to store objects that
+represent the current bit of test output data from TAP (usually a single
+line). Unless you're subclassing, you probably won't need to use this module
+directly.
+
+=head2 METHODS
+
+=head3 C<new>
+
+ # see TAP::Parser::ResultFactory for preferred usage
+
+ # to use directly:
+ my $result = TAP::Parser::Result->new($token);
+
+Returns an instance the appropriate class for the test token passed in.
+
+=cut
+
+# new() implementation provided by TAP::Object
+
+sub _initialize {
+ my ( $self, $token ) = @_;
+ if ($token) {
+
+ # assign to a hash slice to make a shallow copy of the token.
+ # I guess we could assign to the hash as (by default) there are not
+ # contents, but that seems less helpful if someone wants to subclass us
+ @{$self}{ keys %$token } = values %$token;
+ }
+ return $self;
+}
+
+##############################################################################
+
+=head2 Boolean methods
+
+The following methods all return a boolean value and are to be overridden in
+the appropriate subclass.
+
+=over 4
+
+=item * C<is_plan>
+
+Indicates whether or not this is the test plan line.
+
+ 1..3
+
+=item * C<is_pragma>
+
+Indicates whether or not this is a pragma line.
+
+ pragma +strict
+
+=item * C<is_test>
+
+Indicates whether or not this is a test line.
+
+ ok 1 Is OK!
+
+=item * C<is_comment>
+
+Indicates whether or not this is a comment.
+
+ # this is a comment
+
+=item * C<is_bailout>
+
+Indicates whether or not this is bailout line.
+
+ Bail out! We're out of dilithium crystals.
+
+=item * C<is_version>
+
+Indicates whether or not this is a TAP version line.
+
+ TAP version 4
+
+=item * C<is_unknown>
+
+Indicates whether or not the current line could be parsed.
+
+ ... this line is junk ...
+
+=item * C<is_yaml>
+
+Indicates whether or not this is a YAML chunk.
+
+=back
+
+=cut
+
+##############################################################################
+
+=head3 C<raw>
+
+ print $result->raw;
+
+Returns the original line of text which was parsed.
+
+=cut
+
+sub raw { shift->{raw} }
+
+##############################################################################
+
+=head3 C<type>
+
+ my $type = $result->type;
+
+Returns the "type" of a token, such as C<comment> or C<test>.
+
+=cut
+
+sub type { shift->{type} }
+
+##############################################################################
+
+=head3 C<as_string>
+
+ print $result->as_string;
+
+Prints a string representation of the token. This might not be the exact
+output, however. Tests will have test numbers added if not present, TODO and
+SKIP directives will be capitalized and, in general, things will be cleaned
+up. If you need the original text for the token, see the C<raw> method.
+
+=cut
+
+sub as_string { shift->{raw} }
+
+##############################################################################
+
+=head3 C<is_ok>
+
+ if ( $result->is_ok ) { ... }
+
+Reports whether or not a given result has passed. Anything which is B<not> a
+test result returns true. This is merely provided as a convenient shortcut.
+
+=cut
+
+sub is_ok {1}
+
+##############################################################################
+
+=head3 C<passed>
+
+Deprecated. Please use C<is_ok> instead.
+
+=cut
+
+sub passed {
+ warn 'passed() is deprecated. Please use "is_ok()"';
+ shift->is_ok;
+}
+
+##############################################################################
+
+=head3 C<has_directive>
+
+ if ( $result->has_directive ) {
+ ...
+ }
+
+Indicates whether or not the given result has a TODO or SKIP directive.
+
+=cut
+
+sub has_directive {
+ my $self = shift;
+ return ( $self->has_todo || $self->has_skip );
+}
+
+##############################################################################
+
+=head3 C<has_todo>
+
+ if ( $result->has_todo ) {
+ ...
+ }
+
+Indicates whether or not the given result has a TODO directive.
+
+=cut
+
+sub has_todo { 'TODO' eq ( shift->{directive} || '' ) }
+
+##############################################################################
+
+=head3 C<has_skip>
+
+ if ( $result->has_skip ) {
+ ...
+ }
+
+Indicates whether or not the given result has a SKIP directive.
+
+=cut
+
+sub has_skip { 'SKIP' eq ( shift->{directive} || '' ) }
+
+=head3 C<set_directive>
+
+Set the directive associated with this token. Used internally to fake
+TODO tests.
+
+=cut
+
+sub set_directive {
+ my ( $self, $dir ) = @_;
+ $self->{directive} = $dir;
+}
+
+1;
+
+=head1 SUBCLASSING
+
+Please see L<TAP::Parser/SUBCLASSING> for a subclassing overview.
+
+Remember: if you want your subclass to be automatically used by the parser,
+you'll have to register it with L<TAP::Parser::ResultFactory/register_type>.
+
+If you're creating a completely new result I<type>, you'll probably need to
+subclass L<TAP::Parser::Grammar> too, or else it'll never get used.
+
+=head2 Example
+
+ package MyResult;
+
+ use strict;
+
+ use base 'TAP::Parser::Result';
+
+ # register with the factory:
+ TAP::Parser::ResultFactory->register_type( 'my_type' => __PACKAGE__ );
+
+ sub as_string { 'My results all look the same' }
+
+=head1 SEE ALSO
+
+L<TAP::Object>,
+L<TAP::Parser>,
+L<TAP::Parser::ResultFactory>,
+L<TAP::Parser::Result::Bailout>,
+L<TAP::Parser::Result::Comment>,
+L<TAP::Parser::Result::Plan>,
+L<TAP::Parser::Result::Pragma>,
+L<TAP::Parser::Result::Test>,
+L<TAP::Parser::Result::Unknown>,
+L<TAP::Parser::Result::Version>,
+L<TAP::Parser::Result::YAML>,
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Bailout.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Bailout.pm
new file mode 100755
index 00000000000..9f676e629ae
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Bailout.pm
@@ -0,0 +1,62 @@
+package TAP::Parser::Result::Bailout;
+
+use strict;
+use warnings;
+
+use base 'TAP::Parser::Result';
+
+=head1 NAME
+
+TAP::Parser::Result::Bailout - Bailout result token.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+This is a subclass of L<TAP::Parser::Result>. A token of this class will be
+returned if a bail out line is encountered.
+
+ 1..5
+ ok 1 - woo hooo!
+ Bail out! Well, so much for "woo hooo!"
+
+=head1 OVERRIDDEN METHODS
+
+Mainly listed here to shut up the pitiful screams of the pod coverage tests.
+They keep me awake at night.
+
+=over 4
+
+=item * C<as_string>
+
+=back
+
+=cut
+
+##############################################################################
+
+=head2 Instance Methods
+
+=head3 C<explanation>
+
+ if ( $result->is_bailout ) {
+ my $explanation = $result->explanation;
+ print "We bailed out because ($explanation)";
+ }
+
+If, and only if, a token is a bailout token, you can get an "explanation" via
+this method. The explanation is the text after the mystical "Bail out!" words
+which appear in the tap output.
+
+=cut
+
+sub explanation { shift->{bailout} }
+sub as_string { shift->{bailout} }
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Comment.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Comment.pm
new file mode 100755
index 00000000000..7e1a81ed7f6
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Comment.pm
@@ -0,0 +1,60 @@
+package TAP::Parser::Result::Comment;
+
+use strict;
+use warnings;
+
+use base 'TAP::Parser::Result';
+
+=head1 NAME
+
+TAP::Parser::Result::Comment - Comment result token.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+This is a subclass of L<TAP::Parser::Result>. A token of this class will be
+returned if a comment line is encountered.
+
+ 1..1
+ ok 1 - woo hooo!
+ # this is a comment
+
+=head1 OVERRIDDEN METHODS
+
+Mainly listed here to shut up the pitiful screams of the pod coverage tests.
+They keep me awake at night.
+
+=over 4
+
+=item * C<as_string>
+
+Note that this method merely returns the comment preceded by a '# '.
+
+=back
+
+=cut
+
+##############################################################################
+
+=head2 Instance Methods
+
+=head3 C<comment>
+
+ if ( $result->is_comment ) {
+ my $comment = $result->comment;
+ print "I have something to say: $comment";
+ }
+
+=cut
+
+sub comment { shift->{comment} }
+sub as_string { shift->{raw} }
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Plan.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Plan.pm
new file mode 100755
index 00000000000..b8ae566d666
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Plan.pm
@@ -0,0 +1,119 @@
+package TAP::Parser::Result::Plan;
+
+use strict;
+use warnings;
+
+use base 'TAP::Parser::Result';
+
+=head1 NAME
+
+TAP::Parser::Result::Plan - Plan result token.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+This is a subclass of L<TAP::Parser::Result>. A token of this class will be
+returned if a plan line is encountered.
+
+ 1..1
+ ok 1 - woo hooo!
+
+C<1..1> is the plan. Gotta have a plan.
+
+=head1 OVERRIDDEN METHODS
+
+Mainly listed here to shut up the pitiful screams of the pod coverage tests.
+They keep me awake at night.
+
+=over 4
+
+=item * C<as_string>
+
+=item * C<raw>
+
+=back
+
+=cut
+
+##############################################################################
+
+=head2 Instance Methods
+
+=head3 C<plan>
+
+ if ( $result->is_plan ) {
+ print $result->plan;
+ }
+
+This is merely a synonym for C<as_string>.
+
+=cut
+
+sub plan { '1..' . shift->{tests_planned} }
+
+##############################################################################
+
+=head3 C<tests_planned>
+
+ my $planned = $result->tests_planned;
+
+Returns the number of tests planned. For example, a plan of C<1..17> will
+cause this method to return '17'.
+
+=cut
+
+sub tests_planned { shift->{tests_planned} }
+
+##############################################################################
+
+=head3 C<directive>
+
+ my $directive = $plan->directive;
+
+If a SKIP directive is included with the plan, this method will return it.
+
+ 1..0 # SKIP: why bother?
+
+=cut
+
+sub directive { shift->{directive} }
+
+##############################################################################
+
+=head3 C<has_skip>
+
+ if ( $result->has_skip ) { ... }
+
+Returns a boolean value indicating whether or not this test has a SKIP
+directive.
+
+=head3 C<explanation>
+
+ my $explanation = $plan->explanation;
+
+If a SKIP directive was included with the plan, this method will return the
+explanation, if any.
+
+=cut
+
+sub explanation { shift->{explanation} }
+
+=head3 C<todo_list>
+
+ my $todo = $result->todo_list;
+ for ( @$todo ) {
+ ...
+ }
+
+=cut
+
+sub todo_list { shift->{todo_list} }
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Pragma.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Pragma.pm
new file mode 100755
index 00000000000..debc8a7626a
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Pragma.pm
@@ -0,0 +1,62 @@
+package TAP::Parser::Result::Pragma;
+
+use strict;
+use warnings;
+
+use base 'TAP::Parser::Result';
+
+=head1 NAME
+
+TAP::Parser::Result::Pragma - TAP pragma token.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+This is a subclass of L<TAP::Parser::Result>. A token of this class will be
+returned if a pragma is encountered.
+
+ TAP version 13
+ pragma +strict, -foo
+
+Pragmas are only supported from TAP version 13 onwards.
+
+=head1 OVERRIDDEN METHODS
+
+Mainly listed here to shut up the pitiful screams of the pod coverage tests.
+They keep me awake at night.
+
+=over 4
+
+=item * C<as_string>
+
+=item * C<raw>
+
+=back
+
+=cut
+
+##############################################################################
+
+=head2 Instance Methods
+
+=head3 C<pragmas>
+
+if ( $result->is_pragma ) {
+ @pragmas = $result->pragmas;
+}
+
+=cut
+
+sub pragmas {
+ my @pragmas = @{ shift->{pragmas} };
+ return wantarray ? @pragmas : \@pragmas;
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Test.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Test.pm
new file mode 100755
index 00000000000..5e5ea395a2c
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Test.pm
@@ -0,0 +1,271 @@
+package TAP::Parser::Result::Test;
+
+use strict;
+use warnings;
+
+use base 'TAP::Parser::Result';
+
+=head1 NAME
+
+TAP::Parser::Result::Test - Test result token.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+This is a subclass of L<TAP::Parser::Result>. A token of this class will be
+returned if a test line is encountered.
+
+ 1..1
+ ok 1 - woo hooo!
+
+=head1 OVERRIDDEN METHODS
+
+This class is the workhorse of the L<TAP::Parser> system. Most TAP lines will
+be test lines and if C<< $result->is_test >>, then you have a bunch of methods
+at your disposal.
+
+=head2 Instance Methods
+
+=cut
+
+##############################################################################
+
+=head3 C<ok>
+
+ my $ok = $result->ok;
+
+Returns the literal text of the C<ok> or C<not ok> status.
+
+=cut
+
+sub ok { shift->{ok} }
+
+##############################################################################
+
+=head3 C<number>
+
+ my $test_number = $result->number;
+
+Returns the number of the test, even if the original TAP output did not supply
+that number.
+
+=cut
+
+sub number { shift->{test_num} }
+
+sub _number {
+ my ( $self, $number ) = @_;
+ $self->{test_num} = $number;
+}
+
+##############################################################################
+
+=head3 C<description>
+
+ my $description = $result->description;
+
+Returns the description of the test, if any. This is the portion after the
+test number but before the directive.
+
+=cut
+
+sub description { shift->{description} }
+
+##############################################################################
+
+=head3 C<directive>
+
+ my $directive = $result->directive;
+
+Returns either C<TODO> or C<SKIP> if either directive was present for a test
+line.
+
+=cut
+
+sub directive { shift->{directive} }
+
+##############################################################################
+
+=head3 C<explanation>
+
+ my $explanation = $result->explanation;
+
+If a test had either a C<TODO> or C<SKIP> directive, this method will return
+the accompanying explanation, if present.
+
+ not ok 17 - 'Pigs can fly' # TODO not enough acid
+
+For the above line, the explanation is I<not enough acid>.
+
+=cut
+
+sub explanation { shift->{explanation} }
+
+##############################################################################
+
+=head3 C<is_ok>
+
+ if ( $result->is_ok ) { ... }
+
+Returns a boolean value indicating whether or not the test passed. Remember
+that for TODO tests, the test always passes.
+
+If the test is unplanned, this method will always return false. See
+C<is_unplanned>.
+
+=cut
+
+sub is_ok {
+ my $self = shift;
+
+ return if $self->is_unplanned;
+
+ # TODO directives reverse the sense of a test.
+ return $self->has_todo ? 1 : $self->ok !~ /not/;
+}
+
+##############################################################################
+
+=head3 C<is_actual_ok>
+
+ if ( $result->is_actual_ok ) { ... }
+
+Returns a boolean value indicating whether or not the test passed, regardless
+of its TODO status.
+
+=cut
+
+sub is_actual_ok {
+ my $self = shift;
+ return $self->{ok} !~ /not/;
+}
+
+##############################################################################
+
+=head3 C<actual_passed>
+
+Deprecated. Please use C<is_actual_ok> instead.
+
+=cut
+
+sub actual_passed {
+ warn 'actual_passed() is deprecated. Please use "is_actual_ok()"';
+ goto &is_actual_ok;
+}
+
+##############################################################################
+
+=head3 C<todo_passed>
+
+ if ( $test->todo_passed ) {
+ # test unexpectedly succeeded
+ }
+
+If this is a TODO test and an 'ok' line, this method returns true.
+Otherwise, it will always return false (regardless of passing status on
+non-todo tests).
+
+This is used to track which tests unexpectedly succeeded.
+
+=cut
+
+sub todo_passed {
+ my $self = shift;
+ return $self->has_todo && $self->is_actual_ok;
+}
+
+##############################################################################
+
+=head3 C<todo_failed>
+
+ # deprecated in favor of 'todo_passed'. This method was horribly misnamed.
+
+This was a badly misnamed method. It indicates which TODO tests unexpectedly
+succeeded. Will now issue a warning and call C<todo_passed>.
+
+=cut
+
+sub todo_failed {
+ warn 'todo_failed() is deprecated. Please use "todo_passed()"';
+ goto &todo_passed;
+}
+
+##############################################################################
+
+=head3 C<has_skip>
+
+ if ( $result->has_skip ) { ... }
+
+Returns a boolean value indicating whether or not this test has a SKIP
+directive.
+
+=head3 C<has_todo>
+
+ if ( $result->has_todo ) { ... }
+
+Returns a boolean value indicating whether or not this test has a TODO
+directive.
+
+=head3 C<as_string>
+
+ print $result->as_string;
+
+This method prints the test as a string. It will probably be similar, but
+not necessarily identical, to the original test line. Directives are
+capitalized, some whitespace may be trimmed and a test number will be added if
+it was not present in the original line. If you need the original text of the
+test line, use the C<raw> method.
+
+=cut
+
+sub as_string {
+ my $self = shift;
+ my $string = $self->ok . " " . $self->number;
+ if ( my $description = $self->description ) {
+ $string .= " $description";
+ }
+ if ( my $directive = $self->directive ) {
+ my $explanation = $self->explanation;
+ $string .= " # $directive $explanation";
+ }
+ return $string;
+}
+
+##############################################################################
+
+=head3 C<is_unplanned>
+
+ if ( $test->is_unplanned ) { ... }
+ $test->is_unplanned(1);
+
+If a test number is greater than the number of planned tests, this method will
+return true. Unplanned tests will I<always> return false for C<is_ok>,
+regardless of whether or not the test C<has_todo>.
+
+Note that if tests have a trailing plan, it is not possible to set this
+property for unplanned tests as we do not know it's unplanned until the plan
+is reached:
+
+ print <<'END';
+ ok 1
+ ok 2
+ 1..1
+ END
+
+=cut
+
+sub is_unplanned {
+ my $self = shift;
+ return ( $self->{unplanned} || '' ) unless @_;
+ $self->{unplanned} = !!shift;
+ return $self;
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Unknown.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Unknown.pm
new file mode 100755
index 00000000000..c46e8d9566a
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Unknown.pm
@@ -0,0 +1,48 @@
+package TAP::Parser::Result::Unknown;
+
+use strict;
+use warnings;
+
+use base 'TAP::Parser::Result';
+
+=head1 NAME
+
+TAP::Parser::Result::Unknown - Unknown result token.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+This is a subclass of L<TAP::Parser::Result>. A token of this class will be
+returned if the parser does not recognize the token line. For example:
+
+ 1..5
+ VERSION 7
+ ok 1 - woo hooo!
+ ... woo hooo! is cool!
+
+In the above "TAP", the second and fourth lines will generate "Unknown"
+tokens.
+
+=head1 OVERRIDDEN METHODS
+
+Mainly listed here to shut up the pitiful screams of the pod coverage tests.
+They keep me awake at night.
+
+=over 4
+
+=item * C<as_string>
+
+=item * C<raw>
+
+=back
+
+=cut
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Version.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Version.pm
new file mode 100755
index 00000000000..497c10d5677
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/Version.pm
@@ -0,0 +1,62 @@
+package TAP::Parser::Result::Version;
+
+use strict;
+use warnings;
+
+use base 'TAP::Parser::Result';
+
+=head1 NAME
+
+TAP::Parser::Result::Version - TAP syntax version token.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+This is a subclass of L<TAP::Parser::Result>. A token of this class will be
+returned if a version line is encountered.
+
+ TAP version 13
+ ok 1
+ not ok 2
+
+The first version of TAP to include an explicit version number is 13.
+
+=head1 OVERRIDDEN METHODS
+
+Mainly listed here to shut up the pitiful screams of the pod coverage tests.
+They keep me awake at night.
+
+=over 4
+
+=item * C<as_string>
+
+=item * C<raw>
+
+=back
+
+=cut
+
+##############################################################################
+
+=head2 Instance Methods
+
+=head3 C<version>
+
+ if ( $result->is_version ) {
+ print $result->version;
+ }
+
+This is merely a synonym for C<as_string>.
+
+=cut
+
+sub version { shift->{version} }
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/YAML.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/YAML.pm
new file mode 100755
index 00000000000..e6ca7466e93
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Result/YAML.pm
@@ -0,0 +1,61 @@
+package TAP::Parser::Result::YAML;
+
+use strict;
+use warnings;
+
+use base 'TAP::Parser::Result';
+
+=head1 NAME
+
+TAP::Parser::Result::YAML - YAML result token.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 DESCRIPTION
+
+This is a subclass of L<TAP::Parser::Result>. A token of this class will be
+returned if a YAML block is encountered.
+
+ 1..1
+ ok 1 - woo hooo!
+
+C<1..1> is the plan. Gotta have a plan.
+
+=head1 OVERRIDDEN METHODS
+
+Mainly listed here to shut up the pitiful screams of the pod coverage tests.
+They keep me awake at night.
+
+=over 4
+
+=item * C<as_string>
+
+=item * C<raw>
+
+=back
+
+=cut
+
+##############################################################################
+
+=head2 Instance Methods
+
+=head3 C<data>
+
+ if ( $result->is_yaml ) {
+ print $result->data;
+ }
+
+Return the parsed YAML data for this result
+
+=cut
+
+sub data { shift->{data} }
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/ResultFactory.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/ResultFactory.pm
new file mode 100755
index 00000000000..ff7ef4addbd
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/ResultFactory.pm
@@ -0,0 +1,183 @@
+package TAP::Parser::ResultFactory;
+
+use strict;
+use warnings;
+
+use TAP::Parser::Result::Bailout ();
+use TAP::Parser::Result::Comment ();
+use TAP::Parser::Result::Plan ();
+use TAP::Parser::Result::Pragma ();
+use TAP::Parser::Result::Test ();
+use TAP::Parser::Result::Unknown ();
+use TAP::Parser::Result::Version ();
+use TAP::Parser::Result::YAML ();
+
+use base 'TAP::Object';
+
+##############################################################################
+
+=head1 NAME
+
+TAP::Parser::ResultFactory - Factory for creating TAP::Parser output objects
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::ResultFactory;
+ my $token = {...};
+ my $factory = TAP::Parser::ResultFactory->new;
+ my $result = $factory->make_result( $token );
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head2 DESCRIPTION
+
+This is a simple factory class which returns a L<TAP::Parser::Result> subclass
+representing the current bit of test data from TAP (usually a single line).
+It is used primarily by L<TAP::Parser::Grammar>. Unless you're subclassing,
+you probably won't need to use this module directly.
+
+=head2 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+Creates a new factory class.
+I<Note:> You currently don't need to instantiate a factory in order to use it.
+
+=head3 C<make_result>
+
+Returns an instance the appropriate class for the test token passed in.
+
+ my $result = TAP::Parser::ResultFactory->make_result($token);
+
+Can also be called as an instance method.
+
+=cut
+
+sub make_result {
+ my ( $proto, $token ) = @_;
+ my $type = $token->{type};
+ return $proto->class_for($type)->new($token);
+}
+
+=head3 C<class_for>
+
+Takes one argument: C<$type>. Returns the class for this $type, or C<croak>s
+with an error.
+
+=head3 C<register_type>
+
+Takes two arguments: C<$type>, C<$class>
+
+This lets you override an existing type with your own custom type, or register
+a completely new type, eg:
+
+ # create a custom result type:
+ package MyResult;
+ use strict;
+ use base 'TAP::Parser::Result';
+
+ # register with the factory:
+ TAP::Parser::ResultFactory->register_type( 'my_type' => __PACKAGE__ );
+
+ # use it:
+ my $r = TAP::Parser::ResultFactory->( { type => 'my_type' } );
+
+Your custom type should then be picked up automatically by the L<TAP::Parser>.
+
+=cut
+
+our %CLASS_FOR = (
+ plan => 'TAP::Parser::Result::Plan',
+ pragma => 'TAP::Parser::Result::Pragma',
+ test => 'TAP::Parser::Result::Test',
+ comment => 'TAP::Parser::Result::Comment',
+ bailout => 'TAP::Parser::Result::Bailout',
+ version => 'TAP::Parser::Result::Version',
+ unknown => 'TAP::Parser::Result::Unknown',
+ yaml => 'TAP::Parser::Result::YAML',
+);
+
+sub class_for {
+ my ( $class, $type ) = @_;
+
+ # return target class:
+ return $CLASS_FOR{$type} if exists $CLASS_FOR{$type};
+
+ # or complain:
+ require Carp;
+ Carp::croak("Could not determine class for result type '$type'");
+}
+
+sub register_type {
+ my ( $class, $type, $rclass ) = @_;
+
+ # register it blindly, assume they know what they're doing
+ $CLASS_FOR{$type} = $rclass;
+ return $class;
+}
+
+1;
+
+=head1 SUBCLASSING
+
+Please see L<TAP::Parser/SUBCLASSING> for a subclassing overview.
+
+There are a few things to bear in mind when creating your own
+C<ResultFactory>:
+
+=over 4
+
+=item 1
+
+The factory itself is never instantiated (this I<may> change in the future).
+This means that C<_initialize> is never called.
+
+=item 2
+
+C<TAP::Parser::Result-E<gt>new> is never called, $tokens are reblessed.
+This I<will> change in a future version!
+
+=item 3
+
+L<TAP::Parser::Result> subclasses will register themselves with
+L<TAP::Parser::ResultFactory> directly:
+
+ package MyFooResult;
+ TAP::Parser::ResultFactory->register_type( foo => __PACKAGE__ );
+
+Of course, it's up to you to decide whether or not to ignore them.
+
+=back
+
+=head2 Example
+
+ package MyResultFactory;
+
+ use strict;
+
+ use MyResult;
+
+ use base 'TAP::Parser::ResultFactory';
+
+ # force all results to be 'MyResult'
+ sub class_for {
+ return 'MyResult';
+ }
+
+ 1;
+
+=head1 SEE ALSO
+
+L<TAP::Parser>,
+L<TAP::Parser::Result>,
+L<TAP::Parser::Grammar>
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler.pm
new file mode 100755
index 00000000000..e7afbf6d626
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler.pm
@@ -0,0 +1,448 @@
+package TAP::Parser::Scheduler;
+
+use strict;
+use warnings;
+
+use Carp;
+use TAP::Parser::Scheduler::Job;
+use TAP::Parser::Scheduler::Spinner;
+
+=head1 NAME
+
+TAP::Parser::Scheduler - Schedule tests during parallel testing
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Scheduler;
+
+=head1 DESCRIPTION
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+ my $sched = TAP::Parser::Scheduler->new(tests => \@tests);
+ my $sched = TAP::Parser::Scheduler->new(
+ tests => [ ['t/test_name.t','Test Description'], ... ],
+ rules => \%rules,
+ );
+
+Given 'tests' and optional 'rules' as input, returns a new
+C<TAP::Parser::Scheduler> object. Each member of C<@tests> should be either a
+a test file name, or a two element arrayref, where the first element is a test
+file name, and the second element is a test description. By default, we'll use
+the test name as the description.
+
+The optional C<rules> attribute provides direction on which tests should be run
+in parallel and which should be run sequentially. If no rule data structure is
+provided, a default data structure is used which makes every test eligible to
+be run in parallel:
+
+ { par => '**' },
+
+The rules data structure is documented more in the next section.
+
+=head2 Rules data structure
+
+The "C<rules>" data structure is the the heart of the scheduler. It allows you
+to express simple rules like "run all tests in sequence" or "run all tests in
+parallel except these five tests.". However, the rules structure also supports
+glob-style pattern matching and recursive definitions, so you can also express
+arbitarily complicated patterns.
+
+The rule must only have one top level key: either 'par' for "parallel" or 'seq'
+for "sequence".
+
+Values must be either strings with possible glob-style matching, or arrayrefs
+of strings or hashrefs which follow this pattern recursively.
+
+Every element in an arrayref directly below a 'par' key is eligible to be run
+in parallel, while vavalues directly below a 'seq' key must be run in sequence.
+
+=head3 Rules examples
+
+Here are some examples:
+
+ # All tests be run in parallel (the default rule)
+ { par => '**' },
+
+ # Run all tests in sequence, except those starting with "p"
+ { par => 't/p*.t' },
+
+ # Run all tests in parallel, except those starting with "p"
+ {
+ seq => [
+ { seq => 't/p*.t' },
+ { par => '**' },
+ ],
+ }
+
+ # Run some startup tests in sequence, then some parallel tests then some
+ # teardown tests in sequence.
+ {
+ seq => [
+ { seq => 't/startup/*.t' },
+ { par => ['t/a/*.t','t/b/*.t','t/c/*.t'], }
+ { seq => 't/shutdown/*.t' },
+ ],
+ },
+
+
+=head3 Rules resolution
+
+=over 4
+
+=item * By default, all tests are eligible to be run in parallel. Specifying any of your own rules removes this one.
+
+=item * "First match wins". The first rule that matches a test will be the one that applies.
+
+=item * Any test which does not match a rule will be run in sequence at the end of the run.
+
+=item * The existence of a rule does not imply selecting a test. You must still specify the tests to run.
+
+=item * Specifying a rule to allow tests to run in parallel does not make the run in parallel. You still need specify the number of parallel C<jobs> in your Harness object.
+
+=back
+
+=head3 Glob-style pattern matching for rules
+
+We implement our own glob-style pattern matching. Here are the patterns it supports:
+
+ ** is any number of characters, including /, within a pathname
+ * is zero or more characters within a filename/directory name
+ ? is exactly one character within a filename/directory name
+ {foo,bar,baz} is any of foo, bar or baz.
+ \ is an escape character
+
+=cut
+
+sub new {
+ my $class = shift;
+
+ croak "Need a number of key, value pairs" if @_ % 2;
+
+ my %args = @_;
+ my $tests = delete $args{tests} || croak "Need a 'tests' argument";
+ my $rules = delete $args{rules} || { par => '**' };
+
+ croak "Unknown arg(s): ", join ', ', sort keys %args
+ if keys %args;
+
+ # Turn any simple names into a name, description pair. TODO: Maybe
+ # construct jobs here?
+ my $self = bless {}, $class;
+
+ $self->_set_rules( $rules, $tests );
+
+ return $self;
+}
+
+# Build the scheduler data structure.
+#
+# SCHEDULER-DATA ::= JOB
+# || ARRAY OF ARRAY OF SCHEDULER-DATA
+#
+# The nested arrays are the key to scheduling. The outer array contains
+# a list of things that may be executed in parallel. Whenever an
+# eligible job is sought any element of the outer array that is ready to
+# execute can be selected. The inner arrays represent sequential
+# execution. They can only proceed when the first job is ready to run.
+
+sub _set_rules {
+ my ( $self, $rules, $tests ) = @_;
+
+ # Convert all incoming tests to job objects.
+ # If no test description is provided use the file name as the description.
+ my @tests = map { TAP::Parser::Scheduler::Job->new(@$_) }
+ map { 'ARRAY' eq ref $_ ? $_ : [ $_, $_ ] } @$tests;
+ my $schedule = $self->_rule_clause( $rules, \@tests );
+
+ # If any tests are left add them as a sequential block at the end of
+ # the run.
+ $schedule = [ [ $schedule, @tests ] ] if @tests;
+
+ $self->{schedule} = $schedule;
+}
+
+sub _rule_clause {
+ my ( $self, $rule, $tests ) = @_;
+ croak 'Rule clause must be a hash'
+ unless 'HASH' eq ref $rule;
+
+ my @type = keys %$rule;
+ croak 'Rule clause must have exactly one key'
+ unless @type == 1;
+
+ my %handlers = (
+ par => sub {
+ [ map { [$_] } @_ ];
+ },
+ seq => sub { [ [@_] ] },
+ );
+
+ my $handler = $handlers{ $type[0] }
+ || croak 'Unknown scheduler type: ', $type[0];
+ my $val = $rule->{ $type[0] };
+
+ return $handler->(
+ map {
+ 'HASH' eq ref $_
+ ? $self->_rule_clause( $_, $tests )
+ : $self->_expand( $_, $tests )
+ } 'ARRAY' eq ref $val ? @$val : $val
+ );
+}
+
+sub _glob_to_regexp {
+ my ( $self, $glob ) = @_;
+ my $nesting;
+ my $pattern;
+
+ while (1) {
+ if ( $glob =~ /\G\*\*/gc ) {
+
+ # ** is any number of characters, including /, within a pathname
+ $pattern .= '.*?';
+ }
+ elsif ( $glob =~ /\G\*/gc ) {
+
+ # * is zero or more characters within a filename/directory name
+ $pattern .= '[^/]*';
+ }
+ elsif ( $glob =~ /\G\?/gc ) {
+
+ # ? is exactly one character within a filename/directory name
+ $pattern .= '[^/]';
+ }
+ elsif ( $glob =~ /\G\{/gc ) {
+
+ # {foo,bar,baz} is any of foo, bar or baz.
+ $pattern .= '(?:';
+ ++$nesting;
+ }
+ elsif ( $nesting and $glob =~ /\G,/gc ) {
+
+ # , is only special inside {}
+ $pattern .= '|';
+ }
+ elsif ( $nesting and $glob =~ /\G\}/gc ) {
+
+ # } that matches { is special. But unbalanced } are not.
+ $pattern .= ')';
+ --$nesting;
+ }
+ elsif ( $glob =~ /\G(\\.)/gc ) {
+
+ # A quoted literal
+ $pattern .= $1;
+ }
+ elsif ( $glob =~ /\G([\},])/gc ) {
+
+ # Sometimes meta characters
+ $pattern .= '\\' . $1;
+ }
+ else {
+
+ # Eat everything that is not a meta character.
+ $glob =~ /\G([^{?*\\\},]*)/gc;
+ $pattern .= quotemeta $1;
+ }
+ return $pattern if pos $glob == length $glob;
+ }
+}
+
+sub _expand {
+ my ( $self, $name, $tests ) = @_;
+
+ my $pattern = $self->_glob_to_regexp($name);
+ $pattern = qr/^ $pattern $/x;
+ my @match = ();
+
+ for ( my $ti = 0; $ti < @$tests; $ti++ ) {
+ if ( $tests->[$ti]->filename =~ $pattern ) {
+ push @match, splice @$tests, $ti, 1;
+ $ti--;
+ }
+ }
+
+ return @match;
+}
+
+=head2 Instance Methods
+
+=head3 C<get_all>
+
+Get a list of all remaining tests.
+
+=cut
+
+sub get_all {
+ my $self = shift;
+ my @all = $self->_gather( $self->{schedule} );
+ $self->{count} = @all;
+ @all;
+}
+
+sub _gather {
+ my ( $self, $rule ) = @_;
+ return unless defined $rule;
+ return $rule unless 'ARRAY' eq ref $rule;
+ return map { defined() ? $self->_gather($_) : () } map {@$_} @$rule;
+}
+
+=head3 C<get_job>
+
+Return the next available job as L<TAP::Parser::Scheduler::Job> object or
+C<undef> if none are available. Returns a L<TAP::Parser::Scheduler::Spinner> if
+the scheduler still has pending jobs but none are available to run right now.
+
+=cut
+
+sub get_job {
+ my $self = shift;
+ $self->{count} ||= $self->get_all;
+ my @jobs = $self->_find_next_job( $self->{schedule} );
+ if (@jobs) {
+ --$self->{count};
+ return $jobs[0];
+ }
+
+ return TAP::Parser::Scheduler::Spinner->new
+ if $self->{count};
+
+ return;
+}
+
+sub _not_empty {
+ my $ar = shift;
+ return 1 unless 'ARRAY' eq ref $ar;
+ for (@$ar) {
+ return 1 if _not_empty($_);
+ }
+ return;
+}
+
+sub _is_empty { !_not_empty(@_) }
+
+sub _find_next_job {
+ my ( $self, $rule ) = @_;
+
+ my @queue = ();
+ my $index = 0;
+ while ( $index < @$rule ) {
+ my $seq = $rule->[$index];
+
+ # Prune any exhausted items.
+ shift @$seq while @$seq && _is_empty( $seq->[0] );
+ if (@$seq) {
+ if ( defined $seq->[0] ) {
+ if ( 'ARRAY' eq ref $seq->[0] ) {
+ push @queue, $seq;
+ }
+ else {
+ my $job = splice @$seq, 0, 1, undef;
+ $job->on_finish( sub { shift @$seq } );
+ return $job;
+ }
+ }
+ ++$index;
+ }
+ else {
+
+ # Remove the empty sub-array from the array
+ splice @$rule, $index, 1;
+ }
+ }
+
+ for my $seq (@queue) {
+ if ( my @jobs = $self->_find_next_job( $seq->[0] ) ) {
+ return @jobs;
+ }
+ }
+
+ return;
+}
+
+=head3 C<as_string>
+
+Return a human readable representation of the scheduling tree.
+For example:
+
+ my @tests = (qw{
+ t/startup/foo.t
+ t/shutdown/foo.t
+
+ t/a/foo.t t/b/foo.t t/c/foo.t t/d/foo.t
+ });
+ my $sched = TAP::Parser::Scheduler->new(
+ tests => \@tests,
+ rules => {
+ seq => [
+ { seq => 't/startup/*.t' },
+ { par => ['t/a/*.t','t/b/*.t','t/c/*.t'] },
+ { seq => 't/shutdown/*.t' },
+ ],
+ },
+ );
+
+Produces:
+
+ par:
+ seq:
+ par:
+ seq:
+ par:
+ seq:
+ 't/startup/foo.t'
+ par:
+ seq:
+ 't/a/foo.t'
+ seq:
+ 't/b/foo.t'
+ seq:
+ 't/c/foo.t'
+ par:
+ seq:
+ 't/shutdown/foo.t'
+ 't/d/foo.t'
+
+
+=cut
+
+
+sub as_string {
+ my $self = shift;
+ return $self->_as_string( $self->{schedule} );
+}
+
+sub _as_string {
+ my ( $self, $rule, $depth ) = ( shift, shift, shift || 0 );
+ my $pad = ' ' x 2;
+ my $indent = $pad x $depth;
+ if ( !defined $rule ) {
+ return "$indent(undef)\n";
+ }
+ elsif ( 'ARRAY' eq ref $rule ) {
+ return unless @$rule;
+ my $type = ( 'par', 'seq' )[ $depth % 2 ];
+ return join(
+ '', "$indent$type:\n",
+ map { $self->_as_string( $_, $depth + 1 ) } @$rule
+ );
+ }
+ else {
+ return "$indent'" . $rule->filename . "'\n";
+ }
+}
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler/Job.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler/Job.pm
new file mode 100755
index 00000000000..e05661d719b
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler/Job.pm
@@ -0,0 +1,127 @@
+package TAP::Parser::Scheduler::Job;
+
+use strict;
+use warnings;
+use Carp;
+
+=head1 NAME
+
+TAP::Parser::Scheduler::Job - A single testing job.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Scheduler::Job;
+
+=head1 DESCRIPTION
+
+Represents a single test 'job'.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+ my $job = TAP::Parser::Scheduler::Job->new(
+ $filename, $description
+ );
+
+Given the filename and description of a test as scalars, returns a new
+L<TAP::Parser::Scheduler::Job> object.
+
+=cut
+
+sub new {
+ my ( $class, $name, $desc, @ctx ) = @_;
+ return bless {
+ filename => $name,
+ description => $desc,
+ @ctx ? ( context => \@ctx ) : (),
+ }, $class;
+}
+
+=head2 Instance Methods
+
+=head3 C<on_finish>
+
+ $self->on_finish(\&method).
+
+Register a closure to be called when this job is destroyed. The callback
+will be passed the C<TAP::Parser::Scheduler::Job> object as it's only argument.
+
+=cut
+
+sub on_finish {
+ my ( $self, $cb ) = @_;
+ $self->{on_finish} = $cb;
+}
+
+=head3 C<finish>
+
+ $self->finish;
+
+Called when a job is complete to unlock it. If a callback has been registered
+with C<on_finish>, it calls it. Otherwise, it does nothing.
+
+=cut
+
+sub finish {
+ my $self = shift;
+ if ( my $cb = $self->{on_finish} ) {
+ $cb->($self);
+ }
+}
+
+=head2 Attributes
+
+ $self->filename;
+ $self->description;
+ $self->context;
+
+These are all "getters" which return the data set for these attributes during object construction.
+
+
+=head3 C<filename>
+
+=head3 C<description>
+
+=head3 C<context>
+
+=cut
+
+sub filename { shift->{filename} }
+sub description { shift->{description} }
+sub context { @{ shift->{context} || [] } }
+
+=head3 C<as_array_ref>
+
+For backwards compatibility in callbacks.
+
+=cut
+
+sub as_array_ref {
+ my $self = shift;
+ return [ $self->filename, $self->description, $self->{context} ||= [] ];
+}
+
+=head3 C<is_spinner>
+
+ $self->is_spinner;
+
+Returns false indicating that this is a real job rather than a
+'spinner'. Spinners are returned when the scheduler still has pending
+jobs but can't (because of locking) return one right now.
+
+=cut
+
+sub is_spinner {0}
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler/Spinner.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler/Spinner.pm
new file mode 100755
index 00000000000..3d8be9ee4da
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Scheduler/Spinner.pm
@@ -0,0 +1,61 @@
+package TAP::Parser::Scheduler::Spinner;
+
+use strict;
+use warnings;
+use Carp;
+
+=head1 NAME
+
+TAP::Parser::Scheduler::Spinner - A no-op job.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Scheduler::Spinner;
+
+=head1 DESCRIPTION
+
+A no-op job. Returned by C<TAP::Parser::Scheduler> as an instruction to
+the harness to spin (keep executing tests) while the scheduler can't
+return a real job.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+ my $job = TAP::Parser::Scheduler::Spinner->new;
+
+Ignores any arguments and returns a new C<TAP::Parser::Scheduler::Spinner> object.
+
+=cut
+
+sub new { bless {}, shift }
+
+=head2 Instance Methods
+
+=head3 C<is_spinner>
+
+Returns true indicating that is a 'spinner' job. Spinners are returned
+when the scheduler still has pending jobs but can't (because of locking)
+return one right now.
+
+=cut
+
+sub is_spinner {1}
+
+=head1 SEE ALSO
+
+L<TAP::Parser::Scheduler>, L<TAP::Parser::Scheduler::Job>
+
+=cut
+
+1;
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/Source.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Source.pm
new file mode 100755
index 00000000000..bed0e80d1f8
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/Source.pm
@@ -0,0 +1,381 @@
+package TAP::Parser::Source;
+
+use strict;
+use warnings;
+
+use File::Basename qw( fileparse );
+use base 'TAP::Object';
+
+use constant BLK_SIZE => 512;
+
+=head1 NAME
+
+TAP::Parser::Source - a TAP source & meta data about it
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Source;
+ my $source = TAP::Parser::Source->new;
+ $source->raw( \'reference to raw TAP source' )
+ ->config( \%config )
+ ->merge( $boolean )
+ ->switches( \@switches )
+ ->test_args( \@args )
+ ->assemble_meta;
+
+ do { ... } if $source->meta->{is_file};
+ # see assemble_meta for a full list of data available
+
+=head1 DESCRIPTION
+
+A TAP I<source> is something that produces a stream of TAP for the parser to
+consume, such as an executable file, a text file, an archive, an IO handle, a
+database, etc. C<TAP::Parser::Source>s encapsulate these I<raw> sources, and
+provide some useful meta data about them. They are used by
+L<TAP::Parser::SourceHandler>s, which do whatever is required to produce &
+capture a stream of TAP from the I<raw> source, and package it up in a
+L<TAP::Parser::Iterator> for the parser to consume.
+
+Unless you're writing a new L<TAP::Parser::SourceHandler>, a plugin or
+subclassing L<TAP::Parser>, you probably won't need to use this module directly.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+ my $source = TAP::Parser::Source->new;
+
+Returns a new C<TAP::Parser::Source> object.
+
+=cut
+
+# new() implementation supplied by TAP::Object
+
+sub _initialize {
+ my ($self) = @_;
+ $self->meta( {} );
+ $self->config( {} );
+ return $self;
+}
+
+##############################################################################
+
+=head2 Instance Methods
+
+=head3 C<raw>
+
+ my $raw = $source->raw;
+ $source->raw( $some_value );
+
+Chaining getter/setter for the raw TAP source. This is a reference, as it may
+contain large amounts of data (eg: raw TAP).
+
+=head3 C<meta>
+
+ my $meta = $source->meta;
+ $source->meta({ %some_value });
+
+Chaining getter/setter for meta data about the source. This defaults to an
+empty hashref. See L</assemble_meta> for more info.
+
+=head3 C<has_meta>
+
+True if the source has meta data.
+
+=head3 C<config>
+
+ my $config = $source->config;
+ $source->config({ %some_value });
+
+Chaining getter/setter for the source's configuration, if any has been provided
+by the user. How it's used is up to you. This defaults to an empty hashref.
+See L</config_for> for more info.
+
+=head3 C<merge>
+
+ my $merge = $source->merge;
+ $source->config( $bool );
+
+Chaining getter/setter for the flag that dictates whether STDOUT and STDERR
+should be merged (where appropriate). Defaults to undef.
+
+=head3 C<switches>
+
+ my $switches = $source->switches;
+ $source->config([ @switches ]);
+
+Chaining getter/setter for the list of command-line switches that should be
+passed to the source (where appropriate). Defaults to undef.
+
+=head3 C<test_args>
+
+ my $test_args = $source->test_args;
+ $source->config([ @test_args ]);
+
+Chaining getter/setter for the list of command-line arguments that should be
+passed to the source (where appropriate). Defaults to undef.
+
+=cut
+
+sub raw {
+ my $self = shift;
+ return $self->{raw} unless @_;
+ $self->{raw} = shift;
+ return $self;
+}
+
+sub meta {
+ my $self = shift;
+ return $self->{meta} unless @_;
+ $self->{meta} = shift;
+ return $self;
+}
+
+sub has_meta {
+ return scalar %{ shift->meta } ? 1 : 0;
+}
+
+sub config {
+ my $self = shift;
+ return $self->{config} unless @_;
+ $self->{config} = shift;
+ return $self;
+}
+
+sub merge {
+ my $self = shift;
+ return $self->{merge} unless @_;
+ $self->{merge} = shift;
+ return $self;
+}
+
+sub switches {
+ my $self = shift;
+ return $self->{switches} unless @_;
+ $self->{switches} = shift;
+ return $self;
+}
+
+sub test_args {
+ my $self = shift;
+ return $self->{test_args} unless @_;
+ $self->{test_args} = shift;
+ return $self;
+}
+
+=head3 C<assemble_meta>
+
+ my $meta = $source->assemble_meta;
+
+Gathers meta data about the L</raw> source, stashes it in L</meta> and returns
+it as a hashref. This is done so that the L<TAP::Parser::SourceHandler>s don't
+have to repeat common checks. Currently this includes:
+
+ is_scalar => $bool,
+ is_hash => $bool,
+ is_array => $bool,
+
+ # for scalars:
+ length => $n
+ has_newlines => $bool
+
+ # only done if the scalar looks like a filename
+ is_file => $bool,
+ is_dir => $bool,
+ is_symlink => $bool,
+ file => {
+ # only done if the scalar looks like a filename
+ basename => $string, # including ext
+ dir => $string,
+ ext => $string,
+ lc_ext => $string,
+ # system checks
+ exists => $bool,
+ stat => [ ... ], # perldoc -f stat
+ empty => $bool,
+ size => $n,
+ text => $bool,
+ binary => $bool,
+ read => $bool,
+ write => $bool,
+ execute => $bool,
+ setuid => $bool,
+ setgid => $bool,
+ sticky => $bool,
+ is_file => $bool,
+ is_dir => $bool,
+ is_symlink => $bool,
+ # only done if the file's a symlink
+ lstat => [ ... ], # perldoc -f lstat
+ # only done if the file's a readable text file
+ shebang => $first_line,
+ }
+
+ # for arrays:
+ size => $n,
+
+=cut
+
+sub assemble_meta {
+ my ($self) = @_;
+
+ return $self->meta if $self->has_meta;
+
+ my $meta = $self->meta;
+ my $raw = $self->raw;
+
+ # rudimentary is object test - if it's blessed it'll
+ # inherit from UNIVERSAL
+ $meta->{is_object} = UNIVERSAL::isa( $raw, 'UNIVERSAL' ) ? 1 : 0;
+
+ if ( $meta->{is_object} ) {
+ $meta->{class} = ref($raw);
+ }
+ else {
+ my $ref = lc( ref($raw) );
+ $meta->{"is_$ref"} = 1;
+ }
+
+ if ( $meta->{is_scalar} ) {
+ my $source = $$raw;
+ $meta->{length} = length($$raw);
+ $meta->{has_newlines} = $$raw =~ /\n/ ? 1 : 0;
+
+ # only do file checks if it looks like a filename
+ if ( !$meta->{has_newlines} and $meta->{length} < 1024 ) {
+ my $file = {};
+ $file->{exists} = -e $source ? 1 : 0;
+ if ( $file->{exists} ) {
+ $meta->{file} = $file;
+
+ # avoid extra system calls (see `perldoc -f -X`)
+ $file->{stat} = [ stat(_) ];
+ $file->{empty} = -z _ ? 1 : 0;
+ $file->{size} = -s _;
+ $file->{text} = -T _ ? 1 : 0;
+ $file->{binary} = -B _ ? 1 : 0;
+ $file->{read} = -r _ ? 1 : 0;
+ $file->{write} = -w _ ? 1 : 0;
+ $file->{execute} = -x _ ? 1 : 0;
+ $file->{setuid} = -u _ ? 1 : 0;
+ $file->{setgid} = -g _ ? 1 : 0;
+ $file->{sticky} = -k _ ? 1 : 0;
+
+ $meta->{is_file} = $file->{is_file} = -f _ ? 1 : 0;
+ $meta->{is_dir} = $file->{is_dir} = -d _ ? 1 : 0;
+
+ # symlink check requires another system call
+ $meta->{is_symlink} = $file->{is_symlink}
+ = -l $source ? 1 : 0;
+ if ( $file->{is_symlink} ) {
+ $file->{lstat} = [ lstat(_) ];
+ }
+
+ # put together some common info about the file
+ ( $file->{basename}, $file->{dir}, $file->{ext} )
+ = map { defined $_ ? $_ : '' }
+ fileparse( $source, qr/\.[^.]*/ );
+ $file->{lc_ext} = lc( $file->{ext} );
+ $file->{basename} .= $file->{ext} if $file->{ext};
+
+ if ( !$file->{is_dir} && $file->{read} ) {
+ eval { $file->{shebang} = $self->shebang($$raw); };
+ if ( my $e = $@ ) {
+ warn $e;
+ }
+ }
+ }
+ }
+ }
+ elsif ( $meta->{is_array} ) {
+ $meta->{size} = $#$raw + 1;
+ }
+ elsif ( $meta->{is_hash} ) {
+ ; # do nothing
+ }
+
+ return $meta;
+}
+
+=head3 C<shebang>
+
+Get the shebang line for a script file.
+
+ my $shebang = TAP::Parser::Source->shebang( $some_script );
+
+May be called as a class method
+
+=cut
+
+{
+
+ # Global shebang cache.
+ my %shebang_for;
+
+ sub _read_shebang {
+ my ( $class, $file ) = @_;
+ open my $fh, '<', $file or die "Can't read $file: $!\n";
+
+ # Might be a binary file - so read a fixed number of bytes.
+ my $got = read $fh, my ($buf), BLK_SIZE;
+ defined $got or die "I/O error: $!\n";
+ return $1 if $buf =~ /(.*)/;
+ return;
+ }
+
+ sub shebang {
+ my ( $class, $file ) = @_;
+ $shebang_for{$file} = $class->_read_shebang($file)
+ unless exists $shebang_for{$file};
+ return $shebang_for{$file};
+ }
+}
+
+=head3 C<config_for>
+
+ my $config = $source->config_for( $class );
+
+Returns L</config> for the $class given. Class names may be fully qualified
+or abbreviated, eg:
+
+ # these are equivalent
+ $source->config_for( 'Perl' );
+ $source->config_for( 'TAP::Parser::SourceHandler::Perl' );
+
+If a fully qualified $class is given, its abbreviated version is checked first.
+
+=cut
+
+sub config_for {
+ my ( $self, $class ) = @_;
+ my ($abbrv_class) = ( $class =~ /(?:\:\:)?(\w+)$/ );
+ my $config = $self->config->{$abbrv_class} || $self->config->{$class};
+ return $config;
+}
+
+1;
+
+__END__
+
+=head1 AUTHORS
+
+Steve Purkis.
+
+=head1 SEE ALSO
+
+L<TAP::Object>,
+L<TAP::Parser>,
+L<TAP::Parser::IteratorFactory>,
+L<TAP::Parser::SourceHandler>
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler.pm
new file mode 100755
index 00000000000..4d537550c21
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler.pm
@@ -0,0 +1,191 @@
+package TAP::Parser::SourceHandler;
+
+use strict;
+use warnings;
+
+use TAP::Parser::Iterator ();
+use base 'TAP::Object';
+
+=head1 NAME
+
+TAP::Parser::SourceHandler - Base class for different TAP source handlers
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ # abstract class - don't use directly!
+ # see TAP::Parser::IteratorFactory for general usage
+
+ # must be sub-classed for use
+ package MySourceHandler;
+ use base 'TAP::Parser::SourceHandler';
+ sub can_handle { return $confidence_level }
+ sub make_iterator { return $iterator }
+
+ # see example below for more details
+
+=head1 DESCRIPTION
+
+This is an abstract base class for L<TAP::Parser::Source> handlers / handlers.
+
+A C<TAP::Parser::SourceHandler> does whatever is necessary to produce & capture
+a stream of TAP from the I<raw> source, and package it up in a
+L<TAP::Parser::Iterator> for the parser to consume.
+
+C<SourceHandlers> must implement the I<source detection & handling> interface
+used by L<TAP::Parser::IteratorFactory>. At 2 methods, the interface is pretty
+simple: L</can_handle> and L</make_source>.
+
+Unless you're writing a new L<TAP::Parser::SourceHandler>, a plugin, or
+subclassing L<TAP::Parser>, you probably won't need to use this module directly.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<can_handle>
+
+I<Abstract method>.
+
+ my $vote = $class->can_handle( $source );
+
+C<$source> is a L<TAP::Parser::Source>.
+
+Returns a number between C<0> & C<1> reflecting how confidently the raw source
+can be handled. For example, C<0> means the source cannot handle it, C<0.5>
+means it may be able to, and C<1> means it definitely can. See
+L<TAP::Parser::IteratorFactory/detect_source> for details on how this is used.
+
+=cut
+
+sub can_handle {
+ my ( $class, $args ) = @_;
+ $class->_croak(
+ "Abstract method 'can_handle' not implemented for $class!");
+ return;
+}
+
+=head3 C<make_iterator>
+
+I<Abstract method>.
+
+ my $iterator = $class->make_iterator( $source );
+
+C<$source> is a L<TAP::Parser::Source>.
+
+Returns a new L<TAP::Parser::Iterator> object for use by the L<TAP::Parser>.
+C<croak>s on error.
+
+=cut
+
+sub make_iterator {
+ my ( $class, $args ) = @_;
+ $class->_croak(
+ "Abstract method 'make_iterator' not implemented for $class!");
+ return;
+}
+1;
+
+__END__
+
+=head1 SUBCLASSING
+
+Please see L<TAP::Parser/SUBCLASSING> for a subclassing overview, and any
+of the subclasses that ship with this module as an example. What follows is
+a quick overview.
+
+Start by familiarizing yourself with L<TAP::Parser::Source> and
+L<TAP::Parser::IteratorFactory>. L<TAP::Parser::SourceHandler::RawTAP> is
+the easiest sub-class to use as an example.
+
+It's important to point out that if you want your subclass to be automatically
+used by L<TAP::Parser> you'll have to and make sure it gets loaded somehow.
+If you're using L<prove> you can write an L<App::Prove> plugin. If you're
+using L<TAP::Parser> or L<TAP::Harness> directly (e.g. through a custom script,
+L<ExtUtils::MakeMaker>, or L<Module::Build>) you can use the C<config> option
+which will cause L<TAP::Parser::IteratorFactory/load_sources> to load your
+subclass).
+
+Don't forget to register your class with
+L<TAP::Parser::IteratorFactory/register_handler>.
+
+=head2 Example
+
+ package MySourceHandler;
+
+ use strict;
+
+ use MySourceHandler; # see TAP::Parser::SourceHandler
+ use TAP::Parser::IteratorFactory;
+
+ use base 'TAP::Parser::SourceHandler';
+
+ TAP::Parser::IteratorFactory->register_handler( __PACKAGE__ );
+
+ sub can_handle {
+ my ( $class, $src ) = @_;
+ my $meta = $src->meta;
+ my $config = $src->config_for( $class );
+
+ if ($config->{accept_all}) {
+ return 1.0;
+ } elsif (my $file = $meta->{file}) {
+ return 0.0 unless $file->{exists};
+ return 1.0 if $file->{lc_ext} eq '.tap';
+ return 0.9 if $file->{shebang} && $file->{shebang} =~ /^#!.+tap/;
+ return 0.5 if $file->{text};
+ return 0.1 if $file->{binary};
+ } elsif ($meta->{scalar}) {
+ return 0.8 if $$raw_source_ref =~ /\d\.\.\d/;
+ return 0.6 if $meta->{has_newlines};
+ } elsif ($meta->{array}) {
+ return 0.8 if $meta->{size} < 5;
+ return 0.6 if $raw_source_ref->[0] =~ /foo/;
+ return 0.5;
+ } elsif ($meta->{hash}) {
+ return 0.6 if $raw_source_ref->{foo};
+ return 0.2;
+ }
+
+ return 0;
+ }
+
+ sub make_iterator {
+ my ($class, $source) = @_;
+ # this is where you manipulate the source and
+ # capture the stream of TAP in an iterator
+ # either pick a TAP::Parser::Iterator::* or write your own...
+ my $iterator = TAP::Parser::Iterator::Array->new([ 'foo', 'bar' ]);
+ return $iterator;
+ }
+
+ 1;
+
+=head1 AUTHORS
+
+TAPx Developers.
+
+Source detection stuff added by Steve Purkis
+
+=head1 SEE ALSO
+
+L<TAP::Object>,
+L<TAP::Parser>,
+L<TAP::Parser::Source>,
+L<TAP::Parser::Iterator>,
+L<TAP::Parser::IteratorFactory>,
+L<TAP::Parser::SourceHandler::Executable>,
+L<TAP::Parser::SourceHandler::Perl>,
+L<TAP::Parser::SourceHandler::File>,
+L<TAP::Parser::SourceHandler::Handle>,
+L<TAP::Parser::SourceHandler::RawTAP>
+
+=cut
+
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Executable.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Executable.pm
new file mode 100755
index 00000000000..e1915457326
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Executable.pm
@@ -0,0 +1,187 @@
+package TAP::Parser::SourceHandler::Executable;
+
+use strict;
+use warnings;
+
+use File::Spec;
+
+use TAP::Parser::IteratorFactory ();
+use TAP::Parser::Iterator::Process ();
+
+use base 'TAP::Parser::SourceHandler';
+
+TAP::Parser::IteratorFactory->register_handler(__PACKAGE__);
+
+=head1 NAME
+
+TAP::Parser::SourceHandler::Executable - Stream output from an executable TAP source
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Source;
+ use TAP::Parser::SourceHandler::Executable;
+
+ my $source = TAP::Parser::Source->new->raw(['/usr/bin/ruby', 'mytest.rb']);
+ $source->assemble_meta;
+
+ my $class = 'TAP::Parser::SourceHandler::Executable';
+ my $vote = $class->can_handle( $source );
+ my $iter = $class->make_iterator( $source );
+
+=head1 DESCRIPTION
+
+This is an I<executable> L<TAP::Parser::SourceHandler> - it has 2 jobs:
+
+1. Figure out if the L<TAP::Parser::Source> it's given is an executable
+ command (L</can_handle>).
+
+2. Creates an iterator for executable commands (L</make_iterator>).
+
+Unless you're writing a plugin or subclassing L<TAP::Parser>, you
+probably won't need to use this module directly.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<can_handle>
+
+ my $vote = $class->can_handle( $source );
+
+Only votes if $source looks like an executable file. Casts the
+following votes:
+
+ 0.9 if it's a hash with an 'exec' key
+ 0.8 if it's a .bat file
+ 0.75 if it's got an execute bit set
+
+=cut
+
+sub can_handle {
+ my ( $class, $src ) = @_;
+ my $meta = $src->meta;
+
+ if ( $meta->{is_file} ) {
+ my $file = $meta->{file};
+
+ return 0.85 if $file->{execute} && $file->{binary};
+ return 0.8 if $file->{lc_ext} eq '.bat';
+ return 0.25 if $file->{execute};
+ }
+ elsif ( $meta->{is_hash} ) {
+ return 0.9 if $src->raw->{exec};
+ }
+
+ return 0;
+}
+
+=head3 C<make_iterator>
+
+ my $iterator = $class->make_iterator( $source );
+
+Returns a new L<TAP::Parser::Iterator::Process> for the source.
+C<$source-E<gt>raw> must be in one of the following forms:
+
+ { exec => [ @exec ] }
+
+ [ @exec ]
+
+ $file
+
+C<croak>s on error.
+
+=cut
+
+sub make_iterator {
+ my ( $class, $source ) = @_;
+ my $meta = $source->meta;
+
+ my @command;
+ if ( $meta->{is_hash} ) {
+ @command = @{ $source->raw->{exec} || [] };
+ }
+ elsif ( $meta->{is_scalar} ) {
+ @command = File::Spec->rel2abs( ${ $source->raw } )
+ if ${ $source->raw };
+ }
+ elsif ( $meta->{is_array} ) {
+ @command = @{ $source->raw };
+ }
+
+ $class->_croak('No command found in $source->raw!') unless @command;
+
+ $class->_autoflush( \*STDOUT );
+ $class->_autoflush( \*STDERR );
+
+ push @command, @{ $source->test_args || [] };
+
+ return $class->iterator_class->new(
+ { command => \@command,
+ merge => $source->merge
+ }
+ );
+}
+
+=head3 C<iterator_class>
+
+The class of iterator to use, override if you're sub-classing. Defaults
+to L<TAP::Parser::Iterator::Process>.
+
+=cut
+
+use constant iterator_class => 'TAP::Parser::Iterator::Process';
+
+# Turns on autoflush for the handle passed
+sub _autoflush {
+ my ( $class, $flushed ) = @_;
+ my $old_fh = select $flushed;
+ $| = 1;
+ select $old_fh;
+}
+
+1;
+
+=head1 SUBCLASSING
+
+Please see L<TAP::Parser/SUBCLASSING> for a subclassing overview.
+
+=head2 Example
+
+ package MyRubySourceHandler;
+
+ use strict;
+
+ use Carp qw( croak );
+ use TAP::Parser::SourceHandler::Executable;
+
+ use base 'TAP::Parser::SourceHandler::Executable';
+
+ # expect $handler->(['mytest.rb', 'cmdline', 'args']);
+ sub make_iterator {
+ my ($self, $source) = @_;
+ my @test_args = @{ $source->test_args };
+ my $rb_file = $test_args[0];
+ croak("error: Ruby file '$rb_file' not found!") unless (-f $rb_file);
+ return $self->SUPER::raw_source(['/usr/bin/ruby', @test_args]);
+ }
+
+=head1 SEE ALSO
+
+L<TAP::Object>,
+L<TAP::Parser>,
+L<TAP::Parser::IteratorFactory>,
+L<TAP::Parser::SourceHandler>,
+L<TAP::Parser::SourceHandler::Perl>,
+L<TAP::Parser::SourceHandler::File>,
+L<TAP::Parser::SourceHandler::Handle>,
+L<TAP::Parser::SourceHandler::RawTAP>
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/File.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/File.pm
new file mode 100755
index 00000000000..9e9684e71f5
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/File.pm
@@ -0,0 +1,136 @@
+package TAP::Parser::SourceHandler::File;
+
+use strict;
+use warnings;
+
+use TAP::Parser::IteratorFactory ();
+use TAP::Parser::Iterator::Stream ();
+
+use base 'TAP::Parser::SourceHandler';
+
+TAP::Parser::IteratorFactory->register_handler(__PACKAGE__);
+
+=head1 NAME
+
+TAP::Parser::SourceHandler::File - Stream TAP from a text file.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Source;
+ use TAP::Parser::SourceHandler::File;
+
+ my $source = TAP::Parser::Source->new->raw( \'file.tap' );
+ $source->assemble_meta;
+
+ my $class = 'TAP::Parser::SourceHandler::File';
+ my $vote = $class->can_handle( $source );
+ my $iter = $class->make_iterator( $source );
+
+=head1 DESCRIPTION
+
+This is a I<raw TAP stored in a file> L<TAP::Parser::SourceHandler> - it has 2 jobs:
+
+1. Figure out if the I<raw> source it's given is a file containing raw TAP
+output. See L<TAP::Parser::IteratorFactory> for more details.
+
+2. Takes raw TAP from the text file given, and converts into an iterator.
+
+Unless you're writing a plugin or subclassing L<TAP::Parser>, you probably
+won't need to use this module directly.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<can_handle>
+
+ my $vote = $class->can_handle( $source );
+
+Only votes if $source looks like a regular file. Casts the following votes:
+
+ 0.9 if it's a .tap file
+ 0.9 if it has an extension matching any given in user config.
+
+=cut
+
+sub can_handle {
+ my ( $class, $src ) = @_;
+ my $meta = $src->meta;
+ my $config = $src->config_for($class);
+
+ return 0 unless $meta->{is_file};
+ my $file = $meta->{file};
+ return 0.9 if $file->{lc_ext} eq '.tap';
+
+ if ( my $exts = $config->{extensions} ) {
+ my @exts = ref $exts eq 'ARRAY' ? @$exts : $exts;
+ return 0.9 if grep { lc($_) eq $file->{lc_ext} } @exts;
+ }
+
+ return 0;
+}
+
+=head3 C<make_iterator>
+
+ my $iterator = $class->make_iterator( $source );
+
+Returns a new L<TAP::Parser::Iterator::Stream> for the source. C<croak>s
+on error.
+
+=cut
+
+sub make_iterator {
+ my ( $class, $source ) = @_;
+
+ $class->_croak('$source->raw must be a scalar ref')
+ unless $source->meta->{is_scalar};
+
+ my $file = ${ $source->raw };
+ my $fh;
+ open( $fh, '<', $file )
+ or $class->_croak("error opening TAP source file '$file': $!");
+ return $class->iterator_class->new($fh);
+}
+
+=head3 C<iterator_class>
+
+The class of iterator to use, override if you're sub-classing. Defaults
+to L<TAP::Parser::Iterator::Stream>.
+
+=cut
+
+use constant iterator_class => 'TAP::Parser::Iterator::Stream';
+
+1;
+
+__END__
+
+=head1 CONFIGURATION
+
+ {
+ extensions => [ @case_insensitive_exts_to_match ]
+ }
+
+=head1 SUBCLASSING
+
+Please see L<TAP::Parser/SUBCLASSING> for a subclassing overview.
+
+=head1 SEE ALSO
+
+L<TAP::Object>,
+L<TAP::Parser>,
+L<TAP::Parser::SourceHandler>,
+L<TAP::Parser::SourceHandler::Executable>,
+L<TAP::Parser::SourceHandler::Perl>,
+L<TAP::Parser::SourceHandler::Handle>,
+L<TAP::Parser::SourceHandler::RawTAP>
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Handle.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Handle.pm
new file mode 100755
index 00000000000..e01f8afa5b3
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Handle.pm
@@ -0,0 +1,124 @@
+package TAP::Parser::SourceHandler::Handle;
+
+use strict;
+use warnings;
+
+use TAP::Parser::IteratorFactory ();
+use TAP::Parser::Iterator::Stream ();
+
+use base 'TAP::Parser::SourceHandler';
+
+TAP::Parser::IteratorFactory->register_handler(__PACKAGE__);
+
+=head1 NAME
+
+TAP::Parser::SourceHandler::Handle - Stream TAP from an IO::Handle or a GLOB.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Source;
+ use TAP::Parser::SourceHandler::Executable;
+
+ my $source = TAP::Parser::Source->new->raw( \*TAP_FILE );
+ $source->assemble_meta;
+
+ my $class = 'TAP::Parser::SourceHandler::Handle';
+ my $vote = $class->can_handle( $source );
+ my $iter = $class->make_iterator( $source );
+
+=head1 DESCRIPTION
+
+This is a I<raw TAP stored in an IO Handle> L<TAP::Parser::SourceHandler> class. It
+has 2 jobs:
+
+1. Figure out if the L<TAP::Parser::Source> it's given is an L<IO::Handle> or
+GLOB containing raw TAP output (L</can_handle>).
+
+2. Creates an iterator for IO::Handle's & globs (L</make_iterator>).
+
+Unless you're writing a plugin or subclassing L<TAP::Parser>, you probably
+won't need to use this module directly.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<can_handle>
+
+ my $vote = $class->can_handle( $source );
+
+Casts the following votes:
+
+ 0.9 if $source is an IO::Handle
+ 0.8 if $source is a glob
+
+=cut
+
+sub can_handle {
+ my ( $class, $src ) = @_;
+ my $meta = $src->meta;
+
+ return 0.9
+ if $meta->{is_object}
+ && UNIVERSAL::isa( $src->raw, 'IO::Handle' );
+
+ return 0.8 if $meta->{is_glob};
+
+ return 0;
+}
+
+=head3 C<make_iterator>
+
+ my $iterator = $class->make_iterator( $source );
+
+Returns a new L<TAP::Parser::Iterator::Stream> for the source.
+
+=cut
+
+sub make_iterator {
+ my ( $class, $source ) = @_;
+
+ $class->_croak('$source->raw must be a glob ref or an IO::Handle')
+ unless $source->meta->{is_glob}
+ || UNIVERSAL::isa( $source->raw, 'IO::Handle' );
+
+ return $class->iterator_class->new( $source->raw );
+}
+
+=head3 C<iterator_class>
+
+The class of iterator to use, override if you're sub-classing. Defaults
+to L<TAP::Parser::Iterator::Stream>.
+
+=cut
+
+use constant iterator_class => 'TAP::Parser::Iterator::Stream';
+
+1;
+
+=head1 SUBCLASSING
+
+Please see L<TAP::Parser/SUBCLASSING> for a subclassing overview.
+
+=head1 SEE ALSO
+
+L<TAP::Object>,
+L<TAP::Parser>,
+L<TAP::Parser::Iterator>,
+L<TAP::Parser::Iterator::Stream>,
+L<TAP::Parser::IteratorFactory>,
+L<TAP::Parser::SourceHandler>,
+L<TAP::Parser::SourceHandler::Executable>,
+L<TAP::Parser::SourceHandler::Perl>,
+L<TAP::Parser::SourceHandler::File>,
+L<TAP::Parser::SourceHandler::RawTAP>
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Perl.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Perl.pm
new file mode 100755
index 00000000000..6d9e91d0bd7
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/Perl.pm
@@ -0,0 +1,372 @@
+package TAP::Parser::SourceHandler::Perl;
+
+use strict;
+use warnings;
+use Config;
+
+use constant IS_WIN32 => ( $^O =~ /^(MS)?Win32$/ );
+use constant IS_VMS => ( $^O eq 'VMS' );
+
+use TAP::Parser::IteratorFactory ();
+use TAP::Parser::Iterator::Process ();
+use Text::ParseWords qw(shellwords);
+
+use base 'TAP::Parser::SourceHandler::Executable';
+
+TAP::Parser::IteratorFactory->register_handler(__PACKAGE__);
+
+=head1 NAME
+
+TAP::Parser::SourceHandler::Perl - Stream TAP from a Perl executable
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Source;
+ use TAP::Parser::SourceHandler::Perl;
+
+ my $source = TAP::Parser::Source->new->raw( \'script.pl' );
+ $source->assemble_meta;
+
+ my $class = 'TAP::Parser::SourceHandler::Perl';
+ my $vote = $class->can_handle( $source );
+ my $iter = $class->make_iterator( $source );
+
+=head1 DESCRIPTION
+
+This is a I<Perl> L<TAP::Parser::SourceHandler> - it has 2 jobs:
+
+1. Figure out if the L<TAP::Parser::Source> it's given is actually a Perl
+script (L</can_handle>).
+
+2. Creates an iterator for Perl sources (L</make_iterator>).
+
+Unless you're writing a plugin or subclassing L<TAP::Parser>, you probably
+won't need to use this module directly.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<can_handle>
+
+ my $vote = $class->can_handle( $source );
+
+Only votes if $source looks like a file. Casts the following votes:
+
+ 0.9 if it has a shebang ala "#!...perl"
+ 0.3 if it has any shebang
+ 0.8 if it's a .t file
+ 0.9 if it's a .pl file
+ 0.75 if it's in a 't' directory
+ 0.25 by default (backwards compat)
+
+=cut
+
+sub can_handle {
+ my ( $class, $source ) = @_;
+ my $meta = $source->meta;
+
+ return 0 unless $meta->{is_file};
+ my $file = $meta->{file};
+
+ my $shebang = $file->{shebang} || '';
+
+ if ( $shebang =~ /^#!/ ) {
+ return 0.9 if $shebang =~ /^#!.*\bperl/;
+
+ # We favour Perl as the interpreter for any shebang to preserve
+ # previous semantics: we used to execute everything via Perl and
+ # relied on it to pass the shebang off to the appropriate
+ # interpreter.
+ return 0.3;
+ }
+
+ return 0.8 if $file->{lc_ext} eq '.t'; # vote higher than Executable
+ return 0.9 if $file->{lc_ext} eq '.pl';
+
+ return 0.75 if $file->{dir} =~ /^t\b/; # vote higher than Executable
+
+ # backwards compat, always vote:
+ return 0.25;
+}
+
+=head3 C<make_iterator>
+
+ my $iterator = $class->make_iterator( $source );
+
+Constructs & returns a new L<TAP::Parser::Iterator::Process> for the source.
+Assumes C<$source-E<gt>raw> contains a reference to the perl script. C<croak>s
+if the file could not be found.
+
+The command to run is built as follows:
+
+ $perl @switches $perl_script @test_args
+
+The perl command to use is determined by L</get_perl>. The command generated
+is guaranteed to preserve:
+
+ PERL5LIB
+ PERL5OPT
+ Taint Mode, if set in the script's shebang
+
+I<Note:> the command generated will I<not> respect any shebang line defined in
+your Perl script. This is only a problem if you have compiled a custom version
+of Perl or if you want to use a specific version of Perl for one test and a
+different version for another, for example:
+
+ #!/path/to/a/custom_perl --some --args
+ #!/usr/local/perl-5.6/bin/perl -w
+
+Currently you need to write a plugin to get around this.
+
+=cut
+
+sub _autoflush_stdhandles {
+ my ($class) = @_;
+
+ $class->_autoflush( \*STDOUT );
+ $class->_autoflush( \*STDERR );
+}
+
+sub make_iterator {
+ my ( $class, $source ) = @_;
+ my $meta = $source->meta;
+ my $perl_script = ${ $source->raw };
+
+ $class->_croak("Cannot find ($perl_script)") unless $meta->{is_file};
+
+ # TODO: does this really need to be done here?
+ $class->_autoflush_stdhandles;
+
+ my ( $libs, $switches )
+ = $class->_mangle_switches(
+ $class->_filter_libs( $class->_switches($source) ) );
+
+ $class->_run( $source, $libs, $switches );
+}
+
+
+sub _has_taint_switch {
+ my( $class, $switches ) = @_;
+
+ my $has_taint = grep { $_ eq "-T" || $_ eq "-t" } @{$switches};
+ return $has_taint ? 1 : 0;
+}
+
+sub _mangle_switches {
+ my ( $class, $libs, $switches ) = @_;
+
+ # Taint mode ignores environment variables so we must retranslate
+ # PERL5LIB as -I switches and place PERL5OPT on the command line
+ # in order that it be seen.
+ if ( $class->_has_taint_switch($switches) ) {
+ my @perl5lib = defined $ENV{PERL5LIB} ? split /$Config{path_sep}/, $ENV{PERL5LIB} : ();
+ return (
+ $libs,
+ [ @{$switches},
+ $class->_libs2switches([@$libs, @perl5lib]),
+ defined $ENV{PERL5OPT} ? shellwords( $ENV{PERL5OPT} ) : ()
+ ],
+ );
+ }
+
+ return ( $libs, $switches );
+}
+
+sub _filter_libs {
+ my ( $class, @switches ) = @_;
+
+ my $path_sep = $Config{path_sep};
+ my $path_re = qr{$path_sep};
+
+ # Filter out any -I switches to be handled as libs later.
+ #
+ # Nasty kludge. It might be nicer if we got the libs separately
+ # although at least this way we find any -I switches that were
+ # supplied other then as explicit libs.
+ #
+ # We filter out any names containing colons because they will break
+ # PERL5LIB
+ my @libs;
+ my @filtered_switches;
+ for (@switches) {
+ if ( !/$path_re/ && m/ ^ ['"]? -I ['"]? (.*?) ['"]? $ /x ) {
+ push @libs, $1;
+ }
+ else {
+ push @filtered_switches, $_;
+ }
+ }
+
+ return \@libs, \@filtered_switches;
+}
+
+sub _iterator_hooks {
+ my ( $class, $source, $libs, $switches ) = @_;
+
+ my $setup = sub {
+ if ( @{$libs} and !$class->_has_taint_switch($switches) ) {
+ $ENV{PERL5LIB} = join(
+ $Config{path_sep}, grep {defined} @{$libs},
+ $ENV{PERL5LIB}
+ );
+ }
+ };
+
+ # VMS environment variables aren't guaranteed to reset at the end of
+ # the process, so we need to put PERL5LIB back.
+ my $previous = $ENV{PERL5LIB};
+ my $teardown = sub {
+ if ( defined $previous ) {
+ $ENV{PERL5LIB} = $previous;
+ }
+ else {
+ delete $ENV{PERL5LIB};
+ }
+ };
+
+ return ( $setup, $teardown );
+}
+
+sub _run {
+ my ( $class, $source, $libs, $switches ) = @_;
+
+ my @command = $class->_get_command_for_switches( $source, $switches )
+ or $class->_croak("No command found!");
+
+ my ( $setup, $teardown ) = $class->_iterator_hooks( $source, $libs, $switches );
+
+ return $class->_create_iterator( $source, \@command, $setup, $teardown );
+}
+
+sub _create_iterator {
+ my ( $class, $source, $command, $setup, $teardown ) = @_;
+
+ return TAP::Parser::Iterator::Process->new(
+ { command => $command,
+ merge => $source->merge,
+ setup => $setup,
+ teardown => $teardown,
+ }
+ );
+}
+
+sub _get_command_for_switches {
+ my ( $class, $source, $switches ) = @_;
+ my $file = ${ $source->raw };
+ my @args = @{ $source->test_args || [] };
+ my $command = $class->get_perl;
+
+ # XXX don't need to quote if we treat the parts as atoms (except maybe vms)
+ #$file = qq["$file"] if ( $file =~ /\s/ ) && ( $file !~ /^".*"$/ );
+ my @command = ( $command, @{$switches}, $file, @args );
+ return @command;
+}
+
+sub _libs2switches {
+ my $class = shift;
+ return map {"-I$_"} grep {$_} @{ $_[0] };
+}
+
+=head3 C<get_taint>
+
+Decode any taint switches from a Perl shebang line.
+
+ # $taint will be 't'
+ my $taint = TAP::Parser::SourceHandler::Perl->get_taint( '#!/usr/bin/perl -t' );
+
+ # $untaint will be undefined
+ my $untaint = TAP::Parser::SourceHandler::Perl->get_taint( '#!/usr/bin/perl' );
+
+=cut
+
+sub get_taint {
+ my ( $class, $shebang ) = @_;
+ return
+ unless defined $shebang
+ && $shebang =~ /^#!.*\bperl.*\s-\w*([Tt]+)/;
+ return $1;
+}
+
+sub _switches {
+ my ( $class, $source ) = @_;
+ my $file = ${ $source->raw };
+ my @switches = @{ $source->switches || [] };
+ my $shebang = $source->meta->{file}->{shebang};
+ return unless defined $shebang;
+
+ my $taint = $class->get_taint($shebang);
+ push @switches, "-$taint" if defined $taint;
+
+ # Quote the argument if we're VMS, since VMS will downcase anything
+ # not quoted.
+ if (IS_VMS) {
+ for (@switches) {
+ $_ = qq["$_"];
+ }
+ }
+
+ return @switches;
+}
+
+=head3 C<get_perl>
+
+Gets the version of Perl currently running the test suite.
+
+=cut
+
+sub get_perl {
+ my $class = shift;
+ return $ENV{HARNESS_PERL} if defined $ENV{HARNESS_PERL};
+ return qq["$^X"] if IS_WIN32 && ( $^X =~ /[^\w\.\/\\]/ );
+ return $^X;
+}
+
+1;
+
+__END__
+
+=head1 SUBCLASSING
+
+Please see L<TAP::Parser/SUBCLASSING> for a subclassing overview.
+
+=head2 Example
+
+ package MyPerlSourceHandler;
+
+ use strict;
+
+ use TAP::Parser::SourceHandler::Perl;
+
+ use base 'TAP::Parser::SourceHandler::Perl';
+
+ # use the version of perl from the shebang line in the test file
+ sub get_perl {
+ my $self = shift;
+ if (my $shebang = $self->shebang( $self->{file} )) {
+ $shebang =~ /^#!(.*\bperl.*?)(?:(?:\s)|(?:$))/;
+ return $1 if $1;
+ }
+ return $self->SUPER::get_perl(@_);
+ }
+
+=head1 SEE ALSO
+
+L<TAP::Object>,
+L<TAP::Parser>,
+L<TAP::Parser::IteratorFactory>,
+L<TAP::Parser::SourceHandler>,
+L<TAP::Parser::SourceHandler::Executable>,
+L<TAP::Parser::SourceHandler::File>,
+L<TAP::Parser::SourceHandler::Handle>,
+L<TAP::Parser::SourceHandler::RawTAP>
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/RawTAP.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/RawTAP.pm
new file mode 100755
index 00000000000..c861de27171
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/SourceHandler/RawTAP.pm
@@ -0,0 +1,130 @@
+package TAP::Parser::SourceHandler::RawTAP;
+
+use strict;
+use warnings;
+
+use TAP::Parser::IteratorFactory ();
+use TAP::Parser::Iterator::Array ();
+
+use base 'TAP::Parser::SourceHandler';
+
+TAP::Parser::IteratorFactory->register_handler(__PACKAGE__);
+
+=head1 NAME
+
+TAP::Parser::SourceHandler::RawTAP - Stream output from raw TAP in a scalar/array ref.
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::Source;
+ use TAP::Parser::SourceHandler::RawTAP;
+
+ my $source = TAP::Parser::Source->new->raw( \"1..1\nok 1\n" );
+ $source->assemble_meta;
+
+ my $class = 'TAP::Parser::SourceHandler::RawTAP';
+ my $vote = $class->can_handle( $source );
+ my $iter = $class->make_iterator( $source );
+
+=head1 DESCRIPTION
+
+This is a I<raw TAP output> L<TAP::Parser::SourceHandler> - it has 2 jobs:
+
+1. Figure out if the L<TAP::Parser::Source> it's given is raw TAP output
+(L</can_handle>).
+
+2. Creates an iterator for raw TAP output (L</make_iterator>).
+
+Unless you're writing a plugin or subclassing L<TAP::Parser>, you probably
+won't need to use this module directly.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<can_handle>
+
+ my $vote = $class->can_handle( $source );
+
+Only votes if $source is an array, or a scalar with newlines. Casts the
+following votes:
+
+ 0.9 if it's a scalar with '..' in it
+ 0.7 if it's a scalar with 'ok' in it
+ 0.3 if it's just a scalar with newlines
+ 0.5 if it's an array
+
+=cut
+
+sub can_handle {
+ my ( $class, $src ) = @_;
+ my $meta = $src->meta;
+
+ return 0 if $meta->{file};
+ if ( $meta->{is_scalar} ) {
+ return 0 unless $meta->{has_newlines};
+ return 0.9 if ${ $src->raw } =~ /\d\.\.\d/;
+ return 0.7 if ${ $src->raw } =~ /ok/;
+ return 0.3;
+ }
+ elsif ( $meta->{is_array} ) {
+ return 0.5;
+ }
+ return 0;
+}
+
+=head3 C<make_iterator>
+
+ my $iterator = $class->make_iterator( $source );
+
+Returns a new L<TAP::Parser::Iterator::Array> for the source.
+C<$source-E<gt>raw> must be an array ref, or a scalar ref.
+
+C<croak>s on error.
+
+=cut
+
+sub make_iterator {
+ my ( $class, $src ) = @_;
+ my $meta = $src->meta;
+
+ my $tap_array;
+ if ( $meta->{is_scalar} ) {
+ $tap_array = [ split "\n" => ${ $src->raw } ];
+ }
+ elsif ( $meta->{is_array} ) {
+ $tap_array = $src->raw;
+ }
+
+ $class->_croak('No raw TAP found in $source->raw')
+ unless scalar $tap_array;
+
+ return TAP::Parser::Iterator::Array->new($tap_array);
+}
+
+1;
+
+=head1 SUBCLASSING
+
+Please see L<TAP::Parser/SUBCLASSING> for a subclassing overview.
+
+=head1 SEE ALSO
+
+L<TAP::Object>,
+L<TAP::Parser>,
+L<TAP::Parser::IteratorFactory>,
+L<TAP::Parser::SourceHandler>,
+L<TAP::Parser::SourceHandler::Executable>,
+L<TAP::Parser::SourceHandler::Perl>,
+L<TAP::Parser::SourceHandler::File>,
+L<TAP::Parser::SourceHandler::Handle>
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/YAMLish/Reader.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/YAMLish/Reader.pm
new file mode 100755
index 00000000000..0250ad29830
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/YAMLish/Reader.pm
@@ -0,0 +1,347 @@
+package TAP::Parser::YAMLish::Reader;
+
+use strict;
+use warnings;
+
+use base 'TAP::Object';
+
+our $VERSION = '3.48';
+
+ # No EBCDIC support on early perls
+*to_native = (ord "A" == 65 || $] < 5.008)
+ ? sub { return shift }
+ : sub { utf8::unicode_to_native(shift) };
+
+# TODO:
+# Handle blessed object syntax
+
+# Printable characters for escapes
+my %UNESCAPES = (
+ z => "\x00", a => "\a", t => "\t",
+ n => "\n", v => "\cK", f => "\f",
+ r => "\r", e => "\e", '\\' => '\\',
+);
+
+my $QQ_STRING = qr{ " (?:\\. | [^"])* " }x;
+my $HASH_LINE = qr{ ^ ($QQ_STRING|\S+) \s* : \s* (?: (.+?) \s* )? $ }x;
+my $IS_HASH_KEY = qr{ ^ [\w\'\"] }x;
+my $IS_END_YAML = qr{ ^ \.\.\. \s* $ }x;
+my $IS_QQ_STRING = qr{ ^ $QQ_STRING $ }x;
+my $IS_ARRAY_LINE = qr{ ^ - \s* ($QQ_STRING|\S+) }x;
+
+# new() implementation supplied by TAP::Object
+
+sub read {
+ my $self = shift;
+ my $obj = shift;
+
+ die "Must have a code reference to read input from"
+ unless ref $obj eq 'CODE';
+
+ $self->{reader} = $obj;
+ $self->{capture} = [];
+
+ # Prime the reader
+ $self->_next;
+ return unless $self->{next};
+
+ my $doc = $self->_read;
+
+ # The terminator is mandatory otherwise we'd consume a line from the
+ # iterator that doesn't belong to us. If we want to remove this
+ # restriction we'll have to implement look-ahead in the iterators.
+ # Which might not be a bad idea.
+ my $dots = $self->_peek;
+ die "Missing '...' at end of YAMLish"
+ unless defined $dots
+ and $dots =~ $IS_END_YAML;
+
+ delete $self->{reader};
+ delete $self->{next};
+
+ return $doc;
+}
+
+sub get_raw { join( "\n", grep defined, @{ shift->{capture} || [] } ) . "\n" }
+
+sub _peek {
+ my $self = shift;
+ return $self->{next} unless wantarray;
+ my $line = $self->{next};
+ $line =~ /^ (\s*) (.*) $ /x;
+ return ( $2, length $1 );
+}
+
+sub _next {
+ my $self = shift;
+ die "_next called with no reader"
+ unless $self->{reader};
+ my $line = $self->{reader}->();
+ $self->{next} = $line;
+ push @{ $self->{capture} }, $line;
+}
+
+sub _read {
+ my $self = shift;
+
+ my $line = $self->_peek;
+
+ # Do we have a document header?
+ if ( $line =~ /^ --- (?: \s* (.+?)? \s* )? $/x ) {
+ $self->_next;
+
+ return $self->_read_scalar($1) if defined $1; # Inline?
+
+ my ( $next, $indent ) = $self->_peek;
+
+ if ( $next =~ /^ - /x ) {
+ return $self->_read_array($indent);
+ }
+ elsif ( $next =~ $IS_HASH_KEY ) {
+ return $self->_read_hash( $next, $indent );
+ }
+ elsif ( $next =~ $IS_END_YAML ) {
+ die "Premature end of YAMLish";
+ }
+ else {
+ die "Unsupported YAMLish syntax: '$next'";
+ }
+ }
+ else {
+ die "YAMLish document header not found";
+ }
+}
+
+# Parse a double quoted string
+sub _read_qq {
+ my $self = shift;
+ my $str = shift;
+
+ unless ( $str =~ s/^ " (.*?) " $/$1/x ) {
+ die "Internal: not a quoted string";
+ }
+
+ $str =~ s/\\"/"/gx;
+ $str =~ s/ \\ ( [tartan\\favez] | x([0-9a-fA-F]{2}) )
+ / (length($1) > 1) ? pack("H2", to_native($2))
+ : $UNESCAPES{$1} /gex;
+ return $str;
+}
+
+# Parse a scalar string to the actual scalar
+sub _read_scalar {
+ my $self = shift;
+ my $string = shift;
+
+ return undef if $string eq '~';
+ return {} if $string eq '{}';
+ return [] if $string eq '[]';
+
+ if ( $string eq '>' || $string eq '|' ) {
+
+ my ( $line, $indent ) = $self->_peek;
+ die "Multi-line scalar content missing" unless defined $line;
+
+ my @multiline = ($line);
+
+ while (1) {
+ $self->_next;
+ my ( $next, $ind ) = $self->_peek;
+ last if $ind < $indent;
+
+ my $pad = $string eq '|' ? ( ' ' x ( $ind - $indent ) ) : '';
+ push @multiline, $pad . $next;
+ }
+
+ return join( ( $string eq '>' ? ' ' : "\n" ), @multiline ) . "\n";
+ }
+
+ if ( $string =~ /^ ' (.*) ' $/x ) {
+ ( my $rv = $1 ) =~ s/''/'/g;
+ return $rv;
+ }
+
+ if ( $string =~ $IS_QQ_STRING ) {
+ return $self->_read_qq($string);
+ }
+
+ if ( $string =~ /^['"]/ ) {
+
+ # A quote with folding... we don't support that
+ die __PACKAGE__ . " does not support multi-line quoted scalars";
+ }
+
+ # Regular unquoted string
+ return $string;
+}
+
+sub _read_nested {
+ my $self = shift;
+
+ my ( $line, $indent ) = $self->_peek;
+
+ if ( $line =~ /^ -/x ) {
+ return $self->_read_array($indent);
+ }
+ elsif ( $line =~ $IS_HASH_KEY ) {
+ return $self->_read_hash( $line, $indent );
+ }
+ else {
+ die "Unsupported YAMLish syntax: '$line'";
+ }
+}
+
+# Parse an array
+sub _read_array {
+ my ( $self, $limit ) = @_;
+
+ my $ar = [];
+
+ while (1) {
+ my ( $line, $indent ) = $self->_peek;
+ last
+ if $indent < $limit
+ || !defined $line
+ || $line =~ $IS_END_YAML;
+
+ if ( $indent > $limit ) {
+ die "Array line over-indented";
+ }
+
+ if ( $line =~ /^ (- \s+) \S+ \s* : (?: \s+ | $ ) /x ) {
+ $indent += length $1;
+ $line =~ s/-\s+//;
+ push @$ar, $self->_read_hash( $line, $indent );
+ }
+ elsif ( $line =~ /^ - \s* (.+?) \s* $/x ) {
+ die "Unexpected start of YAMLish" if $line =~ /^---/;
+ $self->_next;
+ push @$ar, $self->_read_scalar($1);
+ }
+ elsif ( $line =~ /^ - \s* $/x ) {
+ $self->_next;
+ push @$ar, $self->_read_nested;
+ }
+ elsif ( $line =~ $IS_HASH_KEY ) {
+ $self->_next;
+ push @$ar, $self->_read_hash( $line, $indent, );
+ }
+ else {
+ die "Unsupported YAMLish syntax: '$line'";
+ }
+ }
+
+ return $ar;
+}
+
+sub _read_hash {
+ my ( $self, $line, $limit ) = @_;
+
+ my $indent;
+ my $hash = {};
+
+ while (1) {
+ die "Badly formed hash line: '$line'"
+ unless $line =~ $HASH_LINE;
+
+ my ( $key, $value ) = ( $self->_read_scalar($1), $2 );
+ $self->_next;
+
+ my ( $next_line, $next_indent ) = $self->_peek;
+
+ if ( defined $value ) {
+ $hash->{$key} = $self->_read_scalar($value);
+ }
+ elsif (not defined $value # no explicit undef ("~") given
+ and $next_indent <= $limit # next line is same or less indentation
+ and $next_line !~ $IS_ARRAY_LINE) # arrays can start at same indent
+ {
+ $hash->{$key} = undef;
+ }
+ else {
+ $hash->{$key} = $self->_read_nested;
+ }
+
+ ( $line, $indent ) = $self->_peek;
+ last
+ if $indent < $limit
+ || !defined $line
+ || $line =~ $IS_END_YAML;
+ }
+
+ return $hash;
+}
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+TAP::Parser::YAMLish::Reader - Read YAMLish data from iterator
+
+=head1 VERSION
+
+Version 3.48
+
+=head1 SYNOPSIS
+
+=head1 DESCRIPTION
+
+Note that parts of this code were derived from L<YAML::Tiny> with the
+permission of Adam Kennedy.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+The constructor C<new> creates and returns an empty
+C<TAP::Parser::YAMLish::Reader> object.
+
+ my $reader = TAP::Parser::YAMLish::Reader->new;
+
+=head2 Instance Methods
+
+=head3 C<read>
+
+ my $got = $reader->read($iterator);
+
+Read YAMLish from a L<TAP::Parser::Iterator> and return the data structure it
+represents.
+
+=head3 C<get_raw>
+
+ my $source = $reader->get_source;
+
+Return the raw YAMLish source from the most recent C<read>.
+
+=head1 AUTHOR
+
+Andy Armstrong, <andy@hexten.net>
+
+Adam Kennedy wrote L<YAML::Tiny> which provided the template and many of
+the YAML matching regular expressions for this module.
+
+=head1 SEE ALSO
+
+L<YAML::Tiny>, L<YAML>, L<YAML::Syck>, L<Config::Tiny>, L<CSS::Tiny>,
+L<http://use.perl.org/~Alias/journal/29427>
+
+=head1 COPYRIGHT
+
+Copyright 2007-2011 Andy Armstrong.
+
+Portions copyright 2006-2008 Adam Kennedy.
+
+This program is free software; you can redistribute
+it and/or modify it under the same terms as Perl itself.
+
+The full text of the license can be found in the
+LICENSE file included with this module.
+
+=cut
+
diff --git a/Master/tlpkg/tlperl/site/lib/TAP/Parser/YAMLish/Writer.pm b/Master/tlpkg/tlperl/site/lib/TAP/Parser/YAMLish/Writer.pm
new file mode 100755
index 00000000000..a11a02a285a
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/TAP/Parser/YAMLish/Writer.pm
@@ -0,0 +1,263 @@
+package TAP::Parser::YAMLish::Writer;
+
+use strict;
+use warnings;
+
+use base 'TAP::Object';
+
+our $VERSION = '3.48';
+
+ # No EBCDIC support on early perls
+*from_native = (ord "A" == 65 || $] < 5.008)
+ ? sub { return shift }
+ : sub { utf8::native_to_unicode(shift) };
+
+my $ESCAPE_CHAR = qr{ [ [:cntrl:] \" ] }x;
+my $ESCAPE_KEY = qr{ (?: ^\W ) | $ESCAPE_CHAR }x;
+
+my @UNPRINTABLE;
+$UNPRINTABLE[$_] = sprintf("x%02x", from_native($_)) for 0 .. ord(" ") - 1;
+$UNPRINTABLE[ord "\0"] = 'z';
+$UNPRINTABLE[ord "\a"] = 'a';
+$UNPRINTABLE[ord "\t"] = 't';
+$UNPRINTABLE[ord "\n"] = 'n';
+$UNPRINTABLE[ord "\cK"] = 'v';
+$UNPRINTABLE[ord "\f"] = 'f';
+$UNPRINTABLE[ord "\r"] = 'r';
+$UNPRINTABLE[ord "\e"] = 'e';
+
+# new() implementation supplied by TAP::Object
+
+sub write {
+ my $self = shift;
+
+ die "Need something to write"
+ unless @_;
+
+ my $obj = shift;
+ my $out = shift || \*STDOUT;
+
+ die "Need a reference to something I can write to"
+ unless ref $out;
+
+ $self->{writer} = $self->_make_writer($out);
+
+ $self->_write_obj( '---', $obj );
+ $self->_put('...');
+
+ delete $self->{writer};
+}
+
+sub _make_writer {
+ my $self = shift;
+ my $out = shift;
+
+ my $ref = ref $out;
+
+ if ( 'CODE' eq $ref ) {
+ return $out;
+ }
+ elsif ( 'ARRAY' eq $ref ) {
+ return sub { push @$out, shift };
+ }
+ elsif ( 'SCALAR' eq $ref ) {
+ return sub { $$out .= shift() . "\n" };
+ }
+ elsif ( 'GLOB' eq $ref || 'IO::Handle' eq $ref ) {
+ return sub { print $out shift(), "\n" };
+ }
+
+ die "Can't write to $out";
+}
+
+sub _put {
+ my $self = shift;
+ $self->{writer}->( join '', @_ );
+}
+
+sub _enc_scalar {
+ my $self = shift;
+ my $val = shift;
+ my $rule = shift;
+
+ return '~' unless defined $val;
+
+ if ( $val =~ /$rule/ ) {
+ $val =~ s/\\/\\\\/g;
+ $val =~ s/"/\\"/g;
+ $val =~ s/ ( [[:cntrl:]] ) / '\\' . $UNPRINTABLE[ ord($1) ] /gex;
+ return qq{"$val"};
+ }
+
+ if ( length($val) == 0 or $val =~ /\s/ ) {
+ $val =~ s/'/''/;
+ return "'$val'";
+ }
+
+ return $val;
+}
+
+sub _write_obj {
+ my $self = shift;
+ my $prefix = shift;
+ my $obj = shift;
+ my $indent = shift || 0;
+
+ if ( my $ref = ref $obj ) {
+ my $pad = ' ' x $indent;
+ if ( 'HASH' eq $ref ) {
+ if ( keys %$obj ) {
+ $self->_put($prefix);
+ for my $key ( sort keys %$obj ) {
+ my $value = $obj->{$key};
+ $self->_write_obj(
+ $pad . $self->_enc_scalar( $key, $ESCAPE_KEY ) . ':',
+ $value, $indent + 1
+ );
+ }
+ }
+ else {
+ $self->_put( $prefix, ' {}' );
+ }
+ }
+ elsif ( 'ARRAY' eq $ref ) {
+ if (@$obj) {
+ $self->_put($prefix);
+ for my $value (@$obj) {
+ $self->_write_obj(
+ $pad . '-', $value,
+ $indent + 1
+ );
+ }
+ }
+ else {
+ $self->_put( $prefix, ' []' );
+ }
+ }
+ else {
+ die "Don't know how to encode $ref";
+ }
+ }
+ else {
+ $self->_put( $prefix, ' ', $self->_enc_scalar( $obj, $ESCAPE_CHAR ) );
+ }
+}
+
+1;
+
+__END__
+
+=pod
+
+=head1 NAME
+
+TAP::Parser::YAMLish::Writer - Write YAMLish data
+
+=head1 VERSION
+
+Version 3.48
+
+=head1 SYNOPSIS
+
+ use TAP::Parser::YAMLish::Writer;
+
+ my $data = {
+ one => 1,
+ two => 2,
+ three => [ 1, 2, 3 ],
+ };
+
+ my $yw = TAP::Parser::YAMLish::Writer->new;
+
+ # Write to an array...
+ $yw->write( $data, \@some_array );
+
+ # ...an open file handle...
+ $yw->write( $data, $some_file_handle );
+
+ # ...a string ...
+ $yw->write( $data, \$some_string );
+
+ # ...or a closure
+ $yw->write( $data, sub {
+ my $line = shift;
+ print "$line\n";
+ } );
+
+=head1 DESCRIPTION
+
+Encodes a scalar, hash reference or array reference as YAMLish.
+
+=head1 METHODS
+
+=head2 Class Methods
+
+=head3 C<new>
+
+ my $writer = TAP::Parser::YAMLish::Writer->new;
+
+The constructor C<new> creates and returns an empty
+C<TAP::Parser::YAMLish::Writer> object.
+
+=head2 Instance Methods
+
+=head3 C<write>
+
+ $writer->write($obj, $output );
+
+Encode a scalar, hash reference or array reference as YAML.
+
+ my $writer = sub {
+ my $line = shift;
+ print SOMEFILE "$line\n";
+ };
+
+ my $data = {
+ one => 1,
+ two => 2,
+ three => [ 1, 2, 3 ],
+ };
+
+ my $yw = TAP::Parser::YAMLish::Writer->new;
+ $yw->write( $data, $writer );
+
+
+The C< $output > argument may be:
+
+=over
+
+=item * a reference to a scalar to append YAML to
+
+=item * the handle of an open file
+
+=item * a reference to an array into which YAML will be pushed
+
+=item * a code reference
+
+=back
+
+If you supply a code reference the subroutine will be called once for
+each line of output with the line as its only argument. Passed lines
+will have no trailing newline.
+
+=head1 AUTHOR
+
+Andy Armstrong, <andy@hexten.net>
+
+=head1 SEE ALSO
+
+L<YAML::Tiny>, L<YAML>, L<YAML::Syck>, L<Config::Tiny>, L<CSS::Tiny>,
+L<http://use.perl.org/~Alias/journal/29427>
+
+=head1 COPYRIGHT
+
+Copyright 2007-2011 Andy Armstrong.
+
+This program is free software; you can redistribute
+it and/or modify it under the same terms as Perl itself.
+
+The full text of the license can be found in the
+LICENSE file included with this module.
+
+=cut
+
diff --git a/Master/tlpkg/tlperl/site/lib/Test/Fatal.pm b/Master/tlpkg/tlperl/site/lib/Test/Fatal.pm
index 4fd0e2f361a..2d90b3a6ee5 100644
--- a/Master/tlpkg/tlperl/site/lib/Test/Fatal.pm
+++ b/Master/tlpkg/tlperl/site/lib/Test/Fatal.pm
@@ -2,7 +2,7 @@ use strict;
use warnings;
package Test::Fatal;
# ABSTRACT: incredibly simple helpers for testing code with exceptions
-$Test::Fatal::VERSION = '0.016';
+$Test::Fatal::VERSION = '0.017';
#pod =head1 SYNOPSIS
#pod
#pod use Test::More;
@@ -105,7 +105,7 @@ our @EXPORT_OK = qw(exception success dies_ok lives_ok);
#pod exception_like(sub { }, [ qr/foo/, 'foo appears in the exception' ] );
#pod
#pod To aid in avoiding the problem where the pattern is seen in the exception
-#pod because of the call stack, C<$Carp::MAxArgNums> is locally set to -1 when the
+#pod because of the call stack, C<$Carp::MaxArgNums> is locally set to -1 when the
#pod code block is called. If you really don't want that, set it back to whatever
#pod value you like at the beginning of the code block. Obviously, this solution
#pod doens't affect all possible ways that args of subroutines in the call stack
@@ -197,7 +197,7 @@ sub success (&;@) {
#pod =func lives_ok
#pod
#pod Exported only by request, these two functions run a given block of code, and
-#pod provide TAP output indicating if it did, or did not throw an exception.
+#pod provide TAP output indicating if it did, or did not throw an exception.
#pod These provide an easy upgrade path for replacing existing unit tests based on
#pod C<Test::Exception>.
#pod
@@ -270,7 +270,7 @@ Test::Fatal - incredibly simple helpers for testing code with exceptions
=head1 VERSION
-version 0.016
+version 0.017
=head1 SYNOPSIS
@@ -311,6 +311,16 @@ false positives if exceptions use stack traces that show arguments. For a more
magical approach involving globally overriding C<caller>, see
L<Test::Exception>.
+=head1 PERL VERSION
+
+This library should run on perls released even a long time ago. It should work
+on any version of perl released in the last five years.
+
+Although it may work on older versions of perl, no guarantee is made that the
+minimum required version will not be increased. The version may be increased
+for any reason, and there is no promise that patches will be accepted to lower
+the minimum required perl.
+
=head1 FUNCTIONS
=head2 exception
@@ -366,7 +376,7 @@ arguments in an array reference to hide the literal text from a stack trace:
exception_like(sub { }, [ qr/foo/, 'foo appears in the exception' ] );
To aid in avoiding the problem where the pattern is seen in the exception
-because of the call stack, C<$Carp::MAxArgNums> is locally set to -1 when the
+because of the call stack, C<$Carp::MaxArgNums> is locally set to -1 when the
code block is called. If you really don't want that, set it back to whatever
value you like at the beginning of the code block. Obviously, this solution
doens't affect all possible ways that args of subroutines in the call stack
@@ -407,7 +417,7 @@ success blocks may sometimes help organize complex testing.
=head2 lives_ok
Exported only by request, these two functions run a given block of code, and
-provide TAP output indicating if it did, or did not throw an exception.
+provide TAP output indicating if it did, or did not throw an exception.
These provide an easy upgrade path for replacing existing unit tests based on
C<Test::Exception>.
@@ -423,11 +433,11 @@ use Test::Fatal's C<exception> routine.
=head1 AUTHOR
-Ricardo Signes <rjbs@cpan.org>
+Ricardo Signes <cpan@semiotic.systems>
=head1 CONTRIBUTORS
-=for stopwords David Golden Graham Knop Jesse Luehrs Joel Bernstein Karen Etheridge
+=for stopwords David Golden Graham Knop Jesse Luehrs Joel Bernstein Karen Etheridge Ricardo Signes
=over 4
@@ -451,6 +461,10 @@ Joel Bernstein <joel@fysh.org>
Karen Etheridge <ether@cpan.org>
+=item *
+
+Ricardo Signes <rjbs@semiotic.systems>
+
=back
=head1 COPYRIGHT AND LICENSE
diff --git a/Master/tlpkg/tlperl/site/lib/Test/HACKING.pod b/Master/tlpkg/tlperl/site/lib/Test/HACKING.pod
new file mode 100755
index 00000000000..91b33011a02
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/Test/HACKING.pod
@@ -0,0 +1,264 @@
+
+# this is in pod format (try `perldoc HACKING.pod`)
+
+=pod
+
+=head1 NAME
+
+HACKING.pod - contributing to TAP::Harness
+
+=head1 ABOUT
+
+This is the guide for TAP::Harness internals contributors (developers,
+testers, documenters.)
+
+If you are looking for more information on how to I<use> TAP::Harness,
+you probably want
+L<http://testanything.org/testing-with-tap/perl/tap-parser-cookbook.html>
+instead.
+
+=head1 Getting Started
+
+See the resources section in I<META.yml> or I<Build.PL> for links to the
+project mailing list, bug tracker, svn repository, etc.
+
+For ease of reference, at the time of writing the SVN repository was at:
+
+ http://svn.hexten.net/tapx
+
+To get the latest version of trunk:
+
+ git clone git://github.com/Perl-Toolchain-Gang/Test-Harness.git
+
+For best results, read the rest of this file, check RT for bugs which
+scratch your itch, join the mailing list, etc.
+
+=head1 Formatting
+
+=head2 perltidy
+
+The project comes with a C<.perltidyrc>, which perltidy will
+automatically use if the project root is your working directory. This
+is setup by default to read and write the perl code on a pipe. To
+configure your editor:
+
+=over 4
+
+=item * vim
+
+In C<.vimrc>, you can add the following lines:
+
+ nnoremap <Leader>pt :%!perltidy -q<cr> " only work in 'normal' mode
+ vnoremap <Leader>pt :!perltidy -q<cr> " only work in 'visual' mode
+
+In other words, if your C<Leader> is a backslash, you can type C<\pt> to
+reformat the file using the C<.perltidyrc>. If you are in visual mode
+(selecting lines with shift-v), then only the code you have currently have
+selected will be reformatted.
+
+=item * emacs
+
+For emacs, you can use this snippet from Sam Tregar
+(L<http://use.perl.org/~samtregar/journal/30185>):
+
+ (defun perltidy-region ()
+ "Run perltidy on the current region."
+ (interactive)
+ (save-excursion
+ (shell-command-on-region (point) (mark) "perltidy -q" nil t)
+ (cperl-mode)))
+
+ (defun perltidy-all ()
+ "Run perltidy on the current region."
+ (interactive)
+ (let ((p (point)))
+ (save-excursion
+ (shell-command-on-region (point-min) (point-max) "perltidy -q" nil t)
+ )
+ (goto-char p)
+ (cperl-mode)))
+
+ (global-set-key "\M-t" `perltidy-region)
+ (global-set-key "\M-T" `perltidy-all)
+
+=back
+
+=head1 Tests and Coverage
+
+...
+
+=for eric_not_it
+ TODO link to a good guide on writing tests for TAP::Parser
+
+=head1 Writing for Compatibility
+
+...
+
+=for eric_not_it
+ TODO explain no bundling, PERL_CORE, etc
+
+=head1 Use TAP::Object
+
+TAP::Object is the common base class to all TAP::* modules, and should be for
+any that you write.
+
+=head1 Exception Handling
+
+Exceptions should be raised with L<Carp>:
+
+ require Carp;
+ Carp::croak("Unsupported syntax version: $version");
+
+ require Carp;
+ Carp::confess("Unsupported syntax version: $version");
+
+=head1 Deprecation cycle
+
+Any I<documented> sub that needs to be changed or removed (and would therefore
+cause a backwards-compat issue) must go through a deprecation cycle to give
+developers a chance to adjust:
+
+ 1. Document the deprecation
+ 2. Carp a suitable message
+ 3. Release
+ 4. Change the code
+ 5. Release
+
+=head1 Documentation
+
+The end-user and API documentation is all in the 'lib/' directory. In
+.pm files, the pod is "inline" to the code. See L<perlpod> for more
+about pod.
+
+=head2 Pod Commands
+
+For compatibility's sake, we do not use the =head3 and =head4 commands.
+
+=over
+
+=item C<=head1 SECTION>
+
+Sections begin with an C<=head1> command and are all-caps.
+
+=for eric_not_it
+ I guess... Mixed case messes with various pod hacking tools.
+
+ NAME
+ VERSION
+ SYNOPSIS
+ CONSTRUCTOR
+ METHODS
+ CLASS METHODS
+ SOME OTHER SORT OF METHODS
+ SEE ALSO
+
+=item C<=head2 method>
+
+=for eric_not_it
+ The following is how I would do it, but opposite of what we have.
+
+The C<=head2> command documents a method. The name of the method should have no adornment (e.g. don't CE<lt>method> or CE<lt>method($list, $of, $params)>.)
+
+These sections should begin with a short description of what the method
+does, followed by one or more examples of usage. If needed, elaborate
+on the subtleties of the parameters and context after (and/or between)
+the example(s).
+
+ =head2 this_method
+
+ This method does some blah blah blah.
+
+ my @answer = $thing->this_method(@arguments);
+
+ =head2 that_thing
+
+ Returns true if the thing is true.
+
+ if($thing->that_thing) {
+ ...
+ }
+
+=item C<=item parameter>
+
+Use C<=item> commands for method arguments and parameters (and etc.) In
+most html pod formatters, these I<do not> get added to the
+table-of-contents at the top of the page.
+
+=back
+
+=head2 Pod Formatting Codes
+
+=over
+
+=item LE<lt>Some::Module>
+
+Be careful of the wording of C<LE<lt>Some::ModuleE<gt>>. Older pod
+formatters would render this as "the Some::Module manpage", so it is
+best to either word your links as "C<(see E<lt>Some::ModuleE<gt> for
+details.)>" or use the "explicit rendering" form of
+"C<E<lt>Some::Module|Some::ModuleE<gt>>".
+
+=back
+
+=head2 VERSION
+
+The version numbers are updated by L<Perl::Version>.
+
+=head2 DEVELOPER DOCS/NOTES
+
+The following "formats" are used with C<=begin>/C<=end> and C<=for>
+commands for pod which is not part of the public end-user/API
+documentation.
+
+=over
+
+=item note
+
+Use this if you are uncertain about a change to some pod or think it
+needs work.
+
+ =head2 some_method
+
+ ...
+
+ =for note
+ This is either falsely documented or a bug -- see ...
+
+=item developer
+
+ =begin developer
+
+ Long-winded explanation of why some code is the way it is or various
+ other subtleties which might incite head-scratching and WTF'ing.
+
+ =end developer
+
+=item deprecated
+
+ =for deprecated
+ removed in 0.09, kill by ~0.25
+
+=back
+
+=head1 Committing to Subversion
+
+If you have commit access, please bear this in mind.
+
+Development is done either on trunk or a branch, as appropriate:
+
+If it's something that might be controversial, break the build or take a long
+time (more than a couple of weeks) to complete then it'd probably be
+appropriate to branch. Otherwise it can go in trunk.
+
+If in doubt discuss it on the mailing list before you commit.
+
+=cut
+
+=for developer
+... or whatever. I'm just making stuff up here. If any of this is
+wrong, please correct it. To the extent that there is an "official
+policy", it should be written down. --Eric
+
+=cut
+
+# vim:ts=2:sw=2:et:sta
diff --git a/Master/tlpkg/tlperl/site/lib/Test/Harness.pm b/Master/tlpkg/tlperl/site/lib/Test/Harness.pm
new file mode 100755
index 00000000000..33e57fcc840
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/Test/Harness.pm
@@ -0,0 +1,618 @@
+package Test::Harness;
+
+use 5.006;
+
+use strict;
+use warnings;
+
+use constant IS_WIN32 => ( $^O =~ /^(MS)?Win32$/ );
+use constant IS_VMS => ( $^O eq 'VMS' );
+
+use TAP::Harness ();
+use TAP::Parser::Aggregator ();
+use TAP::Parser::Source ();
+use TAP::Parser::SourceHandler::Perl ();
+
+use Text::ParseWords qw(shellwords);
+
+use Config;
+use base 'Exporter';
+
+# $ML $Last_ML_Print
+
+BEGIN {
+ eval q{use Time::HiRes 'time'};
+ our $has_time_hires = !$@;
+}
+
+=head1 NAME
+
+Test::Harness - Run Perl standard test scripts with statistics
+
+=head1 VERSION
+
+Version 3.48
+
+=cut
+
+our $VERSION = '3.48';
+
+# Backwards compatibility for exportable variable names.
+*verbose = *Verbose;
+*switches = *Switches;
+*debug = *Debug;
+
+$ENV{HARNESS_ACTIVE} = 1;
+$ENV{HARNESS_VERSION} = $VERSION;
+
+END {
+
+ # For VMS.
+ delete $ENV{HARNESS_ACTIVE};
+ delete $ENV{HARNESS_VERSION};
+}
+
+our @EXPORT = qw(&runtests);
+our @EXPORT_OK = qw(&execute_tests $verbose $switches);
+
+our $Verbose = $ENV{HARNESS_VERBOSE} || 0;
+our $Debug = $ENV{HARNESS_DEBUG} || 0;
+our $Switches = '-w';
+our $Columns = $ENV{HARNESS_COLUMNS} || $ENV{COLUMNS} || 80;
+$Columns--; # Some shells have trouble with a full line of text.
+our $Timer = $ENV{HARNESS_TIMER} || 0;
+our $Color = $ENV{HARNESS_COLOR} || 0;
+our $IgnoreExit = $ENV{HARNESS_IGNORE_EXIT} || 0;
+
+=head1 SYNOPSIS
+
+ use Test::Harness;
+
+ runtests(@test_files);
+
+=head1 DESCRIPTION
+
+Although, for historical reasons, the L<Test::Harness> distribution
+takes its name from this module it now exists only to provide
+L<TAP::Harness> with an interface that is somewhat backwards compatible
+with L<Test::Harness> 2.xx. If you're writing new code consider using
+L<TAP::Harness> directly instead.
+
+Emulation is provided for C<runtests> and C<execute_tests> but the
+pluggable 'Straps' interface that previous versions of L<Test::Harness>
+supported is not reproduced here. Straps is now available as a stand
+alone module: L<Test::Harness::Straps>.
+
+See L<TAP::Parser>, L<TAP::Harness> for the main documentation for this
+distribution.
+
+=head1 FUNCTIONS
+
+The following functions are available.
+
+=head2 runtests( @test_files )
+
+This runs all the given I<@test_files> and divines whether they passed
+or failed based on their output to STDOUT (details above). It prints
+out each individual test which failed along with a summary report and
+a how long it all took.
+
+It returns true if everything was ok. Otherwise it will C<die()> with
+one of the messages in the DIAGNOSTICS section.
+
+=cut
+
+sub _has_taint {
+ my $test = shift;
+ return TAP::Parser::SourceHandler::Perl->get_taint(
+ TAP::Parser::Source->shebang($test) );
+}
+
+sub _aggregate {
+ my ( $harness, $aggregate, @tests ) = @_;
+
+ # Don't propagate to our children
+ local $ENV{HARNESS_OPTIONS};
+
+ _apply_extra_INC($harness);
+ _aggregate_tests( $harness, $aggregate, @tests );
+}
+
+# Make sure the child sees all the extra junk in @INC
+sub _apply_extra_INC {
+ my $harness = shift;
+
+ $harness->callback(
+ parser_args => sub {
+ my ( $args, $test ) = @_;
+ push @{ $args->{switches} }, map {"-I$_"} _filtered_inc();
+ }
+ );
+}
+
+sub _aggregate_tests {
+ my ( $harness, $aggregate, @tests ) = @_;
+ $aggregate->start();
+ $harness->aggregate_tests( $aggregate, @tests );
+ $aggregate->stop();
+
+}
+
+sub runtests {
+ my @tests = @_;
+
+ # shield against -l
+ local ( $\, $, );
+
+ my $harness = _new_harness();
+ my $aggregate = TAP::Parser::Aggregator->new();
+
+ local $ENV{PERL_USE_UNSAFE_INC} = 1 if not exists $ENV{PERL_USE_UNSAFE_INC};
+ _aggregate( $harness, $aggregate, @tests );
+
+ $harness->formatter->summary($aggregate);
+
+ my $total = $aggregate->total;
+ my $passed = $aggregate->passed;
+ my $failed = $aggregate->failed;
+
+ my @parsers = $aggregate->parsers;
+
+ my $num_bad = 0;
+ for my $parser (@parsers) {
+ $num_bad++ if $parser->has_problems;
+ }
+
+ die(sprintf(
+ "Failed %d/%d test programs. %d/%d subtests failed.\n",
+ $num_bad, scalar @parsers, $failed, $total
+ )
+ ) if $num_bad;
+
+ return $total && $total == $passed;
+}
+
+sub _canon {
+ my @list = sort { $a <=> $b } @_;
+ my @ranges = ();
+ my $count = scalar @list;
+ my $pos = 0;
+
+ while ( $pos < $count ) {
+ my $end = $pos + 1;
+ $end++ while $end < $count && $list[$end] <= $list[ $end - 1 ] + 1;
+ push @ranges, ( $end == $pos + 1 )
+ ? $list[$pos]
+ : join( '-', $list[$pos], $list[ $end - 1 ] );
+ $pos = $end;
+ }
+
+ return join( ' ', @ranges );
+}
+
+sub _new_harness {
+ my $sub_args = shift || {};
+
+ my ( @lib, @switches );
+ my @opt = map { shellwords($_) } grep { defined } $Switches, $ENV{HARNESS_PERL_SWITCHES};
+ while ( my $opt = shift @opt ) {
+ if ( $opt =~ /^ -I (.*) $ /x ) {
+ push @lib, length($1) ? $1 : shift @opt;
+ }
+ else {
+ push @switches, $opt;
+ }
+ }
+
+ # Do things the old way on VMS...
+ push @lib, _filtered_inc() if IS_VMS;
+
+ # If $Verbose isn't numeric default to 1. This helps core.
+ my $verbosity = ( $Verbose ? ( $Verbose !~ /\d/ ) ? 1 : $Verbose : 0 );
+
+ my $args = {
+ timer => $Timer,
+ directives => our $Directives,
+ lib => \@lib,
+ switches => \@switches,
+ color => $Color,
+ verbosity => $verbosity,
+ ignore_exit => $IgnoreExit,
+ };
+
+ $args->{stdout} = $sub_args->{out}
+ if exists $sub_args->{out};
+
+ my $class = $ENV{HARNESS_SUBCLASS} || 'TAP::Harness';
+ if ( defined( my $env_opt = $ENV{HARNESS_OPTIONS} ) ) {
+ for my $opt ( split /:/, $env_opt ) {
+ if ( $opt =~ /^j(\d*)$/ ) {
+ $args->{jobs} = $1 || 9;
+ }
+ elsif ( $opt eq 'c' ) {
+ $args->{color} = 1;
+ }
+ elsif ( $opt =~ m/^f(.*)$/ ) {
+ my $fmt = $1;
+ $fmt =~ s/-/::/g;
+ $args->{formatter_class} = $fmt;
+ }
+ elsif ( $opt =~ m/^a(.*)$/ ) {
+ my $archive = $1;
+ $class = "TAP::Harness::Archive";
+ $args->{archive} = $archive;
+ }
+ else {
+ die "Unknown HARNESS_OPTIONS item: $opt\n";
+ }
+ }
+ }
+
+ return TAP::Harness->_construct( $class, $args );
+}
+
+# Get the parts of @INC which are changed from the stock list AND
+# preserve reordering of stock directories.
+sub _filtered_inc {
+ my @inc = grep { !ref } @INC; #28567
+
+ if (IS_VMS) {
+
+ # VMS has a 255-byte limit on the length of %ENV entries, so
+ # toss the ones that involve perl_root, the install location
+ @inc = grep !/perl_root/i, @inc;
+
+ }
+ elsif (IS_WIN32) {
+
+ # Lose any trailing backslashes in the Win32 paths
+ s/[\\\/]+$// for @inc;
+ }
+
+ my @default_inc = _default_inc();
+
+ my @new_inc;
+ my %seen;
+ for my $dir (@inc) {
+ next if $seen{$dir}++;
+
+ if ( $dir eq ( $default_inc[0] || '' ) ) {
+ shift @default_inc;
+ }
+ else {
+ push @new_inc, $dir;
+ }
+
+ shift @default_inc while @default_inc and $seen{ $default_inc[0] };
+ }
+
+ return @new_inc;
+}
+
+{
+
+ # Cache this to avoid repeatedly shelling out to Perl.
+ my @inc;
+
+ sub _default_inc {
+ return @inc if @inc;
+
+ local $ENV{PERL5LIB};
+ local $ENV{PERLLIB};
+
+ my $perl = $ENV{HARNESS_PERL} || $^X;
+
+ # Avoid using -l for the benefit of Perl 6
+ chomp( @inc = `"$perl" -e "print join qq[\\n], \@INC, q[]"` );
+ return @inc;
+ }
+}
+
+sub _check_sequence {
+ my @list = @_;
+ my $prev;
+ while ( my $next = shift @list ) {
+ return if defined $prev && $next <= $prev;
+ $prev = $next;
+ }
+
+ return 1;
+}
+
+sub execute_tests {
+ my %args = @_;
+
+ my $harness = _new_harness( \%args );
+ my $aggregate = TAP::Parser::Aggregator->new();
+
+ my %tot = (
+ bonus => 0,
+ max => 0,
+ ok => 0,
+ bad => 0,
+ good => 0,
+ files => 0,
+ tests => 0,
+ sub_skipped => 0,
+ todo => 0,
+ skipped => 0,
+ bench => undef,
+ );
+
+ # Install a callback so we get to see any plans the
+ # harness executes.
+ $harness->callback(
+ made_parser => sub {
+ my $parser = shift;
+ $parser->callback(
+ plan => sub {
+ my $plan = shift;
+ if ( $plan->directive eq 'SKIP' ) {
+ $tot{skipped}++;
+ }
+ }
+ );
+ }
+ );
+
+ local $ENV{PERL_USE_UNSAFE_INC} = 1 if not exists $ENV{PERL_USE_UNSAFE_INC};
+ _aggregate( $harness, $aggregate, @{ $args{tests} } );
+
+ $tot{bench} = $aggregate->elapsed;
+ my @tests = $aggregate->descriptions;
+
+ # TODO: Work out the circumstances under which the files
+ # and tests totals can differ.
+ $tot{files} = $tot{tests} = scalar @tests;
+
+ my %failedtests = ();
+ my %todo_passed = ();
+
+ for my $test (@tests) {
+ my ($parser) = $aggregate->parsers($test);
+
+ my @failed = $parser->failed;
+
+ my $wstat = $parser->wait;
+ my $estat = $parser->exit;
+ my $planned = $parser->tests_planned;
+ my @errors = $parser->parse_errors;
+ my $passed = $parser->passed;
+ my $actual_passed = $parser->actual_passed;
+
+ my $ok_seq = _check_sequence( $parser->actual_passed );
+
+ # Duplicate exit, wait status semantics of old version
+ $estat ||= '' unless $wstat;
+ $wstat ||= '';
+
+ $tot{max} += ( $planned || 0 );
+ $tot{bonus} += $parser->todo_passed;
+ $tot{ok} += $passed > $actual_passed ? $passed : $actual_passed;
+ $tot{sub_skipped} += $parser->skipped;
+ $tot{todo} += $parser->todo;
+
+ if ( @failed || $estat || @errors ) {
+ $tot{bad}++;
+
+ my $huh_planned = $planned ? undef : '??';
+ my $huh_errors = $ok_seq ? undef : '??';
+
+ $failedtests{$test} = {
+ 'canon' => $huh_planned
+ || $huh_errors
+ || _canon(@failed)
+ || '??',
+ 'estat' => $estat,
+ 'failed' => $huh_planned
+ || $huh_errors
+ || scalar @failed,
+ 'max' => $huh_planned || $planned,
+ 'name' => $test,
+ 'wstat' => $wstat
+ };
+ }
+ else {
+ $tot{good}++;
+ }
+
+ my @todo = $parser->todo_passed;
+ if (@todo) {
+ $todo_passed{$test} = {
+ 'canon' => _canon(@todo),
+ 'estat' => $estat,
+ 'failed' => scalar @todo,
+ 'max' => scalar $parser->todo,
+ 'name' => $test,
+ 'wstat' => $wstat
+ };
+ }
+ }
+
+ return ( \%tot, \%failedtests, \%todo_passed );
+}
+
+=head2 execute_tests( tests => \@test_files, out => \*FH )
+
+Runs all the given C<@test_files> (just like C<runtests()>) but
+doesn't generate the final report. During testing, progress
+information will be written to the currently selected output
+filehandle (usually C<STDOUT>), or to the filehandle given by the
+C<out> parameter. The I<out> is optional.
+
+Returns a list of two values, C<$total> and C<$failed>, describing the
+results. C<$total> is a hash ref summary of all the tests run. Its
+keys and values are this:
+
+ bonus Number of individual todo tests unexpectedly passed
+ max Number of individual tests ran
+ ok Number of individual tests passed
+ sub_skipped Number of individual tests skipped
+ todo Number of individual todo tests
+
+ files Number of test files ran
+ good Number of test files passed
+ bad Number of test files failed
+ tests Number of test files originally given
+ skipped Number of test files skipped
+
+If C<< $total->{bad} == 0 >> and C<< $total->{max} > 0 >>, you've
+got a successful test.
+
+C<$failed> is a hash ref of all the test scripts that failed. Each key
+is the name of a test script, each value is another hash representing
+how that script failed. Its keys are these:
+
+ name Name of the test which failed
+ estat Script's exit value
+ wstat Script's wait status
+ max Number of individual tests
+ failed Number which failed
+ canon List of tests which failed (as string).
+
+C<$failed> should be empty if everything passed.
+
+=cut
+
+1;
+__END__
+
+=head1 EXPORT
+
+C<&runtests> is exported by C<Test::Harness> by default.
+
+C<&execute_tests>, C<$verbose>, C<$switches> and C<$debug> are
+exported upon request.
+
+=head1 ENVIRONMENT VARIABLES THAT TAP::HARNESS::COMPATIBLE SETS
+
+C<Test::Harness> sets these before executing the individual tests.
+
+=over 4
+
+=item C<HARNESS_ACTIVE>
+
+This is set to a true value. It allows the tests to determine if they
+are being executed through the harness or by any other means.
+
+=item C<HARNESS_VERSION>
+
+This is the version of C<Test::Harness>.
+
+=back
+
+=head1 ENVIRONMENT VARIABLES THAT AFFECT TEST::HARNESS
+
+=over 4
+
+=item C<HARNESS_PERL_SWITCHES>
+
+Setting this adds perl command line switches to each test file run.
+
+For example, C<HARNESS_PERL_SWITCHES=-T> will turn on taint mode.
+C<HARNESS_PERL_SWITCHES=-MDevel::Cover> will run C<Devel::Cover> for
+each test.
+
+C<-w> is always set. You can turn this off in the test with C<BEGIN {
+$^W = 0 }>.
+
+=item C<HARNESS_TIMER>
+
+Setting this to true will make the harness display the number of
+milliseconds each test took. You can also use F<prove>'s C<--timer>
+switch.
+
+=item C<HARNESS_VERBOSE>
+
+If true, C<Test::Harness> will output the verbose results of running
+its tests. Setting C<$Test::Harness::verbose> will override this,
+or you can use the C<-v> switch in the F<prove> utility.
+
+=item C<HARNESS_OPTIONS>
+
+Provide additional options to the harness. Currently supported options are:
+
+=over
+
+=item C<< j<n> >>
+
+Run <n> (default 9) parallel jobs.
+
+=item C<< c >>
+
+Try to color output. See L<TAP::Formatter::Base/"new">.
+
+=item C<< a<file.tgz> >>
+
+Will use L<TAP::Harness::Archive> as the harness class, and save the TAP to
+C<file.tgz>
+
+=item C<< fPackage-With-Dashes >>
+
+Set the formatter_class of the harness being run. Since the C<HARNESS_OPTIONS>
+is separated by C<:>, we use C<-> instead.
+
+=back
+
+Multiple options may be separated by colons:
+
+ HARNESS_OPTIONS=j9:c make test
+
+=item C<HARNESS_SUBCLASS>
+
+Specifies a TAP::Harness subclass to be used in place of TAP::Harness.
+
+=item C<HARNESS_SUMMARY_COLOR_SUCCESS>
+
+Determines the L<Term::ANSIColor> for the summary in case it is successful.
+This color defaults to C<'green'>.
+
+=item C<HARNESS_SUMMARY_COLOR_FAIL>
+
+Determines the L<Term::ANSIColor> for the failure in case it is successful.
+This color defaults to C<'red'>.
+
+=back
+
+=head1 Taint Mode
+
+Normally when a Perl program is run in taint mode the contents of the
+C<PERL5LIB> environment variable do not appear in C<@INC>.
+
+Because C<PERL5LIB> is often used during testing to add build
+directories to C<@INC> C<Test::Harness> passes the names of any
+directories found in C<PERL5LIB> as -I switches. The net effect of this
+is that C<PERL5LIB> is honoured even in taint mode.
+
+=head1 SEE ALSO
+
+L<TAP::Harness>
+
+=head1 BUGS
+
+Please report any bugs or feature requests to
+C<bug-test-harness at rt.cpan.org>, or through the web interface at
+L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Test-Harness>. I will be
+notified, and then you'll automatically be notified of progress on your bug
+as I make changes.
+
+=head1 AUTHORS
+
+Andy Armstrong C<< <andy@hexten.net> >>
+
+L<Test::Harness> 2.64 (maintained by Andy Lester and on which this
+module is based) has this attribution:
+
+ Either Tim Bunce or Andreas Koenig, we don't know. What we know for
+ sure is, that it was inspired by Larry Wall's F<TEST> script that came
+ with perl distributions for ages. Numerous anonymous contributors
+ exist. Andreas Koenig held the torch for many years, and then
+ Michael G Schwern.
+
+=head1 LICENCE AND COPYRIGHT
+
+Copyright (c) 2007-2011, Andy Armstrong C<< <andy@hexten.net> >>. All rights reserved.
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
+
diff --git a/Master/tlpkg/tlperl/site/lib/Test/Needs.pm b/Master/tlpkg/tlperl/site/lib/Test/Needs.pm
index 22660a154e6..4f0e5956b08 100755
--- a/Master/tlpkg/tlperl/site/lib/Test/Needs.pm
+++ b/Master/tlpkg/tlperl/site/lib/Test/Needs.pm
@@ -2,7 +2,7 @@ package Test::Needs;
use strict;
use warnings;
no warnings 'once';
-our $VERSION = '0.002009';
+our $VERSION = '0.002010';
$VERSION =~ tr/_//d;
BEGIN {
@@ -175,27 +175,29 @@ sub _fail_or_skip {
my $tb = Test::Builder->new;
my $has_plan = Test::Builder->can('has_plan') ? 'has_plan'
: sub { $_[0]->expected_tests || eval { $_[0]->current_test($_[0]->current_test); 'no_plan' } };
+ my $tests = $tb->current_test;
if ($fail) {
$tb->plan(tests => 1)
unless $tb->$has_plan;
+ $tests++;
$tb->ok(0, "Test::Needs modules available");
$tb->diag($message);
}
else {
my $plan = $tb->$has_plan;
- my $tests = $tb->current_test;
if ($plan || $tests) {
my $skips
= $plan && $plan ne 'no_plan' ? $plan - $tests : 1;
$tb->skip("Test::Needs modules not available")
for 1 .. $skips;
+ $tests += $skips;
Test::Builder->can('note') ? $tb->note($message) : print "# $message\n";
}
else {
$tb->skip_all($message);
}
}
- $tb->done_testing
+ $tb->done_testing($tests)
if Test::Builder->can('done_testing');
die bless {} => 'Test::Builder::Exception'
if Test::Builder->can('parent') && $tb->parent;
diff --git a/Master/tlpkg/tlperl/site/lib/Test/Warnings.pm b/Master/tlpkg/tlperl/site/lib/Test/Warnings.pm
new file mode 100755
index 00000000000..d2dd6507e6d
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/Test/Warnings.pm
@@ -0,0 +1,587 @@
+use strict;
+use warnings;
+package Test::Warnings; # git description: v0.032-4-ge6f3f36
+# vim: set ts=8 sts=2 sw=2 tw=100 et :
+# ABSTRACT: Test for warnings and the lack of them
+# KEYWORDS: testing tests warnings
+
+our $VERSION = '0.033';
+
+use parent 'Exporter';
+use Test::Builder;
+
+our @EXPORT_OK = qw(
+ allow_warnings allowing_warnings
+ had_no_warnings
+ warnings warning
+ allow_patterns
+ disallow_patterns
+);
+our %EXPORT_TAGS = ( all => \@EXPORT_OK );
+
+my $warnings_allowed;
+my $forbidden_warnings_found;
+my $done_testing_called;
+my $no_end_test;
+my $fail_on_warning;
+my $report_warnings;
+my @collected_warnings;
+my @allowed_patterns;
+
+sub import {
+ my $class = shift @_;
+
+ my %names; @names{@_} = ();
+ # END block will check for this status
+ $no_end_test = exists $names{':no_end_test'};
+ # __WARN__ handler will check for this status
+ $fail_on_warning = exists $names{':fail_on_warning'};
+ # Collect and report warnings at the end
+ $report_warnings = exists $names{':report_warnings'};
+
+ delete @names{qw(:no_end_test :fail_on_warning :report_warnings)};
+ __PACKAGE__->export_to_level(1, $class, keys %names);
+}
+
+# swap this out for testing this module only!
+my $tb;
+sub _builder(;$) {
+ if (not @_) {
+ $tb ||= Test::Builder->new;
+ return $tb;
+ }
+
+ $tb = shift;
+}
+
+my $_orig_warn_handler = $SIG{__WARN__};
+$SIG{__WARN__} = sub {
+ if ($warnings_allowed or grep +($_[0] =~ $_), @allowed_patterns) {
+ Test::Builder->new->note($_[0]);
+ }
+ else {
+ $forbidden_warnings_found++;
+ push @collected_warnings, $_[0] if $report_warnings;
+
+ # TODO: this doesn't handle blessed coderefs... does anyone care?
+ goto &$_orig_warn_handler if $_orig_warn_handler
+ and ( (ref $_orig_warn_handler eq 'CODE')
+ or ($_orig_warn_handler ne 'DEFAULT'
+ and $_orig_warn_handler ne 'IGNORE'
+ and defined &$_orig_warn_handler));
+
+ if ($_[0] =~ /\n$/) {
+ warn $_[0];
+ } else {
+ require Carp;
+ Carp::carp($_[0]);
+ }
+ _builder->ok(0, 'unexpected warning') if $fail_on_warning;
+ }
+};
+
+sub warnings(;&) {
+ # if someone manually does warnings->import in the same namespace this is
+ # imported into, this sub will be called. in that case, just return the
+ # string "warnings" so it calls the correct method.
+ if (!@_) {
+ return 'warnings';
+ }
+ my $code = shift;
+ my @warnings;
+ local $SIG{__WARN__} = sub {
+ push @warnings, shift;
+ };
+ $code->();
+ @warnings;
+}
+
+sub warning(&) {
+ my @warnings = &warnings(@_);
+ return @warnings == 1 ? $warnings[0] : \@warnings;
+}
+
+if (Test::Builder->can('done_testing')) {
+ # monkeypatch Test::Builder::done_testing:
+ # check for any forbidden warnings, and record that we have done so
+ # so we do not check again via END
+
+ no strict 'refs';
+ my $orig = *{'Test::Builder::done_testing'}{CODE};
+ no warnings 'redefine';
+ *{'Test::Builder::done_testing'} = sub {
+ # only do this at the end of all tests, not at the end of a subtest
+ my $builder = _builder;
+ my $in_subtest_sub = $builder->can('in_subtest');
+ if (not $no_end_test
+ and not ($in_subtest_sub ? $builder->$in_subtest_sub : $builder->parent)) {
+ local $Test::Builder::Level = $Test::Builder::Level + 3;
+ had_no_warnings('no (unexpected) warnings (via done_testing)');
+ $done_testing_called = 1;
+ }
+
+ $orig->(@_);
+ };
+}
+
+if ($INC{'Test2/Tools/Basic.pm'}) {
+ # monkeypatch Test2::Tools::Basic::done_testing:
+ # check for any forbidden warnings, and record that we have done so
+ # so we do not check again via END
+
+ no strict 'refs';
+ my $orig = *{'Test2::Tools::Basic::done_testing'}{CODE};
+ no warnings 'redefine';
+ *{'Test2::Tools::Basic::done_testing'} = sub {
+ if (not $no_end_test) {
+ # we could use $ctx to create the test, which means not having to adjust Level,
+ # but then we need to make _builder Test2-compatible, which seems like a PITA.
+ local $Test::Builder::Level = $Test::Builder::Level + 3;
+ had_no_warnings('no (unexpected) warnings (via done_testing)');
+ $done_testing_called = 1;
+ }
+
+ $orig->(@_);
+ };
+}
+
+END {
+ if (not $no_end_test
+ and not $done_testing_called
+ # skip this if there is no plan and no tests have been run (e.g.
+ # compilation tests of this module!)
+ and (_builder->expected_tests or _builder->current_test > 0)
+ ) {
+ local $Test::Builder::Level = $Test::Builder::Level + 1;
+ had_no_warnings('no (unexpected) warnings (via END block)');
+ }
+}
+
+# setter
+sub allow_warnings(;$) {
+ $warnings_allowed = @_ || defined $_[0] ? $_[0] : 1;
+}
+
+# getter
+sub allowing_warnings() { $warnings_allowed }
+
+# call at any time to assert no (unexpected) warnings so far
+sub had_no_warnings(;$) {
+ if ($ENV{PERL_TEST_WARNINGS_ONLY_REPORT_WARNINGS}) {
+ $forbidden_warnings_found
+ and _builder->diag("Found $forbidden_warnings_found warnings but allowing them because PERL_TEST_WARNINGS_ONLY_REPORT_WARNINGS is set");
+ }
+ else {
+ _builder->ok(!$forbidden_warnings_found, shift || 'no (unexpected) warnings');
+ }
+ if (($report_warnings or $ENV{PERL_TEST_WARNINGS_ONLY_REPORT_WARNINGS})
+ and $forbidden_warnings_found) {
+ _builder->diag("Got the following unexpected warnings:");
+ for my $i (1 .. @collected_warnings) {
+ _builder->diag(" $i: $collected_warnings[ $i - 1 ]");
+ }
+ }
+}
+
+# pass one or more regexes (in qr format)
+# when called in void context, lasting effect is universal
+# otherwise, returns objects: when they go out of scope, the effect is removed
+# (warning disallowed again).
+sub allow_patterns(@) {
+ push @allowed_patterns, @_;
+ return if not defined wantarray;
+ return [ map +Test::Warnings::TemporaryWarning->new($_), @_ ];
+}
+
+sub disallow_patterns(@) {
+ foreach my $pattern (@_) {
+ @allowed_patterns = grep +($_ ne $pattern), @allowed_patterns;
+ }
+}
+
+package # hide from PAUSE
+ Test::Warnings::TemporaryWarning;
+
+sub new {
+ my ($class, $pattern) = @_;
+ bless \$pattern, $class;
+}
+
+sub DESTROY {
+ Test::Warnings::disallow_patterns(${$_[0]});
+}
+
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+Test::Warnings - Test for warnings and the lack of them
+
+=head1 VERSION
+
+version 0.033
+
+=head1 SYNOPSIS
+
+ use Test::More;
+ use Test::Warnings;
+
+ pass('yay!');
+ done_testing;
+
+emits TAP:
+
+ ok 1 - yay!
+ ok 2 - no (unexpected) warnings (via done_testing)
+ 1..2
+
+and:
+
+ use Test::More tests => 3;
+ use Test::Warnings 0.005 ':all';
+
+ pass('yay!');
+ like(warning { warn "oh noes!" }, qr/^oh noes/, 'we warned');
+
+emits TAP:
+
+ ok 1 - yay!
+ ok 2 - we warned
+ ok 3 - no (unexpected) warnings (via END block)
+ 1..3
+
+=head1 DESCRIPTION
+
+If you've ever tried to use L<Test::NoWarnings> to confirm there are no warnings
+generated by your tests, combined with the convenience of C<done_testing> to
+not have to declare a
+L<test count|Test::More/I love it-when-a-plan-comes-together>,
+you'll have discovered that these two features do not play well together,
+as the test count will be calculated I<before> the warnings test is run,
+resulting in a TAP error. (See C<examples/test_nowarnings.pl> in this
+distribution for a demonstration.)
+
+This module is intended to be used as a drop-in replacement for
+L<Test::NoWarnings>: it also adds an extra test, but runs this test I<before>
+C<done_testing> calculates the test count, rather than after. It does this by
+hooking into C<done_testing> as well as via an C<END> block. You can declare
+a plan, or not, and things will still Just Work.
+
+It is actually equivalent to:
+
+ use Test::NoWarnings 1.04 ':early';
+
+as warnings are still printed normally as they occur. You are safe, and
+enthusiastically encouraged, to perform a global search-replace of the above
+with C<use Test::Warnings;> whether or not your tests have a plan.
+
+It can also be used as a replacement for L<Test::Warn>, if you wish to test
+the content of expected warnings; read on to find out how.
+
+=head1 FUNCTIONS
+
+The following functions are available for import (not included by default; you
+can also get all of them by importing the tag C<:all>):
+
+=head2 C<< allow_warnings([bool]) >> - EXPERIMENTAL - MAY BE REMOVED
+
+When passed a true value, or no value at all, subsequent warnings will not
+result in a test failure; when passed a false value, subsequent warnings will
+result in a test failure. Initial value is C<false>.
+
+When warnings are allowed, any warnings will instead be emitted via
+L<Test::Builder::note|Test::Builder/Output>.
+
+=head2 C<allowing_warnings> - EXPERIMENTAL - MAY BE REMOVED
+
+Returns whether we are currently allowing warnings (set by C<allow_warnings>
+as described above).
+
+=head2 C<< had_no_warnings(<optional test name>) >>
+
+Tests whether there have been any warnings so far, not preceded by an
+C<allowing_warnings> call. It is run
+automatically at the end of all tests, but can also be called manually at any
+time, as often as desired.
+
+=head2 C<< warnings( { code } ) >>
+
+Given a code block, runs the block and returns a list of all the
+(not previously allowed via C<allow_warnings>) warnings issued within. This
+lets you test for the presence of warnings that you not only would I<allow>,
+but I<must> be issued. Testing functions are not provided; given the strings
+returned, you can test these yourself using your favourite testing functions,
+such as L<Test::More::is|Test::More/is> or L<Test::Deep::cmp_deeply|Test::Deep/cmp_deeply>.
+
+You can use this construct as a replacement for
+L<Test::Warn::warnings_are|Test::Warn/warnings_are>:
+
+ is_deeply(
+ [ warnings { ... } ],
+ [
+ 'warning message 1',
+ 'warning message 2',
+ ],
+ 'got expected warnings',
+ );
+
+or, to replace L<Test::Warn::warnings_like|Test::Warn/warnings_like>:
+
+ cmp_deeply(
+ [ warnings { ... } ],
+ bag( # ordering of messages doesn't matter
+ re(qr/warning message 1/),
+ re(qr/warning message 2/),
+ ),
+ 'got expected warnings (in any order)',
+ );
+
+Warnings generated by this code block are I<NOT> propagated further. However,
+since they are returned from this function with their filename and line
+numbers intact, you can re-issue them yourself immediately after calling
+C<warnings(...)>, if desired.
+
+Note that C<use Test::Warnings 'warnings'> will give you a C<warnings>
+subroutine in your namespace (most likely C<main>, if you're writing a test),
+so you (or things you load) can't subsequently do C<< warnings->import >> --
+it will result in the error: "Not enough arguments for
+Test::Warnings::warnings at ..., near "warnings->import"". To work around
+this, either use the fully-qualified form (C<Test::warnings>) or make your
+calls to the C<warnings> package first.
+
+=head2 C<< warning( { code } ) >>
+
+Same as C<< warnings( { code } ) >>, except a scalar is always returned - the
+single warning produced, if there was one, or an arrayref otherwise -- which
+can be more convenient to use than C<warnings()> if you are expecting exactly
+one warning.
+
+However, you are advised to capture the result from C<warning()> into a temp
+variable so you can dump its value if it doesn't contain what you expect.
+e.g. with this test:
+
+ like(
+ warning { foo() },
+ qr/^this is a warning/,
+ 'got a warning from foo()',
+ );
+
+if you get two warnings (or none) back instead of one, you'll get an
+arrayref, which will result in an unhelpful test failure message like:
+
+ # Failed test 'got a warning from foo()'
+ # at t/mytest.t line 10.
+ # 'ARRAY(0xdeadbeef)'
+ # doesn't match '(?^:^this is a warning)'
+
+So instead, change your test to:
+
+ my $warning = warning { foo() };
+ like(
+ $warning,
+ qr/^this is a warning/,
+ 'got a warning from foo()',
+ ) or diag 'got warning(s): ', explain($warning);
+
+=head2 allow_patterns
+
+ allow_patterns(qr/always allow this warning/);
+ {
+ my $temp = allow_patterns(qr/only allow in this scope/, qr/another temporary warning/);
+ ... stuff ...
+ }
+
+Given one or more regular expressions, in C<qr/.../> form, add them to the allow-list (warnings will
+be emitted with C<note> rather than triggering the warning handler). If the return value is saved in
+a local variable, the warning exemption will only be in effect for that local scope (the addition is
+reversed at the end of the scope); otherwise, the effect is global.
+
+=head2 disallow_patterns
+
+Given one or more regular expressions, in C<qr/.../> form, remove it from the allow-list. The
+pattern must exactly match a pattern previously provided to L</allow_patterns>.
+
+=head1 IMPORT OPTIONS
+
+=head2 C<:all>
+
+Imports all functions listed above
+
+=head2 C<:no_end_test>
+
+Disables the addition of a C<had_no_warnings> test
+via C<END> or C<done_testing>
+
+=head2 C<:fail_on_warning>
+
+=for stopwords unexempted
+
+When used, fail immediately when an unexempted warning is generated (as opposed to waiting until
+L</had_no_warnings> or C<done_testing> is called).
+
+I recommend you only turn this option on when debugging a test, to see where a surprise warning is coming from,
+and rely on the end-of-tests check otherwise.
+
+=head2 C<:report_warnings>
+
+When used, C<had_no_warnings()> will print all the unexempted warning content, in case it had been suppressed
+earlier by other captures (such as L<Test::Output/stderr_like> or L<Capture::Tiny/capture>).
+
+=head1 OTHER OPTIONS
+
+You can temporarily turn off the failure behaviour of this module, swapping it out for reporting
+(see C<:report_warnings> above) with:
+
+ $ENV{PERL_TEST_WARNINGS_ONLY_REPORT_WARNINGS} = 1;
+
+This can be useful for working around problematic modules that have warnings in newer Perl versions.
+
+=head1 CAVEATS
+
+=for stopwords smartmatch TODO irc
+
+Sometimes new warnings can appear in Perl that should B<not> block
+installation -- for example, smartmatch was recently deprecated in
+perl 5.17.11, so now any distribution that uses smartmatch and also
+tests for warnings cannot be installed under 5.18.0. You might want to
+consider only making warnings fail tests in an author environment -- you can
+do this with the L<if> pragma:
+
+ use if $ENV{AUTHOR_TESTING} || $ENV{RELEASE_TESTING}, 'Test::Warnings';
+
+In future versions of this module, when interfaces are added to test the
+content of warnings, there will likely be additional sugar available to
+indicate that warnings should be checked only in author tests (or TODO when
+not in author testing), but will still provide exported subs. Comments are
+enthusiastically solicited - drop me an email, write up an RT ticket, or come
+by C<#perl-qa> on irc!
+
+=for stopwords Achtung
+
+B<Achtung!> This is not a great idea:
+
+ sub warning_like(&$;$) {
+ my ($code, $pattern, $name) = @_;
+ like( &warning($code), $pattern, $name );
+ }
+
+ warning_like( { ... }, qr/foo/, 'foo appears in the warning' );
+
+If the code in the C<{ ... }> is going to warn with a stack trace with the
+arguments to each subroutine in its call stack (for example via C<Carp::cluck>),
+the test name, "foo appears in the warning" will itself be matched by the
+regex (see F<examples/warning_like.t>). Instead, write this:
+
+ like( warning { ... }, qr/foo/, 'foo appears in the warning' );
+
+=head1 CAVEATS
+
+If you are using another module that sets its own warning handler (for example L<Devel::Confess> or
+L<diagnostics>) your results may be mixed, as those handlers will interfere with this module's
+ability to properly detect and capture warnings in their original form.
+
+=head1 TO DO (or: POSSIBLE FEATURES COMING IN FUTURE RELEASES)
+
+=over
+
+=item * C<< allow_warnings(qr/.../) >> - allow some warnings and not others
+
+=for stopwords subtest subtests
+
+=item * more sophisticated handling in subtests - if we save some state on the
+L<Test::Builder> object itself, we can allow warnings in a subtest and then
+the state will revert when the subtest ends, as well as check for warnings at
+the end of every subtest via C<done_testing>.
+
+=item * sugar for making failures TODO when testing outside an author
+environment
+
+=back
+
+=head1 SEE ALSO
+
+=for stopwords YANWT
+
+=over 4
+
+=item *
+
+L<Test::NoWarnings>
+
+=item *
+
+L<Test::FailWarnings>
+
+=item *
+
+L<blogs.perl.org: YANWT (Yet Another No-Warnings Tester)|http://blogs.perl.org/users/ether/2013/03/yanwt-yet-another-no-warnings-tester.html>
+
+=item *
+
+L<strictures> - which makes all warnings fatal in tests, hence lessening the need for special warning testing
+
+=item *
+
+L<Test::Warn>
+
+=item *
+
+L<Test::Fatal>
+
+=back
+
+=head1 SUPPORT
+
+Bugs may be submitted through L<the RT bug tracker|https://rt.cpan.org/Public/Dist/Display.html?Name=Test-Warnings>
+(or L<bug-Test-Warnings@rt.cpan.org|mailto:bug-Test-Warnings@rt.cpan.org>).
+
+There is also a mailing list available for users of this distribution, at
+L<http://lists.perl.org/list/perl-qa.html>.
+
+There is also an irc channel available for users of this distribution, at
+L<C<#perl> on C<irc.perl.org>|irc://irc.perl.org/#perl-qa>.
+
+I am also usually active on irc, as 'ether' at C<irc.perl.org> and C<irc.libera.chat>.
+
+=head1 AUTHOR
+
+Karen Etheridge <ether@cpan.org>
+
+=head1 CONTRIBUTORS
+
+=for stopwords Graham Knop A. Sinan Unur Leon Timmermans Tina Mueller
+
+=over 4
+
+=item *
+
+Graham Knop <haarg@haarg.org>
+
+=item *
+
+A. Sinan Unur <nanis@cpan.org>
+
+=item *
+
+Leon Timmermans <fawaka@gmail.com>
+
+=item *
+
+Tina Mueller <cpan2@tinita.de>
+
+=back
+
+=head1 COPYRIGHT AND LICENCE
+
+This software is copyright (c) 2013 by Karen Etheridge.
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+=cut
diff --git a/Master/tlpkg/tlperl/site/lib/URI.pm b/Master/tlpkg/tlperl/site/lib/URI.pm
index 9cde9dd1132..c80cb43c7a7 100644
--- a/Master/tlpkg/tlperl/site/lib/URI.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI.pm
@@ -3,7 +3,10 @@ package URI;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
+
+# 1=version 5.10 and earlier; 0=version 5.11 and later
+use constant HAS_RESERVED_SQUARE_BRACKETS => $ENV{URI_HAS_RESERVED_SQUARE_BRACKETS} ? 1 : 0;
our ($ABS_REMOTE_LEADING_DOTS, $ABS_ALLOW_RELATIVE_SCHEME, $DEFAULT_QUERY_FORM_DELIMITER);
@@ -11,13 +14,29 @@ my %implements; # mapping from scheme to implementor class
# Some "official" character classes
-our $reserved = q(;/?:@&=+$,[]);
+our $reserved = HAS_RESERVED_SQUARE_BRACKETS ? q(;/?:@&=+$,[]) : q(;/?:@&=+$,);
our $mark = q(-_.!~*'()); #'; emacs
our $unreserved = "A-Za-z0-9\Q$mark\E";
our $uric = quotemeta($reserved) . $unreserved . "%";
+our $uric4host = $uric . ( HAS_RESERVED_SQUARE_BRACKETS ? '' : quotemeta( q([]) ) );
+our $uric4user = quotemeta( q{!$'()*,;:._~%-+=%&} ) . "A-Za-z0-9" . ( HAS_RESERVED_SQUARE_BRACKETS ? quotemeta( q([]) ) : '' ); # RFC-3987: iuserinfo w/o UTF
our $scheme_re = '[a-zA-Z][a-zA-Z0-9.+\-]*';
+# These schemes don't have an IPv6+ address part.
+our $schemes_without_host_part_re = 'data|ldapi|urn|sqlite|sqlite3';
+
+# These schemes can have an IPv6+ authority part:
+# file, ftp, gopher, http, https, ldap, ldaps, mms, news, nntp, nntps, pop, rlogin, rtsp, rtspu, rsync, sip, sips, snews,
+# telnet, tn3270, ssh, sftp
+# (all DB URIs, i.e. cassandra, couch, couchdb, etc.), except 'sqlite:', 'sqlite3:'. Others?
+#MAINT: URI has no test coverage for DB schemes
+#MAINT: decoupling - perhaps let each class decide itself by defining a member function 'scheme_has_authority_part()'?
+
+#MAINT: 'mailto:' needs special treatment for IPv* addresses / RFC 5321 (4.1.3). Until then: restore all '[', ']'
+# These schemes need fallback to previous (<= 5.10) encoding until a specific handler is available.
+our $fallback_schemes_re = 'mailto';
+
use Carp ();
use URI::Escape ();
@@ -38,7 +57,7 @@ sub new
$uri = defined ($uri) ? "$uri" : ""; # stringify
# Get rid of potential wrapping
- $uri =~ s/^<(?:URL:)?(.*)>$/$1/; #
+ $uri =~ s/^<(?:URL:)?(.*)>$/$1/; #
$uri =~ s/^"(.*)"$/$1/;
$uri =~ s/^\s+//;
$uri =~ s/\s+$//;
@@ -86,10 +105,42 @@ sub _init
}
+#-- Version: 5.11+
+# Since the complete URI will be percent-encoded including '[' and ']',
+# we selectively unescape square brackets from the authority/host part of the URI.
+# Derived modules that implement _uric_escape() should take this into account
+# if they do not rely on URI::_uric_escape().
+# No unescaping is performed for the userinfo@ part of the authority part.
+sub _fix_uric_escape_for_host_part {
+ return if HAS_RESERVED_SQUARE_BRACKETS;
+ return if $_[0] !~ /%/;
+ return if $_[0] =~ m{^(?:$URI::schemes_without_host_part_re):}os;
+
+ # until a scheme specific handler is available, fall back to previous behavior of v5.10 (i.e. 'mailto:')
+ if ($_[0] =~ m{^(?:$URI::fallback_schemes_re):}os) {
+ $_[0] =~ s/\%5B/[/gi;
+ $_[0] =~ s/\%5D/]/gi;
+ return;
+ }
+
+ if ($_[0] =~ m{^((?:$URI::scheme_re:)?)//([^/?\#]+)(.*)$}os) {
+ my $orig = $2;
+ my ($user, $host) = $orig =~ /^(.*@)?([^@]*)$/;
+ $user ||= '';
+ my $port = $host =~ s/(:\d+)$// ? $1 : '';
+ #MAINT: die() here if scheme indicates TCP/UDP and port is out of range [0..65535] ?
+ $host =~ s/\%5B/[/gi;
+ $host =~ s/\%5D/]/gi;
+ $_[0] =~ s/\Q$orig\E/$user$host$port/;
+ }
+}
+
+
sub _uric_escape
{
my($class, $str) = @_;
$str =~ s*([^$uric\#])* URI::Escape::escape_char($1) *ego;
+ _fix_uric_escape_for_host_part( $str );
utf8::downgrade($str);
return $str;
}
@@ -130,6 +181,8 @@ sub implementor
# check we actually have one for the scheme:
unless (@{"${ic}::ISA"}) {
if (not exists $require_attempted{$ic}) {
+ $require_attempted{$ic} = 1;
+
# Try to load it
my $_old_error = $@;
eval "require $ic";
@@ -179,7 +232,7 @@ sub _scheme
Carp::croak("Bad scheme '$new'") unless $new =~ /^$scheme_re$/o;
$old = $1 if $$self =~ s/^($scheme_re)://o;
my $newself = URI->new("$new:$$self");
- $$self = $$newself;
+ $$self = $$newself;
bless $self, ref($newself);
}
else {
@@ -708,8 +761,79 @@ documents as this avoids the trouble of escaping the "&" character.
You might also set the $URI::DEFAULT_QUERY_FORM_DELIMITER variable to
";" for the same global effect.
-The C<URI::QueryParam> module can be loaded to add further methods to
-manipulate the form of a URI. See L<URI::QueryParam> for details.
+=item @keys = $u->query_param
+
+=item @values = $u->query_param( $key )
+
+=item $first_value = $u->query_param( $key )
+
+=item $u->query_param( $key, $value,... )
+
+If $u->query_param is called with no arguments, it returns all the
+distinct parameter keys of the URI. In a scalar context it returns the
+number of distinct keys.
+
+When a $key argument is given, the method returns the parameter values with the
+given key. In a scalar context, only the first parameter value is
+returned.
+
+If additional arguments are given, they are used to update successive
+parameters with the given key. If any of the values provided are
+array references, then the array is dereferenced to get the actual
+values.
+
+Please note that you can supply multiple values to this method, but you cannot
+supply multiple keys.
+
+Do this:
+
+ $uri->query_param( widget_id => 1, 5, 9 );
+
+Do NOT do this:
+
+ $uri->query_param( widget_id => 1, frobnicator_id => 99 );
+
+=item $u->query_param_append($key, $value,...)
+
+Adds new parameters with the given
+key without touching any old parameters with the same key. It
+can be explained as a more efficient version of:
+
+ $u->query_param($key,
+ $u->query_param($key),
+ $value,...);
+
+One difference is that this expression would return the old values
+of $key, whereas the query_param_append() method does not.
+
+=item @values = $u->query_param_delete($key)
+
+=item $first_value = $u->query_param_delete($key)
+
+Deletes all key/value pairs with the given key.
+The old values are returned. In a scalar context, only the first value
+is returned.
+
+Using the query_param_delete() method is slightly more efficient than
+the equivalent:
+
+ $u->query_param($key, []);
+
+=item $hashref = $u->query_form_hash
+
+=item $u->query_form_hash( \%new_form )
+
+Returns a reference to a hash that represents the
+query form's key/value pairs. If a key occurs multiple times, then the hash
+value becomes an array reference.
+
+Note that sequence information is lost. This means that:
+
+ $u->query_form_hash($u->query_form_hash);
+
+is not necessarily a no-op, as it may reorder the key/value pairs.
+The values returned by the query_param() method should stay the same
+though.
=item $uri->query_keywords
@@ -754,7 +878,7 @@ every case where it has been used.
Sets and returns the unescaped hostname.
-If the $new_host string ends with a colon and a number, then this
+If the C<$new_host> string ends with a colon and a number, then this
number also sets the port.
For IPv6 addresses the brackets around the raw address is removed in the return
@@ -762,9 +886,17 @@ value from $uri->host. When setting the host attribute to an IPv6 address you
can use a raw address or one enclosed in brackets. The address needs to be
enclosed in brackets if you want to pass in a new port value as well.
+ my $uri = URI->new("http://www.\xC3\xBCri-sample/foo/bar.html");
+ print $u->host; # www.xn--ri-sample-fra0f
+
+
=item $uri->ihost
-Returns the host in Unicode form. Any IDNA A-labels are turned into U-labels.
+Returns the host in Unicode form. Any IDNA A-labels (encoded unicode chars with
+I<xn--> prefix) are turned into U-labels (unicode chars).
+
+ my $uri = URI->new("http://www.\xC3\xBCri-sample/foo/bar.html");
+ print $u->ihost; # www.\xC3\xBCri-sample
=item $uri->port
@@ -864,6 +996,30 @@ implemented. The scheme is used to reference HTTP servers through SSL
connections. Its syntax is the same as http, but the default
port is different.
+=item B<geo>:
+
+The I<geo> URI scheme is specified in L<RFC 5870|http://tools.ietf.org/html/rfc5870>.
+The scheme is used to reference physical location in a two- or
+three-dimensional coordinate reference system in a compact, simple,
+human-readable, and protocol-independent way.
+
+C<URI> objects belonging to the geo scheme support the common methods.
+
+=item B<icap>:
+
+The I<icap> URI scheme is specified in L<RFC 3507|http://tools.ietf.org/html/rfc3507>.
+The scheme is used to reference resources hosted by ICAP servers.
+
+C<URI> objects belonging to the icap scheme support the common,
+generic and server methods.
+
+=item B<icaps>:
+
+The I<icaps> URI scheme is specified in L<RFC 3507|http://tools.ietf.org/html/rfc3507> as well.
+The scheme is used to reference ICAP servers through SSL
+connections. Its syntax is the same as icap, including the same
+default port.
+
=item B<ldap>:
The I<ldap> URI scheme is specified in RFC 2255. LDAP is the
@@ -1087,6 +1243,34 @@ delimited by ";" instead of "&" which is the default.
=back
+=head1 ENVIRONMENT VARIABLES
+
+=over 4
+
+=item URI_HAS_RESERVED_SQUARE_BRACKETS
+
+Before version 5.11, URI treated square brackets as reserved characters
+throughout the whole URI string. However, these brackets are reserved
+only within the authority/host part of the URI and nowhere else (RFC 3986).
+
+Starting with version 5.11, URI takes this distinction into account.
+Setting the environment variable C<URI_HAS_RESERVED_SQUARE_BRACKETS>
+(programmatically or via the shell), restores the old behavior.
+
+ #-- restore 5.10 behavior programmatically
+ BEGIN {
+ $ENV{URI_HAS_RESERVED_SQUARE_BRACKETS} = 1;
+ }
+ use URI ();
+
+I<Note>: This environment variable is just used during initialization and has to be set
+ I<before> module URI is used/required. Changing it at run time has no effect.
+
+Its value can be checked programmatically by accessing the constant
+C<URI::HAS_RESERVED_SQUARE_BRACKETS>.
+
+=back
+
=head1 BUGS
There are some things that are not quite right:
@@ -1129,7 +1313,7 @@ readable alternative.
=head1 SEE ALSO
-L<URI::file>, L<URI::WithBase>, L<URI::QueryParam>, L<URI::Escape>,
+L<URI::file>, L<URI::WithBase>, L<URI::Escape>,
L<URI::Split>, L<URI::Heuristic>
RFC 2396: "Uniform Resource Identifiers (URI): Generic Syntax",
diff --git a/Master/tlpkg/tlperl/site/lib/URI/Escape.pm b/Master/tlpkg/tlperl/site/lib/URI/Escape.pm
index 5760bb55b0a..c784c81fe0e 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/Escape.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/Escape.pm
@@ -71,6 +71,13 @@ as the reserved characters. I.e. the default is:
"^A-Za-z0-9\-\._~"
+The second argument can also be specified as a regular expression object:
+
+ qr/[^A-Za-z]/
+
+Any strings matched by this regular expression will have all of their
+characters escaped.
+
=item uri_escape_utf8( $string )
=item uri_escape_utf8( $string, $unsafe )
@@ -141,7 +148,7 @@ use Exporter 5.57 'import';
our %escapes;
our @EXPORT = qw(uri_escape uri_unescape uri_escape_utf8);
our @EXPORT_OK = qw(%escapes);
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use Carp ();
@@ -160,17 +167,37 @@ my %Unsafe = (
sub uri_escape {
my($text, $patn) = @_;
return undef unless defined $text;
+ my $re;
if (defined $patn){
- unless (exists $subst{$patn}) {
- # Because we can't compile the regex we fake it with a cached sub
- (my $tmp = $patn) =~ s,/,\\/,g;
- eval "\$subst{\$patn} = sub {\$_[0] =~ s/([$tmp])/\$escapes{\$1} || _fail_hi(\$1)/ge; }";
- Carp::croak("uri_escape: $@") if $@;
+ if (ref $patn eq 'Regexp') {
+ $text =~ s{($patn)}{
+ join('', map +($escapes{$_} || _fail_hi($_)), split //, "$1")
+ }ge;
+ return $text;
}
- &{$subst{$patn}}($text);
- } else {
- $text =~ s/($Unsafe{RFC3986})/$escapes{$1} || _fail_hi($1)/ge;
+ $re = $subst{$patn};
+ if (!defined $re) {
+ $re = $patn;
+ # we need to escape the [] characters, except for those used in
+ # posix classes. if they are prefixed by a backslash, allow them
+ # through unmodified.
+ $re =~ s{(\[:\w+:\])|(\\)?([\[\]]|\\\z)}{
+ defined $1 ? $1 : defined $2 ? "$2$3" : "\\$3"
+ }ge;
+ eval {
+ # disable the warnings here, since they will trigger later
+ # when used, and we only want them to appear once per call,
+ # but every time the same pattern is used.
+ no warnings 'regexp';
+ $re = $subst{$patn} = qr{[$re]};
+ 1;
+ } or Carp::croak("uri_escape: $@");
+ }
+ }
+ else {
+ $re = $Unsafe{RFC3986};
}
+ $text =~ s/($re)/$escapes{$1} || _fail_hi($1)/ge;
$text;
}
diff --git a/Master/tlpkg/tlperl/site/lib/URI/Heuristic.pm b/Master/tlpkg/tlperl/site/lib/URI/Heuristic.pm
index f2637a028be..bc775a53bcb 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/Heuristic.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/Heuristic.pm
@@ -91,7 +91,7 @@ use warnings;
use Exporter 5.57 'import';
our @EXPORT_OK = qw(uf_uri uf_uristr uf_url uf_urlstr);
-our $VERSION = '5.10';
+our $VERSION = '5.27';
our ($MY_COUNTRY, $DEBUG);
diff --git a/Master/tlpkg/tlperl/site/lib/URI/IRI.pm b/Master/tlpkg/tlperl/site/lib/URI/IRI.pm
index fd185a9e493..f62c77bdd5d 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/IRI.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/IRI.pm
@@ -8,7 +8,7 @@ use URI ();
use overload '""' => sub { shift->as_string };
-our $VERSION = '5.10';
+our $VERSION = '5.27';
sub new {
my($class, $uri, $scheme) = @_;
diff --git a/Master/tlpkg/tlperl/site/lib/URI/QueryParam.pm b/Master/tlpkg/tlperl/site/lib/URI/QueryParam.pm
index c7ff25ed9f5..de3c54cf181 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/QueryParam.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/QueryParam.pm
@@ -1,90 +1,8 @@
package URI::QueryParam;
-
use strict;
use warnings;
-our $VERSION = '5.10';
-
-sub URI::_query::query_param {
- my $self = shift;
- my @old = $self->query_form;
-
- if (@_ == 0) {
- # get keys
- my (%seen, $i);
- return grep !($i++ % 2 || $seen{$_}++), @old;
- }
-
- my $key = shift;
- my @i = grep $_ % 2 == 0 && $old[$_] eq $key, 0 .. $#old;
-
- if (@_) {
- my @new = @old;
- my @new_i = @i;
- my @vals = map { ref($_) eq 'ARRAY' ? @$_ : $_ } @_;
-
- while (@new_i > @vals) {
- splice @new, pop @new_i, 2;
- }
- if (@vals > @new_i) {
- my $i = @new_i ? $new_i[-1] + 2 : @new;
- my @splice = splice @vals, @new_i, @vals - @new_i;
-
- splice @new, $i, 0, map { $key => $_ } @splice;
- }
- if (@vals) {
- #print "SET $new_i[0]\n";
- @new[ map $_ + 1, @new_i ] = @vals;
- }
-
- $self->query_form(\@new);
- }
-
- return wantarray ? @old[map $_+1, @i] : @i ? $old[$i[0]+1] : undef;
-}
-
-sub URI::_query::query_param_append {
- my $self = shift;
- my $key = shift;
- my @vals = map { ref $_ eq 'ARRAY' ? @$_ : $_ } @_;
- $self->query_form($self->query_form, $key => \@vals); # XXX
- return;
-}
-
-sub URI::_query::query_param_delete {
- my $self = shift;
- my $key = shift;
- my @old = $self->query_form;
- my @vals;
-
- for (my $i = @old - 2; $i >= 0; $i -= 2) {
- next if $old[$i] ne $key;
- push(@vals, (splice(@old, $i, 2))[1]);
- }
- $self->query_form(\@old) if @vals;
- return wantarray ? reverse @vals : $vals[-1];
-}
-
-sub URI::_query::query_form_hash {
- my $self = shift;
- my @old = $self->query_form;
- if (@_) {
- $self->query_form(@_ == 1 ? %{shift(@_)} : @_);
- }
- my %hash;
- while (my($k, $v) = splice(@old, 0, 2)) {
- if (exists $hash{$k}) {
- for ($hash{$k}) {
- $_ = [$_] unless ref($_) eq "ARRAY";
- push(@$_, $v);
- }
- }
- else {
- $hash{$k} = $v;
- }
- }
- return \%hash;
-}
+our $VERSION = '5.27';
1;
@@ -97,108 +15,16 @@ URI::QueryParam - Additional query methods for URIs
=head1 SYNOPSIS
use URI;
- use URI::QueryParam;
-
- $u = URI->new("", "http");
- $u->query_param(foo => 1, 2, 3);
- print $u->query; # prints foo=1&foo=2&foo=3
-
- for my $key ($u->query_param) {
- print "$key: ", join(", ", $u->query_param($key)), "\n";
- }
=head1 DESCRIPTION
-Loading the C<URI::QueryParam> module adds some extra methods to
-URIs that support query methods. These methods provide an alternative
-interface to the $u->query_form data.
-
-The query_param_* methods have deliberately been made identical to the
-interface of the corresponding C<CGI.pm> methods.
-
-The following additional methods are made available:
-
-=over
-
-=item @keys = $u->query_param
-
-=item @values = $u->query_param( $key )
-
-=item $first_value = $u->query_param( $key )
-
-=item $u->query_param( $key, $value,... )
-
-If $u->query_param is called with no arguments, it returns all the
-distinct parameter keys of the URI. In a scalar context it returns the
-number of distinct keys.
-
-When a $key argument is given, the method returns the parameter values with the
-given key. In a scalar context, only the first parameter value is
-returned.
-
-If additional arguments are given, they are used to update successive
-parameters with the given key. If any of the values provided are
-array references, then the array is dereferenced to get the actual
-values.
-
-Please note that you can supply multiple values to this method, but you cannot
-supply multiple keys.
-
-Do this:
-
- $uri->query_param( widget_id => 1, 5, 9 );
-
-Do NOT do this:
-
- $uri->query_param( widget_id => 1, frobnicator_id => 99 );
-
-=item $u->query_param_append($key, $value,...)
-
-Adds new parameters with the given
-key without touching any old parameters with the same key. It
-can be explained as a more efficient version of:
-
- $u->query_param($key,
- $u->query_param($key),
- $value,...);
-
-One difference is that this expression would return the old values
-of $key, whereas the query_param_append() method does not.
-
-=item @values = $u->query_param_delete($key)
-
-=item $first_value = $u->query_param_delete($key)
-
-Deletes all key/value pairs with the given key.
-The old values are returned. In a scalar context, only the first value
-is returned.
-
-Using the query_param_delete() method is slightly more efficient than
-the equivalent:
-
- $u->query_param($key, []);
-
-=item $hashref = $u->query_form_hash
-
-=item $u->query_form_hash( \%new_form )
-
-Returns a reference to a hash that represents the
-query form's key/value pairs. If a key occurs multiple times, then the hash
-value becomes an array reference.
-
-Note that sequence information is lost. This means that:
-
- $u->query_form_hash($u->query_form_hash);
-
-is not necessarily a no-op, as it may reorder the key/value pairs.
-The values returned by the query_param() method should stay the same
-though.
-
-=back
-
-=head1 SEE ALSO
-
-L<URI>, L<CGI>
+C<URI::QueryParam> used to provide the
+L<< query_form_hash|URI/$hashref = $u->query_form_hash >>,
+L<< query_param|URI/@keys = $u->query_param >>
+L<< query_param_append|URI/$u->query_param_append($key, $value,...) >>, and
+L<< query_param_delete|URI/ @values = $u->query_param_delete($key) >> methods
+on L<URI> objects. These methods have been merged into L<URI> itself, so this
+module is now a no-op.
=head1 COPYRIGHT
diff --git a/Master/tlpkg/tlperl/site/lib/URI/Split.pm b/Master/tlpkg/tlperl/site/lib/URI/Split.pm
index b31d8281ce6..9ac3b15eaff 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/Split.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/Split.pm
@@ -3,7 +3,7 @@ package URI::Split;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use Exporter 5.57 'import';
our @EXPORT_OK = qw(uri_split uri_join);
diff --git a/Master/tlpkg/tlperl/site/lib/URI/URL.pm b/Master/tlpkg/tlperl/site/lib/URI/URL.pm
index 9591e9e76af..1b88311af41 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/URL.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/URL.pm
@@ -5,7 +5,7 @@ use warnings;
use parent 'URI::WithBase';
-our $VERSION = '5.10';
+our $VERSION = '5.27';
# Provide as much as possible of the old URI::URL interface for backwards
# compatibility...
diff --git a/Master/tlpkg/tlperl/site/lib/URI/WithBase.pm b/Master/tlpkg/tlperl/site/lib/URI/WithBase.pm
index 76c331b0af9..29e76d4b2fb 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/WithBase.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/WithBase.pm
@@ -6,7 +6,7 @@ use warnings;
use URI ();
use Scalar::Util qw(blessed);
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use overload '""' => "as_string", fallback => 1;
diff --git a/Master/tlpkg/tlperl/site/lib/URI/_foreign.pm b/Master/tlpkg/tlperl/site/lib/URI/_foreign.pm
index bc44f4a0595..7225450b192 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/_foreign.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/_foreign.pm
@@ -5,6 +5,6 @@ use warnings;
use parent 'URI::_generic';
-our $VERSION = '5.10';
+our $VERSION = '5.27';
1;
diff --git a/Master/tlpkg/tlperl/site/lib/URI/_generic.pm b/Master/tlpkg/tlperl/site/lib/URI/_generic.pm
index 9ff33b21429..50bc7d27dff 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/_generic.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/_generic.pm
@@ -8,13 +8,33 @@ use parent qw(URI URI::_query);
use URI::Escape qw(uri_unescape);
use Carp ();
-our $VERSION = '5.10';
+our $VERSION = '5.27';
-my $ACHAR = $URI::uric; $ACHAR =~ s,\\[/?],,g;
-my $PCHAR = $URI::uric; $PCHAR =~ s,\\[?],,g;
+my $ACHAR = URI::HAS_RESERVED_SQUARE_BRACKETS ? $URI::uric : $URI::uric4host; $ACHAR =~ s,\\[/?],,g;
+my $PCHAR = $URI::uric; $PCHAR =~ s,\\[?],,g;
sub _no_scheme_ok { 1 }
+our $IPv6_re;
+
+sub _looks_like_raw_ip6_address {
+ my $addr = shift;
+
+ if ( !$IPv6_re ) { #-- lazy / runs once / use Regexp::IPv6 if installed
+ eval {
+ require Regexp::IPv6;
+ Regexp::IPv6->import( qw($IPv6_re) );
+ 1;
+ } || do { $IPv6_re = qr/[:0-9a-f]{3,}/; }; #-- fallback: unambitious guess
+ }
+
+ return 0 unless $addr;
+ return 0 if $addr =~ tr/:/:/ < 2; #-- fallback must not create false positive for IPv4:Port = 0:0
+ return 1 if $addr =~ /^$IPv6_re$/i;
+ return 0;
+}
+
+
sub authority
{
my $self = shift;
@@ -26,6 +46,13 @@ sub authority
my $rest = $3;
if (defined $auth) {
$auth =~ s/([^$ACHAR])/ URI::Escape::escape_char($1)/ego;
+ if ( my ($user, $host) = $auth =~ /^(.*@)?([^@]+)$/ ) { #-- special escape userinfo part
+ $user ||= '';
+ $user =~ s/([^$URI::uric4user])/ URI::Escape::escape_char($1)/ego;
+ $user =~ s/%40$/\@/; # recover final '@'
+ $host = "[$host]" if _looks_like_raw_ip6_address( $host );
+ $auth = $user . $host;
+ }
utf8::downgrade($auth);
$$self .= "//$auth";
}
diff --git a/Master/tlpkg/tlperl/site/lib/URI/_idna.pm b/Master/tlpkg/tlperl/site/lib/URI/_idna.pm
index 4292d3e9821..f36e9379833 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/_idna.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/_idna.pm
@@ -9,7 +9,7 @@ use warnings;
use URI::_punycode qw(decode_punycode encode_punycode);
use Carp qw(croak);
-our $VERSION = '5.10';
+our $VERSION = '5.27';
BEGIN {
*URI::_idna::_ENV_::JOIN_LEAKS_UTF8_FLAGS = "$]" < 5.008_003
diff --git a/Master/tlpkg/tlperl/site/lib/URI/_ldap.pm b/Master/tlpkg/tlperl/site/lib/URI/_ldap.pm
index 43193b4c9d8..d2b943a79d3 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/_ldap.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/_ldap.pm
@@ -7,7 +7,7 @@ package URI::_ldap;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use URI::Escape qw(uri_unescape);
diff --git a/Master/tlpkg/tlperl/site/lib/URI/_login.pm b/Master/tlpkg/tlperl/site/lib/URI/_login.pm
index c3d0583ccc3..e930bf08864 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/_login.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/_login.pm
@@ -5,7 +5,7 @@ use warnings;
use parent qw(URI::_server URI::_userpass);
-our $VERSION = '5.10';
+our $VERSION = '5.27';
# Generic terminal logins. This is used as a base class for 'telnet',
# 'tn3270', and 'rlogin' URL schemes.
diff --git a/Master/tlpkg/tlperl/site/lib/URI/_punycode.pm b/Master/tlpkg/tlperl/site/lib/URI/_punycode.pm
index eeb3662e1fe..697c1b7bf66 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/_punycode.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/_punycode.pm
@@ -3,7 +3,7 @@ package URI::_punycode;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use Exporter 'import';
our @EXPORT = qw(encode_punycode decode_punycode);
@@ -25,7 +25,7 @@ my $BasicRE = qr/[\x00-\x7f]/;
sub _croak { require Carp; Carp::croak(@_); }
-sub digit_value {
+sub _digit_value {
my $code = shift;
return ord($code) - ord("A") if $code =~ /[A-Z]/;
return ord($code) - ord("a") if $code =~ /[a-z]/;
@@ -33,14 +33,14 @@ sub digit_value {
return;
}
-sub code_point {
+sub _code_point {
my $digit = shift;
return $digit + ord('a') if 0 <= $digit && $digit <= 25;
return $digit + ord('0') - 26 if 26 <= $digit && $digit <= 36;
die 'NOT COME HERE';
}
-sub adapt {
+sub _adapt {
my($delta, $numpoints, $firsttime) = @_;
$delta = $firsttime ? $delta / DAMP : $delta / 2;
$delta += $delta / $numpoints;
@@ -71,7 +71,7 @@ sub decode_punycode {
LOOP:
for (my $k = BASE; 1; $k += BASE) {
my $cp = substr($code, 0, 1, '');
- my $digit = digit_value($cp);
+ my $digit = _digit_value($cp);
defined $digit or return _croak("invalid punycode input");
$i += $digit * $w;
my $t = ($k <= $bias) ? TMIN
@@ -79,7 +79,7 @@ sub decode_punycode {
last LOOP if $digit < $t;
$w *= (BASE - $t);
}
- $bias = adapt($i - $oldi, @output + 1, $oldi == 0);
+ $bias = _adapt($i - $oldi, @output + 1, $oldi == 0);
warn "bias becomes $bias" if $DEBUG;
$n += $i / (@output + 1);
$i = $i % (@output + 1);
@@ -106,7 +106,7 @@ sub encode_punycode {
warn "basic codepoints: (@output)" if $DEBUG;
while ($h < @input) {
- my $m = min(grep { $_ >= $n } map ord, @input);
+ my $m = _min(grep { $_ >= $n } map ord, @input);
warn sprintf "next code point to insert is %04x", $m if $DEBUG;
$delta += ($m - $n) * ($h + 1);
$n = $m;
@@ -120,12 +120,12 @@ sub encode_punycode {
my $t = ($k <= $bias) ? TMIN :
($k >= $bias + TMAX) ? TMAX : $k - $bias;
last LOOP if $q < $t;
- my $cp = code_point($t + (($q - $t) % (BASE - $t)));
+ my $cp = _code_point($t + (($q - $t) % (BASE - $t)));
push @output, chr($cp);
$q = ($q - $t) / (BASE - $t);
}
- push @output, chr(code_point($q));
- $bias = adapt($delta, $h + 1, $h == $b);
+ push @output, chr(_code_point($q));
+ $bias = _adapt($delta, $h + 1, $h == $b);
warn "bias becomes $bias" if $DEBUG;
$delta = 0;
$h++;
@@ -137,7 +137,7 @@ sub encode_punycode {
return join '', @output;
}
-sub min {
+sub _min {
my $min = shift;
for (@_) { $min = $_ if $_ <= $min }
return $min;
diff --git a/Master/tlpkg/tlperl/site/lib/URI/_query.pm b/Master/tlpkg/tlperl/site/lib/URI/_query.pm
index b9b70c491d8..f39f35749e7 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/_query.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/_query.pm
@@ -6,7 +6,7 @@ use warnings;
use URI ();
use URI::Escape qw(uri_unescape);
-our $VERSION = '5.10';
+our $VERSION = '5.27';
sub query
{
@@ -51,10 +51,14 @@ sub query_form {
$key =~ s/ /+/g;
$vals = [ref($vals) eq "ARRAY" ? @$vals : $vals];
for my $val (@$vals) {
- $val = '' unless defined $val;
- $val =~ s/([;\/?:@&=+,\$\[\]%])/ URI::Escape::escape_char($1)/eg;
- $val =~ s/ /+/g;
- push(@query, "$key=$val");
+ if (defined $val) {
+ $val =~ s/([;\/?:@&=+,\$\[\]%])/ URI::Escape::escape_char($1)/eg;
+ $val =~ s/ /+/g;
+ push(@query, "$key=$val");
+ }
+ else {
+ push(@query, $key);
+ }
}
}
if (@query) {
@@ -70,8 +74,8 @@ sub query_form {
}
return if !defined($old) || !length($old) || !defined(wantarray);
return unless $old =~ /=/; # not a form
- map { s/\+/ /g; uri_unescape($_) }
- map { /=/ ? split(/=/, $_, 2) : ($_ => '')} split(/[&;]/, $old);
+ map { ( defined ) ? do { s/\+/ /g; uri_unescape($_) } : undef }
+ map { /=/ ? split(/=/, $_, 2) : ($_ => undef)} split(/[&;]/, $old);
}
# Handle ...?dog+bones type of query
@@ -94,4 +98,85 @@ sub query_keywords
# Some URI::URL compatibility stuff
sub equery { goto &query }
+sub query_param {
+ my $self = shift;
+ my @old = $self->query_form;
+
+ if (@_ == 0) {
+ # get keys
+ my (%seen, $i);
+ return grep !($i++ % 2 || $seen{$_}++), @old;
+ }
+
+ my $key = shift;
+ my @i = grep $_ % 2 == 0 && $old[$_] eq $key, 0 .. $#old;
+
+ if (@_) {
+ my @new = @old;
+ my @new_i = @i;
+ my @vals = map { ref($_) eq 'ARRAY' ? @$_ : $_ } @_;
+
+ while (@new_i > @vals) {
+ splice @new, pop @new_i, 2;
+ }
+ if (@vals > @new_i) {
+ my $i = @new_i ? $new_i[-1] + 2 : @new;
+ my @splice = splice @vals, @new_i, @vals - @new_i;
+
+ splice @new, $i, 0, map { $key => $_ } @splice;
+ }
+ if (@vals) {
+ #print "SET $new_i[0]\n";
+ @new[ map $_ + 1, @new_i ] = @vals;
+ }
+
+ $self->query_form(\@new);
+ }
+
+ return wantarray ? @old[map $_+1, @i] : @i ? $old[$i[0]+1] : undef;
+}
+
+sub query_param_append {
+ my $self = shift;
+ my $key = shift;
+ my @vals = map { ref $_ eq 'ARRAY' ? @$_ : $_ } @_;
+ $self->query_form($self->query_form, $key => \@vals); # XXX
+ return;
+}
+
+sub query_param_delete {
+ my $self = shift;
+ my $key = shift;
+ my @old = $self->query_form;
+ my @vals;
+
+ for (my $i = @old - 2; $i >= 0; $i -= 2) {
+ next if $old[$i] ne $key;
+ push(@vals, (splice(@old, $i, 2))[1]);
+ }
+ $self->query_form(\@old) if @vals;
+ return wantarray ? reverse @vals : $vals[-1];
+}
+
+sub query_form_hash {
+ my $self = shift;
+ my @old = $self->query_form;
+ if (@_) {
+ $self->query_form(@_ == 1 ? %{shift(@_)} : @_);
+ }
+ my %hash;
+ while (my($k, $v) = splice(@old, 0, 2)) {
+ if (exists $hash{$k}) {
+ for ($hash{$k}) {
+ $_ = [$_] unless ref($_) eq "ARRAY";
+ push(@$_, $v);
+ }
+ }
+ else {
+ $hash{$k} = $v;
+ }
+ }
+ return \%hash;
+}
+
1;
diff --git a/Master/tlpkg/tlperl/site/lib/URI/_segment.pm b/Master/tlpkg/tlperl/site/lib/URI/_segment.pm
index 364ca4857d9..948e07b6026 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/_segment.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/_segment.pm
@@ -11,7 +11,7 @@ use URI::Escape qw(uri_unescape);
use overload '""' => sub { $_[0]->[0] },
fallback => 1;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
sub new
{
diff --git a/Master/tlpkg/tlperl/site/lib/URI/_server.pm b/Master/tlpkg/tlperl/site/lib/URI/_server.pm
index fec55a4fe0c..baaf8457bb7 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/_server.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/_server.pm
@@ -7,7 +7,7 @@ use parent 'URI::_generic';
use URI::Escape qw(uri_unescape);
-our $VERSION = '5.10';
+our $VERSION = '5.27';
sub _uric_escape {
my($class, $str) = @_;
@@ -23,7 +23,8 @@ sub _uric_escape {
}
sub _host_escape {
- return unless $_[0] =~ /[^$URI::uric]/;
+ return if URI::HAS_RESERVED_SQUARE_BRACKETS and $_[0] !~ /[^$URI::uric]/;
+ return if !URI::HAS_RESERVED_SQUARE_BRACKETS and $_[0] !~ /[^$URI::uric4host]/;
eval {
require URI::_idna;
$_[0] = URI::_idna::encode($_[0]);
@@ -59,8 +60,8 @@ sub userinfo
$new =~ s/.*@//; # remove old stuff
my $ui = shift;
if (defined $ui) {
- $ui =~ s/@/%40/g; # protect @
- $new = "$ui\@$new";
+ $ui =~ s/([^$URI::uric4user])/ URI::Escape::escape_char($1)/ego;
+ $new = "$ui\@$new";
}
$self->authority($new);
}
diff --git a/Master/tlpkg/tlperl/site/lib/URI/_userpass.pm b/Master/tlpkg/tlperl/site/lib/URI/_userpass.pm
index acf571783a6..5fd36a78a26 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/_userpass.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/_userpass.pm
@@ -5,7 +5,7 @@ use warnings;
use URI::Escape qw(uri_unescape);
-our $VERSION = '5.10';
+our $VERSION = '5.27';
sub user
{
@@ -39,8 +39,8 @@ sub password
my $user = defined($info) ? $info : "";
$user =~ s/:.*//;
- if (!defined($new) && !length($user)) {
- $self->userinfo(undef);
+ if (!defined($new)) {
+ $self->userinfo(length $user ? $user : undef);
} else {
$new = "" unless defined($new);
$new =~ s/%/%25/g;
diff --git a/Master/tlpkg/tlperl/site/lib/URI/data.pm b/Master/tlpkg/tlperl/site/lib/URI/data.pm
index 666ef38afb4..2b87018b466 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/data.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/data.pm
@@ -5,7 +5,7 @@ use warnings;
use parent 'URI';
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use MIME::Base64 qw(decode_base64 encode_base64);
use URI::Escape qw(uri_unescape);
diff --git a/Master/tlpkg/tlperl/site/lib/URI/file.pm b/Master/tlpkg/tlperl/site/lib/URI/file.pm
index c9973ecce97..51f6431e8d5 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/file.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/file.pm
@@ -4,7 +4,7 @@ use strict;
use warnings;
use parent 'URI::_generic';
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use URI::Escape qw(uri_unescape);
@@ -113,13 +113,13 @@ URI::file - URI that maps to local file names
=head1 SYNOPSIS
use URI::file;
-
+
$u1 = URI->new("file:/foo/bar");
$u2 = URI->new("foo/bar", "file");
-
+
$u3 = URI::file->new($path);
$u4 = URI::file->new("c:\\windows\\", "win32");
-
+
$u1->file;
$u1->file("mac");
@@ -127,10 +127,8 @@ URI::file - URI that maps to local file names
The C<URI::file> class supports C<URI> objects belonging to the I<file>
URI scheme. This scheme allows us to map the conventional file names
-found on various computer systems to the URI name space. An old
-specification of the I<file> URI scheme is found in RFC 1738. Some
-older background information is also in RFC 1630. There are no newer
-specifications as far as I know.
+found on various computer systems to the URI name space,
+see L<RFC 8089|https://www.rfc-editor.org/rfc/rfc8089.html>.
If you simply want to construct I<file> URI objects from URI strings,
use the normal C<URI> constructor. If you want to construct I<file>
@@ -200,8 +198,9 @@ suitable for the local system:
Most computer systems today have hierarchically organized file systems.
Mapping the names used in these systems to the generic URI syntax
allows us to work with relative file URIs that behave as they should
-when resolved using the generic algorithm for URIs (specified in RFC
-2396). Mapping a file name to the generic URI syntax involves mapping
+when resolved using the generic algorithm for URIs (specified in L<RFC
+3986|https://www.rfc-editor.org/rfc/rfc3986.html>).
+Mapping a file name to the generic URI syntax involves mapping
the path separator character to "/" and encoding any reserved
characters that appear in the path segments of the file name. If
path segments consisting of the strings "." or ".." have a
@@ -301,11 +300,11 @@ If there is no mapping then the "Unix" implementation is used.
=item $URI::file::DEFAULT_AUTHORITY
-This determine what "authority" string to include in absolute file
+This determines what "authority" string to include in absolute file
URIs. It defaults to "". If you prefer verbose URIs you might set it
to be "localhost".
-Setting this value to C<undef> force behaviour compatible to URI v1.31
+Setting this value to C<undef> forces behaviour compatible to URI v1.31
and earlier. In this mode host names in UNC paths and drive letters
are mapped to the authority component on Windows, while we produce
authority-less URIs on Unix.
diff --git a/Master/tlpkg/tlperl/site/lib/URI/file/Base.pm b/Master/tlpkg/tlperl/site/lib/URI/file/Base.pm
index 5192f33a14c..993e6946d5f 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/file/Base.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/file/Base.pm
@@ -5,7 +5,7 @@ use warnings;
use URI::Escape ();
-our $VERSION = '5.10';
+our $VERSION = '5.27';
sub new
{
diff --git a/Master/tlpkg/tlperl/site/lib/URI/file/FAT.pm b/Master/tlpkg/tlperl/site/lib/URI/file/FAT.pm
index 521c3a05a4e..98b651666e5 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/file/FAT.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/file/FAT.pm
@@ -5,7 +5,7 @@ use warnings;
use parent 'URI::file::Win32';
-our $VERSION = '5.10';
+our $VERSION = '5.27';
sub fix_path
{
diff --git a/Master/tlpkg/tlperl/site/lib/URI/file/Mac.pm b/Master/tlpkg/tlperl/site/lib/URI/file/Mac.pm
index ee7bf578778..561982e93bd 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/file/Mac.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/file/Mac.pm
@@ -7,7 +7,7 @@ use parent 'URI::file::Base';
use URI::Escape qw(uri_unescape);
-our $VERSION = '5.10';
+our $VERSION = '5.27';
sub _file_extract_path
{
diff --git a/Master/tlpkg/tlperl/site/lib/URI/file/OS2.pm b/Master/tlpkg/tlperl/site/lib/URI/file/OS2.pm
index 14ec91570b1..357e9a43f0b 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/file/OS2.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/file/OS2.pm
@@ -5,7 +5,7 @@ use warnings;
use parent 'URI::file::Win32';
-our $VERSION = '5.10';
+our $VERSION = '5.27';
# The Win32 version translates k:/foo to file://k:/foo (?!)
# We add an empty host
diff --git a/Master/tlpkg/tlperl/site/lib/URI/file/QNX.pm b/Master/tlpkg/tlperl/site/lib/URI/file/QNX.pm
index cb478098988..7c6463e2fff 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/file/QNX.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/file/QNX.pm
@@ -5,7 +5,7 @@ use warnings;
use parent 'URI::file::Unix';
-our $VERSION = '5.10';
+our $VERSION = '5.27';
sub _file_extract_path
{
diff --git a/Master/tlpkg/tlperl/site/lib/URI/file/Unix.pm b/Master/tlpkg/tlperl/site/lib/URI/file/Unix.pm
index fa226f7765c..0c35e91d815 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/file/Unix.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/file/Unix.pm
@@ -7,7 +7,7 @@ use parent 'URI::file::Base';
use URI::Escape qw(uri_unescape);
-our $VERSION = '5.10';
+our $VERSION = '5.27';
sub _file_extract_path
{
diff --git a/Master/tlpkg/tlperl/site/lib/URI/file/Win32.pm b/Master/tlpkg/tlperl/site/lib/URI/file/Win32.pm
index bc1b373b4e2..4a7f0f3bef0 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/file/Win32.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/file/Win32.pm
@@ -7,7 +7,7 @@ use parent 'URI::file::Base';
use URI::Escape qw(uri_unescape);
-our $VERSION = '5.10';
+our $VERSION = '5.27';
sub _file_extract_authority
{
diff --git a/Master/tlpkg/tlperl/site/lib/URI/ftp.pm b/Master/tlpkg/tlperl/site/lib/URI/ftp.pm
index a6c12df271c..d0ba16f7548 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/ftp.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/ftp.pm
@@ -3,7 +3,7 @@ package URI::ftp;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent qw(URI::_server URI::_userpass);
diff --git a/Master/tlpkg/tlperl/site/lib/URI/geo.pm b/Master/tlpkg/tlperl/site/lib/URI/geo.pm
new file mode 100755
index 00000000000..da2b9517adc
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/URI/geo.pm
@@ -0,0 +1,418 @@
+package URI::geo;
+
+use warnings;
+use strict;
+
+use Carp;
+use URI::Split qw( uri_split uri_join );
+
+use base qw( URI );
+
+our $VERSION = '5.27';
+
+sub _MINIMUM_LATITUDE { return -90 }
+sub _MAXIMUM_LATITUDE { return 90 }
+sub _MINIMUM_LONGITUDE { return -180 }
+sub _MAXIMUM_LONGITUDE { return 180 }
+sub _MAX_POINTY_PARAMETERS { return 3 }
+
+sub _can {
+ my ($can_pt, @keys) = @_;
+ for my $key (@keys) {
+ return $key if $can_pt->can($key);
+ }
+ return;
+}
+
+sub _has {
+ my ($has_pt, @keys) = @_;
+ for my $key (@keys) {
+ return $key if exists $has_pt->{$key};
+ }
+ return;
+}
+
+# Try hard to extract location information from something. We handle lat,
+# lon, alt as scalars, arrays containing lat, lon, alt, hashes with
+# suitably named keys and objects with suitably named methods.
+
+sub _location_of_pointy_thing {
+ my ($class, @parameters) = @_;
+
+ my @lat = qw( lat latitude );
+ my @lon = qw( lon long longitude lng );
+ my @ele = qw( ele alt elevation altitude );
+
+ if (ref $parameters[0]) {
+ my $pt = shift @parameters;
+
+ if (@parameters) {
+ croak q[Too many arguments];
+ }
+
+ if (eval { $pt->can('can') }) {
+ for my $m (qw( location latlong )) {
+ return $pt->$m() if _can($pt, $m);
+ }
+
+ my $latk = _can($pt, @lat);
+ my $lonk = _can($pt, @lon);
+ my $elek = _can($pt, @ele);
+
+ if (defined $latk && defined $lonk) {
+ return $pt->$latk(), $pt->$lonk(),
+ defined $elek ? $pt->$elek() : undef;
+ }
+ }
+ elsif ('ARRAY' eq ref $pt) {
+ return $class->_location_of_pointy_thing(@{$pt});
+ }
+ elsif ('HASH' eq ref $pt) {
+
+ my $latk = _has($pt, @lat);
+ my $lonk = _has($pt, @lon);
+ my $elek = _has($pt, @ele);
+
+ if (defined $latk && defined $lonk) {
+ return $pt->{$latk}, $pt->{$lonk},
+ defined $elek ? $pt->{$elek} : undef;
+ }
+ }
+
+ croak q[Don't know how to convert point];
+ }
+ else {
+ croak q[Need lat, lon or lat, lon, alt]
+ if @parameters < 2 || @parameters > _MAX_POINTY_PARAMETERS();
+ return my ($lat, $lon, $alt) = @parameters;
+ }
+}
+
+sub _num {
+ my ($class, $n) = @_;
+ if (!defined $n) {
+ return q[];
+ }
+ (my $rep = sprintf '%f', $n) =~ s/[.]0*$//smx;
+ return $rep;
+}
+
+sub new {
+ my ($self, @parameters) = @_;
+ my $class = ref $self || $self;
+ my $uri = uri_join 'geo', undef, $class->_path(@parameters);
+ return bless \$uri, $class;
+}
+
+sub _init {
+ my ($class, $uri, $scheme) = @_;
+
+ my $self = $class->SUPER::_init($uri, $scheme);
+
+ # Normalise at poles.
+ my $lat = $self->latitude;
+ if ($lat == _MAXIMUM_LATITUDE() || $lat == _MINIMUM_LATITUDE()) {
+ $self->longitude(0);
+ }
+ return $self;
+}
+
+sub location {
+ my ($self, @parameters) = @_;
+
+ if (@parameters) {
+ my ($lat, $lon, $alt) = @parameters;
+ return $self->latitude($lat)->longitude($lon)->altitude($alt);
+ }
+
+ return $self->latitude, $self->longitude, $self->altitude;
+}
+
+sub latitude {
+ my ($self, @parameters) = @_;
+ return $self->field('latitude', @parameters);
+}
+
+sub longitude {
+ my ($self, @parameters) = @_;
+ return $self->field('longitude', @parameters);
+}
+
+sub altitude {
+ my ($self, @parameters) = @_;
+ return $self->field('altitude', @parameters);
+}
+
+sub crs {
+ my ($self, @parameters) = @_;
+ return $self->field('crs', @parameters);
+}
+
+sub uncertainty {
+ my ($self, @parameters) = @_;
+ return $self->field('uncertainty', @parameters);
+}
+
+sub field {
+ my ($self, $name, @remainder) = @_;
+ my ($scheme, $auth, $v, $query, $frag) = $self->_parse;
+
+ if (!exists $v->{$name}) {
+ croak "No such field: $name";
+ }
+ if (!@remainder) {
+ return $v->{$name};
+ }
+ $v->{$name} = shift @remainder;
+ ${$self} = uri_join $scheme, $auth, $self->_format($v), $query, $frag;
+ return $self;
+}
+
+{
+ my $pnum = qr{\d+(?:[.]\d+)?}smx;
+ my $num = qr{-?$pnum}smx;
+ my $crsp = qr{(?:;crs=(\w+))}smx;
+ my $uncp = qr{(?:;u=($pnum))}smx;
+ my $parm = qr{(?:;\w+=[^;]*)+}smx;
+
+ sub _parse {
+ my $self = shift;
+ my ($scheme, $auth, $path, $query, $frag) = uri_split ${$self};
+
+ $path =~ m{^ ($num), ($num) (?: , ($num) ) ?
+ (?: $crsp ) ?
+ (?: $uncp ) ?
+ ( $parm ) ?
+ $}smx or croak 'Badly formed geo uri';
+
+ # No named captures before 5.10.0
+ return $scheme, $auth,
+ {
+ latitude => $1,
+ longitude => $2,
+ altitude => $3,
+ crs => $4,
+ uncertainty => $5,
+ parameters => (defined $6 ? substr $6, 1 : undef),
+ },
+ $query, $frag;
+ }
+}
+
+sub _format {
+ my ($class, $v) = @_;
+ return join q[;],
+ (
+ join q[,],
+ map { $class->_num($_) } @{$v}{'latitude', 'longitude'},
+ (defined $v->{altitude} ? ($v->{altitude}) : ())
+ ),
+ (defined $v->{crs} ? ('crs=' . $class->_num($v->{crs})) : ()),
+ (
+ defined $v->{uncertainty}
+ ? ('u=' . $class->_num($v->{uncertainty}))
+ : ()), (defined $v->{parameters} ? ($v->{parameters}) : ());
+}
+
+sub _path {
+ my ($class, @parameters) = @_;
+ my ($lat, $lon, $alt) = $class->_location_of_pointy_thing(@parameters);
+ croak 'Latitude out of range'
+ if $lat < _MINIMUM_LATITUDE() || $lat > _MAXIMUM_LATITUDE();
+ croak 'Longitude out of range'
+ if $lon < _MINIMUM_LONGITUDE() || $lon > _MAXIMUM_LONGITUDE();
+ if ($lat == _MINIMUM_LATITUDE() || $lat == _MAXIMUM_LATITUDE()) {
+ $lat = 0;
+ }
+ return $class->_format(
+ {latitude => $lat, longitude => $lon, altitude => $alt});
+}
+
+1;
+
+__END__
+
+=head1 NAME
+
+URI::geo - URI scheme for geo Identifiers
+
+=head1 SYNOPSIS
+
+ use URI;
+
+ # Geo URI from textual uri
+ my $guri = URI->new( 'geo:54.786989,-2.344214' );
+
+ # From coordinates
+ my $guri = URI::geo->new( 54.786989, -2.344214 );
+
+ # Decode
+ my ( $lat, $lon, $alt ) = $guri->location;
+ my $latitude = $guri->latitude;
+
+ # Update
+ $guri->location( 55, -1 );
+ $guri->longitude( -43.23 );
+
+=head1 DESCRIPTION
+
+From L<http://geouri.org/>:
+
+ More and more protocols and data formats are being extended by methods
+ to add geographic information. However, all of those options are tied
+ to that specific protocol or data format.
+
+ A dedicated Uniform Resource Identifier (URI) scheme for geographic
+ locations would be independent from any protocol, usable by any
+ software/data format that can handle generich URIs. Like a "mailto:"
+ URI launches your favourite mail application today, a "geo:" URI could
+ soon launch your favourite mapping service, or queue that location for
+ a navigation device.
+
+=head1 SUBROUTINES/METHODS
+
+=head2 C<< new >>
+
+Create a new URI::geo. The arguments should be either
+
+=over
+
+=item * latitude, longitude and optionally altitude
+
+=item * a reference to an array containing lat, lon, alt
+
+=item * a reference to a hash with suitably named keys or
+
+=item * a reference to an object with suitably named accessors
+
+=back
+
+To maximize the likelihood that you can pass in some object that
+represents a geographical location and have URI::geo do the right thing
+we try a number of different accessor names.
+
+If the object has a C<latlong> method (e.g. L<Geo::Point>) we'll use that.
+If there's a C<location> method we call that. Otherwise we look for
+accessors called C<lat>, C<latitude>, C<lon>, C<long>, C<longitude>,
+C<ele>, C<alt>, C<elevation> or C<altitude> and use them.
+
+Often if you have an object or hash reference that represents a point
+you can pass it directly to C<new>; so for example this will work:
+
+ use URI::geo;
+ use Geo::Point;
+
+ my $pt = Geo::Point->latlong( 48.208333, 16.372778 );
+ my $guri = URI::geo->new( $pt );
+
+As will this:
+
+ my $guri = URI::geo->new( { lat => 55, lon => -1 } );
+
+and this:
+
+ my $guri = URI::geo->new( 55, -1 );
+
+Note that you can also create a new C<URI::geo> by passing a Geo URI to
+C<URI::new>:
+
+ use URI;
+
+ my $guri = URI->new( 'geo:55,-1' );
+
+=head2 C<location>
+
+Get or set the location of this geo URI.
+
+ my ( $lat, $lon, $alt ) = $guri->location;
+ $guri->location( 55.3, -3.7, 120 );
+
+When setting the location it is possible to pass any of the argument
+types that can be passed to C<new>.
+
+=head2 C<latitude>
+
+Get or set the latitude of this geo URI.
+
+=head2 C<longitude>
+
+Get or set the longitude of this geo URI.
+
+=head2 C<altitude>
+
+Get or set the L<altitude|https://en.wikipedia.org/wiki/Geo_URI_scheme#Altitude> of this geo URI. To delete the altitude set it to C<undef>.
+
+=head2 C<crs>
+
+Get or set the L<Coordinate Reference System|https://en.wikipedia.org/wiki/Geo_URI_scheme#Coordinate_reference_systems> of this geo URI. To delete the CRS set it to C<undef>.
+
+=head2 C<uncertainty>
+
+Get or set the L<uncertainty|https://en.wikipedia.org/wiki/Geo_URI_scheme#Uncertainty> of this geo URI. To delete the uncertainty set it to C<undef>.
+
+=head2 C<field>
+
+=head1 CONFIGURATION AND ENVIRONMENT
+
+URI::geo requires no configuration files or environment variables.
+
+=head1 DEPENDENCIES
+
+L<URI>
+
+=head1 DIAGNOSTICS
+
+=over
+
+=item C<< Too many arguments >>
+
+The L<new|/new> method can only accept three parameters; latitude, longitude and altitude.
+
+=item C<< Don't know how to convert point >>
+
+The L<new|/new> method doesn't know how to convert the supplied parameters into a URI::geo object.
+
+=item C<< Need lat, lon or lat, lon, alt >>
+
+The L<new|/new> method needs two (latitude and longitude) or three (latitude, longitude and altitude) parameters in a list. Any less or more than this is an error.
+
+=item C<< No such field: %s >>
+
+This field is not a known field for the L<URI::geo|URI::geo> object.
+
+=item C<< Badly formed geo uri >>
+
+The L<URI|URI> cannot be parsed as a URI
+
+=item C<< Badly formed geo uri >>
+
+The L<URI|URI> cannot be parsed as a URI
+
+=item C<< Latitude out of range >>
+
+Latitude may only be from -90 to +90
+
+=item C<< Longitude out of range >>
+
+Longitude may only be from -180 to +180
+
+=back
+
+=head1 INCOMPATIBILITIES
+
+None reported.
+
+=head1 BUGS AND LIMITATIONS
+
+To report a bug, or view the current list of bugs, please visit L<https://github.com/libwww-perl/URI/issues>
+
+=head1 AUTHOR
+
+Andy Armstrong C<< <andy@hexten.net> >>
+
+=head1 LICENSE AND COPYRIGHT
+
+Copyright (c) 2009, Andy Armstrong C<< <andy@hexten.net> >>.
+
+This module is free software; you can redistribute it and/or
+modify it under the same terms as Perl itself. See L<perlartistic>.
diff --git a/Master/tlpkg/tlperl/site/lib/URI/gopher.pm b/Master/tlpkg/tlperl/site/lib/URI/gopher.pm
index febd95c0bac..0ab8513ecad 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/gopher.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/gopher.pm
@@ -3,7 +3,7 @@ package URI::gopher; # <draft-murali-url-gopher>, Dec 4, 1996
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::_server';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/http.pm b/Master/tlpkg/tlperl/site/lib/URI/http.pm
index 50a09f09899..6f970bb0346 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/http.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/http.pm
@@ -3,7 +3,7 @@ package URI::http;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::_server';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/https.pm b/Master/tlpkg/tlperl/site/lib/URI/https.pm
index e3283e57c0c..9b8c4c6b6c3 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/https.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/https.pm
@@ -3,7 +3,7 @@ package URI::https;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::http';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/icap.pm b/Master/tlpkg/tlperl/site/lib/URI/icap.pm
new file mode 100755
index 00000000000..674078dffee
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/URI/icap.pm
@@ -0,0 +1,76 @@
+package URI::icap;
+
+use strict;
+use warnings;
+use base qw(URI::http);
+
+our $VERSION = '5.27';
+
+sub default_port { return 1344 }
+
+1;
+__END__
+
+=head1 NAME
+
+URI::icap - URI scheme for ICAP Identifiers
+
+=head1 VERSION
+
+Version 5.20
+
+=head1 SYNOPSIS
+
+ use URI::icap;
+
+ my $uri = URI->new('icap://icap-proxy.example.com/');
+
+=head1 DESCRIPTION
+
+This module implements the C<icap:> URI scheme defined in L<RFC 3507|http://tools.ietf.org/html/rfc3507>, for the L<Internet Content Adaptation Protocol|https://en.wikipedia.org/wiki/Internet_Content_Adaptation_Protocol>.
+
+=head1 SUBROUTINES/METHODS
+
+This module inherits the behaviour of L<URI::http|URI::http> and overrides the L<default_port|URI#$uri->default_port> method.
+
+=head2 default_port
+
+The default port for icap servers is 1344
+
+=head1 DIAGNOSTICS
+
+See L<URI|URI>
+
+=head1 CONFIGURATION AND ENVIRONMENT
+
+See L<URI|URI#CONFIGURATION-VARIABLES> and L<URI|URI#ENVIRONMENT-VARIABLES>
+
+=head1 DEPENDENCIES
+
+None
+
+=head1 INCOMPATIBILITIES
+
+None reported
+
+=head1 BUGS AND LIMITATIONS
+
+See L<URI|URI#BUGS>
+
+=head1 SEE ALSO
+
+L<RFC 3507|http://tools.ietf.org/html/rfc3507>
+
+=head1 AUTHOR
+
+David Dick, C<< <ddick at cpan.org> >>
+
+=head1 LICENSE AND COPYRIGHT
+
+Copyright 2016 David Dick.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of either: the GNU General Public License as published
+by the Free Software Foundation; or the Artistic License.
+
+See L<http://dev.perl.org/licenses/> for more information.
diff --git a/Master/tlpkg/tlperl/site/lib/URI/icaps.pm b/Master/tlpkg/tlperl/site/lib/URI/icaps.pm
new file mode 100755
index 00000000000..dd171439fe1
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/URI/icaps.pm
@@ -0,0 +1,76 @@
+package URI::icaps;
+
+use strict;
+use warnings;
+use base qw(URI::icap);
+
+our $VERSION = '5.27';
+
+sub secure { return 1 }
+
+1;
+__END__
+
+=head1 NAME
+
+URI::icaps - URI scheme for ICAPS Identifiers
+
+=head1 VERSION
+
+Version 5.20
+
+=head1 SYNOPSIS
+
+ use URI::icaps;
+
+ my $uri = URI->new('icaps://icap-proxy.example.com/');
+
+=head1 DESCRIPTION
+
+This module implements the C<icaps:> URI scheme defined in L<RFC 3507|http://tools.ietf.org/html/rfc3507>, for the L<Internet Content Adaptation Protocol|https://en.wikipedia.org/wiki/Internet_Content_Adaptation_Protocol>.
+
+=head1 SUBROUTINES/METHODS
+
+This module inherits the behaviour of L<URI::icap|URI::icap> and overrides the L<secure|URI#$uri->secure> method.
+
+=head2 secure
+
+returns 1 as icaps is a secure protocol
+
+=head1 DIAGNOSTICS
+
+See L<URI::icap|URI::icap>
+
+=head1 CONFIGURATION AND ENVIRONMENT
+
+See L<URI::icap|URI::icap>
+
+=head1 DEPENDENCIES
+
+None
+
+=head1 INCOMPATIBILITIES
+
+None reported
+
+=head1 BUGS AND LIMITATIONS
+
+See L<URI::icap|URI::icap>
+
+=head1 SEE ALSO
+
+L<RFC 3507|http://tools.ietf.org/html/rfc3507>
+
+=head1 AUTHOR
+
+David Dick, C<< <ddick at cpan.org> >>
+
+=head1 LICENSE AND COPYRIGHT
+
+Copyright 2016 David Dick.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms of either: the GNU General Public License as published
+by the Free Software Foundation; or the Artistic License.
+
+See L<http://dev.perl.org/licenses/> for more information.
diff --git a/Master/tlpkg/tlperl/site/lib/URI/ldap.pm b/Master/tlpkg/tlperl/site/lib/URI/ldap.pm
index 2977954b5a0..566f22c9cd2 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/ldap.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/ldap.pm
@@ -7,7 +7,7 @@ package URI::ldap;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent qw(URI::_ldap URI::_server);
diff --git a/Master/tlpkg/tlperl/site/lib/URI/ldapi.pm b/Master/tlpkg/tlperl/site/lib/URI/ldapi.pm
index e3bac5a8609..d792d1f0202 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/ldapi.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/ldapi.pm
@@ -3,7 +3,7 @@ package URI::ldapi;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent qw(URI::_ldap URI::_generic);
diff --git a/Master/tlpkg/tlperl/site/lib/URI/ldaps.pm b/Master/tlpkg/tlperl/site/lib/URI/ldaps.pm
index 4d58c67e384..d79f504aac3 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/ldaps.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/ldaps.pm
@@ -3,7 +3,7 @@ package URI::ldaps;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::ldap';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/mailto.pm b/Master/tlpkg/tlperl/site/lib/URI/mailto.pm
index 5d6f2410806..34215752cc8 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/mailto.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/mailto.pm
@@ -3,7 +3,7 @@ package URI::mailto; # RFC 2368
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent qw(URI URI::_query);
diff --git a/Master/tlpkg/tlperl/site/lib/URI/mms.pm b/Master/tlpkg/tlperl/site/lib/URI/mms.pm
index 6a412974842..dfa02a2dfe6 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/mms.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/mms.pm
@@ -3,7 +3,7 @@ package URI::mms;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::http';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/news.pm b/Master/tlpkg/tlperl/site/lib/URI/news.pm
index 4092981be0a..19e3f2271da 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/news.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/news.pm
@@ -3,7 +3,7 @@ package URI::news; # draft-gilman-news-url-01
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::_server';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/nntp.pm b/Master/tlpkg/tlperl/site/lib/URI/nntp.pm
index be276893d03..1386e9426b7 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/nntp.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/nntp.pm
@@ -3,7 +3,7 @@ package URI::nntp; # draft-gilman-news-url-01
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::news';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/nntps.pm b/Master/tlpkg/tlperl/site/lib/URI/nntps.pm
index a10e99293a9..d37fed6b3cc 100755
--- a/Master/tlpkg/tlperl/site/lib/URI/nntps.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/nntps.pm
@@ -3,7 +3,7 @@ package URI::nntps;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::nntp';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/pop.pm b/Master/tlpkg/tlperl/site/lib/URI/pop.pm
index accab911b4a..0ac79d8409c 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/pop.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/pop.pm
@@ -3,7 +3,7 @@ package URI::pop; # RFC 2384
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::_server';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/rlogin.pm b/Master/tlpkg/tlperl/site/lib/URI/rlogin.pm
index 049ff4a0263..a89ac837e1d 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/rlogin.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/rlogin.pm
@@ -3,7 +3,7 @@ package URI::rlogin;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::_login';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/rsync.pm b/Master/tlpkg/tlperl/site/lib/URI/rsync.pm
index 164c6b7d55c..166a1d4c6a9 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/rsync.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/rsync.pm
@@ -5,7 +5,7 @@ package URI::rsync; # http://rsync.samba.org/
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent qw(URI::_server URI::_userpass);
diff --git a/Master/tlpkg/tlperl/site/lib/URI/rtsp.pm b/Master/tlpkg/tlperl/site/lib/URI/rtsp.pm
index 48429f7e1a9..939e625fb66 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/rtsp.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/rtsp.pm
@@ -3,7 +3,7 @@ package URI::rtsp;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::http';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/rtspu.pm b/Master/tlpkg/tlperl/site/lib/URI/rtspu.pm
index c9bc64d49d4..3af9fe48253 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/rtspu.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/rtspu.pm
@@ -3,7 +3,7 @@ package URI::rtspu;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::rtsp';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/sftp.pm b/Master/tlpkg/tlperl/site/lib/URI/sftp.pm
index 4c9a1f38bf0..1af2e368d77 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/sftp.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/sftp.pm
@@ -5,6 +5,6 @@ use warnings;
use parent 'URI::ssh';
-our $VERSION = '5.10';
+our $VERSION = '5.27';
1;
diff --git a/Master/tlpkg/tlperl/site/lib/URI/sip.pm b/Master/tlpkg/tlperl/site/lib/URI/sip.pm
index a6aeb858ac0..f3ce0f5c095 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/sip.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/sip.pm
@@ -14,7 +14,7 @@ use parent qw(URI::_server URI::_userpass);
use URI::Escape ();
-our $VERSION = '5.10';
+our $VERSION = '5.27';
sub default_port { 5060 }
@@ -22,37 +22,33 @@ sub authority
{
my $self = shift;
$$self =~ m,^($URI::scheme_re:)?([^;?]*)(.*)$,os or die;
- my $old = $2;
+ my $start = $1;
+ my $authoritystr = $2;
+ my $rest = $3;
if (@_) {
- my $auth = shift;
- $$self = defined($1) ? $1 : "";
- my $rest = $3;
- if (defined $auth) {
- $auth =~ s/([^$URI::uric])/ URI::Escape::escape_char($1)/ego;
- $$self .= "$auth";
- }
- $$self .= $rest;
+ $authoritystr = shift;
+ $authoritystr =~ s/([^$URI::uric])/ URI::Escape::escape_char($1)/ego;
+ $$self = $start . $authoritystr . $rest;
}
- $old;
+ return $authoritystr;
}
sub params_form
{
my $self = shift;
$$self =~ m,^((?:$URI::scheme_re:)?)(?:([^;?]*))?(;[^?]*)?(.*)$,os or die;
+ my $start = $1 . $2;
my $paramstr = $3;
+ my $rest = $4;
if (@_) {
- my @args = @_;
- $$self = $1 . $2;
- my $rest = $4;
- my @new;
- for (my $i=0; $i < @args; $i += 2) {
- push(@new, "$args[$i]=$args[$i+1]");
+ my @paramarr;
+ for (my $i = 0; $i < @_; $i += 2) {
+ push(@paramarr, "$_[$i]=$_[$i+1]");
}
- $paramstr = join(";", @new);
- $$self .= ";" . $paramstr . $rest;
+ $paramstr = join(";", @paramarr);
+ $$self = $start . ";" . $paramstr . $rest;
}
$paramstr =~ s/^;//o;
return split(/[;=]/, $paramstr);
@@ -62,13 +58,13 @@ sub params
{
my $self = shift;
$$self =~ m,^((?:$URI::scheme_re:)?)(?:([^;?]*))?(;[^?]*)?(.*)$,os or die;
+ my $start = $1 . $2;
my $paramstr = $3;
+ my $rest = $4;
if (@_) {
- my $new = shift;
- $$self = $1 . $2;
- my $rest = $4;
- $$self .= $paramstr . $rest;
+ $paramstr = shift;
+ $$self = $start . ";" . $paramstr . $rest;
}
$paramstr =~ s/^;//o;
return $paramstr;
diff --git a/Master/tlpkg/tlperl/site/lib/URI/sips.pm b/Master/tlpkg/tlperl/site/lib/URI/sips.pm
index 3d7c2f2d6ab..df6e75bd1e3 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/sips.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/sips.pm
@@ -3,7 +3,7 @@ package URI::sips;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::sip';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/snews.pm b/Master/tlpkg/tlperl/site/lib/URI/snews.pm
index e541482125a..2c862f51d2e 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/snews.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/snews.pm
@@ -3,7 +3,7 @@ package URI::snews; # draft-gilman-news-url-01
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::news';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/ssh.pm b/Master/tlpkg/tlperl/site/lib/URI/ssh.pm
index 7273c2b1a5b..58340f71893 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/ssh.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/ssh.pm
@@ -3,7 +3,7 @@ package URI::ssh;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::_login';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/telnet.pm b/Master/tlpkg/tlperl/site/lib/URI/telnet.pm
index 5d81650607b..92db5d2533d 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/telnet.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/telnet.pm
@@ -3,7 +3,7 @@ package URI::telnet;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::_login';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/tn3270.pm b/Master/tlpkg/tlperl/site/lib/URI/tn3270.pm
index 53a341402e2..2e9d8bc669d 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/tn3270.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/tn3270.pm
@@ -3,7 +3,7 @@ package URI::tn3270;
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::_login';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/urn.pm b/Master/tlpkg/tlperl/site/lib/URI/urn.pm
index 75f3a9b6465..40d4a3e3238 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/urn.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/urn.pm
@@ -3,14 +3,13 @@ package URI::urn; # RFC 2141
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI';
use Carp qw(carp);
my %implementor;
-my %require_attempted;
sub _init {
my $class = shift;
@@ -30,13 +29,11 @@ sub _init {
$impclass = "URI::urn::$id";
no strict 'refs';
unless (@{"${impclass}::ISA"}) {
- if (not exists $require_attempted{$impclass}) {
# Try to load it
my $_old_error = $@;
eval "require $impclass";
die $@ if $@ && $@ !~ /Can\'t locate.*in \@INC/;
$@ = $_old_error;
- }
$impclass = "URI::urn" unless @{"${impclass}::ISA"};
}
}
@@ -44,7 +41,6 @@ sub _init {
carp("Illegal namespace identifier '$nid' for URN '$self'") if $^W;
}
$implementor{$nid} = $impclass;
-
return $impclass->_urn_init($self, $nid);
}
diff --git a/Master/tlpkg/tlperl/site/lib/URI/urn/isbn.pm b/Master/tlpkg/tlperl/site/lib/URI/urn/isbn.pm
index 4986d701f69..ee1abafad1d 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/urn/isbn.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/urn/isbn.pm
@@ -3,7 +3,7 @@ package URI::urn::isbn; # RFC 3187
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::urn';
diff --git a/Master/tlpkg/tlperl/site/lib/URI/urn/oid.pm b/Master/tlpkg/tlperl/site/lib/URI/urn/oid.pm
index 5ba279f68c2..30f42527eac 100644
--- a/Master/tlpkg/tlperl/site/lib/URI/urn/oid.pm
+++ b/Master/tlpkg/tlperl/site/lib/URI/urn/oid.pm
@@ -3,7 +3,7 @@ package URI::urn::oid; # RFC 2061
use strict;
use warnings;
-our $VERSION = '5.10';
+our $VERSION = '5.27';
use parent 'URI::urn';
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/.packlist
index 228fdadd046..5fa2d1a6ac5 100755
--- a/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/.packlist
@@ -1,6 +1,9 @@
-E:\tlperl\bin\cpanel_json_xs
-E:\tlperl\bin\cpanel_json_xs.bat
-E:\tlperl\site\lib\Cpanel\JSON\XS.pm
-E:\tlperl\site\lib\Cpanel\JSON\XS\Boolean.pm
-E:\tlperl\site\lib\Cpanel\JSON\XS\Type.pm
-E:\tlperl\site\lib\auto\Cpanel\JSON\XS\XS.dll
+D:\tlperl\bin\cpanel_json_xs
+D:\tlperl\bin\cpanel_json_xs.bat
+D:\tlperl\site\lib\Cpanel\JSON\XS.pm
+D:\tlperl\site\lib\Cpanel\JSON\XS\Boolean.pm
+D:\tlperl\site\lib\Cpanel\JSON\XS\Type.pm
+D:\tlperl\site\lib\auto\Cpanel\JSON\XS\XS.dll
+D:\tlperl\site\lib\auto\Cpanel\JSON\XS\XS.exp
+D:\tlperl\site\lib\auto\Cpanel\JSON\XS\XS.lib
+D:\tlperl\site\lib\auto\Cpanel\JSON\XS\XS.pdb
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.dll b/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.dll
index a16a14e03a3..0e8cf745844 100755
--- a/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.dll
+++ b/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.exp b/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.exp
new file mode 100755
index 00000000000..0f5d42701b1
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.exp
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.lib b/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.lib
new file mode 100755
index 00000000000..a784ed604ae
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.lib
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.pdb b/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.pdb
new file mode 100755
index 00000000000..5b88657d7ba
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Cpanel/JSON/XS/XS.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Date/Parse/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Date/Parse/.packlist
index 3ce2a50b44a..9222d79bbb1 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Date/Parse/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Date/Parse/.packlist
@@ -1,39 +1,39 @@
-E:\tlperl\site\lib\Date\Format.pm
-E:\tlperl\site\lib\Date\Language.pm
-E:\tlperl\site\lib\Date\Language\Afar.pm
-E:\tlperl\site\lib\Date\Language\Amharic.pm
-E:\tlperl\site\lib\Date\Language\Austrian.pm
-E:\tlperl\site\lib\Date\Language\Brazilian.pm
-E:\tlperl\site\lib\Date\Language\Bulgarian.pm
-E:\tlperl\site\lib\Date\Language\Chinese.pm
-E:\tlperl\site\lib\Date\Language\Chinese_GB.pm
-E:\tlperl\site\lib\Date\Language\Czech.pm
-E:\tlperl\site\lib\Date\Language\Danish.pm
-E:\tlperl\site\lib\Date\Language\Dutch.pm
-E:\tlperl\site\lib\Date\Language\English.pm
-E:\tlperl\site\lib\Date\Language\Finnish.pm
-E:\tlperl\site\lib\Date\Language\French.pm
-E:\tlperl\site\lib\Date\Language\Gedeo.pm
-E:\tlperl\site\lib\Date\Language\German.pm
-E:\tlperl\site\lib\Date\Language\Greek.pm
-E:\tlperl\site\lib\Date\Language\Hungarian.pm
-E:\tlperl\site\lib\Date\Language\Icelandic.pm
-E:\tlperl\site\lib\Date\Language\Italian.pm
-E:\tlperl\site\lib\Date\Language\Norwegian.pm
-E:\tlperl\site\lib\Date\Language\Occitan.pm
-E:\tlperl\site\lib\Date\Language\Oromo.pm
-E:\tlperl\site\lib\Date\Language\Romanian.pm
-E:\tlperl\site\lib\Date\Language\Russian.pm
-E:\tlperl\site\lib\Date\Language\Russian_cp1251.pm
-E:\tlperl\site\lib\Date\Language\Russian_koi8r.pm
-E:\tlperl\site\lib\Date\Language\Sidama.pm
-E:\tlperl\site\lib\Date\Language\Somali.pm
-E:\tlperl\site\lib\Date\Language\Spanish.pm
-E:\tlperl\site\lib\Date\Language\Swedish.pm
-E:\tlperl\site\lib\Date\Language\Tigrinya.pm
-E:\tlperl\site\lib\Date\Language\TigrinyaEritrean.pm
-E:\tlperl\site\lib\Date\Language\TigrinyaEthiopian.pm
-E:\tlperl\site\lib\Date\Language\Turkish.pm
-E:\tlperl\site\lib\Date\Parse.pm
-E:\tlperl\site\lib\TimeDate.pm
-E:\tlperl\site\lib\Time\Zone.pm
+D:\tlperl\site\lib\Date\Format.pm
+D:\tlperl\site\lib\Date\Language.pm
+D:\tlperl\site\lib\Date\Language\Afar.pm
+D:\tlperl\site\lib\Date\Language\Amharic.pm
+D:\tlperl\site\lib\Date\Language\Austrian.pm
+D:\tlperl\site\lib\Date\Language\Brazilian.pm
+D:\tlperl\site\lib\Date\Language\Bulgarian.pm
+D:\tlperl\site\lib\Date\Language\Chinese.pm
+D:\tlperl\site\lib\Date\Language\Chinese_GB.pm
+D:\tlperl\site\lib\Date\Language\Czech.pm
+D:\tlperl\site\lib\Date\Language\Danish.pm
+D:\tlperl\site\lib\Date\Language\Dutch.pm
+D:\tlperl\site\lib\Date\Language\English.pm
+D:\tlperl\site\lib\Date\Language\Finnish.pm
+D:\tlperl\site\lib\Date\Language\French.pm
+D:\tlperl\site\lib\Date\Language\Gedeo.pm
+D:\tlperl\site\lib\Date\Language\German.pm
+D:\tlperl\site\lib\Date\Language\Greek.pm
+D:\tlperl\site\lib\Date\Language\Hungarian.pm
+D:\tlperl\site\lib\Date\Language\Icelandic.pm
+D:\tlperl\site\lib\Date\Language\Italian.pm
+D:\tlperl\site\lib\Date\Language\Norwegian.pm
+D:\tlperl\site\lib\Date\Language\Occitan.pm
+D:\tlperl\site\lib\Date\Language\Oromo.pm
+D:\tlperl\site\lib\Date\Language\Romanian.pm
+D:\tlperl\site\lib\Date\Language\Russian.pm
+D:\tlperl\site\lib\Date\Language\Russian_cp1251.pm
+D:\tlperl\site\lib\Date\Language\Russian_koi8r.pm
+D:\tlperl\site\lib\Date\Language\Sidama.pm
+D:\tlperl\site\lib\Date\Language\Somali.pm
+D:\tlperl\site\lib\Date\Language\Spanish.pm
+D:\tlperl\site\lib\Date\Language\Swedish.pm
+D:\tlperl\site\lib\Date\Language\Tigrinya.pm
+D:\tlperl\site\lib\Date\Language\TigrinyaEritrean.pm
+D:\tlperl\site\lib\Date\Language\TigrinyaEthiopian.pm
+D:\tlperl\site\lib\Date\Language\Turkish.pm
+D:\tlperl\site\lib\Date\Parse.pm
+D:\tlperl\site\lib\TimeDate.pm
+D:\tlperl\site\lib\Time\Zone.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/.packlist
index 915cf6fc679..473f64cb868 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/.packlist
@@ -1,4 +1,7 @@
-E:\tlperl\bin\shasum
-E:\tlperl\bin\shasum.bat
-E:\tlperl\site\lib\Digest\SHA.pm
-E:\tlperl\site\lib\auto\Digest\SHA\SHA.dll
+D:\tlperl\bin\shasum
+D:\tlperl\bin\shasum.bat
+D:\tlperl\site\lib\Digest\SHA.pm
+D:\tlperl\site\lib\auto\Digest\SHA\SHA.dll
+D:\tlperl\site\lib\auto\Digest\SHA\SHA.exp
+D:\tlperl\site\lib\auto\Digest\SHA\SHA.lib
+D:\tlperl\site\lib\auto\Digest\SHA\SHA.pdb
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.dll b/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.dll
index 10baceea138..806eb230968 100755
--- a/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.dll
+++ b/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.exp b/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.exp
new file mode 100755
index 00000000000..0807b9236ea
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.exp
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.lib b/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.lib
new file mode 100755
index 00000000000..1a7cb5daa3a
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.lib
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.pdb b/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.pdb
new file mode 100755
index 00000000000..14c6d26556b
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Digest/SHA/SHA.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Encode/Locale/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Encode/Locale/.packlist
index 9fd84edc870..ab92a81c67d 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Encode/Locale/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Encode/Locale/.packlist
@@ -1 +1 @@
-E:\tlperl\site\lib\Encode\Locale.pm
+D:\tlperl\site\lib\Encode\Locale.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Encode/compat/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Encode/compat/.packlist
index 60c48589952..1efa98462c5 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Encode/compat/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Encode/compat/.packlist
@@ -1,4 +1,4 @@
-E:\tlperl\site\lib\Encode\compat.pm
-E:\tlperl\site\lib\Encode\compat\5006001.pm
-E:\tlperl\site\lib\Encode\compat\Alias.pm
-E:\tlperl\site\lib\Encode\compat\common.pm
+D:\tlperl\site\lib\Encode\compat.pm
+D:\tlperl\site\lib\Encode\compat\5006001.pm
+D:\tlperl\site\lib\Encode\compat\Alias.pm
+D:\tlperl\site\lib\Encode\compat\common.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/ExtUtils/Config/.packlist b/Master/tlpkg/tlperl/site/lib/auto/ExtUtils/Config/.packlist
new file mode 100755
index 00000000000..8fa504b3881
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/ExtUtils/Config/.packlist
@@ -0,0 +1 @@
+D:\tlperl\site\lib\ExtUtils\Config.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/ExtUtils/Helpers/.packlist b/Master/tlpkg/tlperl/site/lib/auto/ExtUtils/Helpers/.packlist
new file mode 100755
index 00000000000..0fdf7f1b604
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/ExtUtils/Helpers/.packlist
@@ -0,0 +1,4 @@
+D:\tlperl\site\lib\ExtUtils\Helpers.pm
+D:\tlperl\site\lib\ExtUtils\Helpers\Unix.pm
+D:\tlperl\site\lib\ExtUtils\Helpers\VMS.pm
+D:\tlperl\site\lib\ExtUtils\Helpers\Windows.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/ExtUtils/InstallPaths/.packlist b/Master/tlpkg/tlperl/site/lib/auto/ExtUtils/InstallPaths/.packlist
new file mode 100755
index 00000000000..e63813e67ce
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/ExtUtils/InstallPaths/.packlist
@@ -0,0 +1 @@
+D:\tlperl\site\lib\ExtUtils\InstallPaths.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/File/Listing/.packlist b/Master/tlpkg/tlperl/site/lib/auto/File/Listing/.packlist
index 2a9f3542845..e7f9804febf 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/File/Listing/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/File/Listing/.packlist
@@ -1 +1 @@
-E:\tlperl\site\lib\File\Listing.pm
+D:\tlperl\site\lib\File\Listing.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/File/Which/.packlist b/Master/tlpkg/tlperl/site/lib/auto/File/Which/.packlist
index 018541e49a4..6071facafe5 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/File/Which/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/File/Which/.packlist
@@ -1 +1 @@
-E:\tlperl\site\lib\File\Which.pm
+D:\tlperl\site\lib\File\Which.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/.packlist b/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/.packlist
index ac6022d7d6c..190d4b45d1d 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/.packlist
@@ -1,8 +1,11 @@
-E:\tlperl\site\lib\HTML\Entities.pm
-E:\tlperl\site\lib\HTML\Filter.pm
-E:\tlperl\site\lib\HTML\HeadParser.pm
-E:\tlperl\site\lib\HTML\LinkExtor.pm
-E:\tlperl\site\lib\HTML\Parser.pm
-E:\tlperl\site\lib\HTML\PullParser.pm
-E:\tlperl\site\lib\HTML\TokeParser.pm
-E:\tlperl\site\lib\auto\HTML\Parser\Parser.dll
+D:\tlperl\site\lib\HTML\Entities.pm
+D:\tlperl\site\lib\HTML\Filter.pm
+D:\tlperl\site\lib\HTML\HeadParser.pm
+D:\tlperl\site\lib\HTML\LinkExtor.pm
+D:\tlperl\site\lib\HTML\Parser.pm
+D:\tlperl\site\lib\HTML\PullParser.pm
+D:\tlperl\site\lib\HTML\TokeParser.pm
+D:\tlperl\site\lib\auto\HTML\Parser\Parser.dll
+D:\tlperl\site\lib\auto\HTML\Parser\Parser.exp
+D:\tlperl\site\lib\auto\HTML\Parser\Parser.lib
+D:\tlperl\site\lib\auto\HTML\Parser\Parser.pdb
diff --git a/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.dll b/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.dll
index 4ec73a56f80..1808816ac74 100755
--- a/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.dll
+++ b/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.exp b/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.exp
new file mode 100755
index 00000000000..68fbff39bef
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.exp
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.lib b/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.lib
new file mode 100755
index 00000000000..6969c45ab45
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.lib
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.pdb b/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.pdb
new file mode 100755
index 00000000000..88624beb946
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/HTML/Parser/Parser.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/HTML/Tagset/.packlist b/Master/tlpkg/tlperl/site/lib/auto/HTML/Tagset/.packlist
index dab2adba680..0625f11b922 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/HTML/Tagset/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/HTML/Tagset/.packlist
@@ -1 +1 @@
-E:\tlperl\site\lib\HTML\Tagset.pm
+D:\tlperl\site\lib\HTML\Tagset.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/HTTP/Cookies/.packlist b/Master/tlpkg/tlperl/site/lib/auto/HTTP/Cookies/.packlist
index 3c859961d9f..82eb84f3efc 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/HTTP/Cookies/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/HTTP/Cookies/.packlist
@@ -1,3 +1,3 @@
-E:\tlperl\site\lib\HTTP\Cookies.pm
-E:\tlperl\site\lib\HTTP\Cookies\Microsoft.pm
-E:\tlperl\site\lib\HTTP\Cookies\Netscape.pm
+D:\tlperl\site\lib\HTTP\Cookies.pm
+D:\tlperl\site\lib\HTTP\Cookies\Microsoft.pm
+D:\tlperl\site\lib\HTTP\Cookies\Netscape.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/HTTP/Daemon/.packlist b/Master/tlpkg/tlperl/site/lib/auto/HTTP/Daemon/.packlist
index 6a3e7177e93..8133238e5e5 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/HTTP/Daemon/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/HTTP/Daemon/.packlist
@@ -1 +1 @@
-E:\tlperl\site\lib\HTTP\Daemon.pm
+D:\tlperl\site\lib\HTTP\Daemon.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/HTTP/Date/.packlist b/Master/tlpkg/tlperl/site/lib/auto/HTTP/Date/.packlist
index b1a8ab90447..78da80fb271 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/HTTP/Date/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/HTTP/Date/.packlist
@@ -1 +1 @@
-E:\tlperl\site\lib\HTTP\Date.pm
+D:\tlperl\site\lib\HTTP\Date.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/HTTP/Message/.packlist b/Master/tlpkg/tlperl/site/lib/auto/HTTP/Message/.packlist
index 09b22f2e9a5..71010b4eccd 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/HTTP/Message/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/HTTP/Message/.packlist
@@ -1,10 +1,10 @@
-E:\tlperl\site\lib\HTTP\Config.pm
-E:\tlperl\site\lib\HTTP\Headers.pm
-E:\tlperl\site\lib\HTTP\Headers\Auth.pm
-E:\tlperl\site\lib\HTTP\Headers\ETag.pm
-E:\tlperl\site\lib\HTTP\Headers\Util.pm
-E:\tlperl\site\lib\HTTP\Message.pm
-E:\tlperl\site\lib\HTTP\Request.pm
-E:\tlperl\site\lib\HTTP\Request\Common.pm
-E:\tlperl\site\lib\HTTP\Response.pm
-E:\tlperl\site\lib\HTTP\Status.pm
+D:\tlperl\site\lib\HTTP\Config.pm
+D:\tlperl\site\lib\HTTP\Headers.pm
+D:\tlperl\site\lib\HTTP\Headers\Auth.pm
+D:\tlperl\site\lib\HTTP\Headers\ETag.pm
+D:\tlperl\site\lib\HTTP\Headers\Util.pm
+D:\tlperl\site\lib\HTTP\Message.pm
+D:\tlperl\site\lib\HTTP\Request.pm
+D:\tlperl\site\lib\HTTP\Request\Common.pm
+D:\tlperl\site\lib\HTTP\Response.pm
+D:\tlperl\site\lib\HTTP\Status.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/HTTP/Negotiate/.packlist b/Master/tlpkg/tlperl/site/lib/auto/HTTP/Negotiate/.packlist
index 68a4a803681..b25f4baccad 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/HTTP/Negotiate/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/HTTP/Negotiate/.packlist
@@ -1 +1 @@
-E:\tlperl\site\lib\HTTP\Negotiate.pm
+D:\tlperl\site\lib\HTTP\Negotiate.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/IO/HTML/.packlist b/Master/tlpkg/tlperl/site/lib/auto/IO/HTML/.packlist
index dbd37f98e31..647eea0824b 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/IO/HTML/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/IO/HTML/.packlist
@@ -1 +1 @@
-E:\tlperl\site\lib\IO\HTML.pm
+D:\tlperl\site\lib\IO\HTML.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/IO/String/.packlist b/Master/tlpkg/tlperl/site/lib/auto/IO/String/.packlist
index 6c34e39534a..6e2e1666d05 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/IO/String/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/IO/String/.packlist
@@ -1 +1 @@
-E:\tlperl\site\lib\IO\String.pm
+D:\tlperl\site\lib\IO\String.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/JSON/MaybeXS/.packlist b/Master/tlpkg/tlperl/site/lib/auto/JSON/MaybeXS/.packlist
index 664b0def449..1033ee8cca5 100755
--- a/Master/tlpkg/tlperl/site/lib/auto/JSON/MaybeXS/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/JSON/MaybeXS/.packlist
@@ -1 +1 @@
-E:\tlperl\site\lib\JSON\MaybeXS.pm
+D:\tlperl\site\lib\JSON\MaybeXS.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/LWP/MediaTypes/.packlist b/Master/tlpkg/tlperl/site/lib/auto/LWP/MediaTypes/.packlist
index 4b70b3ba387..1fb51f2710f 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/LWP/MediaTypes/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/LWP/MediaTypes/.packlist
@@ -1,2 +1,2 @@
-E:\tlperl\site\lib\LWP\MediaTypes.pm
-E:\tlperl\site\lib\LWP\media.types
+D:\tlperl\site\lib\LWP\MediaTypes.pm
+D:\tlperl\site\lib\LWP\media.types
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/.packlist
index 1faa7d92da9..fe90d44cf9f 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/.packlist
@@ -1,5 +1,8 @@
-E:\tlperl\site\lib\Math\Int64.pm
-E:\tlperl\site\lib\Math\Int64\die_on_overflow.pm
-E:\tlperl\site\lib\Math\Int64\native_if_available.pm
-E:\tlperl\site\lib\Math\UInt64.pm
-E:\tlperl\site\lib\auto\Math\Int64\Int64.dll
+D:\tlperl\site\lib\Math\Int64.pm
+D:\tlperl\site\lib\Math\Int64\die_on_overflow.pm
+D:\tlperl\site\lib\Math\Int64\native_if_available.pm
+D:\tlperl\site\lib\Math\UInt64.pm
+D:\tlperl\site\lib\auto\Math\Int64\Int64.dll
+D:\tlperl\site\lib\auto\Math\Int64\Int64.exp
+D:\tlperl\site\lib\auto\Math\Int64\Int64.lib
+D:\tlperl\site\lib\auto\Math\Int64\Int64.pdb
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.dll b/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.dll
index b5d32752712..4f5d4cf9349 100755
--- a/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.dll
+++ b/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.exp b/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.exp
new file mode 100755
index 00000000000..1a7d28f4330
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.exp
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.lib b/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.lib
new file mode 100755
index 00000000000..b47aed7aa0f
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.lib
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.pdb b/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.pdb
new file mode 100755
index 00000000000..f68db9943c9
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Math/Int64/Int64.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Module/Build/Tiny/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Module/Build/Tiny/.packlist
new file mode 100755
index 00000000000..96f44fbd9e3
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Module/Build/Tiny/.packlist
@@ -0,0 +1 @@
+D:\tlperl\site\lib\Module\Build\Tiny.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Mozilla/CA/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Mozilla/CA/.packlist
index 15939f0e260..d91e999f29a 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Mozilla/CA/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Mozilla/CA/.packlist
@@ -1,3 +1,2 @@
-E:\tlperl\site\lib\Mozilla\CA.pm
-E:\tlperl\site\lib\Mozilla\CA\cacert.pem
-E:\tlperl\site\lib\Mozilla\mk-ca-bundle.pl
+D:\tlperl\site\lib\Mozilla\CA.pm
+D:\tlperl\site\lib\Mozilla\CA\cacert.pem
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Net/HTTP/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Net/HTTP/.packlist
index 002dde0575a..5bad66fceb0 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Net/HTTP/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Net/HTTP/.packlist
@@ -1,4 +1,4 @@
-E:\tlperl\site\lib\Net\HTTP.pm
-E:\tlperl\site\lib\Net\HTTPS.pm
-E:\tlperl\site\lib\Net\HTTP\Methods.pm
-E:\tlperl\site\lib\Net\HTTP\NB.pm
+D:\tlperl\site\lib\Net\HTTP.pm
+D:\tlperl\site\lib\Net\HTTPS.pm
+D:\tlperl\site\lib\Net\HTTP\Methods.pm
+D:\tlperl\site\lib\Net\HTTP\NB.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Socket/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Socket/.packlist
new file mode 100755
index 00000000000..4d1d3c2bef3
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Socket/.packlist
@@ -0,0 +1,5 @@
+D:\tlperl\site\lib\Socket.pm
+D:\tlperl\site\lib\auto\Socket\Socket.dll
+D:\tlperl\site\lib\auto\Socket\Socket.exp
+D:\tlperl\site\lib\auto\Socket\Socket.lib
+D:\tlperl\site\lib\auto\Socket\Socket.pdb
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.dll b/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.dll
new file mode 100755
index 00000000000..554f694a9cd
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.exp b/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.exp
new file mode 100755
index 00000000000..ccb9173d275
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.exp
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.lib b/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.lib
new file mode 100755
index 00000000000..830a45002af
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.lib
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.pdb b/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.pdb
new file mode 100755
index 00000000000..25c72db2d56
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Socket/Socket.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Test/Fatal/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Test/Fatal/.packlist
index 30a11b4e850..8ad2320ded6 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Test/Fatal/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Test/Fatal/.packlist
@@ -1 +1 @@
-E:\tlperl\site\lib\Test\Fatal.pm
+D:\tlperl\site\lib\Test\Fatal.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Test/Harness/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Test/Harness/.packlist
new file mode 100755
index 00000000000..6efc8c01950
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Test/Harness/.packlist
@@ -0,0 +1,52 @@
+D:\tlperl\bin\prove
+D:\tlperl\bin\prove.bat
+D:\tlperl\site\lib\App\Prove.pm
+D:\tlperl\site\lib\App\Prove\State.pm
+D:\tlperl\site\lib\App\Prove\State\Result.pm
+D:\tlperl\site\lib\App\Prove\State\Result\Test.pm
+D:\tlperl\site\lib\TAP\Base.pm
+D:\tlperl\site\lib\TAP\Formatter\Base.pm
+D:\tlperl\site\lib\TAP\Formatter\Color.pm
+D:\tlperl\site\lib\TAP\Formatter\Console.pm
+D:\tlperl\site\lib\TAP\Formatter\Console\ParallelSession.pm
+D:\tlperl\site\lib\TAP\Formatter\Console\Session.pm
+D:\tlperl\site\lib\TAP\Formatter\File.pm
+D:\tlperl\site\lib\TAP\Formatter\File\Session.pm
+D:\tlperl\site\lib\TAP\Formatter\Session.pm
+D:\tlperl\site\lib\TAP\Harness.pm
+D:\tlperl\site\lib\TAP\Harness\Beyond.pod
+D:\tlperl\site\lib\TAP\Harness\Env.pm
+D:\tlperl\site\lib\TAP\Object.pm
+D:\tlperl\site\lib\TAP\Parser.pm
+D:\tlperl\site\lib\TAP\Parser\Aggregator.pm
+D:\tlperl\site\lib\TAP\Parser\Grammar.pm
+D:\tlperl\site\lib\TAP\Parser\Iterator.pm
+D:\tlperl\site\lib\TAP\Parser\IteratorFactory.pm
+D:\tlperl\site\lib\TAP\Parser\Iterator\Array.pm
+D:\tlperl\site\lib\TAP\Parser\Iterator\Process.pm
+D:\tlperl\site\lib\TAP\Parser\Iterator\Stream.pm
+D:\tlperl\site\lib\TAP\Parser\Multiplexer.pm
+D:\tlperl\site\lib\TAP\Parser\Result.pm
+D:\tlperl\site\lib\TAP\Parser\ResultFactory.pm
+D:\tlperl\site\lib\TAP\Parser\Result\Bailout.pm
+D:\tlperl\site\lib\TAP\Parser\Result\Comment.pm
+D:\tlperl\site\lib\TAP\Parser\Result\Plan.pm
+D:\tlperl\site\lib\TAP\Parser\Result\Pragma.pm
+D:\tlperl\site\lib\TAP\Parser\Result\Test.pm
+D:\tlperl\site\lib\TAP\Parser\Result\Unknown.pm
+D:\tlperl\site\lib\TAP\Parser\Result\Version.pm
+D:\tlperl\site\lib\TAP\Parser\Result\YAML.pm
+D:\tlperl\site\lib\TAP\Parser\Scheduler.pm
+D:\tlperl\site\lib\TAP\Parser\Scheduler\Job.pm
+D:\tlperl\site\lib\TAP\Parser\Scheduler\Spinner.pm
+D:\tlperl\site\lib\TAP\Parser\Source.pm
+D:\tlperl\site\lib\TAP\Parser\SourceHandler.pm
+D:\tlperl\site\lib\TAP\Parser\SourceHandler\Executable.pm
+D:\tlperl\site\lib\TAP\Parser\SourceHandler\File.pm
+D:\tlperl\site\lib\TAP\Parser\SourceHandler\Handle.pm
+D:\tlperl\site\lib\TAP\Parser\SourceHandler\Perl.pm
+D:\tlperl\site\lib\TAP\Parser\SourceHandler\RawTAP.pm
+D:\tlperl\site\lib\TAP\Parser\YAMLish\Reader.pm
+D:\tlperl\site\lib\TAP\Parser\YAMLish\Writer.pm
+D:\tlperl\site\lib\Test\HACKING.pod
+D:\tlperl\site\lib\Test\Harness.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Test/Needs/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Test/Needs/.packlist
index 31bdc9e5bd9..98a686ca445 100755
--- a/Master/tlpkg/tlperl/site/lib/auto/Test/Needs/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Test/Needs/.packlist
@@ -1 +1 @@
-E:\tlperl\site\lib\Test\Needs.pm
+D:\tlperl\site\lib\Test\Needs.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Test/RequiresInternet/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Test/RequiresInternet/.packlist
index b752d66bc16..e7d736e3b5d 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Test/RequiresInternet/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Test/RequiresInternet/.packlist
@@ -1 +1 @@
-E:\tlperl\site\lib\Test\RequiresInternet.pm
+D:\tlperl\site\lib\Test\RequiresInternet.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Test/Warnings/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Test/Warnings/.packlist
new file mode 100755
index 00000000000..a03fe58a665
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Test/Warnings/.packlist
@@ -0,0 +1 @@
+D:\tlperl\site\lib\Test\Warnings.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Try/Tiny/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Try/Tiny/.packlist
index e0b49c463a9..b101b6e842a 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Try/Tiny/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Try/Tiny/.packlist
@@ -1 +1 @@
-E:\tlperl\site\lib\Try\Tiny.pm
+D:\tlperl\site\lib\Try\Tiny.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/URI/.packlist b/Master/tlpkg/tlperl/site/lib/auto/URI/.packlist
index efacba2875c..12a2b489433 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/URI/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/URI/.packlist
@@ -1,54 +1,57 @@
-E:\tlperl\site\lib\URI.pm
-E:\tlperl\site\lib\URI\Escape.pm
-E:\tlperl\site\lib\URI\Heuristic.pm
-E:\tlperl\site\lib\URI\IRI.pm
-E:\tlperl\site\lib\URI\QueryParam.pm
-E:\tlperl\site\lib\URI\Split.pm
-E:\tlperl\site\lib\URI\URL.pm
-E:\tlperl\site\lib\URI\WithBase.pm
-E:\tlperl\site\lib\URI\_foreign.pm
-E:\tlperl\site\lib\URI\_generic.pm
-E:\tlperl\site\lib\URI\_idna.pm
-E:\tlperl\site\lib\URI\_ldap.pm
-E:\tlperl\site\lib\URI\_login.pm
-E:\tlperl\site\lib\URI\_punycode.pm
-E:\tlperl\site\lib\URI\_query.pm
-E:\tlperl\site\lib\URI\_segment.pm
-E:\tlperl\site\lib\URI\_server.pm
-E:\tlperl\site\lib\URI\_userpass.pm
-E:\tlperl\site\lib\URI\data.pm
-E:\tlperl\site\lib\URI\file.pm
-E:\tlperl\site\lib\URI\file\Base.pm
-E:\tlperl\site\lib\URI\file\FAT.pm
-E:\tlperl\site\lib\URI\file\Mac.pm
-E:\tlperl\site\lib\URI\file\OS2.pm
-E:\tlperl\site\lib\URI\file\QNX.pm
-E:\tlperl\site\lib\URI\file\Unix.pm
-E:\tlperl\site\lib\URI\file\Win32.pm
-E:\tlperl\site\lib\URI\ftp.pm
-E:\tlperl\site\lib\URI\gopher.pm
-E:\tlperl\site\lib\URI\http.pm
-E:\tlperl\site\lib\URI\https.pm
-E:\tlperl\site\lib\URI\ldap.pm
-E:\tlperl\site\lib\URI\ldapi.pm
-E:\tlperl\site\lib\URI\ldaps.pm
-E:\tlperl\site\lib\URI\mailto.pm
-E:\tlperl\site\lib\URI\mms.pm
-E:\tlperl\site\lib\URI\news.pm
-E:\tlperl\site\lib\URI\nntp.pm
-E:\tlperl\site\lib\URI\nntps.pm
-E:\tlperl\site\lib\URI\pop.pm
-E:\tlperl\site\lib\URI\rlogin.pm
-E:\tlperl\site\lib\URI\rsync.pm
-E:\tlperl\site\lib\URI\rtsp.pm
-E:\tlperl\site\lib\URI\rtspu.pm
-E:\tlperl\site\lib\URI\sftp.pm
-E:\tlperl\site\lib\URI\sip.pm
-E:\tlperl\site\lib\URI\sips.pm
-E:\tlperl\site\lib\URI\snews.pm
-E:\tlperl\site\lib\URI\ssh.pm
-E:\tlperl\site\lib\URI\telnet.pm
-E:\tlperl\site\lib\URI\tn3270.pm
-E:\tlperl\site\lib\URI\urn.pm
-E:\tlperl\site\lib\URI\urn\isbn.pm
-E:\tlperl\site\lib\URI\urn\oid.pm
+D:\tlperl\site\lib\URI.pm
+D:\tlperl\site\lib\URI\Escape.pm
+D:\tlperl\site\lib\URI\Heuristic.pm
+D:\tlperl\site\lib\URI\IRI.pm
+D:\tlperl\site\lib\URI\QueryParam.pm
+D:\tlperl\site\lib\URI\Split.pm
+D:\tlperl\site\lib\URI\URL.pm
+D:\tlperl\site\lib\URI\WithBase.pm
+D:\tlperl\site\lib\URI\_foreign.pm
+D:\tlperl\site\lib\URI\_generic.pm
+D:\tlperl\site\lib\URI\_idna.pm
+D:\tlperl\site\lib\URI\_ldap.pm
+D:\tlperl\site\lib\URI\_login.pm
+D:\tlperl\site\lib\URI\_punycode.pm
+D:\tlperl\site\lib\URI\_query.pm
+D:\tlperl\site\lib\URI\_segment.pm
+D:\tlperl\site\lib\URI\_server.pm
+D:\tlperl\site\lib\URI\_userpass.pm
+D:\tlperl\site\lib\URI\data.pm
+D:\tlperl\site\lib\URI\file.pm
+D:\tlperl\site\lib\URI\file\Base.pm
+D:\tlperl\site\lib\URI\file\FAT.pm
+D:\tlperl\site\lib\URI\file\Mac.pm
+D:\tlperl\site\lib\URI\file\OS2.pm
+D:\tlperl\site\lib\URI\file\QNX.pm
+D:\tlperl\site\lib\URI\file\Unix.pm
+D:\tlperl\site\lib\URI\file\Win32.pm
+D:\tlperl\site\lib\URI\ftp.pm
+D:\tlperl\site\lib\URI\geo.pm
+D:\tlperl\site\lib\URI\gopher.pm
+D:\tlperl\site\lib\URI\http.pm
+D:\tlperl\site\lib\URI\https.pm
+D:\tlperl\site\lib\URI\icap.pm
+D:\tlperl\site\lib\URI\icaps.pm
+D:\tlperl\site\lib\URI\ldap.pm
+D:\tlperl\site\lib\URI\ldapi.pm
+D:\tlperl\site\lib\URI\ldaps.pm
+D:\tlperl\site\lib\URI\mailto.pm
+D:\tlperl\site\lib\URI\mms.pm
+D:\tlperl\site\lib\URI\news.pm
+D:\tlperl\site\lib\URI\nntp.pm
+D:\tlperl\site\lib\URI\nntps.pm
+D:\tlperl\site\lib\URI\pop.pm
+D:\tlperl\site\lib\URI\rlogin.pm
+D:\tlperl\site\lib\URI\rsync.pm
+D:\tlperl\site\lib\URI\rtsp.pm
+D:\tlperl\site\lib\URI\rtspu.pm
+D:\tlperl\site\lib\URI\sftp.pm
+D:\tlperl\site\lib\URI\sip.pm
+D:\tlperl\site\lib\URI\sips.pm
+D:\tlperl\site\lib\URI\snews.pm
+D:\tlperl\site\lib\URI\ssh.pm
+D:\tlperl\site\lib\URI\telnet.pm
+D:\tlperl\site\lib\URI\tn3270.pm
+D:\tlperl\site\lib\URI\urn.pm
+D:\tlperl\site\lib\URI\urn\isbn.pm
+D:\tlperl\site\lib\URI\urn\oid.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/WWW/RobotRules/.packlist b/Master/tlpkg/tlperl/site/lib/auto/WWW/RobotRules/.packlist
index 25db7235d50..5d6442b9baa 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/WWW/RobotRules/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/WWW/RobotRules/.packlist
@@ -1,2 +1,2 @@
-E:\tlperl\site\lib\WWW\RobotRules.pm
-E:\tlperl\site\lib\WWW\RobotRules\AnyDBM_File.pm
+D:\tlperl\site\lib\WWW\RobotRules.pm
+D:\tlperl\site\lib\WWW\RobotRules\AnyDBM_File.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/API/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/.packlist
index 66ecb127f4f..728be00618f 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Win32/API/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/.packlist
@@ -1,7 +1,13 @@
-E:\tlperl\site\lib\Win32\API.pm
-E:\tlperl\site\lib\Win32\API\Callback.pm
-E:\tlperl\site\lib\Win32\API\Callback\IATPatch.pod
-E:\tlperl\site\lib\Win32\API\Struct.pm
-E:\tlperl\site\lib\Win32\API\Type.pm
-E:\tlperl\site\lib\auto\Win32\API\API.dll
-E:\tlperl\site\lib\auto\Win32\API\Callback\Callback.dll
+D:\tlperl\site\lib\Win32\API.pm
+D:\tlperl\site\lib\Win32\API\Callback.pm
+D:\tlperl\site\lib\Win32\API\Callback\IATPatch.pod
+D:\tlperl\site\lib\Win32\API\Struct.pm
+D:\tlperl\site\lib\Win32\API\Type.pm
+D:\tlperl\site\lib\auto\Win32\API\API.dll
+D:\tlperl\site\lib\auto\Win32\API\API.exp
+D:\tlperl\site\lib\auto\Win32\API\API.lib
+D:\tlperl\site\lib\auto\Win32\API\API.pdb
+D:\tlperl\site\lib\auto\Win32\API\Callback\Callback.dll
+D:\tlperl\site\lib\auto\Win32\API\Callback\Callback.exp
+D:\tlperl\site\lib\auto\Win32\API\Callback\Callback.lib
+D:\tlperl\site\lib\auto\Win32\API\Callback\Callback.pdb
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.dll b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.dll
index 418e12b928e..9dc0a2d824a 100755
--- a/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.dll
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.exp b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.exp
new file mode 100755
index 00000000000..7097f1dd96a
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.exp
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.lib b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.lib
new file mode 100755
index 00000000000..bbe7ccf1a6e
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.lib
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.pdb b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.pdb
new file mode 100755
index 00000000000..1bd45bbff12
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/API.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.dll b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.dll
index 8b381eeaf8b..4489aef6a08 100755
--- a/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.dll
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.exp b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.exp
new file mode 100755
index 00000000000..6f96b0325fd
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.exp
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.lib b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.lib
new file mode 100755
index 00000000000..9831683d6d5
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.lib
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.pdb b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.pdb
new file mode 100755
index 00000000000..3a741dd4a6c
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/API/Callback/Callback.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/.packlist
index e1b52bc9cdf..8d0736ef4e4 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/.packlist
@@ -1,2 +1,5 @@
-E:\tlperl\site\lib\Win32\Console.pm
-E:\tlperl\site\lib\auto\Win32\Console\Console.dll
+D:\tlperl\site\lib\Win32\Console.pm
+D:\tlperl\site\lib\auto\Win32\Console\Console.dll
+D:\tlperl\site\lib\auto\Win32\Console\Console.exp
+D:\tlperl\site\lib\auto\Win32\Console\Console.lib
+D:\tlperl\site\lib\auto\Win32\Console\Console.pdb
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.dll b/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.dll
index 263b6836c94..dc299604476 100755
--- a/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.dll
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.exp b/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.exp
new file mode 100755
index 00000000000..3a25a882c8b
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.exp
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.lib b/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.lib
new file mode 100755
index 00000000000..28a54e76dc7
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.lib
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.pdb b/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.pdb
new file mode 100755
index 00000000000..22e4d425e14
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/Console/Console.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/.packlist
index 4adf8372700..2219af80579 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/.packlist
@@ -1,2 +1,5 @@
-E:\tlperl\site\lib\Win32\Shortcut.pm
-E:\tlperl\site\lib\auto\Win32\Shortcut\Shortcut.dll
+D:\tlperl\site\lib\Win32\Shortcut.pm
+D:\tlperl\site\lib\auto\Win32\Shortcut\Shortcut.dll
+D:\tlperl\site\lib\auto\Win32\Shortcut\Shortcut.exp
+D:\tlperl\site\lib\auto\Win32\Shortcut\Shortcut.lib
+D:\tlperl\site\lib\auto\Win32\Shortcut\Shortcut.pdb
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.dll b/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.dll
index faa5713f057..838b68c4b12 100755
--- a/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.dll
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.exp b/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.exp
new file mode 100755
index 00000000000..1d6fe3db1fe
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.exp
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.lib b/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.lib
new file mode 100755
index 00000000000..ff1422202f6
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.lib
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.pdb b/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.pdb
new file mode 100755
index 00000000000..782cdd83904
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/Shortcut/Shortcut.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32/TieRegistry/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Win32/TieRegistry/.packlist
index e9917b3014c..34633f64e3a 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Win32/TieRegistry/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32/TieRegistry/.packlist
@@ -1,2 +1,2 @@
-E:\tlperl\site\lib\Tie\Registry.pm
-E:\tlperl\site\lib\Win32\TieRegistry.pm
+D:\tlperl\site\lib\Tie\Registry.pm
+D:\tlperl\site\lib\Win32\TieRegistry.pm
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/.packlist b/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/.packlist
index 2c7650348df..b300043df7c 100644
--- a/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/.packlist
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/.packlist
@@ -1,3 +1,6 @@
-E:\tlperl\site\lib\Win32API\Registry.pm
-E:\tlperl\site\lib\Win32API\Registry\cRegistry.pc
-E:\tlperl\site\lib\auto\Win32API\Registry\Registry.dll
+D:\tlperl\site\lib\Win32API\Registry.pm
+D:\tlperl\site\lib\Win32API\Registry\cRegistry.pc
+D:\tlperl\site\lib\auto\Win32API\Registry\Registry.dll
+D:\tlperl\site\lib\auto\Win32API\Registry\Registry.exp
+D:\tlperl\site\lib\auto\Win32API\Registry\Registry.lib
+D:\tlperl\site\lib\auto\Win32API\Registry\Registry.pdb
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.dll b/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.dll
index e8a71972a81..f7577cb5fd9 100755
--- a/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.dll
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.dll
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.exp b/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.exp
new file mode 100755
index 00000000000..ba9ae09ba0a
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.exp
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.lib b/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.lib
new file mode 100755
index 00000000000..4469532ac9e
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.lib
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.pdb b/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.pdb
new file mode 100755
index 00000000000..79b57c065ed
--- /dev/null
+++ b/Master/tlpkg/tlperl/site/lib/auto/Win32API/Registry/Registry.pdb
Binary files differ
diff --git a/Master/tlpkg/tlperl/site/lib/auto/libwww/perl/.packlist b/Master/tlpkg/tlperl/site/lib/auto/libwww/perl/.packlist
deleted file mode 100644
index 2089a5a2541..00000000000
--- a/Master/tlpkg/tlperl/site/lib/auto/libwww/perl/.packlist
+++ /dev/null
@@ -1,33 +0,0 @@
-E:\tlperl\bin\lwp-download
-E:\tlperl\bin\lwp-download.bat
-E:\tlperl\bin\lwp-dump
-E:\tlperl\bin\lwp-dump.bat
-E:\tlperl\bin\lwp-mirror
-E:\tlperl\bin\lwp-mirror.bat
-E:\tlperl\bin\lwp-request
-E:\tlperl\bin\lwp-request.bat
-E:\tlperl\site\lib\LWP.pm
-E:\tlperl\site\lib\LWP\Authen\Basic.pm
-E:\tlperl\site\lib\LWP\Authen\Digest.pm
-E:\tlperl\site\lib\LWP\Authen\Ntlm.pm
-E:\tlperl\site\lib\LWP\ConnCache.pm
-E:\tlperl\site\lib\LWP\Debug.pm
-E:\tlperl\site\lib\LWP\DebugFile.pm
-E:\tlperl\site\lib\LWP\Debug\TraceHTTP.pm
-E:\tlperl\site\lib\LWP\MemberMixin.pm
-E:\tlperl\site\lib\LWP\Protocol.pm
-E:\tlperl\site\lib\LWP\Protocol\cpan.pm
-E:\tlperl\site\lib\LWP\Protocol\data.pm
-E:\tlperl\site\lib\LWP\Protocol\file.pm
-E:\tlperl\site\lib\LWP\Protocol\ftp.pm
-E:\tlperl\site\lib\LWP\Protocol\gopher.pm
-E:\tlperl\site\lib\LWP\Protocol\http.pm
-E:\tlperl\site\lib\LWP\Protocol\loopback.pm
-E:\tlperl\site\lib\LWP\Protocol\mailto.pm
-E:\tlperl\site\lib\LWP\Protocol\nntp.pm
-E:\tlperl\site\lib\LWP\Protocol\nogo.pm
-E:\tlperl\site\lib\LWP\RobotUA.pm
-E:\tlperl\site\lib\LWP\Simple.pm
-E:\tlperl\site\lib\LWP\UserAgent.pm
-E:\tlperl\site\lib\libwww\lwpcook.pod
-E:\tlperl\site\lib\libwww\lwptut.pod
diff --git a/Master/tlpkg/tlperl/site/lib/libwww/lwpcook.pod b/Master/tlpkg/tlperl/site/lib/libwww/lwpcook.pod
deleted file mode 100644
index b4d4989a6a0..00000000000
--- a/Master/tlpkg/tlperl/site/lib/libwww/lwpcook.pod
+++ /dev/null
@@ -1,310 +0,0 @@
-=head1 NAME
-
-lwpcook - The libwww-perl cookbook
-
-=head1 DESCRIPTION
-
-This document contain some examples that show typical usage of the
-libwww-perl library. You should consult the documentation for the
-individual modules for more detail.
-
-All examples should be runnable programs. You can, in most cases, test
-the code sections by piping the program text directly to perl.
-
-
-
-=head1 GET
-
-It is very easy to use this library to just fetch documents from the
-net. The LWP::Simple module provides the get() function that return
-the document specified by its URL argument:
-
- use LWP::Simple;
- $doc = get 'http://search.cpan.org/dist/libwww-perl/';
-
-or, as a perl one-liner using the getprint() function:
-
- perl -MLWP::Simple -e 'getprint "http://search.cpan.org/dist/libwww-perl/"'
-
-or, how about fetching the latest perl by running this command:
-
- perl -MLWP::Simple -e '
- getstore "ftp://ftp.sunet.se/pub/lang/perl/CPAN/src/latest.tar.gz",
- "perl.tar.gz"'
-
-You will probably first want to find a CPAN site closer to you by
-running something like the following command:
-
- perl -MLWP::Simple -e 'getprint "http://www.cpan.org/SITES.html"'
-
-Enough of this simple stuff! The LWP object oriented interface gives
-you more control over the request sent to the server. Using this
-interface you have full control over headers sent and how you want to
-handle the response returned.
-
- use LWP::UserAgent;
- $ua = LWP::UserAgent->new;
- $ua->agent("$0/0.1 " . $ua->agent);
- # $ua->agent("Mozilla/8.0") # pretend we are very capable browser
-
- $req = HTTP::Request->new(
- GET => 'http://search.cpan.org/dist/libwww-perl/');
- $req->header('Accept' => 'text/html');
-
- # send request
- $res = $ua->request($req);
-
- # check the outcome
- if ($res->is_success) {
- print $res->decoded_content;
- }
- else {
- print "Error: " . $res->status_line . "\n";
- }
-
-The lwp-request program (alias GET) that is distributed with the
-library can also be used to fetch documents from WWW servers.
-
-
-
-=head1 HEAD
-
-If you just want to check if a document is present (i.e. the URL is
-valid) try to run code that looks like this:
-
- use LWP::Simple;
-
- if (head($url)) {
- # ok document exists
- }
-
-The head() function really returns a list of meta-information about
-the document. The first three values of the list returned are the
-document type, the size of the document, and the age of the document.
-
-More control over the request or access to all header values returned
-require that you use the object oriented interface described for GET
-above. Just s/GET/HEAD/g.
-
-
-=head1 POST
-
-There is no simple procedural interface for posting data to a WWW server. You
-must use the object oriented interface for this. The most common POST
-operation is to access a WWW form application:
-
- use LWP::UserAgent;
- $ua = LWP::UserAgent->new;
-
- my $req = HTTP::Request->new(
- POST => 'https://rt.cpan.org/Public/Dist/Display.html');
- $req->content_type('application/x-www-form-urlencoded');
- $req->content('Status=Active&Name=libwww-perl');
-
- my $res = $ua->request($req);
- print $res->as_string;
-
-Lazy people use the HTTP::Request::Common module to set up a suitable
-POST request message (it handles all the escaping issues) and has a
-suitable default for the content_type:
-
- use HTTP::Request::Common qw(POST);
- use LWP::UserAgent;
- $ua = LWP::UserAgent->new;
-
- my $req = POST 'https://rt.cpan.org/Public/Dist/Display.html',
- [ Status => 'Active', Name => 'libwww-perl' ];
-
- print $ua->request($req)->as_string;
-
-The lwp-request program (alias POST) that is distributed with the
-library can also be used for posting data.
-
-
-
-=head1 PROXIES
-
-Some sites use proxies to go through fire wall machines, or just as
-cache in order to improve performance. Proxies can also be used for
-accessing resources through protocols not supported directly (or
-supported badly :-) by the libwww-perl library.
-
-You should initialize your proxy setting before you start sending
-requests:
-
- use LWP::UserAgent;
- $ua = LWP::UserAgent->new;
- $ua->env_proxy; # initialize from environment variables
- # or
- $ua->proxy(ftp => 'http://proxy.myorg.com');
- $ua->proxy(wais => 'http://proxy.myorg.com');
- $ua->no_proxy(qw(no se fi));
-
- my $req = HTTP::Request->new(GET => 'wais://xxx.com/');
- print $ua->request($req)->as_string;
-
-The LWP::Simple interface will call env_proxy() for you automatically.
-Applications that use the $ua->env_proxy() method will normally not
-use the $ua->proxy() and $ua->no_proxy() methods.
-
-Some proxies also require that you send it a username/password in
-order to let requests through. You should be able to add the
-required header, with something like this:
-
- use LWP::UserAgent;
-
- $ua = LWP::UserAgent->new;
- $ua->proxy(['http', 'ftp'] => 'http://username:password@proxy.myorg.com');
-
- $req = HTTP::Request->new('GET',"http://www.perl.com");
-
- $res = $ua->request($req);
- print $res->decoded_content if $res->is_success;
-
-Replace C<proxy.myorg.com>, C<username> and
-C<password> with something suitable for your site.
-
-
-=head1 ACCESS TO PROTECTED DOCUMENTS
-
-Documents protected by basic authorization can easily be accessed
-like this:
-
- use LWP::UserAgent;
- $ua = LWP::UserAgent->new;
- $req = HTTP::Request->new(GET => 'http://www.linpro.no/secret/');
- $req->authorization_basic('aas', 'mypassword');
- print $ua->request($req)->as_string;
-
-The other alternative is to provide a subclass of I<LWP::UserAgent> that
-overrides the get_basic_credentials() method. Study the I<lwp-request>
-program for an example of this.
-
-
-=head1 COOKIES
-
-Some sites like to play games with cookies. By default LWP ignores
-cookies provided by the servers it visits. LWP will collect cookies
-and respond to cookie requests if you set up a cookie jar. LWP doesn't
-provide a cookie jar itself, but if you install L<HTTP::CookieJar::LWP>,
-it can be used like this:
-
- use LWP::UserAgent;
- use HTTP::CookieJar::LWP;
-
- $ua = LWP::UserAgent->new(
- cookie_jar => HTTP::CookieJar::LWP->new,
- );
-
- # and then send requests just as you used to do
- $res = $ua->request(HTTP::Request->new(GET => "http://no.yahoo.com/"));
- print $res->status_line, "\n";
-
-=head1 HTTPS
-
-URLs with https scheme are accessed in exactly the same way as with
-http scheme, provided that an SSL interface module for LWP has been
-properly installed (see the F<README.SSL> file found in the
-libwww-perl distribution for more details). If no SSL interface is
-installed for LWP to use, then you will get "501 Protocol scheme
-'https' is not supported" errors when accessing such URLs.
-
-Here's an example of fetching and printing a WWW page using SSL:
-
- use LWP::UserAgent;
-
- my $ua = LWP::UserAgent->new;
- my $req = HTTP::Request->new(GET => 'https://www.helsinki.fi/');
- my $res = $ua->request($req);
- if ($res->is_success) {
- print $res->as_string;
- }
- else {
- print "Failed: ", $res->status_line, "\n";
- }
-
-=head1 MIRRORING
-
-If you want to mirror documents from a WWW server, then try to run
-code similar to this at regular intervals:
-
- use LWP::Simple;
-
- %mirrors = (
- 'http://www.sn.no/' => 'sn.html',
- 'http://www.perl.com/' => 'perl.html',
- 'http://search.cpan.org/distlibwww-perl/' => 'lwp.html',
- 'gopher://gopher.sn.no/' => 'gopher.html',
- );
-
- while (($url, $localfile) = each(%mirrors)) {
- mirror($url, $localfile);
- }
-
-Or, as a perl one-liner:
-
- perl -MLWP::Simple -e 'mirror("http://www.perl.com/", "perl.html")';
-
-The document will not be transferred unless it has been updated.
-
-
-
-=head1 LARGE DOCUMENTS
-
-If the document you want to fetch is too large to be kept in memory,
-then you have two alternatives. You can instruct the library to write
-the document content to a file (second $ua->request() argument is a file
-name):
-
- use LWP::UserAgent;
- $ua = LWP::UserAgent->new;
-
- my $req = HTTP::Request->new(GET =>
- 'http://www.cpan.org/CPAN/authors/id/O/OA/OALDERS/libwww-perl-6.26.tar.gz');
- $res = $ua->request($req, "libwww-perl.tar.gz");
- if ($res->is_success) {
- print "ok\n";
- }
- else {
- print $res->status_line, "\n";
- }
-
-
-Or you can process the document as it arrives (second $ua->request()
-argument is a code reference):
-
- use LWP::UserAgent;
- $ua = LWP::UserAgent->new;
- $URL = 'ftp://ftp.isc.org/pub/rfc/rfc-index.txt';
-
- my $expected_length;
- my $bytes_received = 0;
- my $res =
- $ua->request(HTTP::Request->new(GET => $URL),
- sub {
- my($chunk, $res) = @_;
- $bytes_received += length($chunk);
- unless (defined $expected_length) {
- $expected_length = $res->content_length || 0;
- }
- if ($expected_length) {
- printf STDERR "%d%% - ",
- 100 * $bytes_received / $expected_length;
- }
- print STDERR "$bytes_received bytes received\n";
-
- # XXX Should really do something with the chunk itself
- # print $chunk;
- });
- print $res->status_line, "\n";
-
-
-
-=head1 COPYRIGHT
-
-Copyright 1996-2001, Gisle Aas
-
-This library is free software; you can redistribute it and/or
-modify it under the same terms as Perl itself.
-
-
diff --git a/Master/tlpkg/tlperl/site/lib/libwww/lwptut.pod b/Master/tlpkg/tlperl/site/lib/libwww/lwptut.pod
deleted file mode 100644
index f9f98a0f159..00000000000
--- a/Master/tlpkg/tlperl/site/lib/libwww/lwptut.pod
+++ /dev/null
@@ -1,820 +0,0 @@
-=head1 NAME
-
-lwptut -- An LWP Tutorial
-
-=head1 DESCRIPTION
-
-LWP (short for "Library for WWW in Perl") is a very popular group of
-Perl modules for accessing data on the Web. Like most Perl
-module-distributions, each of LWP's component modules comes with
-documentation that is a complete reference to its interface. However,
-there are so many modules in LWP that it's hard to know where to start
-looking for information on how to do even the simplest most common
-things.
-
-Really introducing you to using LWP would require a whole book -- a book
-that just happens to exist, called I<Perl & LWP>. But this article
-should give you a taste of how you can go about some common tasks with
-LWP.
-
-
-=head2 Getting documents with LWP::Simple
-
-If you just want to get what's at a particular URL, the simplest way
-to do it is LWP::Simple's functions.
-
-In a Perl program, you can call its C<get($url)> function. It will try
-getting that URL's content. If it works, then it'll return the
-content; but if there's some error, it'll return undef.
-
- my $url = 'http://www.npr.org/programs/fa/?todayDate=current';
- # Just an example: the URL for the most recent /Fresh Air/ show
-
- use LWP::Simple;
- my $content = get $url;
- die "Couldn't get $url" unless defined $content;
-
- # Then go do things with $content, like this:
-
- if($content =~ m/jazz/i) {
- print "They're talking about jazz today on Fresh Air!\n";
- }
- else {
- print "Fresh Air is apparently jazzless today.\n";
- }
-
-The handiest variant on C<get> is C<getprint>, which is useful in Perl
-one-liners. If it can get the page whose URL you provide, it sends it
-to STDOUT; otherwise it complains to STDERR.
-
- % perl -MLWP::Simple -e "getprint 'http://www.cpan.org/RECENT'"
-
-That is the URL of a plain text file that lists new files in CPAN in
-the past two weeks. You can easily make it part of a tidy little
-shell command, like this one that mails you the list of new
-C<Acme::> modules:
-
- % perl -MLWP::Simple -e "getprint 'http://www.cpan.org/RECENT'" \
- | grep "/by-module/Acme" | mail -s "New Acme modules! Joy!" $USER
-
-There are other useful functions in LWP::Simple, including one function
-for running a HEAD request on a URL (useful for checking links, or
-getting the last-revised time of a URL), and two functions for
-saving/mirroring a URL to a local file. See L<the LWP::Simple
-documentation|LWP::Simple> for the full details, or chapter 2 of I<Perl
-& LWP> for more examples.
-
-
-
-=for comment
- ##########################################################################
-
-
-
-=head2 The Basics of the LWP Class Model
-
-LWP::Simple's functions are handy for simple cases, but its functions
-don't support cookies or authorization, don't support setting header
-lines in the HTTP request, generally don't support reading header lines
-in the HTTP response (notably the full HTTP error message, in case of an
-error). To get at all those features, you'll have to use the full LWP
-class model.
-
-While LWP consists of dozens of classes, the main two that you have to
-understand are L<LWP::UserAgent> and L<HTTP::Response>. LWP::UserAgent
-is a class for "virtual browsers" which you use for performing requests,
-and L<HTTP::Response> is a class for the responses (or error messages)
-that you get back from those requests.
-
-The basic idiom is C<< $response = $browser->get($url) >>, or more fully
-illustrated:
-
- # Early in your program:
-
- use LWP 5.64; # Loads all important LWP classes, and makes
- # sure your version is reasonably recent.
-
- my $browser = LWP::UserAgent->new;
-
- ...
-
- # Then later, whenever you need to make a get request:
- my $url = 'http://www.npr.org/programs/fa/?todayDate=current';
-
- my $response = $browser->get( $url );
- die "Can't get $url -- ", $response->status_line
- unless $response->is_success;
-
- die "Hey, I was expecting HTML, not ", $response->content_type
- unless $response->content_type eq 'text/html';
- # or whatever content-type you're equipped to deal with
-
- # Otherwise, process the content somehow:
-
- if($response->decoded_content =~ m/jazz/i) {
- print "They're talking about jazz today on Fresh Air!\n";
- }
- else {
- print "Fresh Air is apparently jazzless today.\n";
- }
-
-There are two objects involved: C<$browser>, which holds an object of
-class LWP::UserAgent, and then the C<$response> object, which is of
-class HTTP::Response. You really need only one browser object per
-program; but every time you make a request, you get back a new
-HTTP::Response object, which will have some interesting attributes:
-
-=over
-
-=item *
-
-A status code indicating
-success or failure
-(which you can test with C<< $response->is_success >>).
-
-=item *
-
-An HTTP status
-line that is hopefully informative if there's failure (which you can
-see with C<< $response->status_line >>,
-returning something like "404 Not Found").
-
-=item *
-
-A MIME content-type like "text/html", "image/gif",
-"application/xml", etc., which you can see with
-C<< $response->content_type >>
-
-=item *
-
-The actual content of the response, in C<< $response->decoded_content >>.
-If the response is HTML, that's where the HTML source will be; if
-it's a GIF, then C<< $response->decoded_content >> will be the binary
-GIF data.
-
-=item *
-
-And dozens of other convenient and more specific methods that are
-documented in the docs for L<HTTP::Response>, and its superclasses
-L<HTTP::Message> and L<HTTP::Headers>.
-
-=back
-
-
-
-=for comment
- ##########################################################################
-
-
-
-=head2 Adding Other HTTP Request Headers
-
-The most commonly used syntax for requests is C<< $response =
-$browser->get($url) >>, but in truth, you can add extra HTTP header
-lines to the request by adding a list of key-value pairs after the URL,
-like so:
-
- $response = $browser->get( $url, $key1, $value1, $key2, $value2, ... );
-
-For example, here's how to send some commonly used headers, in case
-you're dealing with a site that would otherwise reject your request:
-
-
- my @ns_headers = (
- 'User-Agent' => 'Mozilla/4.76 [en] (Win98; U)',
- 'Accept' => 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*',
- 'Accept-Charset' => 'iso-8859-1,*,utf-8',
- 'Accept-Language' => 'en-US',
- );
-
- ...
-
- $response = $browser->get($url, @ns_headers);
-
-If you weren't reusing that array, you could just go ahead and do this:
-
- $response = $browser->get($url,
- 'User-Agent' => 'Mozilla/4.76 [en] (Win98; U)',
- 'Accept' => 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*',
- 'Accept-Charset' => 'iso-8859-1,*,utf-8',
- 'Accept-Language' => 'en-US',
- );
-
-If you were only ever changing the 'User-Agent' line, you could just change
-the C<$browser> object's default line from "libwww-perl/5.65" (or the like)
-to whatever you like, using the LWP::UserAgent C<agent> method:
-
- $browser->agent('Mozilla/4.76 [en] (Win98; U)');
-
-
-
-=for comment
- ##########################################################################
-
-
-
-=head2 Enabling Cookies
-
-A default LWP::UserAgent object acts like a browser with its cookies
-support turned off. There are various ways of turning it on, by setting
-its C<cookie_jar> attribute. A "cookie jar" is an object representing
-a little database of all
-the HTTP cookies that a browser knows about. It can correspond to a
-file on disk or
-an in-memory object that starts out empty, and whose collection of
-cookies will disappear once the program is finished running.
-
-To give a browser an in-memory empty cookie jar, you set its C<cookie_jar>
-attribute like so:
-
- use HTTP::CookieJar::LWP;
- $browser->cookie_jar( HTTP::CookieJar::LWP->new );
-
-To save a cookie jar to disk, see L<< HTTP::CookieJar/dump_cookies >>.
-To load cookies from disk into a jar, see L<<
-HTTP::CookieJar/load_cookies >>.
-
-=for comment
- ##########################################################################
-
-
-
-=head2 Posting Form Data
-
-Many HTML forms send data to their server using an HTTP POST request, which
-you can send with this syntax:
-
- $response = $browser->post( $url,
- [
- formkey1 => value1,
- formkey2 => value2,
- ...
- ],
- );
-
-Or if you need to send HTTP headers:
-
- $response = $browser->post( $url,
- [
- formkey1 => value1,
- formkey2 => value2,
- ...
- ],
- headerkey1 => value1,
- headerkey2 => value2,
- );
-
-For example, the following program makes a search request to AltaVista
-(by sending some form data via an HTTP POST request), and extracts from
-the HTML the report of the number of matches:
-
- use strict;
- use warnings;
- use LWP 5.64;
- my $browser = LWP::UserAgent->new;
-
- my $word = 'tarragon';
-
- my $url = 'http://search.yahoo.com/yhs/search';
- my $response = $browser->post( $url,
- [ 'q' => $word, # the Altavista query string
- 'fr' => 'altavista', 'pg' => 'q', 'avkw' => 'tgz', 'kl' => 'XX',
- ]
- );
- die "$url error: ", $response->status_line
- unless $response->is_success;
- die "Weird content type at $url -- ", $response->content_type
- unless $response->content_is_html;
-
- if( $response->decoded_content =~ m{([0-9,]+)(?:<.*?>)? results for} ) {
- # The substring will be like "996,000</strong> results for"
- print "$word: $1\n";
- }
- else {
- print "Couldn't find the match-string in the response\n";
- }
-
-
-
-=for comment
- ##########################################################################
-
-
-
-=head2 Sending GET Form Data
-
-Some HTML forms convey their form data not by sending the data
-in an HTTP POST request, but by making a normal GET request with
-the data stuck on the end of the URL. For example, if you went to
-C<www.imdb.com> and ran a search on "Blade Runner", the URL you'd see
-in your browser window would be:
-
- http://www.imdb.com/find?s=all&q=Blade+Runner
-
-To run the same search with LWP, you'd use this idiom, which involves
-the URI class:
-
- use URI;
- my $url = URI->new( 'http://www.imdb.com/find' );
- # makes an object representing the URL
-
- $url->query_form( # And here the form data pairs:
- 'q' => 'Blade Runner',
- 's' => 'all',
- );
-
- my $response = $browser->get($url);
-
-See chapter 5 of I<Perl & LWP> for a longer discussion of HTML forms
-and of form data, and chapters 6 through 9 for a longer discussion of
-extracting data from HTML.
-
-
-
-=head2 Absolutizing URLs
-
-The URI class that we just mentioned above provides all sorts of methods
-for accessing and modifying parts of URLs (such as asking sort of URL it
-is with C<< $url->scheme >>, and asking what host it refers to with C<<
-$url->host >>, and so on, as described in L<the docs for the URI
-class|URI>. However, the methods of most immediate interest
-are the C<query_form> method seen above, and now the C<new_abs> method
-for taking a probably-relative URL string (like "../foo.html") and getting
-back an absolute URL (like "http://www.perl.com/stuff/foo.html"), as
-shown here:
-
- use URI;
- $abs = URI->new_abs($maybe_relative, $base);
-
-For example, consider this program that matches URLs in the HTML
-list of new modules in CPAN:
-
- use strict;
- use warnings;
- use LWP;
- my $browser = LWP::UserAgent->new;
-
- my $url = 'http://www.cpan.org/RECENT.html';
- my $response = $browser->get($url);
- die "Can't get $url -- ", $response->status_line
- unless $response->is_success;
-
- my $html = $response->decoded_content;
- while( $html =~ m/<A HREF=\"(.*?)\"/g ) {
- print "$1\n";
- }
-
-When run, it emits output that starts out something like this:
-
- MIRRORING.FROM
- RECENT
- RECENT.html
- authors/00whois.html
- authors/01mailrc.txt.gz
- authors/id/A/AA/AASSAD/CHECKSUMS
- ...
-
-However, if you actually want to have those be absolute URLs, you
-can use the URI module's C<new_abs> method, by changing the C<while>
-loop to this:
-
- while( $html =~ m/<A HREF=\"(.*?)\"/g ) {
- print URI->new_abs( $1, $response->base ) ,"\n";
- }
-
-(The C<< $response->base >> method from L<HTTP::Message|HTTP::Message>
-is for returning what URL
-should be used for resolving relative URLs -- it's usually just
-the same as the URL that you requested.)
-
-That program then emits nicely absolute URLs:
-
- http://www.cpan.org/MIRRORING.FROM
- http://www.cpan.org/RECENT
- http://www.cpan.org/RECENT.html
- http://www.cpan.org/authors/00whois.html
- http://www.cpan.org/authors/01mailrc.txt.gz
- http://www.cpan.org/authors/id/A/AA/AASSAD/CHECKSUMS
- ...
-
-See chapter 4 of I<Perl & LWP> for a longer discussion of URI objects.
-
-Of course, using a regexp to match hrefs is a bit simplistic, and for
-more robust programs, you'll probably want to use an HTML-parsing module
-like L<HTML::LinkExtor> or L<HTML::TokeParser> or even maybe
-L<HTML::TreeBuilder>.
-
-
-
-
-=for comment
- ##########################################################################
-
-=head2 Other Browser Attributes
-
-LWP::UserAgent objects have many attributes for controlling how they
-work. Here are a few notable ones:
-
-=over
-
-=item *
-
-C<< $browser->timeout(15); >>
-
-This sets this browser object to give up on requests that don't answer
-within 15 seconds.
-
-
-=item *
-
-C<< $browser->protocols_allowed( [ 'http', 'gopher'] ); >>
-
-This sets this browser object to not speak any protocols other than HTTP
-and gopher. If it tries accessing any other kind of URL (like an "ftp:"
-or "mailto:" or "news:" URL), then it won't actually try connecting, but
-instead will immediately return an error code 500, with a message like
-"Access to 'ftp' URIs has been disabled".
-
-
-=item *
-
-C<< use LWP::ConnCache; $browser->conn_cache(LWP::ConnCache->new()); >>
-
-This tells the browser object to try using the HTTP/1.1 "Keep-Alive"
-feature, which speeds up requests by reusing the same socket connection
-for multiple requests to the same server.
-
-
-=item *
-
-C<< $browser->agent( 'SomeName/1.23 (more info here maybe)' ) >>
-
-This changes how the browser object will identify itself in
-the default "User-Agent" line is its HTTP requests. By default,
-it'll send "libwww-perl/I<versionnumber>", like
-"libwww-perl/5.65". You can change that to something more descriptive
-like this:
-
- $browser->agent( 'SomeName/3.14 (contact@robotplexus.int)' );
-
-Or if need be, you can go in disguise, like this:
-
- $browser->agent( 'Mozilla/4.0 (compatible; MSIE 5.12; Mac_PowerPC)' );
-
-
-=item *
-
-C<< push @{ $ua->requests_redirectable }, 'POST'; >>
-
-This tells this browser to obey redirection responses to POST requests
-(like most modern interactive browsers), even though the HTTP RFC says
-that should not normally be done.
-
-
-=back
-
-
-For more options and information, see L<the full documentation for
-LWP::UserAgent|LWP::UserAgent>.
-
-
-
-=for comment
- ##########################################################################
-
-
-
-=head2 Writing Polite Robots
-
-If you want to make sure that your LWP-based program respects F<robots.txt>
-files and doesn't make too many requests too fast, you can use the LWP::RobotUA
-class instead of the LWP::UserAgent class.
-
-LWP::RobotUA class is just like LWP::UserAgent, and you can use it like so:
-
- use LWP::RobotUA;
- my $browser = LWP::RobotUA->new('YourSuperBot/1.34', 'you@yoursite.com');
- # Your bot's name and your email address
-
- my $response = $browser->get($url);
-
-But HTTP::RobotUA adds these features:
-
-
-=over
-
-=item *
-
-If the F<robots.txt> on C<$url>'s server forbids you from accessing
-C<$url>, then the C<$browser> object (assuming it's of class LWP::RobotUA)
-won't actually request it, but instead will give you back (in C<$response>) a 403 error
-with a message "Forbidden by robots.txt". That is, if you have this line:
-
- die "$url -- ", $response->status_line, "\nAborted"
- unless $response->is_success;
-
-then the program would die with an error message like this:
-
- http://whatever.site.int/pith/x.html -- 403 Forbidden by robots.txt
- Aborted at whateverprogram.pl line 1234
-
-=item *
-
-If this C<$browser> object sees that the last time it talked to
-C<$url>'s server was too recently, then it will pause (via C<sleep>) to
-avoid making too many requests too often. How long it will pause for, is
-by default one minute -- but you can control it with the C<<
-$browser->delay( I<minutes> ) >> attribute.
-
-For example, this code:
-
- $browser->delay( 7/60 );
-
-...means that this browser will pause when it needs to avoid talking to
-any given server more than once every 7 seconds.
-
-=back
-
-For more options and information, see L<the full documentation for
-LWP::RobotUA|LWP::RobotUA>.
-
-
-
-
-
-=for comment
- ##########################################################################
-
-=head2 Using Proxies
-
-In some cases, you will want to (or will have to) use proxies for
-accessing certain sites and/or using certain protocols. This is most
-commonly the case when your LWP program is running (or could be running)
-on a machine that is behind a firewall.
-
-To make a browser object use proxies that are defined in the usual
-environment variables (C<HTTP_PROXY>, etc.), just call the C<env_proxy>
-on a user-agent object before you go making any requests on it.
-Specifically:
-
- use LWP::UserAgent;
- my $browser = LWP::UserAgent->new;
-
- # And before you go making any requests:
- $browser->env_proxy;
-
-For more information on proxy parameters, see L<the LWP::UserAgent
-documentation|LWP::UserAgent>, specifically the C<proxy>, C<env_proxy>,
-and C<no_proxy> methods.
-
-
-
-=for comment
- ##########################################################################
-
-=head2 HTTP Authentication
-
-Many web sites restrict access to documents by using "HTTP
-Authentication". This isn't just any form of "enter your password"
-restriction, but is a specific mechanism where the HTTP server sends the
-browser an HTTP code that says "That document is part of a protected
-'realm', and you can access it only if you re-request it and add some
-special authorization headers to your request".
-
-For example, the Unicode.org admins stop email-harvesting bots from
-harvesting the contents of their mailing list archives, by protecting
-them with HTTP Authentication, and then publicly stating the username
-and password (at C<http://www.unicode.org/mail-arch/>) -- namely
-username "unicode-ml" and password "unicode".
-
-For example, consider this URL, which is part of the protected
-area of the web site:
-
- http://www.unicode.org/mail-arch/unicode-ml/y2002-m08/0067.html
-
-If you access that with a browser, you'll get a prompt
-like
-"Enter username and password for 'Unicode-MailList-Archives' at server
-'www.unicode.org'".
-
-In LWP, if you just request that URL, like this:
-
- use LWP;
- my $browser = LWP::UserAgent->new;
-
- my $url =
- 'http://www.unicode.org/mail-arch/unicode-ml/y2002-m08/0067.html';
- my $response = $browser->get($url);
-
- die "Error: ", $response->header('WWW-Authenticate') || 'Error accessing',
- # ('WWW-Authenticate' is the realm-name)
- "\n ", $response->status_line, "\n at $url\n Aborting"
- unless $response->is_success;
-
-Then you'll get this error:
-
- Error: Basic realm="Unicode-MailList-Archives"
- 401 Authorization Required
- at http://www.unicode.org/mail-arch/unicode-ml/y2002-m08/0067.html
- Aborting at auth1.pl line 9. [or wherever]
-
-...because the C<$browser> doesn't know any the username and password
-for that realm ("Unicode-MailList-Archives") at that host
-("www.unicode.org"). The simplest way to let the browser know about this
-is to use the C<credentials> method to let it know about a username and
-password that it can try using for that realm at that host. The syntax is:
-
- $browser->credentials(
- 'servername:portnumber',
- 'realm-name',
- 'username' => 'password'
- );
-
-In most cases, the port number is 80, the default TCP/IP port for HTTP; and
-you usually call the C<credentials> method before you make any requests.
-For example:
-
- $browser->credentials(
- 'reports.mybazouki.com:80',
- 'web_server_usage_reports',
- 'plinky' => 'banjo123'
- );
-
-So if we add the following to the program above, right after the C<<
-$browser = LWP::UserAgent->new; >> line...
-
- $browser->credentials( # add this to our $browser 's "key ring"
- 'www.unicode.org:80',
- 'Unicode-MailList-Archives',
- 'unicode-ml' => 'unicode'
- );
-
-...then when we run it, the request succeeds, instead of causing the
-C<die> to be called.
-
-
-
-=for comment
- ##########################################################################
-
-=head2 Accessing HTTPS URLs
-
-When you access an HTTPS URL, it'll work for you just like an HTTP URL
-would -- if your LWP installation has HTTPS support (via an appropriate
-Secure Sockets Layer library). For example:
-
- use LWP;
- my $url = 'https://www.paypal.com/'; # Yes, HTTPS!
- my $browser = LWP::UserAgent->new;
- my $response = $browser->get($url);
- die "Error at $url\n ", $response->status_line, "\n Aborting"
- unless $response->is_success;
- print "Whee, it worked! I got that ",
- $response->content_type, " document!\n";
-
-If your LWP installation doesn't have HTTPS support set up, then the
-response will be unsuccessful, and you'll get this error message:
-
- Error at https://www.paypal.com/
- 501 Protocol scheme 'https' is not supported
- Aborting at paypal.pl line 7. [or whatever program and line]
-
-If your LWP installation I<does> have HTTPS support installed, then the
-response should be successful, and you should be able to consult
-C<$response> just like with any normal HTTP response.
-
-For information about installing HTTPS support for your LWP
-installation, see the helpful F<README.SSL> file that comes in the
-libwww-perl distribution.
-
-
-=for comment
- ##########################################################################
-
-
-
-=head2 Getting Large Documents
-
-When you're requesting a large (or at least potentially large) document,
-a problem with the normal way of using the request methods (like C<<
-$response = $browser->get($url) >>) is that the response object in
-memory will have to hold the whole document -- I<in memory>. If the
-response is a thirty megabyte file, this is likely to be quite an
-imposition on this process's memory usage.
-
-A notable alternative is to have LWP save the content to a file on disk,
-instead of saving it up in memory. This is the syntax to use:
-
- $response = $ua->get($url,
- ':content_file' => $filespec,
- );
-
-For example,
-
- $response = $ua->get('http://search.cpan.org/',
- ':content_file' => '/tmp/sco.html'
- );
-
-When you use this C<:content_file> option, the C<$response> will have
-all the normal header lines, but C<< $response->content >> will be
-empty. Errors writing to the content file (for example due to
-permission denied or the filesystem being full) will be reported via
-the C<Client-Aborted> or C<X-Died> response headers, and not the
-C<is_success> method:
-
- if ($response->header('Client-Aborted') eq 'die') {
- # handle error ...
-
-Note that this ":content_file" option isn't supported under older
-versions of LWP, so you should consider adding C<use LWP 5.66;> to check
-the LWP version, if you think your program might run on systems with
-older versions.
-
-If you need to be compatible with older LWP versions, then use
-this syntax, which does the same thing:
-
- use HTTP::Request::Common;
- $response = $ua->request( GET($url), $filespec );
-
-
-=for comment
- ##########################################################################
-
-
-=head1 SEE ALSO
-
-Remember, this article is just the most rudimentary introduction to
-LWP -- to learn more about LWP and LWP-related tasks, you really
-must read from the following:
-
-=over
-
-=item *
-
-L<LWP::Simple> -- simple functions for getting/heading/mirroring URLs
-
-=item *
-
-L<LWP> -- overview of the libwww-perl modules
-
-=item *
-
-L<LWP::UserAgent> -- the class for objects that represent "virtual browsers"
-
-=item *
-
-L<HTTP::Response> -- the class for objects that represent the response to
-a LWP response, as in C<< $response = $browser->get(...) >>
-
-=item *
-
-L<HTTP::Message> and L<HTTP::Headers> -- classes that provide more methods
-to HTTP::Response.
-
-=item *
-
-L<URI> -- class for objects that represent absolute or relative URLs
-
-=item *
-
-L<URI::Escape> -- functions for URL-escaping and URL-unescaping strings
-(like turning "this & that" to and from "this%20%26%20that").
-
-=item *
-
-L<HTML::Entities> -- functions for HTML-escaping and HTML-unescaping strings
-(like turning "C. & E. BrontE<euml>" to and from "C. &amp; E. Bront&euml;")
-
-=item *
-
-L<HTML::TokeParser> and L<HTML::TreeBuilder> -- classes for parsing HTML
-
-=item *
-
-L<HTML::LinkExtor> -- class for finding links in HTML documents
-
-=item *
-
-The book I<Perl & LWP> by Sean M. Burke. O'Reilly & Associates,
-2002. ISBN: 0-596-00178-9, L<http://oreilly.com/catalog/perllwp/>. The
-whole book is also available free online:
-L<http://lwp.interglacial.com>.
-
-=back
-
-
-=head1 COPYRIGHT
-
-Copyright 2002, Sean M. Burke. You can redistribute this document and/or
-modify it, but only under the same terms as Perl itself.
-
-=head1 AUTHOR
-
-Sean M. Burke C<sburke@cpan.org>
-
-=for comment
- ##########################################################################
-
-=cut
-
-# End of Pod